--- linux-3.5.0.orig/dropped.txt +++ linux-3.5.0/dropped.txt @@ -0,0 +1,13 @@ +This is the list of patches which have been dropped from Q after the +3.5-rc2 rebase: + +UBUNTU: SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - Rfkill code was removed in v3.5-rc1, this SAUCE patch no longer applies + commit a6c2390cd6d2083d27a2359658e08f2d3df375ac + Author: Matthew Garrett + Date: Fri Jun 1 12:46:56 2012 -0400 + + dell-laptop: Remove rfkill code + +UBUNTU: SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + - We no longer carry the ubuntu/compcache driver, drop this no-up SAUCE patch --- linux-3.5.0.orig/Makefile +++ linux-3.5.0/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 5 -SUBLEVEL = 0 -EXTRAVERSION = +SUBLEVEL = 7 +EXTRAVERSION = .16 NAME = Saber-toothed Squirrel # *DOCUMENTATION* @@ -349,14 +349,23 @@ AFLAGS_KERNEL = CFLAGS_GCOV = -fprofile-arcs -ftest-coverage +# Prefer linux-backports-modules +ifneq ($(KBUILD_SRC),) +ifneq ($(shell if test -e $(KBUILD_OUTPUT)/ubuntu-build; then echo yes; fi),yes) +UBUNTUINCLUDE := -I/usr/src/linux-headers-lbm-$(KERNELRELEASE) +endif +endif # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option -LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \ +LINUXINCLUDE := $(UBUNTUINCLUDE) -I$(srctree)/arch/$(hdr-arch)/include \ -Iarch/$(hdr-arch)/include/generated -Iinclude \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -include $(srctree)/include/linux/kconfig.h +# UBUNTU: Include our third party driver stuff too +LINUXINCLUDE += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include) + KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ @@ -504,7 +513,7 @@ # Objects we will link into vmlinux / subdirs we need to visit init-y := init/ -drivers-y := drivers/ sound/ firmware/ +drivers-y := drivers/ sound/ firmware/ ubuntu/ net-y := net/ libs-y := lib/ core-y := usr/ @@ -896,6 +905,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= PHONY += headers_check_all headers_check_all: headers_install_all @@ -905,6 +915,7 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1 # --------------------------------------------------------------------------- # Modules @@ -1003,11 +1014,14 @@ clean: rm-files := $(CLEAN_FILES) clean-dirs := $(addprefix _clean_, . $(vmlinux-alldirs) Documentation samples) -PHONY += $(clean-dirs) clean archclean +PHONY += $(clean-dirs) clean archclean vmlinuxclean $(clean-dirs): $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) -clean: archclean +vmlinuxclean: + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean + +clean: archclean vmlinuxclean # mrproper - Delete all generated files, including .config # @@ -1234,7 +1248,6 @@ endif # KBUILD_EXTMOD clean: $(clean-dirs) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean $(call cmd,rmdirs) $(call cmd,rmfiles) @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ --- linux-3.5.0.orig/MAINTAINERS +++ linux-3.5.0/MAINTAINERS @@ -2663,7 +2663,7 @@ F: drivers/net/ethernet/i825xx/eexpress.* ETHERNET BRIDGE -M: Stephen Hemminger +M: Stephen Hemminger L: bridge@lists.linux-foundation.org L: netdev@vger.kernel.org W: http://www.linuxfoundation.org/en/Net:Bridge @@ -4385,7 +4385,7 @@ MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) M: Mirko Lindner -M: Stephen Hemminger +M: Stephen Hemminger L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/marvell/sk* @@ -4630,7 +4630,7 @@ F: drivers/infiniband/hw/nes/ NETEM NETWORK EMULATOR -M: Stephen Hemminger +M: Stephen Hemminger L: netem@lists.linux-foundation.org S: Maintained F: net/sched/sch_netem.c @@ -5066,6 +5066,13 @@ F: include/scsi/osd_* F: fs/exofs/ +OVERLAYFS FILESYSTEM +M: Miklos Szeredi +L: linux-fsdevel@vger.kernel.org +S: Supported +F: fs/overlayfs/* +F: Documentation/filesystems/overlayfs.txt + P54 WIRELESS DRIVER M: Christian Lamparter L: linux-wireless@vger.kernel.org @@ -5635,7 +5642,7 @@ F: drivers/block/brd.c RANDOM NUMBER DRIVER -M: Matt Mackall +M: Theodore Ts'o" S: Maintained F: drivers/char/random.c --- linux-3.5.0.orig/tools/perf/Makefile +++ linux-3.5.0/tools/perf/Makefile @@ -62,7 +62,7 @@ ARCH := x86 IS_X86_64 := 0 ifeq (, $(findstring m32,$(EXTRA_CFLAGS))) - IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -xc - | tail -n 1) + IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -x c - | tail -n 1) endif ifeq (${IS_X86_64}, 1) RAW_ARCH := x86_64 @@ -225,13 +225,13 @@ $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/parse-events-flex.h $(PARSER_DEBUG_FLEX) -t util/parse-events.l > $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c: util/parse-events.y - $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c + $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c -p parse_events_ $(OUTPUT)util/pmu-flex.c: util/pmu.l $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c: util/pmu.y - $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c + $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_ $(OUTPUT)util/parse-events.o: $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c $(OUTPUT)util/pmu.o: $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c --- linux-3.5.0.orig/tools/perf/builtin-test.c +++ linux-3.5.0/tools/perf/builtin-test.c @@ -604,19 +604,13 @@ #undef nsyscalls } -static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t **maskp, - size_t *sizep) +static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t *maskp) { - cpu_set_t *mask; - size_t size; int i, cpu = -1, nrcpus = 1024; realloc: - mask = CPU_ALLOC(nrcpus); - size = CPU_ALLOC_SIZE(nrcpus); - CPU_ZERO_S(size, mask); + CPU_ZERO(maskp); - if (sched_getaffinity(pid, size, mask) == -1) { - CPU_FREE(mask); + if (sched_getaffinity(pid, sizeof(*maskp), maskp) == -1) { if (errno == EINVAL && nrcpus < (1024 << 8)) { nrcpus = nrcpus << 2; goto realloc; @@ -626,19 +620,14 @@ } for (i = 0; i < nrcpus; i++) { - if (CPU_ISSET_S(i, size, mask)) { - if (cpu == -1) { + if (CPU_ISSET(i, maskp)) { + if (cpu == -1) cpu = i; - *maskp = mask; - *sizep = size; - } else - CPU_CLR_S(i, size, mask); + else + CPU_CLR(i, maskp); } } - if (cpu == -1) - CPU_FREE(mask); - return cpu; } @@ -653,8 +642,8 @@ .freq = 10, .mmap_pages = 256, }; - cpu_set_t *cpu_mask = NULL; - size_t cpu_mask_size = 0; + cpu_set_t cpu_mask; + size_t cpu_mask_size = sizeof(cpu_mask); struct perf_evlist *evlist = perf_evlist__new(NULL, NULL); struct perf_evsel *evsel; struct perf_sample sample; @@ -718,8 +707,7 @@ evsel->attr.sample_type |= PERF_SAMPLE_TIME; perf_evlist__config_attrs(evlist, &opts); - err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask, - &cpu_mask_size); + err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask); if (err < 0) { pr_debug("sched__get_first_possible_cpu: %s\n", strerror(errno)); goto out_delete_evlist; @@ -730,9 +718,9 @@ /* * So that we can check perf_sample.cpu on all the samples. */ - if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, cpu_mask) < 0) { + if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, &cpu_mask) < 0) { pr_debug("sched_setaffinity: %s\n", strerror(errno)); - goto out_free_cpu_mask; + goto out_delete_evlist; } /* @@ -925,8 +913,6 @@ } out_err: perf_evlist__munmap(evlist); -out_free_cpu_mask: - CPU_FREE(cpu_mask); out_delete_evlist: perf_evlist__delete(evlist); out: --- linux-3.5.0.orig/tools/perf/scripts/python/net_dropmonitor.py +++ linux-3.5.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-3.5.0.orig/tools/perf/util/pmu.y +++ linux-3.5.0/tools/perf/util/pmu.y @@ -1,5 +1,4 @@ -%name-prefix "perf_pmu_" %parse-param {struct list_head *format} %parse-param {char *name} --- linux-3.5.0.orig/tools/perf/util/parse-events.y +++ linux-3.5.0/tools/perf/util/parse-events.y @@ -1,5 +1,4 @@ -%name-prefix "parse_events_" %parse-param {struct list_head *list_all} %parse-param {int *idx} --- linux-3.5.0.orig/tools/lguest/lguest.c +++ linux-3.5.0/tools/lguest/lguest.c @@ -1299,6 +1299,7 @@ dev->feature_len = 0; dev->num_vq = 0; dev->running = false; + dev->next = NULL; /* * Append to device list. Prepending to a single-linked list is --- linux-3.5.0.orig/tools/hv/hv_kvp_daemon.c +++ linux-3.5.0/tools/hv/hv_kvp_daemon.c @@ -106,7 +106,7 @@ if (fcntl(kvp_file_info[pool].fd, F_SETLKW, &fl) == -1) { syslog(LOG_ERR, "Failed to acquire the lock pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } } @@ -118,7 +118,7 @@ if (fcntl(kvp_file_info[pool].fd, F_SETLK, &fl) == -1) { perror("fcntl"); syslog(LOG_ERR, "Failed to release the lock pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } } @@ -137,14 +137,19 @@ if (!filep) { kvp_release_lock(pool); syslog(LOG_ERR, "Failed to open file, pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } bytes_written = fwrite(kvp_file_info[pool].records, sizeof(struct kvp_record), kvp_file_info[pool].num_records, filep); - fflush(filep); + if (ferror(filep) || fclose(filep)) { + kvp_release_lock(pool); + syslog(LOG_ERR, "Failed to write file, pool: %d", pool); + exit(EXIT_FAILURE); + } + kvp_release_lock(pool); } @@ -163,14 +168,19 @@ if (!filep) { kvp_release_lock(pool); syslog(LOG_ERR, "Failed to open file, pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } - while (!feof(filep)) { + for (;;) { readp = &record[records_read]; records_read += fread(readp, sizeof(struct kvp_record), ENTRIES_PER_BLOCK * num_blocks, filep); + if (ferror(filep)) { + syslog(LOG_ERR, "Failed to read file, pool: %d", pool); + exit(EXIT_FAILURE); + } + if (!feof(filep)) { /* * We have more data to read. @@ -180,7 +190,7 @@ if (record == NULL) { syslog(LOG_ERR, "malloc failed"); - exit(-1); + exit(EXIT_FAILURE); } continue; } @@ -191,6 +201,7 @@ kvp_file_info[pool].records = record; kvp_file_info[pool].num_records = records_read; + fclose(filep); kvp_release_lock(pool); } static int kvp_file_init(void) @@ -208,7 +219,7 @@ if (access("/var/opt/hyperv", F_OK)) { if (mkdir("/var/opt/hyperv", S_IRUSR | S_IWUSR | S_IROTH)) { syslog(LOG_ERR, " Failed to create /var/opt/hyperv"); - exit(-1); + exit(EXIT_FAILURE); } } @@ -232,12 +243,18 @@ fclose(filep); return 1; } - while (!feof(filep)) { + for (;;) { readp = &record[records_read]; records_read += fread(readp, sizeof(struct kvp_record), ENTRIES_PER_BLOCK, filep); + if (ferror(filep)) { + syslog(LOG_ERR, "Failed to read file, pool: %d", + i); + exit(EXIT_FAILURE); + } + if (!feof(filep)) { /* * We have more data to read. @@ -657,13 +674,13 @@ if (kvp_file_init()) { syslog(LOG_ERR, "Failed to initialize the pools"); - exit(-1); + exit(EXIT_FAILURE); } fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR); if (fd < 0) { syslog(LOG_ERR, "netlink socket creation failed; error:%d", fd); - exit(-1); + exit(EXIT_FAILURE); } addr.nl_family = AF_NETLINK; addr.nl_pad = 0; @@ -675,7 +692,7 @@ if (error < 0) { syslog(LOG_ERR, "bind failed; error:%d", error); close(fd); - exit(-1); + exit(EXIT_FAILURE); } sock_opt = addr.nl_groups; setsockopt(fd, 270, 1, &sock_opt, sizeof(sock_opt)); @@ -695,7 +712,7 @@ if (len < 0) { syslog(LOG_ERR, "netlink_send failed; error:%d", len); close(fd); - exit(-1); + exit(EXIT_FAILURE); } pfd.fd = fd; @@ -710,13 +727,19 @@ len = recvfrom(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0, addr_p, &addr_l); - if (len < 0 || addr.nl_pid) { + if (len < 0) { syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s", addr.nl_pid, errno, strerror(errno)); close(fd); return -1; } + if (addr.nl_pid) { + syslog(LOG_WARNING, "Received packet from untrusted pid:%u", + addr.nl_pid); + continue; + } + incoming_msg = (struct nlmsghdr *)kvp_recv_buffer; incoming_cn_msg = (struct cn_msg *)NLMSG_DATA(incoming_msg); hv_msg = (struct hv_kvp_msg *)incoming_cn_msg->data; @@ -863,7 +886,7 @@ len = netlink_send(fd, incoming_cn_msg); if (len < 0) { syslog(LOG_ERR, "net_link send failed; error:%d", len); - exit(-1); + exit(EXIT_FAILURE); } } --- linux-3.5.0.orig/tools/hv/Makefile +++ linux-3.5.0/tools/hv/Makefile @@ -0,0 +1,7 @@ +hv_kvp_daemon: hv_kvp_daemon.c + +clean: + rm -f hv_kvp_daemon + +install: + install hv_kvp_daemon /usr/sbin/ --- linux-3.5.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-3.5.0/tools/hv/hv_kvp_daemon.8 @@ -0,0 +1,26 @@ +.\" This page Copyright (C) 2012 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH HV_KVP_DAEMON 8 +.SH NAME +hv_kvp_daemon \- Hyper-V Key Value Pair daemon +.SH SYNOPSIS +.ft B +.B hv_kvp_daemon +.br +.SH DESCRIPTION +\fBhv_kvp_daemon\fP +is the userspace component of the Hyper-V key value pair functionality, +communicating via a netlink socket with the kernel HV-KVP driver. +This pairing allows the Hyper-V host to pass configuration information +(such as IP addresses) to the guest and allows the host to obtain guest +version information. + +.SH FILES +.ta +.nf +/var/opt/hyperv/.kvp_pool_* +.fi + +.SH AUTHORS +.nf +Written by K. Y. Srinivasan --- linux-3.5.0.orig/tools/power/cpupower/Makefile +++ linux-3.5.0/tools/power/cpupower/Makefile @@ -111,7 +111,7 @@ export CROSS CC AR STRIP RANLIB CFLAGS LDFLAGS LIB_OBJS # check if compiler option is supported -cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} +cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} # use '-Os' optimization if available, else use -O2 OPTIMIZATION := $(call cc-supports,-Os,-O2) --- linux-3.5.0.orig/init/initramfs.c +++ linux-3.5.0/init/initramfs.c @@ -18,6 +18,8 @@ #include #include #include +#include +#include static __initdata char *message; static void __init error(char *x) @@ -579,7 +581,15 @@ } #endif -static int __init populate_rootfs(void) +LIST_HEAD(populate_rootfs_domain); + +void populate_rootfs_wait(void) +{ + async_synchronize_full_domain(&populate_rootfs_domain); +} +EXPORT_SYMBOL(populate_rootfs_wait); + +static void __init async_populate_rootfs(void *data, async_cookie_t cookie) { char *err = unpack_to_rootfs(__initramfs_start, __initramfs_size); if (err) @@ -592,7 +602,7 @@ initrd_end - initrd_start); if (!err) { free_initrd(); - return 0; + return; } else { clean_rootfs(); unpack_to_rootfs(__initramfs_start, __initramfs_size); @@ -616,6 +626,27 @@ free_initrd(); #endif } + return; +} + +static int __initdata rootfs_populated; + +static int __init populate_rootfs_early(void) +{ + if (num_online_cpus() > 1) { + rootfs_populated = 1; + async_schedule_domain(async_populate_rootfs, NULL, + &populate_rootfs_domain); + } + return 0; +} +static int __init populate_rootfs(void) +{ + if (!rootfs_populated) + async_schedule_domain(async_populate_rootfs, NULL, + &populate_rootfs_domain); return 0; } + +earlyrootfs_initcall(populate_rootfs_early); rootfs_initcall(populate_rootfs); --- linux-3.5.0.orig/init/main.c +++ linux-3.5.0/init/main.c @@ -112,6 +112,11 @@ */ #define MAX_INIT_ARGS CONFIG_INIT_ENV_ARG_LIMIT #define MAX_INIT_ENVS CONFIG_INIT_ENV_ARG_LIMIT +#ifdef CONFIG_INIT_PASS_ALL_PARAMS +#define INIT_PASS_FUNCTION pass_all_bootoptions +#else +#define INIT_PASS_FUNCTION pass_unknown_bootoptions +#endif extern void time_init(void); /* Default late time init is NULL. archs can override this later. */ @@ -199,7 +204,7 @@ static int __init quiet_kernel(char *str) { - console_loglevel = 4; + console_loglevel = 2; return 0; } @@ -226,7 +231,7 @@ early_param("loglevel", loglevel); /* Change NUL term back to "=", to make "param" the whole string. */ -static int __init repair_env_string(char *param, char *val, const char *unused) +static int __init repair_env_string(char *param, char *val, const char *unused, int known) { if (val) { /* param=val or param="val"? */ @@ -243,19 +248,20 @@ } /* - * Unknown boot options get handed to init, unless they look like - * unused parameters (modprobe will find them in /proc/cmdline). + * Select boot options to hand to init. If all is set hand off them all + * otherwise only hand off unused ones which do not apply to modules + * (modprobe will find them in /proc/cmdline). */ -static int __init unknown_bootoption(char *param, char *val, const char *unused) +static int __init pass_bootoption(char *param, char *val, const char *unused, int all) { - repair_env_string(param, val, unused); + repair_env_string(param, val, unused, all); /* Handle obsolete-style parameters */ - if (obsolete_checksetup(param)) + if (obsolete_checksetup(param) && !all) return 0; /* Unused module parameter. */ - if (strchr(param, '.') && (!val || strchr(param, '.') < val)) + if (!all && strchr(param, '.') && (!val || strchr(param, '.') < val)) return 0; if (panic_later) @@ -286,6 +292,16 @@ } return 0; } +static int __init pass_unknown_bootoptions(char *param, char *val, const char *unused, int known) +{ + if (known) + return 0; + return pass_bootoption(param, val, unused, 0); +} +static int __init pass_all_bootoptions(char *param, char *val, const char *unused, int known) +{ + return pass_bootoption(param, val, unused, 1); +} static int __init init_setup(char *str) { @@ -385,10 +401,13 @@ } /* Check for early params. */ -static int __init do_early_param(char *param, char *val, const char *unused) +static int __init do_early_param(char *param, char *val, const char *unused, int known) { const struct obs_kernel_param *p; + if (known) + return 0; + for (p = __setup_start; p < __setup_end; p++) { if ((p->early && parameq(param, p->str)) || (strcmp(param, "console") == 0 && @@ -508,7 +527,7 @@ parse_early_param(); parse_args("Booting kernel", static_command_line, __start___param, __stop___param - __start___param, - -1, -1, &unknown_bootoption); + -1, -1, &INIT_PASS_FUNCTION); jump_label_init(); @@ -602,7 +621,7 @@ pidmap_init(); anon_vma_init(); #ifdef CONFIG_X86 - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) efi_enter_virtual_mode(); #endif thread_info_cache_init(); @@ -630,6 +649,9 @@ acpi_early_init(); /* before LAPIC and SMP init */ sfi_init_late(); + if (efi_enabled(EFI_RUNTIME_SERVICES)) + efi_free_boot_services(); + ftrace_init(); /* Do the rest non-__init'ed, we're now alive */ @@ -871,6 +893,12 @@ (void) sys_dup(0); (void) sys_dup(0); /* + * We need to ensure that the filesystem is ready by this point, wait for + * async_populate_rootfs to complete. + */ + populate_rootfs_wait(); + + /* * check if there is an early userspace init. If yes, let it do all * the work */ --- linux-3.5.0.orig/init/Kconfig +++ linux-3.5.0/init/Kconfig @@ -79,6 +79,13 @@ Maximum of each of the number of arguments and environment variables passed to init from the kernel command line. +config INIT_PASS_ALL_PARAMS + bool "Pass all (known and unknown) kernel parameters to init" + default n + help + Pass all kernel command line parameters to init, this includes + those consumed by kernel modules. This is useful for upstart + based systems. If in doubt say N. config CROSS_COMPILE string "Cross-compiler tool prefix" @@ -214,6 +221,15 @@ but you may wish to use a different default here to make a minimal system more usable with less configuration. +config VERSION_SIGNATURE + string "Arbitrary version signature" + help + This string will be created in a file, /proc/version_signature. It + is useful in determining arbitrary data about your kernel. For instance, + if you have several kernels of the same version, but need to keep track + of a revision of the same kernel, but not affect it's ability to load + compatible modules, this is the easiest way to do that. + config SWAP bool "Support for paging of anonymous memory (swap)" depends on MMU && BLOCK --- linux-3.5.0.orig/init/noinitramfs.c +++ linux-3.5.0/init/noinitramfs.c @@ -22,6 +22,8 @@ #include #include +LIST_HEAD(populate_rootfs_domain); + /* * Create a simple rootfs that is similar to the default initramfs */ --- linux-3.5.0.orig/init/version.c +++ linux-3.5.0/init/version.c @@ -40,7 +40,11 @@ /* FIXED STRINGS! Don't touch! */ const char linux_banner[] = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" - LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION +#ifdef CONFIG_VERSION_SIGNATURE + " (" CONFIG_VERSION_SIGNATURE ")" +#endif + "\n"; const char linux_proc_banner[] = "%s version %s" --- linux-3.5.0.orig/Documentation/kernel-parameters.txt +++ linux-3.5.0/Documentation/kernel-parameters.txt @@ -252,12 +252,15 @@ For broken nForce2 BIOS resulting in XT-PIC timer. acpi_sleep= [HW,ACPI] Sleep options - Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig, + Format: { s3_bios, s3_mode, s3_beep, s3_leds, s4_nohwsig, old_ordering, nonvs, sci_force_enable } See Documentation/power/video.txt for information on s3_bios and s3_mode. s3_beep is for debugging; it makes the PC's speaker beep as soon as the kernel's real-mode entry point is called. + s3_leds is for debugging; it flashes the keyboard LEDs + 3 times as soon as the kernel's real-mode entry point is + called. s4_nohwsig prevents ACPI hardware signature from being used during resume from hibernation. old_ordering causes the ACPI 1.0 ordering of the _PTS @@ -570,6 +573,8 @@ UART at the specified I/O port or MMIO address, switching to the matching ttyS device later. The options are the same as for ttyS, above. + hvc Use the hypervisor console device . This is for + both Xen and PowerPC hypervisors. If the device connected to the port is not a TTY but a braille device, prepend "brl," before the device type, for instance @@ -585,6 +590,10 @@ /proc//coredump_filter. See also Documentation/filesystems/proc.txt. + cpufreq_driver= [X86] Allow only the named cpu frequency scaling driver + to register. Example: cpufreq_driver=powernow-k8 + Format: { none | STRING } + cpuidle.off=1 [CPU_IDLE] disable the cpuidle sub-system @@ -760,6 +769,7 @@ earlyprintk= [X86,SH,BLACKFIN] earlyprintk=vga + earlyprintk=xen earlyprintk=serial[,ttySn[,baudrate]] earlyprintk=ttySn[,baudrate] earlyprintk=dbgp[debugController#] @@ -777,6 +787,8 @@ The VGA output is eventually overwritten by the real console. + The xen output can only be used by Xen PV guests. + ekgdboc= [X86,KGDB] Allow early kernel console debugging ekgdboc=kbd --- linux-3.5.0.orig/Documentation/stable_kernel_rules.txt +++ linux-3.5.0/Documentation/stable_kernel_rules.txt @@ -1,4 +1,4 @@ -Everything you ever wanted to know about Linux 2.6 -stable releases. +Everything you ever wanted to know about Linux -stable releases. Rules on what kind of patches are accepted, and which ones are not, into the "-stable" tree: @@ -42,10 +42,10 @@ cherry-picked than this can be specified in the following format in the sign-off area: - Cc: # .32.x: a1f84a3: sched: Check for idle - Cc: # .32.x: 1b9508f: sched: Rate-limit newidle - Cc: # .32.x: fd21073: sched: Fix affinity logic - Cc: # .32.x + Cc: # 3.3.x: a1f84a3: sched: Check for idle + Cc: # 3.3.x: 1b9508f: sched: Rate-limit newidle + Cc: # 3.3.x: fd21073: sched: Fix affinity logic + Cc: # 3.3.x Signed-off-by: Ingo Molnar The tag sequence has the meaning of: @@ -79,6 +79,15 @@ security kernel team, and not go through the normal review cycle. Contact the kernel security team for more details on this procedure. +Trees: + + - The queues of patches, for both completed versions and in progress + versions can be found at: + http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git + - The finalized and tagged releases of all stable kernels can be found + in separate branches per version at: + http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git + Review committee: --- linux-3.5.0.orig/Documentation/DMA-attributes.txt +++ linux-3.5.0/Documentation/DMA-attributes.txt @@ -49,3 +49,45 @@ consistent or non-consistent memory as it sees fit. By using this API, you are guaranteeing to the platform that you have all the correct and necessary sync points for this memory in the driver. + +DMA_ATTR_NO_KERNEL_MAPPING +-------------------------- + +DMA_ATTR_NO_KERNEL_MAPPING lets the platform to avoid creating a kernel +virtual mapping for the allocated buffer. On some architectures creating +such mapping is non-trivial task and consumes very limited resources +(like kernel virtual address space or dma consistent address space). +Buffers allocated with this attribute can be only passed to user space +by calling dma_mmap_attrs(). By using this API, you are guaranteeing +that you won't dereference the pointer returned by dma_alloc_attr(). You +can threat it as a cookie that must be passed to dma_mmap_attrs() and +dma_free_attrs(). Make sure that both of these also get this attribute +set on each call. + +Since it is optional for platforms to implement +DMA_ATTR_NO_KERNEL_MAPPING, those that do not will simply ignore the +attribute and exhibit default behavior. + +DMA_ATTR_SKIP_CPU_SYNC +---------------------- + +By default dma_map_{single,page,sg} functions family transfer a given +buffer from CPU domain to device domain. Some advanced use cases might +require sharing a buffer between more than one device. This requires +having a mapping created separately for each device and is usually +performed by calling dma_map_{single,page,sg} function more than once +for the given buffer with device pointer to each device taking part in +the buffer sharing. The first call transfers a buffer from 'CPU' domain +to 'device' domain, what synchronizes CPU caches for the given region +(usually it means that the cache has been flushed or invalidated +depending on the dma direction). However, next calls to +dma_map_{single,page,sg}() for other devices will perform exactly the +same sychronization operation on the CPU cache. CPU cache sychronization +might be a time consuming operation, especially if the buffers are +large, so it is highly recommended to avoid it if possible. +DMA_ATTR_SKIP_CPU_SYNC allows platform code to skip synchronization of +the CPU cache for the given buffer assuming that it has been already +transferred to 'device' domain. This attribute can be also used for +dma_unmap_{single,page,sg} functions family to force buffer to stay in +device domain after releasing a mapping for it. Use this attribute with +care! --- linux-3.5.0.orig/Documentation/filesystems/Locking +++ linux-3.5.0/Documentation/filesystems/Locking @@ -62,6 +62,7 @@ int (*removexattr) (struct dentry *, const char *); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); void (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open)(struct dentry *,struct file *,const struct cred *); locking rules: all may block @@ -89,7 +90,7 @@ removexattr: yes fiemap: no update_time: no - +open: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on victim. cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. --- linux-3.5.0.orig/Documentation/filesystems/overlayfs.txt +++ linux-3.5.0/Documentation/filesystems/overlayfs.txt @@ -0,0 +1,199 @@ +Written by: Neil Brown + +Overlay Filesystem +================== + +This document describes a prototype for a new approach to providing +overlay-filesystem functionality in Linux (sometimes referred to as +union-filesystems). An overlay-filesystem tries to present a +filesystem which is the result over overlaying one filesystem on top +of the other. + +The result will inevitably fail to look exactly like a normal +filesystem for various technical reasons. The expectation is that +many use cases will be able to ignore these differences. + +This approach is 'hybrid' because the objects that appear in the +filesystem do not all appear to belong to that filesystem. In many +cases an object accessed in the union will be indistinguishable +from accessing the corresponding object from the original filesystem. +This is most obvious from the 'st_dev' field returned by stat(2). + +While directories will report an st_dev from the overlay-filesystem, +all non-directory objects will report an st_dev from the lower or +upper filesystem that is providing the object. Similarly st_ino will +only be unique when combined with st_dev, and both of these can change +over the lifetime of a non-directory object. Many applications and +tools ignore these values and will not be affected. + +Upper and Lower +--------------- + +An overlay filesystem combines two filesystems - an 'upper' filesystem +and a 'lower' filesystem. When a name exists in both filesystems, the +object in the 'upper' filesystem is visible while the object in the +'lower' filesystem is either hidden or, in the case of directories, +merged with the 'upper' object. + +It would be more correct to refer to an upper and lower 'directory +tree' rather than 'filesystem' as it is quite possible for both +directory trees to be in the same filesystem and there is no +requirement that the root of a filesystem be given for either upper or +lower. + +The lower filesystem can be any filesystem supported by Linux and does +not need to be writable. The lower filesystem can even be another +overlayfs. The upper filesystem will normally be writable and if it +is it must support the creation of trusted.* extended attributes, and +must provide valid d_type in readdir responses, at least for symbolic +links - so NFS is not suitable. + +A read-only overlay of two read-only filesystems may use any +filesystem type. + +Directories +----------- + +Overlaying mainly involved directories. If a given name appears in both +upper and lower filesystems and refers to a non-directory in either, +then the lower object is hidden - the name refers only to the upper +object. + +Where both upper and lower objects are directories, a merged directory +is formed. + +At mount time, the two directories given as mount options are combined +into a merged directory: + + mount -t overlayfs overlayfs -olowerdir=/lower,upperdir=/upper /overlay + +Then whenever a lookup is requested in such a merged directory, the +lookup is performed in each actual directory and the combined result +is cached in the dentry belonging to the overlay filesystem. If both +actual lookups find directories, both are stored and a merged +directory is created, otherwise only one is stored: the upper if it +exists, else the lower. + +Only the lists of names from directories are merged. Other content +such as metadata and extended attributes are reported for the upper +directory only. These attributes of the lower directory are hidden. + +whiteouts and opaque directories +-------------------------------- + +In order to support rm and rmdir without changing the lower +filesystem, an overlay filesystem needs to record in the upper filesystem +that files have been removed. This is done using whiteouts and opaque +directories (non-directories are always opaque). + +The overlay filesystem uses extended attributes with a +"trusted.overlay." prefix to record these details. + +A whiteout is created as a symbolic link with target +"(overlay-whiteout)" and with xattr "trusted.overlay.whiteout" set to "y". +When a whiteout is found in the upper level of a merged directory, any +matching name in the lower level is ignored, and the whiteout itself +is also hidden. + +A directory is made opaque by setting the xattr "trusted.overlay.opaque" +to "y". Where the upper filesystem contains an opaque directory, any +directory in the lower filesystem with the same name is ignored. + +readdir +------- + +When a 'readdir' request is made on a merged directory, the upper and +lower directories are each read and the name lists merged in the +obvious way (upper is read first, then lower - entries that already +exist are not re-added). This merged name list is cached in the +'struct file' and so remains as long as the file is kept open. If the +directory is opened and read by two processes at the same time, they +will each have separate caches. A seekdir to the start of the +directory (offset 0) followed by a readdir will cause the cache to be +discarded and rebuilt. + +This means that changes to the merged directory do not appear while a +directory is being read. This is unlikely to be noticed by many +programs. + +seek offsets are assigned sequentially when the directories are read. +Thus if + - read part of a directory + - remember an offset, and close the directory + - re-open the directory some time later + - seek to the remembered offset + +there may be little correlation between the old and new locations in +the list of filenames, particularly if anything has changed in the +directory. + +Readdir on directories that are not merged is simply handled by the +underlying directory (upper or lower). + + +Non-directories +--------------- + +Objects that are not directories (files, symlinks, device-special +files etc.) are presented either from the upper or lower filesystem as +appropriate. When a file in the lower filesystem is accessed in a way +the requires write-access, such as opening for write access, changing +some metadata etc., the file is first copied from the lower filesystem +to the upper filesystem (copy_up). Note that creating a hard-link +also requires copy_up, though of course creation of a symlink does +not. + +The copy_up may turn out to be unnecessary, for example if the file is +opened for read-write but the data is not modified. + +The copy_up process first makes sure that the containing directory +exists in the upper filesystem - creating it and any parents as +necessary. It then creates the object with the same metadata (owner, +mode, mtime, symlink-target etc.) and then if the object is a file, the +data is copied from the lower to the upper filesystem. Finally any +extended attributes are copied up. + +Once the copy_up is complete, the overlay filesystem simply +provides direct access to the newly created file in the upper +filesystem - future operations on the file are barely noticed by the +overlay filesystem (though an operation on the name of the file such as +rename or unlink will of course be noticed and handled). + + +Non-standard behavior +--------------------- + +The copy_up operation essentially creates a new, identical file and +moves it over to the old name. The new file may be on a different +filesystem, so both st_dev and st_ino of the file may change. + +Any open files referring to this inode will access the old data and +metadata. Similarly any file locks obtained before copy_up will not +apply to the copied up file. + +On a file is opened with O_RDONLY fchmod(2), fchown(2), futimesat(2) +and fsetxattr(2) will fail with EROFS. + +If a file with multiple hard links is copied up, then this will +"break" the link. Changes will not be propagated to other names +referring to the same inode. + +Symlinks in /proc/PID/ and /proc/PID/fd which point to a non-directory +object in overlayfs will not contain vaid absolute paths, only +relative paths leading up to the filesystem's root. This will be +fixed in the future. + +Some operations are not atomic, for example a crash during copy_up or +rename will leave the filesystem in an inconsitent state. This will +be addressed in the future. + +Changes to underlying filesystems +--------------------------------- + +Offline changes, when the overlay is not mounted, are allowed to either +the upper or the lower trees. + +Changes to the underlying filesystems while part of a mounted overlay +filesystem are not allowed. If the underlying filesystem is changed, +the behavior of the overlay is undefined, though it will not result in +a crash or deadlock. --- linux-3.5.0.orig/Documentation/filesystems/vfs.txt +++ linux-3.5.0/Documentation/filesystems/vfs.txt @@ -364,6 +364,8 @@ ssize_t (*listxattr) (struct dentry *, char *, size_t); int (*removexattr) (struct dentry *, const char *); void (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open) (struct dentry *, struct file *, + const struct cred *); }; Again, all methods are called without any locks being held, unless @@ -476,6 +478,12 @@ an inode. If this is not defined the VFS will update the inode itself and call mark_inode_dirty_sync. + open: this is an alternative to f_op->open(), the difference is that this + method may return any open file, not necessarily originating from the + same filesystem as the one i_op->open() was called on. It may be useful + for stacking filesystems which want to allow native I/O directly on + underlying files. + The Address Space Object ======================== --- linux-3.5.0.orig/Documentation/filesystems/00-INDEX +++ linux-3.5.0/Documentation/filesystems/00-INDEX @@ -38,6 +38,8 @@ - example program for dnotify ecryptfs.txt - docs on eCryptfs: stacked cryptographic filesystem for Linux. +efivarfs.txt + - info for the efivarfs filesystem. exofs.txt - info, usage, mount options, design about EXOFS. ext2.txt --- linux-3.5.0.orig/Documentation/filesystems/efivarfs.txt +++ linux-3.5.0/Documentation/filesystems/efivarfs.txt @@ -0,0 +1,16 @@ + +efivarfs - a (U)EFI variable filesystem + +The efivarfs filesystem was created to address the shortcomings of +using entries in sysfs to maintain EFI variables. The old sysfs EFI +variables code only supported variables of up to 1024 bytes. This +limitation existed in version 0.99 of the EFI specification, but was +removed before any full releases. Since variables can now be larger +than a single page, sysfs isn't the best interface for this. + +Variables can be created, deleted and modified with the efivarfs +filesystem. + +efivarfs is typically mounted like this, + + mount -t efivarfs none /sys/firmware/efi/efivars --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/clock-bindings.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/clock-bindings.txt @@ -0,0 +1,117 @@ +This binding is a work-in-progress, and are based on some experimental +work by benh[1]. + +Sources of clock signal can be represented by any node in the device +tree. Those nodes are designated as clock providers. Clock consumer +nodes use a phandle and clock specifier pair to connect clock provider +outputs to clock inputs. Similar to the gpio specifiers, a clock +specifier is an array of one more more cells identifying the clock +output on a device. The length of a clock specifier is defined by the +value of a #clock-cells property in the clock provider node. + +[1] http://patchwork.ozlabs.org/patch/31551/ + +==Clock providers== + +Required properties: +#clock-cells: Number of cells in a clock specifier; Typically 0 for nodes + with a single clock output and 1 for nodes with multiple + clock outputs. + +Optional properties: +clock-output-names: Recommended to be a list of strings of clock output signal + names indexed by the first cell in the clock specifier. + However, the meaning of clock-output-names is domain + specific to the clock provider, and is only provided to + encourage using the same meaning for the majority of clock + providers. This format may not work for clock providers + using a complex clock specifier format. In those cases it + is recommended to omit this property and create a binding + specific names property. + + Clock consumer nodes must never directly reference + the provider's clock-output-names property. + +For example: + + oscillator { + #clock-cells = <1>; + clock-output-names = "ckil", "ckih"; + }; + +- this node defines a device with two clock outputs, the first named + "ckil" and the second named "ckih". Consumer nodes always reference + clocks by index. The names should reflect the clock output signal + names for the device. + +==Clock consumers== + +Required properties: +clocks: List of phandle and clock specifier pairs, one pair + for each clock input to the device. Note: if the + clock provider specifies '0' for #clock-cells, then + only the phandle portion of the pair will appear. + +Optional properties: +clock-names: List of clock input name strings sorted in the same + order as the clocks property. Consumers drivers + will use clock-names to match clock input names + with clocks specifiers. +clock-ranges: Empty property indicating that child nodes can inherit named + clocks from this node. Useful for bus nodes to provide a + clock to their children. + +For example: + + device { + clocks = <&osc 1>, <&ref 0>; + clock-names = "baud", "register"; + }; + + +This represents a device with two clock inputs, named "baud" and "register". +The baud clock is connected to output 1 of the &osc device, and the register +clock is connected to output 0 of the &ref. + +==Example== + + /* external oscillator */ + osc: oscillator { + compatible = "fixed-clock"; + #clock-cells = <1>; + clock-frequency = <32678>; + clock-output-names = "osc"; + }; + + /* phase-locked-loop device, generates a higher frequency clock + * from the external oscillator reference */ + pll: pll@4c000 { + compatible = "vendor,some-pll-interface" + #clock-cells = <1>; + clocks = <&osc 0>; + clock-names = "ref"; + reg = <0x4c000 0x1000>; + clock-output-names = "pll", "pll-switched"; + }; + + /* UART, using the low frequency oscillator for the baud clock, + * and the high frequency switched PLL output for register + * clocking */ + uart@a000 { + compatible = "fsl,imx-uart"; + reg = <0xa000 0x1000>; + interrupts = <33>; + clocks = <&osc 0>, <&pll 1>; + clock-names = "baud", "register"; + }; + +This DT fragment defines three devices: an external oscillator to provide a +low-frequency reference clock, a PLL device to generate a higher frequency +clock signal, and a UART. + +* The oscillator is fixed-frequency, and provides one clock output, named "osc". +* The PLL is both a clock provider and a clock consumer. It uses the clock + signal generated by the external oscillator, and provides two output signals + ("pll" and "pll-switched"). +* The UART has its baud clock connected the external oscillator and its + register clock connected to the PLL clock (the "pll-switched" signal) --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/fixed-clock.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/fixed-clock.txt @@ -0,0 +1,21 @@ +Binding for simple fixed-rate clock sources. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "fixed-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- clock-frequency : frequency of clock in Hz. Should be a single cell. + +Optional properties: +- gpios : From common gpio binding; gpio connection to clock enable pin. +- clock-output-names : From common clock binding. + +Example: + clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <1000000000>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/calxeda.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/calxeda.txt @@ -0,0 +1,17 @@ +Device Tree Clock bindings for Calxeda highbank platform + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be one of the following: + "calxeda,hb-pll-clock" - for a PLL clock + "calxeda,hb-a9periph-clock" - The A9 peripheral clock divided from the + A9 clock. + "calxeda,hb-a9bus-clock" - The A9 bus clock divided from the A9 clock. + "calxeda,hb-emmc-clock" - Divided clock for MMC/SD controller. +- reg : shall be the control register offset from SYSREGs base for the clock. +- clocks : shall be the input parent clock phandle for the clock. This is + either an oscillator or a pll output. +- #clock-cells : from common clock binding; shall be set to 0. --- linux-3.5.0.orig/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ linux-3.5.0/Documentation/devicetree/bindings/ata/ahci-platform.txt @@ -8,9 +8,18 @@ - interrupts : - reg : +Optional properties: +- dma-coherent : Present if dma operations are coherent +- calxeda,port-phys: phandle-combophy and lane assignment, which maps each + SATA port to a combophy and a lane within that + combophy + Example: sata@ffe08000 { compatible = "calxeda,hb-ahci"; reg = <0xffe08000 0x1000>; interrupts = <115>; + calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1 + &combophy0 2 &combophy0 3>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/dma/arm-pl330.txt +++ linux-3.5.0/Documentation/devicetree/bindings/dma/arm-pl330.txt @@ -9,6 +9,9 @@ region. - interrupts: interrupt number to the cpu. +Optional properties: +- dma-coherent : Present if dma operations are coherent + Example: pdma0: pdma@12680000 { --- linux-3.5.0.orig/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt +++ linux-3.5.0/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt @@ -93,7 +93,7 @@ With some exceptions, these support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode, nvidia,pull-down-strength, - nvidia,pull-up-strength, nvidia,slew_rate-rising, nvidia,slew_rate-falling. + nvidia,pull-up-strength, nvidia,slew-rate-rising, nvidia,slew-rate-falling. drive_ao1, drive_ao2, drive_at1, drive_at2, drive_cdev1, drive_cdev2, drive_csus, drive_dap1, drive_dap2, drive_dap3, drive_dap4, drive_dbg, --- linux-3.5.0.orig/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt +++ linux-3.5.0/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt @@ -83,7 +83,7 @@ drive groups: These all support nvidia,pull-down-strength, nvidia,pull-up-strength, - nvidia,slew_rate-rising, nvidia,slew_rate-falling. Most but not all + nvidia,slew-rate-rising, nvidia,slew-rate-falling. Most but not all support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode. ao1, ao2, at1, at2, at3, at4, at5, cdev1, cdev2, cec, crt, csus, dap1, --- linux-3.5.0.orig/Documentation/devicetree/bindings/tty/serial/of-serial.txt +++ linux-3.5.0/Documentation/devicetree/bindings/tty/serial/of-serial.txt @@ -10,6 +10,9 @@ - "ns16850" - "nvidia,tegra20-uart" - "ibm,qpace-nwp-serial" + - "altr,16550-FIFO32" + - "altr,16550-FIFO64" + - "altr,16550-FIFO128" - "serial" if the port type is unknown. - reg : offset and length of the register set for the device. - interrupts : should contain uart interrupt. --- linux-3.5.0.orig/Documentation/devicetree/bindings/net/calxeda-xgmac.txt +++ linux-3.5.0/Documentation/devicetree/bindings/net/calxeda-xgmac.txt @@ -6,6 +6,9 @@ - interrupts : Should contain 3 xgmac interrupts. The 1st is main interrupt. The 2nd is pwr mgt interrupt. The 3rd is low power state interrupt. +Optional properties: +- dma-coherent : Present if dma operations are coherent + Example: ethernet@fff50000 { --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/atmel-at91.txt @@ -8,7 +8,7 @@ shared across all System Controller members. TC/TCLIB Timer required properties: -- compatible: Should be "atmel,-pit". +- compatible: Should be "atmel,-tcb". can be "at91rm9200" or "at91sam9x5" - reg: Should contain registers location and length - interrupts: Should contain all interrupts for the TC block --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/combophy.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/combophy.txt @@ -0,0 +1,17 @@ +Calxeda Highbank Combination Phys for SATA + +Properties: +- compatible : Should be "calxeda,hb-combophy" +- #phy-cells: Should be 1. +- reg : Address and size for Combination Phy registers. +- phydev: device ID for programming the combophy. + +Example: + + combophy5: combo-phy@fff5d000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff5d000 0x1000>; + phydev = <31>; + }; + --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt @@ -0,0 +1,14 @@ +Calxeda DDR memory controller + +Properties: +- compatible : Should be "calxeda,hb-ddr-ctrl" +- reg : Address and size for DDR controller registers. +- interrupts : Interrupt for DDR controller. + +Example: + + memory-controller@fff00000 { + compatible = "calxeda,hb-ddr-ctrl"; + reg = <0xfff00000 0x1000>; + interrupts = <0 91 4>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt @@ -0,0 +1,15 @@ +Calxeda Highbank L2 cache ECC + +Properties: +- compatible : Should be "calxeda,hb-sregs-l2-ecc" +- reg : Address and size for ECC error interrupt clear registers. +- interrupts : Should be single bit error interrupt, then double bit error + interrupt. + +Example: + + sregs@fff3c200 { + compatible = "calxeda,hb-sregs-l2-ecc"; + reg = <0xfff3c200 0x100>; + interrupts = <0 71 4 0 72 4>; + }; --- linux-3.5.0.orig/Documentation/x86/boot.txt +++ linux-3.5.0/Documentation/x86/boot.txt @@ -54,6 +54,9 @@ beyond the kernel_alignment added, new init_size and pref_address fields. Added extended boot loader IDs. +Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover + protocol entry point. + **** MEMORY LAYOUT The traditional memory map for the kernel loader, used for Image or @@ -189,6 +192,7 @@ of struct setup_data 0258/8 2.10+ pref_address Preferred loading address 0260/4 2.10+ init_size Linear memory required during initialization +0264/4 2.11+ handover_offset Offset of handover entry point (1) For backwards compatibility, if the setup_sects field contains 0, the real value is 4. @@ -690,6 +694,16 @@ else runtime_start = pref_address +Field name: handover_offset +Type: read +Offset/size: 0x264/4 + + This field is the offset from the beginning of the kernel image to + the EFI handover protocol entry point. Boot loaders using the EFI + handover protocol to boot the kernel should jump to this offset. + + See EFI HANDOVER PROTOCOL below for more details. + **** THE IMAGE CHECKSUM @@ -1010,3 +1024,30 @@ must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %esi must hold the base address of the struct boot_params; %ebp, %edi and %ebx must be zero. + +**** EFI HANDOVER PROTOCOL + +This protocol allows boot loaders to defer initialisation to the EFI +boot stub. The boot loader is required to load the kernel/initrd(s) +from the boot media and jump to the EFI handover protocol entry point +which is hdr->handover_offset bytes from the beginning of +startup_{32,64}. + +The function prototype for the handover entry point looks like this, + + efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp) + +'handle' is the EFI image handle passed to the boot loader by the EFI +firmware, 'table' is the EFI system table - these are the first two +arguments of the "handoff state" as described in section 2.3 of the +UEFI specification. 'bp' is the boot loader-allocated boot params. + +The boot loader *must* fill out the following fields in bp, + + o hdr.code32_start + o hdr.cmd_line_ptr + o hdr.cmdline_size + o hdr.ramdisk_image (if applicable) + o hdr.ramdisk_size (if applicable) + +All other fields should be zero. --- linux-3.5.0.orig/Documentation/i2c/busses/i2c-i801 +++ linux-3.5.0/Documentation/i2c/busses/i2c-i801 @@ -21,6 +21,7 @@ * Intel DH89xxCC (PCH) * Intel Panther Point (PCH) * Intel Lynx Point (PCH) + * Intel Lynx Point-LP (PCH) Datasheets: Publicly available at the Intel website On Intel Patsburg and later chipsets, both the normal host SMBus controller --- linux-3.5.0.orig/Documentation/hwmon/coretemp +++ linux-3.5.0/Documentation/hwmon/coretemp @@ -105,6 +105,7 @@ 330/230 125 E680/660/640/620 90 E680T/660T/640T/620T 110 + CE4170/4150/4110 110 45nm Core2 Processors Solo ULV SU3500/3300 100 --- linux-3.5.0.orig/Documentation/security/Yama.txt +++ linux-3.5.0/Documentation/security/Yama.txt @@ -5,10 +5,54 @@ Yama is controlled through sysctl in /proc/sys/kernel/yama: +- protected_sticky_symlinks +- protected_nonaccess_hardlinks - ptrace_scope ============================================================== +protected_sticky_symlinks: + +A long-standing class of security issues is the symlink-based +time-of-check-time-of-use race, most commonly seen in world-writable +directories like /tmp. The common method of exploitation of this flaw +is to cross privilege boundaries when following a given symlink (i.e. a +root process follows a symlink belonging to another user). For a likely +incomplete list of hundreds of examples across the years, please see: +http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp + +When set to "0", symlink following behavior is unrestricted. + +When set to "1" symlinks are permitted to be followed only when outside +a sticky world-writable directory, or when the uid of the symlink and +follower match, or when the directory owner matches the symlink's owner. + +This protection is based on the restrictions in Openwall and grsecurity. + +============================================================== + +protected_nonaccess_hardlinks: + +Hardlinks can be abused in a similar fashion to symlinks in sticky +world-writable directories, but their weakness is not limited to +just that scenario. For example, if /etc and /home are on the same +partition, a regular user can create a hardlink to /etc/shadow in their +home directory. While it retains the original owner and permissions, +it is possible for privileged programs that are otherwise symlink-safe +to mistakenly access the file through its hardlink. Additionally, a very +minor untraceable quota-bypassing local denial of service is possible by +an attacker exhausting disk space by filling a world-writable directory +with hardlinks. + +When set to "0", hardlink creation behavior is unrestricted. + +When set to "1", hardlinks cannot be created to files that a given user +would be unable to read and write originally, or are otherwise sensitive. + +This protection is based on the restrictions in Openwall and grsecurity. + +============================================================== + ptrace_scope: As Linux grows in popularity, it will become a larger target for @@ -46,14 +90,13 @@ so that any otherwise allowed process (even those in external pid namespaces) may attach. -These restrictions do not change how ptrace via PTRACE_TRACEME operates. - -The sysctl settings are: +The sysctl settings (writable only with CAP_SYS_PTRACE) are: 0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other process running under the same uid, as long as it is dumpable (i.e. did not transition uids, start privileged, or have called - prctl(PR_SET_DUMPABLE...) already). + prctl(PR_SET_DUMPABLE...) already). Similarly, PTRACE_TRACEME is + unchanged. 1 - restricted ptrace: a process must have a predefined relationship with the inferior it wants to call PTRACE_ATTACH on. By default, @@ -61,12 +104,13 @@ classic criteria is also met. To change the relationship, an inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare an allowed debugger PID to call PTRACE_ATTACH on the inferior. + Using PTRACE_TRACEME is unchanged. 2 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace - with PTRACE_ATTACH. + with PTRACE_ATTACH, or through children calling PTRACE_TRACEME. -3 - no attach: no processes may use ptrace with PTRACE_ATTACH. Once set, - this sysctl cannot be changed to a lower value. +3 - no attach: no processes may use ptrace with PTRACE_ATTACH nor via + PTRACE_TRACEME. Once set, this sysctl value cannot be changed. The original children-only logic was based on the restrictions in grsecurity. --- linux-3.5.0.orig/Documentation/serial/00-INDEX +++ linux-3.5.0/Documentation/serial/00-INDEX @@ -2,8 +2,6 @@ - this file. README.cycladesZ - info on Cyclades-Z firmware loading. -computone.txt - - info on Computone Intelliport II/Plus Multiport Serial Driver. digiepca.txt - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards. hayes-esp.txt --- linux-3.5.0.orig/Documentation/sound/alsa/HD-Audio-Models.txt +++ linux-3.5.0/Documentation/sound/alsa/HD-Audio-Models.txt @@ -21,10 +21,11 @@ ========== N/A -ALC269 +ALC269/270/275/276/280/282 ====== laptop-amic Laptops with analog-mic input laptop-dmic Laptops with digital-mic input + lenovo-dock Enables docking station I/O for some Lenovos ALC662/663/272 ============== @@ -46,6 +47,7 @@ acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G acer-aspire-8930g Acer Aspire 8330G/6935G acer-aspire Acer Aspire others + no-primary-hp VAIO Z workaround (for fixed speaker DAC) ALC861/660 ========== --- linux-3.5.0.orig/Documentation/dvb/get_dvb_firmware +++ linux-3.5.0/Documentation/dvb/get_dvb_firmware @@ -116,7 +116,7 @@ sub tda10046 { my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip"; - my $url = "http://www.tt-download.com/download/updates/219/$sourcefile"; + my $url = "http://technotrend.com.ua/download/software/219/$sourcefile"; my $hash = "6a7e1e2f2644b162ff0502367553c72d"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); --- linux-3.5.0.orig/Documentation/cgroups/memory.txt +++ linux-3.5.0/Documentation/cgroups/memory.txt @@ -464,6 +464,10 @@ 5.3 swappiness Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only. +Please note that unlike the global swappiness, memcg knob set to 0 +really prevents from any swapping even if there is a swap storage +available. This might lead to memcg OOM killer if there are no file +pages to reclaim. Following cgroups' swappiness can't be changed. - root cgroup (uses /proc/sys/vm/swappiness). --- linux-3.5.0.orig/Documentation/power/runtime_pm.txt +++ linux-3.5.0/Documentation/power/runtime_pm.txt @@ -642,12 +642,13 @@ * During system suspend it calls pm_runtime_get_noresume() and pm_runtime_barrier() for every device right before executing the subsystem-level .suspend() callback for it. In addition to that it calls - pm_runtime_disable() for every device right after executing the - subsystem-level .suspend() callback for it. + __pm_runtime_disable() with 'false' as the second argument for every device + right before executing the subsystem-level .suspend_late() callback for it. * During system resume it calls pm_runtime_enable() and pm_runtime_put_sync() - for every device right before and right after executing the subsystem-level - .resume() callback for it, respectively. + for every device right after executing the subsystem-level .resume_early() + callback and right after executing the subsystem-level .resume() callback + for it, respectively. 7. Generic subsystem callbacks --- linux-3.5.0.orig/Documentation/networking/ip-sysctl.txt +++ linux-3.5.0/Documentation/networking/ip-sysctl.txt @@ -551,6 +551,11 @@ Documentation/networking/tcp-thin.txt Default: 0 +tcp_challenge_ack_limit - INTEGER + Limits number of Challenge ACK sent per second, as recommended + in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) + Default: 100 + UDP variables: udp_mem - vector of 3 INTEGERs: min, pressure, max --- linux-3.5.0.orig/fs/open.c +++ linux-3.5.0/fs/open.c @@ -33,6 +33,9 @@ #include "internal.h" +#define CREATE_TRACE_POINTS +#include + int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, struct file *filp) { @@ -60,6 +63,7 @@ mutex_unlock(&dentry->d_inode->i_mutex); return ret; } +EXPORT_SYMBOL(do_truncate); static long do_sys_truncate(const char __user *pathname, loff_t length) { @@ -667,24 +671,24 @@ return 0; } -static struct file *do_dentry_open(struct dentry *dentry, struct vfsmount *mnt, - struct file *f, - int (*open)(struct inode *, struct file *), - const struct cred *cred) +static struct file *do_dentry_open(struct path *path, struct file *f, + int (*open)(struct inode *, struct file *), + const struct cred *cred) { static const struct file_operations empty_fops = {}; struct inode *inode; int error; + path_get(path); f->f_mode = OPEN_FMODE(f->f_flags) | FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE; if (unlikely(f->f_flags & O_PATH)) f->f_mode = FMODE_PATH; - inode = dentry->d_inode; + inode = path->dentry->d_inode; if (f->f_mode & FMODE_WRITE) { - error = __get_file_write_access(inode, mnt); + error = __get_file_write_access(inode, path->mnt); if (error) goto cleanup_file; if (!special_file(inode->i_mode)) @@ -692,8 +696,7 @@ } f->f_mapping = inode->i_mapping; - f->f_path.dentry = dentry; - f->f_path.mnt = mnt; + f->f_path = *path; f->f_pos = 0; file_sb_list_add(f, inode->i_sb); @@ -740,24 +743,22 @@ * here, so just reset the state. */ file_reset_write(f); - mnt_drop_write(mnt); + mnt_drop_write(path->mnt); } } file_sb_list_del(f); f->f_path.dentry = NULL; f->f_path.mnt = NULL; cleanup_file: - dput(dentry); - mntput(mnt); + path_put(path); return ERR_PTR(error); } -static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt, - struct file *f, +static struct file *__dentry_open(struct path *path, struct file *f, int (*open)(struct inode *, struct file *), const struct cred *cred) { - struct file *res = do_dentry_open(dentry, mnt, f, open, cred); + struct file *res = do_dentry_open(path, f, open, cred); if (!IS_ERR(res)) { int error = open_check_o_direct(f); if (error) { @@ -792,14 +793,14 @@ struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)) { + struct path path = { .dentry = dentry, .mnt = nd->path.mnt }; const struct cred *cred = current_cred(); if (IS_ERR(nd->intent.open.file)) goto out; if (IS_ERR(dentry)) goto out_err; - nd->intent.open.file = __dentry_open(dget(dentry), mntget(nd->path.mnt), - nd->intent.open.file, + nd->intent.open.file = __dentry_open(&path, nd->intent.open.file, open, cred); out: return nd->intent.open.file; @@ -830,10 +831,17 @@ nd->intent.open.file = NULL; } else { struct file *res; + struct inode *inode = nd->path.dentry->d_inode; + + if (inode->i_op->open) { + res = inode->i_op->open(nd->path.dentry, filp, cred); + if (!IS_ERR(res)) { + nd->intent.open.file = NULL; + } + return res; + } - path_get(&nd->path); - res = do_dentry_open(nd->path.dentry, nd->path.mnt, - filp, NULL, cred); + res = do_dentry_open(&nd->path, filp, NULL, cred); if (!IS_ERR(res)) { int error; @@ -860,27 +868,48 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, const struct cred *cred) { - int error; struct file *f; + struct file *ret; + struct path path = { .dentry = dentry, .mnt = mnt }; validate_creds(cred); /* We must always pass in a valid mount pointer. */ BUG_ON(!mnt); - error = -ENFILE; + ret = ERR_PTR(-ENFILE); f = get_empty_filp(); - if (f == NULL) { - dput(dentry); - mntput(mnt); - return ERR_PTR(error); + if (f != NULL) { + f->f_flags = flags; + ret = vfs_open(&path, f, cred); } + path_put(&path); - f->f_flags = flags; - return __dentry_open(dentry, mnt, f, NULL, cred); + return ret; } EXPORT_SYMBOL(dentry_open); +/** + * vfs_open - open the file at the given path + * @path: path to open + * @filp: newly allocated file with f_flag initialized + * @cred: credentials to use + * + * Open the file. If successful, the returned file will have acquired + * an additional reference for path. + */ +struct file *vfs_open(struct path *path, struct file *filp, + const struct cred *cred) +{ + struct inode *inode = path->dentry->d_inode; + + if (inode->i_op->open) + return inode->i_op->open(path->dentry, filp, cred); + else + return __dentry_open(path, filp, NULL, cred); +} +EXPORT_SYMBOL(vfs_open); + static void __put_unused_fd(struct files_struct *files, unsigned int fd) { struct fdtable *fdt = files_fdtable(files); @@ -930,9 +959,10 @@ int lookup_flags = 0; int acc_mode; - if (!(flags & O_CREAT)) - mode = 0; - op->mode = mode; + if (flags & O_CREAT) + op->mode = (mode & S_IALLUGO) | S_IFREG; + else + op->mode = 0; /* Must never be set by userspace */ flags &= ~FMODE_NONOTIFY; @@ -1035,6 +1065,7 @@ } else { fsnotify_open(f); fd_install(fd, f); + trace_do_sys_open(tmp, flags, mode); } } putname(tmp); --- linux-3.5.0.orig/fs/dcache.c +++ linux-3.5.0/fs/dcache.c @@ -389,7 +389,7 @@ * Inform try_to_ascend() that we are no longer attached to the * dentry tree */ - dentry->d_flags |= DCACHE_DISCONNECTED; + dentry->d_flags |= DCACHE_DENTRY_KILLED; if (parent) spin_unlock(&parent->d_lock); dentry_iput(dentry); @@ -1046,7 +1046,7 @@ * or deletion */ if (new != old->d_parent || - (old->d_flags & DCACHE_DISCONNECTED) || + (old->d_flags & DCACHE_DENTRY_KILLED) || (!locked && read_seqretry(&rename_lock, seq))) { spin_unlock(&new->d_lock); new = NULL; @@ -1132,6 +1132,8 @@ return 1; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -1234,6 +1236,8 @@ rename_retry: if (found) return found; + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -1250,8 +1254,10 @@ LIST_HEAD(dispose); int found; - while ((found = select_parent(parent, &dispose)) != 0) + while ((found = select_parent(parent, &dispose)) != 0) { shrink_dentry_list(&dispose); + cond_resched(); + } } EXPORT_SYMBOL(shrink_dcache_parent); @@ -1576,7 +1582,7 @@ */ struct dentry *d_obtain_alias(struct inode *inode) { - static const struct qstr anonstring = { .name = "" }; + static const struct qstr anonstring = QSTR_INIT("/", 1); struct dentry *tmp; struct dentry *res; @@ -2575,7 +2581,6 @@ bool slash = false; int error = 0; - br_read_lock(&vfsmount_lock); while (dentry != root->dentry || vfsmnt != root->mnt) { struct dentry * parent; @@ -2605,8 +2610,6 @@ if (!error && !slash) error = prepend(buffer, buflen, "/", 1); -out: - br_read_unlock(&vfsmount_lock); return error; global_root: @@ -2623,7 +2626,7 @@ error = prepend(buffer, buflen, "/", 1); if (!error) error = real_mount(vfsmnt)->mnt_ns ? 1 : 2; - goto out; + return error; } /** @@ -2650,9 +2653,11 @@ int error; prepend(&res, &buflen, "\0", 1); + br_read_lock(&vfsmount_lock); write_seqlock(&rename_lock); error = prepend_path(path, root, &res, &buflen); write_sequnlock(&rename_lock); + br_read_unlock(&vfsmount_lock); if (error < 0) return ERR_PTR(error); @@ -2669,9 +2674,11 @@ int error; prepend(&res, &buflen, "\0", 1); + br_read_lock(&vfsmount_lock); write_seqlock(&rename_lock); error = prepend_path(path, &root, &res, &buflen); write_sequnlock(&rename_lock); + br_read_unlock(&vfsmount_lock); if (error > 1) error = -EINVAL; @@ -2735,11 +2742,13 @@ return path->dentry->d_op->d_dname(path->dentry, buf, buflen); get_fs_root(current->fs, &root); + br_read_lock(&vfsmount_lock); write_seqlock(&rename_lock); error = path_with_deleted(path, &root, &res, &buflen); + write_sequnlock(&rename_lock); + br_read_unlock(&vfsmount_lock); if (error < 0) res = ERR_PTR(error); - write_sequnlock(&rename_lock); path_put(&root); return res; } @@ -2894,6 +2903,7 @@ get_fs_root_and_pwd(current->fs, &root, &pwd); error = -ENOENT; + br_read_lock(&vfsmount_lock); write_seqlock(&rename_lock); if (!d_unlinked(pwd.dentry)) { unsigned long len; @@ -2903,6 +2913,7 @@ prepend(&cwd, &buflen, "\0", 1); error = prepend_path(&pwd, &root, &cwd, &buflen); write_sequnlock(&rename_lock); + br_read_unlock(&vfsmount_lock); if (error < 0) goto out; @@ -2923,6 +2934,7 @@ } } else { write_sequnlock(&rename_lock); + br_read_unlock(&vfsmount_lock); } out: @@ -3031,6 +3043,8 @@ return; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; --- linux-3.5.0.orig/fs/stat.c +++ linux-3.5.0/fs/stat.c @@ -58,7 +58,7 @@ int vfs_fstat(unsigned int fd, struct kstat *stat) { int fput_needed; - struct file *f = fget_light(fd, &fput_needed); + struct file *f = fget_raw_light(fd, &fput_needed); int error = -EBADF; if (f) { --- linux-3.5.0.orig/fs/binfmt_em86.c +++ linux-3.5.0/fs/binfmt_em86.c @@ -42,7 +42,6 @@ return -ENOEXEC; } - bprm->recursion_depth++; /* Well, the bang-shell is implicit... */ allow_write_access(bprm->file); fput(bprm->file); bprm->file = NULL; --- linux-3.5.0.orig/fs/exec.c +++ linux-3.5.0/fs/exec.c @@ -56,6 +56,8 @@ #include #include +#include + #include #include #include @@ -623,7 +625,7 @@ * when the old and new regions overlap clear from new_end. */ free_pgd_range(&tlb, new_end, old_end, new_end, - vma->vm_next ? vma->vm_next->vm_start : 0); + vma->vm_next ? vma->vm_next->vm_start : USER_PGTABLES_CEILING); } else { /* * otherwise, clean from old_start; this is done to not touch @@ -632,7 +634,7 @@ * for the others its just a little faster. */ free_pgd_range(&tlb, old_start, old_end, new_end, - vma->vm_next ? vma->vm_next->vm_start : 0); + vma->vm_next ? vma->vm_next->vm_start : USER_PGTABLES_CEILING); } tlb_finish_mmu(&tlb, new_end, old_end); @@ -781,6 +783,8 @@ fsnotify_open(file); + trace_open_exec(name); + err = deny_write_access(file); if (err) goto exit; @@ -905,11 +909,13 @@ sig->notify_count = -1; /* for exit_notify() */ for (;;) { + threadgroup_change_begin(tsk); write_lock_irq(&tasklist_lock); if (likely(leader->exit_state)) break; __set_current_state(TASK_UNINTERRUPTIBLE); write_unlock_irq(&tasklist_lock); + threadgroup_change_end(tsk); schedule(); } @@ -965,6 +971,7 @@ if (unlikely(leader->ptrace)) __wake_up_parent(leader, leader->parent); write_unlock_irq(&tasklist_lock); + threadgroup_change_end(tsk); release_task(leader); } @@ -1020,7 +1027,7 @@ unsigned long set, i; j++; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; fdt = files_fdtable(files); if (i >= fdt->max_fds) break; @@ -1110,7 +1117,8 @@ bprm->mm = NULL; /* We're using it now */ set_fs(USER_DS); - current->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD); + current->flags &= + ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD | PF_NOFREEZE); flush_thread(); current->personality &= ~bprm->per_clear; @@ -1158,13 +1166,6 @@ set_dumpable(current->mm, suid_dumpable); } - /* - * Flush performance counters when crossing a - * security domain: - */ - if (!get_dumpable(current->mm)) - perf_event_exit_task(current); - /* An exec changes our domain. We are no longer part of the thread group */ @@ -1201,9 +1202,24 @@ mutex_unlock(¤t->signal->cred_guard_mutex); abort_creds(bprm->cred); } + /* If a binfmt changed the interp, free it. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); kfree(bprm); } +int bprm_change_interp(char *interp, struct linux_binprm *bprm) +{ + /* If a binfmt changed the interp, free it first. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); + bprm->interp = kstrdup(interp, GFP_KERNEL); + if (!bprm->interp) + return -ENOMEM; + return 0; +} +EXPORT_SYMBOL(bprm_change_interp); + /* * install the new credentials for this executable */ @@ -1213,6 +1229,15 @@ commit_creds(bprm->cred); bprm->cred = NULL; + + /* + * Disable monitoring for regular users + * when executing setuid binaries. Must + * wait until new credentials are committed + * by commit_creds() above + */ + if (get_dumpable(current->mm) != SUID_DUMP_USER) + perf_event_exit_task(current); /* * cred_guard_mutex must be held at least to this point to prevent * ptrace_attach() from altering our determination of the task's @@ -1382,6 +1407,10 @@ struct linux_binfmt *fmt; pid_t old_pid, old_vpid; + /* This allows 4 levels of binfmt rewrites before failing hard. */ + if (depth > 5) + return -ELOOP; + retval = security_bprm_check(bprm); if (retval) return retval; @@ -1406,12 +1435,8 @@ if (!try_module_get(fmt->module)) continue; read_unlock(&binfmt_lock); + bprm->recursion_depth = depth + 1; retval = fn(bprm, regs); - /* - * Restore the depth counter to its starting value - * in this call, so we don't have to rely on every - * load_binary function to restore it on return. - */ bprm->recursion_depth = depth; if (retval >= 0) { if (depth == 0) { --- linux-3.5.0.orig/fs/inode.c +++ linux-3.5.0/fs/inode.c @@ -56,6 +56,7 @@ static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); +EXPORT_SYMBOL(inode_sb_list_lock); /* * Empty aops. Can be used for the cases where the user does not @@ -408,6 +409,19 @@ spin_unlock(&inode->i_sb->s_inode_lru_lock); } +/* + * Add inode to LRU if needed (inode is unused and clean). + * + * Needs inode->i_lock held. + */ +void inode_add_lru(struct inode *inode) +{ + if (!(inode->i_state & (I_DIRTY | I_SYNC | I_FREEING | I_WILL_FREE)) && + !atomic_read(&inode->i_count) && inode->i_sb->s_flags & MS_ACTIVE) + inode_lru_list_add(inode); +} + + static void inode_lru_list_del(struct inode *inode) { spin_lock(&inode->i_sb->s_inode_lru_lock); @@ -712,7 +726,7 @@ * inode to the back of the list so we don't spin on it. */ if (!spin_trylock(&inode->i_lock)) { - list_move_tail(&inode->i_lru, &sb->s_inode_lru); + list_move(&inode->i_lru, &sb->s_inode_lru); continue; } @@ -1390,8 +1404,7 @@ if (!drop && (sb->s_flags & MS_ACTIVE)) { inode->i_state |= I_REFERENCED; - if (!(inode->i_state & (I_DIRTY|I_SYNC))) - inode_lru_list_add(inode); + inode_add_lru(inode); spin_unlock(&inode->i_lock); return; } @@ -1491,7 +1504,7 @@ * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ -static int update_time(struct inode *inode, struct timespec *time, int flags) +int update_time(struct inode *inode, struct timespec *time, int flags) { if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); @@ -1507,6 +1520,7 @@ mark_inode_dirty_sync(inode); return 0; } +EXPORT_SYMBOL(update_time); /** * touch_atime - update the access time @@ -1883,3 +1897,7 @@ wake_up_bit(&inode->i_state, __I_DIO_WAKEUP); } EXPORT_SYMBOL(inode_dio_done); + +#define CREATE_TRACE_POINTS +#include + --- linux-3.5.0.orig/fs/buffer.c +++ linux-3.5.0/fs/buffer.c @@ -914,7 +914,7 @@ /* * Initialise the state of a blockdev page's buffers. */ -static void +static sector_t init_page_buffers(struct page *page, struct block_device *bdev, sector_t block, int size) { @@ -936,33 +936,41 @@ block++; bh = bh->b_this_page; } while (bh != head); + + /* + * Caller needs to validate requested block against end of device. + */ + return end_block; } /* * Create the page-cache page that contains the requested block. * - * This is user purely for blockdev mappings. + * This is used purely for blockdev mappings. */ -static struct page * +static int grow_dev_page(struct block_device *bdev, sector_t block, - pgoff_t index, int size) + pgoff_t index, int size, int sizebits) { struct inode *inode = bdev->bd_inode; struct page *page; struct buffer_head *bh; + sector_t end_block; + int ret = 0; /* Will call free_more_memory() */ page = find_or_create_page(inode->i_mapping, index, (mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS)|__GFP_MOVABLE); if (!page) - return NULL; + return ret; BUG_ON(!PageLocked(page)); if (page_has_buffers(page)) { bh = page_buffers(page); if (bh->b_size == size) { - init_page_buffers(page, bdev, block, size); - return page; + end_block = init_page_buffers(page, bdev, + index << sizebits, size); + goto done; } if (!try_to_free_buffers(page)) goto failed; @@ -982,14 +990,14 @@ */ spin_lock(&inode->i_mapping->private_lock); link_dev_buffers(page, bh); - init_page_buffers(page, bdev, block, size); + end_block = init_page_buffers(page, bdev, index << sizebits, size); spin_unlock(&inode->i_mapping->private_lock); - return page; - +done: + ret = (block < end_block) ? 1 : -ENXIO; failed: unlock_page(page); page_cache_release(page); - return NULL; + return ret; } /* @@ -999,7 +1007,6 @@ static int grow_buffers(struct block_device *bdev, sector_t block, int size) { - struct page *page; pgoff_t index; int sizebits; @@ -1023,22 +1030,14 @@ bdevname(bdev, b)); return -EIO; } - block = index << sizebits; + /* Create a page with the proper size buffers.. */ - page = grow_dev_page(bdev, block, index, size); - if (!page) - return 0; - unlock_page(page); - page_cache_release(page); - return 1; + return grow_dev_page(bdev, block, index, size, sizebits); } static struct buffer_head * __getblk_slow(struct block_device *bdev, sector_t block, int size) { - int ret; - struct buffer_head *bh; - /* Size must be multiple of hard sectorsize */ if (unlikely(size & (bdev_logical_block_size(bdev)-1) || (size < 512 || size > PAGE_SIZE))) { @@ -1051,21 +1050,20 @@ return NULL; } -retry: - bh = __find_get_block(bdev, block, size); - if (bh) - return bh; + for (;;) { + struct buffer_head *bh; + int ret; - ret = grow_buffers(bdev, block, size); - if (ret == 0) { - free_more_memory(); - goto retry; - } else if (ret > 0) { bh = __find_get_block(bdev, block, size); if (bh) return bh; + + ret = grow_buffers(bdev, block, size); + if (ret < 0) + return NULL; + if (ret == 0) + free_more_memory(); } - return NULL; } /* @@ -1321,10 +1319,6 @@ * which corresponds to the passed block_device, block and size. The * returned buffer has its reference count incremented. * - * __getblk() cannot fail - it just keeps trying. If you pass it an - * illegal block number, __getblk() will happily return a buffer_head - * which represents the non-existent block. Very weird. - * * __getblk() will lock up the machine if grow_dev_page's try_to_free_buffers() * attempt is failing. FIXME, perhaps? */ --- linux-3.5.0.orig/fs/splice.c +++ linux-3.5.0/fs/splice.c @@ -696,8 +696,10 @@ return -EINVAL; more = (sd->flags & SPLICE_F_MORE) ? MSG_MORE : 0; - if (sd->len < sd->total_len) + + if (sd->len < sd->total_len && pipe->nrbufs > 1) more |= MSG_SENDPAGE_NOTLAST; + return file->f_op->sendpage(file, buf->page, buf->offset, sd->len, &pos, more); } @@ -1090,8 +1092,8 @@ /* * Attempt to initiate a splice from pipe to file. */ -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, - loff_t *ppos, size_t len, unsigned int flags) +long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); @@ -1114,13 +1116,14 @@ return splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL(do_splice_from); /* * Attempt to initiate a splice from a file to a pipe. */ -static long do_splice_to(struct file *in, loff_t *ppos, - struct pipe_inode_info *pipe, size_t len, - unsigned int flags) +long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -1140,6 +1143,7 @@ return splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes @@ -1305,6 +1309,7 @@ return ret; } +EXPORT_SYMBOL(do_splice_direct); static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe, struct pipe_inode_info *opipe, --- linux-3.5.0.orig/fs/direct-io.c +++ linux-3.5.0/fs/direct-io.c @@ -261,9 +261,9 @@ dio->end_io(dio->iocb, offset, transferred, dio->private, ret, is_async); } else { + inode_dio_done(dio->inode); if (is_async) aio_complete(dio->iocb, ret, 0); - inode_dio_done(dio->inode); } return ret; --- linux-3.5.0.orig/fs/namespace.c +++ linux-3.5.0/fs/namespace.c @@ -50,6 +50,7 @@ * tree or hash is modified or when a vfsmount structure is modified. */ DEFINE_BRLOCK(vfsmount_lock); +EXPORT_SYMBOL(vfsmount_lock); static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry) { @@ -1327,6 +1328,24 @@ release_mounts(&umount_list); } +struct vfsmount *clone_private_mount(struct path *path) +{ + struct mount *old_mnt = real_mount(path->mnt); + struct mount *new_mnt; + + if (IS_MNT_UNBINDABLE(old_mnt)) + return ERR_PTR(-EINVAL); + + down_read(&namespace_sem); + new_mnt = clone_mnt(old_mnt, path->dentry, CL_PRIVATE); + up_read(&namespace_sem); + if (!new_mnt) + return ERR_PTR(-ENOMEM); + + return &new_mnt->mnt; +} +EXPORT_SYMBOL_GPL(clone_private_mount); + int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, struct vfsmount *root) { @@ -1341,6 +1360,7 @@ } return 0; } +EXPORT_SYMBOL(iterate_mounts); static void cleanup_group_ids(struct mount *mnt, struct mount *end) { --- linux-3.5.0.orig/fs/file_table.c +++ linux-3.5.0/fs/file_table.c @@ -35,6 +35,7 @@ }; DEFINE_LGLOCK(files_lglock); +EXPORT_SYMBOL(files_lglock); /* SLAB cache for file structures */ static struct kmem_cache *filp_cachep __read_mostly; @@ -441,6 +442,8 @@ } } +EXPORT_SYMBOL(file_sb_list_del); + #ifdef CONFIG_SMP /* --- linux-3.5.0.orig/fs/fs-writeback.c +++ linux-3.5.0/fs/fs-writeback.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "internal.h" /* @@ -68,6 +69,7 @@ { return test_bit(BDI_writeback_running, &bdi->state); } +EXPORT_SYMBOL(writeback_in_progress); static inline struct backing_dev_info *inode_to_bdi(struct inode *inode) { @@ -232,6 +234,8 @@ static void inode_sync_complete(struct inode *inode) { inode->i_state &= ~I_SYNC; + /* If inode is clean an unused, put it into LRU now... */ + inode_add_lru(inode); /* Waiters must see I_SYNC cleared before being woken up */ smp_mb(); wake_up_bit(&inode->i_state, __I_SYNC); @@ -1171,6 +1175,8 @@ if ((inode->i_state & flags) == flags) return; + trace_dirty_inode(inode, current); + if (unlikely(block_dump)) block_dump___mark_inode_dirty(inode); --- linux-3.5.0.orig/fs/block_dev.c +++ linux-3.5.0/fs/block_dev.c @@ -604,6 +604,7 @@ ihold(bdev->bd_inode); return bdev; } +EXPORT_SYMBOL(bdgrab); long nr_blockdev_pages(void) { @@ -1047,6 +1048,7 @@ mutex_lock(&bdev->bd_mutex); check_disk_size_change(disk, bdev); + bdev->bd_invalidated = 0; mutex_unlock(&bdev->bd_mutex); bdput(bdev); return ret; @@ -1085,7 +1087,9 @@ { unsigned bsize = bdev_logical_block_size(bdev); - bdev->bd_inode->i_size = size; + mutex_lock(&bdev->bd_inode->i_mutex); + i_size_write(bdev->bd_inode, size); + mutex_unlock(&bdev->bd_inode->i_mutex); while (bsize < PAGE_CACHE_SIZE) { if (size & bsize) break; --- linux-3.5.0.orig/fs/internal.h +++ linux-3.5.0/fs/internal.h @@ -106,6 +106,7 @@ * inode.c */ extern spinlock_t inode_sb_list_lock; +extern void inode_add_lru(struct inode *inode); /* * fs-writeback.c --- linux-3.5.0.orig/fs/binfmt_elf.c +++ linux-3.5.0/fs/binfmt_elf.c @@ -1696,30 +1696,19 @@ return 0; info->psinfo = kmalloc(sizeof(*info->psinfo), GFP_KERNEL); if (!info->psinfo) - goto notes_free; + return 0; info->prstatus = kmalloc(sizeof(*info->prstatus), GFP_KERNEL); if (!info->prstatus) - goto psinfo_free; + return 0; info->fpu = kmalloc(sizeof(*info->fpu), GFP_KERNEL); if (!info->fpu) - goto prstatus_free; + return 0; #ifdef ELF_CORE_COPY_XFPREGS info->xfpu = kmalloc(sizeof(*info->xfpu), GFP_KERNEL); if (!info->xfpu) - goto fpu_free; + return 0; #endif return 1; -#ifdef ELF_CORE_COPY_XFPREGS - fpu_free: - kfree(info->fpu); -#endif - prstatus_free: - kfree(info->prstatus); - psinfo_free: - kfree(info->psinfo); - notes_free: - kfree(info->notes); - return 0; } static int fill_note_info(struct elfhdr *elf, int phdrs, --- linux-3.5.0.orig/fs/Makefile +++ linux-3.5.0/fs/Makefile @@ -106,6 +106,7 @@ obj-$(CONFIG_AUTOFS4_FS) += autofs4/ obj-$(CONFIG_ADFS_FS) += adfs/ obj-$(CONFIG_FUSE_FS) += fuse/ +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs/ obj-$(CONFIG_UDF_FS) += udf/ obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/ obj-$(CONFIG_OMFS_FS) += omfs/ --- linux-3.5.0.orig/fs/Kconfig +++ linux-3.5.0/fs/Kconfig @@ -67,6 +67,7 @@ source "fs/autofs4/Kconfig" source "fs/fuse/Kconfig" +source "fs/overlayfs/Kconfig" config CUSE tristate "Character device in Userspace support" --- linux-3.5.0.orig/fs/locks.c +++ linux-3.5.0/fs/locks.c @@ -308,7 +308,7 @@ return 0; } -static int assign_type(struct file_lock *fl, int type) +static int assign_type(struct file_lock *fl, long type) { switch (type) { case F_RDLCK: @@ -445,7 +445,7 @@ /* * Initialize a lease, use the default lock manager operations */ -static int lease_init(struct file *filp, int type, struct file_lock *fl) +static int lease_init(struct file *filp, long type, struct file_lock *fl) { if (assign_type(fl, type) != 0) return -EINVAL; @@ -463,7 +463,7 @@ } /* Allocate a file_lock initialised to this type of lease */ -static struct file_lock *lease_alloc(struct file *filp, int type) +static struct file_lock *lease_alloc(struct file *filp, long type) { struct file_lock *fl = locks_alloc_lock(); int error = -ENOMEM; --- linux-3.5.0.orig/fs/compat.c +++ linux-3.5.0/fs/compat.c @@ -558,6 +558,10 @@ } *ret_pointer = iov; + ret = -EFAULT; + if (!access_ok(VERIFY_READ, uvector, nr_segs*sizeof(*uvector))) + goto out; + /* * Single unix specification: * We should -EINVAL if an element length is not >= 0 and fitting an @@ -1084,17 +1088,12 @@ if (!file->f_op) goto out; - ret = -EFAULT; - if (!access_ok(VERIFY_READ, uvector, nr_segs*sizeof(*uvector))) - goto out; - - tot_len = compat_rw_copy_check_uvector(type, uvector, nr_segs, + ret = compat_rw_copy_check_uvector(type, uvector, nr_segs, UIO_FASTIOV, iovstack, &iov); - if (tot_len == 0) { - ret = 0; + if (ret <= 0) goto out; - } + tot_len = ret; ret = rw_verify_area(type, file, pos, tot_len); if (ret < 0) goto out; @@ -1155,11 +1154,14 @@ struct file *file; int fput_needed; ssize_t ret; + loff_t pos; file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_readv(file, vec, vlen, &file->f_pos); + pos = file->f_pos; + ret = compat_readv(file, vec, vlen, &pos); + file->f_pos = pos; fput_light(file, fput_needed); return ret; } @@ -1221,11 +1223,14 @@ struct file *file; int fput_needed; ssize_t ret; + loff_t pos; file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_writev(file, vec, vlen, &file->f_pos); + pos = file->f_pos; + ret = compat_writev(file, vec, vlen, &pos); + file->f_pos = pos; fput_light(file, fput_needed); return ret; } --- linux-3.5.0.orig/fs/eventpoll.c +++ linux-3.5.0/fs/eventpoll.c @@ -1285,7 +1285,7 @@ * otherwise we might miss an event that happens between the * f_op->poll() call and the new event set registering. */ - epi->event.events = event->events; + epi->event.events = event->events; /* need barrier below */ pt._key = event->events; epi->event.data = event->data; /* protected by mtx */ if (epi->event.events & EPOLLWAKEUP) { @@ -1296,6 +1296,26 @@ } /* + * The following barrier has two effects: + * + * 1) Flush epi changes above to other CPUs. This ensures + * we do not miss events from ep_poll_callback if an + * event occurs immediately after we call f_op->poll(). + * We need this because we did not take ep->lock while + * changing epi above (but ep_poll_callback does take + * ep->lock). + * + * 2) We also need to ensure we do not miss _past_ events + * when calling f_op->poll(). This barrier also + * pairs with the barrier in wq_has_sleeper (see + * comments for wq_has_sleeper). + * + * This barrier will now guarantee ep_poll_callback or f_op->poll + * (or both) will notice the readiness of an item. + */ + smp_mb(); + + /* * Get current event bits. We can safely use the file* here because * its usage count has been increased by the caller of this function. */ --- linux-3.5.0.orig/fs/binfmt_misc.c +++ linux-3.5.0/fs/binfmt_misc.c @@ -117,10 +117,6 @@ if (!enabled) goto _ret; - retval = -ENOEXEC; - if (bprm->recursion_depth > BINPRM_MAX_RECURSION) - goto _ret; - /* to keep locking time low, we copy the interpreter string */ read_lock(&entries_lock); fmt = check_file(bprm); @@ -176,7 +172,10 @@ goto _error; bprm->argc ++; - bprm->interp = iname; /* for binfmt_script */ + /* Update interp in case binfmt_script needs it. */ + retval = bprm_change_interp(iname, bprm); + if (retval < 0) + goto _error; interp_file = open_exec (iname); retval = PTR_ERR (interp_file); @@ -197,9 +196,7 @@ if (retval < 0) goto _error; - bprm->recursion_depth++; - - retval = search_binary_handler (bprm, regs); + retval = search_binary_handler(bprm, regs); if (retval < 0) goto _error; --- linux-3.5.0.orig/fs/select.c +++ linux-3.5.0/fs/select.c @@ -345,8 +345,8 @@ struct fdtable *fdt; /* handle last in-complete long-word first */ - set = ~(~0UL << (n & (__NFDBITS-1))); - n /= __NFDBITS; + set = ~(~0UL << (n & (BITS_PER_LONG-1))); + n /= BITS_PER_LONG; fdt = files_fdtable(current->files); open_fds = fdt->open_fds + n; max = 0; @@ -373,7 +373,7 @@ max++; set >>= 1; } while (set); - max += n * __NFDBITS; + max += n * BITS_PER_LONG; } return max; @@ -435,11 +435,11 @@ in = *inp++; out = *outp++; ex = *exp++; all_bits = in | out | ex; if (all_bits == 0) { - i += __NFDBITS; + i += BITS_PER_LONG; continue; } - for (j = 0; j < __NFDBITS; ++j, ++i, bit <<= 1) { + for (j = 0; j < BITS_PER_LONG; ++j, ++i, bit <<= 1) { int fput_needed; if (i >= n) break; --- linux-3.5.0.orig/fs/binfmt_script.c +++ linux-3.5.0/fs/binfmt_script.c @@ -22,15 +22,13 @@ char interp[BINPRM_BUF_SIZE]; int retval; - if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || - (bprm->recursion_depth > BINPRM_MAX_RECURSION)) + if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!')) return -ENOEXEC; /* * This section does the #! interpretation. * Sorta complicated, but hopefully it will work. -TYT */ - bprm->recursion_depth++; allow_write_access(bprm->file); fput(bprm->file); bprm->file = NULL; @@ -82,7 +80,9 @@ retval = copy_strings_kernel(1, &i_name, bprm); if (retval) return retval; bprm->argc++; - bprm->interp = interp; + retval = bprm_change_interp(interp, bprm); + if (retval < 0) + return retval; /* * OK, now restart the process with the interpreter's dentry. --- linux-3.5.0.orig/fs/compat_ioctl.c +++ linux-3.5.0/fs/compat_ioctl.c @@ -210,6 +210,8 @@ err = get_user(palp, &up->palette); err |= get_user(length, &up->length); + if (err) + return -EFAULT; up_native = compat_alloc_user_space(sizeof(struct video_spu_palette)); err = put_user(compat_ptr(palp), &up_native->palette); --- linux-3.5.0.orig/fs/pipe.c +++ linux-3.5.0/fs/pipe.c @@ -863,6 +863,9 @@ { int ret = -ENOENT; + if (!(filp->f_mode & (FMODE_READ|FMODE_WRITE))) + return -EINVAL; + mutex_lock(&inode->i_mutex); if (inode->i_pipe) { --- linux-3.5.0.orig/fs/aio.c +++ linux-3.5.0/fs/aio.c @@ -1094,9 +1094,9 @@ spin_unlock(&info->ring_lock); out: - kunmap_atomic(ring); dprintk("leaving aio_read_evt: %d h%lu t%lu\n", ret, (unsigned long)ring->head, (unsigned long)ring->tail); + kunmap_atomic(ring); return ret; } --- linux-3.5.0.orig/fs/namei.c +++ linux-3.5.0/fs/namei.c @@ -315,6 +315,36 @@ } /** + * inode_only_permission - check access rights to a given inode only + * @inode: inode to check permissions on + * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC, ...) + * + * Uses to check read/write/execute permissions on an inode directly, we do + * not check filesystem permissions. + */ +int inode_only_permission(struct inode *inode, int mask) +{ + int retval; + + /* + * Nobody gets write access to an immutable file. + */ + if (unlikely(mask & MAY_WRITE) && IS_IMMUTABLE(inode)) + return -EACCES; + + retval = do_inode_permission(inode, mask); + if (retval) + return retval; + + retval = devcgroup_inode_permission(inode, mask); + if (retval) + return retval; + + return security_inode_permission(inode, mask); +} +EXPORT_SYMBOL(inode_only_permission); + +/** * inode_permission - check for access rights to a given inode * @inode: inode to check permission on * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC, ...) @@ -328,8 +358,6 @@ */ int inode_permission(struct inode *inode, int mask) { - int retval; - if (unlikely(mask & MAY_WRITE)) { umode_t mode = inode->i_mode; @@ -339,23 +367,9 @@ if (IS_RDONLY(inode) && (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) return -EROFS; - - /* - * Nobody gets write access to an immutable file. - */ - if (IS_IMMUTABLE(inode)) - return -EACCES; } - retval = do_inode_permission(inode, mask); - if (retval) - return retval; - - retval = devcgroup_inode_permission(inode, mask); - if (retval) - return retval; - - return security_inode_permission(inode, mask); + return inode_only_permission(inode, mask); } /** @@ -1864,10 +1878,11 @@ * needs parent already locked. Doesn't follow mounts. * SMP-safe. */ -static struct dentry *lookup_hash(struct nameidata *nd) +struct dentry *lookup_hash(struct nameidata *nd) { return __lookup_hash(&nd->last, nd->path.dentry, nd); } +EXPORT_SYMBOL(lookup_hash); /** * lookup_one_len - filesystem helper to lookup single pathname component --- linux-3.5.0.orig/fs/hfs/sysdep.c +++ linux-3.5.0/fs/hfs/sysdep.c @@ -18,7 +18,7 @@ struct inode *inode; int diff; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; --- linux-3.5.0.orig/fs/nilfs2/ioctl.c +++ linux-3.5.0/fs/nilfs2/ioctl.c @@ -182,7 +182,7 @@ if (copy_from_user(&cpmode, argp, sizeof(cpmode))) goto out; - down_read(&inode->i_sb->s_umount); + mutex_lock(&nilfs->ns_snapshot_mount_mutex); nilfs_transaction_begin(inode->i_sb, &ti, 0); ret = nilfs_cpfile_change_cpmode( @@ -192,7 +192,7 @@ else nilfs_transaction_commit(inode->i_sb); /* never fails */ - up_read(&inode->i_sb->s_umount); + mutex_unlock(&nilfs->ns_snapshot_mount_mutex); out: mnt_drop_write_file(filp); return ret; @@ -666,8 +666,11 @@ if (ret < 0) printk(KERN_ERR "NILFS: GC failed during preparation: " "cannot read source blocks: err=%d\n", ret); - else + else { + if (nilfs_sb_need_update(nilfs)) + set_nilfs_discontinued(nilfs); ret = nilfs_clean_segments(inode->i_sb, argv, kbufs); + } nilfs_remove_all_gcinodes(nilfs); clear_nilfs_gc_running(nilfs); --- linux-3.5.0.orig/fs/nilfs2/inode.c +++ linux-3.5.0/fs/nilfs2/inode.c @@ -195,13 +195,32 @@ static int nilfs_set_page_dirty(struct page *page) { - int ret = __set_page_dirty_buffers(page); + int ret = __set_page_dirty_nobuffers(page); - if (ret) { + if (page_has_buffers(page)) { struct inode *inode = page->mapping->host; - unsigned nr_dirty = 1 << (PAGE_SHIFT - inode->i_blkbits); + unsigned nr_dirty = 0; + struct buffer_head *bh, *head; - nilfs_set_file_dirty(inode, nr_dirty); + /* + * This page is locked by callers, and no other thread + * concurrently marks its buffers dirty since they are + * only dirtied through routines in fs/buffer.c in + * which call sites of mark_buffer_dirty are protected + * by page lock. + */ + bh = head = page_buffers(page); + do { + /* Do not mark hole blocks dirty */ + if (buffer_dirty(bh) || !buffer_mapped(bh)) + continue; + + set_buffer_dirty(bh); + nr_dirty++; + } while (bh = bh->b_this_page, bh != head); + + if (nr_dirty) + nilfs_set_file_dirty(inode, nr_dirty); } return ret; } --- linux-3.5.0.orig/fs/nilfs2/the_nilfs.c +++ linux-3.5.0/fs/nilfs2/the_nilfs.c @@ -76,6 +76,7 @@ nilfs->ns_bdev = bdev; atomic_set(&nilfs->ns_ndirtyblks, 0); init_rwsem(&nilfs->ns_sem); + mutex_init(&nilfs->ns_snapshot_mount_mutex); INIT_LIST_HEAD(&nilfs->ns_dirty_files); INIT_LIST_HEAD(&nilfs->ns_gc_inodes); spin_lock_init(&nilfs->ns_inode_lock); --- linux-3.5.0.orig/fs/nilfs2/super.c +++ linux-3.5.0/fs/nilfs2/super.c @@ -948,6 +948,8 @@ struct nilfs_root *root; int ret; + mutex_lock(&nilfs->ns_snapshot_mount_mutex); + down_read(&nilfs->ns_segctor_sem); ret = nilfs_cpfile_is_snapshot(nilfs->ns_cpfile, cno); up_read(&nilfs->ns_segctor_sem); @@ -972,6 +974,7 @@ ret = nilfs_get_root_dentry(s, root, root_dentry); nilfs_put_root(root); out: + mutex_unlock(&nilfs->ns_snapshot_mount_mutex); return ret; } --- linux-3.5.0.orig/fs/nilfs2/the_nilfs.h +++ linux-3.5.0/fs/nilfs2/the_nilfs.h @@ -47,6 +47,7 @@ * @ns_flags: flags * @ns_bdev: block device * @ns_sem: semaphore for shared states + * @ns_snapshot_mount_mutex: mutex to protect snapshot mounts * @ns_sbh: buffer heads of on-disk super blocks * @ns_sbp: pointers to super block data * @ns_sbwtime: previous write time of super block @@ -99,6 +100,7 @@ struct block_device *ns_bdev; struct rw_semaphore ns_sem; + struct mutex ns_snapshot_mount_mutex; /* * used for --- linux-3.5.0.orig/fs/nfsd/nfs4proc.c +++ linux-3.5.0/fs/nfsd/nfs4proc.c @@ -194,6 +194,7 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open) { struct svc_fh *resfh; + int accmode; __be32 status; resfh = kmalloc(sizeof(struct svc_fh), GFP_KERNEL); @@ -253,9 +254,10 @@ /* set reply cache */ fh_copy_shallow(&open->op_openowner->oo_owner.so_replay.rp_openfh, &resfh->fh_handle); - if (!open->op_created) - status = do_open_permission(rqstp, resfh, open, - NFSD_MAY_NOP); + accmode = NFSD_MAY_NOP; + if (open->op_created) + accmode |= NFSD_MAY_OWNER_OVERRIDE; + status = do_open_permission(rqstp, resfh, open, accmode); set_change_info(&open->op_cinfo, current_fh); fh_dup2(current_fh, resfh); out: @@ -268,6 +270,7 @@ do_open_fhandle(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open) { __be32 status; + int accmode = 0; /* We don't know the target directory, and therefore can not * set the change info @@ -281,9 +284,19 @@ open->op_truncate = (open->op_iattr.ia_valid & ATTR_SIZE) && (open->op_iattr.ia_size == 0); + /* + * In the delegation case, the client is telling us about an + * open that it *already* performed locally, some time ago. We + * should let it succeed now if possible. + * + * In the case of a CLAIM_FH open, on the other hand, the client + * may be counting on us to enforce permissions (the Linux 4.1 + * client uses this for normal opens, for example). + */ + if (open->op_claim_type == NFS4_OPEN_CLAIM_DELEG_CUR_FH) + accmode = NFSD_MAY_OWNER_OVERRIDE; - status = do_open_permission(rqstp, current_fh, open, - NFSD_MAY_OWNER_OVERRIDE); + status = do_open_permission(rqstp, current_fh, open, accmode); return status; } @@ -891,14 +904,14 @@ nfs4_lock_state(); status = nfs4_preprocess_stateid_op(cstate, stateid, WR_STATE, &filp); - if (filp) - get_file(filp); - nfs4_unlock_state(); - if (status) { + nfs4_unlock_state(); dprintk("NFSD: nfsd4_write: couldn't process stateid!\n"); return status; } + if (filp) + get_file(filp); + nfs4_unlock_state(); cnt = write->wr_buflen; write->wr_how_written = write->wr_stable_how; --- linux-3.5.0.orig/fs/nfsd/nfs4callback.c +++ linux-3.5.0/fs/nfsd/nfs4callback.c @@ -651,12 +651,12 @@ if (clp->cl_minorversion == 0) { if (!clp->cl_cred.cr_principal && - (clp->cl_flavor >= RPC_AUTH_GSS_KRB5)) + (clp->cl_cred.cr_flavor >= RPC_AUTH_GSS_KRB5)) return -EINVAL; args.client_name = clp->cl_cred.cr_principal; args.prognumber = conn->cb_prog, args.protocol = XPRT_TRANSPORT_TCP; - args.authflavor = clp->cl_flavor; + args.authflavor = clp->cl_cred.cr_flavor; clp->cl_cb_ident = conn->cb_ident; } else { if (!conn->cb_xprt) --- linux-3.5.0.orig/fs/nfsd/nfs4state.c +++ linux-3.5.0/fs/nfsd/nfs4state.c @@ -214,13 +214,7 @@ { if (atomic_dec_and_test(&fp->fi_access[oflag])) { nfs4_file_put_fd(fp, oflag); - /* - * It's also safe to get rid of the RDWR open *if* - * we no longer have need of the other kind of access - * or if we already have the other kind of open: - */ - if (fp->fi_fds[1-oflag] - || atomic_read(&fp->fi_access[1 - oflag]) == 0) + if (atomic_read(&fp->fi_access[1 - oflag]) == 0) nfs4_file_put_fd(fp, O_RDWR); } } @@ -1090,6 +1084,8 @@ } free_svc_cred(&clp->cl_cred); kfree(clp->cl_name.data); + idr_remove_all(&clp->cl_stateids); + idr_destroy(&clp->cl_stateids); kfree(clp); } @@ -1215,10 +1211,26 @@ return true; } -static int +/* + * RFC 3530 language requires clid_inuse be returned when the + * "principal" associated with a requests differs from that previously + * used. We use uid, gid's, and gss principal string as our best + * approximation. We also don't want to allow non-gss use of a client + * established using gss: in theory cr_principal should catch that + * change, but in practice cr_principal can be null even in the gss case + * since gssd doesn't always pass down a principal string. + */ +static bool is_gss_cred(struct svc_cred *cr) +{ + /* Is cr_flavor one of the gss "pseudoflavors"?: */ + return (cr->cr_flavor > RPC_AUTH_MAXFLAVOR); +} + + +static bool same_creds(struct svc_cred *cr1, struct svc_cred *cr2) { - if ((cr1->cr_flavor != cr2->cr_flavor) + if ((is_gss_cred(cr1) != is_gss_cred(cr2)) || (cr1->cr_uid != cr2->cr_uid) || (cr1->cr_gid != cr2->cr_gid) || !groups_equal(cr1->cr_group_info, cr2->cr_group_info)) @@ -1227,7 +1239,7 @@ return true; if (!cr1->cr_principal || !cr2->cr_principal) return false; - return 0 == strcmp(cr1->cr_principal, cr1->cr_principal); + return 0 == strcmp(cr1->cr_principal, cr2->cr_principal); } static void gen_clid(struct nfs4_client *clp) @@ -2315,7 +2327,7 @@ if (openowner_slab == NULL) goto out_nomem; lockowner_slab = kmem_cache_create("nfsd4_lockowners", - sizeof(struct nfs4_openowner), 0, 0, NULL); + sizeof(struct nfs4_lockowner), 0, 0, NULL); if (lockowner_slab == NULL) goto out_nomem; file_slab = kmem_cache_create("nfsd4_files", @@ -3748,6 +3760,7 @@ memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); nfsd4_close_open_stateid(stp); + release_last_closed_stateid(oo); oo->oo_last_closed_stid = stp; /* place unused nfs4_stateowners on so_close_lru list to be --- linux-3.5.0.orig/fs/nfsd/nfssvc.c +++ linux-3.5.0/fs/nfsd/nfssvc.c @@ -254,8 +254,6 @@ static void nfsd_last_thread(struct svc_serv *serv, struct net *net) { - /* When last nfsd thread exits we need to do some clean-up */ - nfsd_serv = NULL; nfsd_shutdown(); svc_rpcb_cleanup(serv, net); @@ -332,6 +330,7 @@ int nfsd_create_serv(void) { int error; + struct net *net = current->nsproxy->net_ns; WARN_ON(!mutex_is_locked(&nfsd_mutex)); if (nfsd_serv) { @@ -346,7 +345,7 @@ if (nfsd_serv == NULL) return -ENOMEM; - error = svc_bind(nfsd_serv, current->nsproxy->net_ns); + error = svc_bind(nfsd_serv, net); if (error < 0) { svc_destroy(nfsd_serv); return error; @@ -427,11 +426,7 @@ if (err) break; } - - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); - + nfsd_destroy(net); return err; } @@ -478,9 +473,7 @@ if (error < 0 && !nfsd_up_before) nfsd_shutdown(); out_destroy: - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); /* Release server */ + nfsd_destroy(net); /* Release server */ out: mutex_unlock(&nfsd_mutex); return error; @@ -563,12 +556,13 @@ nfsdstats.th_cnt --; out: - if (rqstp->rq_server->sv_nrthreads == 1) - svc_shutdown_net(rqstp->rq_server, &init_net); + rqstp->rq_server = NULL; /* Release the thread */ svc_exit_thread(rqstp); + nfsd_destroy(&init_net); + /* Release module */ mutex_unlock(&nfsd_mutex); module_put_and_exit(0); @@ -656,7 +650,7 @@ } /* Store reply in cache. */ - nfsd_cache_update(rqstp, proc->pc_cachetype, statp + 1); + nfsd_cache_update(rqstp, rqstp->rq_cachetype, statp + 1); return 1; } @@ -682,9 +676,7 @@ mutex_lock(&nfsd_mutex); /* this function really, really should have been called svc_put() */ - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); mutex_unlock(&nfsd_mutex); return ret; } --- linux-3.5.0.orig/fs/nfsd/nfsctl.c +++ linux-3.5.0/fs/nfsd/nfsctl.c @@ -673,9 +673,7 @@ err = svc_addsock(nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT); if (err < 0) { - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); return err; } @@ -744,9 +742,7 @@ svc_xprt_put(xprt); } out_err: - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); return err; } --- linux-3.5.0.orig/fs/nfsd/nfs4xdr.c +++ linux-3.5.0/fs/nfsd/nfs4xdr.c @@ -263,7 +263,7 @@ iattr->ia_valid |= ATTR_SIZE; } if (bmval[0] & FATTR4_WORD0_ACL) { - int nace; + u32 nace; struct nfs4_ace *ace; READ_BUF(4); len += 4; @@ -343,10 +343,7 @@ all 32 bits of 'nseconds'. */ READ_BUF(12); len += 12; - READ32(dummy32); - if (dummy32) - return nfserr_inval; - READ32(iattr->ia_atime.tv_sec); + READ64(iattr->ia_atime.tv_sec); READ32(iattr->ia_atime.tv_nsec); if (iattr->ia_atime.tv_nsec >= (u32)1000000000) return nfserr_inval; @@ -369,10 +366,7 @@ all 32 bits of 'nseconds'. */ READ_BUF(12); len += 12; - READ32(dummy32); - if (dummy32) - return nfserr_inval; - READ32(iattr->ia_mtime.tv_sec); + READ64(iattr->ia_mtime.tv_sec); READ32(iattr->ia_mtime.tv_nsec); if (iattr->ia_mtime.tv_nsec >= (u32)1000000000) return nfserr_inval; @@ -2259,7 +2253,7 @@ if (bmval0 & FATTR4_WORD0_CASE_INSENSITIVE) { if ((buflen -= 4) < 0) goto out_resource; - WRITE32(1); + WRITE32(0); } if (bmval0 & FATTR4_WORD0_CASE_PRESERVING) { if ((buflen -= 4) < 0) @@ -2397,8 +2391,7 @@ if (bmval1 & FATTR4_WORD1_TIME_ACCESS) { if ((buflen -= 12) < 0) goto out_resource; - WRITE32(0); - WRITE32(stat.atime.tv_sec); + WRITE64((s64)stat.atime.tv_sec); WRITE32(stat.atime.tv_nsec); } if (bmval1 & FATTR4_WORD1_TIME_DELTA) { @@ -2411,15 +2404,13 @@ if (bmval1 & FATTR4_WORD1_TIME_METADATA) { if ((buflen -= 12) < 0) goto out_resource; - WRITE32(0); - WRITE32(stat.ctime.tv_sec); + WRITE64((s64)stat.ctime.tv_sec); WRITE32(stat.ctime.tv_nsec); } if (bmval1 & FATTR4_WORD1_TIME_MODIFY) { if ((buflen -= 12) < 0) goto out_resource; - WRITE32(0); - WRITE32(stat.mtime.tv_sec); + WRITE64((s64)stat.mtime.tv_sec); WRITE32(stat.mtime.tv_nsec); } if (bmval1 & FATTR4_WORD1_MOUNTED_ON_FILEID) { @@ -2946,11 +2937,16 @@ len = maxcount; v = 0; while (len > 0) { - pn = resp->rqstp->rq_resused++; + pn = resp->rqstp->rq_resused; + if (!resp->rqstp->rq_respages[pn]) { /* ran out of pages */ + maxcount -= len; + break; + } resp->rqstp->rq_vec[v].iov_base = page_address(resp->rqstp->rq_respages[pn]); resp->rqstp->rq_vec[v].iov_len = len < PAGE_SIZE ? len : PAGE_SIZE; + resp->rqstp->rq_resused++; v++; len -= PAGE_SIZE; } @@ -2996,6 +2992,8 @@ return nfserr; if (resp->xbuf->page_len) return nfserr_resource; + if (!resp->rqstp->rq_respages[resp->rqstp->rq_resused]) + return nfserr_resource; page = page_address(resp->rqstp->rq_respages[resp->rqstp->rq_resused++]); @@ -3045,6 +3043,8 @@ return nfserr; if (resp->xbuf->page_len) return nfserr_resource; + if (!resp->rqstp->rq_respages[resp->rqstp->rq_resused]) + return nfserr_resource; RESERVE_SPACE(NFS4_VERIFIER_SIZE); savep = p; --- linux-3.5.0.orig/fs/nfsd/export.c +++ linux-3.5.0/fs/nfsd/export.c @@ -398,7 +398,7 @@ int migrated, i, err; /* listsize */ - err = get_int(mesg, &fsloc->locations_count); + err = get_uint(mesg, &fsloc->locations_count); if (err) return err; if (fsloc->locations_count > MAX_FS_LOCATIONS) @@ -456,7 +456,7 @@ return -EINVAL; for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) { - err = get_int(mesg, &f->pseudoflavor); + err = get_uint(mesg, &f->pseudoflavor); if (err) return err; /* @@ -465,7 +465,7 @@ * problem at export time instead of when a client fails * to authenticate. */ - err = get_int(mesg, &f->flags); + err = get_uint(mesg, &f->flags); if (err) return err; /* Only some flags are allowed to differ between flavors: */ --- linux-3.5.0.orig/fs/nfsd/nfsd.h +++ linux-3.5.0/fs/nfsd/nfsd.h @@ -73,6 +73,17 @@ int nfsd_get_nrthreads(int n, int *); int nfsd_set_nrthreads(int n, int *); +static inline void nfsd_destroy(struct net *net) +{ + int destroy = (nfsd_serv->sv_nrthreads == 1); + + if (destroy) + svc_shutdown_net(nfsd_serv, net); + svc_destroy(nfsd_serv); + if (destroy) + nfsd_serv = NULL; +} + #if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) #ifdef CONFIG_NFSD_V2_ACL extern struct svc_version nfsd_acl_version2; --- linux-3.5.0.orig/fs/nfsd/state.h +++ linux-3.5.0/fs/nfsd/state.h @@ -231,7 +231,6 @@ nfs4_verifier cl_verifier; /* generated by client */ time_t cl_time; /* time of last lease renewal */ struct sockaddr_storage cl_addr; /* client ipaddress */ - u32 cl_flavor; /* setclientid pseudoflavor */ struct svc_cred cl_cred; /* setclientid principal */ clientid_t cl_clientid; /* generated by server */ nfs4_verifier cl_confirm; /* generated by server */ --- linux-3.5.0.orig/fs/nfsd/nfs4idmap.c +++ linux-3.5.0/fs/nfsd/nfs4idmap.c @@ -598,7 +598,7 @@ /* Just to make sure it's null-terminated: */ memcpy(buf, name, namelen); buf[namelen] = '\0'; - ret = kstrtouint(name, 10, id); + ret = kstrtouint(buf, 10, id); return ret == 0; } --- linux-3.5.0.orig/fs/nfsd/vfs.c +++ linux-3.5.0/fs/nfsd/vfs.c @@ -1477,13 +1477,19 @@ case NFS3_CREATE_EXCLUSIVE: if ( dchild->d_inode->i_mtime.tv_sec == v_mtime && dchild->d_inode->i_atime.tv_sec == v_atime - && dchild->d_inode->i_size == 0 ) + && dchild->d_inode->i_size == 0 ) { + if (created) + *created = 1; break; + } case NFS4_CREATE_EXCLUSIVE4_1: if ( dchild->d_inode->i_mtime.tv_sec == v_mtime && dchild->d_inode->i_atime.tv_sec == v_atime - && dchild->d_inode->i_size == 0 ) + && dchild->d_inode->i_size == 0 ) { + if (created) + *created = 1; goto set_attr; + } /* fallthru */ case NFS3_CREATE_GUARDED: err = nfserr_exist; --- linux-3.5.0.orig/fs/ceph/super.h +++ linux-3.5.0/fs/ceph/super.h @@ -21,7 +21,7 @@ /* large granularity for statfs utilization stats to facilitate * large volume sizes on 32-bit machines. */ -#define CEPH_BLOCK_SHIFT 20 /* 1 MB */ +#define CEPH_BLOCK_SHIFT 22 /* 4 MB */ #define CEPH_BLOCK (1 << CEPH_BLOCK_SHIFT) #define CEPH_MOUNT_OPT_DIRSTAT (1<<4) /* `cat dirname` for stats */ @@ -847,8 +847,13 @@ extern int ceph_lock(struct file *file, int cmd, struct file_lock *fl); extern int ceph_flock(struct file *file, int cmd, struct file_lock *fl); extern void ceph_count_locks(struct inode *inode, int *p_num, int *f_num); -extern int ceph_encode_locks(struct inode *i, struct ceph_pagelist *p, - int p_locks, int f_locks); +extern int ceph_encode_locks_to_buffer(struct inode *inode, + struct ceph_filelock *flocks, + int num_fcntl_locks, + int num_flock_locks); +extern int ceph_locks_to_pagelist(struct ceph_filelock *flocks, + struct ceph_pagelist *pagelist, + int num_fcntl_locks, int num_flock_locks); extern int lock_to_ceph_filelock(struct file_lock *fl, struct ceph_filelock *c); /* debugfs.c */ --- linux-3.5.0.orig/fs/ceph/debugfs.c +++ linux-3.5.0/fs/ceph/debugfs.c @@ -201,6 +201,7 @@ int err = -ENOMEM; dout("ceph_fs_debugfs_init\n"); + BUG_ON(!fsc->client->debugfs_dir); fsc->debugfs_congestion_kb = debugfs_create_file("writeback_congestion_kb", 0600, --- linux-3.5.0.orig/fs/ceph/export.c +++ linux-3.5.0/fs/ceph/export.c @@ -90,6 +90,8 @@ *max_len = handle_length; type = 255; } + if (dentry) + dput(dentry); return type; } @@ -99,7 +101,7 @@ * FIXME: we should try harder by querying the mds for the ino. */ static struct dentry *__fh_to_dentry(struct super_block *sb, - struct ceph_nfs_fh *fh) + struct ceph_nfs_fh *fh, int fh_len) { struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc; struct inode *inode; @@ -107,6 +109,9 @@ struct ceph_vino vino; int err; + if (fh_len < sizeof(*fh) / 4) + return ERR_PTR(-ESTALE); + dout("__fh_to_dentry %llx\n", fh->ino); vino.ino = fh->ino; vino.snap = CEPH_NOSNAP; @@ -150,7 +155,7 @@ * convert connectable fh to dentry */ static struct dentry *__cfh_to_dentry(struct super_block *sb, - struct ceph_nfs_confh *cfh) + struct ceph_nfs_confh *cfh, int fh_len) { struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc; struct inode *inode; @@ -158,6 +163,9 @@ struct ceph_vino vino; int err; + if (fh_len < sizeof(*cfh) / 4) + return ERR_PTR(-ESTALE); + dout("__cfh_to_dentry %llx (%llx/%x)\n", cfh->ino, cfh->parent_ino, cfh->parent_name_hash); @@ -207,9 +215,11 @@ int fh_len, int fh_type) { if (fh_type == 1) - return __fh_to_dentry(sb, (struct ceph_nfs_fh *)fid->raw); + return __fh_to_dentry(sb, (struct ceph_nfs_fh *)fid->raw, + fh_len); else - return __cfh_to_dentry(sb, (struct ceph_nfs_confh *)fid->raw); + return __cfh_to_dentry(sb, (struct ceph_nfs_confh *)fid->raw, + fh_len); } /* @@ -230,6 +240,8 @@ if (fh_type == 1) return ERR_PTR(-ESTALE); + if (fh_len < sizeof(*cfh) / 4) + return ERR_PTR(-ESTALE); pr_debug("fh_to_parent %llx/%d\n", cfh->parent_ino, cfh->parent_name_hash); --- linux-3.5.0.orig/fs/ceph/super.c +++ linux-3.5.0/fs/ceph/super.c @@ -70,8 +70,14 @@ /* * express utilization in terms of large blocks to avoid * overflow on 32-bit machines. + * + * NOTE: for the time being, we make bsize == frsize to humor + * not-yet-ancient versions of glibc that are broken. + * Someday, we will probably want to report a real block + * size... whatever that may mean for a network file system! */ buf->f_bsize = 1 << CEPH_BLOCK_SHIFT; + buf->f_frsize = 1 << CEPH_BLOCK_SHIFT; buf->f_blocks = le64_to_cpu(st.kb) >> (CEPH_BLOCK_SHIFT-10); buf->f_bfree = le64_to_cpu(st.kb_avail) >> (CEPH_BLOCK_SHIFT-10); buf->f_bavail = le64_to_cpu(st.kb_avail) >> (CEPH_BLOCK_SHIFT-10); @@ -79,7 +85,6 @@ buf->f_files = le64_to_cpu(st.num_objects); buf->f_ffree = -1; buf->f_namelen = NAME_MAX; - buf->f_frsize = PAGE_CACHE_SIZE; /* leave fsid little-endian, regardless of host endianness */ fsid = *(u64 *)(&monmap->fsid) ^ *((u64 *)&monmap->fsid + 1); --- linux-3.5.0.orig/fs/ceph/addr.c +++ linux-3.5.0/fs/ceph/addr.c @@ -205,7 +205,7 @@ dout("readpage inode %p file %p page %p index %lu\n", inode, filp, page, page->index); err = ceph_osdc_readpages(osdc, ceph_vino(inode), &ci->i_layout, - page->index << PAGE_CACHE_SHIFT, &len, + (u64) page_offset(page), &len, ci->i_truncate_seq, ci->i_truncate_size, &page, 1, 0); if (err == -ENOENT) @@ -286,7 +286,7 @@ int nr_pages = 0; int ret; - off = page->index << PAGE_CACHE_SHIFT; + off = (u64) page_offset(page); /* count pages */ next_index = page->index; @@ -426,7 +426,7 @@ struct ceph_inode_info *ci; struct ceph_fs_client *fsc; struct ceph_osd_client *osdc; - loff_t page_off = page->index << PAGE_CACHE_SHIFT; + loff_t page_off = page_offset(page); int len = PAGE_CACHE_SIZE; loff_t i_size; int err = 0; @@ -817,8 +817,7 @@ /* ok */ if (locked_pages == 0) { /* prepare async write request */ - offset = (unsigned long long)page->index - << PAGE_CACHE_SHIFT; + offset = (u64) page_offset(page); len = wsize; req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, @@ -1180,7 +1179,7 @@ struct inode *inode = vma->vm_file->f_dentry->d_inode; struct page *page = vmf->page; struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc; - loff_t off = page->index << PAGE_CACHE_SHIFT; + loff_t off = page_offset(page); loff_t size, len; int ret; --- linux-3.5.0.orig/fs/ceph/locks.c +++ linux-3.5.0/fs/ceph/locks.c @@ -191,27 +191,23 @@ } /** - * Encode the flock and fcntl locks for the given inode into the pagelist. - * Format is: #fcntl locks, sequential fcntl locks, #flock locks, - * sequential flock locks. - * Must be called with lock_flocks() already held. - * If we encounter more of a specific lock type than expected, - * we return the value 1. + * Encode the flock and fcntl locks for the given inode into the ceph_filelock + * array. Must be called with lock_flocks() already held. + * If we encounter more of a specific lock type than expected, return -ENOSPC. */ -int ceph_encode_locks(struct inode *inode, struct ceph_pagelist *pagelist, - int num_fcntl_locks, int num_flock_locks) +int ceph_encode_locks_to_buffer(struct inode *inode, + struct ceph_filelock *flocks, + int num_fcntl_locks, int num_flock_locks) { struct file_lock *lock; - struct ceph_filelock cephlock; int err = 0; int seen_fcntl = 0; int seen_flock = 0; + int l = 0; dout("encoding %d flock and %d fcntl locks", num_flock_locks, num_fcntl_locks); - err = ceph_pagelist_append(pagelist, &num_fcntl_locks, sizeof(u32)); - if (err) - goto fail; + for (lock = inode->i_flock; lock != NULL; lock = lock->fl_next) { if (lock->fl_flags & FL_POSIX) { ++seen_fcntl; @@ -219,19 +215,12 @@ err = -ENOSPC; goto fail; } - err = lock_to_ceph_filelock(lock, &cephlock); + err = lock_to_ceph_filelock(lock, &flocks[l]); if (err) goto fail; - err = ceph_pagelist_append(pagelist, &cephlock, - sizeof(struct ceph_filelock)); + ++l; } - if (err) - goto fail; } - - err = ceph_pagelist_append(pagelist, &num_flock_locks, sizeof(u32)); - if (err) - goto fail; for (lock = inode->i_flock; lock != NULL; lock = lock->fl_next) { if (lock->fl_flags & FL_FLOCK) { ++seen_flock; @@ -239,19 +228,51 @@ err = -ENOSPC; goto fail; } - err = lock_to_ceph_filelock(lock, &cephlock); + err = lock_to_ceph_filelock(lock, &flocks[l]); if (err) goto fail; - err = ceph_pagelist_append(pagelist, &cephlock, - sizeof(struct ceph_filelock)); + ++l; } - if (err) - goto fail; } fail: return err; } +/** + * Copy the encoded flock and fcntl locks into the pagelist. + * Format is: #fcntl locks, sequential fcntl locks, #flock locks, + * sequential flock locks. + * Returns zero on success. + */ +int ceph_locks_to_pagelist(struct ceph_filelock *flocks, + struct ceph_pagelist *pagelist, + int num_fcntl_locks, int num_flock_locks) +{ + int err = 0; + __le32 nlocks; + + nlocks = cpu_to_le32(num_fcntl_locks); + err = ceph_pagelist_append(pagelist, &nlocks, sizeof(nlocks)); + if (err) + goto out_fail; + + err = ceph_pagelist_append(pagelist, flocks, + num_fcntl_locks * sizeof(*flocks)); + if (err) + goto out_fail; + + nlocks = cpu_to_le32(num_flock_locks); + err = ceph_pagelist_append(pagelist, &nlocks, sizeof(nlocks)); + if (err) + goto out_fail; + + err = ceph_pagelist_append(pagelist, + &flocks[num_fcntl_locks], + num_flock_locks * sizeof(*flocks)); +out_fail: + return err; +} + /* * Given a pointer to a lock, convert it to a ceph filelock */ --- linux-3.5.0.orig/fs/ceph/mds_client.c +++ linux-3.5.0/fs/ceph/mds_client.c @@ -335,9 +335,9 @@ atomic_read(&s->s_ref), atomic_read(&s->s_ref)-1); if (atomic_dec_and_test(&s->s_ref)) { if (s->s_auth.authorizer) - s->s_mdsc->fsc->client->monc.auth->ops->destroy_authorizer( - s->s_mdsc->fsc->client->monc.auth, - s->s_auth.authorizer); + ceph_auth_destroy_authorizer( + s->s_mdsc->fsc->client->monc.auth, + s->s_auth.authorizer); kfree(s); } } @@ -394,11 +394,7 @@ s->s_seq = 0; mutex_init(&s->s_mutex); - ceph_con_init(mdsc->fsc->client->msgr, &s->s_con); - s->s_con.private = s; - s->s_con.ops = &mds_con_ops; - s->s_con.peer_name.type = CEPH_ENTITY_TYPE_MDS; - s->s_con.peer_name.num = cpu_to_le64(mds); + ceph_con_init(&s->s_con, s, &mds_con_ops, &mdsc->fsc->client->msgr); spin_lock_init(&s->s_gen_ttl_lock); s->s_cap_gen = 0; @@ -440,7 +436,8 @@ mdsc->sessions[mds] = s; atomic_inc(&s->s_ref); /* one ref to sessions[], one to caller */ - ceph_con_open(&s->s_con, ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); + ceph_con_open(&s->s_con, CEPH_ENTITY_TYPE_MDS, mds, + ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); return s; @@ -2453,39 +2450,44 @@ if (recon_state->flock) { int num_fcntl_locks, num_flock_locks; - struct ceph_pagelist_cursor trunc_point; + struct ceph_filelock *flocks; - ceph_pagelist_set_cursor(pagelist, &trunc_point); - do { - lock_flocks(); - ceph_count_locks(inode, &num_fcntl_locks, - &num_flock_locks); - rec.v2.flock_len = (2*sizeof(u32) + - (num_fcntl_locks+num_flock_locks) * - sizeof(struct ceph_filelock)); - unlock_flocks(); - - /* pre-alloc pagelist */ - ceph_pagelist_truncate(pagelist, &trunc_point); - err = ceph_pagelist_append(pagelist, &rec, reclen); - if (!err) - err = ceph_pagelist_reserve(pagelist, - rec.v2.flock_len); - - /* encode locks */ - if (!err) { - lock_flocks(); - err = ceph_encode_locks(inode, - pagelist, - num_fcntl_locks, - num_flock_locks); - unlock_flocks(); - } - } while (err == -ENOSPC); +encode_again: + lock_flocks(); + ceph_count_locks(inode, &num_fcntl_locks, &num_flock_locks); + unlock_flocks(); + flocks = kmalloc((num_fcntl_locks+num_flock_locks) * + sizeof(struct ceph_filelock), GFP_NOFS); + if (!flocks) { + err = -ENOMEM; + goto out_free; + } + lock_flocks(); + err = ceph_encode_locks_to_buffer(inode, flocks, + num_fcntl_locks, + num_flock_locks); + unlock_flocks(); + if (err) { + kfree(flocks); + if (err == -ENOSPC) + goto encode_again; + goto out_free; + } + /* + * number of encoded locks is stable, so copy to pagelist + */ + rec.v2.flock_len = cpu_to_le32(2*sizeof(u32) + + (num_fcntl_locks+num_flock_locks) * + sizeof(struct ceph_filelock)); + err = ceph_pagelist_append(pagelist, &rec, reclen); + if (!err) + err = ceph_locks_to_pagelist(flocks, pagelist, + num_fcntl_locks, + num_flock_locks); + kfree(flocks); } else { err = ceph_pagelist_append(pagelist, &rec, reclen); } - out_free: kfree(path); out_dput: @@ -2532,6 +2534,7 @@ session->s_seq = 0; ceph_con_open(&session->s_con, + CEPH_ENTITY_TYPE_MDS, mds, ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); /* replay unsafe requests */ @@ -2636,7 +2639,8 @@ ceph_mdsmap_is_laggy(newmap, i) ? " (laggy)" : "", session_state_name(s->s_state)); - if (memcmp(ceph_mdsmap_get_addr(oldmap, i), + if (i >= newmap->m_max_mds || + memcmp(ceph_mdsmap_get_addr(oldmap, i), ceph_mdsmap_get_addr(newmap, i), sizeof(struct ceph_entity_addr))) { if (s->s_state == CEPH_MDS_SESSION_OPENING) { @@ -3409,13 +3413,17 @@ struct ceph_auth_handshake *auth = &s->s_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_MDS, - auth); + if (!auth->authorizer) { + int ret = ceph_auth_create_authorizer(ac, CEPH_ENTITY_TYPE_MDS, + auth); + if (ret) + return ERR_PTR(ret); + } else { + int ret = ceph_auth_update_authorizer(ac, CEPH_ENTITY_TYPE_MDS, + auth); if (ret) return ERR_PTR(ret); } @@ -3431,7 +3439,7 @@ struct ceph_mds_client *mdsc = s->s_mdsc; struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth; - return ac->ops->verify_authorizer_reply(ac, s->s_auth.authorizer, len); + return ceph_auth_verify_authorizer_reply(ac, s->s_auth.authorizer, len); } static int invalidate_authorizer(struct ceph_connection *con) @@ -3440,8 +3448,7 @@ struct ceph_mds_client *mdsc = s->s_mdsc; struct ceph_auth_client *ac = mdsc->fsc->client->monc.auth; - if (ac->ops->invalidate_authorizer) - ac->ops->invalidate_authorizer(ac, CEPH_ENTITY_TYPE_MDS); + ceph_auth_invalidate_authorizer(ac, CEPH_ENTITY_TYPE_MDS); return ceph_monc_validate_auth(&mdsc->fsc->client->monc); } --- linux-3.5.0.orig/fs/hugetlbfs/inode.c +++ linux-3.5.0/fs/hugetlbfs/inode.c @@ -927,9 +927,13 @@ return capable(CAP_IPC_LOCK) || in_group_p(sysctl_hugetlb_shm_group); } -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) +/* + * Note that size should be aligned to proper hugepage size in caller side, + * otherwise hugetlb_reserve_pages reserves one less hugepages than intended. + */ +struct file *hugetlb_file_setup(const char *name, size_t size, + vm_flags_t acctflag, struct user_struct **user, + int creat_flags) { int error = -ENOMEM; struct file *file; @@ -937,8 +941,6 @@ struct path path; struct dentry *root; struct qstr quick_string; - struct hstate *hstate; - unsigned long num_pages; *user = NULL; if (!hugetlbfs_vfsmount) @@ -972,12 +974,10 @@ if (!inode) goto out_dentry; - hstate = hstate_inode(inode); - size += addr & ~huge_page_mask(hstate); - num_pages = ALIGN(size, huge_page_size(hstate)) >> - huge_page_shift(hstate); error = -ENOMEM; - if (hugetlb_reserve_pages(inode, 0, num_pages, NULL, acctflag)) + if (hugetlb_reserve_pages(inode, 0, + size >> huge_page_shift(hstate_inode(inode)), NULL, + acctflag)) goto out_inode; d_instantiate(path.dentry, inode); --- linux-3.5.0.orig/fs/proc/stat.c +++ linux-3.5.0/fs/proc/stat.c @@ -45,10 +45,13 @@ static u64 get_idle_time(int cpu) { - u64 idle, idle_time = get_cpu_idle_time_us(cpu, NULL); + u64 idle, idle_time = -1ULL; + + if (cpu_online(cpu)) + idle_time = get_cpu_idle_time_us(cpu, NULL); if (idle_time == -1ULL) - /* !NO_HZ so we can rely on cpustat.idle */ + /* !NO_HZ or cpu offline so we can rely on cpustat.idle */ idle = kcpustat_cpu(cpu).cpustat[CPUTIME_IDLE]; else idle = usecs_to_cputime64(idle_time); @@ -58,10 +61,13 @@ static u64 get_iowait_time(int cpu) { - u64 iowait, iowait_time = get_cpu_iowait_time_us(cpu, NULL); + u64 iowait, iowait_time = -1ULL; + + if (cpu_online(cpu)) + iowait_time = get_cpu_iowait_time_us(cpu, NULL); if (iowait_time == -1ULL) - /* !NO_HZ so we can rely on cpustat.iowait */ + /* !NO_HZ or cpu offline so we can rely on cpustat.iowait */ iowait = kcpustat_cpu(cpu).cpustat[CPUTIME_IOWAIT]; else iowait = usecs_to_cputime64(iowait_time); --- linux-3.5.0.orig/fs/proc/inode.c +++ linux-3.5.0/fs/proc/inode.c @@ -443,12 +443,10 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) { - struct inode * inode; + struct inode *inode = new_inode_pseudo(sb); - inode = iget_locked(sb, de->low_ino); - if (!inode) - return NULL; - if (inode->i_state & I_NEW) { + if (inode) { + inode->i_ino = de->low_ino; inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; PROC_I(inode)->fd = 0; PROC_I(inode)->pde = de; @@ -477,9 +475,7 @@ inode->i_fop = de->proc_fops; } } - unlock_new_inode(inode); - } else - pde_put(de); + } return inode; } --- linux-3.5.0.orig/fs/proc/proc_sysctl.c +++ linux-3.5.0/fs/proc/proc_sysctl.c @@ -462,9 +462,6 @@ err = ERR_PTR(-ENOMEM); inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p); - if (h) - sysctl_head_finish(h); - if (!inode) goto out; @@ -473,6 +470,8 @@ d_add(dentry, inode); out: + if (h) + sysctl_head_finish(h); sysctl_head_finish(head); return err; } @@ -796,7 +795,7 @@ static int proc_sys_revalidate(struct dentry *dentry, struct nameidata *nd) { - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; return !PROC_I(dentry->d_inode)->sysctl->unregistering; } --- linux-3.5.0.orig/fs/proc/Makefile +++ linux-3.5.0/fs/proc/Makefile @@ -28,3 +28,4 @@ proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o proc-$(CONFIG_PRINTK) += kmsg.o proc-$(CONFIG_PROC_PAGE_MONITOR) += page.o +proc-y += version_signature.o --- linux-3.5.0.orig/fs/proc/version_signature.c +++ linux-3.5.0/fs/proc/version_signature.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include + +static int version_signature_proc_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%s\n", CONFIG_VERSION_SIGNATURE); + return 0; +} + +static int version_signature_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, version_signature_proc_show, NULL); +} + +static const struct file_operations version_signature_proc_fops = { + .open = version_signature_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init proc_version_signature_init(void) +{ + proc_create("version_signature", 0, NULL, &version_signature_proc_fops); + return 0; +} +module_init(proc_version_signature_init); --- linux-3.5.0.orig/fs/proc/array.c +++ linux-3.5.0/fs/proc/array.c @@ -212,7 +212,7 @@ group_info = cred->group_info; task_unlock(p); - for (g = 0; g < min(group_info->ngroups, NGROUPS_SMALL); g++) + for (g = 0; g < group_info->ngroups; g++) seq_printf(m, "%d ", from_kgid_munged(user_ns, GROUP_AT(group_info, g))); put_cred(cred); --- linux-3.5.0.orig/fs/proc/page.c +++ linux-3.5.0/fs/proc/page.c @@ -115,7 +115,13 @@ u |= 1 << KPF_COMPOUND_TAIL; if (PageHuge(page)) u |= 1 << KPF_HUGE; - else if (PageTransCompound(page)) + /* + * PageTransCompound can be true for non-huge compound pages (slab + * pages or pages allocated by drivers with __GFP_COMP) because it + * just checks PG_head/PG_tail, so we need to check PageLRU to make + * sure a given page is a thp, not a non-huge compound page. + */ + else if (PageTransCompound(page) && PageLRU(compound_trans_head(page))) u |= 1 << KPF_THP; /* --- linux-3.5.0.orig/fs/proc/kmsg.c +++ linux-3.5.0/fs/proc/kmsg.c @@ -21,12 +21,12 @@ static int kmsg_open(struct inode * inode, struct file * file) { - return do_syslog(SYSLOG_ACTION_OPEN, NULL, 0, SYSLOG_FROM_FILE); + return do_syslog(SYSLOG_ACTION_OPEN, NULL, 0, SYSLOG_FROM_PROC); } static int kmsg_release(struct inode * inode, struct file * file) { - (void) do_syslog(SYSLOG_ACTION_CLOSE, NULL, 0, SYSLOG_FROM_FILE); + (void) do_syslog(SYSLOG_ACTION_CLOSE, NULL, 0, SYSLOG_FROM_PROC); return 0; } @@ -34,15 +34,15 @@ size_t count, loff_t *ppos) { if ((file->f_flags & O_NONBLOCK) && - !do_syslog(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0, SYSLOG_FROM_FILE)) + !do_syslog(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0, SYSLOG_FROM_PROC)) return -EAGAIN; - return do_syslog(SYSLOG_ACTION_READ, buf, count, SYSLOG_FROM_FILE); + return do_syslog(SYSLOG_ACTION_READ, buf, count, SYSLOG_FROM_PROC); } static unsigned int kmsg_poll(struct file *file, poll_table *wait) { poll_wait(file, &log_wait, wait); - if (do_syslog(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0, SYSLOG_FROM_FILE)) + if (do_syslog(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0, SYSLOG_FROM_PROC)) return POLLIN | POLLRDNORM; return 0; } --- linux-3.5.0.orig/fs/ext4/inode.c +++ linux-3.5.0/fs/ext4/inode.c @@ -55,21 +55,21 @@ __u16 csum_hi = 0; __u32 csum; - csum_lo = raw->i_checksum_lo; + csum_lo = le16_to_cpu(raw->i_checksum_lo); raw->i_checksum_lo = 0; if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE && EXT4_FITS_IN_INODE(raw, ei, i_checksum_hi)) { - csum_hi = raw->i_checksum_hi; + csum_hi = le16_to_cpu(raw->i_checksum_hi); raw->i_checksum_hi = 0; } csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)raw, EXT4_INODE_SIZE(inode->i_sb)); - raw->i_checksum_lo = csum_lo; + raw->i_checksum_lo = cpu_to_le16(csum_lo); if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE && EXT4_FITS_IN_INODE(raw, ei, i_checksum_hi)) - raw->i_checksum_hi = csum_hi; + raw->i_checksum_hi = cpu_to_le16(csum_hi); return csum; } @@ -211,12 +211,12 @@ * don't use page cache. */ if (ext4_should_journal_data(inode) && - (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode))) { + (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode)) && + inode->i_ino != EXT4_JOURNAL_INO) { journal_t *journal = EXT4_SB(inode->i_sb)->s_journal; tid_t commit_tid = EXT4_I(inode)->i_datasync_tid; - jbd2_log_start_commit(journal, commit_tid); - jbd2_log_wait_commit(journal, commit_tid); + jbd2_complete_transaction(journal, commit_tid); filemap_write_and_wait(&inode->i_data); } truncate_inode_pages(&inode->i_data, 0); @@ -346,6 +346,15 @@ used = ei->i_reserved_data_blocks; } + if (unlikely(ei->i_allocated_meta_blocks > ei->i_reserved_meta_blocks)) { + ext4_msg(inode->i_sb, KERN_NOTICE, "%s: ino %lu, allocated %d " + "with only %d reserved metadata blocks\n", __func__, + inode->i_ino, ei->i_allocated_meta_blocks, + ei->i_reserved_meta_blocks); + WARN_ON(1); + ei->i_allocated_meta_blocks = ei->i_reserved_meta_blocks; + } + /* Update per-inode reservations */ ei->i_reserved_data_blocks -= used; ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks; @@ -721,7 +730,7 @@ bh = sb_getblk(inode->i_sb, map.m_pblk); if (!bh) { - *errp = -EIO; + *errp = -ENOMEM; return NULL; } if (map.m_flags & EXT4_MAP_NEW) { @@ -1171,6 +1180,17 @@ struct ext4_inode_info *ei = EXT4_I(inode); unsigned int md_needed; int ret; + ext4_lblk_t save_last_lblock; + int save_len; + + /* + * We will charge metadata quota at writeout time; this saves + * us from metadata over-estimation, though we may go over by + * a small amount in the end. Here we just reserve for data. + */ + ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1)); + if (ret) + return ret; /* * recalculate the amount of metadata blocks to reserve @@ -1179,32 +1199,31 @@ */ repeat: spin_lock(&ei->i_block_reservation_lock); + /* + * ext4_calc_metadata_amount() has side effects, which we have + * to be prepared undo if we fail to claim space. + */ + save_len = ei->i_da_metadata_calc_len; + save_last_lblock = ei->i_da_metadata_calc_last_lblock; md_needed = EXT4_NUM_B2C(sbi, ext4_calc_metadata_amount(inode, lblock)); trace_ext4_da_reserve_space(inode, md_needed); - spin_unlock(&ei->i_block_reservation_lock); /* - * We will charge metadata quota at writeout time; this saves - * us from metadata over-estimation, though we may go over by - * a small amount in the end. Here we just reserve for data. - */ - ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1)); - if (ret) - return ret; - /* * We do still charge estimated metadata to the sb though; * we cannot afford to run out of free blocks. */ if (ext4_claim_free_clusters(sbi, md_needed + 1, 0)) { - dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); + ei->i_da_metadata_calc_len = save_len; + ei->i_da_metadata_calc_last_lblock = save_last_lblock; + spin_unlock(&ei->i_block_reservation_lock); if (ext4_should_retry_alloc(inode->i_sb, &retries)) { yield(); goto repeat; } + dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); return -ENOSPC; } - spin_lock(&ei->i_block_reservation_lock); ei->i_reserved_data_blocks++; ei->i_reserved_meta_blocks += md_needed; spin_unlock(&ei->i_block_reservation_lock); @@ -1472,6 +1491,8 @@ index = mpd->first_page; end = mpd->next_page - 1; + + pagevec_init(&pvec, 0); while (index <= end) { nr_pages = pagevec_lookup(&pvec, mapping, index, PAGEVEC_SIZE); if (nr_pages == 0) @@ -2434,6 +2455,16 @@ free_blocks = EXT4_C2B(sbi, percpu_counter_read_positive(&sbi->s_freeclusters_counter)); dirty_blocks = percpu_counter_read_positive(&sbi->s_dirtyclusters_counter); + /* + * Start pushing delalloc when 1/2 of free blocks are dirty. + */ + if (dirty_blocks && (free_blocks < 2 * dirty_blocks) && + !writeback_in_progress(sb->s_bdi) && + down_read_trylock(&sb->s_umount)) { + writeback_inodes_sb(sb, WB_REASON_FS_FREE_SPACE); + up_read(&sb->s_umount); + } + if (2 * free_blocks < 3 * dirty_blocks || free_blocks < (dirty_blocks + EXT4_FREECLUSTERS_WATERMARK)) { /* @@ -2442,13 +2473,6 @@ */ return 1; } - /* - * Even if we don't switch but are nearing capacity, - * start pushing delalloc when 1/2 of free blocks are dirty. - */ - if (free_blocks < 2 * dirty_blocks) - writeback_inodes_sb_if_idle(sb, WB_REASON_FS_FREE_SPACE); - return 0; } @@ -2843,9 +2867,9 @@ if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) { ext4_free_io_end(io_end); out: + inode_dio_done(inode); if (is_async) aio_complete(iocb, ret, 0); - inode_dio_done(inode); return; } @@ -3504,11 +3528,8 @@ iloc->offset = (inode_offset % inodes_per_block) * EXT4_INODE_SIZE(sb); bh = sb_getblk(sb, block); - if (!bh) { - EXT4_ERROR_INODE_BLOCK(inode, block, - "unable to read itable block"); - return -EIO; - } + if (!bh) + return -ENOMEM; if (!buffer_uptodate(bh)) { lock_buffer(bh); @@ -3966,6 +3987,7 @@ struct ext4_inode_info *ei = EXT4_I(inode); struct buffer_head *bh = iloc->bh; int err = 0, rc, block; + int need_datasync = 0; uid_t i_uid; gid_t i_gid; @@ -4016,7 +4038,10 @@ raw_inode->i_file_acl_high = cpu_to_le16(ei->i_file_acl >> 32); raw_inode->i_file_acl_lo = cpu_to_le32(ei->i_file_acl); - ext4_isize_set(raw_inode, ei->i_disksize); + if (ei->i_disksize != ext4_isize(raw_inode)) { + ext4_isize_set(raw_inode, ei->i_disksize); + need_datasync = 1; + } if (ei->i_disksize > 0x7fffffffULL) { struct super_block *sb = inode->i_sb; if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, @@ -4069,7 +4094,7 @@ err = rc; ext4_clear_inode_state(inode, EXT4_STATE_NEW); - ext4_update_inode_fsync_trans(handle, inode, 0); + ext4_update_inode_fsync_trans(handle, inode, need_datasync); out_brelse: brelse(bh); ext4_std_error(inode->i_sb, err); --- linux-3.5.0.orig/fs/ext4/resize.c +++ linux-3.5.0/fs/ext4/resize.c @@ -200,8 +200,11 @@ * be a partial of a flex group. * * @sb: super block of fs to which the groups belongs + * + * Returns 0 on a successful allocation of the metadata blocks in the + * block group. */ -static void ext4_alloc_group_tables(struct super_block *sb, +static int ext4_alloc_group_tables(struct super_block *sb, struct ext4_new_flex_group_data *flex_gd, int flexbg_size) { @@ -226,6 +229,8 @@ (last_group & ~(flexbg_size - 1)))); next_group: group = group_data[0].group; + if (src_group >= group_data[0].group + flex_gd->count) + return -ENOSPC; start_blk = ext4_group_first_block_no(sb, src_group); last_blk = start_blk + group_data[src_group - group].blocks_count; @@ -235,7 +240,6 @@ start_blk += overhead; - BUG_ON(src_group >= group_data[0].group + flex_gd->count); /* We collect contiguous blocks as much as possible. */ src_group++; for (; src_group <= last_group; src_group++) @@ -300,6 +304,7 @@ group_data[i].free_blocks_count); } } + return 0; } static struct buffer_head *bclean(handle_t *handle, struct super_block *sb, @@ -310,7 +315,7 @@ bh = sb_getblk(sb, blk); if (!bh) - return ERR_PTR(-EIO); + return ERR_PTR(-ENOMEM); if ((err = ext4_journal_get_write_access(handle, bh))) { brelse(bh); bh = ERR_PTR(err); @@ -387,7 +392,7 @@ bh = sb_getblk(sb, flex_gd->groups[group].block_bitmap); if (!bh) - return -EIO; + return -ENOMEM; err = ext4_journal_get_write_access(handle, bh); if (err) @@ -451,6 +456,9 @@ gdblocks = ext4_bg_num_gdb(sb, group); start = ext4_group_first_block_no(sb, group); + if (!ext4_bg_has_super(sb, group)) + goto handle_itb; + /* Copy all of the GDT blocks into the backup in this group */ for (j = 0, block = start + 1; j < gdblocks; j++, block++) { struct buffer_head *gdb; @@ -462,7 +470,7 @@ gdb = sb_getblk(sb, block); if (!gdb) { - err = -EIO; + err = -ENOMEM; goto out; } @@ -493,6 +501,7 @@ goto out; } +handle_itb: /* Initialize group tables of the grop @group */ if (!(bg_flags[i] & EXT4_BG_INODE_ZEROED)) goto handle_bb; @@ -970,8 +979,6 @@ goto exit_err; } - ext4_superblock_csum_set(sb, (struct ext4_super_block *)data); - while ((group = ext4_list_backups(sb, &three, &five, &seven)) < last) { struct buffer_head *bh; @@ -984,7 +991,7 @@ bh = sb_getblk(sb, group * bpg + blk_off); if (!bh) { - err = -EIO; + err = -ENOMEM; break; } ext4_debug("update metadata backup %#04lx\n", @@ -1112,8 +1119,7 @@ bh = ext4_get_bitmap(sb, group_data->block_bitmap); if (!bh) return -EIO; - ext4_block_bitmap_csum_set(sb, group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, group, gdp, bh); brelse(bh); return 0; @@ -1159,7 +1165,7 @@ ext4_inode_table_set(sb, gdp, group_data->inode_table); ext4_free_group_clusters_set(sb, gdp, - EXT4_B2C(sbi, group_data->free_blocks_count)); + EXT4_NUM_B2C(sbi, group_data->free_blocks_count)); ext4_free_inodes_set(sb, gdp, EXT4_INODES_PER_GROUP(sb)); gdp->bg_flags = cpu_to_le16(*bg_flags); ext4_group_desc_csum_set(sb, group, gdp); @@ -1197,7 +1203,7 @@ struct ext4_new_group_data *group_data = flex_gd->groups; struct ext4_sb_info *sbi = EXT4_SB(sb); struct ext4_super_block *es = sbi->s_es; - int i; + int i, ret; BUG_ON(flex_gd->count == 0 || group_data == NULL); /* @@ -1249,6 +1255,8 @@ /* Update the global fs size fields */ sbi->s_groups_count += flex_gd->count; + sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count, + (EXT4_MAX_BLOCK_FILE_PHYS / EXT4_BLOCKS_PER_GROUP(sb))); /* Update the reserved block counts only once the new group is * active. */ @@ -1257,7 +1265,7 @@ /* Update the free space counts */ percpu_counter_add(&sbi->s_freeclusters_counter, - EXT4_B2C(sbi, free_blocks)); + EXT4_NUM_B2C(sbi, free_blocks)); percpu_counter_add(&sbi->s_freeinodes_counter, EXT4_INODES_PER_GROUP(sb) * flex_gd->count); @@ -1266,12 +1274,17 @@ sbi->s_log_groups_per_flex) { ext4_group_t flex_group; flex_group = ext4_flex_group(sbi, group_data[0].group); - atomic_add(EXT4_B2C(sbi, free_blocks), - &sbi->s_flex_groups[flex_group].free_clusters); + atomic64_add(EXT4_NUM_B2C(sbi, free_blocks), + &sbi->s_flex_groups[flex_group].free_clusters); atomic_add(EXT4_INODES_PER_GROUP(sb) * flex_gd->count, &sbi->s_flex_groups[flex_group].free_inodes); } + /* + * Update the fs overhead information + */ + ext4_calculate_overhead(sb); + if (test_opt(sb, DEBUG)) printk(KERN_DEBUG "EXT4-fs: added group %u:" "%llu blocks(%llu free %llu reserved)\n", flex_gd->count, @@ -1344,13 +1357,15 @@ err = err2; if (!err) { - int i; + int gdb_num = group / EXT4_DESC_PER_BLOCK(sb); + int gdb_num_end = ((group + flex_gd->count - 1) / + EXT4_DESC_PER_BLOCK(sb)); + update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, sizeof(struct ext4_super_block)); - for (i = 0; i < flex_gd->count; i++, group++) { + for (; gdb_num <= gdb_num_end; gdb_num++) { struct buffer_head *gdb_bh; - int gdb_num; - gdb_num = group / EXT4_BLOCKS_PER_GROUP(sb); + gdb_bh = sbi->s_group_desc[gdb_num]; update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data, gdb_bh->b_size); @@ -1665,6 +1680,10 @@ return 0; ext4_get_group_no_and_offset(sb, n_blocks_count - 1, &n_group, &offset); + if (n_group > (0xFFFFFFFFUL / EXT4_INODES_PER_GROUP(sb))) { + ext4_warning(sb, "resize would cause inodes_count overflow"); + return -EINVAL; + } ext4_get_group_no_and_offset(sb, o_blocks_count - 1, &o_group, &offset); n_desc_blocks = (n_group + EXT4_DESC_PER_BLOCK(sb)) / @@ -1724,7 +1743,8 @@ */ while (ext4_setup_next_flex_gd(sb, flex_gd, n_blocks_count, flexbg_size)) { - ext4_alloc_group_tables(sb, flex_gd, flexbg_size); + if (ext4_alloc_group_tables(sb, flex_gd, flexbg_size) != 0) + break; err = ext4_flex_group_add(sb, resize_inode, flex_gd); if (unlikely(err)) break; --- linux-3.5.0.orig/fs/ext4/ialloc.c +++ linux-3.5.0/fs/ext4/ialloc.c @@ -325,8 +325,8 @@ } struct orlov_stats { + __u64 free_clusters; __u32 free_inodes; - __u32 free_clusters; __u32 used_dirs; }; @@ -343,7 +343,7 @@ if (flex_size > 1) { stats->free_inodes = atomic_read(&flex_group[g].free_inodes); - stats->free_clusters = atomic_read(&flex_group[g].free_clusters); + stats->free_clusters = atomic64_read(&flex_group[g].free_clusters); stats->used_dirs = atomic_read(&flex_group[g].used_dirs); return; } @@ -717,6 +717,10 @@ "inode=%lu", ino + 1); continue; } + BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); + err = ext4_journal_get_write_access(handle, inode_bitmap_bh); + if (err) + goto fail; ext4_lock_group(sb, group); ret2 = ext4_test_and_set_bit(ino, inode_bitmap_bh->b_data); ext4_unlock_group(sb, group); @@ -730,6 +734,11 @@ goto out; got: + BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); + err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); + if (err) + goto fail; + /* We may have to initialize the block bitmap if it isn't already */ if (ext4_has_group_desc_csum(sb) && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) { @@ -745,7 +754,6 @@ BUFFER_TRACE(block_bitmap_bh, "dirty block bitmap"); err = ext4_handle_dirty_metadata(handle, NULL, block_bitmap_bh); - brelse(block_bitmap_bh); /* recheck and clear flag under lock if we still need to */ ext4_lock_group(sb, group); @@ -754,22 +762,16 @@ ext4_free_group_clusters_set(sb, gdp, ext4_free_clusters_after_init(sb, group, gdp)); ext4_block_bitmap_csum_set(sb, group, gdp, - block_bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / - 8); + block_bitmap_bh); ext4_group_desc_csum_set(sb, group, gdp); } ext4_unlock_group(sb, group); + brelse(block_bitmap_bh); if (err) goto fail; } - BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); - err = ext4_journal_get_write_access(handle, inode_bitmap_bh); - if (err) - goto fail; - BUFFER_TRACE(group_desc_bh, "get_write_access"); err = ext4_journal_get_write_access(handle, group_desc_bh); if (err) @@ -817,11 +819,6 @@ } ext4_unlock_group(sb, group); - BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); - err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); - if (err) - goto fail; - BUFFER_TRACE(group_desc_bh, "call ext4_handle_dirty_metadata"); err = ext4_handle_dirty_metadata(handle, NULL, group_desc_bh); if (err) @@ -1054,7 +1051,8 @@ if (!bitmap_bh) continue; - x = ext4_count_free(bitmap_bh, EXT4_INODES_PER_GROUP(sb) / 8); + x = ext4_count_free(bitmap_bh->b_data, + EXT4_INODES_PER_GROUP(sb) / 8); printk(KERN_DEBUG "group %lu: stored = %d, counted = %lu\n", (unsigned long) i, ext4_free_inodes_count(sb, gdp), x); bitmap_count += x; --- linux-3.5.0.orig/fs/ext4/page-io.c +++ linux-3.5.0/fs/ext4/page-io.c @@ -106,15 +106,13 @@ "(inode %lu, offset %llu, size %zd, error %d)", inode->i_ino, offset, size, ret); } - - if (io->iocb) - aio_complete(io->iocb, io->result, 0); - - if (io->flag & EXT4_IO_END_DIRECT) - inode_dio_done(inode); /* Wake up anyone waiting on unwritten extent conversion */ if (atomic_dec_and_test(&EXT4_I(inode)->i_aiodio_unwritten)) wake_up_all(ext4_ioend_wq(io->inode)); + if (io->flag & EXT4_IO_END_DIRECT) + inode_dio_done(inode); + if (io->iocb) + aio_complete(io->iocb, io->result, 0); return ret; } --- linux-3.5.0.orig/fs/ext4/move_extent.c +++ linux-3.5.0/fs/ext4/move_extent.c @@ -141,55 +141,21 @@ } /** - * mext_check_null_inode - NULL check for two inodes - * - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. - */ -static int -mext_check_null_inode(struct inode *inode1, struct inode *inode2, - const char *function, unsigned int line) -{ - int ret = 0; - - if (inode1 == NULL) { - __ext4_error(inode2->i_sb, function, line, - "Both inodes should not be NULL: " - "inode1 NULL inode2 %lu", inode2->i_ino); - ret = -EIO; - } else if (inode2 == NULL) { - __ext4_error(inode1->i_sb, function, line, - "Both inodes should not be NULL: " - "inode1 %lu inode2 NULL", inode1->i_ino); - ret = -EIO; - } - return ret; -} - -/** * double_down_write_data_sem - Acquire two inodes' write lock of i_data_sem * - * @orig_inode: original inode structure - * @donor_inode: donor inode structure - * Acquire write lock of i_data_sem of the two inodes (orig and donor) by - * i_ino order. + * Acquire write lock of i_data_sem of the two inodes */ static void -double_down_write_data_sem(struct inode *orig_inode, struct inode *donor_inode) +double_down_write_data_sem(struct inode *first, struct inode *second) { - struct inode *first = orig_inode, *second = donor_inode; + if (first < second) { + down_write(&EXT4_I(first)->i_data_sem); + down_write_nested(&EXT4_I(second)->i_data_sem, SINGLE_DEPTH_NESTING); + } else { + down_write(&EXT4_I(second)->i_data_sem); + down_write_nested(&EXT4_I(first)->i_data_sem, SINGLE_DEPTH_NESTING); - /* - * Use the inode number to provide the stable locking order instead - * of its address, because the C language doesn't guarantee you can - * compare pointers that don't come from the same array. - */ - if (donor_inode->i_ino < orig_inode->i_ino) { - first = donor_inode; - second = orig_inode; } - - down_write(&EXT4_I(first)->i_data_sem); - down_write_nested(&EXT4_I(second)->i_data_sem, SINGLE_DEPTH_NESTING); } /** @@ -969,14 +935,6 @@ return -EINVAL; } - /* Files should be in the same ext4 FS */ - if (orig_inode->i_sb != donor_inode->i_sb) { - ext4_debug("ext4 move extent: The argument files " - "should be in same FS [ino:orig %lu, donor %lu]\n", - orig_inode->i_ino, donor_inode->i_ino); - return -EINVAL; - } - /* Ext4 move extent supports only extent based file */ if (!(ext4_test_inode_flag(orig_inode, EXT4_INODE_EXTENTS))) { ext4_debug("ext4 move extent: orig file is not extents " @@ -1072,35 +1030,19 @@ * @inode1: the inode structure * @inode2: the inode structure * - * Lock two inodes' i_mutex by i_ino order. - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. + * Lock two inodes' i_mutex */ -static int +static void mext_inode_double_lock(struct inode *inode1, struct inode *inode2) { - int ret = 0; - - BUG_ON(inode1 == NULL && inode2 == NULL); - - ret = mext_check_null_inode(inode1, inode2, __func__, __LINE__); - if (ret < 0) - goto out; - - if (inode1 == inode2) { - mutex_lock(&inode1->i_mutex); - goto out; - } - - if (inode1->i_ino < inode2->i_ino) { + BUG_ON(inode1 == inode2); + if (inode1 < inode2) { mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); } else { mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD); } - -out: - return ret; } /** @@ -1109,28 +1051,13 @@ * @inode1: the inode that is released first * @inode2: the inode that is released second * - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. */ -static int +static void mext_inode_double_unlock(struct inode *inode1, struct inode *inode2) { - int ret = 0; - - BUG_ON(inode1 == NULL && inode2 == NULL); - - ret = mext_check_null_inode(inode1, inode2, __func__, __LINE__); - if (ret < 0) - goto out; - - if (inode1) - mutex_unlock(&inode1->i_mutex); - - if (inode2 && inode2 != inode1) - mutex_unlock(&inode2->i_mutex); - -out: - return ret; + mutex_unlock(&inode1->i_mutex); + mutex_unlock(&inode2->i_mutex); } /** @@ -1187,16 +1114,23 @@ ext4_lblk_t block_end, seq_start, add_blocks, file_end, seq_blocks = 0; ext4_lblk_t rest_blocks; pgoff_t orig_page_offset = 0, seq_end_page; - int ret1, ret2, depth, last_extent = 0; + int ret, depth, last_extent = 0; int blocks_per_page = PAGE_CACHE_SIZE >> orig_inode->i_blkbits; int data_offset_in_page; int block_len_in_page; int uninit; - /* orig and donor should be different file */ - if (orig_inode->i_ino == donor_inode->i_ino) { + if (orig_inode->i_sb != donor_inode->i_sb) { + ext4_debug("ext4 move extent: The argument files " + "should be in same FS [ino:orig %lu, donor %lu]\n", + orig_inode->i_ino, donor_inode->i_ino); + return -EINVAL; + } + + /* orig and donor should be different inodes */ + if (orig_inode == donor_inode) { ext4_debug("ext4 move extent: The argument files should not " - "be same file [ino:orig %lu, donor %lu]\n", + "be same inode [ino:orig %lu, donor %lu]\n", orig_inode->i_ino, donor_inode->i_ino); return -EINVAL; } @@ -1208,18 +1142,21 @@ orig_inode->i_ino, donor_inode->i_ino); return -EINVAL; } - + /* TODO: This is non obvious task to swap blocks for inodes with full + jornaling enabled */ + if (ext4_should_journal_data(orig_inode) || + ext4_should_journal_data(donor_inode)) { + return -EINVAL; + } /* Protect orig and donor inodes against a truncate */ - ret1 = mext_inode_double_lock(orig_inode, donor_inode); - if (ret1 < 0) - return ret1; + mext_inode_double_lock(orig_inode, donor_inode); /* Protect extent tree against block allocations via delalloc */ double_down_write_data_sem(orig_inode, donor_inode); /* Check the filesystem environment whether move_extent can be done */ - ret1 = mext_check_arguments(orig_inode, donor_inode, orig_start, + ret = mext_check_arguments(orig_inode, donor_inode, orig_start, donor_start, &len); - if (ret1) + if (ret) goto out; file_end = (i_size_read(orig_inode) - 1) >> orig_inode->i_blkbits; @@ -1227,13 +1164,13 @@ if (file_end < block_end) len -= block_end - file_end; - ret1 = get_ext_path(orig_inode, block_start, &orig_path); - if (ret1) + ret = get_ext_path(orig_inode, block_start, &orig_path); + if (ret) goto out; /* Get path structure to check the hole */ - ret1 = get_ext_path(orig_inode, block_start, &holecheck_path); - if (ret1) + ret = get_ext_path(orig_inode, block_start, &holecheck_path); + if (ret) goto out; depth = ext_depth(orig_inode); @@ -1252,13 +1189,13 @@ last_extent = mext_next_extent(orig_inode, holecheck_path, &ext_cur); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; goto out; } last_extent = mext_next_extent(orig_inode, orig_path, &ext_dummy); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; goto out; } seq_start = le32_to_cpu(ext_cur->ee_block); @@ -1272,7 +1209,7 @@ if (le32_to_cpu(ext_cur->ee_block) > block_end) { ext4_debug("ext4 move extent: The specified range of file " "may be the hole\n"); - ret1 = -EINVAL; + ret = -EINVAL; goto out; } @@ -1292,7 +1229,7 @@ last_extent = mext_next_extent(orig_inode, holecheck_path, &ext_cur); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; break; } add_blocks = ext4_ext_get_actual_len(ext_cur); @@ -1349,18 +1286,18 @@ orig_page_offset, data_offset_in_page, block_len_in_page, uninit, - &ret1); + &ret); /* Count how many blocks we have exchanged */ *moved_len += block_len_in_page; - if (ret1 < 0) + if (ret < 0) break; if (*moved_len > len) { EXT4_ERROR_INODE(orig_inode, "We replaced blocks too much! " "sum of replaced: %llu requested: %llu", *moved_len, len); - ret1 = -EIO; + ret = -EIO; break; } @@ -1374,22 +1311,22 @@ } double_down_write_data_sem(orig_inode, donor_inode); - if (ret1 < 0) + if (ret < 0) break; /* Decrease buffer counter */ if (holecheck_path) ext4_ext_drop_refs(holecheck_path); - ret1 = get_ext_path(orig_inode, seq_start, &holecheck_path); - if (ret1) + ret = get_ext_path(orig_inode, seq_start, &holecheck_path); + if (ret) break; depth = holecheck_path->p_depth; /* Decrease buffer counter */ if (orig_path) ext4_ext_drop_refs(orig_path); - ret1 = get_ext_path(orig_inode, seq_start, &orig_path); - if (ret1) + ret = get_ext_path(orig_inode, seq_start, &orig_path); + if (ret) break; ext_cur = holecheck_path[depth].p_ext; @@ -1412,12 +1349,7 @@ kfree(holecheck_path); } double_up_write_data_sem(orig_inode, donor_inode); - ret2 = mext_inode_double_unlock(orig_inode, donor_inode); + mext_inode_double_unlock(orig_inode, donor_inode); - if (ret1) - return ret1; - else if (ret2) - return ret2; - - return 0; + return ret; } --- linux-3.5.0.orig/fs/ext4/xattr.c +++ linux-3.5.0/fs/ext4/xattr.c @@ -127,19 +127,16 @@ struct ext4_xattr_header *hdr) { struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); - struct ext4_inode_info *ei = EXT4_I(inode); __u32 csum, old; old = hdr->h_checksum; hdr->h_checksum = 0; - if (le32_to_cpu(hdr->h_refcount) != 1) { - block_nr = cpu_to_le64(block_nr); - csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&block_nr, - sizeof(block_nr)); - } else - csum = ei->i_csum_seed; + block_nr = cpu_to_le64(block_nr); + csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&block_nr, + sizeof(block_nr)); csum = ext4_chksum(sbi, csum, (__u8 *)hdr, EXT4_BLOCK_SIZE(inode->i_sb)); + hdr->h_checksum = old; return cpu_to_le32(csum); } @@ -557,7 +554,7 @@ error = ext4_handle_dirty_xattr_block(handle, inode, bh); if (IS_SYNC(inode)) ext4_handle_sync(handle); - dquot_free_block(inode, 1); + dquot_free_block(inode, EXT4_C2B(EXT4_SB(inode->i_sb), 1)); ea_bdebug(bh, "refcount now=%d; releasing", le32_to_cpu(BHDR(bh)->h_refcount)); } @@ -846,7 +843,8 @@ else { /* The old block is released after updating the inode. */ - error = dquot_alloc_block(inode, 1); + error = dquot_alloc_block(inode, + EXT4_C2B(EXT4_SB(sb), 1)); if (error) goto cleanup; error = ext4_journal_get_write_access(handle, @@ -901,16 +899,17 @@ new_bh = sb_getblk(sb, block); if (!new_bh) { + error = -ENOMEM; getblk_failed: ext4_free_blocks(handle, inode, NULL, block, 1, EXT4_FREE_BLOCKS_METADATA); - error = -EIO; goto cleanup; } lock_buffer(new_bh); error = ext4_journal_get_create_access(handle, new_bh); if (error) { unlock_buffer(new_bh); + error = -EIO; goto getblk_failed; } memcpy(new_bh->b_data, s->base, new_bh->b_size); @@ -942,7 +941,7 @@ return error; cleanup_dquot: - dquot_free_block(inode, 1); + dquot_free_block(inode, EXT4_C2B(EXT4_SB(sb), 1)); goto cleanup; bad_block: --- linux-3.5.0.orig/fs/ext4/acl.c +++ linux-3.5.0/fs/ext4/acl.c @@ -410,8 +410,10 @@ retry: handle = ext4_journal_start(inode, EXT4_DATA_TRANS_BLOCKS(inode->i_sb)); - if (IS_ERR(handle)) - return PTR_ERR(handle); + if (IS_ERR(handle)) { + error = PTR_ERR(handle); + goto release_and_out; + } error = ext4_set_acl(handle, inode, type, acl); ext4_journal_stop(handle); if (error == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) --- linux-3.5.0.orig/fs/ext4/Kconfig +++ linux-3.5.0/fs/ext4/Kconfig @@ -84,4 +84,5 @@ Enables run-time debugging support for the ext4 filesystem. If you select Y here, then you will be able to turn on debugging - with a command such as "echo 1 > /sys/kernel/debug/ext4/mballoc-debug" + with a command such as: + echo 1 > /sys/module/ext4/parameters/mballoc_debug --- linux-3.5.0.orig/fs/ext4/extents.c +++ linux-3.5.0/fs/ext4/extents.c @@ -52,6 +52,9 @@ #define EXT4_EXT_MARK_UNINIT1 0x2 /* mark first half uninitialized */ #define EXT4_EXT_MARK_UNINIT2 0x4 /* mark second half uninitialized */ +#define EXT4_EXT_DATA_VALID1 0x8 /* first half contains valid data */ +#define EXT4_EXT_DATA_VALID2 0x10 /* second half contains valid data */ + static __le32 ext4_extent_block_csum(struct inode *inode, struct ext4_extent_header *eh) { @@ -717,6 +720,7 @@ struct ext4_extent_header *eh; struct buffer_head *bh; short int depth, i, ppos = 0, alloc = 0; + int ret; eh = ext_inode_hdr(inode); depth = ext_depth(inode); @@ -744,12 +748,15 @@ path[ppos].p_ext = NULL; bh = sb_getblk(inode->i_sb, path[ppos].p_block); - if (unlikely(!bh)) + if (unlikely(!bh)) { + ret = -ENOMEM; goto err; + } if (!bh_uptodate_or_lock(bh)) { trace_ext4_ext_load_extent(inode, block, path[ppos].p_block); - if (bh_submit_read(bh) < 0) { + ret = bh_submit_read(bh); + if (ret < 0) { put_bh(bh); goto err; } @@ -760,13 +767,15 @@ put_bh(bh); EXT4_ERROR_INODE(inode, "ppos %d > depth %d", ppos, depth); + ret = -EIO; goto err; } path[ppos].p_bh = bh; path[ppos].p_hdr = eh; i--; - if (ext4_ext_check_block(inode, eh, i, bh)) + ret = ext4_ext_check_block(inode, eh, i, bh); + if (ret < 0) goto err; } @@ -788,7 +797,7 @@ ext4_ext_drop_refs(path); if (alloc) kfree(path); - return ERR_PTR(-EIO); + return ERR_PTR(ret); } /* @@ -943,7 +952,7 @@ } bh = sb_getblk(inode->i_sb, newblock); if (!bh) { - err = -EIO; + err = -ENOMEM; goto cleanup; } lock_buffer(bh); @@ -1016,7 +1025,7 @@ newblock = ablocks[--a]; bh = sb_getblk(inode->i_sb, newblock); if (!bh) { - err = -EIO; + err = -ENOMEM; goto cleanup; } lock_buffer(bh); @@ -1128,11 +1137,8 @@ return err; bh = sb_getblk(inode->i_sb, newblock); - if (!bh) { - err = -EIO; - ext4_std_error(inode->i_sb, err); - return err; - } + if (!bh) + return -ENOMEM; lock_buffer(bh); err = ext4_journal_get_create_access(handle, bh); @@ -2174,13 +2180,14 @@ * removes index from the index block. */ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, - struct ext4_ext_path *path) + struct ext4_ext_path *path, int depth) { int err; ext4_fsblk_t leaf; /* free index block */ - path--; + depth--; + path = path + depth; leaf = ext4_idx_pblock(path->p_idx); if (unlikely(path->p_hdr->eh_entries == 0)) { EXT4_ERROR_INODE(inode, "path->p_hdr->eh_entries == 0"); @@ -2205,6 +2212,19 @@ ext4_free_blocks(handle, inode, NULL, leaf, 1, EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET); + + while (--depth >= 0) { + if (path->p_idx != EXT_FIRST_INDEX(path->p_hdr)) + break; + path--; + err = ext4_ext_get_access(handle, inode, path); + if (err) + break; + path->p_idx->ei_block = (path+1)->p_idx->ei_block; + err = ext4_ext_dirty(handle, inode, path); + if (err) + break; + } return err; } @@ -2538,7 +2558,7 @@ /* if this leaf is free, then we should * remove it from index block above */ if (err == 0 && eh->eh_entries == 0 && path[depth].p_bh != NULL) - err = ext4_ext_rm_idx(handle, inode, path + depth); + err = ext4_ext_rm_idx(handle, inode, path, depth); out: return err; @@ -2570,10 +2590,10 @@ { struct super_block *sb = inode->i_sb; int depth = ext_depth(inode); - struct ext4_ext_path *path; + struct ext4_ext_path *path = NULL; ext4_fsblk_t partial_cluster = 0; handle_t *handle; - int i, err; + int i = 0, err; ext_debug("truncate since %u to %u\n", start, end); @@ -2606,8 +2626,12 @@ } depth = ext_depth(inode); ex = path[depth].p_ext; - if (!ex) + if (!ex) { + ext4_ext_drop_refs(path); + kfree(path); + path = NULL; goto cont; + } ee_block = le32_to_cpu(ex->ee_block); @@ -2637,8 +2661,6 @@ if (err < 0) goto out; } - ext4_ext_drop_refs(path); - kfree(path); } cont: @@ -2647,19 +2669,28 @@ * after i_size and walking into the tree depth-wise. */ depth = ext_depth(inode); - path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), GFP_NOFS); - if (path == NULL) { - ext4_journal_stop(handle); - return -ENOMEM; - } - path[0].p_depth = depth; - path[0].p_hdr = ext_inode_hdr(inode); + if (path) { + int k = i = depth; + while (--k > 0) + path[k].p_block = + le16_to_cpu(path[k].p_hdr->eh_entries)+1; + } else { + path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), + GFP_NOFS); + if (path == NULL) { + ext4_journal_stop(handle); + return -ENOMEM; + } + path[0].p_depth = depth; + path[0].p_hdr = ext_inode_hdr(inode); + i = 0; - if (ext4_ext_check(inode, path[0].p_hdr, depth)) { - err = -EIO; - goto out; + if (ext4_ext_check(inode, path[0].p_hdr, depth)) { + err = -EIO; + goto out; + } } - i = err = 0; + err = 0; while (i >= 0 && err == 0) { if (i == depth) { @@ -2728,7 +2759,7 @@ /* index is empty, remove it; * handle must be already prepared by the * truncatei_leaf() */ - err = ext4_ext_rm_idx(handle, inode, path + i); + err = ext4_ext_rm_idx(handle, inode, path, i); } /* root level has p_bh == NULL, brelse() eats this */ brelse(path[i].p_bh); @@ -2773,8 +2804,10 @@ out: ext4_ext_drop_refs(path); kfree(path); - if (err == -EAGAIN) + if (err == -EAGAIN) { + path = NULL; goto again; + } ext4_journal_stop(handle); return err; @@ -2883,6 +2916,9 @@ unsigned int ee_len, depth; int err = 0; + BUG_ON((split_flag & (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)) == + (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)); + ext_debug("ext4_split_extents_at: inode %lu, logical" "block %llu\n", inode->i_ino, (unsigned long long)split); @@ -2941,7 +2977,14 @@ err = ext4_ext_insert_extent(handle, inode, path, &newex, flags); if (err == -ENOSPC && (EXT4_EXT_MAY_ZEROOUT & split_flag)) { - err = ext4_ext_zeroout(inode, &orig_ex); + if (split_flag & (EXT4_EXT_DATA_VALID1|EXT4_EXT_DATA_VALID2)) { + if (split_flag & EXT4_EXT_DATA_VALID1) + err = ext4_ext_zeroout(inode, ex2); + else + err = ext4_ext_zeroout(inode, ex); + } else + err = ext4_ext_zeroout(inode, &orig_ex); + if (err) goto fix_extent_len; /* update the extent length and mark as initialized */ @@ -2986,6 +3029,7 @@ int err = 0; int uninitialized; int split_flag1, flags1; + int allocated = map->m_len; depth = ext_depth(inode); ex = path[depth].p_ext; @@ -2994,16 +3038,19 @@ uninitialized = ext4_ext_is_uninitialized(ex); if (map->m_lblk + map->m_len < ee_block + ee_len) { - split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT ? - EXT4_EXT_MAY_ZEROOUT : 0; + split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT; flags1 = flags | EXT4_GET_BLOCKS_PRE_IO; if (uninitialized) split_flag1 |= EXT4_EXT_MARK_UNINIT1 | EXT4_EXT_MARK_UNINIT2; + if (split_flag & EXT4_EXT_DATA_VALID2) + split_flag1 |= EXT4_EXT_DATA_VALID1; err = ext4_split_extent_at(handle, inode, path, map->m_lblk + map->m_len, split_flag1, flags1); if (err) goto out; + } else { + allocated = ee_len - (map->m_lblk - ee_block); } ext4_ext_drop_refs(path); @@ -3012,8 +3059,8 @@ return PTR_ERR(path); if (map->m_lblk >= ee_block) { - split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT ? - EXT4_EXT_MAY_ZEROOUT : 0; + split_flag1 = split_flag & (EXT4_EXT_MAY_ZEROOUT | + EXT4_EXT_DATA_VALID2); if (uninitialized) split_flag1 |= EXT4_EXT_MARK_UNINIT1; if (split_flag & EXT4_EXT_MARK_UNINIT2) @@ -3026,7 +3073,7 @@ ext4_ext_show_leaf(inode, path); out: - return err ? err : map->m_len; + return err ? err : allocated; } #define EXT4_EXT_ZERO_LEN 7 @@ -3291,26 +3338,47 @@ split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; split_flag |= EXT4_EXT_MARK_UNINIT2; - + if (flags & EXT4_GET_BLOCKS_CONVERT) + split_flag |= EXT4_EXT_DATA_VALID2; flags |= EXT4_GET_BLOCKS_PRE_IO; return ext4_split_extent(handle, inode, path, map, split_flag, flags); } static int ext4_convert_unwritten_extents_endio(handle_t *handle, - struct inode *inode, - struct ext4_ext_path *path) + struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path) { struct ext4_extent *ex; + ext4_lblk_t ee_block; + unsigned int ee_len; int depth; int err = 0; depth = ext_depth(inode); ex = path[depth].p_ext; + ee_block = le32_to_cpu(ex->ee_block); + ee_len = ext4_ext_get_actual_len(ex); ext_debug("ext4_convert_unwritten_extents_endio: inode %lu, logical" "block %llu, max_blocks %u\n", inode->i_ino, - (unsigned long long)le32_to_cpu(ex->ee_block), - ext4_ext_get_actual_len(ex)); + (unsigned long long)ee_block, ee_len); + + /* If extent is larger than requested then split is required */ + if (ee_block != map->m_lblk || ee_len > map->m_len) { + err = ext4_split_unwritten_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT); + if (err < 0) + goto out; + ext4_ext_drop_refs(path); + path = ext4_ext_find_extent(inode, map->m_lblk, path); + if (IS_ERR(path)) { + err = PTR_ERR(path); + goto out; + } + depth = ext_depth(inode); + ex = path[depth].p_ext; + } err = ext4_ext_get_access(handle, inode, path + depth); if (err) @@ -3618,7 +3686,7 @@ } /* IO end_io complete, convert the filled extent to written */ if ((flags & EXT4_GET_BLOCKS_CONVERT)) { - ret = ext4_convert_unwritten_extents_endio(handle, inode, + ret = ext4_convert_unwritten_extents_endio(handle, inode, map, path); if (ret >= 0) { ext4_update_inode_fsync_trans(handle, inode, 1); @@ -3673,6 +3741,7 @@ allocated - map->m_len); allocated = map->m_len; } + map->m_len = allocated; /* * If we have done fallocate with the offset that is already --- linux-3.5.0.orig/fs/ext4/super.c +++ linux-3.5.0/fs/ext4/super.c @@ -144,9 +144,10 @@ return es->s_checksum == ext4_superblock_csum(sb, es); } -void ext4_superblock_csum_set(struct super_block *sb, - struct ext4_super_block *es) +void ext4_superblock_csum_set(struct super_block *sb) { + struct ext4_super_block *es = EXT4_SB(sb)->s_es; + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) return; @@ -479,10 +480,13 @@ struct super_block *sb = journal->j_private; struct ext4_sb_info *sbi = EXT4_SB(sb); int error = is_journal_aborted(journal); - struct ext4_journal_cb_entry *jce, *tmp; + struct ext4_journal_cb_entry *jce; + BUG_ON(txn->t_state == T_FINISHED); spin_lock(&sbi->s_md_lock); - list_for_each_entry_safe(jce, tmp, &txn->t_private_list, jce_list) { + while (!list_empty(&txn->t_private_list)) { + jce = list_entry(txn->t_private_list.next, + struct ext4_journal_cb_entry, jce_list); list_del_init(&jce->jce_list); spin_unlock(&sbi->s_md_lock); jce->jce_func(sb, jce, error); @@ -976,6 +980,7 @@ ei->i_reserved_meta_blocks = 0; ei->i_allocated_meta_blocks = 0; ei->i_da_metadata_calc_len = 0; + ei->i_da_metadata_calc_last_lblock = 0; spin_lock_init(&(ei->i_block_reservation_lock)); #ifdef CONFIG_QUOTA ei->i_reserved_quota = 0; @@ -1654,9 +1659,7 @@ unsigned int *journal_ioprio, int is_remount) { -#ifdef CONFIG_QUOTA struct ext4_sb_info *sbi = EXT4_SB(sb); -#endif char *p; substring_t args[MAX_OPT_ARGS]; int token; @@ -1705,6 +1708,16 @@ } } #endif + if (test_opt(sb, DIOREAD_NOLOCK)) { + int blocksize = + BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size); + + if (blocksize < PAGE_CACHE_SIZE) { + ext4_msg(sb, KERN_ERR, "can't mount with " + "dioread_nolock if block size != PAGE_SIZE"); + return 0; + } + } return 1; } @@ -1747,7 +1760,7 @@ static const char *token2str(int token) { - static const struct match_token *t; + const struct match_token *t; for (t = tokens; t->token != Opt_err; t++) if (t->token == token && !strchr(t->pattern, '=')) @@ -1956,8 +1969,8 @@ flex_group = ext4_flex_group(sbi, i); atomic_add(ext4_free_inodes_count(sb, gdp), &sbi->s_flex_groups[flex_group].free_inodes); - atomic_add(ext4_free_group_clusters(sb, gdp), - &sbi->s_flex_groups[flex_group].free_clusters); + atomic64_add(ext4_free_group_clusters(sb, gdp), + &sbi->s_flex_groups[flex_group].free_clusters); atomic_add(ext4_used_dirs_count(sb, gdp), &sbi->s_flex_groups[flex_group].used_dirs); } @@ -2195,7 +2208,9 @@ __func__, inode->i_ino, inode->i_size); jbd_debug(2, "truncating inode %lu to %lld bytes\n", inode->i_ino, inode->i_size); + mutex_lock(&inode->i_mutex); ext4_truncate(inode); + mutex_unlock(&inode->i_mutex); nr_truncates++; } else { ext4_msg(sb, KERN_DEBUG, @@ -3085,6 +3100,118 @@ return ret; } +/* + * Note: calculating the overhead so we can be compatible with + * historical BSD practice is quite difficult in the face of + * clusters/bigalloc. This is because multiple metadata blocks from + * different block group can end up in the same allocation cluster. + * Calculating the exact overhead in the face of clustered allocation + * requires either O(all block bitmaps) in memory or O(number of block + * groups**2) in time. We will still calculate the superblock for + * older file systems --- and if we come across with a bigalloc file + * system with zero in s_overhead_clusters the estimate will be close to + * correct especially for very large cluster sizes --- but for newer + * file systems, it's better to calculate this figure once at mkfs + * time, and store it in the superblock. If the superblock value is + * present (even for non-bigalloc file systems), we will use it. + */ +static int count_overhead(struct super_block *sb, ext4_group_t grp, + char *buf) +{ + struct ext4_sb_info *sbi = EXT4_SB(sb); + struct ext4_group_desc *gdp; + ext4_fsblk_t first_block, last_block, b; + ext4_group_t i, ngroups = ext4_get_groups_count(sb); + int s, j, count = 0; + + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_BIGALLOC)) + return (ext4_bg_has_super(sb, grp) + ext4_bg_num_gdb(sb, grp) + + sbi->s_itb_per_group + 2); + + first_block = le32_to_cpu(sbi->s_es->s_first_data_block) + + (grp * EXT4_BLOCKS_PER_GROUP(sb)); + last_block = first_block + EXT4_BLOCKS_PER_GROUP(sb) - 1; + for (i = 0; i < ngroups; i++) { + gdp = ext4_get_group_desc(sb, i, NULL); + b = ext4_block_bitmap(sb, gdp); + if (b >= first_block && b <= last_block) { + ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); + count++; + } + b = ext4_inode_bitmap(sb, gdp); + if (b >= first_block && b <= last_block) { + ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); + count++; + } + b = ext4_inode_table(sb, gdp); + if (b >= first_block && b + sbi->s_itb_per_group <= last_block) + for (j = 0; j < sbi->s_itb_per_group; j++, b++) { + int c = EXT4_B2C(sbi, b - first_block); + ext4_set_bit(c, buf); + count++; + } + if (i != grp) + continue; + s = 0; + if (ext4_bg_has_super(sb, grp)) { + ext4_set_bit(s++, buf); + count++; + } + for (j = ext4_bg_num_gdb(sb, grp); j > 0; j--) { + ext4_set_bit(EXT4_B2C(sbi, s++), buf); + count++; + } + } + if (!count) + return 0; + return EXT4_CLUSTERS_PER_GROUP(sb) - + ext4_count_free(buf, EXT4_CLUSTERS_PER_GROUP(sb) / 8); +} + +/* + * Compute the overhead and stash it in sbi->s_overhead + */ +int ext4_calculate_overhead(struct super_block *sb) +{ + struct ext4_sb_info *sbi = EXT4_SB(sb); + struct ext4_super_block *es = sbi->s_es; + ext4_group_t i, ngroups = ext4_get_groups_count(sb); + ext4_fsblk_t overhead = 0; + char *buf = (char *) get_zeroed_page(GFP_KERNEL); + + memset(buf, 0, PAGE_SIZE); + if (!buf) + return -ENOMEM; + + /* + * Compute the overhead (FS structures). This is constant + * for a given filesystem unless the number of block groups + * changes so we cache the previous value until it does. + */ + + /* + * All of the blocks before first_data_block are overhead + */ + overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block)); + + /* + * Add the overhead found in each block group + */ + for (i = 0; i < ngroups; i++) { + int blks; + + blks = count_overhead(sb, i, buf); + overhead += blks; + if (blks) + memset(buf, 0, PAGE_SIZE); + cond_resched(); + } + sbi->s_overhead = overhead; + smp_wmb(); + free_page((unsigned long) buf); + return 0; +} + static int ext4_fill_super(struct super_block *sb, void *data, int silent) { char *orig_data = kstrdup(data, GFP_KERNEL); @@ -3296,15 +3423,6 @@ clear_opt(sb, DELALLOC); } - blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); - if (test_opt(sb, DIOREAD_NOLOCK)) { - if (blocksize < PAGE_SIZE) { - ext4_msg(sb, KERN_ERR, "can't mount with " - "dioread_nolock if block size != PAGE_SIZE"); - goto failed_mount; - } - } - sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0); @@ -3346,6 +3464,7 @@ if (!ext4_feature_set_ok(sb, (sb->s_flags & MS_RDONLY))) goto failed_mount; + blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); if (blocksize < EXT4_MIN_BLOCK_SIZE || blocksize > EXT4_MAX_BLOCK_SIZE) { ext4_msg(sb, KERN_ERR, @@ -3735,6 +3854,18 @@ no_journal: /* + * Get the # of file system overhead blocks from the + * superblock if present. + */ + if (es->s_overhead_clusters) + sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters); + else { + ret = ext4_calculate_overhead(sb); + if (ret) + goto failed_mount_wq; + } + + /* * The maximum number of concurrent works can be high and * concurrency isn't really necessary. Limit it to 1. */ @@ -4205,7 +4336,7 @@ &EXT4_SB(sb)->s_freeinodes_counter)); sb->s_dirt = 0; BUFFER_TRACE(sbh, "marking dirty"); - ext4_superblock_csum_set(sb, es); + ext4_superblock_csum_set(sb); mark_buffer_dirty(sbh); if (sync) { error = sync_dirty_buffer(sbh); @@ -4286,6 +4417,7 @@ ext4_commit_super(sb, 1); jbd2_journal_clear_err(journal); + jbd2_journal_update_sb_errno(journal); } } @@ -4559,7 +4691,7 @@ } ext4_setup_system_zone(sb); - if (sbi->s_journal == NULL) + if (sbi->s_journal == NULL && !(old_sb_flags & MS_RDONLY)) ext4_commit_super(sb, 1); #ifdef CONFIG_QUOTA @@ -4600,67 +4732,21 @@ return err; } -/* - * Note: calculating the overhead so we can be compatible with - * historical BSD practice is quite difficult in the face of - * clusters/bigalloc. This is because multiple metadata blocks from - * different block group can end up in the same allocation cluster. - * Calculating the exact overhead in the face of clustered allocation - * requires either O(all block bitmaps) in memory or O(number of block - * groups**2) in time. We will still calculate the superblock for - * older file systems --- and if we come across with a bigalloc file - * system with zero in s_overhead_clusters the estimate will be close to - * correct especially for very large cluster sizes --- but for newer - * file systems, it's better to calculate this figure once at mkfs - * time, and store it in the superblock. If the superblock value is - * present (even for non-bigalloc file systems), we will use it. - */ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) { struct super_block *sb = dentry->d_sb; struct ext4_sb_info *sbi = EXT4_SB(sb); struct ext4_super_block *es = sbi->s_es; - struct ext4_group_desc *gdp; + ext4_fsblk_t overhead = 0; u64 fsid; s64 bfree; - if (test_opt(sb, MINIX_DF)) { - sbi->s_overhead_last = 0; - } else if (es->s_overhead_clusters) { - sbi->s_overhead_last = le32_to_cpu(es->s_overhead_clusters); - } else if (sbi->s_blocks_last != ext4_blocks_count(es)) { - ext4_group_t i, ngroups = ext4_get_groups_count(sb); - ext4_fsblk_t overhead = 0; - - /* - * Compute the overhead (FS structures). This is constant - * for a given filesystem unless the number of block groups - * changes so we cache the previous value until it does. - */ - - /* - * All of the blocks before first_data_block are - * overhead - */ - overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block)); - - /* - * Add the overhead found in each block group - */ - for (i = 0; i < ngroups; i++) { - gdp = ext4_get_group_desc(sb, i, NULL); - overhead += ext4_num_overhead_clusters(sb, i, gdp); - cond_resched(); - } - sbi->s_overhead_last = overhead; - smp_wmb(); - sbi->s_blocks_last = ext4_blocks_count(es); - } + if (!test_opt(sb, MINIX_DF)) + overhead = sbi->s_overhead; buf->f_type = EXT4_SUPER_MAGIC; buf->f_bsize = sb->s_blocksize; - buf->f_blocks = (ext4_blocks_count(es) - - EXT4_C2B(sbi, sbi->s_overhead_last)); + buf->f_blocks = ext4_blocks_count(es) - EXT4_C2B(sbi, sbi->s_overhead); bfree = percpu_counter_sum_positive(&sbi->s_freeclusters_counter) - percpu_counter_sum_positive(&sbi->s_dirtyclusters_counter); /* prevent underflow in case that few free space is available */ --- linux-3.5.0.orig/fs/ext4/fsync.c +++ linux-3.5.0/fs/ext4/fsync.c @@ -260,8 +260,7 @@ if (journal->j_flags & JBD2_BARRIER && !jbd2_trans_will_send_data_barrier(journal, commit_tid)) needs_barrier = true; - jbd2_log_start_commit(journal, commit_tid); - ret = jbd2_log_wait_commit(journal, commit_tid); + ret = jbd2_complete_transaction(journal, commit_tid); if (needs_barrier) blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL); out: --- linux-3.5.0.orig/fs/ext4/balloc.c +++ linux-3.5.0/fs/ext4/balloc.c @@ -174,8 +174,7 @@ ext4_free_inodes_set(sb, gdp, 0); ext4_itable_unused_set(sb, gdp, 0); memset(bh->b_data, 0xff, sb->s_blocksize); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bh); return; } memset(bh->b_data, 0, sb->s_blocksize); @@ -212,8 +211,7 @@ */ ext4_mark_bitmap_end(num_clusters_in_group(sb, block_group), sb->s_blocksize * 8, bh->b_data); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bh); ext4_group_desc_csum_set(sb, block_group, gdp); } @@ -280,14 +278,18 @@ return desc; } -static int ext4_valid_block_bitmap(struct super_block *sb, - struct ext4_group_desc *desc, - unsigned int block_group, - struct buffer_head *bh) +/* + * Return the block number which was discovered to be invalid, or 0 if + * the block bitmap is valid. + */ +static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, + struct ext4_group_desc *desc, + unsigned int block_group, + struct buffer_head *bh) { ext4_grpblk_t offset; ext4_grpblk_t next_zero_bit; - ext4_fsblk_t bitmap_blk; + ext4_fsblk_t blk; ext4_fsblk_t group_first_block; if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG)) { @@ -297,37 +299,33 @@ * or it has to also read the block group where the bitmaps * are located to verify they are set. */ - return 1; + return 0; } group_first_block = ext4_group_first_block_no(sb, block_group); /* check whether block bitmap block number is set */ - bitmap_blk = ext4_block_bitmap(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_block_bitmap(sb, desc); + offset = blk - group_first_block; if (!ext4_test_bit(offset, bh->b_data)) /* bad block bitmap */ - goto err_out; + return blk; /* check whether the inode bitmap block number is set */ - bitmap_blk = ext4_inode_bitmap(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_inode_bitmap(sb, desc); + offset = blk - group_first_block; if (!ext4_test_bit(offset, bh->b_data)) /* bad block bitmap */ - goto err_out; + return blk; /* check whether the inode table block number is set */ - bitmap_blk = ext4_inode_table(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_inode_table(sb, desc); + offset = blk - group_first_block; next_zero_bit = ext4_find_next_zero_bit(bh->b_data, offset + EXT4_SB(sb)->s_itb_per_group, offset); - if (next_zero_bit >= offset + EXT4_SB(sb)->s_itb_per_group) - /* good bitmap for inode tables */ - return 1; - -err_out: - ext4_error(sb, "Invalid block bitmap - block_group = %d, block = %llu", - block_group, bitmap_blk); + if (next_zero_bit < offset + EXT4_SB(sb)->s_itb_per_group) + /* bad bitmap for inode tables */ + return blk; return 0; } @@ -336,19 +334,31 @@ unsigned int block_group, struct buffer_head *bh) { + ext4_fsblk_t blk; + if (buffer_verified(bh)) return; ext4_lock_group(sb, block_group); - if (ext4_valid_block_bitmap(sb, desc, block_group, bh) && - ext4_block_bitmap_csum_verify(sb, block_group, desc, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8)) - set_buffer_verified(bh); + blk = ext4_valid_block_bitmap(sb, desc, block_group, bh); + if (unlikely(blk != 0)) { + ext4_unlock_group(sb, block_group); + ext4_error(sb, "bg %u: block %llu: invalid block bitmap", + block_group, blk); + return; + } + if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group, + desc, bh))) { + ext4_unlock_group(sb, block_group); + ext4_error(sb, "bg %u: bad block bitmap checksum", block_group); + return; + } + set_buffer_verified(bh); ext4_unlock_group(sb, block_group); } /** - * ext4_read_block_bitmap() + * ext4_read_block_bitmap_nowait() * @sb: super block * @block_group: given block group * @@ -447,6 +457,8 @@ struct buffer_head *bh; bh = ext4_read_block_bitmap_nowait(sb, block_group); + if (!bh) + return NULL; if (ext4_wait_block_bitmap(sb, block_group, bh)) { put_bh(bh); return NULL; @@ -472,11 +484,16 @@ free_clusters = percpu_counter_read_positive(fcc); dirty_clusters = percpu_counter_read_positive(dcc); - root_clusters = EXT4_B2C(sbi, ext4_r_blocks_count(sbi->s_es)); + + /* + * r_blocks_count should always be multiple of the cluster ratio so + * we are safe to do a plane bit shift only. + */ + root_clusters = ext4_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits; if (free_clusters - (nclusters + root_clusters + dirty_clusters) < EXT4_FREECLUSTERS_WATERMARK) { - free_clusters = EXT4_C2B(sbi, percpu_counter_sum_positive(fcc)); + free_clusters = percpu_counter_sum_positive(fcc); dirty_clusters = percpu_counter_sum_positive(dcc); } /* Check whether we have space after accounting for current @@ -609,7 +626,8 @@ if (bitmap_bh == NULL) continue; - x = ext4_count_free(bitmap_bh, sb->s_blocksize); + x = ext4_count_free(bitmap_bh->b_data, + EXT4_BLOCKS_PER_GROUP(sb) / 8); printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n", i, ext4_free_group_clusters(sb, gdp), x); bitmap_count += x; @@ -617,7 +635,7 @@ brelse(bitmap_bh); printk(KERN_DEBUG "ext4_count_free_clusters: stored = %llu" ", computed = %llu, %llu\n", - EXT4_B2C(EXT4_SB(sb), ext4_free_blocks_count(es)), + EXT4_NUM_B2C(EXT4_SB(sb), ext4_free_blocks_count(es)), desc_count, bitmap_count); return bitmap_count; #else --- linux-3.5.0.orig/fs/ext4/mballoc.c +++ linux-3.5.0/fs/ext4/mballoc.c @@ -1980,7 +1980,11 @@ group = ac->ac_g_ex.fe_group; for (i = 0; i < ngroups; group++, i++) { - if (group == ngroups) + /* + * Artificially restricted ngroups for non-extent + * files makes group > ngroups possible on first loop. + */ + if (group >= ngroups) group = 0; /* This now checks without needing the buddy page */ @@ -2798,8 +2802,7 @@ } len = ext4_free_group_clusters(sb, gdp) - ac->ac_b_ex.fe_len; ext4_free_group_clusters_set(sb, gdp, len); - ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh); ext4_group_desc_csum_set(sb, ac->ac_b_ex.fe_group, gdp); ext4_unlock_group(sb, ac->ac_b_ex.fe_group); @@ -2815,8 +2818,8 @@ if (sbi->s_log_groups_per_flex) { ext4_group_t flex_group = ext4_flex_group(sbi, ac->ac_b_ex.fe_group); - atomic_sub(ac->ac_b_ex.fe_len, - &sbi->s_flex_groups[flex_group].free_clusters); + atomic64_sub(ac->ac_b_ex.fe_len, + &sbi->s_flex_groups[flex_group].free_clusters); } err = ext4_handle_dirty_metadata(handle, NULL, bitmap_bh); @@ -3431,7 +3434,7 @@ win = offs; ac->ac_b_ex.fe_logical = ac->ac_o_ex.fe_logical - - EXT4_B2C(sbi, win); + EXT4_NUM_B2C(sbi, win); BUG_ON(ac->ac_o_ex.fe_logical < ac->ac_b_ex.fe_logical); BUG_ON(ac->ac_o_ex.fe_len > ac->ac_b_ex.fe_len); } @@ -4124,7 +4127,7 @@ /* The max size of hash table is PREALLOC_TB_SIZE */ order = PREALLOC_TB_SIZE - 1; /* Add the prealloc space to lg */ - rcu_read_lock(); + spin_lock(&lg->lg_prealloc_lock); list_for_each_entry_rcu(tmp_pa, &lg->lg_prealloc_list[order], pa_inode_list) { spin_lock(&tmp_pa->pa_lock); @@ -4148,12 +4151,12 @@ if (!added) list_add_tail_rcu(&pa->pa_inode_list, &lg->lg_prealloc_list[order]); - rcu_read_unlock(); + spin_unlock(&lg->lg_prealloc_lock); /* Now trim the list to be not more than 8 elements */ if (lg_prealloc_count > 8) { ext4_mb_discard_lg_preallocations(sb, lg, - order, lg_prealloc_count); + order, lg_prealloc_count); return; } return ; @@ -4434,11 +4437,11 @@ node = rb_prev(new_node); if (node) { entry = rb_entry(node, struct ext4_free_data, efd_node); - if (can_merge(entry, new_entry)) { + if (can_merge(entry, new_entry) && + ext4_journal_callback_try_del(handle, &entry->efd_jce)) { new_entry->efd_start_cluster = entry->efd_start_cluster; new_entry->efd_count += entry->efd_count; rb_erase(node, &(db->bb_free_root)); - ext4_journal_callback_del(handle, &entry->efd_jce); kmem_cache_free(ext4_free_data_cachep, entry); } } @@ -4446,10 +4449,10 @@ node = rb_next(new_node); if (node) { entry = rb_entry(node, struct ext4_free_data, efd_node); - if (can_merge(new_entry, entry)) { + if (can_merge(new_entry, entry) && + ext4_journal_callback_try_del(handle, &entry->efd_jce)) { new_entry->efd_count += entry->efd_count; rb_erase(node, &(db->bb_free_root)); - ext4_journal_callback_del(handle, &entry->efd_jce); kmem_cache_free(ext4_free_data_cachep, entry); } } @@ -4575,7 +4578,7 @@ EXT4_BLOCKS_PER_GROUP(sb); count -= overflow; } - count_clusters = EXT4_B2C(sbi, count); + count_clusters = EXT4_NUM_B2C(sbi, count); bitmap_bh = ext4_read_block_bitmap(sb, block_group); if (!bitmap_bh) { err = -EIO; @@ -4659,16 +4662,15 @@ ret = ext4_free_group_clusters(sb, gdp) + count_clusters; ext4_free_group_clusters_set(sb, gdp, ret); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh); ext4_group_desc_csum_set(sb, block_group, gdp); ext4_unlock_group(sb, block_group); percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters); if (sbi->s_log_groups_per_flex) { ext4_group_t flex_group = ext4_flex_group(sbi, block_group); - atomic_add(count_clusters, - &sbi->s_flex_groups[flex_group].free_clusters); + atomic64_add(count_clusters, + &sbi->s_flex_groups[flex_group].free_clusters); } ext4_mb_unload_buddy(&e4b); @@ -4805,17 +4807,16 @@ mb_free_blocks(NULL, &e4b, bit, count); blk_free_count = blocks_freed + ext4_free_group_clusters(sb, desc); ext4_free_group_clusters_set(sb, desc, blk_free_count); - ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh); ext4_group_desc_csum_set(sb, block_group, desc); ext4_unlock_group(sb, block_group); percpu_counter_add(&sbi->s_freeclusters_counter, - EXT4_B2C(sbi, blocks_freed)); + EXT4_NUM_B2C(sbi, blocks_freed)); if (sbi->s_log_groups_per_flex) { ext4_group_t flex_group = ext4_flex_group(sbi, block_group); - atomic_add(EXT4_B2C(sbi, blocks_freed), - &sbi->s_flex_groups[flex_group].free_clusters); + atomic64_add(EXT4_NUM_B2C(sbi, blocks_freed), + &sbi->s_flex_groups[flex_group].free_clusters); } ext4_mb_unload_buddy(&e4b); @@ -4986,8 +4987,9 @@ end = start + (range->len >> sb->s_blocksize_bits) - 1; minlen = range->minlen >> sb->s_blocksize_bits; - if (unlikely(minlen > EXT4_CLUSTERS_PER_GROUP(sb)) || - unlikely(start >= max_blks)) + if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) || + start >= max_blks || + range->len < sb->s_blocksize) return -EINVAL; if (end >= max_blks) end = max_blks - 1; --- linux-3.5.0.orig/fs/ext4/ext4_jbd2.h +++ linux-3.5.0/fs/ext4/ext4_jbd2.h @@ -164,16 +164,20 @@ * ext4_journal_callback_del: delete a registered callback * @handle: active journal transaction handle on which callback was registered * @jce: registered journal callback entry to unregister + * Return true if object was sucessfully removed */ -static inline void ext4_journal_callback_del(handle_t *handle, +static inline bool ext4_journal_callback_try_del(handle_t *handle, struct ext4_journal_cb_entry *jce) { + bool deleted; struct ext4_sb_info *sbi = EXT4_SB(handle->h_transaction->t_journal->j_private); spin_lock(&sbi->s_md_lock); + deleted = !list_empty(&jce->jce_list); list_del_init(&jce->jce_list); spin_unlock(&sbi->s_md_lock); + return deleted; } int --- linux-3.5.0.orig/fs/ext4/indirect.c +++ linux-3.5.0/fs/ext4/indirect.c @@ -145,6 +145,7 @@ struct super_block *sb = inode->i_sb; Indirect *p = chain; struct buffer_head *bh; + int ret = -EIO; *err = 0; /* i_data is not going away, no lock needed */ @@ -153,8 +154,10 @@ goto no_block; while (--depth) { bh = sb_getblk(sb, le32_to_cpu(p->key)); - if (unlikely(!bh)) + if (unlikely(!bh)) { + ret = -ENOMEM; goto failure; + } if (!bh_uptodate_or_lock(bh)) { if (bh_submit_read(bh) < 0) { @@ -176,7 +179,7 @@ return NULL; failure: - *err = -EIO; + *err = ret; no_block: return p; } @@ -470,7 +473,7 @@ */ bh = sb_getblk(inode->i_sb, new_blocks[n-1]); if (unlikely(!bh)) { - err = -EIO; + err = -ENOMEM; goto failed; } --- linux-3.5.0.orig/fs/ext4/bitmap.c +++ linux-3.5.0/fs/ext4/bitmap.c @@ -11,24 +11,18 @@ #include #include "ext4.h" -#ifdef EXT4FS_DEBUG - static const int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0}; -unsigned int ext4_count_free(struct buffer_head *map, unsigned int numchars) +unsigned int ext4_count_free(char *bitmap, unsigned int numchars) { unsigned int i, sum = 0; - if (!map) - return 0; for (i = 0; i < numchars; i++) - sum += nibblemap[map->b_data[i] & 0xf] + - nibblemap[(map->b_data[i] >> 4) & 0xf]; + sum += nibblemap[bitmap[i] & 0xf] + + nibblemap[(bitmap[i] >> 4) & 0xf]; return sum; } -#endif /* EXT4FS_DEBUG */ - int ext4_inode_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz) @@ -71,11 +65,12 @@ int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz) + struct buffer_head *bh) { __u32 hi; __u32 provided, calculated; struct ext4_sb_info *sbi = EXT4_SB(sb); + int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) @@ -92,14 +87,14 @@ if (provided == calculated) return 1; - ext4_error(sb, "Bad block bitmap checksum: block_group = %u", group); return 0; } void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz) + struct buffer_head *bh) { + int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; __u32 csum; struct ext4_sb_info *sbi = EXT4_SB(sb); --- linux-3.5.0.orig/fs/ext4/mmp.c +++ linux-3.5.0/fs/ext4/mmp.c @@ -7,7 +7,7 @@ #include "ext4.h" /* Checksumming functions */ -static __u32 ext4_mmp_csum(struct super_block *sb, struct mmp_struct *mmp) +static __le32 ext4_mmp_csum(struct super_block *sb, struct mmp_struct *mmp) { struct ext4_sb_info *sbi = EXT4_SB(sb); int offset = offsetof(struct mmp_struct, mmp_checksum); @@ -74,6 +74,8 @@ * is not blocked in the elevator. */ if (!*bh) *bh = sb_getblk(sb, mmp_block); + if (!*bh) + return -ENOMEM; if (*bh) { get_bh(*bh); lock_buffer(*bh); --- linux-3.5.0.orig/fs/ext4/ext4_jbd2.c +++ linux-3.5.0/fs/ext4/ext4_jbd2.c @@ -145,15 +145,13 @@ int err = 0; if (ext4_handle_valid(handle)) { - ext4_superblock_csum_set(sb, - (struct ext4_super_block *)bh->b_data); + ext4_superblock_csum_set(sb); err = jbd2_journal_dirty_metadata(handle, bh); if (err) ext4_journal_abort_handle(where, line, __func__, bh, handle, err); } else if (now) { - ext4_superblock_csum_set(sb, - (struct ext4_super_block *)bh->b_data); + ext4_superblock_csum_set(sb); mark_buffer_dirty(bh); } else sb->s_dirt = 1; --- linux-3.5.0.orig/fs/ext4/namei.c +++ linux-3.5.0/fs/ext4/namei.c @@ -706,7 +706,7 @@ ext4_warning(dir->i_sb, "Node failed checksum"); brelse(bh); *err = ERR_BAD_DX_DIR; - goto fail; + goto fail2; } set_buffer_verified(bh); @@ -2149,9 +2149,7 @@ err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); -#ifdef CONFIG_EXT4_FS_XATTR inode->i_op = &ext4_special_inode_operations; -#endif err = ext4_add_nondir(handle, dentry, inode); } ext4_journal_stop(handle); @@ -2918,8 +2916,15 @@ PARENT_INO(dir_bh->b_data, new_dir->i_sb->s_blocksize) = cpu_to_le32(new_dir->i_ino); BUFFER_TRACE(dir_bh, "call ext4_handle_dirty_metadata"); - retval = ext4_handle_dirty_dirent_node(handle, old_inode, - dir_bh); + if (is_dx(old_inode)) { + retval = ext4_handle_dirty_dx_node(handle, + old_inode, + dir_bh); + } else { + retval = ext4_handle_dirty_dirent_node(handle, + old_inode, + dir_bh); + } if (retval) { ext4_std_error(old_dir->i_sb, retval); goto end_rename; --- linux-3.5.0.orig/fs/ext4/ext4.h +++ linux-3.5.0/fs/ext4/ext4.h @@ -329,9 +329,9 @@ */ struct flex_groups { - atomic_t free_inodes; - atomic_t free_clusters; - atomic_t used_dirs; + atomic64_t free_clusters; + atomic_t free_inodes; + atomic_t used_dirs; }; #define EXT4_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not in use */ @@ -1161,8 +1161,7 @@ unsigned long s_desc_per_block; /* Number of group descriptors per block */ ext4_group_t s_groups_count; /* Number of groups in the fs */ ext4_group_t s_blockfile_groups;/* Groups acceptable for non-extent files */ - unsigned long s_overhead_last; /* Last calculated overhead */ - unsigned long s_blocks_last; /* Last seen block count */ + unsigned long s_overhead; /* # of fs overhead clusters */ unsigned int s_cluster_ratio; /* Number of blocks per cluster */ unsigned int s_cluster_bits; /* log2 of s_cluster_ratio */ loff_t s_bitmap_maxbytes; /* max bytes for bitmap files */ @@ -1852,7 +1851,7 @@ # define NORET_AND noreturn, /* bitmap.c */ -extern unsigned int ext4_count_free(struct buffer_head *, unsigned); +extern unsigned int ext4_count_free(char *bitmap, unsigned numchars); void ext4_inode_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz); @@ -1861,10 +1860,10 @@ struct buffer_head *bh, int sz); void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz); + struct buffer_head *bh); int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz); + struct buffer_head *bh); /* balloc.c */ extern void ext4_validate_block_bitmap(struct super_block *sb, @@ -2037,10 +2036,10 @@ extern int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count); /* super.c */ +extern int ext4_calculate_overhead(struct super_block *sb); extern int ext4_superblock_csum_verify(struct super_block *sb, struct ext4_super_block *es); -extern void ext4_superblock_csum_set(struct super_block *sb, - struct ext4_super_block *es); +extern void ext4_superblock_csum_set(struct super_block *sb); extern void *ext4_kvmalloc(size_t size, gfp_t flags); extern void *ext4_kvzalloc(size_t size, gfp_t flags); extern void ext4_kvfree(void *ptr); @@ -2323,9 +2322,7 @@ static inline void ext4_mark_super_dirty(struct super_block *sb) { - struct ext4_super_block *es = EXT4_SB(sb)->s_es; - - ext4_superblock_csum_set(sb, es); + ext4_superblock_csum_set(sb); if (EXT4_SB(sb)->s_journal == NULL) sb->s_dirt =1; } --- linux-3.5.0.orig/fs/autofs4/root.c +++ linux-3.5.0/fs/autofs4/root.c @@ -392,10 +392,12 @@ ino->flags |= AUTOFS_INF_PENDING; spin_unlock(&sbi->fs_lock); status = autofs4_mount_wait(dentry); - if (status) - return ERR_PTR(status); spin_lock(&sbi->fs_lock); ino->flags &= ~AUTOFS_INF_PENDING; + if (status) { + spin_unlock(&sbi->fs_lock); + return ERR_PTR(status); + } } done: if (!(ino->flags & AUTOFS_INF_EXPIRING)) { --- linux-3.5.0.orig/fs/autofs4/expire.c +++ linux-3.5.0/fs/autofs4/expire.c @@ -61,15 +61,6 @@ /* This is an autofs submount, we can't expire it */ if (autofs_type_indirect(sbi->type)) goto done; - - /* - * Otherwise it's an offset mount and we need to check - * if we can umount its mount, if there is one. - */ - if (!d_mountpoint(path.dentry)) { - status = 0; - goto done; - } } /* Update the expiry counter if fs is busy */ --- linux-3.5.0.orig/fs/ncpfs/dir.c +++ linux-3.5.0/fs/ncpfs/dir.c @@ -302,7 +302,7 @@ if (dentry == dentry->d_sb->s_root) return 1; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; parent = dget_parent(dentry); @@ -1033,15 +1033,6 @@ DPRINTK("ncp_rmdir: removing %s/%s\n", dentry->d_parent->d_name.name, dentry->d_name.name); - /* - * fail with EBUSY if there are still references to this - * directory. - */ - dentry_unhash(dentry); - error = -EBUSY; - if (!d_unhashed(dentry)) - goto out; - len = sizeof(__name); error = ncp_io2vol(server, __name, &len, dentry->d_name.name, dentry->d_name.len, !ncp_preserve_case(dir)); --- linux-3.5.0.orig/fs/cachefiles/rdwr.c +++ linux-3.5.0/fs/cachefiles/rdwr.c @@ -918,7 +918,7 @@ * own time */ dget(object->backer); mntget(cache->mnt); - file = dentry_open(object->backer, cache->mnt, O_RDWR, + file = dentry_open(object->backer, cache->mnt, O_RDWR | O_LARGEFILE, cache->cache_cred); if (IS_ERR(file)) { ret = PTR_ERR(file); --- linux-3.5.0.orig/fs/btrfs/extent_io.h +++ linux-3.5.0/fs/btrfs/extent_io.h @@ -314,6 +314,8 @@ unsigned long *map_len); int extent_range_uptodate(struct extent_io_tree *tree, u64 start, u64 end); +int extent_range_clear_dirty_for_io(struct inode *inode, u64 start, u64 end); +int extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end); int extent_clear_unlock_delalloc(struct inode *inode, struct extent_io_tree *tree, u64 start, u64 end, struct page *locked_page, --- linux-3.5.0.orig/fs/btrfs/extent_io.c +++ linux-3.5.0/fs/btrfs/extent_io.c @@ -1229,6 +1229,39 @@ GFP_NOFS); } +int extent_range_clear_dirty_for_io(struct inode *inode, u64 start, u64 end) +{ + unsigned long index = start >> PAGE_CACHE_SHIFT; + unsigned long end_index = end >> PAGE_CACHE_SHIFT; + struct page *page; + + while (index <= end_index) { + page = find_get_page(inode->i_mapping, index); + BUG_ON(!page); /* Pages should be in the extent_io_tree */ + clear_page_dirty_for_io(page); + page_cache_release(page); + index++; + } + return 0; +} + +int extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end) +{ + unsigned long index = start >> PAGE_CACHE_SHIFT; + unsigned long end_index = end >> PAGE_CACHE_SHIFT; + struct page *page; + + while (index <= end_index) { + page = find_get_page(inode->i_mapping, index); + BUG_ON(!page); /* Pages should be in the extent_io_tree */ + account_page_redirty(page); + __set_page_dirty_nobuffers(page); + page_cache_release(page); + index++; + } + return 0; +} + /* * helper function to set both pages and extents in the tree writeback */ @@ -2329,23 +2362,10 @@ if (uptodate && tree->ops && tree->ops->readpage_end_io_hook) { ret = tree->ops->readpage_end_io_hook(page, start, end, state, mirror); - if (ret) { - /* no IO indicated but software detected errors - * in the block, either checksum errors or - * issues with the contents */ - struct btrfs_root *root = - BTRFS_I(page->mapping->host)->root; - struct btrfs_device *device; - + if (ret) uptodate = 0; - device = btrfs_find_device_for_logical( - root, start, mirror); - if (device) - btrfs_dev_stat_inc_and_print(device, - BTRFS_DEV_STAT_CORRUPTION_ERRS); - } else { + else clean_io_failure(start, page); - } } if (!uptodate && tree->ops && tree->ops->readpage_io_failed_hook) { --- linux-3.5.0.orig/fs/btrfs/ioctl.c +++ linux-3.5.0/fs/btrfs/ioctl.c @@ -1665,7 +1665,11 @@ item_off = btrfs_item_ptr_offset(leaf, i); item_len = btrfs_item_size_nr(leaf, i); - if (item_len > BTRFS_SEARCH_ARGS_BUFSIZE) + btrfs_item_key_to_cpu(leaf, key, i); + if (!key_in_sk(key, sk)) + continue; + + if (sizeof(sh) + item_len > BTRFS_SEARCH_ARGS_BUFSIZE) item_len = 0; if (sizeof(sh) + item_len + *sk_offset > @@ -1674,10 +1678,6 @@ goto overflow; } - btrfs_item_key_to_cpu(leaf, key, i); - if (!key_in_sk(key, sk)) - continue; - sh.objectid = key->objectid; sh.offset = key->offset; sh.type = key->type; --- linux-3.5.0.orig/fs/btrfs/volumes.c +++ linux-3.5.0/fs/btrfs/volumes.c @@ -575,6 +575,7 @@ new_device->writeable = 0; new_device->in_fs_metadata = 0; new_device->can_discard = 0; + spin_lock_init(&new_device->io_lock); list_replace_rcu(&device->dev_list, &new_device->dev_list); call_rcu(&device->rcu, free_device); @@ -608,6 +609,12 @@ __btrfs_close_devices(fs_devices); free_fs_devices(fs_devices); } + /* + * Wait for rcu kworkers under __btrfs_close_devices + * to finish all blkdev_puts so device is really + * free when umount is done. + */ + rcu_barrier(); return ret; } @@ -4602,28 +4609,6 @@ return ret; } -struct btrfs_device *btrfs_find_device_for_logical(struct btrfs_root *root, - u64 logical, int mirror_num) -{ - struct btrfs_mapping_tree *map_tree = &root->fs_info->mapping_tree; - int ret; - u64 map_length = 0; - struct btrfs_bio *bbio = NULL; - struct btrfs_device *device; - - BUG_ON(mirror_num == 0); - ret = btrfs_map_block(map_tree, WRITE, logical, &map_length, &bbio, - mirror_num); - if (ret) { - BUG_ON(bbio != NULL); - return NULL; - } - BUG_ON(mirror_num != bbio->mirror_num); - device = bbio->stripes[mirror_num - 1].dev; - kfree(bbio); - return device; -} - int btrfs_read_chunk_tree(struct btrfs_root *root) { struct btrfs_path *path; --- linux-3.5.0.orig/fs/btrfs/volumes.h +++ linux-3.5.0/fs/btrfs/volumes.h @@ -288,8 +288,6 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset); int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, u64 *start, u64 *max_avail); -struct btrfs_device *btrfs_find_device_for_logical(struct btrfs_root *root, - u64 logical, int mirror_num); void btrfs_dev_stat_print_on_error(struct btrfs_device *device); void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); int btrfs_get_dev_stats(struct btrfs_root *root, --- linux-3.5.0.orig/fs/btrfs/inode.c +++ linux-3.5.0/fs/btrfs/inode.c @@ -349,6 +349,7 @@ int i; int will_compress; int compress_type = root->fs_info->compress_type; + int redirty = 0; /* if this is a small write inside eof, kick off a defrag */ if ((end - start + 1) < 16 * 1024 && @@ -411,6 +412,17 @@ if (BTRFS_I(inode)->force_compress) compress_type = BTRFS_I(inode)->force_compress; + /* + * we need to call clear_page_dirty_for_io on each + * page in the range. Otherwise applications with the file + * mmap'd can wander in and change the page contents while + * we are compressing them. + * + * If the compression fails for any reason, we set the pages + * dirty again later on. + */ + extent_range_clear_dirty_for_io(inode, start, end); + redirty = 1; ret = btrfs_compress_pages(compress_type, inode->i_mapping, start, total_compressed, pages, @@ -552,6 +564,8 @@ __set_page_dirty_nobuffers(locked_page); /* unlocked later on in the async handlers */ } + if (redirty) + extent_range_redirty_for_io(inode, start, end); add_async_extent(async_cow, start, end - start + 1, 0, NULL, 0, BTRFS_COMPRESS_NONE); *num_added += 1; @@ -2433,6 +2447,7 @@ */ set_bit(BTRFS_INODE_HAS_ORPHAN_ITEM, &BTRFS_I(inode)->runtime_flags); + atomic_inc(&root->orphan_inodes); /* if we have links, this was a truncate, lets do that */ if (inode->i_nlink) { --- linux-3.5.0.orig/fs/btrfs/tree-log.c +++ linux-3.5.0/fs/btrfs/tree-log.c @@ -315,6 +315,7 @@ unsigned long src_ptr; unsigned long dst_ptr; int overwrite_root = 0; + bool inode_item = key->type == BTRFS_INODE_ITEM_KEY; if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) overwrite_root = 1; @@ -324,6 +325,9 @@ /* look for the key in the destination tree */ ret = btrfs_search_slot(NULL, root, key, path, 0, 0); + if (ret < 0) + return ret; + if (ret == 0) { char *src_copy; char *dst_copy; @@ -365,6 +369,30 @@ return 0; } + /* + * We need to load the old nbytes into the inode so when we + * replay the extents we've logged we get the right nbytes. + */ + if (inode_item) { + struct btrfs_inode_item *item; + u64 nbytes; + + item = btrfs_item_ptr(path->nodes[0], path->slots[0], + struct btrfs_inode_item); + nbytes = btrfs_inode_nbytes(path->nodes[0], item); + item = btrfs_item_ptr(eb, slot, + struct btrfs_inode_item); + btrfs_set_inode_nbytes(eb, item, nbytes); + } + } else if (inode_item) { + struct btrfs_inode_item *item; + + /* + * New inode, set nbytes to 0 so that the nbytes comes out + * properly when we replay the extents. + */ + item = btrfs_item_ptr(eb, slot, struct btrfs_inode_item); + btrfs_set_inode_nbytes(eb, item, 0); } insert: btrfs_release_path(path); @@ -486,7 +514,7 @@ u64 extent_end; u64 alloc_hint; u64 start = key->offset; - u64 saved_nbytes; + u64 nbytes = 0; struct btrfs_file_extent_item *item; struct inode *inode = NULL; unsigned long size; @@ -496,10 +524,19 @@ found_type = btrfs_file_extent_type(eb, item); if (found_type == BTRFS_FILE_EXTENT_REG || - found_type == BTRFS_FILE_EXTENT_PREALLOC) - extent_end = start + btrfs_file_extent_num_bytes(eb, item); - else if (found_type == BTRFS_FILE_EXTENT_INLINE) { + found_type == BTRFS_FILE_EXTENT_PREALLOC) { + nbytes = btrfs_file_extent_num_bytes(eb, item); + extent_end = start + nbytes; + + /* + * We don't add to the inodes nbytes if we are prealloc or a + * hole. + */ + if (btrfs_file_extent_disk_bytenr(eb, item) == 0) + nbytes = 0; + } else if (found_type == BTRFS_FILE_EXTENT_INLINE) { size = btrfs_file_extent_inline_len(eb, item); + nbytes = btrfs_file_extent_ram_bytes(eb, item); extent_end = (start + size + mask) & ~mask; } else { ret = 0; @@ -548,7 +585,6 @@ } btrfs_release_path(path); - saved_nbytes = inode_get_bytes(inode); /* drop any overlapping extents */ ret = btrfs_drop_extents(trans, inode, start, extent_end, &alloc_hint, 1); @@ -636,7 +672,7 @@ BUG_ON(ret); } - inode_set_bytes(inode, saved_nbytes); + inode_add_bytes(inode, nbytes); btrfs_update_inode(trans, root, inode); out: if (inode) @@ -1132,7 +1168,10 @@ btrfs_release_path(path); if (ret == 0) { - btrfs_inc_nlink(inode); + if (!inode->i_nlink) + set_nlink(inode, 1); + else + btrfs_inc_nlink(inode); btrfs_update_inode(trans, root, inode); } else if (ret == -EEXIST) { ret = 0; --- linux-3.5.0.orig/fs/btrfs/free-space-cache.c +++ linux-3.5.0/fs/btrfs/free-space-cache.c @@ -1876,11 +1876,13 @@ { struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; struct btrfs_free_space *info; - int ret = 0; + int ret; + bool re_search = false; spin_lock(&ctl->tree_lock); again: + ret = 0; if (!bytes) goto out_lock; @@ -1893,17 +1895,17 @@ info = tree_search_offset(ctl, offset_to_bitmap(ctl, offset), 1, 0); if (!info) { - /* the tree logging code might be calling us before we - * have fully loaded the free space rbtree for this - * block group. So it is possible the entry won't - * be in the rbtree yet at all. The caching code - * will make sure not to put it in the rbtree if - * the logging code has pinned it. + /* + * If we found a partial bit of our free space in a + * bitmap but then couldn't find the other part this may + * be a problem, so WARN about it. */ + WARN_ON(re_search); goto out_lock; } } + re_search = false; if (!info->bitmap) { unlink_free_space(ctl, info); if (offset == info->offset) { @@ -1949,8 +1951,10 @@ } ret = remove_from_bitmap(ctl, info, &offset, &bytes); - if (ret == -EAGAIN) + if (ret == -EAGAIN) { + re_search = true; goto again; + } BUG_ON(ret); /* logic error */ out_lock: spin_unlock(&ctl->tree_lock); --- linux-3.5.0.orig/fs/btrfs/async-thread.c +++ linux-3.5.0/fs/btrfs/async-thread.c @@ -206,10 +206,17 @@ work->ordered_func(work); - /* now take the lock again and call the freeing code */ + /* now take the lock again and drop our item from the list */ spin_lock(&workers->order_lock); list_del(&work->order_list); + spin_unlock(&workers->order_lock); + + /* + * we don't want to call the ordered free functions + * with the lock held though + */ work->ordered_free(work); + spin_lock(&workers->order_lock); } spin_unlock(&workers->order_lock); --- linux-3.5.0.orig/fs/btrfs/extent-tree.c +++ linux-3.5.0/fs/btrfs/extent-tree.c @@ -4218,7 +4218,7 @@ spin_lock(&sinfo->lock); spin_lock(&block_rsv->lock); - block_rsv->size = num_bytes; + block_rsv->size = min_t(u64, num_bytes, 512 * 1024 * 1024); num_bytes = sinfo->bytes_used + sinfo->bytes_pinned + sinfo->bytes_reserved + sinfo->bytes_readonly + @@ -4487,14 +4487,49 @@ * If the inodes csum_bytes is the same as the original * csum_bytes then we know we haven't raced with any free()ers * so we can just reduce our inodes csum bytes and carry on. - * Otherwise we have to do the normal free thing to account for - * the case that the free side didn't free up its reserve - * because of this outstanding reservation. */ - if (BTRFS_I(inode)->csum_bytes == csum_bytes) + if (BTRFS_I(inode)->csum_bytes == csum_bytes) { calc_csum_metadata_size(inode, num_bytes, 0); - else - to_free = calc_csum_metadata_size(inode, num_bytes, 0); + } else { + u64 orig_csum_bytes = BTRFS_I(inode)->csum_bytes; + u64 bytes; + + /* + * This is tricky, but first we need to figure out how much we + * free'd from any free-ers that occured during this + * reservation, so we reset ->csum_bytes to the csum_bytes + * before we dropped our lock, and then call the free for the + * number of bytes that were freed while we were trying our + * reservation. + */ + bytes = csum_bytes - BTRFS_I(inode)->csum_bytes; + BTRFS_I(inode)->csum_bytes = csum_bytes; + to_free = calc_csum_metadata_size(inode, bytes, 0); + + + /* + * Now we need to see how much we would have freed had we not + * been making this reservation and our ->csum_bytes were not + * artificially inflated. + */ + BTRFS_I(inode)->csum_bytes = csum_bytes - num_bytes; + bytes = csum_bytes - orig_csum_bytes; + bytes = calc_csum_metadata_size(inode, bytes, 0); + + /* + * Now reset ->csum_bytes to what it should be. If bytes is + * more than to_free then we would have free'd more space had we + * not had an artificially high ->csum_bytes, so we need to free + * the remainder. If bytes is the same or less then we don't + * need to do anything, the other free-ers did the correct + * thing. + */ + BTRFS_I(inode)->csum_bytes = orig_csum_bytes - num_bytes; + if (bytes > to_free) + to_free = bytes - to_free; + else + to_free = 0; + } spin_unlock(&BTRFS_I(inode)->lock); if (dropped) to_free += btrfs_calc_trans_metadata_size(root, dropped); --- linux-3.5.0.orig/fs/btrfs/scrub.c +++ linux-3.5.0/fs/btrfs/scrub.c @@ -385,7 +385,6 @@ eb = path->nodes[0]; ei = btrfs_item_ptr(eb, path->slots[0], struct btrfs_extent_item); item_size = btrfs_item_size_nr(eb, path->slots[0]); - btrfs_release_path(path); if (ret & BTRFS_EXTENT_FLAG_TREE_BLOCK) { do { @@ -401,7 +400,9 @@ ret < 0 ? -1 : ref_level, ret < 0 ? -1 : ref_root); } while (ret != 1); + btrfs_release_path(path); } else { + btrfs_release_path(path); swarn.path = path; iterate_extent_inodes(fs_info, found_key.objectid, extent_item_pos, 1, --- linux-3.5.0.orig/fs/fuse/dev.c +++ linux-3.5.0/fs/fuse/dev.c @@ -1576,6 +1576,7 @@ req->pages[req->num_pages] = page; req->num_pages++; + offset = 0; num -= this_num; total_len += this_num; index++; --- linux-3.5.0.orig/fs/fuse/file.c +++ linux-3.5.0/fs/fuse/file.c @@ -1700,7 +1700,7 @@ size_t n; u32 max = FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT; - for (n = 0; n < count; n++) { + for (n = 0; n < count; n++, iov++) { if (iov->iov_len > (size_t) max) return -ENOMEM; max -= iov->iov_len; --- linux-3.5.0.orig/fs/fuse/dir.c +++ linux-3.5.0/fs/fuse/dir.c @@ -645,7 +645,14 @@ spin_lock(&fc->lock); fi->attr_version = ++fc->attr_version; - drop_nlink(inode); + /* + * If i_nlink == 0 then unlink doesn't make sense, yet this can + * happen if userspace filesystem is careless. It would be + * difficult to enforce correct nlink usage so just ignore this + * condition here + */ + if (inode->i_nlink > 0) + drop_nlink(inode); spin_unlock(&fc->lock); fuse_invalidate_attr(inode); fuse_invalidate_attr(dir); --- linux-3.5.0.orig/fs/hfsplus/extents.c +++ linux-3.5.0/fs/hfsplus/extents.c @@ -517,7 +517,7 @@ struct address_space *mapping = inode->i_mapping; struct page *page; void *fsdata; - u32 size = inode->i_size; + loff_t size = inode->i_size; res = pagecache_write_begin(NULL, mapping, size, 0, AOP_FLAG_UNINTERRUPTIBLE, --- linux-3.5.0.orig/fs/pstore/platform.c +++ linux-3.5.0/fs/pstore/platform.c @@ -88,6 +88,27 @@ } } +bool pstore_cannot_block_path(enum kmsg_dump_reason reason) +{ + /* + * In case of NMI path, pstore shouldn't be blocked + * regardless of reason. + */ + if (in_nmi()) + return true; + + switch (reason) { + /* In panic case, other cpus are stopped by smp_send_stop(). */ + case KMSG_DUMP_PANIC: + /* Emergency restart shouldn't be blocked by spin lock. */ + case KMSG_DUMP_EMERG: + return true; + default: + return false; + } +} +EXPORT_SYMBOL_GPL(pstore_cannot_block_path); + /* * callback from kmsg_dump. (s2,l2) has the most recently * written bytes, older bytes are in (s1,l1). Save as much @@ -106,10 +127,12 @@ why = get_reason_str(reason); - if (in_nmi()) { - is_locked = spin_trylock(&psinfo->buf_lock); - if (!is_locked) - pr_err("pstore dump routine blocked in NMI, may corrupt error record\n"); + if (pstore_cannot_block_path(reason)) { + is_locked = spin_trylock_irqsave(&psinfo->buf_lock, flags); + if (!is_locked) { + pr_err("pstore dump routine blocked in %s path, may corrupt error record\n" + , in_nmi() ? "NMI" : why); + } } else spin_lock_irqsave(&psinfo->buf_lock, flags); oopscount++; @@ -135,9 +158,9 @@ total += hsize + len; part++; } - if (in_nmi()) { + if (pstore_cannot_block_path(reason)) { if (is_locked) - spin_unlock(&psinfo->buf_lock); + spin_unlock_irqrestore(&psinfo->buf_lock, flags); } else spin_unlock_irqrestore(&psinfo->buf_lock, flags); } --- linux-3.5.0.orig/fs/coda/dir.c +++ linux-3.5.0/fs/coda/dir.c @@ -541,7 +541,7 @@ struct inode *inode; struct coda_inode_info *cii; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = de->d_inode; --- linux-3.5.0.orig/fs/exofs/ore.c +++ linux-3.5.0/fs/exofs/ore.c @@ -837,11 +837,11 @@ bio->bi_rw |= REQ_WRITE; } - osd_req_write(or, _ios_obj(ios, dev), per_dev->offset, - bio, per_dev->length); + osd_req_write(or, _ios_obj(ios, cur_comp), + per_dev->offset, bio, per_dev->length); ORE_DBGMSG("write(0x%llx) offset=0x%llx " "length=0x%llx dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), _LLU(per_dev->offset), _LLU(per_dev->length), dev); } else if (ios->kern_buff) { @@ -853,20 +853,20 @@ (ios->si.unit_off + ios->length > ios->layout->stripe_unit)); - ret = osd_req_write_kern(or, _ios_obj(ios, per_dev->dev), + ret = osd_req_write_kern(or, _ios_obj(ios, cur_comp), per_dev->offset, ios->kern_buff, ios->length); if (unlikely(ret)) goto out; ORE_DBGMSG2("write_kern(0x%llx) offset=0x%llx " "length=0x%llx dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), _LLU(per_dev->offset), _LLU(ios->length), per_dev->dev); } else { - osd_req_set_attributes(or, _ios_obj(ios, dev)); + osd_req_set_attributes(or, _ios_obj(ios, cur_comp)); ORE_DBGMSG2("obj(0x%llx) set_attributes=%d dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), ios->out_attr_len, dev); } --- linux-3.5.0.orig/fs/fscache/stats.c +++ linux-3.5.0/fs/fscache/stats.c @@ -276,5 +276,5 @@ .open = fscache_stats_open, .read = seq_read, .llseek = seq_lseek, - .release = seq_release, + .release = single_release, }; --- linux-3.5.0.orig/fs/gfs2/lops.c +++ linux-3.5.0/fs/gfs2/lops.c @@ -393,12 +393,10 @@ struct gfs2_meta_header *mh; struct gfs2_trans *tr; - lock_buffer(bd->bd_bh); - gfs2_log_lock(sdp); tr = current->journal_info; tr->tr_touched = 1; if (!list_empty(&bd->bd_list)) - goto out; + return; set_bit(GLF_LFLUSH, &bd->bd_gl->gl_flags); set_bit(GLF_DIRTY, &bd->bd_gl->gl_flags); gfs2_meta_check(sdp, bd->bd_bh); @@ -409,9 +407,6 @@ sdp->sd_log_num_buf++; list_add(&bd->bd_list, &sdp->sd_log_le_buf); tr->tr_num_buf_new++; -out: - gfs2_log_unlock(sdp); - unlock_buffer(bd->bd_bh); } static void gfs2_check_magic(struct buffer_head *bh) @@ -772,12 +767,10 @@ struct address_space *mapping = bd->bd_bh->b_page->mapping; struct gfs2_inode *ip = GFS2_I(mapping->host); - lock_buffer(bd->bd_bh); - gfs2_log_lock(sdp); if (tr) tr->tr_touched = 1; if (!list_empty(&bd->bd_list)) - goto out; + return; set_bit(GLF_LFLUSH, &bd->bd_gl->gl_flags); set_bit(GLF_DIRTY, &bd->bd_gl->gl_flags); if (gfs2_is_jdata(ip)) { @@ -788,9 +781,6 @@ } else { list_add_tail(&bd->bd_list, &sdp->sd_log_le_ordered); } -out: - gfs2_log_unlock(sdp); - unlock_buffer(bd->bd_bh); } /** --- linux-3.5.0.orig/fs/gfs2/file.c +++ linux-3.5.0/fs/gfs2/file.c @@ -492,15 +492,13 @@ struct gfs2_holder i_gh; int error; - gfs2_holder_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh); - error = gfs2_glock_nq(&i_gh); - if (error == 0) { - file_accessed(file); - gfs2_glock_dq(&i_gh); - } - gfs2_holder_uninit(&i_gh); + error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, + &i_gh); if (error) return error; + /* grab lock to update inode */ + gfs2_glock_dq_uninit(&i_gh); + file_accessed(file); } vma->vm_ops = &gfs2_vm_ops; vma->vm_flags |= VM_CAN_NONLINEAR; @@ -902,8 +900,11 @@ cmd = F_SETLK; fl->fl_type = F_UNLCK; } - if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) + if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) { + if (fl->fl_type == F_UNLCK) + posix_lock_file_wait(file, fl); return -EIO; + } if (IS_GETLK(cmd)) return dlm_posix_get(ls->ls_dlm, ip->i_no_addr, file, fl); else if (fl->fl_type == F_UNLCK) --- linux-3.5.0.orig/fs/gfs2/export.c +++ linux-3.5.0/fs/gfs2/export.c @@ -161,6 +161,8 @@ case GFS2_SMALL_FH_SIZE: case GFS2_LARGE_FH_SIZE: case GFS2_OLD_FH_SIZE: + if (fh_len < GFS2_SMALL_FH_SIZE) + return NULL; this.no_formal_ino = ((u64)be32_to_cpu(fh[0])) << 32; this.no_formal_ino |= be32_to_cpu(fh[1]); this.no_addr = ((u64)be32_to_cpu(fh[2])) << 32; @@ -180,6 +182,8 @@ switch (fh_type) { case GFS2_LARGE_FH_SIZE: case GFS2_OLD_FH_SIZE: + if (fh_len < GFS2_LARGE_FH_SIZE) + return NULL; parent.no_formal_ino = ((u64)be32_to_cpu(fh[4])) << 32; parent.no_formal_ino |= be32_to_cpu(fh[5]); parent.no_addr = ((u64)be32_to_cpu(fh[6])) << 32; --- linux-3.5.0.orig/fs/gfs2/super.c +++ linux-3.5.0/fs/gfs2/super.c @@ -800,7 +800,8 @@ return; } need_unlock = 1; - } + } else if (WARN_ON_ONCE(ip->i_gl->gl_state != LM_ST_EXCLUSIVE)) + return; if (current->journal_info == NULL) { ret = gfs2_trans_begin(sdp, RES_DINODE, 0); --- linux-3.5.0.orig/fs/gfs2/trans.c +++ linux-3.5.0/fs/gfs2/trans.c @@ -151,14 +151,22 @@ struct gfs2_sbd *sdp = gl->gl_sbd; struct gfs2_bufdata *bd; + lock_buffer(bh); + gfs2_log_lock(sdp); bd = bh->b_private; if (bd) gfs2_assert(sdp, bd->bd_gl == gl); else { + gfs2_log_unlock(sdp); + unlock_buffer(bh); gfs2_attach_bufdata(gl, bh, meta); bd = bh->b_private; + lock_buffer(bh); + gfs2_log_lock(sdp); } lops_add(sdp, bd); + gfs2_log_unlock(sdp); + unlock_buffer(bh); } void gfs2_trans_add_revoke(struct gfs2_sbd *sdp, struct gfs2_bufdata *bd) --- linux-3.5.0.orig/fs/9p/vfs_dentry.c +++ linux-3.5.0/fs/9p/vfs_dentry.c @@ -106,7 +106,7 @@ struct inode *inode; struct v9fs_inode *v9inode; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; --- linux-3.5.0.orig/fs/ext3/inode.c +++ linux-3.5.0/fs/ext3/inode.c @@ -3072,6 +3072,8 @@ struct ext3_inode_info *ei = EXT3_I(inode); struct buffer_head *bh = iloc->bh; int err = 0, rc, block; + int need_datasync = 0; + __le32 disksize; uid_t i_uid; gid_t i_gid; @@ -3113,7 +3115,11 @@ raw_inode->i_gid_high = 0; } raw_inode->i_links_count = cpu_to_le16(inode->i_nlink); - raw_inode->i_size = cpu_to_le32(ei->i_disksize); + disksize = cpu_to_le32(ei->i_disksize); + if (disksize != raw_inode->i_size) { + need_datasync = 1; + raw_inode->i_size = disksize; + } raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec); raw_inode->i_ctime = cpu_to_le32(inode->i_ctime.tv_sec); raw_inode->i_mtime = cpu_to_le32(inode->i_mtime.tv_sec); @@ -3129,8 +3135,11 @@ if (!S_ISREG(inode->i_mode)) { raw_inode->i_dir_acl = cpu_to_le32(ei->i_dir_acl); } else { - raw_inode->i_size_high = - cpu_to_le32(ei->i_disksize >> 32); + disksize = cpu_to_le32(ei->i_disksize >> 32); + if (disksize != raw_inode->i_size_high) { + raw_inode->i_size_high = disksize; + need_datasync = 1; + } if (ei->i_disksize > 0x7fffffffULL) { struct super_block *sb = inode->i_sb; if (!EXT3_HAS_RO_COMPAT_FEATURE(sb, @@ -3183,6 +3192,8 @@ ext3_clear_inode_state(inode, EXT3_STATE_NEW); atomic_set(&ei->i_sync_tid, handle->h_transaction->t_tid); + if (need_datasync) + atomic_set(&ei->i_datasync_tid, handle->h_transaction->t_tid); out_brelse: brelse (bh); ext3_std_error(inode->i_sb, err); --- linux-3.5.0.orig/fs/ext3/super.c +++ linux-3.5.0/fs/ext3/super.c @@ -364,7 +364,7 @@ return bdev; fail: - ext3_msg(sb, "error: failed to open journal device %s: %ld", + ext3_msg(sb, KERN_ERR, "error: failed to open journal device %s: %ld", __bdevname(dev, b), PTR_ERR(bdev)); return NULL; @@ -893,7 +893,7 @@ /*todo: use simple_strtoll with >32bit ext3 */ sb_block = simple_strtoul(options, &options, 0); if (*options && *options != ',') { - ext3_msg(sb, "error: invalid sb specification: %s", + ext3_msg(sb, KERN_ERR, "error: invalid sb specification: %s", (char *) *data); return 1; } --- linux-3.5.0.orig/fs/overlayfs/inode.c +++ linux-3.5.0/fs/overlayfs/inode.c @@ -0,0 +1,375 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include "overlayfs.h" + +int ovl_setattr(struct dentry *dentry, struct iattr *attr) +{ + struct dentry *upperdentry; + int err; + + if ((attr->ia_valid & ATTR_SIZE) && !ovl_dentry_upper(dentry)) + err = ovl_copy_up_truncate(dentry, attr->ia_size); + else + err = ovl_copy_up(dentry); + if (err) + return err; + + upperdentry = ovl_dentry_upper(dentry); + + if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) + attr->ia_valid &= ~ATTR_MODE; + + mutex_lock(&upperdentry->d_inode->i_mutex); + err = notify_change(upperdentry, attr); + mutex_unlock(&upperdentry->d_inode->i_mutex); + + return err; +} + +static int ovl_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + struct path realpath; + + ovl_path_real(dentry, &realpath); + return vfs_getattr(realpath.mnt, realpath.dentry, stat); +} + +int ovl_permission(struct inode *inode, int mask) +{ + struct ovl_entry *oe; + struct dentry *alias = NULL; + struct inode *realinode; + struct dentry *realdentry; + bool is_upper; + int err; + + if (S_ISDIR(inode->i_mode)) { + oe = inode->i_private; + } else if (mask & MAY_NOT_BLOCK) { + return -ECHILD; + } else { + /* + * For non-directories find an alias and get the info + * from there. + */ + spin_lock(&inode->i_lock); + if (WARN_ON(list_empty(&inode->i_dentry))) { + spin_unlock(&inode->i_lock); + return -ENOENT; + } + alias = list_entry(inode->i_dentry.next, + struct dentry, d_alias); + dget(alias); + spin_unlock(&inode->i_lock); + oe = alias->d_fsdata; + } + + realdentry = ovl_entry_real(oe, &is_upper); + + /* Careful in RCU walk mode */ + realinode = ACCESS_ONCE(realdentry->d_inode); + if (!realinode) { + WARN_ON(!(mask & MAY_NOT_BLOCK)); + err = -ENOENT; + goto out_dput; + } + + if (mask & MAY_WRITE) { + umode_t mode = realinode->i_mode; + + /* + * Writes will always be redirected to upper layer, so + * ignore lower layer being read-only. + * + * If the overlay itself is read-only then proceed + * with the permission check, don't return EROFS. + * This will only happen if this is the lower layer of + * another overlayfs. + * + * If upper fs becomes read-only after the overlay was + * constructed return EROFS to prevent modification of + * upper layer. + */ + err = -EROFS; + if (is_upper && !IS_RDONLY(inode) && IS_RDONLY(realinode) && + (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) + goto out_dput; + } + + err = inode_only_permission(realinode, mask); +out_dput: + dput(alias); + return err; +} + + +struct ovl_link_data { + struct dentry *realdentry; + void *cookie; +}; + +static void *ovl_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + void *ret; + struct dentry *realdentry; + struct inode *realinode; + + realdentry = ovl_dentry_real(dentry); + realinode = realdentry->d_inode; + + if (WARN_ON(!realinode->i_op->follow_link)) + return ERR_PTR(-EPERM); + + ret = realinode->i_op->follow_link(realdentry, nd); + if (IS_ERR(ret)) + return ret; + + if (realinode->i_op->put_link) { + struct ovl_link_data *data; + + data = kmalloc(sizeof(struct ovl_link_data), GFP_KERNEL); + if (!data) { + realinode->i_op->put_link(realdentry, nd, ret); + return ERR_PTR(-ENOMEM); + } + data->realdentry = realdentry; + data->cookie = ret; + + return data; + } else { + return NULL; + } +} + +static void ovl_put_link(struct dentry *dentry, struct nameidata *nd, void *c) +{ + struct inode *realinode; + struct ovl_link_data *data = c; + + if (!data) + return; + + realinode = data->realdentry->d_inode; + realinode->i_op->put_link(data->realdentry, nd, data->cookie); + kfree(data); +} + +static int ovl_readlink(struct dentry *dentry, char __user *buf, int bufsiz) +{ + struct path realpath; + struct inode *realinode; + + ovl_path_real(dentry, &realpath); + realinode = realpath.dentry->d_inode; + + if (!realinode->i_op->readlink) + return -EINVAL; + + touch_atime(&realpath); + + return realinode->i_op->readlink(realpath.dentry, buf, bufsiz); +} + + +static bool ovl_is_private_xattr(const char *name) +{ + return strncmp(name, "trusted.overlay.", 14) == 0; +} + +int ovl_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + struct dentry *upperdentry; + + if (ovl_is_private_xattr(name)) + return -EPERM; + + err = ovl_copy_up(dentry); + if (err) + return err; + + upperdentry = ovl_dentry_upper(dentry); + return vfs_setxattr(upperdentry, name, value, size, flags); +} + +ssize_t ovl_getxattr(struct dentry *dentry, const char *name, + void *value, size_t size) +{ + if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE && + ovl_is_private_xattr(name)) + return -ENODATA; + + return vfs_getxattr(ovl_dentry_real(dentry), name, value, size); +} + +ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size) +{ + ssize_t res; + int off; + + res = vfs_listxattr(ovl_dentry_real(dentry), list, size); + if (res <= 0 || size == 0) + return res; + + if (ovl_path_type(dentry->d_parent) != OVL_PATH_MERGE) + return res; + + /* filter out private xattrs */ + for (off = 0; off < res;) { + char *s = list + off; + size_t slen = strlen(s) + 1; + + BUG_ON(off + slen > res); + + if (ovl_is_private_xattr(s)) { + res -= slen; + memmove(s, s + slen, res - off); + } else { + off += slen; + } + } + + return res; +} + +int ovl_removexattr(struct dentry *dentry, const char *name) +{ + int err; + struct path realpath; + enum ovl_path_type type; + + if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE && + ovl_is_private_xattr(name)) + return -ENODATA; + + type = ovl_path_real(dentry, &realpath); + if (type == OVL_PATH_LOWER) { + err = vfs_getxattr(realpath.dentry, name, NULL, 0); + if (err < 0) + return err; + + err = ovl_copy_up(dentry); + if (err) + return err; + + ovl_path_upper(dentry, &realpath); + } + + return vfs_removexattr(realpath.dentry, name); +} + +static bool ovl_open_need_copy_up(int flags, enum ovl_path_type type, + struct dentry *realdentry) +{ + if (type != OVL_PATH_LOWER) + return false; + + if (special_file(realdentry->d_inode->i_mode)) + return false; + + if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC)) + return false; + + return true; +} + +static struct file *ovl_open(struct dentry *dentry, struct file *file, + const struct cred *cred) +{ + int err; + struct path realpath; + enum ovl_path_type type; + + type = ovl_path_real(dentry, &realpath); + if (ovl_open_need_copy_up(file->f_flags, type, realpath.dentry)) { + if (file->f_flags & O_TRUNC) + err = ovl_copy_up_truncate(dentry, 0); + else + err = ovl_copy_up(dentry); + if (err) + return ERR_PTR(err); + + ovl_path_upper(dentry, &realpath); + } + + return vfs_open(&realpath, file, cred); +} + +static const struct inode_operations ovl_file_inode_operations = { + .setattr = ovl_setattr, + .permission = ovl_permission, + .getattr = ovl_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, + .open = ovl_open, +}; + +static const struct inode_operations ovl_symlink_inode_operations = { + .setattr = ovl_setattr, + .follow_link = ovl_follow_link, + .put_link = ovl_put_link, + .readlink = ovl_readlink, + .getattr = ovl_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, +}; + +struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, + struct ovl_entry *oe) +{ + struct inode *inode; + + inode = new_inode(sb); + if (!inode) + return NULL; + + mode &= S_IFMT; + + inode->i_ino = get_next_ino(); + inode->i_mode = mode; + inode->i_flags |= S_NOATIME | S_NOCMTIME; + + switch (mode) { + case S_IFDIR: + inode->i_private = oe; + inode->i_op = &ovl_dir_inode_operations; + inode->i_fop = &ovl_dir_operations; + break; + + case S_IFLNK: + inode->i_op = &ovl_symlink_inode_operations; + break; + + case S_IFREG: + case S_IFSOCK: + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + inode->i_op = &ovl_file_inode_operations; + break; + + default: + WARN(1, "illegal file type: %i\n", mode); + iput(inode); + inode = NULL; + } + + return inode; + +} --- linux-3.5.0.orig/fs/overlayfs/readdir.c +++ linux-3.5.0/fs/overlayfs/readdir.c @@ -0,0 +1,566 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +struct ovl_cache_entry { + const char *name; + unsigned int len; + unsigned int type; + u64 ino; + bool is_whiteout; + struct list_head l_node; + struct rb_node node; +}; + +struct ovl_readdir_data { + struct rb_root *root; + struct list_head *list; + struct list_head *middle; + struct dentry *dir; + int count; + int err; +}; + +struct ovl_dir_file { + bool is_real; + bool is_cached; + struct list_head cursor; + u64 cache_version; + struct list_head cache; + struct file *realfile; +}; + +static struct ovl_cache_entry *ovl_cache_entry_from_node(struct rb_node *n) +{ + return container_of(n, struct ovl_cache_entry, node); +} + +static struct ovl_cache_entry *ovl_cache_entry_find(struct rb_root *root, + const char *name, int len) +{ + struct rb_node *node = root->rb_node; + int cmp; + + while (node) { + struct ovl_cache_entry *p = ovl_cache_entry_from_node(node); + + cmp = strncmp(name, p->name, len); + if (cmp > 0) + node = p->node.rb_right; + else if (cmp < 0 || len < p->len) + node = p->node.rb_left; + else + return p; + } + + return NULL; +} + +static struct ovl_cache_entry *ovl_cache_entry_new(const char *name, int len, + u64 ino, unsigned int d_type) +{ + struct ovl_cache_entry *p; + + p = kmalloc(sizeof(*p) + len + 1, GFP_KERNEL); + if (p) { + char *name_copy = (char *) (p + 1); + memcpy(name_copy, name, len); + name_copy[len] = '\0'; + p->name = name_copy; + p->len = len; + p->type = d_type; + p->ino = ino; + p->is_whiteout = false; + } + + return p; +} + +static int ovl_cache_entry_add_rb(struct ovl_readdir_data *rdd, + const char *name, int len, u64 ino, + unsigned int d_type) +{ + struct rb_node **newp = &rdd->root->rb_node; + struct rb_node *parent = NULL; + struct ovl_cache_entry *p; + + while (*newp) { + int cmp; + struct ovl_cache_entry *tmp; + + parent = *newp; + tmp = ovl_cache_entry_from_node(*newp); + cmp = strncmp(name, tmp->name, len); + if (cmp > 0) + newp = &tmp->node.rb_right; + else if (cmp < 0 || len < tmp->len) + newp = &tmp->node.rb_left; + else + return 0; + } + + p = ovl_cache_entry_new(name, len, ino, d_type); + if (p == NULL) + return -ENOMEM; + + list_add_tail(&p->l_node, rdd->list); + rb_link_node(&p->node, parent, newp); + rb_insert_color(&p->node, rdd->root); + + return 0; +} + +static int ovl_fill_lower(void *buf, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct ovl_readdir_data *rdd = buf; + struct ovl_cache_entry *p; + + rdd->count++; + p = ovl_cache_entry_find(rdd->root, name, namelen); + if (p) { + list_move_tail(&p->l_node, rdd->middle); + } else { + p = ovl_cache_entry_new(name, namelen, ino, d_type); + if (p == NULL) + rdd->err = -ENOMEM; + else + list_add_tail(&p->l_node, rdd->middle); + } + + return rdd->err; +} + +static void ovl_cache_free(struct list_head *list) +{ + struct ovl_cache_entry *p; + struct ovl_cache_entry *n; + + list_for_each_entry_safe(p, n, list, l_node) + kfree(p); + + INIT_LIST_HEAD(list); +} + +static int ovl_fill_upper(void *buf, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct ovl_readdir_data *rdd = buf; + + rdd->count++; + return ovl_cache_entry_add_rb(rdd, name, namelen, ino, d_type); +} + +static inline int ovl_dir_read(struct path *realpath, + struct ovl_readdir_data *rdd, filldir_t filler) +{ + struct file *realfile; + int err; + + realfile = ovl_path_open(realpath, O_RDONLY | O_DIRECTORY); + if (IS_ERR(realfile)) + return PTR_ERR(realfile); + + do { + rdd->count = 0; + rdd->err = 0; + err = vfs_readdir(realfile, filler, rdd); + if (err >= 0) + err = rdd->err; + } while (!err && rdd->count); + fput(realfile); + + return 0; +} + +static void ovl_dir_reset(struct file *file) +{ + struct ovl_dir_file *od = file->private_data; + enum ovl_path_type type = ovl_path_type(file->f_path.dentry); + + if (ovl_dentry_version_get(file->f_path.dentry) != od->cache_version) { + list_del_init(&od->cursor); + ovl_cache_free(&od->cache); + od->is_cached = false; + } + WARN_ON(!od->is_real && type != OVL_PATH_MERGE); + if (od->is_real && type == OVL_PATH_MERGE) { + fput(od->realfile); + od->realfile = NULL; + od->is_real = false; + } +} + +static int ovl_dir_mark_whiteouts(struct ovl_readdir_data *rdd) +{ + struct ovl_cache_entry *p; + struct dentry *dentry; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) { + ovl_cache_free(rdd->list); + return -ENOMEM; + } + + /* + * CAP_SYS_ADMIN for getxattr + * CAP_DAC_OVERRIDE for lookup + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + old_cred = override_creds(override_cred); + + mutex_lock(&rdd->dir->d_inode->i_mutex); + list_for_each_entry(p, rdd->list, l_node) { + if (p->type != DT_LNK) + continue; + + dentry = lookup_one_len(p->name, rdd->dir, p->len); + if (IS_ERR(dentry)) + continue; + + p->is_whiteout = ovl_is_whiteout(dentry); + dput(dentry); + } + mutex_unlock(&rdd->dir->d_inode->i_mutex); + + revert_creds(old_cred); + put_cred(override_cred); + + return 0; +} + +static inline int ovl_dir_read_merged(struct path *upperpath, + struct path *lowerpath, + struct ovl_readdir_data *rdd) +{ + int err; + struct rb_root root = RB_ROOT; + struct list_head middle; + + rdd->root = &root; + if (upperpath->dentry) { + rdd->dir = upperpath->dentry; + err = ovl_dir_read(upperpath, rdd, ovl_fill_upper); + if (err) + goto out; + + err = ovl_dir_mark_whiteouts(rdd); + if (err) + goto out; + } + /* + * Insert lowerpath entries before upperpath ones, this allows + * offsets to be reasonably constant + */ + list_add(&middle, rdd->list); + rdd->middle = &middle; + err = ovl_dir_read(lowerpath, rdd, ovl_fill_lower); + list_del(&middle); +out: + rdd->root = NULL; + + return err; +} + +static void ovl_seek_cursor(struct ovl_dir_file *od, loff_t pos) +{ + struct list_head *l; + loff_t off; + + l = od->cache.next; + for (off = 0; off < pos; off++) { + if (l == &od->cache) + break; + l = l->next; + } + list_move_tail(&od->cursor, l); +} + +static int ovl_readdir(struct file *file, void *buf, filldir_t filler) +{ + struct ovl_dir_file *od = file->private_data; + int res; + + if (!file->f_pos) + ovl_dir_reset(file); + + if (od->is_real) { + res = vfs_readdir(od->realfile, filler, buf); + file->f_pos = od->realfile->f_pos; + + return res; + } + + if (!od->is_cached) { + struct path lowerpath; + struct path upperpath; + struct ovl_readdir_data rdd = { .list = &od->cache }; + + ovl_path_lower(file->f_path.dentry, &lowerpath); + ovl_path_upper(file->f_path.dentry, &upperpath); + + res = ovl_dir_read_merged(&upperpath, &lowerpath, &rdd); + if (res) { + ovl_cache_free(rdd.list); + return res; + } + + od->cache_version = ovl_dentry_version_get(file->f_path.dentry); + od->is_cached = true; + + ovl_seek_cursor(od, file->f_pos); + } + + while (od->cursor.next != &od->cache) { + int over; + loff_t off; + struct ovl_cache_entry *p; + + p = list_entry(od->cursor.next, struct ovl_cache_entry, l_node); + off = file->f_pos; + if (!p->is_whiteout) { + over = filler(buf, p->name, p->len, off, p->ino, + p->type); + if (over) + break; + } + file->f_pos++; + list_move(&od->cursor, &p->l_node); + } + + return 0; +} + +static loff_t ovl_dir_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t res; + struct ovl_dir_file *od = file->private_data; + + mutex_lock(&file->f_dentry->d_inode->i_mutex); + if (!file->f_pos) + ovl_dir_reset(file); + + if (od->is_real) { + res = vfs_llseek(od->realfile, offset, origin); + file->f_pos = od->realfile->f_pos; + } else { + res = -EINVAL; + + switch (origin) { + case SEEK_CUR: + offset += file->f_pos; + break; + case SEEK_SET: + break; + default: + goto out_unlock; + } + if (offset < 0) + goto out_unlock; + + if (offset != file->f_pos) { + file->f_pos = offset; + if (od->is_cached) + ovl_seek_cursor(od, offset); + } + res = offset; + } +out_unlock: + mutex_unlock(&file->f_dentry->d_inode->i_mutex); + + return res; +} + +static int ovl_dir_fsync(struct file *file, loff_t start, loff_t end, + int datasync) +{ + struct ovl_dir_file *od = file->private_data; + + /* May need to reopen directory if it got copied up */ + if (!od->realfile) { + struct path upperpath; + + ovl_path_upper(file->f_path.dentry, &upperpath); + od->realfile = ovl_path_open(&upperpath, O_RDONLY); + if (IS_ERR(od->realfile)) + return PTR_ERR(od->realfile); + } + + return vfs_fsync_range(od->realfile, start, end, datasync); +} + +static int ovl_dir_release(struct inode *inode, struct file *file) +{ + struct ovl_dir_file *od = file->private_data; + + list_del(&od->cursor); + ovl_cache_free(&od->cache); + if (od->realfile) + fput(od->realfile); + kfree(od); + + return 0; +} + +static int ovl_dir_open(struct inode *inode, struct file *file) +{ + struct path realpath; + struct file *realfile; + struct ovl_dir_file *od; + enum ovl_path_type type; + + od = kzalloc(sizeof(struct ovl_dir_file), GFP_KERNEL); + if (!od) + return -ENOMEM; + + type = ovl_path_real(file->f_path.dentry, &realpath); + realfile = ovl_path_open(&realpath, file->f_flags); + if (IS_ERR(realfile)) { + kfree(od); + return PTR_ERR(realfile); + } + INIT_LIST_HEAD(&od->cache); + INIT_LIST_HEAD(&od->cursor); + od->is_cached = false; + od->realfile = realfile; + od->is_real = (type != OVL_PATH_MERGE); + file->private_data = od; + + return 0; +} + +const struct file_operations ovl_dir_operations = { + .read = generic_read_dir, + .open = ovl_dir_open, + .readdir = ovl_readdir, + .llseek = ovl_dir_llseek, + .fsync = ovl_dir_fsync, + .release = ovl_dir_release, +}; + +static int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list) +{ + int err; + struct path lowerpath; + struct path upperpath; + struct ovl_cache_entry *p; + struct ovl_readdir_data rdd = { .list = list }; + + ovl_path_upper(dentry, &upperpath); + ovl_path_lower(dentry, &lowerpath); + + err = ovl_dir_read_merged(&upperpath, &lowerpath, &rdd); + if (err) + return err; + + err = 0; + + list_for_each_entry(p, list, l_node) { + if (p->is_whiteout) + continue; + + if (p->name[0] == '.') { + if (p->len == 1) + continue; + if (p->len == 2 && p->name[1] == '.') + continue; + } + err = -ENOTEMPTY; + break; + } + + return err; +} + +static int ovl_remove_whiteouts(struct dentry *dir, struct list_head *list) +{ + struct path upperpath; + struct dentry *upperdir; + struct ovl_cache_entry *p; + const struct cred *old_cred; + struct cred *override_cred; + int err; + + ovl_path_upper(dir, &upperpath); + upperdir = upperpath.dentry; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* + * CAP_DAC_OVERRIDE for lookup and unlink + * CAP_SYS_ADMIN for setxattr of "trusted" namespace + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + old_cred = override_creds(override_cred); + + err = vfs_setxattr(upperdir, ovl_opaque_xattr, "y", 1, 0); + if (err) + goto out_revert_creds; + + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + list_for_each_entry(p, list, l_node) { + struct dentry *dentry; + int ret; + + if (!p->is_whiteout) + continue; + + dentry = lookup_one_len(p->name, upperdir, p->len); + if (IS_ERR(dentry)) { + printk(KERN_WARNING + "overlayfs: failed to lookup whiteout %.*s: %li\n", + p->len, p->name, PTR_ERR(dentry)); + continue; + } + ret = vfs_unlink(upperdir->d_inode, dentry); + dput(dentry); + if (ret) + printk(KERN_WARNING + "overlayfs: failed to unlink whiteout %.*s: %i\n", + p->len, p->name, ret); + } + mutex_unlock(&upperdir->d_inode->i_mutex); + +out_revert_creds: + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type) +{ + int err; + LIST_HEAD(list); + + err = ovl_check_empty_dir(dentry, &list); + if (!err && type == OVL_PATH_MERGE) + err = ovl_remove_whiteouts(dentry, &list); + + ovl_cache_free(&list); + + return err; +} --- linux-3.5.0.orig/fs/overlayfs/Makefile +++ linux-3.5.0/fs/overlayfs/Makefile @@ -0,0 +1,7 @@ +# +# Makefile for the overlay filesystem. +# + +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o + +overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o --- linux-3.5.0.orig/fs/overlayfs/Kconfig +++ linux-3.5.0/fs/overlayfs/Kconfig @@ -0,0 +1,4 @@ +config OVERLAYFS_FS + tristate "Overlay filesystem support" + help + Add support for overlay filesystem. --- linux-3.5.0.orig/fs/overlayfs/super.c +++ linux-3.5.0/fs/overlayfs/super.c @@ -0,0 +1,665 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +MODULE_AUTHOR("Miklos Szeredi "); +MODULE_DESCRIPTION("Overlay filesystem"); +MODULE_LICENSE("GPL"); + +struct ovl_config { + char *lowerdir; + char *upperdir; +}; + +/* private information held for overlayfs's superblock */ +struct ovl_fs { + struct vfsmount *upper_mnt; + struct vfsmount *lower_mnt; + /* pathnames of lower and upper dirs, for show_options */ + struct ovl_config config; +}; + +/* private information held for every overlayfs dentry */ +struct ovl_entry { + /* + * Keep "double reference" on upper dentries, so that + * d_delete() doesn't think it's OK to reset d_inode to NULL. + */ + struct dentry *__upperdentry; + struct dentry *lowerdentry; + union { + struct { + u64 version; + bool opaque; + }; + struct rcu_head rcu; + }; +}; + +const char *ovl_whiteout_xattr = "trusted.overlay.whiteout"; +const char *ovl_opaque_xattr = "trusted.overlay.opaque"; + + +enum ovl_path_type ovl_path_type(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + if (oe->__upperdentry) { + if (oe->lowerdentry && S_ISDIR(dentry->d_inode->i_mode)) + return OVL_PATH_MERGE; + else + return OVL_PATH_UPPER; + } else { + return OVL_PATH_LOWER; + } +} + +static struct dentry *ovl_upperdentry_dereference(struct ovl_entry *oe) +{ + struct dentry *upperdentry = ACCESS_ONCE(oe->__upperdentry); + smp_read_barrier_depends(); + return upperdentry; +} + +void ovl_path_upper(struct dentry *dentry, struct path *path) +{ + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + struct ovl_entry *oe = dentry->d_fsdata; + + path->mnt = ofs->upper_mnt; + path->dentry = ovl_upperdentry_dereference(oe); +} + +void ovl_path_lower(struct dentry *dentry, struct path *path) +{ + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + struct ovl_entry *oe = dentry->d_fsdata; + + path->mnt = ofs->lower_mnt; + path->dentry = oe->lowerdentry; +} + +enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path) +{ + + enum ovl_path_type type = ovl_path_type(dentry); + + if (type == OVL_PATH_LOWER) + ovl_path_lower(dentry, path); + else + ovl_path_upper(dentry, path); + + return type; +} + +struct dentry *ovl_dentry_upper(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + return ovl_upperdentry_dereference(oe); +} + +struct dentry *ovl_dentry_lower(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + return oe->lowerdentry; +} + +struct dentry *ovl_dentry_real(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + struct dentry *realdentry; + + realdentry = ovl_upperdentry_dereference(oe); + if (!realdentry) + realdentry = oe->lowerdentry; + + return realdentry; +} + +struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper) +{ + struct dentry *realdentry; + + realdentry = ovl_upperdentry_dereference(oe); + if (realdentry) { + *is_upper = true; + } else { + realdentry = oe->lowerdentry; + *is_upper = false; + } + return realdentry; +} + +bool ovl_dentry_is_opaque(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + return oe->opaque; +} + +void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque) +{ + struct ovl_entry *oe = dentry->d_fsdata; + oe->opaque = opaque; +} + +void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&upperdentry->d_parent->d_inode->i_mutex)); + WARN_ON(oe->__upperdentry); + BUG_ON(!upperdentry->d_inode); + smp_wmb(); + oe->__upperdentry = dget(upperdentry); +} + +void ovl_dentry_version_inc(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex)); + oe->version++; +} + +u64 ovl_dentry_version_get(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex)); + return oe->version; +} + +bool ovl_is_whiteout(struct dentry *dentry) +{ + int res; + char val; + + if (!dentry) + return false; + if (!dentry->d_inode) + return false; + if (!S_ISLNK(dentry->d_inode->i_mode)) + return false; + + res = vfs_getxattr(dentry, ovl_whiteout_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} + +static bool ovl_is_opaquedir(struct dentry *dentry) +{ + int res; + char val; + + if (!S_ISDIR(dentry->d_inode->i_mode)) + return false; + + res = vfs_getxattr(dentry, ovl_opaque_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} + +static void ovl_entry_free(struct rcu_head *head) +{ + struct ovl_entry *oe = container_of(head, struct ovl_entry, rcu); + kfree(oe); +} + +static void ovl_dentry_release(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + if (oe) { + dput(oe->__upperdentry); + dput(oe->__upperdentry); + dput(oe->lowerdentry); + call_rcu(&oe->rcu, ovl_entry_free); + } +} + +const struct dentry_operations ovl_dentry_operations = { + .d_release = ovl_dentry_release, +}; + +static struct ovl_entry *ovl_alloc_entry(void) +{ + return kzalloc(sizeof(struct ovl_entry), GFP_KERNEL); +} + +static inline struct dentry *ovl_lookup_real(struct dentry *dir, + struct qstr *name) +{ + struct dentry *dentry; + + mutex_lock(&dir->d_inode->i_mutex); + dentry = lookup_one_len(name->name, dir, name->len); + mutex_unlock(&dir->d_inode->i_mutex); + + if (IS_ERR(dentry)) { + if (PTR_ERR(dentry) == -ENOENT) + dentry = NULL; + } else if (!dentry->d_inode) { + dput(dentry); + dentry = NULL; + } + return dentry; +} + +static int ovl_do_lookup(struct dentry *dentry) +{ + struct ovl_entry *oe; + struct dentry *upperdir; + struct dentry *lowerdir; + struct dentry *upperdentry = NULL; + struct dentry *lowerdentry = NULL; + struct inode *inode = NULL; + int err; + + err = -ENOMEM; + oe = ovl_alloc_entry(); + if (!oe) + goto out; + + upperdir = ovl_dentry_upper(dentry->d_parent); + lowerdir = ovl_dentry_lower(dentry->d_parent); + + if (upperdir) { + upperdentry = ovl_lookup_real(upperdir, &dentry->d_name); + err = PTR_ERR(upperdentry); + if (IS_ERR(upperdentry)) + goto out_put_dir; + + if (lowerdir && upperdentry && + (S_ISLNK(upperdentry->d_inode->i_mode) || + S_ISDIR(upperdentry->d_inode->i_mode))) { + const struct cred *old_cred; + struct cred *override_cred; + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_dput_upper; + + /* CAP_SYS_ADMIN needed for getxattr */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + + if (ovl_is_opaquedir(upperdentry)) { + oe->opaque = true; + } else if (ovl_is_whiteout(upperdentry)) { + dput(upperdentry); + upperdentry = NULL; + oe->opaque = true; + } + revert_creds(old_cred); + put_cred(override_cred); + } + } + if (lowerdir && !oe->opaque) { + lowerdentry = ovl_lookup_real(lowerdir, &dentry->d_name); + err = PTR_ERR(lowerdentry); + if (IS_ERR(lowerdentry)) + goto out_dput_upper; + } + + if (lowerdentry && upperdentry && + (!S_ISDIR(upperdentry->d_inode->i_mode) || + !S_ISDIR(lowerdentry->d_inode->i_mode))) { + dput(lowerdentry); + lowerdentry = NULL; + oe->opaque = true; + } + + if (lowerdentry || upperdentry) { + struct dentry *realdentry; + + realdentry = upperdentry ? upperdentry : lowerdentry; + err = -ENOMEM; + inode = ovl_new_inode(dentry->d_sb, realdentry->d_inode->i_mode, + oe); + if (!inode) + goto out_dput; + ovl_copyattr(realdentry->d_inode, inode); + } + + if (upperdentry) + oe->__upperdentry = dget(upperdentry); + + if (lowerdentry) + oe->lowerdentry = lowerdentry; + + dentry->d_fsdata = oe; + dentry->d_op = &ovl_dentry_operations; + d_add(dentry, inode); + + return 0; + +out_dput: + dput(lowerdentry); +out_dput_upper: + dput(upperdentry); +out_put_dir: + kfree(oe); +out: + return err; +} + +struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd) +{ + int err = ovl_do_lookup(dentry); + + if (err) + return ERR_PTR(err); + + return NULL; +} + +struct file *ovl_path_open(struct path *path, int flags) +{ + path_get(path); + return dentry_open(path->dentry, path->mnt, flags, current_cred()); +} + +static void ovl_put_super(struct super_block *sb) +{ + struct ovl_fs *ufs = sb->s_fs_info; + + if (!(sb->s_flags & MS_RDONLY)) + mnt_drop_write(ufs->upper_mnt); + + mntput(ufs->upper_mnt); + mntput(ufs->lower_mnt); + + kfree(ufs->config.lowerdir); + kfree(ufs->config.upperdir); + kfree(ufs); +} + +static int ovl_remount_fs(struct super_block *sb, int *flagsp, char *data) +{ + int flags = *flagsp; + struct ovl_fs *ufs = sb->s_fs_info; + + /* When remounting rw or ro, we need to adjust the write access to the + * upper fs. + */ + if (((flags ^ sb->s_flags) & MS_RDONLY) == 0) + /* No change to readonly status */ + return 0; + + if (flags & MS_RDONLY) { + mnt_drop_write(ufs->upper_mnt); + return 0; + } else + return mnt_want_write(ufs->upper_mnt); +} + +/** + * ovl_statfs + * @sb: The overlayfs super block + * @buf: The struct kstatfs to fill in with stats + * + * Get the filesystem statistics. As writes always target the upper layer + * filesystem pass the statfs to the same filesystem. + */ +static int ovl_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + struct dentry *root_dentry = dentry->d_sb->s_root; + struct path path; + ovl_path_upper(root_dentry, &path); + + if (!path.dentry->d_sb->s_op->statfs) + return -ENOSYS; + return path.dentry->d_sb->s_op->statfs(path.dentry, buf); +} + +/** + * ovl_show_options + * + * Prints the mount options for a given superblock. + * Returns zero; does not fail. + */ +static int ovl_show_options(struct seq_file *m, struct dentry *dentry) +{ + struct super_block *sb = dentry->d_sb; + struct ovl_fs *ufs = sb->s_fs_info; + + seq_printf(m, ",lowerdir=%s", ufs->config.lowerdir); + seq_printf(m, ",upperdir=%s", ufs->config.upperdir); + return 0; +} + +static const struct super_operations ovl_super_operations = { + .put_super = ovl_put_super, + .remount_fs = ovl_remount_fs, + .statfs = ovl_statfs, + .show_options = ovl_show_options, +}; + +enum { + Opt_lowerdir, + Opt_upperdir, + Opt_err, +}; + +static const match_table_t ovl_tokens = { + {Opt_lowerdir, "lowerdir=%s"}, + {Opt_upperdir, "upperdir=%s"}, + {Opt_err, NULL} +}; + +static int ovl_parse_opt(char *opt, struct ovl_config *config) +{ + char *p; + + config->upperdir = NULL; + config->lowerdir = NULL; + + while ((p = strsep(&opt, ",")) != NULL) { + int token; + substring_t args[MAX_OPT_ARGS]; + + if (!*p) + continue; + + token = match_token(p, ovl_tokens, args); + switch (token) { + case Opt_upperdir: + kfree(config->upperdir); + config->upperdir = match_strdup(&args[0]); + if (!config->upperdir) + return -ENOMEM; + break; + + case Opt_lowerdir: + kfree(config->lowerdir); + config->lowerdir = match_strdup(&args[0]); + if (!config->lowerdir) + return -ENOMEM; + break; + + default: + return -EINVAL; + } + } + return 0; +} + +static int ovl_fill_super(struct super_block *sb, void *data, int silent) +{ + struct path lowerpath; + struct path upperpath; + struct inode *root_inode; + struct dentry *root_dentry; + struct ovl_entry *oe; + struct ovl_fs *ufs; + int err; + + err = -ENOMEM; + ufs = kmalloc(sizeof(struct ovl_fs), GFP_KERNEL); + if (!ufs) + goto out; + + err = ovl_parse_opt((char *) data, &ufs->config); + if (err) + goto out_free_ufs; + + err = -EINVAL; + if (!ufs->config.upperdir || !ufs->config.lowerdir) { + printk(KERN_ERR "overlayfs: missing upperdir or lowerdir\n"); + goto out_free_config; + } + + oe = ovl_alloc_entry(); + if (oe == NULL) + goto out_free_config; + + err = kern_path(ufs->config.upperdir, LOOKUP_FOLLOW, &upperpath); + if (err) + goto out_free_oe; + + err = kern_path(ufs->config.lowerdir, LOOKUP_FOLLOW, &lowerpath); + if (err) + goto out_put_upperpath; + + err = -ENOTDIR; + if (!S_ISDIR(upperpath.dentry->d_inode->i_mode) || + !S_ISDIR(lowerpath.dentry->d_inode->i_mode)) + goto out_put_lowerpath; + + sb->s_stack_depth = max(upperpath.mnt->mnt_sb->s_stack_depth, + lowerpath.mnt->mnt_sb->s_stack_depth) + 1; + + err = -EINVAL; + if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { + printk(KERN_ERR "overlayfs: maximum fs stacking depth exceeded\n"); + goto out_put_lowerpath; + } + + + ufs->upper_mnt = clone_private_mount(&upperpath); + err = PTR_ERR(ufs->upper_mnt); + if (IS_ERR(ufs->upper_mnt)) { + printk(KERN_ERR "overlayfs: failed to clone upperpath\n"); + goto out_put_lowerpath; + } + + ufs->lower_mnt = clone_private_mount(&lowerpath); + err = PTR_ERR(ufs->lower_mnt); + if (IS_ERR(ufs->lower_mnt)) { + printk(KERN_ERR "overlayfs: failed to clone lowerpath\n"); + goto out_put_upper_mnt; + } + + /* + * Make lower_mnt R/O. That way fchmod/fchown on lower file + * will fail instead of modifying lower fs. + */ + ufs->lower_mnt->mnt_flags |= MNT_READONLY; + + /* If the upper fs is r/o, we mark overlayfs r/o too */ + if (ufs->upper_mnt->mnt_sb->s_flags & MS_RDONLY) + sb->s_flags |= MS_RDONLY; + + if (!(sb->s_flags & MS_RDONLY)) { + err = mnt_want_write(ufs->upper_mnt); + if (err) + goto out_put_lower_mnt; + } + + err = -ENOMEM; + root_inode = ovl_new_inode(sb, S_IFDIR, oe); + if (!root_inode) + goto out_drop_write; + + root_dentry = d_make_root(root_inode); + if (!root_dentry) + goto out_drop_write; + + mntput(upperpath.mnt); + mntput(lowerpath.mnt); + + oe->__upperdentry = dget(upperpath.dentry); + oe->lowerdentry = lowerpath.dentry; + + root_dentry->d_fsdata = oe; + root_dentry->d_op = &ovl_dentry_operations; + + sb->s_op = &ovl_super_operations; + sb->s_root = root_dentry; + sb->s_fs_info = ufs; + + return 0; + +out_drop_write: + if (!(sb->s_flags & MS_RDONLY)) + mnt_drop_write(ufs->upper_mnt); +out_put_lower_mnt: + mntput(ufs->lower_mnt); +out_put_upper_mnt: + mntput(ufs->upper_mnt); +out_put_lowerpath: + path_put(&lowerpath); +out_put_upperpath: + path_put(&upperpath); +out_free_oe: + kfree(oe); +out_free_config: + kfree(ufs->config.lowerdir); + kfree(ufs->config.upperdir); +out_free_ufs: + kfree(ufs); +out: + return err; +} + +static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, + const char *dev_name, void *raw_data) +{ + return mount_nodev(fs_type, flags, raw_data, ovl_fill_super); +} + +static struct file_system_type ovl_fs_type = { + .owner = THIS_MODULE, + .name = "overlayfs", + .mount = ovl_mount, + .kill_sb = kill_anon_super, +}; + +static int __init ovl_init(void) +{ + return register_filesystem(&ovl_fs_type); +} + +static void __exit ovl_exit(void) +{ + unregister_filesystem(&ovl_fs_type); +} + +module_init(ovl_init); +module_exit(ovl_exit); --- linux-3.5.0.orig/fs/overlayfs/dir.c +++ linux-3.5.0/fs/overlayfs/dir.c @@ -0,0 +1,604 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include "overlayfs.h" + +static const char *ovl_whiteout_symlink = "(overlay-whiteout)"; + +static int ovl_whiteout(struct dentry *upperdir, struct dentry *dentry) +{ + int err; + struct dentry *newdentry; + const struct cred *old_cred; + struct cred *override_cred; + + /* FIXME: recheck lower dentry to see if whiteout is really needed */ + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out; + + /* + * CAP_SYS_ADMIN for setxattr + * CAP_DAC_OVERRIDE for symlink creation + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + override_cred->fsuid = 0; + override_cred->fsgid = 0; + old_cred = override_creds(override_cred); + + newdentry = lookup_one_len(dentry->d_name.name, upperdir, + dentry->d_name.len); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_put_cred; + + /* Just been removed within the same locked region */ + WARN_ON(newdentry->d_inode); + + err = vfs_symlink(upperdir->d_inode, newdentry, ovl_whiteout_symlink); + if (err) + goto out_dput; + + ovl_dentry_version_inc(dentry->d_parent); + + err = vfs_setxattr(newdentry, ovl_whiteout_xattr, "y", 1, 0); + if (err) + vfs_unlink(upperdir->d_inode, newdentry); + +out_dput: + dput(newdentry); +out_put_cred: + revert_creds(old_cred); + put_cred(override_cred); +out: + if (err) { + /* + * There's no way to recover from failure to whiteout. + * What should we do? Log a big fat error and... ? + */ + printk(KERN_ERR "overlayfs: ERROR - failed to whiteout '%s'\n", + dentry->d_name.name); + } + + return err; +} + +static struct dentry *ovl_lookup_create(struct dentry *upperdir, + struct dentry *template) +{ + int err; + struct dentry *newdentry; + struct qstr *name = &template->d_name; + + newdentry = lookup_one_len(name->name, upperdir, name->len); + if (IS_ERR(newdentry)) + return newdentry; + + if (newdentry->d_inode) { + const struct cred *old_cred; + struct cred *override_cred; + + /* No need to check whiteout if lower parent is non-existent */ + err = -EEXIST; + if (!ovl_dentry_lower(template->d_parent)) + goto out_dput; + + if (!S_ISLNK(newdentry->d_inode->i_mode)) + goto out_dput; + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_dput; + + /* + * CAP_SYS_ADMIN for getxattr + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + old_cred = override_creds(override_cred); + + err = -EEXIST; + if (ovl_is_whiteout(newdentry)) + err = vfs_unlink(upperdir->d_inode, newdentry); + + revert_creds(old_cred); + put_cred(override_cred); + if (err) + goto out_dput; + + dput(newdentry); + newdentry = lookup_one_len(name->name, upperdir, name->len); + if (IS_ERR(newdentry)) { + ovl_whiteout(upperdir, template); + return newdentry; + } + + /* + * Whiteout just been successfully removed, parent + * i_mutex is still held, there's no way the lookup + * could return positive. + */ + WARN_ON(newdentry->d_inode); + } + + return newdentry; + +out_dput: + dput(newdentry); + return ERR_PTR(err); +} + +struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, + struct kstat *stat, const char *link) +{ + int err; + struct dentry *newdentry; + struct inode *dir = upperdir->d_inode; + + newdentry = ovl_lookup_create(upperdir, dentry); + if (IS_ERR(newdentry)) + goto out; + + switch (stat->mode & S_IFMT) { + case S_IFREG: + err = vfs_create(dir, newdentry, stat->mode, NULL); + break; + + case S_IFDIR: + err = vfs_mkdir(dir, newdentry, stat->mode); + break; + + case S_IFCHR: + case S_IFBLK: + case S_IFIFO: + case S_IFSOCK: + err = vfs_mknod(dir, newdentry, stat->mode, stat->rdev); + break; + + case S_IFLNK: + err = vfs_symlink(dir, newdentry, link); + break; + + default: + err = -EPERM; + } + if (err) { + if (ovl_dentry_is_opaque(dentry)) + ovl_whiteout(upperdir, dentry); + dput(newdentry); + newdentry = ERR_PTR(err); + } else if (WARN_ON(!newdentry->d_inode)) { + /* + * Not quite sure if non-instantiated dentry is legal or not. + * VFS doesn't seem to care so check and warn here. + */ + dput(newdentry); + newdentry = ERR_PTR(-ENOENT); + } + +out: + return newdentry; + +} + +static int ovl_set_opaque(struct dentry *upperdentry) +{ + int err; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* CAP_SYS_ADMIN for setxattr of "trusted" namespace */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + err = vfs_setxattr(upperdentry, ovl_opaque_xattr, "y", 1, 0); + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +static int ovl_remove_opaque(struct dentry *upperdentry) +{ + int err; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* CAP_SYS_ADMIN for removexattr of "trusted" namespace */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + err = vfs_removexattr(upperdentry, ovl_opaque_xattr); + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +static int ovl_dir_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + int err; + enum ovl_path_type type; + struct path realpath; + + type = ovl_path_real(dentry, &realpath); + err = vfs_getattr(realpath.mnt, realpath.dentry, stat); + if (err) + return err; + + stat->dev = dentry->d_sb->s_dev; + stat->ino = dentry->d_inode->i_ino; + + /* + * It's probably not worth it to count subdirs to get the + * correct link count. nlink=1 seems to pacify 'find' and + * other utilities. + */ + if (type == OVL_PATH_MERGE) + stat->nlink = 1; + + return 0; +} + +static int ovl_create_object(struct dentry *dentry, int mode, dev_t rdev, + const char *link) +{ + int err; + struct dentry *newdentry; + struct dentry *upperdir; + struct inode *inode; + struct kstat stat = { + .mode = mode, + .rdev = rdev, + }; + + err = -ENOMEM; + inode = ovl_new_inode(dentry->d_sb, mode, dentry->d_fsdata); + if (!inode) + goto out; + + err = ovl_copy_up(dentry->d_parent); + if (err) + goto out_iput; + + upperdir = ovl_dentry_upper(dentry->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + + newdentry = ovl_upper_create(upperdir, dentry, &stat, link); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + + ovl_dentry_version_inc(dentry->d_parent); + if (ovl_dentry_is_opaque(dentry) && S_ISDIR(mode)) { + err = ovl_set_opaque(newdentry); + if (err) { + vfs_rmdir(upperdir->d_inode, newdentry); + ovl_whiteout(upperdir, dentry); + goto out_dput; + } + } + ovl_dentry_update(dentry, newdentry); + ovl_copyattr(newdentry->d_inode, inode); + d_instantiate(dentry, inode); + inode = NULL; + newdentry = NULL; + err = 0; + +out_dput: + dput(newdentry); +out_unlock: + mutex_unlock(&upperdir->d_inode->i_mutex); +out_iput: + iput(inode); +out: + return err; +} + +static int ovl_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd) +{ + return ovl_create_object(dentry, (mode & 07777) | S_IFREG, 0, NULL); +} + +static int ovl_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + return ovl_create_object(dentry, (mode & 07777) | S_IFDIR, 0, NULL); +} + +static int ovl_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t rdev) +{ + return ovl_create_object(dentry, mode, rdev, NULL); +} + +static int ovl_symlink(struct inode *dir, struct dentry *dentry, + const char *link) +{ + return ovl_create_object(dentry, S_IFLNK, 0, link); +} + +static int ovl_do_remove(struct dentry *dentry, bool is_dir) +{ + int err; + enum ovl_path_type type; + struct path realpath; + struct dentry *upperdir; + + err = ovl_copy_up(dentry->d_parent); + if (err) + return err; + + upperdir = ovl_dentry_upper(dentry->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + type = ovl_path_real(dentry, &realpath); + if (type != OVL_PATH_LOWER) { + err = -ESTALE; + if (realpath.dentry->d_parent != upperdir) + goto out_d_drop; + + /* FIXME: create whiteout up front and rename to target */ + + if (is_dir) + err = vfs_rmdir(upperdir->d_inode, realpath.dentry); + else + err = vfs_unlink(upperdir->d_inode, realpath.dentry); + if (err) + goto out_d_drop; + + ovl_dentry_version_inc(dentry->d_parent); + } + + if (type != OVL_PATH_UPPER || ovl_dentry_is_opaque(dentry)) + err = ovl_whiteout(upperdir, dentry); + + /* + * Keeping this dentry hashed would mean having to release + * upperpath/lowerpath, which could only be done if we are the + * sole user of this dentry. Too tricky... Just unhash for + * now. + */ +out_d_drop: + d_drop(dentry); + mutex_unlock(&upperdir->d_inode->i_mutex); + + return err; +} + +static int ovl_unlink(struct inode *dir, struct dentry *dentry) +{ + return ovl_do_remove(dentry, false); +} + + +static int ovl_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err; + enum ovl_path_type type; + + type = ovl_path_type(dentry); + if (type != OVL_PATH_UPPER) { + err = ovl_check_empty_and_clear(dentry, type); + if (err) + return err; + } + + return ovl_do_remove(dentry, true); +} + +static int ovl_link(struct dentry *old, struct inode *newdir, + struct dentry *new) +{ + int err; + struct dentry *olddentry; + struct dentry *newdentry; + struct dentry *upperdir; + struct inode *newinode; + + err = ovl_copy_up(old); + if (err) + goto out; + + err = ovl_copy_up(new->d_parent); + if (err) + goto out; + + upperdir = ovl_dentry_upper(new->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + newdentry = ovl_lookup_create(upperdir, new); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + + olddentry = ovl_dentry_upper(old); + err = vfs_link(olddentry, upperdir->d_inode, newdentry); + if (!err) { + if (WARN_ON(!newdentry->d_inode)) { + dput(newdentry); + err = -ENOENT; + goto out_unlock; + } + newinode = ovl_new_inode(old->d_sb, newdentry->d_inode->i_mode, + new->d_fsdata); + if (!newinode) + goto link_fail; + ovl_copyattr(upperdir->d_inode, newinode); + + ovl_dentry_version_inc(new->d_parent); + ovl_dentry_update(new, newdentry); + + d_instantiate(new, newinode); + } else { +link_fail: + if (ovl_dentry_is_opaque(new)) + ovl_whiteout(upperdir, new); + dput(newdentry); + } +out_unlock: + mutex_unlock(&upperdir->d_inode->i_mutex); +out: + return err; + +} + +static int ovl_rename(struct inode *olddir, struct dentry *old, + struct inode *newdir, struct dentry *new) +{ + int err; + enum ovl_path_type old_type; + enum ovl_path_type new_type; + struct dentry *old_upperdir; + struct dentry *new_upperdir; + struct dentry *olddentry; + struct dentry *newdentry; + struct dentry *trap; + bool old_opaque; + bool new_opaque; + bool new_create = false; + bool is_dir = S_ISDIR(old->d_inode->i_mode); + + /* Don't copy up directory trees */ + old_type = ovl_path_type(old); + if (old_type != OVL_PATH_UPPER && is_dir) + return -EXDEV; + + if (new->d_inode) { + new_type = ovl_path_type(new); + + if (new_type == OVL_PATH_LOWER && old_type == OVL_PATH_LOWER) { + if (ovl_dentry_lower(old)->d_inode == + ovl_dentry_lower(new)->d_inode) + return 0; + } + if (new_type != OVL_PATH_LOWER && old_type != OVL_PATH_LOWER) { + if (ovl_dentry_upper(old)->d_inode == + ovl_dentry_upper(new)->d_inode) + return 0; + } + + if (new_type != OVL_PATH_UPPER && + S_ISDIR(new->d_inode->i_mode)) { + err = ovl_check_empty_and_clear(new, new_type); + if (err) + return err; + } + } else { + new_type = OVL_PATH_UPPER; + } + + err = ovl_copy_up(old); + if (err) + return err; + + err = ovl_copy_up(new->d_parent); + if (err) + return err; + + old_upperdir = ovl_dentry_upper(old->d_parent); + new_upperdir = ovl_dentry_upper(new->d_parent); + + trap = lock_rename(new_upperdir, old_upperdir); + + olddentry = ovl_dentry_upper(old); + newdentry = ovl_dentry_upper(new); + if (newdentry) { + dget(newdentry); + } else { + new_create = true; + newdentry = ovl_lookup_create(new_upperdir, new); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + } + + err = -ESTALE; + if (olddentry->d_parent != old_upperdir) + goto out_dput; + if (newdentry->d_parent != new_upperdir) + goto out_dput; + if (olddentry == trap) + goto out_dput; + if (newdentry == trap) + goto out_dput; + + old_opaque = ovl_dentry_is_opaque(old); + new_opaque = ovl_dentry_is_opaque(new) || new_type != OVL_PATH_UPPER; + + if (is_dir && !old_opaque && new_opaque) { + err = ovl_set_opaque(olddentry); + if (err) + goto out_dput; + } + + err = vfs_rename(old_upperdir->d_inode, olddentry, + new_upperdir->d_inode, newdentry); + + if (err) { + if (new_create && ovl_dentry_is_opaque(new)) + ovl_whiteout(new_upperdir, new); + if (is_dir && !old_opaque && new_opaque) + ovl_remove_opaque(olddentry); + goto out_dput; + } + + if (old_type != OVL_PATH_UPPER || old_opaque) + err = ovl_whiteout(old_upperdir, old); + if (is_dir && old_opaque && !new_opaque) + ovl_remove_opaque(olddentry); + + if (old_opaque != new_opaque) + ovl_dentry_set_opaque(old, new_opaque); + + ovl_dentry_version_inc(old->d_parent); + ovl_dentry_version_inc(new->d_parent); + +out_dput: + dput(newdentry); +out_unlock: + unlock_rename(new_upperdir, old_upperdir); + return err; +} + +const struct inode_operations ovl_dir_inode_operations = { + .lookup = ovl_lookup, + .mkdir = ovl_mkdir, + .symlink = ovl_symlink, + .unlink = ovl_unlink, + .rmdir = ovl_rmdir, + .rename = ovl_rename, + .link = ovl_link, + .setattr = ovl_setattr, + .create = ovl_create, + .mknod = ovl_mknod, + .permission = ovl_permission, + .getattr = ovl_dir_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, +}; --- linux-3.5.0.orig/fs/overlayfs/copy_up.c +++ linux-3.5.0/fs/overlayfs/copy_up.c @@ -0,0 +1,385 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +#define OVL_COPY_UP_CHUNK_SIZE (1 << 20) + +static int ovl_copy_up_xattr(struct dentry *old, struct dentry *new) +{ + ssize_t list_size, size; + char *buf, *name, *value; + int error; + + if (!old->d_inode->i_op->getxattr || + !new->d_inode->i_op->getxattr) + return 0; + + list_size = vfs_listxattr(old, NULL, 0); + if (list_size <= 0) { + if (list_size == -EOPNOTSUPP) + return 0; + return list_size; + } + + buf = kzalloc(list_size, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + error = -ENOMEM; + value = kmalloc(XATTR_SIZE_MAX, GFP_KERNEL); + if (!value) + goto out; + + list_size = vfs_listxattr(old, buf, list_size); + if (list_size <= 0) { + error = list_size; + goto out_free_value; + } + + for (name = buf; name < (buf + list_size); name += strlen(name) + 1) { + size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX); + if (size <= 0) { + error = size; + goto out_free_value; + } + error = vfs_setxattr(new, name, value, size, 0); + if (error) + goto out_free_value; + } + +out_free_value: + kfree(value); +out: + kfree(buf); + return error; +} + +static int ovl_copy_up_data(struct path *old, struct path *new, loff_t len) +{ + struct file *old_file; + struct file *new_file; + int error = 0; + + if (len == 0) + return 0; + + old_file = ovl_path_open(old, O_RDONLY); + if (IS_ERR(old_file)) + return PTR_ERR(old_file); + + new_file = ovl_path_open(new, O_WRONLY); + if (IS_ERR(new_file)) { + error = PTR_ERR(new_file); + goto out_fput; + } + + /* FIXME: copy up sparse files efficiently */ + while (len) { + loff_t offset = new_file->f_pos; + size_t this_len = OVL_COPY_UP_CHUNK_SIZE; + long bytes; + + if (len < this_len) + this_len = len; + + if (signal_pending_state(TASK_KILLABLE, current)) { + error = -EINTR; + break; + } + + bytes = do_splice_direct(old_file, &offset, new_file, this_len, + SPLICE_F_MOVE); + if (bytes <= 0) { + error = bytes; + break; + } + + len -= bytes; + } + + fput(new_file); +out_fput: + fput(old_file); + return error; +} + +static char *ovl_read_symlink(struct dentry *realdentry) +{ + int res; + char *buf; + struct inode *inode = realdentry->d_inode; + mm_segment_t old_fs; + + res = -EINVAL; + if (!inode->i_op->readlink) + goto err; + + res = -ENOMEM; + buf = (char *) __get_free_page(GFP_KERNEL); + if (!buf) + goto err; + + old_fs = get_fs(); + set_fs(get_ds()); + /* The cast to a user pointer is valid due to the set_fs() */ + res = inode->i_op->readlink(realdentry, + (char __user *)buf, PAGE_SIZE - 1); + set_fs(old_fs); + if (res < 0) { + free_page((unsigned long) buf); + goto err; + } + buf[res] = '\0'; + + return buf; + +err: + return ERR_PTR(res); +} + +static int ovl_set_timestamps(struct dentry *upperdentry, struct kstat *stat) +{ + struct iattr attr = { + .ia_valid = + ATTR_ATIME | ATTR_MTIME | ATTR_ATIME_SET | ATTR_MTIME_SET, + .ia_atime = stat->atime, + .ia_mtime = stat->mtime, + }; + + return notify_change(upperdentry, &attr); +} + +static int ovl_set_mode(struct dentry *upperdentry, umode_t mode) +{ + struct iattr attr = { + .ia_valid = ATTR_MODE, + .ia_mode = mode, + }; + + return notify_change(upperdentry, &attr); +} + +static int ovl_copy_up_locked(struct dentry *upperdir, struct dentry *dentry, + struct path *lowerpath, struct kstat *stat, + const char *link) +{ + int err; + struct path newpath; + umode_t mode = stat->mode; + + /* Can't properly set mode on creation because of the umask */ + stat->mode &= S_IFMT; + + ovl_path_upper(dentry, &newpath); + WARN_ON(newpath.dentry); + newpath.dentry = ovl_upper_create(upperdir, dentry, stat, link); + if (IS_ERR(newpath.dentry)) + return PTR_ERR(newpath.dentry); + + if (S_ISREG(stat->mode)) { + err = ovl_copy_up_data(lowerpath, &newpath, stat->size); + if (err) + goto err_remove; + } + + err = ovl_copy_up_xattr(lowerpath->dentry, newpath.dentry); + if (err) + goto err_remove; + + mutex_lock(&newpath.dentry->d_inode->i_mutex); + if (!S_ISLNK(stat->mode)) + err = ovl_set_mode(newpath.dentry, mode); + if (!err) + err = ovl_set_timestamps(newpath.dentry, stat); + mutex_unlock(&newpath.dentry->d_inode->i_mutex); + if (err) + goto err_remove; + + ovl_dentry_update(dentry, newpath.dentry); + + /* + * Easiest way to get rid of the lower dentry reference is to + * drop this dentry. This is neither needed nor possible for + * directories. + */ + if (!S_ISDIR(stat->mode)) + d_drop(dentry); + + return 0; + +err_remove: + if (S_ISDIR(stat->mode)) + vfs_rmdir(upperdir->d_inode, newpath.dentry); + else + vfs_unlink(upperdir->d_inode, newpath.dentry); + + dput(newpath.dentry); + + return err; +} + +/* + * Copy up a single dentry + * + * Directory renames only allowed on "pure upper" (already created on + * upper filesystem, never copied up). Directories which are on lower or + * are merged may not be renamed. For these -EXDEV is returned and + * userspace has to deal with it. This means, when copying up a + * directory we can rely on it and ancestors being stable. + * + * Non-directory renames start with copy up of source if necessary. The + * actual rename will only proceed once the copy up was successful. Copy + * up uses upper parent i_mutex for exclusion. Since rename can change + * d_parent it is possible that the copy up will lock the old parent. At + * that point the file will have already been copied up anyway. + */ +static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry, + struct path *lowerpath, struct kstat *stat) +{ + int err; + struct kstat pstat; + struct path parentpath; + struct dentry *upperdir; + const struct cred *old_cred; + struct cred *override_cred; + char *link = NULL; + + ovl_path_upper(parent, &parentpath); + upperdir = parentpath.dentry; + + err = vfs_getattr(parentpath.mnt, parentpath.dentry, &pstat); + if (err) + return err; + + if (S_ISLNK(stat->mode)) { + link = ovl_read_symlink(lowerpath->dentry); + if (IS_ERR(link)) + return PTR_ERR(link); + } + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_free_link; + + override_cred->fsuid = stat->uid; + override_cred->fsgid = stat->gid; + /* + * CAP_SYS_ADMIN for copying up extended attributes + * CAP_DAC_OVERRIDE for create + * CAP_FOWNER for chmod, timestamp update + * CAP_FSETID for chmod + * CAP_MKNOD for mknod + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + cap_raise(override_cred->cap_effective, CAP_FSETID); + cap_raise(override_cred->cap_effective, CAP_MKNOD); + old_cred = override_creds(override_cred); + + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + if (ovl_path_type(dentry) != OVL_PATH_LOWER) { + err = 0; + } else { + err = ovl_copy_up_locked(upperdir, dentry, lowerpath, + stat, link); + if (!err) { + /* Restore timestamps on parent (best effort) */ + ovl_set_timestamps(upperdir, &pstat); + } + } + + mutex_unlock(&upperdir->d_inode->i_mutex); + + revert_creds(old_cred); + put_cred(override_cred); + +out_free_link: + if (link) + free_page((unsigned long) link); + + return err; +} + +int ovl_copy_up(struct dentry *dentry) +{ + int err; + + err = 0; + while (!err) { + struct dentry *next; + struct dentry *parent; + struct path lowerpath; + struct kstat stat; + enum ovl_path_type type = ovl_path_type(dentry); + + if (type != OVL_PATH_LOWER) + break; + + next = dget(dentry); + /* find the topmost dentry not yet copied up */ + for (;;) { + parent = dget_parent(next); + + type = ovl_path_type(parent); + if (type != OVL_PATH_LOWER) + break; + + dput(next); + next = parent; + } + + ovl_path_lower(next, &lowerpath); + err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat); + if (!err) + err = ovl_copy_up_one(parent, next, &lowerpath, &stat); + + dput(parent); + dput(next); + } + + return err; +} + +/* Optimize by not copying up the file first and truncating later */ +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size) +{ + int err; + struct kstat stat; + struct path lowerpath; + struct dentry *parent = dget_parent(dentry); + + err = ovl_copy_up(parent); + if (err) + goto out_dput_parent; + + ovl_path_lower(dentry, &lowerpath); + err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat); + if (err) + goto out_dput_parent; + + if (size < stat.size) + stat.size = size; + + err = ovl_copy_up_one(parent, dentry, &lowerpath, &stat); + +out_dput_parent: + dput(parent); + return err; +} --- linux-3.5.0.orig/fs/overlayfs/overlayfs.h +++ linux-3.5.0/fs/overlayfs/overlayfs.h @@ -0,0 +1,70 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +struct ovl_entry; + +enum ovl_path_type { + OVL_PATH_UPPER, + OVL_PATH_MERGE, + OVL_PATH_LOWER, +}; + +extern const char *ovl_opaque_xattr; +extern const char *ovl_whiteout_xattr; +extern const struct dentry_operations ovl_dentry_operations; + +enum ovl_path_type ovl_path_type(struct dentry *dentry); +u64 ovl_dentry_version_get(struct dentry *dentry); +void ovl_dentry_version_inc(struct dentry *dentry); +void ovl_path_upper(struct dentry *dentry, struct path *path); +void ovl_path_lower(struct dentry *dentry, struct path *path); +enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path); +struct dentry *ovl_dentry_upper(struct dentry *dentry); +struct dentry *ovl_dentry_lower(struct dentry *dentry); +struct dentry *ovl_dentry_real(struct dentry *dentry); +struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper); +bool ovl_dentry_is_opaque(struct dentry *dentry); +void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque); +bool ovl_is_whiteout(struct dentry *dentry); +void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry); +struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd); +struct file *ovl_path_open(struct path *path, int flags); + +struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, + struct kstat *stat, const char *link); + +/* readdir.c */ +extern const struct file_operations ovl_dir_operations; +int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type); + +/* inode.c */ +int ovl_setattr(struct dentry *dentry, struct iattr *attr); +int ovl_permission(struct inode *inode, int mask); +int ovl_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags); +ssize_t ovl_getxattr(struct dentry *dentry, const char *name, + void *value, size_t size); +ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size); +int ovl_removexattr(struct dentry *dentry, const char *name); + +struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, + struct ovl_entry *oe); +static inline void ovl_copyattr(struct inode *from, struct inode *to) +{ + to->i_uid = from->i_uid; + to->i_gid = from->i_gid; +} + +/* dir.c */ +extern const struct inode_operations ovl_dir_inode_operations; + +/* copy_up.c */ +int ovl_copy_up(struct dentry *dentry); +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size); --- linux-3.5.0.orig/fs/udf/inode.c +++ linux-3.5.0/fs/udf/inode.c @@ -574,6 +574,7 @@ struct udf_inode_info *iinfo = UDF_I(inode); int goal = 0, pgoal = iinfo->i_location.logicalBlockNum; int lastblock = 0; + bool isBeyondEOF; *err = 0; *new = 0; @@ -653,7 +654,7 @@ /* Are we beyond EOF? */ if (etype == -1) { int ret; - + isBeyondEOF = 1; if (count) { if (c) laarr[0] = laarr[1]; @@ -696,6 +697,7 @@ endnum = c + 1; lastblock = 1; } else { + isBeyondEOF = 0; endnum = startnum = ((count > 2) ? 2 : count); /* if the current extent is in position 0, @@ -738,10 +740,13 @@ goal, err); if (!newblocknum) { brelse(prev_epos.bh); + brelse(cur_epos.bh); + brelse(next_epos.bh); *err = -ENOSPC; return 0; } - iinfo->i_lenExtents += inode->i_sb->s_blocksize; + if (isBeyondEOF) + iinfo->i_lenExtents += inode->i_sb->s_blocksize; } /* if the extent the requsted block is located in contains multiple @@ -768,6 +773,8 @@ udf_update_extents(inode, laarr, startnum, endnum, &prev_epos); brelse(prev_epos.bh); + brelse(cur_epos.bh); + brelse(next_epos.bh); newblock = udf_get_pblock(inode->i_sb, newblocknum, iinfo->i_location.partitionReferenceNum, 0); --- linux-3.5.0.orig/fs/udf/file.c +++ linux-3.5.0/fs/udf/file.c @@ -39,20 +39,24 @@ #include "udf_i.h" #include "udf_sb.h" -static int udf_adinicb_readpage(struct file *file, struct page *page) +static void __udf_adinicb_readpage(struct page *page) { struct inode *inode = page->mapping->host; char *kaddr; struct udf_inode_info *iinfo = UDF_I(inode); - BUG_ON(!PageLocked(page)); - kaddr = kmap(page); - memset(kaddr, 0, PAGE_CACHE_SIZE); memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, inode->i_size); + memset(kaddr + inode->i_size, 0, PAGE_CACHE_SIZE - inode->i_size); flush_dcache_page(page); SetPageUptodate(page); kunmap(page); +} + +static int udf_adinicb_readpage(struct file *file, struct page *page) +{ + BUG_ON(!PageLocked(page)); + __udf_adinicb_readpage(page); unlock_page(page); return 0; @@ -77,6 +81,25 @@ return 0; } +static int udf_adinicb_write_begin(struct file *file, + struct address_space *mapping, loff_t pos, + unsigned len, unsigned flags, struct page **pagep, + void **fsdata) +{ + struct page *page; + + if (WARN_ON_ONCE(pos >= PAGE_CACHE_SIZE)) + return -EIO; + page = grab_cache_page_write_begin(mapping, 0, flags); + if (!page) + return -ENOMEM; + *pagep = page; + + if (!PageUptodate(page) && len != PAGE_CACHE_SIZE) + __udf_adinicb_readpage(page); + return 0; +} + static int udf_adinicb_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, @@ -98,8 +121,8 @@ const struct address_space_operations udf_adinicb_aops = { .readpage = udf_adinicb_readpage, .writepage = udf_adinicb_writepage, - .write_begin = simple_write_begin, - .write_end = udf_adinicb_write_end, + .write_begin = udf_adinicb_write_begin, + .write_end = udf_adinicb_write_end, }; static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov, --- linux-3.5.0.orig/fs/udf/super.c +++ linux-3.5.0/fs/udf/super.c @@ -1283,10 +1283,11 @@ BUG_ON(ident != TAG_IDENT_LVD); lvd = (struct logicalVolDesc *)bh->b_data; table_len = le32_to_cpu(lvd->mapTableLength); - if (sizeof(*lvd) + table_len > sb->s_blocksize) { + if (table_len > sb->s_blocksize - sizeof(*lvd)) { udf_err(sb, "error loading logical volume descriptor: " "Partition table too long (%u > %lu)\n", table_len, sb->s_blocksize - sizeof(*lvd)); + ret = 1; goto out_bh; } @@ -1331,8 +1332,10 @@ UDF_ID_SPARABLE, strlen(UDF_ID_SPARABLE))) { if (udf_load_sparable_map(sb, map, - (struct sparablePartitionMap *)gpm) < 0) + (struct sparablePartitionMap *)gpm) < 0) { + ret = 1; goto out_bh; + } } else if (!strncmp(upm2->partIdent.ident, UDF_ID_METADATA, strlen(UDF_ID_METADATA))) { --- linux-3.5.0.orig/fs/udf/udf_sb.h +++ linux-3.5.0/fs/udf/udf_sb.h @@ -82,7 +82,7 @@ struct udf_bitmap { __u32 s_extLength; __u32 s_extPosition; - __u16 s_nr_groups; + int s_nr_groups; struct buffer_head **s_block_bitmap; }; --- linux-3.5.0.orig/fs/udf/namei.c +++ linux-3.5.0/fs/udf/namei.c @@ -1279,6 +1279,7 @@ *lenp = 3; fid->udf.block = location.logicalBlockNum; fid->udf.partref = location.partitionReferenceNum; + fid->udf.parent_partref = 0; fid->udf.generation = inode->i_generation; if (parent) { --- linux-3.5.0.orig/fs/afs/dir.c +++ linux-3.5.0/fs/afs/dir.c @@ -607,7 +607,7 @@ void *dir_version; int ret; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; vnode = AFS_FS_I(dentry->d_inode); --- linux-3.5.0.orig/fs/reiserfs/xattr_acl.c +++ linux-3.5.0/fs/reiserfs/xattr_acl.c @@ -429,6 +429,9 @@ int depth; int error; + if (IS_PRIVATE(inode)) + return 0; + if (S_ISLNK(inode->i_mode)) return -EOPNOTSUPP; --- linux-3.5.0.orig/fs/reiserfs/inode.c +++ linux-3.5.0/fs/reiserfs/inode.c @@ -1573,8 +1573,10 @@ reiserfs_warning(sb, "reiserfs-13077", "nfsd/reiserfs, fhtype=%d, len=%d - odd", fh_type, fh_len); - fh_type = 5; + fh_type = fh_len; } + if (fh_len < 2) + return NULL; return reiserfs_get_dentry(sb, fid->raw[0], fid->raw[1], (fh_type == 3 || fh_type >= 5) ? fid->raw[2] : 0); @@ -1583,6 +1585,8 @@ struct dentry *reiserfs_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type) { + if (fh_type > fh_len) + fh_type = fh_len; if (fh_type < 4) return NULL; @@ -1778,8 +1782,9 @@ BUG_ON(!th->t_trans_id); - dquot_initialize(inode); + reiserfs_write_unlock(inode->i_sb); err = dquot_alloc_inode(inode); + reiserfs_write_lock(inode->i_sb); if (err) goto out_end_trans; if (!dir->i_nlink) { @@ -1805,11 +1810,16 @@ TYPE_STAT_DATA, SD_SIZE, MAX_US_INT); memcpy(INODE_PKEY(inode), &(ih.ih_key), KEY_SIZE); args.dirid = le32_to_cpu(ih.ih_key.k_dir_id); - if (insert_inode_locked4(inode, args.objectid, - reiserfs_find_actor, &args) < 0) { + + reiserfs_write_unlock(inode->i_sb); + err = insert_inode_locked4(inode, args.objectid, + reiserfs_find_actor, &args); + reiserfs_write_lock(inode->i_sb); + if (err) { err = -EINVAL; goto out_bad_inode; } + if (old_format_only(sb)) /* not a perfect generation count, as object ids can be reused, but ** this is as good as reiserfs can do right now. @@ -1975,8 +1985,10 @@ out_end_trans: journal_end(th, th->t_super, th->t_blocks_allocated); + reiserfs_write_unlock(inode->i_sb); /* Drop can be outside and it needs more credits so it's better to have it outside */ dquot_drop(inode); + reiserfs_write_lock(inode->i_sb); inode->i_flags |= S_NOQUOTA; make_bad_inode(inode); @@ -3099,10 +3111,9 @@ /* must be turned off for recursive notify_change calls */ ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID); - depth = reiserfs_write_lock_once(inode->i_sb); if (is_quota_modification(inode, attr)) dquot_initialize(inode); - + depth = reiserfs_write_lock_once(inode->i_sb); if (attr->ia_valid & ATTR_SIZE) { /* version 2 items will be caught by the s_maxbytes check ** done for us in vmtruncate @@ -3166,7 +3177,9 @@ error = journal_begin(&th, inode->i_sb, jbegin_count); if (error) goto out; + reiserfs_write_unlock_once(inode->i_sb, depth); error = dquot_transfer(inode, attr); + depth = reiserfs_write_lock_once(inode->i_sb); if (error) { journal_end(&th, inode->i_sb, jbegin_count); goto out; --- linux-3.5.0.orig/fs/reiserfs/xattr.c +++ linux-3.5.0/fs/reiserfs/xattr.c @@ -187,8 +187,8 @@ if (dbuf->count == ARRAY_SIZE(dbuf->dentries)) return -ENOSPC; - if (name[0] == '.' && (name[1] == '\0' || - (name[1] == '.' && name[2] == '\0'))) + if (name[0] == '.' && (namelen < 2 || + (namelen == 2 && name[1] == '.'))) return 0; dentry = lookup_one_len(name, dbuf->xadir, namelen); @@ -318,7 +318,19 @@ static int chown_one_xattr(struct dentry *dentry, void *data) { struct iattr *attrs = data; - return reiserfs_setattr(dentry, attrs); + int ia_valid = attrs->ia_valid; + int err; + + /* + * We only want the ownership bits. Otherwise, we'll do + * things like change a directory to a regular file if + * ATTR_MODE is set. + */ + attrs->ia_valid &= (ATTR_UID|ATTR_GID); + err = reiserfs_setattr(dentry, attrs); + attrs->ia_valid = ia_valid; + + return err; } /* No i_mutex, but the inode is unconnected. */ --- linux-3.5.0.orig/fs/reiserfs/super.c +++ linux-3.5.0/fs/reiserfs/super.c @@ -293,7 +293,9 @@ retval = remove_save_link_only(s, &save_link_key, 0); continue; } + reiserfs_write_unlock(s); dquot_initialize(inode); + reiserfs_write_lock(s); if (truncate && S_ISDIR(inode->i_mode)) { /* We got a truncate request for a dir which is impossible. @@ -1325,7 +1327,7 @@ kfree(qf_names[i]); #endif err = -EINVAL; - goto out_err; + goto out_unlock; } #ifdef CONFIG_QUOTA handle_quota_files(s, qf_names, &qfmt); @@ -1369,7 +1371,7 @@ if (blocks) { err = reiserfs_resize(s, blocks); if (err != 0) - goto out_err; + goto out_unlock; } if (*mount_flags & MS_RDONLY) { @@ -1379,9 +1381,15 @@ /* it is read-only already */ goto out_ok; + /* + * Drop write lock. Quota will retake it when needed and lock + * ordering requires calling dquot_suspend() without it. + */ + reiserfs_write_unlock(s); err = dquot_suspend(s, -1); if (err < 0) goto out_err; + reiserfs_write_lock(s); /* try to remount file system with read-only permissions */ if (sb_umount_state(rs) == REISERFS_VALID_FS @@ -1391,7 +1399,7 @@ err = journal_begin(&th, s, 10); if (err) - goto out_err; + goto out_unlock; /* Mounting a rw partition read-only. */ reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s), 1); @@ -1406,7 +1414,7 @@ if (reiserfs_is_journal_aborted(journal)) { err = journal->j_errno; - goto out_err; + goto out_unlock; } handle_data_mode(s, mount_options); @@ -1415,7 +1423,7 @@ s->s_flags &= ~MS_RDONLY; /* now it is safe to call journal_begin */ err = journal_begin(&th, s, 10); if (err) - goto out_err; + goto out_unlock; /* Mount a partition which is read-only, read-write */ reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s), 1); @@ -1432,10 +1440,16 @@ SB_JOURNAL(s)->j_must_wait = 1; err = journal_end(&th, s, 10); if (err) - goto out_err; + goto out_unlock; if (!(*mount_flags & MS_RDONLY)) { + /* + * Drop write lock. Quota will retake it when needed and lock + * ordering requires calling dquot_resume() without it. + */ + reiserfs_write_unlock(s); dquot_resume(s, -1); + reiserfs_write_lock(s); finish_unfinished(s); reiserfs_xattr_init(s, *mount_flags); } @@ -1445,9 +1459,10 @@ reiserfs_write_unlock(s); return 0; +out_unlock: + reiserfs_write_unlock(s); out_err: kfree(new_opts); - reiserfs_write_unlock(s); return err; } @@ -2085,13 +2100,15 @@ REISERFS_QUOTA_TRANS_BLOCKS(dquot->dq_sb)); if (ret) goto out; + reiserfs_write_unlock(dquot->dq_sb); ret = dquot_commit(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_TRANS_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -2107,13 +2124,15 @@ REISERFS_QUOTA_INIT_BLOCKS(dquot->dq_sb)); if (ret) goto out; + reiserfs_write_unlock(dquot->dq_sb); ret = dquot_acquire(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -2127,19 +2146,21 @@ ret = journal_begin(&th, dquot->dq_sb, REISERFS_QUOTA_DEL_BLOCKS(dquot->dq_sb)); + reiserfs_write_unlock(dquot->dq_sb); if (ret) { /* Release dquot anyway to avoid endless cycle in dqput() */ dquot_release(dquot); goto out; } ret = dquot_release(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_DEL_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: reiserfs_write_unlock(dquot->dq_sb); +out: return ret; } @@ -2164,11 +2185,13 @@ ret = journal_begin(&th, sb, 2); if (ret) goto out; + reiserfs_write_unlock(sb); ret = dquot_commit_info(sb, type); + reiserfs_write_lock(sb); err = journal_end(&th, sb, 2); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(sb); return ret; } @@ -2193,8 +2216,11 @@ struct reiserfs_transaction_handle th; int opt = type == USRQUOTA ? REISERFS_USRQUOTA : REISERFS_GRPQUOTA; - if (!(REISERFS_SB(sb)->s_mount_opt & (1 << opt))) - return -EINVAL; + reiserfs_write_lock(sb); + if (!(REISERFS_SB(sb)->s_mount_opt & (1 << opt))) { + err = -EINVAL; + goto out; + } /* Quotafile not on the same filesystem? */ if (path->dentry->d_sb != sb) { @@ -2236,8 +2262,10 @@ if (err) goto out; } - err = dquot_quota_on(sb, type, format_id, path); + reiserfs_write_unlock(sb); + return dquot_quota_on(sb, type, format_id, path); out: + reiserfs_write_unlock(sb); return err; } @@ -2310,7 +2338,9 @@ tocopy = sb->s_blocksize - offset < towrite ? sb->s_blocksize - offset : towrite; tmp_bh.b_state = 0; + reiserfs_write_lock(sb); err = reiserfs_get_block(inode, blk, &tmp_bh, GET_BLOCK_CREATE); + reiserfs_write_unlock(sb); if (err) goto out; if (offset || tocopy != sb->s_blocksize) @@ -2326,10 +2356,12 @@ flush_dcache_page(bh->b_page); set_buffer_uptodate(bh); unlock_buffer(bh); + reiserfs_write_lock(sb); reiserfs_prepare_for_journal(sb, bh, 1); journal_mark_dirty(current->journal_info, sb, bh); if (!journal_quota) reiserfs_add_ordered_list(inode, bh); + reiserfs_write_unlock(sb); brelse(bh); offset = 0; towrite -= tocopy; --- linux-3.5.0.orig/fs/reiserfs/stree.c +++ linux-3.5.0/fs/reiserfs/stree.c @@ -1968,7 +1968,9 @@ key2type(&(key->on_disk_key))); #endif + reiserfs_write_unlock(inode->i_sb); retval = dquot_alloc_space_nodirty(inode, pasted_size); + reiserfs_write_lock(inode->i_sb); if (retval) { pathrelse(search_path); return retval; @@ -2061,9 +2063,11 @@ "reiserquota insert_item(): allocating %u id=%u type=%c", quota_bytes, inode->i_uid, head2type(ih)); #endif + reiserfs_write_unlock(inode->i_sb); /* We can't dirty inode here. It would be immediately written but * appropriate stat item isn't inserted yet... */ retval = dquot_alloc_space_nodirty(inode, quota_bytes); + reiserfs_write_lock(inode->i_sb); if (retval) { pathrelse(path); return retval; --- linux-3.5.0.orig/fs/reiserfs/dir.c +++ linux-3.5.0/fs/reiserfs/dir.c @@ -204,6 +204,8 @@ next_pos = deh_offset(deh) + 1; if (item_moved(&tmp_ih, &path_to_entry)) { + set_cpu_key_k_offset(&pos_key, + next_pos); goto research; } } /* for */ --- linux-3.5.0.orig/fs/jbd2/transaction.c +++ linux-3.5.0/fs/jbd2/transaction.c @@ -209,7 +209,8 @@ if (!new_transaction) goto alloc_transaction; write_lock(&journal->j_state_lock); - if (!journal->j_running_transaction) { + if (!journal->j_running_transaction && + !journal->j_barrier_count) { jbd2_get_transaction(journal, new_transaction); new_transaction = NULL; } @@ -1046,9 +1047,12 @@ void jbd2_journal_set_triggers(struct buffer_head *bh, struct jbd2_buffer_trigger_type *type) { - struct journal_head *jh = bh2jh(bh); + struct journal_head *jh = jbd2_journal_grab_journal_head(bh); + if (WARN_ON(!jh)) + return; jh->b_triggers = type; + jbd2_journal_put_journal_head(jh); } void jbd2_buffer_frozen_trigger(struct journal_head *jh, void *mapped_data, @@ -1100,17 +1104,18 @@ { transaction_t *transaction = handle->h_transaction; journal_t *journal = transaction->t_journal; - struct journal_head *jh = bh2jh(bh); + struct journal_head *jh; int ret = 0; - jbd_debug(5, "journal_head %p\n", jh); - JBUFFER_TRACE(jh, "entry"); if (is_handle_aborted(handle)) goto out; - if (!buffer_jbd(bh)) { + jh = jbd2_journal_grab_journal_head(bh); + if (!jh) { ret = -EUCLEAN; goto out; } + jbd_debug(5, "journal_head %p\n", jh); + JBUFFER_TRACE(jh, "entry"); jbd_lock_bh_state(bh); @@ -1201,6 +1206,7 @@ spin_unlock(&journal->j_list_lock); out_unlock_bh: jbd_unlock_bh_state(bh); + jbd2_journal_put_journal_head(jh); out: JBUFFER_TRACE(jh, "exit"); WARN_ON(ret); /* All errors are bugs, so dump the stack */ --- linux-3.5.0.orig/fs/jbd2/commit.c +++ linux-3.5.0/fs/jbd2/commit.c @@ -382,7 +382,7 @@ int space_left = 0; int first_tag = 0; int tag_flag; - int i, to_free = 0; + int i; int tag_bytes = journal_tag_bytes(journal); struct buffer_head *cbh = NULL; /* For transactional checksums */ __u32 crc32_sum = ~0; @@ -1108,7 +1108,7 @@ journal->j_stats.run.rs_blocks_logged += stats.run.rs_blocks_logged; spin_unlock(&journal->j_history_lock); - commit_transaction->t_state = T_FINISHED; + commit_transaction->t_state = T_COMMIT_CALLBACK; J_ASSERT(commit_transaction == journal->j_committing_transaction); journal->j_commit_sequence = commit_transaction->t_tid; journal->j_committing_transaction = NULL; @@ -1123,38 +1123,44 @@ journal->j_average_commit_time*3) / 4; else journal->j_average_commit_time = commit_time; + write_unlock(&journal->j_state_lock); - if (commit_transaction->t_checkpoint_list == NULL && - commit_transaction->t_checkpoint_io_list == NULL) { - __jbd2_journal_drop_transaction(journal, commit_transaction); - to_free = 1; + if (journal->j_checkpoint_transactions == NULL) { + journal->j_checkpoint_transactions = commit_transaction; + commit_transaction->t_cpnext = commit_transaction; + commit_transaction->t_cpprev = commit_transaction; } else { - if (journal->j_checkpoint_transactions == NULL) { - journal->j_checkpoint_transactions = commit_transaction; - commit_transaction->t_cpnext = commit_transaction; - commit_transaction->t_cpprev = commit_transaction; - } else { - commit_transaction->t_cpnext = - journal->j_checkpoint_transactions; - commit_transaction->t_cpprev = - commit_transaction->t_cpnext->t_cpprev; - commit_transaction->t_cpnext->t_cpprev = - commit_transaction; - commit_transaction->t_cpprev->t_cpnext = + commit_transaction->t_cpnext = + journal->j_checkpoint_transactions; + commit_transaction->t_cpprev = + commit_transaction->t_cpnext->t_cpprev; + commit_transaction->t_cpnext->t_cpprev = + commit_transaction; + commit_transaction->t_cpprev->t_cpnext = commit_transaction; - } } spin_unlock(&journal->j_list_lock); - + /* Drop all spin_locks because commit_callback may be block. + * __journal_remove_checkpoint() can not destroy transaction + * under us because it is not marked as T_FINISHED yet */ if (journal->j_commit_callback) journal->j_commit_callback(journal, commit_transaction); trace_jbd2_end_commit(journal, commit_transaction); jbd_debug(1, "JBD2: commit %d complete, head %d\n", journal->j_commit_sequence, journal->j_tail_sequence); - if (to_free) - jbd2_journal_free_transaction(commit_transaction); + write_lock(&journal->j_state_lock); + spin_lock(&journal->j_list_lock); + commit_transaction->t_state = T_FINISHED; + /* Recheck checkpoint lists after j_list_lock was dropped */ + if (commit_transaction->t_checkpoint_list == NULL && + commit_transaction->t_checkpoint_io_list == NULL) { + __jbd2_journal_drop_transaction(journal, commit_transaction); + jbd2_journal_free_transaction(commit_transaction); + } + spin_unlock(&journal->j_list_lock); + write_unlock(&journal->j_state_lock); wake_up(&journal->j_wait_done_commit); } --- linux-3.5.0.orig/fs/jbd2/journal.c +++ linux-3.5.0/fs/jbd2/journal.c @@ -699,6 +699,37 @@ } /* + * When this function returns the transaction corresponding to tid + * will be completed. If the transaction has currently running, start + * committing that transaction before waiting for it to complete. If + * the transaction id is stale, it is by definition already completed, + * so just return SUCCESS. + */ +int jbd2_complete_transaction(journal_t *journal, tid_t tid) +{ + int need_to_wait = 1; + + read_lock(&journal->j_state_lock); + if (journal->j_running_transaction && + journal->j_running_transaction->t_tid == tid) { + if (journal->j_commit_request != tid) { + /* transaction not yet started, so request it */ + read_unlock(&journal->j_state_lock); + jbd2_log_start_commit(journal, tid); + goto wait_commit; + } + } else if (!(journal->j_committing_transaction && + journal->j_committing_transaction->t_tid == tid)) + need_to_wait = 0; + read_unlock(&journal->j_state_lock); + if (!need_to_wait) + return 0; +wait_commit: + return jbd2_log_wait_commit(journal, tid); +} +EXPORT_SYMBOL(jbd2_complete_transaction); + +/* * Log buffer allocation routines: */ @@ -1354,6 +1385,11 @@ BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); read_lock(&journal->j_state_lock); + /* Is it already empty? */ + if (sb->s_start == 0) { + read_unlock(&journal->j_state_lock); + return; + } jbd_debug(1, "JBD2: Marking journal as empty (seq %d)\n", journal->j_tail_sequence); @@ -1377,7 +1413,7 @@ * Update a journal's errno. Write updated superblock to disk waiting for IO * to complete. */ -static void jbd2_journal_update_sb_errno(journal_t *journal) +void jbd2_journal_update_sb_errno(journal_t *journal) { journal_superblock_t *sb = journal->j_superblock; @@ -1390,6 +1426,7 @@ jbd2_write_superblock(journal, WRITE_SYNC); } +EXPORT_SYMBOL(jbd2_journal_update_sb_errno); /* * Read the superblock for a given journal, performing initial --- linux-3.5.0.orig/fs/ecryptfs/inode.c +++ linux-3.5.0/fs/ecryptfs/inode.c @@ -143,6 +143,31 @@ return 0; } +static int ecryptfs_do_unlink(struct inode *dir, struct dentry *dentry, + struct inode *inode) +{ + struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); + struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); + struct dentry *lower_dir_dentry; + int rc; + + dget(lower_dentry); + lower_dir_dentry = lock_parent(lower_dentry); + rc = vfs_unlink(lower_dir_inode, lower_dentry); + if (rc) { + printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); + goto out_unlock; + } + fsstack_copy_attr_times(dir, lower_dir_inode); + set_nlink(inode, ecryptfs_inode_to_lower(inode)->i_nlink); + inode->i_ctime = dir->i_ctime; + d_drop(dentry); +out_unlock: + unlock_dir(lower_dir_dentry); + dput(lower_dentry); + return rc; +} + /** * ecryptfs_do_create * @directory_inode: inode of the new file's dentry's parent in ecryptfs @@ -182,8 +207,10 @@ } inode = __ecryptfs_get_inode(lower_dentry->d_inode, directory_inode->i_sb); - if (IS_ERR(inode)) + if (IS_ERR(inode)) { + vfs_unlink(lower_dir_dentry->d_inode, lower_dentry); goto out_lock; + } fsstack_copy_attr_times(directory_inode, lower_dir_dentry->d_inode); fsstack_copy_inode_size(directory_inode, lower_dir_dentry->d_inode); out_lock: @@ -200,8 +227,8 @@ * * Returns zero on success */ -static int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, - struct inode *ecryptfs_inode) +int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, + struct inode *ecryptfs_inode) { struct ecryptfs_crypt_stat *crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; @@ -265,7 +292,9 @@ * that this on disk file is prepared to be an ecryptfs file */ rc = ecryptfs_initialize_file(ecryptfs_dentry, ecryptfs_inode); if (rc) { - drop_nlink(ecryptfs_inode); + ecryptfs_do_unlink(directory_inode, ecryptfs_dentry, + ecryptfs_inode); + make_bad_inode(ecryptfs_inode); unlock_new_inode(ecryptfs_inode); iput(ecryptfs_inode); goto out; @@ -477,27 +506,7 @@ static int ecryptfs_unlink(struct inode *dir, struct dentry *dentry) { - int rc = 0; - struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); - struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); - struct dentry *lower_dir_dentry; - - dget(lower_dentry); - lower_dir_dentry = lock_parent(lower_dentry); - rc = vfs_unlink(lower_dir_inode, lower_dentry); - if (rc) { - printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); - goto out_unlock; - } - fsstack_copy_attr_times(dir, lower_dir_inode); - set_nlink(dentry->d_inode, - ecryptfs_inode_to_lower(dentry->d_inode)->i_nlink); - dentry->d_inode->i_ctime = dir->i_ctime; - d_drop(dentry); -out_unlock: - unlock_dir(lower_dir_dentry); - dput(lower_dentry); - return rc; + return ecryptfs_do_unlink(dir, dentry, dentry->d_inode); } static int ecryptfs_symlink(struct inode *dir, struct dentry *dentry, @@ -621,6 +630,7 @@ struct dentry *lower_old_dir_dentry; struct dentry *lower_new_dir_dentry; struct dentry *trap = NULL; + struct inode *target_inode; lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); @@ -628,6 +638,7 @@ dget(lower_new_dentry); lower_old_dir_dentry = dget_parent(lower_old_dentry); lower_new_dir_dentry = dget_parent(lower_new_dentry); + target_inode = new_dentry->d_inode; trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); /* source should not be ancestor of target */ if (trap == lower_old_dentry) { @@ -643,6 +654,9 @@ lower_new_dir_dentry->d_inode, lower_new_dentry); if (rc) goto out_lock; + if (target_inode) + fsstack_copy_attr_all(target_inode, + ecryptfs_inode_to_lower(target_inode)); fsstack_copy_attr_all(new_dir, lower_new_dir_dentry->d_inode); if (new_dir != old_dir) fsstack_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode); @@ -972,12 +986,6 @@ goto out; } - if (S_ISREG(inode->i_mode)) { - rc = filemap_write_and_wait(inode->i_mapping); - if (rc) - goto out; - fsstack_copy_attr_all(inode, lower_inode); - } memcpy(&lower_ia, ia, sizeof(lower_ia)); if (ia->ia_valid & ATTR_FILE) lower_ia.ia_file = ecryptfs_file_to_lower(ia->ia_file); --- linux-3.5.0.orig/fs/ecryptfs/main.c +++ linux-3.5.0/fs/ecryptfs/main.c @@ -162,6 +162,7 @@ inode_info = ecryptfs_inode_to_private(inode); if (atomic_dec_and_mutex_lock(&inode_info->lower_file_count, &inode_info->lower_file_mutex)) { + filemap_write_and_wait(inode->i_mapping); fput(inode_info->lower_file); inode_info->lower_file = NULL; mutex_unlock(&inode_info->lower_file_mutex); @@ -279,6 +280,7 @@ char *fnek_src; char *cipher_key_bytes_src; char *fn_cipher_key_bytes_src; + u8 cipher_code; *check_ruid = 0; @@ -420,6 +422,18 @@ && !fn_cipher_key_bytes_set) mount_crypt_stat->global_default_fn_cipher_key_bytes = mount_crypt_stat->global_default_cipher_key_size; + + cipher_code = ecryptfs_code_for_cipher_string( + mount_crypt_stat->global_default_cipher_name, + mount_crypt_stat->global_default_cipher_key_size); + if (!cipher_code) { + ecryptfs_printk(KERN_ERR, + "eCryptfs doesn't support cipher: %s", + mount_crypt_stat->global_default_cipher_name); + rc = -EINVAL; + goto out; + } + mutex_lock(&key_tfm_list_mutex); if (!ecryptfs_tfm_exists(mount_crypt_stat->global_default_cipher_name, NULL)) { @@ -505,7 +519,6 @@ goto out; } - s->s_flags = flags; rc = bdi_setup_and_register(&sbi->bdi, "ecryptfs", BDI_CAP_MAP_COPY); if (rc) goto out1; @@ -541,9 +554,25 @@ } ecryptfs_set_superblock_lower(s, path.dentry->d_sb); + + /** + * Set the POSIX ACL flag based on whether they're enabled in the lower + * mount. Force a read-only eCryptfs mount if the lower mount is ro. + * Allow a ro eCryptfs mount even when the lower mount is rw. + */ + s->s_flags = flags & ~MS_POSIXACL; + s->s_flags |= path.dentry->d_sb->s_flags & (MS_RDONLY | MS_POSIXACL); + s->s_maxbytes = path.dentry->d_sb->s_maxbytes; s->s_blocksize = path.dentry->d_sb->s_blocksize; s->s_magic = ECRYPTFS_SUPER_MAGIC; + s->s_stack_depth = path.dentry->d_sb->s_stack_depth + 1; + + rc = -EINVAL; + if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { + printk(KERN_ERR "eCryptfs: maximum fs stacking depth exceeded\n"); + goto out_free; + } inode = ecryptfs_get_inode(path.dentry->d_inode, s); rc = PTR_ERR(inode); --- linux-3.5.0.orig/fs/ecryptfs/file.c +++ linux-3.5.0/fs/ecryptfs/file.c @@ -138,29 +138,50 @@ return rc; } -static void ecryptfs_vma_close(struct vm_area_struct *vma) -{ - filemap_write_and_wait(vma->vm_file->f_mapping); -} - -static const struct vm_operations_struct ecryptfs_file_vm_ops = { - .close = ecryptfs_vma_close, - .fault = filemap_fault, -}; +struct kmem_cache *ecryptfs_file_info_cache; -static int ecryptfs_file_mmap(struct file *file, struct vm_area_struct *vma) +static int read_or_initialize_metadata(struct dentry *dentry) { + struct inode *inode = dentry->d_inode; + struct ecryptfs_mount_crypt_stat *mount_crypt_stat; + struct ecryptfs_crypt_stat *crypt_stat; int rc; - rc = generic_file_mmap(file, vma); + crypt_stat = &ecryptfs_inode_to_private(inode)->crypt_stat; + mount_crypt_stat = &ecryptfs_superblock_to_private( + inode->i_sb)->mount_crypt_stat; + mutex_lock(&crypt_stat->cs_mutex); + + if (crypt_stat->flags & ECRYPTFS_POLICY_APPLIED && + crypt_stat->flags & ECRYPTFS_KEY_VALID) { + rc = 0; + goto out; + } + + rc = ecryptfs_read_metadata(dentry); if (!rc) - vma->vm_ops = &ecryptfs_file_vm_ops; + goto out; + + if (mount_crypt_stat->flags & ECRYPTFS_PLAINTEXT_PASSTHROUGH_ENABLED) { + crypt_stat->flags &= ~(ECRYPTFS_I_SIZE_INITIALIZED + | ECRYPTFS_ENCRYPTED); + rc = 0; + goto out; + } + + if (!(mount_crypt_stat->flags & ECRYPTFS_XATTR_METADATA_ENABLED) && + !i_size_read(ecryptfs_inode_to_lower(inode))) { + rc = ecryptfs_initialize_file(dentry, inode); + if (!rc) + goto out; + } + rc = -EIO; +out: + mutex_unlock(&crypt_stat->cs_mutex); return rc; } -struct kmem_cache *ecryptfs_file_info_cache; - /** * ecryptfs_open * @inode: inode speciying file to open @@ -236,32 +257,9 @@ rc = 0; goto out; } - mutex_lock(&crypt_stat->cs_mutex); - if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED) - || !(crypt_stat->flags & ECRYPTFS_KEY_VALID)) { - rc = ecryptfs_read_metadata(ecryptfs_dentry); - if (rc) { - ecryptfs_printk(KERN_DEBUG, - "Valid headers not found\n"); - if (!(mount_crypt_stat->flags - & ECRYPTFS_PLAINTEXT_PASSTHROUGH_ENABLED)) { - rc = -EIO; - printk(KERN_WARNING "Either the lower file " - "is not in a valid eCryptfs format, " - "or the key could not be retrieved. " - "Plaintext passthrough mode is not " - "enabled; returning -EIO\n"); - mutex_unlock(&crypt_stat->cs_mutex); - goto out_put; - } - rc = 0; - crypt_stat->flags &= ~(ECRYPTFS_I_SIZE_INITIALIZED - | ECRYPTFS_ENCRYPTED); - mutex_unlock(&crypt_stat->cs_mutex); - goto out; - } - } - mutex_unlock(&crypt_stat->cs_mutex); + rc = read_or_initialize_metadata(ecryptfs_dentry); + if (rc) + goto out_put; ecryptfs_printk(KERN_DEBUG, "inode w/ addr = [0x%p], i_ino = " "[0x%.16lx] size: [0x%.16llx]\n", inode, inode->i_ino, (unsigned long long)i_size_read(inode)); @@ -277,8 +275,14 @@ static int ecryptfs_flush(struct file *file, fl_owner_t td) { - return file->f_mode & FMODE_WRITE - ? filemap_write_and_wait(file->f_mapping) : 0; + struct file *lower_file = ecryptfs_file_to_lower(file); + + if (lower_file->f_op && lower_file->f_op->flush) { + filemap_write_and_wait(file->f_mapping); + return lower_file->f_op->flush(lower_file, td); + } + + return 0; } static int ecryptfs_release(struct inode *inode, struct file *file) @@ -292,15 +296,7 @@ static int ecryptfs_fsync(struct file *file, loff_t start, loff_t end, int datasync) { - int rc = 0; - - rc = generic_file_fsync(file, start, end, datasync); - if (rc) - goto out; - rc = vfs_fsync_range(ecryptfs_file_to_lower(file), start, end, - datasync); -out: - return rc; + return vfs_fsync(ecryptfs_file_to_lower(file), datasync); } static int ecryptfs_fasync(int fd, struct file *file, int flag) @@ -369,7 +365,7 @@ #ifdef CONFIG_COMPAT .compat_ioctl = ecryptfs_compat_ioctl, #endif - .mmap = ecryptfs_file_mmap, + .mmap = generic_file_mmap, .open = ecryptfs_open, .flush = ecryptfs_flush, .release = ecryptfs_release, --- linux-3.5.0.orig/fs/ecryptfs/mmap.c +++ linux-3.5.0/fs/ecryptfs/mmap.c @@ -66,18 +66,6 @@ { int rc; - /* - * Refuse to write the page out if we are called from reclaim context - * since our writepage() path may potentially allocate memory when - * calling into the lower fs vfs_write() which may in turn invoke - * us again. - */ - if (current->flags & PF_MEMALLOC) { - redirty_page_for_writepage(wbc, page); - rc = 0; - goto out; - } - rc = ecryptfs_encrypt_page(page); if (rc) { ecryptfs_printk(KERN_WARNING, "Error encrypting " @@ -498,7 +486,6 @@ struct ecryptfs_crypt_stat *crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; int rc; - int need_unlock_page = 1; ecryptfs_printk(KERN_DEBUG, "Calling fill_zeros_to_end_of_page" "(page w/ index = [0x%.16lx], to = [%d])\n", index, to); @@ -519,26 +506,26 @@ "zeros in page with index = [0x%.16lx]\n", index); goto out; } - set_page_dirty(page); - unlock_page(page); - need_unlock_page = 0; + rc = ecryptfs_encrypt_page(page); + if (rc) { + ecryptfs_printk(KERN_WARNING, "Error encrypting page (upper " + "index [0x%.16lx])\n", index); + goto out; + } if (pos + copied > i_size_read(ecryptfs_inode)) { i_size_write(ecryptfs_inode, pos + copied); ecryptfs_printk(KERN_DEBUG, "Expanded file size to " "[0x%.16llx]\n", (unsigned long long)i_size_read(ecryptfs_inode)); - balance_dirty_pages_ratelimited(mapping); - rc = ecryptfs_write_inode_size_to_metadata(ecryptfs_inode); - if (rc) { - printk(KERN_ERR "Error writing inode size to metadata; " - "rc = [%d]\n", rc); - goto out; - } } - rc = copied; + rc = ecryptfs_write_inode_size_to_metadata(ecryptfs_inode); + if (rc) + printk(KERN_ERR "Error writing inode size to metadata; " + "rc = [%d]\n", rc); + else + rc = copied; out: - if (need_unlock_page) - unlock_page(page); + unlock_page(page); page_cache_release(page); return rc; } --- linux-3.5.0.orig/fs/ecryptfs/ecryptfs_kernel.h +++ linux-3.5.0/fs/ecryptfs/ecryptfs_kernel.h @@ -568,6 +568,8 @@ struct inode *ecryptfs_get_inode(struct inode *lower_inode, struct super_block *sb); void ecryptfs_i_size_init(const char *page_virt, struct inode *inode); +int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, + struct inode *ecryptfs_inode); int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, size_t *decrypted_name_size, struct dentry *ecryptfs_dentry, --- linux-3.5.0.orig/fs/xfs/xfs_qm.c +++ linux-3.5.0/fs/xfs/xfs_qm.c @@ -1453,7 +1453,7 @@ int error; if (!xfs_dqlock_nowait(dqp)) - goto out_busy; + goto out_move_tail; /* * This dquot has acquired a reference in the meantime remove it from @@ -1476,7 +1476,7 @@ * getting flushed to disk, we don't want to reclaim it. */ if (!xfs_dqflock_nowait(dqp)) - goto out_busy; + goto out_unlock_move_tail; if (XFS_DQ_IS_DIRTY(dqp)) { struct xfs_buf *bp = NULL; @@ -1487,7 +1487,7 @@ if (error) { xfs_warn(mp, "%s: dquot %p flush failed", __func__, dqp); - goto out_busy; + goto out_unlock_move_tail; } xfs_buf_delwri_queue(bp, buffer_list); @@ -1496,7 +1496,7 @@ * Give the dquot another try on the freelist, as the * flushing will take some time. */ - goto out_busy; + goto out_unlock_move_tail; } xfs_dqfunlock(dqp); @@ -1515,14 +1515,13 @@ XFS_STATS_INC(xs_qm_dqreclaims); return; -out_busy: - xfs_dqunlock(dqp); - /* * Move the dquot to the tail of the list so that we don't spin on it. */ +out_unlock_move_tail: + xfs_dqunlock(dqp); +out_move_tail: list_move_tail(&dqp->q_lru, &qi->qi_lru_list); - trace_xfs_dqreclaim_busy(dqp); XFS_STATS_INC(xs_qm_dqreclaim_misses); } --- linux-3.5.0.orig/fs/xfs/xfs_iops.c +++ linux-3.5.0/fs/xfs/xfs_iops.c @@ -454,6 +454,28 @@ return 0; } +static void +xfs_setattr_mode( + struct xfs_trans *tp, + struct xfs_inode *ip, + struct iattr *iattr) +{ + struct inode *inode = VFS_I(ip); + umode_t mode = iattr->ia_mode; + + ASSERT(tp); + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; +} + int xfs_setattr_nonsize( struct xfs_inode *ip, @@ -605,18 +627,8 @@ /* * Change file access modes. */ - if (mask & ATTR_MODE) { - umode_t mode = iattr->ia_mode; - - if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) - mode &= ~S_ISGID; - - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= mode & ~S_IFMT; - } + if (mask & ATTR_MODE) + xfs_setattr_mode(tp, ip, iattr); /* * Change file access or modified times. @@ -713,9 +725,8 @@ return XFS_ERROR(error); ASSERT(S_ISREG(ip->i_d.di_mode)); - ASSERT((mask & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| - ATTR_MTIME_SET|ATTR_KILL_SUID|ATTR_KILL_SGID| - ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); + ASSERT((mask & (ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| + ATTR_MTIME_SET|ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); if (!(flags & XFS_ATTR_NOLOCK)) { lock_flags |= XFS_IOLOCK_EXCL; @@ -856,6 +867,12 @@ xfs_iflags_set(ip, XFS_ITRUNCATED); } + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) + xfs_setattr_mode(tp, ip, iattr); + if (mask & ATTR_CTIME) { inode->i_ctime = iattr->ia_ctime; ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; --- linux-3.5.0.orig/fs/xfs/xfs_aops.c +++ linux-3.5.0/fs/xfs/xfs_aops.c @@ -86,11 +86,11 @@ } if (ioend->io_iocb) { + inode_dio_done(ioend->io_inode); if (ioend->io_isasync) { aio_complete(ioend->io_iocb, ioend->io_error ? ioend->io_error : ioend->io_result, 0); } - inode_dio_done(ioend->io_inode); } mempool_free(ioend, xfs_ioend_pool); --- linux-3.5.0.orig/fs/xfs/xfs_buf_item.c +++ linux-3.5.0/fs/xfs/xfs_buf_item.c @@ -459,7 +459,25 @@ } xfs_buf_relse(bp); } else if (freed && remove) { + /* + * There are currently two references to the buffer - the active + * LRU reference and the buf log item. What we are about to do + * here - simulate a failed IO completion - requires 3 + * references. + * + * The LRU reference is removed by the xfs_buf_stale() call. The + * buf item reference is removed by the xfs_buf_iodone() + * callback that is run by xfs_buf_do_callbacks() during ioend + * processing (via the bp->b_iodone callback), and then finally + * the ioend processing will drop the IO reference if the buffer + * is marked XBF_ASYNC. + * + * Hence we need to take an additional reference here so that IO + * completion processing doesn't free the buffer prematurely. + */ xfs_buf_lock(bp); + xfs_buf_hold(bp); + bp->b_flags |= XBF_ASYNC; xfs_buf_ioerror(bp, EIO); XFS_BUF_UNDONE(bp); xfs_buf_stale(bp); --- linux-3.5.0.orig/fs/xfs/xfs_export.c +++ linux-3.5.0/fs/xfs/xfs_export.c @@ -189,6 +189,9 @@ struct xfs_fid64 *fid64 = (struct xfs_fid64 *)fid; struct inode *inode = NULL; + if (fh_len < xfs_fileid_length(fileid_type)) + return NULL; + switch (fileid_type) { case FILEID_INO32_GEN_PARENT: inode = xfs_nfs_get_inode(sb, fid->i32.parent_ino, --- linux-3.5.0.orig/fs/xfs/xfs_sync.c +++ linux-3.5.0/fs/xfs/xfs_sync.c @@ -391,7 +391,7 @@ * cancel_delayed_work_sync on this work queue before tearing down * the ail and the log in xfs_log_unmount. */ - if (!(mp->m_super->s_flags & MS_ACTIVE) && + if ((mp->m_super->s_flags & MS_ACTIVE) && !(mp->m_flags & XFS_MOUNT_RDONLY)) { /* dgc: errors ignored here */ if (mp->m_super->s_frozen == SB_UNFROZEN && --- linux-3.5.0.orig/fs/xfs/xfs_buf.c +++ linux-3.5.0/fs/xfs/xfs_buf.c @@ -1135,9 +1135,14 @@ { xfs_buf_t *bp = (xfs_buf_t *)bio->bi_private; - xfs_buf_ioerror(bp, -error); + /* + * don't overwrite existing errors - otherwise we can lose errors on + * buffers that require multiple bios to complete. + */ + if (!bp->b_error) + xfs_buf_ioerror(bp, -error); - if (!error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ)) + if (!bp->b_error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ)) invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp)); _xfs_buf_ioend(bp, 1); @@ -1213,6 +1218,11 @@ if (size) goto next_chunk; } else { + /* + * This is guaranteed not to be the last io reference count + * because the caller (xfs_buf_iorequest) holds a count itself. + */ + atomic_dec(&bp->b_io_remaining); xfs_buf_ioerror(bp, EIO); bio_put(bio); } --- linux-3.5.0.orig/fs/xfs/xfs_log_recover.c +++ linux-3.5.0/fs/xfs/xfs_log_recover.c @@ -3533,7 +3533,7 @@ * - order is important. */ error = xlog_bread_offset(log, 0, - bblks - split_bblks, hbp, + bblks - split_bblks, dbp, offset + BBTOB(split_bblks)); if (error) goto bread_err2; --- linux-3.5.0.orig/fs/jffs2/file.c +++ linux-3.5.0/fs/jffs2/file.c @@ -138,33 +138,39 @@ struct page *pg; struct inode *inode = mapping->host; struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); + struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); + struct jffs2_raw_inode ri; + uint32_t alloc_len = 0; pgoff_t index = pos >> PAGE_CACHE_SHIFT; uint32_t pageofs = index << PAGE_CACHE_SHIFT; int ret = 0; + jffs2_dbg(1, "%s()\n", __func__); + + if (pageofs > inode->i_size) { + ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, + ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); + if (ret) + return ret; + } + + mutex_lock(&f->sem); pg = grab_cache_page_write_begin(mapping, index, flags); - if (!pg) + if (!pg) { + if (alloc_len) + jffs2_complete_reservation(c); + mutex_unlock(&f->sem); return -ENOMEM; + } *pagep = pg; - jffs2_dbg(1, "%s()\n", __func__); - - if (pageofs > inode->i_size) { + if (alloc_len) { /* Make new hole frag from old EOF to new page */ - struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); - struct jffs2_raw_inode ri; struct jffs2_full_dnode *fn; - uint32_t alloc_len; jffs2_dbg(1, "Writing new hole frag 0x%x-0x%x between current EOF and new page\n", (unsigned int)inode->i_size, pageofs); - ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, - ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); - if (ret) - goto out_page; - - mutex_lock(&f->sem); memset(&ri, 0, sizeof(ri)); ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); @@ -191,7 +197,6 @@ if (IS_ERR(fn)) { ret = PTR_ERR(fn); jffs2_complete_reservation(c); - mutex_unlock(&f->sem); goto out_page; } ret = jffs2_add_full_dnode_to_inode(c, f, fn); @@ -206,12 +211,10 @@ jffs2_mark_node_obsolete(c, fn->raw); jffs2_free_full_dnode(fn); jffs2_complete_reservation(c); - mutex_unlock(&f->sem); goto out_page; } jffs2_complete_reservation(c); inode->i_size = pageofs; - mutex_unlock(&f->sem); } /* @@ -220,18 +223,18 @@ * case of a short-copy. */ if (!PageUptodate(pg)) { - mutex_lock(&f->sem); ret = jffs2_do_readpage_nolock(inode, pg); - mutex_unlock(&f->sem); if (ret) goto out_page; } + mutex_unlock(&f->sem); jffs2_dbg(1, "end write_begin(). pg->flags %lx\n", pg->flags); return ret; out_page: unlock_page(pg); page_cache_release(pg); + mutex_unlock(&f->sem); return ret; } --- linux-3.5.0.orig/fs/jffs2/nodemgmt.c +++ linux-3.5.0/fs/jffs2/nodemgmt.c @@ -417,14 +417,16 @@ spin_unlock(&c->erase_completion_lock); ret = jffs2_prealloc_raw_node_refs(c, jeb, 1); - if (ret) - return ret; + /* Just lock it again and continue. Nothing much can change because we hold c->alloc_sem anyway. In fact, it's not entirely clear why we hold c->erase_completion_lock in the majority of this function... but that's a question for another (more caffeine-rich) day. */ spin_lock(&c->erase_completion_lock); + if (ret) + return ret; + waste = jeb->free_size; jffs2_link_node_ref(c, jeb, (jeb->offset + c->sector_size - waste) | REF_OBSOLETE, --- linux-3.5.0.orig/fs/jffs2/super.c +++ linux-3.5.0/fs/jffs2/super.c @@ -100,6 +100,10 @@ { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); +#ifdef CONFIG_JFFS2_FS_WRITEBUFFER + cancel_delayed_work_sync(&c->wbuf_dwork); +#endif + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); --- linux-3.5.0.orig/fs/jffs2/wbuf.c +++ linux-3.5.0/fs/jffs2/wbuf.c @@ -1044,10 +1044,10 @@ ops.datbuf = NULL; ret = mtd_read_oob(c->mtd, jeb->offset, &ops); - if (ret || ops.oobretlen != ops.ooblen) { + if ((ret && !mtd_is_bitflip(ret)) || ops.oobretlen != ops.ooblen) { pr_err("cannot read OOB for EB at %08x, requested %zd bytes, read %zd bytes, error %d\n", jeb->offset, ops.ooblen, ops.oobretlen, ret); - if (!ret) + if (!ret || mtd_is_bitflip(ret)) ret = -EIO; return ret; } @@ -1086,10 +1086,10 @@ ops.datbuf = NULL; ret = mtd_read_oob(c->mtd, jeb->offset, &ops); - if (ret || ops.oobretlen != ops.ooblen) { + if ((ret && !mtd_is_bitflip(ret)) || ops.oobretlen != ops.ooblen) { pr_err("cannot read OOB for EB at %08x, requested %zd bytes, read %zd bytes, error %d\n", jeb->offset, ops.ooblen, ops.oobretlen, ret); - if (!ret) + if (!ret || mtd_is_bitflip(ret)) ret = -EIO; return ret; } --- linux-3.5.0.orig/fs/hpfs/inode.c +++ linux-3.5.0/fs/hpfs/inode.c @@ -274,9 +274,12 @@ if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size != i_size_read(inode)) { - error = vmtruncate(inode, attr->ia_size); + error = inode_newsize_ok(inode, attr->ia_size); if (error) goto out_unlock; + + truncate_setsize(inode, attr->ia_size); + hpfs_truncate(inode); } setattr_copy(inode, attr); --- linux-3.5.0.orig/fs/hpfs/hpfs_fn.h +++ linux-3.5.0/fs/hpfs/hpfs_fn.h @@ -252,6 +252,7 @@ /* file.c */ int hpfs_file_fsync(struct file *, loff_t, loff_t, int); +void hpfs_truncate(struct inode *); extern const struct file_operations hpfs_file_ops; extern const struct inode_operations hpfs_file_iops; extern const struct address_space_operations hpfs_aops; --- linux-3.5.0.orig/fs/hpfs/file.c +++ linux-3.5.0/fs/hpfs/file.c @@ -50,7 +50,7 @@ return disk_secno; } -static void hpfs_truncate(struct inode *i) +void hpfs_truncate(struct inode *i) { if (IS_IMMUTABLE(i)) return /*-EPERM*/; hpfs_lock_assert(i->i_sb); @@ -105,6 +105,20 @@ return block_read_full_page(page,hpfs_get_block); } +static void hpfs_write_failed(struct address_space *mapping, loff_t to) +{ + struct inode *inode = mapping->host; + + hpfs_lock(inode->i_sb); + + if (to > inode->i_size) { + truncate_pagecache(inode, to, inode->i_size); + hpfs_truncate(inode); + } + + hpfs_unlock(inode->i_sb); +} + static int hpfs_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata) @@ -115,11 +129,8 @@ ret = cont_write_begin(file, mapping, pos, len, flags, pagep, fsdata, hpfs_get_block, &hpfs_i(mapping->host)->mmu_private); - if (unlikely(ret)) { - loff_t isize = mapping->host->i_size; - if (pos + len > isize) - vmtruncate(mapping->host, isize); - } + if (unlikely(ret)) + hpfs_write_failed(mapping, pos + len); return ret; } @@ -166,6 +177,5 @@ const struct inode_operations hpfs_file_iops = { - .truncate = hpfs_truncate, .setattr = hpfs_setattr, }; --- linux-3.5.0.orig/fs/sysfs/dir.c +++ linux-3.5.0/fs/sysfs/dir.c @@ -308,7 +308,7 @@ struct sysfs_dirent *sd; int is_dir; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; sd = dentry->d_fsdata; @@ -478,20 +478,18 @@ /** * sysfs_pathname - return full path to sysfs dirent * @sd: sysfs_dirent whose path we want - * @path: caller allocated buffer + * @path: caller allocated buffer of size PATH_MAX * * Gives the name "/" to the sysfs_root entry; any path returned * is relative to wherever sysfs is mounted. - * - * XXX: does no error checking on @path size */ static char *sysfs_pathname(struct sysfs_dirent *sd, char *path) { if (sd->s_parent) { sysfs_pathname(sd->s_parent, path); - strcat(path, "/"); + strlcat(path, "/", PATH_MAX); } - strcat(path, sd->s_name); + strlcat(path, sd->s_name, PATH_MAX); return path; } @@ -524,9 +522,11 @@ char *path = kzalloc(PATH_MAX, GFP_KERNEL); WARN(1, KERN_WARNING "sysfs: cannot create duplicate filename '%s'\n", - (path == NULL) ? sd->s_name : - strcat(strcat(sysfs_pathname(acxt->parent_sd, path), "/"), - sd->s_name)); + (path == NULL) ? sd->s_name + : (sysfs_pathname(acxt->parent_sd, path), + strlcat(path, "/", PATH_MAX), + strlcat(path, sd->s_name, PATH_MAX), + path)); kfree(path); } @@ -1013,6 +1013,7 @@ enum kobj_ns_type type; const void *ns; ino_t ino; + loff_t off; type = sysfs_ns_type(parent_sd); ns = sysfs_info(dentry->d_sb)->ns[type]; @@ -1021,6 +1022,8 @@ ino = parent_sd->s_ino; if (filldir(dirent, ".", 1, filp->f_pos, ino, DT_DIR) == 0) filp->f_pos++; + else + return 0; } if (filp->f_pos == 1) { if (parent_sd->s_parent) @@ -1029,8 +1032,11 @@ ino = parent_sd->s_ino; if (filldir(dirent, "..", 2, filp->f_pos, ino, DT_DIR) == 0) filp->f_pos++; + else + return 0; } mutex_lock(&sysfs_mutex); + off = filp->f_pos; for (pos = sysfs_dir_pos(ns, parent_sd, filp->f_pos, pos); pos; pos = sysfs_dir_next_pos(ns, parent_sd, filp->f_pos, pos)) { @@ -1042,27 +1048,43 @@ len = strlen(name); ino = pos->s_ino; type = dt_type(pos); - filp->f_pos = pos->s_hash; + off = filp->f_pos = pos->s_hash; filp->private_data = sysfs_get(pos); mutex_unlock(&sysfs_mutex); - ret = filldir(dirent, name, len, filp->f_pos, ino, type); + ret = filldir(dirent, name, len, off, ino, type); mutex_lock(&sysfs_mutex); if (ret < 0) break; } mutex_unlock(&sysfs_mutex); - if ((filp->f_pos > 1) && !pos) { /* EOF */ - filp->f_pos = INT_MAX; + + /* don't reference last entry if its refcount is dropped */ + if (!pos) { filp->private_data = NULL; + + /* EOF and not changed as 0 or 1 in read/write path */ + if (off == filp->f_pos && off > 1) + filp->f_pos = INT_MAX; } return 0; } +static loff_t sysfs_dir_llseek(struct file *file, loff_t offset, int whence) +{ + struct inode *inode = file->f_path.dentry->d_inode; + loff_t ret; + + mutex_lock(&inode->i_mutex); + ret = generic_file_llseek(file, offset, whence); + mutex_unlock(&inode->i_mutex); + + return ret; +} const struct file_operations sysfs_dir_operations = { .read = generic_read_dir, .readdir = sysfs_readdir, .release = sysfs_dir_release, - .llseek = generic_file_llseek, + .llseek = sysfs_dir_llseek, }; --- linux-3.5.0.orig/fs/nfs/client.c +++ linux-3.5.0/fs/nfs/client.c @@ -689,8 +689,7 @@ */ static void nfs_destroy_server(struct nfs_server *server) { - if (!(server->flags & NFS_MOUNT_LOCAL_FLOCK) || - !(server->flags & NFS_MOUNT_LOCAL_FCNTL)) + if (server->nlm_host) nlmclnt_done(server->nlm_host); } --- linux-3.5.0.orig/fs/nfs/nfs4proc.c +++ linux-3.5.0/fs/nfs/nfs4proc.c @@ -329,8 +329,7 @@ dprintk("%s ERROR: %d Reset session\n", __func__, errorcode); nfs4_schedule_session_recovery(clp->cl_session, errorcode); - exception->retry = 1; - break; + goto wait_on_recovery; #endif /* defined(CONFIG_NFS_V4_1) */ case -NFS4ERR_FILE_OPEN: if (exception->timeout > HZ) { @@ -1073,7 +1072,7 @@ struct nfs4_state *state = opendata->state; struct nfs_inode *nfsi = NFS_I(state->inode); struct nfs_delegation *delegation; - int open_mode = opendata->o_arg.open_flags & (O_EXCL|O_TRUNC); + int open_mode = opendata->o_arg.open_flags; fmode_t fmode = opendata->o_arg.fmode; nfs4_stateid stateid; int ret = -EAGAIN; @@ -1382,6 +1381,12 @@ case -ENOMEM: err = 0; goto out; + case -NFS4ERR_DELAY: + case -NFS4ERR_GRACE: + set_bit(NFS_DELEGATED_STATE, &state->flags); + ssleep(1); + err = -EAGAIN; + goto out; } err = nfs4_handle_exception(server, err, &exception); } while (exception.retry); @@ -1497,9 +1502,11 @@ data->timestamp = jiffies; if (nfs4_setup_sequence(data->o_arg.server, &data->o_arg.seq_args, - &data->o_res.seq_res, task)) - return; - rpc_call_start(task); + &data->o_res.seq_res, + task) != 0) + nfs_release_seqid(data->o_arg.seqid); + else + rpc_call_start(task); return; unlock_no_action: rcu_read_unlock(); @@ -2139,9 +2146,10 @@ if (nfs4_setup_sequence(NFS_SERVER(calldata->inode), &calldata->arg.seq_args, &calldata->res.seq_res, - task)) - goto out; - rpc_call_start(task); + task) != 0) + nfs_release_seqid(calldata->arg.seqid); + else + rpc_call_start(task); out: dprintk("%s: done!\n", __func__); } @@ -3189,11 +3197,11 @@ dentry->d_parent->d_name.name, dentry->d_name.name, (unsigned long long)cookie); - nfs4_setup_readdir(cookie, NFS_COOKIEVERF(dir), dentry, &args); + nfs4_setup_readdir(cookie, NFS_I(dir)->cookieverf, dentry, &args); res.pgbase = args.pgbase; status = nfs4_call_sync(NFS_SERVER(dir)->client, NFS_SERVER(dir), &msg, &args.seq_args, &res.seq_res, 0); if (status >= 0) { - memcpy(NFS_COOKIEVERF(dir), res.verifier.data, NFS4_VERIFIER_SIZE); + memcpy(NFS_I(dir)->cookieverf, res.verifier.data, NFS4_VERIFIER_SIZE); status += args.pgbase; } @@ -4340,6 +4348,7 @@ if (nfs4_async_handle_error(task, calldata->server, NULL) == -EAGAIN) rpc_restart_call_prepare(task); } + nfs_release_seqid(calldata->arg.seqid); } static void nfs4_locku_prepare(struct rpc_task *task, void *data) @@ -4356,9 +4365,11 @@ calldata->timestamp = jiffies; if (nfs4_setup_sequence(calldata->server, &calldata->arg.seq_args, - &calldata->res.seq_res, task)) - return; - rpc_call_start(task); + &calldata->res.seq_res, + task) != 0) + nfs_release_seqid(calldata->arg.seqid); + else + rpc_call_start(task); } static const struct rpc_call_ops nfs4_locku_ops = { @@ -4503,7 +4514,7 @@ /* Do we need to do an open_to_lock_owner? */ if (!(data->arg.lock_seqid->sequence->flags & NFS_SEQID_CONFIRMED)) { if (nfs_wait_on_sequence(data->arg.open_seqid, task) != 0) - return; + goto out_release_lock_seqid; data->arg.open_stateid = &state->stateid; data->arg.new_lock_owner = 1; data->res.open_seqid = data->arg.open_seqid; @@ -4512,10 +4523,15 @@ data->timestamp = jiffies; if (nfs4_setup_sequence(data->server, &data->arg.seq_args, - &data->res.seq_res, task)) + &data->res.seq_res, + task) == 0) { + rpc_call_start(task); return; - rpc_call_start(task); - dprintk("%s: done!, ret = %d\n", __func__, data->rpc_status); + } + nfs_release_seqid(data->arg.open_seqid); +out_release_lock_seqid: + nfs_release_seqid(data->arg.lock_seqid); + dprintk("%s: done!, ret = %d\n", __func__, task->tk_status); } static void nfs4_recover_lock_prepare(struct rpc_task *task, void *calldata) @@ -5927,13 +5943,26 @@ rpc_call_start(task); } +static void nfs41_sequence_prepare_privileged(struct rpc_task *task, void *data) +{ + rpc_task_set_priority(task, RPC_PRIORITY_PRIVILEGED); + nfs41_sequence_prepare(task, data); +} + static const struct rpc_call_ops nfs41_sequence_ops = { .rpc_call_done = nfs41_sequence_call_done, .rpc_call_prepare = nfs41_sequence_prepare, .rpc_release = nfs41_sequence_release, }; -static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp, struct rpc_cred *cred) +static const struct rpc_call_ops nfs41_sequence_privileged_ops = { + .rpc_call_done = nfs41_sequence_call_done, + .rpc_call_prepare = nfs41_sequence_prepare_privileged, + .rpc_release = nfs41_sequence_release, +}; + +static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp, struct rpc_cred *cred, + const struct rpc_call_ops *seq_ops) { struct nfs4_sequence_data *calldata; struct rpc_message msg = { @@ -5943,7 +5972,7 @@ struct rpc_task_setup task_setup_data = { .rpc_client = clp->cl_rpcclient, .rpc_message = &msg, - .callback_ops = &nfs41_sequence_ops, + .callback_ops = seq_ops, .flags = RPC_TASK_ASYNC | RPC_TASK_SOFT, }; @@ -5970,7 +5999,7 @@ if ((renew_flags & NFS4_RENEW_TIMEOUT) == 0) return 0; - task = _nfs41_proc_sequence(clp, cred); + task = _nfs41_proc_sequence(clp, cred, &nfs41_sequence_ops); if (IS_ERR(task)) ret = PTR_ERR(task); else @@ -5984,7 +6013,7 @@ struct rpc_task *task; int ret; - task = _nfs41_proc_sequence(clp, cred); + task = _nfs41_proc_sequence(clp, cred, &nfs41_sequence_privileged_ops); if (IS_ERR(task)) { ret = PTR_ERR(task); goto out; @@ -6164,11 +6193,58 @@ dprintk("<-- %s\n", __func__); } +static size_t max_response_pages(struct nfs_server *server) +{ + u32 max_resp_sz = server->nfs_client->cl_session->fc_attrs.max_resp_sz; + return nfs_page_array_len(0, max_resp_sz); +} + +static void nfs4_free_pages(struct page **pages, size_t size) +{ + int i; + + if (!pages) + return; + + for (i = 0; i < size; i++) { + if (!pages[i]) + break; + __free_page(pages[i]); + } + kfree(pages); +} + +static struct page **nfs4_alloc_pages(size_t size, gfp_t gfp_flags) +{ + struct page **pages; + int i; + + pages = kcalloc(size, sizeof(struct page *), gfp_flags); + if (!pages) { + dprintk("%s: can't alloc array of %zu pages\n", __func__, size); + return NULL; + } + + for (i = 0; i < size; i++) { + pages[i] = alloc_page(gfp_flags); + if (!pages[i]) { + dprintk("%s: failed to allocate page\n", __func__); + nfs4_free_pages(pages, size); + return NULL; + } + } + + return pages; +} + static void nfs4_layoutget_release(void *calldata) { struct nfs4_layoutget *lgp = calldata; + struct nfs_server *server = NFS_SERVER(lgp->args.inode); + size_t max_pages = max_response_pages(server); dprintk("--> %s\n", __func__); + nfs4_free_pages(lgp->args.layout.pages, max_pages); put_nfs_open_context(lgp->args.ctx); kfree(calldata); dprintk("<-- %s\n", __func__); @@ -6180,9 +6256,10 @@ .rpc_release = nfs4_layoutget_release, }; -int nfs4_proc_layoutget(struct nfs4_layoutget *lgp) +int nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags) { struct nfs_server *server = NFS_SERVER(lgp->args.inode); + size_t max_pages = max_response_pages(server); struct rpc_task *task; struct rpc_message msg = { .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_LAYOUTGET], @@ -6200,6 +6277,13 @@ dprintk("--> %s\n", __func__); + lgp->args.layout.pages = nfs4_alloc_pages(max_pages, gfp_flags); + if (!lgp->args.layout.pages) { + nfs4_layoutget_release(lgp); + return -ENOMEM; + } + lgp->args.layout.pglen = max_pages * PAGE_SIZE; + lgp->res.layoutp = &lgp->args.layout; lgp->res.seq_res.sr_slot = NULL; nfs41_init_sequence(&lgp->args.seq_args, &lgp->res.seq_res, 0); @@ -6209,7 +6293,8 @@ status = nfs4_wait_for_completion_rpc_task(task); if (status == 0) status = task->tk_status; - if (status == 0) + /* if layoutp->len is 0, nfs4_layoutget_prepare called rpc_exit */ + if (status == 0 && lgp->res.layoutp->len) status = pnfs_layout_process(lgp); rpc_put_task(task); dprintk("<-- %s status=%d\n", __func__, status); @@ -6245,12 +6330,8 @@ return; } spin_lock(&lo->plh_inode->i_lock); - if (task->tk_status == 0) { - if (lrp->res.lrs_present) { - pnfs_set_layout_stateid(lo, &lrp->res.stateid, true); - } else - BUG_ON(!list_empty(&lo->plh_segs)); - } + if (task->tk_status == 0 && lrp->res.lrs_present) + pnfs_set_layout_stateid(lo, &lrp->res.stateid, true); lo->plh_block_lgets--; spin_unlock(&lo->plh_inode->i_lock); dprintk("<-- %s\n", __func__); @@ -6426,22 +6507,8 @@ static void nfs4_layoutcommit_release(void *calldata) { struct nfs4_layoutcommit_data *data = calldata; - struct pnfs_layout_segment *lseg, *tmp; - unsigned long *bitlock = &NFS_I(data->args.inode)->flags; pnfs_cleanup_layoutcommit(data); - /* Matched by references in pnfs_set_layoutcommit */ - list_for_each_entry_safe(lseg, tmp, &data->lseg_list, pls_lc_list) { - list_del_init(&lseg->pls_lc_list); - if (test_and_clear_bit(NFS_LSEG_LAYOUTCOMMIT, - &lseg->pls_flags)) - put_lseg(lseg); - } - - clear_bit_unlock(NFS_INO_LAYOUTCOMMITTING, bitlock); - smp_mb__after_clear_bit(); - wake_up_bit(bitlock, NFS_INO_LAYOUTCOMMITTING); - put_rpccred(data->cred); kfree(data); } --- linux-3.5.0.orig/fs/nfs/inode.c +++ linux-3.5.0/fs/nfs/inode.c @@ -152,7 +152,7 @@ nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); nfsi->attrtimeo_timestamp = jiffies; - memset(NFS_COOKIEVERF(inode), 0, sizeof(NFS_COOKIEVERF(inode))); + memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf)); if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; else --- linux-3.5.0.orig/fs/nfs/namespace.c +++ linux-3.5.0/fs/nfs/namespace.c @@ -32,6 +32,7 @@ * @dentry - pointer to dentry * @buffer - result buffer * @buflen - length of buffer + * @flags - options (see below) * * Helper function for constructing the server pathname * by arbitrary hashed dentry. @@ -39,8 +40,14 @@ * This is mainly for use in figuring out the path on the * server side when automounting on top of an existing partition * and in generating /proc/mounts and friends. + * + * Supported flags: + * NFS_PATH_CANONICAL: ensure there is exactly one slash after + * the original device (export) name + * (if unset, the original name is returned verbatim) */ -char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen) +char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen, + unsigned flags) { char *end; int namelen; @@ -73,7 +80,7 @@ rcu_read_unlock(); goto rename_retry; } - if (*end != '/') { + if ((flags & NFS_PATH_CANONICAL) && *end != '/') { if (--buflen < 0) { spin_unlock(&dentry->d_lock); rcu_read_unlock(); @@ -90,9 +97,11 @@ return end; } namelen = strlen(base); - /* Strip off excess slashes in base string */ - while (namelen > 0 && base[namelen - 1] == '/') - namelen--; + if (flags & NFS_PATH_CANONICAL) { + /* Strip off excess slashes in base string */ + while (namelen > 0 && base[namelen - 1] == '/') + namelen--; + } buflen -= namelen; if (buflen < 0) { spin_unlock(&dentry->d_lock); @@ -166,11 +175,31 @@ return mnt; } +static int +nfs_namespace_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) +{ + if (NFS_FH(dentry->d_inode)->size != 0) + return nfs_getattr(mnt, dentry, stat); + generic_fillattr(dentry->d_inode, stat); + return 0; +} + +static int +nfs_namespace_setattr(struct dentry *dentry, struct iattr *attr) +{ + if (NFS_FH(dentry->d_inode)->size != 0) + return nfs_setattr(dentry, attr); + return -EACCES; +} + const struct inode_operations nfs_mountpoint_inode_operations = { .getattr = nfs_getattr, + .setattr = nfs_setattr, }; const struct inode_operations nfs_referral_inode_operations = { + .getattr = nfs_namespace_getattr, + .setattr = nfs_namespace_setattr, }; static void nfs_expire_automounts(struct work_struct *work) --- linux-3.5.0.orig/fs/nfs/nfs4state.c +++ linux-3.5.0/fs/nfs/nfs4state.c @@ -1767,8 +1767,18 @@ nfs4_begin_drain_session(clp); cred = nfs4_get_exchange_id_cred(clp); status = nfs4_proc_destroy_session(clp->cl_session, cred); - if (status && status != -NFS4ERR_BADSESSION && - status != -NFS4ERR_DEADSESSION) { + switch (status) { + case 0: + case -NFS4ERR_BADSESSION: + case -NFS4ERR_DEADSESSION: + break; + case -NFS4ERR_BACK_CHAN_BUSY: + case -NFS4ERR_DELAY: + set_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state); + status = 0; + ssleep(1); + goto out; + default: status = nfs4_recovery_handle_error(clp, status); goto out; } --- linux-3.5.0.orig/fs/nfs/internal.h +++ linux-3.5.0/fs/nfs/internal.h @@ -273,8 +273,9 @@ extern void nfs_sb_deactive(struct super_block *sb); /* namespace.c */ +#define NFS_PATH_CANONICAL 1 extern char *nfs_path(char **p, struct dentry *dentry, - char *buffer, ssize_t buflen); + char *buffer, ssize_t buflen, unsigned flags); extern struct vfsmount *nfs_d_automount(struct path *path); struct vfsmount *nfs_submount(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *); @@ -400,7 +401,7 @@ char *buffer, ssize_t buflen) { char *dummy; - return nfs_path(&dummy, dentry, buffer, buflen); + return nfs_path(&dummy, dentry, buffer, buflen, NFS_PATH_CANONICAL); } /* --- linux-3.5.0.orig/fs/nfs/unlink.c +++ linux-3.5.0/fs/nfs/unlink.c @@ -336,20 +336,14 @@ struct inode *old_dir = data->old_dir; struct inode *new_dir = data->new_dir; struct dentry *old_dentry = data->old_dentry; - struct dentry *new_dentry = data->new_dentry; if (!NFS_PROTO(old_dir)->rename_done(task, old_dir, new_dir)) { rpc_restart_call_prepare(task); return; } - if (task->tk_status != 0) { + if (task->tk_status != 0) nfs_cancel_async_unlink(old_dentry); - return; - } - - d_drop(old_dentry); - d_drop(new_dentry); } /** @@ -550,6 +544,18 @@ error = rpc_wait_for_completion_task(task); if (error == 0) error = task->tk_status; + switch (error) { + case 0: + /* The rename succeeded */ + nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); + d_move(dentry, sdentry); + break; + case -ERESTARTSYS: + /* The result of the rename is unknown. Play it safe by + * forcing a new lookup */ + d_drop(dentry); + d_drop(sdentry); + } rpc_put_task(task); out_dput: dput(sdentry); --- linux-3.5.0.orig/fs/nfs/write.c +++ linux-3.5.0/fs/nfs/write.c @@ -124,12 +124,16 @@ put_nfs_open_context(wdata->args.context); if (wdata->pages.pagevec != wdata->pages.page_array) kfree(wdata->pages.pagevec); - if (wdata != &write_header->rpc_data) - kfree(wdata); - else + if (wdata == &write_header->rpc_data) { wdata->header = NULL; + wdata = NULL; + } if (atomic_dec_and_test(&hdr->refcnt)) hdr->completion_ops->completion(hdr); + /* Note: we only free the rpc_task after callbacks are done. + * See the comment in rpc_free_task() for why + */ + kfree(wdata); } static void nfs_context_set_write_error(struct nfs_open_context *ctx, int error) @@ -855,7 +859,7 @@ { if (nfs_have_delegated_attributes(inode)) goto out; - if (NFS_I(inode)->cache_validity & NFS_INO_REVAL_PAGECACHE) + if (NFS_I(inode)->cache_validity & (NFS_INO_INVALID_DATA|NFS_INO_REVAL_PAGECACHE)) return false; out: return PageUptodate(page) != 0; @@ -1806,19 +1810,19 @@ nfs_wdata_mempool = mempool_create_slab_pool(MIN_POOL_WRITE, nfs_wdata_cachep); if (nfs_wdata_mempool == NULL) - return -ENOMEM; + goto out_destroy_write_cache; nfs_cdata_cachep = kmem_cache_create("nfs_commit_data", sizeof(struct nfs_commit_data), 0, SLAB_HWCACHE_ALIGN, NULL); if (nfs_cdata_cachep == NULL) - return -ENOMEM; + goto out_destroy_write_mempool; nfs_commit_mempool = mempool_create_slab_pool(MIN_POOL_COMMIT, nfs_wdata_cachep); if (nfs_commit_mempool == NULL) - return -ENOMEM; + goto out_destroy_commit_cache; /* * NFS congestion size, scale with available memory. @@ -1841,11 +1845,20 @@ nfs_congestion_kb = 256*1024; return 0; + +out_destroy_commit_cache: + kmem_cache_destroy(nfs_cdata_cachep); +out_destroy_write_mempool: + mempool_destroy(nfs_wdata_mempool); +out_destroy_write_cache: + kmem_cache_destroy(nfs_wdata_cachep); + return -ENOMEM; } void nfs_destroy_writepagecache(void) { mempool_destroy(nfs_commit_mempool); + kmem_cache_destroy(nfs_cdata_cachep); mempool_destroy(nfs_wdata_mempool); kmem_cache_destroy(nfs_wdata_cachep); } --- linux-3.5.0.orig/fs/nfs/idmap.c +++ linux-3.5.0/fs/nfs/idmap.c @@ -63,6 +63,12 @@ struct mutex idmap_mutex; }; +struct idmap_legacy_upcalldata { + struct rpc_pipe_msg pipe_msg; + struct idmap_msg idmap_msg; + struct idmap *idmap; +}; + /** * nfs_fattr_init_names - initialise the nfs_fattr owner_name/group_name fields * @fattr: fully initialised struct nfs_fattr @@ -205,12 +211,18 @@ if (ret < 0) goto failed_put_key; + ret = register_key_type(&key_type_id_resolver_legacy); + if (ret < 0) + goto failed_reg_legacy; + set_bit(KEY_FLAG_ROOT_CAN_CLEAR, &keyring->flags); cred->thread_keyring = keyring; cred->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING; id_resolver_cache = cred; return 0; +failed_reg_legacy: + unregister_key_type(&key_type_id_resolver); failed_put_key: key_put(keyring); failed_put_cred: @@ -222,6 +234,7 @@ { key_revoke(id_resolver_cache->thread_keyring); unregister_key_type(&key_type_id_resolver); + unregister_key_type(&key_type_id_resolver_legacy); put_cred(id_resolver_cache); } @@ -319,6 +332,7 @@ ret = nfs_idmap_request_key(&key_type_id_resolver_legacy, name, namelen, type, data, data_size, idmap); + idmap->idmap_key_cons = NULL; mutex_unlock(&idmap->idmap_mutex); } return ret; @@ -376,16 +390,18 @@ static int nfs_idmap_legacy_upcall(struct key_construction *, const char *, void *); static ssize_t idmap_pipe_downcall(struct file *, const char __user *, size_t); +static void idmap_release_pipe(struct inode *); static void idmap_pipe_destroy_msg(struct rpc_pipe_msg *); static const struct rpc_pipe_ops idmap_upcall_ops = { .upcall = rpc_pipe_generic_upcall, .downcall = idmap_pipe_downcall, + .release_pipe = idmap_release_pipe, .destroy_msg = idmap_pipe_destroy_msg, }; static struct key_type key_type_id_resolver_legacy = { - .name = "id_resolver", + .name = "id_legacy", .instantiate = user_instantiate, .match = user_match, .revoke = user_revoke, @@ -612,7 +628,8 @@ nfs_idmap_quit_keyring(); } -static int nfs_idmap_prepare_message(char *desc, struct idmap_msg *im, +static int nfs_idmap_prepare_message(char *desc, struct idmap *idmap, + struct idmap_msg *im, struct rpc_pipe_msg *msg) { substring_t substr; @@ -655,6 +672,7 @@ const char *op, void *aux) { + struct idmap_legacy_upcalldata *data; struct rpc_pipe_msg *msg; struct idmap_msg *im; struct idmap *idmap = (struct idmap *)aux; @@ -662,39 +680,39 @@ int ret = -ENOMEM; /* msg and im are freed in idmap_pipe_destroy_msg */ - msg = kmalloc(sizeof(*msg), GFP_KERNEL); - if (!msg) - goto out0; - - im = kmalloc(sizeof(*im), GFP_KERNEL); - if (!im) + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) goto out1; - ret = nfs_idmap_prepare_message(key->description, im, msg); + msg = &data->pipe_msg; + im = &data->idmap_msg; + data->idmap = idmap; + + ret = nfs_idmap_prepare_message(key->description, idmap, im, msg); if (ret < 0) goto out2; + BUG_ON(idmap->idmap_key_cons != NULL); idmap->idmap_key_cons = cons; ret = rpc_queue_upcall(idmap->idmap_pipe, msg); if (ret < 0) - goto out2; + goto out3; return ret; +out3: + idmap->idmap_key_cons = NULL; out2: - kfree(im); + kfree(data); out1: - kfree(msg); -out0: - key_revoke(cons->key); - key_revoke(cons->authkey); + complete_request_key(cons, ret); return ret; } -static int nfs_idmap_instantiate(struct key *key, struct key *authkey, char *data) +static int nfs_idmap_instantiate(struct key *key, struct key *authkey, char *data, size_t datalen) { - return key_instantiate_and_link(key, data, strlen(data) + 1, + return key_instantiate_and_link(key, data, datalen, id_resolver_cache->thread_keyring, authkey); } @@ -702,15 +720,18 @@ static int nfs_idmap_read_message(struct idmap_msg *im, struct key *key, struct key *authkey) { char id_str[NFS_UINT_MAXLEN]; + size_t len; int ret = -EINVAL; switch (im->im_conv) { case IDMAP_CONV_NAMETOID: - sprintf(id_str, "%d", im->im_id); - ret = nfs_idmap_instantiate(key, authkey, id_str); + /* Note: here we store the NUL terminator too */ + len = sprintf(id_str, "%d", im->im_id) + 1; + ret = nfs_idmap_instantiate(key, authkey, id_str, len); break; case IDMAP_CONV_IDTONAME: - ret = nfs_idmap_instantiate(key, authkey, im->im_name); + len = strlen(im->im_name); + ret = nfs_idmap_instantiate(key, authkey, im->im_name, len); break; } @@ -722,11 +743,18 @@ { struct rpc_inode *rpci = RPC_I(filp->f_path.dentry->d_inode); struct idmap *idmap = (struct idmap *)rpci->private; - struct key_construction *cons = idmap->idmap_key_cons; + struct key_construction *cons; struct idmap_msg im; size_t namelen_in; int ret; + /* If instantiation is successful, anyone waiting for key construction + * will have been woken up and someone else may now have used + * idmap_key_cons - so after this point we may no longer touch it. + */ + cons = ACCESS_ONCE(idmap->idmap_key_cons); + idmap->idmap_key_cons = NULL; + if (mlen != sizeof(im)) { ret = -ENOSPC; goto out; @@ -738,9 +766,8 @@ } if (!(im.im_status & IDMAP_STATUS_SUCCESS)) { - ret = mlen; - complete_request_key(idmap->idmap_key_cons, -ENOKEY); - goto out_incomplete; + ret = -ENOKEY; + goto out; } namelen_in = strnlen(im.im_name, IDMAP_NAMESZ); @@ -756,17 +783,33 @@ } out: - complete_request_key(idmap->idmap_key_cons, ret); -out_incomplete: + complete_request_key(cons, ret); return ret; } static void idmap_pipe_destroy_msg(struct rpc_pipe_msg *msg) { + struct idmap_legacy_upcalldata *data = container_of(msg, + struct idmap_legacy_upcalldata, + pipe_msg); + struct idmap *idmap = data->idmap; + struct key_construction *cons; + if (msg->errno) { + cons = ACCESS_ONCE(idmap->idmap_key_cons); + idmap->idmap_key_cons = NULL; + complete_request_key(cons, msg->errno); + } /* Free memory allocated in nfs_idmap_legacy_upcall() */ - kfree(msg->data); - kfree(msg); + kfree(data); +} + +static void +idmap_release_pipe(struct inode *inode) +{ + struct rpc_inode *rpci = RPC_I(inode); + struct idmap *idmap = (struct idmap *)rpci->private; + idmap->idmap_key_cons = NULL; } int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid) --- linux-3.5.0.orig/fs/nfs/file.c +++ linux-3.5.0/fs/nfs/file.c @@ -459,8 +459,11 @@ dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); - /* Only do I/O if gfp is a superset of GFP_KERNEL */ - if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL) { + /* Only do I/O if gfp is a superset of GFP_KERNEL, and we're not + * doing this memory reclaim for a fs-related allocation. + */ + if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL && + !(current->flags & PF_FSTRANS)) { int how = FLUSH_SYNC; /* Don't let kswapd deadlock waiting for OOM RPC calls */ --- linux-3.5.0.orig/fs/nfs/dns_resolve.c +++ linux-3.5.0/fs/nfs/dns_resolve.c @@ -214,7 +214,7 @@ { char buf1[NFS_DNS_HOSTNAME_MAXLEN+1]; struct nfs_dns_ent key, *item; - unsigned long ttl; + unsigned int ttl; ssize_t len; int ret = -EINVAL; @@ -237,7 +237,8 @@ key.namelen = len; memset(&key.h, 0, sizeof(key.h)); - ttl = get_expiry(&buf); + if (get_uint(&buf, &ttl) < 0) + goto out; if (ttl == 0) goto out; key.h.expiry_time = ttl + seconds_since_boot(); --- linux-3.5.0.orig/fs/nfs/nfs4xdr.c +++ linux-3.5.0/fs/nfs/nfs4xdr.c @@ -6262,7 +6262,8 @@ status = decode_open(xdr, res); if (status) goto out; - if (decode_getfh(xdr, &res->fh) != 0) + status = decode_getfh(xdr, &res->fh); + if (status) goto out; decode_getfattr(xdr, res->f_attr, res->server); out: --- linux-3.5.0.orig/fs/nfs/super.c +++ linux-3.5.0/fs/nfs/super.c @@ -822,7 +822,7 @@ int err = 0; if (!page) return -ENOMEM; - devname = nfs_path(&dummy, root, page, PAGE_SIZE); + devname = nfs_path(&dummy, root, page, PAGE_SIZE, 0); if (IS_ERR(devname)) err = PTR_ERR(devname); else @@ -1148,7 +1148,7 @@ { kfree(*option); *option = match_strdup(args); - return !option; + return !*option; } static int nfs_get_option_ul(substring_t args[], unsigned long *option) @@ -1918,6 +1918,7 @@ memcpy(sap, &data->addr, sizeof(data->addr)); args->nfs_server.addrlen = sizeof(data->addr); + args->nfs_server.port = ntohs(data->addr.sin_port); if (!nfs_verify_server_address(sap)) goto out_no_address; @@ -2540,7 +2541,6 @@ struct nfs_clone_mount *data = mount_info->cloned; struct nfs_server *server; struct dentry *mntroot = ERR_PTR(-ENOMEM); - int error; dprintk("--> nfs_xdev_mount_common()\n"); @@ -2548,19 +2548,15 @@ /* create a new volume representation */ server = nfs_clone_server(NFS_SB(data->sb), data->fh, data->fattr, data->authflavor); - if (IS_ERR(server)) { - error = PTR_ERR(server); - goto out_err; - } + if (IS_ERR(server)) + mntroot = ERR_CAST(server); + else + mntroot = nfs_fs_mount_common(fs_type, server, flags, + dev_name, mount_info); - mntroot = nfs_fs_mount_common(fs_type, server, flags, dev_name, mount_info); - dprintk("<-- nfs_xdev_mount_common() = 0\n"); -out: + dprintk("<-- nfs_xdev_mount_common() = %ld\n", + IS_ERR(mntroot) ? PTR_ERR(mntroot) : 0L); return mntroot; - -out_err: - dprintk("<-- nfs_xdev_mount_common() = %d [error]\n", error); - goto out; } /* @@ -2651,6 +2647,7 @@ return -EFAULT; if (!nfs_verify_server_address(sap)) goto out_no_address; + args->nfs_server.port = ntohs(((struct sockaddr_in *)sap)->sin_port); if (data->auth_flavourlen) { if (data->auth_flavourlen > 1) @@ -2961,4 +2958,6 @@ return res; } +MODULE_ALIAS("nfs4"); + #endif /* CONFIG_NFS_V4 */ --- linux-3.5.0.orig/fs/nfs/read.c +++ linux-3.5.0/fs/nfs/read.c @@ -91,12 +91,16 @@ put_nfs_open_context(rdata->args.context); if (rdata->pages.pagevec != rdata->pages.page_array) kfree(rdata->pages.pagevec); - if (rdata != &read_header->rpc_data) - kfree(rdata); - else + if (rdata == &read_header->rpc_data) { rdata->header = NULL; + rdata = NULL; + } if (atomic_dec_and_test(&hdr->refcnt)) hdr->completion_ops->completion(hdr); + /* Note: we only free the rpc_task after callbacks are done. + * See the comment in rpc_free_task() for why + */ + kfree(rdata); } static --- linux-3.5.0.orig/fs/nfs/dir.c +++ linux-3.5.0/fs/nfs/dir.c @@ -1123,7 +1123,7 @@ struct nfs_fattr *fattr = NULL; int error; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; parent = dget_parent(dentry); @@ -1242,11 +1242,14 @@ } +/* Ensure that we revalidate inode->i_nlink */ static void nfs_drop_nlink(struct inode *inode) { spin_lock(&inode->i_lock); - if (inode->i_nlink > 0) - drop_nlink(inode); + /* drop the inode if we're reasonably sure this is the last link */ + if (inode->i_nlink == 1) + clear_nlink(inode); + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATTR; spin_unlock(&inode->i_lock); } @@ -1261,8 +1264,8 @@ NFS_I(inode)->cache_validity |= NFS_INO_INVALID_DATA; if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { - drop_nlink(inode); nfs_complete_unlink(dentry, inode); + nfs_drop_nlink(inode); } iput(inode); } @@ -1526,7 +1529,7 @@ struct inode *dir; int openflags, ret = 0; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; @@ -1780,10 +1783,8 @@ if (inode != NULL) { nfs_inode_return_delegation(inode); error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); - /* The VFS may want to delete this inode */ if (error == 0) nfs_drop_nlink(inode); - nfs_mark_for_revalidate(inode); } else error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); if (error == -ENOENT) --- linux-3.5.0.orig/fs/nfs/mount_clnt.c +++ linux-3.5.0/fs/nfs/mount_clnt.c @@ -181,7 +181,7 @@ else msg.rpc_proc = &mnt_clnt->cl_procinfo[MOUNTPROC_MNT]; - status = rpc_call_sync(mnt_clnt, &msg, 0); + status = rpc_call_sync(mnt_clnt, &msg, RPC_TASK_SOFT|RPC_TASK_TIMEOUT); rpc_shutdown_client(mnt_clnt); if (status < 0) --- linux-3.5.0.orig/fs/nfs/nfs4namespace.c +++ linux-3.5.0/fs/nfs/nfs4namespace.c @@ -81,7 +81,8 @@ static char *nfs4_path(struct dentry *dentry, char *buffer, ssize_t buflen) { char *limit; - char *path = nfs_path(&limit, dentry, buffer, buflen); + char *path = nfs_path(&limit, dentry, buffer, buflen, + NFS_PATH_CANONICAL); if (!IS_ERR(path)) { char *path_component = nfs_path_component(path, limit); if (path_component) --- linux-3.5.0.orig/fs/nfs/pnfs.h +++ linux-3.5.0/fs/nfs/pnfs.h @@ -171,7 +171,7 @@ struct pnfs_devicelist *devlist); extern int nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *dev); -extern int nfs4_proc_layoutget(struct nfs4_layoutget *lgp); +extern int nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags); extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp); /* pnfs.c */ --- linux-3.5.0.orig/fs/nfs/pnfs.c +++ linux-3.5.0/fs/nfs/pnfs.c @@ -583,9 +583,6 @@ struct nfs_server *server = NFS_SERVER(ino); struct nfs4_layoutget *lgp; struct pnfs_layout_segment *lseg = NULL; - struct page **pages = NULL; - int i; - u32 max_resp_sz, max_pages; dprintk("--> %s\n", __func__); @@ -594,20 +591,6 @@ if (lgp == NULL) return NULL; - /* allocate pages for xdr post processing */ - max_resp_sz = server->nfs_client->cl_session->fc_attrs.max_resp_sz; - max_pages = nfs_page_array_len(0, max_resp_sz); - - pages = kcalloc(max_pages, sizeof(struct page *), gfp_flags); - if (!pages) - goto out_err_free; - - for (i = 0; i < max_pages; i++) { - pages[i] = alloc_page(gfp_flags); - if (!pages[i]) - goto out_err_free; - } - lgp->args.minlength = PAGE_CACHE_SIZE; if (lgp->args.minlength > range->length) lgp->args.minlength = range->length; @@ -616,39 +599,19 @@ lgp->args.type = server->pnfs_curr_ld->id; lgp->args.inode = ino; lgp->args.ctx = get_nfs_open_context(ctx); - lgp->args.layout.pages = pages; - lgp->args.layout.pglen = max_pages * PAGE_SIZE; lgp->lsegpp = &lseg; lgp->gfp_flags = gfp_flags; /* Synchronously retrieve layout information from server and * store in lseg. */ - nfs4_proc_layoutget(lgp); + nfs4_proc_layoutget(lgp, gfp_flags); if (!lseg) { /* remember that LAYOUTGET failed and suspend trying */ set_bit(lo_fail_bit(range->iomode), &lo->plh_flags); } - /* free xdr pages */ - for (i = 0; i < max_pages; i++) - __free_page(pages[i]); - kfree(pages); - return lseg; - -out_err_free: - /* free any allocated xdr pages, lgp as it's not used */ - if (pages) { - for (i = 0; i < max_pages; i++) { - if (!pages[i]) - break; - __free_page(pages[i]); - } - kfree(pages); - } - kfree(lgp); - return NULL; } /* Initiates a LAYOUTRETURN(FILE) */ @@ -1583,11 +1546,27 @@ list_for_each_entry(lseg, &NFS_I(inode)->layout->plh_segs, pls_list) { if (lseg->pls_range.iomode == IOMODE_RW && - test_bit(NFS_LSEG_LAYOUTCOMMIT, &lseg->pls_flags)) + test_and_clear_bit(NFS_LSEG_LAYOUTCOMMIT, &lseg->pls_flags)) list_add(&lseg->pls_lc_list, listp); } } +static void pnfs_list_write_lseg_done(struct inode *inode, struct list_head *listp) +{ + struct pnfs_layout_segment *lseg, *tmp; + unsigned long *bitlock = &NFS_I(inode)->flags; + + /* Matched by references in pnfs_set_layoutcommit */ + list_for_each_entry_safe(lseg, tmp, listp, pls_lc_list) { + list_del_init(&lseg->pls_lc_list); + put_lseg(lseg); + } + + clear_bit_unlock(NFS_INO_LAYOUTCOMMITTING, bitlock); + smp_mb__after_clear_bit(); + wake_up_bit(bitlock, NFS_INO_LAYOUTCOMMITTING); +} + void pnfs_set_lo_fail(struct pnfs_layout_segment *lseg) { if (lseg->pls_range.iomode == IOMODE_RW) { @@ -1638,6 +1617,7 @@ if (nfss->pnfs_curr_ld->cleanup_layoutcommit) nfss->pnfs_curr_ld->cleanup_layoutcommit(data); + pnfs_list_write_lseg_done(data->args.inode, &data->lseg_list); } /* --- linux-3.5.0.orig/fs/nfs/direct.c +++ linux-3.5.0/fs/nfs/direct.c @@ -247,14 +247,6 @@ struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; - if (test_bit(NFS_IOHDR_EOF, &hdr->flags)) { - if (bytes > hdr->good_bytes) - zero_user(page, 0, PAGE_SIZE); - else if (hdr->good_bytes - bytes < PAGE_SIZE) - zero_user_segment(page, - hdr->good_bytes & ~PAGE_MASK, - PAGE_SIZE); - } if (!PageCompound(page)) { if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes < hdr->good_bytes) --- linux-3.5.0.orig/fs/nfs/nfs3proc.c +++ linux-3.5.0/fs/nfs/nfs3proc.c @@ -69,7 +69,7 @@ nfs_fattr_init(info->fattr); status = rpc_call_sync(client, &msg, 0); dprintk("%s: reply fsinfo: %d\n", __func__, status); - if (!(info->fattr->valid & NFS_ATTR_FATTR)) { + if (status == 0 && !(info->fattr->valid & NFS_ATTR_FATTR)) { msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR]; msg.rpc_resp = info->fattr; status = rpc_call_sync(client, &msg, 0); @@ -643,7 +643,7 @@ u64 cookie, struct page **pages, unsigned int count, int plus) { struct inode *dir = dentry->d_inode; - __be32 *verf = NFS_COOKIEVERF(dir); + __be32 *verf = NFS_I(dir)->cookieverf; struct nfs3_readdirargs arg = { .fh = NFS_FH(dir), .cookie = cookie, --- linux-3.5.0.orig/fs/nfs/objlayout/objio_osd.c +++ linux-3.5.0/fs/nfs/objlayout/objio_osd.c @@ -591,6 +591,7 @@ .flags = PNFS_LAYOUTRET_ON_SETATTR | PNFS_LAYOUTRET_ON_ERROR, + .owner = THIS_MODULE, .alloc_layout_hdr = objlayout_alloc_layout_hdr, .free_layout_hdr = objlayout_free_layout_hdr, --- linux-3.5.0.orig/fs/nfs/blocklayout/blocklayoutdm.c +++ linux-3.5.0/fs/nfs/blocklayout/blocklayoutdm.c @@ -55,7 +55,8 @@ bl_pipe_msg.bl_wq = &nn->bl_wq; memset(msg, 0, sizeof(*msg)); - msg->data = kzalloc(1 + sizeof(bl_umount_request), GFP_NOFS); + msg->len = sizeof(bl_msg) + bl_msg.totallen; + msg->data = kzalloc(msg->len, GFP_NOFS); if (!msg->data) goto out; @@ -66,7 +67,6 @@ memcpy(msg->data, &bl_msg, sizeof(bl_msg)); dataptr = (uint8_t *) msg->data; memcpy(&dataptr[sizeof(bl_msg)], &bl_umount_request, sizeof(bl_umount_request)); - msg->len = sizeof(bl_msg) + bl_msg.totallen; add_wait_queue(&nn->bl_wq, &wq); if (rpc_queue_upcall(nn->bl_device_pipe, msg) < 0) { --- linux-3.5.0.orig/fs/nfs/blocklayout/blocklayout.c +++ linux-3.5.0/fs/nfs/blocklayout/blocklayout.c @@ -162,25 +162,39 @@ return bio; } -static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw, +static struct bio *do_add_page_to_bio(struct bio *bio, int npg, int rw, sector_t isect, struct page *page, struct pnfs_block_extent *be, void (*end_io)(struct bio *, int err), - struct parallel_io *par) + struct parallel_io *par, + unsigned int offset, int len) { + isect = isect + (offset >> SECTOR_SHIFT); + dprintk("%s: npg %d rw %d isect %llu offset %u len %d\n", __func__, + npg, rw, (unsigned long long)isect, offset, len); retry: if (!bio) { bio = bl_alloc_init_bio(npg, isect, be, end_io, par); if (!bio) return ERR_PTR(-ENOMEM); } - if (bio_add_page(bio, page, PAGE_CACHE_SIZE, 0) < PAGE_CACHE_SIZE) { + if (bio_add_page(bio, page, len, offset) < len) { bio = bl_submit_bio(rw, bio); goto retry; } return bio; } +static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw, + sector_t isect, struct page *page, + struct pnfs_block_extent *be, + void (*end_io)(struct bio *, int err), + struct parallel_io *par) +{ + return do_add_page_to_bio(bio, npg, rw, isect, page, be, + end_io, par, 0, PAGE_CACHE_SIZE); +} + /* This is basically copied from mpage_end_io_read */ static void bl_end_io_read(struct bio *bio, int err) { @@ -238,8 +252,11 @@ sector_t isect, extent_length = 0; struct parallel_io *par; loff_t f_offset = rdata->args.offset; + size_t bytes_left = rdata->args.count; + unsigned int pg_offset, pg_len; struct page **pages = rdata->args.pages; int pg_index = rdata->args.pgbase >> PAGE_CACHE_SHIFT; + const bool is_dio = (header->dreq != NULL); dprintk("%s enter nr_pages %u offset %lld count %u\n", __func__, rdata->pages.npages, f_offset, (unsigned int)rdata->args.count); @@ -273,36 +290,53 @@ extent_length = min(extent_length, cow_length); } } + + if (is_dio) { + pg_offset = f_offset & ~PAGE_CACHE_MASK; + if (pg_offset + bytes_left > PAGE_CACHE_SIZE) + pg_len = PAGE_CACHE_SIZE - pg_offset; + else + pg_len = bytes_left; + + f_offset += pg_len; + bytes_left -= pg_len; + isect += (pg_offset >> SECTOR_SHIFT); + } else { + pg_offset = 0; + pg_len = PAGE_CACHE_SIZE; + } + hole = is_hole(be, isect); if (hole && !cow_read) { bio = bl_submit_bio(READ, bio); /* Fill hole w/ zeroes w/o accessing device */ dprintk("%s Zeroing page for hole\n", __func__); - zero_user_segment(pages[i], 0, PAGE_CACHE_SIZE); + zero_user_segment(pages[i], pg_offset, pg_len); print_page(pages[i]); SetPageUptodate(pages[i]); } else { struct pnfs_block_extent *be_read; be_read = (hole && cow_read) ? cow_read : be; - bio = bl_add_page_to_bio(bio, rdata->pages.npages - i, + bio = do_add_page_to_bio(bio, rdata->pages.npages - i, READ, isect, pages[i], be_read, - bl_end_io_read, par); + bl_end_io_read, par, + pg_offset, pg_len); if (IS_ERR(bio)) { header->pnfs_error = PTR_ERR(bio); bio = NULL; goto out; } } - isect += PAGE_CACHE_SECTORS; + isect += (pg_len >> SECTOR_SHIFT); extent_length -= PAGE_CACHE_SECTORS; } if ((isect << SECTOR_SHIFT) >= header->inode->i_size) { rdata->res.eof = 1; - rdata->res.count = header->inode->i_size - f_offset; + rdata->res.count = header->inode->i_size - rdata->args.offset; } else { - rdata->res.count = (isect << SECTOR_SHIFT) - f_offset; + rdata->res.count = (isect << SECTOR_SHIFT) - rdata->args.offset; } out: bl_put_extent(be); @@ -450,6 +484,106 @@ return; } +static void +bl_read_single_end_io(struct bio *bio, int error) +{ + struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; + struct page *page = bvec->bv_page; + + /* Only one page in bvec */ + unlock_page(page); +} + +static int +bl_do_readpage_sync(struct page *page, struct pnfs_block_extent *be, + unsigned int offset, unsigned int len) +{ + struct bio *bio; + struct page *shadow_page; + sector_t isect; + char *kaddr, *kshadow_addr; + int ret = 0; + + dprintk("%s: offset %u len %u\n", __func__, offset, len); + + shadow_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); + if (shadow_page == NULL) + return -ENOMEM; + + bio = bio_alloc(GFP_NOIO, 1); + if (bio == NULL) + return -ENOMEM; + + isect = (page->index << PAGE_CACHE_SECTOR_SHIFT) + + (offset / SECTOR_SIZE); + + bio->bi_sector = isect - be->be_f_offset + be->be_v_offset; + bio->bi_bdev = be->be_mdev; + bio->bi_end_io = bl_read_single_end_io; + + lock_page(shadow_page); + if (bio_add_page(bio, shadow_page, + SECTOR_SIZE, round_down(offset, SECTOR_SIZE)) == 0) { + unlock_page(shadow_page); + bio_put(bio); + return -EIO; + } + + submit_bio(READ, bio); + wait_on_page_locked(shadow_page); + if (unlikely(!test_bit(BIO_UPTODATE, &bio->bi_flags))) { + ret = -EIO; + } else { + kaddr = kmap_atomic(page); + kshadow_addr = kmap_atomic(shadow_page); + memcpy(kaddr + offset, kshadow_addr + offset, len); + kunmap_atomic(kshadow_addr); + kunmap_atomic(kaddr); + } + __free_page(shadow_page); + bio_put(bio); + + return ret; +} + +static int +bl_read_partial_page_sync(struct page *page, struct pnfs_block_extent *be, + unsigned int dirty_offset, unsigned int dirty_len, + bool full_page) +{ + int ret = 0; + unsigned int start, end; + + if (full_page) { + start = 0; + end = PAGE_CACHE_SIZE; + } else { + start = round_down(dirty_offset, SECTOR_SIZE); + end = round_up(dirty_offset + dirty_len, SECTOR_SIZE); + } + + dprintk("%s: offset %u len %d\n", __func__, dirty_offset, dirty_len); + if (!be) { + zero_user_segments(page, start, dirty_offset, + dirty_offset + dirty_len, end); + if (start == 0 && end == PAGE_CACHE_SIZE && + trylock_page(page)) { + SetPageUptodate(page); + unlock_page(page); + } + return ret; + } + + if (start != dirty_offset) + ret = bl_do_readpage_sync(page, be, start, dirty_offset - start); + + if (!ret && (dirty_offset + dirty_len < end)) + ret = bl_do_readpage_sync(page, be, dirty_offset + dirty_len, + end - dirty_offset - dirty_len); + + return ret; +} + /* Given an unmapped page, zero it or read in page for COW, page is locked * by caller. */ @@ -483,7 +617,6 @@ SetPageUptodate(page); cleanup: - bl_put_extent(cow_read); if (bh) free_buffer_head(bh); if (ret) { @@ -552,9 +685,10 @@ struct bio *bio = NULL; struct pnfs_block_extent *be = NULL, *cow_read = NULL; sector_t isect, last_isect = 0, extent_length = 0; - struct parallel_io *par; + struct parallel_io *par = NULL; loff_t offset = wdata->args.offset; size_t count = wdata->args.count; + unsigned int pg_offset, pg_len, saved_len; struct page **pages = wdata->args.pages; struct page *page; pgoff_t index; @@ -563,6 +697,13 @@ NFS_SERVER(header->inode)->pnfs_blksize >> PAGE_CACHE_SHIFT; dprintk("%s enter, %Zu@%lld\n", __func__, count, offset); + + if (header->dreq != NULL && + (!IS_ALIGNED(offset, NFS_SERVER(header->inode)->pnfs_blksize) || + !IS_ALIGNED(count, NFS_SERVER(header->inode)->pnfs_blksize))) { + dprintk("pnfsblock nonblock aligned DIO writes. Resend MDS\n"); + goto out_mds; + } /* At this point, wdata->pages is a (sequential) list of nfs_pages. * We want to write each, and if there is an error set pnfs_error * to have it redone using nfs. @@ -659,10 +800,11 @@ if (!extent_length) { /* We've used up the previous extent */ bl_put_extent(be); + bl_put_extent(cow_read); bio = bl_submit_bio(WRITE, bio); /* Get the next one */ be = bl_find_get_extent(BLK_LSEG2EXT(header->lseg), - isect, NULL); + isect, &cow_read); if (!be || !is_writable(be, isect)) { header->pnfs_error = -EINVAL; goto out; @@ -679,7 +821,26 @@ extent_length = be->be_length - (isect - be->be_f_offset); } - if (be->be_state == PNFS_BLOCK_INVALID_DATA) { + + dprintk("%s offset %lld count %Zu\n", __func__, offset, count); + pg_offset = offset & ~PAGE_CACHE_MASK; + if (pg_offset + count > PAGE_CACHE_SIZE) + pg_len = PAGE_CACHE_SIZE - pg_offset; + else + pg_len = count; + + saved_len = pg_len; + if (be->be_state == PNFS_BLOCK_INVALID_DATA && + !bl_is_sector_init(be->be_inval, isect)) { + ret = bl_read_partial_page_sync(pages[i], cow_read, + pg_offset, pg_len, true); + if (ret) { + dprintk("%s bl_read_partial_page_sync fail %d\n", + __func__, ret); + header->pnfs_error = ret; + goto out; + } + ret = bl_mark_sectors_init(be->be_inval, isect, PAGE_CACHE_SECTORS); if (unlikely(ret)) { @@ -688,15 +849,35 @@ header->pnfs_error = ret; goto out; } + + /* Expand to full page write */ + pg_offset = 0; + pg_len = PAGE_CACHE_SIZE; + } else if ((pg_offset & (SECTOR_SIZE - 1)) || + (pg_len & (SECTOR_SIZE - 1))){ + /* ahh, nasty case. We have to do sync full sector + * read-modify-write cycles. + */ + unsigned int saved_offset = pg_offset; + ret = bl_read_partial_page_sync(pages[i], be, pg_offset, + pg_len, false); + pg_offset = round_down(pg_offset, SECTOR_SIZE); + pg_len = round_up(saved_offset + pg_len, SECTOR_SIZE) + - pg_offset; } - bio = bl_add_page_to_bio(bio, wdata->pages.npages - i, WRITE, + + + bio = do_add_page_to_bio(bio, wdata->pages.npages - i, WRITE, isect, pages[i], be, - bl_end_io_write, par); + bl_end_io_write, par, + pg_offset, pg_len); if (IS_ERR(bio)) { header->pnfs_error = PTR_ERR(bio); bio = NULL; goto out; } + offset += saved_len; + count -= saved_len; isect += PAGE_CACHE_SECTORS; last_isect = isect; extent_length -= PAGE_CACHE_SECTORS; @@ -714,17 +895,16 @@ } write_done: - wdata->res.count = (last_isect << SECTOR_SHIFT) - (offset); - if (count < wdata->res.count) { - wdata->res.count = count; - } + wdata->res.count = wdata->args.count; out: bl_put_extent(be); + bl_put_extent(cow_read); bl_submit_bio(WRITE, bio); put_parallel(par); return PNFS_ATTEMPTED; out_mds: bl_put_extent(be); + bl_put_extent(cow_read); kfree(par); return PNFS_NOT_ATTEMPTED; } @@ -996,21 +1176,71 @@ return 0; } +static bool +is_aligned_req(struct nfs_page *req, unsigned int alignment) +{ + return IS_ALIGNED(req->wb_offset, alignment) && + IS_ALIGNED(req->wb_bytes, alignment); +} + +static void +bl_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, SECTOR_SIZE)) + nfs_pageio_reset_read_mds(pgio); + else + pnfs_generic_pg_init_read(pgio, req); +} + +static bool +bl_pg_test_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, + struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, SECTOR_SIZE)) + return false; + + return pnfs_generic_pg_test(pgio, prev, req); +} + +void +bl_pg_init_write(struct nfs_pageio_descriptor *pgio, struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, PAGE_CACHE_SIZE)) + nfs_pageio_reset_write_mds(pgio); + else + pnfs_generic_pg_init_write(pgio, req); +} + +static bool +bl_pg_test_write(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, + struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, PAGE_CACHE_SIZE)) + return false; + + return pnfs_generic_pg_test(pgio, prev, req); +} + static const struct nfs_pageio_ops bl_pg_read_ops = { - .pg_init = pnfs_generic_pg_init_read, - .pg_test = pnfs_generic_pg_test, + .pg_init = bl_pg_init_read, + .pg_test = bl_pg_test_read, .pg_doio = pnfs_generic_pg_readpages, }; static const struct nfs_pageio_ops bl_pg_write_ops = { - .pg_init = pnfs_generic_pg_init_write, - .pg_test = pnfs_generic_pg_test, + .pg_init = bl_pg_init_write, + .pg_test = bl_pg_test_write, .pg_doio = pnfs_generic_pg_writepages, }; static struct pnfs_layoutdriver_type blocklayout_type = { .id = LAYOUT_BLOCK_VOLUME, .name = "LAYOUT_BLOCK_VOLUME", + .owner = THIS_MODULE, .read_pagelist = bl_read_pagelist, .write_pagelist = bl_write_pagelist, .alloc_layout_hdr = bl_alloc_layout_hdr, --- linux-3.5.0.orig/fs/nfs/blocklayout/blocklayout.h +++ linux-3.5.0/fs/nfs/blocklayout/blocklayout.h @@ -41,6 +41,7 @@ #define PAGE_CACHE_SECTORS (PAGE_CACHE_SIZE >> SECTOR_SHIFT) #define PAGE_CACHE_SECTOR_SHIFT (PAGE_CACHE_SHIFT - SECTOR_SHIFT) +#define SECTOR_SIZE (1 << SECTOR_SHIFT) struct block_mount_id { spinlock_t bm_lock; /* protects list */ --- linux-3.5.0.orig/fs/ubifs/lprops.c +++ linux-3.5.0/fs/ubifs/lprops.c @@ -300,8 +300,11 @@ default: ubifs_assert(0); } + lprops->flags &= ~LPROPS_CAT_MASK; lprops->flags |= cat; + c->in_a_category_cnt += 1; + ubifs_assert(c->in_a_category_cnt <= c->main_lebs); } /** @@ -334,6 +337,9 @@ default: ubifs_assert(0); } + + c->in_a_category_cnt -= 1; + ubifs_assert(c->in_a_category_cnt >= 0); } /** --- linux-3.5.0.orig/fs/ubifs/ubifs.h +++ linux-3.5.0/fs/ubifs/ubifs.h @@ -905,6 +905,8 @@ * @dnext: next orphan to delete * @inum: inode number * @new: %1 => added since the last commit, otherwise %0 + * @cmt: %1 => commit pending, otherwise %0 + * @del: %1 => delete pending, otherwise %0 */ struct ubifs_orphan { struct rb_node rb; @@ -913,7 +915,9 @@ struct ubifs_orphan *cnext; struct ubifs_orphan *dnext; ino_t inum; - int new; + unsigned new:1; + unsigned cmt:1; + unsigned del:1; }; /** @@ -1184,6 +1188,8 @@ * @freeable_list: list of freeable non-index LEBs (free + dirty == @leb_size) * @frdi_idx_list: list of freeable index LEBs (free + dirty == @leb_size) * @freeable_cnt: number of freeable LEBs in @freeable_list + * @in_a_category_cnt: count of lprops which are in a certain category, which + * basically meants that they were loaded from the flash * * @ltab_lnum: LEB number of LPT's own lprops table * @ltab_offs: offset of LPT's own lprops table @@ -1413,6 +1419,7 @@ struct list_head freeable_list; struct list_head frdi_idx_list; int freeable_cnt; + int in_a_category_cnt; int ltab_lnum; int ltab_offs; --- linux-3.5.0.orig/fs/ubifs/lpt.c +++ linux-3.5.0/fs/ubifs/lpt.c @@ -1749,7 +1749,10 @@ return 0; out_err: - ubifs_lpt_free(c, 0); + if (wr) + ubifs_lpt_free(c, 1); + if (rd) + ubifs_lpt_free(c, 0); return err; } --- linux-3.5.0.orig/fs/ubifs/debug.h +++ linux-3.5.0/fs/ubifs/debug.h @@ -162,7 +162,7 @@ #define ubifs_dbg_msg(type, fmt, ...) \ pr_debug("UBIFS DBG " type ": " fmt "\n", ##__VA_ARGS__) -#define DBG_KEY_BUF_LEN 32 +#define DBG_KEY_BUF_LEN 48 #define ubifs_dbg_msg_key(type, key, fmt, ...) do { \ char __tmp_key_buf[DBG_KEY_BUF_LEN]; \ pr_debug("UBIFS DBG " type ": " fmt "%s\n", ##__VA_ARGS__, \ --- linux-3.5.0.orig/fs/ubifs/find.c +++ linux-3.5.0/fs/ubifs/find.c @@ -681,8 +681,16 @@ if (!lprops) { lprops = ubifs_fast_find_freeable(c); if (!lprops) { - ubifs_assert(c->freeable_cnt == 0); - if (c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) { + /* + * The first condition means the following: go scan the + * LPT if there are uncategorized lprops, which means + * there may be freeable LEBs there (UBIFS does not + * store the information about freeable LEBs in the + * master node). + */ + if (c->in_a_category_cnt != c->main_lebs || + c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) { + ubifs_assert(c->freeable_cnt == 0); lprops = scan_for_leb_for_idx(c); if (IS_ERR(lprops)) { err = PTR_ERR(lprops); --- linux-3.5.0.orig/fs/ubifs/super.c +++ linux-3.5.0/fs/ubifs/super.c @@ -1579,6 +1579,12 @@ c->remounting_rw = 1; c->ro_mount = 0; + if (c->space_fixup) { + err = ubifs_fixup_free_space(c); + if (err) + return err; + } + err = check_free_space(c); if (err) goto out; @@ -1695,12 +1701,6 @@ err = dbg_check_space_info(c); } - if (c->space_fixup) { - err = ubifs_fixup_free_space(c); - if (err) - goto out; - } - mutex_unlock(&c->umount_mutex); return err; --- linux-3.5.0.orig/fs/ubifs/orphan.c +++ linux-3.5.0/fs/ubifs/orphan.c @@ -126,13 +126,14 @@ else if (inum > o->inum) p = p->rb_right; else { - if (o->dnext) { + if (o->del) { spin_unlock(&c->orphan_lock); dbg_gen("deleted twice ino %lu", (unsigned long)inum); return; } - if (o->cnext) { + if (o->cmt) { + o->del = 1; o->dnext = c->orph_dnext; c->orph_dnext = o; spin_unlock(&c->orphan_lock); @@ -172,7 +173,9 @@ last = &c->orph_cnext; list_for_each_entry(orphan, &c->orph_new, new_list) { ubifs_assert(orphan->new); + ubifs_assert(!orphan->cmt); orphan->new = 0; + orphan->cmt = 1; *last = orphan; last = &orphan->cnext; } @@ -299,7 +302,9 @@ cnext = c->orph_cnext; for (i = 0; i < cnt; i++) { orphan = cnext; + ubifs_assert(orphan->cmt); orph->inos[i] = cpu_to_le64(orphan->inum); + orphan->cmt = 0; cnext = orphan->cnext; orphan->cnext = NULL; } @@ -378,6 +383,7 @@ list_for_each_entry(orphan, &c->orph_list, list) { if (orphan->new) continue; + orphan->cmt = 1; *last = orphan; last = &orphan->cnext; cnt += 1; @@ -442,6 +448,7 @@ orphan = dnext; dnext = orphan->dnext; ubifs_assert(!orphan->new); + ubifs_assert(orphan->del); rb_erase(&orphan->rb, &c->orph_tree); list_del(&orphan->list); c->tot_orphans -= 1; @@ -531,6 +538,7 @@ rb_link_node(&orphan->rb, parent, p); rb_insert_color(&orphan->rb, &c->orph_tree); list_add_tail(&orphan->list, &c->orph_list); + orphan->del = 1; orphan->dnext = c->orph_dnext; c->orph_dnext = orphan; dbg_mnt("ino %lu, new %d, tot %d", (unsigned long)inum, --- linux-3.5.0.orig/fs/ubifs/dir.c +++ linux-3.5.0/fs/ubifs/dir.c @@ -349,31 +349,50 @@ static int ubifs_readdir(struct file *file, void *dirent, filldir_t filldir) { int err, over = 0; + loff_t pos = file->f_pos; struct qstr nm; union ubifs_key key; struct ubifs_dent_node *dent; struct inode *dir = file->f_path.dentry->d_inode; struct ubifs_info *c = dir->i_sb->s_fs_info; - dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, file->f_pos); + dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, pos); - if (file->f_pos > UBIFS_S_KEY_HASH_MASK || file->f_pos == 2) + if (pos > UBIFS_S_KEY_HASH_MASK || pos == 2) /* * The directory was seek'ed to a senseless position or there * are no more entries. */ return 0; + if (file->f_version == 0) { + /* + * The file was seek'ed, which means that @file->private_data + * is now invalid. This may also be just the first + * 'ubifs_readdir()' invocation, in which case + * @file->private_data is NULL, and the below code is + * basically a no-op. + */ + kfree(file->private_data); + file->private_data = NULL; + } + + /* + * 'generic_file_llseek()' unconditionally sets @file->f_version to + * zero, and we use this for detecting whether the file was seek'ed. + */ + file->f_version = 1; + /* File positions 0 and 1 correspond to "." and ".." */ - if (file->f_pos == 0) { + if (pos == 0) { ubifs_assert(!file->private_data); over = filldir(dirent, ".", 1, 0, dir->i_ino, DT_DIR); if (over) return 0; - file->f_pos = 1; + file->f_pos = pos = 1; } - if (file->f_pos == 1) { + if (pos == 1) { ubifs_assert(!file->private_data); over = filldir(dirent, "..", 2, 1, parent_ino(file->f_path.dentry), DT_DIR); @@ -389,7 +408,7 @@ goto out; } - file->f_pos = key_hash_flash(c, &dent->key); + file->f_pos = pos = key_hash_flash(c, &dent->key); file->private_data = dent; } @@ -397,17 +416,16 @@ if (!dent) { /* * The directory was seek'ed to and is now readdir'ed. - * Find the entry corresponding to @file->f_pos or the - * closest one. + * Find the entry corresponding to @pos or the closest one. */ - dent_key_init_hash(c, &key, dir->i_ino, file->f_pos); + dent_key_init_hash(c, &key, dir->i_ino, pos); nm.name = NULL; dent = ubifs_tnc_next_ent(c, &key, &nm); if (IS_ERR(dent)) { err = PTR_ERR(dent); goto out; } - file->f_pos = key_hash_flash(c, &dent->key); + file->f_pos = pos = key_hash_flash(c, &dent->key); file->private_data = dent; } @@ -419,7 +437,7 @@ ubifs_inode(dir)->creat_sqnum); nm.len = le16_to_cpu(dent->nlen); - over = filldir(dirent, dent->name, nm.len, file->f_pos, + over = filldir(dirent, dent->name, nm.len, pos, le64_to_cpu(dent->inum), vfs_dent_type(dent->type)); if (over) @@ -435,9 +453,17 @@ } kfree(file->private_data); - file->f_pos = key_hash_flash(c, &dent->key); + file->f_pos = pos = key_hash_flash(c, &dent->key); file->private_data = dent; cond_resched(); + + if (file->f_version == 0) + /* + * The file was seek'ed meanwhile, lets return and start + * reading direntries from the new position on the next + * invocation. + */ + return 0; } out: @@ -448,15 +474,13 @@ kfree(file->private_data); file->private_data = NULL; + /* 2 is a special value indicating that there are no more direntries */ file->f_pos = 2; return 0; } -/* If a directory is seeked, we have to free saved readdir() state */ static loff_t ubifs_dir_llseek(struct file *file, loff_t offset, int origin) { - kfree(file->private_data); - file->private_data = NULL; return generic_file_llseek(file, offset, origin); } --- linux-3.5.0.orig/fs/ocfs2/xattr.c +++ linux-3.5.0/fs/ocfs2/xattr.c @@ -7189,7 +7189,7 @@ struct buffer_head *dir_bh = NULL; ret = ocfs2_init_security_get(inode, dir, qstr, NULL); - if (!ret) { + if (ret) { mlog_errno(ret); goto leave; } --- linux-3.5.0.orig/fs/ocfs2/suballoc.c +++ linux-3.5.0/fs/ocfs2/suballoc.c @@ -642,7 +642,7 @@ * cluster groups will be staying in cache for the duration of * this operation. */ - ac->ac_allow_chain_relink = 0; + ac->ac_disable_chain_relink = 1; /* Claim the first region */ status = ocfs2_block_group_claim_bits(osb, handle, ac, min_bits, @@ -1823,7 +1823,7 @@ * Do this *after* figuring out how many bits we're taking out * of our target group. */ - if (ac->ac_allow_chain_relink && + if (!ac->ac_disable_chain_relink && (prev_group_bh) && (ocfs2_block_group_reasonably_empty(bg, res->sr_bits))) { status = ocfs2_relink_block_group(handle, alloc_inode, @@ -1928,7 +1928,6 @@ victim = ocfs2_find_victim_chain(cl); ac->ac_chain = victim; - ac->ac_allow_chain_relink = 1; status = ocfs2_search_chain(ac, handle, bits_wanted, min_bits, res, &bits_left); @@ -1947,7 +1946,7 @@ * searching each chain in order. Don't allow chain relinking * because we only calculate enough journal credits for one * relink per alloc. */ - ac->ac_allow_chain_relink = 0; + ac->ac_disable_chain_relink = 1; for (i = 0; i < le16_to_cpu(cl->cl_next_free_rec); i ++) { if (i == victim) continue; --- linux-3.5.0.orig/fs/ocfs2/extent_map.c +++ linux-3.5.0/fs/ocfs2/extent_map.c @@ -791,7 +791,7 @@ &hole_size, &rec, &is_last); if (ret) { mlog_errno(ret); - goto out; + goto out_unlock; } if (rec.e_blkno == 0ULL) { --- linux-3.5.0.orig/fs/ocfs2/aops.c +++ linux-3.5.0/fs/ocfs2/aops.c @@ -593,9 +593,9 @@ level = ocfs2_iocb_rw_locked_level(iocb); ocfs2_rw_unlock(inode, level); + inode_dio_done(inode); if (is_async) aio_complete(iocb, ret, 0); - inode_dio_done(inode); } /* --- linux-3.5.0.orig/fs/ocfs2/suballoc.h +++ linux-3.5.0/fs/ocfs2/suballoc.h @@ -49,7 +49,7 @@ /* these are used by the chain search */ u16 ac_chain; - int ac_allow_chain_relink; + int ac_disable_chain_relink; group_search_t *ac_group_search; u64 ac_last_group; --- linux-3.5.0.orig/fs/ocfs2/dlmglue.c +++ linux-3.5.0/fs/ocfs2/dlmglue.c @@ -2545,6 +2545,7 @@ * everything is up to the caller :) */ status = ocfs2_should_refresh_lock_res(lockres); if (status < 0) { + ocfs2_cluster_unlock(osb, lockres, level); mlog_errno(status); goto bail; } @@ -2553,8 +2554,10 @@ ocfs2_complete_lock_res_refresh(lockres, status); - if (status < 0) + if (status < 0) { + ocfs2_cluster_unlock(osb, lockres, level); mlog_errno(status); + } ocfs2_track_lock_refresh(lockres); } bail: --- linux-3.5.0.orig/fs/lockd/clntxdr.c +++ linux-3.5.0/fs/lockd/clntxdr.c @@ -223,7 +223,7 @@ { __be32 *p; - BUG_ON(be32_to_cpu(stat) > NLM_LCK_DENIED_GRACE_PERIOD); + WARN_ON_ONCE(be32_to_cpu(stat) > NLM_LCK_DENIED_GRACE_PERIOD); p = xdr_reserve_space(xdr, 4); *p = stat; } --- linux-3.5.0.orig/fs/lockd/clntlock.c +++ linux-3.5.0/fs/lockd/clntlock.c @@ -144,6 +144,9 @@ timeout); if (ret < 0) return -ERESTARTSYS; + /* Reset the lock status after a server reboot so we resend */ + if (block->b_status == nlm_lck_denied_grace_period) + block->b_status = nlm_lck_blocked; req->a_res.status = block->b_status; return 0; } --- linux-3.5.0.orig/fs/lockd/svcproc.c +++ linux-3.5.0/fs/lockd/svcproc.c @@ -67,7 +67,8 @@ /* Obtain file pointer. Not used by FREE_ALL call. */ if (filp != NULL) { - if ((error = nlm_lookup_file(rqstp, &file, &lock->fh)) != 0) + error = cast_status(nlm_lookup_file(rqstp, &file, &lock->fh)); + if (error != 0) goto no_locks; *filp = file; --- linux-3.5.0.orig/fs/lockd/mon.c +++ linux-3.5.0/fs/lockd/mon.c @@ -40,6 +40,7 @@ u32 proc; char *mon_name; + char *nodename; }; struct nsm_res { @@ -94,6 +95,7 @@ .vers = 3, .proc = NLMPROC_NSM_NOTIFY, .mon_name = nsm->sm_mon_name, + .nodename = utsname()->nodename, }; struct rpc_message msg = { .rpc_argp = &args, @@ -430,7 +432,7 @@ { __be32 *p; - encode_nsm_string(xdr, utsname()->nodename); + encode_nsm_string(xdr, argp->nodename); p = xdr_reserve_space(xdr, 4 + 4 + 4); *p++ = cpu_to_be32(argp->prog); *p++ = cpu_to_be32(argp->vers); --- linux-3.5.0.orig/fs/jbd/transaction.c +++ linux-3.5.0/fs/jbd/transaction.c @@ -1843,15 +1843,16 @@ * We're outside-transaction here. Either or both of j_running_transaction * and j_committing_transaction may be NULL. */ -static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh) +static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, + int partial_page) { transaction_t *transaction; struct journal_head *jh; int may_free = 1; - int ret; BUFFER_TRACE(bh, "entry"); +retry: /* * It is safe to proceed here without the j_list_lock because the * buffers cannot be stolen by try_to_free_buffers as long as we are @@ -1879,10 +1880,18 @@ * clear the buffer dirty bit at latest at the moment when the * transaction marking the buffer as freed in the filesystem * structures is committed because from that moment on the - * buffer can be reallocated and used by a different page. + * block can be reallocated and used by a different page. * Since the block hasn't been freed yet but the inode has * already been added to orphan list, it is safe for us to add * the buffer to BJ_Forget list of the newest transaction. + * + * Also we have to clear buffer_mapped flag of a truncated buffer + * because the buffer_head may be attached to the page straddling + * i_size (can happen only when blocksize < pagesize) and thus the + * buffer_head can be reused when the file is extended again. So we end + * up keeping around invalidated buffers attached to transactions' + * BJ_Forget list just to stop checkpointing code from cleaning up + * the transaction this buffer was modified in. */ transaction = jh->b_transaction; if (transaction == NULL) { @@ -1909,13 +1918,9 @@ * committed, the buffer won't be needed any * longer. */ JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); - ret = __dispose_buffer(jh, + may_free = __dispose_buffer(jh, journal->j_running_transaction); - journal_put_journal_head(jh); - spin_unlock(&journal->j_list_lock); - jbd_unlock_bh_state(bh); - spin_unlock(&journal->j_state_lock); - return ret; + goto zap_buffer; } else { /* There is no currently-running transaction. So the * orphan record which we wrote for this file must have @@ -1923,13 +1928,9 @@ * the committing transaction, if it exists. */ if (journal->j_committing_transaction) { JBUFFER_TRACE(jh, "give to committing trans"); - ret = __dispose_buffer(jh, + may_free = __dispose_buffer(jh, journal->j_committing_transaction); - journal_put_journal_head(jh); - spin_unlock(&journal->j_list_lock); - jbd_unlock_bh_state(bh); - spin_unlock(&journal->j_state_lock); - return ret; + goto zap_buffer; } else { /* The orphan record's transaction has * committed. We can cleanse this buffer */ @@ -1950,10 +1951,26 @@ } /* * The buffer is committing, we simply cannot touch - * it. So we just set j_next_transaction to the - * running transaction (if there is one) and mark - * buffer as freed so that commit code knows it should - * clear dirty bits when it is done with the buffer. + * it. If the page is straddling i_size we have to wait + * for commit and try again. + */ + if (partial_page) { + tid_t tid = journal->j_committing_transaction->t_tid; + + journal_put_journal_head(jh); + spin_unlock(&journal->j_list_lock); + jbd_unlock_bh_state(bh); + spin_unlock(&journal->j_state_lock); + unlock_buffer(bh); + log_wait_commit(journal, tid); + lock_buffer(bh); + goto retry; + } + /* + * OK, buffer won't be reachable after truncate. We just set + * j_next_transaction to the running transaction (if there is + * one) and mark buffer as freed so that commit code knows it + * should clear dirty bits when it is done with the buffer. */ set_buffer_freed(bh); if (journal->j_running_transaction && buffer_jbddirty(bh)) @@ -1976,6 +1993,14 @@ } zap_buffer: + /* + * This is tricky. Although the buffer is truncated, it may be reused + * if blocksize < pagesize and it is attached to the page straddling + * EOF. Since the buffer might have been added to BJ_Forget list of the + * running transaction, journal_get_write_access() won't clear + * b_modified and credit accounting gets confused. So clear b_modified + * here. */ + jh->b_modified = 0; journal_put_journal_head(jh); zap_buffer_no_jh: spin_unlock(&journal->j_list_lock); @@ -2024,7 +2049,8 @@ if (offset <= curr_off) { /* This block is wholly outside the truncation point */ lock_buffer(bh); - may_free &= journal_unmap_buffer(journal, bh); + may_free &= journal_unmap_buffer(journal, bh, + offset > 0); unlock_buffer(bh); } curr_off = next_off; --- linux-3.5.0.orig/fs/jbd/commit.c +++ linux-3.5.0/fs/jbd/commit.c @@ -86,7 +86,12 @@ static void release_data_buffer(struct buffer_head *bh) { if (buffer_freed(bh)) { + WARN_ON_ONCE(buffer_dirty(bh)); clear_buffer_freed(bh); + clear_buffer_mapped(bh); + clear_buffer_new(bh); + clear_buffer_req(bh); + bh->b_bdev = NULL; release_buffer_page(bh); } else put_bh(bh); @@ -866,17 +871,35 @@ * there's no point in keeping a checkpoint record for * it. */ - /* A buffer which has been freed while still being - * journaled by a previous transaction may end up still - * being dirty here, but we want to avoid writing back - * that buffer in the future after the "add to orphan" - * operation been committed, That's not only a performance - * gain, it also stops aliasing problems if the buffer is - * left behind for writeback and gets reallocated for another - * use in a different page. */ - if (buffer_freed(bh) && !jh->b_next_transaction) { - clear_buffer_freed(bh); - clear_buffer_jbddirty(bh); + /* + * A buffer which has been freed while still being journaled by + * a previous transaction. + */ + if (buffer_freed(bh)) { + /* + * If the running transaction is the one containing + * "add to orphan" operation (b_next_transaction != + * NULL), we have to wait for that transaction to + * commit before we can really get rid of the buffer. + * So just clear b_modified to not confuse transaction + * credit accounting and refile the buffer to + * BJ_Forget of the running transaction. If the just + * committed transaction contains "add to orphan" + * operation, we can completely invalidate the buffer + * now. We are rather throughout in that since the + * buffer may be still accessible when blocksize < + * pagesize and it is attached to the last partial + * page. + */ + jh->b_modified = 0; + if (!jh->b_next_transaction) { + clear_buffer_freed(bh); + clear_buffer_jbddirty(bh); + clear_buffer_mapped(bh); + clear_buffer_new(bh); + clear_buffer_req(bh); + bh->b_bdev = NULL; + } } if (buffer_jbddirty(bh)) { --- linux-3.5.0.orig/fs/jbd/journal.c +++ linux-3.5.0/fs/jbd/journal.c @@ -1113,6 +1113,11 @@ BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); spin_lock(&journal->j_state_lock); + /* Is it already empty? */ + if (sb->s_start == 0) { + spin_unlock(&journal->j_state_lock); + return; + } jbd_debug(1, "JBD: Marking journal as empty (seq %d)\n", journal->j_tail_sequence); --- linux-3.5.0.orig/fs/fat/inode.c +++ linux-3.5.0/fs/fat/inode.c @@ -1218,6 +1218,19 @@ return 0; } +static unsigned long calc_fat_clusters(struct super_block *sb) +{ + struct msdos_sb_info *sbi = MSDOS_SB(sb); + + /* Divide first to avoid overflow */ + if (sbi->fat_bits != 12) { + unsigned long ent_per_sec = sb->s_blocksize * 8 / sbi->fat_bits; + return ent_per_sec * sbi->fat_length; + } + + return sbi->fat_length * sb->s_blocksize * 8 / sbi->fat_bits; +} + /* * Read the super block of an MS-DOS FS. */ @@ -1415,7 +1428,7 @@ sbi->fat_bits = (total_clusters > MAX_FAT12) ? 16 : 12; /* check that FAT table does not overflow */ - fat_clusters = sbi->fat_length * sb->s_blocksize * 8 / sbi->fat_bits; + fat_clusters = calc_fat_clusters(sb); total_clusters = min(total_clusters, fat_clusters - FAT_START_ENT); if (total_clusters > MAX_FAT(sb)) { if (!silent) --- linux-3.5.0.orig/fs/jfs/inode.c +++ linux-3.5.0/fs/jfs/inode.c @@ -125,7 +125,7 @@ { int wait = wbc->sync_mode == WB_SYNC_ALL; - if (test_cflag(COMMIT_Nolink, inode)) + if (inode->i_nlink == 0) return 0; /* * If COMMIT_DIRTY is not set, the inode isn't really dirty. --- linux-3.5.0.orig/fs/jfs/jfs_logmgr.c +++ linux-3.5.0/fs/jfs/jfs_logmgr.c @@ -1058,7 +1058,8 @@ */ void jfs_syncpt(struct jfs_log *log, int hard_sync) { LOG_LOCK(log); - lmLogSync(log, hard_sync); + if (!test_bit(log_QUIESCE, &log->flag)) + lmLogSync(log, hard_sync); LOG_UNLOCK(log); } --- linux-3.5.0.orig/fs/isofs/export.c +++ linux-3.5.0/fs/isofs/export.c @@ -134,6 +134,7 @@ len = 3; fh32[0] = ei->i_iget5_block; fh16[2] = (__u16)ei->i_iget5_offset; /* fh16 [sic] */ + fh16[3] = 0; /* avoid leaking uninitialized data */ fh32[2] = inode->i_generation; if (parent) { struct iso_inode_info *eparent; @@ -174,7 +175,7 @@ { struct isofs_fid *ifid = (struct isofs_fid *)fid; - if (fh_type != 2) + if (fh_len < 2 || fh_type != 2) return NULL; return isofs_export_iget(sb, --- linux-3.5.0.orig/fs/cifs/cifsglob.h +++ linux-3.5.0/fs/cifs/cifsglob.h @@ -657,13 +657,13 @@ * Take a reference on the file private data. Must be called with * cifs_file_list_lock held. */ -static inline -struct cifsFileInfo *cifsFileInfo_get(struct cifsFileInfo *cifs_file) +static inline void +cifsFileInfo_get_locked(struct cifsFileInfo *cifs_file) { ++cifs_file->count; - return cifs_file; } +struct cifsFileInfo *cifsFileInfo_get(struct cifsFileInfo *cifs_file); void cifsFileInfo_put(struct cifsFileInfo *cifs_file); /* --- linux-3.5.0.orig/fs/cifs/inode.c +++ linux-3.5.0/fs/cifs/inode.c @@ -173,7 +173,8 @@ if (fattr->cf_flags & CIFS_FATTR_DFS_REFERRAL) inode->i_flags |= S_AUTOMOUNT; - cifs_set_ops(inode); + if (inode->i_state & I_NEW) + cifs_set_ops(inode); } void --- linux-3.5.0.orig/fs/cifs/smb1ops.c +++ linux-3.5.0/fs/cifs/smb1ops.c @@ -51,6 +51,13 @@ mutex_unlock(&server->srv_mutex); return rc; } + + /* + * The response to this call was already factored into the sequence + * number when the call went out, so we must adjust it back downward + * after signing here. + */ + --server->sequence_number; rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); mutex_unlock(&server->srv_mutex); --- linux-3.5.0.orig/fs/cifs/cifsfs.c +++ linux-3.5.0/fs/cifs/cifsfs.c @@ -86,6 +86,30 @@ struct workqueue_struct *cifsiod_wq; +/* + * Bumps refcount for cifs super block. + * Note that it should be only called if a referece to VFS super block is + * already held, e.g. in open-type syscalls context. Otherwise it can race with + * atomic_dec_and_test in deactivate_locked_super. + */ +void +cifs_sb_active(struct super_block *sb) +{ + struct cifs_sb_info *server = CIFS_SB(sb); + + if (atomic_inc_return(&server->active) == 1) + atomic_inc(&sb->s_active); +} + +void +cifs_sb_deactive(struct super_block *sb) +{ + struct cifs_sb_info *server = CIFS_SB(sb); + + if (atomic_dec_and_test(&server->active)) + deactivate_super(sb); +} + static int cifs_read_super(struct super_block *sb) { @@ -567,6 +591,11 @@ dentry = ERR_PTR(-ENOENT); break; } + if (!S_ISDIR(dir->i_mode)) { + dput(dentry); + dentry = ERR_PTR(-ENOTDIR); + break; + } /* skip separators */ while (*s == sep) --- linux-3.5.0.orig/fs/cifs/cifsacl.c +++ linux-3.5.0/fs/cifs/cifsacl.c @@ -225,6 +225,13 @@ } static void +cifs_copy_sid(struct cifs_sid *dst, const struct cifs_sid *src) +{ + memcpy(dst, src, sizeof(*dst)); + dst->num_subauth = min_t(u8, src->num_subauth, NUM_SUBAUTHS); +} + +static void id_rb_insert(struct rb_root *root, struct cifs_sid *sidptr, struct cifs_sid_id **psidid, char *typestr) { @@ -248,7 +255,7 @@ } } - memcpy(&(*psidid)->sid, sidptr, sizeof(struct cifs_sid)); + cifs_copy_sid(&(*psidid)->sid, sidptr); (*psidid)->time = jiffies - (SID_MAP_RETRY + 1); (*psidid)->refcount = 0; @@ -354,7 +361,7 @@ * any fields of the node after a reference is put . */ if (test_bit(SID_ID_MAPPED, &psidid->state)) { - memcpy(ssid, &psidid->sid, sizeof(struct cifs_sid)); + cifs_copy_sid(ssid, &psidid->sid); psidid->time = jiffies; /* update ts for accessing */ goto id_sid_out; } @@ -370,14 +377,14 @@ if (IS_ERR(sidkey)) { rc = -EINVAL; cFYI(1, "%s: Can't map and id to a SID", __func__); + } else if (sidkey->datalen < sizeof(struct cifs_sid)) { + rc = -EIO; + cFYI(1, "%s: Downcall contained malformed key " + "(datalen=%hu)", __func__, sidkey->datalen); } else { lsid = (struct cifs_sid *)sidkey->payload.data; - memcpy(&psidid->sid, lsid, - sidkey->datalen < sizeof(struct cifs_sid) ? - sidkey->datalen : sizeof(struct cifs_sid)); - memcpy(ssid, &psidid->sid, - sidkey->datalen < sizeof(struct cifs_sid) ? - sidkey->datalen : sizeof(struct cifs_sid)); + cifs_copy_sid(&psidid->sid, lsid); + cifs_copy_sid(ssid, &psidid->sid); set_bit(SID_ID_MAPPED, &psidid->state); key_put(sidkey); kfree(psidid->sidstr); @@ -396,7 +403,7 @@ return rc; } if (test_bit(SID_ID_MAPPED, &psidid->state)) - memcpy(ssid, &psidid->sid, sizeof(struct cifs_sid)); + cifs_copy_sid(ssid, &psidid->sid); else rc = -EINVAL; } @@ -675,8 +682,6 @@ static void copy_sec_desc(const struct cifs_ntsd *pntsd, struct cifs_ntsd *pnntsd, __u32 sidsoffset) { - int i; - struct cifs_sid *owner_sid_ptr, *group_sid_ptr; struct cifs_sid *nowner_sid_ptr, *ngroup_sid_ptr; @@ -692,26 +697,14 @@ owner_sid_ptr = (struct cifs_sid *)((char *)pntsd + le32_to_cpu(pntsd->osidoffset)); nowner_sid_ptr = (struct cifs_sid *)((char *)pnntsd + sidsoffset); - - nowner_sid_ptr->revision = owner_sid_ptr->revision; - nowner_sid_ptr->num_subauth = owner_sid_ptr->num_subauth; - for (i = 0; i < 6; i++) - nowner_sid_ptr->authority[i] = owner_sid_ptr->authority[i]; - for (i = 0; i < 5; i++) - nowner_sid_ptr->sub_auth[i] = owner_sid_ptr->sub_auth[i]; + cifs_copy_sid(nowner_sid_ptr, owner_sid_ptr); /* copy group sid */ group_sid_ptr = (struct cifs_sid *)((char *)pntsd + le32_to_cpu(pntsd->gsidoffset)); ngroup_sid_ptr = (struct cifs_sid *)((char *)pnntsd + sidsoffset + sizeof(struct cifs_sid)); - - ngroup_sid_ptr->revision = group_sid_ptr->revision; - ngroup_sid_ptr->num_subauth = group_sid_ptr->num_subauth; - for (i = 0; i < 6; i++) - ngroup_sid_ptr->authority[i] = group_sid_ptr->authority[i]; - for (i = 0; i < 5; i++) - ngroup_sid_ptr->sub_auth[i] = group_sid_ptr->sub_auth[i]; + cifs_copy_sid(ngroup_sid_ptr, group_sid_ptr); return; } @@ -1120,8 +1113,7 @@ kfree(nowner_sid_ptr); return rc; } - memcpy(owner_sid_ptr, nowner_sid_ptr, - sizeof(struct cifs_sid)); + cifs_copy_sid(owner_sid_ptr, nowner_sid_ptr); kfree(nowner_sid_ptr); *aclflag = CIFS_ACL_OWNER; } @@ -1139,8 +1131,7 @@ kfree(ngroup_sid_ptr); return rc; } - memcpy(group_sid_ptr, ngroup_sid_ptr, - sizeof(struct cifs_sid)); + cifs_copy_sid(group_sid_ptr, ngroup_sid_ptr); kfree(ngroup_sid_ptr); *aclflag = CIFS_ACL_GROUP; } --- linux-3.5.0.orig/fs/cifs/readdir.c +++ linux-3.5.0/fs/cifs/readdir.c @@ -76,6 +76,7 @@ struct dentry *dentry, *alias; struct inode *inode; struct super_block *sb = parent->d_inode->i_sb; + struct cifs_sb_info *cifs_sb = CIFS_SB(sb); cFYI(1, "For %s", name->name); @@ -87,10 +88,20 @@ dentry = d_lookup(parent, name); if (dentry) { inode = dentry->d_inode; - /* update inode in place if i_ino didn't change */ - if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { - cifs_fattr_to_inode(inode, fattr); - return dentry; + if (inode) { + /* + * If we're generating inode numbers, then we don't + * want to clobber the existing one with the one that + * the readdir code created. + */ + if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) + fattr->cf_uniqueid = CIFS_I(inode)->uniqueid; + + /* update inode in place if i_ino didn't change */ + if (CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { + cifs_fattr_to_inode(inode, fattr); + return dentry; + } } d_drop(dentry); dput(dentry); --- linux-3.5.0.orig/fs/cifs/asn1.c +++ linux-3.5.0/fs/cifs/asn1.c @@ -614,53 +614,10 @@ } } - /* mechlistMIC */ - if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { - /* Check if we have reached the end of the blob, but with - no mechListMic (e.g. NTLMSSP instead of KRB5) */ - if (ctx.error == ASN1_ERR_DEC_EMPTY) - goto decode_negtoken_exit; - cFYI(1, "Error decoding last part negTokenInit exit3"); - return 0; - } else if ((cls != ASN1_CTX) || (con != ASN1_CON)) { - /* tag = 3 indicating mechListMIC */ - cFYI(1, "Exit 4 cls = %d con = %d tag = %d end = %p (%d)", - cls, con, tag, end, *end); - return 0; - } - - /* sequence */ - if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { - cFYI(1, "Error decoding last part negTokenInit exit5"); - return 0; - } else if ((cls != ASN1_UNI) || (con != ASN1_CON) - || (tag != ASN1_SEQ)) { - cFYI(1, "cls = %d con = %d tag = %d end = %p (%d)", - cls, con, tag, end, *end); - } - - /* sequence of */ - if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { - cFYI(1, "Error decoding last part negTokenInit exit 7"); - return 0; - } else if ((cls != ASN1_CTX) || (con != ASN1_CON)) { - cFYI(1, "Exit 8 cls = %d con = %d tag = %d end = %p (%d)", - cls, con, tag, end, *end); - return 0; - } - - /* general string */ - if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { - cFYI(1, "Error decoding last part negTokenInit exit9"); - return 0; - } else if ((cls != ASN1_UNI) || (con != ASN1_PRI) - || (tag != ASN1_GENSTR)) { - cFYI(1, "Exit10 cls = %d con = %d tag = %d end = %p (%d)", - cls, con, tag, end, *end); - return 0; - } - cFYI(1, "Need to call asn1_octets_decode() function for %s", - ctx.pointer); /* is this UTF-8 or ASCII? */ -decode_negtoken_exit: + /* + * We currently ignore anything at the end of the SPNEGO blob after + * the mechTypes have been parsed, since none of that info is + * used at the moment. + */ return 1; } --- linux-3.5.0.orig/fs/cifs/file.c +++ linux-3.5.0/fs/cifs/file.c @@ -266,6 +266,8 @@ INIT_WORK(&pCifsFile->oplock_break, cifs_oplock_break); INIT_LIST_HEAD(&pCifsFile->llist); + cifs_sb_active(inode->i_sb); + spin_lock(&cifs_file_list_lock); list_add(&pCifsFile->tlist, &(tlink_tcon(tlink)->openFileList)); /* if readable file instance put first in list*/ @@ -284,6 +286,15 @@ static void cifs_del_lock_waiters(struct cifsLockInfo *lock); +struct cifsFileInfo * +cifsFileInfo_get(struct cifsFileInfo *cifs_file) +{ + spin_lock(&cifs_file_list_lock); + cifsFileInfo_get_locked(cifs_file); + spin_unlock(&cifs_file_list_lock); + return cifs_file; +} + /* * Release a reference on the file private data. This may involve closing * the filehandle out on the server. Must be called without holding @@ -294,7 +305,8 @@ struct inode *inode = cifs_file->dentry->d_inode; struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink); struct cifsInodeInfo *cifsi = CIFS_I(inode); - struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); + struct super_block *sb = inode->i_sb; + struct cifs_sb_info *cifs_sb = CIFS_SB(sb); struct cifsLockInfo *li, *tmp; spin_lock(&cifs_file_list_lock); @@ -344,6 +356,7 @@ cifs_put_tlink(cifs_file->tlink); dput(cifs_file->dentry); + cifs_sb_deactive(sb); kfree(cifs_file); } @@ -1563,7 +1576,7 @@ if (!open_file->invalidHandle) { /* found a good file */ /* lock it so it will not be closed on us */ - cifsFileInfo_get(open_file); + cifsFileInfo_get_locked(open_file); spin_unlock(&cifs_file_list_lock); return open_file; } /* else might as well continue, and look for @@ -1615,7 +1628,7 @@ if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) { if (!open_file->invalidHandle) { /* found a good writable file */ - cifsFileInfo_get(open_file); + cifsFileInfo_get_locked(open_file); spin_unlock(&cifs_file_list_lock); return open_file; } else { @@ -1632,7 +1645,7 @@ if (inv_file) { any_available = false; - cifsFileInfo_get(inv_file); + cifsFileInfo_get_locked(inv_file); } spin_unlock(&cifs_file_list_lock); @@ -3082,8 +3095,6 @@ break; } - spin_lock(&cifs_file_list_lock); - spin_unlock(&cifs_file_list_lock); rdata->cfile = cifsFileInfo_get(open_file); rdata->mapping = mapping; rdata->offset = offset; --- linux-3.5.0.orig/fs/cifs/cifs_dfs_ref.c +++ linux-3.5.0/fs/cifs/cifs_dfs_ref.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "cifsglob.h" #include "cifsproto.h" #include "cifsfs.h" @@ -150,7 +151,8 @@ * assuming that we have 'unc=' and 'ip=' in * the original sb_mountdata */ - md_len = strlen(sb_mountdata) + rc + strlen(ref->node_name) + 12; + md_len = strlen(sb_mountdata) + rc + strlen(ref->node_name) + 12 + + INET6_ADDRSTRLEN; mountdata = kzalloc(md_len+1, GFP_KERNEL); if (mountdata == NULL) { rc = -ENOMEM; @@ -226,6 +228,8 @@ compose_mount_options_err: kfree(mountdata); mountdata = ERR_PTR(rc); + kfree(*devname); + *devname = NULL; goto compose_mount_options_out; } --- linux-3.5.0.orig/fs/cifs/cifsfs.h +++ linux-3.5.0/fs/cifs/cifsfs.h @@ -41,6 +41,10 @@ extern const struct address_space_operations cifs_addr_ops; extern const struct address_space_operations cifs_addr_ops_smallbuf; +/* Functions related to super block operations */ +extern void cifs_sb_active(struct super_block *sb); +extern void cifs_sb_deactive(struct super_block *sb); + /* Functions related to inodes */ extern const struct inode_operations cifs_dir_inode_ops; extern struct inode *cifs_root_iget(struct super_block *); --- linux-3.5.0.orig/fs/cifs/connect.c +++ linux-3.5.0/fs/cifs/connect.c @@ -70,6 +70,7 @@ /* Mount options that take no arguments */ Opt_user_xattr, Opt_nouser_xattr, Opt_forceuid, Opt_noforceuid, + Opt_forcegid, Opt_noforcegid, Opt_noblocksend, Opt_noautotune, Opt_hard, Opt_soft, Opt_perm, Opt_noperm, Opt_mapchars, Opt_nomapchars, Opt_sfu, @@ -121,6 +122,8 @@ { Opt_nouser_xattr, "nouser_xattr" }, { Opt_forceuid, "forceuid" }, { Opt_noforceuid, "noforceuid" }, + { Opt_forcegid, "forcegid" }, + { Opt_noforcegid, "noforcegid" }, { Opt_noblocksend, "noblocksend" }, { Opt_noautotune, "noautotune" }, { Opt_hard, "hard" }, @@ -238,8 +241,8 @@ enum { Opt_sec_krb5, Opt_sec_krb5i, Opt_sec_krb5p, Opt_sec_ntlmsspi, Opt_sec_ntlmssp, - Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2i, - Opt_sec_nontlm, Opt_sec_lanman, + Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2, + Opt_sec_ntlmv2i, Opt_sec_lanman, Opt_sec_none, Opt_sec_err @@ -253,8 +256,9 @@ { Opt_sec_ntlmssp, "ntlmssp" }, { Opt_ntlm, "ntlm" }, { Opt_sec_ntlmi, "ntlmi" }, + { Opt_sec_ntlmv2, "nontlm" }, + { Opt_sec_ntlmv2, "ntlmv2" }, { Opt_sec_ntlmv2i, "ntlmv2i" }, - { Opt_sec_nontlm, "nontlm" }, { Opt_sec_lanman, "lanman" }, { Opt_sec_none, "none" }, @@ -1167,7 +1171,7 @@ case Opt_sec_ntlmi: vol->secFlg |= CIFSSEC_MAY_NTLM | CIFSSEC_MUST_SIGN; break; - case Opt_sec_nontlm: + case Opt_sec_ntlmv2: vol->secFlg |= CIFSSEC_MAY_NTLMV2; break; case Opt_sec_ntlmv2i: @@ -1344,6 +1348,12 @@ case Opt_noforceuid: override_uid = 0; break; + case Opt_forcegid: + override_gid = 1; + break; + case Opt_noforcegid: + override_gid = 0; + break; case Opt_noblocksend: vol->noblocksnd = 1; break; @@ -1634,14 +1644,24 @@ } break; case Opt_blank_pass: - vol->password = NULL; - break; - case Opt_pass: /* passwords have to be handled differently * to allow the character used for deliminator * to be passed within them */ + /* + * Check if this is a case where the password + * starts with a delimiter + */ + tmp_end = strchr(data, '='); + tmp_end++; + if (!(tmp_end < end && tmp_end[1] == delim)) { + /* No it is not. Set the password to NULL */ + vol->password = NULL; + break; + } + /* Yes it is. Drop down to Opt_pass below.*/ + case Opt_pass: /* Obtain the value string */ value = strchr(data, '='); value++; --- linux-3.5.0.orig/fs/cifs/cifs_unicode.c +++ linux-3.5.0/fs/cifs/cifs_unicode.c @@ -203,6 +203,27 @@ int i; wchar_t wchar_to; /* needed to quiet sparse */ + /* special case for utf8 to handle no plane0 chars */ + if (!strcmp(codepage->charset, "utf8")) { + /* + * convert utf8 -> utf16, we assume we have enough space + * as caller should have assumed conversion does not overflow + * in destination len is length in wchar_t units (16bits) + */ + i = utf8s_to_utf16s(from, len, UTF16_LITTLE_ENDIAN, + (wchar_t *) to, len); + + /* if success terminate and exit */ + if (i >= 0) + goto success; + /* + * if fails fall back to UCS encoding as this + * function should not return negative values + * currently can fail only if source contains + * invalid encoded characters + */ + } + for (i = 0; len && *from; i++, from += charlen, len -= charlen) { charlen = codepage->char2uni(from, len, &wchar_to); if (charlen < 1) { @@ -215,6 +236,7 @@ put_unaligned_le16(wchar_to, &to[i]); } +success: put_unaligned_le16(0, &to[i]); return i; } @@ -328,6 +350,6 @@ } ctoUTF16_out: - return i; + return j; } --- linux-3.5.0.orig/fs/notify/mark.c +++ linux-3.5.0/fs/notify/mark.c @@ -109,23 +109,27 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) { - if (atomic_dec_and_test(&mark->refcnt)) + if (atomic_dec_and_test(&mark->refcnt)) { + if (mark->group) + fsnotify_put_group(mark->group); mark->free_mark(mark); + } } +EXPORT_SYMBOL(fsnotify_put_mark); /* * Any time a mark is getting freed we end up here. * The caller had better be holding a reference to this mark so we don't actually * do the final put under the mark->lock */ -void fsnotify_destroy_mark(struct fsnotify_mark *mark) +void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group) { - struct fsnotify_group *group; struct inode *inode = NULL; - spin_lock(&mark->lock); + BUG_ON(!mutex_is_locked(&group->mark_mutex)); - group = mark->group; + spin_lock(&mark->lock); /* something else already called this function on this mark */ if (!(mark->flags & FSNOTIFY_MARK_FLAG_ALIVE)) { @@ -135,8 +139,6 @@ mark->flags &= ~FSNOTIFY_MARK_FLAG_ALIVE; - spin_lock(&group->mark_lock); - if (mark->flags & FSNOTIFY_MARK_FLAG_INODE) { inode = mark->i.inode; fsnotify_destroy_inode_mark(mark); @@ -147,13 +149,22 @@ list_del_init(&mark->g_list); - spin_unlock(&group->mark_lock); spin_unlock(&mark->lock); + if (inode && (mark->flags & FSNOTIFY_MARK_FLAG_OBJECT_PINNED)) + iput(inode); + /* release lock temporarily */ + mutex_unlock(&group->mark_mutex); + spin_lock(&destroy_lock); list_add(&mark->destroy_list, &destroy_list); spin_unlock(&destroy_lock); wake_up(&destroy_waitq); + /* + * We don't necessarily have a ref on mark from caller so the above destroy + * may have actually freed it, unless this group provides a 'freeing_mark' + * function which must be holding a reference. + */ /* * Some groups like to know that marks are being freed. This is a @@ -175,22 +186,19 @@ * is just a lazy update (and could be a perf win...) */ - if (inode && (mark->flags & FSNOTIFY_MARK_FLAG_OBJECT_PINNED)) - iput(inode); + atomic_dec(&group->num_marks); - /* - * We don't necessarily have a ref on mark from caller so the above iput - * may have already destroyed it. Don't touch from now on. - */ + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); +} - /* - * it's possible that this group tried to destroy itself, but this - * this mark was simultaneously being freed by inode. If that's the - * case, we finish freeing the group here. - */ - if (unlikely(atomic_dec_and_test(&group->num_marks))) - fsnotify_final_destroy_group(group); +void fsnotify_destroy_mark(struct fsnotify_mark *mark, + struct fsnotify_group *group) +{ + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); + fsnotify_destroy_mark_locked(mark, group); + mutex_unlock(&group->mark_mutex); } +EXPORT_SYMBOL(fsnotify_destroy_mark); void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask) { @@ -214,26 +222,26 @@ * These marks may be used for the fsnotify backend to determine which * event types should be delivered to which group. */ -int fsnotify_add_mark(struct fsnotify_mark *mark, - struct fsnotify_group *group, struct inode *inode, - struct vfsmount *mnt, int allow_dups) +int fsnotify_add_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group, struct inode *inode, + struct vfsmount *mnt, int allow_dups) { int ret = 0; BUG_ON(inode && mnt); BUG_ON(!inode && !mnt); + BUG_ON(!mutex_is_locked(&group->mark_mutex)); /* * LOCKING ORDER!!!! + * group->mark_mutex * mark->lock - * group->mark_lock * inode->i_lock */ spin_lock(&mark->lock); - spin_lock(&group->mark_lock); - mark->flags |= FSNOTIFY_MARK_FLAG_ALIVE; + fsnotify_get_group(group); mark->group = group; list_add(&mark->g_list, &group->marks_list); atomic_inc(&group->num_marks); @@ -251,11 +259,8 @@ BUG(); } - spin_unlock(&group->mark_lock); - /* this will pin the object if appropriate */ fsnotify_set_mark_mask_locked(mark, mark->mask); - spin_unlock(&mark->lock); if (inode) @@ -265,10 +270,10 @@ err: mark->flags &= ~FSNOTIFY_MARK_FLAG_ALIVE; list_del_init(&mark->g_list); + fsnotify_put_group(group); mark->group = NULL; atomic_dec(&group->num_marks); - spin_unlock(&group->mark_lock); spin_unlock(&mark->lock); spin_lock(&destroy_lock); @@ -278,6 +283,17 @@ return ret; } +EXPORT_SYMBOL(fsnotify_add_mark); + +int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, + struct inode *inode, struct vfsmount *mnt, int allow_dups) +{ + int ret; + mutex_lock(&group->mark_mutex); + ret = fsnotify_add_mark_locked(mark, group, inode, mnt, allow_dups); + mutex_unlock(&group->mark_mutex); + return ret; +} /* * clear any marks in a group in which mark->flags & flags is true @@ -286,22 +302,16 @@ unsigned int flags) { struct fsnotify_mark *lmark, *mark; - LIST_HEAD(free_list); - spin_lock(&group->mark_lock); + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); list_for_each_entry_safe(mark, lmark, &group->marks_list, g_list) { if (mark->flags & flags) { - list_add(&mark->free_g_list, &free_list); - list_del_init(&mark->g_list); fsnotify_get_mark(mark); + fsnotify_destroy_mark_locked(mark, group); + fsnotify_put_mark(mark); } } - spin_unlock(&group->mark_lock); - - list_for_each_entry_safe(mark, lmark, &free_list, free_g_list) { - fsnotify_destroy_mark(mark); - fsnotify_put_mark(mark); - } + mutex_unlock(&group->mark_mutex); } /* @@ -317,6 +327,8 @@ assert_spin_locked(&old->lock); new->i.inode = old->i.inode; new->m.mnt = old->m.mnt; + if (old->group) + fsnotify_get_group(old->group); new->group = old->group; new->mask = old->mask; new->free_mark = old->free_mark; @@ -333,6 +345,7 @@ atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } +EXPORT_SYMBOL(fsnotify_init_mark); static int fsnotify_mark_destroy(void *ignored) { --- linux-3.5.0.orig/fs/notify/group.c +++ linux-3.5.0/fs/notify/group.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "fsnotify.h" @@ -33,9 +34,6 @@ */ void fsnotify_final_destroy_group(struct fsnotify_group *group) { - /* clear the notification queue of all events */ - fsnotify_flush_notify(group); - if (group->ops->free_group_priv) group->ops->free_group_priv(group); @@ -43,23 +41,30 @@ } /* - * Trying to get rid of a group. We need to first get rid of any outstanding - * allocations and then free the group. Remember that fsnotify_clear_marks_by_group - * could miss marks that are being freed by inode and those marks could still - * hold a reference to this group (via group->num_marks) If we get into that - * situtation, the fsnotify_final_destroy_group will get called when that final - * mark is freed. + * Trying to get rid of a group. Remove all marks, flush all events and release + * the group reference. + * Note that another thread calling fsnotify_clear_marks_by_group() may still + * hold a ref to the group. */ -static void fsnotify_destroy_group(struct fsnotify_group *group) +void fsnotify_destroy_group(struct fsnotify_group *group) { /* clear all inode marks for this group */ fsnotify_clear_marks_by_group(group); synchronize_srcu(&fsnotify_mark_srcu); - /* past the point of no return, matches the initial value of 1 */ - if (atomic_dec_and_test(&group->num_marks)) - fsnotify_final_destroy_group(group); + /* clear the notification queue of all events */ + fsnotify_flush_notify(group); + + fsnotify_put_group(group); +} + +/* + * Get reference to a group. + */ +void fsnotify_get_group(struct fsnotify_group *group) +{ + atomic_inc(&group->refcnt); } /* @@ -68,8 +73,9 @@ void fsnotify_put_group(struct fsnotify_group *group) { if (atomic_dec_and_test(&group->refcnt)) - fsnotify_destroy_group(group); + fsnotify_final_destroy_group(group); } +EXPORT_SYMBOL(fsnotify_put_group); /* * Create a new fsnotify_group and hold a reference for the group returned. @@ -84,21 +90,18 @@ /* set to 0 when there a no external references to this group */ atomic_set(&group->refcnt, 1); - /* - * hits 0 when there are no external references AND no marks for - * this group - */ - atomic_set(&group->num_marks, 1); + atomic_set(&group->num_marks, 0); mutex_init(&group->notification_mutex); INIT_LIST_HEAD(&group->notification_list); init_waitqueue_head(&group->notification_waitq); group->max_events = UINT_MAX; - spin_lock_init(&group->mark_lock); + mutex_init(&group->mark_mutex); INIT_LIST_HEAD(&group->marks_list); group->ops = ops; return group; } +EXPORT_SYMBOL(fsnotify_alloc_group); --- linux-3.5.0.orig/fs/notify/inode_mark.c +++ linux-3.5.0/fs/notify/inode_mark.c @@ -63,8 +63,8 @@ { struct inode *inode = mark->i.inode; + BUG_ON(!mutex_is_locked(&mark->group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&mark->group->mark_lock); spin_lock(&inode->i_lock); @@ -99,8 +99,16 @@ spin_unlock(&inode->i_lock); list_for_each_entry_safe(mark, lmark, &free_list, i.free_i_list) { - fsnotify_destroy_mark(mark); + struct fsnotify_group *group; + + spin_lock(&mark->lock); + fsnotify_get_group(mark->group); + group = mark->group; + spin_unlock(&mark->lock); + + fsnotify_destroy_mark(mark, group); fsnotify_put_mark(mark); + fsnotify_put_group(group); } } @@ -191,8 +199,8 @@ mark->flags |= FSNOTIFY_MARK_FLAG_INODE; + BUG_ON(!mutex_is_locked(&group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&group->mark_lock); spin_lock(&inode->i_lock); --- linux-3.5.0.orig/fs/notify/vfsmount_mark.c +++ linux-3.5.0/fs/notify/vfsmount_mark.c @@ -46,8 +46,16 @@ spin_unlock(&mnt->mnt_root->d_lock); list_for_each_entry_safe(mark, lmark, &free_list, m.free_m_list) { - fsnotify_destroy_mark(mark); + struct fsnotify_group *group; + + spin_lock(&mark->lock); + fsnotify_get_group(mark->group); + group = mark->group; + spin_unlock(&mark->lock); + + fsnotify_destroy_mark(mark, group); fsnotify_put_mark(mark); + fsnotify_put_group(group); } } @@ -88,8 +96,8 @@ { struct vfsmount *mnt = mark->m.mnt; + BUG_ON(!mutex_is_locked(&mark->group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&mark->group->mark_lock); spin_lock(&mnt->mnt_root->d_lock); @@ -151,8 +159,8 @@ mark->flags |= FSNOTIFY_MARK_FLAG_VFSMOUNT; + BUG_ON(!mutex_is_locked(&group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&group->mark_lock); spin_lock(&mnt->mnt_root->d_lock); --- linux-3.5.0.orig/fs/notify/fanotify/fanotify.c +++ linux-3.5.0/fs/notify/fanotify/fanotify.c @@ -21,6 +21,7 @@ if ((old->path.mnt == new->path.mnt) && (old->path.dentry == new->path.dentry)) return true; + break; case (FSNOTIFY_EVENT_NONE): return true; default: --- linux-3.5.0.orig/fs/notify/fanotify/fanotify_user.c +++ linux-3.5.0/fs/notify/fanotify/fanotify_user.c @@ -419,7 +419,7 @@ wake_up(&group->fanotify_data.access_waitq); #endif /* matches the fanotify_init->fsnotify_alloc_group */ - fsnotify_put_group(group); + fsnotify_destroy_group(group); return 0; } @@ -515,7 +515,8 @@ static __u32 fanotify_mark_remove_from_mask(struct fsnotify_mark *fsn_mark, __u32 mask, - unsigned int flags) + unsigned int flags, + int *destroy) { __u32 oldmask; @@ -529,8 +530,7 @@ } spin_unlock(&fsn_mark->lock); - if (!(oldmask & ~mask)) - fsnotify_destroy_mark(fsn_mark); + *destroy = !(oldmask & ~mask); return mask & oldmask; } @@ -541,12 +541,17 @@ { struct fsnotify_mark *fsn_mark = NULL; __u32 removed; + int destroy_mark; fsn_mark = fsnotify_find_vfsmount_mark(group, mnt); if (!fsn_mark) return -ENOENT; - removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags); + removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags, + &destroy_mark); + if (destroy_mark) + fsnotify_destroy_mark(fsn_mark, group); + fsnotify_put_mark(fsn_mark); if (removed & real_mount(mnt)->mnt_fsnotify_mask) fsnotify_recalc_vfsmount_mask(mnt); @@ -560,12 +565,16 @@ { struct fsnotify_mark *fsn_mark = NULL; __u32 removed; + int destroy_mark; fsn_mark = fsnotify_find_inode_mark(group, inode); if (!fsn_mark) return -ENOENT; - removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags); + removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags, + &destroy_mark); + if (destroy_mark) + fsnotify_destroy_mark(fsn_mark, group); /* matches the fsnotify_find_inode_mark() */ fsnotify_put_mark(fsn_mark); if (removed & inode->i_fsnotify_mask) @@ -732,13 +741,13 @@ break; default: fd = -EINVAL; - goto out_put_group; + goto out_destroy_group; } if (flags & FAN_UNLIMITED_QUEUE) { fd = -EPERM; if (!capable(CAP_SYS_ADMIN)) - goto out_put_group; + goto out_destroy_group; group->max_events = UINT_MAX; } else { group->max_events = FANOTIFY_DEFAULT_MAX_EVENTS; @@ -747,7 +756,7 @@ if (flags & FAN_UNLIMITED_MARKS) { fd = -EPERM; if (!capable(CAP_SYS_ADMIN)) - goto out_put_group; + goto out_destroy_group; group->fanotify_data.max_marks = UINT_MAX; } else { group->fanotify_data.max_marks = FANOTIFY_DEFAULT_MAX_MARKS; @@ -755,12 +764,12 @@ fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags); if (fd < 0) - goto out_put_group; + goto out_destroy_group; return fd; -out_put_group: - fsnotify_put_group(group); +out_destroy_group: + fsnotify_destroy_group(group); return fd; } --- linux-3.5.0.orig/fs/notify/dnotify/dnotify.c +++ linux-3.5.0/fs/notify/dnotify/dnotify.c @@ -201,7 +201,7 @@ /* nothing else could have found us thanks to the dnotify_mark_mutex */ if (dn_mark->dn == NULL) - fsnotify_destroy_mark(fsn_mark); + fsnotify_destroy_mark(fsn_mark, dnotify_group); mutex_unlock(&dnotify_mark_mutex); @@ -385,7 +385,7 @@ spin_unlock(&fsn_mark->lock); if (destroy) - fsnotify_destroy_mark(fsn_mark); + fsnotify_destroy_mark(fsn_mark, dnotify_group); mutex_unlock(&dnotify_mark_mutex); fsnotify_put_mark(fsn_mark); --- linux-3.5.0.orig/fs/notify/inotify/inotify_user.c +++ linux-3.5.0/fs/notify/inotify/inotify_user.c @@ -293,10 +293,8 @@ pr_debug("%s: group=%p\n", __func__, group); - fsnotify_clear_marks_by_group(group); - /* free this group, matching get was inotify_init->fsnotify_obtain_group */ - fsnotify_put_group(group); + fsnotify_destroy_group(group); return 0; } @@ -533,6 +531,7 @@ fsn_event_priv = &event_priv->fsnotify_event_priv_data; + fsnotify_get_group(group); fsn_event_priv->group = group; event_priv->wd = i_mark->wd; @@ -577,10 +576,7 @@ int add = (arg & IN_MASK_ADD); int ret; - /* don't allow invalid bits: we don't want flags set */ mask = inotify_arg_to_mask(arg); - if (unlikely(!(mask & IN_ALL_EVENTS))) - return -EINVAL; fsn_mark = fsnotify_find_inode_mark(group, inode); if (!fsn_mark) @@ -630,10 +626,7 @@ struct idr *idr = &group->inotify_data.idr; spinlock_t *idr_lock = &group->inotify_data.idr_lock; - /* don't allow invalid bits: we don't want flags set */ mask = inotify_arg_to_mask(arg); - if (unlikely(!(mask & IN_ALL_EVENTS))) - return -EINVAL; tmp_i_mark = kmem_cache_alloc(inotify_inode_mark_cachep, GFP_KERNEL); if (unlikely(!tmp_i_mark)) @@ -712,7 +705,7 @@ if (atomic_inc_return(&group->inotify_data.user->inotify_devs) > inotify_max_user_instances) { - fsnotify_put_group(group); + fsnotify_destroy_group(group); return ERR_PTR(-EMFILE); } @@ -741,7 +734,7 @@ ret = anon_inode_getfd("inotify", &inotify_fops, group, O_RDONLY | flags); if (ret < 0) - fsnotify_put_group(group); + fsnotify_destroy_group(group); return ret; } @@ -761,6 +754,10 @@ int ret, fput_needed; unsigned flags = 0; + /* don't allow invalid bits: we don't want flags set */ + if (unlikely(!(mask & ALL_INOTIFY_BITS))) + return -EINVAL; + filp = fget_light(fd, &fput_needed); if (unlikely(!filp)) return -EBADF; @@ -817,7 +814,7 @@ ret = 0; - fsnotify_destroy_mark(&i_mark->fsn_mark); + fsnotify_destroy_mark(&i_mark->fsn_mark, group); /* match ref taken by inotify_idr_find */ fsnotify_put_mark(&i_mark->fsn_mark); --- linux-3.5.0.orig/fs/notify/inotify/inotify_fsnotify.c +++ linux-3.5.0/fs/notify/inotify/inotify_fsnotify.c @@ -118,6 +118,7 @@ fsn_event_priv = &event_priv->fsnotify_event_priv_data; + fsnotify_get_group(group); fsn_event_priv->group = group; event_priv->wd = wd; @@ -131,7 +132,7 @@ } if (inode_mark->mask & IN_ONESHOT) - fsnotify_destroy_mark(inode_mark); + fsnotify_destroy_mark(inode_mark, group); return ret; } @@ -210,6 +211,7 @@ event_priv = container_of(fsn_event_priv, struct inotify_event_private_data, fsnotify_event_priv_data); + fsnotify_put_group(fsn_event_priv->group); kmem_cache_free(event_priv_cachep, event_priv); } --- linux-3.5.0.orig/include/Kbuild +++ linux-3.5.0/include/Kbuild @@ -9,4 +9,3 @@ header-y += video/ header-y += drm/ header-y += xen/ -header-y += scsi/ --- linux-3.5.0.orig/include/target/target_core_base.h +++ linux-3.5.0/include/target/target_core_base.h @@ -220,6 +220,7 @@ TCM_CHECK_CONDITION_UNIT_ATTENTION = 0x0e, TCM_CHECK_CONDITION_NOT_READY = 0x0f, TCM_RESERVATION_CONFLICT = 0x10, + TCM_ADDRESS_OUT_OF_RANGE = 0x11, }; enum target_sc_flags_table { --- linux-3.5.0.orig/include/trace/events/random.h +++ linux-3.5.0/include/trace/events/random.h @@ -0,0 +1,134 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM random + +#if !defined(_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_RANDOM_H + +#include +#include + +DECLARE_EVENT_CLASS(random__mix_pool_bytes, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, bytes ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->bytes = bytes; + __entry->IP = IP; + ), + + TP_printk("%s pool: bytes %d caller %pF", + __entry->pool_name, __entry->bytes, (void *)__entry->IP) +); + +DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP) +); + +DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes_nolock, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP) +); + +TRACE_EVENT(credit_entropy_bits, + TP_PROTO(const char *pool_name, int bits, int entropy_count, + int entropy_total, unsigned long IP), + + TP_ARGS(pool_name, bits, entropy_count, entropy_total, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, bits ) + __field( int, entropy_count ) + __field( int, entropy_total ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->bits = bits; + __entry->entropy_count = entropy_count; + __entry->entropy_total = entropy_total; + __entry->IP = IP; + ), + + TP_printk("%s pool: bits %d entropy_count %d entropy_total %d " + "caller %pF", __entry->pool_name, __entry->bits, + __entry->entropy_count, __entry->entropy_total, + (void *)__entry->IP) +); + +TRACE_EVENT(get_random_bytes, + TP_PROTO(int nbytes, unsigned long IP), + + TP_ARGS(nbytes, IP), + + TP_STRUCT__entry( + __field( int, nbytes ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->nbytes = nbytes; + __entry->IP = IP; + ), + + TP_printk("nbytes %d caller %pF", __entry->nbytes, (void *)__entry->IP) +); + +DECLARE_EVENT_CLASS(random__extract_entropy, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, nbytes ) + __field( int, entropy_count ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->nbytes = nbytes; + __entry->entropy_count = entropy_count; + __entry->IP = IP; + ), + + TP_printk("%s pool: nbytes %d entropy_count %d caller %pF", + __entry->pool_name, __entry->nbytes, __entry->entropy_count, + (void *)__entry->IP) +); + + +DEFINE_EVENT(random__extract_entropy, extract_entropy, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP) +); + +DEFINE_EVENT(random__extract_entropy, extract_entropy_user, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP) +); + + + +#endif /* _TRACE_RANDOM_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/vfs.h +++ linux-3.5.0/include/trace/events/vfs.h @@ -0,0 +1,55 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM vfs + +#include + +#if !defined(_TRACE_VFS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_VFS_H + +/* + * Tracepoint for dirtying an inode: + */ +TRACE_EVENT(dirty_inode, + + TP_PROTO(struct inode *inode, struct task_struct *task), + + TP_ARGS(inode, task), + + TP_STRUCT__entry( + __array( char, comm, TASK_COMM_LEN ) + __field( pid_t, pid ) + __array( char, dev, 16 ) + __array( char, file, 32 ) + ), + + TP_fast_assign( + if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) { + struct dentry *dentry; + const char *name = "?"; + + dentry = d_find_alias(inode); + if (dentry) { + spin_lock(&dentry->d_lock); + name = (const char *) dentry->d_name.name; + } + + memcpy(__entry->comm, task->comm, TASK_COMM_LEN); + __entry->pid = task->pid; + strlcpy(__entry->file, name, 32); + strlcpy(__entry->dev, inode->i_sb->s_id, 16); + + if (dentry) { + spin_unlock(&dentry->d_lock); + dput(dentry); + } + } + ), + + TP_printk("task=%i (%s) file=%s dev=%s", + __entry->pid, __entry->comm, __entry->file, __entry->dev) +); + +#endif /* _TRACE_VFS_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/xen.h +++ linux-3.5.0/include/trace/events/xen.h @@ -377,6 +377,14 @@ DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin); DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin); +TRACE_EVENT(xen_mmu_flush_tlb_all, + TP_PROTO(int x), + TP_ARGS(x), + TP_STRUCT__entry(__array(char, x, 0)), + TP_fast_assign((void)x), + TP_printk("%s", "") + ); + TRACE_EVENT(xen_mmu_flush_tlb, TP_PROTO(int x), TP_ARGS(x), --- linux-3.5.0.orig/include/trace/events/fs.h +++ linux-3.5.0/include/trace/events/fs.h @@ -0,0 +1,53 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fs + +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_FS_H + +#include +#include + +TRACE_EVENT(do_sys_open, + + TP_PROTO(char *filename, int flags, int mode), + + TP_ARGS(filename, flags, mode), + + TP_STRUCT__entry( + __string( filename, filename ) + __field( int, flags ) + __field( int, mode ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + __entry->flags = flags; + __entry->mode = mode; + ), + + TP_printk("\"%s\" %x %o", + __get_str(filename), __entry->flags, __entry->mode) +); + +TRACE_EVENT(open_exec, + + TP_PROTO(char *filename), + + TP_ARGS(filename), + + TP_STRUCT__entry( + __string( filename, filename ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + ), + + TP_printk("\"%s\"", + __get_str(filename)) +); + +#endif /* _TRACE_FS_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/kmem.h +++ linux-3.5.0/include/trace/events/kmem.h @@ -214,7 +214,7 @@ TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s", __entry->page, - page_to_pfn(__entry->page), + __entry->page ? page_to_pfn(__entry->page) : 0, __entry->order, __entry->migratetype, show_gfp_flags(__entry->gfp_flags)) @@ -240,7 +240,7 @@ TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d", __entry->page, - page_to_pfn(__entry->page), + __entry->page ? page_to_pfn(__entry->page) : 0, __entry->order, __entry->migratetype, __entry->order == 0) --- linux-3.5.0.orig/include/xen/grant_table.h +++ linux-3.5.0/include/xen/grant_table.h @@ -187,6 +187,7 @@ struct gnttab_map_grant_ref *kmap_ops, struct page **pages, unsigned int count); int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, - struct page **pages, unsigned int count, bool clear_pte); + struct gnttab_map_grant_ref *kunmap_ops, + struct page **pages, unsigned int count); #endif /* __ASM_GNTTAB_H__ */ --- linux-3.5.0.orig/include/xen/interface/io/blkif.h +++ linux-3.5.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-3.5.0.orig/include/xen/interface/io/netif.h +++ linux-3.5.0/include/xen/interface/io/netif.h @@ -13,6 +13,24 @@ #include "../grant_table.h" /* + * 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-3.5.0.orig/include/video/omap-panel-tfp410.h +++ linux-3.5.0/include/video/omap-panel-tfp410.h @@ -28,7 +28,7 @@ * @power_down_gpio: gpio number for PD pin (or -1 if not available) */ struct tfp410_platform_data { - u16 i2c_bus_num; + int i2c_bus_num; int power_down_gpio; }; --- linux-3.5.0.orig/include/video/atmel_lcdc.h +++ linux-3.5.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-3.5.0.orig/include/sound/core.h +++ linux-3.5.0/include/sound/core.h @@ -132,6 +132,7 @@ int shutdown; /* this card is going down */ int free_on_last_close; /* free in context of file_release */ wait_queue_head_t shutdown_sleep; + atomic_t refcount; /* refcount for disconnection */ struct device *dev; /* device assigned to this card */ struct device *card_dev; /* cardX object for sysfs */ @@ -189,6 +190,7 @@ const struct file_operations *f_ops; /* file operations */ void *private_data; /* private data for f_ops->open */ struct device *dev; /* device for sysfs */ + struct snd_card *card_ptr; /* assigned card instance */ }; /* return a device pointer linked to each sound device as a parent */ @@ -295,6 +297,7 @@ int snd_component_add(struct snd_card *card, const char *component); int snd_card_file_add(struct snd_card *card, struct file *file); int snd_card_file_remove(struct snd_card *card, struct file *file); +void snd_card_unref(struct snd_card *card); #define snd_card_set_dev(card, devptr) ((card)->dev = (devptr)) --- linux-3.5.0.orig/include/linux/efi.h +++ linux-3.5.0/include/linux/efi.h @@ -29,7 +29,12 @@ #define EFI_UNSUPPORTED ( 3 | (1UL << (BITS_PER_LONG-1))) #define EFI_BAD_BUFFER_SIZE ( 4 | (1UL << (BITS_PER_LONG-1))) #define EFI_BUFFER_TOO_SMALL ( 5 | (1UL << (BITS_PER_LONG-1))) +#define EFI_NOT_READY ( 6 | (1UL << (BITS_PER_LONG-1))) +#define EFI_DEVICE_ERROR ( 7 | (1UL << (BITS_PER_LONG-1))) +#define EFI_WRITE_PROTECTED ( 8 | (1UL << (BITS_PER_LONG-1))) +#define EFI_OUT_OF_RESOURCES ( 9 | (1UL << (BITS_PER_LONG-1))) #define EFI_NOT_FOUND (14 | (1UL << (BITS_PER_LONG-1))) +#define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) typedef unsigned long efi_status_t; typedef u8 efi_bool_t; @@ -496,6 +501,11 @@ extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg); extern void efi_gettimeofday (struct timespec *ts); extern void efi_enter_virtual_mode (void); /* switch EFI to virtual mode, if possible */ +#ifdef CONFIG_X86 +extern void efi_free_boot_services(void); +#else +static inline void efi_free_boot_services(void) {} +#endif extern u64 efi_get_iobase (void); extern u32 efi_mem_type (unsigned long phys_addr); extern u64 efi_mem_attributes (unsigned long phys_addr); @@ -534,18 +544,30 @@ #endif /* - * We play games with efi_enabled so that the compiler will, if possible, remove - * EFI-related code altogether. + * We play games with efi_enabled so that the compiler will, if + * possible, remove EFI-related code altogether. */ +#define EFI_BOOT 0 /* Were we booted from EFI? */ +#define EFI_SYSTEM_TABLES 1 /* Can we use EFI system tables? */ +#define EFI_CONFIG_TABLES 2 /* Can we use EFI config tables? */ +#define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */ +#define EFI_MEMMAP 4 /* Can we use EFI memory map? */ +#define EFI_64BIT 5 /* Is the firmware 64-bit? */ + #ifdef CONFIG_EFI # ifdef CONFIG_X86 - extern int efi_enabled; - extern bool efi_64bit; +extern int efi_enabled(int facility); # else -# define efi_enabled 1 +static inline int efi_enabled(int facility) +{ + return 1; +} # endif #else -# define efi_enabled 0 +static inline int efi_enabled(int facility) +{ + return 0; +} #endif /* @@ -649,6 +671,7 @@ spinlock_t lock; struct list_head list; struct kset *kset; + struct kobject *kobject; struct bin_attribute *new_var, *del_var; const struct efivar_operations *ops; struct efivar_entry *walk_entry; --- linux-3.5.0.orig/include/linux/skbuff.h +++ linux-3.5.0/include/linux/skbuff.h @@ -480,7 +480,7 @@ union { __u32 mark; __u32 dropcount; - __u32 avail_size; + __u32 reserved_tailroom; }; sk_buff_data_t transport_header; @@ -579,9 +579,6 @@ return __alloc_skb(size, priority, 1, NUMA_NO_NODE); } -extern void skb_recycle(struct sk_buff *skb); -extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); - extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); extern struct sk_buff *skb_clone(struct sk_buff *skb, @@ -1394,7 +1391,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; } /** @@ -2404,6 +2404,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) { @@ -2550,27 +2557,6 @@ bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); -static inline bool skb_is_recycleable(const struct sk_buff *skb, int skb_size) -{ - if (irqs_disabled()) - return false; - - if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) - return false; - - if (skb_is_nonlinear(skb) || skb->fclone != SKB_FCLONE_UNAVAILABLE) - return false; - - skb_size = SKB_DATA_ALIGN(skb_size + NET_SKB_PAD); - if (skb_end_offset(skb) < skb_size) - return false; - - if (skb_shared(skb) || skb_cloned(skb)) - return false; - - return true; -} - /** * skb_head_is_locked - Determine if the skb->head is locked down * @skb: skb to check --- linux-3.5.0.orig/include/linux/mm.h +++ linux-3.5.0/include/linux/mm.h @@ -1503,6 +1503,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); @@ -1591,6 +1593,7 @@ enum mf_flags { MF_COUNT_INCREASED = 1 << 0, MF_ACTION_REQUIRED = 1 << 1, + MF_MUST_KILL = 1 << 2, }; extern int memory_failure(unsigned long pfn, int trapno, int flags); extern void memory_failure_queue(unsigned long pfn, int trapno, int flags); --- linux-3.5.0.orig/include/linux/fsnotify_backend.h +++ linux-3.5.0/include/linux/fsnotify_backend.h @@ -88,9 +88,10 @@ * if the group is interested in this event. * handle_event - main call for a group to handle an fs event * free_group_priv - called when a group refcnt hits 0 to clean up the private union - * freeing-mark - this means that a mark has been flagged to die when everything - * finishes using it. The function is supplied with what must be a - * valid group and inode to use to clean up. + * freeing_mark - called when a mark is being destroyed for some reason. The group + * MUST be holding a reference on each mark and that reference must be + * dropped in this function. inotify uses this function to send + * userspace messages that marks have been removed. */ struct fsnotify_ops { bool (*should_send_event)(struct fsnotify_group *group, struct inode *inode, @@ -141,7 +142,7 @@ unsigned int priority; /* stores all fastpath marks assoc with this group so they can be cleaned on unregister */ - spinlock_t mark_lock; /* protect marks_list */ + struct mutex mark_mutex; /* protect marks_list */ atomic_t num_marks; /* 1 for each mark and 1 for not being * past the point of no return when freeing * a group */ @@ -287,7 +288,6 @@ struct fsnotify_inode_mark i; struct fsnotify_vfsmount_mark m; }; - struct list_head free_g_list; /* tmp list used when freeing this mark */ __u32 ignored_mask; /* events types to ignore */ #define FSNOTIFY_MARK_FLAG_INODE 0x01 #define FSNOTIFY_MARK_FLAG_VFSMOUNT 0x02 @@ -360,11 +360,14 @@ /* called from fsnotify listeners, such as fanotify or dnotify */ -/* get a reference to an existing or create a new group */ +/* create a new group */ extern struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops); +/* get reference to a group */ +extern void fsnotify_get_group(struct fsnotify_group *group); /* drop reference on a group from fsnotify_alloc_group */ extern void fsnotify_put_group(struct fsnotify_group *group); - +/* destroy group */ +extern void fsnotify_destroy_group(struct fsnotify_group *group); /* take a reference to an event */ extern void fsnotify_get_event(struct fsnotify_event *event); extern void fsnotify_put_event(struct fsnotify_event *event); @@ -405,8 +408,13 @@ /* attach the mark to both the group and the inode */ extern int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, int allow_dups); -/* given a mark, flag it to be freed when all references are dropped */ -extern void fsnotify_destroy_mark(struct fsnotify_mark *mark); +extern int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct fsnotify_group *group, + struct inode *inode, struct vfsmount *mnt, int allow_dups); +/* given a group and a mark, flag mark to be freed when all references are dropped */ +extern void fsnotify_destroy_mark(struct fsnotify_mark *mark, + struct fsnotify_group *group); +extern void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group); /* run all the marks in a group, and clear all of the vfsmount marks */ extern void fsnotify_clear_vfsmount_marks_by_group(struct fsnotify_group *group); /* run all the marks in a group, and clear all of the inode marks */ --- linux-3.5.0.orig/include/linux/idr.h +++ linux-3.5.0/include/linux/idr.h @@ -152,4 +152,15 @@ void __init idr_init_cache(void); +/** + * idr_for_each_entry - iterate over an idr's elements of a given type + * @idp: idr handle + * @entry: the type * to use as cursor + * @id: id entry's key + */ +#define idr_for_each_entry(idp, entry, id) \ + for (id = 0, entry = (typeof(entry))idr_get_next((idp), &(id)); \ + entry != NULL; \ + ++id, entry = (typeof(entry))idr_get_next((idp), &(id))) + #endif /* __IDR_H__ */ --- linux-3.5.0.orig/include/linux/socket.h +++ linux-3.5.0/include/linux/socket.h @@ -316,7 +316,8 @@ /* IPX options */ #define IPX_TYPE 1 -extern void cred_to_ucred(struct pid *pid, const struct cred *cred, struct ucred *ucred); +extern void cred_to_ucred(struct pid *pid, const struct cred *cred, struct ucred *ucred, + bool use_effective); extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov, @@ -335,6 +336,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-3.5.0.orig/include/linux/namei.h +++ linux-3.5.0/include/linux/namei.h @@ -85,6 +85,7 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)); +extern struct dentry *lookup_hash(struct nameidata *nd); extern struct dentry *lookup_one_len(const char *, struct dentry *, int); extern int follow_down_one(struct path *); --- linux-3.5.0.orig/include/linux/freezer.h +++ linux-3.5.0/include/linux/freezer.h @@ -75,28 +75,62 @@ */ -/* Tell the freezer not to count the current task as freezable. */ +/** + * freezer_do_not_count - tell freezer to ignore %current + * + * Tell freezers to ignore the current task when determining whether the + * target frozen state is reached. IOW, the current task will be + * considered frozen enough by freezers. + * + * The caller shouldn't do anything which isn't allowed for a frozen task + * until freezer_cont() is called. Usually, freezer[_do_not]_count() pair + * wrap a scheduling operation and nothing much else. + */ static inline void freezer_do_not_count(void) { current->flags |= PF_FREEZER_SKIP; } -/* - * Tell the freezer to count the current task as freezable again and try to - * freeze it. +/** + * freezer_count - tell freezer to stop ignoring %current + * + * Undo freezer_do_not_count(). It tells freezers that %current should be + * considered again and tries to freeze if freezing condition is already in + * effect. */ static inline void freezer_count(void) { current->flags &= ~PF_FREEZER_SKIP; + /* + * If freezing is in progress, the following paired with smp_mb() + * in freezer_should_skip() ensures that either we see %true + * freezing() or freezer_should_skip() sees !PF_FREEZER_SKIP. + */ + smp_mb(); try_to_freeze(); } -/* - * Check if the task should be counted as freezable by the freezer +/** + * freezer_should_skip - whether to skip a task when determining frozen + * state is reached + * @p: task in quesion + * + * This function is used by freezers after establishing %true freezing() to + * test whether a task should be skipped when determining the target frozen + * state is reached. IOW, if this function returns %true, @p is considered + * frozen enough. */ -static inline int freezer_should_skip(struct task_struct *p) +static inline bool freezer_should_skip(struct task_struct *p) { - return !!(p->flags & PF_FREEZER_SKIP); + /* + * The following smp_mb() paired with the one in freezer_count() + * ensures that either freezer_count() sees %true freezing() or we + * see cleared %PF_FREEZER_SKIP and return %false. This makes it + * impossible for a task to slip frozen state testing after + * clearing %PF_FREEZER_SKIP. + */ + smp_mb(); + return p->flags & PF_FREEZER_SKIP; } /* --- linux-3.5.0.orig/include/linux/ftrace.h +++ linux-3.5.0/include/linux/ftrace.h @@ -305,7 +305,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 origin); int ftrace_regex_release(struct inode *inode, struct file *file); void __init @@ -429,6 +428,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-3.5.0.orig/include/linux/kmod.h +++ linux-3.5.0/include/linux/kmod.h @@ -71,6 +71,8 @@ int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); +void populate_rootfs_wait(void); + static inline int call_usermodehelper(char *path, char **argv, char **envp, int wait) { --- linux-3.5.0.orig/include/linux/vt_kern.h +++ linux-3.5.0/include/linux/vt_kern.h @@ -47,6 +47,7 @@ int con_get_cmap(unsigned char __user *cmap); void scrollback(struct vc_data *vc, int lines); void scrollfront(struct vc_data *vc, int lines); +void clear_buffer_attributes(struct vc_data *vc); void update_region(struct vc_data *vc, unsigned long start, int count); void redraw_screen(struct vc_data *vc, int is_switch); #define update_screen(x) redraw_screen(x, 0) @@ -129,7 +130,9 @@ void vt_event_post(unsigned int event, unsigned int old, unsigned int new); int vt_waitactive(int n); void change_console(struct vc_data *new_vc); -void reset_vc(struct vc_data *vc); +void reset_vc(struct vc_data *vc, int mode); +extern int do_unbind_con_driver(const struct consw *csw, int first, int last, + int deflt); extern int unbind_con_driver(const struct consw *csw, int first, int last, int deflt); int vty_init(const struct file_operations *console_fops); --- linux-3.5.0.orig/include/linux/jbd2.h +++ linux-3.5.0/include/linux/jbd2.h @@ -498,6 +498,7 @@ T_COMMIT, T_COMMIT_DFLUSH, T_COMMIT_JFLUSH, + T_COMMIT_CALLBACK, T_FINISHED } t_state; @@ -1125,6 +1126,7 @@ extern int jbd2_journal_recover (journal_t *journal); extern int jbd2_journal_wipe (journal_t *, int); extern int jbd2_journal_skip_recovery (journal_t *); +extern void jbd2_journal_update_sb_errno(journal_t *); extern void jbd2_journal_update_sb_log_tail (journal_t *, tid_t, unsigned long, int); extern void __jbd2_journal_abort_hard (journal_t *); @@ -1210,6 +1212,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-3.5.0.orig/include/linux/kd.h +++ linux-3.5.0/include/linux/kd.h @@ -45,6 +45,7 @@ #define KD_GRAPHICS 0x01 #define KD_TEXT0 0x02 /* obsolete */ #define KD_TEXT1 0x03 /* obsolete */ +#define KD_TRANSPARENT 0x04 #define KDGETMODE 0x4B3B /* get current mode */ #define KDMAPDISP 0x4B3C /* map display into address space */ --- linux-3.5.0.orig/include/linux/cpu.h +++ linux-3.5.0/include/linux/cpu.h @@ -73,8 +73,9 @@ /* migration should happen before other stuff but after perf */ CPU_PRI_PERF = 20, CPU_PRI_MIGRATION = 10, - /* prepare workqueues for other notifiers */ - CPU_PRI_WORKQUEUE = 5, + /* bring up workqueues before normal notifiers and down after */ + CPU_PRI_WORKQUEUE_UP = 5, + CPU_PRI_WORKQUEUE_DOWN = -5, }; #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */ @@ -174,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) @@ -197,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-3.5.0.orig/include/linux/random.h +++ linux-3.5.0/include/linux/random.h @@ -48,13 +48,13 @@ #ifdef __KERNEL__ -extern void rand_initialize_irq(int irq); - +extern void add_device_randomness(const void *, unsigned int); extern void add_input_randomness(unsigned int type, unsigned int code, unsigned int value); -extern void add_interrupt_randomness(int irq); +extern void add_interrupt_randomness(int irq, int irq_flags); extern void get_random_bytes(void *buf, int nbytes); +extern void get_random_bytes_arch(void *buf, int nbytes); void generate_random_uuid(unsigned char uuid_out[16]); #ifndef MODULE --- linux-3.5.0.orig/include/linux/thermal.h +++ linux-3.5.0/include/linux/thermal.h @@ -108,7 +108,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" enum events { THERMAL_AUX0, --- linux-3.5.0.orig/include/linux/binfmts.h +++ linux-3.5.0/include/linux/binfmts.h @@ -68,8 +68,6 @@ #define BINPRM_FLAGS_EXECFD_BIT 1 #define BINPRM_FLAGS_EXECFD (1 << BINPRM_FLAGS_EXECFD_BIT) -#define BINPRM_MAX_RECURSION 4 - /* Function parameter for binfmt->coredump */ struct coredump_params { long signr; @@ -128,6 +126,7 @@ unsigned long stack_top, int executable_stack); extern int bprm_mm_init(struct linux_binprm *bprm); +extern int bprm_change_interp(char *interp, struct linux_binprm *bprm); extern int copy_strings_kernel(int argc, const char *const *argv, struct linux_binprm *bprm); extern int prepare_bprm_creds(struct linux_binprm *bprm); --- linux-3.5.0.orig/include/linux/cgroup.h +++ linux-3.5.0/include/linux/cgroup.h @@ -33,7 +33,6 @@ extern bool cgroup_lock_live_group(struct cgroup *cgrp); extern void cgroup_unlock(void); extern void cgroup_fork(struct task_struct *p); -extern void cgroup_fork_callbacks(struct task_struct *p); extern void cgroup_post_fork(struct task_struct *p); extern void cgroup_exit(struct task_struct *p, int run_callbacks); extern int cgroupstats_build(struct cgroupstats *stats, --- linux-3.5.0.orig/include/linux/kref.h +++ linux-3.5.0/include/linux/kref.h @@ -93,4 +93,25 @@ { return kref_sub(kref, 1, release); } + +/** + * kref_get_unless_zero - Increment refcount for object unless it is zero. + * @kref: object. + * + * Return non-zero if the increment succeeded. Otherwise return 0. + * + * This function is intended to simplify locking around refcounting for + * objects that can be looked up from a lookup structure, and which are + * removed from that lookup structure in the object destructor. + * Operations on such objects require at least a read lock around + * lookup + kref_get, and a write lock around kref_put + remove from lookup + * structure. Furthermore, RCU implementations become extremely tricky. + * With a lookup followed by a kref_get_unless_zero *with return value check* + * locking in the kref_put path can be deferred to the actual removal from + * the lookup structure and RCU lookups become trivial. + */ +static inline int __must_check kref_get_unless_zero(struct kref *kref) +{ + return atomic_add_unless(&kref->refcount, 1, 0); +} #endif /* _KREF_H_ */ --- linux-3.5.0.orig/include/linux/pstore.h +++ linux-3.5.0/include/linux/pstore.h @@ -54,12 +54,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-3.5.0.orig/include/linux/init_task.h +++ linux-3.5.0/include/linux/init_task.h @@ -123,8 +123,17 @@ extern struct cred init_cred; +extern struct task_group root_task_group; + +#ifdef CONFIG_CGROUP_SCHED +# define INIT_CGROUP_SCHED(tsk) \ + .sched_task_group = &root_task_group, +#else +# define INIT_CGROUP_SCHED(tsk) +#endif + #ifdef CONFIG_PERF_EVENTS -# define INIT_PERF_EVENTS(tsk) \ +# define INIT_PERF_EVENTS(tsk) \ .perf_event_mutex = \ __MUTEX_INITIALIZER(tsk.perf_event_mutex), \ .perf_event_list = LIST_HEAD_INIT(tsk.perf_event_list), @@ -161,6 +170,7 @@ }, \ .tasks = LIST_HEAD_INIT(tsk.tasks), \ INIT_PUSHABLE_TASKS(tsk) \ + INIT_CGROUP_SCHED(tsk) \ .ptraced = LIST_HEAD_INIT(tsk.ptraced), \ .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \ .real_parent = &tsk, \ --- linux-3.5.0.orig/include/linux/irqdesc.h +++ linux-3.5.0/include/linux/irqdesc.h @@ -39,7 +39,6 @@ */ struct irq_desc { struct irq_data irq_data; - struct timer_rand_state *timer_rand_state; unsigned int __percpu *kstat_irqs; irq_flow_handler_t handle_irq; #ifdef CONFIG_IRQ_PREFLOW_FASTEOI --- linux-3.5.0.orig/include/linux/sched.h +++ linux-3.5.0/include/linux/sched.h @@ -1244,6 +1244,9 @@ const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; +#ifdef CONFIG_CGROUP_SCHED + struct task_group *sched_task_group; +#endif #ifdef CONFIG_PREEMPT_NOTIFIERS /* list of struct preempt_notifier: */ @@ -2442,27 +2445,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); } @@ -2475,7 +2469,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) {} @@ -2671,7 +2664,16 @@ extern void recalc_sigpending_and_wake(struct task_struct *t); extern void recalc_sigpending(void); -extern void signal_wake_up(struct task_struct *t, int resume_stopped); +extern void signal_wake_up_state(struct task_struct *t, unsigned int state); + +static inline void signal_wake_up(struct task_struct *t, bool resume) +{ + signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0); +} +static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume) +{ + signal_wake_up_state(t, resume ? __TASK_TRACED : 0); +} /* * Wrappers for p->thread_info->cpu access. No-op on UP. @@ -2723,7 +2725,7 @@ extern long sched_group_rt_period(struct task_group *tg); extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk); #endif -#endif +#endif /* CONFIG_CGROUP_SCHED */ extern int task_can_switch_user(struct user_struct *up, struct task_struct *tsk); --- linux-3.5.0.orig/include/linux/netdevice.h +++ linux-3.5.0/include/linux/netdevice.h @@ -233,9 +233,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; }; @@ -1301,6 +1301,8 @@ /* for setting kernel sock attribute on TCP connection setup */ #define GSO_MAX_SIZE 65536 unsigned int gso_max_size; +#define GSO_MAX_SEGS 65535 + u16 gso_max_segs; #ifdef CONFIG_DCB /* Data Center Bridging netlink ops */ @@ -1518,6 +1520,8 @@ struct sk_buff **(*gro_receive)(struct sk_buff **head, struct sk_buff *skb); int (*gro_complete)(struct sk_buff *skb); + bool (*id_match)(struct packet_type *ptype, + struct sock *sk); void *af_packet_priv; struct list_head list; }; --- linux-3.5.0.orig/include/linux/if_vlan.h +++ linux-3.5.0/include/linux/if_vlan.h @@ -82,6 +82,8 @@ } #define vlan_tx_tag_present(__skb) ((__skb)->vlan_tci & VLAN_TAG_PRESENT) +#define vlan_tx_nonzero_tag_present(__skb) \ + (vlan_tx_tag_present(__skb) && ((__skb)->vlan_tci & VLAN_VID_MASK)) #define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT) #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) @@ -91,7 +93,7 @@ extern struct net_device *vlan_dev_real_dev(const struct net_device *dev); extern u16 vlan_dev_vlan_id(const struct net_device *dev); -extern bool vlan_do_receive(struct sk_buff **skb, bool last_handler); +extern bool vlan_do_receive(struct sk_buff **skb); extern struct sk_buff *vlan_untag(struct sk_buff *skb); extern int vlan_vid_add(struct net_device *dev, unsigned short vid); @@ -120,10 +122,8 @@ return 0; } -static inline bool vlan_do_receive(struct sk_buff **skb, bool last_handler) +static inline bool vlan_do_receive(struct sk_buff **skb) { - if (((*skb)->vlan_tci & VLAN_VID_MASK) && last_handler) - (*skb)->pkt_type = PACKET_OTHERHOST; return false; } @@ -327,7 +327,7 @@ struct vlan_hdr *vhdr) { __be16 proto; - unsigned char *rawp; + unsigned short *rawp; /* * Was a VLAN packet, grab the encapsulated protocol, which the layer @@ -340,8 +340,8 @@ return; } - rawp = skb->data; - if (*(unsigned short *) rawp == 0xFFFF) + rawp = (unsigned short *)(vhdr + 1); + if (*rawp == 0xFFFF) /* * This is a magic hack to spot IPX packets. Older Novell * breaks the protocol design and runs IPX over 802.3 without --- linux-3.5.0.orig/include/linux/mount.h +++ linux-3.5.0/include/linux/mount.h @@ -66,6 +66,9 @@ extern void mnt_unpin(struct vfsmount *mnt); extern int __mnt_is_readonly(struct vfsmount *mnt); +struct path; +extern struct vfsmount *clone_private_mount(struct path *path); + struct file_system_type; extern struct vfsmount *vfs_kern_mount(struct file_system_type *type, int flags, const char *name, --- linux-3.5.0.orig/include/linux/mISDNhw.h +++ linux-3.5.0/include/linux/mISDNhw.h @@ -183,7 +183,7 @@ unsigned short); extern int mISDN_freedchannel(struct dchannel *); extern void mISDN_clear_bchannel(struct bchannel *); -extern int mISDN_freebchannel(struct bchannel *); +extern void mISDN_freebchannel(struct bchannel *); extern int mISDN_ctrl_bchannel(struct bchannel *, struct mISDN_ctrl_req *); extern void queue_ch_frame(struct mISDNchannel *, u_int, int, struct sk_buff *); --- linux-3.5.0.orig/include/linux/dma-attrs.h +++ linux-3.5.0/include/linux/dma-attrs.h @@ -15,6 +15,8 @@ DMA_ATTR_WEAK_ORDERING, DMA_ATTR_WRITE_COMBINE, DMA_ATTR_NON_CONSISTENT, + DMA_ATTR_NO_KERNEL_MAPPING, + DMA_ATTR_SKIP_CPU_SYNC, DMA_ATTR_MAX, }; --- linux-3.5.0.orig/include/linux/xfrm.h +++ linux-3.5.0/include/linux/xfrm.h @@ -84,6 +84,8 @@ __u32 bitmap; }; +#define XFRMA_REPLAY_ESN_MAX 4096 + struct xfrm_replay_state_esn { unsigned int bmp_len; __u32 oseq; --- linux-3.5.0.orig/include/linux/page-flags.h +++ linux-3.5.0/include/linux/page-flags.h @@ -108,6 +108,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE PG_compound_lock, #endif + PG_readaheadunused, /* user oriented readahead as yet unused*/ __NR_PAGEFLAGS, /* Filesystems */ @@ -231,6 +232,8 @@ PAGEFLAG(Reclaim, reclaim) TESTCLEARFLAG(Reclaim, reclaim) PAGEFLAG(Readahead, reclaim) /* Reminder to do async read-ahead */ +PAGEFLAG(ReadaheadUnused, readaheadunused) + #ifdef CONFIG_HIGHMEM /* * Must use a macro here due to header dependency issues. page_zone() is not @@ -361,7 +364,7 @@ * pages on the LRU and/or pagecache. */ TESTPAGEFLAG(Compound, compound) -__PAGEFLAG(Head, compound) +__SETPAGEFLAG(Head, compound) __CLEARPAGEFLAG(Head, compound) /* * PG_reclaim is used in combination with PG_compound to mark the @@ -373,8 +376,14 @@ * PG_compound & PG_reclaim => Tail page * PG_compound & ~PG_reclaim => Head page */ +#define PG_head_mask ((1L << PG_compound)) #define PG_head_tail_mask ((1L << PG_compound) | (1L << PG_reclaim)) +static inline int PageHead(struct page *page) +{ + return ((page->flags & PG_head_tail_mask) == PG_head_mask); +} + static inline int PageTail(struct page *page) { return ((page->flags & PG_head_tail_mask) == PG_head_tail_mask); --- linux-3.5.0.orig/include/linux/clk-provider.h +++ linux-3.5.0/include/linux/clk-provider.h @@ -171,6 +171,8 @@ const char *parent_name, unsigned long flags, unsigned long fixed_rate); +void of_fixed_clk_setup(struct device_node *np); + /** * struct clk_gate - gating clock * @@ -334,5 +336,19 @@ void __clk_reparent(struct clk *clk, struct clk *new_parent); unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); +struct of_device_id; + +typedef void (*of_clk_init_cb_t)(struct device_node *); + +int of_clk_add_provider(struct device_node *np, + struct clk *(*clk_src_get)(struct of_phandle_args *args, + void *data), + void *data); +void of_clk_del_provider(struct device_node *np); +struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, + void *data); +const char *of_clk_get_parent_name(struct device_node *np, int index); +void of_clk_init(const struct of_device_id *matches); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ --- linux-3.5.0.orig/include/linux/kvm_host.h +++ linux-3.5.0/include/linux/kvm_host.h @@ -450,7 +450,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-3.5.0.orig/include/linux/dynamic_debug.h +++ linux-3.5.0/include/linux/dynamic_debug.h @@ -45,7 +45,7 @@ int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); extern int ddebug_dyndbg_module_param_cb(char *param, char *val, - const char *modname); + const char *modname, int all); struct device; @@ -106,7 +106,7 @@ } static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, - const char *modname) + const char *modname, int all) { if (strstr(param, "dyndbg")) { /* avoid pr_warn(), which wants pr_fmt() fully defined */ @@ -114,7 +114,11 @@ "CONFIG_DYNAMIC_DEBUG builds\n"); return 0; /* allow and ignore */ } - return -EINVAL; + + if (!all) + return -EINVAL; + + return 0; } #define dynamic_pr_debug(fmt, ...) \ --- linux-3.5.0.orig/include/linux/moduleparam.h +++ linux-3.5.0/include/linux/moduleparam.h @@ -320,8 +320,8 @@ unsigned num, s16 level_min, s16 level_max, - int (*unknown)(char *param, char *val, - const char *doing)); + int (*handle_arg)(char *param, char *val, + const char *doing, int known)); /* Called by module remove. */ #ifdef CONFIG_SYSFS --- linux-3.5.0.orig/include/linux/perf_event.h +++ linux-3.5.0/include/linux/perf_event.h @@ -274,6 +274,8 @@ __u64 branch_sample_type; /* enum branch_sample_type */ }; +#define perf_flags(attr) (*(&(attr)->read_format + 1)) + /* * Ioctls that can be done on a perf event fd: */ @@ -925,7 +927,7 @@ struct hw_perf_event hw; struct perf_event_context *ctx; - struct file *filp; + atomic_long_t refcount; /* * These accumulate total time (in nanoseconds) that children @@ -950,8 +952,7 @@ /* mmap bits */ struct mutex mmap_mutex; atomic_t mmap_count; - int mmap_locked; - struct user_struct *mmap_user; + struct ring_buffer *rb; struct list_head rb_entry; @@ -1333,6 +1334,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-3.5.0.orig/include/linux/fs.h +++ linux-3.5.0/include/linux/fs.h @@ -499,6 +499,12 @@ */ #include +/* + * Maximum number of layers of fs stack. Needs to be limited to + * prevent kernel stack overflow + */ +#define FILESYSTEM_MAX_STACK_DEPTH 2 + /** * enum positive_aop_returns - aop return codes with specific semantics * @@ -1542,6 +1548,11 @@ /* Being remounted read-only */ int s_readonly_remount; + + /* + * Indicates how deep in a filesystem stack this SB is + */ + int s_stack_depth; }; /* superblock cache pruning functions */ @@ -1693,6 +1704,8 @@ int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); int (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open) (struct dentry *, struct file *, + const struct cred *); } ____cacheline_aligned; struct seq_file; @@ -2057,6 +2070,7 @@ extern struct file *filp_open(const char *, int, umode_t); extern struct file *file_open_root(struct dentry *, struct vfsmount *, const char *, int); +extern struct file *vfs_open(struct path *, struct file *, const struct cred *); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); @@ -2249,6 +2263,7 @@ #endif extern int notify_change(struct dentry *, struct iattr *); extern int inode_permission(struct inode *, int); +extern int inode_only_permission(struct inode *, int); extern int generic_permission(struct inode *, int); static inline bool execute_ok(struct inode *inode) @@ -2591,6 +2606,7 @@ extern int inode_newsize_ok(const struct inode *, loff_t offset); extern void setattr_copy(struct inode *inode, const struct iattr *attr); +extern int update_time(struct inode *, struct timespec *, int); extern int file_update_time(struct file *file); extern int generic_show_options(struct seq_file *m, struct dentry *root); --- linux-3.5.0.orig/include/linux/kvm_types.h +++ linux-3.5.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-3.5.0.orig/include/linux/ptp_clock_kernel.h +++ linux-3.5.0/include/linux/ptp_clock_kernel.h @@ -50,7 +50,8 @@ * clock operations * * @adjfreq: Adjusts the frequency of the hardware clock. - * parameter delta: Desired period change in parts per billion. + * parameter delta: Desired frequency offset from nominal frequency + * in parts per billion * * @adjtime: Shifts the time of the hardware clock. * parameter delta: Desired change in nanoseconds. --- linux-3.5.0.orig/include/linux/ktime.h +++ linux-3.5.0/include/linux/ktime.h @@ -58,13 +58,6 @@ typedef union ktime ktime_t; /* Kill this */ -#define KTIME_MAX ((s64)~((u64)1 << 63)) -#if (BITS_PER_LONG == 64) -# define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) -#else -# define KTIME_SEC_MAX LONG_MAX -#endif - /* * ktime_t definitions when using the 64-bit scalar representation: */ --- linux-3.5.0.orig/include/linux/splice.h +++ linux-3.5.0/include/linux/splice.h @@ -91,4 +91,10 @@ extern void spd_release_page(struct splice_pipe_desc *, unsigned int); extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +extern long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif --- linux-3.5.0.orig/include/linux/rculist_nulls.h +++ linux-3.5.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-3.5.0.orig/include/linux/netlink.h +++ linux-3.5.0/include/linux/netlink.h @@ -153,6 +153,7 @@ #include #include +#include struct net; @@ -226,6 +227,8 @@ struct netlink_callback *cb); int (*done)(struct netlink_callback *cb); void *data; + /* the module that dump function belong to */ + struct module *module; u16 family; u16 min_dump_alloc; unsigned int prev_seq, seq; @@ -251,14 +254,24 @@ struct netlink_dump_control { int (*dump)(struct sk_buff *skb, struct netlink_callback *); - int (*done)(struct netlink_callback*); + int (*done)(struct netlink_callback *); void *data; + struct module *module; u16 min_dump_alloc; }; -extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, - const struct nlmsghdr *nlh, - struct netlink_dump_control *control); +extern int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control); +static inline int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control) +{ + if (!control->module) + control->module = THIS_MODULE; + + return __netlink_dump_start(ssk, skb, nlh, control); +} #define NL_NONROOT_RECV 0x1 --- linux-3.5.0.orig/include/linux/ipc_namespace.h +++ linux-3.5.0/include/linux/ipc_namespace.h @@ -42,8 +42,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-3.5.0.orig/include/linux/quota.h +++ linux-3.5.0/include/linux/quota.h @@ -417,6 +417,7 @@ #define INIT_QUOTA_MODULE_NAMES {\ {QFMT_VFS_OLD, "quota_v1"},\ {QFMT_VFS_V0, "quota_v2"},\ + {QFMT_VFS_V1, "quota_v2"},\ {0, NULL}} #endif /* __KERNEL__ */ --- linux-3.5.0.orig/include/linux/wait.h +++ linux-3.5.0/include/linux/wait.h @@ -233,6 +233,8 @@ if (!ret) \ break; \ } \ + if (!ret && (condition)) \ + ret = 1; \ finish_wait(&wq, &__wait); \ } while (0) @@ -249,8 +251,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) \ ({ \ @@ -318,6 +321,8 @@ ret = -ERESTARTSYS; \ break; \ } \ + if (!ret && (condition)) \ + ret = 1; \ finish_wait(&wq, &__wait); \ } while (0) @@ -334,9 +339,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) \ ({ \ --- linux-3.5.0.orig/include/linux/security.h +++ linux-3.5.0/include/linux/security.h @@ -118,6 +118,7 @@ extern unsigned long mmap_min_addr; extern unsigned long dac_mmap_min_addr; #else +#define mmap_min_addr 0UL #define dac_mmap_min_addr 0UL #endif @@ -1242,8 +1243,6 @@ * Check that the @parent process has sufficient permission to trace the * current process before allowing the current process to present itself * to the @parent process for tracing. - * The parent process will still have to undergo the ptrace_access_check - * checks before it is allowed to trace this one. * @parent contains the task_struct structure for debugger process. * Return 0 if permission is granted. * @capget: @@ -3023,5 +3022,53 @@ { } #endif /* CONFIG_SECURITY */ +#ifdef CONFIG_SECURITY_YAMA +extern int yama_ptrace_access_check(struct task_struct *child, + unsigned int mode); +extern int yama_ptrace_traceme(struct task_struct *parent); +extern int yama_path_link(struct dentry *old_dentry, struct path *new_dir, + struct dentry *new_dentry); +extern int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata); +extern void yama_task_free(struct task_struct *task); +extern int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, + unsigned long arg4, unsigned long arg5); +#else +static inline int yama_ptrace_access_check(struct task_struct *child, + unsigned int mode) +{ + return 0; +} + +static inline int yama_ptrace_traceme(struct task_struct *parent) +{ + return 0; +} + +static inline int yama_path_link(struct dentry *old_dentry, + struct path *new_dir, + struct dentry *new_dentry) +{ + return 0; +} + +static inline int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata) +{ + return 0; +} + +static inline void yama_task_free(struct task_struct *task) +{ +} + +static inline int yama_task_prctl(int option, unsigned long arg2, + unsigned long arg3, unsigned long arg4, + unsigned long arg5) +{ + return -ENOSYS; +} +#endif /* CONFIG_SECURITY_YAMA */ + #endif /* ! __LINUX_SECURITY_H */ --- linux-3.5.0.orig/include/linux/memory.h +++ linux-3.5.0/include/linux/memory.h @@ -19,7 +19,7 @@ #include #include -#define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) +#define MIN_MEMORY_BLOCK_SIZE (1UL << SECTION_SIZE_BITS) struct memory_block { unsigned long start_section_nr; --- linux-3.5.0.orig/include/linux/console.h +++ linux-3.5.0/include/linux/console.h @@ -77,7 +77,9 @@ int con_is_bound(const struct consw *csw); int register_con_driver(const struct consw *csw, int first, int last); int unregister_con_driver(const struct consw *csw); +int do_unregister_con_driver(const struct consw *csw); int take_over_console(const struct consw *sw, int first, int last, int deflt); +int do_take_over_console(const struct consw *sw, int first, int last, int deflt); void give_up_console(const struct consw *sw); #ifdef CONFIG_HW_CONSOLE int con_debug_enter(struct vc_data *vc); --- linux-3.5.0.orig/include/linux/net.h +++ linux-3.5.0/include/linux/net.h @@ -72,6 +72,7 @@ #define SOCK_NOSPACE 2 #define SOCK_PASSCRED 3 #define SOCK_PASSSEC 4 +#define SOCK_EXTERNALLY_ALLOCATED 5 #ifndef ARCH_HAS_SOCKET_TYPES /** --- linux-3.5.0.orig/include/linux/kthread.h +++ linux-3.5.0/include/linux/kthread.h @@ -49,8 +49,6 @@ * can be queued and flushed using queue/flush_kthread_work() * respectively. Queued kthread_works are processed by a kthread * running kthread_worker_fn(). - * - * A kthread_work can't be freed while it is executing. */ struct kthread_work; typedef void (*kthread_work_func_t)(struct kthread_work *work); @@ -59,15 +57,14 @@ spinlock_t lock; struct list_head work_list; struct task_struct *task; + struct kthread_work *current_work; }; struct kthread_work { struct list_head node; kthread_work_func_t func; wait_queue_head_t done; - atomic_t flushing; - int queue_seq; - int done_seq; + struct kthread_worker *worker; }; #define KTHREAD_WORKER_INIT(worker) { \ @@ -79,7 +76,6 @@ .node = LIST_HEAD_INIT((work).node), \ .func = (fn), \ .done = __WAIT_QUEUE_HEAD_INITIALIZER((work).done), \ - .flushing = ATOMIC_INIT(0), \ } #define DEFINE_KTHREAD_WORKER(worker) \ --- linux-3.5.0.orig/include/linux/swapops.h +++ linux-3.5.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-3.5.0.orig/include/linux/spinlock_up.h +++ linux-3.5.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-3.5.0.orig/include/linux/if_cablemodem.h +++ linux-3.5.0/include/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-3.5.0.orig/include/linux/audit.h +++ linux-3.5.0/include/linux/audit.h @@ -106,6 +106,7 @@ #define AUDIT_MMAP 1323 /* Record showing descriptor and flags in mmap */ #define AUDIT_NETFILTER_PKT 1324 /* Packets traversing netfilter chains */ #define AUDIT_NETFILTER_CFG 1325 /* Netfilter chain modifications */ +#define AUDIT_SECCOMP 1326 /* Secure Computing event */ #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ @@ -480,7 +481,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) @@ -510,7 +511,8 @@ static inline void audit_seccomp(unsigned long syscall, long signr, int code) { - if (unlikely(!audit_dummy_context())) + /* Force a record to be reported if a signal was delivered. */ + if (signr || unlikely(!audit_dummy_context())) __audit_seccomp(syscall, signr, code); } --- linux-3.5.0.orig/include/linux/memblock.h +++ linux-3.5.0/include/linux/memblock.h @@ -57,6 +57,7 @@ int memblock_remove(phys_addr_t base, phys_addr_t size); int memblock_free(phys_addr_t base, phys_addr_t size); int memblock_reserve(phys_addr_t base, phys_addr_t size); +void memblock_trim_memory(phys_addr_t align); #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn, --- linux-3.5.0.orig/include/linux/pps_kernel.h +++ linux-3.5.0/include/linux/pps_kernel.h @@ -43,7 +43,7 @@ int event, void *data); /* PPS echo function */ struct module *owner; - struct device *dev; + struct device *dev; /* Parent device for device_create */ }; struct pps_event_time { @@ -69,6 +69,7 @@ wait_queue_head_t queue; /* PPS event queue */ unsigned int id; /* PPS source unique ID */ + void const *lookup_cookie; /* pps_lookup_dev only */ struct cdev cdev; struct device *dev; struct fasync_struct *async_queue; /* fasync method */ @@ -82,16 +83,26 @@ extern struct device_attribute pps_attrs[]; /* + * Internal functions. + * + * These are not actually part of the exported API, but this is a + * convenient header file to put them in. + */ + +extern int pps_register_cdev(struct pps_device *pps); +extern void pps_unregister_cdev(struct pps_device *pps); + +/* * Exported functions */ extern struct pps_device *pps_register_source( struct pps_source_info *info, int default_params); extern void pps_unregister_source(struct pps_device *pps); -extern int pps_register_cdev(struct pps_device *pps); -extern void pps_unregister_cdev(struct pps_device *pps); extern void pps_event(struct pps_device *pps, struct pps_event_time *ts, int event, void *data); +/* Look up a pps device by magic cookie */ +struct pps_device *pps_lookup_dev(void const *cookie); static inline void timespec_to_pps_ktime(struct pps_ktime *kt, struct timespec ts) --- linux-3.5.0.orig/include/linux/mempolicy.h +++ linux-3.5.0/include/linux/mempolicy.h @@ -137,16 +137,6 @@ __mpol_put(pol); } -extern struct mempolicy *__mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol); -static inline struct mempolicy *mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol) -{ - if (!frompol) - return frompol; - return __mpol_cond_copy(tompol, frompol); -} - extern struct mempolicy *__mpol_dup(struct mempolicy *pol); static inline struct mempolicy *mpol_dup(struct mempolicy *pol) { @@ -188,7 +178,7 @@ struct shared_policy { struct rb_root root; - spinlock_t lock; + struct mutex mutex; }; void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol); @@ -270,12 +260,6 @@ { } -static inline struct mempolicy *mpol_cond_copy(struct mempolicy *to, - struct mempolicy *from) -{ - return from; -} - static inline void mpol_get(struct mempolicy *pol) { } --- linux-3.5.0.orig/include/linux/auto_fs.h +++ linux-3.5.0/include/linux/auto_fs.h @@ -31,25 +31,17 @@ #define AUTOFS_MIN_PROTO_VERSION AUTOFS_PROTO_VERSION /* - * Architectures where both 32- and 64-bit binaries can be executed - * on 64-bit kernels need this. This keeps the structure format - * uniform, and makes sure the wait_queue_token isn't too big to be - * passed back down to the kernel. - * - * This assumes that on these architectures: - * mode 32 bit 64 bit - * ------------------------- - * int 32 bit 32 bit - * long 32 bit 64 bit - * - * If so, 32-bit user-space code should be backwards compatible. + * The wait_queue_token (autofs_wqt_t) is part of a structure which is passed + * back to the kernel via ioctl from userspace. On architectures where 32- and + * 64-bit userspace binaries can be executed it's important that the size of + * autofs_wqt_t stays constant between 32- and 64-bit Linux kernels so that we + * do not break the binary ABI interface by changing the structure size. */ -#if defined(__sparc__) || defined(__mips__) || defined(__x86_64__) \ - || defined(__powerpc__) || defined(__s390__) -typedef unsigned int autofs_wqt_t; -#else +#if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */ typedef unsigned long autofs_wqt_t; +#else +typedef unsigned int autofs_wqt_t; #endif /* Packet types */ --- linux-3.5.0.orig/include/linux/kobject.h +++ linux-3.5.0/include/linux/kobject.h @@ -224,7 +224,7 @@ static inline __printf(2, 3) int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) -{ return 0; } +{ return -ENOMEM; } static inline int kobject_action_type(const char *buf, size_t count, enum kobject_action *type) --- linux-3.5.0.orig/include/linux/hugetlb.h +++ linux-3.5.0/include/linux/hugetlb.h @@ -152,8 +152,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); static inline int is_file_hugepages(struct file *file) @@ -170,8 +169,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) { return ERR_PTR(-ENOSYS); } @@ -302,7 +301,7 @@ return hstates[index].order + PAGE_SHIFT; } -#else +#else /* CONFIG_HUGETLB_PAGE */ struct hstate {}; #define alloc_huge_page_node(h, nid) NULL #define alloc_bootmem_huge_page(h) NULL --- linux-3.5.0.orig/include/linux/libata.h +++ linux-3.5.0/include/linux/libata.h @@ -393,6 +393,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 */ --- linux-3.5.0.orig/include/linux/hid.h +++ linux-3.5.0/include/linux/hid.h @@ -200,6 +200,7 @@ #define HID_UP_DIGITIZER 0x000d0000 #define HID_UP_PID 0x000f0000 #define HID_UP_HPVENDOR 0xff7f0000 +#define HID_UP_HPVENDOR2 0xff010000 #define HID_UP_MSVENDOR 0xff000000 #define HID_UP_CUSTOM 0x00ff0000 #define HID_UP_LOGIVENDOR 0xffbc0000 --- linux-3.5.0.orig/include/linux/module.h +++ linux-3.5.0/include/linux/module.h @@ -196,11 +196,11 @@ struct module *source, *target; }; -enum module_state -{ - MODULE_STATE_LIVE, - MODULE_STATE_COMING, - MODULE_STATE_GOING, +enum module_state { + MODULE_STATE_LIVE, /* Normal state. */ + MODULE_STATE_COMING, /* Full formed, running module_init. */ + MODULE_STATE_GOING, /* Going away. */ + MODULE_STATE_UNFORMED, /* Still setting it up. */ }; /** --- linux-3.5.0.orig/include/linux/virtio_console.h +++ linux-3.5.0/include/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-3.5.0.orig/include/linux/init.h +++ linux-3.5.0/include/linux/init.h @@ -196,6 +196,7 @@ #define core_initcall(fn) __define_initcall("1",fn,1) #define core_initcall_sync(fn) __define_initcall("1s",fn,1s) +#define earlyrootfs_initcall(fn) __define_initcall("earlyrootfs",fn,rootfs) #define postcore_initcall(fn) __define_initcall("2",fn,2) #define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s) #define arch_initcall(fn) __define_initcall("3",fn,3) --- linux-3.5.0.orig/include/linux/time.h +++ linux-3.5.0/include/linux/time.h @@ -107,11 +107,36 @@ return ts_delta; } +#define KTIME_MAX ((s64)~((u64)1 << 63)) +#if (BITS_PER_LONG == 64) +# define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) +#else +# define KTIME_SEC_MAX LONG_MAX +#endif + /* * Returns true if the timespec is norm, false if denorm: */ -#define timespec_valid(ts) \ - (((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC)) +static inline bool timespec_valid(const struct timespec *ts) +{ + /* Dates before 1970 are bogus */ + if (ts->tv_sec < 0) + return false; + /* Can't have more nanoseconds then a second */ + if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) + return false; + return true; +} + +static inline bool timespec_valid_strict(const struct timespec *ts) +{ + if (!timespec_valid(ts)) + return false; + /* Disallow values that could overflow ktime_t */ + if ((unsigned long long)ts->tv_sec >= KTIME_SEC_MAX) + return false; + return true; +} extern void read_persistent_clock(struct timespec *ts); extern void read_boot_clock(struct timespec *ts); @@ -257,14 +282,6 @@ #endif /* __KERNEL__ */ -#define NFDBITS __NFDBITS - -#define FD_SETSIZE __FD_SETSIZE -#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp) -#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp) -#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp) -#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp) - /* * Names of the interval timers, and structure * defining a timer setting: --- linux-3.5.0.orig/include/linux/posix_types.h +++ linux-3.5.0/include/linux/posix_types.h @@ -15,26 +15,14 @@ */ /* - * Those macros may have been defined in . But we always - * use the ones here. + * This macro may have been defined in . But we always + * use the one here. */ -#undef __NFDBITS -#define __NFDBITS (8 * sizeof(unsigned long)) - #undef __FD_SETSIZE #define __FD_SETSIZE 1024 -#undef __FDSET_LONGS -#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS) - -#undef __FDELT -#define __FDELT(d) ((d) / __NFDBITS) - -#undef __FDMASK -#define __FDMASK(d) (1UL << ((d) % __NFDBITS)) - typedef struct { - unsigned long fds_bits [__FDSET_LONGS]; + unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))]; } __kernel_fd_set; /* Type of a signal handler. */ --- linux-3.5.0.orig/include/linux/pci_ids.h +++ linux-3.5.0/include/linux/pci_ids.h @@ -752,6 +752,7 @@ #define PCI_DEVICE_ID_HP_CISSD 0x3238 #define PCI_DEVICE_ID_HP_CISSE 0x323a #define PCI_DEVICE_ID_HP_CISSF 0x323b +#define PCI_DEVICE_ID_HP_CISSH 0x323c #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 #define PCI_VENDOR_ID_PCTECH 0x1042 @@ -1565,6 +1566,7 @@ #define PCI_DEVICE_ID_RICOH_RL5C476 0x0476 #define PCI_DEVICE_ID_RICOH_RL5C478 0x0478 #define PCI_DEVICE_ID_RICOH_R5C822 0x0822 +#define PCI_DEVICE_ID_RICOH_R5CE822 0xe822 #define PCI_DEVICE_ID_RICOH_R5CE823 0xe823 #define PCI_DEVICE_ID_RICOH_R5C832 0x0832 #define PCI_DEVICE_ID_RICOH_R5C843 0x0843 @@ -1600,6 +1602,7 @@ #define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x5334 #define PCI_VENDOR_ID_MARVELL 0x11ab +#define PCI_VENDOR_ID_MARVELL_EXT 0x1b4b #define PCI_DEVICE_ID_MARVELL_GT64111 0x4146 #define PCI_DEVICE_ID_MARVELL_GT64260 0x6430 #define PCI_DEVICE_ID_MARVELL_MV64360 0x6460 @@ -1846,7 +1849,6 @@ #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081 #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082 #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050 -#define PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL 0x2530 #define PCI_VENDOR_ID_RADISYS 0x1331 @@ -2148,7 +2150,7 @@ #define PCI_DEVICE_ID_TIGON3_5704S 0x16a8 #define PCI_DEVICE_ID_NX2_57800_VF 0x16a9 #define PCI_DEVICE_ID_NX2_5706S 0x16aa -#define PCI_DEVICE_ID_NX2_57840_MF 0x16ab +#define PCI_DEVICE_ID_NX2_57840_MF 0x16a4 #define PCI_DEVICE_ID_NX2_5708S 0x16ac #define PCI_DEVICE_ID_NX2_57840_VF 0x16ad #define PCI_DEVICE_ID_NX2_57810_MF 0x16ae --- linux-3.5.0.orig/include/linux/screen_info.h +++ linux-3.5.0/include/linux/screen_info.h @@ -67,6 +67,7 @@ #define VIDEO_TYPE_EFI 0x70 /* EFI graphic mode */ #define VIDEO_FLAGS_NOCURSOR (1 << 0) /* The video mode has no cursor set */ +#define VIDEO_FLAGS_HANDOFF (1 << 1) /* Video buffer is alredy painted */ #ifdef __KERNEL__ extern struct screen_info screen_info; --- linux-3.5.0.orig/include/linux/mmzone.h +++ linux-3.5.0/include/linux/mmzone.h @@ -732,7 +732,7 @@ unsigned long size, enum memmap_context context); -extern void lruvec_init(struct lruvec *lruvec, struct zone *zone); +extern void lruvec_init(struct lruvec *lruvec); static inline struct zone *lruvec_zone(struct lruvec *lruvec) { --- linux-3.5.0.orig/include/linux/unix_diag.h +++ linux-3.5.0/include/linux/unix_diag.h @@ -38,9 +38,11 @@ UNIX_DIAG_RQLEN, UNIX_DIAG_MEMINFO, - 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-3.5.0.orig/include/linux/serial_core.h +++ linux-3.5.0/include/linux/serial_core.h @@ -47,7 +47,11 @@ #define PORT_U6_16550A 19 /* ST-Ericsson U6xxx internal UART */ #define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */ #define PORT_XR17D15X 21 /* Exar XR17D15x UART */ -#define PORT_MAX_8250 21 /* max port ID */ +#define PORT_BRCM_TRUMANAGE 22 +#define PORT_ALTR_16550_F32 23 /* Altera 16550 UART with 32 FIFOs */ +#define PORT_ALTR_16550_F64 24 /* Altera 16550 UART with 64 FIFOs */ +#define PORT_ALTR_16550_F128 25 /* Altera 16550 UART with 128 FIFOs */ +#define PORT_MAX_8250 25 /* max port ID */ /* * ARM specific type numbers. These are not currently guaranteed --- linux-3.5.0.orig/include/linux/ata.h +++ linux-3.5.0/include/linux/ata.h @@ -937,7 +937,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-3.5.0.orig/include/linux/snmp.h +++ linux-3.5.0/include/linux/snmp.h @@ -208,7 +208,6 @@ LINUX_MIB_TCPDSACKOFOSENT, /* TCPDSACKOfoSent */ LINUX_MIB_TCPDSACKRECV, /* TCPDSACKRecv */ LINUX_MIB_TCPDSACKOFORECV, /* TCPDSACKOfoRecv */ - LINUX_MIB_TCPABORTONSYN, /* TCPAbortOnSyn */ LINUX_MIB_TCPABORTONDATA, /* TCPAbortOnData */ LINUX_MIB_TCPABORTONCLOSE, /* TCPAbortOnClose */ LINUX_MIB_TCPABORTONMEMORY, /* TCPAbortOnMemory */ @@ -234,6 +233,8 @@ LINUX_MIB_TCPREQQFULLDROP, /* TCPReqQFullDrop */ LINUX_MIB_TCPRETRANSFAIL, /* TCPRetransFail */ LINUX_MIB_TCPRCVCOALESCE, /* TCPRcvCoalesce */ + LINUX_MIB_TCPCHALLENGEACK, /* TCPChallengeACK */ + LINUX_MIB_TCPSYNCHALLENGE, /* TCPSYNChallenge */ __LINUX_MIB_MAX }; --- linux-3.5.0.orig/include/linux/syslog.h +++ linux-3.5.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-3.5.0.orig/include/linux/clk.h +++ linux-3.5.0/include/linux/clk.h @@ -310,4 +310,23 @@ int clk_add_alias(const char *alias, const char *alias_dev_name, char *id, struct device *dev); +struct device_node; +struct of_phandle_args; + +#ifdef CONFIG_OF +struct clk *of_clk_get(struct device_node *np, int index); +struct clk *of_clk_get_by_name(struct device_node *np, const char *name); +struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); +#else +static inline struct clk *of_clk_get(struct device_node *np, int index) +{ + return NULL; +} +static inline struct clk *of_clk_get_by_name(struct device_node *np, + const char *name) +{ + return NULL; +} +#endif + #endif --- linux-3.5.0.orig/include/linux/dcache.h +++ linux-3.5.0/include/linux/dcache.h @@ -206,6 +206,8 @@ #define DCACHE_MANAGED_DENTRY \ (DCACHE_MOUNTED|DCACHE_NEED_AUTOMOUNT|DCACHE_MANAGE_TRANSIT) +#define DCACHE_DENTRY_KILLED 0x100000 + extern seqlock_t rename_lock; static inline int dname_external(struct dentry *dentry) --- linux-3.5.0.orig/include/linux/nfs_fs.h +++ linux-3.5.0/include/linux/nfs_fs.h @@ -265,11 +265,6 @@ return NFS_SERVER(inode)->nfs_client->rpc_ops; } -static inline __be32 *NFS_COOKIEVERF(const struct inode *inode) -{ - return NFS_I(inode)->cookieverf; -} - static inline unsigned NFS_MINATTRTIMEO(const struct inode *inode) { struct nfs_server *nfss = NFS_SERVER(inode); --- linux-3.5.0.orig/include/linux/preempt.h +++ linux-3.5.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-3.5.0.orig/include/linux/usb.h +++ linux-3.5.0/include/linux/usb.h @@ -556,7 +556,6 @@ struct usb3_lpm_parameters u1_params; struct usb3_lpm_parameters u2_params; unsigned lpm_disable_count; - unsigned hub_initiated_lpm_disable_count; }; #define to_usb_device(d) container_of(d, struct usb_device, dev) @@ -629,6 +628,9 @@ extern int usb_unlocked_disable_lpm(struct usb_device *udev); extern void usb_unlocked_enable_lpm(struct usb_device *udev); +extern int usb_disable_ltm(struct usb_device *udev); +extern void usb_enable_ltm(struct usb_device *udev); + /*-------------------------------------------------------------------------*/ /* for drivers using iso endpoints */ @@ -828,6 +830,27 @@ .bInterfaceClass = (cl), \ .bInterfaceSubClass = (sc), \ .bInterfaceProtocol = (pr) + +/** + * USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces + * @vend: the 16 bit USB Vendor ID + * @cl: bInterfaceClass value + * @sc: bInterfaceSubClass value + * @pr: bInterfaceProtocol value + * + * This macro is used to create a struct usb_device_id that matches a + * specific vendor with a specific class of interfaces. + * + * This is especially useful when explicitly matching devices that have + * vendor specific bDeviceClass values, but standards-compliant interfaces. + */ +#define USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (vend), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr) /* ----------------------------------------------------------------------- */ --- linux-3.5.0.orig/include/linux/mmu_notifier.h +++ linux-3.5.0/include/linux/mmu_notifier.h @@ -4,6 +4,7 @@ #include #include #include +#include struct mmu_notifier; struct mmu_notifier_ops; --- linux-3.5.0.orig/include/linux/usb/serial.h +++ linux-3.5.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-3.5.0.orig/include/linux/usb/ch9.h +++ linux-3.5.0/include/linux/usb/ch9.h @@ -152,6 +152,12 @@ #define USB_INTRF_FUNC_SUSPEND_LP (1 << (8 + 0)) #define USB_INTRF_FUNC_SUSPEND_RW (1 << (8 + 1)) +/* + * Interface status, Figure 9-5 USB 3.0 spec + */ +#define USB_INTRF_STAT_FUNC_RW_CAP 1 +#define USB_INTRF_STAT_FUNC_RW 2 + #define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */ /* Bit array elements as returned by the USB_REQ_GET_STATUS request. */ --- linux-3.5.0.orig/include/linux/usb/audio.h +++ linux-3.5.0/include/linux/usb/audio.h @@ -384,14 +384,16 @@ int protocol) { __u8 control_size = uac_processing_unit_bControlSize(desc, protocol); - return desc->baSourceID[desc->bNrInPins + control_size]; + return *(uac_processing_unit_bmControls(desc, protocol) + + control_size); } static inline __u8 *uac_processing_unit_specific(struct uac_processing_unit_descriptor *desc, int protocol) { __u8 control_size = uac_processing_unit_bControlSize(desc, protocol); - return &desc->baSourceID[desc->bNrInPins + control_size + 1]; + return uac_processing_unit_bmControls(desc, protocol) + + control_size + 1; } /* 4.5.2 Class-Specific AS Interface Descriptor */ --- linux-3.5.0.orig/include/linux/ceph/libceph.h +++ linux-3.5.0/include/linux/ceph/libceph.h @@ -132,7 +132,7 @@ u32 supported_features; u32 required_features; - struct ceph_messenger *msgr; /* messenger instance */ + struct ceph_messenger msgr; /* messenger instance */ struct ceph_mon_client monc; struct ceph_osd_client osdc; --- linux-3.5.0.orig/include/linux/ceph/auth.h +++ linux-3.5.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-3.5.0.orig/include/linux/ceph/messenger.h +++ linux-3.5.0/include/linux/ceph/messenger.h @@ -31,9 +31,6 @@ int (*verify_authorizer_reply) (struct ceph_connection *con, int len); int (*invalidate_authorizer)(struct ceph_connection *con); - /* protocol version mismatch */ - void (*bad_proto) (struct ceph_connection *con); - /* there was some error on the socket (disconnect, whatever) */ void (*fault) (struct ceph_connection *con); @@ -53,6 +50,7 @@ struct ceph_entity_inst inst; /* my name+address */ struct ceph_entity_addr my_enc_addr; + atomic_t stopping; bool nocrc; /* @@ -80,7 +78,10 @@ unsigned nr_pages; /* size of page array */ unsigned page_alignment; /* io offset in first page */ struct ceph_pagelist *pagelist; /* instead of pages */ + + struct ceph_connection *con; struct list_head list_head; + struct kref kref; struct bio *bio; /* instead of pages/pagelist */ struct bio *bio_iter; /* bio iterator */ @@ -106,23 +107,6 @@ #define MAX_DELAY_INTERVAL (5 * 60 * HZ) /* - * ceph_connection state bit flags - */ -#define LOSSYTX 0 /* we can close channel or drop messages on errors */ -#define CONNECTING 1 -#define NEGOTIATING 2 -#define KEEPALIVE_PENDING 3 -#define WRITE_PENDING 4 /* we have data ready to send */ -#define STANDBY 8 /* no outgoing messages, socket closed. we keep - * the ceph_connection around to maintain shared - * state with the peer. */ -#define CLOSED 10 /* we've closed the connection */ -#define SOCK_CLOSED 11 /* socket state changed to closed */ -#define OPENING 13 /* open connection w/ (possibly new) peer */ -#define DEAD 14 /* dead, about to kfree */ -#define BACKOFF 15 - -/* * A single connection with another host. * * We maintain a queue of outgoing messages, and some session state to @@ -131,18 +115,22 @@ */ struct ceph_connection { void *private; - atomic_t nref; const struct ceph_connection_operations *ops; struct ceph_messenger *msgr; + + atomic_t sock_state; struct socket *sock; - unsigned long state; /* connection state (see flags above) */ + struct ceph_entity_addr peer_addr; /* peer address */ + struct ceph_entity_addr peer_addr_for_me; + + unsigned long flags; + unsigned long state; const char *error_msg; /* error message, if any */ - struct ceph_entity_addr peer_addr; /* peer address */ struct ceph_entity_name peer_name; /* peer name */ - struct ceph_entity_addr peer_addr_for_me; + unsigned peer_features; u32 connect_seq; /* identify the most recent connection attempt for this connection, client */ @@ -207,24 +195,26 @@ extern void ceph_msgr_exit(void); extern void ceph_msgr_flush(void); -extern struct ceph_messenger *ceph_messenger_create( - struct ceph_entity_addr *myaddr, - u32 features, u32 required); -extern void ceph_messenger_destroy(struct ceph_messenger *); - -extern void ceph_con_init(struct ceph_messenger *msgr, - struct ceph_connection *con); +extern void ceph_messenger_init(struct ceph_messenger *msgr, + struct ceph_entity_addr *myaddr, + u32 supported_features, + u32 required_features, + bool nocrc); + +extern void ceph_con_init(struct ceph_connection *con, void *private, + const struct ceph_connection_operations *ops, + struct ceph_messenger *msgr); extern void ceph_con_open(struct ceph_connection *con, + __u8 entity_type, __u64 entity_num, struct ceph_entity_addr *addr); extern bool ceph_con_opened(struct ceph_connection *con); extern void ceph_con_close(struct ceph_connection *con); extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); -extern void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg); -extern void ceph_con_revoke_message(struct ceph_connection *con, - struct ceph_msg *msg); + +extern void ceph_msg_revoke(struct ceph_msg *msg); +extern void ceph_msg_revoke_incoming(struct ceph_msg *msg); + extern void ceph_con_keepalive(struct ceph_connection *con); -extern struct ceph_connection *ceph_con_get(struct ceph_connection *con); -extern void ceph_con_put(struct ceph_connection *con); extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags, bool can_fail); --- linux-3.5.0.orig/include/linux/ceph/osdmap.h +++ linux-3.5.0/include/linux/ceph/osdmap.h @@ -109,9 +109,9 @@ extern void ceph_osdmap_destroy(struct ceph_osdmap *map); /* calculate mapping of a file extent to an object */ -extern void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, - u64 off, u64 *plen, - u64 *bno, u64 *oxoff, u64 *oxlen); +extern int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, + u64 off, u64 *plen, + u64 *bno, u64 *oxoff, u64 *oxlen); /* calculate mapping of object to a placement group */ extern int ceph_calc_object_layout(struct ceph_object_layout *ol, --- linux-3.5.0.orig/include/linux/ceph/msgpool.h +++ linux-3.5.0/include/linux/ceph/msgpool.h @@ -11,10 +11,11 @@ struct ceph_msgpool { const char *name; mempool_t *pool; + int type; /* preallocated message type */ int front_len; /* preallocated payload size */ }; -extern int ceph_msgpool_init(struct ceph_msgpool *pool, +extern int ceph_msgpool_init(struct ceph_msgpool *pool, int type, int front_len, int size, bool blocking, const char *name); extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); --- linux-3.5.0.orig/include/linux/ceph/osd_client.h +++ linux-3.5.0/include/linux/ceph/osd_client.h @@ -207,7 +207,7 @@ extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg); -extern void ceph_calc_raw_layout(struct ceph_osd_client *osdc, +extern int ceph_calc_raw_layout(struct ceph_osd_client *osdc, struct ceph_file_layout *layout, u64 snapid, u64 off, u64 *plen, u64 *bno, --- linux-3.5.0.orig/include/linux/ceph/mon_client.h +++ linux-3.5.0/include/linux/ceph/mon_client.h @@ -70,7 +70,7 @@ bool hunting; int cur_mon; /* last monitor i contacted */ unsigned long sub_sent, sub_renew_after; - struct ceph_connection *con; + struct ceph_connection con; bool have_fsid; /* pending generic requests */ --- linux-3.5.0.orig/include/linux/mtd/nand.h +++ linux-3.5.0/include/linux/mtd/nand.h @@ -212,9 +212,6 @@ #define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT) \ && (chip->page_shift > 9)) -/* Mask to zero out the chip options, which come from the id table */ -#define NAND_CHIPOPTIONS_MSK 0x0000ffff - /* Non chip related options */ /* This option skips the bbt scan during initialization. */ #define NAND_SKIP_BBTSCAN 0x00010000 --- linux-3.5.0.orig/include/linux/mfd/rtsx_common.h +++ linux-3.5.0/include/linux/mfd/rtsx_common.h @@ -0,0 +1,51 @@ +/* Driver for Realtek driver-based card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_COMMON_H +#define __RTSX_COMMON_H + +#define DRV_NAME_RTSX_PCI "rtsx_pci" +#define DRV_NAME_RTSX_PCI_SDMMC "rtsx_pci_sdmmc" +#define DRV_NAME_RTSX_PCI_MS "rtsx_pci_ms" + +#define RTSX_REG_PAIR(addr, val) (((u32)(addr) << 16) | (u8)(val)) + +#define RTSX_SSC_DEPTH_4M 0x01 +#define RTSX_SSC_DEPTH_2M 0x02 +#define RTSX_SSC_DEPTH_1M 0x03 +#define RTSX_SSC_DEPTH_500K 0x04 +#define RTSX_SSC_DEPTH_250K 0x05 + +#define RTSX_SD_CARD 0 +#define RTSX_MS_CARD 1 + +#define CLK_TO_DIV_N 0 +#define DIV_N_TO_CLK 1 + +struct platform_device; + +struct rtsx_slot { + struct platform_device *p_dev; + void (*card_event)(struct platform_device *p_dev); +}; + +#endif --- linux-3.5.0.orig/include/linux/mfd/rtsx_pci.h +++ linux-3.5.0/include/linux/mfd/rtsx_pci.h @@ -0,0 +1,818 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_PCI_H +#define __RTSX_PCI_H + +#include +#include + +#include "rtsx_common.h" + +#define MAX_RW_REG_CNT 1024 + +/* PCI Operation Register Address */ +#define RTSX_HCBAR 0x00 +#define RTSX_HCBCTLR 0x04 +#define RTSX_HDBAR 0x08 +#define RTSX_HDBCTLR 0x0C +#define RTSX_HAIMR 0x10 +#define RTSX_BIPR 0x14 +#define RTSX_BIER 0x18 + +/* Host command buffer control register */ +#define STOP_CMD (0x01 << 28) + +/* Host data buffer control register */ +#define SDMA_MODE 0x00 +#define ADMA_MODE (0x02 << 26) +#define STOP_DMA (0x01 << 28) +#define TRIG_DMA (0x01 << 31) + +/* Host access internal memory register */ +#define HAIMR_TRANS_START (0x01 << 31) +#define HAIMR_READ 0x00 +#define HAIMR_WRITE (0x01 << 30) +#define HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ) +#define HAIMR_WRITE_START (HAIMR_TRANS_START | HAIMR_WRITE) +#define HAIMR_TRANS_END (HAIMR_TRANS_START) + +/* Bus interrupt pending register */ +#define CMD_DONE_INT (1 << 31) +#define DATA_DONE_INT (1 << 30) +#define TRANS_OK_INT (1 << 29) +#define TRANS_FAIL_INT (1 << 28) +#define XD_INT (1 << 27) +#define MS_INT (1 << 26) +#define SD_INT (1 << 25) +#define GPIO0_INT (1 << 24) +#define OC_INT (1 << 23) +#define SD_WRITE_PROTECT (1 << 19) +#define XD_EXIST (1 << 18) +#define MS_EXIST (1 << 17) +#define SD_EXIST (1 << 16) +#define DELINK_INT GPIO0_INT +#define MS_OC_INT (1 << 23) +#define SD_OC_INT (1 << 22) + +#define CARD_INT (XD_INT | MS_INT | SD_INT) +#define NEED_COMPLETE_INT (DATA_DONE_INT | TRANS_OK_INT | TRANS_FAIL_INT) +#define RTSX_INT (CMD_DONE_INT | NEED_COMPLETE_INT | \ + CARD_INT | GPIO0_INT | OC_INT) + +#define CARD_EXIST (XD_EXIST | MS_EXIST | SD_EXIST) + +/* Bus interrupt enable register */ +#define CMD_DONE_INT_EN (1 << 31) +#define DATA_DONE_INT_EN (1 << 30) +#define TRANS_OK_INT_EN (1 << 29) +#define TRANS_FAIL_INT_EN (1 << 28) +#define XD_INT_EN (1 << 27) +#define MS_INT_EN (1 << 26) +#define SD_INT_EN (1 << 25) +#define GPIO0_INT_EN (1 << 24) +#define OC_INT_EN (1 << 23) +#define DELINK_INT_EN GPIO0_INT_EN +#define MS_OC_INT_EN (1 << 23) +#define SD_OC_INT_EN (1 << 22) + +#define READ_REG_CMD 0 +#define WRITE_REG_CMD 1 +#define CHECK_REG_CMD 2 + +/* + * macros for easy use + */ +#define rtsx_pci_writel(pcr, reg, value) \ + iowrite32(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readl(pcr, reg) \ + ioread32((pcr)->remap_addr + reg) +#define rtsx_pci_writew(pcr, reg, value) \ + iowrite16(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readw(pcr, reg) \ + ioread16((pcr)->remap_addr + reg) +#define rtsx_pci_writeb(pcr, reg, value) \ + iowrite8(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readb(pcr, reg) \ + ioread8((pcr)->remap_addr + reg) + +#define rtsx_pci_read_config_byte(pcr, where, val) \ + pci_read_config_byte((pcr)->pci, where, val) + +#define rtsx_pci_write_config_byte(pcr, where, val) \ + pci_write_config_byte((pcr)->pci, where, val) + +#define rtsx_pci_read_config_dword(pcr, where, val) \ + pci_read_config_dword((pcr)->pci, where, val) + +#define rtsx_pci_write_config_dword(pcr, where, val) \ + pci_write_config_dword((pcr)->pci, where, val) + +#define STATE_TRANS_NONE 0 +#define STATE_TRANS_CMD 1 +#define STATE_TRANS_BUF 2 +#define STATE_TRANS_SG 3 + +#define TRANS_NOT_READY 0 +#define TRANS_RESULT_OK 1 +#define TRANS_RESULT_FAIL 2 +#define TRANS_NO_DEVICE 3 + +#define RTSX_RESV_BUF_LEN 4096 +#define HOST_CMDS_BUF_LEN 1024 +#define HOST_SG_TBL_BUF_LEN (RTSX_RESV_BUF_LEN - HOST_CMDS_BUF_LEN) +#define HOST_SG_TBL_ITEMS (HOST_SG_TBL_BUF_LEN / 8) +#define MAX_SG_ITEM_LEN 0x80000 + +#define HOST_TO_DEVICE 0 +#define DEVICE_TO_HOST 1 + +#define MAX_PHASE 31 +#define RX_TUNING_CNT 3 + +/* SG descriptor */ +#define SG_INT 0x04 +#define SG_END 0x02 +#define SG_VALID 0x01 + +#define SG_NO_OP 0x00 +#define SG_TRANS_DATA (0x02 << 4) +#define SG_LINK_DESC (0x03 << 4) + +/* Output voltage */ +#define OUTPUT_3V3 0 +#define OUTPUT_1V8 1 + +/* Card Clock Enable Register */ +#define SD_CLK_EN 0x04 +#define MS_CLK_EN 0x08 + +/* Card Select Register */ +#define SD_MOD_SEL 2 +#define MS_MOD_SEL 3 + +/* Card Output Enable Register */ +#define SD_OUTPUT_EN 0x04 +#define MS_OUTPUT_EN 0x08 + +/* CARD_SHARE_MODE */ +#define CARD_SHARE_MASK 0x0F +#define CARD_SHARE_MULTI_LUN 0x00 +#define CARD_SHARE_NORMAL 0x00 +#define CARD_SHARE_48_SD 0x04 +#define CARD_SHARE_48_MS 0x08 +/* CARD_SHARE_MODE for barossa */ +#define CARD_SHARE_BAROSSA_SD 0x01 +#define CARD_SHARE_BAROSSA_MS 0x02 + +/* SD30_DRIVE_SEL */ +#define DRIVER_TYPE_A 0x05 +#define DRIVER_TYPE_B 0x03 +#define DRIVER_TYPE_C 0x02 +#define DRIVER_TYPE_D 0x01 + +/* FPDCTL */ +#define SSC_POWER_DOWN 0x01 +#define SD_OC_POWER_DOWN 0x02 +#define ALL_POWER_DOWN 0x07 +#define OC_POWER_DOWN 0x06 + +/* CLK_CTL */ +#define CHANGE_CLK 0x01 + +/* LDO_CTL */ +#define BPP_ASIC_1V7 0x00 +#define BPP_ASIC_1V8 0x01 +#define BPP_ASIC_1V9 0x02 +#define BPP_ASIC_2V0 0x03 +#define BPP_ASIC_2V7 0x04 +#define BPP_ASIC_2V8 0x05 +#define BPP_ASIC_3V2 0x06 +#define BPP_ASIC_3V3 0x07 +#define BPP_REG_TUNED18 0x07 +#define BPP_TUNED18_SHIFT_8402 5 +#define BPP_TUNED18_SHIFT_8411 4 +#define BPP_PAD_MASK 0x04 +#define BPP_PAD_3V3 0x04 +#define BPP_PAD_1V8 0x00 +#define BPP_LDO_POWB 0x03 +#define BPP_LDO_ON 0x00 +#define BPP_LDO_SUSPEND 0x02 +#define BPP_LDO_OFF 0x03 + +/* CD_PAD_CTL */ +#define CD_DISABLE_MASK 0x07 +#define MS_CD_DISABLE 0x04 +#define SD_CD_DISABLE 0x02 +#define XD_CD_DISABLE 0x01 +#define CD_DISABLE 0x07 +#define CD_ENABLE 0x00 +#define MS_CD_EN_ONLY 0x03 +#define SD_CD_EN_ONLY 0x05 +#define XD_CD_EN_ONLY 0x06 +#define FORCE_CD_LOW_MASK 0x38 +#define FORCE_CD_XD_LOW 0x08 +#define FORCE_CD_SD_LOW 0x10 +#define FORCE_CD_MS_LOW 0x20 +#define CD_AUTO_DISABLE 0x40 + +/* SD_STAT1 */ +#define SD_CRC7_ERR 0x80 +#define SD_CRC16_ERR 0x40 +#define SD_CRC_WRITE_ERR 0x20 +#define SD_CRC_WRITE_ERR_MASK 0x1C +#define GET_CRC_TIME_OUT 0x02 +#define SD_TUNING_COMPARE_ERR 0x01 + +/* SD_STAT2 */ +#define SD_RSP_80CLK_TIMEOUT 0x01 + +/* SD_BUS_STAT */ +#define SD_CLK_TOGGLE_EN 0x80 +#define SD_CLK_FORCE_STOP 0x40 +#define SD_DAT3_STATUS 0x10 +#define SD_DAT2_STATUS 0x08 +#define SD_DAT1_STATUS 0x04 +#define SD_DAT0_STATUS 0x02 +#define SD_CMD_STATUS 0x01 + +/* SD_PAD_CTL */ +#define SD_IO_USING_1V8 0x80 +#define SD_IO_USING_3V3 0x7F +#define TYPE_A_DRIVING 0x00 +#define TYPE_B_DRIVING 0x01 +#define TYPE_C_DRIVING 0x02 +#define TYPE_D_DRIVING 0x03 + +/* SD_SAMPLE_POINT_CTL */ +#define DDR_FIX_RX_DAT 0x00 +#define DDR_VAR_RX_DAT 0x80 +#define DDR_FIX_RX_DAT_EDGE 0x00 +#define DDR_FIX_RX_DAT_14_DELAY 0x40 +#define DDR_FIX_RX_CMD 0x00 +#define DDR_VAR_RX_CMD 0x20 +#define DDR_FIX_RX_CMD_POS_EDGE 0x00 +#define DDR_FIX_RX_CMD_14_DELAY 0x10 +#define SD20_RX_POS_EDGE 0x00 +#define SD20_RX_14_DELAY 0x08 +#define SD20_RX_SEL_MASK 0x08 + +/* SD_PUSH_POINT_CTL */ +#define DDR_FIX_TX_CMD_DAT 0x00 +#define DDR_VAR_TX_CMD_DAT 0x80 +#define DDR_FIX_TX_DAT_14_TSU 0x00 +#define DDR_FIX_TX_DAT_12_TSU 0x40 +#define DDR_FIX_TX_CMD_NEG_EDGE 0x00 +#define DDR_FIX_TX_CMD_14_AHEAD 0x20 +#define SD20_TX_NEG_EDGE 0x00 +#define SD20_TX_14_AHEAD 0x10 +#define SD20_TX_SEL_MASK 0x10 +#define DDR_VAR_SDCLK_POL_SWAP 0x01 + +/* SD_TRANSFER */ +#define SD_TRANSFER_START 0x80 +#define SD_TRANSFER_END 0x40 +#define SD_STAT_IDLE 0x20 +#define SD_TRANSFER_ERR 0x10 +/* SD Transfer Mode definition */ +#define SD_TM_NORMAL_WRITE 0x00 +#define SD_TM_AUTO_WRITE_3 0x01 +#define SD_TM_AUTO_WRITE_4 0x02 +#define SD_TM_AUTO_READ_3 0x05 +#define SD_TM_AUTO_READ_4 0x06 +#define SD_TM_CMD_RSP 0x08 +#define SD_TM_AUTO_WRITE_1 0x09 +#define SD_TM_AUTO_WRITE_2 0x0A +#define SD_TM_NORMAL_READ 0x0C +#define SD_TM_AUTO_READ_1 0x0D +#define SD_TM_AUTO_READ_2 0x0E +#define SD_TM_AUTO_TUNING 0x0F + +/* SD_VPTX_CTL / SD_VPRX_CTL */ +#define PHASE_CHANGE 0x80 +#define PHASE_NOT_RESET 0x40 + +/* SD_DCMPS_TX_CTL / SD_DCMPS_RX_CTL */ +#define DCMPS_CHANGE 0x80 +#define DCMPS_CHANGE_DONE 0x40 +#define DCMPS_ERROR 0x20 +#define DCMPS_CURRENT_PHASE 0x1F + +/* SD Configure 1 Register */ +#define SD_CLK_DIVIDE_0 0x00 +#define SD_CLK_DIVIDE_256 0xC0 +#define SD_CLK_DIVIDE_128 0x80 +#define SD_BUS_WIDTH_1BIT 0x00 +#define SD_BUS_WIDTH_4BIT 0x01 +#define SD_BUS_WIDTH_8BIT 0x02 +#define SD_ASYNC_FIFO_NOT_RST 0x10 +#define SD_20_MODE 0x00 +#define SD_DDR_MODE 0x04 +#define SD_30_MODE 0x08 + +#define SD_CLK_DIVIDE_MASK 0xC0 + +/* SD_CMD_STATE */ +#define SD_CMD_IDLE 0x80 + +/* SD_DATA_STATE */ +#define SD_DATA_IDLE 0x80 + +/* DCM_DRP_CTL */ +#define DCM_RESET 0x08 +#define DCM_LOCKED 0x04 +#define DCM_208M 0x00 +#define DCM_TX 0x01 +#define DCM_RX 0x02 + +/* DCM_DRP_TRIG */ +#define DRP_START 0x80 +#define DRP_DONE 0x40 + +/* DCM_DRP_CFG */ +#define DRP_WRITE 0x80 +#define DRP_READ 0x00 +#define DCM_WRITE_ADDRESS_50 0x50 +#define DCM_WRITE_ADDRESS_51 0x51 +#define DCM_READ_ADDRESS_00 0x00 +#define DCM_READ_ADDRESS_51 0x51 + +/* IRQSTAT0 */ +#define DMA_DONE_INT 0x80 +#define SUSPEND_INT 0x40 +#define LINK_RDY_INT 0x20 +#define LINK_DOWN_INT 0x10 + +/* DMACTL */ +#define DMA_RST 0x80 +#define DMA_BUSY 0x04 +#define DMA_DIR_TO_CARD 0x00 +#define DMA_DIR_FROM_CARD 0x02 +#define DMA_EN 0x01 +#define DMA_128 (0 << 4) +#define DMA_256 (1 << 4) +#define DMA_512 (2 << 4) +#define DMA_1024 (3 << 4) +#define DMA_PACK_SIZE_MASK 0x30 + +/* SSC_CTL1 */ +#define SSC_RSTB 0x80 +#define SSC_8X_EN 0x40 +#define SSC_FIX_FRAC 0x20 +#define SSC_SEL_1M 0x00 +#define SSC_SEL_2M 0x08 +#define SSC_SEL_4M 0x10 +#define SSC_SEL_8M 0x18 + +/* SSC_CTL2 */ +#define SSC_DEPTH_MASK 0x07 +#define SSC_DEPTH_DISALBE 0x00 +#define SSC_DEPTH_4M 0x01 +#define SSC_DEPTH_2M 0x02 +#define SSC_DEPTH_1M 0x03 +#define SSC_DEPTH_500K 0x04 +#define SSC_DEPTH_250K 0x05 + +/* System Clock Control Register */ +#define CLK_LOW_FREQ 0x01 + +/* System Clock Divider Register */ +#define CLK_DIV_1 0x01 +#define CLK_DIV_2 0x02 +#define CLK_DIV_4 0x03 +#define CLK_DIV_8 0x04 + +/* MS_CFG */ +#define SAMPLE_TIME_RISING 0x00 +#define SAMPLE_TIME_FALLING 0x80 +#define PUSH_TIME_DEFAULT 0x00 +#define PUSH_TIME_ODD 0x40 +#define NO_EXTEND_TOGGLE 0x00 +#define EXTEND_TOGGLE_CHK 0x20 +#define MS_BUS_WIDTH_1 0x00 +#define MS_BUS_WIDTH_4 0x10 +#define MS_BUS_WIDTH_8 0x18 +#define MS_2K_SECTOR_MODE 0x04 +#define MS_512_SECTOR_MODE 0x00 +#define MS_TOGGLE_TIMEOUT_EN 0x00 +#define MS_TOGGLE_TIMEOUT_DISEN 0x01 +#define MS_NO_CHECK_INT 0x02 + +/* MS_TRANS_CFG */ +#define WAIT_INT 0x80 +#define NO_WAIT_INT 0x00 +#define NO_AUTO_READ_INT_REG 0x00 +#define AUTO_READ_INT_REG 0x40 +#define MS_CRC16_ERR 0x20 +#define MS_RDY_TIMEOUT 0x10 +#define MS_INT_CMDNK 0x08 +#define MS_INT_BREQ 0x04 +#define MS_INT_ERR 0x02 +#define MS_INT_CED 0x01 + +/* MS_TRANSFER */ +#define MS_TRANSFER_START 0x80 +#define MS_TRANSFER_END 0x40 +#define MS_TRANSFER_ERR 0x20 +#define MS_BS_STATE 0x10 +#define MS_TM_READ_BYTES 0x00 +#define MS_TM_NORMAL_READ 0x01 +#define MS_TM_WRITE_BYTES 0x04 +#define MS_TM_NORMAL_WRITE 0x05 +#define MS_TM_AUTO_READ 0x08 +#define MS_TM_AUTO_WRITE 0x0C + +/* SD Configure 2 Register */ +#define SD_CALCULATE_CRC7 0x00 +#define SD_NO_CALCULATE_CRC7 0x80 +#define SD_CHECK_CRC16 0x00 +#define SD_NO_CHECK_CRC16 0x40 +#define SD_NO_CHECK_WAIT_CRC_TO 0x20 +#define SD_WAIT_BUSY_END 0x08 +#define SD_NO_WAIT_BUSY_END 0x00 +#define SD_CHECK_CRC7 0x00 +#define SD_NO_CHECK_CRC7 0x04 +#define SD_RSP_LEN_0 0x00 +#define SD_RSP_LEN_6 0x01 +#define SD_RSP_LEN_17 0x02 +/* SD/MMC Response Type Definition */ +#define SD_RSP_TYPE_R0 0x04 +#define SD_RSP_TYPE_R1 0x01 +#define SD_RSP_TYPE_R1b 0x09 +#define SD_RSP_TYPE_R2 0x02 +#define SD_RSP_TYPE_R3 0x05 +#define SD_RSP_TYPE_R4 0x05 +#define SD_RSP_TYPE_R5 0x01 +#define SD_RSP_TYPE_R6 0x01 +#define SD_RSP_TYPE_R7 0x01 + +/* SD_CONFIGURE3 */ +#define SD_RSP_80CLK_TIMEOUT_EN 0x01 + +/* Card Transfer Reset Register */ +#define SPI_STOP 0x01 +#define XD_STOP 0x02 +#define SD_STOP 0x04 +#define MS_STOP 0x08 +#define SPI_CLR_ERR 0x10 +#define XD_CLR_ERR 0x20 +#define SD_CLR_ERR 0x40 +#define MS_CLR_ERR 0x80 + +/* Card Data Source Register */ +#define PINGPONG_BUFFER 0x01 +#define RING_BUFFER 0x00 + +/* Card Power Control Register */ +#define PMOS_STRG_MASK 0x10 +#define PMOS_STRG_800mA 0x10 +#define PMOS_STRG_400mA 0x00 +#define SD_POWER_OFF 0x03 +#define SD_PARTIAL_POWER_ON 0x01 +#define SD_POWER_ON 0x00 +#define SD_POWER_MASK 0x03 +#define MS_POWER_OFF 0x0C +#define MS_PARTIAL_POWER_ON 0x04 +#define MS_POWER_ON 0x00 +#define MS_POWER_MASK 0x0C +#define BPP_POWER_OFF 0x0F +#define BPP_POWER_5_PERCENT_ON 0x0E +#define BPP_POWER_10_PERCENT_ON 0x0C +#define BPP_POWER_15_PERCENT_ON 0x08 +#define BPP_POWER_ON 0x00 +#define BPP_POWER_MASK 0x0F + +/* PWR_GATE_CTRL */ +#define PWR_GATE_EN 0x01 +#define LDO3318_PWR_MASK 0x06 +#define LDO_ON 0x00 +#define LDO_SUSPEND 0x04 +#define LDO_OFF 0x06 + +/* CARD_CLK_SOURCE */ +#define CRC_FIX_CLK (0x00 << 0) +#define CRC_VAR_CLK0 (0x01 << 0) +#define CRC_VAR_CLK1 (0x02 << 0) +#define SD30_FIX_CLK (0x00 << 2) +#define SD30_VAR_CLK0 (0x01 << 2) +#define SD30_VAR_CLK1 (0x02 << 2) +#define SAMPLE_FIX_CLK (0x00 << 4) +#define SAMPLE_VAR_CLK0 (0x01 << 4) +#define SAMPLE_VAR_CLK1 (0x02 << 4) + +#define MS_CFG 0xFD40 +#define MS_TPC 0xFD41 +#define MS_TRANS_CFG 0xFD42 +#define MS_TRANSFER 0xFD43 +#define MS_INT_REG 0xFD44 +#define MS_BYTE_CNT 0xFD45 +#define MS_SECTOR_CNT_L 0xFD46 +#define MS_SECTOR_CNT_H 0xFD47 +#define MS_DBUS_H 0xFD48 + +#define SD_CFG1 0xFDA0 +#define SD_CFG2 0xFDA1 +#define SD_CFG3 0xFDA2 +#define SD_STAT1 0xFDA3 +#define SD_STAT2 0xFDA4 +#define SD_BUS_STAT 0xFDA5 +#define SD_PAD_CTL 0xFDA6 +#define SD_SAMPLE_POINT_CTL 0xFDA7 +#define SD_PUSH_POINT_CTL 0xFDA8 +#define SD_CMD0 0xFDA9 +#define SD_CMD1 0xFDAA +#define SD_CMD2 0xFDAB +#define SD_CMD3 0xFDAC +#define SD_CMD4 0xFDAD +#define SD_CMD5 0xFDAE +#define SD_BYTE_CNT_L 0xFDAF +#define SD_BYTE_CNT_H 0xFDB0 +#define SD_BLOCK_CNT_L 0xFDB1 +#define SD_BLOCK_CNT_H 0xFDB2 +#define SD_TRANSFER 0xFDB3 +#define SD_CMD_STATE 0xFDB5 +#define SD_DATA_STATE 0xFDB6 + +#define SRCTL 0xFC13 + +#define DCM_DRP_CTL 0xFC23 +#define DCM_DRP_TRIG 0xFC24 +#define DCM_DRP_CFG 0xFC25 +#define DCM_DRP_WR_DATA_L 0xFC26 +#define DCM_DRP_WR_DATA_H 0xFC27 +#define DCM_DRP_RD_DATA_L 0xFC28 +#define DCM_DRP_RD_DATA_H 0xFC29 +#define SD_VPCLK0_CTL 0xFC2A +#define SD_VPCLK1_CTL 0xFC2B +#define SD_DCMPS0_CTL 0xFC2C +#define SD_DCMPS1_CTL 0xFC2D +#define SD_VPTX_CTL SD_VPCLK0_CTL +#define SD_VPRX_CTL SD_VPCLK1_CTL +#define SD_DCMPS_TX_CTL SD_DCMPS0_CTL +#define SD_DCMPS_RX_CTL SD_DCMPS1_CTL +#define CARD_CLK_SOURCE 0xFC2E + +#define CARD_PWR_CTL 0xFD50 +#define CARD_CLK_SWITCH 0xFD51 +#define CARD_SHARE_MODE 0xFD52 +#define CARD_DRIVE_SEL 0xFD53 +#define CARD_STOP 0xFD54 +#define CARD_OE 0xFD55 +#define CARD_AUTO_BLINK 0xFD56 +#define CARD_GPIO_DIR 0xFD57 +#define CARD_GPIO 0xFD58 +#define CARD_DATA_SOURCE 0xFD5B +#define SD30_CLK_DRIVE_SEL 0xFD5A +#define CARD_SELECT 0xFD5C +#define SD30_DRIVE_SEL 0xFD5E +#define SD30_CMD_DRIVE_SEL 0xFD5E +#define SD30_DAT_DRIVE_SEL 0xFD5F +#define CARD_CLK_EN 0xFD69 +#define SDIO_CTRL 0xFD6B +#define CD_PAD_CTL 0xFD73 + +#define FPDCTL 0xFC00 +#define PDINFO 0xFC01 + +#define CLK_CTL 0xFC02 +#define CLK_DIV 0xFC03 +#define CLK_SEL 0xFC04 + +#define SSC_DIV_N_0 0xFC0F +#define SSC_DIV_N_1 0xFC10 +#define SSC_CTL1 0xFC11 +#define SSC_CTL2 0xFC12 + +#define RCCTL 0xFC14 + +#define FPGA_PULL_CTL 0xFC1D +#define OLT_LED_CTL 0xFC1E +#define GPIO_CTL 0xFC1F + +#define LDO_CTL 0xFC1E +#define SYS_VER 0xFC32 + +#define CARD_PULL_CTL1 0xFD60 +#define CARD_PULL_CTL2 0xFD61 +#define CARD_PULL_CTL3 0xFD62 +#define CARD_PULL_CTL4 0xFD63 +#define CARD_PULL_CTL5 0xFD64 +#define CARD_PULL_CTL6 0xFD65 + +/* PCI Express Related Registers */ +#define IRQEN0 0xFE20 +#define IRQSTAT0 0xFE21 +#define IRQEN1 0xFE22 +#define IRQSTAT1 0xFE23 +#define TLPRIEN 0xFE24 +#define TLPRISTAT 0xFE25 +#define TLPTIEN 0xFE26 +#define TLPTISTAT 0xFE27 +#define DMATC0 0xFE28 +#define DMATC1 0xFE29 +#define DMATC2 0xFE2A +#define DMATC3 0xFE2B +#define DMACTL 0xFE2C +#define BCTL 0xFE2D +#define RBBC0 0xFE2E +#define RBBC1 0xFE2F +#define RBDAT 0xFE30 +#define RBCTL 0xFE34 +#define CFGADDR0 0xFE35 +#define CFGADDR1 0xFE36 +#define CFGDATA0 0xFE37 +#define CFGDATA1 0xFE38 +#define CFGDATA2 0xFE39 +#define CFGDATA3 0xFE3A +#define CFGRWCTL 0xFE3B +#define PHYRWCTL 0xFE3C +#define PHYDATA0 0xFE3D +#define PHYDATA1 0xFE3E +#define PHYADDR 0xFE3F +#define MSGRXDATA0 0xFE40 +#define MSGRXDATA1 0xFE41 +#define MSGRXDATA2 0xFE42 +#define MSGRXDATA3 0xFE43 +#define MSGTXDATA0 0xFE44 +#define MSGTXDATA1 0xFE45 +#define MSGTXDATA2 0xFE46 +#define MSGTXDATA3 0xFE47 +#define MSGTXCTL 0xFE48 +#define PETXCFG 0xFE49 +#define LTR_CTL 0xFE4A +#define OBFF_CFG 0xFE4C + +#define CDRESUMECTL 0xFE52 +#define WAKE_SEL_CTL 0xFE54 +#define PME_FORCE_CTL 0xFE56 +#define ASPM_FORCE_CTL 0xFE57 +#define PM_CLK_FORCE_CTL 0xFE58 +#define PERST_GLITCH_WIDTH 0xFE5C +#define CHANGE_LINK_STATE 0xFE5B +#define RESET_LOAD_REG 0xFE5E +#define EFUSE_CONTENT 0xFE5F +#define HOST_SLEEP_STATE 0xFE60 +#define SDIO_CFG 0xFE70 + +#define NFTS_TX_CTRL 0xFE72 + +#define PWR_GATE_CTRL 0xFE75 +#define PWD_SUSPEND_EN 0xFE76 +#define LDO_PWR_SEL 0xFE78 + +#define DUMMY_REG_RESET_0 0xFE90 + +/* Memory mapping */ +#define SRAM_BASE 0xE600 +#define RBUF_BASE 0xF400 +#define PPBUF_BASE1 0xF800 +#define PPBUF_BASE2 0xFA00 +#define IMAGE_FLAG_ADDR0 0xCE80 +#define IMAGE_FLAG_ADDR1 0xCE81 + +#define rtsx_pci_init_cmd(pcr) ((pcr)->ci = 0) + +struct rtsx_pcr; + +struct pcr_handle { + struct rtsx_pcr *pcr; +}; + +struct pcr_ops { + int (*extra_init_hw)(struct rtsx_pcr *pcr); + int (*optimize_phy)(struct rtsx_pcr *pcr); + int (*turn_on_led)(struct rtsx_pcr *pcr); + int (*turn_off_led)(struct rtsx_pcr *pcr); + int (*enable_auto_blink)(struct rtsx_pcr *pcr); + int (*disable_auto_blink)(struct rtsx_pcr *pcr); + int (*card_power_on)(struct rtsx_pcr *pcr, int card); + int (*card_power_off)(struct rtsx_pcr *pcr, int card); + int (*switch_output_voltage)(struct rtsx_pcr *pcr, + u8 voltage); + unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); + int (*conv_clk_and_div_n)(int clk, int dir); +}; + +enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; + +struct rtsx_pcr { + struct pci_dev *pci; + unsigned int id; + + /* pci resources */ + unsigned long addr; + void __iomem *remap_addr; + int irq; + + /* host reserved buffer */ + void *rtsx_resv_buf; + dma_addr_t rtsx_resv_buf_addr; + + void *host_cmds_ptr; + dma_addr_t host_cmds_addr; + int ci; + + void *host_sg_tbl_ptr; + dma_addr_t host_sg_tbl_addr; + int sgi; + + u32 bier; + char trans_result; + + unsigned int card_inserted; + unsigned int card_removed; + unsigned int card_exist; + + struct delayed_work carddet_work; + struct delayed_work idle_work; + + spinlock_t lock; + struct mutex pcr_mutex; + struct completion *done; + struct completion *finish_me; + + unsigned int cur_clock; + bool ms_pmos; + bool remove_pci; + bool msi_en; + +#define EXTRA_CAPS_SD_SDR50 (1 << 0) +#define EXTRA_CAPS_SD_SDR104 (1 << 1) +#define EXTRA_CAPS_SD_DDR50 (1 << 2) +#define EXTRA_CAPS_MMC_HSDDR (1 << 3) +#define EXTRA_CAPS_MMC_HS200 (1 << 4) +#define EXTRA_CAPS_MMC_8BIT (1 << 5) + u32 extra_caps; + +#define IC_VER_A 0 +#define IC_VER_B 1 +#define IC_VER_C 2 +#define IC_VER_D 3 + u8 ic_version; + + const u32 *sd_pull_ctl_enable_tbl; + const u32 *sd_pull_ctl_disable_tbl; + const u32 *ms_pull_ctl_enable_tbl; + const u32 *ms_pull_ctl_disable_tbl; + + const struct pcr_ops *ops; + enum PDEV_STAT state; + + int num_slots; + struct rtsx_slot *slots; +}; + +#define CHK_PCI_PID(pcr, pid) ((pcr)->pci->device == (pid)) +#define PCI_VID(pcr) ((pcr)->pci->vendor) +#define PCI_PID(pcr) ((pcr)->pci->device) + +void rtsx_pci_start_run(struct rtsx_pcr *pcr); +int rtsx_pci_write_register(struct rtsx_pcr *pcr, u16 addr, u8 mask, u8 data); +int rtsx_pci_read_register(struct rtsx_pcr *pcr, u16 addr, u8 *data); +int rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val); +int rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val); +void rtsx_pci_stop_cmd(struct rtsx_pcr *pcr); +void rtsx_pci_add_cmd(struct rtsx_pcr *pcr, + u8 cmd_type, u16 reg_addr, u8 mask, u8 data); +void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr); +int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout); +int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, + int num_sg, bool read, int timeout); +int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); +int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); +int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_pull_ctl_disable(struct rtsx_pcr *pcr, int card); +int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, + u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); +int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_exclusive_check(struct rtsx_pcr *pcr, int card); +int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage); +unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); +void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); + +static inline u8 *rtsx_pci_get_cmd_data(struct rtsx_pcr *pcr) +{ + return (u8 *)(pcr->host_cmds_ptr); +} + +#endif --- linux-3.5.0.orig/include/linux/mfd/ezx-pcap.h +++ linux-3.5.0/include/linux/mfd/ezx-pcap.h @@ -16,6 +16,7 @@ struct pcap_platform_data { unsigned int irq_base; unsigned int config; + int gpio; void (*init) (void *); /* board specific init */ int num_subdevs; struct pcap_subdev *subdevs; --- linux-3.5.0.orig/include/linux/ssb/ssb_driver_chipcommon.h +++ linux-3.5.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 */ @@ -661,5 +662,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-3.5.0.orig/include/linux/mmc/card.h +++ linux-3.5.0/include/linux/mmc/card.h @@ -238,6 +238,7 @@ #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ #define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ +#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */ /* byte mode */ unsigned int poweroff_notify_state; /* eMMC4.5 notify feature */ #define MMC_NO_POWER_NOTIFICATION 0 --- linux-3.5.0.orig/include/linux/input/eeti_ts.h +++ linux-3.5.0/include/linux/input/eeti_ts.h @@ -2,6 +2,7 @@ #define LINUX_INPUT_EETI_TS_H struct eeti_ts_platform_data { + int irq_gpio; unsigned int irq_active_high; }; --- linux-3.5.0.orig/include/linux/sunrpc/cache.h +++ linux-3.5.0/include/linux/sunrpc/cache.h @@ -228,6 +228,22 @@ return 0; } +static inline int get_uint(char **bpp, unsigned int *anint) +{ + char buf[50]; + int len = qword_get(bpp, buf, sizeof(buf)); + + if (len < 0) + return -EINVAL; + if (len == 0) + return -ENOENT; + + if (kstrtouint(buf, 0, anint)) + return -EINVAL; + + return 0; +} + /* * timestamps kept in the cache are expressed in seconds * since boot. This is the best for measuring differences in --- linux-3.5.0.orig/include/linux/sunrpc/xprt.h +++ linux-3.5.0/include/linux/sunrpc/xprt.h @@ -114,6 +114,7 @@ void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); int (*reserve_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); + void (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task); void (*rpcbind)(struct rpc_task *task); void (*set_port)(struct rpc_xprt *xprt, unsigned short port); void (*connect)(struct rpc_task *task); @@ -279,6 +280,8 @@ void xprt_reserve(struct rpc_task *task); int xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task); int xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task); +void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task); +void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task); int xprt_prepare_transmit(struct rpc_task *task); void xprt_transmit(struct rpc_task *task); void xprt_end_transmit(struct rpc_task *task); --- linux-3.5.0.orig/include/drm/drm_pciids.h +++ linux-3.5.0/include/drm/drm_pciids.h @@ -205,21 +205,29 @@ {0x1002, 0x6788, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x678A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6790, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6791, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6792, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6798, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6799, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x679B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6800, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6801, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6802, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6810, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6811, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6816, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6817, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6818, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6819, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {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}, \ @@ -227,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}, \ @@ -561,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}, \ @@ -572,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-3.5.0.orig/include/drm/drm_crtc.h +++ linux-3.5.0/include/drm/drm_crtc.h @@ -216,8 +216,6 @@ u32 color_formats; u8 cea_rev; - - char *raw_edid; /* if any */ }; struct drm_framebuffer_funcs { @@ -865,6 +863,7 @@ extern char *drm_get_tv_select_name(int val); extern void drm_fb_release(struct drm_file *file_priv); extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); +extern bool drm_probe_ddc(struct i2c_adapter *adapter); extern struct edid *drm_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter); extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); --- linux-3.5.0.orig/include/drm/drm_mode.h +++ linux-3.5.0/include/drm/drm_mode.h @@ -359,8 +359,9 @@ struct drm_mode_modeinfo mode; }; -#define DRM_MODE_CURSOR_BO (1<<0) -#define DRM_MODE_CURSOR_MOVE (1<<1) +#define DRM_MODE_CURSOR_BO 0x01 +#define DRM_MODE_CURSOR_MOVE 0x02 +#define DRM_MODE_CURSOR_FLAGS 0x03 /* * depending on the value in flags different members are used. --- linux-3.5.0.orig/include/drm/i915_drm_hsw.h +++ linux-3.5.0/include/drm/i915_drm_hsw.h @@ -0,0 +1,35 @@ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +#ifndef _I915_DRM_HSW_H_ +#define _I915_DRM_HSW_H_ + +/* For use by IPS driver */ +extern unsigned long i915_hsw_read_mch_val(void); +extern bool i915_hsw_gpu_raise(void); +extern bool i915_hsw_gpu_lower(void); +extern bool i915_hsw_gpu_busy(void); +extern bool i915_hsw_gpu_turbo_disable(void); +#endif /* _I915_DRM_HSW_H_ */ --- linux-3.5.0.orig/include/drm/intel-gtt.h +++ linux-3.5.0/include/drm/intel-gtt.h @@ -3,7 +3,7 @@ #ifndef _DRM_INTEL_GTT_H #define _DRM_INTEL_GTT_H -const struct intel_gtt { +struct intel_gtt { /* Size of memory reserved for graphics by the BIOS */ unsigned int stolen_size; /* Total number of gtt entries. */ @@ -17,10 +17,19 @@ unsigned int do_idle_maps : 1; /* Share the scratch page dma with ppgtts. */ dma_addr_t scratch_page_dma; + struct page *scratch_page; /* for ppgtt PDE access */ u32 __iomem *gtt; + /* needed for ioremap in drm/i915 */ + phys_addr_t gma_bus_addr; } *intel_gtt_get(void); +int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, + struct agp_bridge_data *bridge); +void intel_gmch_remove(void); + +bool intel_enable_gtt(void); + void intel_gtt_chipset_flush(void); void intel_gtt_unmap_memory(struct scatterlist *sg_list, int num_sg); void intel_gtt_clear_range(unsigned int first_entry, unsigned int num_entries); @@ -30,6 +39,9 @@ unsigned int sg_len, unsigned int pg_start, unsigned int flags); +void intel_gtt_insert_sg_entries_hsw(struct sg_table *st, + unsigned int pg_start, + unsigned int flags); void intel_gtt_insert_pages(unsigned int first_entry, unsigned int num_entries, struct page **pages, unsigned int flags); --- linux-3.5.0.orig/include/drm/drm_crtc_helper.h +++ linux-3.5.0/include/drm/drm_crtc_helper.h @@ -137,6 +137,8 @@ extern void drm_helper_connector_dpms(struct drm_connector *connector, int mode); +extern void drm_helper_move_panel_connectors_to_head(struct drm_device *); + extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, struct drm_mode_fb_cmd2 *mode_cmd); --- linux-3.5.0.orig/include/drm/drmP.h +++ linux-3.5.0/include/drm/drmP.h @@ -87,6 +87,7 @@ #include "drm_os_linux.h" #include "drm_hashtab.h" #include "drm_mm.h" +#include "drm_mm_hsw.h" #define DRM_UT_CORE 0x01 #define DRM_UT_DRIVER 0x02 @@ -1378,6 +1379,7 @@ /* Cache management (drm_cache.c) */ void drm_clflush_pages(struct page *pages[], unsigned long num_pages); +void drm_clflush_sg(struct sg_table *st); void drm_clflush_virt_range(char *addr, unsigned long length); /* Locking IOCTL support (drm_lock.h) */ @@ -1566,9 +1568,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-3.5.0.orig/include/drm/i915_drm.h +++ linux-3.5.0/include/drm/i915_drm.h @@ -200,6 +200,12 @@ #define DRM_I915_GEM_EXECBUFFER2 0x29 #define DRM_I915_GET_SPRITE_COLORKEY 0x2a #define DRM_I915_SET_SPRITE_COLORKEY 0x2b +#define DRM_I915_GEM_WAIT 0x2c +#define DRM_I915_GEM_CONTEXT_CREATE 0x2d +#define DRM_I915_GEM_CONTEXT_DESTROY 0x2e +#define DRM_I915_GEM_SET_CACHING 0x2f +#define DRM_I915_GEM_GET_CACHING 0x30 +#define DRM_I915_REG_READ 0x31 #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) @@ -224,6 +230,8 @@ #define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin) #define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin) #define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy) +#define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching) +#define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching) #define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE) #define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT) #define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT) @@ -243,6 +251,10 @@ #define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs) #define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey) #define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey) +#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait) +#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create) +#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy) +#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read) /* Allow drivers to submit batchbuffers directly to hardware, relying * on the security mechanisms provided by hardware. @@ -298,6 +310,10 @@ #define I915_PARAM_HAS_GEN7_SOL_RESET 16 #define I915_PARAM_HAS_LLC 17 #define I915_PARAM_HAS_ALIASING_PPGTT 18 +#define I915_PARAM_HAS_WAIT_TIMEOUT 19 +#define I915_PARAM_HAS_SEMAPHORES 20 +#define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21 +#define I915_PARAM_HAS_SECURE_BATCHES 23 typedef struct drm_i915_getparam { int param; @@ -663,6 +679,17 @@ /** Resets the SO write offset registers for transform feedback on gen7. */ #define I915_EXEC_GEN7_SOL_RESET (1<<8) +/** Request a privileged ("secure") batch buffer. Note only available for + * DRM_ROOT_ONLY | DRM_MASTER processes. + */ +#define I915_EXEC_SECURE (1<<9) + +#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff) +#define i915_execbuffer2_set_context_id(eb2, context) \ + (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK +#define i915_execbuffer2_get_context_id(eb2) \ + ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK) + struct drm_i915_gem_pin { /** Handle of the buffer to be pinned. */ __u32 handle; @@ -689,6 +716,17 @@ __u32 busy; }; +#define I915_CACHING_NONE 0 +#define I915_CACHING_CACHED 1 + +struct drm_i915_gem_caching { + /** Handle of the buffer to set/get the cacheing level of */ + __u32 handle; + + /** Cacheing level to apply or return value */ + __u32 caching; +}; + #define I915_TILING_NONE 0 #define I915_TILING_X 1 #define I915_TILING_Y 2 @@ -885,5 +923,28 @@ __u32 max_value; __u32 flags; }; +struct drm_i915_gem_wait { + /** Handle of BO we shall wait on */ + __u32 bo_handle; + __u32 flags; + /** Number of nanoseconds to wait, Returns time remaining. */ + __u64 timeout_ns; +}; + +struct drm_i915_gem_context_create { + /* output: id of new context*/ + __u32 ctx_id; + __u32 pad; +}; + +struct drm_i915_gem_context_destroy { + __u32 ctx_id; + __u32 pad; +}; + +struct drm_i915_reg_read { + __u64 offset; + __u64 val; /* Return value */ +}; #endif /* _I915_DRM_H_ */ --- linux-3.5.0.orig/include/drm/drm_dp_helper.h +++ linux-3.5.0/include/drm/drm_dp_helper.h @@ -25,6 +25,7 @@ #include #include +#include /* From the VESA DisplayPort spec */ @@ -92,6 +93,13 @@ # define DP_PSR_SETUP_TIME_0 (6 << 1) # define DP_PSR_SETUP_TIME_MASK (7 << 1) # define DP_PSR_SETUP_TIME_SHIFT 1 +# define DP_DOWNSTREAM_PORT_0 0x80 +# define DP_DS_PORT_TYPE_MASK (7 << 0) +# define DP_DS_PORT_TYPE_VGA 1 +# define DP_DS_PORT_TYPE_NON_EDID 4 +# define DP_DS_PORT_HPD (1 << 3) +# define DP_SINK_COUNT 0x200 +# define DP_GET_SINK_COUNT(x) ((((x) & 0x80) >> 1) | ((x) & 0x3f)) /* link configuration */ #define DP_LINK_BW_SET 0x100 @@ -257,4 +265,33 @@ int i2c_dp_aux_add_bus(struct i2c_adapter *adapter); +#define DP_LINK_STATUS_SIZE 6 +bool drm_dp_channel_eq_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count); +bool drm_dp_clock_recovery_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count); +u8 drm_dp_get_adjust_request_voltage(u8 link_status[DP_LINK_STATUS_SIZE], + int lane); +u8 drm_dp_get_adjust_request_pre_emphasis(u8 link_status[DP_LINK_STATUS_SIZE], + int lane); + +#define DP_RECEIVER_CAP_SIZE 0xf +void drm_dp_link_train_clock_recovery_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]); +void drm_dp_link_train_channel_eq_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]); + +u8 drm_dp_link_rate_to_bw_code(int link_rate); +int drm_dp_bw_code_to_link_rate(u8 link_bw); + +static inline int +drm_dp_max_link_rate(u8 dpcd[DP_RECEIVER_CAP_SIZE]) +{ + return drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]); +} + +static inline u8 +drm_dp_max_lane_count(u8 dpcd[DP_RECEIVER_CAP_SIZE]) +{ + return dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK; +} + #endif /* _DRM_DP_HELPER_H_ */ --- linux-3.5.0.orig/include/drm/drm_mm_hsw.h +++ linux-3.5.0/include/drm/drm_mm_hsw.h @@ -0,0 +1,268 @@ +/************************************************************************** + * + * Copyright 2006-2008 Tungsten Graphics, Inc., Cedar Park, TX. USA. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * + **************************************************************************/ +/* + * Authors: + * Thomas Hellstrom + */ + +#ifndef _DRM_MM_HSW_H_ +#define _DRM_MM_HSW_H_ + +/* + * Generic range manager structs + */ +#include +#ifdef CONFIG_DEBUG_FS +#include +#endif + +struct drm_mm_node_hsw { + struct list_head node_list; + struct list_head hole_stack; + unsigned hole_follows : 1; + unsigned scanned_block : 1; + unsigned scanned_prev_free : 1; + unsigned scanned_next_free : 1; + unsigned scanned_preceeds_hole : 1; + unsigned allocated : 1; + unsigned long color; + unsigned long start; + unsigned long size; + struct drm_mm_hsw *mm; +}; + +struct drm_mm_hsw { + /* List of all memory nodes that immediately precede a free hole. */ + struct list_head hole_stack; + /* head_node.node_list is the list of all memory nodes, ordered + * according to the (increasing) start address of the memory node. */ + struct drm_mm_node_hsw head_node; + struct list_head unused_nodes; + int num_unused; + spinlock_t unused_lock; + unsigned int scan_check_range : 1; + unsigned scan_alignment; + unsigned long scan_color; + unsigned long scan_size; + unsigned long scan_hit_start; + unsigned long scan_hit_end; + unsigned scanned_blocks; + unsigned long scan_start; + unsigned long scan_end; + struct drm_mm_node_hsw *prev_scanned_node; + + void (*color_adjust)(struct drm_mm_node_hsw *node, unsigned long color, + unsigned long *start, unsigned long *end); +}; + +static inline bool drm_mm_node_allocated_hsw(struct drm_mm_node_hsw *node) +{ + return node->allocated; +} + +static inline bool drm_mm_initialized_hsw(struct drm_mm_hsw *mm) +{ + return mm->hole_stack.next; +} +#define drm_mm_hsw_for_each_node(entry, mm) list_for_each_entry(entry, \ + &(mm)->head_node.node_list, \ + node_list) +#define drm_mm_hsw_for_each_scanned_node_reverse(entry, n, mm) \ + for (entry = (mm)->prev_scanned_node, \ + next = entry ? list_entry(entry->node_list.next, \ + struct drm_mm_node_hsw, node_list) : NULL; \ + entry != NULL; entry = next, \ + next = entry ? list_entry(entry->node_list.next, \ + struct drm_mm_node_hsw, node_list) : NULL) \ +/* + * Basic range manager support (drm_mm_hsw.c) + */ +extern struct drm_mm_node_hsw *drm_mm_get_block_generic_hsw(struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color, + int atomic); +extern struct drm_mm_node_hsw *drm_mm_get_block_range_generic_hsw( + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + int atomic); +static inline struct drm_mm_node_hsw *drm_mm_get_block_hsw(struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment) +{ + return drm_mm_get_block_generic_hsw(parent, size, alignment, 0, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_atomic_hsw(struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment) +{ + return drm_mm_get_block_generic_hsw(parent, size, alignment, 0, 1); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, 0, + start, end, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_color_block_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, color, + start, end, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_atomic_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, 0, + start, end, 1); +} + +extern int drm_mm_insert_node_hsw(struct drm_mm_hsw *mm, + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment); +extern int drm_mm_insert_node_in_range_hsw(struct drm_mm_hsw *mm, + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end); +extern int drm_mm_insert_node_generic_hsw(struct drm_mm_hsw *mm, + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color); +extern int drm_mm_insert_node_in_range_generic_hsw(struct drm_mm_hsw *mm, + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end); +extern void drm_mm_put_block_hsw(struct drm_mm_node_hsw *cur); +extern void drm_mm_remove_node_hsw(struct drm_mm_node_hsw *node); +extern void drm_mm_replace_node_hsw(struct drm_mm_node_hsw *old, struct drm_mm_node_hsw *new); +extern struct drm_mm_node_hsw *drm_mm_search_free_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match); +extern struct drm_mm_node_hsw *drm_mm_search_free_in_range_generic_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match); +static inline struct drm_mm_node_hsw *drm_mm_search_free_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + bool best_match) +{ + return drm_mm_search_free_generic_hsw(mm,size, alignment, 0, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_in_range_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end, + bool best_match) +{ + return drm_mm_search_free_in_range_generic_hsw(mm, size, alignment, 0, + start, end, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_color_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match) +{ + return drm_mm_search_free_generic_hsw(mm,size, alignment, color, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_in_range_color_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match) +{ + return drm_mm_search_free_in_range_generic_hsw(mm, size, alignment, color, + start, end, best_match); +} +extern int drm_mm_init_hsw(struct drm_mm_hsw *mm, + unsigned long start, + unsigned long size); +extern void drm_mm_takedown_hsw(struct drm_mm_hsw *mm); +extern int drm_mm_clean_hsw(struct drm_mm_hsw *mm); +extern int drm_mm_pre_get_hsw(struct drm_mm_hsw *mm); + +static inline struct drm_mm_hsw *drm_get_mm_hsw(struct drm_mm_node_hsw *block) +{ + return block->mm; +} + +void drm_mm_init_scan_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color); +void drm_mm_init_scan_with_range_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end); +int drm_mm_scan_add_block_hsw(struct drm_mm_node_hsw *node); +int drm_mm_scan_remove_block_hsw(struct drm_mm_node_hsw *node); + +extern void drm_mm_debug_table_hsw(struct drm_mm_hsw *mm, const char *prefix); +#ifdef CONFIG_DEBUG_FS +int drm_mm_dump_table_hsw(struct seq_file *m, struct drm_mm_hsw *mm); +#endif + +#endif --- linux-3.5.0.orig/include/net/inet6_hashtables.h +++ linux-3.5.0/include/net/inet6_hashtables.h @@ -28,16 +28,16 @@ struct inet_hashinfo; -/* I have no idea if this is a good hash for v6 or not. -DaveM */ static inline unsigned int inet6_ehashfn(struct net *net, const struct in6_addr *laddr, const u16 lport, const struct in6_addr *faddr, const __be16 fport) { - u32 ports = (lport ^ (__force u16)fport); + u32 ports = (((u32)lport) << 16) | (__force u32)fport; return jhash_3words((__force u32)laddr->s6_addr32[3], - (__force u32)faddr->s6_addr32[3], - ports, inet_ehash_secret + net_hash_mix(net)); + ipv6_addr_jhash(faddr), + ports, + inet_ehash_secret + net_hash_mix(net)); } static inline int inet6_sk_ehashfn(const struct sock *sk) --- linux-3.5.0.orig/include/net/ip_fib.h +++ linux-3.5.0/include/net/ip_fib.h @@ -129,18 +129,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-3.5.0.orig/include/net/scm.h +++ linux-3.5.0/include/net/scm.h @@ -50,7 +50,7 @@ { scm->pid = get_pid(pid); scm->cred = cred ? get_cred(cred) : NULL; - cred_to_ucred(pid, cred, &scm->creds); + cred_to_ucred(pid, cred, &scm->creds, false); } static __inline__ void scm_destroy_cred(struct scm_cookie *scm) @@ -71,9 +71,11 @@ } static __inline__ int scm_send(struct socket *sock, struct msghdr *msg, - struct scm_cookie *scm) + struct scm_cookie *scm, bool forcecreds) { memset(scm, 0, sizeof(*scm)); + if (forcecreds) + scm_set_cred(scm, task_tgid(current), current_cred()); unix_get_peersec_dgram(sock, scm); if (msg->msg_controllen <= 0) return 0; --- linux-3.5.0.orig/include/net/inet_frag.h +++ linux-3.5.0/include/net/inet_frag.h @@ -33,6 +33,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; @@ -63,6 +70,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-3.5.0.orig/include/net/xfrm.h +++ linux-3.5.0/include/net/xfrm.h @@ -269,6 +269,9 @@ int (*check)(struct xfrm_state *x, struct sk_buff *skb, __be32 net_seq); + int (*recheck)(struct xfrm_state *x, + struct sk_buff *skb, + __be32 net_seq); void (*notify)(struct xfrm_state *x, int event); int (*overflow)(struct xfrm_state *x, struct sk_buff *skb); }; --- linux-3.5.0.orig/include/net/sock.h +++ linux-3.5.0/include/net/sock.h @@ -217,6 +217,7 @@ * @sk_route_nocaps: forbidden route capabilities (e.g NETIF_F_GSO_MASK) * @sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4) * @sk_gso_max_size: Maximum GSO segment size to build + * @sk_gso_max_segs: Maximum number of GSO segments * @sk_lingertime: %SO_LINGER l_linger setting * @sk_backlog: always used with the per-socket spinlock held * @sk_callback_lock: used with the callbacks in the end of this struct @@ -336,6 +337,7 @@ netdev_features_t sk_route_nocaps; int sk_gso_type; unsigned int sk_gso_max_size; + u16 sk_gso_max_segs; int sk_rcvlowat; unsigned long sk_lingertime; struct sk_buff_head sk_error_queue; @@ -805,6 +807,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 @@ -977,7 +991,7 @@ sk->sk_prot->name, sk, atomic_read(&sk->sk_prot->socks)); } -inline void sk_refcnt_debug_release(const struct sock *sk) +static inline void sk_refcnt_debug_release(const struct sock *sk) { if (atomic_read(&sk->sk_refcnt) != 1) printk(KERN_DEBUG "Destruction of the %s socket %p delayed, refcnt=%d\n", --- linux-3.5.0.orig/include/net/ipv6.h +++ linux-3.5.0/include/net/ipv6.h @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -395,6 +396,17 @@ a->s6_addr32[2] | a->s6_addr32[3]) == 0; } +/* more secured version of ipv6_addr_hash() */ +static inline u32 ipv6_addr_jhash(const struct in6_addr *a) +{ + u32 v = (__force u32)a->s6_addr32[0] ^ (__force u32)a->s6_addr32[1]; + + return jhash_3words(v, + (__force u32)a->s6_addr32[2], + (__force u32)a->s6_addr32[3], + ipv6_hash_secret); +} + static inline bool ipv6_addr_loopback(const struct in6_addr *a) { return (a->s6_addr32[0] | a->s6_addr32[1] | --- linux-3.5.0.orig/include/net/inet_sock.h +++ linux-3.5.0/include/net/inet_sock.h @@ -202,6 +202,7 @@ extern int inet_sk_rebuild_header(struct sock *sk); extern u32 inet_ehash_secret; +extern u32 ipv6_hash_secret; extern void build_ehash_secret(void); static inline unsigned int inet_ehashfn(struct net *net, --- linux-3.5.0.orig/include/net/mac80211.h +++ linux-3.5.0/include/net/mac80211.h @@ -1197,6 +1197,10 @@ * queue mapping in order to use different queues (not just one per AC) * for different virtual interfaces. See the doc section on HW queue * control for more details. + * + * @IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL: On this hardware TX BA session + * should be tear down once BAR frame will not be acked. + * */ enum ieee80211_hw_flags { IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, @@ -1224,6 +1228,7 @@ IEEE80211_HW_AP_LINK_PS = 1<<22, IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, IEEE80211_HW_SCAN_WHILE_IDLE = 1<<24, + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL = 1<<26, }; /** --- linux-3.5.0.orig/include/net/inet_connection_sock.h +++ linux-3.5.0/include/net/inet_connection_sock.h @@ -318,6 +318,7 @@ const unsigned long max_rto); extern void inet_csk_destroy_sock(struct sock *sk); +extern void inet_csk_prepare_forced_close(struct sock *sk); /* * LISTEN is a special case for poll.. --- linux-3.5.0.orig/include/net/cfg80211.h +++ linux-3.5.0/include/net/cfg80211.h @@ -94,6 +94,7 @@ * is not permitted. * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel * is not permitted. + * @IEEE80211_CHAN_NO_OFDM: OFDM is not allowed on this channel. */ enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = 1<<0, @@ -102,6 +103,7 @@ IEEE80211_CHAN_RADAR = 1<<3, IEEE80211_CHAN_NO_HT40PLUS = 1<<4, IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_NO_OFDM = 1<<6, }; #define IEEE80211_CHAN_NO_HT40 \ @@ -1130,6 +1132,7 @@ const u8 *ie; size_t ie_len; u16 reason_code; + bool local_state_change; }; /** @@ -2507,6 +2510,15 @@ unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc); /** + * ieee80211_get_mesh_hdrlen - get mesh extension header length + * @meshhdr: the mesh extension header, only the flags field + * (first byte) will be accessed + * Returns the length of the extension header, which is always at + * least 6 bytes and at most 18 if address 5 and 6 are present. + */ +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr); + +/** * DOC: Data path helpers * * In addition to generic utilities, cfg80211 also offers --- linux-3.5.0.orig/include/net/tcp.h +++ linux-3.5.0/include/net/tcp.h @@ -253,6 +253,7 @@ extern int sysctl_tcp_thin_linear_timeouts; extern int sysctl_tcp_thin_dupack; extern int sysctl_tcp_early_retrans; +extern int sysctl_tcp_challenge_ack_limit; extern atomic_long_t tcp_memory_allocated; extern struct percpu_counter tcp_sockets_allocated; @@ -981,6 +982,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-3.5.0.orig/include/net/codel.h +++ linux-3.5.0/include/net/codel.h @@ -305,6 +305,8 @@ } } } else if (drop) { + u32 delta; + if (params->ecn && INET_ECN_set_ce(skb)) { stats->ecn_mark++; } else { @@ -320,9 +322,11 @@ * assume that the drop rate that controlled the queue on the * last cycle is a good starting point to control it now. */ - if (codel_time_before(now - vars->drop_next, + delta = vars->count - vars->lastcount; + if (delta > 1 && + codel_time_before(now - vars->drop_next, 16 * params->interval)) { - vars->count = (vars->count - vars->lastcount) | 1; + vars->count = delta; /* we dont care if rec_inv_sqrt approximation * is not very precise : * Next Newton steps will correct it quadratically. --- linux-3.5.0.orig/include/net/netfilter/nf_conntrack_ecache.h +++ linux-3.5.0/include/net/netfilter/nf_conntrack_ecache.h @@ -18,6 +18,7 @@ u16 ctmask; /* bitmask of ct events to be delivered */ u16 expmask; /* bitmask of expect events to be delivered */ u32 pid; /* netlink pid of destroyer */ + struct timer_list timeout; }; static inline struct nf_conntrack_ecache * --- linux-3.5.0.orig/include/net/bluetooth/mgmt.h +++ linux-3.5.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-3.5.0.orig/include/net/bluetooth/smp.h +++ linux-3.5.0/include/net/bluetooth/smp.h @@ -136,7 +136,7 @@ }; /* SMP Commands */ -int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level); +int smp_conn_security(struct hci_conn *hcon, __u8 sec_level); int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb); int smp_distribute_keys(struct l2cap_conn *conn, __u8 force); int smp_user_confirm_reply(struct hci_conn *conn, u16 mgmt_op, __le32 passkey); --- linux-3.5.0.orig/include/net/bluetooth/hci_core.h +++ linux-3.5.0/include/net/bluetooth/hci_core.h @@ -282,6 +282,7 @@ int (*send)(struct sk_buff *skb); void (*notify)(struct hci_dev *hdev, unsigned int evt); int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg); + void (*load_firmware)(struct hci_dev *hdev); }; struct hci_conn { @@ -981,6 +982,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-3.5.0.orig/include/rdma/rdma_netlink.h +++ linux-3.5.0/include/rdma/rdma_netlink.h @@ -39,6 +39,7 @@ struct ibnl_client_cbs { int (*dump)(struct sk_buff *skb, struct netlink_callback *nlcb); + struct module *module; }; int ibnl_init(void); --- linux-3.5.0.orig/include/asm-generic/pgtable.h +++ linux-3.5.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-3.5.0.orig/include/asm-generic/tlb.h +++ linux-3.5.0/include/asm-generic/tlb.h @@ -78,6 +78,14 @@ #define MAX_GATHER_BATCH \ ((PAGE_SIZE - sizeof(struct mmu_gather_batch)) / sizeof(void *)) +/* + * Limit the maximum number of mmu_gather batches to reduce a risk of soft + * lockups for non-preemptible kernels on huge machines when a lot of memory + * is zapped during unmapping. + * 10K pages freed at once should be safe even without a preemption point. + */ +#define MAX_GATHER_BATCH_COUNT (10000UL/MAX_GATHER_BATCH) + /* struct mmu_gather is an opaque type used by the mm code for passing around * any data needed by arch specific code for tlb_remove_page. */ @@ -94,6 +102,7 @@ struct mmu_gather_batch *active; struct mmu_gather_batch local; struct page *__pages[MMU_GATHER_BUNDLE]; + unsigned int batch_count; }; #define HAVE_GENERIC_MMU_GATHER --- linux-3.5.0.orig/include/asm-generic/signal.h +++ linux-3.5.0/include/asm-generic/signal.h @@ -99,6 +99,10 @@ #include +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif + struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; --- linux-3.5.0.orig/include/asm-generic/vmlinux.lds.h +++ linux-3.5.0/include/asm-generic/vmlinux.lds.h @@ -626,6 +626,7 @@ *(.initcallearly.init) \ INIT_CALLS_LEVEL(0) \ INIT_CALLS_LEVEL(1) \ + INIT_CALLS_LEVEL(earlyrootfs) \ INIT_CALLS_LEVEL(2) \ INIT_CALLS_LEVEL(3) \ INIT_CALLS_LEVEL(4) \ --- linux-3.5.0.orig/include/asm-generic/mutex-xchg.h +++ linux-3.5.0/include/asm-generic/mutex-xchg.h @@ -26,7 +26,13 @@ __mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) { if (unlikely(atomic_xchg(count, 0) != 1)) - fail_fn(count); + /* + * We failed to acquire the lock, so mark it contended + * to ensure that any waiting tasks are woken up by the + * unlock slow path. + */ + if (likely(atomic_xchg(count, -1) != 1)) + fail_fn(count); } /** @@ -43,7 +49,8 @@ __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) { if (unlikely(atomic_xchg(count, 0) != 1)) - return fail_fn(count); + if (likely(atomic_xchg(count, -1) != 1)) + return fail_fn(count); return 0; } --- linux-3.5.0.orig/crypto/gcm.c +++ linux-3.5.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-3.5.0.orig/crypto/cryptd.c +++ linux-3.5.0/crypto/cryptd.c @@ -137,13 +137,18 @@ struct crypto_async_request *req, *backlog; cpu_queue = container_of(work, struct cryptd_cpu_queue, work); - /* Only handle one request at a time to avoid hogging crypto - * workqueue. preempt_disable/enable is used to prevent - * being preempted by cryptd_enqueue_request() */ + /* + * Only handle one request at a time to avoid hogging crypto workqueue. + * preempt_disable/enable is used to prevent being preempted by + * cryptd_enqueue_request(). local_bh_disable/enable is used to prevent + * cryptd_enqueue_request() being accessed from software interrupts. + */ + local_bh_disable(); preempt_disable(); backlog = crypto_get_backlog(&cpu_queue->queue); req = crypto_dequeue_request(&cpu_queue->queue); preempt_enable(); + local_bh_enable(); if (!req) return; --- linux-3.5.0.orig/crypto/shash.c +++ linux-3.5.0/crypto/shash.c @@ -530,7 +530,8 @@ struct crypto_report_hash rhash; struct shash_alg *salg = __crypto_shash_alg(alg); - snprintf(rhash.type, CRYPTO_MAX_ALG_NAME, "%s", "shash"); + strncpy(rhash.type, "shash", sizeof(rhash.type)); + rhash.blocksize = alg->cra_blocksize; rhash.digestsize = salg->digestsize; --- linux-3.5.0.orig/crypto/aead.c +++ linux-3.5.0/crypto/aead.c @@ -117,9 +117,8 @@ struct crypto_report_aead raead; struct aead_alg *aead = &alg->cra_aead; - snprintf(raead.type, CRYPTO_MAX_ALG_NAME, "%s", "aead"); - snprintf(raead.geniv, CRYPTO_MAX_ALG_NAME, "%s", - aead->geniv ?: ""); + strncpy(raead.type, "aead", sizeof(raead.type)); + strncpy(raead.geniv, aead->geniv ?: "", sizeof(raead.geniv)); raead.blocksize = alg->cra_blocksize; raead.maxauthsize = aead->maxauthsize; @@ -203,8 +202,8 @@ struct crypto_report_aead raead; struct aead_alg *aead = &alg->cra_aead; - snprintf(raead.type, CRYPTO_MAX_ALG_NAME, "%s", "nivaead"); - snprintf(raead.geniv, CRYPTO_MAX_ALG_NAME, "%s", aead->geniv); + strncpy(raead.type, "nivaead", sizeof(raead.type)); + strncpy(raead.geniv, aead->geniv, sizeof(raead.geniv)); raead.blocksize = alg->cra_blocksize; raead.maxauthsize = aead->maxauthsize; --- linux-3.5.0.orig/crypto/ahash.c +++ linux-3.5.0/crypto/ahash.c @@ -404,7 +404,7 @@ { struct crypto_report_hash rhash; - snprintf(rhash.type, CRYPTO_MAX_ALG_NAME, "%s", "ahash"); + strncpy(rhash.type, "ahash", sizeof(rhash.type)); rhash.blocksize = alg->cra_blocksize; rhash.digestsize = __crypto_hash_alg_common(alg)->digestsize; --- linux-3.5.0.orig/crypto/crypto_user.c +++ linux-3.5.0/crypto/crypto_user.c @@ -75,7 +75,7 @@ { struct crypto_report_cipher rcipher; - snprintf(rcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "cipher"); + strncpy(rcipher.type, "cipher", sizeof(rcipher.type)); rcipher.blocksize = alg->cra_blocksize; rcipher.min_keysize = alg->cra_cipher.cia_min_keysize; @@ -94,8 +94,7 @@ { struct crypto_report_comp rcomp; - snprintf(rcomp.type, CRYPTO_MAX_ALG_NAME, "%s", "compression"); - + strncpy(rcomp.type, "compression", sizeof(rcomp.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_COMPRESS, sizeof(struct crypto_report_comp), &rcomp)) goto nla_put_failure; @@ -108,12 +107,14 @@ static int crypto_report_one(struct crypto_alg *alg, struct crypto_user_alg *ualg, struct sk_buff *skb) { - memcpy(&ualg->cru_name, &alg->cra_name, sizeof(ualg->cru_name)); - memcpy(&ualg->cru_driver_name, &alg->cra_driver_name, - sizeof(ualg->cru_driver_name)); - memcpy(&ualg->cru_module_name, module_name(alg->cra_module), - CRYPTO_MAX_ALG_NAME); + strncpy(ualg->cru_name, alg->cra_name, sizeof(ualg->cru_name)); + strncpy(ualg->cru_driver_name, alg->cra_driver_name, + sizeof(ualg->cru_driver_name)); + strncpy(ualg->cru_module_name, module_name(alg->cra_module), + sizeof(ualg->cru_module_name)); + ualg->cru_type = 0; + ualg->cru_mask = 0; ualg->cru_flags = alg->cra_flags; ualg->cru_refcnt = atomic_read(&alg->cra_refcnt); @@ -122,8 +123,7 @@ if (alg->cra_flags & CRYPTO_ALG_LARVAL) { struct crypto_report_larval rl; - snprintf(rl.type, CRYPTO_MAX_ALG_NAME, "%s", "larval"); - + strncpy(rl.type, "larval", sizeof(rl.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_LARVAL, sizeof(struct crypto_report_larval), &rl)) goto nla_put_failure; --- linux-3.5.0.orig/crypto/algif_hash.c +++ linux-3.5.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-3.5.0.orig/crypto/pcompress.c +++ linux-3.5.0/crypto/pcompress.c @@ -53,8 +53,7 @@ { struct crypto_report_comp rpcomp; - snprintf(rpcomp.type, CRYPTO_MAX_ALG_NAME, "%s", "pcomp"); - + strncpy(rpcomp.type, "pcomp", sizeof(rpcomp.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_COMPRESS, sizeof(struct crypto_report_comp), &rpcomp)) goto nla_put_failure; --- linux-3.5.0.orig/crypto/ablkcipher.c +++ linux-3.5.0/crypto/ablkcipher.c @@ -388,9 +388,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "ablkcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_ablkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "ablkcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_ablkcipher.min_keysize; @@ -469,9 +469,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "givcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_ablkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "givcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_ablkcipher.min_keysize; --- linux-3.5.0.orig/crypto/algif_skcipher.c +++ linux-3.5.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-3.5.0.orig/crypto/blkcipher.c +++ linux-3.5.0/crypto/blkcipher.c @@ -499,9 +499,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "blkcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_blkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "blkcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_blkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_blkcipher.min_keysize; --- linux-3.5.0.orig/crypto/rng.c +++ linux-3.5.0/crypto/rng.c @@ -65,7 +65,7 @@ { struct crypto_report_rng rrng; - snprintf(rrng.type, CRYPTO_MAX_ALG_NAME, "%s", "rng"); + strncpy(rrng.type, "rng", sizeof(rrng.type)); rrng.seedsize = alg->cra_rng.seedsize; --- linux-3.5.0.orig/debian.master/changelog.historical +++ linux-3.5.0/debian.master/changelog.historical @@ -0,0 +1,4171 @@ + +linux (2.6.28-9.31) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: cpufreq-nforce2: probe failures are not errors + - LP: #332170 + * SAUCE: mmc: add MODALIAS linkage for MMC/SD devices + - LP: #30335 + * remove test-suspend script + - LP: #333856 + + [ Kees Cook ] + + * handle relative paths in modules.dep + Fixes 2.6.28-9.30 FTBS. + + [ Upstream Kernel Changes ] + + * ricoh_mmc: Handle newer models of Ricoh controllers + + -- Tim Gardner Wed, 11 Mar 2009 08:19:24 -0600 + +linux (2.6.28-9.30) jaunty; urgency=low + + [ Amit Kucheria ] + + * ARM:mx51 Add SoC and board support for mx51 platforms + * ARM:mx51 Add CONFIG_ARCH_MXC_CANONICAL to disable parts of Freescale's + code + * MMC: Add support for 8-bit cards + * Add ARM:MX51 SoC support to the build system + * ARM: Make ARM arch aware of ubuntu/ drivers + * ARM: Add imx51 configuration + * Disable d-i modules for imx51 and mv78xx0 + * Disable Apparmor on boot for ARM + * Updating imx51 config + + [ Jason Liu ] + + * Do not use OOB with MLC NAND + + [ Richard Zhu ] + + * Support the eMMC4.3 card + + [ Rob Herring ] + + * ARM: Add more cache memory types macros + + [ Tim Gardner ] + + * Set CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y for i386/amd64/lpia + + [ Manoj Iyer ] + + * Enable CONFIG_RTL8187SE=m + + [ Upstream Kernel Changes ] + + * USB: EHCI: slow down ITD reuse + - LP: #329437 + + -- Tim Gardner Sun, 08 Mar 2009 14:14:15 -0600 + +linux (2.6.28-9.29) jaunty; urgency=low + + [ Andy Whitcroft ] + + * link-headers -- only link directories which do not already exist + - LP: #315252 + + [ Daniel Marjamäki ] + + * SAUCE: (drop after 2.6.28) netxen: fix memory leak in + drivers/net/netxen_nic_init.c + - LP: #330813 + + [ Dhananjay Phadke ] + + * SAUCE: (drop after 2.6.28) netxen: fix endianness in firmware commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix ipv6 offload and tx cleanup + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix link speed reporting for some + boards + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: firmware init fix + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: cleanup mac list on driver unload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: hold tx lock while sending firmware + commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: handle dma mapping failures + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: avoid invalid iounmap + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: include ipv6.h (fixes build failure) + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix vlan tso/checksum offload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: reduce memory footprint + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: revert jumbo ringsize + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix msi-x interrupt handling + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: remove pcie workaround + - LP: #330813 + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.28) drivers/net/netxen: fix sparse warnings: use + NULL pointer instead of plain integer + - LP: #330813 + + [ Huaxu Wan ] + + * SAUCE: report rfkill changes event if interface is down + - LP: #193970 + + [ Tim Gardner ] + + * MV78XX0 must specify a target in the vars definition. + + [ Upstream Kernel Changes ] + + * Revert "ext4: wait on all pending commits in ext4_sync_fs()" + * jbd2: Fix return value of jbd2_journal_start_commit() + * jbd2: Avoid possible NULL dereference in + jbd2_journal_begin_ordered_truncate() + * ext4: Fix to read empty directory blocks correctly in 64k + * ext4: Fix lockdep warning + * ext4: Initialize preallocation list_head's properly + * ext4: Implement range_cyclic in ext4_da_writepages instead of + write_cache_pages + * ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling + * ext4: Add fallback for find_group_flex + * ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() + * Added mv78xx0 flavor + + -- Tim Gardner Fri, 06 Mar 2009 06:13:31 -0700 + +linux (2.6.28-8.28) jaunty; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: Limit workaround for ASUS notebooks even more + - LP: #288385 + + [ Scott James Remnant ] + + * SAUCE: Auto-load esp module when device opened. + * SAUCE: Auto-load bridge module when socket opened. + * SAUCE: Auto-load af_netlink module when socket opened. + * SAUCE: Auto-load wanrouter module when socket opened. + * SAUCE: Auto-load ip_queue module when socket opened. + * SAUCE: Auto-load ip6_queue module when socket opened. + * SAUCE: Auto-load cn module when socket opened. + * SAUCE: Auto-load scsi_transport_iscsi module when socket opened. + * SAUCE: Auto-load ftl module when device opened. + * SAUCE: Auto-load pcd module when device opened. + * SAUCE: Auto-load pf module when device opened. + * SAUCE: Auto-load nftl module when device opened. + * SAUCE: Auto-load mousedev module when psaux device opened. + * SAUCE: Auto-load mousedev module when /dev/input/mice opened. + * SAUCE: Auto-load rng-core module when device opened. + * SAUCE: Auto-load openprom module when device opened. + * SAUCE: Auto-load applicom module when device opened. + * SAUCE: Auto-load toshiba module when device opened. + * SAUCE: Auto-load cyclades module when device opened. + * SAUCE: Auto-load riscom8 module when device opened. + * SAUCE: Auto-load specialix module when device opened. + * SAUCE: Auto-load videodev module when device opened. + * SAUCE: Auto-load i2c_dev module when device opened. + * SAUCE: Auto-load mtdchar module when device opened. + * SAUCE: Auto-load pt module when device opened. + * SAUCE: Auto-load pg module when device opened. + * SAUCE: Auto-load cdc_acm module when device opened. + * SAUCE: Auto-load msr module when device opened. + * SAUCE: Auto-load cpuid module when device opened. + * SAUCE: quickcam: Enable double-buffering by default + * SAUCE: libata: Ignore HPA by default. + * SAUCE: hostap: Change initial operation mode to managed (infra) + * SAUCE: floppy: Provide a PnP device table in the module. + - LP: #255651 + * SAUCE: Auto-load mwave module when device opened. + * Build CONFIG_FUSE_FS into kernel, not as module. + + [ Stefan Bader ] + + * Enable build of ext4 as a module on LPIA + - LP: #331848 + + [ Tim Gardner ] + + * Update configs to fix LPIA FTBS + + -- Tim Gardner Thu, 05 Mar 2009 10:43:24 -0700 + +linux (2.6.28-8.27) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (arm:ixp4xx) + + [ Andy Whitcroft ] + + * SAUCE: enable Intel HDMI output + + [ Manoj Iyer ] + + * SAUCE: Added quirk for Linksys WUSB600N USB wifi-n networking adapter + - LP: #323473 + + [ Steve Beattie ] + + * fix apparmor memory leak on unlinked file ops + - LP: #329489 + + [ Tim Gardner ] + + * SAUCE: Dell XPS710 reboot quirk + - LP: #323592 + * SAUCE: (drop after 2.6.28) ieee80211: Add infrastructure to obsolete + scan results + - LP: #336055 + * Add modules.order to the linux-image package. + + [ Upstream Kernel Changes ] + + * iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit + * x86: only scan the root bus in early PCI quirks + - LP: #267295 + * ALSA: hda - Intel HDMI audio support + * ALSA: hda - Fix unused function in patch_intelhdmi.c + * ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c + * ALSA: hda-intel: reorder HDMI audio enabling sequence + * ALSA: introduce snd_print_pcm_rates() + * ALSA: create hda_eld.c for ELD routines and proc interface + * ALSA: ELD proc interface for HDMI sinks + * ALSA: hda: make standalone hdmi_fill_audio_infoframe() + * ALSA: hda: make global snd_print_channel_allocation() + * ALSA: hda: HDMI channel allocations for audio infoframe + * ALSA: hda: HDMI channel mapping cleanups + * ALSA: hda: minor code cleanups + * ALSA: hda: rename sink_eld to hdmi_eld + * ALSA: hda - Release ELD proc file + * ALSA: hda - minor HDMI code cleanups + * ALSA: hda - report selected CA index for Audio InfoFrame + * ALSA: hda - Add Intel vendor id string + + -- Tim Gardner Wed, 25 Feb 2009 14:23:46 -0700 + +linux (2.6.28-8.26) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (armel:ixp4xx) + - LP: #331510 + + [ Tim Gardner ] + + * Add more missing modules + + -- Tim Gardner Tue, 24 Feb 2009 06:58:53 -0700 + +linux (2.6.28-8.25) jaunty; urgency=low + + [ Scott James Remnant ] + + * SAUCE: Prefer powernow-k8 to acpi-cpufreq + * Change CONFIG_X86_P4_CLOCKMOD to be a module again. + + [ Tim Gardner ] + + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new + group descriptor when resizing the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check + to make_indexed_dir" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: only use + i_size_high for regular files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks + for the superblock before mounting the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix + s_dirty_blocks_counter if block allocation failed with nodelalloc" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Init the complete + page while building buddy cache" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new + groups to be added during block allocation" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: mark the + blocks/inode bitmap beyond end of group as used" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use new + buffer_head flag to check uninit group bitmaps initialization" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the race + between read_inode_bitmap() and ext4_new_inode()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks + freed but not yet committed in buddy cache init" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc + header files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added + during resize to bitmap" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status" + * Revert "SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not + supported test to journal_wait_on_commit_record" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[]" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error + when mounting a fs with a single bg" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset." + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add support for + non-native signed/unsigned htree hash algorithms" + * Enabled X86_ACPI_CPUFREQ=y + + [ Upstream Kernel Changes ] + + * ath9k: quiet harmless ForceXPAon messages + - LP: #321474 + * [WATCHDOG] iTCO_wdt: fix SMI_EN regression 2 + - LP: #314050 + * pid: implement ns_of_pid + * mqueue: fix si_pid value in mqueue do_notify() + * powerpc/vsx: Fix VSX alignment handler for regs 32-63 + * sata_nv: give up hardreset on nf2 + * Fix Intel IOMMU write-buffer flushing + * SCSI: libiscsi: fix iscsi pool leak + * x86/cpa: make sure cpa is safe to call in lazy mmu mode + * sched: SCHED_OTHER vs SCHED_IDLE isolation + * x86, vm86: fix preemption bug + * Add support for VT6415 PCIE PATA IDE Host Controller + * ext2/xip: refuse to change xip flag during remount with busy inodes + * 3c505: do not set pcb->data.raw beyond its size + * Bluetooth: Fix TX error path in btsdio driver + * ext4: Add support for non-native signed/unsigned htree hash algorithms + * ext4: tone down ext4_da_writepages warnings + * ext4: Fix the delalloc writepages to allocate blocks at the right + offset. + * ext4: avoid ext4_error when mounting a fs with a single bg + * ext4: Widen type of ext4_sb_info.s_mb_maxs[] + * jbd2: Add barrier not supported test to journal_wait_on_commit_record + * ext4: Don't overwrite allocation_context ac_status + * ext4: Add blocks added during resize to bitmap + * ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * ext4: cleanup mballoc header files + * ext4: don't use blocks freed but not yet committed in buddy cache init + * ext4: Fix race between read_block_bitmap() and mark_diskspace_used() + * ext4: Fix the race between read_inode_bitmap() and ext4_new_inode() + * ext4: Use new buffer_head flag to check uninit group bitmaps + initialization + * ext4: mark the blocks/inode bitmap beyond end of group as used + * ext4: Don't allow new groups to be added during block allocation + * ext4: Init the complete page while building buddy cache + * ext4: Fix s_dirty_blocks_counter if block allocation failed with + nodelalloc + * ext4: Add sanity checks for the superblock before mounting the + filesystem + * ext4: only use i_size_high for regular files + * ext4: Add sanity check to make_indexed_dir + * ext4: Initialize the new group descriptor when resizing the filesystem + * Fix longstanding "error: storage size of '__mod_dmi_device_table' isn't + known" + * Linux 2.6.28.7 + + -- Tim Gardner Thu, 19 Feb 2009 06:45:55 -0700 + +linux (2.6.28-8.24) jaunty; urgency=low + + [ Scott James Remnant ] + + * Change CPU_FREQ_DEFAULT_GOV_ONDEMAND to y + * SAUCE: Link acpi-cpufreq.o first + + [ Tim Gardner ] + + * Build in CPU Frequency scaling drivers + + -- Tim Gardner Wed, 18 Feb 2009 06:12:24 -0700 + +linux (2.6.28-8.23) jaunty; urgency=low + + [ Andy Whitcroft ] + + * include the kernel configuration in the sub-flavour images + - LP: #328859 + + [ Tim Gardner ] + + * Revert "SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks" in favor of upstream commit. + * Fix compile issues with qc-usb + * SAUCE: (remove after 2.6.28) V4L/DVB (10216): saa7127: fix broken + S-Video with saa7129 + - LP: #329267 + + [ Upstream Kernel Changes ] + + * Subject:SAUCE: LP#193970 iwlagn: fix hw-rfkill while the interface is + down + - LP: #193970 + * x86, vmi: put a missing paravirt_release_pmd in pgd_dtor + * nbd: fix I/O hang on disconnected nbds + * mac80211: restrict to AP in outgoing interface heuristic + * w1: w1 temp calculation overflow fix + * zd1211rw: adding 0ace:0xa211 as a ZD1211 device + * zd1211rw: treat MAXIM_NEW_RF(0x08) as UW2453_RF(0x09) for TP-Link + WN322/422G + * parport: parport_serial, don't bind netmos ibm 0299 + * syscall define: fix uml compile bug + * kernel-doc: fix syscall wrapper processing + * Fix page writeback thinko, causing Berkeley DB slowdown + * write-back: fix nr_to_write counter + * writeback: fix break condition + * mm: rearrange exit_mmap() to unlock before arch_exit_mmap + * powerpc/fsl-booke: Fix mapping functions to use phys_addr_t + * lockd: fix regression in lockd's handling of blocked locks + * sctp: Fix crc32c calculations on big-endian arhes. + * sctp: Correctly start rtx timer on new packet transmissions. + * sctp: Properly timestamp outgoing data chunks for rtx purposes + * net: Fix frag_list handling in skb_seq_read + * net: Fix OOPS in skb_seq_read(). + * drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic + * ipv4: fix infinite retry loop in IP-Config + * net: Fix userland breakage wrt. linux/if_tunnel.h + * net: packet socket packet_lookup_frame fix + * packet: Avoid lock_sock in mmap handler + * sungem: Soft lockup in sungem on Netra AC200 when switching interface + up + * udp: Fix UDP short packet false positive + * udp: increments sk_drops in __udp_queue_rcv_skb() + * ipv6: Disallow rediculious flowlabel option sizes. + * ipv6: Copy cork options in ip6_append_data + * net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2 + * sky2: fix hard hang with netconsoling and iface going up + * tun: Add some missing TUN compat ioctl translations. + * tun: Fix unicast filter overflow + * virtio_net: Fix MAX_PACKET_LEN to support 802.1Q VLANs + * tcp: splice as many packets as possible at once + * tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits. + * sparc: Enable syscall wrappers for 64-bit (CVE-2009-0029) + * sparc64: Annotate sparc64 specific syscalls with SYSCALL_DEFINEx() + * ALSA: hda - Add missing terminator in slave dig-out array + * ALSA: mtpav - Fix initial value for input hwport + * HID: adjust report descriptor fixup for MS 1028 receiver + * ide/libata: fix ata_id_is_cfa() (take 4) + * libata: fix EH device failure handling + * netfilter: fix tuple inversion for Node information request + * netfilter: xt_sctp: sctp chunk mapping doesn't work + * x86: microcode_amd: fix wrong handling of equivalent CPU id + * ide-cd: fix DMA for non bio-backed requests + * net: Fix data corruption when splicing from sockets. + * Linux 2.6.28.6 + * eCryptfs: Regression in unencrypted filename symlinks + + -- Tim Gardner Mon, 16 Feb 2009 06:43:51 -0700 + +linux (2.6.28-8.22) jaunty; urgency=low + + [ Amit Kucheria ] + + * Remove perm-blacklist + + [ Andy Whitcroft ] + + * SAUCE: psmouse/synaptics: ensure we reset the device on resume + - LP: #317270 + + [ Tim Gardner ] + + * Add lpia to getabi script + * SAUCE: tracer for sreadahead + + -- Amit Kucheria Fri, 13 Feb 2009 15:23:21 +0200 + +linux (2.6.28-8.21) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: switch the Asus Pundit P1-AH2 to old acpi sleep ordering + - LP: #327267 + + [ Tim Gardner ] + + * Added LPIA arch support + * Added libdrm-dev as a 'Replaces' to linux-libc-dev + * SAUCE: LPIA support for 9202 HDA Sigmatel codec + * SAUCE: Add an X86_LPIA Kconfig option + * SAUCE: UHCI USB quirk for resume + * SAUCE: LPIA Reboot fix for Intel Crownbeach development boards + * SAUCE: LPIA Logical reset of USB port on resume + * Set CONFIG_WIRELESS_OLD_REGULATORY=n, added wireless-crda + as an install dependency. + + [ Upstream Kernel Changes ] + + * Revert "Revert "x86, early_ioremap: fix fencepost error"" + - LP: #312554 + * drm/i915: capture last_vblank count at IRQ uninstall time too + - LP: #320813 + * drm/i915: add get_vblank_counter function for GM45 + - LP: #320813 + * Staging: comedi: fix Kbuild + * Staging: meilhaus: fix Kbuild + * Staging: android: binder: fix arm build errors + * Staging: android: timed_gpio: Fix build to build on kernels after + 2.6.25. + * Staging: android: fix build error on 64bit boxes + * Staging: android: Add lowmemorykiller documentation. + * Staging: android: task_get_unused_fd_flags: fix the wrong usage of + tsk->signal + * staging: agnx: drivers/staging/agnx/agnx.h needs + * Staging: usbip: usbip_start_threads(): handle kernel_thread failure + * Staging: poch: fix verification of memory area + * Documentation: move DMA-mapping.txt to Doc/PCI/ + * sgi-xp: fix writing past the end of kzalloc()'d space + * do_wp_page: fix regression with execute in place + * wait: prevent exclusive waiter starvation + * shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM + * revert "rlimit: permit setting RLIMIT_NOFILE to RLIM_INFINITY" + * prevent kprobes from catching spurious page faults + * sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices + * md: Ensure an md array never has too many devices. + * md: Fix a bug in linear.c causing which_dev() to return the wrong + device. + * ACPI: Enable bit 11 in _PDC to advertise hw coord + * ACPI: dock: Don't eval _STA on every show_docked sysfs read + * ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from + Panasonic camcorders and others + * firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic + camcorders and others + * firewire: sbp2: fix DMA mapping leak on the failure path + * firewire: sbp2: add workarounds for 2nd and 3rd generation iPods + * ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods + * module: remove over-zealous check in __module_get() + * x86: APIC: enable workaround on AMD Fam10h CPUs + * eeepc-laptop: fix oops when changing backlight brightness during + eeepc-laptop init + * eeepc-laptop: Add support for extended hotkeys + * e1000: fix bug with shared interrupt during reset + * e1000: Fix PCI enable to honor the need_ioport flag + * agp/intel: Fix broken ® symbol in device name. + * ALSA: hda - Add quirk for FSC Amilo Xi2550 + * ALSA: hda - Add missing COEF initialization for ALC887 + * ALSA: hda - Add missing initialization for ALC272 + * asus_acpi: Add R1F support + * panasonic-laptop: fix X[ ARRAY_SIZE(X) ] + * ACPI: Skip the first two elements in the _BCL package + * ACPI: proc_dir_entry 'video/VGA' already registered + * ACPI: disable ACPI cleanly when bad RSDP found + * ACPICA: Fix table entry truncation calculation + * PCI: properly clean up ASPM link state on device remove + * PCI: return error on failure to read PCI ROMs + * seq_file: move traverse so it can be used from seq_read + * seq_file: fix big-enough lseek() + read() + * serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS + EX-41092 Dual 16950 Serial adapter + * Add support for '8-port RS-232 MIC-3620 from advantech' + * mm: fix error case in mlock downgrade reversion + * elf core dump: fix get_user use + * ACPI: video: Fix reversed brightness behavior on ThinkPad SL series + * ipw2200: fix scanning while associated + * XFS: set b_error from bio error in xfs_buf_bio_end_io + * Revert USB: option: add Pantech cards + * USB: option: New mobile broadband modems to be supported + * USB: new id for ti_usb_3410_5052 driver + * USB: two more usb ids for ti_usb_3410_5052 + * USB: usb-storage: add Pentax to the bad-vendor list + * sata_via: Add VT8261 support + * nbd: do not allow two clients at the same time + * sctp: Fix another socket race during accept/peeloff + * Linux 2.6.28.5 + + -- Tim Gardner Mon, 09 Feb 2009 16:11:28 -0700 + +linux (2.6.28-7.20) jaunty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Input: atkbd - Samsung NC10 key repeat fix + + [ Upstream Kernel Changes ] + + * Manually revert "mlock: downgrade mmap sem while populating mlocked + regions" + * xen: make sysfs files behave as their names suggest + * sata_mv: fix 8-port timeouts on 508x/6081 chips + * m68knommu: set NO_DMA + * PCI/MSI: bugfix/utilize for msi_capability_init() + * x86: use early clobbers in usercopy*.c + * netfilter: ctnetlink: fix scheduling while atomic + * orinoco: move kmalloc(..., GFP_KERNEL) outside spinlock in + orinoco_ioctl_set_genie + * fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks + * kmalloc: return NULL instead of link failure + * sata_nv: rename nv_nf2_hardreset() + * sata_nv: fix MCP5x reset + * sata_nv: ck804 has borked hardreset too + * Fix memory corruption in console selection + * Add enable_ms to jsm driver + * nfsd: only set file_lock.fl_lmops in nfsd4_lockt if a stateowner is + found + * nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT + * iwlwifi: fix rs_get_rate WARN_ON() + * p54: fix lm87 checksum endianness + * p54: fix p54_read_eeprom to cope with tx_hdr_len + * p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities + * minstrel: fix warning if lowest supported rate index is not 0 + * PCI: irq and pci_ids patch for Intel Tigerpoint DeviceIDs + * cpuidle: Add decaying history logic to menu idle predictor + * ACPI: Avoid array address overflow when _CST MWAIT hint bits are set + * video: always update the brightness when poking "brightness" + * Newly inserted battery might differ from one just removed, so update of + battery info fields is required. + * ACPI: Do not modify SCI_EN directly + * dlm: initialize file_lock struct in GETLK before copying conflicting + lock + * sata_mv: Fix chip type for Hightpoint RocketRaid 1740/1742 + * ACPICA: Allow multiple backslash prefix in namepaths + * Linux 2.6.28.4 + + -- Tim Gardner Sat, 07 Feb 2009 18:53:42 -0700 + +linux (2.6.28-7.19) jaunty; urgency=low + + * Fix missing modules FTBS + + -- Tim Gardner Thu, 05 Feb 2009 15:28:15 -0700 + +linux (2.6.28-7.18) jaunty; urgency=low + + [ Alok Kataria ] + + * SAUCE: (drop after 2.6.29) x86: add a synthetic TSC_RELIABLE feature + bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: add X86_FEATURE_HYPERVISOR feature bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Hypervisor detection and get tsc_freq + from hypervisor + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Add a synthetic TSC_RELIABLE feature + bit. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Skip verification by the watchdog for + TSC clocksource. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: VMware: Fix vmware_get_tsc code + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: vmware: look for DMI string in the + product serial key + - LP: #319945 + + [ Andy Whitcroft ] + + * SAUCE: toshiba_acpi -- pull in current -dev version of driver + - LP: #269831 + * SAUCE: toshiba_acpi -- add acpi hotkey kernel thread + - LP: #269831 + * move toshiba laptops back from tlsup to toshiba_acpi + - LP: #269831 + + [ Aneesh Kumar K.V ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset. + * SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error when + mounting a fs with a single bg + * SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status + * SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added during + resize to bitmap + * SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc header + files + * SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks freed but + not yet committed in buddy cache init + * SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used() + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the race between + read_inode_bitmap() and ext4_new_inode() + * SAUCE: (revert before 2.6.28.y update) ext4: Use new buffer_head flag + to check uninit group bitmaps initialization + * SAUCE: (revert before 2.6.28.y update) ext4: mark the blocks/inode + bitmap beyond end of group as used + * SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new groups to + be added during block allocation + * SAUCE: (revert before 2.6.28.y update) ext4: Init the complete page + while building buddy cache + * SAUCE: (revert before 2.6.28.y update) ext4: Fix s_dirty_blocks_counter + if block allocation failed with nodelalloc + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.29) x86: vmware - fix sparse warnings + - LP: #319945 + + [ Luke Yelavich ] + + * hid modules have hyphens instead of underscores in their names + + [ Mark Fasheh ] + + * SAUCE: (revert before 2.6.28.y update) jbd2: Add BH_JBDPrivateStart + + [ Theodore Ts'o ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Add support for non-native + signed/unsigned htree hash algorithms + * SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings + * SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not supported + test to journal_wait_on_commit_record + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks for the + superblock before mounting the filesystem + * SAUCE: (revert before 2.6.28.y update) ext4: only use i_size_high for + regular files + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check to + make_indexed_dir + * SAUCE: (revert before 2.6.28.y update) jbd2: On a __journal_expect() + assertion failure printk "JBD2", not "EXT3-fs" + * SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new group + descriptor when resizing the filesystem + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks + - LP: #322532 + + [ Upstream Kernel Changes ] + + * Input: atkbd - broaden the Dell DMI signatures + - LP: #261721 + * ti_usb_3410_5052: support alternate firmware + * ath5k: fix mesh point operation + * mac80211: decrement ref count to netdev after launching mesh discovery + * inotify: clean up inotify_read and fix locking problems + * fuse: destroy bdi on umount + * fuse: fix missing fput on error + * fuse: fix NULL deref in fuse_file_alloc() + * x86, mm: fix pte_free() + * klist.c: bit 0 in pointer can't be used as flag + * sysfs: fix problems with binary files + * x86: fix page attribute corruption with cpa() + * USB: fix toggle mismatch in disable_endpoint paths + * sound: virtuoso: enable UART on Xonar HDAV1.3 + * USB: usbmon: Implement compat_ioctl + * USB: fix char-device disconnect handling + * USB: storage: add unusual devs entry + * alpha: nautilus - fix compile failure with gcc-4.3 + * alpha: fix vmalloc breakage + * resources: skip sanity check of busy resources + * rtl8187: Add termination packet to prevent stall + * it821x: Add ultra_mask quirk for Vortex86SX + * libata: pata_via: support VX855, future chips whose IDE controller use + 0x0571 + * serial_8250: support for Sealevel Systems Model 7803 COMM+8 + * drm: stash AGP include under the do-we-have-AGP ifdef + * Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments + * bnx2x: Block nvram access when the device is inactive + * ext3: Add sanity check to make_indexed_dir + * rtl8187: Fix error in setting OFDM power settings for RTL8187L + * epoll: drop max_user_instances and rely only on max_user_watches + * gpiolib: fix request related issue + * sgi-xpc: Remove NULL pointer dereference. + * sgi-xpc: ensure flags are updated before bte_copy + * include/linux: Add bsg.h to the Kernel exported headers + * ALSA: hda - Fix PCM reference NID for STAC/IDT analog outputs + * ALSA: hda - add another MacBook Pro 4, 1 subsystem ID + * ALSA: hda - Add quirk for HP DV6700 laptop + * crypto: authenc - Fix zero-length IV crash + * crypto: ccm - Fix handling of null assoc data + * x86, pat: fix reserve_memtype() for legacy 1MB range + * x86, pat: fix PTE corruption issue while mapping RAM using /dev/mem + * PCI hotplug: fix lock imbalance in pciehp + * dmaengine: fix dependency chaining + * NET: net_namespace, fix lock imbalance + * relay: fix lock imbalance in relay_late_setup_files + * Linux 2.6.28.3 + * ALSA: Enable SPDIF output on ALC655 + * ALSA: hda - Add ASUS V1Sn support + * ALSA: hda - support detecting HD Audio devices with PCI class code + * ALSA: hda: alc883 model for ASUS P5Q-EM boards + * ALSA: hda - Add quirk for MSI 7260 mobo + * ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN + * ALSA: oxygen: add Claro halo support + * ALSA: hda - Add a new function to seek for a codec ID + * ALSA: patch_sigmatel: Add missing Gateway entries and autodetection + * ALSA: hda - More fixes on Gateway entries + * ALSA: hda - Add MCP67 HDMI support + * ALSA: hda - fix name for ALC1200 + * LSA: hda - Add HP Acacia detection + * ALSA: hda - Add quirk for HP 2230s + * ALSA: hda - Add quirk for Dell Inspiron Mini9 + * ALSA: hda - add support for Intel DX58SO board + * ALSA: hda - Fix silent headphone output on Panasonic CF-74 + * ALSA: USB quirk for Logitech Quickcam Pro 9000 name + * ALSA: hda - add quirks for some 82801H variants to use ALC883_MITAC + + [ Yasunori Goto ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[] + + -- Tim Gardner Mon, 02 Feb 2009 23:07:13 -0700 + +linux (2.6.28-6.17) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs: ARMEL/versatile + + -- Amit Kucheria Fri, 30 Jan 2009 13:36:59 +0200 + +linux (2.6.28-6.16) jaunty; urgency=low + + [ Luke Yelavich ] + + * Add hid quirks to input-modules udeb + + [ Tim Gardner ] + + * Revert "[arm] Fix kexec on ARM by properly calling the relocation + function". This patch was deemed 'bogus' by Russell King on the + ARM mailing list. + + [ Upstream Kernel Changes ] + + * PCI: keep ASPM link state consistent throughout PCIe hierarchy + * security: introduce missing kfree + * rt2x00: add USB ID for the Linksys WUSB200. + * p54usb: Add USB ID for Thomson Speedtouch 121g + * lib/idr.c: use kmem_cache_zalloc() for the idr_layer cache + * sgi-xp: eliminate false detection of no heartbeat + * sched: fix update_min_vruntime + * IA64: Turn on CONFIG_HAVE_UNSTABLE_CLOCK + * sound: virtuoso: do not overwrite EEPROM on Xonar D2/D2X + * ALSA: hda - Add quirk for another HP dv5 + * ALSA: hda - Fix HP dv5 mic input + * ALSA: hda - Don't reset HP pinctl in patch_sigmatel.c + * ALSA: hda - make laptop-eapd model back for AD1986A + * drivers/net/irda/irda-usb.c: fix buffer overflow + * usb-storage: add last-sector hacks + * usb-storage: set CAPACITY_HEURISTICS flag for bad vendors + * pkt_sched: sch_htb: Fix deadlock in hrtimers triggered by HTB + * ipv6: Fix fib6_dump_table walker leak + * sctp: Avoid memory overflow while FWD-TSN chunk is received with bad + stream ID + * pkt_sched: cls_u32: Fix locking in u32_change() + * r6040: fix wrong logic in mdio code + * r6040: save and restore MIER correctly in the interrupt routine + * r6040: bump release number to 0.19 + * tcp: don't mask EOF and socket errors on nonblocking splice receive + * p54usb: fix traffic stalls / packet drop + * netfilter: x_tables: fix match/target revision lookup + * netfilter: ebtables: fix inversion in match code + * netfilter: nf_conntrack: fix ICMP/ICMPv6 timeout sysctls on big-endian + * dell_rbu: use scnprintf() instead of less secure sprintf() + * powerpc: is_hugepage_only_range() must account for both 4kB and 64kB + slices + * hwmon: (abituguru3) Fix CONFIG_DMI=n fallback to probe + * mm: write_cache_pages cyclic fix + * mm: write_cache_pages early loop termination + * mm: write_cache_pages writepage error fix + * mm: write_cache_pages integrity fix + * mm: write_cache_pages cleanups + * mm: write_cache_pages optimise page cleaning + * mm: write_cache_pages terminate quickly + * mm: write_cache_pages more terminate quickly + * mm: do_sync_mapping_range integrity fix + * mm: direct IO starvation improvement + * fs: remove WB_SYNC_HOLD + * fs: sync_sb_inodes fix + * fs: sys_sync fix + * Linux 2.6.28.2 + + -- Tim Gardner Sun, 25 Jan 2009 13:36:16 -0700 + +linux (2.6.28-5.15) jaunty; urgency=low + + [ Tim Gardner ] + + * Revert "Enabled CONFIG_PID_NS=y for i386/amd64" + Somehow this commit also reverted the 7 prior commits (which is bad). + * Enabled CONFIG_PID_NS=y for i386/amd64 (version 2) + + -- Tim Gardner Thu, 22 Jan 2009 13:48:34 -0700 + +linux (2.6.28-5.14) jaunty; urgency=low + + [ Ben Collins ] + + * lirc_gpio: Forward ported to current kernel (jaunty) + * configs: Enable LIRC_GPIO on 64-bit/32-bit x86 + - LP: #298791 + + [ Jeff Layton ] + + * SAUCE: cifs: make sure we allocate enough storage for socket address + - LP: #318565 + + [ Tim Gardner ] + + * check-abi: Return success when ABI skip is requested and no ABI files exist. + This ought to fix the armel FTBS. + + -- Tim Gardner Thu, 22 Jan 2009 06:42:49 -0700 + +linux (2.6.28-5.13) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control" + + [ Tim Gardner ] + + * Fix udeb generation breakage caused by the previous armel versatile + flavour config update. + + -- Tim Gardner Wed, 21 Jan 2009 12:38:35 -0700 + +linux (2.6.28-5.12) jaunty; urgency=low + + [ Ante ] + + * Update drbd to 8.3.0 + + [ Dave Airlie ] + + * i915/drm: provide compat defines for userspace for certain struct + + [ Eric Anholt ] + + * drm/i915: Don't double-unpin buffers if we take a signal in + * drm/i915: Don't complain when interrupted while pinning in execbuffers. + * drm/i915: Don't allow objects to get bound while VT switched. + + [ Jani Monoses ] + + * Fix webcam having USB ID 0ac8:303b + - LP: #292086 + + [ Jesse Barnes ] + + * drm/i915: set vblank enabled flag correctly across IRQ + * drm/i915: don't enable vblanks on disabled pipes + + [ Michael Casadevall ] + + * [arm] Fix kexec on ARM by properly calling the relocation function + + [ Tim Gardner ] + + * Enabled CONFIG_PID_NS=y for i386/amd64 + * SAUCE: Increase ATA_TMOUT_PMP_SRST_WAIT to 5 seconds. + - LP: #318978 + * Update armel versatile config + - LP: #314789 + * Enabled CONFIG_RT2860=m for i386/amd64 + * Enabled CONFIG_RT2870=m for i386/amd64 + + [ Upstream Kernel Changes ] + + * Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop + - LP: #291878 + * ALSA: hda - Add quirk for another HP dv7 + * ALSA: hda - Add quirk for HP6730B laptop + * ALSA: caiaq - Fix Oops with MIDI + * ALSA: hda - Fix typos for AD1882 codecs + * x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies + * x86: default to SWIOTLB=y on x86_64 + * CIFS: make sure that DFS pathnames are properly formed + * ring-buffer: prevent false positive warning + * ring-buffer: fix dangling commit race + * iwlwifi: use GFP_KERNEL to allocate Rx SKB memory + * tx493[89]ide: Fix length for __ide_flush_dcache_range + * tx4939ide: Do not use zero count PRD entry + * SCSI: eata: fix the data buffer accessors conversion regression + * USB: emi26: fix oops on load + * x86, UV: remove erroneous BAU initialization + * x86: fix incorrect __read_mostly on _boot_cpu_pda + * vmalloc.c: fix flushing in vmap_page_range() + * fs: symlink write_begin allocation context fix + * cgroups: fix a race between cgroup_clone and umount + * dm raid1: fix error count + * dm log: fix dm_io_client leak on error paths + * minix: fix add link's wrong position calculation + * md: fix bitmap-on-external-file bug. + * sched_clock: prevent scd->clock from moving backwards, take #2 + * devices cgroup: allow mkfifo + * SCSI: aha152x_cs: Fix regression that keeps driver from using shared + interrupts + * ioat: fix self test for multi-channel case + * USB: isp1760: use a specific PLX bridge instead of any bdridge + * USB: isp1760: Fix probe in PCI glue code + * USB: unusual_devs.h additions for Pentax K10D + * inotify: fix type errors in interfaces + * Move compat system call declarations to compat header file + * Convert all system calls to return a long + * Rename old_readdir to sys_old_readdir + * Remove __attribute__((weak)) from sys_pipe/sys_pipe2 + * Make sys_pselect7 static + * Make sys_syslog a conditional system call + * System call wrapper infrastructure + * powerpc: Enable syscall wrappers for 64-bit + * s390: enable system call wrappers + * System call wrapper special cases + * System call wrappers part 01 + * System call wrappers part 02 + * System call wrappers part 03 + * System call wrappers part 04 + * System call wrappers part 05 + * System call wrappers part 06 + * System call wrappers part 07 + * System call wrappers part 08 + * System call wrappers part 09 + * System call wrappers part 10 + * System call wrappers part 11 + * System call wrappers part 12 + * System call wrappers part 13 + * System call wrappers part 14 + * System call wrappers part 15 + * System call wrappers part 16 + * System call wrappers part 17 + * System call wrappers part 18 + * System call wrappers part 19 + * System call wrappers part 20 + * System call wrappers part 21 + * System call wrappers part 22 + * System call wrappers part 23 + * System call wrappers part 24 + * System call wrappers part 25 + * System call wrappers part 26 + * System call wrappers part 27 + * System call wrappers part 28 + * System call wrappers part 29 + * System call wrappers part 30 + * System call wrappers part 31 + * System call wrappers part 32 + * System call wrappers part 33 + * s390 specific system call wrappers + * x86: fix RIP printout in early_idt_handler + * Fix timeouts in sys_pselect7 + * USB: another unusual_devs entry for another bad Argosy storage device + * USB: storage: extend unusual range for 067b:3507 + * USB: storage: recognizing and enabling Nokia 5200 cell phoes + * HID: fix error condition propagation in hid-sony driver + * fix switch_names() breakage in short-to-short case + * nfs: remove redundant tests on reading new pages + * eCryptfs: check readlink result was not an error before using it + * mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003 + * x86: avoid theoretical vmalloc fault loop + * ath9k: enable RXing of beacons on STA/IBSS + * mm lockless pagecache barrier fix + * powerpc: Disable Collaborative Memory Manager for kdump + * ibmvfc: Delay NPIV login retry and add retries + * ibmvfc: Improve async event handling + * getrusage: RUSAGE_THREAD should return ru_utime and ru_stime + * ath5k: ignore the return value of ath5k_hw_noise_floor_calibration + * mm: fix assertion + * XFS: truncate readdir offsets to signed 32 bit values + * Linux 2.6.28.1 + * eCryptfs: Filename Encryption: Tag 70 packets + * eCryptfs: Filename Encryption: Header updates + * eCryptfs: Filename Encryption: Encoding and encryption functions + * eCryptfs: Filename Encryption: filldir, lookup, and readlink + * eCryptfs: Filename Encryption: mount option + * eCryptfs: Replace %Z with %z + * eCryptfs: Fix data types (int/size_t) + * eCryptfs: kerneldoc for ecryptfs_parse_tag_70_packet() + * eCryptfs: Clean up ecryptfs_decode_from_filename() + * fs/ecryptfs/inode.c: cleanup kerneldoc + * staging-p80211: Kill directly reference of netdev->priv + * staging-slicoss: Kill directly reference of netdev->priv + * staging-winbond: Kill directly reference of netdev->priv + * Staging: go7007: fixes due to video_usercopy api change + * Staging: go7007: fixes due v4l2_file_operations api change + * staging: correct dubious use of !x & y + * Staging: w35und: make wb35_probe() and wb35_disconnect() funtions static + * Staging: w35und: remove unused wb35_open() and wb35_close() functions + * Staging: w35und: use msleep() and udelay() + * Staging: w35und: remove the no-op pa_stall_execution macro + * Staging: w35und: purb typedef removal + * Staging: w35und: reg queue struct typedef removal + * Staging: w35und: wb35reg struct typedef removal + * Staging: w35und: padapter struct typedef removal + * Staging: w35und: merge wblinux struct to adapter + * Staging: w35und: wb35_probe() cleanup + * Staging: w35und: remove usb_submit_urb wrapper function + * Staging: w35und: remove usb_alloc_urb wrapper function + * w35und: remove dead code from wbusb_f.h + * Staging: w35und: remove true/false boolean macros + * Staging: w35und: OS_MEMORY_ALLOC wrapper removal + * Staging: w35und: usb_put_dev() is missing from wb35_disconnect() + * Staging: w35und: remove macro magic from MLME_GetNextPacket() + * Staging: w35und: plug memory leak in wbsoft_tx() + * Staging: w35und: move supported band initialization out of wb35_probe() + * Staging: w35und: remove timer wrappers + * Staging: w35und: remove atomic op wrappers + * Staging: w35und: remove memcpy/memcmp wrappers + * Staging: w35und: remove abs() and BIT() macros + * Staging: w35und: remove unused macros from common.h + * Staging: w35und: remove unused link status code + * Staging: w35und: #include cleanup + * Staging: w35und: remove some dead code + * Staging: w35und: move source files to one directory + * Staging: w35und: move struct wbsoft_priv to core.h and use it + * Staging: w35und: remove ->adapter from struct _HW_DATA_T + * Staging: w35und: clean up adapter.h a bit + * Staging: w35und: merge struct wb35_adapter to struct wbsoft_priv + * Staging: w35und: remove global struct ieee80211_hw + * Staging: w35und: inline DRIVER_AUTHOR and DRIVER_DESC macros + * Staging: w35und: clean up wblinux.c a bit + * Staging: w35und: remove unused ->ShutDowned member from struct + LOCAL_PARA + * Staging: w35und: move global wbsoft_enabled to struct wbsoft_priv + * Staging: w35und: move packet_came() to wb35rx.c + * Staging: w35und: remove ->skb_array from struct wbsoft_priv + * Staging: w35und: remove ->shutdown from struct wbsoft_priv + * Staging: w35und: make functions local to mds.c static + * Staging: w35und: make functions local to mlmetxrx.c static + * Staging: w35und: remove dead code from mto.c + * Staging: w35und: make functions local to wb35rx.c static + * Staging: w35und: make functions local to wb35tx.c static + * Staging: w35und: remove dead code from wbhal.c + * Staging: w35und: remove rxisr.c as dead code + * Staging: w35und: fix Kconfig + * Staging: w35und: fix config build warnings + * Staging: wlan-ng: Remove PCI/PLX/PCMCIA files. + * Staging: wlan-ng: Update Help text to mention prism3 devices. + * Staging: wlan-ng: Delete PCI/PLX/PCMCIA-specific code. + * Staging: wlan-ng: Make wlan-ng use WEXT mode by default. + * Staging: wlan-ng: Eliminate more <2.6 kernel support. + * Staging: wlan-ng: Eliminate all backwards-compatibility for <2.6.13 kernels. + * Staging: wlan-ng: Eliminate a boatload of tertiaryAP-only code. + * Staging: wlan-ng: Remove AP-only code from MLME functions. + * Staging: wlan-ng: Get rid of the MTU tests in the rx conversion path. + * Staging: wlan-ng: Eliminate one more rx mtu test. + * Staging: wlan-ng: Eliminate local 'version.h' + * Staging: wlan-ng: Eliminate usage of procfs. + * Staging: wlan-ng: Use standard kernel integer (u32/s32/etc) types. + * Staging: wlan-ng: Eliminate all backwards-compatible kernel code. + * Staging: wlan-ng: Wireless Extension support is mandatory. + * Staging: wlan-ng: use WIRELESS_EXT, not CONFIG_WIRELESS_EXT + * Staging: wlan-ng: Delete a large pile of now-unused code. + * Staging: wlan-ng: Delete a pile of unused mibs. And fix WEXT SET_TXPOWER. + * Staging: wlan-ng: Consolidate wlan-ng into a single module. + * Staging: wlan-ng: Purge all MIBs not used internally. + * Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start + * Staging: wlan-ng: prism2_usb.c always enable the card in probe_usb + * Staging: wlan-ng: hfa384x_usb.c use newest version of 384x_drvr_start + * Staging: wlan-ng: p80211wext.c add latest changes & remove extra nulls from wext_handlers + * Staging: wlan-ng: p80211wext don't set default key id twice + * Staging: wlan-ng: hfa384x_usbin_callback: check for hardware removed + * Staging: wlan-ng: p80211conv.c copy code from wlan-ng-devel branch to not drop packets + * Staging: wlan-ng: remove unused #include + * Staging: wlan-ng: p80211wext.c: use ARRAY_SIZE + * Staging: wlan-ng: fix compiler warnings + * Staging: wlan-ng: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction + * Staging: at76_usb: update drivers/staging/at76_usb w/ mac80211 port + * Staging: at76_usb: fix build breakage + * Staging: at76_usb: remove compiler warnings + * Staging: at76_usb: fix up all remaining checkpatch.pl warnings + * Staging: at76_usb: cleanup dma on stack issues + * Staging: poch: Block size bug fix + * Staging: poch: Update TODO list + * Staging: poch: Correct pages from bytes. + * Staging: poch: minor fixes + * Staging: poch: Fix build warnings + * Staging: poch: Rx control register init + * Staging: poch: Fix user space protocol syncing + * Staging: poch: Fine grained locking + * Staging: sxg: remove typedefs + * Staging: sxg: break the build in a cleaner way when !x86 + * Staging: sxg: update README + * staging: struct device - replace bus_id with dev_name(), dev_set_name() + * Staging: echo: remove typedefs + * Staging: echo: Lindent drivers/staging/echo + * Staging: go7007: saa7134 updates + * Staging: go7007: add sensoray 2250/2251 support + * Staging: go7007: Convert driver to use video_ioctl2 + * Staging: go7007: annotate code pointers + * Staging: go7007: fix minor build warnings + * Staging: go7007: small cleanup + * Staging: go7007: add some more v4l2 ioctls + * Staging: et131x: Cleanup et131x_debug.h defines + * Staging: et131x: fix build failure + * Staging: et131x: remove unused variable in et1310_tx.c + * Staging: usbip: cleanup kerneldoc + * Staging: slicoss: use kzalloc + * Staging: slicoss: use correct type for memory allcations + * Staging: slicoss: use request_firmware + * Staging: add agnx wireless driver + * Staging: agnx: fix build errors due to ssid removal + * Staging: agnx: fix build errors due to rate control API changes + * Staging: agnx: fix build warnings + * Staging: add otus Atheros wireless network driver + * Staging: otus: fix netdev->priv usage + * Staging: otus: fix name clash + * Staging: otus: fix urb callback function type + * Staging: otus: remove dependence on kernel version + * Staging: add rt2860 wireless driver + * Staging: rt2860: disable root hack for reading files + * Staging: rt2860: fix up netdev->priv usage + * Staging: rt2860: use standard bit-reverse function + * Staging: rt2860: Fix minor compiler warnings + * Staging: rt2860: enable WPA_SUPPLICANT support + * Staging: Add ServerEngines benet 10Gb ethernet driver + * Staging: benet: fix netif api breakage + * Staging: benet: fix up netdev->priv change + * Staging: benet: build is broken unless CONFIG_NETPOLL is enabled + * Staging: benet: patch to remove subdirectories + * Staging: benet: fix build errors when CONFIG_NETPOLL is off + * Staging: benet: fix build error. + * Staging: benet: patch to use offsetof() instead of AMAP_BYTE_OFFSET() + * Staging: benet: fix problems reported by checkpatch + * Staging: benet: cleanup a check while posting rx buffers + * Staging: add comedi core + * Staging: comedi: fix up a lot of checkpatch.pl warnings + * Staging: comedi: fix checkpatch.pl errors in comedi_fops.c + * Staging: comedi: fix build error in comedilib.h + * Staging: comedi: add kcomedilib to the tree + * Staging: comedi: set up infrastructure for individual drivers + * Staging: comedi: add local copy of interrupt.h + * Staging: comedi: add pci and usb wrapper header files + * Staging: comedi: comedi driver common function module + * Staging: comedi: add mite comedi pci driver + * Staging: comedi: add usb usbdux driver + * Staging: comedi: add usb usbduxfast driver + * Staging: comedi: add usb dt9812 driver + * Staging: comedi: add comedi_bond driver + * Staging: comedi: add comedi_test driver + * Staging: comedi: add comedi_parport driver + * Staging: comedi: dt9812: fix up a lot of coding style issues + * Staging: comedi: dt9812: remove dt9812.h + * Staging: comedi: dt9812: remove typedefs + * Staging: comedi: dt9812: fix sparse warnings + * Staging: comedi: usbdux: remove kernel version checks + * Staging: comedi: usbdux: code style cleanups + * Staging: comedi: usbdux: remove // comments + * Staging: comedi: usbdux: fix up printk calls + * Staging: comedi: usbdux: remove checkpatch.pl warnings + * Staging: comedi: usbdux: remove typedef + * Staging: comedi: usbdux: remove comedi usb wrappers + * Staging: comedi: usbduxfast: remove comedi usb wrappers + * Staging: comedi: dt9812: remove #ifdef that is not needed + * Staging: comedi: remove usb wrappers + * Staging: comedi: remove PCI wrappers + * Staging: comedi: add icp_multi driver + * Staging: comedi: add me4000 driver + * Staging: comedi: fix checkpatch.pl issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_fc.c + * Staging: comedi: remove typedefs from comedi_bond.c + * Staging: comedi: fix sparse issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_test.c + * Staging: comedi: fix sparse issues in comedi_test.c + * Staging: comedi: remove typedefs from comedi_test.c + * Staging: comedi: fix comedi_parport.c checkpatch.pl issues. + * Staging: comedi: fix comedi_fc.h checkpatch.pl issues. + * Staging: comedi: fix comedi_pci.h checkpatch.pl issues. + * Staging: comedi: comedi_pci.h: remove unneeded wrapper + * Staging: comedi: comedi_pci.h: remove comedi_pci_enable_no_regions + * Staging: comedi: comedi_pci.h: remove comedi_pci_disable_no_regions + * Staging: comedi: add s626 driver + * Staging: comedi: add rtd520 driver + * Staging: comedi: add me_daq driver + * Staging: comedi: me_daq: fix checkpatch.pl issues + * Staging: comedi: me_daq: remove typedefs + * Staging: comedi: me_daq: fix sparse issues + * Staging: comedi: fix checkpatch.pl warning in interrupt.h + * Staging: comedi: fix build if CONFIG_PROC_FS is not set + * Staging: add asus_oled driver + * Staging: asus_oled: fix build dependancy + * Staging: Add the Meilhaus ME-IDS driver package + * Staging: meilhaus: fix __symbol_get problems + * Staging: add lcd-panel driver + * Staging: panel: major checkpatch cleanup + * Staging: panel: remove ifdefs and code for pre-2.6 kernels + * Staging: panel: remove support for smartcards + * Staging: add Driver for Altera PCI Express Chaining DMA reference design + * Staging: add rtl8187se driver + * Staging: rtl8187se: remove unneeded files + * Staging: rtl8187se: make the built module be the proper name + * Staging: rtl8187se: remove duplicate pci ids + * Staging: me4000: switch to list_for_each*() + * Staging: usbip: switch to list_for_each_entry() + * Staging: add princeton instruments usb camera driver + * Staging: add mimio xi driver + * Staging: add rt2870 wireless driver + * Staging: rt2870: disable root hack for reading files + * Staging: rt2870: fix up netdev->priv usage + * Staging: add frontier tranzport and alphatrack drivers + * Staging: frontier: remove unused alphatrack_sysfs.c file + * Staging: frontier: fix compiler warnings + * Staging: add epl stack + * Staging: epl: run Lindent on all kernel/*.h files + * Staging: epl: run Lindent on all user/*.h files + * Staging: epl: run Lindent on *.h files + * Staging: epl: run Lindent on *.c files + * Staging: epl: hr timers all run in hard irq context now + * Staging: epl: fix netdev->priv b0rkage + * Staging: add android framework + * Staging: android: add binder driver + * Staging: android: binder: Fix gcc warnings about improper format specifiers for size_t in printk + * staging: android: binder: Fix use of euid + * Staging: android: add logging driver + * Staging: android: add ram_console driver + * Staging: android: add timed_gpio driver + * Staging: android: timed_gpio: Rename android_timed_gpio to timed_gpio + * Staging: android: remove dummy android.c driver + * Staging: android: add lowmemorykiller driver + * Staging: android: binder: fix build errors + * staging: __FUNCTION__ is gcc-specific, use __func__ + * V4L/DVB (10176a): Switch remaining clear_user_page users over to + clear_user_highpage + + [ Zhenyu Wang ] + + * agp/intel: add support for G41 chipset + + -- Tim Gardner Sun, 18 Jan 2009 20:22:54 -0700 + +linux (2.6.28-4.11) jaunty; urgency=low + + [ Mario Limonciello ] + + * SAUCE: Enable HDMI audio codec on Studio XPS 1340 + - LP: #309508 + + [ Tim Gardner ] + + * Fix armel d-i FTBSs + + [ Upstream Kernel Changes ] + + * USB: re-enable interface after driver unbinds + + -- Tim Gardner Tue, 13 Jan 2009 16:33:08 -0700 + +linux (2.6.28-4.10) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update kernel bootloader recommends: to prefer grub + - LP: #314004 + * SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control + - LP: #311716 + * SAUCE: test-suspend -- add the suspend test scripts + - LP: #316419 + + [ Colin Watson ] + + * Enable udebs for armel + + [ Tim Gardner ] + + * SAUCE: Dell laptop digital mic does not work, PCI 1028:0271 + - LP: #309508 + * Enable CIFS_XATTR=y and CONFIG_CIFS_POSIX=y + - LP: #220658 + + -- Tim Gardner Thu, 08 Jan 2009 10:38:22 -0700 + +linux (2.6.28-4.9) jaunty; urgency=low + + [ Tim Gardner ] + + * Restore DM_CRYPT, AES, ECB, and CBC as modules. This fixes + some installer issues with encrypted /home and Private directories. + * Take one more stab at building armel without module or ABI errors. + + -- Tim Gardner Tue, 06 Jan 2009 08:38:23 -0700 + +linux (2.6.28-4.8) jaunty; urgency=low + + * Fix i386/amd64 FTBS by ignoring all module and ABI changes, + not something you would normally do, but I'm sure the ABI + has not changed. This will probably also allow the ARM builds to complete. + + -- Tim Gardner Mon, 05 Jan 2009 14:42:58 -0700 + +linux (2.6.28-4.7) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_ATH5K=m for i386/amd64 + - LP: #306719 + * Build all i386/amd64 AGP/DRM components as modules. + - LP: #312721 + * git commands are now installed outside the default $PATH + Use 'git CMD' instead of 'git-CMD'. + * Build in most PATA/SATA drivers. This should allow most i386/amd64 systems to boot + without an initramfs, though some support work is still required in initramfs-tools + and grub. + - LP: #311730 + + -- Tim Gardner Fri, 02 Jan 2009 07:33:09 -0700 + +linux (2.6.28-4.6) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_X86_E_POWERSAVER=m for i386 generic + - LP: #237405 + * Build i386 AGP drivers as modules + - LP: #312721 + * Build i386 DRM as a module + - LP: #312721 + + [ Upstream Kernel Changes ] + + * drm/i915: Add missing userland definitions for gem init/execbuffer. + - LP: #308387 + + -- Tim Gardner Mon, 29 Dec 2008 09:16:47 -0700 + +linux (2.6.28-4.5) jaunty; urgency=low + + [ Andy Whitcroft ] + + * clean up module dependancy information on package removal/purge + - LP: #300773 + + [ Tim Gardner ] + + * Update iscsitarget to 0.4.17 + * Build in ext{234} + * Build in Crypto modules AES, CBC, ECB + * Build in ACPI AC,BATTERY,BUTTON,FAN,PCI_SLOT,PROCESSOR,SBS,THERMAL,WMI + * Build in AGP intel,via,sis,ali,amd,amd64,efficeon,nvidia,sworks + * Build in ata,dev_dm,dev_loop,dev_md,dev_sd,dev_sr + * Build in BT l2cap,rfcomm,sco + * Reduce CONFIG_LEGACY_PTY_COUNT to 0 + * Build in CDROM_PKTCDVD and CHR_DEV_SG + * Build in CPU_FREQ + GOV_CONSERVATIVE,GOV_ONDEMAND,GOV_POWERSAVE,GOV_USERSPACE,STAT,TABLE + * Build in DM CRYPT,MIRROR,MULTIPATH,SNAPSHOT + * Build in DRM + * Build in HID + * Build in HOTPLUG PCI,PCIE + * Build in I2C + * Build in IEEE1394 OHCI1394 + * Build in INPUT EVDEV + * Build in IPV6 + * Build in MMC + * Build in PACKET + * Enable both IEEE1394 (Firewire) stacks as modules + - LP: #276463 + * Disable SUNRPC_REGISTER_V4 + - LP: #306016 + * Enable dm-raid4-5 + - LP: #309378 + * Build in PPP + * Build in RFKILL + * Build in USB SERIAL + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28 + + -- Tim Gardner Thu, 18 Dec 2008 21:18:44 -0700 + +linux (2.6.28-3.4) jaunty; urgency=low + + [ Tim Gardner ] + + * Build ecryptfs into the kernel + - LP: #302870 + * Deprecated gnbd + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc8 + + -- Tim Gardner Wed, 10 Dec 2008 22:45:13 -0700 + +linux (2.6.28-2.3) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update the templates so that we have spaces following the title line + + [ Tim Gardner ] + + * Add upload number to kernel version signature. This has the side effect + of renaming kernel packages back to the original way, e.g., without '-ub' + in the name. + + -- Tim Gardner Thu, 04 Dec 2008 12:18:31 -0700 + +linux (2.6.28-2.2) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) version: Implement version_signature proc file." + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: serial: RS485 ioctl structure uses __u32 include linux/types.h + - LP: #303711 + + [ Tim Gardner ] + + * UBUNTU: Removed CONFIG_DRM_VIA_CHROME9 since it is upstream. + * UBUNTU: Removed ubuntu/via_chrome9 + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc7 + + -- Tim Gardner Tue, 02 Dec 2008 07:33:32 -0700 + +linux (2.6.28-1.1) jaunty; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + * SAUCE: Adds support for COMPAL JHL90 webcam + * Map armel to arm to all editconfigs to work correctly + * Add armel to getabis for completeness sake + * Add -ub to our versioning to allow kerneloops.org to identify us + + [ Andy Whitcroft ] + + * Fix Vcs-Git path for the kernel repository. + - LP: #296915 + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + - LP: #159241 + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * SAUCE: (no-up) Export lookup_has for aufs + * SAUCE: (no-up) Modularize vesafb + * ubuntu: Config files + * Disable some modules that need porting to 2.6.28 + * ubuntu: Fixup headers creation to include arch/*/include + * ubuntu/module-check: Ignore comment lines + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ cking ] + + * SAUCE: Enable speedstep for sonoma processors. + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: cx88: Support Leadtek WinFast DTV2000 H version J. + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + * SAUCE: appleir: Enable driver for new MacBook Pro + + [ Colin Watson ] + + * Enable configfs, fuse, jfs, reiserfs, and xfs for armel + * Extend debian/d-i/ modules handling to make armel easier to support + * Create udebs for armel + + [ Fabio M. Di Nitto ] + + * ubuntu: update GFS Cluster File System + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + * Add Dell Dimension 9200 reboot quirk + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + * SAUCE: Revert aufs changes from AppArmor merge + + [ Mohamed Abbas ] + + * SAUCE: iwlagn -- fix rfkill when on when driver loaded + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * gfs1: GFS1 can't create more than 4kb file + * uvcvideo: Commit streaming parameters when enabling the video stream. + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + * SAUCE: Update Wacom tablet driver to 1.49 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + * SAUCE: ipw2200: change default policy for auto-associate + * Dell Wireless 365 needs BTUSB_RESET quirk. + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + * Disabled ubuntu/e1000e config + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * Revert "x86, early_ioremap: fix fencepost error" + * mac80211: fix two issues in debugfs + * iwl3945: do not send scan command if channel count zero + + -- Ben Collins Fri, 07 Nov 2008 09:37:42 -0700 + +linux (2.6.27-8.17) intrepid-proposed; urgency=low + + [ John W. Linville ] + + * SAUCE: iwlagn: avoid sleep in softirq context + -LP: #286285 + + [ Tim Gardner ] + + * Dell Wireless 365 needs BTUSB_RESET quirk. + - LP: #293670 + * SAUCE: ALSA: hda: make a STAC_DELL_EQ option (version 2) + - LP: #293271 + + [ Upstream Kernel Changes ] + + * iwlagn: downgrade BUG_ON in interrupt + * Input: atkbd - expand Latitude's force release quirk to other Dells + * fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles + * modules: fix module "notes" kobject leak + * Driver core: Fix cleanup in device_create_vargs(). + * Driver core: Clarify device cleanup. + * ath9k/mac80211: disallow fragmentation in ath9k, report to userspace + * md: Fix rdev_size_store with size == 0 + * xfs: fix remount rw with unrecognized options + * OHCI: Allow broken controllers to auto-stop + * USB: OHCI: fix endless polling behavior + * USB: Fix s3c2410_udc usb speed handling + * USB: EHCI: log a warning if ehci-hcd is not loaded first + * usb gadget: cdc ethernet notification bugfix + * usb: musb_hdrc build fixes + * drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) + * DVB: au0828: add support for another USB id for Hauppauge HVR950Q + * DVB: sms1xxx: support two new revisions of the Hauppauge WinTV + MiniStick + * security: avoid calling a NULL function pointer in + drivers/video/tvaudio.c + * Linux 2.6.27.3 + -LP: #294152 + + * gpiolib: fix oops in gpio_get_value_cansleep() + * edac cell: fix incorrect edac_mode + * x86 ACPI: fix breakage of resume on 64-bit UP systems with SMP kernel + * sched: fix the wrong mask_len + * USB: cdc-wdm: make module autoload work + * USB: don't rebind drivers after failed resume or reset + * USB: fix memory leak in cdc-acm + * USB: Speedtouch: add pre_reset and post_reset routines + * dm kcopyd: avoid queue shuffle + * dm snapshot: fix primary_pe race + * amd_iommu: fix nasty bug that caused ILLEGAL_DEVICE_TABLE_ENTRY errors + * CIFS: fix saving of resume key before CIFSFindNext + * netfilter: xt_iprange: fix range inversion match + * netfilter: snmp nat leaks memory in case of failure + * netfilter: restore lost ifdef guarding defrag exception + * anon_vma_prepare: properly lock even newly allocated entries + * hvc_console: Fix free_irq in spinlocked section + * ACPI Suspend: Enable ACPI during resume if SCI_EN is not set + * ACPI suspend: Blacklist HP xw4600 Workstation for old code ordering + * ACPI suspend: Always use the 32-bit waking vector + * proc: fix vma display mismatch between /proc/pid/{maps,smaps} + * SCSI: scsi_dh: add Dell product information into rdac device handler + * PCI hotplug: cpqphp: fix kernel NULL pointer dereference + * V4L/DVB (9300): pvrusb2: Fix deadlock problem + * Linux 2.6.27.4 + -LP: #294155 + + -- Tim Gardner Tue, 04 Nov 2008 12:16:07 -0700 + +linux (2.6.27-7.16) intrepid-security; urgency=low + + [ Tim Gardner ] + + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + - LP: #275860 + + [ Upstream Kernel Changes ] + + * ext[234]: Avoid printk floods in the face of directory corruption + (CVE-2008-3528) + + -- Tim Gardner Mon, 03 Nov 2008 13:34:42 -0700 + +linux (2.6.27-7.15) intrepid-security; urgency=low + + [ Upstream Kernel Changes ] + + * tcp: Restore ordering of TCP options for the sake of inter-operability + - LP: #264019 + + -- Tim Gardner Mon, 27 Oct 2008 19:28:06 -0600 + +linux (2.6.27-7.14) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable ath5k in 2.6.27 + - LP: #288148 + + -- Tim Gardner Thu, 23 Oct 2008 07:40:43 -0600 + +linux (2.6.27-7.13) intrepid; urgency=low + + [ Stefan Bader ] + + * gfs1: GFS1 can't create more than 4kb file + + [ Tim Gardner ] + + * Revert "SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors + bitmap.". Use upstream commit to avoid future conflicts. + * Revert "STABLE queue: mac80211: fix two issues in debugfs". + Use upstream commit to avoid future conflicts. + * Revert "x86, early_ioremap: fix fencepost error" + Use upstream commit to avoid future conflicts. + + [ Upstream Kernel Changes ] + + * sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq + * x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + * mac80211: fix two issues in debugfs + * Fix barrier fail detection in XFS + * tty: Termios locking - sort out real_tty confusions and lock reads + * CIFS: make sure we have the right resume info before calling + CIFSFindNext + * rfkill: update LEDs for all state changes + * libertas: clear current command on card removal + * b43legacy: Fix failure in rate-adjustment mechanism + * x86, early_ioremap: fix fencepost error + * x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC + * x86: improve UP kernel when CPU-hotplug and SMP is enabled + * sky2: Fix WOL regression + * netdrvr: atl1e: Don't take the mdio_lock in atl1e_probe + * Linux 2.6.27.2 + + [ Amit Kucheria ] + + * Ubuntu: agp: Fix stolen memory counting on G4X. + -LP: 285572 + + [ Scott Remnant ] + + * add MODULE_ALIAS to load ipmi_devintf with ipmi_si + + -- Tim Gardner Sun, 19 Oct 2008 10:06:21 -0600 + +linux (2.6.27-7.12) intrepid; urgency=low + + [ Chuck Short ] + + * xen: Add xen modules to virtual flavours. + + [ Mario Limonciello ] + + * SAUCE: Add back in lost commit for Apple BT Wireless Keyboard + - LP: #162083 + + [ Tim Gardner ] + + * Remove depmod created files from packages. + - LP: #250511 + * Changed default TCP congestion algorithm to 'cubic' (again) + - LP: #278801 + * Update configs for 'disable CONFIG_DYNAMIC_FTRACE' + - LP: #263555 + + [ Upstream Kernel Changes ] + + * x86: register a platform RTC device if PNP doesn't describe it + * disable CONFIG_DYNAMIC_FTRACE due to possible memory corruption on + module unload + + -- Tim Gardner Fri, 17 Oct 2008 11:25:39 -0600 + +linux (2.6.27-7.11) intrepid; urgency=low + + [ Amit Kucheria ] + + * STABLE queue: mac80211: fix two issues in debugfs + - LP: #275227 + * SAUCE: Adds support for COMPAL JHL90 webcam + + [ Ben Collins ] + + * SAUCE: (no-up) x86: Quiet "Kernel alive" messages + - LP: #39985 + * SAUCE: (no-up) Modularize vesafb + * build/config: Enable vesafb module + * build: Switch to vesafb as preferred. + + [ Leann Ogasawara ] + + * Add Dell Dimension 9200 reboot quirk + - LP: #271370 + + [ Michael Haas ] + + * SAUCE: Revert aufs changes from AppArmor merge + + [ Tim Gardner ] + + * fix virtio udeb layout + - LP: #257739 + * Enabled CONFIG_EXT4DEV_FS=m + * Changed default TCP congestion algorithm to 'cubic' + - LP: #278801 + * SAUCE: ipw2200: change default policy for auto-associate + - LP: #264104 + + [ Upstream Kernel Changes ] + + * x86, early_ioremap: fix fencepost error + - LP: #263543 + + -- Tim Gardner Sat, 11 Oct 2008 08:07:42 -0600 + +linux (2.6.27-7.10) intrepid; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: do transaction from interrupt context + - LP: #277802 + + [ Ben Collins ] + + * build/d-i: Change virtio-modules udeb to prio standard + + [ Colin Ian King ] + + * SAUCE: Blacklist IBM 2656 in serio/i8042 + - LP: #21558 + + [ Henrik Rydberg ] + + * Revert "SAUCE: applesmc: Add MacBookAir" + * SAUCE: [PATCH 1/5] hwmon: applesmc: Specified number of bytes to read + should match actual + * SAUCE: [PATCH 2/5] hwmon: applesmc: Fix the 'wait status failed: c != + 8' problem + * SAUCE: [PATCH 3/5] hwmon: applesmc: Prolong status wait + * SAUCE: [PATCH 4/5] hwmon: applesmc: Allow for variable ALV0 and ALV1 + package length + * SAUCE: [PATCH 5/5] hwmon: applesmc: Add support for Macbook Air + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 4 + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 3 + * SAUCE: hwmon: applesmc: Lighter wait mechanism, drastic improvement + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + - LP: #200210 + + [ Tim Gardner ] + + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + - LP: #278794 + * SAUCE: Update Wacom tablet driver to 1.49 + - LP: #260675 + * SAUCE: ALPS touchpad for Dell Latitude E6500/E6400 + - LP: #270643 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + - LP: #263309 + + [ Upstream Kernel Changes ] + + * ath9k: fix oops on trying to hold the wrong spinlock + * [Bluetooth] Fix double frees on error paths of btusb and bpa10x drivers + * [Bluetooth] Add reset quirk for new Targus and Belkin dongles + * [Bluetooth] Add reset quirk for A-Link BlueUSB21 dongle + * Revert "ax25: Fix std timer socket destroy handling." + * ax25: Quick fix for making sure unaccepted sockets get destroyed. + * netrom: Fix sock_orphan() use in nr_release + * Revert "V4L/DVB (8904): cx88: add missing unlock_kernel" + * SLOB: fix bogus ksize calculation + * net: only invoke dev->change_rx_flags when device is UP + * tcp: Fix possible double-ack w/ user dma + * net: Fix netdev_run_todo dead-lock + * tcp: Fix tcp_hybla zero congestion window growth with small rho and large cwnd. + * [MIPS] Sibyte: Register PIO PATA device only for Swarm and Litte Sur + * eeepc-laptop: Fix hwmon interface + * hwmon: (it87) Prevent power-off on Shuttle SN68PT + * hwmon: Define sysfs interface for energy consumption register + * hwmon: (adt7473) Fix some bogosity in documentation file + * hwmon: (abituguru3) Enable reading from AUX3 fan on Abit AT8 32X + * hwmon: (abituguru3) Enable DMI probing feature on Abit AT8 32X + * [CPUFREQ] correct broken links and email addresses + * SLOB: fix bogus ksize calculation fix + * Don't allow splice() to files opened with O_APPEND + * Linux 2.6.27 + + -- Tim Gardner Wed, 08 Oct 2008 21:19:34 -0600 + +linux (2.6.27-6.9) intrepid; urgency=low + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + - LP: #269921 + + [ Stefan Bader ] + + * Update configuration files to be compliant to desktop specs + - LP: #279019 + + [ Tim Gardner ] + + * Add support in e1000e for a couple of ICH10 PCI IDs + * Enable CONFIG_INPUT_PCSPKR=m + - LP: #275453 + + [ Upstream Kernel Changes ] + + * V4L/DVB (8559a): Fix a merge conflict at gspca/sonixb + * V4L/DVB (8789): wm8739: remove wrong kfree + * V4L/DVB (8883): w9968cf: Fix order of usb_alloc_urb validation + * V4L/DVB (8884): em28xx-audio: fix memory leak + * V4L/DVB (8885): cpia2_usb: fix memory leak + * V4L/DVB (8886): ov511: fix memory leak + * V4L/DVB (8887): gspca: fix memory leak + * V4L/DVB (8892): pvrusb2: Handle USB ID 2040:2950 same as 2040:2900 + * V4L/DVB (8904): cx88: add missing unlock_kernel + * V4L/DVB (8905): ov511: fix exposure sysfs attribute bug + * V4L/DVB (8909): gspca: PAC 7302 webcam 093a:262a added. + * hrtimer: migrate pending list on cpu offline + * hrtimer: fix migration of CB_IRQSAFE_NO_SOFTIRQ hrtimers + * hrtimer: mark migration state + * hrtimer: prevent migration of per CPU hrtimers + * [IA64] Put the space for cpu0 per-cpu area into .data section + * powerpc: Fix PCI in Holly device tree + * powerpc: Fix failure to shutdown with CPU hotplug + * mfd: Fix Kconfig accroding to the new gpiolib symbols + * mfd: Fix asic3 compilation + * x86: fix typo in enable_mtrr_cleanup early parameter + * ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space + * iucv: Fix mismerge again. + * ALSA: ASoC: Fix cs4270 error path + * ALSA: hda - Fix model for Dell Inspiron 1525 + * sctp: Fix kernel panic while process protocol violation parameter + * x86: Fix broken LDT access in VMI + * x86, vmi: fix broken LDT access + * tcp: Fix NULL dereference in tcp_4_send_ack() + * ipv6: NULL pointer dereferrence in tcp_v6_send_ack + * XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep + * af_key: Free dumping state on socket close + * dm: always allow one page in dm_merge_bvec + * dm: cope with access beyond end of device in dm_merge_bvec + * dm mpath: add missing path switching locking + * MN10300: Fix IRQ handling + * pxa2xx_spi: fix build breakage + * e1000e: write protect ICHx NVM to prevent malicious write/erase + * powerpc: Fix boot hang regression on MPC8544DS + * ASoC: Set correct name for WM8753 rec mixer output + * ALSA: snd-powermac: mixers for PowerMac G4 AGP + * ALSA: snd-powermac: HP detection for 1st iMac G3 SL + * fbcon: fix monochrome color value calculation + * inotify: fix lock ordering wrt do_page_fault's mmap_sem + * braille_console: only register notifiers when the braille console is used + * fix error-path NULL deref in alloc_posix_timer() + * memory hotplug: missing zone->lock in test_pages_isolated() + * mm: tiny-shmem nommu fix + * mm: handle initialising compound pages at orders greater than MAX_ORDER + * e1000e: reset swflag after resetting hardware + * e1000e: do not ever sleep in interrupt context + * e1000e: remove phy read from inside spinlock + * e1000e: drop stats lock + * e1000e: debug contention on NVM SWFLAG + * e1000e: update version from k4 to k6 + * Check mapped ranges on sysfs resource files + * e1000e: Fix incorrect debug warning + * [MIPS] Build fix: Fix irq flags type + * [MIPS] SMTC: Build fix: Fix filename in Makefile + * [MIPS] SMTC: Fix holes in SMTC and FPU affinity support. + * [MIPS] SMTC: Close tiny holes in the SMTC IPI replay system. + * [MIPS] SMTC: Fix SMTC dyntick support. + * [S390] nohz: Fix __udelay. + * [S390] qdio: prevent stack clobber + * Fix init/main.c to use regular printk with '%pF' for initcall fn + * x86 setup: correct segfault in generation of 32-bit reloc kernel + * selinux: Fix an uninitialized variable BUG/panic in selinux_secattr_to_sid() + * rtc: fix kernel panic on second use of SIGIO nofitication + * fbdev: fix recursive notifier and locking when fbdev console is blanked + * orion_spi: fix handling of default transfer speed + * include/linux/stacktrace.h: declare struct task_struct + * cpusets: remove pj from cpuset maintainers + * MAINTAINERS: add mailing list for man-pages + * SubmitChecklist: interfaces changes should CC linux-api@ + * Documentation/HOWTO: info about interface changes should CC linux-api@vger + * dw_dmac: fix copy/paste bug in tasklet + * leds-fsg: change order of initialization and deinitialization + * leds-pca955x: add proper error handling and fix bogus memory handling + * ACPI: Make /proc/acpi/wakeup interface handle PCI devices (again) + * clockevents: check broadcast tick device not the clock events device + * V4L/DVB (8919): cx18: Fix tuner audio input for Compro H900 cards + * V4L/DVB (8926): gspca: Bad fix of leak memory (changeset 43d2ead315b1). + * V4L/DVB (8933): gspca: Disable light frquency for zc3xx cs2102 Kokom. + * V4L/DVB (8935): em28xx-cards: Remove duplicate entry (EM2800_BOARD_KWORLD_USB2800) + * V4L/DVB (8955): bttv: Prevent NULL pointer dereference in radio_open + * V4L/DVB (8957): zr36067: Restore the default pixel format + * V4L/DVB (8958): zr36067: Return proper bytes-per-line value + * V4L/DVB (8960): drivers/media/video/cafe_ccic.c needs mm.h + * V4L/DVB (8961): zr36067: Fix RGBR pixel format + * V4L/DVB (8963): s2255drv field count fix + * V4L/DVB (8967): Use correct XC3028L firmware for AMD ATI TV Wonder 600 + * V4L/DVB (8978): sms1xxx: fix product name for Hauppauge WinTV MiniStick + * V4L/DVB (8979): sms1xxx: Add new USB product ID for Hauppauge WinTV MiniStick + * V4L/DVB (9029): Fix deadlock in demux code + * V4L/DVB (9037): Fix support for Hauppauge Nova-S SE + * V4L/DVB (9043): S5H1420: Fix size of shadow-array to avoid overflow + * V4L/DVB (9053): fix buffer overflow in uvc-video + * V4L/DVB (9075): gspca: Bad check of returned status in i2c_read() spca561. + * V4L/DVB (9080): gspca: Add a delay after writing to the sonixj sensors. + * V4L/DVB (9092): gspca: Bad init values for sonixj ov7660. + * V4L/DVB (9099): em28xx: Add detection for K-WORLD DVB-T 310U + * V4L/DVB (9103): em28xx: HVR-900 B3C0 - fix audio clicking issue + * x86: gart iommu have direct mapping when agp is present too + * ide-cd: temporary tray close fix + * ide-dma: fix ide_build_dmatable() for TRM290 + * IDE: Fix platform device registration in Swarm IDE driver (v2) + * ide-cd: Optiarc DVD RW AD-7200A does play audio + * ide: workaround for bogus gcc warning in ide_sysfs_register_port() + * [MIPS] Fix CMP Kconfig configuration and mark as broken. + * [MIPS] IP27: Fix build errors if CONFIG_MAPPED_KERNEL=y + * x86 ACPI: Blacklist two HP machines with buggy BIOSes + * kgdb, x86: Avoid invoking kgdb_nmicallback twice per NMI + * kgdb: call touch_softlockup_watchdog on resume + * atmel-mci: Initialize BLKR before sending data transfer command + * Marker depmod fix core kernel list + * Linux 2.6.27-rc9 + + -- Tim Gardner Sun, 05 Oct 2008 21:27:49 -0600 + +linux (2.6.27-5.8) intrepid; urgency=low + + [ Amit Kucheria ] + + * Update AUFS-related Kconfig + - LP: #264048 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * apply (modified) lhash.patch from AUFS to export __lookup_hash() + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + + [ Tim Gardner ] + + * Enabled CONFIG_IPWIRELESS + - LP: #274748 + * Enabled CONFIG_E1000E, disabled CONFIG_E1000E_NEW + This takes advantage of the upstream NVM protection fix in + commit 4a7703582836f55a1cbad0e2c1c6ebbee3f9b3a7. + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP + initialization completes. + * PCI: Fix pcie_aspm=force + * PCI: fix compiler warnings in pci_get_subsys() + * UBIFS: create the name of the background thread in every case + * UBIFS: TNC / GC race fixes + * UBIFS: remove incorrect assert + * UBIFS: fix printk format warnings + * AMD IOMMU: set iommu sunc flag after command queuing + * AMD IOMMU: protect completion wait loop with iommu lock + * sparc64: Fix disappearing PCI devices on e3500. + * x86, oprofile: BUG scheduling while atomic + * ALSA: ASoC: Fix at32-pcm build breakage with PM enabled + * ath9k: connectivity is lost after Group rekeying is done + * wireless: zd1211rw: add device ID fix wifi dongle "trust nw-3100" + * [IA64] Ski simulator doesn't need check_sal_cache_flush + * [IA64] kexec fails on systems with blocks of uncached memory + * ath9k: Fix IRQ nobody cared issue with ath9k + * [Bluetooth] Fix I/O errors on MacBooks with Broadcom chips + * [Bluetooth] Fix wrong URB handling of btusb driver + * [Bluetooth] Fix USB disconnect handling of btusb driver + * sparc64: Fix missing devices due to PCI bridge test in + of_create_pci_dev(). + * [WATCHDOG] ibmasr: remove unnecessary spin_unlock() + * [WATCHDOG] wdt285: fix sparse warnings + * [WATCHDOG] unlocked_ioctl changes + * x86: fix 27-rc crash on vsmp due to paravirt during module load + * sched: fix init_hrtick() section mismatch warning + * clockevents: prevent cpu online to interfere with nohz + * x86: prevent stale state of c1e_mask across CPU offline/online + * clockevents: prevent stale tick_next_period for onlining CPUs + * clockevents: check broadcast device not tick device + * clockevents: prevent mode mismatch on cpu online + * x86: prevent C-states hang on AMD C1E enabled machines + * x86: c1e_idle: don't mark TSC unstable if CPU has invariant TSC + * timers: fix build error in !oneshot case + * ALSA: ASoC: maintainers - update email address for Liam Girdwood + * ibmasr: remove unnecessary spin_unlock() + * smb.h: do not include linux/time.h in userspace + * kernel-doc: allow structs whose members are all private + * kexec: fix segmentation fault in kimage_add_entry + * Documentation/DMA-mapping.txt: update for pci_dma_mapping_error() + changes + * sys_paccept: disable paccept() until API design is resolved + * mm: tiny-shmem fix lock ordering: mmap_sem vs i_mutex + * Documentation/sysctl/kernel.txt: fix softlockup_thresh description + * memcg: check under limit at shrink_usage + * atmel_serial: update the powersave handler to match serial core + * [SCSI] Fix hang with split requests + * USB Storage: Sierra: Non-configurable TRU-Install + * USB Serial: Sierra: Device addition & version rev + * USB: ehci: fix some ehci hangs and crashes + * USB: Fix the Nokia 6300 storage-mode. + * USB: Correct Sierra Wireless USB EVDO Modem Device ID + * USB: fix hcd interrupt disabling + * USB: update of Documentation/usb/anchors.txt + * usb gadget: fix omap_udc DMA regression + * USB: Fixing Nokia 3310c in storage mode + * usb: musb: fix include path + * USB: fix EHCI periodic transfers + * usb-serial: Add Siemens EF81 to PL-2303 hack triggers + * USB: SERIAL CP2101 add device IDs + * USB: unusual_devs addition for RockChip MP3 player + * USB: fsl_usb2_udc: fix VDBG() format string + * usb serial: ti_usb_3410_5052 obviously broken by firmware changes + * USB: ftdi_sio: Add 0x5050/0x0900 USB IDs (Papouch Quido USB 4/4) + * USB: serial: add ZTE CDMA Tech id to option driver + * USB Serial: Sierra: Add MC8785 VID/PID + * USB: drivers/usb/musb/: disable it on SuperH + * usb: ftdi_sio: add support for Domintell devices + * usb: unusual devs patch for Nokia 5310 Music Xpress + * USB: revert recovery from transient errors + * [MIPS] au1000: Fix gpio direction + * [MIPS] Fixe the definition of PTRS_PER_PGD + * x86: prevent stale state of c1e_mask across CPU offline/online, fix + * x86: disable apm on the olpc + * i2c-powermac: Fix section for probe and remove functions + * i2c-dev: Return correct error code on class_create() failure + * i2c: Fix mailing lists in two MAINTAINERS entries + * ath9k: disable MIB interrupts to fix interrupt storm + * 9p: implement proper trans module refcounting and unregistration + * 9p-trans_fd: fix trans_fd::p9_conn_destroy() + * 9p-trans_fd: clean up p9_conn_create() + * 9p-trans_fd: don't do fs segment mangling in p9_fd_poll() + * 9p-trans_fd: fix and clean up module init/exit paths + * 9p: introduce missing kfree + * 9p: use an IS_ERR test rather than a NULL test + * 9p: fix put_data error handling + * netfilter: ip6t_{hbh,dst}: Rejects not-strict mode on rule insertion + * MN10300: Move asm-arm/cnt32_to_63.h to include/linux/ + * MN10300: Make sched_clock() report time since boot + * ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() + * ALSA: remove unneeded power_mutex lock in snd_pcm_drop + * IPoIB: Fix crash when path record fails after path flush + * [XFS] Fix extent list corruption in xfs_iext_irec_compact_full(). + * [XFS] Remove xfs_iext_irec_compact_full() + * kgdb: could not write to the last of valid memory with kgdb + * kgdb, x86, arm, mips, powerpc: ignore user space single stepping + * kgdb, x86_64: gdb serial has BX and DX reversed + * kgdb, x86_64: fix PS CS SS registers in gdb serial + * kgdboc,tty: Fix tty polling search to use name correctly + * ARM: Delete ARM's own cnt32_to_63.h + * m32r: remove the unused NOHIGHMEM option + * m32r: don't offer CONFIG_ISA + * m32r: export empty_zero_page + * m32r: export __ndelay + * m32r/kernel/: cleanups + * [MIPS] au1000: Make sure GPIO value is zero or one + * [MIPS] IP27: Switch to dynamic interrupt routing avoding panic on + error. + * [MIPS] BCM47xx: Fix build error due to missing PCI functions + * [SSB] Initialise dma_mask for SSB_BUSTYPE_SSB devices + * Swarm: Fix crash due to missing initialization + * ide-tape: fix vendor strings + * ide: note that IDE generic may prevent other drivers from attaching + * cdrom: update ioctl documentation + * [SCSI] qlogicpti: fix sg list traversal error in continuation entries + * sata_nv: reinstate nv_hardreset() for non generic controllers + * scsi: fix fall out of sg-chaining patch in qlogicpti + * ALSA: make the CS4270 driver a new-style I2C driver + * ALSA: ASoC: Fix another cs4270 error path + * Fix NULL pointer dereference in proc_sys_compare + * kconfig: fix silentoldconfig + * kconfig: readd lost change count + * mm owner: fix race between swapoff and exit + * Linux 2.6.27-rc8 + * e1000e: write protect ICHx NVM to prevent malicious write/erase + + -- Amit Kucheria Tue, 30 Sep 2008 18:22:35 +0300 + +linux (2.6.27-4.7) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add gfs1 to perm blacklist + * build/abi: Ignored changes in gfs2 symbols + + [ Fabio M. Di Nitto ] + + * Revert "SAUCE: Export gfs2 symbols required for gfs1 kernel module" + * ubuntu: update GFS Cluster File System + + [ Stefan Bader ] + + * SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + - LP: #276334 + + [ Tim Gardner ] + + * Revert "Disable e1000e until the NVRAM corruption problem is found." + * Add atl1e and atl2 to Debian installer bits + - LP: #273904 + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + - LP: #263555 + + -- Tim Gardner Fri, 26 Sep 2008 20:51:22 -0600 + +linux (2.6.27-4.6) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable e1000e until the NVRAM corruption problem is found. + - LP: #263555 + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + + -- Ben Collins Tue, 23 Sep 2008 09:53:57 -0400 + +linux (2.6.27-4.5) intrepid; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support" + * udf: Fix lock inversion between iprune_mutex and alloc_mutex (v2) + * udf: Fix error paths in udf_new_inode() + * [SCSI] sd: select CRC_T10DIF only when necessary + * [SCSI] zfcp: Fix request queue locking + * [SCSI] zfcp: Correctly query end flag in gpn_ft response + * [SCSI] zfcp: Simplify ccw notify handler + * [SCSI] zfcp: Fix reference counter for remote ports + * [SCSI] zfcp: channel cannot be detached due to refcount imbalance + * [SCSI] zfcp: Remove duplicated unlikely() macros. + * [SCSI] scsi_dh: make check_sense return ADD_TO_MLQUEUE + * [SCSI] make scsi_check_sense HARDWARE_ERROR return ADD_TO_MLQUEUE on + retry + * [SCSI] fix check of PQ and PDT bits for WLUNs + * pcm037: add rts/cts support for serial port + * i.MX serial: fix init failure + * imx serial: set RXD mux bit on i.MX27 and i.MX31 + * imx serial: fix rts handling for non imx1 based hardware + * mlx4_core: Set RAE and init mtt_sz field in FRMR MPT entries + * udf: add llseek method + * PCI/iommu: blacklist DMAR on Intel G31/G33 chipsets + * PCI: Fix printk warnings in probe.c + * PCI: Fix printk warnings in setup-bus.c + * PCI Hotplug: fakephp: fix deadlock... again + * clockevents: remove WARN_ON which was used to gather information + * ocfs2: Fix a bug in direct IO read. + * arch/x86/kernel/kdebugfs.c: introduce missing kfree + * [IA64] fix compile failure with non modular builds + * [IA64] fix up bte.h + * [IA64] arch/ia64/sn/pci/tioca_provider.c: introduce missing kfree + * PCI: fix pciehp_free_irq() + * [IA64] prevent ia64 from invoking irq handlers on offline CPUs + * ide: Fix pointer arithmetic in hpt3xx driver code (3rd try) + * add deprecated ide-scsi to feature-removal-schedule.txt + * swiotlb: fix back-off path when memory allocation fails + * sparc64: Fix interrupt register calculations on Psycho and Sabre. + * VIDEO_SH_MOBILE_CEU should depend on HAS_DMA + * m68k: Update defconfigs for 2.6.27-rc6 + * sparc32: Fix function signature of of_bus_sbus_get_flags(). + * sched: fix 2.6.27-rc5 couldn't boot on tulsa machine randomly + * sched: fix deadlock in setting scheduler parameter to zero + * KVM: SVM: fix random segfaults with NPT enabled + * KVM: SVM: fix guest global tlb flushes with NPT + * KVM: VMX: Always return old for clear_flush_young() when using EPT + * clocksource, acpi_pm.c: fix check for monotonicity + * [ARM] OMAP: Fix MMC device data + * block: disable sysfs parts of the disk command filter + * ath9k: Assign seq# when mac80211 requests this + * sg: disable interrupts inside sg_copy_buffer + * MN10300: Change the fault handler to check in_atomic() not + in_interrupt() + * [Bluetooth] Fix regression from using default link policy + * netlink: fix overrun in attribute iteration + * x86: fix possible x86_64 and EFI regression + * sparc64: Fix PCI error interrupt registry on PSYCHO. + * sparc: Fix user_regset 'n' field values. + * niu: panic on reset + * PCI: re-add debug prints for unmodified BARs + * [ARM] 5245/1: Fix warning about unused return value in drivers/pcmcia + * [ARM] 5246/1: tosa: add proper clock alias for tc6393xb clock + * [ARM] 5247/1: tosa: SW_EAR_IN support + * [ARM] Fix PCI_DMA_BUS_IS_PHYS for ARM + * ata: duplicate variable sparse warning + * sata_inic162x: enable LED blinking + * [libata] LBA28/LBA48 off-by-one bug in ata.h + * proc: more debugging for "already registered" case + * include/linux/ioport.h: add missing macro argument for devm_release_* + family + * cpuset: avoid changing cpuset's cpus when -errno returned + * cpuset: hotplug documentation fix + * coredump_filter: add description of bit 4 + * bfs: fix Lockdep warning + * mm: ifdef Quicklists in /proc/meminfo + * spi_mpc83xx: fix clockrate calculation for low speed + * spi_mpc83xx: reject invalid transfer sizes + * pxa2xx_spi: chipselect bugfixes + * pxa2xx_spi: dma bugfixes + * mm: mark the correct zone as full when scanning zonelists + * Documentation/ABI: /sys/class/gpio + * MAINTAINERS: fix USB VIDEO CLASS mail list address + * ia64: fix panic during `modprobe -r xpc' + * atmel_lcdfb: disable LCD and DMA engines when suspending + * spi_s3c24xx: fix section warning + * rescan_partitions(): make device capacity errors non-fatal + * memstick: fix MSProHG 8-bit interface mode support + * Add Uwe Kleine-König to .mailmap + * xen: fix for xen guest with mem > 3.7G + * x86/paravirt: Remove duplicate paravirt_pagetable_setup_{start, done}() + * crypto: talitos - Avoid consecutive packets going out with same IV + * slub: fixed uninitialized counter in struct kmem_cache_node + * udp: Fix rcv socket locking + * IB/mlx4: Fix up fast register page list format + * [MIPS] VR41xx: unsigned irq cannot be negative + * x86: completely disable NOPL on 32 bits + * [S390] cio: Fix driver_data handling for ccwgroup devices. + * [S390] cio: fix orb initialization in cio_start_key + * sparc64: Fix OOPS in psycho_pcierr_intr_other(). + * sparc64: Fix SMP bootup with CONFIG_STACK_DEBUG or ftrace. + * RDMA/nes: Fix client side QP destroy + * IPoIB: Fix deadlock on RTNL between bcast join comp and ipoib_stop() + * clockevents: make device shutdown robust + * powerpc: Fix interrupt values for DMA2 in MPC8610 HPCD device tree + * hpplus: fix build regression + * Fix PNP build failure, bugzilla #11276 + * warn: Turn the netdev timeout WARN_ON() into a WARN() + * [XFS] Move memory allocations for log tracing out of the critical path + * [XFS] Fix regression introduced by remount fixup + * [XFS] Prevent direct I/O from mapping extents beyond eof + * [XFS] Fix barrier status change detection. + * [XFS] Prevent lockdep false positives when locking two inodes. + * [XFS] Fix use-after-free with buffers + * [XFS] Don't do I/O beyond eof when unreserving space + * powerpc: Holly board needs dtbImage target + * Fix compile failure with non modular builds + * [ARM] 5249/1: davinci: remove redundant check in davinci_psc_config() + * [ARM] omap: back out 'internal_clock' support + * sctp: set the skb->ip_summed correctly when sending over loopback. + * [ARM] 5255/1: Update jornada ssp to remove build errors/warnings + * sctp: do not enable peer features if we can't do them. + * sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH + * bnx2: Promote vector field in bnx2_irq structure from u16 to unsigned + int + * forcedeth: call restore mac addr in nv_shutdown path + * e1000: prevent corruption of EEPROM/NVM + * e100: Use pci_pme_active to clear PME_Status and disable PME# + * md: Don't wait UNINTERRUPTIBLE for other resync to finish + * atstk1000: fix build breakage with BOARD_ATSTK100X_SW2_CUSTOM=y + * avr32: add .gitignore files + * avr32: add generic_find_next_le_bit bit function + * avr32: fix sys_sync_file_range() call convention + * avr32: nmi_enter() without nmi_exit() + * KVM: ia64: 'struct fdesc' build fix + * hwmon: (atxp1) Fix device detection logic + * hwmon: (it87) Fix fan tachometer reading in IT8712F rev 0x7 (I) + * hwmon: (ad7414) Make ad7414_update_device() static + * tmio_mmc: fix compilation with debug enabled + * atmel-mci: debugfs: enable clock before dumping regs + * atmel-mci: Fix memory leak in atmci_regs_show + * atmel-mci: Fix bogus debugfs file size + * atmel-mci: Set MMC_CAP_NEEDS_POLL if no detect_pin + * mmc_block: handle error from mmc_register_driver() + * mmc_test: initialize mmc_test_lock statically + * [MIPS] Fix 64-bit IP checksum code + * [MIPS] SMTC: Clear TIF_FPUBOUND on clone / fork. + * [MIPS] Fix potential latency problem due to non-atomic cpu_wait. + * [MIPS] vmlinux.lds.S: handle .text.* + * MAINTAINERS: Trivial whitespace cleanups + * MAINTAINERS: Various fixes + * Linux 2.6.27-rc7 + + -- Tim Gardner Sun, 21 Sep 2008 21:49:28 -0600 + +linux (2.6.27-3.4) intrepid; urgency=low + + [ Colin Ian King ] + + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + - LP: #246067 + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + - LP: #209901 + * SAUCE: appleir: Enable driver for new MacBook Pro + - LP: #157919 + + [ Tim Gardner ] + + * Enabled CONFIG_DEBUG_RODATA=y + + [ Upstream Kernel Changes ] + + * Revert "ALSA: hda - Added model selection for iMac 24"" + * Revert "x86: fix HPET regression in 2.6.26 versus 2.6.25, check hpet + against BAR, v3" + * Revert "[ARM] use the new byteorder headers" + * Revert "mac80211: Use IWEVASSOCREQIE instead of IWEVCUSTOM" + * Revert "crypto: camellia - Use kernel-provided bitops, unaligned access + helpers" + * svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet + * sched, cpuset: rework sched domains and CPU hotplug handling (v4) + * ACPI: Fix now signed module parameter. + * ACPI: Change package length error to warning + * ACPI: Fix now signed module parameter. + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * acpi: add checking for NULL early param + * UBIFS: fix zero-length truncations + * Input: bcm5974 - add maintainer entry + * sh64: re-add the __strnlen_user() prototype + * sh: fix ptrace_64.c:user_disable_single_step() + * PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors + * UBIFS: always read hashed-key nodes under TNC mutex + * UBIFS: allow for racing between GC and TNC + * [CIFS] Fix plaintext authentication + * sparc32: Implement smp_call_function_single(). + * sh: crash kernel resource fix + * sh: fix kexec entry point for crash kernels + * sh: fix platform_resource_setup_memory() section mismatch + * sh: update Migo-R defconfig + * sh: update AP325RXA defconfig + * sh: fix semtimedop syscall + * cifs: fix O_APPEND on directio mounts + * [CIFS] update cifs change log + * [CIFS] Turn off Unicode during session establishment for plaintext + authentication + * ACPI: thinkpad-acpi: wan radio control is not experimental + * sparc: Fix resource flags for PCI children in OF device tree. + * remove blk_register_filter and blk_unregister_filter in gendisk + * ALSA: oxygen: fix distorted output on AK4396-based cards + * ipv6: When we droped a packet, we should return NET_RX_DROP instead of + 0 + * pkt_sched: Fix locking of qdisc_root with qdisc_root_sleeping_lock() + * net: Unbreak userspace usage of linux/mroute.h + * Don't trigger softlockup detector on network fs blocked tasks + * Resource handling: add 'insert_resource_expand_to_fit()' function + * sparc64: setup_valid_addr_bitmap_from_pavail() should be __init + * UBIFS: do not update min_idx_lebs in stafs + * UBIFS: push empty flash hack down + * UBIFS: remove incorrect index space check + * UBIFS: improve statfs reporting + * UBIFS: fix assertion + * UBIFS: add forgotten gc_idx_lebs component + * UBIFS: introduce LEB overhead + * UBIFS: improve statfs reporting even more + * UBIFS: fill f_fsid + * drm/radeon: downgrade debug message from info to debug. + * Remove invalidate_partition call from do_md_stop. + * Fix problem with waiting while holding rcu read lock in md/bitmap.c + * ALSA: hda: Distortion fix for dell_m6_core_init + * ALSA: ASoC: fix pxa2xx-i2s clk_get call + * block: restore original behavior of /proc/partition when there's no + partition + * debugobjects: fix lockdep warning + * avr32: Fix lockup after Java stack underflow in user mode + * avr32: pm_standby low-power ram bug fix + * nfsd: fix compound state allocation error handling + * sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports + * nfsd: fix buffer overrun decoding NFSv4 acl + * audit: Moved variable declaration to beginning of function + * Fix modules_install on RO nfs-exported trees. + * Remove '#include ' from mm/page_isolation.c + * dabusb_fpga_download(): fix a memory leak + * [MTD] mtdchar.c: Fix regression in MEMGETREGIONINFO ioctl() + * ALSA: hda - Fix ALC663 auto-probe + * ALSA: hda - Add mic-boost controls to ALC662/663 auto configuration + * Un-break printk strings in x86 PCI probing code + * kernel/resource.c: fix new kernel-doc warning + * softlockup: minor cleanup, don't check task->state twice + * fix typo in arch/parisc/hpux/fs.c + * m68k: atari_keyb_init operator precedence fix + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * don't diff generated firmware files + * IDE: compile fix for sff_dma_ops + * IDE: palm_bk3710: fix compile warning for unused variable + * ide: fix hwif_to_node() + * palm_bk3710: improve IDE registration + * ide-disk: remove stale init_idedisk_capacity() documentation + * ide/Kconfig: mark ide-scsi as deprecated + * net/wireless/Kconfig: clarify the description for + CONFIG_WIRELESS_EXT_SYSFS + * iwlwifi: do not use GFP_DMA in iwl_tx_queue_init + * iwlwifi: workaround interrupt handling no some platforms + * iwlwifi: fix apm_stop (wrong bit polarity for FLAG_INIT_DONE) + * iwlwifi: fix 64bit platform firmware loading + * orinoco: Multicast to the specified addresses + * wireless/libertas/if_cs.c: fix memory leaks + * mac80211: Fix debugfs union misuse and pointer corruption + * rt2x00: Compiler warning unmasked by fix of BUILD_BUG_ON + * ath9k: Incorrect key used when group and pairwise ciphers are + different. + * ath9: Fix ath_rx_flush_tid() for IRQs disabled kernel warning message. + * net/xfrm: Use an IS_ERR test rather than a NULL test + * ipv: Re-enable IP when MTU > 68 + * NTFS: update homepage + * mm: make setup_zone_migrate_reserve() aware of overlapping nodes + * VFS: fix dio write returning EIO when try_to_release_page fails + * acer-wmi: remove debugfs entries upon unloading + * mm/bootmem: silence section mismatch warning - + contig_page_data/bootmem_node_data + * MAINTAINERS: add a maintainer for the BCM5974 multitouch driver + * 8250: improve workaround for UARTs that don't re-assert THRE correctly + * mmc: at91_mci: don't use coherent dma buffers + * pid_ns: zap_pid_ns_processes: fix the ->child_reaper changing + * pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits + * cirrusfb: check_par fixes + * devcgroup: fix race against rmdir() + * mm: show quicklist usage in /proc/meminfo + * mm: size of quicklists shouldn't be proportional to the number of CPUs + * ipc: document the new auto_msgmni proc file + * hp-wmi: update to match current rfkill semantics + * hp-wmi: add proper hotkey support + * tdfxfb: fix SDRAM memory size detection + * tdfxfb: fix frame buffer name overrun + * rtc_time_to_tm: fix signed/unsigned arithmetic + * ibft: fix target info parsing in ibft module + * sysfs: document files in /sys/firmware/sgi_uv/ + * rtc-cmos: wake again from S5 + * pm_qos_requirement might sleep + * drivers/char/random.c: fix a race which can lead to a bogus BUG() + * ipsec: Fix deadlock in xfrm_state management. + * [x86] Fix TSC calibration issues + * tipc: Don't use structure names which easily globally conflict. + * sparc64: Fix IPI call locking. + * [ARM] omap: fix gpio.c build error + * sparc64: Prevent sparc64 from invoking irq handlers on offline CPUs + * powerpc: Fix uninitialised variable in VSX alignment code + * powerpc: Only make kernel text pages of linear mapping executable + * powerpc: Make sure _etext is after all kernel text + * powerpc: Work around gcc's -fno-omit-frame-pointer bug + * powerpc: Fix build error with 64K pages and !hugetlbfs + * powerpc: Fix for getting CPU number in power_save_ppc32_restore() + * UBIFS: amend f_fsid + * net/usb/pegasus: avoid hundreds of diagnostics + * ixgbe: initialize interrupt throttle rate + * pcnet-cs, axnet_cs: add new IDs, remove dup ID with less info + * netxen: Remove workaround for chipset quirk + * Split up PIT part of TSC calibration from native_calibrate_tsc + * iwlwifi: W/A for the TSF correction in IBSS + * iwlwifi: fix hidden ssid discovery in passive channels + * iwlwifi: remove false rxon if rx chain changes + * iwlwifi: fix station mimo power save values + * iwlwifi: fix rx_chain computation + * iwlwifi: fix Tx cmd memory allocation failure handling + * iwlwifi: call apm stop on exit + * iwlwifi: fix STATUS_EXIT_PENDING is not set on pci_remove + * ath9k: Fix TX status reporting + * ath9k: Fix TX control flag use for no ACK and RTS/CTS + * V4L/DVB (8555): au8522: add mechanism to configure IF frequency for vsb + and qam + * V4L/DVB (8556): au0828: add support for Hauppauge Woodbury + * V4L/DVB (8598): au8522: clean up function au8522_set_if + * V4L/DVB (8599): au8522: remove if frequency settings from vsb/qam + modulation tables + * V4L/DVB (8600): au0828: explicitly set 6 MHz IF frequency in + hauppauge_hvr950q_config + * V4L/DVB (8629): v4l2-ioctl: do not try to handle private V4L1 ioctls + * V4L/DVB (8633): ivtv: update ivtv version number + * V4L/DVB (8648): ivtv: improve CC support + * V4L/DVB (8660): gspca: Simplify the scan of URB packets in pac7311. + * V4L/DVB (8661): gspca: Bug in the previous changeset about pac7311. + * V4L/DVB (8663): gspca: Webcam 0c45:6128 added in sonixj. + * V4L/DVB (8664): gspca: The bridge/sensor of the webcam 093a:2621 is a + PAC 7302. + * V4L/DVB (8665): gspca: Fix the 640x480 resolution of the webcam + 093a:2621. + * V4L/DVB (8666): gspca: Bad scanning of frames in pac7311. + * V4L/DVB (8667): gspca: Bad probe of Z-Star/Vimicro webcams with pas106 + sensor. + * V4L/DVB (8668): gspca: Conflict GSPCA / ET61X251 for the webcam + 102c:6251. + * V4L/DVB (8669): gspca: Add white balance control for spca561 rev 012A. + * V4L/DVB (8671): gspca: Remove the unused field 'dev_name' of the device + structure. + * V4L/DVB (8672): gspca: Big rewrite of spca561. + * V4L/DVB (8673): gspca: Bad frame scanning again and bad init in + pac7311. + * V4L/DVB (8674): gspca: Webcam 0c45:612e added in sonixj. + * V4L/DVB (8675): gspca: Pixmap PJPG (Pixart 73xx JPEG) added, generated + by pac7311. + * V4L/DVB (8678): Remove the dead CONFIG_RADIO_MIROPCM20{,_RDS} code + * V4L/DVB (8681): v4l2-ioctl.c: fix warning + * V4L/DVB (8682): V4L: fix return value of register video func + * V4L/DVB (8701): cx18: Add missing lock for when the irq handler + manipulates the queues + * V4L/DVB (8703): gspca: Do controls work for spca561 revision 12a. + * V4L/DVB (8705): gspca: Adjust some control limits in spca561. + * V4L/DVB (8706): Make contrast and brightness work for pac7302. + * V4L/DVB (8707): gspca: Colors, hflip and vflip controls added for + pac7302. + * V4L/DVB (8709): gspca: Fix initialization and controls of sn9x110 - + ov7630. + * V4L/DVB (8710): gspca: Bad color control in sonixj. + * V4L/DVB (8711): gspca: Bad controls and quantization table of pac7311. + * V4L/DVB (8712): gspca: Bad start of sonixj webcams since changeset + a8779025e7e8. + * V4L/DVB (8713): gspca: Bad color control again in sonixj. + * V4L/DVB (8714): gspca: Bad start of sn9c110 and sensor om6802. + * V4L/DVB (8715): gspca: Change the name of some webcam in the gspca doc. + * V4L/DVB (8716): gspca: Bad start of sn9c110 and sensor ov7630. + * V4L/DVB (8717): gspca: Frame buffer too small for small resolutions + (sonixj and t613). + * V4L/DVB (8718): gspca: suspend/resume added. + * V4L/DVB (8719): gspca: Have VIDIOC_QUERYCTRL more compliant to the + spec. + * V4L/DVB (8720): gspca: V4L2_CAP_SENSOR_UPSIDE_DOWN added as a cap for + some webcams. + * V4L/DVB (8722): sms1xxx: fix typo in license header + * V4L/DVB (8726): link tuner before saa7134 + * V4L/DVB (8727): V4L1: make PMS not autoprobe when builtin. + * V4L/DVB (8728): 1-make-pms-not-autoprobe-when-builtin update + * V4L/DVB (8749): Fix error code, when camera is not turned on by sonypi + * V4L/DVB (8750): V4L: check inval in video_register_device_index() + * V4L/DVB (8751): vivi: Fix some issues at vivi register routine + * V4L/DVB (8757): v4l-dvb: fix a bunch of sparse warnings + * V4L/DVB (8769): cx18: Simplify queue flush logic to prevent oops in + cx18_flush_queues() + * V4L/DVB (8778): radio: fix incorrect video_register_device result check + * V4L/DVB (8779): v4l: fix more incorrect video_register_device result + checks + * V4L/DVB (8790): saa7115: call i2c_set_clientdata only when state != + NULL + * V4L/DVB (8803): s5h1409: Enable QAM_AUTO mode + * V4L/DVB (8804): s5h1411: Enable QAM_AUTO mode + * V4L/DVB (8805): Steven Toth email address change + * V4L/DVB (8809): gspca: Revert commit + 9a9335776548d01525141c6e8f0c12e86bbde982 + * V4L/DVB (8810): gspca: Compile error when CONFIG_PM not defined. + * V4L/DVB (8812): gspca: Do pac73xx webcams work. + * V4L/DVB (8813): gspca: Adjust SOF detection for pac73xx. + * V4L/DVB (8814): gspca: Set DISABLED the disabled controls at query + control time. + * V4L/DVB (8815): gspca: Fix problems with disabled controls. + * V4L/DVB (8816): gspca: Set disabled ctrls and fix a register pb with + ovxxxx in sonixb. + * V4L/DVB (8817): gspca: LED and proble changes in sonixb. + * V4L/DVB (8818): gspca: Reinitialize the device on resume. + * V4L/DVB (8819): gspca: Initialize the ov519 at open time and source + cleanup. + * V4L/DVB (8820): gspca: Change initialization and gamma of zc3xx - + pas106. + * V4L/DVB (8822): gspca: Change some subdriver functions for + suspend/resume. + * V4L/DVB (8823): gspca: H and V flips work for ov7670 only in ov519. + * V4L/DVB (8824): gspca: Too much code removed in the suspend/resume + changeset. + * V4L/DVB (8825): gspca: More controls for pac73xx and new webcam + 093a:2624. + * V4L/DVB (8826): gspca: Webcam Labtec 2200 (093a:2626) added in pac7311. + * V4L/DVB (8827): gspca: Stop pac7302 autogain oscillation. + * V4L/DVB (8828): gspca: Set the clock at the end of initialization in + sonixj. + * V4L/DVB (8829): gspca: Have a clean kmalloc-ated buffer for USB + exchanges. + * V4L/DVB (8830): gspca: Move some probe code to the new init function. + * V4L/DVB (8831): gspca: Resolve webcam conflicts between some drivers. + * V4L/DVB (8832): gspca: Bad pixelformat of vc0321 webcams. + * V4L/DVB (8833): gspca: Cleanup the sonixb code. + * V4L/DVB (8834): gspca: Have a bigger buffer for sn9c10x compressed + images. + * V4L/DVB (8835): gspca: Same pixfmt as the sn9c102 driver and raw Bayer + added in sonixb. + * V4L/DVB (8837): dvb: fix I2C adapters name size + * V4L/DVB (8839): dib0700: add comment to identify 35th USB id pair + * V4L/DVB (8840): dib0700: add basic support for Hauppauge Nova-TD-500 + (84xxx) + * V4L/DVB (8842): vivi_release(): fix use-after-free + * V4L/DVB (8843): tda10048_firmware_upload(): fix a memory leak + * V4L/DVB (8844): dabusb_fpga_download(): fix a memory leak + * bnx2x: Accessing un-mapped page + * SELinux: memory leak in security_context_to_sid_core + * x86: add io delay quirk for Presario F700 + * mmap: fix petty bug in anonymous shared mmap offset handling + * x86: Change warning message in TSC calibration. + * PCI: fix pbus_size_mem() resource alignment for CardBus controllers + * [ARM] omap: fix build error in ohci-omap.c + * [ARM] remove unused #include + * ACPI: Make Len Brown the ACPI maintainer again + * fujitsu-laptop: fix regression for P8010 in 2.6.27-rc + * ACPI: Avoid bogus timeout about SMbus check + * acer-wmi: remove debugfs entries upon unloading + * forgotten refcount on sysctl root table + * V4L/DVB (8868): gspca: Support for vga modes with sif sensors in + sonixb. + * V4L/DVB (8869): gspca: Move the Sonix webcams with TAS5110C1B from + sn9c102 to gspca. + * V4L/DVB (8870): gspca: Fix dark room problem with sonixb. + * V4L/DVB (8872): gspca: Bad image format and offset with rev072a of + spca561. + * V4L/DVB (8873): gspca: Bad image offset with rev012a of spca561 and + adjust exposure. + * V4L/DVB (8874): gspca: Adjust hstart for sn9c103/ov7630 and update + usb-id's. + * [ARM] omap: fix virtual vs physical address space confusions + * V4L/DVB (8876): budget: udelay changed to mdelay + * V4L/DVB (8877): b2c2 and bt8xx: udelay to mdelay + * V4L/DVB (8880): PATCH: Fix parents on some webcam drivers + * V4L/DVB (8881): gspca: After 'while (retry--) {...}', retry will be -1 + but not 0. + * powerpc/spufs: Fix multiple get_spu_context() + * powerpc/spufs: Fix race for a free SPU + * Input: bcm5974 - small formatting cleanup + * Input: bcm5974 - improve finger tracking and counting + * Input: bcm5974 - add BTN_TOUCH event for mousedev benefit + * Input: i8042 - make Lenovo 3000 N100 blacklist entry more specific + * sh: resume_kernel fix for kernel oops built with CONFIG_BKL_PREEMPT=y. + * sh64: resume_kernel fix for kernel oops built with + CONFIG_BKL_PREEMPT=y. + * i2c: fix i2c-sh_mobile timing issues + * clockevents: prevent clockevent event_handler ending up handler_noop + * clockevents: prevent endless loop in periodic broadcast handler + * clockevents: enforce reprogram in oneshot setup + * clockevents: prevent multiple init/shutdown + * clockevents: prevent endless loop lockup + * HPET: make minimum reprogramming delta useful + * [MTD] [NAND] tmio_nand: fix base address programming + * Fix conditional export of kvh.h and a.out.h to userspace. + * async_tx: fix the bug in async_tx_run_dependencies + * sched_clock: fix NOHZ interaction + * sched: fix process time monotonicity + * UBIFS: fix division by zero + * UBIFS: make minimum fanout 3 + * [MIPS] Fix data bus error recovery + * [MIPS] Fix WARNING: at kernel/smp.c:290 + * [MIPS] TXx9: Fix txx9_pcode initialization + * [MIPS] TX39xx: Add missing local_flush_icache_range initialization + * [MIPS] Probe initrd header only if explicitly specified + * res_counter: fix off-by-one bug in setting limit + * forcedeth: fix kexec regression + * atmel_lcdfb: fix oops in rmmod when framebuffer fails to register + * tracehook: comment pasto fixes + * drivers/mmc/card/block.c: fix refcount leak in mmc_block_open() + * x86: boot: stub out unimplemented CPU feature words + * x86: add NOPL as a synthetic CPU feature bit + * x86: use X86_FEATURE_NOPL in alternatives + * clockevents: broadcast fixup possible waiters + * x86: HPET fix moronic 32/64bit thinko + * x86: HPET: read back compare register before reading counter + * Fix CONFIG_AC97_BUS dependency + * [ARM] 5241/1: provide ioremap_wc() + * ntp: fix calculation of the next jiffie to trigger RTC sync + * clocksource, acpi_pm.c: use proper read function also in errata mode + * clocksource, acpi_pm.c: check for monotonicity + * x86: delay early cpu initialization until cpuid is done + * x86: move mtrr cpu cap setting early in early_init_xxxx + * sched: arch_reinit_sched_domains() must destroy domains to force + rebuild + * x86, xen: Use native_pte_flags instead of native_pte_val for .pte_flags + * x86: pda_init(): fix memory leak when using CPU hotplug + * x86: cpu_init(): fix memory leak when using CPU hotplug + * powerpc/spufs: Fix possible scheduling of a context to multiple SPEs + * netfilter: nf_conntrack_sip: de-static helper pointers + * netfilter: nf_conntrack_gre: more locking around keymap list + * netfilter: nf_conntrack_gre: nf_ct_gre_keymap_flush() fixlet + * netfilter: nf_conntrack_irc: make sure string is terminated before + calling simple_strtoul + * pkt_sched: Fix qdisc state in net_tx_action() + * powerpc: Fix rare boot build breakage + * ahci, pata_marvell: play nicely together + * sata_mv: add RocketRaid 1720 PCI ID to driver + * ahci: disable PMP for marvell ahcis + * sata_nv: disable hardreset for generic + * libata-sff: kill spurious WARN_ON() in ata_hsm_move() + * pata_sil680: remove duplicate pcim_enable_device + * ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs + * [MIPS] IP22: Fix detection of second HPC3 on Challenge S + * xen: fix 2.6.27-rc5 xen balloon driver warnings + * x86: disable static NOPLs on 32 bits + * netns : fix kernel panic in timewait socket destruction + * bridge: don't allow setting hello time to zero + * NFS: Restore missing hunk in NFS mount option parser + * usb: fix null deferences in low level usb serial + * Fix format of MAINTAINERS + * sparc64: Disable timer interrupts in fixup_irqs(). + * [Bluetooth] Fix reference counting during ACL config stage + * [Bluetooth] Enforce correct authentication requirements + * [Bluetooth] Reject L2CAP connections on an insecure ACL link + * [S390] CVE-2008-1514: prevent ptrace padding area read/write in 31-bit + mode + * [S390] cio: Correct cleanup on error. + * [S390] cio: handle ssch() return codes correctly. + * [S390] cio: allow offline processing for disconnected devices + * ipsec: Restore larval states and socket policies in dump + * update Documentation/filesystems/Locking for 2.6.27 changes + * MAINTAINERS: add Atheros maintainer for atlx + * lib: Correct printk %pF to work on all architectures + * x86: fix memmap=exactmap boot argument + * clockevents: remove WARN_ON which was used to gather information + * ipv6: Fix OOPS in ip6_dst_lookup_tail(). + * Linux 2.6.27-rc6 + + -- Ben Collins Tue, 02 Sep 2008 12:45:56 -0400 + +linux (2.6.27-2.3) intrepid; urgency=low + + [ Ben Collins ] + + * build/retag: Make script save .orig of tags for later use + * ubuntu/lirc: Fix device_create call + * build/firmware: Put in-kernel firmware into version specific subdir + - LP: #262115 + * Rebase on linux-2.6 git. + * ABI bump + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (no-up) Apparmor warning fixes + + [ John Johansen ] + + * SAUCE: (no-up) Proper AppArmor ptrace updates for newer lsm API + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + - LP: #25896 + + -- Ben Collins Wed, 27 Aug 2008 14:03:05 -0400 + +linux (2.6.27-1.2) intrepid; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: apparmor: Update for changes to ptrace lsm hooks + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: applesmc: Add MacBookAir + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * Update config files + * build/d-i: Remove obsolete dm modules + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: Enable speedstep for sonoma processors. + + [ Dennis Noordsij ] + + * SAUCE: Work around ACPI corruption upon suspend on some Dell machines. + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.27-0.0) intrepid; urgency=low + + * Not uploaded, placeholder for new release + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.26-5.17) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add tosh_smm symbol to blacklist + + -- Ben Collins Fri, 15 Aug 2008 09:29:34 -0400 + +linux (2.6.26-5.16) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: toshiba_acpi: Rewrote most of the proc entry bits." + * Revert "SAUCE: Update toshiba_acpi.c to version 0.19a" + * build/config: Disable in-kernel toshiba driver(s) + * ubuntu/tlsup: New driver for toshiba laptops + * build/config: Enable TLSUP driver + * SAUCE: e1000e: Fix E1000E_ENABLED logic to check for our E1000E_NEW + driver as well + * ubuntu/e1000e: Remove E1000E_ENABLED option in local config + * build/config: Update configs to have E1000E_ENABLED set + * ubuntu/prism2: Remove duplicate device + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Stefan Bader ] + + * SAUCE: x86: HPET rework for SB700 + - LP: #255910 + + [ Tim Gardner ] + + * Add GNBD driver + * Enable GNBD driver + * SAUCE: Add GFS driver + * SAUCE: Enable gfs driver configs + * b43: Linksys WMP54G (BCM4306/3) card in a PCI format has an SPROM + coding + + [ Upstream Kernel Changes ] + + * KVM: x86 emulator: emulate clflush + * USB: quirk PLL power down mode + + -- Ben Collins Mon, 11 Aug 2008 13:19:28 -0400 + +linux (2.6.26-5.15) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: Add blacklist support to fix Belkin bluetooth dongle." + - Superceded by upstream changes. + * build/config: New option enabled for uvcvideo + * build/control: Add Vcs-Git meta data to control file + * SAUCE: toshiba_acpi: Rewrote most of the new code + * abi/perm-blacklist: Add emu10k1 driver to blacklist + + [ Upstream Kernel Changes ] + + * pxamci: trivial fix of DMA alignment register bit clearing + * udplite: Protection against coverage value wrap-around + * ipv6: use timer pending + * ipv6: __KERNEL__ ifdef struct ipv6_devconf + * hdlcdrv: Fix CRC calculation. + * quota: fix possible infinite loop in quota code + * isofs: fix minor filesystem corruption + * KVM: VMX: Fix a wrong usage of vmcs_config + * KVM: SVM: fix suspend/resume support + * KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held + * KVM: VMX: Add ept_sync_context in flush_tlb + * KVM: x86 emulator: Fix HLT instruction + * KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction + * KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts + * Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error + * rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall + * Fix typos from signal_32/64.h merge + * x86 reboot quirks: add Dell Precision WorkStation T5400 + * USB: fix usb serial pm counter decrement for disconnected interfaces + * x86, suspend, acpi: enter Big Real Mode + * markers: fix duplicate modpost entry + * Fix build on COMPAT platforms when CONFIG_EPOLL is disabled + * proc: fix /proc/*/pagemap some more + * cpusets: fix wrong domain attr updates + * x86: fix crash due to missing debugctlmsr on AMD K6-3 + * ide-cd: fix oops when using growisofs + * rtc-at91rm9200: avoid spurious irqs + * vmlinux.lds: move __attribute__((__cold__)) functions back into final + .text section + * ARM: fix fls() for 64-bit arguments + * tcp: Clear probes_out more aggressively in tcp_ack(). + * sparc64: Fix lockdep issues in LDC protocol layer. + * sparc64: Fix cpufreq notifier registry. + * sparc64: Do not define BIO_VMERGE_BOUNDARY. + * iop-adma: fix platform driver hotplug/coldplug + * myri10ge: do not forget to setup the single slice pointers + * myri10ge: do not use mgp->max_intr_slots before loading the firmware + * ALSA: trident - pause s/pdif output + * V4L: cx18: Upgrade to newer firmware & update documentation + * DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 + * V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing + * V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume + * V4L: uvcvideo: Don't free URB buffers on suspend + * V4L: uvcvideo: Make input device support optional + * V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated + webcam + * V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner + type + * V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 + * DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default + * DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not + stream + * DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues + * DVB: cx23885: SRAM changes for the 885 and 887 silicon parts + * x86: fix kernel_physical_mapping_init() for large x86 systems + * eCryptfs: use page_alloc not kmalloc to get a page of memory + * UML - Fix boot crash + * ixgbe: remove device ID for unsupported device + * mpc52xx_psc_spi: fix block transfer + * tmpfs: fix kernel BUG in shmem_delete_inode + * markers: fix markers read barrier for multiple probes + * VFS: increase pseudo-filesystem block size to PAGE_SIZE + * cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called + already + * b43legacy: Release mutex in error handling code + * ath5k: don't enable MSI, we cannot handle it yet + * Fix off-by-one error in iov_iter_advance() + * Linux 2.6.26.1 + * ftrace: remove unneeded documentation + * romfs_readpage: don't report errors for pages beyond i_size + * netfilter: nf_nat_sip: c= is optional for session + * SCSI: bsg: fix bsg_mutex hang with device removal + * x86: idle process - add checking for NULL early param + * x86: io delay - add checking for NULL early param + * Close race in md_probe + * Kprobe smoke test lockdep warning + * netfilter: xt_time: fix time's time_mt()'s use of do_div() + * linear: correct disk numbering error check + * SCSI: ch: fix ch_remove oops + * NFS: Ensure we zap only the access and acl caches when setting new acls + * jbd: fix race between free buffer and commit transaction + * Input: i8042 - add Intel D845PESV to nopnp list + * Input: i8042 - add Gericom Bellagio to nomux blacklist + * Input: i8042 - add Acer Aspire 1360 to nomux blacklist + * Bluetooth: Signal user-space for HIDP and BNEP socket errors + * Add compat handler for PTRACE_GETSIGINFO + * ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode + * ALSA: hda - Fix DMA position inaccuracy + * ALSA: hda - Add missing Thinkpad Z60m support + * ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2 + * vfs: fix lookup on deleted directory + * Ath5k: fix memory corruption + * Ath5k: kill tasklets on shutdown + * sound: ensure device number is valid in snd_seq_oss_synth_make_info + * Linux 2.6.26.2 + + -- Ben Collins Sun, 03 Aug 2008 13:25:02 -0400 + +linux (2.6.26-5.14) intrepid; urgency=low + + [ Ben Collins ] + + * SAUCE: applesmc: Add MacBookAir + * build: Do not build ddeb unless we are on the buildd + * build: control: Consistency in arch fields. + * SAUCE: Update toshiba_acpi.c to version 0.19a + - LP: #77026 + * build: Added perm blacklist support and per-module support to abi-check + - Blacklist p80211 module from abi checks + * ubuntu/lirc: Get rid of drivers symlink and use real include stuff + + + [ Colin Ian King ] + + * SAUCE: acerhk module - add support for Amilo A1650g keyboard + - LP: #84159 + * SAUCE: rt2x00: Fix OOPS on failed creation of rt2x00lib workqueue + - LP: #249242 + + [ Mario Limonciello ] + + * Add LIRC back in + + [ Tim Gardner ] + + * Makefile race condition can lead to ndiswrapper build failure + - LP: #241547 + * update linux-wlan-ng (prism2_usb) to upstream version 1861 + - LP: #245026 + + [ Upstream Kernel Changes ] + + * Fix typos from signal_32/64.h merge + + -- Ben Collins Fri, 01 Aug 2008 00:05:01 -0400 + +linux (2.6.26-5.13) intrepid; urgency=low + + [ Ben Collins ] + + * build: Make makedumpfile an amd64/i386 only build-dep + * ubuntu/acerhk: Fixup assembly to compile with newer binutils + + -- Ben Collins Sat, 26 Jul 2008 16:41:50 -0400 + +linux (2.6.26-4.12) intrepid; urgency=low + + [ Ben Collins ] + + * e1000e: Upgraded module to 0.4.1.7 upstream. Placed in ubuntu/, + in-kernel driver disabled + * config: Disable e1000e in-kernel, and enable newer driver in ubuntu/ + * rfkill: Update to 1.3 drivers, and move to common location + * ubuntu: Actually link kconfig/kbuild into rfkill subdir + * config: Enable loading dsdt from initramfs + - LP: #246222 + * ubuntu: [compcache] Update to fix crashes in improper BUG() + * build: Create a retag scripts to recover tags from rebases + * build: Updates for dbg pkg + * build: Make sure no empty lines show up in debian/files + * ubuntu: atl1e: Add new driver from 2.6.27-pre-rc1 + - LP: #243894 + * sys_getcwd: Fix some brokeness introduced by AppArmor __d_path + changes + - LP: #251223 + * ubuntu: unionfs: Added v1.4 module from hardy + * build: Add sub-flavour infrastructure, and virtual subflav + + [ Eric Piel ] + + * ACPI: Allow custom DSDT tables to be loaded from initramfs + + [ Kees Cook ] + + * AppArmor: Smack VFS patches + + [ Mario Limonciello ] + + * Work around ACPI corruption upon suspend on some Dell machines. + - LP: #183033 + + [ Tim Gardner ] + + * Export usbhid_modify_dquirk for LBM module bcm5974 + - LP: #250838 + * VIA - Add VIA DRM Chrome9 3D engine + - LP: #251862 + * Define TRUE/FALSE for VIA DRM driver. + + -- Ben Collins Tue, 15 Jul 2008 12:51:39 -0400 + +linux (2.6.26-4.11) intrepid; urgency=low + + [ Ben Collins ] + + * config: Enable bcm5974 driver in all configs + + [ 2.6.26-4.10 ] + + [ Amit Kucheria ] + + * Fix typo in GSPCA Makefile and make it compile + + [ Ben Collins ] + + * ubuntu: Remove UVC driver in favor of in-kernel one (-rc9) + * config: Updates for -rc9 + * ubuntu: Add acx, prism2_usb wireless drivers + * config: Enable prism2_usb and acx drivers. + * ubuntu: Add at76 driver to build + * config: Enable at76_usb driver. + * iscsitarget: Fix prototype for bi_end_io callback. + * acx: Fix section type mismatch warnings + * fsam7400: Add sw kill switch driver + * config: Enable fsam7400 driver + * qc-usb: Added new driver + * config: Enable qc-usb driver + * drbd: Remove built-in connector usage + * drbd: Do not define idx/val for connector here + * connector.h: Add idx/val for drbd + * bcm5974: Added new driver + + [ Kees Cook ] + + * SAUCE: [AppArmor] merge with upstream subversion r1291 + * SAUCE: [AppArmor] fix typo in selinux_inode_link + * SAUCE: [AppArmor] aufs patches + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + - LP: #241749 + + [ Tim Gardner ] + + * SAUCE: Medion Akoya Mini E1210 + + [ Upstream Kernel Changes ] + + * Revert "BAST: Remove old IDE driver" + * ARM: OMAP: DMA: Don't mark channel active in omap_enable_channel_irq + * ARM: OMAP: Correcting the gpmc prefetch control register address + * debugobjects: fix lockdep warning + * [ARM] 5115/1: pxafb: fix ifdef for command line option handling + * [ARM] 5116/1: pxafb: cleanup and fix order of failure handling + * [ARM] 5109/1: Mark rtc sa1100 driver as wakeup source before + registering it + * [ARM] Export dma_sync_sg_for_device() + * fix cgroup-inflicted breakage in block_dev.c + * [patch for 2.6.26 2/4] vfs: utimensat(): be consistent with utime() for + immutable and append-only files + * [patch for 2.6.26 1/4] vfs: utimensat(): ignore tv_sec if tv_nsec == + UTIME_OMIT or UTIME_NOW + * [patch for 2.6.26 3/4] vfs: utimensat(): fix error checking for + {UTIME_NOW,UTIME_OMIT} case + * [patch for 2.6.26 4/4] vfs: utimensat(): fix write access check for + futimens() + * [patch 1/4] vfs: path_{get,put}() cleanups + * [patch 2/4] fs: make struct file arg to d_path const + * [patch 3/4] vfs: fix ERR_PTR abuse in generic_readlink + * [patch 4/4] flock: remove unused fields from file_lock_operations + * [patch 3/3] vfs: make d_path() consistent across mount operations + * [patch 1/3] vfs: dcache sparse fixes + * [patch 2/3] vfs: dcache cleanups + * udf: Fix regression in UDF anchor block detection + * [SCSI] ses: Fix timeout + * netfilter: ip6table_mangle: don't reroute in LOCAL_IN + * [SCSI] esp: Fix OOPS in esp_reset_cleanup(). + * kernel/audit.c: nlh->nlmsg_type is gotten more than once + * audit: fix kernel-doc parameter notation + * remove useless argument type in audit_filter_user() + * Blackfin arch: fix bug - kernel boot fails when Spinlock and rw-lock + debugging enabled + * Blackfin arch: fix up section mismatch warning + * mac80211: implement EU regulatory domain + * b43: Do not return TX_BUSY from op_tx + * b43legacy: Do not return TX_BUSY from op_tx + * b43: Fix possible MMIO access while device is down + * b43legacy: Fix possible NULL pointer dereference in DMA code + * rt2x00: Fix unbalanced mutex locking + * iwlwifi: improve scanning band selection management + * [SCSI] esp: tidy up target reference counting + * [ARM] 5117/1: pxafb: fix __devinit/exit annotations + * thermal: Create CONFIG_THERMAL_HWMON=n + * ACPI: don't walk tables if ACPI was disabled + * dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled. + * x86: shift bits the right way in native_read_tscp + * x86: section/warning fixes + * V4L/DVB (8004): Fix INPUT dependency at budget-ci + * V4L/DVB (8005): Fix OOPS if frontend is null + * V4L/DVB (8007): cx18/cx25840: the S-Video LUMA input can use all + In1-In8 inputs + * V4L/DVB (8008): cx18: remove duplicate audio and video input enums + * V4L/DVB (8010): em28xx: Properly register extensions for already + attached devices + * V4L/DVB (8011): em28xx: enable DVB for HVR-900 + * V4L/DVB (8012): gl861: sleep a little to avoid I2C errors + * V4L/DVB (8013): gl861: remove useless identify_state + * V4L/DVB (8015): gl861: replace non critical msleep(0) with msleep(1) to + be on the safe side + * V4L/DVB (8017): Ensure em28xx extensions only get run against devs that + support them + * V4L/DVB (8018): Add em2860 chip ID + * V4L/DVB (8020): Fix callbacks functions of saa7134_empress + * V4L/DVB (8022): saa7134: fix race between opening and closing the + device + * V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully + recovered + * V4L/DVB (8027): saa7134: Avermedia A700: only s-video and composite + input are working + * V4L/DVB (8028): Improve error messages for tda1004x attach + * V4L/DVB (8029): Improve error message at tda1004x_attach + * V4L/DVB (8034): tda18271: fix IF notch frequency handling + * V4L/DVB (8035): tda18271: dont touch EB14 if rf_cal lookup is out of + range + * V4L/DVB (8036): tda18271: toggle rf agc speed mode on TDA18271HD/C2 + only + * V4L/DVB (8037): tda18271: ensure that the thermometer is off during + channel configuration + * V4L/DVB (8039): pxa-camera: fix platform_get_irq() error handling. + * V4L/DVB (8040): soc-camera: remove soc_camera_host_class class + * V4L/DVB (8042): DVB-USB UMT-010 channel scan oops + * V4L/DVB (8043): au0828: add support for additional USB device id's + * V4L/DVB (8044): au8522: tuning optimizations + * V4L/DVB (8048): saa7134: Fix entries for Avermedia A16d and Avermedia + E506 + * V4L/DVB (8061): cx18: only select tuner / frontend modules if + !DVB_FE_CUSTOMISE + * V4L/DVB (8063): cx18: Fix unintended auto configurations in + cx18-av-core + * V4L/DVB (8066): cx18: Fix audio mux input definitions for HVR-1600 Line + In 2 and FM radio + * V4L/DVB (8067): cx18: Fix firmware load for case when digital capture + happens first + * V4L/DVB (8068): cx18: Add I2C slave reset via GPIO upon initialization + * V4L/DVB (8069): cx18: Fix S-Video and Compsite inputs for the Yuan + MPC718 and enable card entry + * V4L/DVB (8071): tda10023: Fix possible kernel oops during + initialisation + * V4L/DVB (8073): av7110: Catch another type of ARM crash + * V4L/DVB (8074): av7110: OSD transfers should not be interrupted + * V4L/DVB (8075): stv0299: Uncorrected block count and bit error rate + fixed + * V4L/DVB (8092): videodev: simplify and fix standard enumeration + * V4L/DVB (8096): au8522: prevent false-positive lock status + * V4L/DVB (8097): xc5000: check device hardware state to determine if + firmware download is needed + * V4L/DVB (8100): V4L/vivi: fix possible memory leak in vivi_fillbuff + * V4L/DVB (8108): Fix open/close race in saa7134 + * s2io: fix documentation about intr_type + * tc35815: Mark carrier-off before starting PHY + * tc35815: Fix receiver hangup on Rx FIFO overflow + * ixgbe: fix EEH recovery during reset on PPC + * igb: fix EEH recovery during reset on PPC + * e1000e: fix EEH recovery during reset on PPC + * pcnet_cs, axnet_cs: clear bogus interrupt before request_irq + * drivers/net/r6040.c: Eliminate double sizeof + * ipg: fix jumbo frame compilation + * ipg: use NULL, not zero, for pointers + * [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable + * [netdrvr] netxen: fix netxen_pci_tbl[] breakage + * e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx + * e1000: only enable TSO6 via ethtool when using correct hardware + * [netdrvr] Fix IOMMU overflow checking in s2io.c + * qla3xxx: Hold RTNL while calling dev_close() + * Hold RTNL while calling dev_close() + * sata_uli: hardreset is broken + * rt2x00: Fix lock dependency errror + * prism: islpci_eth.c endianness fix + * mac80211: fix an oops in several failure paths in key allocation + * firewire: fw-sbp2: fix parsing of logical unit directories + * kbuild: fix a.out.h export to userspace with O= build. + * Ensure interrupted recovery completed properly (v1 metadata plus + bitmap) + * Don't acknowlege that stripe-expand is complete until it really is. + * Fix error paths if md_probe fails. + * hamradio: remove unused variable + * tcp: calculate tcp_mem based on low memory instead of all memory + * tcp: fix for splice receive when used with software LRO + * af_unix: fix 'poll for write'/connected DGRAM sockets + * netdevice: Fix typo of dev_unicast_add() comment + * pkt_sched: ERR_PTR() ususally encodes an negative errno, not positive. + * pkt_sched: Remove CONFIG_NET_SCH_RR + * include/linux/netdevice.h: don't export MAX_HEADER to userspace + * tcp: /proc/net/tcp rto,ato values not scaled properly (v2) + * netlink: Fix some doc comments in net/netlink/attr.c + * CONNECTOR: add a proc entry to list connectors + * inet fragments: fix race between inet_frag_find and + inet_frag_secret_rebuild + * net/inet_lro: remove setting skb->ip_summed when not LRO-able + * netlabel: Fix a problem when dumping the default IPv6 static labels + * ipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags. + * sched: fix cpu hotplug + * Fix and clean top .gitignore + * x86: fix cpu hotplug crash + * ptrace GET/SET FPXREGS broken + * Input: add KEY_MEDIA_REPEAT definition + * Input: fix locking in force-feedback core + * [ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off + * ide: fix /proc/ide/ide?/mate reporting + * netfilter: nf_conntrack_tcp: fixing to check the lower bound of valid + ACK + * textsearch: fix Boyer-Moore text search bug + * hostap: don't report useless WDS frames by default + * hostap: fix sparse warnings + * mac80211: don't accept WEP keys other than WEP40 and WEP104 + * V4L/DVB (8145a): USB Video Class driver + * [IA64] Bugfix for system with 32 cpus + * [IA64] export account_system_vtime + * sched: fix divide error when trying to configure rt_period to zero + * x86: fix NODES_SHIFT Kconfig range + * block: Fix the starving writes bug in the anticipatory IO scheduler + * Properly notify block layer of sync writes + * rcu: fix hotplug vs rcu race + * I2C: S3C2410: Check ACK on byte transmission + * I2C: S3C2410: Fixup error codes returned rom a transfer. + * I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device. + * PCI: Restrict VPD read permission to root + * powerpc/bootwrapper: update for initrd with simpleImage + * i2c: Documentation: fix device matching description + * i2c: Fix bad hint about irqs in i2c.h + * powerpc/legacy_serial: Bail if reg-offset/shift properties are present + * powerpc/mpc5200: Fix lite5200b suspend/resume + * ipv4: fix sysctl documentation of time related values + * net-sched: change tcf_destroy_chain() to clear start of filter list + * net-sched: fix filter destruction in atm/hfsc qdisc destruction + * netlink: Unneeded local variable + * net: Tyop of sk_filter() comment + * netdevice: Fix wrong string handle in kernel command line parsing + * net: fib_rules: fix error code for unsupported families + * dm crypt: use cond_resched + * V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if + uvc is selected + * PCI: Limit VPD read/write lengths for Broadcom 5706, 5708, 5709 rev. + * PCI: acpiphp: cleanup notify handler on all root bridges + * drivers/input/ff-core.c needs + * DRM/i915: only use tiled blits on 965+ + * tty: Fix inverted logic in send_break + * x86: fix Intel Mac booting with EFI + * arch/x86/mm/init_64.c: early_memtest(): fix types + * 9p: fix O_APPEND in legacy mode + * slub: Do not use 192 byte sized cache if minimum alignment is 128 byte + * Do not overwrite nr_zones on !NUMA when initialising zlcache_ptr + * [MIPS] IP32: Fix unexpected irq 71 + * [MIPS] IP22: Fix crashes due to wrong L1_CACHE_BYTES + * [MIPS] cevt-txx9: Reset timer counter on initialization + * hrtimer: prevent migration for raising softirq + * svcrpc: fix handling of garbage args + * OHCI: Fix problem if SM501 and another platform driver is selected + * USB: fix cdc-acm resume() + * USB: ehci - fix timer regression + * USB: ohci - record data toggle after unlink + * USB: mass storage: new id for US_SC_CYP_ATACB + * sisusbvga: Fix oops on disconnect. + * USB: New device ID for ftdi_sio driver + * USB: fix interrupt disabling for HCDs with shared interrupt handlers + * USB: don't lose disconnections during suspend + * USB: another option device id + * USB: add a pl2303 device id + * USB: fix Oops on loading ipaq module since 2.6.26 + * USB: adding comment for ipaq forcing number of ports + * [MIPS] Fix bug in atomic_sub_if_positive. + * xen: fix address truncation in pte mfn<->pfn conversion + * sata_sil24: add DID for another adaptec flavor + * ahci: always clear all bits in irq_stat + * libata-sff: improve HSM violation reporting + * sata_mv: safer logic for limit_warnings + * Update maintainers for powerpc + * Christoph has moved + * mm: dirty page accounting vs VM_MIXEDMAP + * rtc: rtc_read_alarm() handles wraparound + * firmware: fix the request_firmware() dummy + * serial: fix serial_match_port() for dynamic major tty-device numbers + * get_user_pages(): fix possible page leak on oom + * rtc-x1205: Fix alarm set + * rtc: fix CMOS time error after writing /proc/acpi/alarm + * pci: VT3336 can't do MSI either + * Miguel Ojeda has moved + * ext3: add missing unlock to error path in ext3_quota_write() + * ext4: add missing unlock to an error path in ext4_quota_write() + * reiserfs: add missing unlock to an error path in reiserfs_quota_write() + * ecryptfs: remove unnecessary mux from ecryptfs_init_ecryptfs_miscdev() + * lib: taint kernel in common report_bug() WARN path. + * gpio: pca953x (i2c) handles max7310 too + * fsl_diu_fb: fix build with CONFIG_PM=y, plus fix some warnings + * Update taskstats-struct document for scaled time accounting + * cciss: fix regression that no device nodes are created if no logical + drives are configured. + * delay accounting: maintainer update + * Doc*/kernel-parameters.txt: fix stale references + * hdaps: add support for various newer Lenovo thinkpads + * mn10300: export certain arch symbols required to build allmodconfig + * mn10300: provide __ucmpdi2() for MN10300 + * Introduce rculist.h + * man-pages is supported + * ntfs: update help text + * add kernel-doc for simple_read_from_buffer and memory_read_from_buffer + * w100fb: do not depend on SHARPSL + * w100fb: add 80 MHz modeline + * MFD maintainer + * cgroups: document the effect of attaching PID 0 to a cgroup + * spi: fix the read path in spidev + * doc: doc maintainers + * security: filesystem capabilities: fix fragile setuid fixup code + * security: filesystem capabilities: fix CAP_SETPCAP handling + * Alpha Linux kernel fails with inconsistent kallsyms data + * cpusets: document proc status cpus and mems allowed lists + * MAINTAINERS: update the email address of Andreas Dilger + * cciss: read config to obtain max outstanding commands per controller + * olpc: sdhci: add quirk for the Marvell CaFe's vdd/powerup issue + * olpc: sdhci: add quirk for the Marvell CaFe's interrupt timeout + * cpumask: introduce new APIs + * mm: switch node meminfo Active & Inactive pages to Kbytes + * Update MAINTAINERS file for the TPM device driver + * devcgroup: fix odd behaviour when writing 'a' to devices.allow + * doc: document the relax_domain_level kernel boot argument + * mmc: don't use DMA on newer ENE controllers + * mempolicy: mask off internal flags for userspace API + * x86 ACPI: normalize segment descriptor register on resume + * x86 ACPI: fix resume from suspend to RAM on uniprocessor x86-64 + * softlockup: print a module list on being stuck + * ide: fix hwif->gendev refcounting + * ide: ide_unregister() warm-plug bugfix + * ide: ide_unregister() locking bugfix + * ahci: give another shot at clearing all bits in irq_stat + * Fix clear_refs_write() use of struct mm_walk + * Move _RET_IP_ and _THIS_IP_ to include/linux/kernel.h + * Fix pagemap_read() use of struct mm_walk + * Linux 2.6.26-rc9 + * Revert "USB: don't explicitly reenable root-hub status interrupts" + * Revert "PCI: Correct last two HP entries in the bfsort whitelist" + * iwlwifi: fix incorrect 5GHz rates reported in monitor mode + * iwlwifi: drop skb silently for Tx request in monitor mode + * libertas: support USB persistence on suspend/resume (resend) + * tcp: net/ipv4/tcp.c needs linux/scatterlist.h + * tcp: fix a size_t < 0 comparison in tcp_read_sock + * bridge: fix use-after-free in br_cleanup_bridges() + * Add missing skb->dev assignment in Frame Relay RX code + * forcedeth: fix lockdep warning on ethtool -s + * ehea: fix might sleep problem + * ehea: add MODULE_DEVICE_TABLE + * ehea: fix race condition + * ehea: Access iph->tot_len with correct endianness + * pasemi_mac: Access iph->tot_len with correct endianness + * ibm_newemac: Fixes kernel crashes when speed of cable connected changes + * ibm_newemac: Fixes entry of short packets + * fs_enet: restore promiscuous and multicast settings in restart() + * can: add sanity checks + * x86: KVM guest: Add memory clobber to hypercalls + * KVM: IOAPIC: Fix level-triggered irq injection hang + * [SCSI] erase invalid data returned by device + * pxamci: fix byte aligned DMA transfers + * vsprintf: split out '%s' handling logic + * vsprintf: split out '%p' handling logic + * vsprintf: add infrastructure support for extended '%p' specifiers + * vsprintf: add support for '%pS' and '%pF' pointer formats + * powerpc: Fix unterminated of_device_id array in legacy_serial.c + * [UML] fix gcc ICEs and unresolved externs + * ocfs2/dlm: Fixes oops in dlm_new_lockres() + * hostap_cs: correct poor NULL checks in suspend/resume routines + * drivers/net/wireless/iwlwifi/iwl-3945.c Fix type issue on 64bit + * mac80211: move netif_carrier_on to after + ieee80211_bss_info_change_notify + * mac80211: Only flush workqueue when last interface was removed + * zd1211rw: add ID for AirTies WUS-201 + * ssb-pcicore: Fix IRQ-vector init on embedded devices + * mac80211: don't report selected IBSS when not found + * crypto: tcrypt - Fix memory leak in test_cipher + * sctp: Mark the tsn as received after all allocations finish + * [S390] protect _PAGE_SPECIAL bit against mprotect + * irda: via-ircc proper dma freeing + * irda: New device ID for nsc-ircc + * irda: Fix netlink error path return value + * [SCSI] mptspi: fix oops in mptspi_dv_renegotiate_work() + * Correct hash flushing from huge_ptep_set_wrprotect() + * ide: add __ide_default_irq() inline helper + * palm_bk3710: fix IDECLK period calculation + * it8213: fix return value in it8213_init_one() + * [MIPS] Atlas, decstation: Fix section mismatches triggered by + defconfigs + * [MIPS] Fix 32bit kernels on R4k with 128 byte cache line size + * NFS: Fix readdir cache invalidation + * SUNRPC: Fix a double-free in rpcbind + * SUNRPC: Fix an rpcbind breakage for the case of IPv6 lookups + * reiserfs: discard prealloc in reiserfs_delete_inode + * Fix broken fix for fsl-diu-db + * RDMA/cxgb3: Fix regression caused by class_device -> device conversion + * ipv6: fix race between ipv6_del_addr and DAD timer + * sctp: Add documentation for sctp sysctl variable + * kernel/printk.c: Made printk_recursion_bug_msg static. + * powerpc: Add missing reference to coherent_dma_mask + * rc80211_pid: Fix fast_start parameter handling + * rt2x00: Disable synchronization during initialization + * zd1211rw: stop beacons on remove_interface + * libertas: fix memory alignment problems on the blackfin + * netfilter: nf_conntrack_tcp: fix endless loop + * netfilter: nf_nat_snmp_basic: fix a range check in NAT for SNMP + * md: ensure all blocks are uptodate or locked when syncing + * sched: fix cpu hotplug + * x86: fix /dev/mem compatibility under PAT + * crypto: chainiv - Invoke completion function + * ocfs2: Fix flags in ocfs2_file_lock + * kernel/kprobes.c: Made kprobe_blacklist static. + * arch/x86/kernel/.gitignore: Added vmlinux.lds to .gitignore file + because it shouldn't be tracked. + * ftrace: Documentation + * Fix PREEMPT_RCU without HOTPLUG_CPU + * sched: fix cpu hotplug, cleanup + * exec: fix stack excutability without PT_GNU_STACK + * slub: Fix use-after-preempt of per-CPU data structure + * Documentation: clarify tcp_{r,w}mem sysctl docs + * ip: sysctl documentation cleanup + * tcp: correct kcalloc usage + * ipv4: fib_trie: Fix lookup error return + * netlabel: netlink_unicast calls kfree_skb on error path by itself + * ipv6: missed namespace context in ipv6_rthdr_rcv + * xfrm: Add a XFRM_STATE_AF_UNSPEC flag to xfrm_usersa_info + * tun: Persistent devices can get stuck in xoff state + * tpm: add Intel TPM TIS device HID + * rapidio: fix device reference counting + * Fix name of Russell King in various comments + * rtc: fix reported IRQ rate for when HPET is enabled + * libata-acpi: filter out DIPM enable + * Added Targa Visionary 1000 IDE adapter to pata_sis.c + * libata-acpi: don't call sleeping function from invalid context + * Fix reference counting race on log buffers + * [SCSI] ipr: Fix HDIO_GET_IDENTITY oops for SATA devices + * IPMI: return correct value from ipmi_write + * x86: fix ldt limit for 64 bit + * [SCSI] fusion: default MSI to disabled for SPI and FC controllers + * [SCSI] bsg: fix oops on remove + * drivers/char/pcmcia/ipwireless/hardware.c fix resource leak + * drivers/isdn/i4l/isdn_common.c fix small resource leak + * fbdev: bugfix for multiprocess defio + * serial8250: sanity check nr_uarts on all paths. + * ov7670: clean up ov7670_read semantics + * rtc-fm3130: fix chip naming + * rtc-pcf8563: add chip id + * OProfile kernel maintainership changes + * frv: fix irqs_disabled() to return an int, not an unsigned long + * cifs: fix inode leak in cifs_get_inode_info_unix + * cifs: fix wksidarr declaration to be big-endian friendly + * cpusets, hotplug, scheduler: fix scheduler domain breakage + * Documentation/HOWTO: correct wrong kernel bugzilla FAQ URL + * devcgroup: always show positive major/minor num + * devcgroup: fix permission check when adding entry to child cgroup + * Linux 2.6.26 + + -- Ben Collins Mon, 14 Jul 2008 13:41:50 -0400 + +linux (2.6.26-3.9) intrepid; urgency=low + + * abi: Add dca and ioatdma to modules.ignore + + [ 2.6.26-3.8 ] + + [ Ben Collins ] + + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add heci to kconfig/kbuild + * config: Enable heci module on all flavours + * dm-bbr: Update to get it to compile with 2.6.26 + * config: Enable dm-bbr + * ubuntu: Add some media drivers + * config: Enable misc media drivers + * udeb: Switch to uvesafb in fb-modules + * abi: Add more modules to ignore (known) + + [ 2.6.26-3.7 ] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + - LP: #163075 + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Cleanup arches + * build: Remove remnants of unused binary-custom infrastructure + * build: Remove disable_d_i (not needed) and cleanup ppa build stuff + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * acer-acpi: Fix makefile + * x86/Kconfig: Fix missing quote for ubuntu Kconfig source + * ubuntu: Add iscsitarget module + * ubuntu: Added Amiga FS driver + * ubuntu: Add squashfs driver + * ubuntu: Remove asfs (Amiga FS). Need to be in linux-ports instead + * squashfs: Move headers to real include directory + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Move third-party includes to ubuntu/include + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * ubuntu/Makefile: Fixup dm-raid4-5 and add kludge for kbuild + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + * build: Disable xd block device (ancient) + * ndiswrapper: Fixup makefile + * d-i: Remove efi-modules. The only module, efivars, is built-in + * build: Remove install-source, obsolete and caused build failure + * Ubuntu-2.6.26-1.3 + * build: linux-doc rules got broken when disabling html side. Fixed now. + * Ubuntu-2.6.26-1.4 + * x86: Update to -rc6 allows CONFIG_PCI_OLPC to work with PCI_GOANY + * d-i: Make virtio-ring optional (it's built-in on i386) + * Ubuntu-2.6.26-1.4 + * Ubuntu-2.6.26-1.5 + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + * Ubuntu-2.6.26-2.6 + * Use makedumpfile to generate a vmcoreinfo file. + * build: Build-Depend on makedumpfile for vmcoreinfo generation + * build: Remove debug print from git-ubuntu-log + * Updated configs for -rc7 + * build: postinst, do not call depmod with -F + * config: Enable rtc-cmos as a built-in driver. + * control: Provide ndiswrapper-modules-1.9 + * build: Generate vmcoreinfo in image build for crashdumps without debug + image + * config: Disable vesafb, since we'll prefer uvesafb + * build: Copy uvesafb module to initrd mod directory + * abi-check: New, more robust script + * config: Enable heap randomization by default + * abi-check: Cleanup output and call with perl (not $SHELL) + * abi: Ignore missing vesafb (known) + * config: Disable pcspkr (in favor of snd-pcsp) + * swap: Add notify_swap_entry_free callback for compcache + * compcache: Added ram backed compressed swap module + * ubuntu: Enable kbuild and kconfig for compcache + * config: Enable compcache and tlsf allocator as modules + * config: Updated for -rc8. Disables XEN on i386 + * config: Switch i386-server to 64G, enable PAE, 64-bit res, and XEN + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Enable build of misc/ subdir + * config: Enable misc drivers + * aufs: Fix warning about single non-string-literal arg to printf style + function + * drivers: Remove some duplicate device entries in various modules + * config: Disable some duplicate drivers + * keyspan: Remove duplicate device ID's + * check-aliases: Cleanup output, and fix rolling checks + * ubuntu: Disable dm-bbr for now + * dm-bbr: First cut at forward portiong. Still needs work. + * ubuntu: Disable dm-bbr in kbuild/kconfig + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + - LP: #175834 + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: airprime.c supports more devices + - LP: #208250 + * SAUCE: Enable speedstep for sonoma processors. + - LP: #132271 + * Add dm-loop + * Add dm-loop BOM + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers OriginalAuthor: + Pascal Terjan Bug: #137686 + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. Bug: + #140511 + * SAUCE: Lower warning level of pci resource allocation messages. Bug: + 159241 + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * Added the debian directory. Ignore: yes + * Add support for UBUNTUINCLUDE Ignore: yes + * LUM headers go in /usr/src Ignore: yes + * First pass at 2.6.25 configs Ignore: yes + * i386 -generic builds. Ignore: yes + * SAUCE: Increase CONFIG_IDE_MAX_HWIFS to 8 (from 4) + * SAUCE: Add extra headers to linux-libc-dev OriginalAuthor: Soren Hansen + OriginalLocation: + https://lists.ubuntu.com/archives/kernel-team/2007-November/001891.html + * Set CONFIG_DEVKMEM=n Ignore: yes + * Enabled ALSA and CGROUPS for i386 Ignore: yes + * Enabled amd64 configs. Ignore: yes + * CONFIG_STANDALONE=n Ignore: yes + * CONFIG_BLK_DEV_4DRIVES=n for i386 Ignore: yes + * CONFIG: CONFIG_DEFAULT_RELATIME=y for all flavours. Ignore: yes + * Set CONFIG_EDD_OFF=y Ignore: yes + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + OriginalAuthor: Mario Limonciello Bug: + #209715 + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch OriginalAuthor: Matthew Garrett + Bug: #201591 + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + OriginalAuthor: Klaus S. Madsen + OriginalAuthor: Chuck Short + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: orinoco_cs.ko missing + * Set CONFIG_FB_VESA=m for i386/amd64 Ignore: yes + * Set CONFIG_PM_DISABLE_CONSOLE=y for all flavours Ignore: yes + * Thorough review of amd64 -generic config Ignore: yes + * Build PPA packages for Hardy until the Intrepid archive is opened. + * Deleted obsolete flavours Ignore: yes + * Don't build docs for PPA Ignore: yes + * Build all standard packages in PPA. Ignore: yes + * Remove duplicate USB ids + * SAUCE: DVB-USB UMT-010 driver oops on install Bug: #115284 + * Update configs after rebase to 2.6.26-rc1 Ignore: yes + * Update configs after rebase Ignore: yes + * Disable V4L until the build issues get ironed out. Ignore: yes + * Update configs after rebase. Ignore: yes + * Another device enable pass Ignore: yes + * Update configs after merge. Ignore: yes + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + * Enabled CONFIG_CIFS_DFS_UPCALL=y and CONFIG_CIFS_UPCALL=y + - LP: #236830 + + [Upstream Kernel Changes] + + * Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working" + * mac80211: detect driver tx bugs + * hwmon: (lm85) Fix function RANGE_TO_REG() + * hwmon: (adt7473) Initialize max_duty_at_overheat before use + * hwmon: Update the sysfs interface documentation + * hwmon: (abituguru3) Identify Abit AW8D board as such + * hwmon: (w83791d) new maintainer + * hwmon: (abituguru3) update driver detection + * hwmon: (lm75) sensor reading bugfix + * ipv6: Remove options header when setsockopt's optlen is 0 + * ipv6: Drop packets for loopback address from outside of the box. + * sched: rt: dont stop the period timer when there are tasks wanting to + run + * sched: fix wait_for_completion_timeout() spurious failure under heavy + load + * x86: fix NULL pointer deref in __switch_to + * xen: Use wmb instead of rmb in xen_evtchn_do_upcall(). + * xen: mask unwanted pte bits in __supported_pte_mask + * xen: don't drop NX bit + * sched: refactor wait_for_completion_timeout() + * Ext4: Fix online resize block group descriptor corruption + * [IA64] SN2: security hole in sn2_ptc_proc_write + * alpha: fix module load failures on smp (bug #10926) + * alpha: link failure fix + * alpha: fix compile failures with gcc-4.3 (bug #10438) + * alpha: resurrect Cypress IDE quirk + * pppoe: warning fix + * sctp: Make sure N * sizeof(union sctp_addr) does not overflow. + * netns: Don't receive new packets in a dead network namespace. + * Add return value to reserve_bootmem_node() + * Slab: Fix memory leak in fallback_alloc() + * Fix performance regression on lmbench select benchmark + * ALSA: aw2 - Fix Oops at initialization + * ALSA: sb - Fix wrong assertions + * futexes: fix fault handling in futex_lock_pi + * IB/mthca: Clear ICM pages before handing to FW + * tty_driver: Update required method documentation + * removed unused var real_tty on n_tty_ioctl() + * Fix ZERO_PAGE breakage with vmware + * mm: fix race in COW logic + * NFS: Reduce the NFS mount code stack usage. + * NFS: Fix filehandle size comparisons in the mount code + * NFS: nfs_updatepage(): don't mark page as dirty if an error occurred + * alpha: fix compile error in arch/alpha/mm/init.c + * KVM: Fix race between timer migration and vcpu migration + * KVM: close timer injection race window in __vcpu_run + * KVM: MMU: Fix rmap_write_protect() hugepage iteration bug + * KVM: MMU: large page update_pte issue with non-PAE 32-bit guests + (resend) + * KVM: MMU: Fix oops on guest userspace access to guest pagetable + * KVM: ioapic: fix lost interrupt when changing a device's irq + * KVM: VMX: Fix host msr corruption with preemption enabled + * [GFS2] BUG: unable to handle kernel paging request at ffff81002690e000 + * xen: remove support for non-PAE 32-bit + * kgdb: documentation update - remove kgdboe + * kgdb: sparse fix + * [IA64] Fix boot failure on ia64/sn2 + * [IA64] Handle count==0 in sn2_ptc_proc_write() + * [IA64] Eliminate NULL test after alloc_bootmem in iosapic_alloc_rte() + * [GFS2] fix gfs2 block allocation (cleaned up) + * x86: Add structs and functions for paravirt clocksource + * x86: Make xen use the paravirt clocksource structs and functions + * KVM: Make kvm host use the paravirt clocksource structs + * x86: KVM guest: Use the paravirt clocksource structs and functions + * KVM: Remove now unused structs from kvm_para.h + * enable bus mastering on i915 at resume time + * Linux 2.6.26-rc8 + * # Ubuntu external driver commit. + * # Ubuntu commit template. + + -- Ben Collins Sat, 21 Jun 2008 09:05:15 -0400 + +linux (2.6.26-2.6) intrepid; urgency=low + + [Ben Collins] + + * Revert "SAUCE: Export symbols for aufs (in lum) (not needed) + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + + [Colin Ian King] + + * Add dm-loop + + [Tim Gardner] + + * Revert "SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to + syslog (merged upstream) + + -- Ben Collins Mon, 16 Jun 2008 10:56:01 -0400 + +linux (2.6.26-1.5) intrepid; urgency=low + + * d-i: Make virtio-ring optional (it's built-in on i386) + * Rebased on 2.6.26-rc6 + + [Ubuntu-2.6.26-1.4 Changes below] + + * build: linux-doc rules got broken when disabling html side. Fixed now. + + [Ubuntu-2.6.26-1.3 Changes below] + + * build: Remove install-source, obsolete and caused build failure + + [Ubuntu-2.6.26-1.2 Changes below] + + * Remove efi-modules from d-i module list (efivars is built-in). Caused a + build failure. + * Patch to arch/x86/xen/time.c to remove __divdi3 usage (build failure on + i386). + + [Ubuntu-2.6.26-1.1 Changes below] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: Add AGP support for Radeon Mobility 9000 chipset + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Remove remnants of unused binary-custom infrastructure + * mmc_block: Fix bad allocation on 64-bit (zero len array) + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add squashfs driver + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: Enable speedstep for sonoma processors. + * SAUCE: airprime.c supports more devices + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. + * SAUCE: Lower warning level of pci resource allocation messages. + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * SAUCE: hdaps module does not load on Thinkpad T61P + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Export symbols for aufs (in lum). + * SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to syslog + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: Modualrize vesafb + * SAUCE: DVB-USB UMT-010 driver oops on install + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + + -- Ben Collins Wed, 11 Jun 2008 05:28:35 -0400 --- linux-3.5.0.orig/debian.master/control.stub.in +++ linux-3.5.0/debian.master/control.stub.in @@ -0,0 +1,93 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: SRCPKGNAME-source-PKGVER +Architecture: all +Section: devel +Priority: optional +Provides: SRCPKGNAME-source, SRCPKGNAME-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version PKGVER with Ubuntu patches + This package provides the source code for the Linux kernel version + PKGVER. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: SRCPKGNAME-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: SRCPKGNAME-doc-3 +Replaces: SRCPKGNAME-doc-3 +Description: Linux kernel specific documentation for version PKGVER + This package provides the various documents in the PKGVER kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/SRCPKGNAME-doc/00-INDEX for a list of what is + contained in each file. + +Package: SRCPKGNAME-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER. + +Package: linux-headers-PKGVER-ABINUM +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: SRCPKGNAME-headers, SRCPKGNAME-headers-3 +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), SRCPKGNAME-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), SRCPKGNAME-kernel-headers, libdrm-dev +Provides: SRCPKGNAME-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use SRCPKGNAME-headers-* packages for that. + +Package: linux-tools-PKGVER-ABINUM +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + --- linux-3.5.0.orig/debian.master/NOTES +++ linux-3.5.0/debian.master/NOTES @@ -0,0 +1,4 @@ +eSCO patch removed. Replaced upstream with a disable_esco module parm. +airprime: Module gone, use option driver instead +AppArmor: Patch is all there and ported. Ooops when enabled, so default + off (still can be enabled apparmor=1) --- linux-3.5.0.orig/debian.master/copyright +++ linux-3.5.0/debian.master/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-3.5.0.orig/debian.master/control +++ linux-3.5.0/debian.master/control @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 3.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.5.0 + This package provides the various documents in the 3.5.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-37 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-3.5.0-37 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-37 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-37 on + 64 bit x86. + + +Package: linux-image-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. --- linux-3.5.0.orig/debian.master/control.stub +++ linux-3.5.0/debian.master/control.stub @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 3.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.5.0 + This package provides the various documents in the 3.5.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-37 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-3.5.0-37 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-37 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-37 on + 64 bit x86. + + +Package: linux-image-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. --- linux-3.5.0.orig/debian.master/changelog +++ linux-3.5.0/debian.master/changelog @@ -0,0 +1,14160 @@ +linux (3.5.0-37.58) quantal; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1199149 + + [ Brad Figg ] + + * [Config] CONFIG_ATH9K_LEGACY_RATE_CONTROL=y + + [ Tim Gardner ] + + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + + [ Upstream Kernel Changes ] + + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * Revert "ath9k_hw: Update rx gain initval to improve rx sensitivity" + - LP: #1197458 + * ata_piix: add PCI IDs for Intel BayTail + - LP: #1197458 + * libata: make ata_exec_internal_sg honor DMADIR + - LP: #1197458 + * cfg80211: check wdev->netdev in connection work + - LP: #1197458 + * xhci-mem: init list heads at the beginning of init + - LP: #1197458 + * xhci: fix list access before init + - LP: #1197458 + * xhci - correct comp_mode_recovery_timer on return from hibernate + - LP: #1197458 + * mac80211: close AP_VLAN interfaces before unregistering all + - LP: #1197458 + * usb: dwc3: gadget: free trb pool only from epnum 2 + - LP: #1197458 + * USB: revert periodic scheduling bugfix + - LP: #1197458 + * USB: serial: fix Treo/Kyocera interrrupt-in urb context + - LP: #1197458 + * USB: visor: fix initialisation of Treo/Kyocera devices + - LP: #1197458 + * USB: mos7720: fix DMA to stack + - LP: #1197458 + * USB: mos7840: fix DMA to stack + - LP: #1197458 + * USB: ark3116: fix control-message timeout + - LP: #1197458 + * USB: iuu_phoenix: fix bulk-message timeout + - LP: #1197458 + * USB: mos7720: fix message timeouts + - LP: #1197458 + * regulator: palmas: Fix "enable_reg" to point to the correct reg for + SMPS10 + - LP: #1197458 + * m68k/mac: Fix unexpected interrupt with CONFIG_EARLY_PRINTK + - LP: #1197458 + * USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device + - LP: #1197458 + * USB: serial: Add Option GTM681W to qcserial device table. + - LP: #1197458 + * USB: keyspan: fix bogus array index + - LP: #1197458 + * USB: mos7720: fix hardware flow control + - LP: #1197458 + * USB: whiteheat: fix broken port configuration + - LP: #1197458 + * USB: option: blacklist network interface on Huawei E1820 + - LP: #1197458 + * iommu/amd: Re-enable IOMMU event log interrupt after handling. + - LP: #1197458 + * iommu/amd: Workaround for ERBT1312 + - LP: #1197458 + * xen/events: Handle VIRQ_TIMER before any other hardirq in event loop. + - LP: #1197458 + * thinkpad-acpi: recognize latest V-Series using DMI_BIOS_VENDOR + - LP: #1197458 + * klist: del waiter from klist_remove_waiters before wakeup waitting + process + - LP: #1197458 + * ACPI video: ignore BIOS backlight value for HP dm4 + - LP: #1197458 + * ACPI video: ignore BIOS initial backlight value for HP 1000 + - LP: #1197458 + * dmaengine: ste_dma40: fix pm runtime ref counting + - LP: #1197458 + * ACPI / video: ignore BIOS initial backlight value for HP m4 + - LP: #1197458 + * ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 + - LP: #1197458 + * ALSA: usb-audio: fix Roland/Cakewalk UM-3G support + - LP: #1197458 + * drm: fix a use-after-free when GPU acceleration disabled + - LP: #1197458 + * drm/mgag200: Add missing write to index before accessing data register + - LP: #1197458 + * drm/i915: no lvds quirk for hp t5740 + - LP: #1197458 + * radeon: Fix system hang issue when using KMS with older cards + - LP: #1197458 + * drm/radeon: don't allow audio on DCE6 + - LP: #1197458 + * ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio + iface + - LP: #1197458 + * drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC. + - LP: #1197458 + * ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam + c270 + - LP: #1197458 + * ARM: 7742/1: topology: export cpu_topology + - LP: #1197458 + * ARM: 7743/1: compressed/head.S: work around new binutils warning + - LP: #1197458 + * hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and + MAX1617 + - LP: #1197458 + * hpfs: drop vmtruncate + - LP: #1197458 + * hpfs: fix warnings when the filesystem fills up + - LP: #1197458 + * powerpc/eeh: Don't check RTAS token to get PE addr + - LP: #1197458 + * drm/gma500: Increase max resolution for mode setting + - LP: #1197458 + * USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL + pointer + - LP: #1197458 + * tg3: Add New 5719 Read DMA workaround + - LP: #1197458 + * tg3: Add read dma workaround for 5720 + - LP: #1197458 + * libceph: clear messenger auth_retry flag when we authenticate + - LP: #1197458 + * libceph: fix authorizer invalidation + - LP: #1197458 + * libceph: add update_authorizer auth method + - LP: #1197458 + * libceph: wrap auth ops in wrapper functions + - LP: #1197458 + * libceph: wrap auth methods in a mutex + - LP: #1197458 + * libceph: register request before unregister linger + - LP: #1197458 + * libceph: always reset osds when kicking + - LP: #1197458 + * libceph: must hold mutex for reset_changed_osds() + - LP: #1197458 + * ceph: add cpu_to_le32() calls when encoding a reconnect capability + - LP: #1197458 + * ceph: ceph_pagelist_append might sleep while atomic + - LP: #1197458 + * drm/gma500/psb: Unpin framebuffer on crtc disable + - LP: #1197458 + * drm/gma500/cdv: Unpin framebuffer on crtc disable + - LP: #1197458 + * drm/i915: prefer VBT modes for SVDO-LVDS over EDID + - LP: #1197458 + * Bluetooth: Fix mgmt handling of power on failures + - LP: #1197458 + * ath9k: Disable PowerSave by default + - LP: #1197458 + * ath9k: Use minstrel rate control by default + - LP: #1197458 + * b43: stop format string leaking into error msgs + - LP: #1197458 + - CVE-2013-2852 + * CPU hotplug: provide a generic helper to disable/enable CPU hotplug + - LP: #1197458 + * reboot: rigrate shutdown/reboot to boot cpu + - LP: #1197458 + * kmsg: honor dmesg_restrict sysctl on /dev/kmsg + - LP: #1197458 + * cciss: fix broken mutex usage in ioctl + - LP: #1197458 + * drivers/rtc/rtc-twl.c: fix missing device_init_wakeup() when booted + with device tree + - LP: #1197458 + * swap: avoid read_swap_cache_async() race to deadlock while waiting on + discard I/O completion + - LP: #1197458 + * mm: migration: add migrate_entry_wait_huge() + - LP: #1197458 + * ceph: fix statvfs fr_size + - LP: #1197458 + * x86: Fix typo in kexec register clearing + - LP: #1197458 + * md/raid1: consider WRITE as successful only if at least one non-Faulty + and non-rebuilding drive completed it. + - LP: #1197458 + * md/raid1,raid10: use freeze_array in place of raise_barrier in various + places. + - LP: #1197458 + * USB: spcp8x5: fix device initialisation at open + - LP: #1197458 + * USB: pl2303: fix device initialisation at open + - LP: #1197458 + * tg3: Wait for boot code to finish after power on + - LP: #1197458 + * powerpc: Fix stack overflow crash in resume_kernel when ftracing + - LP: #1197458 + * powerpc: Fix emulation of illegal instructions on PowerNV platform + - LP: #1197458 + * powerpc: Fix missing/delayed calls to irq_work + - LP: #1197458 + * audit: wait_for_auditd() should use TASK_UNINTERRUPTIBLE + - LP: #1197458 + * xen-netfront: reduce gso_max_size to account for max TCP header + - LP: #1197458 + * ext4: lock i_mutex when truncating orphan inodes + - LP: #1197458 + * snd_pcm_link(): fix a leak... + - LP: #1197458 + * Linux 3.5.7.15 + - LP: #1197458 + * clk: remove notifier from list before freeing it + - LP: #1199117 + * ALSA: usb-audio: work around Android accessory firmware bug + - LP: #1199117 + * ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam + c310 + - LP: #1199117 + * tcp: fix tcp_md5_hash_skb_data() + - LP: #1199117 + * gianfar: add missing iounmap() on error in gianfar_ptp_probe() + - LP: #1199117 + * ipv6: fix possible crashes in ip6_cork_release() + - LP: #1199117 + * netlabel: improve domain mapping validation + - LP: #1199117 + * r8169: fix 8168evl frame padding. + - LP: #1199117 + * r8169: fix offloaded tx checksum for small packets. + - LP: #1199117 + * 8139cp: reset BQL when ring tx ring cleared + - LP: #1199117 + * tcp: bug fix in proportional rate reduction. + - LP: #1199117 + * net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg + - LP: #1199117 + * net: Unbreak compat_sys_{send,recv}msg + - LP: #1199117 + * tcp: xps: fix reordering issues + - LP: #1199117 + * ip_tunnel: fix kernel panic with icmp_dest_unreach + - LP: #1199117 + * net: force a reload of first item in hlist_nulls_for_each_entry_rcu + - LP: #1199117 + * ipv6: assign rt6_info to inet6_ifaddr in init_loopback + - LP: #1199117 + * net: sctp: fix NULL pointer dereference in socket destruction + - LP: #1199117 + * team: check return value of team_get_port_by_index_rcu() for NULL + - LP: #1199117 + * packet: packet_getname_spkt: make sure string is always 0-terminated + - LP: #1199117 + * l2tp: Fix PPP header erasure and memory leak + - LP: #1199117 + * l2tp: Fix sendmsg() return value + - LP: #1199117 + * bonding: rlb mode of bond should not alter ARP originating via bridge + - LP: #1199117 + * tilepro: work around module link error with gcc 4.7 + - LP: #1199117 + * Input: cyttsp - fix memcpy size param + - LP: #1199117 + * target/iscsi: don't corrupt bh_count in iscsit_stop_time2retain_timer() + - LP: #1199117 + * tcm_qla2xxx: Fix residual for underrun commands that fail + - LP: #1199117 + * KVM: x86: remove vcpu's CPL check in host-invoked XCR set + - LP: #1199117 + * x86: fix build error and kconfig for ia32_emulation and binfmt + - LP: #1199117 + * USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable + - LP: #1199117 + * drm/radeon: update lockup tracking when scheduling in empty ring + - LP: #1199117 + * team: move add to port list before port enablement + - LP: #1199117 + * net: sh_eth: fix incorrect RX length error if R8A7740 + - LP: #1199117 + * sctp: fully initialize sctp_outq in sctp_outq_init + - LP: #1199117 + * ARM: 7755/1: handle user space mapped pages in flush_kernel_dcache_page + - LP: #1199117 + * iwlwifi: dvm: fix chain noise calibration + - LP: #1199117 + * Bluetooth: Fix crash in l2cap_build_cmd() with small MTU + - LP: #1199117 + * hw_breakpoint: Use cpu_possible_mask in {reserve,release}_bp_slot() + - LP: #1199117 + * ARM: 7772/1: Fix missing flush_kernel_dcache_page() for noMMU + - LP: #1199117 + * net/tg3: Avoid delay during MMIO access + - LP: #1199117 + * dlci: acquire rtnl_lock before calling __dev_get_by_name() + - LP: #1199117 + * dlci: validate the net device in dlci_del() + - LP: #1199117 + * Bluetooth: btmrvl: fix thread stopping race + - LP: #1199117 + * pch_uart: fix a deadlock when pch_uart as console + - LP: #1199117 + * perf: Disable monitoring on setuid processes for regular users + - LP: #1199117 + * UBIFS: prepare to fix a horrid bug + - LP: #1199117 + * UBIFS: fix a horrid bug + - LP: #1199117 + * perf: Fix perf mmap bugs + - LP: #1199117 + * perf: Fix mmap() accounting hole + - LP: #1199117 + * Linux 3.5.7.16 + - LP: #1199117 + + -- Brad Figg Mon, 08 Jul 2013 14:22:30 -0700 + +linux (3.5.0-36.57) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1192590 + + [ Timo Aaltonen ] + + * SAUCE: i915_hsw: revert to old drm_mm function names + - LP: #1188305 + * SAUCE: i915_hsw: drm/i915: Adding more reserved PCI IDs for Haswell. + - LP: #1175533 + + -- Steve Conklin Wed, 19 Jun 2013 09:40:57 -0500 + +linux (3.5.0-35.56) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1192206 + + [ Dave Chiluk ] + + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + + [ Stefan Bader ] + + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + + [ Timo Aaltonen ] + + * SAUCE: Update i915_hsw to 3.8.13 + - LP: #1188305 + * SAUCE: i915_hsw: Add new definitions + - LP: #1188305 + * SAUCE: i915_hsw: Revert "drm/i915: use drm_send_vblank_event() helper" + - LP: #1188305 + * SAUCE: i915_hsw: Revert "drm/i915: set the VIC of the mode on the AVI + InfoFrame" + - LP: #1188305 + + [ Upstream Kernel Changes ] + + * hwmon: fix error return code in abituguru_probe() + - LP: #1191905 + * i2c: designware: fix RX FIFO overrun + - LP: #1191905 + * i2c: designware: always clear interrupts before enabling them + - LP: #1191905 + * btrfs: don't stop searching after encountering the wrong item + - LP: #1191905 + * drm/radeon: Fix VRAM size calculation for VRAM >= 4GB + - LP: #1191905 + * mantis: fix silly crash case + - LP: #1191905 + * avr32: fix relocation check for signed 18-bit offset + - LP: #1191905 + * virtio_console: fix uapi header + - LP: #1191905 + * Input: egalax_ts - ABS_MT_POSITION_Y not reported well + - LP: #1191905 + * staging: vt6656: use free_netdev instead of kfree + - LP: #1191905 + * USB: xHCI: override bogus bulk wMaxPacketSize values + - LP: #1191905 + * USB: UHCI: fix for suspend of virtual HP controller + - LP: #1191905 + * USB: reset resume quirk needed by a hub + - LP: #1191905 + * usb: option: Add Telewell TW-LTE 4G + - LP: #1191905 + * USB: Blacklisted Cinterion's PLxx WWAN Interface + - LP: #1191905 + * USB: option: add device IDs for Dell 5804 (Novatel E371) WWAN card + - LP: #1191905 + * USB: ftdi_sio: Add support for Newport CONEX motor drivers + - LP: #1191905 + * USB: cxacru: potential underflow in cxacru_cm_get_array() + - LP: #1191905 + * TTY: Fix tty miss restart after we turn off flow-control + - LP: #1191905 + * cifs: only set ops for inodes in I_NEW state + - LP: #1191905 + * Kirkwood: Enable PCIe port 1 on QNAP TS-11x/TS-21x + - LP: #1191905 + * mac80211: fix AP-mode frame matching + - LP: #1191905 + * ARM: plat-orion: Fix num_resources and id for ge10 and ge11 + - LP: #1191905 + * sunrpc: clarify comments on rpc_make_runnable + - LP: #1191905 + * SUNRPC: Prevent an rpc_task wakeup race + - LP: #1191905 + * perf: net_dropmonitor: Fix trace parameter order + - LP: #1191905 + * perf: net_dropmonitor: Fix symbol-relative addresses + - LP: #1191905 + * fat: fix possible overflow for fat_clusters + - LP: #1191905 + * wait: fix false timeouts when using wait_event_timeout() + - LP: #1191905 + * rapidio/tsi721: fix bug in MSI interrupt handling + - LP: #1191905 + * mm compaction: fix of improper cache flush in migration code + - LP: #1191905 + * mm/THP: use pmd_populate() to update the pmd with pgtable_t pointer + - LP: #1191905 + * drivers/leds/leds-ot200.c: fix error caused by shifted mask + - LP: #1191905 + * drivers/block/brd.c: fix brd_lookup_page() race + - LP: #1191905 + * nilfs2: fix issue of nilfs_set_page_dirty() for page at EOF boundary + - LP: #1191905 + * random: fix accounting race condition with lockless irq entropy_count + update + - LP: #1191905 + * ocfs2: goto out_unlock if ocfs2_get_clusters_nocache() failed in + ocfs2_fiemap() + - LP: #1191905 + * mm/pagewalk.c: walk_page_range should avoid VM_PFNMAP areas + - LP: #1191905 + * staging:iio:light:tsl2x7x: fix the error handling in tsl2x7x_probe() + - LP: #1191905 + * mwifiex: fix memory leak issue when driver unload + - LP: #1191905 + * dm bufio: avoid a possible __vmalloc deadlock + - LP: #1191905 + * tg3: Skip powering down function 0 on certain serdes devices + - LP: #1191905 + * acpi/video_detect: blacklist samsung x360 + - LP: #1191905 + * ACPI / video: Add "Asus UL30VT" to ACPI video detect blacklist + - LP: #1191905 + * ACPI / video: Add "Asus UL30A" to ACPI video detect blacklist + - LP: #1191905 + * mm: mmu_notifier: re-fix freed page still mapped in secondary MMU + - LP: #1191905 + * sched/debug: Limit sd->*_idx range on sysctl + - LP: #1191905 + * sched/debug: Fix sd->*_idx limit range avoiding overflow + - LP: #1191905 + * ipvs: ip_vs_sip_fill_param() BUG: bad check of return value + - LP: #1191905 + * jfs: fix a couple races + - LP: #1191905 + * cifs: fix potential buffer overrun when composing a new options string + - LP: #1191905 + * ASoC: cs42l52: fix default value for MASTERA_VOL. + - LP: #1191905 + * drm/radeon: fix typo in cu_per_sh on verde + - LP: #1191905 + * drm/radeon: fix card_posted check for newer asics + - LP: #1191905 + * NFSv4: Fix a thinko in nfs4_try_open_cached + - LP: #1191905 + * xfs: kill suid/sgid through the truncate path. + - LP: #1191905 + * reiserfs: fix deadlock with nfs racing on create/lookup + - LP: #1191905 + * reiserfs: fix problems with chowning setuid file w/ xattrs + - LP: #1191905 + * reiserfs: fix spurious multiple-fill in reiserfs_readdir_dentry + - LP: #1191905 + * xen-netback: remove skb in xen_netbk_alloc_page + - LP: #1191905 + * xen-netback: fix sparse warning + - LP: #1191905 + * xen-netback: coalesce slots in TX path and fix regressions + - LP: #1191905 + * xen-netback: don't disconnect frontend when seeing oversize packet + - LP: #1191905 + * xen-netback: remove redundent parameter in netbk_count_requests + - LP: #1191905 + * xen-netback: avoid allocating variable size array on stack + - LP: #1191905 + * xen-netback: better names for thresholds + - LP: #1191905 + * xen-netfront: remove unused variable `extra' + - LP: #1191905 + * xen-netfront: frags -> slots in xennet_get_responses + - LP: #1191905 + * xen-netfront: frags -> slots in log message + - LP: #1191905 + * Linux 3.5.7.14 + - LP: #1191905 + + -- Steve Conklin Fri, 18 Jun 2013 10:34:21 -0500 + +linux (3.5.0-34.55) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1187926 + + [ Upstream Kernel Changes ] + + * iwlwifi: dvm: fix zero LQ CMD sending avoidance + - LP: #1186932 + + -- Steve Conklin Wed, 05 Jun 2013 15:27:36 -0500 + +linux (3.5.0-33.54) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1186271 + + [ Upstream Kernel Changes ] + + * crypto: algif - suppress sending source address information in recvmsg + - LP: #1172363 + - CVE-2013-3076 + * ax25: fix info leak via msg_name in ax25_recvmsg() + - LP: #1172366 + - CVE-2013-3223 + * Bluetooth: fix possible info leak in bt_sock_recvmsg() + - LP: #1172368 + - CVE-2013-3224 + * tipc: fix info leaks via msg_name in recv_msg/recv_stream + - LP: #1172403 + - CVE-2013-3235 + * rose: fix info leak via msg_name in rose_recvmsg() + - LP: #1172394 + - CVE-2013-3234 + * Bluetooth: RFCOMM - Fix missing msg_namelen update in + rfcomm_sock_recvmsg() + - LP: #1172369 + - CVE-2013-3225 + * atm: update msg_namelen in vcc_recvmsg() + - LP: #1172365 + - CVE-2013-3222 + * iwlwifi: add new pci id for 6x35 series + - LP: #1180256 + * ath9k_htc: accept 1.x firmware newer than 1.3 + - LP: #1186062 + * ssb: implement spurious tone avoidance + - LP: #1186062 + * can: mcp251x: add missing IRQF_ONESHOT to request_threaded_irq + - LP: #1186062 + * can: sja1000: fix handling on dt properties on little endian systems + - LP: #1186062 + * ath9k_hw: change AR9580 initvals to fix a stability issue + - LP: #1186062 + * ARM: 7696/1: Fix kexec by setting outer_cache.inv_all for Feroceon + - LP: #1186062 + * ARM: 7698/1: perf: fix group validation when using enable_on_exec + - LP: #1186062 + * hugetlbfs: add swap entry check in follow_hugetlb_page() + - LP: #1186062 + * kernel/signal.c: stop info leak via the tkill and the tgkill syscalls + - LP: #1186062 + * hfsplus: fix potential overflow in hfsplus_file_truncate() + - LP: #1186062 + * sched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s + - LP: #1186062 + * perf/x86: Fix offcore_rsp valid mask for SNB/IVB + - LP: #1186062 + * vm: add vm_iomap_memory() helper function + - LP: #1186062 + * vm: convert HPET mmap to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert fb_mmap to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert snd_pcm_lib_mmap_iomem() to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert mtdchar mmap to vm_iomap_memory() helper + - LP: #1186062 + * regulator: fixed regulator_bulk_enable unwinding code + - LP: #1186062 + * perf: Fix error return code + - LP: #1186062 + * xen/smp: Fix leakage of timer interrupt line for every CPU + online/offline. + - LP: #1186062 + * xen/smp/spinlock: Fix leakage of the spinlock interrupt line for every + CPU online/offline + - LP: #1186062 + * xen/time: Fix kasprintf splat when allocating timer%d IRQ line. + - LP: #1186062 + * s390/memory hotplug: prevent offline of active memory increments + - LP: #1186062 + * aio: fix possible invalid memory access when DEBUG is enabled + - LP: #1186062 + * TTY: do not update atime/mtime on read/write + - LP: #1186062 + * TTY: fix atime/mtime regression + - LP: #1186062 + * caif: Fix missing msg_namelen update in caif_seqpkt_recvmsg() + - LP: #1186062 + * irda: Fix missing msg_namelen update in irda_recvmsg_dgram() + - LP: #1186062 + * iucv: Fix missing msg_namelen update in iucv_sock_recvmsg() + - LP: #1186062 + * llc: Fix missing msg_namelen update in llc_ui_recvmsg() + - LP: #1186062 + * netrom: fix info leak via msg_name in nr_recvmsg() + - LP: #1186062 + * netrom: fix invalid use of sizeof in nr_recvmsg() + - LP: #1186062 + * NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg() + - LP: #1186062 + * cbq: incorrect processing of high limits + - LP: #1186062 + * net IPv6 : Fix broken IPv6 routing table after loopback down-up + - LP: #1186062 + * net: count hw_addr syncs so that unsync works properly. + - LP: #1186062 + * atl1e: limit gso segment size to prevent generation of wrong ip length + fields + - LP: #1186062 + * bonding: fix bonding_masters race condition in bond unloading + - LP: #1186062 + * bonding: IFF_BONDING is not stripped on enslave failure + - LP: #1186062 + * af_unix: If we don't care about credentials coallesce all messages + - LP: #1186062 + * netfilter: don't reset nf_trace in nf_reset() + - LP: #1186062 + * rtnetlink: Call nlmsg_parse() with correct header length + - LP: #1186062 + * tcp: incoming connections might use wrong route under synflood + - LP: #1186062 + * tcp: Reallocate headroom if it would overflow csum_start + - LP: #1186062 + * esp4: fix error return code in esp_output() + - LP: #1186062 + * net: sctp: sctp_auth_key_put: use kzfree instead of kfree + - LP: #1186062 + * tcp: call tcp_replace_ts_recent() from tcp_ack() + - LP: #1186062 + * net: rate-limit warn-bad-offload splats. + - LP: #1186062 + * net: fix incorrect credentials passing + - LP: #1186062 + * net: drop dst before queueing fragments + - LP: #1186062 + * sparc64: Fix race in TLB batch processing. + - LP: #1186062 + * l2tp: fix info leak in l2tp_ip6_recvmsg() + - LP: #1186062 + * tracing: Use stack of calling function for stack tracer + - LP: #1186062 + * tracing: Fix stack tracer with fentry use + - LP: #1186062 + * tracing: Remove most or all of stack tracer stack size from + stack_max_size + - LP: #1186062 + * tracing: Fix ftrace_dump() + - LP: #1186062 + * Wrong asm register contraints in the futex implementation + - LP: #1186062 + * Wrong asm register contraints in the kvm implementation + - LP: #1186062 + * cgroup: fix an off-by-one bug which may trigger BUG_ON() + - LP: #1186062 + * PCI / ACPI: Don't query OSC support with all possible controls + - LP: #1186062 + * Fix initialization of CMCI/CMCP interrupts + - LP: #1186062 + * sysfs: fix use after free in case of concurrent read/write and readdir + - LP: #1186062 + * usb/misc/appledisplay: Add 24" LED Cinema display + - LP: #1186062 + * ext4/jbd2: don't wait (forever) for stale tid caused by wraparound + - LP: #1186062 + * jbd2: fix race between jbd2_journal_remove_checkpoint and + ->j_commit_callback + - LP: #1186062 + * ext4: fix journal callback list traversal + - LP: #1186062 + * usb: chipidea: udc: fix memory access of shared memory on armv5 + machines + - LP: #1186062 + * NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in + nfs4_open_delegation_recall + - LP: #1186062 + * usb: chipidea: udc: fix memory leak in _ep_nuke + - LP: #1186062 + * USB: add ftdi_sio USB ID for GDM Boost V1.x + - LP: #1186062 + * hrtimer: Add expiry time overflow check in hrtimer_interrupt + - LP: #1186062 + * hrtimer: Fix ktime_add_ns() overflow on 32bit architectures + - LP: #1186062 + * ARM: omap3: cpuidle: enable time keeping + - LP: #1186062 + * tracing: Fix off-by-one on allocating stat->pages + - LP: #1186062 + * USB: option: add a D-Link DWM-156 variant + - LP: #1186062 + * ext4: fix big-endian bug in metadata checksum calculations + - LP: #1186062 + * tracing: Reset ftrace_graph_filter_enabled if count is zero + - LP: #1186062 + * tracing: Check return value of tracing_init_dentry() + - LP: #1186062 + * serial_core.c: add put_device() after device_find_child() + - LP: #1186062 + * PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition() + - LP: #1186062 + * wireless: regulatory: fix channel disabling race condition + - LP: #1186062 + * usbfs: Always allow ctrl requests with USB_RECIP_ENDPOINT on the ctrl + ep + - LP: #1186062 + * iwlwifi: fix freeing uninitialized pointer + - LP: #1186062 + * iwlwifi: dvm: don't send zeroed LQ cmd + - LP: #1186062 + * LOCKD: Ensure that nlmclnt_block resets block->b_status after a server + reboot + - LP: #1186062 + * ext4: fix online resizing for ext3-compat file systems + - LP: #1186062 + * ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG + - LP: #1186062 + * rt2x00: Fix transmit power troubles on some Ralink RT30xx cards + - LP: #1186062 + * USB: ftdi_sio: correct ST Micro Connect Lite PIDs + - LP: #1186062 + * USB: serial: option: Added support Olivetti Olicard 145 + - LP: #1186062 + * usb-storage: CY7C68300A chips do not support Cypress ATACB + - LP: #1186062 + * USB: ftdi_sio: enable two UART ports on ST Microconnect Lite + - LP: #1186062 + * gianfar: do not advertise any alarm capability. + - LP: #1186062 + * clockevents: Set dummy handler on CPU_DEAD shutdown + - LP: #1186062 + * ixgbe: fix EICR write in ixgbe_msix_other + - LP: #1186062 + * mwifiex: Use pci_release_region() instead of a pci_release_regions() + - LP: #1186062 + * mwifiex: Call pci_release_region after calling pci_disable_device + - LP: #1186062 + * fs/fscache/stats.c: fix memory leak + - LP: #1186062 + * mm: allow arch code to control the user page table ceiling + - LP: #1186062 + * arm: set the page table freeing ceiling to TASK_SIZE + - LP: #1186062 + * drivers/rtc/rtc-cmos.c: don't disable hpet emulation on suspend + - LP: #1186062 + * drivers/rtc/rtc-at91rm9200.c: fix missing iounmap + - LP: #1186062 + * md: bad block list should default to disabled. + - LP: #1186062 + * inotify: invalid mask should return a error number but not set it + - LP: #1186062 + * fs/dcache.c: add cond_resched() to shrink_dcache_parent() + - LP: #1186062 + * exec: do not abuse ->cred_guard_mutex in threadgroup_lock() + - LP: #1186062 + * tty: fix up atime/mtime mess, take three + - LP: #1186062 + * ipc: sysv shared memory limited to 8TiB + - LP: #1186062 + * ARM: 7699/1: sched_clock: Add more notrace to prevent recursion + - LP: #1186062 + * Linux 3.5.7.12 + - LP: #1186062 + * mmc: at91/avr32/atmel-mci: fix DMA-channel leak on module unload + - LP: #1186062 + * ARM: at91: Fix typo in restart code panic message + - LP: #1186062 + * drm/radeon: don't use get_engine_clock() on APUs + - LP: #1186062 + * nfsd: don't run get_file if nfs4_preprocess_stateid_op return error + - LP: #1186062 + * mmc: core: Fix bit width test failing on old eMMC cards + - LP: #1186062 + * drm/i915: Add no-lvds quirk for Fujitsu Esprimo Q900 + - LP: #1186062 + * mfd: adp5520: Restore mode bits on resume + - LP: #1186062 + * mmc: atmel-mci: pio hang on block errors + - LP: #1186062 + * nfsd4: don't close read-write opens too soon + - LP: #1186062 + * drm/radeon/dce6: add missing display reg for tiling setup + - LP: #1186062 + * ALSA: usb: Add quirk for 192KHz recording on E-Mu devices + - LP: #1186062 + * ALSA: usb-audio: disable autopm for MIDI devices + - LP: #1186062 + * drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS + - LP: #1186062 + * drm/radeon: cleanup properly if mmio mapping fails + - LP: #1186062 + * ASoC: max98088: Fix logging of hardware revision. + - LP: #1186062 + * drm/i915: Workaround incoherence between fences and LLC across multiple + CPUs + - LP: #1186062 + * drm/i915: Fall back to bit banging mode for DVO transmitter detection + - LP: #1186062 + * drm/radeon: fix hdmi mode enable on RS600/RS690/RS740 + - LP: #1186062 + * i2c: xiic: must always write 16-bit words to TX_FIFO + - LP: #1186062 + * nfsd: Decode and send 64bit time values + - LP: #1186062 + * drm/radeon: fix typo in si_select_se_sh() + - LP: #1186062 + * fbcon: when font is freed, clear also vc_font.data + - LP: #1186062 + * powerpc/spufs: Initialise inode->i_ino in spufs_new_inode() + - LP: #1186062 + * ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT + - LP: #1186062 + * ALSA: usb-audio: Fix autopm error during probing + - LP: #1186062 + * drm/gma500: fix backlight hotkeys behaviour on netbooks + - LP: #1186062 + * powerpc: Add isync to copy_and_flush + - LP: #1186062 + * ARM: u300: fix ages old copy/paste bug + - LP: #1186062 + * x86: Eliminate irq_mis_count counted in arch_irq_stat + - LP: #1186062 + * drm/prime: keep a reference from the handle to exported dma-buf (v6) + - LP: #1186062 + * drm/mgag200: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/ast: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/cirrus: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/radeon: fix endian bugs in atom_allocate_fb_scratch() + - LP: #1186062 + * drm/radeon: fix possible segfault when parsing pm tables + - LP: #1186062 + * drm/radeon: add some new SI PCI ids + - LP: #1186062 + * drm/radeon: add new richland pci ids + - LP: #1186062 + * drm/radeon: fix handling of v6 power tables + - LP: #1186062 + * perf/x86/intel/lbr: Fix LBR filter + - LP: #1186062 + * perf/x86/intel/lbr: Demand proper privileges for + PERF_SAMPLE_BRANCH_KERNEL + - LP: #1186062 + * net/eth/ibmveth: Fixup retrieval of MAC address + - LP: #1186062 + * autofs - remove autofs dentry mount check + - LP: #1186062 + * drm/radeon: properly lock disp in mc_stop/resume for evergreen+ + - LP: #1186062 + * drm/radeon: disable the crtcs in mc_stop (evergreen+) (v2) + - LP: #1186062 + * powerpc: fix numa distance for form0 device tree + - LP: #1186062 + * kernel/audit_tree.c: tree will leak memory when failure occurs in + audit_trim_trees() + - LP: #1186062 + * xhci: Don't warn on empty ring for suspended devices. + - LP: #1186062 + * cpufreq: exynos: Get booting freq value in exynos_cpufreq_init + - LP: #1186062 + * ARM: 7692/1: iop3xx: move IOP3XX_PERIPHERAL_VIRT_BASE + - LP: #1186062 + * drm/i915: ensure single initialization and cleanup of backlight device + - LP: #1186062 + * drm/radeon: use frac fb div on RS780/RS880 + - LP: #1186062 + * r8169: fix vlan tag read ordering. + - LP: #1186062 + * r8169: honor jumbo settings when chipset is requested to start. + - LP: #1186062 + * drm/i915: Fix detection of base of stolen memory + - LP: #1186062 + * s390: move dummy io_remap_pfn_range() to asm/pgtable.h + - LP: #1186062 + * x86/mm: account for PGDIR_SIZE alignment + - LP: #1186062 + * drbd: fix for deadlock when using automatic split-brain-recovery + - LP: #1186062 + * cpufreq / Longhaul: Disable driver by default + - LP: #1186062 + * ext4: add check for inodes_count overflow in new resize ioctl + - LP: #1186062 + * powerpc: Emulate non privileged DSCR read and write + - LP: #1186062 + * audit: Syscall rules are not applied to existing processes on non-x86 + - LP: #1186062 + * ASoC: wm8994: missing break in wm8994_aif3_hw_params() + - LP: #1186062 + * tile: support new Tilera hypervisor + - LP: #1186062 + * sd: fix array cache flushing bug causing performance problems + - LP: #1186062 + * ath9k: fix key allocation error handling for powersave keys + - LP: #1186062 + * nfsd4: don't allow owner override on 4.1 CLAIM_FH opens + - LP: #1186062 + * xen/vcpu/pvhvm: Fix vcpu hotplugging hanging. + - LP: #1186062 + * ALSA: HDA: Fix Oops caused by dereference NULL pointer + - LP: #1186062 + * ACPICA: Fix possible buffer overflow during a field unit read operation + - LP: #1186062 + * qmi_wwan/cdc_ether: add device IDs for Dell 5804 (Novatel E371) WWAN + card + - LP: #1186062 + * B43: Handle DMA RX descriptor underrun + - LP: #1186062 + * mwifiex: clear is_suspended flag when interrupt is received early + - LP: #1186062 + * mwifiex: fix setting of multicast filter + - LP: #1186062 + * ARM: OMAP: RX-51: change probe order of touchscreen and panel SPI + devices + - LP: #1186062 + * hp_accel: Ignore the error from lis3lv02d_poweron() at resume + - LP: #1186062 + * KVM: VMX: fix halt emulation while emulating invalid guest sate + - LP: #1186062 + * dm snapshot: fix error return code in snapshot_ctr + - LP: #1186062 + * drm/mgag200: Fix writes into MGA1064_PIX_CLK_CTL register + - LP: #1186062 + * drm/mgag200: Fix framebuffer base address programming + - LP: #1186062 + * hugetlbfs: fix mmap failure in unaligned size request + - LP: #1186062 + * net: qmi_wwan: fixup missing ethernet header (firmware bug workaround) + - LP: #1186062 + * net: qmi_wwan: fixup destination address (firmware bug workaround) + - LP: #1186062 + * net: qmi_wwan: prevent duplicate mac address on link (firmware bug + workaround) + - LP: #1186062 + * tcp: force a dst refcount when prequeue packet + - LP: #1186062 + * sfc: Fix naming of MTD partitions for FPGA bitfiles + - LP: #1186062 + * 3c509.c: call SET_NETDEV_DEV for all device types (ISA/ISAPnP/EISA) + - LP: #1186062 + * net_sched: act_ipt forward compat with xtables + - LP: #1186062 + * net: use netdev_features_t in skb_needs_linearize() + - LP: #1186062 + * net: vlan,ethtool: netdev_features_t is more than 32 bit + - LP: #1186062 + * bridge: fix race with topology change timer + - LP: #1186062 + * packet: tpacket_v3: do not trigger bug() on wrong header status + - LP: #1186062 + * 3c59x: fix freeing nonexistent resource on driver unload + - LP: #1186062 + * 3c59x: fix PCI resource management + - LP: #1186062 + * if_cablemodem.h: Add parenthesis around ioctl macros + - LP: #1186062 + * macvlan: fix passthru mode race between dev removal and rx path + - LP: #1186062 + * ipv6: do not clear pinet6 field + - LP: #1186062 + * xfrm6: release dev before returning error + - LP: #1186062 + * ext4: limit group search loop for non-extent files + - LP: #1186062 + * iscsi-target: Fix processing of OOO commands + - LP: #1186062 + * tick: Cleanup NOHZ per cpu data on cpu down + - LP: #1186062 + * ACPI / EC: Restart transaction even when the IBF flag set + - LP: #1186062 + * drm/radeon: check incoming cliprects pointer + - LP: #1186062 + * ARM: 7720/1: ARM v6/v7 cmpxchg64 shouldn't clear upper 32 bits of the + old/new value + - LP: #1186062 + * powerpc: Bring all threads online prior to migration/hibernation + - LP: #1186062 + * timer: Don't reinitialize the cpu base lock during CPU_UP_PREPARE + - LP: #1186062 + * tracing: Fix leaks of filter preds + - LP: #1186062 + * usermodehelper: check subprocess_info->path != NULL + - LP: #1186062 + * drivers/char/ipmi: memcpy, need additional 2 bytes to avoid memory + overflow + - LP: #1186062 + * ipmi: ipmi_devintf: compat_ioctl method fails to take ipmi_mutex + - LP: #1186062 + * dm thin: do not set discard_zeroes_data + - LP: #1186062 + * drivers/rtc/rtc-pcf2123.c: fix error return code in pcf2123_probe() + - LP: #1186062 + * pch_dma: Use GFP_ATOMIC because called from interrupt context + - LP: #1186062 + * ARM: EXYNOS5: Fix kernel dump in AFTR idle mode + - LP: #1186062 + * watchdog: Fix race condition in registration code + - LP: #1186062 + * Linux 3.5.7.13 + - LP: #1186062 + + -- Steve Conklin Fri, 31 May 2013 09:29:44 -0500 + +linux (3.5.0-32.53) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1185161 + + [ Upstream Kernel Changes ] + + * iscsi-target: fix heap buffer overflow on error + - CVE-2013-2850 + + -- Steve Conklin Tue, 28 May 2013 15:17:15 -0500 + +linux (3.5.0-31.52) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1180568 + * merged back in delta from 28.48 to 29.49 + + -- Steve Conklin Wed, 15 May 2013 16:25:01 -0500 + +linux (3.5.0-30.51) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1180038 + * Based on 3.5.0-28.48 release + - entire delta from 28.48 to 29.49 removed + - CVE release is based on updates+fix + + [ Upstream Kernel Changes ] + + * perf: Treat attr.config as u64 in perf_swevent_init() + - LP: #1179943 + - CVE-2013-2094 + + -- Steve Conklin Tue, 14 May 2013 13:01:04 -0500 + +linux (3.5.0-29.49) quantal; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1177007 + + [ AceLan Kao ] + + * SAUCE: (no-up) alx: disables MSI generation + - LP: #927782 + + [ Brad Figg ] + + * CONFIG: CONFIG_EFI_VARS_PSTORE (not set); CONFIG_PPC_EMULATE_SSTEP=y + + [ Gavin Guo ] + + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + + [ joseph.salisbury@canonical.com ] + + * SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci + - LP: #800660 + + [ Leann Ogasawara ] + + * SAUCE: cpuidle: Fix NULL pointer dereference when offlining CPU's + - LP: #1168452 + + [ Stefan Bader ] + + * [Config] Add libceph to base modules list + - LP: #1164739 + + [ Tim Gardner ] + + * SAUCE: (no-up) alx: Don't check netif_running() before powering up + - LP: #1172415 + * [packaging] Bump ABI for every new release + + [ Upstream Kernel Changes ] + + * Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" + - LP: #1174946 + * 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 + * tg3: fix length overflow in VPD firmware parsing + - LP: #1167065 + - CVE-2013-1929 + * Bluetooth: Add support for atheros 04ca:3004 device to ath3k + - LP: #1168852 + * ata_piix: Fix DVD not dectected at some Haswell platforms + - LP: #1170797 + * clockevents: Don't allow dummy broadcast timers + - LP: #1174946 + * Bluetooth: Add support for Dell[QCA 0cf3:0036] + - LP: #1174946 + * Bluetooth: Add support for Dell[QCA 0cf3:817a] + - LP: #1174946 + * ath9k_hw: revert chainmask to user configuration after calibration + - LP: #1174946 + * ath9k: limit tx path hang check to normal data queues + - LP: #1174946 + * rtlwifi: usb: add missing freeing of skbuff + - LP: #1174946 + * net/irda: add missing error path release_sock call + - LP: #1174946 + * pnfs-block: removing DM device maybe cause oops when call dev_remove + - LP: #1174946 + * NFSv4.1: Fix a race in pNFS layoutcommit + - LP: #1174946 + * IPoIB: Fix send lockup due to missed TX completion + - LP: #1174946 + * SUNRPC: Add barriers to ensure read ordering in + rpc_wake_up_task_queue_locked + - LP: #1174946 + * Nest rename_lock inside vfsmount_lock + - LP: #1174946 + * vt: synchronize_rcu() under spinlock is not nice... + - LP: #1174946 + * iommu/amd: Make sure dma_ops are set for hotplug devices + - LP: #1174946 + * i915: initialize CADL in opregion + - LP: #1174946 + * tracing: Protect tracer flags with trace_types_lock + - LP: #1174946 + * tracing: Prevent buffer overwrite disabled for latency tracers + - LP: #1174946 + * nohz: Make tick_nohz_irq_exit() irq safe + - LP: #1174946 + * udf: Fix bitmap overflow on large filesystems with small block size + - LP: #1174946 + * xen/blkback: correctly respond to unknown, non-native requests + - LP: #1174946 + * tty: atmel_serial_probe(): index of atmel_ports[] fix + - LP: #1174946 + * HID: usbhid: quirk for Realtek Multi-card reader + - LP: #1174946 + * HID: usbhid: quirk for MSI GX680R led panel + - LP: #1174946 + * xen-blkback: fix dispatch_rw_block_io() error path + - LP: #1174946 + * sysfs: handle failure path correctly for readdir() + - LP: #1174946 + * usb: xhci: Fix TRB transfer length macro used for Event TRB. + - LP: #1174946 + * staging: comedi: s626: fix continuous acquisition + - LP: #1174946 + * USB: serial: fix hang when opening port + - LP: #1174946 + * Btrfs: fix race between mmap writes and compression + - LP: #1174946 + * Btrfs: fix space leak when we fail to reserve metadata space + - LP: #1174946 + * Btrfs: limit the global reserve to 512mb + - LP: #1174946 + * usb: ftdi_sio: Add support for Mitsubishi FX-USB-AW/-BD + - LP: #1174946 + * Btrfs: don't drop path when printing out tree errors in scrub + - LP: #1174946 + * USB: serial: add modem-status-change wait queue + - LP: #1174946 + * USB: ark3116: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ch341: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: cypress_m8: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: f81232: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ftdi_sio: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: io_edgeport: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: io_ti: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: mct_u232: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: mos7840: fix broken TIOCMIWAIT + - LP: #1174946 + * USB: mos7840: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: oti6858: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: pl2303: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: quatech2: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: spcp8x5: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ssu100: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ti_usb_3410_5052: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * Btrfs: use set_nlink if our i_nlink is 0 + - LP: #1174946 + * Bluetooth: Fix not closing SCO sockets in the BT_CONNECT2 state + - LP: #1174946 + * HID: usbhid: fix build problem + - LP: #1174946 + * sysfs: fix race between readdir and lseek + - LP: #1174946 + * net: remove a WARN_ON() in net_enable_timestamp() + - LP: #1174946 + * sky2: Receive Overflows not counted + - LP: #1174946 + * sky2: Threshold for Pause Packet is set wrong + - LP: #1174946 + * tcp: preserve ACK clocking in TSO + - LP: #1174946 + * tcp: undo spurious timeout after SACK reneging + - LP: #1174946 + * 8021q: fix a potential use-after-free + - LP: #1174946 + * thermal: shorten too long mcast group name + - LP: #1174946 + * genetlink: trigger BUG_ON if a group name is too long + - LP: #1174946 + * unix: fix a race condition in unix_release() + - LP: #1174946 + * bonding: remove already created master sysfs link on failure + - LP: #1174946 + * bonding: fix miimon and arp_interval delayed work race conditions + - LP: #1174946 + * bonding: fix disabling of arp_interval and miimon + - LP: #1174946 + * drivers: net: ethernet: davinci_emac: use netif_wake_queue() while + restarting tx queue + - LP: #1174946 + * drivers: net: ethernet: cpsw: use netif_wake_queue() while restarting + tx queue + - LP: #1174946 + * net: fix *_DIAG_MAX constants + - LP: #1174946 + * aoe: reserve enough headroom on skbs + - LP: #1174946 + * atl1e: drop pci-msi support because of packet corruption + - LP: #1174946 + * DM9000B: driver initialization upgrade + - LP: #1174946 + * ipv6: don't accept multicast traffic with scope 0 + - LP: #1174946 + * ipv6: fix bad free of addrconf_init_net + - LP: #1174946 + * ipv6: don't accept node local multicast traffic from the wire + - LP: #1174946 + * ks8851: Fix interpretation of rxlen field. + - LP: #1174946 + * net: add a synchronize_net() in netdev_rx_handler_unregister() + - LP: #1174946 + * pch_gbe: fix ip_summed checksum reporting on rx + - LP: #1174946 + * smsc75xx: fix jumbo frame support + - LP: #1174946 + * bonding: get netdev_rx_handler_unregister out of locks + - LP: #1174946 + * mac80211: always synchronize_net() during station removal + - LP: #1174946 + * regmap: cache Fix regcache-rbtree sync + - LP: #1174946 + * iwlwifi: dvm: don't send HCMD in restart flow + - LP: #1174946 + * nfsd4: reject "negative" acl lengths + - LP: #1174946 + * can: sja1000: fix define conflict on SH + - LP: #1174946 + * b43: N-PHY: increase initial value of "mind" in RSSI calibration + - LP: #1174946 + * b43: A fix for DMA transmission sequence errors + - LP: #1174946 + * b43: N-PHY: use more bits for offset in RSSI calibration + - LP: #1174946 + * tile: expect new initramfs name from hypervisor file system + - LP: #1174946 + * virtio: console: rename cvq_lock to c_ivq_lock + - LP: #1174946 + * virtio: console: add locking around c_ovq operations + - LP: #1174946 + * ARM: cns3xxx: fix mapping of private memory region + - LP: #1174946 + * loop: prevent bdev freeing while device in use + - LP: #1174946 + * thermal: return an error on failure to register thermal class + - LP: #1174946 + * UBIFS: make space fixup work in the remount case + - LP: #1174946 + * reiserfs: Fix warning and inode leak when deleting inode with xattrs + - LP: #1174946 + * mm: prevent mmap_cache race in find_vma() + - LP: #1174946 + * Linux 3.5.7.10 + - LP: #1174946 + * ASoC: imx-ssi: Fix occasional AC97 reset failure + - LP: #1174946 + * ASoC: dma-sh7760: Fix compile error + - LP: #1174946 + * spi/s3c64xx: modified error interrupt handling and init + - LP: #1174946 + * spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts + - LP: #1174946 + * EISA/PCI: Fix bus res reference + - LP: #1174946 + * EISA/PCI: Init EISA early, before PNP + - LP: #1174946 + * mwifiex: limit channel number not to overflow memory + - LP: #1174946 + * ALSA: hda - bug fix on return value when getting HDMI ELD info + - LP: #1174946 + * x86: remove the x32 syscall bitmask from syscall_get_nr() + - LP: #1174946 + * ixgbe: fix registration order of driver and DCA nofitication + - LP: #1174946 + * alpha: Add irongate_io to PCI bus resources + - LP: #1174946 + * crypto: gcm - fix assumption that assoc has one segment + - LP: #1174946 + * libata: Use integer return value for atapi_command_packet_set + - LP: #1174946 + * libata: Set max sector to 65535 for Slimtype DVD A DS8A8SH drive + - LP: #1174946 + * remoteproc: fix error path of handle_vdev + - LP: #1174946 + * hwspinlock: fix __hwspin_lock_request error path + - LP: #1174946 + * remoteproc: fix FW_CONFIG typo + - LP: #1174946 + * powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being + performed before the ANDCOND test + - LP: #1174946 + * ftrace: Consistently restore trace function on sysctl enabling + - LP: #1174946 + * spinlocks and preemption points need to be at least compiler barriers + - LP: #1174946 + * drm/mgag200: Index 24 in extended CRTC registers is 24 in hex, not + decimal. + - LP: #1174946 + * panic: fix a possible deadlock in panic() + - LP: #1174946 + * Bluetooth: Add support for IMC Networks [13d3:3393] + - LP: #1174946 + * Bluetooth: Add support for GC-WB300D PCIe [04ca:3006] to ath3k. + - LP: #1174946 + * Bluetooth: Add support for Foxconn / Hon Hai [0489:e04e] + - LP: #1174946 + * Bluetooth: Add support for Foxconn / Hon Hai [0489:e056] + - LP: #1174946 + * Bluetooth device 04ca:3008 should use ath3k + - LP: #1174946 + * Bluetooth: Device 0cf3:3008 should map AR 3012 + - LP: #1174946 + * ALSA: hda - Enabling Realtek ALC 671 codec + - LP: #1174946 + * ALSA: hda - fix typo in proc output + - LP: #1174946 + * can: gw: use kmem_cache_free() instead of kfree() + - LP: #1174946 + * tracing: Fix double free when function profile init failed + - LP: #1174946 + * r8169: fix auto speed down issue + - LP: #1174946 + * x86: Fix rebuild with EFI_STUB enabled + - LP: #1174946 + * msi-wmi: Fix memory leak + - LP: #1174946 + * DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines. + - LP: #1174946 + * drm/i915: add quirk to invert brightness on eMachines G725 + - LP: #1174946 + * drm/i915: add quirk to invert brightness on eMachines e725 + - LP: #1174946 + * drm/i915: add quirk to invert brightness on Packard Bell NCL20 + - LP: #1174946 + * block: avoid using uninitialized value in from queue_var_store + - LP: #1174946 + * ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_* + - LP: #1174946 + * PM / reboot: call syscore_shutdown() after disable_nonboot_cpus() + - LP: #1174946 + * ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is + running + - LP: #1174946 + * drm/i915: Use the correct size of the GTT for placing the per-process + entries + - LP: #1174946 + * GFS2: Fix unlock of fcntl locks during withdrawn state + - LP: #1174946 + * libsas: fix handling vacant phy in sas_set_ex_phy() + - LP: #1174946 + * sched_clock: Prevent 64bit inatomicity on 32bit systems + - LP: #1174946 + * x86, mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates + - LP: #1174946 + * x86, mm: Patch out arch_flush_lazy_mmu_mode() when running on bare + metal + - LP: #1174946 + * cifs: Allow passwords which begin with a delimitor + - LP: #1174946 + * target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition + CDBs + - LP: #1174946 + * udl: handle EDID failure properly. + - LP: #1174946 + * tracing: Fix possible NULL pointer dereferences + - LP: #1174946 + * ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section + - LP: #1174946 + * Btrfs: make sure nbytes are right after log replay + - LP: #1174946 + * kobject: fix kset_find_obj() race with concurrent last kobject_put() + - LP: #1174946 + * vfs: Revert spurious fix to spinning prevention in prune_icache_sb + - LP: #1174946 + * kref: Implement kref_get_unless_zero v3 + - LP: #1174946 + * hrtimer: Don't reinitialize a cpu_base lock on CPU_UP + - LP: #1174946 + * ARM: Do 15e0d9e37c (ARM: pm: let platforms select cpu_suspend support) + properly + - LP: #1174946 + * efivars: Allow disabling use as a pstore backend + - LP: #1174946 + * efivars: Add module parameter to disable use as a pstore backend + - LP: #1174946 + * efivars: Fix check for CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE + - LP: #1174946 + * KVM: Allow cross page reads and writes from cached translations. + - LP: #1174946 + * mtd: Disable mtdchar mmap on MMU systems + - LP: #1174946 + * Linux 3.5.7.11 + - LP: #1174946 + + -- Brad Figg Mon, 06 May 2013 10:25:47 -0700 + +linux (3.5.0-28.48) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1172023 + + [ Steve Conklin ] + + * Revert "drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for + scanline waits" + - LP: #1140716 + + [ Upstream Kernel Changes ] + + * fbcon: fix locking harder + - LP: #1167114 + + -- Brad Figg Tue, 23 Apr 2013 14:01:06 -0700 + +linux (3.5.0-28.47) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1166876 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 105b:e065 + - LP: #1161261 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Fix quieting of audit messages for network + mediation + - LP: #1163259 + + [ Upstream Kernel Changes ] + + * NFSv4: Fix the string length returned by the idmapper + - LP: #1101292 + * Input: cypress_ps2 - fix trackpadi found in Dell XPS12 + - LP: #1103594 + * omap_vout: find_vma() needs ->mmap_sem held + - LP: #1164714 + * nfsd: Fix memleak + - LP: #1164714 + * iommu/amd: Initialize device table after dma_ops + - LP: #1164714 + * svcrpc: make svc_age_temp_xprts enqueue under sv_lock + - LP: #1164714 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1164714 + * xen-blkback: do not leak mode property + - LP: #1164714 + * btrfs: Init io_lock after cloning btrfs device struct + - LP: #1164714 + * NFS: Don't allow NFS silly-renamed files to be deleted, no signal + - LP: #1164714 + * SUNRPC: Don't start the retransmission timer when out of socket space + - LP: #1164714 + * storvsc: Initialize the sglist + - LP: #1164714 + * dc395x: uninitialized variable in device_alloc() + - LP: #1164714 + * ALSA: bt87x: Make load_all parameter working again + - LP: #1164714 + * ARM: VFP: fix emulation of second VFP instruction + - LP: #1164714 + * ARM: fix scheduling while atomic warning in alignment handling code + - LP: #1164714 + * doc, xen: Mention 'earlyprintk=xen' in the documentation. + - LP: #1164714 + * doc, kernel-parameters: Document 'console=hvc' + - LP: #1164714 + * sony-laptop: fully enable SNY controlled modems + - LP: #1164714 + * x86: Make sure we can boot in the case the BDA contains pure garbage + - LP: #1164714 + * cifs: ensure that cifs_get_root() only traverses directories + - LP: #1164714 + * iscsi-target: Fix immediate queue starvation regression with DATAIN + - LP: #1164714 + * ocfs2: fix ocfs2_init_security_and_acl() to initialize acl correctly + - LP: #1164714 + * ocfs2: ac->ac_allow_chain_relink=0 won't disable group relink + - LP: #1164714 + * block: fix ext_devt_idr handling + - LP: #1164714 + * idr: fix a subtle bug in idr_get_next() + - LP: #1164714 + * block: fix synchronization and limit check in blk_alloc_devt() + - LP: #1164714 + * firewire: add minor number range check to fw_device_init() + - LP: #1164714 + * idr: fix top layer handling + - LP: #1164714 + * sysctl: fix null checking in bin_dn_node_address() + - LP: #1164714 + * nbd: fsync and kill block device on shutdown + - LP: #1164714 + * target/pscsi: Fix page increment + - LP: #1164714 + * xen/pat: Disable PAT using pat_enabled value. + - LP: #1164714 + * xen/pci: We don't do multiple MSI's. + - LP: #1164714 + * xenbus: fix compile failure on ARM with Xen enabled + - LP: #1164714 + * dm snapshot: add missing module aliases + - LP: #1164714 + * ext4: convert number of blocks to clusters properly + - LP: #1164714 + * ata_piix: reenable MS Virtual PC guests + - LP: #1164714 + * nfsd: add get_uint for u32's + - LP: #1164714 + * asus-laptop: Do not call HWRS on init + - LP: #1164714 + * ata_piix: IDE-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1164714 + * ata_piix: Add Device IDs for Intel Wellsburg PCH + - LP: #1164714 + * ata_piix: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1164714 + * fs: cachefiles: add support for large files in filesystem caching + - LP: #1164714 + * fuse: don't WARN when nlink is zero + - LP: #1164714 + * usb hid quirks for Masterkit MA901 usb radio + - LP: #1164714 + * pstore: Avoid deadlock in panic and emergency-restart path + - LP: #1164714 + * unbreak automounter support on 64-bit kernel with 32-bit userspace (v2) + - LP: #1164714 + * workqueue: consider work function when searching for busy work items + - LP: #1164714 + * zram: Fix deadlock bug in partial read/write + - LP: #1164714 + * md: protect against crash upon fsync on ro array + - LP: #1164714 + * md: fix two bugs when attempting to resize RAID0 array. + - LP: #1164714 + * md: raid0: fix error return from create_stripe_zones. + - LP: #1164714 + * ath9k: fix RSSI dummy marker value + - LP: #1164714 + * ath9k_htc: fix signal strength handling issues + - LP: #1164714 + * ath9k_hw: improve reset reliability after errors + - LP: #1164714 + * mwifiex: correct sleep delay counter + - LP: #1164714 + * libertas: fix crash for SD8688 + - LP: #1164714 + * hw_random: make buffer usable in scatterlist. + - LP: #1164714 + * drm/i915: Don't clobber crtc->fb when queue_flip fails + - LP: #1164714 + * ARM: 7657/1: head: fix swapper and idmap population with LPAE and + big-endian + - LP: #1164714 + * ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit + - LP: #1164714 + * userns: Stop oopsing in key_change_session_keyring + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Fix peak attribute handling + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Use detected chip ID to select supported + functionality + - LP: #1164714 + * hwmon: (sht15) Check return value of regulator_enable() + - LP: #1164714 + * random: fix locking dependency with the tasklist_lock + - LP: #1164714 + * ALSA: vmaster: Fix slave change notification + - LP: #1164714 + * ALSA: ice1712: Initialize card->private_data properly + - LP: #1164714 + * drm/radeon: add primary dac adj quirk for R200 board + - LP: #1164714 + * dmi_scan: fix missing check for _DMI_ signature in smbios_present() + - LP: #1164714 + * Btrfs: account for orphan inodes properly during cleanup + - LP: #1164714 + * HID: logitech-dj: do not directly call hid_output_raw_report() during + probe + - LP: #1164714 + * ftrace: Update the kconfig for DYNAMIC_FTRACE + - LP: #1164714 + * e1000e: fix pci-device enable-counter balance + - LP: #1164714 + * Fix memory leak in cpufreq stats. + - LP: #1164714 + * Btrfs: fix panic when recovering tree log + - LP: #1164714 + * xen/pciback: Don't disable a PCI device that is already disabled. + - LP: #1164714 + * vfs: fix pipe counter breakage + - LP: #1164714 + * Fix: compat_rw_copy_check_uvector() misuse in aio, readv, writev, and + security keys + - LP: #1164714 + * drm/i915: Increase the RC6p threshold. + - LP: #1164714 + * USB: Handle warm reset failure on empty port. + - LP: #1164714 + * USB: Don't use EHCI port sempahore for USB 3.0 hubs. + - LP: #1164714 + * USB: Prepare for refactoring by adding extra udev checks. + - LP: #1164714 + * USB: Rip out recursive call on warm port reset. + - LP: #1164714 + * USB: Fix connected device switch to Inactive state. + - LP: #1164714 + * Linux 3.5.7.8 + - LP: #1164714 + * USB: option: add Huawei E5331 + - LP: #1164714 + * USB: storage: fix Huawei mode switching regression + - LP: #1164714 + * USB: added support for Cinterion's products AH6 and PLS8 + - LP: #1164714 + * ALSA: seq: Fix missing error handling in snd_seq_timer_open() + - LP: #1164714 + * usb: cp210x new Vendor/Device IDs + - LP: #1164714 + * staging: vt6656: Fix oops on resume from suspend. + - LP: #1164714 + * qcaux: add Franklin U600 + - LP: #1164714 + * ext3: Fix format string issues + - LP: #1164714 + * tty/serial: Add support for Altera serial port + - LP: #1164714 + * Fix 4 port and add support for 8 port 'Unknown' PCI serial port cards + - LP: #1164714 + * serial: 8250_pci: add support for another kind of NetMos Technology PCI + 9835 Multi-I/O Controller + - LP: #1164714 + * tty: serial: fix typo "ARCH_S5P6450" + - LP: #1164714 + * usb: serial: Add Rigblaster Advantage to device table + - LP: #1164714 + * w1: fix oops when w1_search is called from netlink connector + - LP: #1164714 + * USB: cdc-wdm: fix buffer overflow + - LP: #1164714 + * hwmon: (lineage-pem) Add missing terminating entry for + pem_[input|fan]_attributes + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Fix temperature reporting + - LP: #1164714 + * btrfs: use rcu_barrier() to wait for bdev puts at unmount + - LP: #1164714 + * hwmon: (sht15) Fix memory leak if regulator_enable() fails + - LP: #1164714 + * TTY: do not reset master's packet mode + - LP: #1164714 + * virtio: rng: disallow multiple device registrations, fixes crashes + - LP: #1164714 + * block: use i_size_write() in bd_set_size() + - LP: #1164714 + * loopdev: fix a deadlock + - LP: #1164714 + * loopdev: remove an user triggerable oops + - LP: #1164714 + * proc connector: reject unprivileged listener bumps + - LP: #1164714 + * s390: critical section cleanup vs. machine checks + - LP: #1164714 + * s390/mm: fix flush_tlb_kernel_range() + - LP: #1164714 + * powerpc: Fix STAB initialization + - LP: #1164714 + * powerpc: Fix cputable entry for 970MP rev 1.0 + - LP: #1164714 + * atmel_lcdfb: fix 16-bpp modes on older SOCs + - LP: #1164714 + * selinux: use GFP_ATOMIC under spin_lock + - LP: #1164714 + * perf,x86: fix kernel crash with PEBS/BTS after suspend/resume + - LP: #1164714 + * perf,x86: fix link failure for non-Intel configs + - LP: #1164714 + * perf,x86: fix wrmsr_on_cpu() warning on suspend/resume + - LP: #1164714 + * l2tp: Restore socket refcount when sendmsg succeeds + - LP: #1164714 + * rds: limit the size allocated by rds_message_alloc() + - LP: #1164714 + * net: ipv6: Don't purge default router if accept_ra=2 + - LP: #1164714 + * tcp: fix double-counted receiver RTT when leaving receiver fast path + - LP: #1164714 + * tun: add a missing nf_reset() in tun_net_xmit() + - LP: #1164714 + * macvlan: Set IFF_UNICAST_FLT flag to prevent unnecessary promisc mode. + - LP: #1164714 + * netlabel: correctly list all the static label mappings + - LP: #1164714 + * netlabel: fix build problems when CONFIG_IPV6=n + - LP: #1164714 + * bridging: fix rx_handlers return code + - LP: #1164714 + * ipv6: stop multicast forwarding to process interface scoped addresses + - LP: #1164714 + * rtnl: fix info leak on RTM_GETLINK request for VF devices + - LP: #1164714 + * dcbnl: fix various netlink info leaks + - LP: #1164714 + * 6lowpan: Fix endianness issue in is_addr_link_local(). + - LP: #1164714 + * ahci: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1164714 + * ahci: AHCI-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1164714 + * ahci: Add Device IDs for Intel Wellsburg PCH + - LP: #1164714 + * HID: add support for Sony RF receiver with USB product id 0x0374 + - LP: #1164714 + * HID: clean up quirk for Sony RF receivers + - LP: #1164714 + * rt2x00: error in configurations with mesh support disabled + - LP: #1164714 + * mwifiex: fix potential out-of-boundary access to ibss rate table + - LP: #1164714 + * rtlwifi: rtl8192cu: Fix schedule while atomic bug splat + - LP: #1164714 + * rtlwifi: rtl8192cu: Fix problem that prevents reassociation + - LP: #1164714 + * vhost/net: fix heads usage of ubuf_info + - LP: #1164714 + * udf: avoid info leak on export + - LP: #1164714 + * isofs: avoid info leak on export + - LP: #1164714 + * key: Fix resource leak + - LP: #1164714 + * ext4: fix the wrong number of the allocated blocks in + ext4_split_extent() + - LP: #1164714 + * jbd2: fix use after free in jbd2_journal_dirty_metadata() + - LP: #1164714 + * ext4: use atomic64_t for the per-flexbg free_clusters count + - LP: #1164714 + * tracing: Fix race in snapshot swapping + - LP: #1164714 + * cifs: delay super block destruction until all cifsFileInfo objects are + gone + - LP: #1164714 + * drm/i915: restrict kernel address leak in debugfs + - LP: #1164714 + * drm/i915: bounds check execbuffer relocation count + - LP: #1164714 + - CVE-2013-0913 + * tracing: Fix free of probe entry by calling call_rcu_sched() + - LP: #1164714 + * tracing: Keep overwrite in sync between regular and snapshot buffers + - LP: #1164714 + * USB: xhci: correctly enable interrupts + - LP: #1164714 + * usb-storage: add unusual_devs entry for Samsung YP-Z3 mp3 player + - LP: #1164714 + * drm/radeon: fix backend map setup on 1 RB trinity boards + - LP: #1164714 + * drm/radeon/benchmark: make sure bo blit copy exists before using it + - LP: #1164714 + * drm/radeon: add support for Richland APUs + - LP: #1164714 + * drm/radeon: add Richland pci ids + - LP: #1164714 + * ALSA: hda/cirrus - Fix the digital beep registration + - LP: #1164714 + * USB: xhci - fix bit definitions for IMAN register + - LP: #1164714 + * x86-64: Fix the failure case in copy_user_handle_tail() + - LP: #1164714 + * target/iscsi: Fix mutual CHAP auth on big-endian arches + - LP: #1164714 + * target/file: Bump FD_MAX_SECTORS to 2048 to handle 1M sized I/Os + - LP: #1164714 + * ALSA: snd-usb: mixer: propagate errors up the call chain + - LP: #1164714 + * ALSA: snd-usb: mixer: ignore -EINVAL in snd_usb_mixer_controls() + - LP: #1164714 + * ext4: fix data=journal fast mount/umount hang + - LP: #1164714 + * ALSA: hda - Fix typo in checking IEC958 emphasis bit + - LP: #1164714 + * usb: gadget: udc-core: fix a regression during gadget driver unbinding + - LP: #1164714 + * usb: gadget: ffs: fix enable multiple instances + - LP: #1164714 + * dm thin: fix discard corruption + - LP: #1164714 + * dm verity: avoid deadlock + - LP: #1164714 + * drm/mgag200: Bug fix: Modified pll algorithm for EH project + - LP: #1164714 + * cifs: ignore everything in SPNEGO blob after mechTypes + - LP: #1164714 + * USB: cdc-acm: fix device unregistration + - LP: #1164714 + * USB: garmin_gps: fix memory leak on disconnect + - LP: #1164714 + * USB: io_ti: fix get_icount for two port adapters + - LP: #1164714 + * USB: serial: fix interface refcounting + - LP: #1164714 + * i2c: tegra: check the clk_prepare_enable() return value + - LP: #1164714 + * mm/hugetlb: fix total hugetlbfs pages count when using memory + overcommit accouting + - LP: #1164714 + * drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR + - LP: #1164714 + * KMS: fix EDID detailed timing vsync parsing + - LP: #1164714 + * KMS: fix EDID detailed timing frame rate + - LP: #1164714 + * tg3: 5715 does not link up when autoneg off + - LP: #1164714 + * sunsu: Fix panic in case of nonexistent port at "console=ttySY" cmdline + option + - LP: #1164714 + * sfc: Disable VF queues during register self-test + - LP: #1164714 + * sfc: Really disable flow control while flushing + - LP: #1164714 + * sfc: Convert firmware subtypes to native byte order in + efx_mcdi_get_board_cfg() + - LP: #1164714 + * sfc: Add parentheses around use of bitfield macro arguments + - LP: #1164714 + * sfc: Fix MCDI structure field lookup + - LP: #1164714 + * sfc: Avoid generating over-length MC_CMD_FLUSH_RX_QUEUES request + - LP: #1164714 + * sfc: Work-around flush timeout when flushes have completed + - LP: #1164714 + * sfc: lock TX queues when calling netif_device_detach() + - LP: #1164714 + * sfc: Correctly initialise reset_method in siena_test_chip() + - LP: #1164714 + * sfc: Fix timekeeping in efx_mcdi_poll() + - LP: #1164714 + * sfc: Properly sync RX DMA buffer when it is not the last in the page + - LP: #1164714 + * sfc: Fix efx_rx_buf_offset() in the presence of swiotlb + - LP: #1164714 + * sfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0 + - LP: #1164714 + * sfc: Detach net device when stopping queues for reconfiguration + - LP: #1164714 + * sfc: Only use TX push if a single descriptor is to be written + - LP: #1164714 + * sfc: Disable soft interrupt handling during efx_device_detach_sync() + - LP: #1164714 + * sctp: don't break the loop while meeting the active_path so as to find + the matched transport + - LP: #1164714 + * netconsole: don't call __netpoll_cleanup() while atomic + - LP: #1164714 + * net/ipv4: Ensure that location of timestamp option is stored + - LP: #1164714 + * bonding: don't call update_speed_duplex() under spinlocks + - LP: #1164714 + * sctp: Use correct sideffect command in duplicate cookie handling + - LP: #1164714 + * ipv4: fix definition of FIB_TABLE_HASHSZ + - LP: #1164714 + * rtnetlink: Mask the rta_type when range checking + - LP: #1164714 + * tcp: fix skb_availroom() + - LP: #1164714 + * inet: limit length of fragment queue hash table bucket lists + - LP: #1164714 + * bnx2x: fix occasional statistics off-by-4GB error + - LP: #1164714 + * signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear + sa_restorer + - LP: #1164714 + * kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER + - LP: #1164714 + * vfs,proc: guarantee unique inodes in /proc + - LP: #1164714 + * Linux 3.5.7.9 + - LP: #1164714 + * KVM: x86: fix for buffer overflow in handling of MSR_KVM_SYSTEM_TIME + (CVE-2013-1796) + - LP: #1158254 + - CVE-2013-1796 + * KVM: Fix bounds checking in ioapic indirect register reads + (CVE-2013-1798) + - LP: #1158262 + - CVE-2013-1798 + * KVM: x86: Convert MSR_KVM_SYSTEM_TIME to use gfn_to_hva_cache functions + (CVE-2013-1797) + - LP: #1158258 + - CVE-2013-1797 + * drm/i915: "Flush Me Harder" required on gen6+ + - LP: #1140716 + * drm/i915: PIPE_CONTROL_TLB_INVALIDATE + - LP: #1140716 + * drm/i915: Apply post-sync write for pipe control invalidates + - LP: #1140716 + * drm/i915: TLB invalidation with MI_FLUSH_DW requires a post-sync op v3 + - LP: #1140716 + * drm/i915: PIPE_CONTROL TLB invalidate requires CS stall + - LP: #1140716 + + -- Steve Conklin Tue, 09 Apr 2013 11:43:02 -0500 + +linux (3.5.0-27.46) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1159991 + + [ Steve Conklin ] + + * Start New Release + + [ Upstream Kernel Changes ] + + * crypto: user - fix info leaks in report API + - LP: #1156790, #1156795, #1156799 + - CVE-2013-2546 + * brcmsmac: fix mismatch in number of custom regulatory rules + - LP: #1156769 + + [ Xiangliang Yu ] + + * SAUCE: PCI: define macro for marvell vendor ID + - LP: #1159863 + * SAUCE: PCI: fix system hang issue of Marvell SATA host controller + - LP: #1159863 + + -- Steve Conklin Mon, 25 Mar 2013 14:32:06 -0500 + +linux (3.5.0-27.45) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 15:26:20 -0500 + +linux (3.5.0-27.44) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 10:26:04 -0500 + +linux (3.5.0-27.43) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1156821 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS_PRECLAIM + - LP: #1105230 + + [ Brad Figg ] + + * Start new release + + [ Kamal Mostafa ] + + * SAUCE: alx: use github.com/qca/alx repo + - LP: #1154238 + + [ Luis Henriques ] + + * [Config] CONFIG_NFS_V4_1=y + - LP: #1111416 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #1154238 + + [ Upstream Kernel Changes ] + + * Revert "drm: Add EDID_QUIRK_FORCE_REDUCED_BLANKING for ASUS VW222S" + - LP: #1144961 + * genirq: Avoid deadlock in spurious handling + - LP: #1144961 + * KVM: s390: Handle hosts not supporting s390-virtio. + - LP: #1144961 + * v4l: Reset subdev v4l2_dev field to NULL if registration fails + - LP: #1144961 + * powerpc/eeh: Fix crash when adding a device in a slot with DDW + - LP: #1144961 + * pcmcia/vrc4171: Add missing spinlock init + - LP: #1144961 + * USB: DWC3: Generate interrupt on each TRB as default option + - LP: #1144961 + * usb: dwc3: gadget: fix skip LINK_TRB on ISOC + - LP: #1144961 + * usb: dwc3: gadget: req->queued must be forced to false in cleanup + - LP: #1144961 + * Purge existing TLB entries in set_pte_at and ptep_set_wrprotect + - LP: #1144961 + * ARM: PXA3xx: program the CSMSADRCFG register + - LP: #1144961 + * ab8500-chargalg: Only root should have write permission on sysfs file + - LP: #1144961 + * USB: option: add and update Alcatel modems + - LP: #1144961 + * uprobes/powerpc: Add dependency on single step emulation + - LP: #1144961 + * drivers/video: fsl-diu-fb: fix pixel formats for 24 and 16 bpp + - LP: #1144961 + * s390/kvm: Fix store status for ACRS/FPRS + - LP: #1144961 + * staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors + - LP: #1144961 + * ALSA: usb-audio: fix Roland A-PRO support + - LP: #1144961 + * x86-32, mm: Rip out x86_32 NUMA remapping code + - LP: #1144961 + * x86-32, mm: Remove reference to resume_map_numa_kva() + - LP: #1144961 + * x86-32, mm: Remove reference to alloc_remap() + - LP: #1144961 + * ALSA: hda - Release assigned pin/cvt at error path of hdmi_pcm_open() + - LP: #1144961 + * ab8500_btemp: Demote initcall sequence + - LP: #1144961 + * Driver core: treat unregistered bus_types as having no devices + - LP: #1144961 + * ALSA: aloop: Fix Oops while PM resume + - LP: #1144961 + * ASoC: wm2200: correct IN2L and IN3L digital mute + - LP: #1144961 + * tty: set_termios/set_termiox should not return -EINTR + - LP: #1144961 + * ARM: i.MX25: clk: parent per5_clk to AHB clock + - LP: #1144961 + * hrtimer: Prevent hrtimer_enqueue_reprogram race + - LP: #1144961 + * staging: comedi: check s->async for poll(), read() and write() + - LP: #1144961 + * ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1144961 + * timeconst.pl: Eliminate Perl warning + - LP: #1144961 + * p54usb: corrected USB ID for T-Com Sinus 154 data II + - LP: #1144961 + * rtlwifi: rtl8192cu: Fix NULL dereference BUG when using new_id + - LP: #1144961 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1144961 + * USB: storage: properly handle the endian issues of idProduct + - LP: #1144961 + * ALSA: rme32.c irq enabling after spin_lock_irq + - LP: #1144961 + * ALSA: ali5451: remove irq enabling in pointer callback + - LP: #1144961 + * ARM: 7643/1: sched: correct update_sched_clock() + - LP: #1144961 + * ALSA: hda - Workaround for silent output on Sony Vaio VGC-LN51JGB with + ALC889 + - LP: #1144961 + * x86: Hyper-V: register clocksource only if its advertised + - LP: #1144961 + * USB: option: add Yota / Megafon M100-1 4g modem + - LP: #1144961 + * USB: serial: fix null-pointer dereferences on disconnect + - LP: #1144961 + * idr: idr_for_each_entry() macro + - LP: #1144961 + * pps: Add pps_lookup_dev() function + - LP: #1144961 + * pps: Use pps_lookup_dev to reduce ldisc coupling + - LP: #1144961 + * pps: Fix a use-after free bug when unregistering a source. + - LP: #1144961 + * USB: option: add Huawei "ACM" devices using protocol = vendor + - LP: #1144961 + * ARM: samsung: fix assembly syntax for new gas + - LP: #1144961 + * USB: ehci-omap: Don't free gpios that we didn't request + - LP: #1144961 + * USB: ehci-omap: Fix autoloading of module + - LP: #1144961 + * USB: usb-storage: unusual_devs update for Super TOP SATA bridge + - LP: #1144961 + * perf tools: Fix build with bison 2.3 and older. + - LP: #1144961 + * serial: imx: Fix recursive locking bug + - LP: #1144961 + * posix-cpu-timers: Fix nanosleep task_struct leak + - LP: #1144961 + * drivercore: Fix ordering between deferred_probe and exiting initcalls + - LP: #1144961 + * NFSv4.1: Don't decode skipped layoutgets + - LP: #1144961 + * umount oops when remove blocklayoutdriver first + - LP: #1144961 + * HID: wiimote: fix nunchuck button parser + - LP: #1144961 + * cgroup: fix exit() vs rmdir() race + - LP: #1144961 + * cpuset: fix cpuset_print_task_mems_allowed() vs rename() race + - LP: #1144961 + * rtlwifi: usb: allocate URB control message setup_packet and data buffer + separately + - LP: #1144961 + * b43: Increase number of RX DMA slots + - LP: #1144961 + * futex: Revert "futex: Mark get_robust_list as deprecated" + - LP: #1144961 + * NLM: Ensure that we resend all pending blocking locks after a reclaim + - LP: #1144961 + * ALSA: hda - hdmi: ELD shouldn't be valid after unplug + - LP: #1144961 + * xen: close evtchn port if binding to irq fails + - LP: #1144961 + * xen: Send spinlock IPI to all waiters + - LP: #1011792, #1144961 + * ALSA: usb: Fix Processing Unit Descriptor parsers + - LP: #1144961 + * inotify: remove broken mask checks causing unmount to be EINVAL + - LP: #1144961 + * fs/block_dev.c: page cache wrongly left invalidated after + revalidate_disk() + - LP: #1144961 + * ocfs2: unlock super lock if lockres refresh failed + - LP: #1144961 + * drivers/video/backlight/adp88?0_bl.c: fix resume + - LP: #1144961 + * powerpc/kexec: Disable hard IRQ before kexec + - LP: #1144961 + * mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may + safely schedule + - LP: #1144961 + * mm: mmu_notifier: make the mmu_notifier srcu static + - LP: #1144961 + * mmu_notifier_unregister NULL Pointer deref and multiple ->release() + callouts + - LP: #1144961 + * mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to + discard all pages + - LP: #1144961 + * tmpfs: fix use-after-free of mempolicy object + - LP: #1144961 + * dca: check against empty dca_domains list before unregister provider + - LP: #1144961 + * ext4: return ENOMEM if sb_getblk() fails + - LP: #1144961 + * ext4: check bh in ext4_read_block_bitmap() + - LP: #1144961 + * quota: autoload the quota_v2 module for QFMT_VFS_V1 quota format + - LP: #1144961 + * ext4: fix possible use-after-free with AIO + - LP: #1144961 + * drm/i915: Fix CAGF for HSW + - LP: #1144961 + * ext4: fix race in ext4_mb_add_n_trim() + - LP: #1144961 + * UBIFS: fix use of freed ubifs_orphan objects + - LP: #1144961 + * UBIFS: fix double free of ubifs_orphan objects + - LP: #1144961 + * drm/radeon/dce6: fix display powergating + - LP: #1144961 + * vgacon/vt: clear buffer attributes when we load a 512 character font + (v2) + - LP: #1144961 + * fbcon: don't lose the console font across generic->chip driver switch + - LP: #1144961 + * drm/usb: bind driver to correct device + - LP: #1144961 + * drm/udl: make usage as a console safer + - LP: #1144961 + * drm/udl: disable fb_defio by default + - LP: #1144961 + * fb: rework locking to fix lock ordering on takeover + - LP: #1144961 + * fb: Yet another band-aid for fixing lockdep mess + - LP: #1144961 + * ext4: fix xattr block allocation/release with bigalloc + - LP: #1144961 + * target: Fix lookup of dynamic NodeACLs during cached demo-mode + operation + - LP: #1144961 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1144961 + * ftrace: Call ftrace cleanup module notifier after all other notifiers + - LP: #1144961 + * drm: don't add inferred modes for monitors that don't support them + - LP: #1144961 + * drm/i915: disable shared panel fitter for pipe + - LP: #1144961 + * drm: Fill depth/bits_per_pixel for C8 format + - LP: #1144961 + * drm: Use C8 instead of RGB332 when determining the format from + depth/bpp + - LP: #1144961 + * drm/i915: add missing \n to UTS_RELEASE in the error_state + - LP: #1144961 + * drm/i915: Set i9xx sdvo clock limits according to specifications + - LP: #1144961 + * drm/i915: inverted brightness quirk for Acer Aspire 4736Z + - LP: #1144961 + * intel/iommu: force writebuffer-flush quirk on Gen 4 Chipsets + - LP: #1144961 + * drm/radeon: remove overzealous warning in hdmi handling + - LP: #1144961 + * x86, efi: Make "noefi" really disable EFI runtime serivces + - LP: #1144961 + * posix-timer: Don't call idr_find() with out-of-range ID + - LP: #1144961 + * ext4: fix free clusters calculation in bigalloc filesystem + - LP: #1144961 + * fs: Fix possible use-after-free with AIO + - LP: #1144961 + * mmc: sdhci-esdhc-imx: fix host version read + - LP: #1144961 + * b43: Fix lockdep splat on module unload + - LP: #1144961 + * ocfs2: fix possible use-after-free with AIO + - LP: #1144961 + * x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS. + - LP: #1144961 + * igb: Remove artificial restriction on RQDPC stat reading + - LP: #1144961 + * ptrace/x86: Introduce set_task_blockstep() helper + - LP: #1144961 + * ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic + - LP: #1144961 + * sunvdc: Fix off-by-one in generic_request(). + - LP: #1144961 + * sparc64: Fix gfp_flags setting in tsb_grow(). + - LP: #1144961 + * bridge: set priority of STP packets + - LP: #1144961 + * xen-netback: correctly return errors from netbk_count_requests() + - LP: #1144961 + * xen-netback: cancel the credit timer when taking the vif down + - LP: #1144961 + * net: fix a compile error when SOCK_REFCNT_DEBUG is enabled + - LP: #1144961 + * ipv4: fix a bug in ping_err(). + - LP: #1144961 + * ipv6: use a stronger hash for tcp + - LP: #1144961 + * ARM: 7635/1: versatile: fix the PCI IRQ regression + - LP: #1144961 + * staging: vt6656: Fix URB submitted while active warning. + - LP: #1144961 + * vlan: adjust vlan_set_encap_proto() for its callers + - LP: #1144961 + * gpio/ich: Add missing spinlock init + - LP: #1144961 + * staging: comedi: ni_labpc: set up command4 register *after* command3 + - LP: #1144961 + * staging: comedi: ni_labpc: correct differential channel sequence for AI + commands + - LP: #1144961 + * tty: Prevent deadlock in n_gsm driver + - LP: #1144961 + * Linux 3.5.7.7 + - LP: #1144961 + * i915_hsw: don't send DP "idle" pattern before "normal" on HSW PORT_A + - LP: #1138700 + * mfd: rtsx: Optimize card detect flow + - LP: #1148892 + * mfd: rtsx: Fix issue that booting OS with SD card inserted + - LP: #1148892 + * drm/radeon: add new AMD ACPI header and update relevant code (v2) + - LP: #1110219 + * drm/radeon: add a license header to radeon_apci.c + - LP: #1110219 + * drm/radeon: track whether the GPU controls the backlight (v2) + - LP: #1110219 + * drm/radeon: rework legacy backlight control + - LP: #1110219 + * drm/radeon: add backlight control for atom devices (v2) + - LP: #1110219 + * drm/radeon: refactor radeon_atif_call + - LP: #1110219 + * drm/radeon: implement radeon_atif_verify_interface + - LP: #1110219 + * drm/radeon: implement wrapper for GET_SYSTEM_PARAMS + - LP: #1110219 + * drm/radeon: implement handler for ACPI event + - LP: #1110219 + * drm/radeon: re-organize the acpi notifier callback + - LP: #1110219 + * ACPI video: allow events handlers to veto the keypress + - LP: #1110219 + * drm/radeon: block the keypress on ATIF events + - LP: #1110219 + * keys: fix race with concurrent install_user_keyrings() + - LP: #1152788 + - CVE-2013-1792 + * mfd: rtsx: Add clock divider hook + - LP: #1153618 + * mfd: rtsx: Implement driving adjustment to device-dependent callbacks + - LP: #1153618 + * mfd: rtsx: Support RTS5227 + - LP: #1153618 + * mmc: rtsx: remove driving adjustment + - LP: #1153618 + * x86/apic: Remove noisy zero-mask warning from + default_send_IPI_mask_logical() + - LP: #1100202 + * signal: always clear sa_restorer on execve + - LP: #1153813 + - CVE-2013-0914 + + -- Steve Conklin Mon, 18 Mar 2013 13:39:54 -0500 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.40) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1133429 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094 + + [ Ian Campbell ] + + * SAUCE: xen/netback: shutdown the ring if it contains garbage. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: netback: correct netbk_tx_err to handle wrap around. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: xen/netback: don't leak pages on failure in + xen_netbk_tx_check_gop. + - LP: #1117331 + - CVE-2013-0217 + * SAUCE: xen/netback: free already allocated memory on failure in + xen_netbk_get_requests + - LP: #1117331 + - CVE-2013-0217 + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + * SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access + failure once + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * Revert "USB: Handle warm reset failure on empty port." + - LP: #1131944 + * xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS + guests. + - LP: #1102374 + - CVE-2013-0190 + * virtio-blk: Don't free ida when disk is in use + - LP: #1119885 + * ioat: Fix DMA memory sync direction correct flag + - LP: #1119885 + * PCI: pciehp: Use per-slot workqueues to avoid deadlock + - LP: #1119885 + * PCI/AER: pci_get_domain_bus_and_slot() call missing required + pci_dev_put() + - LP: #1119885 + * xen/grant-table: correctly initialize grant table version 1 + - LP: #1119885 + * serial:ifx6x60:Delete SPI timer when shut down port + - LP: #1119885 + * tty: 8250_dw: Fix inverted arguments to serial_out in IRQ handler + - LP: #1119885 + * drm/i915: Invalidate the relocation presumed_offsets along the slow + path + - LP: #1119885 + * ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone + - LP: #1119885 + * staging: vt6656: Fix inconsistent structure packing + - LP: #1119885 + * 8250/16?50: Add support for Broadcom TruManage redirected serial port + - LP: #1119885 + * KVM: PPC: Emulate dcbf + - LP: #1119885 + * staging: wlan-ng: Fix clamping of returned SSID length + - LP: #1119885 + * USB: option: blacklist network interface on ONDA MT8205 4G LTE + - LP: #1119885 + * USB: option: add TP-LINK HSUPA Modem MA180 + - LP: #1119885 + * ALSA: hda - Fix mute led for another HP machine + - LP: #1096789, #1119885 + * usb: dwc3: gadget: fix ep->maxburst for ep0 + - LP: #1119885 + * ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled + - LP: #1119885 + * ACPI / processor: Get power info before updating the C-states + - LP: #1119885 + * ARM: DMA: Fix struct page iterator in dma_cache_maint() to work with + sparsemem + - LP: #1119885 + * evm: checking if removexattr is not a NULL + - LP: #1119885 + * ALSA: hda - Add Conexant CX20755/20756/20757 codec IDs + - LP: #1119885 + * ftrace: Be first to run code modification on modules + - LP: #1119885 + * i2c: mxs: Fix type of error code + - LP: #1119885 + * USB: UHCI: fix IRQ race during initialization + - LP: #1119885 + * async: fix __lowest_in_progress() + - LP: #1119885 + * fs/cifs/cifs_dfs_ref.c: fix potential memory leakage + - LP: #1119885 + * ARM: at91: rm9200: remake the BGA as default version + - LP: #1119885 + * Bluetooth: Fix sending HCI commands after reset + - LP: #1119885 + * Bluetooth: Fix incorrect strncpy() in hidp_setup_hid() + - LP: #1119885 + * ath9k_htc: Fix memory leak + - LP: #1119885 + * ath9k: do not link receive buffers during flush + - LP: #1119885 + * ath9k: add a better fix for the rx tasklet vs rx flush race + - LP: #1119885 + * ath9k: fix rx flush handling + - LP: #1119885 + * brcmsmac: increase timer reference count for new timers only + - LP: #1119885 + * ath9k: remove sc->rx.rxbuflock to fix a deadlock + - LP: #1119885 + * ath9k: disable the tasklet before taking the PCU lock + - LP: #1119885 + * ASoC: wm2200: correct mixer values and text + - LP: #1119885 + * mac80211: fix FT roaming + - LP: #1119885 + * mac80211: synchronize scan off/on-channel and PS states + - LP: #1119885 + * efi, x86: Pass a proper identity mapping in efi_call_phys_prelog + - LP: #1119885 + * iwlegacy: fix IBSS cleanup + - LP: #1119885 + * ath9k_hw: fix calibration issues on chainmask that don't include chain + 0 + - LP: #1119885 + * ath9k_hw: fix chain swap setting when setting rx chainmask to 5 + - LP: #1119885 + * mwifiex: fix typo in PCIe adapter NULL check + - LP: #1119885 + * drm/i915: Disable AsyncFlip performance optimisations + - LP: #1119885 + * drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for scanline + waits + - LP: #1119885 + * iommu/intel: disable DMAR for g4x integrated gfx + - LP: #1119885 + * drm/i915: dump UTS_RELEASE into the error_state + - LP: #1119885 + * ALSA: hda - Add a fixup for Packard-Bell desktop with ALC880 + - LP: #1119885 + * drm/radeon: fix cursor corruption on DCE6 and newer + - LP: #1119885 + * radeon_display: Use pointer return error codes + - LP: #1119885 + * drm/radeon: fix error path in kpage allocation + - LP: #1119885 + * drm/radeon: fix a rare case of double kfree + - LP: #1119885 + * x86/msr: Add capabilities check + - LP: #1119885 + * x86, efi: Set runtime_version to the EFI spec revision + - LP: #1119885 + * can: c_can: fix invalid error codes + - LP: #1119885 + * can: ti_hecc: fix invalid error codes + - LP: #1119885 + * can: pch_can: fix invalid error codes + - LP: #1119885 + * ALSA: usb-audio: fix invalid length check for RME and other UAC 2 + devices + - LP: #1119885 + * smp: Fix SMP function call empty cpu mask race + - LP: #1119885 + * IOMMU, AMD Family15h Model10-1Fh erratum 746 Workaround + - LP: #1119885 + * xfs: Fix possible use-after-free with AIO + - LP: #1119885 + * powerpc/book3e: Disable interrupt after preempt_schedule_irq + - LP: #1119885 + * ALSA: hda - Fix non-snoop page handling + - LP: #1119885 + * EDAC: Test correct variable in ->store function + - LP: #1119885 + * NFS: Fix error reporting in nfs_xdev_mount + - LP: #1119885 + * NFS: Don't silently fail setattr() requests on mountpoints + - LP: #1119885 + * NFSv4.1: Handle NFS4ERR_DELAY when resetting the NFSv4.1 session + - LP: #1119885 + * drivers/firmware/dmi_scan.c: check dmi version when get system uuid + - LP: #1119885 + * drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists + - LP: #1119885 + * ahci: Add support for Enmotus Bobcat device. + - LP: #1119885 + * ahci: Fix lack of command retry after a success error handler. + - LP: #1119885 + * x86/Sandy Bridge: mark arrays in __init functions as __initconst + - LP: #1119885 + * x86/Sandy Bridge: Sandy Bridge workaround depends on CONFIG_PCI + - LP: #1119885 + * drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled + - LP: #1119885 + * ahci: Add identifiers for ASM106x devices + - LP: #1119885 + * module: fix symbol waiting when module fails before init + - LP: #1119885 + * module: wait when loading a module which is currently initializing. + - LP: #1119885 + * module: add new state MODULE_STATE_UNFORMED. + - LP: #1119885 + * module: put modules in list much earlier. + - LP: #1119885 + * module: fix missing module_mutex unlock + - LP: #1119885 + * intel_idle: Don't register CPU notifier if we are not running. + - LP: #1119885 + * xfs: fix periodic log flushing + - LP: #1119885 + * gspca_kinect: add Kinect for Windows USB id + - LP: #1119885 + * ARM: 7628/1: head.S: map one extra section for the ATAG/DTB area + - LP: #1119885 + * Linux 3.5.7.5 + - LP: #1119885 + * net: fix infinite loop in __skb_recv_datagram() + - LP: #1129184 + - CVE-2013-0290 + * vhost: fix length for cross region descriptor + - LP: #1130951 + - CVE-2013-0311 + * xhci: Fix isoc TD encoding. + - LP: #1131944 + * xhci: Fix TD size for isochronous URBs. + - LP: #1131944 + * drivers: xhci: fix incorrect bit test + - LP: #1131944 + * USB: XHCI: fix memory leak of URB-private data + - LP: #1131944 + * usb: Prevent dead ports when xhci is not enabled + - LP: #1131944 + * usb: Using correct way to clear usb3.0 device's remote wakeup feature. + - LP: #1131944 + * sched/rt: Use root_domain of rt_rq not current processor + - LP: #1131944 + * USB: EHCI: fix timer bug affecting port resume + - LP: #1131944 + * regulator: max8998: fix incorrect min_uV value for ldo10 + - LP: #1131944 + * drm/radeon: fix MC blackout on evergreen+ + - LP: #1131944 + * drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN + - LP: #1131944 + * rtlwifi: Fix the usage of the wrong variable in usb.c + - LP: #1131944 + * e1000e: enable ECC on I217/I218 to catch packet buffer memory errors + - LP: #1131944 + * drm/radeon: add quirk for RV100 board + - LP: #1131944 + * USB: qcserial: add Telit Gobi QDL device + - LP: #1131944 + * USB: option: add support for Telit LE920 + - LP: #1131944 + * drm/radeon: fix backend map setup on 1 RB sumo boards + - LP: #1131944 + * drm/radeon: protect against div by 0 in backend setup + - LP: #1131944 + * mwifiex: fix incomplete scan in case of IE parsing error + - LP: #1131944 + * USB: EHCI: fix bug in scheduling periodic split transfers + - LP: #1131944 + * x86-64: Replace left over sti/cli in ia32 audit exit code + - LP: #1131944 + * drm/radeon/evergreen+: wait for the MC to settle after MC blackout + - LP: #1131944 + * Bluetooth: Fix handling of unexpected SMP PDUs + - LP: #1131944 + * drm/radeon: Calling object_unrefer() when creating fb failure + - LP: #1131944 + * drm/radeon: prevent crash in the ring space allocation + - LP: #1131944 + * target: Fix divide by zero bug in fabric_max_sectors for unconfigured + devices + - LP: #1131944 + * digsig: Fix memory leakage in digsig_verify_rsa() + - LP: #1131944 + * can: c_can: Set reserved bit in IFx_MASK2 to 1 on write + - LP: #1131944 + * USB: ftdi_sio: add PID/VID entries for ELV WS 300 PC II + - LP: #1131944 + * USB: option: add Changhong CH690 + - LP: #1131944 + * USB: ftdi_sio: add Zolix FTDI PID + - LP: #1131944 + * USB: storage: Define a new macro for USB storage match rules + - LP: #1131944 + * USB: storage: optimize to match the Huawei USB storage devices and + support new switch command + - LP: #1131944 + * rtlwifi: Fix scheduling while atomic bug + - LP: #1131944 + * nilfs2: fix fix very long mount time issue + - LP: #1131944 + * mm/hugetlb: set PTE as huge in hugetlb_change_protection and + remove_migration_pte + - LP: #1131944 + * drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq + handler + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: fix the missing operation on enable + - LP: #1131944 + * virtio_console: Don't access uninitialized data. + - LP: #1131944 + * HID: usbhid: quirk for Formosa IR receiver + - LP: #1131944 + * kernel/resource.c: fix stack overflow in __reserve_region_with_split() + - LP: #1131944 + * net: prevent setting ttl=0 via IP_TTL + - LP: #1131944 + * ipv6: fix the noflags test in addrconf_get_prefix_route + - LP: #1131944 + * MAINTAINERS: Stephen Hemminger email change + - LP: #1131944 + * ipv6: fix header length calculation in ip6_append_data() + - LP: #1131944 + * macvlan: fix macvlan_get_size() + - LP: #1131944 + * net: calxedaxgmac: throw away overrun frames + - LP: #1131944 + * net/mlx4_en: Fix bridged vSwitch configuration for non SRIOV mode + - LP: #1131944 + * net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware + defaults + - LP: #1131944 + * isdn/gigaset: fix zero size border case in debug dump + - LP: #1131944 + * netxen: fix off by one bug in netxen_release_tx_buffer() + - LP: #1131944 + * r8169: remove the obsolete and incorrect AMD workaround + - LP: #1131944 + * net: loopback: fix a dst refcounting issue + - LP: #1131944 + * pktgen: correctly handle failures when adding a device + - LP: #1131944 + * ipv6: do not create neighbor entries for local delivery + - LP: #1131944 + * via-rhine: Fix bugs in NAPI support. + - LP: #1131944 + * packet: fix leakage of tx_ring memory + - LP: #1131944 + * atm/iphase: rename fregt_t -> ffreg_t + - LP: #1131944 + * sctp: refactor sctp_outq_teardown to insure proper re-initalization + - LP: #1131944 + * net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree + - LP: #1131944 + * net: sctp: sctp_endpoint_free: zero out secret key data + - LP: #1131944 + * tcp: frto should not set snd_cwnd to 0 + - LP: #1131944 + * tcp: fix for zero packets_in_flight was too broad + - LP: #1131944 + * tg3: Avoid null pointer dereference in tg3_interrupt in netconsole mode + - LP: #1131944 + * tg3: Fix crc errors on jumbo frame receive + - LP: #1131944 + * s390/timer: avoid overflow when programming clock comparator + - LP: #1131944 + * x86: Do not leak kernel page mapping locations + - LP: #1131944 + * x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server + systems + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: restore ST variant functionality + - LP: #1131944 + * mm: don't overwrite mm->def_flags in do_mlockall() + - LP: #1131944 + * x86/mm: Check if PUD is large when validating a kernel address + - LP: #1131944 + * PCI/PM: Clean up PME state when removing a device + - LP: #1131944 + * efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot + parameter + - LP: #1131944 + * mm: fix pageblock bitmap allocation + - LP: #1131944 + * Linux 3.5.7.6 + - LP: #1131944 + + -- Brad Figg Tue, 26 Feb 2013 08:44:21 -0800 + +linux (3.5.0-25.39) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1132885 + + [ Upstream Kernel Changes ] + + * sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + + -- Brad Figg Mon, 25 Feb 2013 09:04:12 -0800 + +linux (3.5.0-25.38) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1129472 + + [ Upstream Kernel Changes ] + + * ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() + - LP: #1119885, #1129192 + - CVE-2013-0871 + * ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL + - LP: #1119885, #1129192 + - CVE-2013-0871 + * wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED + task + - LP: #1119885, #1129192 + - CVE-2013-0871 + + -- Luis Henriques Mon, 18 Feb 2013 21:57:04 +0000 + +linux (3.5.0-24.37) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1117492 + + [ Tim Gardner ] + + * [Config] CONFIG_ALX=m for x86 only + - LP: #927782 + + -- Luis Henriques Wed, 06 Feb 2013 17:29:44 +0000 + +linux (3.5.0-24.36) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1116501 + + [ Adam Lee ] + + * [Config] Enable RTSX_PCI modules + - LP: #1057089 + + [ Andy Whitcroft ] + + * [Config] enable various HVC consoles + - LP: #1102206 + + [ Brad Figg ] + + * Revert "SAUCE: samsung-laptop: disable in UEFI mode" + - LP: #1111689 + + [ Herton Ronaldo Krzesinski ] + + * [Config] updateconfigs for 3.5.7.3 stable update + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + - LP: #927782 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #927782 + + [ Seth Forshee ] + + * SAUCE: samsung-laptop: Add quirk for broken acpi_video backlight on + N250P + - LP: #1086921 + + [ Stefan Bader ] + + * (config) Move 9p modules into generic package + - LP: #1107658 + + [ Tim Gardner ] + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + - LP: #927782 + * [Config] Add alx to d-i nic-modules + - LP: #927782 + + [ Upstream Kernel Changes ] + + * Revert "8139cp: revert "set ring address before enabling receiver"" + - LP: #1102417 + * Revert "ath9k_hw: Update AR9003 high_power tx gain table" + - LP: #1102417 + * Revert "drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13" + - LP: #1102417 + * Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat + codecs" + - LP: #1106966, #886975 + * be2net: don't call vid_config() when there's no vlan config + - LP: #1083088 + * be2net: cleanup be_vid_config() + - LP: #1083088 + * be2net: do not modify PCI MaxReadReq size + - LP: #1083088 + * be2net: fix reporting number of actual rx queues + - LP: #1083088 + * be2net: do not use SCRATCHPAD register + - LP: #1083088 + * be2net: Fix driver load for VFs for Lancer + - LP: #1083088 + * be2net: Explicitly clear the reserved field in the Tx Descriptor + - LP: #1083088 + * be2net: Regression bug wherein VFs creation broken for multiple cards. + - LP: #1083088 + * be2net: Fix to trim skb for padded vlan packets to workaround an ASIC + Bug + - LP: #1083088 + * be2net: Fix Endian + - LP: #1083088 + * be2net: Fix error while toggling autoneg of pause parameters + - LP: #1083088 + * be2net : Fix die temperature stat for Lancer + - LP: #1083088 + * be2net: Fix initialization sequence for Lancer + - LP: #1083088 + * be2net: Activate new FW after FW download for Lancer + - LP: #1083088 + * be2net: Fix cleanup path when EQ creation fails + - LP: #1083088 + * be2net: Enable RSS UDP hashing for Lancer and Skyhawk + - LP: #1083088 + * be2net: dont pull too much data in skb linear part + - LP: #1083088 + * be2net: Fix VF driver load for Lancer + - LP: #1083088 + * be2net: Ignore physical link async event for Lancer + - LP: #1083088 + * be2net: Fix to parse RSS hash from Receive completions correctly. + - LP: #1083088 + * netpoll: revert 6bdb7fe3104 and fix be_poll() instead + - LP: #1083088 + * be2net: create RSS rings even in multi-channel configs + - LP: #1083088 + * be2net: fix max VFs reported by HW + - LP: #1083088 + * be2net: fix FW default for VF tx-rate + - LP: #1083088 + * be2net: fixup malloc/free of adapter->pmac_id + - LP: #1083088 + * be2net: fix wrong handling of be_setup() failure in be_probe() + - LP: #1083088 + * be2net: cleanup code related to be_link_status_query() + - LP: #1083088 + * be2net: fix vfs enumeration + - LP: #1083088 + * be2net: Remove code that stops further access to BE NIC based on UE + bits + - LP: #1083088 + * mtip32xx: Add support for new devices + - LP: #1099913 + * mtip32xx: Handle NCQ commands during the security locked state + - LP: #1099913 + * mtip32xx: Increase timeout for standby command + - LP: #1099913 + * mtip32xx: Proper reporting of write protect status on big-endian + - LP: #1099913 + * mtip32xx: Change printk to pr_xxxx + - LP: #1099913 + * mtip32xx: Remove dead code + - LP: #1099913 + * mtip32xx: fix user_buffer check in exec_drive_command + - LP: #1099913 + * mtip32xx:Added appropriate timeout value for secure erase + - LP: #1099913 + * mtip32xx: fix potential crash on SEC_ERASE_UNIT + - LP: #1099913 + * mtip32xx: Fix to make lba address correct in big-endian systems + - LP: #1099913 + * mtip32xx: Fix incorrect mask used for erase mode + - LP: #1099913 + * mtip32xx: fix shift larger than type warning + - LP: #1099913 + * mtip32xx: fix potential NULL pointer dereference in + mtip_timeout_function() + - LP: #1099913 + * mtip32xx: Fix padding issue + - LP: #1099913 + * KVM: PPC: e500: fix allocation size error on g2h_tlb1_map + - LP: #1102417 + * s390/kvm: dont announce RRBM support + - LP: #1102417 + * cgroup: cgroup_subsys->fork() should be called after the task is added + to css_set + - LP: #1102417 + * freezer: add missing mb's to freezer_count() and freezer_should_skip() + - LP: #1102417 + * ath9k_hw: Enable hw PLL power save for AR9462 + - LP: #1102417 + * usb: gadget: tcm_usb_gadget: NULL terminate the FS descriptor list + - LP: #1102417 + * usb: gadget: network: fix bind() error path + - LP: #1102417 + * usb: gadget: midi: free hs descriptors + - LP: #1102417 + * usb: gadget: phonet: free requests in pn_bind()'s error path + - LP: #1102417 + * usb: gadget: uvc: fix error path in uvc_function_bind() + - LP: #1102417 + * x86: hpet: Fix masking of MSI interrupts + - LP: #1102417 + * usb: musb: cppi_dma: export cppi_interrupt() + - LP: #1102417 + * iscsi-target: Fix bug in handling of ExpStatSN ACK during u32 + wrap-around + - LP: #1102417 + * iscsi-target: Always send a response before terminating iSCSI + connection + - LP: #1102417 + * SUNRPC: Fix validity issues with rpc_pipefs sb->s_fs_info + - LP: #1102417 + * ext4: fix memory leak in ext4_xattr_set_acl()'s error path + - LP: #1102417 + * ARM: mm: use pteval_t to represent page protection values + - LP: #1102417 + * perf test: fix a build error on builtin-test + - LP: #1102417 + * USB: fix endpoint-disabling for failed config changes + - LP: #1102417 + * genirq: Always force thread affinity + - LP: #1102417 + * xhci: Fix conditional check in bandwidth calculation. + - LP: #1102417 + * xHCI: Fix TD Size calculation on 1.0 hosts. + - LP: #1102417 + * xhci: fix null-pointer dereference when destroying half-built segment + rings + - LP: #1102417 + * xhci: Extend Fresco Logic MSI quirk. + - LP: #1102417 + * usb: host: xhci: Stricter conditional for Z1 system models for + Compliance Mode Patch + - LP: #1102417 + * Staging: bcm: Add two products and remove an existing product. + - LP: #1102417 + * rcu: Fix batch-limit size problem + - LP: #1102417 + * ext4: init pagevec in ext4_da_block_invalidatepages + - LP: #1102417 + * powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build + - LP: #1102417 + * ftrace: Clear bits properly in reset_iter_read() + - LP: #1102417 + * cdc-acm: implement TIOCSSERIAL to avoid blocking close(2) + - LP: #1102417 + * ACPI / battery: Correct battery capacity values on Thinkpads + - LP: #1102417 + * cgroup: remove incorrect dget/dput() pair in cgroup_create_dir() + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [04ca, 2003] + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [0b05, 17b5] + - LP: #1102417 + * regulator: wm831x: Set the new rather than old value for DVS VSEL + - LP: #1102417 + * drm: fix documentation for drm_crtc_set_mode() + - LP: #1102417 + * mfd: Only unregister platform devices allocated by the mfd core + - LP: #1102417 + * NFS: Add sequence_priviliged_ops for nfs4_proc_sequence() + - LP: #1102417 + * drm/i915: make the panel fitter work on pipes B and C on IVB + - LP: #1102417 + * USB: add new zte 3g-dongle's pid to option.c + - LP: #1102417 + * ACPI / PM: Add Sony Vaio VPCEB1S1E to nonvs blacklist. + - LP: #1102417 + * mfd: wm8994: Add support for WM1811 rev E + - LP: #1102417 + * 8139cp: set ring address after enabling C+ mode + - LP: #1102417 + * USB: OHCI: workaround for hardware bug: retired TDs not added to the + Done Queue + - LP: #1102417 + * USB: option: blacklist network interface on Huawei E173 + - LP: #1102417 + * USB: cp210x: add Virtenio Preon32 device id + - LP: #1102417 + * usb: ftdi_sio: fixup BeagleBone A5+ quirk + - LP: #1102417 + * USB: ftdi_sio: Add support for Newport AGILIS motor drivers + - LP: #1102417 + * qla2xxx: Look up LUN for abort requests + - LP: #1102417 + * iscsit: use GFP_ATOMIC under spin lock + - LP: #1102417 + * ASoC: wm8994: Use the same DCS codes for all WM1811 variants + - LP: #1102417 + * sata_promise: fix hardreset lockdep error + - LP: #1102417 + * xhci: Add Lynx Point LP to list of Intel switchable hosts + - LP: #1102417 + * USB: mark uas driver as BROKEN + - LP: #1102417 + * can: Do not call dev_put if restart timer is running upon close + - LP: #1102417 + * mlx4_core: Fix potential deadlock in mlx4_eq_int() + - LP: #1102417 + * xfs: fix stray dquot unlock when reclaiming dquots + - LP: #1102417 + * KVM: Fix user memslot overlap check + - LP: #1102417 + * ext4: fix possible use after free with metadata csum + - LP: #1102417 + * prevent stack buffer overflow in host_reset + - LP: #1102417 + * mvsas: fix undefined bit shift + - LP: #1102417 + * qla2xxx: Test and clear FCPORT_UPDATE_NEEDED atomically. + - LP: #1102417 + * ACPI: do acpisleep dmi check when CONFIG_ACPI_SLEEP is set + - LP: #1102417 + * ACPI / PNP: Do not crash due to stale pointer use during system resume + - LP: #1102417 + * ring-buffer: Fix NULL pointer if rb_set_head_page() fails + - LP: #1102417 + * firewire: net: Fix handling of fragmented multicast/broadcast packets. + - LP: #1102417 + * HID: Add Apple wireless keyboard 2011 ANSI to special driver list + - LP: #1102417 + * libata: set dma_mode to 0xff in reset + - LP: #1102417 + * s390/cio: fix pgid reserved check + - LP: #1102417 + * Bluetooth: Add missing lock nesting notation + - LP: #1102417 + * Bluetooth: cancel power_on work when unregistering the device + - LP: #1102417 + * Input: wacom - fix touch support for Bamboo Fun CTH-461 + - LP: #1102417 + * ALSA: usb-audio: Avoid autopm calls after disconnection + - LP: #1102417 + * ALSA: usb-audio: Fix missing autopm for MIDI input + - LP: #1102417 + * ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 + - LP: #1102417 + * mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL + - LP: #1102417 + * Revert: "rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe + fails" + - LP: #1102417 + * x86,AMD: Power driver support for AMD's family 16h processors + - LP: #1102417 + * target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping + - LP: #1102417 + * drm/i915: Close race between processing unpin task and queueing the + flip + - LP: #1102417 + * cgroup_rm_file: don't delete the uncreated files + - LP: #1102417 + * pnpacpi: fix incorrect TEST_ALPHA() test + - LP: #1102417 + * drm/radeon: stop page faults from hanging the system (v2) + - LP: #1102417 + * drm/radeon/dce32+: use fractional fb dividers for high clocks + - LP: #1102417 + * drm/radeon: fix eDP clk and lane setup for scaled modes + - LP: #1102417 + * regmap: debugfs: Avoid overflows for very small reads + - LP: #1102417 + * b43legacy: Fix firmware loading when driver is built into the kernel + - LP: #1102417 + * ath9k: ar9003: fix OTP register offsets for AR9340 + - LP: #1102417 + * bcma: mips: fix clearing device IRQ + - LP: #1102417 + * ath9k_hw: Fix signal strength / channel noise reporting + - LP: #1102417 + * ath5k: fix tx path skb leaks + - LP: #1102417 + * b43: fix tx path skb leaks + - LP: #1102417 + * drm/i915: drop buggy write to FDI_RX_CHICKEN register + - LP: #1102417 + * drm/i915: disable cpt phase pointer fdi rx workaround + - LP: #1102417 + * iwlwifi: silently ignore fw flaws in Tx path + - LP: #1102417 + * iwlwifi: don't handle masked interrupt + - LP: #1102417 + * mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls + - LP: #1102417 + * nfs: don't extend writes to cover entire page if pagecache is invalid + - LP: #1102417 + * solos-pci: fix double-free of TX skb in DMA mode + - LP: #1102417 + * ALSA: hda - Add stereo-dmic fixup for Acer Aspire One 522 + - LP: #1102417 + * nfs: don't zero out the rest of the page if we hit the EOF on a DIO + READ + - LP: #1102417 + * drm/radeon: fix amd afusion gpu setup aka sumo v2 + - LP: #1102417 + * NFS: avoid NULL dereference in nfs_destroy_server + - LP: #1102417 + * sbp-target: fix error path in sbp_make_tpg() + - LP: #1102417 + * target/tcm_fc: fix the lockdep warning due to inconsistent lock state + - LP: #1102417 + * MIPS: Fix poweroff failure when HOTPLUG_CPU configured. + - LP: #1102417 + * fix Null pointer dereference on disk error + - LP: #1102417 + * NFS: Fix calls to drop_nlink() + - LP: #1102417 + * Input: walkera0701 - fix crash on startup + - LP: #1102417 + * SUNRPC: continue run over clients list on PipeFS event instead of break + - LP: #1102417 + * proc: pid/status: show all supplementary groups + - LP: #1102417 + * CRIS: fix I/O macros + - LP: #1102417 + * virtio: force vring descriptors to be allocated from lowmem + - LP: #1102417 + * nfs: fix wrong object type in lockowner_slab + - LP: #1102417 + * jffs2: hold erase_completion_lock on exit + - LP: #1102417 + * nfsd: fix v4 reply caching + - LP: #1102417 + * mtd cs553x_nand: Initialise ecc.strength before nand_scan() + - LP: #1102417 + * kbuild: Do not remove vmlinux when cleaning external module + - LP: #1102417 + * ASoC: sigmadsp: Fix endianness conversion issue + - LP: #1102417 + * nfsd: avoid permission checks on EXCLUSIVE_CREATE replay + - LP: #1102417 + * x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops + - LP: #1102417 + * mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems + - LP: #1102417 + * ALSA: hda - Fix pin configuration of HP Pavilion dv7 + - LP: #1102417 + * ALSA: hda - Always turn on pins for HDMI/DP + - LP: #1102417 + * OMAP: board-files: fix i2c_bus for tfp410 + - LP: #1102417 + * i2400m: add Intel 6150 device IDs + - LP: #1102417 + * ALSA: hda - Fix the wrong pincaps set in ALC861VD dallas/hp fixup + - LP: #1102417 + * nfsd4: fix oops on unusual readlike compound + - LP: #1102417 + * qmi_wwan/cdc_ether: add Dell Wireless 5800 (Novatel E362) USB IDs + - LP: #1102417 + * ARM: missing ->mmap_sem around find_vma() in swp_emulate.c + - LP: #1102417 + * ARM: 7607/1: realview: fix private peripheral memory base for EB rev. B + boards + - LP: #1102417 + * cifs: don't compare uniqueids in cifs_prime_dcache unless server inode + numbers are in use + - LP: #1102417 + * intel-iommu: Free old page tables before creating superpage + - LP: #1102417 + * vfs: d_obtain_alias() needs to use "/" as default name. + - LP: #1102417 + * mm: fix calculation of dirtyable memory + - LP: #1102417 + * SGI-XP: handle non-fatal traps + - LP: #1102417 + * dm persistent data: rename node to btree_node + - LP: #1102417 + * dm ioctl: prevent unsafe change to dm_ioctl data_size + - LP: #1102417 + * sis900: fix sis900_set_mode call parameters. + - LP: #1102417 + * ne2000: add the right platform device + - LP: #1102417 + * irda: sir_dev: Fix copy/paste typo + - LP: #1102417 + * ipv4: ip_check_defrag must not modify skb before unsharing + - LP: #1102417 + * inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state + - LP: #1102417 + * inet_diag: validate byte code to prevent oops in inet_diag_bc_run() + - LP: #1102417 + * inet_diag: avoid unsafe and nonsensical prefix matches in + inet_diag_bc_run() + - LP: #1102417 + * inet_diag: validate port comparison byte code to prevent unsafe reads + - LP: #1102417 + * usb/ipheth: Add iPhone 5 support + - LP: #1102417 + * bonding: fix race condition in bonding_store_slaves_active + - LP: #1102417 + * sctp: fix memory leak in sctp_datamsg_from_user() when copy from user + space fails + - LP: #1102417 + * sctp: fix -ENOMEM result with invalid user space pointer in sendto() + syscall + - LP: #1102417 + * udf: fix memory leak while allocating blocks during write + - LP: #1102417 + * udf: don't increment lenExtents while writing to a hole + - LP: #1102417 + * staging: vt6656: [BUG] out of bound array reference in RFbSetPower. + - LP: #1102417 + * staging: vt6656: 64 bit fixes: use u32 for QWORD definition. + - LP: #1102417 + * staging: vt6656: 64 bit fixes : correct all type sizes + - LP: #1102417 + * staging: vt6656: 64 bit fixes: fix long warning messages. + - LP: #1102417 + * staging: vt6656: 64bit fixes: key.c/h change unsigned long to u32 + - LP: #1102417 + * staging: vt6656: 64bit fixes: vCommandTimerWait change calculation of + timer. + - LP: #1102417 + * drm/i915: Flush outstanding unpin tasks before pageflipping + - LP: #1094173, #1102417 + * ext4: fix extent tree corruption caused by hole punch + - LP: #1102417 + * ext4: check dioread_nolock on remount + - LP: #1102417 + * drm/i915: fix flags in dma buf exporting + - LP: #1102417 + * jbd2: fix assertion failure in jbd2_journal_flush() + - LP: #1102417 + * drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list + - LP: #1102417 + * hwmon: (lm73} Detect and report i2c bus errors + - LP: #1102417 + * ext4: do not try to write superblock on ro remount w/o journal + - LP: #1102417 + * PCI: Work around Stratus ftServer broken PCIe hierarchy (fix DMI check) + - LP: #1102417 + * PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz + - LP: #1102417 + * mm: Fix PageHead when !CONFIG_PAGEFLAGS_EXTENDED + - LP: #1102417 + * tmpfs mempolicy: fix /proc/mounts corrupting memory + - LP: #1102417 + * epoll: prevent missed events on EPOLL_CTL_MOD + - LP: #1102417 + * drm/i915: add some barriers when changing DIPs + - LP: #1102417 + * drm/i915: make sure we write all the DIP data bytes + - LP: #1102417 + * RDMA/nes: Fix for terminate timer crash + - LP: #1102417 + * RDMA/nes: Fix for crash when registering zero length MR for CQ + - LP: #1102417 + * sparc: huge_ptep_set_* functions need to call set_huge_pte_at() + - LP: #1102417 + * batman-adv: fix random jitter calculation + - LP: #1102417 + * inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and + dccp_v4/6_request_recv_sock + - LP: #1102417 + * net: sched: integer overflow fix + - LP: #1102417 + * tcp: fix MSG_SENDPAGE_NOTLAST logic + - LP: #1102417 + * tcp: implement RFC 5961 3.2 + - LP: #1102417 + * tcp: implement RFC 5961 4.2 + - LP: #1102417 + * tcp: refine SYN handling in tcp_validate_incoming + - LP: #1102417 + * tcp: tcp_replace_ts_recent() should not be called from + tcp_validate_incoming() + - LP: #1102417 + * tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation + - LP: #1102417 + * ACPI : do not use Lid and Sleep button for S5 wakeup + - LP: #1102417 + * aoe: do not call bdi_init after blk_alloc_queue + - LP: #1102417 + * Input: sentelic - only report position of first finger as ST + coordinates + - LP: #1102417 + * Input: gpio_keys - defer probing if GPIO probing is deferred + - LP: #1102417 + * cifs: adjust sequence number downward after signing NT_CANCEL request + - LP: #1102417 + * rtlwifi: fix incorrect use of usb_alloc_coherent with usb_control_msg + - LP: #1102417 + * p54usb: add USB ID for T-Com Sinus 154 data II + - LP: #1102417 + * ath9k_hw: Fix RX gain initvals for AR9485 + - LP: #1102417 + * p54usb: add USBIDs for two more p54usb devices + - LP: #1102417 + * powerpc/vdso: Remove redundant locking in update_vsyscall_tz() + - LP: #1102417 + * powerpc: Add missing NULL terminator to avoid boot panic on PPC40x + - LP: #1102417 + * drm/radeon: add connector table for Mac G4 Silver + - LP: #1102417 + * drm/radeon: Properly handle DDC probe for DP bridges + - LP: #1102417 + * drm/nouveau: fix init with agpgart-uninorth + - LP: #1102417 + * video: mxsfb: fix crash when unblanking the display + - LP: #1102417 + * nfs: fix null checking in nfs_get_option_str() + - LP: #1102417 + * SUNRPC: Ensure that we free the rpc_task after cleanups are done + - LP: #1102417 + * NFS: Ensure that we free the rpc_task after read and write cleanups are + done + - LP: #1102417 + * ACPI / scan: Do not use dummy HID for system bus ACPI nodes + - LP: #1102417 + * mm: limit mmu_gather batching to fix soft lockups on !CONFIG_PREEMPT + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: correct handling of CR_24H bitfield + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct + rtc_time + - LP: #1102417 + * printk: fix incorrect length from print_time() when seconds > 99999 + - LP: #1102417 + * PM: Move disabling/enabling runtime PM to late suspend/early resume + - LP: #1102417 + * signals: sys_ssetmask() uses uninitialized newmask + - LP: #1102417 + * ext4: release buffer in failed path in dx_probe() + - LP: #1102417 + * ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) + - LP: #1096789, #1102417 + * drm/prime: drop reference on imported dma-buf come from gem + - LP: #1102417 + * i915: ensure that VGA plane is disabled + - LP: #1102417 + * mvsas: Fix oops when ata commond timeout. + - LP: #1102417 + * staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC + - LP: #1102417 + * iscsi-target: Fix CmdSN comparison (use cmd->cmd_sn instead of + cmd->stat_sn) + - LP: #1102417 + * Linux 3.5.7.3 + - LP: #1102417 + * usb: gadget: dummy: fix enumeration with g_multi + - LP: #1106966 + * usb: musb: core: print new line in the driver banner again + - LP: #1106966 + * ASoC: pcm: allow backend hardware to be freed in pause state + - LP: #1106966 + * ASoC: wm2200: Fix setting dai format in wm2200_set_fmt + - LP: #1106966 + * mac80211: fix ibss scanning + - LP: #1106966 + * mac80211: use del_timer_sync for final sta cleanup timer deletion + - LP: #1106966 + * mac80211: fix dtim_period in hidden SSID AP association + - LP: #1106966 + * xhci: Handle HS bulk/ctrl endpoints that don't NAK. + - LP: #1106966 + * USB: Handle auto-transition from hot to warm reset. + - LP: #1106966 + * USB: Ignore xHCI Reset Device status. + - LP: #1106966 + * USB: Allow USB 3.0 ports to be disabled. + - LP: #1106966 + * USB: Increase reset timeout. + - LP: #1106966 + * USB: Ignore port state until reset completes. + - LP: #1106966 + * USB: Handle warm reset failure on empty port. + - LP: #1106966 + * xhci: Avoid "dead ports", add roothub port polling. + - LP: #1106966 + * ASoC: wm2200: Remove DSP B and left justified AIF modes + - LP: #1106966 + * ASoC: wm5100: Remove DSP B and left justified formats + - LP: #1106966 + * mwifiex: check wait_event_interruptible return value + - LP: #1106966 + * ASoC: wm2000: Fix sense of speech clarity enable + - LP: #1106966 + * drm/i915; Only increment the user-pin-count after successfully pinning + the bo + - LP: #1106966 + * samsung-laptop: Add quirk for broken acpi_video backlight on N250P + - LP: #1086921, #1106966 + * sony-laptop: fix SNC buffer calls when SN06 returns Integers + - LP: #1106966 + * staging: r8712u: Add new device ID + - LP: #1106966 + * b43: Fix firmware loading when driver is built into the kernel + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_init() + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_add() + - LP: #1106966 + * staging: comedi: fix minimum AO period for NI 625x and NI 628x + - LP: #1106966 + * staging: comedi: prevent auto-unconfig of manually configured devices + - LP: #1106966 + * staging: comedi: comedi_test: fix race when cancelling command + - LP: #1106966 + * regulator: max8997: Use uV in voltage_map_desc + - LP: #1106966 + * regulator: max8998: Convert to regulator_list_voltage_linear() + - LP: #1106966 + * regulator: max8998: Convert to set_voltage_sel and + regulator_map_voltage_linear + - LP: #1106966 + * regulator: max8998: Use uV in voltage_map_desc + - LP: #1106966 + * ALSA: pxa27x: fix ac97 cold reset + - LP: #1106966 + * ALSA: pxa27x: fix ac97 warm reset + - LP: #1106966 + * SUNRPC: Ensure we release the socket write lock if the rpc_task exits + early + - LP: #1106966 + * target: use correct sense code for LUN communication failure + - LP: #1106966 + * regulator: max8998: Ensure enough delay time for + max8998_set_voltage_buck_time_sel + - LP: #1106966 + * tcm_fc: Do not indicate retry capability to initiators + - LP: #1106966 + * tcm_fc: Do not report target role when target is not defined + - LP: #1106966 + * target: Fix use-after-free in LUN RESET handling + - LP: #1106966 + * target: Release se_cmd when LUN lookup fails for TMR + - LP: #1106966 + * sh: Fix FDPIC binary loader + - LP: #1106966 + * USB: option: Add new MEDIATEK PID support + - LP: #1106966 + * USB: option: blacklist network interface on ZTE MF880 + - LP: #1106966 + * USB: option: add Telekom Speedstick LTE II + - LP: #1106966 + * USB: option: add Nexpring NP10T terminal id + - LP: #1106966 + * Add CDC-ACM support for the CX93010-2x UCMxx USB Modem + - LP: #1106966 + * USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i" + - LP: #1106966 + * USB: hub: handle claim of enabled remote wakeup after reset + - LP: #1106966 + * mm: compaction: fix echo 1 > compact_memory return error issue + - LP: #1106966 + * mm: use aligned zone start for pfn_to_bitidx calculation + - LP: #1106966 + * mm: bootmem: fix free_all_bootmem_core() with odd bitmap alignment + - LP: #1106966 + * audit: create explicit AUDIT_SECCOMP event type + - LP: #1106966 + * USB: Add device quirk for Microsoft VX700 webcam + - LP: #1106966 + * drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards + - LP: #1106966 + * drm/nv17-50: restore fence buffer on resume + - LP: #1106966 + * usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added + - LP: #1106966 + * udldrmfb: Fix EDID not working with monitors with EDID extension blocks + - LP: #1106966 + * udldrmfb: udl_get_edid: usb_control_msg buffer must not be on the stack + - LP: #1106966 + * udldrmfb: udl_get_edid: drop unneeded i-- + - LP: #1106966 + * s390/time: fix sched_clock() overflow + - LP: #1106966 + * rt2800usb: Add support for 2001:3c1e (D-Link DWA-125 rev B1) USB Wi-Fi + adapter + - LP: #1085351, #1106966 + * drm/radeon: fix NULL pointer dereference in UMS mode + - LP: #1106966 + * drm/radeon: fix a bogus kfree + - LP: #1106966 + * ALSA: usb - fix race in creation of M-Audio Fast track pro driver + - LP: #1095315, #1106966 + * x86/Sandy Bridge: reserve pages when integrated graphics is present + - LP: #1106966 + * USB: io_ti: Fix NULL dereference in chase_port() + - LP: #1106966 + * intel-iommu: Prevent devices with RMRRs from being placed into SI + Domain + - LP: #1106966 + * igb: release already assigned MSI-X interrupts if setup fails + - LP: #1106966 + * usb: chipidea: Allow disabling streaming not only in udc mode + - LP: #1106966 + * sd: Reshuffle init_sd to avoid crash + - LP: #1106966 + * Linux 3.5.7.4 + - LP: #1106966 + * HID: Add suport for the brightness control keys on HP keyboards + - LP: #1007575 + * efi: Make 'efi_enabled' a function to query EFI facilities + - LP: #1111689 + * samsung-laptop: Disable on EFI hardware + - LP: #1111689 + * inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #1110605 + * fsnotify: introduce fsnotify_get_group() + - LP: #1110605 + * fsnotify: use reference counting for groups + - LP: #1110605 + * fsnotify: take groups mark_lock before mark lock + - LP: #1110605 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1110605 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1110605 + * audit: clean up refcounting in audit-tree + - LP: #1110605 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1110605 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1110605 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1110605 + * fsnotify: change locking order + - LP: #1110605 + * drivers/mfd: Add realtek pcie card reader driver + - LP: #1057089 + * mfd: rtsx: Add output voltage switch hook + - LP: #1057089 + * mfd: rtsx: Fix oops when rtsx_pci_sdmmc is not probed + - LP: #1057089 + * mmc: Add realtek pcie sdmmc host driver + - LP: #1057089 + * mmc: rtsx: Remove a duplicate command in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Configure SD_CFG2 register in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Explicitely include slab.h in rtsx_pci_sdmmc.c + - LP: #1057089 + * mmc: rtsx: Call MFD hook to switch output voltage + - LP: #1057089 + * drivers/memstick: Add realtek pcie memstick host driver + - LP: #1057089 + + -- Luis Henriques Wed, 06 Feb 2013 10:41:09 +0000 + +linux (3.5.0-23.35) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1103932 + + [ Upstream Kernel Changes ] + + * Revert "fsnotify: change locking order" + - LP: #1101666 + * Revert "fsnotify: dont put marks on temporary list when clearing marks + by group" + - LP: #1101666 + * Revert "fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark()" + - LP: #1101666 + * Revert "fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1101666 + * Revert "fsnotify: use a mutex instead of a spinlock to protect a groups + mark list" + - LP: #1101666 + * Revert "fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed" + - LP: #1101666 + * Revert "fsnotify: take groups mark_lock before mark lock" + - LP: #1101666 + * Revert "fsnotify: use reference counting for groups" + - LP: #1101666 + * Revert "fsnotify: introduce fsnotify_get_group()" + - LP: #1101666 + * radeon/kms: force rn50 chip to always report connected on analog output + - LP: #1103320 + + -- Luis Henriques Thu, 24 Jan 2013 11:06:25 +0000 + +linux (3.5.0-22.34) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1097343 + + [ Chris J Arges ] + + * Revert "SAUCE: fsnotify: dont put marks on temporary list when clearing + marks by group" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce locked versions of + fsnotify_add_mark() and fsnotify_remove_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use a mutex instead of a spinlock to protect a + groups mark list" + - LP: #1096137 + * Revert "SAUCE: fanotify: add an extra flag to mark_remove_from_mask + that indicates wheather a mark should be destroyed" + - LP: #1096137 + * Revert "SAUCE: fsnotify: take groups mark_lock before mark lock" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use reference counting for groups" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce fsnotify_get_group()" + - LP: #1096137 + + [ Upstream Kernel Changes ] + + * fsnotify: introduce fsnotify_get_group() + - LP: #1096137 + * fsnotify: use reference counting for groups + - LP: #1096137 + * fsnotify: take groups mark_lock before mark lock + - LP: #1096137 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1096137 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1096137 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1096137 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1096137 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1096137 + * fsnotify: change locking order + - LP: #1096137 + + -- Luis Henriques Tue, 08 Jan 2013 17:54:01 +0000 + +linux (3.5.0-22.33) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1095349 + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Colin Ian King ] + + * SAUCE: samsung-laptop: disable in UEFI mode + - LP: #1040557 + + [ Kees Cook ] + + * SAUCE: exec: do not leave bprm->interp on stack + - LP: #1068888 + - CVE-2012-4530 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Lino Sanfilippo ] + + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * Revert "Staging: Android alarm: IOCTL command encoding fix" + - LP: #1091251 + * Revert "sched, autogroup: Stop going ahead if autogroup is disabled" + - LP: #1091251 + * Revert "serial: omap: fix software flow control" + - LP: #1091251 + * drm/i915: EBUSY status handling added to i915_gem_fault(). + - LP: #1087302 + * MISC: hpilo, remove pci_disable_device + - LP: #1087860 + * asix: Adds support for Lenovo 10/100 USB dongle. + - LP: #1087480 + * hpsa: gen8plus Smart Array IDs + - LP: #1089623 + * KVM: x86: invalid opcode oops on SET_SREGS with OSXSAVE bit set + (CVE-2012-4461) + - LP: #1089604 + - CVE-2012-4461 + * gpio-timberdale: fix a potential wrapping issue + - LP: #1091251 + * cfg80211: fix antenna gain handling + - LP: #1091251 + * drm/i915: fix overlay on i830M + - LP: #1091251 + * drm/i915: clear the entire sdvo infoframe buffer + - LP: #1091251 + * mac80211: use blacklist for duplicate IE check + - LP: #1091251 + * mac80211: Only process mesh config header on frames that RA_MATCH + - LP: #1091251 + * mac80211: don't inspect Sequence Control field on control frames + - LP: #1091251 + * gpiolib: Don't return -EPROBE_DEFER to sysfs, or for invalid gpios + - LP: #1091251 + * qla2xxx: Update target lookup session tables when a target session + changes + - LP: #1091251 + * mac80211: fix SSID copy on IBSS JOIN + - LP: #1091251 + * wireless: drop invalid mesh address extension frames + - LP: #1091251 + * mac80211: check management frame header length + - LP: #1091251 + * mac80211: verify that skb data is present + - LP: #1091251 + * mac80211: make sure data is accessible in EAPOL check + - LP: #1091251 + * target: Fix double-free of se_cmd in target_complete_tmr_failure + - LP: #1091251 + * ext4: fix unjournaled inode bitmap modification + - LP: #1091251 + * ath9k: fix stale pointers potentially causing access to free'd skbs + - LP: #1091251 + * floppy: don't call alloc_ordered_workqueue inside the alloc_disk loop + - LP: #1091251 + * floppy: do put_disk on current dr if blk_init_queue fails + - LP: #1091251 + * floppy: properly handle failure on add_disk loop + - LP: #1091251 + * ALSA: PCM: Fix some races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Use rwsem for disconnect protection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection in mixer_quirks.c + - LP: #1091251 + * ALSA: Add a reference counter to card instance + - LP: #1091251 + * ALSA: Avoid endless sleep after disconnect + - LP: #1091251 + * xen/gntdev: don't leak memory from IOCTL_GNTDEV_MAP_GRANT_REF + - LP: #1091251 + * rt2800: validate step value for temperature compensation + - LP: #1091251 + * ath9k: Test for TID only in BlockAcks while checking tx status + - LP: #1091251 + * md/raid1: Fix assembling of arrays containing Replacements. + - LP: #1091251 + * Input: tsc40 - remove wrong announcement of pressure support + - LP: #1091251 + * HID: microsoft: fix invalid rdesc for 3k kbd + - LP: #1091251 + * xen/mmu: Use Xen specific TLB flush instead of the generic one. + - LP: #1091251 + * NFS: Wait for session recovery to finish before returning + - LP: #1091251 + * NFSv4.1: We must release the sequence id when we fail to get a session + slot + - LP: #1091251 + * NFSv4: nfs4_locku_done must release the sequence id + - LP: #1091251 + * NFS: fix bug in legacy DNS resolver. + - LP: #1091251 + * nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd + timeouts + - LP: #1091251 + * nfs: Show original device name verbatim in /proc/*/mount{s,info} + - LP: #1091251 + * target: Don't return success from module_init() if setup fails + - LP: #1091251 + * target: Avoid integer overflow in se_dev_align_max_sectors() + - LP: #1091251 + * iscsi-target: Fix missed wakeup race in TX thread + - LP: #1091251 + * target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path + - LP: #1091251 + * DRM/Radeon: Fix Load Detection on legacy primary DAC. + - LP: #1091251 + * ixgbe: PTP get_ts_info missing software support + - LP: #1091251 + * drm/udl: fix stride issues scanning out stride != width*bpp + - LP: #1091251 + * crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent + data corruption + - LP: #1091251 + * module: fix out-by-one error in kallsyms + - LP: #1091251 + * cifs: fix potential buffer overrun in cifs.idmap handling code + - LP: #1091251 + * ptp: update adjfreq callback description + - LP: #1091251 + * ALSA: hda: Cirrus: Fix coefficient index for beep configuration + - LP: #1091251 + * ALSA: HDA: Fix digital microphone on CS420x + - LP: #1091251 + * ALSA: hda - Force to reset IEC958 status bits for AD codecs + - LP: #1091251, #359361 + * hwmon: (w83627ehf) Force initial bank selection + - LP: #1091251 + * drm: restore open_count if drm_setup fails + - LP: #1091251 + * ALSA: hda - Fix empty DAC filling in patch_via.c + - LP: #1091251 + * ALSA: hda - Fix invalid connections in VT1802 codec + - LP: #1091251 + * xen/events: fix RCU warning, or Call idle notifier after irq_enter() + - LP: #1091251 + * mmc: sdhci: fix NULL dereference in sdhci_request() tuning + - LP: #1091251 + * ALSA: hda - Improve HP depop when system enter to S3 + - LP: #1091251 + * ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) + - LP: #1091251 + * ALSA: Fix card refcount unbalance + - LP: #1091251 + * drm/radeon/cayman: add some missing regs to the VM reg checker + - LP: #1091251 + * drm/radeon/si: add some missing regs to the VM reg checker + - LP: #1091251 + * xfs: fix buffer shudown reference count mismatch + - LP: #1091251 + * xfs: fix reading of wrapped log data + - LP: #1091251 + * virtio: Don't access index after unregister. + - LP: #1091251 + * fanotify: fix missing break + - LP: #1091251 + * mm: bugfix: set current->reclaim_state to NULL while returning from + kswapd() + - LP: #1091251 + * drm/vmwgfx: Fix hibernation device reset + - LP: #1091251 + * drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR + memory + - LP: #1091251 + * UBIFS: introduce categorized lprops counter + - LP: #1091251 + * UBIFS: fix mounting problems after power cuts + - LP: #1091251 + * USB: usb_wwan: fix bulk-urb allocation + - LP: #1091251 + * ARM: dt: tegra: fix length of pad control and mux registers + - LP: #1091251 + * futex: Handle futex_pi OWNER_DIED take over correctly + - LP: #1091251 + * mac80211: sync acccess to tx_filtered/ps_tx_buf queues + - LP: #1091251 + * iwlwifi: handle DMA mapping failures + - LP: #1091251 + * ASoC: wm8978: pll incorrectly configured when codec is master + - LP: #1091251 + * ASoC: cs42l52: fix the return value of cs42l52_set_fmt() + - LP: #1091251 + * Bluetooth: Fix having bogus entries in mgmt_read_index_list reply + - LP: #1091251 + * mac80211: don't send null data packet when not associated + - LP: #1091251 + * ASoC: dapm: Use card_list during DAPM shutdown + - LP: #1091251 + * ASoC: core: Double control update err for snd_soc_put_volsw_sx + - LP: #1091251 + * mac80211: call skb_dequeue/ieee80211_free_txskb instead of + __skb_queue_purge + - LP: #1091251 + * ALSA: hda - Add a missing quirk entry for iMac 9,1 + - LP: #1091251 + * s390/signal: set correct address space control + - LP: #1091251 + * wireless: allow 40 MHz on world roaming channels 12/13 + - LP: #1091251 + * drm/i915/sdvo: clean up connectors on intel_sdvo_init() failures + - LP: #1091251 + * s390/gup: add missing TASK_SIZE check to get_user_pages_fast() + - LP: #1091251 + * USB: option: add Novatel E362 and Dell Wireless 5800 USB IDs + - LP: #1091251 + * USB: option: add Alcatel X220/X500D USB IDs + - LP: #1091251 + * i2c-mux-pinctrl: Fix probe error path + - LP: #1091251 + * ALSA: usb-audio: Fix mutex deadlock at disconnection + - LP: #1091251 + * drm/radeon: fix logic error in atombios_encoders.c + - LP: #1091251 + * ttm: Clear the ttm page allocated from high memory zone correctly + - LP: #1091251 + * ARM: imx: ehci: fix host power mask bit + - LP: #1091251 + * memcg: oom: fix totalpages calculation for memory.swappiness==0 + - LP: #1091251 + * memcg: fix hotplugged memory zone oops + - LP: #1091251 + * tmpfs: fix shmem_getpage_gfp() VM_BUG_ON + - LP: #1091251 + * tmpfs: change final i_blocks BUG to WARNING + - LP: #1091251 + * mtd: ofpart: Fix incorrect NULL check in parse_ofoldpart_partitions() + - LP: #1091251 + * mtd: slram: invalid checking of absolute end address + - LP: #1091251 + * jffs2: Fix lock acquisition order bug in jffs2_write_begin + - LP: #1091251 + * isci: copy fis 0x34 response into proper buffer + - LP: #1091251 + * mac80211: deinitialize ibss-internals after emptiness check + - LP: #1091251 + * iwlwifi: fix monitor mode FCS flag + - LP: #1091251 + * fix virtual aliasing issue in get_shared_area() + - LP: #1091251 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1091251 + * mwifiex: fix system hang issue in cmd timeout error case + - LP: #1091251 + * mwifiex: report error to MMC core if we cannot suspend + - LP: #1091251 + * xfs: drop buffer io reference when a bad bio is built + - LP: #1091251 + * m68k: fix sigset_t accessor functions + - LP: #1091251 + * ALSA: ua101, usx2y: fix broken MIDI output + - LP: #1091251 + * sparc64: not any error from do_sigaltstack() should fail rt_sigreturn() + - LP: #1091251 + * reiserfs: Fix lock ordering during remount + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_on() with write lock + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_write() with write lock + - LP: #1091251 + * reiserfs: Move quota calls out of write lock + - LP: #1091251 + * md: Reassigned the parameters if read_seqretry returned true in func + md_is_badblock. + - LP: #1091251 + * md: Avoid write invalid address if read_seqretry returned true. + - LP: #1091251 + * drm/radeon/dce4+: don't use radeon_crtc for vblank callback + - LP: #1091251 + * drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2) + - LP: #1091251 + * drm/radeon: properly track the crtc not_enabled case + evergreen_mc_stop() + - LP: #1091251 + * radeon: add AGPMode 1 quirk for RV250 + - LP: #1091251 + * x86, efi: Fix processor-specific memcpy() build error + - LP: #1091251 + * x86-32: Fix invalid stack address while in softirq + - LP: #1091251 + * x86-32: Export kernel_stack_pointer() for modules + - LP: #1091251 + * x86, microcode, AMD: Add support for family 16h processors + - LP: #1091251 + * ALSA: hda - Add new codec ALC283 ALC290 support + - LP: #1091251 + * ALSA: hda - Add support for Realtek ALC292 + - LP: #1081466, #1091251 + * selinux: fix sel_netnode_insert() suspicious rcu dereference + - LP: #1091251 + * drm/radeon: add new SI pci id + - LP: #1091251 + * md/raid10: close race that lose writes lost when replacement completes. + - LP: #1091251 + * md/raid10: decrement correct pending counter when writing to + replacement. + - LP: #1091251 + * fix user-triggerable panic on parisc + - LP: #1091251 + * dm: fix deadlock with request based dm and queue request_fn recursion + - LP: #1091251 + * block: Don't access request after it might be freed + - LP: #1091251 + * PM / QoS: fix wrong error-checking condition + - LP: #1091251 + * i7300_edac: Fix error flag testing + - LP: #1091251 + * iwlwifi: fix the basic CCK rates calculation + - LP: #1091251 + * Dove: Attempt to fix PMU/RTC interrupts + - LP: #1091251 + * Dove: Fix irq_to_pmu() + - LP: #1091251 + * ARM: Kirkwood: Update PCI-E fixup + - LP: #1091251 + * jbd: Fix lock ordering bug in journal_unmap_buffer() + - LP: #1091251 + * can: peak_usb: fix hwtstamp assignment + - LP: #1091251 + * can: bcm: initialize ifindex for timeouts without previous frame + reception + - LP: #1091251 + * writeback: put unused inodes to LRU after writeback completion + - LP: #1091251 + * futex: avoid wake_futex() for a PI futex_q + - LP: #1091251 + * mm/vmemmap: fix wrong use of virt_to_page + - LP: #1091251 + * mm: vmscan: fix endless loop in kswapd balancing + - LP: #1091251 + * mm: soft offline: split thp at the beginning of soft_offline_page() + - LP: #1091251 + * x86, fpu: Avoid FPU lazy restore after suspend + - LP: #1091251 + * workqueue: exit rescuer_thread() as TASK_RUNNING + - LP: #1091251 + * Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts" + - LP: #1091251 + * mmc: sh-mmcif: avoid oops on spurious interrupts (second try) + - LP: #1091251 + * tmpfs: fix shared mempolicy leak + - LP: #1091251 + * HID: microsoft: do not use compound literal - fix build + - LP: #1091251 + * ACPI video: Ignore errors after _DOD evaluation. + - LP: #1091251 + * SUNRPC: Fix a UDP transport regression + - LP: #1091251 + * SUNRPC: Set alloc_slot for backchannel tcp ops + - LP: #1091251 + * sparc64: fix ptrace interaction with force_successful_syscall_return() + - LP: #1091251 + * sparc64: Like x86 we should check current->mm during perf backtrace + generation. + - LP: #1091251 + * sparc64: Fix bit twiddling in sparc_pmu_enable_event(). + - LP: #1091251 + * sparc64: do not clobber personality flags in sys_sparc64_personality() + - LP: #1091251 + * sparc64: Be less verbose during vmemmap population. + - LP: #1091251 + * netlink: add reference of module in netlink_dump_start + - LP: #1091251 + * infiniband: pass rdma_cm module to netlink_dump_start + - LP: #1091251 + * net: remove skb recycling + - LP: #1091251 + * net: Fix skb_under_panic oops in neigh_resolve_output + - LP: #1091251 + * skge: Add DMA mask quirk for Marvell 88E8001 on ASUS P5NSLI motherboard + - LP: #1091251 + * vlan: don't deliver frames for unknown vlans to protocols + - LP: #1091251 + * RDS: fix rds-ping spinlock recursion + - LP: #1091251 + * tcp: resets are misrouted + - LP: #1091251 + * ipv6: addrconf: fix /proc/net/if_inet6 + - LP: #1091251 + * drm/i915: Use cpu relocations if the object is in the GTT but not + mappable + - LP: #1091251 + * floppy: destroy floppy workqueue before cleaning up the queue + - LP: #1091251 + * drm/nouveau: silence modesetting spam on pre-gf8 chipsets + - LP: #1091251 + * drm/nouveau: fix suspend/resume when in headless mode + - LP: #1091251 + * drm/nouveau: headless mode by default if pci class != vga display + - LP: #1091251 + * sky2: Fix for interrupt handler + - LP: #1091251 + * batman-adv: Fix broadcast packet CRC calculation + - LP: #1091251 + * drm/radeon: fix typo in evergreen_mc_resume() + - LP: #1091251 + * GFS2: Test bufdata with buffer locked and gfs2_log_lock held + - LP: #1091251 + * USB: mos7840: remove unused variable + - LP: #1091251 + * sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() + - LP: #1091251 + * netlink: use kfree_rcu() in netlink_release() + - LP: #1091251 + * tcp: fix FIONREAD/SIOCINQ + - LP: #1091251 + * ipv6: Set default hoplimit as zero. + - LP: #1091251 + * net: usb: Fix memory leak on Tx data path + - LP: #1091251 + * drivers/net/ethernet/nxp/lpc_eth.c: Call mdiobus_unregister before + mdiobus_free + - LP: #1091251 + * l2tp: fix oops in l2tp_eth_create() error path + - LP: #1091251 + * tcp-repair: Handle zero-length data put in rcv queue + - LP: #1091251 + * net: inet_diag -- Return error code if protocol handler is missed + - LP: #1091251 + * af-packet: fix oops when socket is not present + - LP: #1091251 + * ipv6: send unsolicited neighbour advertisements to all-nodes + - LP: #1091251 + * r8169: allow multicast packets on sub-8168f chipset. + - LP: #1091251 + * r8169: Fix WoL on RTL8168d/8111d. + - LP: #1091251 + * r8169: use unlimited DMA burst for TX + - LP: #1091251 + * netfilter: Mark SYN/ACK packets as invalid from original direction + - LP: #1091251 + * netfilter: Validate the sequence number of dataless ACK packets as well + - LP: #1091251 + * netfilter: nf_nat: don't check for port change on ICMP tuples + - LP: #1091251 + * ipv4: avoid undefined behavior in do_ip_setsockopt() + - LP: #1091251 + * ipv6: setsockopt(IPIPPROTO_IPV6, IPV6_MINHOPCOUNT) forgot to set return + value + - LP: #1091251 + * net: correct check in dev_addr_del() + - LP: #1091251 + * net-rps: Fix brokeness causing OOO packets + - LP: #1091251 + * tcp: fix retransmission in repair mode + - LP: #1091251 + * GFS2: Don't call file_accessed() with a shared glock + - LP: #1091251 + * get_dvb_firmware: fix download site for tda10046 firmware + - LP: #1091251 + * ixgbe: add support for X540-AT1 + - LP: #1091251 + * fimc-lite: Don't use mutex_lock_interruptible() in device release() + - LP: #1091251 + * NFC: pn533: Fix use after free + - LP: #1091251 + * NFC: pn533: Fix mem leak in pn533_in_dep_link_up + - LP: #1091251 + * HID: add quirk for Freescale i.MX28 ROM recovery + - LP: #1091251 + * NFC: Fix nfc_llcp_local chained list insertion + - LP: #1091251 + * bas_gigaset: fix pre_reset handling + - LP: #1091251 + * watchdog: using u64 in get_sample_period() + - LP: #1091251 + * sata_svw: check DMA start bit before reset + - LP: #1091251 + * bnx2x: remove redundant warning log + - LP: #1091251 + * x86, amd: Disable way access filter on Piledriver CPUs + - LP: #1091251 + * telephony: ijx: buffer overflow in ixj_write_cid() + - LP: #1091251 + * i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard + - LP: #1091251 + * drm/i915: Add no-lvds quirk for Supermicro X7SPA-H + - LP: #1091251 + * ACPI: missing break + - LP: #1091251 + * 8139cp: revert "set ring address before enabling receiver" + - LP: #1091251 + * ASoC: dmaengine: Correct Makefile when sound is built as module + - LP: #1091251 + * i82975x_edac: Fix dimm label initialization + - LP: #1091251 + * drm/i915: do not ignore eDP bpc settings from vbt + - LP: #1091251 + * drm/i915: do not default to 18 bpp for eDP if missing from VBT + - LP: #1091251 + * Input: matrix-keymap - provide proper module license + - LP: #1091251 + * Linux 3.5.7.2 + - LP: #1091251 + * exec: use -ELOOP for max recursion depth + - LP: #1068888 + - CVE-2012-4530 + * ALSA: hda - bug fix for invalid connection list of Haswell HDMI codec + pins + - LP: #1095242 + + -- Brad Figg Wed, 02 Jan 2013 12:24:40 -0800 + +linux (3.5.0-21.32) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1088979 + * SAUCE: i915_hsw: move i915_hsw_enabled symbol to intel_ips + - LP: #1087622 + + -- Luis Henriques Tue, 11 Dec 2012 16:55:32 +0000 + +linux (3.5.0-20.31) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1086759 + + [ Ben Widawsky ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_WAIT_TIMEOUT + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_CONTEXT_[CREATE,DESTROY] + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: add register read IOCTL + - LP: #1085245 + * SAUCE: i915_hsw: Include #define i915_execbuffer2_[set,get]_context_id + - LP: #1085245 + + [ Chris Wilson ] + + * SAUCE: i915_hsw: Include #define I915_GEM_PARAM_HAS_SEMAPHORES + - LP: #1085245 + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_SECURE_BATCHES + - LP: #1085245 + + [ Daniel Vetter ] + + * SAUCE: i915_hsw: drm/i915: call intel_enable_gtt + - LP: #1085245 + * SAUCE: i915_hsw: drm: add helper to sort panels to the head of the + connector list + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link bw helpers + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract drm_dp_max_lane_count helper + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_channel_eq_ok + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract helpers to compute new training values + from sink request + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_clock_recovery_ok + - LP: #1085245 + + [ Dave Airlie ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_PRIME_VMAP_FLUSH + - LP: #1085245 + + [ Leann Ogasawara ] + + * SAUCE: i915_hsw: Provide an ubuntu/i915 driver for Haswell graphics + - LP: #1085245 + * SAUCE: i915_hsw: Revert "drm: Make the .mode_fixup() operations mode + argument a const pointer" for ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Rename ubuntu/i915 driver i915_hsw + - LP: #1085245 + * SAUCE: i915_hsw: Only support Haswell with ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_WAIT + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link train delay functions from radeon + - LP: #1085245 + * SAUCE: i915_hsw: drm/dp: Update DPCD defines + - LP: #1085245 + * SAUCE: i915_hsw: Update intel_ips.h file location + - LP: #1085245 + * SAUCE: i915_hsw: Provide updated drm_mm.h and drm_mm.c for ubuntu/i915 + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Stop using AGP layer for GEN6+ + - LP: #1085245 + * SAUCE: i915_hsw: Add i915_hsw_gpu_*() calls for ubuntu/i915 + - LP: #1085245 + * i915_hsw: [Config] Enable CONFIG_DRM_I915_HSW=m + - LP: #1085245 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: fix hsw_fdi_link_train "retry" code + - LP: #1085245 + * SAUCE: drm/i915: reject modes the LPT FDI receiver can't handle + - LP: #1085245 + * SAUCE: drm/i915: add support for mPHY destination on intel_sbi_{read, + write} + - LP: #1085245 + * SAUCE: drm/i915: add lpt_init_pch_refclk + - LP: #1085245 + * SAUCE: drm/i915: set the LPT FDI RX polarity reversal bit when needed + - LP: #1085245 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + + [ Upstream Kernel Changes ] + + * Revert "cgroup: Drop task_lock(parent) on cgroup_fork()" + - LP: #1084539 + * Revert "cgroup: Remove task_lock() from cgroup_post_fork()" + - LP: #1084539 + * Revert "x86/mm: Fix the size calculation of mapping tables" + - LP: #1084539 + * Revert "SUNRPC: Ensure we close the socket on EPIPE errors too..." + - LP: #1084539 + * Revert "ath9k_hw: Updated AR9003 tx gain table for 5GHz" + - LP: #1084539 + * Revert "sched: Add missing call to calc_load_exit_idle()" + - LP: #1084539 + * net: fix secpath kmemleak + - LP: #1065434 + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * e1000e: add device IDs for i218 + - LP: #1081796 + * bonding: Bonding driver does not consider the gso_max_size/gso_max_segs + setting of slave devices. + - LP: #1078184 + * mm/hotplug: correctly add new zone to all other nodes' zone lists + - LP: #1079860 + - CVE-2012-5517 + * xen: enable platform-pci only in a Xen guest + - LP: #1081054 + * udf: fix retun value on error path in udf_load_logicalvol + - LP: #1084539 + * usb: gadget: at91_udc: fix dt support + - LP: #1084539 + * netfilter: nf_nat_sip: fix incorrect handling of EBUSY for RTCP + expectation + - LP: #1084539 + * netfilter: nf_nat_sip: fix via header translation with multiple + parameters + - LP: #1084539 + * netfilter: nf_ct_expect: fix possible access to uninitialized timer + - LP: #1084539 + * netfilter: xt_limit: have r->cost != 0 case work + - LP: #1084539 + * netfilter: nf_conntrack: fix racy timer handling with reliable events + - LP: #1084539 + * netfilter: nfnetlink_log: fix NLA_PUT macro removal bug + - LP: #1084539 + * MIPS: ath79: Fix CPU/DDR frequency calculation for SRIF PLLs + - LP: #1084539 + * jbd: Fix assertion failure in commit code due to lacking transaction + credits + - LP: #1084539 + * nfsd4: fix nfs4 stateid leak + - LP: #1084539 + * NFSD: pass null terminated buf to kstrtouint() + - LP: #1084539 + * mfd: 88pm860x: Move _IO resources out of ioport_ioresource + - LP: #1084539 + * target: support zero allocation length in INQUIRY + - LP: #1084539 + * target: fix truncation of mode data, support zero allocation length + - LP: #1084539 + * target: fix return code in target_core_init_configfs error path + - LP: #1084539 + * powerpc/eeh: Lock module while handling EEH event + - LP: #1084539 + * SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT + - LP: #1084539 + * ext4: remove erroneous ext4_superblock_csum_set() in update_backups() + - LP: #1084539 + * block: remove the duplicated setting for congestion_threshold + - LP: #1084539 + * block: lift the initial queue bypass mode on blk_register_queue() + instead of blk_init_allocated_queue() + - LP: #1084539 + * block: fix request_queue->flags initialization + - LP: #1084539 + * viafb: don't touch clock state on OLPC XO-1.5 + - LP: #1084539 + * qla2xxx: Fix endianness of task management response code + - LP: #1084539 + * iscsi-target: Correctly set 0xffffffff field within ISCSI_OP_REJECT PDU + - LP: #1084539 + * drm/i915: use adjusted_mode instead of mode for checking the 6bpc force + flag + - LP: #1084539 + * kbuild: Do not package /boot and /lib in make tar-pkg + - LP: #1084539 + * module: taint kernel when lve module is loaded + - LP: #1084539 + * mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver + - LP: #1084539 + * nfsd4: don't pin clientids to pseudoflavors + - LP: #1084539 + * lockd: use rpc client's cl_nodename for id encoding + - LP: #1084539 + * pnfsblock: fix partial page buffer wirte + - LP: #1084539 + * pnfsblock: fix non-aligned DIO read + - LP: #1084539 + * pnfsblock: fix non-aligned DIO write + - LP: #1084539 + * target/file: Re-enable optional fd_buffered_io=1 operation + - LP: #1084539 + * iscsi-target: Add explicit set of cache_dynamic_acls=1 for TPG + demo-mode + - LP: #1084539 + * iscsit: remove incorrect unlock in iscsit_build_sendtargets_resp + - LP: #1084539 + * iscsi-target: Bump defaults for nopin_timeout + nopin_response_timeout + values + - LP: #1084539 + * drivers/dma/dmaengine.c: lower the priority of 'failed to get' dma + channel message + - LP: #1084539 + * ath9k: use ieee80211_free_txskb + - LP: #1084539 + * ALSA: hda - Fix hang caused by race during suspend. + - LP: #1084539 + * ACPI: EC: Make the GPE storm threshold a module parameter + - LP: #1084539 + * ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop + - LP: #1084539 + * mmc: sdhci-s3c: fix the wrong number of max bus clocks + - LP: #1084539 + * mac80211: use ieee80211_free_txskb to fix possible skb leaks + - LP: #1084539 + * ARM: OMAP: counter: add locking to read_persistent_clock + - LP: #1084539 + * ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels + - LP: #1084539 + * scsi_debug: Fix off-by-one bug when unmapping region + - LP: #1084539 + * storvsc: Account for in-transit packets in the RESET path + - LP: #1084539 + * firewire: cdev: fix user memory corruption (i386 userland on amd64 + kernel) + - LP: #1084539 + * timers: Fix endless looping between cascade() and internal_add_timer() + - LP: #1084539 + * timekeeping: Cast raw_interval to u64 to avoid shift overflow + - LP: #1084539 + * video/udlfb: fix line counting in fb_write + - LP: #1084539 + * tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking + - LP: #1084539 + * ALSA: hda - Add missing hda_gen_spec to struct via_spec + - LP: #1084539 + * ALSA: hda - Fix memory leaks at error path in patch_cirrus.c + - LP: #1084539 + * autofs4 - fix reset pending flag on mount fail + - LP: #1084539 + * pktgen: fix crash when generating IPv6 packets + - LP: #1084539 + * md/raid10: use correct limit variable + - LP: #1084539 + * mips,kgdb: fix recursive page fault with CONFIG_KPROBES + - LP: #1084539 + * kdb,vt_console: Fix missed data due to pager overruns + - LP: #1084539 + * xen/bootup: allow read_tscp call for Xen PV guests. + - LP: #1084539 + * xen/bootup: allow {read|write}_cr8 pvops call. + - LP: #1084539 + * libceph: eliminate connection state "DEAD" + - LP: #1084539 + * libceph: kill bad_proto ceph connection op + - LP: #1084539 + * libceph: rename socket callbacks + - LP: #1084539 + * libceph: rename kvec_reset and kvec_add functions + - LP: #1084539 + * libceph: embed ceph messenger structure in ceph_client + - LP: #1084539 + * libceph: start separating connection flags from state + - LP: #1084539 + * libceph: start tracking connection socket state + - LP: #1084539 + * libceph: provide osd number when creating osd + - LP: #1084539 + * libceph: set CLOSED state bit in con_init + - LP: #1084539 + * libceph: embed ceph connection structure in mon_client + - LP: #1084539 + * libceph: drop connection refcounting for mon_client + - LP: #1084539 + * libceph: init monitor connection when opening + - LP: #1084539 + * libceph: fully initialize connection in con_init() + - LP: #1084539 + * libceph: tweak ceph_alloc_msg() + - LP: #1084539 + * libceph: have messages point to their connection + - LP: #1084539 + * libceph: have messages take a connection reference + - LP: #1084539 + * libceph: make ceph_con_revoke() a msg operation + - LP: #1084539 + * libceph: make ceph_con_revoke_message() a msg op + - LP: #1084539 + * libceph: fix overflow in __decode_pool_names() + - LP: #1084539 + * libceph: fix overflow in osdmap_decode() + - LP: #1084539 + * libceph: fix overflow in osdmap_apply_incremental() + - LP: #1084539 + * libceph: transition socket state prior to actual connect + - LP: #1084539 + * libceph: fix NULL dereference in reset_connection() + - LP: #1084539 + * libceph: use con get/put methods + - LP: #1084539 + * libceph: drop ceph_con_get/put helpers and nref member + - LP: #1084539 + * libceph: encapsulate out message data setup + - LP: #1084539 + * libceph: encapsulate advancing msg page + - LP: #1084539 + * libceph: don't mark footer complete before it is + - LP: #1084539 + * libceph: move init_bio_*() functions up + - LP: #1084539 + * libceph: move init of bio_iter + - LP: #1084539 + * libceph: don't use bio_iter as a flag + - LP: #1084539 + * libceph: SOCK_CLOSED is a flag, not a state + - LP: #1084539 + * libceph: don't change socket state on sock event + - LP: #1084539 + * libceph: just set SOCK_CLOSED when state changes + - LP: #1084539 + * libceph: don't touch con state in con_close_socket() + - LP: #1084539 + * libceph: clear CONNECTING in ceph_con_close() + - LP: #1084539 + * libceph: clear NEGOTIATING when done + - LP: #1084539 + * libceph: define and use an explicit CONNECTED state + - LP: #1084539 + * libceph: separate banner and connect writes + - LP: #1084539 + * libceph: distinguish two phases of connect sequence + - LP: #1084539 + * libceph: small changes to messenger.c + - LP: #1084539 + * libceph: add some fine ASCII art + - LP: #1084539 + * libceph: set peer name on con_open, not init + - LP: #1084539 + * libceph: initialize mon_client con only once + - LP: #1084539 + * libceph: allow sock transition from CONNECTING to CLOSED + - LP: #1084539 + * libceph: initialize msgpool message types + - LP: #1084539 + * libceph: prevent the race of incoming work during teardown + - LP: #1084539 + * libceph: report socket read/write error message + - LP: #1084539 + * libceph: fix mutex coverage for ceph_con_close + - LP: #1084539 + * libceph: resubmit linger ops when pg mapping changes + - LP: #1084539 + * libceph: (re)initialize bio_iter on start of message receive + - LP: #1084539 + * libceph: protect ceph_con_open() with mutex + - LP: #1084539 + * libceph: reset connection retry on successfully negotiation + - LP: #1084539 + * libceph: fix fault locking; close socket on lossy fault + - LP: #1084539 + * libceph: move msgr clear_standby under con mutex protection + - LP: #1084539 + * libceph: move ceph_con_send() closed check under the con mutex + - LP: #1084539 + * libceph: drop gratuitous socket close calls in con_work + - LP: #1084539 + * libceph: close socket directly from ceph_con_close() + - LP: #1084539 + * libceph: drop unnecessary CLOSED check in socket state change callback + - LP: #1084539 + * libceph: replace connection state bits with states + - LP: #1084539 + * libceph: clean up con flags + - LP: #1084539 + * libceph: clear all flags on con_close + - LP: #1084539 + * libceph: fix handling of immediate socket connect failure + - LP: #1084539 + * libceph: revoke mon_client messages on session restart + - LP: #1084539 + * libceph: verify state after retaking con lock after dispatch + - LP: #1084539 + * libceph: avoid dropping con mutex before fault + - LP: #1084539 + * libceph: change ceph_con_in_msg_alloc convention to be less weird + - LP: #1084539 + * libceph: recheck con state after allocating incoming message + - LP: #1084539 + * libceph: fix crypto key null deref, memory leak + - LP: #1084539 + * libceph: delay debugfs initialization until we learn global_id + - LP: #1084539 + * libceph: avoid truncation due to racing banners + - LP: #1084539 + * libceph: only kunmap kmapped pages + - LP: #1084539 + * rbd: reset BACKOFF if unable to re-queue + - LP: #1084539 + * libceph: avoid NULL kref_put when osd reset races with alloc_msg + - LP: #1084539 + * ceph: fix dentry reference leak in encode_fh() + - LP: #1084539 + * ceph: Fix oops when handling mdsmap that decreases max_mds + - LP: #1084539 + * libceph: check for invalid mapping + - LP: #1084539 + * ceph: avoid 32-bit page index overflow + - LP: #1084539 + * ASoC: wm2200: Use rev A register patches on rev B + - LP: #1084539 + * ASoC: wm2200: Fix non-inverted OUT2 mute control + - LP: #1084539 + * drm/i915: remove useless BUG_ON which caused a regression in 3.5. + - LP: #1084539 + * USB: Enable LPM after a failed probe. + - LP: #1084539 + * usb: Don't enable LPM if the exit latency is zero. + - LP: #1084539 + * usb: Send Set SEL before enabling parent U1/U2 timeout. + - LP: #1084539 + * ASoC: fsi: don't reschedule DMA from an atomic context + - LP: #1084539 + * drm/i915: Set guardband clipping workaround bit in the right register. + - LP: #1084539 + * pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops + - LP: #1084539 + * hwmon: (coretemp) Add support for Atom CE4110/4150/4170 + - LP: #1084539 + * ALSA: hda - Fix registration race of VGA switcheroo + - LP: #1084539 + * usb: dwc3: gadget: fix 'endpoint always busy' bug + - LP: #1084539 + * usb: musb: am35xx: drop spurious unplugging a device + - LP: #1084539 + * drm/radeon: Don't destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy(). + - LP: #1084539 + * ALSA: hda - Always check array bounds in alc_get_line_out_pfx + - LP: #1084539 + * NLM: nlm_lookup_file() may return NLMv4-specific error codes + - LP: #1084539 + * x86: Exclude E820_RESERVED regions and memory holes above 4 GB from + direct mapping. + - LP: #1084539 + * SUNRPC: Prevent kernel stack corruption on long values of flush + - LP: #1084539 + * USB: cdc-acm: fix pipe type of write endpoint + - LP: #1084539 + * usb: acm: fix the computation of the number of data bits + - LP: #1084539 + * usb: host: xhci: New system added for Compliance Mode Patch on + SN65LVPE502CP + - LP: #1084539 + * USB: option: blacklist net interface on ZTE devices + - LP: #1084539 + * USB: option: add more ZTE devices + - LP: #1084539 + * ext4: race-condition protection for + ext4_convert_unwritten_extents_endio + - LP: #1084539 + * ext4: fix metadata checksum calculation for the superblock + - LP: #1084539 + * nohz: Fix idle ticks in cpu summary line of /proc/stat + - LP: #1084539 + * ring-buffer: Check for uninitialized cpu buffer before resizing + - LP: #1084539 + * Bluetooth: SMP: Fix setting unknown auth_req bits + - LP: #1084539 + * oprofile, x86: Fix wrapping bug in op_x86_get_ctrl() + - LP: #1084539 + * cfg80211/mac80211: avoid state mishmash on deauth + - LP: #1084539 + * mac80211: check if key has TKIP type before updating IV + - LP: #1084539 + * mac80211: use ieee80211_free_txskb in a few more places + - LP: #1084539 + * bcma: fix unregistration of cores + - LP: #1084539 + * net/wireless: ipw2200: Fix panic occurring in + ipw_handle_promiscuous_tx() + - LP: #1084539 + * iwlwifi: fix 6000 series channel switch command + - LP: #1084539 + * cgroup: notify_on_release may not be triggered in some cases + - LP: #1084539 + * dt: Document: correct tegra20/30 pinctrl slew-rate name + - LP: #1084539 + * pinctrl: tegra: set low power mode bank width to 2 + - LP: #1084539 + * pinctrl: tegra: correct bank for pingroup and drv pingroup + - LP: #1084539 + * s390: fix linker script for 31 bit builds + - LP: #1084539 + * pinctrl: remove mutex lock in groups show + - LP: #1084539 + * xen/x86: don't corrupt %eip when returning from a signal handler + - LP: #1084539 + * ALSA: hda - Fix silent headphone output from Toshiba P200 + - LP: #1084539 + * ext4: Checksum the block bitmap properly with bigalloc enabled + - LP: #1084539 + * ARM: 7559/1: smp: switch away from the idmap before updating + init_mm.mm_count + - LP: #1084539 + * usb hub: send clear_tt_buffer_complete events when canceling TT clear + work + - LP: #1084539 + * staging: comedi: amplc_pc236: fix invalid register access during detach + - LP: #1084539 + * Staging: android: binder: Fix memory leak on thread/process exit + - LP: #1084539 + * Staging: android: binder: Allow using highmem for binder buffers + - LP: #1084539 + * ext4: Avoid underflow in ext4_trim_fs() + - LP: #1084539 + * cpufreq / powernow-k8: Remove usage of smp_processor_id() in + preemptible code + - LP: #1084539 + * extcon: Unregister compat class at module unload to fix oops + - LP: #1084539 + * extcon: unregister compat link on cleanup + - LP: #1084539 + * pinctrl: fix missing unlock on error in pinctrl_groups_show() + - LP: #1084539 + * arch/tile: avoid generating .eh_frame information in modules + - LP: #1084539 + * drm/radeon: add some new SI PCI ids + - LP: #1084539 + * drm/radeon: add error output if VM CS fails on cayman + - LP: #1084539 + * xhci: endianness xhci_calculate_intel_u2_timeout + - LP: #1084539 + * xhci: fix integer overflow + - LP: #1084539 + * dmaengine: imx-dma: fix missing unlock on error in imxdma_xfer_desc() + - LP: #1084539 + * x86-64: Fix page table accounting + - LP: #1084539 + * dmaengine: sirf: fix a typo in dma_prep_interleaved + - LP: #1084539 + * dmaengine: sirf: fix a typo in moving running dma_desc to active queue + - LP: #1084539 + * amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] + - LP: #1084539 + * SUNRPC: Clear the connect flag when socket state is TCP_CLOSE_WAIT + - LP: #1084539 + * SUNRPC: Prevent races in xs_abort_connection() + - LP: #1084539 + * SUNRPC: Get rid of the xs_error_report socket callback + - LP: #1084539 + * iommu/tegra: smmu: Fix deadly typo + - LP: #1084539 + * ARM: at91/tc: fix typo in the DT document + - LP: #1084539 + * ARM: at91: at91sam9g10: fix SOC type detection + - LP: #1084539 + * ARM: at91/i2c: change id to let i2c-gpio work + - LP: #1084539 + * b43: Fix oops on unload when firmware not found + - LP: #1084539 + * USB: serial: Fix memory leak in sierra_release() + - LP: #1084539 + * x86, mm: Trim memory in memblock to be page aligned + - LP: #1084539 + * x86, mm: Use memblock memory loop instead of e820_RAM + - LP: #1084539 + * usb-storage: add unusual_devs entry for Casio EX-N1 digital camera + - LP: #1084539 + * Drivers: hv: Cleanup error handling in vmbus_open() + - LP: #1084539 + * sysfs: sysfs_pathname/sysfs_add_one: Use strlcat() instead of strcat() + - LP: #1084539 + * vhost: fix mergeable bufs on BE hosts + - LP: #1084539 + * USB: metro-usb: fix io after disconnect + - LP: #1084539 + * USB: whiteheat: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix io after disconnect + - LP: #1084539 + * USB: opticon: fix DMA from stack + - LP: #1084539 + * USB: opticon: fix memory leak in error path + - LP: #1084539 + * USB: mct_u232: fix broken close + - LP: #1084539 + * USB: sierra: fix memory leak in attach error path + - LP: #1084539 + * USB: sierra: fix memory leak in probe error path + - LP: #1084539 + * USB: mos7840: fix urb leak at release + - LP: #1084539 + * USB: mos7840: fix port-device leak in error path + - LP: #1084539 + * USB: mos7840: remove NULL-urb submission + - LP: #1084539 + * USB: mos7840: remove invalid disconnect handling + - LP: #1084539 + * ehci: fix Lucid nohandoff pci quirk to be more generic with BIOS + versions + - LP: #1084539 + * ehci: Add yet-another Lucid nohandoff pci quirk + - LP: #1084539 + * xhci: Fix potential NULL ptr deref in command cancellation. + - LP: #1084539 + * freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD + - LP: #1084539 + * mm: fix XFS oops due to dirty pages without buffers on s390 + - LP: #1084539 + * genalloc: stop crashing the system when destroying a pool + - LP: #1084539 + * drivers/rtc/rtc-imxdi.c: add missing spin lock initialization + - LP: #1084539 + * gen_init_cpio: avoid stack overflow when expanding + - LP: #1084539 + * fs/compat_ioctl.c: VIDEO_SET_SPU_PALETTE missing error check + - LP: #1084539 + * qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan + - LP: #1084539 + * efi: Defer freeing boot services memory until after ACPI init + - LP: #1084539 + * x86: efi: Turn off efi_enabled after setup on mixed fw/kernel + - LP: #1082059, #1084539 + * target: Re-add explict zeroing of INQUIRY bounce buffer memory + - LP: #1084539 + * ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and + CONFIG_VFPv3 set + - LP: #1084539 + * libceph: drop declaration of ceph_con_get() + - LP: #1084539 + * x86, mm: Find_early_table_space based on ranges that are actually being + mapped + - LP: #1084539 + * x86, mm: Undo incorrect revert in arch/x86/mm/init.c + - LP: #1084539 + * Linux 3.5.7.1 + - LP: #1084539 + * ALSA: hda - Cirrus: Correctly clear line_out_pins when moving to + speaker + - LP: #1076840 + * Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] + - LP: #898826 + * i915_hsw: drm/i915: Reserve ioctl numbers for set/get_caching + - LP: #1085245 + * i915_hsw: drm: Export drm_probe_ddc() + - LP: #1085245 + * i915_hsw: drm: remove the raw_edid field from struct drm_display_info + - LP: #1085245 + * i915_hsw: drm/i915: fix hsw uncached pte + - LP: #1085245 + * i915_hsw: drm/fb-helper: delay hotplug handling when partially bound + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_crtc_helper_set_config + - LP: #1085245 + * i915_hsw: drm/fb-helper: don't clobber output routing in setup_crtcs + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_helper_connector_dpms directly + - LP: #1085245 + * i915_hsw: drm/edid: Fix potential memory leak in edid_load() + - LP: #1085245 + + -- Luis Henriques Wed, 05 Dec 2012 11:53:06 +0000 + +linux (3.5.0-19.30) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1078041 + + [ Andy Whitcroft ] + + * [Config] update Vcs-git: to point to quantal + - LP: #1069204 + + [ Joseph Salisbury ] + + * SAUCE: ALSA: hda - add quirk for Thinkpad T430 + - LP: #1060372 + + [ Tim Gardner ] + + * [Config] CONFIG_USB_OTG=n for all but armel/armhf + - LP: #1047527 + * [Config] remove ndiswrapper from Provides: + - LP: #1076395 + * [Config] ONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + + [ Upstream Kernel Changes ] + + * kernel/sys.c: fix stack memory content leak via UNAME26 + - LP: #1065622, #1060521 + - CVE-2012-0957 + * use clamp_t in UNAME26 fix + - LP: #1065622, #1060521 + - CVE-2012-0957 + * net: fix divide by zero in tcp algorithm illinois + - LP: #1077091 + - CVE-2012-4565 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Add a load_firmware callback to struct hci_dev + - LP: #1065400 + * SAUCE: Bluetooth: Implement broadcom patchram firmware loader + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Luis Henriques Tue, 13 Nov 2012 15:49:15 +0000 + +linux (3.5.0-18.29) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1068224 + + [ Andy Whitcroft ] + + * [packaging] do not fail secure copy on older kernels + * SAUCE: efivarfs: efivarfs_file_read ensure we free data in error paths + - LP: #1063061 + * SAUCE: efivars: efivarfs_create() ensure we drop our reference on inode + on error + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() fix inode reference counts + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we free our temporary + name + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we clean up correctly on + error + - LP: #1063061 + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + + [ Jeremy Kerr ] + + * SAUCE: efi: Handle deletions and size changes in efivarfs_write_file + - LP: #1063061 + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad list additional contributors + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix lost sync upon palm contact + - LP: #1048258 + * SAUCE: input: Cypress PS/2 Trackpad fix taps turning into hardware + clicks + - LP: #1064086 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: fix crash when accessing /proc/mounts + concurrently" + - LP: #1066176 + * Revert "SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec" + - LP: #1066176 + + [ Lee, Chun-Yi ] + + * SAUCE: efi: add efivars kobject to efi sysfs folder + - LP: #1063061 + + [ Matt Fleming ] + + * SAUCE: efivarfs: Add documentation for the EFI variable filesystem + - LP: #1063061 + + [ Matthew Garrett ] + + * SAUCE: efi: Add support for a UEFI variable filesystem + - LP: #1063061 + + [ Sarveshwar Bandi ] + + * SAUCE: bridge: Pull ip header into skb->data before looking into ip + header. + - LP: #1065150 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: correctly order the ring init sequence" + - LP: #1066176 + * vfs: dcache: fix deadlock in tree traversal + - LP: #1063761 + * dm mpath: only retry ioctl when no paths if queue_if_no_path set + - LP: #1063761 + * dm: handle requests beyond end of device instead of using BUG_ON + - LP: #1063761 + * dm table: clear add_random unless all devices have it set + - LP: #1063761 + * dm verity: fix overflow check + - LP: #1063761 + * usb: gadget: make g_printer enumerate again + - LP: #1063761 + * usb: gadget: initialize the strings in tcm_usb_gadget properly + - LP: #1063761 + * USB: option: blacklist QMI interface on ZTE MF683 + - LP: #1063761 + * USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support + - LP: #1063761 + * USB: qcaux: add Pantech vendor class match + - LP: #1063761 + * usb: host: xhci: Fix Null pointer dereferencing with 71c731a for + non-x86 systems + - LP: #1063761 + * USB: serial: fix up bug with missing {} + - LP: #1063761 + * staging: speakup_soft: Fix reading of init string + - LP: #1063761 + * tty: keyboard.c: Remove locking from vt_get_leds. + - LP: #1063761 + * staging: r8712u: Do not queue cloned skb + - LP: #1063761 + * staging: comedi: s626: don't dereference insn->data + - LP: #1063761 + * staging: comedi: jr3_pci: fix iomem dereference + - LP: #1063761 + * staging: comedi: don't dereference user memory for INSN_INTTRIG + - LP: #1063761 + * staging: comedi: fix memory leak for saved channel list + - LP: #1063761 + * Remove BUG_ON from n_tty_read() + - LP: #1063761 + * TTY: ttyprintk, don't touch behind tty->write_buf + - LP: #1063761 + * serial: omap: fix software flow control + - LP: #1063761 + * serial: pl011: handle corruption at high clock speeds + - LP: #1063761 + * serial: set correct baud_base for EXSYS EX-41092 Dual 16950 + - LP: #1063761 + * tools/hv: Fix file handle leak + - LP: #1063761 + * tools/hv: Fix exit() error code + - LP: #1063761 + * tools/hv: Check for read/write errors + - LP: #1063761 + * b43legacy: Fix crash on unload when firmware not available + - LP: #1063761 + * firmware: Add missing attributes to EFI variable attribute print out + from sysfs + - LP: #1063761 + * xhci: Intel Panther Point BEI quirk. + - LP: #1063761 + * xHCI: add cmd_ring_state + - LP: #1063761 + * xHCI: add aborting command ring function + - LP: #1063761 + * xHCI: cancel command after command timeout + - LP: #1063761 + * xHCI: handle command after aborting the command ring + - LP: #1063761 + * Increase XHCI suspend timeout to 16ms + - LP: #1063761 + * HID: keep dev_rdesc unmodified and use it for comparisons + - LP: #1049623, #1063761 + * ath9k: Disable ASPM only for AR9285 + - LP: #1063761 + * xen/pciback: Restore the PCI config space after an FLR. + - LP: #1063761 + * coredump: prevent double-free on an error path in core dumper + - LP: #1063761 + * n_gsm.c: Implement 3GPP27.010 DLC start-up procedure in MUX + - LP: #1063761 + * n_gsm: uplink SKBs accumulate on list + - LP: #1063761 + * n_gsm: added interlocking for gsm_data_lock for certain code paths + - LP: #1063761 + * n_gsm: memory leak in uplink error path + - LP: #1063761 + * UBI: fix autoresize handling in R/O mode + - LP: #1063761 + * UBI: erase free PEB with bitflip in EC header + - LP: #1063761 + * Yama: handle 32-bit userspace prctl + - LP: #1063761 + * SCSI: ibmvscsi: Fix host config length field overflow + - LP: #1063761 + * SCSI: hpsa: Use LUN reset instead of target reset + - LP: #1063761 + * can: mscan-mpc5xxx: fix return value check in mpc512x_can_get_clock() + - LP: #1063761 + * remoteproc: select VIRTIO to avoid build breakage + - LP: #1063761 + * remoteproc: fix a potential NULL-dereference on cleanup + - LP: #1063761 + * IPoIB: Fix use-after-free of multicast object + - LP: #1063761 + * IB/srp: Fix use-after-free in srp_reset_req() + - LP: #1063761 + * IB/srp: Avoid having aborted requests hang + - LP: #1063761 + * isci: fix isci_pci_probe() generates warning on efi failure path + - LP: #1063761 + * x86/alternatives: Fix p6 nops on non-modular kernels + - LP: #1063761 + * SCSI: scsi_remove_target: fix softlockup regression on hot remove + - LP: #1063761 + * SCSI: scsi_dh_alua: Enable STPG for unavailable ports + - LP: #1063761 + * Linux 3.5.6 + - LP: #1063761 + * au0828: fix case where STREAMOFF being called on stopped stream causes + BUG() + - LP: #1062917 + * ALSA: hda - do not detect jack on internal speakers for Realtek + - LP: #1064621 + * HID: Remove QUANTA from special drivers list + - LP: #1064921 + * drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 + - LP: #1064924 + * Revert dyndbg: fix for SOH in logging messages + - LP: #1066176 + * mn10300: only add -mmem-funcs to KBUILD_CFLAGS if gcc supports it + - LP: #1066176 + * kbuild: make: fix if_changed when command contains backslashes + - LP: #1066176 + * kbuild: Fix gcc -x syntax + - LP: #1066176 + * slab: fix the DEADLOCK issue on l3 alien lock + - LP: #1066176 + * intel-iommu: Default to non-coherent for domains unattached to iommus + - LP: #1066176 + * ARM: 7548/1: include linux/sched.h in syscall.h + - LP: #1066176 + * em28xx: Make all em28xx extensions to be initialized asynchronously + - LP: #1066176 + * media: rc: ite-cir: Initialise ite_dev::rdev earlier + - LP: #1066176 + * media: gspca_pac7302: add support for device 1ae7:2001 Speedlink Snappy + Microphone SL-6825-SBK + - LP: #1066176 + * ACPI: run _OSC after ACPI_FULL_INITIALIZATION + - LP: #1066176 + * PCI: acpiphp: check whether _ADR evaluation succeeded + - LP: #1066176 + * mfd: max8925: Move _IO resources out of ioport_ioresource + - LP: #1066176 + * lib/gcd.c: prevent possible div by 0 + - LP: #1066176 + * kernel/sys.c: call disable_nonboot_cpus() in kernel_restart() + - LP: #1066176 + * drivers/scsi/atp870u.c: fix bad use of udelay + - LP: #1066176 + * lguest: fix occasional crash in example launcher. + - LP: #1066176 + * powerpc/eeh: Fix crash on converting OF node to edev + - LP: #1066176 + * ixgbe: fix PTP ethtool timestamping function + - LP: #1066176 + * rapidio/rionet: fix multicast packet transmit logic + - LP: #1066176 + * PM / Sleep: use resume event when call dpm_resume_early + - LP: #1066176 + * workqueue: add missing smp_wmb() in process_one_work() + - LP: #1066176 + * jbd2: don't write superblock when if its empty + - LP: #1066176 + * localmodconfig: Fix localyesconfig to set to 'y' not 'm' + - LP: #1066176 + * bnx2x: fix rx checksum validation for IPv6 + - LP: #1066176 + * tcp: fix regression in urgent data handling + - LP: #1066176 + * xfrm: Workaround incompatibility of ESN and async crypto + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL #2 + - LP: #1066176 + * xfrm: fix a read lock imbalance in make_blackhole + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_auth() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_state() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_policy() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_tmpl() + - LP: #1066176 + * xfrm_user: don't copy esn replay window twice for new states + - LP: #1066176 + * net: ethernet: davinci_cpdma: decrease the desc count when cleaning up + the remaining packets + - LP: #1066176 + * ixp4xx_hss: fix build failure due to missing linux/module.h inclusion + - LP: #1066176 + * netxen: check for root bus in netxen_mask_aer_correctable + - LP: #1066176 + * net-sched: sch_cbq: avoid infinite loop + - LP: #1066176 + * pkt_sched: fix virtual-start-time update in QFQ + - LP: #1066176 + * sierra_net: Endianess bug fix. + - LP: #1066176 + * 8021q: fix mac_len recomputation in vlan_untag() + - LP: #1066176 + * batman-adv: make batadv_test_bit() return 0 or 1 only + - LP: #1066176 + * ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt + - LP: #1066176 + * ipv6: del unreachable route when an addr is deleted on lo + - LP: #1066176 + * ipv6: fix return value check in fib6_add() + - LP: #1066176 + * tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero + - LP: #1066176 + * sctp: Don't charge for data in sndbuf again when transmitting packet + - LP: #1066176 + * pppoe: drop PPPOX_ZOMBIEs in pppoe_release + - LP: #1066176 + * net: small bug on rxhash calculation + - LP: #1066176 + * net: guard tcp_set_keepalive() to tcp sockets + - LP: #1066176 + * ipv4: raw: fix icmp_filter() + - LP: #1066176 + * ipv6: raw: fix icmpv6_filter() + - LP: #1066176 + * ipv6: mip6: fix mip6_mh_filter() + - LP: #1066176 + * l2tp: fix a typo in l2tp_eth_dev_recv() + - LP: #1066176 + * netrom: copy_datagram_iovec can fail + - LP: #1066176 + * net: do not disable sg for packets requiring no checksum + - LP: #1066176 + * aoe: assert AoE packets marked as requiring no checksum + - LP: #1066176 + * drm/savage: re-add busmaster enable, regression fix + - LP: #1066176 + * SCSI: zfcp: Adapt to new FC_PORTSPEED semantics + - LP: #1066176 + * SCSI: zfcp: Make trace record tags unique + - LP: #1066176 + * SCSI: zfcp: Bounds checking for deferred error trace + - LP: #1066176 + * SCSI: zfcp: Do not wakeup while suspended + - LP: #1066176 + * SCSI: zfcp: remove invalid reference to list iterator variable + - LP: #1066176 + * SCSI: zfcp: restore refcount check on port_remove + - LP: #1066176 + * SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device + - LP: #1066176 + * PCI: Check P2P bridge for invalid secondary/subordinate range + - LP: #1066176 + * ext4: ignore last group w/o enough space when resizing instead of + BUG'ing + - LP: #1066176 + * ext4: don't copy non-existent gdt blocks when resizing + - LP: #1066176 + * ext4: avoid duplicate writes of the backup bg descriptor blocks + - LP: #1066176 + * ext4: fix potential deadlock in ext4_nonda_switch() + - LP: #1066176 + * ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1066176 + * ext4: move_extent code cleanup + - LP: #1066176 + * ext4: online defrag is not supported for journaled files + - LP: #1066176 + * ext4: always set i_op in ext4_mknod() + - LP: #1066176 + * ext4: fix fdatasync() for files with only i_size changes + - LP: #1066176 + * xfrm_user: ensure user supplied esn replay window is valid + - LP: #1066176 + * ASoC: wm_hubs: Ensure volume updates are handled during class W startup + - LP: #1066176 + * ASoC: wm9712: Fix name of Capture Switch + - LP: #1066176 + * kpageflags: fix wrong KPF_THP on non-huge compound pages + - LP: #1066176 + * hugetlb: do not use vma_hugecache_offset() for vma_prio_tree_foreach + - LP: #1066176 + * mm: fix invalidate_complete_page2() lock ordering + - LP: #1066176 + * mm: thp: fix pmd_present for split_huge_page and PROT_NONE with THP + - LP: #1066176 + * MIPS: ath79: use correct fractional dividers for {CPU,DDR}_PLL on + AR934x + - LP: #1066176 + * drm/i915: prevent possible pin leak on error path + - LP: #1066176 + * ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310 + - LP: #1066176 + * ALSA: aloop - add locking to timer access + - LP: #1066176 + * ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690, #1066176 + * ALSA: hda - limit internal mic boost for Asus X202E + - LP: #1052460, #1066176 + * ALSA: usb - disable broken hw volume for Tenx TP6911 + - LP: #1066176, #559939 + * ALSA: USB: Support for (original) Xbox Communicator + - LP: #1066176 + * drm/nvc0/fence: restore pre-suspend fence buffer context on resume + - LP: #1066176 + * drm: Destroy the planes prior to destroying the associated CRTC + - LP: #1066176 + * drm/radeon: only adjust default clocks on NI GPUs + - LP: #1066176 + * drm/radeon: Add MSI quirk for gateway RS690 + - LP: #1066176 + * drm/radeon: force MSIs on RS690 asics + - LP: #1066176 + * drm/i915: Flush the pending flips on the CRTC before modification + - LP: #1066176 + * drm/i915: call drm_handle_vblank before finish_page_flip + - LP: #1066176 + * drm/i915: Fix GT_MODE default value + - LP: #1066176 + * ia64: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * h8300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * parisc: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * xtensa: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * frv: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * mn10300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m68k: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * alpha: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * cris: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m32r: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * score: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * rcu: Fix day-one dyntick-idle stall-warning bug + - LP: #1066176 + * revert "mm: mempolicy: Let vma_merge and vma_split handle + vma->vm_policy linkages" + - LP: #1066176 + * mempolicy: remove mempolicy sharing + - LP: #1066176 + * mempolicy: fix a race in shared_policy_replace() + - LP: #1066176 + * mempolicy: fix refcount leak in mpol_set_shared_policy() + - LP: #1066176 + * mempolicy: fix a memory corruption by refcount imbalance in + alloc_pages_vma() + - LP: #1066176 + * efi: Build EFI stub with EFI-appropriate options + - LP: #1066176 + * efi: initialize efi.runtime_version to make + query_variable_info/update_capsule workable + - LP: #1066176 + * CPU hotplug, cpusets, suspend: Don't modify cpusets during + suspend/resume + - LP: #1066176 + * mtd: mtdpart: break it as soon as we parse out the partitions + - LP: #1066176 + * mtd: autcpu12-nvram: Fix compile breakage + - LP: #1066176 + * mtd: nandsim: bugfix: fail if overridesize is too big + - LP: #1066176 + * mtd: nand: Use the mirror BBT descriptor when reading its version + - LP: #1066176 + * mtd: omap2: fix omap_nand_remove segfault + - LP: #1066176 + * mtd: omap2: fix module loading + - LP: #1066176 + * mmc: omap_hsmmc: Pass on the suspend failure to the PM core + - LP: #1066176 + * mmc: sh-mmcif: avoid oops on spurious interrupts + - LP: #1066176 + * JFFS2: fix unmount regression + - LP: #1066176 + * JFFS2: don't fail on bitflips in OOB + - LP: #1066176 + * cifs: reinstate the forcegid option + - LP: #1066176 + * Convert properly UTF-8 to UTF-16 + - LP: #1066176 + * Linux 3.5.7 + - LP: #1066176 + + -- Luis Henriques Thu, 18 Oct 2012 17:43:41 +0100 + +linux (3.5.0-17.28) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] we already have a valid src_pkg_name + * [packaging] allow us to select which builds have uefi signed versions + + [ James M Leddy ] + + * SAUCE: input: fix weird issue of synaptics psmouse sync lost after + resume + - LP: #717970 + + [ Paolo Pisati ] + + * SAUCE: omap3 clocks .dev_id = NULL + - LP: #1061599 + * [Config] omap: disable USB_[EHCI|OHCI]_HCD_PLATFORM + - LP: #1061599 + * [Config] omap: enforce USB_[EHCI|OHCI]_HCD_PLATFORM=n + - LP: #1061599 + + [ Stefan Bader ] + + * SAUCE: net/ipv4: Always flush route cache on unregister batch call + - LP: #1021471 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn + - LP: #1030233 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Remove rules for matching Broadcom vendor specific + IDs + - LP: #1030233 + + -- Leann Ogasawara Tue, 09 Oct 2012 11:23:41 -0700 + +linux (3.5.0-17.27) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] add custom upload for the kernel binary package + + -- Andy Whitcroft Thu, 04 Oct 2012 22:14:01 +0100 + +linux (3.5.0-17.26) quantal-proposed; urgency=low + + [ David Henningsson ] + + * SAUCE: ALSA: hda - fix indices on boost volume on Conexant + - LP: #1059523 + + [ Leann Ogasawara ] + + * [Config] Build in CONFIG_X86_PCC_CPUFREQ=y + - LP: #1061126 + + [ Rob Herring ] + + * Revert "SAUCE: ahci_platform: add custom hard reset for Calxeda ahci + ctrlr" + - LP: #1059432 + * Revert "SAUCE: net: calxedaxgmac: add write barriers around setting + owner bit" + - LP: #1059432 + * Revert "SAUCE: ARM: highbank: use writel_relaxed variant for pwr + requests" + - LP: #1059432 + * Revert "SAUCE: force DMA buffers to non-bufferable on highbank" + - LP: #1059432 + * Revert "SAUCE: input: add a key driver for highbank" + - LP: #1059432 + * [Config] Align highbank config with amd64-generic and add new configs + - LP: #1059432 + * SAUCE: net: calxedaxgmac: enable operate on 2nd frame mode + - LP: #1059432 + * SAUCE: net: calxedaxgmac: remove explicit rx dma buffer polling + - LP: #1059432 + * SAUCE: net: calxedaxgmac: use relaxed i/o accessors in rx and tx paths + - LP: #1059432 + * SAUCE: net: calxedaxgmac: drop some unnecessary register writes + - LP: #1059432 + * SAUCE: net: calxedaxgmac: rework transmit ring handling + - LP: #1059432 + * SAUCE: ARM: highbank: retry wfi on reset request + - LP: #1059432 + + [ Tim Gardner ] + + * [Config] TIDSPBRIDGE=m + - LP: #1058022 + * rebase to v3.5.5 + + [ Upstream Kernel Changes ] + + * common: DMA-mapping: add DMA_ATTR_NO_KERNEL_MAPPING attribute + - LP: #1059432 + * common: DMA-mapping: add DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: dma-mapping: add support for DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: add coherent dma ops + - LP: #1059432 + * ARM: add coherent iommu dma ops + - LP: #1059432 + * ARM: highbank: add coherent DMA setup + - LP: #1059432 + * sata: add platform driver for Calxeda AHCI controller + - LP: #1059432 + * xhci: Rate-limit XHCI_TRUST_TX_LENGTH quirk warning. + - LP: #1039478 + * agp/intel-gtt: remove dead code + - LP: #1011440 + * drm/i915: stop using dev->agp->base + - LP: #1011440 + * agp/intel-gtt: don't require the agp bridge on setup + - LP: #1011440 + * drm/i915 + agp/intel-gtt: prep work for direct setup + - LP: #1011440 + * agp/intel-gtt: move gart base addres setup + - LP: #1011440 + * drm/i915: don't use dev->agp + - LP: #1011440 + * drm/i915: disable drm agp support for !gen3 with kms enabled + - LP: #1011440 + * agp/intel-agp: remove snb+ host bridge pciids + - LP: #1011440 + * rebase to v3.5.5 + - LP: #1000424 + + -- Leann Ogasawara Wed, 03 Oct 2012 11:11:18 -0700 + +linux (3.5.0-16.25) quantal-proposed; urgency=low + + [ git@status.e4ward.com ] + + * SAUCE: input: Cypress PS/2 Trackpad fix multi-source, double-click + - LP: #1055788 + + [ Tim Gardner ] + + * [Config] revert '[Config] enable CONFIG_X86_X32=y' + - LP: #1041883 + + [ Upstream Kernel Changes ] + + * vmwgfx: corruption in vmw_event_fence_action_create() + * drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs + - LP: #1058088 + * drm/nv50-/gpio: initialise to vbios defaults during init + - LP: #1058088 + * igb: A fix to VF TX rate limit + - LP: #1058188 + * igb: Add switch case for supported hardware to igb_ptp_remove. + - LP: #1058188 + * igb: Support the get_ts_info ethtool method. + - LP: #1058188 + * igb: Streamline RSS queue and queue pairing assignment logic. + - LP: #1058188 + * igb: Update firmware info output + - LP: #1058188 + * igb: Version bump + - LP: #1058188 + * igb: reset PHY in the link_up process to recover PHY setting after + power down. + - LP: #1058188 + * igb: Fix for failure to init on some 82576 devices. + - LP: #1058188 + * igb: correct hardware type (i210/i211) check in igb_loopback_test() + - LP: #1058188 + * igb: don't break user visible strings over multiple lines in + igb_ethtool.c + - LP: #1058188 + * igb: add delay to allow igb loopback test to succeed on 8086:10c9 + - LP: #1058188 + * igb: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058188 + * igb: Fix register defines for all non-82575 hardware + - LP: #1058188 + * e1000e: use more informative logging macros when netdev not yet + registered + - LP: #1058219 + * e1000e: Cleanup code logic in e1000_check_for_serdes_link_82571() + - LP: #1058219 + * e1000e: Program the correct register for ITR when using MSI-X. + - LP: #1058219 + * e1000e: advertise transmit time stamping + - LP: #1058219 + * e1000e: 82571 Tx Data Corruption during Tx hang recovery + - LP: #1058219 + * e1000e: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058219 + * e1000: Combining Bitwise OR in one expression. + - LP: #1058221 + * e1000: advertise transmit time stamping + - LP: #1058221 + * e1000: Small packets may get corrupted during padding by HW + - LP: #1058221 + * sched: Fix migration thread runtime bogosity + - LP: #1057593 + * ACER: Add support for accelerometer sensor + - LP: #1055433 + * ACER: Fix Smatch double-free issue + - LP: #1055433 + + [ Wen-chien Jesse Sung ] + + * SAUCE: HID: ntrig: change default value of logical/physical + width/height to 1 + - LP: #1044248 + + -- Leann Ogasawara Fri, 28 Sep 2012 14:07:41 -0700 + +linux (3.5.0-16.24) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ata_piix: add a disable_driver option + - LP: #994870 + + [ Christian König ] + + * (pre-stable) drm/radeon: make 64bit fences more robust v3 (3.5 stable) + - LP: #1029582 + + [ David Henningsson ] + + * SAUCE: ALSA: hda - use both input paths on Conexant auto parser + - LP: #1037642 + * SAUCE: ALSA: hda - fix control names for multiple speaker out on + IDT/STAC + - LP: #1046734 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: ALSA: hda/via - don't report presence on HPs with no presence + support + - LP: #1052499 + * SAUCE: ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1053019 + * SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690 + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix disabling tap-to-click + - LP: #1048816 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_AST + - LP: #1053290 + + [ Stefan Bader ] + + * [Config] Disable the Cirrus QEMU drm driver + - LP: #1038055 + + [ Upstream Kernel Changes ] + + * Revert "KVM: VMX: Fix KVM_SET_SREGS with big real mode segments" + - LP: #1045027 + * x86, efi: Handover Protocol + * drm/i915: HDMI - Clear Audio Enable bit for Hot Plug + - LP: #1056729 + * UBUNTU SAUCE: apparmor: fix IRQ stack overflow + - LP: #1056078 + * drm/nouveau: fix booting with plymouth + dumb support + - LP: #1043518 + * ALSA: hda - Add DeviceID for Haswell HDA + - LP: #1057698 + * ALSA: hda - add Haswell HDMI codec id + - LP: #1057698 + * ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCH + - LP: #1057698 + * ALSA: hda_intel: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1011438, #1057698 + + [ Wang Xingchao ] + + * SAUCE: ALSA: hda - Add another pci id for Haswell board + - LP: #1057698 + + [ Wen-chien Jesse Sung ] + + * SAUCE: drm/i915: Explicitly disable RC6 for certain models + - LP: #1002170, #1008867 + + -- Leann Ogasawara Thu, 27 Sep 2012 13:55:52 -0700 + +linux (3.5.0-15.23) quantal; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: don't forget the PCH backlight registers" + - LP: #1053269, #1055231, #1055665 + * Revert "drm/i915: fix up PCH backlight #define mixup" + - LP: #1053269, #1055665 + * Revert "drm/i915: allow pipe A for lvds on gen4" + - LP: #1053269, #1055665 + * Revert "drm/i915: properly enable the blc controller on the right pipe" + - LP: #1053269, #1055665 + * Revert "drm/i915: clear up backlight #define confusion on gen4+" + - LP: #1053269, #1055665 + * Revert "drm/i915: pnv has a backlight polarity control bit, too" + - LP: #1053269, #1055665 + + -- Leann Ogasawara Mon, 24 Sep 2012 12:33:26 -0700 + +linux (3.5.0-15.22) quantal; urgency=low + + * fix regressions introduced by the last batch of i915 patches. + + [ Upstream Kernel Changes ] + + * drm/i915: fix up PCH backlight #define mixup + - LP: #954661 + * drm/i915: don't forget the PCH backlight registers + - LP: #954661 + + -- Tim Gardner Wed, 19 Sep 2012 13:32:19 -0600 + +linux (3.5.0-15.21) quantal; urgency=low + + [ Tim Gardner ] + + * ubuntu: AUFS -- update to 18e455787597579fe144cdb2f18aa6a0a32c46a4 + * [Config] Enable aufs + - LP: #908784 + + [ Upstream Kernel Changes ] + + * eCryptfs: check for eCryptfs cipher support at mount + - LP: #338914 + * drm/i915: pnv has a backlight polarity control bit, too + - LP: #954661 + * drm/i915: clear up backlight #define confusion on gen4+ + - LP: #954661 + * drm/i915: properly enable the blc controller on the right pipe + - LP: #954661 + * drm/i915: allow pipe A for lvds on gen4 + - LP: #954661 + + -- Tim Gardner Tue, 18 Sep 2012 08:37:51 -0400 + +linux (3.5.0-15.20) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.4 + * SAUCE: CONFIG_HID_BATTERY_STRENGTH=y + - LP: #1003090 + + [ Upstream Kernel Changes ] + + * eCryptfs: Copy up attributes of the lower target inode after rename + - LP: #561129 + * eCryptfs: Write out all dirty pages just before releasing the lower + file + - LP: #1047261 + * eCryptfs: Call lower ->flush() from ecryptfs_flush() + - LP: #1047261 + * af_netlink: force credentials passing [CVE-2012-3520] + - LP: #1052097 + - CVE-2012-3520 + * drm/i915: clarify IBX dp workaround + - LP: #1011440 + * drm/i915: Implement w/a for sporadic read failures on waking from rc6 + - LP: #1011440 + * drm/i915: support Haswell force waking + - LP: #1011440 + * drm/i915: add RPS configuration for Haswell + - LP: #1011440 + * drm/i915: enable RC6 by default on Haswell + - LP: #1011440 + * drm/i915: introduce haswell_init_clock_gating + - LP: #1011440 + * drm/i915: enable RC6 workaround on Haswell + - LP: #1011440 + * drm/i915: re-initialize DDI buffer translations after resume + - LP: #1011440 + * drm/i915: fix PIPE_DDI_PORT_MASK + - LP: #1011440 + * drm/i915: try to train DP even harder + - LP: #1011440 + * drm/i915: add more Haswell PCI IDs + - LP: #1011440 + * rebase to v3.5.4 + - LP: #1038651 + + -- Leann Ogasawara Mon, 17 Sep 2012 13:41:39 -0700 + +linux (3.5.0-14.19) quantal; urgency=low + + [ Tim Gardner ] + + * [Config] Fix debug FTBS on non-x86 + + -- Tim Gardner Fri, 14 Sep 2012 13:06:02 -0600 + +linux (3.5.0-14.18) quantal; urgency=low + + [ Tim Gardner ] + + * SAUCE: Add 'used' to the video_cards structure attributes + - LP: #1049650 + + -- Tim Gardner Fri, 14 Sep 2012 10:58:40 -0400 + +linux (3.5.0-14.17) quantal; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Intel xhci: Only switch the switchable ports + - LP: #1034814 + + -- Leann Ogasawara Wed, 12 Sep 2012 08:34:21 -0700 + +linux (3.5.0-14.16) quantal-proposed; urgency=low + + [ Bernhard Froemel ] + + * SAUCE: apple-gmux: Fix index read functions + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad move PSMOUSE_CYPRESS enum + - LP: #1041594 + + [ Seth Forshee ] + + * SAUCE: Input: synaptics - Adjust threshold for treating position values + as negative + - LP: #1046512 + + [ Upstream Kernel Changes ] + + * mei: check for error codes that mei_flow_ctrl_creds retuns + * mei: make mei_write_message more readable + * mei: mei_irq_thread_write_handler check for overflow + * mei: group wd_interface_reg with watchdog variables within struct + mei_device + * mei: don't query HCSR for host buffer depth + * mei: revamp host buffer interface function + * mei: mei_device can be const for mei register access functions + * mei: remove write only wariable wd_due_counter + * mei: mei_wd_host_init: update the comment + * mei: introduce mei_data2slots wrapper + * mei: streamline the _mei_irq_thread_close/ioctol functions + * mei: mei_irq_thread_write_handler - line break fix + * mei: use module_pci_driver + * mei: fix device stall after wd is stopped + + -- Leann Ogasawara Mon, 10 Sep 2012 13:05:18 -0700 + +linux (3.5.0-14.15) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fs: d_revalidate methods may be passed a NULL nameidata + - LP: #1038075 + + [ Dave Airlie ] + + * SAUCE: drm/vmwgfx: add MODULE_DEVICE_TABLE so vmwgfx loads at boot + - LP: #1039157 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEVPTS_MULTIPLE_INSTANCES for highbank + - LP: #1038259 + + [ Tim Gardner ] + + * SAUCE: wlcore: Declare MODULE_FIRMWARE usage + - LP: #1042918 + + [ Upstream Kernel Changes ] + + * asus-nb-wmi: add some video toggle keys + - LP: #1022427 + * [media] uvcvideo: Fix frame drop in bulk video stream + * [media] uvcvideo: Fix alternate setting selection + * Input: wacom - add support to Cintiq 22HD + - LP: #1043733 + * ALSA: HDA: Create phantom jacks for fixed inputs and outputs + * ALSA: HDA: Support single 3-pin jack without VREF on the actual pin + - LP: #1018262 + * ALSA: hda - give 3-pin jack the name "Headphone Mic Jack" + * ALSA: hda - Do not set GPIOs for speakers on IDT if there are no + speakers + - LP: #1040077 + * ALSA: hda - Fix pop noise in headphones on S3 for Asus X55A, X55V + - LP: #1034779 + * ALSA: hda - Always call standard unsolicited event for Realtek codecs + - LP: #1021192 + * ALSA: hda - Add the inverted digital mic workaround to Realtek codecs + * ALSA: hda - Add inverted mic quirks for Asus U41SV, Acer 1810TZ and + AOD260 + - LP: #1006089, #996611, #997227 + * ALSA: hda - don't create dysfunctional mixer controls for ca0132 + - LP: #1038651 + * ALSA: hda - Don't send invalid volume knob command on IDT 92hd75bxx + + -- Leann Ogasawara Thu, 06 Sep 2012 10:06:28 -0700 + +linux (3.5.0-13.14) quantal; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + [ Upstream Kernel Changes ] + + * [media] uvcvideo: Reset the bytesused field when recycling an erroneous + buffer + - LP: #1042809 + + -- Tim Gardner Tue, 28 Aug 2012 08:43:55 -0400 + +linux (3.5.0-13.13) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.3 + * [Config] Add smsc{79}5xx to nic-usb-modules + - LP: #1041397 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.3 + + -- Leann Ogasawara Mon, 27 Aug 2012 11:29:08 -0700 + +linux (3.5.0-12.12) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * [Config] Fix typo on control.stub.in + + [ Ricardo Salveti de Araujo ] + + * [Config] installing omapdrm specific headers for external drivers + - LP: #1038846 + + [ Seth Forshee ] + + * SAUCE: apple-gmux: Fix port address calculation in gmux_pio_write32() + + [ Stefan Bader ] + + * SAUCE: (no-up) x86/mm: Fix 64bit size of mapping tables + - LP: #1022561 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove sb16 files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * net: Allow driver to limit number of GSO segments per skb + - LP: #1037456 + - CVE-2012-3412 + * sfc: Fix maximum number of TSO segments and minimum TX queue size + - LP: #1037456 + - CVE-2012-3412 + * tcp: Apply device TSO segment limit earlier + - LP: #1037456 + - CVE-2012-3412 + * cfg80211: add channel flag to prohibit OFDM operation + * brcmsmac: use channel flags to restrict OFDM + * gmux: Add generic write32 function + * apple_gmux: Add support for newer hardware + * apple_gmux: Fix ACPI video unregister + * apple-gmux: Fix kconfig dependencies + * vga_switcheroo: Don't require handler init callback + * vga_switcheroo: Remove assumptions about registration/unregistration + ordering + * apple-gmux: Add display mux support + * mei: add mei_quirk_probe function + - LP: #1041164 + * mutex: Place lock in contended state after fastpath_lock failure + - LP: #1041114 + + -- Leann Ogasawara Fri, 24 Aug 2012 07:13:00 -0700 + +linux (3.5.0-11.11) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_X86_X32=y + + [ Cypress Semiconductor Corporation ] + + * SAUCE: input: Cypress PS/2 Trackpad mouse driver + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad link driver into psmouse-base + - LP: #978807 + + [ Dann Frazier ] + + * [Config] compile the rtc-pl031 driver as static on the highbank kernel + flavour + - LP: #1035110 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEBUG_HIGHBANK_UART for highbank + - LP: #1034781 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad code style cleanup + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad eliminate dead code + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad fix no-config stubs + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad set default debug_level=0 + - LP: #978807 + * SAUCE: [Config] add MOUSE_PS2_CYPRESS=y + - LP: #978807 + + [ Kees Cook ] + + * SAUCE: Yama: access task_struct->comm directly + * SAUCE: Yama: add link restrictions + * SAUCE: security: unconditionally chain to Yama LSM + + [ Seth Forshee ] + + * SAUCE: (drop after 3.6) irq_remap: disable IRQ remapping if any IOAPIC + lacks an IOMMU + - LP: #1034459 + + [ Stefan Bader ] + + * (config) Enable getabis to use local package copies + + [ Tim Gardner ] + + * rebase to v3.5.2 + + [ Upstream Kernel Changes ] + + * rds: set correct msg_namelen + - LP: #1031112 + - CVE-2012-2340 + * rebase to v3.5.2 + - LP: #1027789 + - LP: #1001251 + + -- Leann Ogasawara Thu, 16 Aug 2012 08:52:09 -0700 + +linux (3.5.0-10.10) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5.1 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_AFS_FSCACHE=y + - LP: #728977 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove emi62 files duplicated in linux-firmware + * SAUCE: firmware: Remove tehuti files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * overlayfs: copy up i_uid/i_gid from the underlying inode + - LP: #944386 + * hwmon: (applesmc) Shorten minimum wait time + - LP: #1034449 + * hwmon: (applesmc) Decode and act on read/write status codes + - LP: #1034449 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.1 + - LP: #1026953 + - LP: #1025377 + + -- Leann Ogasawara Sun, 12 Aug 2012 13:16:43 -0700 + +linux (3.5.0-9.9) quantal-proposed; urgency=low + + [ Daniel P. Berrange ] + + * SAUCE: (drop after 3.6) Forbid invocation of kexec_load() outside + initial PID namespace + - LP: #1034125 + + [ Douglas Bagnall ] + + * SAUCE: Unlock the rc_dev lock when the raw device is missing + - LP: #1015836 + + [ Ike Panhc ] + + * [Config] Enable EDAC/CLK for highbank + - LP: #1008345 + + [ Leann Ogasawara ] + + * Revert "ubuntu: AUFS -- reenable" + + [ Rob Herring ] + + * SAUCE: net: calxedaxgmac: add write barriers around setting owner bit + - LP: #1008345 + * SAUCE: ARM smp_twd: add back "arm,smp-twd" compatible property + - LP: #1008345 + * SAUCE: ARM: highbank: add soft power and reset key event handling + - LP: #1008345 + * SAUCE: ARM: highbank: use writel_relaxed variant for pwr requests + - LP: #1008345 + * SAUCE: ahci: un-staticize ahci_dev_classify + - LP: #1008345 + * SAUCE: ahci_platform: add custom hard reset for Calxeda ahci ctrlr + - LP: #1008345 + + [ Upstream Kernel Changes ] + + * rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb. + - LP: #871904 + * Avoid sysfs oops when an rc_dev's raw device is absent + - LP: #1015836 + * eCryptfs: Copy up POSIX ACL and read-only flags from lower mount + * clk: add DT clock binding support + - LP: #1008345 + * clk: add DT fixed-clock binding support + - LP: #1008345 + * clk: add highbank clock support + * edac: add support for Calxeda highbank memory controller + - LP: #1008345 + * edac: add support for Calxeda highbank L2 cache ecc + - LP: #1008345 + * net: calxedaxgmac: enable rx cut-thru mode + - LP: #1008345 + * net: calxedaxgmac: fix hang on rx refill + - LP: #1008345 + * eCryptfs: Revert to a writethrough cache model + - LP: #1034012 + * eCryptfs: Initialize empty lower files when opening them + - LP: #911507 + * eCryptfs: Unlink lower inode when ecryptfs_create() fails + - LP: #872905 + + -- Leann Ogasawara Wed, 08 Aug 2012 08:39:42 -0700 + +linux (3.5.0-8.8) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * ubuntu: AUFS -- adapt to the new changelog handling + * ubuntu: AUFS -- sort out the relative header paths + * ubuntu: AUFS -- update to d266b0c5d0693d6383976ee54b9e2c0fa9a3f5b0 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 4a5e660ed7f5c1d0467c81c535d0fedcfe62d15f + * ubuntu: AUFS -- reenable + + [ Chris Van Hoof ] + + * [Config] Add cifs support to the nfs-modules list + - LP: #1031398 + + [ Ilan Peer ] + + * (pre-stable) iwlwifi: Check BSS ctx active before call mac80211 + - LP: #1021086 + + [ John Johansen ] + + * SAUCE: Update aufs for build failure caused by apparmor backport + + [ Tim Gardner ] + + * SAUCE: firmware: Remove ess files duplicated in linux-firmware + * SAUCE: firmware: Remove kaweth files duplicated in linux-firmware + * SAUCE: firmware: Remove obsolete Chelsio cxgb3 firmware + * SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: firmware: Remove edgeport files duplicated in linux-firmware + * SAUCE: firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware + * SAUCE: firmware: Remove adaptec files duplicated in linux-firmware + * SAUCE: firmware: Remove advansys files duplicated in linux-firmware + * SAUCE: firmware: Remove ambassador files duplicated in linux-firmware + * SAUCE: firmware: Remove av7110 files duplicated in linux-firmware + * SAUCE: cpia2: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove cpia2 files duplicated in linux-firmware + * SAUCE: firmware: Remove korg files duplicated in linux-firmware + * SAUCE: firmware: Remove matrox files duplicated in linux-firmware + * SAUCE: firmware: Remove r128 files duplicated in linux-firmware + * SAUCE: firmware: Remove radeon files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * intel_idle: initial IVB support + * KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT + Dirty bit + * KVM: VMX: Use EPT Access bit in response to memory notifiers + * KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit + in EPTP + * KVM: VMX: Add parameter to control A/D bits support, default is on + * KVM: VMX: Add EPT A/D bits definitions + * KVM: VMX: Implement PCID/INVPCID for guests with EPT + * xhci: Export Latency Tolerance Messaging capabilities. + * USB: Fix LPM disable/enable during device reset. + * usb: convert port_owners type from void * to struct dev_state * + * USB: Disable LPM while the device is unconfigured. + * USB: Fix LPM disable count mismatch on driver unbind. + * USB: Enable Latency Tolerance Messaging (LTM). + * drm/i915: enable parity error interrupts + * drm/i915: Dynamic Parity Detection handling + * drm/i915: l3 parity sysfs interface + * drm/i915: remap l3 on hw init + * drm/i915: initialize the parity work only once + * drm/i915: ivybridge_handle_parity_error should be static + + -- Leann Ogasawara Fri, 03 Aug 2012 13:33:27 -0700 + +linux (3.5.0-7.7) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_X86_POWERNOW_K6=m + * [Config] CONFIG_X86_POWERNOW_K7=m + * [Config] CONFIG_X86_LONGHAUL=m + * [Config] CONFIG_X86_LONGRUN=m + * [Config] CONFIG_X86_GX_SUSPMOD=m + * [Config] CONFIG_X86_CPUFREQ_NFORCE2=m + * SAUCE: rds_ib_send() -- prevent local pings triggering BUG_ON() + - LP: #1016299 + - CVE-2012-2372 + * [Config] enable CONFIG_VFAT_FS=y for EFI systems + * [Config] CONFIG_USB_G_MULTI=n on highbank + * [Config] annotate: CONFIG_USB_INVENTRA_DMA OMAP2 specific + * [Config] CONFIG_WAN_ROUTER disable for arm + * add support for generating binary device trees and install them in + /lib/firmware + - LP: #1030600 + * [Config] add dtb_file configuration for highbank + - LP: #1030600 + + [ Tim Gardner ] + + * SAUCE: ene_ub6250: Use macros for firmware names + * SAUCE: s2255drv: Add MODULE_FIRMWARE statement + * SAUCE: xc5000: Add MODULE_FIRMWARE statements + * SAUCE: firmware: remove computone driver firmware and documentation + * SAUCE: lgs8gxx: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove obsolete Myricom firmware + * SAUCE: staging rtl8192e: Declare MODULE_FIRMWARE usage + * SAUCE: tlg2300: Declare MODULE_FIRMWARE usage + * SAUCE: ueagle-atm: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxfast: Declare MODULE_FIRMWARE usage + * SAUCE: usbdux: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxsigma: Declare MODULE_FIRMWARE usage + * SAUCE: cx25840: Declare MODULE_FIRMWARE usage + * SAUCE: cx18: Declare MODULE_FIRMWARE usage + * SAUCE: ivtv: Declare MODULE_FIRMWARE usage + * SAUCE: cx231xx: Declare MODULE_FIRMWARE usage + * SAUCE: cx23885: Declare MODULE_FIRMWARE usage + * SAUCE: pvrusb2: Declare MODULE_FIRMWARE usage + * SAUCE: vxge: Declare MODULE_FIRMWARE usage + + [ Upstream Kernel Changes ] + + * mac80211: fix crash with single-queue drivers + - LP: #1022351 + + -- Leann Ogasawara Mon, 30 Jul 2012 11:11:05 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 --- linux-3.5.0.orig/debian.master/control.d/vars.powerpc64-smp +++ linux-3.5.0/debian.master/control.d/vars.powerpc64-smp @@ -0,0 +1,6 @@ +supported="64-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc ppc64" --- linux-3.5.0.orig/debian.master/control.d/vars.powerpc-smp +++ linux-3.5.0/debian.master/control.d/vars.powerpc-smp @@ -0,0 +1,6 @@ +supported="32-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="32-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-3.5.0.orig/debian.master/control.d/vars.generic +++ linux-3.5.0/debian.master/control.d/vars.generic @@ -0,0 +1,6 @@ +arch="i386 amd64" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1)" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-3.5.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-3.5.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,145 @@ +arch/*/{crypto,kernel,oprofile} +crypto/* +drivers/acpi/* +drivers/ata/ahci_platform.ko +drivers/ata/ahci.ko +drivers/ata/acard-ahci.ko +drivers/ata/libahci.ko +drivers/block/nbd.ko +drivers/block/floppy.ko +drivers/block/cryptoloop.ko +drivers/char/hangcheck-timer.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/hv/* +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/mouse/psmouse.ko +drivers/input/serio/serio_raw.ko +drivers/input/serio/serport.ko +drivers/input/joydev.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/input/misc/xen-kbdfront.ko +drivers/md/* +drivers/message/fusion* +drivers/misc/vmw_balloon.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/ppp/bsd_comp.ko +drivers/net/dummy.ko +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/eql.ko +drivers/net/ifb.ko +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/netconsole.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ppp/* +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/xen-netback/* +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pci/hotplug/acpiphp.ko +drivers/net/ethernet/dec/tulip/* +drivers/scsi/BusLogic.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +drivers/scsi/qla1280.ko +drivers/scsi/raid_class.ko +drivers/scsi/scsi_transport_fc.ko +drivers/scsi/scsi_transport_iscsi.ko +drivers/scsi/scsi_transport_sas.ko +drivers/scsi/scsi_wait_scan.ko +drivers/scsi/scsi_tgt.ko +drivers/scsi/vmw_pvscsi.ko +drivers/scsi/hv_storvsc.ko +drivers/usb/storage/usb-storage.ko +drivers/video/cirrusfb.ko +drivers/video/output.ko +drivers/video/syscopyarea.ko +drivers/video/sysfillrect.ko +drivers/video/sysimgblt.ko +drivers/video/vesafb.ko +drivers/video/vga16fb.ko +drivers/video/vgastate.ko +drivers/video/xen-fbfront.ko +drivers/video/fb_sys_fops.ko +drivers/virtio/virtio_balloon.ko +drivers/watchdog/softdog.ko +drivers/xen/* +fs/9p/* +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/configfs/* +fs/ext*/* +fs/fat/* +fs/nls/nls_cp437.ko +fs/nls/nls_iso8859-1.ko +fs/isofs/* +fs/cifs/* +fs/xfs/* +fs/ufs/* +fs/squashfs/* +fs/nfs/* +fs/nfsd/* +fs/nfs_common/* +fs/fscache/* +fs/lockd/* +fs/autofs4/autofs4.ko +fs/overlayfs/* +fs/udf/* +lib/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bridge/* +net/can/* +net/ceph/libceph.ko +net/core/* +net/dccp/* +net/decnet/* +net/econet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netrom/* +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/tipc/* +net/wanrouter/* +net/x25/* +net/xfrm/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/sunrpc.ko +sound/soundcore.ko +sound/core/* +sound/pci/snd-ens1370.ko +sound/drivers/pcsp/snd-pcsp.ko --- linux-3.5.0.orig/debian.master/control.d/flavour-control.stub +++ linux-3.5.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,98 @@ +# Items that get replaced: +# FLAVOUR +# DESC +# ARCH +# SUPPORTED +# TARGET +# BOOTLOADER +# =PROVIDES= +# +# Items marked with =FOO= are optional +# +# This file describes the template for packages that are created for each flavour +# in debian/control.d/vars.* +# +# This file gets edited in a couple of places. See the debian/control.stub rule in +# debian/rules. PGGVER, ABINUM, and SRCPKGNAME are all converted in the +# process of creating debian/control. +# +# The flavour specific strings (ARCH, DESC, etc) are converted using values from the various +# flavour files in debian/control.d/vars.* +# +# XXX: Leave the blank line before the first package!! + +Package: linux-image-PKGVER-ABINUM-FLAVOUR +Architecture: ARCH +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, =PROVIDES= +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: BOOTLOADER +Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-PKGVER-ABINUM-FLAVOUR +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: SRCPKGNAME-headers, SRCPKGNAME-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details. + +Package: linux-image-PKGVER-ABINUM-FLAVOUR-dbgsym +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version PKGVER on DESC + This package provides a kernel debug image for version PKGVER on + DESC. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. --- linux-3.5.0.orig/debian.master/control.d/vars.omap +++ linux-3.5.0/debian.master/control.d/vars.omap @@ -0,0 +1,8 @@ +arch="armel armhf" +supported="TI OMAP3" +desc="TI OMAP3-based =HUMAN= systems" +target="Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc." +bootloader="flash-kernel" +provides="" +section_image="universe/base" +do_debug="Yes" --- linux-3.5.0.orig/debian.master/control.d/vars.highbank +++ linux-3.5.0/debian.master/control.d/vars.highbank @@ -0,0 +1,8 @@ +arch="armhf" +supported="Calxeda highbank" +desc="Calxeda highbank ARM Server" +target="Targeted towards Calxeda highbank ARM Server" +bootloader="flash-kernel" +provides="" +section_image="universe/base" +do_debug="Yes" --- linux-3.5.0.orig/debian.master/config/enforce +++ linux-3.5.0/debian.master/config/enforce @@ -0,0 +1,128 @@ +# +# SECURITY items +# +# Ensure this option is enabled. +value CONFIG_COMPAT_BRK n +value CONFIG_DEVKMEM n +value CONFIG_LSM_MMAP_MIN_ADDR 0 +value CONFIG_SECURITY y +!exists CONFIG_SECURITY_FILE_CAPABILITIES | value CONFIG_SECURITY_FILE_CAPABILITIES y +value CONFIG_SECURITY_SELINUX y +value CONFIG_SECURITY_SMACK y +value CONFIG_SECURITY_YAMA y +value CONFIG_SYN_COOKIES y +value CONFIG_DEFAULT_SECURITY_APPARMOR y +# For architectures which support this option ensure it is enabled. +!exists CONFIG_XEN_ACPI_PROCESSOR | value CONFIG_XEN_ACPI_PROCESSOR y +!exists CONFIG_SECCOMP | value CONFIG_SECCOMP y +!exists CONFIG_HAVE_ARCH_SECCOMP_FILTER | value CONFIG_SECCOMP_FILTER y +!exists CONFIG_CC_STACKPROTECTOR | value CONFIG_CC_STACKPROTECTOR y +!exists CONFIG_DEBUG_RODATA | value CONFIG_DEBUG_RODATA y +!exists CONFIG_DEBUG_SET_MODULE_RONX | value CONFIG_DEBUG_SET_MODULE_RONX y +!exists CONFIG_STRICT_DEVMEM | value CONFIG_STRICT_DEVMEM y +# For architectures which support this option ensure it is disabled. +!exists CONFIG_COMPAT_VDSO | value CONFIG_COMPAT_VDSO n +!exists CONFIG_ACPI_CUSTOM_METHOD | value CONFIG_ACPI_CUSTOM_METHOD n +# Default to 32768 on ARM, 65536 for everything else. +(arch armel armhf &/ value CONFIG_DEFAULT_MMAP_MIN_ADDR 32768) | \ + value CONFIG_DEFAULT_MMAP_MIN_ADDR 65536 + +# upstart requires DEVTMPFS be enabled and mounted by default. +value CONFIG_DEVTMPFS y +value CONFIG_DEVTMPFS_MOUNT y + +# some /dev nodes require POSIX ACLs, like /dev/dsp +value CONFIG_TMPFS_POSIX_ACL y + +# Ramdisk size should be a minimum of 64M +value CONFIG_BLK_DEV_RAM_SIZE 65536 + +# LVM requires dm_mod built in to activate correctly (LP: #560717) +value CONFIG_BLK_DEV_DM y + +# sysfs: ensure all DEPRECATED items are off +!exists CONFIG_SYSFS_DEPRECATED_V2 | value CONFIG_SYSFS_DEPRECATED_V2 n +!exists CONFIG_SYSFS_DEPRECATED | value CONFIG_SYSFS_DEPRECATED n + +# automatically add local version will cause packaging failure +value CONFIG_LOCALVERSION_AUTO n + +# provide framebuffer console form the start +# UbuntuSpec:foundations-m-grub2-boot-framebuffer +value CONFIG_FRAMEBUFFER_CONSOLE y + +# GRUB changes will rely on built in vesafb on x86, +# UbuntuSpec:foundations-m-grub2-boot-framebuffer +#(( arch i386 | arch amd64 ) & value CONFIG_FB_VESA y) | \ +# value CONFIG_FB_VESA m | !exists CONFIG_FB_VESA +value CONFIG_FB_VESA m | !exists CONFIG_FB_VESA + +# Build in uinput module so that it's always available (LP: 584812) +value CONFIG_INPUT_UINPUT y + +# upstart relies on getting all of the kernel arguments +value CONFIG_INIT_PASS_ALL_PARAMS y + +# Enabling CONFIG_IMA is vastly expensive, ensure it is off +value CONFIG_IMA n + +# Ensure CONFIG_IPV6 is y, if this is a module we get a module load for +# every ipv6 packet, bad. +value CONFIG_IPV6 y + +# Ensure ECRYPT_FS is y as it cannot be autoloaded and it has complex +# dependancies which can pull it =m at a whim. +value CONFIG_ECRYPT_FS y + +# Ensure CONFIG_EFI_VARS is y as debian-installer relies on having +# access to efivars when installing in EFI mode. See LP:837332 +value CONFIG_EFI_VARS y | !exists CONFIG_EFI_VARS + +# Ensure CONFIG_VFAT_FS is y for arm, needed to ensure we able to replace +# a kernel with the same version. Also needed for EFI based systems. +(arch armel armhf i386 amd64 &/ value CONFIG_VFAT_FS y) | \ + value CONFIG_VFAT_FS m + +# Ensure CONFIG_GPIO_TWL4030 is y for arm, LP:921934 +(arch armel armhf &/ value CONFIG_GPIO_TWL4030 y) | \ + value CONFIG_GPIO_TWL4030 m | \ + !exists CONFIG_GPIO_TWL4030 + +# Ensure CONFIG_THERM_ADT746X is y for powerpc and powerpc-smp flavours. +# See LP:923094 +(flavour powerpc powerpc-smp &/ value CONFIG_THERM_ADT746X y) | \ + !exists CONFIG_THERM_ADT746X + +# Ensure CONFIG_NVRAM is y for powerpc and powerpc-smp, LP:942193 +(flavour powerpc powerpc-smp &/ value CONFIG_NVRAM y) | \ + value CONFIG_NVRAM m | \ + !exists CONFIG_NVRAM + +# Ensure CONFIG_STUB_POULSBO is disabled if CONFIG_DRM_PSB is enabled +# See LP:899244 +(!exists CONFIG_DRM_PSB | value CONFIG_DRM_PSB n) | \ +((value CONFIG_DRM_PSB y | value CONFIG_DRM_PSB m) & (value CONFIG_STUB_POULSBO n | !exists CONFIG_STUB_POULSBO)) + +# Ensure CONFIG_B43_BCMA_EXTRA is disabled if CONFIG_BRCMSMAC is enabled. +# Otherwise b43 and brcmsmac will overlap in the hardware they claim to +# support. +(!exists CONFIG_BRCMSMAC | value CONFIG_BRCMSMAC n) | \ +((value CONFIG_BRCMSMAC y | value CONFIG_BRCMSMAC m) & (value CONFIG_B43_BCMA_EXTRA n | !exists CONFIG_B43_BCMA_EXTRA)) + +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not compatible with upstart +value CONFIG_AUDIT_LOGINUID_IMMUTABLE n + +# CONFIG_I2C_DESIGNWARE_PLATFORM is required by Calxeda Highbank +(flavour highbank &/ value CONFIG_I2C_DESIGNWARE_PLATFORM y) | \ +value CONFIG_I2C_DESIGNWARE_PLATFORM m | \ +!exists CONFIG_I2C_DESIGNWARE_PLATFORM + +# CONFIG_RTC_DRV_PL031 is required by Calxeda Highbank +# See LP:1035110 +(flavour highbank &/ value CONFIG_RTC_DRV_PL031 y) | \ +value CONFIG_RTC_DRV_PL031 m | \ +!exists CONFIG_RTC_DRV_PL031 + +# Don't use the generic ehci/ohci code on omap, it doesn't work +((flavour omap &/ value CONFIG_USB_EHCI_HCD_PLATFORM n & value CONFIG_USB_OHCI_HCD_PLATFORM n) | \ + !exists MISSING) --- linux-3.5.0.orig/debian.master/config/config.common.ubuntu +++ linux-3.5.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,6523 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_32BIT=y +CONFIG_3C515=m +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_60XX_WDT=m +CONFIG_6PACK=m +CONFIG_6xx=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_AB3100_CORE=y +CONFIG_AB3100_OTP=m +CONFIG_AC3200=m +CONFIG_AC97_BUS=m +# CONFIG_ACCESSIBILITY is not set +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACERHDF=m +CONFIG_ACER_WMI=m +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_EINJ=m +CONFIG_ACPI_APEI_ERST_DEBUG=m +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BGRT=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_CMPC=m +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_FAN=y +CONFIG_ACPI_HED=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_MEMORY=m +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=m +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +# CONFIG_ACPI_PROCFS is not set +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_PROC_EVENT=y +CONFIG_ACPI_QUICKSTART=m +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_WMI=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5930=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7298=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7746=m +CONFIG_AD7780=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD799X=m +CONFIG_AD799X_RING_BUFFER=y +CONFIG_AD8366=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_AD9850=m +CONFIG_AD9852=m +CONFIG_AD9910=m +CONFIG_AD9951=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +CONFIG_ADB_PMU=y +CONFIG_ADB_PMU_LED=y +# CONFIG_ADB_PMU_LED_IDE is not set +CONFIG_ADE7753=m +CONFIG_ADE7754=m +CONFIG_ADE7758=m +CONFIG_ADE7759=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16204=m +CONFIG_ADIS16209=m +CONFIG_ADIS16220=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADM8211=m +CONFIG_ADT7310=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +CONFIG_ADT7410=m +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ADVANTECH_WDT=m +CONFIG_ADXRS450=m +CONFIG_AEABI=y +CONFIG_AFFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_ATI=m +CONFIG_AGP_EFFICEON=m +CONFIG_AGP_INTEL=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_UNINORTH=m +CONFIG_AGP_VIA=y +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALIX=y +CONFIG_ALI_FIR=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTIVEC=y +CONFIG_AMD8111_ETH=m +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_STATS=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_AMD_NB=y +CONFIG_AMD_NUMA=y +CONFIG_AMD_PHY=y +CONFIG_AMILO_RFKILL=m +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_INTF_ALARM_DEV=y +CONFIG_ANDROID_LOGGER=m +CONFIG_ANDROID_LOW_MEMORY_KILLER=y +CONFIG_ANDROID_TIMED_GPIO=m +CONFIG_ANDROID_TIMED_OUTPUT=y +CONFIG_ANON_INODES=y +CONFIG_ANSLCD=m +CONFIG_APB_TIMER=y +CONFIG_APDS9802ALS=m +CONFIG_APM=m +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_POWER=m +CONFIG_APPLE_AIRPORT=m +CONFIG_APPLE_GMUX=m +CONFIG_APPLICOM=m +CONFIG_APRICOT=m +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCMRING is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX is not set +CONFIG_ARCH_CPU_PROBE_RELEASE=y +# CONFIG_ARCH_DAVINCI is not set +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_EXYNOS is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_H720X is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CPUFREQ=y +CONFIG_ARCH_HAS_CPU_AUTOPROBE=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +CONFIG_ARCH_HAS_OPP=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEMORY_PROBE=y +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_NOMADIK is not set +CONFIG_ARCH_NR_GPIO=0 +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP2PLUS=y +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PICOXCELL is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PRIMA2 is not set +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_PXA is not set +CONFIG_ARCH_RANDOM=y +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_SHMOBILE is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +CONFIG_ARCH_USES_PG_UNCACHED=y +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VT8500 is not set +# CONFIG_ARCH_W90X900 is not set +CONFIG_ARCH_WANTS_FREEZER_CONTROL=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_ARCH_ZYNQ is not set +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARM=y +CONFIG_ARM_AMBA=y +# CONFIG_ARM_APPENDED_DTB is not set +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_742230 is not set +# CONFIG_ARM_ERRATA_742231 is not set +# CONFIG_ARM_ERRATA_751472 is not set +CONFIG_ARM_ERRATA_754322=y +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set +# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set +CONFIG_ARM_GIC=y +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_NR_BANKS=8 +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +# CONFIG_ARPD is not set +CONFIG_ASHMEM=y +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_OLED=m +CONFIG_ASUS_WMI=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_ASYNC_XOR=m +CONFIG_AT1700=m +CONFIG_AT76C50X_USB=m +CONFIG_ATA=y +CONFIG_ATAGS_PROC=y +CONFIG_ATALK=m +CONFIG_ATA_ACPI=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH6KL=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +CONFIG_ATH9K=m +CONFIG_ATH9K_AHB=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_DEBUGFS=y +# CONFIG_ATH9K_DFS_CERTIFIED is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_LEGACY_RATE_CONTROL=y +# CONFIG_ATH9K_MAC_DEBUG is not set +CONFIG_ATH9K_PCI=y +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATL1=m +CONFIG_ATL1C=m +CONFIG_ATL1E=m +CONFIG_ATL2=m +CONFIG_ATM=m +CONFIG_ATMEL=m +CONFIG_ATMEL_PWM=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_GENERIC=y +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set +CONFIG_AUDIT_TREE=y +CONFIG_AUDIT_WATCH=y +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +# CONFIG_AUFS_BRANCH_MAX_511 is not set +CONFIG_AUFS_BR_FUSE=y +CONFIG_AUFS_BR_HFSPLUS=y +CONFIG_AUFS_BR_RAMFS=y +# CONFIG_AUFS_DEBUG is not set +# CONFIG_AUFS_EXPORT is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_POLL=y +# CONFIG_AUFS_PROC_MAP is not set +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +# CONFIG_AUFS_SP_IATTR is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_AUTO_ZRELADDR is not set +CONFIG_AVERAGE=y +CONFIG_AX25=m +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +CONFIG_B43=m +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_DEBUG=y +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PIO=y +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_B43_BCMA=y +# CONFIG_B43_BCMA_EXTRA is not set +CONFIG_B43_BCMA_PIO=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43_HWRNG=y +CONFIG_B43_LEDS=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCI_AUTOSELECT=y +# CONFIG_B43_PCMCIA is not set +CONFIG_B43_PHY_HT=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PIO=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_SSB=y +CONFIG_B44=m +CONFIG_B44_PCI=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_ATMEL_PWM=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_PCF50633=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATTERY_BQ27X00_I2C=y +CONFIG_BATTERY_BQ27X00_PLATFORM=y +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_INTEL_MID=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_PMU=m +CONFIG_BATTERY_SBS=m +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCM_WIMAX=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BE2ISCSI=m +CONFIG_BE2NET=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BINARY_PRINTF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_DELKIN is not set +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_IDEDMA=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEDMA_SFF=y +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_IDETAPE is not set +CONFIG_BLK_DEV_IDE_PMAC=y +CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_BLK_DEV_IT8172 is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_JMICRON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_MD=y +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_NS87415 is not set +CONFIG_BLK_DEV_NVME=m +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_PLATFORM is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_TC86C001 is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_UB=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BMAC=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=m +CONFIG_BNA=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_BOARD_TPCI200=m +CONFIG_BONDING=m +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTX_TEXT is not set +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_BOUNCE=y +CONFIG_BPF_JIT=y +CONFIG_BPQETHER=m +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMDBG is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_SDIO_OOB=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMUTIL=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +# CONFIG_BRIDGE_EBT_ULOG is not set +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BROADCOM_PHY=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BTREE=y +CONFIG_BTRFS_FS=m +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +CONFIG_BT_ATH3K=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_C101=m +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +CONFIG_CACHE_PL310=y +CONFIG_CAIF=m +# CONFIG_CAIF_DEBUG is not set +CONFIG_CAIF_HSI=m +CONFIG_CAIF_NETDEV=m +CONFIG_CAIF_SPI_SLAVE=m +# CONFIG_CAIF_SPI_SYNC is not set +CONFIG_CAIF_TTY=m +CONFIG_CAIF_USB=m +CONFIG_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +CONFIG_CAN=m +CONFIG_CAN_BCM=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_GW=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MSCAN=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_PM_TRACE=y +CONFIG_CAN_RAW=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_OF_PLATFORM=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m +CONFIG_CAN_TI_HECC=m +CONFIG_CAN_TSCAN1=m +CONFIG_CAN_VCAN=m +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +CONFIG_CAPI_TRACE=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CARL9170=m +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_HWRNG=y +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_CASSINI=m +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_CFG80211=m +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +CONFIG_CFG80211_WEXT=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set +CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y +CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4VF=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=y +CONFIG_CIFS=m +CONFIG_CIFS_ACL=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CISS_SCSI_TAPE=y +CONFIG_CLKBLD_I8253=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_I8253=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +CONFIG_CMA=y +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +CONFIG_CMA_SIZE_MBYTES=16 +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +CONFIG_CMDLINE="" +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CMM=y +CONFIG_CNIC=m +CONFIG_CODA_FS=m +# CONFIG_CODE_PATCHING_SELFTEST is not set +CONFIG_COMEDI=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_ACL7225B=m +CONFIG_COMEDI_ADDI_APCI_035=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2016=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3001=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7230=m +CONFIG_COMEDI_ADL_PCI7296=m +CONFIG_COMEDI_ADL_PCI7432=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIDIO=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DAS800=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_FC=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_ISA_DRIVERS=m +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_MISC_DRIVERS=m +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_MULTIQ3=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_COMMON=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL725=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_PCM3730=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_POC=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_SERIAL2002=m +CONFIG_COMEDI_SKEL=m +CONFIG_COMEDI_SSV_DNP=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_UNIOXX5=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_DEBUG is not set +CONFIG_COMPAL_LAPTOP=m +CONFIG_COMPAT=y +CONFIG_COMPAT_BINFMT_ELF=y +# CONFIG_COMPAT_BRK is not set +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +# CONFIG_COMPAT_VDSO is not set +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COSA=m +# CONFIG_CPA_DEBUG is not set +CONFIG_CPU5_WDT=m +CONFIG_CPUSETS=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +# CONFIG_CPU_DCACHE_DISABLE is not set +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_MAPLE=y +CONFIG_CPU_FREQ_PMAC=y +CONFIG_CPU_FREQ_PMAC64=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_HAS_PMU=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRAMFS=m +CONFIG_CRC16=y +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_COMPILE="" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_NX=m +CONFIG_CRYPTO_DEV_OMAP_AES=m +CONFIG_CRYPTO_DEV_OMAP_SHAM=m +CONFIG_CRYPTO_DEV_PADLOCK=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_SSE2_586=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_586=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYSTALHD=m +# CONFIG_CS5535_MFGPT is not set +CONFIG_CS89x0=m +CONFIG_CS89x0_PLATFORM=y +CONFIG_CUSE=m +CONFIG_CXT1E1=m +CONFIG_CYCLADES=m +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_CYZ_INTR is not set +CONFIG_DA9052_WATCHDOG=m +CONFIG_DAVICOM_PHY=y +CONFIG_DCA=m +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DCB=y +CONFIG_DCDBAS=m +CONFIG_DDR=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_DE4X5=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_DEBUGGER=y +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLK_CGROUP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_DEBUG_HIGHBANK_UART=y +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_LIST is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_DEBUG_SEMIHOSTING is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_XZ=y +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DEFAULT_IO_DELAY_TYPE=1 +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="apparmor" +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +# CONFIG_DEFAULT_SECURITY_YAMA is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBU=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +CONFIG_DEPCA=m +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVKMEM is not set +CONFIG_DEVPORT=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DE_AOC=y +CONFIG_DIRECT_GBPAGES=y +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DM9000=m +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +CONFIG_DM9102=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMAR_TABLE=y +# CONFIG_DMATEST is not set +# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_ENGINE=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMI=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=m +CONFIG_DM_BUFIO=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +# CONFIG_DM_DEBUG_SPACE_MAPS is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_LOG_USERSPACE is not set +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_RAID=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_UEVENT=y +# CONFIG_DM_VERITY is not set +CONFIG_DM_ZERO=m +CONFIG_DNET=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DOUBLEFAULT=y +CONFIG_DQL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +# CONFIG_DRM_AST is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I810=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_HSW=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MEDFIELD=y +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_NOUVEAU_DEBUG=y +# CONFIG_DRM_OMAP is not set +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_RADEON_KMS=y +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_TTM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_USB=m +CONFIG_DRM_VIA=m +CONFIG_DRM_VMWGFX=m +CONFIG_DS1682=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +# CONFIG_DT3155_CCIR is not set +CONFIG_DT3155_STREAMING=y +CONFIG_DTC=y +CONFIG_DTL=y +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_AS102=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CAPTURE_DRIVERS=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_CXD2099=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_DRXK=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_HD29L2=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IT913X_FE=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NET=y +CONFIG_DVB_NGENE=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLL=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_S921=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_IT913X=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DW_APB_TIMER=y +CONFIG_DW_DMAC=m +CONFIG_DW_WATCHDOG=m +CONFIG_DX_SEP=m +# CONFIG_DYNAMIC_DEBUG is not set +CONFIG_DYNAMIC_FTRACE=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +# CONFIG_E200 is not set +CONFIG_E2100=m +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_INTEL_MID=y +CONFIG_EASYCAP=m +# CONFIG_EASYCAP_DEBUG is not set +CONFIG_ECHO=m +CONFIG_ECRYPT_FS=y +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_AMD8111=m +CONFIG_EDAC_AMD8131=m +CONFIG_EDAC_CPC925=m +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_HIGHBANK_L2=y +CONFIG_EDAC_HIGHBANK_MC=y +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I82860=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_MCE_INJ=m +CONFIG_EDAC_PASEMI=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_X38=m +CONFIG_EDD=y +CONFIG_EDD_OFF=y +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +CONFIG_EEH=y +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_EFI=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_STUB=y +CONFIG_EFI_VARS=y +# CONFIG_EFI_VARS_PSTORE is not set +CONFIG_EFS_FS=m +CONFIG_EHEA=m +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EISA_PCI_EISA=y +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_EL1=m +CONFIG_EL16=m +CONFIG_EL2=m +CONFIG_EL3=m +CONFIG_ELECTRA_CF=m +CONFIG_ELF_CORE=y +CONFIG_ELPLUS=m +# CONFIG_EMBEDDED is not set +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ENCRYPTED_KEYS=y +CONFIG_ENIC=m +# CONFIG_EPAPR_BOOT is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ES3210=m +CONFIG_ESI_DONGLE=m +CONFIG_ET131X=m +CONFIG_ETH16I=m +CONFIG_ETHERNET=y +CONFIG_ETHOC=m +CONFIG_EUROTECH_WDT=m +CONFIG_EVENTFD=y +CONFIG_EVENT_POWER_TRACING_DEPRECATED=y +CONFIG_EVENT_TRACING=y +CONFIG_EWRK3=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXOFS_FS=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXTCON=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS_VIDEO=y +CONFIG_F71808E_WDT=m +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAULT_INJECTION is not set +CONFIG_FA_DUMP=y +CONFIG_FB=y +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_ARC=m +CONFIG_FB_ARK=m +CONFIG_FB_ARMCLCD=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_AUO_K1900=m +CONFIG_FB_AUO_K1901=m +CONFIG_FB_AUO_K190X=m +CONFIG_FB_BROADSHEET=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_CIRRUS=m +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_GEODE_LX=m +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_I740=m +CONFIG_FB_I810=m +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_IMSTT=y +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_KYRO=m +CONFIG_FB_LE80578=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_MB862XX_LIME is not set +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_METRONOME=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_N411=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_BACKLIGHT=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_OF=y +CONFIG_FB_OMAP2=y +CONFIG_FB_OMAP2_DEBUG_SUPPORT=y +CONFIG_FB_OMAP2_NUM_FBS=3 +CONFIG_FB_PLATINUM=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_PM3=m +CONFIG_FB_PS3=y +CONFIG_FB_PS3_DEFAULT_SIZE_M=9 +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_BACKLIGHT=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM7XX=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UDL=m +CONFIG_FB_UVESA=m +CONFIG_FB_VALKYRIE=y +CONFIG_FB_VESA=m +CONFIG_FB_VGA16=m +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VT8623=m +# CONFIG_FB_WMT_GE_ROPS is not set +CONFIG_FB_XGI=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FHANDLE=y +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIREWIRE_OHCI=m +# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIXED_PHY=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_SUN8x16 is not set +CONFIG_FORCEDETH=m +# CONFIG_FPE_FASTFPE is not set +# CONFIG_FPE_NWFPE_XP is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAME_POINTER=y +CONFIG_FRAME_WARN=1024 +CONFIG_FREEZER=y +CONFIG_FRONTSWAP=y +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_HISTOGRAM=y +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_FSCACHE_STATS=y +CONFIG_FSL_LBC=y +# CONFIG_FSL_ULI1575 is not set +CONFIG_FSNOTIFY=y +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FT1000=m +CONFIG_FT1000_PCMCIA=m +CONFIG_FT1000_USB=m +# CONFIG_FTGMAC100 is not set +CONFIG_FTL=m +# CONFIG_FTMAC100 is not set +CONFIG_FTRACE=y +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_SYSCALLS=y +# CONFIG_FTR_FIXUP_SELFTEST is not set +CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_FUJITSU_TABLET=m +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUSE_FS=y +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GACT_PROB=y +CONFIG_GADGET_UAC1=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GARP=m +CONFIG_GART_IOMMU=y +# CONFIG_GCOV_KERNEL is not set +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ACL=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_NVRAM=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TBSYNC=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_TRACER=y +CONFIG_GEOS=y +# CONFIG_GE_FPGA is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_CS5535=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_INTEL_PMIC=y +CONFIG_GPIO_IT8761E=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_LANGWELL=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_MSIC=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_PCH=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TIMBERDALE=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_UCB1400=y +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_XILINX=y +CONFIG_GREENASIA_FF=y +CONFIG_HAMACHI=m +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_KMEMCHECK=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_GENERIC_HARDIRQS=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_HAVE_MTD_OTP=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_PWM=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_SYSCALL_WRAPPERS=y +CONFIG_HAVE_TEXT_POKE_SMP=y +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +# CONFIG_HCALL_STATS is not set +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_X25=m +CONFIG_HDQ_MASTER_OMAP=m +# CONFIG_HEADERS_CHECK is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +# CONFIG_HERMES_PRISM is not set +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HID=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_ELECOM=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GENERIC=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PID=y +CONFIG_HID_PRIMAX=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WACOM=m +CONFIG_HID_WALTOP=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_WIIMOTE_EXT=y +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HIGHMEM=y +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHPTE=y +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_HIPPI is not set +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_BKM_A4T=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_TELES_CS=m +CONFIG_HISAX_W6692=y +CONFIG_HMC6352=m +CONFIG_HOLTEK_FF=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTESS_SV11=m +CONFIG_HOTPLUG=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HP100=m +CONFIG_HPET=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_TIMER=y +CONFIG_HPFS_FS=m +CONFIG_HPLAN=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_HP_ACCEL=m +CONFIG_HP_ILO=m +CONFIG_HP_WATCHDOG=m +CONFIG_HP_WMI=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HTC_PASIC3=m +CONFIG_HT_IRQ=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y +CONFIG_HVCS=y +CONFIG_HVC_CONSOLE=y +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +CONFIG_HVC_UDBG=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +# CONFIG_HWPOISON_INJECT is not set +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +# CONFIG_HW_RANDOM_ATMEL is not set +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_PASEMI=m +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HYPERV=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_UTILS=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +CONFIG_I2C=y +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_COMPAT=y +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HYDRA=m +CONFIG_I2C_I801=m +CONFIG_I2C_INTEL_MID=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_MPC=m +CONFIG_I2C_MUX=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_OMAP=y +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PASEMI=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_POWERMAC=y +# CONFIG_I2C_PXA_PCI is not set +CONFIG_I2C_SCMI=m +CONFIG_I2C_SI470X=m +CONFIG_I2C_SI4713=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_SMBUS=m +CONFIG_I2C_STUB=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I6300ESB_WDT=m +CONFIG_I7300_IDLE=m +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_I8253_LOCK=y +CONFIG_I8K=m +# CONFIG_IA32_AOUT is not set +CONFIG_IA32_EMULATION=y +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMVETH=m +CONFIG_IBMVIO=y +CONFIG_IBM_ASM=m +CONFIG_IBM_BSR=m +# CONFIG_IBM_EMAC_EMAC4 is not set +# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set +# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_EMAC_RGMII is not set +# CONFIG_IBM_EMAC_TAH is not set +# CONFIG_IBM_EMAC_ZMII is not set +CONFIG_IBM_RTL=m +CONFIG_ICPLUS_PHY=y +CONFIG_ICS932S401=m +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_IDEPCI_PCIBUS_ORDER=y +CONFIG_IDE_ATAPI=y +CONFIG_IDE_GD=y +CONFIG_IDE_GD_ATA=y +# CONFIG_IDE_GD_ATAPI is not set +CONFIG_IDE_PHISON=m +CONFIG_IDE_PROC_FS=y +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_XFER_MODE=y +CONFIG_IE6XX_WDT=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_DRIVERS=m +# CONFIG_IEEE802154_FAKEHARD is not set +CONFIG_IFB=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IGB_DCA=y +# CONFIG_IGB_PTP is not set +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_GPIO_TRIGGER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m +CONFIG_IIO_SIMPLE_DUMMY=m +# CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +# CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set +CONFIG_IIO_ST_HWMON=m +CONFIG_IIO_SW_RING=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_TRIGGER=y +# CONFIG_IKCONFIG is not set +# CONFIG_IMA is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_LRO=y +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_AMSO1100=m +CONFIG_INFINIBAND_AMSO1100_DEBUG=y +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EHCA=m +CONFIG_INFINIBAND_IPATH=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INIT_PASS_ALL_PARAMS=y +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +CONFIG_INOTIFY_USER=y +CONFIG_INPUT=y +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ADBHID=y +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_APMPOWER=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_TILT_POLLED=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m +CONFIG_INPUT_YEALINK=m +CONFIG_INSTRUCTION_DECODER=y +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEL_IDLE=y +CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MENLOW=m +CONFIG_INTEL_MFLD_THERMAL=m +CONFIG_INTEL_MID_DMAC=m +CONFIG_INTEL_MID_POWER_BUTTON=m +CONFIG_INTEL_MID_PTI=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOMMU_HELPER=y +# CONFIG_IOMMU_STRESS is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +# CONFIG_IO_DELAY_0X80 is not set +CONFIG_IO_DELAY_0XED=y +# CONFIG_IO_DELAY_NONE is not set +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +# CONFIG_IO_DELAY_UDELAY is not set +CONFIG_IO_EVENT_IRQ=y +CONFIG_IP1000=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPACK_BUS=m +CONFIG_IPC_NS=y +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +# CONFIG_IPIC is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPPP_FILTER=y +CONFIG_IPV6=y +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPWIRELESS=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_PNP_BOOTP is not set +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_RARP is not set +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SH_TAB_BITS=8 +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_REMAP=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_WORK=y +CONFIG_IRTTY_SIR=m +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_IMON=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC5_SZ_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_ISAPNP=y +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ISCSI_IBFT=m +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TCP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_LOOP=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +CONFIG_ISI=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_ISO9660_FS=m +CONFIG_ISP1301_OMAP=m +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_ITCO_WDT=m +CONFIG_IWL3945=m +CONFIG_IWL4965=m +CONFIG_IWLEGACY=m +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLEGACY_DEBUGFS=y +CONFIG_IWLWIFI=m +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TESTMODE=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +# CONFIG_IWLWIFI_EXPERIMENTAL_MFP is not set +# CONFIG_IWLWIFI_P2P is not set +CONFIG_IWM=m +CONFIG_IWMC3200TOP=m +# CONFIG_IWMC3200TOP_DEBUG is not set +# CONFIG_IWM_DEBUG is not set +CONFIG_IWM_TRACING=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBE_PTP is not set +CONFIG_JBD=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_XATTR is not set +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JME=m +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JUMP_LABEL=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KDB_KEYBOARD=y +# CONFIG_KERNEL_BZIP2 is not set +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_XZ is not set +CONFIG_KEXEC_JUMP=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MCS=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_QT1070=m +# CONFIG_KEYBOARD_QT2160 is not set +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_KGDB_KDB=y +CONFIG_KGDB_LOW_LEVEL_TRAP=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KINGSUN_DONGLE=m +CONFIG_KPROBES=y +# CONFIG_KPROBES_SANITY_TEST is not set +CONFIG_KPROBE_EVENT=y +CONFIG_KRETPROBES=y +CONFIG_KS0108=m +CONFIG_KS0108_DELAY=2 +CONFIG_KS0108_PORT=0x378 +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KS959_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KSZ884X_PCI=m +CONFIG_KTIME_SCALAR=y +CONFIG_KVM=m +CONFIG_KVM_AMD=m +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_KVM_ASYNC_PF=y +# CONFIG_KVM_BOOK3S_64 is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_MMIO=y +# CONFIG_KVM_MMU_AUDIT is not set +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +# CONFIG_L2TP_V3 is not set +CONFIG_LANCE=m +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LBDAF=y +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LD9040=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_S6E63M0=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +# CONFIG_LDM_DEBUG is not set +CONFIG_LEDS=y +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_ATMEL_PWM=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_DELL_NETBOOKS=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_OT200=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA9633=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_RENESAS_TPU=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_WRAP=m +CONFIG_LEGACY_PTYS=y +# CONFIG_LGUEST is not set +# CONFIG_LGUEST_GUEST is not set +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +CONFIG_LIB80211_CRYPT_WEP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_LIBCRC32C=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_CS=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_LIBIPW=m +CONFIG_LINE6_USB=m +# CONFIG_LINE6_USB_DEBUG is not set +# CONFIG_LINE6_USB_DUMP_CTRL is not set +# CONFIG_LINE6_USB_DUMP_MIDI is not set +# CONFIG_LINE6_USB_DUMP_PCM is not set +# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set +# CONFIG_LINE6_USB_RAW is not set +CONFIG_LIRC=m +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IGORPLUGUSB=m +CONFIG_LIRC_IMON=m +CONFIG_LIRC_PARALLEL=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=m +CONFIG_LIRC_SERIAL_TRANSMITTER=y +CONFIG_LIRC_SIR=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_TTUSBIR=m +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ_BUF_KFIFO=y +# CONFIG_LIS3L02DQ_BUF_RING_SW is not set +CONFIG_LITELINK_DONGLE=m +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_LNE390=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCAL_TIMERS=y +CONFIG_LOCKD=m +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +CONFIG_LOCKUP_DETECTOR=y +# CONFIG_LOCK_STAT is not set +# CONFIG_LOGFS is not set +# CONFIG_LOGO is not set +CONFIG_LOOPBACK_TARGET=m +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP486E=m +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=y +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LTPC=m +CONFIG_LXT_PHY=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_M25PXX_USE_FAST_READ=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586MMX is not set +# CONFIG_M586TSC is not set +CONFIG_M686=y +CONFIG_MA600_DONGLE=m +CONFIG_MAC80211=m +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_COUNTERS is not set +CONFIG_MAC80211_HAS_RC=y +# CONFIG_MAC80211_HT_DEBUG is not set +CONFIG_MAC80211_HWSIM=m +# CONFIG_MAC80211_IBSS_DEBUG is not set +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_NOINLINE is not set +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_PID=y +# CONFIG_MAC80211_TKIP_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MESH_SYNC_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MHWMP_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MPATH_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MPL_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_PS_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_TDLS_DEBUG is not set +# CONFIG_MAC802154 is not set +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MACHZ_WDT=m +# CONFIG_MACH_CM_T35 is not set +CONFIG_MACH_CM_T3517=y +# CONFIG_MACH_CRANEBOARD is not set +# CONFIG_MACH_DEVKIT8000 is not set +CONFIG_MACH_IGEP0020=y +CONFIG_MACH_IGEP0030=y +CONFIG_MACH_NOKIA_RM680=y +# CONFIG_MACH_NOKIA_RX51 is not set +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3530_LV_SOM=y +CONFIG_MACH_OMAP3EVM=y +CONFIG_MACH_OMAP3_BEAGLE=y +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP3_TORPEDO=y +CONFIG_MACH_OMAP3_TOUCHBOOK=y +CONFIG_MACH_OMAP_3430SDP=y +CONFIG_MACH_OMAP_3630SDP=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACH_OMAP_LDP=y +CONFIG_MACH_OMAP_ZOOM2=y +CONFIG_MACH_OMAP_ZOOM3=y +CONFIG_MACH_OVERO=y +CONFIG_MACH_SBC3530=y +CONFIG_MACH_TI8148EVM=y +CONFIG_MACH_TI8168EVM=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MAC_FLOPPY=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MANTIS_CORE=m +CONFIG_MARVELL_PHY=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MATOM is not set +CONFIG_MAX1363=m +CONFIG_MAX1363_RING_BUFFER=y +# CONFIG_MAX517 is not set +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MAX8925_POWER=m +# CONFIG_MAXSMP is not set +# CONFIG_MCORE2 is not set +CONFIG_MCP2120_DONGLE=m +# CONFIG_MCRUSOE is not set +CONFIG_MCS_FIR=m +# CONFIG_MCYRIXIII is not set +CONFIG_MD=y +CONFIG_MDA_CONSOLE=m +CONFIG_MDIO=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_GPIO=m +CONFIG_MD_AUTODETECT=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_MEDIA_ATTACH=y +# CONFIG_MEDIA_CONTROLLER is not set +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +# CONFIG_MEFFICEON is not set +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +# CONFIG_MELAN is not set +CONFIG_MEMORY=y +CONFIG_MEMORY_FAILURE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_TIFM_MS=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MEMTEST=y +CONFIG_MFD_CORE=y +CONFIG_MFD_CS5535=m +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_INTEL_MSIC=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_OMAP_USB_HOST=y +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_S5M_CORE=y +CONFIG_MFD_SM501=m +# CONFIG_MFD_SM501_GPIO is not set +CONFIG_MFD_TIMBERDALE=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VX855=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8400=y +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +CONFIG_MG_DISK=m +CONFIG_MG_DISK_RES=0 +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=y +CONFIG_MICROCODE=m +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MIGRATION=y +CONFIG_MII=y +CONFIG_MINIX_FS=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISDN=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_MISDN_L1OIP=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_W6692=m +CONFIG_MIXCOMWD=m +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +CONFIG_MKISS=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_INFINIBAND=m +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=m +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_CB710=m +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_DW=m +# CONFIG_MMC_DW_IDMAC is not set +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_OF_ESDHC=m +CONFIG_MMC_SDHCI_OF_HLWD=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_SDHCI_PXAV2=m +CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_SPI=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_TMIO=m +CONFIG_MMC_TMIO_CORE=m +# CONFIG_MMC_UNSAFE_RESUME is not set +CONFIG_MMC_USHC=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_WBSD=m +CONFIG_MMIOTRACE=y +# CONFIG_MMIOTRACE_TEST is not set +CONFIG_MMU=y +CONFIG_MMU_NOTIFIER=y +CONFIG_MM_OWNER=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_GPIO=m +# CONFIG_MOUSE_INPORT is not set +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +# CONFIG_MPENTIUM4 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +CONFIG_MPIC=y +CONFIG_MPIC_BROKEN_REGREAD=y +CONFIG_MPIC_MSGR=y +# CONFIG_MPIC_WEIRD is not set +CONFIG_MPILIB=y +# CONFIG_MPSC is not set +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +CONFIG_MSPRO_BLOCK=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_OTP=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCG3=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0x0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_IMPA7=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_LATCH_ADDR=m +CONFIG_MTD_LPDDR=m +CONFIG_MTD_M25P80=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DOCG4=m +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_FSL_ELBC=m +CONFIG_MTD_NAND_GPIO=m +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +# CONFIG_MTD_NAND_OMAP_BCH4 is not set +CONFIG_MTD_NAND_OMAP_BCH8=y +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_TMIO=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NETSC520=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OMAP2=m +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_SIM=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_OOPS=m +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=m +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_QINFO_PROBE=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_TS5500=m +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MV643XX_ETH=m +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +CONFIG_MWAVE=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +# CONFIG_MWINCHIP3D is not set +# CONFIG_MWINCHIPC6 is not set +CONFIG_MWL8K=m +CONFIG_MXM_WMI=m +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_N2=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=y +CONFIG_NATSEMI=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NE3210=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_NET5501=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETLABEL=y +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NETPRIO_CGROUP=m +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NETXEN_NIC=m +CONFIG_NET_9P=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NET_9P_RDMA=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CORE=y +CONFIG_NET_DCCPPROBE=m +# CONFIG_NET_DROP_MONITOR is not set +CONFIG_NET_DSA=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MV88E6123_61_65=m +CONFIG_NET_DSA_MV88E6131=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_FC=y +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_NET_NS=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCTPPROBE=m +CONFIG_NET_TCPPROBE=m +# CONFIG_NET_TEAM is not set +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_APPLE=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PASEMI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFC_HCI=m +# CONFIG_NFC_LLCP is not set +CONFIG_NFC_NCI=m +CONFIG_NFC_PN533=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_WILINK=m +CONFIG_NFSD=m +# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_FS=m +CONFIG_NFS_FSCACHE=y +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=m +CONFIG_NLATTR=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_NODES_SPAN_OTHER_NODES=y +# CONFIG_NOHIGHMEM is not set +CONFIG_NOP_TRACER=y +CONFIG_NORTEL_HERMES=m +CONFIG_NOZOMI=m +CONFIG_NO_BOOTMEM=y +CONFIG_NO_HZ=y +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +CONFIG_NSC_GPIO=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +# CONFIG_NUMA_EMU is not set +CONFIG_NV_TCO=m +# CONFIG_N_GSM is not set +CONFIG_N_HDLC=m +CONFIG_OABI_COMPAT=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_OCFS2_DEBUG_MASKLOG=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_DEVICE=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_I2C=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +# CONFIG_OF_SELFTEST is not set +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OLD_MCOUNT=y +CONFIG_OMAP2_DSS=y +# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set +CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y +CONFIG_OMAP2_DSS_DPI=y +# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 +# CONFIG_OMAP2_DSS_RFBI is not set +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_OMAP2_DSS_VENC=y +CONFIG_OMAP2_VRAM=y +CONFIG_OMAP2_VRAM_SIZE=16 +CONFIG_OMAP2_VRFB=y +CONFIG_OMAP3_EMU=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +# CONFIG_OMAP3_SDRC_AC_TIMING is not set +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_32K_TIMER_HZ=128 +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOVMM is not set +CONFIG_OMAP_MBOX_FWK=m +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_PACKAGE_CBB=y +CONFIG_OMAP_PACKAGE_CBP=y +CONFIG_OMAP_PACKAGE_CUS=y +CONFIG_OMAP_PM_NOOP=y +CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_SMARTREFLEX is not set +CONFIG_OMAP_WATCHDOG=m +CONFIG_OMFS_FS=m +CONFIG_OPENVSWITCH=m +CONFIG_OPROFILE=m +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OPTIMIZE_INLINING=y +CONFIG_OPTPROBES=y +CONFIG_ORE=m +CONFIG_ORINOCO_USB=m +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_OVERLAYFS_FS=m +CONFIG_P54_COMMON=m +CONFIG_P54_LEDS=y +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_USB=m +CONFIG_PACKET=y +CONFIG_PADATA=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PANASONIC_LAPTOP=m +CONFIG_PANEL=m +CONFIG_PANEL_ACX565AKM=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_GENERIC_DPI=y +CONFIG_PANEL_LGPHILIPS_LB035Q02=m +CONFIG_PANEL_NEC_NL8048HL11_01B=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PICODLP=m +CONFIG_PANEL_PROFILE=5 +CONFIG_PANEL_SHARP_LS037V7DW01=y +CONFIG_PANEL_TFP410=y +CONFIG_PANEL_TPO_TD043MTEA1=y +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_GUEST=y +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +# CONFIG_PARIDE_EPATC8 is not set +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT=m +CONFIG_PARPORT_AX88796=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +# CONFIG_PASEMI_MAC is not set +CONFIG_PATA_ACPI=y +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARASAN_CF=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_ISAPNP=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_MACIO=y +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OF_PLATFORM=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_PLATFORM=m +CONFIG_PATA_QDI=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_PC300TOO=m +CONFIG_PC8736x_GPIO=m +CONFIG_PC87413_WDT=m +CONFIG_PCCARD_NONSTATIC=y +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +CONFIG_PCH_CAN=m +CONFIG_PCH_DMA=m +CONFIG_PCH_GBE=m +CONFIG_PCH_PHUB=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +CONFIG_PCIEPORTBUS=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIE_PME=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +CONFIG_PCI_BIOS=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_GOANY=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOMMCONFIG is not set +CONFIG_PCI_IOAPIC=y +CONFIG_PCI_IOV=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_XEN=y +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PCSPKR_PLATFORM=y +CONFIG_PCWATCHDOG=m +CONFIG_PD6729=m +CONFIG_PDA_POWER=m +CONFIG_PDC_ADMA=m +CONFIG_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHANTOM=m +CONFIG_PHONE=m +CONFIG_PHONET=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PID_NS=y +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +# CONFIG_PL310_ERRATA_753970 is not set +# CONFIG_PL310_ERRATA_769419 is not set +# CONFIG_PLAT_SPEAR is not set +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_BACKLIGHT=y +CONFIG_PMAC_BACKLIGHT_LEGACY=y +CONFIG_PMAC_MEDIABAY=y +CONFIG_PMAC_RACKMETER=m +CONFIG_PMAC_SMU=y +# CONFIG_PMBUS is not set +CONFIG_PMIC_DA9052=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_OPP=y +CONFIG_PM_RUNTIME=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_TEST_SUSPEND=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PN544_HCI_NFC=m +CONFIG_PN544_NFC=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_OBJLAYOUT=m +CONFIG_PNP=y +CONFIG_PNPACPI=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_POWER3=y +CONFIG_POWER4=y +# CONFIG_POWER4_CPU is not set +# CONFIG_POWER5_CPU is not set +# CONFIG_POWER6_CPU is not set +# CONFIG_POWER7_CPU is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PPC=y +CONFIG_PPC32=y +# CONFIG_PPC601_SYNC_FIX is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_86xx is not set +# CONFIG_PPC_8xx is not set +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S=y +CONFIG_PPC_BOOK3S_32=y +CONFIG_PPC_BOOK3S_64=y +# CONFIG_PPC_CELLEB is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +CONFIG_PPC_CHRP=y +# CONFIG_PPC_CLOCK is not set +# CONFIG_PPC_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +CONFIG_PPC_DISABLE_WERROR=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EMULATE_SSTEP=y +CONFIG_PPC_EPAPR_HV_BYTECHAN=m +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_FPU=y +CONFIG_PPC_HAS_HASH_64K=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +CONFIG_PPC_I8259=y +# CONFIG_PPC_IBM_CELL_BLADE is not set +CONFIG_PPC_ICSWX=y +CONFIG_PPC_ICSWX_PID=y +# CONFIG_PPC_ICSWX_USE_SIGILL is not set +CONFIG_PPC_MAPLE=y +# CONFIG_PPC_MPC512x is not set +# CONFIG_PPC_MPC52xx is not set +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_NATIVE=y +CONFIG_PPC_OF=y +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +# CONFIG_PPC_OF_PLATFORM_PCI is not set +CONFIG_PPC_PASEMI=y +CONFIG_PPC_PASEMI_CPUFREQ=y +CONFIG_PPC_PASEMI_IOMMU=y +# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set +CONFIG_PPC_PASEMI_MDIO=y +CONFIG_PPC_PCI_CHOICE=y +CONFIG_PPC_PERF_CTRS=y +CONFIG_PPC_PMAC=y +CONFIG_PPC_PMAC32_PSURGE=y +CONFIG_PPC_PMAC64=y +CONFIG_PPC_POWERNV=y +CONFIG_PPC_POWERNV_RTAS=y +CONFIG_PPC_PS3=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_RTAS_DAEMON=y +CONFIG_PPC_SMP_MUXED_IPI=y +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_32=y +CONFIG_PPC_STD_MMU_64=y +CONFIG_PPC_SUBPAGE_PROT=y +CONFIG_PPC_UDBG_16550=y +# CONFIG_PPC_WSP is not set +CONFIG_PPDEV=m +CONFIG_PPP=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_MPPE=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +# CONFIG_PQ2ADS is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_NOTIFIERS=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_PRINT_STACK_DEPTH=64 +CONFIG_PRISM2_USB=m +# CONFIG_PRISM54 is not set +CONFIG_PROBE_EVENTS=y +CONFIG_PROCESSOR_SELECT=y +CONFIG_PROC_DEVICETREE=y +CONFIG_PROC_EVENTS=y +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_PS3GELIC_UDBG is not set +# CONFIG_PS3_ADVANCED is not set +CONFIG_PS3_DISK=m +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_FLASH=m +CONFIG_PS3_HTAB_SIZE=20 +CONFIG_PS3_LPM=m +CONFIG_PS3_PS3AV=y +# CONFIG_PS3_REPOSITORY_WRITE is not set +CONFIG_PS3_ROM=m +CONFIG_PS3_STORAGE=m +CONFIG_PS3_SYS_MANAGER=y +CONFIG_PS3_VRAM=m +CONFIG_PS3_VUART=y +CONFIG_PSERIES_IDLE=y +CONFIG_PSERIES_MSI=y +CONFIG_PSTORE_RAM=m +# CONFIG_PTP_1588_CLOCK is not set +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLGE=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QNX6FS_FS=m +CONFIG_QSEMI_PHY=y +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=m +CONFIG_R3964=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8187SE=m +CONFIG_R8712U=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_CADET=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_ISA=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_SI470X=y +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TIMBERDALE=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +CONFIG_RADIO_ZOLTRIX=m +CONFIG_RAID6_PQ=m +CONFIG_RAID_ATTRS=m +CONFIG_RAPIDIO=y +CONFIG_RAPIDIO_CPS_GEN2=y +CONFIG_RAPIDIO_CPS_XX=y +# CONFIG_RAPIDIO_DEBUG is not set +CONFIG_RAPIDIO_DISC_TIMEOUT=30 +CONFIG_RAPIDIO_DMA_ENGINE=y +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_TSI500=y +CONFIG_RAPIDIO_TSI568=y +CONFIG_RAPIDIO_TSI57X=y +CONFIG_RAPIDIO_TSI721=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_FANOUT_EXACT is not set +CONFIG_RCU_FANOUT_LEAF=16 +CONFIG_RCU_FAST_NO_HZ=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_CORE=m +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=m +CONFIG_RDS=m +# CONFIG_RDS_DEBUG is not set +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +CONFIG_RD_BZIP2=y +CONFIG_RD_GZIP=y +CONFIG_RD_LZMA=y +CONFIG_RD_LZO=y +CONFIG_RD_XZ=y +# CONFIG_READABLE_ASM is not set +CONFIG_REALTEK_AUTOPM=y +CONFIG_REALTEK_PHY=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SPI=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_88PM8607=y +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +# CONFIG_REGULATOR_DUMMY is not set +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_PALMAS=m +# CONFIG_REGULATOR_PCAP is not set +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65217=m +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TWL4030=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_RFD_FTL=m +CONFIG_RFKILL=y +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_REGULATOR=m +CONFIG_RFS_ACCEL=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +# CONFIG_RING_BUFFER_BENCHMARK is not set +CONFIG_RIONET=m +CONFIG_RIONET_RX_SIZE=128 +CONFIG_RIONET_TX_SIZE=128 +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPS=y +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT2500USB=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800_LIB=m +CONFIG_RT2X00=m +# CONFIG_RT2X00_DEBUG is not set +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_LEDS=y +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT61PCI=m +CONFIG_RT73USB=m +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_RTAS_PROC=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_DRV_88PM860X=m +CONFIG_RTC_DRV_AB3100=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_GENERIC=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_MAX8925=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_PCF50633=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PS3=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_STK17TA8=m +# CONFIG_RTC_DRV_TEST is not set +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_VRTC=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_LIB=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL8192CE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192DE=m +CONFIG_RTL8192E=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192U=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTLWIFI=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTS5139=m +# CONFIG_RTS5139_DEBUG is not set +CONFIG_RTS_PSTOR=m +# CONFIG_RTS_PSTOR_DEBUG is not set +CONFIG_RT_GROUP_SCHED=y +CONFIG_RT_MUTEXES=y +# CONFIG_RT_MUTEX_TESTER is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXKAD=m +CONFIG_S2IO=m +# CONFIG_SAMPLES is not set +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_Q10=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_HIGHBANK=y +CONFIG_SATA_INIC162X=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PMP=y +CONFIG_SATA_PROMISE=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIL24=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SX4=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SBC7240_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_SBE_2T3E3=m +CONFIG_SBE_PMCC4_NCOMM=y +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +# CONFIG_SBP_TARGET is not set +CONFIG_SC1200_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SC92031=m +CONFIG_SCA3000=m +CONFIG_SCANLOG=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_TRACER=y +CONFIG_SCSI=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +# CONFIG_SCSI_FLASHPOINT is not set +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_IBMVFC=m +CONFIG_SCSI_IBMVFC_TRACE=y +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SCSI_IBMVSCSIS=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_MAC53C94=m +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_MOD=y +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVSAS_DEBUG=y +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_T128=m +CONFIG_SCSI_TGT=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_WAIT_SCAN=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_SCx200_ACB=m +CONFIG_SCx200_GPIO=m +# CONFIG_SCx200_I2C is not set +CONFIG_SCx200_WDT=m +CONFIG_SDIO_UART=m +CONFIG_SDLA=m +CONFIG_SEALEVEL_4021=m +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=y +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_YAMA=y +CONFIG_SEEQ8005=m +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_AK8975=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_AMS=m +CONFIG_SENSORS_AMS_I2C=y +CONFIG_SENSORS_AMS_PMU=y +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_BH1780=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_LIS3_SPI=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_TWL4030_MADC=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_8250_EXAR_ST16C554=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_AMBA_PL010=m +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_ICOM=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX3107=m +CONFIG_SERIAL_MFD_HSU=m +CONFIG_SERIAL_MRST_MAX3110=m +CONFIG_SERIAL_OF_PLATFORM=m +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_PCH_UART=m +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +# CONFIG_SERIAL_PMACZILOG_TTYS is not set +CONFIG_SERIAL_TIMBERDALE=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_XILINX_XPS_PS2=m +CONFIG_SFC=m +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SFI=y +CONFIG_SGI_IOC4=m +CONFIG_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +CONFIG_SIMPLE_GPIO=y +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SKFP=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +# CONFIG_SLAB is not set +CONFIG_SLABINFO=y +CONFIG_SLHC=y +CONFIG_SLICOSS=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +# CONFIG_SLOB is not set +CONFIG_SLUB=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SMC911X=m +CONFIG_SMC9194=m +CONFIG_SMC91X=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SMSC37B787_WDT=m +CONFIG_SMSC911X=m +# CONFIG_SMSC911X_ARCH_HOOKS is not set +CONFIG_SMSC9420=m +CONFIG_SMSC_PHY=y +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMS_SDIO_DRV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_USB_DRV=m +CONFIG_SM_FTL=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_AD1889=m +CONFIG_SND_ADLIB=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALOOP=m +CONFIG_SND_ALS100=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_AOA=m +CONFIG_SND_AOA_FABRIC_LAYOUT=m +CONFIG_SND_AOA_ONYX=m +CONFIG_SND_AOA_SOUNDBUS=m +CONFIG_SND_AOA_SOUNDBUS_I2S=m +CONFIG_SND_AOA_TAS=m +CONFIG_SND_AOA_TOONIE=m +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT1605=m +CONFIG_SND_AZT2316=m +CONFIG_SND_AZT2320=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_CA0106=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_DARLA24=m +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ECHO3G=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_FIREWIRE_SPEAKERS=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_GINA20=m +CONFIG_SND_GINA24=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_HDA_CODEC_ANALOG=y +CONFIG_SND_HDA_CODEC_CA0110=y +CONFIG_SND_HDA_CODEC_CA0132=y +CONFIG_SND_HDA_CODEC_CIRRUS=y +CONFIG_SND_HDA_CODEC_CMEDIA=y +CONFIG_SND_HDA_CODEC_CONEXANT=y +CONFIG_SND_HDA_CODEC_HDMI=y +CONFIG_SND_HDA_CODEC_REALTEK=y +CONFIG_SND_HDA_CODEC_SI3054=y +CONFIG_SND_HDA_CODEC_SIGMATEL=y +CONFIG_SND_HDA_CODEC_VIA=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_INPUT_JACK=y +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_POWER_SAVE=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_ISA=y +CONFIG_SND_ISIGHT=m +CONFIG_SND_JACK=y +CONFIG_SND_JAZZ16=m +CONFIG_SND_KCTL_JACK=y +CONFIG_SND_KORG1212=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MFLD_MACHINE=m +CONFIG_SND_MIA=m +CONFIG_SND_MIRO=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MONA=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MSND_CLASSIC=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_IGEP0020=m +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_OMAP3EVM=m +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m +CONFIG_SND_OMAP_SOC_OVERO=m +CONFIG_SND_OMAP_SOC_SDP3430=m +CONFIG_SND_OMAP_SOC_ZOOM2=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_OXYGEN=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_PCI=y +CONFIG_SND_PCMCIA=y +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCSP=m +CONFIG_SND_PCXHR=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y +CONFIG_SND_PPC=y +CONFIG_SND_PS3=m +CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SB16=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SB16_DSP=m +CONFIG_SND_SB8=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SC6000=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SIS7019=m +CONFIG_SND_SOC_88PM860X=m +CONFIG_SND_SOC_AD1836=m +CONFIG_SND_SOC_AD193X=m +CONFIG_SND_SOC_AD73311=m +CONFIG_SND_SOC_ADAU1373=m +CONFIG_SND_SOC_ADAV80X=m +CONFIG_SND_SOC_ADS117X=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4535=m +CONFIG_SND_SOC_AK4641=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK4671=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_ALC5632=m +CONFIG_SND_SOC_ALL_CODECS=m +CONFIG_SND_SOC_CS4270=m +CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L52=m +CONFIG_SND_SOC_CS42L73=m +CONFIG_SND_SOC_CX20442=m +CONFIG_SND_SOC_DA7210=m +CONFIG_SND_SOC_DFBMCS320=m +CONFIG_SND_SOC_JZ4740_CODEC=m +CONFIG_SND_SOC_L3=m +CONFIG_SND_SOC_LM4857=m +CONFIG_SND_SOC_LM49453=m +CONFIG_SND_SOC_MAX9768=m +CONFIG_SND_SOC_MAX98088=m +CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX9850=m +CONFIG_SND_SOC_MAX9877=m +CONFIG_SND_SOC_MC13783=m +CONFIG_SND_SOC_ML26124=m +CONFIG_SND_SOC_PCM3008=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_SOC_SN95031=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC26=m +CONFIG_SND_SOC_TLV320AIC32X4=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TLV320DAC33=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_UDA134X=m +CONFIG_SND_SOC_UDA1380=m +CONFIG_SND_SOC_WL1273=m +CONFIG_SND_SOC_WM1250_EV1=m +CONFIG_SND_SOC_WM2000=m +CONFIG_SND_SOC_WM2200=m +CONFIG_SND_SOC_WM5100=m +CONFIG_SND_SOC_WM8350=m +CONFIG_SND_SOC_WM8400=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8727=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8900=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8904=m +CONFIG_SND_SOC_WM8940=m +CONFIG_SND_SOC_WM8955=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8961=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8971=m +CONFIG_SND_SOC_WM8974=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8983=m +CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_WM8988=m +CONFIG_SND_SOC_WM8990=m +CONFIG_SND_SOC_WM8991=m +CONFIG_SND_SOC_WM8993=m +CONFIG_SND_SOC_WM8994=m +CONFIG_SND_SOC_WM8995=m +CONFIG_SND_SOC_WM8996=m +CONFIG_SND_SOC_WM9081=m +CONFIG_SND_SOC_WM9090=m +CONFIG_SND_SOC_WM_HUBS=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_SST_PLATFORM=m +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_TEA575X=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_USX2Y=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VMASTER=y +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_WSS_LIB=m +CONFIG_SND_YMFPCI=m +CONFIG_SOC_AM33XX=y +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_IMX074=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9T112=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_OV2640=m +CONFIG_SOC_CAMERA_OV5642=m +CONFIG_SOC_CAMERA_OV6650=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_SOC_CAMERA_OV9640=m +CONFIG_SOC_CAMERA_OV9740=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_RJ54N1=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_OMAP3430=y +CONFIG_SOC_TI81XX=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLO6X10=m +CONFIG_SONYPI=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_LAPTOP=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SP5100_TCO=m +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSE_IRQ=y +# CONFIG_SPARSE_RCU_POINTER is not set +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTPC=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_DECPC=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DTLK=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +CONFIG_SPEAKUP_SYNTH_KEYPC=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPI=y +CONFIG_SPI_ALTERA=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DW_MID_DMA=y +# CONFIG_SPI_DW_MMIO is not set +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_TOPCLIFF_PCH=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPU_BASE=y +CONFIG_SPU_FS=m +CONFIG_SPU_FS_64K_LS=y +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SR_REPORT_TIME_LIMIT=100 +CONFIG_SSB=m +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SILENT is not set +CONFIG_SSB_SPROM=y +CONFIG_SSFDC=m +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STAGING=y +CONFIG_STALDRV=y +CONFIG_STE10XP=y +# CONFIG_STMMAC_CHAINED is not set +# CONFIG_STMMAC_DA is not set +# CONFIG_STMMAC_DEBUG_FS is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=y +CONFIG_STMMAC_RING=y +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STOP_MACHINE=y +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_STUB_POULSBO is not set +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNGEM_PHY=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSV_FS=m +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_WACOM=m +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_TASK_SIZE=0xc0000000 +CONFIG_TASK_XACCT=y +CONFIG_TAU=y +# CONFIG_TAU_AVERAGE is not set +# CONFIG_TAU_INT is not set +CONFIG_TC1100_WMI=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TIS=m +CONFIG_TCIC=m +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_QLA2XXX=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TEHUTI=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_POWER=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERM_ADT746X=y +CONFIG_THERM_PM72=m +CONFIG_THERM_WINDTUNNEL=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUG is not set +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THRUSTMASTER_FF=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_TICK_ONESHOT=y +CONFIG_TIDSPBRIDGE=m +# CONFIG_TIDSPBRIDGE_BACKTRACE is not set +# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set +CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000 +# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set +CONFIG_TIDSPBRIDGE_RECOVERY=y +CONFIG_TIFM_7XX1=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TINY_RCU=y +CONFIG_TIPC=m +# CONFIG_TIPC_ADVANCED is not set +# CONFIG_TIPC_DEBUG is not set +# CONFIG_TI_CPSW is not set +CONFIG_TI_DAC7512=m +CONFIG_TI_DAVINCI_CPDMA=m +# CONFIG_TI_DAVINCI_EMAC is not set +CONFIG_TI_DAVINCI_MDIO=m +CONFIG_TI_EMIF=m +CONFIG_TI_ST=m +CONFIG_TLAN=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TOIM3232_DONGLE=m +CONFIG_TOPSTAR_LAPTOP=m +# CONFIG_TOSHIBA is not set +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_FIR=m +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_DA9034=m +CONFIG_TOUCHSCREEN_DA9052=m +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_INTEL_MID=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m +CONFIG_TOUCHSCREEN_TI_TSCADC=m +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_W90X900=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACEPOINTS=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TRANZPORT=m +CONFIG_TREE_RCU=y +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_TRUSTED_KEYS=y +CONFIG_TSL2583=m +CONFIG_TSL2x7x=m +CONFIG_TTPCI_EEPROM=m +CONFIG_TTY_PRINTK=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=y +# CONFIG_TUNE_CELL is not set +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6030_PWM=m +CONFIG_TWL6030_USB=m +CONFIG_TYPHOON=m +CONFIG_U3_DART=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UCB1400_CORE=m +CONFIG_UDBG_RTAS_CONSOLE=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UID16=y +CONFIG_UIO=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX_DIAG=m +CONFIG_UPROBES=y +CONFIG_UPROBE_EVENT=y +CONFIG_USB=y +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACM=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AN2720=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BELKIN=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CHIPIDEA=m +# CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_COMMON=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DSBR=m +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_DEBUG is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EG20T=m +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_OMAP=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_ENESTORAGE=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB=y +# CONFIG_USB_FILE_STORAGE is not set +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_DUALSPEED=y +CONFIG_USB_GADGET_MUSB_HDRC=m +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_SUPERSPEED=y +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GL860=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_DBGP=m +# CONFIG_USB_G_DBGP_PRINTK is not set +CONFIG_USB_G_DBGP_SERIAL=y +CONFIG_USB_G_HID=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_MULTI_RNDIS=y +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_INVENTRA_DMA=y +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LIBUSUAL=y +CONFIG_USB_M5602=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MON=m +CONFIG_USB_MOUSE=m +CONFIG_USB_MR800=m +# CONFIG_USB_MUSB_AM35X is not set +CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_NET2272=m +CONFIG_USB_NET2272_DMA=y +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_OMAP3=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OMAP is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_S2255=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MOTOROLA=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_QUATECH2=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_ZIO=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SI470X=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STV06XX=m +CONFIG_USB_SUPPORT=y +CONFIG_USB_SUSPEND=y +CONFIG_USB_SWITCH_FSA9480=m +CONFIG_USB_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_ULPI=y +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_VL600=m +CONFIG_USB_WDM=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_WPAN_HCD=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YUREX=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZERO=m +# CONFIG_USB_ZERO_HNPTEST is not set +CONFIG_USB_ZR364XX=m +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_USE_OF=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_UTS_NS=y +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_WHCI=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_ISA_PARPORT_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PCI_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_V4L_USB_DRIVERS=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VFP=y +CONFIG_VFPv3=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_CONSOLE=y +CONFIG_VGA_SWITCHEROO=y +CONFIG_VHOST_NET=m +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_VIA_WDT=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7343=m +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DM6446_CCDC=m +CONFIG_VIDEO_DT3155=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m +CONFIG_VIDEO_FB_IVTV=m +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MEDIA=m +CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OMAP2_VOUT=m +CONFIG_VIDEO_OMAP2_VOUT_VRFB=y +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_SAA7191=m +CONFIG_VIDEO_SH_MOBILE_CEU=m +CONFIG_VIDEO_SH_MOBILE_CSI2=m +CONFIG_VIDEO_SR030PC30=m +CONFIG_VIDEO_TCM825X=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_TIMBERDALE=m +CONFIG_VIDEO_TLG2300=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPFE_CAPTURE=m +CONFIG_VIDEO_VPSS_SYSTEM=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_VS6624=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIRTIO_CONSOLE=m +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=y +CONFIG_VLAN_8021Q=m +CONFIG_VLSI_FIR=m +CONFIG_VM86=y +CONFIG_VME_BUS=m +CONFIG_VME_CA91CX42=m +CONFIG_VME_PIO2=m +CONFIG_VME_TSI148=m +CONFIG_VME_USER=m +CONFIG_VMIVME_7805=m +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +CONFIG_VMSPLIT_3G=y +CONFIG_VMWARE_BALLOON=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_VMXNET3=m +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VORTEX=m +CONFIG_VSX=y +CONFIG_VT=y +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_W1=m +CONFIG_W1_CON=y +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W35UND=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WANXL=m +CONFIG_WAN_ROUTER_DRIVERS=m +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +CONFIG_WD80x3=m +CONFIG_WDT=m +CONFIG_WDTPCI=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_IWMC3200_SDIO=y +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WINDFARM=m +CONFIG_WINDFARM_PM112=m +CONFIG_WINDFARM_PM121=m +CONFIG_WINDFARM_PM72=m +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM91=m +CONFIG_WINDFARM_RM31=m +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_WIZNET_BUS_ANY=y +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +CONFIG_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL12XX_PLATFORM_DATA=y +CONFIG_WLAGS49_H2=m +CONFIG_WLAGS49_H25=m +CONFIG_WLAN=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WL_TI=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X86=y +CONFIG_X86_32_IRIS=m +# CONFIG_X86_32_NON_STANDARD is not set +CONFIG_X86_32_SMP=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_64_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_APM_BOOT=y +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_BSWAP=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_CPUID=m +CONFIG_X86_DEBUGCTLMSR=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_HT=y +CONFIG_X86_INTEL_MID=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_INVLPG=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_LONGHAUL=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_MCE=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_XEON75XX=m +CONFIG_X86_MDFLD=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=m +CONFIG_X86_NEED_RELOCS=y +CONFIG_X86_NUMACHIP=y +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_PAE=y +CONFIG_X86_PAT=y +CONFIG_X86_PCC_CPUFREQ=y +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_PTDUMP is not set +# CONFIG_X86_RDC321X is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=y +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_X86_SPEEDSTEP_SMI=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_X86_UV is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_WANT_INTEL_MID=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_X2APIC=y +# CONFIG_X86_X32 is not set +CONFIG_X86_XADD=y +CONFIG_XEN=y +CONFIG_XENFS=m +CONFIG_XEN_ACPI_PROCESSOR=y +CONFIG_XEN_BACKEND=y +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_COMPAT_XENFS=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_DOM0=y +CONFIG_XEN_FBDEV_FRONTEND=m +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_PRIVILEGED_GUEST=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_SELFBALLOONING=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_TMEM=y +CONFIG_XEN_WDT=m +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_XFRM_SUB_POLICY is not set +CONFIG_XFRM_USER=m +# CONFIG_XFS_DEBUG is not set +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XILINX_AXI_EMAC=m +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_LL_TEMAC=m +# CONFIG_XIP_KERNEL is not set +# CONFIG_XMON is not set +CONFIG_XO15_EBOOK=m +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XPS_USB_HCD_XILINX=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZCACHE=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZISOFS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZNET=m +CONFIG_ZONE_DMA=y +CONFIG_ZRAM=m +# CONFIG_ZRAM_DEBUG is not set +CONFIG_ZSMALLOC=y --- linux-3.5.0.orig/debian.master/config/annotations +++ linux-3.5.0/debian.master/config/annotations @@ -0,0 +1,471 @@ +# Default filesystems are generally built-in +CONFIG_EXT3_FS y note +CONFIG_EXT4_FS y note + +# Some modules have no clear way to autoload them. +# filesystems: +CONFIG_FUSE_FS y note +CONFIG_ECRYPT_FS y note +# AGP drivers: +CONFIG_AGP y note +CONFIG_AGP_AMD64 y note +CONFIG_AGP_INTEL y note +CONFIG_AGP_VIA y note +CONFIG_AGP_AMD y note +CONFIG_AGP_NVIDIA y note +# cpu governers: +CONFIG_CPU_FREQ_GOV_CONSERVATIVE y note +CONFIG_CPU_FREQ_GOV_ONDEMAND y note +CONFIG_CPU_FREQ_GOV_PERFORMANCE y note +CONFIG_CPU_FREQ_GOV_POWERSAVE y note +CONFIG_CPU_FREQ_GOV_USERSPACE y note +# cpufreq drivers +CONFIG_X86_ACPI_CPUFREQ y note +CONFIG_X86_POWERNOW_K8 y note +CONFIG_X86_SPEEDSTEP_CENTRINO y note +CONFIG_X86_SPEEDSTEP_ICH y note +CONFIG_X86_SPEEDSTEP_SMI y note +# devices: +CONFIG_CHR_DEV_SG y note + +# Boot essential items are always =y +# subsystems: +CONFIG_ATA y note +CONFIG_USB y note +CONFIG_RFKILL y note +CONFIG_INPUT y note +CONFIG_SCSI y note +CONFIG_HOTPLUG_PCI y note +CONFIG_HOTPLUG_PCI_PCIE y note +CONFIG_HWMON y note +CONFIG_HW_RANDOM y note +CONFIG_MMC y note +CONFIG_CRYPTO y note +CONFIG_FB y note +CONFIG_PHYLIB y note +CONFIG_I2C y note +CONFIG_CONNECTOR y note +CONFIG_THERMAL y note +CONFIG_POWER_SUPPLY y note +CONFIG_TCG_TPM y note +# networking: +CONFIG_INET_LRO y note +CONFIG_MII y note +CONFIG_TUN y note +CONFIG_TCP_CONG_CUBIC y note +# network protocols: +CONFIG_UNIX y note +CONFIG_PACKET y note +CONFIG_FDDI y note +CONFIG_PPP y note +# IPv6 packets trigger auto-loading of this module and it is easy to trigger +# a DOS unless this is builtin. It is also a critical protocol going forward +# and will become boot essential. +CONFIG_IPV6 y note +# input devices +CONFIG_INPUT_EVDEV y note +CONFIG_INPUT_MOUSEDEV y note +CONFIG_INPUT_UINPUT y note +# ACPI drivers +CONFIG_ACPI_AC y note +CONFIG_ACPI_BATTERY y note +CONFIG_ACPI_BUTTON y note +CONFIG_ACPI_FAN y note +CONFIG_ACPI_PROCESSOR y note +CONFIG_ACPI_THERMAL y note +CONFIG_ACPI_HED y note +CONFIG_ACPI_CONTAINER y note + +# IPv6 configuration. +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION m note + +# Boot essential disk devices +CONFIG_IOSCHED_CFQ y note +CONFIG_IOSCHED_DEADLINE y note +CONFIG_EDD y note + +# Core devices +CONFIG_LEDS_CLASS y note + +# Core CPU drivers +CONFIG_FW_LOADER y note + +# Core debugging support +CONFIG_KGDB_SERIAL_CONSOLE y note + +# Common boot essential +CONFIG_SERIAL_8250 p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_SERIAL_8250_PCI p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_SERIAL_8250_PNP p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_XZ_DEC y note +CONFIG_KEYBOARD_ATKBD y note +CONFIG_SERIO y note +CONFIG_SERIO_I8042 y note +CONFIG_SERIO_LIBPS2 y note + +# XEN +CONFIG_XEN_BLKDEV_FRONTEND y note +CONFIG_XEN_NETDEV_FRONTEND y note + +# KVM +CONFIG_VIRTIO_BLK p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_NET p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_PCI p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_MMIO p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_BALLOON p policy<(arch armel armhf &/ value n) | value m> note + +# VIRT +CONFIG_SCSI_VIRTIO m note + +# Boot essential dependancies +CONFIG_BLK_CGROUP y note +CONFIG_BLK_DEV_DM y note +CONFIG_BLK_DEV_LOOP y note +CONFIG_BLK_DEV_MD y note +CONFIG_BLK_DEV_RAM y note +CONFIG_BLK_DEV_SD y note +CONFIG_BLK_DEV_SR y note +CONFIG_DNS_RESOLVER y note +CONFIG_CRC_T10DIF y note +CONFIG_ZSMALLOC y note +# CONFIG_ECRYPTFS or CONFIG_DM +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_CRC32C_INTEL y note +CONFIG_CRYPTO_DEV_PADLOCK y note +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_AES y note +CONFIG_CRYPTO_CBC y note +CONFIG_CRYPTO_ECB y note +CONFIG_CRYPTO_HMAC y note +CONFIG_CRYPTO_MANAGER y note +CONFIG_CRYPTO_MD5 y note +CONFIG_CRYPTO_SHA1 y note +CONFIG_CRYPTO_SHA256 y note +CONFIG_CRYPTO_LZO p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_CRC16 y note +CONFIG_CRC32 y note +CONFIG_ENCRYPTED_KEYS y note +CONFIG_TRUSTED_KEYS y note +# DRM +CONFIG_BACKLIGHT_CLASS_DEVICE y note +# cpu freq +CONFIG_CPU_FREQ_STAT p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note + +# Interesting new subsystems +CONFIG_NFC m note +CONFIG_NFC_NCI m note + +# EXPERIMENTAL Network protocols are generally enabled to allow testing. +CONFIG_ECONET m note +CONFIG_IEEE802154 m note +CONFIG_LAPB m note +CONFIG_NET_DSA m note +CONFIG_RDS m note +CONFIG_TIPC m note +CONFIG_X25 m note + +# ATA controolers: some are boot essential on specific architectures +CONFIG_ATA_GENERIC p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_ATA_PIIX p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_PATA_ACPI p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_PATA_SIS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SATA_SVW p policy<(arch powerpc &/ value y) | value m> note +CONFIG_SATA_AHCI p policy<(arch i386 amd64 powerpc &/ value y) | value m> note + +# x86 boot essential +CONFIG_PCI_IOAPIC p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_RTC_DRV_CMOS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SCSI_SPI_ATTRS p policy<(arch i386 amd64 &/ value y) | value m> note + +# ARM/EFI requires FAT for kernel installation. +CONFIG_FAT_FS p policy<(arch armel armhf i386 amd64 &/ value y) | value m> note +CONFIG_VFAT_FS p policy<(arch armel armhf i386 amd64 &/ value y) | value m> note +CONFIG_NLS_CODEPAGE_437 p policy<((flavour omap omap4 | arch i386 amd64) &/ value y) | value m> note +CONFIG_NLS y note + +# ARM boot essential devices +CONFIG_MMC_BLOCK p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_OMAP_HS p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_FB_OMAP2 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_I2C_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_NOP_USB_XCEIV p policy<(flavour omap highbank &/ value y) | value m> note +CONFIG_PANEL_GENERIC_DPI p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_REGULATOR_FIXED_VOLTAGE p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SERIAL_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_GPIO_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_OMAP2_DSS p policy<(arch armel armhf &/ value y) | value m> note + +# omap3/omap4 boot essential +CONFIG_MTD p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_BLKDEVS p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_BLOCK p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_CHAR p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_NAND p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP2 p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_OF_PARTS p policy<(flavour omap &/ value y) | value m> note +CONFIG_RTC_DRV_TWL4030 p policy<(flavour omap omap4 &/ value y) | value m> note +CONFIG_KEYBOARD_OMAP4 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_KEYBOARD_TWL4030 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_NET_SMSC95XX p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_USBNET p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_DRM p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_HWSPINLOCK_OMAP y note +CONFIG_HWSPINLOCK_ATMEL n note +CONFIG_HW_RANDOM_ATMEL n note +CONFIG_LEDS_GPIO p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LEDS_PWM p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LEDS_TRIGGER_HEARTBEAT p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LIB80211 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MMC_OMAP p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MEDIA_SUPPORT p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MFD_SM501 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_INVENTRA_DMA p policy<(flavour omap &/ value y) | value n> note + +# highbank boot essential +CONFIG_SATA_AHCI_PLATFORM p policy<(flavour highbank &/ value y) | (flavour omap4 &/ value n) | value m> note flag +CONFIG_EXT2_FS p policy<(flavour highbank &/ value y) | value m> note +CONFIG_KEYBOARD_HIGHBANK p policy<(flavour highbank &/ value y) | value m> note +CONFIG_I2C_DESIGNWARE_PLATFORM p policy<(flavour highbank &/ value y) | value m> note + +# POWERPC boot essential devices +CONFIG_FB_VOODOO1 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_3DFX p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_PS3 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_ATY128 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_RADEON p policy<(arch powerpc &/ value y) | value m> note +CONFIG_I2C_POWERMAC p policy<(arch powerpc &/ value y) | value m> note +CONFIG_NVRAM p policy<(arch powerpc &/ value y) | value m> note +CONFIG_HW_RANDOM_PASEMI p policy<(arch powerpc &/ value y) | value m> note +CONFIG_PS3_PS3AV p policy<(arch powerpc &/ value y) | value m> note +CONFIG_PS3_SYS_MANAGER p policy<(arch powerpc &/ value y) | value m> note +CONFIG_SERIAL_PMACZILOG p policy<(arch powerpc &/ value y) | value m> note +CONFIG_THERM_ADT746X p policy<(arch powerpc &/ value y) | value m> note + +# XEN host boot essential +CONFIG_XEN_ACPI_PROCESSOR p policy<(arch i386 amd64 &/ value y) | value m> + +# devices which make no sense on some platforms +CONFIG_PCCARD p policy<(arch armel armhf &/ value n) | value m> note + +# GRUB2 boot requirement +CONFIG_FRAMEBUFFER_CONSOLE y note + +# TESTING options +CONFIG_DMATEST n flag +CONFIG_DEBUG_NX_TEST n flag +CONFIG_BACKTRACE_SELF_TEST n flag +CONFIG_FB_VIRTUAL n flag +CONFIG_MMC_TEST n flag +CONFIG_MMIOTRACE_TEST n flag +CONFIG_RCU_TORTURE_TEST n flag +CONFIG_IEEE802154_FAKEHARD n flag +CONFIG_LKDTM n flag +CONFIG_WL12XX_SDIO_TEST n flag +CONFIG_RING_BUFFER_BENCHMARK n flag +CONFIG_RTC_DRV_TEST n flag +CONFIG_USB_DUMMY_HCD n flag +CONFIG_PCIEAER_INJECT n flag +CONFIG_PPS_CLIENT_KTIMER n flag +CONFIG_CRC32_SELFTEST n flag +CONFIG_OF_SELFTEST n flag +CONFIG_USB_ZERO_HNPTEST n flag + +# DEBUGGING option +CONFIG_BRCMDBG - flag +CONFIG_USB_XHCI_HCD_DEBUGGING n flag + +# USB +CONFIG_USB_EHCI_HCD y note +CONFIG_USB_OHCI_HCD y note +CONFIG_USB_UHCI_HCD y note +CONFIG_USB_XHCI_HCD y note + +# ARM commonly use sd cards as root disks. +CONFIG_MMC_SDHCI p policy<(flavour omap highbank &/ value y) | value m> note + +# Security risk. +CONFIG_ACPI_CUSTOM_METHOD n note + +# DM_RAID45 only appears in PC BIOS based systems +CONFIG_DM_RAID45 p policy<(arch i386 amd64 &/ value m) | value n> note + +# EFI_VARS is required for EFI boot +CONFIG_EFI_VARS y note + +# OLD/DEPRECATED things +CONFIG_BLK_DEV_HD n note +CONFIG_IA32_AOUT n note +CONFIG_BLK_DEV_SR_VENDOR n note +CONFIG_MOUSE_INPORT n note +CONFIG_OMAP_IOVMM n note + +# Debugging options are off by default, we want those below. +CONFIG_DEBUG_FS y note +CONFIG_DEBUG_KERNEL y note + +# IKCONFIG not required +CONFIG_IKCONFIG n note + +# POWERPC +CONFIG_PATA_MACIO y note +CONFIG_I2C_ALGOBIT p policy<(arch powerpc &/ value y) | value m> note + +# Non-obvious filesystems. +CONFIG_USB_FUNCTIONFS m note +CONFIG_USB_GADGETFS m note +CONFIG_LOGFS n note +CONFIG_USB_OTG_BLACKLIST_HUB n note +CONFIG_USB_OTG_WHITELIST n note + +# filesystem misc +CONFIG_AUFS_PROC_MAP n note +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note + +# ARM omap3 +CONFIG_PANEL_DVI y note +CONFIG_PANEL_SHARP_LS037V7DW01 p policy<(flavour omap &/ value y) | value m> note +CONFIG_PANEL_TPO_TD043MTEA1 p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_MCBSP p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE p policy<(flavour omap &/ value y) | value m> note +CONFIG_USB_MUSB_TUSB6010 p policy<(flavour omap highbank &/ value n) | value m> note +CONFIG_USB_OMAP n note + +# ARM gadget mode +CONFIG_USB_GADGET p policy<(flavour omap omap4 &/ value y) | value m> note +CONFIG_USB_OTG y note +CONFIG_USB_G_MULTI p policy<(flavour omap omap4 &/ value m) | value n> note +CONFIG_USB_M66592 n note + +# powerpc64-smp requires this as CONFIG_MAPLE is enabled +CONFIG_ATA_NONSTANDARD p policy<(flavour powerpc64-smp &/ value y) | value n> note + +# APM Emulation is deliberately off on ARM to prevent new use. +CONFIG_APM_EMULATION p policy<(arch armel armhf &/ value n) | value m> note + +# BLK_DEV_XD -- ancient drives +CONFIG_BLK_DEV_XD n note + +# Geode specific, should be enabled by drivers that need it not manually. +CONFIG_CS5535_MFGPT n note +CONFIG_GPIO_CS5535 p policy<(value CONFIG_OLPC_X01_SCI y &/ value y) | value m> note + +# DVB_DUMMY_FE only recommended for experts +CONFIG_DVB_DUMMY_FE n note + +# ARM unsupported SOC +CONFIG_FTGMAC100 n note +CONFIG_FTMAC100 n note +CONFIG_ARCH_EXYNOS n note +CONFIG_ARCH_HIGHBANK n note +CONFIG_ARCH_PICOXCELL n note +CONFIG_ARCH_PRIMA2 n note +CONFIG_ARCH_ZYNQ n note + +# Options which really should not have an option at all. +CONFIG_SIGMA n note +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL n + +# Items which are simply miss identified +CONFIG_DEBUG_LL_UART_NONE y note +CONFIG_USB_SERIAL_DEBUG m note + +# Experimental +CONFIG_DM_THIN_PROVISIONING m note +CONFIG_RTL8192DE m note +CONFIG_BLK_DEV_UMEM m note + +# PHY device with non-standard naming. +CONFIG_B43_PHY_HT y note +CONFIG_B43_PHY_N y note +CONFIG_STE10XP y note + +# Optional scheduling control +CONFIG_CFS_BANDWIDTH y note + +# Hardware specific experimental options. +CONFIG_EDAC_SBRIDGE m note +CONFIG_SM_FTL m note +CONFIG_SPI_SPIDEV m note +CONFIG_ATH6KL_USB m note +CONFIG_USB_KC2190 y note + +# Dummy drivers +CONFIG_IIO_SIMPLE_DUMMY_BUFFER n note +CONFIG_IIO_SIMPLE_DUMMY_EVENTS n note + +# Options where the default is simply too broad: +# INPUT_KXTJ9_POLLED_MODE -- polling is bad generally +CONFIG_INPUT_KXTJ9_POLLED_MODE n + +# The intel IOMMU being on by default causes a slew of issues with +# machines. We therefore enable its use, but default it off. +CONFIG_INTEL_IOMMU_DEFAULT_ON n note + +# H/W specific options +CONFIG_PATA_HPT3X3_DMA n note +CONFIG_B43_BCMA_EXTRA n note + +# XXX: temporarily disabled options -- build failures. +CONFIG_TI_CPSW - flag +CONFIG_USB_EHCI_HCD_PLATFORM - flag +CONFIG_LIS3L02DQ - flag +CONFIG_EZX_PCAP - flag +CONFIG_TOUCHSCREEN_EGALAX - flag +CONFIG_TOUCHSCREEN_EETI - flag +CONFIG_SPI_PL022 - flag +CONFIG_SPI_DW_MMIO - flag +CONFIG_SENSORS_AK8975 - flag note +CONFIG_IIO p policy<(flavour omap4 &/ value n) | value m> flag + +# Valid y/n options which are in a sensible position. +CONFIG_PPC_ICSWX_USE_SIGILL n note +# forces padding mode, without this we can select at runtime +CONFIG_USB_SERIAL_SAFE_PADDED n note +# allows the console to move to an external USB device +CONFIG_USB_SISUSBVGA_CON n note + +# Old/Deprecated +CONFIG_SCSI_AIC7XXX_OLD n note + +# OSS is handled via pulseaudio +CONFIG_SND_PCM_OSS n note + +# Poulsbo is handled by DRM_GMA500 +CONFIG_STUB_POULSBO n note + +# Risky +CONFIG_RTAS_FLASH n note + +# Only valid on fully certified platforms +CONFIG_ATH9K_DFS_CERTIFIED n note + +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not compatible with upstart +CONFIG_AUDIT_LOGINUID_IMMUTABLE n note + +# Machine specific on systems we cannot encounter. +CONFIG_GPIO_EM n note + +# Standard options. +CONFIG_PANIC_ON_OOPS n note + +# CEPHs dependancies +CONFIG_BLK_DEV_RBD m note + +# CGROUP modifications. +CONFIG_BLK_DEV_THROTTLING y note + +# Not a thing +CONFIG_USB_OHCI_HCD_PLATFORM - flag +CONFIG_USB_EHCI_HCD_PLATFORM - flag +CONFIG_USB_OHCI_HCD_PPC_OF_LE - flag +CONFIG_SENSORS_SCH56XX_COMMON - flag + +# Block Dev +CONFIG_BLK_DEV_XIP n note + +# This option allows bridging between non-IP and IP networks, but is +# effectivly deprecated. We _may_ just _may_ have users on older arches +# so keep it there, but do not spread the pain to systems without these +# other networks. +CONFIG_WAN_ROUTER p policy<(arch i386 amd64 powerpc &/ value m) | value n> --- linux-3.5.0.orig/debian.master/config/config.common.ports +++ linux-3.5.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/armhf/config.flavour.omap +++ linux-3.5.0/debian.master/config/armhf/config.flavour.omap @@ -0,0 +1,168 @@ +# +# Config options for config.flavour.omap automatically generated by splitconfig.pl +# +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AMBA_PL08X=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ARCH_HIGHBANK is not set +CONFIG_ARCH_OMAP=y +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_743622=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +CONFIG_AUXDISPLAY=y +CONFIG_BCH=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_DEBUG_LL_UART_NONE=y +CONFIG_DEBUG_USER=y +# CONFIG_EDAC is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FONTS=y +CONFIG_FPE_NWFPE=y +# CONFIG_FUNCTION_TRACER is not set +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HIDRAW=y +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HVC_DCC=y +CONFIG_HZ=128 +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_BCH=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_OF_PARTS=y +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_DMA=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_OC_ETM=y +CONFIG_OSF_PARTITION=y +CONFIG_PARPORT_1284=y +CONFIG_PL330_DMA=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEVFREQ=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_AMBA_PL011=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=y +CONFIG_SND_PCM=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_TIMER=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI_PL022=m +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_STAGING_MEDIA=y +CONFIG_SUN_PARTITION=y +# CONFIG_SWP_EMULATE is not set +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_WAN=y +CONFIG_WATCHDOG=y +# CONFIG_WIMAX_I2400M_SDIO is not set +# CONFIG_WIMAX_I2400M_USB is not set +CONFIG_XFS_RT=y --- linux-3.5.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-3.5.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,105 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +# CONFIG_APM_EMULATION is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_AX25_DAMA_SLAVE=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_COMPACTION is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CRYPTO_LZO=m +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_DM_RAID45 is not set +CONFIG_DVB_FE_CUSTOMISE=y +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC_MM_EDAC=y +# CONFIG_EZX_PCAP is not set +CONFIG_FAT_FS=y +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GPIO_TWL4030=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_I2C_ALGOBIT=m +# CONFIG_IWMC3200TOP_DEBUGFS is not set +CONFIG_KGDB=y +# CONFIG_KSM is not set +CONFIG_LATENCYTOP=y +# CONFIG_LIBERTAS_MESH is not set +# CONFIG_LIS3L02DQ is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_NEED_DMA_MAP_STATE=y +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NOP_USB_XCEIV=y +CONFIG_NR_CPUS=4 +CONFIG_NVRAM=m +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_PCCARD is not set +# CONFIG_PCI_SYSCALL is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PM_DEBUG is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_RCU_FANOUT=32 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_SCHEDSTATS=y +# CONFIG_SCHED_SMT is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_SCSI_SPI_ATTRS=m +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_STACK_TRACER is not set +CONFIG_STANDALONE=y +# CONFIG_STMMAC_ETH is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=y +# CONFIG_USB_ARCH_HAS_XHCI is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_OTG=y +CONFIG_VFAT_FS=y +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_WM8350_WATCHDOG is not set +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA_FLAG=0 --- linux-3.5.0.orig/debian.master/config/armhf/config.flavour.highbank +++ linux-3.5.0/debian.master/config/armhf/config.flavour.highbank @@ -0,0 +1,168 @@ +# +# Config options for config.flavour.highbank automatically generated by splitconfig.pl +# +# CONFIG_ABX500_CORE is not set +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ARCH_HIGHBANK=y +# CONFIG_ARCH_OMAP is not set +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_743622 is not set +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_AUXDISPLAY is not set +CONFIG_BCH=m +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_BTRFS_FS_POSIX_ACL is not set +CONFIG_CACHE_L2X0=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CLEANCACHE is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_IDLE is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_DEBUG_LL_UART_NONE is not set +# CONFIG_DEBUG_USER is not set +CONFIG_EDAC=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_EVM is not set +CONFIG_EXT2_FS=y +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +# CONFIG_FONTS is not set +# CONFIG_FPE_NWFPE is not set +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +# CONFIG_HAMRADIO is not set +# CONFIG_HIDRAW is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_HVC_DCC is not set +CONFIG_HZ=100 +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +CONFIG_IP_PNP=y +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +# CONFIG_IRDA_DEBUG is not set +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_ULTRA is not set +# CONFIG_ISDN is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KEXEC is not set +# CONFIG_LDM_PARTITION is not set +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_MAC80211_MESH is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_MMC_SDHCI_PLTFM=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODVERSIONS is not set +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_OF_PARTS=m +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_NET_CALXEDA_XGMAC=y +# CONFIG_NET_DMA is not set +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_OC_ETM is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_PARPORT_1284 is not set +CONFIG_PL330_DMA=y +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_MULTILINK is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PSTORE is not set +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_TWL4030=m +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_AMBA_PL011=y +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIO_SERPORT=y +# CONFIG_SGI_PARTITION is not set +CONFIG_SND=m +CONFIG_SND_PCM=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_TIMER=m +# CONFIG_SOLARIS_X86_PARTITION is not set +CONFIG_SOUND=m +CONFIG_SPI_PL022=y +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XATTR is not set +# CONFIG_SQUASHFS_XZ is not set +# CONFIG_STAGING_MEDIA is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SWP_EMULATE=y +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TCP_MD5SIG is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TWL4030_POWER is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_WAN is not set +# CONFIG_WATCHDOG is not set +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +# CONFIG_XFS_RT is not set --- linux-3.5.0.orig/debian.master/config/i386/config.common.i386 +++ linux-3.5.0/debian.master/config/i386/config.common.i386 @@ -0,0 +1,278 @@ +# +# Config options for config.common.i386 automatically generated by splitconfig.pl +# +# CONFIG_64BIT is not set +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_ACPI_BLACKLIST_YEAR=2000 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_ALX=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATM_BR2684_IPFILTER is not set +# CONFIG_AUDIT_ARCH is not set +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=y +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DM_RAID45=m +# CONFIG_DVB_FE_CUSTOMISE is not set +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=y +CONFIG_FB_3DFX=m +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=m +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IDE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0 +# CONFIG_INTEL_TXT is not set +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISA=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBIPW_DEBUG=y +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=8 +CONFIG_NVRAM=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=32 +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_PCM=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_SPI_PXA2XX_PCI=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_STACK_TRACER=y +CONFIG_STAGING_MEDIA=y +# CONFIG_STANDALONE is not set +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=y +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_RING=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +CONFIG_X86_SPEEDSTEP_LIB=y +CONFIG_XEN_MAX_DOMAIN_MEMORY=64 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +# CONFIG_ZONE_DMA32 is not set +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/i386/config.flavour.generic +++ linux-3.5.0/debian.master/config/i386/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/ppc64/config.common.ppc64 +++ linux-3.5.0/debian.master/config/ppc64/config.common.ppc64 @@ -0,0 +1,301 @@ +# +# Config options for config.common.ppc64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_ALX is not set +CONFIG_AMIGA_PARTITION=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_NONSTANDARD=y +CONFIG_ATA_PIIX=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_BCH=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=m +# CONFIG_DEBUG_INFO is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DM_RAID45 is not set +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=m +CONFIG_FB_3DFX=y +CONFIG_FB_ATY128=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=y +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_TWL4030=m +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_IBMEBUS=y +CONFIG_IDE=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRQ_ALL_CPUS=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=19 +CONFIG_LPARCFG=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_ACTIVE_REGIONS=256 +CONFIG_MAX_RAW_DEVS=8192 +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMIO_NVRAM=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=8 +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=1024 +CONFIG_OSF_PARTITION=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCI_SYSCALL=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPC64=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +CONFIG_PPC_970_NAP=y +CONFIG_PPC_CELL=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_SMLPAR=y +CONFIG_PPC_SPLPAR=y +CONFIG_PPC_XICS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSERIES_ENERGY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=64 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTAS_FLASH=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_SVW=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +CONFIG_SND_BT87X_OVERCLOCK=y +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SSB_PCMCIAHOST=y +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD_PPC_OF_LE=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=m +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=64 +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WORD_SIZE=64 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/ppc64/config.flavour.powerpc64-smp +++ linux-3.5.0/debian.master/config/ppc64/config.flavour.powerpc64-smp @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-3.5.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-3.5.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,279 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_ALX=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=y +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DM_RAID45=m +# CONFIG_DVB_FE_CUSTOMISE is not set +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=y +CONFIG_FB_3DFX=m +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_RADEON=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=m +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IDE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_INTEL_TXT=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBIPW_DEBUG=y +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=6 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=256 +CONFIG_NVRAM=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=64 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_STACK_TRACER=y +CONFIG_STAGING_MEDIA=y +# CONFIG_STANDALONE is not set +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=y +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_RING=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +# CONFIG_X86_32 is not set +CONFIG_X86_64=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_XEN_MAX_DOMAIN_MEMORY=500 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/armel/config.common.armel +++ linux-3.5.0/debian.master/config/armel/config.common.armel @@ -0,0 +1,266 @@ +# +# Config options for config.common.armel automatically generated by splitconfig.pl +# +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AMBA_PL08X=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_APM_EMULATION is not set +# CONFIG_ARCH_HIGHBANK is not set +CONFIG_ARCH_OMAP=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_743622=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +# CONFIG_COMPACTION is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=m +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_LL_UART_NONE=y +CONFIG_DEBUG_USER=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_DM_RAID45 is not set +CONFIG_DVB_FE_CUSTOMISE=y +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +# CONFIG_EDAC is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +# CONFIG_EZX_PCAP is not set +CONFIG_FAT_FS=y +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FONTS=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FPE_NWFPE=y +# CONFIG_FUNCTION_TRACER is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TWL4030=y +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HIDRAW=y +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HVC_DCC=y +CONFIG_HZ=128 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +# CONFIG_IWMC3200TOP_DEBUGFS is not set +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +# CONFIG_KSM is not set +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +# CONFIG_LIBERTAS_MESH is not set +# CONFIG_LIS3L02DQ is not set +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_BCH=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MUSB_PIO_ONLY is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_DMA=y +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NOP_USB_XCEIV=y +CONFIG_NVRAM=m +CONFIG_OC_ETM=y +CONFIG_OSF_PARTITION=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT_1284=y +# CONFIG_PCCARD is not set +# CONFIG_PCI_SYSCALL is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_PL330_DMA=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_AMBA_PL011=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=y +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=y +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_TIMER=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI_PL022=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +# CONFIG_STMMAC_ETH is not set +CONFIG_SUN_PARTITION=y +# CONFIG_SWP_EMULATE is not set +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_USB=y +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_XHCI is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=m +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_OTG=y +CONFIG_VFAT_FS=y +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_WAN=y +# CONFIG_WAN_ROUTER is not set +CONFIG_WATCHDOG=y +# CONFIG_WIMAX_I2400M_SDIO is not set +# CONFIG_WIMAX_I2400M_USB is not set +# CONFIG_WM8350_WATCHDOG is not set +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA_FLAG=0 --- linux-3.5.0.orig/debian.master/config/armel/config.flavour.omap +++ linux-3.5.0/debian.master/config/armel/config.flavour.omap @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.omap automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/powerpc/ignore.modules +++ linux-3.5.0/debian.master/config/powerpc/ignore.modules @@ -0,0 +1 @@ +1 --- linux-3.5.0.orig/debian.master/config/powerpc/ignore +++ linux-3.5.0/debian.master/config/powerpc/ignore @@ -0,0 +1 @@ +1 --- linux-3.5.0.orig/debian.master/config/powerpc/config.flavour.powerpc-smp +++ linux-3.5.0/debian.master/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,43 @@ +# +# Config options for config.flavour.powerpc-smp automatically generated by splitconfig.pl +# +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_CFG80211_REG_DEBUG=y +# CONFIG_CRASH_DUMP is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_KGDB is not set +# CONFIG_LATENCYTOP is not set +CONFIG_MAX_ACTIVE_REGIONS=32 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=4 +CONFIG_PAGE_OFFSET=0xc0000000 +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PPC64 is not set +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_PPC_MPC106=y +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_SCHEDSTATS is not set +CONFIG_WORD_SIZE=32 +CONFIG_ZLIB_DEFLATE=m --- linux-3.5.0.orig/debian.master/config/powerpc/config.common.powerpc +++ linux-3.5.0/debian.master/config/powerpc/config.common.powerpc @@ -0,0 +1,264 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_ALX is not set +CONFIG_AMIGA_PARTITION=y +CONFIG_APM_EMULATION=m +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_PIIX=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CLEANCACHE=y +# CONFIG_COMPACTION is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_IDLE=y +CONFIG_CRYPTO_LZO=m +# CONFIG_DEBUG_INFO is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DM_RAID45 is not set +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=m +CONFIG_FB_3DFX=y +CONFIG_FB_ATY128=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=y +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_TWL4030=m +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IBMEBUS is not set +# CONFIG_IDE is not set +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_ISA is not set +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KSM=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPARCFG is not set +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +# CONFIG_MEMORY_HOTREMOVE is not set +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=8 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NVRAM=y +CONFIG_OSF_PARTITION=y +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCI_SYSCALL=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_SMLPAR is not set +# CONFIG_PPC_SPLPAR is not set +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSERIES_ENERGY=m +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RTAS_FLASH is not set +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_SVW=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +CONFIG_SND_BT87X_OVERCLOCK=y +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=m +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_XFS_RT=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-smp +++ linux-3.5.0/debian.master/config/powerpc/config.flavour.powerpc64-smp @@ -0,0 +1,43 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ATA_NONSTANDARD=y +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CRASH_DUMP=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KGDB=y +CONFIG_LATENCYTOP=y +CONFIG_MAX_ACTIVE_REGIONS=256 +CONFIG_MMIO_NVRAM=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=1024 +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +CONFIG_PPC_970_NAP=y +CONFIG_PPC_CELL=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_XICS=y +CONFIG_RCU_FANOUT=64 +CONFIG_SCHEDSTATS=y +CONFIG_WORD_SIZE=64 +CONFIG_ZLIB_DEFLATE=y --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/abiname +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/abiname @@ -0,0 +1 @@ +36 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/fwinfo +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/fwinfo @@ -0,0 +1,587 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: acenic/tg1.bin +firmware: acenic/tg2.bin +firmware: adaptec/starfire_rx.bin +firmware: adaptec/starfire_tx.bin +firmware: advansys/3550.bin +firmware: advansys/38C0800.bin +firmware: advansys/38C1600.bin +firmware: advansys/mcode.bin +firmware: agere_ap_fw.bin +firmware: agere_sta_fw.bin +firmware: aic94xx-seq.fw +firmware: asihpi/dsp5000.bin +firmware: asihpi/dsp6200.bin +firmware: asihpi/dsp6205.bin +firmware: asihpi/dsp6400.bin +firmware: asihpi/dsp6600.bin +firmware: asihpi/dsp8700.bin +firmware: asihpi/dsp8900.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c506.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmsar11.fw +firmware: av7110/bootcode.bin +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.2.51.0.fw +firmware: bnx2x/bnx2x-e1h-7.2.51.0.fw +firmware: bnx2x/bnx2x-e2-7.2.51.0.fw +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac-sdio.bin +firmware: brcm/brcmfmac-sdio.txt +firmware: BT3CPCC.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw.bin +firmware: cis/3CCFEM556.cis +firmware: cis/3CXEM556.cis +firmware: cis/COMpad2.cis +firmware: cis/COMpad4.cis +firmware: cis/DP83903.cis +firmware: cis/LA-PCM.cis +firmware: cis/MT5634ZLX.cis +firmware: cis/NE2K.cis +firmware: cis/PCMLM28.cis +firmware: cis/PE-200.cis +firmware: cis/PE520.cis +firmware: cis/RS-COM-2P.cis +firmware: cis/SW_555_SER.cis +firmware: cis/SW_7xx_SER.cis +firmware: cis/SW_8xx_SER.cis +firmware: cis/tamarack.cis +firmware: comedi/jr3pci.idm +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: ct2fw.bin +firmware: ctfw.bin +firmware: cxgb3/ael2005_opt_edc.bin +firmware: cxgb3/ael2005_twx_edc.bin +firmware: cxgb3/ael2020_twx_edc.bin +firmware: cxgb3/t3b_psram-1.1.0.bin +firmware: cxgb3/t3c_psram-1.1.0.bin +firmware: cxgb3/t3fw-7.12.0.bin +firmware: cxgb4/t4fw.bin +firmware: cyzfirm.bin +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-41.024.5.fw +firmware: dvb-usb-dib0700-1.20.fw +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot2.fw +firmware: edgeport/boot.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: edgeport/down.fw +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010b.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: fw.ram.bin +firmware: go7007fw.bin +firmware: go7007tv.bin +firmware: htc_7010.fw +firmware: htc_9271.fw +firmware: i1480-phy-0.0.bin +firmware: i1480-pre-phy-0.0.bin +firmware: i1480-usb-0.0.bin +firmware: i2400m-fw-sdio-1.3.sbcf +firmware: i2400m-fw-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: ipw2100-1.3.fw +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-3945-2.ucode +firmware: iwlwifi-4965-2.ucode +firmware: iwlwifi-5000-5.ucode +firmware: iwlwifi-5150-2.ucode +firmware: iwlwifi-6000-4.ucode +firmware: iwlwifi-6000g2a-5.ucode +firmware: iwlwifi-6000g2b-6.ucode +firmware: iwlwifi-6050-5.ucode +firmware: iwmc3200top.1.fw +firmware: iwmc3200wifi-calib-sdio.bin +firmware: iwmc3200wifi-lmac-sdio.bin +firmware: iwmc3200wifi-umac-sdio.bin +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: korg/k1212.dsp +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: mixart/miXart8AES.xlx +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mrvl/pcie8766_uapsta.bin +firmware: mrvl/sd8786_uapsta.bin +firmware: mrvl/sd8787_uapsta.bin +firmware: mrvl/sd8797_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366_ap-2.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: orinoco_ezusb_fw +firmware: ositech/Xilinx7OD.bin +firmware: pca200e_ecd.bin2 +firmware: pcxhr/dspb1222e.b56 +firmware: pcxhr/dspb1222hr.b56 +firmware: pcxhr/dspb882e.b56 +firmware: pcxhr/dspb882hr.b56 +firmware: pcxhr/dspb924.b56 +firmware: pcxhr/dspd1222.d56 +firmware: pcxhr/dspd222.d56 +firmware: pcxhr/dspd882.d56 +firmware: pcxhr/dspe882.e56 +firmware: pcxhr/dspe924.e56 +firmware: pcxhr/xlxc1222e.dat +firmware: pcxhr/xlxc1222hr.dat +firmware: pcxhr/xlxc222.dat +firmware: pcxhr/xlxc882e.dat +firmware: pcxhr/xlxc882hr.dat +firmware: pcxhr/xlxc924.dat +firmware: pcxhr/xlxint.dat +firmware: phanfw.bin +firmware: prism2_ru.fw +firmware: prism_ap_fw.bin +firmware: prism_sta_fw.bin +firmware: ql2100_fw.bin +firmware: ql2200_fw.bin +firmware: ql2300_fw.bin +firmware: ql2322_fw.bin +firmware: ql2400_fw.bin +firmware: ql2500_fw.bin +firmware: qlogic/1040.bin +firmware: qlogic/12160.bin +firmware: qlogic/1280.bin +firmware: qlogic/sd7220.fw +firmware: r128/r128_cce.bin +firmware: radeon/ARUBA_me.bin +firmware: radeon/ARUBA_pfp.bin +firmware: radeon/ARUBA_rlc.bin +firmware: radeon/BARTS_mc.bin +firmware: radeon/BARTS_me.bin +firmware: radeon/BARTS_pfp.bin +firmware: radeon/BTC_rlc.bin +firmware: radeon/CAICOS_mc.bin +firmware: radeon/CAICOS_me.bin +firmware: radeon/CAICOS_pfp.bin +firmware: radeon/CAYMAN_mc.bin +firmware: radeon/CAYMAN_me.bin +firmware: radeon/CAYMAN_pfp.bin +firmware: radeon/CAYMAN_rlc.bin +firmware: radeon/CEDAR_me.bin +firmware: radeon/CEDAR_pfp.bin +firmware: radeon/CEDAR_rlc.bin +firmware: radeon/CYPRESS_me.bin +firmware: radeon/CYPRESS_pfp.bin +firmware: radeon/CYPRESS_rlc.bin +firmware: radeon/JUNIPER_me.bin +firmware: radeon/JUNIPER_pfp.bin +firmware: radeon/JUNIPER_rlc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/PITCAIRN_rlc.bin +firmware: radeon/R100_cp.bin +firmware: radeon/R200_cp.bin +firmware: radeon/R300_cp.bin +firmware: radeon/R420_cp.bin +firmware: radeon/R520_cp.bin +firmware: radeon/R600_me.bin +firmware: radeon/R600_pfp.bin +firmware: radeon/R600_rlc.bin +firmware: radeon/R700_rlc.bin +firmware: radeon/REDWOOD_me.bin +firmware: radeon/REDWOOD_pfp.bin +firmware: radeon/REDWOOD_rlc.bin +firmware: radeon/RS600_cp.bin +firmware: radeon/RS690_cp.bin +firmware: radeon/RS780_me.bin +firmware: radeon/RS780_pfp.bin +firmware: radeon/RV610_me.bin +firmware: radeon/RV610_pfp.bin +firmware: radeon/RV620_me.bin +firmware: radeon/RV620_pfp.bin +firmware: radeon/RV630_me.bin +firmware: radeon/RV630_pfp.bin +firmware: radeon/RV635_me.bin +firmware: radeon/RV635_pfp.bin +firmware: radeon/RV670_me.bin +firmware: radeon/RV670_pfp.bin +firmware: radeon/RV710_me.bin +firmware: radeon/RV710_pfp.bin +firmware: radeon/RV730_me.bin +firmware: radeon/RV730_pfp.bin +firmware: radeon/RV770_me.bin +firmware: radeon/RV770_pfp.bin +firmware: radeon/SUMO2_me.bin +firmware: radeon/SUMO2_pfp.bin +firmware: radeon/SUMO_me.bin +firmware: radeon/SUMO_pfp.bin +firmware: radeon/SUMO_rlc.bin +firmware: radeon/TAHITI_ce.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/TURKS_mc.bin +firmware: radeon/TURKS_me.bin +firmware: radeon/TURKS_pfp.bin +firmware: radeon/VERDE_ce.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/VERDE_rlc.bin +firmware: riptide.hex +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/rtl8168d-1.fw +firmware: rtl_nic/rtl8168d-2.fw +firmware: rtl_nic/rtl8168e-1.fw +firmware: rtl_nic/rtl8168e-2.fw +firmware: rtl_nic/rtl8168e-3.fw +firmware: rtl_nic/rtl8168f-1.fw +firmware: rtl_nic/rtl8168f-2.fw +firmware: rtl_nic/rtl8402-1.fw +firmware: rtl_nic/rtl8411-1.fw +firmware: rtlwifi/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: s2250.fw +firmware: s2250_loader.fw +firmware: sb16/alaw_main.csp +firmware: sb16/ima_adpcm_capture.csp +firmware: sb16/ima_adpcm_init.csp +firmware: sb16/ima_adpcm_playback.csp +firmware: sb16/mulaw_main.csp +firmware: scope.cod +firmware: sd8385.bin +firmware: sd8385_helper.bin +firmware: sd8686.bin +firmware: sd8686_helper.bin +firmware: sd8688.bin +firmware: sd8688_helper.bin +firmware: slicoss/gbdownload.sys +firmware: slicoss/gbrcvucode.sys +firmware: slicoss/oasisdownload.sys +firmware: slicoss/oasisrcvucode.sys +firmware: sndscape.co0 +firmware: sndscape.co1 +firmware: sndscape.co2 +firmware: sndscape.co3 +firmware: sndscape.co4 +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard2.bin +firmware: softing-4.6/ldcard.bin +firmware: solos-db-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tehuti/bdx.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: ti-connectivity/wl1271-nvs.bin +firmware: ti-connectivity/wl127x-fw-4-mr.bin +firmware: ti-connectivity/wl127x-fw-4-plt.bin +firmware: ti-connectivity/wl127x-fw-4-sr.bin +firmware: ti-connectivity/wl128x-fw-4-mr.bin +firmware: ti-connectivity/wl128x-fw-4-plt.bin +firmware: ti-connectivity/wl128x-fw-4-sr.bin +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso5.bin +firmware: tigon/tg3_tso.bin +firmware: tlg2300_firmware.bin +firmware: ttusb-budget/dspbootcode.bin +firmware: turtlebeach/msndinit.bin +firmware: turtlebeach/msndperm.bin +firmware: turtlebeach/pndsperm.bin +firmware: turtlebeach/pndspini.bin +firmware: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/adi930.fw +firmware: ueagle-atm/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: usbduxfast_firmware.bin +firmware: usbdux_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vxge/X3fw.ncf +firmware: vxge/X3fw-pxe.ncf +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: wavefront.os +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wl1251-fw.bin +firmware: xc3028-v27.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: yamaha/yss225_registers.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/highbank +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/highbank @@ -0,0 +1,9940 @@ +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_free_64k +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_x_ble +EXPORT_SYMBOL crypto/xor 0x00000000 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0x00000000 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_write_regr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_validate_addr +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_usb_init +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x00000000 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x00000000 vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x00000000 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x00000000 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x00000000 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x00000000 iio_kfifo_free +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x00000000 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_remove +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x00000000 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x00000000 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x00000000 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x00000000 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x00000000 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x00000000 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x00000000 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x00000000 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x00000000 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x00000000 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x00000000 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x00000000 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x00000000 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x00000000 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x00000000 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x00000000 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x00000000 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0x00000000 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x00000000 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x00000000 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x00000000 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x00000000 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x00000000 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x00000000 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x00000000 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x00000000 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x00000000 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x00000000 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x00000000 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x00000000 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x00000000 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x00000000 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 systime +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x00000000 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x00000000 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x00000000 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x00000000 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x00000000 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x00000000 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x00000000 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0x00000000 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x00000000 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x00000000 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x00000000 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x00000000 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x00000000 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x00000000 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x00000000 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x00000000 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x00000000 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x00000000 lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x00000000 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x00000000 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x00000000 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0x00000000 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x00000000 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x00000000 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x00000000 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x00000000 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x00000000 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x00000000 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x00000000 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0x00000000 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x00000000 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x00000000 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x00000000 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x00000000 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x00000000 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x00000000 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x00000000 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x00000000 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x00000000 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x00000000 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x00000000 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x00000000 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x00000000 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x00000000 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x00000000 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x00000000 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x00000000 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x00000000 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x00000000 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x00000000 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x00000000 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x00000000 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x00000000 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x00000000 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x00000000 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x00000000 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0x00000000 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x00000000 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x00000000 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x00000000 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x00000000 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x00000000 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x00000000 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x00000000 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x00000000 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x00000000 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x00000000 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0x00000000 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x00000000 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x00000000 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x00000000 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x00000000 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x00000000 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x00000000 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x00000000 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x00000000 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_update +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_suspend +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x00000000 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/tveeprom 0x00000000 tveeprom_read +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x00000000 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_usercopy +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_unregister_driver +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x00000000 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x00000000 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_config +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_request +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x00000000 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x00000000 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x00000000 altera_init +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_clk_free +EXPORT_SYMBOL drivers/misc/c2port/core 0x00000000 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x00000000 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_suspend +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x00000000 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x00000000 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x00000000 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x00000000 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x00000000 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x00000000 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x00000000 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_scan_bbt +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_write_complete +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x00000000 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x00000000 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x00000000 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x00000000 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_write +EXPORT_SYMBOL drivers/parport/parport_pc 0x00000000 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x00000000 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_unregister_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x00000000 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_schedule_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_set_devtypedata +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x00000000 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x00000000 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x00000000 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x00000000 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x00000000 phone_register_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x00000000 phone_unregister_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_wait_for_tasks +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_do_pm +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_unregister_port +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x00000000 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x00000000 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x00000000 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x00000000 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x00000000 genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x00000000 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x00000000 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cfbcopyarea 0x00000000 cfb_copyarea +EXPORT_SYMBOL drivers/video/cfbfillrect 0x00000000 cfb_fillrect +EXPORT_SYMBOL drivers/video/cfbimgblt 0x00000000 cfb_imageblit +EXPORT_SYMBOL drivers/video/output 0x00000000 video_output_register +EXPORT_SYMBOL drivers/video/output 0x00000000 video_output_unregister +EXPORT_SYMBOL drivers/video/syscopyarea 0x00000000 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x00000000 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x00000000 sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_unregister_subsystem +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_withdraw_cache +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_write_who +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x00000000 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x00000000 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x00000000 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x00000000 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0x00000000 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x00000000 crc7 +EXPORT_SYMBOL lib/crc7 0x00000000 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x00000000 crc8 +EXPORT_SYMBOL lib/crc8 0x00000000 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0x00000000 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x00000000 crc32c +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_create +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_del +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_find +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_get +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_put +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_set +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_try_get +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateEnd +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflate_workspacesize +EXPORT_SYMBOL net/802/p8022 0x00000000 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x00000000 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x00000000 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x00000000 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x00000000 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x00000000 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_unregister_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_charge +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x00000000 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x00000000 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x00000000 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0x00000000 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_hash +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_sklist_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_unregister_dev +EXPORT_SYMBOL net/bridge/bridge 0x00000000 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_free_client +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x00000000 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x00000000 can_ioctl +EXPORT_SYMBOL net/can/can 0x00000000 can_proto_register +EXPORT_SYMBOL net/can/can 0x00000000 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x00000000 can_rx_register +EXPORT_SYMBOL net/can/can 0x00000000 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x00000000 can_send +EXPORT_SYMBOL net/ceph/libceph 0x00000000 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_zero_page_vector_range +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x00000000 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/tunnel4 0x00000000 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x00000000 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x00000000 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x00000000 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x00000000 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x00000000 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x00000000 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x00000000 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x00000000 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_find +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_new +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_close +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_open +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0x00000000 irlap_close +EXPORT_SYMBOL net/irda/irda 0x00000000 irlap_open +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x00000000 proc_irda +EXPORT_SYMBOL net/l2tp/l2tp_core 0x00000000 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x00000000 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x00000000 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x00000000 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x00000000 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x00000000 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_unregister +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 print_ssid +EXPORT_SYMBOL sound/ac97_bus 0x00000000 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x00000000 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x00000000 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00000000 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x00000000 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0x00000000 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x00000000 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_create +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_cards +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_major +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd-hwdep 0x00000000 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_stop +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_new +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_write_cache +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x00000000 sound_class +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_midi +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_special +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_input_stop +EXPORT_SYMBOL vmlinux 0x00000000 I_BDEV +EXPORT_SYMBOL vmlinux 0x00000000 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x00000000 ___ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_skb +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x00000000 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x00000000 __arm_iounmap +EXPORT_SYMBOL vmlinux 0x00000000 __ashldi3 +EXPORT_SYMBOL vmlinux 0x00000000 __ashrdi3 +EXPORT_SYMBOL vmlinux 0x00000000 __bad_xchg +EXPORT_SYMBOL vmlinux 0x00000000 __bdevname +EXPORT_SYMBOL vmlinux 0x00000000 __bforget +EXPORT_SYMBOL vmlinux 0x00000000 __bio_clone +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_and +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_equal +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_full +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_intersects +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_or +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_parse +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_xor +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x00000000 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0x00000000 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x00000000 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x00000000 __block_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x00000000 __bread +EXPORT_SYMBOL vmlinux 0x00000000 __breadahead +EXPORT_SYMBOL vmlinux 0x00000000 __break_lease +EXPORT_SYMBOL vmlinux 0x00000000 __brelse +EXPORT_SYMBOL vmlinux 0x00000000 __cap_empty_set +EXPORT_SYMBOL vmlinux 0x00000000 __check_region +EXPORT_SYMBOL vmlinux 0x00000000 __clear_user +EXPORT_SYMBOL vmlinux 0x00000000 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x00000000 __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x00000000 __const_udelay +EXPORT_SYMBOL vmlinux 0x00000000 __copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __copy_to_user +EXPORT_SYMBOL vmlinux 0x00000000 __crc32c_le +EXPORT_SYMBOL vmlinux 0x00000000 __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x00000000 __d_drop +EXPORT_SYMBOL vmlinux 0x00000000 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __destroy_inode +EXPORT_SYMBOL vmlinux 0x00000000 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x00000000 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x00000000 __dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00000000 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 __devm_release_region +EXPORT_SYMBOL vmlinux 0x00000000 __devm_request_region +EXPORT_SYMBOL vmlinux 0x00000000 __div0 +EXPORT_SYMBOL vmlinux 0x00000000 __div64_32 +EXPORT_SYMBOL vmlinux 0x00000000 __divsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __do_div64 +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x00000000 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x00000000 __dst_free +EXPORT_SYMBOL vmlinux 0x00000000 __elv_add_request +EXPORT_SYMBOL vmlinux 0x00000000 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x00000000 __f_setown +EXPORT_SYMBOL vmlinux 0x00000000 __find_get_block +EXPORT_SYMBOL vmlinux 0x00000000 __first_cpu +EXPORT_SYMBOL vmlinux 0x00000000 __free_pages +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_init +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_load +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_store +EXPORT_SYMBOL vmlinux 0x00000000 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x00000000 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x00000000 __get_free_pages +EXPORT_SYMBOL vmlinux 0x00000000 __get_page_tail +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_1 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_2 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_4 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_pages +EXPORT_SYMBOL vmlinux 0x00000000 __getblk +EXPORT_SYMBOL vmlinux 0x00000000 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_init +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x00000000 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __inet6_hash +EXPORT_SYMBOL vmlinux 0x00000000 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x00000000 __init_rwsem +EXPORT_SYMBOL vmlinux 0x00000000 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x00000000 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x00000000 __invalidate_device +EXPORT_SYMBOL vmlinux 0x00000000 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x00000000 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x00000000 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 __irq_regs +EXPORT_SYMBOL vmlinux 0x00000000 __kernel_param_lock +EXPORT_SYMBOL vmlinux 0x00000000 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_free +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_in +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_init +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfree_skb +EXPORT_SYMBOL vmlinux 0x00000000 __kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x00000000 __krealloc +EXPORT_SYMBOL vmlinux 0x00000000 __kunmap_atomic +EXPORT_SYMBOL vmlinux 0x00000000 __lock_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __lock_page +EXPORT_SYMBOL vmlinux 0x00000000 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x00000000 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x00000000 __lshrdi3 +EXPORT_SYMBOL vmlinux 0x00000000 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x00000000 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x00000000 __memzero +EXPORT_SYMBOL vmlinux 0x00000000 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x00000000 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __modsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __module_get +EXPORT_SYMBOL vmlinux 0x00000000 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x00000000 __muldi3 +EXPORT_SYMBOL vmlinux 0x00000000 __mutex_init +EXPORT_SYMBOL vmlinux 0x00000000 __napi_complete +EXPORT_SYMBOL vmlinux 0x00000000 __napi_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x00000000 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x00000000 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x00000000 __netdev_printk +EXPORT_SYMBOL vmlinux 0x00000000 __netif_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x00000000 __next_cpu +EXPORT_SYMBOL vmlinux 0x00000000 __nla_put +EXPORT_SYMBOL vmlinux 0x00000000 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 __nla_reserve +EXPORT_SYMBOL vmlinux 0x00000000 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x00000000 __page_symlink +EXPORT_SYMBOL vmlinux 0x00000000 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x00000000 __pagevec_release +EXPORT_SYMBOL vmlinux 0x00000000 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x00000000 __print_symbol +EXPORT_SYMBOL vmlinux 0x00000000 __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 __ps2_command +EXPORT_SYMBOL vmlinux 0x00000000 __pskb_copy +EXPORT_SYMBOL vmlinux 0x00000000 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x00000000 __put_cred +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_1 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_2 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_4 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_8 +EXPORT_SYMBOL vmlinux 0x00000000 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x00000000 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x00000000 __quota_error +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsb +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsl +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsw +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesb +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesl +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesw +EXPORT_SYMBOL vmlinux 0x00000000 __readwrite_bug +EXPORT_SYMBOL vmlinux 0x00000000 __refrigerator +EXPORT_SYMBOL vmlinux 0x00000000 __register_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 __register_chrdev +EXPORT_SYMBOL vmlinux 0x00000000 __release_region +EXPORT_SYMBOL vmlinux 0x00000000 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x00000000 __request_module +EXPORT_SYMBOL vmlinux 0x00000000 __request_region +EXPORT_SYMBOL vmlinux 0x00000000 __rta_fill +EXPORT_SYMBOL vmlinux 0x00000000 __scm_destroy +EXPORT_SYMBOL vmlinux 0x00000000 __scm_send +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_print_command +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x00000000 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x00000000 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x00000000 __seq_open_private +EXPORT_SYMBOL vmlinux 0x00000000 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 __serio_register_port +EXPORT_SYMBOL vmlinux 0x00000000 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x00000000 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x00000000 __set_personality +EXPORT_SYMBOL vmlinux 0x00000000 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x00000000 __sg_free_table +EXPORT_SYMBOL vmlinux 0x00000000 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x00000000 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x00000000 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x00000000 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x00000000 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x00000000 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x00000000 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x00000000 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x00000000 __sock_create +EXPORT_SYMBOL vmlinux 0x00000000 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x00000000 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x00000000 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x00000000 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x00000000 __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __strnlen_user +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x00000000 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x00000000 __udelay +EXPORT_SYMBOL vmlinux 0x00000000 __udivsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __umodsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x00000000 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x00000000 __vmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __wake_up +EXPORT_SYMBOL vmlinux 0x00000000 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x00000000 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x00000000 _change_bit +EXPORT_SYMBOL vmlinux 0x00000000 _clear_bit +EXPORT_SYMBOL vmlinux 0x00000000 _cond_resched +EXPORT_SYMBOL vmlinux 0x00000000 _ctype +EXPORT_SYMBOL vmlinux 0x00000000 _dev_info +EXPORT_SYMBOL vmlinux 0x00000000 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _kstrtol +EXPORT_SYMBOL vmlinux 0x00000000 _kstrtoul +EXPORT_SYMBOL vmlinux 0x00000000 _local_bh_enable +EXPORT_SYMBOL vmlinux 0x00000000 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x00000000 _memcpy_toio +EXPORT_SYMBOL vmlinux 0x00000000 _memset_io +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _set_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x00000000 abort +EXPORT_SYMBOL vmlinux 0x00000000 abort_creds +EXPORT_SYMBOL vmlinux 0x00000000 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x00000000 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x00000000 account_page_redirty +EXPORT_SYMBOL vmlinux 0x00000000 account_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 add_device_randomness +EXPORT_SYMBOL vmlinux 0x00000000 add_disk +EXPORT_SYMBOL vmlinux 0x00000000 add_taint +EXPORT_SYMBOL vmlinux 0x00000000 add_timer +EXPORT_SYMBOL vmlinux 0x00000000 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x00000000 add_wait_queue +EXPORT_SYMBOL vmlinux 0x00000000 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x00000000 address_space_init_once +EXPORT_SYMBOL vmlinux 0x00000000 adjust_resource +EXPORT_SYMBOL vmlinux 0x00000000 aio_complete +EXPORT_SYMBOL vmlinux 0x00000000 aio_put_req +EXPORT_SYMBOL vmlinux 0x00000000 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x00000000 alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x00000000 alloc_disk +EXPORT_SYMBOL vmlinux 0x00000000 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x00000000 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x00000000 alloc_file +EXPORT_SYMBOL vmlinux 0x00000000 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x00000000 allocate_resource +EXPORT_SYMBOL vmlinux 0x00000000 allow_signal +EXPORT_SYMBOL vmlinux 0x00000000 amba_device_register +EXPORT_SYMBOL vmlinux 0x00000000 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 amba_driver_register +EXPORT_SYMBOL vmlinux 0x00000000 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x00000000 amba_find_device +EXPORT_SYMBOL vmlinux 0x00000000 amba_release_regions +EXPORT_SYMBOL vmlinux 0x00000000 amba_request_regions +EXPORT_SYMBOL vmlinux 0x00000000 argv_free +EXPORT_SYMBOL vmlinux 0x00000000 argv_split +EXPORT_SYMBOL vmlinux 0x00000000 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x00000000 arm_dma_ops +EXPORT_SYMBOL vmlinux 0x00000000 arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0x00000000 arp_create +EXPORT_SYMBOL vmlinux 0x00000000 arp_find +EXPORT_SYMBOL vmlinux 0x00000000 arp_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 arp_send +EXPORT_SYMBOL vmlinux 0x00000000 arp_tbl +EXPORT_SYMBOL vmlinux 0x00000000 arp_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_link_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_port_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_print_version +EXPORT_SYMBOL vmlinux 0x00000000 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x00000000 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x00000000 audit_log +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_end +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_format +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_secctx +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_start +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x00000000 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0x00000000 avenrun +EXPORT_SYMBOL vmlinux 0x00000000 backlight_device_register +EXPORT_SYMBOL vmlinux 0x00000000 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 backlight_force_update +EXPORT_SYMBOL vmlinux 0x00000000 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x00000000 bcd2bin +EXPORT_SYMBOL vmlinux 0x00000000 bd_set_size +EXPORT_SYMBOL vmlinux 0x00000000 bdev_read_only +EXPORT_SYMBOL vmlinux 0x00000000 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 bdevname +EXPORT_SYMBOL vmlinux 0x00000000 bdget +EXPORT_SYMBOL vmlinux 0x00000000 bdget_disk +EXPORT_SYMBOL vmlinux 0x00000000 bdgrab +EXPORT_SYMBOL vmlinux 0x00000000 bdi_destroy +EXPORT_SYMBOL vmlinux 0x00000000 bdi_init +EXPORT_SYMBOL vmlinux 0x00000000 bdi_register +EXPORT_SYMBOL vmlinux 0x00000000 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x00000000 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x00000000 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x00000000 bdi_unregister +EXPORT_SYMBOL vmlinux 0x00000000 bdput +EXPORT_SYMBOL vmlinux 0x00000000 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x00000000 bh_submit_read +EXPORT_SYMBOL vmlinux 0x00000000 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x00000000 bin2bcd +EXPORT_SYMBOL vmlinux 0x00000000 bio_add_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_alloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x00000000 bio_clone +EXPORT_SYMBOL vmlinux 0x00000000 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x00000000 bio_copy_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_endio +EXPORT_SYMBOL vmlinux 0x00000000 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x00000000 bio_free +EXPORT_SYMBOL vmlinux 0x00000000 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x00000000 bio_init +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x00000000 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_map_kern +EXPORT_SYMBOL vmlinux 0x00000000 bio_map_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_pair_release +EXPORT_SYMBOL vmlinux 0x00000000 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x00000000 bio_put +EXPORT_SYMBOL vmlinux 0x00000000 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x00000000 bio_split +EXPORT_SYMBOL vmlinux 0x00000000 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x00000000 bioset_create +EXPORT_SYMBOL vmlinux 0x00000000 bioset_free +EXPORT_SYMBOL vmlinux 0x00000000 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x00000000 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x00000000 bit_waitqueue +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_bitremap +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_clear +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_fold +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_onto +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_remap +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_set +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x00000000 bitrev16 +EXPORT_SYMBOL vmlinux 0x00000000 bitrev32 +EXPORT_SYMBOL vmlinux 0x00000000 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x00000000 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_complete_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x00000000 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_finish_plug +EXPORT_SYMBOL vmlinux 0x00000000 blk_free_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x00000000 blk_make_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x00000000 blk_peek_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_put_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_put_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x00000000 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x00000000 blk_register_region +EXPORT_SYMBOL vmlinux 0x00000000 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_init +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x00000000 blk_run_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x00000000 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_plug +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x00000000 blk_verify_command +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_put +EXPORT_SYMBOL vmlinux 0x00000000 block_all_signals +EXPORT_SYMBOL vmlinux 0x00000000 block_commit_write +EXPORT_SYMBOL vmlinux 0x00000000 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x00000000 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x00000000 block_read_full_page +EXPORT_SYMBOL vmlinux 0x00000000 block_truncate_page +EXPORT_SYMBOL vmlinux 0x00000000 block_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 block_write_end +EXPORT_SYMBOL vmlinux 0x00000000 block_write_full_page +EXPORT_SYMBOL vmlinux 0x00000000 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x00000000 bmap +EXPORT_SYMBOL vmlinux 0x00000000 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0x00000000 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x00000000 brioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 bsearch +EXPORT_SYMBOL vmlinux 0x00000000 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x00000000 build_skb +EXPORT_SYMBOL vmlinux 0x00000000 cacheid +EXPORT_SYMBOL vmlinux 0x00000000 cad_pid +EXPORT_SYMBOL vmlinux 0x00000000 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x00000000 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x00000000 can_do_mlock +EXPORT_SYMBOL vmlinux 0x00000000 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x00000000 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x00000000 cap_mmap_addr +EXPORT_SYMBOL vmlinux 0x00000000 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x00000000 capable +EXPORT_SYMBOL vmlinux 0x00000000 cdev_add +EXPORT_SYMBOL vmlinux 0x00000000 cdev_alloc +EXPORT_SYMBOL vmlinux 0x00000000 cdev_del +EXPORT_SYMBOL vmlinux 0x00000000 cdev_init +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_open +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_release +EXPORT_SYMBOL vmlinux 0x00000000 check_disk_change +EXPORT_SYMBOL vmlinux 0x00000000 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x00000000 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x00000000 clear_inode +EXPORT_SYMBOL vmlinux 0x00000000 clear_nlink +EXPORT_SYMBOL vmlinux 0x00000000 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x00000000 clk_add_alias +EXPORT_SYMBOL vmlinux 0x00000000 clk_get +EXPORT_SYMBOL vmlinux 0x00000000 clk_get_sys +EXPORT_SYMBOL vmlinux 0x00000000 clk_put +EXPORT_SYMBOL vmlinux 0x00000000 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_add +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_alloc +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_drop +EXPORT_SYMBOL vmlinux 0x00000000 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_register +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x00000000 color_table +EXPORT_SYMBOL vmlinux 0x00000000 commit_creds +EXPORT_SYMBOL vmlinux 0x00000000 complete +EXPORT_SYMBOL vmlinux 0x00000000 complete_all +EXPORT_SYMBOL vmlinux 0x00000000 complete_and_exit +EXPORT_SYMBOL vmlinux 0x00000000 complete_request_key +EXPORT_SYMBOL vmlinux 0x00000000 completion_done +EXPORT_SYMBOL vmlinux 0x00000000 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x00000000 con_is_bound +EXPORT_SYMBOL vmlinux 0x00000000 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x00000000 congestion_wait +EXPORT_SYMBOL vmlinux 0x00000000 console_blank_hook +EXPORT_SYMBOL vmlinux 0x00000000 console_blanked +EXPORT_SYMBOL vmlinux 0x00000000 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0x00000000 console_lock +EXPORT_SYMBOL vmlinux 0x00000000 console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x00000000 console_start +EXPORT_SYMBOL vmlinux 0x00000000 console_stop +EXPORT_SYMBOL vmlinux 0x00000000 console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x00000000 console_trylock +EXPORT_SYMBOL vmlinux 0x00000000 console_unlock +EXPORT_SYMBOL vmlinux 0x00000000 consume_skb +EXPORT_SYMBOL vmlinux 0x00000000 cont_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 contig_page_data +EXPORT_SYMBOL vmlinux 0x00000000 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 copy_page +EXPORT_SYMBOL vmlinux 0x00000000 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x00000000 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x00000000 cpu_cache +EXPORT_SYMBOL vmlinux 0x00000000 cpu_down +EXPORT_SYMBOL vmlinux 0x00000000 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x00000000 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x00000000 cpu_tlb +EXPORT_SYMBOL vmlinux 0x00000000 cpu_user +EXPORT_SYMBOL vmlinux 0x00000000 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0x00000000 cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0x00000000 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x00000000 crc16 +EXPORT_SYMBOL vmlinux 0x00000000 crc16_table +EXPORT_SYMBOL vmlinux 0x00000000 crc32_be +EXPORT_SYMBOL vmlinux 0x00000000 crc32_le +EXPORT_SYMBOL vmlinux 0x00000000 crc_t10dif +EXPORT_SYMBOL vmlinux 0x00000000 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x00000000 create_proc_entry +EXPORT_SYMBOL vmlinux 0x00000000 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 current_kernel_time +EXPORT_SYMBOL vmlinux 0x00000000 current_umask +EXPORT_SYMBOL vmlinux 0x00000000 d_add_ci +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc_name +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x00000000 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0x00000000 d_delete +EXPORT_SYMBOL vmlinux 0x00000000 d_drop +EXPORT_SYMBOL vmlinux 0x00000000 d_find_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_genocide +EXPORT_SYMBOL vmlinux 0x00000000 d_instantiate +EXPORT_SYMBOL vmlinux 0x00000000 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x00000000 d_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 d_lookup +EXPORT_SYMBOL vmlinux 0x00000000 d_make_root +EXPORT_SYMBOL vmlinux 0x00000000 d_move +EXPORT_SYMBOL vmlinux 0x00000000 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_path +EXPORT_SYMBOL vmlinux 0x00000000 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x00000000 d_rehash +EXPORT_SYMBOL vmlinux 0x00000000 d_set_d_op +EXPORT_SYMBOL vmlinux 0x00000000 d_splice_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_validate +EXPORT_SYMBOL vmlinux 0x00000000 daemonize +EXPORT_SYMBOL vmlinux 0x00000000 datagram_poll +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x00000000 dcache_readdir +EXPORT_SYMBOL vmlinux 0x00000000 dcb_getapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_setapp +EXPORT_SYMBOL vmlinux 0x00000000 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x00000000 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x00000000 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x00000000 deactivate_super +EXPORT_SYMBOL vmlinux 0x00000000 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 default_blu +EXPORT_SYMBOL vmlinux 0x00000000 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 default_grn +EXPORT_SYMBOL vmlinux 0x00000000 default_llseek +EXPORT_SYMBOL vmlinux 0x00000000 default_red +EXPORT_SYMBOL vmlinux 0x00000000 default_wake_function +EXPORT_SYMBOL vmlinux 0x00000000 del_gendisk +EXPORT_SYMBOL vmlinux 0x00000000 del_timer +EXPORT_SYMBOL vmlinux 0x00000000 del_timer_sync +EXPORT_SYMBOL vmlinux 0x00000000 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x00000000 dentry_open +EXPORT_SYMBOL vmlinux 0x00000000 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x00000000 dentry_unhash +EXPORT_SYMBOL vmlinux 0x00000000 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x00000000 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x00000000 dev_activate +EXPORT_SYMBOL vmlinux 0x00000000 dev_add_pack +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_alert +EXPORT_SYMBOL vmlinux 0x00000000 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_base_lock +EXPORT_SYMBOL vmlinux 0x00000000 dev_change_flags +EXPORT_SYMBOL vmlinux 0x00000000 dev_close +EXPORT_SYMBOL vmlinux 0x00000000 dev_crit +EXPORT_SYMBOL vmlinux 0x00000000 dev_deactivate +EXPORT_SYMBOL vmlinux 0x00000000 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x00000000 dev_driver_string +EXPORT_SYMBOL vmlinux 0x00000000 dev_emerg +EXPORT_SYMBOL vmlinux 0x00000000 dev_err +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_flags +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_stats +EXPORT_SYMBOL vmlinux 0x00000000 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x00000000 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 dev_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x00000000 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x00000000 dev_load +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x00000000 dev_notice +EXPORT_SYMBOL vmlinux 0x00000000 dev_open +EXPORT_SYMBOL vmlinux 0x00000000 dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x00000000 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_group +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x00000000 dev_trans_start +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x00000000 dev_valid_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_warn +EXPORT_SYMBOL vmlinux 0x00000000 devm_clk_get +EXPORT_SYMBOL vmlinux 0x00000000 devm_clk_put +EXPORT_SYMBOL vmlinux 0x00000000 devm_free_irq +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x00000000 devm_iounmap +EXPORT_SYMBOL vmlinux 0x00000000 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x00000000 dget_parent +EXPORT_SYMBOL vmlinux 0x00000000 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x00000000 disable_hlt +EXPORT_SYMBOL vmlinux 0x00000000 disable_irq +EXPORT_SYMBOL vmlinux 0x00000000 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x00000000 disallow_signal +EXPORT_SYMBOL vmlinux 0x00000000 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 div64_s64 +EXPORT_SYMBOL vmlinux 0x00000000 div64_u64 +EXPORT_SYMBOL vmlinux 0x00000000 div_s64_rem +EXPORT_SYMBOL vmlinux 0x00000000 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 dm_consume_args +EXPORT_SYMBOL vmlinux 0x00000000 dm_get_device +EXPORT_SYMBOL vmlinux 0x00000000 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x00000000 dm_io +EXPORT_SYMBOL vmlinux 0x00000000 dm_io_client_create +EXPORT_SYMBOL vmlinux 0x00000000 dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x00000000 dm_put_device +EXPORT_SYMBOL vmlinux 0x00000000 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x00000000 dm_read_arg +EXPORT_SYMBOL vmlinux 0x00000000 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0x00000000 dm_register_target +EXPORT_SYMBOL vmlinux 0x00000000 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_event +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_size +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_put +EXPORT_SYMBOL vmlinux 0x00000000 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x00000000 dm_vcalloc +EXPORT_SYMBOL vmlinux 0x00000000 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x00000000 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x00000000 dma_find_channel +EXPORT_SYMBOL vmlinux 0x00000000 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x00000000 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x00000000 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_create +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_free +EXPORT_SYMBOL vmlinux 0x00000000 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x00000000 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_supported +EXPORT_SYMBOL vmlinux 0x00000000 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x00000000 dmaengine_get +EXPORT_SYMBOL vmlinux 0x00000000 dmaengine_put +EXPORT_SYMBOL vmlinux 0x00000000 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x00000000 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x00000000 dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x00000000 dns_query +EXPORT_SYMBOL vmlinux 0x00000000 do_SAK +EXPORT_SYMBOL vmlinux 0x00000000 do_blank_screen +EXPORT_SYMBOL vmlinux 0x00000000 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x00000000 do_settimeofday +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_direct +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_from +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_to +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_write +EXPORT_SYMBOL vmlinux 0x00000000 do_truncate +EXPORT_SYMBOL vmlinux 0x00000000 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x00000000 down +EXPORT_SYMBOL vmlinux 0x00000000 down_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 down_killable +EXPORT_SYMBOL vmlinux 0x00000000 down_read +EXPORT_SYMBOL vmlinux 0x00000000 down_read_trylock +EXPORT_SYMBOL vmlinux 0x00000000 down_timeout +EXPORT_SYMBOL vmlinux 0x00000000 down_trylock +EXPORT_SYMBOL vmlinux 0x00000000 down_write +EXPORT_SYMBOL vmlinux 0x00000000 down_write_trylock +EXPORT_SYMBOL vmlinux 0x00000000 downgrade_write +EXPORT_SYMBOL vmlinux 0x00000000 dput +EXPORT_SYMBOL vmlinux 0x00000000 dq_data_lock +EXPORT_SYMBOL vmlinux 0x00000000 dqget +EXPORT_SYMBOL vmlinux 0x00000000 dql_completed +EXPORT_SYMBOL vmlinux 0x00000000 dql_init +EXPORT_SYMBOL vmlinux 0x00000000 dql_reset +EXPORT_SYMBOL vmlinux 0x00000000 dqput +EXPORT_SYMBOL vmlinux 0x00000000 dqstats +EXPORT_SYMBOL vmlinux 0x00000000 dquot_acquire +EXPORT_SYMBOL vmlinux 0x00000000 dquot_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x00000000 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x00000000 dquot_commit +EXPORT_SYMBOL vmlinux 0x00000000 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x00000000 dquot_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dquot_disable +EXPORT_SYMBOL vmlinux 0x00000000 dquot_drop +EXPORT_SYMBOL vmlinux 0x00000000 dquot_enable +EXPORT_SYMBOL vmlinux 0x00000000 dquot_file_open +EXPORT_SYMBOL vmlinux 0x00000000 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x00000000 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x00000000 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x00000000 dquot_initialize +EXPORT_SYMBOL vmlinux 0x00000000 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x00000000 dquot_operations +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x00000000 dquot_release +EXPORT_SYMBOL vmlinux 0x00000000 dquot_resume +EXPORT_SYMBOL vmlinux 0x00000000 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x00000000 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x00000000 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x00000000 dquot_transfer +EXPORT_SYMBOL vmlinux 0x00000000 drop_nlink +EXPORT_SYMBOL vmlinux 0x00000000 drop_super +EXPORT_SYMBOL vmlinux 0x00000000 dst_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x00000000 dst_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dst_discard +EXPORT_SYMBOL vmlinux 0x00000000 dst_release +EXPORT_SYMBOL vmlinux 0x00000000 dump_fpu +EXPORT_SYMBOL vmlinux 0x00000000 dump_seek +EXPORT_SYMBOL vmlinux 0x00000000 dump_stack +EXPORT_SYMBOL vmlinux 0x00000000 dump_write +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x00000000 edac_mc_find +EXPORT_SYMBOL vmlinux 0x00000000 elevator_change +EXPORT_SYMBOL vmlinux 0x00000000 elevator_exit +EXPORT_SYMBOL vmlinux 0x00000000 elevator_init +EXPORT_SYMBOL vmlinux 0x00000000 elf_check_arch +EXPORT_SYMBOL vmlinux 0x00000000 elf_hwcap +EXPORT_SYMBOL vmlinux 0x00000000 elf_platform +EXPORT_SYMBOL vmlinux 0x00000000 elf_set_personality +EXPORT_SYMBOL vmlinux 0x00000000 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x00000000 elv_add_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x00000000 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_add +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_del +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_find +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_register_queue +EXPORT_SYMBOL vmlinux 0x00000000 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x00000000 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x00000000 empty_aops +EXPORT_SYMBOL vmlinux 0x00000000 empty_zero_page +EXPORT_SYMBOL vmlinux 0x00000000 enable_hlt +EXPORT_SYMBOL vmlinux 0x00000000 enable_irq +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 end_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x00000000 eth_header +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_cache +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_parse +EXPORT_SYMBOL vmlinux 0x00000000 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x00000000 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x00000000 eth_type_trans +EXPORT_SYMBOL vmlinux 0x00000000 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x00000000 ether_setup +EXPORT_SYMBOL vmlinux 0x00000000 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x00000000 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x00000000 ewma_add +EXPORT_SYMBOL vmlinux 0x00000000 ewma_init +EXPORT_SYMBOL vmlinux 0x00000000 f_setown +EXPORT_SYMBOL vmlinux 0x00000000 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 fasync_helper +EXPORT_SYMBOL vmlinux 0x00000000 fb_add_videomode +EXPORT_SYMBOL vmlinux 0x00000000 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_blank +EXPORT_SYMBOL vmlinux 0x00000000 fb_class +EXPORT_SYMBOL vmlinux 0x00000000 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_default_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x00000000 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x00000000 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_best_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_options +EXPORT_SYMBOL vmlinux 0x00000000 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0x00000000 fb_match_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0x00000000 fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x00000000 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x00000000 fb_pan_display +EXPORT_SYMBOL vmlinux 0x00000000 fb_parse_edid +EXPORT_SYMBOL vmlinux 0x00000000 fb_register_client +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_var +EXPORT_SYMBOL vmlinux 0x00000000 fb_show_logo +EXPORT_SYMBOL vmlinux 0x00000000 fb_unregister_client +EXPORT_SYMBOL vmlinux 0x00000000 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x00000000 fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x00000000 fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x00000000 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x00000000 fd_install +EXPORT_SYMBOL vmlinux 0x00000000 fg_console +EXPORT_SYMBOL vmlinux 0x00000000 fget +EXPORT_SYMBOL vmlinux 0x00000000 fget_raw +EXPORT_SYMBOL vmlinux 0x00000000 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x00000000 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x00000000 fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x00000000 fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x00000000 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x00000000 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x00000000 file_open_root +EXPORT_SYMBOL vmlinux 0x00000000 file_remove_suid +EXPORT_SYMBOL vmlinux 0x00000000 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x00000000 file_update_time +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fault +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x00000000 filemap_flush +EXPORT_SYMBOL vmlinux 0x00000000 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x00000000 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x00000000 files_lglock +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 filp_open +EXPORT_SYMBOL vmlinux 0x00000000 find_font +EXPORT_SYMBOL vmlinux 0x00000000 find_get_page +EXPORT_SYMBOL vmlinux 0x00000000 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x00000000 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x00000000 find_inode_number +EXPORT_SYMBOL vmlinux 0x00000000 find_last_bit +EXPORT_SYMBOL vmlinux 0x00000000 find_lock_page +EXPORT_SYMBOL vmlinux 0x00000000 find_or_create_page +EXPORT_SYMBOL vmlinux 0x00000000 find_vma +EXPORT_SYMBOL vmlinux 0x00000000 finish_wait +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_clear +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_free +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_get +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_put +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x00000000 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x00000000 flow_cache_genid +EXPORT_SYMBOL vmlinux 0x00000000 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x00000000 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x00000000 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x00000000 flush_old_exec +EXPORT_SYMBOL vmlinux 0x00000000 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00000000 flush_signals +EXPORT_SYMBOL vmlinux 0x00000000 follow_down +EXPORT_SYMBOL vmlinux 0x00000000 follow_down_one +EXPORT_SYMBOL vmlinux 0x00000000 follow_pfn +EXPORT_SYMBOL vmlinux 0x00000000 follow_up +EXPORT_SYMBOL vmlinux 0x00000000 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x00000000 force_sig +EXPORT_SYMBOL vmlinux 0x00000000 fput +EXPORT_SYMBOL vmlinux 0x00000000 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x00000000 framebuffer_release +EXPORT_SYMBOL vmlinux 0x00000000 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x00000000 free_buffer_head +EXPORT_SYMBOL vmlinux 0x00000000 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x00000000 free_irq +EXPORT_SYMBOL vmlinux 0x00000000 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x00000000 free_netdev +EXPORT_SYMBOL vmlinux 0x00000000 free_pages +EXPORT_SYMBOL vmlinux 0x00000000 free_pages_exact +EXPORT_SYMBOL vmlinux 0x00000000 free_task +EXPORT_SYMBOL vmlinux 0x00000000 freeze_bdev +EXPORT_SYMBOL vmlinux 0x00000000 freeze_super +EXPORT_SYMBOL vmlinux 0x00000000 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_shrink +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0x00000000 fs_overflowgid +EXPORT_SYMBOL vmlinux 0x00000000 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsync_bdev +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x00000000 full_name_hash +EXPORT_SYMBOL vmlinux 0x00000000 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x00000000 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x00000000 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x00000000 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x00000000 generate_random_uuid +EXPORT_SYMBOL vmlinux 0x00000000 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x00000000 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x00000000 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x00000000 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x00000000 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_fillattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_listxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_make_request +EXPORT_SYMBOL vmlinux 0x00000000 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 generic_permission +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_read_dir +EXPORT_SYMBOL vmlinux 0x00000000 generic_readlink +EXPORT_SYMBOL vmlinux 0x00000000 generic_removexattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x00000000 generic_segment_checks +EXPORT_SYMBOL vmlinux 0x00000000 generic_setlease +EXPORT_SYMBOL vmlinux 0x00000000 generic_setxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_show_options +EXPORT_SYMBOL vmlinux 0x00000000 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x00000000 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_checks +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_end +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 generic_writepages +EXPORT_SYMBOL vmlinux 0x00000000 genl_lock +EXPORT_SYMBOL vmlinux 0x00000000 genl_notify +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_family +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_ops +EXPORT_SYMBOL vmlinux 0x00000000 genl_unlock +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x00000000 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x00000000 genlmsg_put +EXPORT_SYMBOL vmlinux 0x00000000 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x00000000 genphy_read_status +EXPORT_SYMBOL vmlinux 0x00000000 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x00000000 genphy_resume +EXPORT_SYMBOL vmlinux 0x00000000 genphy_suspend +EXPORT_SYMBOL vmlinux 0x00000000 genphy_update_link +EXPORT_SYMBOL vmlinux 0x00000000 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x00000000 get_default_font +EXPORT_SYMBOL vmlinux 0x00000000 get_disk +EXPORT_SYMBOL vmlinux 0x00000000 get_fs_type +EXPORT_SYMBOL vmlinux 0x00000000 get_gendisk +EXPORT_SYMBOL vmlinux 0x00000000 get_io_context +EXPORT_SYMBOL vmlinux 0x00000000 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x00000000 get_mem_type +EXPORT_SYMBOL vmlinux 0x00000000 get_next_ino +EXPORT_SYMBOL vmlinux 0x00000000 get_option +EXPORT_SYMBOL vmlinux 0x00000000 get_options +EXPORT_SYMBOL vmlinux 0x00000000 get_phy_device +EXPORT_SYMBOL vmlinux 0x00000000 get_random_bytes +EXPORT_SYMBOL vmlinux 0x00000000 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x00000000 get_seconds +EXPORT_SYMBOL vmlinux 0x00000000 get_super +EXPORT_SYMBOL vmlinux 0x00000000 get_super_thawed +EXPORT_SYMBOL vmlinux 0x00000000 get_task_io_context +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 get_unused_fd +EXPORT_SYMBOL vmlinux 0x00000000 get_user_pages +EXPORT_SYMBOL vmlinux 0x00000000 get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x00000000 getname +EXPORT_SYMBOL vmlinux 0x00000000 getnstimeofday +EXPORT_SYMBOL vmlinux 0x00000000 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x00000000 give_up_console +EXPORT_SYMBOL vmlinux 0x00000000 global_cursor_default +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x00000000 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x00000000 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 groups_alloc +EXPORT_SYMBOL vmlinux 0x00000000 groups_free +EXPORT_SYMBOL vmlinux 0x00000000 half_md4_transform +EXPORT_SYMBOL vmlinux 0x00000000 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x00000000 handle_sysrq +EXPORT_SYMBOL vmlinux 0x00000000 have_submounts +EXPORT_SYMBOL vmlinux 0x00000000 hex2bin +EXPORT_SYMBOL vmlinux 0x00000000 hex_asc +EXPORT_SYMBOL vmlinux 0x00000000 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 hex_to_bin +EXPORT_SYMBOL vmlinux 0x00000000 high_memory +EXPORT_SYMBOL vmlinux 0x00000000 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x00000000 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x00000000 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x00000000 i2c_master_send +EXPORT_SYMBOL vmlinux 0x00000000 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 i2c_release_client +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x00000000 i2c_transfer +EXPORT_SYMBOL vmlinux 0x00000000 i2c_use_client +EXPORT_SYMBOL vmlinux 0x00000000 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x00000000 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x00000000 icmp_send +EXPORT_SYMBOL vmlinux 0x00000000 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x00000000 icmpv6_send +EXPORT_SYMBOL vmlinux 0x00000000 ida_destroy +EXPORT_SYMBOL vmlinux 0x00000000 ida_get_new +EXPORT_SYMBOL vmlinux 0x00000000 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x00000000 ida_init +EXPORT_SYMBOL vmlinux 0x00000000 ida_pre_get +EXPORT_SYMBOL vmlinux 0x00000000 ida_remove +EXPORT_SYMBOL vmlinux 0x00000000 ida_simple_get +EXPORT_SYMBOL vmlinux 0x00000000 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x00000000 idr_destroy +EXPORT_SYMBOL vmlinux 0x00000000 idr_find +EXPORT_SYMBOL vmlinux 0x00000000 idr_for_each +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_new +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_next +EXPORT_SYMBOL vmlinux 0x00000000 idr_init +EXPORT_SYMBOL vmlinux 0x00000000 idr_pre_get +EXPORT_SYMBOL vmlinux 0x00000000 idr_remove +EXPORT_SYMBOL vmlinux 0x00000000 idr_remove_all +EXPORT_SYMBOL vmlinux 0x00000000 idr_replace +EXPORT_SYMBOL vmlinux 0x00000000 ifla_policy +EXPORT_SYMBOL vmlinux 0x00000000 iget5_locked +EXPORT_SYMBOL vmlinux 0x00000000 iget_failed +EXPORT_SYMBOL vmlinux 0x00000000 iget_locked +EXPORT_SYMBOL vmlinux 0x00000000 igrab +EXPORT_SYMBOL vmlinux 0x00000000 ihold +EXPORT_SYMBOL vmlinux 0x00000000 ilookup +EXPORT_SYMBOL vmlinux 0x00000000 ilookup5 +EXPORT_SYMBOL vmlinux 0x00000000 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x00000000 in4_pton +EXPORT_SYMBOL vmlinux 0x00000000 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x00000000 in6_pton +EXPORT_SYMBOL vmlinux 0x00000000 in_aton +EXPORT_SYMBOL vmlinux 0x00000000 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x00000000 in_egroup_p +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 in_lock_functions +EXPORT_SYMBOL vmlinux 0x00000000 inc_nlink +EXPORT_SYMBOL vmlinux 0x00000000 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet6_bind +EXPORT_SYMBOL vmlinux 0x00000000 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet6_getname +EXPORT_SYMBOL vmlinux 0x00000000 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet6_release +EXPORT_SYMBOL vmlinux 0x00000000 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet_accept +EXPORT_SYMBOL vmlinux 0x00000000 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 inet_bind +EXPORT_SYMBOL vmlinux 0x00000000 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x00000000 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x00000000 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x00000000 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_find +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_init +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x00000000 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x00000000 inet_getname +EXPORT_SYMBOL vmlinux 0x00000000 inet_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 inet_listen +EXPORT_SYMBOL vmlinux 0x00000000 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x00000000 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x00000000 inet_put_port +EXPORT_SYMBOL vmlinux 0x00000000 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet_release +EXPORT_SYMBOL vmlinux 0x00000000 inet_select_addr +EXPORT_SYMBOL vmlinux 0x00000000 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 inet_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 inet_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x00000000 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x00000000 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x00000000 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x00000000 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x00000000 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x00000000 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x00000000 init_buffer +EXPORT_SYMBOL vmlinux 0x00000000 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x00000000 init_net +EXPORT_SYMBOL vmlinux 0x00000000 init_special_inode +EXPORT_SYMBOL vmlinux 0x00000000 init_task +EXPORT_SYMBOL vmlinux 0x00000000 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x00000000 init_timer_key +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_change_ok +EXPORT_SYMBOL vmlinux 0x00000000 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_dio_done +EXPORT_SYMBOL vmlinux 0x00000000 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x00000000 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_always +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_once +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_owner +EXPORT_SYMBOL vmlinux 0x00000000 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x00000000 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x00000000 inode_only_permission +EXPORT_SYMBOL vmlinux 0x00000000 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x00000000 inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x00000000 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_wait +EXPORT_SYMBOL vmlinux 0x00000000 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x00000000 input_allocate_device +EXPORT_SYMBOL vmlinux 0x00000000 input_close_device +EXPORT_SYMBOL vmlinux 0x00000000 input_event +EXPORT_SYMBOL vmlinux 0x00000000 input_flush_device +EXPORT_SYMBOL vmlinux 0x00000000 input_free_device +EXPORT_SYMBOL vmlinux 0x00000000 input_get_keycode +EXPORT_SYMBOL vmlinux 0x00000000 input_grab_device +EXPORT_SYMBOL vmlinux 0x00000000 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_inject_event +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x00000000 input_open_device +EXPORT_SYMBOL vmlinux 0x00000000 input_register_device +EXPORT_SYMBOL vmlinux 0x00000000 input_register_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_register_handler +EXPORT_SYMBOL vmlinux 0x00000000 input_release_device +EXPORT_SYMBOL vmlinux 0x00000000 input_reset_device +EXPORT_SYMBOL vmlinux 0x00000000 input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x00000000 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x00000000 input_set_capability +EXPORT_SYMBOL vmlinux 0x00000000 input_set_keycode +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_device +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x00000000 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x00000000 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x00000000 install_exec_creds +EXPORT_SYMBOL vmlinux 0x00000000 int_sqrt +EXPORT_SYMBOL vmlinux 0x00000000 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x00000000 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x00000000 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_partition +EXPORT_SYMBOL vmlinux 0x00000000 io_schedule +EXPORT_SYMBOL vmlinux 0x00000000 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x00000000 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x00000000 iomem_resource +EXPORT_SYMBOL vmlinux 0x00000000 ioport_map +EXPORT_SYMBOL vmlinux 0x00000000 ioport_resource +EXPORT_SYMBOL vmlinux 0x00000000 ioport_unmap +EXPORT_SYMBOL vmlinux 0x00000000 ioremap_page +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x00000000 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x00000000 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x00000000 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x00000000 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ip6_route_output +EXPORT_SYMBOL vmlinux 0x00000000 ip6_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x00000000 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x00000000 ip_defrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_fragment +EXPORT_SYMBOL vmlinux 0x00000000 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x00000000 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x00000000 ip_options_compile +EXPORT_SYMBOL vmlinux 0x00000000 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x00000000 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ip_route_input_common +EXPORT_SYMBOL vmlinux 0x00000000 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ip_send_check +EXPORT_SYMBOL vmlinux 0x00000000 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ip_tos2prio +EXPORT_SYMBOL vmlinux 0x00000000 ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ipc_call_fast +EXPORT_SYMBOL vmlinux 0x00000000 ipc_call_slow +EXPORT_SYMBOL vmlinux 0x00000000 iput +EXPORT_SYMBOL vmlinux 0x00000000 ipv4_config +EXPORT_SYMBOL vmlinux 0x00000000 ipv4_specific +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x00000000 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_chip +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0x00000000 irq_stat +EXPORT_SYMBOL vmlinux 0x00000000 irq_to_desc +EXPORT_SYMBOL vmlinux 0x00000000 is_bad_inode +EXPORT_SYMBOL vmlinux 0x00000000 is_container_init +EXPORT_SYMBOL vmlinux 0x00000000 iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0x00000000 iterate_mounts +EXPORT_SYMBOL vmlinux 0x00000000 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x00000000 iunique +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x00000000 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x00000000 jiffies +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_64 +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x00000000 journal_abort +EXPORT_SYMBOL vmlinux 0x00000000 journal_ack_err +EXPORT_SYMBOL vmlinux 0x00000000 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x00000000 journal_check_available_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_check_used_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_clear_err +EXPORT_SYMBOL vmlinux 0x00000000 journal_create +EXPORT_SYMBOL vmlinux 0x00000000 journal_destroy +EXPORT_SYMBOL vmlinux 0x00000000 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x00000000 journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x00000000 journal_errno +EXPORT_SYMBOL vmlinux 0x00000000 journal_extend +EXPORT_SYMBOL vmlinux 0x00000000 journal_flush +EXPORT_SYMBOL vmlinux 0x00000000 journal_force_commit +EXPORT_SYMBOL vmlinux 0x00000000 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x00000000 journal_forget +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_init_dev +EXPORT_SYMBOL vmlinux 0x00000000 journal_init_inode +EXPORT_SYMBOL vmlinux 0x00000000 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 journal_load +EXPORT_SYMBOL vmlinux 0x00000000 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x00000000 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x00000000 journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 journal_revoke +EXPORT_SYMBOL vmlinux 0x00000000 journal_set_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_start +EXPORT_SYMBOL vmlinux 0x00000000 journal_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 journal_stop +EXPORT_SYMBOL vmlinux 0x00000000 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x00000000 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x00000000 journal_update_format +EXPORT_SYMBOL vmlinux 0x00000000 journal_wipe +EXPORT_SYMBOL vmlinux 0x00000000 kasprintf +EXPORT_SYMBOL vmlinux 0x00000000 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x00000000 kd_mksound +EXPORT_SYMBOL vmlinux 0x00000000 kdb_current_task +EXPORT_SYMBOL vmlinux 0x00000000 kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x00000000 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x00000000 kern_path +EXPORT_SYMBOL vmlinux 0x00000000 kern_path_create +EXPORT_SYMBOL vmlinux 0x00000000 kern_unmount +EXPORT_SYMBOL vmlinux 0x00000000 kernel_accept +EXPORT_SYMBOL vmlinux 0x00000000 kernel_bind +EXPORT_SYMBOL vmlinux 0x00000000 kernel_connect +EXPORT_SYMBOL vmlinux 0x00000000 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x00000000 kernel_execve +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 kernel_listen +EXPORT_SYMBOL vmlinux 0x00000000 kernel_read +EXPORT_SYMBOL vmlinux 0x00000000 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 kernel_thread +EXPORT_SYMBOL vmlinux 0x00000000 key_alloc +EXPORT_SYMBOL vmlinux 0x00000000 key_create_or_update +EXPORT_SYMBOL vmlinux 0x00000000 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x00000000 key_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 key_link +EXPORT_SYMBOL vmlinux 0x00000000 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x00000000 key_put +EXPORT_SYMBOL vmlinux 0x00000000 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x00000000 key_revoke +EXPORT_SYMBOL vmlinux 0x00000000 key_task_permission +EXPORT_SYMBOL vmlinux 0x00000000 key_type_keyring +EXPORT_SYMBOL vmlinux 0x00000000 key_unlink +EXPORT_SYMBOL vmlinux 0x00000000 key_update +EXPORT_SYMBOL vmlinux 0x00000000 key_validate +EXPORT_SYMBOL vmlinux 0x00000000 keyring_clear +EXPORT_SYMBOL vmlinux 0x00000000 keyring_search +EXPORT_SYMBOL vmlinux 0x00000000 kfree +EXPORT_SYMBOL vmlinux 0x00000000 kfree_skb +EXPORT_SYMBOL vmlinux 0x00000000 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x00000000 kick_iocb +EXPORT_SYMBOL vmlinux 0x00000000 kill_anon_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_bdev +EXPORT_SYMBOL vmlinux 0x00000000 kill_block_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_fasync +EXPORT_SYMBOL vmlinux 0x00000000 kill_litter_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_pgrp +EXPORT_SYMBOL vmlinux 0x00000000 kill_pid +EXPORT_SYMBOL vmlinux 0x00000000 km_new_mapping +EXPORT_SYMBOL vmlinux 0x00000000 km_policy_expired +EXPORT_SYMBOL vmlinux 0x00000000 km_policy_notify +EXPORT_SYMBOL vmlinux 0x00000000 km_query +EXPORT_SYMBOL vmlinux 0x00000000 km_report +EXPORT_SYMBOL vmlinux 0x00000000 km_state_expired +EXPORT_SYMBOL vmlinux 0x00000000 km_state_notify +EXPORT_SYMBOL vmlinux 0x00000000 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x00000000 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x00000000 kmap +EXPORT_SYMBOL vmlinux 0x00000000 kmap_atomic +EXPORT_SYMBOL vmlinux 0x00000000 kmap_high +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x00000000 kmemdup +EXPORT_SYMBOL vmlinux 0x00000000 kobject_add +EXPORT_SYMBOL vmlinux 0x00000000 kobject_del +EXPORT_SYMBOL vmlinux 0x00000000 kobject_get +EXPORT_SYMBOL vmlinux 0x00000000 kobject_init +EXPORT_SYMBOL vmlinux 0x00000000 kobject_put +EXPORT_SYMBOL vmlinux 0x00000000 kobject_set_name +EXPORT_SYMBOL vmlinux 0x00000000 krealloc +EXPORT_SYMBOL vmlinux 0x00000000 kset_register +EXPORT_SYMBOL vmlinux 0x00000000 kset_unregister +EXPORT_SYMBOL vmlinux 0x00000000 ksize +EXPORT_SYMBOL vmlinux 0x00000000 kstat +EXPORT_SYMBOL vmlinux 0x00000000 kstrdup +EXPORT_SYMBOL vmlinux 0x00000000 kstrndup +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoint +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoll +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos16 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos8 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou16 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou8 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtouint +EXPORT_SYMBOL vmlinux 0x00000000 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoull +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kthread_bind +EXPORT_SYMBOL vmlinux 0x00000000 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x00000000 kthread_should_stop +EXPORT_SYMBOL vmlinux 0x00000000 kthread_stop +EXPORT_SYMBOL vmlinux 0x00000000 kunmap +EXPORT_SYMBOL vmlinux 0x00000000 kunmap_high +EXPORT_SYMBOL vmlinux 0x00000000 kvasprintf +EXPORT_SYMBOL vmlinux 0x00000000 kzfree +EXPORT_SYMBOL vmlinux 0x00000000 laptop_mode +EXPORT_SYMBOL vmlinux 0x00000000 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x00000000 lease_modify +EXPORT_SYMBOL vmlinux 0x00000000 led_blink_set +EXPORT_SYMBOL vmlinux 0x00000000 led_brightness_set +EXPORT_SYMBOL vmlinux 0x00000000 lg_global_lock +EXPORT_SYMBOL vmlinux 0x00000000 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_lock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x00000000 lg_lock_init +EXPORT_SYMBOL vmlinux 0x00000000 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x00000000 list_sort +EXPORT_SYMBOL vmlinux 0x00000000 ll_rw_block +EXPORT_SYMBOL vmlinux 0x00000000 load_nls +EXPORT_SYMBOL vmlinux 0x00000000 load_nls_default +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_disable +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_enable +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x00000000 lock_fb_info +EXPORT_SYMBOL vmlinux 0x00000000 lock_may_read +EXPORT_SYMBOL vmlinux 0x00000000 lock_may_write +EXPORT_SYMBOL vmlinux 0x00000000 lock_rename +EXPORT_SYMBOL vmlinux 0x00000000 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x00000000 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x00000000 lock_super +EXPORT_SYMBOL vmlinux 0x00000000 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_delete_block +EXPORT_SYMBOL vmlinux 0x00000000 locks_free_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_init_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x00000000 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x00000000 log_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 log_wait_commit +EXPORT_SYMBOL vmlinux 0x00000000 lookup_bdev +EXPORT_SYMBOL vmlinux 0x00000000 lookup_hash +EXPORT_SYMBOL vmlinux 0x00000000 lookup_one_len +EXPORT_SYMBOL vmlinux 0x00000000 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x00000000 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0x00000000 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0x00000000 lro_flush_all +EXPORT_SYMBOL vmlinux 0x00000000 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x00000000 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x00000000 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 mac_pton +EXPORT_SYMBOL vmlinux 0x00000000 make_EII_client +EXPORT_SYMBOL vmlinux 0x00000000 make_bad_inode +EXPORT_SYMBOL vmlinux 0x00000000 mangle_path +EXPORT_SYMBOL vmlinux 0x00000000 mapping_tagged +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x00000000 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x00000000 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x00000000 match_hex +EXPORT_SYMBOL vmlinux 0x00000000 match_int +EXPORT_SYMBOL vmlinux 0x00000000 match_octal +EXPORT_SYMBOL vmlinux 0x00000000 match_strdup +EXPORT_SYMBOL vmlinux 0x00000000 match_strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 match_token +EXPORT_SYMBOL vmlinux 0x00000000 max_mapnr +EXPORT_SYMBOL vmlinux 0x00000000 may_umount +EXPORT_SYMBOL vmlinux 0x00000000 may_umount_tree +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_create +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x00000000 mcount +EXPORT_SYMBOL vmlinux 0x00000000 md5_transform +EXPORT_SYMBOL vmlinux 0x00000000 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x00000000 md_check_recovery +EXPORT_SYMBOL vmlinux 0x00000000 md_done_sync +EXPORT_SYMBOL vmlinux 0x00000000 md_error +EXPORT_SYMBOL vmlinux 0x00000000 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x00000000 md_flush_request +EXPORT_SYMBOL vmlinux 0x00000000 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x00000000 md_integrity_register +EXPORT_SYMBOL vmlinux 0x00000000 md_register_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x00000000 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x00000000 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_write_end +EXPORT_SYMBOL vmlinux 0x00000000 md_write_start +EXPORT_SYMBOL vmlinux 0x00000000 mddev_congested +EXPORT_SYMBOL vmlinux 0x00000000 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_free +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_read +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_register +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_write +EXPORT_SYMBOL vmlinux 0x00000000 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x00000000 mem_map +EXPORT_SYMBOL vmlinux 0x00000000 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x00000000 memchr +EXPORT_SYMBOL vmlinux 0x00000000 memchr_inv +EXPORT_SYMBOL vmlinux 0x00000000 memcmp +EXPORT_SYMBOL vmlinux 0x00000000 memcpy +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x00000000 memdup_user +EXPORT_SYMBOL vmlinux 0x00000000 memmove +EXPORT_SYMBOL vmlinux 0x00000000 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 memparse +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x00000000 mempool_create +EXPORT_SYMBOL vmlinux 0x00000000 mempool_create_node +EXPORT_SYMBOL vmlinux 0x00000000 mempool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free_pages +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x00000000 mempool_kfree +EXPORT_SYMBOL vmlinux 0x00000000 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 mempool_resize +EXPORT_SYMBOL vmlinux 0x00000000 memscan +EXPORT_SYMBOL vmlinux 0x00000000 memset +EXPORT_SYMBOL vmlinux 0x00000000 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x00000000 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x00000000 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x00000000 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x00000000 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x00000000 migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_link +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_media +EXPORT_SYMBOL vmlinux 0x00000000 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x00000000 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x00000000 mii_link_ok +EXPORT_SYMBOL vmlinux 0x00000000 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x00000000 misc_deregister +EXPORT_SYMBOL vmlinux 0x00000000 misc_register +EXPORT_SYMBOL vmlinux 0x00000000 mktime +EXPORT_SYMBOL vmlinux 0x00000000 mmc_add_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x00000000 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x00000000 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x00000000 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x00000000 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x00000000 mmc_erase +EXPORT_SYMBOL vmlinux 0x00000000 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x00000000 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x00000000 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x00000000 mmc_free_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x00000000 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x00000000 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x00000000 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0x00000000 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x00000000 mmc_release_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_request_done +EXPORT_SYMBOL vmlinux 0x00000000 mmc_resume_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x00000000 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x00000000 mmc_start_req +EXPORT_SYMBOL vmlinux 0x00000000 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x00000000 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x00000000 mnt_pin +EXPORT_SYMBOL vmlinux 0x00000000 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x00000000 mnt_unpin +EXPORT_SYMBOL vmlinux 0x00000000 mntget +EXPORT_SYMBOL vmlinux 0x00000000 mntput +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x00000000 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 module_put +EXPORT_SYMBOL vmlinux 0x00000000 module_refcount +EXPORT_SYMBOL vmlinux 0x00000000 mount_bdev +EXPORT_SYMBOL vmlinux 0x00000000 mount_nodev +EXPORT_SYMBOL vmlinux 0x00000000 mount_ns +EXPORT_SYMBOL vmlinux 0x00000000 mount_pseudo +EXPORT_SYMBOL vmlinux 0x00000000 mount_single +EXPORT_SYMBOL vmlinux 0x00000000 mount_subtree +EXPORT_SYMBOL vmlinux 0x00000000 mpage_readpage +EXPORT_SYMBOL vmlinux 0x00000000 mpage_readpages +EXPORT_SYMBOL vmlinux 0x00000000 mpage_writepage +EXPORT_SYMBOL vmlinux 0x00000000 mpage_writepages +EXPORT_SYMBOL vmlinux 0x00000000 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 msleep +EXPORT_SYMBOL vmlinux 0x00000000 msleep_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x00000000 mutex_trylock +EXPORT_SYMBOL vmlinux 0x00000000 mutex_unlock +EXPORT_SYMBOL vmlinux 0x00000000 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x00000000 names_cachep +EXPORT_SYMBOL vmlinux 0x00000000 napi_complete +EXPORT_SYMBOL vmlinux 0x00000000 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x00000000 napi_get_frags +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x00000000 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x00000000 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x00000000 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_create +EXPORT_SYMBOL vmlinux 0x00000000 neigh_destroy +EXPORT_SYMBOL vmlinux 0x00000000 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x00000000 neigh_for_each +EXPORT_SYMBOL vmlinux 0x00000000 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x00000000 neigh_lookup +EXPORT_SYMBOL vmlinux 0x00000000 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x00000000 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x00000000 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x00000000 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x00000000 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x00000000 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x00000000 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x00000000 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x00000000 neigh_table_init +EXPORT_SYMBOL vmlinux 0x00000000 neigh_update +EXPORT_SYMBOL vmlinux 0x00000000 net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x00000000 net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 net_msg_warn +EXPORT_SYMBOL vmlinux 0x00000000 net_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 netdev_alert +EXPORT_SYMBOL vmlinux 0x00000000 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x00000000 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x00000000 netdev_change_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x00000000 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x00000000 netdev_crit +EXPORT_SYMBOL vmlinux 0x00000000 netdev_emerg +EXPORT_SYMBOL vmlinux 0x00000000 netdev_err +EXPORT_SYMBOL vmlinux 0x00000000 netdev_features_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_info +EXPORT_SYMBOL vmlinux 0x00000000 netdev_notice +EXPORT_SYMBOL vmlinux 0x00000000 netdev_printk +EXPORT_SYMBOL vmlinux 0x00000000 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x00000000 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x00000000 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x00000000 netdev_set_master +EXPORT_SYMBOL vmlinux 0x00000000 netdev_state_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0x00000000 netdev_update_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_warn +EXPORT_SYMBOL vmlinux 0x00000000 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x00000000 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x00000000 netif_device_attach +EXPORT_SYMBOL vmlinux 0x00000000 netif_device_detach +EXPORT_SYMBOL vmlinux 0x00000000 netif_napi_add +EXPORT_SYMBOL vmlinux 0x00000000 netif_napi_del +EXPORT_SYMBOL vmlinux 0x00000000 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x00000000 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 netif_rx +EXPORT_SYMBOL vmlinux 0x00000000 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x00000000 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x00000000 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x00000000 netif_skb_features +EXPORT_SYMBOL vmlinux 0x00000000 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x00000000 netlink_ack +EXPORT_SYMBOL vmlinux 0x00000000 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x00000000 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x00000000 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x00000000 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x00000000 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0x00000000 netlink_set_err +EXPORT_SYMBOL vmlinux 0x00000000 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x00000000 netlink_unicast +EXPORT_SYMBOL vmlinux 0x00000000 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_setup +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_trap +EXPORT_SYMBOL vmlinux 0x00000000 new_inode +EXPORT_SYMBOL vmlinux 0x00000000 nf_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x00000000 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x00000000 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x00000000 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x00000000 nf_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0x00000000 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x00000000 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_packet +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_register +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_hook +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_reinject +EXPORT_SYMBOL vmlinux 0x00000000 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x00000000 nla_append +EXPORT_SYMBOL vmlinux 0x00000000 nla_find +EXPORT_SYMBOL vmlinux 0x00000000 nla_memcmp +EXPORT_SYMBOL vmlinux 0x00000000 nla_memcpy +EXPORT_SYMBOL vmlinux 0x00000000 nla_parse +EXPORT_SYMBOL vmlinux 0x00000000 nla_policy_len +EXPORT_SYMBOL vmlinux 0x00000000 nla_put +EXPORT_SYMBOL vmlinux 0x00000000 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 nla_reserve +EXPORT_SYMBOL vmlinux 0x00000000 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 nla_strcmp +EXPORT_SYMBOL vmlinux 0x00000000 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 nla_validate +EXPORT_SYMBOL vmlinux 0x00000000 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x00000000 no_llseek +EXPORT_SYMBOL vmlinux 0x00000000 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x00000000 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 nobh_write_end +EXPORT_SYMBOL vmlinux 0x00000000 nobh_writepage +EXPORT_SYMBOL vmlinux 0x00000000 node_states +EXPORT_SYMBOL vmlinux 0x00000000 nonseekable_open +EXPORT_SYMBOL vmlinux 0x00000000 noop_fsync +EXPORT_SYMBOL vmlinux 0x00000000 noop_llseek +EXPORT_SYMBOL vmlinux 0x00000000 noop_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 notify_change +EXPORT_SYMBOL vmlinux 0x00000000 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 ns_to_timespec +EXPORT_SYMBOL vmlinux 0x00000000 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x00000000 num_physpages +EXPORT_SYMBOL vmlinux 0x00000000 num_registered_fb +EXPORT_SYMBOL vmlinux 0x00000000 of_clk_get +EXPORT_SYMBOL vmlinux 0x00000000 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 of_dev_get +EXPORT_SYMBOL vmlinux 0x00000000 of_dev_put +EXPORT_SYMBOL vmlinux 0x00000000 of_device_alloc +EXPORT_SYMBOL vmlinux 0x00000000 of_device_is_available +EXPORT_SYMBOL vmlinux 0x00000000 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x00000000 of_device_register +EXPORT_SYMBOL vmlinux 0x00000000 of_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x00000000 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x00000000 of_find_property +EXPORT_SYMBOL vmlinux 0x00000000 of_get_address +EXPORT_SYMBOL vmlinux 0x00000000 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x00000000 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x00000000 of_get_next_child +EXPORT_SYMBOL vmlinux 0x00000000 of_get_parent +EXPORT_SYMBOL vmlinux 0x00000000 of_get_property +EXPORT_SYMBOL vmlinux 0x00000000 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0x00000000 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x00000000 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x00000000 of_iomap +EXPORT_SYMBOL vmlinux 0x00000000 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0x00000000 of_match_device +EXPORT_SYMBOL vmlinux 0x00000000 of_match_node +EXPORT_SYMBOL vmlinux 0x00000000 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x00000000 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x00000000 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x00000000 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x00000000 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x00000000 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x00000000 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_connect +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x00000000 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x00000000 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x00000000 of_translate_address +EXPORT_SYMBOL vmlinux 0x00000000 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x00000000 oops_in_progress +EXPORT_SYMBOL vmlinux 0x00000000 open_exec +EXPORT_SYMBOL vmlinux 0x00000000 otg_state_string +EXPORT_SYMBOL vmlinux 0x00000000 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x00000000 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x00000000 outer_cache +EXPORT_SYMBOL vmlinux 0x00000000 overflowgid +EXPORT_SYMBOL vmlinux 0x00000000 overflowuid +EXPORT_SYMBOL vmlinux 0x00000000 override_creds +EXPORT_SYMBOL vmlinux 0x00000000 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x00000000 padata_alloc +EXPORT_SYMBOL vmlinux 0x00000000 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x00000000 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x00000000 padata_do_serial +EXPORT_SYMBOL vmlinux 0x00000000 padata_free +EXPORT_SYMBOL vmlinux 0x00000000 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x00000000 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x00000000 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x00000000 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x00000000 padata_start +EXPORT_SYMBOL vmlinux 0x00000000 padata_stop +EXPORT_SYMBOL vmlinux 0x00000000 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x00000000 page_address +EXPORT_SYMBOL vmlinux 0x00000000 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x00000000 page_put_link +EXPORT_SYMBOL vmlinux 0x00000000 page_readlink +EXPORT_SYMBOL vmlinux 0x00000000 page_symlink +EXPORT_SYMBOL vmlinux 0x00000000 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x00000000 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x00000000 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x00000000 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x00000000 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x00000000 panic +EXPORT_SYMBOL vmlinux 0x00000000 panic_blink +EXPORT_SYMBOL vmlinux 0x00000000 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x00000000 param_array_ops +EXPORT_SYMBOL vmlinux 0x00000000 param_get_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_get_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_get_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_get_int +EXPORT_SYMBOL vmlinux 0x00000000 param_get_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_get_long +EXPORT_SYMBOL vmlinux 0x00000000 param_get_short +EXPORT_SYMBOL vmlinux 0x00000000 param_get_string +EXPORT_SYMBOL vmlinux 0x00000000 param_get_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_get_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_get_ushort +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_bint +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_int +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_long +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_short +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_string +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x00000000 param_set_bint +EXPORT_SYMBOL vmlinux 0x00000000 param_set_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_set_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_set_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_set_copystring +EXPORT_SYMBOL vmlinux 0x00000000 param_set_int +EXPORT_SYMBOL vmlinux 0x00000000 param_set_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_set_long +EXPORT_SYMBOL vmlinux 0x00000000 param_set_short +EXPORT_SYMBOL vmlinux 0x00000000 param_set_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_set_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_set_ushort +EXPORT_SYMBOL vmlinux 0x00000000 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x00000000 path_get +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 path_put +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x00000000 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x00000000 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x00000000 pfn_valid +EXPORT_SYMBOL vmlinux 0x00000000 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x00000000 pgprot_user +EXPORT_SYMBOL vmlinux 0x00000000 phy_attach +EXPORT_SYMBOL vmlinux 0x00000000 phy_connect +EXPORT_SYMBOL vmlinux 0x00000000 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x00000000 phy_detach +EXPORT_SYMBOL vmlinux 0x00000000 phy_device_free +EXPORT_SYMBOL vmlinux 0x00000000 phy_device_register +EXPORT_SYMBOL vmlinux 0x00000000 phy_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 phy_driver_register +EXPORT_SYMBOL vmlinux 0x00000000 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x00000000 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x00000000 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x00000000 phy_find_first +EXPORT_SYMBOL vmlinux 0x00000000 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 phy_print_status +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x00000000 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x00000000 phy_start +EXPORT_SYMBOL vmlinux 0x00000000 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x00000000 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x00000000 phy_stop +EXPORT_SYMBOL vmlinux 0x00000000 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x00000000 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x00000000 pid_task +EXPORT_SYMBOL vmlinux 0x00000000 ping_prot +EXPORT_SYMBOL vmlinux 0x00000000 pipe_lock +EXPORT_SYMBOL vmlinux 0x00000000 pipe_to_file +EXPORT_SYMBOL vmlinux 0x00000000 pipe_unlock +EXPORT_SYMBOL vmlinux 0x00000000 pl330_filter +EXPORT_SYMBOL vmlinux 0x00000000 pm_idle +EXPORT_SYMBOL vmlinux 0x00000000 pm_power_off +EXPORT_SYMBOL vmlinux 0x00000000 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x00000000 pm_suspend +EXPORT_SYMBOL vmlinux 0x00000000 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x00000000 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x00000000 poll_freewait +EXPORT_SYMBOL vmlinux 0x00000000 poll_initwait +EXPORT_SYMBOL vmlinux 0x00000000 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_create +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_init +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x00000000 posix_lock_file +EXPORT_SYMBOL vmlinux 0x00000000 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x00000000 posix_test_lock +EXPORT_SYMBOL vmlinux 0x00000000 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x00000000 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x00000000 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x00000000 ppp_input +EXPORT_SYMBOL vmlinux 0x00000000 ppp_input_error +EXPORT_SYMBOL vmlinux 0x00000000 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x00000000 prandom32 +EXPORT_SYMBOL vmlinux 0x00000000 prepare_binprm +EXPORT_SYMBOL vmlinux 0x00000000 prepare_creds +EXPORT_SYMBOL vmlinux 0x00000000 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x00000000 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x00000000 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x00000000 print_hex_dump +EXPORT_SYMBOL vmlinux 0x00000000 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x00000000 printk +EXPORT_SYMBOL vmlinux 0x00000000 printk_emit +EXPORT_SYMBOL vmlinux 0x00000000 printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_mask +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_off +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_on +EXPORT_SYMBOL vmlinux 0x00000000 proc_create_data +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dostring +EXPORT_SYMBOL vmlinux 0x00000000 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x00000000 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x00000000 proc_symlink +EXPORT_SYMBOL vmlinux 0x00000000 processor_id +EXPORT_SYMBOL vmlinux 0x00000000 profile_pc +EXPORT_SYMBOL vmlinux 0x00000000 proto_register +EXPORT_SYMBOL vmlinux 0x00000000 proto_unregister +EXPORT_SYMBOL vmlinux 0x00000000 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x00000000 ps2_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_drain +EXPORT_SYMBOL vmlinux 0x00000000 ps2_end_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x00000000 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x00000000 ps2_init +EXPORT_SYMBOL vmlinux 0x00000000 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x00000000 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x00000000 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x00000000 put_cmsg +EXPORT_SYMBOL vmlinux 0x00000000 put_disk +EXPORT_SYMBOL vmlinux 0x00000000 put_io_context +EXPORT_SYMBOL vmlinux 0x00000000 put_page +EXPORT_SYMBOL vmlinux 0x00000000 put_pages_list +EXPORT_SYMBOL vmlinux 0x00000000 put_tty_driver +EXPORT_SYMBOL vmlinux 0x00000000 put_unused_fd +EXPORT_SYMBOL vmlinux 0x00000000 putname +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_reset +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x00000000 random32 +EXPORT_SYMBOL vmlinux 0x00000000 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x00000000 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_insert +EXPORT_SYMBOL vmlinux 0x00000000 rb_erase +EXPORT_SYMBOL vmlinux 0x00000000 rb_first +EXPORT_SYMBOL vmlinux 0x00000000 rb_insert_color +EXPORT_SYMBOL vmlinux 0x00000000 rb_last +EXPORT_SYMBOL vmlinux 0x00000000 rb_next +EXPORT_SYMBOL vmlinux 0x00000000 rb_prev +EXPORT_SYMBOL vmlinux 0x00000000 rb_replace_node +EXPORT_SYMBOL vmlinux 0x00000000 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_pages +EXPORT_SYMBOL vmlinux 0x00000000 read_dev_sector +EXPORT_SYMBOL vmlinux 0x00000000 recalc_sigpending +EXPORT_SYMBOL vmlinux 0x00000000 reciprocal_value +EXPORT_SYMBOL vmlinux 0x00000000 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x00000000 redraw_screen +EXPORT_SYMBOL vmlinux 0x00000000 register_blkdev +EXPORT_SYMBOL vmlinux 0x00000000 register_cdrom +EXPORT_SYMBOL vmlinux 0x00000000 register_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 register_con_driver +EXPORT_SYMBOL vmlinux 0x00000000 register_console +EXPORT_SYMBOL vmlinux 0x00000000 register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 register_filesystem +EXPORT_SYMBOL vmlinux 0x00000000 register_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 register_gifconf +EXPORT_SYMBOL vmlinux 0x00000000 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_key_type +EXPORT_SYMBOL vmlinux 0x00000000 register_md_personality +EXPORT_SYMBOL vmlinux 0x00000000 register_module_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_netdev +EXPORT_SYMBOL vmlinux 0x00000000 register_netdevice +EXPORT_SYMBOL vmlinux 0x00000000 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_nls +EXPORT_SYMBOL vmlinux 0x00000000 register_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 register_quota_format +EXPORT_SYMBOL vmlinux 0x00000000 register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_shrinker +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x00000000 register_sysrq_key +EXPORT_SYMBOL vmlinux 0x00000000 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x00000000 registered_fb +EXPORT_SYMBOL vmlinux 0x00000000 release_firmware +EXPORT_SYMBOL vmlinux 0x00000000 release_pages +EXPORT_SYMBOL vmlinux 0x00000000 release_resource +EXPORT_SYMBOL vmlinux 0x00000000 release_sock +EXPORT_SYMBOL vmlinux 0x00000000 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x00000000 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x00000000 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x00000000 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x00000000 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x00000000 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x00000000 rename_lock +EXPORT_SYMBOL vmlinux 0x00000000 replace_mount_options +EXPORT_SYMBOL vmlinux 0x00000000 request_firmware +EXPORT_SYMBOL vmlinux 0x00000000 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x00000000 request_key +EXPORT_SYMBOL vmlinux 0x00000000 request_key_async +EXPORT_SYMBOL vmlinux 0x00000000 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x00000000 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x00000000 request_resource +EXPORT_SYMBOL vmlinux 0x00000000 request_threaded_irq +EXPORT_SYMBOL vmlinux 0x00000000 reset_devices +EXPORT_SYMBOL vmlinux 0x00000000 revalidate_disk +EXPORT_SYMBOL vmlinux 0x00000000 revert_creds +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_blocked +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_destroy +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_register +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_unregister +EXPORT_SYMBOL vmlinux 0x00000000 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x00000000 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x00000000 rt6_lookup +EXPORT_SYMBOL vmlinux 0x00000000 rtc_lock +EXPORT_SYMBOL vmlinux 0x00000000 rtc_month_days +EXPORT_SYMBOL vmlinux 0x00000000 rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0x00000000 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0x00000000 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x00000000 rtc_year_days +EXPORT_SYMBOL vmlinux 0x00000000 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_lock +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_notify +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_trylock +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x00000000 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0x00000000 save_mount_options +EXPORT_SYMBOL vmlinux 0x00000000 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 schedule +EXPORT_SYMBOL vmlinux 0x00000000 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x00000000 schedule_work +EXPORT_SYMBOL vmlinux 0x00000000 schedule_work_on +EXPORT_SYMBOL vmlinux 0x00000000 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x00000000 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x00000000 scnprintf +EXPORT_SYMBOL vmlinux 0x00000000 scsi_add_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x00000000 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x00000000 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x00000000 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x00000000 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x00000000 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x00000000 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_get +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_put +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_type +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_execute +EXPORT_SYMBOL vmlinux 0x00000000 scsi_execute_req +EXPORT_SYMBOL vmlinux 0x00000000 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x00000000 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_free_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_get +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_put +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x00000000 scsi_init_io +EXPORT_SYMBOL vmlinux 0x00000000 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_partsize +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_result +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_status +EXPORT_SYMBOL vmlinux 0x00000000 scsi_put_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x00000000 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x00000000 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x00000000 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x00000000 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x00000000 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x00000000 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x00000000 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_result +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x00000000 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x00000000 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x00000000 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x00000000 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x00000000 scsi_unregister +EXPORT_SYMBOL vmlinux 0x00000000 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x00000000 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x00000000 search_binary_handler +EXPORT_SYMBOL vmlinux 0x00000000 secpath_dup +EXPORT_SYMBOL vmlinux 0x00000000 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x00000000 security_file_permission +EXPORT_SYMBOL vmlinux 0x00000000 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_mmap_file +EXPORT_SYMBOL vmlinux 0x00000000 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x00000000 security_path_chmod +EXPORT_SYMBOL vmlinux 0x00000000 security_path_chown +EXPORT_SYMBOL vmlinux 0x00000000 security_path_link +EXPORT_SYMBOL vmlinux 0x00000000 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 security_path_mknod +EXPORT_SYMBOL vmlinux 0x00000000 security_path_rename +EXPORT_SYMBOL vmlinux 0x00000000 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 security_path_symlink +EXPORT_SYMBOL vmlinux 0x00000000 security_path_truncate +EXPORT_SYMBOL vmlinux 0x00000000 security_path_unlink +EXPORT_SYMBOL vmlinux 0x00000000 security_release_secctx +EXPORT_SYMBOL vmlinux 0x00000000 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x00000000 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x00000000 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x00000000 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x00000000 security_sk_clone +EXPORT_SYMBOL vmlinux 0x00000000 security_sock_graft +EXPORT_SYMBOL vmlinux 0x00000000 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x00000000 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x00000000 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x00000000 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x00000000 send_remote_softirq +EXPORT_SYMBOL vmlinux 0x00000000 send_sig +EXPORT_SYMBOL vmlinux 0x00000000 send_sig_info +EXPORT_SYMBOL vmlinux 0x00000000 seq_bitmap +EXPORT_SYMBOL vmlinux 0x00000000 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x00000000 seq_escape +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_next +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_next +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_start +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_start_head +EXPORT_SYMBOL vmlinux 0x00000000 seq_lseek +EXPORT_SYMBOL vmlinux 0x00000000 seq_open +EXPORT_SYMBOL vmlinux 0x00000000 seq_open_private +EXPORT_SYMBOL vmlinux 0x00000000 seq_path +EXPORT_SYMBOL vmlinux 0x00000000 seq_printf +EXPORT_SYMBOL vmlinux 0x00000000 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x00000000 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x00000000 seq_putc +EXPORT_SYMBOL vmlinux 0x00000000 seq_puts +EXPORT_SYMBOL vmlinux 0x00000000 seq_read +EXPORT_SYMBOL vmlinux 0x00000000 seq_release +EXPORT_SYMBOL vmlinux 0x00000000 seq_release_private +EXPORT_SYMBOL vmlinux 0x00000000 seq_write +EXPORT_SYMBOL vmlinux 0x00000000 serio_close +EXPORT_SYMBOL vmlinux 0x00000000 serio_interrupt +EXPORT_SYMBOL vmlinux 0x00000000 serio_open +EXPORT_SYMBOL vmlinux 0x00000000 serio_reconnect +EXPORT_SYMBOL vmlinux 0x00000000 serio_rescan +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x00000000 set_anon_super +EXPORT_SYMBOL vmlinux 0x00000000 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x00000000 set_bh_page +EXPORT_SYMBOL vmlinux 0x00000000 set_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 set_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 set_create_files_as +EXPORT_SYMBOL vmlinux 0x00000000 set_current_groups +EXPORT_SYMBOL vmlinux 0x00000000 set_device_ro +EXPORT_SYMBOL vmlinux 0x00000000 set_disk_ro +EXPORT_SYMBOL vmlinux 0x00000000 set_freezable +EXPORT_SYMBOL vmlinux 0x00000000 set_groups +EXPORT_SYMBOL vmlinux 0x00000000 set_nlink +EXPORT_SYMBOL vmlinux 0x00000000 set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x00000000 set_page_dirty +EXPORT_SYMBOL vmlinux 0x00000000 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x00000000 set_security_override +EXPORT_SYMBOL vmlinux 0x00000000 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x00000000 set_user_nice +EXPORT_SYMBOL vmlinux 0x00000000 setattr_copy +EXPORT_SYMBOL vmlinux 0x00000000 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x00000000 setup_max_cpus +EXPORT_SYMBOL vmlinux 0x00000000 setup_new_exec +EXPORT_SYMBOL vmlinux 0x00000000 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sg_free_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_init_one +EXPORT_SYMBOL vmlinux 0x00000000 sg_init_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_last +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_next +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_start +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x00000000 sg_next +EXPORT_SYMBOL vmlinux 0x00000000 sget +EXPORT_SYMBOL vmlinux 0x00000000 sha_transform +EXPORT_SYMBOL vmlinux 0x00000000 should_remove_suid +EXPORT_SYMBOL vmlinux 0x00000000 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x00000000 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x00000000 si_meminfo +EXPORT_SYMBOL vmlinux 0x00000000 sigprocmask +EXPORT_SYMBOL vmlinux 0x00000000 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x00000000 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x00000000 simple_empty +EXPORT_SYMBOL vmlinux 0x00000000 simple_fill_super +EXPORT_SYMBOL vmlinux 0x00000000 simple_getattr +EXPORT_SYMBOL vmlinux 0x00000000 simple_link +EXPORT_SYMBOL vmlinux 0x00000000 simple_lookup +EXPORT_SYMBOL vmlinux 0x00000000 simple_open +EXPORT_SYMBOL vmlinux 0x00000000 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x00000000 simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 simple_readpage +EXPORT_SYMBOL vmlinux 0x00000000 simple_release_fs +EXPORT_SYMBOL vmlinux 0x00000000 simple_rename +EXPORT_SYMBOL vmlinux 0x00000000 simple_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 simple_setattr +EXPORT_SYMBOL vmlinux 0x00000000 simple_statfs +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtol +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoll +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoul +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoull +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x00000000 simple_unlink +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_end +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 single_open +EXPORT_SYMBOL vmlinux 0x00000000 single_release +EXPORT_SYMBOL vmlinux 0x00000000 sk_alloc +EXPORT_SYMBOL vmlinux 0x00000000 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_common_release +EXPORT_SYMBOL vmlinux 0x00000000 sk_dst_check +EXPORT_SYMBOL vmlinux 0x00000000 sk_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x00000000 sk_free +EXPORT_SYMBOL vmlinux 0x00000000 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x00000000 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x00000000 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x00000000 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x00000000 sk_run_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x00000000 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_error +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x00000000 sk_wait_data +EXPORT_SYMBOL vmlinux 0x00000000 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x00000000 skb_append +EXPORT_SYMBOL vmlinux 0x00000000 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x00000000 skb_checksum +EXPORT_SYMBOL vmlinux 0x00000000 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x00000000 skb_clone +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x00000000 skb_dequeue +EXPORT_SYMBOL vmlinux 0x00000000 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x00000000 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x00000000 skb_find_text +EXPORT_SYMBOL vmlinux 0x00000000 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x00000000 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x00000000 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x00000000 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x00000000 skb_insert +EXPORT_SYMBOL vmlinux 0x00000000 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_make_writable +EXPORT_SYMBOL vmlinux 0x00000000 skb_pad +EXPORT_SYMBOL vmlinux 0x00000000 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_pull +EXPORT_SYMBOL vmlinux 0x00000000 skb_push +EXPORT_SYMBOL vmlinux 0x00000000 skb_put +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_head +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x00000000 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x00000000 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_split +EXPORT_SYMBOL vmlinux 0x00000000 skb_store_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_trim +EXPORT_SYMBOL vmlinux 0x00000000 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x00000000 skb_unlink +EXPORT_SYMBOL vmlinux 0x00000000 skip_spaces +EXPORT_SYMBOL vmlinux 0x00000000 sleep_on +EXPORT_SYMBOL vmlinux 0x00000000 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x00000000 slhc_compress +EXPORT_SYMBOL vmlinux 0x00000000 slhc_free +EXPORT_SYMBOL vmlinux 0x00000000 slhc_init +EXPORT_SYMBOL vmlinux 0x00000000 slhc_remember +EXPORT_SYMBOL vmlinux 0x00000000 slhc_toss +EXPORT_SYMBOL vmlinux 0x00000000 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function_single +EXPORT_SYMBOL vmlinux 0x00000000 snprintf +EXPORT_SYMBOL vmlinux 0x00000000 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x00000000 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_create +EXPORT_SYMBOL vmlinux 0x00000000 sock_create_kern +EXPORT_SYMBOL vmlinux 0x00000000 sock_create_lite +EXPORT_SYMBOL vmlinux 0x00000000 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x00000000 sock_i_ino +EXPORT_SYMBOL vmlinux 0x00000000 sock_i_uid +EXPORT_SYMBOL vmlinux 0x00000000 sock_init_data +EXPORT_SYMBOL vmlinux 0x00000000 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x00000000 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 sock_map_fd +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_accept +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_bind +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_connect +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_getname +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_listen +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_poll +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x00000000 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sock_release +EXPORT_SYMBOL vmlinux 0x00000000 sock_rfree +EXPORT_SYMBOL vmlinux 0x00000000 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 sock_unregister +EXPORT_SYMBOL vmlinux 0x00000000 sock_update_classid +EXPORT_SYMBOL vmlinux 0x00000000 sock_wake_async +EXPORT_SYMBOL vmlinux 0x00000000 sock_wfree +EXPORT_SYMBOL vmlinux 0x00000000 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x00000000 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x00000000 soft_cursor +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00000000 softnet_data +EXPORT_SYMBOL vmlinux 0x00000000 sort +EXPORT_SYMBOL vmlinux 0x00000000 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x00000000 sprintf +EXPORT_SYMBOL vmlinux 0x00000000 srandom32 +EXPORT_SYMBOL vmlinux 0x00000000 sscanf +EXPORT_SYMBOL vmlinux 0x00000000 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x00000000 start_tty +EXPORT_SYMBOL vmlinux 0x00000000 stop_tty +EXPORT_SYMBOL vmlinux 0x00000000 strcasecmp +EXPORT_SYMBOL vmlinux 0x00000000 strcat +EXPORT_SYMBOL vmlinux 0x00000000 strchr +EXPORT_SYMBOL vmlinux 0x00000000 strcmp +EXPORT_SYMBOL vmlinux 0x00000000 strcpy +EXPORT_SYMBOL vmlinux 0x00000000 strcspn +EXPORT_SYMBOL vmlinux 0x00000000 strim +EXPORT_SYMBOL vmlinux 0x00000000 string_get_size +EXPORT_SYMBOL vmlinux 0x00000000 strlcat +EXPORT_SYMBOL vmlinux 0x00000000 strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 strlen +EXPORT_SYMBOL vmlinux 0x00000000 strncasecmp +EXPORT_SYMBOL vmlinux 0x00000000 strncat +EXPORT_SYMBOL vmlinux 0x00000000 strnchr +EXPORT_SYMBOL vmlinux 0x00000000 strncmp +EXPORT_SYMBOL vmlinux 0x00000000 strncpy +EXPORT_SYMBOL vmlinux 0x00000000 strndup_user +EXPORT_SYMBOL vmlinux 0x00000000 strnicmp +EXPORT_SYMBOL vmlinux 0x00000000 strnlen +EXPORT_SYMBOL vmlinux 0x00000000 strnstr +EXPORT_SYMBOL vmlinux 0x00000000 strpbrk +EXPORT_SYMBOL vmlinux 0x00000000 strrchr +EXPORT_SYMBOL vmlinux 0x00000000 strsep +EXPORT_SYMBOL vmlinux 0x00000000 strspn +EXPORT_SYMBOL vmlinux 0x00000000 strstr +EXPORT_SYMBOL vmlinux 0x00000000 strtobool +EXPORT_SYMBOL vmlinux 0x00000000 submit_bh +EXPORT_SYMBOL vmlinux 0x00000000 submit_bio +EXPORT_SYMBOL vmlinux 0x00000000 sync_blockdev +EXPORT_SYMBOL vmlinux 0x00000000 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sync_inode +EXPORT_SYMBOL vmlinux 0x00000000 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x00000000 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x00000000 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x00000000 synchronize_irq +EXPORT_SYMBOL vmlinux 0x00000000 synchronize_net +EXPORT_SYMBOL vmlinux 0x00000000 syncookie_secret +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 sys_tz +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x00000000 sysfs_streq +EXPORT_SYMBOL vmlinux 0x00000000 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x00000000 system_rev +EXPORT_SYMBOL vmlinux 0x00000000 system_serial_high +EXPORT_SYMBOL vmlinux 0x00000000 system_serial_low +EXPORT_SYMBOL vmlinux 0x00000000 system_state +EXPORT_SYMBOL vmlinux 0x00000000 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x00000000 take_over_console +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x00000000 tasklet_init +EXPORT_SYMBOL vmlinux 0x00000000 tasklet_kill +EXPORT_SYMBOL vmlinux 0x00000000 tc_classify +EXPORT_SYMBOL vmlinux 0x00000000 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x00000000 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x00000000 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x00000000 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_register +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x00000000 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x00000000 tcf_register_action +EXPORT_SYMBOL vmlinux 0x00000000 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x00000000 tcp_check_req +EXPORT_SYMBOL vmlinux 0x00000000 tcp_child_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_close +EXPORT_SYMBOL vmlinux 0x00000000 tcp_connect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0x00000000 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x00000000 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x00000000 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x00000000 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x00000000 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x00000000 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x00000000 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x00000000 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x00000000 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x00000000 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x00000000 tcp_poll +EXPORT_SYMBOL vmlinux 0x00000000 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x00000000 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x00000000 tcp_prot +EXPORT_SYMBOL vmlinux 0x00000000 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x00000000 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x00000000 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x00000000 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x00000000 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x00000000 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x00000000 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x00000000 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 test_taint +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_register +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thaw_bdev +EXPORT_SYMBOL vmlinux 0x00000000 thaw_super +EXPORT_SYMBOL vmlinux 0x00000000 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x00000000 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x00000000 time_to_tm +EXPORT_SYMBOL vmlinux 0x00000000 timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0x00000000 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 timespec_trunc +EXPORT_SYMBOL vmlinux 0x00000000 timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 totalhigh_pages +EXPORT_SYMBOL vmlinux 0x00000000 totalram_pages +EXPORT_SYMBOL vmlinux 0x00000000 touch_atime +EXPORT_SYMBOL vmlinux 0x00000000 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x00000000 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x00000000 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x00000000 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x00000000 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x00000000 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x00000000 truncate_setsize +EXPORT_SYMBOL vmlinux 0x00000000 try_module_get +EXPORT_SYMBOL vmlinux 0x00000000 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x00000000 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 try_to_release_page +EXPORT_SYMBOL vmlinux 0x00000000 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x00000000 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x00000000 tty_check_change +EXPORT_SYMBOL vmlinux 0x00000000 tty_devnum +EXPORT_SYMBOL vmlinux 0x00000000 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x00000000 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x00000000 tty_free_termios +EXPORT_SYMBOL vmlinux 0x00000000 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_hangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x00000000 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x00000000 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x00000000 tty_kref_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_lock +EXPORT_SYMBOL vmlinux 0x00000000 tty_mutex +EXPORT_SYMBOL vmlinux 0x00000000 tty_name +EXPORT_SYMBOL vmlinux 0x00000000 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x00000000 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_init +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_open +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_device +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x00000000 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x00000000 tty_set_operations +EXPORT_SYMBOL vmlinux 0x00000000 tty_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 tty_std_termios +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_throttle +EXPORT_SYMBOL vmlinux 0x00000000 tty_unlock +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0x00000000 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x00000000 tty_vhangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x00000000 tty_write_room +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_read +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_write +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x00000000 twl_rev +EXPORT_SYMBOL vmlinux 0x00000000 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x00000000 uart_match_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_resume_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x00000000 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x00000000 udp_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x00000000 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x00000000 udp_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x00000000 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x00000000 udp_poll +EXPORT_SYMBOL vmlinux 0x00000000 udp_proc_register +EXPORT_SYMBOL vmlinux 0x00000000 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x00000000 udp_prot +EXPORT_SYMBOL vmlinux 0x00000000 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 udp_seq_open +EXPORT_SYMBOL vmlinux 0x00000000 udp_table +EXPORT_SYMBOL vmlinux 0x00000000 udplite_prot +EXPORT_SYMBOL vmlinux 0x00000000 udplite_table +EXPORT_SYMBOL vmlinux 0x00000000 udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x00000000 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x00000000 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 unload_nls +EXPORT_SYMBOL vmlinux 0x00000000 unlock_buffer +EXPORT_SYMBOL vmlinux 0x00000000 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x00000000 unlock_page +EXPORT_SYMBOL vmlinux 0x00000000 unlock_rename +EXPORT_SYMBOL vmlinux 0x00000000 unlock_super +EXPORT_SYMBOL vmlinux 0x00000000 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x00000000 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x00000000 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 unregister_blkdev +EXPORT_SYMBOL vmlinux 0x00000000 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x00000000 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 unregister_con_driver +EXPORT_SYMBOL vmlinux 0x00000000 unregister_console +EXPORT_SYMBOL vmlinux 0x00000000 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x00000000 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_key_type +EXPORT_SYMBOL vmlinux 0x00000000 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x00000000 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdev +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x00000000 unregister_nls +EXPORT_SYMBOL vmlinux 0x00000000 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x00000000 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00000000 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x00000000 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x00000000 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x00000000 up +EXPORT_SYMBOL vmlinux 0x00000000 up_read +EXPORT_SYMBOL vmlinux 0x00000000 up_write +EXPORT_SYMBOL vmlinux 0x00000000 update_region +EXPORT_SYMBOL vmlinux 0x00000000 update_time +EXPORT_SYMBOL vmlinux 0x00000000 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usb_nop_xceiv_register +EXPORT_SYMBOL vmlinux 0x00000000 usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0x00000000 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 user_path_at +EXPORT_SYMBOL vmlinux 0x00000000 user_path_create +EXPORT_SYMBOL vmlinux 0x00000000 user_revoke +EXPORT_SYMBOL vmlinux 0x00000000 usleep_range +EXPORT_SYMBOL vmlinux 0x00000000 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x00000000 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x00000000 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x00000000 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x00000000 vc_cons +EXPORT_SYMBOL vmlinux 0x00000000 vc_resize +EXPORT_SYMBOL vmlinux 0x00000000 verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x00000000 vesa_modes +EXPORT_SYMBOL vmlinux 0x00000000 vfree +EXPORT_SYMBOL vmlinux 0x00000000 vfs_create +EXPORT_SYMBOL vmlinux 0x00000000 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fstat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vfs_getattr +EXPORT_SYMBOL vmlinux 0x00000000 vfs_link +EXPORT_SYMBOL vmlinux 0x00000000 vfs_llseek +EXPORT_SYMBOL vmlinux 0x00000000 vfs_lstat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_mknod +EXPORT_SYMBOL vmlinux 0x00000000 vfs_open +EXPORT_SYMBOL vmlinux 0x00000000 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x00000000 vfs_read +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readv +EXPORT_SYMBOL vmlinux 0x00000000 vfs_rename +EXPORT_SYMBOL vmlinux 0x00000000 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_stat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_statfs +EXPORT_SYMBOL vmlinux 0x00000000 vfs_symlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_unlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_write +EXPORT_SYMBOL vmlinux 0x00000000 vfs_writev +EXPORT_SYMBOL vmlinux 0x00000000 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x00000000 vga_base +EXPORT_SYMBOL vmlinux 0x00000000 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x00000000 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x00000000 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00000000 vm_event_states +EXPORT_SYMBOL vmlinux 0x00000000 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_page +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x00000000 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x00000000 vm_map_ram +EXPORT_SYMBOL vmlinux 0x00000000 vm_mmap +EXPORT_SYMBOL vmlinux 0x00000000 vm_munmap +EXPORT_SYMBOL vmlinux 0x00000000 vm_stat +EXPORT_SYMBOL vmlinux 0x00000000 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_32 +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_user +EXPORT_SYMBOL vmlinux 0x00000000 vmap +EXPORT_SYMBOL vmlinux 0x00000000 vmtruncate +EXPORT_SYMBOL vmlinux 0x00000000 vprintk +EXPORT_SYMBOL vmlinux 0x00000000 vprintk_emit +EXPORT_SYMBOL vmlinux 0x00000000 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x00000000 vscnprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsnprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsscanf +EXPORT_SYMBOL vmlinux 0x00000000 vunmap +EXPORT_SYMBOL vmlinux 0x00000000 vzalloc +EXPORT_SYMBOL vmlinux 0x00000000 vzalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x00000000 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x00000000 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x00000000 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x00000000 wake_bit_function +EXPORT_SYMBOL vmlinux 0x00000000 wake_up_bit +EXPORT_SYMBOL vmlinux 0x00000000 wake_up_process +EXPORT_SYMBOL vmlinux 0x00000000 walk_stackframe +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x00000000 wireless_send_event +EXPORT_SYMBOL vmlinux 0x00000000 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x00000000 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0x00000000 would_dump +EXPORT_SYMBOL vmlinux 0x00000000 write_cache_pages +EXPORT_SYMBOL vmlinux 0x00000000 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 write_inode_now +EXPORT_SYMBOL vmlinux 0x00000000 write_one_page +EXPORT_SYMBOL vmlinux 0x00000000 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_input +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_end +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_init +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_reset +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_run +EXPORT_SYMBOL vmlinux 0x00000000 yield +EXPORT_SYMBOL vmlinux 0x00000000 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate_workspacesize +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x00000000 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x00000000 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x00000000 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x00000000 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x00000000 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x00000000 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x00000000 async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x00000000 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0x00000000 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x00000000 __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x00000000 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x00000000 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x00000000 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x00000000 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_update_state +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x00000000 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x00000000 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x00000000 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x00000000 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00000000 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00000000 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x00000000 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x00000000 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x00000000 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x00000000 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x00000000 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x00000000 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_update_demux +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x00000000 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00000000 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00000000 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x00000000 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x00000000 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x00000000 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x00000000 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x00000000 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x00000000 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x00000000 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x00000000 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x00000000 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x00000000 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x00000000 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x00000000 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x00000000 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x00000000 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x00000000 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x00000000 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0x00000000 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x00000000 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x00000000 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x00000000 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x00000000 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x00000000 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x00000000 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x00000000 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x00000000 st_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x00000000 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x00000000 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x00000000 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x00000000 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x00000000 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00000000 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00000000 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x00000000 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x00000000 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x00000000 mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x00000000 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x00000000 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x00000000 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x00000000 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x00000000 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x00000000 n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_tx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_suspend +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x00000000 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x00000000 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x00000000 dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x00000000 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x00000000 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x00000000 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x00000000 fb_sys_write +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x00000000 fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 put_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x00000000 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x00000000 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL lib/bch 0x00000000 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 free_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 init_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 init_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 init_rs_non_canonical +EXPORT_SYMBOL_GPL net/802/stp 0x00000000 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x00000000 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x00000000 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x00000000 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x00000000 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0x00000000 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x00000000 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x00000000 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x00000000 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00000000 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00000000 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x00000000 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x00000000 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x00000000 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x00000000 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x00000000 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x00000000 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x00000000 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x00000000 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x00000000 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x00000000 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x00000000 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x00000000 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x00000000 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x00000000 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x00000000 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00000000 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00000000 xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_wq +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x00000000 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x00000000 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_write_space +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x00000000 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x00000000 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x00000000 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x00000000 l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x00000000 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x00000000 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x00000000 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x00000000 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x00000000 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x00000000 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x00000000 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x00000000 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x00000000 arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x00000000 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debug_locks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_move +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_handle_ce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_handle_ue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_add_mc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 event_storage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x00000000 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x00000000 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x00000000 getboottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_clear_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_disable_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_isr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_xfer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_class +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lcm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_run +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmput +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x00000000 monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x00000000 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x00000000 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x00000000 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x00000000 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 return_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x00000000 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x00000000 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x00000000 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_match +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x00000000 zap_vma_ptes --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/omap +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/omap @@ -0,0 +1,10357 @@ +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x13e5ff7c omap_mbox_msg_send +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x16eee29b omap_mbox_register +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x849d64bb omap_mbox_get +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xc3453d67 omap_mbox_put +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xdbc75fe3 omap_mbox_unregister +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0xa0439f1c bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x714ea5c9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb92b9cd5 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc5c83467 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2cdf707 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0235af6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2e74f758 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x68dd020b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8bf3275d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0xaa3c3cf8 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb72c38c5 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xc3d0c9a2 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/pl330 0xbdd17dd1 pl330_filter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0060546c drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006c1ef8 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0285e5a8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a77f75 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02fc4823 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x047db860 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a3af60 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8306d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0587de38 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x075386e7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e15c30 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd0e418 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d3cdf26 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8dc681 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b09bfa drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11073671 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1128ae3e drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1225741b drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1387c10c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a3b414 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187e37dc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ec22bf drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af2ef85 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c73af75 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d696b88 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b76f2e drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x211eab87 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2143f155 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cc953e drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24795a66 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b59a9a drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d6581e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cad8c36 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cfce9de drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d807df8 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0a366f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31389d0a drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c32fcb drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x331b069f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3345496d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37cd8b5a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38954afd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3901fdec drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393c6934 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c8ec8d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a6f9c71 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aac3130 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b69d5ed drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3be296ff drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cec9166 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423dcca1 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4323a70a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434a6b41 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48eb5969 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49158f33 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x491d291f drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4945a3ca drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497b8956 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab691c3 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aeef5a3 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4afa0c15 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4badb0a5 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f5de301 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5165455b drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e2b0ac drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566d5865 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58da9909 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a641110 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c126ce6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dbdc659 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e702501 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eb7510b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dce832 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d5ffca drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65dc65b3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680fa42c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c5d096 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x695562ba drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6978511a drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7fb5e3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e0771 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75ddd02d drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768fa481 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x771b5fe9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7832825c drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79de4b45 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4797cc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b650615 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ae84ef drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8215a1a5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840ffb0d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x851c1ded drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8579febd drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87530f3d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x878072a5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e9fe78 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89500a1a drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89586ed8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89b54102 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a35be05 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6a5ff5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6b6b6d drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc89459 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e28a15f drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908d6be2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92689148 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95232db1 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96b15f09 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0b35d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c09b7ff drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9fd0b2 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f70233a drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4edb20a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa506bb1e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa562ecf0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a09d50 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d88b40 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa604b764 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7179c31 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa914f465 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaacde6c5 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaacf194d drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc68ace drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacbe2969 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xada8db41 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4b77dc drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb024bcb2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb110a287 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24d01f5 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51d4aac drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89ebf9c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd2dad35 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd6f1fd5 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf696f2f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfbebd3e drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd36329 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1064c6f drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33a4be0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e4cb99 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4259c55 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc44030f6 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc463da93 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc732ad3c drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8231556 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91a1d16 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaeea29d drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb88fff2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbda0d67 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1ef400 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfce3985 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd106ef19 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2721d6d drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5233a6b drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88db039 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a61608 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc63c32b drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdf36bb drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde64898a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfeb1409 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0406bd4 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe181f7ab drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4d8d4ac drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe532ac34 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe626479a drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8298af8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e66240 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94bf7f2 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec2c6818 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee566ce4 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee8a71c4 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c803c3 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1d59f36 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b6c638 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4babc53 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf83d269b drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9166a4c drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe77711 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc7f9aee drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7ec5ef drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffccb806 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x083d750c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b4fad96 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13f43665 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e33be4 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17dd8d26 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ab47e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cf76339 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a7ef66a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41e0a579 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47d04aec drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x489a33b7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48d58304 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x492544f1 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63c19003 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b420d49 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b9aa65e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e87ecbd drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8441eee0 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8447f2d1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8505d905 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8594ecae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9123181f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ed1ebda drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac68c885 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfd1e4ac drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc44008b4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc747498a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6e6feb5 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4e25f6 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37e153f drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf527670e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb66ef17 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x3d41d164 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7c59dec6 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x97235d18 drm_get_usb_dev +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x1262ebcd sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x01fb8bce i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x5301cc63 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe49cbcbb i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3436c5ee i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa3078692 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x177e9981 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2caf16a4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3d9cf42f iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x46ab79b7 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4cc75a5e iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5cf690f5 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x5fe927e2 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x6a08a14c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x6b069003 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6b0729dc iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x75b533e4 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x82bca169 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8871b32e iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x90ea0377 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x91bc0a3b iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa57ab762 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6bf5879 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xaf0a8f8b iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb74b6aba iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbbab385b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xc7fa0bdc iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xebcbafdf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xf4491e2a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf4e947ee iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa3d6266c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf31bfc97 iio_kfifo_allocate +EXPORT_SYMBOL drivers/input/gameport/gameport 0x02347604 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x43265263 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5602be9b gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x62fcf043 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x978266e8 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9907d492 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed8baf43 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf28928aa gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf9c43465 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0cb6caf5 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2309b44e input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb7e1a448 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd4ffa98a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc4df77ab matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x17c7c2b9 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7866d5f4 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7ee705c2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef7a5879 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd5c9b50d cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x13867411 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7cc3fddb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8802123a sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa8620f71 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb3b619c3 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbf0df5e8 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x6c0207e8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x923eb0ba ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x02174795 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0bfd3b11 capi_ctr_resume_output +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 0x38ac7fbe capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3f9da627 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a15f6d2 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4e6e8fd5 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x695d7d55 attach_capi_ctr +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 0x878c267c capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x89a1162d capi_ctr_down +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 0xd3f7ef77 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/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 0x86d7736f hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x13922f99 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x75f54868 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa7577704 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 0x00314207 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0a57753a queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0cfc1b02 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e0688cf recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17bb1d4e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30656fdc recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32f0cee5 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x38143b11 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45860d5a dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ebf67e4 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4f5d05aa mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x57785b2c bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x67b07d5a get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7414ad46 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x925da97b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa26c21c9 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa463898a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf8e365d mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb3894869 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce06a7d2 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda385ed3 mISDN_freedchannel +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 0xe9b87dae mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd6a9abc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x393f59af dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7efcc2ee dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc6a5be42 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xfa42a911 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x22cdbfba dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2490901e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e87c42b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6624ffbc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x67e2b910 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc3a3d512 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x13319403 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x33bc4fae fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa0f304ba max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xdcbfa503 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x79291b35 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x98c7c064 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x2e9a5910 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x6462e5e4 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x6848fd7e tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x6923136e tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x6f563389 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x60d54087 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8c9887fd xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2307a301 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x18520a77 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3b30f02e flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6cbcb394 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x88bca278 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9fe592fa flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xab39f37a flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xae80e5a5 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbef3058f flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd0fea646 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd850e399 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe23ef6d4 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe5e5fb09 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe7739be4 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c98f0ae dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1f363415 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x258aaf68 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f2786d0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x335fa807 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x35c754a3 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f0c426f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x518c4119 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x542877ea dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6131d762 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6225816a dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x66e6d383 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x687066ad dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6c7577a0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x746b02ad dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7a854509 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x83a2ef94 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x883c17c6 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x90b3c91f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x961239a7 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9ae3f6da dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa6a6cf89 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xae55024a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3297434 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xba616e61 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbfe37d06 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc94067e8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe2580c5c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9164bec dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xec9a09d4 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xed9e5ee7 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf487376d dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf5f9b07a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfb25f454 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfd1885bd dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x12d0e537 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x606ddfbf dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8393aeb4 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8fe43b31 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x98b1e696 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xeec875af dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xf07d8192 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xea2d92bc af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x102d2583 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x10a83aae dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1727c601 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1d9ce9db dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1fe3f158 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x2db34552 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x39048287 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x65d8e0b6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb7c5bb55 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xce6bdec0 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd07d2110 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0xe19de7c7 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf6f61250 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x43d2e5f0 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xccbcf856 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x11b0711f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x29711556 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x2a247cdd au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x59fed5a0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x8b7fe401 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xae3935fc au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xaf2dcbbf au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf858bf3e au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x45849b05 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6e7a42dc bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x34c4a817 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x8fa2912d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x7b6bc589 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x72f1e393 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xd984475c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x36eb9209 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x4eb17599 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x69c16635 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xf1b6d7e8 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39732d0b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x859b9d66 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8ce58e6c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9543d443 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe181d0ed dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x21add01c dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2513bde1 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x30c01d60 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4cc5ff49 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x54bc864a dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7798ae01 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7e4ecfee dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9ed95484 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafb6a46d dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbbc5ece1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc07eb9de dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcc82be17 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd2491654 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xea31e655 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xf9331e85 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xaa6ec7ff dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x268a8973 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x543f4b82 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x5a30af99 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9e6066f7 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xb27f19fd dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xba33af2d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x449aa6eb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x920f2531 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x93fc9b7a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xbeefa300 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x02aa8e95 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x084e4453 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37f8056b dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x40753891 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5274bb05 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x56cc0972 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cbd6a5e dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x62c876d7 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8aed8938 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9fa5c44f dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc09c4a86 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6b65100 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd9c4dcfd dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe6ed6840 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfbc4b404 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1bd13fcc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x21945e37 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x25f397d8 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c814b88 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3f951716 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x477d97e9 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e557ece dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x581f00da dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa16f3ca9 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa1b46b05 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae15401b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb79d60e5 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbcabd0ea dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbd8a3498 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcd0e32c0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd82974d9 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdc815e57 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe6b6bdd1 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe91fff18 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x378ca184 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x37e88b87 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x3eef19f3 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x4b8f6169 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x53c06d19 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x54779f9e dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x590a5884 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x637e0d61 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x6492fb4f dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa109ed1e dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa663e763 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xc87ce035 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xd6f9b54a dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xfedaa2e0 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1d487f7f dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x253d3307 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5ec442a5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x9717ce4f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xb9b7f1c8 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x6daee061 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xe4e0984b drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0xf11a32f6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x636905ba ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x86a9d32e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x4c3b91d0 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x396418f9 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb361220f isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x45dc56cd isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x5d94e2f5 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xb2875c0e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe9ff3f21 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x27778208 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xf0bb9071 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x0f46457e lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x6c127e65 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x8686fdcb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x141e3b0b lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x9ce94bde lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x15a351cb lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xdc50a1f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe0748db4 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x7006484e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x12e74b84 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x7b121383 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf621f83f mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xb31c2b72 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x64cef4da nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x7bffbc1d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xf889714f or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x0ee05508 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x32b13dac rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xcf994fda rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6f717925 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x8e7a842c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9e384e08 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xfe01aad2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x1cb2eafd s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x68599ecd s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xad579095 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x3a993e92 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x9d399727 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x20afca7e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xae5c1dbc stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xd26b5e18 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0xcda4a363 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x783555a0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xa3efcc0a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x09aead6c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x93643543 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x548df548 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xd88b5451 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xecd7255c stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xe88b348e stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x88528572 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x221a2a72 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xc17ab9b5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x8ed3a496 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x9259eeaa tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xf260a725 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x67369410 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xa34a4fbd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x41a3e8bc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xbb3c1553 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xd5f987e7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x35c7bbf2 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe6900c79 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xedf90595 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xee189c4c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x4db9c612 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfa0e89c1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0317ead0 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xe28e8ad2 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x06533d19 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ab8aea4 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x30bffc04 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6fed1805 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x92d4ce0c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb39dacb0 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8c5ce77 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf00f4027 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x33f11c3c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaf95f719 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x4c4c7ada cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xe17a6ebb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4e676f6a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7586b17a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd187dfb1 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd8a3779a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0x58c8cd06 vpfe_register_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0xc983fcd8 vpfe_unregister_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x088ccec9 vpss_select_ccdc_source +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x319709a6 vpss_clear_wbl_overflow +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x54146824 dm365_vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x6e5b5413 vpss_enable_clock +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x749bf2c9 dm365_vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x09d9afc1 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x2e6850c9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x14d6cceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e35c5af gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x49485ded gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5f9a575f gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x65cfbddf gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84c0b639 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x90207409 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x9400bba2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3d49d0e4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x423da71f soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x59c21783 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x66cbd6d2 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9667c6d2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa11000f4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x6196852c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x91e3a248 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xa7eccb7e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x475a8d7c tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0x8713fbb1 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x8deca363 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xad781961 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x3f72b910 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x6919be09 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xccecb1c7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x1e102f04 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39364062 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x41354716 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x57fae47f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6b87d289 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x82e8269f videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xce7e45f8 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0d99a55b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x13355c3d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x16310292 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x1e335a16 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x24fa8064 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x28e32207 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x2def4f2f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x33cd0d02 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x358bfe3a video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4904e326 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4af15a06 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x55213c57 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5b835d3a v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x641c4671 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x64ce2bc0 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x65f0f5e2 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x6875771c video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x6f5aa18f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x7155f80c v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x77637058 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x7771ebfb v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x835b6025 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x85b37974 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x91a9ad54 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x96c3a076 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xa2342123 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb85f8e3b v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xb99a3054 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc321d7bf v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce04ea62 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xd353b2b0 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xd6eaab33 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xd785a33c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xdd0462e6 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe0e4d2c7 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe1155fda v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe2f064aa v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe61dedb1 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe72ab1af v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xe7ec83b8 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xec4bc368 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf1e00e94 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf321cc5e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb959f0c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/memstick/core/memstick 0x05b9d4ca memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0cf90081 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2090096d memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x22476e5e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51f6b925 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x63873823 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x656cd812 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x779faba5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9658abed memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5a65469 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xddfa39c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf844510d memstick_resume_host +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8bfd1dae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc46a54bc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c89d32a mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x13862de2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cffda0e mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x41c27171 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f7d36c8 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7cae2548 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ac37a25 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xafac418e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4b2e23a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0e41389 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe2795a05 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe36e72c4 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfab5deef mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1d247422 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb0770a5e tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc4dbd370 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x441bbefa ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa9970e3b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x1007174f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0b2a070 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x17dae94e dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x534b807f dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x8fe02703 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xde39e2a9 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x2e110b06 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7fcd79b5 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8155e046 tmio_mmc_host_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa8172124 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbb0a6e4c tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdc583b00 tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x38608e3f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x528db246 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd794b137 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x7e3a7ed9 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x06e7bd27 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8d282c57 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe5e3dcab flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfb96e658 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfc6236e6 onenand_addr +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4eb6e761 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5afa9298 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6e28d30a hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb18fda82 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdd37de79 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0529ba38 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x05861cea sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x18a421dd sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x18f470d1 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3af33830 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x498cae01 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5dc8b8af sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8f03c52c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbc670881 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc3b417c7 sirdev_put_instance +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x38f56877 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb05e41d2 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x112dcc78 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3af2651e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x91820f4c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wan/hdlc 0x06710861 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x31159680 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3b031b01 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3fb292fa hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x552a4516 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7c6df19a hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7cd4097a alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f5a86c7 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x85e4bf02 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8f0883bc unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x91ae1aa6 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x21a225ff ath_hw_setbssidmask +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 0x5460872d ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5dbd2385 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6c323518 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7e5f34ac ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x97566863 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9a3ce536 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb2840682 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe8cbd1c5 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe93e1f7b ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x403027bc ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x45829f90 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x46b584e6 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4cd0930f ath6kl_core_tx_complete +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 0xa5e2b972 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb39c782f ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9f2e352 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbb30f1fb ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcab3acff ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xed08fd01 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f8722dc ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2e48afa8 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57a2a1ac ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb334d329 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0157daeb ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04f492d8 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05bcf330 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x073e1c6c ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a14cd43 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bb2de0e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d561007 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e3b292f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ecf175a ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f0419e1 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11b29220 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1473a119 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a72aa45 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d1bbb50 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e20ff74 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2311d8ef ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24d51238 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a7ab6d2 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a8423d6 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c8cfb1f ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cac1c58 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ce314a0 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e9f3b5c ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ee38248 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31e3673d ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x328c22f3 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36e01768 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40373a6a ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44b968d7 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44eaaf32 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x472d3a09 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47f84fe2 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b15b53f ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51056750 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57bd064a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x588495b4 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e41e292 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f6dee37 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62e18667 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66589869 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66874d0d ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6bf04ca8 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72716305 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72725ba2 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x727cdb0f ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7323d1fd ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73c2fd4c ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x763a33ec ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e9c289 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x784326ee ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8000b850 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x810fc069 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82286470 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85a6f7da ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c1fe503 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c4f0ac9 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9fac1367 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0e8937d ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4e31371 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5e5cf62 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7646828 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa90ff53c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab052c96 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadb4f381 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb22ad201 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3a818ca ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5a1e0bd ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8ded861 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8f3b337 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba02be2d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb004b5e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdad240f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe501427 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc03e8e2c ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1026ff9 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc13ee805 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4a5191b ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc60676e2 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb388fed ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbc7183f ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfcccdc5 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd325c9ac ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdec781e6 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe294980d ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe928f71d ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea505872 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea683469 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2e90f49 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf707cfa0 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7638905 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc494151 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd458edc ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xb5255e19 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xe02d696a brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x23175b53 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4152e660 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4c363a3f brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x573bedf2 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6ad56f3b brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6bc0779c brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6e398b68 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x74f49e74 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7e030344 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7fe387c9 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99e6e534 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xab069a5a brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x169aa37b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28942040 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30a1050f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x403c5312 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x483a3606 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x49ac3810 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x500127e4 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x615fa4a0 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7a01b944 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9150c749 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91851e04 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa23a25ed hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaf07a6fb hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0049024 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb01f49d1 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3da4188 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb81aa339 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xba0d257b hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5fa4e6c hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc9ce1913 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd21cab5d hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6685b1d hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd72d0b00 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe24c3126 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe2dca222 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03643192 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x196071db rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2181560a rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22e41933 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x328b6410 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b0c21d1 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3f10225f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4322f361 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4a180af4 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bb5636c rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4e629e3b rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50000ed9 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x588701a3 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a3ee852 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5dfe35b6 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a723583 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6d136e4b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x74772035 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7faf4332 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x808e82c9 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8100ad7a rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x823f05ff rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89df3ac4 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f7000a4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a1f5405 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b6156c0 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae0e7418 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb36eeac0 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb3a1bfd rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc38a5cf0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd9e4ba7 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5436eae _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5e6f94d rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda497e66 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdeae1dbf rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe377b89d rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe3cdcb05 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe861daf4 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefa1c50e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf2baedff _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf56f15b8 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa5c0b56 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ba6580c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x222a2988 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x23908c14 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x25cc474b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3eddc1b5 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x44192770 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e918b45 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5f6b54bc rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60641073 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a690e3c rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a8e7e50 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7fc96715 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8994a28a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8a33773a rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x91127701 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x96636ef2 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e81e0eb rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd927b847 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf3e1094a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfe0843d0 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2a5e43cf wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf7db65f8 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x07025813 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x196a9d55 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2222aeeb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x27941c97 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3c586e06 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x47fd01b6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4cda7720 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6103e005 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6201f390 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x66fe4867 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x68566f0c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7796a171 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x7efc06d7 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x83e749c1 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x8d5122b9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x8fa9d741 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9825b188 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9f54266b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa3ebc751 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xa45527cb parport_release +EXPORT_SYMBOL drivers/parport/parport 0xaf7c2264 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3dede9a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb832abe9 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xc83093cd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc84b1df3 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xd890b52d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xeb261256 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xf030e747 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xf2c83d97 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfbf102f3 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pps/pps_core 0x19727db5 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2c74c673 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x610b0a1f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb67659e5 pps_register_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0ff31040 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41a5abf2 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4470f5ce fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x49a35b1e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x760ce2c1 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8259a3cc fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x84ed8434 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8e278b3c fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x98d0307f fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb57e7f0e fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe633d5df fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x037a9e5b fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c0a7a08 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1174e7a0 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148994fe fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1644bc38 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e616360 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2dbc801a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fd0f0f1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x312a70f9 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x344f569a fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d6427ad fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x475c9936 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f37b9ac fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x528df876 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x580d8096 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5b5eadc7 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fc885a fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6990983c fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d74be91 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71706d1e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d90005 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x746257d3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x791a20ff fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eddf5bf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83365583 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x865af3c5 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87d4617c fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8aca745d fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dfd811f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aa87554 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ee755b1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa52ddaf2 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa60ab071 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6bff20c fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa86badaf fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac071a3a fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae744deb fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0aafb37 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb20c2d74 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba674f93 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc487d5b0 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc81407ae fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9ef4ee8 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcae25f84 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd464e772 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6ff9002 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe20d9580 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf167c86f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6b6b340 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfda5d2a3 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x04c30cc2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3b3e439e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xed222aad raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x06c7c950 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20a0af44 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2123eeb7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31d706eb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ba20b6c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99eb5817 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a983ade fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0e18ff7 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbbebf927 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd195b5f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xddd2b14e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe37a250b fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4d0319c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09b0b079 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11687b0f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118d274c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x14903952 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x168870c6 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2284443b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27012824 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4390f019 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8e7e5f sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6016cf9a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65d67ef8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70a24585 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86615c59 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x870a8e56 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f03c761 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cb57746 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa210e9b0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa2c86117 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaab3b39d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab91abfc scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0de1f6a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc29021df sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca23df82 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca386ae8 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb600f19 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6c6b86 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe92cc9b5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea75b4ce sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1fe83597 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2cb70380 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42001568 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7453b901 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb39e7bd3 spi_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x0409018c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x18af45c7 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2a7bdb50 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2cd84326 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x583ed935 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5e0b93fe ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5ef81631 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x72bc6f8b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8d8cc33c ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x9bced4e1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa92908f3 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xab3940a5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xae4a7a05 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf20c559 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc33eae7f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc70da9d2 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe4051e90 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe51c25de ssb_commit_settings +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x9234183f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xcab774f1 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe006ab35 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xed8a9888 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x64d71cc6 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xe8520719 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x5a79888e phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xc69b8f8f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x0068356a target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x01db3678 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02e29381 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x04ec7324 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x05594450 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x09f25d93 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ad67cf8 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b751e55 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x0bc85667 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x0dd92996 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x100d0b36 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bf66bf2 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x23490625 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2aa6e74d transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e5d413e sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x34d50234 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x3826f7c2 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a21fca7 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4276cac7 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x45bc8e6e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c4eb778 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d24c608 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x50835c41 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x51404ee0 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x545593ff transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x5afbf384 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c39b9d2 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x60cc093f transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x61ef715c target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a921bb2 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6beebdb1 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6dec04e9 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cdae21b core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e723724 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x85724a4f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86877876 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x899caad7 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ac949b9 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b308bed fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8baeb295 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8da327ee target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ecd5a75 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x920fd75d core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x92fee9e5 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x968e3861 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ab917a2 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e7d3993 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2f25633 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3e4b360 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9669f98 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6a60004 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xb85b4b83 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb91a05d5 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc51e183c core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xc807d126 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xc95d0a40 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0c1865d __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2f3e851 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xefc0c065 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf017d873 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xfce5d52f core_tmr_alloc_req +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x672b702c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xa0bf53bf sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x13ebef6c usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x27feae44 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2877ffb3 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2c433fcf usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4b98fdd2 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x591e4e5d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x759877a5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7781dcf8 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x89226b3b usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c42f63e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9a22b765 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd67c499c usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdabd6fac usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdad83d26 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfdd9a6bb usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7a799718 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8d5b91bc usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07c7dd3d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf5d673a1 lcd_device_register +EXPORT_SYMBOL drivers/video/output 0xaba46453 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xb3722d93 video_output_register +EXPORT_SYMBOL drivers/video/syscopyarea 0x7097ec1f sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xce1817f2 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xb31f1fbd sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9f38d657 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa0d41cc6 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0e66e0a w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf453b7ca w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0be3eb64 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xcfb43bea w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfc1d6660 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1342fd70 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b0c45bd w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe57b8d6 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x25547c11 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3d647a42 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe562c6b2 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe388128 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x1074bf38 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x15b33ac4 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3be87079 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x3bf16352 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x6ba63918 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7475e5f5 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8370eef1 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9d9e348f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa4fd2c3b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xab64fc36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf0d1b8c3 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xfb52e8bf config_item_get +EXPORT_SYMBOL fs/fscache/fscache 0x0663e0fc __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0cd0d4b5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x21894c41 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x30447263 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x31731797 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x33e57046 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x33f4f96d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x394c16e9 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x3ea188b8 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x508a5d08 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x63d09275 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x72ce6d40 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8f8d757d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x918ce891 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x941e6b42 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x976cdb76 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa44cf5f4 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xc0b8c9ac fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcd7e35a3 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd8d5bfa7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe3b3f03a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe8462631 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf112e607 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4191ed6 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4768489 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5d31fdc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xfb5317b2 fscache_mark_pages_cached +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1c433e1b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x744c7ac0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x802e86a0 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe1b68d98 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf78a229b qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0ea7c60a lc_del +EXPORT_SYMBOL lib/lru_cache 0x236f6654 lc_create +EXPORT_SYMBOL lib/lru_cache 0x4308237d lc_get +EXPORT_SYMBOL lib/lru_cache 0x58f461a7 lc_set +EXPORT_SYMBOL lib/lru_cache 0x604890a6 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x617b0ecd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x78e92b13 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x831045dd lc_reset +EXPORT_SYMBOL lib/lru_cache 0x9a21924a lc_put +EXPORT_SYMBOL lib/lru_cache 0xc388d3ac lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xcea4d17e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xcf5f0864 lc_find +EXPORT_SYMBOL lib/lru_cache 0xdd7a727f lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xed91c002 lc_element_by_index +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0xa6fd700c register_8022_client +EXPORT_SYMBOL net/802/p8022 0xcecb13ff unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x03a535cf destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xe19e5d85 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x0ae4343e unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x2fd2f87c register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02c04dbd p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x04f60844 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x07013c09 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x10ecceee p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x214be670 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x22b90756 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2342974e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x2a27a057 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x2a941566 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x2ec54d62 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x380e14a2 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x38f25524 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x39187e40 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3c3c4b78 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x48b84c3e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x4ec52be7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x5151fed9 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x51b09a2f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5709eb50 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5bc5c3d8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x75b49540 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x7ab52012 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x80c084f7 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8f01d92c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96ad23b6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x993fcd76 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9bc81f64 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa99eba8a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb05010a5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xbf52c7a4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc065b2c0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xc43f7b40 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc98f5e5d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc9f26a32 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd4d05d10 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd742340e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdb478d17 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xdc7240d5 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe1089681 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe1b69bac p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe38c9ce6 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeb2a10ff p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x10cb22af atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x28333857 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x6dbb5b05 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x6dd46c58 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x085c5051 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x178eedd2 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x17ada42b vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x320084bd atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x76ba3415 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9d424c1d atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa17a69bb atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xa866f776 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb089ffbc atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xb582e458 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xd8ea2767 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xdf4c15f9 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xe60b1ac7 atm_charge +EXPORT_SYMBOL net/atm/atm 0xea240863 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5eab1ab vcc_sklist_lock +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x11a70bfc ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x373592d5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x44b20da9 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4794ccb5 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x61d3fa4c ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x6e328282 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa2aae9f5 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xa3549c78 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc5c216cd ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03c1d955 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b40298a bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ca6dc00 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d795758 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f17b12f bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15086624 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e33230b hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fcc2bce hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23fb9fad hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d4b3a2a hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x397500a7 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c253b6a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x42beb2ff hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47ad6b7a hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cbd7843 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5722b377 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x59fe587d hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x670c1a61 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x71048375 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7dce4836 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x856ff39e hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x870601a3 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e8fc49d bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9f035aa1 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa957e6b6 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa896b3a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae5cf7d5 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb318d0e4 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb52a017e hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5d227cb bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc77e39c bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbee9b3de hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccde34e6 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd02c2b52 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd67e7eb0 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe311eb52 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xea6c4459 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf36170b6 bt_sock_ioctl +EXPORT_SYMBOL net/bridge/bridge 0x6aa322ce br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x091ee799 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x801d992a ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb35ae6d1 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x87105eb8 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9c5ef94f get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xdadecf9b caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xe2d0a9b1 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xe30d9db9 caif_connect_client +EXPORT_SYMBOL net/can/can 0x1a0bd841 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x31aea382 can_send +EXPORT_SYMBOL net/can/can 0x4f188ba1 can_ioctl +EXPORT_SYMBOL net/can/can 0x57fc6fe8 can_rx_register +EXPORT_SYMBOL net/can/can 0x5b96738c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x7f163a6f can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0406dafd ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x06842c3e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x13613ed4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x16ef3176 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1bcd96fe ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1c1c8698 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x1d94ecc5 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x302d9f86 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x32ac2e04 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42728f99 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53f8cf23 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58845a64 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5f5e144b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x668ee754 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6c1a4594 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x6c67f3cd ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x790605a6 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x7f3e3711 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x8866188a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8e6f752d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x912852e4 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x92dd9d35 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x947ddbad ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x95eb60eb ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x96036809 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x98aa5e18 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x993bbc8a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x9beef883 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2e65b1d ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb34a9cc8 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xb445db55 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb879299c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xbcf891cf ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xbd455b2c ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc08da5ac ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4bba83b ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1482a0e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd2b8544f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd506e788 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xd66339d8 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xde2c47c5 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe40e07c1 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xeddf6e2c ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xf8e93677 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xf95e802e ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfdbd62fc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xff5809c7 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xff7923a0 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x56b7d351 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x15e16bed wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x371ef8ec wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x392b4f4e ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x58c73eae ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x629aeaae wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7a6e49e9 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9188a349 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xada5b069 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb9f5cd39 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc1bf3bc4 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xca012202 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec505c87 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf0a6314d ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x73a0a352 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x83d94ae3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf6313dc4 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1e9d87c6 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x73a95322 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf0d595d6 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x46f9b650 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x82a088d7 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x92c26fe9 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xa147a6e0 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xd9400276 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xee1a35c9 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xfd0a3c6f nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/tunnel4 0x437020ec xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xc1161335 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x125de168 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x56e1698f ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaca7f843 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe4c9242f ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x55a9b0af xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdaaa45f0 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6b15d35c xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9e3a1dc6 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x16da930b ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x36843801 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x875ad8c5 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbccad8d7 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xda874df9 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xeba9f541 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf7011774 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfc1bdd84 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x004180da 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 0x0e87e0a6 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x18075437 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x1e9fd9c3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x22caf86e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x29f287cf alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x2a31f22f irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x2c155d93 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x2d3765bc hashbin_find +EXPORT_SYMBOL net/irda/irda 0x3302bb27 irlap_open +EXPORT_SYMBOL net/irda/irda 0x3569dc4d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3a8446d7 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x42763b94 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x4479ef51 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x44af1680 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x538d5d22 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x572583cf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x5f55c3a2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6c6f5f97 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x74c6eb16 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7aa1ddbc irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7c596178 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x7de04a81 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x80da7829 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x965c47ed proc_irda +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xb5c93e6b irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb710786e hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xb7cec36f irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb8f916b9 iriap_getvaluebyclass_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 0xbf285a4c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xc172f18f irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xc2fd5a43 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xc3a512dd hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe4daa18a irlap_close +EXPORT_SYMBOL net/irda/irda 0xe74b1164 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xeb461f9f async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xedf805a9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0xef16660b hashbin_new +EXPORT_SYMBOL net/irda/irda 0xefbea52c irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf57a2eda irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xf92af94c irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xfb7d4c6e iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x4ff8480b l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x4458da8b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x4af59a17 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x95b60994 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xa12dcda4 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xb2f93cf9 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xba12a611 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xebe0fe4f lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xefd5ad38 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x05a21ee3 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x44505506 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x45edb004 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5c00834b llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x9656f8a0 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xa360279b llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xeb9a6916 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xedd3883a llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6408c ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x06986f7d rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x0745a26a ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0879f1e3 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x0d867bbc ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x17d25fca __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x246a5335 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x25972470 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x3015f844 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x31c31bba ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3f6907ed ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x45ab57ed ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x48107bce ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5ccbd9a7 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6327e354 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x632f8ab2 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6d4ba660 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x727cf3ca ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x76b831ab ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7753c25a ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7bafd753 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7cdc0c47 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7fa360f9 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x80fb61ab ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x870c7210 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x87cdbffa ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8b95c031 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x8cbf59c2 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x90f564d3 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x9ad9b67b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9d396af8 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa6d8ad06 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xae401bcd ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb6a19e99 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc05e3899 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc95fdc95 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xcab9f338 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xcb9375f5 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcdff5a18 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xcea280e6 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd3220192 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdbff3279 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdc338558 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe5029cd2 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xf35e844f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf565dfb9 ieee80211_queue_work +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0f9db9d8 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x10a700d4 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3237f682 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3675d105 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5409953c ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7b3b521f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x82126b99 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x92b8bdfb unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7e63305 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc602408b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc709637 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd36b104c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdeb65135 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe547c71d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x64c31107 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x73c02577 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xeb6c4282 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xd14b43a5 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x19ae0f72 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x2d4cb6e5 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3a5a0cee xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x90fc36f3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa45ffca0 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe0a24bf8 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xea60de52 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xebd900c8 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xed748eaf xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf253aab2 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x1b494291 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x1cf1da27 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1fdf210c nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x355a7870 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x60a046fc nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6ad7ada9 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x80eb07cd nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x90295f08 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x947bc063 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x94b02537 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa1effffa nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xb004eed1 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb3dc0c38 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb5bfa4d1 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbf586a47 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xc28e49a7 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xcc230ab2 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xd0b32f48 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xd45fb262 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf42c0ab2 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xffd75ec8 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4c90d36a nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6a43e63f nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa51f8779 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb34ff908 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd458b61b nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x4d36f8e6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x5a045ead nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x6df28ad9 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa7ff3f08 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xbe123f66 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc0924688 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xc35dc78b nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc477c5ae nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xca8bbdde nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xe42c2e38 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xfcf66147 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/phonet/phonet 0x2397a854 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x814c1f8a phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x9fcea495 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc219c267 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xc239f64b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xdd7d9c46 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xf181620a pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xf216fa83 phonet_stream_ops +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x172b7cad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2e85e4cf rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4fa30e10 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5ea083ef rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64ca921f rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64d79859 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x77449b50 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x85c0e697 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8784a559 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x87dafc62 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb8e4b6a3 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd0ea3717 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xde97b9b6 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe595862f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfd4df5b7 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/sctp/sctp 0x4f1cda33 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xcd744531 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xac1ae472 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xcadcd16a wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x051a5433 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a14ffef __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x0d7c4886 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x13d95b8e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x17a10fbe cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1b5d88cf cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x25a5b3e1 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x296ea120 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x30e20d93 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3447d433 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x35671b2c cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x36177958 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x378862b5 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x3bf523d0 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x43c6fad3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44b0470e ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x450c9d73 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x49e4e137 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4b2f9156 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x4c1423d1 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x4f2dc1db cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x515cd87b cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5c2a9fe2 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x5f741726 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x6007a036 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x61cbb0c3 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7aab1e2f cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7daf8500 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8124b083 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x832fcb06 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x83d06dfa cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x858f52d4 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x89c79f90 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8d111b49 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8de23fdf cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9159c1f8 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x987fae9b ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x9b22732c wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xa0c03a19 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa80ca6a6 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb2a2000d cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xb3ce56b3 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xbd059f96 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc07b006e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc9c72c83 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc9e28494 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xd5276cb9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd63bc0e8 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xdba488f5 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xdcee6e9c wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xe2c6f870 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xecdcd668 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xed804a49 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf46d8139 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xf63541fd cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xfd44b060 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xfebac568 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x6a2dbc55 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6bfc7bb4 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x83fe7b56 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x96b8e28b lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xceca6446 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xdc14cb48 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xea77d80b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5597a71a snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x05ba8c3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1b7e2a11 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2928b118 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x743f2c18 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6803f7c5 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa1585716 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x0df2e317 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x26885c56 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ab3ab98 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ddf2a2e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85c27c7a snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85e4ac82 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd4945484 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfcf964a7 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x464575d8 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x76ce51c5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14a0132b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x154df648 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x245f8ecd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e198920 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5222960a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54c06636 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5941efc3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6120e10f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x629b7e97 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6f6b8ba5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7a417cef snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8cd1a8d7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94f900f5 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95823a7c snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa88dccc2 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8aad07c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdee35c75 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9fd1963b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f8e7dbd snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13f91d59 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18edb454 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3bbcc72b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x463c867d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e6c8065 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7fd5a310 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83a400e4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x92ae42d7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9bc797ed snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0f0c257 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2e33729 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9348a92 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9f9ff5c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd46e50e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf662f332 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff88f3a1 snd_ac97_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbde753a1 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x0022b8fa dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00658d2c snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0081030e omap_vram_reserve +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x0088eb1a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00b5070f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00dceeb0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x00df3cd1 snd_timer_start +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00eef49e __strnlen_user +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010757a3 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011b3925 dst_destroy +EXPORT_SYMBOL vmlinux 0x01316c4b revalidate_disk +EXPORT_SYMBOL vmlinux 0x01424f59 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x017ff6b1 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01acf78c blk_requeue_request +EXPORT_SYMBOL vmlinux 0x01d3621a tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x01d372ba thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x01e8ac6e twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x01fea6ed usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0242dfe2 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x024bf88f omap_modify_dma_chain_params +EXPORT_SYMBOL vmlinux 0x024fe8d5 udp_table +EXPORT_SYMBOL vmlinux 0x025132c5 dpi_check_timings +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027b5927 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0283e58e account_page_writeback +EXPORT_SYMBOL vmlinux 0x0289743f of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x029db920 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x02a0d156 gpmc_prefetch_reset +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a72712 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x02c0db3f inet_register_protosw +EXPORT_SYMBOL vmlinux 0x02c36bb4 journal_create +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e1c724 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02fa54aa mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0302c48b idr_destroy +EXPORT_SYMBOL vmlinux 0x030bce7b tty_port_close_start +EXPORT_SYMBOL vmlinux 0x031ba9bf atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x031c3dfa dev_disable_lro +EXPORT_SYMBOL vmlinux 0x0331bc7b dm_get_device +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034eec6c bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a6d6b2 lock_may_read +EXPORT_SYMBOL vmlinux 0x03a7452e call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03e0f1b7 __lock_page +EXPORT_SYMBOL vmlinux 0x03eb0461 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ffa31d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0444d12c serio_close +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0461149f input_unregister_handler +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04768963 dquot_destroy +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a621f6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x04b74adc vm_map_ram +EXPORT_SYMBOL vmlinux 0x04c47134 of_device_register +EXPORT_SYMBOL vmlinux 0x04c4d0a4 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x04cb6240 files_lglock +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04d5f0a5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f4c74c backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x051dae71 skb_make_writable +EXPORT_SYMBOL vmlinux 0x051efadc pm860x_page_reg_write +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 0x057e6d37 sock_create_lite +EXPORT_SYMBOL vmlinux 0x058db3f5 up_read +EXPORT_SYMBOL vmlinux 0x05baaba0 wait_for_completion +EXPORT_SYMBOL vmlinux 0x05d95ac8 write_inode_now +EXPORT_SYMBOL vmlinux 0x05f87ef3 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x05ff2174 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06376c11 sock_release +EXPORT_SYMBOL vmlinux 0x0648e553 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x0650191f d_move +EXPORT_SYMBOL vmlinux 0x065de4ad vfs_statfs +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069ce1b7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x06a26579 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x06e695ed set_page_dirty +EXPORT_SYMBOL vmlinux 0x06ea8aac led_blink_set +EXPORT_SYMBOL vmlinux 0x06fcece8 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0715130d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0730b7bf wireless_spy_update +EXPORT_SYMBOL vmlinux 0x0730ed21 d_lookup +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x079f8f53 skb_insert +EXPORT_SYMBOL vmlinux 0x07a6ddfa abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bb555d scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6fe98 proc_symlink +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e5494e lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x07ead500 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x080b08eb jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x082ce095 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0851043a tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x0853a313 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x086b1a57 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0884c74f simple_empty +EXPORT_SYMBOL vmlinux 0x0887263e skb_find_text +EXPORT_SYMBOL vmlinux 0x08c761c1 unlock_super +EXPORT_SYMBOL vmlinux 0x08ccfa69 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x08ded414 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x091c5b10 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x092e9372 search_binary_handler +EXPORT_SYMBOL vmlinux 0x09360eba omapdss_dpi_display_enable +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09674b49 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x0978e8d3 do_splice_from +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b336f6 inode_only_permission +EXPORT_SYMBOL vmlinux 0x09c250eb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d07ef7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x09e96dba snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a0672bb fget_raw +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2ef616 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49a076 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0a7d8122 kernel_listen +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0aa560af fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0abe1e6c neigh_direct_output +EXPORT_SYMBOL vmlinux 0x0aca23ef nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad5fb6f down_write_trylock +EXPORT_SYMBOL vmlinux 0x0add6a1f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x0ae02873 i2c_transfer +EXPORT_SYMBOL vmlinux 0x0b04d4f0 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b28e140 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0b351ada mempool_resize +EXPORT_SYMBOL vmlinux 0x0b360971 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0b387d94 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5fdc85 get_io_context +EXPORT_SYMBOL vmlinux 0x0b69a29f down_trylock +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b873e1b __ip_select_ident +EXPORT_SYMBOL vmlinux 0x0b8df029 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0b90e80b proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bda7807 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x0be8f5d9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x0c0202db filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0c09b60b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0c18f0b3 __kfree_skb +EXPORT_SYMBOL vmlinux 0x0c316a4c dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c35f2c6 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x0c3fe9b3 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x0c4e799d dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x0c5029a9 seq_path +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f7d84 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c81fd4c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c94e03c mmc_resume_host +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cacd1a2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0ce025a4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x0d198713 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x0d3bb020 dm_io +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d85d38b __blk_end_request +EXPORT_SYMBOL vmlinux 0x0d8ae393 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da41773 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x0daf568a current_fs_time +EXPORT_SYMBOL vmlinux 0x0dbe49bb generic_make_request +EXPORT_SYMBOL vmlinux 0x0dc4ddd9 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x0dc69705 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x0dcc62fe dev_mc_init +EXPORT_SYMBOL vmlinux 0x0de84ceb dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x0e51cc03 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0e62e9ee seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0e674bd8 iput +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e893437 lg_lock_init +EXPORT_SYMBOL vmlinux 0x0e95aed4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0eab8424 file_update_time +EXPORT_SYMBOL vmlinux 0x0eb2fce2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0ec98808 ida_init +EXPORT_SYMBOL vmlinux 0x0ed70e05 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0eeac95e netdev_notice +EXPORT_SYMBOL vmlinux 0x0ef22307 journal_extend +EXPORT_SYMBOL vmlinux 0x0f0ce1a8 simple_write_begin +EXPORT_SYMBOL vmlinux 0x0f1836e2 napi_complete +EXPORT_SYMBOL vmlinux 0x0f1994f6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0f363190 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f655ddd jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x0f6ec591 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa429cd dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fbccb11 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff74cb0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x0ffa8302 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x10101c3c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x102aaba7 abort_creds +EXPORT_SYMBOL vmlinux 0x102cb583 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107424a6 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x10759477 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x107a9cbb thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x10ab589d mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10abebce bdget_disk +EXPORT_SYMBOL vmlinux 0x10b174ee ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x10b7def7 dev_mc_add +EXPORT_SYMBOL vmlinux 0x10d1a6ff generic_block_bmap +EXPORT_SYMBOL vmlinux 0x10d8a815 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x10da2f12 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x10dd5a3e max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11022c80 journal_init_dev +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a4cbb seq_release +EXPORT_SYMBOL vmlinux 0x11148a97 I_BDEV +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x113ecb1a init_task +EXPORT_SYMBOL vmlinux 0x114feb9c ll_rw_block +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1190c9ce twl6040_power +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a73a68 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12065014 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x120c2f97 dquot_drop +EXPORT_SYMBOL vmlinux 0x120e1439 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x1221c8be dm_register_target +EXPORT_SYMBOL vmlinux 0x1228b55b xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cbb67d scsi_execute +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e0cd3d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x12eeec28 replace_mount_options +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131e3065 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133dc5a8 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x134627c4 phy_print_status +EXPORT_SYMBOL vmlinux 0x13592581 simple_readpage +EXPORT_SYMBOL vmlinux 0x136005ae dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x136a795b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x1398d442 task_nice +EXPORT_SYMBOL vmlinux 0x139b2340 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x13a3e2f6 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x13c5270d nf_setsockopt +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4125b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1421dafd xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x142bc363 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x14528183 inet6_release +EXPORT_SYMBOL vmlinux 0x1453a52c sync_blockdev +EXPORT_SYMBOL vmlinux 0x1458ca4c pagecache_write_end +EXPORT_SYMBOL vmlinux 0x14b7212a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14cb7335 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x14d1d6f9 security_path_rename +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x15034008 serio_reconnect +EXPORT_SYMBOL vmlinux 0x150ea7db sock_kmalloc +EXPORT_SYMBOL vmlinux 0x15139ad1 bio_endio +EXPORT_SYMBOL vmlinux 0x1524d58b proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x154999aa __pagevec_release +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155019f7 may_umount_tree +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x156d1e82 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x158a01ac tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x15a16218 put_io_context +EXPORT_SYMBOL vmlinux 0x15dacae2 d_instantiate +EXPORT_SYMBOL vmlinux 0x15debd12 input_register_handle +EXPORT_SYMBOL vmlinux 0x160ef936 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x161028e9 simple_lookup +EXPORT_SYMBOL vmlinux 0x16154f04 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1627dce6 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162c7a6b ppp_channel_index +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163bc431 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x165b49aa of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x165dcc8e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x166c6638 blk_get_request +EXPORT_SYMBOL vmlinux 0x166cb2a3 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x16859d77 serio_rescan +EXPORT_SYMBOL vmlinux 0x16a772f1 dev_err +EXPORT_SYMBOL vmlinux 0x16c27823 sock_register +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16e50dac bio_split +EXPORT_SYMBOL vmlinux 0x17019b7a skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x17108fce devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x171bb402 have_submounts +EXPORT_SYMBOL vmlinux 0x1737aacf block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1739d958 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x1792c48d __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17af11d3 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x17c490b9 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x17d48596 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17f075f4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1827cb53 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1851151c proc_dointvec +EXPORT_SYMBOL vmlinux 0x1879d3a0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18902e4e snd_power_wait +EXPORT_SYMBOL vmlinux 0x189100f0 drop_super +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b1769d inet_stream_connect +EXPORT_SYMBOL vmlinux 0x18dc48d0 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x18f0d3af scsi_device_get +EXPORT_SYMBOL vmlinux 0x18f9c336 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x19068e25 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x1906c469 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x19088883 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x191854af __register_chrdev +EXPORT_SYMBOL vmlinux 0x192217d9 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x1924a3ea load_nls_default +EXPORT_SYMBOL vmlinux 0x195b15d1 mpage_readpages +EXPORT_SYMBOL vmlinux 0x196aff3e dev_base_lock +EXPORT_SYMBOL vmlinux 0x196c83d7 unregister_netdev +EXPORT_SYMBOL vmlinux 0x19762b5c snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b11184 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x19b3dded register_gifconf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cec6ef snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x19e91218 __getblk +EXPORT_SYMBOL vmlinux 0x1a0135e4 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x1a1098a3 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x1a29074f security_path_unlink +EXPORT_SYMBOL vmlinux 0x1a496ac6 cad_pid +EXPORT_SYMBOL vmlinux 0x1a54133a md_integrity_register +EXPORT_SYMBOL vmlinux 0x1a5474f6 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6612ec soft_cursor +EXPORT_SYMBOL vmlinux 0x1a8f4375 vc_cons +EXPORT_SYMBOL vmlinux 0x1ab30c4d vfs_writev +EXPORT_SYMBOL vmlinux 0x1ab47db9 misc_deregister +EXPORT_SYMBOL vmlinux 0x1ab4e21f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1ab5caa9 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae58785 update_region +EXPORT_SYMBOL vmlinux 0x1ae90bbf lookup_one_len +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b045a97 would_dump +EXPORT_SYMBOL vmlinux 0x1b06fd44 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x1b075d04 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b4385d9 sk_filter +EXPORT_SYMBOL vmlinux 0x1b51148f vmap +EXPORT_SYMBOL vmlinux 0x1b54669e __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x1b55cbd2 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b9b04c5 snd_timer_new +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1baeaed4 proc_dostring +EXPORT_SYMBOL vmlinux 0x1baec476 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x1bceb015 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x1c081484 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x1c2a1dbf disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1c4993bc vfs_link +EXPORT_SYMBOL vmlinux 0x1c51cf7e mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x1c63e7e6 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x1c677d45 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x1c68a994 sk_stream_error +EXPORT_SYMBOL vmlinux 0x1c77cbf5 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x1ca221d0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x1cb937b1 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x1cc1dabc mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd0f6c0 mempool_alloc +EXPORT_SYMBOL vmlinux 0x1cd58514 __alloc_skb +EXPORT_SYMBOL vmlinux 0x1cfc8b01 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d29fcb2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x1d41bb9b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x1d43d57c seq_putc +EXPORT_SYMBOL vmlinux 0x1d502d43 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x1d57fde8 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x1d5fde9c journal_load +EXPORT_SYMBOL vmlinux 0x1d9135f0 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1da03ed0 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x1dab9e77 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x1dac70ef tcp_proc_register +EXPORT_SYMBOL vmlinux 0x1db342fd __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dbb9814 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x1dc13c8e phy_device_register +EXPORT_SYMBOL vmlinux 0x1dc2dc34 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc9080a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd76860 register_netdevice +EXPORT_SYMBOL vmlinux 0x1df0edb6 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1dfb97f9 dev_emerg +EXPORT_SYMBOL vmlinux 0x1dfe0274 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0ee4eb mem_map +EXPORT_SYMBOL vmlinux 0x1e24fd27 unregister_key_type +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e287c9a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1e4140d5 bio_alloc +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e95feb9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eba431e skb_free_datagram +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed90c38 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1ef900bd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1f142f0c kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x1f508b03 bdget +EXPORT_SYMBOL vmlinux 0x1f667d81 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1f6c3361 key_invalidate +EXPORT_SYMBOL vmlinux 0x1f6c9d7a destroy_EII_client +EXPORT_SYMBOL vmlinux 0x1f745e2c key_alloc +EXPORT_SYMBOL vmlinux 0x1f77e8ef of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1f786d19 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd8d53a netdev_update_features +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ffa9f00 put_disk +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20085764 register_nls +EXPORT_SYMBOL vmlinux 0x202b6e63 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209694b0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df83c5 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x20e6ef43 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x20f1bbf4 dquot_acquire +EXPORT_SYMBOL vmlinux 0x20f4457f tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x210368be load_nls +EXPORT_SYMBOL vmlinux 0x210c8ebc generic_read_dir +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211847e0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x2149c298 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21a02d0b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x21aa4dd0 register_key_type +EXPORT_SYMBOL vmlinux 0x21b13bde no_llseek +EXPORT_SYMBOL vmlinux 0x21bc8247 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x21cf27fb genl_notify +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x220101f4 lease_modify +EXPORT_SYMBOL vmlinux 0x22091be7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x221dfde0 idr_pre_get +EXPORT_SYMBOL vmlinux 0x22207102 freeze_super +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22381e35 console_stop +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x224fc3ea test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22cd0114 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x22dfbba4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x22f5208c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x22f7fe90 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x22fdad06 dma_supported +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f8460 cdev_del +EXPORT_SYMBOL vmlinux 0x233857af notify_change +EXPORT_SYMBOL vmlinux 0x2347ed86 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x234822b1 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x23500506 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2358bb9c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x239ea69d buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23d2b2b3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x23e66b08 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x23f1efa4 f_setown +EXPORT_SYMBOL vmlinux 0x23f7ee8d cpu_cache +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2412d9ac __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2429a333 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x242e22ac generic_show_options +EXPORT_SYMBOL vmlinux 0x244a932b genlmsg_put +EXPORT_SYMBOL vmlinux 0x245807f0 setattr_copy +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2459cb98 kernel_read +EXPORT_SYMBOL vmlinux 0x2467e637 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2477ab91 dev_printk +EXPORT_SYMBOL vmlinux 0x247cd259 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24c99df3 sock_wake_async +EXPORT_SYMBOL vmlinux 0x24e10d8e twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x24f74506 nand_scan +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25024249 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x250d0bce phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x2515a9cb input_set_abs_params +EXPORT_SYMBOL vmlinux 0x2524e83e kdb_current_task +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252d7640 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25456d8c skb_pull +EXPORT_SYMBOL vmlinux 0x25460c8f xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2560e3f6 journal_ack_err +EXPORT_SYMBOL vmlinux 0x25724c4e vc_resize +EXPORT_SYMBOL vmlinux 0x2577bc0f snd_timer_pause +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25976aa2 netdev_warn +EXPORT_SYMBOL vmlinux 0x259d5f20 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x25ac5bd9 dql_init +EXPORT_SYMBOL vmlinux 0x25ae0bde tty_port_hangup +EXPORT_SYMBOL vmlinux 0x25b65d2f journal_get_create_access +EXPORT_SYMBOL vmlinux 0x25be2aba simple_transaction_release +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25f1b4b0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x262a9620 complete_request_key +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263e70b4 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x268ae8a7 seq_open_private +EXPORT_SYMBOL vmlinux 0x26911e4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2694dba8 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x26ac17c5 mount_subtree +EXPORT_SYMBOL vmlinux 0x26b996f5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26d65736 security_path_truncate +EXPORT_SYMBOL vmlinux 0x26db079f phy_connect +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fe75af dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x2700b38a mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2723b642 input_open_device +EXPORT_SYMBOL vmlinux 0x274ac3b0 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x2750b3a1 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2771bcbc xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x2780cf97 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2796e2e6 block_write_full_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c165b1 udplite_prot +EXPORT_SYMBOL vmlinux 0x27c1de03 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x280bc39b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818bcaf pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x281ce5ef netdev_set_master +EXPORT_SYMBOL vmlinux 0x282ba335 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x2830fee2 idr_get_next +EXPORT_SYMBOL vmlinux 0x284a48a2 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2854eb28 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x286626f2 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x286984ab generic_write_sync +EXPORT_SYMBOL vmlinux 0x2897fc48 omap_cfg_reg +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28c615c4 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28d85959 generic_permission +EXPORT_SYMBOL vmlinux 0x2904f0e8 clk_round_rate +EXPORT_SYMBOL vmlinux 0x29115774 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x295052ca skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296be509 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x29889a0a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x29aeccd9 filemap_fault +EXPORT_SYMBOL vmlinux 0x29af41e2 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x29c8b08c of_phy_connect +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a03ff3e tcp_poll +EXPORT_SYMBOL vmlinux 0x2a042179 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2a1ed93e clk_add_alias +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a7b64f0 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2a8aec48 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2a8e0667 tty_devnum +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa7a3cb __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acbc65c mnt_pin +EXPORT_SYMBOL vmlinux 0x2acd5d13 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2ae97066 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x2af8e218 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2b072aec file_open_root +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2ff104 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x2b3da4f1 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2b478e16 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2b688622 complete_and_exit +EXPORT_SYMBOL vmlinux 0x2b90cdaa mempool_create +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bab9a14 __nla_reserve +EXPORT_SYMBOL vmlinux 0x2bb081f3 phy_stop +EXPORT_SYMBOL vmlinux 0x2bd86d11 iget5_locked +EXPORT_SYMBOL vmlinux 0x2bd89727 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2be17af8 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2bfcef99 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1b30ff iterate_mounts +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3c6646 mnt_unpin +EXPORT_SYMBOL vmlinux 0x2c64b7a2 genl_register_family +EXPORT_SYMBOL vmlinux 0x2c6615fc snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x2c9e11ad xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x2cc65d90 bio_add_page +EXPORT_SYMBOL vmlinux 0x2cd52b0b simple_release_fs +EXPORT_SYMBOL vmlinux 0x2cd8d457 bmap +EXPORT_SYMBOL vmlinux 0x2cda24e9 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2ce9a63c scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x2cff8a67 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1f5a20 inet_put_port +EXPORT_SYMBOL vmlinux 0x2d2f4baa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2d34a1b4 dq_data_lock +EXPORT_SYMBOL vmlinux 0x2d4fb182 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2d52652b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x2d607ee2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d873ba4 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2dacbe20 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x2de764b9 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df8aede jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x2df8cd3b nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x2e05e9de netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x2e0a3115 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e27459d snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x2e2a54b0 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2ea4d1fa journal_wipe +EXPORT_SYMBOL vmlinux 0x2ea854b0 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2ec01ae8 single_open +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec54e9c sk_release_kernel +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 0x2f051dcb dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x2f06acb2 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x2f0bf033 sock_create_kern +EXPORT_SYMBOL vmlinux 0x2f1dd849 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x2f4f2346 tty_name +EXPORT_SYMBOL vmlinux 0x2f5db5de inet6_ioctl +EXPORT_SYMBOL vmlinux 0x2f7a7294 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x2f857079 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2f8749e4 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x2f88a039 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x2f9bb232 neigh_table_init +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd4fc8f snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x2fd80048 simple_setattr +EXPORT_SYMBOL vmlinux 0x2fd85baf ___ratelimit +EXPORT_SYMBOL vmlinux 0x2fec7f23 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x2fed65cc fb_show_logo +EXPORT_SYMBOL vmlinux 0x2ff0dab6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x30056dcb netpoll_setup +EXPORT_SYMBOL vmlinux 0x3006e61a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x300c615d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x302055d7 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x30244d24 uart_resume_port +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30bc8e1b md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30cb14e5 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31043cb0 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312a36c9 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x312a7e18 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x313ffc4d set_security_override +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314d5b46 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x316dd1cd __wait_on_bit +EXPORT_SYMBOL vmlinux 0x3187e0b9 inet6_getname +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a49b03 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x31a71a39 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31f03185 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x31fb1aeb elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x321866a1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x322014ec mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3246243e security_path_chmod +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328ba99b scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x32bc4488 nla_append +EXPORT_SYMBOL vmlinux 0x32d42c10 inode_permission +EXPORT_SYMBOL vmlinux 0x3314647e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x33211758 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x33613a69 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x336c05f8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33baae8c sg_miter_next +EXPORT_SYMBOL vmlinux 0x33cefbae omap_dss_find_device +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f3c466 neigh_lookup +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342c937d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x343cb8b8 inet_accept +EXPORT_SYMBOL vmlinux 0x3441e442 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x344e0fe5 seq_write +EXPORT_SYMBOL vmlinux 0x3461a2f7 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x346502e8 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x346cd864 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x3493acdd __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34be7e44 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3504d638 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3542f055 vfs_read +EXPORT_SYMBOL vmlinux 0x35568ba3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x355f425c kobject_set_name +EXPORT_SYMBOL vmlinux 0x35610e05 clk_get +EXPORT_SYMBOL vmlinux 0x357559df sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c6ef03 empty_aops +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x3600ef49 amba_request_regions +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36294c68 tty_port_init +EXPORT_SYMBOL vmlinux 0x364b3fff up +EXPORT_SYMBOL vmlinux 0x364c6d8f fb_pan_display +EXPORT_SYMBOL vmlinux 0x36799b63 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x3680f520 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x3681ee83 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x36a2488d zero_fill_bio +EXPORT_SYMBOL vmlinux 0x36b8499c kmalloc_caches +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e744fc ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x36f271a0 follow_down +EXPORT_SYMBOL vmlinux 0x371a0d71 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x371b9574 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x371ef233 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x371ef8db md_flush_request +EXPORT_SYMBOL vmlinux 0x37203b85 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x372b949f snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3744fc63 kill_litter_super +EXPORT_SYMBOL vmlinux 0x376b5929 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x37739222 scsi_host_get +EXPORT_SYMBOL vmlinux 0x377779c6 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3778cb18 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x3778f45c igrab +EXPORT_SYMBOL vmlinux 0x378b57e2 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37a89e1f udp_proc_register +EXPORT_SYMBOL vmlinux 0x37b1e0ea d_prune_aliases +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37ba3e46 i2c_master_send +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37bf68b4 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x37d7f12b skb_copy +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x382eab43 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x388cb0dc ppp_unit_number +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38af62e2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x38b81f68 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x38b9e084 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x38c23871 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x390964e4 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x390abf70 phy_disconnect +EXPORT_SYMBOL vmlinux 0x392a5d1c elevator_exit +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3950711a of_match_device +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x397cbac5 blk_peek_request +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399365a8 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x39a60abd snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x39a8e5e8 lock_fb_info +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x3a1bffe5 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3a1d1f23 neigh_create +EXPORT_SYMBOL vmlinux 0x3a655d8c softnet_data +EXPORT_SYMBOL vmlinux 0x3a77df32 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9c7b85 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x3a9d3a1c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x3aa16502 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ab05508 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x3acbee2b kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x3b2ed648 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b398e51 fget +EXPORT_SYMBOL vmlinux 0x3b6dffc5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3b6f30c6 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3b7f8e27 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b91f5be inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x3b9541d0 omap_dss_unregister_driver +EXPORT_SYMBOL vmlinux 0x3ba5c359 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfd41b5 do_sync_write +EXPORT_SYMBOL vmlinux 0x3c011bfd get_user_pages +EXPORT_SYMBOL vmlinux 0x3c1ef7c7 down_read_trylock +EXPORT_SYMBOL vmlinux 0x3c366fcb lro_receive_frags +EXPORT_SYMBOL vmlinux 0x3c4555e7 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x3c77542e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c87faf1 input_allocate_device +EXPORT_SYMBOL vmlinux 0x3c92eb55 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x3c97e278 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cc6d3fa sock_no_listen +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce4f01c tcp_init_sock +EXPORT_SYMBOL vmlinux 0x3cf7b415 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d3932e3 __module_get +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d7063b5 find_get_page +EXPORT_SYMBOL vmlinux 0x3d86067c seq_lseek +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3dbce74c arp_find +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddd8e31 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x3de56609 snd_timer_open +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfcb339 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x3e1d9fc4 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x3e2e01bf pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4eaadc __sk_dst_check +EXPORT_SYMBOL vmlinux 0x3e4f28d6 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x3e56b54f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3e686c75 mount_single +EXPORT_SYMBOL vmlinux 0x3e6b0b00 request_key +EXPORT_SYMBOL vmlinux 0x3e6da4fb jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea468e1 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3eaf50ad arp_create +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3eca76dd snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ed676ed blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3f0172ab tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3f3eb980 skb_queue_head +EXPORT_SYMBOL vmlinux 0x3f42c48a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f88fafb generic_writepages +EXPORT_SYMBOL vmlinux 0x3fcc763e kill_bdev +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403797d0 get_super_thawed +EXPORT_SYMBOL vmlinux 0x403ab398 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x4049933e security_path_symlink +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4064d20a skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x407d1014 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4086374a xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40979285 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a6f522 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40dcd4e1 da903x_query_status +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x410312d3 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x41173a81 serio_open +EXPORT_SYMBOL vmlinux 0x41220e7e bio_clone +EXPORT_SYMBOL vmlinux 0x4127a5d2 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x41380186 lock_super +EXPORT_SYMBOL vmlinux 0x413894e2 ilookup +EXPORT_SYMBOL vmlinux 0x413d1e88 scsi_add_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a52ea dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x414d61f3 devm_ioremap +EXPORT_SYMBOL vmlinux 0x4150ec32 __brelse +EXPORT_SYMBOL vmlinux 0x4183d9a9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418aa1b3 dev_deactivate +EXPORT_SYMBOL vmlinux 0x41bfc910 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x41c00c2b mmc_release_host +EXPORT_SYMBOL vmlinux 0x41d568d6 of_device_is_available +EXPORT_SYMBOL vmlinux 0x41fe7ef1 ppp_input_error +EXPORT_SYMBOL vmlinux 0x420e9f20 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x425a68f9 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x426702e0 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x428096f4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a3fde3 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x42aacd27 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x42abc0e6 prepare_binprm +EXPORT_SYMBOL vmlinux 0x42b42d39 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x42b4eba5 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x42ee1838 __breadahead +EXPORT_SYMBOL vmlinux 0x42f38ec1 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x42f9bc35 set_disk_ro +EXPORT_SYMBOL vmlinux 0x42fc983a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4300f0b7 register_sound_special +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306104c iget_locked +EXPORT_SYMBOL vmlinux 0x43178a1b arp_xmit +EXPORT_SYMBOL vmlinux 0x4322d919 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x43450264 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x4347b971 idr_init +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436a1d3e lg_local_unlock +EXPORT_SYMBOL vmlinux 0x436d2d89 elv_rb_find +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43b45f54 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x43bcbc84 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440109fe n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4419cd5f nf_reinject +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x441f8e4e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443d528a filp_open +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444e2002 dev_set_group +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447bbcdc __find_get_block +EXPORT_SYMBOL vmlinux 0x4483e87d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x4499140f sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x44b22ca1 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efd447 omap_dss_stop_device +EXPORT_SYMBOL vmlinux 0x44f24f9a ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4519732e dev_activate +EXPORT_SYMBOL vmlinux 0x45582efb tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x456ce4d8 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x45756e17 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a2a733 inet_ioctl +EXPORT_SYMBOL vmlinux 0x45a580d7 snd_card_register +EXPORT_SYMBOL vmlinux 0x45a8fbaa down_timeout +EXPORT_SYMBOL vmlinux 0x45b621ba ip_options_compile +EXPORT_SYMBOL vmlinux 0x45ba232a get_super +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c9fcad lookup_bdev +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x4601ae1d unregister_nls +EXPORT_SYMBOL vmlinux 0x460ea1c5 udplite_table +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x465e70ee skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466fd684 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x4681c6e9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4687762a tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x46921b4b register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x46c4b962 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47035ec0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x47081cdc jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x47162a99 key_unlink +EXPORT_SYMBOL vmlinux 0x473efd10 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47738399 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4793c7b1 update_time +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c45f42 user_revoke +EXPORT_SYMBOL vmlinux 0x47ea7b28 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48125adb kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x481aa411 snd_seq_root +EXPORT_SYMBOL vmlinux 0x482298fd unregister_quota_format +EXPORT_SYMBOL vmlinux 0x483af0e2 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x483ec199 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x483f4104 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4846f530 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4852f869 block_write_begin +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485c99cc mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x486eca3a of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x48704908 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48849e3f try_to_release_page +EXPORT_SYMBOL vmlinux 0x48954949 unlock_buffer +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48c542de phy_start_aneg +EXPORT_SYMBOL vmlinux 0x48ffc303 dev_uc_del +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490b1367 blk_init_queue +EXPORT_SYMBOL vmlinux 0x494a4954 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x49506e93 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497f1bca blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x499bfbf2 devm_iounmap +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c58e5d file_remove_suid +EXPORT_SYMBOL vmlinux 0x49da7167 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x49db5768 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x49e63605 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f543c8 bdi_unregister +EXPORT_SYMBOL vmlinux 0x49f5cc79 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x49f8a184 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49fe734c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4a093833 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x4a2d6bd4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x4a35361d uart_suspend_port +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a429475 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x4a4ffbc1 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x4a51dce6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x4a71f939 led_brightness_set +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abdb61c seq_printf +EXPORT_SYMBOL vmlinux 0x4ad0a85a journal_set_features +EXPORT_SYMBOL vmlinux 0x4ae76a38 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b142e72 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4b1c7f9a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b20cbd2 ida_remove +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4221cb phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4b5d499f sk_alloc +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b79aab2 tcp_close +EXPORT_SYMBOL vmlinux 0x4b913749 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x4be0161c ps2_command +EXPORT_SYMBOL vmlinux 0x4c059aba journal_abort +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c11cdb2 empty_zero_page +EXPORT_SYMBOL vmlinux 0x4c16773d textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4c21cc42 blk_get_queue +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c78cada scsi_remove_device +EXPORT_SYMBOL vmlinux 0x4c9825e5 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x4c9898d8 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x4c991168 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf6cf63 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0x4d0546b0 ipv4_specific +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d13b1a6 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4d240987 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x4d39c692 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d68263f nla_put +EXPORT_SYMBOL vmlinux 0x4d697ce4 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4d88d75d jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x4d8ed115 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9afc39 page_readlink +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4d9df1ea scm_detach_fds +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dcf39a9 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x4de6e3a7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e201dac jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x4e2aff5a kernel_accept +EXPORT_SYMBOL vmlinux 0x4e2b2299 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4e31eaf8 dev_open +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e400ce5 release_sock +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e748dcd down_read +EXPORT_SYMBOL vmlinux 0x4e7575ee key_type_keyring +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8d3e48 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x4e9746fd sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4ed70e07 clk_get_rate +EXPORT_SYMBOL vmlinux 0x4efe96e8 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x4f0d7ce6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f283f47 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f78b7b2 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4f7c932e twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f833685 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fa5447e pipe_unlock +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50171978 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x504648b4 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5059c385 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x507e4ed6 dev_trans_start +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50c25cc3 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x50c71330 idr_get_new +EXPORT_SYMBOL vmlinux 0x50ccff03 omap_dma_set_prio_lch +EXPORT_SYMBOL vmlinux 0x50cd35e7 __quota_error +EXPORT_SYMBOL vmlinux 0x50cf5efb mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x50f66679 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x50fb6048 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x5100e8e4 kobject_add +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515802c0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5169161d omap_free_dma_chain +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51a6512c tty_free_termios +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e07f5d dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f06805 dump_write +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52057bae mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5206509b snd_device_free +EXPORT_SYMBOL vmlinux 0x52106625 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5210d066 elevator_init +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528fa261 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x52917690 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x52a11264 send_sig +EXPORT_SYMBOL vmlinux 0x52d2e6ae key_validate +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52eb21a8 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x52efd766 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5315fa97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x5326c46c register_sound_midi +EXPORT_SYMBOL vmlinux 0x532f13e9 dquot_release +EXPORT_SYMBOL vmlinux 0x5331eabb ida_simple_get +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53560d52 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x535b9eca blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x5364e479 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x536a761b journal_clear_err +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x53875723 netdev_info +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ba4e7c up_write +EXPORT_SYMBOL vmlinux 0x53baf7d6 start_tty +EXPORT_SYMBOL vmlinux 0x53c5f463 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x53ccb820 tty_shutdown +EXPORT_SYMBOL vmlinux 0x54002836 mpage_writepage +EXPORT_SYMBOL vmlinux 0x540a721d snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x541ac419 skb_clone +EXPORT_SYMBOL vmlinux 0x543d596b journal_stop +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5452ff4a tty_hangup +EXPORT_SYMBOL vmlinux 0x54659c69 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5486abcb iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x548c054e dqput +EXPORT_SYMBOL vmlinux 0x54a8c334 skb_split +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bbe9b8 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x54d0a8b8 get_write_access +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5501bf0e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5524fa65 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x55401511 simple_rename +EXPORT_SYMBOL vmlinux 0x5559e3c4 snd_device_register +EXPORT_SYMBOL vmlinux 0x556a3533 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x557b9b3f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x55846e5c snd_jack_new +EXPORT_SYMBOL vmlinux 0x558525f8 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x558d9ae9 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x5591367c __inet6_hash +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55bf5775 netif_napi_del +EXPORT_SYMBOL vmlinux 0x55d987df tcp_parse_options +EXPORT_SYMBOL vmlinux 0x55e116c1 touch_atime +EXPORT_SYMBOL vmlinux 0x55fae982 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x56027917 proto_register +EXPORT_SYMBOL vmlinux 0x5613b469 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x562ad513 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56501718 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x56574e50 kernel_connect +EXPORT_SYMBOL vmlinux 0x565e6328 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x56789ac5 omap_set_dma_color_mode +EXPORT_SYMBOL vmlinux 0x567bffe0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x56a76bc5 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x56b925bc mmc_detect_change +EXPORT_SYMBOL vmlinux 0x56c8089d alloc_disk +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d92cc1 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x56eff735 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x56f7951f of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x570c86a6 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x570e03f1 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x57292802 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57302a87 mmc_free_host +EXPORT_SYMBOL vmlinux 0x5736fb56 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576236e1 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57add44e __napi_complete +EXPORT_SYMBOL vmlinux 0x57bc35d7 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5850a0f0 tcp_prot +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x58a698da km_report +EXPORT_SYMBOL vmlinux 0x58c55233 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x58cbb14a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x58d086d9 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x58d32d1a skb_seq_read +EXPORT_SYMBOL vmlinux 0x58f5c5c4 ip_defrag +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593f655c blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x59407d72 proto_unregister +EXPORT_SYMBOL vmlinux 0x5948749f get_phy_device +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594fd546 omap_prcm_get_reset_sources +EXPORT_SYMBOL vmlinux 0x59579c26 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x596ac851 dentry_open +EXPORT_SYMBOL vmlinux 0x5998ecd7 inode_init_owner +EXPORT_SYMBOL vmlinux 0x59d17347 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59fb5c47 netdev_printk +EXPORT_SYMBOL vmlinux 0x5a0de649 md_done_sync +EXPORT_SYMBOL vmlinux 0x5a2d5113 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x5a5ebabc tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5aa2077b revert_creds +EXPORT_SYMBOL vmlinux 0x5aeae438 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x5aec1e60 cdev_init +EXPORT_SYMBOL vmlinux 0x5b14e9f1 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b196f59 __register_binfmt +EXPORT_SYMBOL vmlinux 0x5b334156 down_killable +EXPORT_SYMBOL vmlinux 0x5b8c51fa rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5b8e3205 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb3a238 do_SAK +EXPORT_SYMBOL vmlinux 0x5bbc0d2e snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x5bc1f55c dm_put_device +EXPORT_SYMBOL vmlinux 0x5bf27f25 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bfceb78 dquot_operations +EXPORT_SYMBOL vmlinux 0x5c6097bf tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cca7f9c cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5cdabc40 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5cdad235 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x5cdcb55d jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5d000101 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5d09e17f ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x5d0a04d8 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d233bdc thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x5d2562eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5d2a2bda snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x5d3682aa __scm_destroy +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6206ab __destroy_inode +EXPORT_SYMBOL vmlinux 0x5d9ff9d4 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x5db65933 dcb_getapp +EXPORT_SYMBOL vmlinux 0x5dcd0747 read_dev_sector +EXPORT_SYMBOL vmlinux 0x5dd01bbb simple_fill_super +EXPORT_SYMBOL vmlinux 0x5dd1e3c3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5de274dc skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x5df616cb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x5e067ef1 netdev_state_change +EXPORT_SYMBOL vmlinux 0x5e0f4e72 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5e10b03e input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5e206a44 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x5e408f65 del_gendisk +EXPORT_SYMBOL vmlinux 0x5e5f4406 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5e60eb27 omap_dma_unlink_lch +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e95d22b vlan_vid_del +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec49869 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5ecfb35d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef4d861 seq_bitmap +EXPORT_SYMBOL vmlinux 0x5f0011c7 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0e46da scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x5f108d10 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x5f1a363b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f24b10b nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x5f257724 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f464cf0 input_reset_device +EXPORT_SYMBOL vmlinux 0x5f497aeb pipe_lock +EXPORT_SYMBOL vmlinux 0x5f532252 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f634ed1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5f6e42ef tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f81645f scsi_print_result +EXPORT_SYMBOL vmlinux 0x5f9ae38e __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fad3da0 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5fb04d37 vfs_mknod +EXPORT_SYMBOL vmlinux 0x5fbaf8fa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5fc6cf2f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x6031feea scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60ab28ae mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x60b0b67d snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x60e32666 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x60f71cfa complete +EXPORT_SYMBOL vmlinux 0x611d79bf scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614e55f0 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617a8702 get_task_io_context +EXPORT_SYMBOL vmlinux 0x61a79f08 __irq_regs +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d35164 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x61eb9983 generic_setlease +EXPORT_SYMBOL vmlinux 0x61f0d306 poll_initwait +EXPORT_SYMBOL vmlinux 0x621d3806 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624d7359 address_space_init_once +EXPORT_SYMBOL vmlinux 0x62521759 nobh_write_end +EXPORT_SYMBOL vmlinux 0x625d831d mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a003ce find_vma +EXPORT_SYMBOL vmlinux 0x62adfcd0 sock_no_accept +EXPORT_SYMBOL vmlinux 0x62b72b0d mutex_unlock +EXPORT_SYMBOL vmlinux 0x62cc569e cpu_present_mask +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630a518c generic_fillattr +EXPORT_SYMBOL vmlinux 0x63129fa9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x6332959a __rta_fill +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63478c93 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x634b7eff tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6360a195 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63711d60 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x63817bf3 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x63847cf1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x6386ed50 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63942651 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x639901a0 mdiobus_read +EXPORT_SYMBOL vmlinux 0x63a77dcf wake_up_process +EXPORT_SYMBOL vmlinux 0x63ab2604 irq_stat +EXPORT_SYMBOL vmlinux 0x63b87fc5 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x63d55a3a generic_getxattr +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641bb9ab register_framebuffer +EXPORT_SYMBOL vmlinux 0x642638d7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x64268641 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6445c46f simple_link +EXPORT_SYMBOL vmlinux 0x646284c6 security_path_chown +EXPORT_SYMBOL vmlinux 0x646bad1d inet6_bind +EXPORT_SYMBOL vmlinux 0x648d18e0 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bc0878 sock_no_bind +EXPORT_SYMBOL vmlinux 0x64bc5881 fput +EXPORT_SYMBOL vmlinux 0x64c03117 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64cbb4c8 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x64d233c8 ioremap_page +EXPORT_SYMBOL vmlinux 0x64e880b9 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x650b3790 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x650f81f4 cdrom_open +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65369ec2 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654c3494 blk_complete_request +EXPORT_SYMBOL vmlinux 0x65518c89 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x655a5577 dqget +EXPORT_SYMBOL vmlinux 0x657af67b d_invalidate +EXPORT_SYMBOL vmlinux 0x657f2f0c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65909849 key_task_permission +EXPORT_SYMBOL vmlinux 0x65a38e24 dget_parent +EXPORT_SYMBOL vmlinux 0x65bf4ae2 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x65c2579f tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x65d8ade7 set_bh_page +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e38a35 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6609b110 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x661498aa udp_ioctl +EXPORT_SYMBOL vmlinux 0x66556052 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x6662fe0d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x667e14d0 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669d139b iunique +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66af0737 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x66eadf08 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x66ff0af9 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x66ffb625 user_path_create +EXPORT_SYMBOL vmlinux 0x673612a3 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x67394265 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x673b024f snd_device_new +EXPORT_SYMBOL vmlinux 0x67449a3c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676d2cf9 add_disk +EXPORT_SYMBOL vmlinux 0x678bc0bd __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x67910e5c sk_reset_timer +EXPORT_SYMBOL vmlinux 0x679f182a tc_classify +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67be1d3d cpu_active_mask +EXPORT_SYMBOL vmlinux 0x67bf09d2 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x6824e3e4 dev_alert +EXPORT_SYMBOL vmlinux 0x685f2cf7 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x686d8642 tty_kref_put +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687f6913 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x689a183d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aed661 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x68c1c5d1 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x68cc8345 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x68cd7893 journal_start_commit +EXPORT_SYMBOL vmlinux 0x68cfabbc omap_dss_start_device +EXPORT_SYMBOL vmlinux 0x68de0e3c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x690ee1bc devm_free_irq +EXPORT_SYMBOL vmlinux 0x692e7214 journal_errno +EXPORT_SYMBOL vmlinux 0x69561575 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697c1188 alloc_file +EXPORT_SYMBOL vmlinux 0x69940ee3 __get_user_pages +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69eaeba8 dst_discard +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a078247 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x6a3bcc9c cdev_add +EXPORT_SYMBOL vmlinux 0x6a559116 rtc_lock +EXPORT_SYMBOL vmlinux 0x6a6fa8b4 contig_page_data +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78e42f bio_copy_user +EXPORT_SYMBOL vmlinux 0x6aa051ad uart_register_driver +EXPORT_SYMBOL vmlinux 0x6ab342e1 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x6acd0e34 snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5a7057 ida_destroy +EXPORT_SYMBOL vmlinux 0x6b63f98c bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b89ab26 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6baed957 bioset_create +EXPORT_SYMBOL vmlinux 0x6bb97b14 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc0f65 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6bd30203 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be056a4 put_page +EXPORT_SYMBOL vmlinux 0x6bf2ec75 simple_rmdir +EXPORT_SYMBOL vmlinux 0x6bf65bb0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c94d4c7 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x6cb7e84a scsi_execute_req +EXPORT_SYMBOL vmlinux 0x6ccf7bd7 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x6cdbd724 dquot_initialize +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9a720 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x6ce9c13b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6cf1313b inet_sendpage +EXPORT_SYMBOL vmlinux 0x6cf4852f neigh_compat_output +EXPORT_SYMBOL vmlinux 0x6d03df6d qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1597ec ping_prot +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d7c7c1a mapping_tagged +EXPORT_SYMBOL vmlinux 0x6db987eb default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6dd3f41f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6dda6957 tty_check_change +EXPORT_SYMBOL vmlinux 0x6ddea172 sock_init_data +EXPORT_SYMBOL vmlinux 0x6ded92cc of_dev_put +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e09cf26 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6e0a5953 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x6e123a69 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6e171b6b unload_nls +EXPORT_SYMBOL vmlinux 0x6e2403df tty_port_put +EXPORT_SYMBOL vmlinux 0x6e40794b blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x6e469121 follow_up +EXPORT_SYMBOL vmlinux 0x6e5e6760 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7a1bda dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ee2b01b icmp_send +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efa3d07 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x6f0a0971 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6fabeb23 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x6fb5943e snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x6fbed676 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6fc024dc sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6fc614da snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ff32b86 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701d2014 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x701e2ef6 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x701e8cd9 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x70223b40 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x70334158 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x7052352d mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7064117b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x706a055b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x70733c05 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x70af8f4e ip_fragment +EXPORT_SYMBOL vmlinux 0x70b74cf5 bio_map_user +EXPORT_SYMBOL vmlinux 0x70b8b584 ppp_input +EXPORT_SYMBOL vmlinux 0x70bab5d0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f096 omapdss_sdi_display_enable +EXPORT_SYMBOL vmlinux 0x70da54ef amba_driver_register +EXPORT_SYMBOL vmlinux 0x70da6d92 framebuffer_release +EXPORT_SYMBOL vmlinux 0x70dd1a12 gpmc_cs_configure +EXPORT_SYMBOL vmlinux 0x70eecf85 __invalidate_device +EXPORT_SYMBOL vmlinux 0x70fef6b5 __scm_send +EXPORT_SYMBOL vmlinux 0x710a2bd2 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x71122bf1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x711cbeb4 d_path +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714d6918 override_creds +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71782504 brioctl_set +EXPORT_SYMBOL vmlinux 0x717e8c8b ip_setsockopt +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bb69ba d_splice_alias +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e9df9d abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x71fb2903 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x7205f022 d_delete +EXPORT_SYMBOL vmlinux 0x721a4be0 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723573bb unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x7244dec7 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x724f9e25 bh_submit_read +EXPORT_SYMBOL vmlinux 0x72559cdc snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x7264404f register_sound_dsp +EXPORT_SYMBOL vmlinux 0x72766947 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x72c15dd9 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x72c564c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72e580a7 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eaf1cc check_disk_size_change +EXPORT_SYMBOL vmlinux 0x72fe3b1e dst_release +EXPORT_SYMBOL vmlinux 0x730c187d find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c50e3 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x732119dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x732775a8 mdiobus_write +EXPORT_SYMBOL vmlinux 0x733a0165 register_quota_format +EXPORT_SYMBOL vmlinux 0x733b25a8 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x737ac25d dql_reset +EXPORT_SYMBOL vmlinux 0x737b884b scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x739edb7c open_exec +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fbcde6 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x73fe964c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7406376e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7426abc0 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74807f3a __seq_open_private +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f4e34 do_truncate +EXPORT_SYMBOL vmlinux 0x74bc8a62 dev_warn +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ccc82e of_get_property +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ea004a netlink_broadcast +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7522a461 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x75359d07 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x7537a890 phy_find_first +EXPORT_SYMBOL vmlinux 0x755d02a6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x756b1ef4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x757ae0c1 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x75897e89 input_close_device +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x759f292a dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x75a17bed prepare_to_wait +EXPORT_SYMBOL vmlinux 0x75a92b91 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x75ad2ffd blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d29147 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x75ea8512 __dst_free +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7616f05a __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7620e99f simple_statfs +EXPORT_SYMBOL vmlinux 0x762d5a92 clk_enable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764d4120 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x7682e28c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x76838750 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x76881360 leds_event +EXPORT_SYMBOL vmlinux 0x76a5b356 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x76b9924c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c71485 cdrom_release +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d40bd3 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x76dc52a0 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x770bbc96 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x7726ca2d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7732818c xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c06373 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x77fc60bb elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x77fc7c99 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x78105cb7 kstat +EXPORT_SYMBOL vmlinux 0x783672ab dpi_set_timings +EXPORT_SYMBOL vmlinux 0x78549f3e end_page_writeback +EXPORT_SYMBOL vmlinux 0x78799aa6 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x7896d8ee of_device_unregister +EXPORT_SYMBOL vmlinux 0x789bf682 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x78e2f9f6 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x791a9efb of_match_node +EXPORT_SYMBOL vmlinux 0x793699d9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x793e37d6 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7943dda7 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x794487ee disable_hlt +EXPORT_SYMBOL vmlinux 0x795a86ad vfs_getattr +EXPORT_SYMBOL vmlinux 0x796d56bd __init_rwsem +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x799a79e1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d33427 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x7a0d9d0d genl_register_ops +EXPORT_SYMBOL vmlinux 0x7a26854d of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2b37d6 clk_get_parent +EXPORT_SYMBOL vmlinux 0x7a3988c5 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4beafa get_unmapped_area +EXPORT_SYMBOL vmlinux 0x7a78310d of_get_parent +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a9187a3 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4967b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7adb5bca nand_scan_tail +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b03cafb ip6_frag_match +EXPORT_SYMBOL vmlinux 0x7b091bad kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7b168691 __ps2_command +EXPORT_SYMBOL vmlinux 0x7b568a5d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x7b5c0738 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d54ae skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x7b5f4d7d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x7b66e361 register_console +EXPORT_SYMBOL vmlinux 0x7b7440b4 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x7b8e84f5 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x7bd29c55 phy_detach +EXPORT_SYMBOL vmlinux 0x7bd8bf59 skb_dequeue +EXPORT_SYMBOL vmlinux 0x7bd96a2c gpmc_prefetch_enable +EXPORT_SYMBOL vmlinux 0x7be55231 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7beb2e8a xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7bf30fdc down_write +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2c557c simple_open +EXPORT_SYMBOL vmlinux 0x7c2cdae9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x7c31a839 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7c442375 fb_find_mode +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c98ed4f register_qdisc +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc14082 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x7cd95d3f neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x7ce2578c snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x7ce6f64f bdi_register +EXPORT_SYMBOL vmlinux 0x7cef78f4 km_policy_expired +EXPORT_SYMBOL vmlinux 0x7d03d702 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x7d086100 vmtruncate +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d212a6e __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7d42db35 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7d6f3794 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x7d7673c6 submit_bio +EXPORT_SYMBOL vmlinux 0x7d7dc35e tcp_sendpage +EXPORT_SYMBOL vmlinux 0x7d93bbb2 set_create_files_as +EXPORT_SYMBOL vmlinux 0x7dbeae6c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7dc10419 __nla_put +EXPORT_SYMBOL vmlinux 0x7de0a78b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0e0771 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7e23d8e9 wireless_send_event +EXPORT_SYMBOL vmlinux 0x7e2ab9eb elevator_change +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e498053 md_write_start +EXPORT_SYMBOL vmlinux 0x7e87c6a9 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7ea9a08d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7ebaa41f inode_init_always +EXPORT_SYMBOL vmlinux 0x7ece1e24 scsi_init_io +EXPORT_SYMBOL vmlinux 0x7ece4af6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef09102 ata_print_version +EXPORT_SYMBOL vmlinux 0x7f01d411 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7f14b995 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x7f1fd517 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x7f207377 phy_driver_register +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33a63b omap_get_dma_chain_dst_pos +EXPORT_SYMBOL vmlinux 0x7f4ca37c dev_alloc_name +EXPORT_SYMBOL vmlinux 0x7f596387 vfs_symlink +EXPORT_SYMBOL vmlinux 0x7f5bfcb0 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f7564a1 sk_dst_check +EXPORT_SYMBOL vmlinux 0x7f8108af noop_llseek +EXPORT_SYMBOL vmlinux 0x7f8fc31f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7fa18522 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x7fa53a6e blk_rq_init +EXPORT_SYMBOL vmlinux 0x7fc62932 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801429cf unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8034558a gpmc_nand_write +EXPORT_SYMBOL vmlinux 0x80584c5c sock_setsockopt +EXPORT_SYMBOL vmlinux 0x8061337c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x807f92f2 bio_init +EXPORT_SYMBOL vmlinux 0x80c81612 genphy_resume +EXPORT_SYMBOL vmlinux 0x80c9796e xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d817ab wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x80de231a idr_remove +EXPORT_SYMBOL vmlinux 0x81003ee2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x813ed040 idr_remove_all +EXPORT_SYMBOL vmlinux 0x81474b5e journal_destroy +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815131ba mempool_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815cfb0a vfs_readv +EXPORT_SYMBOL vmlinux 0x8188fbd0 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x81afe4b1 netif_rx +EXPORT_SYMBOL vmlinux 0x81b02d62 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x81b04bfc completion_done +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e38a2c snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x81e675c6 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x81f35656 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x81fdf81f netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x82009965 names_cachep +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8204837e inet_add_protocol +EXPORT_SYMBOL vmlinux 0x8204e852 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821e8d91 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x8234fd4c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x823a5d4a dquot_alloc +EXPORT_SYMBOL vmlinux 0x82407ce6 bio_free +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8262f64b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x82658f47 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x827f9a03 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x828049e4 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b2dec3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x82e92977 register_md_personality +EXPORT_SYMBOL vmlinux 0x8305ce9d devm_clk_get +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832183c0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8371daff sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x83869e9a rt6_lookup +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83aa3618 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83d25c38 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x8446d571 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x8457bc58 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f4f7e nand_bch_init +EXPORT_SYMBOL vmlinux 0x847469f8 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84b23429 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x84cf2233 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x84db4b6e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x8557bb76 find_lock_page +EXPORT_SYMBOL vmlinux 0x85624007 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856dd9e1 dquot_disable +EXPORT_SYMBOL vmlinux 0x856f21a0 km_policy_notify +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x857ae3ff blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x857ef611 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x85a2c0fa snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b634c4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8625bd16 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x8639dab7 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x864cc627 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86507b2e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8697afd1 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x869b6978 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c32ef7 sync_inode +EXPORT_SYMBOL vmlinux 0x86caf8b8 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x86cc985f __dquot_transfer +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8708479e tcf_exts_change +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8712515a take_over_console +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872a8d2b ps2_drain +EXPORT_SYMBOL vmlinux 0x873f6c2f scsi_host_put +EXPORT_SYMBOL vmlinux 0x8756209e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x87761f6c nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b26c27 thaw_super +EXPORT_SYMBOL vmlinux 0x87b3c418 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x87c2bbfe ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x87d65193 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x87d87c8e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x87dbba14 ida_get_new +EXPORT_SYMBOL vmlinux 0x87e4ff3c mount_ns +EXPORT_SYMBOL vmlinux 0x87f0ca3e textsearch_register +EXPORT_SYMBOL vmlinux 0x87f17abc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x881ab77d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8853b235 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x887d4a7f snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x88813f9a ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x8893fa5d finish_wait +EXPORT_SYMBOL vmlinux 0x889556f4 security_file_permission +EXPORT_SYMBOL vmlinux 0x88990a98 __bread +EXPORT_SYMBOL vmlinux 0x88b8fe28 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x88dad969 consume_skb +EXPORT_SYMBOL vmlinux 0x88e68c8e inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x890d9fd6 input_flush_device +EXPORT_SYMBOL vmlinux 0x8931fa64 __sock_create +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895887c5 nand_unlock +EXPORT_SYMBOL vmlinux 0x8959d8f0 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x89709a6b __pskb_copy +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x898f4d76 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x89a3c4f4 omap_get_dma_chain_index +EXPORT_SYMBOL vmlinux 0x89d4a4d2 module_layout +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a531f94 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8a6861a3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8d8ac1 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b5221 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x8abf4062 omapdss_dpi_display_disable +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad66426 seq_release_private +EXPORT_SYMBOL vmlinux 0x8ae0b39f dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x8af12ae5 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8b045b12 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8b0fe3f7 __dev_printk +EXPORT_SYMBOL vmlinux 0x8b37821b do_splice_to +EXPORT_SYMBOL vmlinux 0x8b4c3a9e d_make_root +EXPORT_SYMBOL vmlinux 0x8b5eecd2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64c1c3 kick_iocb +EXPORT_SYMBOL vmlinux 0x8b6ece54 simple_getattr +EXPORT_SYMBOL vmlinux 0x8b7388c1 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b7babbf snd_info_register +EXPORT_SYMBOL vmlinux 0x8bb6b6b9 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x8bef91c5 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x8bfc9ded sk_common_release +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0bc6d1 kset_register +EXPORT_SYMBOL vmlinux 0x8c278dd7 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x8c31675e journal_start +EXPORT_SYMBOL vmlinux 0x8c4d6523 omap_dma_chain_a_transfer +EXPORT_SYMBOL vmlinux 0x8c58a811 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8c662859 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x8c72d2d3 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8c793c0b wait_iff_congested +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8cac985c kthread_stop +EXPORT_SYMBOL vmlinux 0x8cb23c19 set_groups +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cde44cb phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8ce03552 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8ce60539 fasync_helper +EXPORT_SYMBOL vmlinux 0x8d018f16 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x8d0e80f6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8d220d0b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x8d464eb2 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d86a730 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8d8edceb __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x8dac4129 dquot_commit +EXPORT_SYMBOL vmlinux 0x8db7654d mb_cache_create +EXPORT_SYMBOL vmlinux 0x8dc2a023 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x8dcb7108 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x8ddd5036 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e022407 netif_napi_add +EXPORT_SYMBOL vmlinux 0x8e0a32f7 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e2dfd3b blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e55848e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8e6f1b01 input_event +EXPORT_SYMBOL vmlinux 0x8e73d94c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8e77ddc5 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x8e8218d5 is_container_init +EXPORT_SYMBOL vmlinux 0x8ebafdba unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8ee6b282 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x8eec5f0b __frontswap_store +EXPORT_SYMBOL vmlinux 0x8f003e8c kill_fasync +EXPORT_SYMBOL vmlinux 0x8f22df3e xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x8f26ecee generic_file_llseek +EXPORT_SYMBOL vmlinux 0x8f2f44b6 noop_fsync +EXPORT_SYMBOL vmlinux 0x8f34a3f7 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8f3f5e14 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f57a159 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5bf374 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6ab814 of_find_property +EXPORT_SYMBOL vmlinux 0x8f6fde02 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f81a739 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fc1f741 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x8fc71bf4 tcp_child_process +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9024115d sk_free +EXPORT_SYMBOL vmlinux 0x9024cf43 bdgrab +EXPORT_SYMBOL vmlinux 0x902e5600 i2c_release_client +EXPORT_SYMBOL vmlinux 0x906a8da5 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x906eb982 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x90a76958 dev_crit +EXPORT_SYMBOL vmlinux 0x90a8a123 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d03ed1 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x90d38635 dev_addr_del +EXPORT_SYMBOL vmlinux 0x90d71479 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x90dd8341 bio_map_kern +EXPORT_SYMBOL vmlinux 0x90ed1717 registered_fb +EXPORT_SYMBOL vmlinux 0x90efe614 tcp_check_req +EXPORT_SYMBOL vmlinux 0x90f91617 free_buffer_head +EXPORT_SYMBOL vmlinux 0x911c96b3 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x9137c871 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9153f45d __ip_dev_find +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x916d0035 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917f3fe8 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x9180de5c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91922341 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x91ccb481 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x91e3a9a7 __frontswap_load +EXPORT_SYMBOL vmlinux 0x91e4b1e1 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x91e81ba5 aio_put_req +EXPORT_SYMBOL vmlinux 0x920008ba serio_unregister_port +EXPORT_SYMBOL vmlinux 0x920664c8 mempool_free +EXPORT_SYMBOL vmlinux 0x9210653d journal_revoke +EXPORT_SYMBOL vmlinux 0x9223349e phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923dfbaa i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x9264ae32 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x92673c64 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x9276b415 block_read_full_page +EXPORT_SYMBOL vmlinux 0x9276e2fd generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x92776493 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x929eecac __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae20bc i2c_master_recv +EXPORT_SYMBOL vmlinux 0x92bbc951 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x92e44a1c prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x92e46cbd blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x92f59183 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930692ff kernel_bind +EXPORT_SYMBOL vmlinux 0x93116b03 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93238763 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x93394611 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x93473ea0 phy_device_free +EXPORT_SYMBOL vmlinux 0x9396bdd2 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a83b76 thaw_bdev +EXPORT_SYMBOL vmlinux 0x93c8c450 dma_find_channel +EXPORT_SYMBOL vmlinux 0x93f66a6c frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x943e8fd2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x944b75d8 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x94644f2f path_get +EXPORT_SYMBOL vmlinux 0x9469fe16 bdev_read_only +EXPORT_SYMBOL vmlinux 0x946e2c58 tty_mutex +EXPORT_SYMBOL vmlinux 0x948549e7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x9493b6c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a8813c input_inject_event +EXPORT_SYMBOL vmlinux 0x94af632e complete_all +EXPORT_SYMBOL vmlinux 0x9526a4c8 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x9534cae4 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9540f91c ilookup5 +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955b1e4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x9584d204 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x95ae0ed7 _dev_info +EXPORT_SYMBOL vmlinux 0x95bd12f3 vfs_readlink +EXPORT_SYMBOL vmlinux 0x95c206b2 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x963276f3 input_register_device +EXPORT_SYMBOL vmlinux 0x964016fd snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x9652525a jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965ad1e4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x965bc19d __free_pages +EXPORT_SYMBOL vmlinux 0x96868818 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96b39b6e omap_start_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0x96b42322 genphy_update_link +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e4c2af mdiobus_scan +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9744aa1d keyring_clear +EXPORT_SYMBOL vmlinux 0x9752e51f dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x979374ab snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a52803 set_anon_super +EXPORT_SYMBOL vmlinux 0x97acbf44 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b5c256 __d_drop +EXPORT_SYMBOL vmlinux 0x97ba1397 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x97df1067 module_put +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980a912c grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x980cdc4a truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9828be45 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x98404389 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9895cb01 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x98993e07 init_special_inode +EXPORT_SYMBOL vmlinux 0x98a39f30 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x98c4ef1e ihold +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9907616c mddev_congested +EXPORT_SYMBOL vmlinux 0x991bda12 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x992e9917 nf_log_packet +EXPORT_SYMBOL vmlinux 0x9942b7ff elv_register_queue +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99537c09 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963d8ff bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x9967d6aa rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x996c2343 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x997185ba blk_free_tags +EXPORT_SYMBOL vmlinux 0x9979a055 cdev_alloc +EXPORT_SYMBOL vmlinux 0x998eee8f keyring_search +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ac59f4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c83212 path_is_under +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e63794 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a396cb3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9a4751e5 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x9a521154 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x9a5c7ab2 aio_complete +EXPORT_SYMBOL vmlinux 0x9a6cd279 clk_unregister +EXPORT_SYMBOL vmlinux 0x9a6f8b1b d_genocide +EXPORT_SYMBOL vmlinux 0x9a8dc6db lg_local_lock +EXPORT_SYMBOL vmlinux 0x9a9447ca xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x9aa787c0 fb_set_var +EXPORT_SYMBOL vmlinux 0x9aa9c607 nobh_writepage +EXPORT_SYMBOL vmlinux 0x9ab329c5 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9abae500 udp_seq_open +EXPORT_SYMBOL vmlinux 0x9abbdb69 clk_set_parent +EXPORT_SYMBOL vmlinux 0x9ad2a691 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9b164f05 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b875fad of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9b96e044 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bac370f dev_uc_sync +EXPORT_SYMBOL vmlinux 0x9bc0476e build_skb +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bfae2bc netdev_crit +EXPORT_SYMBOL vmlinux 0x9c054e18 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c15c011 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9c2913fc alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x9c2f63c7 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x9c581e49 dev_addr_init +EXPORT_SYMBOL vmlinux 0x9c5b17a5 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9c7077bd enable_hlt +EXPORT_SYMBOL vmlinux 0x9c91218d free_task +EXPORT_SYMBOL vmlinux 0x9c91f286 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x9c990c23 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x9c9e178c xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x9cb37472 arp_send +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cd2e7d0 gpmc_nand_read +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef9585 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d105722 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4949a9 free_netdev +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d729741 scsi_free_command +EXPORT_SYMBOL vmlinux 0x9d7980e4 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x9d9a88a2 register_con_driver +EXPORT_SYMBOL vmlinux 0x9dab65cd inet_shutdown +EXPORT_SYMBOL vmlinux 0x9db20882 blk_end_request +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1e9de7 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2c6cf4 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e969ad3 force_sig +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea03b33 dev_close +EXPORT_SYMBOL vmlinux 0x9eab9a23 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9ec6120e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x9ecaf7f9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9ed660f4 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edc694b set_user_nice +EXPORT_SYMBOL vmlinux 0x9ef7e5cc bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9efcbc32 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x9f11b5ac free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f435db0 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f4f4b27 dev_mc_del +EXPORT_SYMBOL vmlinux 0x9f6626f1 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x9f6f5fc7 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9f7e8ddf sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x9f8ea2a8 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f99d9bf ida_pre_get +EXPORT_SYMBOL vmlinux 0x9f9d0798 icmpv6_send +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbb9874 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe76a14 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x9ff5e8ae netlink_ack +EXPORT_SYMBOL vmlinux 0x9ff956af inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa00053ad generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa0114ac8 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xa01e320d __netif_schedule +EXPORT_SYMBOL vmlinux 0xa047dc17 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa054e5cd vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa06ee39e scm_fp_dup +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0a2c0ce scsi_device_put +EXPORT_SYMBOL vmlinux 0xa0a861fc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa0ad3ab5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceaa92 kmap +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d32e06 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa0e2d895 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa10177bb tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa126e4af elv_rb_del +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1684773 amba_device_register +EXPORT_SYMBOL vmlinux 0xa1817bc3 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa18f91d6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xa19ac325 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xa1b44aa9 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d5c041 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa1e59b2a bio_unmap_user +EXPORT_SYMBOL vmlinux 0xa1e73813 kfree_skb +EXPORT_SYMBOL vmlinux 0xa1fcc84a tty_register_device +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2359127 vfs_open +EXPORT_SYMBOL vmlinux 0xa23914cd __napi_schedule +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa267c1f2 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2867ac5 omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0xa28bbbaf bio_put +EXPORT_SYMBOL vmlinux 0xa28d9e7b key_revoke +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2aad002 amba_release_regions +EXPORT_SYMBOL vmlinux 0xa3019bb4 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa3087abc serio_interrupt +EXPORT_SYMBOL vmlinux 0xa30e6f35 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xa32acfa9 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33493ad tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33f9c8e seq_read +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa352c00d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36aa146 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xa3777688 dquot_enable +EXPORT_SYMBOL vmlinux 0xa4011430 send_sig_info +EXPORT_SYMBOL vmlinux 0xa41e0e4c simple_unlink +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa446abb5 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47b6c65 poll_freewait +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b3b85a sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4d415d7 clk_set_rate +EXPORT_SYMBOL vmlinux 0xa4dda7a3 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa4e045fa scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xa4e0778e input_set_capability +EXPORT_SYMBOL vmlinux 0xa4f2db5e genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xa5092120 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa522e619 tcf_register_action +EXPORT_SYMBOL vmlinux 0xa529e2c3 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa53a5ec2 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xa56210e0 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa563b76b sock_i_ino +EXPORT_SYMBOL vmlinux 0xa5747805 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa585e496 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa592980a scsi_put_command +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ab8a11 scsi_get_command +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5db18f9 sock_rfree +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6411cea unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa65c212c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa674ced5 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xa675436a bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68fbfef dev_uc_init +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ab1c43 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xa6b93b26 redraw_screen +EXPORT_SYMBOL vmlinux 0xa6c9bbfd unlock_rename +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa724db81 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xa7481f33 fsync_bdev +EXPORT_SYMBOL vmlinux 0xa7716564 d_add_ci +EXPORT_SYMBOL vmlinux 0xa785950a sock_create +EXPORT_SYMBOL vmlinux 0xa78b9195 nf_log_register +EXPORT_SYMBOL vmlinux 0xa7c87a60 mtd_concat_create +EXPORT_SYMBOL vmlinux 0xa7f2c5ea prepare_creds +EXPORT_SYMBOL vmlinux 0xa7f3f694 tcf_em_register +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8380d34 kernel_execve +EXPORT_SYMBOL vmlinux 0xa840f58a journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87b1011 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xa8cde9a7 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xa8f05fd2 try_module_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa908522b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa90bcb85 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xa94fc942 generic_write_end +EXPORT_SYMBOL vmlinux 0xa963babc snd_card_proc_new +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa9b504c9 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xa9b9f312 genphy_suspend +EXPORT_SYMBOL vmlinux 0xa9dc5272 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa9e008a7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa9e14cac generic_listxattr +EXPORT_SYMBOL vmlinux 0xaa021ae0 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xaa1158a7 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0xaa1db072 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xaa32b823 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xaa53517a kill_block_super +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa5eaeb7 kern_path_create +EXPORT_SYMBOL vmlinux 0xaa640f2f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa74d1b3 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xaa8d23c7 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xaa9f5b56 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaad120c7 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafd68a9 vfs_readdir +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab57f8b0 omapfb_update_window +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab895605 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xab9ed595 kobject_put +EXPORT_SYMBOL vmlinux 0xaba24935 proc_mkdir +EXPORT_SYMBOL vmlinux 0xaba4e1a5 bdevname +EXPORT_SYMBOL vmlinux 0xabb6c600 mount_pseudo +EXPORT_SYMBOL vmlinux 0xabba8c7b fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabfcfac5 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xabff516a pid_task +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac18e4ea kset_unregister +EXPORT_SYMBOL vmlinux 0xac36abc2 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xac5f113d cpu_all_bits +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xacafef80 amba_find_device +EXPORT_SYMBOL vmlinux 0xacc4824c skb_pad +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd69523 netif_skb_features +EXPORT_SYMBOL vmlinux 0xaceb9c69 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1041d7 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xad2af5e6 make_EII_client +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad8049d7 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xad80b2ef set_device_ro +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada48d8c sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xada6b3bc add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xada928b1 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadea832a lock_may_write +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xae22bff0 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xae434ffc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xae531f84 register_sysctl +EXPORT_SYMBOL vmlinux 0xae5f5492 register_exec_domain +EXPORT_SYMBOL vmlinux 0xae61e30f xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xae66c99a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae81bbd7 path_put +EXPORT_SYMBOL vmlinux 0xae9b7941 seq_escape +EXPORT_SYMBOL vmlinux 0xae9d7f8c scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xaea46535 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xaea9b5e8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xaeaa7655 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee9e4c8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xaf1a09f2 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xaf1fd789 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xaf31224d snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xaf3d3a0b writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf52da8d tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf99e34b ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xafa05144 omap_dss_register_driver +EXPORT_SYMBOL vmlinux 0xafdc99ae udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xb0052381 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb01d7636 get_fs_type +EXPORT_SYMBOL vmlinux 0xb02d67fd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xb0339533 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xb0532e93 sound_class +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e63bf2 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb0e6d6de call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb104a2d1 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xb108e6a3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xb1112068 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb126e37a udp_prot +EXPORT_SYMBOL vmlinux 0xb14761d5 user_path_at +EXPORT_SYMBOL vmlinux 0xb14897d9 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb16a1e3e inet_release +EXPORT_SYMBOL vmlinux 0xb16fe7b3 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb17a108d phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xb17d9cf7 ip6_xmit +EXPORT_SYMBOL vmlinux 0xb18e6948 omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1adf2b3 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d06b4d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb1d849da blkdev_fsync +EXPORT_SYMBOL vmlinux 0xb1e61df2 clear_nlink +EXPORT_SYMBOL vmlinux 0xb1ed6e20 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb214ef53 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb250d9b0 vm_event_states +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2a90d75 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb2afc3d5 inet_getname +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cc71e9 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb318ec49 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb3356a4f single_release +EXPORT_SYMBOL vmlinux 0xb36e891c sk_run_filter +EXPORT_SYMBOL vmlinux 0xb371bda1 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb38263aa submit_bh +EXPORT_SYMBOL vmlinux 0xb3a08c40 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb3b0cd72 skb_unlink +EXPORT_SYMBOL vmlinux 0xb3fc1c7f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb438757a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb4419549 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb45ee96c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4a42f67 lro_flush_all +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4bdf334 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xb4c8f38a omap_dma_chain_status +EXPORT_SYMBOL vmlinux 0xb4d69f47 inode_init_once +EXPORT_SYMBOL vmlinux 0xb4d8ab86 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xb4def0f8 xfrm_input +EXPORT_SYMBOL vmlinux 0xb5080124 page_put_link +EXPORT_SYMBOL vmlinux 0xb52388e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb5435b58 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5738551 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb60cf95c filp_close +EXPORT_SYMBOL vmlinux 0xb60dca53 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xb64435c0 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xb64e07af gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb6557145 __netdev_printk +EXPORT_SYMBOL vmlinux 0xb661a04e vfsmount_lock +EXPORT_SYMBOL vmlinux 0xb663e77b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb699811d eth_type_trans +EXPORT_SYMBOL vmlinux 0xb69adc93 dev_add_pack +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7fd17 request_key_async +EXPORT_SYMBOL vmlinux 0xb6a84053 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb6afbc3f ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xb6b279ca blk_start_request +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cb4764 truncate_setsize +EXPORT_SYMBOL vmlinux 0xb70fbdb1 blk_put_queue +EXPORT_SYMBOL vmlinux 0xb72f8be8 d_alloc +EXPORT_SYMBOL vmlinux 0xb7504e0f read_cache_page +EXPORT_SYMBOL vmlinux 0xb7586226 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xb758ee43 check_disk_change +EXPORT_SYMBOL vmlinux 0xb75da1b2 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xb7692131 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xb77a7c47 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xb78b3626 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xb7a6cf61 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7d858e6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xb7ded971 default_llseek +EXPORT_SYMBOL vmlinux 0xb8026cbf inet_frag_find +EXPORT_SYMBOL vmlinux 0xb811e32e bioset_free +EXPORT_SYMBOL vmlinux 0xb8184db9 bio_pair_release +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81beaec snd_card_free +EXPORT_SYMBOL vmlinux 0xb81ecb7f omapdss_sdi_display_disable +EXPORT_SYMBOL vmlinux 0xb81fd3be idr_find +EXPORT_SYMBOL vmlinux 0xb82af13a lease_get_mtime +EXPORT_SYMBOL vmlinux 0xb82de169 proc_create_data +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb86a470c dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb897a616 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb89edda2 kunmap_high +EXPORT_SYMBOL vmlinux 0xb8a58b40 skb_append +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8ae0094 is_bad_inode +EXPORT_SYMBOL vmlinux 0xb8e74b14 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f317e5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb90b43a4 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xb90f8ffb page_symlink +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb949c954 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb96dd0f3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98fcb1e kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb9a457b3 netlink_unicast +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9ae18d5 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xb9c25982 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb9cbb8a4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xb9d6a701 generic_readlink +EXPORT_SYMBOL vmlinux 0xb9e1ea5c eth_header_cache +EXPORT_SYMBOL vmlinux 0xb9e52429 __wake_up +EXPORT_SYMBOL vmlinux 0xba330556 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xba35b3dd tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xbaac427c get_mem_type +EXPORT_SYMBOL vmlinux 0xbab17d04 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xbab92b91 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xbac6d33d splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xbae47e67 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xbaf04a46 devm_clk_put +EXPORT_SYMBOL vmlinux 0xbaf5d772 tty_throttle +EXPORT_SYMBOL vmlinux 0xbafcd342 blk_init_tags +EXPORT_SYMBOL vmlinux 0xbb07ade4 km_new_mapping +EXPORT_SYMBOL vmlinux 0xbb0f0e09 __put_cred +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb2643f0 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xbb2b4612 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xbb5b41d4 mmc_request_done +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb79c91e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbb7b043d kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaf74d7 sock_i_uid +EXPORT_SYMBOL vmlinux 0xbbe838bb fifo_set_limit +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc860222 gpmc_read_status +EXPORT_SYMBOL vmlinux 0xbcb53d9b neigh_destroy +EXPORT_SYMBOL vmlinux 0xbcdf680a scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xbd2abe00 scsi_unregister +EXPORT_SYMBOL vmlinux 0xbd31620c vfs_create +EXPORT_SYMBOL vmlinux 0xbd6b36d3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xbd92c690 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xbdb428ef mntput +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbdf7c9b7 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe15e650 write_one_page +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe390c04 dput +EXPORT_SYMBOL vmlinux 0xbe5fe92a get_gendisk +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe668b08 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xbe76f362 netdev_alert +EXPORT_SYMBOL vmlinux 0xbe8b28bb md_register_thread +EXPORT_SYMBOL vmlinux 0xbee7d4b2 snd_card_create +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefac0ef bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xbf1faebe mutex_trylock +EXPORT_SYMBOL vmlinux 0xbf202f87 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xbf491189 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf819c56 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaa7c32 do_map_probe +EXPORT_SYMBOL vmlinux 0xbfabafcf __devm_request_region +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfcc5245 skb_push +EXPORT_SYMBOL vmlinux 0xbfda3c40 migrate_page +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc015ce4a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc01be5ff fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc05f70f7 inet_addr_type +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06ec2c8 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08b4157 simple_map_init +EXPORT_SYMBOL vmlinux 0xc08f8992 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a7098e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xc0bf1103 input_register_handler +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d3b74c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc0ef970d snd_component_add +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131379f snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xc1481fd6 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc14f39e6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc1509363 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc150cca3 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xc1577e53 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17b6a0e try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xc1903cb3 sget +EXPORT_SYMBOL vmlinux 0xc1b76967 release_pages +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d0cf50 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xc21334b9 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc2220e8d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc25076c0 kobject_del +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2748881 kobject_init +EXPORT_SYMBOL vmlinux 0xc2a852a0 clk_disable +EXPORT_SYMBOL vmlinux 0xc2bd012d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc2cb4dba mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e058a4 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f13a1f request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc37d20b6 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc37d2d7b mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc38246c3 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc38724d3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc3890b97 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc3abf8b3 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc3c94b6b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc3ed71dd scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc4185c4f flush_dcache_page +EXPORT_SYMBOL vmlinux 0xc41d21ea tc_classify_compat +EXPORT_SYMBOL vmlinux 0xc42b2293 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xc42d74a3 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xc45ef616 idr_for_each +EXPORT_SYMBOL vmlinux 0xc48413f0 init_buffer +EXPORT_SYMBOL vmlinux 0xc491b540 journal_force_commit +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49ad5f1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc49d6fa1 sock_no_getname +EXPORT_SYMBOL vmlinux 0xc4a923e5 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xc4ae6dbf __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xc4beebba blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xc4e8b63a bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc50fff86 security_mmap_file +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc5337b72 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc539f901 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xc54bc3c9 dqstats +EXPORT_SYMBOL vmlinux 0xc556ef02 kmap_high +EXPORT_SYMBOL vmlinux 0xc5669f48 request_firmware +EXPORT_SYMBOL vmlinux 0xc56fcffc save_mount_options +EXPORT_SYMBOL vmlinux 0xc5b51a25 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc5b6ea0b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc5b80112 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc5b86b53 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xc5c8c8ad omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xc5d514f4 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f94b5d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc5fa683d inet_frags_init +EXPORT_SYMBOL vmlinux 0xc601f8df snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0xc6042d35 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc6184045 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6338ba2 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc64348f0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc65364f9 dql_completed +EXPORT_SYMBOL vmlinux 0xc672a242 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xc6af2549 input_release_device +EXPORT_SYMBOL vmlinux 0xc6c8dc10 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc70756d3 dev_uc_add +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc74600f5 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xc75db041 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc7623b1d ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0xc7751111 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a9b21c snd_jack_report +EXPORT_SYMBOL vmlinux 0xc7aff3e6 uart_match_port +EXPORT_SYMBOL vmlinux 0xc7e76a1f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ed8b7d netdev_err +EXPORT_SYMBOL vmlinux 0xc80dfa31 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83bbefc register_sound_special_device +EXPORT_SYMBOL vmlinux 0xc83d9242 sock_wfree +EXPORT_SYMBOL vmlinux 0xc8452441 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85edb9e snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xc86b0738 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc89f5752 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc8b1be3b block_write_end +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b823b3 dev_load +EXPORT_SYMBOL vmlinux 0xc8f4a67f textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc90c7518 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc90d6ce5 skb_store_bits +EXPORT_SYMBOL vmlinux 0xc9142293 omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0xc921235e __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xc9243de6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xc9442b59 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xc95830f6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc9773d02 __f_setown +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a39560 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc9e25f28 d_set_d_op +EXPORT_SYMBOL vmlinux 0xc9e4caab netdev_emerg +EXPORT_SYMBOL vmlinux 0xc9f2d860 skb_gso_segment +EXPORT_SYMBOL vmlinux 0xca031897 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xca1e3f57 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xca49eb3d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xca4b4fd6 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xca515475 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca650ef4 scsi_print_command +EXPORT_SYMBOL vmlinux 0xca7e08c8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xcab17e69 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xcacc4278 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xcaecf806 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xcb53f3f6 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xcb5537c0 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xcb5bf683 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb736482 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd83b43 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xcbe1d03c sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xcbf35244 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xcbf58bc6 snd_timer_close +EXPORT_SYMBOL vmlinux 0xcc0072a8 tty_port_open +EXPORT_SYMBOL vmlinux 0xcc18d50c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3e392d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc79c19c sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc9a916b amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xccb775f2 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcce29370 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xccfbb364 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xcd02bfbc inet_bind +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd46ca3c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xcd4b732f bit_waitqueue +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd67f8b6 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xcd76d8e7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xcd7cb470 arp_tbl +EXPORT_SYMBOL vmlinux 0xcda78561 register_filesystem +EXPORT_SYMBOL vmlinux 0xcdb87f8e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xcdc5cec5 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xcddc09eb console_start +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce09d5c8 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce24e23e d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2870f0 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce587748 nand_correct_data +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce9a18f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xce9ab646 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xcea899ea down +EXPORT_SYMBOL vmlinux 0xcece52fd key_link +EXPORT_SYMBOL vmlinux 0xcedacdf2 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xcef3576a cpu_user +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf21e89e request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xcf25926d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcf63a406 dev_get_flags +EXPORT_SYMBOL vmlinux 0xcf7f7dcd bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xcfa473f6 dcb_setapp +EXPORT_SYMBOL vmlinux 0xcfafee12 deactivate_super +EXPORT_SYMBOL vmlinux 0xcfbac5ae snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xcfbee619 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff08833 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd03532f4 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd03bdc45 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0446541 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd0600b30 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd07767a4 phy_attach +EXPORT_SYMBOL vmlinux 0xd07b915b ip_ct_attach +EXPORT_SYMBOL vmlinux 0xd07db919 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xd09cfc90 blk_register_region +EXPORT_SYMBOL vmlinux 0xd09dc10f simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b5acd3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0da52b2 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fd51df bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd0fed2d4 follow_pfn +EXPORT_SYMBOL vmlinux 0xd113502d sk_wait_data +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd152bc0f md_check_recovery +EXPORT_SYMBOL vmlinux 0xd1576dd3 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xd162f540 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xd169b8ba dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18e33d3 sock_no_connect +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a139fe lg_global_lock +EXPORT_SYMBOL vmlinux 0xd1c3a60a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd1ca1731 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd1eef71f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd20846f5 ip6_route_output +EXPORT_SYMBOL vmlinux 0xd20ce1d0 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd236178f kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xd24949a0 mpage_writepages +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26338c6 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2ac02c6 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xd2cee4aa shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd2e3089f lock_sock_nested +EXPORT_SYMBOL vmlinux 0xd309792a qdisc_list_del +EXPORT_SYMBOL vmlinux 0xd3149376 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3610cf3 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd369192d elv_rb_add +EXPORT_SYMBOL vmlinux 0xd36a27d6 __devm_release_region +EXPORT_SYMBOL vmlinux 0xd37bf41f snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xd382019f register_sysctl_table +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd39f3e3f sock_kfree_s +EXPORT_SYMBOL vmlinux 0xd3cb82d2 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd42327ee of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xd4331c64 sock_update_classid +EXPORT_SYMBOL vmlinux 0xd439fd2e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xd460dda3 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xd4a644c3 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd4bc7c9b snd_cards +EXPORT_SYMBOL vmlinux 0xd4c2dd3b snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xd4eb7456 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xd50071f4 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xd50e5ee3 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd52a49b1 kern_path +EXPORT_SYMBOL vmlinux 0xd52b6ee3 mdiobus_free +EXPORT_SYMBOL vmlinux 0xd550a602 journal_flush +EXPORT_SYMBOL vmlinux 0xd561cbed dev_change_flags +EXPORT_SYMBOL vmlinux 0xd56e1b60 tty_set_operations +EXPORT_SYMBOL vmlinux 0xd56e9485 omap_set_dma_dest_index +EXPORT_SYMBOL vmlinux 0xd5700053 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xd5879a5f xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xd591dbba unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5d7e375 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd5d91652 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd5dc10e2 genphy_read_status +EXPORT_SYMBOL vmlinux 0xd5e8ef6b blk_make_request +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62eca04 cont_write_begin +EXPORT_SYMBOL vmlinux 0xd63494a3 dump_seek +EXPORT_SYMBOL vmlinux 0xd63e53eb kern_unmount +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd663b162 d_find_alias +EXPORT_SYMBOL vmlinux 0xd6649268 lock_rename +EXPORT_SYMBOL vmlinux 0xd6656da2 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd678233c journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd69ec7fe __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd6aa4d6d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xd6c6295c mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xd6d42d27 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd6ec9545 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0da41 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xd715fbf2 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd73281bc max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd757bca8 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd75cdbcc make_bad_inode +EXPORT_SYMBOL vmlinux 0xd76b9a0a ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78e13b9 dev_gro_receive +EXPORT_SYMBOL vmlinux 0xd79385d7 dev_notice +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ad4a70 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd7c0663b set_nlink +EXPORT_SYMBOL vmlinux 0xd7c80428 neigh_for_each +EXPORT_SYMBOL vmlinux 0xd7e2bffb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7fa46a1 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xd8348d73 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd861d45f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd886d53e netdev_change_features +EXPORT_SYMBOL vmlinux 0xd887e786 mmc_erase +EXPORT_SYMBOL vmlinux 0xd8b984c9 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd8bacb7a inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8dc1c94 input_grab_device +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f040f1 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd90503ca snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xd91846ff nf_log_unregister +EXPORT_SYMBOL vmlinux 0xd918d180 nf_afinfo +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9437eb2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96b6dd1 omap_device_get_by_hwmod_name +EXPORT_SYMBOL vmlinux 0xd96c3d8c skb_trim +EXPORT_SYMBOL vmlinux 0xd9850607 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9982048 ip_route_input_common +EXPORT_SYMBOL vmlinux 0xd9aa27a2 mempool_create_node +EXPORT_SYMBOL vmlinux 0xd9cd8ddb map_destroy +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9e15faa security_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e1a956 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e35cc6 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd9f8bbe1 misc_register +EXPORT_SYMBOL vmlinux 0xda03e1fe __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xda0e48f1 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xda22705e tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xda278249 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xda58c396 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xda5af5eb snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xda677b54 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xda6bff42 ps2_end_command +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaadc051 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xdab04b53 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xdab39954 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xdb0df8da generic_setxattr +EXPORT_SYMBOL vmlinux 0xdb2178c7 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb68153f udp_poll +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb715046 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xdb71b872 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb779077 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf667f __elv_add_request +EXPORT_SYMBOL vmlinux 0xdbe2f014 bdi_init +EXPORT_SYMBOL vmlinux 0xdbe48098 fb_blank +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc46b485 clk_register +EXPORT_SYMBOL vmlinux 0xdc5622ba simple_write_end +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc798d37 __mutex_init +EXPORT_SYMBOL vmlinux 0xdc8d9da4 kunmap +EXPORT_SYMBOL vmlinux 0xdc963c67 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd69f39 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0e4d14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd515a30 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xdd6056ff fail_migrate_page +EXPORT_SYMBOL vmlinux 0xdd780af7 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd9ab324 d_drop +EXPORT_SYMBOL vmlinux 0xddb1ed57 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xddc6405f mount_bdev +EXPORT_SYMBOL vmlinux 0xddcab48c mpage_readpage +EXPORT_SYMBOL vmlinux 0xdddf622a set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xde0bb028 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xde15c042 omap_set_dma_src_index +EXPORT_SYMBOL vmlinux 0xde2ae68e tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xde3c68a6 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xde4becba dcache_readdir +EXPORT_SYMBOL vmlinux 0xde53677e unlock_page +EXPORT_SYMBOL vmlinux 0xde570f5b find_inode_number +EXPORT_SYMBOL vmlinux 0xde692d94 omap_get_dma_chain_src_pos +EXPORT_SYMBOL vmlinux 0xde8c763d cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdecfc0ed blkdev_get +EXPORT_SYMBOL vmlinux 0xded8cab6 log_wait_commit +EXPORT_SYMBOL vmlinux 0xdef169ec scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdf006bb2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xdf00e7e2 journal_restart +EXPORT_SYMBOL vmlinux 0xdf1ef69f wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf667daf vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdf69d64c ps2_init +EXPORT_SYMBOL vmlinux 0xdf76946c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9a3246 netif_device_attach +EXPORT_SYMBOL vmlinux 0xdfa6d098 input_get_keycode +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfeb4e61 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xdffbbd26 netif_device_detach +EXPORT_SYMBOL vmlinux 0xdffe8e4e unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe02220c9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe02ae9d2 release_firmware +EXPORT_SYMBOL vmlinux 0xe04a3d7a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe04ac069 dev_addr_add +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0519376 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06cfc57 bdput +EXPORT_SYMBOL vmlinux 0xe070d806 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0a81135 secpath_dup +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bdcc84 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe0eb38a8 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xe0f6aa9e nand_default_bbt +EXPORT_SYMBOL vmlinux 0xe106154f omap_vram_get_info +EXPORT_SYMBOL vmlinux 0xe1080dbd tty_write_room +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f4561 drop_nlink +EXPORT_SYMBOL vmlinux 0xe12bd949 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xe1644b2e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe166646b dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xe16b893b mutex_lock +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe19c51cb lookup_hash +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe213222b unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe216b261 elv_add_request +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2441279 d_rehash +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2554df8 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe25a3207 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe25caca2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xe296d233 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xe2a3e59f km_state_notify +EXPORT_SYMBOL vmlinux 0xe2b90045 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xe2c179e7 udp_disconnect +EXPORT_SYMBOL vmlinux 0xe2c37258 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xe2d1913e tcf_action_exec +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e48d17 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2ed045e of_parse_phandle +EXPORT_SYMBOL vmlinux 0xe2fa877f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3225c33 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xe33a579a netlink_set_err +EXPORT_SYMBOL vmlinux 0xe33f2237 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xe34b4242 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe387fdf9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xe38ae976 d_alloc_name +EXPORT_SYMBOL vmlinux 0xe3a1d352 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe3d291a5 tty_port_close +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dd24a5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe40abcfa mmc_start_req +EXPORT_SYMBOL vmlinux 0xe4127664 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe4394876 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe45acc3d pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe460df09 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xe47f8f59 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4b41f7c snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xe4c4089d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4cb59ca __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe4cca265 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe4e1804f xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xe4e22326 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xe4ff8d44 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe50272d8 noop_qdisc +EXPORT_SYMBOL vmlinux 0xe5029346 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe5074439 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe50acac2 neigh_update +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe522e2f3 dev_driver_string +EXPORT_SYMBOL vmlinux 0xe5231ae1 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe54dbdc3 follow_down_one +EXPORT_SYMBOL vmlinux 0xe55eec63 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59e6dd7 vfs_rename +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d58c84 irq_set_chip +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5df5121 skb_checksum +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fcef47 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe6317d75 input_unregister_device +EXPORT_SYMBOL vmlinux 0xe631934d bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe6336a29 unregister_console +EXPORT_SYMBOL vmlinux 0xe671b058 iget_failed +EXPORT_SYMBOL vmlinux 0xe67409c1 mii_link_ok +EXPORT_SYMBOL vmlinux 0xe6744a89 omap_clear_dma +EXPORT_SYMBOL vmlinux 0xe691b348 dev_get_stats +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69e3856 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xe6a27fba wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xe6beae45 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6d0fd38 do_sync_read +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fbe96e proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7144d32 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe72a5c93 vm_mmap +EXPORT_SYMBOL vmlinux 0xe73d0fde sleep_on +EXPORT_SYMBOL vmlinux 0xe74f8a14 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xe7576dfb phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xe761b2cc netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xe76e19b8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9e446 pipe_to_file +EXPORT_SYMBOL vmlinux 0xe7af7153 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe7d42d0b delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f4e337 nand_lock +EXPORT_SYMBOL vmlinux 0xe80c9191 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe80e8691 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xe815c6b6 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xe82d1c87 log_start_commit +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87ed1ce idr_replace +EXPORT_SYMBOL vmlinux 0xe893c4af snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xe8a99d5e dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bf783c mii_check_media +EXPORT_SYMBOL vmlinux 0xe8d0683c write_cache_pages +EXPORT_SYMBOL vmlinux 0xe8d63b2e generic_file_open +EXPORT_SYMBOL vmlinux 0xe8e6dd74 block_commit_write +EXPORT_SYMBOL vmlinux 0xe9046d8e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe90496d6 eth_header +EXPORT_SYMBOL vmlinux 0xe9068600 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94605ac dentry_unhash +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96b35d0 get_disk +EXPORT_SYMBOL vmlinux 0xe96d85a2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xe96f8e59 sock_no_poll +EXPORT_SYMBOL vmlinux 0xe97d7c6b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xe97ec086 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe9b05f86 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe9ce41b1 init_net +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1970bc kmem_cache_create +EXPORT_SYMBOL vmlinux 0xea204ef3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xea3b6c42 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xea6c417d rtnl_notify +EXPORT_SYMBOL vmlinux 0xea6f48d1 clear_inode +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea876945 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9fb9df rename_lock +EXPORT_SYMBOL vmlinux 0xeac417f7 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xead49e27 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaea334a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xeb15ce9e journal_init_inode +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb378013 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xeb3cb802 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb61ec51 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xeb959693 flush_signals +EXPORT_SYMBOL vmlinux 0xeb98fe8d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xeba303f6 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebcc935c of_dev_get +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebf780da uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfe95db journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec26135b tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xec3cb70c inet_stream_ops +EXPORT_SYMBOL vmlinux 0xec475a80 km_state_expired +EXPORT_SYMBOL vmlinux 0xec485a97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6a4d04 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xec9f1bf9 skb_put +EXPORT_SYMBOL vmlinux 0xecba1490 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xecbcf115 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xecd85338 md_error +EXPORT_SYMBOL vmlinux 0xece8faf6 nla_reserve +EXPORT_SYMBOL vmlinux 0xed266cb7 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed37348c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xed3a93ab fd_install +EXPORT_SYMBOL vmlinux 0xed44b99c xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xed854dac omap_stop_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc338b8 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xeddbf3d5 kthread_bind +EXPORT_SYMBOL vmlinux 0xedecd5af mii_check_link +EXPORT_SYMBOL vmlinux 0xedf8b17c do_splice_direct +EXPORT_SYMBOL vmlinux 0xee025581 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee15ff03 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee3b0e8f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xee3f35e9 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xee4b3e38 create_proc_entry +EXPORT_SYMBOL vmlinux 0xee4fd7b1 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xee596802 generic_write_checks +EXPORT_SYMBOL vmlinux 0xee861386 security_path_link +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed89d32 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xeedff491 __break_lease +EXPORT_SYMBOL vmlinux 0xef26c159 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xef3910dc d_obtain_alias +EXPORT_SYMBOL vmlinux 0xef3bc247 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xef75f942 read_cache_pages +EXPORT_SYMBOL vmlinux 0xef7b8cd9 fb_get_mode +EXPORT_SYMBOL vmlinux 0xefb66a95 omap_request_dma_chain +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff179f1 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xeff49f37 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xeffc3e12 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0134c20 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf068c994 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xf0881858 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xf09b45fb seq_puts +EXPORT_SYMBOL vmlinux 0xf0cbf579 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xf0cc070f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xf0d2216b dquot_resume +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0f9e550 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xf0fc826c new_inode +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf10b7955 stop_tty +EXPORT_SYMBOL vmlinux 0xf1192185 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf125fe83 module_refcount +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1c700d1 mmc_add_host +EXPORT_SYMBOL vmlinux 0xf1ca44c6 tty_register_driver +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcf3fd nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1eb42b2 napi_get_frags +EXPORT_SYMBOL vmlinux 0xf1f44778 scsi_register +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210b80f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf21bc94d set_binfmt +EXPORT_SYMBOL vmlinux 0xf2251d49 vfs_write +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25a94dc genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf26df746 omap_vram_free +EXPORT_SYMBOL vmlinux 0xf295ca65 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b80c28 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xf2b9ed2b give_up_console +EXPORT_SYMBOL vmlinux 0xf2e0a73a snd_card_unref +EXPORT_SYMBOL vmlinux 0xf2e5a880 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf2f2a569 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf2f63e74 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31c8008 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xf3227ba1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf3234334 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf351cb1f vfs_llseek +EXPORT_SYMBOL vmlinux 0xf3559cf7 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf388944d file_sb_list_del +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390e2a6 blkdev_put +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3a3e15b page_address +EXPORT_SYMBOL vmlinux 0xf3a56dc6 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e0d359 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf3e2b970 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf3f70af0 inet_listen +EXPORT_SYMBOL vmlinux 0xf3fffbc8 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf4076a1c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf409e08a filemap_flush +EXPORT_SYMBOL vmlinux 0xf4104a26 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf44c2e0b freezing_slow_path +EXPORT_SYMBOL vmlinux 0xf45cbd76 kill_pid +EXPORT_SYMBOL vmlinux 0xf471a5c2 blk_put_request +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4a1427e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfcc97 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xf4e7f4b0 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f37196 dst_alloc +EXPORT_SYMBOL vmlinux 0xf4ffea60 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf51212c4 i2c_use_client +EXPORT_SYMBOL vmlinux 0xf52e15c1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5784987 con_is_bound +EXPORT_SYMBOL vmlinux 0xf5a3e1c6 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf5ae3f81 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5cebce3 eth_header_parse +EXPORT_SYMBOL vmlinux 0xf5d70668 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xf5df134c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60fec9f ether_setup +EXPORT_SYMBOL vmlinux 0xf61cdfc1 __page_symlink +EXPORT_SYMBOL vmlinux 0xf62a388f backlight_force_update +EXPORT_SYMBOL vmlinux 0xf633ce9f lock_sock_fast +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf646f89e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xf647f06a ppp_register_channel +EXPORT_SYMBOL vmlinux 0xf648dfe6 may_umount +EXPORT_SYMBOL vmlinux 0xf6511f4c udp_sendmsg +EXPORT_SYMBOL vmlinux 0xf6761e31 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xf67c24f2 mount_nodev +EXPORT_SYMBOL vmlinux 0xf67c8741 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf698e12f genl_unregister_ops +EXPORT_SYMBOL vmlinux 0xf6a3253b fb_class +EXPORT_SYMBOL vmlinux 0xf6a7dceb phy_start +EXPORT_SYMBOL vmlinux 0xf6b8567d downgrade_write +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d046da key_put +EXPORT_SYMBOL vmlinux 0xf6d7e5d6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6eef04d inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf74ecc5d insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75d7990 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf777397f __bforget +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78306d3 d_validate +EXPORT_SYMBOL vmlinux 0xf78478a4 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf792d7e3 kobject_get +EXPORT_SYMBOL vmlinux 0xf794311c mntget +EXPORT_SYMBOL vmlinux 0xf79c9fa3 omap_vram_alloc +EXPORT_SYMBOL vmlinux 0xf7c61815 get_omap3_evm_rev +EXPORT_SYMBOL vmlinux 0xf7dc813f iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xf7e7f2e8 register_netdev +EXPORT_SYMBOL vmlinux 0xf7f81131 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf7fdc84e km_query +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf835758f md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf87a8b2b ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8c8ab69 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf909b203 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93498fd input_free_device +EXPORT_SYMBOL vmlinux 0xf969cf8b arp_invalidate +EXPORT_SYMBOL vmlinux 0xf990b603 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xf9939fc2 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad6c2a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xf9cbd845 journal_forget +EXPORT_SYMBOL vmlinux 0xf9d5ee34 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf9dc42f9 seq_open +EXPORT_SYMBOL vmlinux 0xf9de5dc8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ef0b8e mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xfa082128 down_interruptible +EXPORT_SYMBOL vmlinux 0xfa3643fb omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xfa3ad38e kmap_atomic +EXPORT_SYMBOL vmlinux 0xfa585a30 find_or_create_page +EXPORT_SYMBOL vmlinux 0xfa660e3f __bio_clone +EXPORT_SYMBOL vmlinux 0xfa74d265 datagram_poll +EXPORT_SYMBOL vmlinux 0xfa8af8e0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfac32472 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xface0d6a phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaff1690 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xfb26ccdb kmem_cache_size +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb86ff7 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xfbdaf097 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbf3d8bd mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfbfe4e28 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1a2583 md_write_end +EXPORT_SYMBOL vmlinux 0xfc1d7daf inc_nlink +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc618f00 tcp_connect +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc8b4bc7 sock_map_fd +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcd7aa94 inet_select_addr +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd023abd tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xfd13b9e8 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xfd20ed22 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xfd2b8b1a nf_register_hook +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd59ffa7 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd67f965 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd786d6d scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xfd875215 commit_creds +EXPORT_SYMBOL vmlinux 0xfd9ddd0c mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfde5b4d5 setup_new_exec +EXPORT_SYMBOL vmlinux 0xfde6bb92 dquot_file_open +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe3c6b36 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfe4735ec bd_set_size +EXPORT_SYMBOL vmlinux 0xfe53868b skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe634f58 add_wait_queue +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfeb02436 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfedffd86 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff10f506 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xff13d63a journal_update_format +EXPORT_SYMBOL vmlinux 0xff1d6ed9 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22095d neigh_ifdown +EXPORT_SYMBOL vmlinux 0xff2e71b7 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xff5cb631 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff856324 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xff97e7db dquot_scan_active +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xffec12b9 mdiobus_register +EXPORT_SYMBOL_GPL crypto/af_alg 0x448a2597 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x479082cb af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x75aded5d af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x7a27c32b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8210240c af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa9c71490 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xc4d0e17a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf623e43 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x4cfb2bae async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd8e6cd50 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf7665dc5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa944dc18 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xbf506b63 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x08cfb5bd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x172898d6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa0d80ce7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6371b89 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x030377e4 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x74e1b715 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3f356d99 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x16c275b6 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x2ac14d22 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6d17c2b1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7a9605e9 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x85857910 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c760d75 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb3e09678 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb9650f5c cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xc2a4ddb4 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xde0a84c2 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x581d98a0 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 0xc8d74ff8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc87914f twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xdfee5ad0 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0efc5a59 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11296b63 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12e28f6a ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13b679c1 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x25812008 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49656714 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ba65a6c ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e8144e5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58adbbe5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c064a6a ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60558ef0 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63f03bcd ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x775b2bec ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a9e5aff ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa15dfad2 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xed582fda ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf119a366 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf803a861 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x723f93c9 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x7c583119 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cef45fb bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ec3791b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x280d2e1c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2f77fbe3 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ac8ba43 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4dbb4224 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x54646bb7 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5689645e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f2db6dd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97192d6d bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa6db42e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1a8f98b bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcec6da0d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc911c6d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea85ea0e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2b23fe31 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2ee5f450 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6c4c6269 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x80fef350 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8266886e btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x86b016df btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7127890 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbc82f2bc btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc51d7937 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xeec950e8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x08da9925 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6bfe7a37 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8b129122 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9a649faf extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xaaa1de2b extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xad3b9e7a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb414a6f3 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbfca5387 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc00b77e2 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc6dad6a7 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdadb03f7 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xde7662b2 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x844db1d1 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa01e6ca2 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x63653845 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd34ec0ff __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d41d914 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7db824f drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e7a3488 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x208f711b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2120e0b3 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30cd9604 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37bd8671 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5007668d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x52e1d863 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5da2265c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x672328ca hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bc243ee hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7470b191 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x789cbd87 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7ede4994 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f82191 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x939f838f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c75b1b hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95bba2d7 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a2b8fa5 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d7fde02 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe0bfd46 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1a1ad5f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9c050b8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6f24079 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda35a47d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda3be655 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4dd3a07 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb408504 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf8c7caea hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfea5a078 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xe0c34d78 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x793a2138 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcedbbfe7 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0adf520d usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb629ac8e usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc46b1008 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xed7abb64 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x07fc5c71 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0c87de3e hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17fd3bf7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2e736400 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x86aaa356 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa91e7285 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb44126c5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe8cfc43 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8fb98f4 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8afc54d hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdcf41bdd hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d90b4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf7e62f71 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b398f3c i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0fda20fe i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2db12895 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x44daf467 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb7c4906e i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd09ed817 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd1d58f99 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdc3314ec i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf5b4b83a i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x38b83171 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x83bbaa67 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbf2723ae i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc326d507 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0acd77a5 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x10a8dddb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bee2d53 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27594f1b iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e42fb8a iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd802c3 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84999b75 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c6a156e iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95d88a8c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a13d6d6 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xacb183f5 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb76b1767 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc44bbca3 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8cb5645 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6ad34c6 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x10ea3c7f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xfe607136 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x25d89210 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeadcfa74 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeb08bb8a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1dfc6872 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b706391 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4439c4a2 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ba4466a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x761a5b30 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x78b0290f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7b1a406c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7cf88721 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84d24414 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbab05bae wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd70ff1e9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2c5145a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x02f24063 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2a8561ff gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2ae896da gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x54d0ad5d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x58d0e44d gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e56513d gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x60354917 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6317d252 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x727b85f4 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8f7586dc gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb89a7379 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbd9252a0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc30ee115 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc31d22e5 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc744e2dd gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb7e554a gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xea4c1594 gigaset_start +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe39eaf6f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x134887a2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd50909e3 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x15f98a28 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x70f9ca69 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb1f99e44 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc691780d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcfcc85cb dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe5552caf dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2dc9297c dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xf35b8892 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xe27ade15 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x6a419da4 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xbf524f7e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x6e4b83c9 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xcb0cf4da tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x97ae8ffb tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xcbc01c70 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x67f7a95d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x12a19713 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdc01c2c1 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x422aa049 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xe9802e9d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0xc5cededb simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x0ddb8a94 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x819f2772 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xe3f2b89d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x01dd0791 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0f3f4b68 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x101acc34 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2cb3fff5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3aba2661 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x50820dd8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x654b791a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65db318d smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6b5675ab smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7584386d smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7efd7b1e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8efb3c93 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa1d3b2c5 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd715cd3a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xecb50843 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xef2fad99 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8ae8afe smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004a37fd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x05fb336e rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09f74e5d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x15deac8c rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e728a68 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x363fbd6a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x426281fa rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4654f3b0 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69e2797b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84fc67ee rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ae043ce ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a8f4780 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa03c87da ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xad8eec82 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfc9e5b1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd8368e9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb7d8b1b rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0d4d6712 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1b6015a6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1d59f776 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x28bfe541 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x36dab4a1 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x453d5539 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4784f8fa cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x63cf1f82 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x68fbdde1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d9837a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x902b3909 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9eca44cf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae3d8a24 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc27caf03 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd9f45a32 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe2e3fee7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf5490e85 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfb43dcaa cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfba3709d is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03588dab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x07538dff em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0ddac052 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0fe6c176 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2d3006cf em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4489c064 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x56878bb7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6ec1abd7 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x81065cb5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8e91e284 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x97cc4b82 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd62b5186 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf046f7e7 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xfba71ace em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x090b7ab2 omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x3f08714d omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x87006df4 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xd5aa61c6 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xe168e379 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x07dbd221 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x166432e6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x197321db tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd9f31275 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x01935f6d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4102273f v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4cd954d4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x51d0e57d v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xafc05ea4 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xe092a3cd v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x086271c0 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x797dff3b v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x8caf9728 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf3af94c0 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01f7bfeb v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1c7b6d56 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b575aba v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b731300 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x588caf77 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69f8209c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6aaa332a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x78bb71d5 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaaecaff9 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe3179acc v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe1c0a9a v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe8db231 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x064c7624 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1045ccc2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x14b50ba9 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x15ad7d9e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1e325a93 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20db1203 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x23138746 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2ac6a0c5 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x373da88a videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3c64079d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4993207e videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e17b589 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5324069c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5bb787db videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5c0b0651 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83ac9ba6 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8a1c09ae videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8f830bd2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9f93cf5b videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xba789c63 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xbb744607 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed1325ed videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf03e3036 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf867dee8 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x35547fac videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x7accad9d videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9a065738 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xe7065ea9 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x244bb4c1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x41c9ae39 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xe5ceccc3 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0d17162c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0f52c3b3 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x52f877ac vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x78865444 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82715c36 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8cb3c35a vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9536c6bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9a59f274 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9eac1719 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa01f5ffd vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xaa4cff71 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xab00da2e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xafe1ed30 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb0f1410b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe6e7aaaf vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xed3e4767 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xfc8f6ddc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x8905f9da vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe9da6780 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x4bf93c7f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78b7b26c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xa8562cf1 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xbbf7f600 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xee6df16c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x086399fc vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x029b4654 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2e3c91ba v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x32aa7c72 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x43a3e76a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4d4cbc63 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4f8b43ca v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x52ee7a7e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5ee3727d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7905874a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7d32218a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a0bc99f v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x90887e81 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x992211b2 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6503fbb v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbed4431e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd1525803 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5bfcfc6 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdb3cb1cc v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5612e59 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xee3b720a v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf51ddfaa v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfe6ed6b2 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3a0f8e25 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb9ef683b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbde8001c lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6494d669 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7146beb3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xac546478 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb0a46496 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb2ce756b lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd0172557 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdfe2ece2 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x25f0e9b1 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x398a339a mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe69799e0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x10488d64 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x23dee731 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25782377 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x462dc3c5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e236ac0 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8c40a54c pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9cd5d160 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd33bea88 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdd17fe6f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2f24813 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xebfe860b pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x33856c47 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x93b8a59b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x40afb19d pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9da4bce2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdc39c830 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe21faa5b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff434733 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x20a43ed6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x77e99fe0 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ad3bfd1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x995fb7f4 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd8d719b8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1b27e336 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbc63ace7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc92b3055 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xca2af4b8 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x368f9dce ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1b5948f9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x659437b0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x68aed3e6 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x85192d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8c230d62 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdc1c6ef3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf63d9ebc enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0f90d799 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x145ac57d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3179986e lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3cf43c19 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb65da669 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xce02309c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xded86683 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5efd0d03 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xf552cd54 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x23d59dbd sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d7a52e5 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c60d1b6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7d125b37 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7e30c6d9 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfe8b52dc sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2ecad99a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x712ec32f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd7b4b136 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x038f3a9b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5348628a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xec8057e0 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0830ee4c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9d2d4170 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xca0ad797 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdbe3c031 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x82c38dc2 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x27e98bd3 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x29528f6f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18ce2ab1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e40bb38 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2745d1da ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d79a95a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e35b9ae ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bbe66b3 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d0481dc ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x821869e1 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x995d7ef7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaee05fd3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbed8177e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc39b86b4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3f840d4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4e7cb6fa free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5e7e1623 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7eb58aff register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa363e8d3 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x12efbb9c can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x33d06d6c register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76971fe1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x827edec1 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x85ef3202 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97986ae0 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9d343c63 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf1e505f8 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf3a9a862 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf40160d8 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf6d936d6 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfe23a663 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x18fcf6e8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x643f1a07 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xbce5999d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xdf7c850b alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x110f338a free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4f2881d2 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x61550e39 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xee105b5a unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x237efa63 cpdma_ctlr_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x4a6bea03 cpdma_chan_submit +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0df6d401 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x256a64a9 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3099a991 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4f1076c4 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x56d6ba27 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x0de4bb66 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xfd85e495 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x145dda61 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa7101141 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xcd7bc15b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd1c25f3d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0ccde22b generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9b9a23fc rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa5bb94be rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xacb0a661 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb313cf02 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc140bfab rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ea35583 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x124ce5bb usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1ac2ded8 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24119a1c usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x251f3a8a usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x266676be usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x270af488 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x28dbe766 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e510a45 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x654f7b37 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6b8d25fa usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x719aa428 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x774332ad usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e789107 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0d3cd21 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbcd093dc usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe7f12f6 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc92fbd73 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd7ab15b7 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd9301709 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd95c06be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4b6ad4d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe63ca105 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfce5a874 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x42d45842 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x443193df lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x59943d5c lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x622f2226 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7a6b82f8 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cc5e18c lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x962f2c2f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9bfe1725 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e38f41f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa48667c1 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab5e295d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc3a1c122 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe1edcc36 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf31ca130 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf4554e6c lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf8da91b3 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1ac2da71 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6dda5fd4 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8e22613a __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xae53281d 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 0xdc947fb6 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe22aff88 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xee669b29 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf3f2bcc1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x327044bf if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xc9741d46 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x07900657 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x16cdf2ba mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x70e62aa8 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x80c807cd mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8d415db2 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9acf394d mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa1413108 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb397d380 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb8712e79 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc04e1f09 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcf66e554 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe33c61d6 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfff973d4 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0ddc599b p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x48391ebb p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x498f2ad6 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5204df3b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5d0310f5 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x79ce450d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x841c63ff p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa3471a6b p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xff386c63 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0622e512 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x06af01f8 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0de1f56c rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x14564cf5 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x18497a94 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e2a5547 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2652713a rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x267222eb rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x274d1a46 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ddccfb9 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33f0a1ad rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3786b842 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x406d0c22 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4088f87d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4cccbe30 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x537379c2 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5935b108 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63fd9874 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fafeb17 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x721df246 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7379c351 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74c2a621 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x84896ec2 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9048bfea rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x94a83801 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa21dddae rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5064d2a rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb35126ec rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc079d072 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc13168d0 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc62fce5e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd34ea2c5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd462f52d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd59488e4 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf98c4fe rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1f23ffd rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe20c45d1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe36fd0ed rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4fa4c3d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6667a8d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00096a98 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05fd5034 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0bc2ad5a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d99e4e6 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1143c28d rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14ff2ad7 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x290946a1 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34a46332 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d02681e rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49be87d2 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4cbbf75f rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ceb7416 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53de11d8 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x571fcb9b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59ddea56 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b3a70d2 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6aa6b143 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74882bd9 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x757c3e0d rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x757e4377 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79dfbccd rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ab9c60e rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x810d340c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8241cd70 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8c589e41 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f62b934 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9bd7e403 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d4708d4 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8088a7f rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4b9656b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb9edb681 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc248d047 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc47dbadb rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6506508 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xccd68e65 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1c5423d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd578d9a5 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd729a800 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8001473 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc44cffd rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddcde8b6 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5089881 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe85ab077 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb63931e rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4a3f572 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf871cc5f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa061510 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d448f15 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1c190de4 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1cef8ab2 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1d2f64c7 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x298c0bd7 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3be47ebf rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4e00a24f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5525d330 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7e27ec20 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8828c80c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x94116fe5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb02e45e7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6f4c17f rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1bfebec rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdad100e0 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf86ec681 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x42725738 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7b827370 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfd8695f3 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04b1798f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e355038 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fd39771 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41a5296d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x512bc4da wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f59dc35 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f32e550 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9428488b wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9939e4c5 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9bd8fcf7 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8a807db wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8e9a880 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf792595 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf189c119 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2b8dea33 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3a4c7729 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5a2f58 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x31bc8876 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x39958146 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ceaa31a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65e4df4d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb339fe5b mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb5aab6c8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe376687f mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe83b2572 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5ee00ccb wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7da035ee wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8f51d25e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99ca8282 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4e063fc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf2d08be0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6b2ba7a5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x042fe3f1 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1302bd23 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3e2a1eb4 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb637c687 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc5f7408d scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd4384d32 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02584a3e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a72bfb1 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x219cda8a fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2f8ef938 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x466dbc5a fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5d8a6725 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6fa81b47 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x895ce813 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x953fe4dd fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab4f590d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba09f2b1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc1ec3b8e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe196b150 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1e1abd47 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a8c8514 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x41e3db18 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4205c59b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xaf0bbcf0 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9bc0922 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x001b1f11 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15d05afd iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1eed36ee iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f6a851b iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1fa073d2 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26e94f4a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b97471b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e414b3e iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3779d89c iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x39312215 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e21e821 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fbcfccb iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fc347e9 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44c52ae7 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49bf9143 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a93eec1 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ae7a7cf iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e6df898 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x502f5171 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54605665 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ace02b4 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5cf923cb iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ee48eaf iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68525116 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73a7cd43 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x742965ce __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7563c7e0 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x777062b5 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa91f4c56 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac891b9d iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xadc0e646 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb50924e iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd149148 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3e22a7e iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4e640f0 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5908754 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd8b99f71 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8137e29 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeca7cfb5 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf34f85d2 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf6bc0edc iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf854ca99 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa1adc29 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x03b4e1e7 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c0ce884 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1eb7f40b iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2a299c53 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2e23f273 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4e9ea107 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5a9e4bb6 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x60ff3e02 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x641a481e iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e4f8b32 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9c0ef565 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc26f1196 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd215bd2e iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2568afe iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd91fc457 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd953140a iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xebb80c9c iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01ee4791 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0cf01d76 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12141b82 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12fbd89a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24949528 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x388972b6 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x542c89bb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67650b4d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x760904cd sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x761372c1 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f85e7a9 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x97b11aff sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa181edc8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6d103c9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb07ff6c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd995f55 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbfc9935f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2ea6471 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc59159e6 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf748984 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeddaf9ef sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee272bbc sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf49d43c8 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x114e3f91 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x24e4548f scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x330340df scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x77050454 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7fdd6b53 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9a19e6e3 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa7768fb6 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2dc6ae0 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc31d8973 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09fd174a iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c196149 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18185955 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a81cfb7 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22346a63 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2acaff02 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2cbd1c8f iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45b381b7 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x487a2bfb iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49358033 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e22fabe iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5941ba58 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5de1afe7 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x653e51be iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x670ada22 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68169c37 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6aaa4d44 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c933eb8 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86ce877a iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c946786 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c3e0c10 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbca541cb iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc0d961f3 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc92d717d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdaa885e iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcfb7c158 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd98dd288 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe40307a9 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa142365 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb14144a iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc3a05c3 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff3393f8 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6aa341e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbbbf0329 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc4be9a2f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe4107c53 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0e8e9cc0 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0f8dd0f3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x51a09851 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x78d1e228 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbad4377d srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ea55a9c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7cb77931 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa74320e8 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb4ae8a12 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf547ca2 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfa7de7bd spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6f6b5988 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa54081f9 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc842aaad dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc1f02f1 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xce2ce23c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x4cf83c64 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x62f2419d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x1cff999c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9df3ae95 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8ce324b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbcb5a946 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd0a0e834 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf80f0d19 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2743dfae serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3509aeb4 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3f3fb65e spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x52f1dbd7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x53c4e5c6 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62f7cea3 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x717eb93a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x790425bd synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x817d1c7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8905e8b3 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8d9c4fb4 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb5acc53d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x12efbbe0 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3c7cc4ba usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4044fb7c usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x57160b3f usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5d0300cc usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8eb77300 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa05f4fb5 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa638860f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xaec8ebd2 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc9a651a6 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcd9af03d dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd9765fb5 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdfa2a57a sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x12b5190e max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2a8019a4 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x49b5c966 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x71f3fae0 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe6280e85 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xff951749 max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6b2e2607 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf649a80f uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc66478f uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x26069c86 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x28034c73 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a2ef842 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3e26e994 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x77f5bb0b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x95e5935b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb3568b08 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7a07911 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbf2d0a62 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc53009ce usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd67c32b9 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3bfa6e96 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfc9b3687 musb_dma_completion +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xd2fbfaa6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e39fcf9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x11226e26 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43b2378f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49683ee1 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65834ce0 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x66669930 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x672520ae usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68cce968 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6930e78a usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d37e935 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8c89b12c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b16e6ef usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6bf5c5a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb79f1dad usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5c117f2 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2a4f99a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe6b2c05e ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xec61afce usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfbe7e077 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ae75fe1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x156638dd usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x233dc9ed fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x23708d64 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3fd33d84 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x49b5e404 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57bffcd6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5869c0b0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59dac122 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x608684d2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x716d0bd8 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x741e8d62 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x838d4cf8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9cc4174a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2211468 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa5bd1ca2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa1c7cad usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf14e379 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2908973 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf1afc29 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2a255ad usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2343f3c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x01019865 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1bc96f4e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x20514dc4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x86edd0d5 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x875da42f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9793e88e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3e1c4be auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc465a829 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd61d1714 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe0923ba2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1906d5d3 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1bd6108e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6bc53461 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x797088c5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7aa734df ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe1395ec8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe23601d5 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xc71f135e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd23aa5ca fb_sys_read +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a39611c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6f299f85 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d9efdfb w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9a069db w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc70d0a92 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdee32dae w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe6df29b7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xef78c939 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe92acf9 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69a767fb dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6e572dd9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7db3050a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x19199de5 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1a9c32a7 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4ecb19ac nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x824cf1a5 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x92aa2345 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbad0c9f9 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf2fc95c1 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05df4e4c nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f9f61fc nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1455d253 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x223d8211 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ba4c28c nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cd048bf nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3036aa7e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x381f71b4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47af2e87 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a223f2f pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5561a311 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c8fd827 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x617a0b31 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61a7ec10 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62213c33 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x698142be pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d05115a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6de8f6be nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76b7062e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x835e334b nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8872135f nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8908079f pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c182694 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f9f733e nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98422eda nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99a53115 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cceedc0 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa48ea78e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae8430a2 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1c828c8 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb649226b pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6c4c360 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbca31187 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5abb66a nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5de385f pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc35168a nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd59c18df nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6a865f3 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd750368a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd94957f8 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbccf874 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe71e1477 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef940fa7 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf13b18da nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf86ab264 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaeb63fb nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5830da5c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xee22f648 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x21600d01 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x448a3e23 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4eceea19 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6459e7be o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x76cb9f89 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 0xbd3ce997 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfeac7a7e o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x06073584 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x275c16d9 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x473ddcab dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4f27c6ae dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdd66fb9e dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfc31a9d4 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x180eb3c3 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb181e5f6 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf1992901 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x747e218f garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x76fe3f45 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x83dc5c08 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xb331b53f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xc156e5f0 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xdc6aa6ca garp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x71479ad3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xb7372fdb stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x29f55457 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x63f872e3 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x4c2ff25c 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 0x427f87f9 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0025605b dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03ef30dc dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d12adb0 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1502a8b2 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1ede0ef5 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21333fa0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x241c1eb3 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2acc8583 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x433441f4 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x45283dbb dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47db0d59 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e4c903a dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5298f65a dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5978ac6c dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b0b99a1 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x66bcad2d dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74acaf25 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7835305e dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e361286 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x877a4c91 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x879283e5 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x885c70d3 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b9af416 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9fcdaa67 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa809d0de inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaa119fde dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0c1e895 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb211327b dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb3060ce7 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbab616c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4b70b80 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7bfebd9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcc601f2c dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7768b43 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf462f6f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x26c18188 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x363c2551 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x715ea813 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9ae6fb0d dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa1356d8b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb785973e dccp_v4_connect +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x29b4aae8 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x95ed97d2 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1127e6dd gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc40ebe26 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0495af71 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x175cfa19 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2a9b44b8 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7c9d8bf4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9194dbc5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe6e38515 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x00f8ed6c arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x4d86c4fa ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0xc96fb240 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x0f5cf872 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x1b9d4cae nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x2ad0b051 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x312ee2e5 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x41433b9d nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x693d9b21 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x74e1854f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x932bf373 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x95e0d772 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa20adb8c tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xa8c0940a ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x33f2dd01 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5a1e7908 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5d3ef2e1 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6af8b03c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7297562a l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72f4fe28 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74dd9d1e l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x761aaff7 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x93ce3dc0 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9af14435 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa9dbccf6 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab47fd28 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x27d1494d ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2899fcbb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4855779a ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae613003 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb7f1d0bf ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x11186dd1 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1a424212 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45686c91 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4603cc75 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4bd1404f ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6660c2b9 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 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 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc64d20b5 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd8b3ce4e ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe8631504 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 0x2dd9a94d ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x560b0ce3 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc39df7f9 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd849a7d0 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00135bd8 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0796c9bc __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e33b6bc nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19af4c7a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bb386f3 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c078d06 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cecc5c0 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d6e09d4 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e07755a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2985e471 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a67cf76 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af7522e nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x416ab6ec __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41fb30cc nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x463fd45a __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47ac24dc nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4970b478 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e3d1a4c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f6bc5be __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x592bb8f6 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bf415ba nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d7e62f9 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x694e3ca7 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ad36d16 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e223a5a __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f48007b nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74f3f75d nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77681413 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d44e335 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x819dc9f6 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87ee723a nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dc41dc6 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fde1773 nf_ct_expect_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 0x91c52432 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x945547bd nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98787980 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a457d23 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9df71bed nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e24263a nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f301bc2 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa15d2988 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4027ac4 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6cb9a7c nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabab1349 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac2cd09c nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1a9eba0 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb375b3f9 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb42a950d nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb55c1bb9 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb81aaeff nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9bad3d8 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc077566 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd0ddbfe nf_ct_invert_tuple +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 0xc5dd8097 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0ba6cd3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0ed9521 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd54488f9 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd79506d4 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd914c884 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe12079af nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe50a8b93 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6a66a4f nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe92fe88d nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb6b3027 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee9b7e90 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf234bfde nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x2ea96579 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x30c74339 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x43aec5f9 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1298e43b nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1617b767 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x55ffdaa6 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5eb594af set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x66e6ae5b get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x83cb9ccb nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a0f5859 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb1afbe81 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe2c56bac nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfbd78610 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x907e01f5 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x26a040bc nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2a19dd6c nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3a933ce2 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x492a5efb nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x3d99a596 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xa1c96990 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x099b9d54 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x12c12434 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x18acee3b nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x44e93d10 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4ea8b5a9 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x563a2b68 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x73c50502 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7c97cb00 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x86e80efb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbdbb75c7 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcc4fe701 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd0890c3b nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdb0c970e nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xf420025f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xde1b55d4 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x833dc193 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0e0e299b nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1d11a4b3 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x31645c62 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3655e773 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x49aff828 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbc859103 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x91aadbae nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x88af3661 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b3e1f08 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x233e0af5 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50d4d78f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5a21d2b6 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x69399caa xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b1b52b9 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6db418bc xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7679daad xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88622c20 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d27500d xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa515f4ee xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe4ae196 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdff36095 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf8009c59 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x563d999b xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf6afa81c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x12ef80ae rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +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 0x3dfd9c08 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x40b6a15c rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x45ae8de4 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x53537e73 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x59d308dd rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6978532b rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7e578244 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x7e82477b rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa3c78b7a rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xa72310a9 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xa7f5349d rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xafe529b9 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb515a374 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc07274bc rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc619411a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xcd5db955 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd2d8db40 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xdb8c3516 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xdc5f8dce rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xdfb35222 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf62623a4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xf8e8209c rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xff57b277 rds_inc_put +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xb57c68d2 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc5aa6019 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x095d262c svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x1af1b4da gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x24fa0719 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x34229a48 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x65a27686 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x70acf241 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa70437c5 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5d57cef gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xde469e7b gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe2026771 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xee0b9a47 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0073820e rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00b1c7a2 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x060613b5 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06b7eef2 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07c8f955 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07d45e86 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07e17478 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0addd1ef rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b74c902 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bafa186 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ca9851e bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11631d3e rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15297d4a xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1589d57d rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1723a870 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ec6faf svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19aa7e59 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b04253c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ea8e51c xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21b3e47f rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23eb38e1 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2599638c xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264dce3f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x274062e8 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x277710f7 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dada273 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e6ff1fb xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8e7943 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30ac0550 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x314e86aa svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x329068cc svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34b37cb0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x358355dc svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387bb34f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b1cd5fd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cc5bc15 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d1ad9a5 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2536fb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40460f3e xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41036e07 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4367d292 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46997698 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d53602 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4abe1118 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b350ac2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b3f147e sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cc91cad rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e17957f xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50ee0eb9 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52886b96 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52a593e6 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54f7259b rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x555235c5 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558e6711 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f54d16 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x583743b4 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x590b40c6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ae2c8c4 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e6285c9 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fdec303 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62506e2f rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64400b59 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64f3d663 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x690ac893 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a9ba0f6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a9d9a03 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b6d006a svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d083abf rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e4db404 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdd2664 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7073d1c7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7256d23c svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72ea738c sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73cc683c svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76722cae xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76ac5d08 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7860c9e7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cae697 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x792d5492 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d56fe96 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec5ee53 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x806c4402 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808cd845 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x833c1016 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83798089 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84bcc031 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855c767e svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87528910 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x885f20d8 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a6bf7a5 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bf50b7d rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdaea94 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8de02f0a xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ec80f9a rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ecf708f svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f0edad8 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fa93f7c xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fc5f9f1 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x910d72c3 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x925a369e rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97572b61 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cef93c1 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9de9f3cb svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e0c4793 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa157a84d rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1df2a3f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2eb58ea rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3f862c3 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6210e3a svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6510330 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6cbb67f rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6d6feab svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa78b8d33 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa841285a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa87dcda2 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9be7ba4 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa9501c5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab2927fa rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad2ba058 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7d1f4b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf27a192 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb263c1b7 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb593abac xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6241e97 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8570a1c svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8ddae6a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb1b5c7f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd1822d2 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc07f2f14 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc11482a5 cache_register_net +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 0xc66859b5 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc894818c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca03b746 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb4a6db9 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf20afc6 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd03657d3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd216f371 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd41c6aa3 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4360bd6 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd481579f rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4d86ab6 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd517ccd3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd71fa0b2 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd75bee9b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd42bb24 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd5ee3c7 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddabeeb3 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde4c7ced svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc12f64 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfdda2d1 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe057faa2 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe117c5b1 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41c7535 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe954122e svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c1ec50 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c7e288 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea7d09e6 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeac168d4 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb464db0 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb5430a9 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeba989be rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebee495e rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec56da54 xprt_unregister_transport +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 0xef055309 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf04a6bf6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2b37894 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf77a709c svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa465670 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb4c5be0 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf93bb2 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdb7e9c6 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdedea12 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00a809e9 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x02495457 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4124bf0d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4c8500df wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9ebed156 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xade4cc91 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb4cfc645 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb817ef71 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7a0bcf8 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xce26b28d wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd5857966 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb53df24 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfe691faa wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0d0eb63b cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x22a6f38f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x53404ae4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x583e0bd2 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x59b6316c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5f341a57 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x65f5b7aa cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x700768bb cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x71446931 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9005b81f cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaf390976 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1911c6f5 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 0x2656ecfe ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x31abd6c8 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6ff766fd ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdd98f17d ipcomp_init_state +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x2c407cc5 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xd5a3973f pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x31ac51d8 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x5d13c551 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x1a44e0ac tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x45481b92 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x14d99bb8 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x50273afc twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd40d39dd twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd508b0cc twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd625b3eb twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xba071886 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x19919ed6 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2ff8b3af wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x38fc106d wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x818c3928 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8c40b38b wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa9ee5b46 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb7efdc6b wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb8505ac3 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x3e9fcd99 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x6dc4874f wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xb39ca90c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xda380fa3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xa0698cb4 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb337f7b2 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xcaa0399a wm8996_detect +EXPORT_SYMBOL_GPL vmlinux 0x000668dc irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00075d04 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00654993 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x007782da rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012eadd3 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x016e3943 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c33702 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x022348f1 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x028552b8 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x02c8a5e3 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x032db0eb crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03453443 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0355789b ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x03a07b11 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e3fa81 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x04180da7 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x04251a3e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04ae6b56 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x04c07212 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x050c37db aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x050fbefa usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0515cef1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x051ee1bf device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05420ce0 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056d5bd2 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a80d0a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05d80238 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05d978e5 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x05f39d73 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x0606a1dd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0624b27b dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x063b82e4 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x064a2682 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065335a0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x069441fc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x06a29820 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x06ac7be6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x06b252d6 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x06f57384 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0709a989 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x073247f9 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x074bd082 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b86647 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x07f089df relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x08181428 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x083cb4d8 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x087d8bac spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0896c28d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x08eab084 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0911d9fd register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x091a29b3 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x094d38b8 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x097ad8a0 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x09a1aaa4 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x09ac2346 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09ce7319 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x09db167f mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x09e3ac69 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x0a0bf193 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0a0f0af1 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4f7895 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a519c01 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0a8f07d4 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0aa33262 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x0ac82454 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x0acfe8c5 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b4ccb82 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ba09b27 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0bad0585 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd6a198 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01c84b __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x0c02c891 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0c042caa power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0cbb600c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccffe10 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d1b26f9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x0d1e3c3e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x0d2bc1e9 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x0d30ea61 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4241ad tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0d4a7bd5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0d6cd567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0d7268e4 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x0da7e94b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0dbddb24 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0dbebb12 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0dda9cc1 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ddf2acb ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0de1db6c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0dee211e ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x0df7c393 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x0e045a13 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e16ee41 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x0e5af2b2 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x0e92173a skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x0ed2f405 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x0ed3503a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x0f14864d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x0f1c556e snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x0f38724b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x0f4ac36a usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10155f64 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10734b7c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x10a58611 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x10a5a913 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x10b6cad3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x10bb4f55 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x10e282f7 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x110a093c klist_init +EXPORT_SYMBOL_GPL vmlinux 0x1142f296 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x116e9bae ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1175f652 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x11773d22 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x11b6c3a7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x11ce41ff bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x120ac879 gpmc_init_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1223e8f9 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x1232fa96 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x12480f42 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12837a61 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x12967e99 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x12be7bdf tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x12cfcc74 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x12ecb412 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x12f8f654 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1371d3d8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x137729ce snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x13ac1905 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13da31c7 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x149c2dc9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x149fd177 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x1506b3e5 omap_uninstall_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x1509b0a0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x1519833e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1545f4de register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x15797620 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x158344bd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15c5d40f cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x15d9d086 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x15e825d8 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160158ab mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x162d2e56 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x162fedd0 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x163152c1 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x1638a168 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1664e775 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x166dcac1 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x16870e82 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1692e3ec inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x16b812ea sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x16da80ac __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16decba7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x1727ba5f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x1750d2a3 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x175b617b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x175d40d4 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1763b07e find_module +EXPORT_SYMBOL_GPL vmlinux 0x176e28d9 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17e3a646 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x180d3c81 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x183dd256 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x185391d3 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x18569a6f __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870a88e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x18921769 device_del +EXPORT_SYMBOL_GPL vmlinux 0x1899b2c6 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x18a15d09 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x18b43762 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x18bae6b6 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x18d2d3c9 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x18d40746 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18e5da11 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18ff3afb usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x19031208 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19456e90 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x196fbfec usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x199232b0 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ee3b1e cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x19f71b84 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3e4564 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a4a9ce8 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1a65920b omap_iommu_arch_version +EXPORT_SYMBOL_GPL vmlinux 0x1a67721b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1abb724f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afaa190 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x1b00d4ad device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b0a8ff3 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x1b0e34e7 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1b18f808 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x1b1b9718 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b34a45c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x1b384dba xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b85209d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9af522 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b9bc108 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1ba65ac7 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x1bc288a6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x1bc50751 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1bff2b8a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x1c00399d xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x1c052235 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1c0a5bb4 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x1c3015e5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5bfbeb sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c922a08 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x1ce4137a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1ce5683a snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec09c2 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d1a25f8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5de3ea mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d664a5f sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x1d6894a7 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1e1524a4 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e3bb8c3 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e929cba simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x1e939184 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1ea1d241 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ed4f129 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1eecee2a do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1efdf44e crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x1f0f9e7c gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fbb6da3 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1fc7d787 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdcd26e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x1ff10a76 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1ffa0cbb skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x201ab491 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x201fb979 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2027bdef ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2048317c wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x207e6cc5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x2081144b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x20824524 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x20872836 input_class +EXPORT_SYMBOL_GPL vmlinux 0x208aa147 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20fa79b7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x214ad6c3 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x21a861ba usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x21eed484 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x220b5875 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x2211dcde vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x221e9136 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x22281114 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x227d4d01 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229df9e0 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x22ab17f7 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x22eb01e6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x23513169 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a05f46 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2423ff6b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2468949e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x247c0a82 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x247ce385 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248db7e5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x2492b7b1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bc579c snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fbdc2e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x253efd08 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x2553cbef xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x25572d7a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x255ae904 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x256678a6 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2583f49d tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x25b8b8d3 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x25e6cb8a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2610bb99 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x267aa5a0 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d5135a snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x26fe7fd5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x2731350e inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x275a4363 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x275b6f8f amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2790007c snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x2796a377 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x279eb6ab ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x27b944ea omap_iopgtable_store_entry +EXPORT_SYMBOL_GPL vmlinux 0x28281df5 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x284e6718 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28938e84 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x28948c99 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28b11dc4 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x28b31a6f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x28b66cbd trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28ec8afa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x28effedd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x28fea945 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29204af1 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2926a0df xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x294732a4 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL vmlinux 0x297d143c tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x29a798b4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x29ddeb90 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x29e24acf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x2a08a563 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2a295418 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a463ee8 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x2a5748c9 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5d8eb9 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a880acd kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2ab85c0c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x2ae0e1ef sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x2ae963bc regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2aeb2083 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2b3dbb12 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2bc87ed9 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2bdeaa5d gpmc_calculate_ecc +EXPORT_SYMBOL_GPL vmlinux 0x2bec437c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2bf142d3 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x2bf5ed11 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c281127 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2c2f069b mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x2c309940 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c922ac4 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2c929665 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x2c93da68 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ccc6bd1 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1f6ba i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2d154bb1 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2dca68 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36a8c5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x2d45db30 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2d90fae8 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x2dacde31 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2dbf2173 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2dc7a7b9 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x2dd08daa dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x2de2be79 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2e19e0fb skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e341b12 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2e3ebdc7 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x2e8ff70f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x2eae3434 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2eba89bb kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed9efbd usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f0bd733 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2f3dba94 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9078f9 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2fbda5af crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x3001155d blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x3004ad39 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x3037218e led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30a93577 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x30a96082 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x30ab9b86 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x30baf29a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x30d514aa hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x30e22742 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3111ffad sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3191013d gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x319d4369 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x31a4ca2a of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31bc4603 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x31bd8b90 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d1ffe8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x32587faf tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x326572a4 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x32660688 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3268de26 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x328ead51 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d3fbe1 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x32dc99ab ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x32f19cfb device_rename +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3359aeeb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3361e62e ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x33775d8c skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x338a188a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x338d6665 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x339416fd ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x33edefb9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x34019502 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x343eb67b s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34f93356 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x351cfbc5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x3525eedc tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x352f940a mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3554cc03 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x356d6676 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x35ba494e usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x35cba215 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35cce9a3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x3601fac7 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3621735f usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a6400 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x3697ad94 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x37222a12 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3740e4a4 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x374794f2 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x37618b5f tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x3769ab0c klist_next +EXPORT_SYMBOL_GPL vmlinux 0x379b5fd6 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37b0bf04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x37c4fc46 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x37d50795 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x38a2902b usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38d8546c device_create +EXPORT_SYMBOL_GPL vmlinux 0x38d93e0d snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x3920d6db kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x394d2732 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x398aa119 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x39a6f0f9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x39a8b807 gpmc_enable_hwecc +EXPORT_SYMBOL_GPL vmlinux 0x39b021bc pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39d90b9b firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f2b2f5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x39f33767 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3a0b12f3 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a25d448 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a383a2b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a71946c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a8e2b7d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x3ab80329 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x3acb8120 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b059402 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x3b1fc014 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3b770113 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b7babcc handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b83b06b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c150a48 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3c25c74a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x3c2efcfa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3c4bfe07 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c83c007 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x3c89520f crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca7d831 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd0a588 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d08b94c blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d7cafb5 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3daa40bc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3dafdc20 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3db91586 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0b125 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df27184 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3e26437d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3e396d7b sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3e591232 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e647d9a ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ed78f06 mmput +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3eefe924 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x3f210e75 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x3f3e92cf omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f56b240 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f91f526 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x3fe2caec snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x401514d6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x401d7f01 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4049380e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x40767ec4 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4097f408 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x40a061be vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40bb5009 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x40d1e635 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x4163750a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x416fffaa driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x417db3fb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41f953c1 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4200b6bc blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4215a113 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42243aee usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x423e7b81 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x426ccc55 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x427ae754 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x428186cd get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x4295844c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x42cc4d76 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x42f10c9e otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x42f223a7 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x42f52a23 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x42f61a6e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x430353ac md_run +EXPORT_SYMBOL_GPL vmlinux 0x43150244 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x431b9be9 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43247956 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4349b4e0 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x437859e6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4383c9bb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43be8c8a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x43c77fce irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x43e62b87 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x43e871dc md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44331afd shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x4435c123 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x44657122 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x446fc726 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x44786634 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4490f2b0 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44d10699 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x451739fa user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45360c38 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45895638 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bf8905 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x45c6c8a6 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x45c89363 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x45c8c560 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46276d8d crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x46281367 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4630fbe2 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x463f11d4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4658c8ee of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x4659d5a1 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467a400f device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4691ac75 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x46c764c9 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x46f5377b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472337c9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x477f8de9 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x478d4ff7 gpmc_enable_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x47ac889a rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47c2869d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x47d8885f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x47e7515d omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x481e9785 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x482621a2 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4864213e pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x48688b96 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48efe7db __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x490ec519 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x49339d26 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x493e2a7c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x4946da71 omap_iotlb_cr_to_e +EXPORT_SYMBOL_GPL vmlinux 0x496b8639 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4985e88b power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x498f9e19 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49d3c15e ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x49d490fb snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x49e6fb30 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x49e7726c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4a9807ba __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a9ac309 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aafcee5 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ac0454d fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4b182b63 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4c0a71b8 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c0fa949 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c250800 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4c4719bd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c545e6d raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x4c697709 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c848371 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x4cdbcafe dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x4ce60bad ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4cec6e2f ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x4d29d347 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0x4d54dfd2 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x4db1024a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e216a28 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ee1d8d2 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x4eefafaf debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f071807 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f1f42e7 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f3f05b2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4f5085ee iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f67e306 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x4f923bd3 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x4fa357fb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4fb793c9 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff5ae9f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x5001d0eb snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x50272e96 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x507ea764 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50ac69a6 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x50b1d3f7 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51054ba8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x512e364a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x515624d0 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x516f4d1f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x5171a293 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x518b7ae9 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x51904051 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x5192cf11 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x51ac8695 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x51e8a5e9 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x51f0bef1 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x51fe81c2 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521784aa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x522aa0c0 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x52333b23 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x5266d4ea ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x526d23d0 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x5272c92c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x528b2f0d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x528b4007 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x52c34852 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0x52c9bed3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x531107e9 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x53292120 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x533617fc snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x5336a9d1 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x534d8dd6 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53b806a5 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x540100b2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5416fe08 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5447ed07 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547d99ef dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x549496e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a5daea i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x54d95a56 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x54e8efc2 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x54fbced4 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x552a7b59 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x55323e41 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5540f861 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5542b913 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x554891f6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fe064 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56a31714 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c06bec evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x56c472fb usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x56d19e3b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x56dcabfd blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f08224 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56fc9785 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x57185b69 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575238f7 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x575ef902 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5774148e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x578fe4dd cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1a422 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x57b37c42 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x57c9bce3 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x57dabbc8 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5862701e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x58673c6d usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x58b68972 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x58db893f debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59ab8d0e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0ad8a1 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a62a5a8 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x5a69fc9f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x5a6bfa63 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9d3593 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x5ab35762 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b1eb3d1 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x5b2b510b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5bb8d19f snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bbce706 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x5bdf55f7 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5be2dd53 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c1acf09 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x5c3241ca tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5c696ab6 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5c69d7cd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x5c6d1594 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5c82c02c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5cbd5ac7 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x5cca6f69 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x5cdd59bf stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5da21c2e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e370442 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x5e7ccdfd rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5e805b70 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5e895489 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5eac3801 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5ecd6939 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5ed4b0c3 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f288729 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5f3c4dc9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f9ff813 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5fd2a143 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x5feba456 user_update +EXPORT_SYMBOL_GPL vmlinux 0x604c1f18 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606098b1 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x60708697 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x609e9fc0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6106c752 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6107707d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x612869e4 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x612a0513 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x614e5bbe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x6160b5aa pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616e4bc4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x617bbb8d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x61c027a3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x61c3a9cd wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x61c9654a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x6225490f usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x623fd46b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x62488bb9 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x628d4fcf sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x629f271a iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x62a74e3d dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x62a92c71 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6327864c task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x63291c16 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x632b64de nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x633f235b skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x634d3092 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x636fab81 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6376898d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x63778ba7 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x637f8bdd sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63d89c26 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x63f4a106 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x63f521a3 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x63fe9924 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x6422b893 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x6441e6aa device_move +EXPORT_SYMBOL_GPL vmlinux 0x649da5c5 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x64ad925c inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x64d21c1a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x64e15403 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x655dee64 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x65763911 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dee7d6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x65e44a7d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66299361 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66843c1e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66cfaea5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eaecf5 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x677e8d7a posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6781165d usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x67885f98 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67bbb53c tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x67c68811 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x67cd87ce fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x67f9bcf0 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681dbc63 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x682024d0 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x682e5ed4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x685a3c6c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x68743e06 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x687b10e0 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x687c6a6c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68be26d0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x68df6cbe snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6905f584 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69516f25 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x6966cc4c bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a7732e ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x69bb804c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69df26fe tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x69e3de04 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a1c02ac ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6a33f838 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6a3769a2 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x6a4e483d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6a5432cb blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a59e6ed disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6aa45aea driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6b15a97c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x6b25c57c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b33a5f6 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x6b6b7874 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6baa787a seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x6bb3f5a6 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd27b get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x6bf223f1 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c30dbe9 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6c3f6995 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cd5ef82 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x6cf4f2d0 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6cf61d3d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d68c77d inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6d710848 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6d83bee0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d889da1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6db1b111 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6dcc0810 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6e09af4b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6e17a27c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6e1f61bb crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e2773ed usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6e2ad732 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6e3fd382 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x6e6d26e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6e84dd59 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4381 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x6ea1d118 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6ead1f17 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x6eeb3bea snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6ef1820e release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f230820 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2a6be1 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x6f3665a9 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6f42cb75 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6f684540 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f8887d0 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff3f67c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70077535 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7055a19b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x70579003 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a1be4b pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x70a1fb1a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x70aa3260 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x70aad982 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70de145d omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x7132563a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x714c4ba3 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x714de325 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x715c184e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72247a30 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x722e77c7 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72387bb7 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7259731f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729281a2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x72a97430 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c05dd1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x72fa7d62 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x730204ef rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x7311ad8e crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x732600e6 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x73369bce omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x73378d5b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f29bea tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7404fefc __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x74173153 snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x742160f3 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x743850bb tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cb6d34 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x74dca3ec usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x75022d2b hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x75087ba4 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x750c17c3 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x750ce345 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75331cfd __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x753b1947 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7550c360 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x756d3c4e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x759f9dff fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x75bc0a10 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75db81f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75fe0907 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x76472715 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x76498ef2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7684613f devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7697f56e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x769837d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76af2063 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x76c32458 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x76d0d80f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x76dc1782 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x76df5723 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x76f30228 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x76fb9faf ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x770880e3 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x774809bc usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x77519ec3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7757c8e4 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x77acd49a omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x77d5e52d ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x77f8cb48 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78262643 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78623ad3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x787cef89 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7880e288 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7889d819 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x78ca74d0 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x78cec40c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x78eed445 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x79405553 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7975ffd2 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x79a2e326 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x79b8f1f1 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x79fbcab8 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7a4ef147 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x7a5970d1 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x7a8dd5d9 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7a93c959 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aad3e3d omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af4aaae md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1e2901 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b4b07fa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b61e663 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7b75f83f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7b9426ba snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x7ba34278 snd_soc_register_dais +EXPORT_SYMBOL_GPL vmlinux 0x7bdc6f05 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7bf957aa invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7c1d5004 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7c6445c2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7c688c79 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7c843285 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7cb93222 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc66165 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7cdf91f1 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d16c252 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7d20a3b3 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d629ca8 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d947744 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df3e863 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x7e079edc fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x7e0941e3 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e094976 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e140534 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e277415 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x7e35ce23 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x7e5949a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e67a2c1 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7e6fe869 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e76cef6 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x7e8c614d xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7f0c83ce blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7f1663e7 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7f3cf2f0 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f689cc6 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f7e4d1a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7f7fff8c get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x7fa0e099 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7fa23d78 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7fa4d2bf usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7fc33b4d sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x7fd350a2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80074162 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x8064b900 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x8080825f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x8088ef1b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e60f73 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80ffcd8b adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x812f24df scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8138eb64 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x813b13df snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x816174c8 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x819415ef irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x81a51e4a cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x81e0bfde crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x82557071 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x826dcdc9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x82a28bb8 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x82c681ae usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x8308bb75 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839682f1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83d444d3 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x83d781df pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x83faa6fd fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x840e67b4 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x841862ea ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8448ef45 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x847e1433 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x84c66aa4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x84dc77a6 get_device +EXPORT_SYMBOL_GPL vmlinux 0x84ff63aa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x851c7fb9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x85221845 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855fc557 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a46f9f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x85bc46a3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f0cf84 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8600c5de sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8638de93 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x865031f4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x865d8ca2 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x866134fb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x867d61ae device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86bd8692 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86cf53bf dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x86d70d49 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x86d73f84 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x86daae21 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x86e82b12 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8749cfbf bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x875b64c7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x875bae5d crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x876b4e3f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879be5b1 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x879ea041 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x87aece07 dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x87fe5a20 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x884e2e7f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8850a825 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x88641316 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8883a1b4 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x888725b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88cc3888 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x88ddc075 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x88fd5b65 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x891a672d d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8937036c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x89a88e5e wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x89b4cbcb find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89d7bcbc crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x89ee3924 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a73b83d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x8a81d7ce regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8988e5 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x8a9a4d88 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8aa79491 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x8ab59b92 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8ab8b1d6 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acb9a60 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8ad06566 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ad888f5 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x8af16f3a omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b0690f9 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b36869e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b75f310 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8b8940a0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x8bc5c0fd ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2529e7 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8c67a06c tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x8c9b2d96 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c9f98de fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x8ca62dd7 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8cb5d1aa omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x8cd06b53 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x8d09cc7d crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x8d16ea86 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d204014 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8d6137d0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8d70307b ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8d9fd984 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8db314f7 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x8db34252 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x8de5a654 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x8e37590d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e5db8cc adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8e8cbaea del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ebd1381 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x8ecb5436 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ed8dcbb pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8efe8ef9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8f0977fa snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x8f0dbd9a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x8f1f0c1d ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f2ca63b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8f414ff5 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x8f4bcc13 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f75130a inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f9d42a8 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8f9f11f4 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x8fa5a4d2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x90136cd7 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x901a9c5f s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90580df2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906c5b79 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9070dee1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x907e81b0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x908e4389 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9097e3b3 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90e148df spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x911236cf ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918b3a3e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x9198afce fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91c99834 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91eba6bc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x91f3bf68 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x91f613fc dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x921af38a platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9229bd49 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x92425533 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x927094fd vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x92973b0b amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92b33a78 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d73cca __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x93669a43 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x939d85dd crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x93cca605 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9434c482 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94709640 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x948f11c5 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94acb68b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x94cd2785 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x95243ba9 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9544e020 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x954b3e6a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95617a98 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x956b34cc crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x958207cf klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9587b9ae adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95f392de snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962193c1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x963a90e4 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x966caed9 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a7c164 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x96ac5e1c br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x96b28d4d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x96b66aef sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9709ecae devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x971d3069 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x971dd470 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x97464789 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x9746e8b3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x97733158 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x97885322 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97c01e00 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x9804a5aa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879f303 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x98b552f4 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d44bae tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x98e29de2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98e5f413 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9938e51e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x995b38b2 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997157d8 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x99724d01 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x99a0d0c4 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x99a842de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x99b2da9d crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x99de368b crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a450439 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9a7d64ea sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9a835c60 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a857da6 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9899cc snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x9abb5d85 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae184a7 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x9ae800e6 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0298dc snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x9b1b3882 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x9b7f27de pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba7731b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9bc752b9 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9bcf0ce6 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x9be5daea sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9c649e42 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9c885188 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x9cb14921 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x9cbf9b63 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9cc3d15b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9cf647e7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d673fbe ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9d69ab07 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d95a4d7 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9dae7e73 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9db7d7cf disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e01b1d9 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e25b7ba crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9e3f6c96 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e87927e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e9efb53 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9eaefd87 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9eeb0ab7 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9f0c013e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f150c86 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9f183e2a mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f6a0c7f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0380a86 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa0557c18 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa063ab79 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa0a39c48 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa0da1ce5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa0e662fb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa136127e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xa1386959 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa153e3fe platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa176673d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa185ed07 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e5b72c register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa1e84956 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xa1f0c872 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xa2370cee dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa23a4fda rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xa24e1f4a skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa25b58d7 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa26a1589 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2dcf5c0 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xa2f65fb4 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa30a3ebb n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xa346f784 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0xa378c472 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d59b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xa3a2ec52 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa3aa7f1d ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xa3c3df61 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xa3cdee26 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa444a3b1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa451f59c anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa475a46e da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa491d494 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4b37423 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa4b555fa spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5021290 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa55d036e md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xa5692e9b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa570a5eb usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa57a69e2 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa57d5326 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa59a28b7 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa5d4ea84 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa5dd6fae arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xa5e97382 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f01105 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa5f96ff6 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa628e1f0 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa63bce05 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xa6523e65 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b2ba10 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa6b79a2d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa72081c5 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa72883cb net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa74cbd58 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa74e6f13 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xa754c65f sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa784604f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa784781a register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa789a7e0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa796c168 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a702b2 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xa7beb0c4 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xa7c27c1d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa7c94bbd ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa816a9d2 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xa82a9b08 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa82d8a2f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa8598f84 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa8b6c518 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9036c69 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xa94cc26f __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa9593110 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa9bd6c1e armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa4e2c6e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4fed3f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa857264 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaabce0a3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaad5f73b mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xaaeec927 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf917a9 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xab18e6bd scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xab1de347 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xab3aeb1e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xab3f65e1 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab908256 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0xac0d27ca unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xac1e1cc7 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad018b6c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xad0308cb pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad111400 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xad1e71ed snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xad357e7a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xad3a2239 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb67e8d inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xadb683f8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xadbf3ace snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf3fd2b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfd511e device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xadfdf721 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae397c4c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xae421ea9 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae836d41 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xaea4c908 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xaeb71d91 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xaebc643e bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaf14e750 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf4be96b sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xaf81dc1f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xaf858edf ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xaf941e76 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xaf9aba57 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xafbd7434 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xaffb35c3 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb0074109 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xb02f21dd usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb050d4e2 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xb0527695 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xb06177c0 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb0726421 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1892231 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1e54e26 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1f99848 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb21a5023 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb277efa1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb2b4dbc7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb2b9afe4 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb302bea9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb36495b4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xb37159c6 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb382ad65 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xb397682c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xb39cf1af tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b7c9a3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3bacfc9 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xb3d2ba40 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb3ece8f1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb4279733 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb43d878a ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb4541b91 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xb46fee40 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb47b6e20 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb498d149 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb4df91eb snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f200b0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb503120f bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb5186e07 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb527772c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb55756d9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xb558a2a0 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb5620e80 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b2f88a omap_install_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0xb5b365c8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5cebefc sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5edd6eb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6202a42 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xb645a840 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6870559 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c900f1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb6f44ffa ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb6fa65c7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb714ac0e dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb7499f6d crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xb7c4b0a9 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xb7e0ae1a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xb7ed482d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb8371798 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb844f63f scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb8487ba1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb851c4bd sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8520f29 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb860595a __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb87c2de5 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb88cdab9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb894cb6a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xb896c6e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb899d396 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8a11d9b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb8a5f842 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xb8a7d2e8 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb8e5d14f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb8f5a09f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb956ebef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb979e589 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb97ca623 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cffa6f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xb9d00832 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fdc905 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xba0bcd72 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xba267130 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xba42aa46 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xba79ae5e init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbad6acb2 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb04afae bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1f28c1 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbb2e3bef page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb9edd23 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbb39e14 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbbb3cf2b omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xbbd70e80 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbe68185 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xbbfda9f2 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc08b7ef ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc173cef sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc60a66c of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc922a2e gpmc_calculate_ecc_bch4 +EXPORT_SYMBOL_GPL vmlinux 0xbc993b00 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xbca26bd8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf0d703 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbcf9eaa0 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xbcfa579c snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xbd059cec scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0xbd07a52f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5ffa40 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbdbecb37 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xbdcd31b6 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2ad49 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2a1c2d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe2ed02f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbe2fa7c7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbe993bc2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbecdaf5c snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xbedd491e tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbef2c09a udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbf16ca06 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbf1d34cd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbf5af391 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbf784edf serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbfaeed32 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbfbcf60c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbfcef4b0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc01bdf1b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc02d498d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc073e9b1 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc07681e8 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0907d22 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc09632ce usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11777ad gpmc_calculate_ecc_bch8 +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13083ba scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc159056f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1b2cb27 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc1b6acb3 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc1d72a88 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1f47c7b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xc1fa0a5b ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc1fe8f14 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc20b2b17 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xc20f563e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc218b95f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc26d4b46 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xc270470a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a8891a mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc2e59f9f snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37bc5cc __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3925583 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc40f5857 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43d15f4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4584a3b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc45ed40a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47922e9 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc47fd9fd pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49aa110 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc4a1aa1e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xc4a86265 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc52c8dbf md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc52e5023 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc546abb6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc56b7536 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc5d1f2d5 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc5ebe28a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc60a44da da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc60a730b klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc60e92ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc6257488 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc664b474 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xc68104d9 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xc68a13d1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc68b0f4b wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xc6966361 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xc6cce9d2 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc6da4e8c clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc70aedca ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc71e8133 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc753db35 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc768bd7e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8862b9f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc88e04b2 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b9e927 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc8cdc6a6 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc8d81b71 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xc8e330a0 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9223a40 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc9256583 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9497af4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95cb807 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc97504d7 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc977635b wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc986f36a __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc98b3154 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc9ab1102 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc9b449a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc9cd42b0 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0523bd unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xca0bdf81 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xca189247 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xca3d7217 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xca702e7e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcaac2b7d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacb0de2 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xcaefdcb2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb273676 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcb42a318 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xcb6984dd md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcb901d33 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xcb9d7067 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xcbcaeebb of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc026731 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc4ccd63 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xcc7e062c fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcc84417f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcc94bf42 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcca56d7b anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccc2c2c5 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd08b49 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xcce55f45 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xccf7ff54 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd02854b usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xcd1c5435 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda55c8e __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdb32b8b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcdb79b68 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde8df00 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xce07c44e crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce36ebdf tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce57e9cd crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce6008db class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce741c16 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xceb78267 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xcef8c05b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcf63a796 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xcf694cb6 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf74c14d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbe9824 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfecc114 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcff6f0a4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd009ac08 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd0f526a1 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd0fe5771 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd172cfc7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd19b6ac0 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd19fe2d4 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2119ac8 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21812f3 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd225c73f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd22f2596 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd26ea448 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd279dc25 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd28e58ef snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2e33a2c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xd2ed919f crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd30799da debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd315f0ac wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd32dbdb5 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd365f356 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xd36dfa85 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e3da93 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd3e61495 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd429a109 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd45c9f79 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cbd15c wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd4cdb201 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd51940e9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd529100f snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd547042f sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xd54ede1c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xd553b0ec usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd564f0ec debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd58d2a29 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd6448c0f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd65a4f41 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67d8256 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xd68f7e35 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6a36d45 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xd6a6e14a led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c83e16 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72360e9 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd783d84e sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7a9f0a6 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd7cd31ea max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd7e5bade filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250b0e amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd8672646 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8804eaf power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8ff30c8 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xd9410817 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94ee55a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xd956cdf6 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd9574f05 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd959f16c ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd978fa47 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd98a1274 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd9936d1b kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xd9d4bbc2 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd9d65764 snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9e44173 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9eef782 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda1c90fb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6742d3 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xda7b1989 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xda9a2bd3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xda9daa67 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdab4c23f crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xdad1184e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb3e5eef attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb41b320 __css_put +EXPORT_SYMBOL_GPL vmlinux 0xdb882e90 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba95fd5 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0xdbaad53f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdbdc469a css_id +EXPORT_SYMBOL_GPL vmlinux 0xdbe47526 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xdbf3a960 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1b73af class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdc42ad7e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdc4fd0bf __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4380f5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xdd6a1f6e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd9c1272 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xdda21a9d tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xddb4d139 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xddb596e5 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddb5ef3c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddedfa31 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xddf95a5a tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xde257f3f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde2c2c9e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde4f3a80 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xde7fca28 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xde84b2d0 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xdea7e785 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xdef7add8 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf206211 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xdf32125c device_register +EXPORT_SYMBOL_GPL vmlinux 0xdf5dfa3f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xdfaf30bf hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdfd20550 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01984bc ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe01a792a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05f57e2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe072b5f5 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe07a53ce sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe083fc1e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe08bea94 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe0b79e0c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0e027c2 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe0f1e53f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe0fa2dd2 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe13eaeb5 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe140bf9a tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe167a387 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe17edda5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe1cf4e64 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe1f309d3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xe20d2695 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe226d805 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe22d25e4 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe2445b46 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe2583226 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe2799099 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2a84110 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe2bb89e1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe2c1a788 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3292a91 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe350f71e __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe35bac32 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xe37b0327 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe37f2e4f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3cee0d1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe3e75a53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xe3f5c4c2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe479ace9 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe48890bc tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe5219b78 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe525f815 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe548e50a mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xe56554a8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5ad30e0 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe5b68fc7 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5d05917 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f93cc2 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0xe605815d snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xe608a45e cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe61caa9a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe642aacc sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6532bee aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe67363e6 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ddc48c blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7170d55 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe738a885 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7704e1a crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xe77d02c7 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe78beb9c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7a4ad0b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe7c52fb0 snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xe7d5bb66 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe7e51396 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xe7f41db8 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe7fcd9b4 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83e45cd ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe86049ab sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe8611953 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87a3bf0 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe8cffca8 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9676c91 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe9695e69 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xe9c2f46e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xe9eaf9eb platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xea061af2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea77fc68 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xea814c57 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xea8df3d3 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xea925f16 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xeabff6c4 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaeb4fc6 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xeb4f2ebe bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb157c8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xebd019c4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xec010ae9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xec03a6f5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4f1f55 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xec4ff8d4 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xec527b61 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xec77e5d1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xec9bb35f sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xecb23d2a crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xed053da9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xed16a780 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xed62b65b get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedc49414 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xedf0bb65 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xee088f76 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xee315eb0 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xee4ae36d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xee4d7720 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xee572364 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xee6446bd usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xeece1cdd crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xeefd62e1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xef356e9f ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xef3eefaa snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xefa314a5 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL vmlinux 0xefa6a97b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xefc24632 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xefd0c647 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0397610 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xf03eb403 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf052554c omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf0538c24 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xf092aa80 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xf0a2c504 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf0b7be48 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf0c5456d elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf0dcb4b1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf0f238e0 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0fe30f5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xf1123925 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xf134b947 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1ae3d2f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf28d18b8 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xf29a92d1 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xf2ad93cb max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2b92053 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf2ceff1b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311d30e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3607ff5 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf373bc99 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf389d88d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf38bf47c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf3a110d4 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf41cb38d sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xf421b4f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf445da38 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf4599ce5 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xf476e1ed __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf491de7d pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xf4921751 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4cfbad1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5483370 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b547e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf5a1cf05 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf60584d5 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf6785339 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf69da358 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf6b07ab8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f67ae1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf742d1bd ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf76949be snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xf7dd8dc5 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf7ffb790 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xf80e4473 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88670e4 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xf896a45d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf8bd2331 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9000681 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf908b8da blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf90b8bc2 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d046f0 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xf9fe284d usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa9e5b59 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfad315cf snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb33a69b dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xfb4364df __module_address +EXPORT_SYMBOL_GPL vmlinux 0xfb66a1b4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb4b460 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbc4bf09 device_add +EXPORT_SYMBOL_GPL vmlinux 0xfbeda43c devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc026e64 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfc19dda9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc478a68 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc58b637 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc597d7a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xfc6e4819 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xfc883ef9 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xfcaba808 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcbc914b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce24ea0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfd1dfd6c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfd1f9a61 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xfd6cd540 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xfd7cc1c3 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xfd973387 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdbd3cb1 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xfdd19a49 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdebea65 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe04176d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xfe16f0de relay_open +EXPORT_SYMBOL_GPL vmlinux 0xfe380b58 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xfe46dc40 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfe5c4c4b __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe5f0495 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfe6a4a8b blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe79862f usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfe97e911 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed21d23 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfef1b26f stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff4ecc9f register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5e4017 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xff6147f6 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0xff6acd9a ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xff73fa29 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xff7d34c2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffbe0dec dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffc8b098 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xffe0e6a4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1fa21 tpm_gen_interrupt --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/omap.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/omap.modules @@ -0,0 +1,2432 @@ +6lowpan +6pack +8021q +8250_dw +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +a3d +a8293 +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amba-pl011 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax25 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm5974 +bcma +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cmtp +cobra +coda +configfs +cordic +core +cp210x +cpia2 +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +davinci_cpdma +davinci_mdio +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlci +dlm +dm644x_ccdc +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dss1_divert +dummy +dvb-as102 +dvb-core +dvb-pll +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dw_wdt +dynapro +easycap +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +emif +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fm_drv +freevxfs +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +hfc4s8s_l1 +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_st5481 +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-designware-core +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1301_omap +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +kxsd9 +kxtj9 +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mailbox +mailbox_mach +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max63xx_wdt +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mk712 +mkiss +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +netrom +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +n_hdlc +nilfs2 +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +of_serial +old_belkin-sir +omap +omap2 +omap2430 +omap4-keypad +omap-aes +omap_hdq +omap-sham +omap-vout +omap_wdt +omfs +omninet +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +panel-acx565akm +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11-01b +panel-picodlp +parkbd +parport +parport_ax88796 +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcwd_usb +pda_power +peak_usb +pegasus +penmount +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +ser_gigaset +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-igep0020 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-omap3evm +snd-soc-omap3pandora +snd-soc-overo +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sdp3430 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-soc-zoom2 +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-omap2-mcspi +spi-pl022 +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +tcm_fc +tcm_loop +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test-kstrtox +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +tidspbridge +ti_hecc +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_tscadc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +uio_pdrv_genirq +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpfe_capture +vpss +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +warrior +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgmac +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/highbank.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/highbank.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/highbank.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/highbank.modules @@ -0,0 +1,2308 @@ +6lowpan +8021q +8250 +8250_dw +9p +9pnet +a3d +a8293 +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +batman-adv +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpck +bpck6 +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfbcopyarea +cfbfillrect +cfbimgblt +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cobra +coda +comm +configfs +cordic +core +cp210x +cpia2 +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlm +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dstr +dummy +dvb-core +dvb-pll +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dynapro +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +epat +epia +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +extcon_class +extcon_gpio +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fit2 +fit3 +fm_drv +freevxfs +friq +frpw +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio_vbus +g_printer +gre +grip +grip_mp +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdpvr +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbic +kbtab +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ktti +kxsd9 +kxtj9 +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-atmel-pwm +leds-bd2802 +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8952 +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mk712 +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nand +nand_bch +nand_ecc +nand_ids +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +nilfs2 +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_pc +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcrypt +pd +pda_power +peak_usb +pegasus +penmount +pf +pg +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +serio_raw +sermouse +serpent_generic +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-page-alloc +snd-pcm +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-timer +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softing +soundcore +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tca6416-keypad +tca8418_keypad +tcm825x +tcm_fc +tcm_loop +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl6030-pwm +twl6030-usb +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +uio_pdrv_genirq +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +wacom +wacom_i2c +wacom_w8001 +walkera0701 +warrior +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm8400-regulator +wm8739 +wm8775 +wm97xx-ts +wp512 +x25 +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armhf/omap.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armhf/omap.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/i386/generic.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/i386/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/i386/generic.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/i386/generic.modules @@ -0,0 +1,3701 @@ +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_exar_st16c554 +8250_fourport +8250_hub6 +8255 +82596 +8390 +8390p +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ac3200 +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acl7225b +acpi_ipmi +acpi_pad +acpiphp +acpiphp_ibm +acpi_power_meter +acquirewdt +act2000 +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2016 +addi_apci_2032 +addi_apci_2200 +addi_apci_3001 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adl_pci6208 +adl_pci7230 +adl_pci7296 +adl_pci7432 +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-agp +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd76x_edac +amd76xrom +amd8111e +amd-rng +amilo-rfkill +amplc_dio200 +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apanel +apds9802als +apds990x +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar7part +arc4 +arcfb +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asb100 +asc7621 +asix +asus_atk0110 +asus-laptop +asus-nb-wmi +asus_oled +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at1700 +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcidio +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqarray +cpqphp +cpu5wdt +cpufreq-nforce2 +cpuid +cpu-notifier-error-inject +c-qcam +cramfs +cr_bllcd +crc7 +crc8 +crc-ccitt +crc-itu-t +crvml +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +ct82c710 +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +daqboard2000 +das08 +das08_cs +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell-laptop +dell-led +dell_rbu +dell-wmi +dell-wmi-aio +denali +depca +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dme1737 +dmfe +dmi-sysfs +dm-log +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-raid45 +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +donauboe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155v4l +dt9812 +dtc +dtl1_cs +dtlk +dummy +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e2100 +e752x_edac +e7xxx_edac +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +ec_sys +edac_core +edac_mce_amd +eeepc-laptop +eeepc-wmi +eepro +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +eexpress +efficeon-agp +efs +egalax_ts +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +erst-dbg +es3210 +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +eth16i +ethoc +eurotechwdt +evbug +ewrk3 +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakephp +fam15h_power +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +fl512 +floppy +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-cs5535 +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +gsc_hpdi +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-hyperv +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp +hp100 +hp4x +hp_accel +hpfs +hpilo +hp-plus +hpsa +hptiop +hpwdt +hp-wmi +hsi +hsi_char +hso +htc-pasic3 +htcpen +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-pca-platform +i2c-piix4 +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810 +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i8k +i915 +i915_hsw +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icp_multi +ics932s401 +ideapad-laptop +idmouse +idt77252 +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili9320 +imm +imon +imx074 +in2000 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intelfb +intel_ips +intel_menlow +intel_mid_battery +intel_mid_dma +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel_oaktrail +intel-rng +intel_scu_ipcutil +intel_vr_nor +interact +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvm +kvm-amd +kvm-intel +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lance +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lne390 +lockd +logger +logibm +longhaul +longrun +lp +lp3971 +lp3972 +lp486e +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltpc +ltv350qv +lxfb +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mce_amd_inj +mce-inject +mceusb +mce-xeon75xx +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc800 +mdio +mdio-bitbang +mdio-gpio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mem2mem_testdev +memstick +metronomefb +metro-usb +meye +mfd +mga +michael_mic +microcode +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mos7720 +mos7840 +moto_modem +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +NCR53c406a +ne +ne2k-pci +ne3210 +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +ni52 +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5535 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_isapnp +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc110pad +pc300too +pc87360 +pc8736x_gpio +pc87413_wdt +pc87427 +pcap_keys +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci_slot +pci-stub +pcl711 +pcl724 +pcl725 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcm3730 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcm_common +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pms +pn533 +pn544 +pn544_hci +pn_pep +poc +poseidon +powermate +powernow-k6 +powernow-k7 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +progear_bl +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r82600_edac +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-si4713 +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-mrst +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-i586 +samsung-laptop +samsung-q10 +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc520cdp +sc520_wdt +sc92031 +sca3000 +scb2_flash +scc +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +smc-ultra32 +sm_ftl +smm665 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-isight +snd-jazz16 +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-miro +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-sis7019 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-mfld-machine +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sst-platform +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-us122l +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-laptop +sonypi +soundcore +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-pxa2xx +spi-tle62x0 +spi-topcliff-pch +squashfs +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sworks-agp +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t128 +t1isa +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc1100-wmi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdfxfb +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_infineon +tpm_nsc +tpm_tis +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts5500_flash +ts_bm +tsc2005 +tsc2007 +tsc40 +tscan1 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl6040-vibra +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +uio_pdrv_genirq +uio_sercos3 +uli526x +ultrastor +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +vesafb +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio_balloon +virtio_console +virtio_mmio +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt1211 +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanrouter +wanxl +warrior +wbsd +wd +wd7000 +wdt +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +winbond-cir +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wistron_btns +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_uartps +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/i386/generic +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/i386/generic @@ -0,0 +1,13539 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x5beeed00 kvm_read_guest_atomic +EXPORT_SYMBOL arch/x86/kvm/kvm 0xfc67e2eb kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x254e5667 scx200_gpio_base +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x35a3c008 scx200_gpio_configure +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x8cfa375c scx200_gpio_shadow +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x907665bd scx200_cb_base +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x24443729 acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/atm/suni 0x22b7aeca suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xbac2511e uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xcd3e6008 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x122d8c99 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x54b7b0e2 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x64c42a96 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7efa100b paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x8075db7c pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa9b00fe7 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc3c12ee5 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xd01d0ccb pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd22dc384 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd8d54713 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xe981d228 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xfcbc1bbb pi_release +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1291e429 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x637c38c3 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x63984edb ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x63cfb2ab ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd65262b4 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x83cc85e9 nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0x8f3378e7 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0xfa78b1c9 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/edac/edac_core 0x4b6d253d edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x00a25707 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0fa62c1b fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x13ed36bb fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ae8b066 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x26e2f5b4 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3028c519 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3847bb6c fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a22f2e2 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x45718802 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x49f8d2b7 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5437c987 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5714d3b4 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5850ea3b fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5e7a6387 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x649ff342 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86ca872e fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x92c0a8da fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x950f68b1 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaf6c4b29 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb137101e fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd220a849 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd4886749 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde9fc8f3 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec077c07 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee1e5969 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf14f6bd8 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01444638 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a36364 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a9ad2c drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8cae4 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04d05624 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0544d10a drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05946911 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0647bbb4 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0660697d drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06c101dd drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070be091 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x076eb1e0 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09061b59 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09b750cd drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b6f74af drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cfca50f drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1168437c drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x123b7f12 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1267af9d drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12b4b903 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e20337 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f8feab9 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e68beb drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2167fb3e drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x226f2b74 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a82fc8 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23c70ea1 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25d7c9e3 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x263f0b46 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26c1b39b drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28c77cb0 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a96e220 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ac8d8b9 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e61c695 drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe8a4ed drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3279c53a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3465ed3d drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3545e6c7 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x359259df drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x367b08ea drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36dcf6db drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac7afd9 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c242d18 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e9afed1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f474c1c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x410c4dea drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41469c24 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41fe8795 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x457643cf drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474e1750 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47c95af7 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47cbf385 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b53884d drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c05b914 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dca3e60 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dfb923b drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e278d43 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50dcc78b drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x549b2c8d drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554e7baa drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5597a300 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55d82f05 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56349a26 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x564b3f99 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b06cec drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b10363 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58aa6e63 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c9bb4c4 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d413248 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e1b203b drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e572b01 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f098f77 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6321d2e5 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x632e1124 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6354326d drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63639677 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ba5f95 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f18559 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a0597d drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ff9e7b drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ae865c8 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aea2e76 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b353b3b drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b3b6d49 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d3ba528 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f237a6b drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716eedb1 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x717ea72f drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x720d32cc drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72242bf6 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x731952f4 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73b175cf drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x774ad3a2 drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77af0144 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79ae3cf3 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8e386b drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ab24a20 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b834df5 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2419cd drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cf9caa0 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d1a82f4 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e2f0c9 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8390bce5 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84006b19 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x841c47b9 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x844995c7 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86136af0 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87b7213e drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e3d1ee drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87f8a06a drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x896c452d drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c346705 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d87f81d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x912c23fe drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x923317fb drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92aad9f9 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x934b98a1 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93ad2c48 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93b05de6 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96f25ff9 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99b39ee2 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99eb2f2c drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a251a20 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dfe323c drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fe9616c drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa107357a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4327268 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4df266b drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4e41ce3 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa576db98 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7233d6a drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa77485f3 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa958bdcc drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa54231f drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa6d323f drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab6d36ee drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xada2c7b4 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb023144d drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2295e1d drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb40b1dd6 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5825ec1 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7060236 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8de0e25 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba3b086b drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba545690 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb001830 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe911002 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf7e29de drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc018d6bb drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2054e73 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc697a517 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6fe8cc8 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf26fee4 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd009a95e drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd05968d8 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd075ba02 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bc78db drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bebc77 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0f7b790 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd193143a drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd26cd3f2 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd40dbf31 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd561859d drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9ebbbc1 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9f67d7f drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa73f0d drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbfc97b1 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc90e776 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde1fbc39 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf00659a drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13a6f4d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1401d8c drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe18b2c70 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe323b5c5 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe41fee1e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7e823dd drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe852ee6e drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9ffebb4 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea312883 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea655514 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed56f452 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed9eebc5 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee3ea1f4 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf37cf48f drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f038d8 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4220f62 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d93e1d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6b3b678 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d747b8 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf868092a drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8f762f7 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8fc0eb1 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf348b6 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b967313 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12a1de4a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1374113b drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1404fd4b drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15ad83e0 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b43d386 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x230c53ee drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3157ffc7 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x342bb612 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37a1f32d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50982166 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5487b214 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5611f9a7 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63f5d7d2 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cbcae4a drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x700b3bbf drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78912fdc drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7acc99a9 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f29c6dd drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bf5eb37 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98738f22 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb52fe8f1 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc066dc66 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6071c07 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc978baf1 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3e43d7f drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0194b44 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6c298a4 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe99d91f5 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed8dd0b8 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0ee838c drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8918c8f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x11233c63 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x2d5893c3 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc872895d drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02116523 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x085f6956 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x176b6938 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19d01c85 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b1cf3cc ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x201a8487 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2438adbf ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29fe5400 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ae6c161 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b941579 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34b7ec5c ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34c269a1 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x350b1f88 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e975654 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f313820 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4915fb8c ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4eaa6a26 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6622655d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6684c1a3 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f7394aa ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72ce04e5 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78219edb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dd0f746 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80f596a7 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c6c08c3 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92690fed ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92da04e8 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93c3d89a ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x995de717 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b8d3426 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ce4a54d ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e2e3178 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac0e71c6 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaca844bd ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb07410f8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb1e71b92 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9f09044 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba4a6f1d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaa2b414 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaf04b01 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9916f90 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc404922 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc83ee25 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce1151ab ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd164908e ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd0f32d8 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdddeb609 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde0550ad ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe126ab0a ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5417038 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe57126e9 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6b090db ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee4b265d ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2eaa709 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf83da03f ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa763dc9 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfecc003d ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffaf077c ttm_dma_tt_fini +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x35928652 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xe5c719b0 vmbus_sendpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x814d295b sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3705f664 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xf29e2b31 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfbf53939 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7eca7282 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb26dfbd6 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x1df6ee27 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x06d84213 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x077f09a1 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x0f712d6c iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x13f2c370 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x148a689b iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x216224f1 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x220d3ae4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e270abd iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x50d6a42a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x569415a8 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x694ddb37 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x6f51f373 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8d86de0a iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x91316ea5 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xa12a3f87 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa5ed22e2 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6931cea iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb164895c iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xb5a90ffd iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xbfd0e4a8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xd04ec436 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe4e9deb6 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xedaad082 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf1bed805 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x14d4f612 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x2722e40b iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ed679ff rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb93baf0d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc0bf4edc rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xe095c017 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x20550f1c ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x238dee61 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x399bd5bc ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3d4621cc ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x510e8cdd ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x53996c56 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5450105a ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x670c3696 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x689a41d9 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6c9f50d2 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83e32a0d ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x886addea cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8caeacf7 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb102d34f ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb4b3d2ba ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xca5bf5e9 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcf0cce9b ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0440a8c1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x086f3a75 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dc1e083 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17d94aa7 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19893ea1 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19aef1a3 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ca7bbef ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e4770dc ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33e3f5e0 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35108236 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3dcafda6 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f402b6 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44887d81 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49b5e902 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50d8c56c ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5422da6b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x546f7a5e ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x591f754e ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5aec9771 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c4af8cf ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c700ba3 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e574d8b ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x608d46af ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ba35e1b ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7030557e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7042e52f ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x741ee774 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x759cf34c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x762e69f3 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77674e97 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b300508 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7dddabca ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x844dee28 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95af2eb9 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97c13ae8 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e823c8e ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa05e93f9 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1534f27 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6d972a3 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaba693d1 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadc52998 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1b0f90c ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3386e4f ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb41eacde ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4e8d6ab ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb572363f ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6fb6d80 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb91507bc ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbae1f7a5 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf49e8cd ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf8369ca ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2c45aa0 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc69d007a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7e06385 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca2aa995 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcef14d2f ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2d909c4 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd49af890 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8bdfc74 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8efd162 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbf506b8 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdccda88b ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd808b8d ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddea3160 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1aac1c3 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a21113 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedb144e1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1cc98ad ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1f55178 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf559be16 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfade8063 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfff75497 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2fab0a87 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3396e384 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x37e98ffb ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x48239c57 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x506e9f7f ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x551f9246 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6bbe84e5 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e351283 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8b31cefe ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8aad78a ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe2fad38d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2edb80d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x23d1a8b1 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x52b18148 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6e44fd9f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7de42542 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8001438f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x978d0b1b ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf1f2fd93 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf4e5015f ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x07229b24 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b1497b8 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x291cf18a iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5323c9f5 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb1e89912 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb8f9df42 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd0b57d0c iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xda056d7c iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25e1d655 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a800a47 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3dfd2a2d rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x47a949ed rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4d400d29 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6d37a427 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70a30090 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d3f7aa0 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7ea33ca9 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8c8768d8 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9e860fe0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa594d8b9 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae1f3c46 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb6499e33 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb709b779 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe6b7cb6b rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xefecea53 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf6b76312 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf85fa738 rdma_destroy_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0488d5d0 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x12c0e12f __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4e8ab5ee gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x590ecb0e gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6be35c2a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x88874262 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9e6c1e46 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed51bde0 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfc3f87e4 gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x0488380a input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x29e57637 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xae689ecf input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xba0df3bf input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x54db82b7 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x85e2788b ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaf1af2b6 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf1092a63 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf6e520e0 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xe0dd12b9 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6b72d515 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x71913463 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x86ad668d sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x983c5cad sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x999e0da8 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdb8153b7 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x23548ab6 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc72d5c17 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x05be9ba8 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x06290e4b capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0b8827b0 capi_ctr_suspend_output +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 0x3b76f0c5 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x45edc3eb capi20_put_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 0x66e3709f capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x79fffab2 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 0x8a7e39a5 capi_ctr_ready +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 0xc535b318 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xde91d257 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x01437e95 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x245163f6 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2d70b3a7 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3d9f375f b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x41665518 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4481a6aa b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5a5597cb b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b41e3aa b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x780d6929 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7f9d8ac9 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb06cbecf b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc9d36731 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcd52fd04 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe1040cf1 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf91ef606 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1a1b8dd0 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1d803099 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6c7ccd75 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x91af16e6 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x98babcae b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa209b795 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xceae8a5a t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdf4025c2 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf8825737 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x64042b01 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3985757e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x59db95c7 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7069e399 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7e9a01f3 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x378a6b05 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x638d9757 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 0xacbffb9b hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb22bd0fa isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb47a057a isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc2e4fd08 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc833a618 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdaf07a36 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x79d45cee isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb23cfc7e register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xde6b9c39 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 0x1368fb23 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c50dd87 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3583ac19 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3a2af295 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x662be8b3 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6ec55d77 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x78103f99 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7af6c5a7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8da2448b mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9132c488 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9856b19b dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa3d7a727 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7ce0f6e get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbd78c6aa recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe2dae9e mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc7fe3af8 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd0511a00 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd319dfb2 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd9e273de recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdaa9e264 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xddd0e052 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeda44ea4 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf79f1b71 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x152d581f dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x2a716167 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7f6197d7 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa3009680 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07d9bd86 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4249fb42 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7da99df6 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8b2a1537 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaa7a229b dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdbad2a0a dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xbfe19c0c raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0xf0570515 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x44441a28 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x65c7944f mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0xd8198bc1 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0xfe3db487 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x72966cf9 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x59b365e5 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x8e334979 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0xafec3453 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xc32abef4 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0xebbd970d tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0xe6856ef1 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0xbf302b9e xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x6d46bfdf xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x076f7f16 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2729d392 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2a7bfc7c flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2b78e278 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2f3a4de7 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3580001d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x42b643ed flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x56f818e4 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x683011dc flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6d4d58ee flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6dc7ff17 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x81238a5b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa90a1080 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xb9437ed8 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd1d1f401 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd6727eb4 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe00a8daa flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xeb41a972 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xf44c1e4a flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xf59b7c7e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x1663b021 bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x61ae58bc bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xda4387a1 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xf3722092 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x1065e6c2 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x33712402 dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x5ca11acf dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x70ceef7f dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x727d94c3 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xed76b664 dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xef4d1794 dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xf66b6f7d write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xfa02f45d read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x0bd67dc8 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x06f09ceb dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x07ac0bd0 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x101a29b8 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x16bb9b94 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x196f1ac1 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x237f7910 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x300f2abb dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x398b9fee dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4c70c35a dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x58623467 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6f668974 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x77cd949f dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x79c41423 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7e407cd3 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x934a2063 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x94ec478e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x97bd4310 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x987dcfde dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb5bb45ec dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb72b5fa0 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbb3005e3 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbdce2421 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc9e66099 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xcc801ae6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd2516685 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd3ee7530 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd63fcf5e dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb5c53f4 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe31e0aad dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe695bca5 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf196cbc5 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf27f8732 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf3fc66c6 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf8d64232 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfcc0ed9c dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x0869f30f dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x13ab3741 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x3e51710e dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x5df28cd1 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x706d5cda dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xbb6c7ca3 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xe08bd067 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x5ee7d02e af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x0486fc24 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x12165454 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x13be9a6f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x24def1e8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x2ebc985f dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x533c4b5f dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5f638877 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x70a09bf3 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb7fd6a45 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe0a5baf8 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe6fe5fb8 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x6fc95992 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0x70b65f20 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x03d5e60d af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xdf32f815 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x24e12006 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x64f55730 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x678bbcf4 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x7043466f au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x93e07fcb au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xd95a9601 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdadd8be3 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdf979b89 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x5ec7400f au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6d37b60e bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x4431d14d cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x64b728e3 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x0b9ebcd3 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x93f26932 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xeb10baff cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x3f3500dc cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x1aa0ff4e cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xb52b59f8 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x3f6f41bd cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x1a71ab68 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x7f49ce49 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8d31752b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa6135762 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xfc2615f0 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x180d508d dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1f13b430 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x29fc6c70 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2cdea5c6 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x424ce163 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4d0b6605 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x55d59e69 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x57663751 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7348e53e dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7da8688d dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x8caa9b05 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x95216df0 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9d8f2188 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xabd83bd9 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xdaa1be4f dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x3fcbc62e dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x091e4afc dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x19f94951 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x1eef6088 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x54f7c6e7 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xade48d05 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xbb789321 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x744af468 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x7c1ac948 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x907fa8f2 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xad5f25a3 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x018b6218 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1c130668 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x2142090b dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3f305649 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x42296529 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x50065735 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5d909c5f dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8a04f6b2 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xa40b47f7 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbb0bb439 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc129b21d dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc211fa63 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc73af1f5 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd2c55cfb dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xf8682d8a dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x01aef7fc dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x02457404 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x0e125dbf dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x0e508698 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x141f76c0 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1905a2b7 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c41fdfc dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3a667529 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4617a2d4 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4b4217a2 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e5d78b0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x54c6ea95 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5726ce0b dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x6afa9b97 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x987ba246 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa2a25100 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd6c32498 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xea0a504b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfe2fb90d dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x4db250b9 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5288a1f2 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x603e55c0 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad9bb0a4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xf564a402 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x2fb6857c drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xee4f36a7 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x1d2cc282 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x6e35f13a ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x204b3b59 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0xe33b88d6 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xa5c1bfce isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x537ccb0c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xae122e92 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xd145a357 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xf270cee4 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0xaa96febb ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xc28a3037 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x2b6e62b0 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x37b21bfa lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x5f523b12 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0xf27ae5f0 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x10022528 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xd78164b3 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0x6ff05210 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x57548ad5 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x1fbbbf04 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x9cd6097e mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x89f28db5 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x22accf7d mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x4707e316 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xad21868d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xdb406683 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x783786bf or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x340363bb rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xa301d9a3 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0xe9313455 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0xbdd2284f s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x65a26269 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xf7998a97 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x6abd1043 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x4642295b si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xf80bd9cd sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x5fab7078 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x6a468673 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x0f8cf404 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x58ebc295 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x0005ecf4 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x68452657 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x9003f5be stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x605c17a8 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xfa968f87 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xec6ab479 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x6349ba89 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x703b339a stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x42829914 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x469546c1 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0xc5de308f tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xafdc1e1d tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xc877bac0 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x291b30a9 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x49227926 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x27e0033d tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x2eab330e tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0xcf305f47 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xcbc96c09 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x125d4eca tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x1874018a tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x4740e5c1 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xe849353d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xf0fdd93a ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0xfa9a2368 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfb744f60 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xddb7bb69 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x8ea86844 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x4ad22672 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x611527b8 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x22fcf67b lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29759d1c lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x53ffa6be lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x73358aa0 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x73ed26c3 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x833a324e lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8a957fae lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe73be933 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x014d7ba6 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x97fbb5fd ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xb1829003 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xb5188828 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbad64116 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x6c36048a btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe1c0cc1b btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x3fdf4747 cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x4070b729 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x766b7031 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xbc05adbe cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xe33fdf9f cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xf59d4f00 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xf7b93e69 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1da0c2fa cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x265974f6 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x41b7dcec cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf9f7aacd cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x1b184623 altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x1b2c9d1f altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe26604c5 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x29f40dc1 cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x380d07f8 cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x4c25b692 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x4dad0d30 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x88854a7b cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xaccf30bd cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc328f0ae cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xd76b0afb cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe1922395 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x79450636 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xaca34446 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x1a78b734 cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x4a7198ba cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x8a6c3c41 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x923e4033 cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xa51dc43e cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xb6a1a34a cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x743fdffc cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x76d202d9 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x81614c75 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xcc2a2451 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xead35003 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xf9e0b3d6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x13d02d3c cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x16e42039 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x30e5d69e cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3ef12e51 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4b2520bd cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4cbbf788 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x54e20582 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x61faee56 cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6515f7ba cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x67d31835 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x703600fd cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7ba2c5f8 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7de4aa03 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x9ef2b19b cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xa863fdf1 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xadcca3f0 cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb0ee609d cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb1756a9d cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb3041d20 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xca2cd0a0 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xe8bc5591 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf45a2b92 cx88_core_get +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x1aebfd54 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xa30b8e04 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x0e9ef1b7 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x125b02db gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x2df04766 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x30c9eb77 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x55307e6f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x599f8c57 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xb4ed6450 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xc87c4e54 gspca_resume +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x221058ed ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x25159d21 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x2fa22254 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x5c5b2f98 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x5d89669e ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6f829e1e ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7b00dcca ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xbc211043 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xcd12a38c ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xd6aa091b ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xdeed1052 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xeb13cea6 ivtv_api +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1141c8dc saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x2d9a2288 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x35ebf7da saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x3d0835ba saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x42c7bfb7 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x4344770a saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x64349648 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6ae5a40e saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x7cd198f5 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x91ae77c4 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb5a84da6 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xf5063d41 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x052be526 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3ff485f9 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0xb293dbe2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xd41afcb4 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xe6201eef soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf7c692da soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x094494e6 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x3af8fe64 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xf02dba7e tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x68dde014 tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xacd4fa70 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xbce9fe12 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xf345167f v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x2da6f339 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x9233e698 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xd82a6cc3 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x255a57c4 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x3839814b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39eb1973 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x420526b8 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x881538da videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xe67085ca videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x03e63916 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0421ecd2 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x06cb3e63 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x089cad7a v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x1529d90e v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x15bbcf30 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1f611f50 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x20ea6af6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x2a90c159 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x2c19b300 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x2e22958a v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x2f953705 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x30302e3e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x32fab8bd v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3735fd81 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x40900fd7 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x41eaf502 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4c5664d5 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x4f276bd6 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x512b1e7a v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x52761b54 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x534ee328 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ef15d38 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x6a7881fb v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x6bab89de v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x75961ab2 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7d516cb1 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x85d35bd4 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x885225e3 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x9ba98d8b video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x9e7cf413 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xa010a507 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xa21f0d07 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xac5935d2 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xadbd7174 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0xae998cdf v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb28c42f2 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xbb38f880 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xcc09f08c v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xd2c5bac2 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0xd31e2ab0 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xdef4f984 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe19dde67 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xe1e73380 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe36e559f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x58f3d352 videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x60d838e7 videocodec_detach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x9037dd55 videocodec_register +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xd0f74d69 videocodec_unregister +EXPORT_SYMBOL drivers/memstick/core/memstick 0x083b4ae3 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x15760c1c memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x750d888b memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7fe57992 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8db7189a memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9b79d7e7 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9f077049 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8a4d157 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbf4c8e54 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd380bb1e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeedc8e53 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfa79277c memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x078266d6 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x114a35da mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1751bcfd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c9048a9 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d3eb9b3 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d910e84 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x352b6349 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x40bf6fc6 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46fcc782 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x496e8224 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4fe267be mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5054b11b mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54974b71 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63a8e8cf mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x64335da6 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8315b735 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x83aba0a5 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8406938c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8c758125 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a26e211 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb38c6d34 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbefc8fb4 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbf9747bf mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc58b7750 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9177be5 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe1215861 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8d9d6a0 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb8c7363 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfdfeb544 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x02c5c2a2 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07e33fe6 mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12fc4241 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x173dbcb1 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1aa24f5c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1e43621f mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27f7cb8d mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x28a3fecd mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b824452 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4be612a3 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c914564 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5fa87490 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6342b674 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6bc59eea mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8289f02d mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8549a737 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8956fcba mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x934b692a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x997dee76 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e1e2ea mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbcd68720 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe9c6c203 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf5099c35 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf525e4f7 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfa9512c9 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfce5812f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xffc2fa1f mptscsih_suspend +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x01b60a63 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x04810f57 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0563e45b i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x352e1c4a i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x611534ff i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e0d0435 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e667859 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x702e86a0 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x76f0c0d1 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7f3f9d4a i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x83506aa6 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x87acc3bc i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8e8979cb i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9f11befd i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb8e9a85c i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbcb9145d i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd64e4a5c i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xebd2878f i2o_parm_field_get +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x32eed5ae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xcb00468a pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x09cd80b4 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4230f9d2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7aba4e67 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7c5a9c36 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8eacd1f0 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8ed78957 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x95d12b9a mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x98fb8aeb mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9fd6d5be mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf66597a mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb6763d35 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xeaac910f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xee72ac30 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1a4b2c2c tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1fe5d0d1 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x326412bb tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x06fae09b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xf3a9f50a ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x567ffc0b c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xd488ce45 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x3f334b1a ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x811b5f79 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x084cb48a tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x184839b8 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x32520f63 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x43158c66 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x71f751fd tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7e61773c tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x8934d413 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x9bfa25ca tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xa5bd4527 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xac035e57 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xaedfe1ca tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xca37275a tifm_unmap_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xe3d8f5a4 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x24cf80e4 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x635519c9 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xac07c4dd cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1b67d57e do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3f2a03c4 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb1cf0f6b map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe5caa031 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x34aa5aa3 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x2373a73a lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x41414e27 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xd5e39bbc mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf247c6da mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0cb63e6e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1da68d0b nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x31319c96 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4d3d3369 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8420013d nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xcbcb82b9 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd570e639 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3828833e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5f4aff9d nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x601815ea nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xc781b2aa nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdd034800 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1204c49e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3ed67e1a onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6069f1ba onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x79bd4f09 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x447a6ab1 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x59f5140a arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6e80045d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xab97cdba arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb6fe8dde arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9e0d748 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd8bebeec arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xddb1b57c alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdffc03df arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfa597a20 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1652a0c3 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x48307eb3 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4ff0d823 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1eeaea44 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x578fe927 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5a7c186d __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x64d060fb ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x90e58b0c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x98fdad78 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa6a7b509 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xac242c64 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcc3dde3e ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe7aeaff4 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x1f2a5911 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x23726718 eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x2ff5480a eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x40e86c2a eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x4478f6dc eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x96f05ac2 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xc9de3db0 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xd5e769cf eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xdbdea44b NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xf01690de __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0xc12088ac bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x0f51465f bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xe0181d84 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1ab50a6a dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x212ee778 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x36123dc5 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3cea7343 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4c6ebcc6 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x51d83fe9 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x593fc4f8 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5a609a71 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6befdaa6 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x84586817 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa30f7b96 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xacdcbc19 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xae0ec109 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc74895f4 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd77ebd47 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xed9c5b28 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b0125d1 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x24bb22f6 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x29c42769 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x327f2f27 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x39133f7b cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3c3719fd cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49c37894 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b78aa04 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x680d264f cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x68580bc5 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x905fd754 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xafa7a760 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xafe5b80c cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbd4f18f3 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc581e4ea cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc9ec384d cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdfccdce6 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe7f857e1 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeb28c104 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf4c98d26 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x12c310b4 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa0c02e94 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06c35864 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1131dc mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1143d474 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f23f9dd mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46ec649a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80bcd647 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x964d8b82 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa628b1e7 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea9c9631 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf66c0a1e mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x15314692 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x57e81b35 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6c656c20 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa69a654b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe750c7e7 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x097ff153 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x29c60e31 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2c0c464f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2fb0f5f6 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5193d5ea irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x55703278 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8e96fa15 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa59427f6 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc64f4bde sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe7eec427 sirdev_write_complete +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6d81d2be alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x74497727 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x738dbb40 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9162ac36 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa236a51e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x9c221b2b sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0f9f28a8 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x17e13432 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1b9ea25a detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2470db37 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x24f6b125 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x29317e74 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x614820e9 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x66a3a01c hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x69e18492 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x970e1a91 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9faf71e5 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/z85230 0x0623f1c5 z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x066e2494 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x10a546c5 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x1539c8c4 z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x2ec294ac z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x388f52eb z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x3c1b2bb2 z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0x4bae3da8 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cc187c2 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x6e7acef6 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x8cb64997 z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xa10cdb3c z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xb89a03c5 z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xecd1cf02 z8530_sync +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x64a5575b i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x6f8b7fac reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x7b9678a0 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xa3ccc3aa stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0a3495b8 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x222994db ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2ab0e61a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x38b5c490 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6cf4669a ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8a289ca2 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9b6fc5d0 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa97479af ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb87d9415 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe26b2e80 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4c8f3c1a ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x502df1df ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x50ec5c3a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x65df5a71 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6f75496d ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7a771d8f ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x97e11377 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc257ed11 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc36442aa ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc418a8bb ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2992e455 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x304b6ff7 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x33707711 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x97452b5d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x017173e0 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01deb6bf ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02f1264a ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07f9456d ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x081d92b9 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08493c8c ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0956b8d4 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b64bfe6 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d5f59fd ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12d24805 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14b7cbbf ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1db19e78 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dde35ff ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f2e1b67 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f370c64 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x249fb925 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x281b6d95 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x281db471 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29efb2be ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2acfad1f ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2da05677 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ff18b33 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x332acb13 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40ee2aa1 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ec58ce9 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x508f8ee4 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5be75c79 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x641321c9 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a411cd2 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6aaca91f ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6dc78f00 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fd6fb68 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x771091db ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77f69864 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7986b3ae ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c3dc462 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e05ee13 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e0bcae2 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x800a4cbf ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82b13261 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83f863bb ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84941fba ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86ca13b3 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89f92c74 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a1241b7 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d217350 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x917d460b ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94c11f9b ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9511d2cc ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97daedb9 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x997db354 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b9e75cd ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d6b9414 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f67dead ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0641614 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2fe149e ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa39d9a1a ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6f0510b ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa94f5546 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab063379 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac609818 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad9a4b48 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb173f727 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb287ac3f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3e68976 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb43a76c7 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba8ee305 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbae49d41 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbecebff ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc79ab25 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe2288da ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3172cdb ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc372a85d ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc713f6a6 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb454de3 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdd95e20 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd255fecc ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9ded543 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbc70748 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe29f2d32 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4afd42b ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4d65f1f ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5e9f2d9 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe691635e ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe71d2b56 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe84c08b8 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9a8a437 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee2ec612 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef94c8b2 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5414a9a ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8f88f1e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffffe7bd ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/atmel 0x39be9ec0 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa4213b7d stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf3bcc271 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x75e7933e brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xcf0c1666 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x15f94df3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2294d701 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x36f7150e brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5ae6ecb5 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x789d1b9e brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99686a65 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb597533a brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd1b1933d brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdcc4ba44 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xea9d7b97 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf0c579cb brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfca37f6d brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x026c4b35 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x169e3f83 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x263a379b hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2ef142bc hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3033bb4d hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x37c3fad3 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3ae16c31 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4d085c1f hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51f6fde1 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5510c6bb hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5a9c38ff hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x646ecd57 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x77d50543 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x79d355bb hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7d20ceab hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7dc16f71 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b18718a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9db38e6f hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc054b76e hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd5f3b19 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd646d01e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9c2ea90 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec5898a3 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf092626a hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfea607bc hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x057fd477 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x066bc339 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ec639ca libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1f06da1a libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x30f2e66d free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x316f1bba libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x31d7c40e libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3a8be754 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x456acd28 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4792ea61 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b44e0f2 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x734a6a22 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7b3e7396 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x82311f84 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5a8e37a libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb16467d4 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb9aa085c libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbc8eefc2 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbe609f45 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd0a21fe8 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf4b4ba00 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02436faa il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03ee2bc7 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09c8106c il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b65d2e8 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0be2164f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d619d43 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eecc86e il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15037353 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16bbcb19 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17d0f2de il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a4499e8 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1aaac436 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25e0b967 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a9d670b il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c76f8ab il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33a7ef1e il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34d47139 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36ec2f4e il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37a16063 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39de028b il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3afa814d il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3da250bf il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4576c381 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45bf4c16 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x480fd31a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c928be1 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f2aa116 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54c6b65a il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57773a42 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a41cfc4 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d2ad6b2 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e7acccf il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5fcf42c8 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60268f3f il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6158b3f5 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x643de972 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69047733 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6941f51a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7048978a il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7880619d il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7bacdaab il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x821ea4b1 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x859a2929 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x885e69e3 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89d4f02e il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ceadccc il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f43e401 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f86387c il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x909ad6df il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93273ea9 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96233501 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x997c3e8c il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e6a3a5e il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0be21a4 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2465b86 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa26f58a5 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa46df8b0 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5994453 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6d3792b il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabc41620 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf6cb323 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafcc740b il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb38310b8 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3cf66fe il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4b2ef42 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4e3efbf il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5be820f il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbedf67a il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc346401 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfd22db7 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc047deb8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc44c6f4d il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc57036c8 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7afbe0c il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca385380 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca67dbe6 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0da0b2a il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0fca6ed il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2f0e86c il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3680daa il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3affee7 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5f61d1a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd993331f il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9eef94a _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcbc37a7 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcd2f554 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedc8291a il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedc89709 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedda6bf9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeb89564 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0f5156a il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf19d7706 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf28ee6bf il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7e9e4f0 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf927a2ea il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa019c9b il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa287fcc il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc2d6e0e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x00d5e399 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1dc5e8be free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1e49c09e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x223fbed0 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x231cc126 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2904e9a5 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4e8cc843 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5e50b610 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x67fb5615 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x780f71a5 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a8d4141 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d0b87b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbb2a518f orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbba53cd0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc407923f orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd8b4c464 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf0780947 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0830dd70 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x09d1a082 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x166b0202 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1a7a8245 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1f637cbd rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2df93f07 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x33d6999b rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x356075a0 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3e25557f _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d58d612 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4db01aa6 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4eea1a67 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x504344a9 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a3ea953 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64e6a3c6 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x65ba6f0e _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a570823 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6d2ab53c rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6f62b0a0 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71ee614c _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x72b35c5a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x730b02dd rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79141cfa _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ed0cd99 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7fa32591 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x83f34599 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b7dae67 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a5fc861 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b0a28f0 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d51b899 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9ecd8cfa rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb45ee163 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb69abdd6 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb9eb6ab3 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb4e5a24 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc949d1d4 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcad7cb70 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcbccb9a1 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd0dce126 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea45dc1f rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xef2b4cac rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf27c8206 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0c32657c rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1982f044 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x19b05dda rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1af9775d rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2a7603ed rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2d9996a6 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x46feadf5 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51eaea6d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x57b7de74 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61056e4d rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x67dd086c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a294d6c rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fb69986 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x90bc4e01 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa3a0cded rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa77f973d rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa86ce820 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc3ef7021 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc7fa4b57 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd88e0236 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdd2a3111 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe5607f4a rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe934abf7 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfd8ac6f7 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2b7a477d wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x60c41070 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x045a4353 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1129d5d4 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x1cbe77f0 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x232b8fcc parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x33924313 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x339588cc parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x35cefe83 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3778daef parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x494c661c parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4dc16e3c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x64d0af7d parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6bfb51ce parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7329d47a parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x7bbe985f parport_release +EXPORT_SYMBOL drivers/parport/parport 0x85a2aa03 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x85ac43f7 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x87b06629 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8acb5276 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x93434893 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x99d751e1 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xa481633c parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xaf6e9a2f parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbc5fbcdd parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbedf4617 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc3f331c3 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xcf3a8e84 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xe3888242 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf1918647 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf5e2cb82 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xf60f9815 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0xba23f3e2 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xd587f7ea parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x107a1c60 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1519f101 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1932502f pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2265744d pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x22ccb85c pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x346c8ed2 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3aab349c pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x47d3fd36 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72efa9b8 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x79c7e1e5 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8578d404 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d650111 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa543ede6 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa5c4f246 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb90ea178 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd7406f44 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdebef8e1 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe1c0d378 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf70f1f25 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x208336c4 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3b71c750 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4ad760cb pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x55eb8005 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x79aa0456 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7d81c613 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaa2a8638 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xacac2a95 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb7395331 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd09c9b96 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe964fe2b pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x6ecb01cf pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe6cdfc3d pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xbed13272 i915_hsw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x1c8d87a2 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x33634aa2 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x79b2074d pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xe502bd39 pps_event +EXPORT_SYMBOL drivers/scsi/53c700 0x0b553cd1 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x1b1b86a2 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0x2398bf50 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x22e24f9e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x57bc862e fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8de808c5 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9840cf36 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae2d5a68 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaec578ea fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb1b11558 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb9f97cbe fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc38337b1 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe194a38c fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeab653b5 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x081c0797 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x140aaee8 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1eaea224 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2097875e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x309be4cd fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f3f6060 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4bfb8fa2 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d5e6594 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fd07bff fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x514cd832 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x534ca274 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5b5eadc7 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x643efdcc fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6be036e7 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x746257d3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74864ee7 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74ab1ba6 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7598752a fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7beee6eb fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cb68d9d fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cd153ba fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82a5e3c0 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91c1366b fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b6b3301 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b21325 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa5127e06 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6bff20c fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa86badaf fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8bdce49 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab03b66a fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac071a3a fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0aafb37 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb20c2d74 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb5a35420 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb62c27da fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0c90d62 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5ba0689 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca2efa3a fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca7cc568 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xceb8b6e8 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xceba4242 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd16427c0 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd66a1ca7 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0cf0128 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2e60e7a fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5caec24 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe730a871 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf1657908 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2faa613 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4796b2 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x3f298bda mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0206d2a3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x039fc552 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ae175d3 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ca27c3b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f4ca9c9 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19cb032c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25494867 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fa509bd osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39159003 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f1a07ff osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4279c73b osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x428d6b8f osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x468d0a0a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x480ebc1a osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b4cda57 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b858582 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x578a2ffd osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b15fa7a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7ea36c2b osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x84573d02 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8c641fe0 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9ed58152 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa701a519 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa70fa79f osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabaab737 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabb9a438 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb187b09c osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba045095 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb353ae3 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2348126 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd23e035e osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2e49467 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedbb3769 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2228fbe osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9f54768 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff5b26fd osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0bc849a6 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2c781e06 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x36d428a9 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4c235116 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x927d0b97 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaf60705b osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0ecac259 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x26d51a39 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2eda6171 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5bec9119 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6faefc33 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7ff035ba qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8422275d qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8b34c202 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8f5d5186 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa015333d qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xde15f1c5 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x11d2b608 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x19c6e10e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x368dcd73 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3ce47858 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x74886ff3 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbc82becb qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x38cb3fb6 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x44de1bde raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x86cda58d raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x02a4c806 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0bfda3d6 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f036783 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d46edb7 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5b7ba1b1 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x680632a6 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x72d4fbfa fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7dc0a459 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa19b55dd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcabd6724 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd0e24aa scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe23fe443 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6413498 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x015e281e sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02d5ead8 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0681475a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x075289aa sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cdaee17 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1682fddc sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21991ef7 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3279e8db scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x33368166 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d0f0cd5 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x42b352fa sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ac8f545 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x569fb9bc sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60fb779b sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x643312e4 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x746af22d sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ced4f84 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x811709bc sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8858e6b7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x909ef81a scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5121916 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7dbe2e1 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa8712208 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa99563f1 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5ca8162 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd89e7886 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdaeb5a93 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe74ae7eb sas_port_delete +EXPORT_SYMBOL drivers/ssb/ssb 0x1bc3d60e ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2213e27f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x35ad885b ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x36c24ea1 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x3d8ad779 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4c409f26 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x626c0083 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x73f1019e ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x7ad7014f ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7fcd5146 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x9160bd6d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xab42d559 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xac43b637 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xac54fcf8 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xbff6af5c ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcfd9f121 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8dccd17 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xe3b0a3cd ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xe7d1603e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf98936ed ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfcb43c7d ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0801cd92 comedi_driver_unregister +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x15185ec4 comedi_driver_register +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2e97e2ed comedi_get_subdevice_runflags +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x3bcbbb17 comedi_buf_read_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6294329e comedi_buf_put +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6877faa2 comedi_check_chanlist +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6ca98fc5 comedi_buf_get +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x7512f3ac comedi_buf_write_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x94f84c9e comedi_event +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xa758187d comedi_buf_memcpy_from +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xb4020dc3 comedi_buf_write_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xb74ec5c3 comedi_error +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbbf62ed6 comedi_buf_read_n_available +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xc9c3e6af comedi_buf_read_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdd37b118 comedi_buf_memcpy_to +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x2953db0d subdev_8255_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x5afbb381 subdev_8255_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x9ed8b1db subdev_8255_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0xb77454e3 subdev_8255_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0x5bba04f1 cfc_read_array_from_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0x678faa54 cfc_write_array_to_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xdbcb8cb8 cfc_handle_events +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x00b1f72c mite_bytes_in_transit +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x1029a345 mite_dma_disarm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x179d5fd4 mite_sync_input_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x181bba21 mite_buf_change +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x258d03d1 mite_prep_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x3d53d01a mite_bytes_read_from_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x5199e1ac mite_setup2 +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x594cb39d mite_release_channel +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x656456f8 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x6b298277 mite_done +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x7a4231bc mite_dma_arm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x90ec4926 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x9aa64fc0 mite_dma_tcr +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x9f3c957f mite_sync_output_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb29ebda5 mite_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb53f64a1 mite_request_channel_in_range +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xc8dbcfc4 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe0b709f6 mite_get_status +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe1ebea7f mite_setup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe981f82d mite_unsetup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xfb3ba025 mite_list_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x47320e6d subdev_700_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x538dc9e6 subdev_700_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x8f5e77ef subdev_700_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x9e670429 subdev_700_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/pcm_common 0x0dee7f81 comedi_pcm_cmdtest +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x231c5acb comedi_open +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x6b3928af comedi_find_subdevice_by_type +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x731ced4f comedi_close +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xa5ab8bbf comedi_dio_bitfield +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xa6e2117e comedi_get_n_channels +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xb6144566 comedi_dio_config +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x02721dc6 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x97ea2075 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6b8f3185 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xc3003855 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x566b259e iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xda2daba5 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xe0b89ae4 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x08188c17 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x69f0e5c8 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6adf97b0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7195dbaa go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x83d12407 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x98ce7925 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcc03cc69 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd51316a6 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf278ed21 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x065d82eb rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b2a11ad rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x131e92ad rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x181b7174 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19218d64 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1c1fac01 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3089fa5e rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ec52814 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x40c890a2 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x482e0015 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4bd71ddc rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4dfe4178 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x62324d7d rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63f02fe3 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x641c9e25 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x64bc9a26 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68eb70b5 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a86d28b rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6af0dff3 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x701b493c Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7234eddc rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7686f667 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x792fb28a rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x812379c4 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x82d85d48 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x845e6d75 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87620067 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a2232ab RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e08508a rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f021ddc rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x958f3adc rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9994ed06 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9c40eb4c rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ec7d30c HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa342a17a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa859fe2c rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaef165aa dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4dc794a rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba058932 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbfc7261c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0bee79b rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca2def8b rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd866b428 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd89b06bb rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc165e2e rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe228f724 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xebd718e8 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf0098d91 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa9492ec free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb1cef5e rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03992e33 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05489e04 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c7639ff ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f2d325f ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x143cbbaa ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1748dad1 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x186a4522 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1cf5b552 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d8445cb ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24469603 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26b952fd ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2edff01a Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f768145 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31f42f23 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37d01d67 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x46f4b126 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48950597 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ade8406 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x57fdd591 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58815fd4 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5e84b9b6 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61a55038 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61dbc842 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a9281fe ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6bac0f5b ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7715867c Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7caea6d5 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7cbdce0a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81122c61 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x853db020 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fc6dc01 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x976910c9 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9837caef ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a18dbdd ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c08e523 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e861d42 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5101433 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6ce15f7 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xacb6faec ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaeb9bdcd ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb195ab7b ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbdedb10 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc76d19b1 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc905b230 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9dca106 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd92bf92f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdcd4f687 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe2a58d38 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6bdd8fe ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8fc3d1a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef6409d7 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf10c59b1 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf256ae43 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xffedfc4b ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x3e1383d5 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x1125fc87 phone_register_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xce242f87 phone_unregister_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x015eeb4b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x01d7ce83 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02f73fc3 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x069c4c1b target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1072b563 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x176106eb core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1adfb6eb iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x2159389f core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e26989c iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x357f7ed7 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a39e72a transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b71884f transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bfffc72 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x415a85f9 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x498b6dd4 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x544e4a9c transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f44ad1d target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x621eb132 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x66c8918a target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x6cbe3748 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x759ca9be sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x761f12b2 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x76e37a10 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x77632609 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x77c7afdc target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a67fe93 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cf8418b 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 0x7f7c08d9 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8db4deba iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f4a1dc2 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x9071d6ef transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x927b0030 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a8aa507 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b5d749f target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fd9a023 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xa652ef04 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa77d66aa transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb16ca418 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1901995 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb28c346f core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2f4d666 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3216cb7 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb915af90 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0xbad82fcd transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1ffeeec target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5c9bd58 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6ce365c transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8c5e3bd transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb6c5b4d fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbd66cb1 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdd0a4c3 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd1bb7b0 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd38f4a1 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfe59ea6 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe18380c7 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8e0bdf1 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8e3a9bd transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf62dd3b3 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf748e87a core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdad5d5e transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdd4eeeb target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x981cc648 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x4944a027 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x223a2ae0 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x43220376 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7e7a4b80 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8d288013 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x999d26ed usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9bcb0f13 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9d65816f usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa165c2b4 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaf0001c2 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd88449a8 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe51a49ae usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe6aa662c usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9cf3b64 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf03bf82c usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf03c9775 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x40fde24a usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf4c24b02 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x1767b963 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x839b50aa lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xe881529c cyber2000fb_attach +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0x2350e4dd mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x1e45d670 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x2138e701 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x3c3a34b2 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3a07cad9 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x43c67617 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x5d7ef0a4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb28af68f matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x789741be matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xc26a29ad matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1748b06d matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x19740178 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1cf68e58 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x86e8221e matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x52d9c507 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x5f360fbb matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0bc444c2 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4d74a47f matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x543eabd9 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x8af2a0fd matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xec208805 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xbd40983c mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x59bcee9b video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xe2de6c37 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x3bb8b53f svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4bfd66ce svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x691a31f7 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x7a7e2692 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x92bc0c4a svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe4d6581b svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xf3dc915a svga_tilefill +EXPORT_SYMBOL drivers/video/syscopyarea 0x9cf4866d sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x331da93b sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xef295fd6 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2b05a73f vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x410bf8cd vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x44e68a02 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x48bfbbcb vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x6c16afa1 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8957ff7f vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9c6c6c4e vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa7cd410f vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xa92d53cf vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xacf377a8 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xba36db87 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xc0940b59 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xc0f6eb8e vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xd409bcb1 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xd6bb1f72 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xeca72a62 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf1f331a2 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfdcb42f8 vme_lm_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x14f6ee09 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x22e605c8 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4c6d5228 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf0974d23 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6f7fab51 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x8aed87a0 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xaa0cc972 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x435173cf w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x624db73a w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b5d8009 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x2c8f5216 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x54592975 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x847fc8b2 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xd942233c w1_remove_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x4b4a544f configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x704b1602 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x94aba213 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xcca348e8 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xcd70c511 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcf126420 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe2bc6b06 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xed7c27c4 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xedb98a16 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf12fb193 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xf1329028 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xf70f7613 config_item_get +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x0215de92 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x0956c762 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x15a5fd6e ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2edd12d1 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x8dd8969c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb8998ebc ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xc20d7f23 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xdca9dfed ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xf2d7a7b3 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xfa6c54de ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x1de128df fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2a536fdb __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2ea14e05 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x34089a39 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x34ab220e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x39c18dba __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3d3dc7e7 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x50b8617b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x5cd2ef0a __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x68edf417 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x69285e41 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x73654ce4 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x88c03c2f fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x97b2584d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x9cbb7ef8 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb1847dbd __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb90ba9c7 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbcae2624 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc65e2cb5 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xcf2d7366 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd164f231 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xd32d4088 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xee985388 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf1857707 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xf542d4e7 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf905bbfc __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfa455c3d __fscache_check_page_write +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2b482b83 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x512a14f5 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x84782337 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8ba4c3e5 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe7ca22fb qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x01c12d25 lc_create +EXPORT_SYMBOL lib/lru_cache 0x14568a91 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x21b1fcae lc_changed +EXPORT_SYMBOL lib/lru_cache 0x377393cc lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x630520f6 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x89481a05 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x9cf5bf99 lc_find +EXPORT_SYMBOL lib/lru_cache 0xa46768b2 lc_put +EXPORT_SYMBOL lib/lru_cache 0xa919e51e lc_get +EXPORT_SYMBOL lib/lru_cache 0xbd0caa74 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xd8c60796 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xdb24e5ce lc_del +EXPORT_SYMBOL lib/lru_cache 0xf2b5c7bd lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xfaa4f792 lc_set +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x1b670857 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd983d44d register_8022_client +EXPORT_SYMBOL net/802/p8023 0x4093331c make_8023_client +EXPORT_SYMBOL net/802/p8023 0x46d54e9f destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x33abd6dd register_snap_client +EXPORT_SYMBOL net/802/psnap 0xf635793d unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x072ee6bc p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1e2e5620 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3168d377 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3ec5ea38 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x43eb98b0 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x44a10229 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x45118f72 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4a5145a4 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x4c776030 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x61f5e697 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x624f9748 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x62d482f5 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x66891eaf v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x678405ec p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6a451a29 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x6a9996ce p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x72bd11f0 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x73bd5619 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x79ca02d0 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x85c4a716 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x8b026cdc p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8e1601ce p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x944b5d4f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x9fee685f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa5aa3586 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xbc65a19b p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbd3dcbb9 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xbd8014c1 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xca21d0a1 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xce8e81dd p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd3f92a7d p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xd5d7adb6 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xd8eda45e p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xe050b566 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xec7f738f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xed81fba7 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xeddb5097 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xee5b8506 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xefa328f6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5ce66ca p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf750a86b v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe8a1486 p9_client_fsync +EXPORT_SYMBOL net/appletalk/appletalk 0x6719f180 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x6e69c8f3 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x985ee7a2 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xfb6cbcd4 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x1822b28f vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x216925d4 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x236aacc2 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x2bf4d0f2 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3456b288 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x4b289901 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x54ea23af vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x8d879bb2 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x901aaa0f atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x93a5ce13 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb7d01252 atm_charge +EXPORT_SYMBOL net/atm/atm 0xe2897632 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf1378ebd atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xf40c7efc deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x14a02db6 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2c4693ab ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x34cb6584 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x522e525b ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x70b404de ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc0cb3163 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc648efd ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xce4c077c ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe099a312 ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x054d8d7d hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0bec4f11 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x155b56e8 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18255bd6 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1850ba70 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1cadc713 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x216fe476 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30779fe6 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34e331f3 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38c3d52b hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4912d400 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5564afff hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b8b67cb bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63582c39 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67e726ff hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6861124b bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f1e6a20 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x85ad4b1b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x93a8c378 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9901de38 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c13e01e hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9fc39e42 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa177cd77 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa408170e hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa68ae55a hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb4fe315b bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7334b86 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbe29c3b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf080dfe bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf346f73 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc5be5939 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca7fc219 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc55f56d hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb8ffca0 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf0da8bfe hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1ab34fe bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf7a87108 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc47d7cd hci_find_ltk_by_addr +EXPORT_SYMBOL net/bridge/bridge 0x7c5526eb br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3e5f80a5 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5006b1a0 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf9bbe73e ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x49367c6d get_cfcnfg +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 0xa9d84237 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xcfe29a56 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xde0baed7 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xf08028ca caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x1a53e336 can_proto_register +EXPORT_SYMBOL net/can/can 0x7399aed6 can_rx_register +EXPORT_SYMBOL net/can/can 0xbc97a95f can_rx_unregister +EXPORT_SYMBOL net/can/can 0xc7873cdb can_proto_unregister +EXPORT_SYMBOL net/can/can 0xe2b136c6 can_ioctl +EXPORT_SYMBOL net/can/can 0xf184311a can_send +EXPORT_SYMBOL net/ceph/libceph 0x002a7c77 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x06d00b21 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0edcad6f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x15eefd3b ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d1e544f ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2c03b5f7 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3234c706 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x3391ae5d ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x34a64292 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x34b984a3 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x387bf95e ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x3a1893c0 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c62cb10 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x3d2670e9 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x3e1ea197 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x3e7b785a ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x46a1c6c5 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x49e5d57b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x586c07a0 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x59c0631c ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5f6e232c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6ab3aff5 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x763fc447 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x78d5afca ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x7e27db3e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x845eb209 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x878bb32d ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8886288e ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x8d8e546a ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x9a0236df ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa5533ee9 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xa79386b0 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa800d26b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb2cc9a6d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb4fe6719 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbd303727 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc0fb94ba ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc33a8ae9 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9b6f699 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1c0469d ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd2b0a7d4 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd929f46a ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xd984869f ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xdde98e23 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xe40397ce ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xebe0e50d ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf2d5ad36 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xffcb64bf ceph_put_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8a3efab0 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x18e09ecd ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3818e378 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x57dd3b2c wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5d5b5983 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x65641c78 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6708625b ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8137bff0 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8a28b653 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x90d0abdc wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbe167f37 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc27e3ca2 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdaf43621 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe390c0fe ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x14d9a3fe arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x162bb336 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2637cb0e arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5388ab11 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5d1c68eb ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6427677c ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x63e047f3 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x66b36fc1 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x728c3008 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x79ad3351 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x910d53d1 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xb6f2d924 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xe67bb130 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x9a4fedee xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xe5febff4 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0dc65be0 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x39f1b444 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4be498f2 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x60f1f303 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x48990ce8 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x589ca086 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x65795a72 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9cf98719 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x08d50e40 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x11f236a1 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x44223c00 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x599a7385 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7125488a ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7dab3977 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9ce42cd3 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb70066c7 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x01dbeb0e irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x04d21d5e irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07b23b06 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0a163f59 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x0bab6037 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x143ae725 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1cc4d4bb irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x23a2eee7 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x33b449b7 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x344fff9f irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x359de411 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3a2262bf irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x3b0a2ab6 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x3b9bdefe irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x428321fa hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x442087aa irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x4491a7db irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x44fd31ca iriap_open +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x48d17824 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x61d281a6 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x62acf28c irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x633fb90f irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x648c7478 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x77d7be20 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7b04f185 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7d54adaf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7ff509a2 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x884a4bcf irlap_open +EXPORT_SYMBOL net/irda/irda 0x8cd99be0 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9e326eb3 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa370c681 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xa8b16ac2 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xb94f8cbd irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf934ee6 irlap_close +EXPORT_SYMBOL net/irda/irda 0xc0bee29c hashbin_new +EXPORT_SYMBOL net/irda/irda 0xcdc4d5c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde2d23b1 iriap_close +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf2a5f6ce irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xf30d05b4 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf4135bf7 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xfc81e864 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xfc92564e irttp_close_tsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1500578f l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x537a2e3e lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x5a2b2871 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x792518a5 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x793dd417 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9aa71234 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xb31564b3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xbc503c03 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xd1178762 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x23b2ecc0 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x3216ebd4 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4bca6d5b llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x74e035f6 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x82b08ca3 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x8554981d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x95e69fc3 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xd629316a llc_sap_list_lock +EXPORT_SYMBOL net/mac80211/mac80211 0x03fd698e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x0566fe22 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x066432ba ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x0c702616 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x10947d2f ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x12460da8 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x13ad5c1e ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x1b981aa7 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1d99d7ab ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1ea05d05 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x2b60f99f __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3876870d ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x3a3e8686 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x455704b7 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4e211117 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x556b8a0f ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x622eeac4 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x632b08b6 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x64e1d957 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x70164b80 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x76327a81 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x768f5deb ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x7df7b5b9 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x83cc48c5 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8b6811aa ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x8d82a31e ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x91212fb6 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x918a1826 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x921271f2 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x946e8f34 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x99b1c6a5 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9c09410d ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9cf34639 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa1916906 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xb257be0a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb7bbdcb0 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbd3706dd ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xd235ee70 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd6432486 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd7f73024 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd88c3052 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe0a97727 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xecf220d5 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfba1ef99 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfc37ce62 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xffed05b2 ieee80211_tx_status +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0eef71d4 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3c1ae0c9 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5994943c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x630004f2 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7696fc74 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x78102b2c ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8fec0ae9 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9d047fc1 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xad6ff248 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb15a9b8e unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb15b95a7 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd58a0fd6 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeee05209 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfa239f0a register_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5aeb23ce nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x74626eec __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8656f68b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x2c18e42c nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x22723b61 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x33490239 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3a0f2944 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x4b206deb xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x6951a62a xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6d45e203 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xaa1b27ac xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xbc4622da xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xde000047 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xe8fede82 xt_register_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x198ad6b4 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x23920a6d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x24ccd002 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x2c6cb855 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x351f02a0 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x37a520fd nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x44971e72 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x44f6ea33 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x546d8d0b nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x5d5c07ec nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x62de1682 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa81e4c70 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xaaf36f46 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xabdcb079 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xae5dd7d4 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xb30f6e6b nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xc6e32c0a nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xc7f9175e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xdef50d65 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xeacbd8fe nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0xef721c41 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x2f6f0adb nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3142c05d nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x720e17b0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x856a71ba nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xfde12fae nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x22b857ab nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3fde3636 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x487e928e nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x4db1c6e4 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x598a6b46 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8a742c7d nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xb06d5c70 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xc41049c3 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xcd18ff75 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xd597c14a nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xff820208 nfc_target_lost +EXPORT_SYMBOL net/phonet/phonet 0x07033888 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x0abe26dd pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x37620c8b pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x54840bd5 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x573f2f15 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x5d78efba phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xa947d263 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xfed8f90b phonet_proto_unregister +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1f2caeb6 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2b807160 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x36677425 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78390751 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x829b2c3c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8faab24b rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa73672d6 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa83b8670 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa95e0dcc rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xaecbab6f rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbb3110a5 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xce22cf1e rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd10c9a51 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdb90e379 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe0b1090e rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0xc3cdf9ac sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6ddbce84 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x1c36f3f4 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x3a974ca8 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x9f11fde0 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x034ac611 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x038a023b cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x05d90e90 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09602665 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a9c4826 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x0c717347 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x0faeb2ca ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x180e1166 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x2220b74c cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x2967ca0c cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2ae7da06 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x34595f14 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x3a619904 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x3af743cb wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd0984b regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x41ac3c3a wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x41bdcb8d cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4226d445 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4e6d26b6 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x56600df8 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5661af91 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x56e5650a cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x59f86fbb cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5b6849d7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x5c9eabd1 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5fc39f65 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x6252ab21 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x6471aa28 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x65e3e906 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6cd3ebe0 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x79ce0e71 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7c475ecb cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x86a8a38b wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8ebd6d2f cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8faf8b3e wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x8fc570b9 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x9057e6f0 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x92391581 cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x94742366 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9965a587 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9ce22e79 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x9ed1b170 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2612d93 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0xa62e09ea cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xac2c037d cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac3a8ba3 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xaf4aa101 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0xb417aef6 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xb5b6c6ca ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xbcb99964 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xbcfe4922 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xd303c036 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xda159ab2 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xdf02d026 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xe514e444 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe617d70c cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xe9f20b95 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xebba745e cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xf8617038 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd12d27c cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xfdca80fa cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x52fcc78f lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x80a8eaf5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x823e365d lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x8b71e755 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf9331663 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xfdd5f218 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0xfdf9fc80 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x9bd8a8bd snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0f41da85 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xaf674f3f snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcaff0600 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd268b48c snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3e1410f6 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x8e09949d snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2b51b084 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x350963b4 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f62d029 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x83914b9a snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x92ee6bb0 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x9e7d3f0f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xbc141dfc snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf2bf1549 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xa9288fb4 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x026a5823 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x072c3cad snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x072e2cee snd_device_register +EXPORT_SYMBOL sound/core/snd 0x09c5149f snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x19200c52 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b0f263c snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x1b9b2620 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x229c30e8 snd_cards +EXPORT_SYMBOL sound/core/snd 0x244d5a05 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2c76ecfd snd_card_register +EXPORT_SYMBOL sound/core/snd 0x307bd854 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x33aabb59 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x343ec4e3 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a970111 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4bda239c snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x4f773e39 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x516dcd90 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6514d1b3 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x6c965deb snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7a8b40fb snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x7b545f03 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x7f427c58 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x820eb4e7 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8549a95a _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f0985c3 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90025b37 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x99f0efb6 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x9ca7a1fa snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa4f2f9b7 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xa643ccb0 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xaf532f8f snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xb2090156 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbad26588 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xc0d9e118 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xc957f612 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd2af8675 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xd60ebbed snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xd721459e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xd9df7da3 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xdc5eae93 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xe15b51db snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xe7299937 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xeb08e910 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xebd6e57e snd_card_create +EXPORT_SYMBOL sound/core/snd 0xf3298027 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf58014ed snd_device_new +EXPORT_SYMBOL sound/core/snd 0xfb927f22 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xfd7e771f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd-hwdep 0x334447af snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7bf21440 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7cdcdbe9 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9cf49a1a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe123ca9c snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe647875e snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x02c6a003 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x058594b0 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x189b89ec snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x240a06ed snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x26c2b7c3 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x31c9d600 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x31f278eb snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38b09128 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3bfccb37 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x3ff4ec22 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x47bd6c0f snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x513117d0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x519faf86 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x55c47fca snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x591f71c2 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x5c42cfc3 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5df99054 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6762936e snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69a07294 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x69a8d2e2 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ad68412 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6e794088 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7a255f7f snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x90361bb6 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa0e86de2 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xa587e757 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xb4e1560b snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xb6d3e95d snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb826f85d snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc553247d snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xc705d255 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xce2e1d9f _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xd21b38de snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd2d24f23 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd3d71f97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xd47bef2f snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xd8d16c42 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xdb0dd0d0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xe24da82c snd_pcm_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xed6f4eb6 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xee44a1d1 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xf0d9cc41 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf51645a5 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xfe672e54 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0de873dc snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x26c218d8 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x35aff468 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x381fd142 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3c682968 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5036d9e7 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5405dabd snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x675fd237 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6fc086bb snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7d9ac139 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa93331fb snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaff45244 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb0ef1ce snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdea6d0ef snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea842ea8 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf58df74c snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf7565890 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-timer 0x008ba10f snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x2a139542 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x402f042b snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x461eac6a snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x49384f4d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x51c07926 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6c628e24 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x76d593e4 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8f69ad65 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xa49f23df snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xb0a30bb8 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xb978931c snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb9fa1af3 snd_timer_global_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x72620a06 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x21fb6c97 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50ea35e3 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6e1c9153 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcd88c7b5 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd895ac20 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdaae6045 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xde592e50 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe4a03107 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe96ce022 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x2b74d3c7 snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x6f809ef4 snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xb72eb409 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xdd44b902 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xf2e777bd snd_opl4_read +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x056db70d snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2c6de9ae snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4dc817cd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa44093dc snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xafa92b6d snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb491f577 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc84b0050 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xed19ca50 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf0885a14 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0b0fd07a fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x145088bf amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x172007a0 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e843689 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27feb6ca amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fe37d26 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53e03285 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x543e4d32 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5809a2f0 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59b25fc1 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59f5a0d7 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x69cd50fa amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x754ae6c6 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7679a180 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x87b44271 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8eddbbc2 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9f6a42a iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab5f0659 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xacfecf0e amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2849265 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf0766f3 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd2145ff1 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe40a78c4 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4ef2aab fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef803931 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf05cabc5 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0dc007eb snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3995b751 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8539ff57 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xeb60b76b snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xeb990eb2 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf28acd98 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x3246fd1d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x5eaccbcd snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x71b6bbef snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x96bd9455 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xaf523ece snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc5c44297 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x647eb67d snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x81218dd1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd674d50a snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf98db0f6 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x798ecaff snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x9af4f649 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x691970f0 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xb2ec46ba snd_tea575x_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6e9cc870 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7e38bfa4 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7fcc50d4 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x84575ba2 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd19b5f21 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x09e5a8e0 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x27a2cda0 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x37a7b544 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x465f1c18 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5a4f17d1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf72ab253 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x28ec00cd snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x6b95f1a4 snd_tea6330t_detect +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x1351d9aa snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x1577fb21 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x2b0938b0 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xb0c56858 snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xf819815c snd_es1688_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x020e7bbc snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x053d4304 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x068dc50f snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x152e248e snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2aedd837 snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3aaf22ca snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3c860487 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3f8591e1 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x44238fb6 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x47b4c709 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7101f767 snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x729139f1 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x739c5d6e snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8bb937c7 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x93884f0d snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x99e6acd5 snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9e1cd652 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa447a0b9 snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xaef27c62 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb6395843 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc3820fbc snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc634d8a8 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd1e07ddf snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdbefc9ac snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdd1a973a snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdf0ea40e snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe5db6b74 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe9633e0f snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf2d3e7e1 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xffa64c1d snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1bd3b88e snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x22c6bd3a snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x2a349b41 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x3189af76 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x424d0754 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x80b56bfc snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x84b88878 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x86ec9656 snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x90eb0a51 snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xbdda82e8 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xc2378de3 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd1964bb0 snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x696784b8 snd_aci_cmd +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x77b15788 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x06c92df1 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0b32e736 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x14ef2915 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x65aea2c3 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6a90c306 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x917c57d3 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc917f86b snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcce9d71b snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcd8de36d snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe11c7736 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x34eaeec7 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x0c32b18c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x4f46806f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xcab85655 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x0ffda623 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x3582a578 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xb5eb4cd7 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xda6703b5 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0414087c snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0ca42a27 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x1ae58099 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5026fb84 snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x62ff2cfc snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x861886e8 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xa4974ad8 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xaef76007 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xcaff40f5 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfa455cae snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfe7f6d4c snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x20033cfc snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x25e710f9 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5b09018f snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6b69b006 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6d1a47e0 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x73ed74a2 snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x79ea0265 snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x86dfc72a snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x97e6029c snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9b4e8d73 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa3afddd0 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa4dd9b20 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xaec8e24e snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xbe00c555 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc2465ce3 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xcf21637d snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe96e4c70 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xeebe6610 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xef64a73e snd_wss_info_double +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x109d895f snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18ea91bc snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1fa3dfaa snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x22dd7a9a snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x254f0bd0 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e47e021 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x509ca33e snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x63515359 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x68039c0c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x77be332b snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7d4efac5 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3771a83 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa4b582a9 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc9d0249 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc2c86ee1 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde174e1e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf153556e snd_ac97_update_power +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xdd1dfa33 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x113da4dc snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1aa97aa5 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x35b8e969 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x482ccc63 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5d513040 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x742fa545 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7a103be9 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x81d3910e snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa7381147 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xc1e71152 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x05c63fbc snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6eb42ac3 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd2c36633 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x166eff8a oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2329852f oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2f83c28f oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3578f98f oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x57b73af3 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x60de3f70 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x740182b2 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x765f4e2b oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7a3442a7 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81abed9b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x857c15c1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x88dba3cd oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x98805f4e oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ecd6176 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa96b625c oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xac98d427 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8c744a4 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdd211ae9 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf24a6630 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf400f96b oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf67dc800 oxygen_write_spi +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x130f4d79 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x204fcea7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3ceda7dc snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x58b64274 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb40569ad snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x13724f3f register_sound_special +EXPORT_SYMBOL sound/soundcore 0x1bcbc2e1 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x2e9b1c55 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x81dbb4b0 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcf5e11f8 sound_class +EXPORT_SYMBOL sound/soundcore 0xd269f64f register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x011cc26d snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4b10dab0 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x78b3f7b9 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb5192e6c snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe412a26d snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfb6b1555 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x214e605e snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2534f631 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3513219e snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ff2b933 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xba781773 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcd564794 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xdec52069 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf2190563 __snd_util_mem_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x6703e7e6 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x35c95b1b dm_mem_cache_client_create +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x56f3f9e4 dm_mem_cache_alloc +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x86e5acf9 dm_mem_cache_grow +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x920a7a41 dm_message_parse +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x9e385dbe dm_mem_cache_free +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xa43471b6 dm_mem_cache_shrink +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xd55b290c dm_mem_cache_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x001a14af request_key_async +EXPORT_SYMBOL vmlinux 0x0046bfa4 filemap_flush +EXPORT_SYMBOL vmlinux 0x006dba33 __dev_printk +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00bf0934 write_inode_now +EXPORT_SYMBOL vmlinux 0x00e7a375 seq_open_private +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01124331 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a5c3d udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x011b02be xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x012a1fa3 iterate_mounts +EXPORT_SYMBOL vmlinux 0x015160ef intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x0164f296 submit_bh +EXPORT_SYMBOL vmlinux 0x018df223 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a1479c ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x01d19038 acpi_enable_subsystem +EXPORT_SYMBOL vmlinux 0x01d805b0 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x01d8c789 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x0207e0df netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02139cff dquot_drop +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0251c4ba skb_store_bits +EXPORT_SYMBOL vmlinux 0x025db136 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x02645101 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x028f78d5 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a5867b udp_prot +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b2086a tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x02bba93b neigh_create +EXPORT_SYMBOL vmlinux 0x02c6f2aa register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e5e0ed fget_raw +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x031d39a0 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x032c18de tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x0333cf8b may_umount +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034a066c qdisc_destroy +EXPORT_SYMBOL vmlinux 0x03549f3a phy_disconnect +EXPORT_SYMBOL vmlinux 0x03551937 release_pages +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a8d0a9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x03a9fe45 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x03b0e410 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x03b580eb wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03cfa89a journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042ad2a2 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x042f295f ppp_input_error +EXPORT_SYMBOL vmlinux 0x043fa81d netpoll_setup +EXPORT_SYMBOL vmlinux 0x0443e33b netlink_set_err +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04720b0b iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x047912e3 pci_restore_state +EXPORT_SYMBOL vmlinux 0x048217c6 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x04870801 skb_unlink +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0488550a tty_port_hangup +EXPORT_SYMBOL vmlinux 0x048d3078 simple_statfs +EXPORT_SYMBOL vmlinux 0x04985ba3 dev_notice +EXPORT_SYMBOL vmlinux 0x049f55a0 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x04aa8ed6 bio_init +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x051c3cb3 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055a8ec1 kobject_init +EXPORT_SYMBOL vmlinux 0x055b3315 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0583b1cb do_sync_read +EXPORT_SYMBOL vmlinux 0x058eb84b scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x05c324f1 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x05d5c819 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x05ea912d __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x05f9850b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x05fe9760 lock_may_write +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06207e58 vfs_create +EXPORT_SYMBOL vmlinux 0x062e90ee write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06353c85 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06ac3d7f tty_port_close_end +EXPORT_SYMBOL vmlinux 0x06b94417 bdget +EXPORT_SYMBOL vmlinux 0x06c16b73 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x06d05f66 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x06d2f086 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x06f4bf00 seq_escape +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff7c85 account_page_writeback +EXPORT_SYMBOL vmlinux 0x070869d5 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072e9540 take_over_console +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x074345e4 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x0749d372 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x075d366a aio_complete +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x076ebea8 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e1b68d cfb_imageblit +EXPORT_SYMBOL vmlinux 0x080d4ba2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0821eb35 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083a77cd tty_unthrottle +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x088ef4b8 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x08955cbe dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08bf826c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x08f85975 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x090cc48c blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x091817b6 migrate_page +EXPORT_SYMBOL vmlinux 0x091cb810 console_stop +EXPORT_SYMBOL vmlinux 0x09396f8b twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09665194 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x096b6dff pnp_find_dev +EXPORT_SYMBOL vmlinux 0x09730667 sg_miter_next +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09c55118 misc_deregister +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d523d3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a268203 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a568eda unregister_key_type +EXPORT_SYMBOL vmlinux 0x0a9cbc16 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x0aa77744 update_time +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad6e8cd xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x0aefa485 arp_send +EXPORT_SYMBOL vmlinux 0x0b014146 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b19a3b1 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e93f2 put_disk +EXPORT_SYMBOL vmlinux 0x0b447c46 nla_put +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b55727e neigh_lookup +EXPORT_SYMBOL vmlinux 0x0b70953d bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b78b601 key_unlink +EXPORT_SYMBOL vmlinux 0x0ba26d5f scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc890c2 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x0bef3eea rtnl_create_link +EXPORT_SYMBOL vmlinux 0x0c25fcbc generic_block_bmap +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f0996 module_put +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c8dfdfa tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x0c919dc2 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ccf2e98 security_mmap_file +EXPORT_SYMBOL vmlinux 0x0ce77875 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x0d1d60c2 dentry_unhash +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d42e89d scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0d4b32b2 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d715f2f tty_shutdown +EXPORT_SYMBOL vmlinux 0x0d75dcca mark_page_accessed +EXPORT_SYMBOL vmlinux 0x0d84eec9 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da8662c tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x0dcb050e i2c_del_driver +EXPORT_SYMBOL vmlinux 0x0e1e5597 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x0e24d8ed dma_find_channel +EXPORT_SYMBOL vmlinux 0x0e3881c1 read_cache_page +EXPORT_SYMBOL vmlinux 0x0e49945c simple_write_end +EXPORT_SYMBOL vmlinux 0x0e5585c1 scsi_add_device +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e80f987 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x0eea6795 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x0efd00f3 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x0eff0b2d sock_i_uid +EXPORT_SYMBOL vmlinux 0x0f12f177 bdput +EXPORT_SYMBOL vmlinux 0x0f23c2be __get_page_tail +EXPORT_SYMBOL vmlinux 0x0f2c5694 register_exec_domain +EXPORT_SYMBOL vmlinux 0x0f479dec bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6ad767 __elv_add_request +EXPORT_SYMBOL vmlinux 0x0f9362cd thaw_super +EXPORT_SYMBOL vmlinux 0x0fa26c83 skb_seq_read +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fc542bf unlock_new_inode +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fefb56d abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1015c707 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x1026de6a gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103fba37 dma_supported +EXPORT_SYMBOL vmlinux 0x10437ad8 empty_aops +EXPORT_SYMBOL vmlinux 0x105527c6 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x10702311 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x107a9517 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1092e46b dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x1098cdae nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x109d2ab4 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x10a61247 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10ab7e68 down_killable +EXPORT_SYMBOL vmlinux 0x10d2695d bio_clone +EXPORT_SYMBOL vmlinux 0x10e13ad1 vfs_fsync +EXPORT_SYMBOL vmlinux 0x10e16909 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x10e3711b pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f04ba9 i2c_release_client +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110c695f bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112fcb3e xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x113d1682 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1153d513 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x115964c9 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x11599dab jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x11950d91 ip_route_input_common +EXPORT_SYMBOL vmlinux 0x11b044b1 elv_add_request +EXPORT_SYMBOL vmlinux 0x11b145f4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x11b49b98 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x11bfc814 km_state_expired +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11e4ab29 pci_request_regions +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ff5c50 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1236a0b1 bioset_create +EXPORT_SYMBOL vmlinux 0x12514b21 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x125ec5df alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x126a169b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x1286947b end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x128a5cf9 complete_all +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a55853 ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x12ab345e intel_gtt_insert_sg_entries_hsw +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133d4360 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x1370cb3f dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x13787443 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x1380b3be scsi_get_command +EXPORT_SYMBOL vmlinux 0x138640c3 blk_start_queue +EXPORT_SYMBOL vmlinux 0x13868300 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x139ae9bd give_up_console +EXPORT_SYMBOL vmlinux 0x13b65a01 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e50d10 udp_seq_open +EXPORT_SYMBOL vmlinux 0x13f31c98 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142f3e78 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1430e6e0 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x1442df4e mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x145a77d1 d_alloc_name +EXPORT_SYMBOL vmlinux 0x14732760 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x14815f39 tcf_em_register +EXPORT_SYMBOL vmlinux 0x14a4cd99 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x14aa51fe grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x14f7d499 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x14f86493 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15323c4a neigh_compat_output +EXPORT_SYMBOL vmlinux 0x1549f0ba tty_register_device +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x155d96af sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x156839b8 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x159c2ef6 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x15cf7526 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x15f8b7f2 nf_afinfo +EXPORT_SYMBOL vmlinux 0x15fc10d6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1600c348 journal_init_dev +EXPORT_SYMBOL vmlinux 0x16097f59 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1635e4aa d_delete +EXPORT_SYMBOL vmlinux 0x16395e8e mdiobus_free +EXPORT_SYMBOL vmlinux 0x167d0dcf inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x16869360 pci_target_state +EXPORT_SYMBOL vmlinux 0x168c5232 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1694a436 tty_write_room +EXPORT_SYMBOL vmlinux 0x16b3be44 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x16c403df vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x17000010 have_submounts +EXPORT_SYMBOL vmlinux 0x170bf973 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x175a8cf4 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x177afcf5 generic_make_request +EXPORT_SYMBOL vmlinux 0x178b6e26 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x178f0417 task_nice +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x17cb6099 input_get_keycode +EXPORT_SYMBOL vmlinux 0x17d76e91 dquot_disable +EXPORT_SYMBOL vmlinux 0x17d9217f security_inode_readlink +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17ec0c02 simple_rename +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f6ed8d scsi_remove_device +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183adf97 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x183e2abf filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18407dee alloc_fddidev +EXPORT_SYMBOL vmlinux 0x18485184 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x1848afbb inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x185e7220 lock_fb_info +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188fc36f scsi_target_resume +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18cd6f0f skb_trim +EXPORT_SYMBOL vmlinux 0x18cf7c88 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18edc811 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x18f47d03 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x190e377e posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x191d37c5 dqget +EXPORT_SYMBOL vmlinux 0x19214174 input_release_device +EXPORT_SYMBOL vmlinux 0x19455c2d netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x195423a2 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x196cf775 netif_device_attach +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x198e8303 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x19912407 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x19945a8e wireless_send_event +EXPORT_SYMBOL vmlinux 0x199c794e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a9e62b complete +EXPORT_SYMBOL vmlinux 0x19b01206 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c4be82 bio_endio +EXPORT_SYMBOL vmlinux 0x19cb6dbc journal_lock_updates +EXPORT_SYMBOL vmlinux 0x19dd331e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x19e3cc91 scsi_execute +EXPORT_SYMBOL vmlinux 0x1a082f2c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x1a1c5d67 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x1a37f588 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a51aa0f mdiobus_register +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6646a5 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x1a9e06c0 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x1ab78e95 inode_init_once +EXPORT_SYMBOL vmlinux 0x1abed30e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b12ea23 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x1b1d8d8a file_remove_suid +EXPORT_SYMBOL vmlinux 0x1b31cdd0 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1b3587e1 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1b36152a pci_set_power_state +EXPORT_SYMBOL vmlinux 0x1b47b189 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b99d1bc key_put +EXPORT_SYMBOL vmlinux 0x1b9a76b1 kill_fasync +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bbb69f8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x1bc8585b idr_remove_all +EXPORT_SYMBOL vmlinux 0x1bccf1f3 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x1bd2bb23 build_skb +EXPORT_SYMBOL vmlinux 0x1bdeeeac blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x1bdf2683 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x1c24443d simple_dir_operations +EXPORT_SYMBOL vmlinux 0x1c41f9fc vfs_mkdir +EXPORT_SYMBOL vmlinux 0x1c6db0e6 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1c7dab67 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1c812cda read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1cb82563 simple_readpage +EXPORT_SYMBOL vmlinux 0x1cbb213c mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cc7f90d sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x1ce48bf9 udp_disconnect +EXPORT_SYMBOL vmlinux 0x1d1d82d5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1d1ead0a blk_free_tags +EXPORT_SYMBOL vmlinux 0x1d21d158 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x1d28eb1c agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x1d42a6ca __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x1d5cd8ae unregister_quota_format +EXPORT_SYMBOL vmlinux 0x1daa681a __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e06b4b3 no_llseek +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e111202 dquot_release +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2bfae4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x1e454625 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7771fa replace_mount_options +EXPORT_SYMBOL vmlinux 0x1e862a8a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x1e8c0d97 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea17609 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1eb03fe1 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x1eb3d57a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed4fd4a padata_stop +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f10dc49 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x1f11c88c proc_symlink +EXPORT_SYMBOL vmlinux 0x1f231822 pipe_to_file +EXPORT_SYMBOL vmlinux 0x1f277c28 dst_alloc +EXPORT_SYMBOL vmlinux 0x1f65a4c9 sk_filter +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8d8219 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x1f9c91f7 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x1fa4da3b agp_bridge +EXPORT_SYMBOL vmlinux 0x1fac52d3 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x1fb6d7da pci_get_device +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc60972 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x1fc73139 sock_recvmsg +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 0x20009c57 __dst_free +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x200758b1 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x200a1d28 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x201b9faf pci_set_mwi +EXPORT_SYMBOL vmlinux 0x202363b9 phy_connect +EXPORT_SYMBOL vmlinux 0x202a2bab deactivate_super +EXPORT_SYMBOL vmlinux 0x203d44fe swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x203fcec5 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x2053ecb3 brioctl_set +EXPORT_SYMBOL vmlinux 0x20632f84 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x20718a59 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ae0365 try_module_get +EXPORT_SYMBOL vmlinux 0x20bf34d1 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x210fe38a netdev_features_change +EXPORT_SYMBOL vmlinux 0x211e5266 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0x21236997 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215acb1d inet_bind +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x215f9a25 current_task +EXPORT_SYMBOL vmlinux 0x21795a39 dquot_acquire +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x2191a811 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x2199337a down_timeout +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21eb80c7 noop_qdisc +EXPORT_SYMBOL vmlinux 0x21f54d69 kick_iocb +EXPORT_SYMBOL vmlinux 0x21f5f83c __kfree_skb +EXPORT_SYMBOL vmlinux 0x21f9038a x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x21fb443e _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x22118adc bio_split +EXPORT_SYMBOL vmlinux 0x2223dc3a md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x22272049 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22435c9b skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x2265b5b5 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x2269a9d4 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x229b04f2 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x22a2e848 __register_binfmt +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22f6d48b fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x22f6e678 simple_unlink +EXPORT_SYMBOL vmlinux 0x230f88c2 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f39b0 single_open +EXPORT_SYMBOL vmlinux 0x23218826 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x2327aa87 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x2328271d __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x23310d83 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23a06e0f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ad28ce do_splice_to +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2447dc74 km_policy_notify +EXPORT_SYMBOL vmlinux 0x24500df5 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x2454e865 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x2455c51b eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2475a5f3 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248d4fe1 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0x249e6957 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x24adee63 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x24c2c8de dev_crit +EXPORT_SYMBOL vmlinux 0x24cdf946 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x24d52bf2 dma_set_mask +EXPORT_SYMBOL vmlinux 0x24da1058 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x24e61bdf inc_nlink +EXPORT_SYMBOL vmlinux 0x24f169fc down_read_trylock +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25007aa4 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2511771d x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252fc989 tcp_prot +EXPORT_SYMBOL vmlinux 0x2538085a kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x2559369c skb_copy_bits +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258821c4 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x25b46636 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ce6344 sock_create +EXPORT_SYMBOL vmlinux 0x25e49ef5 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x25e7f355 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x25fe9242 netif_skb_features +EXPORT_SYMBOL vmlinux 0x26176b82 sock_no_connect +EXPORT_SYMBOL vmlinux 0x2638c0f9 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264d3c3d idr_get_next +EXPORT_SYMBOL vmlinux 0x26654591 ether_setup +EXPORT_SYMBOL vmlinux 0x2680ad2a phy_device_register +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x26ac266f napi_get_frags +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2700a7a5 blk_rq_init +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275e1dcc sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27898038 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x27914c42 dev_alert +EXPORT_SYMBOL vmlinux 0x279bd6d2 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x27a0272a account_page_redirty +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bd6a12 key_task_permission +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27ca2b04 pci_disable_device +EXPORT_SYMBOL vmlinux 0x27ef51a0 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x28024adf sock_init_data +EXPORT_SYMBOL vmlinux 0x28147ae5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818a9c7 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x2827732d netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x2835d7d7 i2c_transfer +EXPORT_SYMBOL vmlinux 0x2841fc4c phy_start_aneg +EXPORT_SYMBOL vmlinux 0x2886720b __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28afce16 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28ec4153 dev_deactivate +EXPORT_SYMBOL vmlinux 0x28ed72c3 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x28f15a07 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x292093f4 native_rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x29259861 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x29368979 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295a252a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x295db419 x86_hyper +EXPORT_SYMBOL vmlinux 0x2984cc09 blk_put_queue +EXPORT_SYMBOL vmlinux 0x29a7b089 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x29aa34b3 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x29c97189 phy_driver_register +EXPORT_SYMBOL vmlinux 0x29fbc28c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a17f1bd find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x2a1d6915 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a34ae99 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3a75f6 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x2a4f1b65 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2abb2625 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x2ac3a82b input_free_device +EXPORT_SYMBOL vmlinux 0x2ad1c15b input_set_capability +EXPORT_SYMBOL vmlinux 0x2ad25a79 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x2ad58958 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x2b0505cf thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0e5890 da903x_query_status +EXPORT_SYMBOL vmlinux 0x2b13dc82 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b51c3b7 scsi_put_command +EXPORT_SYMBOL vmlinux 0x2b61c97b register_framebuffer +EXPORT_SYMBOL vmlinux 0x2b64ea2b journal_force_commit +EXPORT_SYMBOL vmlinux 0x2b689814 seq_path +EXPORT_SYMBOL vmlinux 0x2b710ae4 read_dev_sector +EXPORT_SYMBOL vmlinux 0x2b768b38 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x2b88e08a ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba434ee pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x2ba5bc7e register_netdev +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bc2ec5e nonseekable_open +EXPORT_SYMBOL vmlinux 0x2bc95bd4 memset +EXPORT_SYMBOL vmlinux 0x2bf8d577 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0a55e2 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c43d1c0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x2c5fbaaa inet_add_protocol +EXPORT_SYMBOL vmlinux 0x2c6be414 sync_inode +EXPORT_SYMBOL vmlinux 0x2c74d616 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2cb4a87b qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x2cbec142 generic_setxattr +EXPORT_SYMBOL vmlinux 0x2cd68dbb check_disk_change +EXPORT_SYMBOL vmlinux 0x2d1137b7 put_page +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d24b89d vm_map_ram +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d382b16 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2d7327f9 input_unregister_device +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d96060e twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x2db1a378 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x2db39f31 mdiobus_write +EXPORT_SYMBOL vmlinux 0x2db50d19 blk_make_request +EXPORT_SYMBOL vmlinux 0x2dcef4ea generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2de3ee8c phy_start +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e0eb27b bio_pair_release +EXPORT_SYMBOL vmlinux 0x2e292883 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e594dd3 vmtruncate +EXPORT_SYMBOL vmlinux 0x2e60bace memcpy +EXPORT_SYMBOL vmlinux 0x2e6379d2 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x2e909699 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x2ea7d424 gen_pool_free +EXPORT_SYMBOL vmlinux 0x2ebb302c sk_alloc +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0ac3f9 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f60dcf3 dev_driver_string +EXPORT_SYMBOL vmlinux 0x2f9155e9 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x2f995829 do_SAK +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fdfbb1d put_tty_driver +EXPORT_SYMBOL vmlinux 0x301d1821 mount_subtree +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302b865b x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x302d7b09 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x30491a83 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x30513cf6 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308c1356 notify_change +EXPORT_SYMBOL vmlinux 0x30a41367 genphy_read_status +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b3c295 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x30b56529 blkdev_put +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30ce3b55 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x30e585de __sock_create +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3101a618 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3112b64a tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x311fbf6d __free_pages +EXPORT_SYMBOL vmlinux 0x3134a249 seq_release +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31944a28 dma_ops +EXPORT_SYMBOL vmlinux 0x3198a9b5 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x31b2de1c ping_prot +EXPORT_SYMBOL vmlinux 0x31b55aa2 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x31b7e24b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x31c88165 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x31d46168 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x31e0d0f0 misc_register +EXPORT_SYMBOL vmlinux 0x31e0fa41 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x31e23e03 icmp_send +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31e8160a invalidate_partition +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f16dce dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x3242fe1c ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32a0284d cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x32c2931f request_firmware +EXPORT_SYMBOL vmlinux 0x32cda3dd tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x32cea339 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x32cebdeb skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x32f7b125 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x3310f962 set_pages_uc +EXPORT_SYMBOL vmlinux 0x332a447d poll_freewait +EXPORT_SYMBOL vmlinux 0x33604297 generic_fillattr +EXPORT_SYMBOL vmlinux 0x3371ce2f nla_reserve +EXPORT_SYMBOL vmlinux 0x33760de8 blk_put_request +EXPORT_SYMBOL vmlinux 0x337887c1 skb_checksum +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x3382d1b4 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x33858571 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x33aff57f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e0df67 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342e32e3 ida_simple_get +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3437d4a9 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x346d7320 set_security_override +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348f1ade ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x348f292b dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349b435d get_super +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b207b5 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x34b4ac1b kmap_high +EXPORT_SYMBOL vmlinux 0x34bf8404 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x34d47941 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x34de07d9 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x34ea28c1 netdev_info +EXPORT_SYMBOL vmlinux 0x35301894 inode_permission +EXPORT_SYMBOL vmlinux 0x353eed92 __frontswap_store +EXPORT_SYMBOL vmlinux 0x3542c8c1 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x35445d53 kset_register +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3580d491 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x35a03cd2 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35b86f2a generic_setlease +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35e0cb10 kthread_bind +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360fbbf6 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x362185d2 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x362ef408 _copy_from_user +EXPORT_SYMBOL vmlinux 0x3630de93 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x363b4476 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x365736f6 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x3658f412 generic_file_open +EXPORT_SYMBOL vmlinux 0x366e6bb9 get_io_context +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x36a66622 bio_free +EXPORT_SYMBOL vmlinux 0x36aad357 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f680cb I_BDEV +EXPORT_SYMBOL vmlinux 0x370fd791 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x371ac574 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374e4f04 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x374fe40c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x3754f46d acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x37661c17 padata_alloc +EXPORT_SYMBOL vmlinux 0x37704916 qdisc_reset +EXPORT_SYMBOL vmlinux 0x3794aee9 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x37955106 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x37ae4743 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x37b4f338 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37da3aa1 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37eaa2d0 d_move +EXPORT_SYMBOL vmlinux 0x37eb79ef blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x37f11765 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x37f36b00 ip6_route_output +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37ff4c06 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x38016c64 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x38045c45 iget_failed +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x3817b88d xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x38407090 pci_pme_active +EXPORT_SYMBOL vmlinux 0x384a05e3 kernel_accept +EXPORT_SYMBOL vmlinux 0x3859cd03 journal_update_format +EXPORT_SYMBOL vmlinux 0x386779b1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x3867ef1c iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x3893492b pipe_lock +EXPORT_SYMBOL vmlinux 0x38a0ac2e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x38a669a9 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38dae117 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x39074a0d bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x391bfa99 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x3937325a journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393f289b serio_reconnect +EXPORT_SYMBOL vmlinux 0x3945ab46 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x394b39bd add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x395c7095 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x397161b7 vfs_getattr +EXPORT_SYMBOL vmlinux 0x3976a941 inode_init_owner +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3988c786 cont_write_begin +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a0f94a __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x39aacb41 security_path_chown +EXPORT_SYMBOL vmlinux 0x39b5f9f5 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x39c773ad pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x39d86587 tty_throttle +EXPORT_SYMBOL vmlinux 0x39df3f20 set_create_files_as +EXPORT_SYMBOL vmlinux 0x39e00e86 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x39f137a3 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x39f2f6df led_blink_set +EXPORT_SYMBOL vmlinux 0x3a013b7d remove_wait_queue +EXPORT_SYMBOL vmlinux 0x3a037f03 __pagevec_release +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a2b9237 free_netdev +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a802d57 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa0a701 d_validate +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3abc319f dquot_commit +EXPORT_SYMBOL vmlinux 0x3b0a8b0f ip_ct_attach +EXPORT_SYMBOL vmlinux 0x3b2e5cdf journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b35dffe journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x3b72fc98 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x3b927999 pci_release_regions +EXPORT_SYMBOL vmlinux 0x3bb2d799 fget +EXPORT_SYMBOL vmlinux 0x3bba9133 rtnl_notify +EXPORT_SYMBOL vmlinux 0x3bc6d52f __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf8481d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x3c2caead seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x3c3233a3 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x3c421c27 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x3c43f173 key_alloc +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c953af3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9f3695 journal_destroy +EXPORT_SYMBOL vmlinux 0x3ca82b40 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc91957 dquot_enable +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d041361 dev_warn +EXPORT_SYMBOL vmlinux 0x3d23bcd1 bdevname +EXPORT_SYMBOL vmlinux 0x3d48f9e8 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x3d796346 __f_setown +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d8b36d4 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d9fbe85 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da4e394 input_register_handler +EXPORT_SYMBOL vmlinux 0x3dc838dc ip_options_compile +EXPORT_SYMBOL vmlinux 0x3dcafeec padata_add_cpu +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddf751e dev_uc_flush +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3ebbc6 get_disk +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4a8d05 ht_create_irq +EXPORT_SYMBOL vmlinux 0x3e5172d9 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3e52987a bio_add_page +EXPORT_SYMBOL vmlinux 0x3e66aeb0 block_write_end +EXPORT_SYMBOL vmlinux 0x3e7d1757 vga_put +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e962b1c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x3ea31149 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ec593a4 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x3ecb60f0 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x3ecc97bf dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee3fc97 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f560525 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x3f81ddad seq_read +EXPORT_SYMBOL vmlinux 0x3f9f868f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x3fa58ef8 wait_for_completion +EXPORT_SYMBOL vmlinux 0x3fab0635 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x3fe2f3f6 journal_init_inode +EXPORT_SYMBOL vmlinux 0x3fe6aca5 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4073c6c7 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x4081ca16 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409fa6a2 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a6b565 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d6bd13 unregister_nls +EXPORT_SYMBOL vmlinux 0x40da97d0 km_query +EXPORT_SYMBOL vmlinux 0x411ae61c pci_disable_msi +EXPORT_SYMBOL vmlinux 0x413f6063 commit_creds +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4166b739 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x416adfdb padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x416fe7ae __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419ee6e8 idr_pre_get +EXPORT_SYMBOL vmlinux 0x41a6d005 km_new_mapping +EXPORT_SYMBOL vmlinux 0x41bb6e9e scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x41bd2e9d agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x41becc85 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x41dee855 d_alloc +EXPORT_SYMBOL vmlinux 0x41e65bb0 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x41fca421 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x41fdad6b find_or_create_page +EXPORT_SYMBOL vmlinux 0x42052056 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421fd1fd dm_register_target +EXPORT_SYMBOL vmlinux 0x42289a78 input_grab_device +EXPORT_SYMBOL vmlinux 0x4239de63 ida_init +EXPORT_SYMBOL vmlinux 0x42426176 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4262ace0 dev_change_flags +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x429d56fb xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x429d987d generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x42be1b11 is_bad_inode +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d6a629 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x42d89fee dquot_quota_off +EXPORT_SYMBOL vmlinux 0x42da990e dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x42fbecfc __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x433269dd dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x43385ad9 acpi_pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437aca37 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x439c646b vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43bc9720 mddev_congested +EXPORT_SYMBOL vmlinux 0x43d3a2ff mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4405a900 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x440a4045 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x440b3f50 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x442970f9 pci_release_region +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44945744 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x449f04cc tcf_hash_check +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44dc6502 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efb9aa fb_validate_mode +EXPORT_SYMBOL vmlinux 0x44f0aa62 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x44f1606d down_trylock +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450be17a set_groups +EXPORT_SYMBOL vmlinux 0x451ba94e genphy_update_link +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45435d9f vfs_link +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x456bec47 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x456c2cb6 inet_accept +EXPORT_SYMBOL vmlinux 0x4578661a _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x459ad060 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aa36bc pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x45af4117 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x45b0cbe0 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c45e20 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45d54222 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x45ecf0f5 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x4609b151 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x461685c9 mdiobus_read +EXPORT_SYMBOL vmlinux 0x462894fe release_sock +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x464e5720 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46728553 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4690d588 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x46c421f3 bio_put +EXPORT_SYMBOL vmlinux 0x46d13f86 mmc_free_host +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470a0d59 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x47332440 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x4734f1c1 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x4757428d ip6_frag_match +EXPORT_SYMBOL vmlinux 0x475b3a2e dev_mc_init +EXPORT_SYMBOL vmlinux 0x475ecea2 d_lookup +EXPORT_SYMBOL vmlinux 0x475ee680 lookup_hash +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x4792c572 down_interruptible +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47b86893 drop_nlink +EXPORT_SYMBOL vmlinux 0x47bb2975 elevator_exit +EXPORT_SYMBOL vmlinux 0x47bb7ca3 bio_map_user +EXPORT_SYMBOL vmlinux 0x47c7b0d2 cpu_number +EXPORT_SYMBOL vmlinux 0x47dfef8b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x47f9fed0 kill_litter_super +EXPORT_SYMBOL vmlinux 0x47fed316 ip_defrag +EXPORT_SYMBOL vmlinux 0x481751c4 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4842d76f unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x484f1820 locks_free_lock +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485abd3c dev_emerg +EXPORT_SYMBOL vmlinux 0x486d2f29 dqstats +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4885c763 input_inject_event +EXPORT_SYMBOL vmlinux 0x48928120 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48cced36 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x48dad276 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x490134f2 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4907a6c7 serio_rescan +EXPORT_SYMBOL vmlinux 0x4933edaf generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x4959598e phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4962001c kmem_cache_size +EXPORT_SYMBOL vmlinux 0x496ac108 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x496e612c xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c99fbb security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49e7afd1 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x49ec398a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x49f7898c max8925_reg_write +EXPORT_SYMBOL vmlinux 0x4a0d25a7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x4a2abf51 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x4a3189f4 eth_header_parse +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3b69f8 file_update_time +EXPORT_SYMBOL vmlinux 0x4a52ed19 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4a5945eb __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x4a646cd0 pci_dev_put +EXPORT_SYMBOL vmlinux 0x4a648492 init_task +EXPORT_SYMBOL vmlinux 0x4a762494 padata_do_serial +EXPORT_SYMBOL vmlinux 0x4a8ab7b1 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x4a8b7f68 bdi_init +EXPORT_SYMBOL vmlinux 0x4a92d5d2 set_pages_x +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac9c4c8 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad1058e dev_set_group +EXPORT_SYMBOL vmlinux 0x4af8eb7d ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b088a1c __scsi_put_command +EXPORT_SYMBOL vmlinux 0x4b146ea5 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x4b1e5e59 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b50fac6 register_gifconf +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b666980 unlock_rename +EXPORT_SYMBOL vmlinux 0x4b807b24 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x4b9c377a xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4bbe7ef3 fb_pan_display +EXPORT_SYMBOL vmlinux 0x4bc4d5a5 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4bf7b27d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x4c0987e6 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x4c0a55e5 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x4c0ce03b clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c21cf2d scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c3622af sock_kfree_s +EXPORT_SYMBOL vmlinux 0x4c8debb8 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x4caea610 devm_iounmap +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4ccde762 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4d1431a5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4d28b129 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x4d325f03 sk_common_release +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3e884d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x4d3ee8d0 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d481937 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x4d615c3b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x4d66a1f8 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x4d70f593 skb_find_text +EXPORT_SYMBOL vmlinux 0x4d7be322 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x4d7d11c0 bio_copy_user +EXPORT_SYMBOL vmlinux 0x4d908c70 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de74420 __netif_schedule +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfdd7cd security_path_truncate +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e10b752 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x4e21999c acpi_get_child +EXPORT_SYMBOL vmlinux 0x4e29c7cb idr_for_each +EXPORT_SYMBOL vmlinux 0x4e2eb762 get_super_thawed +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3711d1 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x4e3cdef2 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x4e577ec5 ihold +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7773b0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e831bf1 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4e94cd6b max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eb11f1f seq_bitmap +EXPORT_SYMBOL vmlinux 0x4eba27b6 spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x4ec4a704 dqput +EXPORT_SYMBOL vmlinux 0x4ec815c3 abort_creds +EXPORT_SYMBOL vmlinux 0x4eeaccab generic_write_sync +EXPORT_SYMBOL vmlinux 0x4eee6b40 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2cb05d blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7b41e4 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x4f921be4 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x4fb127f6 bio_alloc +EXPORT_SYMBOL vmlinux 0x4fd0cf10 skb_push +EXPORT_SYMBOL vmlinux 0x4fd14db9 __pskb_copy +EXPORT_SYMBOL vmlinux 0x4fd254d8 netdev_err +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fdf2834 uart_register_driver +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x5011ca4f udp_ioctl +EXPORT_SYMBOL vmlinux 0x501b9ca2 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x502b4e54 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x5046ab94 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x505c6538 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x506bdfda __breadahead +EXPORT_SYMBOL vmlinux 0x5084b346 simple_setattr +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x50fc46c7 sk_wait_data +EXPORT_SYMBOL vmlinux 0x51035a73 cdrom_release +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5152e605 memcmp +EXPORT_SYMBOL vmlinux 0x51611843 vmap +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51c1653e skb_copy_expand +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d816e4 seq_write +EXPORT_SYMBOL vmlinux 0x51d92855 dquot_destroy +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5206459c proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520a5b01 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x5211b7b1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x521d2344 __devm_release_region +EXPORT_SYMBOL vmlinux 0x522940b1 is_container_init +EXPORT_SYMBOL vmlinux 0x523d16e0 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x52423a0c ida_pre_get +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526a8b04 generic_show_options +EXPORT_SYMBOL vmlinux 0x526a9929 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x526d4d5b max8998_read_reg +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52cf4815 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52dec5be max8925_set_bits +EXPORT_SYMBOL vmlinux 0x52def3aa pci_remove_bus +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532798a2 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53445472 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x534b3af6 clear_inode +EXPORT_SYMBOL vmlinux 0x53597354 kern_path_create +EXPORT_SYMBOL vmlinux 0x53602505 devm_ioremap +EXPORT_SYMBOL vmlinux 0x5368355b phy_detach +EXPORT_SYMBOL vmlinux 0x5379e1db d_set_d_op +EXPORT_SYMBOL vmlinux 0x537d5132 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x537de34c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5383f34b _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53c2f058 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x53e511b3 intel_gtt_insert_pages +EXPORT_SYMBOL vmlinux 0x53f2ef10 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x53f58228 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x54152e04 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x54222d1c elv_rb_find +EXPORT_SYMBOL vmlinux 0x543c0e46 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5477bf0c jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x548dc58c generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x54935666 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c3ae72 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x54cb9633 phy_print_status +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5519a515 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x5533b3b5 security_inode_permission +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55515575 dget_parent +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5572f591 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x5585601f i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x55894703 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x558ea749 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x5591767e vc_resize +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b6d30d dm_io +EXPORT_SYMBOL vmlinux 0x55d41aa0 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x55e8a4b8 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x560c6a38 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5628386e inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5632b308 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56458902 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x56472b40 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x56512096 alloc_disk +EXPORT_SYMBOL vmlinux 0x56729f8e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x56832fff tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x56a1a9b4 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x56a2ac3e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x56ac1307 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d7b7b5 __d_drop +EXPORT_SYMBOL vmlinux 0x56efa250 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f8886 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x5737f3bf set_blocksize +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575828d5 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x5764e924 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5768ae11 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x5772a7c9 blk_get_queue +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57d7aa89 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x580199b1 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x580ffb63 d_genocide +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x588fa1ba vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x5892d54c acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x58b5efb5 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x58bd61b5 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x58c93d86 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x58e9f43f fasync_helper +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x592b59af acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x594256e6 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x5949ff63 dev_load +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5963927a sget +EXPORT_SYMBOL vmlinux 0x5971b0fe pci_map_rom +EXPORT_SYMBOL vmlinux 0x5979700b vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5984e6a2 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x599b7911 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x59ad9109 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a2aa62e __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4ac043 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x5a672d0e max8925_reg_read +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a8823d1 __getblk +EXPORT_SYMBOL vmlinux 0x5a943572 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x5aa65678 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ac5c0ba sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x5ad0fa32 vga_client_register +EXPORT_SYMBOL vmlinux 0x5aec6f81 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x5af45bcb first_ec +EXPORT_SYMBOL vmlinux 0x5af67b23 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x5b005625 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x5b13cfa3 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b21061b pci_match_id +EXPORT_SYMBOL vmlinux 0x5b2583d5 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x5b7ae69b sock_no_mmap +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bab1a10 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x5bafe212 fb_find_mode +EXPORT_SYMBOL vmlinux 0x5bb472a3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x5c09426c netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x5c2d5294 md_write_end +EXPORT_SYMBOL vmlinux 0x5c310b0f mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x5c378de5 vfs_statfs +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c45dd2c pci_read_vpd +EXPORT_SYMBOL vmlinux 0x5c832ec1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x5c87b96e set_nlink +EXPORT_SYMBOL vmlinux 0x5cb13777 netif_device_detach +EXPORT_SYMBOL vmlinux 0x5cbd76fd pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x5cdd721d nf_setsockopt +EXPORT_SYMBOL vmlinux 0x5cdeca49 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x5ce15ee5 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x5cfa562c kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d102d45 user_revoke +EXPORT_SYMBOL vmlinux 0x5d138f30 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x5d3b55b5 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x5d4bddf2 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d61df13 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x5d6f1c29 blkdev_get +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d83b1f0 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5d935974 page_readlink +EXPORT_SYMBOL vmlinux 0x5d984767 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x5db34e40 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x5dc0dfe5 generic_write_end +EXPORT_SYMBOL vmlinux 0x5dc574c3 nobh_write_end +EXPORT_SYMBOL vmlinux 0x5dce6b75 complete_and_exit +EXPORT_SYMBOL vmlinux 0x5dedaced kmem_cache_create +EXPORT_SYMBOL vmlinux 0x5e0614e3 generic_read_dir +EXPORT_SYMBOL vmlinux 0x5e2dc318 input_event +EXPORT_SYMBOL vmlinux 0x5e47a3e7 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e85c687 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9e5c84 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5ea02bf0 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x5eaa7759 md_integrity_register +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f07ff58 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x5f09a1af blk_start_request +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f27544a mempool_destroy +EXPORT_SYMBOL vmlinux 0x5f3c0a92 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f43dff3 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x5f4703be pcim_iomap +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f7d37ef __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fc17a03 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x5fc9077a scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x5fcbbf39 sg_miter_start +EXPORT_SYMBOL vmlinux 0x5fe41fb6 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x5ffd7a75 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60524e15 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x605eb6b9 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607b9869 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b0d325 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x60b2e38a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x60dc1b2e blk_execute_rq +EXPORT_SYMBOL vmlinux 0x61209bdd fb_class +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6147b9c2 journal_wipe +EXPORT_SYMBOL vmlinux 0x614f0a7c textsearch_destroy +EXPORT_SYMBOL vmlinux 0x61528b43 kobject_get +EXPORT_SYMBOL vmlinux 0x61536865 idr_destroy +EXPORT_SYMBOL vmlinux 0x616c4c83 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x6184192c udp_proc_register +EXPORT_SYMBOL vmlinux 0x6194f562 inet_frags_init +EXPORT_SYMBOL vmlinux 0x61972e83 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x619b187b add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x61a3dd3e sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x61b1617c ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x61b5ade0 down_write +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61be844b security_path_mknod +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6207899a journal_check_used_features +EXPORT_SYMBOL vmlinux 0x621d77a0 sleep_on +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622e73bb tcp_close +EXPORT_SYMBOL vmlinux 0x622fa02a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x622fbe18 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x623b0396 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x6270c5cf ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6279df13 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x628081a0 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x62813eb6 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629e3c7d agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x62b5571c lock_super +EXPORT_SYMBOL vmlinux 0x62c90dcb shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x62cb4cee interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x62d3cf79 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x62e209bc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x62ee8d85 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x62fe28ed pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x63130333 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63207d2a load_nls +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x6339a8bc mutex_unlock +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636f05e1 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x639c353a mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x63a4041f __seq_open_private +EXPORT_SYMBOL vmlinux 0x63ac5ce3 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x63d7c010 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x63e82894 dquot_resume +EXPORT_SYMBOL vmlinux 0x63eb782e register_key_type +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63efc738 elevator_change +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640785a3 __scm_send +EXPORT_SYMBOL vmlinux 0x641f5aba kernel_getsockname +EXPORT_SYMBOL vmlinux 0x642621e1 force_sig +EXPORT_SYMBOL vmlinux 0x643a5a3c qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x645832b5 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x645f7018 __lock_buffer +EXPORT_SYMBOL vmlinux 0x646de623 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x646e8726 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64c33e55 inet_frag_find +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x65125138 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6515d69c console_start +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651dd2a1 touch_atime +EXPORT_SYMBOL vmlinux 0x65220759 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6527f823 generic_writepages +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6554f86c ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x656a8da7 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x65735e72 lock_rename +EXPORT_SYMBOL vmlinux 0x657879ce __init_rwsem +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65935ab2 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65a37537 seq_lseek +EXPORT_SYMBOL vmlinux 0x65ccdc08 pci_get_slot +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e429e9 journal_start +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f4ca8f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x65f7cfb7 uart_match_port +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6622c994 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x662ac90b secpath_dup +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x66490322 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x666d7d00 rt6_lookup +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66ad642b genphy_resume +EXPORT_SYMBOL vmlinux 0x66bcc981 release_firmware +EXPORT_SYMBOL vmlinux 0x66e86702 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x66eeabd3 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673cdf5e poll_initwait +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6765582d d_path +EXPORT_SYMBOL vmlinux 0x676c21b6 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x678038d6 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d71a44 vm_event_states +EXPORT_SYMBOL vmlinux 0x67dcffb7 lg_lock_init +EXPORT_SYMBOL vmlinux 0x67e805f3 skb_clone +EXPORT_SYMBOL vmlinux 0x67f7403e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x67fc0737 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x68105edd blk_requeue_request +EXPORT_SYMBOL vmlinux 0x68192c9d blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x6827030b tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x682d0963 simple_write_begin +EXPORT_SYMBOL vmlinux 0x683296cc end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x683b4837 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x683fbe96 ps2_end_command +EXPORT_SYMBOL vmlinux 0x68544d33 input_register_device +EXPORT_SYMBOL vmlinux 0x68550dc8 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x6866a425 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x68675112 clear_nlink +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68dfc59f __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e3c5bc sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x6901c92a ps2_init +EXPORT_SYMBOL vmlinux 0x690b17e2 search_binary_handler +EXPORT_SYMBOL vmlinux 0x691d88e2 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x691dea89 seq_release_private +EXPORT_SYMBOL vmlinux 0x6928083a xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x6965964c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697e8523 sk_free +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699756dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ae1493 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d5099a sock_create_kern +EXPORT_SYMBOL vmlinux 0x69d5f617 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x69d6e079 pci_iounmap +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e2bfb1 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a089c60 dst_release +EXPORT_SYMBOL vmlinux 0x6a0dccad scsi_device_resume +EXPORT_SYMBOL vmlinux 0x6a24effe dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a2859b9 submit_bio +EXPORT_SYMBOL vmlinux 0x6a3ad11e mii_check_media +EXPORT_SYMBOL vmlinux 0x6a3dd4ee scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x6a48e16b percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x6a567332 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7c3bee mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x6a7ce69b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6a89d48b ll_rw_block +EXPORT_SYMBOL vmlinux 0x6aa4d5e1 netdev_printk +EXPORT_SYMBOL vmlinux 0x6ab327fc kunmap_high +EXPORT_SYMBOL vmlinux 0x6abc2139 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6adabea6 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b24badd rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x6b2b5e86 new_inode +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b3ecd1c simple_transaction_read +EXPORT_SYMBOL vmlinux 0x6b5755f5 netdev_set_master +EXPORT_SYMBOL vmlinux 0x6b615b02 input_open_device +EXPORT_SYMBOL vmlinux 0x6b6de743 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b795975 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6bb35fbc pci_select_bars +EXPORT_SYMBOL vmlinux 0x6bbafe33 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd44df0 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x6bd93a46 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x6bdbf152 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c049c98 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2b1136 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c3d7277 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x6c41f6af __scsi_add_device +EXPORT_SYMBOL vmlinux 0x6c4b6c72 kill_bdev +EXPORT_SYMBOL vmlinux 0x6c58a005 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c622c4a jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x6c62a60f ab3100_event_register +EXPORT_SYMBOL vmlinux 0x6c6f111e input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6cab3d66 __rta_fill +EXPORT_SYMBOL vmlinux 0x6cb898d2 should_remove_suid +EXPORT_SYMBOL vmlinux 0x6cb9693b unlock_super +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cfd2f81 send_sig_info +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d09e3fc generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x6d0ea8b5 find_inode_number +EXPORT_SYMBOL vmlinux 0x6d0f1016 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d5bfec4 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0x6d62ee47 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d704cf9 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6da70133 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x6dcaaae6 setup_new_exec +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e12513d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x6e14626d __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x6e248b59 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x6e2a99b4 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6e51ac2e _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x6e65f2dc rtc_lock +EXPORT_SYMBOL vmlinux 0x6e6e5569 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x6e707e3f start_tty +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8900cb skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea696c1 tty_kref_put +EXPORT_SYMBOL vmlinux 0x6eb8de10 set_bh_page +EXPORT_SYMBOL vmlinux 0x6ef0f77f tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x6ef6ed03 dm_get_device +EXPORT_SYMBOL vmlinux 0x6efe626f serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x6f0f02d4 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2adb09 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x6f33d5f9 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6f3c9c34 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x6f4c6b71 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x6f5048bf sk_reset_timer +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f627f48 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x6f66f6d6 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x6f829e31 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x6f871b70 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6f90e5ef tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x6fc2d0a4 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x6fc84686 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd099b3 scsi_register +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7061c95a journal_get_write_access +EXPORT_SYMBOL vmlinux 0x708b72a2 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x709d936d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70bdd176 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x70be3a0b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d6860d vfs_mknod +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70d9d2a0 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x70e70596 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x7114a71f bit_waitqueue +EXPORT_SYMBOL vmlinux 0x7116a196 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x7118ee21 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71321b2b blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x7137cbef inet6_getname +EXPORT_SYMBOL vmlinux 0x715166c3 mii_check_link +EXPORT_SYMBOL vmlinux 0x715299b5 genl_register_ops +EXPORT_SYMBOL vmlinux 0x7156feee scsi_free_command +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7179af57 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x71a19fc0 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x71a2ebf2 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71d71247 make_EII_client +EXPORT_SYMBOL vmlinux 0x71eca60d netlink_ack +EXPORT_SYMBOL vmlinux 0x720d7a50 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x72109c0d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x722df4fa textsearch_unregister +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723edd3b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x725588e2 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x72615f2c swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x7266e885 find_vma +EXPORT_SYMBOL vmlinux 0x727c9514 eth_header +EXPORT_SYMBOL vmlinux 0x728e77d9 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x729a737f xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x729d6c4d udp_poll +EXPORT_SYMBOL vmlinux 0x729fa0fc pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x72b0a36c kobject_set_name +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b9bfb8 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72d2edee bdi_unregister +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72df2f2a up_read +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7316b2b8 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x731b3b60 mount_bdev +EXPORT_SYMBOL vmlinux 0x731d08cd dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73a19a79 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x73c761d3 serio_close +EXPORT_SYMBOL vmlinux 0x73cc6773 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x73d9cc32 unload_nls +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f11212 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x73fca793 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x740395e4 register_md_personality +EXPORT_SYMBOL vmlinux 0x74061068 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x7406f5c5 kobject_put +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x740a7cc2 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x741a6e22 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x7437cfc3 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x7464e025 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74755d1c journal_ack_err +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749f4165 irq_stat +EXPORT_SYMBOL vmlinux 0x74a8df05 sk_dst_check +EXPORT_SYMBOL vmlinux 0x74a9b886 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x74adba0f input_allocate_device +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d80856 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x74de671e pci_disable_msix +EXPORT_SYMBOL vmlinux 0x74e000f2 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x74e56824 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f7dc1f ppp_register_channel +EXPORT_SYMBOL vmlinux 0x74fbabae kthread_stop +EXPORT_SYMBOL vmlinux 0x7504bfaa netif_napi_add +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754e45f9 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x7550d587 page_symlink +EXPORT_SYMBOL vmlinux 0x7556317b pci_choose_state +EXPORT_SYMBOL vmlinux 0x757d931a truncate_setsize +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75b38131 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x75bb675a finish_wait +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75cda709 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75fc819d devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x760f1b84 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x76435bcc agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x76439a4f __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7649d218 d_instantiate +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e3f67 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76bf98e1 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x76d09fcc mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76e7f5d7 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x76f39d88 phy_device_free +EXPORT_SYMBOL vmlinux 0x76fe546c arp_tbl +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771cc554 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772f9eec __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x773994c7 tcp_check_req +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x774d4dd6 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x7763473f blk_end_request_all +EXPORT_SYMBOL vmlinux 0x777539b7 cpu_info +EXPORT_SYMBOL vmlinux 0x778a87e8 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77aa6d4d bio_integrity_free +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d36f75 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x78001550 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x780618a5 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x7807eace kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x781416e3 revert_creds +EXPORT_SYMBOL vmlinux 0x78189ead agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7888304a neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x7899b2c5 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x78a06084 mb_cache_create +EXPORT_SYMBOL vmlinux 0x78a33c4d scsi_device_get +EXPORT_SYMBOL vmlinux 0x78bb2011 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x78db2fa2 __napi_complete +EXPORT_SYMBOL vmlinux 0x78db38d3 proc_dointvec +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79086a6f mpage_readpages +EXPORT_SYMBOL vmlinux 0x7949da53 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x79544325 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x7969c8e3 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7987d1d9 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x7991b917 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bf1026 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x79db2bde generic_delete_inode +EXPORT_SYMBOL vmlinux 0x79de04e6 blk_complete_request +EXPORT_SYMBOL vmlinux 0x7a0ce71e journal_clear_err +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6debbe sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x7a96efac input_unregister_handler +EXPORT_SYMBOL vmlinux 0x7a9bf88d udplite_table +EXPORT_SYMBOL vmlinux 0x7aa62c14 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x7aa81449 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x7ab14183 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac8dbfd blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7adc7801 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af45b69 netdev_notice +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b0c84c4 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b36c8bc inet6_ioctl +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b56bd05 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x7b5b7039 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b7daaff __neigh_event_send +EXPORT_SYMBOL vmlinux 0x7b8052b3 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x7b91a962 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7ba2806b ps2_drain +EXPORT_SYMBOL vmlinux 0x7ba7ba58 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x7bf41ce1 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x7c00c42c setattr_copy +EXPORT_SYMBOL vmlinux 0x7c0a4a7f tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x7c0c67cf tcf_action_exec +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1cc732 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x7c21be75 inet_listen +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c47328c netlink_broadcast +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c96ca8f security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cce5b6e generic_write_checks +EXPORT_SYMBOL vmlinux 0x7ce1035e blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x7ce7575b sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d5499bd sock_map_fd +EXPORT_SYMBOL vmlinux 0x7d6a149c ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7d90a6f4 tty_set_operations +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dc9a459 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x7de92f5c ilookup +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e03c069 agp_create_memory +EXPORT_SYMBOL vmlinux 0x7e32a808 redraw_screen +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e410bb7 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x7e65372f dst_discard +EXPORT_SYMBOL vmlinux 0x7e6b4db2 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x7e6fc948 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x7e77b791 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x7e895459 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7eb8c105 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7edbf8c2 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eea438f bdi_register +EXPORT_SYMBOL vmlinux 0x7f18b194 kacpi_hotplug_wq +EXPORT_SYMBOL vmlinux 0x7f1c5cb6 arp_invalidate +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ab6c2 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f909eb5 tty_hangup +EXPORT_SYMBOL vmlinux 0x7fac17fe crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x7fce3155 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x7fddca94 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7feebcce unregister_con_driver +EXPORT_SYMBOL vmlinux 0x7ff5ddf0 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x80258d85 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x802d552f skb_pull +EXPORT_SYMBOL vmlinux 0x803d8572 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x803d9279 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x8041a9f0 __bread +EXPORT_SYMBOL vmlinux 0x806b3742 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8080b260 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x80875a88 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x809482ec tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x809c6fd8 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x80ad0844 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x80b1f10e pnp_register_driver +EXPORT_SYMBOL vmlinux 0x80cbf6d5 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x80d34622 lease_modify +EXPORT_SYMBOL vmlinux 0x810474d0 i2c_use_client +EXPORT_SYMBOL vmlinux 0x811b808f blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x811c8b7a d_drop +EXPORT_SYMBOL vmlinux 0x813fc52a scsi_unregister +EXPORT_SYMBOL vmlinux 0x8143c2f7 softnet_data +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8150c0ba mempool_resize +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x817e469e follow_down +EXPORT_SYMBOL vmlinux 0x81873e5a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x818f0e0c ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x819e1c25 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0x819e1ed6 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de2bc6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81e73ce0 mount_single +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82254c43 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82700eef max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x8294cfc8 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d258eb wake_up_process +EXPORT_SYMBOL vmlinux 0x830a135d security_file_permission +EXPORT_SYMBOL vmlinux 0x830c90fe do_splice_direct +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x832fd794 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x8333114f ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8352f522 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x837cfef2 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8381452c tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83ea89ca inet_put_port +EXPORT_SYMBOL vmlinux 0x83eefbbf sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x83f39d4f __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84077dfc dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x845423fd pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x84a33f84 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x84be886f completion_done +EXPORT_SYMBOL vmlinux 0x84deb8be truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x84e17b5b jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x85138655 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x8513c189 __bio_clone +EXPORT_SYMBOL vmlinux 0x852bb675 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x854bab9a set_user_nice +EXPORT_SYMBOL vmlinux 0x854ca731 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x854e8ff2 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x85636ba5 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85881399 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x85978f17 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x85aed2a2 dev_open +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bcbbb5 simple_rmdir +EXPORT_SYMBOL vmlinux 0x85c1fcc5 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x85d16790 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e30ad1 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85f486cb vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x8606e5ca ip_fragment +EXPORT_SYMBOL vmlinux 0x86135bf2 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86586e3e dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868ebdf2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aeb3db dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x86bfae20 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86e2ddb3 block_truncate_page +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8748944f acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x8767847c security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8795403a __dquot_transfer +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87f57797 sock_no_getname +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8814f183 neigh_table_init +EXPORT_SYMBOL vmlinux 0x882407f1 would_dump +EXPORT_SYMBOL vmlinux 0x88290f62 seq_open +EXPORT_SYMBOL vmlinux 0x882de604 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88473f72 cdev_del +EXPORT_SYMBOL vmlinux 0x8855b5bd tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x885fc640 bh_submit_read +EXPORT_SYMBOL vmlinux 0x8868c4b7 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x88962883 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x889b4f39 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x88afbc60 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x88bfdf81 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x88d72564 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x88df64c4 kill_block_super +EXPORT_SYMBOL vmlinux 0x88dfc71f security_path_mkdir +EXPORT_SYMBOL vmlinux 0x88e29782 amd_northbridges +EXPORT_SYMBOL vmlinux 0x88ead914 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x88ffbfb0 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x891e5a97 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x89344147 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895d9cc9 tcf_register_action +EXPORT_SYMBOL vmlinux 0x89703ba1 sock_no_bind +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x8978b112 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x8987cf30 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x898e3e2c nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x899c1258 mount_pseudo +EXPORT_SYMBOL vmlinux 0x89ae03a4 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b8da47 netif_rx +EXPORT_SYMBOL vmlinux 0x89bc66b7 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x89c1275f sock_no_poll +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89e2c327 cdrom_open +EXPORT_SYMBOL vmlinux 0x89ec56c7 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x89edfceb __get_user_pages +EXPORT_SYMBOL vmlinux 0x8a04b034 skb_dequeue +EXPORT_SYMBOL vmlinux 0x8a0917d5 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x8a106d82 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x8a1615d6 mempool_create_node +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a32bca9 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x8a381cd6 block_write_begin +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a558a91 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8a5e05b4 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x8a6075c3 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x8a72ea62 bmap +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a93b57a ida_destroy +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa97cfa journal_restart +EXPORT_SYMBOL vmlinux 0x8aaa9860 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8b0c658a sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1df0dc inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3815cf eisa_driver_register +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b62e4b6 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8b7d93bd aio_put_req +EXPORT_SYMBOL vmlinux 0x8b914fa0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b996224 request_key +EXPORT_SYMBOL vmlinux 0x8b9f4ad5 set_pages_wb +EXPORT_SYMBOL vmlinux 0x8ba40405 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x8bb073ba unregister_md_personality +EXPORT_SYMBOL vmlinux 0x8bd77aa1 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x8bee389a ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8bf7a472 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1912c5 kmap +EXPORT_SYMBOL vmlinux 0x8c28b7dd truncate_pagecache +EXPORT_SYMBOL vmlinux 0x8c300eb1 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x8c395f55 netdev_change_features +EXPORT_SYMBOL vmlinux 0x8c836c49 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x8c86fb52 block_write_full_page +EXPORT_SYMBOL vmlinux 0x8c924ff1 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8ca3fa4a dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x8cc4f7fd tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccad5e8 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8cd4d5b0 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdeaa2b pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x8cf3164b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x8cf6fb2d fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x8d320f77 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8d3bc18a xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x8d488ae3 register_netdevice +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6185a1 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d9391ec sock_no_listen +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8da6219d blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8dad7e07 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8dd73fd5 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x8def339e contig_page_data +EXPORT_SYMBOL vmlinux 0x8dfd46da dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e0e485b unlock_buffer +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ebf41cd uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x8ec9c003 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x8eeee13b tty_port_open +EXPORT_SYMBOL vmlinux 0x8efd507e kern_path +EXPORT_SYMBOL vmlinux 0x8eff8cdb dm_put_device +EXPORT_SYMBOL vmlinux 0x8f0028cc eisa_bus_type +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f5bf0a0 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f80e9e3 get_write_access +EXPORT_SYMBOL vmlinux 0x8f853fe9 write_cache_pages +EXPORT_SYMBOL vmlinux 0x8f879fc2 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x8f880945 kernel_listen +EXPORT_SYMBOL vmlinux 0x8f8acb97 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa12b39 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8fe64ba3 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x8feb7580 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x900492de phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x902773b4 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x904246ce blk_end_request +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x9046fb68 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x9058aa3c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x9058c5ef scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x9068bf74 twl6040_power +EXPORT_SYMBOL vmlinux 0x908f4a3f sock_i_ino +EXPORT_SYMBOL vmlinux 0x909a8d15 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x90a1601f dmi_check_system +EXPORT_SYMBOL vmlinux 0x90a4f271 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x90ae880e elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x90b1d9da bdi_destroy +EXPORT_SYMBOL vmlinux 0x90b625d1 init_special_inode +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d0d7ef dev_trans_start +EXPORT_SYMBOL vmlinux 0x90d3fd9a filp_open +EXPORT_SYMBOL vmlinux 0x90e17724 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x90f64fdb inet_shutdown +EXPORT_SYMBOL vmlinux 0x91095cab x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x912989da scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x9130204b alloc_file +EXPORT_SYMBOL vmlinux 0x9141ec9e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915d33e1 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9164394f swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x916bf343 do_truncate +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91831788 pci_find_bus +EXPORT_SYMBOL vmlinux 0x918dc0f2 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x91ec92d9 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9208cc33 genl_notify +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923cf75b tcp_disconnect +EXPORT_SYMBOL vmlinux 0x926e1e71 skb_insert +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x929215f5 vfs_open +EXPORT_SYMBOL vmlinux 0x9293b682 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x92a05f3d idr_get_new +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bbca8e user_path_at +EXPORT_SYMBOL vmlinux 0x92c939ed vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x92cbf3e4 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x92d3fbca scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x92f403a6 blk_init_queue +EXPORT_SYMBOL vmlinux 0x92f8d258 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930ae5a3 vfs_llseek +EXPORT_SYMBOL vmlinux 0x9312d072 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93227508 simple_lookup +EXPORT_SYMBOL vmlinux 0x932b36b2 filemap_fault +EXPORT_SYMBOL vmlinux 0x932ef3a3 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x932f808a journal_start_commit +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9347c50a mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x9354d417 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x93604d92 tty_devnum +EXPORT_SYMBOL vmlinux 0x936e9902 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x938d6b8d find_get_page +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93ab1438 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x93ac01b6 register_quota_format +EXPORT_SYMBOL vmlinux 0x93b62c8c dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x93c651be acpi_info +EXPORT_SYMBOL vmlinux 0x93ccd4b9 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94264219 __bforget +EXPORT_SYMBOL vmlinux 0x943c1bf0 journal_revoke +EXPORT_SYMBOL vmlinux 0x94546d8c single_release +EXPORT_SYMBOL vmlinux 0x945ff17e free_task +EXPORT_SYMBOL vmlinux 0x94844080 lookup_bdev +EXPORT_SYMBOL vmlinux 0x948951dd tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x9494b615 iget5_locked +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94def637 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x94e7758c __serio_register_driver +EXPORT_SYMBOL vmlinux 0x94ebca17 register_filesystem +EXPORT_SYMBOL vmlinux 0x94ff9735 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x9501924e __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x950740e8 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954191db __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954ddfbc dev_gro_receive +EXPORT_SYMBOL vmlinux 0x956a7f9c generic_file_fsync +EXPORT_SYMBOL vmlinux 0x957f9287 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x95869ed0 kunmap +EXPORT_SYMBOL vmlinux 0x95c4cffc blk_sync_queue +EXPORT_SYMBOL vmlinux 0x95e2210d do_splice_from +EXPORT_SYMBOL vmlinux 0x95e8fe5e set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x95f0d474 backlight_force_update +EXPORT_SYMBOL vmlinux 0x95f3164e init_net +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x95fb99b6 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96657bf3 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x967b4a07 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9696ac72 rename_lock +EXPORT_SYMBOL vmlinux 0x96a0785f ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x96a3acb1 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x96a592f6 seq_puts +EXPORT_SYMBOL vmlinux 0x96b0b233 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x96c4b5fc vfs_readdir +EXPORT_SYMBOL vmlinux 0x96c7e43b seq_printf +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d26eb5 file_open_root +EXPORT_SYMBOL vmlinux 0x96d86015 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x96e79739 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x96efba46 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x96f229a7 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x97082a3e i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9717fe14 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x97192358 blk_run_queue +EXPORT_SYMBOL vmlinux 0x97199d8b pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x971c0b8e override_creds +EXPORT_SYMBOL vmlinux 0x971c9efe skb_gso_segment +EXPORT_SYMBOL vmlinux 0x9748af3a isapnp_protocol +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x979922f6 dev_add_pack +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979baf81 module_refcount +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b59586 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x97b81ad2 blk_init_tags +EXPORT_SYMBOL vmlinux 0x97c67335 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x97c731df rtnl_unicast +EXPORT_SYMBOL vmlinux 0x97cd8bdf irq_set_chip +EXPORT_SYMBOL vmlinux 0x97d78524 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f3d5c0 sock_release +EXPORT_SYMBOL vmlinux 0x97f659e7 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98400e7b processors +EXPORT_SYMBOL vmlinux 0x98497228 eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0x985502e8 noop_fsync +EXPORT_SYMBOL vmlinux 0x9861cc16 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9879dce6 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x987e4f22 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a84d12 unregister_console +EXPORT_SYMBOL vmlinux 0x98b8eefb ipv4_specific +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99052a84 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x9907e3e2 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x990cc41b irq_to_desc +EXPORT_SYMBOL vmlinux 0x992aa1c4 follow_down_one +EXPORT_SYMBOL vmlinux 0x994a8012 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99579ee5 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9962700c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x9980c944 xfrm_input +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99982f5d padata_do_parallel +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a5edc8 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x99b4d102 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x99b5d918 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c711cd bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99eed638 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x9a03730f pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x9a0ab0bb qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1e97d7 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a49ebae simple_transaction_release +EXPORT_SYMBOL vmlinux 0x9a5e4c77 dev_uc_add +EXPORT_SYMBOL vmlinux 0x9a60979e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a7cc926 netdev_update_features +EXPORT_SYMBOL vmlinux 0x9a7dbe6a journal_errno +EXPORT_SYMBOL vmlinux 0x9a8e53d6 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x9ab5b95a kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x9ad73365 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x9ada1bb8 proc_mkdir +EXPORT_SYMBOL vmlinux 0x9b0379e4 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9b11bca9 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x9b14a5d3 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3dcfa2 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b7bfd48 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb49448 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x9bc6183f ilookup5 +EXPORT_SYMBOL vmlinux 0x9bf0e7e7 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9c08c2f0 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x9c1f3084 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9c24fc3b page_address +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c49a30d security_path_unlink +EXPORT_SYMBOL vmlinux 0x9c4fbb26 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x9c5996b7 tty_register_driver +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c85b327 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x9c8ecd26 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x9c922abf inet_sendpage +EXPORT_SYMBOL vmlinux 0x9ca79f7c vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x9ca871e0 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc363ab inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x9ccc3a05 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x9cd3a53e path_put +EXPORT_SYMBOL vmlinux 0x9cde9f99 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x9ceac034 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cee5d79 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x9cf94d9e acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d18297e input_set_keycode +EXPORT_SYMBOL vmlinux 0x9d2c7a7b mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4e373f skb_queue_head +EXPORT_SYMBOL vmlinux 0x9d63f828 unregister_netdev +EXPORT_SYMBOL vmlinux 0x9d72de2e generic_ro_fops +EXPORT_SYMBOL vmlinux 0x9d8a5e9c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x9d9778c4 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x9db88ea2 dquot_file_open +EXPORT_SYMBOL vmlinux 0x9dbe51b6 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x9dc36cdd ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x9dc97468 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9de44d71 scsi_print_result +EXPORT_SYMBOL vmlinux 0x9df7d340 soft_cursor +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e281891 neigh_for_each +EXPORT_SYMBOL vmlinux 0x9e2a7058 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x9e337136 tty_name +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6490e0 d_add_ci +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9700f7 lookup_one_len +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecc8f89 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edb5d0b vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x9ef1f9ec serio_open +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2c8efb fb_show_logo +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f4a7890 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x9f755f5f pci_assign_resource +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9c0265 kill_anon_super +EXPORT_SYMBOL vmlinux 0x9fa8934e __napi_schedule +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fc20bd8 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff86bc6 user_path_create +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0194de4 try_to_release_page +EXPORT_SYMBOL vmlinux 0xa03af986 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa083612a get_user_pages +EXPORT_SYMBOL vmlinux 0xa090c910 ip6_xmit +EXPORT_SYMBOL vmlinux 0xa0ae3435 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dbc8bb end_page_writeback +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11557bd md_flush_request +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12d2968 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xa1337965 key_type_keyring +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa152fec7 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xa15cf845 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xa1729fd7 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xa17434d2 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xa17eb180 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cba0f2 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa1d5ea9c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xa1e5c6c7 ppp_input +EXPORT_SYMBOL vmlinux 0xa1f61226 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xa20cd664 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa21ff7a4 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xa2207500 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa22fb5f4 prepare_binprm +EXPORT_SYMBOL vmlinux 0xa244c332 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa2649420 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xa27c1caa ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa27c4baa tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa289cf7d register_console +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2b72fac unregister_qdisc +EXPORT_SYMBOL vmlinux 0xa2c1f9fb unbind_con_driver +EXPORT_SYMBOL vmlinux 0xa2cc04d9 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xa2cf0d7a mmc_erase +EXPORT_SYMBOL vmlinux 0xa2eb9005 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa319796d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa32af95a pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3504378 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35c8988 ata_port_printk +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa363dab4 udp_table +EXPORT_SYMBOL vmlinux 0xa38c0681 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xa39e44bf i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xa3a0af72 journal_set_features +EXPORT_SYMBOL vmlinux 0xa3a9be36 md_write_start +EXPORT_SYMBOL vmlinux 0xa3ae37a1 simple_getattr +EXPORT_SYMBOL vmlinux 0xa3d089ea get_task_io_context +EXPORT_SYMBOL vmlinux 0xa3db0c9d generic_getxattr +EXPORT_SYMBOL vmlinux 0xa3fd711d __invalidate_device +EXPORT_SYMBOL vmlinux 0xa4146be3 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xa41c3052 pci_set_master +EXPORT_SYMBOL vmlinux 0xa424f521 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xa42b3cc8 netif_napi_del +EXPORT_SYMBOL vmlinux 0xa438553c pskb_expand_head +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa44a22a9 security_path_chmod +EXPORT_SYMBOL vmlinux 0xa45b3f4d __nla_put +EXPORT_SYMBOL vmlinux 0xa469d558 __frontswap_load +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa49c10c4 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa49edda4 write_one_page +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bbbe42 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xa4c7d6f0 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d822af sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa4eb4eff _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa4fc70d6 pci_iomap +EXPORT_SYMBOL vmlinux 0xa5185f79 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa52c6858 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xa54456c2 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa57a50ae pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xa593cb98 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a4f13f xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xa5abe93d blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xa5da0abd acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0xa6033f3f agp_copy_info +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6654fc1 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67da660 mempool_alloc +EXPORT_SYMBOL vmlinux 0xa67e2845 dq_data_lock +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6851d66 ata_print_version +EXPORT_SYMBOL vmlinux 0xa68688f7 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xa6916027 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b13658 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa7024f43 dma_pool_create +EXPORT_SYMBOL vmlinux 0xa7064765 __destroy_inode +EXPORT_SYMBOL vmlinux 0xa70b9c36 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa7239558 __blk_end_request +EXPORT_SYMBOL vmlinux 0xa73aaa2e elv_rb_add +EXPORT_SYMBOL vmlinux 0xa73ef424 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xa7c2d314 pnp_find_card +EXPORT_SYMBOL vmlinux 0xa7c2d92f get_gendisk +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7eedb68 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa7ffee70 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xa820cff4 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8498abd pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa888aa9b fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa896b2e8 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8c07582 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xa8d68abd acpi_warning +EXPORT_SYMBOL vmlinux 0xa8e9e3b8 filp_close +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa9421ccb netif_carrier_off +EXPORT_SYMBOL vmlinux 0xa945c5fc key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa94da7c1 mount_nodev +EXPORT_SYMBOL vmlinux 0xa9579a10 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xa9a0f21b nf_reinject +EXPORT_SYMBOL vmlinux 0xa9b8bc49 __put_cred +EXPORT_SYMBOL vmlinux 0xa9c1b627 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xaa397122 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xaa42aaa6 arp_create +EXPORT_SYMBOL vmlinux 0xaa5456b2 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaab2f0a9 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaac7b50d phy_stop +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaade221a swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaae9e151 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xaaf45875 acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab1eccfb scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xab28271c i8253_lock +EXPORT_SYMBOL vmlinux 0xab3895cd mii_link_ok +EXPORT_SYMBOL vmlinux 0xab3f9ec4 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xab41bb45 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xab469eb2 serio_interrupt +EXPORT_SYMBOL vmlinux 0xab5e633b rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab77e65e journal_create +EXPORT_SYMBOL vmlinux 0xab8cec9b inet_frag_kill +EXPORT_SYMBOL vmlinux 0xab97bc30 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xabbc92e5 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcc09a9 simple_fill_super +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd7fe52 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac2bb4ac pagevec_lookup +EXPORT_SYMBOL vmlinux 0xac31eb06 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xac33396b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xac412e34 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac5c1b75 key_revoke +EXPORT_SYMBOL vmlinux 0xac5e2380 pci_get_class +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac7c1d3f bdi_register_dev +EXPORT_SYMBOL vmlinux 0xac87cb60 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xac8ad382 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xaca661b9 elevator_init +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfa1117 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad07f027 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad2c8ce1 tty_port_put +EXPORT_SYMBOL vmlinux 0xad30141b security_task_getsecid +EXPORT_SYMBOL vmlinux 0xad33b268 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad4675fd pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xad64468d alloc_fcdev +EXPORT_SYMBOL vmlinux 0xad6527c4 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadaa51a4 dev_activate +EXPORT_SYMBOL vmlinux 0xadb089e2 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc2290a nf_register_hook +EXPORT_SYMBOL vmlinux 0xaddd40c6 pci_save_state +EXPORT_SYMBOL vmlinux 0xade9138f __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xadfbfee0 find_lock_page +EXPORT_SYMBOL vmlinux 0xae10bb2a generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xae218ba0 padata_start +EXPORT_SYMBOL vmlinux 0xae307c17 inode_only_permission +EXPORT_SYMBOL vmlinux 0xae50ab66 dcb_setapp +EXPORT_SYMBOL vmlinux 0xae69c911 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb32da8 mntput +EXPORT_SYMBOL vmlinux 0xaeb8a75c pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed6af56 elv_rb_del +EXPORT_SYMBOL vmlinux 0xaedc49e9 genphy_suspend +EXPORT_SYMBOL vmlinux 0xaee97e7e vfs_unlink +EXPORT_SYMBOL vmlinux 0xaf283e5a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xaf297a33 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0xaf29bab9 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3f2ab5 locks_init_lock +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6c50e2 nf_log_register +EXPORT_SYMBOL vmlinux 0xaf708411 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xaf7228df generic_listxattr +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9d9ecc __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xafa2c013 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xafa67cb5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xafbf5185 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xafdff8db scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xafe6b441 log_start_commit +EXPORT_SYMBOL vmlinux 0xaff71b77 set_trace_device +EXPORT_SYMBOL vmlinux 0xaff74463 locks_delete_block +EXPORT_SYMBOL vmlinux 0xb016389f __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb016d4e4 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb0207ecf ___ratelimit +EXPORT_SYMBOL vmlinux 0xb02ca664 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xb044d42f max8998_update_reg +EXPORT_SYMBOL vmlinux 0xb05679e0 arp_find +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0a8fd0a intel_gtt_unmap_memory +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0bc3bba cdev_init +EXPORT_SYMBOL vmlinux 0xb0dbfd21 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0fd5ce9 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb0fe25dc scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xb10d3810 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb11635d4 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1255bf4 journal_get_create_access +EXPORT_SYMBOL vmlinux 0xb12ce794 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1957770 set_page_dirty +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b02462 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cd2f00 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d9523e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb21f884e zero_fill_bio +EXPORT_SYMBOL vmlinux 0xb2200773 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xb2311817 prepare_creds +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2691459 backlight_device_register +EXPORT_SYMBOL vmlinux 0xb2744b36 down_write_trylock +EXPORT_SYMBOL vmlinux 0xb27642c5 sock_update_classid +EXPORT_SYMBOL vmlinux 0xb29070d1 tty_vhangup +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2bca5b1 skb_make_writable +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3202a23 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xb327d22b proto_unregister +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34aeb83 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xb34d4c2e acpi_terminate +EXPORT_SYMBOL vmlinux 0xb350e08e pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb3849fb0 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb389eb13 scsi_print_command +EXPORT_SYMBOL vmlinux 0xb3a2733b dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xb3ccd753 vga_get +EXPORT_SYMBOL vmlinux 0xb3de7dae directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3f5a194 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xb40920b0 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb40fef29 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xb413bef3 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb427812e i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4471b80 mutex_trylock +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb46bc360 _dev_info +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4cbaeeb bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xb4cf0c64 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xb4d38f5b grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xb4d6e420 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xb4d83f74 elv_register_queue +EXPORT_SYMBOL vmlinux 0xb4ec6ec2 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xb4f21a19 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xb50b8540 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xb5107b18 register_nls +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb54f473c ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb5665f21 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xb56c3539 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb577ee8d register_sysctl +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bc6b15 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d26053 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xb5d73dea inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xb5e8dca5 cdev_alloc +EXPORT_SYMBOL vmlinux 0xb5f83401 inet6_bind +EXPORT_SYMBOL vmlinux 0xb5fa25a4 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xb5fe4ac2 bd_set_size +EXPORT_SYMBOL vmlinux 0xb61ce641 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6308eca registered_fb +EXPORT_SYMBOL vmlinux 0xb634599b genl_unregister_ops +EXPORT_SYMBOL vmlinux 0xb638db4f journal_extend +EXPORT_SYMBOL vmlinux 0xb6588e7a idr_remove +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb68655c5 fd_install +EXPORT_SYMBOL vmlinux 0xb6890043 inode_init_always +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a683f5 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a93e07 __ps2_command +EXPORT_SYMBOL vmlinux 0xb6c53502 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f1aa81 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xb705bda6 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xb72ec667 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xb749081f keyring_clear +EXPORT_SYMBOL vmlinux 0xb753126c pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75fd2eb pci_find_capability +EXPORT_SYMBOL vmlinux 0xb76ca35f __alloc_skb +EXPORT_SYMBOL vmlinux 0xb7828347 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xb79290e0 kernel_read +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb80ca9ad acpi_bus_generate_proc_event +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb828461f tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xb82cb4b2 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb840f7fd dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xb8465515 d_rehash +EXPORT_SYMBOL vmlinux 0xb85eead4 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xb863e8df seq_putc +EXPORT_SYMBOL vmlinux 0xb8684bf6 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb868c76b add_disk +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb86eb557 install_exec_creds +EXPORT_SYMBOL vmlinux 0xb87ee5bf nla_append +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8b688f8 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xb8bef7f3 dst_destroy +EXPORT_SYMBOL vmlinux 0xb8e6b189 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f912e6 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xb8fc80ef mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb91cccab pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb94ba663 inet_release +EXPORT_SYMBOL vmlinux 0xb94cffda tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb99cf582 ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb9b9960b bitmap_unplug +EXPORT_SYMBOL vmlinux 0xb9de31bf tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba0dfd43 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xba29565a dquot_transfer +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3b6cde bdgrab +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6bcf5c spi_dv_device +EXPORT_SYMBOL vmlinux 0xba736484 security_path_link +EXPORT_SYMBOL vmlinux 0xba7a920d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xba85163f netdev_emerg +EXPORT_SYMBOL vmlinux 0xba8ea6ad rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xbaaf5eb2 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xbabf462f mfd_add_devices +EXPORT_SYMBOL vmlinux 0xbac2e30c udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xbacf57a5 md_register_thread +EXPORT_SYMBOL vmlinux 0xbada61e1 intel_gtt_map_memory +EXPORT_SYMBOL vmlinux 0xbaf82e46 mmc_release_host +EXPORT_SYMBOL vmlinux 0xbb03def1 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbb0bf48e jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb222799 key_invalidate +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6af7f8 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbb6c0828 netdev_alert +EXPORT_SYMBOL vmlinux 0xbb6fd717 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xbb76fa7d remove_arg_zero +EXPORT_SYMBOL vmlinux 0xbb837d27 machine_real_restart +EXPORT_SYMBOL vmlinux 0xbb93a64f mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xbb952cb7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbdb9143 address_space_init_once +EXPORT_SYMBOL vmlinux 0xbc0f9f91 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xbc1afedf up_write +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc35358b mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xbc6b5977 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xbc961843 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xbca325b3 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xbcbdfe84 scsi_device_put +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc54ceb nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xbce456ed generic_permission +EXPORT_SYMBOL vmlinux 0xbce6c1f0 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xbce9c760 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xbcfcbf0f __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xbcff8efc ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xbd267168 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xbd494315 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xbd4c81c6 led_brightness_set +EXPORT_SYMBOL vmlinux 0xbd64f7ef clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xbd8963fb __module_get +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdcbab09 register_cdrom +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbdfeeae3 dev_addr_del +EXPORT_SYMBOL vmlinux 0xbe02653b dev_mc_del +EXPORT_SYMBOL vmlinux 0xbe091077 del_gendisk +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe4b7dbf pnp_is_active +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe9a9bc4 vfs_write +EXPORT_SYMBOL vmlinux 0xbebfab6d tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbecc1617 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xbed5a68c d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xbeda8432 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1cf6d0 dev_printk +EXPORT_SYMBOL vmlinux 0xbf473614 fb_set_var +EXPORT_SYMBOL vmlinux 0xbf5ed131 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xbf704eea jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xbf745f55 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xbf78ae66 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf878ea5 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf8fb159 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xbf95f081 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9e1bfc xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xbfab03e0 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfe4784c efi +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc0432407 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc064dc51 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc073f3ee skb_append +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0831a4f i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a8ff16 acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xc0b343dd pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xc0b61b6a kill_pid +EXPORT_SYMBOL vmlinux 0xc0ecb0cd iget_locked +EXPORT_SYMBOL vmlinux 0xc108a643 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc119ae1c tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1416b22 pci_request_region +EXPORT_SYMBOL vmlinux 0xc153f7c8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xc15bbb77 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17e3c34 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc1a42730 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xc1bea92d freeze_super +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1c57e2d cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc1d2aea9 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xc1f0c8b9 pci_dev_get +EXPORT_SYMBOL vmlinux 0xc1f5f796 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xc1f72918 inode_change_ok +EXPORT_SYMBOL vmlinux 0xc210e37f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xc211607d sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc23bcadb mmc_card_sleep +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc254e437 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc293a804 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30e3a0e unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc320f934 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc35c4380 follow_up +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b86652 sk_run_filter +EXPORT_SYMBOL vmlinux 0xc3dcf947 input_flush_device +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc402cc99 register_acpi_notifier +EXPORT_SYMBOL vmlinux 0xc40d0583 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xc4185288 sock_wfree +EXPORT_SYMBOL vmlinux 0xc41e8f7a wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xc41e9420 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xc43b123a tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc4484c71 i2c_master_send +EXPORT_SYMBOL vmlinux 0xc44c24e1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xc4554217 up +EXPORT_SYMBOL vmlinux 0xc48bf49e md_check_recovery +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49a2740 kernel_bind +EXPORT_SYMBOL vmlinux 0xc4c91696 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xc4d1dd08 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xc4de7ca8 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xc5076261 dev_uc_del +EXPORT_SYMBOL vmlinux 0xc518bfa5 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xc5195e1e kmap_atomic +EXPORT_SYMBOL vmlinux 0xc5384523 mpage_writepages +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558c984 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc559e7a9 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc561b1d6 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xc574c508 dump_seek +EXPORT_SYMBOL vmlinux 0xc57ab7bc proc_dostring +EXPORT_SYMBOL vmlinux 0xc5c74531 __mutex_init +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc604942d lro_receive_skb +EXPORT_SYMBOL vmlinux 0xc60663c7 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xc6083568 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xc6255ccf tcp_connect +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6364ab7 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xc63cc125 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xc654e0eb dump_trace +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc67c1152 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc6890ef3 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xc6903e43 mnt_pin +EXPORT_SYMBOL vmlinux 0xc6907fb1 vm_mmap +EXPORT_SYMBOL vmlinux 0xc699162b iterate_supers_type +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b95dfe rfkill_alloc +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e1ad87 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xc6e61430 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xc700b2b3 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72c02c7 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xc7434ba4 __netdev_printk +EXPORT_SYMBOL vmlinux 0xc7445021 genlmsg_put +EXPORT_SYMBOL vmlinux 0xc76526f0 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77d4fb1 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc810c044 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83eeaca neigh_update +EXPORT_SYMBOL vmlinux 0xc83ef52e agp_backend_release +EXPORT_SYMBOL vmlinux 0xc84308ee filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc87103ca i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xc887be85 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ba1eff scsi_init_io +EXPORT_SYMBOL vmlinux 0xc8bde673 log_wait_commit +EXPORT_SYMBOL vmlinux 0xc8c4bf29 complete_request_key +EXPORT_SYMBOL vmlinux 0xc8ea6517 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xc8f68b16 __register_chrdev +EXPORT_SYMBOL vmlinux 0xc92d8aeb abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xc9469a03 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xc947ac30 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xc95bbc0b bio_map_kern +EXPORT_SYMBOL vmlinux 0xc9655ddb dev_set_mtu +EXPORT_SYMBOL vmlinux 0xc9720c61 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc98ee66a block_commit_write +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9ab2eef acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0xc9b69496 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xc9cd27d9 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xca0a5dff mpage_readpage +EXPORT_SYMBOL vmlinux 0xca112652 bioset_free +EXPORT_SYMBOL vmlinux 0xca11b9d7 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xca11e532 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xca36700c inet_addr_type +EXPORT_SYMBOL vmlinux 0xca38028a igrab +EXPORT_SYMBOL vmlinux 0xca594deb dev_addr_add +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca903426 sync_blockdev +EXPORT_SYMBOL vmlinux 0xcaaa73f3 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xcaac0636 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xcabe0f63 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xcac6f2d8 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xcace5828 posix_test_lock +EXPORT_SYMBOL vmlinux 0xcade4d38 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xcb16dd33 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xcb225f49 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xcb3c83bb sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xcb4254f3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xcb451e56 idr_init +EXPORT_SYMBOL vmlinux 0xcb4fe603 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcba5d861 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xcbc49e77 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd5bd5b __quota_error +EXPORT_SYMBOL vmlinux 0xcbdfd4ac set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xcbeaf2be ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xcbf58d75 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xcc22de1a dquot_operations +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3f27ac tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xcc46a24b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc4f353e scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5b27b5 acpi_extract_package +EXPORT_SYMBOL vmlinux 0xcc688271 d_make_root +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcca55f87 km_report +EXPORT_SYMBOL vmlinux 0xcca8c7e3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0xccc13809 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xcce15caf netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xcd1ba4ed noop_llseek +EXPORT_SYMBOL vmlinux 0xcd1c5f0f scsi_execute_req +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd54f8c9 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xcd65d177 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xcd9c1b2c __scm_destroy +EXPORT_SYMBOL vmlinux 0xcd9cacea ata_link_printk +EXPORT_SYMBOL vmlinux 0xcda282b5 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xcdab7427 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xcdd290ae key_link +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce185a5f dev_err +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce1f5873 kobject_add +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce408be4 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce76e808 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xce7a2d34 tty_mutex +EXPORT_SYMBOL vmlinux 0xce7ee9fd pagecache_write_end +EXPORT_SYMBOL vmlinux 0xce819c69 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xce9c7cbd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xce9c9148 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xce9f5a77 __nla_reserve +EXPORT_SYMBOL vmlinux 0xceae40ae tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xcec43af6 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xceddf6af netif_carrier_on +EXPORT_SYMBOL vmlinux 0xcee1c38e __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef63626 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1d28ab acpi_error +EXPORT_SYMBOL vmlinux 0xcf3a387f inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xcf499d18 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xcf510c4a mutex_lock +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf8fb10c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xcfa1eab1 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xcfa5fdb3 skb_pad +EXPORT_SYMBOL vmlinux 0xcfaaf0be dev_addr_init +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff502bc scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd0042ae7 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd04ba71c sock_no_accept +EXPORT_SYMBOL vmlinux 0xd06a1689 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0729fce __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xd07a7268 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd08197fa acpi_load_tables +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f0d945 down_read +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb2df7 journal_forget +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd0ff1be7 acpi_root_dir +EXPORT_SYMBOL vmlinux 0xd1014190 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd125b3cf mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd12df334 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd1402b92 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd1472061 acpi_pci_register_driver +EXPORT_SYMBOL vmlinux 0xd14b636a scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd162b6be xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xd163530e dentry_open +EXPORT_SYMBOL vmlinux 0xd16fe0c8 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xd1713389 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a3d453 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xd1a612b3 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd1ebcf4e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1fcde25 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xd20f780e __page_symlink +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd226fb17 inet_getname +EXPORT_SYMBOL vmlinux 0xd2329de3 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xd24cfd2a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xd24ea6e2 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd266efe7 mempool_create +EXPORT_SYMBOL vmlinux 0xd2705fe1 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xd277fa75 unlock_page +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2a75ee0 dmi_first_match +EXPORT_SYMBOL vmlinux 0xd2af950c xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xd2b052b3 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xd2b5195a i8042_install_filter +EXPORT_SYMBOL vmlinux 0xd2b6fca7 blk_register_region +EXPORT_SYMBOL vmlinux 0xd2ced37e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd2d3cc5d scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd2e60710 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd2e8db1a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xd2f4f4ea phy_register_fixup +EXPORT_SYMBOL vmlinux 0xd3272ffe bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xd32c6ca6 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xd3340a45 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd33a1f13 simple_link +EXPORT_SYMBOL vmlinux 0xd33c4a17 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xd343494c mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xd350f6c5 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3c08471 gen_pool_create +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3ea773a tcp_shutdown +EXPORT_SYMBOL vmlinux 0xd3ef4658 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd3f09f05 netlink_unicast +EXPORT_SYMBOL vmlinux 0xd3fa43d6 kfree_skb +EXPORT_SYMBOL vmlinux 0xd423dea4 skb_put +EXPORT_SYMBOL vmlinux 0xd42751d0 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd43066de input_set_abs_params +EXPORT_SYMBOL vmlinux 0xd4323bf5 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xd4485922 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xd4536328 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xd459f766 netdev_crit +EXPORT_SYMBOL vmlinux 0xd49afedc dev_close +EXPORT_SYMBOL vmlinux 0xd4b61b19 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xd4c3b174 printk_emit +EXPORT_SYMBOL vmlinux 0xd4ffddb4 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd535d484 genl_register_family +EXPORT_SYMBOL vmlinux 0xd57b8529 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xd57f555d dcb_getapp +EXPORT_SYMBOL vmlinux 0xd589e84b vfs_rmdir +EXPORT_SYMBOL vmlinux 0xd58de19b arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5b12e3a pci_clear_master +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5be5cdb sock_create_lite +EXPORT_SYMBOL vmlinux 0xd5e2e95f lro_flush_all +EXPORT_SYMBOL vmlinux 0xd5e5f8a7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f50a4e datagram_poll +EXPORT_SYMBOL vmlinux 0xd5f85064 mount_ns +EXPORT_SYMBOL vmlinux 0xd5fb1c4e consume_skb +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62298d0 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd663701d napi_gro_frags +EXPORT_SYMBOL vmlinux 0xd66a9070 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xd67f42c8 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xd6ae9d76 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c8e352 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd6cecdd0 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xd6e16fcb blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd6e2359e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd6e58ddf acpi_bus_add +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f23322 md_error +EXPORT_SYMBOL vmlinux 0xd703f07f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd796613f blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7bd3af2 add_wait_queue +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8001c98 km_state_notify +EXPORT_SYMBOL vmlinux 0xd8098107 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xd83599f8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd8486f23 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xd84937b5 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85df7d4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a563c2 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd8aaa261 dump_write +EXPORT_SYMBOL vmlinux 0xd8be2746 mapping_tagged +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ecbfbb remap_pfn_range +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd939f96d __lock_page +EXPORT_SYMBOL vmlinux 0xd96965b8 skb_copy +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9843cbd simple_empty +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0xd98959aa pneigh_lookup +EXPORT_SYMBOL vmlinux 0xd990546c lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd99e28b8 pipe_unlock +EXPORT_SYMBOL vmlinux 0xd9b269d1 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xd9e5d7be __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda0a6b0e acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0xda25a4d5 sock_register +EXPORT_SYMBOL vmlinux 0xda3accda pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdadc14cf mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdb121a94 destroy_EII_client +EXPORT_SYMBOL vmlinux 0xdb345f3b skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xdb347561 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xdb3f299d vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb88206d phy_find_first +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbc416b6 sk_stream_error +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf0f0d swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc525219 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xdc570f62 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdca9c101 mmc_start_req +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd3d355 devm_free_irq +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0f6404 vc_cons +EXPORT_SYMBOL vmlinux 0xdd16565a drop_super +EXPORT_SYMBOL vmlinux 0xdd16c95b tcp_poll +EXPORT_SYMBOL vmlinux 0xdd1a2871 down +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd389eec i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd6b2c0f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xdd9d56c5 d_invalidate +EXPORT_SYMBOL vmlinux 0xddb7215f mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xddc450a1 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xddc8388a vfs_rename +EXPORT_SYMBOL vmlinux 0xddef8a64 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xde25856a simple_release_fs +EXPORT_SYMBOL vmlinux 0xde675317 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xde756db9 path_get +EXPORT_SYMBOL vmlinux 0xde79013b genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xde7ec142 vfs_read +EXPORT_SYMBOL vmlinux 0xde8888cd jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xde8e5789 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdec778f6 ida_get_new +EXPORT_SYMBOL vmlinux 0xded4bab5 inet6_release +EXPORT_SYMBOL vmlinux 0xdeded5ee padata_free +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf420b68 proc_create_data +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6fa29e flush_old_exec +EXPORT_SYMBOL vmlinux 0xdf71d03d con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf902738 icmpv6_send +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcc780a follow_pfn +EXPORT_SYMBOL vmlinux 0xdfe024db fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xe034dee2 acpi_bus_start +EXPORT_SYMBOL vmlinux 0xe037eef4 md_done_sync +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06694aa input_close_device +EXPORT_SYMBOL vmlinux 0xe070f1bc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08d6aa2 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b5aff4 set_pages_nx +EXPORT_SYMBOL vmlinux 0xe0c2479e fb_get_mode +EXPORT_SYMBOL vmlinux 0xe0ec9644 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe15b4b2d dev_mc_add +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18a8ab7 agp_enable +EXPORT_SYMBOL vmlinux 0xe19783bc inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe1caabe5 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe1f3d387 block_read_full_page +EXPORT_SYMBOL vmlinux 0xe1fa85cd vfsmount_lock +EXPORT_SYMBOL vmlinux 0xe1fcc7dc phy_attach +EXPORT_SYMBOL vmlinux 0xe2009f3e bdget_disk +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe210b9c5 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe21224a8 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2735d4f pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xe28abd6b qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe2993d85 arp_xmit +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e67bd8 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e99449 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3552610 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xe3aa63eb neigh_destroy +EXPORT_SYMBOL vmlinux 0xe3baa1b9 set_anon_super +EXPORT_SYMBOL vmlinux 0xe3c4c736 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3fbe148 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xe45f60d8 __wake_up +EXPORT_SYMBOL vmlinux 0xe45f7cea nf_log_packet +EXPORT_SYMBOL vmlinux 0xe46ee3b4 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe47afbf7 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4872067 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4cd0f04 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xe4f0ef03 save_mount_options +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe51d2b51 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe53d58e9 dcache_readdir +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57b8a3a dev_mc_flush +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59a0119 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe5acc54d napi_skb_finish +EXPORT_SYMBOL vmlinux 0xe5bbbe91 nobh_writepage +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5eb028d dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe627269f scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe6577b52 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xe66fb056 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xe6730976 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe6822214 keyring_search +EXPORT_SYMBOL vmlinux 0xe6916a33 d_find_alias +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6b3fe21 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xe6c5fe86 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xe6c88ef5 vfs_readlink +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f06ef1 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xe6f55742 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe725abad get_phy_device +EXPORT_SYMBOL vmlinux 0xe72b5f96 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xe76775b2 register_qdisc +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7756c1f ppp_unit_number +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe798e8ea cdev_add +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a7c100 set_binfmt +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b83779 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xe7cd2427 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7dd00bd max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe8115c72 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xe8267465 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe82f259f kernel_connect +EXPORT_SYMBOL vmlinux 0xe842188a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xe8781a36 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88e7a93 lg_global_lock +EXPORT_SYMBOL vmlinux 0xe8938002 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe8941897 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xe8ad37ab generic_removexattr +EXPORT_SYMBOL vmlinux 0xe8b5c915 pid_task +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bd919d sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe8d9bb4f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xe8f3adaf nobh_write_begin +EXPORT_SYMBOL vmlinux 0xe8f575d9 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xe905db27 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xe909eafd xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe90e43f0 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe919581f sk_reset_txq +EXPORT_SYMBOL vmlinux 0xe94c8919 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96dc22c handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe97116f3 tty_check_change +EXPORT_SYMBOL vmlinux 0xe9743f8a km_policy_expired +EXPORT_SYMBOL vmlinux 0xe974e701 set_device_ro +EXPORT_SYMBOL vmlinux 0xe98ffa4d journal_stop +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a6652b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xe9b70587 pci_bus_type +EXPORT_SYMBOL vmlinux 0xe9c79350 do_sync_write +EXPORT_SYMBOL vmlinux 0xe9e23dcd thaw_bdev +EXPORT_SYMBOL vmlinux 0xe9e54c53 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe9f5bf24 spi_release_transport +EXPORT_SYMBOL vmlinux 0xea025e2b tty_port_close +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea369aee put_io_context +EXPORT_SYMBOL vmlinux 0xea3bc55b filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xea498310 register_con_driver +EXPORT_SYMBOL vmlinux 0xea544a7d call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xea74eed5 inode_dio_done +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7ec7d4 stop_tty +EXPORT_SYMBOL vmlinux 0xea8e7980 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xeab20d1f jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xeabe5201 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae07c3d blk_fetch_request +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae6bb9a jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xeb14d9c2 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xeb21dd25 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xeb2908c1 revalidate_disk +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3a0e5f page_put_link +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5ac86f may_umount_tree +EXPORT_SYMBOL vmlinux 0xeb6f43e3 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xeb85b8ef ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xeb9694c9 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebb8c7c0 read_cache_pages +EXPORT_SYMBOL vmlinux 0xebcc5807 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe54878 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xec0cab2c mdio_bus_type +EXPORT_SYMBOL vmlinux 0xec11c3cd vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec21e044 mmc_request_done +EXPORT_SYMBOL vmlinux 0xec39fa19 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xec4e5732 posix_lock_file +EXPORT_SYMBOL vmlinux 0xec53968c freeze_bdev +EXPORT_SYMBOL vmlinux 0xec5bb43a netdev_warn +EXPORT_SYMBOL vmlinux 0xec647ea5 iput +EXPORT_SYMBOL vmlinux 0xec80e3ee journal_load +EXPORT_SYMBOL vmlinux 0xec9933b0 tty_port_init +EXPORT_SYMBOL vmlinux 0xecaf3871 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xecb3a5e1 clocksource_register +EXPORT_SYMBOL vmlinux 0xecb721f1 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xecbec5e5 eth_header_cache +EXPORT_SYMBOL vmlinux 0xecc4e7e7 __brelse +EXPORT_SYMBOL vmlinux 0xecd87731 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xecf3b4ad vga_tryget +EXPORT_SYMBOL vmlinux 0xed24646f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed5652cd tc_classify_compat +EXPORT_SYMBOL vmlinux 0xed5ad37c xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xed6fae57 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xed72c29d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xed8b4edf input_reset_device +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed945810 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xeda57094 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbdb7c8 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedeaaff1 pci_enable_device +EXPORT_SYMBOL vmlinux 0xee097d37 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3a0b92 current_fs_time +EXPORT_SYMBOL vmlinux 0xee584c90 module_layout +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8f1113 mpage_writepage +EXPORT_SYMBOL vmlinux 0xee8fc486 dev_uc_init +EXPORT_SYMBOL vmlinux 0xeea8e27c netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb0b298 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xeeb7fcba eth_type_trans +EXPORT_SYMBOL vmlinux 0xeeb94785 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xeec024f3 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xeec24d3e eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xeedd00a9 lock_may_read +EXPORT_SYMBOL vmlinux 0xeedd66c4 __inet6_hash +EXPORT_SYMBOL vmlinux 0xeef87e94 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xef176500 dput +EXPORT_SYMBOL vmlinux 0xef1d35b7 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xef26f933 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xef4ff695 __block_write_begin +EXPORT_SYMBOL vmlinux 0xef6398db agp_free_memory +EXPORT_SYMBOL vmlinux 0xef66cdb0 dquot_alloc +EXPORT_SYMBOL vmlinux 0xef69f749 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9c870a dev_get_flags +EXPORT_SYMBOL vmlinux 0xefab66b5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xefaca40f dquot_initialize +EXPORT_SYMBOL vmlinux 0xefb315b1 f_setown +EXPORT_SYMBOL vmlinux 0xefb54588 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xeff4a20d dev_get_stats +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0040079 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf00ea5d0 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xf02918d6 udplite_prot +EXPORT_SYMBOL vmlinux 0xf04cd2c0 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065d8a7 kill_pgrp +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf088fc88 tty_free_termios +EXPORT_SYMBOL vmlinux 0xf08f4714 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xf0aedd7c scsi_host_put +EXPORT_SYMBOL vmlinux 0xf0ce7d50 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xf0d1cf0b dmam_pool_create +EXPORT_SYMBOL vmlinux 0xf0e1f2dd fsync_bdev +EXPORT_SYMBOL vmlinux 0xf0e79909 kdb_current_task +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf109ebc0 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf12a5c83 idr_find +EXPORT_SYMBOL vmlinux 0xf12d331c lg_local_lock +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf154444f tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xf179c316 key_validate +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf1908b90 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a5fe79 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xf1a7276d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xf1c366e0 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d254a7 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ef3e7e __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xf1faac3a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf233d998 scsi_host_get +EXPORT_SYMBOL vmlinux 0xf2357254 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25a2a02 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf2600c51 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xf27c3d0d md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b41220 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf323e94a blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xf330de92 inet_select_addr +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf335c5ad vfs_writev +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3498b71 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xf34bcbb3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xf34fcc2c generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xf351101a i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xf3544af5 vfs_symlink +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf374a3f9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xf37d6427 set_disk_ro +EXPORT_SYMBOL vmlinux 0xf37db040 __find_get_block +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3f1d47e send_sig +EXPORT_SYMBOL vmlinux 0xf3f2ca05 path_is_under +EXPORT_SYMBOL vmlinux 0xf4015749 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xf413fbf2 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xf41786ad security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf418c10e napi_complete +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4434be3 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xf444e81d textsearch_register +EXPORT_SYMBOL vmlinux 0xf46b7f5c d_splice_alias +EXPORT_SYMBOL vmlinux 0xf481d94c vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf496a931 get_agp_version +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a92b84 security_path_symlink +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bbaf29 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6ca12 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf4d197ef dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xf4d645d1 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f19e51 downgrade_write +EXPORT_SYMBOL vmlinux 0xf4f5f82c update_region +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf5344ba6 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5411677 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xf557ca5c kobject_del +EXPORT_SYMBOL vmlinux 0xf560c38f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xf58cf42a pnp_start_dev +EXPORT_SYMBOL vmlinux 0xf58e0d82 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xf5a66f91 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xf5a851d0 vfs_readv +EXPORT_SYMBOL vmlinux 0xf5bd2e1e journal_flush +EXPORT_SYMBOL vmlinux 0xf5bd54ea con_is_bound +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c72fb4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xf5d318f2 blk_peek_request +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fe3640 names_cachep +EXPORT_SYMBOL vmlinux 0xf60998c0 ps2_command +EXPORT_SYMBOL vmlinux 0xf62c55d9 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf638ac08 open_exec +EXPORT_SYMBOL vmlinux 0xf64ab633 load_nls_default +EXPORT_SYMBOL vmlinux 0xf67c40ad input_register_handle +EXPORT_SYMBOL vmlinux 0xf68a2a3b security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xf68c082c create_proc_entry +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6daebec cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70115b1 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf7281485 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xf737c208 iunique +EXPORT_SYMBOL vmlinux 0xf739996d get_fs_type +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75bc434 files_lglock +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7a466b0 __devm_request_region +EXPORT_SYMBOL vmlinux 0xf7a7263f acpi_get_physical_device +EXPORT_SYMBOL vmlinux 0xf7e37635 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8268249 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82b3584 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xf82e3d47 acpi_initialize_objects +EXPORT_SYMBOL vmlinux 0xf844e593 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xf84a215f netdev_state_change +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8982bca cdrom_check_events +EXPORT_SYMBOL vmlinux 0xf8ad0769 blk_get_request +EXPORT_SYMBOL vmlinux 0xf8c8deff default_llseek +EXPORT_SYMBOL vmlinux 0xf8d0ac10 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf8f48b36 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xf906430b tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xf912670f mnt_unpin +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf95f0610 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xf960b39e init_buffer +EXPORT_SYMBOL vmlinux 0xf9687f75 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xf96b747c nf_log_unregister +EXPORT_SYMBOL vmlinux 0xf97456ea _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xf97bb3b7 flush_signals +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa0db01a sock_wake_async +EXPORT_SYMBOL vmlinux 0xfa30957c mempool_free +EXPORT_SYMBOL vmlinux 0xfa47ae72 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xfa505d1c generic_readlink +EXPORT_SYMBOL vmlinux 0xfa747bc4 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xfa833f01 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xfa8e41d3 free_buffer_head +EXPORT_SYMBOL vmlinux 0xfa942d3e mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf6d7dd tcp_proc_register +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb07ccb8 skb_split +EXPORT_SYMBOL vmlinux 0xfb1be686 ida_remove +EXPORT_SYMBOL vmlinux 0xfb2ec2dd serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xfb64a6e9 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb3ac22 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xfbcdb38b kern_unmount +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0a57ac pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfc2596c0 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc52d22f make_bad_inode +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc80ace8 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9c80e4 mem_map +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcaadb25 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcd9f09a simple_open +EXPORT_SYMBOL vmlinux 0xfce91936 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf659b8 security_path_rename +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd03d00a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xfd07a870 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xfd13ab29 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xfd142da1 kset_unregister +EXPORT_SYMBOL vmlinux 0xfd3e56f8 cad_pid +EXPORT_SYMBOL vmlinux 0xfd448a6d ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd6f4850 native_wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xfd7d7713 acpi_exception +EXPORT_SYMBOL vmlinux 0xfd8485a0 tc_classify +EXPORT_SYMBOL vmlinux 0xfd97625e dma_sync_wait +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdb1dda7 sock_rfree +EXPORT_SYMBOL vmlinux 0xfdb2c2f8 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc53f78 __break_lease +EXPORT_SYMBOL vmlinux 0xfdc7f3ba idr_replace +EXPORT_SYMBOL vmlinux 0xfde963c0 fput +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe0be5f1 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xfe16f427 mntget +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe9559bb fb_set_suspend +EXPORT_SYMBOL vmlinux 0xfe95c2b5 journal_abort +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed86318 inet_ioctl +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff05da5c i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xff0703e5 uart_resume_port +EXPORT_SYMBOL vmlinux 0xff188521 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22d82a mmc_add_host +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa19009 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xffb92051 proto_register +EXPORT_SYMBOL vmlinux 0xffc179b1 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xffc7af6c fb_blank +EXPORT_SYMBOL vmlinux 0xffc93c82 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kernel/microcode 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0830ada8 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11e8f0d5 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16e71f20 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x17b14715 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a7eeeb5 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a7ff83e kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1be5a535 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c81c827 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20c7414d kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x24b387e2 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25878aa7 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b7d31a8 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f024f40 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3de08404 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40eabae6 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41ded123 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45534305 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45fbb9ea kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x465436f9 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48a9de1b kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e0e82ae kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x509cfd2e kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x596e654f kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5986ec30 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b891ead kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d33ed5b kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5fc84958 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61092cd5 gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6197af12 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64029cc1 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64d20ed1 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67ea91db kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b648f6a kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6db19e07 is_error_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x715626b2 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x727c4b90 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74fbc94a is_fault_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x790ea287 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79db3a3f kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c9b19a5 is_noslot_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82245d84 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84c9262f kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ceb28c __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x863b647b kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88bea369 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ad48992 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8b0585b9 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c7f459c kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f08ff01 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f602888 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x902c80e6 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x93518737 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98cb0d10 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b9a89e1 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0f795f5 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4801472 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa91845be is_invalid_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab4e3b34 kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac354171 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac39f520 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb284eed4 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2a65cca __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2c0bbb3 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb554ee32 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7988b66 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b538e __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b937d is_hwpoison_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe703cc2 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc227c588 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6346672 is_error_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc95fb12c kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb9cca1e gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xceb1db60 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd296def9 kvm_is_error_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd68a4996 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd81d8e04 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8d9ff70 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb59d8df kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc9da8be kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf267898 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf9bd75c kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdfd8f76d hva_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0070c5a kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe02c3992 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1c4c074 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe21f233a kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe466903a kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe76f8489 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe779abd1 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe940664b kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeaf67d4e kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed8fc665 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef566b00 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1bdcbd5 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2443324 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8fa6411 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9dde7f8 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfacaf010 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb01531f kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbf3dce2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd029405 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd693fb8 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe66775f kvm_mmu_reset_context +EXPORT_SYMBOL_GPL crypto/af_alg 0x19059b53 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x210726f7 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x23a8c79e af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x560bd3da af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x7e7cde9c af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x9611fa7d af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa8f69038 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xc4f85383 af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x1a6a4b5a async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x1f837420 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb85a1ea9 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x53e789c1 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8fd9a7a5 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5006431f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5634cc13 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x57c3ca88 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf9da1e19 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x574ea5c2 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbb40504b async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdb0309db blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x31b86db2 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x44a47fef cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x63fa4046 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa5c78dc8 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa93e32f2 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xce992f42 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe0f17f38 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xe7f49e93 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xf22eba1e cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf2584b9e cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x14957fe1 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xf91ad22c serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x3eff55fa twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x3b41a9e6 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x192cbe05 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2155eccc ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x222aceaf ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x237d2a45 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27b7abfa ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3445d311 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4a59d65d ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6ad3474d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6b2e3e6f ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7e9150c8 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc6620528 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd42974cc ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd4309569 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde3ecf9f ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdf4cf0c9 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe0deb7ed ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe85e2f78 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf0c4aad1 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x2eea284f __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xb74c7e5b __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1551b84e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x25411d88 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x46262260 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x563a334b bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x597e7c8b bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5bc68f6d bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6f52b11e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x898d8862 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa02fa089 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad22d60d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaff0a25b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6b25096 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbc3d9bf1 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb9167e0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce1451e0 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x01de64eb btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x074ac8ab btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1875a4b0 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3b0a492c btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5707dc69 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5954d445 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x997e4ad8 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc08be59f btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf1c2039e btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfb66fcfd btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xbf6eb386 scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/dca/dca 0x24f2e8fb dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2e471f01 dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x3967c76c dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x3c8422fe register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x42ae7ba0 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8006c614 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbd2bbcf6 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd9ab7f96 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xdc6a390c alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c613a2b edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0ee9ee53 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x110354c0 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1dcfb06a edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a3beab7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x313e0b52 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3539435a edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x41f49019 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ecf90f7 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5906b8fe edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x594f6058 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x60d7cb95 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x94b1c98f edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x979d82c1 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9eac8ab9 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xab67d62a find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf7632f2 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcff4080f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd2ef9f45 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd59987a edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdedb6783 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff9894e9 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0d38cee6 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0dc0b68c amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x233ce2e4 to_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x3eba1a17 rrrr_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x593ec4b5 ii_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x6d4e6991 amd_decode_nb_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xaeeba16b tt_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb0ca1fe7 ll_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xc2b73a3a amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x20cecb36 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x380579c6 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x4486b909 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x86e1928e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x95c2ac44 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa615ef4b extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb334f0ad extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xba8d2511 extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbd20a564 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc5226788 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xd2eeccac extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe6b3a640 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x2e8ec591 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x76987a0f bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5b290d82 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5bd80e86 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x35501da5 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x99829b74 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x10f2126e ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xa4ec46ec ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd6ba650c ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00a5464c hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0944b1fc hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ab72047 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17adc684 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a7f90e1 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21589370 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21d5c947 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x261ffa1f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x35096b7c hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d6c7111 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x503b2308 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5486f9b2 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60bf65af hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6dc1311e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x749c3ba8 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7893c84f hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7f8f245a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b0b12c8 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92a00b9d hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa18b59a9 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad58685f hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb59de646 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd4949e3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd06f745d hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdd0263bf hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe18fc778 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea66da9f hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec1672f8 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfde0b1fd __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x883cad73 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x752d1b84 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xef694adc roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x09386a17 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x280302a5 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x3df5abba usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb853e7c0 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0d39ae60 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x117bf1d9 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x400f1929 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x62bc55ea hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73f6e6c1 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9549fcca hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa7af8358 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae63b896 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbc6952cf hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbca7738 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xedfe4526 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf295deaf hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf33f05b1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2a75e529 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x67ffe02a vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x76558676 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa4039a99 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa7aeeec0 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xbd69eb59 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc0a912dc __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc91a78a4 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xdd0bea9d vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf4ce8e74 vmbus_open +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0f005ae9 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0fb746c1 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x19224f11 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5072d911 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x563a058d i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x676fe479 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf6b84520 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf86113ce i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf89989e7 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x1fb3bec3 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x13518ac9 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x2291721c i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2871e2a9 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x6babcd11 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b8365d6 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c8a330f iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5055b449 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d44ce11 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76381f8a iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8bdf4366 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f142e60 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa0b9f5b0 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa16b867d iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7eaa245 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabc8c424 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb5ebe0ef iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc3a715b iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd62b887 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdec7f11d iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xba266751 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xa49d12c1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x1b8b250c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x61200d6a cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x79c3db2b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x009eaae8 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00d4cfdc wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x10b544cc wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x195bd5a1 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x286be514 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3627f406 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64202f38 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x799e3262 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x920fa5b1 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa88a2fa6 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb3274762 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd822c61 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x18f9a975 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1f92b522 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x330ce31d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x56301e06 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5fb41039 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x80c5bc0b gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x96e670bd gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa780068b gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xacb20d5e gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf3a994c gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb118093f gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd01150fc gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xddc6674b gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdfb7b3a2 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xed922ae0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xeebb17cd gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfbd040f5 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x67dcc00f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00594b47 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3de26d69 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0a98fd84 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x203b192e dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4166e53f dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x80db134c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8a5cae55 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd4a6c37a dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x04353fb1 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x4db76ba1 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x29606482 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x12629945 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x14048c57 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x3b3c3b7b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5ab823b6 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9654e0f1 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xc7f5426b saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcdda1663 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xced23272 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xeb218d87 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xf30aad93 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xfa5e346c saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x3145c84d saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x36e53a29 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x3d6d192c saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x40d3bddf saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x718ffc5b saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xbbc914d2 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc35be832 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x093c6a37 tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xa5dc0a69 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xd38a093e tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0xaf5a76f3 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xd468780c mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0xc958ce3f tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x483638c4 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x91807771 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xb4679837 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x18f67c1f tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdd7b0460 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xf717b923 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x201cc893 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x435066e8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x8d4dc1ce simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x4da55afb mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0xb7d03405 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xbdee63a6 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x1133e6f0 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x29856ea3 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x39a977c1 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x40d00a95 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x440a9861 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x4709d24a mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x51caa176 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x92972e22 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa630f6be mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa9f4234f mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xb61cefdc mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc6a16adf mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd2624340 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd48c5f1c mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xe27658f7 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf25a4195 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf4897350 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x116da63f sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x19de7457 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x562d6e3f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6122c91e smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x618090b2 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63e8145b sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x81219fae smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x834e1f87 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x917f00ed sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb852b100 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbe9326a8 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6879a70 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6915b4a smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd49c2176 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe245fa7e smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe70cc62d smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xfb0edcda sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x27137008 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x479579cf ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x4cd18cbd ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xc97e8b8d ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xdadc9a3b ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xdeb44e0e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xf15c5216 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x583df975 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x789c10dd radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xb9a0b35c radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xbf9624f5 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xc534d862 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1f7b45ca rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x232ec664 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2c1e6d0e rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3aa94a72 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4ddc0267 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x58d2767a rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x73ea03af ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x74030e8d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87ca12b9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7c073c4 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4277c45 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4fcb11b rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd44b183f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdf346853 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe94dea0e rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe996f543 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfec8cf8e rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x02bf6b23 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x29cb4dd9 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3cedea2a cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3dc2ff8c is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x439aeda6 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x666e30e2 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x731102be cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x76a311e0 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x770cb580 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x81286ad3 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8139b79e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8a0ff2fd cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8c3fb99e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x94cc4890 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x95010615 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xba64866b cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xdad267f1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe7bd83cd cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xeee7fbeb cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x8f3521fc cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x009ca272 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03e021be em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x04ba8b80 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2cf46958 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x3179afab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x55abd91c em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6b9b61dd em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x74128f96 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x88710bfb em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb2f1196c em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb3cb75cd em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xbdba8dc0 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xc7375475 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xca5aef5a em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x3259150c saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x5b26cda4 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x7aa999fc saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc7dc64cb saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xcc38b166 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x0748ea08 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x54a0c2b0 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x648cc74d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xa7980abd tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x06b5100e v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x1936b1d2 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x20219995 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x69e4b541 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfb5766b6 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfd27d76f v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x27a26dc7 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x30ef1f2a v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x4ac4bb06 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x61befdc1 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1088c478 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x2c174230 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x618af06b v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6ba4b87e v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x7445f212 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x7524819b v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8c6ae7e3 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb7835d3f v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xbec4f1b7 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc53f001c v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe014fd9c v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf1f27f02 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0c9e3519 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0eea6f36 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x339059af videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x47f4ef87 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x60398732 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6c2241eb videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6e15d6a1 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6ecf020f videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x78df7f96 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7efdd0cc __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x84667a91 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8c5d8be9 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9bdded13 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa040294f videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa2c89c35 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa3e6453f videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa3fc72fb videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa9a3fae8 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc4bed77d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xd7b2c915 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdb66b747 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe46acba1 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf54849b2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xfaca7ae2 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2dbe995c videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x311701e1 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x34d8cfd7 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x673fcb02 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x23ca2f53 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x4180384c videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x53d3aae9 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x90549b37 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa16cb4d2 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa3cacdad videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xca114bf4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xd746f04f videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xdd86f987 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x98000fc5 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xbd8d9cb1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xf7d95579 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x169dbf61 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1c9e3fc2 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x24365c4b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x2a841ecd vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x42445b85 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x50bead09 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7c0946c5 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82b9aaec vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8b78d454 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x901dd089 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa4dda2c4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xcf289ed0 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe971d228 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xea4e8e69 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xf6783aeb vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xf822102d vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xffcec0cf vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x134a2c29 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe3a63e22 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x8415bf2c vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xc2faeb59 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xd67d7ccc vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xdd53e1f2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xf7b67888 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x7d5c6b8c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x0d3e3312 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x17256979 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x18593547 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x264b50a5 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x318eec3d v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x36123c0e v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x48576800 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4bec5b00 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x51335293 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x55cbc178 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x71926fe4 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x79310fb4 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7e50a157 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9513c74a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc8eb8fb1 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd2d57c8c v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd92393ea v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd9bf4396 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5ff68b0 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xec4db234 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf6214965 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfa05389d v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x00bfbac2 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x282e3c80 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4826778d i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x59bba31c i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa01c51ed i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb57e5be9 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe0f030d3 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe1eab8b7 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2ee51d73 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4ebf8f52 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x96719fd8 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2c7ec434 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4fb68664 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x88aa03a6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8a1c7201 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb6364f89 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc12c246e lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf799d87b lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1474a79b mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa1bfcd0e mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdc7ee7d1 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0012be5f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x14bc19b6 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2fbcfef3 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3382c0f3 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x819d4576 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9019cb8d pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x916798a8 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9b8eb92a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbb9b5c55 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2fb26c1 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb7d7877 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0a83d080 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xae367ef8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x04d3e8c2 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0bbe02ad pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1d271da3 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x76a01af7 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc0cc4168 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x044f20a6 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0bb1c5b2 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d53f88b rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2e62fffa rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2f8ac732 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x41e5b7b4 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x50dbe854 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x521edc5a rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x546e93d0 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x69400642 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8020e061 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8f80bf13 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x92cb8ffe rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9cb738aa rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xadc48074 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb03591c0 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd53d4b1a rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd6829823 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd922d61a rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1844b36 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff63b366 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1ea46172 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6d011417 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xac4004da sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd601e82a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe263e66f sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x28a27ace tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x6a357db1 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa25cf7c6 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfc2b0ff1 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xad347f9e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xcc144dbf cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe1313820 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xea19f88e cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xee5e282e cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x094a4171 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x218d9362 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4877c628 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x55bcc73f enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5d004762 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd3a495ce enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfb524a62 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x15f992dc lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2d3a5ae2 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3966b6c4 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x432b67c2 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4e4cbfa0 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7e5796fb lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaba114d3 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5efd0d03 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xf552cd54 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0652d505 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x44e8f300 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x52fa2fdc sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x89215926 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91deaf31 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x936c1cc0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb0724cc3 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd3517078 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf18e4e55 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x31ab3c17 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5ec93419 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x68263042 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x912e28e8 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x94bc58c6 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd2779e04 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x06bf93aa cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x595b891f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa025e1b3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x24d9320f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x741e6a1e cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9b110765 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x7fa1bec9 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x78d16c9e cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xcca58f00 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd518d81d cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xda09daaa DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0cbf8c4f mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10c0e126 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17587d67 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x241f6277 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x24da25ef mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2512ef30 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25461c66 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ae5defe mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2d8975e1 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x417816f1 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x41c782e1 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x430966d3 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x44bbe80b mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5bbf24b3 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6196158e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61bf48bb kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66c81507 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6746b19b mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6fa93149 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ffe19bc __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d5704af mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8648a075 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9449333c mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa7bce8c4 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8b47fd2 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa951c934 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4fa97a4 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8090953 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcc59721 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcd907a5 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1d6393c mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4e85124 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc89e0377 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcf4e2ee0 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd90086b3 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3f84bf0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5ec9010 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc02d4e0 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfebcfc2e mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x10abcd1f deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x338d9fef register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x49cfee35 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc057dfc4 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd753ac4b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb87961bc nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbf27829c nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x3ec1bbc7 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc9739d10 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd94bf0e8 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x124128d6 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1f47af93 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x308698a4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7242b18d ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b9a5ffc ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e27ca3a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ee2682f ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8935420a ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9add7719 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd5f7f93 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc906128d ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf156b9ad ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf578124c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x21565914 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x52fbb441 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5f3275d7 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdcc48203 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1655c830 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1865d3e7 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2dfd66d5 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6a6c19de can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x72fc5551 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x72ffc2af alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x825e9091 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x88be4d83 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x92bf33dc open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97aa04de can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9f9f5198 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe4333e98 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x021dd319 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6f115afe alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x73e6059e register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd74dad14 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2cb71218 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2ea4e53e free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x308feb02 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x37c51a8e register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01d64bf5 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02bc02b8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c271efe mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10b0ddfc mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13ecdd06 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x160bef80 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17c087eb mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24347237 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26b91102 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2905cbc2 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29e7e078 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f0bb806 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fca6f71 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31022901 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e4df77 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33e0ecb2 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34e01200 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ac3bd20 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4753a0dd mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49b84f12 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4acb1481 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4adba563 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4da288e6 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52f564b2 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x608803de mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61d2e59a mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66b2c7ce mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d2cba99 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d756f12 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e166be5 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fa95120 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71d43887 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73406ccc mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75a0232c mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79be41c1 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c8f6cd6 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e38b070 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x813910f1 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8568ed94 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85a41466 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85fc6f76 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c2636bb mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fe1a09d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95801c96 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9842d25d mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99351602 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa165ba28 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2bd2a5a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa89b77b1 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacab629a mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb006a8ef mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb60c64c3 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba07d02f mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd75f455 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc725e750 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8abca86 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2d5a529 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5861dcb mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7384264 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc3e8fa0 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde3b8421 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe269c63e mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe38f146c mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6e0e6c5 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6f4c566 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea15c50a mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb4d647d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeceb25b5 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedbe02d6 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0700c60 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ec6577 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf89440dd mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9622028 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd7fdf2d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0d423866 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1b3d8c1f macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3b8c4a60 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbafc8355 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe35fb5c7 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x95ff21ff macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x33cb6e95 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa8073126 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc4212cfc usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc82a983f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x18c2d4dc generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x34db3525 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x45976fa2 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x775f5327 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xac90fdd1 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf18f6c7a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x09efa587 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x111e5744 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x21234fbd usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x25db9cdb usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x295d1534 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x32e1a6de usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a165a60 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4d268aa1 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x56939c16 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6c9eb755 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x82d07b2a usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8a50c738 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb9cd1627 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb0c5f73 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbeb80db3 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcabe2fd5 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb5e9ef6 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc2d44b2 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xccd91a39 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde340f41 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf62df09 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xec7e8a62 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf180f59b usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7b702b3 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x25540f10 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x291ecd88 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2cb4b27b i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e08d905 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3fef2194 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x49ea339c i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4cfa107d i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x743bec56 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x83790e4f i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8fc7c0e8 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x99a5a270 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaf75e552 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbe07d56b i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc1b313ce i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdce35873 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfa78eaa1 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1c820b19 libipw_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xd1a27e60 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1ba3d36a il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3e310f56 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x664690d2 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x67d96472 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x838d09eb il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x01466564 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1a3c5310 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x36d634e5 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4222219c lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x55544bc8 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x55864a22 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6c6ef133 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x70b645a8 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x78bd368f lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x83a6c944 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc5346748 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc78ee1cf lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcab50fa5 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd478c193 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe847bf81 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeebac340 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1ab84226 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5a68feb9 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6cb0390e lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x91d7f150 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x95adaae1 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9a4986f5 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xafa6d105 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbaff3d28 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x04831d46 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x4aaa5ae4 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x100d372a mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x24aecdf8 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x276dded4 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x279ee2ac mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5c6b9060 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7f531199 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x87a8b221 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xacc7b808 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb175a651 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdec62387 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe2118349 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xec123d73 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfff58bbe mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1e94f450 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5cc4de1e p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x79c85bb2 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7b881f03 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa3312e01 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa7ae0032 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb3370495 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc674cdf9 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf88a2898 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x06c82a29 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1348b6f0 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16b2fa28 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b3becbe rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b50cbaa rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1d68c0b6 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x21673782 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2215eeb0 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a0720b1 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b51aca9 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3222193b rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34938c3f rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3903693b rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d5d64e7 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x46dcc1e5 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x499ca9f4 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62570388 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a82f68a rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e55945e rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7334d997 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85bb48ff rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x88c3e2e8 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d336305 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9326ee9e rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9716b405 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9840fec3 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e56a552 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa075702e rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa49de64f rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xacfb30c0 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4d26d78 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc71c681a rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xceceec45 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe11b133d rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea51fb7d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeba3be19 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed8b068a rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeffbe6bb rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbd6dac3 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x080c9832 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0acb037b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c9e77c7 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x15a0dedf rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a01f525 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25773c02 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x297944e5 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36ba1475 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3baa1f2c rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3eacf597 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4fb4c48a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52777b7d rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x559e501f rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b1ee169 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d9faa36 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x623b74b5 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66617503 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67c02549 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c35b7b6 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a00195d rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fd404ab rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x835b870e rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x837da80a rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f171bf0 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x926b0a7f rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9743cfbe rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa84d894e rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9aa65f7 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad434a8d rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb19f2e1d rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb475b5f3 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb422fdf rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc0ae681 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe640625 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf40a3bb rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfbfbf45 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8073883 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8cff33e rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xde8a877b rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe03810e0 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe63a9877 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe653dfbd rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe74fa760 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xebfba965 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf429409a rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9b9c5ed rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x136194dc rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x169b3f78 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7c19fd42 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x83e81b98 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9570562e rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbcb9ecc0 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xde0b8bbf rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf9148e0d rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xfe1a8e40 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2878a6d8 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33bca9f7 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3a3d77d8 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4b1aa492 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60906ef8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6750b04e rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x94faade2 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9694de39 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa123eff5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xacd60fb4 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc00b1381 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc6a245ea rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc84cc881 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc9a6f6cc rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcaf906de rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf5f908c6 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x784c40e1 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x85175605 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb260ebe6 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x254c920f wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50b58a73 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x57f48a15 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f8db51d wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7356f2dd wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x951ecdbe wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x97ed0c41 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9d24286f wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac544ea2 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb0f119da wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe9d045d4 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf65c6a41 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf91fa086 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf95f1daa wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x7fa3a8ee acpiphp_register_attention +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x8486119f acpiphp_unregister_attention +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x63b85aa6 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xdd6424df asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x64ebe677 wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xa9b7afd8 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc5e3dddf wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe2426710 wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00473dc2 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x301da5a0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5344ad pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x13d31360 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4921afb7 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4f91de56 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x55d433a0 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7e361f5a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe0dbae23 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x20df6cc7 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x51daf9d4 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5b7074f8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x897a05a8 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xda885b9a wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdbf07f02 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xefb2932e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07a8983d cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f480557 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1de871cb cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e9b6240 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x26411150 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f754e47 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33f7feaf cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39601b10 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4119d267 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x424512c4 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49193129 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ac8d36b cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c524f47 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ec9f616 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52efda26 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65e3ee4d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6a1180b8 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72f75523 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b6bf72a cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80e026ba cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8618f3ca cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8692f7bb cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8dccb36a cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e8612f5 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x980962a0 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98118a8d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a0f36da cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ebcfdd8 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa26ad7c1 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2fdae1f cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6424c92 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa820cfb6 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa9125f0c cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa93c6cbd cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa9bcb9df cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2ac554f cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2bfb44d cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba7a6d23 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc326cbf0 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd236a00d cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4d588fb cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf20c26ef cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb6bc79f cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff88763f cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x04ac87e2 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2878033d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2b498992 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x800615d1 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa1ccc5a2 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd5425208 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00a4b858 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x26f12c35 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x63c7d275 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x741393ad fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8047f71e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b6ac267 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ff8d48a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9596a198 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa1527ba4 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb336ae4d fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda7f807c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf25cf923 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf73038f8 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x58904f84 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x708324f8 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x71db3963 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9a68010 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc2fb4eb8 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe4e9052e iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0241fefc iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0edaec37 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x10f2443b iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x115eaf83 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1239ae12 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x198d73d8 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a1c8c00 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1b2a088c iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20188d06 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26275533 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2653f201 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ae7e5e1 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31e5911d iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x48a4d782 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x496b5c22 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ab9aa52 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54918a66 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69adc6b1 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x720fb5eb __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78b34aff iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e6f1afb iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8207c751 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x83963a2d iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8441ed8f iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8673b458 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b666a47 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d7e9dcd iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93e6ee29 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d869459 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb20dc2b0 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7012a10 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb810a8c5 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfb62cc8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc7c8a352 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8aa9012 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc061c8d iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd3d5cec5 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef829c43 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1540f86 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf38032b8 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf731f8c1 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbcc187b iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc03ce9c iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x086d4cca iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1b986d61 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x25165386 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42f8d688 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x44670514 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49a06b4c iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4ed6c751 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x685b6436 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x80c56613 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8be2d488 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa2e6f435 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc5166ffb iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xca92e69c iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd06bc45a iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe91efed5 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xea77c506 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3f6531a iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a694c39 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f1e5902 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1722ba8f sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x26237567 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3081b0d5 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4218196b sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x48e8a8b9 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4cf67858 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54875c14 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64a64c8a sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x657b7fe8 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x74172da8 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8287405b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3dc64b3 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf07b1f7 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb04919b5 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb8ab8489 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4a4408d sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc9375319 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd3c566e3 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd49d4d2c sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe88dce85 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfb237ab9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1abc6b03 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x252dc422 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x3246660d srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4c779a7a srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x89ded8ce srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe8dfa412 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0ccfaf54 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x12ea4ff7 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x187aee6a scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7e22e5aa scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xaa7ede22 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbda3f2d7 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd1316ef1 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd3ca4699 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe4182c4a scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13c647d6 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1b1e531f iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2053ed87 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2498f794 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c80a55d iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32d95e06 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35945c60 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a6d1da9 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a1f1e9b iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e53c2ee iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d327c73 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74d7a69c iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77a0c8d3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77e92b47 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f21358c iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x868d94f3 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e2f5bee iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x99a27150 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa48006da iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9b7332f iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae963cee iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb6f231c9 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8d8e9d3 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbc14eda iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe049028 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd743f73d iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda3d3d1d iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8ac27f4 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9af1c8c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5eb9d0c iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc1ca0ee iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd3b7e23 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2554ac42 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3494cef9 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x35a84eac sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xaca72786 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3052a4b2 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x649f1cb1 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x68c383bf srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa686c548 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfabb4c9f srp_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0ad44ed2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x35e401b5 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ff4e390 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9b8e76fa spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9dfc1981 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb9de518f spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x64df7acc dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x69fbb4b4 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8dd617c9 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd161f270 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd6fd09ab dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x28b78725 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3291e5fc comedi_get_device_file_info +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x38186533 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c1268e4 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77a1cdcb comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cee4bd1 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8b09e7d3 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x98edb4a2 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd14f0967 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf50526c1 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x80335a6e das08_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x86fcde20 das08_cs_boards +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x89195048 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x25e55b95 labpc_1200_is_unipolar +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x45eaa622 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x8285332a range_labpc_1200_ai +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xaf1e4347 labpc_1200_ai_gain_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xdd773c58 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x22cca26c ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x284542ed ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2cc92410 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4683dec8 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8188912a ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x93aec333 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb9a6bed2 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe790a018 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x430b7ab7 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x48cc07ad ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5dd3d782 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xaf684839 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe35b4e48 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfed8843a ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x030af1aa adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x23b91c71 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xa31b80a8 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8930692 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb9eb2d10 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd325dc0b ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe8fc3a3f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2a69e80a spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x30dbca29 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3385a398 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4f19ce72 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f23a9c8 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62a50122 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7c39f188 serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7c596e7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7fc8c368 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaf7d501c spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xce56e8c5 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe0033b1b spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2b2d3cf4 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2d58d845 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x49fbebec usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x531920ed usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6280cd35 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x66676351 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x66bb2cb6 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6cded837 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x95fa2bec usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x99d81efd usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb918947e usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc1311bcc usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd573989e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x1a010328 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4009360a max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4ecb3bc2 max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xa75da02a max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe61e9926 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xf1abca94 max3107_remove +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5afed215 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa9ca7822 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc4221da uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x46283837 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9fb0530d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x0d98c129 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x786c58c4 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7efa6f6f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x873aba4e usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xad989dca usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc4211c1f usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x015dbd2d ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x05b07992 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x093cd893 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3ce9b813 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5744700e usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6ac321ba usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f06e884 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7c416ecb usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb2109ec1 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x5e351b42 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x66460b58 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xbe8a53aa isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x07ded17d usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x180d1676 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1ae07b10 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x24f2d858 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x320758e0 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x347afcad usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f799b86 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x566a339b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61c8100a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6f846a2a ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x77ef8394 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8bd167c2 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9f6451cf usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb71fbc85 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc53e0235 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcb0e557e usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd299722e usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe72e5494 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3738e65 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0e610e4d usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1c038f38 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1d70ba89 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e15616c usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e81b75a usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x322f6cfd usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61af32ca usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6cda76cc usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x959db255 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa763d10f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb3e79f4f fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbbe891c6 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbe394b07 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc5b51546 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd09e9f4d usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd0bb3aec usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd1f6b025 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf8133a2 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe130ef98 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec201e0e usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf744e5ff usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf74b2e66 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x23b1d4bb __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2a567774 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa78a54db wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc97013b6 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd92526c0 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x06166837 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0cab195c wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x333185c1 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4e0bfb6e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x664257f8 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x698cc7c7 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6b63d0f1 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8beb8827 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x943ea37a wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9919b7a6 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa399f76b wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc49cace7 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc8c261b3 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca5fe73c wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd42222b2 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfd08fc09 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x5a913c7d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa93caabb i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbe4e8092 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x298d65a6 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2eebf07b umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x30ee9f9e umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x32113816 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3602ee33 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6c3c09be umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8e7dd286 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9b136236 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03003662 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04f845a1 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0690afed uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f9f865d uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1495e243 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x161f1b88 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b98d98d uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x379f1b77 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x391d757a uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a2ddfca uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4f05f6c7 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5679fbae uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5996fce7 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x696a67d7 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f176fab uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83d2a877 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x851ca07c uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a5ec480 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b491122 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ed01455 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0a0e39b uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5d35189 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1725d1c uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc751f11d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc8c9d318 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2d77df6 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd30c3470 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7d53448 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdaf25e28 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd3bf201 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd4ae3b1 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde515fd5 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe351b536 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec12d037 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee890e51 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4cc4fb0 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe1c7488 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x14f3f972 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x192796a2 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x36a2cac9 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x541c1d45 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x64a8f975 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x69263b6b auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x74f33a34 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb85906e5 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd7aadc87 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe006aa1d auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe07fc26c auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x04f662e2 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0ce70f81 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x49965f33 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x546f5b58 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x696db4e8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x787e57da ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf3d6067c ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0xc64ce026 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x7ca74e1f fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x9b7f7643 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x7c9da956 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xe2cff130 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x49f1bc3f viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x072c5652 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3f93ccd6 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56401fd6 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8258e7e0 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x86caf3c9 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaf0c3e7d w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb5a19637 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc8ca5d30 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd59951ec w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x20c3590b xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4724ad12 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x59822d73 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xaa036bdb dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2f29f362 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4c00f2d2 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x82730f93 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x938f4cca nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcd426433 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe8a56222 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xefb7c0ab lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04dd02e4 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x089c46f6 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a19ff9f nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a2aef2b put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e1d0744 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e4cae9e nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f75944f pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10327dc8 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14696f0d nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c6159cf nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2af912b0 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ffa71fc nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c834fb _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x356d51e7 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35ea6b8c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x361b1274 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36b05d46 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38587853 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b987940 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42e01568 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47547ed4 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5843a3f3 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cdb4dab pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d1bcb25 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x650b3be1 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67c3d328 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68573671 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70684803 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75fbdf57 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7df99dcb nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83dbe89b pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x889e528f nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x971c865b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0c11588 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb25bed0f nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc2b5985 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbccd214d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc120294f pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc71ec876 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc1dd662 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4e6b86f nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3c15a79 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5b3c4de nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7d5ac7b nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa1b9ee4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfae58e77 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3dbc147c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe184629c nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x1da783ef o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x25a510b8 o2nm_node_get +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 0x7886f561 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x89ea577f 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 0xacc7f3a4 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0xcaa23d74 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf949e8ee o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2565589a dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x26c2e23b dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x32001303 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x427f6f64 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x446cd901 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xce00d8b3 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 0x29cb99d1 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4424ba0e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc547d163 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x24488c02 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x263733ab garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x4297a5d4 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x53415a28 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x6c7eff69 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xd047b0ec garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x91c11f2a stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xae3128c7 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x528826bf p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf403ec3a p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x046b8d38 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 0x16b94987 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d6b2f4b dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0f1e0241 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0f6c0269 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x137bcfdf dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28b37e58 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28c952a2 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29bc19d0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x356fc23e dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36c1cee9 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e5c5af3 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f71791c dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x433c922d dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a1568a7 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x680808d5 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x690907e6 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c623db3 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x835ce693 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8aaf76bc dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e1134d8 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eb68a86 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x93f5603d dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6270758 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa90c3193 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa984508e dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb430585b dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbef22c0d dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf7eedac dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfe0f647 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0800bf0 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce3bd018 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe67fb1ef dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe8f1e890 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb94c6f8 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef658a96 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfefed33b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x127143c0 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x27a93c8c dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x30e92be1 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8c0c8d81 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc5447de7 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe1a40476 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3c6e59f2 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb7f113f3 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0b1ab656 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x268bac1c gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x44c84b64 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6cb54c13 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb3ca4efb inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc1b4dc39 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xca06074f inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xeff74965 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x4fbf8e1f arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xdc9d9797 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x4708330b nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x24fb7cb8 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x836b6a43 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x91986ece nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xb3d0bf30 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xe67705eb nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9d868764 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xafbfcc54 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcba58388 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcf7c7de2 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd13b55d1 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x6dedbd52 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x035412aa l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1695a835 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1ec1a10a l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2b386e1b l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x427528b4 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x46b29bee l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f2000f1 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7b9c417b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x92297814 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb1f41105 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd08ced38 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe54df567 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x025eb4ef ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x09ebb457 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x10b5d1f0 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x803a7631 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfa85e19c ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x250e42c1 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7769d6b3 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x99056d2f ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9fdf4ef4 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xae19bdb8 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd63f1684 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe251dd8a ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf7f5893f ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfb54b440 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x04599cba unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x05cbe3b6 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9a6cf683 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xcb7ca358 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x026049d8 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045469b0 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07027252 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bf72388 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f691986 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1559542e nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a80348e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c005f06 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c02288f nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24ad401e nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24f66708 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x257fa04a nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25f1ac7a nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d2598ff nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3136e3f0 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33f92761 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x362a233b seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d5f7b04 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3de0be82 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x436e327e nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4eee5168 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f65600a __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50b97ca1 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5410231d nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57b774a4 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61f91aeb __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64f0aeb0 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66b5288d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69bebd4a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a2a1155 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a64ee7d __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6cc7cb6a nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a889be4 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e158216 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8094a37b nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80a840f9 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8732b95d __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f1aef19 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90c9cdce nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99bc4ed8 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa198bc8f nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2ffaf4c nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa4e5748 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaae99d2b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae0cea3e __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb34ae41c nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4d11156 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb892f44b __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1195890 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2fcb8b5 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6a165d8 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc72486e6 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc92f3d57 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcad9474f nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd26917c nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9bd139d nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9d91d3f nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc7e6950 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdeaa37e2 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe40fa682 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe56bc906 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed94fff6 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee0531de nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7ef3869 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc476943 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd246a09 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9a59d24d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1d75146d nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x6218ae34 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0090be8f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x040bbf4f nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x14a7a30a set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4118679f set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6efb1189 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa6b60bb8 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb9753821 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd30dbffa nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdadcdb4f nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfb15b0a6 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x4c4e5c0e nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3eef7e49 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5d307300 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xdb947121 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xef7b801d nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xbb6cd3b1 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xf1f174c7 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1ad0d36b ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x31cd01c5 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x390474ee nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8ea32ede ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8ef469b1 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9fa99c95 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xaf9cf58e nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc1bc3dc2 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3166ad6 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd370f6b5 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd72c3ff3 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe77b76fc nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xed862972 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xc969f1d2 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x7b431ba3 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x6caf7333 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x018c87ea nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x509cf121 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x56292a2d nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8317451b nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8c59ac7d nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd7916c72 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xdb882534 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x90d08418 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x08a14118 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x12719aca xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x15d9749a xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2875909e xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x642e1d4d xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6af348b9 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b38482d xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6c71053d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8d6d1c55 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x999420a5 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa20af1bc xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa24a0cf9 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xef0a4a1b xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x133e13b5 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf7b03908 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x06a2233a rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x099c0e42 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2635eb3c rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2cb31c51 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x2fcdcebd rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b46ba19 rds_inc_init +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 0x58e7c1b9 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x5a56af83 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x6cdba8c4 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x6fffcfc2 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7a2eb01f rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x99aa8906 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xa04547bd rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xa192b747 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xa9bb8946 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xaea11ef1 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xbdfd2673 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcc8c1107 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xd8999221 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xde19ade7 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xe115341c rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xe64320c7 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf46cb929 rds_message_addref +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x26b42c32 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5ecd8d1e rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x09b5f4cc gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x11644122 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2332e9d8 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x49543240 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4b15f96d gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5717b8d5 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9bdc4d8c 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 0xb6523bc3 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcc1a4330 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe2d22634 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xed0d1c23 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01d23e97 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04888a66 rpc_wake_up_queued_task +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 0x069804d1 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a85244e rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ad837de rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b333d5a unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c29705d xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ebf5ea1 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11448479 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x152b052a svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x155cfe75 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15ad7acc rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c92d05e rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c9e9150 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cb7a8d9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ddf6d0b xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x218b6e14 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21f00c44 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22f77c25 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24e58142 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27508eaa rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2829f907 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2898bf6c rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c17b454 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cb76d51 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d2c557a svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d2eae8b svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f31a8e4 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3053cb3e xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x308440fc svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x338b9b86 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35338413 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35d2ac51 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3842a30d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a8c9075 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b3ebe33 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b673e79 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bedd122 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42d219ef svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44684fca sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44e03c46 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45a60f39 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45f7b62f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x487dfe7b rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489b7e60 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b2b907b rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d92b6eb svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5106293b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53f7dd39 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x544340a0 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54906145 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x553dd6f7 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55423966 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55791f3f svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f0f2e9 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56243b57 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b330dc1 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e1cf4ec rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x618bdbd6 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61b4fc86 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ad56b1 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69490e94 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x694e32de rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69792648 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69917382 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a68644c svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b7c0b60 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bc05407 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d641074 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8eb886 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e43905a auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e776ac8 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x718fc1cf xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72da58c8 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a85b2c xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76bc0854 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7738780b rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x783f5764 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78b484c2 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82aaa66d xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8534fd8d sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88c7017a xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a31001d xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a741032 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8be8e0f4 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cf390f0 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e6505a6 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f9b1340 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fb3e56c xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x906e5b0f sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927eef9a rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9387a46a rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x946ee012 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x983dc1c1 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a2f4f89 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bcabad0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dc0e683 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df71c31 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0096c59 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa05633ed rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0822aa3 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0b84bd4 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa21059f8 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa49f45b0 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa562423b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa710e810 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f5e356 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa85b3788 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9ab095d xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9b0dc93 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabfa4023 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad3824a3 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad3f0eba sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1c3976f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1f2bad7 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb23533a0 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2a697a8 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c8cfb9 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5e6bde5 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb63afb53 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6b2f528 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb762726f svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7c020e8 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb868b356 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb902477f svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9cc9da6 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9e27b9b xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbab98b58 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcb24ed8 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9479dc rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc01d9b4d rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc30d408e xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4d87efc write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc521e8eb rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc58322d2 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca1e259b bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca4d51ba xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb374174 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbdb98c5 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd50ba34 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd2c972 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcde88472 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf216632 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfde7f8d rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd091f73c rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd31e563a xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd531adf4 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7e6794e xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbb69b40 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde8e0835 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2cacb70 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe30a5ded rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe38be080 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3b454c3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4b2b4db rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe690fbc0 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6974835 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8220fd0 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea135258 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea9b86b7 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef16d6f5 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef777add svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0a876a4 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0e61e89 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3ebf1ae rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf74f743b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9bf56f4 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2ad6e0 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfeb7fecf rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfeeeff00 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff10fea0 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff66b6bd svc_sock_names +EXPORT_SYMBOL_GPL net/wimax/wimax 0x122ecdff wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x15c45332 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2ab78d25 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x36ad0ee1 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x36b67dfe wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x59a5bece wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7571534c wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa23ce967 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa74427be wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc406eb04 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xeefc9a2e wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf0ca4bf2 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfad0f31b wimax_dev_add +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x292d61db cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3b33a37f cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4999c80d cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x51c963c3 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5a693362 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x75cb6331 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa42374c4 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaaddae90 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb0f5d17e cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf95b35b cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe664146b 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 0x8d97b694 pskb_put +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 0x00bd2c49 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5584f935 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc0fc2fe4 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xcf210191 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/snd 0x0cadabf7 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x13570ca9 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x7aa342d1 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xc2f00453 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xd48a3616 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xccad1c2e snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0ca69c96 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x468ab34f snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x731adb8d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7d1624af snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa78a4281 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbe02b048 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x017267d2 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01fd744d snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059129d8 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06a1efb1 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c5f2e4f snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d8f0360 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0dd634a9 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e4e6c6b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee403e6 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f0f7a74 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f21de81 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f6a18bf snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10ad06b0 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10b00914 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13c80894 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x141c041b snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1649aebb snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19025f02 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19ddc433 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a90205e snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ac361ca snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x221d3f5f snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2330a7dd snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x262d45ab hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c6a7a2f snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c739f10 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c8ea949 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d23ca0a snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x328cf703 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34ddc617 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3684faf2 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36d6229c snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397627bd snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3be95252 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4168bc92 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42fa8270 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46005c24 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x477f1860 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48e8f490 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d2d79fe snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4db7535d snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52a889a4 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x573435d0 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x589909bc snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a849c34 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b1522aa snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dabd9a9 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dbe06db __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62ee13c7 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62f0a264 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x630070db snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x678d6baa snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69fc2661 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ff68365 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71b88c34 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x724fcf5a snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7894d40a snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d64cf60 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fada7e4 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x826995c5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x831349bf snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83933a77 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83d33f29 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x849a0455 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c01ddbf snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93e45eb9 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95f28d65 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bccdcd2 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9be9e18c snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c241dda snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa40bb877 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a15c6f snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa732af49 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa6358de snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabee3653 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf0fc9aa snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1a5bd9f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2623bdb snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3529c59 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3be15ce snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb49cd877 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb50416ef snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb71b2fee snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb754d731 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7f56199 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8e7a574 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd22ef58 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe5bf45c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbef97070 snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfb101c1 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc063e8ea is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc064eada snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc145d8dd snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc82a6641 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8cf85c8 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca885cae snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb80e4f9 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd62c396 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd278716b snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd29eb38b snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd96a7219 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb9a8f2b snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd5ee20f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddde1f05 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1f6ad13 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe35c430d snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3c058e9 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe639c2f1 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6789bad snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea8ff428 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2df248 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1ae6375 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf345e6e0 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf463efad snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd99504c snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfde90090 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x008ea549 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xa1dc1be3 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x905942af v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x75a91ec2 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x175fed0f sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x3896a839 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xa656fdf8 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x075d1c0f twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x34fafd90 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4bc98003 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x642cfe9d twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xe8b8d0da twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xef70e43e wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x65a0b31c wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x76da42fe wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x83e24e07 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x93b1c7fd wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xbf15d579 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc40f61c8 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xcffd9b91 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf621f87a wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x200f1074 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x8d1397c2 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x8e5116dc wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x5296bbb6 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x759af78b wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xe828a81a wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xe9e9552b wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0x04e503d3 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0xf37ccb15 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0542c3ba snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05940ac8 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x062705fa snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0776bc24 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a51f56a snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c4f7a32 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ce61645 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d2be418 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13306f69 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13f1e9c1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1512eee8 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1518badd snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16447adb snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175ecc48 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e48da1 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a6d6d3f snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f7009e6 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f721f7f snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21592586 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x216f54bd dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x222e56e8 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x235da2da snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x266c4577 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29676a11 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c7d3d68 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ff466a8 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30f97af8 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3353ebe7 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33e77c9d snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x349ca5df snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3765c2bb snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39015867 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a360b0c snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4135cf9b snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x439e2a66 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x451f0502 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45da9bad snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x495ae74c snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49cfa53c snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a9e3b59 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4add60da snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d19a953 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d2bec5c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f8be9c0 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50aedc95 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5244b3c4 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56084a37 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f8ad374 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60be0194 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60bfc660 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64b34fb6 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65839a0f snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67ed59f6 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cad799d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d5510fb snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6da3b95f snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f20a2d7 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7007350f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x751bbe45 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79ff7010 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x815ce7e0 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x825c278e snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83259ed5 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85659706 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86ed8408 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8962e1a3 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c7f98e7 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f1792d3 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9095f35d snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x919061ca snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9729f5e2 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a57bf18 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9abd7042 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b9166b1 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa007f7e3 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0be023d snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa51d30ad snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5ace50a snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa91ab2ea snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac284e30 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac5f1af5 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae3e5f00 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaeb17472 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2718314 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb278e87b snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb362bfdf snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8462ac0 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb97d30a1 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba113160 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc616137 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdbbae8b snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc15c0abf snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc329b200 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc438f88f snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6086faa snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd53cc95 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5074172 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5a00159 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6d496e3 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd947c029 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb5f87de snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0417c4 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdcfef286 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddfc4d24 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde04ba7e snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde1fce40 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea8bb87 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe146fdb2 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1c1e377 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2316018 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43fb952 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe52d4327 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe56a48b2 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe60a9228 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe629f058 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec71222a snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xece8670c snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee9b6128 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefc02fa0 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2ca88b5 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf31bb0de snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf47af39b snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5f0664f snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6b13289 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc9a3ef7 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x002dd9cd ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x004beb77 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x004ec5cb crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x005867b0 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x005f9485 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00791ae8 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0089dfdd rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x008b0d15 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00a4ae0a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00b23e91 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x00bd9565 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011b9c48 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x016671d3 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x016e2d15 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c1bcc7 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x01c3f3f4 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x01d11a05 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fb89b7 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x024a4402 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x024cc21e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x02be61e8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x02c82c60 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x02db4a48 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x02dcc0a1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x02e059f6 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x02e445aa sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x02fe5368 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x030b2d9e dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x03263d9b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x032c34fc rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036c8864 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x037c7644 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x03882d6f driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x039054ce wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0396c2ec rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x03ac5823 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x03e16e04 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0415766d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x0439622a fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x0450397b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x048b487d ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x049f0c24 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x04b3c91f xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04dafe82 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x04ef8a1b __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x04fa988f ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x0509b9a5 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0517363f platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054d58e7 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05f51567 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x05f84e71 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x06004888 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x060c4d90 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x0643bcfd tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x0644052b crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06981e9d user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x06ad69fb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x07220209 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x07310af0 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x073551ca attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x075d5e82 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x078c0137 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x079eb122 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x07a6e277 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07db0e01 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x08341345 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x0847a537 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0854382e __module_address +EXPORT_SYMBOL_GPL vmlinux 0x087c2524 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x08907c51 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x08975ced i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x08bea3ef power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x08ca2fe7 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x08cf9580 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x08e62a87 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x08fb6982 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x0904868f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x0909661a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x095f33d7 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0976801d ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x09adafa5 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x09b38abc ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x09c5c8c0 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x0a1600d6 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0a369a3e pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a69b26d hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x0a752a2e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x0a7cb051 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x0aae4f31 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0acfeaa5 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x0ae7d1dd vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0e2650 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0b1573b3 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x0b19ed7c apei_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5ef70c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0b622c81 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x0b6a2207 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b6b9223 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x0b75d888 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x0b98b7f5 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bb284a3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf8b2b8 init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0fc5ce dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x0c10056d sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0c11bae0 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0c260780 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c343a7b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0c3a3d3c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x0c4f41bf pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x0c5c202e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0c67f949 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0c76d4e8 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0d36ff8b bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0d4f5a58 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x0d517b90 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x0d61d4d4 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x0d6482dd tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x0d8310d9 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x0db6d117 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x0deb0ade register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x0df55515 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x0df5af3a cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x0dfe468b __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x0e03a2b7 gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x0e06b27b blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x0e0c04fe uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e155eaa __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e595304 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0e7950b0 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x0e94138e inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x0ec210b8 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x0ec9b854 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x0eec2d2f scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f08948b pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0f0e122f pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0f3098c2 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x0f41e4ae usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0f5178fe bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x0f65e04a ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8aa952 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcbe905 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fd653b7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x0fdca1ea pxa_ssp_free +EXPORT_SYMBOL_GPL vmlinux 0x0fdfd63e btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fedcf10 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0fef5b04 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x100c48a2 unregister_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1012c918 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10264739 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x106737cb sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x107c7865 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x10b974fd platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10e5e0fd xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110eddb4 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1110960a led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x114ea908 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x115bd575 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x115c66ad pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x117123a3 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1192eae6 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x119a0bba blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x11f59b39 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11fe9097 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x12080211 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12223d71 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1269c629 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x12a5fea4 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x12a8b14e ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x12b1f05a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x12b67b2b wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x12b93282 mmput +EXPORT_SYMBOL_GPL vmlinux 0x12d544f5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12e407fa pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x12fdd647 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x12ff614b fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x130f1885 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1315853d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13295211 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x134faf36 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13b7c579 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x13ccf427 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x13d1b209 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x13f3e3fb klist_init +EXPORT_SYMBOL_GPL vmlinux 0x142ae8e4 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x143720c3 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x1469076f __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x14ac5e74 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x14d44a62 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x14d4763e dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x153a0c91 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x1546629b aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x156db14c sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159b8010 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x159e7558 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x15a22ce4 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15c97984 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16075443 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x167876f0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x167b69c6 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x167bfb1b ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x16b0322c ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x16c57b0c unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x170fb3e0 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x171b577b unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x17237fe6 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x172e72d4 vdso_enabled +EXPORT_SYMBOL_GPL vmlinux 0x175b03b5 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17635e9f udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x178e7b9a xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x17905e17 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x17be9d47 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x17cbfe4b fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x17f78860 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x180b955a digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x1821f3c1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x1851fa60 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a2d060 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x18bd580b blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x18c80d4e tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x18ca8c5e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x190af3fb tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19496284 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x194bf39e xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x1993c415 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b37f72 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0b510e sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a5e8f0b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x1a9588e5 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afa077f power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b2023ee usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x1b242b69 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1b2ef0a3 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x1b3255f4 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b4405d6 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b7adb01 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc07af6 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x1bcb9ed5 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x1be29092 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x1be4b280 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1befd368 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x1c03218d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1c244e3d cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c68c229 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x1c6f5ae2 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x1c7524b5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c82ac16 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8cd5dc tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1c9898f2 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec0839 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d4b5433 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1d4e619c device_del +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1dab6749 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x1dae51d2 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x1dd99034 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x1e175dd3 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee443da sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x1f0b7404 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x1f0c7ba8 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x1f3769ff ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1f3d161d ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x1f68f98a device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1f6d9985 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8ec1b3 acpi_get_pci_rootbridge_handle +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x20023cff tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x20057fce usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2022011f __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x204484ad sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x2060b2ed bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x2072911a relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x20733227 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20f98cd8 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x21311fe8 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x21394c16 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x216bcfd5 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x217ec1ab ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x21882144 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x218ec6f6 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x21a346ed key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x21a74c23 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x21b3f73d srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2213db99 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2225c0e3 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x225e9a07 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x228a1525 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x228d753d gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a0478f sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x22c65795 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22ce3016 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x22e48c34 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x22e85e41 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x22fcd03b blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x2334a657 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x235d48ae usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x239e832e usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x23cc3f74 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x24205d0e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x242e7592 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2447a546 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x24581bd7 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x245c6cc9 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x245d4108 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249c2561 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24dc372d ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x256c1c68 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25de7c23 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x25f964a2 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26395e19 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x26423707 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x267a8674 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2682aace skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bb88f4 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x26bff606 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x278367ee ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278c628e sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x278ec596 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e0be08 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x280e4516 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x28257b23 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x282a44dc tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x286cc2a5 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x288a7d58 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x28a1c9a1 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28c20de3 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x28c52f5a subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28e42082 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x28e4431e usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x28f7cd5d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x28f98f23 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29059b53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x292d0eea __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x294539c7 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x29607541 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x29d8984a ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x29e08917 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2a4b4ad7 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67bf72 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2a9f546d ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2aa617cf mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x2ac36de7 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ac3cd46 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2aca567a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x2acd9307 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2aeadb40 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2b106487 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x2b4b8085 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b54e167 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x2b6135c5 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b7beb0c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2ba70036 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x2be6155f dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x2be7fb8e disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c05f911 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c488aa5 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c95b471 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x2ca28198 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb37e38 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x2cdfc8ad rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d534b09 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d7169e9 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dbe154d ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2dddb04d usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 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 0x2e50e4f3 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x2e5b756e cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e8b6c8c __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2ead6e95 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x2eb76e2f transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x2ebd0c16 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec33018 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2edcdc33 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f503af6 register_efivars +EXPORT_SYMBOL_GPL vmlinux 0x2f651b9e page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f8af741 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x2f8fd6c9 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2faa6eb3 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x2faf7889 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3012eb7d skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x301a7377 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x301f3e0f task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x30386e21 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x3043b875 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3051bd3f timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x305aeb98 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x30714b10 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30c44654 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x3101ae1b show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3124949b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313f4585 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x314e6c63 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x3165b995 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x318920b1 register_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ca29e5 input_class +EXPORT_SYMBOL_GPL vmlinux 0x31db20ef get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x31fd12b8 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x3225659c cpufreq_get_measured_perf +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x32639fe9 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3296d2f7 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x32a91f61 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x32aebc7e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32b391a4 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x32be5f5a platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x32c1408f fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c46228 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x32ec22c5 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x32fd4b62 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3357f236 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x338c520e devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x33a98b3c cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33bdbe80 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x33d895c6 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3465b253 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x347e62c4 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349bb39f xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x357b187b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x358e3b88 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x35b2cc4b tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x35f3ae51 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x360d3c3a dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362d144e sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3675b7f1 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x36838efb da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x369b78a2 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36e27f9d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x36fa0399 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x373c1f5b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x377dfbdc ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x37992cf4 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x37ece576 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x37f6af4e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x38105303 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x3841ab01 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x38824245 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x388e7692 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x389679cb __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x38989700 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38c40b67 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x38f1c62d rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x38fbafb2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x38fbc7b0 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x38fe9812 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x390d79aa cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x394b3e15 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x394c15c8 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x3989d521 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x39a26739 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x39a8b134 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x39b0b1a6 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39e313ad exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x39e670aa kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x39ec9edd tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4863fe sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a8f08f9 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x3ab372d5 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x3affbae2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x3b2475c2 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b58a6e8 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b778de3 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3b96b9c6 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x3bb48dec led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x3bccde75 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x3bdd16a8 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3be5404a da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bebca32 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c1d7120 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x3c23b60d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c3770ee xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3c4fe9e1 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x3c721019 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3c747ae2 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9b530d unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3c9c7e45 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ca4a04f ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf36b6b sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3cfa7364 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d007ed4 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3d00caf2 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x3d2c0d4d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d51cc41 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x3d584d5e xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d9ed0a0 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x3db6eeec __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd885b1 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x3dde0e07 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dec9bd7 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x3e019b2f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x3e053193 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3e0e3f04 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e2bdd47 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3e2d5543 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x3e3cdab7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3e3ce021 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7f0dfc __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ea5f9f8 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x3eb35437 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0cc019 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x3f15e907 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f2d62d9 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3f3ad15e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3f3cf3a2 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3f50e11e mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3faa6ac3 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x3fd11345 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3fe92d0a mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x3ff1daf7 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x4002cade iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x402b5d73 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x402ec223 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40502241 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x405e11c0 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x4074b052 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ce9362 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x412769eb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x413eb86d tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x414a6090 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x414b4ee9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4154a610 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x41630ad1 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4189b034 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x418f919e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x41af146c usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x41e36ca0 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x422daf7d sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x42469e37 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x426f13b9 e820_all_mapped +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b51720 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x42c959c9 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42f9e831 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x42fc5d84 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4302e2cc relay_close +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x435e6c6e crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c6d90c i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x43c859e7 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x43eb3e74 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x43ef5efc pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44cc9c55 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x44d00dbc devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x44e4ce60 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x44ee06e0 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x44f25895 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x45059b53 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x450a0da9 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x455cb90f stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576818c get_device +EXPORT_SYMBOL_GPL vmlinux 0x45979bac dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45fa2f9a wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4627e1fb print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x465c52c7 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x46724a02 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46a69737 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x46a91ebe tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x46acbad6 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x46b646e6 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x46dace75 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x46fd6c0c vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x476b4433 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x47718e8c debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x478706d6 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x478732e8 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47fa2642 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4800bd52 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x48134068 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4879dc0e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x489bc2e1 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c0002a modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x48d4df2d driver_find +EXPORT_SYMBOL_GPL vmlinux 0x48d587b8 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x48e2147d __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x48ed2fca shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x49537b52 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x4955c9e0 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x4958ab3f dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4963618f acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x496aad54 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4990fc26 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x499b4646 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x49bbfa0e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x49db8db4 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x49fc346f __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x4a2c8226 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4a44af8e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4a4c9deb __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x4a62446d __put_net +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4af4e51c regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b171441 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4b2a9988 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x4b3cb812 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bce5907 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4bdb4045 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x4bddef57 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x4c10d14d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x4c16f764 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x4c5ab777 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x4c5cf56e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cb4cea3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4cefe3a6 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x4cfb603a ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4cff654a ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4d083f4f blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4d42e3d8 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4d4644fb blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x4d531cde crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x4dc0683b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4dc19264 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4dcead68 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4e02342a rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x4e03a565 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x4e0ee1d1 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e441114 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x4e49091f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e66edc8 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ed6e906 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efaa814 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f2aea22 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x4f3aed86 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x4f3c5f9f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4f99f09f usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4fa75363 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x4fc27f71 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x5003bd84 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502d4159 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5035faa5 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x50492fb6 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5083a52d usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509bf0fa usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x50a1bcf5 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x50ba3bec acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x50baebf5 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d20544 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x50d4c2f3 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x50e0dc22 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x50e538ea scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e91a78 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5108b3fc acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x5163ce8f i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x5164f757 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5170db64 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x519978ca sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x51a8d08a crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x51b02de2 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x51ce4710 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x51e58d81 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52129db4 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x52463a25 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x524d2d17 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x52593d35 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x5280aeab do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x52b6c843 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x52c042dc hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52ede6d4 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52ee4892 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5314f95b crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x5339acbc key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5372dede unregister_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53d372fc driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x53e0d792 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x53f73366 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x5401c592 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x543184a2 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x544d5a71 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547a1584 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a44046 md_run +EXPORT_SYMBOL_GPL vmlinux 0x54ace4bd __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x54cd9b04 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55718781 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557ae577 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x559cff0a led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x55b16fda cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x55ba5579 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x55d8efcd sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x55fffeb6 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5606916f sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x562775ab bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56358f6d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5639fe30 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x563a1bea cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56934c3f page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cda964 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x56d51121 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e04d2e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x5704edb3 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x57059d92 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5728b6c4 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5741fd24 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x57601a53 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57e95cba stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x58b0344f unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x58f1e08b devres_release +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5907f85f bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x591a0263 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x591e1860 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x596fe5d4 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x59d21150 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f5b06d pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x5a028d8c sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5a091bdc tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5a11ef5a i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5a136c06 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a4acf71 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x5a5621a7 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5ac45511 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x5ac59307 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5acdaaae crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af9fe97 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x5b2cfa3b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5b74feda regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b8f4797 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5b9e357f single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x5ba2f5b5 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bd45ba8 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x5bef7826 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x5bf6fdcd device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c6c776c rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5c6e5a39 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5c83e860 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x5c8f7661 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x5cd86a0e s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5cfa733b user_update +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d32921b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d41b19e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d7904a7 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x5d7ecb61 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5d87c067 register_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de246db usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x5de99b14 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e213950 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5e29057a ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x5e3aa6be pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5e504a7d xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e6ebd54 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x5eb1ea91 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5eee9f16 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f499ac6 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x5f5fdaa5 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x5f7b8618 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5fa7b83c tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5ff276c3 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x6010305f ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x601748e7 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x603b0727 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0x6043785f bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6054bafa wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x607ef3c3 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60cdfff4 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x60f1a670 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x610d0fdf alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x611b1fb1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x61261414 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6127084f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x612a8ef9 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x613dceef blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x615ebe1b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616a3568 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x616b7f9c __mrst_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x61a3b8f8 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x61b9038c iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x61f5c050 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x6219da0e virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x623558f2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x624367db subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62bf8f76 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x62c9f034 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x62fff5c0 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x634f829d platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x63500af4 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x63598e6b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6368dde3 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x63f8f088 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x642f4f2d default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x64395136 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x643b157b md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x644b78b5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x646d0c74 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x64841cc5 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x64964900 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x649a1af9 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x64c2283d crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x64d26ead ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x64fd4bbc watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x653d6dc0 device_register +EXPORT_SYMBOL_GPL vmlinux 0x6563993d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6592c5e7 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x65933231 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65966344 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x6599fb52 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x65a34c41 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c6a338 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65fa533b usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x660ea95e ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6623177a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x66394327 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x66425556 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6648a8ec dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x667336d4 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x667ef1ec inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6684b556 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x66ae9e55 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66ca4d50 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e7cd5b xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x66ee6f95 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x670d9d62 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x6718fe30 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x67200afc pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x6724c76e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674f8bbd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x67525842 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x6757c5c6 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x678a3ded evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ab3d48 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x67ae2168 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x67b89bda bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x67c8e53c virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x67e9a9a4 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x682bfd39 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x6830bd5e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x684fbea5 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x685cee61 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6863fbe4 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x68899995 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68fe086e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694c7bc4 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x69696244 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x697579cf debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x6976a85a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x69865673 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x698854e8 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a19375 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f2e9bb md_stop +EXPORT_SYMBOL_GPL vmlinux 0x6a50aca1 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a7b70de usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6ac06765 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2ef9b1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b514b9e inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6b6131b3 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6b8a02ef __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6b94c408 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6bb83428 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6bca120e get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x6bd23f0a scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x6bd754cc pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x6c100fe2 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6ca4be1b rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6ca5c49f sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6cb56693 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x6cf4526d rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6d01d089 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d49566f spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x6d5ce6d4 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x6d8226b8 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x6db1b143 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6dd5d34f spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6e3c3f8e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e7413bf ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +EXPORT_SYMBOL_GPL vmlinux 0x6e83d345 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e91b371 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x6ea0d0c4 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6ec2fece crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6eda9749 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6f184ec6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6f18bad3 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x6f1ab2b3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f5f31e0 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x6f5ffdad get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6f6d7fc8 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x6f7836fe ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f8a09f5 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x6f93b9ed vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6f998eee __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x6fa58305 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x6fba0ddf ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6fc45108 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70ad8134 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dfe2c5 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70f1ea03 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7151dffa power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717f8f99 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x71968b11 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x71c3a8b0 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x727478d6 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7285f84f unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x729c3fb4 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x72a6f312 virtqueue_add_buf +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c93d7f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x72dfc3eb sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x72e6f1fc ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7333db57 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x7342b84a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x735b1cd6 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x737d3433 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a8f2d0 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x73b3c219 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x73c9fb98 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e87eb2 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x73eb60d9 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x73edb72e regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x741611ef unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x7417f4fa xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7454efe9 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7473c028 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x747910f1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74d2cafd fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74f7cc54 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7529a295 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x753fc64b da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x7557b5fd rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x758e9d78 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75dcab27 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x765ef478 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x76650978 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x7685bab9 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x76cb1098 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x76fba70f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x77093bff relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x773411ff da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7756581a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776e4249 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x777cd991 zs_free +EXPORT_SYMBOL_GPL vmlinux 0x7782b59f pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77b4cd7e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7865fbb5 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x78a7a6a4 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x78b60b14 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x78c0f0cd tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x7900cfa3 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7931f66d serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7944d12c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796abfe5 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796d4f1d rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x798cd6ad usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x79a717af wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79bf5de1 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x79dbaffd regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x79e49dd6 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f33d07 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x79fb68e7 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x7a08cf87 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a2cbabd key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a45153c usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a7c5175 amd_erratum_383 +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa33ff4 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7aae4555 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ae0ff6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0720b1 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b27ba16 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7b4d854a inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7b68641d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x7b7f6228 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b83acc9 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bbc0626 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x7bcd3217 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x7c496d49 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7c57d519 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7c59cf82 put_device +EXPORT_SYMBOL_GPL vmlinux 0x7c7359e7 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7c77e6d6 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x7cb0f5b6 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cda713e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x7ce0f989 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cef4d6a irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x7d00adab disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5bb3a8 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x7d6d9edc regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x7d99609d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dca238e xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x7dcac65f securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x7dec86a8 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17f6fd mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x7e1ecdc5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e3a0954 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x7e4e09cb ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7cb61d isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7e86a38b ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x7e9286b1 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7ea633a5 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7ec22f9a apei_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x7ee79ddc cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x7f010f66 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x7f08bee4 device_move +EXPORT_SYMBOL_GPL vmlinux 0x7f3bc20f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7f41e663 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7f64e77d debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7f82ebc8 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7f86d4b1 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0x7f9205b4 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7fdb0b39 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7fe9327e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8017590a sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x803fd0c1 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x804da4e9 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8051adbd rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x806af56a xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x8085b8db crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80bcdc7d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fea829 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x812b018c pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x819f95ca platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x81f5400b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8235647f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x82548585 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x825980a1 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82771744 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x82909db3 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82cd19f3 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82dd8f7c ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x82f89884 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8313bfe0 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83bb4793 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x83d0c56e platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x83fb6bcd shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x84022bb9 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x840293b5 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x84138748 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x8438aeb1 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84768104 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8483e4a8 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x84928a9c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x84a5ad46 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x84ce82df __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852b9ff8 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x85526eef usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855ef085 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85de263f xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x8600dde3 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x86081a38 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x860cbb18 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x862f98a3 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0x864fdfac blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x868528ef xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8699c7d9 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86aa16e6 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x86af5355 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86ba9f83 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x86c0f66d driver_register +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x8735bd31 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x873bcea3 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8750ccc5 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x875c069e s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87cf0a90 injectm +EXPORT_SYMBOL_GPL vmlinux 0x87ea8074 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8857025e usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x888945f0 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b0844e btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x88b3f2e9 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x88bd265a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x88c6c318 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x88ed40ec rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8910a15a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x895bc865 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x897482db hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x898a3337 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x89938016 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89f963b2 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a102d56 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x8a31e741 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x8a56ed02 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a6e476a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x8a6fb824 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8a72c3a3 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8aa968f9 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b079dd2 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b7f9010 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x8bab08c6 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0b219f regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c38074a unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8c4db1b5 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8c562b90 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8c864c46 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8d404cc2 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x8d533b84 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8e25b68a xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8e3484a1 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x8e5e869a crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8eb44bab ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x8edfc605 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x8efea5e9 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa7da75 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8fa7fba5 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8fb576b8 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8fc2f4a3 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x8fdeede0 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8ff831b5 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900d1d6b xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x90206b44 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x905c1073 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906a3922 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x90803bd8 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90fe2b1b pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x91075a33 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9111f438 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x915c1034 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x916424f1 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x917e94cb ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91beac04 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x92219f20 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x92244ee8 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x92261d5b spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x9229654a skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x922d76d5 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x923f761f find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x92535c6d blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9259dcdd md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x92888874 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x929233c4 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x929c467f btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x92aef435 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92fc0263 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x930aa4c6 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9330091b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x934af37f iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x934e8360 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x9356930c tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x936edfa1 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x93b58f79 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x93c9879d pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93db25ca pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x93f8cdc3 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x941db964 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94271efa vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x943abecd regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9466f0bc pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a8c77e pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94eaae50 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x94ec6d05 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x95263908 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9527a6e9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x95945563 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95da94ca perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x96016d9f xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x960c2d67 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x9611256b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x961b4b49 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964b7920 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x964ba235 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x96674e7c pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x966d16af led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b7f117 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96d53764 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x96ef6ec9 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x972e3e45 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x9732f4b7 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x9736635e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x973df09c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x97980b30 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x97a0c589 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x97b093dd btree_update +EXPORT_SYMBOL_GPL vmlinux 0x97bb5f73 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x97dd758c debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x97f9c45a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9842f28e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x984c946c vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985f683d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x98c7c565 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d52d63 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x98fe732f tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995f2e01 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x997577d7 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x99d4dc24 device_create +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a4a0b75 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x9a709a56 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9824ef btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9ab7742b crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae0626c tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0ec8b3 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x9b87c758 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9babf390 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be3d9b3 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x9c646e1d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x9c67832d virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x9c6bfb26 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x9c79c6b3 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9c9e47ee ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9caf3c5b ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x9cc8d5d6 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d0ca2a4 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x9d353a76 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d7e39ee nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x9d815a85 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dcfaf53 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9ddf7b72 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9df633ac __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x9df7a2be dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e3c6ea9 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x9e82bebf da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9e858d43 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x9eae08e0 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9f1491b5 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x9f289e6b pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x9f29601a atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f59079f get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x9f850d19 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9f8d212d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9fb9ebc6 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fea44c7 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xa00ec688 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa014c8ba pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa0408822 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa0c1038d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xa0c5e93a crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa127ca78 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xa14e5e7c debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1871dad ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xa190ed39 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bf7041 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa1c97e75 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa1f61936 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa23ef258 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa289e5dd dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa2986cd1 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa2a50d15 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xa2d15209 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xa2e67f08 acpi_bus_generate_proc_event4 +EXPORT_SYMBOL_GPL vmlinux 0xa300b70e hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa32455be fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa37ed2cf simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa38e0f13 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3e608b3 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f3b59b shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa405602b ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xa40a7c63 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa436ea4f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xa44b7bdc device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4bfe4ae fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xa4ca0d4e unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa4d0ecf0 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4d46c84 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4ec3ab3 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xa4f450bb unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa5098504 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5251153 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xa52f94fc inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa549efcc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa556900f blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xa59dd70b rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xa59fd87f usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa5b3a0ee __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa5c7c332 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa5e13971 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa5e6b601 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f12a28 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xa5fc00b8 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6657d60 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa67ab758 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a5e47c regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bc53c2 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e55334 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa70bcdf0 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa722a819 cpu_has_amd_erratum +EXPORT_SYMBOL_GPL vmlinux 0xa72ace61 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa73d8fac device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xa794a933 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xa79c7593 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa7aae053 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa7c46c01 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa80d6f76 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xa89171a5 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xa8b82a53 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa903f9aa input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa95d1cb5 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa99f34df attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9c76c6d scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xa9e7d373 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa00d43f fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaa2212ba power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xaa2558ac m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3f13f7 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa5336fb edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaae283b8 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xaaeeceee device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xaafbc7ff driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab10cb05 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab702499 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xabc47f60 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xabc62340 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xabd21d1d xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xabf8396b kick_process +EXPORT_SYMBOL_GPL vmlinux 0xac17da13 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xac7525a1 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacbf21ce ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xacc64418 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad2d8cba ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xad3609d3 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xad40fdfe crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xad600df2 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xada021f7 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb0d062 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddafbd4 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xade30625 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xadeef17b fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xadf0cd89 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae274bc0 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xae30247f tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xae4b5163 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6c4432 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae8a8673 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xaeeb2da0 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xaef9ea66 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xaefb4247 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xaf0b801d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xaf26fd5f gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xaf307d6e shake_page +EXPORT_SYMBOL_GPL vmlinux 0xaf31d33e apic +EXPORT_SYMBOL_GPL vmlinux 0xaf637957 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xaf6ef20d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xaf8abe91 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xafa2b7b9 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafd785aa br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xb00c10b5 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xb00e2b75 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xb03dbca4 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xb054a8c0 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb0650231 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xb0825a23 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb105827e flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1810fc8 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb192cb8e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1a2289d tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b6f73e ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d9ab66 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb202a219 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xb203b89d ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xb243a9c6 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb248be95 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb254bb70 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xb282a9d7 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb321e2b2 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb33446fc __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xb3480956 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xb363910f adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb376597e pxa_ssp_request +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b3dfda con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xb3e26108 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb3ff2987 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xb409ffd8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xb4167d0d xen_swiotlb_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xb4231acf ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb439f538 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xb4503f4e unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xb45ba000 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xb4bef133 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xb4c8b175 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb4d5ac71 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e3f250 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f45279 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xb50fe060 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb552c702 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb56481fc inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aeae8c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d8913d register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60fd2a7 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xb6120301 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6263682 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xb646f542 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xb650b509 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb69898f2 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xb69a0766 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c6c613 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb7025069 intel_idle_cpu_init +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7471f05 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xb75d662a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb76544ee stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xb7719651 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xb79e2aaa devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb79ff45e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xb7c0fb17 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xb7c53e52 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e2eb91 mce_cpu_specific_poll +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80790e8 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb80eabfd transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb821a1bd platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb829f06b user_describe +EXPORT_SYMBOL_GPL vmlinux 0xb8441e15 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xb8607c15 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xb86bcceb klist_next +EXPORT_SYMBOL_GPL vmlinux 0xb899c4a9 css_id +EXPORT_SYMBOL_GPL vmlinux 0xb8af2436 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xb8bc1156 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb94b6473 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb96b53c5 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a697c7 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb9aa7e2c bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bbe813 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xba8a0c03 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbafbd67d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb2bf763 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb6584fc cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb84cfe2 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbb969e75 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xbba26e38 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xbbb7ece4 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc17c32e cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xbc2bf721 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xbc406090 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7b41fa blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xbc9245b3 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xbc982eea devres_add +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbca61ff7 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbca8789c pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbce6e3d3 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xbd16aacc power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd3aaf43 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd50a4ef simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd63014c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xbd719037 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbe1227d0 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe299c50 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xbe8d59d5 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xbf556e6c usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xbf5b342e usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbfaca402 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xbfb57b91 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbffcb3b7 acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00c18fc tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0xc0255504 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc063d5d0 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc07b6676 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a1a069 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xc0b8ceae dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c024fe blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e507ad init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc1093c9c net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1198089 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1bb6b1d task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0xc21eb592 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc22387c6 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2400791 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xc241bd8a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2c2e7ef virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xc2cfa52a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc3002c10 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc30f0432 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0xc320c7c3 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc3241fdf md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xc34db662 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc395becb __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc39ffa8c skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xc3f61d84 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xc414b1ca dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc438063a __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc461b976 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a9944f ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xc4aa468c rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc4b15992 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc4b3fea6 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xc50c5f01 tpm_bios_log_setup +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc55c7e52 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc5894c18 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc5bab3fe btree_init +EXPORT_SYMBOL_GPL vmlinux 0xc5c264a5 amd_erratum_400 +EXPORT_SYMBOL_GPL vmlinux 0xc5c481fd transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc61bcf6b tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xc63dece6 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc668d946 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xc66e33c8 dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xc68a940c inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xc6907f83 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xc6f30226 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7014d70 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc726ad2c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc729f384 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d810a0 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xc812a1bd platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc816c21f ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xc81773ce ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc8359742 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xc8626e68 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8dac30a devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc925a431 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9943b6c proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xc9ba5e0d each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca1c7740 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xca64fb0c unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xca6c9d56 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad76303 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xcb0d6706 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1e53af register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xcb4027f9 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcb91cc6f intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcba7dd23 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc00f9de usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc31f15b eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xcc3da32d aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc980381 xenbus_dev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcc98b031 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcca7228f unregister_efivars +EXPORT_SYMBOL_GPL vmlinux 0xccab6671 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd05645e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xcd0f90d9 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xcd211b96 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcd6f993f usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xcd7688b5 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcdbdb1a0 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xcdbf8ea3 user_read +EXPORT_SYMBOL_GPL vmlinux 0xcdc936b0 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddffb1d xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xcdf23803 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce1718ee root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce2ba65b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xce2d6b10 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xce30c058 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce510e89 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xce61d5ea tpm_bios_log_teardown +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6eb9a5 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xce74b1b0 zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xce88c6ea devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xce9f70f7 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcf0821b8 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xcf100fb8 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xcf1f9cb4 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcf21251a seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xcf4970d3 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xcf6a9879 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xcf74aa78 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xcf86e420 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xcfa3fddf blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfda2ace locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06e8d22 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd10f0d27 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd13d7797 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd148f19e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd157a0dc ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1766c34 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd18e9734 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1f7787c clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217ce9f wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21efa4a usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd2281c9a crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xd26e4861 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2810fd3 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2ccc637 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd2d4dac8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd2dfb48a blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xd302eced aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e6528f hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd425dbef noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xd45c1222 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4790715 user_match +EXPORT_SYMBOL_GPL vmlinux 0xd486de63 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c2e5fb acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4e82129 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd549fb31 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd550560f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd5511928 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd599a8c0 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xd5a9533c crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cdeb00 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd5e98019 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd5ecf4c6 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xd60fde23 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xd617e4c7 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xd631ff0e inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xd641f29e ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f5217 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd68d5bc2 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd698ed7e crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd6a13c6f apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd6a7d1c3 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd6b24815 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd6ba6b91 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd6bbbf37 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c39339 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd6c82b1f ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xd6cc8992 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd6cfc5c0 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd709dc94 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd75b0899 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78136bd skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xd7858db5 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd790d6e1 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7beb852 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd7c1f3e0 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd7c99c70 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd802b687 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd808989e usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd82dd4f2 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd894bc3b elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd89d2c14 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd9184807 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd9413e9a tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd94f029c sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xd98a3611 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd98c8cd3 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd9a1d1f6 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd9b54075 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd9e9793e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0baa1a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda415c3f register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xda42a87f tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6b43d3 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xda6f3fbc fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xda7a5a11 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xdaa19eb6 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdabf2d98 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdac6aac3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafac86c usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb60c302 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8adee8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb999f7e unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xdbbf2781 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xdbe32de1 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xdbe49e87 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xdbf06db2 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc45d2e9 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xdc4d45df sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xdc5648da usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdc59a32f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xdc714560 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8beba0 xen_swiotlb_unmap_sg +EXPORT_SYMBOL_GPL vmlinux 0xdc90553a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9f6209 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xdca75aab iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xdcac6552 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdce57037 apei_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xdcf737ac mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xdd08a897 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd5afde4 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xdda5cf50 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xddb957ee tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddddcdd0 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xde3f2932 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde4a6114 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xde6f7f19 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde77dc66 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xde8f877f kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xde9f9b68 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xdeaca596 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xdeb588b4 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xdeb768a5 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xdedb8a08 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xdeed381e ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdeed957b usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf277719 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdf6a3bb2 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xdfa1fd06 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xdfa590e0 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xdfb812b9 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0113d54 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036e742 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xe03f8687 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xe04e37c5 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xe059f5ee tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0b375f0 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0xe0bb7499 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ce1cf2 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe16755ef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xe17d4227 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xe1d46254 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe1e8d2bd sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1f14e8d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe255f897 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xe26c4f4e fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xe276250c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xe27fa895 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a249b5 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe2bfdcaf pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xe2d47b16 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3175ac5 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xe322f6f8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3b29c61 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3c1d161 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe3f429d0 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe4122500 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe415aad5 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe46182a9 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe48edabf crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe4a1cb77 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c623bf cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe4e358c3 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe4e50352 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe53aad31 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe55da542 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xe5678383 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5e6ca6d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe5eb7b19 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xe6110101 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe6151585 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xe615ff96 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe63f1e9f unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe67c0837 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xe6838c76 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xe698819c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xe6c2843d trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe70e2514 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xe7210d36 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7454ea1 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe779f60b i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe7aa3b91 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe7c27fb3 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe7c76843 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe7ccbc81 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe7f0dbd0 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe7f90880 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81921b3 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xe8386d92 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe83fd09f inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8d88cfc xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xe8e58910 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xe8fa60e3 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe8fde8b9 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe98e55a6 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d4c86f inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe9ec3475 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe9ed7c9e blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea11fd3f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea193ee8 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xea209d03 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5e622f fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xea905975 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xeac23270 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaf82d2d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xeb23b48a device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb5c68c2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xeb813af8 find_module +EXPORT_SYMBOL_GPL vmlinux 0xeb830768 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xeb978a72 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba56eca ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xebd12e31 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xebd732eb srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xec1215b4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec20dfc3 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2e796b zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xec855cdf crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xec93c168 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xecf90bf6 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xecfaf32e crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xed030a45 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xed085dbf tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xed2e584e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xed342cca ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xed4739ad usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xed52f156 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xed5686b2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xed6818b7 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcfbf88 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xedf27dda use_mm +EXPORT_SYMBOL_GPL vmlinux 0xedf3f1f1 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xedf96f64 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xee274f97 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xee3307bc debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xee42e1c6 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xee4e98d4 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xee514fc3 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xee8b79d1 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xeeb23dba led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xeec24d31 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef22a49e blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xef23d470 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xef2c2b60 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef4cdeb3 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xef528725 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa06ddb sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xefa5e8c0 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xefb2550b stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xefe744e0 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xefef0909 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xeff3732b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf03a2f77 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf0673fdb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06c1cc7 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xf081f9e2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf0b91c90 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf0d4fe4e timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0df2f89 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf0f1719e crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xf167b0bb exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a2b3cb xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1e27e0f security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xf1f6fc44 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xf1fcd438 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0xf24916ac aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf28f76e8 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf327c7a3 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33efe6d inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf3a5ed1e driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e17223 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xf3f8fff1 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf441e749 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4af6ff5 device_add +EXPORT_SYMBOL_GPL vmlinux 0xf4b21f2e rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf4b79502 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4be20e6 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf4d00a48 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xf4d43d34 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fe3a2f cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf5189b23 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf53b24c2 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xf540b4a5 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xf546336c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55ca218 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xf5716d1f class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf57311b5 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a5e26d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5f424b7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xf5fbb7f9 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf640ebbf rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6550dd3 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf69e4833 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf6c76b07 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xf6de29b2 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70986e3 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf725de9a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xf72954d6 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf734f4ad ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xf7465dbe da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xf754fedf pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf7a14f56 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf80d5975 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf844d0a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf855c4ce usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8953afb usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf8db10f6 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xf8e3d636 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf913cbd8 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf93c9f24 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf9560d09 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf968174d crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf97adc16 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xf997d715 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a4eaa1 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf9b7594a device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9bf79a4 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2b763a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xfa31130a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfa84a858 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfb058678 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfb0793fd raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfb0f6764 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb130713 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb609434 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb818232 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xfba8b0cd single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xfbd7ac18 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xfbec18a5 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfec467 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xfc3993f0 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3ff3e9 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xfc69f2da pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xfc7bdd85 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca01d7e kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xfca46cd0 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd05464b klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xfd3da5b2 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfd450563 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd80e657 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xfd9177a2 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd93414f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xfd9bb286 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdd3c783 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfdd4df8a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfe07b816 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe152678 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xfe29f87c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xfe44569e rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfe48a2cb platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xfe6ba51a __css_put +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec7b2b5 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedc40d3 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xfeed4c9c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff10a9bc s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xff31363e i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xff35b84f fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xff583777 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f2b0e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xff8fc06e tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffafd93b hwpoison_filter --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/amd64/generic.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/amd64/generic.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/amd64/generic.modules @@ -0,0 +1,3481 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8255 +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi_ipmi +acpi_memhotplug +acpi_pad +acpiphp +acpiphp_ibm +acpi_power_meter +acquirewdt +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2016 +addi_apci_2032 +addi_apci_2200 +addi_apci_3001 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adl_pci6208 +adl_pci7230 +adl_pci7296 +adl_pci7432 +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_iommu_v2 +amd-rng +amilo-rfkill +amplc_dio200 +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apanel +apds9802als +apds990x +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar7part +arc4 +arcfb +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asb100 +asc7621 +asix +asus_atk0110 +asus-laptop +asus-nb-wmi +asus_oled +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c2port-duramar2150 +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcidio +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comedi +comedi_bond +comedi_fc +comedi_parport +comedi_test +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqarray +cpu5wdt +cpuid +cpu-notifier-error-inject +c-qcam +cramfs +cr_bllcd +crc7 +crc8 +crc-ccitt +crc-itu-t +crvml +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +cs5535-mfd +ct82c710 +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +daqboard2000 +das08 +das08_cs +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell-laptop +dell-led +dell_rbu +dell-wmi +dell-wmi-aio +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dme1737 +dmfe +dmi-sysfs +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-raid45 +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3000 +dt3155v4l +dt9812 +dtl1_cs +dummy +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e752x_edac +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +ec_sys +edac_core +edac_mce_amd +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +erst-dbg +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakephp +fam15h_power +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-cs5535 +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +gsc_hpdi +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-hyperv +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wmi +hsi +hsi_char +hso +htc-pasic3 +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i810 +i82092 +i82975x_edac +i8k +i915 +i915_hsw +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icp_multi +ics932s401 +ideapad-laptop +idmouse +idt77252 +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intelfb +intel_ips +intel_menlow +intel_mid_dma +intel_oaktrail +intel-rng +intel_vr_nor +interact +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvm +kvm-amd +kvm-intel +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lxfb +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mce_amd_inj +mce-inject +mceusb +mce-xeon75xx +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mem2mem_testdev +memstick +metronomefb +metro-usb +meye +mfd +mga +michael_mic +microcode +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mmc_spi +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-regulator +panasonic-laptop +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci_slot +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcm_common +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +progear_bl +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +salsa20-x86_64 +samsung-laptop +samsung-q10 +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sb_edac +sbni +sbs +sbs-battery +sbshc +sc1200wdt +sc520cdp +sc520_wdt +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-x86_64 +serport +serqt_usb2 +ses +sfc +sha1-ssse3 +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-us122l +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-laptop +soundcore +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedstep-lib +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +squashfs +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdfxfb +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_infineon +tpm_nsc +tpm_tis +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts5500_flash +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl6040-vibra +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +uio_pdrv_genirq +uio_sercos3 +uli526x +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +vesafb +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio_balloon +virtio_console +virtio_mmio +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt1211 +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83697hf_wdt +w83697ug_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +winbond-cir +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_uartps +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/amd64/generic +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/amd64/generic @@ -0,0 +1,13408 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x704cae34 kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/kvm/kvm 0xfc654dea kvm_read_guest_atomic +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/video 0x11b7838f acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/atm/suni 0xad993ba5 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xee70a59b uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7b8f66f9 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x078fc0e5 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x0c3caf27 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x132495f9 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x1acf466f paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x27f61d14 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2b8fc416 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3bb8d471 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4d079cc1 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x50726b54 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xaab5c02d paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xbd32d17f pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xf2dc20fe pi_disconnect +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x386b1b05 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4184f3ad ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x798f1367 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb2a8cb08 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfad7ffa2 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/edac/edac_core 0x345e9847 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e1bf88f fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x116e7cfc fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x14ce5d51 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2bd3919c fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2cb3eab7 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x44a62767 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4cd8a64f fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d7c2fe4 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f89257d fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5fe331a1 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69dbb03a fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7523b2ae fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a33fd61 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fd45de6 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8d4f3b9b fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9168d7c1 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x985b7dc1 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa4c4a96d fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa65c9ea3 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8d03f74 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb2330c5f fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb401af87 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc9c872c8 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9139544 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xea6ca475 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb9cabbd fw_core_handle_response +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00d48ce4 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0190d8d3 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f2819e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0252f094 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02e0a57f drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04317560 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a13745 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07b21e9f drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0978ebd6 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a625de1 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b31e6e6 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cb22ad9 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0df299e4 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x109b8b26 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11111421 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14975983 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15095085 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a755ad drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x190db831 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a1ba983 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a31b3a7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b1b1c67 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b9231f1 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c5384c4 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d84edeb drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e2f16fe drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x221e0b5a drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2335d085 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23d355c4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23e48bda drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2595ef9b drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26196c49 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x290bb97a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b075b63 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b7ce4be drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c7c9087 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d358482 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d3a8127 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31457886 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31705c18 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x319d5bf3 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31dec62e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3211bce1 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3225b713 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x325db22d drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39ad40d6 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aa10b2d drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dbd50ce drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e91dae8 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4137c393 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x413ae33c drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41781497 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41a493a0 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4277b9af drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42dc8622 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45db64c1 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45ed7110 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x483a0098 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48bbd498 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49879807 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c1cd2a8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ecb6748 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51398759 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x542c91db drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x576d8205 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c731c9 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x591ef74a drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e9265f drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59f02411 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b530661 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1f7084 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ed9d210 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f63c102 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f77bef6 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fb1441a drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x601115bf drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61611174 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6210a643 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62b0326e drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e8d54d drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668d0476 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6696518d drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bef2676 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d9eef91 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e49ed28 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f022f42 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701341ac drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e3d610 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72293c67 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7229c812 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72535a1b drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7288e1af drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7603c921 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x762216af drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7760f2af drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x791faafc drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79cd2b04 drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fd49c9 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a66fd05 drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cddac3b drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eba51cc drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7efa5483 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x810eced6 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x817614bb drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83aeb51e drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8845e8ee drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89462ee2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b5fec7a drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bcbd9e4 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ccca821 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d6b61a7 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8df1e28a drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fae72bd drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92e22dc2 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9419f568 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95611e1d drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97d28808 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9866e2d8 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a549722 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2e03946 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa44ac645 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa93aa294 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa369486 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacec3ba9 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacfbdcf4 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad02cb4b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad6d3bf6 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadf7c28e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaee8b648 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf3ae061 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7ab496 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb05ddb03 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3372131 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4fbd63e drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaa5a8a9 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbabb3244 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe48c8d5 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc92ee3 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfcf0718 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc07a2ef3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc264128f drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2a11df0 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b90d88 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2dcf5f6 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc362d2cf drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc55af619 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc55e610f drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5e44a9a drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a004dd drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9bc0133 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb618138 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbeae35b drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdac27ca drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcea51adc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf9888ab drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0db0e33 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1ae9331 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1aee74f drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd21577df drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd307e4d6 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a20874 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4e8530c drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd524a5f0 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd643469e drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd68d40a7 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6b7e994 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6f719d4 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7f3fd55 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd95fee70 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb219f49 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1a5fb7e drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3b706f3 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe66f0b18 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f0259d drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7f5b82d drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedc12f1a drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeca1dec drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef2fc2c drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef1640fe drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf090822e drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2929392 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3476d90 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3b2bbb1 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d97c49 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6615736 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf662c9ad drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b043c7 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf90f40b7 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9787764 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9d91d11 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb277931 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc3461e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd3d36c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe070d0c drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01e0c8c9 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x050d0d7a drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08e5c08a drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08ec0d93 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d3c2c4a drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a34cdb drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x301c2572 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30b2b305 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32c258cc drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43492a48 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fb120c5 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67604d6e drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b39fddc drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7908677f drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ab9fb4c drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7addf335 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b1844df drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8019fad0 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8daf505a i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaacdd438 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9f8aa46 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc722234d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc80d5123 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda1c07f3 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0e4e557 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3d26d60 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe84586c2 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee27447c drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef704217 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1b37b2d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9c18e3f drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfce888e7 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7776d114 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xbb0204f5 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc81568f4 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02fbb5cf ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x067a8716 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b5bc37c ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bbe2446 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ff11a2a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x163bc1f9 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2551fe26 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2960390c ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2d798f9e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x356488ca ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a0782fe ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d12d74e ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4214a419 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4279ef25 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4677d6f6 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4817fd09 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ab81e62 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c07862c ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54707f7e ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54c29a40 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57a36e7e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x58866c0b ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59601168 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59d28021 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6693f87b ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69583ea4 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a8bcb89 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b4967e0 ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8349936f ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a3899e9 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d5016bb ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8fdfe2a3 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90839ee7 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91d17845 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92bf42d1 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93c96878 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96851115 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bae77fd ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa80ddba1 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab312393 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb1ee5273 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83e9624 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc13b38b4 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc43a7544 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6485913 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc1e2b72 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5755e32 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd690ef85 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcb1ed0d ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddd3dea5 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3397ab9 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5647f01 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeca8b597 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed195eb0 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedd17b7d ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf04adc04 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf32518ed ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb0c4733 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x165ccf9f vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc6337122 vmbus_recvpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x70477e79 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x620dd3dd i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbb7e36e8 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc343ba21 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa45fa960 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd26a55b1 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xcc1d9d26 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x08705ef8 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x099945fe iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x1941d8f3 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x1c57080a iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x426d46ad iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x44466f3e iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x46a92a7b iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x51feb58c iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x5208aadf iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x60adaadf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x85fa4694 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x93c470ce iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xaee6e304 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xb1c3ea14 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xb7528ea9 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc2d64047 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xcba97f36 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe0deaef8 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xe613aca5 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xed4a73d5 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf365c51f iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xf6591620 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xf7633019 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xfe372ebc iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x1724236c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x61990c52 iio_kfifo_allocate +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x2107de5f rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6f6ee97c rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x807b9dd1 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ef35bcc rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x029e4572 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c75e481 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x194cc97a cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3fedd050 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6ed68d46 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x807e0ad7 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x91229f2c ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa396795c ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa434ef4e ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa78b456a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbc04c674 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd0892ed9 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdb3b39ca ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe69798b4 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe70606e1 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xefba461b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfe9f5254 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02512053 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ace3380 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cfa1661 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18f7623f ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ec62c82 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x236aea20 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26a38c9c ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27adcaaf ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x295c77a8 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3022f72a ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3289e668 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33584d4c ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34302829 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34a07336 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e89d421 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41d994c5 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a667b19 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50336aed ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50e02830 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51ede434 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x537183c2 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55fb70ae ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5711b71a ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60767fa5 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x619a818c ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63430394 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x641c9fa7 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65d5ec44 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d4b7863 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70be7bd2 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71a68621 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ad82b08 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ef7cf74 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x824b9ddb ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8447bc36 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85bcb412 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x867d00af ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e73f682 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f81eb35 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x901118a5 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x913a534f ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96a9ef8d ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97413805 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fe95656 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa47a7575 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa77b5cac ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9e63d1f ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae55eb0f ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb09f2752 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4308c28 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8178eb0 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaed4861 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc37838e ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe9c6400 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc37b13ec ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7cec377 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc88a49aa ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc65aff1 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2dbbf5b ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd53e0943 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6df2ae6 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbe4b034 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdcdfab50 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde8a1d4d ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe839e9cb ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb7cda19 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb891716 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed7359da ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefd8442f ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf61442ef ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa40d38f ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbb8cefb ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x02b58d68 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x337016fa ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x62e72314 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7440aa7e ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8e29e91b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8b8f6d2 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcc13185c ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcc3085bc ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd2a017b ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd7c2f8e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe5370d06 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4bcdb66 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x28eba257 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2a3567b3 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2fd0e42f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x564c1285 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x56fae829 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa2d211d2 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb442e6e0 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1955a3f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x022fe813 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x07694842 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x615c5aaa iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9ec312ce iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc38d6695 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc5f9327c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdf8c44af iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe3b95407 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ee34bf0 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x220fa772 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x253789d6 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x277c93e7 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x436fc5cf rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4c1b9b29 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x74c5981b rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d565fd2 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96f9ef69 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9f2d4fba rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa65fa81e rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb6f7e66a rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc46da5a5 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdcea6fb9 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe22e0bb1 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4ecdffb rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe67f5714 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe792dad7 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe9828041 rdma_init_qp_attr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x030cafba gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x186cbd97 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x25dbcffd gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x27dd4371 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x58d5aef1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x886a95a2 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x963f2fc8 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb50bc520 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe9d593c9 gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x581b89c3 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc8d38b98 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe0fac8ea input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe1a7e2ac input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc7494afb matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9643b24f ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9cf66ab0 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe584a437 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf14fcb9d ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x1342b92e cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x162e60a7 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x38ed715c sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3c08cf71 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7213749c sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbb1c048f sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf589fb3e sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x44f9aadf ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x809bbd43 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x0cdf60d8 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x153eec93 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x201fda36 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x6e436499 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe315f1ca amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe9225150 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0x32a830c2 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x44241022 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4ac98864 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x52ef1025 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5c5148a0 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6df3671e capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6e01e42c capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xefa345e3 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf39f397c attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf99e6d43 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0012d705 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x17084ae2 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1c3c46e4 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x35d75f80 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x53d1e092 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6dde9c0d b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x82551134 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xba97cf03 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc0f26c37 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc1362bc9 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc5588b10 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc860a3d9 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd59a80b5 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd896829a b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe7fce37e b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0358753a b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x145a4560 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2fba8d33 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5e887e6d b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x69a89dee b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa471bd80 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc83a6561 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xefa3d88f b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf7360e13 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x4cb2ed65 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x24e9b283 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb38a47d4 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc5e93393 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc64e0318 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3c89e1dc mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa1818943 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 0x7181987a 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 0x13b23f92 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x692e8456 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7af38fd4 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa95968b8 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf65cd196 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1a43771c isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1f765bf6 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x450c7530 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 0x009767bf recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x090ea0b5 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12723121 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x14beb1a4 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x306bd873 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30dfd6f7 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x35e7d1ee queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4b1e51cd mISDNDevName4ch +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 0x56b03c43 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ac27216 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7e4bda1d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x85313743 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x85d56382 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa1589aa9 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa2f74137 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xafca01dc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb2ef85a3 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc8347ba6 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc99b10c3 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xced27d87 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf09808a4 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfad93487 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd0dfe4e mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x6ba056aa dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7325169c dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x795b39c1 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf59e3aa5 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07a8fa29 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4f0f089f dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x63f1c83a dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8496944d dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbea3db39 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfc9cc761 dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0x106c82b7 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x88f8fcab fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x7254226d max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xc0cba181 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x66222de4 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0x400612a2 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0xe1df9b6a mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x0f6fd3f8 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x1d7abeea qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x2d028570 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x777d57e9 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0xabb59980 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x80ebb014 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8a352e57 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x5d310ae7 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x0046de25 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x03c5fbbc flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x085e6b7e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x0b92cbd5 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3565f508 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x445fe2a3 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x511b164f flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5293694d flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6155de64 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6f4a2040 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x83906f57 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x884aea8d flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x99baf53e flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa02ee376 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa2a5c9ba flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xaa210ff3 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc6072c40 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xcb1ac18d flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xcb64235b flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe7410995 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x0e83486e bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x983bda3f bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x9bbb2e29 bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xf1147ba7 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0220eaf5 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0b65620f read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0d600d02 dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x58696a50 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x88752f10 dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xab3f109d dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xcb7abfc4 dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xef34094e write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xf8dc2d5b dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x04f1f428 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x02493e5e dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c651bb2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1a57c065 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1e02e94e dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x23f87e31 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f324540 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2fbf4aff dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x398aab01 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x39fcbec4 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x40f8fce5 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x44420bb4 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x48824cf1 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5cd2abc3 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5fd0def0 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x64d6d7a9 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x732e63e5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7b26ea73 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7daafb2d dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x887caf4f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8d0df2a1 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x97a0d2cd dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa2a65e70 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbe8a7f84 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc64f99da dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xca4965f1 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xce48fbfd dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb549983 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe010037f dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe15697bd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe88290a9 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xeb983226 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xecaafc18 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xefcef46b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf23798e2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfcdcba2e dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x12fce548 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x335d7630 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x64f058fe dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xaf423726 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xbc6822f9 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xd50714c0 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xdcd391d1 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x8d55bef2 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x26593cb0 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x326eb3e5 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x4239252b dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x661c2c0d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x6a9ed319 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x7be4303b dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x85b64711 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe51e3466 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe8a24446 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xef990d8b dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xf7fd73bb dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x065cd29b a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf2388656 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x91a58608 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x9a9be803 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x140f44ff au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x1e4986b3 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x340f13f5 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x921bf06c au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xa8d15889 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdb4ad0de au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xe977cd49 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf93ccc84 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x840acf99 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0xd8671e97 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x521ef1ba cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0xcf1fa097 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x1db19c24 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xa3445c40 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xc743c754 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x47bbaf05 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x39f0f9d4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xfce51d18 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x2ed5b2a9 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x23435e09 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9631cd08 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x972dfb72 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa29ec4cb dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xcdf324b4 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0205d4f5 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0b1d507e dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1f42375f dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2d9719b1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x3d860392 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x41ea50f3 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x5bf8a73f dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6153bf22 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x67b58c75 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9b89885f dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbdb02fa1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc17361ab dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe85a6542 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xeb214877 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xef5385aa dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xb6e3ac99 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x382b079d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x41b54f31 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x80aaa865 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd0a646d4 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd652cb66 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xfa86e5b0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x57ad5998 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x60826d04 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xd4fc6359 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xf57ea183 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3e5c8c61 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3ff4ab98 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x4597eaca dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x53159ee8 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5802c03d dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5ecab922 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x61965c32 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x65cd7696 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x7a405af2 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8ab6cbc7 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9dd7aa07 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xcb0871b3 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd7172897 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xeba0ad47 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfebe0966 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x015895f5 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x04ac3ade dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x098c9fbc dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x09d70fcc dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x16e25361 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2b9d6331 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x377f2eac dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3887beaf dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x68305433 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x6ab371db dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcf559c0a dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd01f76ff dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd5f04ecf dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe0f0e086 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe1c8460b dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xeb45a939 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xf984c5a5 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfdbe9109 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfe85bc3f dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x0dc78408 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x2f1f5f67 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x3f2d424c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x6f3951f0 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbdc73519 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x60051622 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xcf7fda78 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x6902923d drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x9ebaed03 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0xac4739b3 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x8cddbe0e ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xd4704356 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x22cd3794 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xe1f63195 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xd6e4208f it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x8bc5e3cb itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x38d94280 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x44d1855f l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x80e512a4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0xff64ad58 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x3ebe34fb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x414344a9 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x107b346c lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x7b299b6c lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xf83c38dc lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0xd13ebc5b m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0xef34a33d mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x34e61536 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf58b6e37 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x48fe62f0 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x61bd6181 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xcc7a8076 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xfdfae414 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xd66ce30a or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xb8d8c397 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xc953742e rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6bbfed23 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x88d72d86 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xc94c8a8d s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xe979c245 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x9840e576 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xedeaa12f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xfac4af58 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x5d6406ed sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0xf744678f stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xa12cf100 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x0299cdf8 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x0ed8390a stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x0bf71d67 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xfab53675 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x4a5c9284 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xd0960aab stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xe20c8859 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x4bcc585b stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xbde43359 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xf6d57009 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0xd6b12f3c stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x6dee2cc7 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xf5d71cd3 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x151996b9 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xac6a9372 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xcc53dafd tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0xbace4b81 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xbce48f35 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x7f6e75ec tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xdde64cfe tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x90b3ffe9 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0xd588a583 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe9e0e0c5 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0x61a68b1e ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xf67d7c1d ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x6cbd6b4c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x8a1b0188 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xd7adde20 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x34ccbe69 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x07c4ef63 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x2c03eea9 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1f4aaf55 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x589c6854 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7daad4e6 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa9fc2688 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbb83422d lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xebb5acb6 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf3d4502c lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf6f0e68a lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x82513eca ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc2d2950e ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x09331f2f bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x2f0a2dd0 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x994a3dbc bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x85f5763a btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe99838a2 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x101ec3a3 cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x61edd40c cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xa37c128f cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xb6015991 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xff29de55 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x863f1e8c cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xd9032616 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x17a63b82 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1a0977e2 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc90f48ae cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf814b766 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x518bb671 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x7cad51db altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xbb85a33f altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x082186b0 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x2b8801af cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x6e82a99c cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x95fda46b cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xa3664c4a cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc37c1d10 cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc791e80f cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe144af46 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xeb8460f8 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x8a6a910a vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xb2918d67 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x0fa132d7 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x5ab0a152 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x5e33cb6e cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x9aa04e59 cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xbeb481d9 cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xe27e6498 cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x21232226 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x6b4f2fbd cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x6e42a93c cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x7f1ea8da cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xc8737c83 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xd9ae5b85 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x00803e46 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x10bab006 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x18bb985e cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x24f81c39 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x29c3d958 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x355d93da cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3ab3d684 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x41286e01 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x59d8b050 cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x5ff13652 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x756eef91 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7e03f184 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x82641222 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x82c0c531 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x8658e372 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x8e5d42ea cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xc81a9f73 cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd0fff606 cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xe1a6786f cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf0aee41c cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf7ffccb0 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xfa03e652 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xd6173a80 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xf949c90b em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x273e9ceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x377b4185 gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x53941dba gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5731b8dc gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6c89d6cb gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84167154 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8da6bd0a gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xd19089f8 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x2ec70727 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x51b2fd9a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7156c729 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7439736d ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9021974b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9f992eee ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xae0218fc ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xc7acc215 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xda6ff129 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf229bb99 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf3b83bfc ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf48b7127 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x183af8ce saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x437ee1a0 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x4cfbc1ca saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x51541195 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6d0efaf9 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6d8f95e5 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6f1ecd90 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x72fd481a saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x757f26a9 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x92f8b490 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcfb7b5a1 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xdb037c6d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x28ad4500 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x69a6cc81 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x8012af14 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xc0af4c0d soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0xdb4fa37a soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf8cc832f soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x9cf1a729 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xd3090060 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xdf2d179b tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x60b29e5d tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/tveeprom 0x9db8f9fa tveeprom_read +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x51a3c3ba v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x527af4e0 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x49fc01b1 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xb0008df7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xdee72717 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x384954db videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x3c6df307 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6606421c videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xac308b42 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xf24bf0a4 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xf337289b videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x9ae0c2b6 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0118764d v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0b939453 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x0cb570e3 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x0f7cdbed v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x120a3f7b v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x12ff6538 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x130eb308 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1d2017c9 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x1e975c0c v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x22d0c125 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x23d36aa6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x246c7c4f v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x27c91e1c v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x377611d8 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x3782f4cf v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3a7e256e v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4476e3b1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4b5799be v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x4d1a2e6a v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x54c7dacb v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x57f00317 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x587707c8 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ab27f19 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5bfe45af v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x6cc0fe76 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x6dbe3f8c v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x755dfea4 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7d75c602 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x8498825a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x8d4e06ec v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x953461b1 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xa6b22851 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xaa8a898f v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc6865375 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xc91518e3 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce77e1e6 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0xd0fb69d4 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0xd151dd5d __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0xd4976ad8 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xd7c2c611 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xdf262b71 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xea036931 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xf6cd429e v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0xf8c65d34 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x066c7e7f videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x4ff81c2b videocodec_unregister +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x890a7073 videocodec_detach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xffcb68b1 videocodec_register +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0448b141 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x04ce2b89 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x054d3945 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x26d00cfb memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6cac1259 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7f1ebe3b memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xabdb0973 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc32bba09 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc907b6c7 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcca4e848 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd1665109 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfb66c10f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x06b79fe7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0b9bb315 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c2862d2 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0d21ef57 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x108b62a5 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a87fef8 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x344f87a0 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3bc23971 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x40ae36a9 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x43371233 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b8fe19c mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4fd9000c mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e50d130 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63a25c87 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d4dc4fb mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82490341 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8288f5fe mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x862926c7 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x86fe2fbe mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x92ccece7 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9f3ab67e mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0569b8c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb0b7170a mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb0ca8638 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0cd5d20 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcbb838a5 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe04cc9f9 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb2eea7e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfaed6841 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x04f2e8c1 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0744a9e9 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x202e41c3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2358b184 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x30f538a3 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x348d46e5 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c044db9 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f1f99a2 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5198452d mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x69a46d69 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6b4e438b mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6db47009 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6e7c5e92 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x720fd067 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x780e183e mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7860e412 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b09db72 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f76a25e mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x828d78b2 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x84917d85 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8788fc0e mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcabaf24b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcdf32f41 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd742fc9b mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe42ada18 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xecbb9a01 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xee482d60 mptscsih_event_process +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x054f50c1 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x12889b59 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x19423bc8 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1bcb1765 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x21e0207c i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x267fdf3c i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3005e04c i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x381cd76c i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5f2f42c9 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x60afac38 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6cafe9e8 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f5c8ab6 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x76dfabab i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9ac207df i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbc1dabee i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc896911d i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcb38befa i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe98b0dd0 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xed43e28d i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf2c49ce8 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf6fd2800 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf997e364 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0a3e46dd pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe6186738 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c6cdff7 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1f371a53 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x22b7264a mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2b1c0645 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2c910cdf mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5667b336 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x671fbd1c mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6d6c21e5 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f60ece4 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x74d38bf0 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xab464941 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf5326da mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd1ef3948 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/tps6105x 0x13d798bd tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x77328ccd tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x92d7ef76 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x34052b07 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x71b25a1b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x3e6bb317 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xbce194ed c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xc81ebe2a c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x24eaaa69 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x3a799d99 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x1f0b8491 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x30e1612e tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x3239545c tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x41c47919 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x58ec6770 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x696fc704 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7894d9b0 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ae9adc6 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7b98f5b0 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xe4cf5293 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe98801a5 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xefd26b17 tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xd5d0a059 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x09a19c6d cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0f28a443 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5c4a4c52 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x050680c9 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x42e14363 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x83843a1a register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe024371a map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x34d47011 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4801eda6 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x01c346fb simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2da093dd mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe56bf971 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00ccffce nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1e8d7538 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x451dd409 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb77c964e nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb7b554fc nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc2bbe723 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xeaa59a46 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3ddc1d78 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8c2ccdf9 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdf5ef346 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdccb74de nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xe5dcce4c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6d7a46a9 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xaf3f2f27 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb9751c86 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd4029f8f onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1793334e arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x25edbfec arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3e3b0373 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4c11b6a2 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x593ec29f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8264b623 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xaa455d5a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd7c5377d arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe3dee838 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe495e636 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8bd5ca94 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xb0bbaf81 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xcda4042a com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x23790aee ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x338daacb ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x73e21c6a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8644890e ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9be52a19 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb205e0a7 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbb74b173 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd428b484 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf2ac71fd ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf6ceb950 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0x46e408f7 bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x67785580 bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x0a83205a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x07a4c449 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x16ee1e1b t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1f153d16 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2aa615b2 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3f75fd22 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x58d8c2fa cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x598b7eb5 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5f86cd45 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x676f6997 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x778157a5 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x79f55031 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8991c50d cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa09250da cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbc649efb cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd6d0f36d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd6fa76cf t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02409076 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41ecc1b7 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x47cd9bf8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x484f6d21 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4ce00fc9 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x550c3b32 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5b55176e cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5eae251b cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x618da1b3 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6501832a cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cbdd3f5 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b59120c cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96f3194e cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1c89d18 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8092846 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc8427d31 cxgb4_flush_eq_cache +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 0xe82080f2 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xea5d7c13 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef5a03fc cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfae66a38 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2e6f7720 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xd11cb04b be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f7a0a36 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41907d85 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x922d947d mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x928b7a71 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e2129bf mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa20422d0 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4f902ec mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc72ed6d5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe95323a4 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfda70b4b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x706d70bb hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x70ebedec hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7c25f199 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd5b07445 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe430e39e hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x66856d74 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x82f7e2f7 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x853d807c sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x89766e2f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9071c464 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x918e4cec sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9dc7f419 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec68dee5 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf9474660 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfc697032 sirdev_write_complete +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x86c7747b free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xc740f371 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x20ac075e pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x53e3c08d pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x60dc3db1 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xae420b7b sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x203be42c hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x23956e34 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x363a226e hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6b1739f9 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x733efb85 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8ab73532 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x92fc6eed register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc5b52ec3 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcb25eadc detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd289dc5d hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xeb4bff6e unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x6912142f i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x55378006 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x62015001 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x9b33eddb init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00e611e5 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 0x6c1b403b ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6e40d33b ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x795c7fd4 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7f0eeb40 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9038bcc8 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbbb2df65 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc40711df ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc71b77cc ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe91d672a ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x07357738 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3dd106e2 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x482accec ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4d1e625a ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x536040cb ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x71483f63 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x835e28da 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 0x99d6f923 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa0f1aa96 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdbe9ee52 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x225ed756 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x264c47b3 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb5367518 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xba6ec4ab ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0027983d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0093effe ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x038ea925 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07627d0d ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07658c90 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07be59af ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0863c504 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x086f1c3e ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b2a2a2b ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c258990 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d6f401e ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1184b69a ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11e669ed ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x124b106f ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16e97ce0 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e163f07 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x233ccf7c ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25a1d49e ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25dff445 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x262161f7 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x273fedb9 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ae04054 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2fd20a4d ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30157571 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x301d634e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x393de91d ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bc493f1 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bfc412c ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c1a0ec4 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x410aafd4 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4244b3ec ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a276081 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ef2bda8 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51ea6ff7 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5986a88f ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a920651 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c837abf ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x606134fb ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x613d9eb6 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61ebd86f ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x636f5684 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65929d11 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66859a15 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f742a7a ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x735bab01 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74900eb6 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x769fbbbb ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77b44ddb ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x793ce39b ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7faf7d55 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80f43613 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81cccb64 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x868a9f6b ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97109043 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97ad6d47 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x984e84cc ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x987d8627 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x994faef4 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c3122fe ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cc88668 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d423bc5 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9efe654d ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f8e729b ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0bc98b8 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa150ab41 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa20c57cf ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa390675b ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3e9a54d ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa48538e3 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5cbf59e ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb01e5bf6 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8b28809 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc7298da ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbff6eb9a ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7d88ffb ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc7a5164 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdde6cb39 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdff9ae45 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe083e80b ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe34def1b ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe38f4487 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8cd941f ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9466b41 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2f450b9 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf55fc188 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5c1c590 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6368ad1 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf73b58be ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbdd7cde ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc0c5343 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd89bd01 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdc96986 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/atmel 0x429b64f4 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x76a1fec1 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x8ae41b28 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x59a72d0b brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x61d190fa brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0549b1c2 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0a440dc4 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2727f178 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2f765e7b brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x37695920 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4f774452 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5e8c337c brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x94b46d67 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa920936a brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd332debd brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xef121078 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf7631b02 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b4a715f hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ca6619d hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0dac565b hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f5bfb0c hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0fe7a141 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12e8c678 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1b1d3569 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47eb9ac1 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x50dfac27 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51a1fa32 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51dfa69f hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x559ff7e3 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x56db7a36 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5a55b67c hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5c5ccc20 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6533aaea hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x681d8dfe hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x76fc4adb hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8a2df9ef hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x92c15b89 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa87fd36d hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb01b35d4 hostap_setup_dev +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 0xbc9e035e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc1ea950c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe05cae91 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0d15110a free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1d1a21f2 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2bfb92e0 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3ae35f2e libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4167864f libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4cb7df4d libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4d65161c alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x58c6d174 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x66707654 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x68d73988 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6f730d4a libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x76ed4191 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7d92e531 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9beb5927 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb21b76db libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8643374 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbb2d17e5 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc568f493 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec4dcb8f libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1bca3da libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfab07195 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0108deb0 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01173cfd il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0336d242 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05c4b899 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07ffeec5 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08553daa il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08d62bac il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09191fe4 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0980de87 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11e10332 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x128c8393 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1311b6e7 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14155fc7 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x145c7766 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15a80612 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x181faf0a il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x182917e5 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x184f711f il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ccadc36 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d40e9ab il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x217be328 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26b6c915 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c7f9377 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30c76ebf il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x324ae830 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34d25a5b il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35ddafc3 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3719dc1c il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c28b49b il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f16ddab il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x454097df il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x462a5fd4 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ee0425a il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4fa14606 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53154850 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53f7e17f il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55cfdd15 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5683c36d il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5924c860 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5de4d36d il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e27483e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e7a2cca il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61cb21be il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63239a07 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64e5b583 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a489f77 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b9e07e0 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bef6342 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d160461 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70cca8f8 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x748d68f4 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x749dda37 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75599752 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75a918da il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a161561 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b31f80f il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d8263b1 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x816bba05 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x895c0e78 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d15e9b5 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e87c083 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f714804 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9351711f il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98e2166f il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aef9435 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d7b3a3b il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e388aea il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa12a18ba il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa67eebe4 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8f7b3a3 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa920c982 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9671b22 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaac63305 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae5de63c il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae8e154d il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb83332c8 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba099f1f il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbe73212 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf83f63d il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc389e49d il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6ad0fc8 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6e8dcac il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb089c6c il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd051c6c3 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1571875 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd206adaf il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf959cc1 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2bac788 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3663361 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe37e00f9 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3d9ca5d il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe65eb61d _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7f97807 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9c42c63 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0c9d79a il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2e9dc06 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf974a437 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf98642d7 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x06a585e5 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x168d9aa1 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x175e16ae orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x22516810 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2b871e52 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3134a4d8 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x316e0f14 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4f171a68 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x60f0d1d4 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6668f259 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6ef88e7d orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb4712e08 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc24dc6b1 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xce243b2e __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xda162acb orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdb0cbd65 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf6ee254a orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00b4d605 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0df9b900 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ed82582 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x13f3d716 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x16241b9e rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2ab10a34 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2febb99f rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30e77595 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b1b7348 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3cdeee50 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x460b872c rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48756169 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x531ddd35 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5c676497 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x668c8da1 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b78c465 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x779737b9 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84e5533f rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b4459fb rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d031eb6 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8fd23ecf rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x965e99f2 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x984bc799 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa34d997a rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa3ff7f71 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3570a18 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc143107e rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc38fa825 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc84e1f75 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc85a6824 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd020f4a7 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd1deb559 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd872aaf8 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb7a2755 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc2ac366 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe3017dc2 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4aef482 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4bc303c rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xedb9e4af _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeef978d4 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xef593f25 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf54a1f87 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x013fbdf8 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x06ba6f0d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x10ad3027 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50609df2 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x546a8299 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5500c604 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5b0ea358 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5c73ae2e rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e5b011e rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6fd63640 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x750ec313 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x797bb910 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7ac489f5 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x85abea77 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8e60d01a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa2db6c76 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb6b615f3 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc5a5a356 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc94d065b rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd237d68d rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdd58fa86 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe05f7315 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeba9bccf rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xebffd2ab rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6e7f4cf7 wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf8979e82 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x04ac10e0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x0d10a4c3 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x26777fe8 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x3a202d19 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x3def3a17 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x3fd21107 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4cbab13f parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4d165c85 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4d6cd63b parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x591268b0 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6011fa41 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x60adfb96 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6ff5f4cc parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x81420ac3 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x81c61952 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x842accf6 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x8e97f1aa parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x97386444 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9af44caf parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x9da575b2 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa697d7f6 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xa8a2a0dd parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa9bfa952 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xaffa0a94 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xb53de7e1 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xb9f08bee parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xba5deb8c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc15617b8 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc9a7b9c1 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd2c8e66c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport_pc 0xa958f5c4 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xaa52af59 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0462ea88 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x19b90b55 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1df711ff pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x258f8d2b pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2674e871 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x43afb8ef pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x44124f2f __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5ce8c9f0 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5d375018 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6fce9e3d pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8660d7f6 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9f94f925 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa03e14ec pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc1e7cdc7 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc24bd382 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc9394754 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe8b2f6f4 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb6dbffc pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfca96a39 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x05f130a4 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x091879a2 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x19c1c5bc pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1c5faedf pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x23f6784f pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3ec6e0f5 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x504288f7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5337259f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x65cd48af pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb62852f8 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcfe267cf pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x079d392c pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x93a384f4 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xbed13272 i915_hsw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x15637293 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x44e511ce pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x4c71de4b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xba4f01d4 pps_lookup_dev +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0x852b252e bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x191d7980 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x35565910 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3879bc41 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x62f96004 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x73266f6b fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9655a853 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9b1b6c58 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa8c3bb9f fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe4428d3c fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xed6666e5 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf861dfe9 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x03e8de52 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08762b0e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ab60eb4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11a1db0e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148b8b65 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17039148 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f44d881 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21644ff7 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2657ecc3 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2e2bdb36 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ea38f1b fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x333b85de fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44582205 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x494e3b4d fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x505f962d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5105ad22 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x52b19246 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ba65d4a fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69a40790 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a1b19b7 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a958101 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f1791b8 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x741c4996 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cd0a5f8 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d5c65f6 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x873c250c fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ecd7778 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ff70ac1 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92a3cb48 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x943ebfeb fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x962d4127 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa88bb664 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae133f32 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae164663 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaeca5ffd fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3fbd502 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb432a6b1 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9c68b30 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb8c1e50 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc9ea96d fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0d74753 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca2ca7ae _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0add0d1 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5f923e5 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7312cd4 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9ff446f fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb142415 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee04075e fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf22366be fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8bdb980 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x63486ccb mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x032e0d58 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x04e7043b osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x091f3b04 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b8e4b7b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x193a1a57 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19475678 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1e68cd4e osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d3cbd72 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35b46f1a osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3c1e1706 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ee23dbe osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x439271d8 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x484c0fa3 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e22f1bf osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5590c732 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x567765f1 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5dcfec73 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x690307aa osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d83d2cd osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72cd7b4f osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e1e2b39 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x822096b6 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9008015d osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x92cf16b4 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9855b99b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a97ae75 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3bffc10 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb4dfb0cb osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5d21477 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb81d7178 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2aa337b osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3397e49 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe620e129 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea06ec34 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf3496682 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf79b3fc7 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x34c48e9d osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3bed49fb osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x56beb56b osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7c1338b1 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdc1f6564 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe57272c2 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0c6f1bd5 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x193ef0e0 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x46523d17 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4c0d68cd qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x642f8810 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x663b7bce qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x84cdd8e7 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc3659aee qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdbf7fad6 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe0b75f3a qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf8c7e96f qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1240acad qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4008288a qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5c41ec7e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x85132e2c qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x96983eb6 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdf97e6fe qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x45279e0d raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x49c7ded5 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x8bb3eb62 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x01035e68 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x10a19fef fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x14d08852 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1e7dd063 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d966bb3 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x75f8bd10 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7d61f846 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x97bb4b31 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb62f22bc fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xca2b2191 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe8ffac7b fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfab57dd0 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfad8cd9d scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x15e12094 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21e97f09 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x277f8928 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44ab6617 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4826d713 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5291dbec sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x54e02362 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57808429 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60dfa3bd sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x624bd929 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6458e778 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f2bccdc sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7f0d1578 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96fbc2f9 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa24c2fb5 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa777a636 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7a1891f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb039e3aa sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb578bfd9 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb7da0bef scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc23b7246 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5bf1b4d sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda355e20 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6969d0d sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea0000ff sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1c97d1b sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf789dbfd sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd6b94f8 sas_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x1eedfdf2 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x235715da ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x27348ef5 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2f91bc94 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x41091a6b ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x4f1107a1 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x609c6f7a ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x6632c3ae ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x798e58bf ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x7add452b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x843e7693 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x8520da24 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x93da1077 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc0cf0917 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xca7a4a22 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd2ab0db4 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8e84252 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf271db70 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xf4ed98c4 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xfc9c7804 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xfe79097f ssb_clockspeed +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x242bf024 comedi_buf_get +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2bf739e3 comedi_buf_write_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x3691ffd5 comedi_error +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4d59fba0 comedi_buf_read_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4d973fe5 comedi_buf_put +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6c49e268 comedi_buf_memcpy_to +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x71ea5964 comedi_get_subdevice_runflags +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x7d241a08 comedi_event +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x9ea97178 comedi_buf_read_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xacec59fa comedi_buf_write_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbffa5d23 comedi_check_chanlist +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xc62305bf comedi_driver_unregister +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xd31ae069 comedi_buf_memcpy_from +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xf283cf70 comedi_buf_read_n_available +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xf43238d5 comedi_driver_register +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x0bd10ae1 subdev_8255_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x365ce865 subdev_8255_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x6e64e129 subdev_8255_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0xd03a7a99 subdev_8255_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xbfb87fb8 cfc_handle_events +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xd83bc89e cfc_read_array_from_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xe8f0fe66 cfc_write_array_to_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x07f08ea3 mite_setup2 +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x12a5ab05 mite_get_status +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x15a8277b mite_prep_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x170d5fd6 mite_buf_change +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x17dbbe12 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x2179fbe9 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x4a69f2a1 mite_sync_input_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x72fc9272 mite_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x77937427 mite_setup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x797bb3d6 mite_release_channel +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x8d7131b5 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x92b64beb mite_dma_arm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb2370795 mite_dma_disarm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb9e79fcc mite_unsetup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xbbd3744e mite_bytes_written_to_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xc9063019 mite_bytes_in_transit +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xce748179 mite_dma_tcr +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xd40e1fcf mite_done +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe35d0704 mite_request_channel_in_range +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe4998a61 mite_sync_output_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xfb3ba025 mite_list_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x07cf1be2 subdev_700_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x2dcc3d5b subdev_700_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0xc5fecaf6 subdev_700_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0xf5165a88 subdev_700_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/pcm_common 0xe8f610eb comedi_pcm_cmdtest +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x3be7ad51 comedi_dio_config +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x43044955 comedi_dio_bitfield +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x4f25463a comedi_get_n_channels +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xc2d4be72 comedi_close +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xc59e5b27 comedi_open +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xe30335b0 comedi_find_subdevice_by_type +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x2d4b3af3 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdc00d8e5 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x14025cd9 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb725d21c ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x45860a28 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x6aef310a iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xdd342e4d cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x027e93f5 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x406e8a36 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7b411654 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb223f24a go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcc59588e go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xddab7d81 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe847cf5e go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xeed52f31 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf41d6cec go7007_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d952367 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x13cc018b rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x174af7a7 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f137ce1 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x200dcd39 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x29f30f7d rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b211e29 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b7b3a86 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f3b7d72 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49c0a9ef rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a920588 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5073786b HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5086b815 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52d04d78 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x531f7d2f rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59ce11c8 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x626ebb4a rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x638299d6 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6493bcf8 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67584b13 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c121c06 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7207193f rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a658a03 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7cf1c1a8 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ef335d2 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7f478358 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e1115c3 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fa34300 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90011c7b Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b188a45 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5d39210 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4c46c7a rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6d41294 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbd5f54e6 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbdfa5a84 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc195398d rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2b00cac rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc33f090d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5e7985c rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9a69082 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb4823ff rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4434b90 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe65206cd rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe78fdccc rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb63b833 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec3e524c RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee3f64ea rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf76c0162 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7be81d8 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8fc84b2 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0e0c4af6 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13008999 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1740b75e ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1959887d ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21688071 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2fe3743b ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ff90e05 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30230359 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31f72ed6 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x33118744 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x336f0b7f ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38766559 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38fc338a ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55e8d3bf ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a5f794e ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c42843b ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f99d029 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73508b5e ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73ef4447 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x794ed94e ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7bed2a98 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f600cb1 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81750818 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x83a1677f ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x842b9315 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d3a9edc ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d9d7594 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97199e02 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97e54d9e ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa367d2c8 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa44204a4 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaa8a416e ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaac1c09b ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1c96e97 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7cff45e ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb438c9c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc295d523 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2d4f818 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc759ce32 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2f1ac79 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4d71e91 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd61bfc4c ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xddc6f77d ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfe6d76a ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1b93328 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe2bbee09 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3edc27d ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe58704c5 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6aea30c ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xedd7a973 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf88fa3bb ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf97de118 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfccd2673 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff04ed5b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x0b84c3ed ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x302df9f6 phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x456970a5 phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x02c7ae44 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0acb133e core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0be9d2ac transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x14962506 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x155a968f transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x191a128b target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x1e82f212 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x2148d24f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x27123f85 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x30decb39 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x3589c6f3 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x3aaa8eda transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e5e7247 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x43c370e0 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x474c791d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x4cdebf27 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e2848c8 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x511d185d target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x53009456 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x551feb62 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a266362 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x61788b7b core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x65e4b0d3 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x68b51435 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x69f92857 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x709bbb02 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x7352d090 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7622240e transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x78c4abd0 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x79aad415 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bd77b82 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x801f359a __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x88eaeb2a fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a278a44 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ef13997 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x92d24b67 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x96e75980 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xa953fec8 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xaac9a334 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xac7aec6c transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8ba0c83 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb395672 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3a49847 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4f919a2 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xce9003f9 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xcfbfcc44 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcffaf554 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xd46b73fd iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xd967896b core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd213b85 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xdefe92f0 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe096f563 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe15f4dfa sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xe200895a core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9c832ef target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xead57d69 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf2393c01 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf996b8e8 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa45b81e transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfcde514c transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xffd64dae target_put_session +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf2c58ab7 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x68490fd5 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a70013d usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1ffe044a usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x484a06c3 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x52a52618 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8bdb3c88 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8cf13ec8 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9403fb44 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9cb92c44 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa03358d8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa4222d0e usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb34a76f7 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc5b6bc38 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdd04b562 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe2e2e2ba usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeaf7db82 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x6f08aab2 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xb17b13a8 usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x14d554be lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x26578ca2 lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x496b00bd cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0xc4e225a7 mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x57b7f5a9 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xdd3cb9fb matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xe6f16e4d matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x7d236c8e DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcd55eea6 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcd62a431 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xfe8f1ce7 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x56e2e9aa matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x23a399c8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1cf729a8 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x385668a7 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7f16d999 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xec9f1e8d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x635f5535 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x7c10c263 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0082f586 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0329f082 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4df616b7 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbca6b964 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xec5b9207 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xb70432bd mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x4ecedc13 video_output_register +EXPORT_SYMBOL drivers/video/output 0xa3b674a2 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x07d87914 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x211262e1 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x3da68083 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x49a6207b svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8a741515 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xc2fa1cb0 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xf4624197 svga_settile +EXPORT_SYMBOL drivers/video/syscopyarea 0x63bd0bbd sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xb237395f sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x8f47afe3 sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x04e87545 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0a9ed246 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x12f78c6d vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x1c742ded vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x283fee37 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x2a9d029e vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x2d2d343a vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x3c491bbd vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x53c09c6d vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x598769fd vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x67502810 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x85b0aa15 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x872291bb vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xb3c1b62c vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xcc5ea621 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xdf709a76 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe09fba2a vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfafbdef8 vme_lm_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1818086d w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6962d57c w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd60e7ad1 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdaf616f7 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x87202eb0 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xa02d9e4d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfe88daad w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4b10f1a9 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6c0ae2fc w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa27359be w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x2c0a7fc7 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf8e7c7bd w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfb85e254 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xfcc50740 w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x11d5c0f7 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x29d0127e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x49845c65 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x5498bed0 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x589cc1b1 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x9e5af878 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa3ca0a5c configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xafa0ffbe config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xc2f330bc config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xe1c7f2fc config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xf046b205 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfc5f1df6 config_group_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x24ddb30c ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3ec19a67 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x434e272a ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x621c762c ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x6491df7e ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x8f34a8c5 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x973c91df ore_write +EXPORT_SYMBOL fs/exofs/libore 0x9d1143b9 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xd0b719c1 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xd93c2560 ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x0146f9b5 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x09ac6daa __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0e42c832 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x11ad2dfc fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x131b7533 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x297afb5e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x2f11012e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x38f8dbbe fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x465c329c __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x46fa5f7e fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x518ac063 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x5790cb19 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x59be7b98 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6805ca91 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6bbfaf5f fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x84bee306 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x99842f73 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x9e7f79d5 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa10055a2 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xa1ca12c6 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xa3c7218c __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xa95c9676 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xc28a0607 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xcceb3c43 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe74bdba6 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xe901bfa1 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xeef80b45 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xfe99ae29 __fscache_attr_changed +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x20c627f2 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5b87ea33 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xbe9665b8 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc8867f25 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd6b5a585 qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x075ae742 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x34f238b1 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x50918c7d lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x5fd8679a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x6654ed27 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x801d1535 lc_put +EXPORT_SYMBOL lib/lru_cache 0x9d21be3c lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xb4d2d41c lc_del +EXPORT_SYMBOL lib/lru_cache 0xb6f00823 lc_changed +EXPORT_SYMBOL lib/lru_cache 0xc8785d62 lc_get +EXPORT_SYMBOL lib/lru_cache 0xdcf40b82 lc_create +EXPORT_SYMBOL lib/lru_cache 0xe114c783 lc_set +EXPORT_SYMBOL lib/lru_cache 0xffb39656 lc_find +EXPORT_SYMBOL lib/lru_cache 0xffcf1714 lc_seq_printf_stats +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x7b88514d register_8022_client +EXPORT_SYMBOL net/802/p8022 0xe9e33332 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x11658b24 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x3e28bb5b make_8023_client +EXPORT_SYMBOL net/802/psnap 0x2a9e199a unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x89a52fbd register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00d1d7d1 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x09e7e865 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0c7f9f31 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x163ad945 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x17f4010a p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x1af9e4c9 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x21d09a5e p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x263f92e6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x27214a1b p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3257e66d p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36ee4cdd p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x373b1384 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3bc504e0 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x458b6b55 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x48a5ac17 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4a27c3f4 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x4a923baf p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x4ac22ac2 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x50af9c4d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x5b57c203 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x5d28b915 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x6fbf7035 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x75fad385 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8f81f236 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x9179b0f3 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96feda93 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa01ebb4a p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa1fa86b6 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xa554ac5c p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xa9662502 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xaddbb035 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7e91d60 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xca528448 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xcb9b1a61 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd7a6ea94 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xde80c0d7 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xe1207ffc p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe61268e6 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xec8afa1b p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xf431f229 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfb72d3d7 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff2e8674 p9_client_mknod_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x02f6ef7e aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x23a97033 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x522b354b atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x693263c6 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x01066dd7 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x0c3040fa register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x24e9b037 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2e773732 atm_charge +EXPORT_SYMBOL net/atm/atm 0x59f8956c vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x6bb562a8 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x8f0e767f atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x980b9966 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa9d49e95 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb5030560 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0xd2ccec8d atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xe923a4b7 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe9716508 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf0728ef0 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x251d5727 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4c6bdc69 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x4fd0f942 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5b182cec ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x718f1386 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc706397e ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xcd3222a0 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee8cc3ab ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xfe3f987a ax25_find_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x08289773 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0fcca94d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1600d0d7 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c04a8eb hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25ec1308 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2da2ebb7 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34fc82e3 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x381c5f8a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44a32f05 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x51698ce0 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58246fc8 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a903f07 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61eed95f hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6bb2ea19 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80e0b01a bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81363a6f bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86824355 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a995deb hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f92b786 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98540786 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9887040f hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9889aa2c hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9d4e2d3 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd2472bb hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc27cd718 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2bb6eaf hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc7d89d82 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb5e474a hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd402e60b hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5596017 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7340c57 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdfd60b9c hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7ae5f68 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe8467dd9 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xebb55743 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf01d0af7 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5fa96ee hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8f666ce bt_sock_unlink +EXPORT_SYMBOL net/bridge/bridge 0xec68914a br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x06dbafef ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x15373414 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x91bb1922 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x24901f61 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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x7af22c51 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x7fcba53d caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x9131901e cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xadc77497 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x52707053 can_rx_register +EXPORT_SYMBOL net/can/can 0x976e7795 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xab255cb7 can_send +EXPORT_SYMBOL net/can/can 0xc165901c can_ioctl +EXPORT_SYMBOL net/can/can 0xd781ba20 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xff4b0389 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0376fc76 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x05be02a2 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0c288b41 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x149ca32a ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x179f455d ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b8b0f7f ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1d8b0329 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1df22fd8 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x23802252 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x25f5c4d9 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x27b26099 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x2b10d4ba ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x2fc4a552 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x31e4e4b2 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x32976ff5 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x3a7c837d ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x40e77518 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x462a7082 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x49b1b9a9 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x512e3444 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55b58eba ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5d526da2 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x61b4f62e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6390fa8a ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x69136664 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x82cce633 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x87192cfc ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8de19539 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x9085f4b8 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x96166316 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x96b17d69 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x9e608015 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa5a99fc6 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xab6f5ac7 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xadb31d30 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0a2ccd6 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb0b7bdcd ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xb0e95fe0 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb31e3cc6 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbcf99b95 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xbd5654e3 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc44ebd1a ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd473e49d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xd517c92c ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xde72d2c2 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xdffb1102 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xe3ec3c03 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe8a341fc ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf1e9dd37 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1632e8bb ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4d4f2bef ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4da904ba wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x50bd3877 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8891b59b wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x97de4bea ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9bd07f10 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa3f400b0 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaff2ed58 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb9804dd0 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbeb004ff wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xea4ce263 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeac0332f wpan_phy_alloc +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x83c19973 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa44091a3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa918c90d arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x549aa5d5 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6907675d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf62d2de9 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x05b1985a nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x4e48cd6a nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xa1f19627 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xbdaa05eb nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xc08d8c50 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xcbed07b7 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xcfc317e1 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x427ff580 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xf6334874 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x19a6f9c3 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4203e4e7 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x8dc6e9b7 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x905a914f ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x7343c6aa xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xdeda6d45 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0cfc2a16 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xfffcffa5 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x25fa0c42 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3576d49c ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x63c2d0e2 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9b9fb859 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa832b133 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd0e6852e ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd6374aa9 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfa3997f2 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x09f58a8b hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x1a90e3a4 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x26e6b539 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3b6d5f65 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x3efb822e irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x42a9904d irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x4568d42c irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4acdf299 irlap_open +EXPORT_SYMBOL net/irda/irda 0x4b4eb12b irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x4b5eef90 irlap_close +EXPORT_SYMBOL net/irda/irda 0x4df78dee irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x4ea2168c iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x544050eb iriap_close +EXPORT_SYMBOL net/irda/irda 0x60471702 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6108082b irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x615ee918 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x66ef7db3 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x75fb29dc irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x76ef9f52 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7cdb0412 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x7dabe31e hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x7fb81606 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x86b5f4ce hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x891e3c78 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x8b69b459 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x8bc28533 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa4548c32 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa8499f70 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xad66e1db hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xb491eaa0 iriap_open +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbace2ec4 proc_irda +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc310cf21 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xc43e02e5 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xc9370803 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xcd58e732 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xcf41bfc4 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd1ae6745 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xd57045a8 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xda30b07f irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf15e4631 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xfae38773 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xfcdfbf93 irttp_close_tsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x5e36bee8 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1e83ec54 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x1f8503c3 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x3bec4652 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x727055a8 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x7d3cb41a lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x947bd56b lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x9f64fa40 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xe655f315 lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x06bab879 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x245b5abe llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x321fd8cc llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6c6cdb31 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x72bdfadb llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x73a53c60 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x9f182598 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xd4d86e37 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x04343463 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x08d32eca ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x0aa2dfe9 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x0b29599b ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x2167db0f ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x21c06acb ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2470e820 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x2d85bb76 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x33998b26 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x3643a418 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x3d2a650e __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3ea63525 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x4819ad9c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x486d4a0b ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x49df8c1f ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4b5c99c8 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x4d70d897 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x51f9659c ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x5a8a7363 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x605fcf3b ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x60b3e38e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x60bb9ad8 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x62b1f587 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x6327523e ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6434c5bb ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x669b271b ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6c9994dc rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x6d834fea ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6ed77cd9 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x707513c2 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x7c95111c ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x83703d09 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x84fa9358 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x86aa508f ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x870527a3 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x91810351 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x96ab5a19 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97c6b163 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9b7c3a81 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9bf86ac5 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9d1c8749 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x9e3dbb50 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa67f45ad __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa743c4ef ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xb1b90dd0 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xb513fe96 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b66794 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0xc6009c9c __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcdfa940d ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xcee18b16 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd02a89ed ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xd0d631ff ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd127495d ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe58ac99d ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe8cc4a99 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xeae26177 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf4bbe0c5 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf965d21c ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfae86dc4 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xfde3224c ieee80211_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x030be62b ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x03348933 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1539d849 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1df3b151 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1f5fa709 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x26f4fc78 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4385e065 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x62ff936e ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b254f38 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8757b525 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb759c73f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc243d03a unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xca19069b ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda4e897c ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x4bdf91a5 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x61103981 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x68dc8c47 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x6545aad5 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x03bca6b8 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0c760a4d xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x3c756697 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x3d834647 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x41b79db9 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8aa42eb9 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfbb7c87f xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfcacc922 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfd0fdd9f xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xfe90fba3 xt_find_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0e6e7597 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x103eb343 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x1a8ce654 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x233bb8a6 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x3aa6e5a5 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x558b995f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x565d6cec nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7c5133ad nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x7dc78ae7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x880136d5 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8cfc434f nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x8d5be6fe nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x91bdd303 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x953b3f7f nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x960b0466 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb34fca39 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbb406c9e nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xc965f65a nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xd26d4eb7 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xda6ab8ca nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf8b7d06c nfc_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x0b4b8ce9 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4091e775 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x8c1af5c1 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb90e5dcd nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xe0d8117b nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x06713d04 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x0c43c370 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3caf897e nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x435278d3 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x60170c14 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x619cd7b9 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x683cdec7 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x7abca789 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xb5db5117 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xb8fd36e5 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xe87c729b nfc_alloc_recv_skb +EXPORT_SYMBOL net/phonet/phonet 0x261759c3 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x3e88d9eb phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x4199dc0c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x57161b44 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x8b1fe156 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x8c5bb77e pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xc5c68062 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xfdeb4b52 pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x035def6c key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06cc6278 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x083a188d rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1188e29c rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5a04311c rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5ec3d7a9 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x791231fe rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9aa680d8 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa04a28a1 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa52359fd rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa7c6ae3a rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbbb0fc4a rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc5101acd rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xed73cb35 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xef0d94e4 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0xdefb2d77 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3dbfc76c svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x54cbfcce register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0xac67eb27 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xc2475ac2 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x02c8413e cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x080309da wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x13a78738 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x15251866 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x205bb3f5 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x22a0d79e ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x27828d73 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x2f891d16 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x37cbb877 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x3939c8a2 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x40aee696 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x41ea3194 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x456daeab ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x48dca09e __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x498dcad6 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x49a36b52 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x4b8c6c13 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x54cc4d42 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x58094727 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5e2e3825 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x6027d2cc cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x60cf29fc cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x61b43229 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x629282a3 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x66adb95c cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x68831282 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x68fe23fc cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bf51b84 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x6e679f10 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x74f0ba85 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x78761c36 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x7ec129dd wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8564ad86 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8741c097 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x8a88742a cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x8b6405ef ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x8bedcf0d cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8fd01c01 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9c70bbd9 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa204c2a2 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa6e58968 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xad01ac92 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb36be995 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb3eb0f53 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xb9eec848 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xbe04dde0 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc1b3f0f5 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc91089f5 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xcb6ef3db cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd5e4aa96 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd9bccfd8 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdd8ea1c6 cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xde977207 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xe0e53c2b cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0xe2d6f535 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xedba6ceb cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xedfa2a07 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf38eb026 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf74f7a4e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf7c2c360 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xf8854081 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf9dcd654 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfbcf5323 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0xfd5e645d cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x05033ac4 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x27f28093 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x302fcb7c lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x465c89b3 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x5bec5dcb lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x85fcf8f5 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xef77675f ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x6b5db086 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x4d7d69bf snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x701072ab snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7d924744 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf27e2161 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x37951bae snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xf01ace80 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x01b82065 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x0d2b74da snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2ceec35d snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x668570c0 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7f92860c snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb494afee snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xc7b2b6c2 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe0a50454 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x675dcfe4 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x037a89ef snd_device_register +EXPORT_SYMBOL sound/core/snd 0x0657a915 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x068f912f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x12119c02 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x134db274 snd_cards +EXPORT_SYMBOL sound/core/snd 0x1569fe80 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b44366d snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x1c017b4c snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x205ee245 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x258af132 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x27170b14 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2d544073 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x30be1703 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x321fe26b snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x377da919 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a855ab1 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x476149e0 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4b9484f6 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x5b3613fb snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x60bc6db2 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x68384576 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x6b462a0e snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x6ee9c526 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x715ff04d snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x799b1f23 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7c38c5a5 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x7cc673e3 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x835398ee snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x856ea904 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x96a4a6ba snd_device_free +EXPORT_SYMBOL sound/core/snd 0x9bff717a _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f4c9676 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa559a6d6 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xa6f1d39b snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xa8c40360 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xa988fd2e snd_component_add +EXPORT_SYMBOL sound/core/snd 0xaf802332 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb6fe8151 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xb963a7c3 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xba2f0de4 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xbc3e9fab snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xbcf187f6 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xc25d4933 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xd4a75db1 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xd8ede5a0 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xe17c8e1f snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xe7c7f33f snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xe9a78a11 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf6cfcaf3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xfc4fdce6 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xa958b040 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1291d472 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x387a9fab snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x425b7a78 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x4f24b42d snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9155f8eb snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x0340484b snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0bb60b10 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x11fe76f2 snd_pcm_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x14dd6913 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x14f76275 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x17944c75 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x1844d20b _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1f05ad66 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x21ed010d snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x233be584 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x23415e39 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2fae19b0 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x358b5702 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x41876705 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4349eceb snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x46b3f938 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x58d2cea3 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x689ebcde snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ee0fe52 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x71844f24 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x73338a43 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x73bb98e2 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x78e8a758 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x7a099ca7 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8b2364ff snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x95384a23 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x9f1ff771 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xa1f6a310 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9adc229 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xb44d6696 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbdcc6d54 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xc3867fa9 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc7c3b846 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xc9ceb5e2 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xcb9e43a0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xcbc2d21e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xce146e50 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd9081c38 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xd9c3f791 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xe5501412 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe5ef3d5e snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xe70b9671 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xef2e3934 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf577a36b snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xf964197e snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02f7e3ed snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x138275ad snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3466b2bf snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4542ca30 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5412fea9 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6092e6fe snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7eec63fe snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8a9ea398 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x927d3160 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x97ae807f snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc58011f5 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcaca6830 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd04af684 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0e3575d snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xde5a0943 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa319549 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb11a551 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-timer 0x2e0e8b54 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x2e3c41e5 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5c4b8d94 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6489e083 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x6fd08cac snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x85645fbb snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x8a5ee0da snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x9b5439c1 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x9d7e8679 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc33ce9d8 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xc78a2930 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xe2b1dc32 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xf1a61756 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xf23b3c76 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0cbd2192 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x66212c86 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6f3428ba snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x81d658f8 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8ce58133 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8fb8ffdb snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac5f7d2b snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe31a3676 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf71c2af1 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x02c2a741 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5265cc6e snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x561c4d88 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6f1f8036 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x73f838d2 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8df736ee snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9099e7ac snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcf0bdfa6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xec6329ef snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0165446a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0aa5bd49 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c7d80d2 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1fd51373 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x204c7560 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x273ce3eb amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x293536d6 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35b72a4a amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3b65d0ad iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46b0f9e5 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49ac0cae amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c99a6d3 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4f8908ce amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59c010b9 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7073133d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x73620bad amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96762994 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0d0fd7d fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4ac27c3 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4e040b2 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda5cbd15 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4b271bc cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe59ae1bb amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeabdea2d fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf398495b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf93a03ab cmp_connection_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x27ce6d29 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x33288e42 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x58f74eab snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7d4643ca snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf6c168d7 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfdadd595 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x5ba39a49 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6a14e56a snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb56dc5dd snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb5782cfd snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb897923b snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbe5ce39f snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x13cd7dd0 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6d832dea snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xdc1ff2d7 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xdf90eb7e snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa9a67935 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xfa261de8 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x28b6f7fe snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xfc30388d snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x046275f9 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7dfae5c2 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9a4f5a60 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9ab803c7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xaaf98ce1 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5e9ef8a9 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7b795712 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x88020715 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd0daf615 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdcfdc681 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdda29caf snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x12be22d0 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1897617e snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x42c4a21b snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x45dd879c snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x53285b45 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6c629115 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x71835a6b snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb3aa7c39 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb4d07d84 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe70cb12d snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x131bc961 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x74f9380f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xd3630d25 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x12dbae56 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x26fb3024 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2c3891dc snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2cb1e1a5 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2da29f83 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3ece3c6b snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x58b5b461 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a524368 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ca46411 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x81ede47e snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xba03b4a2 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9aaf6dd snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcfc7bf8f snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcfe7f920 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1dc36dc snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf3107170 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfe5253ac snd_ac97_bus +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x68fdd210 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x14e407b1 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2add795d snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x53560225 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5670b902 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x59fb8543 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x68d3b220 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xaf7153e6 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcb4ee8dd snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcc070b44 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0x5328eec8 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8956f8c4 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb7311bc3 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcbc94c2c snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1139280b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x186a82d3 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31b0190c oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x42b45c55 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4e9f85e5 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x517dd2f1 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x61a811ae oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x68681e6b oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6f9280b9 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7f4c960f oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x86cf23a3 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x89463258 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9fb97bae oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa19a364a oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1cabbfe oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xacfb0045 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb76995d9 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc5db3217 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcbcbd4d4 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9569ebc oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xec6df725 oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0f849fd7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x360861cf snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6de19620 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbcfd3a68 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe4c75576 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x2781ed0c register_sound_special +EXPORT_SYMBOL sound/soundcore 0x492ab322 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x877cb2e8 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x94b6f10b register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99b7995f register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xb22be88f register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x33246421 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8732b706 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcda56a74 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd605cf3a snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdfc8fd66 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xec7bb9ee snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0f8c554b snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x18d07444 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3df266ab snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x630d9d64 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7342902a snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7cefc60a __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9ca3b8e8 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa28a80b4 snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd397a0e5 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x2f90e9ec dm_mem_cache_free +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x35c95b1b dm_mem_cache_client_create +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x86e5acf9 dm_mem_cache_grow +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x920a7a41 dm_message_parse +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xa43471b6 dm_mem_cache_shrink +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xd55b290c dm_mem_cache_client_destroy +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xeeab2633 dm_mem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00188c51 vfs_read +EXPORT_SYMBOL vmlinux 0x00492a48 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x0076bece tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x008af575 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x0091a1b9 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x00c8a8ec pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x00f36e5f __break_lease +EXPORT_SYMBOL vmlinux 0x00fce7a9 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x00fd4890 security_inode_permission +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01093ca5 cpu_info +EXPORT_SYMBOL vmlinux 0x015032af gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x015ddbdc wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01d19038 acpi_enable_subsystem +EXPORT_SYMBOL vmlinux 0x01db3d5d __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x01f43e7c kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x0208b3b2 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023ac266 dev_err +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027bcdaf ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02949003 register_console +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02acee90 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x02c128cd inet_add_protocol +EXPORT_SYMBOL vmlinux 0x02d06208 seq_lseek +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02de381e inet_frag_kill +EXPORT_SYMBOL vmlinux 0x02f9c1b9 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033634be skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x0338f806 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x0348659b devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035bc3cf xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036c5206 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x036f5518 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ca23f generic_delete_inode +EXPORT_SYMBOL vmlinux 0x0381b487 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x03825fb2 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x03948630 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x03b509dc blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x03bb9584 mount_bdev +EXPORT_SYMBOL vmlinux 0x03bd2aa3 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c5aa39 abort_creds +EXPORT_SYMBOL vmlinux 0x03c9884f acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03fdabea pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0446249e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0466f16e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x047106d2 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x0481ed73 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x04ae37bb ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x04cbeb3c bio_init +EXPORT_SYMBOL vmlinux 0x04d8b23d inet_sendpage +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04dd1787 dev_uc_del +EXPORT_SYMBOL vmlinux 0x04e08350 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f0165a do_sync_read +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05402299 pci_release_region +EXPORT_SYMBOL vmlinux 0x05411229 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x054357b0 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054b3b2f skb_queue_purge +EXPORT_SYMBOL vmlinux 0x055011d1 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057c27a6 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x05826248 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x058a13b7 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x059349de scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x05a28166 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x05a38f46 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x05a47007 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x05c4a13a tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x05c6d7ec jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x05cc6a48 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x05cd91df dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x05e73347 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x05fe7334 filemap_fault +EXPORT_SYMBOL vmlinux 0x060086c8 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x06144a39 wireless_send_event +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061d7af2 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x061da857 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062ef9a3 __dev_printk +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063a3691 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x0676f666 idr_destroy +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06b31f3d bdi_unregister +EXPORT_SYMBOL vmlinux 0x06c09505 scsi_print_command +EXPORT_SYMBOL vmlinux 0x06f490b4 bdi_register +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06fea6fc dev_set_group +EXPORT_SYMBOL vmlinux 0x070c89e1 __register_binfmt +EXPORT_SYMBOL vmlinux 0x07109fee inode_init_once +EXPORT_SYMBOL vmlinux 0x071b5c6b input_set_keycode +EXPORT_SYMBOL vmlinux 0x0727209a skb_clone +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x07286d5e __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x072c01f6 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x0759d223 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x076654dd register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x076a7ed1 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a4a8a4 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ad92f9 complete_request_key +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cd74f0 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x081551f9 netpoll_setup +EXPORT_SYMBOL vmlinux 0x0817e588 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x0820d06d journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x0822d918 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x08255652 get_write_access +EXPORT_SYMBOL vmlinux 0x08282c9c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086d0b9e acpi_device_hid +EXPORT_SYMBOL vmlinux 0x08706016 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08a09aa0 tty_mutex +EXPORT_SYMBOL vmlinux 0x08a34dc1 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x08bf27d7 end_page_writeback +EXPORT_SYMBOL vmlinux 0x08c3a73c tcf_hash_release +EXPORT_SYMBOL vmlinux 0x08f64aa4 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x0900c323 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x09117e47 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x092d2f83 neigh_destroy +EXPORT_SYMBOL vmlinux 0x09308484 idr_get_new +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x094eb403 vfs_rename +EXPORT_SYMBOL vmlinux 0x0964bcb2 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x09707933 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b6dac proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098fbb75 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x099ada83 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x09a3c97e netdev_printk +EXPORT_SYMBOL vmlinux 0x09be321b sock_setsockopt +EXPORT_SYMBOL vmlinux 0x09c303a7 invalidate_partition +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1458 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x09d00248 tty_register_device +EXPORT_SYMBOL vmlinux 0x09d23e00 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d74930 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x09e211ec inetdev_by_index +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a030a01 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a336899 vfs_write +EXPORT_SYMBOL vmlinux 0x0a5172fd splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x0aad049b md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x0ab2e12a dquot_operations +EXPORT_SYMBOL vmlinux 0x0ac3080d elv_abort_queue +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad64ab3 pci_save_state +EXPORT_SYMBOL vmlinux 0x0b005b92 set_disk_ro +EXPORT_SYMBOL vmlinux 0x0b028004 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x0b077027 skb_checksum +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b110940 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2f2b87 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x0b5017c8 inet_frags_init +EXPORT_SYMBOL vmlinux 0x0b53c87c ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x0b58cd1b bio_clone +EXPORT_SYMBOL vmlinux 0x0b71893f skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8ffbcd pci_dev_driver +EXPORT_SYMBOL vmlinux 0x0b9d9f5b sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x0bbfcec0 sock_no_accept +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd7a6d2 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x0bf2050d __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x0c089f3e qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x0c2ffad3 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x0c4984ec genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x0c4dcfd3 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6fe830 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0c750f25 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x0c835f8b x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c985965 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdb83b2 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x0cf82de9 take_over_console +EXPORT_SYMBOL vmlinux 0x0d1bb02a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4967cc inet_listen +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5ba368 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x0d652bb4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x0d684979 lock_may_write +EXPORT_SYMBOL vmlinux 0x0d7780dc jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0de1cf99 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x0dfbc47e __dst_free +EXPORT_SYMBOL vmlinux 0x0e3a728f blk_get_request +EXPORT_SYMBOL vmlinux 0x0e5ab257 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0e621886 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e849e7e scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x0ea66628 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x0ed67687 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0eea75ce __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x0f065589 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0fab6743 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb006e8 journal_init_dev +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fb1f0aa nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10307223 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x10366a83 spi_release_transport +EXPORT_SYMBOL vmlinux 0x104973fe phy_register_fixup +EXPORT_SYMBOL vmlinux 0x1050a95e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x1056af08 get_task_io_context +EXPORT_SYMBOL vmlinux 0x106d5aad bio_split +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1088d836 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x1088fe64 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x1094bf16 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x10b1dec3 pci_select_bars +EXPORT_SYMBOL vmlinux 0x10d1dc83 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112d9d5d napi_gro_frags +EXPORT_SYMBOL vmlinux 0x115002ab sock_register +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118b184e lease_get_mtime +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1199f6ff tcf_hash_check +EXPORT_SYMBOL vmlinux 0x11b390d8 get_super_thawed +EXPORT_SYMBOL vmlinux 0x11dfc582 elevator_exit +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f91fda pcim_iounmap +EXPORT_SYMBOL vmlinux 0x121958e5 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x12209b5a mntget +EXPORT_SYMBOL vmlinux 0x124702d0 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x125459d1 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x129b0bca i2c_del_driver +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ab345e intel_gtt_insert_sg_entries_hsw +EXPORT_SYMBOL vmlinux 0x12c46cde flush_signals +EXPORT_SYMBOL vmlinux 0x12cadadf user_path_at +EXPORT_SYMBOL vmlinux 0x12d68276 elv_rb_del +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e0bb3d pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x130c21ba input_free_device +EXPORT_SYMBOL vmlinux 0x132ec8d5 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134246b5 first_ec +EXPORT_SYMBOL vmlinux 0x134aadaa inet6_ioctl +EXPORT_SYMBOL vmlinux 0x13738801 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1375aca5 inet_shutdown +EXPORT_SYMBOL vmlinux 0x1392244f noop_fsync +EXPORT_SYMBOL vmlinux 0x139623f8 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x13976736 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x1397bf23 journal_wipe +EXPORT_SYMBOL vmlinux 0x139e3fbd set_device_ro +EXPORT_SYMBOL vmlinux 0x13a5fa12 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x13a72864 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x13b65a01 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1400a6b1 unbind_con_driver +EXPORT_SYMBOL vmlinux 0x1414fb32 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x1430e6e0 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x143e8539 scsi_host_put +EXPORT_SYMBOL vmlinux 0x1456eb8f tcp_prot +EXPORT_SYMBOL vmlinux 0x14721339 inet6_release +EXPORT_SYMBOL vmlinux 0x148123e5 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x14c7961c dev_mc_add +EXPORT_SYMBOL vmlinux 0x14e3524f blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151450a0 task_nice +EXPORT_SYMBOL vmlinux 0x151a332e __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x1527b1ef generic_setlease +EXPORT_SYMBOL vmlinux 0x15319f2a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x154909b9 bmap +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x1577b676 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x1588d1ec register_filesystem +EXPORT_SYMBOL vmlinux 0x1592192f agp_find_bridge +EXPORT_SYMBOL vmlinux 0x159a5a89 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x15bbf3a8 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x15c030aa sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x15cda3f3 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x15f0b7ca mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x160a1571 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x16161096 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x16210a66 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x1627c6d1 input_set_capability +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1631b1c1 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x1637ff0f _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x164099d3 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x1660e010 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x16bae63b bdi_init +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16cb3beb udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x16e02f27 cdev_add +EXPORT_SYMBOL vmlinux 0x16f90468 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x170d89bf dm_unregister_target +EXPORT_SYMBOL vmlinux 0x171f355e send_sig_info +EXPORT_SYMBOL vmlinux 0x17281170 arp_xmit +EXPORT_SYMBOL vmlinux 0x1735c3ed bio_copy_kern +EXPORT_SYMBOL vmlinux 0x1744af81 d_drop +EXPORT_SYMBOL vmlinux 0x1745d2ed pci_pme_active +EXPORT_SYMBOL vmlinux 0x1750aa2c fb_set_var +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x1791765e d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x17a1ff4c __getblk +EXPORT_SYMBOL vmlinux 0x17ab36b1 dm_get_device +EXPORT_SYMBOL vmlinux 0x17af87b5 vga_put +EXPORT_SYMBOL vmlinux 0x17b64d09 dqstats +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e7a1f1 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x17f02ffb inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18205aca pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x182cbddc iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x182cd6b8 soft_cursor +EXPORT_SYMBOL vmlinux 0x182fc38d module_refcount +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 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18c32880 init_buffer +EXPORT_SYMBOL vmlinux 0x18cdc7b5 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x18ce53f4 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x18f89216 md_done_sync +EXPORT_SYMBOL vmlinux 0x19012d79 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x19288fcb gen_pool_create +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x195c9eaa eth_header_parse +EXPORT_SYMBOL vmlinux 0x196c59f9 ida_remove +EXPORT_SYMBOL vmlinux 0x1974b025 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x197aec75 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x197b3008 sk_run_filter +EXPORT_SYMBOL vmlinux 0x1988ca12 blk_get_queue +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a24c20 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x19afe3fa vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x19b46ac2 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x1a22e334 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x1a3f317b genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a62a108 spi_dv_device +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6c9c89 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x1a77da20 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1a7cdca6 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x1ac4bf57 nf_register_hook +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad8865a rt6_lookup +EXPORT_SYMBOL vmlinux 0x1adcbfd7 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1adf54a4 agp_bridge +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b04dd38 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x1b0a8a55 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x1b365ad8 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d4f00 dqput +EXPORT_SYMBOL vmlinux 0x1b7c750f rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1babdb45 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x1bafc0d6 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x1bd2e227 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bfc6c90 __bread +EXPORT_SYMBOL vmlinux 0x1c2e11b9 __get_page_tail +EXPORT_SYMBOL vmlinux 0x1c71b8e8 blk_put_queue +EXPORT_SYMBOL vmlinux 0x1c755447 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8efb12 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1ce1d2fa ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x1d2368cd phy_attach +EXPORT_SYMBOL vmlinux 0x1d5088c0 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x1d50cfa9 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x1d578ccf may_umount_tree +EXPORT_SYMBOL vmlinux 0x1d5a70ac dquot_commit +EXPORT_SYMBOL vmlinux 0x1db54516 elv_register_queue +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc26c92 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcd79d0 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e07224f tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e4306c5 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x1e493302 __invalidate_device +EXPORT_SYMBOL vmlinux 0x1e4a17c6 scsi_execute +EXPORT_SYMBOL vmlinux 0x1e4cf560 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x1e54827b dma_async_device_register +EXPORT_SYMBOL vmlinux 0x1e5e5550 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x1e64a655 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e703c5d xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ef1aeba pci_find_capability +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f0b02b7 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x1f1afb84 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x1f1f98ef block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1f1fd97f simple_fill_super +EXPORT_SYMBOL vmlinux 0x1f70be1e max8925_reg_write +EXPORT_SYMBOL vmlinux 0x1f96b2d8 irq_to_desc +EXPORT_SYMBOL vmlinux 0x1fb15eb6 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1fb74ab9 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x1fb7df78 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x1fbba02e blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc09225 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd29ced agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20009e95 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x202fc071 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x20425a0a setattr_copy +EXPORT_SYMBOL vmlinux 0x206a2ac9 skb_make_writable +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075968e xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20af250f follow_up +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20e8f42a blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x211767c7 ida_destroy +EXPORT_SYMBOL vmlinux 0x2119ba8b lookup_one_len +EXPORT_SYMBOL vmlinux 0x2124b439 mdiobus_write +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x21427b44 brioctl_set +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21636b2a i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x217d572a scsi_device_get +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x218b83e9 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x218d05e5 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x21bb53f3 neigh_for_each +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21e5c3a0 netdev_err +EXPORT_SYMBOL vmlinux 0x21f4c0a1 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x2204effe dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x2218325e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223e92c9 bdput +EXPORT_SYMBOL vmlinux 0x22482d54 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x225aaa4c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22b10ab5 simple_readpage +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22e9ec33 ps2_end_command +EXPORT_SYMBOL vmlinux 0x22ec33d5 simple_rename +EXPORT_SYMBOL vmlinux 0x22fd9ad0 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x230f120f do_sync_write +EXPORT_SYMBOL vmlinux 0x2319b748 md_error +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2330f6e1 phy_start +EXPORT_SYMBOL vmlinux 0x2338cc8b n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2356f24d dev_alert +EXPORT_SYMBOL vmlinux 0x2359de41 get_super +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c22e4c mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241deedf tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242ef193 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x243bf7b9 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x243c6ae9 key_invalidate +EXPORT_SYMBOL vmlinux 0x244259aa bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24471ef9 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x244f553b key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x247189a7 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x24718d30 filemap_flush +EXPORT_SYMBOL vmlinux 0x24779fc4 clocksource_register +EXPORT_SYMBOL vmlinux 0x247b44ca blk_end_request +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2491147f block_write_full_page +EXPORT_SYMBOL vmlinux 0x24a30c19 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x24f17a89 lease_modify +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x24ffdd83 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2511771d x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x251ff6b3 lro_flush_all +EXPORT_SYMBOL vmlinux 0x252471d5 __lock_page +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x2560ba04 tcf_em_register +EXPORT_SYMBOL vmlinux 0x25646489 sock_map_fd +EXPORT_SYMBOL vmlinux 0x25778f34 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258c515c unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x2596c00f netif_carrier_off +EXPORT_SYMBOL vmlinux 0x25a58218 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x25a99552 skb_copy +EXPORT_SYMBOL vmlinux 0x25b2fdc9 generic_writepages +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ca9622 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x25dfe935 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x260137b7 ht_create_irq +EXPORT_SYMBOL vmlinux 0x26066e7c tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x2616aedb tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x263122f8 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264a1bd7 __kfree_skb +EXPORT_SYMBOL vmlinux 0x26579475 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x265bf6cb xfrm_init_state +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x268bcd24 I_BDEV +EXPORT_SYMBOL vmlinux 0x26ad3274 set_pages_uc +EXPORT_SYMBOL vmlinux 0x26b1bb91 generic_show_options +EXPORT_SYMBOL vmlinux 0x26e27722 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2710ac04 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27277915 vm_stat +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2730b7cb phy_find_first +EXPORT_SYMBOL vmlinux 0x273b1533 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x273f77db scsi_remove_host +EXPORT_SYMBOL vmlinux 0x274483a7 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x277a3df1 devm_iounmap +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27ad5dc8 registered_fb +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b64454 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282824cb agp_copy_info +EXPORT_SYMBOL vmlinux 0x2829ac93 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2838e7df security_file_permission +EXPORT_SYMBOL vmlinux 0x283dbea7 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x2865d5f7 register_cdrom +EXPORT_SYMBOL vmlinux 0x28805633 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x2895ff75 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28bc02db lro_receive_frags +EXPORT_SYMBOL vmlinux 0x28e8de00 pci_dev_put +EXPORT_SYMBOL vmlinux 0x28ec4cd5 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x292093f4 native_rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x2928943a inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x294d12a4 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x29511eec d_obtain_alias +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29903e22 neigh_table_init +EXPORT_SYMBOL vmlinux 0x29c784aa unlock_rename +EXPORT_SYMBOL vmlinux 0x29ee9c03 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a313508 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3b8b28 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x2a43c47e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x2a4d077e __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2a6e6109 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2ab80c5d __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x2af627ae dentry_open +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0e63e3 seq_puts +EXPORT_SYMBOL vmlinux 0x2b106c1b dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x2b17286b md_integrity_register +EXPORT_SYMBOL vmlinux 0x2b261076 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x2b2b5004 file_open_root +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b41e94a napi_skb_finish +EXPORT_SYMBOL vmlinux 0x2b4a4d8a md_unregister_thread +EXPORT_SYMBOL vmlinux 0x2b4b91ad init_task +EXPORT_SYMBOL vmlinux 0x2b51837e proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x2b8fae85 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb1cf3d uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bbe6efa cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x2bdc3160 __serio_register_port +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c26aca2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x2c2b6d9a inet_put_port +EXPORT_SYMBOL vmlinux 0x2c2ba0ed blk_init_queue +EXPORT_SYMBOL vmlinux 0x2c3f954f poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x2c5d3529 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x2c68439f jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x2c6c7e2e blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x2c6f6a32 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x2c734a36 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x2c74531e pci_disable_device +EXPORT_SYMBOL vmlinux 0x2c8923cf jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x2c994ff7 vga_tryget +EXPORT_SYMBOL vmlinux 0x2caf6910 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x2cb871ca bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2cea1481 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x2cf0e18a dquot_initialize +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2db683 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x2d4a3bd9 install_exec_creds +EXPORT_SYMBOL vmlinux 0x2d4ae727 __block_write_begin +EXPORT_SYMBOL vmlinux 0x2d702f35 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x2d828646 request_key +EXPORT_SYMBOL vmlinux 0x2d83fdcc scsi_register_driver +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8afa8e input_close_device +EXPORT_SYMBOL vmlinux 0x2d8f3c0b input_open_device +EXPORT_SYMBOL vmlinux 0x2da49b33 register_exec_domain +EXPORT_SYMBOL vmlinux 0x2db4c99b flush_delayed_work +EXPORT_SYMBOL vmlinux 0x2dbe51a5 ida_get_new +EXPORT_SYMBOL vmlinux 0x2dc0dc76 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x2dc0dcd7 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x2dca01e4 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x2dcd1378 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9c9ff scsi_scan_target +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e094d07 elv_add_request +EXPORT_SYMBOL vmlinux 0x2e0ce439 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5825c8 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x2e5a704c udp_table +EXPORT_SYMBOL vmlinux 0x2e647bd3 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x2e67258c sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x2eab2808 __breadahead +EXPORT_SYMBOL vmlinux 0x2eae5d61 generic_make_request +EXPORT_SYMBOL vmlinux 0x2ece1902 unregister_netdev +EXPORT_SYMBOL vmlinux 0x2ed2c7cf input_allocate_device +EXPORT_SYMBOL vmlinux 0x2ed9f83c follow_down +EXPORT_SYMBOL vmlinux 0x2edb52b6 mmc_free_host +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efe1c47 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f06c094 block_truncate_page +EXPORT_SYMBOL vmlinux 0x2f0ed252 ata_link_printk +EXPORT_SYMBOL vmlinux 0x2f3c2cc0 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x2f5e4e9f get_phy_device +EXPORT_SYMBOL vmlinux 0x2f6a9d4e phy_device_free +EXPORT_SYMBOL vmlinux 0x2f76e18c vfs_symlink +EXPORT_SYMBOL vmlinux 0x2f780390 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x2f966ad0 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2fa14031 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc18e62 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x2fd0838d i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x30164370 tty_devnum +EXPORT_SYMBOL vmlinux 0x30187e7b netdev_alert +EXPORT_SYMBOL vmlinux 0x301d3061 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x304bb38c dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x3052402c tty_port_init +EXPORT_SYMBOL vmlinux 0x3074e8d4 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x307b62ac idr_replace +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x309c6691 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30aa0c85 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x30b7c3ec have_submounts +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d1a623 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3118388c aio_put_req +EXPORT_SYMBOL vmlinux 0x312d70a7 dev_close +EXPORT_SYMBOL vmlinux 0x313c763f generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x317830a3 dma_set_mask +EXPORT_SYMBOL vmlinux 0x317e74b2 lock_super +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31bce427 km_new_mapping +EXPORT_SYMBOL vmlinux 0x31d5ae8f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x31d94ddc dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x3204ac6d pci_get_subsys +EXPORT_SYMBOL vmlinux 0x3236a782 unregister_console +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32747a34 file_remove_suid +EXPORT_SYMBOL vmlinux 0x3278b925 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x3289975b get_disk +EXPORT_SYMBOL vmlinux 0x3299cdf0 ppp_input_error +EXPORT_SYMBOL vmlinux 0x32c29c95 tty_port_open +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x32fe4de7 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x3305e753 sg_miter_next +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33506384 locks_delete_block +EXPORT_SYMBOL vmlinux 0x33515d49 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x33a3464c __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x33a843de swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x34201424 vm_map_ram +EXPORT_SYMBOL vmlinux 0x34210ef6 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x3431ff52 dm_put_device +EXPORT_SYMBOL vmlinux 0x34339fd1 simple_getattr +EXPORT_SYMBOL vmlinux 0x3437bc29 elv_rb_find +EXPORT_SYMBOL vmlinux 0x345488dc netdev_notice +EXPORT_SYMBOL vmlinux 0x3469b22c set_nlink +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34744046 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x34833404 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349da488 single_open +EXPORT_SYMBOL vmlinux 0x34b98def journal_stop +EXPORT_SYMBOL vmlinux 0x34bbf85f km_state_notify +EXPORT_SYMBOL vmlinux 0x34e9832d scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x34f20d12 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x350f1954 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x35225ea3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3552cb09 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x35536dd9 inode_init_owner +EXPORT_SYMBOL vmlinux 0x355b445e nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x355ec2f6 dst_discard +EXPORT_SYMBOL vmlinux 0x356a2d8c kill_litter_super +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35886baa mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x35946f04 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x359e3900 module_put +EXPORT_SYMBOL vmlinux 0x359fb87f dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x35a05814 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x35b4b6c0 proc_create_data +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35e23d59 devm_free_irq +EXPORT_SYMBOL vmlinux 0x35f7e8f2 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3611a924 drop_super +EXPORT_SYMBOL vmlinux 0x361ee91d spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x362ac369 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x362e4a98 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a176a8 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x36b000f2 ip_options_compile +EXPORT_SYMBOL vmlinux 0x36db8ae3 load_nls_default +EXPORT_SYMBOL vmlinux 0x36e086df truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x3701b64b phy_stop +EXPORT_SYMBOL vmlinux 0x37207b01 mdiobus_read +EXPORT_SYMBOL vmlinux 0x37250dda ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x372b0cc7 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37494e6b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x37687ac6 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x378e7074 set_trace_device +EXPORT_SYMBOL vmlinux 0x3795c70d pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c04552 sock_i_ino +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382fc2e3 mii_check_media +EXPORT_SYMBOL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x38746561 acpi_bus_add +EXPORT_SYMBOL vmlinux 0x38762f0c mii_check_link +EXPORT_SYMBOL vmlinux 0x387f0387 user_revoke +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38896bdd generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x389bfe0d rtc_lock +EXPORT_SYMBOL vmlinux 0x389c10ee tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x38a5078c request_key_async +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38bec1f0 filp_close +EXPORT_SYMBOL vmlinux 0x38e13cb3 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x38e15d65 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x3906355f vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x3917a42b genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395c3eb9 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a67e98 fb_blank +EXPORT_SYMBOL vmlinux 0x39af562a sk_reset_timer +EXPORT_SYMBOL vmlinux 0x39bb372f dq_data_lock +EXPORT_SYMBOL vmlinux 0x39de5670 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0b7e75 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3a17e5e4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a266587 dma_find_channel +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a42b8de scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x3a5f7c34 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3a68bc1c netif_napi_del +EXPORT_SYMBOL vmlinux 0x3a6925d3 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x3a6bc56c __nla_reserve +EXPORT_SYMBOL vmlinux 0x3a94f7cb udp_poll +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa4549a writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x3aa45b0f console_stop +EXPORT_SYMBOL vmlinux 0x3aad87fd __destroy_inode +EXPORT_SYMBOL vmlinux 0x3ac3af16 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x3adcd18c tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x3af8c4f1 __page_symlink +EXPORT_SYMBOL vmlinux 0x3b1a8006 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x3b2c5ee5 serio_close +EXPORT_SYMBOL vmlinux 0x3b2c83e7 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x3b2e3aa6 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b39c869 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x3b4ceb4a up_write +EXPORT_SYMBOL vmlinux 0x3b62de10 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x3b72fc98 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x3b92480d vfs_readlink +EXPORT_SYMBOL vmlinux 0x3b9c3f1e d_rehash +EXPORT_SYMBOL vmlinux 0x3bcb166d nonseekable_open +EXPORT_SYMBOL vmlinux 0x3bcbbb33 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3beb690b lg_local_unlock +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c446dd8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x3c5f37d5 datagram_poll +EXPORT_SYMBOL vmlinux 0x3c64db56 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x3c753b51 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3c7d75f2 udp_ioctl +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9e620e scsi_init_io +EXPORT_SYMBOL vmlinux 0x3ce064f8 tty_port_put +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d004561 kill_block_super +EXPORT_SYMBOL vmlinux 0x3d005dbd ___pskb_trim +EXPORT_SYMBOL vmlinux 0x3d1e8f21 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d2beb96 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x3d3a2fbe inet_del_protocol +EXPORT_SYMBOL vmlinux 0x3d3a68cc dcb_getapp +EXPORT_SYMBOL vmlinux 0x3d43545b inet_ioctl +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d9dad6d __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dc08497 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3dc4df62 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de0c7a4 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3dfa2a06 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0582a6 skb_queue_head +EXPORT_SYMBOL vmlinux 0x3e0eb990 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x3e18b1c5 __mutex_init +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e401055 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e46733f start_tty +EXPORT_SYMBOL vmlinux 0x3e518f61 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x3e526b19 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8cfe6f disk_stack_limits +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3edc89dd __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f1593fc netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x3f228386 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x3f26d56b cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x3f2d77cb jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3f2f8905 revert_creds +EXPORT_SYMBOL vmlinux 0x3f3bc02c pnp_is_active +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5c77ef rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x3f695780 netif_skb_features +EXPORT_SYMBOL vmlinux 0x3f71faa1 mempool_create +EXPORT_SYMBOL vmlinux 0x3f7aaa85 iunique +EXPORT_SYMBOL vmlinux 0x3f7d0fd5 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x3fa1b3b2 node_data +EXPORT_SYMBOL vmlinux 0x3fc25bf7 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3fe264cd skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3fe4a1b5 security_path_symlink +EXPORT_SYMBOL vmlinux 0x3fe60765 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x4017d2bb tty_kref_put +EXPORT_SYMBOL vmlinux 0x40256835 complete_all +EXPORT_SYMBOL vmlinux 0x402b70ab vfs_open +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404280c9 dentry_unhash +EXPORT_SYMBOL vmlinux 0x40485fd6 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406ed92a dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x40729bc3 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x4075b078 dquot_enable +EXPORT_SYMBOL vmlinux 0x40798292 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x40956df7 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a828bd xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e3e640 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x40fae193 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x40fd039f pci_disable_obff +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a2562 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x415a0772 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x4165d4da __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41bd0534 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x41c4a245 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x41c6326a thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x41e9ef02 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x41f12361 __netdev_printk +EXPORT_SYMBOL vmlinux 0x420c6edb bdget_disk +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42251922 do_splice_direct +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4267975f generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x427a72f7 mmc_add_host +EXPORT_SYMBOL vmlinux 0x427b1d08 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x42867ad7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x4287cc4c get_unmapped_area +EXPORT_SYMBOL vmlinux 0x428e6c19 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42b0325e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42cb498f jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x42fa7609 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x4300f7ac dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x4301d2c2 nf_reinject +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ac23b pci_remove_bus +EXPORT_SYMBOL vmlinux 0x430d2f00 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x43261dca _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x43385ad9 acpi_pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435d4cab blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436fe2b3 bio_map_kern +EXPORT_SYMBOL vmlinux 0x439370c1 dm_io +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43e8cc45 nobh_write_end +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fa5dba jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x444c6d0e gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4451d270 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447942a6 netdev_update_features +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a1ea16 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b3e845 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x44b72d47 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44c9b498 aio_complete +EXPORT_SYMBOL vmlinux 0x44d26e25 phy_print_status +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45044497 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4523ebe3 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x452c53c5 mpage_writepages +EXPORT_SYMBOL vmlinux 0x452ebe86 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453ed738 dev_mc_del +EXPORT_SYMBOL vmlinux 0x454e9b57 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x455a3f9c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x456c8dba input_flush_device +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4589cf87 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x4591a58b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c463d8 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x45cb34af __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45d6cbca cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x45d867b9 inet6_getname +EXPORT_SYMBOL vmlinux 0x45d92f9a dev_notice +EXPORT_SYMBOL vmlinux 0x45e13573 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x45e87dc6 kdb_current_task +EXPORT_SYMBOL vmlinux 0x45f845f2 _dev_info +EXPORT_SYMBOL vmlinux 0x4605a23d ida_simple_get +EXPORT_SYMBOL vmlinux 0x46102531 ihold +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4632e3d8 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x46545187 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466649c3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4694b154 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x4695c730 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46c7d0fa release_firmware +EXPORT_SYMBOL vmlinux 0x46ce3010 __devm_release_region +EXPORT_SYMBOL vmlinux 0x46d80ae9 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x46e3a7f9 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x46e81f4a swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x46ec4f43 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x46f9ed81 km_report +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4712138a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x47223498 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x4735da1b register_md_personality +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x4755b4fb ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4757d718 revalidate_disk +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x47693572 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x4775df29 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x478cfadc block_write_begin +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b668fe netlink_ack +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c35bde journal_update_format +EXPORT_SYMBOL vmlinux 0x47c7b0d2 cpu_number +EXPORT_SYMBOL vmlinux 0x47ea2fa1 neigh_create +EXPORT_SYMBOL vmlinux 0x47f067cb amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48026fcc register_framebuffer +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4862d4f6 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48d2b151 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x48f7e0fd generic_read_dir +EXPORT_SYMBOL vmlinux 0x48fc37a2 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49059061 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x491bd5fe dev_get_by_index +EXPORT_SYMBOL vmlinux 0x49272101 genphy_resume +EXPORT_SYMBOL vmlinux 0x4945e442 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4965c790 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x4970cd49 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x49717d6e set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x498059f7 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x49aaf401 elevator_change +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49da2a96 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x49e9eade dev_load +EXPORT_SYMBOL vmlinux 0x49fc235d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x4a043dc6 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x4a085703 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a367be9 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4a53f966 arp_tbl +EXPORT_SYMBOL vmlinux 0x4a6dd6f0 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x4a70131a block_write_end +EXPORT_SYMBOL vmlinux 0x4aa21934 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x4aa5df96 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x4aad52d7 mempool_free +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4adfc989 simple_release_fs +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b06d2e7 complete +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b110875 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x4b28c04c pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x4b414ce4 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x4b4faf16 default_llseek +EXPORT_SYMBOL vmlinux 0x4b57230d phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8219ef __ip_dev_find +EXPORT_SYMBOL vmlinux 0x4bbb35b4 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x4bd3acc6 vga_client_register +EXPORT_SYMBOL vmlinux 0x4bd9125c path_put +EXPORT_SYMBOL vmlinux 0x4be7e3b5 seq_putc +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c220d1f tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x4c3149ac filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x4c4fef19 kernel_stack +EXPORT_SYMBOL vmlinux 0x4c6544f5 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4c765dae blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x4c926d8e md_check_recovery +EXPORT_SYMBOL vmlinux 0x4ca7f6eb tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cadb35c agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x4cb16a0d journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x4cbbc2db bioset_create +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc7caaf __scm_destroy +EXPORT_SYMBOL vmlinux 0x4cd8f71a handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf331b7 sock_release +EXPORT_SYMBOL vmlinux 0x4cf5d90d __put_cred +EXPORT_SYMBOL vmlinux 0x4d031497 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x4d1023f8 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d20669a udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x4d233d3c dquot_transfer +EXPORT_SYMBOL vmlinux 0x4d3a078f abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4d3ce5e7 sync_blockdev +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d46af5a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4d78a962 amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x4d80cd2a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4d884629 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de7c2fe amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df8b552 serio_open +EXPORT_SYMBOL vmlinux 0x4dfb7246 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x4e04f4e4 neigh_lookup +EXPORT_SYMBOL vmlinux 0x4e05d2c0 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e21999c acpi_get_child +EXPORT_SYMBOL vmlinux 0x4e243a52 pci_get_device +EXPORT_SYMBOL vmlinux 0x4e2b2e88 __pagevec_release +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4b4dec scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x4e531d1c __blk_run_queue +EXPORT_SYMBOL vmlinux 0x4e574275 md_write_start +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e8364a5 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x4e87c71d tcp_shutdown +EXPORT_SYMBOL vmlinux 0x4e932956 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x4e9627de request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea3fb63 f_setown +EXPORT_SYMBOL vmlinux 0x4eae14f2 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4f17191d nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x4f1bc2a5 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f245cc3 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fb27126 d_instantiate +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fdf5861 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x4ff921c4 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x4ff9e7e9 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5023c924 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x5048d909 phy_disconnect +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50acc4b8 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x50c1a4e6 __get_user_pages +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511ab427 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x512b7c7f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x5138e1f2 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5174eeac bio_copy_user +EXPORT_SYMBOL vmlinux 0x518e77e1 input_register_handler +EXPORT_SYMBOL vmlinux 0x51a9b8f6 follow_down_one +EXPORT_SYMBOL vmlinux 0x51c255f0 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x51c6b21a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x51cfa0bc tcp_ioctl +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ddb1ad add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520d9e89 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524bde1c dm_register_target +EXPORT_SYMBOL vmlinux 0x525c0aec eth_type_trans +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5264c5ec kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x526ef161 acpi_bus_generate_proc_event +EXPORT_SYMBOL vmlinux 0x527dd878 journal_clear_err +EXPORT_SYMBOL vmlinux 0x52a9db7d mmc_erase +EXPORT_SYMBOL vmlinux 0x52b72470 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x52b779ab i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x52c3e6f1 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52dab2ef n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x52de818b __quota_error +EXPORT_SYMBOL vmlinux 0x52fb0e30 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x530164e8 dev_add_pack +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5310fe6d current_task +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532f75dd journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5341027d ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x5355903f pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x535b4b19 dev_driver_string +EXPORT_SYMBOL vmlinux 0x5369feaa ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53b90181 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x53d29a4c scsi_get_command +EXPORT_SYMBOL vmlinux 0x53e0447f tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x53f6ffbc wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x54064975 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x541282ad touch_atime +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542bbe4f bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x5435809a ppp_dev_name +EXPORT_SYMBOL vmlinux 0x543b83b0 bio_alloc +EXPORT_SYMBOL vmlinux 0x543d11fe qdisc_destroy +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544bed8f in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x54554948 kobject_put +EXPORT_SYMBOL vmlinux 0x54568b75 register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x54a8e933 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aa6357 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x54b1897c compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x54dc4858 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e70e36 md_flush_request +EXPORT_SYMBOL vmlinux 0x54eee1f6 security_path_unlink +EXPORT_SYMBOL vmlinux 0x54f8e369 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x550ba4a3 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x552456a3 dev_uc_add +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554f6c59 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x55671680 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55771879 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x557f4d45 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x559e4f9b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x55ce6c69 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x55e1f0c7 journal_ack_err +EXPORT_SYMBOL vmlinux 0x55e6f8b9 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x55f100e5 mpage_writepage +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56073030 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x560c6a38 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x5611e23a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x5643ff6f journal_create +EXPORT_SYMBOL vmlinux 0x564b9812 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x564d77b4 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x566f5847 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x5675373f bio_put +EXPORT_SYMBOL vmlinux 0x56802771 padata_alloc +EXPORT_SYMBOL vmlinux 0x56ac173a bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x56bc9977 processors +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dafde1 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5713ff5f register_netdevice +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574be55d __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x574cc9ed scm_fp_dup +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5772582a block_read_full_page +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a387b1 journal_abort +EXPORT_SYMBOL vmlinux 0x57a6ccd0 down_read +EXPORT_SYMBOL vmlinux 0x57b294b5 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x57b6085e mdiobus_scan +EXPORT_SYMBOL vmlinux 0x57d48e80 generic_getxattr +EXPORT_SYMBOL vmlinux 0x5800db85 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x580decac simple_write_end +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x5860aad4 add_wait_queue +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x58643c41 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x58a2c366 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0x58ac2dc9 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x5918753e blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5933db75 elevator_init +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59513ebc tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x595d8c1e pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59759b2b vfsmount_lock +EXPORT_SYMBOL vmlinux 0x598d82dc genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x598eb555 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x59a8374f netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59ca295b neigh_seq_start +EXPORT_SYMBOL vmlinux 0x59cd56c4 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e52722 textsearch_register +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a2c7c08 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x5a3360ee pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x5a34a8a0 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a49816f pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5a5e53bb agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x5a62d7de xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x5a6c7168 security_path_truncate +EXPORT_SYMBOL vmlinux 0x5a6cdcdb sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a777200 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x5a78ff44 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x5a7f68db lookup_hash +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5ac3377a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5adff1f6 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5ae4fa58 mutex_lock +EXPORT_SYMBOL vmlinux 0x5aeb145f complete_and_exit +EXPORT_SYMBOL vmlinux 0x5b047f5f __ip_select_ident +EXPORT_SYMBOL vmlinux 0x5b2ee636 dqget +EXPORT_SYMBOL vmlinux 0x5b48a3c5 sock_no_poll +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5e5248 thaw_bdev +EXPORT_SYMBOL vmlinux 0x5b6b3bf4 generic_removexattr +EXPORT_SYMBOL vmlinux 0x5b6c9815 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x5b7f714e scsi_device_resume +EXPORT_SYMBOL vmlinux 0x5b883ac1 mddev_congested +EXPORT_SYMBOL vmlinux 0x5b9b1d6b find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bd48bc9 simple_setattr +EXPORT_SYMBOL vmlinux 0x5bec6aaa sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x5bfc1eb3 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c40fc04 account_page_redirty +EXPORT_SYMBOL vmlinux 0x5c4c5f2f vc_resize +EXPORT_SYMBOL vmlinux 0x5c5de482 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x5c8b5ce8 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x5c90ea6b dev_addr_add +EXPORT_SYMBOL vmlinux 0x5c9ae0a9 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x5ca0d83c nf_afinfo +EXPORT_SYMBOL vmlinux 0x5cf74c50 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d15e04d neigh_direct_output +EXPORT_SYMBOL vmlinux 0x5d1e44a4 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x5d3ebba2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5d4cc304 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x5d4d8bc9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x5d59ebc4 lookup_bdev +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5ca42f generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d928bd0 vfs_readv +EXPORT_SYMBOL vmlinux 0x5dc3ec35 pci_find_bus +EXPORT_SYMBOL vmlinux 0x5dc4900f cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5de958b5 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x5de9a57b in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5df3e41b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5dfce726 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x5dfd29e5 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x5e0e193b buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x5e4a29dd __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e6be427 register_con_driver +EXPORT_SYMBOL vmlinux 0x5e7e50e7 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x5e81993e tcp_check_req +EXPORT_SYMBOL vmlinux 0x5e8818b7 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9b6468 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb95bc1 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5edd3bcb tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x5edf794b tc_classify +EXPORT_SYMBOL vmlinux 0x5ee2e031 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x5ee839df __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5ee8e3e4 do_splice_from +EXPORT_SYMBOL vmlinux 0x5ef314e3 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f2bfe97 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f403003 ip_route_input_common +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f5f3a6d vfs_follow_link +EXPORT_SYMBOL vmlinux 0x5f6bcbc5 bdget +EXPORT_SYMBOL vmlinux 0x5f75555a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x5f771d21 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5f86c4a1 pci_dev_get +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fb8c146 __d_drop +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60172d8c inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x601eb888 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60317e73 read_cache_pages +EXPORT_SYMBOL vmlinux 0x604da168 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60734fdb netdev_state_change +EXPORT_SYMBOL vmlinux 0x607533d9 register_netdev +EXPORT_SYMBOL vmlinux 0x6078887c genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x6095742f __secpath_destroy +EXPORT_SYMBOL vmlinux 0x609c2ac7 send_sig +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a2641f tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a4c3a5 acpi_root_dir +EXPORT_SYMBOL vmlinux 0x60c9df85 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x60d13bbe tcf_hash_search +EXPORT_SYMBOL vmlinux 0x60f21583 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x61068191 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61645c8d vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d88464 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x620811bb md_write_end +EXPORT_SYMBOL vmlinux 0x620a6d31 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6232afbd pci_fixup_device +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628ee610 journal_restart +EXPORT_SYMBOL vmlinux 0x62ad5b41 mount_ns +EXPORT_SYMBOL vmlinux 0x62be9f08 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x62dcf7a4 framebuffer_release +EXPORT_SYMBOL vmlinux 0x62f9cd91 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630769ea ppp_unit_number +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x633ba0eb simple_rmdir +EXPORT_SYMBOL vmlinux 0x633de27a fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x6344b092 bio_endio +EXPORT_SYMBOL vmlinux 0x63502ec8 simple_unlink +EXPORT_SYMBOL vmlinux 0x635694fa keyring_search +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x637d0bd1 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x63832b0c jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63a44c48 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x63b1b99b mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x63c1e7dc padata_stop +EXPORT_SYMBOL vmlinux 0x63c436b3 fget_raw +EXPORT_SYMBOL vmlinux 0x63e244ac twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fdcf92 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x6401db5b tty_set_operations +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6427cb31 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x642c4a88 iterate_mounts +EXPORT_SYMBOL vmlinux 0x6445ba83 bio_pair_release +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x647c3b3e __pskb_copy +EXPORT_SYMBOL vmlinux 0x647cdd52 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x648a39c9 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x648ce1e2 proto_register +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64d1ae9e blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x64d91352 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x64e583f6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x64e9dbfe __nlmsg_put +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x650c3845 agp_create_memory +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x652e8a7c mdio_bus_type +EXPORT_SYMBOL vmlinux 0x652eae1d __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x6535a633 nla_append +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565f743 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x656d990c scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x657c111a inet_addr_type +EXPORT_SYMBOL vmlinux 0x6582bdd4 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x6591e24d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x659bf58b __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x65b2c5aa skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x65b4c56f inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6600dc85 kill_pid +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x66122c75 sk_filter +EXPORT_SYMBOL vmlinux 0x6614c376 ip_defrag +EXPORT_SYMBOL vmlinux 0x662ddf8f dma_sync_wait +EXPORT_SYMBOL vmlinux 0x663eafd6 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x665ca238 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66a8c78c submit_bio +EXPORT_SYMBOL vmlinux 0x66c1db95 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x66f0a291 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x66fc6fbf scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x67016b76 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x6724596e ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6727db3b nf_hook_slow +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x6732384a km_query +EXPORT_SYMBOL vmlinux 0x673ace2c inc_nlink +EXPORT_SYMBOL vmlinux 0x673aff66 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675fac13 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x67697cff freeze_super +EXPORT_SYMBOL vmlinux 0x676a3e6e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x676bd21b qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x678fa87a lock_sock_fast +EXPORT_SYMBOL vmlinux 0x67a0306a percpu_counter_set +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ced607 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x67d396b0 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x67d9ac69 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x67ed34db inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x67f5939e sock_create_kern +EXPORT_SYMBOL vmlinux 0x68033f8e dcache_dir_open +EXPORT_SYMBOL vmlinux 0x6804126f netdev_change_features +EXPORT_SYMBOL vmlinux 0x687240ef netif_device_detach +EXPORT_SYMBOL vmlinux 0x687adcbf sget +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688aed9e d_delete +EXPORT_SYMBOL vmlinux 0x688f4205 dquot_release +EXPORT_SYMBOL vmlinux 0x68aca4ad down +EXPORT_SYMBOL vmlinux 0x68d510e8 __nla_put +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e4822d kmem_cache_size +EXPORT_SYMBOL vmlinux 0x68f77b47 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x6907453d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x690ff2c3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x691234fa iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x69193595 sk_free +EXPORT_SYMBOL vmlinux 0x69199a00 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x6936f297 ip_fragment +EXPORT_SYMBOL vmlinux 0x69692309 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6981228d consume_skb +EXPORT_SYMBOL vmlinux 0x6981d295 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x69886dcb input_event +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69aca1e9 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69dbc121 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e3019d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x69e612c3 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1ceaf2 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x6a3f041a generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6a3f91d8 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x6a494b7b d_find_alias +EXPORT_SYMBOL vmlinux 0x6a59244f da903x_query_status +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6aa1a01b rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae1fb82 d_lookup +EXPORT_SYMBOL vmlinux 0x6b0baf2b __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x6b0c30f6 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x6b142f31 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1eaff9 path_is_under +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b460967 idr_get_next +EXPORT_SYMBOL vmlinux 0x6b47929d free_netdev +EXPORT_SYMBOL vmlinux 0x6b6118db register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b654773 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b7c1e67 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x6b7ca14f prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x6b93111c sockfd_lookup +EXPORT_SYMBOL vmlinux 0x6ba2b7b2 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x6bb52830 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc5588c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c050a55 dev_open +EXPORT_SYMBOL vmlinux 0x6c148790 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x6c1908d3 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x6c355022 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c5101d8 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c75c083 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x6c9dce48 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6cb8d413 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x6cc0a611 get_gendisk +EXPORT_SYMBOL vmlinux 0x6cc34a03 dcache_readdir +EXPORT_SYMBOL vmlinux 0x6ce4b072 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0aba34 wait_for_completion +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d23137c i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x6d23c688 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6d25527a remove_arg_zero +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d408b18 alloc_file +EXPORT_SYMBOL vmlinux 0x6d4bc435 sock_update_classid +EXPORT_SYMBOL vmlinux 0x6d64acfd mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d8ee2c5 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x6dd3ebbc intel_gtt_insert_pages +EXPORT_SYMBOL vmlinux 0x6de9fc22 vfs_llseek +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e297a62 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6e2a81c0 tty_free_termios +EXPORT_SYMBOL vmlinux 0x6e3964e0 sock_init_data +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e848606 phy_connect +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6edc7cb4 tcp_close +EXPORT_SYMBOL vmlinux 0x6ef73eea blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f27df72 irq_set_chip +EXPORT_SYMBOL vmlinux 0x6f39ecae skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x6f3e5fcd mount_nodev +EXPORT_SYMBOL vmlinux 0x6f46441c ps2_drain +EXPORT_SYMBOL vmlinux 0x6f4c812f __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f5a39e0 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x6f92ceb5 get_io_context +EXPORT_SYMBOL vmlinux 0x6fa89de6 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fdb6aac bdevname +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x700a35e9 inet_bind +EXPORT_SYMBOL vmlinux 0x702b6c54 udplite_table +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x708bedee register_key_type +EXPORT_SYMBOL vmlinux 0x708d88b9 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x7097f264 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x709e30aa arp_find +EXPORT_SYMBOL vmlinux 0x70a5920a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x70b55f09 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d0e8e9 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70edbfe6 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x7110f715 intel_gtt_map_memory +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71366580 netif_napi_add +EXPORT_SYMBOL vmlinux 0x713cd235 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x716678a0 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x71685314 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7170dfa9 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718361aa softnet_data +EXPORT_SYMBOL vmlinux 0x7185b08f thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c8282f dev_warn +EXPORT_SYMBOL vmlinux 0x71d59f1a input_set_abs_params +EXPORT_SYMBOL vmlinux 0x71e2fa74 scsi_add_device +EXPORT_SYMBOL vmlinux 0x71e3cecb up +EXPORT_SYMBOL vmlinux 0x7205cdb0 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x7264fd45 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x7282bc60 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x728eb098 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7299220a sk_alloc +EXPORT_SYMBOL vmlinux 0x72a481a8 journal_start_commit +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72ca8038 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x72d63b8e __brelse +EXPORT_SYMBOL vmlinux 0x72e23ce5 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f6e0fe unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x73081c67 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734095d3 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x73571aeb led_brightness_set +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x7370c980 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7383e503 init_net +EXPORT_SYMBOL vmlinux 0x7398e235 __scm_send +EXPORT_SYMBOL vmlinux 0x73a78bc4 downgrade_write +EXPORT_SYMBOL vmlinux 0x73b0475b genphy_suspend +EXPORT_SYMBOL vmlinux 0x73b6d4ea netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x73c00372 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x73d5c8a5 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73ef4fa5 vfs_writev +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7414a15c dcache_dir_close +EXPORT_SYMBOL vmlinux 0x742e086c unregister_nls +EXPORT_SYMBOL vmlinux 0x742ff5c3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x743700ec generic_listxattr +EXPORT_SYMBOL vmlinux 0x7445f3b0 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x745a41f2 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x74636c29 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x7466c5d6 led_blink_set +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749045da ps2_handle_response +EXPORT_SYMBOL vmlinux 0x749f4165 irq_stat +EXPORT_SYMBOL vmlinux 0x74ac6b3d blk_end_request_all +EXPORT_SYMBOL vmlinux 0x74bbdc85 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d7f6cc tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x74de09ab scsi_unregister +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fb6ff9 generic_setxattr +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x7551debc panic_notifier_list +EXPORT_SYMBOL vmlinux 0x7564dccc cfb_fillrect +EXPORT_SYMBOL vmlinux 0x7566f99d free_task +EXPORT_SYMBOL vmlinux 0x756f7b1f posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7589e2ec generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x75b1f1fb kobject_get +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d19c68 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x75d3097f neigh_connected_output +EXPORT_SYMBOL vmlinux 0x75f8e7b9 fsync_bdev +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7611e4e8 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x76238c56 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x76360c79 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76859e62 set_blocksize +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x769515ab agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x769bde5f km_policy_notify +EXPORT_SYMBOL vmlinux 0x76bc695d backlight_force_update +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76ca6dc1 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x770798b5 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7732afb9 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77584af2 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x775c5e6d would_dump +EXPORT_SYMBOL vmlinux 0x7786604a input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779b6845 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c0a588 amd_northbridges +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e34e30 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f1314b jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x77f14b12 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x78144e57 simple_link +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785787cd clear_inode +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7877dc4d kmem_cache_free +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7883da00 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x788ec354 skb_insert +EXPORT_SYMBOL vmlinux 0x789bdca3 seq_printf +EXPORT_SYMBOL vmlinux 0x78bb3e24 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x78c77307 put_io_context +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79001526 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79144acb bio_sector_offset +EXPORT_SYMBOL vmlinux 0x79144edd i2c_transfer +EXPORT_SYMBOL vmlinux 0x7936c354 blk_rq_init +EXPORT_SYMBOL vmlinux 0x79396dd6 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7976f918 mapping_tagged +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79945d9f proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x79950b49 dquot_destroy +EXPORT_SYMBOL vmlinux 0x79a06bc6 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x79a38e61 ___ratelimit +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bf7d3a compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x79da890b ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x79f78649 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x79fbfc2d skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a36d966 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a54ca51 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7a683f2d sock_recvmsg +EXPORT_SYMBOL vmlinux 0x7a7e1127 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x7a9d6755 sock_wfree +EXPORT_SYMBOL vmlinux 0x7aa038aa write_one_page +EXPORT_SYMBOL vmlinux 0x7aa4ac71 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x7aa8bc6f dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac85277 __alloc_skb +EXPORT_SYMBOL vmlinux 0x7ac8e142 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7acb5471 ll_rw_block +EXPORT_SYMBOL vmlinux 0x7add198f search_binary_handler +EXPORT_SYMBOL vmlinux 0x7aebceec user_path_create +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b07b562 journal_errno +EXPORT_SYMBOL vmlinux 0x7b09d531 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x7b0c84c4 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7b1ac75c mii_nway_restart +EXPORT_SYMBOL vmlinux 0x7b2112e0 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x7b23e84a make_EII_client +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b48ef4a pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7b4d402e cad_pid +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b56bd05 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x7b65ac91 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7bb08eed find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x7bb8a2ac __napi_complete +EXPORT_SYMBOL vmlinux 0x7bbfe251 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x7bdd428c generic_write_sync +EXPORT_SYMBOL vmlinux 0x7beb7969 proc_symlink +EXPORT_SYMBOL vmlinux 0x7c09d6fc pipe_to_file +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c194772 blk_start_request +EXPORT_SYMBOL vmlinux 0x7c210af0 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x7c2aefd0 input_register_device +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c41a3cf blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4b6fad mb_cache_create +EXPORT_SYMBOL vmlinux 0x7c503e82 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c838f9a free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7ca46555 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x7ca47d00 udp_seq_open +EXPORT_SYMBOL vmlinux 0x7ca811d1 noop_llseek +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb6a067 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x7ce16b86 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x7ce91982 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x7cedc658 idr_remove_all +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d12a14f dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x7d197e36 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7d227942 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x7d4cb089 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x7d5c595e set_pages_wb +EXPORT_SYMBOL vmlinux 0x7d5ea23b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7d6222f2 rtnl_notify +EXPORT_SYMBOL vmlinux 0x7d6895ad usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x7d8a2ff5 generic_readlink +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfe9ac1 console_start +EXPORT_SYMBOL vmlinux 0x7e11e053 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e12a299 sock_wake_async +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e57e843 __elv_add_request +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7ec8f9a7 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7edd4caf twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7f046a22 stop_tty +EXPORT_SYMBOL vmlinux 0x7f18b194 kacpi_hotplug_wq +EXPORT_SYMBOL vmlinux 0x7f18b27e find_get_page +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f42f1a2 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x7f51f2d3 d_genocide +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f732258 set_binfmt +EXPORT_SYMBOL vmlinux 0x7f7845e5 dev_change_flags +EXPORT_SYMBOL vmlinux 0x7f8b6339 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0x7f9a6932 bio_free +EXPORT_SYMBOL vmlinux 0x7f9f3ed3 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x7fb18c2b mount_pseudo +EXPORT_SYMBOL vmlinux 0x7fde6ac7 backlight_device_register +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x8022fda1 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x8029af7f netdev_info +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x80434c19 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x8045f97f init_special_inode +EXPORT_SYMBOL vmlinux 0x8058f9b3 __rta_fill +EXPORT_SYMBOL vmlinux 0x8064e993 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x809f7dae simple_write_begin +EXPORT_SYMBOL vmlinux 0x80a462b5 unlock_super +EXPORT_SYMBOL vmlinux 0x80bcc41e arp_invalidate +EXPORT_SYMBOL vmlinux 0x80cd27e2 dput +EXPORT_SYMBOL vmlinux 0x80e07abc seq_bitmap +EXPORT_SYMBOL vmlinux 0x80f38422 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x810be2e8 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x810f6499 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x811366b1 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x813084a4 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x81317c26 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815e9c47 block_commit_write +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x817a0a6c kthread_bind +EXPORT_SYMBOL vmlinux 0x81a153ce locks_remove_posix +EXPORT_SYMBOL vmlinux 0x81a33e8c inet_csk_accept +EXPORT_SYMBOL vmlinux 0x81a9d8be lock_rename +EXPORT_SYMBOL vmlinux 0x81cce72a blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de65f2 dquot_file_open +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81ec8680 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x81ecf9b8 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x81ed968a icmpv6_send +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821e2969 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x822ffb9f dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x8241cc8b pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x824c3063 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x825bf772 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x829d4e08 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x82a3dc33 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x82a54602 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c6b5e0 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x82dba116 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x82ff841d register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x830b4c93 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8332e66d proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x833f626f mdiobus_free +EXPORT_SYMBOL vmlinux 0x8345c45d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x83557b63 is_container_init +EXPORT_SYMBOL vmlinux 0x8373d94c pci_enable_ido +EXPORT_SYMBOL vmlinux 0x837c4424 get_fs_type +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x83887350 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b954ba scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x83c0391d release_sock +EXPORT_SYMBOL vmlinux 0x83c1013f inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84104a33 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841c0e33 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x84321926 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x8447c968 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x848ee70c idr_remove +EXPORT_SYMBOL vmlinux 0x8490a655 pci_restore_state +EXPORT_SYMBOL vmlinux 0x8490ca70 genphy_update_link +EXPORT_SYMBOL vmlinux 0x84a3e2cb __bforget +EXPORT_SYMBOL vmlinux 0x84ae99f4 vmtruncate +EXPORT_SYMBOL vmlinux 0x84b7fbb6 generic_fillattr +EXPORT_SYMBOL vmlinux 0x84bee031 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x84c3d602 input_unregister_device +EXPORT_SYMBOL vmlinux 0x84dad89c del_gendisk +EXPORT_SYMBOL vmlinux 0x84ec0e6a udplite_prot +EXPORT_SYMBOL vmlinux 0x851a50c4 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x85206512 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x85491a23 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x8556df7a gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856f6f43 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x85710cd2 secpath_dup +EXPORT_SYMBOL vmlinux 0x857437d9 input_grab_device +EXPORT_SYMBOL vmlinux 0x85822d0d inode_dio_done +EXPORT_SYMBOL vmlinux 0x859463aa seq_release_private +EXPORT_SYMBOL vmlinux 0x85b4e501 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bba921 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x85d9666c arp_send +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85fd75fb seq_release +EXPORT_SYMBOL vmlinux 0x862542fc bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x863bb132 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865b76fd tty_port_close +EXPORT_SYMBOL vmlinux 0x86624f0b blk_free_tags +EXPORT_SYMBOL vmlinux 0x86637de8 ilookup +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86b98441 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x86bfae20 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86e28d05 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872b5c4b swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x87334d7d file_update_time +EXPORT_SYMBOL vmlinux 0x875e2cdf lock_may_read +EXPORT_SYMBOL vmlinux 0x87627954 kill_fasync +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x87776894 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87aae0e0 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x87ad4945 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x87be2569 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x87c56201 load_nls +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87d8f540 mnt_unpin +EXPORT_SYMBOL vmlinux 0x880f8bb2 do_splice_to +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8853eee1 input_release_device +EXPORT_SYMBOL vmlinux 0x8870e2c9 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x88970333 mount_single +EXPORT_SYMBOL vmlinux 0x88a8eafb locks_init_lock +EXPORT_SYMBOL vmlinux 0x88b04e39 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0x88c0912b submit_bh +EXPORT_SYMBOL vmlinux 0x88dcb877 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x88f00d18 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x88fa2fbf tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x891535b2 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x89300e83 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x895cfa5a skb_pad +EXPORT_SYMBOL vmlinux 0x8967f096 sock_rfree +EXPORT_SYMBOL vmlinux 0x89743205 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89790c23 __free_pages +EXPORT_SYMBOL vmlinux 0x898a0b8b agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x8997efe9 journal_flush +EXPORT_SYMBOL vmlinux 0x89a3c89f find_lock_page +EXPORT_SYMBOL vmlinux 0x89a7c934 tty_throttle +EXPORT_SYMBOL vmlinux 0x89aa3adf skb_checksum_help +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89cbeeac sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89e362e5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x89ec4ea4 netdev_warn +EXPORT_SYMBOL vmlinux 0x89eff4c4 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x89fdef85 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x8a08530e sock_no_getname +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1ae636 mutex_trylock +EXPORT_SYMBOL vmlinux 0x8a1b61fe blk_fetch_request +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4b4fe1 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7aaeef sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a90a4d3 d_move +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aae575e bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x8ac22ad6 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad077aa sk_stream_error +EXPORT_SYMBOL vmlinux 0x8adae7ec pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x8add5ce0 i2c_release_client +EXPORT_SYMBOL vmlinux 0x8afd89b6 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x8b0de954 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x8b0faba6 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1ce044 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x8b1e474f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8b2056ce pnp_possible_config +EXPORT_SYMBOL vmlinux 0x8b27b36d genl_notify +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b4aa869 scsi_print_result +EXPORT_SYMBOL vmlinux 0x8b50d6ab register_sysctl +EXPORT_SYMBOL vmlinux 0x8b52a8fa tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6f458a kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x8b7e2c57 ilookup5 +EXPORT_SYMBOL vmlinux 0x8b91e458 dst_destroy +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9955a8 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x8ba16467 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x8ba395a0 tty_vhangup +EXPORT_SYMBOL vmlinux 0x8bbf98e3 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x8bd6609a dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x8bdc5c22 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c01a8c4 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c321bc2 uart_resume_port +EXPORT_SYMBOL vmlinux 0x8c34070f net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x8c721a8b scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x8c75fece nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x8c8aad56 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x8c8cce21 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x8cb2adc3 idr_for_each +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d0e5d38 journal_load +EXPORT_SYMBOL vmlinux 0x8d286fba padata_free +EXPORT_SYMBOL vmlinux 0x8d33489d filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d5c9379 mmc_release_host +EXPORT_SYMBOL vmlinux 0x8d6906d4 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x8d6a7916 find_inode_number +EXPORT_SYMBOL vmlinux 0x8d82e317 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db98a2f pci_set_master +EXPORT_SYMBOL vmlinux 0x8dca9ef3 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x8ddb8b73 misc_deregister +EXPORT_SYMBOL vmlinux 0x8de7a46a dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8de9995a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x8de9cc30 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8dffdb4e blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e36f763 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8e6bc3e4 inet_select_addr +EXPORT_SYMBOL vmlinux 0x8eabf5b6 names_cachep +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ede2cae copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x8ede6778 vfs_fsync +EXPORT_SYMBOL vmlinux 0x8f0a5e51 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f311109 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4da837 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x8f52a40d kobject_set_name +EXPORT_SYMBOL vmlinux 0x8f55b213 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x8f5fd604 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x8f681f4c devm_gpio_request +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f719cfe textsearch_unregister +EXPORT_SYMBOL vmlinux 0x8f9037a0 cdrom_release +EXPORT_SYMBOL vmlinux 0x8f9644be blk_make_request +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa16f5d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x8fba1a79 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904eab8f unregister_key_type +EXPORT_SYMBOL vmlinux 0x90601ae5 neigh_update +EXPORT_SYMBOL vmlinux 0x9066c059 sk_common_release +EXPORT_SYMBOL vmlinux 0x9072e4ce alloc_fcdev +EXPORT_SYMBOL vmlinux 0x9078065c __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x907f3da9 napi_complete +EXPORT_SYMBOL vmlinux 0x90819a30 release_pages +EXPORT_SYMBOL vmlinux 0x9090a023 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x90a1601f dmi_check_system +EXPORT_SYMBOL vmlinux 0x90d5ad71 lock_fb_info +EXPORT_SYMBOL vmlinux 0x90e5d0b8 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x90e668fd tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x90f7c0e1 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x9105e3c3 clear_nlink +EXPORT_SYMBOL vmlinux 0x913a3647 uart_match_port +EXPORT_SYMBOL vmlinux 0x913d4f63 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x914140dd neigh_event_ns +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9174b90d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x91927954 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x9197b6e0 pci_map_rom +EXPORT_SYMBOL vmlinux 0x91a3c3f7 dev_crit +EXPORT_SYMBOL vmlinux 0x91a3cdf4 down_timeout +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b1c90e gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x91ccb415 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x91e0610d dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x91e1edaa tty_name +EXPORT_SYMBOL vmlinux 0x91f04916 try_module_get +EXPORT_SYMBOL vmlinux 0x921d7fe5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92659baf vc_cons +EXPORT_SYMBOL vmlinux 0x9266508a neigh_parms_release +EXPORT_SYMBOL vmlinux 0x92760221 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9276b9c9 create_proc_entry +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9297e8ae mutex_unlock +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c35c38 genphy_read_status +EXPORT_SYMBOL vmlinux 0x92d9adce pagecache_write_end +EXPORT_SYMBOL vmlinux 0x92e286e2 simple_statfs +EXPORT_SYMBOL vmlinux 0x92f9d191 __frontswap_store +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9310bbcc netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9327f5ce _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x935b9b27 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x93641590 pci_get_class +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93abe213 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x93bb93b9 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x93befa3f try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x93c651be acpi_info +EXPORT_SYMBOL vmlinux 0x93d80e4b shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x940f80ca cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x942dc435 module_layout +EXPORT_SYMBOL vmlinux 0x94517f4e blkdev_fsync +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94e76f87 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x94f393b4 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x9512bea8 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x9518b623 register_shrinker +EXPORT_SYMBOL vmlinux 0x95207d46 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x95435056 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955075b7 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x957b7a7a gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x957b9de0 ata_port_printk +EXPORT_SYMBOL vmlinux 0x957f9287 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x959cc1db ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x95b791f1 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x95c076ff kill_pgrp +EXPORT_SYMBOL vmlinux 0x95de2fb4 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x95e3a78e dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x95e85eb0 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x95eca464 setup_new_exec +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x96018d15 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x960619e6 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x96110f0b tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x96349c37 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x9644a16d dump_write +EXPORT_SYMBOL vmlinux 0x964d1d4c vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x9665c92f padata_start +EXPORT_SYMBOL vmlinux 0x96876c69 __lock_buffer +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x969c14ce dev_alloc_name +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b92e3e pci_iounmap +EXPORT_SYMBOL vmlinux 0x96baf4e2 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96eb5479 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x96f513b8 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9700d1ae agp_free_memory +EXPORT_SYMBOL vmlinux 0x9725b589 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x974ee216 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x974f9130 __ps2_command +EXPORT_SYMBOL vmlinux 0x97516173 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9770a549 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x97835398 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97992d36 seq_open_private +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a0e5d1 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x97b0a09b d_add_ci +EXPORT_SYMBOL vmlinux 0x97b92a87 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x97c7f7ce proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e0adf8 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x97e4db62 dma_pool_create +EXPORT_SYMBOL vmlinux 0x97e6b7b4 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x98103485 mpage_readpages +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98295afe mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x988dbda5 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a51692 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x98c4266e netif_device_attach +EXPORT_SYMBOL vmlinux 0x98d36d99 set_page_dirty +EXPORT_SYMBOL vmlinux 0x98d754d9 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x98dcc231 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99441841 twl6040_power +EXPORT_SYMBOL vmlinux 0x994761ec i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x99742525 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x99799217 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999daab7 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a2343b mnt_pin +EXPORT_SYMBOL vmlinux 0x99acc5c8 bd_set_size +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d91681 inet_getname +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a006f62 pci_target_state +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3e1eef generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x9a537c99 idr_pre_get +EXPORT_SYMBOL vmlinux 0x9a5d3daf dev_gro_receive +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a761620 vfs_getattr +EXPORT_SYMBOL vmlinux 0x9a7c952d iput +EXPORT_SYMBOL vmlinux 0x9a9b96a7 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x9aaa26b3 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x9ab053b8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x9ab2a7ab acpi_get_physical_device +EXPORT_SYMBOL vmlinux 0x9adb3ded tty_unregister_device +EXPORT_SYMBOL vmlinux 0x9af51246 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b31c6ea mpage_readpage +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6fff93 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b8d923c ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bcde527 vfs_readdir +EXPORT_SYMBOL vmlinux 0x9bce9da5 tcp_connect +EXPORT_SYMBOL vmlinux 0x9bf5cc8b tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x9bfc609b journal_dirty_data +EXPORT_SYMBOL vmlinux 0x9c0a870d d_path +EXPORT_SYMBOL vmlinux 0x9c442e35 udp_disconnect +EXPORT_SYMBOL vmlinux 0x9c46d06b gen_new_estimator +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5a73e9 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c71a3f3 security_path_chmod +EXPORT_SYMBOL vmlinux 0x9cab5a46 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x9cb27b28 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc504eb km_policy_expired +EXPORT_SYMBOL vmlinux 0x9cdb783c rtnl_unicast +EXPORT_SYMBOL vmlinux 0x9ce0cc98 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x9ce8aa55 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x9cf94d9e acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d101aaa misc_register +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d279b4b twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3431df netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x9d350119 bio_add_page +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d67e85c tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x9d6dbebd kobject_init +EXPORT_SYMBOL vmlinux 0x9d7f0134 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x9d94beaa max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x9db65570 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x9dbc5359 keyring_clear +EXPORT_SYMBOL vmlinux 0x9dc7e179 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x9ded188e kobject_del +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e29f85d security_path_link +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e43398b scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x9e452987 alloc_disk +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7884fe pci_enable_msix +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e7f9a45 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x9e8cf87a __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebc1a72 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebdf059 x86_hyper +EXPORT_SYMBOL vmlinux 0x9ecfc6cc dev_deactivate +EXPORT_SYMBOL vmlinux 0x9ed3782a inet_accept +EXPORT_SYMBOL vmlinux 0x9f0bae4f fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9f16b3e2 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2d924b dev_mc_init +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f674bc0 put_tty_driver +EXPORT_SYMBOL vmlinux 0x9f6e19ab mem_section +EXPORT_SYMBOL vmlinux 0x9f6e8b04 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x9f74bff9 page_put_link +EXPORT_SYMBOL vmlinux 0x9f7b813c open_exec +EXPORT_SYMBOL vmlinux 0x9f7d325f tcf_action_exec +EXPORT_SYMBOL vmlinux 0x9f87282b tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x9f912df2 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0274cae zero_fill_bio +EXPORT_SYMBOL vmlinux 0xa03b2f71 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06d590f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa09956db blk_run_queue +EXPORT_SYMBOL vmlinux 0xa0a6e853 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0f92589 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa1060b63 md_register_thread +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa109688a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1502765 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xa161a6d9 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xa16ea880 blk_register_region +EXPORT_SYMBOL vmlinux 0xa170b6bb dquot_alloc +EXPORT_SYMBOL vmlinux 0xa1810a68 generic_write_checks +EXPORT_SYMBOL vmlinux 0xa19f060e sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xa1a7cefe rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa1b37377 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c32fcd blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c89b8b bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xa1e5302d path_get +EXPORT_SYMBOL vmlinux 0xa1e6f6e2 tcp_poll +EXPORT_SYMBOL vmlinux 0xa1ec3a01 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa252417d scsi_register +EXPORT_SYMBOL vmlinux 0xa27146c7 vga_get +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a5a6eb ps2_init +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2b9d6af __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xa2bf22e7 security_path_mknod +EXPORT_SYMBOL vmlinux 0xa2c52810 serial8250_register_port +EXPORT_SYMBOL vmlinux 0xa2cae00a pipe_lock +EXPORT_SYMBOL vmlinux 0xa2da8711 set_pages_x +EXPORT_SYMBOL vmlinux 0xa2e429a9 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa309d5f7 security_path_chown +EXPORT_SYMBOL vmlinux 0xa31807da get_user_pages +EXPORT_SYMBOL vmlinux 0xa31bcde0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xa3313886 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa35f765a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa38a5d94 poll_initwait +EXPORT_SYMBOL vmlinux 0xa38e5852 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xa390ed07 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa39cff96 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xa3a608f5 find_or_create_page +EXPORT_SYMBOL vmlinux 0xa3a77c69 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa3cc6217 dcb_setapp +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa43985ff vfs_link +EXPORT_SYMBOL vmlinux 0xa4468f66 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xa44fa7b5 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa472b8a0 kernel_connect +EXPORT_SYMBOL vmlinux 0xa488011d check_disk_change +EXPORT_SYMBOL vmlinux 0xa4b0214e scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4de7ba1 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xa4e5c2b0 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xa4e7d0a4 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xa4eeee2e cfb_copyarea +EXPORT_SYMBOL vmlinux 0xa5044922 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xa51893de mempool_create_node +EXPORT_SYMBOL vmlinux 0xa51df2b4 down_killable +EXPORT_SYMBOL vmlinux 0xa546cecc input_register_handle +EXPORT_SYMBOL vmlinux 0xa56e56bc inode_init_always +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa57e99a8 icmp_send +EXPORT_SYMBOL vmlinux 0xa589985e security_inode_readlink +EXPORT_SYMBOL vmlinux 0xa58a3166 lg_local_lock +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a7ba32 dma_supported +EXPORT_SYMBOL vmlinux 0xa5c7183c jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xa5e4f65c __next_cpu_nr +EXPORT_SYMBOL vmlinux 0xa5e9d714 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xa5f09d33 pci_iomap +EXPORT_SYMBOL vmlinux 0xa6128285 set_groups +EXPORT_SYMBOL vmlinux 0xa61d0ece write_inode_now +EXPORT_SYMBOL vmlinux 0xa62274c7 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa6332864 mmc_request_done +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa65a58fb pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xa65b522f phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa673fc4f pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6a4e89e set_bh_page +EXPORT_SYMBOL vmlinux 0xa6be758b nobh_writepage +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa705457c tty_hangup +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa7378ae0 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa74d8538 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xa75b00f9 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xa769c497 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xa788c165 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xa78aac18 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa8118d46 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xa816c525 schedule_work_on +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa84b9973 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xa85d6897 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xa86071d1 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa86731c4 __sock_create +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8d68abd acpi_warning +EXPORT_SYMBOL vmlinux 0xa8e387b7 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xa8ee357c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa906dac6 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa92fc284 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa933b0da dev_emerg +EXPORT_SYMBOL vmlinux 0xa94e75c3 nla_put +EXPORT_SYMBOL vmlinux 0xa96fe422 seq_write +EXPORT_SYMBOL vmlinux 0xa9733c2c udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa9778883 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xa97b9f00 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9a88c18 set_create_files_as +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c1b627 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xa9c22c00 d_alloc +EXPORT_SYMBOL vmlinux 0xa9f30641 wake_up_process +EXPORT_SYMBOL vmlinux 0xaa9357ab mmc_start_req +EXPORT_SYMBOL vmlinux 0xaad6c978 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaade4c7a agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaee7280 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xaaf45875 acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab2abddf dma_spin_lock +EXPORT_SYMBOL vmlinux 0xab5bb057 __find_get_block +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab83e767 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xab8944ab max8925_set_bits +EXPORT_SYMBOL vmlinux 0xab8de641 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xaba8bd75 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xabbb301b insert_inode_locked +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabe118cf call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xabe3184d atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xabf1b242 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xabfcef59 skb_split +EXPORT_SYMBOL vmlinux 0xabfea1e6 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac3588ce register_qdisc +EXPORT_SYMBOL vmlinux 0xac38a9b9 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac608055 idr_init +EXPORT_SYMBOL vmlinux 0xac63afd7 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac795291 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xac7d20e0 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xac91b704 force_sig +EXPORT_SYMBOL vmlinux 0xac96ec0d clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xacb120b5 bdev_read_only +EXPORT_SYMBOL vmlinux 0xacc9fe29 udp_proc_register +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd41431 netif_rx +EXPORT_SYMBOL vmlinux 0xacd55fe5 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xacd8deff pci_set_ltr +EXPORT_SYMBOL vmlinux 0xacdac144 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad184a7a iget_failed +EXPORT_SYMBOL vmlinux 0xad1eda56 amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xad2d0195 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xad368e54 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xad37de41 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xad3cdb2e d_find_any_alias +EXPORT_SYMBOL vmlinux 0xad404567 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad4ed073 bdgrab +EXPORT_SYMBOL vmlinux 0xad583761 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xad648a6a i2c_use_client +EXPORT_SYMBOL vmlinux 0xad67bab3 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xad700d6a phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9ab8f9 __seq_open_private +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadaabe1b pv_lock_ops +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc2ea7c padata_do_serial +EXPORT_SYMBOL vmlinux 0xade7c213 sock_no_connect +EXPORT_SYMBOL vmlinux 0xae2369f5 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xae41661e cdrom_check_events +EXPORT_SYMBOL vmlinux 0xae5b5fd4 cdrom_open +EXPORT_SYMBOL vmlinux 0xae641e83 tty_write_room +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae83c10d unlock_buffer +EXPORT_SYMBOL vmlinux 0xae880969 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb717e1 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xaecb8ed1 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xaefd95fa fb_find_mode +EXPORT_SYMBOL vmlinux 0xaf1235d6 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xaf1c262f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf643067 register_gifconf +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa15fb3 journal_forget +EXPORT_SYMBOL vmlinux 0xafa3d237 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xafac009a scsi_remove_target +EXPORT_SYMBOL vmlinux 0xafae38f8 d_splice_alias +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafcd3961 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafea19dc devm_ioremap +EXPORT_SYMBOL vmlinux 0xafef8fa9 register_memory_notifier +EXPORT_SYMBOL vmlinux 0xb01ac409 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xb055bcef inet6_bind +EXPORT_SYMBOL vmlinux 0xb05c5a9e kernel_listen +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07fc097 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xb08037d7 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xb0a8fd0a intel_gtt_unmap_memory +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0d785ab vfs_create +EXPORT_SYMBOL vmlinux 0xb0df134b follow_pfn +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb10381e6 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xb110bb35 unlock_page +EXPORT_SYMBOL vmlinux 0xb11d7002 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb128bafc d_invalidate +EXPORT_SYMBOL vmlinux 0xb1303e96 __blk_end_request +EXPORT_SYMBOL vmlinux 0xb138d0bf dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb186e048 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xb195d1cf xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a46428 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb1ba17af scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb211544c vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xb217eee9 inode_permission +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb222ce58 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xb237cdd6 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb2424740 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xb24e590d compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xb2636707 __bio_clone +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2b9dd7f elv_rb_add +EXPORT_SYMBOL vmlinux 0xb2bdab06 sync_inode +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c8274d new_inode +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e08e7b lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb2e9da2f netlink_set_err +EXPORT_SYMBOL vmlinux 0xb2ee2d5d tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3020642 vm_mmap +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34d4c2e acpi_terminate +EXPORT_SYMBOL vmlinux 0xb34d61a1 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb350adf2 sock_create +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb37303c3 dst_alloc +EXPORT_SYMBOL vmlinux 0xb394b2a3 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xb39bf648 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xb3c7ba8a ip_setsockopt +EXPORT_SYMBOL vmlinux 0xb3cb22c2 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xb3efa0c4 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb3f39678 skb_trim +EXPORT_SYMBOL vmlinux 0xb3f3fd7d scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xb40beb96 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb444ea20 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xb448753d xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xb45fd755 pci_release_regions +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4ad84d4 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xb4b7b067 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xb4d826ab free_buffer_head +EXPORT_SYMBOL vmlinux 0xb4f02b76 cdev_del +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb550b616 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xb5685e93 seq_read +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5835a34 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dcab5b remove_wait_queue +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64ad67e kern_path_create +EXPORT_SYMBOL vmlinux 0xb653b235 vmap +EXPORT_SYMBOL vmlinux 0xb65add2f i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xb65bc5c9 dquot_resume +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6869993 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb69c954c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cbe886 acpi_get_node +EXPORT_SYMBOL vmlinux 0xb6d57cbb dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xb73c7a1b request_firmware +EXPORT_SYMBOL vmlinux 0xb740bbe4 igrab +EXPORT_SYMBOL vmlinux 0xb748eeeb kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xb74cb94a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75f1bfc put_disk +EXPORT_SYMBOL vmlinux 0xb7be63e7 journal_set_features +EXPORT_SYMBOL vmlinux 0xb7c9dceb skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xb7f47feb inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb84dc231 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb8712be9 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xb8823042 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xb883c63b poll_freewait +EXPORT_SYMBOL vmlinux 0xb88bdbbc km_state_expired +EXPORT_SYMBOL vmlinux 0xb896dd81 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8a6de96 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xb8b9c337 dquot_drop +EXPORT_SYMBOL vmlinux 0xb8c30c8c blk_sync_queue +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb928a1ef pneigh_lookup +EXPORT_SYMBOL vmlinux 0xb944a671 save_mount_options +EXPORT_SYMBOL vmlinux 0xb953c0e4 pid_task +EXPORT_SYMBOL vmlinux 0xb95fec99 scsi_execute_req +EXPORT_SYMBOL vmlinux 0xb963e46b inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xb96685ca scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb96bc9dc ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98a04b7 proto_unregister +EXPORT_SYMBOL vmlinux 0xb98b5ba5 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3ceeec journal_start +EXPORT_SYMBOL vmlinux 0xba439e13 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba63339c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xba6f87ca xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xba7d47c5 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xbaaf28ff pci_claim_resource +EXPORT_SYMBOL vmlinux 0xbae30df5 ether_setup +EXPORT_SYMBOL vmlinux 0xbaf7ff44 acpi_bus_start +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb31e2d7 fb_pan_display +EXPORT_SYMBOL vmlinux 0xbb33f1ac inode_change_ok +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb36c49f cdev_init +EXPORT_SYMBOL vmlinux 0xbb3aedf6 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xbb41cdec mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xbb4de6f6 skb_gso_segment +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb64b815 bioset_free +EXPORT_SYMBOL vmlinux 0xbb7f05b4 amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xbb94c5ea ps2_command +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9bf327 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xbba23cb0 cpu_core_map +EXPORT_SYMBOL vmlinux 0xbba5aeb2 pci_enable_obff +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbc85354 serio_reconnect +EXPORT_SYMBOL vmlinux 0xbbf48b00 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0xbbfcaca5 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xbc03714a register_sysctl_table +EXPORT_SYMBOL vmlinux 0xbc0a606e log_start_commit +EXPORT_SYMBOL vmlinux 0xbc1fe95e kernel_accept +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2978e9 lg_global_lock +EXPORT_SYMBOL vmlinux 0xbc5f1eb1 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xbc70392f phy_device_register +EXPORT_SYMBOL vmlinux 0xbcaafa11 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbce6ae8b ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd1c721f journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xbd2b1354 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd46922d twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xbd65d561 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xbd73ad71 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xbd96903f agp_generic_enable +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdc89bea seq_escape +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe07d4f5 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xbe18153d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe285d4e mdiobus_register +EXPORT_SYMBOL vmlinux 0xbe29c0d3 page_symlink +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe32798e commit_creds +EXPORT_SYMBOL vmlinux 0xbe3f6637 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xbe400e6d blk_peek_request +EXPORT_SYMBOL vmlinux 0xbe5efe6f unregister_md_personality +EXPORT_SYMBOL vmlinux 0xbe83e4ff kset_unregister +EXPORT_SYMBOL vmlinux 0xbea2464f i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xbea6df9d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xbea7f452 migrate_page +EXPORT_SYMBOL vmlinux 0xbebc59d8 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbedf9534 netif_notify_peers +EXPORT_SYMBOL vmlinux 0xbee37456 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xbee96edb generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf052ecc locks_copy_lock +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf2228f0 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xbf41ab79 eth_header +EXPORT_SYMBOL vmlinux 0xbf4eff41 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf838027 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xbf8b59e2 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb4c701 skb_unlink +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfd7c289 phy_driver_register +EXPORT_SYMBOL vmlinux 0xbfe4784c efi +EXPORT_SYMBOL vmlinux 0xbfe84f07 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffeb34c dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc0020fee set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc026f523 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc02e4faf blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc03128e5 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xc049612c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07aa127 pci_request_region +EXPORT_SYMBOL vmlinux 0xc07d3204 generic_file_open +EXPORT_SYMBOL vmlinux 0xc083cec4 dev_get_stats +EXPORT_SYMBOL vmlinux 0xc093cae5 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xc094ff1e netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ac0173 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xc0d8edca ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc0d8fe1c skb_store_bits +EXPORT_SYMBOL vmlinux 0xc0e54fbb unlock_new_inode +EXPORT_SYMBOL vmlinux 0xc0fa51b7 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xc0ff3da2 ipv4_specific +EXPORT_SYMBOL vmlinux 0xc114ea9c dquot_disable +EXPORT_SYMBOL vmlinux 0xc159c8f5 __napi_schedule +EXPORT_SYMBOL vmlinux 0xc15b0569 simple_empty +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc178e59e mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xc17c5169 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xc18fbb4e __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xc19159fa add_disk +EXPORT_SYMBOL vmlinux 0xc1b6ca47 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d7d179 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc1e22b01 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xc1fb8103 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xc21c5ed0 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xc21f4279 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xc2280fa9 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc22c0822 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xc23b45b2 ip6_xmit +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc251c862 con_is_bound +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc288259d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xc29ba177 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b00bac mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31e4c91 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc328b832 skb_find_text +EXPORT_SYMBOL vmlinux 0xc34416de cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c88704 ata_print_version +EXPORT_SYMBOL vmlinux 0xc3d0e45f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xc3fc35f5 idr_find +EXPORT_SYMBOL vmlinux 0xc402cc99 register_acpi_notifier +EXPORT_SYMBOL vmlinux 0xc41931a9 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xc42137d9 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc4547465 inet_frag_find +EXPORT_SYMBOL vmlinux 0xc466c3c0 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xc470d9c3 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xc4797056 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xc479e1a8 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc483a2d3 register_nls +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49cbdce amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0xc50bab05 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xc528843e journal_release_buffer +EXPORT_SYMBOL vmlinux 0xc533adae nla_reserve +EXPORT_SYMBOL vmlinux 0xc54418c9 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xc544a061 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc555c983 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc55f976a pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e02d03 files_lglock +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc618ba32 current_fs_time +EXPORT_SYMBOL vmlinux 0xc6197c3a dst_release +EXPORT_SYMBOL vmlinux 0xc62f6cbb xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64e3102 kernel_read +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc661aecb account_page_writeback +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6890ef3 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xc68d4bc6 ip6_route_output +EXPORT_SYMBOL vmlinux 0xc6a66180 rwsem_wake +EXPORT_SYMBOL vmlinux 0xc6b5284d ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d1baa4 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc6da54fb mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc6f56438 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc70168aa page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc708000e blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc7124e63 do_SAK +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc735392f d_make_root +EXPORT_SYMBOL vmlinux 0xc7667cbd padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xc7671869 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xc76b977f tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc76d03bf scsi_device_put +EXPORT_SYMBOL vmlinux 0xc780a732 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc787a623 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7e41c6c gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xc7e65a8e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xc7eb38c0 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xc8221daa eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc848427c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c33c0e vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xc8d44236 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xc8dac9ad dump_trace +EXPORT_SYMBOL vmlinux 0xc8dd0c72 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc90a3819 dev_get_flags +EXPORT_SYMBOL vmlinux 0xc91716ee dev_addr_init +EXPORT_SYMBOL vmlinux 0xc9232358 journal_get_write_access +EXPORT_SYMBOL vmlinux 0xc9371107 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc9385058 udp_prot +EXPORT_SYMBOL vmlinux 0xc94b27c5 __module_get +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc98283df vfs_mknod +EXPORT_SYMBOL vmlinux 0xc98b3dfa filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xc992a1db balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9ab2eef acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0xc9c9a52e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xc9cee5e5 replace_mount_options +EXPORT_SYMBOL vmlinux 0xc9e3079c fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xc9f86b89 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xca0af888 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xca288225 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca7d2b8f phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca982c52 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xcac1e2e9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xcacf2256 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xcad05e1b vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xcaebfec1 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xcafffb71 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xcb03efb2 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xcb09375e ppp_register_channel +EXPORT_SYMBOL vmlinux 0xcb1b1c7d __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb747def cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xcb7a37aa input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcba880fd __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xcbb048a7 journal_init_inode +EXPORT_SYMBOL vmlinux 0xcbb2bf62 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe22c6c blk_complete_request +EXPORT_SYMBOL vmlinux 0xcbeb5c1d build_skb +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3135cb set_anon_super +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc49ff22 cont_write_begin +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc573260 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xcc5a438c ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc99e607 blkdev_put +EXPORT_SYMBOL vmlinux 0xccb3fa16 iget5_locked +EXPORT_SYMBOL vmlinux 0xccc84f3d __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xcccc1c73 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xcccfac2a bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2cefe8 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcd3bc598 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xcd3f383e pci_write_vpd +EXPORT_SYMBOL vmlinux 0xcd4f77ba jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xcd5341cc sock_no_listen +EXPORT_SYMBOL vmlinux 0xcdae954d dquot_quota_off +EXPORT_SYMBOL vmlinux 0xcdbbee4e dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce0a4e56 arp_create +EXPORT_SYMBOL vmlinux 0xce11477c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xce11908a key_put +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2a6918 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xce2f98d4 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xce31f03e scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xce4738fd dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xceb48c15 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xceea12ab skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xcef17eb5 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1d28ab acpi_error +EXPORT_SYMBOL vmlinux 0xcf21d241 __wake_up +EXPORT_SYMBOL vmlinux 0xcf257207 set_user_nice +EXPORT_SYMBOL vmlinux 0xcf2f550c should_remove_suid +EXPORT_SYMBOL vmlinux 0xcf319c88 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xcf4ae583 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf7fcd5f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xcf8986e6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xcf9eea2c bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xcfc2b52a twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xcfcf86e8 netlink_unicast +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcffd82a7 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0193c1c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xd0298b8b proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xd038f16a blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xd067fc5c proc_dointvec +EXPORT_SYMBOL vmlinux 0xd06f0d85 tty_check_change +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08197fa acpi_load_tables +EXPORT_SYMBOL vmlinux 0xd084bece scsi_target_resume +EXPORT_SYMBOL vmlinux 0xd08a340e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b53a8b netpoll_print_options +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1119d86 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd1188fc4 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1472061 acpi_pci_register_driver +EXPORT_SYMBOL vmlinux 0xd14f2757 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd1d4f72b netdev_set_master +EXPORT_SYMBOL vmlinux 0xd1e63dfa dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd21299a3 redraw_screen +EXPORT_SYMBOL vmlinux 0xd2197552 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd2205673 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd227892e sleep_on +EXPORT_SYMBOL vmlinux 0xd22f7d73 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd236bcb0 __devm_request_region +EXPORT_SYMBOL vmlinux 0xd2378914 __inet6_hash +EXPORT_SYMBOL vmlinux 0xd24d7a40 gnet_stats_copy_queue +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 0xd25e23ac nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd265ea42 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd27827af pnp_device_detach +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2a75ee0 dmi_first_match +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2c89907 agp_enable +EXPORT_SYMBOL vmlinux 0xd2f1b260 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xd2f2a4c3 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xd34328d3 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd34c5d8d iterate_supers_type +EXPORT_SYMBOL vmlinux 0xd35dcf32 simple_open +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3c036c4 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3f71b48 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xd3fedfb0 vm_insert_page +EXPORT_SYMBOL vmlinux 0xd4136616 vfs_unlink +EXPORT_SYMBOL vmlinux 0xd42047aa netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xd4423bcd call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xd45fea1e tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xd47555e5 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd481d27a blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xd4a3ea19 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd4f7a3a8 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd5104c51 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xd51db73f alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xd52bf1ce _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xd5357301 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xd5492fc3 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xd55dd610 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd572b98e dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xd5886f11 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd58903b6 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5b4eafd unload_nls +EXPORT_SYMBOL vmlinux 0xd5dc5165 phy_detach +EXPORT_SYMBOL vmlinux 0xd5e84e7f acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f85db7 d_alloc_name +EXPORT_SYMBOL vmlinux 0xd60ee0b1 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd611bca3 completion_done +EXPORT_SYMBOL vmlinux 0xd61535bf skb_seq_read +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6294cda pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6317745 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd633b128 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd677ec0a d_validate +EXPORT_SYMBOL vmlinux 0xd67fbdf0 fd_install +EXPORT_SYMBOL vmlinux 0xd69cea9d swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xd6a1c46b jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd6a34aa8 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c63187 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd6c7c88b iget_locked +EXPORT_SYMBOL vmlinux 0xd6d0ea42 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd6dbf097 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd6e5d2f0 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f1919c xfrm_register_km +EXPORT_SYMBOL vmlinux 0xd706367a xfrm_register_type +EXPORT_SYMBOL vmlinux 0xd710b0d4 pci_match_id +EXPORT_SYMBOL vmlinux 0xd72b7472 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75eb992 input_reset_device +EXPORT_SYMBOL vmlinux 0xd772c565 scsi_put_command +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79f9277 mntput +EXPORT_SYMBOL vmlinux 0xd7b05115 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd7b7c9b3 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd80277a7 fb_class +EXPORT_SYMBOL vmlinux 0xd809b4a9 get_agp_version +EXPORT_SYMBOL vmlinux 0xd816ad6c mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd8262a25 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xd83ea029 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xd8587c0e __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xd87fbd17 skb_pull +EXPORT_SYMBOL vmlinux 0xd891fa3f tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8cdf30b fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xd8cf80c3 posix_test_lock +EXPORT_SYMBOL vmlinux 0xd8d4b5fc writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd8e43cd2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd91ea38c x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd934f4a9 genlmsg_put +EXPORT_SYMBOL vmlinux 0xd93ebc1a netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd94743ef node_states +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9725a6e acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd985c0ed empty_aops +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0xd989743d dget_parent +EXPORT_SYMBOL vmlinux 0xd98bdccd pci_clear_master +EXPORT_SYMBOL vmlinux 0xd99109c2 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xd9b324cf tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xd9bc717d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xda0a6b0e acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0xda12f80d udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xda148d7c nf_getsockopt +EXPORT_SYMBOL vmlinux 0xda2d560c kthread_stop +EXPORT_SYMBOL vmlinux 0xda46bef2 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f05ce find_vma +EXPORT_SYMBOL vmlinux 0xda94d3cd try_to_release_page +EXPORT_SYMBOL vmlinux 0xdaaa7c36 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xdad80e67 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xdae97cca tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb207af5 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xdb608226 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb96e60a xfrm_input +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbd16396 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xdbe58204 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1ac580 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xdc286766 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3e2678 mount_subtree +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc418f9c tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xdc41b1d4 kernel_bind +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc4c2442 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xdc4f651f seq_open +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc6c98c2 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc779ca1 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xdc80a3fd security_path_rename +EXPORT_SYMBOL vmlinux 0xdc8d1dde _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdc99d73c acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcba1b3a sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdccb360d dquot_acquire +EXPORT_SYMBOL vmlinux 0xdcd36ebd input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xdcd50555 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd4153a2 kern_path +EXPORT_SYMBOL vmlinux 0xdd445faf alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xdd4506bd single_release +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd741c71 uart_register_driver +EXPORT_SYMBOL vmlinux 0xddcb48d2 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xddcf0c2a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xddfea814 skb_append +EXPORT_SYMBOL vmlinux 0xde10764a tty_register_driver +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde267b0c simple_lookup +EXPORT_SYMBOL vmlinux 0xde2f561a scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xde3820d0 journal_revoke +EXPORT_SYMBOL vmlinux 0xde3936c2 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xde4f14ff ppp_input +EXPORT_SYMBOL vmlinux 0xde52ad50 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde861d8f __netif_schedule +EXPORT_SYMBOL vmlinux 0xde8c9f51 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb8d83e tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf1380c5 locks_free_lock +EXPORT_SYMBOL vmlinux 0xdf36a09b bio_unmap_user +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf4bc65a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf688452 generic_permission +EXPORT_SYMBOL vmlinux 0xdf8269ad blk_put_request +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc781ac fifo_set_limit +EXPORT_SYMBOL vmlinux 0xdfdb413f __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xdff0a16a mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdff664ae padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe005907b con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xe0155748 scsi_free_command +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe051af38 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xe05968c2 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe09ebf7d pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b17020 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xe0c408ed sock_create_lite +EXPORT_SYMBOL vmlinux 0xe0dd7b93 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xe0e8481b pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe10a91c9 sg_miter_start +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe147d78e seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xe148b78e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xe15f42bb _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xe1608253 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17ba192 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xe17e5642 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xe17fd23c unregister_con_driver +EXPORT_SYMBOL vmlinux 0xe192ed00 gen_pool_free +EXPORT_SYMBOL vmlinux 0xe1b9aa94 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xe1d4e2ed cap_mmap_file +EXPORT_SYMBOL vmlinux 0xe1e3bc40 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe21af2bf input_get_keycode +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24daa0e usb_set_transceiver +EXPORT_SYMBOL vmlinux 0xe262e555 dev_printk +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe2c3ac35 give_up_console +EXPORT_SYMBOL vmlinux 0xe2c4a6ff jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe2cfb038 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xe2d089af amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d6fce1 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe2efce6c skb_push +EXPORT_SYMBOL vmlinux 0xe2fe704b cdev_alloc +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3667986 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b3794c agp_backend_release +EXPORT_SYMBOL vmlinux 0xe3ba84c5 netdev_features_change +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3df3de6 i2c_master_send +EXPORT_SYMBOL vmlinux 0xe3e12008 __first_cpu +EXPORT_SYMBOL vmlinux 0xe3f40c50 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe3fbe148 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xe3fc9c59 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xe3fde0a2 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xe4250fa9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xe4320014 key_link +EXPORT_SYMBOL vmlinux 0xe43f4328 dev_trans_start +EXPORT_SYMBOL vmlinux 0xe44a43fa twl6040_irq_init +EXPORT_SYMBOL vmlinux 0xe44eb294 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xe457b098 vfs_statfs +EXPORT_SYMBOL vmlinux 0xe4668667 blk_init_tags +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48a85da thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xe4bc6174 rename_lock +EXPORT_SYMBOL vmlinux 0xe4d85c1d ida_pre_get +EXPORT_SYMBOL vmlinux 0xe4defd9f __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xe4eab9d2 fb_show_logo +EXPORT_SYMBOL vmlinux 0xe4f5dfd2 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe512b72d kick_iocb +EXPORT_SYMBOL vmlinux 0xe516c48b input_inject_event +EXPORT_SYMBOL vmlinux 0xe517d37a mii_link_ok +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52947e7 __phys_addr +EXPORT_SYMBOL vmlinux 0xe52bf0d2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe5368d59 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xe53a27ee agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58caec8 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xe5bec95c i8253_lock +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5c9009c serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fd770e netdev_emerg +EXPORT_SYMBOL vmlinux 0xe612e8b3 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xe62a88ee tty_shutdown +EXPORT_SYMBOL vmlinux 0xe62b0f4f inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a10666 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xe6af4aca blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xe6b3dc46 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe6ba58f1 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xe6cf446f pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xe6e195d7 fget +EXPORT_SYMBOL vmlinux 0xe6e3b875 down_write +EXPORT_SYMBOL vmlinux 0xe6ebaf52 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe7193d83 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xe7570eba log_wait_commit +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7ad7dc4 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xe7bd70b0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e821b3 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe818f127 dev_activate +EXPORT_SYMBOL vmlinux 0xe846679c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xe850fa48 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe86016fb ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xe86ae74d pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8872ed9 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xe894b27c generic_write_end +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea2fa pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe8dbafef __next_cpu +EXPORT_SYMBOL vmlinux 0xe8ed80f1 netdev_crit +EXPORT_SYMBOL vmlinux 0xe8fda19f mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xe90526ee abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xe90ecf2f key_type_keyring +EXPORT_SYMBOL vmlinux 0xe911d236 fasync_helper +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9299b17 kfree_skb +EXPORT_SYMBOL vmlinux 0xe92d61e1 nf_log_register +EXPORT_SYMBOL vmlinux 0xe937a7d0 security_mmap_file +EXPORT_SYMBOL vmlinux 0xe93ae8a8 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95ce34a __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xe9625f04 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe9645be0 read_cache_page +EXPORT_SYMBOL vmlinux 0xe96aebe6 update_region +EXPORT_SYMBOL vmlinux 0xe977e4e8 key_alloc +EXPORT_SYMBOL vmlinux 0xe98fd202 kset_register +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9ad05b7 bio_map_user +EXPORT_SYMBOL vmlinux 0xe9bd0cde ida_init +EXPORT_SYMBOL vmlinux 0xe9d3771e seq_path +EXPORT_SYMBOL vmlinux 0xe9d39d98 destroy_EII_client +EXPORT_SYMBOL vmlinux 0xe9d74ab6 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xe9dff136 mempool_alloc +EXPORT_SYMBOL vmlinux 0xe9f7feaf set_pages_nx +EXPORT_SYMBOL vmlinux 0xe9fbb63b override_creds +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea114e27 pci_bus_type +EXPORT_SYMBOL vmlinux 0xea311540 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xea4709f3 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xea4dc0a1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea8b0a11 register_quota_format +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xeaba5c35 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae2a68d dump_seek +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaf29711 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xeafc11ae pci_get_slot +EXPORT_SYMBOL vmlinux 0xeb32eca0 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xeb33b152 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebb2cb7e tcf_register_action +EXPORT_SYMBOL vmlinux 0xebc9f71b security_path_rmdir +EXPORT_SYMBOL vmlinux 0xebce3199 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec158eee tcp_init_sock +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec730387 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xec7e91a4 put_page +EXPORT_SYMBOL vmlinux 0xece20b80 qdisc_reset +EXPORT_SYMBOL vmlinux 0xed1b676e kernel_getsockname +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedabce7e dev_uc_flush +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbf1f63 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedeb1f22 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xedeedfa1 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xee0a055c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee34efff ping_prot +EXPORT_SYMBOL vmlinux 0xee46885d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xee494f37 __scsi_put_command +EXPORT_SYMBOL vmlinux 0xee5b1945 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8cabee tcp_child_process +EXPORT_SYMBOL vmlinux 0xee9cde03 do_truncate +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeef4a97f test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xef6b3227 sock_i_uid +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9d8293 scsi_host_get +EXPORT_SYMBOL vmlinux 0xefaecc9b blkdev_get +EXPORT_SYMBOL vmlinux 0xefb339c6 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xefb36ee3 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xefb588e0 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xefb6b186 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xefba93e1 mempool_destroy +EXPORT_SYMBOL vmlinux 0xefc10bcf xfrm_lookup +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe8ad70 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xeffcdd2d sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xefff188a ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00733eb __f_setown +EXPORT_SYMBOL vmlinux 0xf0091b85 thaw_super +EXPORT_SYMBOL vmlinux 0xf00a5dc9 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xf0218d13 kern_unmount +EXPORT_SYMBOL vmlinux 0xf02b80f7 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xf03087e6 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xf0554c13 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0668483 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xf070a726 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf077a7fd swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xf09f3704 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xf09f67f7 key_unlink +EXPORT_SYMBOL vmlinux 0xf0bfc4eb pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xf0c71943 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf115e4e9 pipe_unlock +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf11a2995 key_task_permission +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13314f7 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147ecb1 down_trylock +EXPORT_SYMBOL vmlinux 0xf184cc5b set_security_override +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a0193a tty_port_hangup +EXPORT_SYMBOL vmlinux 0xf1bea6f1 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xf1c00bcd genl_register_family +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d83155 pcim_iomap +EXPORT_SYMBOL vmlinux 0xf1da8902 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcb9af dev_uc_init +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21588fa iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xf21a9c50 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xf22449ae down_interruptible +EXPORT_SYMBOL vmlinux 0xf22a69d5 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xf23a2caa blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24177b5 d_set_d_op +EXPORT_SYMBOL vmlinux 0xf27a7e5b rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf287ea9c __register_chrdev +EXPORT_SYMBOL vmlinux 0xf28c90c8 skb_put +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b09ccc xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf2ccf246 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xf2e914f2 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xf2eff307 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xf2fc0fd8 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xf30aad9b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf329c4de sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xf333afec journal_check_available_features +EXPORT_SYMBOL vmlinux 0xf333f535 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf33d8b7c skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34b783e update_time +EXPORT_SYMBOL vmlinux 0xf34c88e2 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xf36528cc __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf37e2afe mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xf37faa67 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38a327e drop_nlink +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3978588 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a0d0ed key_revoke +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e15b53 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xf432dd3d __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xf43e3aa4 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf452d303 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xf45b83fa pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xf48f5d8f kill_bdev +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a7ee13 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5127297 no_llseek +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51afac2 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53e8d32 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xf5639192 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xf5893abf up_read +EXPORT_SYMBOL vmlinux 0xf58fb95b kobject_add +EXPORT_SYMBOL vmlinux 0xf598be6a rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf5af0cab skb_dequeue +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6341574 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf652df67 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xf6601380 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xf66fb96e serio_rescan +EXPORT_SYMBOL vmlinux 0xf685d72c prepare_binprm +EXPORT_SYMBOL vmlinux 0xf6b373ed scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf6ba2227 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ff2d40 deactivate_super +EXPORT_SYMBOL vmlinux 0xf719e6fc inode_add_bytes +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73dc670 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xf743980d block_invalidatepage +EXPORT_SYMBOL vmlinux 0xf757adfe mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7929fa1 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xf7a6c0e4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bbfa46 flush_old_exec +EXPORT_SYMBOL vmlinux 0xf7d060e2 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf7d3a9ae is_bad_inode +EXPORT_SYMBOL vmlinux 0xf7dcec4d fb_get_mode +EXPORT_SYMBOL vmlinux 0xf7de348e dev_uc_sync +EXPORT_SYMBOL vmlinux 0xf7f1ae48 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80c0883 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xf80e20a3 write_cache_pages +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cfd1a proc_dostring +EXPORT_SYMBOL vmlinux 0xf82e3d47 acpi_initialize_objects +EXPORT_SYMBOL vmlinux 0xf85618a5 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf85a371b xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xf881bb71 genl_register_ops +EXPORT_SYMBOL vmlinux 0xf883bb84 inode_only_permission +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8983de7 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xf89843f9 schedule_work +EXPORT_SYMBOL vmlinux 0xf8c9055b proc_mkdir +EXPORT_SYMBOL vmlinux 0xf96f376a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf978527a nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xf9838ab8 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf9a0eee9 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c33352 journal_destroy +EXPORT_SYMBOL vmlinux 0xf9e95c28 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf9ef0c3f pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xf9f110ea genl_unregister_family +EXPORT_SYMBOL vmlinux 0xfa167265 inet_release +EXPORT_SYMBOL vmlinux 0xfa263d7a wireless_spy_update +EXPORT_SYMBOL vmlinux 0xfa4df295 nf_log_packet +EXPORT_SYMBOL vmlinux 0xfa66f77c finish_wait +EXPORT_SYMBOL vmlinux 0xfa67c245 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xfa72adbc __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xfa8e8bf8 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xfa9023e1 pci_enable_device +EXPORT_SYMBOL vmlinux 0xfac320f8 sock_no_bind +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad3ac6b __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb43a757 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5f846a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7a238f jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb28905 notify_change +EXPORT_SYMBOL vmlinux 0xfbb6acfb mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc04e33d ip_ct_attach +EXPORT_SYMBOL vmlinux 0xfc0e569d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xfc19f80c input_unregister_handle +EXPORT_SYMBOL vmlinux 0xfc1b0bc6 truncate_setsize +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc68fd2d prepare_creds +EXPORT_SYMBOL vmlinux 0xfc7253ee __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xfc7a5267 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9081ef __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbcc95c end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc54f91 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xfcc6a1d0 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0fea65 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xfd279cfb sock_kmalloc +EXPORT_SYMBOL vmlinux 0xfd2e3efb sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xfd2e5e79 serio_interrupt +EXPORT_SYMBOL vmlinux 0xfd5f002d dma_ops +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6a20a6 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd6f4850 native_wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xfd7d7713 acpi_exception +EXPORT_SYMBOL vmlinux 0xfd94ca88 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda44022 may_umount +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdca5bb5 journal_extend +EXPORT_SYMBOL vmlinux 0xfdcd4a6f tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xfde7cf49 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdf0be31 read_dev_sector +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe09bcbe kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe2974b8 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xfe40f8f8 key_validate +EXPORT_SYMBOL vmlinux 0xfe540c4e noop_qdisc +EXPORT_SYMBOL vmlinux 0xfe573147 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5fb8f3 napi_get_frags +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8f89da bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xfe90e4d5 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xfe94161a alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xfe951431 pci_request_regions +EXPORT_SYMBOL vmlinux 0xfe9b71ea scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xfea281a2 filp_open +EXPORT_SYMBOL vmlinux 0xfeb4aa05 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfeda8944 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff02e992 page_readlink +EXPORT_SYMBOL vmlinux 0xff1269ea blk_integrity_register +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff4ade80 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xff521339 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff690c4f journal_force_commit +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff809a49 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xff8785f3 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xff87cb83 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa19009 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xffc83017 dev_addr_del +EXPORT_SYMBOL vmlinux 0xffccfb20 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdbbf7f fput +EXPORT_SYMBOL vmlinux 0xffe3fe97 sk_dst_check +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x19dc7881 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x5e752773 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/kernel/microcode 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0459c3e6 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b778173 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b8210ae kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b9c84d5 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ecf8854 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10b4d239 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10f8541f kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x123646a1 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x123a3ce7 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15c9e8c5 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x177f4668 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d9774c0 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23c52d1e kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x271009c7 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x293312e2 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29faddd2 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a70678a kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ab801e8 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b835a2f kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c355fcd kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d1a589f kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3270ba1e kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35bf3bda kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a16ea47 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a8a0b8e gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3de08404 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f2ec78b kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44206155 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44a23a9f kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44f4d9a5 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x472704d6 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b10fdf7 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d32933f kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f0c8bc9 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f1967b4 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x502d2230 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x522b9b8a kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x558a47ab kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57c2103f kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c0e8e4d kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d1c6758 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f4855bb kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c70d059 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6db19e07 is_error_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70d01f1e kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74fbc94a is_fault_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78e7f62d hva_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7acef658 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c9b19a5 is_noslot_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d6cf799 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7eef5b35 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f1c7a55 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82a7d3ea kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8698b9f8 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x889db4e3 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89a9158a kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c8a1c76 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d12cdf0 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x93334703 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9869c8f4 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98aaccae kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cd1a744 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa413670a kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa8aa597f kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa91845be is_invalid_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa99db765 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac38ae0a kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae75243e kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaed1effa kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb326999e kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb82e1d2b is_error_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba3eddfa kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba6b4e05 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b937d is_hwpoison_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc52223b kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd7aef9d kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf469111 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1ac14f0 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1f31107 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2270db0 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc390dfff kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce38fa0c kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1c2deec kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd296def9 kvm_is_error_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5031d03 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6ff59e8 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd80cab34 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8f2c56d kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0c13423 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe22d3ee6 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9aea4f8 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeae1fd98 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xedd4fb83 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee0d69c1 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef772de7 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf10196b2 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf3d51fbc gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf7337db8 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb87a434 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL crypto/af_alg 0x24c7f1cb af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x48892cba af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x4fdeeaac af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x65eef7f4 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x700d6520 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xaa7fc736 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xaad2b6a4 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xb7c2303f af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x1282b485 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x78e3535b async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc27cf805 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x499a6317 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa13ed90e async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x20111471 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5cc13888 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb1355244 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe2f14520 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x14a47073 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbde525de async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xad2ce854 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x0153e88b cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x0db1155b cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x618167f7 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x78a67891 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8d014e37 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x9906fc12 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc7e9e14c cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xdbc98dbe cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xdf0927f2 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe89aaa57 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x9d37b004 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 0x8bf81396 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x3c29787b twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x72e0b48a xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11db9fd1 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12dc8d0d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4123a212 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x50e32693 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5a638f41 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6b7f0a26 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6d120555 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7fd72844 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86161f13 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9919731e ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa65bc417 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5c23994 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xba64fbb4 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc3472e50 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4973e22 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd7984de ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd87ca26 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfcf7bbeb ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6470abd0 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xce7eda64 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x10b2ee9f bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c5b5e47 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30c6e850 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51c9dc4f bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x52e134c6 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x583a82d3 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b0d87be bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x95b90cb5 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc18a5018 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc6a0c6fa bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcd256434 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe23beed7 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe426b8a7 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf4863a2c bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf863d839 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x28d8a70b btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2d9b1a51 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x382b6fe7 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4a076bad btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5f33ee52 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x77ee398b btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9325cfb7 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9b48a84e btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xade3765a btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc29d8f17 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL drivers/dca/dca 0x0f1f6276 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2e471f01 dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x33a5efff register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x4150d01e unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x60ad571a dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x740e7ae7 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x791c556a dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8006c614 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x9cefcfc9 free_dca_provider +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xde3cc59c amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0bd593b9 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1a3b2fd1 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1f5d5086 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x20c7decc edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2168d6d8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c0c29e9 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x417c3b18 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x505f9286 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d64712f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7122a4b8 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x76e62be5 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7cd3c82f edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9f141db4 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa0d2b6cf edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa42d977a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8ca4369 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb90635f9 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbdce2ba9 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc709d799 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdfa448ae edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf03951af edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf911a3c4 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0d38cee6 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0dc0b68c amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x233ce2e4 to_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x3eba1a17 rrrr_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x593ec4b5 ii_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x6d4e6991 amd_decode_nb_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xaeeba16b tt_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb0ca1fe7 ll_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xc2b73a3a amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x1b7d00ac extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x55a7688c extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x88f45a13 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8cebd44d extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9d446e6b extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9fc9c0cf extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc7bea0fe extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xd8cb3fc4 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdc5fe5b7 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe610c217 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe6fa1114 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xf3ba968a extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x7b0b39bb bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa6abdf51 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xc24dbbe8 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xff1bc217 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0ff02fd8 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9a5adb00 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x3bfe401c ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8bd7fca1 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xc8e41a35 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01e61565 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0fa349f3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1d6212a1 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e8212cd hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43693119 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4def9027 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x539c0f2f hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78d68a68 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7adc5722 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8560ff85 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x86c1c571 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89a1e340 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8aad088f hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8fd3895c hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9103e2f2 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97a884b3 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaab91ba2 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf980d77 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xafb0d8c2 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb6ab8733 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc0b9ba31 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5a26397 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca276f1b hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd34491d7 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4b03b56 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4c9b218 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef5c6e15 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf711e7af hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfb756211 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x23215077 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7d2297f3 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbf9a8a1e roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x77c98072 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xaeb13c34 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcc959090 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xf8c23ce7 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x16f33685 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2104461d hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2d6f4e5b hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x32e00e3a hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5416c790 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x67ebb128 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae182794 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe7dc026 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcc7e006e hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8481d38 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdb85894f hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xea72081c hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf07f681d hsi_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1687f54c vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x195d59ee vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x32fb56b5 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x35caacb9 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x62afab3f vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x998bc3ba vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xaf528af3 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc91a78a4 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf3cd1854 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfcb99ed2 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x04430d8a i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x05054051 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b3750b6 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1fde759c i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x42453ce1 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6f319828 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7dd201aa i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf52a1902 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfab58a9c i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x2dbbc5e0 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x1ec5c0fd i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x25815615 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x28fe12ce i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xeb546dfe i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3030955e iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x436c0be7 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x514aa968 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5df44409 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x628df0bb iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ef7c8a3 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x709ab3d6 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e4b422c iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa9106b95 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc30d368 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9513925 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2701e89 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe76bca37 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeba1a425 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe34405c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/hw/ipath/ib_ipath 0x1514b2b2 ipath_debug +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x316b2532 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x2dd419ee adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x0dedb280 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4613cccc cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x662bd0c2 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x10096cbd wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x33b6bcc9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x53f2dff7 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6955fcf3 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x74ebe1a9 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a612b22 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9cba09ad wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa5fffc6d wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5a33c76 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba1bda3e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcb993147 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd2479d9c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x10f16eb7 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2da31af8 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x33a1e081 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x418fb342 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x42e94620 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4db839fb gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x539f1c92 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5647b1c0 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x65d7b04b gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6fb773f9 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x87b9adef gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8be342b0 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9bbe3056 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdecd95d2 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf67b5a12 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf97df040 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff493fe0 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x75a0c099 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x350802f7 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3627baf9 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1fb6d00c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x266612be dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x31f9250d dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7befa851 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xacd0c775 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf65fb3a4 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x07803141 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4035149a dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x45a8b35f dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6d49b194 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x74d47993 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x77fb5544 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab03c775 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x0e361286 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x59edc2ba md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x1c634d27 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x1f4bac48 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x30b63425 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x32c4440f saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x427d5c59 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x45548ee7 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5898fc04 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9742a1ec saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9c4949ef saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe47c8673 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xffdc9c5f saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x2e827c18 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x7adc0ac4 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x9333df59 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xa330cd61 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xac136200 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xb25e4e50 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xff07632b saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x00d03fa7 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x244b6003 tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x9768bbbd tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0xa89912ef microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xa47eb82f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x24fbcb76 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x2001d2e0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x92dd1aa0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xf3c89019 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0xed0281db tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x7a113c2e tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xac144a88 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x323f2800 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xc8d10ca4 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x0e606f2c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xe9f6e63a mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x17da3811 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xab2e041c tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x031fb1c2 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x04994614 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x0af8a467 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x1579a769 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2db9760e mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x4ece277e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5c84447b mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x698ff517 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x71cadc2b mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x75b24d8d mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8277107a mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x9384dbcb mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc07a913c mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc60ccb49 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc6419363 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd6bf457a mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xeeccc669 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0913e927 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0c839378 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x25165d3d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2fff8840 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5cbb9e93 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x70e3d761 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8a34cedd sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9196fbf5 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x940e1a6f smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9f346daf sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa12929e6 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa2ac3f59 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa663bb6e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb5ace8e4 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb9d969c3 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc5a057e3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xfe2c6c4c sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x13463537 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x565c80f0 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x607311bc ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xafd9cf39 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xb7c420a7 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xd51355d1 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xd781caf8 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0ac57f0d ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0c0d1292 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x188e3ce4 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1dbeff2a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x36cd2f91 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f616f72 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a34eb18 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f832bdb ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x526fe5a1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5855e2b8 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7074880e rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7960b17a rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x85371e23 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa1f984a1 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa9c44b36 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb0bec952 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcf230ef3 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x056182d7 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x25c2b13c cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2e34d03d cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2eb08153 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3cec505f is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4352583b cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x54971d7b cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x71b4eca2 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x7c2c8c7b cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9c0110fa cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa0f79deb cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa4c486ed cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xac9a5b97 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae1a0e65 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcdbb3113 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcf0ac7fb cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd8a93f2d cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd8e5bffe cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfd23cfa7 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x1fc53217 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x077efce1 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x36a98074 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x41ed2dcf em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x55c3ff9b em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5a2364e8 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8a3274bc em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8d012287 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x9f49cd8c em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb3d3cfb6 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xcd9f2026 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd8370e2b em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xdeece0dd em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xe3339bea em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf80d54d4 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x03344d1e saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x84914100 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xbe55cb30 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc11b458b saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc9b4221b saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x378fad74 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x4f5e4646 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd4d867ee tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdb467b52 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x2501d997 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x9e1eb7ca v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa81aa89b v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xc14443d3 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xc4c075c0 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xef439770 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x17573c92 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x2ac306ba v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x379fb483 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf7e0b14e v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x13c0c054 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x25d1680e v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x337948c4 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x58a4122a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x67975f30 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6d4f5c99 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x824d82ad v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x838ff9c0 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb2cda8d0 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf49e5d22 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf49fbdee v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfd6a168c v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x018ceee2 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x01a7758a videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x04dc936d videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0bf4854a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x102f15de videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x18a619a4 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2a0cb840 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4443cab0 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4593ec65 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x45e22eab videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x481223e9 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5613a154 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6dbe3c1a videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x95521b70 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9583a1e5 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x99dd55cf videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa8cd60c2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xae7e1dbe videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xb95ce817 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xcbf3b025 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xcf79122f videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdc117821 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed434f7d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xeecf1896 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2607097b videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x80c506d1 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x8538b4ed videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9500d894 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x34302625 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x53c5efdd videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x8e2def1a videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x94b976d3 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xc7d36a8d videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xdadd6b43 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xe7863c78 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xf268249c videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xfcaa028c videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x5229f35f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xc597572c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xf7ceb990 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0af52fe0 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0e609f68 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1f83d5b8 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x20df0989 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x28398f0d vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x28526abf vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x354b2d53 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x36cc7c86 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7344f08d vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7a47e42f vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x99f165c7 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb749176e vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbf6f4a49 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xce3636c4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdc9c6621 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe9ae7864 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xef0711e9 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x10812800 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xd35bd453 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x006c15bd vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x39d147d9 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xab946432 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xdb7148e2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xeff6f7f5 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0xd785ef0b vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x0ddbbb80 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x155e33a0 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3e2b21bd v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4640b496 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6d8df2d0 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77c077e7 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77f30156 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7f227c70 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a427de7 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x925b1791 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x94ad46f8 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x97980949 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9e8382ab v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa8b77c02 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6b9ba3e v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbbe7d7f2 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbe032b0e v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xcc7d5b90 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd66e17e7 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd686b1ea v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdf568232 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe91995bd v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfdd5ae12 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x411df73e i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6a599407 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x7b02b101 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa377034e i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa5c50b0b i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xad029e3d i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xaefeec9d i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe8a0d00e i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x301b7550 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x54a7abcf lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x946596a3 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4b873bc5 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53c965dd lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x68cdd4bf lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6a8380e7 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7393727b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xde7f0293 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf2f03e05 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x366c7dc8 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xafcebba0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb6056c1d mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x02112f44 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2168ee8c pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x482f7abe pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x655560d3 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x67bea1f5 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7209709f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c4a78e0 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xac129bdb pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc2829b4a pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd0f1c838 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd5c82765 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0077db53 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0a0febae pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0240a096 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5c34b9a7 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x790cae06 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x89740389 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8a9528d6 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0d791d4e rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x27ab22c4 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c26c56e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c962bed rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2f56219c rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x31a5176f rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x37ed4c2c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x39d69ce2 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44d7983b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4abab374 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c1f98db rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x64c0b261 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x690b693e rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x825e1b33 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8ee68993 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9b8932b5 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9bb52e45 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd0788fe3 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3153b7b rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa87ffd8 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfc2f0645 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x362cc10d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x81438dd6 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc1e0bd55 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc8d4bb04 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd4b3ad9c sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x43df7fd8 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x99bb6ffa tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe96c144c tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe9e3b039 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xe2ae67a4 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x12048433 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3ba4c31c cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x727f082d cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x93b99e80 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x081b5aa5 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2e9a9b20 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3466c428 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5a8c6b69 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa4946db1 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc18963c2 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf7727c50 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x260aee96 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x485cbc2d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5d619de0 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6cf59859 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9c68e162 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaeb6b147 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd7b46cef lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe141f61d st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xfac3a53c st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0062a5b2 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x22cde56b sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x27ac9010 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3d0f121c sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3e15a481 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x42682fe2 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa5dcff8d sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcc016e2b sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdd34b1ce sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0c9a7b0c sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3ff8cac2 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x50539104 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6280ac07 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa56ca02b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf37ad9c6 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1aef83fa cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x450b994f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbc75f1e3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x3889225f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x684e7a4e cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x87411735 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x63f1ae99 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x04798c06 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x48c6419d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xedfa42ea cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xb30b7468 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03afab78 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06ae92f9 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0bb82b9d unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13cc7a28 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2c023e04 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30721834 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x313ef176 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32994401 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36bc97bc mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3efbdf1f mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4648235d mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4968af7d mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49d44dee mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d52c2c1 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e1fd061 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e9e1b26 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5359a7a0 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5952e207 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a3cea57 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63c7e02b get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x784df72d mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x790a447d mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7eb40169 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x882dc952 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93199fc5 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93ac3a00 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb14e748a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb2afdfd0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4ab27a6 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc0a25012 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc68e4c7d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb5b70ff register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd58830a7 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdea44e6e mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe88fadf5 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xea6194b8 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4356975 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4b29015 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfba847e4 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1782d94d register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6ea3f4c1 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x83977390 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9403bb29 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe58bb86e add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x1239c32c nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x157b46f7 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x202c93fe sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xbc7a6052 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd6a8b606 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0314dd84 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5453e196 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x57c0b3f5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x621d6801 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x64222e0f ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bf679ba ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b733ba1 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8700f71c ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8bdee35e ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb2d4570e ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc469580b ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcd5e97fb ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe6e571ba ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbe135ef5 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdaf58448 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdd9f9bcb free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe805951d register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0c6a5bf5 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2b81a50f alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x30e651ab open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x33f3dad7 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x460d724d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x48940ba3 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6306f21b can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93f8111d can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbbf9ad9a free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcc6fcf41 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd0fe6b8b can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd315f9dd can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6612d66e unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc31d1d5b register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd4e6cd6f alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xecbb3173 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2ff52f5c free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x36beed49 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4070c2b3 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xeef7be32 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02100eca mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0605dcde mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06f47ecd mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0de24ecb mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0eb7c373 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x186433e1 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b9e5328 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dc2f711 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e168250 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e35cd67 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ee40ffe mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x210a5862 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21806aff mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2622eed1 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d29a918 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x317df919 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32aebf46 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a6e814 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b2adb5e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3be31adc mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e91465f mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fc394b7 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x432e5eb0 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46adc7e6 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x522edbbc mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x525d4361 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x552562a1 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x584a9aff mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59bc8c69 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a92601e mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c06df7c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x623a279b mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62c82a04 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64a0741a mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72ba8941 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x734d3b3b mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b6216cd mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fb1a702 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x812a8e5e mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x814a3e73 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d79bead mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9209cebe mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92f352e7 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x978eabcb mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9afc2318 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b5faa58 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ceea865 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d234a97 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e0fc31f mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1831828 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68db720 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80258d6 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafef0b19 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb40576a9 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbf6d7be mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd981eca mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe71f2c3 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3dd7934 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4917136 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb8dcb39 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf5b5001 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd05ad4a8 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdab0145a mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb32a726 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfe4259e mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe200ddab mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7e28005 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef1bd978 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf01541c2 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5e61c67 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf828df13 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf865e0b8 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb8c865f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd326fea mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x10afd7f1 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1e14aa97 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x27fb4853 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x665abf21 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7462f0db macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x260ca8f0 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x28e9ffd8 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7138073b usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8fe9e8be usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe6548889 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x17971553 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2734a8a1 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2f9aa33c rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4f746904 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6ebbfaa4 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe81b15ce rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a819005 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x11e2166e usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14829573 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x167179e3 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1c180ec3 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2f7f55fd usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a10bb43 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45a16135 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x55affc1d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b09e51d usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x69c89208 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x755fd3dd usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e9d9535 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e6886e4 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa6754456 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaafd2c66 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad47a37d usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb02cc25b usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0c22956 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0f660d2 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc14db4a9 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4f5b0d6 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdc286c7d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe85550dd usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x02c5ef6c i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x082cb46a i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x119eaf0c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x13d5b188 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x21937ad9 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2903ef2d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5a71150a i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5d888d38 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x77b85e6e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x82481779 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x87337e14 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa2b0eb66 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xab53da23 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 0xe1dc9af8 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe9fc2af9 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xef062c9d i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1c820b19 libipw_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x8e9c9c6c libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x05e5258b il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x29473a2b _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x95325fee il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xacf0c0b5 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc71fc7d5 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17541bf4 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x19c79aba lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2ad829a4 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3e5b34ea lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x501cc2f2 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x55db81bf lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6da859b0 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x910ed542 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9de12429 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa13e71b2 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa8eb1168 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xabef4d60 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb6ca8543 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xba43cce3 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcf38893e lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe715773c lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x326c061f lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3ec3588b lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x51f40e37 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb07f3918 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc21eb596 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc890ddac lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd6bc185a lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xefd1fd7f lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x35d27a1a if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xf79e3d56 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1009ee9b mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x11917eb5 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48a488d3 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6b349f7e mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8b3bbe6d mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9ec238cd mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb1488086 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc50a4c7c mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd28bb8a2 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe7afcdee mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe9fcb6ab mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xee6c4487 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf8f10897 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x017c23c6 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x22473f71 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4dd6e8e3 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6bb573ba p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8cb11bbd p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x94655bf5 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa4aafc2f p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe768f726 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xff67b466 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e12d7b7 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x113024ec rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x119ca9a9 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b00c578 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a417ea6 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a7d6349 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34478a8c rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3583c2e5 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3aeda1e0 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3f916270 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4fe90145 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x57dc6937 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5925a855 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e843910 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f550fd9 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fde7d26 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x605eed10 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x636688f3 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ff3fa34 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7a158093 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85c44cd8 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87774e7d rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b76bec4 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f5f1360 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9901c052 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa4a47524 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa90a0360 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbbccc6b5 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc575e8f3 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7a17d88 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc8c19254 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc88b8e9 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd5bef2c1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb2859a6 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe196951f rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe23f16f0 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe87e3d9d rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf4983167 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfa408702 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0551179e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0eb087a6 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f348b0d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17608db6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1906f236 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x26bb5b0b rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x297f4d12 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2b3e4f14 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2edb8f2b rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bdf19ff rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x415d8ce8 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x430041f9 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x465feb8e rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x47fbe494 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x490d22e6 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49a9bc56 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x501898a9 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b631b47 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c24e4c4 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e63b65e rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60b1f9bc rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64e89863 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d504366 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77cbf493 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e86698d rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x81992492 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x853e717a rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x877b4d1f rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8d417d41 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x91a314df rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c183c4c rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaeb5e5af rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb26f8daa rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb563ee3f rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb74e0d57 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc13cd931 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc7114ade rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc9902b10 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcaa12212 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcaebd186 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd82e621a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc03de26 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddac29aa rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe44f6c8f rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9c3ad9e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff959c1d rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x10c703a1 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x125e7b95 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x26d637d0 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x285d50fd rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x468d4bd0 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x70014f4c rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x807dda3f rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa5c5c1be rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf85bfe22 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x068d8491 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0bc1e6f0 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0f73e1b2 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1b44f7ed rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3810bd27 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3e0c22d0 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6c295c24 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6c56e46f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x81059584 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9cfbeb8f rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcb45d5fb rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd0b9a63a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd9c227a9 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdbfe34b4 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe46fb776 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf0223628 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x18373c2e wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x9d5a1b84 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xea80ca3c wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07972f31 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f45186c wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2204cae6 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x24e4a58f wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x288c5cac wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e945731 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x47b9c762 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8aed219f wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb71af490 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba457e00 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd07e1fdd wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe1b017af wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1aaa705 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb680c56 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x0fc2855b acpiphp_register_attention +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x86350c20 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x144cc16f asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xa3c038df asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x561c634a wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x876d29f1 wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xda29f8b0 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xfb882fb7 wmi_query_block +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x153c4e8c pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xea9a4841 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf20784e0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5544fe3c mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xcc3e9038 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd4eea625 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xdcab5720 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xec33b7ca mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfcb5d81d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x21718e13 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x36e6e739 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4cf230f7 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xad70b7e1 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcf2f5b9a wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfca2025b wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x9bb1200a wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x079f0962 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x08fbe7be cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e8d2f19 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x109bd8d6 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x128168b6 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1909f4e9 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25230910 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x342522f2 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34b38eeb cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35fb4687 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 0x3dbea815 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44a433f1 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4515ff1e cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x45409b67 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d3f1515 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x58d22ff4 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e9bec2d cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6764560a cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6beb10e1 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70510ca1 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7069eada cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x79892328 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e46b7e8 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8a7aed5a cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91f7e17d cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d7d9d38 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa1d21b2f cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb09c1a9b cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6e8dafd cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb8906eab cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe424418 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe84758d cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9364fa0 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9cc0d9b cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca79fd95 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcca0a416 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce7b0700 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdec1c4a1 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe2b6aa8c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe466444b cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe78e3944 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xecb981a0 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4eeb49b cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5336557 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x198cdde2 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1f3cb4d6 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x257479dd scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x90e8e381 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb52c0517 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdabd45a1 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2781ec26 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2b2f1fbd fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x402fc976 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42a85ad1 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x83710312 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8a0272ea fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97e8f814 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9f43bf7f fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc7ed9c6e fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc9a56995 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd43e8115 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xea7130fd fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xefe3406a fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x5112b2c2 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x87865934 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x94c896e4 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9b333f80 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa5777cbf iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc8615a0d iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0fb460f2 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x16163287 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1efa806a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2926d832 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c542988 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4380c1ba iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fdafada iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53361491 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54c5328d iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x572f311e iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e9bd309 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7412c143 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7eab13de iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80b73244 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a12b38f iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8dcf11ea iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98685c32 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e1beaf4 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa0c9633f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4a6b740 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6101783 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa86f74a9 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xabb22471 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacfa4ff1 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb05beb94 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb24f80dd iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb254dc20 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5743659 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb9ecf566 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc573e1f iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc281a847 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc658f494 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8cf777e iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcaa87696 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0baa545 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd137b19e iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde07cfea iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1adff95 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6acb3b0 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee14cb23 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf87f1387 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8f29d52 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfded3a13 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x02007507 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2eecbecf iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4292e983 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x629f289b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69d2bbc6 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x80f64756 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8203375c iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x949792da iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9eacc6ec iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa2082b19 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xae1aa0e4 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb91354e1 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbadeed35 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc0e7162d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe37d1484 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe38262ee iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf8299621 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f32e6e2 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1497c7f5 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ae4b505 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ea36960 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3db18218 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42e18e5f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d14ba27 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e191f26 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x65aaffae sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7606c214 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7752741f sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x77e6a701 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9037f8b0 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9084b736 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa809a3ed sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb4cd975f sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbda237a3 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca5ebebc sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd0dc3a6b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd3696368 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdfcaaa41 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2798329 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe605b524 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x169ed483 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8eb0e1db srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa962498a srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xadf3ba19 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb9a7e456 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf3d0e6f2 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x03a896c8 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x050b9fc8 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1d983a65 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x63423aa2 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6c0ddabb scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6e15731f scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7e17a379 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb22c741e scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xfba7de8b scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18365d9e iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18aba3ef iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x250e034a iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x377c286c iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4148aacb iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x461ae364 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4654a7db iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50d2bfd6 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5856b84a iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62a09ad3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79bd1443 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7b6b8888 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f09352e iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7fdf3c08 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8dc583ab iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e153daf iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x94d4553c iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9a790049 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa193ff1b iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafe73bc1 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf179bdd iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc28d0d74 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc3fec491 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc92be670 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd1c210e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcde40f10 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdecb8c9a iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2be55b3 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9f485b2 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xedfd63a4 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf433417f iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb7379c6 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x027c37e8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x148c23ae sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2ca59263 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4f6bac45 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6184f4c8 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x637d24a1 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb656ad4b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbfd24847 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xda45e46b srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0aed3a9f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0b408c87 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3254a8cd spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5a284bb4 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5c265cae spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc86b4f0e spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x031c85d1 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1e3d57a4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9cd144a5 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaecabb93 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xbd938f62 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xc7645e3f ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x02ad80fb comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x273241b9 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x287bd324 comedi_get_device_file_info +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47883130 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5309a701 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58b059ff comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7bf1b6ae comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa081786d comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaeac0c16 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x301fb130 das08_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x86fcde20 das08_cs_boards +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xa7b624ac das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x02216613 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x25e55b95 labpc_1200_is_unipolar +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x8285332a range_labpc_1200_ai +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xaf1e4347 labpc_1200_ai_gain_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xb657da88 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x12352145 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x223fc4da ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2fbb3fec ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x98750854 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x99041f9c ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa6ec3d7e ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc16c3a9a ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe528b779 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0fab960f ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1f176f07 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x2f797606 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x46f9e23c ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xada0909b ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfb228f5e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xbb4a5e86 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x0bd53ca6 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x57a9bb52 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd33353e9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe36a3d32 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe9d8082a ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf293fe6c ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3ee16d94 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x44e7abd9 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5b381430 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x719669b0 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x892d7c77 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e8a916a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa9e774de serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcda38867 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcfcc99c7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd6eada87 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xde7ae2e8 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfb56156d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x05be719e usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x35ac6481 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x57f32b80 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6e0fef01 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7baa83e9 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xab815907 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb19ee495 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd071327a usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xea60d00a usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xebfab41c usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf195078a usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfbc50770 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfc4a1d1a usbip_recv +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x48162200 max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x5cf437a8 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x6cc59de9 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x7a9f5fca max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbb8bbd24 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xd9e297fd max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2cbc44a4 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7290daff __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe5eb891e uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x34666f4c usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf7127f5f usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x6e758d40 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xb3f0552f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xb4128f56 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xcc712280 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd21d8806 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf89e75ea usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1fda2bdf usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2d3edb55 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x493b0ae5 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4f68f67d usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x66bcc2ad usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7b836870 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x980416a2 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xba2fd205 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf83ef6d8 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3ab24a51 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xb0b7c258 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x8d206fa9 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x05defdac usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14ffd1da usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x23253004 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x28bef3aa usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x29b42c61 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37faeb21 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x470dd861 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ce272ac usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x71858b75 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x90e8d2a1 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x959abafe usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x98aa80ce usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa10cdbbc usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4edee7d usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8dd9993 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd18ce794 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd4037da8 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd6d378c4 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xea3ee71b ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06315c68 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1c69a13a usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2f06c14e fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x361c8af3 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x385c6563 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4a56f676 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4dc3b013 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4edf9558 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x60d3b475 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6bacaadd usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6bf0a622 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x731adcb4 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81ae0e4d usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xab9c5aad usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xafe8ee81 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb61ef10 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc1c70fae usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb56d5d5 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd63af70a usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6672713 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xef692a42 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc0e1abe usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x19890402 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x32b67f32 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5f2b39a9 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb5f24378 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdef5c284 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x246ff08a wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3013905a wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x378f18db wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3deb02cb wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x506edf89 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x626e2052 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6458a23b wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x66466bcd wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6aea852e wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8a7c2358 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa48bcefc wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xba332343 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcece4aae wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb1acfc6 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe1298baf wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf6c57a9a wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x10844aa6 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x453fe188 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8d54642b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x126110b2 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x29ca9006 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2acfb6c8 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3667d484 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x38030c33 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x477f64fc umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5a6d350d umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6edffbb2 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ba14083 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0c7c2575 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1003d5cb uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x103d3ced uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1655a849 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1c5ae29f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1e17f291 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x324ce590 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x397f1831 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a8631aa uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x43a2096f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x444dc932 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4539e5d5 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46992709 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46a72439 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d9a220a uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e6f25f5 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x588bf41f uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x66ef85b8 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e7e584a uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76760798 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ad26386 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dfa2d18 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8baf3c6b uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9368527f uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0335913 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb21b0d0d uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba8d3eeb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbda37847 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf238c1c uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd3d46621 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4a9ea5d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf76dac5 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe285556a uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5d827db uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf46746c1 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf5701e5c uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x530b900d whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x246c5c95 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3367ac98 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x56a7a038 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x74c992b7 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8ce264ba auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa61c177d auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3410b51 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc0939add auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfd95248c auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xff5d703e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x026db07a ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4498809d ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6482a17f ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7dbaef0c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x81d185e3 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x92618cdf ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa3adba00 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x0345d226 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x4652407a fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x4a26318a fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x20b1facc sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x7e4d0e71 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x292da7a2 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x4b0c88b8 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x04eed353 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x12426f1c w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4869d50d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x57208937 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63bdead4 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xac64cf28 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd1213da3 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd40854f4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe08fc826 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x443ac367 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x999fe3e1 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa4df7395 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xd3d305df dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x125832af nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x31bcfe40 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4af4a3da lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x535916b9 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x76b456d6 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x81e22afa nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8c2d98c0 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02dd2a39 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03cd5e77 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x158281ee nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2026b4bc pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x243a0308 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x293c65cb nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e486abc nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3139f1dd nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31d1b86e pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33f3f945 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36a87e28 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41016f07 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4287cd5a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48197919 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f7b6be7 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ed177c3 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f8799a9 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61b6f781 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x692779dd pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a9211c1 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c0d2d6e pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7730ff34 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e42d7ad nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ebbd1f8 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8277269d nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85ba3366 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e079754 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f0feb3a nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9256db87 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa18d1d01 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae1eade2 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6bc07c6 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7fa650a nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd0530bb nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcedb0205 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd362e908 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd42df704 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd748e201 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd882a05f nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9f1bb50 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2394d56 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe32845d3 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedbb45ad nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2248c16 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5a90572 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb5454d3 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3d035747 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf50fdce1 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x2ccb1f2e o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4b4a5411 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4cb13acd o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x513de3e9 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x849c2733 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa7621494 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 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 0xddf898f4 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0b677b4e dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1aa3feea dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x30ad6d83 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x83d0bad3 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa77e7638 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd68cc92a dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x05647749 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb8ca4415 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc066bee6 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x0601d659 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x2a5d3b48 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x43b7735d garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x5023b1e2 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x6116cce8 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xfb2b2090 garp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x15646ea4 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xbbb61da4 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xacd89af3 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd1e7dabf p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x447c2977 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 0x9233e150 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b361dd4 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x20ff9184 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27e9eb37 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ec1af85 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2f27e7bb dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x30ccbffe dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x328ab236 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35e636af dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x440a6c26 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4da69423 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56c97bcd dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5807e4ab dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b540221 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6175c20f dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69c0c09f dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a61ace3 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x83e2a3a7 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x84609cc3 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87443b25 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91e00cc9 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e5d9a12 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa4d6cdcc dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaaca76a7 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xace3878c dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb68c507d dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb870d3c7 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd213ffe dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf725c48 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc07ea598 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc23de109 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4ca7865 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce7d90a4 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd0135fa9 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd56786c2 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3691b9d dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea4eaffd dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb467fa1 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0ffd05ac dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3b939e42 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x801ce454 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x93bbdce2 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa3727b8a dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaee40d29 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9acd6d27 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xebdca2d5 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1eb48461 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5d084371 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1ac1f54c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3126d17e inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3cf030eb inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa3df6a66 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc6acecc0 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf1a80302 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xb5aff14a arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xfe6b1674 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x3e477f99 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x1d36f684 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x51d46269 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x6fa2c658 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x937cd223 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xc7e17f4f nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x831fb59b tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb91b0785 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xde29d2d6 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xeac3253c tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xeb603694 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xfb4580ac ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3084e05e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x35d0674d l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a549604 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6e77e692 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb3d7e9bc l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb9be0fad l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xba2fd68d l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc7a0014e l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd0430b49 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd2a91151 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe228efee l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe5033f29 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1a440799 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72d83877 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x75e41f07 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d11f17c ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc05ae0f4 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc389a846 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0136bde ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd19bfe79 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xeda8dab8 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x31298338 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59320296 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59e8dc22 ip_set_del +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 0x7d6979f7 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xad7529b6 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb1515ec1 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 0xe4e22157 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeb0d2492 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff496431 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x383848f8 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x45814cb5 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x46cbf72b ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x61fe4c34 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x022691c6 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a748f15 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d3c0956 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e7fa76d nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e8b9541 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14fbb7b9 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b11dcd6 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c2e4ca0 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eb6f643 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ed4bb57 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fdc2bb7 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x225a08be nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26c9053a nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f0402e6 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3069c04f nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31e94e83 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x351f5292 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a9a90b3 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ae815ef nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b62703e nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x432a4a6b nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47b5aec4 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ed0df1b nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52838d5a nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54e18850 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59ff13f5 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a0cd0f7 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x618bab7a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61b91d8d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64a5e81a __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65bfb744 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65e64462 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6639bff4 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69668c8f nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fba4fff nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75889411 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ce6bd99 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x805b7fbd nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x806bb407 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8247cb5a nf_ct_nat_offset +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 0x93df8f74 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x970c7ceb nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1e9edf6 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7985353 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa881f707 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9350952 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe0cf83a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc07bde0a nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0cd71bf nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7b6663a __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce6b3028 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd117193d seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3b1aceb nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7f5e766 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8bb0bb1 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd94e867a nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd9f97f5 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe036535f nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe17f5c2f nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6a61f8e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebae2c2a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2237027 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf513ed75 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa37c12a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa67df5d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa847532 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xe8c352f5 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1bb36d37 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x13aa1a71 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0803b694 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0e104ce0 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0ffb67bc nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x22633675 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x31627489 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x440a673a nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4c4a101d set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x61d6d264 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa91e0fee get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb2480cc7 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x39bdc0f5 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0bbcbc1a nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2007e446 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x85814a0f nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf553c71c nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x33f599ec nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x96a1f115 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0fcd2ca5 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x121c5e2c ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x176d6adf nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2d58ef8b nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x860a9550 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x89381078 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x95018ce2 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9ad5d233 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xacbac922 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcfcd02bd ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe2ee59e1 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf13555b0 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf86b2fff ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xba2e54ef nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x4c77b3cd nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x15040647 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 0x5d981598 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa31b4854 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb905166b nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf289497e nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf6fde6e2 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfbeda4f2 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x1d1c15c9 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x2a758612 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0e5a1ebc xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x160ee244 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1c152339 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2b07f3ac xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2c7863d9 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x36d8aa5b xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3910f3be xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3ea49ff2 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x781be58c xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x867aed45 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x880dbf3b xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8a220771 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99879a57 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd0e83906 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd293a6da xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe1c80b4d xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe6ea203c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf48933bc xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfc0fcc89 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3bf0da4a xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xea127120 xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x06cfc762 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x127b6f82 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x16e149df rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2c83c824 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x42d6d44f rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4751b1ed rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50bdee2f rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5413968a rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x6795a3fb rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x6a4f57d6 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7a6fc05e rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa09e055b rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa0e9b689 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xa54c13b4 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xa5959a76 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xad916129 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb417f466 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc54f4e5c rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xcbaea687 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xe15b86a7 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xe6f10c3b rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xefc0645a rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xfa41591c rds_inc_init +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa2131eff rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xcfde2a24 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 0x1fe7a12b gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2cfca954 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2ffd875f gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6b3f24b6 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x77f48a62 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7a82a24f svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8ad28a2a gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa0c33e94 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb507c43a gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb7fb8d59 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf3f307b5 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 0x000ea06b bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00ca5315 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01dcbe2c svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0298a8e3 xprt_release_rqst_cong +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 0x091a98bd xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0abc324b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c7b0bb3 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d733cc8 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f80e575 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fa0a701 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13619a82 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1363092a svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x157b31c9 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16bae5b8 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16c12d7b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x182cd886 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x185666c7 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18d44b5d rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19667ab0 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b6d3aa0 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e14ade2 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20af0ad8 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x236ca3bc xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2636bc24 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29d893be rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a96fad7 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ab9efec svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bede792 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c501325 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e26fd2b rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x306d64c0 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31e09e5c rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31ef628c rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x331ba13a sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33b39101 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x340898ff svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34704881 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3656e000 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3759cfc0 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3782bd5a xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a8e618 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39df99f5 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b23880e cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b2c345f svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b369b80 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f03f291 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40b3518e rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x419ad03f read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43d3bcae rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x462127ca svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x471bf144 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48796834 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48e06ae4 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bad461f xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4db00831 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4db6d9b4 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50490181 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5049a5e4 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x513e3a76 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51fae630 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52303d00 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52aa5673 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5309599b write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53fbd77e rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5456a592 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55265cbe sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x557a6edc xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55e7dff9 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5813d405 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x592b843e rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5948d8f8 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cb3e0c4 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cc42342 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e74a074 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f89c38b rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fec0b6b cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62d24a5e xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x630edc9e svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x640d7426 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6487a9ee csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x677d2377 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x690115e8 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74d2eeb6 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76459973 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77802cd2 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79061a10 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a030cea rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b1f27b0 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cc4eacb rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ce073f9 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d786e7e svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dae0d8b rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dc3e746 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f53605d xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8090b06d svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8259edb1 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84077bd9 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87069dfc svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8859b53e rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89e7d1dd svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d021b2c svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8da9954d rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90439841 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90653504 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92b5ed56 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d4d218 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x941c9598 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f46fae xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9758d644 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a1ce309 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ad6fa60 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c03a999 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2f8f05 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c319763 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c773ec7 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d6f3481 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e171911 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f326c93 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0216db7 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3e9af6f svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa44142d4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7fe004c svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa82b95fa rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab16a0c0 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16aa853 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1a23850 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2f007f0 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7580c69 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbba2d63 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbf431bc svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc1b63d5 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc79a2e1 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbeca7865 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfa11419 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0aff837 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc24e8ddf rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3de2443 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc61741bc rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc63bb39d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc761e9f6 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8814932 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc89f4367 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9ab6a75 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdaad44e xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdfe2c7d xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1888a84 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6650366 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd92ea385 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda1448db svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda6744fb put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaba1fa1 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde95c456 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc7693e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe07856a4 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe40a3a42 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe58efb68 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6e0fbd5 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeafdafcf svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec8564de xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed3c5ebb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee6293cd xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf15e6d37 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf24ace9a svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf50a8da4 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf56c0d59 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8c5df4a svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9697658 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf982a54c __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa783ef1 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc865d31 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd1d76f9 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe95c83e svc_rpcb_setup +EXPORT_SYMBOL_GPL net/wimax/wimax 0x09f3536e wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0c68ebd1 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x14120274 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x184c57f8 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x26b1a520 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3703d1c2 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5004ea51 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x610117fd wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79222815 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7d3a4f42 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb5029048 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf9a3e937 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xff1f0182 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x221a4251 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x27ca1650 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6599ef12 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6b5716bc cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb1e7102e cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb2c95843 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb8c9eddd cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2216bfb cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd45f96c3 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd8124750 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe0fde460 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 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 0xb5f83766 pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x0bcdc86b ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3f035997 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5cc830b1 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe079a5d3 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/snd 0x6bef3d44 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x8ba62316 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xd02677f8 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xe4a21bc8 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xf9bf4825 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa5923266 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0a82d604 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x49dd158c snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9e68600c snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf3f96971 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf51fa85f snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfaaac81d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04de0643 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x078172c2 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08aefd89 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ada03e5 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cdcd2ba snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f23e76d snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f2e0d80 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x104e1bf8 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18c0b11f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a5f1abf snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a858f6c is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b3121f8 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b674670 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c12bf45 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c13f44c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c877982 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d9cb6bc snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ef4c9eb snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x250838fa snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26129bc0 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2851117f snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x296e883e snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x389dcaa4 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ff4e81 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397ad34a snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3afa2ccf snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eedccef snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f28ae5e snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x435bfeb6 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45d6c90c snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x470b2a46 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x497fb96f snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a49ec6b snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4af4c58e snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d97dc0f snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dd3a25e snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x505b2ca9 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51de60d0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56df855c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x579baed7 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d739452 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d8ccb4e snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f319b58 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6054cf0b snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61a59754 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61efc6a3 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6532fdf9 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6642d808 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6695117c snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6843223d snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68e822ef snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a4fe1ba snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a60ff02 snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ad43fad snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c10f308 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c7b1fbd snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7303b69c snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x749b776b snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x771352b7 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77b737b1 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x791cdb6c snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a443912 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a9e008a snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f6066b3 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x804e6254 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83264fd8 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8743977e snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87bf3853 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x888bf79f snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8992ecee __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f10b98c snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f98d510 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x932d2787 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9801ca25 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c5643a6 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c6838f5 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d3572df snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ecf1f06 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f2fc59f snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa38a46f4 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa83e4ec9 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa921c605 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa167c76 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac339547 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb84e78e1 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8eba307 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb3234ac snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbebe3f33 snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc37a2772 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5f3c750 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc933aa11 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0a6a7be snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0c8e7fa snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4f2f12b snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd53e31b0 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6b4ef13 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda38398e snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaecc7df snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbaf6a6c snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc31a1de snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd769624 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde5ca9a2 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07b7318 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe614c5fd snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe67c6204 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7c91831 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9d195e7 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb996805 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef6a1c70 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a1e4b5 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6cfa4f1 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7e23ec1 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8b926a2 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc85a36c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdfa052c snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe1641a4 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xea440a99 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xf368cfe9 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x3b6b63a6 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x79a6eeda max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x06a8f462 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xbfcb6f45 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4cdc96cb twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x55a575c2 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x9142fe95 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xb0c39b4b twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfc8f0358 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x322858a8 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0c58b05c wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x14b39ac5 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x295ae112 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x41ae7c16 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5e103a05 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x93477efc wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x94e0006e wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xad3c6385 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x5592823a wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xb82d0356 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x2c9a40eb wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x9018582e wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x309d9af3 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x999230ec wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xf109ae3a wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01391691 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0613ecda snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08ac9c42 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09908e8a snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0beedd52 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d086c04 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0db4472a snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12eaa19b snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1644b062 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16e9bdba dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18b38d36 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d6af200 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e8222d6 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x207351e1 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21295abc snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21779c91 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24bef679 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2759eba3 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b822c61 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bdb4914 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d24d18a snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d835081 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2df86d4d snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ef6a977 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3065fdbf snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31b89ed3 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x321c44ab snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36d1e333 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39d25a21 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41a8c7bf snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x425a443b snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ebf6d83 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f5cbff2 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5073f80e snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53ccbefb snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55bec1fd snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56ffbe4d snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58af6824 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a912601 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e991c43 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60efc5d4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60f72e81 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x620c7ce4 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64aa75b0 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6575ca91 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66b4a91e snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f45c52a snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70957ab9 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7150e3fe snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72bea348 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x743151cb snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x762df7a2 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77e0203b snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7803d2a7 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x783cc6aa snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796ec139 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7edbcd85 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81a18b9d snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84acb388 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8664c9cf snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8701cc72 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b9c9a40 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eba6e8c snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8edd09c9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ffabb1c snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91c42aa6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x939bcb33 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9439eb6b snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94990346 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x975b78b5 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99053f22 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99cbb34d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aea720f snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c13b75e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0b19dab snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1213c63 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa35decdc snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa426da47 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6bfed53 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6eba553 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7d33b86 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa856c80b snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa89a209d snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad3a3722 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaefcf5c7 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb076b55f snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1c9e567 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2c635cf snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4bf8d48 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5b7a005 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb89e6271 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb92e1a2f snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc3d6ce7 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcc2dddc snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe002932 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbeffc951 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3f9a8c4 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5fef2a4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6ae35ef snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc85c5349 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8e0e69d snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb4605b4 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcea82c6b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd345690a snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd499fca1 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd57e682d snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd69fea7d snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8b88dc7 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd98f20be snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac9785a snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbdbeb2c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd31cbf5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdddfb07b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf5d2c99 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe01b668e snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe03529dd snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe21568db snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeae01646 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee97076f snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf200f57b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5a7e24e snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6089da2 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9d04ffc snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa907134 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe7cc338 snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x00064d22 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x0012a90f xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x001ffdf6 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f94fde register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00facc6d edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01274b2e sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x012ea293 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x01330a06 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0144d04e pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0182e109 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x019a5c90 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c62206 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x01dfeed7 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02448233 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0257f8ba regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x026132c9 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x0261731f xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x0262041f pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x026ae228 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x028fbc22 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x02912d33 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x02a37b84 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x02d0dc9e tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x02e1ee6f rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x0334de8e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0372b410 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x0378a71f rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x03a3f86d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x03ae50a7 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x03bb3b86 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x03ccb043 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ec249d bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x03eca9a1 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x043716bb max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x0446534f md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x0464c78a xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x046d6323 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0498ed1c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x049d64cd sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x050e5c2a crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x052d910d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054e0636 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056973dc usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x05759ea2 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x058624a3 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05bc689e usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x05ea420c blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x05f666e9 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x0628211c blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x0634e494 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x064754cf relay_open +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06b2585c serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x06b4c706 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x06b560f4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x06ca4121 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x070c5927 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x07231e8a dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x073f5a50 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0756790a pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07668e4b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x07677799 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0769b1f7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bfbf0e hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x07da4e70 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x07dfb86f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x07e27a4c dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x081939f6 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x082d20c8 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x084bc99a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x085b9762 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x0860e402 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x086213ed xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a542b0 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d0cdd5 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x0914dfea virtqueue_add_buf +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09660831 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x09783654 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x09d62735 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x09d9c22b unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x09f3dd05 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a21ba29 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x0a288348 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4bbaa0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x0a5dc51b pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x0a69312d pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x0acdab48 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0acfce92 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0ae43b96 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b11a504 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x0b19ed7c apei_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x0b345425 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x0b3e22e2 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b6c1501 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0b6db953 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0b7b9554 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0baf1fec rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0be8cb31 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0bf907e9 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c254e19 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c67e29d modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0c71c272 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c9bfd61 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x0ca0058a usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x0cab7615 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x0cb149df cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x0cbdb9f8 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc2ced9 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x0cce610a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x0cd10a4e work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0ceb241a usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x0cfadf03 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x0d0f4d34 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x0d13553f ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x0d2a060a wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0d3e0a56 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x0dac5b20 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x0dc720a6 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e22167a regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0e319b09 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0e4689f1 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x0e654828 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x0e73c17d ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0e8fac52 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0e96355c usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x0e9806c1 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x0ec210b8 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x0ec37931 css_id +EXPORT_SYMBOL_GPL vmlinux 0x0ec6c52c usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f146342 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x0f34e129 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x0f4bdd3d acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x0f698cc7 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x100c48a2 unregister_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x10120caa rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1040667a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x104ae24b usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x10856bdf devres_get +EXPORT_SYMBOL_GPL vmlinux 0x10d80da9 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x10e12379 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x10e460e4 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x1111c058 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x113d4bc6 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x115fe2d1 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11b83bc7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x121f73bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x123e392f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x129dd3a3 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x12b71b8a tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x12cbb4ee fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x12d04b18 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x12deb63c zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x12e34f2e usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x12ee4256 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x12fed638 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x12ffdf3d __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x13154042 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132fa578 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13ae5484 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13c4398c ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x13f03ea5 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x13f3bb52 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x1401c73f xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x14055fce register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x14092c37 zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x142ba9ed xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x14448469 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x145fd596 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x14a395b5 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x14ce2544 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x14d3074c adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x14f1db56 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x14fd0cde tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1501bf65 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x150e69d6 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x15403359 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x156b04e0 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x15781d63 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x157e3115 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x157f6557 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15bfba01 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x15c9b594 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1611d699 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x162a9a08 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x169a76d3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x171839aa pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1724f34a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x17513e5d anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x1769e05a hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x1794b6f1 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x17bc9672 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x183401a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x183aba4c tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185bfead pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186cbd0b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18cdcefa posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x18d05520 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x191cecff vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x19276ce6 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x197f6a62 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ae6f98 xen_swiotlb_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x19cf558b rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a00a361 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a15055f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a418839 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1a6cbe74 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x1a9074f7 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x1ab88f62 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x1ac39efd get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1ac6641a crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1ae41ce8 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x1ae9e5d2 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x1b1436b6 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x1b1d8bd3 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x1b3c9291 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1b486e33 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1b8694ef free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b37b2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1baa0e73 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x1bcd21d3 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1bdfbf0d rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x1c044cbc device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1c044dce regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1c0e4561 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x1c2175bf register_efivars +EXPORT_SYMBOL_GPL vmlinux 0x1c37d519 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c8093ec inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c931ca0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1cb289b9 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x1cfc7324 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x1cfd95c1 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1d05796d crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x1d135d7d device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1d1fc44c i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x1d2201d4 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6ee6fa sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d73e762 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1dd08c3b cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x1de0e335 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e311590 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e400371 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x1e4eaaf6 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1e541146 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8a14e6 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ea32a31 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edb78d0 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1f5a8d37 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x1f68f8c1 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8ec1b3 acpi_get_pci_rootbridge_handle +EXPORT_SYMBOL_GPL vmlinux 0x1f9de1fa pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fe90d5c ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x2005f155 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x200edba1 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x201cf2a8 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x20388a11 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x204365e7 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x204fa599 xen_swiotlb_unmap_sg +EXPORT_SYMBOL_GPL vmlinux 0x205b6be1 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x2071f526 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2085bbe9 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x20a8ee0a timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20dee312 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x210cad66 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x210e335f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x2121dfa2 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x21248072 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2154633c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x215807a6 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x215adf78 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x21647a8e pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x21a06235 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x21a2052e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x21b56c93 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x21c67832 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x21d243bc sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x21e8dbfa usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x220d5bef cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x22201664 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x222736d5 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x223784dc apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x22605382 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x22766ce1 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x228e1fe3 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x2292beb9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229bd424 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x22c3a2ce zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x22e3df5b set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x235f63c8 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x23621af3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2373dbe7 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x237db659 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23ec64e3 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24189c2c gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x24195c49 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248c0195 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b526e5 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24b809db rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24c82392 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x24d95ccc tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x254b1ee5 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x25646c42 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x25ba2c1f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x25c0f8ba dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x25ee6ea9 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x25f23e77 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2604da1d dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x262c3f66 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26370326 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x2638b00b crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x263ba3d8 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x26576139 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26716e04 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x26a43d11 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x26af8d91 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c07301 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x2720e563 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x276c0b74 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f38452 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f945bf relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x2811003a cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x289cdee6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x28c52f50 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28f46d49 device_create +EXPORT_SYMBOL_GPL vmlinux 0x29098c51 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x295b118c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2965dff6 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x296cc200 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x296d5423 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x2970864f xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x2974ab66 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x29868518 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x29d21095 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x29d540c6 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2a63a8d4 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a81dc8e usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x2a87285e alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2aa617cf mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x2acf4cb5 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ada9d6f dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x2aec0b15 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x2afbc9fc md_stop +EXPORT_SYMBOL_GPL vmlinux 0x2aff34dd ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x2b2cecd1 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x2b36614a ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2ba4f6d4 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2ba5cd0a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x2bb6c9bc blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2bc06d48 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2bd72b76 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x2bd8a418 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x2c0a8a65 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c6e7e74 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8cf544 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x2c8fd48a bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c9c686a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb7b56f class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2ccb4d4b md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ccd0cda gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2cdda7a9 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cecb66e ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2d0ebb89 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d25ae2c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d350a7b pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2d4976cb bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d82be33 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2d953668 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2da6aea2 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2deed90e usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x2df1862b device_attach +EXPORT_SYMBOL_GPL vmlinux 0x2e033d17 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2995a6 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3fa843 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e68e570 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x2e6ffd06 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x2e9ea099 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x2ea39a4c usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x2ea9ad56 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x2eb1d10f xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x2eb422af spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f20aa10 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f49613d blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x2f58309a xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x2f624289 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2f65578e led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f9df959 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x2f9ffd55 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2fa8b4ee ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x2fb571d2 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fc9ef95 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x2fd97a5a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x2fea2142 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x2fea4c29 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x2ff968a9 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30094001 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x3074c699 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x307e1258 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4e5c7 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x30b8f383 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x30e4a272 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313f02ab rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x31421f20 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x31641971 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x31644210 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x316fe3a9 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x317d9015 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x318920b1 register_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x31bf128b crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cd842e tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x31f8c806 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x324e76d0 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3268050b aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32cf767d platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x333d90a5 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x33597f93 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33712103 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x3388e1ea inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33e2e1ae cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x340236e7 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x34290a3e usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x342a3c08 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x34551cba usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348d8171 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x348e9c81 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3491150e cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x34ea4c9e sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x34f84644 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x35055b38 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3505e6e9 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3510706b usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x3513d4af xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x351e5ad6 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x352a474c nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x35339331 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x353d3b19 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x3542c941 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3543fdf2 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x35d0a23e ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x35e1786e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x360658f4 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3634d2cd blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36a31050 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3709a2bd blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x372235bb fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x373bce29 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x373cb816 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x374cd2f1 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3761a7b5 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x37717dc9 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x37830549 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x379d2800 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x37c112ca usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x37d36afd hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x380641ee screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x3832e166 xenbus_dev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x389089f9 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x38d3ab41 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x3975cb52 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x39a8f841 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x39b7da1b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x39c682d5 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39e97f91 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x39f943a2 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2ed3b5 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a41302b blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5376dd __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3a589a65 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a5a8769 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x3a7eb97e crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3a8802ff zs_free +EXPORT_SYMBOL_GPL vmlinux 0x3aa24773 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x3aa3df2c nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3b4e4e16 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3babdb1a each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x3bcf2a14 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x3bd2ad6b usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bf7e806 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c5180bd tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3c61d0c7 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x3c6b54ce tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9e46e4 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x3ca9e1a6 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cb05b8e iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x3cb8f3ee ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3cbe4560 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d1ade4f bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d470604 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6fb878 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d98dc05 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x3dad62f1 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0c14a page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3dde0e07 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfd85f0 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x3e0373be sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x3e3bfe19 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x3e3ec01d i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e5fd10f iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x3e695c5f tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3ef76161 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f08cd2e ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3f15a750 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f5cc26c scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x3f7dd213 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f8a7a1f pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x3fc1ed79 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fdbe530 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x3fe78ffe find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x3fe92d0a mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x3fed49de debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x3ffaa6f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4021f23b bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x403a4a3d ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40684375 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x408f5fe0 device_del +EXPORT_SYMBOL_GPL vmlinux 0x40a14649 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c9f343 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f8ca53 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x40fb3360 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x40fdc9e6 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x414fe3cd wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x417ab30a eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x417ad15f pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x4180a503 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418806ef power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41955f62 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x41e3c073 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x420fb87c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42203770 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42551124 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x425eabf4 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x426f13b9 e820_all_mapped +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4297b25f firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x42afc1a4 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x42b22214 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x42b86eb6 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x42d1165b regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x42f4dc95 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x43204a50 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x432bd08f tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4355e278 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x435b7d6d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x4362b2ae fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x439869f1 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43d8551c sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x43ee8d8f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4401c16e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x4426e156 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x4437c9fc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444c9168 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446d16f9 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x44727911 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4475cc6c cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x447cf119 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449d705d cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44d1c620 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x44dc590d sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x44e9ba27 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4577db87 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45b3473a skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d9b9b2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x46238da4 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x462f4667 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x465065a7 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46c0f6c0 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x46dca58a xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x46f732de queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x46f7d94d bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x470f766f virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x47158797 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4715c01a tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x471abc88 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472b8d77 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4767c698 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x47c48f49 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x47f1f1c9 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47f3b852 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x483f3bc9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4894704d tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c065ad __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x48cdc20c wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x48d8926c device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x49198b79 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x491f0a43 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x494ca974 apic +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499f905d flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a4fab21 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x4a564ada blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4a59c95e __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4a64deab crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4a7f75df register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a972291 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4adbe095 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x4afb6520 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b2e4d2e pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4b1c20 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b8b935e tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x4baaf965 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x4bc35b78 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4be76e28 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4bf0d6d1 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4bf4a205 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4c4e0881 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4c6326f1 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4c701244 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cdc7f48 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x4d02df8b inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d03636c init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4d3daad6 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x4d603ecf ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4d7eb775 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4df33753 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x4e00074a tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x4e0832ad regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ebc6924 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x4ebc9616 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ee9d253 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f35fe74 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4f651bd1 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4f6689d2 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x4fb4ccd8 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x4fc3311a i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd552cd rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff842c4 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x503220d6 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508ec835 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b328cc sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x50ba3bec acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x50bc6901 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x50c6bd37 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50d34286 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51406098 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x514291df exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x5145f82d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x5159b39d __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x515daf60 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x51db2031 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x520b9fed init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52287b75 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x522e1c21 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x525b89d5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x52da83d2 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x52daeaeb spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x5315873d usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5328ae80 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5372dede unregister_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5397aed9 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53fe52cd ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x5415c783 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5432d15e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x543a16f2 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x5448341e rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54696cf6 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x548ed96f invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549e90f2 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x54b23e08 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x54cd9b04 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x5510c9e4 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x555bb0f8 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557dd91a regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x5583bdff relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x558e4cab xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x5594c7d1 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x55ba7788 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x55c4a1e7 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x55f9635b fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x562b9321 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564dea78 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569aac40 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x56b700fd unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e7d899 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x570135e4 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x570f3f71 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5736b3ae sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x5736f1be device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x57689dda tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x576d4e46 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x57845250 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x578d7e77 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x5793c559 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x579867d7 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x579d8786 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c4691b queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x57cbfdaa mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x57e0a210 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x57ea6b4f unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x583959ec uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x583ff027 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5849a924 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x58bdcba6 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x58e02149 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x58e21f3c save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x58e942b9 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x58ff6bac get_device +EXPORT_SYMBOL_GPL vmlinux 0x59004cfd rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x5909be29 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x592980d4 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x593138fe ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594fdea1 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x59876c06 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a1d5251 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a42cf7f __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a48fba2 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5a5e870c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5a726186 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a98364b pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b103f76 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b194b8c scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x5b39b12f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b435139 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5b5608b5 tpm_bios_log_setup +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bfc1a5c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5c00d6d1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x5c08e5ec pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x5c1830af ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5c268364 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x5c68828d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x5c8dde44 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x5c9aedf2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cb8a960 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x5cd166e8 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1b8d8b device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d36c5e1 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d4dff17 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5d57c5d5 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d87c067 register_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5d8e4744 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5d8eb031 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5d99b0cd inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x5db18100 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x5dc42934 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de9026c spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e39974b tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5e42131c bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e69ec34 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x5e6f7d5e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5e748a41 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x5e7607da cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5e8ca84f debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x5ea0c63e led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x5ea0f6a4 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x5eae3cda class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5f147401 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x5f1e77ba ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f26fc1f pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f386d8e call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7baf62 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x5f8d5079 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5fa67f92 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x5fb3927a acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x5fc46b63 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x5fc9c580 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5ffa3587 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x6012462c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60677eeb bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x609d963c m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a6242c swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x60c95350 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60e3631b skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x60fcca6d cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x61109671 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x61313adc wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x613595bf ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616a974c tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x61814d66 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x618eb106 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6194ffea do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x61ce64bd nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x6205cab6 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x62bea628 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x62df2c11 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x62e943f4 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63256dc3 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x633560f4 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6370abfb __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6375b854 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x63cb7aa2 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x64186569 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x6427e089 device_add +EXPORT_SYMBOL_GPL vmlinux 0x6438bc4c rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x64ed9359 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x65369b17 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x6551e18a __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x65754ebd skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x65866e69 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x659482ca ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x65b899e7 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ca812f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d02dd3 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65fce63f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661ae98d xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x6622bf3c __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x662b2b84 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x6646687b md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x6657a48f i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66c1de37 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x67065206 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x672f453f class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673a1863 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x676bc0c7 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6770845f inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x678dbd09 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x679388dc vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679b4ffe dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x67ab3d48 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x67d8c71d sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x67e3dc11 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x684afb38 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x686d40c0 user_update +EXPORT_SYMBOL_GPL vmlinux 0x6872212e led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x687b73fa debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x689a3894 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x689cf2f8 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68cb234c device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x690e50b5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x6914773b pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692a8b75 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x698398fb usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6987b782 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6994807f blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x69a6702f device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f5c800 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6a034f05 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6a2d7006 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6a3fad29 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x6a4e6501 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6a50f440 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x6a5b8d1e rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7321f6 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6a820c76 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad2d082 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x6af5eb89 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6b20205c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6b243ff1 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2fcead mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x6b313a0d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6b82c79d usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6ba1fd86 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6ba5f7b6 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6bbaed18 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6bcb151d ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6be41e25 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x6bfa8c48 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x6c0ac312 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c2f5f92 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6c479dd2 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c63c7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x6c6fb0ba ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x6c72dc3d ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cca9e59 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6cd9f526 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x6ce0ba01 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6ced828c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4fdf52 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6dc2d09b wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6dd1f7e7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x6dd592c6 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x6e4925ff i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6e563ff4 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e78848a cpufreq_get_measured_perf +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6eb01be9 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x6eb0b454 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6eb34ef4 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x6ecd81bb tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ef8481b usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x6f03ca3f crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2f6493 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x6f33fb35 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6f4d6940 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x6f5e4fb0 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x6f8e28e1 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6fa4cf38 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6fb0a03a pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701323db platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x702062d0 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x703baf16 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x704aae24 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x70648a6d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707e8ace sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7093d115 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x7099d94a blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x70ad3fc6 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x7125499a __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71798a22 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x71be3476 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x71c6a0a5 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x722fcfeb crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72a7bb56 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72d7700f acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x72e6869b crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731433ee unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7359cd8c ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x737615b4 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x737b618a scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x737d967a crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x7395f1e0 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x73972453 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73abc95e swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x73ba6b46 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x73bf8a18 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73db88ac fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x7414e89f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x741f8983 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x742ee909 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x74366d01 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74453331 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7473a910 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x747b08a8 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a2ea1e ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74adc64e tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x74ba86d5 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c8e515 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753cc6d8 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x75419296 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x75699c04 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7577d30d inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757ca21a __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x757d4ebc spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7587931e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75ac8fa2 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76297d78 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76537864 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x767fb794 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7693327f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x76a5f011 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x772c63c4 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7739af68 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x775b1f17 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x77888fa1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x77a82956 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x77a9b829 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x77bb80ba raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x77d5dd73 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x77d7ea00 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x77e01128 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x78165663 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7831ed35 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x78552dac xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x785be9b7 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x78672a74 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7884f915 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7888c6f1 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x78a5c3df pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x78df1f18 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x78f442b9 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794f6712 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x795c4eb6 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x796299a2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7986f530 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x79ced8b8 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x79da31b6 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x7a0a0438 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a339bb5 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a700649 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x7a7c5175 amd_erratum_383 +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ac9bb26 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7ace8c92 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af3af11 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x7b09f87e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1432e8 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b445fb9 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x7b466f98 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b8e7fa6 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9e2183 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x7be32c3a skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x7bff79ea __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c034781 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x7c4ff0aa pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7c54e976 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x7c683434 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cdfb1b3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d155f9a __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7d470dfd usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d6d3817 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x7d79994b pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x7d8bde7a scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7d9d305a stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dc6b9cf xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x7dd08c5c led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x7de5cd76 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x7df27a66 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e1c9a35 md_run +EXPORT_SYMBOL_GPL vmlinux 0x7e1ecdc5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e594746 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7e5e301f unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e9f6016 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb37021 device_register +EXPORT_SYMBOL_GPL vmlinux 0x7eb4593b inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x7ec22f9a apei_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x7ec3a793 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x7eec2de2 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x7ef69003 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x7efebff6 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7f1d1a9d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x7f5ba5b1 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x7fb4129d __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7fbc7b0c get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x7fc8d03b class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x7fcb5f79 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x7fcb749a __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7fd1b084 user_read +EXPORT_SYMBOL_GPL vmlinux 0x7fe88c21 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8025f263 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x806e502f btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8089bd55 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x808ef8df hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x80afe525 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d633aa key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8111c3b8 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81321b05 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x814332ad relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x818c28c1 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x81ebace6 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x81f3b0fc usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x824ce315 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x826739fc tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x8286630a driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829d8125 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x82cd19f3 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x831884b9 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x831bdd5e ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x838a21ea regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x838aeea6 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b1d215 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x83b5732f driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x83ba8d7f __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84418482 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x84419781 device_move +EXPORT_SYMBOL_GPL vmlinux 0x8478e8cd ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x847f4644 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84b49a7e rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x84d35056 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850e45a7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x85202d24 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8527055e scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x857dbd41 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x857f1fce blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x8585d582 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x85966d26 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85a5e807 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d159dc dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85e02d79 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x85f2b734 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x85fa44ee __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x861ec198 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x862f98a3 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0x863e57dd inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a36b6c tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86eff299 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x86f6742f ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86ff951f wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8706f57f sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871aafeb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87579b5f s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8783d294 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8794cd19 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x8795f44b rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x87ab6cbb blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x87ade365 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x87cf0a90 injectm +EXPORT_SYMBOL_GPL vmlinux 0x87d839eb attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87d9ee5a fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x8804ff0d xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8815f10c fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x883b7d7e spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x886537c7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x88900992 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x88971679 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88e1a688 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x88f64381 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89344170 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x8935c4b4 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x89387c64 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x899cf95a gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x899f9239 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89d98261 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x89f73f19 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a0ed63c vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a86a124 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8aac8306 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad980b3 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0ceaff net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x8b2a7b23 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x8b39cf9d unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8b573ad5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8b631ba0 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x8b6386d9 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b68ce9f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b913e5a crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b925dd8 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x8b9cdb9f rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x8b9f02c1 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x8bd7798c get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c309bf3 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x8c38074a unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8c441936 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8c599e55 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8c668199 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8cc98ad4 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x8ccd81bb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x8cd4348b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cde4420 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x8ce0964f ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x8ce15f81 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ce4f5a8 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x8d00b53a pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d2342e7 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8d7621fb dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x8d8c536e crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8db6418d sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8df5daa0 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x8e3f46be ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8e4c00f6 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x8e51939b class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e7869d3 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x8e8deaba ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ebd8d50 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8edfc605 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x8ef727ba seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8f432358 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7213b2 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8f9dd172 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x8fae9830 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8fbc647c spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x8fe4fbe1 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x9003aa50 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x902089a9 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x90554bf6 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9083dc1d ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x908f8699 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ab4747 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x90c3926f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x910beb5b xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x914074bf usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x915816dd ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x91807aa4 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91990870 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e08a7e xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x924423ae rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x92560281 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x92ac592a pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x92caf49e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x93260715 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x934417f1 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x934da3c4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x935eb71d blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x935feda0 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x9386be29 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x938af17e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x938b24c5 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x93a742a3 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x93abb1c6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x93c71124 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x93cb828b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93e9bc22 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x93ed472a driver_register +EXPORT_SYMBOL_GPL vmlinux 0x93fd8e24 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x941d701e udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9420d237 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x944f6b8b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x94833264 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x949aadad pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x949b5503 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x949cb92c pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x952202e3 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9559a228 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x956c7c5f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x957b8058 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x957d6703 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x9581354f inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cbefb1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x95cfcb3b sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x96008ae8 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x961e0a8d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x963c5eeb blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x9642e329 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x965ba493 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a9a3e4 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x96b6bd21 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f57427 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x9703573d fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9761a29c cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x976c62ec pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x97922784 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x97ba3e92 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x97d74383 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x982e7436 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983a9b5c ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98677020 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x9867f0d7 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x98822840 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x988c1e6f fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x989170c0 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98ff870c crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x99152ca9 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9933bc68 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99b8cb6e __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x99d7f072 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a3e8ef1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a4d1034 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9a61809f fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x9a655896 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9a5989 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ad70086 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aefe71b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x9b770527 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x9b97b746 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb063a3 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x9bb9c74f sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9bc6cab6 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be8fd84 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9bf07fbc regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x9c1e296b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c388791 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9c48717e sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x9c79e7f3 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9c9d453f rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9caa70a5 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d1f52b4 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9d209a75 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d425075 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x9d4e47cc pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9dd0b747 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x9dfb2ef1 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9e05ae3f blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x9e3779b3 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9e54cdfb pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9e653b67 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x9ebc8b82 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x9ed3143c leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9eea7d1e ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9faa900c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fed671a pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x9ff1f79b power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xa0143abc sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa0242165 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa0283eba pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa0337798 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xa045888f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xa0542559 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xa05d092a ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa0773e60 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa08254f4 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xa0933cab posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0d123ed fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa0f87a79 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa103ed02 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xa10ce7b8 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa11b56f2 task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0xa11e1183 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15b0443 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xa1a6ebb8 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xa1aa5c5a iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa1ba3248 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa221a4c2 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa23c8c3a spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa23ccaed transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa24c6dc8 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa2e67f08 acpi_bus_generate_proc_event4 +EXPORT_SYMBOL_GPL vmlinux 0xa2f68c60 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0xa34d05c4 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa3527f5f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3725984 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa39c9a36 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3cf92b3 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa482bb65 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa493764b handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4b69537 mmput +EXPORT_SYMBOL_GPL vmlinux 0xa4ca0d4e unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4e278ba crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xa51058f9 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa56a33c3 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa56e8e81 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa57b2f4d get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xa59190e8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa591bef0 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa594da29 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xa5a33c62 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa5b8a1de cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61382b7 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xa6175dba driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64f814e tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ba1b41 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ed6f8c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa70bfad6 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa722a819 cpu_has_amd_erratum +EXPORT_SYMBOL_GPL vmlinux 0xa7275b4b wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa735c1f8 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa73c8214 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7411356 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa764c3cc tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa7daa09a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7f9aa73 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa818e09c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa82861fd sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa887e8e7 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xa88f0868 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa8965c3d ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa8b82a53 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa8ed952c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa93fcc6c regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa95d6a8b rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa982bf7e ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9c4c2b1 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9d260c9 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa135fc2 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xaa26c88a klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa2d0071 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xaa3f13f7 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa545b17 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xaa660039 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xaa6f9927 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa8c8ea9 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xaaa8e372 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaadc0906 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab41b803 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xab67d47f input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7aaa0d led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xab7d0812 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xac6a1053 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xac71e7c9 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xac9c3149 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xac9cc6b5 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacac79bc sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf86a21 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xad11fc19 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xad5990fe sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xad6a2060 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xad95c822 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xad975ac9 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xada739a7 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xadae948b crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xadb49a4a pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc90c6d inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfdfe9b crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae3af27a tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xae525d62 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae928185 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaea70c07 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xaec3482a crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xaec9b70d proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf123aa8 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xafc09a0c add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xafcaced2 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xafda6d79 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xafef64f0 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xb028b741 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb04522a4 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xb07522da tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0f2251e skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb163a440 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb173f09d securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b7aaf2 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xb1bd9dab dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1f48e41 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb1f7e1ca rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb254854e usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xb2650213 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb27caab8 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2831153 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb2ba2475 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb316baa9 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb36290a8 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb36d4fcf raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b68ae9 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0xb3fac92d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb4106156 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb41128ff __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb43b1dd5 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xb4412a9f usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xb446add0 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb4d0d6a5 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb4dfe10e tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56fd191 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb581b570 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58fe682 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c81682 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f31556 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb5fe233b sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xb621db65 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb63f86a0 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb6667c09 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb68eb828 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b1492d platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb6bd9902 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xb6bedf5e debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xb6dc8c85 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6f38598 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb7025069 intel_idle_cpu_init +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb72547af hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb7366675 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb796bf6d ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb7bc9343 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e2eb91 mce_cpu_specific_poll +EXPORT_SYMBOL_GPL vmlinux 0xb7ebc0d2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb85553a5 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xb86647a1 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb8a0a17f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xb8c9805c spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xb8db2982 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb90101d5 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9048062 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb91b21ff usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xb94db510 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb99cc30c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b52e76 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c82a7d usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xb9c94060 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9eec7d5 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xba08dc30 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xba12b8c4 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xba22a05d pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xba3c6ccb devres_release +EXPORT_SYMBOL_GPL vmlinux 0xba4c85cb default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xba4df004 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xba546d32 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xbaa9d1c3 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xbab0cedc cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xbab44ab6 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xbab6aa23 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbafb33bc tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb32a5e0 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb4262d7 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xbb65edc2 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xbbb38239 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbcfc40f ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7d471c page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xbc94a812 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xbc99cf1e usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf8c195 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xbd2957f4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xbd2a78f6 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5bdbc6 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdb47b1d class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbe085bec platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2876c9 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbe99ca2b ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbed20d9a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbf31f8ce ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbfa19349 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd0d132 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc048cf68 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc04a5611 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc051b94e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xc05998b5 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0b0e6ec btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18c5919 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xc18ed5fa pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xc1c198ee get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xc1d119c6 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xc1d8c58b da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc1e17166 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xc1fb1f50 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc241721d rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xc25e74f7 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26c2ec7 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc2766572 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2830c7f blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc2975718 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xc2c6a0dc i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc2f492f4 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc318712b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xc33e7dfd inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38cd6e5 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3aefac3 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc3af2020 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc4034caa enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc44597c0 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc466df89 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a5946c usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc4ce6189 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc52bbffc ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc58d63b7 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc5b3a256 unregister_efivars +EXPORT_SYMBOL_GPL vmlinux 0xc5b57135 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xc5c264a5 amd_erratum_400 +EXPORT_SYMBOL_GPL vmlinux 0xc5cdb8ae __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xc5ef84ab ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc61bf998 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xc62da024 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66a46e5 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc66e33c8 dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xc682a79a debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xc68d77c0 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xc6c93bf1 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xc6d7ad42 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc70d965e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xc726ce1b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc7277dbd regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc741dbab blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xc75a3a43 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7767bef pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c5a635 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cb1267 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xc821805e __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xc84233a8 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc850c7c8 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc8516208 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xc85ad4a5 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc8739e4b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8849528 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc899c0f2 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b1f69e sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xc8d04ce7 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc8fd129f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91bfaea console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc92760a4 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc93fe3ac ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc992c63b gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xc9a048c4 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc9b95aa9 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9c45421 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fe6766 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xca0acc40 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xca52e37f fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcab58895 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad0f33c lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0xcae2f1af crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xcb122738 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb4535ee queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xcb46cad8 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xcb75fc36 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xcb89ef87 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xcb8eec82 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xcba8c601 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xcbe23449 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0b0765 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcc18d05c cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2e8c93 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc3da32d aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc7ea52e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xcc8d1b2f sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xcc8f490c __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0xcc9bdf7b device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xccb58d6f crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccffa305 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd37e1d4 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xcd4ef644 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xcd6cd47a inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xcd83987a crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcd9b331e ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xcdc9d239 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce53f955 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xce561630 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xcead8b9a pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xced0cf31 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xcf066890 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xcf0dd969 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xcf0f4181 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xcf544174 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xcf616d8d dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xcf9d4f1e ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfde5862 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xcfe51bc8 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xcff3f457 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd00b7d86 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd02e8d1a datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd069dc69 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xd071586d xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xd0a2988b input_class +EXPORT_SYMBOL_GPL vmlinux 0xd0a7e018 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xd0ae8c75 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xd0b3fb69 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0d253ba dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xd0ee2e63 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd1280f86 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd136c564 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1592068 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1a15054 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xd1a452f6 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1d01cdc exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd1d133aa rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1dac87c register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd1f792a9 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20c2c6d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd288036d cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xd288539a led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd307517a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd3149692 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd36706d3 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3d52878 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd3da82b9 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xd3e82843 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd3f6e4af crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c92e3b udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd4cda907 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4dd6643 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4e418e3 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xd4fd304e da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xd517ea27 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd53bc067 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd566829a sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xd5673883 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd60cebd9 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd624ccde __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xd6283b04 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xd62cbb83 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f9dd1 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6a8427a regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f7a8fc transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71bbdbf tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd75045e1 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd750e725 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7abbb9f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd7d1c0fc shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e55e55 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd833d8b0 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd875a985 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd896085d crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd8c3be51 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xd8c4474c pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd8cd461e pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xd8d09257 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xd8e2da31 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8e6e3cb pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xd8f400c3 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xd8f58b90 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xd91262fe usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91b5e95 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd91f3341 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9552321 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xd97fe007 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd981deca crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd9b5fc05 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd9d259e4 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xd9d70264 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fe7d2f device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xda12db56 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda407e94 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4f257a pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xda5c435d dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdaa8f33c shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xdab50ae7 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0xdaba8590 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xdacb23a0 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xdad31990 find_module +EXPORT_SYMBOL_GPL vmlinux 0xdad52b6a tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf8c09a crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb470551 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9a707f regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdbc10658 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbc1c9a8 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdbc9c480 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1f8f2e register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcbf7b0b ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdce57037 apei_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xdce851cd sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xdcf03c48 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xdcfc0ede scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd6618ba btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xdda6d89d sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xddd3a603 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde178774 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xde3ce682 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde47088e wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde4e19ba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde7a017a iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xde9e5cbe sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xdeb87602 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xdee54861 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca62a pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1119c6 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xdf2de7b4 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xdf72a1ec xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdf77beaf scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xdf912a65 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xdf923981 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xdfd596f5 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xdff3bbf2 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0130dce usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe01413e4 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe0283d2e ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05848e9 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe06db289 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0aa9a7b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0ee4d6e restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe116b7b3 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe1611c90 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe1a1329c __css_put +EXPORT_SYMBOL_GPL vmlinux 0xe1b897a3 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xe1bf57ea spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xe1c3dbc1 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2d667c0 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33fa584 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xe35bae57 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3a0d1d3 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3dd228f spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xe3e571c4 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xe3f102d9 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe40f015a power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4428977 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xe45461fb wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4692d5b regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe46d9186 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe50ba51c sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xe51ab642 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xe58307a0 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5884be4 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5943897 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xe59bc531 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xe5a3e5b3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe63cd938 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xe642c842 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6602e9f perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe6756379 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe69b2578 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe70c5c97 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0xe71d0ac7 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7422825 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe78322d9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe7a9e668 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8136476 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84c12a6 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85eb0b3 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe889ba92 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8bfc9d2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xe8ececed sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xe9011563 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe903b3dd pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xe9237db6 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94105ee regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe98b1d48 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d505c2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe9e74624 tpm_bios_log_teardown +EXPORT_SYMBOL_GPL vmlinux 0xe9fe1420 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea128be2 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xea1a5f1f power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea69e30e pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xea71f815 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xea766ba8 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xead4784c register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xead68ea9 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xeadf816e klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeb0c28b5 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb3bc702 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xeb413650 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xeb460fea init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xeb8df431 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebcdc7f9 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xebd47db1 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xebddee77 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xebe6a7d6 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec333e9c ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xec35ed81 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xec5c672e devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xec8b7897 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xeca0aa35 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xecb13c8a sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xecbfda63 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xecc3c7d7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xed02b6f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xed1a9dab sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xed3898bd fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xed39a4b6 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xed43dbcd tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xed941917 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xedafbf4d attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee555a67 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xee8aa207 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xeeabc394 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xeec7ddbb xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeecefdd0 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xef1172c0 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef314847 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xef572c06 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef740b82 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef885748 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefb3da39 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xefbd5148 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xefccbfb2 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xefdbd121 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xeff0051d hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf008507c module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xf0186aa4 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf023c74c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf07d7ff7 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xf08973da PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xf097793b virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf0e0ed79 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xf0eae6d2 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xf0ef0e59 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xf0f8bff1 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xf105b27d usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xf1215e9f simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf13253ca watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c06a68 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xf1c6ff98 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf1d87fb1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1e40773 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf265f40b xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xf2783ac7 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf2787d83 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf29c1ac8 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xf2c6103d subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf2f9cdf2 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2ff4199 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf37db355 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xf3801614 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xf3861e59 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3a34836 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3bd4258 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf3d93b64 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3eb91d2 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf4104315 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xf424ea3a platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf4413442 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf4434f4b spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49c2fc9 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf4a0462d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4c6c53f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf4e526c0 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf4fa76b7 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5382bf0 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5559d6d rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf559e4de bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf570d314 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5f0b242 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xf6323a50 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf64363e4 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xf6748423 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf67d6fb5 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf67f815e tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xf682f72e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e5a52b xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eaace9 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf714002d tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7354799 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf735c56f hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xf73afcf6 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xf73eb848 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xf759f097 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7655457 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xf769d5f9 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf7742a66 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xf775cbe8 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf7a14f56 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf7a63208 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xf7ec8d4f swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf7f71f1c pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf87200da md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8a33fe0 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf8d349b6 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fda6f6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9153ae8 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf95cd1c6 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf9924426 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xf995496d kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xf99fc135 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bc5205 gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0xf9c37ce2 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9fc56ba cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1ddf52 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa4a647e klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfa6796f9 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xfa8d7c9b user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa7a15a pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb17dec1 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb2c3718 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xfb312286 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3f4d0c cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb97ec74 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xfbc26e00 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc35e8c3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3bb910 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xfc565008 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xfc5ea807 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfccc625c shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfcd44de4 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce57896 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xfcf17d32 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xfd0d4d42 put_device +EXPORT_SYMBOL_GPL vmlinux 0xfd387ecf sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd571d09 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe92d248 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea8d931 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee73e17 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff202b41 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xff27562e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xff539a88 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffde3798 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xffe6c306 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xffef9f73 __pci_complete_power_transition --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armel/omap +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armel/omap @@ -0,0 +1,10357 @@ +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x13e5ff7c omap_mbox_msg_send +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x16eee29b omap_mbox_register +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x849d64bb omap_mbox_get +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xc3453d67 omap_mbox_put +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xdbc75fe3 omap_mbox_unregister +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0xa0439f1c bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x714ea5c9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb92b9cd5 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc5c83467 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2cdf707 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0235af6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2e74f758 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x68dd020b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8bf3275d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0xaa3c3cf8 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb72c38c5 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xc3d0c9a2 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/pl330 0xbdd17dd1 pl330_filter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0060546c drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006c1ef8 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0285e5a8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a77f75 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02fc4823 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x047db860 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a3af60 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8306d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0587de38 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x075386e7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e15c30 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd0e418 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d3cdf26 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8dc681 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b09bfa drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11073671 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1128ae3e drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1225741b drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1387c10c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a3b414 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187e37dc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18ec22bf drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af2ef85 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c73af75 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d696b88 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b76f2e drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x211eab87 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2143f155 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cc953e drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24795a66 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b59a9a drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d6581e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cad8c36 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cfce9de drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d807df8 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0a366f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31389d0a drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c32fcb drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x331b069f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3345496d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37cd8b5a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38954afd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3901fdec drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393c6934 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c8ec8d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a6f9c71 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aac3130 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b69d5ed drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3be296ff drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cec9166 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423dcca1 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4323a70a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434a6b41 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48eb5969 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49158f33 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x491d291f drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4945a3ca drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497b8956 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab691c3 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aeef5a3 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4afa0c15 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4badb0a5 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f5de301 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5165455b drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e2b0ac drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566d5865 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58da9909 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a641110 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c126ce6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dbdc659 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e702501 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eb7510b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dce832 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d5ffca drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65dc65b3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680fa42c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c5d096 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x695562ba drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6978511a drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7fb5e3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e0771 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75ddd02d drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768fa481 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x771b5fe9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7832825c drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79de4b45 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4797cc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b650615 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ae84ef drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8215a1a5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840ffb0d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x851c1ded drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8579febd drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87530f3d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x878072a5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e9fe78 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89500a1a drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89586ed8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89b54102 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a35be05 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6a5ff5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6b6b6d drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc89459 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e28a15f drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908d6be2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92689148 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95232db1 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96b15f09 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0b35d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c09b7ff drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9fd0b2 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f70233a drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4edb20a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa506bb1e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa562ecf0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a09d50 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d88b40 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa604b764 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7179c31 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa914f465 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaacde6c5 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaacf194d drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc68ace drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacbe2969 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xada8db41 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4b77dc drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb024bcb2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb110a287 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24d01f5 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51d4aac drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89ebf9c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd2dad35 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd6f1fd5 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf696f2f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfbebd3e drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd36329 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1064c6f drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33a4be0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e4cb99 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4259c55 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc44030f6 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc463da93 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc732ad3c drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8231556 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91a1d16 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaeea29d drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb88fff2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbda0d67 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1ef400 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfce3985 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd106ef19 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2721d6d drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5233a6b drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88db039 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a61608 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc63c32b drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdf36bb drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde64898a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfeb1409 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0406bd4 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe181f7ab drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4d8d4ac drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe532ac34 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe626479a drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8298af8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e66240 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94bf7f2 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec2c6818 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee566ce4 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee8a71c4 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c803c3 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1d59f36 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b6c638 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4babc53 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf83d269b drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9166a4c drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe77711 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc7f9aee drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7ec5ef drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffccb806 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x083d750c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b4fad96 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13f43665 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e33be4 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17dd8d26 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ab47e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cf76339 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a7ef66a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41e0a579 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47d04aec drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x489a33b7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48d58304 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x492544f1 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63c19003 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b420d49 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b9aa65e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e87ecbd drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8441eee0 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8447f2d1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8505d905 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8594ecae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9123181f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ed1ebda drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac68c885 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfd1e4ac drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc44008b4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc747498a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6e6feb5 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4e25f6 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37e153f drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf527670e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb66ef17 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x3d41d164 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7c59dec6 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x97235d18 drm_get_usb_dev +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x1262ebcd sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x01fb8bce i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x5301cc63 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe49cbcbb i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3436c5ee i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa3078692 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x177e9981 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2caf16a4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3d9cf42f iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x46ab79b7 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4cc75a5e iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5cf690f5 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x5fe927e2 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x6a08a14c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x6b069003 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6b0729dc iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x75b533e4 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x82bca169 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8871b32e iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x90ea0377 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x91bc0a3b iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa57ab762 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6bf5879 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xaf0a8f8b iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb74b6aba iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbbab385b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xc7fa0bdc iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xebcbafdf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xf4491e2a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf4e947ee iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa3d6266c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf31bfc97 iio_kfifo_allocate +EXPORT_SYMBOL drivers/input/gameport/gameport 0x02347604 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x43265263 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5602be9b gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x62fcf043 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x978266e8 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9907d492 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed8baf43 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf28928aa gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf9c43465 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0cb6caf5 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2309b44e input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb7e1a448 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd4ffa98a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc4df77ab matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x17c7c2b9 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7866d5f4 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7ee705c2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef7a5879 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd5c9b50d cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x13867411 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7cc3fddb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8802123a sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa8620f71 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb3b619c3 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbf0df5e8 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x6c0207e8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x923eb0ba ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x02174795 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0bfd3b11 capi_ctr_resume_output +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 0x38ac7fbe capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3f9da627 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a15f6d2 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4e6e8fd5 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x695d7d55 attach_capi_ctr +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 0x878c267c capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x89a1162d capi_ctr_down +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 0xd3f7ef77 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/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 0x86d7736f hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x13922f99 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x75f54868 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa7577704 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 0x00314207 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0a57753a queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0cfc1b02 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0e0688cf recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17bb1d4e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30656fdc recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32f0cee5 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x38143b11 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45860d5a dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ebf67e4 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4f5d05aa mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x57785b2c bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x67b07d5a get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7414ad46 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x925da97b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa26c21c9 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa463898a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf8e365d mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb3894869 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce06a7d2 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda385ed3 mISDN_freedchannel +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 0xe9b87dae mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd6a9abc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x393f59af dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7efcc2ee dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc6a5be42 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xfa42a911 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x22cdbfba dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2490901e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e87c42b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6624ffbc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x67e2b910 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc3a3d512 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x13319403 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x33bc4fae fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa0f304ba max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xdcbfa503 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x79291b35 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x98c7c064 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x2e9a5910 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x6462e5e4 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x6848fd7e tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x6923136e tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x6f563389 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x60d54087 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8c9887fd xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2307a301 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x18520a77 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3b30f02e flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6cbcb394 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x88bca278 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9fe592fa flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xab39f37a flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xae80e5a5 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbef3058f flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd0fea646 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd850e399 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe23ef6d4 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe5e5fb09 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe7739be4 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c98f0ae dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1f363415 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x258aaf68 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f2786d0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x335fa807 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x35c754a3 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f0c426f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x518c4119 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x542877ea dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6131d762 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6225816a dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x66e6d383 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x687066ad dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6c7577a0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x746b02ad dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7a854509 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x83a2ef94 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x883c17c6 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x90b3c91f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x961239a7 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9ae3f6da dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa6a6cf89 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xae55024a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3297434 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xba616e61 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbfe37d06 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc94067e8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe2580c5c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9164bec dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xec9a09d4 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xed9e5ee7 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf487376d dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf5f9b07a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfb25f454 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfd1885bd dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x12d0e537 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x606ddfbf dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8393aeb4 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8fe43b31 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x98b1e696 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xeec875af dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xf07d8192 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xea2d92bc af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x102d2583 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x10a83aae dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1727c601 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1d9ce9db dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1fe3f158 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x2db34552 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x39048287 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x65d8e0b6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb7c5bb55 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xce6bdec0 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd07d2110 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0xe19de7c7 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf6f61250 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x43d2e5f0 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xccbcf856 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x11b0711f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x29711556 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x2a247cdd au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x59fed5a0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x8b7fe401 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xae3935fc au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xaf2dcbbf au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf858bf3e au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x45849b05 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6e7a42dc bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x34c4a817 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x8fa2912d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x7b6bc589 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x72f1e393 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xd984475c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x36eb9209 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x4eb17599 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x69c16635 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xf1b6d7e8 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39732d0b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x859b9d66 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8ce58e6c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9543d443 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe181d0ed dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x21add01c dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2513bde1 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x30c01d60 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4cc5ff49 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x54bc864a dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7798ae01 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7e4ecfee dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9ed95484 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafb6a46d dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbbc5ece1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc07eb9de dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcc82be17 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd2491654 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xea31e655 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xf9331e85 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xaa6ec7ff dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x268a8973 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x543f4b82 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x5a30af99 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9e6066f7 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xb27f19fd dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xba33af2d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x449aa6eb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x920f2531 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x93fc9b7a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xbeefa300 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x02aa8e95 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x084e4453 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37f8056b dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x40753891 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5274bb05 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x56cc0972 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cbd6a5e dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x62c876d7 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8aed8938 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9fa5c44f dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc09c4a86 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6b65100 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd9c4dcfd dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe6ed6840 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfbc4b404 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1bd13fcc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x21945e37 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x25f397d8 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c814b88 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3f951716 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x477d97e9 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e557ece dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x581f00da dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa16f3ca9 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa1b46b05 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae15401b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb79d60e5 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbcabd0ea dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbd8a3498 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcd0e32c0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd82974d9 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdc815e57 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe6b6bdd1 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe91fff18 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x378ca184 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x37e88b87 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x3eef19f3 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x4b8f6169 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x53c06d19 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x54779f9e dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x590a5884 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x637e0d61 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x6492fb4f dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa109ed1e dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa663e763 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xc87ce035 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xd6f9b54a dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xfedaa2e0 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1d487f7f dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x253d3307 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5ec442a5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x9717ce4f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xb9b7f1c8 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x6daee061 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xe4e0984b drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0xf11a32f6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x636905ba ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x86a9d32e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x4c3b91d0 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x396418f9 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb361220f isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x45dc56cd isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x5d94e2f5 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xb2875c0e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe9ff3f21 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x27778208 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xf0bb9071 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x0f46457e lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x6c127e65 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x8686fdcb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x141e3b0b lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x9ce94bde lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x15a351cb lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xdc50a1f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe0748db4 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x7006484e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x12e74b84 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x7b121383 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf621f83f mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xb31c2b72 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x64cef4da nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x7bffbc1d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xf889714f or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x0ee05508 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x32b13dac rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xcf994fda rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6f717925 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x8e7a842c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9e384e08 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xfe01aad2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x1cb2eafd s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x68599ecd s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xad579095 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x3a993e92 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x9d399727 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x20afca7e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xae5c1dbc stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xd26b5e18 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0xcda4a363 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x783555a0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xa3efcc0a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x09aead6c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x93643543 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x548df548 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xd88b5451 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xecd7255c stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xe88b348e stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x88528572 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x221a2a72 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xc17ab9b5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x8ed3a496 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x9259eeaa tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xf260a725 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x67369410 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xa34a4fbd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x41a3e8bc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xbb3c1553 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xd5f987e7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x35c7bbf2 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe6900c79 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xedf90595 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xee189c4c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x4db9c612 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfa0e89c1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0317ead0 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xe28e8ad2 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x06533d19 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ab8aea4 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x30bffc04 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6fed1805 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x92d4ce0c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb39dacb0 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8c5ce77 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf00f4027 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x33f11c3c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaf95f719 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x4c4c7ada cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xe17a6ebb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4e676f6a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7586b17a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd187dfb1 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd8a3779a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0x58c8cd06 vpfe_register_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0xc983fcd8 vpfe_unregister_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x088ccec9 vpss_select_ccdc_source +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x319709a6 vpss_clear_wbl_overflow +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x54146824 dm365_vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x6e5b5413 vpss_enable_clock +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x749bf2c9 dm365_vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x09d9afc1 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x2e6850c9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x14d6cceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e35c5af gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x49485ded gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5f9a575f gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x65cfbddf gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84c0b639 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x90207409 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x9400bba2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3d49d0e4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x423da71f soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x59c21783 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x66cbd6d2 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9667c6d2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa11000f4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x6196852c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x91e3a248 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xa7eccb7e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x475a8d7c tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0x8713fbb1 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x8deca363 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xad781961 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x3f72b910 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x6919be09 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xccecb1c7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x1e102f04 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39364062 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x41354716 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x57fae47f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6b87d289 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x82e8269f videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xce7e45f8 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0d99a55b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x13355c3d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x16310292 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x1e335a16 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x24fa8064 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x28e32207 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x2def4f2f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x33cd0d02 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x358bfe3a video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4904e326 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4af15a06 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x55213c57 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5b835d3a v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x641c4671 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x64ce2bc0 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x65f0f5e2 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x6875771c video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x6f5aa18f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x7155f80c v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x77637058 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x7771ebfb v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x835b6025 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x85b37974 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x91a9ad54 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x96c3a076 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xa2342123 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb85f8e3b v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xb99a3054 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc321d7bf v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce04ea62 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xd353b2b0 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xd6eaab33 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xd785a33c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xdd0462e6 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe0e4d2c7 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe1155fda v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe2f064aa v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe61dedb1 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe72ab1af v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xe7ec83b8 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xec4bc368 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf1e00e94 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf321cc5e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb959f0c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/memstick/core/memstick 0x05b9d4ca memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0cf90081 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2090096d memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x22476e5e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51f6b925 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x63873823 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x656cd812 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x779faba5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9658abed memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5a65469 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xddfa39c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf844510d memstick_resume_host +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8bfd1dae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc46a54bc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c89d32a mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x13862de2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cffda0e mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x41c27171 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f7d36c8 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7cae2548 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ac37a25 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xafac418e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4b2e23a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0e41389 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe2795a05 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe36e72c4 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfab5deef mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1d247422 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb0770a5e tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc4dbd370 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x441bbefa ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa9970e3b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x0e9755b9 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5a8b82f9 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x5d5c2951 pwm_clk_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x6a5e1f70 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x73330c97 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0xeb7f2c6f __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/c2port/core 0x1007174f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0b2a070 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x17dae94e dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x534b807f dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x8fe02703 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xde39e2a9 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x2e110b06 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7fcd79b5 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8155e046 tmio_mmc_host_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa8172124 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbb0a6e4c tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdc583b00 tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x38608e3f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x528db246 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd794b137 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x7e3a7ed9 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x06e7bd27 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8d282c57 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe5e3dcab flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfb96e658 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfc6236e6 onenand_addr +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4eb6e761 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5afa9298 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6e28d30a hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb18fda82 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdd37de79 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0529ba38 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x05861cea sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x18a421dd sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x18f470d1 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3af33830 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x498cae01 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5dc8b8af sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8f03c52c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbc670881 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc3b417c7 sirdev_put_instance +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x38f56877 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb05e41d2 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x112dcc78 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3af2651e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x91820f4c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wan/hdlc 0x06710861 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x31159680 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3b031b01 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3fb292fa hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x552a4516 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7c6df19a hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7cd4097a alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f5a86c7 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x85e4bf02 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8f0883bc unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x91ae1aa6 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x21a225ff ath_hw_setbssidmask +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 0x5460872d ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5dbd2385 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6c323518 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7e5f34ac ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x97566863 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9a3ce536 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb2840682 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe8cbd1c5 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe93e1f7b ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x403027bc ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x45829f90 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x46b584e6 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4cd0930f ath6kl_core_tx_complete +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 0xa5e2b972 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb39c782f ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9f2e352 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbb30f1fb ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcab3acff ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xed08fd01 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f8722dc ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2e48afa8 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57a2a1ac ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb334d329 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0157daeb ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04f492d8 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05bcf330 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x073e1c6c ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a14cd43 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bb2de0e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d561007 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e3b292f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ecf175a ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f0419e1 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11b29220 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1473a119 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a72aa45 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d1bbb50 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e20ff74 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2311d8ef ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24d51238 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a7ab6d2 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a8423d6 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c8cfb1f ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cac1c58 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ce314a0 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e9f3b5c ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ee38248 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31e3673d ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x328c22f3 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36e01768 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40373a6a ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44b968d7 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44eaaf32 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x472d3a09 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47f84fe2 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b15b53f ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51056750 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57bd064a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x588495b4 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e41e292 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f6dee37 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62e18667 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66589869 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66874d0d ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6bf04ca8 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72716305 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72725ba2 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x727cdb0f ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7323d1fd ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73c2fd4c ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x763a33ec ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e9c289 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x784326ee ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8000b850 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x810fc069 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82286470 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85a6f7da ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c1fe503 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c4f0ac9 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9fac1367 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0e8937d ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4e31371 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5e5cf62 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7646828 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa90ff53c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab052c96 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadb4f381 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb22ad201 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3a818ca ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5a1e0bd ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8ded861 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8f3b337 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba02be2d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb004b5e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdad240f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe501427 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc03e8e2c ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1026ff9 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc13ee805 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4a5191b ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc60676e2 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb388fed ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbc7183f ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfcccdc5 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd325c9ac ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdec781e6 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe294980d ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe928f71d ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea505872 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea683469 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2e90f49 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf707cfa0 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7638905 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc494151 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd458edc ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xb5255e19 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xe02d696a brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x23175b53 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4152e660 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4c363a3f brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x573bedf2 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6ad56f3b brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6bc0779c brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6e398b68 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x74f49e74 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7e030344 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7fe387c9 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99e6e534 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xab069a5a brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x169aa37b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28942040 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30a1050f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x403c5312 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x483a3606 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x49ac3810 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x500127e4 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x615fa4a0 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7a01b944 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9150c749 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91851e04 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa23a25ed hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaf07a6fb hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0049024 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb01f49d1 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3da4188 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb81aa339 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xba0d257b hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5fa4e6c hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc9ce1913 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd21cab5d hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6685b1d hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd72d0b00 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe24c3126 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe2dca222 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03643192 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x196071db rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2181560a rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22e41933 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x328b6410 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b0c21d1 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3f10225f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4322f361 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4a180af4 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bb5636c rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4e629e3b rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50000ed9 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x588701a3 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a3ee852 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5dfe35b6 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a723583 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6d136e4b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x74772035 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7faf4332 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x808e82c9 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8100ad7a rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x823f05ff rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89df3ac4 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f7000a4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a1f5405 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b6156c0 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae0e7418 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb36eeac0 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb3a1bfd rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc38a5cf0 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd9e4ba7 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5436eae _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5e6f94d rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda497e66 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdeae1dbf rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe377b89d rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe3cdcb05 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe861daf4 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefa1c50e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf2baedff _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf56f15b8 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa5c0b56 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ba6580c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x222a2988 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x23908c14 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x25cc474b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3eddc1b5 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x44192770 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e918b45 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5f6b54bc rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60641073 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a690e3c rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a8e7e50 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7fc96715 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8994a28a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8a33773a rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x91127701 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x96636ef2 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e81e0eb rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd927b847 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf3e1094a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfe0843d0 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2a5e43cf wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf7db65f8 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x07025813 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x196a9d55 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2222aeeb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x27941c97 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3c586e06 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x47fd01b6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4cda7720 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6103e005 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6201f390 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x66fe4867 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x68566f0c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7796a171 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x7efc06d7 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x83e749c1 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x8d5122b9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x8fa9d741 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9825b188 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9f54266b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa3ebc751 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xa45527cb parport_release +EXPORT_SYMBOL drivers/parport/parport 0xaf7c2264 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3dede9a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb832abe9 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xc83093cd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc84b1df3 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xd890b52d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xeb261256 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xf030e747 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xf2c83d97 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfbf102f3 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pps/pps_core 0x19727db5 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2c74c673 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x610b0a1f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb67659e5 pps_register_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0ff31040 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41a5abf2 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4470f5ce fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x49a35b1e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x760ce2c1 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8259a3cc fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x84ed8434 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8e278b3c fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x98d0307f fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb57e7f0e fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe633d5df fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x037a9e5b fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c0a7a08 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1174e7a0 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148994fe fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1644bc38 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e616360 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2dbc801a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fd0f0f1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x312a70f9 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x344f569a fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d6427ad fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x475c9936 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f37b9ac fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x528df876 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x580d8096 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5b5eadc7 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fc885a fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6990983c fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d74be91 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71706d1e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d90005 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x746257d3 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x791a20ff fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eddf5bf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83365583 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x865af3c5 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87d4617c fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8aca745d fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dfd811f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aa87554 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ee755b1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa52ddaf2 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa60ab071 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6bff20c fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa86badaf fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac071a3a fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae744deb fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0aafb37 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb20c2d74 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba674f93 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc487d5b0 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc81407ae fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9ef4ee8 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcae25f84 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd464e772 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6ff9002 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe20d9580 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf167c86f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6b6b340 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfda5d2a3 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x04c30cc2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3b3e439e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xed222aad raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x06c7c950 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20a0af44 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2123eeb7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31d706eb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ba20b6c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99eb5817 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a983ade fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0e18ff7 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbbebf927 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd195b5f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xddd2b14e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe37a250b fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4d0319c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09b0b079 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11687b0f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118d274c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x14903952 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x168870c6 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2284443b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27012824 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4390f019 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8e7e5f sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6016cf9a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65d67ef8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70a24585 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86615c59 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x870a8e56 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f03c761 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cb57746 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa210e9b0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa2c86117 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaab3b39d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab91abfc scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0de1f6a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc29021df sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca23df82 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca386ae8 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb600f19 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6c6b86 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe92cc9b5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea75b4ce sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1fe83597 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2cb70380 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42001568 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7453b901 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb39e7bd3 spi_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x0409018c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x18af45c7 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2a7bdb50 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2cd84326 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x583ed935 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5e0b93fe ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5ef81631 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x72bc6f8b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8d8cc33c ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x9bced4e1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa92908f3 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xab3940a5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xae4a7a05 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf20c559 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc33eae7f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc70da9d2 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe4051e90 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe51c25de ssb_commit_settings +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x9234183f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xcab774f1 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe006ab35 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xed8a9888 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x64d71cc6 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xe8520719 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x5a79888e phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xc69b8f8f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x0068356a target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x01db3678 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02e29381 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x04ec7324 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x05594450 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x09f25d93 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ad67cf8 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b751e55 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x0bc85667 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x0dd92996 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x100d0b36 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bf66bf2 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x23490625 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2aa6e74d transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e5d413e sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x34d50234 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x3826f7c2 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a21fca7 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x4276cac7 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x45bc8e6e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c4eb778 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d24c608 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x50835c41 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x51404ee0 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x545593ff transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x5afbf384 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c39b9d2 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x60cc093f transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x61ef715c target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a921bb2 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6beebdb1 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6dec04e9 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cdae21b core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e723724 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x85724a4f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86877876 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x899caad7 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ac949b9 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b308bed fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8baeb295 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8da327ee target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ecd5a75 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x920fd75d core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x92fee9e5 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x968e3861 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ab917a2 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e7d3993 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2f25633 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3e4b360 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9669f98 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6a60004 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xb85b4b83 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb91a05d5 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc51e183c core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xc807d126 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xc95d0a40 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0c1865d __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2f3e851 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xefc0c065 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf017d873 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xfce5d52f core_tmr_alloc_req +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x672b702c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xa0bf53bf sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x13ebef6c usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x27feae44 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2877ffb3 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2c433fcf usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4b98fdd2 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x591e4e5d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x759877a5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7781dcf8 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x89226b3b usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c42f63e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9a22b765 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd67c499c usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdabd6fac usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdad83d26 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfdd9a6bb usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7a799718 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8d5b91bc usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07c7dd3d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf5d673a1 lcd_device_register +EXPORT_SYMBOL drivers/video/output 0xaba46453 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xb3722d93 video_output_register +EXPORT_SYMBOL drivers/video/syscopyarea 0x7097ec1f sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xce1817f2 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xb31f1fbd sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9f38d657 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa0d41cc6 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0e66e0a w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf453b7ca w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0be3eb64 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xcfb43bea w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfc1d6660 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1342fd70 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b0c45bd w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe57b8d6 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x25547c11 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3d647a42 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe562c6b2 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe388128 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x1074bf38 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x15b33ac4 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3be87079 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x3bf16352 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x6ba63918 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7475e5f5 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8370eef1 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9d9e348f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa4fd2c3b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xab64fc36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf0d1b8c3 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xfb52e8bf config_item_get +EXPORT_SYMBOL fs/fscache/fscache 0x0663e0fc __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0cd0d4b5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x21894c41 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x30447263 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x31731797 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x33e57046 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x33f4f96d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x394c16e9 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x3ea188b8 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x508a5d08 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x63d09275 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x72ce6d40 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8f8d757d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x918ce891 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x941e6b42 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x976cdb76 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa44cf5f4 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xc0b8c9ac fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcd7e35a3 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd8d5bfa7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe3b3f03a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe8462631 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf112e607 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4191ed6 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4768489 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5d31fdc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xfb5317b2 fscache_mark_pages_cached +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1c433e1b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x744c7ac0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x802e86a0 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe1b68d98 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf78a229b qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0ea7c60a lc_del +EXPORT_SYMBOL lib/lru_cache 0x236f6654 lc_create +EXPORT_SYMBOL lib/lru_cache 0x4308237d lc_get +EXPORT_SYMBOL lib/lru_cache 0x58f461a7 lc_set +EXPORT_SYMBOL lib/lru_cache 0x604890a6 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x617b0ecd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x78e92b13 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x831045dd lc_reset +EXPORT_SYMBOL lib/lru_cache 0x9a21924a lc_put +EXPORT_SYMBOL lib/lru_cache 0xc388d3ac lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xcea4d17e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xcf5f0864 lc_find +EXPORT_SYMBOL lib/lru_cache 0xdd7a727f lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xed91c002 lc_element_by_index +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0xa6fd700c register_8022_client +EXPORT_SYMBOL net/802/p8022 0xcecb13ff unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x03a535cf destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xe19e5d85 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x0ae4343e unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x2fd2f87c register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02c04dbd p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x04f60844 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x07013c09 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x10ecceee p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x214be670 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x22b90756 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2342974e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x2a27a057 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x2a941566 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x2ec54d62 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x380e14a2 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x38f25524 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x39187e40 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3c3c4b78 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x48b84c3e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x4ec52be7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x5151fed9 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x51b09a2f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5709eb50 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5bc5c3d8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x75b49540 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x7ab52012 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x80c084f7 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8f01d92c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96ad23b6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x993fcd76 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9bc81f64 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa99eba8a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb05010a5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xbf52c7a4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc065b2c0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xc43f7b40 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc98f5e5d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc9f26a32 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd4d05d10 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd742340e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdb478d17 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xdc7240d5 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe1089681 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe1b69bac p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe38c9ce6 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeb2a10ff p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x10cb22af atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x28333857 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x6dbb5b05 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x6dd46c58 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x085c5051 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x178eedd2 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x17ada42b vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x320084bd atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x76ba3415 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9d424c1d atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa17a69bb atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xa866f776 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb089ffbc atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xb582e458 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xd8ea2767 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xdf4c15f9 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xe60b1ac7 atm_charge +EXPORT_SYMBOL net/atm/atm 0xea240863 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5eab1ab vcc_sklist_lock +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x11a70bfc ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x373592d5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x44b20da9 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4794ccb5 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x61d3fa4c ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x6e328282 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa2aae9f5 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xa3549c78 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc5c216cd ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03c1d955 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b40298a bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ca6dc00 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d795758 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f17b12f bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15086624 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e33230b hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fcc2bce hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23fb9fad hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d4b3a2a hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x397500a7 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c253b6a hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x42beb2ff hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47ad6b7a hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4cbd7843 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5722b377 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x59fe587d hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x670c1a61 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x71048375 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7dce4836 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x856ff39e hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x870601a3 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e8fc49d bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9f035aa1 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa957e6b6 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa896b3a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae5cf7d5 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb318d0e4 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb52a017e hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5d227cb bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc77e39c bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbee9b3de hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccde34e6 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd02c2b52 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd67e7eb0 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe311eb52 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xea6c4459 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf36170b6 bt_sock_ioctl +EXPORT_SYMBOL net/bridge/bridge 0x6aa322ce br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x091ee799 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x801d992a ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb35ae6d1 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x87105eb8 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9c5ef94f get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xdadecf9b caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xe2d0a9b1 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xe30d9db9 caif_connect_client +EXPORT_SYMBOL net/can/can 0x1a0bd841 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x31aea382 can_send +EXPORT_SYMBOL net/can/can 0x4f188ba1 can_ioctl +EXPORT_SYMBOL net/can/can 0x57fc6fe8 can_rx_register +EXPORT_SYMBOL net/can/can 0x5b96738c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x7f163a6f can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0406dafd ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x06842c3e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x13613ed4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x16ef3176 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1bcd96fe ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1c1c8698 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x1d94ecc5 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x302d9f86 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x32ac2e04 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42728f99 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53f8cf23 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58845a64 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5f5e144b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x668ee754 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6c1a4594 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x6c67f3cd ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x790605a6 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x7f3e3711 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x8866188a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8e6f752d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x912852e4 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x92dd9d35 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x947ddbad ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x95eb60eb ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x96036809 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x98aa5e18 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x993bbc8a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x9beef883 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2e65b1d ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb34a9cc8 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xb445db55 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb879299c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xbcf891cf ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xbd455b2c ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc08da5ac ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4bba83b ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1482a0e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd2b8544f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd506e788 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xd66339d8 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xde2c47c5 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe40e07c1 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xeddf6e2c ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xf8e93677 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xf95e802e ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfdbd62fc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xff5809c7 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xff7923a0 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x56b7d351 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x15e16bed wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x371ef8ec wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x392b4f4e ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x58c73eae ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x629aeaae wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7a6e49e9 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9188a349 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xada5b069 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb9f5cd39 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc1bf3bc4 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xca012202 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec505c87 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf0a6314d ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x73a0a352 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x83d94ae3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf6313dc4 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1e9d87c6 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x73a95322 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf0d595d6 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x46f9b650 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x82a088d7 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x92c26fe9 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xa147a6e0 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xd9400276 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xee1a35c9 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xfd0a3c6f nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/tunnel4 0x437020ec xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xc1161335 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x125de168 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x56e1698f ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaca7f843 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe4c9242f ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x55a9b0af xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdaaa45f0 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6b15d35c xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9e3a1dc6 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x16da930b ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x36843801 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x875ad8c5 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbccad8d7 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xda874df9 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xeba9f541 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf7011774 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfc1bdd84 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x004180da 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 0x0e87e0a6 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x18075437 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x1e9fd9c3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x22caf86e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x29f287cf alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x2a31f22f irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x2c155d93 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x2d3765bc hashbin_find +EXPORT_SYMBOL net/irda/irda 0x3302bb27 irlap_open +EXPORT_SYMBOL net/irda/irda 0x3569dc4d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3a8446d7 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x42763b94 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x4479ef51 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x44af1680 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x538d5d22 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x572583cf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x5f55c3a2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6c6f5f97 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x74c6eb16 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7aa1ddbc irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7c596178 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x7de04a81 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x80da7829 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x965c47ed proc_irda +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xb5c93e6b irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb710786e hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xb7cec36f irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb8f916b9 iriap_getvaluebyclass_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 0xbf285a4c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xc172f18f irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xc2fd5a43 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xc3a512dd hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe4daa18a irlap_close +EXPORT_SYMBOL net/irda/irda 0xe74b1164 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xeb461f9f async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xedf805a9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0xef16660b hashbin_new +EXPORT_SYMBOL net/irda/irda 0xefbea52c irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf57a2eda irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xf92af94c irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xfb7d4c6e iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x4ff8480b l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x4458da8b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x4af59a17 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x95b60994 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xa12dcda4 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xb2f93cf9 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xba12a611 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xebe0fe4f lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xefd5ad38 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x05a21ee3 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x44505506 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x45edb004 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5c00834b llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x9656f8a0 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xa360279b llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xeb9a6916 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xedd3883a llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6408c ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x06986f7d rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x0745a26a ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0879f1e3 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x0d867bbc ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x17d25fca __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x246a5335 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x25972470 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x3015f844 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x31c31bba ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3f6907ed ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x45ab57ed ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x48107bce ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5ccbd9a7 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6327e354 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x632f8ab2 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6d4ba660 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x727cf3ca ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x76b831ab ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7753c25a ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7bafd753 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7cdc0c47 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7fa360f9 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x80fb61ab ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x870c7210 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x87cdbffa ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8b95c031 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x8cbf59c2 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x90f564d3 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x9ad9b67b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9d396af8 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa6d8ad06 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xae401bcd ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb6a19e99 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc05e3899 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc95fdc95 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xcab9f338 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xcb9375f5 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcdff5a18 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xcea280e6 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd3220192 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdbff3279 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdc338558 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe5029cd2 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xf35e844f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf565dfb9 ieee80211_queue_work +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0f9db9d8 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x10a700d4 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3237f682 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3675d105 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5409953c ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7b3b521f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x82126b99 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x92b8bdfb unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7e63305 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc602408b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc709637 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd36b104c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdeb65135 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe547c71d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x64c31107 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x73c02577 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xeb6c4282 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xd14b43a5 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x19ae0f72 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x2d4cb6e5 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3a5a0cee xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x90fc36f3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa45ffca0 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe0a24bf8 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xea60de52 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xebd900c8 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xed748eaf xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf253aab2 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x1b494291 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x1cf1da27 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1fdf210c nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x355a7870 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x60a046fc nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6ad7ada9 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x80eb07cd nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x90295f08 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x947bc063 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x94b02537 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa1effffa nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xb004eed1 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb3dc0c38 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb5bfa4d1 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbf586a47 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xc28e49a7 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xcc230ab2 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xd0b32f48 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xd45fb262 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf42c0ab2 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xffd75ec8 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4c90d36a nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6a43e63f nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa51f8779 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb34ff908 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd458b61b nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x4d36f8e6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x5a045ead nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x6df28ad9 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa7ff3f08 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xbe123f66 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc0924688 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xc35dc78b nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc477c5ae nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xca8bbdde nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xe42c2e38 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xfcf66147 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/phonet/phonet 0x2397a854 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x814c1f8a phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x9fcea495 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc219c267 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xc239f64b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xdd7d9c46 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xf181620a pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xf216fa83 phonet_stream_ops +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x172b7cad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2e85e4cf rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4fa30e10 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5ea083ef rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64ca921f rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64d79859 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x77449b50 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x85c0e697 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8784a559 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x87dafc62 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb8e4b6a3 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd0ea3717 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xde97b9b6 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe595862f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfd4df5b7 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/sctp/sctp 0x4f1cda33 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xcd744531 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xac1ae472 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xcadcd16a wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x051a5433 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a14ffef __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x0d7c4886 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x13d95b8e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x17a10fbe cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1b5d88cf cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x25a5b3e1 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x296ea120 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x30e20d93 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3447d433 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x35671b2c cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x36177958 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x378862b5 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x3bf523d0 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x43c6fad3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44b0470e ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x450c9d73 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x49e4e137 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4b2f9156 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x4c1423d1 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x4f2dc1db cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x515cd87b cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5c2a9fe2 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x5f741726 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x6007a036 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x61cbb0c3 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7aab1e2f cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7daf8500 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8124b083 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x832fcb06 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x83d06dfa cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x858f52d4 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x89c79f90 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8d111b49 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8de23fdf cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9159c1f8 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x987fae9b ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x9b22732c wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xa0c03a19 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa80ca6a6 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb2a2000d cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xb3ce56b3 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xbd059f96 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc07b006e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc9c72c83 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc9e28494 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xd5276cb9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd63bc0e8 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xdba488f5 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xdcee6e9c wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xe2c6f870 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xecdcd668 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xed804a49 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf46d8139 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xf63541fd cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xfd44b060 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xfebac568 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x6a2dbc55 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6bfc7bb4 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x83fe7b56 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x96b8e28b lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xceca6446 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xdc14cb48 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xea77d80b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5597a71a snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x05ba8c3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1b7e2a11 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2928b118 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x743f2c18 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6803f7c5 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa1585716 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x0df2e317 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x26885c56 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ab3ab98 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ddf2a2e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85c27c7a snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85e4ac82 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd4945484 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfcf964a7 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x464575d8 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x76ce51c5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14a0132b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x154df648 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x245f8ecd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e198920 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5222960a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54c06636 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5941efc3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6120e10f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x629b7e97 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6f6b8ba5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7a417cef snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8cd1a8d7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94f900f5 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95823a7c snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa88dccc2 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8aad07c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdee35c75 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9fd1963b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f8e7dbd snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13f91d59 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18edb454 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3bbcc72b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x463c867d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e6c8065 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7fd5a310 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83a400e4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x92ae42d7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9bc797ed snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0f0c257 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2e33729 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9348a92 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9f9ff5c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd46e50e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf662f332 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff88f3a1 snd_ac97_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbde753a1 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x0022b8fa dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00658d2c snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0081030e omap_vram_reserve +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x0088eb1a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00b5070f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00dceeb0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x00df3cd1 snd_timer_start +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00eef49e __strnlen_user +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010757a3 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011b3925 dst_destroy +EXPORT_SYMBOL vmlinux 0x01316c4b revalidate_disk +EXPORT_SYMBOL vmlinux 0x01424f59 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x017ff6b1 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01acf78c blk_requeue_request +EXPORT_SYMBOL vmlinux 0x01d3621a tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x01d372ba thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x01e8ac6e twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x01fea6ed usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0242dfe2 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x024bf88f omap_modify_dma_chain_params +EXPORT_SYMBOL vmlinux 0x024fe8d5 udp_table +EXPORT_SYMBOL vmlinux 0x025132c5 dpi_check_timings +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027b5927 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0283e58e account_page_writeback +EXPORT_SYMBOL vmlinux 0x0289743f of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x029db920 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x02a0d156 gpmc_prefetch_reset +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a72712 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x02c0db3f inet_register_protosw +EXPORT_SYMBOL vmlinux 0x02c36bb4 journal_create +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e1c724 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02fa54aa mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0302c48b idr_destroy +EXPORT_SYMBOL vmlinux 0x030bce7b tty_port_close_start +EXPORT_SYMBOL vmlinux 0x031ba9bf atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x031c3dfa dev_disable_lro +EXPORT_SYMBOL vmlinux 0x0331bc7b dm_get_device +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034eec6c bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a6d6b2 lock_may_read +EXPORT_SYMBOL vmlinux 0x03a7452e call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03e0f1b7 __lock_page +EXPORT_SYMBOL vmlinux 0x03eb0461 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ffa31d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0444d12c serio_close +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0461149f input_unregister_handler +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04768963 dquot_destroy +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a621f6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x04b74adc vm_map_ram +EXPORT_SYMBOL vmlinux 0x04c47134 of_device_register +EXPORT_SYMBOL vmlinux 0x04c4d0a4 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x04cb6240 files_lglock +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04d5f0a5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f4c74c backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x051dae71 skb_make_writable +EXPORT_SYMBOL vmlinux 0x051efadc pm860x_page_reg_write +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 0x057e6d37 sock_create_lite +EXPORT_SYMBOL vmlinux 0x058db3f5 up_read +EXPORT_SYMBOL vmlinux 0x05baaba0 wait_for_completion +EXPORT_SYMBOL vmlinux 0x05d95ac8 write_inode_now +EXPORT_SYMBOL vmlinux 0x05f87ef3 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x05ff2174 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06376c11 sock_release +EXPORT_SYMBOL vmlinux 0x0648e553 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x0650191f d_move +EXPORT_SYMBOL vmlinux 0x065de4ad vfs_statfs +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069ce1b7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x06a26579 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x06e695ed set_page_dirty +EXPORT_SYMBOL vmlinux 0x06ea8aac led_blink_set +EXPORT_SYMBOL vmlinux 0x06fcece8 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0715130d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0730b7bf wireless_spy_update +EXPORT_SYMBOL vmlinux 0x0730ed21 d_lookup +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x079f8f53 skb_insert +EXPORT_SYMBOL vmlinux 0x07a6ddfa abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bb555d scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6fe98 proc_symlink +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e5494e lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x07ead500 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x080b08eb jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x082ce095 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0851043a tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x0853a313 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x086b1a57 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0884c74f simple_empty +EXPORT_SYMBOL vmlinux 0x0887263e skb_find_text +EXPORT_SYMBOL vmlinux 0x08c761c1 unlock_super +EXPORT_SYMBOL vmlinux 0x08ccfa69 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x08ded414 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x091c5b10 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x092e9372 search_binary_handler +EXPORT_SYMBOL vmlinux 0x09360eba omapdss_dpi_display_enable +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09674b49 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x0978e8d3 do_splice_from +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b336f6 inode_only_permission +EXPORT_SYMBOL vmlinux 0x09c250eb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d07ef7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x09e96dba snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a0672bb fget_raw +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2ef616 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49a076 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0a7d8122 kernel_listen +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0aa560af fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0abe1e6c neigh_direct_output +EXPORT_SYMBOL vmlinux 0x0aca23ef nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad5fb6f down_write_trylock +EXPORT_SYMBOL vmlinux 0x0add6a1f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x0ae02873 i2c_transfer +EXPORT_SYMBOL vmlinux 0x0b04d4f0 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b28e140 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0b351ada mempool_resize +EXPORT_SYMBOL vmlinux 0x0b360971 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0b387d94 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5fdc85 get_io_context +EXPORT_SYMBOL vmlinux 0x0b69a29f down_trylock +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b873e1b __ip_select_ident +EXPORT_SYMBOL vmlinux 0x0b8df029 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0b90e80b proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bda7807 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x0be8f5d9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x0c0202db filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0c09b60b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0c18f0b3 __kfree_skb +EXPORT_SYMBOL vmlinux 0x0c316a4c dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c35f2c6 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x0c3fe9b3 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x0c4e799d dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x0c5029a9 seq_path +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f7d84 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c81fd4c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c94e03c mmc_resume_host +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cacd1a2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0ce025a4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x0d198713 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x0d3bb020 dm_io +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d85d38b __blk_end_request +EXPORT_SYMBOL vmlinux 0x0d8ae393 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da41773 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x0daf568a current_fs_time +EXPORT_SYMBOL vmlinux 0x0dbe49bb generic_make_request +EXPORT_SYMBOL vmlinux 0x0dc4ddd9 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x0dc69705 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x0dcc62fe dev_mc_init +EXPORT_SYMBOL vmlinux 0x0de84ceb dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x0e51cc03 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0e62e9ee seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0e674bd8 iput +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e893437 lg_lock_init +EXPORT_SYMBOL vmlinux 0x0e95aed4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0eab8424 file_update_time +EXPORT_SYMBOL vmlinux 0x0eb2fce2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0ec98808 ida_init +EXPORT_SYMBOL vmlinux 0x0ed70e05 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0eeac95e netdev_notice +EXPORT_SYMBOL vmlinux 0x0ef22307 journal_extend +EXPORT_SYMBOL vmlinux 0x0f0ce1a8 simple_write_begin +EXPORT_SYMBOL vmlinux 0x0f1836e2 napi_complete +EXPORT_SYMBOL vmlinux 0x0f1994f6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0f363190 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f655ddd jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x0f6ec591 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa429cd dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fbccb11 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff74cb0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x0ffa8302 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x10101c3c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x102aaba7 abort_creds +EXPORT_SYMBOL vmlinux 0x102cb583 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107424a6 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x10759477 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x107a9cbb thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x10ab589d mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10abebce bdget_disk +EXPORT_SYMBOL vmlinux 0x10b174ee ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x10b7def7 dev_mc_add +EXPORT_SYMBOL vmlinux 0x10d1a6ff generic_block_bmap +EXPORT_SYMBOL vmlinux 0x10d8a815 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x10da2f12 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x10dd5a3e max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11022c80 journal_init_dev +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a4cbb seq_release +EXPORT_SYMBOL vmlinux 0x11148a97 I_BDEV +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x113ecb1a init_task +EXPORT_SYMBOL vmlinux 0x114feb9c ll_rw_block +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1190c9ce twl6040_power +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a73a68 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12065014 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x120c2f97 dquot_drop +EXPORT_SYMBOL vmlinux 0x120e1439 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x1221c8be dm_register_target +EXPORT_SYMBOL vmlinux 0x1228b55b xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cbb67d scsi_execute +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e0cd3d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x12eeec28 replace_mount_options +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131e3065 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133dc5a8 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x134627c4 phy_print_status +EXPORT_SYMBOL vmlinux 0x13592581 simple_readpage +EXPORT_SYMBOL vmlinux 0x136005ae dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x136a795b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x1398d442 task_nice +EXPORT_SYMBOL vmlinux 0x139b2340 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x13a3e2f6 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x13c5270d nf_setsockopt +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4125b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1421dafd xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x142bc363 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x14528183 inet6_release +EXPORT_SYMBOL vmlinux 0x1453a52c sync_blockdev +EXPORT_SYMBOL vmlinux 0x1458ca4c pagecache_write_end +EXPORT_SYMBOL vmlinux 0x14b7212a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14cb7335 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x14d1d6f9 security_path_rename +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x15034008 serio_reconnect +EXPORT_SYMBOL vmlinux 0x150ea7db sock_kmalloc +EXPORT_SYMBOL vmlinux 0x15139ad1 bio_endio +EXPORT_SYMBOL vmlinux 0x1524d58b proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x154999aa __pagevec_release +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155019f7 may_umount_tree +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x156d1e82 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x158a01ac tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x15a16218 put_io_context +EXPORT_SYMBOL vmlinux 0x15dacae2 d_instantiate +EXPORT_SYMBOL vmlinux 0x15debd12 input_register_handle +EXPORT_SYMBOL vmlinux 0x160ef936 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x161028e9 simple_lookup +EXPORT_SYMBOL vmlinux 0x16154f04 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1627dce6 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162c7a6b ppp_channel_index +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163bc431 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x165b49aa of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x165dcc8e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x166c6638 blk_get_request +EXPORT_SYMBOL vmlinux 0x166cb2a3 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x16859d77 serio_rescan +EXPORT_SYMBOL vmlinux 0x16a772f1 dev_err +EXPORT_SYMBOL vmlinux 0x16c27823 sock_register +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16e50dac bio_split +EXPORT_SYMBOL vmlinux 0x17019b7a skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x17108fce devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x171bb402 have_submounts +EXPORT_SYMBOL vmlinux 0x1737aacf block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1739d958 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x1792c48d __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17af11d3 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x17c490b9 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x17d48596 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17f075f4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1827cb53 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1851151c proc_dointvec +EXPORT_SYMBOL vmlinux 0x1879d3a0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18902e4e snd_power_wait +EXPORT_SYMBOL vmlinux 0x189100f0 drop_super +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b1769d inet_stream_connect +EXPORT_SYMBOL vmlinux 0x18dc48d0 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x18f0d3af scsi_device_get +EXPORT_SYMBOL vmlinux 0x18f9c336 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x19068e25 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x1906c469 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x19088883 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x191854af __register_chrdev +EXPORT_SYMBOL vmlinux 0x192217d9 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x1924a3ea load_nls_default +EXPORT_SYMBOL vmlinux 0x195b15d1 mpage_readpages +EXPORT_SYMBOL vmlinux 0x196aff3e dev_base_lock +EXPORT_SYMBOL vmlinux 0x196c83d7 unregister_netdev +EXPORT_SYMBOL vmlinux 0x19762b5c snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b11184 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x19b3dded register_gifconf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cec6ef snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x19e91218 __getblk +EXPORT_SYMBOL vmlinux 0x1a0135e4 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x1a1098a3 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x1a29074f security_path_unlink +EXPORT_SYMBOL vmlinux 0x1a496ac6 cad_pid +EXPORT_SYMBOL vmlinux 0x1a54133a md_integrity_register +EXPORT_SYMBOL vmlinux 0x1a5474f6 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6612ec soft_cursor +EXPORT_SYMBOL vmlinux 0x1a8f4375 vc_cons +EXPORT_SYMBOL vmlinux 0x1ab30c4d vfs_writev +EXPORT_SYMBOL vmlinux 0x1ab47db9 misc_deregister +EXPORT_SYMBOL vmlinux 0x1ab4e21f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1ab5caa9 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae58785 update_region +EXPORT_SYMBOL vmlinux 0x1ae90bbf lookup_one_len +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b045a97 would_dump +EXPORT_SYMBOL vmlinux 0x1b06fd44 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x1b075d04 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b4385d9 sk_filter +EXPORT_SYMBOL vmlinux 0x1b51148f vmap +EXPORT_SYMBOL vmlinux 0x1b54669e __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x1b55cbd2 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b9b04c5 snd_timer_new +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1baeaed4 proc_dostring +EXPORT_SYMBOL vmlinux 0x1baec476 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x1bceb015 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x1c081484 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x1c2a1dbf disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1c4993bc vfs_link +EXPORT_SYMBOL vmlinux 0x1c51cf7e mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x1c63e7e6 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x1c677d45 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x1c68a994 sk_stream_error +EXPORT_SYMBOL vmlinux 0x1c77cbf5 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x1ca221d0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x1cb937b1 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x1cc1dabc mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd0f6c0 mempool_alloc +EXPORT_SYMBOL vmlinux 0x1cd58514 __alloc_skb +EXPORT_SYMBOL vmlinux 0x1cfc8b01 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d29fcb2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x1d41bb9b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x1d43d57c seq_putc +EXPORT_SYMBOL vmlinux 0x1d502d43 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x1d57fde8 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x1d5fde9c journal_load +EXPORT_SYMBOL vmlinux 0x1d9135f0 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1da03ed0 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x1dab9e77 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x1dac70ef tcp_proc_register +EXPORT_SYMBOL vmlinux 0x1db342fd __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dbb9814 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x1dc13c8e phy_device_register +EXPORT_SYMBOL vmlinux 0x1dc2dc34 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc9080a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd76860 register_netdevice +EXPORT_SYMBOL vmlinux 0x1df0edb6 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1dfb97f9 dev_emerg +EXPORT_SYMBOL vmlinux 0x1dfe0274 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0ee4eb mem_map +EXPORT_SYMBOL vmlinux 0x1e24fd27 unregister_key_type +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e287c9a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1e4140d5 bio_alloc +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e95feb9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eba431e skb_free_datagram +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed90c38 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1ef900bd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1f142f0c kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x1f508b03 bdget +EXPORT_SYMBOL vmlinux 0x1f667d81 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1f6c3361 key_invalidate +EXPORT_SYMBOL vmlinux 0x1f6c9d7a destroy_EII_client +EXPORT_SYMBOL vmlinux 0x1f745e2c key_alloc +EXPORT_SYMBOL vmlinux 0x1f77e8ef of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1f786d19 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd8d53a netdev_update_features +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ffa9f00 put_disk +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20085764 register_nls +EXPORT_SYMBOL vmlinux 0x202b6e63 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209694b0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df83c5 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x20e6ef43 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x20f1bbf4 dquot_acquire +EXPORT_SYMBOL vmlinux 0x20f4457f tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x210368be load_nls +EXPORT_SYMBOL vmlinux 0x210c8ebc generic_read_dir +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211847e0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x2149c298 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21a02d0b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x21aa4dd0 register_key_type +EXPORT_SYMBOL vmlinux 0x21b13bde no_llseek +EXPORT_SYMBOL vmlinux 0x21bc8247 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x21cf27fb genl_notify +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x220101f4 lease_modify +EXPORT_SYMBOL vmlinux 0x22091be7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x221dfde0 idr_pre_get +EXPORT_SYMBOL vmlinux 0x22207102 freeze_super +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22381e35 console_stop +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x224fc3ea test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22cd0114 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x22dfbba4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x22f5208c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x22f7fe90 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x22fdad06 dma_supported +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f8460 cdev_del +EXPORT_SYMBOL vmlinux 0x233857af notify_change +EXPORT_SYMBOL vmlinux 0x2347ed86 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x234822b1 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x23500506 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2358bb9c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x239ea69d buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23d2b2b3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x23e66b08 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x23f1efa4 f_setown +EXPORT_SYMBOL vmlinux 0x23f7ee8d cpu_cache +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2412d9ac __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2429a333 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x242e22ac generic_show_options +EXPORT_SYMBOL vmlinux 0x244a932b genlmsg_put +EXPORT_SYMBOL vmlinux 0x245807f0 setattr_copy +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2459cb98 kernel_read +EXPORT_SYMBOL vmlinux 0x2467e637 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2477ab91 dev_printk +EXPORT_SYMBOL vmlinux 0x247cd259 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24c99df3 sock_wake_async +EXPORT_SYMBOL vmlinux 0x24e10d8e twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x24f74506 nand_scan +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25024249 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x250d0bce phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x2515a9cb input_set_abs_params +EXPORT_SYMBOL vmlinux 0x2524e83e kdb_current_task +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252d7640 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25456d8c skb_pull +EXPORT_SYMBOL vmlinux 0x25460c8f xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2560e3f6 journal_ack_err +EXPORT_SYMBOL vmlinux 0x25724c4e vc_resize +EXPORT_SYMBOL vmlinux 0x2577bc0f snd_timer_pause +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25976aa2 netdev_warn +EXPORT_SYMBOL vmlinux 0x259d5f20 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x25ac5bd9 dql_init +EXPORT_SYMBOL vmlinux 0x25ae0bde tty_port_hangup +EXPORT_SYMBOL vmlinux 0x25b65d2f journal_get_create_access +EXPORT_SYMBOL vmlinux 0x25be2aba simple_transaction_release +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25f1b4b0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x262a9620 complete_request_key +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263e70b4 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x268ae8a7 seq_open_private +EXPORT_SYMBOL vmlinux 0x26911e4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2694dba8 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x26ac17c5 mount_subtree +EXPORT_SYMBOL vmlinux 0x26b996f5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26d65736 security_path_truncate +EXPORT_SYMBOL vmlinux 0x26db079f phy_connect +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fe75af dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x2700b38a mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2723b642 input_open_device +EXPORT_SYMBOL vmlinux 0x274ac3b0 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x2750b3a1 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2771bcbc xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x2780cf97 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2796e2e6 block_write_full_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c165b1 udplite_prot +EXPORT_SYMBOL vmlinux 0x27c1de03 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x280bc39b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818bcaf pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x281ce5ef netdev_set_master +EXPORT_SYMBOL vmlinux 0x282ba335 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x2830fee2 idr_get_next +EXPORT_SYMBOL vmlinux 0x284a48a2 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2854eb28 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x286626f2 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x286984ab generic_write_sync +EXPORT_SYMBOL vmlinux 0x2897fc48 omap_cfg_reg +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28c615c4 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28d85959 generic_permission +EXPORT_SYMBOL vmlinux 0x2904f0e8 clk_round_rate +EXPORT_SYMBOL vmlinux 0x29115774 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x295052ca skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296be509 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x29889a0a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x29aeccd9 filemap_fault +EXPORT_SYMBOL vmlinux 0x29af41e2 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x29c8b08c of_phy_connect +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a03ff3e tcp_poll +EXPORT_SYMBOL vmlinux 0x2a042179 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2a1ed93e clk_add_alias +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a7b64f0 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2a8aec48 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2a8e0667 tty_devnum +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa7a3cb __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acbc65c mnt_pin +EXPORT_SYMBOL vmlinux 0x2acd5d13 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2ae97066 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x2af8e218 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2b072aec file_open_root +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2ff104 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x2b3da4f1 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2b478e16 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2b688622 complete_and_exit +EXPORT_SYMBOL vmlinux 0x2b90cdaa mempool_create +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bab9a14 __nla_reserve +EXPORT_SYMBOL vmlinux 0x2bb081f3 phy_stop +EXPORT_SYMBOL vmlinux 0x2bd86d11 iget5_locked +EXPORT_SYMBOL vmlinux 0x2bd89727 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2be17af8 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2bfcef99 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1b30ff iterate_mounts +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3c6646 mnt_unpin +EXPORT_SYMBOL vmlinux 0x2c64b7a2 genl_register_family +EXPORT_SYMBOL vmlinux 0x2c6615fc snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x2c9e11ad xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x2cc65d90 bio_add_page +EXPORT_SYMBOL vmlinux 0x2cd52b0b simple_release_fs +EXPORT_SYMBOL vmlinux 0x2cd8d457 bmap +EXPORT_SYMBOL vmlinux 0x2cda24e9 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2ce9a63c scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x2cff8a67 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1f5a20 inet_put_port +EXPORT_SYMBOL vmlinux 0x2d2f4baa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2d34a1b4 dq_data_lock +EXPORT_SYMBOL vmlinux 0x2d4fb182 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2d52652b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x2d607ee2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d873ba4 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2dacbe20 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x2de764b9 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df8aede jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x2df8cd3b nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x2e05e9de netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x2e0a3115 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e27459d snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x2e2a54b0 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2ea4d1fa journal_wipe +EXPORT_SYMBOL vmlinux 0x2ea854b0 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2ec01ae8 single_open +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec54e9c sk_release_kernel +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 0x2f051dcb dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x2f06acb2 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x2f0bf033 sock_create_kern +EXPORT_SYMBOL vmlinux 0x2f1dd849 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x2f4f2346 tty_name +EXPORT_SYMBOL vmlinux 0x2f5db5de inet6_ioctl +EXPORT_SYMBOL vmlinux 0x2f7a7294 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x2f857079 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2f8749e4 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x2f88a039 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x2f9bb232 neigh_table_init +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd4fc8f snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x2fd80048 simple_setattr +EXPORT_SYMBOL vmlinux 0x2fd85baf ___ratelimit +EXPORT_SYMBOL vmlinux 0x2fec7f23 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x2fed65cc fb_show_logo +EXPORT_SYMBOL vmlinux 0x2ff0dab6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x30056dcb netpoll_setup +EXPORT_SYMBOL vmlinux 0x3006e61a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x300c615d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x302055d7 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x30244d24 uart_resume_port +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30bc8e1b md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30cb14e5 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31043cb0 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312a36c9 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x312a7e18 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x313ffc4d set_security_override +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314d5b46 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x316dd1cd __wait_on_bit +EXPORT_SYMBOL vmlinux 0x3187e0b9 inet6_getname +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a49b03 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x31a71a39 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31f03185 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x31fb1aeb elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x321866a1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x322014ec mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3246243e security_path_chmod +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328ba99b scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x32bc4488 nla_append +EXPORT_SYMBOL vmlinux 0x32d42c10 inode_permission +EXPORT_SYMBOL vmlinux 0x3314647e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x33211758 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x33613a69 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x336c05f8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33baae8c sg_miter_next +EXPORT_SYMBOL vmlinux 0x33cefbae omap_dss_find_device +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f3c466 neigh_lookup +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342c937d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x343cb8b8 inet_accept +EXPORT_SYMBOL vmlinux 0x3441e442 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x344e0fe5 seq_write +EXPORT_SYMBOL vmlinux 0x3461a2f7 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x346502e8 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x346cd864 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x3493acdd __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34be7e44 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3504d638 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3542f055 vfs_read +EXPORT_SYMBOL vmlinux 0x35568ba3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x355f425c kobject_set_name +EXPORT_SYMBOL vmlinux 0x35610e05 clk_get +EXPORT_SYMBOL vmlinux 0x357559df sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c6ef03 empty_aops +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x3600ef49 amba_request_regions +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36294c68 tty_port_init +EXPORT_SYMBOL vmlinux 0x364b3fff up +EXPORT_SYMBOL vmlinux 0x364c6d8f fb_pan_display +EXPORT_SYMBOL vmlinux 0x36799b63 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x3680f520 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x3681ee83 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x36a2488d zero_fill_bio +EXPORT_SYMBOL vmlinux 0x36b8499c kmalloc_caches +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e744fc ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x36f271a0 follow_down +EXPORT_SYMBOL vmlinux 0x371a0d71 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x371b9574 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x371ef233 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x371ef8db md_flush_request +EXPORT_SYMBOL vmlinux 0x37203b85 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x372b949f snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3744fc63 kill_litter_super +EXPORT_SYMBOL vmlinux 0x376b5929 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x37739222 scsi_host_get +EXPORT_SYMBOL vmlinux 0x377779c6 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3778cb18 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x3778f45c igrab +EXPORT_SYMBOL vmlinux 0x378b57e2 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37a89e1f udp_proc_register +EXPORT_SYMBOL vmlinux 0x37b1e0ea d_prune_aliases +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37ba3e46 i2c_master_send +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37bf68b4 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x37d7f12b skb_copy +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x382eab43 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x388cb0dc ppp_unit_number +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38af62e2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x38b81f68 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x38b9e084 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x38c23871 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x390964e4 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x390abf70 phy_disconnect +EXPORT_SYMBOL vmlinux 0x392a5d1c elevator_exit +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3950711a of_match_device +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x397cbac5 blk_peek_request +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399365a8 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x39a60abd snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x39a8e5e8 lock_fb_info +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x3a1bffe5 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3a1d1f23 neigh_create +EXPORT_SYMBOL vmlinux 0x3a655d8c softnet_data +EXPORT_SYMBOL vmlinux 0x3a77df32 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9c7b85 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x3a9d3a1c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x3aa16502 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ab05508 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x3acbee2b kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x3b2ed648 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b398e51 fget +EXPORT_SYMBOL vmlinux 0x3b6dffc5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3b6f30c6 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3b7f8e27 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b91f5be inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x3b9541d0 omap_dss_unregister_driver +EXPORT_SYMBOL vmlinux 0x3ba5c359 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfd41b5 do_sync_write +EXPORT_SYMBOL vmlinux 0x3c011bfd get_user_pages +EXPORT_SYMBOL vmlinux 0x3c1ef7c7 down_read_trylock +EXPORT_SYMBOL vmlinux 0x3c366fcb lro_receive_frags +EXPORT_SYMBOL vmlinux 0x3c4555e7 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x3c77542e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c87faf1 input_allocate_device +EXPORT_SYMBOL vmlinux 0x3c92eb55 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x3c97e278 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cc6d3fa sock_no_listen +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce4f01c tcp_init_sock +EXPORT_SYMBOL vmlinux 0x3cf7b415 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d3932e3 __module_get +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d7063b5 find_get_page +EXPORT_SYMBOL vmlinux 0x3d86067c seq_lseek +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3dbce74c arp_find +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddd8e31 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x3de56609 snd_timer_open +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfcb339 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x3e1d9fc4 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x3e2e01bf pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4eaadc __sk_dst_check +EXPORT_SYMBOL vmlinux 0x3e4f28d6 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x3e56b54f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3e686c75 mount_single +EXPORT_SYMBOL vmlinux 0x3e6b0b00 request_key +EXPORT_SYMBOL vmlinux 0x3e6da4fb jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea468e1 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3eaf50ad arp_create +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3eca76dd snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ed676ed blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3f0172ab tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3f3eb980 skb_queue_head +EXPORT_SYMBOL vmlinux 0x3f42c48a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f88fafb generic_writepages +EXPORT_SYMBOL vmlinux 0x3fcc763e kill_bdev +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403797d0 get_super_thawed +EXPORT_SYMBOL vmlinux 0x403ab398 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x4049933e security_path_symlink +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4064d20a skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x407d1014 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4086374a xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40979285 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a6f522 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40dcd4e1 da903x_query_status +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x410312d3 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x41173a81 serio_open +EXPORT_SYMBOL vmlinux 0x41220e7e bio_clone +EXPORT_SYMBOL vmlinux 0x4127a5d2 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x41380186 lock_super +EXPORT_SYMBOL vmlinux 0x413894e2 ilookup +EXPORT_SYMBOL vmlinux 0x413d1e88 scsi_add_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a52ea dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x414d61f3 devm_ioremap +EXPORT_SYMBOL vmlinux 0x4150ec32 __brelse +EXPORT_SYMBOL vmlinux 0x4183d9a9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418aa1b3 dev_deactivate +EXPORT_SYMBOL vmlinux 0x41bfc910 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x41c00c2b mmc_release_host +EXPORT_SYMBOL vmlinux 0x41d568d6 of_device_is_available +EXPORT_SYMBOL vmlinux 0x41fe7ef1 ppp_input_error +EXPORT_SYMBOL vmlinux 0x420e9f20 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x425a68f9 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x426702e0 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x428096f4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a3fde3 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x42aacd27 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x42abc0e6 prepare_binprm +EXPORT_SYMBOL vmlinux 0x42b42d39 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x42b4eba5 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x42ee1838 __breadahead +EXPORT_SYMBOL vmlinux 0x42f38ec1 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x42f9bc35 set_disk_ro +EXPORT_SYMBOL vmlinux 0x42fc983a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4300f0b7 register_sound_special +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306104c iget_locked +EXPORT_SYMBOL vmlinux 0x43178a1b arp_xmit +EXPORT_SYMBOL vmlinux 0x4322d919 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x43450264 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x4347b971 idr_init +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436a1d3e lg_local_unlock +EXPORT_SYMBOL vmlinux 0x436d2d89 elv_rb_find +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43b45f54 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x43bcbc84 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440109fe n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4419cd5f nf_reinject +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x441f8e4e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443d528a filp_open +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444e2002 dev_set_group +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447bbcdc __find_get_block +EXPORT_SYMBOL vmlinux 0x4483e87d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x4499140f sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x44b22ca1 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efd447 omap_dss_stop_device +EXPORT_SYMBOL vmlinux 0x44f24f9a ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4519732e dev_activate +EXPORT_SYMBOL vmlinux 0x45582efb tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x456ce4d8 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x45756e17 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a2a733 inet_ioctl +EXPORT_SYMBOL vmlinux 0x45a580d7 snd_card_register +EXPORT_SYMBOL vmlinux 0x45a8fbaa down_timeout +EXPORT_SYMBOL vmlinux 0x45b621ba ip_options_compile +EXPORT_SYMBOL vmlinux 0x45ba232a get_super +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c9fcad lookup_bdev +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x4601ae1d unregister_nls +EXPORT_SYMBOL vmlinux 0x460ea1c5 udplite_table +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x465e70ee skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466fd684 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x4681c6e9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4687762a tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x46921b4b register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x46c4b962 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47035ec0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x47081cdc jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x47162a99 key_unlink +EXPORT_SYMBOL vmlinux 0x473efd10 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47738399 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4793c7b1 update_time +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c45f42 user_revoke +EXPORT_SYMBOL vmlinux 0x47ea7b28 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48125adb kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x481aa411 snd_seq_root +EXPORT_SYMBOL vmlinux 0x482298fd unregister_quota_format +EXPORT_SYMBOL vmlinux 0x483af0e2 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x483ec199 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x483f4104 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4846f530 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4852f869 block_write_begin +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485c99cc mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x486eca3a of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x48704908 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48849e3f try_to_release_page +EXPORT_SYMBOL vmlinux 0x48954949 unlock_buffer +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48c542de phy_start_aneg +EXPORT_SYMBOL vmlinux 0x48ffc303 dev_uc_del +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490b1367 blk_init_queue +EXPORT_SYMBOL vmlinux 0x494a4954 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x49506e93 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497f1bca blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x499bfbf2 devm_iounmap +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c58e5d file_remove_suid +EXPORT_SYMBOL vmlinux 0x49da7167 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x49db5768 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x49e63605 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f543c8 bdi_unregister +EXPORT_SYMBOL vmlinux 0x49f5cc79 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x49f8a184 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49fe734c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4a093833 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x4a2d6bd4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x4a35361d uart_suspend_port +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a429475 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x4a4ffbc1 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x4a51dce6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x4a71f939 led_brightness_set +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abdb61c seq_printf +EXPORT_SYMBOL vmlinux 0x4ad0a85a journal_set_features +EXPORT_SYMBOL vmlinux 0x4ae76a38 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b142e72 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4b1c7f9a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b20cbd2 ida_remove +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4221cb phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4b5d499f sk_alloc +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b79aab2 tcp_close +EXPORT_SYMBOL vmlinux 0x4b913749 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x4be0161c ps2_command +EXPORT_SYMBOL vmlinux 0x4c059aba journal_abort +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c11cdb2 empty_zero_page +EXPORT_SYMBOL vmlinux 0x4c16773d textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4c21cc42 blk_get_queue +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c78cada scsi_remove_device +EXPORT_SYMBOL vmlinux 0x4c9825e5 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x4c9898d8 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x4c991168 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf6cf63 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0x4d0546b0 ipv4_specific +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d13b1a6 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4d240987 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x4d39c692 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d68263f nla_put +EXPORT_SYMBOL vmlinux 0x4d697ce4 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4d88d75d jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x4d8ed115 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9afc39 page_readlink +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4d9df1ea scm_detach_fds +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dcf39a9 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x4de6e3a7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e201dac jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x4e2aff5a kernel_accept +EXPORT_SYMBOL vmlinux 0x4e2b2299 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4e31eaf8 dev_open +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e400ce5 release_sock +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e748dcd down_read +EXPORT_SYMBOL vmlinux 0x4e7575ee key_type_keyring +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8d3e48 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x4e9746fd sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4ed70e07 clk_get_rate +EXPORT_SYMBOL vmlinux 0x4efe96e8 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x4f0d7ce6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f283f47 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f78b7b2 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4f7c932e twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f833685 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fa5447e pipe_unlock +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50171978 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x504648b4 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5059c385 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x507e4ed6 dev_trans_start +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50c25cc3 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x50c71330 idr_get_new +EXPORT_SYMBOL vmlinux 0x50ccff03 omap_dma_set_prio_lch +EXPORT_SYMBOL vmlinux 0x50cd35e7 __quota_error +EXPORT_SYMBOL vmlinux 0x50cf5efb mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x50f66679 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x50fb6048 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x5100e8e4 kobject_add +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515802c0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5169161d omap_free_dma_chain +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51a6512c tty_free_termios +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e07f5d dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f06805 dump_write +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52057bae mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5206509b snd_device_free +EXPORT_SYMBOL vmlinux 0x52106625 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5210d066 elevator_init +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528fa261 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x52917690 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x52a11264 send_sig +EXPORT_SYMBOL vmlinux 0x52d2e6ae key_validate +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52eb21a8 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x52efd766 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5315fa97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x5326c46c register_sound_midi +EXPORT_SYMBOL vmlinux 0x532f13e9 dquot_release +EXPORT_SYMBOL vmlinux 0x5331eabb ida_simple_get +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53560d52 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x535b9eca blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x5364e479 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x536a761b journal_clear_err +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x53875723 netdev_info +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ba4e7c up_write +EXPORT_SYMBOL vmlinux 0x53baf7d6 start_tty +EXPORT_SYMBOL vmlinux 0x53c5f463 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x53ccb820 tty_shutdown +EXPORT_SYMBOL vmlinux 0x54002836 mpage_writepage +EXPORT_SYMBOL vmlinux 0x540a721d snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x541ac419 skb_clone +EXPORT_SYMBOL vmlinux 0x543d596b journal_stop +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5452ff4a tty_hangup +EXPORT_SYMBOL vmlinux 0x54659c69 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5486abcb iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x548c054e dqput +EXPORT_SYMBOL vmlinux 0x54a8c334 skb_split +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bbe9b8 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x54d0a8b8 get_write_access +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5501bf0e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5524fa65 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x55401511 simple_rename +EXPORT_SYMBOL vmlinux 0x5559e3c4 snd_device_register +EXPORT_SYMBOL vmlinux 0x556a3533 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x557b9b3f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x55846e5c snd_jack_new +EXPORT_SYMBOL vmlinux 0x558525f8 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x558d9ae9 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x5591367c __inet6_hash +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55bf5775 netif_napi_del +EXPORT_SYMBOL vmlinux 0x55d987df tcp_parse_options +EXPORT_SYMBOL vmlinux 0x55e116c1 touch_atime +EXPORT_SYMBOL vmlinux 0x55fae982 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x56027917 proto_register +EXPORT_SYMBOL vmlinux 0x5613b469 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x562ad513 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56501718 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x56574e50 kernel_connect +EXPORT_SYMBOL vmlinux 0x565e6328 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x56789ac5 omap_set_dma_color_mode +EXPORT_SYMBOL vmlinux 0x567bffe0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x56a76bc5 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x56b925bc mmc_detect_change +EXPORT_SYMBOL vmlinux 0x56c8089d alloc_disk +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d92cc1 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x56eff735 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x56f7951f of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x570c86a6 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x570e03f1 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x57292802 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57302a87 mmc_free_host +EXPORT_SYMBOL vmlinux 0x5736fb56 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576236e1 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57add44e __napi_complete +EXPORT_SYMBOL vmlinux 0x57bc35d7 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5850a0f0 tcp_prot +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x58a698da km_report +EXPORT_SYMBOL vmlinux 0x58c55233 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x58cbb14a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x58d086d9 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x58d32d1a skb_seq_read +EXPORT_SYMBOL vmlinux 0x58f5c5c4 ip_defrag +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593f655c blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x59407d72 proto_unregister +EXPORT_SYMBOL vmlinux 0x5948749f get_phy_device +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594fd546 omap_prcm_get_reset_sources +EXPORT_SYMBOL vmlinux 0x59579c26 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x596ac851 dentry_open +EXPORT_SYMBOL vmlinux 0x5998ecd7 inode_init_owner +EXPORT_SYMBOL vmlinux 0x59d17347 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59fb5c47 netdev_printk +EXPORT_SYMBOL vmlinux 0x5a0de649 md_done_sync +EXPORT_SYMBOL vmlinux 0x5a2d5113 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x5a5ebabc tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5aa2077b revert_creds +EXPORT_SYMBOL vmlinux 0x5aeae438 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x5aec1e60 cdev_init +EXPORT_SYMBOL vmlinux 0x5b14e9f1 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b196f59 __register_binfmt +EXPORT_SYMBOL vmlinux 0x5b334156 down_killable +EXPORT_SYMBOL vmlinux 0x5b8c51fa rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5b8e3205 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb3a238 do_SAK +EXPORT_SYMBOL vmlinux 0x5bbc0d2e snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x5bc1f55c dm_put_device +EXPORT_SYMBOL vmlinux 0x5bf27f25 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bfceb78 dquot_operations +EXPORT_SYMBOL vmlinux 0x5c6097bf tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cca7f9c cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5cdabc40 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5cdad235 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x5cdcb55d jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5d000101 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5d09e17f ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x5d0a04d8 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d233bdc thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x5d2562eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5d2a2bda snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x5d3682aa __scm_destroy +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6206ab __destroy_inode +EXPORT_SYMBOL vmlinux 0x5d9ff9d4 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x5db65933 dcb_getapp +EXPORT_SYMBOL vmlinux 0x5dcd0747 read_dev_sector +EXPORT_SYMBOL vmlinux 0x5dd01bbb simple_fill_super +EXPORT_SYMBOL vmlinux 0x5dd1e3c3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5de274dc skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x5df616cb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x5e067ef1 netdev_state_change +EXPORT_SYMBOL vmlinux 0x5e0f4e72 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5e10b03e input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5e206a44 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x5e408f65 del_gendisk +EXPORT_SYMBOL vmlinux 0x5e5f4406 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5e60eb27 omap_dma_unlink_lch +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e95d22b vlan_vid_del +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec49869 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5ecfb35d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef4d861 seq_bitmap +EXPORT_SYMBOL vmlinux 0x5f0011c7 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0e46da scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x5f108d10 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x5f1a363b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f24b10b nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x5f257724 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f464cf0 input_reset_device +EXPORT_SYMBOL vmlinux 0x5f497aeb pipe_lock +EXPORT_SYMBOL vmlinux 0x5f532252 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f634ed1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5f6e42ef tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f81645f scsi_print_result +EXPORT_SYMBOL vmlinux 0x5f9ae38e __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fad3da0 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5fb04d37 vfs_mknod +EXPORT_SYMBOL vmlinux 0x5fbaf8fa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5fc6cf2f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x6031feea scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60ab28ae mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x60b0b67d snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x60e32666 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x60f71cfa complete +EXPORT_SYMBOL vmlinux 0x611d79bf scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614e55f0 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617a8702 get_task_io_context +EXPORT_SYMBOL vmlinux 0x61a79f08 __irq_regs +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d35164 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x61eb9983 generic_setlease +EXPORT_SYMBOL vmlinux 0x61f0d306 poll_initwait +EXPORT_SYMBOL vmlinux 0x621d3806 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624d7359 address_space_init_once +EXPORT_SYMBOL vmlinux 0x62521759 nobh_write_end +EXPORT_SYMBOL vmlinux 0x625d831d mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a003ce find_vma +EXPORT_SYMBOL vmlinux 0x62adfcd0 sock_no_accept +EXPORT_SYMBOL vmlinux 0x62b72b0d mutex_unlock +EXPORT_SYMBOL vmlinux 0x62cc569e cpu_present_mask +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630a518c generic_fillattr +EXPORT_SYMBOL vmlinux 0x63129fa9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x6332959a __rta_fill +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63478c93 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x634b7eff tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6360a195 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63711d60 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x63817bf3 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x63847cf1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x6386ed50 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63942651 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x639901a0 mdiobus_read +EXPORT_SYMBOL vmlinux 0x63a77dcf wake_up_process +EXPORT_SYMBOL vmlinux 0x63ab2604 irq_stat +EXPORT_SYMBOL vmlinux 0x63b87fc5 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x63d55a3a generic_getxattr +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641bb9ab register_framebuffer +EXPORT_SYMBOL vmlinux 0x642638d7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x64268641 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6445c46f simple_link +EXPORT_SYMBOL vmlinux 0x646284c6 security_path_chown +EXPORT_SYMBOL vmlinux 0x646bad1d inet6_bind +EXPORT_SYMBOL vmlinux 0x648d18e0 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bc0878 sock_no_bind +EXPORT_SYMBOL vmlinux 0x64bc5881 fput +EXPORT_SYMBOL vmlinux 0x64c03117 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64cbb4c8 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x64d233c8 ioremap_page +EXPORT_SYMBOL vmlinux 0x64e880b9 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x650b3790 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x650f81f4 cdrom_open +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65369ec2 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654c3494 blk_complete_request +EXPORT_SYMBOL vmlinux 0x65518c89 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x655a5577 dqget +EXPORT_SYMBOL vmlinux 0x657af67b d_invalidate +EXPORT_SYMBOL vmlinux 0x657f2f0c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65909849 key_task_permission +EXPORT_SYMBOL vmlinux 0x65a38e24 dget_parent +EXPORT_SYMBOL vmlinux 0x65bf4ae2 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x65c2579f tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x65d8ade7 set_bh_page +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e38a35 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6609b110 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x661498aa udp_ioctl +EXPORT_SYMBOL vmlinux 0x66556052 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x6662fe0d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x667e14d0 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669d139b iunique +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66af0737 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x66eadf08 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x66ff0af9 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x66ffb625 user_path_create +EXPORT_SYMBOL vmlinux 0x673612a3 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x67394265 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x673b024f snd_device_new +EXPORT_SYMBOL vmlinux 0x67449a3c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676d2cf9 add_disk +EXPORT_SYMBOL vmlinux 0x678bc0bd __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x67910e5c sk_reset_timer +EXPORT_SYMBOL vmlinux 0x679f182a tc_classify +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67be1d3d cpu_active_mask +EXPORT_SYMBOL vmlinux 0x67bf09d2 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x6824e3e4 dev_alert +EXPORT_SYMBOL vmlinux 0x685f2cf7 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x686d8642 tty_kref_put +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687f6913 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x689a183d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aed661 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x68c1c5d1 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x68cc8345 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x68cd7893 journal_start_commit +EXPORT_SYMBOL vmlinux 0x68cfabbc omap_dss_start_device +EXPORT_SYMBOL vmlinux 0x68de0e3c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x690ee1bc devm_free_irq +EXPORT_SYMBOL vmlinux 0x692e7214 journal_errno +EXPORT_SYMBOL vmlinux 0x69561575 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697c1188 alloc_file +EXPORT_SYMBOL vmlinux 0x69940ee3 __get_user_pages +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69eaeba8 dst_discard +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a078247 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x6a3bcc9c cdev_add +EXPORT_SYMBOL vmlinux 0x6a559116 rtc_lock +EXPORT_SYMBOL vmlinux 0x6a6fa8b4 contig_page_data +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78e42f bio_copy_user +EXPORT_SYMBOL vmlinux 0x6aa051ad uart_register_driver +EXPORT_SYMBOL vmlinux 0x6ab342e1 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x6acd0e34 snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5a7057 ida_destroy +EXPORT_SYMBOL vmlinux 0x6b63f98c bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b89ab26 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6baed957 bioset_create +EXPORT_SYMBOL vmlinux 0x6bb97b14 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc0f65 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6bd30203 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be056a4 put_page +EXPORT_SYMBOL vmlinux 0x6bf2ec75 simple_rmdir +EXPORT_SYMBOL vmlinux 0x6bf65bb0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c94d4c7 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x6cb7e84a scsi_execute_req +EXPORT_SYMBOL vmlinux 0x6ccf7bd7 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x6cdbd724 dquot_initialize +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9a720 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x6ce9c13b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6cf1313b inet_sendpage +EXPORT_SYMBOL vmlinux 0x6cf4852f neigh_compat_output +EXPORT_SYMBOL vmlinux 0x6d03df6d qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1597ec ping_prot +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d7c7c1a mapping_tagged +EXPORT_SYMBOL vmlinux 0x6db987eb default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6dd3f41f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6dda6957 tty_check_change +EXPORT_SYMBOL vmlinux 0x6ddea172 sock_init_data +EXPORT_SYMBOL vmlinux 0x6ded92cc of_dev_put +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e09cf26 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6e0a5953 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x6e123a69 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6e171b6b unload_nls +EXPORT_SYMBOL vmlinux 0x6e2403df tty_port_put +EXPORT_SYMBOL vmlinux 0x6e40794b blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x6e469121 follow_up +EXPORT_SYMBOL vmlinux 0x6e5e6760 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7a1bda dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ee2b01b icmp_send +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efa3d07 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x6f0a0971 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6fabeb23 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x6fb5943e snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x6fbed676 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6fc024dc sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6fc614da snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ff32b86 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701d2014 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x701e2ef6 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x701e8cd9 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x70223b40 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x70334158 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x7052352d mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7064117b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x706a055b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x70733c05 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x70af8f4e ip_fragment +EXPORT_SYMBOL vmlinux 0x70b74cf5 bio_map_user +EXPORT_SYMBOL vmlinux 0x70b8b584 ppp_input +EXPORT_SYMBOL vmlinux 0x70bab5d0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f096 omapdss_sdi_display_enable +EXPORT_SYMBOL vmlinux 0x70da54ef amba_driver_register +EXPORT_SYMBOL vmlinux 0x70da6d92 framebuffer_release +EXPORT_SYMBOL vmlinux 0x70dd1a12 gpmc_cs_configure +EXPORT_SYMBOL vmlinux 0x70eecf85 __invalidate_device +EXPORT_SYMBOL vmlinux 0x70fef6b5 __scm_send +EXPORT_SYMBOL vmlinux 0x710a2bd2 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x71122bf1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x711cbeb4 d_path +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714d6918 override_creds +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71782504 brioctl_set +EXPORT_SYMBOL vmlinux 0x717e8c8b ip_setsockopt +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bb69ba d_splice_alias +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e9df9d abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x71fb2903 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x7205f022 d_delete +EXPORT_SYMBOL vmlinux 0x721a4be0 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723573bb unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x7244dec7 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x724f9e25 bh_submit_read +EXPORT_SYMBOL vmlinux 0x72559cdc snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x7264404f register_sound_dsp +EXPORT_SYMBOL vmlinux 0x72766947 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x72c15dd9 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x72c564c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72e580a7 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eaf1cc check_disk_size_change +EXPORT_SYMBOL vmlinux 0x72fe3b1e dst_release +EXPORT_SYMBOL vmlinux 0x730c187d find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c50e3 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x732119dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x732775a8 mdiobus_write +EXPORT_SYMBOL vmlinux 0x733a0165 register_quota_format +EXPORT_SYMBOL vmlinux 0x733b25a8 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x737ac25d dql_reset +EXPORT_SYMBOL vmlinux 0x737b884b scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x739edb7c open_exec +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fbcde6 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x73fe964c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7406376e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7426abc0 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74807f3a __seq_open_private +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f4e34 do_truncate +EXPORT_SYMBOL vmlinux 0x74bc8a62 dev_warn +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74ccc82e of_get_property +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ea004a netlink_broadcast +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7522a461 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x75359d07 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x7537a890 phy_find_first +EXPORT_SYMBOL vmlinux 0x755d02a6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x756b1ef4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x757ae0c1 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x75897e89 input_close_device +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x759f292a dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x75a17bed prepare_to_wait +EXPORT_SYMBOL vmlinux 0x75a92b91 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x75ad2ffd blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d29147 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x75ea8512 __dst_free +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7616f05a __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7620e99f simple_statfs +EXPORT_SYMBOL vmlinux 0x762d5a92 clk_enable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764d4120 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x7682e28c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x76838750 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x76881360 leds_event +EXPORT_SYMBOL vmlinux 0x76a5b356 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x76b9924c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c71485 cdrom_release +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d40bd3 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x76dc52a0 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x770bbc96 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x7726ca2d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7732818c xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c06373 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x77fc60bb elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x77fc7c99 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x78105cb7 kstat +EXPORT_SYMBOL vmlinux 0x783672ab dpi_set_timings +EXPORT_SYMBOL vmlinux 0x78549f3e end_page_writeback +EXPORT_SYMBOL vmlinux 0x78799aa6 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x7896d8ee of_device_unregister +EXPORT_SYMBOL vmlinux 0x789bf682 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x78e2f9f6 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x791a9efb of_match_node +EXPORT_SYMBOL vmlinux 0x793699d9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x793e37d6 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7943dda7 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x794487ee disable_hlt +EXPORT_SYMBOL vmlinux 0x795a86ad vfs_getattr +EXPORT_SYMBOL vmlinux 0x796d56bd __init_rwsem +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x799a79e1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d33427 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x7a0d9d0d genl_register_ops +EXPORT_SYMBOL vmlinux 0x7a26854d of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2b37d6 clk_get_parent +EXPORT_SYMBOL vmlinux 0x7a3988c5 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4beafa get_unmapped_area +EXPORT_SYMBOL vmlinux 0x7a78310d of_get_parent +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a9187a3 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4967b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7adb5bca nand_scan_tail +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b03cafb ip6_frag_match +EXPORT_SYMBOL vmlinux 0x7b091bad kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7b168691 __ps2_command +EXPORT_SYMBOL vmlinux 0x7b568a5d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x7b5c0738 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d54ae skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x7b5f4d7d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x7b66e361 register_console +EXPORT_SYMBOL vmlinux 0x7b7440b4 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x7b8e84f5 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x7bd29c55 phy_detach +EXPORT_SYMBOL vmlinux 0x7bd8bf59 skb_dequeue +EXPORT_SYMBOL vmlinux 0x7bd96a2c gpmc_prefetch_enable +EXPORT_SYMBOL vmlinux 0x7be55231 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7beb2e8a xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7bf30fdc down_write +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2c557c simple_open +EXPORT_SYMBOL vmlinux 0x7c2cdae9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x7c31a839 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7c442375 fb_find_mode +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c98ed4f register_qdisc +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc14082 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x7cd95d3f neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x7ce2578c snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x7ce6f64f bdi_register +EXPORT_SYMBOL vmlinux 0x7cef78f4 km_policy_expired +EXPORT_SYMBOL vmlinux 0x7d03d702 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x7d086100 vmtruncate +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d212a6e __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7d42db35 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7d6f3794 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x7d7673c6 submit_bio +EXPORT_SYMBOL vmlinux 0x7d7dc35e tcp_sendpage +EXPORT_SYMBOL vmlinux 0x7d93bbb2 set_create_files_as +EXPORT_SYMBOL vmlinux 0x7dbeae6c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7dc10419 __nla_put +EXPORT_SYMBOL vmlinux 0x7de0a78b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0e0771 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7e23d8e9 wireless_send_event +EXPORT_SYMBOL vmlinux 0x7e2ab9eb elevator_change +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e498053 md_write_start +EXPORT_SYMBOL vmlinux 0x7e87c6a9 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7ea9a08d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7ebaa41f inode_init_always +EXPORT_SYMBOL vmlinux 0x7ece1e24 scsi_init_io +EXPORT_SYMBOL vmlinux 0x7ece4af6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef09102 ata_print_version +EXPORT_SYMBOL vmlinux 0x7f01d411 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7f14b995 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x7f1fd517 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x7f207377 phy_driver_register +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33a63b omap_get_dma_chain_dst_pos +EXPORT_SYMBOL vmlinux 0x7f4ca37c dev_alloc_name +EXPORT_SYMBOL vmlinux 0x7f596387 vfs_symlink +EXPORT_SYMBOL vmlinux 0x7f5bfcb0 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f7564a1 sk_dst_check +EXPORT_SYMBOL vmlinux 0x7f8108af noop_llseek +EXPORT_SYMBOL vmlinux 0x7f8fc31f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7fa18522 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x7fa53a6e blk_rq_init +EXPORT_SYMBOL vmlinux 0x7fc62932 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801429cf unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8034558a gpmc_nand_write +EXPORT_SYMBOL vmlinux 0x80584c5c sock_setsockopt +EXPORT_SYMBOL vmlinux 0x8061337c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x807f92f2 bio_init +EXPORT_SYMBOL vmlinux 0x80c81612 genphy_resume +EXPORT_SYMBOL vmlinux 0x80c9796e xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d817ab wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x80de231a idr_remove +EXPORT_SYMBOL vmlinux 0x81003ee2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x813ed040 idr_remove_all +EXPORT_SYMBOL vmlinux 0x81474b5e journal_destroy +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815131ba mempool_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815cfb0a vfs_readv +EXPORT_SYMBOL vmlinux 0x8188fbd0 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x81afe4b1 netif_rx +EXPORT_SYMBOL vmlinux 0x81b02d62 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x81b04bfc completion_done +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e38a2c snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x81e675c6 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x81f35656 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x81fdf81f netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x82009965 names_cachep +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8204837e inet_add_protocol +EXPORT_SYMBOL vmlinux 0x8204e852 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821e8d91 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x8234fd4c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x823a5d4a dquot_alloc +EXPORT_SYMBOL vmlinux 0x82407ce6 bio_free +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8262f64b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x82658f47 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x827f9a03 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x828049e4 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b2dec3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x82e92977 register_md_personality +EXPORT_SYMBOL vmlinux 0x8305ce9d devm_clk_get +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832183c0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8371daff sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x83869e9a rt6_lookup +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83aa3618 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83d25c38 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x8446d571 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x8457bc58 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f4f7e nand_bch_init +EXPORT_SYMBOL vmlinux 0x847469f8 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84b23429 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x84cf2233 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x84db4b6e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x8557bb76 find_lock_page +EXPORT_SYMBOL vmlinux 0x85624007 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856dd9e1 dquot_disable +EXPORT_SYMBOL vmlinux 0x856f21a0 km_policy_notify +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x857ae3ff blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x857ef611 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x85a2c0fa snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b634c4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8625bd16 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x8639dab7 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x864cc627 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86507b2e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8697afd1 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x869b6978 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c32ef7 sync_inode +EXPORT_SYMBOL vmlinux 0x86caf8b8 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x86cc985f __dquot_transfer +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8708479e tcf_exts_change +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8712515a take_over_console +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872a8d2b ps2_drain +EXPORT_SYMBOL vmlinux 0x873f6c2f scsi_host_put +EXPORT_SYMBOL vmlinux 0x8756209e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x87761f6c nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b26c27 thaw_super +EXPORT_SYMBOL vmlinux 0x87b3c418 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x87c2bbfe ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x87d65193 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x87d87c8e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x87dbba14 ida_get_new +EXPORT_SYMBOL vmlinux 0x87e4ff3c mount_ns +EXPORT_SYMBOL vmlinux 0x87f0ca3e textsearch_register +EXPORT_SYMBOL vmlinux 0x87f17abc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x881ab77d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8853b235 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x887d4a7f snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x88813f9a ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x8893fa5d finish_wait +EXPORT_SYMBOL vmlinux 0x889556f4 security_file_permission +EXPORT_SYMBOL vmlinux 0x88990a98 __bread +EXPORT_SYMBOL vmlinux 0x88b8fe28 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x88dad969 consume_skb +EXPORT_SYMBOL vmlinux 0x88e68c8e inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x890d9fd6 input_flush_device +EXPORT_SYMBOL vmlinux 0x8931fa64 __sock_create +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895887c5 nand_unlock +EXPORT_SYMBOL vmlinux 0x8959d8f0 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x89709a6b __pskb_copy +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x898f4d76 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x89a3c4f4 omap_get_dma_chain_index +EXPORT_SYMBOL vmlinux 0x89d4a4d2 module_layout +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a531f94 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8a6861a3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8d8ac1 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b5221 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x8abf4062 omapdss_dpi_display_disable +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad66426 seq_release_private +EXPORT_SYMBOL vmlinux 0x8ae0b39f dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x8af12ae5 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8b045b12 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8b0fe3f7 __dev_printk +EXPORT_SYMBOL vmlinux 0x8b37821b do_splice_to +EXPORT_SYMBOL vmlinux 0x8b4c3a9e d_make_root +EXPORT_SYMBOL vmlinux 0x8b5eecd2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64c1c3 kick_iocb +EXPORT_SYMBOL vmlinux 0x8b6ece54 simple_getattr +EXPORT_SYMBOL vmlinux 0x8b7388c1 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b7babbf snd_info_register +EXPORT_SYMBOL vmlinux 0x8bb6b6b9 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x8bef91c5 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x8bfc9ded sk_common_release +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0bc6d1 kset_register +EXPORT_SYMBOL vmlinux 0x8c278dd7 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x8c31675e journal_start +EXPORT_SYMBOL vmlinux 0x8c4d6523 omap_dma_chain_a_transfer +EXPORT_SYMBOL vmlinux 0x8c58a811 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8c662859 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x8c72d2d3 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8c793c0b wait_iff_congested +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8cac985c kthread_stop +EXPORT_SYMBOL vmlinux 0x8cb23c19 set_groups +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cde44cb phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8ce03552 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8ce60539 fasync_helper +EXPORT_SYMBOL vmlinux 0x8d018f16 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x8d0e80f6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8d220d0b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x8d464eb2 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d86a730 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8d8edceb __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x8dac4129 dquot_commit +EXPORT_SYMBOL vmlinux 0x8db7654d mb_cache_create +EXPORT_SYMBOL vmlinux 0x8dc2a023 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x8dcb7108 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x8ddd5036 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e022407 netif_napi_add +EXPORT_SYMBOL vmlinux 0x8e0a32f7 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e2dfd3b blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e55848e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8e6f1b01 input_event +EXPORT_SYMBOL vmlinux 0x8e73d94c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8e77ddc5 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x8e8218d5 is_container_init +EXPORT_SYMBOL vmlinux 0x8ebafdba unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8ee6b282 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x8eec5f0b __frontswap_store +EXPORT_SYMBOL vmlinux 0x8f003e8c kill_fasync +EXPORT_SYMBOL vmlinux 0x8f22df3e xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x8f26ecee generic_file_llseek +EXPORT_SYMBOL vmlinux 0x8f2f44b6 noop_fsync +EXPORT_SYMBOL vmlinux 0x8f34a3f7 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8f3f5e14 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f57a159 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5bf374 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6ab814 of_find_property +EXPORT_SYMBOL vmlinux 0x8f6fde02 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f81a739 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fc1f741 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x8fc71bf4 tcp_child_process +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9024115d sk_free +EXPORT_SYMBOL vmlinux 0x9024cf43 bdgrab +EXPORT_SYMBOL vmlinux 0x902e5600 i2c_release_client +EXPORT_SYMBOL vmlinux 0x906a8da5 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x906eb982 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x90a76958 dev_crit +EXPORT_SYMBOL vmlinux 0x90a8a123 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d03ed1 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x90d38635 dev_addr_del +EXPORT_SYMBOL vmlinux 0x90d71479 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x90dd8341 bio_map_kern +EXPORT_SYMBOL vmlinux 0x90ed1717 registered_fb +EXPORT_SYMBOL vmlinux 0x90efe614 tcp_check_req +EXPORT_SYMBOL vmlinux 0x90f91617 free_buffer_head +EXPORT_SYMBOL vmlinux 0x911c96b3 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x9137c871 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9153f45d __ip_dev_find +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x916d0035 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917f3fe8 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x9180de5c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91922341 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x91ccb481 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x91e3a9a7 __frontswap_load +EXPORT_SYMBOL vmlinux 0x91e4b1e1 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x91e81ba5 aio_put_req +EXPORT_SYMBOL vmlinux 0x920008ba serio_unregister_port +EXPORT_SYMBOL vmlinux 0x920664c8 mempool_free +EXPORT_SYMBOL vmlinux 0x9210653d journal_revoke +EXPORT_SYMBOL vmlinux 0x9223349e phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923dfbaa i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x9264ae32 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x92673c64 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x9276b415 block_read_full_page +EXPORT_SYMBOL vmlinux 0x9276e2fd generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x92776493 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x929eecac __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae20bc i2c_master_recv +EXPORT_SYMBOL vmlinux 0x92bbc951 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x92e44a1c prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x92e46cbd blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x92f59183 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930692ff kernel_bind +EXPORT_SYMBOL vmlinux 0x93116b03 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93238763 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x93394611 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x93473ea0 phy_device_free +EXPORT_SYMBOL vmlinux 0x9396bdd2 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a83b76 thaw_bdev +EXPORT_SYMBOL vmlinux 0x93c8c450 dma_find_channel +EXPORT_SYMBOL vmlinux 0x93f66a6c frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x943e8fd2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x944b75d8 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x94644f2f path_get +EXPORT_SYMBOL vmlinux 0x9469fe16 bdev_read_only +EXPORT_SYMBOL vmlinux 0x946e2c58 tty_mutex +EXPORT_SYMBOL vmlinux 0x948549e7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x9493b6c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a8813c input_inject_event +EXPORT_SYMBOL vmlinux 0x94af632e complete_all +EXPORT_SYMBOL vmlinux 0x9526a4c8 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x9534cae4 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9540f91c ilookup5 +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955b1e4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x9584d204 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x95ae0ed7 _dev_info +EXPORT_SYMBOL vmlinux 0x95bd12f3 vfs_readlink +EXPORT_SYMBOL vmlinux 0x95c206b2 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x963276f3 input_register_device +EXPORT_SYMBOL vmlinux 0x964016fd snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x9652525a jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965ad1e4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x965bc19d __free_pages +EXPORT_SYMBOL vmlinux 0x96868818 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96b39b6e omap_start_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0x96b42322 genphy_update_link +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e4c2af mdiobus_scan +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9744aa1d keyring_clear +EXPORT_SYMBOL vmlinux 0x9752e51f dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x979374ab snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a52803 set_anon_super +EXPORT_SYMBOL vmlinux 0x97acbf44 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b5c256 __d_drop +EXPORT_SYMBOL vmlinux 0x97ba1397 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x97df1067 module_put +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980a912c grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x980cdc4a truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9828be45 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x98404389 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9895cb01 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x98993e07 init_special_inode +EXPORT_SYMBOL vmlinux 0x98a39f30 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x98c4ef1e ihold +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9907616c mddev_congested +EXPORT_SYMBOL vmlinux 0x991bda12 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x992e9917 nf_log_packet +EXPORT_SYMBOL vmlinux 0x9942b7ff elv_register_queue +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99537c09 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963d8ff bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x9967d6aa rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x996c2343 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x997185ba blk_free_tags +EXPORT_SYMBOL vmlinux 0x9979a055 cdev_alloc +EXPORT_SYMBOL vmlinux 0x998eee8f keyring_search +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ac59f4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c83212 path_is_under +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e63794 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a396cb3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9a4751e5 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x9a521154 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x9a5c7ab2 aio_complete +EXPORT_SYMBOL vmlinux 0x9a6cd279 clk_unregister +EXPORT_SYMBOL vmlinux 0x9a6f8b1b d_genocide +EXPORT_SYMBOL vmlinux 0x9a8dc6db lg_local_lock +EXPORT_SYMBOL vmlinux 0x9a9447ca xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x9aa787c0 fb_set_var +EXPORT_SYMBOL vmlinux 0x9aa9c607 nobh_writepage +EXPORT_SYMBOL vmlinux 0x9ab329c5 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9abae500 udp_seq_open +EXPORT_SYMBOL vmlinux 0x9abbdb69 clk_set_parent +EXPORT_SYMBOL vmlinux 0x9ad2a691 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9b164f05 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b875fad of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9b96e044 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bac370f dev_uc_sync +EXPORT_SYMBOL vmlinux 0x9bc0476e build_skb +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bfae2bc netdev_crit +EXPORT_SYMBOL vmlinux 0x9c054e18 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c15c011 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9c2913fc alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x9c2f63c7 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x9c581e49 dev_addr_init +EXPORT_SYMBOL vmlinux 0x9c5b17a5 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9c7077bd enable_hlt +EXPORT_SYMBOL vmlinux 0x9c91218d free_task +EXPORT_SYMBOL vmlinux 0x9c91f286 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x9c990c23 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x9c9e178c xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x9cb37472 arp_send +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cd2e7d0 gpmc_nand_read +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef9585 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d105722 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4949a9 free_netdev +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d729741 scsi_free_command +EXPORT_SYMBOL vmlinux 0x9d7980e4 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x9d9a88a2 register_con_driver +EXPORT_SYMBOL vmlinux 0x9dab65cd inet_shutdown +EXPORT_SYMBOL vmlinux 0x9db20882 blk_end_request +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1e9de7 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2c6cf4 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e969ad3 force_sig +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea03b33 dev_close +EXPORT_SYMBOL vmlinux 0x9eab9a23 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9ec6120e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x9ecaf7f9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9ed660f4 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edc694b set_user_nice +EXPORT_SYMBOL vmlinux 0x9ef7e5cc bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9efcbc32 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x9f11b5ac free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f435db0 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f4f4b27 dev_mc_del +EXPORT_SYMBOL vmlinux 0x9f6626f1 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x9f6f5fc7 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9f7e8ddf sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x9f8ea2a8 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f99d9bf ida_pre_get +EXPORT_SYMBOL vmlinux 0x9f9d0798 icmpv6_send +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbb9874 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe76a14 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x9ff5e8ae netlink_ack +EXPORT_SYMBOL vmlinux 0x9ff956af inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa00053ad generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa0114ac8 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xa01e320d __netif_schedule +EXPORT_SYMBOL vmlinux 0xa047dc17 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa054e5cd vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa06ee39e scm_fp_dup +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0a2c0ce scsi_device_put +EXPORT_SYMBOL vmlinux 0xa0a861fc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa0ad3ab5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceaa92 kmap +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d32e06 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa0e2d895 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa10177bb tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa126e4af elv_rb_del +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1684773 amba_device_register +EXPORT_SYMBOL vmlinux 0xa1817bc3 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa18f91d6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xa19ac325 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xa1b44aa9 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d5c041 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa1e59b2a bio_unmap_user +EXPORT_SYMBOL vmlinux 0xa1e73813 kfree_skb +EXPORT_SYMBOL vmlinux 0xa1fcc84a tty_register_device +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2359127 vfs_open +EXPORT_SYMBOL vmlinux 0xa23914cd __napi_schedule +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa267c1f2 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2867ac5 omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0xa28bbbaf bio_put +EXPORT_SYMBOL vmlinux 0xa28d9e7b key_revoke +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2aad002 amba_release_regions +EXPORT_SYMBOL vmlinux 0xa3019bb4 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa3087abc serio_interrupt +EXPORT_SYMBOL vmlinux 0xa30e6f35 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xa32acfa9 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33493ad tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33f9c8e seq_read +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa352c00d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36aa146 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xa3777688 dquot_enable +EXPORT_SYMBOL vmlinux 0xa4011430 send_sig_info +EXPORT_SYMBOL vmlinux 0xa41e0e4c simple_unlink +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa446abb5 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47b6c65 poll_freewait +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b3b85a sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4d415d7 clk_set_rate +EXPORT_SYMBOL vmlinux 0xa4dda7a3 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa4e045fa scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xa4e0778e input_set_capability +EXPORT_SYMBOL vmlinux 0xa4f2db5e genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xa5092120 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa522e619 tcf_register_action +EXPORT_SYMBOL vmlinux 0xa529e2c3 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa53a5ec2 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xa56210e0 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa563b76b sock_i_ino +EXPORT_SYMBOL vmlinux 0xa5747805 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa585e496 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa592980a scsi_put_command +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ab8a11 scsi_get_command +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5db18f9 sock_rfree +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6411cea unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa65c212c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa674ced5 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xa675436a bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68fbfef dev_uc_init +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ab1c43 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xa6b93b26 redraw_screen +EXPORT_SYMBOL vmlinux 0xa6c9bbfd unlock_rename +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa724db81 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xa7481f33 fsync_bdev +EXPORT_SYMBOL vmlinux 0xa7716564 d_add_ci +EXPORT_SYMBOL vmlinux 0xa785950a sock_create +EXPORT_SYMBOL vmlinux 0xa78b9195 nf_log_register +EXPORT_SYMBOL vmlinux 0xa7c87a60 mtd_concat_create +EXPORT_SYMBOL vmlinux 0xa7f2c5ea prepare_creds +EXPORT_SYMBOL vmlinux 0xa7f3f694 tcf_em_register +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8380d34 kernel_execve +EXPORT_SYMBOL vmlinux 0xa840f58a journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87b1011 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xa8cde9a7 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xa8f05fd2 try_module_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa908522b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa90bcb85 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xa94fc942 generic_write_end +EXPORT_SYMBOL vmlinux 0xa963babc snd_card_proc_new +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa9b504c9 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xa9b9f312 genphy_suspend +EXPORT_SYMBOL vmlinux 0xa9dc5272 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa9e008a7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa9e14cac generic_listxattr +EXPORT_SYMBOL vmlinux 0xaa021ae0 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xaa1158a7 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0xaa1db072 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xaa32b823 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xaa53517a kill_block_super +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa5eaeb7 kern_path_create +EXPORT_SYMBOL vmlinux 0xaa640f2f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa74d1b3 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xaa8d23c7 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xaa9f5b56 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaad120c7 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafd68a9 vfs_readdir +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab57f8b0 omapfb_update_window +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab895605 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xab9ed595 kobject_put +EXPORT_SYMBOL vmlinux 0xaba24935 proc_mkdir +EXPORT_SYMBOL vmlinux 0xaba4e1a5 bdevname +EXPORT_SYMBOL vmlinux 0xabb6c600 mount_pseudo +EXPORT_SYMBOL vmlinux 0xabba8c7b fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabfcfac5 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xabff516a pid_task +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac18e4ea kset_unregister +EXPORT_SYMBOL vmlinux 0xac36abc2 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xac5f113d cpu_all_bits +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xacafef80 amba_find_device +EXPORT_SYMBOL vmlinux 0xacc4824c skb_pad +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd69523 netif_skb_features +EXPORT_SYMBOL vmlinux 0xaceb9c69 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1041d7 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xad2af5e6 make_EII_client +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad8049d7 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xad80b2ef set_device_ro +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada48d8c sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xada6b3bc add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xada928b1 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadea832a lock_may_write +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xae22bff0 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xae434ffc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xae531f84 register_sysctl +EXPORT_SYMBOL vmlinux 0xae5f5492 register_exec_domain +EXPORT_SYMBOL vmlinux 0xae61e30f xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xae66c99a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae81bbd7 path_put +EXPORT_SYMBOL vmlinux 0xae9b7941 seq_escape +EXPORT_SYMBOL vmlinux 0xae9d7f8c scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xaea46535 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xaea9b5e8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xaeaa7655 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee9e4c8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xaf1a09f2 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xaf1fd789 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xaf31224d snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xaf3d3a0b writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf52da8d tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf99e34b ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xafa05144 omap_dss_register_driver +EXPORT_SYMBOL vmlinux 0xafdc99ae udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xb0052381 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb01d7636 get_fs_type +EXPORT_SYMBOL vmlinux 0xb02d67fd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xb0339533 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xb0532e93 sound_class +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e63bf2 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb0e6d6de call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb104a2d1 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xb108e6a3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xb1112068 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb126e37a udp_prot +EXPORT_SYMBOL vmlinux 0xb14761d5 user_path_at +EXPORT_SYMBOL vmlinux 0xb14897d9 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb16a1e3e inet_release +EXPORT_SYMBOL vmlinux 0xb16fe7b3 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb17a108d phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xb17d9cf7 ip6_xmit +EXPORT_SYMBOL vmlinux 0xb18e6948 omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1adf2b3 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d06b4d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb1d849da blkdev_fsync +EXPORT_SYMBOL vmlinux 0xb1e61df2 clear_nlink +EXPORT_SYMBOL vmlinux 0xb1ed6e20 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb214ef53 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xb250d9b0 vm_event_states +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2a90d75 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb2afc3d5 inet_getname +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cc71e9 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb318ec49 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb3356a4f single_release +EXPORT_SYMBOL vmlinux 0xb36e891c sk_run_filter +EXPORT_SYMBOL vmlinux 0xb371bda1 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb38263aa submit_bh +EXPORT_SYMBOL vmlinux 0xb3a08c40 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb3b0cd72 skb_unlink +EXPORT_SYMBOL vmlinux 0xb3fc1c7f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb438757a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb4419549 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb45ee96c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4a42f67 lro_flush_all +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4bdf334 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xb4c8f38a omap_dma_chain_status +EXPORT_SYMBOL vmlinux 0xb4d69f47 inode_init_once +EXPORT_SYMBOL vmlinux 0xb4d8ab86 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xb4def0f8 xfrm_input +EXPORT_SYMBOL vmlinux 0xb5080124 page_put_link +EXPORT_SYMBOL vmlinux 0xb52388e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb5435b58 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5738551 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb60cf95c filp_close +EXPORT_SYMBOL vmlinux 0xb60dca53 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xb64435c0 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xb64e07af gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb6557145 __netdev_printk +EXPORT_SYMBOL vmlinux 0xb661a04e vfsmount_lock +EXPORT_SYMBOL vmlinux 0xb663e77b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb699811d eth_type_trans +EXPORT_SYMBOL vmlinux 0xb69adc93 dev_add_pack +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7fd17 request_key_async +EXPORT_SYMBOL vmlinux 0xb6a84053 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb6afbc3f ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xb6b279ca blk_start_request +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cb4764 truncate_setsize +EXPORT_SYMBOL vmlinux 0xb70fbdb1 blk_put_queue +EXPORT_SYMBOL vmlinux 0xb72f8be8 d_alloc +EXPORT_SYMBOL vmlinux 0xb7504e0f read_cache_page +EXPORT_SYMBOL vmlinux 0xb7586226 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xb758ee43 check_disk_change +EXPORT_SYMBOL vmlinux 0xb75da1b2 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xb7692131 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xb77a7c47 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xb78b3626 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xb7a6cf61 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7d858e6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xb7ded971 default_llseek +EXPORT_SYMBOL vmlinux 0xb8026cbf inet_frag_find +EXPORT_SYMBOL vmlinux 0xb811e32e bioset_free +EXPORT_SYMBOL vmlinux 0xb8184db9 bio_pair_release +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81beaec snd_card_free +EXPORT_SYMBOL vmlinux 0xb81ecb7f omapdss_sdi_display_disable +EXPORT_SYMBOL vmlinux 0xb81fd3be idr_find +EXPORT_SYMBOL vmlinux 0xb82af13a lease_get_mtime +EXPORT_SYMBOL vmlinux 0xb82de169 proc_create_data +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb86a470c dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb897a616 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb89edda2 kunmap_high +EXPORT_SYMBOL vmlinux 0xb8a58b40 skb_append +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8ae0094 is_bad_inode +EXPORT_SYMBOL vmlinux 0xb8e74b14 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f317e5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb90b43a4 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xb90f8ffb page_symlink +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb949c954 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb96dd0f3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98fcb1e kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb9a457b3 netlink_unicast +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9ae18d5 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xb9c25982 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb9cbb8a4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xb9d6a701 generic_readlink +EXPORT_SYMBOL vmlinux 0xb9e1ea5c eth_header_cache +EXPORT_SYMBOL vmlinux 0xb9e52429 __wake_up +EXPORT_SYMBOL vmlinux 0xba330556 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xba35b3dd tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xbaac427c get_mem_type +EXPORT_SYMBOL vmlinux 0xbab17d04 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xbab92b91 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xbac6d33d splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xbae47e67 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xbaf04a46 devm_clk_put +EXPORT_SYMBOL vmlinux 0xbaf5d772 tty_throttle +EXPORT_SYMBOL vmlinux 0xbafcd342 blk_init_tags +EXPORT_SYMBOL vmlinux 0xbb07ade4 km_new_mapping +EXPORT_SYMBOL vmlinux 0xbb0f0e09 __put_cred +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb2643f0 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xbb2b4612 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xbb5b41d4 mmc_request_done +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb79c91e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbb7b043d kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaf74d7 sock_i_uid +EXPORT_SYMBOL vmlinux 0xbbe838bb fifo_set_limit +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc860222 gpmc_read_status +EXPORT_SYMBOL vmlinux 0xbcb53d9b neigh_destroy +EXPORT_SYMBOL vmlinux 0xbcdf680a scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xbd2abe00 scsi_unregister +EXPORT_SYMBOL vmlinux 0xbd31620c vfs_create +EXPORT_SYMBOL vmlinux 0xbd6b36d3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xbd92c690 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xbdb428ef mntput +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbdf7c9b7 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe15e650 write_one_page +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe390c04 dput +EXPORT_SYMBOL vmlinux 0xbe5fe92a get_gendisk +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe668b08 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xbe76f362 netdev_alert +EXPORT_SYMBOL vmlinux 0xbe8b28bb md_register_thread +EXPORT_SYMBOL vmlinux 0xbee7d4b2 snd_card_create +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefac0ef bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xbf1faebe mutex_trylock +EXPORT_SYMBOL vmlinux 0xbf202f87 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xbf491189 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf819c56 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaa7c32 do_map_probe +EXPORT_SYMBOL vmlinux 0xbfabafcf __devm_request_region +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfcc5245 skb_push +EXPORT_SYMBOL vmlinux 0xbfda3c40 migrate_page +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc015ce4a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc01be5ff fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc05f70f7 inet_addr_type +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06ec2c8 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08b4157 simple_map_init +EXPORT_SYMBOL vmlinux 0xc08f8992 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a7098e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xc0bf1103 input_register_handler +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d3b74c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc0ef970d snd_component_add +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131379f snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xc1481fd6 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc14f39e6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc1509363 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc150cca3 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xc1577e53 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17b6a0e try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xc1903cb3 sget +EXPORT_SYMBOL vmlinux 0xc1b76967 release_pages +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d0cf50 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xc21334b9 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc2220e8d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc25076c0 kobject_del +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2748881 kobject_init +EXPORT_SYMBOL vmlinux 0xc2a852a0 clk_disable +EXPORT_SYMBOL vmlinux 0xc2bd012d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc2cb4dba mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e058a4 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f13a1f request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc37d20b6 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc37d2d7b mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc38246c3 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc38724d3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc3890b97 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc3abf8b3 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc3c94b6b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc3ed71dd scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc4185c4f flush_dcache_page +EXPORT_SYMBOL vmlinux 0xc41d21ea tc_classify_compat +EXPORT_SYMBOL vmlinux 0xc42b2293 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xc42d74a3 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xc45ef616 idr_for_each +EXPORT_SYMBOL vmlinux 0xc48413f0 init_buffer +EXPORT_SYMBOL vmlinux 0xc491b540 journal_force_commit +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49ad5f1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc49d6fa1 sock_no_getname +EXPORT_SYMBOL vmlinux 0xc4a923e5 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xc4ae6dbf __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xc4beebba blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xc4e8b63a bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc50fff86 security_mmap_file +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc5337b72 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc539f901 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xc54bc3c9 dqstats +EXPORT_SYMBOL vmlinux 0xc556ef02 kmap_high +EXPORT_SYMBOL vmlinux 0xc5669f48 request_firmware +EXPORT_SYMBOL vmlinux 0xc56fcffc save_mount_options +EXPORT_SYMBOL vmlinux 0xc5b51a25 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc5b6ea0b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc5b80112 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc5b86b53 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xc5c8c8ad omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xc5d514f4 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f94b5d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc5fa683d inet_frags_init +EXPORT_SYMBOL vmlinux 0xc601f8df snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0xc6042d35 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc6184045 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6338ba2 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc64348f0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc65364f9 dql_completed +EXPORT_SYMBOL vmlinux 0xc672a242 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xc6af2549 input_release_device +EXPORT_SYMBOL vmlinux 0xc6c8dc10 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc70756d3 dev_uc_add +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc74600f5 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xc75db041 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc7623b1d ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0xc7751111 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a9b21c snd_jack_report +EXPORT_SYMBOL vmlinux 0xc7aff3e6 uart_match_port +EXPORT_SYMBOL vmlinux 0xc7e76a1f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ed8b7d netdev_err +EXPORT_SYMBOL vmlinux 0xc80dfa31 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83bbefc register_sound_special_device +EXPORT_SYMBOL vmlinux 0xc83d9242 sock_wfree +EXPORT_SYMBOL vmlinux 0xc8452441 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85edb9e snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xc86b0738 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc89f5752 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc8b1be3b block_write_end +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b823b3 dev_load +EXPORT_SYMBOL vmlinux 0xc8f4a67f textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc90c7518 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc90d6ce5 skb_store_bits +EXPORT_SYMBOL vmlinux 0xc9142293 omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0xc921235e __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xc9243de6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xc9442b59 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xc95830f6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc9773d02 __f_setown +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a39560 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xc9e25f28 d_set_d_op +EXPORT_SYMBOL vmlinux 0xc9e4caab netdev_emerg +EXPORT_SYMBOL vmlinux 0xc9f2d860 skb_gso_segment +EXPORT_SYMBOL vmlinux 0xca031897 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xca1e3f57 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xca49eb3d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xca4b4fd6 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xca515475 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca650ef4 scsi_print_command +EXPORT_SYMBOL vmlinux 0xca7e08c8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xcab17e69 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xcacc4278 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xcaecf806 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xcb53f3f6 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xcb5537c0 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xcb5bf683 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb736482 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd83b43 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xcbe1d03c sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xcbf35244 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xcbf58bc6 snd_timer_close +EXPORT_SYMBOL vmlinux 0xcc0072a8 tty_port_open +EXPORT_SYMBOL vmlinux 0xcc18d50c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3e392d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc79c19c sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc9a916b amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xccb775f2 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcce29370 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xccfbb364 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xcd02bfbc inet_bind +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd46ca3c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xcd4b732f bit_waitqueue +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd67f8b6 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xcd76d8e7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xcd7cb470 arp_tbl +EXPORT_SYMBOL vmlinux 0xcda78561 register_filesystem +EXPORT_SYMBOL vmlinux 0xcdb87f8e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xcdc5cec5 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xcddc09eb console_start +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce09d5c8 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce24e23e d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2870f0 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce587748 nand_correct_data +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce9a18f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xce9ab646 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xcea899ea down +EXPORT_SYMBOL vmlinux 0xcece52fd key_link +EXPORT_SYMBOL vmlinux 0xcedacdf2 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xcef3576a cpu_user +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf21e89e request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xcf25926d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcf63a406 dev_get_flags +EXPORT_SYMBOL vmlinux 0xcf7f7dcd bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xcfa473f6 dcb_setapp +EXPORT_SYMBOL vmlinux 0xcfafee12 deactivate_super +EXPORT_SYMBOL vmlinux 0xcfbac5ae snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xcfbee619 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff08833 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd03532f4 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd03bdc45 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0446541 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd0600b30 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd07767a4 phy_attach +EXPORT_SYMBOL vmlinux 0xd07b915b ip_ct_attach +EXPORT_SYMBOL vmlinux 0xd07db919 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xd09cfc90 blk_register_region +EXPORT_SYMBOL vmlinux 0xd09dc10f simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b5acd3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0da52b2 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fd51df bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd0fed2d4 follow_pfn +EXPORT_SYMBOL vmlinux 0xd113502d sk_wait_data +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd152bc0f md_check_recovery +EXPORT_SYMBOL vmlinux 0xd1576dd3 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xd162f540 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xd169b8ba dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18e33d3 sock_no_connect +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a139fe lg_global_lock +EXPORT_SYMBOL vmlinux 0xd1c3a60a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd1ca1731 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd1eef71f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd20846f5 ip6_route_output +EXPORT_SYMBOL vmlinux 0xd20ce1d0 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd236178f kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xd24949a0 mpage_writepages +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26338c6 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2ac02c6 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xd2cee4aa shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd2e3089f lock_sock_nested +EXPORT_SYMBOL vmlinux 0xd309792a qdisc_list_del +EXPORT_SYMBOL vmlinux 0xd3149376 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3610cf3 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd369192d elv_rb_add +EXPORT_SYMBOL vmlinux 0xd36a27d6 __devm_release_region +EXPORT_SYMBOL vmlinux 0xd37bf41f snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xd382019f register_sysctl_table +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd39f3e3f sock_kfree_s +EXPORT_SYMBOL vmlinux 0xd3cb82d2 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd42327ee of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xd4331c64 sock_update_classid +EXPORT_SYMBOL vmlinux 0xd439fd2e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xd460dda3 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xd4a644c3 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd4bc7c9b snd_cards +EXPORT_SYMBOL vmlinux 0xd4c2dd3b snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xd4eb7456 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xd50071f4 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xd50e5ee3 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd52a49b1 kern_path +EXPORT_SYMBOL vmlinux 0xd52b6ee3 mdiobus_free +EXPORT_SYMBOL vmlinux 0xd550a602 journal_flush +EXPORT_SYMBOL vmlinux 0xd561cbed dev_change_flags +EXPORT_SYMBOL vmlinux 0xd56e1b60 tty_set_operations +EXPORT_SYMBOL vmlinux 0xd56e9485 omap_set_dma_dest_index +EXPORT_SYMBOL vmlinux 0xd5700053 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xd5879a5f xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xd591dbba unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5d7e375 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd5d91652 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd5dc10e2 genphy_read_status +EXPORT_SYMBOL vmlinux 0xd5e8ef6b blk_make_request +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62eca04 cont_write_begin +EXPORT_SYMBOL vmlinux 0xd63494a3 dump_seek +EXPORT_SYMBOL vmlinux 0xd63e53eb kern_unmount +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd663b162 d_find_alias +EXPORT_SYMBOL vmlinux 0xd6649268 lock_rename +EXPORT_SYMBOL vmlinux 0xd6656da2 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd678233c journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd69ec7fe __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd6aa4d6d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xd6c6295c mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xd6d42d27 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd6ec9545 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0da41 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xd715fbf2 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd73281bc max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd757bca8 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd75cdbcc make_bad_inode +EXPORT_SYMBOL vmlinux 0xd76b9a0a ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78e13b9 dev_gro_receive +EXPORT_SYMBOL vmlinux 0xd79385d7 dev_notice +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ad4a70 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd7c0663b set_nlink +EXPORT_SYMBOL vmlinux 0xd7c80428 neigh_for_each +EXPORT_SYMBOL vmlinux 0xd7e2bffb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7fa46a1 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xd8348d73 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd861d45f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd886d53e netdev_change_features +EXPORT_SYMBOL vmlinux 0xd887e786 mmc_erase +EXPORT_SYMBOL vmlinux 0xd8b984c9 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd8bacb7a inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8dc1c94 input_grab_device +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f040f1 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd90503ca snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xd91846ff nf_log_unregister +EXPORT_SYMBOL vmlinux 0xd918d180 nf_afinfo +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9437eb2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96b6dd1 omap_device_get_by_hwmod_name +EXPORT_SYMBOL vmlinux 0xd96c3d8c skb_trim +EXPORT_SYMBOL vmlinux 0xd9850607 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9982048 ip_route_input_common +EXPORT_SYMBOL vmlinux 0xd9aa27a2 mempool_create_node +EXPORT_SYMBOL vmlinux 0xd9cd8ddb map_destroy +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9e15faa security_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e1a956 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e35cc6 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd9f8bbe1 misc_register +EXPORT_SYMBOL vmlinux 0xda03e1fe __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xda0e48f1 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xda22705e tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xda278249 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xda58c396 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xda5af5eb snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xda677b54 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xda6bff42 ps2_end_command +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaadc051 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xdab04b53 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xdab39954 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xdb0df8da generic_setxattr +EXPORT_SYMBOL vmlinux 0xdb2178c7 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb68153f udp_poll +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb715046 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xdb71b872 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb779077 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf667f __elv_add_request +EXPORT_SYMBOL vmlinux 0xdbe2f014 bdi_init +EXPORT_SYMBOL vmlinux 0xdbe48098 fb_blank +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc46b485 clk_register +EXPORT_SYMBOL vmlinux 0xdc5622ba simple_write_end +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc798d37 __mutex_init +EXPORT_SYMBOL vmlinux 0xdc8d9da4 kunmap +EXPORT_SYMBOL vmlinux 0xdc963c67 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd69f39 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0e4d14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd515a30 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xdd6056ff fail_migrate_page +EXPORT_SYMBOL vmlinux 0xdd780af7 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd9ab324 d_drop +EXPORT_SYMBOL vmlinux 0xddb1ed57 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xddc6405f mount_bdev +EXPORT_SYMBOL vmlinux 0xddcab48c mpage_readpage +EXPORT_SYMBOL vmlinux 0xdddf622a set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xde0bb028 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xde15c042 omap_set_dma_src_index +EXPORT_SYMBOL vmlinux 0xde2ae68e tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xde3c68a6 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xde4becba dcache_readdir +EXPORT_SYMBOL vmlinux 0xde53677e unlock_page +EXPORT_SYMBOL vmlinux 0xde570f5b find_inode_number +EXPORT_SYMBOL vmlinux 0xde692d94 omap_get_dma_chain_src_pos +EXPORT_SYMBOL vmlinux 0xde8c763d cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdecfc0ed blkdev_get +EXPORT_SYMBOL vmlinux 0xded8cab6 log_wait_commit +EXPORT_SYMBOL vmlinux 0xdef169ec scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdf006bb2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xdf00e7e2 journal_restart +EXPORT_SYMBOL vmlinux 0xdf1ef69f wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf667daf vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdf69d64c ps2_init +EXPORT_SYMBOL vmlinux 0xdf76946c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9a3246 netif_device_attach +EXPORT_SYMBOL vmlinux 0xdfa6d098 input_get_keycode +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfeb4e61 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xdffbbd26 netif_device_detach +EXPORT_SYMBOL vmlinux 0xdffe8e4e unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe02220c9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe02ae9d2 release_firmware +EXPORT_SYMBOL vmlinux 0xe04a3d7a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe04ac069 dev_addr_add +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0519376 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06cfc57 bdput +EXPORT_SYMBOL vmlinux 0xe070d806 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0a81135 secpath_dup +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bdcc84 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe0eb38a8 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xe0f6aa9e nand_default_bbt +EXPORT_SYMBOL vmlinux 0xe106154f omap_vram_get_info +EXPORT_SYMBOL vmlinux 0xe1080dbd tty_write_room +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f4561 drop_nlink +EXPORT_SYMBOL vmlinux 0xe12bd949 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xe1644b2e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe166646b dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xe16b893b mutex_lock +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe19c51cb lookup_hash +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe213222b unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe216b261 elv_add_request +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2441279 d_rehash +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2554df8 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe25a3207 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe25caca2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xe296d233 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xe2a3e59f km_state_notify +EXPORT_SYMBOL vmlinux 0xe2b90045 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xe2c179e7 udp_disconnect +EXPORT_SYMBOL vmlinux 0xe2c37258 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xe2d1913e tcf_action_exec +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e48d17 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2ed045e of_parse_phandle +EXPORT_SYMBOL vmlinux 0xe2fa877f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3225c33 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xe33a579a netlink_set_err +EXPORT_SYMBOL vmlinux 0xe33f2237 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xe34b4242 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe387fdf9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xe38ae976 d_alloc_name +EXPORT_SYMBOL vmlinux 0xe3a1d352 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe3d291a5 tty_port_close +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dd24a5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe40abcfa mmc_start_req +EXPORT_SYMBOL vmlinux 0xe4127664 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe4394876 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe45acc3d pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe460df09 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xe47f8f59 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4b41f7c snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xe4c4089d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4cb59ca __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe4cca265 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe4e1804f xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xe4e22326 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xe4ff8d44 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe50272d8 noop_qdisc +EXPORT_SYMBOL vmlinux 0xe5029346 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe5074439 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe50acac2 neigh_update +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe522e2f3 dev_driver_string +EXPORT_SYMBOL vmlinux 0xe5231ae1 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe54dbdc3 follow_down_one +EXPORT_SYMBOL vmlinux 0xe55eec63 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59e6dd7 vfs_rename +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d58c84 irq_set_chip +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5df5121 skb_checksum +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fcef47 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe6317d75 input_unregister_device +EXPORT_SYMBOL vmlinux 0xe631934d bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe6336a29 unregister_console +EXPORT_SYMBOL vmlinux 0xe671b058 iget_failed +EXPORT_SYMBOL vmlinux 0xe67409c1 mii_link_ok +EXPORT_SYMBOL vmlinux 0xe6744a89 omap_clear_dma +EXPORT_SYMBOL vmlinux 0xe691b348 dev_get_stats +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69e3856 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xe6a27fba wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xe6beae45 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6d0fd38 do_sync_read +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fbe96e proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7144d32 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe72a5c93 vm_mmap +EXPORT_SYMBOL vmlinux 0xe73d0fde sleep_on +EXPORT_SYMBOL vmlinux 0xe74f8a14 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xe7576dfb phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xe761b2cc netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xe76e19b8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9e446 pipe_to_file +EXPORT_SYMBOL vmlinux 0xe7af7153 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe7d42d0b delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f4e337 nand_lock +EXPORT_SYMBOL vmlinux 0xe80c9191 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe80e8691 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xe815c6b6 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xe82d1c87 log_start_commit +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87ed1ce idr_replace +EXPORT_SYMBOL vmlinux 0xe893c4af snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xe8a99d5e dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bf783c mii_check_media +EXPORT_SYMBOL vmlinux 0xe8d0683c write_cache_pages +EXPORT_SYMBOL vmlinux 0xe8d63b2e generic_file_open +EXPORT_SYMBOL vmlinux 0xe8e6dd74 block_commit_write +EXPORT_SYMBOL vmlinux 0xe9046d8e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe90496d6 eth_header +EXPORT_SYMBOL vmlinux 0xe9068600 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94605ac dentry_unhash +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96b35d0 get_disk +EXPORT_SYMBOL vmlinux 0xe96d85a2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xe96f8e59 sock_no_poll +EXPORT_SYMBOL vmlinux 0xe97d7c6b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xe97ec086 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe9b05f86 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe9ce41b1 init_net +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1970bc kmem_cache_create +EXPORT_SYMBOL vmlinux 0xea204ef3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xea3b6c42 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xea6c417d rtnl_notify +EXPORT_SYMBOL vmlinux 0xea6f48d1 clear_inode +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea876945 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9fb9df rename_lock +EXPORT_SYMBOL vmlinux 0xeac417f7 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xead49e27 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaea334a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xeb15ce9e journal_init_inode +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb378013 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xeb3cb802 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb61ec51 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xeb959693 flush_signals +EXPORT_SYMBOL vmlinux 0xeb98fe8d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xeba303f6 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebcc935c of_dev_get +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebf780da uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfe95db journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec26135b tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xec3cb70c inet_stream_ops +EXPORT_SYMBOL vmlinux 0xec475a80 km_state_expired +EXPORT_SYMBOL vmlinux 0xec485a97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6a4d04 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xec9f1bf9 skb_put +EXPORT_SYMBOL vmlinux 0xecba1490 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xecbcf115 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xecd85338 md_error +EXPORT_SYMBOL vmlinux 0xece8faf6 nla_reserve +EXPORT_SYMBOL vmlinux 0xed266cb7 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed37348c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xed3a93ab fd_install +EXPORT_SYMBOL vmlinux 0xed44b99c xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xed854dac omap_stop_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc338b8 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xeddbf3d5 kthread_bind +EXPORT_SYMBOL vmlinux 0xedecd5af mii_check_link +EXPORT_SYMBOL vmlinux 0xedf8b17c do_splice_direct +EXPORT_SYMBOL vmlinux 0xee025581 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee15ff03 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee3b0e8f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xee3f35e9 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xee4b3e38 create_proc_entry +EXPORT_SYMBOL vmlinux 0xee4fd7b1 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xee596802 generic_write_checks +EXPORT_SYMBOL vmlinux 0xee861386 security_path_link +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed89d32 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xeedff491 __break_lease +EXPORT_SYMBOL vmlinux 0xef26c159 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xef3910dc d_obtain_alias +EXPORT_SYMBOL vmlinux 0xef3bc247 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xef75f942 read_cache_pages +EXPORT_SYMBOL vmlinux 0xef7b8cd9 fb_get_mode +EXPORT_SYMBOL vmlinux 0xefb66a95 omap_request_dma_chain +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff179f1 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xeff49f37 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xeffc3e12 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0134c20 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf068c994 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xf0881858 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xf09b45fb seq_puts +EXPORT_SYMBOL vmlinux 0xf0cbf579 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xf0cc070f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xf0d2216b dquot_resume +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0f9e550 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xf0fc826c new_inode +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf10b7955 stop_tty +EXPORT_SYMBOL vmlinux 0xf1192185 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf125fe83 module_refcount +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1c700d1 mmc_add_host +EXPORT_SYMBOL vmlinux 0xf1ca44c6 tty_register_driver +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcf3fd nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1eb42b2 napi_get_frags +EXPORT_SYMBOL vmlinux 0xf1f44778 scsi_register +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210b80f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf21bc94d set_binfmt +EXPORT_SYMBOL vmlinux 0xf2251d49 vfs_write +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25a94dc genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf26df746 omap_vram_free +EXPORT_SYMBOL vmlinux 0xf295ca65 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b80c28 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xf2b9ed2b give_up_console +EXPORT_SYMBOL vmlinux 0xf2e0a73a snd_card_unref +EXPORT_SYMBOL vmlinux 0xf2e5a880 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf2f2a569 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf2f63e74 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31c8008 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xf3227ba1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf3234334 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf351cb1f vfs_llseek +EXPORT_SYMBOL vmlinux 0xf3559cf7 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf388944d file_sb_list_del +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390e2a6 blkdev_put +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3a3e15b page_address +EXPORT_SYMBOL vmlinux 0xf3a56dc6 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e0d359 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf3e2b970 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf3f70af0 inet_listen +EXPORT_SYMBOL vmlinux 0xf3fffbc8 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf4076a1c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf409e08a filemap_flush +EXPORT_SYMBOL vmlinux 0xf4104a26 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf44c2e0b freezing_slow_path +EXPORT_SYMBOL vmlinux 0xf45cbd76 kill_pid +EXPORT_SYMBOL vmlinux 0xf471a5c2 blk_put_request +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4a1427e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfcc97 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xf4e7f4b0 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f37196 dst_alloc +EXPORT_SYMBOL vmlinux 0xf4ffea60 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf51212c4 i2c_use_client +EXPORT_SYMBOL vmlinux 0xf52e15c1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5784987 con_is_bound +EXPORT_SYMBOL vmlinux 0xf5a3e1c6 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf5ae3f81 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5cebce3 eth_header_parse +EXPORT_SYMBOL vmlinux 0xf5d70668 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xf5df134c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60fec9f ether_setup +EXPORT_SYMBOL vmlinux 0xf61cdfc1 __page_symlink +EXPORT_SYMBOL vmlinux 0xf62a388f backlight_force_update +EXPORT_SYMBOL vmlinux 0xf633ce9f lock_sock_fast +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf646f89e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xf647f06a ppp_register_channel +EXPORT_SYMBOL vmlinux 0xf648dfe6 may_umount +EXPORT_SYMBOL vmlinux 0xf6511f4c udp_sendmsg +EXPORT_SYMBOL vmlinux 0xf6761e31 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xf67c24f2 mount_nodev +EXPORT_SYMBOL vmlinux 0xf67c8741 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf698e12f genl_unregister_ops +EXPORT_SYMBOL vmlinux 0xf6a3253b fb_class +EXPORT_SYMBOL vmlinux 0xf6a7dceb phy_start +EXPORT_SYMBOL vmlinux 0xf6b8567d downgrade_write +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d046da key_put +EXPORT_SYMBOL vmlinux 0xf6d7e5d6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6eef04d inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf74ecc5d insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75d7990 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf777397f __bforget +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78306d3 d_validate +EXPORT_SYMBOL vmlinux 0xf78478a4 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf792d7e3 kobject_get +EXPORT_SYMBOL vmlinux 0xf794311c mntget +EXPORT_SYMBOL vmlinux 0xf79c9fa3 omap_vram_alloc +EXPORT_SYMBOL vmlinux 0xf7c61815 get_omap3_evm_rev +EXPORT_SYMBOL vmlinux 0xf7dc813f iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xf7e7f2e8 register_netdev +EXPORT_SYMBOL vmlinux 0xf7f81131 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf7fdc84e km_query +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf835758f md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf87a8b2b ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8c8ab69 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf909b203 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93498fd input_free_device +EXPORT_SYMBOL vmlinux 0xf969cf8b arp_invalidate +EXPORT_SYMBOL vmlinux 0xf990b603 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xf9939fc2 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad6c2a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xf9cbd845 journal_forget +EXPORT_SYMBOL vmlinux 0xf9d5ee34 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf9dc42f9 seq_open +EXPORT_SYMBOL vmlinux 0xf9de5dc8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ef0b8e mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xfa082128 down_interruptible +EXPORT_SYMBOL vmlinux 0xfa3643fb omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xfa3ad38e kmap_atomic +EXPORT_SYMBOL vmlinux 0xfa585a30 find_or_create_page +EXPORT_SYMBOL vmlinux 0xfa660e3f __bio_clone +EXPORT_SYMBOL vmlinux 0xfa74d265 datagram_poll +EXPORT_SYMBOL vmlinux 0xfa8af8e0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfac32472 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xface0d6a phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaff1690 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xfb26ccdb kmem_cache_size +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb86ff7 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xfbdaf097 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbf3d8bd mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfbfe4e28 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1a2583 md_write_end +EXPORT_SYMBOL vmlinux 0xfc1d7daf inc_nlink +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc618f00 tcp_connect +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc8b4bc7 sock_map_fd +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcd7aa94 inet_select_addr +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd023abd tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xfd13b9e8 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xfd20ed22 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xfd2b8b1a nf_register_hook +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd59ffa7 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd67f965 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd786d6d scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xfd875215 commit_creds +EXPORT_SYMBOL vmlinux 0xfd9ddd0c mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfde5b4d5 setup_new_exec +EXPORT_SYMBOL vmlinux 0xfde6bb92 dquot_file_open +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe3c6b36 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfe4735ec bd_set_size +EXPORT_SYMBOL vmlinux 0xfe53868b skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe634f58 add_wait_queue +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfeb02436 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfedffd86 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff10f506 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xff13d63a journal_update_format +EXPORT_SYMBOL vmlinux 0xff1d6ed9 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22095d neigh_ifdown +EXPORT_SYMBOL vmlinux 0xff2e71b7 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xff5cb631 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff856324 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xff97e7db dquot_scan_active +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xffec12b9 mdiobus_register +EXPORT_SYMBOL_GPL crypto/af_alg 0x448a2597 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x479082cb af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x75aded5d af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x7a27c32b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8210240c af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa9c71490 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xc4d0e17a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf623e43 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x4cfb2bae async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd8e6cd50 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf7665dc5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa944dc18 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xbf506b63 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x08cfb5bd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x172898d6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa0d80ce7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6371b89 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x030377e4 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x74e1b715 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3f356d99 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x16c275b6 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x2ac14d22 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6d17c2b1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7a9605e9 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x85857910 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c760d75 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb3e09678 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb9650f5c cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xc2a4ddb4 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xde0a84c2 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x581d98a0 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 0xc8d74ff8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc87914f twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xdfee5ad0 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0efc5a59 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11296b63 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12e28f6a ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13b679c1 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x25812008 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49656714 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ba65a6c ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e8144e5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58adbbe5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c064a6a ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60558ef0 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63f03bcd ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x775b2bec ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a9e5aff ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa15dfad2 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xed582fda ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf119a366 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf803a861 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x723f93c9 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x7c583119 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cef45fb bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ec3791b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x280d2e1c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2f77fbe3 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ac8ba43 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4dbb4224 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x54646bb7 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5689645e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f2db6dd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97192d6d bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa6db42e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1a8f98b bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcec6da0d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc911c6d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea85ea0e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2b23fe31 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2ee5f450 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6c4c6269 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x80fef350 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8266886e btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x86b016df btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7127890 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbc82f2bc btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc51d7937 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xeec950e8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x08da9925 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6bfe7a37 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8b129122 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9a649faf extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xaaa1de2b extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xad3b9e7a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb414a6f3 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbfca5387 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc00b77e2 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc6dad6a7 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdadb03f7 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xde7662b2 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x844db1d1 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa01e6ca2 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x63653845 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd34ec0ff __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d41d914 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7db824f drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e7a3488 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x208f711b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2120e0b3 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30cd9604 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37bd8671 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5007668d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x52e1d863 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5da2265c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x672328ca hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bc243ee hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7470b191 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x789cbd87 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7ede4994 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f82191 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x939f838f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c75b1b hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95bba2d7 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a2b8fa5 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d7fde02 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe0bfd46 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1a1ad5f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9c050b8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6f24079 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda35a47d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda3be655 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4dd3a07 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb408504 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf8c7caea hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfea5a078 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xe0c34d78 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x793a2138 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcedbbfe7 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0adf520d usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb629ac8e usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc46b1008 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xed7abb64 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x07fc5c71 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0c87de3e hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17fd3bf7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2e736400 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x86aaa356 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa91e7285 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb44126c5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe8cfc43 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8fb98f4 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8afc54d hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdcf41bdd hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d90b4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf7e62f71 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b398f3c i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0fda20fe i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2db12895 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x44daf467 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb7c4906e i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd09ed817 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd1d58f99 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdc3314ec i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf5b4b83a i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x38b83171 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x83bbaa67 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbf2723ae i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc326d507 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0acd77a5 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x10a8dddb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bee2d53 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27594f1b iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e42fb8a iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd802c3 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84999b75 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c6a156e iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95d88a8c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a13d6d6 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xacb183f5 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb76b1767 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc44bbca3 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8cb5645 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6ad34c6 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x10ea3c7f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xfe607136 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x25d89210 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeadcfa74 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeb08bb8a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1dfc6872 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b706391 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4439c4a2 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ba4466a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x761a5b30 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x78b0290f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7b1a406c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7cf88721 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84d24414 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbab05bae wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd70ff1e9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2c5145a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x02f24063 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2a8561ff gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2ae896da gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x54d0ad5d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x58d0e44d gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e56513d gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x60354917 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6317d252 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x727b85f4 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8f7586dc gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb89a7379 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbd9252a0 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc30ee115 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc31d22e5 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc744e2dd gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb7e554a gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xea4c1594 gigaset_start +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe39eaf6f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x134887a2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd50909e3 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x15f98a28 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x70f9ca69 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb1f99e44 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc691780d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcfcc85cb dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe5552caf dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2dc9297c dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xf35b8892 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xe27ade15 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x6a419da4 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xbf524f7e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x6e4b83c9 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xcb0cf4da tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x97ae8ffb tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xcbc01c70 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x67f7a95d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x12a19713 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdc01c2c1 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x422aa049 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xe9802e9d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0xc5cededb simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x0ddb8a94 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x819f2772 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xe3f2b89d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x01dd0791 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0f3f4b68 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x101acc34 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2cb3fff5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3aba2661 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x50820dd8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x654b791a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65db318d smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6b5675ab smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7584386d smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7efd7b1e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8efb3c93 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa1d3b2c5 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd715cd3a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xecb50843 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xef2fad99 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8ae8afe smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004a37fd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x05fb336e rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09f74e5d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x15deac8c rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e728a68 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x363fbd6a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x426281fa rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4654f3b0 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69e2797b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84fc67ee rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ae043ce ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a8f4780 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa03c87da ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xad8eec82 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfc9e5b1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd8368e9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb7d8b1b rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0d4d6712 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1b6015a6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1d59f776 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x28bfe541 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x36dab4a1 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x453d5539 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4784f8fa cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x63cf1f82 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x68fbdde1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d9837a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x902b3909 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9eca44cf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae3d8a24 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc27caf03 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd9f45a32 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe2e3fee7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf5490e85 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfb43dcaa cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfba3709d is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03588dab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x07538dff em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0ddac052 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0fe6c176 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2d3006cf em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4489c064 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x56878bb7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6ec1abd7 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x81065cb5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8e91e284 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x97cc4b82 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd62b5186 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf046f7e7 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xfba71ace em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x090b7ab2 omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x3f08714d omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x87006df4 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xd5aa61c6 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xe168e379 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x07dbd221 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x166432e6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x197321db tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd9f31275 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x01935f6d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4102273f v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4cd954d4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x51d0e57d v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xafc05ea4 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xe092a3cd v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x086271c0 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x797dff3b v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x8caf9728 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf3af94c0 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01f7bfeb v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1c7b6d56 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b575aba v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b731300 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x588caf77 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69f8209c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6aaa332a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x78bb71d5 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaaecaff9 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe3179acc v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe1c0a9a v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe8db231 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x064c7624 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1045ccc2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x14b50ba9 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x15ad7d9e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1e325a93 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20db1203 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x23138746 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2ac6a0c5 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x373da88a videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3c64079d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4993207e videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e17b589 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5324069c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5bb787db videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5c0b0651 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83ac9ba6 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8a1c09ae videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8f830bd2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9f93cf5b videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xba789c63 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xbb744607 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed1325ed videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf03e3036 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf867dee8 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x35547fac videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x7accad9d videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9a065738 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xe7065ea9 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x244bb4c1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x41c9ae39 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xe5ceccc3 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0d17162c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0f52c3b3 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x52f877ac vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x78865444 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82715c36 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8cb3c35a vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9536c6bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9a59f274 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9eac1719 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa01f5ffd vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xaa4cff71 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xab00da2e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xafe1ed30 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb0f1410b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe6e7aaaf vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xed3e4767 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xfc8f6ddc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x8905f9da vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe9da6780 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x4bf93c7f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78b7b26c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xa8562cf1 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xbbf7f600 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xee6df16c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x086399fc vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x029b4654 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2e3c91ba v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x32aa7c72 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x43a3e76a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4d4cbc63 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4f8b43ca v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x52ee7a7e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5ee3727d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7905874a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7d32218a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a0bc99f v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x90887e81 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x992211b2 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6503fbb v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbed4431e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd1525803 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5bfcfc6 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdb3cb1cc v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5612e59 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xee3b720a v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf51ddfaa v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfe6ed6b2 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3a0f8e25 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb9ef683b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbde8001c lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6494d669 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7146beb3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xac546478 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb0a46496 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb2ce756b lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd0172557 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdfe2ece2 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x25f0e9b1 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x398a339a mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe69799e0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x10488d64 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x23dee731 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25782377 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x462dc3c5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e236ac0 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8c40a54c pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9cd5d160 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd33bea88 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdd17fe6f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2f24813 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xebfe860b pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x33856c47 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x93b8a59b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x40afb19d pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9da4bce2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdc39c830 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe21faa5b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff434733 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x20a43ed6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x77e99fe0 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ad3bfd1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x995fb7f4 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd8d719b8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1b27e336 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbc63ace7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc92b3055 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xca2af4b8 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x368f9dce ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1b5948f9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x659437b0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x68aed3e6 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x85192d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8c230d62 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdc1c6ef3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf63d9ebc enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0f90d799 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x145ac57d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3179986e lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3cf43c19 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb65da669 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xce02309c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xded86683 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5efd0d03 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xf552cd54 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x23d59dbd sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d7a52e5 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c60d1b6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7d125b37 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7e30c6d9 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfe8b52dc sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2ecad99a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x712ec32f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd7b4b136 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x038f3a9b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5348628a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xec8057e0 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0830ee4c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9d2d4170 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xca0ad797 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdbe3c031 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x82c38dc2 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x27e98bd3 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x29528f6f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18ce2ab1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e40bb38 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2745d1da ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d79a95a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e35b9ae ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bbe66b3 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d0481dc ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x821869e1 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x995d7ef7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaee05fd3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbed8177e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc39b86b4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3f840d4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4e7cb6fa free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5e7e1623 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7eb58aff register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa363e8d3 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x12efbb9c can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x33d06d6c register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76971fe1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x827edec1 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x85ef3202 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97986ae0 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9d343c63 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf1e505f8 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf3a9a862 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf40160d8 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf6d936d6 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfe23a663 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x18fcf6e8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x643f1a07 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xbce5999d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xdf7c850b alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x110f338a free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4f2881d2 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x61550e39 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xee105b5a unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x237efa63 cpdma_ctlr_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x4a6bea03 cpdma_chan_submit +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0df6d401 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x256a64a9 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3099a991 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4f1076c4 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x56d6ba27 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x0de4bb66 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xfd85e495 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x145dda61 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa7101141 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xcd7bc15b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd1c25f3d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0ccde22b generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9b9a23fc rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa5bb94be rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xacb0a661 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb313cf02 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc140bfab rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ea35583 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x124ce5bb usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1ac2ded8 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24119a1c usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x251f3a8a usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x266676be usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x270af488 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x28dbe766 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e510a45 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x654f7b37 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6b8d25fa usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x719aa428 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x774332ad usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e789107 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0d3cd21 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbcd093dc usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe7f12f6 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc92fbd73 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd7ab15b7 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd9301709 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd95c06be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4b6ad4d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe63ca105 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfce5a874 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x42d45842 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x443193df lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x59943d5c lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x622f2226 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7a6b82f8 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cc5e18c lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x962f2c2f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9bfe1725 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e38f41f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa48667c1 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab5e295d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc3a1c122 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe1edcc36 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf31ca130 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf4554e6c lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf8da91b3 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1ac2da71 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6dda5fd4 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8e22613a __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xae53281d 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 0xdc947fb6 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe22aff88 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xee669b29 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf3f2bcc1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x327044bf if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xc9741d46 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x07900657 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x16cdf2ba mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x70e62aa8 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x80c807cd mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8d415db2 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9acf394d mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa1413108 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb397d380 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb8712e79 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc04e1f09 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcf66e554 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe33c61d6 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfff973d4 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0ddc599b p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x48391ebb p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x498f2ad6 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5204df3b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5d0310f5 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x79ce450d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x841c63ff p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa3471a6b p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xff386c63 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0622e512 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x06af01f8 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0de1f56c rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x14564cf5 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x18497a94 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e2a5547 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2652713a rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x267222eb rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x274d1a46 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ddccfb9 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33f0a1ad rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3786b842 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x406d0c22 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4088f87d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4cccbe30 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x537379c2 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5935b108 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63fd9874 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fafeb17 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x721df246 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7379c351 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74c2a621 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x84896ec2 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9048bfea rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x94a83801 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa21dddae rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5064d2a rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb35126ec rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc079d072 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc13168d0 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc62fce5e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd34ea2c5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd462f52d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd59488e4 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf98c4fe rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1f23ffd rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe20c45d1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe36fd0ed rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4fa4c3d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6667a8d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00096a98 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05fd5034 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0bc2ad5a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d99e4e6 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1143c28d rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14ff2ad7 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x290946a1 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34a46332 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d02681e rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49be87d2 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4cbbf75f rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ceb7416 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53de11d8 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x571fcb9b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59ddea56 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b3a70d2 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6aa6b143 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74882bd9 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x757c3e0d rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x757e4377 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79dfbccd rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ab9c60e rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x810d340c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8241cd70 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8c589e41 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f62b934 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9bd7e403 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d4708d4 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8088a7f rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4b9656b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb9edb681 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc248d047 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc47dbadb rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6506508 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xccd68e65 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1c5423d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd578d9a5 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd729a800 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8001473 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc44cffd rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddcde8b6 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5089881 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe85ab077 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb63931e rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4a3f572 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf871cc5f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa061510 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d448f15 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1c190de4 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1cef8ab2 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1d2f64c7 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x298c0bd7 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3be47ebf rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4e00a24f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5525d330 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7e27ec20 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8828c80c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x94116fe5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb02e45e7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6f4c17f rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1bfebec rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdad100e0 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf86ec681 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x42725738 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7b827370 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfd8695f3 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04b1798f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e355038 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fd39771 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41a5296d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x512bc4da wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f59dc35 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f32e550 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9428488b wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9939e4c5 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9bd8fcf7 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8a807db wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8e9a880 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf792595 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf189c119 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2b8dea33 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3a4c7729 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5a2f58 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x31bc8876 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x39958146 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ceaa31a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65e4df4d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb339fe5b mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb5aab6c8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe376687f mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe83b2572 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5ee00ccb wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7da035ee wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8f51d25e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99ca8282 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4e063fc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf2d08be0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6b2ba7a5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x042fe3f1 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1302bd23 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3e2a1eb4 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb637c687 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc5f7408d scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd4384d32 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02584a3e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a72bfb1 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x219cda8a fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2f8ef938 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x466dbc5a fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5d8a6725 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6fa81b47 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x895ce813 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x953fe4dd fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab4f590d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba09f2b1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc1ec3b8e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe196b150 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1e1abd47 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a8c8514 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x41e3db18 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4205c59b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xaf0bbcf0 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9bc0922 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x001b1f11 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15d05afd iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1eed36ee iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f6a851b iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1fa073d2 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26e94f4a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b97471b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e414b3e iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3779d89c iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x39312215 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e21e821 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fbcfccb iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fc347e9 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44c52ae7 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49bf9143 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a93eec1 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ae7a7cf iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e6df898 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x502f5171 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54605665 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ace02b4 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5cf923cb iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ee48eaf iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68525116 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73a7cd43 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x742965ce __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7563c7e0 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x777062b5 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa91f4c56 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac891b9d iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xadc0e646 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb50924e iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd149148 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3e22a7e iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4e640f0 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5908754 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd8b99f71 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8137e29 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeca7cfb5 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf34f85d2 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf6bc0edc iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf854ca99 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa1adc29 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x03b4e1e7 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c0ce884 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1eb7f40b iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2a299c53 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2e23f273 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4e9ea107 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5a9e4bb6 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x60ff3e02 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x641a481e iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e4f8b32 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9c0ef565 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc26f1196 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd215bd2e iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2568afe iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd91fc457 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd953140a iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xebb80c9c iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01ee4791 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0cf01d76 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12141b82 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12fbd89a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24949528 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x388972b6 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x542c89bb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67650b4d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x760904cd sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x761372c1 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f85e7a9 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x97b11aff sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa181edc8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6d103c9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb07ff6c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd995f55 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbfc9935f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2ea6471 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc59159e6 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf748984 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeddaf9ef sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee272bbc sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf49d43c8 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x114e3f91 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x24e4548f scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x330340df scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x77050454 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7fdd6b53 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9a19e6e3 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa7768fb6 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2dc6ae0 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc31d8973 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09fd174a iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c196149 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18185955 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a81cfb7 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22346a63 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2acaff02 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2cbd1c8f iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45b381b7 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x487a2bfb iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x49358033 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e22fabe iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5941ba58 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5de1afe7 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x653e51be iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x670ada22 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68169c37 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6aaa4d44 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c933eb8 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86ce877a iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c946786 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c3e0c10 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbca541cb iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc0d961f3 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc92d717d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdaa885e iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcfb7c158 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd98dd288 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe40307a9 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa142365 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb14144a iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc3a05c3 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff3393f8 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6aa341e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbbbf0329 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc4be9a2f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe4107c53 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0e8e9cc0 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0f8dd0f3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x51a09851 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x78d1e228 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbad4377d srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ea55a9c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7cb77931 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa74320e8 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb4ae8a12 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf547ca2 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfa7de7bd spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6f6b5988 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa54081f9 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc842aaad dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc1f02f1 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xce2ce23c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x4cf83c64 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x62f2419d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x1cff999c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9df3ae95 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8ce324b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbcb5a946 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd0a0e834 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf80f0d19 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2743dfae serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3509aeb4 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3f3fb65e spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x52f1dbd7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x53c4e5c6 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62f7cea3 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x717eb93a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x790425bd synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x817d1c7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8905e8b3 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8d9c4fb4 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb5acc53d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x12efbbe0 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3c7cc4ba usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4044fb7c usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x57160b3f usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5d0300cc usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8eb77300 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa05f4fb5 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa638860f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xaec8ebd2 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc9a651a6 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcd9af03d dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd9765fb5 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdfa2a57a sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x12b5190e max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2a8019a4 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x49b5c966 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x71f3fae0 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe6280e85 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xff951749 max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6b2e2607 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf649a80f uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc66478f uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x26069c86 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x28034c73 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a2ef842 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3e26e994 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x77f5bb0b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x95e5935b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb3568b08 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7a07911 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbf2d0a62 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc53009ce usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd67c32b9 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3bfa6e96 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfc9b3687 musb_dma_completion +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xd2fbfaa6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e39fcf9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x11226e26 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43b2378f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49683ee1 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65834ce0 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x66669930 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x672520ae usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68cce968 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6930e78a usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d37e935 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8c89b12c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b16e6ef usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6bf5c5a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb79f1dad usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5c117f2 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2a4f99a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe6b2c05e ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xec61afce usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfbe7e077 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ae75fe1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x156638dd usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x233dc9ed fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x23708d64 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3fd33d84 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x49b5e404 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57bffcd6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5869c0b0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59dac122 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x608684d2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x716d0bd8 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x741e8d62 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x838d4cf8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9cc4174a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2211468 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa5bd1ca2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa1c7cad usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf14e379 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2908973 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf1afc29 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2a255ad usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2343f3c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x01019865 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1bc96f4e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x20514dc4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x86edd0d5 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x875da42f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9793e88e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3e1c4be auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc465a829 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd61d1714 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe0923ba2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1906d5d3 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1bd6108e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6bc53461 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x797088c5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7aa734df ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe1395ec8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe23601d5 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xc71f135e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd23aa5ca fb_sys_read +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a39611c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6f299f85 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d9efdfb w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9a069db w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc70d0a92 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdee32dae w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe6df29b7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xef78c939 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe92acf9 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69a767fb dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6e572dd9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7db3050a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x19199de5 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1a9c32a7 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4ecb19ac nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x824cf1a5 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x92aa2345 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbad0c9f9 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf2fc95c1 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05df4e4c nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f9f61fc nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1455d253 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x223d8211 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ba4c28c nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cd048bf nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3036aa7e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x381f71b4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47af2e87 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a223f2f pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5561a311 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c8fd827 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x617a0b31 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61a7ec10 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62213c33 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x698142be pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d05115a pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6de8f6be nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76b7062e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x835e334b nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8872135f nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8908079f pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c182694 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f9f733e nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98422eda nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99a53115 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cceedc0 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa48ea78e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae8430a2 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1c828c8 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb649226b pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6c4c360 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbca31187 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5abb66a nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5de385f pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc35168a nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd59c18df nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6a865f3 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd750368a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd94957f8 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbccf874 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe71e1477 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef940fa7 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf13b18da nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf86ab264 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaeb63fb nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5830da5c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xee22f648 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x21600d01 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x448a3e23 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4eceea19 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6459e7be o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x76cb9f89 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 0xbd3ce997 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfeac7a7e o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x06073584 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x275c16d9 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x473ddcab dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4f27c6ae dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdd66fb9e dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfc31a9d4 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x180eb3c3 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb181e5f6 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf1992901 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x747e218f garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x76fe3f45 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x83dc5c08 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xb331b53f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xc156e5f0 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xdc6aa6ca garp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x71479ad3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xb7372fdb stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x29f55457 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x63f872e3 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x4c2ff25c 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 0x427f87f9 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0025605b dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03ef30dc dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d12adb0 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1502a8b2 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1ede0ef5 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21333fa0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x241c1eb3 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2acc8583 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x433441f4 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x45283dbb dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47db0d59 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e4c903a dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5298f65a dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5978ac6c dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b0b99a1 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x66bcad2d dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74acaf25 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7835305e dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e361286 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x877a4c91 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x879283e5 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x885c70d3 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b9af416 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9fcdaa67 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa809d0de inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaa119fde dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0c1e895 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb211327b dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb3060ce7 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbab616c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4b70b80 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7bfebd9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcc601f2c dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7768b43 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf462f6f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x26c18188 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x363c2551 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x715ea813 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9ae6fb0d dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa1356d8b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb785973e dccp_v4_connect +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x29b4aae8 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x95ed97d2 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1127e6dd gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc40ebe26 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0495af71 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x175cfa19 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2a9b44b8 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7c9d8bf4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9194dbc5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe6e38515 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x00f8ed6c arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x4d86c4fa ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0xc96fb240 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x0f5cf872 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x1b9d4cae nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x2ad0b051 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x312ee2e5 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x41433b9d nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x693d9b21 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x74e1854f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x932bf373 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x95e0d772 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa20adb8c tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xa8c0940a ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x33f2dd01 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5a1e7908 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5d3ef2e1 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6af8b03c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7297562a l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72f4fe28 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74dd9d1e l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x761aaff7 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x93ce3dc0 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9af14435 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa9dbccf6 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab47fd28 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x27d1494d ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2899fcbb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4855779a ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae613003 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb7f1d0bf ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x11186dd1 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1a424212 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45686c91 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4603cc75 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4bd1404f ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6660c2b9 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 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 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc64d20b5 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd8b3ce4e ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe8631504 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 0x2dd9a94d ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x560b0ce3 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc39df7f9 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd849a7d0 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00135bd8 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0796c9bc __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e33b6bc nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19af4c7a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bb386f3 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c078d06 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cecc5c0 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d6e09d4 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e07755a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2985e471 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a67cf76 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af7522e nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x416ab6ec __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41fb30cc nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x463fd45a __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47ac24dc nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4970b478 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e3d1a4c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f6bc5be __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x592bb8f6 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bf415ba nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d7e62f9 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x694e3ca7 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ad36d16 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e223a5a __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f48007b nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74f3f75d nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77681413 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d44e335 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x819dc9f6 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87ee723a nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dc41dc6 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fde1773 nf_ct_expect_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 0x91c52432 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x945547bd nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98787980 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a457d23 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9df71bed nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e24263a nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f301bc2 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa15d2988 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4027ac4 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6cb9a7c nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabab1349 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac2cd09c nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1a9eba0 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb375b3f9 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb42a950d nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb55c1bb9 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb81aaeff nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9bad3d8 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc077566 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd0ddbfe nf_ct_invert_tuple +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 0xc5dd8097 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0ba6cd3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0ed9521 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd54488f9 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd79506d4 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd914c884 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe12079af nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe50a8b93 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6a66a4f nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe92fe88d nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb6b3027 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee9b7e90 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf234bfde nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x2ea96579 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x30c74339 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x43aec5f9 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1298e43b nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1617b767 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x55ffdaa6 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5eb594af set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x66e6ae5b get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x83cb9ccb nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a0f5859 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb1afbe81 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe2c56bac nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfbd78610 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x907e01f5 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x26a040bc nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2a19dd6c nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3a933ce2 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x492a5efb nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x3d99a596 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xa1c96990 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x099b9d54 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x12c12434 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x18acee3b nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x44e93d10 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4ea8b5a9 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x563a2b68 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x73c50502 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7c97cb00 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x86e80efb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbdbb75c7 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcc4fe701 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd0890c3b nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdb0c970e nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xf420025f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xde1b55d4 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x833dc193 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0e0e299b nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1d11a4b3 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x31645c62 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3655e773 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x49aff828 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbc859103 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x91aadbae nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x88af3661 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b3e1f08 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x233e0af5 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50d4d78f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5a21d2b6 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x69399caa xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b1b52b9 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6db418bc xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7679daad xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88622c20 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d27500d xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa515f4ee xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe4ae196 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdff36095 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf8009c59 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x563d999b xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf6afa81c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x12ef80ae rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +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 0x3dfd9c08 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x40b6a15c rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x45ae8de4 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x53537e73 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x59d308dd rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6978532b rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7e578244 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x7e82477b rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa3c78b7a rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xa72310a9 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xa7f5349d rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xafe529b9 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xb515a374 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc07274bc rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc619411a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xcd5db955 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd2d8db40 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xdb8c3516 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xdc5f8dce rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xdfb35222 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf62623a4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xf8e8209c rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xff57b277 rds_inc_put +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xb57c68d2 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc5aa6019 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x095d262c svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x1af1b4da gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x24fa0719 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x34229a48 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x65a27686 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x70acf241 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa70437c5 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5d57cef gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xde469e7b gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe2026771 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xee0b9a47 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0073820e rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00b1c7a2 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x060613b5 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06b7eef2 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07c8f955 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07d45e86 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07e17478 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0addd1ef rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b74c902 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bafa186 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ca9851e bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11631d3e rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15297d4a xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1589d57d rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1723a870 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ec6faf svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19aa7e59 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b04253c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ea8e51c xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21b3e47f rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23eb38e1 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2599638c xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264dce3f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x274062e8 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x277710f7 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dada273 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e6ff1fb xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8e7943 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30ac0550 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x314e86aa svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x329068cc svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34b37cb0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x358355dc svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387bb34f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b1cd5fd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cc5bc15 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d1ad9a5 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2536fb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40460f3e xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41036e07 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4367d292 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46997698 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d53602 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4abe1118 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b350ac2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b3f147e sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cc91cad rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e17957f xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50ee0eb9 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52886b96 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52a593e6 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54f7259b rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x555235c5 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558e6711 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f54d16 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x583743b4 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x590b40c6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ae2c8c4 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e6285c9 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fdec303 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62506e2f rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64400b59 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64f3d663 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x690ac893 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a9ba0f6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a9d9a03 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b6d006a svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d083abf rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e4db404 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdd2664 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7073d1c7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7256d23c svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72ea738c sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73cc683c svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76722cae xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76ac5d08 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7860c9e7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cae697 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x792d5492 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d56fe96 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec5ee53 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x806c4402 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808cd845 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x833c1016 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83798089 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84bcc031 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855c767e svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87528910 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x885f20d8 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a6bf7a5 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bf50b7d rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdaea94 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8de02f0a xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ec80f9a rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ecf708f svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f0edad8 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fa93f7c xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fc5f9f1 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x910d72c3 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x925a369e rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97572b61 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cef93c1 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9de9f3cb svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e0c4793 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa157a84d rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1df2a3f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2eb58ea rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3f862c3 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6210e3a svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6510330 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6cbb67f rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6d6feab svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa78b8d33 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa841285a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa87dcda2 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9be7ba4 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa9501c5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab2927fa rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad2ba058 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7d1f4b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf27a192 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb263c1b7 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb593abac xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6241e97 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8570a1c svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8ddae6a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb1b5c7f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd1822d2 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc07f2f14 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc11482a5 cache_register_net +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 0xc66859b5 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc894818c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca03b746 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb4a6db9 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf20afc6 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd03657d3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd216f371 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd41c6aa3 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4360bd6 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd481579f rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4d86ab6 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd517ccd3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd71fa0b2 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd75bee9b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd42bb24 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd5ee3c7 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddabeeb3 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde4c7ced svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc12f64 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfdda2d1 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe057faa2 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe117c5b1 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41c7535 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe954122e svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c1ec50 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c7e288 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea7d09e6 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeac168d4 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb464db0 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb5430a9 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeba989be rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebee495e rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec56da54 xprt_unregister_transport +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 0xef055309 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf04a6bf6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2b37894 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf77a709c svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa465670 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb4c5be0 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf93bb2 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdb7e9c6 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdedea12 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00a809e9 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x02495457 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4124bf0d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4c8500df wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9ebed156 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xade4cc91 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb4cfc645 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb817ef71 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7a0bcf8 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xce26b28d wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd5857966 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb53df24 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfe691faa wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0d0eb63b cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x22a6f38f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x53404ae4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x583e0bd2 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x59b6316c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5f341a57 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x65f5b7aa cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x700768bb cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x71446931 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9005b81f cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaf390976 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1911c6f5 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 0x2656ecfe ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x31abd6c8 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6ff766fd ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdd98f17d ipcomp_init_state +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x2c407cc5 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xd5a3973f pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x31ac51d8 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x5d13c551 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x1a44e0ac tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x45481b92 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x14d99bb8 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x50273afc twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd40d39dd twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd508b0cc twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd625b3eb twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xba071886 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x19919ed6 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2ff8b3af wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x38fc106d wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x818c3928 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8c40b38b wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa9ee5b46 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb7efdc6b wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb8505ac3 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x3e9fcd99 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x6dc4874f wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xb39ca90c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xda380fa3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xa0698cb4 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb337f7b2 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xcaa0399a wm8996_detect +EXPORT_SYMBOL_GPL vmlinux 0x000668dc irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00075d04 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00654993 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x007782da rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012eadd3 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x016e3943 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c33702 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x022348f1 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x028552b8 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x02c8a5e3 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x032db0eb crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03453443 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0355789b ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x03a07b11 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e3fa81 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x04180da7 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x04251a3e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04ae6b56 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x04c07212 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x050c37db aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x050fbefa usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0515cef1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x051ee1bf device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05420ce0 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056d5bd2 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a80d0a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05d80238 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05d978e5 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x05f39d73 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x0606a1dd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0624b27b dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x063b82e4 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x064a2682 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065335a0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x069441fc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x06a29820 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x06ac7be6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x06b252d6 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x06f57384 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0709a989 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x073247f9 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x074bd082 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b86647 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x07f089df relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x08181428 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x083cb4d8 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x087d8bac spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0896c28d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x08eab084 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0911d9fd register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x091a29b3 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x094d38b8 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x097ad8a0 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x09a1aaa4 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x09ac2346 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09ce7319 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x09db167f mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x09e3ac69 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x0a0bf193 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0a0f0af1 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4f7895 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a519c01 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0a8f07d4 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0aa33262 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x0ac82454 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x0acfe8c5 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b4ccb82 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ba09b27 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0bad0585 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd6a198 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01c84b __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x0c02c891 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0c042caa power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0cbb600c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccffe10 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d1b26f9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x0d1e3c3e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x0d2bc1e9 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x0d30ea61 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4241ad tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0d4a7bd5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0d6cd567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0d7268e4 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x0da7e94b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0dbddb24 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0dbebb12 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0dda9cc1 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ddf2acb ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0de1db6c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0dee211e ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x0df7c393 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x0e045a13 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e16ee41 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x0e5af2b2 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x0e92173a skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x0ed2f405 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x0ed3503a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x0f14864d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x0f1c556e snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x0f38724b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x0f4ac36a usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10155f64 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10734b7c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x10a58611 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x10a5a913 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x10b6cad3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x10bb4f55 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x10e282f7 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x110a093c klist_init +EXPORT_SYMBOL_GPL vmlinux 0x1142f296 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x116e9bae ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1175f652 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x11773d22 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x11b6c3a7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x11ce41ff bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x120ac879 gpmc_init_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1223e8f9 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x1232fa96 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x12480f42 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12837a61 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x12967e99 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x12be7bdf tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x12cfcc74 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x12ecb412 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x12f8f654 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1371d3d8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x137729ce snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x13ac1905 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13da31c7 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x149c2dc9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x149fd177 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x1506b3e5 omap_uninstall_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x1509b0a0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x1519833e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1545f4de register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x15797620 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x158344bd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15c5d40f cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x15d9d086 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x15e825d8 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160158ab mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x162d2e56 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x162fedd0 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x163152c1 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x1638a168 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1664e775 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x166dcac1 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x16870e82 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1692e3ec inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x16b812ea sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x16da80ac __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16decba7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x1727ba5f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x1750d2a3 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x175b617b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x175d40d4 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1763b07e find_module +EXPORT_SYMBOL_GPL vmlinux 0x176e28d9 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17e3a646 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x180d3c81 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x183dd256 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x185391d3 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x18569a6f __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870a88e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x18921769 device_del +EXPORT_SYMBOL_GPL vmlinux 0x1899b2c6 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x18a15d09 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x18b43762 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x18bae6b6 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x18d2d3c9 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x18d40746 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18e5da11 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18ff3afb usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x19031208 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19456e90 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x196fbfec usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x199232b0 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ee3b1e cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x19f71b84 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3e4564 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a4a9ce8 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1a65920b omap_iommu_arch_version +EXPORT_SYMBOL_GPL vmlinux 0x1a67721b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1abb724f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afaa190 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x1b00d4ad device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b0a8ff3 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x1b0e34e7 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1b18f808 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x1b1b9718 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b34a45c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x1b384dba xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b85209d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9af522 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b9bc108 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1ba65ac7 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x1bc288a6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x1bc50751 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1bff2b8a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x1c00399d xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x1c052235 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1c0a5bb4 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x1c3015e5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5bfbeb sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c922a08 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x1ce4137a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1ce5683a snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec09c2 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d1a25f8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5de3ea mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d664a5f sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x1d6894a7 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1e1524a4 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e3bb8c3 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e929cba simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x1e939184 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1ea1d241 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ed4f129 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1eecee2a do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1efdf44e crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x1f0f9e7c gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fbb6da3 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1fc7d787 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdcd26e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x1ff10a76 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1ffa0cbb skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x201ab491 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x201fb979 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2027bdef ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2048317c wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x207e6cc5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x2081144b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x20824524 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x20872836 input_class +EXPORT_SYMBOL_GPL vmlinux 0x208aa147 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20fa79b7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x214ad6c3 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x21a861ba usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x21eed484 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x220b5875 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x2211dcde vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x221e9136 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x22281114 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x227d4d01 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229df9e0 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x22ab17f7 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x22eb01e6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x23513169 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a05f46 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2423ff6b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2468949e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x247c0a82 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x247ce385 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248db7e5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x2492b7b1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bc579c snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fbdc2e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x253efd08 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x2553cbef xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x25572d7a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x255ae904 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x256678a6 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2583f49d tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x25b8b8d3 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x25e6cb8a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2610bb99 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x267aa5a0 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d5135a snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x26fe7fd5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x2731350e inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x275a4363 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x275b6f8f amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2790007c snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x2796a377 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x279eb6ab ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x27b944ea omap_iopgtable_store_entry +EXPORT_SYMBOL_GPL vmlinux 0x28281df5 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x284e6718 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28938e84 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x28948c99 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28b11dc4 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x28b31a6f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x28b66cbd trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28ec8afa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x28effedd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x28fea945 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29204af1 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2926a0df xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x294732a4 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL vmlinux 0x297d143c tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x29a798b4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x29ddeb90 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x29e24acf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x2a08a563 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2a295418 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a463ee8 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x2a5748c9 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5d8eb9 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a880acd kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2ab85c0c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x2ae0e1ef sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x2ae963bc regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2aeb2083 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2b3dbb12 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2bc87ed9 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2bdeaa5d gpmc_calculate_ecc +EXPORT_SYMBOL_GPL vmlinux 0x2bec437c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2bf142d3 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x2bf5ed11 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c281127 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2c2f069b mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x2c309940 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c922ac4 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2c929665 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x2c93da68 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ccc6bd1 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1f6ba i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2d154bb1 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2dca68 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36a8c5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x2d45db30 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2d90fae8 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x2dacde31 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2dbf2173 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2dc7a7b9 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x2dd08daa dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x2de2be79 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2e19e0fb skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e341b12 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2e3ebdc7 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x2e8ff70f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x2eae3434 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2eba89bb kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed9efbd usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f0bd733 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2f3dba94 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9078f9 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2fbda5af crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x3001155d blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x3004ad39 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x3037218e led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30a93577 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x30a96082 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x30ab9b86 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x30baf29a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x30d514aa hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x30e22742 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3111ffad sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3191013d gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x319d4369 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x31a4ca2a of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31bc4603 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x31bd8b90 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d1ffe8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x32587faf tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x326572a4 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x32660688 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3268de26 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x328ead51 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d3fbe1 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x32dc99ab ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x32f19cfb device_rename +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3359aeeb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3361e62e ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x33775d8c skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x338a188a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x338d6665 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x339416fd ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x33edefb9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x34019502 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x343eb67b s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34f93356 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x351cfbc5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x3525eedc tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x352f940a mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3554cc03 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x356d6676 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x35ba494e usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x35cba215 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35cce9a3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x3601fac7 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3621735f usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a6400 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x3697ad94 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x37222a12 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3740e4a4 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x374794f2 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x37618b5f tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x3769ab0c klist_next +EXPORT_SYMBOL_GPL vmlinux 0x379b5fd6 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37b0bf04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x37c4fc46 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x37d50795 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x38a2902b usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38d8546c device_create +EXPORT_SYMBOL_GPL vmlinux 0x38d93e0d snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x3920d6db kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x394d2732 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x398aa119 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x39a6f0f9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x39a8b807 gpmc_enable_hwecc +EXPORT_SYMBOL_GPL vmlinux 0x39b021bc pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39d90b9b firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f2b2f5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x39f33767 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3a0b12f3 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a25d448 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a383a2b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a71946c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a8e2b7d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x3ab80329 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x3acb8120 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b059402 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x3b1fc014 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3b770113 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b7babcc handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b83b06b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c150a48 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3c25c74a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x3c2efcfa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3c4bfe07 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c83c007 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x3c89520f crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca7d831 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd0a588 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d08b94c blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d7cafb5 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3daa40bc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3dafdc20 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3db91586 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0b125 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df27184 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3e26437d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3e396d7b sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3e591232 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e647d9a ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ed78f06 mmput +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3eefe924 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x3f210e75 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x3f3e92cf omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f56b240 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f91f526 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x3fe2caec snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x401514d6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x401d7f01 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4049380e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x40767ec4 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4097f408 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x40a061be vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40bb5009 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x40d1e635 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x4163750a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x416fffaa driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x417db3fb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41f953c1 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4200b6bc blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4215a113 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42243aee usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x423e7b81 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x426ccc55 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x427ae754 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x428186cd get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x4295844c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x42cc4d76 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x42f10c9e otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x42f223a7 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x42f52a23 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x42f61a6e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x430353ac md_run +EXPORT_SYMBOL_GPL vmlinux 0x43150244 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x431b9be9 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43247956 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4349b4e0 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x437859e6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4383c9bb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43be8c8a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x43c77fce irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x43e62b87 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x43e871dc md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44331afd shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x4435c123 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x44657122 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x446fc726 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x44786634 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4490f2b0 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44d10699 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x451739fa user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45360c38 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45895638 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bf8905 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x45c6c8a6 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x45c89363 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x45c8c560 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46276d8d crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x46281367 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4630fbe2 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x463f11d4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4658c8ee of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x4659d5a1 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467a400f device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4691ac75 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x46c764c9 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x46f5377b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472337c9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x477f8de9 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x478d4ff7 gpmc_enable_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x47ac889a rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47c2869d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x47d8885f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x47e7515d omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x481e9785 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x482621a2 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4864213e pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x48688b96 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48efe7db __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x490ec519 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x49339d26 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x493e2a7c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x4946da71 omap_iotlb_cr_to_e +EXPORT_SYMBOL_GPL vmlinux 0x496b8639 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4985e88b power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x498f9e19 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49d3c15e ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x49d490fb snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x49e6fb30 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x49e7726c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4a9807ba __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a9ac309 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aafcee5 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ac0454d fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4b182b63 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4c0a71b8 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c0fa949 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c250800 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4c4719bd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c545e6d raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x4c697709 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c848371 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x4cdbcafe dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x4ce60bad ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4cec6e2f ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x4d29d347 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0x4d54dfd2 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x4db1024a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e216a28 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ee1d8d2 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x4eefafaf debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f071807 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f1f42e7 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f3f05b2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4f5085ee iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f67e306 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x4f923bd3 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x4fa357fb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4fb793c9 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff5ae9f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x5001d0eb snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x50272e96 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x507ea764 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50ac69a6 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x50b1d3f7 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51054ba8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x512e364a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x515624d0 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x516f4d1f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x5171a293 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x518b7ae9 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x51904051 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x5192cf11 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x51ac8695 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x51e8a5e9 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x51f0bef1 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x51fe81c2 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521784aa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x522aa0c0 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x52333b23 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x5266d4ea ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x526d23d0 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x5272c92c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x528b2f0d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x528b4007 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x52c34852 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0x52c9bed3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x531107e9 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x53292120 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x533617fc snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x5336a9d1 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x534d8dd6 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53b806a5 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x540100b2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5416fe08 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5447ed07 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547d99ef dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x549496e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a5daea i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x54d95a56 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x54e8efc2 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x54fbced4 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x552a7b59 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x55323e41 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5540f861 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5542b913 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x554891f6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fe064 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56a31714 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c06bec evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x56c472fb usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x56d19e3b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x56dcabfd blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f08224 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56fc9785 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x57185b69 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575238f7 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x575ef902 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5774148e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x578fe4dd cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1a422 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x57b37c42 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x57c9bce3 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x57dabbc8 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5862701e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x58673c6d usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x58b68972 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x58db893f debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59ab8d0e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0ad8a1 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a62a5a8 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x5a69fc9f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x5a6bfa63 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9d3593 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x5ab35762 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b1eb3d1 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x5b2b510b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5bb8d19f snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bbce706 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x5bdf55f7 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5be2dd53 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c1acf09 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x5c3241ca tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5c696ab6 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5c69d7cd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x5c6d1594 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5c82c02c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5cbd5ac7 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x5cca6f69 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x5cdd59bf stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5da21c2e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e370442 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x5e7ccdfd rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5e805b70 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5e895489 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5eac3801 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5ecd6939 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5ed4b0c3 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f288729 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5f3c4dc9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f9ff813 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5fd2a143 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x5feba456 user_update +EXPORT_SYMBOL_GPL vmlinux 0x604c1f18 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606098b1 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x60708697 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x609e9fc0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6106c752 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6107707d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x612869e4 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x612a0513 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x614e5bbe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x6160b5aa pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616e4bc4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x617bbb8d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x61c027a3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x61c3a9cd wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x61c9654a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x6225490f usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x623fd46b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x62488bb9 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x628d4fcf sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x629f271a iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x62a74e3d dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x62a92c71 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6327864c task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x63291c16 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x632b64de nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x633f235b skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x634d3092 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x636fab81 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6376898d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x63778ba7 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x637f8bdd sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63d89c26 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x63f4a106 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x63f521a3 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x63fe9924 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x6422b893 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x6441e6aa device_move +EXPORT_SYMBOL_GPL vmlinux 0x649da5c5 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x64ad925c inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x64d21c1a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x64e15403 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x655dee64 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x65763911 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dee7d6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x65e44a7d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66299361 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66843c1e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66cfaea5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eaecf5 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x677e8d7a posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6781165d usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x67885f98 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67bbb53c tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x67c68811 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x67cd87ce fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x67f9bcf0 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681dbc63 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x682024d0 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x682e5ed4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x685a3c6c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x68743e06 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x687b10e0 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x687c6a6c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68be26d0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x68df6cbe snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6905f584 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69516f25 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x6966cc4c bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a7732e ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x69bb804c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69df26fe tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x69e3de04 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a1c02ac ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6a33f838 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6a3769a2 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x6a4e483d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6a5432cb blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a59e6ed disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6aa45aea driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6b15a97c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x6b25c57c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b33a5f6 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x6b6b7874 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6baa787a seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x6bb3f5a6 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd27b get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x6bf223f1 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c30dbe9 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6c3f6995 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cd5ef82 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x6cf4f2d0 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6cf61d3d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d68c77d inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6d710848 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6d83bee0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d889da1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6db1b111 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6dcc0810 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6e09af4b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6e17a27c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6e1f61bb crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e2773ed usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6e2ad732 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6e3fd382 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x6e6d26e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6e84dd59 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4381 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x6ea1d118 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6ead1f17 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x6eeb3bea snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6ef1820e release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f230820 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2a6be1 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x6f3665a9 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6f42cb75 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6f684540 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f8887d0 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff3f67c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70077535 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7055a19b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x70579003 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a1be4b pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x70a1fb1a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x70aa3260 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x70aad982 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70de145d omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x7132563a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x714c4ba3 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x714de325 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x715c184e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72247a30 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x722e77c7 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72387bb7 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7259731f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729281a2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x72a97430 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c05dd1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x72fa7d62 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x730204ef rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x7311ad8e crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x732600e6 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x73369bce omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x73378d5b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f29bea tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7404fefc __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x74173153 snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x742160f3 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x743850bb tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cb6d34 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x74dca3ec usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x75022d2b hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x75087ba4 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x750c17c3 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x750ce345 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75331cfd __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x753b1947 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7550c360 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x756d3c4e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x759f9dff fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x75bc0a10 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75db81f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75fe0907 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x76472715 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x76498ef2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7684613f devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7697f56e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x769837d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76af2063 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x76c32458 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x76d0d80f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x76dc1782 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x76df5723 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x76f30228 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x76fb9faf ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x770880e3 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x774809bc usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x77519ec3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7757c8e4 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x77acd49a omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x77d5e52d ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x77f8cb48 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78262643 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78623ad3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x787cef89 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7880e288 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7889d819 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x78ca74d0 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x78cec40c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x78eed445 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x79405553 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7975ffd2 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x79a2e326 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x79b8f1f1 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x79fbcab8 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7a4ef147 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x7a5970d1 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x7a8dd5d9 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7a93c959 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aad3e3d omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af4aaae md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1e2901 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b4b07fa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b61e663 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7b75f83f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7b9426ba snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x7ba34278 snd_soc_register_dais +EXPORT_SYMBOL_GPL vmlinux 0x7bdc6f05 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7bf957aa invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7c1d5004 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7c6445c2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7c688c79 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7c843285 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7cb93222 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc66165 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7cdf91f1 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d16c252 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7d20a3b3 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d629ca8 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d947744 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df3e863 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x7e079edc fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x7e0941e3 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e094976 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e140534 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e277415 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x7e35ce23 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x7e5949a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e67a2c1 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7e6fe869 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e76cef6 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x7e8c614d xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7f0c83ce blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7f1663e7 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7f3cf2f0 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f689cc6 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f7e4d1a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7f7fff8c get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x7fa0e099 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7fa23d78 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7fa4d2bf usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7fc33b4d sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x7fd350a2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80074162 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x8064b900 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x8080825f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x8088ef1b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e60f73 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80ffcd8b adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x812f24df scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8138eb64 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x813b13df snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x816174c8 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x819415ef irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x81a51e4a cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x81e0bfde crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x82557071 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x826dcdc9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x82a28bb8 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x82c681ae usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x8308bb75 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839682f1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83d444d3 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x83d781df pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x83faa6fd fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x840e67b4 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x841862ea ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8448ef45 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x847e1433 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x84c66aa4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x84dc77a6 get_device +EXPORT_SYMBOL_GPL vmlinux 0x84ff63aa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x851c7fb9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x85221845 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855fc557 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a46f9f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x85bc46a3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f0cf84 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8600c5de sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8638de93 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x865031f4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x865d8ca2 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x866134fb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x867d61ae device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86bd8692 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86cf53bf dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x86d70d49 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x86d73f84 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x86daae21 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x86e82b12 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8749cfbf bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x875b64c7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x875bae5d crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x876b4e3f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879be5b1 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x879ea041 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x87aece07 dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x87fe5a20 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x884e2e7f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8850a825 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x88641316 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8883a1b4 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x888725b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88cc3888 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x88ddc075 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x88fd5b65 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x891a672d d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8937036c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x89a88e5e wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x89b4cbcb find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89d7bcbc crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x89ee3924 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a73b83d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x8a81d7ce regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8988e5 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x8a9a4d88 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8aa79491 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x8ab59b92 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8ab8b1d6 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acb9a60 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8ad06566 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ad888f5 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x8af16f3a omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b0690f9 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b36869e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b75f310 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8b8940a0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x8bc5c0fd ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2529e7 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8c67a06c tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x8c9b2d96 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c9f98de fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x8ca62dd7 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8cb5d1aa omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x8cd06b53 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x8d09cc7d crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x8d16ea86 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d204014 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8d6137d0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8d70307b ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8d9fd984 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8db314f7 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x8db34252 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x8de5a654 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x8e37590d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e5db8cc adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8e8cbaea del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ebd1381 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x8ecb5436 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ed8dcbb pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8efe8ef9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8f0977fa snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x8f0dbd9a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x8f1f0c1d ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f2ca63b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8f414ff5 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x8f4bcc13 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f75130a inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f9d42a8 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8f9f11f4 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x8fa5a4d2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x90136cd7 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x901a9c5f s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90580df2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906c5b79 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9070dee1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x907e81b0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x908e4389 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9097e3b3 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90e148df spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x911236cf ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918b3a3e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x9198afce fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91c99834 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91eba6bc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x91f3bf68 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x91f613fc dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x921af38a platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9229bd49 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x92425533 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x927094fd vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x92973b0b amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92b33a78 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d73cca __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x93669a43 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x939d85dd crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x93cca605 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9434c482 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94709640 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x948f11c5 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94acb68b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x94cd2785 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x95243ba9 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9544e020 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x954b3e6a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95617a98 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x956b34cc crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x958207cf klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9587b9ae adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95f392de snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962193c1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x963a90e4 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x966caed9 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a7c164 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x96ac5e1c br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x96b28d4d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x96b66aef sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9709ecae devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x971d3069 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x971dd470 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x97464789 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x9746e8b3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x97733158 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x97885322 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97c01e00 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x9804a5aa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879f303 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x98b552f4 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d44bae tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x98e29de2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98e5f413 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9938e51e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x995b38b2 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997157d8 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x99724d01 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x99a0d0c4 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x99a842de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x99b2da9d crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x99de368b crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a450439 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9a7d64ea sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9a835c60 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a857da6 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9899cc snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x9abb5d85 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae184a7 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x9ae800e6 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0298dc snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x9b1b3882 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x9b7f27de pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba7731b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9bc752b9 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9bcf0ce6 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x9be5daea sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9c649e42 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9c885188 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x9cb14921 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x9cbf9b63 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9cc3d15b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9cf647e7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d673fbe ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9d69ab07 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d95a4d7 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9dae7e73 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9db7d7cf disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e01b1d9 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e25b7ba crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9e3f6c96 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e87927e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e9efb53 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9eaefd87 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9eeb0ab7 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9f0c013e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f150c86 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9f183e2a mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f6a0c7f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0380a86 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa0557c18 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa063ab79 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa0a39c48 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa0da1ce5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa0e662fb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa136127e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xa1386959 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa153e3fe platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa176673d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa185ed07 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e5b72c register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa1e84956 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xa1f0c872 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xa2370cee dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa23a4fda rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xa24e1f4a skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa25b58d7 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa26a1589 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2dcf5c0 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xa2f65fb4 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa30a3ebb n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xa346f784 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0xa378c472 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d59b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xa3a2ec52 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa3aa7f1d ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xa3c3df61 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xa3cdee26 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa444a3b1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa451f59c anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa475a46e da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa491d494 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4b37423 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa4b555fa spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5021290 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa55d036e md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xa5692e9b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa570a5eb usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa57a69e2 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa57d5326 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa59a28b7 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa5d4ea84 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa5dd6fae arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xa5e97382 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f01105 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa5f96ff6 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa628e1f0 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa63bce05 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xa6523e65 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b2ba10 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa6b79a2d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa72081c5 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa72883cb net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa74cbd58 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa74e6f13 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xa754c65f sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa784604f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa784781a register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa789a7e0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa796c168 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a702b2 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xa7beb0c4 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xa7c27c1d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa7c94bbd ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa816a9d2 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xa82a9b08 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa82d8a2f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa8598f84 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa8b6c518 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9036c69 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xa94cc26f __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa9593110 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa9bd6c1e armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa4e2c6e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4fed3f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa857264 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaabce0a3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaad5f73b mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xaaeec927 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf917a9 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xab18e6bd scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xab1de347 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xab3aeb1e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xab3f65e1 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab908256 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0xac0d27ca unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xac1e1cc7 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad018b6c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xad0308cb pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad111400 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xad1e71ed snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xad357e7a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xad3a2239 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb67e8d inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xadb683f8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xadbf3ace snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf3fd2b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfd511e device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xadfdf721 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae397c4c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xae421ea9 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae836d41 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xaea4c908 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xaeb71d91 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xaebc643e bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaf14e750 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf4be96b sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xaf81dc1f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xaf858edf ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xaf941e76 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xaf9aba57 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xafbd7434 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xaffb35c3 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb0074109 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xb02f21dd usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb050d4e2 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xb0527695 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xb06177c0 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb0726421 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1892231 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1e54e26 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1f99848 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb21a5023 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb277efa1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb2b4dbc7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb2b9afe4 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb302bea9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb36495b4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xb37159c6 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb382ad65 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xb397682c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xb39cf1af tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b7c9a3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3bacfc9 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xb3d2ba40 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb3ece8f1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb4279733 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb43d878a ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb4541b91 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xb46fee40 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb47b6e20 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb498d149 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb4df91eb snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f200b0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb503120f bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb5186e07 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb527772c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb55756d9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xb558a2a0 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb5620e80 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b2f88a omap_install_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0xb5b365c8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5cebefc sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5edd6eb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6202a42 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xb645a840 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6870559 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c900f1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb6f44ffa ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb6fa65c7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb714ac0e dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb7499f6d crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xb7c4b0a9 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xb7e0ae1a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xb7ed482d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb8371798 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb844f63f scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb8487ba1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb851c4bd sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8520f29 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb860595a __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb87c2de5 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb88cdab9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb894cb6a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xb896c6e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb899d396 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8a11d9b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb8a5f842 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xb8a7d2e8 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb8e5d14f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb8f5a09f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb956ebef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb979e589 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb97ca623 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cffa6f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xb9d00832 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fdc905 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xba0bcd72 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xba267130 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xba42aa46 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xba79ae5e init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbad6acb2 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb04afae bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1f28c1 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbb2e3bef page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb9edd23 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbb39e14 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbbb3cf2b omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xbbd70e80 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbe68185 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xbbfda9f2 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc08b7ef ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc173cef sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc60a66c of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc922a2e gpmc_calculate_ecc_bch4 +EXPORT_SYMBOL_GPL vmlinux 0xbc993b00 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xbca26bd8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf0d703 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbcf9eaa0 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xbcfa579c snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xbd059cec scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0xbd07a52f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5ffa40 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbdbecb37 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xbdcd31b6 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2ad49 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2a1c2d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe2ed02f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbe2fa7c7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbe993bc2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbecdaf5c snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xbedd491e tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbef2c09a udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbf16ca06 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbf1d34cd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbf5af391 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbf784edf serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbfaeed32 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbfbcf60c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbfcef4b0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc01bdf1b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc02d498d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc073e9b1 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc07681e8 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0907d22 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc09632ce usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11777ad gpmc_calculate_ecc_bch8 +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13083ba scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc159056f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1b2cb27 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc1b6acb3 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc1d72a88 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1f47c7b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xc1fa0a5b ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc1fe8f14 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc20b2b17 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xc20f563e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc218b95f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc26d4b46 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xc270470a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a8891a mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc2e59f9f snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37bc5cc __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3925583 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc40f5857 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43d15f4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4584a3b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc45ed40a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47922e9 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc47fd9fd pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49aa110 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc4a1aa1e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xc4a86265 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc52c8dbf md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc52e5023 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc546abb6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc56b7536 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc5d1f2d5 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc5ebe28a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc60a44da da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc60a730b klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc60e92ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc6257488 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc664b474 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xc68104d9 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xc68a13d1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc68b0f4b wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xc6966361 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xc6cce9d2 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc6da4e8c clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc70aedca ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc71e8133 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc753db35 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc768bd7e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8862b9f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc88e04b2 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b9e927 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc8cdc6a6 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc8d81b71 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xc8e330a0 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9223a40 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc9256583 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9497af4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95cb807 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc97504d7 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc977635b wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc986f36a __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc98b3154 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc9ab1102 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc9b449a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc9cd42b0 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0523bd unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xca0bdf81 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xca189247 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xca3d7217 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xca702e7e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcaac2b7d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacb0de2 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xcaefdcb2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb273676 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcb42a318 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xcb6984dd md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcb901d33 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xcb9d7067 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xcbcaeebb of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc026731 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc4ccd63 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xcc7e062c fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcc84417f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcc94bf42 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcca56d7b anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccc2c2c5 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd08b49 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xcce55f45 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xccf7ff54 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd02854b usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xcd1c5435 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda55c8e __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdb32b8b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcdb79b68 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde8df00 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xce07c44e crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce36ebdf tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce57e9cd crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce6008db class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce741c16 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xceb78267 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xcef8c05b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcf63a796 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xcf694cb6 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf74c14d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbe9824 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfecc114 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcff6f0a4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd009ac08 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd0f526a1 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd0fe5771 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd172cfc7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd19b6ac0 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd19fe2d4 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2119ac8 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21812f3 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd225c73f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd22f2596 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd26ea448 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd279dc25 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd28e58ef snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2e33a2c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xd2ed919f crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd30799da debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd315f0ac wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd32dbdb5 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd365f356 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xd36dfa85 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e3da93 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd3e61495 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd429a109 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd45c9f79 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cbd15c wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd4cdb201 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd51940e9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd529100f snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd547042f sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xd54ede1c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xd553b0ec usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd564f0ec debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd58d2a29 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd6448c0f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd65a4f41 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67d8256 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xd68f7e35 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6a36d45 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xd6a6e14a led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c83e16 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72360e9 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd783d84e sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7a9f0a6 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd7cd31ea max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd7e5bade filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250b0e amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd8672646 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8804eaf power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8ff30c8 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xd9410817 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94ee55a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xd956cdf6 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd9574f05 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd959f16c ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd978fa47 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd98a1274 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd9936d1b kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xd9d4bbc2 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd9d65764 snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9e44173 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9eef782 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda1c90fb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6742d3 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xda7b1989 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xda9a2bd3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xda9daa67 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdab4c23f crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xdad1184e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb3e5eef attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb41b320 __css_put +EXPORT_SYMBOL_GPL vmlinux 0xdb882e90 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba95fd5 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0xdbaad53f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdbdc469a css_id +EXPORT_SYMBOL_GPL vmlinux 0xdbe47526 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xdbf3a960 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1b73af class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdc42ad7e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdc4fd0bf __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4380f5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xdd6a1f6e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd9c1272 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xdda21a9d tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xddb4d139 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xddb596e5 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddb5ef3c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddedfa31 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xddf95a5a tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xde257f3f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde2c2c9e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde4f3a80 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xde7fca28 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xde84b2d0 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xdea7e785 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xdef7add8 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf206211 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xdf32125c device_register +EXPORT_SYMBOL_GPL vmlinux 0xdf5dfa3f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xdfaf30bf hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdfd20550 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01984bc ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe01a792a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05f57e2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe072b5f5 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe07a53ce sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe083fc1e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe08bea94 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe0b79e0c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0e027c2 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe0f1e53f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe0fa2dd2 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe13eaeb5 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe140bf9a tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe167a387 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe17edda5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe1cf4e64 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe1f309d3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xe20d2695 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe226d805 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe22d25e4 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe2445b46 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe2583226 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe2799099 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2a84110 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe2bb89e1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe2c1a788 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3292a91 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe350f71e __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe35bac32 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xe37b0327 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe37f2e4f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3cee0d1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe3e75a53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xe3f5c4c2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe479ace9 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe48890bc tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe5219b78 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe525f815 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe548e50a mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xe56554a8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5ad30e0 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe5b68fc7 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5d05917 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f93cc2 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0xe605815d snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xe608a45e cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe61caa9a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe642aacc sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6532bee aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe67363e6 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ddc48c blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7170d55 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe738a885 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7704e1a crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xe77d02c7 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe78beb9c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7a4ad0b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe7c52fb0 snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xe7d5bb66 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe7e51396 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xe7f41db8 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe7fcd9b4 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83e45cd ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe86049ab sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe8611953 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87a3bf0 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe8cffca8 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9676c91 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe9695e69 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xe9c2f46e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xe9eaf9eb platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xea061af2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea77fc68 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xea814c57 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xea8df3d3 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xea925f16 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xeabff6c4 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaeb4fc6 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xeb4f2ebe bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb157c8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xebd019c4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xec010ae9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xec03a6f5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4f1f55 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xec4ff8d4 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xec527b61 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xec77e5d1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xec9bb35f sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xecb23d2a crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xed053da9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xed16a780 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xed62b65b get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedc49414 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xedf0bb65 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xee088f76 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xee315eb0 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xee4ae36d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xee4d7720 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xee572364 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xee6446bd usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xeece1cdd crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xeefd62e1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xef356e9f ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xef3eefaa snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xefa314a5 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL vmlinux 0xefa6a97b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xefc24632 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xefd0c647 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0397610 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xf03eb403 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf052554c omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf0538c24 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xf092aa80 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xf0a2c504 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf0b7be48 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf0c5456d elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf0dcb4b1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf0f238e0 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0fe30f5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xf1123925 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xf134b947 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1ae3d2f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf28d18b8 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xf29a92d1 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xf2ad93cb max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2b92053 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf2ceff1b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311d30e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3607ff5 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf373bc99 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf389d88d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf38bf47c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf3a110d4 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf41cb38d sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xf421b4f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf445da38 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf4599ce5 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xf476e1ed __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf491de7d pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xf4921751 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4cfbad1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5483370 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b547e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf5a1cf05 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf60584d5 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf6785339 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf69da358 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf6b07ab8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f67ae1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf742d1bd ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf76949be snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xf7dd8dc5 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf7ffb790 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xf80e4473 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88670e4 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xf896a45d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf8bd2331 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9000681 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf908b8da blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf90b8bc2 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d046f0 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xf9fe284d usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa9e5b59 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfad315cf snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb33a69b dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xfb4364df __module_address +EXPORT_SYMBOL_GPL vmlinux 0xfb66a1b4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb4b460 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbc4bf09 device_add +EXPORT_SYMBOL_GPL vmlinux 0xfbeda43c devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc026e64 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfc19dda9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc478a68 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc58b637 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc597d7a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xfc6e4819 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xfc883ef9 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xfcaba808 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcbc914b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce24ea0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfd1dfd6c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfd1f9a61 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xfd6cd540 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xfd7cc1c3 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xfd973387 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdbd3cb1 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xfdd19a49 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdebea65 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe04176d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xfe16f0de relay_open +EXPORT_SYMBOL_GPL vmlinux 0xfe380b58 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xfe46dc40 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfe5c4c4b __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe5f0495 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfe6a4a8b blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe79862f usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfe97e911 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed21d23 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfef1b26f stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff4ecc9f register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5e4017 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xff6147f6 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0xff6acd9a ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xff73fa29 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xff7d34c2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffbe0dec dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffc8b098 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xffe0e6a4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1fa21 tpm_gen_interrupt --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armel/omap.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armel/omap.modules @@ -0,0 +1,2432 @@ +6lowpan +6pack +8021q +8250_dw +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +a3d +a8293 +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amba-pl011 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax25 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm5974 +bcma +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cmtp +cobra +coda +configfs +cordic +core +cp210x +cpia2 +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +davinci_cpdma +davinci_mdio +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlci +dlm +dm644x_ccdc +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dss1_divert +dummy +dvb-as102 +dvb-core +dvb-pll +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dw_wdt +dynapro +easycap +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +emif +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fm_drv +freevxfs +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +hfc4s8s_l1 +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_st5481 +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-designware-core +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1301_omap +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +kxsd9 +kxtj9 +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mailbox +mailbox_mach +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max63xx_wdt +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mk712 +mkiss +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +netrom +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +n_hdlc +nilfs2 +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +of_serial +old_belkin-sir +omap +omap2 +omap2430 +omap4-keypad +omap-aes +omap_hdq +omap-sham +omap-vout +omap_wdt +omfs +omninet +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +panel-acx565akm +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11-01b +panel-picodlp +parkbd +parport +parport_ax88796 +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcwd_usb +pda_power +peak_usb +pegasus +penmount +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +ser_gigaset +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-igep0020 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-omap3evm +snd-soc-omap3pandora +snd-soc-overo +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sdp3430 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-soc-zoom2 +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-omap2-mcspi +spi-pl022 +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +tcm_fc +tcm_loop +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test-kstrtox +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +tidspbridge +ti_hecc +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_tscadc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +uio_pdrv_genirq +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpfe_capture +vpss +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +warrior +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgmac +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/armel/omap.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/armel/omap.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp @@ -0,0 +1,12656 @@ +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 0x9c338a5f suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x4e214753 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7b55ff19 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x1950e289 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x23f18cb3 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2591ef94 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x57db50e2 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x777aabb2 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x7a29872f pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb6f600ac pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xbc4063db pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xc0bf13d3 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xdbf99a95 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xef3d60dd paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xf67e3dbf pi_write_block +EXPORT_SYMBOL drivers/char/apm-emulation 0x129e74f2 apm_get_power_status +EXPORT_SYMBOL drivers/char/apm-emulation 0xdf3329b8 apm_queue_event +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1e9988f6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x32eb7865 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x680e43f2 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7ee7bc92 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa30495d2 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/edac/edac_core 0x93a771e6 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x056645b6 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d23c012 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x118ca14a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ccc657d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21aa66f0 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21fa9181 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d17fe88 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3ff6ea3d fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4647f4c5 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x57479a7e fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x63e626aa fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x733e3375 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8b989169 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8dbe93a8 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9690d2a6 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x971aa1a5 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9831c17f fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9dfacae1 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa278132d fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb84a0ea6 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbbc1a25a fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7b8695f fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xddead5d6 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe180ed0d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe39bf31d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf420acb6 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e667cd drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04af1a05 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x090d1e34 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0adbaef5 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b04079c drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cf7a68e drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0de31c50 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e190131 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11ae8c7f drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12852d71 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12ec3f21 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x148bb5d4 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x155ba397 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15835a73 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15bd3ed1 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15fd0e1d drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x170a0c47 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1936d2ec drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a6c6742 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa77ee0 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b983a50 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bccdf4c drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c74a1b1 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f662c5a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fff09ed drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d98015 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2204f7b6 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23973e56 drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23b3d989 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x264e3e3c drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26e45580 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26e79a49 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28ea2fa4 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29fe7c18 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a8d844f drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c68d73c drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d20e5ca drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d8f002d drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e55e338 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f1631fa drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fa92b8e drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30f6b565 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31c22d8a drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33c7ecb4 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35a40149 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f2c485 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x370bfa38 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3803c018 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3abb6a0d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e267a80 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eefb3c7 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x404db35b drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4197e469 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42da366d drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4455dd7c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45cf3720 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46a13c20 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4833ac85 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48d6954d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48f5a737 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b65545b drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c2fcfb1 drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d3dbf20 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e2cd096 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e856544 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50113e9b drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b89ef4 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a5975c6 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c943c6e drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ca0aef1 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4e47d0 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6044956f drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x614061b4 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61ce0f7d drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x641536fb drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65ada918 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f59044 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66aa394a drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67f4de78 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68dc4088 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69ec2084 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a0865c7 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d7d7835 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e14858d drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e20589c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e3201fe drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70afc0b7 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70b6a2c6 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70c60380 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72c993c5 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x750a61c5 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7554ba4f drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7759e840 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790ccb52 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7938eb1c drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb26d39 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cea0a27 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d8fe09a drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e943421 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f715ad8 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff5a115 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff9b4f0 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80dbdab6 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81700779 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82cfc6a7 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e5660a drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83775813 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84618c38 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8673f665 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89004878 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89237a4c drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4d7e09 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d15d7d9 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dcaadfd drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e00664e drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e65e69f drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6b22c8 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90a9de46 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90bc60d2 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93548b7d drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93c2537c drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9612ac72 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983929db drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x993aea6f drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x998b974f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f91de4 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a386d0c drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b402ae6 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d5a9548 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e2433ef drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f2e8cbe drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f454da4 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa13a6c17 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1ca3a56 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1e7237e drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2ca02f0 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4290760 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa488381e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa75257b7 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7984573 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa827b2e0 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa2d5ba2 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab3054f1 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadc7eb8d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb08b46d7 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43783db drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb513af8c drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51549ec drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6702dce drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6cba8f7 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6dca714 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6f3f2e1 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb75a531a drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77aac78 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb802de60 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb896ff31 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb981e0a5 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9fa8d2c drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb1bdc1a drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc46d222 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd5eaec3 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf1f7a89 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09f79bd drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2634209 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8581d25 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbfbf8cc drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcee36692 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd143f242 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd431287e drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70f0801 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac78009 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbd2ba4e drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc687a84 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde486dbe drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde83c2f3 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe070369b drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe23037df drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2857f44 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4dc9784 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5e44546 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6403777 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeab095b2 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebea3e6d drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee6fc9a5 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee9594a0 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeee068aa drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeefaed6f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0567db4 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0b21ff4 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf10a80da drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3a36552 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4dfe0b4 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbb80ccc drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00aa7110 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03c88d2a drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ee50742 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22775659 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26c1c949 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b1661fe drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2da796d1 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31a34b21 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3358d59e drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43928eb9 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55433254 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55bf5e0f drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d48a64 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58eb7cd1 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ab4acc6 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c129695 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76403afe drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a9bf6f5 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b53e8be drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8667efc9 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b5526e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90572710 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x933ea903 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9587f43d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0f09878 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa98dacf4 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xadeaeadb drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3327352 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaeee4bb drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfa8a72a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd93051b9 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb090f67 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x08a76f15 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x6d0436e2 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xf1741ec1 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x029ffebb ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02ec4d86 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02f3c058 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d3a4641 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x124f3210 ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13cf5352 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14082d56 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d89df73 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x216e8a64 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21d1e9fa ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32aa41d1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33b9be49 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33e5b928 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3596e71c ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ee12790 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f9aeb79 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3fd155ed ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x41f1ef7b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46d7d410 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ea77b3f ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60f51868 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6275b8e7 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6596d919 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65f9de57 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66443f62 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75904d79 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7781c85d ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dcb1e64 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87eda6f6 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x940438e7 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9599529b ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9aa6884e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b2be07d ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d06ced6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d9286e1 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa068577d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa986d0f0 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa980572 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac843717 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaea69d04 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaee76074 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb70484eb ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc38c95c5 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc89bf5d2 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc77b06a ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccfc6918 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd57d3838 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd6af1571 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8e8af9b ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde13bd39 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe42a1ba1 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6af5d8b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedeef776 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedfe9b54 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1efc770 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf70efccd ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7afd394 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb7b1bc1 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x705de5f9 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x84294f5d i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x73f17cfc amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x0521b549 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x25de806e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2dcfc7e6 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x34f97ce7 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x3eafa2ee iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x4a9b67c3 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x4ef722f1 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5074639d iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x52d14ea1 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x7425a050 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x80e7ad69 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x86cbf6ad iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x8af28bf2 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8c6178a0 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x9a38bc4a iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xadfcf1a2 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xb512a4cb iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb5568f5f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xb68b0a31 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xca750b32 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xcd84d7d6 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xddeb3cc0 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe2e6d4cd iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xfd031cfe iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x308358ff iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x4200d811 iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x68377737 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 0x0f891b66 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x10b3bf00 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x414a66e9 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x45c40f27 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4fb5c68b ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x521ae0f7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x52f3497d ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x71825a08 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x73e7b367 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x854563a6 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa32735af ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb6d0d9c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc09e8e23 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc0c5ab3f ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc864b1f5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcdd2d9e3 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xea203255 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0081bceb ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00cbcbeb ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0add7d97 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0eb5fa87 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1025e9ae ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14aebfeb ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1823c60d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21e18013 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x241c02c6 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x321786f8 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x322ab29a ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x334ddb1b ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c584ca5 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e1ee48f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f306a7 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4101dd38 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x433eaa8d rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x455dabbc ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5062b79e ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5184ca4e ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5535bf32 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e5a07ed ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f0d6b60 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60f95811 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x667eced9 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6888dc07 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ac29f84 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7456eae7 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x773df0c4 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78238f09 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a378b66 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b6c046a ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x808087a2 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x817f9474 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x823c47c7 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83e3d236 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x843f4947 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84f66b2b ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8920c1bb ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ed0225c ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x923bc828 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9582b1ba ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0554d7b ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1c90872 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7eb7a1a ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa850ae70 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa95bcbcf ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa99a8101 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9e82bb5 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabdd6ed7 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad1f4376 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad4696ba ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadad13cd ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb241e416 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7d3775a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe622c6b ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf9c62f5 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1ceba5e ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1133b6d ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6b10a5c ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd88ebd98 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda26d48a ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdca3a2f5 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5d5920e ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe61e0cb1 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeac32ca1 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0f222b8 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf200883f ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf313302b ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbcf457e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd1c211e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfefa9f1b ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x07762d74 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c0e6d24 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1cdd4482 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x44cb5ca5 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4aebf331 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5039775f ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x673c7ead ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x839f1ce7 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x86bcf080 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb456924c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0745455 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdb0b69e5 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2526d255 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x393b49e8 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x71885da8 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x95a6e16d ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb5493236 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1abbbc7 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0951d6a3 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3c0cf328 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x552f8551 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x582a42b4 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x960c47ce iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd52aa2ba iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd65471d4 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeb27dd9e iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x01db1a69 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x031d34fd rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x323524eb rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x32d2ab51 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4fd4617f rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6eac3bec rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7be0a2e6 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7f2c12f9 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x975a37ba rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa8031458 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xac0850c4 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xada756da rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb369a363 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb9ea204f rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbb3edd40 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc895aefd rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc9ba8b28 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc2c661c rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe178257f rdma_destroy_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1ab2bc1d gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2d213148 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x617357d5 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8a4db418 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbc236020 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbf624b07 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd59d55a7 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd5a029b3 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfeaa47b2 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x19b2890d input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x696008a4 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc2efc947 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xed487ecb input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x03a2e42f matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x0d284bb2 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x62171533 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb33d5fc3 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xee68cc66 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd7e5d571 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3f20d8dd sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5678011c sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9d15b73c sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe7c5a541 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xea1473ea sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xef62a933 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd8013766 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xdfbf2005 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3db3f20a detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3f6500b6 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5b50f2a7 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5dd9c6c4 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5e282ab9 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6ae67c0a capi20_release +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 0x840d8a9c capi_ctr_ready +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 0xa3bdbb0f capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc1f1e57f capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf0269bd0 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1c0fb212 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25f7db39 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3e623379 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4a4e8d20 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x53363b3c b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5cbfe159 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x78341ede b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7e7137dc b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80dd7559 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb0cb1e6f b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb38d4a2d avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb41b29d2 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb9749632 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcd88f9d7 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xef7c7902 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x45be319e b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x60940ba3 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x810c98f1 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8fd57b26 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9af981f4 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc585f987 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc69bc9d5 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6c719b2 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf61272b8 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 0xaa97dcff proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x62574ad7 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x89d1da52 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb2b5897a mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xca30f28a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x34cb991c mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc5bb0d93 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 0x74b5baff 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 0x17bc8a76 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x369a2ffd isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x53490a86 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xed6d0b6b isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf1df6315 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa98ec0ef isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbbfa16ff isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xcc1bbed8 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03501b7a mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1f5ccc5e recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x22d02a68 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x27f28f66 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x27ff0d57 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5129a6fc dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x53f82142 recv_Bchannel +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 0x61058fcd mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x65744efc mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x66c1d269 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x94334a32 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9709ee2f mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x983a23b7 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa339b6a7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5829f83 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb56d7df1 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbbbf97e0 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc0dbe475 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc1a8266d mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc41fcc4e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf5ba93be mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf7a88517 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf95a1a5f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x38d73627 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x5c4ada87 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf51a733b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xfb88f86b dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x19062bb4 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1ad83f0e dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x24f0acc3 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbdd6b9dc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc4fb5fca dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf5d95e5f dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0xce4349f1 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0xfecba5a6 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x8d827cc4 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x33dd2504 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x62b5cec0 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0x4491f186 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x7b932366 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x925168db mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x873606e6 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x06bcadaa tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xd1d53466 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x58be2301 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x06e1446f xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x0a552dd3 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2eabc3b4 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x0edc0610 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1a331711 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1f8f8a95 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x34bf014a flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3c1ba219 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x51b21292 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5f216930 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6dbf8617 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x70144b82 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x7b819c22 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x7e6383fe flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9002d606 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xb1afe7fa flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbdbdcc18 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc115e03b flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc25ed742 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc2fd611a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc8097881 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe1c2f56d flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xfa3675cd flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x3463e15f bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x6f2d0429 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xc6d422c4 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xe5bef2ee bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0f72c9ab dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x3c83c4dd dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x53d434e7 dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x6f67b0ee dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x80127a09 read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa1d927eb dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa4ba46a0 write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xcd4beb3d dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xd4f5a8cc rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x41e062b1 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1beeffef dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x22d38d0b dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x284fd138 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2b0f85f1 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x327534eb dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3995c75b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5d185f7a dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6130acc8 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x67c5c8e2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6b5f6b59 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x777504dc dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7c240a9b dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8082a411 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e75a74 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8a8694a1 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x93a83ed6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9567943f dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa9340601 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3110592 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc41d93fb dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc6091cfa dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xcf54a885 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd1071206 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xeb974ce5 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xebde11ec dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf19c7666 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x1db1c050 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x3a293f93 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x5c035c58 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8123efa1 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x84ae820c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x90f1b441 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xb06314d5 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x8a657beb af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x01cec7a8 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x0766e906 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x2ef24531 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x40ade0d2 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x47f7dc25 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5bf2bb7c dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5ce4482d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x68a9d41d dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xc918a302 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd71b02ef dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xfb649a56 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x0f70d208 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xc85090e0 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0xfea0fa5d af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x3dcb0c16 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x3214c4f0 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x36611057 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x36b4dff8 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x70eb289b au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x7379d315 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x81eced0b au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x87c4bb86 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xfa2c03e0 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x98d4b2d7 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x712a2a44 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0xfa13fd35 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x95737062 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0xb5bc90ab cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x54277d9b cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xef816dc6 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0xcc1a6421 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x460adab1 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xf69755a2 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xb2c7155b cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x21a5f7c0 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39e58e74 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x64250a20 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa7abb525 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe5f9ed96 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0ef0ba36 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1df69815 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1fba6f22 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2dce451a dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4870bb4c dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4ac559cd dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x609eb1a1 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x82c12ae7 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x955e7ef0 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x95e282ab dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafacf45f dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc9f0804c dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcd685129 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcf70aa39 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe4fb1eab dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xc5d4ed0b dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x07a4e651 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x28dba3dd dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x57955827 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x80fd3b53 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xc4deb374 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd03d3368 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x21f7ed58 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x635e5205 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x9b12baef dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xa17fa0cf dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x077a5eaa dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x0d465345 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1afb298c dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1d506613 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x226ee782 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x49ae1f58 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cd0db6b dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x89638a8e dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8f3e3a40 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9de68308 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xaec048d9 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbfe48da8 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6e310e2 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe24ad28e dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfc1bd396 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x01a98e5f dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x046e10de dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x104bead5 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1d7ec6e5 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1ed4faa1 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2e08e000 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2ff27b29 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e5fa098 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4f4020f2 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x57dee713 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x60795903 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x653711a9 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x82596a9e dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa4af5ca5 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae0d743b dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb5af861d dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd8c1c3ad dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdcce9c9d dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe83132f5 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1df7a5a5 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x349d96b3 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x8ddd09a0 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbe8c629d dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xc13f19fa dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x753c8c46 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xc3cbe994 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x087939fb drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0xa9948242 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x43b91e9d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x069ddf55 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0x50e559ab isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0xa6582d69 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xe8a90216 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x546eb910 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe2ca0d35 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x8e3ef0aa ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x272bda4e l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0xf8b15175 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0xe0702550 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x605bd3d6 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x5d73a22b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x3b20177f lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xfcde903c lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe1036b10 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x97753a5c m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0xd81acc7c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0xdbfe8876 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x68aa0f1c mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x8e18ee65 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x091d734f nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xdda78156 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0x955af6da or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xb45e4852 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x0fb5f8bb rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xc722e0f2 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x51d7fb95 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x08b72e02 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x84ddbc2c s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9683e120 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x5f255ec4 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xb78671da si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xb4a60189 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x1306a83c sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x25f8c972 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x2eeb49e4 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xbf0043ac stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x5153177f stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x76562bb5 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x55fd81d3 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x05b70fe3 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x9f7d97cc stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xadefa6b5 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x11a867c1 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x27463170 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x507d1386 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x570fe15e stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x82f6b187 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xd5e7124e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xf70316e2 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x156b834b tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x7552cac4 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x0ca0b52e tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x0a033d1f tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0xf48a3024 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x75eb4071 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xbb0dd733 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x791935c0 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x66275821 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xbadd6ca3 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x5988b10f ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0xf8baec33 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x283d1a54 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xb995f746 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xf7ea164e ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0xc901f4eb ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0xe2c6f521 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x08cfe4f4 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1c9d1fac lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x859a9723 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x87e04b19 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8800c985 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x88c9456a lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x99dede4e lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe7d60495 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9c90b8b2 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xa48facea ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x0789af1c bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x72282b18 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xed12707e bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x7453238d btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe83e04aa btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x13fc0924 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x184a6a97 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x7fb76c6f cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xbc060be0 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xea139d20 cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x6c2ccd45 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x71a7dbc2 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4565735e cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x47db9dc8 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x98dbf5a2 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd23b3974 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xcde9b71b altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xce208cb0 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe4567882 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x0c7889af cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x22b17abb cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x33485a78 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x5a0ed118 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x65fe75ab cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x681afe78 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xcb080644 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe1ad65b2 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xf683dfdc cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x22bb399a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x7c6d5bdb vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x54f68b4d cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x622bc7c8 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x71e37634 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x855f5733 cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xb6704cdc cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xd7b2a01e cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x203f3aab cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x575f02f2 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x826be9b8 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x92231630 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xe0da750c cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xe6d7bd33 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x0a411118 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x156b9a26 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x1a71a6bb cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x20e76244 cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x284cd033 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x2e330c0d cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x33fcc395 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3dcd1db1 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x47ea75bd cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4a8349e0 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4e8f1076 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x55abf82f cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x59953a61 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6f0bb81c cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x934f1357 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x97d21b30 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x991962ff cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xaf6d0813 cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xbe4b76a6 cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xc77ce921 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf3086622 cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xfaa3e62a cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x80d7bd20 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x877c1613 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x30e4ae38 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x32dd091a gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3cc39ca8 gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x469d6be0 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x61dc2508 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6adcdfd6 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x7a118324 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xefd8f046 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x086f84ce ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x1545de06 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x22b8ca9d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x3b3daeb7 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x51003cf6 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x553162a3 ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6dc75fe7 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x8313ee05 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9a5dfdc4 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xa4d0181d ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xbf8df235 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xe14a39f5 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x10f3fd8d saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1312a8f3 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1620942f saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1a4d4493 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x45e5aa73 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6c6d789c saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6fab953f saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x890bc152 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xabb151d7 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb4a4bcba saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcf992d85 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xf657075a saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x0004c431 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x2e21fdcb soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x36034398 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9ca1f56d soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xb54c4c5c soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xd1c053cd soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x83f41a40 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x8c1b45e1 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xdd63fac8 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tveeprom 0x7c7085fd tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xc60cb98c tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x173ae3f7 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5b2972cd v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x039e3c35 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xe96ea1cb v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xf7dde784 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x58651b56 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6adc481d videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x709f00a1 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xa1b00bd0 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xc4ce885f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xcf90b5e1 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x4cd41545 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x04be4e00 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x052bc445 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x06b50278 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x08778101 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x095e1cd6 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x0fe6409e v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1993c6ec v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x1dce0e16 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x1fcf1df8 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x231c7f82 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x2af43071 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x2faeeb59 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3202d792 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x36fd7a2a v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4eb113d0 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x4fcda41a v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x59ecd283 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x5f3ff7b7 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x5f59a3a2 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x601e9054 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x621b93f4 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x68e2eaab v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7c7615e4 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x84b73dfb v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x84c42dd6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x87ec2b52 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x8e13fa13 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x8f42c443 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0xa5f6bd56 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xad85eb78 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb7fd9e6b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xbacc8336 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xbbe6f92b v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbc440573 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc80aaf1b v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xc9a43198 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xca78d878 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xe2777852 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe3ac3f43 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe6a424d8 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xee8fec65 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf07d7245 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf22acefa video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfbdbace4 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x1750a459 videocodec_register +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x30757169 videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x8cb9a94d videocodec_unregister +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xbf6deec9 videocodec_detach +EXPORT_SYMBOL drivers/memstick/core/memstick 0x013c9d79 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x44164aff memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x52631a25 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x562e31e8 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x67303b88 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x76f2503d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa684ef96 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbcf444e0 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcfec3fc9 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd42f87dd memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe3aa08d1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf2fdb998 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08bfc6c6 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x255b7a52 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x260f9a95 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3009b052 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3534af9e mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b05ee15 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x569de5a8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6707aa61 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a07df62 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6c96fab6 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6db489a1 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x768b8087 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c460bbc mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c74aa97 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7db840bf mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81b2733e mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x905f37b9 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadfbcb7e mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae7f6842 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb665cd0b mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbb5d978a mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd3a7af26 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd978ac76 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb532bd2 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe91df85d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf062f171 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf273623f mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf75924fb mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfabf0d0c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0add9fbe mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15ad2c15 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1ea3567e mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2dbc811f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3705ff16 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e355833 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f7158ce mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3febd6f6 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b20f144 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4cedf5b7 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x51e4bae2 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57921d79 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c446f28 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93be9d8f mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa89d53fe mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xab3c8677 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaf7f99ac mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba732df4 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd37dd62c mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd9b5ddd1 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe71b3f5d mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea17d1b5 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef8e5757 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7ab50d4 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7b337c4 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfdfc1815 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfe5d22cb mptscsih_host_reset +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x184c25b6 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1a7c7b1e i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x239862ee i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x399829ff i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x43b7cf16 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x68ce770d i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6c60a416 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f9af12e i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x92d556e4 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x93c7bceb i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x95f60eff i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x979ef1b6 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa159799f i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa5f23d84 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xca0281b5 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd908b62c i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe0014d88 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe31b56e6 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x6366c802 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xf4a89b34 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0a5009b2 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1ef5c777 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4e63e704 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6aa19d1b mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x767ce6af mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x770ef61f mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x86eb4cad mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa883b3aa mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa99fbd58 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb28719bd mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd4392985 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdef41391 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdf26d84c mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x2571a529 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x561dbeb0 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa93ec054 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x56433eb7 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x8bd57381 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd06d4fe4 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x835948b9 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xb9af1df0 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x3a4557eb ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x8f5c5723 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x34a0a068 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x4c6ce67b tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x594866f7 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x60bc501d tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x89baddd3 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x909c4cff tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x93010147 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xae7331be tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xc7b66221 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xea2090fd tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xfb4cd562 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfb5640db tifm_eject +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x38cc9cd7 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x99cc265b cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc2735267 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xeadaa8eb cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4bf690b0 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x978c92bc unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe3776784 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe6bfced4 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x13ca1184 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb92a93c3 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xa4e2d00a simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2fcf89cc mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x6db19c67 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x075ec6e9 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x58bbb83d nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x899c45ae nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe61b9f78 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xea176830 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf7bb78ea nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfd5e8368 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x014d2aa1 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x14c7cd71 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x20c90cb8 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x0cfb1d5f nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xa4cc7060 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0a897e0e flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7c6dfaa6 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb435002e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xcc50b623 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1e74bafe arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x389926da arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x53625165 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x57a80fcf arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x657184bb arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9eea3b6c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9eee4799 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa448c1f5 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb70e4caf arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe65941d8 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5984b56b com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6e301a15 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa580c0a6 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0f1070ba ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1cc6e9e9 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1fdd203b ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x50f6ceb3 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6167ab8c ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x76d0dd4c ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x770bcce2 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7857035c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x995fde46 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xac94e1b9 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0x557a1bfa bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x53089545 bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x116af5a8 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x21d65d15 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2c37fd40 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x306f8145 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x46afeeea t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4d421c2c cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa484b3b8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb96279aa cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb990e58c t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbd6f1d8b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc22533f3 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc2a55d1b cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc7332fc3 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xca3c9818 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe0bede53 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe4e462ff dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xee9c5e41 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x024d5c3f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09e1a44d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0cc90b4d cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x104d6abd cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28560e14 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3cda0429 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e5d3d29 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6978bb6f cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x762d1ad6 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x82ad5dc9 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93900614 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9a940f08 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xadbf98e7 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1238448 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xce53d643 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd367f6c4 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd61900f2 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde2bd04a cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5aa0c59 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2c5c7d1 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4427b8c0 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa58a7308 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0108d9c7 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05fd9b2e mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34f3fcaa mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ff99513 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x517f42d1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x808bdf01 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x843c8053 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87025d68 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87a87306 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfed7639 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x17ec6304 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x29295874 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2c6ccdcc hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd8ffda51 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf7f33b6b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x12d68645 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x168570ce sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x215fba69 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3598ee03 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4ee91497 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7f0868b9 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9182fb9b sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xafa2e6df sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb00ed271 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb030fc33 sirdev_put_instance +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa5ad3587 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xece25c8d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x050aa967 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5bad7e3d register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd4f014b1 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x89cc7845 sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x021fcc6b hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x093f0f0c alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49f64da2 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7208094b attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa93f4680 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb7626378 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc85a97c6 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcc331843 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd6cf1495 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xda92fa7e unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe25815fe hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x77fdf048 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x156e1779 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x55ab0461 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xa703b42c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1b61de0f ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3dd26ea7 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x447c0494 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x578f8540 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7d141560 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x851403d5 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa8832626 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe3cc252f ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xec8b9e66 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xef895a85 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0f5a863e ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2dec102e ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b7515db ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x69279bce ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6be56c8d ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x79e534a6 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8410a905 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x969d9def ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9f4249ed ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaaff3dbc ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0d315a56 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2a08226c ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5741189f ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x720af4aa ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0090a936 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01a07a6c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0452c7c9 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ad135d9 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b9ec7f4 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f9a1cee ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x140b8f6b ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18eb08be ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a0446f8 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b9302d5 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bd5d428 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c5dc08b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22521556 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2281798e ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2984a740 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3035629b ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33bfb374 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3631dbe5 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41ef5bed ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48d50b10 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b8964c0 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c7e9887 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dccc8b7 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51baed23 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ae102e1 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f2059b0 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x652e1808 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c9ac580 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ed57b2b ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71c4e6c5 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7339db5c ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76028c33 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7930c3ac ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b53d2e2 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bfd638f ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81ea9826 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86d452be ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a504155 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ea9d81f ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ec0c026 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x902bff41 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x949c03a8 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x980a78ee ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9addd234 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b075db8 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b4bcc55 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ba804b0 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cb53b84 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f17fd05 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa085cf7d ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa355dd88 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5109612 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9c56658 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa1be723 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac1ef7da ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf99e74f ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0c0313c ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2751cf6 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6838b44 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8bdb80c ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb94dbea9 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc2e5c11 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdaa3cd5 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0f9e713 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7ea1121 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfcb7138 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd07eb91e ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd2cdeb5b ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3371c4a ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd83ea462 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda8c09b2 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdaf185ce ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbd50f20 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd05ce1f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde92b533 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe133b08f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe63e05ba ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe70d30ef ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe79e7c15 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe81e6dab ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe86ed632 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe880f6dd ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9813272 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea7e79b9 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb85b622 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef1717a3 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef528adc ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1274b33 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf456fcf5 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf75dc056 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf803a054 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8d8e46a ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/atmel 0x491e6a7c atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe1b397f8 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf7d14712 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xd3f8cba2 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xdb47ac65 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0ba1b9bc brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x21dc7fe1 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2e18a915 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x342efd07 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x35f9aba7 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x40d49521 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x52bc847a brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5b0a5b45 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x93aedf20 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xced08d3d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf5c0372d brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xffcbf880 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x08b56eca hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c49d796 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e8eadef hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3036b26b hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x56448890 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5b59255a hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x72ceecf2 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8e272037 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x932fba08 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x96e30953 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x979bb06a hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa063fb76 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa733969e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa9c18bba hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xab716e13 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xacb98af7 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2e3a5af hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3b9f338 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb141608 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcf2a46ba hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7405fd5 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe8949ba4 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xee94ff95 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfb3572b1 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfd564cb4 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1738ffad libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c567e4d libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1fb03d10 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x202f9537 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d1e376e libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x548f3ec8 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x564ad166 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5877573e libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5cc288bd libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x61e86b07 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6e7063ba libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x72b89689 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7658d710 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7df476a1 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x98977c30 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9da71299 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaf8d68c2 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7178b6a libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc56a0d2a free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcf7201be libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf32e75fe libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x005971bc il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x065ab080 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0779cf08 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f51bb1b il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f69b068 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14cb5035 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a203c1d il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b5e5632 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c28a602 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f3e2273 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fdc6a60 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20845fe8 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21cf4ff6 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x222aed52 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2280c7d9 il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23dab63b il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a4fe050 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2adf99c9 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e56e667 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f4d1655 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3340ab21 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x337d194f il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3781d8cc il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37fb24c2 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dcb3018 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42de1a02 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x442d8791 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4787d3fb il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48e8c253 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e6f6ff5 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ed987b3 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51af1500 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54aedc20 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57835968 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57f081f9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x594ba1af il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5988a981 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59bdbbb2 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c9d9c0c il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x606f1d73 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x618d5673 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x649fef88 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x656fe6fa il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69b298f8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6aae231c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bb6457e il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6eb94ced il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72f6fac8 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76f5ef2b il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x779cd892 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e12b0b7 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f3f1eff il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x803672b1 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x808cb1d1 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x879fd5be il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89b849fe il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a160cd6 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c586d5e il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9109ca11 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93c76a8a il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bfc56d2 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5646145 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa63bd788 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa66d507d il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7355435 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7687577 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2328af0 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb26bc415 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb30cec2f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4825cb1 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb63bf60a il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8bae75f il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbcfbc20e il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbecff05d il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0f38158 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1498ade il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc18673e3 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3c5b9f9 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7c09044 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc94d66f7 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc678be5 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfb9392d il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3928f9d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd461f45d il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4c11ec9 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5d39158 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd65e7d94 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdab89862 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe761f54d il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec4ad3fe il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec5d678f il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefd3a5c3 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2b9b35b il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa02712b il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb02d6f4 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdca247b _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff711f64 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff750bf4 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1454608a __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1a1e749f orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26d3aa4e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x29157e28 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x488ae916 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5be2bb0c free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x636431a6 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa19afe16 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xad294860 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb7092227 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbd7c8e83 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcdd0fff7 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdf6b3d8a orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf5f2d43b orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf86ce706 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfdb2767c orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a7e5220 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x103e1764 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x144bd73e rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19df1bae _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1e645b00 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2320f684 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3278fa71 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48188566 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x487a8ae4 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x490f83fe rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x49a4947e rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x58f8d77f rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5d9eaf89 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x611eadc0 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x621abefa rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64f47c37 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6e0ba734 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78ead957 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a2f7f34 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7d17f1ed rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e533bb6 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x819dd4a3 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86108753 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86a34836 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8a64b8b8 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8cc6bad6 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x962995aa rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4a21774 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa5d38c7b rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb2cf2680 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3140279 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3629733 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc2c48f73 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc46e4875 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb3893cc _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc0e0aaf _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe0eeceff rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1251d2c _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xec674f32 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xef7a00f8 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf69cd56a _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7c5ecf0 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x13be8660 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1cfa1b5f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2cddc783 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x33ee35e7 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4a505139 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4c6fa4b3 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5fe36189 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79c976ca rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x819cc58e rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8275f6d3 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x99c98ad7 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9c8c8984 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9dc64de8 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e78f448 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xab61b34b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb7af0bd5 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8c763f8 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb9709534 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbc35d95f rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc876f938 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd09b2560 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0865a30 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf06429cc rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf65bc57b rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x787b53db wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd323b997 wl1271_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x169ddaa4 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x19e46f44 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x2411c301 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x253b44e2 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x30a3868d parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x34948d22 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3de17600 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x3f2e3d62 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5897fe80 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5a073c32 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5f63f66f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x70a23f0c parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x76eb1fcc parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x8314b2b2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x8d08212d parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x9309fdcc parport_write +EXPORT_SYMBOL drivers/parport/parport 0x99316022 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x9cf8b2d9 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xa391aa56 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xabe61f3d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb01e3be3 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xb1288f1a parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbd856d6f parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xc0116470 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xc3856092 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xc3946609 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xdc6b5a02 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe2526ed5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe872d0c2 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xead973ec parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport_pc 0x3177c600 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x5163db0f parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x054059c5 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x19e9ff78 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1fac7efd pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3004ed1b pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bcfb449 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bd78856 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3d50aa74 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3fca5098 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x59e218a3 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ef4b339 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6f55ad92 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89dbb35a pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xac9fafd4 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xae5497c5 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb2eac51d pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbd1e0154 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdf33c62f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe4dc89a7 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xff3c5978 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x09ab2b4a pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5fa802a3 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6c31f1f6 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7c815c8e pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8a41bbbf pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8bf99feb pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x96b66e11 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa1e0172c pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb0c82fc3 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xda06a272 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x26003ab4 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd3757f2f pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x8e916eef pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb3b3de48 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xba46b45b pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xea1d8adc pps_unregister_source +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0x557151cf bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1a1aab4a fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x264414ee fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2cb2b0d0 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x38bccc39 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4f6d0511 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x52992d52 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5e1508d0 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6c8530d3 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb07a920e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf72d641b fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfbff4d7b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10c55eb8 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12a42c07 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14673167 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x193249a9 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1999c73f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19e14e15 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2590bed3 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28a4655b fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x349b3cdc fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37539910 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x383d71be fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a007277 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f8db315 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x404e0980 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ba9154b fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x549054fc fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58cf96c7 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5e66bb55 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f5cb0a7 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dbadcdd fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72ca07de fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a6b95d9 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c3ff1e0 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f612e02 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81294153 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x858015e3 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x886711fb fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8cea1d15 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9127edc1 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x953c4537 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98087e24 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ea948ec fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa7f253b fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaacd9330 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb2bf40cb fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3311597 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb061c3b fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb358caf fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7c97615 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc818bd99 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbe60335 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcedacadf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfab5ce7 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4635036 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde91feaf fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe62ca361 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf15507a4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf33cb12a fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf5bd80bc fc_disc_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xccfe31b9 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13f0b920 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x145f4aa2 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16787199 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a267422 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x239010f3 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b41736c osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b4915e7 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b7c3bff osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3be5cbe0 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e8db1f7 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4066b39d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4165cad5 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4947bba3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4bf24661 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e302778 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5347fcce osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5559dbdf osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74048afc osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x822f649e osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x832782e3 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85b8c330 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8e1e9822 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e89b46d osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa314e939 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa374f7f3 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac479254 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb0a3c838 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb83d7096 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0a65996 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd1e3fc14 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd24c5006 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda2f10b5 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3657100 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb83b6eb osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6be1fef osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9b55674 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x18327ff8 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2a27d61e osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3d1264f0 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x46b44a9a osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x830886ee osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe4f9512e osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1c6277ef qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x31948332 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3f6d28f1 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x68d5d75c qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6b28f29f qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x747024b8 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8b93ee9a qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9cabf144 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb5d71696 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xeb272fd9 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfae06a61 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0d06cebd qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2b39f8d0 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3071ce8f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5e0d6ec3 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x881af7c1 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8f75578e qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x4e7735db raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x913ad199 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xb4d2e960 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x003086d2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0496fe43 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x166173fd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x26124a04 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x41dbc666 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5321b964 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x53b4b7cd fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61d21b9f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7489d95f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7686028b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x82027ad6 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x824c73ec fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8ae5d123 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x037a1286 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1daa641a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ddbbaf2 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f337f91 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3956d0e5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x508b1395 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x540c0653 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5917ade8 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f8620ce sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6a8211cf sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71a3644a sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b1b3de3 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c414094 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8486611c sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x85ff3ba1 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d47c81c sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae135ae7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf3bcb08 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaff0ed72 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc45ca736 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc4fbe36c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcd47c225 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd0a2477e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdcb30d60 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6ec983 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe7fa0269 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xebfe23ba sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf406a072 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x08cd4752 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4081087d spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x480a4002 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc675cb4e spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdd0df141 spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x05e63b47 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x06f57ef4 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x1d67aff1 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x3f953e5d ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x444dac4b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x46d5db72 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x63007460 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x74968a57 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8a4a33bb ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xa14346a9 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xa1d600d2 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc1870707 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xc3dec323 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc5b11833 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xca49c72a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xcc3e3586 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd3e5c67f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd5e1d40f ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xdcd7ffc3 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xf0b4c0fd ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf6ba38f9 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x52d443b4 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc8896dd4 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x0a93ce48 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xd9b4da41 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x05e232d7 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x5c7806bb iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x4ba9214f cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0e3778b8 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x47bae28e go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x4e78d609 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7bf1a8a5 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x83352027 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb7dd3981 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf2c805f0 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf53bbc61 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xfb947a46 go7007_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0577e281 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08f1c257 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ab4f180 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b40d379 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x159ad3f8 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b774257 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25f4c09a rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2aab8dfa rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b9d10d6 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3048dd65 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30c2025f rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ad93131 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x43eeacde rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x476d96aa rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e26f18a notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e8b833f Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x61a1d8ab rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6ef974a3 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70731d76 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7304fe5f rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74308b23 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x795ce73b rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d6d2e13 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7f4d2e29 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x827a2d7d alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x878786e2 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8796b7ce rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88fe7f06 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d277e87 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93016622 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94acdf43 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99fbadc8 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ccd603d rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fdecbec rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa0fa055d rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa60acddf rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8845665 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb4c5ebde rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb277558 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc26f473 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5c783d4 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8d49903 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcbb1e59d rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd24eaece rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd8f01506 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc588af0 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe21b4834 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4384bc5 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfac5d6c9 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe932356 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1482f7b1 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x161860d8 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1788adda ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1818f8b3 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1bde9cdf ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28309262 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29ce8003 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2bac8d59 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d2e46c5 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2fb20752 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x327c13d5 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3418d58d ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39332b33 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41cff44f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x46850974 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4737e09e ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d402ac7 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ba7ab6c ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c4f0749 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c8fa9f1 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7809dc55 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x791af323 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c408748 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7fb74061 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81135f57 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82725b8b HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b3e8d41 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c17a137 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90cebe44 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x932cb798 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96a8ac52 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xadcf907c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb87e59a7 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb970b136 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9b1e44d ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb1e122b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb21bfc5 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc319967c ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc678791c ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcda14720 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcdbf1e17 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5ae9855 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd61af68e ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd85559c1 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc0db09f ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdcdfb79c ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe35a7a53 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe5c88b69 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeccd9529 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3171542 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf488af06 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9745008 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc4595a0 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff4fcfcb ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x44da35a0 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x40f9895f phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x6025e82a phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x05dd426a transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x12ec0496 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x13188823 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x14ddf5af fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x164ecda7 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x186517da target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d933694 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x1fa57d86 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x26bd4004 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x29fd46f9 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ea9de39 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ec95c5d target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x32e60763 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x368db35a target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ec85b22 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x48f719bb target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b68b60e target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x50442cd0 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x53e8f5cb core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x55b677e9 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cbdf798 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e231316 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x65e9fd21 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x69f40dc4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ac1f71d transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x7242d634 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x75003fe9 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c619b8e target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ff637e8 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x82578382 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x88678114 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c116c71 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c3a14d2 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e8bab43 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x9559875e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x960d09fe iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x9830593d transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xa061d942 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1462bcc fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xa42dd654 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5cf4cc7 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8c9b00e target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xab74abb1 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xad5dc169 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf9a877f core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2f8c8f7 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6f5f458 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf85949c target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd13d948b iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xd26e2f12 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xd508b23f transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd50bb794 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0xd680f69d transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd69b2c63 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8a7a5b2 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xdcadd50a transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xdeb93594 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2190f82 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0xe52dade6 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb65c606 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd50ee10 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x76b78a67 serial8250_do_pm +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x7813f1ab serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xacaacc95 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xe87e9d8c serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xf7ee091c serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x0e24a6a7 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x274e1bda sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0705c936 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0887a9ab usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1762eb47 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x242c26d6 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6401f06a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6f398ea5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x74dabf7d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x84bf6074 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8852fd64 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa77b6144 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa7913692 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb78a53cf usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbcf9ff09 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xde1dba09 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeed49229 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x2ae12ecd usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc5bfc53b usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x158a3286 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x772ed6ec lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x44c9f028 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x32c442be matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xc8b57a20 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xed32ee59 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x2a970098 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x4738ddf7 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x73a757c8 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xdc5dadc2 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xf043b06a matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x5eb3d826 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1a3c4041 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x47670043 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7fece167 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xbdbb8dde matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x134f9fd6 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x75493e88 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5cd5102a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x7402aa54 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x899a78e2 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xd8514d16 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xfe83d5ca matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x365df69e mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x6dba6289 video_output_register +EXPORT_SYMBOL drivers/video/output 0xf3011c9b video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x08d97a05 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x76de28f4 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xa10d67f5 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xc796747e svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xd4a67b61 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe5f3863e svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xe63b27b8 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0xbf14c43a sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xfac8a699 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x0048da4c sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x0482a39d vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2527a087 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0x2cc6210c vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x2d5e59e4 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x58f931bc vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5c2517f7 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x63d4629d vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x645b783d vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x6485210c vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x66c71b93 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x68722bbf vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x7ae1f0e3 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8346f81b vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x84a69fdc vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x8935a8db vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x94b2590f vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa5a6c90d vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xad86fc40 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xbf07dc7a vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xc325afd3 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xeb4d43c4 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1a60e642 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4cef8238 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x7bc3c803 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xaa9e3284 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x29f7f58f w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4c397f6e w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6c49e4e1 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x17e5ea7e w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x267c66bf w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xf1c3d7f8 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x5f708f2b w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x6f4edfba w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xcd88bc92 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xe484f3fc w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x01c954ea config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x2731c80c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2d68b15b config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x68a3bbc7 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x76e0e875 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x896a33ca config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x995f4b9a configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9c63ee0d config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xc56b581a config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xec805ec5 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf2aa7744 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf87494d3 config_item_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x1814447c ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4b0e70c6 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x57802e5f ore_create +EXPORT_SYMBOL fs/exofs/libore 0x95c2c318 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa51a9393 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa8c9500b ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xaefd50aa ore_write +EXPORT_SYMBOL fs/exofs/libore 0xb8fa03b0 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xdbd13e01 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xf1cf3480 ore_read +EXPORT_SYMBOL fs/fscache/fscache 0x07158f46 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0db43655 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x0dc613a3 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x1927e7a2 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x1b303072 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2ea4fddb __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x38d0f195 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x4a0b8cf0 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4dfa55e3 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6164f9c4 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x64c9f4dd __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x65a37156 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x66870218 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6e0fa855 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a600c52 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x97b8ae11 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9df66725 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb5c5dfe8 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbb41e662 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbf44cabb fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcb5202a2 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe1edfd1e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf39d0ae4 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf88b9c54 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf89451d7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfa6189f2 __fscache_attr_changed +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x7ee3badb qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa4e547f1 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa7c2e0aa qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb634304c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xb778a5f0 qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x1a46afdf lc_find +EXPORT_SYMBOL lib/lru_cache 0x3800eb3f lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x40234646 lc_get +EXPORT_SYMBOL lib/lru_cache 0x4936228e lc_set +EXPORT_SYMBOL lib/lru_cache 0x4eb5f5f1 lc_put +EXPORT_SYMBOL lib/lru_cache 0x68131a82 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x7d2637d1 lc_del +EXPORT_SYMBOL lib/lru_cache 0x896876c0 lc_create +EXPORT_SYMBOL lib/lru_cache 0x92bd5ba2 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x95394182 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x9eba77c4 lc_changed +EXPORT_SYMBOL lib/lru_cache 0xc317be6a lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc8da7289 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xe0cbc80e lc_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x5d57d6cd unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd7759497 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x2f41c791 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x50186985 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x79a546ba unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x9c868d15 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0975fb8b p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x0faf4568 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1dcdf65f p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x20555dc6 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x20e8ada4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x21db7a12 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x23d1bd2a p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x3458da8a v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37285d85 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3e5fbdd3 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x465fe2a3 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x4b77e48e p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x4d017ba9 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x5af35f3b p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x5e8ce83c p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x64a06a99 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x64e94114 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x68d7a27c p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6f20bef9 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x6fa8653c p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x7184a6ac p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x849f562d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x856d2690 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x86c25332 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x8ed26ab8 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x90e89b01 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x91a9b679 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x91aec213 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x92545199 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa67e889c p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xae6d87c9 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb2595859 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xbe7f9d9c p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbfca9dbc p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc0d818bc p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd024f73f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xd405a591 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xdf0d4f6a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe23d2dc0 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe45fcd54 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5d186b8 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd8fa83a p9_client_create +EXPORT_SYMBOL net/appletalk/appletalk 0xe1d5397b aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xe73d1f93 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xeff02f7a atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xfaf96a7c atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x10ed0c49 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2a06cd78 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2ccb446d atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x34832fd1 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x3d74d3b6 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x43f78628 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x639aef16 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x898aa193 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9661484d register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9c2c7622 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9dac0563 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa43bd217 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd7a730c1 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf4b40861 atm_init_aal5 +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x20f72a19 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x291c6948 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x77aedb59 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x825cb05b ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xaa31a07c ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xb2d3f0a6 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd7968783 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xe11d36f2 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xfe399acb ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x046f1218 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04df23bc bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18769491 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21e9d2fb hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x29fefcb8 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2cc2f44e hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f1dd995 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x388481bf bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x39204f2c bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e923705 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x43edf6a3 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x449b7d22 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5297bc83 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x53086274 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x587f488f bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c94f9ff hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61d45e6f bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66050266 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x696ea15f hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73d36834 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74490e92 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7bbd0c23 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x812a3037 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x818f814a hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x880d0efa hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95be3c2d hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95ddf418 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x978a9c5e hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b3da4b8 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9df143e4 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ef64b85 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4df96f4 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb06b7abd bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb514a108 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb87f1935 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7d9d61f hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf06bcd31 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf9f7b8bf bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0x0fa1e00d br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x75176e46 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xdb254517 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf4eea149 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x13078493 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1a44b356 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa8b2e6be caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xcfdb3884 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xf8a80e05 caif_connect_client +EXPORT_SYMBOL net/can/can 0x16c47137 can_rx_register +EXPORT_SYMBOL net/can/can 0x26cc2ae3 can_ioctl +EXPORT_SYMBOL net/can/can 0xb43e23b3 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xd891f189 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xe0110c16 can_send +EXPORT_SYMBOL net/can/can 0xf4887eaa can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x00d2f426 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0ac5f4b8 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x12ac7e97 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x145eb47e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x15b6cc9c ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x20ce8a8e ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x2b6c36d7 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x30406ab4 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3932b69f ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c12fd56 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42a77b1e ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x4a9b4045 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x550daec4 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5e05f18d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x637f7107 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x660baad9 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x71a776fd ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x7309d139 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7907699c ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x7c4c74b9 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x7cc419bd ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x80e93921 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x82f6cdbe ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x841f1856 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x8c4ff0f8 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x91abb90d ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9bf3e8fd ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa33a297b ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa6b30058 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xa7fed803 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xaa975fd2 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xaba91b1e ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xad54d61a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbb062fbc ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xbc8a87bc ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xbed8c487 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb61409a __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcba41774 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xcd810bc0 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcf955cb0 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd573e137 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xd994eff2 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xe5517ca8 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xedb5ae94 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xf3c07c04 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf48d1888 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfcb97400 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xb5b23414 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x11ce0f17 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1ab57900 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1cdb760f ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1d920f5a ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x245d231e ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3731983a wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3eabb380 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x56958497 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x762265dc wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ea699b9 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbf808dd6 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xceb1a9f2 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf6af38da wpan_phy_alloc +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x84b9ca76 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xae164460 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd6146877 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x379b9919 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7a85ea45 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd7a1290f ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x3129c019 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x88d8ef98 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xab4b165b nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xb6de33dc nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xcac003a4 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xdd6a5345 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xfe779ead nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x24f1537d xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xd0a708ed xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x04202152 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x354bf235 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa11f8d4c ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbcbe8912 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0xade84e6a xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xe5f1923a xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3466201f xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xb7e80b45 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x02659d5e ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2711d6ef ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x711ee9e4 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x737671ac ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x77f257f2 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x80054387 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc115a290 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe55fd02b ircomm_close +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2b93e245 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x2ebcb86f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3cc26b7b async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3f38461e irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x42274635 irda_device_set_media_busy +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 0x49f138e5 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x51952a32 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x52ef979e irlap_open +EXPORT_SYMBOL net/irda/irda 0x5bcc4062 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x5d4457a3 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x66f11be5 iriap_open +EXPORT_SYMBOL net/irda/irda 0x6985b954 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x6e4465c9 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x6f9ec754 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x782349c2 iriap_close +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 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9d05d389 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x9e84c51e 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 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 0xc3759247 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xc4484b16 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xc4ee38c2 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcd39a243 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd081074c proc_irda +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe7112402 irlap_close +EXPORT_SYMBOL net/irda/irda 0xe942bae4 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf39b7fe0 irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf63fadbc irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xfa786569 irttp_connect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x11ee9457 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x35a176ac lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x5160c0ce lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x659c9dab lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x6b8eded8 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xae13aef1 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xd0989e82 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xd1e6f761 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xdeeb8b6c lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x015d3dff llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7e318029 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x8be884b0 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xd3a7aa9a llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xe4dc50a5 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xf007d0c3 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xf86793c9 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x0287028a ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x107a53f1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1a897b8f ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x26f4e3b3 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x286427de ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x28a21a32 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x2b60fcb8 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x2c33f38f rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x2f0edfbc __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x4442a43c ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x518b3865 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x54bae8a0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x54d7c0b6 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5e890960 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x5eeee59c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6327321d ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x64a65192 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x65b461d3 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x682ba6d1 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x6f4c15e9 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x73a8ceda ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7450ff35 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x75975c12 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x75f7c52f ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x779f3329 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x7928bca8 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x7b7f5f29 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x7e5f55e8 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x94c0a08a ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x9521206d ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x9b30f3a4 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa2a59b0c ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xad00c603 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xaed9934d ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb14cbcae ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xb830f66f ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbb6cb69b ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xbf2f1e82 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xc52d1ad4 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xca06121a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcc5a165a ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdc5ba1a4 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xddebcf84 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xde2287dc ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xf852c1ca ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf958cf29 ieee80211_queue_stopped +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x28f3f584 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x386b12d0 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x53e87dac unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5805eaac ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x75981072 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x76f89bb8 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7a215ff5 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbc814787 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xca5b7806 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcad1bb30 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd1b81da6 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd9c1559a ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdf1c5438 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfcb03709 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x30775dfa nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x4c5f8966 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xeff876d8 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xe89601d8 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x25627e09 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x2ec19605 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x334d6762 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x50936368 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x592e8cab xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa7388b2b xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xada6acf1 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xc54ac45d xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd0664844 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xed62ba8d xt_register_match +EXPORT_SYMBOL net/nfc/hci/hci 0x03281366 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0aebee16 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0c1bf6af nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x1421b391 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x260baf7b nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x3486626b nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x385f66db nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x3bb4b10d nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x550a743e nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6cbff2f3 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6d770296 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7fd3f979 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x8bd692cc nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb92c7181 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbacc1765 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbeef4315 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xc7047f0e nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xd2587405 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0xd3f19b69 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xf2752ca0 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0xf504256f nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x2554fbb5 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4bd33226 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x66d388cd nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xdd00ab88 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xf8395fd5 nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x051942a3 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x1a951143 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x2cc65ae3 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x2eb5459d nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x4fb9511c nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x58776ac5 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x78a412a1 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xae36de99 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xf2fc10f2 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xf8e9fa30 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xfb583278 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/phonet/phonet 0x123b9d8f pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x3acd3bca pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x74a4e989 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x88dbfa2a pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x8e4da57d phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xbd86aaa9 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xd6e57ddb phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xf3c1aeb5 phonet_proto_unregister +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0611f445 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x106b0876 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32603147 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x84ea9349 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x86b79bf1 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9c0a5156 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9d536f59 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa2d05aef rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa84f2616 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xaa984888 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb6744908 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb9e73db6 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1b74dd6 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe84602ce rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf2e3e0fa rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x7c0c1843 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x9f9eacba svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x13c7bc93 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x8824a813 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xfa8fe1c5 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x037a6f57 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a224939 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x0c9eb1f4 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x0e62e2cf cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x109af817 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x12cd5b43 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x2292d53f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x22ba5f51 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x29fe7c38 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x2afad517 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x2eb63085 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x2f299a3e wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x335350c9 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x3659ea2f cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x3991e944 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3a41a0a7 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x3ba853a5 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3f9a56df __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x47842f49 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x4bdd3d76 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4fb34257 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5351090a cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x56ddbd8d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a231633 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5ab129da cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x61963438 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x686182a4 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6ac0c81a wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x6e9d05eb cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7443fca9 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7bd255c6 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8255be8b cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x83486cee cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x89e60473 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x8c9e70f8 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99181c27 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xa07f888e cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa7e19e4d cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa81b1998 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xa9d1e043 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb4a0bc07 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb4ba571b wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xb92b2cd1 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbb8509d3 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbeb6672a cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xbfe596d0 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xd17aa955 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd355abe0 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xdc273d89 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xdc88848d cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xdda4bad8 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdfc104c7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xe05cd120 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xe5968a34 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xecb39508 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xeee5b37d wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xf05168c3 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf4997d41 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xf777605b wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xfd0a4c43 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfd5b4b6b cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0c71d48d lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x58577d83 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x68d53186 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9105ac41 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x9789ce91 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xfd51a628 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x9e49adb5 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x690ca46d snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0c98db57 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa29b5697 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc10d358b snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf021547d snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x94b859d8 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa46ce506 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xc9401d2c snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x154b405e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x157e35d9 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x167fb987 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x1779e0cd snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1c559318 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x200894c1 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x2320e7e6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2d7874bd snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x2d8a8fce snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x2fa21e33 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x38338447 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3d29a858 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x3e5d2301 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x4004c5ce snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x49abac6a snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4f91bc38 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x531a6850 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x553293ab snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x61f29fee snd_info_register +EXPORT_SYMBOL sound/core/snd 0x620ec350 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x6aecddef snd_device_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x718e8988 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x73931966 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x75d1ea5b snd_cards +EXPORT_SYMBOL sound/core/snd 0x782a9d52 snd_card_create +EXPORT_SYMBOL sound/core/snd 0x7c6947ad snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x86abf0de snd_card_register +EXPORT_SYMBOL sound/core/snd 0x8cc8740a snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x92e2bce1 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x998be952 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x9a85141c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa00a2175 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xaccdddb4 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xb1325418 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbc422128 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xbf9eaa03 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xc272c007 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xced72efd snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd3d29781 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xd520ed50 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xd8bfcf01 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xe3041040 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xe3aa7efc snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xe91169f1 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xf45cf035 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xf5a45788 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xf91c92e9 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xfbc619f4 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd-hwdep 0xb695e3e0 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06d256be snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1420d7bc snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x303b23d7 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x88845116 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xcd6fc826 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x02616005 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x06719b63 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x0a1c28e4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x11fa733f snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x15140e18 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1f26e665 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x267ab625 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2a55caf1 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x314d7403 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x33c575d0 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38a792d4 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3f117f87 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x4061f5f3 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x41243eab snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x440b0c71 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x58314561 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x5b94bf6c snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5d69b5e8 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x628d0225 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6653fac8 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7069b18d snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x86a61c88 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x88ad1d05 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x8bc6ae0a snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9a652849 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x9cd403f1 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x9cf009f1 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa92b83dc snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xb7619ded snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba6c94d9 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xbac40869 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xbeb5e91b _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc5447fb2 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd7dabe50 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xda2fe68a snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xdc9de154 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xdf385f24 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe745c60e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf02b8ce9 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf9c1822f snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xfcd3af2c snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xffd243f9 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x053a6e44 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0cc8f7f8 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e1e3522 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3ed15727 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4251e400 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54787604 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c5b7b11 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x821e2a97 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7a072c1 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaa7adfd4 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb1b3f27c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc01a84b3 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb441ab1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd82c3bd snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcf7e36ba snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd49fa39e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd9dbeea8 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x098d3073 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x0ea1f796 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x3c6b4694 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x473c2ec3 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x4d831565 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x530116ef snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x55b07c85 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x6e9874f2 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7198cfa2 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x8f696c8f snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xa926e4e6 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb464bd5a snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xbedd4a0d snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xb6c3ef3f snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0f511ee5 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50b2808a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x566c752f snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6cb9e5d8 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x932eeff8 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9af3fa24 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa5e7d440 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb09e0a64 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd4aedb12 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0cdb2909 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x32524bcd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7159bebb snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8342f9b4 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x97bbcbbc snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbaae28df snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd11b3b00 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xda59e7ff snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdb8245f8 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04e8b5cd cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x12c59bbc amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x15feb5fc fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x23ccb895 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27b5b7ac fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3706b34c iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49ef7756 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c722e26 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5462e552 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54fbf79c cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x591218f7 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64bc70be amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6db46acc cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83544c01 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91b19d1c snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ed19f51 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa679e4dc amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb3401825 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbab30bb4 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf45db2e amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc96ff4c iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd316b309 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd446a0ff fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9b3f4dd cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdffe6ffc amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf4f55e6a amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0de3933b snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x71a3d518 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8af204b9 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x925a122c snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc195002a snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xccb42128 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0128757d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1246d394 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x37f3d5ac snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x68011b9e snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa6691c38 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbbf7b120 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0677c658 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3d063cda snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x841eab88 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbd95029e snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x0b198b33 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb7c64bce snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x5fdd6fc0 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xe92a3d38 snd_tea575x_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3709eed4 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x38e3a11f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5d837b4e snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6f0851e5 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf3b99ef1 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x056133e1 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4b24da18 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x91863244 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa199b0d1 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa46a40da snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf07142f2 snd_i2c_sendbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x104484a0 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1ae3b4a8 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x35f80ba0 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3e94e115 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4a6251a7 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x81de6af1 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8aa8b3bd snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x90ad8b7c snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9f84349c snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf63f7288 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x107676ee snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x730d845c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xcfffb78d snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x160ba05a snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18222587 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x20b9e50b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x30dbd779 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x53a3765a snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c65d565 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7645a0a8 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x82097b6d snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b409d13 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9f1a9a55 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb15231db snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc4718ea3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd960941 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe425da09 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebcb4de1 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8965bbb snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfb9cd262 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x01eb6d73 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3480d1cc snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x578c99a0 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5f2d6c20 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa3288359 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa73e3d80 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa806d554 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd1934250 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf8aca718 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xff11b48f snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0a9155d2 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x2abb1d53 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdc9e0f11 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0377f701 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x24989574 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2977deb0 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3278f5e8 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4425c6f4 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x54f546f9 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62e80fd5 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c183460 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1739ce8 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8c43930 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb3d1a74b oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbbda8308 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc774ffd8 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd98142f3 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9b14173 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xda78b0c5 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3e9d0fd oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe67dc992 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xece2f9c3 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfc37e779 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xff8f8a0c oxygen_read16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0297b096 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x31449977 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x54f5d0ea snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5b7e7054 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb1954ad6 snd_trident_start_voice +EXPORT_SYMBOL sound/soundcore 0x01717cc9 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x118bbaa9 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x12b5be44 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x19076476 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x6d211c20 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8bd6576f register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2284012f snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x24f451aa snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4ccd90cb snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6d60eac1 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc283e83e snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe039b166 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x05fcdc35 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8b98068d snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xaba96e11 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbf13abfa __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9c05dc3 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xebd38a24 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf2970f80 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfe2a6340 snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x4b3dc200 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x000138af dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0073e39b inet_stream_connect +EXPORT_SYMBOL vmlinux 0x007bbd7a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x008dfde6 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x00c76429 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x00cce11a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x00cf0926 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01270367 dev_printk +EXPORT_SYMBOL vmlinux 0x0136426c pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x0149ee72 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x016315cd bdget_disk +EXPORT_SYMBOL vmlinux 0x016c49b3 dev_activate +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01980e5e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x019a9153 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01a8a7d5 elv_rb_find +EXPORT_SYMBOL vmlinux 0x01bef72a gen_pool_free +EXPORT_SYMBOL vmlinux 0x01c20893 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x01c8a9e0 read_dev_sector +EXPORT_SYMBOL vmlinux 0x01ced3f5 tty_check_change +EXPORT_SYMBOL vmlinux 0x01dae44d dquot_resume +EXPORT_SYMBOL vmlinux 0x01f5885a inode_init_once +EXPORT_SYMBOL vmlinux 0x020470ea con_copy_unimap +EXPORT_SYMBOL vmlinux 0x023ef7c8 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x0253707b kill_bdev +EXPORT_SYMBOL vmlinux 0x02626558 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02908471 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a29fe5 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x02a3417f dquot_operations +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c7d634 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x02d6949f deactivate_super +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e717ab nla_reserve +EXPORT_SYMBOL vmlinux 0x02ed597e mii_check_link +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0344ba19 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038adf22 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x038f80cf nf_register_hook +EXPORT_SYMBOL vmlinux 0x0392df8e flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x03994cd7 tty_register_device +EXPORT_SYMBOL vmlinux 0x03b462cf nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041288a1 module_refcount +EXPORT_SYMBOL vmlinux 0x041f5cc2 pci_bus_type +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0444639b flush_tlb_range +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045c0430 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x046baffb mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04730076 skb_pull +EXPORT_SYMBOL vmlinux 0x04737af0 scsi_print_result +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a46769 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x04b70dec fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x04b89d78 seq_path +EXPORT_SYMBOL vmlinux 0x04d5fba0 input_release_device +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f8e2f6 invalidate_partition +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052d3906 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054fe448 sock_release +EXPORT_SYMBOL vmlinux 0x056553dc tc_classify_compat +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x0571f29f neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0588b344 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x058abc3f fb_set_cmap +EXPORT_SYMBOL vmlinux 0x05a2ce81 __module_get +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a9724f pci_match_id +EXPORT_SYMBOL vmlinux 0x05ad666f inc_nlink +EXPORT_SYMBOL vmlinux 0x05b46759 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x05d6e257 set_create_files_as +EXPORT_SYMBOL vmlinux 0x05e1a0bd send_sig +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0644f0e3 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x0660ce0d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x0673b3b6 vfs_fsync +EXPORT_SYMBOL vmlinux 0x06754da8 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06a62520 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06c9fd51 seq_escape +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07180bbf set_anon_super +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x074989f8 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0755dd64 tcp_connect +EXPORT_SYMBOL vmlinux 0x076aa64a tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x0788a12f generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bbc8f4 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cdf834 agp_bridge +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x08047450 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0832ddff xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0886e779 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x0895bd1f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x089894ec page_follow_link_light +EXPORT_SYMBOL vmlinux 0x08ca72ca sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x08d7ff9f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x0914be8f tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x0979e122 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x097e187d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x0988b504 devm_free_irq +EXPORT_SYMBOL vmlinux 0x0988f940 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098e1d68 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x09954e37 phy_start +EXPORT_SYMBOL vmlinux 0x099fab17 simple_readpage +EXPORT_SYMBOL vmlinux 0x09c0d623 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e8b097 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09ec2928 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2b1ccb dm_unregister_target +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a40186a dcache_dir_open +EXPORT_SYMBOL vmlinux 0x0a4325df pci_enable_msix +EXPORT_SYMBOL vmlinux 0x0a43ad0d tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49ed56 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x0a6827de of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x0a88893b registered_fb +EXPORT_SYMBOL vmlinux 0x0a88a1c7 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x0ac60d66 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b0db189 skb_find_text +EXPORT_SYMBOL vmlinux 0x0b15e02d dm_get_device +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1db70f xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4924fe __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7b7f04 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x0b7ee37c module_layout +EXPORT_SYMBOL vmlinux 0x0b807f2c tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0b9388ad rtnl_notify +EXPORT_SYMBOL vmlinux 0x0bb17b87 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c00a7b1 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x0c047b3d i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x0c0b39a0 kill_block_super +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c21fe3e gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x0c2a30e4 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x0c33983e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x0c396217 cdev_add +EXPORT_SYMBOL vmlinux 0x0c3b5d0b qdisc_destroy +EXPORT_SYMBOL vmlinux 0x0c4f605e bio_clone +EXPORT_SYMBOL vmlinux 0x0c505de5 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x0c56c07c task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0c9eba12 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc28cb9 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x0cfc92d3 skb_make_writable +EXPORT_SYMBOL vmlinux 0x0d46798e set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0d50df6a dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d665713 inet_shutdown +EXPORT_SYMBOL vmlinux 0x0d742c35 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc6d922 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x0de951f3 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x0e0cd927 security_path_truncate +EXPORT_SYMBOL vmlinux 0x0e3065dc i2c_master_send +EXPORT_SYMBOL vmlinux 0x0e425431 inet_ioctl +EXPORT_SYMBOL vmlinux 0x0e4c313c agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x0e563fff ip_options_compile +EXPORT_SYMBOL vmlinux 0x0e5dddb3 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0e699e01 phy_disconnect +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7dbf2a dev_crit +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9341ff mount_ns +EXPORT_SYMBOL vmlinux 0x0ea0a185 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x0ec38884 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x0ed25fc5 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x0ee3c169 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x0ee8ec1a dev_uc_del +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0ef8c07e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0efa2426 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x0f0456a1 journal_load +EXPORT_SYMBOL vmlinux 0x0f0990fe __inet6_hash +EXPORT_SYMBOL vmlinux 0x0f0dc90d tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f42bd96 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5daf6d scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x0f6e20bc jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x0f7058b9 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x0f7a492e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x0f80916a skb_insert +EXPORT_SYMBOL vmlinux 0x0f88df01 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x0f9aac25 get_io_context +EXPORT_SYMBOL vmlinux 0x0fa493a8 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x0fa775b2 mutex_lock +EXPORT_SYMBOL vmlinux 0x0fa9b0b6 thaw_super +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fb0f936 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x0fd6ee01 seq_release_private +EXPORT_SYMBOL vmlinux 0x0fd9f552 d_genocide +EXPORT_SYMBOL vmlinux 0x0fdb31c5 netdev_notice +EXPORT_SYMBOL vmlinux 0x1049bc65 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x104dacf1 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x105bfc1c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x10724fdb nf_register_hooks +EXPORT_SYMBOL vmlinux 0x1076c666 md_flush_request +EXPORT_SYMBOL vmlinux 0x109a1f8b filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x109d78ad tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x10b97fc9 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x10d1fe4b tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x10d5b318 led_brightness_set +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fcf7e2 dquot_enable +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113403a2 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x11390f2b request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a2439 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x118e3ecd tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x11995749 journal_revoke +EXPORT_SYMBOL vmlinux 0x119c73ca sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x11bda425 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x11cf27a9 idr_destroy +EXPORT_SYMBOL vmlinux 0x11d000b7 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x11da78fb fb_find_mode +EXPORT_SYMBOL vmlinux 0x11db0a73 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12311084 ping_prot +EXPORT_SYMBOL vmlinux 0x12448d5c skb_store_bits +EXPORT_SYMBOL vmlinux 0x12581454 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x12598fe5 macio_release_resource +EXPORT_SYMBOL vmlinux 0x125ad011 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x1275c166 sock_no_listen +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a9e134 mmc_start_req +EXPORT_SYMBOL vmlinux 0x12ca8976 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12da731b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x12e5c1bb dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131ebe9e writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133a082f abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x133b4ee4 idr_get_next +EXPORT_SYMBOL vmlinux 0x13547e91 make_EII_client +EXPORT_SYMBOL vmlinux 0x1354e27e __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1383a4c7 dquot_release +EXPORT_SYMBOL vmlinux 0x13a5a19f input_allocate_device +EXPORT_SYMBOL vmlinux 0x13a9a3da abort_creds +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13b815a2 uart_match_port +EXPORT_SYMBOL vmlinux 0x13c013d4 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13da33ee mii_check_media +EXPORT_SYMBOL vmlinux 0x13df70fc nobh_write_begin +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13e488ff ppp_input +EXPORT_SYMBOL vmlinux 0x13ee087f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fc8b2c sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x13ff4b2a stop_tty +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x14435b2f unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x144a4cdc dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x144bb8a3 udp_proc_register +EXPORT_SYMBOL vmlinux 0x145a4111 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1472dfac tcp_disconnect +EXPORT_SYMBOL vmlinux 0x14777e52 inet6_getname +EXPORT_SYMBOL vmlinux 0x148d99ad of_find_property +EXPORT_SYMBOL vmlinux 0x148e698f dst_alloc +EXPORT_SYMBOL vmlinux 0x14b9dd28 mdiobus_register +EXPORT_SYMBOL vmlinux 0x14d0941d xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x14e837a0 idr_find +EXPORT_SYMBOL vmlinux 0x1520528e unregister_netdev +EXPORT_SYMBOL vmlinux 0x1545402e padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1555a1a0 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x1596a953 path_is_under +EXPORT_SYMBOL vmlinux 0x159bd567 file_update_time +EXPORT_SYMBOL vmlinux 0x15cd963b prepare_binprm +EXPORT_SYMBOL vmlinux 0x15d031a1 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x15e4d227 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x15ea6186 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162901f9 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x163a6b1b scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x167a6bab wake_up_process +EXPORT_SYMBOL vmlinux 0x16b1184d mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16cc6a40 bd_set_size +EXPORT_SYMBOL vmlinux 0x172dc1bb tcp_init_sock +EXPORT_SYMBOL vmlinux 0x174bf1ed genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177d33ec sk_common_release +EXPORT_SYMBOL vmlinux 0x178067be jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x1791cfbb md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x17a632f3 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x17a9bf19 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1de7c pci_get_device +EXPORT_SYMBOL vmlinux 0x17be71cf set_disk_ro +EXPORT_SYMBOL vmlinux 0x17c7b20b kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x17cc01f1 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17eb3ba7 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x17f2b386 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17ff6be4 mntget +EXPORT_SYMBOL vmlinux 0x18064d11 pci_pme_active +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184ba3f0 note_scsi_host +EXPORT_SYMBOL vmlinux 0x184ccdad __quota_error +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1873e845 commit_creds +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18c97f19 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x18f09075 bdput +EXPORT_SYMBOL vmlinux 0x19248de1 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x1926c423 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1936a835 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x193a5078 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x193bd9be scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x1942d7be mddev_congested +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19690ca5 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x196d0795 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a25772 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x19a649b4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x19b4acc8 pci_request_regions +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c7507a seq_write +EXPORT_SYMBOL vmlinux 0x19c7af4c kernel_connect +EXPORT_SYMBOL vmlinux 0x19d3d6d6 prepare_creds +EXPORT_SYMBOL vmlinux 0x19e43762 get_disk +EXPORT_SYMBOL vmlinux 0x1a0684f5 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a353823 kernel_read +EXPORT_SYMBOL vmlinux 0x1a3daa11 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x1a418959 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x1a5617f9 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x1a63c438 dcache_readdir +EXPORT_SYMBOL vmlinux 0x1a677d35 d_make_root +EXPORT_SYMBOL vmlinux 0x1a854de1 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x1a8891b3 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad2619f pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x1ae2948f scsi_target_resume +EXPORT_SYMBOL vmlinux 0x1ae94d65 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x1af2ef00 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b01f97f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b196595 pci_select_bars +EXPORT_SYMBOL vmlinux 0x1b1986a3 vfs_statfs +EXPORT_SYMBOL vmlinux 0x1b210bdd blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1b278ad4 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b702173 generic_show_options +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b932447 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba150d5 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x1baee8a9 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x1bb59a05 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x1bbbcf36 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bc9a115 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1bd5caeb icmpv6_send +EXPORT_SYMBOL vmlinux 0x1bdd41cd input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x1be5caf7 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x1be7a434 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x1bf2905e dev_emerg +EXPORT_SYMBOL vmlinux 0x1bf70b9e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x1c07a0ee fb_blank +EXPORT_SYMBOL vmlinux 0x1c3073e4 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c777c86 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c936e3a pci_domain_nr +EXPORT_SYMBOL vmlinux 0x1cbbddaa pcim_iomap +EXPORT_SYMBOL vmlinux 0x1cc14943 skb_dequeue +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cdbf386 tc_classify +EXPORT_SYMBOL vmlinux 0x1cdcd2b0 vmap +EXPORT_SYMBOL vmlinux 0x1ceda8f1 mac_find_mode +EXPORT_SYMBOL vmlinux 0x1cf2fd86 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x1d2a9249 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd384cd pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e0c9f6b padata_free +EXPORT_SYMBOL vmlinux 0x1e10289c dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x1e156da7 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3da223 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e755c2c netlink_ack +EXPORT_SYMBOL vmlinux 0x1e76cacc tcf_em_register +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ed11372 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x1edc03c8 giveup_altivec +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f010db3 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x1f0f10f8 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x1f1a01a7 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x1f2bc91a inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x1f40f1c3 module_put +EXPORT_SYMBOL vmlinux 0x1f43632c nf_setsockopt +EXPORT_SYMBOL vmlinux 0x1f47d789 vm_map_ram +EXPORT_SYMBOL vmlinux 0x1f4a444b sg_miter_start +EXPORT_SYMBOL vmlinux 0x1f5b5a89 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x1f653af0 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1f6674bb scsi_put_command +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9616bc netdev_alert +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd3362 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1fcd65ea vfs_readdir +EXPORT_SYMBOL vmlinux 0x1fe645f8 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x20210c74 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x2028f851 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x20341cb3 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x203a215a of_get_next_child +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x20469f6d macio_dev_get +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207322b1 __elv_add_request +EXPORT_SYMBOL vmlinux 0x20797318 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x2079764f tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x20964f47 generic_writepages +EXPORT_SYMBOL vmlinux 0x2097b52c sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x20a46ff9 update_time +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20acb59e dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x20b1a332 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x20b201d5 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0x20b3c255 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x20b9ead6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c7a35d mach_powermac +EXPORT_SYMBOL vmlinux 0x20dfe77d pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x20e1ba2e scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x20f7a932 simple_rmdir +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x2138fb40 sget +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21a3a583 scsi_init_io +EXPORT_SYMBOL vmlinux 0x21b659a1 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x21c30a05 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x2223a3b8 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2237bc5d mdio_bus_type +EXPORT_SYMBOL vmlinux 0x224c5868 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x226e81dc bio_copy_kern +EXPORT_SYMBOL vmlinux 0x226f1d26 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x2273a795 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22812617 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x2282ebb4 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x229565d1 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x22a1d63c simple_getattr +EXPORT_SYMBOL vmlinux 0x22a77529 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c47134 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x22c8fa31 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232c7dc5 dentry_open +EXPORT_SYMBOL vmlinux 0x23308773 get_user_pages +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23612f01 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x238c0a1e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x239fced0 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x23a33d48 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a72744 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x23a88684 ata_port_printk +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23d182f9 submit_bio +EXPORT_SYMBOL vmlinux 0x23e8006f inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f3968c locks_free_lock +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2416cde6 cont_write_begin +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2436df03 dget_parent +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24439e62 kobject_get +EXPORT_SYMBOL vmlinux 0x2447d0c4 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245aa008 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x245f84ee seq_open +EXPORT_SYMBOL vmlinux 0x2469e3bf thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2486fba3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x24ba641b rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x24d1dd69 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2502ebdb keyring_search +EXPORT_SYMBOL vmlinux 0x250ef950 pci_iomap +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252c8eae generic_listxattr +EXPORT_SYMBOL vmlinux 0x253182b0 unregister_nls +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x253ed4e0 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x25687138 tty_hangup +EXPORT_SYMBOL vmlinux 0x2573ae07 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x2577cf6d journal_abort +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e01b75 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x25e0bc01 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25fcdc6c scsi_execute +EXPORT_SYMBOL vmlinux 0x25ffe26d generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x2614da7f vm_event_states +EXPORT_SYMBOL vmlinux 0x26253aed dev_load +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2647088b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x265641a2 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x265ef2d9 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x268ed8d2 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x268f7e5c netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x2695e1c0 sg_miter_next +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c8a0db inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x26ddadad vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0df47 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x26f264f5 sock_no_getname +EXPORT_SYMBOL vmlinux 0x26fb4675 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x27198d1d xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x27244070 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x275c7056 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x27638d1b invalidate_bdev +EXPORT_SYMBOL vmlinux 0x276f6d75 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279a7b78 genl_notify +EXPORT_SYMBOL vmlinux 0x27b7ee7b add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f4fc2f pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28372abe phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x284f7ef7 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x2865d44d tty_devnum +EXPORT_SYMBOL vmlinux 0x286a6fb0 bio_put +EXPORT_SYMBOL vmlinux 0x287a3923 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x288b8967 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x289476fe tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x2894c043 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28aa5f20 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x28bd471d page_readlink +EXPORT_SYMBOL vmlinux 0x28c6a8c0 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x28d8fc14 security_path_symlink +EXPORT_SYMBOL vmlinux 0x28da322c dmam_pool_create +EXPORT_SYMBOL vmlinux 0x28f514ef cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x29392a11 init_buffer +EXPORT_SYMBOL vmlinux 0x293be3d2 poll_initwait +EXPORT_SYMBOL vmlinux 0x294da5e7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x294f1239 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2990824e d_obtain_alias +EXPORT_SYMBOL vmlinux 0x299e753c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x29a38fa0 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x29b1c366 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x29bddcf6 do_SAK +EXPORT_SYMBOL vmlinux 0x29e9f5f3 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a76f218 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a7eee4a __nlmsg_put +EXPORT_SYMBOL vmlinux 0x2a803c02 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2abd18ca fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2ae8fbbf do_splice_direct +EXPORT_SYMBOL vmlinux 0x2af3208b pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x2afdf72d mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b2110c4 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b79095e pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2b7b5963 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x2b91e35c neigh_event_ns +EXPORT_SYMBOL vmlinux 0x2b95f206 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bba1424 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2bead5ed tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x2c00bdf3 kset_register +EXPORT_SYMBOL vmlinux 0x2c0634fd block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2c083882 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x2c099477 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c282c26 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x2c535da5 __page_symlink +EXPORT_SYMBOL vmlinux 0x2c6a3f1e security_path_chown +EXPORT_SYMBOL vmlinux 0x2c6bebd1 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x2c6c974b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2c95cc22 unlock_buffer +EXPORT_SYMBOL vmlinux 0x2c96b5a7 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x2cae9506 blk_peek_request +EXPORT_SYMBOL vmlinux 0x2d00c477 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d639391 vga_put +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2dac06e9 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x2dae4e32 tty_mutex +EXPORT_SYMBOL vmlinux 0x2ddcf60a account_page_dirtied +EXPORT_SYMBOL vmlinux 0x2deb8b79 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0295ef lock_sock_fast +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e33fa1b bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2e36b76d inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x2e41d3b8 ata_print_version +EXPORT_SYMBOL vmlinux 0x2e504604 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x2e587798 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x2e734f17 key_revoke +EXPORT_SYMBOL vmlinux 0x2ea36d2c cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x2ec1c1be of_match_node +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec74c3f backlight_device_register +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0a10c6 machine_id +EXPORT_SYMBOL vmlinux 0x2f110110 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x2f2b1f50 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x2f3677a3 dcb_getapp +EXPORT_SYMBOL vmlinux 0x2f63adb0 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x2f8afa45 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x2f9165e3 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe8c52a inode_init_always +EXPORT_SYMBOL vmlinux 0x2fee3800 seq_puts +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x3023e35e qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x30367e7a ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x3046ea48 inet_frags_init +EXPORT_SYMBOL vmlinux 0x305e516a __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30839a21 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d70fa9 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x30e10756 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x30f5df7d pci_get_class +EXPORT_SYMBOL vmlinux 0x30fbc431 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310caf1d blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x3137bbe5 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314d7a38 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x315bcd1b netif_rx_ni +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31b20473 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x31bd4298 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x31bec756 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x31e3d387 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x31e9572e __breadahead +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f8a159 set_device_ro +EXPORT_SYMBOL vmlinux 0x3206bc47 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x3211a260 sock_map_fd +EXPORT_SYMBOL vmlinux 0x321d8228 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x3233799f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x325661dd dentry_unhash +EXPORT_SYMBOL vmlinux 0x3267b09b skb_copy +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328a4e85 scsi_device_get +EXPORT_SYMBOL vmlinux 0x32a9dce0 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x32ca1880 kernel_accept +EXPORT_SYMBOL vmlinux 0x32e347ce fifo_set_limit +EXPORT_SYMBOL vmlinux 0x32f0ed11 new_inode +EXPORT_SYMBOL vmlinux 0x32fb8feb phy_start_aneg +EXPORT_SYMBOL vmlinux 0x333cc8b8 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x334282bd cdrom_release +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33de4443 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x33ea5073 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x33ebe885 do_sync_write +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x34682457 pci_release_regions +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348443e4 user_path_at +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349220f9 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34ba939d agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x34e2b24a scsi_get_command +EXPORT_SYMBOL vmlinux 0x34ec7867 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x34fa82b3 pci_target_state +EXPORT_SYMBOL vmlinux 0x351cfdbe rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x354aa246 con_is_bound +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3588dcfc jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x358a5a4a kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x358b8542 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x35aad161 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3600bbe6 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x364d8cb1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x3685dc30 __getblk +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bbe248 __kfree_skb +EXPORT_SYMBOL vmlinux 0x36cf2e3f bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f0d169 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372bd8e7 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37635e41 __bio_clone +EXPORT_SYMBOL vmlinux 0x3768be9b pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x378a075a mach_chrp +EXPORT_SYMBOL vmlinux 0x3793ea33 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x37b5d7e2 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d35fec tty_kref_put +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x37ff03d7 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38440e39 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x38594003 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x387451e1 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x387ddec7 dev_addr_del +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38947ac7 skb_push +EXPORT_SYMBOL vmlinux 0x38a101a8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38cb584d simple_link +EXPORT_SYMBOL vmlinux 0x38cf0b66 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x38d8d83e padata_alloc +EXPORT_SYMBOL vmlinux 0x38ebe466 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393b1a90 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x395827f2 nobh_write_end +EXPORT_SYMBOL vmlinux 0x396a9b97 posix_test_lock +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399cdf0b pci_remove_bus +EXPORT_SYMBOL vmlinux 0x39cac334 proc_symlink +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d7edf5 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x39e2fa82 netif_device_detach +EXPORT_SYMBOL vmlinux 0x39ea2ec9 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x39f5b56f iget5_locked +EXPORT_SYMBOL vmlinux 0x3a22317f km_state_expired +EXPORT_SYMBOL vmlinux 0x3a227a1c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x3a3dd1ac blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x3a4edcde km_new_mapping +EXPORT_SYMBOL vmlinux 0x3a520a7e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x3a745c60 cdev_init +EXPORT_SYMBOL vmlinux 0x3a7bd8fe tcf_hash_search +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa23ebd eth_header_parse +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ada7824 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x3b0b7df3 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3b1bfad1 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b3fdb26 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3b521d30 serio_rescan +EXPORT_SYMBOL vmlinux 0x3b5ff701 neigh_for_each +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b7f6a2f gen_pool_create +EXPORT_SYMBOL vmlinux 0x3b88aec1 pci_enable_device +EXPORT_SYMBOL vmlinux 0x3bb1b2c5 dev_deactivate +EXPORT_SYMBOL vmlinux 0x3bb1cedb i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3bc0db8c input_flush_device +EXPORT_SYMBOL vmlinux 0x3bc3ce85 dev_get_flags +EXPORT_SYMBOL vmlinux 0x3bc716f5 nf_log_register +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c690818 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8bef74 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cb79884 may_umount +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceb9968 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x3cebaa1d devm_gpio_free +EXPORT_SYMBOL vmlinux 0x3d0b37a3 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x3d1e61b0 mb_cache_create +EXPORT_SYMBOL vmlinux 0x3d211826 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x3d26bf26 request_key +EXPORT_SYMBOL vmlinux 0x3d491765 elv_rb_add +EXPORT_SYMBOL vmlinux 0x3d4a1f6c padata_stop +EXPORT_SYMBOL vmlinux 0x3d5a5b5b sync_blockdev +EXPORT_SYMBOL vmlinux 0x3d5e94e3 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d975d4a journal_force_commit +EXPORT_SYMBOL vmlinux 0x3d9a71cb pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x3db66738 netif_device_attach +EXPORT_SYMBOL vmlinux 0x3db9e2f2 bdgrab +EXPORT_SYMBOL vmlinux 0x3dba63ea xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de2ff95 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x3df598fa netdev_printk +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e06e14f writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x3e109374 kill_fasync +EXPORT_SYMBOL vmlinux 0x3e190efd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x3e300f12 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x3e3feb8c bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e5d7527 proto_unregister +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 0x3ee8226c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x3ee8cd2f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x3f02b94c tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x3f033803 bioset_create +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f171949 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f57a069 d_alloc_name +EXPORT_SYMBOL vmlinux 0x3f5d096a __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x3f618380 netdev_change_features +EXPORT_SYMBOL vmlinux 0x3f66371d generic_file_llseek +EXPORT_SYMBOL vmlinux 0x3f698bb5 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fd31e2c journal_extend +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec3d64 path_get +EXPORT_SYMBOL vmlinux 0x3fecfb91 eth_type_trans +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x400107b4 generic_permission +EXPORT_SYMBOL vmlinux 0x400869e0 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403f4406 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40624ac1 dump_write +EXPORT_SYMBOL vmlinux 0x4081140d sock_no_accept +EXPORT_SYMBOL vmlinux 0x408f714d netdev_features_change +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d972a5 netlink_unicast +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x410a208d lock_may_write +EXPORT_SYMBOL vmlinux 0x410d1522 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x4116d179 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415bfaab unregister_binfmt +EXPORT_SYMBOL vmlinux 0x41779437 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418c4cfe mdiobus_read +EXPORT_SYMBOL vmlinux 0x41c1b4ed blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x41e5299d neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42163c60 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x421ff8b2 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x42405636 dev_open +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425bd322 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x425d6aa4 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x42674d7d twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x42914b61 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42c6c4f5 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x42eca78b security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x42f5b876 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431bd094 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x431eee01 sock_rfree +EXPORT_SYMBOL vmlinux 0x4334ac19 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4339d15e security_file_permission +EXPORT_SYMBOL vmlinux 0x4348939b md_register_thread +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43599355 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4382e362 iunique +EXPORT_SYMBOL vmlinux 0x43956a35 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43a40576 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x43a6d907 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43ff22e0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x4409f3eb unregister_filesystem +EXPORT_SYMBOL vmlinux 0x440ed8e6 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x44128b55 udp_ioctl +EXPORT_SYMBOL vmlinux 0x441a7277 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x4430c75c ida_pre_get +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444443ca rfkill_alloc +EXPORT_SYMBOL vmlinux 0x445733d7 udp_disconnect +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44bb81a5 account_page_redirty +EXPORT_SYMBOL vmlinux 0x44d8f1e7 freeze_bdev +EXPORT_SYMBOL vmlinux 0x44e24fd2 mapping_tagged +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ee0554 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x44f165fb tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x44fd836b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x45159fa5 sk_stream_error +EXPORT_SYMBOL vmlinux 0x452ae5f4 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x452b51f8 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454dbce0 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x4550a872 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x45698952 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x45778cd5 give_up_console +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457a773f fb_validate_mode +EXPORT_SYMBOL vmlinux 0x457b1718 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x459f09eb scsi_execute_req +EXPORT_SYMBOL vmlinux 0x45b85099 single_release +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c1e7f8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45f32f4f mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x4605d624 inet_put_port +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46447de3 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x46455cc2 page_symlink +EXPORT_SYMBOL vmlinux 0x465504df setattr_copy +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465c6497 build_skb +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46962b86 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x46caa349 elevator_change +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46def95c vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471326f2 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47687890 secpath_dup +EXPORT_SYMBOL vmlinux 0x477ac6ab iget_locked +EXPORT_SYMBOL vmlinux 0x477ff20e remove_proc_entry +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b1062f __get_page_tail +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47d35394 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x47e30827 __rta_fill +EXPORT_SYMBOL vmlinux 0x48000553 mempool_create_node +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x481f5514 sock_register +EXPORT_SYMBOL vmlinux 0x4828682a noop_qdisc +EXPORT_SYMBOL vmlinux 0x48316726 pci_restore_state +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x485558ee netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x48577500 udp_poll +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4862389a inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x4870a1d4 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x4874988f thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x489afecc blk_complete_request +EXPORT_SYMBOL vmlinux 0x48c6a0fd inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49091799 neigh_destroy +EXPORT_SYMBOL vmlinux 0x490be3fe mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x492a58b1 __break_lease +EXPORT_SYMBOL vmlinux 0x494b23de devm_ioremap +EXPORT_SYMBOL vmlinux 0x494b84c3 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x494c993a max8998_write_reg +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4996a908 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x499acd26 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b792ef unlock_rename +EXPORT_SYMBOL vmlinux 0x49bb575a jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x49c4fdbb find_lock_page +EXPORT_SYMBOL vmlinux 0x49da7b8d bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x4a13c17a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4a290d4d cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a41f633 vfs_write +EXPORT_SYMBOL vmlinux 0x4a50e115 blk_get_request +EXPORT_SYMBOL vmlinux 0x4a60ddbd udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x4aad683e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x4aae2e40 of_device_is_available +EXPORT_SYMBOL vmlinux 0x4ab1ecd3 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4af0e446 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b02d8d0 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x4b032dfa journal_update_format +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b255ce1 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x4b3469b2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b35a584 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b624d57 seq_release +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b94bf71 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x4bdb8a35 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x4bdcba06 dev_uc_init +EXPORT_SYMBOL vmlinux 0x4be1cd42 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4bec1aa1 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c1ea374 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c44fb30 bio_free +EXPORT_SYMBOL vmlinux 0x4c46cd2d dev_uc_flush +EXPORT_SYMBOL vmlinux 0x4c56baa1 key_alloc +EXPORT_SYMBOL vmlinux 0x4c5ec08e security_path_mkdir +EXPORT_SYMBOL vmlinux 0x4c66255c fb_set_suspend +EXPORT_SYMBOL vmlinux 0x4c912c2a nf_afinfo +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce019ca bmap +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cfbfae4 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3c7979 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5bc998 alloc_disk +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4da7df69 skb_unlink +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dd9c847 udp_seq_open +EXPORT_SYMBOL vmlinux 0x4de50507 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x4de8f1dd blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfc73fd blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x4dfd916f block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4dff7196 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e0b9a7b ip6_route_output +EXPORT_SYMBOL vmlinux 0x4e1e1b1d pci_find_capability +EXPORT_SYMBOL vmlinux 0x4e31ff48 blk_free_tags +EXPORT_SYMBOL vmlinux 0x4e34177d __scm_send +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e5e17f9 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e893fda vfs_unlink +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ed2f8a2 nf_log_packet +EXPORT_SYMBOL vmlinux 0x4ee74e47 ps2_init +EXPORT_SYMBOL vmlinux 0x4ef28905 do_truncate +EXPORT_SYMBOL vmlinux 0x4ef5a809 journal_destroy +EXPORT_SYMBOL vmlinux 0x4f092de0 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4f0e6d37 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x4f0eac52 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f392137 arp_find +EXPORT_SYMBOL vmlinux 0x4f4fadf8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4f54c8a3 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4fa1f054 dev_change_flags +EXPORT_SYMBOL vmlinux 0x4fa8be3e migrate_page +EXPORT_SYMBOL vmlinux 0x4fb4fb13 __d_drop +EXPORT_SYMBOL vmlinux 0x4fbf6b07 setup_new_exec +EXPORT_SYMBOL vmlinux 0x4fd792cf twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe78d35 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x503621cf dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x503bc069 end_page_writeback +EXPORT_SYMBOL vmlinux 0x50408134 override_creds +EXPORT_SYMBOL vmlinux 0x50522b9a find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x506ee58f vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509f0031 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x50c55735 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x50e937b5 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x510eac4d blk_stop_queue +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143b349 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5167e49f pci_dev_put +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x519b8336 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x519e18a5 wireless_send_event +EXPORT_SYMBOL vmlinux 0x51baf8a2 dquot_destroy +EXPORT_SYMBOL vmlinux 0x51d5d37c unregister_key_type +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e458c5 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x523059b1 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x52390fe4 is_container_init +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5248bab3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x524cd220 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x5253f142 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x525efc6a tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x5260df6b fd_install +EXPORT_SYMBOL vmlinux 0x52685557 key_invalidate +EXPORT_SYMBOL vmlinux 0x526f7211 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x52749c90 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52786025 pci_save_state +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52a6d0b6 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52de881a blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x532bb7d1 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x532c2ef5 bio_alloc +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5332831b dquot_file_open +EXPORT_SYMBOL vmlinux 0x5358e1ff user_path_create +EXPORT_SYMBOL vmlinux 0x53719a80 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x537238c5 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ca4b0e phy_detach +EXPORT_SYMBOL vmlinux 0x53d686fc skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x53e384ef genphy_resume +EXPORT_SYMBOL vmlinux 0x53e5cf7f inet_frag_kill +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ff030a __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5432d6d8 tty_set_operations +EXPORT_SYMBOL vmlinux 0x543e1cc7 block_write_full_page +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545c9009 dev_get_stats +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x54892e6f mount_bdev +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54d6fdd2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f0237d macio_dev_put +EXPORT_SYMBOL vmlinux 0x550adef1 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x551dc3d3 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x552cc1ce kernel_listen +EXPORT_SYMBOL vmlinux 0x552f6a8a iput +EXPORT_SYMBOL vmlinux 0x55304932 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x555421ec of_find_matching_node +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x558deb77 phy_stop +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55a9d57e i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x55beeef0 input_register_handler +EXPORT_SYMBOL vmlinux 0x55d75a99 sock_init_data +EXPORT_SYMBOL vmlinux 0x55eebf98 __destroy_inode +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563a9583 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x564b0aa6 mdiobus_write +EXPORT_SYMBOL vmlinux 0x56666a2e inode_dio_wait +EXPORT_SYMBOL vmlinux 0x568675aa seq_bitmap +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56b3e0f8 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f03d16 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x5702514c input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x57146274 drop_nlink +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57356e9e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x5745fb74 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x578c8b3d macio_request_resources +EXPORT_SYMBOL vmlinux 0x57a00eac padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x57b0a851 no_llseek +EXPORT_SYMBOL vmlinux 0x57c46ff5 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x57dc1e6d scsi_host_put +EXPORT_SYMBOL vmlinux 0x57e62a72 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x57e66187 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x57e8c8dc jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x57f502d5 brioctl_set +EXPORT_SYMBOL vmlinux 0x58083b6c arp_xmit +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584c52e2 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x5857998b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587e18cb xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x588fe209 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x5890d1fd pcim_pin_device +EXPORT_SYMBOL vmlinux 0x58aafeee blk_delay_queue +EXPORT_SYMBOL vmlinux 0x58f1962b pci_read_vpd +EXPORT_SYMBOL vmlinux 0x58f248ff padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x58f9be2e d_delete +EXPORT_SYMBOL vmlinux 0x5932b737 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593d3fe9 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x594b5d3d skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5952bbf4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x595b7e9a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596989e2 kobject_set_name +EXPORT_SYMBOL vmlinux 0x59a0d479 icmp_send +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59b46d66 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x59c10543 journal_flush +EXPORT_SYMBOL vmlinux 0x59c26dd5 __netif_schedule +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59dcaeef scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59ee9ddd fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x5a52f0c6 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5ad11f7c xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5ad51d59 ip_fragment +EXPORT_SYMBOL vmlinux 0x5af0be3d inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x5b0083c2 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4f0618 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x5b68cf7c blk_make_request +EXPORT_SYMBOL vmlinux 0x5b94a773 page_address +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb0a950 dst_release +EXPORT_SYMBOL vmlinux 0x5c0b2e7b try_module_get +EXPORT_SYMBOL vmlinux 0x5c226e32 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x5c23c063 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c31217e skb_put +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3ea5cd dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5c55578c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x5c575cd2 start_tty +EXPORT_SYMBOL vmlinux 0x5c5911fe jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x5ca1e779 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x5caf979a netif_carrier_on +EXPORT_SYMBOL vmlinux 0x5cb1f9c0 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x5ccf17c0 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x5ce1a942 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x5cf98073 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d17398b blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x5d262351 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x5d440ef5 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x5d5437a4 key_type_keyring +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d7078de inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x5d88b957 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x5daf391b __napi_complete +EXPORT_SYMBOL vmlinux 0x5dbbe598 find_or_create_page +EXPORT_SYMBOL vmlinux 0x5dcc4804 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x5dcdb0fa dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x5dec5a27 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5e133444 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5e20e51c d_prune_aliases +EXPORT_SYMBOL vmlinux 0x5e3a3b9c vmtruncate +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3f924b mmc_can_reset +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e5c6bc2 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e830f39 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x5e862a0c __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x5e92561b mmc_remove_host +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed9d4c3 journal_wipe +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef8d38f dma_pool_create +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0ef9bc i2c_clients_command +EXPORT_SYMBOL vmlinux 0x5f207b15 register_netdev +EXPORT_SYMBOL vmlinux 0x5f2eb9d3 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f54f310 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x5f559fb3 mnt_pin +EXPORT_SYMBOL vmlinux 0x5f6e58d0 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fbbd39b kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5fbc5552 dev_err +EXPORT_SYMBOL vmlinux 0x5fbdfb68 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x5fdf5e3f tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x5fe074b2 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6020a11e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6046da82 bio_map_user +EXPORT_SYMBOL vmlinux 0x604aebda bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6087fe7e unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x608a4948 kthread_bind +EXPORT_SYMBOL vmlinux 0x608b9fbd xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x609d0d46 mntput +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60dd66ba xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x60e9e4f6 security_path_unlink +EXPORT_SYMBOL vmlinux 0x611af65a tcp_child_process +EXPORT_SYMBOL vmlinux 0x6121a38e journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61365284 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x614a2a32 mount_single +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x61821cdd pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x61addc64 d_instantiate +EXPORT_SYMBOL vmlinux 0x61ae6bd2 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ca695b pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x61e708e4 kunmap_high +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fd4f5b dev_mc_add +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x625a0a67 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x626567a7 set_page_dirty +EXPORT_SYMBOL vmlinux 0x626aebaa inet_frags_fini +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6275c133 i2c_release_client +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628332e8 pmu_power_flags +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629321c7 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x62d7d02c sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63605f7c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x637b66b1 may_umount_tree +EXPORT_SYMBOL vmlinux 0x638b335f mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63cd13ec do_splice_to +EXPORT_SYMBOL vmlinux 0x63cf994b write_one_page +EXPORT_SYMBOL vmlinux 0x63e99b87 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f007aa scsi_scan_target +EXPORT_SYMBOL vmlinux 0x63f9d23d blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64078397 bh_submit_read +EXPORT_SYMBOL vmlinux 0x640fe7ac inode_get_bytes +EXPORT_SYMBOL vmlinux 0x64256742 seq_putc +EXPORT_SYMBOL vmlinux 0x6465c63d phy_print_status +EXPORT_SYMBOL vmlinux 0x64693219 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64e3161a md_check_recovery +EXPORT_SYMBOL vmlinux 0x64f17046 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x650b5085 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651616e3 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65443550 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x65452060 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x65577a18 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x65614ff7 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x657721fb swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x6591f1d7 generic_setxattr +EXPORT_SYMBOL vmlinux 0x6593008c genphy_read_status +EXPORT_SYMBOL vmlinux 0x6598daef devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cb52b1 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e961c8 mpage_writepage +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f7be35 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x660c1120 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x660c7262 vfs_writev +EXPORT_SYMBOL vmlinux 0x66106ea5 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x663f08e2 pci_clear_master +EXPORT_SYMBOL vmlinux 0x6667d6ea scsi_device_put +EXPORT_SYMBOL vmlinux 0x6667f66a vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x667bafce sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x6683e333 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66b8271d check_disk_size_change +EXPORT_SYMBOL vmlinux 0x66c64ebd tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x66cb4379 release_pages +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66fbefce agp_generic_enable +EXPORT_SYMBOL vmlinux 0x672a37fe mutex_trylock +EXPORT_SYMBOL vmlinux 0x6734ce96 key_link +EXPORT_SYMBOL vmlinux 0x673c1518 sock_no_connect +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6754d236 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x6758590b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x676223dc drop_super +EXPORT_SYMBOL vmlinux 0x6780bee2 netlink_set_err +EXPORT_SYMBOL vmlinux 0x67a49e04 padata_do_serial +EXPORT_SYMBOL vmlinux 0x67b65408 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d702ae mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x67f103e2 inode_init_owner +EXPORT_SYMBOL vmlinux 0x67f79eee pci_fixup_device +EXPORT_SYMBOL vmlinux 0x680d35d1 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x682e09e5 netdev_warn +EXPORT_SYMBOL vmlinux 0x683f4a39 mmc_erase +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x684da779 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6874e33d ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x688fa780 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6894dfea sockfd_lookup +EXPORT_SYMBOL vmlinux 0x68abfdb4 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x68df8db2 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e0e289 idr_remove +EXPORT_SYMBOL vmlinux 0x69275b96 genphy_suspend +EXPORT_SYMBOL vmlinux 0x69292976 d_invalidate +EXPORT_SYMBOL vmlinux 0x693b7c26 freeze_super +EXPORT_SYMBOL vmlinux 0x693ec807 dcb_setapp +EXPORT_SYMBOL vmlinux 0x694a1f83 tty_free_termios +EXPORT_SYMBOL vmlinux 0x696cba93 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69790158 __netdev_printk +EXPORT_SYMBOL vmlinux 0x6999cc46 __dev_printk +EXPORT_SYMBOL vmlinux 0x699f3cf6 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x69a001b7 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a8519d ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b49b56 register_sysctl +EXPORT_SYMBOL vmlinux 0x69b5ea42 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x69c29acd is_bad_inode +EXPORT_SYMBOL vmlinux 0x69ca0603 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x69d32431 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e3aeb9 ps2_command +EXPORT_SYMBOL vmlinux 0x69f93cdc scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x69fbfc85 install_exec_creds +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a15ccd0 inet_sendpage +EXPORT_SYMBOL vmlinux 0x6a1938c3 d_add_ci +EXPORT_SYMBOL vmlinux 0x6a253ea3 eth_header +EXPORT_SYMBOL vmlinux 0x6a4319dd of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x6a5717c7 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a68d0d2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78374c elv_register_queue +EXPORT_SYMBOL vmlinux 0x6a7dd057 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x6a9c892d pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x6aa65eba inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x6ac95b7e __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6b1115de textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b274ec4 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x6b2a003c simple_open +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b542ad3 misc_register +EXPORT_SYMBOL vmlinux 0x6b697131 dev_addr_init +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6bc07345 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc2db5 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be184a7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x6bfbbee6 pci_set_master +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c3faff0 pipe_lock +EXPORT_SYMBOL vmlinux 0x6c4ad352 __lock_page +EXPORT_SYMBOL vmlinux 0x6c4c4e01 dev_gro_receive +EXPORT_SYMBOL vmlinux 0x6c4d5095 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c6dffda ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7091dd dev_mc_sync +EXPORT_SYMBOL vmlinux 0x6c770b06 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cdcfb9a blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x6ce34f18 vm_mmap +EXPORT_SYMBOL vmlinux 0x6ce7285a napi_skb_finish +EXPORT_SYMBOL vmlinux 0x6cfdfde2 giveup_fpu +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d286218 blk_end_request +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d36cde5 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x6d464175 __sg_free_table +EXPORT_SYMBOL vmlinux 0x6d4651de directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dab0827 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x6db85c1a blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x6dd3d9e0 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e1e1fcf bio_phys_segments +EXPORT_SYMBOL vmlinux 0x6e2da9b6 __pskb_copy +EXPORT_SYMBOL vmlinux 0x6e4652ff dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x6e520ad1 phy_find_first +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea020ac journal_start_commit +EXPORT_SYMBOL vmlinux 0x6ea7d1b7 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x6eb03195 aio_complete +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6eb78970 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x6eeac778 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f230dd7 generic_write_sync +EXPORT_SYMBOL vmlinux 0x6f2764fc fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x6f397394 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x6f4f8b25 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6f69f37d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x6f7646ec skb_pad +EXPORT_SYMBOL vmlinux 0x6f8195ca blk_rq_init +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd2b4d8 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x6fff4cf8 replace_mount_options +EXPORT_SYMBOL vmlinux 0x701526e2 tcp_prot +EXPORT_SYMBOL vmlinux 0x70263f5c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x70341d81 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70529280 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705ddd78 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x709791d6 empty_aops +EXPORT_SYMBOL vmlinux 0x70af595d bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x70b799bf revalidate_disk +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70c59cb1 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70e1b9eb journal_check_available_features +EXPORT_SYMBOL vmlinux 0x70e3c8d3 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713f6d79 journal_start +EXPORT_SYMBOL vmlinux 0x71451e48 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x71494dbf netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x714c745f ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x714c8c25 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x716dcab9 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717aad87 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x718c1fad pci_scan_slot +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a81809 free_buffer_head +EXPORT_SYMBOL vmlinux 0x71aca21a generic_setlease +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d349aa netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x71e002be starget_for_each_device +EXPORT_SYMBOL vmlinux 0x720b413d write_cache_pages +EXPORT_SYMBOL vmlinux 0x72186450 vm_insert_page +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x729ed665 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x72a747b4 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x72aad381 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x72aad963 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c8a82d block_commit_write +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ff784c get_agp_version +EXPORT_SYMBOL vmlinux 0x73002d00 __devm_release_region +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x732e0f40 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733e9b90 dma_set_mask +EXPORT_SYMBOL vmlinux 0x733f6dd8 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x73494318 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x7362c212 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7399f924 netif_napi_del +EXPORT_SYMBOL vmlinux 0x739ef72b block_truncate_page +EXPORT_SYMBOL vmlinux 0x73c08f90 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x73cb3d0a dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73eae8d4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x73f69ef3 __scm_destroy +EXPORT_SYMBOL vmlinux 0x7414f11a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x7464ecb2 kset_unregister +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749ab875 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x74a641ab twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x74a66623 genl_register_ops +EXPORT_SYMBOL vmlinux 0x74ba8d3b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x74be7c16 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74cd0dd1 lease_modify +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ef8dc5 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75595bc5 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7575a09f d_alloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75ba762c neigh_lookup +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c57ef8 mpage_readpage +EXPORT_SYMBOL vmlinux 0x75d92834 single_open +EXPORT_SYMBOL vmlinux 0x75dd5911 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x75ea1b7f mmc_can_trim +EXPORT_SYMBOL vmlinux 0x75fa19cd pci_choose_state +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x760ff0de of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x7626b486 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x76329c61 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x764456e8 km_policy_expired +EXPORT_SYMBOL vmlinux 0x76456cbb rtnl_unicast +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764c3c5b __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x7668a7aa sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x766e29eb mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x766fc87f ata_dev_printk +EXPORT_SYMBOL vmlinux 0x76897885 flush_hash_entry +EXPORT_SYMBOL vmlinux 0x7694018c sock_wmalloc +EXPORT_SYMBOL vmlinux 0x769ea867 lock_super +EXPORT_SYMBOL vmlinux 0x769fb3a0 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x76a7759d tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c39649 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d97d7e dev_warn +EXPORT_SYMBOL vmlinux 0x76e07962 idr_get_new +EXPORT_SYMBOL vmlinux 0x76ee6f2d register_netdevice +EXPORT_SYMBOL vmlinux 0x76f406c8 d_drop +EXPORT_SYMBOL vmlinux 0x76fe46b9 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x774b09f1 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x7772b831 generic_write_end +EXPORT_SYMBOL vmlinux 0x77731849 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a87546 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bc68e3 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x77c57876 aio_put_req +EXPORT_SYMBOL vmlinux 0x77de775d agp_create_memory +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x77f4c689 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x77f4ec1d tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x78073bc6 md_error +EXPORT_SYMBOL vmlinux 0x7827ff3a of_dev_put +EXPORT_SYMBOL vmlinux 0x783679ff nla_append +EXPORT_SYMBOL vmlinux 0x784467e2 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x787f2414 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x78b4f598 simple_fill_super +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e46472 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x790633b7 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x7908ae7d seq_open_private +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x79123438 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x791465c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x791dc8f4 sk_free +EXPORT_SYMBOL vmlinux 0x79227528 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x792fa1c9 arp_invalidate +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79785231 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x79a29bb2 lro_flush_all +EXPORT_SYMBOL vmlinux 0x79a7ef85 journal_restart +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b0b4e9 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x79c7080a __blk_run_queue +EXPORT_SYMBOL vmlinux 0x79d3c4ff netdev_emerg +EXPORT_SYMBOL vmlinux 0x79d83a09 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x79f0c60e fb_set_var +EXPORT_SYMBOL vmlinux 0x79fa6876 mmc_add_host +EXPORT_SYMBOL vmlinux 0x7a0b3e09 fput +EXPORT_SYMBOL vmlinux 0x7a192415 lookup_one_len +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a38caba writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a51af6c elv_abort_queue +EXPORT_SYMBOL vmlinux 0x7a6d612a dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x7a901f84 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7a954578 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad94012 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x7ae7a98c mutex_unlock +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b4ad131 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b611c3d inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x7b63539d splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x7bd22c6c __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x7bd61067 dev_mc_init +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2b17db posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x7c2f0805 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x7c317c79 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x7c440d4e put_tty_driver +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c54ad69 neigh_create +EXPORT_SYMBOL vmlinux 0x7c5f3428 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +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 0x7ca341af kernel_thread +EXPORT_SYMBOL vmlinux 0x7caea2aa generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ccb14a0 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x7cdf48fa clear_inode +EXPORT_SYMBOL vmlinux 0x7d09d16a inet_release +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2079cc dev_set_group +EXPORT_SYMBOL vmlinux 0x7d3ebc44 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x7d4e6f57 ip_defrag +EXPORT_SYMBOL vmlinux 0x7d66fa1e __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d8993d9 kill_litter_super +EXPORT_SYMBOL vmlinux 0x7da4290d ppp_channel_index +EXPORT_SYMBOL vmlinux 0x7db0cc9e __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x7dc3a431 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcbb9af padata_do_parallel +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df5a090 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x7e07a9ce pipe_to_file +EXPORT_SYMBOL vmlinux 0x7e159f9b vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7e364dc5 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e513711 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x7e5192d6 genphy_update_link +EXPORT_SYMBOL vmlinux 0x7e662c00 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7e756cdc mii_link_ok +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea4f78c pci_release_region +EXPORT_SYMBOL vmlinux 0x7ecec5a0 key_validate +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef69ec6 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x7eff367c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f60746f devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7ffaf02d follow_down_one +EXPORT_SYMBOL vmlinux 0x80391508 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x8076a4b2 console_stop +EXPORT_SYMBOL vmlinux 0x80a6622a bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x80b714e3 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x80b7630b fb_pan_display +EXPORT_SYMBOL vmlinux 0x80b988b3 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x80bff872 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x80fa14ef tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x81064de0 register_nls +EXPORT_SYMBOL vmlinux 0x812863a1 sock_create_lite +EXPORT_SYMBOL vmlinux 0x813b69ac sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x818c55fb release_sock +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b1dd8e dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x81bb36ff genl_unregister_family +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8282b2fd ip_getsockopt +EXPORT_SYMBOL vmlinux 0x82994768 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b65160 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82e73966 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x83286c02 f_setown +EXPORT_SYMBOL vmlinux 0x832cd229 set_nlink +EXPORT_SYMBOL vmlinux 0x83333f4c generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x8333aff0 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x834d665c d_set_d_op +EXPORT_SYMBOL vmlinux 0x83500d18 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x837e2486 uart_resume_port +EXPORT_SYMBOL vmlinux 0x8383ce60 journal_clear_err +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83c73a5d sock_wake_async +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83f772c1 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x84066d97 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x841477cb sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x8415119d prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x844d40ec mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x8453f1ac napi_frags_finish +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f028d pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x84814a97 find_inode_number +EXPORT_SYMBOL vmlinux 0x848fc139 blk_init_tags +EXPORT_SYMBOL vmlinux 0x8497ed5a __register_binfmt +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x8511caf6 skb_split +EXPORT_SYMBOL vmlinux 0x851ae87b abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x85393711 ip6_xmit +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854c1caf genl_register_family +EXPORT_SYMBOL vmlinux 0x85550ec2 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x8561e7f3 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856ce730 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x85974d06 kthread_stop +EXPORT_SYMBOL vmlinux 0x85aa0c19 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85ea32b4 unregister_console +EXPORT_SYMBOL vmlinux 0x8600b1f9 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x8613bed1 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x86243467 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x866149b5 console_start +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866613ed ppc_md +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c407d6 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86e8279c fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8729d005 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x8750b01b journal_ack_err +EXPORT_SYMBOL vmlinux 0x875f65ff nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x87672dbf tcf_action_exec +EXPORT_SYMBOL vmlinux 0x876f909b mmc_can_erase +EXPORT_SYMBOL vmlinux 0x877d1312 put_io_context +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87901173 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87ac638a skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x87b27399 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x87c84137 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x87dd441f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x87e81403 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x87f22699 phy_device_register +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88162f9f generic_file_open +EXPORT_SYMBOL vmlinux 0x88185ed9 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x88201dce xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x88221c18 netdev_update_features +EXPORT_SYMBOL vmlinux 0x8826fd97 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x884c7ce2 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x884f8c12 i2c_transfer +EXPORT_SYMBOL vmlinux 0x885a023a unbind_con_driver +EXPORT_SYMBOL vmlinux 0x887e981c dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x889b18a0 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x88aa7f25 elevator_exit +EXPORT_SYMBOL vmlinux 0x88b7e2cf generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x88c30504 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x88d9f92c agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x88fe7149 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x89036550 dev_mc_del +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89225602 register_gifconf +EXPORT_SYMBOL vmlinux 0x89398371 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x893c925b unlock_super +EXPORT_SYMBOL vmlinux 0x89490930 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8954dfb0 skb_seq_read +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897c4bea have_submounts +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898748fc unlock_page +EXPORT_SYMBOL vmlinux 0x89a500c2 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x89aebca0 pci_find_bus +EXPORT_SYMBOL vmlinux 0x89b08621 journal_set_features +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89cea273 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x89e15902 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x89f70e05 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8a18f90b iterate_mounts +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a31f2a7 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8a36536b kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8a451986 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a638044 dev_trans_start +EXPORT_SYMBOL vmlinux 0x8a713d92 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a807c8d clear_user_page +EXPORT_SYMBOL vmlinux 0x8a87bef9 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x8a961541 input_unregister_device +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9dd739 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8abc7371 get_gendisk +EXPORT_SYMBOL vmlinux 0x8ac153b1 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad8c9fe inet6_release +EXPORT_SYMBOL vmlinux 0x8aebc45a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x8af91b22 log_start_commit +EXPORT_SYMBOL vmlinux 0x8b0684eb jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1f5f24 of_phy_connect +EXPORT_SYMBOL vmlinux 0x8b202a00 get_phy_device +EXPORT_SYMBOL vmlinux 0x8b219174 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8b2ba5a4 __bread +EXPORT_SYMBOL vmlinux 0x8b2ec7d8 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x8b35e79d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8ebb40 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x8b9501ce free_netdev +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c07c80b file_remove_suid +EXPORT_SYMBOL vmlinux 0x8c0c99a9 kill_anon_super +EXPORT_SYMBOL vmlinux 0x8c0f0e26 dev_driver_string +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c4e5d3e pipe_unlock +EXPORT_SYMBOL vmlinux 0x8c51a717 kern_path +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8c8b1479 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x8cbc90c7 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce7f95c __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8cfffb58 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x8d114208 security_path_link +EXPORT_SYMBOL vmlinux 0x8d263d95 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x8d3be20b in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d693ff9 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x8d78c1f6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x8d825b26 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x8da706dc sock_no_bind +EXPORT_SYMBOL vmlinux 0x8da84853 kill_pid +EXPORT_SYMBOL vmlinux 0x8dca8ad3 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x8dd0bd7e tcp_ioctl +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8dec611b pci_dev_get +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8e0c6b06 get_fs_type +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e0f5b01 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x8e122eef security_d_instantiate +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e529fef udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x8e63350d idr_replace +EXPORT_SYMBOL vmlinux 0x8e652ba1 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8e757ef3 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x8e837c67 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x8e85b054 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x8ea4cf1a __put_cred +EXPORT_SYMBOL vmlinux 0x8eabe826 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x8eaea1a7 simple_lookup +EXPORT_SYMBOL vmlinux 0x8ebe271d agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ef68d34 security_mmap_file +EXPORT_SYMBOL vmlinux 0x8efe042d scsi_host_get +EXPORT_SYMBOL vmlinux 0x8f282e9a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x8f3bc3f1 dev_add_pack +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f6a07ce pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f9eaba6 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x8fa104e5 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fcc890d mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x8fe4dcf1 dqput +EXPORT_SYMBOL vmlinux 0x8ff67f08 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x901d6442 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x90236a2b __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x90457306 mnt_unpin +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x906800fa dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x90748637 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x907cc271 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x907f9ca7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x908d8592 vfs_link +EXPORT_SYMBOL vmlinux 0x908fd344 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x909f393f make_bad_inode +EXPORT_SYMBOL vmlinux 0x90a8db5a dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x90b0eaee input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90dcca23 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x9117baf4 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9177be1f __brelse +EXPORT_SYMBOL vmlinux 0x917e10ba macio_release_resources +EXPORT_SYMBOL vmlinux 0x917f2c83 sock_create +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91cf4a74 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x91d88e48 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0x920c07bd sk_reset_timer +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92584ea1 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x9276055b inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x92788f53 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x9295e477 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x92971f8f scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x92a2c46d ida_get_new +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae9468 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x92e64825 phy_driver_register +EXPORT_SYMBOL vmlinux 0x92fdbde9 free_task +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x930b07c9 init_special_inode +EXPORT_SYMBOL vmlinux 0x93112887 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x9317138e km_state_notify +EXPORT_SYMBOL vmlinux 0x931c036f inet_frag_find +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932761e9 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934faf3f dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x93789cdb max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x9379c29d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x93826bcf tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x938f4ff6 __get_user_pages +EXPORT_SYMBOL vmlinux 0x93a0b8fb kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a99944 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94106b5c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x94247f3c mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x9438b887 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x943dda70 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x945765b0 netpoll_setup +EXPORT_SYMBOL vmlinux 0x946869e1 tty_throttle +EXPORT_SYMBOL vmlinux 0x946b8ab7 kobject_put +EXPORT_SYMBOL vmlinux 0x94764661 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x948b64d7 key_put +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a9d4da kmem_cache_size +EXPORT_SYMBOL vmlinux 0x94b98c50 security_path_chmod +EXPORT_SYMBOL vmlinux 0x94bdb532 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94d13c96 twl6040_power +EXPORT_SYMBOL vmlinux 0x95010464 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x9506ac2f bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518b440 __frontswap_store +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x959d1797 of_get_parent +EXPORT_SYMBOL vmlinux 0x95a40891 register_md_personality +EXPORT_SYMBOL vmlinux 0x95bd1ce8 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x95cc67a9 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x961bd4b6 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x963f3cd3 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x96441ba8 generic_removexattr +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965a0ef5 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969191a3 agp_backend_release +EXPORT_SYMBOL vmlinux 0x969f30d9 page_put_link +EXPORT_SYMBOL vmlinux 0x96b1a343 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x96c53750 dquot_transfer +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96df7559 bdi_init +EXPORT_SYMBOL vmlinux 0x9704e93a ida_get_new_above +EXPORT_SYMBOL vmlinux 0x97130b1d blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9725aed3 uart_register_driver +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974e182f vc_resize +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9764f03c netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x977a5857 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9793b80d __alloc_skb +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c5cd8f generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x97d1deae redraw_screen +EXPORT_SYMBOL vmlinux 0x97d5cf5a blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x97f6e045 d_find_alias +EXPORT_SYMBOL vmlinux 0x97f7f5c4 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x97fece3e dquot_acquire +EXPORT_SYMBOL vmlinux 0x97fef5bf skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x982bf3bc notify_change +EXPORT_SYMBOL vmlinux 0x983a1ddb wireless_spy_update +EXPORT_SYMBOL vmlinux 0x9848d66d kick_iocb +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987052ea input_get_keycode +EXPORT_SYMBOL vmlinux 0x9887e54b simple_write_begin +EXPORT_SYMBOL vmlinux 0x988d9264 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x9891767d init_net +EXPORT_SYMBOL vmlinux 0x98938bde proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x98ded595 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x98e410e9 bdi_destroy +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99226b00 tty_register_driver +EXPORT_SYMBOL vmlinux 0x9946f10d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x994feb70 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x996e8bad add_disk +EXPORT_SYMBOL vmlinux 0x997605c6 vfs_llseek +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a856e4 get_super +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d8c265 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x99da5170 generic_fillattr +EXPORT_SYMBOL vmlinux 0x99fd6516 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a5fb03d datagram_poll +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9ab65f09 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x9ac5f396 km_report +EXPORT_SYMBOL vmlinux 0x9acdfd72 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x9ace16ee security_path_rmdir +EXPORT_SYMBOL vmlinux 0x9acf6b81 d_path +EXPORT_SYMBOL vmlinux 0x9ae44bb0 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x9b0c6adc filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x9b2adb5d would_dump +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3b5542 save_mount_options +EXPORT_SYMBOL vmlinux 0x9b4127d0 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x9b59ace9 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x9b653a90 security_path_rename +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b89b887 truncate_setsize +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba790ad xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9ba9462f netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x9bb642be ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x9bb90c87 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x9bc11ad9 poll_freewait +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bd0cc72 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x9be3f83a pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x9bf290c4 register_filesystem +EXPORT_SYMBOL vmlinux 0x9c51e0cf napi_gro_flush +EXPORT_SYMBOL vmlinux 0x9c56b65b tty_name +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9ca63142 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc06569 napi_complete +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cee6714 elevator_init +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d21b99b elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x9d2e0afe phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d786943 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x9d7c6309 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d9c9597 idr_init +EXPORT_SYMBOL vmlinux 0x9da1ba31 simple_setattr +EXPORT_SYMBOL vmlinux 0x9dc480a6 unload_nls +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fc030 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e20a129 tcp_check_req +EXPORT_SYMBOL vmlinux 0x9e4ddc04 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e510a4e bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e67a142 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x9e8ebbd1 inet_bind +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e98b055 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ed5826b pci_map_rom +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edb55d3 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9edbdda3 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x9ee814d0 locks_init_lock +EXPORT_SYMBOL vmlinux 0x9eecf2bf __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x9f112020 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2be5a3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x9f3c39bb ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5335e4 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbc7a1b arp_create +EXPORT_SYMBOL vmlinux 0x9fc9a049 ata_link_printk +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff9f96d kern_path_create +EXPORT_SYMBOL vmlinux 0x9fff3ea8 inet_getname +EXPORT_SYMBOL vmlinux 0xa02d9b74 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xa02ef199 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa070a6bc netpoll_print_options +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084c256 genlmsg_put +EXPORT_SYMBOL vmlinux 0xa09a973e agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xa09fa9a2 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa0ae1013 request_key_async +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b0de76 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d647d6 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xa0dc237f get_write_access +EXPORT_SYMBOL vmlinux 0xa0ebfda8 iget_failed +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa124d4d6 sock_no_poll +EXPORT_SYMBOL vmlinux 0xa12c48a8 input_reset_device +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1619868 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xa17718b9 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xa194c34c loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa19cd5de cdev_del +EXPORT_SYMBOL vmlinux 0xa19e39f3 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1e5aeb6 search_binary_handler +EXPORT_SYMBOL vmlinux 0xa1f30063 __napi_schedule +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 0xa20fd432 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xa2413b01 find_get_page +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa2779875 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28903b9 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xa28ad4ec sock_i_ino +EXPORT_SYMBOL vmlinux 0xa29f8431 mem_map +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c612c3 blk_start_request +EXPORT_SYMBOL vmlinux 0xa2cdd5b7 d_rehash +EXPORT_SYMBOL vmlinux 0xa2dc5981 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f93a4f kobject_del +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa317d29e scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xa31e04fe mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xa3211e85 nf_reinject +EXPORT_SYMBOL vmlinux 0xa32ac4fd netif_napi_add +EXPORT_SYMBOL vmlinux 0xa32e7623 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33e8f7a inet_accept +EXPORT_SYMBOL vmlinux 0xa34b2d60 agp_free_memory +EXPORT_SYMBOL vmlinux 0xa34c81e7 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa360a8c3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xa3617535 __dst_free +EXPORT_SYMBOL vmlinux 0xa36ff2ae mmc_release_host +EXPORT_SYMBOL vmlinux 0xa38063ea ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3dc5968 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xa3e4feb6 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3f595cd of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xa407c13c elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b8021 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4485f39 elv_rb_del +EXPORT_SYMBOL vmlinux 0xa4639f16 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xa46ac24d inode_change_ok +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4729964 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa474721e bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xa4936896 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4ba10ad xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xa4c6c200 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xa4d1e314 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e43ac7 fb_show_logo +EXPORT_SYMBOL vmlinux 0xa4ebeb39 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xa5090dd0 scsi_free_command +EXPORT_SYMBOL vmlinux 0xa50fae31 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xa5469e99 sock_create_kern +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a03ddd ip_route_input_common +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5d52b50 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xa5fa6bf6 d_move +EXPORT_SYMBOL vmlinux 0xa623e964 input_set_capability +EXPORT_SYMBOL vmlinux 0xa6403a09 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66262d5 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xa6626973 netif_rx +EXPORT_SYMBOL vmlinux 0xa6686a3f pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xa66c6c04 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xa670fec8 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67d61f7 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6978c0d __f_setown +EXPORT_SYMBOL vmlinux 0xa69b5bb4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xa6ce9481 simple_statfs +EXPORT_SYMBOL vmlinux 0xa6d2550c locks_delete_block +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa6fefb4c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xa7075484 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xa70df058 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xa71261ee __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa75b586c simple_transaction_read +EXPORT_SYMBOL vmlinux 0xa76c9d4c blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xa773ebbb inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7c11bf9 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa7d29e71 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xa8157b51 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8331bea pci_disable_msix +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa87189b5 tcf_register_action +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87729f5 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa8822622 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xa88397bd nla_put +EXPORT_SYMBOL vmlinux 0xa885d9ee __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa88dfbaa read_cache_page +EXPORT_SYMBOL vmlinux 0xa88ef97f freezing_slow_path +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8ba1bfc jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xa8c7df9b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa8fb26c7 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90bdc93 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xa91f2495 skb_clone +EXPORT_SYMBOL vmlinux 0xa921c0fe tcf_hash_release +EXPORT_SYMBOL vmlinux 0xa927b32d pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xa9559518 log_wait_commit +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa964f38c sock_update_classid +EXPORT_SYMBOL vmlinux 0xa9674fe8 nobh_writepage +EXPORT_SYMBOL vmlinux 0xa96fb02d generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xa9af6aee pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa9b79c0f insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xa9d63de6 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xaa156b9d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xaa2ec78a mdiobus_free +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6eeb48 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xaa778ae5 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xaa96be4d path_put +EXPORT_SYMBOL vmlinux 0xaaa1d94b input_event +EXPORT_SYMBOL vmlinux 0xaaa2a1a2 md_done_sync +EXPORT_SYMBOL vmlinux 0xaaac36fb lookup_hash +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad71ed7 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xaae1bcf7 register_quota_format +EXPORT_SYMBOL vmlinux 0xaaf515ca sock_sendmsg +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab05e97d blk_run_queue +EXPORT_SYMBOL vmlinux 0xab06cdb3 md_write_start +EXPORT_SYMBOL vmlinux 0xab12de5b jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab2ff512 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab82f1cd __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xab835441 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xab83a791 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xab95c4b2 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabe08a28 softnet_data +EXPORT_SYMBOL vmlinux 0xabe633cc rt6_lookup +EXPORT_SYMBOL vmlinux 0xabf106ae bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0e6a5e framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac3d3275 blk_get_queue +EXPORT_SYMBOL vmlinux 0xac452ad6 ipv4_specific +EXPORT_SYMBOL vmlinux 0xac561c87 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xac567d28 mount_subtree +EXPORT_SYMBOL vmlinux 0xac5f68b2 inet6_bind +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac755ef4 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xac7d17de dquot_drop +EXPORT_SYMBOL vmlinux 0xac8e4c68 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xac954c04 filp_close +EXPORT_SYMBOL vmlinux 0xacaa9741 dput +EXPORT_SYMBOL vmlinux 0xacae9403 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd11d91 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xacee606d flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad23153c register_con_driver +EXPORT_SYMBOL vmlinux 0xad30116e set_binfmt +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad700031 arp_tbl +EXPORT_SYMBOL vmlinux 0xad7f3b23 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad86ffe7 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xad9171b5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb16a02 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc9f422 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xadd0e2a2 proc_create_data +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xaddaee70 pid_task +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xade7c905 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xaded2489 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfede7a filemap_flush +EXPORT_SYMBOL vmlinux 0xae3741c3 serio_open +EXPORT_SYMBOL vmlinux 0xae3a96a3 flush_signals +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae865c4e load_nls_default +EXPORT_SYMBOL vmlinux 0xae8d2fcc simple_transaction_set +EXPORT_SYMBOL vmlinux 0xae9223f9 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xae9bb3b3 force_sig +EXPORT_SYMBOL vmlinux 0xaec4700d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed14a01 __serio_register_port +EXPORT_SYMBOL vmlinux 0xaed4b4b0 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xaee3b330 inet_select_addr +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0a2ad7 netdev_info +EXPORT_SYMBOL vmlinux 0xaf12b1b9 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xaf209c32 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xaf20a819 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xaf2129cc dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5d3bad dm_put_device +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf622bc2 blkdev_get +EXPORT_SYMBOL vmlinux 0xaf71b6a1 blkdev_put +EXPORT_SYMBOL vmlinux 0xaf90b83d thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9970ae kern_unmount +EXPORT_SYMBOL vmlinux 0xaf9f7c54 file_sb_list_del +EXPORT_SYMBOL vmlinux 0xafa58c6a rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xafaf9102 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xafb28980 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xafb697d0 netif_skb_features +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd80968 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xafddbd46 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xaff2c44e ether_setup +EXPORT_SYMBOL vmlinux 0xaff99634 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xaffed687 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00512bb alloc_file +EXPORT_SYMBOL vmlinux 0xb00c1883 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xb0162df4 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xb01bd9bd dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb01cc709 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xb02ee8f3 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xb04e8230 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07f1778 writeback_in_progress +EXPORT_SYMBOL vmlinux 0xb099b167 macio_request_resource +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0dcfe4d file_open_root +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f350af kmap_high +EXPORT_SYMBOL vmlinux 0xb0f5a3fe alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xb0f75368 vfs_follow_link +EXPORT_SYMBOL vmlinux 0xb0fbfe57 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb102bd43 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xb13169f9 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb137b15c fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xb13f1ae9 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb16a5c0b ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb1766a3d noop_llseek +EXPORT_SYMBOL vmlinux 0xb18e1cce alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb19d97c8 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9f2a6 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xb1de022f mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xb2184551 task_nice +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb24b7b1f simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb24c2db9 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26aa7b0 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xb26d46e6 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2ba0fda open_exec +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c3b752 serio_interrupt +EXPORT_SYMBOL vmlinux 0xb2cee50d elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e573f2 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb2efff8d ___pskb_trim +EXPORT_SYMBOL vmlinux 0xb2f8d5d2 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb2ff7be5 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xb31526ee sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb32568d2 fb_get_mode +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb332aed3 inet_listen +EXPORT_SYMBOL vmlinux 0xb35cc7db generic_read_dir +EXPORT_SYMBOL vmlinux 0xb35e377c of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xb395058b ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xb3f46680 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xb41470c1 put_page +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42ee297 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xb4479e13 init_task +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4b04376 seq_printf +EXPORT_SYMBOL vmlinux 0xb519ecd9 ps2_end_command +EXPORT_SYMBOL vmlinux 0xb52251c1 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xb531ab96 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb532cf81 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb5427373 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb5516a77 dst_destroy +EXPORT_SYMBOL vmlinux 0xb55be881 lock_rename +EXPORT_SYMBOL vmlinux 0xb562a517 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57560ab abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb58f072b serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xb59c0658 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5de5e2f sock_i_uid +EXPORT_SYMBOL vmlinux 0xb5e628c1 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb61cfe94 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0xb62f6988 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xb63cb62d pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xb64123b1 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xb641407a of_dev_get +EXPORT_SYMBOL vmlinux 0xb64bab8c sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xb650f94f phy_device_free +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb65e3074 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xb6733d74 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67e3ac1 scsi_register +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb70444b4 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xb72088a3 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xb7332ff0 adb_client_list +EXPORT_SYMBOL vmlinux 0xb73c06a8 serio_reconnect +EXPORT_SYMBOL vmlinux 0xb73ed410 fget_raw +EXPORT_SYMBOL vmlinux 0xb7499649 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb76431c8 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb7672876 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xb769ab20 bdget +EXPORT_SYMBOL vmlinux 0xb79ff844 tty_port_init +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7db8767 d_lookup +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb824c375 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb857da73 ida_destroy +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8a99dfc ppp_input_error +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8add2c0 follow_up +EXPORT_SYMBOL vmlinux 0xb8d65021 dst_discard +EXPORT_SYMBOL vmlinux 0xb8e68e57 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fa50e0 dquot_alloc +EXPORT_SYMBOL vmlinux 0xb8fef8ca tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xb8ff844a input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb90b6ac6 blk_register_region +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb925a941 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb972c0b3 fail_migrate_page +EXPORT_SYMBOL vmlinux 0xb9762afc dev_alloc_name +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb993e6a4 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xb9d59ab8 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xb9dfe752 input_free_device +EXPORT_SYMBOL vmlinux 0xb9eb78ff bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xba0215e3 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xba04d174 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xba238da9 release_firmware +EXPORT_SYMBOL vmlinux 0xba2ec7d5 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xba2fb46b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xba34ab67 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4a3c40 mmc_card_awake +EXPORT_SYMBOL vmlinux 0xbadf3c49 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xbae43fd2 lookup_bdev +EXPORT_SYMBOL vmlinux 0xbae5040a scsi_add_device +EXPORT_SYMBOL vmlinux 0xbaeecb96 pci_request_region +EXPORT_SYMBOL vmlinux 0xbb01e339 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xbb026633 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xbb0da484 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xbb0f4266 current_fs_time +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb236dbd blk_start_queue +EXPORT_SYMBOL vmlinux 0xbb252c38 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xbb422cd7 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb699cb8 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbb3abf9 tcp_poll +EXPORT_SYMBOL vmlinux 0xbc094343 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xbc09a854 filp_open +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc380acb unregister_quota_format +EXPORT_SYMBOL vmlinux 0xbc39dc29 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc5f411a key_unlink +EXPORT_SYMBOL vmlinux 0xbc7ab0b2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc81730 dev_close +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcd7a78d blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xbce3f101 led_blink_set +EXPORT_SYMBOL vmlinux 0xbcffe639 idr_pre_get +EXPORT_SYMBOL vmlinux 0xbd377683 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xbd4459c3 inode_dio_done +EXPORT_SYMBOL vmlinux 0xbd5f2425 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xbd68b10b i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xbd79bd91 d_splice_alias +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd8d7d62 register_key_type +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe0a1cea of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe250fd3 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe6f064d idr_for_each +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbedc583f tty_port_open +EXPORT_SYMBOL vmlinux 0xbedffae3 md_write_end +EXPORT_SYMBOL vmlinux 0xbee2d1b9 km_policy_notify +EXPORT_SYMBOL vmlinux 0xbee3351a of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbee554a4 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeef2675 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf05e110 update_region +EXPORT_SYMBOL vmlinux 0xbf0ed327 of_device_register +EXPORT_SYMBOL vmlinux 0xbf1fa063 proto_register +EXPORT_SYMBOL vmlinux 0xbf474b2c eth_change_mtu +EXPORT_SYMBOL vmlinux 0xbf6a7cc5 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xbf72c2cd ppp_register_channel +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9837fa vfs_read +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa20fc1 fsync_bdev +EXPORT_SYMBOL vmlinux 0xbfa97c34 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfb94102 input_grab_device +EXPORT_SYMBOL vmlinux 0xbfbcef40 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc014cdde bdev_read_only +EXPORT_SYMBOL vmlinux 0xc018632b scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xc029c59d clear_nlink +EXPORT_SYMBOL vmlinux 0xc02b0474 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xc048e177 journal_release_buffer +EXPORT_SYMBOL vmlinux 0xc050a5ab __frontswap_load +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc086119a max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc08ca7b0 kill_pgrp +EXPORT_SYMBOL vmlinux 0xc09a3b91 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ae1b5a neigh_table_clear +EXPORT_SYMBOL vmlinux 0xc0b8c0c8 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0e204b8 names_cachep +EXPORT_SYMBOL vmlinux 0xc112871a account_page_writeback +EXPORT_SYMBOL vmlinux 0xc118e14f dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12c88bd km_query +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1325e17 vfs_open +EXPORT_SYMBOL vmlinux 0xc14467ce cad_pid +EXPORT_SYMBOL vmlinux 0xc1596e6d xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xc15a3f05 of_match_device +EXPORT_SYMBOL vmlinux 0xc166d5d4 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc1716fac mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xc18e9aae n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xc1ba52b8 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc1bba295 agp_enable +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1eb859a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xc21f1d8c __neigh_event_send +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc258088a pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xc25e82f7 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc28c714c skb_trim +EXPORT_SYMBOL vmlinux 0xc2c453e5 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc32dc8ea tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc32f66af try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc354ca5a tcp_shutdown +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc39e0da4 generic_make_request +EXPORT_SYMBOL vmlinux 0xc3e01967 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc3e0f522 sync_inode +EXPORT_SYMBOL vmlinux 0xc3f74686 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xc4372cc9 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xc441b24d pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc44aba60 lock_may_read +EXPORT_SYMBOL vmlinux 0xc454f551 should_remove_suid +EXPORT_SYMBOL vmlinux 0xc4559a86 set_user_nice +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc47b580b __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc480afc0 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc4881e31 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4ed1d2f pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xc4faade6 input_close_device +EXPORT_SYMBOL vmlinux 0xc4ff18ff abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xc51bacbd tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc524b29a __nla_reserve +EXPORT_SYMBOL vmlinux 0xc526c294 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc52fead0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xc52fec37 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xc54c70ec put_disk +EXPORT_SYMBOL vmlinux 0xc5513fb9 ihold +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc567e3f8 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc5d72737 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e7afbd ps2_drain +EXPORT_SYMBOL vmlinux 0xc5eef928 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc5f0bc4a get_unmapped_area +EXPORT_SYMBOL vmlinux 0xc5f36007 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f69bde scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc60e4fc4 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc61be59c ida_remove +EXPORT_SYMBOL vmlinux 0xc6211794 fb_class +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63e9360 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc63fa598 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xc64c0ae2 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6740349 validate_sp +EXPORT_SYMBOL vmlinux 0xc691488f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xc698b413 pci_iounmap +EXPORT_SYMBOL vmlinux 0xc69b7277 blk_init_queue +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c6cbd0 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e28bf2 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc6fb1710 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc70839f2 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xc718caf9 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xc73688cc pci_get_slot +EXPORT_SYMBOL vmlinux 0xc7569210 touch_atime +EXPORT_SYMBOL vmlinux 0xc75bb196 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xc75f0919 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc790c616 __free_pages +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a46758 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c4cffa pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82a3c83 __sock_create +EXPORT_SYMBOL vmlinux 0xc83a2011 vga_tryget +EXPORT_SYMBOL vmlinux 0xc84601e5 vga_client_register +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc86e44f2 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc88f206a lock_fb_info +EXPORT_SYMBOL vmlinux 0xc8b4daeb d_find_any_alias +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c066a8 dm_io +EXPORT_SYMBOL vmlinux 0xc8c72a7a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xc8d7aad8 journal_init_dev +EXPORT_SYMBOL vmlinux 0xc9011354 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xc901166f read_cache_pages +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc95e3184 cdev_alloc +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9cf3b45 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xc9d61c5d journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc9ddade7 tty_port_put +EXPORT_SYMBOL vmlinux 0xc9e180a7 ilookup +EXPORT_SYMBOL vmlinux 0xc9e45854 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xca00e413 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xca318181 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xca3cf55a input_inject_event +EXPORT_SYMBOL vmlinux 0xca4e4c61 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca68b6c0 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca8bc578 consume_skb +EXPORT_SYMBOL vmlinux 0xca8e8198 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xcaa168a7 posix_lock_file +EXPORT_SYMBOL vmlinux 0xcab33fec __block_write_begin +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcaf11307 mmc_free_host +EXPORT_SYMBOL vmlinux 0xcb08a169 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xcb2fb51b input_unregister_handler +EXPORT_SYMBOL vmlinux 0xcb4e0761 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xcb4f5274 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xcb6926c2 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb8c7b3a swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbbdce4a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd8e896 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xcc012b0f bioset_free +EXPORT_SYMBOL vmlinux 0xcc121779 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xcc166a48 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc257a8a dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xcc25f66a ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc525a62 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xcc549b24 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xcc6e4d85 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc845be5 tcp_close +EXPORT_SYMBOL vmlinux 0xcc8e12b1 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xcccfa0ec bio_copy_user +EXPORT_SYMBOL vmlinux 0xcceb8cac arp_send +EXPORT_SYMBOL vmlinux 0xcd003472 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd201450 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3ab477 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xcd51e5c2 __register_chrdev +EXPORT_SYMBOL vmlinux 0xcd6ded95 journal_stop +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd97e6fa cap_mmap_file +EXPORT_SYMBOL vmlinux 0xcda18e32 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xcda8441e thaw_bdev +EXPORT_SYMBOL vmlinux 0xcdaed235 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xcdb9d952 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xcdbfd8ed flush_tlb_page +EXPORT_SYMBOL vmlinux 0xcdd1b18e agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce031478 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xce0a195f mmc_request_done +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce448d6d dev_get_by_index +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6d561d __find_get_block +EXPORT_SYMBOL vmlinux 0xce74b1b7 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce7dcc4e blk_put_queue +EXPORT_SYMBOL vmlinux 0xcec23635 bio_init +EXPORT_SYMBOL vmlinux 0xceee8ba0 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcf06201d simple_write_end +EXPORT_SYMBOL vmlinux 0xcf1efbd5 serio_close +EXPORT_SYMBOL vmlinux 0xcf2368e5 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xcf27fa24 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xcf49da9d bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xcf55f6c4 napi_get_frags +EXPORT_SYMBOL vmlinux 0xcf9a4cce md_integrity_register +EXPORT_SYMBOL vmlinux 0xcfa2523a vfs_mknod +EXPORT_SYMBOL vmlinux 0xcfcdf392 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xcfddcf5d input_open_device +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xd0018601 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd046164b genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd053e03b dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xd0570394 create_proc_entry +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd073c193 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b8a15c balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xd0c10ed5 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0xd0c31544 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0c379e6 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xd0c7c7fb seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d57195 load_nls +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a88b0b scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd1b26bcb mount_nodev +EXPORT_SYMBOL vmlinux 0xd1cd42a3 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xd1ef6f4e rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd217bf85 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd226ec02 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xd2483011 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25ca52c xfrm_input +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2704b2d dm_register_target +EXPORT_SYMBOL vmlinux 0xd28b1a85 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xd29472cb tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd29719e8 eth_header_cache +EXPORT_SYMBOL vmlinux 0xd2a09700 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2f64493 block_read_full_page +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd302ee29 sk_alloc +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd31f72a5 contig_page_data +EXPORT_SYMBOL vmlinux 0xd331e108 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xd336264c blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd338093c __lru_cache_add +EXPORT_SYMBOL vmlinux 0xd3814610 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3b8029a destroy_EII_client +EXPORT_SYMBOL vmlinux 0xd3dddb3e pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xd3e24f82 inet_addr_type +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd46db3a5 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd478c3e2 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xd481d226 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xd4aa3e0f handle_edge_irq +EXPORT_SYMBOL vmlinux 0xd5330602 tty_write_room +EXPORT_SYMBOL vmlinux 0xd5375895 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xd546b042 sk_wait_data +EXPORT_SYMBOL vmlinux 0xd5537c05 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xd5558452 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xd557df6f pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd57aa95a kernel_bind +EXPORT_SYMBOL vmlinux 0xd5836d9a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd58f105c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd59bbb99 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd5a64f88 elv_add_request +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5b644a9 follow_down +EXPORT_SYMBOL vmlinux 0xd5e3033a submit_bh +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd60c5ed9 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd6163500 phy_attach +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6259632 vfs_rename +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd646c7d8 bdevname +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65dd59a dump_seek +EXPORT_SYMBOL vmlinux 0xd6796c39 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd67b446a send_sig_info +EXPORT_SYMBOL vmlinux 0xd6993192 vfs_readv +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a5edce register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd70a52d9 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xd71a0a6d truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xd7265274 vga_get +EXPORT_SYMBOL vmlinux 0xd72bbf06 irq_to_desc +EXPORT_SYMBOL vmlinux 0xd75a04c4 netdev_state_change +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd777b544 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79049a8 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79bd9b0 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xd7bb5152 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xd7bd87be inet_recvmsg +EXPORT_SYMBOL vmlinux 0xd7bdd39e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xd7e3f726 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8256737 tty_port_close +EXPORT_SYMBOL vmlinux 0xd8916eea cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xd891bb3d of_get_property +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd912f6a6 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e4b4d powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd930ccdf __nla_put +EXPORT_SYMBOL vmlinux 0xd93c7074 udp_prot +EXPORT_SYMBOL vmlinux 0xd94965b8 I_BDEV +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd94c4231 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xd967ff08 sk_dst_check +EXPORT_SYMBOL vmlinux 0xd9814580 bio_add_page +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99235f6 __bforget +EXPORT_SYMBOL vmlinux 0xd995f087 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9da64b9 blk_put_request +EXPORT_SYMBOL vmlinux 0xd9e58c7b blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xd9f02557 netdev_crit +EXPORT_SYMBOL vmlinux 0xda0e9f75 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xda28f8a9 address_space_init_once +EXPORT_SYMBOL vmlinux 0xda2ef1dd inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xda504edf inet_csk_accept +EXPORT_SYMBOL vmlinux 0xda6b781e xfrm_state_add +EXPORT_SYMBOL vmlinux 0xda76fe64 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xda7a9bfc unregister_md_personality +EXPORT_SYMBOL vmlinux 0xda7ac75c skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xda7c407f pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa01523 register_qdisc +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdae388fa netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xdb03f66c macio_register_driver +EXPORT_SYMBOL vmlinux 0xdb22d998 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xdb2825e9 bio_endio +EXPORT_SYMBOL vmlinux 0xdb464882 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xdb507250 __seq_open_private +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7193f1 dev_addr_add +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb9d5bf tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbe6b766 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xdbf320a8 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc21eeba nf_ct_attach +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc5c8c12 qdisc_reset +EXPORT_SYMBOL vmlinux 0xdc6548ec mount_pseudo +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc732024 irq_stat +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2870ce wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xdd3ded99 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd7f2975 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xdda5ee40 do_sync_read +EXPORT_SYMBOL vmlinux 0xddba1973 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xddd21c0c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xddf82315 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xde043403 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xde258b1b set_bh_page +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde589d5c abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xde58f77d inet_del_protocol +EXPORT_SYMBOL vmlinux 0xde647aa6 scsi_unregister +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea1d6d6 vfs_getattr +EXPORT_SYMBOL vmlinux 0xdf27eb10 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xdf449b80 set_security_override +EXPORT_SYMBOL vmlinux 0xdf4d8ff3 block_write_begin +EXPORT_SYMBOL vmlinux 0xdf5d83be __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf700427 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf98bd9f inet_register_protosw +EXPORT_SYMBOL vmlinux 0xdfac442f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xdfb7a6bb scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xdfe8d33f fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xe01508e6 sk_run_filter +EXPORT_SYMBOL vmlinux 0xe01eacd6 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xe0344947 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xe04b0df3 complete_request_key +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07a274b scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe08b41b6 register_console +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe09b7fcb ilookup5 +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c11fe6 dma_find_channel +EXPORT_SYMBOL vmlinux 0xe0e20c57 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xe0e54c32 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xe10fa1d6 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe123bc19 neigh_update +EXPORT_SYMBOL vmlinux 0xe12e3d85 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xe13e19d8 inode_permission +EXPORT_SYMBOL vmlinux 0xe14465ed pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xe1590b97 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18064e7 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xe1a906d6 devm_iounmap +EXPORT_SYMBOL vmlinux 0xe1b6bf31 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xe1dc19a5 _dev_info +EXPORT_SYMBOL vmlinux 0xe1e25d51 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe1f16891 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe22c73a8 register_exec_domain +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23fac07 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2599b5c seq_lseek +EXPORT_SYMBOL vmlinux 0xe27bfe5b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xe284a3d1 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d0ccd6 tcp_v4_md5_lookup +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 0xe2fd3ec6 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xe34780cd __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xe34c71af scm_detach_fds +EXPORT_SYMBOL vmlinux 0xe36a14a3 dev_notice +EXPORT_SYMBOL vmlinux 0xe385ef1a kobject_init +EXPORT_SYMBOL vmlinux 0xe388370c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xe39e8a10 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xe3ab8258 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe3ad8c22 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d9240f bdi_register +EXPORT_SYMBOL vmlinux 0xe3e2beae generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe3e2dc1e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe3e898d5 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe4262a6a del_gendisk +EXPORT_SYMBOL vmlinux 0xe4344260 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xe43bd3cf of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xe43c8c3d user_revoke +EXPORT_SYMBOL vmlinux 0xe470e2d7 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xe4828bbc bdi_unregister +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48fbb1b set_groups +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4afaf44 proc_mkdir +EXPORT_SYMBOL vmlinux 0xe4cb9fd7 __ps2_command +EXPORT_SYMBOL vmlinux 0xe4cf69c2 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe4d29503 request_firmware +EXPORT_SYMBOL vmlinux 0xe4d46a8b jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xe4f0cd52 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xe4f88037 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe5213b34 dquot_disable +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5324eb1 do_splice_from +EXPORT_SYMBOL vmlinux 0xe551f4fa d_validate +EXPORT_SYMBOL vmlinux 0xe557f584 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe56ea83b splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815882 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe586d3b2 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5df0c03 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xe5e55711 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe61697cd inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xe616c611 dev_uc_add +EXPORT_SYMBOL vmlinux 0xe61e7151 igrab +EXPORT_SYMBOL vmlinux 0xe629f394 dqget +EXPORT_SYMBOL vmlinux 0xe64a9fa2 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe66150d8 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xe693cb57 skb_checksum +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6c685e1 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe6d4ae0f i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0xe6dceb73 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6e6c553 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7297ecc udplite_prot +EXPORT_SYMBOL vmlinux 0xe73eab4a ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b06097 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7cedd24 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xe7d2803b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d6373a bio_integrity_split +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe81bfdfc follow_pfn +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe84c44e5 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0xe87901a5 vfs_symlink +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b81643 rtas +EXPORT_SYMBOL vmlinux 0xe9005cce vfs_rmdir +EXPORT_SYMBOL vmlinux 0xe91078c5 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9537e08 get_task_io_context +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe98f2aa9 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe99ad908 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xe9c9d914 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0xe9cefd4e uart_suspend_port +EXPORT_SYMBOL vmlinux 0xe9d0a383 of_device_unregister +EXPORT_SYMBOL vmlinux 0xe9dd8074 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe9f20b72 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea10b9da scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xea2913a1 vfs_create +EXPORT_SYMBOL vmlinux 0xea38ee06 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xea5c2e79 __blk_end_request +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea799c11 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xea7a3c6a pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xea9494d4 write_inode_now +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9e938a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xeaba6190 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xeac23a95 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae50bf8 generic_readlink +EXPORT_SYMBOL vmlinux 0xeaf16558 ida_init +EXPORT_SYMBOL vmlinux 0xeb01f2c4 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xeb2a71dc i2c_del_driver +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3b60f9 simple_empty +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb93755d security_inode_permission +EXPORT_SYMBOL vmlinux 0xeb941ff8 noop_fsync +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeba8cd11 twl6040_irq_init +EXPORT_SYMBOL vmlinux 0xebb5c9ef pneigh_lookup +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe4b60b qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0xebf2b808 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xec0e73f1 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec2d209d neigh_table_init +EXPORT_SYMBOL vmlinux 0xec3c84d6 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xec493525 journal_init_inode +EXPORT_SYMBOL vmlinux 0xec5776a7 journal_forget +EXPORT_SYMBOL vmlinux 0xec615d79 simple_release_fs +EXPORT_SYMBOL vmlinux 0xec88a072 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xec8d9d3d xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xec98b090 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xecef6698 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xecefce40 misc_deregister +EXPORT_SYMBOL vmlinux 0xed28bfd2 dev_alert +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed36ed2b textsearch_register +EXPORT_SYMBOL vmlinux 0xed41b48b swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed95ba1e mmc_resume_host +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedafe513 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xedba0aec revert_creds +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc1445e vc_cons +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedff247f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee43df66 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xee49c903 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee65b8b2 nonseekable_open +EXPORT_SYMBOL vmlinux 0xee7ed609 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xee93d586 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xeea53257 pci_enable_ido +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaf2609 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xeeaf90f7 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xeeb6bf83 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xeeb805a5 scsi_print_command +EXPORT_SYMBOL vmlinux 0xeec032ef block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xeec64b89 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xeeccbde5 bio_map_kern +EXPORT_SYMBOL vmlinux 0xeee995d4 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef201024 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xef2bd204 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xef50750f da903x_query_status +EXPORT_SYMBOL vmlinux 0xef59da86 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xefa6c466 keyring_clear +EXPORT_SYMBOL vmlinux 0xefbaecd6 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefee38b8 block_write_end +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf04ae1ba idr_remove_all +EXPORT_SYMBOL vmlinux 0xf059cf4c filemap_fault +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf06ad70b check_disk_change +EXPORT_SYMBOL vmlinux 0xf07e68f3 agp_copy_info +EXPORT_SYMBOL vmlinux 0xf085f0bb blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf0c7e729 simple_unlink +EXPORT_SYMBOL vmlinux 0xf0e18b4d mpage_writepages +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f087ed __devm_request_region +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf111c5aa bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf1471835 input_set_keycode +EXPORT_SYMBOL vmlinux 0xf1582db7 get_super_thawed +EXPORT_SYMBOL vmlinux 0xf18eff0f switch_mmu_context +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1c78316 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf1cb2faa scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1eb211a pci_enable_obff +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20917fc dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xf20bbabc skb_append +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21924a1 bio_pair_release +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22944ba phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xf234c779 dquot_initialize +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf258f915 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf2de7381 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf2f012c0 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf3061a90 kobject_add +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32e8496 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3594ed9 default_llseek +EXPORT_SYMBOL vmlinux 0xf35ff8d0 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3982b60 sk_filter +EXPORT_SYMBOL vmlinux 0xf39bfa47 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xf3ad0856 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3dc89ac mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xf3de07f5 take_over_console +EXPORT_SYMBOL vmlinux 0xf4054d60 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xf416acfc gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xf41acb95 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xf41ad70b tcp_seq_open +EXPORT_SYMBOL vmlinux 0xf41b2a47 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xf4231754 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4442de9 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf45c1434 ida_simple_get +EXPORT_SYMBOL vmlinux 0xf487fbd4 register_framebuffer +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4b2baaf backlight_force_update +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6a9f6 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xf4cf5155 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xf4d34c87 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf509992f set_blocksize +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf535b4d1 generic_getxattr +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf58edefe flush_old_exec +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b3a906 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xf5b4449b uart_get_divisor +EXPORT_SYMBOL vmlinux 0xf5bd4a5d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c9af4a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf61da55c sk_stop_timer +EXPORT_SYMBOL vmlinux 0xf628eba7 vfs_readlink +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6556c42 dquot_commit +EXPORT_SYMBOL vmlinux 0xf696a3c4 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xf69fec47 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xf6a34ac1 seq_read +EXPORT_SYMBOL vmlinux 0xf6b712fe __mutex_init +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c42dd6 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xf6e11eff net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf70e95df journal_create +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf773f0dd twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xf7776930 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7a83d7c generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7bbed24 try_to_release_page +EXPORT_SYMBOL vmlinux 0xf7ec533a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xf80280a2 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf809920e deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf811eb10 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xf81b1b1e find_vma +EXPORT_SYMBOL vmlinux 0xf8217b7a phy_connect +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf8307a45 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xf888ffd1 key_task_permission +EXPORT_SYMBOL vmlinux 0xf8982f05 padata_start +EXPORT_SYMBOL vmlinux 0xf8a3caa3 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xf8b0193a inode_only_permission +EXPORT_SYMBOL vmlinux 0xf8db5cd8 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xf8dee8c0 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xf8e2723f scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xf90eca40 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf924562b ll_rw_block +EXPORT_SYMBOL vmlinux 0xf92d51ff input_register_handle +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf96befad ip6_frag_match +EXPORT_SYMBOL vmlinux 0xf9798ca1 skb_queue_head +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b67e04 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xf9c8cfe4 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf9de16b7 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ff2a13 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xfa4cc216 input_register_device +EXPORT_SYMBOL vmlinux 0xfa4e317a tty_shutdown +EXPORT_SYMBOL vmlinux 0xfa5f8191 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xfa7bbd3f pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad58abb inode_needs_sync +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0b59e7 mpage_readpages +EXPORT_SYMBOL vmlinux 0xfb189817 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xfb1f8018 soft_cursor +EXPORT_SYMBOL vmlinux 0xfb357285 fasync_helper +EXPORT_SYMBOL vmlinux 0xfb49a608 bio_split +EXPORT_SYMBOL vmlinux 0xfb4ed296 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xfb5866be ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7a1eff bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbcf4953 netdev_err +EXPORT_SYMBOL vmlinux 0xfbdd27f5 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbeb318f kfree_skb +EXPORT_SYMBOL vmlinux 0xfbeb883b journal_errno +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc310411 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc79d8ec rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xfc865222 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xfc8875e5 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfce041b4 netdev_set_master +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd136b59 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xfd5f22f7 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd767f83 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfd8532fc mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xfdad740d dquot_quota_on +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc73b56 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xfdcdd4c6 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xfde9a3c6 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xfdebfd90 sock_wfree +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe176974 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xfe211557 fget +EXPORT_SYMBOL vmlinux 0xfe38ee80 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfe4ff47a scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe671cb7 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe76960d __invalidate_device +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed17198 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xfedf9079 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xfee6c055 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff053227 pci_disable_device +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2012f4 journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xff21924a mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff705018 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xff7f6930 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xff931bea block_invalidatepage +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffaae799 cdrom_open +EXPORT_SYMBOL vmlinux 0xffc208b3 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xfff089d1 simple_rename +EXPORT_SYMBOL_GPL crypto/af_alg 0x37dfbc44 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3e552bd8 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x50b60711 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x72c22a93 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x977cd690 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xbad29b72 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xbba3098d af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x0c4e0e2b async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd22f83d4 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe1cb833e async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9bf62592 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xee1c5128 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x473637d5 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6ca66ffd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7e02fda5 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8afb58c2 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x104e0837 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbe47e92d async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x9026274b blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x1b163748 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x25bd4520 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x3955cd90 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x484511b5 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x4dcf8b80 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x66aac352 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xae1a30c9 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xc53c77bb cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xe33ad780 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xf1950093 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x862d527f lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xf565ec2c serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa5c53997 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x907e18e5 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x06c95853 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11094c5e ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1ae78ea3 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x31dcae04 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d8322e2 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3f3f8194 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x407fe79f ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x57817841 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x650764cd ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x76288875 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x828ebff1 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x90c0d72d ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc07a84ef ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb0e44ea ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd77dc680 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc584045 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea3dc795 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfdc8c91e ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x1b66aff3 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x4812a331 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x49be96df sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36314864 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x543e7714 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7720334f bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa3ea07f8 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8fabbe9 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xab8ca8b1 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad5b4313 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb70ee277 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbbab7055 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc28b4a03 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcc809420 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd0de1678 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6c862de __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdaecf250 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe341c525 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x233a29ef btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5e4e57e0 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x736eb6ec btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x794fac1b btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x91c9db06 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x96075054 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x99774070 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9b8a2522 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa6af75df btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd4182c2c btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0760680c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0f0ee061 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x141948e3 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x26c71cfa edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3530d2e0 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c7f2f3a edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x58dcc4b3 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x59e265e2 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x677a5e6a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6dd5191d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x901dcc92 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa423ba2c edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb25bae90 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb77a7ee8 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc6c95467 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd1fde33 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe009291e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe12bd4e0 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe5d2132a edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeac91bf5 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf622b153 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xffee03c9 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x21941c8f extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x2cc76d4a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x3490dc38 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x3ed4cb0e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x5fe1f966 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x7ae1f77f extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x81aa1056 extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8db64d69 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa30fcb8a extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xae317b3e extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe4a847de extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xf918f443 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x42d60155 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc0762255 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xad97e196 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xcc347abe __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x992a6288 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa9a33b77 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1d6ba390 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xca3003c6 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe29c359e ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04d14c65 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09995152 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c080e33 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11a74e2a hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17d356cc hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2278a6c9 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e9972f2 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2fb4b63b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40a1eeb8 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x48d48131 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b6b49a3 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x662fc19e hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bb742da hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x743ce7f6 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7530fc03 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e36adc9 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xadde2935 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaee3f290 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb53b673d hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc907711f hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9625631 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb529bd4 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc445da3 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7afc44d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe813abbe hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed768c5b hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf33781ba hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf3750f49 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa99892a hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x0d439806 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x121d350f roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd852f35b roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x413a6137 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xa12f0ebd usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb2669c58 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd6bfbaba usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12e63c09 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x13d19fdf hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x25964025 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x356f1e0d hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73c112fb hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d5859ec hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4714e2d hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa92d44a0 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaaedba33 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabe27e91 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe9b227e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc892176c hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfe38c348 hsi_release_port +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1e8dd0e4 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2a56b6a6 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7f0070fc i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x92805b26 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbea91898 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbf00833b i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xda69d5d3 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xea07e7c9 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xed25df91 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x30d11db3 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf864c7d5 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7e1ad437 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd27d0338 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1eac82ca iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1f81f82a iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x21e4cd2b iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x349cd2ac iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4caf2554 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ed4e685 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6bc7aec0 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72f59254 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa55ea155 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5d12013 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc633f86c iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xced7d467 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe49ecea0 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xee033f43 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb326c65 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x93d941b8 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x0465ed53 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x51c3be4b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x540cb317 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xb48bc9c1 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x076bde4d wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x08293455 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0a0c61c5 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1597290f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x259d76f9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x72b4a6c6 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x735c0e57 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x73eaaf58 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7e5ddf39 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa9a5f92f wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae2d58f2 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd93d2991 wm9713_codec +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0216dcaf gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0bff1117 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1ea4f006 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x24e30742 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x411d85b4 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x47622531 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x484e62b0 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4e03899a gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7edf79b5 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbc8b4598 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb1d27a7 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcd460e06 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xda8f5a0f gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe06661ff gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe3c1bb17 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe8cc0b77 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf0292014 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x014b22e5 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x183ae4c5 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x56c8dfdd wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa0518c94 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb68ed81d wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbe3fdf1c wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd8d6073a wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe194815c wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe60529fb wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf2e3574e wf_find_sensor +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x87f7441c dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4e2eea43 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7b274ec9 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x100a7a59 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5180048e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7478a61f dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8d35c5fb dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbfe9d5e4 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdfea355c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd9f6bf8e dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x97b5308a md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xd9a1346f md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x0faa5a70 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x28cadc8a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x31a0ec81 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x4d8fa7eb saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x4e453428 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x51ef5dc2 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x7e59bd71 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb061213f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb0d3f46d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb102772e saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xc44d4c26 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x05940455 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x0780c1ff saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x2c577744 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc323beb7 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc951fbb2 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xebb15643 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xf24f044d saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x369c7a9b tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x484e7d0c tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xf3c6bb22 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x0f71f336 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x33c8c10e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x3eda2f1e tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x480de0f9 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x438474f7 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xfa7d086e tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x37f7d000 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x0e325154 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xaa612144 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x901933dc tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xd4ccbf78 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x4a3b1327 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xba73c9c3 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x8b9d408a mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xc0c2a2e3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x035231a0 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x20f83680 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2af9e8ec mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2fa48b2f mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x333a38ea mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x50b19f9a mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5e4f3315 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x6013f88d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x816a8709 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8294fca1 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8595e921 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8b83033f mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa29c48d0 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa63fee01 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa829041f mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd3e339e2 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xddaaac2f mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x05bb010e sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0ff38764 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x31270f88 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3452f123 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4d01bbec smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5497a4e6 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5d5b94c7 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65f64d2d smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x674fb5b4 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x70226bee smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x751b9507 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9cf403c3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc0fd717c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xcc96128c sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xce559f62 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xde833f57 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe7a5f57e sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x03ed2bca ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x08026569 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x09109def ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x34e9d978 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x6a99be00 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xd2f1335e ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xe9f6b60b ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04c63ab4 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x19b00628 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1d310591 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a41450b rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x50d86af1 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x561d7ba2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6e74633d rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x735b3c84 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b9783c0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x83154e1a ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x86edbe19 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x96a961fa ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa6380630 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc374001a ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0cce883 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdb1c26f8 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1cb2de0 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x04c10dda cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0ef3ac0f cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1433be5a cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2248684d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2607ffd8 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2af80e7a cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x5cd1b36d cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x77f60084 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x7d48cbcf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d6ae58 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x86ddebb0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa02f426c cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa2727d6a cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xad8f47e9 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xb53c883d cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcf8a5133 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe68ab617 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf387c343 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf402285d cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0xbff870e9 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0a562d36 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1f616915 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1fab09d0 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x41577476 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5a880f7e em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x632a3e4b em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6572fb66 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x73e31b19 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x894a3aec em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xadf7cf13 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xbb426994 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xdd36c7f1 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf6478180 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xff5e9ccc em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x2d8355df saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x420877b0 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x4b537141 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x4e2ed7b4 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xf0d8e72b saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x05bb14b6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x401aebf3 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x430f0973 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd193d297 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x6b9b8f95 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa90fad82 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xbefd5c29 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xecace95a v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf15480fc v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfd612bd7 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x50fc8254 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x6a2c983b v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x92ba7914 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xc2442b00 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x12484e05 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x164cc77e v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x22388d7d v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4f6c85ac v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6c074422 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x89db8c8d v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8c3818f4 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x9daee823 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb8897799 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xcb7dab00 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xd2a7e28d v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfaa3bc6f v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00f3719e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0db87a1b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x13af55ca videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1db57de7 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x32279889 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x336c532d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x349b9faa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x38b6453a videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3d7436b7 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x43159530 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4abb9978 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5130b549 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x52ff2a46 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x68138ef0 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7aa5d511 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8fef9856 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x97b9bea9 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x99ca0194 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9cbd48de videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa84cf7da videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc5a4f0dc __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdd6ae8b3 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe7f25659 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf6ef9d88 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x58d2600d videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x5d34cf4a videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x656b189c videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x68d22159 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x134cc88f videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x2981ff4a videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x384ec0fb videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x488bcc81 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa2d4bbc4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xafdc39be videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xd89bd33d videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xeccdc1f6 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xfddbbd4f videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x0e0ba84b videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x7eea2a8a videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xacfe23cc videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x01bf6687 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0af446c0 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x245055d7 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x33fa8eb0 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x4b6a0d6b vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5b8a8836 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x699713b7 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7bed2150 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x882f4594 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8ca45b6d vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa79e0e1c vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb31e9f22 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbe70b4a8 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xce4fe128 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xcef01e59 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xd17bf501 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe7e2fd3d vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x7d4dbd73 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x9d7fc7cb vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x02f89c12 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x498891e2 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x8ed759b2 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xb2b58518 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xb89cce35 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x14b82d64 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00b97b06 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x07c374d9 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2505355d v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x342d952f v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3e0df0a8 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x58546fd7 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x647c1d92 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6510b2b4 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x748e35d6 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77897186 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x91801820 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xaf7ee499 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb10eb1ef v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc6cafd35 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc71bbbbf v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc7dedccc v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd107e59c v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5df5cfa v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdc517e33 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdda106a0 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe624797d v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf2bc472a v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x064f1cba i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1bba258e i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x22214d37 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x2e164e49 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x460f7302 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x784ad502 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x866af420 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xddc97b32 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x046fdad8 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc169d95d lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xff0aab85 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x14ae6a5f lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4e34b8d6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x59a77f52 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6c56c10b lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa1a5c09c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xad93c115 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xebdca387 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x05c3e8db mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x71ad4d6d mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9731147f mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1055d91e pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1237199c pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1328f4c3 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2f025fd2 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x532785be pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6eef8110 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7f9009d6 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8fba3d76 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9a97657c pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc4319274 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb0f7a5a pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x37edbdc0 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x54db8a17 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x675ba71c pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9706d99b pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb2376d12 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdf6b0203 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf010bb48 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x10945460 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1aff2a09 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3907f9dc rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b116562 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3cceeb48 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x430ff39c rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44e9ca09 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53a93b4e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x55eef814 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5dddc2f6 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x66bf6efc rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x67350329 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7dd14259 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87dab2ba rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e2ac441 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8fb7dc6d rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xced909f3 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf0ae0de9 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf847523e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf910bc7d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff9b79a3 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x14bcad62 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x45fe602f sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x85845bde sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8d28fb7d sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe8567b68 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x3913ef6c tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7f41ba23 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9f9a36a7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfd02726a tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xf3cd73cc ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1e7af848 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x255f9175 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x38d2dc05 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf16b354d cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0275d3cb enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x276d0c12 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3802a729 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4c6916f1 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xaf3fe8bd enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc6b1ddcd enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd68e4cfe enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01bb94a5 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x362da46a lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x36ca54ef lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6d6f3f5e lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9733bc5c lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xecfef0d5 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfc250a10 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x1362c1a7 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xeeace0bf st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x29f716d9 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x45d3da7e sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x484b261d sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x73b1926e sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f0378e7 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaf7c3d2d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd6e9a54a sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xeffc570b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd41bec7 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5b4281da sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x830441c3 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9f1ad064 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb143832f sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xddf02a88 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe790c3ab sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1ac44e5e cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbc5e3c47 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe3ba26f2 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x21f0a888 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9e389de2 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xceffc5f3 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc5401124 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0a73ff84 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8d471546 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdf6cf633 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x77b27f77 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x150056ad mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17cd0159 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1be0537b mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x21f9575a mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2240baad mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26b4a9de get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x312375e0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32445a18 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35854531 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36ec2e30 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x472ac4af mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c759e74 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4da5483f __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5432b497 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6431295a mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6721524d mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6838770d mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f197230 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x720b9c9d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x758df218 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e7fb014 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83ef8a3c mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9866ed97 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x98ff3c98 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9fdd4a4a mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa572ad42 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaef5615b mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf90beed get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafb06536 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba1e939c kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbdde8b26 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf7def5e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc3c60473 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc85a4096 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd2d10cb2 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe06e0fb0 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe89dc8ee mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb0e7235 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe635dbe mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x26515a77 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x68f7dc74 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9647bd21 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc22d56aa mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc70525b0 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xa936c213 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xfa1dd12e nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x65be3e14 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00f92249 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1e9dd25a onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x17913683 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x52ef8711 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6b86f4c7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x70f876a0 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7337cece ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74fd9504 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x82af55a5 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8ced3e3b ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9968b486 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb250f293 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xca9c02c2 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcd44d5c0 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdd851c45 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x091d85c2 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x79a0ea90 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa9ff80fc alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd96cf5aa free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x230ceaf8 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x27b7c42b free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3f60c200 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4d1ea475 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x506d3013 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5345b878 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6d6fe9a6 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7baf8edb register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7cd62ab1 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9077f23b alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb241908e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xba9826d9 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1072a2cf alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4d2ff5f1 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8bd2b711 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9ab428f4 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x26675ad7 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x45b4e9fd alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x65dec2cd free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa372d760 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05044ad6 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e5ba968 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f64fd0e mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fcb02fd mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x131a6119 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x163a5ea3 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1842e70d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19fce1e8 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c2d623f mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2840d5d7 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x294b5ca2 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c60d41f mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e5bf099 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32f602a5 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdc35c8 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4058e330 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4398840d mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x506e0e04 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x547b8c31 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x555269b8 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55c1a0c0 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55c34816 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58a29e87 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5af0d663 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66a7088f mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6763ad62 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b2aeb38 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bf4770d mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ea558e7 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72e04e35 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x752a4993 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x755b6328 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x778a0d37 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b565523 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82066b62 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83b04e71 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83bbc868 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88d9a811 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ba96380 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cbb167d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9400de3f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x982627e8 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ab30aeb mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b9c6638 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa108d444 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa190fa25 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa55f1b3d __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa78a77c7 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80a4c98 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabf96169 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad7851fa mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafd74e26 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0d40695 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb371039c mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7332191 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb79ff42b mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8cb9444 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb1ed8cf mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf156f6a mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2a433dd mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc39d0a99 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce15d44b mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce248b20 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4ffa541 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7061165 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb532e67 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb5b2a19 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf011caf mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe223e8f1 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2de98d3 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8020ce4 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef879537 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfac67990 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd7d6a41 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x557dd5a9 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5e457c57 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x66d7c90b macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa2d31487 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa523e804 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x81ee7b01 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xd190631e mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4cc6c333 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x79cfe186 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x855e7ba6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc44a43fb usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x42d51fd9 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x599194e9 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x93ecca69 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x96089ceb rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xee30a2a4 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf04f3972 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03656796 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0898f04d usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ba3af1f usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x118f7bc6 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x19714586 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x27c1a8e3 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c2879f6 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3d368ea4 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x43ae8b12 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x452b6040 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x625a7e9a usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x63229c80 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x683c325a usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6e0fa4ce usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x774357e1 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x93662736 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x93beaa1c usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe3e47de usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4caea8a usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd8ce2808 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe9c2db9e usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xee6cc63b usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xee8c916e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4c7b9bd usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x019685cc i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x02f01182 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0c4236f2 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x10782eb6 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2bdff26c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x395960a4 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x474b32da i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x491688a2 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8de12556 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x91b7f862 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x93832cb4 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d44e898 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xad5fd42c i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb6d68573 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xce0ab444 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdaf8cc1a i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x9f400fab libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3feec4b0 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5536d8bc il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5e987b25 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x69b82f24 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8d965863 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0b975f1a lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x10c5481b lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x285f7342 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4e08a911 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4e74ef3d lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x619fb353 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c78d292 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8f46ce52 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x94976cea lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9b702eaa lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc917ef8f lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xee52eafc lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf704fb89 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfa44a830 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfb10de6e lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfd84972e lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x280fe26e lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4d3aeccb lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x60bbd229 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x95a1d1e6 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb8d40542 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb9563cce lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbfa4d584 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd078d4be lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xd96c71d2 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xf5d14a63 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1597a766 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x175dcfce mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5b98a595 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x96bcc8aa mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x96f61fd0 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9b6724b9 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa24c446d mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa3be099b mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb2aa033f mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb2de7ffb mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb9a6d784 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd64b71de mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe8b5e6bd mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b25ede4 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6226ede6 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x627b7d24 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x62c4ed35 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x93545a60 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb080edd7 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc46ca898 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd16ff1a6 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe93f3ae1 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x093bd039 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x105175db rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16b6b2bb rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1706c212 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1ab15264 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1bf54e66 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2aee418e rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x344c49b2 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3df01401 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4c382784 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x54eae2d2 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x563d19dd rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x57df72d5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e52d45f rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62727282 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x68438794 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b0a8d1d rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b3cceda rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7212ba9a rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7ff6fcc4 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82aa3358 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9322cbb8 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9472b0ab rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99885ced rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9f407465 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7b68e93 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xacd3cc1b rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1b051f6 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc205443d rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc31c2966 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd75381f5 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda9239ce rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb824ee9 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe51cc276 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe944115e rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xead47c4c rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeb3a720d rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf9103732 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcef49f0 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02e1aa25 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x061645de rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0dffb46c rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x150b0204 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x159a49fd rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x173d5a9b rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1caa6fc0 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1f8b14a0 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38152b11 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x48c7dc74 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4d4114b0 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e616d94 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b5e9110 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f02867b rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60fc3f0b rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6430d5ac rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75efa0dc rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76835df7 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a370812 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fcd81fd rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80cf3cb4 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82ecbdec rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83316978 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x85693e84 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x907b81c5 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92858cdf rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1a7d9bc rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2b5f7f2 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa692cc00 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xab46de29 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xafb33999 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5fce61a rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7c0478c rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb916a433 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe7d98b8 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc4f62a49 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfeb5791 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd7b88fee rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd7ea6f35 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd842f71b rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda2e8924 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xde69ed59 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed46a618 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xefa2a7af rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf82743ce rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfcfb3299 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x128a51de rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x3b1a4a93 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x42a219b0 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6337b1ac rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb181c9f9 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb1f8e2ad rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdf261b20 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe5180424 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe82a1961 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x225bed95 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2556765b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x414b0835 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x41ef8003 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x46d3fce6 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5b40592b rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x637242d5 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb15e73f8 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1dd649d rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc96d1795 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd1fe8fb1 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd377b1de rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdab7afee rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xddbaa369 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdefe40b0 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xecef00f3 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x27e17431 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x4770da12 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xdad3375a wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x100ba6d2 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c31568d wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50c35488 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c1537e8 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8525a9cc wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x876a989c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x876b4723 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5047483 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa7e4c23d wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb4f5e0a4 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe6798b5 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd289736e wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe2a5e446 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea25cef8 wlcore_probe +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x14d1560b pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb9ad2283 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd42a0128 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0290b2c2 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1176f86c mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6aa09686 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6bb7e236 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xae44ca82 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xca5dde41 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd2903467 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xed3cfc12 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x30a29d15 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x784eb0a7 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x927a47a5 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa65c3572 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb79ffff2 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xed94ff87 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x475aa66f wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x007fa2cc cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02a4f4e7 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07d92732 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x154b97ea cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x20c557e9 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a8febc2 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3cb002e6 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3df2df2b cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4cd812b8 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50598947 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x54494453 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55597a09 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5855dc40 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5d642fda cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6090feb4 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61bc8773 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x62c61f76 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x712f9e18 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7139f52b cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x73a8676c cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7839b711 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84106d2f cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88da0c3e cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x961c6481 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99cfda92 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa375bbea cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaab63a5c cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaca5245c cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xadc9c65d cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2d1aa52 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb66d999c cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbbb6ca8c cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc4568400 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc64c45e7 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc91b3745 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcaa1fc97 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb469969 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf4cf561 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd08df04a cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd26bdcde cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd430eef5 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe56bbcf3 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xebf55e75 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef6fb807 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5a957070 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x610b675a scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x865e9cb7 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xafe9f053 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc640547b scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc8debcff scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3357cc66 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5557734d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x746d077d fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e01be92 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8a7a635d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8f7c0f6b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa9dc2480 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd4172696 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd6f17d13 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe5a1d0f4 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe6a6d716 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xefab97c1 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf99333af 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 0x0f38e9d6 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13516327 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f29d79d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20391232 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x236b2955 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x242f6c4e iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24b62972 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24f48bdf iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b0af53f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e58a095 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x321316c1 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33aaad3c iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x34c8194a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e2bd6c9 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4182597a iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x437e4eea __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x463de2a3 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49bdee4c iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57c1e5bb iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x600c83c8 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6174cc54 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67254e3f iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72f82af7 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x738cb3a6 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bc325af iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c58aa09 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82c94296 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x873d7097 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94c5e9f9 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b665801 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9bf36958 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f2a17cc iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fc5946c iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1880f0b iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa3d49bf iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab8d565c __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1a82239 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb735b5ec iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc12f47c3 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9ea5478 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcef8d407 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd089c9b iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf71bf9fa iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x132bd627 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x17f754a9 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x354b577d iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x379efe34 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5462cc79 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6b56db4e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x73f0103c iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8516f53a iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8d86d73b iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8e074a6a iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xadf0fa46 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbba033d6 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd18e0389 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdec007ef iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe28d35e6 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeb397265 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfee9a09d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0764eb44 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18bb4bc2 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32d669a3 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42951a34 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64fabce7 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x73952252 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x797727a5 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8b75628c sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x95ffd198 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa0939341 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa90dcfca sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad69f4b6 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0a6758c sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7ecd43c sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf55bc01 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc80a4c4a sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb925e71 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd58b02a8 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdcdf9f8b sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2426c2f sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xec2486d1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee9b8af4 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf37949fc sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x59a42551 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6d6b80d0 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x70a5bf59 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x85a875a6 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xafdc7e2b srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe32cadd4 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0472e357 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1fa95c36 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x93642a85 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa352b29d scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xab8b9f08 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcd9601f5 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xdd6d46f6 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xf229fe9d scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xf25ad261 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x06a07bda iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e044eca iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0fc1da01 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x15d5fd51 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1854da16 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x192c794c iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x227aa816 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2decd26f iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ac5a3af iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e26aff4 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f59c1a2 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42ce74f7 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a100c6b iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bbb2781 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bbc1a2e iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e6df0fe iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x600d62b1 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65c146f9 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d8f5f54 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7306199b iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x832f2bb1 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x849e73f5 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cbed8f7 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa051b9a4 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe3e5eba iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc588723a iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcae7600d iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd00cbe1 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9aee6e0 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdcd3b1bb iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xedf88ea8 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf234e0ba iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x30daa33e sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x43f791e8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7df0fdc9 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdb0ea35d sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3af105e0 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x43fd3616 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x45844b04 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa4855eb6 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf6f8933c srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0638eaff spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x075ba653 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc928c80f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd36c3678 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe875ed4a spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea373f25 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x5ac4f61a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6250425e dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa4825ca4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb666eb89 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdc44d6d3 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xb039f6fa ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x9334e3e8 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x42669530 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5610a89b ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5ad9d894 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9000551c ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbda79488 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xddb71564 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0b4f5847 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7822626f synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fbeac98 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x98413438 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9e5d02ac serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa0224e9c spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe177354b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe2428175 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xed7fbd5f spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xff560f1f spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x04653c99 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x074d3180 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x274821f0 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x29a536ed usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x476cccef dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5033ec84 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8174664d usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8e52a66b usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x96bb3117 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xac3bc848 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xaf745aee usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xce82c69c usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf9bc5f34 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x0e90402d serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x25a403fd serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x6e6ee90e serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x7561a86f serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xf220a185 serial8250_tx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xfbbbec3b pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x0c74f058 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2885e43d max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4ad6a2f6 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xd35d5098 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe82ab4a2 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xf56d6cc9 max3107_probe +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4243eba6 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x709f5dc0 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x91919c89 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa6cc5d87 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf2edb648 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x0190e4bf usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7ea78a40 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xda83c3a0 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xea7a7a78 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf1c570ec usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf6c0d7df usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4246b988 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x74ff2268 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7c44dde5 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa03d925a usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xacb42c8c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xae28c786 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbbcc08a2 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd6aadccb ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xeae7e0ef usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xd5a61190 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x649a1504 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x3bd21f35 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0250b914 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0a336dc2 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x177eae7d ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x196e9322 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1b9b3264 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1ba73bfd usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1f7c5954 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b0ce3fe usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3270694a usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34a048dd usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3bb99f68 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c98c250 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x527dbb11 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e45c19b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e7fdf73 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x92813813 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd41ed8c3 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe9a0f895 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfc42e950 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x146a744a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x150be445 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4387d7fb usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4391d935 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c47cc3e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c6d33af usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f8c2fe4 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x56068c06 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x65688a27 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x674cdf7c usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x680ef8f9 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68ed3b7b usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6928cee2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6d163aab usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x843e29eb usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b7c6ccc usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9d182d27 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb5fb81d2 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcaff336b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd90d81b6 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe3841970 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe4c34ca0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x31d61ebe wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x418632d0 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b5a88b0 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9bdd0c06 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xbd610f24 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x01acf39a wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x04c0cb83 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10d991e4 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x154f4d3c wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1c83504f wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x28fbfea0 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x33bd549e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4240a6cf wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46e203ef wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x63685002 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7fb52859 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x807da3c0 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9dd3cc4f wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb5f23904 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc05e4700 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe3664c23 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x790ad472 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8fb700ca i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc6cbd8e1 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x01cf71a6 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0e5bdca6 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4718cdb3 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5c51faff umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x62a8d190 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x96c313cf umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa8b3e5ff umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfcae0904 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x10e65700 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x14703d1f uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21235636 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2402c8ae uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2895b351 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2e4e3da1 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3171b50a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3aa1ccf9 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c759c1f uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46aa0ad8 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4dfb1651 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x541eab12 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b3a2afd uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5bec8efd uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ffeadaf uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x62af5974 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a9f684d uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d1914dd uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7200f7c0 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a06edd7 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a38ea7d uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c5f0369 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89b132d0 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f824869 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xabdc9f89 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xacbd81ac uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xadcbeba1 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbb57834b uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbd035671 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeaa1cf8 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3c30883 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4269732 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdba004bd uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec32c015 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1a5e637 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf682bc44 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xff39387d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xea0b70b9 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x0c36c2e0 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1136b7f0 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1e378a94 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x444aedeb auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x687f583a auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x87399dbc auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8c9e2da0 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbef892cc auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc94efdf8 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe78ed6f3 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x26ebe128 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2e54ce14 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x510b6896 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x537cc16a ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x69efc0b6 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x73292ee5 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbcc54ea4 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x378d09ef fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd44009f4 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x6346cdfa sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xefb5e1a2 sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x5079a67f register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x5b33bc46 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x791efce8 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x99b39956 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xc51ba0b5 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0c97cfe8 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3b536c56 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3e9809a5 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x4aff1ae8 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x57b9a23b virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6c74c67a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x783fb7c2 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8aaa64ec vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8c7b5d64 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8cb5272a virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xad0156a5 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf418901a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xfce22b46 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x46ede006 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5bf21245 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6417facb w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x689f4b6b w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x92c8a111 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa152eff7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd3ba5ad1 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd6a98850 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xee8db256 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6555833d dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa0c87053 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc8111a95 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x03251cbd fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x1372813b fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x161689cc fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x19054615 fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x198ff4a1 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x1a1c97fd fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x2d46cc81 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x3b1c823e fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x4138c29a fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x508ae1af __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x9d5a58a4 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0xa8d60b77 fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xb0ffbef5 fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0xb6883288 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0xb97b577a fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0xc8fce104 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0xcdfea3c1 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xe9340389 fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x199ac821 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3e1cc2d0 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4c869f5f nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x719479f3 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcdc8bf5c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd9f69137 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf4880467 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01f3d968 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02803b9a pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04ce7ada pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a95e754 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d85fe7a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10b81155 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17d56034 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c4901dc nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fae605c pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d9aadba nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2eeb3547 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35ccef2d nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ae05d14 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x423a0967 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x509d6452 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x512ad53e nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b997b69 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f7c40d7 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6634c9fa nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7174305d nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b92d52a pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fef403c nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8573cdb1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x912bd397 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9327197f nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c670948 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d2476ee pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa141686d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1b9e0fb nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2566402 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa68a7b81 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9df1422 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab30642c nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae9fabf4 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6a90cee nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcbe4cdd nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf2f7704 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf8e94c3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc79b3c73 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb76b37e pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0d5c8ab _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4106e3d nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe847f0d4 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1f2429e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6a920d0 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffd85e64 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x132d1d6e nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x7e583f10 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0d6b39bc o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11c9267f o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x6f4ab97b o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x73685b87 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x990fc660 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xba1ea0f9 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdc5e8233 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x70af07e8 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x90eb64ba dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x96aa7fb9 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa85ccf91 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdd2c2dfd dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf98ff38c 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 0x31557c37 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x48c0388e ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x574981a3 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x3d2aa336 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x805b52b0 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xd83d8ad4 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe15782d6 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xe2706752 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xf40903df garp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x0e28e88f stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x1fcdd2b6 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x1af671fd p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x9e57fd11 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x0e76301b 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 0xac3c6007 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11156873 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d4ebeed dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26fe5222 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27631a85 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27b4e358 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b96cd0d dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c52fbc8 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f9e4329 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49256d79 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a25400c dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5316d86a dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ef81a3c dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x61312cc7 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x648abba5 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64d03e1c dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67232338 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68ece158 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76f91cda dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ad54f59 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8dacf5ed dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9808a7e4 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa95d6992 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaecf0315 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbcfd1888 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbdaa12b4 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbef817be dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3c9a201 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4e6a180 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc755a875 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc903d484 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xccf5a942 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe03e4c58 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe054ac63 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf85dda10 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0a296ec9 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1b26cf1f dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8c0eab09 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd1c34b2e dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd9cec3ea dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf1469bf4 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbbcd17ba unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe81a12b3 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x29b6c645 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x3a873520 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1fd80579 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2ee25c80 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8b1fbcb9 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8cc588ea inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x902c77fc inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe13f4741 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xdfd46fc6 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x95c918f9 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x566bbbd5 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x432b470a nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xbc8a9430 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xe19a1fae nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xef559b7b nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xf4c77e80 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 0x397e5d75 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6a333949 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa7195a6f tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb4b61eb6 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xce0dad75 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2a411ebc ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x403a315b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4bc88faf l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x64df6420 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7a103eb6 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7ea1a952 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa7a19284 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb76a3a1d l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe2e5a171 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe5c800b6 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe796a347 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeba41ef5 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfe693a44 l2tp_session_delete +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x81c003a0 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1ead7a4 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb59b71f0 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb9249525 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xeae0dbef ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x028655a9 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x328a1301 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b35f933 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x768ed89d ip_set_type_register +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 0x81edc24a ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbe18ac1b 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 0xcc44a4f6 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcd1a28df ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe66c33fd ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0cde72da ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x70b2d5cd ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x96c1ff69 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc1bae494 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00f3843e nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01aa0781 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ea4597e nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f05f231 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x112dc635 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14da37d6 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17531722 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a7e007e nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d13de4c nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ebf0993 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x21b45a49 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28bc22e5 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bb4e148 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bdf4c79 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cc6b2c7 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d8a9582 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2dfa7bba nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ed009ef nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31ab3c18 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3722496e nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39849b38 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ade3656 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c985b30 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d1352db nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51942fbc nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53125425 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c5cbcca nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f91a091 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61e2cc60 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69959d8f nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d224bdf nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f33cb12 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79b170ea nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7efd0a44 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f253059 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f4d70d6 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82cf6831 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x845efd4f __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f0eaf23 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90aa0bc4 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98b7b6f6 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b093e2f nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9eb7d401 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa25f249f nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3e7096a nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4516fd9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9e34715 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad06f806 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb14564f2 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd38cda1 nf_conntrack_l4proto_tcp4 +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 0xc2a21bb5 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc389654f __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6054ed7 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd053796a nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd520a7cf nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5c31988 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9a65366 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb0f0018 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb619fba nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf391f3d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb7b558e nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeda73a1f nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3ecab06 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf89b0f89 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8e6ea8b nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x005e7f4e nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xe7f2eb7c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xdfdfc10a nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1197f51e nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1225c142 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x330f3465 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x713ab189 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x83d25878 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa3bd5a6d nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb12581fa set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe9b2b11a set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xef601b4d set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xef866bc5 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x539bb0f2 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5dd67986 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x699ab6e5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x95b29e0f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xccc2bf9b nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x30d977eb nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xbbe7dddf nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0f23e22d nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x26e17102 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x43f243ca ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x558480f6 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5f570d0b nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x664132e9 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9aa05ea9 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9c253670 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa4f03ee8 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xac03ebdc ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc505d29c ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdcb926b0 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe8af2d0a nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xcd60208a nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x05850f85 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0xdd031e46 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1cc65e1e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4f243979 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x56d1ab35 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x67517140 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x84e9bebb nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa18e573b nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9bf5bd63 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x3255ddb3 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x034ed976 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x10c1c1e2 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a80f390 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x37e1cff6 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x46c84c6a xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x79996851 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7c999b50 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa6beb0af xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb8c6e22d xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc0271b8d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1c1c35c xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1688626 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xde8dc958 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3e1dd4ab xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x9a303feb xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x337078d9 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x462fef16 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5a6da9cc rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6349c0ba rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x70a2f5ba rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x81130fde rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x934351ee rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x95d2ec98 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x965f4e10 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96b19906 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9fdfab18 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xa48c7081 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xa4f434bc rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa5d9bf7e rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xad5b4c0a rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xade83863 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc48c3f2e rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xc967fe6a rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xe25bc5d1 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xea8013d0 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xec471c45 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf9e87699 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xfbb045b9 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x133978ff rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x79b666c1 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 0x23183127 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x28f02215 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x628df520 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x68c852d0 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x71a126f8 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x71e96399 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7c198d49 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x918b965d gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xac08b06d 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 0xbf950cfc gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xdbfff599 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00d974bf svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02673f9a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0467ae44 rpc_restart_call +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 0x06dc3de6 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086364a9 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09807136 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x098a2fa5 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b3e5f58 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c5f9829 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x113a4ab6 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c0f652 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x133c38e4 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x146acafc rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x195fa155 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a0e09c7 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bd75ed0 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d1adfe5 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d651ef6 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eaedfa2 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21a25d2e __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x225db8c5 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2507158e svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2545da2b rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2608c7d3 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28091c55 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x283b26a3 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28e2e068 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x292e53ee rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f07a0eb rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f34ea8a rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3296dd5a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b8aa67 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x364ece4c svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38916161 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a94bcfa rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bf56f3e rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c076e03 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e867911 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fc36084 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4301b711 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4415f220 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x445ce90c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x465b6abc auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x487691a8 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49c34134 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b0a5030 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ff03517 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5045bdeb svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x513f998f rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52d2a4e7 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53675b77 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54c0cedd rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5616af86 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x562b3214 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x570aee6d xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x576f4d2d svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x577e809b xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59a09d0b svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cc5013a xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f15d7bd svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x608e6e93 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60f8e1e1 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6289f817 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63218d30 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x670ce1d0 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x698578d8 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69fdb4ab xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a50aafd xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb60d59 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cc85dc1 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ddbe20b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e5f4002 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f318a08 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x715b721a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72036833 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x728b1715 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x728cab6d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72a7d79c svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72afaffd svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7402c3a4 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74c1fe87 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x763484cd svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x771b0acb svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a53fdf8 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d80da44 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80222936 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81d26524 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83f68a5b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x861196f1 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8672b488 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x875e819c rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87a0753b rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x897c38fa sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a2a78b9 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c6b6470 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d320a32 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91a267d6 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9322f3e7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x950f3a98 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bf9083d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c4c3df1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d04c98a rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e50d7e3 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0cdd3a1 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0d2f44f xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa11b845a xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa42abd32 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8764395 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa937ad5d xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa94a0396 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad1ee05f rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad82bf4e xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafe8d3bc xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0a75528 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb146d6a1 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb260cbf6 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb287095c rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb40d058e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb474b004 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4ba8087 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb755d762 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8aff019 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9f92d4c svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba6a9c6d rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa1c2e4 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbba4008b rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc32cf6a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd19b24c rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd58adc3 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe3580ba svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe67844c csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf59810b cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc093170b xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc37c9113 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5fdffe3 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8302a5e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8d11a60 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc915f31b xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9192128 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca51fe23 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcec1020e svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd125fe82 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd23387fa xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2800813 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2b8b349 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda68a46f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbac0535 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbba29f7 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf3f7aa5 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe18f86d8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2e7b022 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe49f4976 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe548b8d8 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ffad3a rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe769ff51 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe99a025a rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea389718 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebe0a6c8 rpc_mkpipe_dentry +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 0xf04fa2a3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf157e829 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf26661e6 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf519ac83 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf817b3e1 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d24391 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf91cab86 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa1fc522 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb4eb353 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb5965f5 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbbc1753 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf60551 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd659ea6 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffbe3c25 xdr_read_pages +EXPORT_SYMBOL_GPL net/wimax/wimax 0x02409f75 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0762ea6e wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1cd56186 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4192e529 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x53e3b941 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x614cdffd wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x63562717 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x78721889 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb63e6b66 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc51759b4 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe1173674 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf18bfe64 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf97c23bb wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x10c2d9d8 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x21720ece cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x23c0b532 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x28eb2975 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a974982 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x50336e27 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x52317e11 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x54900b11 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6807207f cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9069e1a7 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaaa3d0bc 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 0xa530f0ce 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 0x0ed5d554 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1b5aa77a ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4b61db67 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9a1ab78f ipcomp_output +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x052efec4 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x0f4297f9 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x12140eb0 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x168eddbf aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x5a5b2764 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6f596d7c aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x97a91b2c aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xbecd02ac ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc6b82c5b pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xec7f77ee aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x01da310b soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x166156c6 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9a5d17dc soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa995fac9 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xac5c7bae soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xb4763b0a soundbus_remove_one +EXPORT_SYMBOL_GPL sound/core/snd 0x1b51c4a2 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x3481ae7d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xa4dee3ee snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xeab8ecca snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xf71313e7 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82da2e8f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x27c40b73 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2be4a8e5 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x945c1e7a snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb1c1aa67 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc35dea31 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc81164ea snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059a31a9 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f573e9b snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11b80fb8 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13361bf6 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x137eff84 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x152bc6cd snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b8f2182 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1fede5ec snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x219a641a snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21ec9c84 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2278b73c snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x236288ca snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23f23c67 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2443c4ac snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ce6532f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x358f6c46 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x373d69d2 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x385fe6be snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ad5e26e snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b8d4cb6 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b933866 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4045cdd1 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4694a805 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46d330c1 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4819aac3 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ff34ff0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ffcb46c snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5247f24e snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53200fde snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5501ccc2 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55188497 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56666eab snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5858b3e5 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59681223 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59d1099b snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59faca15 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a671e38 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fa19231 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6158fd25 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61e6e5fc snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6390bb98 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6483aa4a snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65436e3f _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67dadfc0 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68ffb3cd snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a371a33 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dcee12e snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f60de78 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7559e4da snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7719af78 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a1cb050 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ac4ea41 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b829110 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7dbf3f15 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e2131ac snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e416bee snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f4a97bd snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x804394d1 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80c2e849 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8149d8be snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8204c217 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8547719c snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87b4d0d3 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89fdbbd6 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c35d2f4 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8da5b148 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dbc60af snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9287960a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92cdcf36 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9308acae snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93cb87d7 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94ba4669 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97b21ac7 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9840c48b snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bf2eecb snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ccb6d37 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f714a4b snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ff72111 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa21a0009 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa37b69fd snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3c4eaab snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa3cb915 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacf3b17f snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaee97898 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb062e166 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb89488aa snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8b60c6b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8e6a04d snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba20f555 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba7b7c76 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb7890c7 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc686b85 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd36b290 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe6f50c4 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf8cbc60 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4035d7c snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca0bca4d snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda6fe1a6 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde586ae2 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xded11c6b snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe696bfa0 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe70b27ff snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe757fe20 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8605d58 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe91d795d snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xede066b0 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee858f57 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefe9a2ad snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0526e72 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf457ce40 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7d6c581 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf945e004 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc26ec80 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfeab4b73 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfeb738e8 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff794338 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xb9f70113 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xc664ac42 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0xa4662f76 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x6439cece max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x8b6a02f4 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xeeb5d820 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2c639457 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xc5ec8f8e twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xebe52031 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xf9a06412 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfb03ae3a twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x7c10e03a wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x344eb00f wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x39804fdb wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x4731ee7f wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x572e8b19 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x6ef2e8f2 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa175ce4d wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xac5e3968 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdf7aa35d wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x0453d7e9 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x9bd894e8 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x65823ede wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x5f15db31 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x8376441e wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x9c8559e9 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x1f5c88ca wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00a798c0 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0443a7b1 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0460744a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06b8ae05 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a88f2d1 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ae6831e snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0aef5d72 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c02cd7e snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cf20cff snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10512a17 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13f0692f snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16c6f61f snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19d7d49d snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aeff888 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f673c40 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21104f81 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x263c421d snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27784d88 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27aebfb1 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x287cf50a snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x292bf508 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c1e05bf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e85f64a snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3190289e snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31c8a9cc snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3334e881 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bfd9a33 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d36bcd6 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3dc57699 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x418c75b9 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x466a23b9 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x478c7ddd snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48123048 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4aa9dfef snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bab274a snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bc900d4 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d968011 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e3f66d9 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x506718f8 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58955eca snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d6bcc68 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5df70de1 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eeb479b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x645435d7 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x645ac2e5 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65580d24 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65c5e1b1 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x670be473 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68f6c36c snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a93cf6c snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c939e94 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e72d665 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70101239 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x760d94e5 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76594e67 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76751ba2 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x771ba808 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ab9c28e snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb2d019 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ea86d07 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80d4cfd5 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81f0a60d snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x849de300 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a25b90a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8acd727a snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0d4eea snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92034e18 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94bd10ee snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9675c08a snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x968a4f41 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9890e5f1 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e12791b snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e161000 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e3f1cf8 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa06536de snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1046809 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa17a7977 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa19c4555 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa25c8836 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa26b2eea snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa30fa258 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa373b0b6 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5f4fdef snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ed8dd2 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac9b029e snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacfd8e5e snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb247e067 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb320e3e9 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5dcbc44 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6f3990d snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb910bfd1 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb94eb8fc snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf343129 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc178be54 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1ad689d snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b26168 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc58f99c2 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90b39a5 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc917099f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccbcde03 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd4b34c8 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcddb7bf5 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xced0d83a snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0250668 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd191d3cf snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1bcce5c snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd22dd30e snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2db0cdd snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd55cf959 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8d82f82 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0224ea snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe11d6f06 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2452b87 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6919c1c dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe69da4b7 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe91b9f9f dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed0a8672 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf15ec654 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf68754d2 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf875782b snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9fe819e snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb32076d snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd3309ac snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd6adee8 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe681f56 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x001423de debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x007a1508 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x00924882 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00dea1dc ref_module +EXPORT_SYMBOL_GPL vmlinux 0x00e9a805 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f62668 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012f8e15 unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x017963da of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01988801 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x01a40bbb device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01ba8d05 pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x01c909c1 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x01f95b55 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x0213d53f bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022a03ff dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x022fce42 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x02f39e63 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x03113d5a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x03130cdd irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x031c3d47 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x033bdce1 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034c7aab __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03803ce9 put_device +EXPORT_SYMBOL_GPL vmlinux 0x038cbf57 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x0390c50d platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x039c3498 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x03cdcbce pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f22d82 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x04191982 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d3d8f7 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x04e13a03 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x04fb9af8 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x0523b66e regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x052f4817 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05ce5186 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x05d2885b dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x061c0b2a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0627177d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065b37da rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0670b258 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x06b4f251 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x06ff4985 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07782457 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x078fd37d sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x07adeeef kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bda11c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x07d5e6a8 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x07ebeba6 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x08085880 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x08125f43 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x089ce61f ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x08cefc91 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x08d8c91d ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x08da530a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x0914094c stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0934c941 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x095f7dbd ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x096db0d6 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x0985b8b0 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x099cd510 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x09aaba5e cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x09bcd87f ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x0a17bdae dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x0a2fcf5e pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a56cee4 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a831d12 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x0ae9269f task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0af6f5bb ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2687af get_device +EXPORT_SYMBOL_GPL vmlinux 0x0b2edc2a sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x0b4b5cfa sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5f3ff6 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x0b6a4ef2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x0bb766cc inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0bd1398a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bea9db3 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0bf30fef ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x0bf55597 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x0bf736c6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2a3abc sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x0c2b15fb flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x0c2b38f7 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c551a67 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce7006b pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x0ceaff4f pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d3c3bdc sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4245c2 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0d4e95b8 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0dc6ba72 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df77b99 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e256914 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e366e5e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0e3ee5ea pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0e4477a4 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x0e6d9c74 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x0e951f40 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e9e878e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0eb5aab6 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x0ec89efa debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0f289503 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x0f4f4a48 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f5923ba __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0f6f04e2 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10b5064e usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x10bdd79e sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f8ff23 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1130addb register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x1166a7d4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x11a68357 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x11cadfab kick_process +EXPORT_SYMBOL_GPL vmlinux 0x11d16d2b sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x12195356 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a72131 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x12b30d2d pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x12c0cbae bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12c1b377 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x12c42396 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x12d4d28c page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x12f5e71a hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1316aff2 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1318d9bd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x13363271 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x134dfe82 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x13505c39 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x135426b8 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x135a09c1 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1360afe3 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13721613 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x13a9b07b ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x13acd776 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13c387af handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x13e250de crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ec6c05 dma_mmap_coherent +EXPORT_SYMBOL_GPL vmlinux 0x13edb8b6 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x1473c303 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x14aefad5 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x14d70a6e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x14d97720 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x14f68917 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x151f1b11 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x152d6b4c pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x1553361a __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x15566fd3 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x155fc95f dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15897c2c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15b200e9 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160b028a scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x1648927f wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x164b7640 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x16c7154f srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x16cc5678 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x171d6741 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x174ccf1a tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x179f9f83 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x17ce9cd0 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x17d1b539 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x17e4409f xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x181afdf3 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x181df5ff blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x18246389 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x18424885 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186f8870 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188388d6 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x188617f8 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x1886eef3 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x19211a6f debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x195caa6a debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19f76e1b spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a2657b5 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a563fa3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1abb2252 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1b50541d wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b703ffa sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1b7cfaff ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1b91f234 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba89186 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bc6289f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1bce13d7 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x1bd92781 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1c086875 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1c2f1adb tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x1c43b85c tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5f070c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x1c770029 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d53b7d0 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5c05cf driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1d6503c7 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1d76fc76 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x1d9496fc of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x1de33aae ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dfc8e7a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x1e183a18 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1e20b8b0 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e41176f devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1e5ac445 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8f3bb3 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1e90a004 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x1e946ad5 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1eaec24d ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed9e7b8 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x1edc7a55 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1f038af1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1f148d3e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f1b0680 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x1f43cf71 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1f4fe2ce led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x1f790fab regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x1f81f481 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x1f83a523 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcb0c58 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdfa72b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x202529ee pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x20268494 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2027d0e2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x204638d5 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x205c74ee spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x20b89b01 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x20bb8d09 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20d2fbd7 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x21bc60c6 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x220dee43 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x22100126 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x221a51e7 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x2233f93e md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x224f9fa8 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x22569232 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x22650f3a of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2294417d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b50b35 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x22b5b9aa device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x22bcb9a7 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x22edb83f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x22f42933 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23689200 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x23708699 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23b6afe0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x23bad72f con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x23c38a74 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x23caf2b1 device_create +EXPORT_SYMBOL_GPL vmlinux 0x23d25f8e wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x242c8aeb perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x243981e0 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x243998a9 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x2451bcd7 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x246974f8 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x24773153 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x248121b4 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x24a37277 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24d6276f bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24e694b7 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x24ff94a0 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2533b201 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x25366db9 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x253773e8 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2574ea6a usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x25771dda __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x25c1c0bb nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x25c2b6d3 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x262b93d3 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b1e56d tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e0a9d8 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x2727baa0 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a422a1 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x27c1363a __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e64ba8 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x27ed29dd find_module +EXPORT_SYMBOL_GPL vmlinux 0x27f13b57 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x282f4cca ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x2862ddb2 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x2871094d sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x288215b6 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x2895aa76 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x2898af04 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28d967be wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29064a01 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x290cc8b2 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x2918fce4 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x291aec33 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x2954fdfa pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x297ee16f fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2980826d blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x29c3ae43 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a432c8c pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2ae28772 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x2aea2e9c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2afe42f8 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x2b046051 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b0beec1 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2b25a2a1 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x2b3dd10e elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7c7d35 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x2b8038c0 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2b889506 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x2b8aeb45 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x2ba37992 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x2bb0cc73 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x2bc1d3dc i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2bc91d37 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x2bd0fef8 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x2bd1a5cc init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2bfab267 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2bd892 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb3692f spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d0a2db6 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d521876 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d86fd80 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x2d988a94 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc95693 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x2dcfa975 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x2dd17e86 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2dd2ed8b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2e0ff0b5 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2e1186f9 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e27f7d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3a1470 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e4d8477 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e58f98e dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x2e703066 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2e84ee6d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x2eaabd80 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed414ea bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f2aa116 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x2f2ef524 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f435c87 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2fc51779 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x300469b6 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x3096fbcc ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30d9f1d0 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x30eb57e0 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310d609f spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312f59b1 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x31a69955 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x31bd98e2 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31e360a9 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x324124c7 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3260f135 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3262e672 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x32888ce4 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d95450 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x32e085e3 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33105642 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x332798fd kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x33282c48 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x338e209a subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x33a13c12 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x33d53fa2 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x33ff899a adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x340ba39f debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x343989e6 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34f22995 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x350a0cd5 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x356cf0cd wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x358a16c6 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x35a5f033 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x35a9cb37 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x35c4bcc8 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x35cc4fbb dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x35e789d1 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x36066eb8 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3629fa47 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x362bff3b unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a4936 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x369f8dfc pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x36f74691 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x370bfd87 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x371d4f0e usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x37358437 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x37691cb5 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x37735adf usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x37e84f2e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x3892d0e1 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x389ce391 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x389f818b bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x38a61ef1 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38ddb937 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x38f6193b gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x39013d72 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x3937a258 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x39617dd1 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x39619af3 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39afd417 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x39b40ad3 device_move +EXPORT_SYMBOL_GPL vmlinux 0x39be2b23 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39fffa6f power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3a1dbd34 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a51b2ec fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3aeb182d wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3af5903b debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3b0c3512 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x3b20738f sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x3b8e1cc9 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x3bb47803 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3bb9ad0a wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3bc89518 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3bd8a20e s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3bdb6de3 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3bdea30f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x3be80a1e __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c0d8243 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3c55d426 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3c69a813 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca3f676 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3caececd usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x3cc8420f xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3cffedf5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x3d138547 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3d23d70d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3d2bc602 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x3d367c4a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d578365 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x3d5de94f sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x3d8a76d2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x3db3f236 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3dc2cc2a alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd2d501 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e12f9b8 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x3e559663 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e66802e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea33205 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x3ea35b5b usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3eb2636d usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x3ebd9347 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f219b74 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3f2357c5 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3f568983 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f6628ca usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3f71880c md_run +EXPORT_SYMBOL_GPL vmlinux 0x3fc7a4e1 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x401e0011 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x4029d190 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x404e9ee0 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x4095961b platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ecc806 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x40f94f00 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x411f10f2 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x415388ec skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x419e39c9 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x423b322b tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4247b2b4 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x424b83fe ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x424e955d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x425c7878 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x426777b2 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42d717b9 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x42e586a2 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x435c6950 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x435d3a73 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x437f507b usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x43939bd1 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a9f98f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x43bc3e4d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x43de54ce ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fdd0de gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x4410d094 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a6249e platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44fe7621 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x45062545 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x4521280e udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4522bdfe sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x4526b534 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458518d1 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x459df5df usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x462abd49 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4645f31e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x464bba9d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x465ff218 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4685c73d platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x46e33ce5 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x47181b17 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x471b07c5 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474213d0 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x4749f3fe spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x47accc38 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47dc9ffd of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x47dd1712 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x47dd7934 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x481c07dd usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x483cdfff fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x484df3b0 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x487bd522 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c4589f usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x48c654f8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x494f5152 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x4980d4e8 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498a6e00 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49970b91 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x49ee245e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a7cf2c2 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4a9122fe dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4b15f786 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x4b174959 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4591a4 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b71acdf devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x4b75c294 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x4b9b7618 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x4bb01a43 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bdc652e invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x4be5db2e __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4bf4bb33 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4c1acfa0 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8c2a8d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4ca6f6ba ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4cb072fb shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4cb10706 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4cbd5f35 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4cde177f scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d1ac3d7 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d34b33d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4d3e06ff da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4d5d4e32 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x4d89a451 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x4db4ea0c pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4db8e850 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x4dd4c35d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4dda1b22 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e166f74 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e321f99 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x4e32aee7 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x4e46ec3f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x4e7da141 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4e8d3233 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4ebf144b swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x4ee4fba6 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f3c81b0 user_match +EXPORT_SYMBOL_GPL vmlinux 0x4f5cfea4 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x4f5f59ea event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x4f6b5b2f vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x4f6cbb06 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4f917fb8 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4fc69a7b class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x50313563 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506973f8 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x50785d2f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50aa50a3 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cb909d md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5102c158 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x510f339a hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x511778ea inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x514189b1 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x517e130a srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51af7f83 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c17470 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5208fcb5 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52115242 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5250ca69 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5274603c ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x529231f3 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x52c246ca __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x53016338 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5353c02b find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5385c75f regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x5413203f usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5432d5db pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54616cf6 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5492bf0b disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549e2415 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x54c834e4 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x54cb45d8 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x54e13465 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x5526a505 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x553933f9 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x55779f88 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559bd2ef spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x55ca5583 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x55db617e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x55e74041 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x5607834c ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x56159d48 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5649771a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x5649ea86 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565ba443 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x566667fe ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x568c4fd3 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x56b5f9a3 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bf09d4 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57466c2f crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x5776ee48 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5783a60e ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x5784b681 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aaf9dd sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x57be64df usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x582d1c0d tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58ab0153 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x58ae678a usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x58b8b4f4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x58e8e14e sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5919b837 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x591dec31 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59653e9c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x5992a4b9 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x59935bbc dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x59bbdb6f perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x59ccb97a cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x59d2c150 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a072bdd bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5a25626b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a887d7b da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x5a9811bf pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x5aba55eb wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5acfece8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5b0cc00c gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b338850 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bf337b5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c120978 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5c13861c put_pid +EXPORT_SYMBOL_GPL vmlinux 0x5c647c27 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x5c6c7999 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x5c6cd73c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x5cef4a98 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x5d020125 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x5d06f1ad inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5d0c1c56 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d8d3f3b ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x5dc0e70f perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de59f8e pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x5dfb6639 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e285b3d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e75c4f8 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x5eca6c39 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x5efc4fde ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5f0de7d9 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f32262c crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x5f3e6edc __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f542b20 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x5f93cc48 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5fa3fd18 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x5fa576d9 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x5fb95150 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x60188b51 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x60266cd9 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606770e1 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6072d8d3 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x609bf0a6 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x6111033d ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x61133715 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x614eddcf max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x6175c24f debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x6175ef0b spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x618441c6 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x6191b2da blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x61a8df77 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61d83ccf spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x61ff18e4 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6236228d device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x625c1342 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x62676fd1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6299e05a rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x629afab5 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x62b1d02c tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632b5651 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x633d6c80 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6348ad4e stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6350112c dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x6365a7f2 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x63689b3d of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6375574e fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x63923bc2 pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0x63a24436 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x63b3c111 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x63d10b32 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6443524f ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x64772aaa fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x647d459a inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x64941b97 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x64b7f7e1 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x64cfa737 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x64d14b2f stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x64e10eda tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x64e3dd94 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x64e62e8a transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6546ee51 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x6582ad20 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x65c20034 crypto_lookup_template +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 0x662c476f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x663b07db ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x6645e55f rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x665ec5ab tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x66639fbb vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a73516 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b207c7 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ef6267 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x67006c46 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x67227f9d debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67b862f6 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x67dbfa70 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x67e5e448 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x684465c2 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x689516ad usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x69055e36 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69821ced posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a4d84b rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e38c12 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f554ee __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6229eb device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6ae370a4 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b336cb5 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x6b680b5d blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x6b8f73d4 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6beca149 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x6c05bd3c dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6c0c3d7e pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6c11f73f screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x6c47c257 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cbea013 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6cd0e4e6 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6ce13f6b set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x6cf71779 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d380de4 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6d61793b hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6d93c363 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6da69ace crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x6db9a0fd adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6dcd8024 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6dde9e70 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6e77b441 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ec4828a crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6f0a38e3 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x6f293794 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f2a82fe elv_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2fe41b ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6f3fa123 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6f65db1d sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6fbc719c pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6fe545b3 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x70746882 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x707e4473 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708932fd ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70a0d401 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d5334a device_rename +EXPORT_SYMBOL_GPL vmlinux 0x70ef0b6c key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x70f2ae1a device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x713478f4 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x713ec8a3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x7140cd2a wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71a479cb rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x722e4879 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x723068b8 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7247b7a4 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x725a2edd dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72797194 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72cd3f25 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x72dec264 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x72e2b892 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x72eae5e8 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x73127502 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x732ace01 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x732e9483 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x73435be6 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x73480ecd tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x73564277 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x73701177 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f397e6 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x73f6523f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x73f80715 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x740196bc cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x7415a9db fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744be8f5 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x745006a0 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x74737ed0 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x748401c4 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74b44051 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ec15fa sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x74fe5974 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75236a17 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7548452a regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x75576478 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x758a5a1d disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x75b21be2 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7626b273 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7631846b dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x76c8502b class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x76caf822 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712940b ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x77747da3 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x77951d90 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x779b8feb stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x77a207e6 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x77efa62f pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x77f622bf stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x77fbc76d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x78b821c9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x78d3a909 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x78e7b045 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x79031f57 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7906969a ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x791829df regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x793e1289 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797406c1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7993a09a usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x799e798f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x79a817da tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x79adbf37 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x79b4a262 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79de349d ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x79f47e3e spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x7a1db385 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a5a2533 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x7a7273c8 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x7a74a8cf usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7a87d1e2 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa621b4 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7ae4edbb ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x7aea12aa usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7b012190 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7ba41d4a rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x7be4ed95 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7bea0cae disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7c11c3a9 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7ca85d0c crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cce7928 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cee7b48 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7d37abff usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7d46af09 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x7d5280a5 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d63534b ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7d7b4f27 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d7c7906 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dacc0ca rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dcb2141 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e433907 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x7e5cac07 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7708c6 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f387ebb uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x7f65f6d2 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f9ed93b ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7fb3dfc3 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7fc3c785 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x7fe870ba scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x806648b8 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x807da10a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x808ac411 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80c0976d sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x80c2979a bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81062146 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x81265e3a sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x8139efbc regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8146cccd skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81623dba rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x818b8ec5 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x81bee22c eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x81cbd2d0 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x81cf14b4 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x81dc2d17 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x81dcfc65 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x820d44ec rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x82220fbc simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x822a9c8c sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x8236d791 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x8257f1bb ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x826db140 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82a48f9e pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x82a7d8be usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x831f53db ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x832f238c gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x83572a50 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83bf1ea5 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83d2d55f led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x83efd7c7 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x843dc4b0 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x844365d2 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x847bfecb sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x84a2cf7e raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x84ae54f2 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x84e30717 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x84ecb7cb timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x84fa3c01 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x854da90c xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8589777a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x858f5a82 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x85a298ef debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85edea04 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x861ee07c setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x863e7fc9 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x864bc4db relay_open +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86d6b046 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86f5dc69 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8743bccb regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8746da0f spi_async +EXPORT_SYMBOL_GPL vmlinux 0x8747141e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x883df759 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x885d073b skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x88bc432d wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x88df2625 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x88e06d60 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8941781f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x894da4c5 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x898fa2b1 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x899beb92 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x89c3c644 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a16b797 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a4aa11d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a5f6320 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x8a79e47c md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x8a97ac17 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8ab08e50 device_add +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac4e885 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8af7dd61 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x8b3805ff pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x8b621868 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8bb875fc pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x8bde5834 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x8c021ae5 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8ca7dd09 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8d0e6bbf pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8d14f8ca pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x8d153482 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x8d544cbb xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x8d58b99e blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8e0dca03 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x8e75a824 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8eab4a4c pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x8ebff98c cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x8eeefc02 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f037d09 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f38b2ad ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f64b123 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x9036ec57 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a71674 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x90e1cf0a cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x91083435 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x91306666 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x91328606 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x91521129 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x918470ca netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91910907 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9199aae9 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x9203583b crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x9206dcfb crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x9230d6ff ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x92841534 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x92accb96 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92fb5824 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x930aaa6c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x939bd920 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93a66ec4 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x93be8ce3 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93f00373 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x93f31d59 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x94140914 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x944c774a transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x94a1a061 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a6ca42 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x94a8c92e input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x94debfd3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f42e77 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bcb443 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x95c770f4 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x95de82ae disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x960ee773 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x968f77e2 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x9698a057 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x969def09 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f8bd8e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x9783a815 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x97a1193c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97bd86f2 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x97d32483 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x97ea90af simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x97fef108 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983608e4 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98504293 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x98625098 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x987d1e41 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x987db7b2 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x989473b1 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x98a8e7fd regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98fbaf25 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x990f07a3 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9955ddc2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99608030 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x9969943b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x997cb5e7 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9983a8fb rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x99b2039d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x99cbe88d crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x99f301aa wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a6b7ec7 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x9a71368f inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab59ef5 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x9abd2631 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae89da0 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeefcc2 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x9afbc23e tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x9afebecc dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x9b3738b2 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba75a7d rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9bdd1e3c ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x9c43bcdf ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9c56d22e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9c58ed47 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x9c5f7d08 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9c688b61 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9caa8d52 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x9cadc121 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x9cb3665e inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x9cd14fb3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x9d7db9a1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d9e030f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9da862c4 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x9dced47a usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ddbaa17 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e11ca36 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x9e282870 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9e52c280 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x9e5a6fff fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x9e83f717 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x9ea7f9a2 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eaecbf9 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9eb19c73 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ebd2bbe crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x9f032a77 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f1688e2 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f673bbf mmput +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe6de65 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x9fe8dced tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ffad3c8 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa017d17f pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa01eaa12 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xa02354bb swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa02482b2 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xa027fffd sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa02fa235 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xa04f066c dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xa0500648 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa06ab483 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xa0b0455f max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xa0ef1ccf platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xa0efb5b9 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xa1177d63 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xa13a81c2 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa14bb294 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa1608c8b relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xa19ec76f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa1b2f324 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bfcbda devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xa1fa7691 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xa2184940 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa22b90ad fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa25413e0 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xa292fec7 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa2a104b3 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xa2d5d204 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xa316fdf9 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa333df02 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa3438e68 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xa347a512 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3948f9b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa39d9220 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xa39e1a3b sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3afb480 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa4482db6 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xa44e62b5 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa46b0633 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xa474858e ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa474993c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4807397 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xa4a872a3 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa51bed9b kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xa598b56e __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa5a5b22e da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60ba2be debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa622b6e9 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa6235f11 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64237d2 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa65dfe26 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa6695636 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xa67612bb debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xa68c375d usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6d03676 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa70966dd skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa73cd0e9 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xa741bc91 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xa761fb15 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa76fee49 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xa785354c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xa7be79b3 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7fe7b95 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa82e92dc crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa82f4d5b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xa86195ab rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xa8932f34 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa89c3aa5 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa8ac97df pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa94da6bf md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa998d034 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2ea9db __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xaa375261 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa94538e input_class +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab234ee led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaada03b8 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xaaefc1cc crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xab5302a9 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7140f8 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab78139a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xab8f5266 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xab937214 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xabf78a77 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xabfd9b7a bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xac514144 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xac5be3d8 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xac7216f1 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xacc0f55f unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xacc5478a pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd57d4a tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad70266f dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xad81eba2 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadc168f5 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xade3833e bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae334127 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xae38b2d8 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xae424229 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xae47b569 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xae5d3d42 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xaeb70c02 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xaebecf87 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xaefe363e pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xaf13fe42 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xaf266267 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaf6b8767 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xaf92fb73 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xafba7ee2 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xafbc45e6 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xafbc83e7 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xafd2c203 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xafd87cef device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb01ac851 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xb0476d94 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb06a82ec led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0970511 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xb099c2cd i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb0a0df87 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bebcf0 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xb0e55ce5 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xb0e7c39d clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xb0fcd883 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb12d16d9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1492aa1 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb15299ca rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xb171b1e7 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1857bd1 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xb196a2be usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c30ac7 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb2b54dde srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xb2bfefc6 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xb2dc4a15 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f1838f blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb3546a49 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb394edbf pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb45794ba i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb460fd5c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb4879232 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xb488f4cf securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb5000d06 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xb5045596 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb51f98a9 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5307903 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5366639 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb56ed31e bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xb58b96fd ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5e0d49c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb62bd926 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xb64ea395 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xb66d6f45 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb673602a ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b4c631 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xb6d23d02 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb71da403 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb72af860 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7599d2d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xb75e63a3 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xb762a925 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xb7787565 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb7e62e62 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb7e965dd driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb84d3887 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb87e8944 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb8dddec0 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xb9030072 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb949f6a0 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xb950e926 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xb95ead45 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xb9806f9c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb98e722d tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xb99ea90b nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bb828d bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9dee136 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba3978aa uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xba6092db pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xba6d55cd inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xba7c5604 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xba91eccf rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbab616c2 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xbab7eae6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb090714 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f8264 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xbb3a7275 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbb3bbf7b wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbb591f1f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xbb6f551e lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb93c503 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbbbe8e9e rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xbbccca8d rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc157577 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc972582 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xbcc65c27 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xbcd1fd3a crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xbcd3bcf0 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xbd10fc5e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd742ce2 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xbd997f98 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd82f6a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe305d96 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbe30a3d7 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xbe35dfc8 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbe52c092 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xbe543af7 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbe625048 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xbed4ffa6 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf53a521 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbf741963 css_id +EXPORT_SYMBOL_GPL vmlinux 0xbf744f8c __css_put +EXPORT_SYMBOL_GPL vmlinux 0xbf9ef89f perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xbfa9fad0 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbfd627ab bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc007bdfe free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc008939c crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc00fbb10 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xc018513a pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc04e7794 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xc0548eae __css_tryget +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 0xc0b0984e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0fb6a71 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc0fd46ff led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc1059a07 check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc13c7655 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18f30ac bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xc1c77a57 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xc1f401b3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xc2134dcb __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23f16f4 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xc267237f noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xc272a52b exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc27e2d54 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc2b00b9c usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc2eec0ef adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc30f4c51 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xc324a0f2 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xc344569c pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc36c1cee ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc36e6270 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc37117ef sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37fe610 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc38556c0 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3ca38dc spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc3d1831a sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xc40aa44f sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc419bc37 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4456ccf fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4ae20d1 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xc4f81a7b crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc5494e0e transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5530cec fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xc5a79fab unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc5ad0119 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xc5bd13bf file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xc5c1acd3 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc5cafaab tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6828b22 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xc6a4aa13 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xc6aef1b7 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xc6f1e63f mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc70f2e88 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73dfc57 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7810d03 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c5e7f5 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cf521b blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xc7dfbdd3 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc80622a2 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xc8084cd4 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc82d6e4d ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc83543ab ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xc842ddd0 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xc84514eb kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xc8467314 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xc8a06b68 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d82b8d fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc8e89f1e __put_net +EXPORT_SYMBOL_GPL vmlinux 0xc92795ff pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc92e66a7 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc958c78c module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc9934987 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc9ca415f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca13ebcb ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xca29368f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xca378ed7 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xca4421d3 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xca58ee44 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xca5b4cfa rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xca64292c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabab083 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac757ff ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb6de4e0 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcba80190 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xcbbe45eb dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbc70c91 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcbdc1d80 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1a5333 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc23e8ab crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xcc479a0a user_update +EXPORT_SYMBOL_GPL vmlinux 0xcc4b91fe crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xccc17e3a crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xccc83849 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccf4c860 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcd70ba3c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda2d8d9 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc7708a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcb34b9 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xcdfba62c subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce2ad093 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce4db2da tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6ce1fd inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xce78ed47 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xce8c5fd1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcebbb255 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xcecff685 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xceddfa74 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xceecbed0 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xcefc12c3 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcf21a715 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xcf551c86 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xcf68f0e1 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf761ac8 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xcf87df14 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcf91a5c8 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfcfde34 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xcff2faba crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xd00652f3 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd09d3d85 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd09dddb8 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd0b3ecf9 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0dde3ba map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd14368c2 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd150f96a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd15dfae8 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd15eaf43 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd195a143 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1bcf982 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xd20787b6 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd211f8f9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22c2f35 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd27194a5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd277fe12 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd2997e40 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2d6a9cd power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xd2e82316 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd32b5110 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd337e42e ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd3498db6 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd38e854c wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd3a02f43 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4142527 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xd414758f rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd42bea6e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4fee565 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd502d010 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xd5213a38 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd52e7e85 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd58b910d register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd6087936 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67dc820 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xd699460b sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd6b89a00 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e42437 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd7130a1c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd76345d6 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76de942 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81d6b85 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8212792 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xd835c173 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xd83d9e67 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd859f49e bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8837128 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xd898902f cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xd91e6462 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd921c8ea regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd934d266 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd94aba9a usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd9a1fa08 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xd9a2881d of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xd9af4879 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xd9bee119 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xd9c462ce raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fba47c tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda326b66 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4c0859 user_read +EXPORT_SYMBOL_GPL vmlinux 0xda504703 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xda963070 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xdac5b411 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xdae46e8e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb14bca3 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xdb15b16a inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xdb17be65 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xdb733549 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbb59a7f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbd0a88a ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xdbd65e8b kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc094777 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4f607b aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xdc6a834d tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc91cd72 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcb07b7e dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xdcb1c4c3 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xdce05b18 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdcf502e8 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xdd2c51bc sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4d2b99 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xdd8b1fdd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd8bbcc2 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xdda1c97f __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xddad5c73 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xddc76a0f sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xddcefbee power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde640066 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xde85ad90 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xde897301 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xde90c128 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xde9f7f4d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xded3d0cb devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf27877b register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdf33bbf7 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdf5bcaca ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xdf71d004 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xdf87f296 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xdfe7665e inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xdff08f18 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xe0045a8e swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe008114c rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0318279 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe057516f crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xe0633458 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe08832ae tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0908413 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xe09f7c11 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe0cc7ac5 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe0cd660c regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0f22fd3 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xe1329791 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe13bcff8 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe16e3377 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xe181bf50 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xe1a57570 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xe1ad9497 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe1b12847 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe1ba9f6f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xe1da7c3f i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe2136287 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xe2583e99 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xe26966ed da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe2816a9a blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xe28cc6f0 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe2ab15cb usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe2ca4a27 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xe2db45a1 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2ff9183 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30fac88 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0xe3105286 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe34cf93d regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3845fc0 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39b0700 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xe3b2afb6 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xe3bb6929 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xe3d0d9ea pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xe3de1698 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xe3f08f76 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe42da0bf tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe46c3de0 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xe49620d3 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xe4be887d ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4d769ee shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe4e89ca1 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xe4ed4027 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe5147202 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xe5644e3c single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe56e0ad5 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xe583ab63 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5f640d3 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe612857c blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 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 0xe6a27b3d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6ba1e94 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe6c5a7ff pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6eb7715 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe6f8d86a mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe719e5ed blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe747fbad pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7fee47b usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81a85bd __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe89ab3f9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xe8b38cc6 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe8c99614 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xe9026ba9 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe92a9203 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9534d1e regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9a024c7 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xe9aeb127 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d29990 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe9e85331 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe9f24ac2 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xea00bd69 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xea03e090 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xea048218 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xea04ea3e pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea26045e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5c4fcf key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xea7de434 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xea8e013b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xead4b143 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xead614e6 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaf18a18 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xeb33ff72 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xeb4ddb17 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xeb5b347f scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebd261fe crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xebd27f76 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xebde6b19 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec6f2486 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xec7afc40 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xeca5f33c cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xecb99606 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xecc3c8cb css_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecea75d0 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xed29f4c9 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xed47b16b agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xed6416d1 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xed67eb1e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xed8c5f7e fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xee03ece7 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xee12bf1a tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xee181347 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xee33d025 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xee52432b rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xee5abc07 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xee81db8e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xee8b2d9a cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xeed14ea0 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef7a8788 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xef889ff5 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8e04d4 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xefa61abe xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xefa70ebc usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xf01cc4e3 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf0395093 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xf03c06f6 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf0586917 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0xf0602b43 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf0a2602c edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf1235e05 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf19cc912 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c4a3fa devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf2153dd7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xf228c432 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf249cb80 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf2b69b34 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xf2bcc64b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xf2f5a80c tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xf2fc88a6 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b2588 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf36333b0 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xf36b3d97 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf36e58ca device_register +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e285fd inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf3e6c213 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf3ef5c55 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xf420e0c9 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xf43d9ade register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf44625c3 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xf4524666 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf4593a08 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a22f4b pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf4d2fa4a wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4d64749 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf4d700bb cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf4e30f13 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50e2457 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf51a4692 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf53ecd33 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c794ef crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xf5cb7bb5 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf5d4ad4d of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf5f4b371 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf6025ef6 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf6220516 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf624b30c crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf65818b9 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf65c0ffe debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xf6bf0431 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xf6d4cd10 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ea9901 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xf6eeb07d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf7257c06 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xf7996e96 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf7c618cc ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf813e006 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf830ede8 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf87512b9 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf877429c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8886e7d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf889bad3 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xf8ceaee6 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xf8d009ef stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf8e8e93a pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf902c058 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf9091ce7 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xf909cdcf rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf94035e3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xf949828d ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf974cf71 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b5886a skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cbd41b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xf9ce1eb5 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf9fec64a cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2f939d rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xfa7f00f5 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xfa9dd504 timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xfaa69431 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfac1996c class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xfac3f1e5 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb550d35 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xfb5a85a9 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb9ebbaa bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0xfbbc4da6 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbd71ad1 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xfbf3ea22 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc18fb2e timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xfc90bccf class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfc92bd1e blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd1ed990 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xfd255686 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfd376552 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xfd56143f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xfd590497 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xfd6abd3d page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfde1d9bf ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xfded08ba tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xfe0123c4 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xfe757a8e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xfe81a1fa tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea24c01 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xfeaa0d4b __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0xfec765bb sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfec7c779 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeea1ffd transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xfeee4581 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6ed0ad usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xff7eb3f7 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xff9fa215 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc-smp.modules @@ -0,0 +1,3227 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250 +8250_dw +8250_pci +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +ambassador +amc6821 +amd5536udc +amd8111e +ams +ams369fg06 +analog +ansi_cprng +ans-lcd +anubis +aoe +apds9802als +apds990x +apm_emu +apm-emulation +apm_power +apm-power +appledisplay +appletalk +appletouch +applicom +ar7part +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +ata_generic +ata_piix +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmac +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpia2 +cpqarray +cpufreq_stats +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dmfe +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +donauboe +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3155v4l +dtl1_cs +dummy +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +edac_core +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f75375s +f81232 +fakephp +farsync +fat +faulty +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hifn_795x +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +htc-pasic3 +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hydra +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jsm +kafs +kalmia +kaweth +kbic +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac53c94 +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mace +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mesh +metronomefb +metro-usb +mfd +mga +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +nicstar +nilfs2 +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pmu_battery +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +soundcore +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +swim3 +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +therm_windtunnel +thmc50 +ths7303 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-usb +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +uio_pdrv_genirq +uio_sercos3 +uli526x +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uninorth-agp +unix_diag +upd64031a +upd64083 +uPD98402 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +windfarm_core +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_emac +xilinx_emaclite +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp.modules +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp.modules @@ -0,0 +1,3233 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250 +8250_dw +8250_pci +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amc6821 +amd5536udc +amd8111e +amd8111_edac +amd8131_edac +amd-rng +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar7part +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +ata_generic +ata_piix +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bsr +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpc925_edac +cpia2 +cpufreq_spudemand +cpufreq_stats +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dmfe +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt3155v4l +dtl1_cs +dummy +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-it913x +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +edac_core +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f75375s +f81232 +fakephp +farsync +fat +faulty +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +htc-pasic3 +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pasemi +i2c-pca-platform +i2c-piix4 +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-xiic +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmpex +ib_mthca +ibmveth +ibmvfc +ibmvscsic +ibmvstgt +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jsm +kafs +kalmia +kaweth +kbic +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +metronomefb +metro-usb +mfd +mga +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mmc_spi +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nfc +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +nicstar +nilfs2 +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvidiafb +nvme +nx-crypto +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pasemi_edac +pasemi_nand +pasemi-rng +pata_ali +pata_amd +pata_arasan_cf +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pc300too +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps3disk +ps3flash +ps3_gelic +ps3-lpm +ps3rom +ps3stor_lib +ps3vram +pseries_energy +pseries-rng +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-snapstream-firefly +rc-streamzap +rc-tbs-nec +rc-technisat-usb2 +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpadlpar_io +rpaphp +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbs-battery +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq_codel +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_tbf +sch_teql +scsi_debug +scsi_dh +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_tgt +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd_ps3 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +soundcore +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +spufs +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +therm_pm72 +thmc50 +ths7303 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-usb +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +uio_pdrv_genirq +uio_sercos3 +uli526x +umc +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uninorth-agp +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +virtio +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +windfarm_ad7417_sensor +windfarm_core +windfarm_cpufreq_clamp +windfarm_fcu_controls +windfarm_lm75_sensor +windfarm_lm87_sensor +windfarm_max6690_sensor +windfarm_pid +windfarm_pm112 +windfarm_pm121 +windfarm_pm72 +windfarm_pm81 +windfarm_pm91 +windfarm_rm31 +windfarm_smu_controls +windfarm_smu_sat +windfarm_smu_sensors +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +znet +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp +++ linux-3.5.0/debian.master/abi/3.5.0-36.57/powerpc/powerpc64-smp @@ -0,0 +1,13007 @@ +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 0xa7a5d728 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x4f53d750 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x02def668 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x1950d08b pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x241ff9d8 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x25aab1f5 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x45875b7b pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x6bb48d28 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x7e498eda pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x99b03c42 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xade3e6ec pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb50644e7 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc25ea818 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xcecff416 pi_disconnect +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x19e2bd3d ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x340eef92 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x654e864f ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x98a5a8da ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd8706a75 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/edac/edac_core 0xfaa9ccf6 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x10108be4 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4935390f fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x58780409 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5c39138d fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6d333f12 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x74d47da1 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x76e38858 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b5a8308 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x854719aa fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a21f80e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94379e82 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94830f96 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x98c06391 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9bd2366f fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa00f1cb9 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa413f2c6 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa7c45eed fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb33b8486 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf29b7c8 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc54ceb71 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdb25ad15 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe629141b fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9c6178b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf0e53e3d fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf21ade01 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfa504a48 fw_send_response +EXPORT_SYMBOL drivers/gpu/drm/drm 0x003c7ef1 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0085a4a4 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02aa2644 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0423a92b drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0489a49e drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04af1a05 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0701b412 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08412968 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09903806 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5c51b5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ba666cd drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0de31c50 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f64d19b drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1034e8a4 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1113528d drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13ad694f drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x148bb5d4 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15b2c2c4 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1619c2e4 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x162b3afb drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1692178e drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1784700e drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1828d227 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18fe98e1 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x192c6de0 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19b5ff6b drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bccdf4c drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1caed3e2 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d72a5fa drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4ac4ca drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2204f7b6 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2396f958 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23973e56 drm_mm_insert_node_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x254e7533 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e03f1a drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28ea2fa4 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a8d844f drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dfcdf2b drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e4ebed2 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f902831 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x300ff8fe drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30b83bcf drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31c22d8a drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3255403d drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33d8a9eb drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34cad11d drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35b084d9 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x363fdcaf drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3672f892 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3803c018 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39131c59 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3df0ab99 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3df119ee drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403463e1 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4089e0df drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40b90c63 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4197e469 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41de6d1b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4250a315 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4384917e drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43d6054e drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44e9fadf drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4838d1dc drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48395b91 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a934501 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4adb29ce drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b65545b drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cc18560 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fd8943b drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x539400f8 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53bc8c5c drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x549b2f7d drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5878ff04 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5900666c drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5956aa30 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ab57f96 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ca0aef1 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5df8b0e0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fb39261 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6044956f drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61d327fd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e17714 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6350d9ec drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6484d31a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65656881 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f59044 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6899b01c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a0865c7 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a532226 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d6b3bf7 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dec15c3 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e114b2b drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ec810b2 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f6219c1 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f89baa3 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75bdf69f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8f4a98 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb26d39 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d8fe09a drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff9b4f0 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x804d006e drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80b8a494 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80dbdab6 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81a42c40 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x863a4010 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89237a4c drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ac11b4b drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ae63ef9 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c25b08b drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfb019d drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f2c28b2 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f67e148 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91b07542 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x921dbacb drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925c53d3 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x955758f8 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9612ac72 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96ff60ec drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x977f4d7a drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f91de4 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b402ae6 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b731059 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c76316d drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9f5d8a drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d3257bd drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dd2c6b7 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0acb253 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1ca3a56 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa21b3df0 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4290760 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa480238f drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5e83752 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa625d949 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa75257b7 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7984573 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9571ed drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad87b1f5 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae928b28 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0092f91 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39cc856 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43d9e55 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4697da7 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb513af8c drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6cba8f7 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77aac78 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7cb3845 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb802de60 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93ce83e drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9c201b9 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba7c744d drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbae4719f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd8fb0b4 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe133253 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2cccd02 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4222350 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5c874b1 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc88c3123 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca878f84 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbfbf8cc drm_mm_insert_node_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc97c1a6 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0bb45c drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfd08976 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd431287e drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd48e3f86 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd80d13bc drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda19192a drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda65c626 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda777a92 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc147aad drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc2bf8a5 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde4a3e15 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde83c2f3 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf4ca3d8 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf5e704c drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf809bb3 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0f83154 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe56c05b0 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5bda1aa drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5f4c61f drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6403777 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f46e6e drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe952ca4b drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeab095b2 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedca5fe0 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1a74a71 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2c80271 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4dfe0b4 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59c8776 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6a28fcf drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf99bc845 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa34e6ad drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc246fc drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcbf81ff drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd227c10 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfef3974d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff07fccd drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0041757a drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07d0f139 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07d6ca37 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d77f44f drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x278de5a9 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a4fb9b6 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4be3edff drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55fad09d drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x568050db drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x581a4b3a drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x663eda61 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c47e7a7 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70bf3d92 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84188f76 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8eb3e28a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91e490ea drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94275472 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9edd4ae9 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2d92211 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa955d858 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa2f163b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac64ec92 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5d992df drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba5e68b3 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc00f29a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb4358a drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2d61e9e drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd91d6e26 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdce34f1e drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3c36c03 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0e0f11d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbdf1bea drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x20ead29c drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x78571181 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xafdc05d3 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05b348b1 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b7beebb ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13953027 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x148c7088 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15b60fe0 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1be84354 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d89df73 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27a34366 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29703288 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c018df0 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30e499dc ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3fd155ed ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x432352a3 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x447b0274 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45e744b1 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x480309c4 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x560adcce ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d208c90 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66ecd427 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x720fbb6e ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dcb1e64 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8026e6b4 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x814a052a ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85e6ba65 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a0d0077 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x940438e7 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x98ff5f01 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b2be07d ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c7b0e27 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d06ced6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d44f4bb ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa068577d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa20e3a70 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa53d79c0 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa54343e0 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa550f248 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa66071c5 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa7f36ae ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac843717 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb70484eb ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb4a2747 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe58e92e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfefd546 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3df4ad2 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf035709 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd145119c ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2f4ab9a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5d2464a ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd781686b ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8aa8ef7 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd951c65e ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdad9d7e4 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddf44f34 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed57677d ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeda4ea20 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedc0e565 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2c4b9e3 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8485f9 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x32c74f52 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x9eb1fd5c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xfe051060 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x02514a22 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x039aa3eb iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x05d1da51 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x14b60c49 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f427bc4 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x34326d4d iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x490c8596 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x54491abc iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x644dc80e iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x680963e3 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x77b537a0 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x77d8f75c iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x85069f59 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x86cdc4e6 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x97565045 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x9e06883a iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x9fde9db9 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xba1efbd8 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc9c94b79 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xcb7f9585 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd80e9848 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdc6c6e1d iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8a60240 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xee615065 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0f31e619 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa4892775 iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 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 0x7e7ffb83 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 0x302f70b7 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41a54cba ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41f2a577 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4e6bcf09 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x53d4f8ae ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x59e4376e ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x65e938d3 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x77eb98ae ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7fbf2fda ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x831b574a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x84523c71 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x995306dc ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9d8f6698 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xad9cde26 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb02dcdc5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xde41350d cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9d99671 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01b096ec ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01f54fdf ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02e1d8eb ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04cc913a ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06febab5 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08ec6c84 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x090b9dec ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a779c15 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dc306bf ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dfd4440 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13dc8727 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x160d8036 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17abc759 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x183be197 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1996d1e1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19e671f7 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19f1a9ac ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bcae36d ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d7afab8 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fd517e1 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22a67439 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22da8d3e ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27457c06 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27d55681 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2954e106 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a35a42a ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d2fbe55 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f2bcfc8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38c6ab59 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48a637ed ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ca93e2b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4df2b64f ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59b976eb ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e7518b6 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6710542f ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x690442f6 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x761ecb2e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a691e81 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ccd6c81 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x829aec4e ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86a52ac9 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9252be01 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9259a44e ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x925cdff6 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x929b9956 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b0855b6 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2cedda4 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa428e8d3 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8913b9f ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa7a7fee ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabb22b9a ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1fb5f64 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb37445ec ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5d38208 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5f06afb ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb66c2851 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8049053 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb93c34d ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc2e2ecf ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc91ab05c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb5dd12c ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd9a7fff ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdab112d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2e2cdfd rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd32016a9 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7c419ca ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd828c7c9 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1f4c1b3 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe226be7c ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3021bd7 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef1c871b ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf37a5b58 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1303aeca ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x213c846d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5984d3d7 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e494d9b ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x79bff439 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93a9fc51 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9b9697db ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8fb6e4c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcff94558 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xec32cb60 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4679b1f ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfa93a7e5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4c380189 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5b3d8b56 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x64107a75 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7ba4b283 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbdcf9929 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xea99322a ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0501e1c1 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x13c5475e iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x25df7ad1 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x35a273d0 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5ad58113 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5df7d9be iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9666e442 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe2c92632 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13b8f79a rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1478b5ef rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a325d8d rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ff015c3 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x22ef98e1 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3dacc5d9 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x474c4ed4 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4be7823a rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5eeec0a0 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x75df7125 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x796e52ad rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7b02d4fd rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7be0e1fd rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7fb9afab rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85c4e03a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa189b577 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae57c005 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbf4d2529 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfcf2044e rdma_destroy_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x22deb28b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3cde7d95 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x54ea353f __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x769564c1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8f4fafcd gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x919a830b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc10baf4c __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe4560fdc gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xedb48711 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x0c1f8055 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2db7fc69 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3929472b input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa8963207 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xb295f2d8 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x112b937b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6191772e ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6f9408dc ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x92890fca ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x12551ff7 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x29df2033 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x453e6917 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7f582d75 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8a010162 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa5b8caf9 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdea49182 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe7355bac ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xf99891de ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0d18738d capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0dc13b5e detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2038548e capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3224ef95 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3f508730 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5f7d55af capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0x884d93ea capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x96d3f0b6 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb7c813b7 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcbd08948 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x016a7fec b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x43523693 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6fcd5b8a b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7bcad97c b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x801289d3 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x86247b39 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8aacb9f0 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa60178f5 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaa112f10 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xabb71ace b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc6aa2d6c b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc77c49f9 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcc0265b1 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xebaa240d b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xeff5b8b5 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4364068e b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4c997bd7 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x55a822d8 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xad985c00 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcc65406e b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdb47d71a b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xed506961 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfad8eec5 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfc0ab0a0 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 0xa41d51ea proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x53da09f4 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7c0ae4cf mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xdc47f00c mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xef978d18 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe8b831bb mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xf85793e0 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 0xc1dfbccc hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1a1e214f isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x22ecf1aa isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb6832518 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd07b52bd isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf77b9629 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x12b18b43 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x980d31e3 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbf374c65 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 0x0778ed54 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0d589dd7 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0ff15421 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1365340d create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1ae74162 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d66293c recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3043bea9 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3ad830cb recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ddd3f0f mISDN_freebchannel +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 0x58924cc6 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x597a2490 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6eab0287 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x72cf25b3 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77632e75 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8edf97a2 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x98270ed3 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d4ea39e mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5e57fe0 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab5d301e mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xae968dda mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe262e58b 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 0xe9ac28a9 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xef61a9e0 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x1cfdc00d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x7a4a1b07 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xd64f3789 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xe7c7b10a dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x14d6eca8 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2c12e149 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4b110dc3 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x501aba2e dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x766b64ea dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe1945fd2 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x571fdac8 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x6ffe0f22 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa1d799d0 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xcd13c8f3 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0xd74286f6 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0xf166b9b0 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x0eb02407 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x1d52b73d mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0xf2150187 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0xba2f4090 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xc272e153 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x111adec3 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x2d5bf563 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x25d2e448 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x523d0562 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x06c52cfb flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x0c5b275a flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1ba2d18f flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2a815c03 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3cc2b290 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x4862e73f flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x488c1b8a flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x4aca7120 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x4ddf5d93 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x502e2d33 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5ad71941 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x60a75717 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x6d62d465 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x939b00de flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x95dcada4 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9cd67cde flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa7d4b5c8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc74fd9a0 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc7a331c3 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xedd541be flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x3cb59aab bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x8ce874b1 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xbf198597 bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xedc3bad3 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x27c21a3e write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x42075bae read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x4c125be1 dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x8d2e44d3 dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa86f2240 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xb980eb06 dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xc13a280c dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xd6f4e8dc dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe84fbb4e dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x9f088a98 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x018c8cb8 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x055c2bec dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0ff98d3f dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2499fdb8 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2dcec9cb dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x39373735 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3cbec4b2 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x41f84e6e dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4790522e dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x56dd829a dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6f739f46 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7154efa4 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7dff8bbc dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7e397d01 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8bc3c627 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x93bb3c95 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9d4e06b9 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9fb27a89 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb7f3e958 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc021edec dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc33d6233 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdce449fe dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xddf5cef8 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe8e81536 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9fa3f21 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfbfd7f71 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x48c463b8 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x5d6cd432 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8fd2d801 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xb85a2ba7 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xcf38840d dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xd20283b5 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xda458f3a usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x6e42b058 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x14bb818c dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5c25d999 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5db3f442 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x7e92ef24 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x867f6978 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb4008203 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd07f8167 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd23f998a dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd9dc4962 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe98bb83f dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xf99bd782 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x35b0a0c1 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xa21545ce af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x54f362c3 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xe34fb1a6 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x485fa224 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x4d0464ed au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x9fd99ed0 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xa8e17331 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xb1da2282 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xba64d64d au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xcd0e8d24 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xfa480128 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x81fa7f77 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0xd73d570c bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0xb250eaed cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x314036b5 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0xfdff8773 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x589c96b6 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xc8066a7b cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0xda0e0aba cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x03f97513 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x93e7284b cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x095542f0 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x112fd3f3 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x154b0f06 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x5f1911ce dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x971fef50 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x979d1bce dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00e447a0 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0804855f dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x10fc124b dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x20539964 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2134837e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x3ffc3543 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x5d9c1727 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6093790a dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6c627849 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xb7fd86c7 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc0f51cbd dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd63886db dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xdeb75977 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe71b18f5 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xfe880c68 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x454d53f5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x06e92324 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x6f0c1560 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x7141349d dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9d8322e0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xe89f347d dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xf3be3edf dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x11c176ce dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x6cc32497 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x8acb63f4 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xd1ad9d30 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x0da6fe39 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x206deb14 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37d2fb95 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3891f08e dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3ab18d72 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x61a5df00 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x685cca91 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x788b4c0a dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x882371f2 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xa6330a59 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xb51a8d1e dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xb9f46f30 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbd47de91 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbee0617f dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe85c2c93 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x09a42f75 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x243ac4e3 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x41862325 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x47a3b2df dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5b94e1d4 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5d2b02ea dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x66dc1dee dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x730ef49f dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x85a33238 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x8a4fc034 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb4ecddbb dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xc8387809 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcf0ce472 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd5fff71f dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd60d6fc1 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd7ba460e dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe342ba4a dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfba50496 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xff6da44a dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x3ce58226 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5088f6f2 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x71bf8494 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbed7b493 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xf0b866bd dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x38bf7340 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xeb23fe7a drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x7370b169 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x63020ba2 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0xf8e4cdd7 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x96673558 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb392fa1a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x452f8ed8 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x8e117d19 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x5c32cc5f it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x0048b753 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x42b4ad34 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xd25a3f9f l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0xee724b50 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x8e5f0ba0 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x098f1d3e lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0xdbff67d3 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x2f88b4f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xc6e1f799 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe8a4494c lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x6acb7f6e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x128c459c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x8a389b38 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x4b8da64e mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xfe15e827 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x5d958405 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xf1edf245 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xc1d20190 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xa304f521 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x12cf1208 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x7fb8fef9 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x3b922ebb s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x2730e799 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x1ae5d7c1 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x436e13da s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x77e524e9 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x13b5370d si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x4fb4fda6 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0xe8145413 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x0dfb7110 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x3ff56216 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xf43f08d0 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x3a18f935 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x20f64843 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x1932775f stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x5f78cafa stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xc5b252d5 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xbf219169 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x5823380e stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xe1833693 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x43dac6b3 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x3135b8bd stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0xd330a2c9 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0x4385f12e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xe94b02ce tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x31b2916d tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x518bd8e2 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0xfa643a4a tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xc6896081 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x1069427d tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x3da857a9 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x079e3a09 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x3a707a2c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x773973d3 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xdd2115df ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x437e3097 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x7ffec207 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x371db48f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0169eda1 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xa639c672 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x48ff50c8 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x63385102 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x093791ff lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3f9a3998 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x441c6a0f lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x61961c2c lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x693f6ad9 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8300e048 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb446eaa7 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb63e136e lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3ba4f9e7 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x8d0af9a2 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x3a7d67e0 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x6c74e0cb bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xab3606b7 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x06218ac1 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x39c233e9 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x429a2983 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x47911f8d cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x95a1b97e cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xb7d9c7d7 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xd46cc3f7 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xb0614c8d cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xd272db7a cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7623705b cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x9937c499 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd230249f cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf94f9ce6 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x2704ab04 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xae201157 altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe617ea4b altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x12b48166 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x18def225 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x53c11341 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x89555545 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x8b0f9157 cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x9967d48c cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc73c1cac cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xefd911b8 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xffe05465 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x90dd7cb0 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xd79ce5bd vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x07cd07be cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x346f6e36 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x4289f55d cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x8fd0659a cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x936b6529 cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xbf6fdbff cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x06702285 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x13c6bed6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x2714f68f cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x92791a3e cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xb6f03712 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xd03e9e4e cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x16fee7ae cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x1d9ed75a cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x25ff1f2b cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x30aed63a cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x32416495 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x38ff1be5 cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x39f40c49 cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x43410ec5 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4b18e9d2 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x54ccf168 cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x58f0788d cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x64225569 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6c690525 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x893317a1 cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x92da3b6f cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x9cd3fd77 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xa7a4bd27 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xabedb5f7 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb07d9fb9 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd1da2eb0 cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd6d30574 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd75a0d82 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x0f1f333f em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x3f9aac53 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x271e3c58 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x361d30d2 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e705eb2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6a5fa025 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x893575d5 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8b874a3e gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8ff5564a gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xa1f11ce9 gspca_suspend +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x289f38e2 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x39a030c0 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6c435f3d ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x717e8fea ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x781aa839 ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7b127501 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x90292e1b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xacd671c0 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xb4da9e0b ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xccc8f43d ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xdc66291f ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xe58b0923 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x09d2d758 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1d934922 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x58e3ef87 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x74666f73 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x8a1ca35e saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x953db795 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x9ff41292 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xaac75e0a saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb975d32e saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcd0d85c5 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xd9533780 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xfefa4c51 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/soc_camera 0x2039d2ff soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x33067095 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x5cf16615 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa0a2cd9b soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0xe435f4b0 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf1835324 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x1e8fdbac tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x41365e8e tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xd3340208 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x290116e4 tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xf8baf84d tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xedadf291 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xf2cd6987 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x32108661 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x7bcb6ce7 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xa11dbb7e v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x004f83f7 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x5f16a970 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x8b6a35b4 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x98d402a5 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xbdf392c7 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xd56998d5 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xef308851 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x052b4b42 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x071b9120 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x0b0226bb v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0bb034ae v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x14f1ea04 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1d4d3816 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x29682acf video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x36aaed39 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x3f631880 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x44a22aa1 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4a899da1 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x51cd4ef8 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x547cda11 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x55a2da3d v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x601e9839 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x6158fcab v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x629976cc v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x675d3d18 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x69eacfd0 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x6b6ddc84 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x6f689724 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x7173d82d v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x894c7b30 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x8db1139f v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x92f3e732 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x97d3bde0 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x9ba11c96 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x9f2b5e27 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x9fedf1a4 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0xa2475a42 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xa9a2715e __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0xae45fe3b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb122be5a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb2335899 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb9dfc0f1 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xcab0ea9c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xdb16c757 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0xe184e63b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe5332d33 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe56fa183 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe5d5e2a5 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe795f8f7 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe8beb956 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb288945 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x42728ec6 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4ca643fb memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4f241618 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d9a52d8 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a263f33 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5c5b3c5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb8c47076 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb92d6d4d memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xba9c4ffe memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbe72c0e7 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xccbded3d memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf90d8957 memstick_next_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1655a4bd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1856d85e mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1ecdcd57 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2194959e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22553701 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x28dbf0a5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x309c3e79 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30bf9439 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32fb53c9 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45a3cf66 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4cf2ae91 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53b6c051 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5afbe25a mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5c606dc4 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7a526c9d mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c0d48cc mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x864edc98 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x89a1370a mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x988697e5 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e488c5b mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2c3e175 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa718cb1c mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb331a1b2 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbba71824 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc54fd570 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0ef11ba mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd3c67e47 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdca474fa mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe92c6d5e mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0c784c98 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1074310c mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1791197f mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29753692 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c947f08 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2da20137 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x339a0e6a mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x343895c7 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x447ee980 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x676b1822 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f477942 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fd05a9e mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8473a11a mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8478e827 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8489837d mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x85ec980d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f0478eb mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9403876a mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a9bb487 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadaab83a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb6211e35 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb6cec9bb mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbe9df1ae mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1c61918 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xddc886ba mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe750ce2c mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec3697f1 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0524d840 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x081db8b3 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2689998f i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a3fd9ed i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2cc2aa60 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2faceb01 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x43fbac3c i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4ba35cc2 i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4e59c39d i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x82cc9d0f i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x879d258d i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8bd4dad2 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x961eee60 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x96c10d84 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xad2f7c7c i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb249e284 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcf6dd4d6 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd42271fb i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdbfce34f i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeca61473 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf013ee27 i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf6c5336c i2o_driver_unregister +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0d2b7289 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfb7a03da pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0732a1c0 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0d9de444 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x34ba9658 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3562c9a7 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5ae0567d mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6504cf01 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6d83d3e9 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6ebd5145 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f8c7af4 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb04d5847 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc86190bb mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd3370493 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xebd6b1b8 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1cf6d74c tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5e773150 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd7b6097b tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x3b44c909 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xbc1e62c1 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x9889f935 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x2e9e6f06 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x7e0adf10 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x6e5b92d4 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x87df3818 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0715aaa4 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x2805fb3f tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x32cf1544 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x348b8e91 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x37c3cfeb tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x4d539775 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x4ee0c3a6 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x8c8ee014 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xd29a05a8 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe54e56ec tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe6b72e6a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xea01cd84 tifm_map_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x803484f8 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x1aefb6f8 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x8cc15365 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0c36c367 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x281b38c8 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6726c6b8 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0b066d7d unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x63e4aabb map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7a65fc22 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa2571dda register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x70945727 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x26c64535 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x50882dd8 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xc688c604 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf71ebe62 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3cc237c6 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x444fd6b5 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5acff82f nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9cea7731 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb1b6ff03 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd26ca996 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xece5a653 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x0a61fe55 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x7772b6e9 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xaf4ee81e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xad505a7e nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xcdd27ddb nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6099bfa5 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x64bb56c2 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6a3c5ef8 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9f7ce7c0 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x15ffdfa1 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1fb9855f arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1ff6534c arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x88f8d0d1 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8f2f4250 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x96609bfc arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb2ec8982 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xca504f4a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe1f9e39b arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfde0bd9c arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x87dcd370 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x93711a20 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xc022013d com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2da489fe ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3f3dbff0 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x41980630 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x57768942 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x65bcc993 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7a0edb36 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x90ae91bc __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xae16376b ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb9ea093a NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd50e10c5 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0x87e8c216 bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xcedb194b bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x0bc1b2bb cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0074f762 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x02c3a622 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x05f4ef66 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0aeb35d9 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x24a39780 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6dd4cf44 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7427d218 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x78208a94 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x79c76410 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7e74a337 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa841e676 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcbfaa570 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd9725451 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe922985e cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf40f2d67 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf68bc12e cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x01bcfeaf cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02e4f241 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0daf63cf cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12864c6c cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1489d216 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22f52a66 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28297c60 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x34b37c7c cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b21390d cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86956310 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9114e324 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x936ed4b5 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0e9a4dc cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa6979383 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc0c300c4 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc3effb7c cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xccbd2e1c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3b4bf20 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd8d9c17e cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfc527a9b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0fa59ad5 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xfae30de6 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25eb3ba7 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2636a996 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29a33759 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x506e081f mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ac23b07 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8815e00b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96742a54 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd54c7af mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda2acb16 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeff0c9cc mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1f5dafa1 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7be03b1f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9064984c hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdec6eaac hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xedfce59a hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0fc1bc90 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x56882b92 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6679b8d4 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7ef5f90e sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x81929b2f sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x81c934c4 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8ce3b63c sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x96476938 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbfa6afb5 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd72b6a62 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x5f8b9b7d alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xbe40ec72 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x8ef336ae pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xaef824a0 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb3e2dd79 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x7c9a038a sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0b671678 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x189443ce hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x227b9b5c detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x742eb57b hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x93c20cc1 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaaaaae78 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcd49a02f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd18bbc10 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdb67ad9a hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe873ce47 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf30fc03f hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x035b3920 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x1173730e init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xb732ed3e reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf1e3cac9 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0bc5dd88 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1cebd759 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1eb7b789 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2069f56e ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x74e43504 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x80be51a8 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x84ae312e ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9e090a6b ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa815908b ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcbd32a5e ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0cb8ec2e ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x100d8493 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1b3ba364 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x227d4f90 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x22bc2072 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x70cbcc9a ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa23683f3 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xba449e13 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf6828a20 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfcebd146 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x095ac5e5 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x20f1c1ae ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2656b36b ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa9b1db87 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0050a683 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0088ba9b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02b270ba ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03043374 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03075d6a ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04e29763 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06e03670 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0df0fa58 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0df8b600 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x10ee307e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11b7bcda ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x126e4f74 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12e21e29 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21a3a507 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2acbff85 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e182e38 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f1f27ae ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31de08ae ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x365e6eb9 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38331795 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39060da0 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ab3cdcc ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41ea366e ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42e5803f ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x434c26fd ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x470ee748 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a784094 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ad5b24d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4cf5ee17 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e6cfd96 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5341ba1f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55a5cb2c ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56998c25 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56be275c ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b4da25e ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5dbc3d2d ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e5bd229 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ebca470 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5faa9aab ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x620c736b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x648c4474 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6635f440 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6637385d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68d93fc1 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c264bdb ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cb7e3ef ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75e46ffd ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x783f33b2 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d26489a ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81fc1e44 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x850bbc0d ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87c1f7b5 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89bd740c ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x927f5d5a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x981733e6 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98c51712 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c2bf9a5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c3b4e87 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d806dc8 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9fc21732 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1e6104f ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8e85549 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa99d445d ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaba24a85 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadf928c7 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae95aeb4 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4bdebaa ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5a665f3 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb787fa7d ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8cbfa48 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb91f1fea ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc36110a2 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6cd93c9 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9201ff5 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf6f20a5 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd42a4492 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6ad3a06 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd255199 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe072c6a2 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe16aaaea ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe51752a1 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea2e47f7 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8b7186 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb171b23 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb6f1065 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0037f15 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf960dc5c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbaf494f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcb65e4d ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd8d8281 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfec34918 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfef9562f ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/atmel 0x267148e9 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6d941309 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xe0f23010 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x739ac042 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x80ae3a05 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x023cbf0b brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x159fa425 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x25cd5338 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2d2f7248 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2ecf2dae brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x31661881 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x37a539cd brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4337ee7d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5c9e35d9 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x638466e3 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd6440299 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd66d6675 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1a31ea78 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x358bd1f0 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x42f02748 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x500e9e1b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x50f64ab0 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5352b0b0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x576270f7 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5818ac6d hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x597df29e hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x84eb2518 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x85feb148 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8e2a9535 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9e2446c7 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9e5c8aa7 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa6a7e172 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaf13b4e0 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd60b575 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd69f40e hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd7dd14e hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc710d21f prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc7979635 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe6adc56b hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xea9ba896 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf12c9f43 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfbb96f3d hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x102663fb libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x11fc4823 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x20320643 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x22babbd9 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x26ef763b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x352c3fd6 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3a6b510d libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4a98b17d libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5c241391 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60e0fd3f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6607e3c6 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6ff789a1 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x902402d3 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92b82a45 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9fc69e89 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xad99056c libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb040b009 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfa6338c free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc501683b libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe0cf3d68 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4e351e6 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02d95367 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x039f4c06 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a5f4316 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c428eac il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e52229b il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb0a2ea il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f2a5112 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x102cfea8 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e7f01dd il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22b826eb il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x243e3dcf il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25621f96 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26590451 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2773c58d il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27fb9bf5 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b431450 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3171aa49 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x324b15ad il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3aed2c6a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x406662a4 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4093d629 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4396f6dc il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x458f821b il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46cd67d4 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4752ae49 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ef1f76a il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x513cf173 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x553b9b8a il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c2539 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5691dc38 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5873e9a4 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x594f2c2b il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d6a5eb0 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6195a3ed il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62d82d20 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65a3b037 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x664d31c5 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6944704a il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c5a77f3 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x728536a7 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x741c24fe il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f24ba30 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8139122e il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85a3fafa il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89599b8d il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92e1751d il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x933978c2 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94dcf82c il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95c81c51 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b372741 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bda5465 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cf2b667 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa04d1084 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2c2ae9f il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2d1b9b8 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa39d24fe il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7d01a34 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8c2144c il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9da6b00 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad31c6cf il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf13c41d il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0d1bec7 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb427584e _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb97ba99b il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9de3ebf il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb0afdee il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb10b059 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe6029b5 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc364d874 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc43e3a75 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5341cbd il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc782f80e il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc796d280 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc83c0986 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcae79edb il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb642c02 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc6ec4b0 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd9b59f6 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1310223 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd48c8149 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8a19754 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe200bd69 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe25e5e40 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe490c3ee il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9412425 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea62eddd il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb63e3b3 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb7de05b il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeee0680c il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef5d5cc9 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefbaf731 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefc05ade il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf08e3291 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0c29737 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1eea536 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2aeec4e il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf454188f il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfec7618a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x13ff4a11 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x259e2240 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26389f99 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x300a855f orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3a497685 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3a646b26 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4195b2f0 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5662e9f9 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x59ab86c5 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x63dd9674 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x840b2acf orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x931fcf92 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x961af13a orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x987a4f04 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9ea2731 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc7862789 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x02c249d6 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x036d4521 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x125d6532 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x189acad2 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x227d4768 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2914403d rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b72a482 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x32276b42 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4015c7cf _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5911dd6e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x607bcfa0 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6baa571d _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x76c14815 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x77b11b9b rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x786a682e rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f459fbb _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x840989af rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8986321c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x962e7c01 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x989ba92a rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99c37166 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b7b852f rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c7b5cc2 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa0c281e9 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa119ea60 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa9194304 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa996f933 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1fd62a1 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb6e2e4ed rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc24afda1 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3e26a6e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca443564 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca66878e _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb287720 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcdcf7f4a rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd037dd9f rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd873e167 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd95303a1 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe6f960f7 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe89394ff rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xec88fc86 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf414b360 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d49a699 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x33a8d8ea rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x39e9c27e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3be0da75 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51445463 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x53c43725 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5fdd5e05 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x699f2f13 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6df6e969 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7342e0df rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x910f763c rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9451ed54 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x985bf382 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9a148213 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f322883 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa29ab80f rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa3a27c54 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb35c16bf rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbb8646f9 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc30ee7cd rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc8ae8053 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0fa46c0 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xebff20e3 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xee24946d rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x457f2a8c wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf6af9d7d wl1271_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x0649f7e8 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x070de22e parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x09f26744 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x0f853ae6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x14e49db0 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x1b53780e parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x2a13d418 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x345c3e47 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x425a7a39 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e69921b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x635b42e5 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x652e464e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x66ed00ac parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6c323e26 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7bd5f983 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x83c96b5a parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x91bd4103 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x95f2e52a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa192c767 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa53890a1 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xabca02a9 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xaeece246 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc05799a4 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xc1c7bb68 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc23c7413 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xc9436952 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xcd0c0fc2 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xe83aae7b parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xea0cfd2b parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xfef6f5a8 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport_pc 0x52f3e6ee parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x7ff459a7 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06a918e7 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x230ba48e pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3015fc61 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36085ac1 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d6dad6e pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4e4a727b pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6cc80281 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7256dfea pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8818f925 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89af6c6c pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89f28a74 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8b85f71f pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x92e3a9d6 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x99ce8624 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb3deadbc pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc9b103c1 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcbd38673 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdbb5a729 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe382dcb1 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1432781f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x23d98461 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4af5b4a4 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5c00e780 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7893e2fb pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7bee2d73 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9c4476f5 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb4a21601 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb643035f pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf892cc05 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x480d1901 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd0f84866 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x23a609c8 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x88dcab3a pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xf05ca1cb pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xf9940a45 pps_unregister_source +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xa8be5850 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02fc0c7a fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x38830405 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5028dfe5 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x53a8f2b5 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x63efc0ce fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6d623d93 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x79a3a85d fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x86462778 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbbad033e fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xce336aeb fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfe4a55a0 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x010c1902 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02db6f11 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x03adad5c fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c486fcc fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c8baec7 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d924268 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12c8f370 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12cbbbab fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x202257cb fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x333b85de fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x379581e7 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e8cfbde fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x47ee70dd fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x486c55a1 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x493bbdb9 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b8f8592 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5105ad22 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f3ef6d6 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f47298d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a5b7b61 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a958101 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d5b1ad7 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d7ad5a5 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7011e7b7 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x764ddc6e fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x784fef83 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x787fce5b fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8258af1d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87070942 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87a8accc fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b37c10a fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b4a79ae fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa900e98d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae133f32 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3fbd502 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6daa537 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbbb05d45 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc9ea96d fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc1a8a5d9 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc82161d8 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc86a2b95 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9efbfa1 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca2ca7ae _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbcd75f4 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd53d0d2b fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc3fdf3b fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe12be29a fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3299836 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe38761bd fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x7bc7ab4e mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x057868a5 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08458f06 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f3269c1 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1429b90c osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16b905e5 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a19c60b osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1cfec333 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c77863e osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x392f5ae9 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3a64d835 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e96f879 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f12d8d1 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48115408 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f51bd7f osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55a798dc osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x616cf902 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6192782c osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x634eb178 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d26d342 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86411bbd osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x879f13df osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x88f9cb7e osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x897c2296 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x89dc2a02 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x99ecd7eb osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9d04beba osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8e3840b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa99790cd osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9be0887 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xae0abec3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb8088843 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd7dd9d3 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc2c34de2 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdeb052d7 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee543ad4 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9e8edac osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0d634d44 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3acb031c osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x73d3b895 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x800a3f6b osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8a70d13c osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe4ea2bc9 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x00243c9f qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2f5dbe96 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x35c6f6eb qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5919ed1d qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5ce09372 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5fae0506 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x881affda qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8a905993 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa10250be qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc96f7807 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcfa36380 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x02741443 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0cf01b27 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1b11cecc qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x20688eff qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x58723e4d qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe1a41589 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x753856e4 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xac69020c raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe2ca1b96 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1a6e6740 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x24f6eba1 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x351df174 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3be87764 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3dd187cb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x660e9d44 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0667be3 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc0235183 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc1d47245 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcaa38340 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd792825a fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4c04060 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf1069648 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x06541dba sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cbc34e3 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0e06f432 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0efbfeb7 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17763923 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x213ce343 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x23dc12d1 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2739f1ab sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39f9a0e3 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e3edb53 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5213956d sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e576414 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6a94ba0a sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6b9fc280 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d8d3355 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75d47a54 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f529990 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1d202ec sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa37acf01 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5217f57 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba88c084 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbea7082b scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3ae836f sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc3ab4f8 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe290dfae scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe71790de sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9b7f416 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3e7dafd sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42a1b9f7 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6186cd01 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8522e875 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xde5ce2c5 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2c13e3a spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x0ff63c49 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x176e9cd3 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x1821aece ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x21b37b37 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2c898112 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x2e98144a ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3b072549 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3e97f5ed ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x415bc30f ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x468ebbac ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x4f2bf1b1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5039db0d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x653a0aff ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x666f2222 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x77c6c19f ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x8bc3cbad ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x8c206f48 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x8f8146c5 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd6f3e4c1 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf8874c5e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf9facfc4 ssb_bus_powerup +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xd98fb2c1 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdeea4ec5 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x2498fdf8 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xce2a058d ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x084234fa iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x318de6c2 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xc9812c1d cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0fb21886 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x38479eb2 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x76cc0fab go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x92ac06d2 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9eeec4bd go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb4c476a0 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd1aefeca go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xeb863fe3 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf344fe5e go7007_read_addr +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0aa54c87 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ea82084 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21821149 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25c8c5fb rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x27844261 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x345649b9 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34b3c0b1 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3cdd10a8 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ffd9e8e rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x419b8e0b rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x472ef4c5 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4cca14ea rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4da9a096 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51f46ccf rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d1eb84c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6027ec33 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66de6012 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6d278c1a rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6ecfa7c9 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x72b381d8 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74af6b7c rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x752b7f94 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x763f7aef rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x779a43ad RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78dd0acc rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e4401fc rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e79e7b2 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7fed8ad4 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x833a1e7c HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d900650 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x973343e9 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97b5962c rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99fde79a rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9de5cf27 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa23d3fc4 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa460827f rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa54e3e18 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb28a271e rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb3c16915 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7d7df21 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbff79a96 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc6e24b7a notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcab7f24d rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2dd50bc rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5747121 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd99fb3da alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xefe48e92 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf37d9172 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf498fb29 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe30a865 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0463e3fb ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ea1e9f6 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ec5bcea ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ef7b56f ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11a82ac4 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17a068ad DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2175346c ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25005e2d ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25d67358 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x298bc48d ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e9b7ca0 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f440f99 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3077d60d ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fb24c1a ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4825073e Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ae3c199 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x505e8838 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50b26673 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a3e4a90 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5af889f5 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5dca6fd3 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5f321255 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x615d17d3 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6abd01d3 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6bbd7080 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f8b01e9 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76bdf57d ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7aa440c0 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b5676a8 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x924a15b5 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x951b9d22 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c996867 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d6e4999 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fb8f6b9 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fd3fda0 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0efefe8 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7df5ffb ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaca16c64 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaddc9112 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xadf437f5 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb5931cb8 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba138fdd ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd42c808 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc0ddc51e Dot11d_Reset +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 0xc8830978 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd33876e0 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7bcfdcd Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbf49578 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd7c4da0 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde947ef6 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe952cee6 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2ed9674 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc8a54f4 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfeffc28a ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0xaead3261 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x0f4d1d62 phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xd237509f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a46f495 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b85efa5 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c284832 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x0cfce804 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e66f7dc target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x1193f994 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x11d5976b transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x141339d2 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x141efb08 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a3720a8 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f80020f transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x20326077 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x2323758b transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x234ce78a sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x2706844f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x29662259 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a7d2397 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b34fc6b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x30419fa4 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x347b3656 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x3955acc6 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x443a6c58 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x468b84a5 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d4be12b fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x4edd93a0 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x54b65b80 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x59af4465 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5eb2d6f9 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fbd4258 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x6124c43b target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x64503cab transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x65abb53a fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x692c47f4 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x69bb85c2 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a2a903c iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e5d8a8d transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x72b393c6 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x77afa4f2 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x77b3e2cc target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ac81045 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x80262200 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x807f3a0b target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5f739eb sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xab05cfb5 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xac4253f8 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xac67bcfd core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb282c8bc core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3307185 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3824d60 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xba9312fa sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbf54efda fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0d8a887 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd05d230b target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1c18251 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd23b1e65 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xd31250fa transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdaae4d96 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe26f1983 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xebec30d6 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0fe5dc2 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa44beda core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x3262d994 serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x7c94393f serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x93083664 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc28b3bcb serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xdeb2ae53 serial8250_do_pm +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf18c3bc8 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xe7ea2563 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x03ff4a63 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1bfc5041 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2f8627c5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4787c51a usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x527fb96c usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x80a5a58f usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x893c414f usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c1df4f6 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9bf8a35f usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa2e1a678 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xab74c71e usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc73a0f89 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdca1fb5d usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdf7dca83 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xed4f8947 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x312e4188 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4440fe32 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf8a9d1a0 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfd2b6193 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb04c6774 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x499636ff matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x61f2a230 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x85aa978e matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x05bad1e1 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x56bf0a50 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb1a8042a DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xed723e4f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x09b2ccb4 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x0daa59b8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7b7a4312 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7e14185e matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xde6f1243 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf1543cb6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x21b90e82 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x3ca4cfe4 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2893a214 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2fc2d13e matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x9e958244 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcb0014bf matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xea0c00e6 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x0d316ed8 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x08f766b0 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0x59eaf288 video_output_register +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x285c466f svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x36ab0b45 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x3dee8e04 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6088b92b svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x66bfa4ed svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8d93e9b8 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x91a506dc svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0de4c097 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x137e2080 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2316848a vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x25d67127 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x3386f070 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x3dc4408a vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x4c15d0df vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x6599a4b1 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x6b514d89 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x73bea2ac vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x874650e6 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9434ce36 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa50208c9 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xa7a3d24c vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xacce3ba4 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xb820799e vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xbbd18b18 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xff99e9dd vme_dma_list_add +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1d22add5 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x5362ba4d w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xcb85bda0 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xcc2e1e33 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x48fe4216 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5c1353dd w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfcfc8e31 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x60cf75f1 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdbd33a0f w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xeaa1a80d w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x04c395f4 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x3636a83d w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x7d013ae5 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xabbf181d w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x0f8bc243 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x45baf057 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x4e85fa31 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x6f2e3cc2 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x7a4fcdd3 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8bc7cb75 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xacd1eb32 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xae2ac888 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xaebe7693 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xc269dcf9 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xcbd2534e config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xee826d69 config_group_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3a0d3528 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x42847e7f ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x7ab8e404 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x8c70dbe9 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc29ab915 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc5b73514 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xd1ae0ad3 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xe5950d70 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xe77ca241 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xee782104 ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x04d59413 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x0569f779 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0839d532 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2060ffd1 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x27fbf40c fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2d17c8de __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3219c227 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x57982d97 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x5cdcb3c5 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x60c23955 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x6fbf31c0 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7690e96e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x90303e44 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x91551c8e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x99bdbc50 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa2ad149d __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa80579f0 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xac4c2bc7 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb62bc4af fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xbed1e6cc __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc5fad271 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xcceb3c43 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xcdcd1210 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xda2ec2db __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xe488d230 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe95e3208 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf49dff65 __fscache_uncache_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x35e33c1e nfs4_acl_write_who +EXPORT_SYMBOL fs/nfsd/nfsd 0x5a157ae4 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1f87cf3f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x68ac39e0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x87713581 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x985cbc4c qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc604d8ec qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x6c1f6fee crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x1697ab05 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x16e74e1a lc_changed +EXPORT_SYMBOL lib/lru_cache 0x297d20c2 lc_create +EXPORT_SYMBOL lib/lru_cache 0x2d79fda7 lc_del +EXPORT_SYMBOL lib/lru_cache 0x40dc2de4 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x6561fa48 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x70f96335 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x78a45c39 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x7b525517 lc_put +EXPORT_SYMBOL lib/lru_cache 0x7f8b3ccf lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xa82301d1 lc_get +EXPORT_SYMBOL lib/lru_cache 0xab3ec3fa lc_reset +EXPORT_SYMBOL lib/lru_cache 0xb156fb35 lc_find +EXPORT_SYMBOL lib/lru_cache 0xb8dd6117 lc_set +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/802/p8022 0x42f77add register_8022_client +EXPORT_SYMBOL net/802/p8022 0x9d6531fc unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x027d552e destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x2fbc0a1b make_8023_client +EXPORT_SYMBOL net/802/psnap 0x3dda93c9 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x93466660 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x010e2e55 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x0adc71f5 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0ae9678a p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x13f9bfe5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x17e79ed8 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x18eae54c p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x25599cf1 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x2cbc83ed p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x2d903891 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x2e80ebf2 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x372d5085 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3cae48ef p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3df80205 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x5dfbf753 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5eedd264 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5f337d2e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x62093c24 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6738fd11 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6e5f97b7 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x71a41df1 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7818336b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x7bcb560d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x7ce30224 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x80edb3e2 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x8347a7be p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x84f0c322 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x8d1edaf1 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x906ef2c8 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa3144313 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xa6b02e36 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xad641fed p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb8f400a6 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xc33fd6b8 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc70d71a6 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xd20a597e p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xd859c065 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7a2a241 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe820efc6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xea65e1bd p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xefe470ed p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xf119b912 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xffe578ee p9_client_destroy +EXPORT_SYMBOL net/appletalk/appletalk 0x5b04c7f6 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x63e7138f atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x79ffbbe8 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x846a94d3 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x0d154cee atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x0d7e986c vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x13ec2738 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x15dc9315 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x287f5648 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3ec82433 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x44017abc atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x45e82c55 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x6a98e001 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6f0a672f vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x70d3e8fe vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc418a8a4 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd695fdda atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xdd329b7a atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0a1beedd ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x432fa11f ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6057ba1e ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x6c7d4d81 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x99d3c237 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xabacaf08 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc1c7a296 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd8606398 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xf0ab0d6f ax25_rebuild_header +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06641bac hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a7bb993 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c0f8f21 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x101a1322 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x10571ec7 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15e71027 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ecd6cc2 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f03ca00 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2049d86c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2fd64c5e bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x378d26b2 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38913fe0 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x45b4e44f hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4769bdad bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x527ec78a bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a2be4f2 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x665a6442 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x673edc36 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73de1e5e hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73ee2463 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x915d5421 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97c22cb5 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4fa612d hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa755639e hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8892657 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb48ecdfd hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc16252d2 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4a087fb hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc5e83d39 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcd67e057 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcfbccd0f bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd240e12a hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7b488e6 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeaab6519 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb846cbe hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1cfdd73 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5a499b5 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff429b40 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bridge/bridge 0x0f1e9709 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x11acbd56 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa6595a91 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe082ac53 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4fd6d711 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x66e55e80 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x722d0422 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x768e0d01 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 0xacdcf199 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x04f0797e can_proto_register +EXPORT_SYMBOL net/can/can 0x4259e094 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x814bde2c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x856db67d can_ioctl +EXPORT_SYMBOL net/can/can 0x90a47bc7 can_rx_register +EXPORT_SYMBOL net/can/can 0xc0cf05d2 can_send +EXPORT_SYMBOL net/ceph/libceph 0x07c31f59 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x098b6543 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d2c2eb3 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0dc0f98e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b9c425b ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x21b5f574 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x25e5273e ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x3f65c24c ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x4326f683 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x495c0c62 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4e2d4c54 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x4ee60402 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54268de3 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x5567a1fc ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x599edeaa ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x5ad951e8 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5e5d7c56 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x5ee4e24a ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x60acad8f ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6eec4fc6 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x72614c3f ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x74d403ad ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x776a0b84 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7a213e2d ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x80d6308a ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x81adc990 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x9124a004 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x9312eb69 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x94f988ba ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x957b9bee __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa5ade7a1 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xa5d82ec4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xad4942ba ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb91de721 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xbd9f906b ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xbda2ccff ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xbdc30347 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xbeb44024 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xc21629b9 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xc2a6855d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 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 0xd3d7eaf6 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd3e5c35f ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xdde50c0e ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xdf4ba7dc ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe5d106dc ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf2bbb433 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf913adca ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x871104a8 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0364d553 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1d5ad904 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x322e1c02 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x39bd7c1f wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5b806a99 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x64c28cdf ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa8961d81 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaab0086f ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb6e95ec8 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc58c0e19 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd75d4fdc ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe903f1af wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf004ab2b wpan_phy_register +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x14813151 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x20584aac arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5e0ce72c arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x22148546 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x35c0d2d3 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfb9643cf ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x38260ce4 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x63d08207 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x82ecb637 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x996b3256 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xba1123df nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xdb82c70b nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xeae9539b nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/tunnel4 0x684513bd xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x72996528 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x35e8b29f ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4a383c25 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6519f45e ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd1154c0e ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x472a5347 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x8298e949 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x68427478 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe063eeeb xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3476489e ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x706df686 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7888cb1f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa8088192 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb18fd9a2 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbea4ae46 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc8a7c485 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf2b579cb 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 0x0ca9866e irttp_dup +EXPORT_SYMBOL net/irda/irda 0x17bd7346 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1d5d169d 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 0x2c0ae7c9 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x44df0f16 iriap_close +EXPORT_SYMBOL net/irda/irda 0x450105c1 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x53557178 irlap_open +EXPORT_SYMBOL net/irda/irda 0x5b1fefec irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x61517fa9 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x638c1638 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x65af383c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x697a14fa async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x73a82bcb 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 0x815304d3 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x95da522b irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9d546ed8 proc_irda +EXPORT_SYMBOL net/irda/irda 0x9fc24805 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +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 0xc597382a irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd0b1080d irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xd1c4f611 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd56bbb1e irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd8ebb046 irlap_close +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe084f0a2 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 0xe929f81c irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe9c633df async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf7363847 irttp_open_tsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x249ea112 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0ccc33d5 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x1b104f05 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x5e1b8e83 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x6b7dc961 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7b293b61 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x8f657426 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xc65abee2 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf7a09a70 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x361f4c81 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x3736363c llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x384007c7 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3c1c2199 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x523390bf llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x87dfdf04 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xea8c642c llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x02017183 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x05a938bb ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x06d415ab ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x08d32eca ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x0b29599b ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x199c31f6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x1abad701 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x1c753eb6 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1e3287d3 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x1f02f7ee ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1f749a75 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x222c3962 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2470e820 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x27022348 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x2de03618 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x32762ada ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x33998b26 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x33a57108 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3678545a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3f581800 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4285649e ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4819ad9c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4f3daccc ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x53af3cab ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x588110ac ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5cba0816 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x60403ca9 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x60bb9ad8 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6327523e ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x682b4a28 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x70260023 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x75403642 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7bab42f4 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x80f43a7f __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x83703d09 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8c7e6353 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9163cbc3 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9531a1b0 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x96ab5a19 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97c6b163 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9d1c8749 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xab55391e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb060b088 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b66794 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc9638800 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xc9a0f66c ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xccc36f0d ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcee18b16 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd405a750 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd711b536 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xd97ae20f ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xda873c3b ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdb742e38 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdb99a015 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xdcf894a5 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0xdd2f73d7 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf7db2ca ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe04a5399 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xf3ad3f5e ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfae86dc4 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x19d17bcf unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x29baa537 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x39ce47cf ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x50f8225a ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6693951a ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8eeff517 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa4c3bdc1 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbf51b5b9 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc16fe8c0 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xca8ccd09 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5019e4b unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdb30d513 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfcde899f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfe83b060 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x0b503748 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x85d9cb55 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xcae5201c __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x13e8f3b1 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0f74429d xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x12aeeea5 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x38a201cb xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3e54bb83 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x4696027d xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x53fd3dd9 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x72fbe42d xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xc9cc5049 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xdb0651be xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xec87eaec xt_find_match +EXPORT_SYMBOL net/nfc/hci/hci 0x09c4cf87 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x135ed665 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x17cd68f5 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x32bf26d9 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x3a89a9bf nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x44e8bcc7 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x4897a887 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x5651b82c nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x5a9309dd nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x61e9f779 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6c08571b nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x6ec69003 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7fda72be nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xa314368c nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa321afe9 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xb294f189 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb4dd9be7 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xd9699a44 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdec948a8 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xedcc6fb8 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0xef96e4c7 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x1114e4b5 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x291b1564 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x751c3d16 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8bf17e19 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8ec1d767 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x00ce320f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x2fdf0d12 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3d2dd1ea nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3dbbc093 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x47de49c2 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x567539bc nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x9388bc0d nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9d9d72fb nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xa2888b1d nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xce835901 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xfd2dd486 nfc_dep_link_is_up +EXPORT_SYMBOL net/phonet/phonet 0x1bc7b1b3 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x2f118932 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x4d054a3e pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x5b4b315f pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa6d9aa11 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc22ba9c9 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe7be07ae phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xeae59b84 phonet_proto_register +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0b49333d rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x156fbe3c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2ee8e724 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3bbf7816 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x43a5e9d3 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5abaa6d6 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5dfbe2c9 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7d5637a9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7e992ab4 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8de3ca7d rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb3c248b2 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc931c267 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcc2edf52 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xde4ac95f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4f14e1a rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0x59a99afe sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd5f9e4a3 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0xce746cc7 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0xd453d054 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xff5ccdad wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x028a8dd7 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x02bbfee8 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a3dc8c1 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x10651df9 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x1110b604 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x13c26414 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x150dd187 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x151d2f83 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x15e144e4 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x168d741f cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x1806e9a2 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1f8d508f wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x20434b55 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x20a5a496 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x22a0d79e ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x2723806f cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x29d0972e cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2b4a9fa1 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x2f499dc2 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x2f70f113 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x31df3f7e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x390d7a07 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x440680df cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x569f2519 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5b5bb77b cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5e48da70 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x68995435 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b38e3ab cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x706f422d cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x74753409 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x775f88dd cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x78ce0f37 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x797398e6 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x83f7f367 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x865b9356 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x86e3e54c cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x89beeaeb ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x89db1973 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8d82a715 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x94cd6c95 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9ba3155d cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9c225bee regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3ddd833 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa7e8cc3e cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb78a95d7 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbae533bc cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xbb26d45a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xbd6c6a2b cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xbfe4f822 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xc263c500 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc9a0d6f6 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xc9a53b7d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc9bd44e5 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xcfab00a6 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xcfaf53e1 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xd3d1c32c cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd6b8679b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xe393a162 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf4bab4b8 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xf4be7bfb cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf9dcd654 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfb488dc6 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfd5e645d cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffa286da cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x564f5c0a lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x6077c0db lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa6ee2c5c lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb8218100 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc8ba7509 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xe719e37c lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x49d48089 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x2a96a309 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x06d0022b snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3be7f101 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc93dc444 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf97dabca snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x24f771ff snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x496dce92 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x3fdf9888 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x07c85843 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x0d005cd3 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x1019d5ba snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x11180c13 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x11a87133 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x174650b6 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x17ac507f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1c831c47 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x1f186cf0 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2da843f3 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x2de7b146 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x33b1c76b snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3f5f334f snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x40b93c09 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x4761e287 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x4795131d snd_cards +EXPORT_SYMBOL sound/core/snd 0x4828d613 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x5351b954 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x5bb2c1c8 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x693c496c snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x6cc082df snd_device_register +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x723b8e6f snd_card_register +EXPORT_SYMBOL sound/core/snd 0x758b6995 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x77c1638a snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x7a0a6d52 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x7aea7c35 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x7bcd21dd snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x7bedd993 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7e227995 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x83c654bb snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8e08d3ab snd_card_create +EXPORT_SYMBOL sound/core/snd 0x8e63c9b2 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x97531e50 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x98a5ae03 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x98dde46f snd_info_register +EXPORT_SYMBOL sound/core/snd 0x9a2f4fe6 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa1f844ba snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xa4adfc7f snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xaf1d5266 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb34a6029 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xb37279cc _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xbc9e4465 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xbcdf53eb snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xc5958fe7 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xc740282b snd_component_add +EXPORT_SYMBOL sound/core/snd 0xdf7a94d4 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xe1f454d7 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xe268b495 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xee4eb113 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xfa4ef21d snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xac3e78c0 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b0a89fb snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x741bf766 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xdae6e4d2 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xdd91f5cc snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xfac91b81 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0138526f snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x05b315d0 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x08b8afad snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x0d9b5ed4 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x215915f7 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x26417f99 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x434cda69 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x44f154d1 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x44ffc83c snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60033463 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x64c71753 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6838e32b snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6949a0e1 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x6dbbbc04 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6fc8f805 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x774176ae snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x7c3ba02f snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x84c136ce snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x8aade463 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x971e3a36 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x9e3c202a snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x9f6fb72c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa22e6a05 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa98ebabc snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xb5cad25a snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbcaa0881 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc2cd259a snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc355e1bf snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xc5a5f487 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc9877c9b snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xcfc88839 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xd27533fc snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd953f010 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xdd020542 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xdedca20b snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe7815fad snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xeb0d02e4 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf485820a snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf6195c4a snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xf7b2f5eb snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf9652d28 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xfc25c5b6 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-rawmidi 0x05e8b3e3 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e7f81bb snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f51302e snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x11b6a7df snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1c49993a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5c3c5441 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x656f6561 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7d4cc089 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x86b26f0f snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa220920b snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaa2876e2 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaafcab6b snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbdd08c42 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbe11d0df snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc174ca46 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd713c21 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdc86f3d1 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x1c7a3d47 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x23c4349a snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x29066137 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x4001d5f0 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x7855a175 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x8c3ffd47 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x9822c75d snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x9c897a3b snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x9f1d5a06 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xabf6e065 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xd540a6dd snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xeca9f51a snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xfa04c762 snd_timer_global_register +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x799783a1 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0c575687 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0f86e23b snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x167481bd snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1c619c1c snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x326faba8 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x56192bd6 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x716e4acb snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x958bf37a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9c8d7425 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1df2ff5a snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4e4a2c8c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4fd4e6a8 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x528072d7 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8f9b7e49 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa99ef2d6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd43d7ca8 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe1448159 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe872bf01 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x016724f9 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05fcfa90 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d14ac23 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30e8a85d amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32726876 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32804d22 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49a88a05 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5451f2b2 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5a049c19 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ea384ea amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ee0d788 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64dfdf44 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a4d41ce amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x799d566a amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91f15853 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9f5de1fb fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3c01d5d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb58506ef fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb5d99e80 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc06d915e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda49ae0b amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe02e65a1 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xedb7d221 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3ea454b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8e7e979 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf9175e75 iso_packets_buffer_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x18144617 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2e2c96de snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3c6de06c snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x41fed657 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5ef7ef05 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7e580d9f snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1e344be4 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2c37a0d5 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x415fad03 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6e37cd8a snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xcd744fc6 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf6a9494b snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x339922c1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x42c6a65d snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x66cb633d snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf174720c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x7b98cc51 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xd42c1931 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xa2d5e1cf snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xe92180a6 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2377bab0 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8a535e22 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x91cd6a3f snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe9fe8f3b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf8049edd snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x12418536 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5b1abc75 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5ceb6a6e snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x68718231 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9b059542 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe417754b snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x30ec3041 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3862e2f6 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3bfb1efa snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x46caa856 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4fe2522c snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6862619a snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x87714430 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9476f74f snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa3badd0d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb9acde90 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x01f39722 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x0a0776ca snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x48b6607c snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0349a435 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x14028f82 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1dbaf466 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x282b29f7 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2c454e61 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2deb6e7f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x310b1fdf snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a9d2be4 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x55b555bb snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c414f34 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x71703b9e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ac28b78 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x85b96a3c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8d17efbe snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8fbf0691 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4fc5292 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd8d140f6 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2b6eb2c4 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x652110e5 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x905efede snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa785a3dd snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa9e31369 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb797f7d8 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbad49298 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xea1b535c snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc94151f snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xded834ee snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x79de4d78 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7b7f0b09 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdb814370 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x064f87da oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1ae41d97 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1fa525dc oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x214a8077 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x32d969ed oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62ab8a07 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x662dec64 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x75181dfb oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7bba0d08 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8bd473ea oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x95241b31 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa94529c3 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaf2f19e0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb1e8028c oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe25e46b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6955450 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcb139e46 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcba67023 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf114c02c oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf169599e oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf67282f3 oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1bef40f5 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6bdd53e7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa6049512 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa96ddb16 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xab8d2efd snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soundcore 0x24b8a8b7 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x4118e002 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x5da067a7 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7c83a6fb register_sound_special +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xccb1c5bb register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xe54306b6 sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1f2bfb39 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x33dd6294 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3c9a6960 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x581f69da snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x992827cb snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xff81ba96 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0ec62d56 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1f0c3b96 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x38fa70b5 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x604b272c snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9a0c87c7 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xac471195 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9a0e71e snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf150d0f3 __snd_util_memblk_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x6d08379f snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00471ad1 dev_close +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x00709a3b kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x008a38c1 generic_setlease +EXPORT_SYMBOL vmlinux 0x0090957a __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x0097b895 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x00aca7e0 phy_disconnect +EXPORT_SYMBOL vmlinux 0x00b09dde jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x00d0df54 register_console +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0118cd98 bio_pair_release +EXPORT_SYMBOL vmlinux 0x011b8cf5 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x01463129 bio_map_kern +EXPORT_SYMBOL vmlinux 0x014b105c pci_enable_obff +EXPORT_SYMBOL vmlinux 0x016b427c max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x016de1d1 sk_stream_error +EXPORT_SYMBOL vmlinux 0x017317ca scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x017b5db7 blk_put_queue +EXPORT_SYMBOL vmlinux 0x0182c9e3 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01b52706 get_disk +EXPORT_SYMBOL vmlinux 0x01b78929 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x01bc8942 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x01bf3636 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x01c744ac cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x028a0d0d bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x028e14b8 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x029f260e bdget +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ac0689 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02f7b9ce wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x031af389 padata_stop +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x032153e6 tcp_check_req +EXPORT_SYMBOL vmlinux 0x0325b417 pipe_lock +EXPORT_SYMBOL vmlinux 0x0333fff9 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033f8ac9 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x0348fec1 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03975d68 idr_find +EXPORT_SYMBOL vmlinux 0x03b7e640 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03d5f2a5 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0452947b compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x0466ffc3 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x046ce173 load_nls +EXPORT_SYMBOL vmlinux 0x0481ed73 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL vmlinux 0x04a37e8f generic_ro_fops +EXPORT_SYMBOL vmlinux 0x04af03c5 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x04bb2877 vga_client_register +EXPORT_SYMBOL vmlinux 0x04bdfbcb lookup_bdev +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x050bbbbb request_key +EXPORT_SYMBOL vmlinux 0x051714e5 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05336749 d_set_d_op +EXPORT_SYMBOL vmlinux 0x053fa2f2 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ba8fa kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x059f0195 pcibus_to_node +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x06061a58 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x0612a683 tcp_close +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06384714 security_path_chown +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x0653df7b nf_log_packet +EXPORT_SYMBOL vmlinux 0x066a286e revert_creds +EXPORT_SYMBOL vmlinux 0x06721e30 __register_chrdev +EXPORT_SYMBOL vmlinux 0x06779c88 dqget +EXPORT_SYMBOL vmlinux 0x067d1304 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067dcccd __lru_cache_add +EXPORT_SYMBOL vmlinux 0x06a040bf inet_csk_accept +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06cdaa58 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x06e12e19 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x06eff90b elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07144a48 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x071d90c6 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x071ef1f4 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072fa1e2 dentry_open +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07713d48 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x077a774d dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a1a945 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c4ba28 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6a093 tty_kref_put +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e5280d consume_skb +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f08148 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x0801010f inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x080261c7 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08431c0a proc_create_data +EXPORT_SYMBOL vmlinux 0x087039e0 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x08730466 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x08746830 lock_may_write +EXPORT_SYMBOL vmlinux 0x08a26b3a i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x08be7ed6 blk_make_request +EXPORT_SYMBOL vmlinux 0x08cd6283 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x08f1c704 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x08ffd26f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x0904de2e generic_delete_inode +EXPORT_SYMBOL vmlinux 0x090e96ab dcache_dir_close +EXPORT_SYMBOL vmlinux 0x091244ff blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x0912e689 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x0914cdfb register_netdev +EXPORT_SYMBOL vmlinux 0x0935d47d genphy_read_status +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x0957d8a6 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x09645d0b ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x09705b3c iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x09887393 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d540e6 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09f9b029 km_state_notify +EXPORT_SYMBOL vmlinux 0x0a0a0ef4 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a25662d submit_bio +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a44aeb4 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x0a5509f2 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x0a7521e5 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x0a7c0209 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x0a84ef7b security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0a96e41f pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0aaa87ec jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x0ab6ef8a mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x0abb9c25 get_gendisk +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0afef520 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0b08696b jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b0f5d14 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b5c2a21 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x0b5cdaf8 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x0b64cce8 dquot_alloc +EXPORT_SYMBOL vmlinux 0x0b732fb3 key_revoke +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0bb8e918 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd3b520 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x0be5a609 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0x0bfe2bfe i2c_clients_command +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c2b0f5c prepare_binprm +EXPORT_SYMBOL vmlinux 0x0c3d5c0f nf_register_hooks +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc8964d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x0d1610d5 locks_init_lock +EXPORT_SYMBOL vmlinux 0x0d285c6c kdb_current_task +EXPORT_SYMBOL vmlinux 0x0d40a0d3 module_layout +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d608639 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x0d652bb4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc39936 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x0dc70973 ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0x0dc96453 mii_check_media +EXPORT_SYMBOL vmlinux 0x0df3b0dd filp_close +EXPORT_SYMBOL vmlinux 0x0df5aadc netif_napi_del +EXPORT_SYMBOL vmlinux 0x0df5f248 dev_get_flags +EXPORT_SYMBOL vmlinux 0x0dfa045c pci_enable_ido +EXPORT_SYMBOL vmlinux 0x0e4f87a5 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0e5ae84d neigh_compat_output +EXPORT_SYMBOL vmlinux 0x0e6a1954 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x0e6a7b88 set_nlink +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8580f9 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eac59d1 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x0f186c68 bio_split +EXPORT_SYMBOL vmlinux 0x0f1b7f55 put_tty_driver +EXPORT_SYMBOL vmlinux 0x0f1d8d11 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x0f2e6990 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x0f2ec10f i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x0f30333f sock_wmalloc +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f742bcc rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x0f80e1e0 kobject_get +EXPORT_SYMBOL vmlinux 0x0f8fd4fc ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x0fa0d87b key_type_keyring +EXPORT_SYMBOL vmlinux 0x0fa60fa8 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fb725cd md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x0fe660cf genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x0fee4968 of_get_parent +EXPORT_SYMBOL vmlinux 0x0ff0096b textsearch_destroy +EXPORT_SYMBOL vmlinux 0x0ff968dc ps2_command +EXPORT_SYMBOL vmlinux 0x0ffa049f pagecache_write_end +EXPORT_SYMBOL vmlinux 0x101f388e input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x1029d37a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x10343701 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x1065dc8b tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x10ce4c4e tty_port_hangup +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113dfb35 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x115d2041 of_device_unregister +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11698f79 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1171b635 _lv1_delete_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1191a3cd udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x11dab3e8 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x11ee842e blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fed793 skb_trim +EXPORT_SYMBOL vmlinux 0x1204753c security_inode_permission +EXPORT_SYMBOL vmlinux 0x120c9b2e uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x120e9d69 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x12154d69 input_register_device +EXPORT_SYMBOL vmlinux 0x125a9a79 padata_do_serial +EXPORT_SYMBOL vmlinux 0x12620994 __register_binfmt +EXPORT_SYMBOL vmlinux 0x12714498 blk_end_request +EXPORT_SYMBOL vmlinux 0x127d8b31 security_path_chmod +EXPORT_SYMBOL vmlinux 0x128212f6 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x12974a57 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a596bc inet_del_protocol +EXPORT_SYMBOL vmlinux 0x12bd53fd __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x13195785 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13662169 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x137ecf81 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x13a78ea0 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x13aedf2b key_alloc +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4dd5c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x13d62fae scsi_put_command +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f0a3f5 follow_up +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x14209d99 kernel_bind +EXPORT_SYMBOL vmlinux 0x14350729 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x1438d487 poll_freewait +EXPORT_SYMBOL vmlinux 0x1449c824 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x146cdd30 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x148faa1b jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x14d1b81d call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x1516250f xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1555f82f blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15713975 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x157bfa00 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x15964ced send_sig +EXPORT_SYMBOL vmlinux 0x15acaf6a scsi_unregister +EXPORT_SYMBOL vmlinux 0x15c7063c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x15e83b71 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161c56fe mmc_card_awake +EXPORT_SYMBOL vmlinux 0x16208e15 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162806e4 genphy_update_link +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x169863c1 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x16a15338 dst_release +EXPORT_SYMBOL vmlinux 0x16a5d006 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x16bae152 aio_put_req +EXPORT_SYMBOL vmlinux 0x16baee68 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16d0d27a update_time +EXPORT_SYMBOL vmlinux 0x16f36cbe pci_remove_bus +EXPORT_SYMBOL vmlinux 0x16f87325 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x17021ae7 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x172d0b17 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x17402deb __scsi_put_command +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1746644f simple_release_fs +EXPORT_SYMBOL vmlinux 0x174ffe60 genphy_suspend +EXPORT_SYMBOL vmlinux 0x175c5fe3 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1798f277 inode_init_owner +EXPORT_SYMBOL vmlinux 0x17b661c1 serio_open +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17d7e4a4 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17ffc7de inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x1826f30a agp_bridge +EXPORT_SYMBOL vmlinux 0x182e5d30 elevator_exit +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184ba3f0 note_scsi_host +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185b8f8f redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x187487be posix_test_lock +EXPORT_SYMBOL vmlinux 0x187a1774 init_buffer +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x1896e29e softnet_data +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a358fe pci_disable_device +EXPORT_SYMBOL vmlinux 0x18bf1b57 __elv_add_request +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18dfe3dc fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x18e006d8 elevator_change +EXPORT_SYMBOL vmlinux 0x18f47e7b scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x191b54fc nobh_write_end +EXPORT_SYMBOL vmlinux 0x19296776 inet_put_port +EXPORT_SYMBOL vmlinux 0x19383537 genphy_resume +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x194ccb24 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x194fe44c mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x1975a3e0 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x198bbe6c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a1ed1b phy_start +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x1a042d1f ida_simple_get +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a2f6945 __next_cpu +EXPORT_SYMBOL vmlinux 0x1a2fdc54 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x1a5f1fb6 led_brightness_set +EXPORT_SYMBOL vmlinux 0x1a63bf89 register_netdevice +EXPORT_SYMBOL vmlinux 0x1a88a450 __lock_page +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1a9200c1 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x1a9ceb28 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1a9db25d __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae78c3c free_buffer_head +EXPORT_SYMBOL vmlinux 0x1ae8ccaa write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b01717d key_validate +EXPORT_SYMBOL vmlinux 0x1b0215a7 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x1b2fc0b2 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x1b3e4994 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x1b5ec446 genl_register_ops +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b642840 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x1b80a6a1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba0a2e2 file_update_time +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bcafcb7 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x1bd1faa7 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1be5eb88 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c0769fb inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4b01b9 sock_common_getsockopt +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 0x1c83750b get_user_pages +EXPORT_SYMBOL vmlinux 0x1c838dbc skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1c83c3c2 del_gendisk +EXPORT_SYMBOL vmlinux 0x1c961d80 scsi_device_put +EXPORT_SYMBOL vmlinux 0x1cbe0a1e skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cc77aa0 dquot_enable +EXPORT_SYMBOL vmlinux 0x1cda9c17 input_free_device +EXPORT_SYMBOL vmlinux 0x1cfe8d51 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x1d045d28 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x1d1b1eaa console_start +EXPORT_SYMBOL vmlinux 0x1d1fae5c ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x1d2ffc98 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d6aad64 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x1d808dc5 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x1d814ace sync_inode +EXPORT_SYMBOL vmlinux 0x1d8862d0 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1da2ab49 mount_nodev +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db86dc8 dquot_initialize +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc262ca mutex_unlock +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc6d12e skb_checksum_help +EXPORT_SYMBOL vmlinux 0x1dcfd233 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de484bf ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1dedf942 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x1df294fc of_find_property +EXPORT_SYMBOL vmlinux 0x1e136d59 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x1e139ce5 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x1e25c15a generic_block_bmap +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e381c12 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x1e52f028 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6fe6f1 idr_init +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eae46cd dev_notice +EXPORT_SYMBOL vmlinux 0x1ec7aef5 vfs_getattr +EXPORT_SYMBOL vmlinux 0x1eefcf54 kobject_set_name +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f05cfc5 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1f1411f4 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x1f4ecc91 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x1f69ae73 dev_addr_init +EXPORT_SYMBOL vmlinux 0x1f7deab8 bh_submit_read +EXPORT_SYMBOL vmlinux 0x1f88bae5 input_set_keycode +EXPORT_SYMBOL vmlinux 0x1f8d9d15 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x1f8f1725 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1f9cb56d tcp_poll +EXPORT_SYMBOL vmlinux 0x1f9e7714 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1fb556c5 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcdb7d6 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd2cae8 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x1fe1a191 pci_restore_state +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff1340f dev_err +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2002b7b0 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x200eb4b7 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x202434c2 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x204b091c bdi_destroy +EXPORT_SYMBOL vmlinux 0x205b1866 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x2064537a jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20916d03 proc_mkdir +EXPORT_SYMBOL vmlinux 0x20962189 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x209b05be i2c_release_client +EXPORT_SYMBOL vmlinux 0x209f1a90 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x20a1a086 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cf462b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x20db125e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x21110d20 skb_find_text +EXPORT_SYMBOL vmlinux 0x211ede5e macio_request_resource +EXPORT_SYMBOL vmlinux 0x2121c505 check_disk_change +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x2138d2ea skb_split +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216b57c6 kill_block_super +EXPORT_SYMBOL vmlinux 0x2172c684 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x21806fc0 get_io_context +EXPORT_SYMBOL vmlinux 0x21846f46 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x21a6fd11 clear_user_page +EXPORT_SYMBOL vmlinux 0x21cf681b i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x22058899 __brelse +EXPORT_SYMBOL vmlinux 0x22225ba8 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223d3aad agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x223fe550 padata_start +EXPORT_SYMBOL vmlinux 0x225749ba ab3100_event_register +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x22764ecd mdiobus_write +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227ee531 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x228a80f5 pci_get_device +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22f7e025 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x230c3722 idr_for_each +EXPORT_SYMBOL vmlinux 0x231ce2d1 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232000ca generic_permission +EXPORT_SYMBOL vmlinux 0x232ccb4d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2339e953 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2369fb65 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x237e8729 __blk_end_request +EXPORT_SYMBOL vmlinux 0x238cee65 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x239cf845 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x23a01f97 netdev_set_master +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cd638d udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x23e247ce scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x23e870e9 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x23f0ab78 inet_sendpage +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241482e3 log_wait_commit +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2426639e __rta_fill +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a2411 __first_cpu +EXPORT_SYMBOL vmlinux 0x244ff84b buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245d60ed sock_no_accept +EXPORT_SYMBOL vmlinux 0x2464d8cb misc_deregister +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248d1048 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x24b1cb97 sock_no_bind +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24d47690 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x24dcd08c jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x24fd65c3 bio_add_page +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250a01fd deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x25183f01 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x25248b28 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252dd020 pci_request_regions +EXPORT_SYMBOL vmlinux 0x253ae6bd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x256192e8 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x25644845 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x25655b9d ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x256f8e8c vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x257b4533 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258fa5d7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x25ad5b5a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25c979cf __lock_buffer +EXPORT_SYMBOL vmlinux 0x25e42f42 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264f2426 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x2652fa49 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x267d8006 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x2684a076 inet_release +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x271a8b6b netif_rx_ni +EXPORT_SYMBOL vmlinux 0x27277915 vm_stat +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275b3973 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x27638371 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x276e2a5a user_path_create +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27a583dd pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x27b46b20 d_find_alias +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bcc396 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27ca4564 user_path_at +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e81f96 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x27f19047 thaw_super +EXPORT_SYMBOL vmlinux 0x27fe51b6 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2823dc7a bio_integrity_split +EXPORT_SYMBOL vmlinux 0x282e3984 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2849f48c dev_crit +EXPORT_SYMBOL vmlinux 0x28616a72 complete_request_key +EXPORT_SYMBOL vmlinux 0x28775e7f may_umount +EXPORT_SYMBOL vmlinux 0x2889415d generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x288fef3c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28bffbed scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x28f57c50 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x29129032 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x291f6b8f scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x2937fd63 account_page_redirty +EXPORT_SYMBOL vmlinux 0x2945b742 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960019b eeh_check_failure +EXPORT_SYMBOL vmlinux 0x29603113 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x2965452b dev_mc_sync +EXPORT_SYMBOL vmlinux 0x29bf8290 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x29c4ac05 seq_release +EXPORT_SYMBOL vmlinux 0x29d73d03 ida_init +EXPORT_SYMBOL vmlinux 0x29f198af nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x2a28c418 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3783ee mutex_trylock +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a445e4c rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x2a572d97 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x2acbcced d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2aed9c26 km_query +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b15c036 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3d5f44 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x2b43aa5a inc_nlink +EXPORT_SYMBOL vmlinux 0x2b481b7d get_unmapped_area +EXPORT_SYMBOL vmlinux 0x2b4a95f8 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x2b73df13 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x2b989b70 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba8d08c scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2bd1e741 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x2bd8d28e mdiobus_scan +EXPORT_SYMBOL vmlinux 0x2c139565 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7f2c1c tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2cb3563e tcp_child_process +EXPORT_SYMBOL vmlinux 0x2cd7acd3 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x2ce4bfc5 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x2cedabcb tty_check_change +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cf9f7dd inode_dio_done +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d15464e i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2d3f3fc4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x2d40c150 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2d597787 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2db3638c pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x2db4c99b flush_delayed_work +EXPORT_SYMBOL vmlinux 0x2dbdd850 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x2de1de52 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df885f1 d_rehash +EXPORT_SYMBOL vmlinux 0x2e0a462a unregister_binfmt +EXPORT_SYMBOL vmlinux 0x2e0bc3d4 paca +EXPORT_SYMBOL vmlinux 0x2e1bef92 eeh_subsystem_enabled +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3aa1cc ip6_frag_match +EXPORT_SYMBOL vmlinux 0x2e4a220a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x2e4caec5 seq_escape +EXPORT_SYMBOL vmlinux 0x2e569181 unregister_con_driver +EXPORT_SYMBOL vmlinux 0x2e7aa0ad cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x2e8ad324 generic_fillattr +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2eb33801 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x2ed40bd3 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x2ee1f956 idr_pre_get +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2eea0203 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f338c34 of_device_register +EXPORT_SYMBOL vmlinux 0x2f451997 unregister_netdev +EXPORT_SYMBOL vmlinux 0x2f5dbc61 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x2f6207a7 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc237b9 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x2fc66e92 pci_iounmap +EXPORT_SYMBOL vmlinux 0x2fcf740d idr_get_new_above +EXPORT_SYMBOL vmlinux 0x2fddac82 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x2fe64438 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x2fedaeba blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303970c2 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x303fb441 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x305f752f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x30633215 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x307a3331 input_grab_device +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30820e8c bio_sector_offset +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ad7702 uart_match_port +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d70fa9 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x30e5fca0 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310b4821 __put_cred +EXPORT_SYMBOL vmlinux 0x310de47b qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x312ff4e7 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x31383d58 dev_warn +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31553fa4 dev_set_group +EXPORT_SYMBOL vmlinux 0x315b019d pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x315b0505 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x317febbb vga_put +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3192aa9b mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a93a06 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x31b515a3 current_fs_time +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31d2a2f5 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x31ffbe74 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x322f64ec mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328041c5 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x3282842a twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x32855905 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x329c652a of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x32c2592f validate_sp +EXPORT_SYMBOL vmlinux 0x32e6d3ef get_write_access +EXPORT_SYMBOL vmlinux 0x3301d691 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x33256585 ata_print_version +EXPORT_SYMBOL vmlinux 0x3334babb eth_type_trans +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x334b2391 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x335c883f dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x336f0fc0 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x3371f71d xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x33a986ad __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x33b3ce13 kern_unmount +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bbe045 scsi_execute_req +EXPORT_SYMBOL vmlinux 0x33e4e9e7 dev_driver_string +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fa97d5 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x34331064 sock_create_lite +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x346b95d0 tcf_register_action +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34704b59 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x34893536 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349f912c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x34c8982c agp_generic_enable +EXPORT_SYMBOL vmlinux 0x34d1db6d mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x34ec6d0f ip_ct_attach +EXPORT_SYMBOL vmlinux 0x34f31e99 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x351ad0ea xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x351bb61e jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3557cf90 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x3563cd9d inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3582e2cb tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x358362f5 abort_creds +EXPORT_SYMBOL vmlinux 0x3592ea83 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ba61a2 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x35ba94ec lro_receive_frags +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35d6de42 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35eb59dd bio_copy_kern +EXPORT_SYMBOL vmlinux 0x360d0cc0 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x3625c57e sys_copyarea +EXPORT_SYMBOL vmlinux 0x362d1846 dev_mc_del +EXPORT_SYMBOL vmlinux 0x3634258c generic_removexattr +EXPORT_SYMBOL vmlinux 0x36907117 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x369f4403 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bb375b inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x36e12e3f cdev_add +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e4f939 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x36f3f41c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x3704ddd1 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x370840d1 inet_getname +EXPORT_SYMBOL vmlinux 0x3708b892 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x37199b46 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372823f1 end_page_writeback +EXPORT_SYMBOL vmlinux 0x372f5bb1 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3739f8b0 set_bh_page +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x376a343f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x377244bf __bio_clone +EXPORT_SYMBOL vmlinux 0x37a12ca9 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37dc4aed dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x37df86d0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x37f945c2 lock_super +EXPORT_SYMBOL vmlinux 0x3803f960 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x382b940f pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x384a6375 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x384ff0f5 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x38546d9e blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x38642557 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x3869bc50 seq_release_private +EXPORT_SYMBOL vmlinux 0x38823c1a max8998_read_reg +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a331b7 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38ebaf0c netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x38ed7a89 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x38f39760 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x39035ba0 register_gifconf +EXPORT_SYMBOL vmlinux 0x391affe8 ilookup5 +EXPORT_SYMBOL vmlinux 0x391dee36 dm_register_target +EXPORT_SYMBOL vmlinux 0x39250ab5 fasync_helper +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x394e46f1 arp_tbl +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x397f4044 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x398d9c87 blk_start_request +EXPORT_SYMBOL vmlinux 0x398ea7c6 bio_put +EXPORT_SYMBOL vmlinux 0x3991a1d3 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39c36d23 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d6b36c ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x39e0a031 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x39ea0a1c macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x39f1b09f inet_sendmsg +EXPORT_SYMBOL vmlinux 0x39fa3fc3 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x3a09a506 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x3a17e5e4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a431304 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x3a7f525c i2c_master_send +EXPORT_SYMBOL vmlinux 0x3a8c4152 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x3a9750ac skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa93a8c kill_litter_super +EXPORT_SYMBOL vmlinux 0x3ac1dda8 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x3ac9ec90 stop_tty +EXPORT_SYMBOL vmlinux 0x3aea9bad ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x3af9f59a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3b086d27 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x3b1dc678 vfs_symlink +EXPORT_SYMBOL vmlinux 0x3b1f143f dquot_quota_on +EXPORT_SYMBOL vmlinux 0x3b23a5c3 notify_change +EXPORT_SYMBOL vmlinux 0x3b2e0c35 vfs_write +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b3a3b89 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b7f6a2f gen_pool_create +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bdbcfdd poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf45a1f mii_link_ok +EXPORT_SYMBOL vmlinux 0x3c1eca1a pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x3c3fc301 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x3c45f1d4 input_unregister_device +EXPORT_SYMBOL vmlinux 0x3c526d8c revalidate_disk +EXPORT_SYMBOL vmlinux 0x3c5f2444 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x3c6c40c7 blkdev_put +EXPORT_SYMBOL vmlinux 0x3c6e2d61 udp_seq_open +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9f6cdb dev_add_pack +EXPORT_SYMBOL vmlinux 0x3ca27679 install_exec_creds +EXPORT_SYMBOL vmlinux 0x3ca38615 mntget +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d09fb9e ip_defrag +EXPORT_SYMBOL vmlinux 0x3d488ca1 sget +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d714cb5 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x3d8f7b28 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d969424 journal_init_dev +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dce3003 sg_miter_start +EXPORT_SYMBOL vmlinux 0x3dcfa409 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3ddf504f napi_frags_finish +EXPORT_SYMBOL vmlinux 0x3df5f432 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e060918 nf_register_hook +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e3c5373 mount_subtree +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e65ad54 kfree_skb +EXPORT_SYMBOL vmlinux 0x3e817c61 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e904a79 scsi_execute +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e959c5a pci_bus_type +EXPORT_SYMBOL vmlinux 0x3e9c58fe fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3eb5ce2d __sock_create +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee101c2 register_quota_format +EXPORT_SYMBOL vmlinux 0x3ef88a4c cad_pid +EXPORT_SYMBOL vmlinux 0x3efec367 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f1bda5a cdev_init +EXPORT_SYMBOL vmlinux 0x3f327640 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6975fa md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x3f7092f3 __kfree_skb +EXPORT_SYMBOL vmlinux 0x3f9963c8 d_drop +EXPORT_SYMBOL vmlinux 0x3fa54c3d scsi_remove_target +EXPORT_SYMBOL vmlinux 0x3fb5d3d7 page_put_link +EXPORT_SYMBOL vmlinux 0x3fbca9f0 sock_update_classid +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fc304ce jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x3fcd7070 of_dev_put +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404303dd generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c39634 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40f953e1 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x40f9e658 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x41252012 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x41302c46 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x413cf822 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4166b77a tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x41773582 mmc_start_req +EXPORT_SYMBOL vmlinux 0x41779437 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41b8958e end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41dca4bb inode_add_bytes +EXPORT_SYMBOL vmlinux 0x41ddda4e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x41f0c835 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x41f50d4a dev_load +EXPORT_SYMBOL vmlinux 0x41fca9d5 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x41fcc442 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x420cac57 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42175572 find_lock_page +EXPORT_SYMBOL vmlinux 0x4225d8e0 ip_fragment +EXPORT_SYMBOL vmlinux 0x422c413a bio_init +EXPORT_SYMBOL vmlinux 0x422ce5b7 netdev_notice +EXPORT_SYMBOL vmlinux 0x422e491d __find_get_block +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x428a5c51 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x4296860c node_data +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a9b02c journal_start_commit +EXPORT_SYMBOL vmlinux 0x42a9cc12 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x42c80915 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x42d72d9d block_write_end +EXPORT_SYMBOL vmlinux 0x42eae16d __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430f3a31 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x4328f668 __netif_schedule +EXPORT_SYMBOL vmlinux 0x432a48cd input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43e32771 init_special_inode +EXPORT_SYMBOL vmlinux 0x43ec72bc devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44055db2 update_region +EXPORT_SYMBOL vmlinux 0x4423334f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x442cfc14 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x443d9f2a follow_down +EXPORT_SYMBOL vmlinux 0x44508049 dev_mc_add +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x4482512b of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x44833b34 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a207cd simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x44a22c4d d_prune_aliases +EXPORT_SYMBOL vmlinux 0x44b41ffc udp_poll +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44c8d7b6 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x44d14f30 vfs_create +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ee7151 dev_change_flags +EXPORT_SYMBOL vmlinux 0x451aa464 file_remove_suid +EXPORT_SYMBOL vmlinux 0x45233282 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x452ebe86 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x45319c6c scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x45617dd5 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4564701d pci_release_region +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457b02cf blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c1b3c9 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45f28a70 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x4610e413 clear_nlink +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x46130824 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4614ff1f pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4624a73f inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x463690bd netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466c892b nf_getsockopt +EXPORT_SYMBOL vmlinux 0x4694fb1c mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46c09776 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x46c36eb1 dev_addr_del +EXPORT_SYMBOL vmlinux 0x46c8254c netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x46c9ddc2 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ff5e06 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x4707807c register_con_driver +EXPORT_SYMBOL vmlinux 0x47303b77 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47801d6a inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x47833cc1 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47ea120a get_super +EXPORT_SYMBOL vmlinux 0x47f6938e bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x48000553 mempool_create_node +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x480ab42a __next_cpu_nr +EXPORT_SYMBOL vmlinux 0x48104a4c vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48780491 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4880ce32 lock_fb_info +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x488589f2 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x488c9723 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x4893b469 scsi_register +EXPORT_SYMBOL vmlinux 0x48b6c14d tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x48e4e704 input_register_handle +EXPORT_SYMBOL vmlinux 0x48e95423 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4918b306 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x49359cf9 __nla_put +EXPORT_SYMBOL vmlinux 0x4959dd7f bdi_unregister +EXPORT_SYMBOL vmlinux 0x495ec6eb pasemi_dma_alloc_buf +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4989090b inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x499b3676 do_SAK +EXPORT_SYMBOL vmlinux 0x49acd431 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c40287 phy_device_free +EXPORT_SYMBOL vmlinux 0x49c6b33f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x49df9a05 ping_prot +EXPORT_SYMBOL vmlinux 0x4a0915ba __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x4a33c7b0 elevator_init +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a65b2e4 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x4a7ccf5d napi_gro_receive +EXPORT_SYMBOL vmlinux 0x4a85678f pci_select_bars +EXPORT_SYMBOL vmlinux 0x4aad7d93 freeze_super +EXPORT_SYMBOL vmlinux 0x4aaf1f9e filemap_flush +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abe5c38 tcp_connect +EXPORT_SYMBOL vmlinux 0x4ac3a750 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4aea660a tty_unthrottle +EXPORT_SYMBOL vmlinux 0x4af2cd3c log_start_commit +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0d6459 rt6_lookup +EXPORT_SYMBOL vmlinux 0x4b15f965 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x4b1ee3e6 sg_miter_next +EXPORT_SYMBOL vmlinux 0x4b205daf ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b3d1e9e get_agp_version +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6dd504 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b70f746 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x4b7195eb scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b8589c5 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4b8fca4a proc_symlink +EXPORT_SYMBOL vmlinux 0x4bb75f67 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4bc372f6 page_symlink +EXPORT_SYMBOL vmlinux 0x4bc63182 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x4bd0554a mapping_tagged +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf89acb mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c6b7030 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x4c84db7c dquot_transfer +EXPORT_SYMBOL vmlinux 0x4c9aefb7 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd22442 __devm_request_region +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4d146c93 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x4d24c1f8 register_md_personality +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d477afd pcim_iomap +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b2784 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x4da452cf simple_getattr +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4df0bf7c wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfa108b bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e179964 udp_proc_register +EXPORT_SYMBOL vmlinux 0x4e2a40ac __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e437c52 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x4e43ca8d vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x4e659479 key_unlink +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e6fbd4c fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x4e8f4717 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x4e91f7be of_node_put +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ed18b80 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4eea7741 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4c3ee6 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6bad75 simple_write_end +EXPORT_SYMBOL vmlinux 0x4f749da6 __break_lease +EXPORT_SYMBOL vmlinux 0x4f8abbbb vm_insert_page +EXPORT_SYMBOL vmlinux 0x4f962a22 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x4f99de07 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x4fb0f510 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x4fc7ea33 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe1e4de lock_sock_nested +EXPORT_SYMBOL vmlinux 0x4fef137e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x4ffae6a4 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x50139980 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x501b59cc phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5025a3b9 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x5072d270 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x50788c4c pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x50844e71 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50eda9b5 vga_tryget +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511a7a5b neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x513f0ddd i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515cc19a mpage_readpage +EXPORT_SYMBOL vmlinux 0x517ad017 input_reset_device +EXPORT_SYMBOL vmlinux 0x518b4c19 is_bad_inode +EXPORT_SYMBOL vmlinux 0x519ad5d7 __alloc_skb +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51c68661 iget_failed +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x523def4a jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5248bab3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x525206ab dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52868740 bdev_read_only +EXPORT_SYMBOL vmlinux 0x5290d99b sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x52b03b37 __devm_release_region +EXPORT_SYMBOL vmlinux 0x52bc5429 d_alloc +EXPORT_SYMBOL vmlinux 0x52c6bfa7 follow_down_one +EXPORT_SYMBOL vmlinux 0x52cd46bd put_io_context +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52def03c kernel_listen +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x533f4256 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x536b5d6b __mutex_init +EXPORT_SYMBOL vmlinux 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL vmlinux 0x536f999a usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53a47668 register_framebuffer +EXPORT_SYMBOL vmlinux 0x53cf343e blk_register_region +EXPORT_SYMBOL vmlinux 0x53e1e4bc key_invalidate +EXPORT_SYMBOL vmlinux 0x53e91a65 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ee8c45 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x53f268c2 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5435824d scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544a75a4 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x544e5088 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x54568b75 register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x545deeb8 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x545f64b8 dev_activate +EXPORT_SYMBOL vmlinux 0x5471f7a1 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x54857073 block_write_begin +EXPORT_SYMBOL vmlinux 0x548ecc09 I_BDEV +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ce0768 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ec975e phy_connect_direct +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55443d63 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x55671f3d load_nls_default +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577948d phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5579d943 nla_append +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x55891540 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x558c3525 sock_create +EXPORT_SYMBOL vmlinux 0x559346bb i2c_register_driver +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55cdd220 dm_put_device +EXPORT_SYMBOL vmlinux 0x55ea8733 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x55efbaac scsi_free_command +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55f5af0d tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x55f794cf remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5615fad8 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x561c6ba8 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x5629d2eb setup_new_exec +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56627878 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x5666e73d set_groups +EXPORT_SYMBOL vmlinux 0x56673d56 default_llseek +EXPORT_SYMBOL vmlinux 0x566ae644 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x56709b4a __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x568ddd19 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x569ac221 dev_trans_start +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56ac983c unregister_filesystem +EXPORT_SYMBOL vmlinux 0x56b05928 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x56bfceb1 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c50653 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cc4fab journal_start +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56eac005 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x56f4755c inet_stream_ops +EXPORT_SYMBOL vmlinux 0x570ba1bb sock_kmalloc +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575a42c7 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x5761494e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5794800f set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x57ccfa41 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x57ced7fa pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x57d830b4 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x57e305e6 thaw_bdev +EXPORT_SYMBOL vmlinux 0x57eb18c2 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x580d99ba i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x582724ec elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5844b04e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586f19e3 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x58738b06 padata_alloc +EXPORT_SYMBOL vmlinux 0x58794223 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x58bd66d8 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x58f57235 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x592f0390 generic_listxattr +EXPORT_SYMBOL vmlinux 0x59322742 blkdev_get +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x5938fc33 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5948e833 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x59616bea input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x5962fe88 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x5991e042 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x59ab7aa2 simple_empty +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c1f06b vfs_mkdir +EXPORT_SYMBOL vmlinux 0x59ce8cac skb_unlink +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a1a26fd skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5a27f400 __block_write_begin +EXPORT_SYMBOL vmlinux 0x5a4e8848 mac_find_mode +EXPORT_SYMBOL vmlinux 0x5a64efe3 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a7cc23e mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aba713f tcp_make_synack +EXPORT_SYMBOL vmlinux 0x5acdf551 path_get +EXPORT_SYMBOL vmlinux 0x5aff7383 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x5b1a2745 vio_unregister_device +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b3a91ad bio_integrity_free +EXPORT_SYMBOL vmlinux 0x5b3e54b2 dev_alert +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4670ca security_d_instantiate +EXPORT_SYMBOL vmlinux 0x5b4804c2 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5b5382af d_delete +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b67e920 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x5b6ddb8d of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb15aa2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5bbebbbe ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5c0b8273 input_open_device +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c51f02a ps2_handle_response +EXPORT_SYMBOL vmlinux 0x5c7af026 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x5c9f45de i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5cba5872 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x5cbf2e4b blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5ceee52e netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d0faf85 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x5d1aaf47 input_inject_event +EXPORT_SYMBOL vmlinux 0x5d1c8866 pci_iomap +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5cc658 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d6c2e9b inet_ioctl +EXPORT_SYMBOL vmlinux 0x5d705c49 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5db98d9a mount_pseudo +EXPORT_SYMBOL vmlinux 0x5e0fae4e qdisc_destroy +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e649273 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e6b19d7 set_blocksize +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec6c2ed vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x5eccd839 write_inode_now +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef61936 bdevname +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0cad09 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x5f23110a get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f3dfd21 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x5f482762 datagram_poll +EXPORT_SYMBOL vmlinux 0x5f658e14 generic_file_open +EXPORT_SYMBOL vmlinux 0x5f7ca9f2 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fafa241 dev_get_stats +EXPORT_SYMBOL vmlinux 0x5fd72896 seq_write +EXPORT_SYMBOL vmlinux 0x5fe1b006 da903x_query_status +EXPORT_SYMBOL vmlinux 0x5ff3a36f jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x5ff79d9d netdev_features_change +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601bb6e1 simple_write_begin +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x606ae96a proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607e1746 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x607fdbeb swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609ca08a blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60dd2cf4 twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x61104f77 mdiobus_free +EXPORT_SYMBOL vmlinux 0x6119a40b jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612f1247 mnt_unpin +EXPORT_SYMBOL vmlinux 0x613b3d9e generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x616a27d4 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x618577ca mutex_lock +EXPORT_SYMBOL vmlinux 0x618751b8 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6193c9ed inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x619a5d94 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c661f4 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6216ee8f kill_anon_super +EXPORT_SYMBOL vmlinux 0x622087eb inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62304c74 __page_symlink +EXPORT_SYMBOL vmlinux 0x6230d8fe mount_single +EXPORT_SYMBOL vmlinux 0x6242ffdb udplite_prot +EXPORT_SYMBOL vmlinux 0x6250d3a3 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628bcf1e splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x62ab3f17 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x62dcb149 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x62e107cb blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x62e18b83 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63044896 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x630b8361 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x6311904d pci_dev_driver +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x635529e7 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x6361b5a4 netdev_printk +EXPORT_SYMBOL vmlinux 0x636d9ba5 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x63782854 agp_create_memory +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63c3d31f pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x63d54087 ipv4_specific +EXPORT_SYMBOL vmlinux 0x63e63185 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x63e7bd12 __cputime_usec_factor +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ebe67d sync_blockdev +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f16683 __seq_open_private +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63f9c93f ida_get_new_above +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64044e54 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x641fc69d prepare_creds +EXPORT_SYMBOL vmlinux 0x64316c26 locks_delete_block +EXPORT_SYMBOL vmlinux 0x644c4d6d netdev_emerg +EXPORT_SYMBOL vmlinux 0x6467be80 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64855739 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x648a3d92 generic_getxattr +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64af95ff scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x64afd65c tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x64be7199 registered_fb +EXPORT_SYMBOL vmlinux 0x64edb4b0 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652100ac devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653e4c07 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x653ffffe sock_i_uid +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x656f5a03 scsi_print_result +EXPORT_SYMBOL vmlinux 0x6584620f dquot_release +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cbc383 register_cdrom +EXPORT_SYMBOL vmlinux 0x65cc33ba iput +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f352f5 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f96970 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x663a7a05 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x6654364b jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x66894eeb __get_page_tail +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a256b3 ida_pre_get +EXPORT_SYMBOL vmlinux 0x66a276cb phy_attach +EXPORT_SYMBOL vmlinux 0x66a8da5c tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d2cf3b key_put +EXPORT_SYMBOL vmlinux 0x66dbea00 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x66ed1040 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x671c83d9 udp_prot +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6742e5d7 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6757a282 mmc_erase +EXPORT_SYMBOL vmlinux 0x676b5565 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x678422d7 d_path +EXPORT_SYMBOL vmlinux 0x6788fb8a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x679006df dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x67a347e9 journal_errno +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x68109c80 sock_wfree +EXPORT_SYMBOL vmlinux 0x6817da52 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x6835b5a1 arp_xmit +EXPORT_SYMBOL vmlinux 0x68416f33 netlink_unicast +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x685e461b rtnl_create_link +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6864dcc1 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x68675288 __serio_register_port +EXPORT_SYMBOL vmlinux 0x686f6dae xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688d535a sock_setsockopt +EXPORT_SYMBOL vmlinux 0x68b0714a mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x68b8a1c5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x690e65f1 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x6925246f inet_addr_type +EXPORT_SYMBOL vmlinux 0x6929f735 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x6945787a blk_recount_segments +EXPORT_SYMBOL vmlinux 0x695240cc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x6970000b skb_store_bits +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69717272 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x69759a0b napi_skb_finish +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a087bf security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ab1864 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c6c147 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e9c22d mpage_readpages +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a4af5bd blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6a56bdc7 __inet6_hash +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acc13d7 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x6adcf17b input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x6b04dc1e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x6b0b6f23 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b362a0c thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 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 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be14c98 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x6c0bcd09 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x6c2d04bf devm_gpio_free +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 0x6c7ad024 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x6c7c05f9 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x6c81035c agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x6c8a3b22 would_dump +EXPORT_SYMBOL vmlinux 0x6cae0b9a ps2_end_command +EXPORT_SYMBOL vmlinux 0x6cbdb1ab input_register_handler +EXPORT_SYMBOL vmlinux 0x6ce92e22 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x6cf28893 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6cf32ad5 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0aea59 do_splice_from +EXPORT_SYMBOL vmlinux 0x6d0c2962 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d16de4a noop_llseek +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d37c410 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x6d4eada0 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x6d59338a ata_dev_printk +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d74d1ff add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x6d7e9199 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x6d80dcdb blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x6d87c6b9 pci_set_master +EXPORT_SYMBOL vmlinux 0x6d904621 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db4ff41 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x6db5f2d6 journal_clear_err +EXPORT_SYMBOL vmlinux 0x6dd83079 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x6dd8bf58 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e0183a9 genl_register_family +EXPORT_SYMBOL vmlinux 0x6e537900 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x6e7023f4 netdev_info +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e75bc87 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x6e98af23 genl_notify +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eae97a6 sk_alloc +EXPORT_SYMBOL vmlinux 0x6eaedfe2 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x6eb6a84b pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x6ebc3517 unlock_buffer +EXPORT_SYMBOL vmlinux 0x6ec4d331 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6eccb037 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x6ed0513e bdi_register +EXPORT_SYMBOL vmlinux 0x6edbc84f vc_cons +EXPORT_SYMBOL vmlinux 0x6eec64e8 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6ef7b00e noop_qdisc +EXPORT_SYMBOL vmlinux 0x6f01d483 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6f1c6e90 blk_peek_request +EXPORT_SYMBOL vmlinux 0x6f1e99ce journal_destroy +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f3954d6 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x6f507b0b __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x6f8656f5 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fd17728 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x6fe934f3 dquot_resume +EXPORT_SYMBOL vmlinux 0x6fee2b00 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x700508ce of_phy_connect +EXPORT_SYMBOL vmlinux 0x7014e3ce serio_reconnect +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x704c4365 __cputime_sec_factor +EXPORT_SYMBOL vmlinux 0x704e1405 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7058dce3 noop_fsync +EXPORT_SYMBOL vmlinux 0x70734b15 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x7083efd7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x70895c71 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x708d6940 __netdev_printk +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70e98b2e bdput +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x710c2f4b ppp_input +EXPORT_SYMBOL vmlinux 0x710fab60 elv_rb_add +EXPORT_SYMBOL vmlinux 0x71153df5 netdev_change_features +EXPORT_SYMBOL vmlinux 0x711e5e36 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x711e6e7f dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71449ee0 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x715b6771 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x71611b18 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7162ead9 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7185ada4 agp_copy_info +EXPORT_SYMBOL vmlinux 0x71a25c76 simple_link +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x720b0ef2 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x726d60c4 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x729a3af5 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x729ed749 cont_write_begin +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72e9ad9e cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef4238 add_disk +EXPORT_SYMBOL vmlinux 0x7306ecea sock_no_poll +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x7328f687 irq_to_desc +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x732e0f40 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7387a316 __destroy_inode +EXPORT_SYMBOL vmlinux 0x73941f75 sk_wait_data +EXPORT_SYMBOL vmlinux 0x73a3cac6 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x73b992dc idr_remove_all +EXPORT_SYMBOL vmlinux 0x73c0ffa8 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x7404e36c pid_task +EXPORT_SYMBOL vmlinux 0x741562b7 single_release +EXPORT_SYMBOL vmlinux 0x741a55c1 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a427c8 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x74a9995a task_nice +EXPORT_SYMBOL vmlinux 0x74aab45d __ip_dev_find +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c391d5 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x74cbab37 make_bad_inode +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d1c2c4 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x74df6136 cdev_del +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f37a65 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x750409d3 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x751166c4 of_dev_get +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x751e1b37 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x7525d51a scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x75308ff0 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753c27aa ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x753f6c2a grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x754d31c7 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x755191dc pci_get_class +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x756f7b1f posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x75761302 blk_complete_request +EXPORT_SYMBOL vmlinux 0x75837f20 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x7593a3bb sk_release_kernel +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75b885c4 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75ce7069 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x75ee30bf md_register_thread +EXPORT_SYMBOL vmlinux 0x7605505d journal_create +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e2224 _lv1_disconnect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x767f7c52 set_binfmt +EXPORT_SYMBOL vmlinux 0x76820450 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x768e6494 tty_register_device +EXPORT_SYMBOL vmlinux 0x76965c98 tty_write_room +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d526ff kthread_stop +EXPORT_SYMBOL vmlinux 0x7700f8fd kernel_getsockname +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7723174a md_done_sync +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7745717c tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x775de4b9 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x77664506 irq_set_chip +EXPORT_SYMBOL vmlinux 0x778943b7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x778ed9dd find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b6bfdf serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d78057 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f19593 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7805637a of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x7820d1c5 ether_setup +EXPORT_SYMBOL vmlinux 0x7821a2ff generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x782cded4 input_close_device +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7864fda8 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x78731391 bio_copy_user +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x78b39216 phy_connect +EXPORT_SYMBOL vmlinux 0x78be4aa2 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x792a8336 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x792bab84 setattr_copy +EXPORT_SYMBOL vmlinux 0x794fa37b jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79a92f76 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x7a003686 icmp_send +EXPORT_SYMBOL vmlinux 0x7a07fc61 phy_driver_register +EXPORT_SYMBOL vmlinux 0x7a1b8d40 misc_register +EXPORT_SYMBOL vmlinux 0x7a26d0e4 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2d0e96 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a685be2 inet_frag_find +EXPORT_SYMBOL vmlinux 0x7a73c864 generic_setxattr +EXPORT_SYMBOL vmlinux 0x7a767af9 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x7a8a6760 sock_no_listen +EXPORT_SYMBOL vmlinux 0x7aa83bc1 mii_check_link +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abc0132 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x7ad1d486 d_invalidate +EXPORT_SYMBOL vmlinux 0x7ae63c1b __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b10493f agp_backend_release +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b65d242 read_cache_pages +EXPORT_SYMBOL vmlinux 0x7b718228 ida_destroy +EXPORT_SYMBOL vmlinux 0x7b81a1f4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x7bab3a89 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x7baf6f76 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x7bde3893 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x7be149c0 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c124ba3 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c1c6fb0 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c386598 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x7c3ad8db seq_printf +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5fbd6b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7f3e8b inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x7c8ec714 pipe_to_file +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c99d6f5 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x7ca341af kernel_thread +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cf226f2 dquot_operations +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cfc0d12 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d29e589 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x7d3251ce scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x7d335bbc generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x7d7ea71b generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x7d8cc27d unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7d93df48 fsync_bdev +EXPORT_SYMBOL vmlinux 0x7d9e3aa6 netif_device_detach +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcbf92e unregister_console +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e39c3cc block_commit_write +EXPORT_SYMBOL vmlinux 0x7e3df7cd __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7e400382 tty_throttle +EXPORT_SYMBOL vmlinux 0x7e613368 framebuffer_release +EXPORT_SYMBOL vmlinux 0x7e750c3b bdi_init +EXPORT_SYMBOL vmlinux 0x7e7e7d51 unregister_nls +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8cefdd pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7e96abf9 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x7ebeb7bd tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7ec4f7bd kobject_del +EXPORT_SYMBOL vmlinux 0x7ed7048e kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x7eec82d1 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x7f07087e eth_change_mtu +EXPORT_SYMBOL vmlinux 0x7f179328 cdrom_release +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f353b1b __sk_dst_check +EXPORT_SYMBOL vmlinux 0x7f4aa595 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x7f6f90e3 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7f829423 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x7f9f8841 idr_remove +EXPORT_SYMBOL vmlinux 0x7fd6cf11 ilookup +EXPORT_SYMBOL vmlinux 0x7fd878d7 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe9a060 _lv1_net_stop_tx_dma +EXPORT_SYMBOL vmlinux 0x801ded1d swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x804a862f mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x804d3187 eth_header_parse +EXPORT_SYMBOL vmlinux 0x804d4421 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x8063c0b7 dquot_acquire +EXPORT_SYMBOL vmlinux 0x80648181 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x8087ff6d check_disk_size_change +EXPORT_SYMBOL vmlinux 0x80c8e672 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x80ce99da mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x80f00638 names_cachep +EXPORT_SYMBOL vmlinux 0x80f0c051 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x811c2f3a mdiobus_read +EXPORT_SYMBOL vmlinux 0x813e84d4 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816b2094 macio_request_resources +EXPORT_SYMBOL vmlinux 0x816ca644 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b62bd0 inet_bind +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81c5c98e sock_no_getname +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81da1211 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81fde4ea genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x825f2949 inet_accept +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8261e741 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x82851ee2 vga_get +EXPORT_SYMBOL vmlinux 0x82a34c35 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82e553c2 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82fb22d3 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x831ca6f5 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x832010ae inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x83322f8d textsearch_register +EXPORT_SYMBOL vmlinux 0x833f0ec8 write_cache_pages +EXPORT_SYMBOL vmlinux 0x83444c63 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x8353115d netif_rx +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83a94ed2 vio_find_node +EXPORT_SYMBOL vmlinux 0x83ba1c28 md_write_start +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83e59c20 filemap_fault +EXPORT_SYMBOL vmlinux 0x83ea72bf framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x83efd99a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x84065814 nonseekable_open +EXPORT_SYMBOL vmlinux 0x8430dd75 dev_uc_add +EXPORT_SYMBOL vmlinux 0x8431e9ba page_readlink +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x84619ab9 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x84645df3 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846c77b1 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x846f0bcf uart_register_driver +EXPORT_SYMBOL vmlinux 0x847a5316 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x847a7d78 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x84971e95 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84ac8a02 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84cc0a9a fget_raw +EXPORT_SYMBOL vmlinux 0x84fff322 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x850085a9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x851910b2 soft_cursor +EXPORT_SYMBOL vmlinux 0x853bc7bc netdev_warn +EXPORT_SYMBOL vmlinux 0x85595d6f f_setown +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858afd8a fail_migrate_page +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85be259f mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x85c36d5b register_filesystem +EXPORT_SYMBOL vmlinux 0x85c8243b gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f870aa sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x85fa3b19 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x860fb6de swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x8620ea23 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x86242481 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x862c1ddf blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x8633ed3a lease_modify +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865504e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869b5d37 mach_ps3 +EXPORT_SYMBOL vmlinux 0x86b88f53 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x86c00ae7 free_task +EXPORT_SYMBOL vmlinux 0x86d4fc01 __napi_schedule +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86f46f38 security_file_permission +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8730d31d tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x8737aa47 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x875ac255 journal_extend +EXPORT_SYMBOL vmlinux 0x8774db8e xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879feca4 __getblk +EXPORT_SYMBOL vmlinux 0x87a39a63 skb_seq_read +EXPORT_SYMBOL vmlinux 0x87ab65c3 file_open_root +EXPORT_SYMBOL vmlinux 0x87c6d6c3 drop_super +EXPORT_SYMBOL vmlinux 0x87d331f9 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x8804579d elv_rb_del +EXPORT_SYMBOL vmlinux 0x880ce048 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8816438f dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88668376 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x8873010e skb_insert +EXPORT_SYMBOL vmlinux 0x88743a4f d_make_root +EXPORT_SYMBOL vmlinux 0x887def2d scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x8886488e alloc_file +EXPORT_SYMBOL vmlinux 0x88abbee8 ppp_input_error +EXPORT_SYMBOL vmlinux 0x88b96637 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x88c57f2e bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x88e07cf1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x88e80b49 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x8908d199 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89673e9e xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x8971d13f xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898169c3 find_inode_number +EXPORT_SYMBOL vmlinux 0x89861fc3 tty_port_close +EXPORT_SYMBOL vmlinux 0x8990ca15 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b752b3 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x89c05c4a of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x89ef01d5 blk_init_queue +EXPORT_SYMBOL vmlinux 0x89f59858 of_get_property +EXPORT_SYMBOL vmlinux 0x8a08409d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x8a126dd6 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a48c84b simple_transaction_release +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a78a029 dev_addr_add +EXPORT_SYMBOL vmlinux 0x8a78f713 seq_bitmap +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a81ddb0 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9bc402 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8aa42919 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8acdcbe8 blk_put_request +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad3dca8 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8af71e45 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x8afa6706 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x8b03edbb request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x8b0d2c54 bioset_create +EXPORT_SYMBOL vmlinux 0x8b143aaa elv_register_queue +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b5adcc9 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x8b5f0eae con_is_bound +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b667d1d __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x8b741bda pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x8b8f3b64 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x8ba3090e dquot_commit_info +EXPORT_SYMBOL vmlinux 0x8bb69337 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x8bdabb3a tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x8bf2446d tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf9f353 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x8bfcd462 mpage_writepages +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c1600e0 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c37fb87 tty_port_open +EXPORT_SYMBOL vmlinux 0x8c413729 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x8c4ba1ba i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x8c68ee00 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8c697789 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8c8242b1 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x8c89afec md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8ca22e3f __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd8e2d7 mount_bdev +EXPORT_SYMBOL vmlinux 0x8cfc246b vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x8d2c0c8b bitmap_unplug +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d5c8b17 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x8d664aab may_umount_tree +EXPORT_SYMBOL vmlinux 0x8d6685c4 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8d6906d4 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x8d738634 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8da61d08 skb_pull +EXPORT_SYMBOL vmlinux 0x8dc23d38 dquot_drop +EXPORT_SYMBOL vmlinux 0x8dc4185e padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8dedd7a2 sock_map_fd +EXPORT_SYMBOL vmlinux 0x8df4c4ea security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e349947 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x8e44570d arp_create +EXPORT_SYMBOL vmlinux 0x8e59abcb serio_interrupt +EXPORT_SYMBOL vmlinux 0x8e7c7091 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x8e7d8d2b seq_putc +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ed5d979 dcb_setapp +EXPORT_SYMBOL vmlinux 0x8ee93d66 __get_user_pages +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8ef65937 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8f05e074 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8f0a054a save_mount_options +EXPORT_SYMBOL vmlinux 0x8f16dae9 pci_dev_put +EXPORT_SYMBOL vmlinux 0x8f3170cd neigh_destroy +EXPORT_SYMBOL vmlinux 0x8f38b8db tcf_em_register +EXPORT_SYMBOL vmlinux 0x8f3a88a1 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x8f3e78df tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4a28db pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x8f4fc924 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f97f23f pci_set_ltr +EXPORT_SYMBOL vmlinux 0x8f9d71c3 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x900b36c0 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x900b80a2 vm_map_ram +EXPORT_SYMBOL vmlinux 0x903c50ff tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x903db3d2 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x905bba18 vm_event_states +EXPORT_SYMBOL vmlinux 0x90715933 __dev_printk +EXPORT_SYMBOL vmlinux 0x90977fdf genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x90a4d02a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x90d7ca45 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90e5d0b8 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x90f7d873 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x91065225 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x91069a5b bio_kmalloc +EXPORT_SYMBOL vmlinux 0x9114826c journal_set_features +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91259212 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x9133e295 unregister_key_type +EXPORT_SYMBOL vmlinux 0x91391c41 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x91394dd4 gen_pool_free +EXPORT_SYMBOL vmlinux 0x913cb0d9 skb_make_writable +EXPORT_SYMBOL vmlinux 0x91448371 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91634813 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91727bb0 tty_port_put +EXPORT_SYMBOL vmlinux 0x91960fd2 elv_rb_find +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91affc39 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x91b22162 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x91c0df3d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91cac58c __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x91fd639c kthread_bind +EXPORT_SYMBOL vmlinux 0x9215b684 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x922019a1 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x922108e5 dput +EXPORT_SYMBOL vmlinux 0x922afd5c pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923c54cf idr_destroy +EXPORT_SYMBOL vmlinux 0x9240610e fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9245cea5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x926a5003 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x926e10c8 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x92765539 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x927f0ad5 arp_send +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92f68af8 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x936e4fc2 vio_register_device_node +EXPORT_SYMBOL vmlinux 0x936ec49f invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x9371664a vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x9371795c key_link +EXPORT_SYMBOL vmlinux 0x938cf852 __napi_complete +EXPORT_SYMBOL vmlinux 0x93975c3c dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93e2aa32 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94102d06 skb_pad +EXPORT_SYMBOL vmlinux 0x94138482 release_firmware +EXPORT_SYMBOL vmlinux 0x942117b7 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x9442e699 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x9455acf9 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x945a29fb fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x946f4650 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x94745466 dget_parent +EXPORT_SYMBOL vmlinux 0x947d8ccb inet_frags_init +EXPORT_SYMBOL vmlinux 0x9481eb9e pci_pme_active +EXPORT_SYMBOL vmlinux 0x94829e68 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b19e12 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x94e101a0 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x94fc0ec9 blk_free_tags +EXPORT_SYMBOL vmlinux 0x950a0f50 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518b623 register_shrinker +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955ca706 input_allocate_device +EXPORT_SYMBOL vmlinux 0x95649e32 kset_unregister +EXPORT_SYMBOL vmlinux 0x95786263 blk_get_queue +EXPORT_SYMBOL vmlinux 0x958b49b3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x958eb830 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x95902a1d bio_alloc +EXPORT_SYMBOL vmlinux 0x95d5d85a __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x95de7606 account_page_writeback +EXPORT_SYMBOL vmlinux 0x9601fe00 journal_restart +EXPORT_SYMBOL vmlinux 0x96086a1b of_phy_find_device +EXPORT_SYMBOL vmlinux 0x960ca5f8 nf_afinfo +EXPORT_SYMBOL vmlinux 0x9610e262 sock_no_connect +EXPORT_SYMBOL vmlinux 0x9619e793 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x963561b3 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x963e2e90 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x9675d7dd tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x9684f9cb pci_find_capability +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96be70e8 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96fd543a mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x971a0dff generic_file_mmap +EXPORT_SYMBOL vmlinux 0x971b841e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x97341bcc ip_check_defrag +EXPORT_SYMBOL vmlinux 0x9737d221 empty_aops +EXPORT_SYMBOL vmlinux 0x9739e414 freeze_bdev +EXPORT_SYMBOL vmlinux 0x9745c86f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974d2781 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975c6e15 vfs_open +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x97716628 generic_write_checks +EXPORT_SYMBOL vmlinux 0x97758270 scsi_add_device +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9786c076 dquot_commit +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a32635 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97f70076 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x97f8e11e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x97fea3ad force_sig +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982d11ed serio_unregister_port +EXPORT_SYMBOL vmlinux 0x9834d93c kset_register +EXPORT_SYMBOL vmlinux 0x9838a19a generic_show_options +EXPORT_SYMBOL vmlinux 0x983e09f5 irq_stat +EXPORT_SYMBOL vmlinux 0x98488439 alloc_disk +EXPORT_SYMBOL vmlinux 0x984b08b7 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x98592fa8 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x986e2621 phy_print_status +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9886547e cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x98a2174c skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99074726 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x991448c9 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x994e4f39 dst_discard +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9953a184 read_dev_sector +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995d196e disk_stack_limits +EXPORT_SYMBOL vmlinux 0x9973e15b poll_initwait +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9997a1cc dev_deactivate +EXPORT_SYMBOL vmlinux 0x999c621e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99cd93dd jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99ed5933 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9a0b154c pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a3692ef dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6431d8 fb_set_var +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a89ab44 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x9aae7778 inet6_bind +EXPORT_SYMBOL vmlinux 0x9ab14915 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x9acdfd72 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x9af2159f __bread +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b005c30 mmc_request_done +EXPORT_SYMBOL vmlinux 0x9b2b1705 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x9b2e60f7 i2c_transfer +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b631f69 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9ba0f292 simple_unlink +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bd42f8a try_module_get +EXPORT_SYMBOL vmlinux 0x9bfff19a vfs_link +EXPORT_SYMBOL vmlinux 0x9c3df124 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4eb474 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c8f2e24 bdget_disk +EXPORT_SYMBOL vmlinux 0x9c95ccd9 vfs_readlink +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cbf982f dcache_readdir +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d10eda0 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d427df7 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x9d786943 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d82b7f8 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9d91ac36 seq_path +EXPORT_SYMBOL vmlinux 0x9d9f0eb0 journal_stop +EXPORT_SYMBOL vmlinux 0x9da6cec1 journal_update_format +EXPORT_SYMBOL vmlinux 0x9db5cc71 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x9dcfada7 sys_imageblit +EXPORT_SYMBOL vmlinux 0x9dee0407 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e79543a flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x9e90caa8 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecc54ed cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9ee43cd3 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9f27a0bf kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f75ea61 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x9f851ff4 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb54c42 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9fca15a3 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x9fd18ebd macio_dev_get +EXPORT_SYMBOL vmlinux 0x9fd5559f netdev_update_features +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff7f5e8 skb_dequeue +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06a7dc1 security_path_link +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0882442 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xa08a349a d_move +EXPORT_SYMBOL vmlinux 0xa0a59c0f serio_close +EXPORT_SYMBOL vmlinux 0xa0abd2d8 backlight_device_register +EXPORT_SYMBOL vmlinux 0xa0acf08f tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c78274 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d0dadc tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa109f636 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa124505f netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0xa131fd64 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14abdd3 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa172e254 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xa189d931 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa18b40b2 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xa18e5d2b netpoll_setup +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b9a6bb tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1ed6555 touch_atime +EXPORT_SYMBOL vmlinux 0xa1f034ae jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xa1f05d0e kill_fasync +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fc84d0 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa2120aea create_proc_entry +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa2338aed mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xa24024b1 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa256c6b4 md_integrity_register +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2b8b607 skb_copy +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2d47e76 pipe_unlock +EXPORT_SYMBOL vmlinux 0xa2da69ac write_one_page +EXPORT_SYMBOL vmlinux 0xa2dc5981 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa2e3d687 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xa2e77feb keyring_search +EXPORT_SYMBOL vmlinux 0xa2e81215 dqput +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3154921 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xa31ed4cf usb_put_transceiver +EXPORT_SYMBOL vmlinux 0xa331d203 km_new_mapping +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33836c0 tty_free_termios +EXPORT_SYMBOL vmlinux 0xa35bac30 macio_dev_put +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36220de generic_writepages +EXPORT_SYMBOL vmlinux 0xa36f8169 skb_queue_head +EXPORT_SYMBOL vmlinux 0xa3713ffb __breadahead +EXPORT_SYMBOL vmlinux 0xa3801e73 writeback_in_progress +EXPORT_SYMBOL vmlinux 0xa38ce02d napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa38eb10f jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xa396e715 bio_free +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3da7c04 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xa3e3f40f net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xa3e660cf nf_reinject +EXPORT_SYMBOL vmlinux 0xa3ef76de blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xa3ef872f mmc_can_discard +EXPORT_SYMBOL vmlinux 0xa3f1c6fd jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0xa3f4cb09 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa42df113 init_task +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4596bd8 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47aedb6 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa49607fc nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xa49dcff5 dma_find_channel +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bdd447 __cputime_clockt_factor +EXPORT_SYMBOL vmlinux 0xa4d250ff fd_install +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa541748d devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa58559c7 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa5945902 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a23e04 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xa5a86d25 take_over_console +EXPORT_SYMBOL vmlinux 0xa5bb4797 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xa5df3a05 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xa5f21c83 uart_resume_port +EXPORT_SYMBOL vmlinux 0xa601f0e3 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa633bcb5 md_error +EXPORT_SYMBOL vmlinux 0xa64af950 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66965a9 scsi_device_get +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa6793a29 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa686d1d5 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa6c2c5f7 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa70a725f machine_id +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa723859c simple_readpage +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa7652d26 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xa76bf359 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xa774a78f seq_puts +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7bb40b2 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xa7c39168 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xa7dddecf vfs_mknod +EXPORT_SYMBOL vmlinux 0xa7df56eb blk_integrity_register +EXPORT_SYMBOL vmlinux 0xa80459e5 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xa816c525 schedule_work_on +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8494e05 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa852e4fe journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xa85a6cef simple_rename +EXPORT_SYMBOL vmlinux 0xa85e53ae journal_wipe +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa894c310 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xa8a0c03d blk_init_tags +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa907290a dump_write +EXPORT_SYMBOL vmlinux 0xa91126c1 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9185e4a remove_proc_entry +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa921c0fe tcf_hash_release +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa945a884 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa99ee981 request_key_async +EXPORT_SYMBOL vmlinux 0xa9a25301 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xa9ae562b pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xa9d3ac19 dm_io +EXPORT_SYMBOL vmlinux 0xa9dc2fe4 blk_start_queue +EXPORT_SYMBOL vmlinux 0xa9e53ab1 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xa9ea56af phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa9ea5ec2 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xa9f6d0be pci_find_bus +EXPORT_SYMBOL vmlinux 0xaa0239ee inet_listen +EXPORT_SYMBOL vmlinux 0xaa07cfbb xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa142d9a free_netdev +EXPORT_SYMBOL vmlinux 0xaa159072 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xaa24e9ad netpoll_print_options +EXPORT_SYMBOL vmlinux 0xaa33fadc tty_mutex +EXPORT_SYMBOL vmlinux 0xaa36d3ce find_get_page +EXPORT_SYMBOL vmlinux 0xaa3b1ba2 backlight_force_update +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa8e7e5a build_skb +EXPORT_SYMBOL vmlinux 0xaaa42a21 __invalidate_device +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaada3b45 nf_log_register +EXPORT_SYMBOL vmlinux 0xaae0c838 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xaae0fbb7 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xaaea1a28 d_add_ci +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab03abca send_sig_info +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab5953e8 km_report +EXPORT_SYMBOL vmlinux 0xab61422a agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7e6b1e qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xab7ea3eb tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd12e00 do_truncate +EXPORT_SYMBOL vmlinux 0xabdaaa1e posix_lock_file +EXPORT_SYMBOL vmlinux 0xabdf63d4 macio_register_driver +EXPORT_SYMBOL vmlinux 0xabe9b02e inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xabf4d449 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0xac08f63a netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac20c636 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac4d19fe ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xac591ad6 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac6af7c3 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xac79ff2a udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xace9dfe7 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1c4370 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xad270d9b pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xad3adf2b generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xad459f30 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad469373 igrab +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad575e61 new_inode +EXPORT_SYMBOL vmlinux 0xad6b6cec seq_lseek +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8b1ebb input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xad96ba19 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadaaa151 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc1b18a security_mmap_file +EXPORT_SYMBOL vmlinux 0xaddb3f74 generic_write_sync +EXPORT_SYMBOL vmlinux 0xade733ab jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xadef7654 netdev_alert +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadfe3726 devm_ioremap +EXPORT_SYMBOL vmlinux 0xae070cc2 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xae25871b gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xae2a609c km_state_expired +EXPORT_SYMBOL vmlinux 0xae453fed bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xae464c55 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xae4fef31 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae56bd21 seq_open +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7310e4 kill_pgrp +EXPORT_SYMBOL vmlinux 0xae884699 user_revoke +EXPORT_SYMBOL vmlinux 0xae8c3d2a keyring_clear +EXPORT_SYMBOL vmlinux 0xae96c8fe invalidate_partition +EXPORT_SYMBOL vmlinux 0xaee19b10 journal_ack_err +EXPORT_SYMBOL vmlinux 0xaeeb4832 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xaf03528e dev_printk +EXPORT_SYMBOL vmlinux 0xaf053a76 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0bdca5 i2c_use_client +EXPORT_SYMBOL vmlinux 0xaf181486 netlink_ack +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf458364 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xaf60673c rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf68ab0b dcb_getapp +EXPORT_SYMBOL vmlinux 0xaf68de46 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf743eb2 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafb71878 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafef8fa9 register_memory_notifier +EXPORT_SYMBOL vmlinux 0xaff9b75c vc_resize +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0081b8b netif_notify_peers +EXPORT_SYMBOL vmlinux 0xb00d93b1 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb01dd479 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xb054103e lock_sock_fast +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07931ea i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xb0a42b04 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xb0aae2f9 register_key_type +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0c0b899 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xb0d73e57 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xb0ddeca0 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15aa6c1 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb16e8d13 seq_read +EXPORT_SYMBOL vmlinux 0xb18aff3d aio_complete +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b13bcd mmc_remove_host +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6cdf7 sock_release +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1ea3842 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xb1f364d3 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xb1fb4608 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xb2269f8d dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb23cef8e simple_rmdir +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb274439c padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xb274e752 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xb28f5a9a skb_put +EXPORT_SYMBOL vmlinux 0xb2b4d985 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d50101 tty_port_init +EXPORT_SYMBOL vmlinux 0xb302c65d __dst_free +EXPORT_SYMBOL vmlinux 0xb311e6cb of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34129f0 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xb35bc1b3 is_container_init +EXPORT_SYMBOL vmlinux 0xb3a6e0ed __blk_run_queue +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3f9aa5b migrate_page +EXPORT_SYMBOL vmlinux 0xb401e673 iterate_mounts +EXPORT_SYMBOL vmlinux 0xb4086559 genlmsg_put +EXPORT_SYMBOL vmlinux 0xb40d7766 d_validate +EXPORT_SYMBOL vmlinux 0xb42180be pci_request_region +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4552733 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb471ee1f scm_detach_fds +EXPORT_SYMBOL vmlinux 0xb4f34a5f con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb4f5abb0 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xb504695f kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb507457f of_get_next_child +EXPORT_SYMBOL vmlinux 0xb5199736 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xb524e9ac ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xb52b7331 napi_complete +EXPORT_SYMBOL vmlinux 0xb536a563 d_splice_alias +EXPORT_SYMBOL vmlinux 0xb53f065c mmc_resume_host +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb55a2b03 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb5601af2 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5800ed3 d_lookup +EXPORT_SYMBOL vmlinux 0xb5a07a2e sk_reset_txq +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5eb35a4 register_qdisc +EXPORT_SYMBOL vmlinux 0xb61b4ec2 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb65d8345 pci_target_state +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67ad119 skb_checksum +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6a0ab9d iget_locked +EXPORT_SYMBOL vmlinux 0xb6a3fcc2 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b970a0 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xb6babd4b security_path_mknod +EXPORT_SYMBOL vmlinux 0xb6bc0dce netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c5dbd9 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb6d99e68 scsi_get_command +EXPORT_SYMBOL vmlinux 0xb6e2bdbe netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xb705c0b9 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xb72df707 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xb734a8b1 ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0xb7383eba napi_get_frags +EXPORT_SYMBOL vmlinux 0xb73f450d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xb74dac50 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb761b8f0 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb7714ba5 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xb78ddc35 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xb7bccb9f skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xb7e9756a udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xb7eb6af0 serio_rescan +EXPORT_SYMBOL vmlinux 0xb804ff81 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xb8088113 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb8212681 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8372432 mmc_add_host +EXPORT_SYMBOL vmlinux 0xb83f6187 __scm_send +EXPORT_SYMBOL vmlinux 0xb841f9ab eth_header +EXPORT_SYMBOL vmlinux 0xb8585320 pci_dev_get +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb8904b5b of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8cad3b4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xb8f11437 mach_powernv +EXPORT_SYMBOL vmlinux 0xb8f25fe0 simple_setattr +EXPORT_SYMBOL vmlinux 0xb9045461 macio_release_resource +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb9368058 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xb93c766c tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xb961a163 set_page_dirty +EXPORT_SYMBOL vmlinux 0xb981f548 udp_disconnect +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb997a793 inode_init_always +EXPORT_SYMBOL vmlinux 0xb9ad8cfe blk_get_request +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba17d974 lro_flush_all +EXPORT_SYMBOL vmlinux 0xba35e6b8 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6555f5 journal_forget +EXPORT_SYMBOL vmlinux 0xba6660fa pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xba6983e9 inet6_getname +EXPORT_SYMBOL vmlinux 0xbaa619b7 ip_route_input_common +EXPORT_SYMBOL vmlinux 0xbae6392d vfs_readv +EXPORT_SYMBOL vmlinux 0xbaf18fd1 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xbb05d0b8 lock_rename +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb288f1c journal_flush +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb397616 netdev_state_change +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb4f8442 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb690eff tcf_hash_check +EXPORT_SYMBOL vmlinux 0xbb6bbb03 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xbb6ce23d dst_alloc +EXPORT_SYMBOL vmlinux 0xbb76af03 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xbb901874 fb_get_mode +EXPORT_SYMBOL vmlinux 0xbb9112c6 dev_uc_init +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbe2e383 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xbbe6e505 path_is_under +EXPORT_SYMBOL vmlinux 0xbbea0604 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xbc07020e scsi_print_command +EXPORT_SYMBOL vmlinux 0xbc18e670 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xbc1e8d43 lookup_hash +EXPORT_SYMBOL vmlinux 0xbc245ce1 pci_get_slot +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc57a783 __frontswap_load +EXPORT_SYMBOL vmlinux 0xbc97b5ad __nla_reserve +EXPORT_SYMBOL vmlinux 0xbca37688 vfs_writev +EXPORT_SYMBOL vmlinux 0xbca7b36a netif_device_attach +EXPORT_SYMBOL vmlinux 0xbcbedf72 register_exec_domain +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcfbfb96 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xbd2657e9 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4976fd devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbd6d41d0 read_cache_page_async +EXPORT_SYMBOL vmlinux 0xbd7f8c9b idr_get_next +EXPORT_SYMBOL vmlinux 0xbd801317 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd827fd7 ppc_md +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbd906b95 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xbd981a26 destroy_EII_client +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdcbc94e inet_stream_connect +EXPORT_SYMBOL vmlinux 0xbdd325d1 inode_change_ok +EXPORT_SYMBOL vmlinux 0xbdddea1b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xbde1e084 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbded4a36 find_vma +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe10f9b8 ihold +EXPORT_SYMBOL vmlinux 0xbe121c68 mddev_congested +EXPORT_SYMBOL vmlinux 0xbe152403 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xbe1ea414 generic_make_request +EXPORT_SYMBOL vmlinux 0xbe1f03ad i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe29fb4e agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe379f1a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xbe462c18 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xbe4e6a18 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xbe5a785b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe814159 ida_remove +EXPORT_SYMBOL vmlinux 0xbea1c29a open_exec +EXPORT_SYMBOL vmlinux 0xbecd326e __pagevec_release +EXPORT_SYMBOL vmlinux 0xbed17069 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xbedc586e bio_map_user +EXPORT_SYMBOL vmlinux 0xbef0ddf4 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef77045 dst_destroy +EXPORT_SYMBOL vmlinux 0xbf020b33 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xbf0a844f pci_reenable_device +EXPORT_SYMBOL vmlinux 0xbf31d697 __module_get +EXPORT_SYMBOL vmlinux 0xbf36fd95 replace_mount_options +EXPORT_SYMBOL vmlinux 0xbf4897b8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xbf511ea1 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xbf7bdbca sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf813d4f blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa28684 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfe828a2 journal_abort +EXPORT_SYMBOL vmlinux 0xbfe8f2ad of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbfeb8218 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc03e9ff3 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc0696510 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc077ee47 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0834484 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc09c426e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0d3c351 security_path_rename +EXPORT_SYMBOL vmlinux 0xc1123528 scsi_init_io +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc13601c0 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc140cb7e kernel_connect +EXPORT_SYMBOL vmlinux 0xc1490d71 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xc1528673 pci_enable_device +EXPORT_SYMBOL vmlinux 0xc153a045 vfs_llseek +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17deb31 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xc1aebced bdgrab +EXPORT_SYMBOL vmlinux 0xc1b9590e fddi_type_trans +EXPORT_SYMBOL vmlinux 0xc1c24e43 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1ce53f3 ata_port_printk +EXPORT_SYMBOL vmlinux 0xc1d7d179 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc1f1ce60 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xc1f43288 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xc220719f fifo_set_limit +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc278ec00 set_disk_ro +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2c6f9b9 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e9d048 d_genocide +EXPORT_SYMBOL vmlinux 0xc2f77864 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc308e45a filp_open +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc310e7af do_splice_to +EXPORT_SYMBOL vmlinux 0xc314c3d2 __cputime_jiffies_factor +EXPORT_SYMBOL vmlinux 0xc32d4285 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc3463d3a tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc384c813 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xc38cc6d5 mount_ns +EXPORT_SYMBOL vmlinux 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL vmlinux 0xc3ccd270 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xc3dfb486 register_sysctl +EXPORT_SYMBOL vmlinux 0xc3dffe4b proto_register +EXPORT_SYMBOL vmlinux 0xc3e0066c sock_init_data +EXPORT_SYMBOL vmlinux 0xc402c124 phy_detach +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc422e9c1 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xc4241d2a padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xc432fc90 mdiobus_register +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc46cd68a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4833b98 truncate_setsize +EXPORT_SYMBOL vmlinux 0xc48ec0ce neigh_table_init +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4b8290a dev_open +EXPORT_SYMBOL vmlinux 0xc4bd3732 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc50bab05 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xc5367f62 of_match_device +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55b14fb alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc5669f95 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xc56c805f dquot_disable +EXPORT_SYMBOL vmlinux 0xc57c68c3 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xc5a5244c drop_nlink +EXPORT_SYMBOL vmlinux 0xc5c6e959 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xc5d6ccb1 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc5d910c2 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc60fe7dd sk_free +EXPORT_SYMBOL vmlinux 0xc621e1cc tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6367da5 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc63bf7ad sk_filter +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6694fa6 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc67ba562 bio_endio +EXPORT_SYMBOL vmlinux 0xc6a32600 block_read_full_page +EXPORT_SYMBOL vmlinux 0xc6abdd75 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b722ea md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xc6baf494 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xc6c7d88f unlock_super +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d1808e nlmsg_notify +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc711d064 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xc754a4d1 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc76405b2 kernel_accept +EXPORT_SYMBOL vmlinux 0xc7685d39 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xc76ed468 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7829d03 dquot_file_open +EXPORT_SYMBOL vmlinux 0xc7856f8a jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xc792fcbd vmap +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c3188 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7db9b5e filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xc7eeb5b8 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc80e10f1 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xc81a10fa pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xc81a1476 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc8452768 sock_create_kern +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8536912 arp_find +EXPORT_SYMBOL vmlinux 0xc860cc24 get_phy_device +EXPORT_SYMBOL vmlinux 0xc8741929 _dev_info +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a4bacf idr_replace +EXPORT_SYMBOL vmlinux 0xc8aa24bb netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d723a6 ip6_xmit +EXPORT_SYMBOL vmlinux 0xc8de19f0 unlock_rename +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8fb2267 input_set_capability +EXPORT_SYMBOL vmlinux 0xc90a235a dm_get_device +EXPORT_SYMBOL vmlinux 0xc9183c9d pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc91d08c6 nla_put +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc958ab48 proto_unregister +EXPORT_SYMBOL vmlinux 0xc977a79b scm_fp_dup +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97a0659 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc994c7ff pci_match_id +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a15cd3 single_open +EXPORT_SYMBOL vmlinux 0xc9d6376b simple_open +EXPORT_SYMBOL vmlinux 0xc9e26aba set_user_nice +EXPORT_SYMBOL vmlinux 0xc9e72bcd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca06a242 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xca1607ab dev_gro_receive +EXPORT_SYMBOL vmlinux 0xca1cdc7c md_write_end +EXPORT_SYMBOL vmlinux 0xca1d439b vfs_unlink +EXPORT_SYMBOL vmlinux 0xca1ffcc3 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xca4dec01 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca750a0b __frontswap_store +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xcaa8d61c sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcad6be44 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xcae78c39 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xcaee8e28 unlock_page +EXPORT_SYMBOL vmlinux 0xcaf364b6 bio_clone +EXPORT_SYMBOL vmlinux 0xcb1848f9 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xcb213947 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xcb2a9d61 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xcb3fb8dd blk_rq_init +EXPORT_SYMBOL vmlinux 0xcb555acb dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb865447 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcba9af6f xfrm_state_update +EXPORT_SYMBOL vmlinux 0xcbb683ac dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xcbc495d1 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcba947 security_path_symlink +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcbfca9e5 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xcc03b751 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc2a01ed pci_map_rom +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc4a42ce vfs_read +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc815bb9 set_create_files_as +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcca4727d sock_i_ino +EXPORT_SYMBOL vmlinux 0xcca6e84a zero_fill_bio +EXPORT_SYMBOL vmlinux 0xccab5e63 cdrom_open +EXPORT_SYMBOL vmlinux 0xccd3e393 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xcce79b0a napi_gro_flush +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd47c17b netif_skb_features +EXPORT_SYMBOL vmlinux 0xcd501deb vfs_readdir +EXPORT_SYMBOL vmlinux 0xcd5d8d3e mmc_can_erase +EXPORT_SYMBOL vmlinux 0xcd6482c9 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd861ea3 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd9dd0e9 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xcda9502f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xcdaf8c2c tcp_parse_options +EXPORT_SYMBOL vmlinux 0xcdb371fe mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0xcdc00df4 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xcdc51091 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xcdd3f080 kill_pid +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde91af0 dev_emerg +EXPORT_SYMBOL vmlinux 0xcdf740c0 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xcdfd60c7 do_sync_read +EXPORT_SYMBOL vmlinux 0xce0f8e2c ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce228e39 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce31d00e sk_receive_skb +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 0xce598fb8 rtnl_notify +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce69ccdb pci_enable_msix +EXPORT_SYMBOL vmlinux 0xce73d9b9 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xce7af065 nla_reserve +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce7eab17 input_event +EXPORT_SYMBOL vmlinux 0xce8b4461 journal_release_buffer +EXPORT_SYMBOL vmlinux 0xce8eb87b __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xce966fb5 give_up_console +EXPORT_SYMBOL vmlinux 0xcea3a939 mach_pasemi +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcedc63c9 neigh_for_each +EXPORT_SYMBOL vmlinux 0xceebb8e7 request_firmware +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcf16839a should_remove_suid +EXPORT_SYMBOL vmlinux 0xcf24c714 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xcf35e963 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xcf647dbd mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xcf753a1b jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xcf7e2463 kill_bdev +EXPORT_SYMBOL vmlinux 0xcf955028 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfd2523c mach_powermac +EXPORT_SYMBOL vmlinux 0xcfd44348 pci_clear_master +EXPORT_SYMBOL vmlinux 0xcfdbe972 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff35b2d inet_frag_kill +EXPORT_SYMBOL vmlinux 0xcff43240 __f_setown +EXPORT_SYMBOL vmlinux 0xcff92d4e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd00a6c1d pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xd00e3efa rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd01135f9 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd02322db tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xd037851c dentry_unhash +EXPORT_SYMBOL vmlinux 0xd03ab2dc d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL vmlinux 0xd0a913ad giveup_vsx +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b6660b set_anon_super +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0db16af scsi_register_driver +EXPORT_SYMBOL vmlinux 0xd0e5080c inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0efcf80 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd0efe945 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd102348b powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd10a6010 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xd111633c scsi_host_put +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd121480d vm_mmap +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd14dee0c bd_set_size +EXPORT_SYMBOL vmlinux 0xd16bb447 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xd1720410 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1939dcc inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd1a796b1 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd1da30dc tty_shutdown +EXPORT_SYMBOL vmlinux 0xd1e5ab7d generic_read_dir +EXPORT_SYMBOL vmlinux 0xd1f7578b kobject_add +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd21042ff module_refcount +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22c263c tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xd22e0a34 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xd2318438 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xd248d83e xfrm_init_state +EXPORT_SYMBOL vmlinux 0xd251a9e1 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25b5253 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25e63ae console_stop +EXPORT_SYMBOL vmlinux 0xd267b0e6 block_truncate_page +EXPORT_SYMBOL vmlinux 0xd269736b start_tty +EXPORT_SYMBOL vmlinux 0xd26ab845 generic_write_end +EXPORT_SYMBOL vmlinux 0xd27318c6 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xd27e3114 vmtruncate +EXPORT_SYMBOL vmlinux 0xd2841ecc dev_mc_init +EXPORT_SYMBOL vmlinux 0xd2888ec1 bioset_free +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2aeb76a scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b47d01 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd2b67d04 get_super_thawed +EXPORT_SYMBOL vmlinux 0xd2c5a8f1 agp_enable +EXPORT_SYMBOL vmlinux 0xd2ca13ec tty_set_operations +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2d109b8 kobject_init +EXPORT_SYMBOL vmlinux 0xd2d685d6 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd2f3e71b agp_free_memory +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd338493e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd33cabdd prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xd351abe7 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd380b43a __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd39e8b3a no_llseek +EXPORT_SYMBOL vmlinux 0xd3d8eaf6 inet_select_addr +EXPORT_SYMBOL vmlinux 0xd3e923ab unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd4039d1c scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd41318f8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xd436b2e0 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd43d3627 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xd4475adb thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0xd4530eb1 phy_device_register +EXPORT_SYMBOL vmlinux 0xd455e530 elv_add_request +EXPORT_SYMBOL vmlinux 0xd4753bb7 input_get_keycode +EXPORT_SYMBOL vmlinux 0xd47756a0 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd4843d54 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd491b61d mmc_free_host +EXPORT_SYMBOL vmlinux 0xd4c92385 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xd4dbe865 dquot_destroy +EXPORT_SYMBOL vmlinux 0xd4e9f8e0 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xd4e9feed mmc_register_driver +EXPORT_SYMBOL vmlinux 0xd5055fad icmpv6_send +EXPORT_SYMBOL vmlinux 0xd540562d devm_iounmap +EXPORT_SYMBOL vmlinux 0xd5548dce of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5c6f814 simple_fill_super +EXPORT_SYMBOL vmlinux 0xd5ce8cf8 macio_release_resources +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5f0d98b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61d5a67 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6580f75 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xd6591576 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd66361fb scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd673073c dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xd6738eea search_binary_handler +EXPORT_SYMBOL vmlinux 0xd681a715 of_device_is_available +EXPORT_SYMBOL vmlinux 0xd6cc57f9 vfs_rename +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd6feabe3 ip_options_compile +EXPORT_SYMBOL vmlinux 0xd715fe00 journal_force_commit +EXPORT_SYMBOL vmlinux 0xd7258ac1 tty_register_driver +EXPORT_SYMBOL vmlinux 0xd725a667 tc_classify +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd74104d7 ip6_route_output +EXPORT_SYMBOL vmlinux 0xd7542f1f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd76eec67 find_or_create_page +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7d0f8e8 phy_stop +EXPORT_SYMBOL vmlinux 0xd7d6ba00 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd80b6a71 tcp_prot +EXPORT_SYMBOL vmlinux 0xd81a8414 skb_append +EXPORT_SYMBOL vmlinux 0xd81aed0a pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xd81b8178 pci_save_state +EXPORT_SYMBOL vmlinux 0xd822ec10 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xd87a55b2 bmap +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c09008 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xd8c4a5b4 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e88c08 do_splice_direct +EXPORT_SYMBOL vmlinux 0xd8f73255 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd9508f5c set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xd96be459 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xd97edb9f gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd998480e mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd9b3e52d cdev_alloc +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c67edb simple_transaction_read +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda128071 __pskb_copy +EXPORT_SYMBOL vmlinux 0xda235611 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xda2bad9c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xda6989da xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8deb4f journal_init_inode +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabe8a4a pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xdacb51c9 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xdad72a9d nobh_writepage +EXPORT_SYMBOL vmlinux 0xdadc4844 kick_iocb +EXPORT_SYMBOL vmlinux 0xdae24536 fget +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdafa1951 inet6_release +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb1c6ea8 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xdb1daf96 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xdb1eed95 address_space_init_once +EXPORT_SYMBOL vmlinux 0xdb271432 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xdb3f813f pci_get_subsys +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb800d5c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xdb9e0c61 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc112421 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc17fe7d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xdc26b6ec xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc7ae512 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xdc86e77c dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xdc915e75 register_nls +EXPORT_SYMBOL vmlinux 0xdc944f55 kern_path +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcafd4a0 journal_load +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcba0909 tty_hangup +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdceeb3dc qdisc_reset +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdcf280ee bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd24fade follow_pfn +EXPORT_SYMBOL vmlinux 0xdd2bb551 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd653783 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdda14808 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xddaa2029 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xddc6037c inetdev_by_index +EXPORT_SYMBOL vmlinux 0xddce3716 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xddd14956 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xddd98136 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xdddd1a65 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xdde643d3 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xde3c5b23 d_instantiate +EXPORT_SYMBOL vmlinux 0xde45743d twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4c056d swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9a504b mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea9ff5a __quota_error +EXPORT_SYMBOL vmlinux 0xdeb36536 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xdebaa1db netdev_err +EXPORT_SYMBOL vmlinux 0xdebc6824 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xdec5dada ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xded4651f ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xdf27349a swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xdf2c73eb pci_release_regions +EXPORT_SYMBOL vmlinux 0xdf3bba8d journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xdf5bcc25 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf60fc83 _lv1_net_start_tx_dma +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xe0145414 release_sock +EXPORT_SYMBOL vmlinux 0xe019b68b submit_bh +EXPORT_SYMBOL vmlinux 0xe023edcb sock_rfree +EXPORT_SYMBOL vmlinux 0xe0280b4d __bforget +EXPORT_SYMBOL vmlinux 0xe03c32c1 key_task_permission +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe050a16a security_path_unlink +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe07119e4 of_device_alloc +EXPORT_SYMBOL vmlinux 0xe073f80a __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe088ef83 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xe096a704 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xe0a45fae mach_maple +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bd9da0 pci_domain_nr +EXPORT_SYMBOL vmlinux 0xe0c72cb2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xe0f0d384 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe0fbcede tty_vhangup +EXPORT_SYMBOL vmlinux 0xe10aa914 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe123fba6 mb_cache_create +EXPORT_SYMBOL vmlinux 0xe13541c6 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xe1495847 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xe15f300b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xe1628ca1 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17652f7 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xe1802303 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xe181845d compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xe1952e44 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xe195dcc3 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xe1beb8fc inode_init_once +EXPORT_SYMBOL vmlinux 0xe1d6d002 fb_class +EXPORT_SYMBOL vmlinux 0xe1e40275 locks_free_lock +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe20f6b10 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe224b9d9 ps2_init +EXPORT_SYMBOL vmlinux 0xe229a947 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250212a max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe25ac808 flush_signals +EXPORT_SYMBOL vmlinux 0xe27a4347 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xe2a13e12 unload_nls +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c86b0f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe2c9afea handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2e1d89b blk_requeue_request +EXPORT_SYMBOL vmlinux 0xe3587fed release_pages +EXPORT_SYMBOL vmlinux 0xe35faa5b alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xe3905d60 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe3960f65 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3c76031 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dcfa34 devm_free_irq +EXPORT_SYMBOL vmlinux 0xe3f07d3b kernel_read +EXPORT_SYMBOL vmlinux 0xe454ced4 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xe465a9f9 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4870491 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xe48e005d xfrm_input +EXPORT_SYMBOL vmlinux 0xe4a61be8 md_flush_request +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4e54f3e inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xe4f6363c jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe51b5e13 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe545cd6a sys_fillrect +EXPORT_SYMBOL vmlinux 0xe546b6ed mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59463d3 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xe5aec542 block_write_full_page +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cd221f fb_pan_display +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe60fd307 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xe620be12 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe62745d7 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xe630c0bb deactivate_super +EXPORT_SYMBOL vmlinux 0xe6481642 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xe6499773 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xe65e6467 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe67e3b77 wake_up_process +EXPORT_SYMBOL vmlinux 0xe67ea381 journal_get_write_access +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6abd458 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe6bf307c dump_seek +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe719d7a3 __d_drop +EXPORT_SYMBOL vmlinux 0xe71b506c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xe72e2793 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xe72fbbb4 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe7524b6e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe75400ca pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe7561a72 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xe76abbfa fb_blank +EXPORT_SYMBOL vmlinux 0xe779dbc2 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe78e44c1 fb_find_mode +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7aa3850 seq_open_private +EXPORT_SYMBOL vmlinux 0xe7b6c43a elv_abort_queue +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e70768 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xe805fdda neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe82ce2b6 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xe84cb9ea sock_wake_async +EXPORT_SYMBOL vmlinux 0xe868e6eb linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xe8796334 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xe87d78ca compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe8986849 skb_clone +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b81643 rtas +EXPORT_SYMBOL vmlinux 0xe8baa3c4 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8cb9f17 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xe8e21c3e vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xe8e937b8 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xe8f1e0dc sk_reset_timer +EXPORT_SYMBOL vmlinux 0xe8f96492 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9189122 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xe92ae800 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xe9406160 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe956a5fb sk_common_release +EXPORT_SYMBOL vmlinux 0xe968ff80 __ps2_command +EXPORT_SYMBOL vmlinux 0xe971d4ac lookup_one_len +EXPORT_SYMBOL vmlinux 0xe98268e1 flush_old_exec +EXPORT_SYMBOL vmlinux 0xe999acd7 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xe9cd01a9 brioctl_set +EXPORT_SYMBOL vmlinux 0xe9d7b113 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xe9d862ae path_put +EXPORT_SYMBOL vmlinux 0xe9f175b1 inode_permission +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fa230b compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea18bada xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xea23bfe4 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xea4919ab __scm_destroy +EXPORT_SYMBOL vmlinux 0xea668d0b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xea729e47 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xeabab0db override_creds +EXPORT_SYMBOL vmlinux 0xeac8b900 of_node_get +EXPORT_SYMBOL vmlinux 0xeb1c4174 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xeb2cca11 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4d0b4c clear_inode +EXPORT_SYMBOL vmlinux 0xeb4f1e94 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xeb57087c mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xeb5cf320 have_submounts +EXPORT_SYMBOL vmlinux 0xeb74c54c blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeba82352 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xebaac1c3 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xebc4f766 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xebcf32c8 kern_path_create +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe03740 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xebf85dd9 d_alloc_name +EXPORT_SYMBOL vmlinux 0xec00eabf redraw_screen +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec2e4daa inet_register_protosw +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec42916d km_policy_notify +EXPORT_SYMBOL vmlinux 0xec479cb4 wireless_send_event +EXPORT_SYMBOL vmlinux 0xec4e693f bprm_change_interp +EXPORT_SYMBOL vmlinux 0xec86bd52 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xec985346 simple_lookup +EXPORT_SYMBOL vmlinux 0xec99e240 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xec9db384 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0xecec14b9 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xed19ca91 journal_revoke +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed3e04d1 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xed4cebab inode_only_permission +EXPORT_SYMBOL vmlinux 0xed5feb0b inet_frags_fini +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed81c76d mntput +EXPORT_SYMBOL vmlinux 0xed8c2954 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xed92c759 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xeda80997 set_security_override +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xede7f287 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xedf90716 generic_readlink +EXPORT_SYMBOL vmlinux 0xee102560 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xee1a71c9 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee86d6ae jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xee8bcc63 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee99f491 make_EII_client +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeec8d2d9 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xeedb828c tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xeef7a99c tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef13dd83 neigh_update +EXPORT_SYMBOL vmlinux 0xef15c8bf inet_shutdown +EXPORT_SYMBOL vmlinux 0xef311d06 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xef36a093 udp_ioctl +EXPORT_SYMBOL vmlinux 0xef818f76 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xef9ac314 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xef9b6072 of_match_node +EXPORT_SYMBOL vmlinux 0xefac384f pci_disable_obff +EXPORT_SYMBOL vmlinux 0xefb91ac0 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xefbff45c vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefc91095 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xefd78991 netlink_set_err +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe3242e netdev_crit +EXPORT_SYMBOL vmlinux 0xefef392e netdev_bonding_change +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0345249 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf03fa83b request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf05f64e1 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0c7afd2 phy_find_first +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10649ae giveup_altivec +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf111d05d led_blink_set +EXPORT_SYMBOL vmlinux 0xf114fe42 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf1557df5 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf1701dd7 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf17ddda3 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1aef72e scsi_print_sense +EXPORT_SYMBOL vmlinux 0xf1bea6f1 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d0ec41 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ebb534 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xf1edd80f ps2_drain +EXPORT_SYMBOL vmlinux 0xf1f465c4 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf20fc3e7 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xf224b7b2 neigh_create +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22b14d8 idr_get_new +EXPORT_SYMBOL vmlinux 0xf23a589f scsi_prep_return +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf2556183 fput +EXPORT_SYMBOL vmlinux 0xf28d6b55 __free_pages +EXPORT_SYMBOL vmlinux 0xf2b46e2b agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xf2fc3145 vfs_fsync +EXPORT_SYMBOL vmlinux 0xf309e9ee cur_cpu_spec +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf33a5fe6 put_disk +EXPORT_SYMBOL vmlinux 0xf34025ac mem_section +EXPORT_SYMBOL vmlinux 0xf342fe56 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf35814ef compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xf380a837 unbind_con_driver +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39cdcc3 get_fs_type +EXPORT_SYMBOL vmlinux 0xf3ab7dfc splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xf3ae15b4 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3c4a046 km_policy_expired +EXPORT_SYMBOL vmlinux 0xf3cbb9f1 sock_register +EXPORT_SYMBOL vmlinux 0xf3cdabb1 module_put +EXPORT_SYMBOL vmlinux 0xf3d41848 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xf3e4108b __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xf3ec68d7 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf41ce0f1 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xf4255354 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xf431a936 iunique +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf46f0e02 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4a3edbd tcf_action_exec +EXPORT_SYMBOL vmlinux 0xf4a9706e rfkill_alloc +EXPORT_SYMBOL vmlinux 0xf4afb73c max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f7e352 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf51f2b0d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf525ad34 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf594f80d ida_get_new +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b18086 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xf5c49637 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e5ec0d shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xf5e62c64 tty_name +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f4bca8 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf5f96df9 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf6042ce8 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf62971da get_task_io_context +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64d457a dev_uc_del +EXPORT_SYMBOL vmlinux 0xf669fcd8 sk_run_filter +EXPORT_SYMBOL vmlinux 0xf67a5f35 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xf6970d65 lock_may_read +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bc95aa writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6f1710c __vio_register_driver +EXPORT_SYMBOL vmlinux 0xf70ce83a dquot_scan_active +EXPORT_SYMBOL vmlinux 0xf70ef0f3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xf710de19 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xf7130fe9 security_path_truncate +EXPORT_SYMBOL vmlinux 0xf71b47d6 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73723e1 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf74dfcd9 fb_show_logo +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7976f5b mach_pseries +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b298d6 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7d0e748 md_check_recovery +EXPORT_SYMBOL vmlinux 0xf7fe4a97 input_flush_device +EXPORT_SYMBOL vmlinux 0xf7fedbbd dev_uc_sync +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf8022bfd init_net +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf8069ef2 secpath_dup +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf89330da simple_statfs +EXPORT_SYMBOL vmlinux 0xf8933df7 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf89843f9 schedule_work +EXPORT_SYMBOL vmlinux 0xf89f9222 twl6040_power +EXPORT_SYMBOL vmlinux 0xf8a8e7f3 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf8ab3d68 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xf8b3d02c bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xf8b8de95 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xf8bc4786 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xf9325b74 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xf95dfc02 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xf96d2ec8 giveup_fpu +EXPORT_SYMBOL vmlinux 0xf96ed2db skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xf9888600 skb_gso_segment +EXPORT_SYMBOL vmlinux 0xf9a065e5 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9db4135 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xf9f651d3 padata_free +EXPORT_SYMBOL vmlinux 0xfa105389 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xfa1cb81a put_page +EXPORT_SYMBOL vmlinux 0xfa44dd04 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xfa4d4763 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xfa653fd8 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xfa6dabb3 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xfa7111d4 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xfa926f70 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0e1dad __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xfb31c0fe tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfb405a21 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xfb5f846a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6d06b5 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xfb81a7b0 mpage_writepage +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb2ab18 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xfbb8037e neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xfbbb12f7 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfbc197f4 input_release_device +EXPORT_SYMBOL vmlinux 0xfbca6cf7 neigh_lookup +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbe6adf1 try_to_release_page +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3a2098 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xfc3afc34 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfc712c3d ata_link_printk +EXPORT_SYMBOL vmlinux 0xfc80e693 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xfc817107 skb_push +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcd66924 arp_invalidate +EXPORT_SYMBOL vmlinux 0xfce48e9b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf67667 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcffc491 mnt_pin +EXPORT_SYMBOL vmlinux 0xfd3a1dca ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xfd3cb8d7 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6a20a6 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd7352b7 tty_devnum +EXPORT_SYMBOL vmlinux 0xfd813966 set_device_ro +EXPORT_SYMBOL vmlinux 0xfdb5535a agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbfa4af read_cache_page +EXPORT_SYMBOL vmlinux 0xfdc308eb blk_stop_queue +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe09f427 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe29b85c commit_creds +EXPORT_SYMBOL vmlinux 0xfe303b5c netif_napi_add +EXPORT_SYMBOL vmlinux 0xfe3687d9 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe673066 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe84123d filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xfe895eba do_sync_write +EXPORT_SYMBOL vmlinux 0xfeb026ec i2c_master_recv +EXPORT_SYMBOL vmlinux 0xfebda391 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfedf74ed sk_dst_check +EXPORT_SYMBOL vmlinux 0xfee9ce15 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff093128 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xff172355 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2969e5 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xff446c2b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff81d2c5 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0xff83bbe9 journal_dirty_data +EXPORT_SYMBOL vmlinux 0xff8a3db9 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xff8c676d kobject_put +EXPORT_SYMBOL vmlinux 0xff8e9195 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa02bf0 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xffb313b5 eth_header_cache +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xfffaf730 iget5_locked +EXPORT_SYMBOL vmlinux 0xfffd8dfe xfrm_state_add +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x376ce317 spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x3bd05125 spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xd9427ce9 spu_save +EXPORT_SYMBOL_GPL crypto/af_alg 0x0af95965 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x51e2d211 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x60b67d84 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x899899e5 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x9327d26c af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa0848a01 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xae370689 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x7095176c async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf34d3cad async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xfed1bfda async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x3ed56852 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf8e1c8d8 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7392316e async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8c007bdf __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9b72717c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc5df7557 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x14b7235e async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xb291c6cc async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xbeb8fe50 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x112369ea cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x1a3eff54 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x2ad37f36 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x2e78d171 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x5748ff3e cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c7a19ba cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa92a849d cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xbb362302 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xbc66783b cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xef6ca153 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xfddb6609 lrw_crypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xfdaafc77 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x858ab73b twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x95234709 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3de457b5 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5ac8a22e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5fbde3ca ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x645b3a3c ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x645e3fb6 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x73b3ed95 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x784ad5e8 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8fd5c4f5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xabeb610c ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xafa760da ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3be315e ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb98dc9f6 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd6ead97b ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xddabaad4 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe91b44e9 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf29f8107 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf82ca0e0 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfff8cb31 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x2bb0bbb5 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x5a2d0329 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x032c42ef sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36634763 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x546fc031 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x59725a68 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5efeb8b3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5f19ddf0 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6177a75c bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6fd3947a bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x732af27e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0152321 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc4ccc81b bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd8b15099 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe00c5271 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe3c7cfe3 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xebdfe04d bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfbec2ed5 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x271b3ec4 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x296f46fb btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x40d4696d btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4579d83a btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4fcd300c btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5ba8e8c2 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7e2081f8 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9fe47230 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa9af7bbd btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfa05c4cd btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x117842b1 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e9b8ebf edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x23148842 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46ce7a65 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b321ecf edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6202af38 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x707485e8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x77a8d56a edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x785ac0b3 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87f2f0dd edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8ac03691 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9873625b edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa04d08b1 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa82d5dc9 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb763a360 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc8a1ac5c edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf119ef6 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd83ccc8a edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef3c405d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf2b7558d edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfaaf0676 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff0d5ef6 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x093bec3e extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x0da68cc3 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x1eab38f9 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x5df2b1fc extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6372a7f1 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x709597ec extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x73b00c03 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8cb3526e extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8d1f0091 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x96849fef extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa1092a3e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xcc10f4af extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x5caeac7c bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x961b15de bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1c065b76 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2662d61b __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaff1b224 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf70726f4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x02b39050 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x884f3c98 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x9eb7c142 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0aa9fc34 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x25d2aafe hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e2b3965 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30732d66 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3219a60d __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3baa229f hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x468cb40d hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58ed2f22 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59da304e hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5bc06d1a hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x79c66c14 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e317203 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8f6fa564 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa17aca99 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa194a0b9 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa300d843 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa9b64db3 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad09c451 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb622a360 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe8d44e3 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf00789e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbfd2e244 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc47b5e0 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf73ee1a hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6be1c8e hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf07ba35b hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf0d21749 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf1984f6a hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf403ac56 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xb639bae8 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x396ddf20 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x936ab274 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x326cd075 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4a8eab6f usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x7eeb2903 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x8d4beacf usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x071fd6e4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1384a971 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x47f43518 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5a7b2e29 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5f47e47b hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d7b8ab5 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90b2c576 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcce49f71 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd777e1cd hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd905ec2f hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xda231189 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe07d8fcc hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe8a6ada0 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x11b41abf i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1c7807bd i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x38c33314 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6768316f i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6908e1d5 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x77ecc36f i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x969e7dac i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb102f75f i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd28c2c50 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x01dc20c2 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x7f84e2b1 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xa148bf4b i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd2ad9c19 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x001178ab iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1a8a16d9 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39b21c7c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x552fd4cf iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63dd85a4 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7754fa98 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7945bde3 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9976bc0a iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba22a928 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xce066c2c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4f253c1 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6f41244 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb576738 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff37f9c5 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff460f93 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x85c1e337 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xb11626b1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8bbfa50b cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xd3683858 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xddaf3b76 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1a90fe6c wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2613497f wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3e4edc63 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x61117558 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6164f7be wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x767cdf01 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7caf6802 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7edbb3d5 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xadbb75c6 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd4ede453 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdbb51287 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeb1d6293 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x035e0f11 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3412ff1b gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3ae12322 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5e654aec gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x61f44c26 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x69d1764e gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6fcace5e gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8dcd146a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x987c4506 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9a81f942 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xae0667d8 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb4ea1b00 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xba9ba66e gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbebff134 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd7d9df8a gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xea98e813 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfbe2f7c2 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x20b19771 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x48133a39 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4f8d7bd6 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x63acbce1 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x736e2552 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7e6209ed wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8613ee81 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb16155bc wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xec830adb wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xfd98d412 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0x9808f147 wf_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xb8ed5b2c wf_cpu_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xcd9a18ef wf_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xceda69f1 wf_cpu_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_smu_sat 0xe05851d5 smu_sat_get_sdb_partition +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xab1582b1 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4a92a690 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x6df78076 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4b115235 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4d0624a8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x73bdb0ee dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x85c52d32 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x986c7d30 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd77f6c5b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x07803141 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3476d39d dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4035149a dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x45a8b35f dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x74d47993 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x77fb5544 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab03c775 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xca3c8183 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x0b3d316e md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x25cb0205 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5a2020b8 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5ace94d3 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x60cdf741 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x70a7418a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x77b7b93a saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x86aef1a1 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x86bb308f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x996402a5 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xae28e035 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb169a54b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x10ca2d01 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x1d6034cb saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x6177ec0f saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x7216d499 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc3fd4655 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc5c6a8c6 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xe16ce68a saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x0d0856d5 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x15607b94 tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x5a9d544d tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x5cd37e2d microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x8df905b1 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0xb62a7a49 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xbe7f74cb tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xaef5ff24 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xdfb4af24 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x31e7c9a0 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x1112ff8f tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xd061cfcc tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x8f399d07 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xf53b0794 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x7fa04ec7 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x42d50683 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0xa37b9ded mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0x6644cae3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x03c7d29b mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x070514db mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x138786da mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x1407f66d mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x18c87686 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x1ccec355 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x44fa8d26 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x4aec6670 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x4d540f29 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x54bad967 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x9507cd59 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x9d16d094 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa4ad5183 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xe34c8a9c mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf3bfdc69 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf3d05a7f mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xfac35655 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x27c524b1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4566ed09 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x48eedf4c smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4fffe041 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9c2e2b0f smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xaa36aa5e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb5655152 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb884b892 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6784877 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xce27bc98 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xdc6bdd36 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xde405d44 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe49603cf smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe562be8b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf2e25065 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf4667916 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8c578f1 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x1f205859 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x217a071b ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x70d08048 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xaba08678 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xdb832f24 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xe71b25ba ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xed226ce7 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x19b00628 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x246ef7f8 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3486b496 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6e109bab rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70c3c6b0 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x735b3c84 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x780e22cd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b9783c0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bbd1584 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x838728af rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8e0384ce rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x972b0784 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb28d4052 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc1e2f1c2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc50771ae rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe4f5e5ff ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe58a9a8a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2220909a cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x222c6443 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x40c318bf cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x51e04372 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x61ce7e9a cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x6fe280d2 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x868346d6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x92bbe6f2 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa27cfc10 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa34cbc83 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xb9a99ed7 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xbd55a03f cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xbd60c553 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc627d934 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc9dab94e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd58d628d cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe23babd3 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe5d8885a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf1549f38 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x8b7eb7ba cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0b978f1b em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0f7c9c7f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x100aea30 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1de74563 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4ec13bfc em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5066913e em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6d5d8e7f em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x77b448fc em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x789385dd em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x92174115 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xaa254846 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xc6748ce4 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xcc05d27d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd0bb54af em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x1ab4027a saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x33e3b6cc saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x5a21ce9d saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x9852d152 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xfe90aad9 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x3339725a tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x7823566a tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xc63537ef tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xcfdbc4bb tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x08f41ee0 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x528357bb v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x95a9d2b8 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa5909c54 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xb53fbd99 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xda1d8afa v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x2be1c13e v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x67361f61 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x6c2c1cb5 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x818bb99d v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01382639 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1ee362f1 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4a3fe853 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69436b56 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8f3176f5 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaee952d5 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb00984cd v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb5667765 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb5967564 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc5cc43df v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xd854a26c v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xdeddc35a v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0f51f279 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1d559028 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1fe5ffe9 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20a39f38 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x47d4fa05 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e1ea5a9 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4ebd28ee videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x50a9d8d8 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x642d1ff5 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6dbd3657 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7d7d4072 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x823472f6 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83e5e3cc videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x96dc4da1 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa1234e54 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa2a05141 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xac152571 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xb7aef9dd videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc9f098a6 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xca706d5e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xd7220d55 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe3af071e videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf38a8949 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xfe110330 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2417a6c8 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x5e8b7e3d videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x8211bb35 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xcadc4f4c videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x67ddc6e4 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x77b5fff7 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x8cc8996f videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x917d98ab videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa949e385 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xaddaa9fe videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xce8778a4 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xe0ad1d2b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xf0cdd5d4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x926a471f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xb3abbe71 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xfdd09d7e videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x007de088 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0c1e907d vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1b9816cd vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1e9da48a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x421dfcec vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x53041ffb vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5404a759 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x59c01bdb vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5cf6e9b5 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x707e7853 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x712147fa vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x87bce1da vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x961177c2 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9b027a47 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbb36700d vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdf16413a vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdff5a731 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x805bd7ac vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x840eba15 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x05a619a9 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x51b0625d vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78c15e9f vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x7dd7dca2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xae24e4a9 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x5e798b68 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x1e3f5d73 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x25461271 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3a33e0ed v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x41b059ec v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x53ddfaa6 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x59637651 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5bbe947b v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5f0c9850 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x615e2997 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6929fa69 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6953544b v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x71531d2c v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x73888489 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77b2e804 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8f22d46f v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9fb76672 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa244f751 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa898b3fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xab53e484 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xad4a3024 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb0c31d4d v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd57456a4 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xda437ba9 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x13cfdfc3 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x42262a55 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6bd62942 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x735ae30b i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb26b9a6c i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb7524a90 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xbceacb4e i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf1166937 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x0c81f0e4 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x88d7607a lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb56798e0 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0765b0df lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x28bc467a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x51ced852 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6b72f48a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa3b1f45a lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc72fbab0 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd7bacc3c lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f6fd520 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd3929995 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xff6a2bc4 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0bab75ee pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x32b0caef pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5a5799a9 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e66d46f pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x76383266 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x86eb0cf1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9fbb15af pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc143bd80 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe57f28e9 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf9ecc279 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfe6dde7a pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x142bb457 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xc0d987fa pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x31ad8c99 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x69542bcc pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8f54addd pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x94a47c8a pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe9ff1dd8 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1144132f rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x165423ff rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19014838 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x207a8f43 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28a97a6b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2eec0922 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x338ffc1d rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44c16bb2 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5463f2c9 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x641f32df rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x646b8b70 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x66b3c8b6 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7c07c023 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8fcd56ed rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x98b6c16c rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa02e0241 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa2554797 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa81bddb1 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb5661b3a rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe0976683 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeac243f7 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1914e386 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1bc73620 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x606b6f8b sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbf4da670 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc6d7ed0d sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00049435 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0889a1ba tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x21b71e35 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4bd8430f tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xae09f78c ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0c7f7a87 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x14c62742 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4599b4b9 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x824cca1c cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2640d1cb enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x40c1104a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5ed533a6 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6ddc1c76 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa7aebb1e enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf08d1018 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf1bebb90 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01ff7b6f lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0b549e56 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6fc28dd4 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7bc8c418 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x81ffc16b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x883e2ab5 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdb94b23d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xe141f61d st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xfac3a53c st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x01cf01e5 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2df92fbe sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x34e235f7 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x43308d61 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7d9fc4a5 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8995cf5f sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9d5e8ba4 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa46c3b6b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe17a351a sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6cb67206 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7aca165d sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7c42200d sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7fb570fb sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd758fc7c sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdbbd40cc sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x23f4c6c2 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x856eb4db cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xda8aae6e cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x18c02014 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa708157e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf7cf4d6f cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xfc7099b8 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0955bc3d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe72a5a55 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf32e32c4 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xd8db9319 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ad766e3 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13e6290a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15299b35 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x164e1380 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1671d220 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x28a8b72b mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2b89bcad mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3264005b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3348e6f6 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3478a5e0 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x393d0b30 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3dac931f mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x413844fb put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x43c25075 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x446b5a68 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51bfc774 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66a1526d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7410ccb6 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81509f8c __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83174c57 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c9af52b mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d56b2f3 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x961e5d85 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9fcee77a mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8b8d899 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa953432c register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac097435 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac60f660 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb46f531c mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbae401de mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce9de637 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd132bb38 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd8db2159 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdddf5973 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdeca1fba mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe440fd87 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6b91059 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf472d474 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa17779b mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1f9fd3fd add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2a8c426d register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7ecf34b6 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xeb0eaa66 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf68b48d4 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x464dfa45 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xe29dcc9e nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x65998aeb sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x80c3b694 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xec4bf624 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0416fcca ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2fe3c18a ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4b32a10f ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6073c695 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x610afce4 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x79cfc908 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e5622b2 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaa25fa1f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb54ae21c ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcbac7096 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcf0fce3b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd2603bed ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd4d2f013 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1168bd63 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x165c4949 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x95941b2e register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb48fd9f2 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x24651303 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2a11838c alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3fe60c11 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x44288439 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6bfd3319 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x91666dd1 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaa0a20b6 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbed11720 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc04041ad unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd74d15f6 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf756b0ca free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfd2331e4 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8eb006b4 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa97686e7 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb2a126f0 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf046b5e3 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x58c4b0f3 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6cd781c3 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb76b7ce1 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbf82bd6a register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01aef0a6 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0218dc1b mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08d49229 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a64512d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0aabeff8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ac9de99 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f0e1aec mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f2d72db mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x111b26d6 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12230357 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x202736f7 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20a2e504 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2412e25b mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a898b9b mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c370c5e mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dae88df mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30aa99ac mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31ee8b2b mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x377bf3d7 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f93838b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41efb78e mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x437371a2 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44a4aae6 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49b73e6b mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bc8787e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x503396d7 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5274090e mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54361187 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54bdbc58 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x568a5a61 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c54053b mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f8dc45b mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63583800 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6456bf8b mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a8699e4 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ec15689 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x753ac76b mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x790b10d8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x791f9c57 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79686399 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d3b2ad0 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f39b72b mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85055e45 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85597753 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c4040c0 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98188223 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98c7a76a mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9937fd39 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa401e97f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5856d3e mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9d0a01d mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa5026f1 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab6fbc49 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb812491a mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb398e20 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc15037cd mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1fc1b14 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc234f58a mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc291c9f5 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc399d379 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9201b21 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd52bc1b mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0154c86 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd34db093 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd726f485 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdae647c7 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4d8d623 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeceaf5a2 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef4c0f8a __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf263d46a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf918d491 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfae3f328 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff297f37 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff86a2da __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x15a29bae macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1c6379fa macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa877a660 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbc6b4699 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe0cd3d4e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xb22e7c1a macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xeaaa57a0 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x276763ff usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x496c4ce9 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x533aa1f9 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8174a1e4 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x355b911b rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x439819f4 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x58e5de64 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x64079f74 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x65a90d16 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xcf680868 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03541e09 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08c793f7 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d42f9bc usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1d654c7a usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x21620e2d usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2312d5dc usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a21da94 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2f8715e8 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3227b299 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x353e14a5 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4042af78 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x435a4b96 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4e1c2358 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5756bff2 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a87dc51 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7029dcb6 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8db1a682 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8fa59054 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb50f484a usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1447a57 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4e32095 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7b25bcc usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xea6f26de usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfeffeda5 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0f4edfe7 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x341b5851 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x346ec454 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x50699c27 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5ca863da i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7f9b6a0a i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x956d79a9 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0ca3a9b i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa2c0a31a 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 0xb3c3b815 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc85ab82a i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc9d888a9 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcf01a818 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd2b04c6f i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xefd305dd i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf2445128 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x9cf4ebdb libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1b682157 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2a41c13b il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7d2a1246 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8245ca33 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xfe524e86 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0198e8be lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0dd6df38 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2d08426d lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x318d0592 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x33e22c4e lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x42387461 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5c934900 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x643ed67d lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x662140f3 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x802a6c1a lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x994060a3 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9ca147a6 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc276370a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd859be2e lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe57bf237 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xea275170 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x32b8b3e3 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x349dd8e1 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3edcc871 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x43568d3f lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x43a6a7a2 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd74b85af lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf86f141a lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfbcac295 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x98e95d9d if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xa843574e if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x217366be mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x47eceeda mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x51dd9eaf mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55d941e1 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x57f1174b mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7051a7cf mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x840ebef6 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb58237a3 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb5fd1120 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc92dd95e mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe60ea9fc mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xed338f37 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfe0f6993 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x09493c37 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0b95bcfb p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x347fd02c p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x492c3465 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4a2ee662 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbf9738fe p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcc8e1bf7 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd3d04064 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfb1eface p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0ef15e81 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11ecd818 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2343c16a rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x26d7e5e6 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f3f7ed5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31a9e5a8 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x331542f2 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x386f2154 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e6b6382 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x47846929 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4799863c rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4dc8b07d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e17b00c rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fa9a1b4 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x64ab457e rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x68ee7881 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a93059f rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fa8ed42 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x70c1b705 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x71f1d1e2 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77356e3e rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7e34d29c rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x80798c9c rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8c70a07f rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x908cdb3d rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa0c6cb24 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2738550 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2fc9fa4 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa765931c rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad444fff rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad66a757 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae62581c rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1e10786 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb3d13540 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb7e17e47 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8f1bf26 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1e0e5f8 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1980948 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcd923e8 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0917966b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ba928c9 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c60c408 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x171391d9 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ac2d296 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x364759a4 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x388625e7 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b07be62 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43c2fca1 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43f072de rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43f8f60d rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45564c57 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x479aaf87 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x497554a5 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49eb8ad3 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56a6d3f6 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5cdcfc2e rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6419160c rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x660d8524 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66a9a262 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ab81975 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b5d4371 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ea96313 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x71d0b555 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x818b682a rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f3658fd rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98a44531 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a96361b rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa32588dd rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa47d938d rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6de714e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaff09ea7 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba3e3ca7 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbdca38d7 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3679658 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc50c823b rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1cb2ba8 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd2799c09 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd92517d5 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddf53c78 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf9e66f3 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5883ab9 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9cc5262 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5c907a2 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf809e8f9 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff0d9552 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x106e4fec rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x42cb8d18 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4c9b9d43 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7cedc234 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8acf84fb rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa85f93fd rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xce7a8cd9 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdfc00524 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf73b3788 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x09f523e1 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0a3138d4 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x259bfb8a rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3d0f2028 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x48fe1ccd rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7936a7d4 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7e6e34d5 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9ba6fd40 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9f3560ab rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xadec0a93 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb760f773 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbcf4e0f6 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd8400efc rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdbec2701 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfaf81c12 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfcaf8b2d rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x785f4c51 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc7ba4b84 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf62078e0 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x358b323e wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f610e53 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6260e945 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x788861b7 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8117ba29 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8c514e7c wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9219e8f7 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8511bc7 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7925e27 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce86ae8f wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdce57748 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfec7103 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe17c0f7d wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4961eee wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x5093a4a9 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x7bf20aea rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x8f000cbc rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa31a272e pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xded47ff9 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf9d7e9e8 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x003998ab ps3_write_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0bdf50c4 ps3_disable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0e622920 ps3_write_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x181e55ab ps3_read_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x1bcb88c1 ps3_write_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2abf1471 ps3_get_hw_thread_id +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2b339635 ps3_disable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x3c71a6b2 ps3_set_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x4a24996f ps3_lpm_copy_tb_to_user +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x50488f64 ps3_lpm_close +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x58e642c1 ps3_lpm_copy_tb +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x59c54782 ps3_set_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x5eca6711 ps3_get_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x60e3f0d7 ps3_read_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x6702a28c ps3_get_and_clear_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x69010c19 ps3_set_signal +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x70177200 ps3_write_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xa76ee01d ps3_read_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xaa190bc1 ps3_read_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xbb72a01c ps3_enable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xce72c9c0 ps3_lpm_open +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xdddfc980 ps3_set_pm_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xfae0ab68 ps3_enable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x0627c34d ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x0b1c29dd ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x6f6d905d ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xd2f19193 ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3e10eef3 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4396ab27 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x571cd0cb mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x62a6f309 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65316e55 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x96d2937b mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbbbd5009 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd61c4529 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0b63297e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2b132915 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99d46e10 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb77b6082 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf212edfe wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfba22a35 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xea1117e4 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02498f03 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x08e10822 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09f7103b cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1995df71 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bbaf725 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e166a6f cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33116d5b cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41ee1fae cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x43926187 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4e842e6d cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f687805 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50e8ada2 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57773d58 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f985e8d cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x692bdfaa cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6d1ebc86 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7cc51385 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83d91bab cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x888033e4 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8b17c83a cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f69a695 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x928714ed cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x928c506d cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b644bf8 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d95f0bf cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e20ab52 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa68ff77c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa242bd5 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xab0e8048 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae385b96 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb71c93a9 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7a7e2fc cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb970b842 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc352591f cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc51cdf65 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc7edfba cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd028c03b cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7930f96 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8550d5e cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3044052 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe57a5c59 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed8b9b54 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf29b0132 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2dae67b cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x03bf5337 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3dbb1222 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x516c109b scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x53c50a64 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9500c208 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe871c4d5 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x162315ed fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1e02f314 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2116a28d fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2ae118d9 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2da84283 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4082b17b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50ed49f2 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x55bc3a50 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6779c557 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x86c6cdb5 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8a63767f fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9bf6f0e2 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe65833a2 fcoe_ctlr_device_add +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 0x059bfd6d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13450195 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1b2efc02 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29797803 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b9a6f27 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d101d30 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2fd50eb4 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x38d79071 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f5e9b0d iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45bf3ee2 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4cad4c29 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x58cecd6d iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x58d1bd76 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c195683 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c8c5aef iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5cd6ef9d iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5faf8dee iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a1b3ea4 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ba6a92e iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bebd4d5 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e828da6 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9a3de86a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ba5a787 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d10cc31 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb129ccd7 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2b02ab1 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5d5c1bd iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb692f8bd iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd28882b iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca18b454 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce5c0cdc iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd08f87fd iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd311720a iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4c3f670 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda5d46aa __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf4bc560 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0be8978 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4cffd7e iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6b1207e iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe82cc770 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed16845b iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf2e67818 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfd8f908d iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0fb6d209 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28e50a81 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x333497d3 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x59ac1278 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x656b8dc3 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x663916b9 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69c03c11 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x799672e4 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8268b64a iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x90a2f3b0 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x98411124 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xabce0dde iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaf08c1b4 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc25b1a9e iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc8661b45 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf6d31f32 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfaea7c16 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x109aa6f5 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18b71ce3 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1c538b96 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e833193 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24863af7 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2bb709c1 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32829b14 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x38210e32 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4194d31b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x56619b65 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a0d08bc sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a97c066 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f3890ef sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x875a3f26 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x87fe7652 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8be5d3de sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9a55c6b7 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa0040058 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3848e73 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc0ae26b8 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc60adec5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc66ae641 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe369bf41 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1a45a8ab srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1b17e176 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4bc8ef2d srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6c050827 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x75924476 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xee3e64eb srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x250a1e18 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x57e5da79 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x69b071fe scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x83b6bc55 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x93b769e0 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9657c8b6 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd0506a79 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd9d47141 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe121b582 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x045475d6 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07fdb268 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0984012c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12959561 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16ffca6c iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1723f749 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x25f03075 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3205ba94 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3eb154e8 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f7306f1 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46c97f84 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4cbda5ac iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64e26471 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6dd265ad iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x736da9a4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81475bdc iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b569535 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9dd3c74f iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9a0c9b8 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xacd18029 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbeb78eca iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8e7349b iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcac0c1e8 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcca554e2 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd8945df7 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8046cdb iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1414ee7 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf15078de iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf307ff00 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf72014d7 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe8a7289 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xffe7a5a1 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x412e5982 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x827c60ed sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xaa60c54a sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xcb447666 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x09bf346b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1542d787 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3ad982fd srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdc936580 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf0718b26 srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x038d7366 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x16f0da02 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa3a8d35e spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcab7d157 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf0b6946f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf7ff4245 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x514d074c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x59cef9bb dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb8f55fa4 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc7ffc538 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf34ac205 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x52daed84 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x95b14f89 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x10de3fc0 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x51badb1d ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5e97174f ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb37416b6 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xce9e10e1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf91b488d ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2389dcbe spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x296ab9f0 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76848d0f spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x893b79f7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x910a74c1 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9548567d serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb9734474 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdd28e32f spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe3ba90df spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe46e046a spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x0fd55751 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x174e08dc sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4f01208d usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5589349e dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6b35c1f1 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7c6d0a9a usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7fbf51fd usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xac55cc18 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xae3323e6 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb678baa5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc5cea3d7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcf342336 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf06f5819 usbip_recv +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x475641af serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x8e7fbe21 serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x9d3f5796 serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xa5b515f4 serial8250_tx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xbc3ecefb serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xcab5a91f pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x288f1383 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x5f830e14 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbe53a57d max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbf620794 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xeaa8be4b max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xebe8bb3f max3107_suspend +EXPORT_SYMBOL_GPL drivers/uio/uio 0x02e769a0 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x26d23d4e uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x57731e22 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x166d340e usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x4b5ae8f3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x210e0722 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x257135c0 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x3706db00 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x6058fb30 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7da843c8 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xffbbc24c usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0f79a5a6 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x111669d7 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x33af25eb usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3455180f usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5d08a343 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaa40161a usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc14790fc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdbf8d088 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xff526a63 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x48060b9c musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x36685aeb tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x7a0e1da6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x066d67e8 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1707ef30 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3671d21c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x388ca7e4 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3f2d85b7 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x620ac942 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x62dfc420 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x63d1d581 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7227075c ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4b1c312 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4e4947f usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa6ec06da ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xad6fcd31 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbb934b62 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbbe2864e usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbc0be360 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc470865e usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc751d3fa usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe7ba329e usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0221c73c usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x074232c4 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d0fe262 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14a503dc usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a1622c2 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2daf0e9c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35c4b37a usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3cf64489 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4a1fbcd8 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58310c48 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5994a483 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59bd1cea usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6e9f02c2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x723d3230 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7690ad5f usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c6a1883 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8e8cfc3f usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb0790569 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd74baaa usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc90ea3fa usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2eea1fa usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe8b8e542 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0df13903 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x30e8bfa1 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b4427b3 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x602e7062 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcf417163 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x07f9b963 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x17f88bf5 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x453a896a wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46084c85 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x54afbd70 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x762b5a3b wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7c7fc5c3 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x86d970f5 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x99a57e29 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa8018401 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbb8a3347 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc2f39d82 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc8755558 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf6bfa874 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf925352d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe90e834 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3112aedc i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x448e9839 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdffc4764 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x11e6f17c umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2eed2f15 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3dd7b539 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7be3a46f __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x90326989 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9f0038ef umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xca8cbaa5 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd4bb20ff umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04bcb451 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05f932cf uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b49cd68 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d130d26 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x10c41565 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x22bc86c5 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x28fb2576 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3083fe4f uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c741b11 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e40f342 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x588c35f9 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5aae3060 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f59ee21 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c61bd4c uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e94e793 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71140114 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x78107d4d uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x790ac778 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x806c2c42 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83dee370 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e33e397 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e848466 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa339f391 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xafa27b20 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb17b5d0c uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbab771ed uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf3a81b1 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0d11911 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc2b8381c uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc34eaf1f uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc45ebe72 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcac9df21 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc2f3a60 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe3d17e43 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe455d561 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf64d0d26 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8a19e19 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xedfdd05c whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x086aa090 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1fa3589e auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x31694198 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3d644f8b auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6b61ac89 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7382f274 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7bbe0a32 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa06e2015 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbed062f0 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfe14af22 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x03e3a746 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x200e25f5 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2a93e73e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4fe0d23b ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7a70c563 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x93693250 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xab3783df ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x55f14533 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xfd881158 sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x524bfa7d register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x58e824ab unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x8c39c69f virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xaea47d97 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xe2fbcae7 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x12e54c60 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x36d52b67 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x40ea7b10 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x49012059 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x60d8305b virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6f81af06 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x72aac7a5 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x901dd851 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xaaac2919 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc1521d2c virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd76a0659 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xdbcd34b7 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf86b1876 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x27ebbd17 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2e692eec w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56530e2e w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7cd58f22 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7de0d4a8 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x804b6e43 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa2487a70 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xae695a47 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdc69d8cd w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x24947b33 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2c6b84bf dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf5224eca dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x04ff739c fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0x136555d8 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0x16390d96 __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x237211ea fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x27031cd7 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0x3d851e85 fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x40f4bc94 fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x467a9f4e fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x555d5d5e fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x68279170 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x728d9d5a fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x7e103a75 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x83523dbf fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x8a8e8a5f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0xc3ff862b fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xd2eb512e fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0xe7a9485d fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xee2b6aed fat_sync_inode +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0b07fb51 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x23f863c8 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3cef8d1d nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x435212b4 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8b4ac66e nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa0d9ab42 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeb8adfa2 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02418d90 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c4c2073 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d2355cb nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e79c8cd nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14917d55 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16ab7324 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1933d2fc nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a8191e2 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e374a2a nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f9e7d79 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x210ebe26 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2267726b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x232808cc pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25287824 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b4281c4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c02243 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37711a8f pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42b234be pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x481d5147 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x492794aa nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5644ec6c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61eed7ca _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x676989cb nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e5aea5f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72019634 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bfab65c nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d3f240f nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ebf434e nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fc5bef3 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d0825ce nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95a6934d nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bc6456f pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2ed1c4b nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9314080 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb97d27a4 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9a349f3 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbedc153b nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1479632 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1ea6457 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6b57659 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd983ec41 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc04f621 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddd12476 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6009505 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb681a74 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf18633f2 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3019ce2a nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa454bfe0 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x3b193f77 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x70b3c080 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8b28188d o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa2793493 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa46f0fb6 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc2b02d3a o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xcf3e2538 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x35475dd3 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x603c929c dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa04868ef dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcb646fab 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 0xee9b24e9 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf8a4715a dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x27849c4b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2b400367 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5d0f24c2 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x424ff763 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x629fa479 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x6df3b49d garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x8d24c265 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9cdbac65 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xbbc5ce7d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0xc6d3a1b4 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xe0459433 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x47f26a4c p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xcf679492 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x83f83a0f 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 0x66aefd5d bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x000e751d dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03886d08 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1151e7cd dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x12095a28 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1608603e dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19ad056a dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3212756d dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x410b85fd dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42811614 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x470edfcf dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a68889b inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b5092b7 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b5d385f dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6a00d1f0 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x739bf553 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73ba8163 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a839cc4 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f6bb7fb dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80f07b6b dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8a5e180c dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eff0555 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f217e86 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f997b2e dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xabd76db1 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaeee95ff dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0558723 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4f9984d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb4ef405 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc02d68a1 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc71c853d dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1b3da0b dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5ba1bc6 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfb9aea11 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfcc8be99 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd29ef7b dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd523e25 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1978c1ae dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3e13e6bb dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5344f7e7 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x56493619 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x58513508 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe103dc4d dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5faa67c0 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xcf126031 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd49ba77b gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf769bb5a gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x39ce0ddf inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4710d0c6 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x51f4f966 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7a1e77b4 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7e9912ca inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe107f699 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xfbf1f50e arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x69d048e1 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0xa6e77b4d nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x069d820d nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x83fab4d3 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xabfcd46b nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xd2baf3d3 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xff87e1f0 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6ee4a87c tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9fe2af45 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb3a5e98f tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcfd8cd76 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfd8e8217 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd2d56dfa ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e8cf189 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2f6888e0 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x311749af l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3dfc028b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7849fe99 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x851c4740 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9d11ca90 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaa20811d l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc8b1a304 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd89e9ac6 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfeffb0bb l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xff3b1a10 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72d83877 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d11f17c ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x805a6357 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x85f92f38 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbaa6f9a2 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc389a846 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0136bde ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd458af1c ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xff2527a7 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1b01533a ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3cfa428a ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x77b2427e 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 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 0xa2b1b433 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb944f342 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc218d3b1 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 0xcd936412 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe02fb132 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe7f02ff8 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7a3dcf4d unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8b0f946f ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa9f7b25c ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xdcdd8765 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x002196aa nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x026e35d5 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04da1765 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04dcba18 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09c06a68 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b236622 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e7c4e08 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f0033dd nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fe0f49d nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1691d811 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fd51c14 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cfb6351 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d1abd0c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3137bcd6 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3217f428 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x340e6be0 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x376c6cca nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c4a2c8a nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x556fd286 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a240102 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ed96f7f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f4dee73 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x621df730 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6457ffab nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65b930d9 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6736c300 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85c2df0b nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c09c83f nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c8939a7 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9675f633 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96dee265 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9dc62a8d nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa29e0ba1 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa395b2b3 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a77e31 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa89f3d3b nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaae586e3 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabaeadff nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac028e04 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad429c29 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaed78bd8 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb04ddde1 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4f589dc nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbaeca4c8 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1017269 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1a09419 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc20e0eb8 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4c2c579 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc893034a nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca558dd0 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdd6e952 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce83c362 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd078899a nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd411d323 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd41579ff nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd570737e nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7ddfd9d nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9e4ec2e nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xddf2ec02 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe93f4033 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeea57bb2 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeebd2e8a nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf580577c __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf67baf61 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8c73077 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9426a413 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xa568b10c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x5fc6477e nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1b78399e nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2fef6b37 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x416be543 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x552496cb nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7255e42a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x96f26a77 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa063290a nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd772d1cf nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe23a8671 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeb8dcb42 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xeb62eaf9 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x715ff8fd nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc6399f85 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc8b0b75a nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xeecccffe nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x7268a81d nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xad725922 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x25d28ef0 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2a7cdf7d nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2d6873a1 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4ef310c3 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x73226225 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x938494db ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa3f43828 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb16ccc35 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc598d2bb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcb9c9559 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd301eced nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe65622b9 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe79e5c6e nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x279b67b1 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x8aae1e3c nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0xb478f11e 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 0x66fa0afd nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x817d132d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x81e6aed3 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc41baf79 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdf5ab43a nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfad20e13 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xb7931c57 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x31ae6b3b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0b754707 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0b93e236 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0b97bb69 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0e14ac2f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x44acf112 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5e1c0095 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6a2edec0 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7c791abd xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x81d6c9f4 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x898e1b6a xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9a83156e xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9ada3c95 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa074c615 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc0ad65fc xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcf3c2d6a xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd144d83e xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3981b11 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0a43469 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf9175230 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3e1dd4ab xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x9a303feb xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0511f50e rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x1414111b rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x2675f0fa rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x26afb9cf rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x28825657 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2fb66fc0 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x335881b7 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x36e90685 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x3aae445f rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x502eae77 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x562c259c rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x5cb206f3 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x70a2f5ba rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x87ef6b16 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x8ca7f4f5 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x8d550048 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xa223cbcf rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xca964541 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xcc145afd rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xccd47107 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xe5874735 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xf2927b83 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xfcf7894a rds_info_register_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0c01914f rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xdf49b539 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 0x103ab4a5 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x34812c0b gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x353cf0ea gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x55cdc50c gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5f9cc823 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x708a3cce gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x885b9123 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa4a6445c 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 0xb809f29d gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc94d5a55 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xfe7ff84e gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0020d11f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x006c317e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00d932f6 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00eff041 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x038bc637 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04e9d11d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05f20b8d xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0622942d bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a19a381 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b1a75cc rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b83dec1 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c7379b7 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c7a92f6 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c901e4a rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2c09ea cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d8fc19e auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fd24092 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x111eed68 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x123ca0ea rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12f0b32d rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1379db56 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13d235f2 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x162ccaf9 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a16c640 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bfaa2b4 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d14068c rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d4d033f rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21341c93 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21aa0969 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2269cb7f put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24117165 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26d274d5 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x276ea6d6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b43d3db cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b485342 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d5f08bc unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dcf8a0e svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e912be3 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f82261f xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x304d8dde xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x321815d9 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b8aa67 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32fcb085 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x350794b8 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3590e069 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3695f15c rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37486a1e rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3787e2b8 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3798ebf6 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37996107 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b8b8520 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b90aa8a rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ce0bd7a sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e533b28 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40ba923e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41a15e3c rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4361edc6 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afd8c19 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e9c93cc xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eb88456 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f18ddb4 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f878bea svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50503c0e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53641906 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54fed241 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5781d33f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58b6bd6f rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64ddd5e8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68b429e7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c85a717 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb60d59 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ddbe20b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ec036aa rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f7777b8 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7075623d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70813bfe svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71e4578f svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x722c8698 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72bbfa3d svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7320c5c8 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x739ee7f9 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78679972 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x788edcaa rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ad90a7c svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7afecb4f _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bd085f1 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c4de7fc xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d23e160 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d602ede svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e04ebda xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eac9dfc svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fd92f1e rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x804cc002 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x819afb4c rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84333fdb xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x868f9979 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86d405e4 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87a0753b rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x886fbded xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8996eea4 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a263ee0 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ae3d203 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b947649 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c65d5c0 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ce095f3 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d6a1141 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8de9bfea xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e353824 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90da7777 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90e68ab6 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95369bde xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9536cfa0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97a524be svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986adc94 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9adcbcf2 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ae48d46 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c4c3df1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c8d10d2 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d1732bc xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa00dc660 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa09b62db sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa16055ac svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa754de49 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8479a0f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8fc01ee svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafb9c8cd svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0d8c0f7 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16b0be6 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1ed7d31 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3506352 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb48d79fd rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7fc2a0b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb95d46e9 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba4734f2 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb3f8d39 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb64b4a5 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd5c7d79 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9689b6 sunrpc_destroy_cache_detail +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 0xc1602cab rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc426b876 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6e48bee xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc85f2f61 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca4508d3 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdc050ca xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd16404c0 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4737836 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd79db103 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaab6a49 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbaf2514 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde88e9b5 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf2ab360 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe09c3f82 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1080977 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe141619c svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3540ba1 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe473cfc8 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe59c8715 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe62f1ea7 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ffad3a rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8d8b3a0 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaf3fe03 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb863d0c svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed062d4a xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef439450 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefc19a3a rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeffb5e3d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0efcfb4 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf502a262 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf579b603 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf75c556f sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd3ff63c svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd944339 cache_destroy_net +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0f3f2cf7 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x13ab0745 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x306b69a0 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x38b5bd1a wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x40129389 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x84584d1d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93a58362 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x98d0ee92 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc8008075 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd3822fe2 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfb253e52 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfbb0cbce wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfe965aac wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2b74e6f1 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3ad637ca cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4114ec4f cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5f615bd2 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x74fb21ef cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x854245a5 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x912b716b cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9deb18d9 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa2232a09 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc8341c1a cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfda8f9ec cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x21b206bb 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 0x379576d3 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5f03cebe ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6107fe08 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x960c2455 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x14125406 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x16a32996 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x531c99a5 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x54fd47de aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6d66ac71 aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x70010931 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd87af386 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd9bf7bf3 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe56c59f9 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xede66f88 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x0c0960a9 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x10e38a53 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x22fd719d soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x62496ed8 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x91d18d4e soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9bc8b62b soundbus_dev_get +EXPORT_SYMBOL_GPL sound/core/snd 0x5114a6a6 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x82059068 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x8fee1301 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xf2bba4c1 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xfe57882b snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4b4c07b3 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0684b9a6 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2dbb2d13 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x712c9f18 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x99fcbb21 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xaf7286be snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xea3b95d6 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00c0ef00 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02b0d85a snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cbba5bf snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e3e40bc snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ebc31f9 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f2e5e50 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12a90204 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ca2a3d snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16192302 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1743c8fc snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18acaa25 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x190aeb73 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x190c1239 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c0b9afc snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c3f5df2 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e23cf9c snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2776aa4d snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x289e5079 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x291db4cc snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a265055 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a49fb14 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b1b8ba2 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e2934a6 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ef5c359 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f5046ba snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f5e1503 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff79f6a snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x303d11df snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3866afe2 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39b74693 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a0b687e snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ea54a91 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ff0fd6b snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43f0e254 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44d87aeb snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45ecd8c7 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b9fbabd snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d7b2e2a snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d876c54 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e71884b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5135ac4b snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52e38b12 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53947b94 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x585a0a86 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59e8fe81 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c7785d1 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d561601 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6571b175 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65b51bee snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6883aecc __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a605329 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b4f1ba6 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ced05a1 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x717907b9 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x719602be snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7332b9e0 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x735dc16a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x751b1352 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75c09e0e snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x770f92b3 snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77598cd7 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77f1d254 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78089acc snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a43b800 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e27b1e0 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f942dd0 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81db38ed snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a3f8e7a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b775faa snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e6aeebf snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f189e02 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96daa112 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9774834d snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98c85031 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b9d3cc9 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bc2f86e snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c502732 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4e13906 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9aa49a4 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac8b5ce0 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad434c4a snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae611136 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0028b07 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5f71c7f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb76536a7 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8f5dc27 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb94a0ee1 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb275d2b is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbf3d68a snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe4c291d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc24800f8 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4f78d18 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5dfc4fd snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc61e4a93 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc94b356b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc970cdbc snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce44a8ad snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd018c99e snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3a45334 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd48cad75 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4d499ef __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5b09294 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7122c55 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7335402 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8f4d962 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe09f840a snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5410011 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8458590 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96a2cf7 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb08fc09 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef041ffd snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeffbf657 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf393434d snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a91b68 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa3ef972 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbc5cad6 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x5492e6a7 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xa651af42 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x6450f2f1 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x9ae063a6 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x48b26988 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xbe97bc47 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x245af42d twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2e1977bd twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4e0d8ba3 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xac866472 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xaf45e20c twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xcf615c23 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x72443a9a wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8f5fb383 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9888e9dc wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9e1e2a18 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb91a9d54 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc29fc7fd wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc89d56b1 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xfb43a416 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x0db89422 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xc3303211 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x9631d309 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xb9de86f3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x8d6c1070 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xed77bb60 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x65e998af wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x055b2ede snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058dbd3d snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0747868b snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09d1cc92 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1358ebfa snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14930ad1 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14f359c6 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x166c7e90 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175330ad snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17dccb96 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19dc5178 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e4be65 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a6e55dc snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b2f2edf snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b03c32a snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c3c8ce2 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fe20ecf snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30f78d95 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31ae5f60 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3339d237 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38bda0f0 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39c3eb4f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b5afc9a snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e6deee7 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40a1c009 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41599819 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44a68c49 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46da00ad snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49291350 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf4eae8 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c8e2de4 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fbc8a5b snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50050b33 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59ba5972 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b8db7ff snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ca354be snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d1e1789 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60ed8de2 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61ef688e snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6575e78f snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x657a2ef0 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6953ca8a snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a7b7fd9 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cfc3540 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70d1e08d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72151221 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72eb4140 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7517ae27 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x783feb02 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x789e04c5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78a52476 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7debaf37 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e7dd0f1 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x845027ad snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8616f251 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89cb9f14 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c15673a snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e6cfcdf snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0f4aec snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f4866a4 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x905dba6b snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x906687b1 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91abb918 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x948e6d45 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98fe36d6 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0a8d17f snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa196e6ea snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5117eee snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7a5f250 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabc7fa72 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac2b7c3c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xace4741a snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad317a5a snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad5be996 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae46c673 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae59d899 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae6ced5a snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaecd0d06 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf0b5532 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafc0174b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb03a1c8d snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0aed638 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb15a58b8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3fb7c77 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb53e857e snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb860d1cc snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbe57d49 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbccbb4f0 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd00b3de snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd2ea0bb snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc82d55a4 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8d8f78a snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9047094 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcafcd785 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce1c3db1 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0bb6c8c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd45f1dbd snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd56001ea snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd647f43b snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6f51612 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda74ccea snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac8f059 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc2431ff snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea007f2 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdec16aa8 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf3a1393 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43d21d3 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe48a81b7 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe49c545a snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe75e6f04 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7bac860 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea9eb645 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb3ee2c4 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee07e59e snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef868c45 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0b7f639 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf281f031 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2b5bba7 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf325e392 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf36393ac snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf52d838f snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6586131 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc0ac12b snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc26647f snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe3f1b1f snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x00078155 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x003dd7a4 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x0040c5ae xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x00540deb usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x009b3ae0 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x00aea614 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x00bf3427 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x011ee48c rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x013e709e ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x015988fd watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x018c7ed8 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01ac5812 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x01b8eef9 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0207a881 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x0219425e blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02b12e41 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x030b2af5 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x030c6906 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0316607b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x031997cb usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0326dc83 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x038cbf57 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x039c3498 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x03be0903 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x03cdb56d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x042c1a27 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x042cb2fa ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x04516202 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x045298ec crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x045d84e6 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0474965f ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a6dc48 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x04b70ec6 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c65cb2 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x0504123b __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05405a52 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0556a5a5 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0566350f sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x056bd612 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0593be5c ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x05a95ef6 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x05ab6a5d tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x05ac938d dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05c6c212 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x05d6a2df ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06699296 user_read +EXPORT_SYMBOL_GPL vmlinux 0x067d3339 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x06b34e41 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x073c523c usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x07523d99 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x07542c16 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x075c7ea6 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077140e9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x077c467b usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ce6f2c pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x08035d66 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x081c2a2d spi_async +EXPORT_SYMBOL_GPL vmlinux 0x0823da27 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x083e6450 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x0876986f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a8869b rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x08ab368d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x08abe712 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x09099900 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x095255f5 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x098eed14 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x098faec6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x09bae693 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x09c654b0 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x09c664bd yield_to +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09f0cb5e driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09f82a60 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0a169cbb fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x0a17411d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0a26828d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x0a288348 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a2f7e0c skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x0a3bcae4 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0aa4c888 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x0ab3d9f0 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x0ab88e79 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x0aca7c4b ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b411dc0 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x0ba0c7b0 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x0ba7e571 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bc803ad wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf79bd4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0ab4c1 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cd651 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c6e18f3 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd10a4e work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d04b4f3 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x0d12c257 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0d1fc4b2 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x0d390e53 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d7f0c51 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0db02e19 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0ded3787 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0e219f82 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0e250e69 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0e294806 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x0e2e9b39 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x0e507e4e ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0e7ce634 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x0e9d6aba inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed89b08 get_device +EXPORT_SYMBOL_GPL vmlinux 0x0f0400fa inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x0f46e9dd uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0f54e722 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x0f5598c5 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7f16eb tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0f8b437a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x0f92a1e7 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x0f9dae1c set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0fc1cd47 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x0ffa23df pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x1000d977 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x100d4782 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10266562 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10a15a8c ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x10d8aed0 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa1b7b ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x113ddc0d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x11439756 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x114b631a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f5e34 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x11a5c360 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x11bda8e3 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x11bf1a04 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x11c3269a devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11d18c2e blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12314d59 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x124a057e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1257515a isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1299cfa4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x12daf939 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x12f33273 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x1318d9bd digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1333d8b3 ps3av_video_mode2res +EXPORT_SYMBOL_GPL vmlinux 0x13401a1e adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x137cfaeb stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13b69a90 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1402aa8e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x141fb216 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x1422337c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x145b2d7e bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x1471fc5a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x147fde64 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x14b14f7b blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x14c25ef5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x14f722e4 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x14fe0c56 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x15071ff5 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x150b57a0 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x152dfca6 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x153074bc debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1537a291 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x154dc4b9 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x155cea9e usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x156423eb elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x15749760 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x15809f4e inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15ae3b99 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x15b06708 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x15c47a0c mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x15d16c40 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x15d4c253 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x15f64ddd spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1640ee50 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x16447e8a blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1697b5eb blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x16b1e3e6 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x170719be crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x17174fda pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x1724d2fb usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1741f93a da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1751ae40 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x176bf0c3 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177fc6f7 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x17a6045d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x17aca7cf ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x17b03d01 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x17c8ccf0 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x17fb0066 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x18008157 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x180b7183 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x183fd738 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x185c4c2a rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18816c76 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18b75fc9 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x191d39f8 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x1936817b rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x193f6bd5 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x1955ed36 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x195b7f6a d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x19791db7 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19efe2ac blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x19fcbf93 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a2f8c4a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a380606 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x1a3fc1e5 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x1a69f6cf ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1a6a75f6 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a938b80 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1adcd0dc power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1af8e3d8 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x1afa7cc8 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1b584381 ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x1b8055ad get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba61ce7 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1baee217 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x1bc7e84a relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x1be0ecb5 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x1bfb3e06 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x1c1cac15 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1c39e7b4 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x1c470e09 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x1c4de4a0 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1c55dc8b cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c796003 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c827e00 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c964b4f spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x1cc4b24c sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x1cd1775b rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d21c5a4 ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1d327bc4 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x1d5609c8 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x1d5708e8 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d92df4f sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x1d9496fc of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x1de24975 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e02bc54 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1e0e8a76 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x1e0fef14 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x1e23162e tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3b656c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7e9c82 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee4465e sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1ef74eb6 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x1ef80259 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1effbe8b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x1f07e3f7 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x1f4e4cd6 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1f6a9532 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb86c3a tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fd8eed1 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x20562bcd device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x209e1ffa tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20d662b8 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x20dc9405 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x20df0afe fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211b315e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x21adb2d7 ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21d844c5 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x21df65de blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x21ff7581 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2206985a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x2212b2f6 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x22144f54 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2224960f crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x2225c421 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2240383a cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229d0ab9 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x22c6a10e usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x22f4304b skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x23200d8e tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x232c35ba stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2334adf1 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2391e998 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x23ae8477 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x23b0eb5c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2451e060 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24dcd769 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x25113317 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2542d08d sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x2572186a ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x25a67a48 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x25d21082 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x26031657 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26541881 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x26576139 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26a2b474 smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f03743 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x273504dd inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2766aa37 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x27973590 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x279f40d6 spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ed50e5 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x28609a93 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x28627c6a cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x286beeb6 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x28bbf4cd sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x28bd632f sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x28c525e0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28d91187 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x28f80e77 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2904fad4 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x29151269 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x292c12d2 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x292fca93 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x2936cffe md_run +EXPORT_SYMBOL_GPL vmlinux 0x29456f4d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x29b5988b root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29b7a1eb cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x29cf1d7c subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x29f08a98 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29ff118f tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x2a272538 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x2a5ac87f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a89c0eb ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x2a8b5171 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ab9f394 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x2ac416e0 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2b1d611d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2b55a2ac pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b8f372d blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x2b938eea ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2be6d351 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x2c0b168c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x2c161e2e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3b3293 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x2c448c5a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x2c5f450e i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8a581d crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ca6a203 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x2cac5f48 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2cba57e1 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf7f8ea perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x2cfab7ce kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d198791 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2b8644 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d3dc798 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x2d481bbc get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d72c291 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x2d9b5a6a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dcdcc86 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2e125e3e crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3f55f5 pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x2e423d9e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e90f212 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2edbd63f __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x2f255a19 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2f28c06d sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f7d45a1 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x300cef84 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x302ffe64 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x304a51f7 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3050c5cd locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x305a37b1 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30de97cf debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x30fcfbc6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x315eaa18 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x3191b756 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x319589b5 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31df633a xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x31e03236 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x31f8c75d ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x32217075 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x33215c32 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x33388716 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3361e0ea devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x338d2b4e tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x33b1ad72 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x341593c3 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x342e0dac fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347a13a7 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3485be07 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x34a7bda5 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3537d6a1 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x35908140 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x35d2afe7 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x35da0e5f fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x35f3f381 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x35fc8487 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x36425ab0 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x36541dcc pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36994eed debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x369a8227 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x36e5ffa5 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x36f6f912 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x371cf4da cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x37303c06 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x378a8ba4 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x379cfaa6 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x37d30761 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x37fa7015 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x380927e0 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38432181 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x384f984c regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x38549643 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x38728bab hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3872f425 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x389e805a alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x38a30bef stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x38b0a17c pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x38ebebc6 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x390312eb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x3918a87e hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x392411a2 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x39321793 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x395e8d49 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x396b4f70 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3987a512 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39a8bb1c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f4869f rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a041f01 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3a1b669b cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5d5ae2 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x3a6a0aa6 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x3a7e52a3 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3aa94df2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad1506c __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ae6fc7b device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3af8a9ee tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b32637f dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x3b3c42b3 ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3b4df0d5 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x3b8ec694 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3ba449bc swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x3bb03bcb irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3bb0d325 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x3bc5b062 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x3bc81054 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bf8791b regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c0d0622 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x3c431a99 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x3c66fc3b wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca41f8e power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cde4bf1 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d0acd9a nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x3d3159b8 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3d348f07 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d657ef2 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x3d721eaf __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x3d84522a pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3dad1fcb kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x3dad9166 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3dc7062b tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e04b074 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3e121eff crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3e125240 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3e195ac5 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x3e196760 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x3e31196f wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3e41b2ee relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3eb9a8a7 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x3ec14135 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0e0f88 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x3f1a15c1 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f76fad2 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3f8a7a1f pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x3f92bfc8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fcdbce2 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3ffe56ef dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x400e01bb spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x4028a242 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c0f26f force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x40c54fcd enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f4a945 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x40ffa09b usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x41425635 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4182d816 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x419dec3e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x41bf4de9 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x41df9819 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x41e94bdd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x4201691c ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x421ef45e __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x42302df2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x4231ab70 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x423d8ea5 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x42430359 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42dbefed ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x42ee0b32 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x430b7fea device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x434907bc spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x43509f38 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x435d5def usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b1142d scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x43cd337d spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f8e4d9 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x442c1a48 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x442e3f1f class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x442f6f41 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444c5579 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x444c662d pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44e73822 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x44ed614a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x44f58940 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x450c209d device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x451761f1 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x455d4410 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458dfd4d scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x458e9ee7 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4611ed5c pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x461b7a72 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4623c7df register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x46669315 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4674622a ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x468f59fb inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x46a7708c wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x46b218ab crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x46c46a51 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46f732de queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x47046fbb key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472826ae irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x47309ed2 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x47558c77 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x4785f87e crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47b78b07 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x47ed3c35 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x480a4f3d debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x4827d24d vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4842a64e regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x485e32d4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x489b09a7 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48dfaa2a cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x48f28925 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x49782411 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4a160bf4 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4a16d393 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x4a34825e proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x4a38c348 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a92f520 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4af61352 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b2b40a5 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b382136 input_class +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4ded30 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b70619f inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x4bb56acc tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bfea1fb flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4c0063ba pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c0fc267 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c3cf899 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4c71580e tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cb1ac5a sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4cda6d07 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4d1333e6 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d2340c5 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4d2631bb rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4d2adc0c pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4d558337 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x4db4ea0c pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4ddbc993 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x4df8845d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x4dfb5e36 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4dfbc5ff dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e289b8a i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4e74f4e9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4e8cd6e9 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x4e970c91 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x4ea214d4 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f018b45 of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f51bf09 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x4f6a8855 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x4f7a1432 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x4f9a2235 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4f9a33a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x4faddf5f __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x4fae1f2d of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff6d006 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a35b6d bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50b8b5bd rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50dfb011 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x50e6d9f4 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fa7a9d wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51447d05 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x51537bfe rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x515a594d bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x517b01be i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b5ac4c __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51cd40fc cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52129cce kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x52191d51 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5239240d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5244e98a inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x526f76c7 device_del +EXPORT_SYMBOL_GPL vmlinux 0x528d5bfd sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x5314ad2f page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x532791d9 user_match +EXPORT_SYMBOL_GPL vmlinux 0x5338f86c __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535e6601 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53d921d6 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x53e7c7ac debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x54070b58 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541d0bd6 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x541da93b blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c9308f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x54d4bdb3 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x54e310f2 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x54eb6821 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55034160 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x55191a4f debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x552e3227 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x554e0f69 dma_mmap_coherent +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x558e494c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x55a69ada __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x55d17f47 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x55dec869 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56955c28 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x56aa4bad i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f6f07c crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x570ff475 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x5711029b platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x578d7e77 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x579166cb device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c4691b queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x57d23fd4 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x582ce0bc ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x582cfdf2 find_module +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x58457379 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x585edb84 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x5869d882 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x5878185a pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x587a835e ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58e3ee4e dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x58fd2b14 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594eb8d0 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5952439a unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59dadd3b ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a368737 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5a426735 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a62c9c0 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9811bf pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x5ad349bc crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x5aec3c51 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x5af2a664 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be8c80a platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c0c5589 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5c27b423 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5c2aae4a class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5c5174d1 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5c568b6b sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x5c86f685 eeh_dn_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x5c981ae4 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabc9ba crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x5cef4a98 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x5cf0264f pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d25ec5b platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5dc4f2dc of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de4fc35 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x5decb81d spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e16cc3a wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x5e2090bf inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x5e2c5b9a bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e66630e pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x5e73cf95 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5ed3680c kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x5ed929ef tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x5ee05d09 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f51f59a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5f6530c3 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5f779f17 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f9f2879 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5fa375b9 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x5fc58430 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5fed3ce3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6004242a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x60166647 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x602a993b rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x60369dc0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x60413492 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605822a8 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x608a974a ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60e147b8 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6130e589 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x6134815f crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x61522102 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x61926965 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61d094a5 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x61e15b87 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x61e33ed7 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x61ea0881 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x61f236f2 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x620d9102 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x620f1763 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x6224a9c7 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6231e615 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x62680740 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x62b1af59 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x62e6c22f __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x630e2cf2 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6335b97f __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x635fc84f ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x6377d40c register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x639bcbc2 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x63a9871d blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x63b0d7c4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x63b2dc48 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x63cad902 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x648580e5 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x648e682c pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x649ab39c of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x64a8bd5f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64e863bf blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x64fc5982 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x64ffa402 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x650f829c xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x65147685 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6540e2f1 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x656c3504 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x659c0f2b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x65a0b74c __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x65a62144 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x65b93c01 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dbd34f module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x65e58f08 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6639384f hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6685c934 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6697fb75 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x669f21d0 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x66a20f74 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f267fe ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x6753711c regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x6776e87b account_system_vtime +EXPORT_SYMBOL_GPL vmlinux 0x6794ba40 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67bcd817 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x67cb3bf5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x67e7dd59 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6805331d platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x6813c980 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x682a04a2 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x682e5dcb agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x68429b7e usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x686e43e8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x6887054e devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6896d639 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x689aea0c cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x68fe4907 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692de3f1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x69328f79 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x698cbdc7 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x69af4992 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69ea205a tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x6a082c73 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7dc4d5 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x6a80d4a9 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x6a832114 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a966670 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b66673f crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x6b8ef5ef cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6c109a1d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6c442260 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c7ca1ca blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x6c7e0303 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6c831bf9 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x6c875c0b spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cdcbd2a __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x6cefbd04 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6d10241b pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d6d1273 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6d8a65b5 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6dba7721 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6e1595a0 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e38e20a ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6e5d81a1 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9c6188 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6ee9f1da unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x6efb54ca inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f68bad9 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x6f89da26 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6f9ea6ed adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x6fbc719c pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff4e8be ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x70512233 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a181f6 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x70a78bce usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x70ad3fc6 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x70b81216 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e86827 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x70e96fa3 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x71268db5 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7159e7e6 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7186435d fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x71b01ced clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x71d2ddfc init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x724ee60c dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727df288 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x72889d5e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x728ce3e9 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x72a93e9b device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72bf65ac xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x732fd663 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x73546799 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x737c484c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x738977cf mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0x738dae87 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c0d625 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e03b9a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x7412c4fe regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x742d7a69 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x7434aefe sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74567a3e usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x74808017 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a7400a wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74be7e4b crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x74cda3e3 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x74d198f9 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x750c1ddf scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751c254f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x752139e5 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7563a430 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x7572b2a2 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75859046 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x75a0f165 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e6e037 hash_page +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x761fe0a6 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x763332de cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x767c3892 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x76821e72 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x7685d679 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x76da091a pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x76db895f srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7758a2af md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x775abbe4 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x77bf04c7 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x77d382b6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x77fdb605 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x78096b7c ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x782b2ab6 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x78379515 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78e45ceb wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7900c16d ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x7901a95d pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x790f6ed0 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794ad4fa ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x795da166 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7999f296 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x799d5c49 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x79cd1219 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x79f84add pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x7a251504 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a90d1fc map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa027e6 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ac4d22a sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7acf8146 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af3214a of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b0f2127 find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b356d8e wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7b471981 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b8b39e7 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x7b9aaa79 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x7bb9398f platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7bd9ff38 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x7bda18bb mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x7c0d296f spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x7c235886 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7c861b18 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x7c95a43e task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x7ca27a5c bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc4a542 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x7ce61f01 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d091a59 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x7d1294b4 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x7d4e4d7e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a716f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x7d8dbf30 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db4b3f0 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x7db83dd0 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7defa546 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e8e4d72 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb721f2 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7eca4b17 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7edfc5f6 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f2483a3 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f2fa695 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7f46c8b2 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa42426 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7fb4bc17 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7fd30ac8 css_id +EXPORT_SYMBOL_GPL vmlinux 0x7fdfd073 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x7fe3e7d6 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x801c72ee sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x803c34bc remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x803cb975 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8048edc8 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x80649228 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x806b925f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x80809890 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80cc5e48 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8134742e crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815e904f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x81eb8b7d crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8212b036 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x822515e5 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82964eeb page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x8298b201 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x82a48f9e pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x82adf995 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x82bf1606 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ef482e blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x83029e1c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x83149254 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83c1b364 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x83e405d4 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x844f2a8a tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x844fcaae kick_process +EXPORT_SYMBOL_GPL vmlinux 0x845c7d77 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x84608817 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84a375ca use_cop +EXPORT_SYMBOL_GPL vmlinux 0x84e70dbe __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852c0cf3 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x85393081 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855423f5 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8564d703 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x856b06a6 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x85998847 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x85b19156 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f215b3 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x85fac9be filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x8607ae07 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x8608c6e8 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x8611092b pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x867002ec rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8697736e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x86bfae19 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x86c26074 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x86c3a3a7 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x86ca6c79 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x86ec85dd usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x86ef4d60 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87038c7d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8782f3f6 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8796d5ba ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x87af9a1d pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x87c8d758 tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x87dda3d5 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x88008738 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8816b6e2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x882368be fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x8876745b __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x887c1a8c stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88e1363f __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x88eba814 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x88f5540c usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89592582 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x896ab540 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x899f197c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89ce4639 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89de47d7 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x89e14070 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a14a747 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x8a2587ef ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8a2f3399 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x8a410355 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x8a478c8a pSeries_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a85f388 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x8aa7725f shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8ab52b91 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae3ae12 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x8aebcd81 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8af8727a rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8af93166 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8b090530 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8b14db3d class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b3586a4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8b66f67b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8bc0ad1b uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x8be4e744 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2688eb ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8c283411 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8c30a719 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x8c3a867f ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x8c3bccab agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8c785f7a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8c7cf6d0 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8c7d7103 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x8cc32c1f tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8cd4c4ff dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x8d14f8ca pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x8d17ea45 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8d22c055 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x8d393aa8 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d53f4fe ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8d89fcb8 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d92637c unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8d9a7285 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8db00e6d __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x8db52929 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x8dcef93c pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x8ddea264 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x8df53a40 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x8e493837 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8e4f8389 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8e682ab2 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8e9d12d3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8eb6b00a rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8ee8cd6f datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8f01dfcc inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8f3268e0 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f656b27 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6e2b45 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8f783679 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f861bff rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x8f957f12 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8fec22d9 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x8ff3b2c3 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x901489b8 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x90376315 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x903c40d1 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x90416ee5 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x9062023f usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90673390 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0x90773f22 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a3f348 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x90a7a44d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x90ac8f42 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x90b8fe35 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x913fcee9 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x9164e7b5 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919eff1e unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x91bdea43 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e1f1b0 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92160367 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x925f7b0b mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x927d364a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x929a8a43 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92e8d7be inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x930316c4 slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x935bb3fa regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x935feda0 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x937d397c get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x941c3b5c pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943523bb part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x944bd8a3 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x944efe8b ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x947c4a6d ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x948ed64b get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9509aed7 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95681bae apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x956f802d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x95887a53 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cbef51 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x95e9cf56 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x968cc010 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a11785 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a2fc0d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x96cbcca5 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96d1b55a ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x9713ac34 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x971c677e sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x973517b5 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x976a38e5 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x977625cd disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x97a847d8 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97b9ccdb perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x97bccc01 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x97d92008 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x97f89df5 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x982b4b57 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x982cd711 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983cdc26 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986a265f platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x986f9d46 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x9881d99c regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x9885708b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x988ab21c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x98928bb2 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x98a213ff rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x98c3dfb3 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98e8d28e hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99c0717d crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x99c475f6 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x99e95fbd usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2d0d4b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4b550b dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x9a6853e4 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9a697be3 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abe843e wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x9ac024f9 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae862a4 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b3b737f register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x9b51e7f7 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x9b6e0634 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x9b95b0dc bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb4d6b7 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x9bb69df4 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9bc1b0a5 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x9c3d3f02 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9cc099eb scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9cecd40e spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0x9d3fd717 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x9d7e684a __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9dd0c584 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9e332da5 user_update +EXPORT_SYMBOL_GPL vmlinux 0x9e532c5a register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9e9d186e md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9ed1e6f1 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9ed5dd6f cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9f0eae4f timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f799c13 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9fa637ef sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x9fcbd9f0 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa02dfd56 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa03b0d3b sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xa0553b46 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa06ec310 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa0a152c2 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0ad236c device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xa0dbc275 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xa0e4635a md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa1141d8e da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa11a3da2 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa1310e04 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa14129e2 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa14cba82 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xa1c8d841 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xa1dc93e0 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xa1e8f59f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xa20b210b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xa23b9a04 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xa244ce37 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xa2736e45 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xa28d11da cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xa28fe05c gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xa2b56c89 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa2bc56e5 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xa3060226 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa36c76f2 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3786f8c dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa3797dd9 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a15f30 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b20a8a sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa423bfd1 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xa42a58ea rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa4308ae7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xa448f400 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa494c752 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa49b1ded device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa4c55e9c devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xa54238b5 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xa54f1368 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa55f6611 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa569ce1f pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5a916c6 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b0f2ce regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa5c5f60a spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5ca68f6 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61c48ca usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa67d89eb bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa68d5f5a cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6dcb386 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa719b6ef bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa71bf4cf rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xa7316df9 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xa746118b pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa75e357a evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa7814ea0 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa84888ca simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xa858ab2c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xa8b3e07a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa906a547 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa934d9af usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa945ddc7 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa96ae610 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xa96d9152 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xa96e66eb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xaa02cd50 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xaa1acc6d debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xaa55e4ad eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xaa677c68 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa9b8412 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xaaa74fe7 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xab14110a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab3ba71a fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab9e5fe2 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xac1ab862 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xac21b42e of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0xac5d2892 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xac679f43 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xac7683f1 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xacc2633c spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xacc5478a pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd5b6f2 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xacdc9492 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad0a1ccd rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xad0b1892 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xad56a4e9 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xad6c11d7 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xad8096d8 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xad8801d6 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xada739a7 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xadc5bfa4 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadc81698 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xadce2182 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xaddd68e0 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xade0e2bf sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xade7e60c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0501ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7046d5 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0xae83411f fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xae869072 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0xae8c696a pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xaea16dd3 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xaed09fc7 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaef3322e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xaf11f512 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xaf46e8c8 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xaf624eaa trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xaf9694f6 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xafe99b1d __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xaff4d9de generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xb013f565 mmput +EXPORT_SYMBOL_GPL vmlinux 0xb02136ed crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb070edbe ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb08e6e6a device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb0a94912 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c532d8 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb103f0b9 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11a2ea1 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb11ee324 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14534c8 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb1528359 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb194a3fa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1a66413 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d3dad1 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb1db70ef crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xb225913b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xb23b7544 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xb24ce8af regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb25107a9 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xb281f49f dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb2883f30 register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xb28a5c0d pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e80e2a usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xb308eb48 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xb3098a06 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb326070b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xb329735a da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb33d2f3f ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb37042d6 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3c6a6e9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb3d5b350 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb3dfc84c ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb3e2758e sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb3f18731 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb4101840 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xb424a52e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb450757e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb501ff57 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xb5083d8b bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xb51111fd scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6196adf usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb696b7e9 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6c107c0 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xb6d1bcf5 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb705e95c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb72ce26f fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7a622d0 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb7ad63ff key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb7d62cf9 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb7d80de3 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb7e0d8b8 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xb7e68d88 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fa3ad8 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb82e128d crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb85ded7b blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xb87167fd usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb8f2781a sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb91a166e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xb95ac7f8 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xb98b5e93 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xb9ac39cc blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ccfc2e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9dc226e of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xba117627 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba174c3c unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xba1b778d page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xba37582a fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xba3d7af8 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xba467d28 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xba69f852 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xba6cd0e0 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xba9c21f4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xbaa1bd34 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbad92f11 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f2cb9 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xbb1ce328 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xbb25f60e spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb53ed64 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xbb6d0798 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb8f2ffb platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xbbe4d28c tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xbc0faba6 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc1598ed tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xbc2f3416 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbc64a67b aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbc67019c i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbcc65c27 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcea9578 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0xbcf77012 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xbd1d5f36 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xbd3027e4 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbd47d062 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xbd489922 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbda7d16f kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbda8be88 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdc29502 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd816ca ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbddb0d6e device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xbe0b344d flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe314a80 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xbe4d8184 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xbe721c51 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xbebf2f77 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbede31c9 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xbefa6991 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xbf140422 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf705f89 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xbf7352a2 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf7d0f27 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xbff97576 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc01fcb0b rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xc02f4862 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xc0306759 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c3ac70 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e7c51c pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc120eee5 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc141630c usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xc15d4f64 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc180a699 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xc183036b usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc1ba360b devres_find +EXPORT_SYMBOL_GPL vmlinux 0xc1c7ad01 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc1fa4dfb unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc242d4a0 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc2490837 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xc2575854 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xc26f06d7 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xc277fc7e fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc27eccd0 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a1fbf4 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xc2a99103 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xc2bb3f3c proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xc2d53a70 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc2f876f8 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc306054a use_mm +EXPORT_SYMBOL_GPL vmlinux 0xc327a981 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc3449aab ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35f7d4a __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3eb5b2e usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc423d924 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4322be3 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xc43d94e3 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc469f8e8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4beb341 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xc4d15b11 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc4ed9e96 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xc4f2d1b6 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xc53650f3 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc536ac6f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xc53d28b4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5480570 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xc56ecb40 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc57a6f67 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xc5b0a444 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xc5d4ab3b drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xc6027bd1 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc630f006 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xc641e520 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc68fc044 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xc6b35b51 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc6d03681 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc6d18f89 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0xc6d9f806 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7447044 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc76f1e3b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7def70b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc7e79330 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xc82093b0 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xc85d0844 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88a5ccf dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xc893b4b3 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc89e4ff4 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cc2582 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xc8f01e22 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xc8f97c6c tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc90d1e52 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc93838a2 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9631a6b of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc9e3ad4a crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca41c22c rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca7d9c56 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaed66af md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xcb08cec5 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb4535ee queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xcb481ab9 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xcb58aae5 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcb69ab25 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xcb79b012 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcba894c1 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe56f3c usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc150654 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcc198a28 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc4cf174 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xcc543c1f wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc59239f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xcc6274fb crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xcc809102 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xcca181fa usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccf1456f eeh_remove_bus_device +EXPORT_SYMBOL_GPL vmlinux 0xccf6e6f8 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xccfd9fee __css_put +EXPORT_SYMBOL_GPL vmlinux 0xcd145117 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xcd2815eb show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xcd4f478d wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcd79bbaf invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xcd7b1851 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xcd7dadd3 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd8a42d2 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xcd8fdaa1 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcd9b331e ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xcd9cfc12 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd34f39 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce405478 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce60429b unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6d6e94 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce84742f device_move +EXPORT_SYMBOL_GPL vmlinux 0xce9c37bf __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xceba2a17 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xcee1362c cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xcee784b7 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xceecbed0 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xcf5058ad sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xcf5b7b0b wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcf5da29f tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xcf9d014c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc90dad crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcff2e173 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd01584fe ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd03767e2 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd046d536 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd0afc152 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd13a356c vfs_removexattr +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 0xd1b7099a anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd1bcc6a1 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd1d2bf43 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd1dbff56 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd2001f3d fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd20affdc tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22a627d ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd22c5a35 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd25ae972 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd2679e59 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd29fa4a5 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd3076446 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd319998c crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd34ba59c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd395a842 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd3c5f349 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3f43833 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xd3fcacbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4060fec ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd43d2251 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xd45bcf76 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xd471b6d6 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xd48c56c0 pSeries_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd48e0e12 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd4b2e199 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4e74c55 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd4f78787 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd4fc4d62 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xd57543d8 ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd591be45 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd59684ac pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xd5a35e83 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd5b03222 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bdda61 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd5e6487d cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xd5f49757 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd5f4d660 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd61f2ceb da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd622c2ad i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd625927a anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd676f178 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xd68377c9 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xd694171b mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xd69c1894 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xd69c7257 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6bb486c __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xd6bfcd06 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd707502a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd70e081e blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xd757be43 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77621d8 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xd776328a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7a25a1e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd7a38f28 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd7b657e5 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xd7bdeb86 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd7c5ba14 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7daeb4a platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xd7f1b874 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd84b6476 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xd84ff1b9 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd88ca6d7 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd8b6a087 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd8cf33f8 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xd8e3a584 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xd93b3b16 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd93dafe4 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd9a4df0f ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0xd9b96aff tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d278 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1184c8 spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0xda135605 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xdaa01ff2 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdabd0e64 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdabee754 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xdac86f61 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xdaec531f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdaf1d1d9 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb14c98b crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xdb240ef4 put_device +EXPORT_SYMBOL_GPL vmlinux 0xdb2cabeb ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xdb70ff37 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb890edf rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8f25a1 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xdbb9b4df crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc089fd7 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdc0e5b65 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdc36ab5a inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xdc5556b4 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xdc58e8fe skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xdc6c3af9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xdc709c6f crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdce086d0 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xdce851cd sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xddbfe1cc crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xddd47b1f ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde18bcf tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xddf632ed regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xde24cce7 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde2aec32 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde3b01cf __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde494dcd usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xde758280 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xdeca57d0 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf28c48f __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xdf2c2a84 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdfb394b0 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xdfc6be2f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdfce0336 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xdfd0e121 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xdfdf5e22 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdfffafb6 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe02c2ef0 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe0558018 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xe057c8bf disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe06064d3 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xe062c1c5 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe06f0b4b ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xe0847187 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09e65a6 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe0d5eabb ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0ddd671 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe24f4ef4 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xe2795538 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2ddf1ed bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31d15bf crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xe35dadb5 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe35f78a5 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xe35fa6e6 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3907333 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xe3a88b42 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3e43579 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xe4120545 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe439aadb register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe4657eab usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xe471eda2 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe47dbdfa dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xe48aa5b6 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xe4933ce0 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe4a819c7 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4d18f69 device_create +EXPORT_SYMBOL_GPL vmlinux 0xe4db7661 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe504171f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xe533dbe5 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe56e0ad5 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5dd0ac7 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xe615abb7 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe62e55ee driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe642d98a transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe669f809 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xe66e008c spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe679aa94 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xe67c7fad ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xe694e216 device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6aeb667 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e2f040 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xe6f1bd7a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xe71e974a wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe730e69d __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe773306b pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe79ef150 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe7c6e530 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xe7cc0d36 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe7efa669 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8156e40 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8756e47 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8ad2390 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe8b783c1 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xe8ceb824 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe8f7cceb bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xe9015822 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9b8d03d crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea04ea3e pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea29445e sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xea3ccf86 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5cc6bb pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xeaa719b3 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xead7de3a uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeae7dbc8 ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0xeb020618 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xeb33c1af tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xeb4ddb17 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xebb2b467 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xebbe6710 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec69ff85 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xec6b6341 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xecccad97 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xecd14ab2 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xecf2d979 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xed29a6bf __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xed38d5cd usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xed4b4dc9 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xed5c9607 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xed72d7ef sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xed9fb406 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xedaefaf9 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xedc759da xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xedf5f642 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xee2089fb free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xee2e3c41 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xee3750a0 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xee5c00fb usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xee64bb31 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeee30403 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xef0a3295 device_add +EXPORT_SYMBOL_GPL vmlinux 0xef23214d __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6dbc47 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefc32876 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xefc82ba6 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xefeebcd8 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeff25f43 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeffc3b42 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xf01b9352 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf14d1d98 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xf151c49d sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a24d20 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1f29140 spu_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xf2170aee regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf23f2d6b register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xf23fc4ce of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf2425318 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2448ce0 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf245cd4d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf263aceb spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf265dbcb md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xf27c5753 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2d4494c sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xf2e7ea17 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf2ecb236 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3219237 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf350da3f ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xf37c0b72 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3ccc9cb aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xf3ce4758 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xf3da16af synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e1bd40 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf3fcf052 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xf413a366 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xf4249101 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf4554688 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf46e006c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf47fb37a sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4ae0174 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf52d468c tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf52fa95b __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5695d8d debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xf5791f1f fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xf58d8d2c __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5ee61ec disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf64834de vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xf65d2cb2 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf69f9c0b device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf708db43 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf7341b9f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf7354799 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf73bb9e1 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf7825d05 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xf78b1968 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf79874ed dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xf79a8f85 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xf7bbfab9 cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0xf7f59da6 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xf7f9eb58 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xf82c47ee sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf857995b da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8d69cd7 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e97a8e elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf97a3aee simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d275ce crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xf9d767e9 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa403e7f bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9a7f89 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xfaa7a15a pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfab68ad9 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xfac446a6 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xfac47f83 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xfac4cf28 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xfacf74e9 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xfafd73e0 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb23c91e sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xfb245693 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb49b0be usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb73c1f8 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfc144bf3 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xfc5550f3 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xfc59a81f md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfc6e5cc7 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xfc7013fb led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc8bf2be irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfc938d10 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfcd2dedd blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcda1e7e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xfcf33bf1 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd033fba mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xfd10f235 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xfd135bb4 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xfd17d221 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xfd209f8c rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xfd4c907a cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xfd553bdd register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfd57709e unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfd71397f spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xfd928c3a crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdd8c87c pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdfeb6c7 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xfe1a136b regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe2277a5 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe688dfb aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xfe79d209 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xfe7c15b9 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfe95dc4d device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3b79b shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xfec98254 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed5b9da spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff06a1c8 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff10fc54 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xff14905e fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xff336f9c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xff380bcd relay_close +EXPORT_SYMBOL_GPL vmlinux 0xff499e44 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xff4bb07c rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xff526f95 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff804536 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock --- linux-3.5.0.orig/debian.master/d-i/kernel-versions.in +++ linux-3.5.0/debian.master/d-i/kernel-versions.in @@ -0,0 +1,14 @@ +# arch version flavour installedname suffix bdep +amd64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - + +i386 PKGVER-ABINUM generic PKGVER-ABINUM-generic - + +armel PKGVER-ABINUM omap PKGVER-ABINUM-omap - + +armhf PKGVER-ABINUM omap PKGVER-ABINUM-omap - +armhf PKGVER-ABINUM highbank PKGVER-ABINUM-highbank - + +# Ports +# arch version flavour installedname suffix bdep +powerpc PKGVER-ABINUM powerpc-smp PKGVER-ABINUM-powerpc-smp - +powerpc PKGVER-ABINUM powerpc64-smp PKGVER-ABINUM-powerpc64-smp - --- linux-3.5.0.orig/debian.master/d-i/package-list +++ linux-3.5.0/debian.master/d-i/package-list @@ -0,0 +1,196 @@ +Package: kernel-image + +Package: fat-modules +Depends: kernel-image +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: fb-modules +Depends: kernel-image +Priority: standard +Description: Framebuffer modules + +Package: firewire-core-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: floppy-modules +Depends: kernel-image +Priority: standard +Description: Floppy driver support + +Package: fs-core-modules +Depends: kernel-image +Priority: standard +Provides: jfs-modules, reiserfs-modules, xfs-modules +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules +Depends: kernel-image, fat-modules +Priority: standard +Provides: ntfs-modules, hfs-modules +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: input-modules +Depends: kernel-image, usb-modules +Priority: standard +Description: Support for various input methods + +Package: irda-modules +Depends: kernel-image, nic-shared-modules +Priority: standard +Description: Support for Infrared protocols + +Package: md-modules +Depends: kernel-image +Priority: standard +Description: Multi-device support (raid, device-mapper, lvm) + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, virtio-modules +Priority: standard +Description: Network interface support + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules +Priority: standard +Description: PCMCIA network interface support + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, usb-modules +Priority: standard +Description: USB network interface support + +Package: nic-shared-modules +Depends: kernel-image, crypto-modules +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: parport-modules +Depends: kernel-image +Priority: standard +Description: Parallel port support + +Package: pata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: PATA support modules + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: PCMCIA Modules + +Package: pcmcia-storage-modules +Depends: kernel-image, scsi-modules +Priority: standard +Description: PCMCIA storage support + +Package: plip-modules +Depends: kernel-image, nic-shared-modules, parport-modules +Priority: standard +Description: PLIP (parallel port) networking support + +Package: ppp-modules +Depends: kernel-image, nic-shared-modules, serial-modules +Priority: standard +Description: PPP (serial port) networking support + +Package: sata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SATA storage support + +Package: scsi-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SCSI storage support + +Package: serial-modules +Depends: kernel-image +Priority: standard +Description: Serial port support + +Package: storage-core-modules +Depends: kernel-image +Priority: standard +Provides: loop-modules +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: usb-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Core USB support + +Package: nfs-modules +Priority: standard +Depends: kernel-image +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: block-modules +Priority: standard +Depends: kernel-image, storage-core-modules, parport-modules, virtio-modules +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules +Priority: standard +Depends: kernel-image, storage-core-modules, scsi-modules +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: crypto-modules +Priority: extra +Depends: kernel-image +Description: crypto modules + This package contains crypto modules. + +Package: virtio-modules +Priority: standard +Depends: kernel-image +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: socket-modules +Depends: kernel-image +Priority: standard +Description: Unix socket support + +Package: mouse-modules +Depends: kernel-image, input-modules, usb-modules +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: squashfs-modules +Depends: kernel-image +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +Package: vlan-modules +Depends: kernel-image +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules +Depends: kernel-image +Priority: standard +Description: ipmi modules + +Package: multipath-modules +Depends: kernel-image +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.armel-omap +++ linux-3.5.0/debian.master/d-i/exclude-modules.armel-omap @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-firmware.armhf-omap +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armhf-omap @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-firmware.armel-omap +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armel-omap @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.armhf-omap +++ linux-3.5.0/debian.master/d-i/exclude-modules.armhf-omap @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.powerpc +++ linux-3.5.0/debian.master/d-i/exclude-modules.powerpc @@ -0,0 +1,4 @@ +efi-modules +fb-modules +acpi-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.armhf-highbank +++ linux-3.5.0/debian.master/d-i/exclude-modules.armhf-highbank @@ -0,0 +1,13 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules +multipath-modules +sata-modules +ipmi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.sparc +++ linux-3.5.0/debian.master/d-i/exclude-modules.sparc @@ -0,0 +1,9 @@ +efi-modules +nic-pcmcia-modules +pcmcia-modules +pcmcia-storage-modules +irda-modules +floppy-modules +fb-modules +acpi-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.ia64 +++ linux-3.5.0/debian.master/d-i/exclude-modules.ia64 @@ -0,0 +1,4 @@ +irda-modules +floppy-modules +fb-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/kernel-versions +++ linux-3.5.0/debian.master/d-i/kernel-versions @@ -0,0 +1,14 @@ +# arch version flavour installedname suffix bdep +amd64 3.5.0-37 generic 3.5.0-37-generic - + +i386 3.5.0-37 generic 3.5.0-37-generic - + +armel 3.5.0-37 omap 3.5.0-37-omap - + +armhf 3.5.0-37 omap 3.5.0-37-omap - +armhf 3.5.0-37 highbank 3.5.0-37-highbank - + +# Ports +# arch version flavour installedname suffix bdep +powerpc 3.5.0-37 powerpc-smp 3.5.0-37-powerpc-smp - +powerpc 3.5.0-37 powerpc64-smp 3.5.0-37-powerpc64-smp - --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.i386-virtual +++ linux-3.5.0/debian.master/d-i/exclude-modules.i386-virtual @@ -0,0 +1,15 @@ +pata-modules +serial-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.amd64-virtual +++ linux-3.5.0/debian.master/d-i/exclude-modules.amd64-virtual @@ -0,0 +1,15 @@ +pata-modules +serial-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-firmware.armhf-highbank +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armhf-highbank @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/modules/md-modules +++ linux-3.5.0/debian.master/d-i/modules/md-modules @@ -0,0 +1,16 @@ +dm-crypt ? +dm-mirror ? +dm-raid ? +dm-snapshot ? +dm-zero ? +faulty ? +linear ? +multipath ? +raid0 ? +raid1 ? +raid10 ? +raid456 ? + +# Extras +dm-raid45 ? +dm-loop ? --- linux-3.5.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-3.5.0/debian.master/d-i/modules/storage-core-modules @@ -0,0 +1,10 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop ? + +# Needs to be here for better cdrom initrd layout +isofs ? --- linux-3.5.0.orig/debian.master/d-i/modules/irda-modules +++ linux-3.5.0/debian.master/d-i/modules/irda-modules @@ -0,0 +1,30 @@ +act200l-sir ? +actisys-sir ? +ali-ircc ? +donauboe ? +esi-sir ? +girbil-sir ? +ircomm ? +ircomm-tty ? +irda ? +irda-usb ? +irlan ? +irnet ? +irport ? +irtty-sir ? +kingsun-sir ? +ks959-sir ? +ksdazzle-sir ? +litelink-sir ? +ma600-sir ? +mcp2120-sir ? +mcs7780 ? +nsc-ircc ? +old_belkin-sir ? +sir-dev ? +smsc-ircc2 ? +stir4200 ? +tekram-sir ? +via-ircc ? +vlsi_ir ? +w83977af_ir ? --- linux-3.5.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-3.5.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-3.5.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-3.5.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-3.5.0.orig/debian.master/d-i/modules/pata-modules +++ linux-3.5.0/debian.master/d-i/modules/pata-modules @@ -0,0 +1,47 @@ +pata_ali.ko ? +pata_amd.ko ? +pata_artop.ko ? +pata_atiixp.ko ? +pata_atp867x.ko ? +pata_cmd640.ko ? +pata_cmd64x.ko ? +pata_cs5520.ko ? +pata_cs5530.ko ? +pata_cs5535.ko ? +pata_cs5536.ko ? +pata_cypress.ko ? +pata_efar.ko ? +pata_hpt366.ko ? +pata_hpt37x.ko ? +pata_hpt3x2n.ko ? +pata_hpt3x3.ko ? +pata_isapnp.ko ? +pata_it8213.ko ? +pata_it821x.ko ? +pata_jmicron.ko ? +pata_legacy.ko ? +pata_macio.ko ? +pata_marvell.ko ? +pata_mpiix.ko ? +pata_netcell.ko ? +pata_ninja32.ko ? +pata_ns87410.ko ? +pata_ns87415.ko ? +pata_oldpiix.ko ? +pata_optidma.ko ? +pata_opti.ko ? +pata_pcmcia.ko ? +pata_pdc2027x.ko ? +pata_pdc202xx_old.ko ? +pata_qdi.ko ? +pata_radisys.ko ? +pata_rdc.ko ? +pata_rz1000.ko ? +pata_sc1200.ko ? +pata_sch.ko ? +pata_serverworks.ko ? +pata_sil680.ko ? +pata_sl82c105.ko ? +pata_triflex.ko ? +pata_via.ko ? +pata_winbond.ko ? --- linux-3.5.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-3.5.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,126 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +fnic ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsic ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +vmw_pvscsi ? +ums-cypress ? +be2iscsi ? +3w-sas ? +isci ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? --- linux-3.5.0.orig/debian.master/d-i/modules/plip-modules +++ linux-3.5.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-3.5.0.orig/debian.master/d-i/modules/fat-modules +++ linux-3.5.0/debian.master/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-3.5.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-3.5.0/debian.master/d-i/modules/crypto-modules @@ -0,0 +1,70 @@ +aesni-intel ? +aes-x86_64 ? +af_alg ? +algif_hash ? +algif_skcipher ? +ansi_cprng ? +anubis ? +arc4 ? +async_memcpy ? +async_pq ? +async_raid6_recov ? +async_tx ? +async_xor ? +authenc ? +authencesn ? +blowfish_common ? +blowfish_generic ? +blowfish-x86_64 ? +camellia ? +cast5 ? +cast6 ? +ccm ? +cryptd ? +cryptoloop ? +crypto_null ? +crypto_user ? +ctr ? +cts ? +deflate ? +des_generic ? +fcrypt ? +gcm ? +gf128mul ? +ghash-clmulni-intel ? +ghash-generic ? +khazad ? +lrw ? +lzo ? +md4 ? +michael_mic ? +padlock-aes ? +padlock-sha ? +pcbc ? +pcrypt ? +raid6test ? +rmd128 ? +rmd160 ? +rmd256 ? +rmd320 ? +salsa20_generic ? +salsa20-x86_64 ? +seed ? +seqiv ? +serpent_generic ? +serpent-sse2-x86_64 ? +sha1-ssse3 ? +sha512_generic ? +tcrypt ? +tea ? +tgr192 ? +twofish_common ? +twofish_generic ? +twofish-x86_64 ? +twofish-x86_64-3way ? +vmac ? +wp512 ? +xcbc ? +xor ? +xts ? +zlib ? --- linux-3.5.0.orig/debian.master/d-i/modules/serial-modules +++ linux-3.5.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,3 @@ +generic_serial ? +serial_cs ? +synclink_cs ? --- linux-3.5.0.orig/debian.master/d-i/modules/sata-modules +++ linux-3.5.0/debian.master/d-i/modules/sata-modules @@ -0,0 +1,13 @@ +sata_inic162x.ko ? +sata_mv.ko ? +sata_nv.ko ? +sata_promise.ko ? +sata_qstor.ko ? +sata_sil24.ko ? +sata_sil.ko ? +sata_sis.ko ? +sata_svw.ko ? +sata_sx4.ko ? +sata_uli.ko ? +sata_via.ko ? +sata_vsc.ko ? --- linux-3.5.0.orig/debian.master/d-i/modules/block-modules +++ linux-3.5.0/debian.master/d-i/modules/block-modules @@ -0,0 +1,32 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +kbic ? +ktti ? +nbd ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? --- linux-3.5.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-3.5.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-3.5.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-3.5.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-3.5.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-3.5.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-3.5.0.orig/debian.master/d-i/modules/message-modules +++ linux-3.5.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,14 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mptscsih ? +mptspi ? +i2o_block ? +i2o_bus ? +i2o_config ? +i2o_core ? +i2o_proc ? +i2o_scsi ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-3.5.0/debian.master/d-i/modules/nic-usb-modules @@ -0,0 +1,32 @@ +catc ? +kaweth ? +pegasus ? +prism2_usb ? +rtl8150 ? +usbnet ? +zd1211rw ? +zd1201 ? +rt2500usb ? +rt73usb ? +rt2570 ? +rt2800usb ? +rt2x00usb ? +cdc_ether ? +asix ? +cdc_eem ? +cdc_ether ? +cdc-phonet ? +cdc_subset ? +dm9601 ? +gl620a ? +hso ? +int51x1 ? +mcs7830 ? +net1080 ? +plusb ? +rndis_host ? +smsc95xx ? +zaurus ? +carl9170 ? +smsc75xx ? +smsc95xx ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-3.5.0/debian.master/d-i/modules/nic-shared-modules @@ -0,0 +1,26 @@ +# PHY +8390 ? +mii ? + +# CRC modules +crc-ccitt ? +crc-itu-t ? +libcrc32c ? + +# mac80211 stuff +mac80211 ? +cfg80211 ? + +# rt2x00 lib (since rt2x00 is split across usb/pci/cb +rt2x00lib ? +rt2800lib ? + +# Atheros library (since drivers are split across nic-modules/nic-usb-modules) +ath ? + +# Wireless 802.11 modules +lib80211 ? +cfg80211 ? +lib80211_crypt_ccmp ? +lib80211_crypt_tkip ? +lib80211_crypt_wep ? --- linux-3.5.0.orig/debian.master/d-i/modules/squashfs-modules +++ linux-3.5.0/debian.master/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-3.5.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-3.5.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-3.5.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-3.5.0/debian.master/d-i/modules/speakup-modules @@ -0,0 +1,16 @@ +speakup ? +speakup_acntpc ? +speakup_acntsa ? +speakup_apollo ? +speakup_audptr ? +speakup_bns ? +speakup_decext ? +speakup_dectlk ? +speakup_dtlk ? +speakup_dummy ? +speakup_keypc ? +speakup_ltlk ? +speakup_soft ? +speakup_spkout ? +speakup_txprt ? +speakup_decpc ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-3.5.0/debian.master/d-i/modules/nic-pcmcia-modules @@ -0,0 +1,19 @@ +3c574_cs ? +3c589_cs ? +airo_cs ? +atmel_cs ? +axnet_cs ? +com20020_cs ? +fmvj18x_cs ? +ibmtr_cs ? +netwave_cs ? +nmclan_cs ? +orinoco_cs ? +pcnet_cs ? +ray_cs ? +smc91c92_cs ? +wavelan_cs ? +wl3501_cs ? +xirc2ps_cs ? +xircom_cb ? +xircom_tulip_cb ? --- linux-3.5.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-3.5.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-3.5.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-3.5.0/debian.master/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-3.5.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-3.5.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-3.5.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-3.5.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,2 @@ +dm-multipath ? +dm-round-robin ? --- linux-3.5.0.orig/debian.master/d-i/modules/parport-modules +++ linux-3.5.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-3.5.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-3.5.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,5 @@ +nfs ? +nfs_acl ? +lockd ? +sunrpc ? +cifs ? --- linux-3.5.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-3.5.0/debian.master/d-i/modules/pcmcia-storage-modules @@ -0,0 +1,6 @@ +pata_pcmcia ? +qlogic_cs ? +fdomain_cs ? +aha152x_cs ? +nsp_cs ? +sym53c500_cs ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-modules +++ linux-3.5.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,169 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +brcmfmac ? +brcmsmac ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +enic ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +ps3_gelic ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mlx4_core ? +mlx4_en ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2400pci ? +rt2500 ? +rt2500pci ? +rt2800pci ? +rt61pci ? +s2io ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? +vmxnet3 ? +xen-netfront ? --- linux-3.5.0.orig/debian.master/d-i/modules/input-modules +++ linux-3.5.0/debian.master/d-i/modules/input-modules @@ -0,0 +1,22 @@ +hid-a4tech ? +hid-apple ? +hid-belkin ? +hid-bright ? +hid-cherry ? +hid-chicony ? +hid-cypress ? +hid-dell ? +hid-ezkey ? +hid-generic ? +hid-gyration ? +hid-logitech ? +hid-microsoft ? +hid-monterey ? +hid-petalynx ? +hid-pl ? +hid-samsung ? +hid-sony ? +hid-sunplus ? +hid-tmff ? +hid-zpff ? +usbhid ? --- linux-3.5.0.orig/debian.master/d-i/modules/fb-modules +++ linux-3.5.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-3.5.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-3.5.0/debian.master/d-i/modules/virtio-modules @@ -0,0 +1,9 @@ +virtio_balloon ? +virtio_pci ? +virtio_ring ? +virtio-rng ? +hv_vmbus ? +hv_utils ? +hv_netvsc ? +hv_mouse ? +hv_storvsc ? --- linux-3.5.0.orig/debian.master/d-i/modules/usb-modules +++ linux-3.5.0/debian.master/d-i/modules/usb-modules @@ -0,0 +1,10 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/storage-core-modules +++ linux-3.5.0/debian.master/d-i/modules-powerpc/storage-core-modules @@ -0,0 +1,13 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop + +# Needs to be here for better cdrom initrd layout +isofs + +ps3stor_lib ? +ps3rom ? --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/scsi-modules +++ linux-3.5.0/debian.master/d-i/modules-powerpc/scsi-modules @@ -0,0 +1,118 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +ibmvfc ? +ibmvscsic ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsic ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +sr_mod ? +sd_mod ? --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/block-modules +++ linux-3.5.0/debian.master/d-i/modules-powerpc/block-modules @@ -0,0 +1,31 @@ +aoe +aten +bpck +bpck6 ? +cciss +comm +cpqarray ? +DAC960 +dstr +epat +epia +fit2 +fit3 +friq +frpw +kbic +ktti +nbd +on20 +on26 +paride +pcd +pd +pf +pg +ps3disk ? +ps3vram ? +pt +sx8 +umem +virtio_blk ? --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/message-modules +++ linux-3.5.0/debian.master/d-i/modules-powerpc/message-modules @@ -0,0 +1,13 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +i2o_block +i2o_bus +i2o_config ? +i2o_core +i2o_proc +i2o_scsi --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/nic-modules +++ linux-3.5.0/debian.master/d-i/modules-powerpc/nic-modules @@ -0,0 +1,152 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +atl1 ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +bcm43xx ? +bcm43xx-mac80211 ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +ibmtr ? +ibmveth ? +ipddp ? +ipw2100 ? +ipw2200 ? +ipw3945 ? +ixgb ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +ps3_gelic ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2500 ? +rt61pci ? +s2io ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? --- linux-3.5.0.orig/debian.master/d-i/firmware/README.txt +++ linux-3.5.0/debian.master/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-3.5.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-3.5.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin +qlogic/12160.bin +qlogic/1280.bin --- linux-3.5.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-3.5.0/debian.master/d-i/firmware/nic-modules @@ -0,0 +1,14 @@ +e100/d101m_ucode.bin +e100/d101s_ucode.bin +e100/d102e_ucode.bin +bnx2x/bnx2x-e1h-7.2.51.0.fw +bnx2x/bnx2x-e1-7.2.51.0.fw +bnx2x/bnx2x-e2-7.2.51.0.fw +bnx2/bnx2-mips-09-6.2.1b.fw +bnx2/bnx2-rv2p-06-6.0.15.fw +bnx2/bnx2-mips-06-6.2.3.fw +bnx2/bnx2-rv2p-09-6.0.17.fw +bnx2/bnx2-rv2p-09ax-6.0.17.fw +tigon/tg3_tso5.bin +tigon/tg3_tso.bin +tigon/tg3.bin --- linux-3.5.0.orig/debian.master/d-i/modules-sparc/block-modules +++ linux-3.5.0/debian.master/d-i/modules-sparc/block-modules @@ -0,0 +1,9 @@ +aoe +cciss +comm +cpqarray ? +DAC960 +nbd +sx8 +umem +virtio_blk ? --- linux-3.5.0.orig/debian.master/d-i/modules-sparc/message-modules +++ linux-3.5.0/debian.master/d-i/modules-sparc/message-modules @@ -0,0 +1,13 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +i2o_block +i2o_bus +i2o_config ? +i2o_core +i2o_proc +i2o_scsi --- linux-3.5.0.orig/debian.master/etc/kernelconfig +++ linux-3.5.0/debian.master/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 i386 armel armhf powerpc ppc64" + family='ubuntu' +fi --- linux-3.5.0.orig/debian.master/etc/getabis +++ linux-3.5.0/debian.master/etc/getabis @@ -0,0 +1,17 @@ +repo_list=( + "http://archive.ubuntu.com/ubuntu/pool/main/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/main/l/linux" + "http://archive.ubuntu.com/ubuntu/pool/universe/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/universe/l/linux" + "http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu/pool/main/l/linux" +) + +package_prefixes linux-image linux-image-extra + +getall armel omap +getall armhf omap highbank +getall amd64 generic +getall i386 generic + +# Ports arches and flavours. +getall powerpc powerpc-smp powerpc64-smp --- linux-3.5.0.orig/debian.master/rules.d/ppc64.mk +++ linux-3.5.0/debian.master/rules.d/ppc64.mk @@ -0,0 +1,19 @@ +human_arch = PowerPC (64 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = ppc64_defconfig +flavours = powerpc64-smp +build_image = vmlinux +kernel_file = $(build_image) +install_file = $(build_image) + +loader = yaboot + +custom_flavours = + +no_dumpfile = true +skipdbg = true +skipabi = true +skipmodule = true + +family=ubuntu --- linux-3.5.0.orig/debian.master/rules.d/amd64.mk +++ linux-3.5.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,11 @@ +human_arch = 64 bit x86 +build_arch = x86_64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +no_dumpfile = true +uefi_signed = true --- linux-3.5.0.orig/debian.master/rules.d/i386.mk +++ linux-3.5.0/debian.master/rules.d/i386.mk @@ -0,0 +1,10 @@ +human_arch = 32 bit x86 +build_arch = i386 +header_arch = x86_64 +defconfig = defconfig +flavours = generic +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +no_dumpfile = true --- linux-3.5.0.orig/debian.master/rules.d/powerpc.mk +++ linux-3.5.0/debian.master/rules.d/powerpc.mk @@ -0,0 +1,19 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp +build_image = vmlinux +kernel_file = $(build_image) +install_file = $(build_image) + +loader = yaboot + +custom_flavours = + +no_dumpfile = true +skipdbg = true +skipabi = true +skipmodule = true + +family=ubuntu --- linux-3.5.0.orig/debian.master/rules.d/armhf.mk +++ linux-3.5.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,14 @@ +human_arch = ARM (hard float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = omap highbank +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub + +# Flavour specific configuration. +dtb_file_highbank = arch/$(build_arch)/boot/highbank.dtb --- linux-3.5.0.orig/debian.master/rules.d/armel.mk +++ linux-3.5.0/debian.master/rules.d/armel.mk @@ -0,0 +1,11 @@ +human_arch = ARM (soft float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = omap +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub --- linux-3.5.0.orig/scripts/gcc-x86_32-has-stack-protector.sh +++ linux-3.5.0/scripts/gcc-x86_32-has-stack-protector.sh @@ -1,6 +1,6 @@ #!/bin/sh -echo "int foo(void) { char X[200]; return 3; }" | $* -S -xc -c -O0 -fstack-protector - -o - 2> /dev/null | grep -q "%gs" +echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -fstack-protector - -o - 2> /dev/null | grep -q "%gs" if [ "$?" -eq "0" ] ; then echo y else --- linux-3.5.0.orig/scripts/Makefile.headersinst +++ linux-3.5.0/scripts/Makefile.headersinst @@ -55,9 +55,9 @@ quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ file$(if $(word 2, $(all-files)),s)) cmd_install = \ - $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \ - $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(objhdr-y); \ - $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(genhdr-y); \ + $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(printdir) $(header-y); \ + $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(printdir) $(objhdr-y); \ + $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(printdir) $(genhdr-y); \ for F in $(wrapper-files); do \ echo "\#include " > $(install)/$$F; \ done; \ --- linux-3.5.0.orig/scripts/gcc-x86_64-has-stack-protector.sh +++ linux-3.5.0/scripts/gcc-x86_64-has-stack-protector.sh @@ -1,6 +1,6 @@ #!/bin/sh -echo "int foo(void) { char X[200]; return 3; }" | $* -S -xc -c -O0 -mcmodel=kernel -fstack-protector - -o - 2> /dev/null | grep -q "%gs" +echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -mcmodel=kernel -fstack-protector - -o - 2> /dev/null | grep -q "%gs" if [ "$?" -eq "0" ] ; then echo y else --- linux-3.5.0.orig/scripts/headers_install.pl +++ linux-3.5.0/scripts/headers_install.pl @@ -18,7 +18,9 @@ use strict; -my ($readdir, $installdir, $arch, @files) = @ARGV; +my ($readdir, $installdir, $arch, $printdir, @files) = @ARGV; + +$printdir =~ s@^include/@@; my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; @@ -30,6 +32,10 @@ open(my $out, '>', $tmpfile) or die "$tmpfile: $!\n"; while (my $line = <$in>) { + # Any #include which uses "" and does not have a path needs + # rewriting so that the resultant user space headers are + # safe against the use of -I-. + $line =~ s/^(\s*#\s*include\s+)"([^\/]*?)"/$1<$printdir\/$2>/; $line =~ s/([\s(])__user\s/$1/g; $line =~ s/([\s(])__force\s/$1/g; $line =~ s/([\s(])__iomem\s/$1/g; --- linux-3.5.0.orig/scripts/fw-to-ihex.sh +++ linux-3.5.0/scripts/fw-to-ihex.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +F=$1 +if [ "$F" = "" ] +then + echo You must supply a firmware file. + exit 1 +fi + +echo "unsigned char d[] = {" > $F.c +hexdump -v -e '"\t" 8/1 "0x%02x, " "\n"' $F >> $F.c +echo "};" >> $F.c + +gcc -c $F.c +objcopy -Oihex $F.o $F.ihex + --- linux-3.5.0.orig/scripts/Kbuild.include +++ linux-3.5.0/scripts/Kbuild.include @@ -98,24 +98,24 @@ # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) as-option = $(call try-run,\ - $(CC) $(KBUILD_CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2)) # as-instr # Usage: cflags-y += $(call as-instr,instr,option1,option2) as-instr = $(call try-run,\ - printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3)) + printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) # cc-option # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) cc-option = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) # cc-option-yn # Usage: flag := $(call cc-option-yn,-march=winchip-c6) cc-option-yn = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) # cc-option-align # Prefix align with either -falign or -malign @@ -125,7 +125,7 @@ # cc-disable-warning # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) cc-disable-warning = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -xc /dev/null -o "$$TMP",-Wno-$(strip $(1))) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) # cc-version # Usage gcc-ver := $(call cc-version) @@ -143,7 +143,7 @@ # cc-ldoption # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) cc-ldoption = $(call try-run,\ - $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) # ld-option # Usage: LDFLAGS += $(call ld-option, -X) @@ -209,7 +209,7 @@ # >$< substitution to preserve $ when reloading .cmd file # note: when using inline perl scripts [perl -e '...$$t=1;...'] # in $(cmd_xxx) double $$ your perl vars -make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))) +make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))) # Find any prerequisites that is newer than target or that does not exist. # PHONY targets skipped in both cases. --- linux-3.5.0.orig/scripts/gcc-version.sh +++ linux-3.5.0/scripts/gcc-version.sh @@ -22,10 +22,10 @@ exit 1 fi -MAJOR=$(echo __GNUC__ | $compiler -E -xc - | tail -n 1) -MINOR=$(echo __GNUC_MINOR__ | $compiler -E -xc - | tail -n 1) +MAJOR=$(echo __GNUC__ | $compiler -E -x c - | tail -n 1) +MINOR=$(echo __GNUC_MINOR__ | $compiler -E -x c - | tail -n 1) if [ "x$with_patchlevel" != "x" ] ; then - PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -xc - | tail -n 1) + PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -x c - | tail -n 1) printf "%02d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL else printf "%02d%02d\\n" $MAJOR $MINOR --- linux-3.5.0.orig/scripts/kconfig/lkc.h +++ linux-3.5.0/scripts/kconfig/lkc.h @@ -90,7 +90,9 @@ /* confdata.c and expr.c */ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) { - assert(len != 0); + //assert(len != 0); + if (len == 0) + return; if (fwrite(str, len, count, out) != count) fprintf(stderr, "Error in writing or end of file.\n"); --- linux-3.5.0.orig/scripts/kconfig/check.sh +++ linux-3.5.0/scripts/kconfig/check.sh @@ -1,6 +1,6 @@ #!/bin/sh # Needed for systems without gettext -$* -xc -o /dev/null - > /dev/null 2>&1 << EOF +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF #include int main() { --- linux-3.5.0.orig/scripts/kconfig/streamline_config.pl +++ linux-3.5.0/scripts/kconfig/streamline_config.pl @@ -463,6 +463,8 @@ if (defined($configs{$1})) { if ($localyesconfig) { $setconfigs{$1} = 'y'; + print "$1=y\n"; + next; } else { $setconfigs{$1} = $2; } --- linux-3.5.0.orig/scripts/kconfig/lxdialog/check-lxdialog.sh +++ linux-3.5.0/scripts/kconfig/lxdialog/check-lxdialog.sh @@ -38,7 +38,7 @@ # Check if we can link to ncurses check() { - $cc -xc - -o $tmp 2>/dev/null <<'EOF' + $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC main() {} EOF --- linux-3.5.0.orig/scripts/package/buildtar +++ linux-3.5.0/scripts/package/buildtar @@ -109,7 +109,7 @@ if tar --owner=root --group=root --help >/dev/null 2>&1; then opts="--owner=root --group=root" fi - tar cf - . $opts | ${compress} > "${tarball}${file_ext}" + tar cf - boot/* lib/* $opts | ${compress} > "${tarball}${file_ext}" ) echo "Tarball successfully created in ${tarball}${file_ext}" --- linux-3.5.0.orig/lib/idr.c +++ linux-3.5.0/lib/idr.c @@ -39,6 +39,14 @@ static struct kmem_cache *idr_layer_cache; static DEFINE_SPINLOCK(simple_ida_lock); +/* the maximum ID which can be allocated given idr->layers */ +static int idr_max(int layers) +{ + int bits = min_t(int, layers * IDR_BITS, MAX_ID_SHIFT); + + return (1 << bits) - 1; +} + static struct idr_layer *get_from_free_list(struct idr *idp) { struct idr_layer *p; @@ -223,7 +231,7 @@ * Add a new layer to the top of the tree if the requested * id is larger than the currently allocated space. */ - while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) { + while (id > idr_max(layers)) { layers++; if (!p->count) { /* special case: if the tree is currently empty, @@ -265,7 +273,7 @@ static int idr_get_new_above_int(struct idr *idp, void *ptr, int starting_id) { - struct idr_layer *pa[MAX_LEVEL]; + struct idr_layer *pa[MAX_LEVEL + 1]; int id; id = idr_get_empty_slot(idp, starting_id, pa); @@ -357,7 +365,7 @@ static void sub_remove(struct idr *idp, int shift, int id) { struct idr_layer *p = idp->top; - struct idr_layer **pa[MAX_LEVEL]; + struct idr_layer **pa[MAX_LEVEL + 1]; struct idr_layer ***paa = &pa[0]; struct idr_layer *to_free; int n; @@ -451,16 +459,16 @@ int n, id, max; int bt_mask; struct idr_layer *p; - struct idr_layer *pa[MAX_LEVEL]; + struct idr_layer *pa[MAX_LEVEL + 1]; struct idr_layer **paa = &pa[0]; n = idp->layers * IDR_BITS; p = idp->top; rcu_assign_pointer(idp->top, NULL); - max = 1 << n; + max = idr_max(idp->layers); id = 0; - while (id < max) { + while (id >= 0 && id <= max) { while (n > IDR_BITS && p) { n -= IDR_BITS; *paa++ = p; @@ -519,7 +527,7 @@ /* Mask off upper bits we don't use for the search. */ id &= MAX_ID_MASK; - if (id >= (1 << n)) + if (id > idr_max(p->layer + 1)) return NULL; BUG_ON(n == 0); @@ -555,15 +563,15 @@ { int n, id, max, error = 0; struct idr_layer *p; - struct idr_layer *pa[MAX_LEVEL]; + struct idr_layer *pa[MAX_LEVEL + 1]; struct idr_layer **paa = &pa[0]; n = idp->layers * IDR_BITS; p = rcu_dereference_raw(idp->top); - max = 1 << n; + max = idr_max(idp->layers); id = 0; - while (id < max) { + while (id >= 0 && id <= max) { while (n > 0 && p) { n -= IDR_BITS; *paa++ = p; @@ -601,7 +609,7 @@ */ void *idr_get_next(struct idr *idp, int *nextidp) { - struct idr_layer *p, *pa[MAX_LEVEL]; + struct idr_layer *p, *pa[MAX_LEVEL + 1]; struct idr_layer **paa = &pa[0]; int id = *nextidp; int n, max; @@ -611,9 +619,9 @@ if (!p) return NULL; n = (p->layer + 1) * IDR_BITS; - max = 1 << n; + max = idr_max(p->layer + 1); - while (id < max) { + while (id >= 0 && id <= max) { while (n > 0 && p) { n -= IDR_BITS; *paa++ = p; @@ -625,7 +633,14 @@ return p; } - id += 1 << n; + /* + * Proceed to the next layer at the current level. Unlike + * idr_for_each(), @id isn't guaranteed to be aligned to + * layer boundary at this point and adding 1 << n may + * incorrectly skip IDs. Make sure we jump to the + * beginning of the next layer using round_up(). + */ + id = round_up(id + 1, 1 << n); while (n < fls(id)) { n += IDR_BITS; p = *--paa; @@ -780,7 +795,7 @@ */ int ida_get_new_above(struct ida *ida, int starting_id, int *p_id) { - struct idr_layer *pa[MAX_LEVEL]; + struct idr_layer *pa[MAX_LEVEL + 1]; struct ida_bitmap *bitmap; unsigned long flags; int idr_id = starting_id / IDA_BITMAP_BITS; --- linux-3.5.0.orig/lib/genalloc.c +++ linux-3.5.0/lib/genalloc.c @@ -176,7 +176,7 @@ struct gen_pool_chunk *chunk; int nbits = size >> pool->min_alloc_order; int nbytes = sizeof(struct gen_pool_chunk) + - (nbits + BITS_PER_BYTE - 1) / BITS_PER_BYTE; + BITS_TO_LONGS(nbits) * sizeof(long); chunk = kmalloc_node(nbytes, GFP_KERNEL | __GFP_ZERO, nid); if (unlikely(chunk == NULL)) --- linux-3.5.0.orig/lib/dynamic_debug.c +++ linux-3.5.0/lib/dynamic_debug.c @@ -900,7 +900,7 @@ * passes them to load_module(). This callback gets unknown params, * processes dyndbg params, rejects others. */ -int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *module) +int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *module, int all) { vpr_info("module: %s %s=\"%s\"\n", module, param, val); return ddebug_dyndbg_param_cb(param, val, module, -ENOENT); --- linux-3.5.0.orig/lib/gcd.c +++ linux-3.5.0/lib/gcd.c @@ -9,6 +9,9 @@ if (a < b) swap(a, b); + + if (!b) + return a; while ((r = a % b) != 0) { a = b; b = r; --- linux-3.5.0.orig/lib/klist.c +++ linux-3.5.0/lib/klist.c @@ -193,10 +193,10 @@ if (waiter->node != n) continue; + list_del(&waiter->list); waiter->woken = 1; mb(); wake_up_process(waiter->process); - list_del(&waiter->list); } spin_unlock(&klist_remove_lock); knode_set_klist(n, NULL); --- linux-3.5.0.orig/lib/digsig.c +++ linux-3.5.0/lib/digsig.c @@ -162,10 +162,14 @@ memset(out1, 0, head); memcpy(out1 + head, p, l); + kfree(p); + err = pkcs_1_v1_5_decode_emsa(out1, len, mblen, out2, &len); + if (err) + goto err; - if (!err && len == hlen) - err = memcmp(out2, h, hlen); + if (len != hlen || memcmp(out2, h, hlen)) + err = -EINVAL; err: mpi_free(in); --- linux-3.5.0.orig/lib/vsprintf.c +++ linux-3.5.0/lib/vsprintf.c @@ -1030,7 +1030,8 @@ * %pK cannot be used in IRQ context because its test * for CAP_SYSLOG would be meaningless. */ - if (in_irq() || in_serving_softirq() || in_nmi()) { + if (kptr_restrict && (in_irq() || in_serving_softirq() || + in_nmi())) { if (spec.field_width == -1) spec.field_width = default_width; return string(buf, end, "pK-error", spec); --- linux-3.5.0.orig/lib/kobject.c +++ linux-3.5.0/lib/kobject.c @@ -529,6 +529,13 @@ return kobj; } +static struct kobject *kobject_get_unless_zero(struct kobject *kobj) +{ + if (!kref_get_unless_zero(&kobj->kref)) + kobj = NULL; + return kobj; +} + /* * kobject_cleanup - free kobject resources. * @kobj: object to cleanup @@ -751,7 +758,7 @@ list_for_each_entry(k, &kset->list, entry) { if (kobject_name(k) && !strcmp(kobject_name(k), name)) { - ret = kobject_get(k); + ret = kobject_get_unless_zero(k); break; } } --- linux-3.5.0.orig/lib/bug.c +++ linux-3.5.0/lib/bug.c @@ -55,6 +55,7 @@ } #ifdef CONFIG_MODULES +/* Updates are protected by module mutex */ static LIST_HEAD(module_bug_list); static const struct bug_entry *module_find_bug(unsigned long bugaddr) --- linux-3.5.0.orig/ipc/shm.c +++ linux-3.5.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,12 @@ sprintf (name, "SYSV%08x", key); if (shmflg & SHM_HUGETLB) { + size_t hugesize = ALIGN(size, huge_page_size(&default_hstate)); + /* 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); } else { /* --- linux-3.5.0.orig/usr/gen_init_cpio.c +++ linux-3.5.0/usr/gen_init_cpio.c @@ -303,7 +303,7 @@ int retval; int rc = -1; int namesize; - int i; + unsigned int i; mode |= S_IFREG; @@ -381,25 +381,28 @@ static char *cpio_replace_env(char *new_location) { - char expanded[PATH_MAX + 1]; - char env_var[PATH_MAX + 1]; - char *start; - char *end; - - for (start = NULL; (start = strstr(new_location, "${")); ) { - end = strchr(start, '}'); - if (start < end) { - *env_var = *expanded = '\0'; - strncat(env_var, start + 2, end - start - 2); - strncat(expanded, new_location, start - new_location); - strncat(expanded, getenv(env_var), PATH_MAX); - strncat(expanded, end + 1, PATH_MAX); - strncpy(new_location, expanded, PATH_MAX); - } else - break; - } + char expanded[PATH_MAX + 1]; + char env_var[PATH_MAX + 1]; + char *start; + char *end; + + for (start = NULL; (start = strstr(new_location, "${")); ) { + end = strchr(start, '}'); + if (start < end) { + *env_var = *expanded = '\0'; + strncat(env_var, start + 2, end - start - 2); + strncat(expanded, new_location, start - new_location); + strncat(expanded, getenv(env_var), + PATH_MAX - strlen(expanded)); + strncat(expanded, end + 1, + PATH_MAX - strlen(expanded)); + strncpy(new_location, expanded, PATH_MAX); + new_location[PATH_MAX] = 0; + } else + break; + } - return new_location; + return new_location; } --- linux-3.5.0.orig/virt/kvm/ioapic.c +++ linux-3.5.0/virt/kvm/ioapic.c @@ -73,9 +73,12 @@ u32 redir_index = (ioapic->ioregsel - 0x10) >> 1; u64 redir_content; - ASSERT(redir_index < IOAPIC_NUM_PINS); + if (redir_index < IOAPIC_NUM_PINS) + redir_content = + ioapic->redirtbl[redir_index].bits; + else + redir_content = ~0ULL; - redir_content = ioapic->redirtbl[redir_index].bits; result = (ioapic->ioregsel & 0x1) ? (redir_content >> 32) & 0xffffffff : redir_content & 0xffffffff; --- linux-3.5.0.orig/virt/kvm/kvm_main.c +++ linux-3.5.0/virt/kvm/kvm_main.c @@ -689,8 +689,7 @@ int r; gfn_t base_gfn; unsigned long npages; - unsigned long i; - struct kvm_memory_slot *memslot; + struct kvm_memory_slot *memslot, *slot; struct kvm_memory_slot old, new; struct kvm_memslots *slots, *old_memslots; @@ -737,13 +736,11 @@ /* Check for overlaps */ r = -EEXIST; - for (i = 0; i < KVM_MEMORY_SLOTS; ++i) { - struct kvm_memory_slot *s = &kvm->memslots->memslots[i]; - - if (s == memslot || !s->npages) + kvm_for_each_memslot(slot, kvm->memslots) { + if (slot->id >= KVM_MEMORY_SLOTS || slot == memslot) continue; - if (!((base_gfn + npages <= s->base_gfn) || - (base_gfn >= s->base_gfn + s->npages))) + if (!((base_gfn + npages <= slot->base_gfn) || + (base_gfn >= slot->base_gfn + slot->npages))) goto out_free; } @@ -1381,21 +1378,38 @@ } 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) { struct kvm_memslots *slots = kvm_memslots(kvm); int offset = offset_in_page(gpa); - gfn_t gfn = gpa >> PAGE_SHIFT; + gfn_t start_gfn = gpa >> PAGE_SHIFT; + gfn_t end_gfn = (gpa + len - 1) >> PAGE_SHIFT; + gfn_t nr_pages_needed = end_gfn - start_gfn + 1; + gfn_t nr_pages_avail; ghc->gpa = gpa; ghc->generation = slots->generation; - ghc->memslot = gfn_to_memslot(kvm, gfn); - ghc->hva = gfn_to_hva_many(ghc->memslot, gfn, NULL); - if (!kvm_is_error_hva(ghc->hva)) + ghc->len = len; + ghc->memslot = gfn_to_memslot(kvm, start_gfn); + ghc->hva = gfn_to_hva_many(ghc->memslot, start_gfn, &nr_pages_avail); + if (!kvm_is_error_hva(ghc->hva) && nr_pages_avail >= nr_pages_needed) { ghc->hva += offset; - else - return -EFAULT; - + } else { + /* + * If the requested region crosses two memslots, we still + * verify that the entire region is valid here. + */ + while (start_gfn <= end_gfn) { + ghc->memslot = gfn_to_memslot(kvm, start_gfn); + ghc->hva = gfn_to_hva_many(ghc->memslot, start_gfn, + &nr_pages_avail); + if (kvm_is_error_hva(ghc->hva)) + return -EFAULT; + start_gfn += nr_pages_avail; + } + /* Use the slow path for cross page reads and writes. */ + ghc->memslot = NULL; + } return 0; } EXPORT_SYMBOL_GPL(kvm_gfn_to_hva_cache_init); @@ -1406,8 +1420,13 @@ struct kvm_memslots *slots = kvm_memslots(kvm); int r; + BUG_ON(len > ghc->len); + if (slots->generation != ghc->generation) - kvm_gfn_to_hva_cache_init(kvm, ghc, ghc->gpa); + kvm_gfn_to_hva_cache_init(kvm, ghc, ghc->gpa, ghc->len); + + if (unlikely(!ghc->memslot)) + return kvm_write_guest(kvm, ghc->gpa, data, len); if (kvm_is_error_hva(ghc->hva)) return -EFAULT; @@ -1427,8 +1446,13 @@ struct kvm_memslots *slots = kvm_memslots(kvm); int r; + BUG_ON(len > ghc->len); + if (slots->generation != ghc->generation) - kvm_gfn_to_hva_cache_init(kvm, ghc, ghc->gpa); + kvm_gfn_to_hva_cache_init(kvm, ghc, ghc->gpa, ghc->len); + + if (unlikely(!ghc->memslot)) + return kvm_read_guest(kvm, ghc->gpa, data, len); if (kvm_is_error_hva(ghc->hva)) return -EFAULT; --- linux-3.5.0.orig/firmware/WHENCE +++ linux-3.5.0/firmware/WHENCE @@ -629,16 +629,6 @@ -------------------------------------------------------------------------- -Driver: MYRI_SBUS - MyriCOM Gigabit Ethernet - -File: myricom/lanai.bin - -Licence: Unknown - -Found in hex form in kernel source. - --------------------------------------------------------------------------- - Driver: bnx2x: Broadcom Everest File: bnx2x/bnx2x-e1-6.2.9.0.fw --- linux-3.5.0.orig/firmware/Makefile +++ linux-3.5.0/firmware/Makefile @@ -27,86 +27,31 @@ acenic-objs := acenic/tg1.bin acenic/tg2.bin endif fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) -fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ - adaptec/starfire_tx.bin fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin -fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw -fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ - bnx2x/bnx2x-e1h-6.2.9.0.fw \ - bnx2x/bnx2x-e2-6.2.9.0.fw -fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ - bnx2/bnx2-rv2p-09-6.0.17.fw \ - bnx2/bnx2-rv2p-09ax-6.0.17.fw \ - bnx2/bnx2-mips-06-6.2.1.fw \ - bnx2/bnx2-rv2p-06-6.0.15.fw -fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin -fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin -fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ - cxgb3/t3c_psram-1.1.0.bin \ - cxgb3/t3fw-7.10.0.bin \ - cxgb3/ael2005_opt_edc.bin \ - cxgb3/ael2005_twx_edc.bin \ - cxgb3/ael2020_twx_edc.bin -fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw -fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin -fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \ - radeon/R300_cp.bin radeon/R420_cp.bin \ - radeon/RS690_cp.bin radeon/RS600_cp.bin \ - radeon/R520_cp.bin \ - radeon/R600_pfp.bin radeon/R600_me.bin \ - radeon/RV610_pfp.bin radeon/RV610_me.bin \ - radeon/RV630_pfp.bin radeon/RV630_me.bin \ - radeon/RV620_pfp.bin radeon/RV620_me.bin \ - radeon/RV635_pfp.bin radeon/RV635_me.bin \ - radeon/RV670_pfp.bin radeon/RV670_me.bin \ - radeon/RS780_pfp.bin radeon/RS780_me.bin \ - radeon/RV770_pfp.bin radeon/RV770_me.bin \ - radeon/RV730_pfp.bin radeon/RV730_me.bin \ - radeon/RV710_pfp.bin radeon/RV710_me.bin -fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin -fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.2.51.0.fw \ + bnx2x/bnx2x-e1h-7.2.51.0.fw \ + bnx2x/bnx2x-e2-7.2.51.0.fw +fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1b.fw \ + bnx2/bnx2-rv2p-06-6.0.15.fw \ + bnx2/bnx2-mips-06-6.2.3.fw \ + bnx2/bnx2-rv2p-09-6.0.17.fw \ + bnx2/bnx2-rv2p-09ax-6.0.17.fw fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ e100/d102e_ucode.bin -fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin -fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \ - cis/DP83903.cis cis/NE2K.cis \ - cis/tamarack.cis cis/PE-200.cis \ - cis/PE520.cis -fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis -fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis -fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ - cis/COMpad2.cis cis/COMpad4.cis \ - cis/SW_555_SER.cis cis/SW_7xx_SER.cis \ - cis/SW_8xx_SER.cis -fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin -fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ - advansys/3550.bin advansys/38C0800.bin +fw-shipped-$(CONFIG_PCMCIA_PCNET) += + +fw-shipped-$(CONFIG_PCMCIA_3C589) += +fw-shipped-$(CONFIG_PCMCIA_3C574) += +fw-shipped-$(CONFIG_SERIAL_8250_CS) += + fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \ qlogic/12160.bin fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw -fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp -fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \ - ess/maestro3_assp_minisrc.fw -fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \ - sb16/ima_adpcm_init.csp \ - sb16/ima_adpcm_playback.csp \ - sb16/ima_adpcm_capture.csp -fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ - yamaha/ds1e_ctrl.fw fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin -fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ tigon/tg3_tso5.bin -fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin fw-shipped-$(CONFIG_USB_DABUSB) += dabusb/firmware.fw dabusb/bitstream.bin -fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \ - emi26/bitstream.fw -fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \ - emi62/spdif.fw emi62/midi.fw -fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \ - kaweth/new_code_fix.bin \ - kaweth/trigger_code_fix.bin ifdef CONFIG_FIRMWARE_IN_KERNEL fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw @@ -126,17 +71,9 @@ keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \ keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw endif -fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \ - mts_cdma.fw mts_gsm.fw mts_edge.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \ - edgeport/down.fw edgeport/down2.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \ # whiteheat_loader_debug.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw -fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw -fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw.ihex @@ -0,0 +1,18459 @@ +:100000000000356000000068000005D8000035D011 +:100010000000549800003BB00000008C000090509D +:100020000000E164000090E0000000C000017248A0 +:1000300000012D7400017310000000740002A088FC +:10004000000059E00002A100000000AC0002FAE844 +:10005000000173F80002FB98000011B800046F98CB +:100060000000000400048158021100B800000001E3 +:10007000020600DC000000010306100001FF000082 +:100080000A00000100000008020617FC003FE00122 +:100090000A00000100000010030617FC020101FF26 +:1000A0000A0000010000000803060200000304002B +:1000B0000A00000100000010030602000003040310 +:1000C000020600DC00000000040601C80000000277 +:1000D000040601D8000000020A0000020000000827 +:1000E000030601C000020406030601D00002040852 +:1000F0000A00000200000010030601C00002040A0A +:10010000030601D00002040C0406022800000002CD +:1001100004060238000000020A0000020000000885 +:10012000030602200002040E03060230000204103F +:100130000A00000200000010030602200002041260 +:100140000306023000020414020D004400000032D5 +:10015000030D004C00040416040D005C00000004B4 +:10016000030D008C0004041A030D00A00005041EFA +:10017000020D00B800000002030D00C000040423BB +:10018000020D015C00000001030D01640002042760 +:10019000020D020400000001030D020C00030429FB +:1001A000030D02200002042C040D02800000001246 +:1001B000030D03000018042E040D400000000A0087 +:1001C0000A00000100000008040D03600000000C9C +:1001D000030D0004000F0446020D01140000000D81 +:1001E000020D01180000002D020D01140000001D79 +:1001F000020D01180000003D020D01140000004D29 +:10020000020D01180000006D020D01140000005DD8 +:10021000020D01180000007D0310100000030455BA +:1002200002101050000000010710110000100458C7 +:100230000810114000000008071011600010046849 +:10024000081011A000000018071018000200047820 +:1002500004104C00000001000210700400000001B6 +:100260000A00000100000008031040D400020678D4 +:1002700002104028000000100210404400003FFF20 +:100280000210405800280000021040840084924A66 +:100290000210405800000000021041380000000128 +:1002A0000210413800000001021041380000000136 +:1002B0000210413800000001021041380000000126 +:1002C0000210413800000001021041380000000116 +:1002D0000210413800000001030C20080003067AD8 +:1002E000030C201C0004067D030C2038000406814A +:1002F000040C20480000001D020C20BC000000017E +:10030000040C20C00000003F030C21BC0003068544 +:10031000040C21C80000001C030C223800040688CD +:10032000010C224800000000010C224C00000000DB +:10033000010C225000000000010C225400000000BB +:10034000010C225800000000010C225C000000009B +:10035000010C226000000000010C2264000000007B +:10036000010C226800000000010C226C000000005B +:10037000010C227000000000010C2274000000003B +:10038000010C227800000000010C227C000000001B +:10039000030C22D80004068C0A00000100000009AA +:1003A000020C2000000003E80A0000010000000A1F +:1003B000020C2000000000030A0000010000000CF5 +:1003C000020C2000000000010A00000100001001E2 +:1003D000020C2000000005DC0A00000100001002F1 +:1003E000020C2000000000040A00000100001004BC +:1003F000020C2000000000010A00000100002001A2 +:10040000020C2000000005DC0A00000100002002B0 +:10041000020C2000000000040A000001000020047B +:10042000020C200000000001052004000071000003 +:100430000620078000100690042200000000400003 +:1004400004232400000016000A0000010000000838 +:10045000022000BC00000032032211700008069246 +:10046000032211A80090069A0422C0000000000692 +:100470000322C0180004072A0422C0280000000C30 +:100480000322C0580004072E0422C0680000000C9C +:100490000322C098000407320422C0A80000000C08 +:1004A0000322C0D8000407360422C0E80000000C74 +:1004B0000322C1180004073A0422C1280000000CDE +:1004C0000322C1580004073E0422C1680000000C4A +:1004D0000322C198000407420422C1A80000000CB6 +:1004E0000322C1D8000407460422C1E80000000C22 +:1004F0000322C2180004074A0422C2280000000C8C +:100500000322C2580004074E0422C2680000000CF7 +:100510000322C298000407520422C2A80000000C63 +:100520000322C2D8000407560422C2E80000000CCF +:100530000322C3180004075A0422C3280000000C39 +:100540000322C3580004075E0422C3680000000CA5 +:100550000322C398000407620422C3A80000000C11 +:100560000322C3D8000407660422C3E80000000C7D +:100570000322C4180004076A0422C4280000000CE7 +:100580000322C4580004076E0422C4680000000C53 +:100590000322C498000407720422C4A80000000CBF +:1005A0000322C4D8000407760422C4E80000000C2B +:1005B0000322C5180004077A0422C5280000000C95 +:1005C0000322C5580004077E0422C5680000000C01 +:1005D0000322C598000407820422C5A80000000C6D +:1005E0000322C5D8000407860422C5E80000000CD9 +:1005F0000322C6180004078A0422C6280000000C43 +:100600000322C6580004078E0422C6680000000CAE +:100610000322C698000407920422C6A80000000C1A +:100620000322C6D8000407960422C6E80000000C86 +:100630000322C7180004079A0422C7280000000CF0 +:100640000322C7580004079E0422C7680000000C5C +:100650000322C798000407A20422C7A80000000CC8 +:100660000322C7D8000407A60422C7E80000000C34 +:100670000322C818000407AA0422C8280000000C9E +:100680000322C858000407AE0422C8680000000C0A +:100690000322C898000407B20422C8A80000000C76 +:1006A0000322C8D8000407B60422C8E80000000CE2 +:1006B0000322C918000407BA0422C9280000000C4C +:1006C0000322C958000407BE0422C9680000000CB8 +:1006D0000322C998000407C20422C9A80000000C24 +:1006E0000322C9D8000407C60422C9E80000000C90 +:1006F0000322CA18000407CA0422CA280000000CFA +:100700000322CA58000407CE0422CA680000000C65 +:100710000322CA98000407D20422CAA80000000CD1 +:100720000322CAD8000407D60422CAE80000000C3D +:100730000322CB18000407DA0422CB280000000CA7 +:100740000322CB58000407DE0422CB680000000C13 +:100750000322CB98000407E20422CBA80000000C7F +:100760000322CBD8000407E60422CBE80000000CEB +:100770000322CC18000407EA0422CC280000000C55 +:100780000322CC58000407EE0422CC680000000CC1 +:100790000322CC98000407F20422CCA80000000C2D +:1007A0000322CCD8000407F60422CCE80000000C99 +:1007B0000322CD18000407FA0422CD280000000C03 +:1007C0000322CD58000407FE0422CD680000000C6F +:1007D0000322CD98000408020422CDA80000000CDA +:1007E0000322CDD8000408060422CDE80000000C46 +:1007F0000322CE180004080A0422CE280000000CB0 +:100800000322CE580004080E0422CE680000000C1B +:100810000322CE98000408120422CEA80000000C87 +:100820000322CED8000408160422CEE80000000CF3 +:100830000322CF180004081A0422CF280000000C5D +:100840000322CF580004081E0422CF680000000CC9 +:100850000322CF98000408220422CFA80000000C35 +:100860000322CFD8000408260422CFE80000000CA1 +:100870000322D0180004082A0422D0280000000C0B +:100880000322D0580004082E0422D0680000000C77 +:100890000322D098000408320422D0A80000000CE3 +:1008A0000322D0D8000408360422D0E80000000C4F +:1008B0000322D1180004083A0422D1280000000CB9 +:1008C0000322D1580004083E0422D1680000000C25 +:1008D0000322D198000408420422D1A80000000C91 +:1008E0000322D1D8000408460422D1E80000000CFD +:1008F0000322D2180004084A0422D2280000000C67 +:100900000322D2580004084E0422D2680000000CD2 +:100910000322D298000408520422D2A80000000C3E +:100920000322D2D8000408560422D2E80000000CAA +:100930000322D3180004085A0422D3280000000C14 +:100940000322D3580004085E0422D3680000000C80 +:100950000322D398000408620422D3A80000000CEC +:100960000322D3D8000408660422D3E80000000C58 +:100970000322D4180004086A0422D4280000000CC2 +:100980000322D4580004086E0422D4680000000C2E +:100990000322D498000408720422D4A80000000C9A +:1009A0000322D4D8000408760422D4E80000000C06 +:1009B0000322D5180004087A0422D5280000000C70 +:1009C0000322D5580004087E0422D5680000000CDC +:1009D0000322D598000408820422D5A80000000C48 +:1009E0000322D5D8000408860422D5E80000000CB4 +:1009F0000322D6180004088A0422D6280000000C1E +:100A00000322D6580004088E0422D6680000000C89 +:100A10000322D698000408920422D6A80000000CF5 +:100A20000322D6D8000408960422D6E80000000C61 +:100A30000322D7180004089A0422D7280000000CCB +:100A40000322D7580004089E0422D7680000000C37 +:100A50000322D798000408A20422D7A80000000CA3 +:100A60000322D7D8000408A60422D7E80000000C0F +:100A70000322D818000408AA0422D8280000000C79 +:100A80000322D858000408AE0422D8680000000CE5 +:100A90000322D898000408B20422D8A80000000C51 +:100AA0000322D8D8000408B60422D8E80000000CBD +:100AB0000322D918000408BA0422D9280000000C27 +:100AC0000322D958000408BE0422D9680000000C93 +:100AD0000322D998000408C20422D9A80000000CFF +:100AE0000322D9D8000408C60422D9E80000000C6B +:100AF0000322DA18000408CA0422DA280000000CD5 +:100B00000322DA58000408CE0422DA680000000C40 +:100B10000322DA98000408D20422DAA80000000CAC +:100B20000322DAD8000408D60422DAE80000000C18 +:100B30000322DB18000408DA0422DB280000000C82 +:100B40000322DB58000408DE0422DB680000000CEE +:100B50000322DB98000408E20422DBA80000000C5A +:100B60000322DBD8000408E60422DBE80000000CC6 +:100B70000322DC18000408EA0422DC280000000C30 +:100B80000322DC58000408EE0422DC680000000C9C +:100B90000322DC98000408F20422DCA80000000C08 +:100BA0000322DCD8000408F60422DCE80000000C74 +:100BB0000322DD18000408FA0422DD280000000CDE +:100BC0000322DD58000408FE0422DD680000000C4A +:100BD0000322DD98000409020422DDA80000000CB5 +:100BE0000322DDD8000409060422DDE80000000C21 +:100BF0000322DE180004090A0422DE280000000C8B +:100C00000322DE580004090E0422DE680000000CF6 +:100C10000322DE98000409120422DEA80000000C62 +:100C20000322DED8000409160422DEE80000000CCE +:100C30000322DF180004091A0422DF280000000C38 +:100C40000322DF580004091E0422DF680000000CA4 +:100C50000322DF98000409220422DFA80000000C10 +:100C60000322DFD8000409260422DFE80000000C7C +:100C70000322E0180004092A0422E0280000000CE6 +:100C80000322E0580004092E0422E0680000000C52 +:100C90000322E098000409320422E0A80000000CBE +:100CA0000322E0D8000409360422E0E80000000C2A +:100CB0000322E1180004093A0422E1280000000C94 +:100CC0000322E1580004093E0422E1680000000C00 +:100CD0000322E198000409420422E1A80000000C6C +:100CE0000322E1D8000409460422E1E800000006DE +:100CF0000422F640000000200223800000000010C3 +:100D00000223804000000012022380800000003097 +:100D1000022380C00000000E02238BC000000001EF +:100D20000A000002000000080223838000086470AB +:100D3000022383C0000002260A000002000000090E +:100D4000022383000008647002238340000002260F +:100D50000A0000020000000A022383000000055F71 +:100D600002238340000000010A0000020000000C82 +:100D7000022383000000015702238340000000008B +:100D80000A0000020000100002238380000C96A8D5 +:100D9000022383C0000003390A0000020000100192 +:100DA00002238300000C96A802238340000003392D +:100DB0000A00000200001002022383000000080E57 +:100DC00002238340000000020A0000020000100419 +:100DD000022383000000020302238340000000007E +:100DE0000A0000020000200002238380000CF8505B +:100DF000022383C0000003520A0000020000200109 +:100E000002238300000CF8500223834000000352A9 +:100E10000A00000200002002022383000000084DA7 +:100E200002238340000000020A00000200002004A8 +:100E3000022383000000021302238340000000000D +:100E40000524000031B2000005248000282A0C6D22 +:100E50000624D46063DA094A0A0000010000000198 +:100E600002231480000000010A00000100000002BB +:100E700002231480000000010A00000100000004A9 +:100E80000223148000000000012000000000000088 +:100E90000120000400000000012000080000000004 +:100EA0000120000C000000000120001000000000E4 +:100EB000012000140000000003200020001A094C4B +:100EC000032000A4000209660220022400000000A2 +:100ED00002200234000000000220024C000000004A +:100EE000022002E40000FFFF0820200000000800AC +:100EF0000A0000010000001008204000000002006D +:100F00000422110800000002042234000000000244 +:100F10000422590000000006042260400000003056 +:100F20000422F3000000001004221110000000024F +:100F300004223408000000020422591800000006B0 +:100F400004226100000000300422F3400000001081 +:100F500004221118000000020422341000000002D4 +:100F60000422593000000006042261C00000003055 +:100F70000422F3800000001004221120000000026F +:100F80000422341800000002042259480000000620 +:100F900004226280000000300422F3C00000001030 +:100FA0000422112800000002042234200000000264 +:100FB0000422596000000006042263400000003053 +:100FC0000422F4000000001004221130000000028E +:100FD0000422342800000002042259780000000690 +:100FE00004226400000000300422F44000000010DD +:100FF00004221138000000020422343000000002F4 +:101000000422599000000006042264C00000003051 +:101010000422F480000000100422114000000002AD +:101020000422343800000002042259A800000006FF +:1010300004226580000000300422F4C0000000108B +:1010400004102400000000E00310201C00020968C6 +:10105000021020C000000002031020040002096AF0 +:1010600002170008000000020217002C0000000315 +:1010700002170038007C1004031700440006096CB6 +:10108000021700700000000C0317007800020972BC +:10109000021701C4081000000217034400000001F9 +:1010A0000317040000080974031704300008097CC2 +:1010B00003170480000409840A00000100000008EE +:1010C0000217003C000000040A00000100000010AC +:1010D0000217003C00000008021700040000000F87 +:1010E000021701EC00000002021701F400000002E8 +:1010F000021701EC00000002021701F400000002D8 +:10110000021701EC00000002021701F400000002C7 +:10111000021701EC00000002021701F400000002B7 +:10112000021701EC00000002021701F400000002A7 +:10113000021701EC00000002021701F40000000297 +:10114000021701EC00000002021701F40000000287 +:10115000021701EC00000002021701F40000000277 +:101160000A000001000000080213007800000032AD +:101170000213003C000061A80413010800000003F2 +:1011800002130104000000000213013400000000FB +:101190000413010800000003021301040000000012 +:1011A00002130134000000000413010800000003D2 +:1011B00002130104000000000213013400000000CB +:1011C00004130108000000030213010400000000E2 +:1011D00002130134000000000413010800000003A2 +:1011E000021301040000000002130134000000009B +:1011F00004130108000000030213010400000000B2 +:101200000213013400000000041301080000000371 +:10121000021301040000000002130134000000006A +:101220000413010800000003021301040000000081 +:1012300002130134000000000A00000100000088D1 +:101240000200A5F8000000000A00000100000108EB +:101250000200A5F8000000010A0000010000009053 +:101260000200AA84000000000A0000010000011032 +:101270000200AA84000000010A00000100000090A2 +:101280000200AA88000000000A000001000001100E +:101290000200AA88000000010200A2700000000005 +:1012A0000200A274000000000200A2700000000012 +:1012B0000200A274000000000200A2700000000002 +:1012C0000200A274000000000200A27000000000F2 +:1012D0000200A2740000000002016204000000008D +:1012E000030100B400020988030100CC0002098A4E +:1012F000020100DC00000001030101000002098C72 +:101300000201007C0030000002010084000000287F +:101310000201008C00000000020101300000000406 +:10132000020102440000003F0201025C00000001D3 +:1013300002010328000000000201055400000030F3 +:10134000020160580000FFFF020160600000000021 +:101350000201607000000007020160B000000000A0 +:10136000020160C000000001020160C8000000002E +:101370000201620800000000040180540000000324 +:1013800002018078000000000201812400000000BA +:101390000A00000100000080020180380000000601 +:1013A0000A0000010000020002018038000000076E +:1013B0000A0000010000040002018038000000065D +:1013C0000A00000100000800020180380000000E41 +:1013D000020100C400000001020100F80000000149 +:1013E000020100F000000001020100800030000056 +:1013F00002010088000000280201009000000000A7 +:101400000201013400000004020102480000003F14 +:10141000020102DC000000010201032C00000000B8 +:1014200002010564000000300201605C0000FFFF63 +:101430000201606400000000020160740000000707 +:10144000020160B400000000020160C4000000015D +:10145000020160CC000000000201620C00000000EC +:10146000040181A800000004020181D000000000F6 +:101470000A000001000000800201818C00000006CB +:101480000A000001000002000201818C0000000738 +:101490000A000001000004000201818C0000000627 +:1014A0000A000001000008000201818C0000000E0B +:1014B000020100C800000001020100FC0000000160 +:1014C000020100F4000000010401013800000011D5 +:1014D0000401017C0000001104010138000000112A +:1014E0000401017C0000001104010138000000111A +:1014F0000401017C0000001104010138000000110A +:101500000401017C000000110215C0900000892632 +:101510000215C09C0000000402140000000000013D +:101520000215C024000000000315C0EC0002098E63 +:101530000315C100000209900A000001000020000C +:101540000315C1F400080992031400300002099A3F +:101550000214004000000001090000020000100811 +:10156000031400040003099C021400440000FFFF60 +:101570000A00000400002000031400380002099F44 +:1015800002140044000FFFFF0315C160000709A10A +:101590000315C198000209A8090000010000100805 +:1015A00004140004000000030A00000100002000F1 +:1015B0000415C160000000070214000000000000D4 +:1015C000020090C40000E000020090CC0000F30094 +:1015D000030090D4000209AA020090E0000073000A +:1015E000030090E8000209AC020090F400007300D0 +:1015F000030090FC000209AE0200910800005300B5 +:10160000020091100000000403009128000709B0B7 +:101610000300916C000609B70400918400000006E5 +:101620000300919C000509BD0300942C000309C22E +:101630000300942C000309C50300942C000309C87F +:101640000300942C000309CB0300942C000309CE63 +:101650000300942C000309D10300942C000309D447 +:101660000300942C000309D703040004001209DAD4 +:1016700002040054000000430204005C0000000665 +:10168000020400700000000403040078000409EC68 +:1016900004040088000000050304009C000309F016 +:1016A000040400A800000004030400B8001109F3BA +:1016B00001040124000000000104012800000000D2 +:1016C0000104012C000000000104013000000000B2 +:1016D000020401340000000F030401D000020A04D8 +:1016E0000204022C000000040304025800040A064D +:1016F0000312049400210A0A021203880000006405 +:1017000002120390000000080312039C00030A2B3E +:10171000031203BC00030A2E021203D000000000D3 +:101720000212036C00000001031201BC003C0A31EC +:10173000031202B000020A6D0312032400020A6FB2 +:10174000021205B400000001031205F800030A713B +:101750000212066C00000001021201B0000000013C +:10176000021207D800000000021207D80000000093 +:10177000021207D800000000021207D80000000083 +:10178000021207D800000000021207D80000000073 +:10179000021207D800000000021207D80000000063 +:1017A000021030D8000000010710380000050A744C +:1017B0000710392000050A7907103B0000050A7E52 +:1017C00007103C0000050A830316803000080A88D1 +:1017D00002168054000000020416807C0000000500 +:1017E0000316809000020A900316809C00020A9261 +:1017F000021680AC00000054041680B800000005FA +:10180000031680CC00080A94021680F0000000073E +:101810000316810000060A9C0316812800030AA211 +:101820000316814000060AA50316816800030AAB6F +:10183000031681A800030AAE031681E800030AB16B +:10184000031681F800030AB40316820800070AB7DA +:101850000316823400020ABE0416827800000004D7 +:101860000316828800060AC0021688102020010193 +:10187000021688202020010102168838202001014C +:1018800002168848202001010316E6BC00020AC6A1 +:101890000A000014000000080316806000070AC850 +:1018A000041680A400000002041680B000000002AC +:1018B000031680F400030ACF0316811800040AD22D +:1018C0000316813400030AD60316815800040AD98E +:1018D00003168174000D0ADD031681B4000D0AEAB7 +:1018E000021681F4000001FC0216820400000003CD +:1018F0000316823C000B0AF70416826800000004FD +:101900000216880C010101010316881400030B0262 +:101910000316882400050B050316883C00030B0AF8 +:101920000316E6C400020B0D0316E6E800050B0FD4 +:101930000216E794000000010A00001C00001000DD +:101940000316806000070B14041680A40000000238 +:10195000041680B000000002031680F400030B1B85 +:101960000316811800040B1E0316813400030B229A +:101970000316815800040B2502168178000000012F +:10198000021681840000000102168190000000010F +:10199000021681A400000004021681B800000001B4 +:1019A000021681C400000001021681D0000000016F +:1019B000021681E400000004021681F4000001FC1C +:1019C00002168204000000030316823C00020B2969 +:1019D00002168248009200920216825001240124CD +:1019E0000316825800040B2B0416826800000004C2 +:1019F0000216880C010101010316881400030B2F45 +:101A00000316882400050B320316883C00030B37AD +:101A10000316E6E800020B3A0216E6F8000002049C +:101A20000A00000E00001020021681740000000061 +:101A30000316817C00020B3C0316818800020B3EDA +:101A40000316819400040B40021681B400000000CC +:101A5000031681BC00020B44031681C800020B462A +:101A6000031681D400040B48021682440E490E4925 +:101A70000216824C00920092021682540124012424 +:101A80000316E6C400020B4C0316E6F000020B4EF0 +:101A90000216E794000000010A00000E000010404A +:101AA00002168174000000010316817C00020B50B5 +:101AB0000316818800020B520316819400040B5414 +:101AC000021681B400000001031681BC00020B580D +:101AD000031681C800020B5A031681D400040B5C64 +:101AE00002168244000000000216824C0FFF0FFF16 +:101AF00002168254000000000316E6C400020B60C8 +:101B00000316E6F000020B620216E79400000000E4 +:101B10000A000007000020000316806000070B6425 +:101B2000031680A400020B6B031680B000020B6D3D +:101B3000021681F4000001C0021682040000003F7A +:101B40000216823C0000007F0316E7BC00080B6F02 +:101B50000A00000F00004020031680F400030B77FA +:101B60000316811800040B7A0316813400030B7EE0 +:101B70000316815800040B8103168174000D0B8538 +:101B8000031681B4000D0B920316824000060B9FD2 +:101B900004168258000000060316827000020BA58E +:101BA0000216880C010101010316881400030BA71B +:101BB0000316882400050BAA0316883C00030BAF0C +:101BC0000316E6C400020BB20216E79400000001FF +:101BD0000A00000D00004040031680F400030BB41F +:101BE0000316811800040BB70316813400030BBBE6 +:101BF0000316815800040BBE03168174000D0BC23E +:101C0000031681B4000D0BCF03168240000E0BDCCF +:101C10000216880C010101010316881400030BEA67 +:101C20000316882400050BED0316883C00030BF215 +:101C30000316E6C400020BF50216E794000000004C +:101C40000A00000D00008000031680F400030BF76B +:101C50000316811800040BFA0316813400030BFEEF +:101C60000316815800040C0103168174000D0C0545 +:101C7000031681B4000D0C1203168240000E0C1FD7 +:101C80000216880C010101200316881400030C2D94 +:101C90000316882400050C300316883C00030C351D +:101CA0000316E6C400020C380216E7940000000197 +:101CB000021680EC000000FF0304040800140C3A34 +:101CC000020404CC000000010305004400020C4E95 +:101CD0000305005000080C500305009000070C5845 +:101CE000030500B000020C5F030500C000020C6198 +:101CF000030500D400020C6302050114000000017A +:101D00000305011C00020C6502050204000000012D +:101D10000305020C00020C670205021C00000020F3 +:101D2000040502400000000A0405400000000D0008 +:101D30000A000002000000080305022000020C69EE +:101D40000305028000200C6B0A0000020000001056 +:101D50000305022000020C8B03050280001D0C8D80 +:101D60000305000400100CAA020500E00000000EAC +:101D7000020500E40000002E020500E00000001E45 +:101D8000020500E40000003E020500E00000004EF5 +:101D9000020500E40000006E020500E00000005EA5 +:101DA000020500E40000007E04164024000000024A +:101DB0000316403000030CBA021640440000002015 +:101DC000021640700000001C0216420800000001CC +:101DD000021642100000000102164220000000011D +:101DE00002164228000000010216423000000001E5 +:101DF0000216423800000001021642600000000294 +:101E00000A000001000000090216401C0003D090E7 +:101E10000A0000010000000A0216401C00000271C6 +:101E20000A0000010000000C0216401C0000009C8B +:101E30000A000001000010010216401C0005B8D87D +:101E40000A000001000010020216401C000003A955 +:101E50000A000001000010040216401C000000EA05 +:101E60000A000001000020010216401C0005B8D83D +:101E70000A000001000020020216401C000003A915 +:101E80000A000001000020040216401C000000EAC5 +:101E90000216400000000001021640D800000001B8 +:101EA0000316400800030CBD02164240000000006B +:101EB00002164248000000000816427000000002AE +:101EC00002164250000000000216425800000000B6 +:101ED00008164280000000020304200800040CC021 +:101EE0000304201C00040CC402042038000000205D +:101EF0000404203C0000001F020420B80000000180 +:101F0000040420BC0000005F0304223800040CC855 +:101F100001042248000000000104224C00000000DF +:101F200001042250000000000104225400000000BF +:101F300001042258000000000104225C000000009F +:101F4000010422600000000001042264000000007F +:101F500001042268000000000104226C000000005F +:101F6000010422700000000001042274000000003F +:101F700001042278000000000104227C000000001F +:101F8000030422C000040CCC0A0000010000000978 +:101F900002042000000003E80A0000010000000A1B +:101FA00002042000000000030A0000010000000CF1 +:101FB00002042000000000010A00000100001001DE +:101FC00002042000000005DC0A00000100001002ED +:101FD00002042000000000040A00000100001004B8 +:101FE00002042000000000010A000001000020019E +:101FF00002042000000005DC0A00000100002002AD +:1020000002042000000000040A0000010000200477 +:10201000020420000000000105180400008A0000EE +:10202000061807B800090CD0041A00000000400090 +:10203000041B2400000016000A0000020000000833 +:10204000021800BC00000032021B945C0000003249 +:10205000031A16C800020CD2031A17D000900CD431 +:10206000031A404000040D64041A405000000006AA +:10207000031A406800020D68031A52C000020D6A7C +:10208000031A800003F90D6C041A8FE400000007A6 +:10209000031B3D9000141165021B800000000034FA +:1020A000021B804000000018021B80800000000C12 +:1020B000021B80C000000020021B8BC0000000013A +:1020C0000A00000200000008021B83800008647000 +:1020D000021B83C0000002260A0000020000000963 +:1020E000021B830000086470021B8340000002266C +:1020F0000A0000020000000A021B83000000055FC6 +:10210000021B8340000000010A0000020000000CD6 +:10211000021B830000000157021B834000000000E7 +:102120000A00000200001000021B8380000C96A829 +:10213000021B83C0000003390A00000200001001E6 +:10214000021B8300000C96A8021B83400000033989 +:102150000A00000200001002021B83000000080EAB +:10216000021B8340000000020A000002000010046D +:10217000021B830000000203021B834000000000DA +:102180000A00000200002000021B8380000CF850AF +:10219000021B83C0000003520A000002000020015D +:1021A000021B8300000CF850021B83400000035206 +:1021B0000A00000200002002021B83000000084DFC +:1021C000021B8340000000020A00000200002004FD +:1021D000021B830000000213021B8340000000006A +:1021E000021B944000000001041B94480000000200 +:1021F000051C0000321E0000051C8000333F0C88C7 +:10220000051D0000361A1958051D800037CC26DF41 +:10221000051E00000E1B34D2061E21E03BC41179BE +:102220000A00000100000001021B148000000001F0 +:102230000A00000100000002021B148000000001DF +:102240000A00000100000004021B148000000000CE +:102250000118000000000000011800040000000048 +:1022600001180008000000000118000C0000000028 +:102270000118001000000000011800140000000008 +:1022800003180020001A117B031800A40002119506 +:1022900002180224000000000218023400000000AE +:1022A0000218024C00000000021802E4000000FFC7 +:1022B00008181000000004000A00000100000010CF +:1022C0000818200000000600031A1A2000041197C5 +:1022D000041A300000000012041A309000000012AE +:1022E000041AD4C800000002041AD4D80000002048 +:1022F000041AD5D800000002041B440000000006A8 +:10230000031A1A300004119B041A3048000000120E +:10231000041A30D800000012041AD4D000000002C1 +:10232000041AD55800000020041AD5E0000000026D +:10233000041B441800000006031A40000002119F0D +:10234000041A500000000002041A5080000000121D +:10235000031A6140000211A1041AA000000000024B +:10236000041B443000000002031A4008000211A3BD +:10237000041A501000000002041A50C80000001295 +:10238000031A6148000211A5041AA0080000000207 +:10239000041B443800000002031A4010000211A779 +:1023A000041A502000000002041A5110000000120C +:1023B000031A6150000211A9041AA01000000002C3 +:1023C000041B444000000002031A4018000211AB35 +:1023D000041A503000000002041A51580000001284 +:1023E000031A6158000211AD041AA018000000027F +:1023F000041B444800000002031A4020000211AFF1 +:10240000041A504000000002041A51A000000012FB +:10241000031A6160000211B1041AA020000000023A +:10242000041B445000000002031A4028000211B3AC +:10243000041A505000000002041A51E80000001273 +:10244000031A6168000211B5041AA02800000002F6 +:10245000041B445800000002031A4030000211B768 +:10246000041A506000000002041A523000000012EA +:10247000031A6170000211B9041AA03000000002B2 +:10248000041B446000000002031A4038000211BB24 +:10249000041A507000000002041A52780000001262 +:1024A000031A6178000211BD041AA038000000026E +:1024B000041B446800000002020E004C00000032C1 +:1024C000030E0054000811BF030E0094000711C74B +:1024D000030E00B4000211CE020E00C40000000082 +:1024E000020E00CC00000006030E00D8000211D03E +:1024F000020E014400000001030E014C000211D243 +:10250000020E020400000001030E020C000211D4AE +:10251000030E021C000411D6030E0280001B11DA08 +:10252000040E030000000012040E2000000008004A +:102530000A00000100000008040E02EC0000000583 +:10254000030E0004001111F5020E01100000000F2F +:10255000020E01140000002F020E01100000001FE7 +:10256000020E01140000003F020E01100000004F97 +:10257000020E01140000006F020E01100000005F47 +:10258000020E01140000007F020C10000000002861 +:10259000030C400800041206030C401C0004120A3D +:1025A000030C40380006120E040C40500000001FBF +:1025B000020C40CC00000001040C40D00000003AA6 +:1025C000030C41B800061214040C41D00000001A9C +:1025D000030C42380004121A010C424800000000AB +:1025E000010C424C00000000010C425000000000B1 +:1025F000010C425400000000010C42580000000091 +:10260000010C425C00000000010C42600000000070 +:10261000010C426400000000010C42680000000050 +:10262000010C426C00000000010C42700000000030 +:10263000010C427400000000010C42780000000010 +:10264000010C427C00000000010C428000000000F0 +:10265000030C42D80004121E0A0000010000000909 +:10266000020C4000000003E80A0000010000000A1C +:10267000020C4000000000030A0000010000000CF2 +:10268000020C4000000000010A00000100001001DF +:10269000020C4000000005DC0A00000100001002EE +:1026A000020C4000000000040A00000100001004B9 +:1026B000020C4000000000010A000001000020019F +:1026C000020C4000000005DC0A00000100002002AE +:1026D000020C4000000000040A0000010000200479 +:1026E000020C4000000000010530040000C00000A2 +:1026F000063007E800031222043200000000400008 +:1027000004332400000016000A0000010000000845 +:10271000023000BC0000003203322C700090122402 +:10272000033234C0000812B40432408000000010AC +:10273000033240C0000212BC03337400000412BE16 +:10274000023380000000001A023380400000004E77 +:102750000233808000000010023380C0000000209F +:1027600002338BC0000000010A00000200000008D4 +:102770000233838000086470023383C000000226A5 +:102780000A000002000000090233830000086470A0 +:1027900002338340000002260A0000020000000A03 +:1027A000023383000000055F023383400000000114 +:1027B0000A0000020000000C0233830000000157F1 +:1027C00002338340000000000A00000200001000F5 +:1027D00002338380000C96A8023383C000000339C3 +:1027E0000A0000020000100102338300000C96A8CA +:1027F00002338340000003390A0000020000100287 +:10280000023383000000080E023383400000000200 +:102810000A000002000010040233830000000203DB +:1028200002338340000000000A0000020000200084 +:1028300002338380000CF850023383C0000003523F +:102840000A0000020000200102338300000CF8504F +:1028500002338340000003520A00000200002002FD +:10286000023383000000084D023383400000000261 +:102870000A0000020000200402338300000002135B +:1028800002338340000000000534000035140000CE +:1028900005348000352E0D450535000038931A911A +:1028A00005358000377D28B60536000034DC3696C5 +:1028B000053680001E3E43CD0636C630273A12C28A +:1028C0000A00000100000001023314800000000132 +:1028D0000A00000100000002023314800000000121 +:1028E0000A00000100000004023314800000000010 +:1028F0000130000000000000013000040000000072 +:1029000001300008000000000130000C0000000051 +:102910000130001000000000013000140000000031 +:1029200003300020001A12C4033000A4000212DE9B +:1029300002300224000000000230023400000000D7 +:102940000230024C00000000023002E40000FFFFF1 +:1029500008302000000008000A00000100000010FC +:10296000083040000000020004322C400000000249 +:1029700003322C50000412E0043293C00000000225 +:1029800004329400000000100432C0000000002057 +:102990000432C100000000200432C2000000002008 +:1029A0000432C300000000200432C40000000020F4 +:1029B0000432C500000000200432C60000000020E0 +:1029C0000432C700000000200432C80000000020CC +:1029D0000432C900000000200432CA0000000020B8 +:1029E0000432CB00000000200432CC0000000020A4 +:1029F0000432CD00000000200432CE000000002090 +:102A00000432CF00000000200432DB80000000020E +:102A100004322C480000000203322C60000412E44F +:102A2000043293C8000000020432944000000010F9 +:102A30000432C080000000200432C1800000002069 +:102A40000432C280000000200432C3800000002055 +:102A50000432C480000000200432C5800000002041 +:102A60000432C680000000200432C780000000202D +:102A70000432C880000000200432C9800000002019 +:102A80000432CA80000000200432CB800000002005 +:102A90000432CC80000000200432CD8000000020F1 +:102AA0000432CE80000000200432CF8000000020DD +:102AB0000432DB8800000002043210100000000223 +:102AC00004322C000000000204321020000000023A +:102AD00004322C0800000002043210300000000212 +:102AE00004322C10000000020432104000000002EA +:102AF00004322C18000000020432105000000002C2 +:102B000004322C2000000002043210600000000299 +:102B100004322C2800000002043210700000000271 +:102B200004322C3000000002043210800000000249 +:102B300004322C380000000202020058000000326B +:102B400003020060000812E8030200A0000B12F06C +:102B5000020200D000000007030200DC000312FBA9 +:102B6000030200F0000212FE020200FC0000000C52 +:102B700002020120000000000202013400000002F5 +:102B8000020201B0000000010202020C000000017C +:102B900003020214000213000202040400000001F8 +:102BA0000302040C000213020302041C00041304B9 +:102BB0000302048000201308040205000000001234 +:102BC0000402800000002000030200040014132807 +:102BD00002020108000000C8020201180000000201 +:102BE000020201C400000000020201CC000000004B +:102BF000020201D400000002020201DC0000000217 +:102C0000020201E4000000FF020201EC000000FFEC +:102C10000202010C000000C80202011C00000002B8 +:102C2000020201C800000000020201D00000000002 +:102C3000020201D800000002020201E000000002CE +:102C4000020201E8000000FF020201F0000000FFA4 +:102C500002020108000000C8020201180000000280 +:102C6000020201C400000000020201CC00000000CA +:102C7000020201D400000002020201DC0000000296 +:102C8000020201E4000000FF020201EC000000FF6C +:102C90000202010C000000C80202011C0000000238 +:102CA000020201C800000000020201D00000000082 +:102CB000020201D800000002020201E0000000024E +:102CC000020201E8000000FF020201F0000000FF24 +:102CD00002020108000000C8020201180000000200 +:102CE000020201C400000000020201CC000000004A +:102CF000020201D400000002020201DC0000000216 +:102D0000020201E4000000FF020201EC000000FFEB +:102D10000202010C000000C80202011C00000002B7 +:102D2000020201C800000000020201D00000000001 +:102D3000020201D800000002020201E000000002CD +:102D4000020201E8000000FF020201F0000000FFA3 +:102D500002020108000000C802020118000000027F +:102D6000020201C400000000020201CC00000000C9 +:102D7000020201D400000002020201DC0000000295 +:102D8000020201E4000000FF020201EC000000FF6B +:102D90000202010C000000C80202011C0000000237 +:102DA000020201C800000000020201D00000000081 +:102DB000020201D800000002020201E0000000024D +:102DC000020201E8000000FF020201F0000000FF23 +:102DD0000216100000000028031660080003133CD0 +:102DE0000316601C0004133F0316603800121343DF +:102DF000041660800000000E021660B8000000019A +:102E0000041660BC00000008021660DC000000012F +:102E1000041660E000000004021660F000000001EB +:102E2000041660F400000031031661B80002135567 +:102E3000041661C000000007031661DC000613578A +:102E4000041661F400000011031662380004135DDB +:102E500001166248000000000116624C00000000EC +:102E600001166250000000000116625400000000CC +:102E700001166258000000000116625C00000000AC +:102E8000011662600000000001166264000000008C +:102E900001166268000000000116626C000000006C +:102EA000011662700000000001166274000000004C +:102EB00001166278000000000116627C000000002C +:102EC000011662D400000000031662D800041361EA +:102ED0000A0000010000000902166000000003E87B +:102EE0000A0000010000000A021660000000000352 +:102EF0000A0000010000000C021660000000000142 +:102F00000A0000010000100102166000000005DC4C +:102F10000A00000100001002021660000000000418 +:102F20000A00000100001004021660000000000109 +:102F30000A0000010000200102166000000005DC0C +:102F40000A000001000020020216600000000004D8 +:102F50000A000001000020040216600000000001C9 +:102F60000528040000AA0000062807C8000713650A +:102F7000042A000000004000042B2400000016007A +:102F80000A00000200000008022800BC0000003215 +:102F9000022B945C00000032032A30000002136709 +:102FA000032A400000101369032A840800081379DB +:102FB000032A934800041381032A966800081385A6 +:102FC000032A98B80002138D032A99500090138F9A +:102FD000032B4D900014141F022B800000000000F2 +:102FE000022B804000000018022B80800000000CA3 +:102FF000022B80C000000066022B8BC00000000185 +:103000000A00000300000008022A9CA80000000239 +:10301000022B838000086470022B83C0000002260C +:103020000A00000200000009022B830000086470FF +:10303000022B8340000002260A0000020000000A62 +:10304000022B83000000055F022B8340000000017B +:103050000A0000020000000C022B83000000015750 +:10306000022B8340000000000A0000030000002043 +:10307000022A9CAC00000000032AC4E000041433C0 +:10308000032AC500000214370A00000200000040B5 +:10309000022A9CAC00000001032AC4E0000A143993 +:1030A0000A00000300001000022A9CA80000000390 +:1030B000022B8380000C96A8022B83C000000339EA +:1030C0000A00000200001001022B8300000C96A8E9 +:1030D000022B8340000003390A00000200001002A6 +:1030E000022B83000000080E022B83400000000228 +:1030F0000A00000200001004022B830000000203FB +:10310000022B8340000000000A00000300002000A2 +:10311000022A9CA800000004022B8380000CF850B7 +:10312000022B83C0000003520A00000200002001AD +:10313000022B8300000CF850022B83400000035246 +:103140000A00000200002002022B83000000084D4C +:10315000022B8340000000020A000002000020044D +:10316000022B830000000213022B834000000000AA +:103170000A00000100004000022A9CB0000000008C +:103180000A00000100008000022A9CB0000000013B +:10319000022B944000000001042B94480000000220 +:1031A000052C000035190000052C800038440D471F +:1031B000052D000039B61B58052D80003CCD29C6D1 +:1031C000052E00003AA338FA052E800031A647A349 +:1031D000052F000023C2540D062F4E8016301443D5 +:1031E0000A00000100000001022B14800000000111 +:1031F0000A00000100000002022B14800000000100 +:103200000A00000100000004022B148000000000EE +:103210000128000000000000012800040000000058 +:1032200001280008000000000128000C0000000038 +:103230000128001000000000012800140000000018 +:1032400003280020001A1445032800A40002145F7C +:1032500002280224000000000228023400000000BE +:103260000228024C00000000022802E40000FFFFD8 +:1032700008282000000008000A00000100000010DB +:103280000828400000000200042A5000000000024C +:10329000042A501000000002042A502000000002FE +:1032A000042A503000000002042A93580000002035 +:1032B000042A94580000000E032A9490000214611E +:1032C000042A94D80000000E032A9510000214630B +:1032D000042A95580000000E032A959000021465F8 +:1032E000042A95D80000000E032A961000021467E5 +:1032F000032A968800021469042ABC980000000280 +:10330000042A500800000002042A5018000000029D +:10331000042A502800000002042A5038000000024D +:10332000042A93D800000020042A94980000000E7C +:10333000032A94D00002146B042A95180000000E92 +:10334000032A95500002146D042A95980000000E7F +:10335000032A95D00002146F042A96180000000E6C +:10336000032A965000021471032A969000021473E7 +:10337000042ABCA000000002042A50480000000EED +:10338000032A969800101475042A98D000000002B1 +:10339000042A991000000002042AC48000000002E0 +:1033A000042A50800000000E032A96D800101485CD +:1033B000042A98D800000002042A9918000000028C +:1033C000042AC48800000002042A50B80000000E3D +:1033D000032A971800101495042A98E000000002B0 +:1033E000042A992000000002042AC4900000000270 +:1033F000042A50F00000000E032A9758001014A56C +:10340000042A98E800000002042A9928000000021B +:10341000042AC49800000002042A51280000000E6B +:10342000032A9798001014B5042A98F000000002AF +:10343000042A993000000002042AC4A000000002FF +:10344000042A51600000000E032A97D8001014C50A +:10345000042A98F800000002042A993800000002AB +:10346000042AC4A800000002042A51980000000E9B +:10347000032A9818001014D5042A990000000002AD +:10348000042A994000000002042AC4B0000000028F +:10349000042A51D00000000E032A9858001014E5A9 +:1034A000042A990800000002042A9948000000023A +:1034B000042AC4B8000000020400A0000000000CB0 +:1034C0000400A050000000020300A0EC000814F566 +:1034D0000300A19C000414FD0200A45C00000C0089 +:1034E0000400A6A8000000020200A6D00000000010 +:1034F0000200A61C000000030300A07000051501D7 +:103500000400A084000000050200A0980FE0000065 +:103510000400A09C000000070300A0B8000D1506E1 +:103520000400A22C000000040200A688000000FC99 +:103530000400A68C000000070200A6F400000000B2 +:103540000300A10C000615130400A12400000005CF +:103550000200A1380FE000000400A13C00000007B9 +:103560000300A158000D15190400A23C000000043E +:103570000200A6B0000000FC0400A6B40000000792 +:103580000200A6F8000000000200A03000000000C9 +:103590000200A034000000000200A038000000007B +:1035A0000200A03C000000000200A040000000005B +:1035B0000200A044000000000200A048000000003B +:1035C0000200A04C0000000000000000000000000D +:1035D00000000001000000000000000000000000EA +:1035E00000000000000000000000000000000000DB +:1035F0000000000000000000000000000001000CBE +:10360000000C00140014001C00000000000000006A +:1036100000000000000000000000000000000000AA +:103620000000000000000000001C002E0000000050 +:1036300000000000002E002F002F0030003000316D +:1036400000310032003200330033003400340035E2 +:10365000003500360036003D00000000000000008C +:10366000000000000000000000000000000000005A +:10367000000000000000000000000000000000004A +:10368000003D00460000000000000000004600472A +:1036900000470048004800490049004A004A004BE2 +:1036A000004B004C004C004D004D004E004E007889 +:1036B000000000000000000000000000000000000A +:1036C00000000000000000000000000000000000FA +:1036D0000000000000000000007801D3000000009E +:1036E0000000000001D301D801D801DD01DD01E2B5 +:1036F00001E201E701E701EC01EC01F101F101F662 +:1037000001F601FB000000000000000000000000C6 +:1037100000000000000000000000000000000000A9 +:103720000000000000000000000000000000000099 +:1037300001FB01FF0000000000000000000000008D +:103740000000000000000000000000000000000079 +:1037500000000000000000000000000001FF020F58 +:103760000000000000000000020F0211021102130D +:103770000213021502150217021702190219021B81 +:10378000021B021D021D021F0000000000000000BD +:103790000000000000000000000000000000000029 +:1037A0000000000000000000000000000000000019 +:1037B00000000000021F02220000000000000000C4 +:1037C00002220225022502280228022B022B022EA9 +:1037D000022E023102310234023402370237023A39 +:1037E000023A023E023E02420242024602460247BC +:1037F00002470248024802490249024A024A024B71 +:10380000024B024C024C024D024D024E024E02533C +:10381000025302700270028C028C028D028D028EA5 +:10382000028E028F028F0290029002910291029208 +:103830000292029302930294029402AB00000000F1 +:103840000000000000000000000000000000000078 +:103850000000000000000000000000000000000068 +:103860000000000002AB02B80000000000000000F1 +:1038700002B802B902B902BA02BA02BB02BB02BC68 +:1038800002BC02BD02BD02BE02BE02BF02BF02C038 +:1038900002C002D100000000000000000000000093 +:1038A0000000000000000000000000000000000018 +:1038B00000000000000000000000000002D102DF54 +:1038C000000000000000000002DF02E002E002E170 +:1038D00002E102E202E202E302E302E402E402E5C0 +:1038E00002E502E602E602E702E702EC0000000061 +:1038F00000000000000000000000000000000000C8 +:1039000000000000000000000000000000000000B7 +:103910000000000002EC038A00000000000000002C +:103920000000000000000000000000000000000097 +:103930000000000000000000000000000000000087 +:10394000038A038C0000000000000000000000005B +:103950000000000000000000000000000000000067 +:10396000000000000000000000000000038C03A025 +:10397000000000000000000003A003A103A103A2B7 +:1039800003A203A303A303A403A403A503A503A6FF +:1039900003A603A703A703A803A803C803C803CB70 +:1039A00003CB03CE00000000000000000000000078 +:1039B0000000000000000000000000000000000007 +:1039C0000000000003CE03F600000000000000002D +:1039D00000000000000000000000000000000000E7 +:1039E00000000000000000000000000000000000D7 +:1039F00003F6044C044C04530453045A045A046060 +:103A0000046004660466046C046C04720472047836 +:103A10000478047E047E04840484048A048A049C5A +:103A20000000000000000000049C049D049D049E12 +:103A3000049E049F049F04A004A004A104A104A266 +:103A400004A204A304A304A404A404A50000000089 +:103A50000000000000000000000000000000000066 +:103A60000000000000000000000000000000000056 +:103A70000000000004A504D00000000000000000C9 +:103A80000000000000000000000000000000000036 +:103A90000000000000000000000000000000000026 +:103AA00004D00520052005350535054A054A054C95 +:103AB000054C054E054E055005500552055205545E +:103AC00005540556055605580558055A055A056DFD +:103AD0000000000000000000056D05750575057DFE +:103AE000057D05850585058D058D05950595059D46 +:103AF000059D05A505A505AD05AD05AE00000000B9 +:103B000000000000000000000000000000000000B5 +:103B100000000000000000000000000000000000A5 +:103B20000000000005AE05DF0000000000000000FE +:103B30000000000000000000000000000000000085 +:103B40000000000000000000000000000000000075 +:103B500005DF0644064406530653066206620667FE +:103B60000667066C066C0671067106760676067B9D +:103B7000067B0680068006850685068A068A0692EA +:103B80000692069B069B06A406A406A506A506A605 +:103B900006A606A706A706A806A806A906A906AAB5 +:103BA00006AA06AB06AB06AC000000000000000051 +:103BB00000002000000040000000600000008000C5 +:103BC0000000A0000000C0000000E00000010000B4 +:103BD00000012000000140000001600000018000A1 +:103BE0000001A0000001C0000001E0000002000090 +:103BF000000220000002400000026000000280007D +:103C00000002A0000002C0000002E000000300006B +:103C10000003200000034000000360000003800058 +:103C20000003A0000003C0000003E0000004000047 +:103C30000004200000044000000460000004800034 +:103C40000004A0000004C0000004E0000005000023 +:103C50000005200000054000000560000005800010 +:103C60000005A0000005C0000005E00000060000FF +:103C700000062000000640000006600000068000EC +:103C80000006A0000006C0000006E00000070000DB +:103C900000072000000740000007600000078000C8 +:103CA0000007A0000007C0000007E00000080000B7 +:103CB00000082000000840000008600000088000A4 +:103CC0000008A0000008C0000008E0000009000093 +:103CD0000009200000094000000960000009800080 +:103CE0000009A0000009C0000009E000000A00006F +:103CF000000A2000000A4000000A6000000A80005C +:103D0000000AA000000AC000000AE000000B00004A +:103D1000000B2000000B4000000B6000000B800037 +:103D2000000BA000000BC000000BE000000C000026 +:103D3000000C2000000C4000000C6000000C800013 +:103D4000000CA000000CC000000CE000000D000002 +:103D5000000D2000000D4000000D6000000D8000EF +:103D6000000DA000000DC000000DE000000E0000DE +:103D7000000E2000000E4000000E6000000E8000CB +:103D8000000EA000000EC000000EE000000F0000BA +:103D9000000F2000000F4000000F6000000F8000A7 +:103DA000000FA000000FC000000FE0000010000096 +:103DB0000010200000104000001060000010800083 +:103DC0000010A0000010C0000010E0000011000072 +:103DD000001120000011400000116000001180005F +:103DE0000011A0000011C0000011E000001200004E +:103DF000001220000012400000126000001280003B +:103E00000012A0000012C0000012E0000013000029 +:103E10000013200000134000001360000013800016 +:103E20000013A0000013C0000013E0000014000005 +:103E300000142000001440000014600000148000F2 +:103E40000014A0000014C0000014E00000150000E1 +:103E500000152000001540000015600000158000CE +:103E60000015A0000015C0000015E00000160000BD +:103E700000162000001640000016600000168000AA +:103E80000016A0000016C0000016E0000017000099 +:103E90000017200000174000001760000017800086 +:103EA0000017A0000017C0000017E0000018000075 +:103EB0000018200000184000001860000018800062 +:103EC0000018A0000018C0000018E0000019000051 +:103ED000001920000019400000196000001980003E +:103EE0000019A0000019C0000019E000001A00002D +:103EF000001A2000001A4000001A6000001A80001A +:103F0000001AA000001AC000001AE000001B000008 +:103F1000001B2000001B4000001B6000001B8000F5 +:103F2000001BA000001BC000001BE000001C0000E4 +:103F3000001C2000001C4000001C6000001C8000D1 +:103F4000001CA000001CC000001CE000001D0000C0 +:103F5000001D2000001D4000001D6000001D8000AD +:103F6000001DA000001DC000001DE000001E00009C +:103F7000001E2000001E4000001E6000001E800089 +:103F8000001EA000001EC000001EE000001F000078 +:103F9000001F2000001F4000001F6000001F800065 +:103FA000001FA000001FC000001FE0000020000054 +:103FB0000020200000204000002060000020800041 +:103FC0000020A0000020C0000020E0000021000030 +:103FD000002120000021400000216000002180001D +:103FE0000021A0000021C0000021E000002200000C +:103FF00000222000002240000022600000228000F9 +:104000000022A0000022C0000022E00000230000E7 +:1040100000232000002340000023600000238000D4 +:104020000023A0000023C0000023E00000240000C3 +:1040300000242000002440000024600000248000B0 +:104040000024A0000024C0000024E000002500009F +:10405000002520000025400000256000002580008C +:104060000025A0000025C0000025E000002600007B +:104070000026200000264000002660000026800068 +:104080000026A0000026C0000026E0000027000057 +:104090000027200000274000002760000027800044 +:1040A0000027A0000027C0000027E0000028000033 +:1040B0000028200000284000002860000028800020 +:1040C0000028A0000028C0000028E000002900000F +:1040D00000292000002940000029600000298000FC +:1040E0000029A0000029C0000029E000002A0000EB +:1040F000002A2000002A4000002A6000002A8000D8 +:10410000002AA000002AC000002AE000002B0000C6 +:10411000002B2000002B4000002B6000002B8000B3 +:10412000002BA000002BC000002BE000002C0000A2 +:10413000002C2000002C4000002C6000002C80008F +:10414000002CA000002CC000002CE000002D00007E +:10415000002D2000002D4000002D6000002D80006B +:10416000002DA000002DC000002DE000002E00005A +:10417000002E2000002E4000002E6000002E800047 +:10418000002EA000002EC000002EE000002F000036 +:10419000002F2000002F4000002F6000002F800023 +:1041A000002FA000002FC000002FE0000030000012 +:1041B00000302000003040000030600000308000FF +:1041C0000030A0000030C0000030E00000310000EE +:1041D00000312000003140000031600000318000DB +:1041E0000031A0000031C0000031E00000320000CA +:1041F00000322000003240000032600000328000B7 +:104200000032A0000032C0000032E00000330000A5 +:104210000033200000334000003360000033800092 +:104220000033A0000033C0000033E0000034000081 +:10423000003420000034400000346000003480006E +:104240000034A0000034C0000034E000003500005D +:10425000003520000035400000356000003580004A +:104260000035A0000035C0000035E0000036000039 +:104270000036200000364000003660000036800026 +:104280000036A0000036C0000036E0000037000015 +:104290000037200000374000003760000037800002 +:1042A0000037A0000037C0000037E00000380000F1 +:1042B00000382000003840000038600000388000DE +:1042C0000038A0000038C0000038E00000390000CD +:1042D00000392000003940000039600000398000BA +:1042E0000039A0000039C0000039E000003A0000A9 +:1042F000003A2000003A4000003A6000003A800096 +:10430000003AA000003AC000003AE000003B000084 +:10431000003B2000003B4000003B6000003B800071 +:10432000003BA000003BC000003BE000003C000060 +:10433000003C2000003C4000003C6000003C80004D +:10434000003CA000003CC000003CE000003D00003C +:10435000003D2000003D4000003D6000003D800029 +:10436000003DA000003DC000003DE000003E000018 +:10437000003E2000003E4000003E6000003E800005 +:10438000003EA000003EC000003EE000003F0000F4 +:10439000003F2000003F4000003F6000003F8000E1 +:1043A000003FA000003FC000003FE00000400000D0 +:1043B00000402000004040000040600000408000BD +:1043C0000040A0000040C0000040E00000410000AC +:1043D0000041200000414000004160000041800099 +:1043E0000041A0000041C0000041E0000042000088 +:1043F0000042200000424000004260000042800075 +:104400000042A0000042C0000042E0000043000063 +:104410000043200000434000004360000043800050 +:104420000043A0000043C0000043E000004400003F +:10443000004420000044400000446000004480002C +:104440000044A0000044C0000044E000004500001B +:104450000045200000454000004560000045800008 +:104460000045A0000045C0000045E00000460000F7 +:1044700000462000004640000046600000468000E4 +:104480000046A0000046C0000046E00000470000D3 +:1044900000472000004740000047600000478000C0 +:1044A0000047A0000047C0000047E00000480000AF +:1044B000004820000048400000486000004880009C +:1044C0000048A0000048C0000048E000004900008B +:1044D0000049200000494000004960000049800078 +:1044E0000049A0000049C0000049E000004A000067 +:1044F000004A2000004A4000004A6000004A800054 +:10450000004AA000004AC000004AE000004B000042 +:10451000004B2000004B4000004B6000004B80002F +:10452000004BA000004BC000004BE000004C00001E +:10453000004C2000004C4000004C6000004C80000B +:10454000004CA000004CC000004CE000004D0000FA +:10455000004D2000004D4000004D6000004D8000E7 +:10456000004DA000004DC000004DE000004E0000D6 +:10457000004E2000004E4000004E6000004E8000C3 +:10458000004EA000004EC000004EE000004F0000B2 +:10459000004F2000004F4000004F6000004F80009F +:1045A000004FA000004FC000004FE000005000008E +:1045B000005020000050400000506000005080007B +:1045C0000050A0000050C0000050E000005100006A +:1045D0000051200000514000005160000051800057 +:1045E0000051A0000051C0000051E0000052000046 +:1045F0000052200000524000005260000052800033 +:104600000052A0000052C0000052E0000053000021 +:10461000005320000053400000536000005380000E +:104620000053A0000053C0000053E00000540000FD +:1046300000542000005440000054600000548000EA +:104640000054A0000054C0000054E00000550000D9 +:1046500000552000005540000055600000558000C6 +:104660000055A0000055C0000055E00000560000B5 +:1046700000562000005640000056600000568000A2 +:104680000056A0000056C0000056E0000057000091 +:10469000005720000057400000576000005780007E +:1046A0000057A0000057C0000057E000005800006D +:1046B000005820000058400000586000005880005A +:1046C0000058A0000058C0000058E0000059000049 +:1046D0000059200000594000005960000059800036 +:1046E0000059A0000059C0000059E000005A000025 +:1046F000005A2000005A4000005A6000005A800012 +:10470000005AA000005AC000005AE000005B000000 +:10471000005B2000005B4000005B6000005B8000ED +:10472000005BA000005BC000005BE000005C0000DC +:10473000005C2000005C4000005C6000005C8000C9 +:10474000005CA000005CC000005CE000005D0000B8 +:10475000005D2000005D4000005D6000005D8000A5 +:10476000005DA000005DC000005DE000005E000094 +:10477000005E2000005E4000005E6000005E800081 +:10478000005EA000005EC000005EE000005F000070 +:10479000005F2000005F4000005F6000005F80005D +:1047A000005FA000005FC000005FE000006000004C +:1047B0000060200000604000006060000060800039 +:1047C0000060A0000060C0000060E0000061000028 +:1047D0000061200000614000006160000061800015 +:1047E0000061A0000061C0000061E0000062000004 +:1047F00000622000006240000062600000628000F1 +:104800000062A0000062C0000062E00000630000DF +:1048100000632000006340000063600000638000CC +:104820000063A0000063C0000063E00000640000BB +:1048300000642000006440000064600000648000A8 +:104840000064A0000064C0000064E0000065000097 +:104850000065200000654000006560000065800084 +:104860000065A0000065C0000065E0000066000073 +:104870000066200000664000006660000066800060 +:104880000066A0000066C0000066E000006700004F +:10489000006720000067400000676000006780003C +:1048A0000067A0000067C0000067E000006800002B +:1048B0000068200000684000006860000068800018 +:1048C0000068A0000068C0000068E0000069000007 +:1048D00000692000006940000069600000698000F4 +:1048E0000069A0000069C0000069E000006A0000E3 +:1048F000006A2000006A4000006A6000006A8000D0 +:10490000006AA000006AC000006AE000006B0000BE +:10491000006B2000006B4000006B6000006B8000AB +:10492000006BA000006BC000006BE000006C00009A +:10493000006C2000006C4000006C6000006C800087 +:10494000006CA000006CC000006CE000006D000076 +:10495000006D2000006D4000006D6000006D800063 +:10496000006DA000006DC000006DE000006E000052 +:10497000006E2000006E4000006E6000006E80003F +:10498000006EA000006EC000006EE000006F00002E +:10499000006F2000006F4000006F6000006F80001B +:1049A000006FA000006FC000006FE000007000000A +:1049B00000702000007040000070600000708000F7 +:1049C0000070A0000070C0000070E00000710000E6 +:1049D00000712000007140000071600000718000D3 +:1049E0000071A0000071C0000071E00000720000C2 +:1049F00000722000007240000072600000728000AF +:104A00000072A0000072C0000072E000007300009D +:104A1000007320000073400000736000007380008A +:104A20000073A0000073C0000073E0000074000079 +:104A30000074200000744000007460000074800066 +:104A40000074A0000074C0000074E0000075000055 +:104A50000075200000754000007560000075800042 +:104A60000075A0000075C0000075E0000076000031 +:104A7000007620000076400000766000007680001E +:104A80000076A0000076C0000076E000007700000D +:104A900000772000007740000077600000778000FA +:104AA0000077A0000077C0000077E00000780000E9 +:104AB00000782000007840000078600000788000D6 +:104AC0000078A0000078C0000078E00000790000C5 +:104AD00000792000007940000079600000798000B2 +:104AE0000079A0000079C0000079E000007A0000A1 +:104AF000007A2000007A4000007A6000007A80008E +:104B0000007AA000007AC000007AE000007B00007C +:104B1000007B2000007B4000007B6000007B800069 +:104B2000007BA000007BC000007BE000007C000058 +:104B3000007C2000007C4000007C6000007C800045 +:104B4000007CA000007CC000007CE000007D000034 +:104B5000007D2000007D4000007D6000007D800021 +:104B6000007DA000007DC000007DE000007E000010 +:104B7000007E2000007E4000007E6000007E8000FD +:104B8000007EA000007EC000007EE000007F0000EC +:104B9000007F2000007F4000007F6000007F8000D9 +:104BA000007FA000007FC000007FE000007FE001E8 +:104BB00000000000000001FF0000020000000000F3 +:104BC000000003FF00000400000000AA000000FA3B +:104BD0000000000A000000320000014A000001EA63 +:104BE0000000000F00000037000000AA000000FADB +:104BF0000000000A000000320000014A000001EA43 +:104C00000000000F0000003700000001000000025B +:104C1000000000000000000802150020021500201E +:104C20000810000000000036000000000000000432 +:104C3000000000040000000000000000000000016F +:104C4000000000040000000200000002000000015B +:104C500000000002000000200000004000000040B2 +:104C6000000000030000001800002000000040C009 +:104C700000006180000082400000A3000000C3C06B +:104C80000000E4800001054000012600000146C04C +:104C900000016780000188400001A9000001C9C02F +:104CA0000001EA8000020B4000022C0000024CC010 +:104CB00000026D8000028E400002AF000002CFC0F3 +:104CC0000002F0800000114000000001000000011F +:104CD00000000001000000010000000100000001D0 +:104CE00000000001000000010000000100000001C0 +:104CF00000000001000000010000000100000001B0 +:104D0000000000010003D0000000003D0000000191 +:104D1000000D0000000700D000028140000B8168F8 +:104D20000002022000010240000F02500001034077 +:104D3000000C0000000800C000028140000B8168E8 +:104D4000000202200001024000070250000202C0DF +:104D5000001000000008010000028180000B81A803 +:104D60000002026000018280000E82980008038029 +:104D7000000F0000000100F000028100000901287E +:104D8000000201B8000101D8000E01E8000002C8CD +:104D9000FFFFFFF301AFFFFF000000000000000075 +:104DA0000000000000000000000000000000000003 +:104DB000FFFFFFF100EFFFFF000000000000000018 +:104DC00000000000000000000001000000000000E2 +:104DD000FFFFFFF6005FFFFF000000000000000083 +:104DE00000000000000000000002000000000000C1 +:104DF000FFFFF4061CBFFFFF0000000500000000DD +:104E0000000000140000000000040000000000008A +:104E1000FFFFFFF2004FFFFF000000000000000056 +:104E2000000000000000000000080000000000007A +:104E3000FFFFFFFA002FFFFF00000000000000004E +:104E40000000000000000000001000000000000052 +:104E5000FFFFFFF701EFFFFF000000000000000070 +:104E60000000000000000000002000000000000022 +:104E7000FFFFFFF5002FFFFF000000000000000013 +:104E800000000000000000000040000000000000E2 +:104E9000FFFFFFF3018FFFFF000000000000000094 +:104EA0000000000000000000000000000000000002 +:104EB000FFFFFFF1010FFFFF0000000000000000F6 +:104EC00000000000000000000001000000000000E1 +:104ED000FFFFFFF6005FFFFF000000000000000082 +:104EE00000000000000000000002000000000000C0 +:104EF000FFFFF4061CBFFFFF0000000500000000DC +:104F00000000001400000000000400000000000089 +:104F1000FFFFFFF2004FFFFF000000000000000055 +:104F20000000000000000000000800000000000079 +:104F3000FFFFFFFA002FFFFF00000000000000004D +:104F40000000000000000000001000000000000051 +:104F5000FFFFFFF700EFFFFF000000000000000070 +:104F60000000000000000000002000000000000021 +:104F7000FFFFFFF5004FFFFF0000000000000000F2 +:104F800000000000000000000040000000000000E1 +:104F9000FFFFFFFF00CFFFFF000000000000000048 +:104FA000000000CC00000000000000000000000035 +:104FB000FFFFFFFF00CFFFFF000000000000000028 +:104FC000000000CC00000000000100000000000014 +:104FD000FFFFFFFF00CFFFFF000000000000000008 +:104FE000000000CC000000000002000000000000F3 +:104FF000FFFFFFFF00CFFFFF0000000000000000E8 +:10500000000000CC000000000004000000000000D0 +:10501000FFFFFFFF00CFFFFF0000000000000000C7 +:10502000000000CC000000000008000000000000AC +:10503000FFFFFFFF00CFFFFF0000000000000000A7 +:10504000000000CC00000000001000000000000084 +:10505000FFFFFFFF00CFFFFF000000000000000087 +:10506000000000CC00000000002000000000000054 +:10507000FFFFFFFF00CFFFFF000000000000000067 +:10508000000000CC00000000004000000000000014 +:10509000FFFFFFF3020FFFFF000000000000000011 +:1050A0000000000000000000000000000000000000 +:1050B000FFFFFFF1010FFFFF0000000000000000F4 +:1050C00000000000000000000001000000000000DF +:1050D000FFFFFFF6005FFFFF000000000000000080 +:1050E00000000000000000000002000000000000BE +:1050F000FFFFF4061CBFFFFF0000000500000000DA +:105100000000001400000000000400000000000087 +:10511000FFFFFFF2004FFFFF000000000000000053 +:105120000000000000000000000800000000000077 +:10513000FFFFFF8A042FFFFF0000000000000000B7 +:10514000000000000000000000100000000000004F +:10515000FFFFFF9705CFFFFF0000000000000000E9 +:10516000000000000000000000200000000000001F +:10517000FFFFFFF5010FFFFF00000000000000002F +:1051800000000000000000000040000000000000DF +:10519000FFFFFFF301EFFFFF000000000000000031 +:1051A00000000000000000000000000000000000FF +:1051B000FFFFFFF1002FFFFF0000000000000000D4 +:1051C00000000000000000000001000000000000DE +:1051D000FFFFFFF6005FFFFF00000000000000007F +:1051E00000000000000000000002000000000000BD +:1051F000FFFFFF061CBFFFFF0000000000000000D3 +:105200000000001400000000000400000000000086 +:10521000FFFFFFF2004FFFFF000000000000000052 +:105220000000000000000000000800000000000076 +:10523000FFFFFFFA002FFFFF00000000000000004A +:10524000000000000000000000100000000000004E +:10525000FFFFFFF701CFFFFF00000000000000008C +:10526000000000000000000000200000000000001E +:10527000FFFFFFFF00CFFFFF000000000000000065 +:10528000000000CC00000000004000000000000012 +:10529000FFFFFFFF00CFFFFF000000000000000045 +:1052A000000000CC00000000000000000000000032 +:1052B000FFFFFFFF00CFFFFF000000000000000025 +:1052C000000000CC00000000000100000000000011 +:1052D000FFFFFFFF00CFFFFF000000000000000005 +:1052E000000000CC000000000002000000000000F0 +:1052F000FFFFFFFF00CFFFFF0000000000000000E5 +:10530000000000CC000000000004000000000000CD +:10531000FFFFFFFF00CFFFFF0000000000000000C4 +:10532000000000CC000000000008000000000000A9 +:10533000FFFFFFFF00CFFFFF0000000000000000A4 +:10534000000000CC00000000001000000000000081 +:10535000FFFFFFFF00CFFFFF000000000000000084 +:10536000000000CC00000000002000000000000051 +:10537000FFFFFFFF00CFFFFF000000000000000064 +:10538000000000CC00000000004000000000000011 +:10539000FFFFFFFF00CFFFFF000000000000000044 +:1053A000000000CC00000000000000000000000031 +:1053B000FFFFFFFF00CFFFFF000000000000000024 +:1053C000000000CC00000000000100000000000010 +:1053D000FFFFFFFF00CFFFFF000000000000000004 +:1053E000000000CC000000000002000000000000EF +:1053F000FFFFFFFF00CFFFFF0000000000000000E4 +:10540000000000CC000000000004000000000000CC +:10541000FFFFFFFF00CFFFFF0000000000000000C3 +:10542000000000CC000000000008000000000000A8 +:10543000FFFFFFFF00CFFFFF0000000000000000A3 +:10544000000000CC00000000001000000000000080 +:10545000FFFFFFFF00CFFFFF000000000000000083 +:10546000000000CC00000000002000000000000050 +:10547000FFFFFFFF00CFFFFF000000000000000063 +:10548000000000CC00000000004000000000000010 +:10549000FFFFFFFF00CFFFFF000000000000000043 +:1054A000000000CC00000000000000000000000030 +:1054B000FFFFFFFF00CFFFFF000000000000000023 +:1054C000000000CC0000000000010000000000000F +:1054D000FFFFFFFF00CFFFFF000000000000000003 +:1054E000000000CC000000000002000000000000EE +:1054F000FFFFFFFF00CFFFFF0000000000000000E3 +:10550000000000CC000000000004000000000000CB +:10551000FFFFFFFF00CFFFFF0000000000000000C2 +:10552000000000CC000000000008000000000000A7 +:10553000FFFFFFFF00CFFFFF0000000000000000A2 +:10554000000000CC0000000000100000000000007F +:10555000FFFFFFFF00CFFFFF000000000000000082 +:10556000000000CC0000000000200000000000004F +:10557000FFFFFFFF00CFFFFF000000000000000062 +:10558000000000CC0000000000400000000000000F +:105590000000003200000032000002110000020092 +:1055A000000002040000FFFF0000FFFF0000FFFFFB +:1055B0000000FFFF00000000000000370000002195 +:1055C00000000020000000010000000100000001B8 +:1055D00007FFFFFF0000007F07FFFFFF0000003F05 +:1055E0000000FFFF0000FFFF0000FFFF0000FFFFC3 +:1055F00000007FF800007FF800000000000028ADE8 +:10560000000029180000291900000005000000070B +:1056100000000000000000000000FF00000000008B +:105620000000FF00000000000000FF00000000007C +:105630000000FF00000000000000FF00000000006C +:105640000000FF00000000000000FF00000000005C +:105650000000FF00000000000000FF00000000004C +:105660000000FF00000000000000FF00000000003C +:105670000000FF00000000000000FF00000000002C +:105680000000FF00000000000000FF00000000001C +:105690000000FF00000000000000FF00000000000C +:1056A0000000FF00000000000000FF0000000000FC +:1056B0000000FF00000000000000FF0000000000EC +:1056C0000000FF00000000000000FF0000000000DC +:1056D0000000FF00000000000000FF0000000000CC +:1056E0000000FF00000000000000FF0000000000BC +:1056F0000000FF00000000000000FF0000000000AC +:105700000000FF00000000000000FF00000000009B +:105710000000FF00000000000000FF00000000008B +:105720000000FF00000000000000FF00000000007B +:105730000000FF00000000000000FF00000000006B +:105740000000FF00000000000000FF00000000005B +:105750000000FF00000000000000FF00000000004B +:105760000000FF00000000000000FF00000000003B +:105770000000FF00000000000000FF00000000002B +:105780000000FF00000000000000FF00000000001B +:105790000000FF00000000000000FF00000000000B +:1057A0000000FF00000000000000FF0000000000FB +:1057B0000000FF00000000000000FF0000000000EB +:1057C0000000FF00000000000000FF0000000000DB +:1057D0000000FF00000000000000FF0000000000CB +:1057E0000000FF00000000000000FF0000000000BB +:1057F0000000FF00000000000000FF0000000000AB +:105800000000FF00000000000000FF00000000009A +:105810000000FF00000000000000FF00000000008A +:105820000000FF00000000000000FF00000000007A +:105830000000FF00000000000000FF00000000006A +:105840000000FF00000000000000FF00000000005A +:105850000000FF00000000000000FF1C0FFFFFFF22 +:105860000000FF1C0FFFFFFF0000FF1C0FFFFFFFEA +:105870000000FF1C0FFFFFFF0000FF1C0FFFFFFFDA +:105880000000FF1C0FFFFFFF0000FF1C0FFFFFFFCA +:105890000000FF1C0FFFFFFF0000FF1C0FFFFFFFBA +:1058A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFAA +:1058B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF9A +:1058C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF8A +:1058D0000000FF1C0FFFFFFF0000FF1C0FFFFFFF7A +:1058E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF6A +:1058F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF5A +:105900000000FF1C0FFFFFFF0000FF1C0FFFFFFF49 +:105910000000FF1C0FFFFFFF0000FF1C0FFFFFFF39 +:105920000000FF1C0FFFFFFF0000FF1C0FFFFFFF29 +:105930000000FF1C0FFFFFFF0000FF1C0FFFFFFF19 +:105940000000FF1C0FFFFFFF0000FF1C0FFFFFFF09 +:105950000000FF1C0FFFFFFF0000FF1C0FFFFFFFF9 +:105960000000FF1C0FFFFFFF0000FF1C0FFFFFFFE9 +:105970000000FF1C0FFFFFFF0000FF1C0FFFFFFFD9 +:105980000000FF1C0FFFFFFF0000FF1C0FFFFFFFC9 +:105990000000FF1C0FFFFFFF0000FF1C0FFFFFFFB9 +:1059A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA9 +:1059B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF99 +:1059C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF89 +:1059D0000000FF1C0FFFFFFF0000FF1C0FFFFFFF79 +:1059E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF69 +:1059F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF59 +:105A00000000FF1C0FFFFFFF0000FF1C0FFFFFFF48 +:105A10000000FF1C0FFFFFFF0000FF1C0FFFFFFF38 +:105A20000000FF1C0FFFFFFF0000FF1C0FFFFFFF28 +:105A30000000FF1C0FFFFFFF0000FF1C0FFFFFFF18 +:105A40000000FF1C0FFFFFFF0000FF1C0FFFFFFF08 +:105A50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF8 +:105A60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE8 +:105A70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD8 +:105A80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC8 +:105A90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB8 +:105AA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA8 +:105AB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF98 +:105AC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF88 +:105AD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF78 +:105AE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF68 +:105AF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF58 +:105B00000000FF1C0FFFFFFF0000FF1C0FFFFFFF47 +:105B10000000FF1C0FFFFFFF0000FF1C0FFFFFFF37 +:105B20000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:105B30000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:105B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:105B50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:105B60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:105B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:105B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:105B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:105BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:105BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:105BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:105BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:105BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF67 +:105BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF57 +:105C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:105C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:105C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:105C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:105C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:105C50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:105C60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:105C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:105C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:105C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:105CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:105CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:105CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF86 +:105CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF76 +:105CE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:105CF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:105D00000000FF1C0FFFFFFF0000FF1C0FFFFFFF45 +:105D10000000FF1C0FFFFFFF0000FF1C0FFFFFFF35 +:105D20000000FF1C0FFFFFFF0000FF1C0FFFFFFF25 +:105D30000000FF1C0FFFFFFF0000FF1C0FFFFFFF15 +:105D40000000FF1C0FFFFFFF0000FF1C0FFFFFFF05 +:105D50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF5 +:105D60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE5 +:105D70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD5 +:105D80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC5 +:105D90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB5 +:105DA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA5 +:105DB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF95 +:105DC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF85 +:105DD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF75 +:105DE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF65 +:105DF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF55 +:105E00000000FF1C0FFFFFFF0000FF1C0FFFFFFF44 +:105E10000000FF1C0FFFFFFF0000FF1C0FFFFFFF34 +:105E20000000FF1C0FFFFFFF0000FF1C0FFFFFFF24 +:105E30000000FF1C0FFFFFFF0000FF1C0FFFFFFF14 +:105E40000000FF1C0FFFFFFF0000FF1C0FFFFFFF04 +:105E50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF4 +:105E60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE4 +:105E70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD4 +:105E80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC4 +:105E90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB4 +:105EA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA4 +:105EB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF94 +:105EC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF84 +:105ED0000000FF1C0FFFFFFF0000FF1C0FFFFFFF74 +:105EE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF64 +:105EF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF54 +:105F00000000FF1C0FFFFFFF0000FF1C0FFFFFFF43 +:105F10000000FF1C0FFFFFFF0000FF1C0FFFFFFF33 +:105F20000000FF1C0FFFFFFF0000FF1C0FFFFFFF23 +:105F30000000FF1C0FFFFFFF0000FF1C0FFFFFFF13 +:105F40000000FF1C0FFFFFFF0000FF1C0FFFFFFF03 +:105F50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF3 +:105F60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE3 +:105F70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD3 +:105F80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC3 +:105F90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB3 +:105FA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA3 +:105FB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF93 +:105FC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF83 +:105FD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF73 +:105FE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF63 +:105FF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF53 +:106000000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:106010000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:106020000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:106030000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:106040000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:106050000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:106060000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:106070000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:106080000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:106090000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1060A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1060B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1060C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:1060D0000000FF1C0FFFFFFF0000097800003500E3 +:1060E00000000001000000020000000300000000AA +:1060F000000000040000000100000000000000019A +:106100000000000400000000000000010000000387 +:10611000000000000000000100000004000000007A +:10612000000000010000000300000000000000016A +:106130000000000400000000000000040000000354 +:10614000000000000000000000007FFF000003FFCF +:10615000000000000000000100000001000000013C +:10616000000000000000000200000090000000900D +:106170000080009008100000000009FF0000076C7C +:106180000000008A00000080000000810000008004 +:106190000000008A000000800000008100000080F4 +:1061A0000000008A000000800000008100000080E4 +:1061B0000000008A000000800000008100000080D4 +:1061C0000000008A000000800000008100000080C4 +:1061D00000000001000000010000000100000001BB +:1061E00000000001000000010000000100000001AB +:1061F000000000010000000000000000000000019D +:106200000000000200000000000000060000000383 +:106210000000000400000005000000010000000173 +:10622000000000010000000100000001000000016A +:10623000000000010000000100000001000000015A +:10624000000000010000000100000001000000014A +:1062500000000001000000010000000300006000D9 +:106260000000000300006000000000030000400088 +:106270000000030000000300000003000000030012 +:106280000000030000000300000003000003F0080A +:1062900000000000000000000000000000000001FD +:1062A00000000001000000010000000100000001EA +:1062B00000000001000000010000000100000001DA +:1062C00000000001000000010000000100000001CA +:1062D00000000001000000010000000100000001BA +:1062E00000000001000000010000000100000001AA +:1062F000000000010000000100000001000000019A +:106300000000000100000001000000010000000189 +:106310000000000100000001000000FF000000FF7D +:10632000000000FF000000FF0000007F000000FFF1 +:10633000000000FF000000FF0000003E0000000021 +:106340000000003F0000003F0000003F0000003F51 +:106350000000003F0000003F0000003F0000000F71 +:106360000000000012170000221700003217000082 +:106370001215000022150000321500000210000066 +:10638000001000001010000020100000301000006D +:1063900040100000000000000000000000000000AD +:1063A000001000001214000022140000321400003B +:1063B0004214000000000000000000000000000087 +:1063C0000000890600008926000000360000003623 +:1063D0000810000008100000FFFFFFFFFFFFFFFF95 +:1063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:1063F000FFFFFFFFFFFFFFFFF000C000FFFFFFFFF9 +:10640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:10641000FFFFFFFFFFFFFFFFF800C000FFFFFFFFD0 +:10642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +:10643000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +:10644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +:10645000FFFFFFFFFFFFFFFF00003C1000000008F0 +:106460000000000800000002000000040000000519 +:1064700000000004000000400000180800000803AD +:1064800000000803000000400000000300000803B3 +:1064900000000803000008030001000300000803D7 +:1064A00000000803000000030000000300000003D8 +:1064B00000000003000000030000000300000003D0 +:1064C00000000003000000030000000300000003C0 +:1064D00000000003000000030000000300000003B0 +:1064E000000024030000002F000000090000001934 +:1064F0000000018400000183000003060000001971 +:10650000000000060000030600000306000003066A +:1065100000000C86000003060000030600000006D1 +:106520000000000600000006000000060000000653 +:106530000000000600000006000000060000000643 +:106540000000000600000006000000060000000633 +:106550000000000600000006000003060000001313 +:106560000000000600001004000010040010644049 +:10657000001064400000004000000019000000010D +:10658000000000000000000000000000000000000B +:1065900000002000000000000000000000000000DB +:1065A00000000000040020000000000000000000C7 +:1065B000000000000000000041002000000000007A +:1065C00000000000000000000000000000002000AB +:1065D0000000007C0000003D0000003F0000009C27 +:1065E0000000000C000000050000000A000000058B +:1065F00000000053000025E3000000540000005498 +:10660000000000040000000400000004000000047A +:10661000000000040000000400000004000000046A +:106620000000000000000001000000020000000067 +:106630000000000100000002000000090000000B43 +:106640000000000A0000000000000001000000023D +:10665000000000000000000100000002000000092E +:106660000000000B0000000A000000090000000B01 +:106670000000000A000000090000000B0000000AF2 +:1066800000000000000008000000020000000400FC +:1066900000000000000000001FFF1FFF1FFF1FFF82 +:1066A0001FFF1FFF1FFF1FFF000025E400008000E9 +:1066B000200020002000200080008000800080005A +:1066C00040004000400040000000000000000002C8 +:1066D00000000178000001780000000000000000C8 +:1066E0000000017800000000000000000000000031 +:1066F0000000000100000002000000000000000097 +:106700000000000000000004000000000000000184 +:106710000000000200000000000000000000000077 +:106720000000000400000000000000010000000262 +:106730000000000000000001000000020000000056 +:106740000000000100000002000000000000000046 +:106750000000000000000004000000000000000134 +:106760000000000200000000000000010000000224 +:106770000000000000000001000000020000000016 +:1067800000000000000000000000000400000013F2 +:106790000E490E490E490E49009200920092009255 +:1067A0000124012401240124000000000000000055 +:1067B0001000100010001000200101200101100144 +:1067C000010101012001012001011001200101202E +:1067D000010110010101010120010120010110014D +:1067E0000101010100000004000000060200410454 +:1067F00002004104020041040200410400000204BE +:10680000000002CE000002CE0000000000000000E8 +:10681000000002CC000000000000000000000000AA +:106820000000000100000002000000000000000065 +:106830000000000000000004000000000000000153 +:106840000000000200000000000000000000000046 +:1068500000000004000000130E490E490000000073 +:1068600000000000100010001000100020010120A6 +:1068700001011001010101012001012001011001AC +:10688000200101200101100101010101200101206D +:106890000101100101010101020041040200410453 +:1068A00000000002000000000000000200000000E4 +:1068B00000000002000000000000000000000000D6 +:1068C00000000002000000000000000200000000C4 +:1068D00000000002000000000000000000000000B6 +:1068E0000000000400000006020041040200410410 +:1068F0000000000100000001000000010000000194 +:106900000000000100000001000000010000000183 +:106910000000000100000001000000010000000173 +:106920000000000100000001000000010000000163 +:106930000000000100000003025555550255555551 +:10694000000002CE000002CE000002CE000002CE07 +:10695000000002CE000002CE000002CC0000005475 +:10696000000000540000005400000054000000002B +:10697000000000010000000200000000000000060E +:1069800000000003000000040000000500000000FB +:1069900000000001000000020000000000000000F4 +:1069A00000000000000000060000000000000001E0 +:1069B00000000002000000000000000000000000D5 +:1069C00000000006000000000000000100000002BE +:1069D00000000000000000010000000200000000B4 +:1069E00000000001000000020000000000000000A4 +:1069F0000000000000000006000000000000000190 +:106A00000000000200000000000000010000000281 +:106A10000000000000000001000000020000000073 +:106A20000000000000000000000000060E490E49B2 +:106A30000E490E4900920092009200920124012416 +:106A4000012401241000100010001000200101207A +:106A500001011001010101012001012001011001CA +:106A6000200101200101100101010101200101208B +:106A700001011001010101010000000400000006F5 +:106A80000000000000000001000000020000000003 +:106A900000000000000000000000000600000000F0 +:106AA00000000001000000020000000000000000E3 +:106AB00000000000000000060000000300000004C9 +:106AC00000000005000000030000000400000005B5 +:106AD00000000003000000040000000500000003A7 +:106AE0000000000300000003000000060000000397 +:106AF0000000000400000005000000030000000486 +:106B00000000000500000003000000040000000574 +:106B10000000000300000003000000030000000666 +:106B20000E490E4900000000009200920000000093 +:106B30000124012400000000000000000E490E495D +:106B400000000000009200920000000001240124D7 +:106B500010001000100010002001012001011001A0 +:106B6000010101012001012001011001200101208A +:106B700001011001010101012001012001011001A9 +:106B800001010101000000010000000300000004F9 +:106B900000000003000000040000000500000003E6 +:106BA00000000006000000050000000400000003D3 +:106BB00000000004000000050000000300000006C3 +:106BC00000000005000000040000000300000004B5 +:106BD00000000000000000010000000200000000B2 +:106BE000000000010000000200000005000000039A +:106BF0000000000600000005000000040000000383 +:106C0000000000040000000000000001000000027D +:106C1000000000000000000100000002000000056C +:106C200000000003000000060000000500480048C6 +:106C30000048004800900090009000900120012042 +:106C400001200120040204020402040200050005E0 +:106C500000050005120012001200120008000800D2 +:106C6000080008000120012001011020010101207D +:106C7000012001200101102001200120010110202C +:106C8000010101200120012001011020010101204A +:106C900000000004000000060000012300000123A2 +:106CA0000000012300000123000001230000012354 +:106CB0000000012300000123000001230000012344 +:106CC0000000012300000123000001230000012334 +:106CD0000000012300000123000001230000012324 +:106CE000000001230000012300000020000000320A +:106CF000000000070000000700000000000000087E +:106D00000000000100000000000000000000000082 +:106D100002150020021500200000003008100000BD +:106D200000000036000000300000003100000004C8 +:106D30000000000500000000000000040000000149 +:106D400000000006000000010000000200000040FA +:106D5000000000400000001C0000002000010000B6 +:106D60000002070000030E000004150000051C00CF +:106D70000006230000072A0000083100000938003F +:106D8000000A3F00000B4600000C4D00000D5400AF +:106D9000000E5B00000F620000106900001170001F +:106DA0000012770000137E000014850000158C008F +:106DB0000016930000179A000018A1000019A800FF +:106DC000001AAF00001BB600001CBD00001DC4006F +:106DD000001ECB00001FD2000000D9000000001EE2 +:106DE0000000001D000100000002078000030F00EA +:106DF0000004168000051E000006258000072D00F7 +:106E00000008348000093C00000A4380000B4B005E +:106E1000000C5280000D5A00000E6180000F6900C6 +:106E2000001070800011780000127F80001387002E +:106E300000148E800015960000169D800017A50096 +:106E40000018AC800019B400001ABB80001BC300FE +:106E5000001CCA800000D2000000000100000001F8 +:106E6000000000010000000100000001000000011E +:106E7000000000010000000100000001000000010E +:106E800000000001000000010000000100000001FE +:106E90000000000100000001000000280000002C9C +:106EA00000000030000000010000000100000001AF +:106EB000000002110000020000000204000002199C +:106EC0000000FFFF0000FFFF0000FFFF0000FFFFCA +:106ED00007FFFFFF0000007F07FFFFFF0000003FEC +:106EE0000000FFFF0000FFFF0000FFFF0000FFFFAA +:106EF00000007FF800007FF80000000000000001A3 +:106F00000000FF00000000000000FF000000000083 +:106F10000000FF00000000000000FF000000000073 +:106F20000000FF00000000000000FF000000000063 +:106F30000000FF00000000000000FF000000000053 +:106F40000000FF00000000000000FF000000000043 +:106F50000000FF00000000000000FF000000000033 +:106F60000000FF00000000000000FF000000000023 +:106F70000000FF00000000000000FF000000000013 +:106F80000000FF00000000000000FF000000000003 +:106F90000000FF00000000000000FF0000000000F3 +:106FA0000000FF00000000000000FF0000000000E3 +:106FB0000000FF00000000000000FF0000000000D3 +:106FC0000000FF00000000000000FF0000000000C3 +:106FD0000000FF00000000000000FF0000000000B3 +:106FE0000000FF00000000000000FF0000000000A3 +:106FF0000000FF00000000000000FF000000000093 +:107000000000FF00000000000000FF000000000082 +:107010000000FF00000000000000FF000000000072 +:107020000000FF00000000000000FF000000000062 +:107030000000FF00000000000000FF000000000052 +:107040000000FF00000000000000FF000000000042 +:107050000000FF00000000000000FF000000000032 +:107060000000FF00000000000000FF000000000022 +:107070000000FF00000000000000FF000000000012 +:107080000000FF00000000000000FF000000000002 +:107090000000FF00000000000000FF0000000000F2 +:1070A0000000FF00000000000000FF0000000000E2 +:1070B0000000FF00000000000000FF0000000000D2 +:1070C0000000FF00000000000000FF0000000000C2 +:1070D0000000FF00000000000000FF0000000000B2 +:1070E0000000FF00000000000000FF0000000000A2 +:1070F0000000FF00000000000000FF000000000092 +:107100000000FF00000000000000FF000000000081 +:107110000000FF00000000000000FF000000000071 +:107120000000FF00000000000000FF000000000061 +:107130000000FF00000000000000FF000000000051 +:10714000002010010000000001009000000001007C +:10715000000000010000000000000000140AFF0011 +:10716000000090020000000000000000000000008D +:10717000000090040000000000000000000000007B +:107180000000900600000000000000000000000069 +:107190000000900800000000000000000000000057 +:1071A0000000900A00000000000000000000000045 +:1071B0000000900C00000000000000000000000033 +:1071C0000000900E00000000000000000000000021 +:1071D000000090100000000000000000000000000F +:1071E00000009012000000000000000000000000FD +:1071F00000009014000000000000000000000000EB +:1072000000009016000000000000000000000000D8 +:1072100000009018000000000000000000000000C6 +:107220000000901A000000000000000000000000B4 +:107230000000901C000000000000000000000000A2 +:107240000000901E00000000000000000000000090 +:10725000000090200000000000000000000000007E +:10726000000090220000000000000000000000006C +:10727000000090240000000000000000000000005A +:107280000000902600000000000000000000000048 +:107290000000902800000000000000000000000036 +:1072A0000000902A00000000000000000000000024 +:1072B0000000902C00000000000000000000000012 +:1072C0000000902E00000000000000000000000000 +:1072D00000009030000000000000000000000000EE +:1072E00000009032000000000000000000000000DC +:1072F00000009034000000000000000000000000CA +:1073000000009036000000000000000000000000B7 +:1073100000009038000000000000000000000000A5 +:107320000000903A00000000000000000000000093 +:107330000000903C00000000000000000000000081 +:107340000000903E0000000000000000000000006F +:10735000000090400000000000000000000000005D +:10736000000090420000000000000000000000004B +:107370000000904400000000000000000000000039 +:107380000000904600000000000000000000000027 +:107390000000904800000000000000000000000015 +:1073A0000000904A00000000000000000000000003 +:1073B0000000904C000000000000000000000000F1 +:1073C0000000904E000000000000000000000000DF +:1073D00000009050000000000000000000000000CD +:1073E00000009052000000000000000000000000BB +:1073F00000009054000000000000000000000000A9 +:107400000000905600000000000000000000000096 +:107410000000905800000000000000000000000084 +:107420000000905A00000000000000000000000072 +:107430000000905C00000000000000000000000060 +:107440000000905E0000000000000000000000004E +:10745000000090600000000000000000000000003C +:10746000000090620000000000000000000000002A +:107470000000906400000000000000000000000018 +:107480000000906600000000000000000000000006 +:1074900000009068000000000000000000000000F4 +:1074A0000000906A000000000000000000000000E2 +:1074B0000000906C000000000000000000000000D0 +:1074C0000000906E000000000000000000000000BE +:1074D00000009070000000000000000000000000AC +:1074E000000090720000000000000000000000009A +:1074F0000000907400000000000000000000000088 +:107500000000907600000000000000000000000075 +:107510000000907800000000000000000000000063 +:107520000000907A00000000000000000000000051 +:107530000000907C0000000000000000000000003F +:107540000000907E0000000000000000000000002D +:10755000000090800000000000000000000000001B +:107560000000908200000000000000000000000009 +:1075700000009084000000000000000000000000F7 +:1075800000009086000000000000000000000000E5 +:1075900000009088000000000000000000000000D3 +:1075A0000000908A000000000000000000000000C1 +:1075B0000000908C000000000000000000000000AF +:1075C0000000908E0000000000000000000000009D +:1075D000000090900000000000000000000000008B +:1075E0000000909200000000000000000000000079 +:1075F0000000909400000000000000000000000067 +:107600000000909600000000000000000000000054 +:107610000000909800000000000000000000000042 +:107620000000909A00000000000000000000000030 +:107630000000909C0000000000000000000000001E +:107640000000909E0000000000000000000000000C +:10765000000090A0000000000000000000000000FA +:10766000000090A2000000000000000000000000E8 +:10767000000090A4000000000000000000000000D6 +:10768000000090A6000000000000000000000000C4 +:10769000000090A8000000000000000000000000B2 +:1076A000000090AA000000000000000000000000A0 +:1076B000000090AC0000000000000000000000008E +:1076C000000090AE0000000000000000000000007C +:1076D000000090B00000000000000000000000006A +:1076E000000090B200000000000000000000000058 +:1076F000000090B400000000000000000000000046 +:10770000000090B600000000000000000000000033 +:10771000000090B800000000000000000000000021 +:10772000000090BA0000000000000000000000000F +:10773000000090BC000000000000000000000000FD +:10774000000090BE000000000000000000000000EB +:10775000000090C0000000000000000000000000D9 +:10776000000090C2000000000000000000000000C7 +:10777000000090C4000000000000000000000000B5 +:10778000000090C6000000000000000000000000A3 +:10779000000090C800000000000000000000000091 +:1077A000000090CA0000000000000000000000007F +:1077B000000090CC0000000000000000000000006D +:1077C000000090CE0000000000000000000000005B +:1077D000000090D000000000000000000000000049 +:1077E000000090D200000000000000000000000037 +:1077F000000090D400000000000000000000000025 +:10780000000090D600000000000000000000000012 +:10781000000090D800000000000000000000000000 +:10782000000090DA000000000000000000000000EE +:10783000000090DC000000000000000000000000DC +:10784000000090DE000000000000000000000000CA +:10785000000090E0000000000000000000000000B8 +:10786000000090E2000000000000000000000000A6 +:10787000000090E400000000000000000000000094 +:10788000000090E600000000000000000000000082 +:10789000000090E800000000000000000000000070 +:1078A000000090EA0000000000000000000000005E +:1078B000000090EC0000000000000000000000004C +:1078C000000090EE0000000000000000000000003A +:1078D000000090F000000000000000000000000028 +:1078E000000090F200000000000000000000000016 +:1078F000000090F400000000000000000000000004 +:10790000000090F6000000000000000000000000F1 +:10791000000090F8000000000000000000000000DF +:10792000000090FA000000000000000000000000CD +:10793000000090FC000000000000000000000000BB +:10794000000090FE000000000000000000000000A9 +:107950000000910000000000000000000000000096 +:107960000000910200000000000000000000000084 +:107970000000910400000000000000000000000072 +:107980000000910600000000000000000000000060 +:10799000000091080000000000000000000000004E +:1079A0000000910A0000000000000000000000003C +:1079B0000000910C0000000000000000000000002A +:1079C0000000910E00000000000000000000000018 +:1079D0000000911000000000000000000000000006 +:1079E00000009112000000000000000000000000F4 +:1079F00000009114000000000000000000000000E2 +:107A000000009116000000000000000000000000CF +:107A100000009118000000000000000000000000BD +:107A20000000911A000000000000000000000000AB +:107A30000000911C00000000000000000000000099 +:107A40000000911E00000000000000000000000087 +:107A50000000912000000000000000000000000075 +:107A60000000912200000000000000000000000063 +:107A70000000912400000000000000000000000051 +:107A8000000091260000000000000000000000003F +:107A9000000091280000000000000000000000002D +:107AA0000000912A0000000000000000000000001B +:107AB0000000912C00000000000000000000000009 +:107AC0000000912E000000000000000000000000F7 +:107AD00000009130000000000000000000000000E5 +:107AE00000009132000000000000000000000000D3 +:107AF00000009134000000000000000000000000C1 +:107B000000009136000000000000000000000000AE +:107B1000000091380000000000000000000000009C +:107B20000000913A0000000000000000000000008A +:107B30000000913C00000000000000000000000078 +:107B40000000913E00000000000000000000000066 +:107B50000000914000000000000000000000000054 +:107B60000000914200000000000000000000000042 +:107B70000000914400000000000000000000000030 +:107B8000000091460000000000000000000000001E +:107B9000000091480000000000000000000000000C +:107BA0000000914A000000000000000000000000FA +:107BB0000000914C000000000000000000000000E8 +:107BC0000000914E000000000000000000000000D6 +:107BD00000009150000000000000000000000000C4 +:107BE00000009152000000000000000000000000B2 +:107BF00000009154000000000000000000000000A0 +:107C0000000091560000000000000000000000008D +:107C1000000091580000000000000000000000007B +:107C20000000915A00000000000000000000000069 +:107C30000000915C00000000000000000000000057 +:107C40000000915E00000000000000000000000045 +:107C50000000916000000000000000000000000033 +:107C60000000916200000000000000000000000021 +:107C7000000091640000000000000000000000000F +:107C800000009166000000000000000000000000FD +:107C900000009168000000000000000000000000EB +:107CA0000000916A000000000000000000000000D9 +:107CB0000000916C000000000000000000000000C7 +:107CC0000000916E000000000000000000000000B5 +:107CD00000009170000000000000000000000000A3 +:107CE0000000917200000000000000000000000091 +:107CF000000091740000000000000000000000007F +:107D0000000091760000000000000000000000006C +:107D1000000091780000000000000000000000005A +:107D20000000917A00000000000000000000000048 +:107D30000000917C00000000000000000000000036 +:107D40000000917E00000000000000000000000024 +:107D50000000918000000000000000000000000012 +:107D60000000918200000000000000000000000000 +:107D700000009184000000000000000000000000EE +:107D800000009186000000000000000000000000DC +:107D900000009188000000000000000000000000CA +:107DA0000000918A000000000000000000000000B8 +:107DB0000000918C000000000000000000000000A6 +:107DC0000000918E00000000000000000000000094 +:107DD0000000919000000000000000000000000082 +:107DE0000000919200000000000000000000000070 +:107DF000000091940000000000000000000000005E +:107E0000000091960000000000000000000000004B +:107E10000000919800000000000000000000000039 +:107E20000000919A00000000000000000000000027 +:107E30000000919C00000000000000000000000015 +:107E40000000919E00000000000000000000000003 +:107E5000000091A0000000000000000000000000F1 +:107E6000000091A2000000000000000000000000DF +:107E7000000091A4000000000000000000000000CD +:107E8000000091A6000000000000000000000000BB +:107E9000000091A8000000000000000000000000A9 +:107EA000000091AA00000000000000000000000097 +:107EB000000091AC00000000000000000000000085 +:107EC000000091AE00000000000000000000000073 +:107ED000000091B000000000000000000000000061 +:107EE000000091B20000000000000000000000004F +:107EF000000091B40000000000000000000000003D +:107F0000000091B60000000000000000000000002A +:107F1000000091B800000000000000000000000018 +:107F2000000091BA00000000000000000000000006 +:107F3000000091BC000000000000000000000000F4 +:107F4000000091BE000000000000000000000000E2 +:107F5000000091C0000000000000000000000000D0 +:107F6000000091C2000000000000000000000000BE +:107F7000000091C4000000000000000000000000AC +:107F8000000091C60000000000000000000000009A +:107F9000000091C800000000000000000000000088 +:107FA000000091CA00000000000000000000000076 +:107FB000000091CC00000000000000000000000064 +:107FC000000091CE00000000000000000000000052 +:107FD000000091D000000000000000000000000040 +:107FE000000091D20000000000000000000000002E +:107FF000000091D40000000000000000000000001C +:10800000000091D600000000000000000000000009 +:10801000000091D8000000000000000000000000F7 +:10802000000091DA000000000000000000000000E5 +:10803000000091DC000000000000000000000000D3 +:10804000000091DE000000000000000000000000C1 +:10805000000091E0000000000000000000000000AF +:10806000000091E20000000000000000000000009D +:10807000000091E40000000000000000000000008B +:10808000000091E600000000000000000000000079 +:10809000000091E800000000000000000000000067 +:1080A000000091EA00000000000000000000000055 +:1080B000000091EC00000000000000000000000043 +:1080C000000091EE00000000000000000000000031 +:1080D000000091F00000000000000000000000001F +:1080E000000091F20000000000000000000000000D +:1080F000000091F4000000000000000000000000FB +:10810000000091F6000000000000000000000000E8 +:10811000000091F8000000000000000000000000D6 +:10812000000091FA000000000000000000000000C4 +:10813000000091FC000000000000000000000000B2 +:10814000000091FEFFFFFFFFFFFFFFFFFFFFFFFFAC +:10815000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +:10816000FFFFFFFF0000FFFF00000000FFFFFFFF19 +:10817000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +:10818000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFD +:10819000000000000000039A00003500000000010C +:1081A00000000002000000030000000000000004C6 +:1081B00000000001000000000000000100000004B9 +:1081C00000000000000000010000000300000000AB +:1081D0000000000100000004000000000000000199 +:1081E0000000000300000000000000010000000487 +:1081F0000000000000000004000000030000000078 +:108200000000000000007FFF000003FFFFFFFFFFF2 +:10821000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +:10822000FFFFFFFFFFFFFFFFFFFFFFFF0000000357 +:1082300000BEBC200000000000000005000000039C +:1082400000BEBC200000000000000005000000038C +:1082500000BEBC200000000000000005000000037C +:1082600000BEBC200000000000000005000000036C +:1082700000BEBC200000000000000005000000035C +:1082800000BEBC200000000000000005000000034C +:1082900000BEBC200000000000000005000000033C +:1082A00000BEBC2000000000000000050000000D22 +:1082B0000000000C00000000000000100000000F93 +:1082C0000000000000000000000000000215002077 +:1082D00002150020000000300810000000000036E9 +:1082E000000000300000003100000003000000002A +:1082F0000000000100000003000000010000000277 +:1083000000000040000000400000000400000020C9 +:108310000000000F0000001B00008000000103C0EF +:108320000001878000020B4000028F00000312C092 +:108330000003968000041A4000049E00000521C03E +:108340000005A580000629400006AD00000730C0EA +:108350000007B480000838400008BC0000093FC096 +:108360000009C380000A4740000ACB00000B4EC042 +:10837000000BD280000C5640000CDA00000D5DC0EE +:108380000000618000000001000000010000000109 +:1083900000000001000000010000000100000001D9 +:1083A00000000001000000010000000100000001C9 +:1083B00000000001000000010000000100000001B9 +:1083C00000000001000000010000050E000004FD97 +:1083D000000005010000051E0000FFFF0000FFFF78 +:1083E0000000FFFF0000FFFF000000460000000C3F +:1083F00000000000000000000000001C000000F46D +:10840000000000010000000000000000000000006B +:10841000000000010000000107FFFFFF0000007FD7 +:1084200007FFFFFF0000003F0000FFFF0000FFFF0D +:108430000000FFFF0000FFFF00007FF800007FF852 +:108440000000FF00000000000000FF00000000002E +:108450000000FF00000000000000FF00000000001E +:108460000000FF00000000000000FF00000000000E +:108470000000FF00000000000000FF0000000000FE +:108480000000FF00000000000000FF0000000000EE +:108490000000FF00000000000000FF0000000000DE +:1084A0000000FF00000000000000FF0000000000CE +:1084B0000000FF00000000000000FF0000000000BE +:1084C0000000FF00000000000000FF0000000000AE +:1084D0000000FF00000000000000FF00000000009E +:1084E0000000FF00000000000000FF00000000008E +:1084F0000000FF00000000000000FF00000000007E +:108500000000FF00000000000000FF00000000006D +:108510000000FF00000000000000FF00000000005D +:108520000000FF00000000000000FF00000000004D +:108530000000FF00000000000000FF00000000003D +:108540000000FF00000000000000FF00000000002D +:108550000000FF00000000000000FF00000000001D +:108560000000FF00000000000000FF00000000000D +:108570000000FF00000000000000FF0000000000FD +:108580000000FF00000000000000FF0000000000ED +:108590000000FF00000000000000FF0000000000DD +:1085A0000000FF00000000000000FF0000000000CD +:1085B0000000FF00000000000000FF0000000000BD +:1085C0000000FF00000000000000FF0000000000AD +:1085D0000000FF00000000000000FF00000000009D +:1085E0000000FF00000000000000FF00000000008D +:1085F0000000FF00000000000000FF00000000007D +:108600000000FF00000000000000FF00000000006C +:108610000000FF00000000000000FF00000000005C +:108620000000FF00000000000000FF00000000004C +:108630000000FF00000000000000FF00000000003C +:108640000000FF00000000000000FF00000000002C +:108650000000FF00000000000000FF00000000001C +:108660000000FF00000000000000FF00000000000C +:108670000000FF00000000000000FF0000000000FC +:10868000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +:10869000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +:1086A00000001900000000000000000100000000B0 +:1086B0000000000000000000000001C400003500C0 +:1086C00000000001000000020000000300000000A4 +:1086D0000000000400000001000000000000000194 +:1086E0000000000400000000000000010000000382 +:1086F0000000000000000001000000040000000075 +:108700000000000100000003000000000000000164 +:10871000000000040000000000000004000000034E +:10872000000000000000000000007FFF000003FFC9 +:10873000000000000393870000000000000000001C +:10874000000000000393870000000000000000000C +:108750000000000F00000007000000000000000EF5 +:108760000000000E000000000000000000000000FB +:108770000315002003150020010000300810000040 +:108780000000003600000030000000310000000250 +:1087900000000005000000020000000200000000D0 +:1087A00000000005000000030000000100000004BC +:1087B0000000000100000002000000400000004036 +:1087C0000000000400000020000000020000002063 +:1087D00000001000000020800000310000004180F7 +:1087E00000005200000062800000730000008380DF +:1087F000000094000000A4800000B5000000C580C7 +:108800000000D6000000E6800000F70000010780AD +:108810000001180000012880000139000001498092 +:1088200000015A0000016A8000017B0000018B807A +:1088300000019C000001AC800001BD000001CD8062 +:108840000001DE000001EE800001FF0000000F804B +:108850000000000100000001000000010000000114 +:108860000000000100000001000000010000000104 +:1088700000000001000000010000000100000001F4 +:1088800000000001000000010000000100000001E4 +:1088900000000001000000010000000100000001D4 +:1088A0000000121400001200000012040000FFFF7C +:1088B0000000FFFF0000FFFF0000FFFF000000209E +:1088C000000000380000000000000000000000234D +:1088D0000000002400000025000000260000002702 +:1088E000000000390000003A0000002B0000002CBE +:1088F00000000000000000EC000000000000002963 +:108900000000002A0000000100000001000000013A +:108910000000000100000000000000000000000056 +:108920000000000107FFFFFF0000007F07FFFFFFBF +:108930000000003F0000FFFF0000FFFF0000FFFFFE +:108940000000FFFF00007FF800007FF8000000003B +:1089500000000001CCCC0201CCCCCCCCCCCC0201B0 +:10896000CCCCCCCCCCCC0201CCCCCCCCCCCC020171 +:10897000CCCCCCCCCCCC0201CCCCCCCCCCCC020161 +:10898000CCCCCCCCCCCC0201CCCCCCCCCCCC020151 +:10899000CCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFB3 +:1089A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +:1089B000FFFFFFFF0000000000010001003302077D +:1089C000CCCCCCC910000000000028AD0000291854 +:1089D0000000291900000000000000000000000550 +:1089E000000000067058103C000000000000FF006E +:1089F000000000000000FF00000000000000FF0079 +:108A0000000000000000FF00000000000000FF0068 +:108A1000000000000000FF00000000000000FF0058 +:108A2000000000000000FF00000000000000FF0048 +:108A3000000000000000FF00000000000000FF0038 +:108A4000000000000000FF00000000000000FF0028 +:108A5000000000000000FF00000000000000FF0018 +:108A6000000000000000FF00000000000000FF0008 +:108A7000000000000000FF00000000000000FF00F8 +:108A8000000000000000FF00000000000000FF00E8 +:108A9000000000000000FF00000000000000FF00D8 +:108AA000000000000000FF00000000000000FF00C8 +:108AB000000000000000FF00000000000000FF00B8 +:108AC000000000000000FF00000000000000FF00A8 +:108AD000000000000000FF00000000000000FF0098 +:108AE000000000000000FF00000000000000FF0088 +:108AF000000000000000FF00000000000000FF0078 +:108B0000000000000000FF00000000000000FF0067 +:108B1000000000000000FF00000000000000FF0057 +:108B2000000000000000FF00000000000000FF0047 +:108B3000000000000000FF00000000000000FF0037 +:108B4000000000000000FF00000000000000FF0027 +:108B5000000000000000FF00000000000000FF0017 +:108B6000000000000000FF00000000000000FF0007 +:108B7000000000000000FF00000000000000FF00F7 +:108B8000000000000000FF00000000000000FF00E7 +:108B9000000000000000FF00000000000000FF00D7 +:108BA000000000000000FF00000000000000FF00C7 +:108BB000000000000000FF00000000000000FF00B7 +:108BC000000000000000FF00000000000000FF00A7 +:108BD000000000000000FF00000000000000FF0097 +:108BE000000000000000FF00000000000000FF0087 +:108BF000000000000000FF00000000000000FF0077 +:108C0000000000000000FF00000000000000FF0066 +:108C1000000000000000FF00000000000000FF0056 +:108C2000000000000000FF0000000000FFFFFFFF49 +:108C3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +:108C4000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF32 +:108C500000000000FFFFFFFFFFFFFFFFFFFFFFFF20 +:108C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +:108C7000FFFFFFFF0000FFFF0000000003231303BE +:108C80001303231303030323A0B090430200020045 +:108C9000060406040323130313032313030303230C +:108CA000A0B09043131313131313131313131313BD +:108CB000A0B0904303010200000000000000054B3B +:108CC0000000350000000001000000020000000369 +:108CD000000000000000000400000001000000008F +:108CE000000000010000000400000000000000017E +:108CF000000000030000000000000001000000046C +:108D0000000000000000000100000003000000005F +:108D1000000000010000000400000000000000044A +:108D200000000003000000000000000000007FFFC2 +:108D3000000003FF002625A000000000002625A05B +:108D400000000000002625A000000000002625A04D +:108D500000000000000E0000011600D6002625A02D +:108D600000000000002625A000000000002625A02D +:108D700000000000002625A0000000000072000096 +:108D8000012300F30000FFFF000000000000FFFFD0 +:108D9000000000000000FFFF000000000000FFFFD7 +:108DA000000000000000FFFF000000000000FFFFC7 +:108DB0000000000000000000000000000000FFFFB5 +:108DC000000000000000FFFF000000000000FFFFA7 +:108DD000000000000000FFFF000000000000FFFF97 +:108DE000000000000000FFFF000000000000FFFF87 +:108DF0000000000000000000000000000000FFFF75 +:108E0000000000000000FFFF000000000000FFFF66 +:108E1000000000000000FFFF000000000000FFFF56 +:108E2000000000000000FFFF000000000000FFFF46 +:108E30000000000000000000000000000000FFFF34 +:108E4000000000000000FFFF000000000000FFFF26 +:108E5000000000000000FFFF000000000000FFFF16 +:108E6000000000000000FFFF000000000000FFFF06 +:108E70000000000000000000000000000000FFFFF4 +:108E8000000000000000FFFF000000000000FFFFE6 +:108E9000000000000000FFFF000000000000FFFFD6 +:108EA000000000000000FFFF000000000000FFFFC6 +:108EB0000000000000000000000000000000FFFFB4 +:108EC000000000000000FFFF000000000000FFFFA6 +:108ED000000000000000FFFF000000000000FFFF96 +:108EE000000000000000FFFF000000000000FFFF86 +:108EF0000000000000000000000000000000FFFF74 +:108F0000000000000000FFFF000000000000FFFF65 +:108F1000000000000000FFFF000000000000FFFF55 +:108F2000000000000000FFFF000000000000FFFF45 +:108F30000000000000000000000000000000FFFF33 +:108F4000000000000000FFFF000000000000FFFF25 +:108F5000000000000000FFFF000000000000FFFF15 +:108F6000000000000000FFFF000000000000FFFF05 +:108F70000000000000000000000000000000FFFFF3 +:108F8000000000005554000055555555000055553A +:108F9000F00000005554000055555555000055553A +:108FA000F00000000000000000010000000050146C +:108FB00000000000FFF55FFF0000FFFFF00003E08E +:108FC000000000000000A0000000040000000000FD +:108FD0000000000000000000000010000000000081 +:108FE0000000000000000000000040000000000041 +:108FF000000000000000000000010000FF5C000015 +:10900000FFF55FFF0000FFFFF00003E0000000003D +:109010000000A000000008000000000000000000A8 +:109020000000000000002000000000000000000020 +:1090300000000000000080000000000000000000B0 +:10904000000000000002000000000000000000001E +:109050001F8B080000000000000BFB51CFC0F00385 +:10906000094F1745E59B72A3F2D1F1091EFCF2846A +:10907000300B0365FA0F7130309C02E27B1C68EE06 +:109080006682D06940F12476060623207D9615215C +:109090001F0FB5574C1B21364F8381E1962A84CD93 +:1090A000A74699BB46F1D0C0EEE6A87C4F53087D99 +:1090B000D40C427BA0C97B41E5FF1A42D59B6337A4 +:1090C000F79F2171F68BD8A1F267DBE257DFED0441 +:1090D000A10190B60D18B8030000000000000000C8 +:1090E0001F8B080000000000000BD57D0D7854D5C3 +:1090F00099F0B977EECCDC99DC99DCC0244C608027 +:10910000999048D088130C1815EB4D8818BB743B08 +:1091100022DA68A91D2D6254D491D24A5B752E249F +:109120008410038C7F08F83720BAD48A0D2DB6EE50 +:1091300057DD9DA0CBEA6EBFDD48D5456BB7235602 +:1091400056FDD44DD95AECB758BFF77DCFBD33F794 +:109150004E66F2E3B6BBCF171F9FCBB9F7FCBCE757 +:109160003DEF79FFCF19B778263B6526639FE1DF96 +:10917000F98CED7430C6E6E79FE1C4F71EC93631BD +:10918000F6B12EB13E78EAAD89BFCA06E0B9DEADD0 +:1091900076C1F3FEB23BE8FB5A4956DD5168C31273 +:1091A00067C54E676C4392B1CC6C2A9F816517638B +:1091B000DA80921FC77C4E66228DC358483D56C642 +:1091C000E8EF3318DBCDCA988EE3AA2CDD17819720 +:1091D0006FC65B5815630E5E059E4BB49FC2F8C107 +:1091E000456CD87D76BE3F87EA6219D9E8872A2E7A +:1091F0002F8F1719D77CAE7DF3AAF40B96FAB5CC56 +:109200001738761AFC436212C2C11CFD8C211C2146 +:10921000967608A5FB39918CA75FA8437C7DB53C69 +:10922000E62B5DCFC44B5F52661937635D49959E4F +:10923000DE10D3D200A717F0F4A30678D6EB346E75 +:109240006FA866779980D0C51983F97A5E99B5BB06 +:109250000FCA5F6002E1AD3774B7AC8D323F560B79 +:10926000F8A837E657C310ABD40F83F93C065D94DA +:10927000C1B8BBA17D59C3C8F110FFE6784B3EE7EA +:10928000786E7609E1C33987B12105F10AE3C0534D +:109290000CEB7A16E6C9C27CBDA430AF3F16FE5C6B +:1092A00001D1B6BE65F55E5B595226D9D7BF80AEF7 +:1092B00018CEBF121E41562FC1FC9CCC1BC5F9AD68 +:1092C00012E2D7E0FBF0B35FD5BA013FC73536DC19 +:1092D00007656720CE907ECC761755AE203C498A34 +:1092E00098760BF4247C1E47FA003A750744DD3D5E +:1092F000B7085E42B0034CB86A46810BD61FE99CA2 +:109300003E014E5A3E91A87F6F14F6018CE76359D7 +:10931000DA04E50C16641663152C2CF04D111510AB +:109320006F8C2D54917E039E3F75BFCBA95F41BBCF +:109330008B7D5636817E25E877D69FA1DF31E0F51B +:10934000B007A95F5C9DCF26E7FBDD04FB8E19FB10 +:109350000E9F6EA849FBBB81F3998DC920BD67D2D2 +:10936000D39A08E3295157B80FF85A99926111A876 +:10937000F7EF2DF230D00E438E86742EE2FACD42F6 +:109380003A646F89B0EE65513BFF914396FD300A18 +:109390003D6EA83C654ABC61947D050C2922E7DB43 +:1093A00095AAF7E77E7601FF8A38F36549A9C9D304 +:1093B000F528F373AC893346741F63280F72ED45AB +:1093C000161F8079772957CB387F76F2B3CF1C0BE5 +:1093D0002C7C5E893517C3CBAF5884F8915976AA97 +:1093E0003DB7087E78065768590B3CBFC67FE03E04 +:1093F0000EAED2B2E358875E67ACE32A946FF3599E +:10940000F431A0BBBBCAAE646F35A09CBB32837481 +:10941000D253591571A33C62EBB9DC9215262FC8C3 +:10942000D3E960E56541E46B1BAA2F0B229FDBE0CB +:109430008C0563507EB1F227DA55D8FE6439433982 +:10944000D913AC29C779F59C9C352551647E658C70 +:10945000F30B2FC217E1F4C6EAF3F0F6044519E165 +:1094600039DEC0F9CE5D657FA339A0EC0A4B09EC6B +:10947000DFA5C0B8307E7BD38086F371C595B85B1D +:109480001DD98F390EFC099F21DFC73AE6BE136C48 +:10949000DF8BC231B21CD76A90AFAA2CDA57A4BEB8 +:1094A00053F6EB657391EFE6DEAB386EEDCF4F2FE1 +:1094B00047BAC0FA6119871634DC5779FA4FDBD600 +:1094C0009BA962BEDF9AFCFA494CEF159A700BCB50 +:1094D00009DCB78578ED71B14EA43726691D88BFC8 +:1094E0006E61D23CD46B4AD1BB14ECFDAD03E005F8 +:1094F000DC6590BEDCC1C5BA0BDB8162339958458F +:10950000FF9030979EBF75E077557ADF4A7F7305ED +:10951000D027109967B1B370FE5D0A5FF752E3A1DF +:109520007EC06697FEEE7445E33192478923420080 +:10953000E73B97E09742878E44008EF3052EA7A560 +:10954000804B47B8992A7D90B5E06986A49D2FE0AD +:109550007EF0F27E0AFB3F436A5D2440FBA34C6B26 +:10956000138AE8654C8141CF2E0D5F9E7F6B7EA1F3 +:109570008AD32FFF4B674480D31157345C176F3465 +:10958000CA50CE1E6A06CC36C3E77AE928C2A9C102 +:109590007F7C3DA36C0FD29126C7FA8026FD0BE19C +:1095A000BB05AFCEA6792C03EDD5AB95447933D26C +:1095B000136F6FD2A9A3A0FCF5C275483EC3DEAEFF +:1095C000B3E88D25F4D3B71DADD714C7C3A471E19B +:1095D000017504ACC794442FAE17489B619CCF0320 +:1095E000C63ADF6FC8A3BB0C79B4D9903FDDC93050 +:1095F0007DBF33594FE5ADC92895EF4936D3734741 +:1096000052A3E743C9767ADE978C513D5775B78CE4 +:10961000FACA03D5033B04D4C7F5ACF67368F280ED +:109620006FE07546FAF99BDACF6188078087B3A9A6 +:1096300020EF84D7341DEB570C5C2E0208FB26FF6D +:10964000BDFE423594EB065E17A0FCFCBA7FC874E1 +:1096500063FDD379FD5DC27B9A0EF4FB808775D0E4 +:109660003E0A2D1B030F9C4F3E8D7880E70395D05B +:109670004E197FBBE7B01DE0F181C8C4C6F348298D +:109680008DCF57687905E6EF9139FCFF22FC3BCD81 +:109690009758D5398C6585DFEA349FD38DFE413EDE +:1096A0005D6A914FBF109C1CEEC689C1FDAA315F57 +:1096B000796196C6FA0B213E80FBAEBC6108745FEF +:1096C0002087250319628F21208AEAB1E968AA1050 +:1096D000E6FBCAA8EF5A116535F0EA7FA3D0999F3F +:1096E0007F3F63ADC690BFFC0D2E1EBCBF6F59AB54 +:1096F000CCF557D84830AF43C67BD39E905E72906E +:10970000DEF302BEAF1C59DFB403CC7A25E154C7A7 +:10971000D06FC7394F26817E00FADB7EA6DAE6FBE2 +:1097200030536DF3F4287CBF8E773D485183FE6E35 +:109730002FE877754179DA93226B86AD1D5A6591D2 +:109740002FF07F70B9D7569ED436C956F6374DB52F +:10975000E9414ED5AE17290DA7DAEAAB0BE7D9CA16 +:109760008125E7D8EA4F5DD16AFB3E63CD176DDFF7 +:10977000AB962D1D5DEF1A27BEEF29987F6F4179BB +:10978000BCFD4C36F89CF9BEEA8A0571D2E79634E6 +:1097900071FE27C52EAA837FBE775FDDBC3E56AC27 +:1097A0009F75B44EB31DDA6491E407E7DFA22E90F3 +:1097B0007EBD4D885D7C01FA1FCE03BD8CA1DE6F9E +:1097C000E7EFCC5A768C2CCF12053EAF257C3EE7D6 +:1097D0009F3C5F463AF3FAC418D9DDCEB43AA921CA +:1097E0003F9F2A432F35E13FFFE43F3B70BF74A901 +:1097F00061B287B75DF1C5E0D5CA48F8CDFEEF5438 +:10980000C4F634B62F90BF774A03B2751CB3FE5826 +:10981000F8AD0B271E41BFCBF8FD303186F2F6D6EE +:109820002F8B642FF517F81D7AD1EF00E51E9037C6 +:10983000DC4FA31E41FDF1C4392C8CF5FD81AC86B3 +:10984000F2E32BE2452DF5009F3FA8058350DEFF94 +:10985000B7B3D6B54D4755374BF8BBA77969391B18 +:10986000C51FE08B8A36FBA7D05EF784EDF6BA3BC6 +:109870003875547BE91DDCC780673FD895D1067CDD +:10988000723EE028FF20B8D2A2575D283AB8DDE149 +:10989000B838817ACE1681F377F37B5AE47EA797A6 +:1098A000418DC6E7F927B78A7C7DB97DA9F85A753D +:1098B000D42F40114DD4A923D7517166885EFEA7DD +:1098C000F1D055910DA2BE9B46E5F30BC07714D0A5 +:1098D000FBE09FD2E4E5FA37E07D17D8038E28EA53 +:1098E000DDCA5BF8DE897A2AE8851E31BE5E9C4FB0 +:1098F000FE0D01F729D859F4FC9F9E8FC3D1389CE7 +:1099000041BDEF5C5774371BB96E3FC675ABC4F5EC +:1099100035D7EDCB64BF9BEBD6A7F075835D537451 +:10992000DD3A45CEDFFAA434EDC3F34F968BD4BEB7 +:109930005924F9D6AFCCDB340BDBBFE260A01EB2FA +:109940007E2943F5FEBBF1500897CF07704199BDC2 +:10995000CAE1F23987D4FF09B84AD2DBA48EB1E854 +:109960006D48AC1C496FEB0DB9EC288B75E03ECD12 +:10997000CFBB6637CE1BE9506CC0F5E676CD66836B +:10998000AF6E9686FE5BD725C7AFE5D495C8273A5C +:109990001517F1C91B1CFAA138F28932813D06F373 +:1099A000461F31F2F36BEE7346910E3B5F75343B0D +:1099B000C2C02F1C1E9BFD6A3E3B25205150053A1C +:1099C000C18E447CB1B4733867E7D48CF44F7F22E6 +:1099D0001AFE69C38E397EEFA5E519561A0FEF27D7 +:1099E0005F54A5BABC7FBAF0FB0D0E962039270F45 +:1099F000B8685EB7A53C7D8D38BF53DA52B06E9320 +:109A00001D7C9F9976DF0D7B5F52250B9E3AEF758B +:109A1000BEE52E02770E5F663B103FEE4923DB97D3 +:109A20006A07F86B43789C4DDCEF7EBD231E740003 +:109A30001CDEBDB76440D3023A1A203DD7EC3F0F7D +:109A40003FEC6D037E36B708BCAAF816FA67C782EA +:109A5000772C797CFCDE0D3DE8CF7ACF199D81FE15 +:109A60009DCEFED934DED5861E64E2FD9AFB3654C7 +:109A7000158B3FE4F0EEE85F8C707FCCF47A4723DF +:109A8000954FE984F7B112F432167D2C74FC37D16E +:109A900007CC17E9E32B267DF45612DD4F983ECC18 +:109AA0007613A40FA087AF3AE0A949B1CB2E07B82F +:109AB0007C0D2CDA17CED387D9EF08BA30D6E9F36C +:109AC000C239165DC86B1DE1DF9CC95844D2488E6F +:109AD000F6AAEB755A5FB455D02F916A243F22083D +:109AE0005AF22FC25F06F9A9AC6AC4E7BD60B4A2FE +:109AF000DD55D6648F73B80BF857B043CB98FDE2B1 +:109B0000BCE5B52E1A173D2838AEA4B08C07E76324 +:109B1000F8A9912C518F76B35FB6CFE2ED085FA51F +:109B2000E62331EEC7467712EAD76EF6D572ABDF81 +:109B300076E4FCEDE30497C5468DE314D6678A14FA +:109B40003E66C17BE976123B66D1EBB7236FAECCA4 +:109B5000E35F0BAF26BF9E8F8951D493BB423FD1A9 +:109B6000F1EB46C6F7650F3E912E82DC7F733D32E6 +:109B70006768A70B0B32118C2F68F230CA2F8792BF +:109B8000E0FC25383E3F8FD7E0FB174BB127914FC4 +:109B9000DD59C952C8CF73F874813D813450BF8CF0 +:109BA000DB07A7AFD4D11FE49CA136E214226017D3 +:109BB0005C7CBAB55F6EB7F626D3EC6D673E0E25BA +:109BC0008763FC69D019ABE7FCAAB781EB6BB23CA9 +:109BD000C0548CE7A5F667307E91A7339D2D3B1DC1 +:109BE000D791CBC53BE149FE5EC3AFEA0C7A6DF27B +:109BF0002F474FF5E3E3875B9261E16D4B5CC08FCC +:109C0000FEB422F2F92587605BAFAEA47EDE6F2C36 +:109C1000ED1C5294E09714786FA177F3FB78C73965 +:109C2000EA102704D7AB0EC1F08B70B86E45BE07A3 +:109C3000709CB863485A0ACF2F655E976AD01F227E +:109C4000F17A27EEE07EE4C3C94FEC7E44A98ABED8 +:109C50007F69C9CBD222CB385F32FC8B8C0D491780 +:109C6000FBACF833EC4665F8F9CF308ED8E4203DF4 +:109C7000B614BE970617A5A5C9F9F2E12607E94370 +:109C800087C10E427E70B82992D68BF8690AFDE72B +:109C90004B838BA99F13B70F49319A874C78C279B0 +:109CA0008601BE2FB5BF2C619C772CB87F5BB0FFBF +:109CB000B6623F284F6ECF30EC57C9BCC4B03F6589 +:109CC0006146D314CEEF104EE5C5C9A4DF815D2DEA +:109CD0002F3D3DDF9FD9BFAF609E9BA3A6DEC7E7A8 +:109CE000B9391A1ED73C7DC63CF3F2DDC0F3427190 +:109CF000543CFF6B524B4B45E4A1F9BCF23C31861E +:109D0000F05CE9CC5616D3430BE1F8FADA96B4646A +:109D1000F5D77C4E387EBD10F00078FCB534ECFBF6 +:109D20005CE3021EEACD3C0AC0DF891AA6B5A3DDBA +:109D30003B89113E81C08FA3FC33E39A92FC97ECE0 +:109D4000B67916FA56E1BB4D4FE6F54D7E9C9383EE +:109D500028C760DD1D811ED2FF1D012FD9098E800D +:109D6000742C5B000FC5E76608C41FBB4CFECCD843 +:109D70000B12FA279BA28F227EAE00066AC8FD2B2B +:109D8000241E5FD0D60528BE40711E371B2059E522 +:109D9000ACAA2FE77A6171BEBD313934C58A4F1341 +:109DA0005F1B9D867FF7E4A22CCA6349ACBF05FD0B +:109DB000F4E3F5F3F74D173A46837F751EFED5069B +:109DC000FCFAD514A702F8619C32354DF1D1BE39A9 +:109DD000A78C0A7F6F09F87BF3F0D723DFEF161B00 +:109DE0002604BF09776E9C3A46F1A34DC6BC0AE72C +:109DF000B3A9CE45FEE3EE39D14791756E31E60742 +:109E0000D3A17587796EC1799AFD492AD7D77B236B +:109E1000DBB4F518B7848A28674BC1E7915F9B6272 +:109E2000DDB70F4ADCFFDB8DAF50DF37E2C8CE3045 +:109E30008F73AD93E20F4A28C7423D644739032927 +:109E40009293DE7A98C71918C767042FA871E9861C +:109E500008E6BB008D62BE4BE5D03E2C433DA65AC2 +:109E6000CA393C54EA41C5A2BF6F88F41C71639C97 +:109E700035C0C2B391DE3297137F7306402E639EC6 +:109E80009394D1907E80FC23E8A774C9031ACA7901 +:109E9000D600E5308C1348B316E8AFF753078F3779 +:109EA000A0F16799FFFD12975B85EB536AFD7E6118 +:109EB000ACCF5233CE54B04E83B82EF3693D062555 +:109EC000926F5A664DD3C87DF38B2FCDE674D75E63 +:109ED0005CCF5D2AFF628A74A6858F1AF91933F167 +:109EE0005F302F97A1FF78EBD5D771FE4E5C5F589E +:109EF000B24742EDC44B1C8EF04BEBA08E1A4EAF16 +:109F0000C3F8C7CCA9F1C356FA9879DB30AD57BF77 +:109F100093FB7B2E70F47B8E42797BBCA61CFDAC40 +:109F20009F4842513C3C9A84B93A310E26D3F3C43F +:109F3000AF668F1A5FDD986469C9A20F6CEC9788D1 +:109F40009F6E0CCD3B8C7C7043A0761EB2312DD819 +:109F5000F84627DA15F561F257BF678C0F787C8FCA +:109F6000E391D3B969873AB5218DF416364471F877 +:109F7000EA008B66C29CCF49163CF99A86D7D50673 +:109F80002814358CF8013CFC07E2415AC15A60A5FF +:109F900046E0617B9CE717ADBEE694DD0E0B5D5E8F +:109FA000E8148D3C26C3FE95A2F5C5F4EDBC7E06F3 +:109FB00024E8247044AC176E06BB1AF6CD4EE3FDC0 +:109FC000D352CCE1847985F5A813C73F6CF8DD0442 +:109FD000264B01E4874DEA2EA4A72DE7788D7DAFAF +:109FE000EEC27DEF739AF97BB97DEF7316D9F7FD59 +:109FF000CEB88AFD7B3B531917E0C1DF3C44EFBB71 +:10A0000044D0A31402F330D2535860F93F18675A72 +:10A0100094FBDBE73B39FED55AA01F44E5BB65AD99 +:10A020002B00AE4D184FC6F8F0F46CAC06F7D9AB68 +:10A030000E86FB6C66D38196362C833E5F1E847E33 +:10A04000560DB72C82FAE5867E3FF33655C4796EFD +:10A050004A72BF78297AF1B852944711AE5DB904BB +:10A06000ED46E1145944BEB1E9461675C3384AEDD0 +:10A07000B137F1BD3F920AA23F7A6A6746BB1AC662 +:10A08000F583F987EB3B554BF1BC1729BD0EF30661 +:10A090003C896814E94965E91619D63394C8509E7D +:10A0A00091AFA38C61FD2E677C3EE24F8972FEE585 +:10A0B000A94DD373877388F4621FE85108CFA39B1F +:10A0C000B7B1AB2C74BED858074F13CF2334E9EE89 +:10A0D000112391E6EEF6E39E6B1BB09E97CB5B7669 +:10A0E000AFA63620BDA6348C13F80C7A057ABC00D6 +:10A0F000C72FBF2DDD8278969A580B7601FB90F220 +:10A1000093763853D508C78ECDAE0E8A6FE8EC35FE +:10A11000B600DA8BF675536AB53DB86E9F4A3C7E41 +:10A12000EAB835937908C60936BBD530E0DFD77673 +:10A1300028F31C9617C931A919CAD9C1CCAFA07C84 +:10A1400008F080F9551B4377EB6EE867663BE688BD +:10A1500022790FB418530923BECA3B79BE16E0EB2F +:10A16000AB4857FE381BC4F5F0AA43BA0495364AEB +:10A17000895FDF0EFD6D7CD111D599659F30D827A1 +:10A18000163B4B0EB111FA91755F8D2537F3F636FC +:10A190009743A6FF0FF6D38D884749E5FB69BC7E40 +:10A1A000A5165811B45FA7AE31F25E0D3E3BCD400F +:10A1B0006D886507C508F113D109CFC8B2F07ADC04 +:10A1C000D6B396A7AB77C1FCBB2B5EABE6F1DB3613 +:10A1D00015ED64419B2C7C76DAF8EDE95CBC799551 +:10A1E0003DDFA25CB3977DCD96F81A437952188F64 +:10A1F00033F80EFE13F11E8E46ADFC69B367683B63 +:10A20000C5E7F5A156CC47D82C0C7560E8D175CFC1 +:10A210003FB4B643FDCDBEA12086A43D771EA6B2B5 +:10A220006F86993F3A2CA39DFB136798D3FB428C12 +:10A23000BD32966A92488FDEAA4DAAC0EF83D97BC1 +:10A24000880E53A05F63BE96593F957530DC87FD3D +:10A25000501F9D0FFD0BA17E83A53F804534BE237B +:10A26000FE4F34F2FE4E80CE3584F42E65687C516C +:10A2700093D924A8B7D5A867F6E3CD0ED3BECAF507 +:10A2800007AA0996BD0B5394E3EAD5E2FA41E443E9 +:10A2900051319D16E83BEE31D03DA47406CB5A3ABD +:10A2A000832E89C15FB93D59CBFE4E45391C149CA4 +:10A2B000AE6663F27BD48FBF61D18FB1DC85FA6665 +:10A2C00058227D13F8F4F3B86FA42689FCA15A53E1 +:10A2D0000B43B96DFAD1CC71C6A4FF71D6037E4D84 +:10A2E000EBD1F3A640F8AA9C11DB85FE16F61AE71F +:10A2F000D77A6B2C82FB5AFFD732B50BE9474A9CC1 +:10A300007589657E66DE7420C6FD2027D0BF62C9D0 +:10A31000B3FDBE23FE2B9C8F50D511C7FD73EB51AF +:10A32000218CB93795CBB8BF642D4C91FC219A98FC +:10A330007ECCDC5748377BA6103CD2E4E555C8DF1D +:10A34000525ACDA87998A03F446B2DFA37F019598D +:10A35000E5FA835CAC9D3BE88AD602034BB587A740 +:10A36000A8A3C4D346E9D763F51FCF76C4FFE09C0A +:10A370003FB2FFC278B947394072C733C138F9F6E6 +:10A38000AB560671BCC014AD11F7DF7D2E9689C1A6 +:10A390009E089469FB71BF5EDE337B9102FB31E066 +:10A3A000D61A4528FFAEC7B5A81FCBA8E08052F348 +:10A3B00060CF1D8E75808700C694CF616C97EBBB14 +:10A3C0005DBA817F94F35B92EAD4DFD4A11D139C24 +:10A3D0008A7E9F4A17975B41540A2A795C17E75D8A +:10A3E000DE0CF5AC79B4924EEF3D616867E13B203D +:10A3F000AFA6B9A0FDD40E36885B8E4D1D267E9C7F +:10A40000D7231BCA8F5AF0D7EEB2EB911817477BB0 +:10A41000EA93EC2CD21BFB9598E6A0F8A19C78ACB3 +:10A4200069E43AB5BB6A085E457EAD8AF4E1809680 +:10A4300087A706F9CEACF22C8C77AB8BE70F14B65E +:10A44000EF4E86A7A248DC94ACA767ABAB82C7B53A +:10A450009AB89E27D50548AF32DB9BEFBB6B973E82 +:10A46000663D7FD0EAE272F556AFBDDE86FA49BBA3 +:10A47000AC7A62AB31DF5BFDDCFF68D673CE0914CA +:10A48000D4138BEAD74E15E0B5F2F9DA7A5B596E40 +:10A490004E513EBF472AEE57FBB9AFE54B2EE8F7CA +:10A4A0005317B7DFB657770611CF26BE4BED876E31 +:10A4B000A013AB9EFEA98BF35349D228EEEF54555F +:10A4C0001B1CA033909C44D98F7A36D0C59538AEEA +:10A4D0004917925A685FD8E9E29E02BAD864D085DB +:10A4E000B99E9B046E5F8FDCB77C3DBB713DA1FEC6 +:10A4F000F74C7C1BEBD757BF5AB5EA6945BECBD7A3 +:10A5000028D6EFF675EDAB5F2F176D6FAC277C2F5C +:10A51000E89FAFA347E4DF0BE1DDEAE2FE4B737C8B +:10A52000EF9C365BFB22DF6DF06D45F82AF3F07986 +:10A53000E72C93AF528AB437E083EFAAFD3BDFEFFD +:10A540007208F066CB97AAB79573F4D2C8F9D166B2 +:10A55000D82602D8F19B9DC31DE85784BFEAA516F3 +:10A560003DEE2FDC7CDC5CBB969544677F2FC51FDE +:10A5700041FEE0EDD033A8270D36AC25BF8159AFA1 +:10A58000C7773DF5BF0D0531EC8B8D2F39D2EB220E +:10A59000797F5021FE9E7739A8DD368FE16F91E0FB +:10A5A0000FF45FD5B05BEE07318A7EE2FDC63AB0AC +:10A5B000BD4F3CF144154FAB4643D8E4836CD9A55D +:10A5C000975E0AEF53F89EF8F210E5DBA91A13E242 +:10A5D0003EA427A6399D3CCE8D7C6FF349B780F20F +:10A5E00059575918E5A58AB20CEDECA86B17EA8308 +:10A5F0004E95693E0BFE7E6CE0D9EC67933044E7E4 +:10A6000030868C7DA4AAAC85FC5C01D0A7C3BCBD00 +:10A61000D3B29F1C97AF7819FD16C7A32E92A30043 +:10A62000B77E2AC94F7E6E882D1B3C82F852EBAB59 +:10A63000C2A4FFF8383ECCF16823A29D54B7E07164 +:10A64000D4CB9E9F7319F945FAE7B333E978853A7D +:10A65000C4305F679B60E65D32AD328074C1EDCC83 +:10A66000AA2B7ADD33B05C33B511F5A10F8CF9E478 +:10A67000F0B77735B3C64BDC1D9F681AF4A335AF2E +:10A6800023FDCDD700767B98CF87CE8D84C2E46F33 +:10A69000CE1AF479BD43CB225DF4C37AA1FFA6FFA5 +:10A6A000725940BF89126203480A9B84049703F3DE +:10A6B00001DF0CF309605D14BE3E580FF822C1653E +:10A6C000F2A53CBFB4E3719B4147FD8D8F93BDD68E +:10A6D000DF9261111FB6E3F3519A8618C26DF6E35B +:10A6E0006D4A61F00AECBE7804C77302C271DD02E4 +:10A6F000972CD136C0BC36187E33AD83CFCB17E252 +:10A70000792F92CAED44D0EB3E7559F898E99FC86D +:10A71000E93FF5225F3F43FFE95B32D596D7D95732 +:10A720003F31FDA7D7A44FE5703BE6A7E861318A2A +:10A73000F9299B9BE6BD1886F1DC174C9A87783285 +:10A74000EB6BDED672B7055F607F456B2DF8EA4391 +:10A750003D6942E3330F8E9F5A227AD0AF628E9FBB +:10A76000D2E6BD545B7CFC99EECAD2E3C3DF072876 +:10A7700047DC861CE9A9FEB65C2C7EBFDA193FD502 +:10A780003A0F7748B3E339AF677AAC719389EA97A8 +:10A79000854F5960317E5E6692C79A7F78AE9BCBBB +:10A7A00085FFF468E7BAE78F9CD744F5CF52E3DE24 +:10A7B000B3C43EEED7F2E37E11C7FD1A220EE5B414 +:10A7C000119FDCD8F4EDD835C8E2A4147B2740FCF7 +:10A7D0002EB1139861B77637FB3B8C43C795043194 +:10A7E00047895523FF738774C2A3242748DF73A7C3 +:10A7F0006EC990FF54E5714C0FE371F14A8C5F46CE +:10A800003819635C73A7A13FB2B0254E5E8370F028 +:10A8100038E6C8752E9EDF03FAF54AA40FBD95C72A +:10A8200099F4C7DDE92E216F1F14EAD953587448F3 +:10A8300043F89A397C7E66B193C7A16FDFE1E67C6D +:10A84000E03E29BE06F1A7C40634649FDE8E4406AE +:10A85000F5F7404C6FF9A700D9FFC38E0A63DF56A6 +:10A860001921061A4F67C778BC268AE7DCFADC1C78 +:10A870000F95CBF416DCDF40960CDB55750C11FF01 +:10A88000EA42395A8E7E139E6F65F247D0A7762131 +:10A890001F585FF6852398CFB461F224E26F7D6E76 +:10A8A0002EC7B465767E037CA6CF4AFF650132A72A +:10A8B0004BE25532FCD3A72D8ADF83ED7E50AD6F7E +:10A8C000273F39D0831BEC0B4F75746BAE0CB6BEB3 +:10A8D000A7AEA9E8B9DD0F5BB5FB717D7E200CBC8E +:10A8E000713DAECF5B02E503FFA0367A1DF249C68B +:10A8F00006BC56B9F0832727CACFB2C4CFB62847C3 +:10A900007BADFC6C4B73497EF6FDD1F8D90F26CC9C +:10A91000CF8CF197C0F801DBF8A5F8D95F233E7220 +:10A920007CA7D9E43B5919F94E213C5B9AFF3CFCCA +:10A93000E71FF37CE01F8BF19F2D7F26FEF3467E01 +:10A94000DC37705C528CAA478E5FD89F499766DCD3 +:10A9500062476BEC6D6CFF1F21A63BCAF15C0C23B8 +:10A96000BFA87EB689CFC4113C47B7255B41FE5BCB +:10A97000D33F38517C8ED75F30517C99FD8E9C67D8 +:10A98000DAA69F98FD77E3BC717E17309ADF4EC63A +:10A99000F7A78A1EF8599847C2F19A75C75CB22585 +:10A9A000AE779722BE84E8D8545BE3213E6DE6C9BA +:10A9B0004B09B6D422E7CA65AE6765DDA09642FBB7 +:10A9C0000A9FF8B2D1AE02DBCD76C42AF0FD7BCE71 +:10A9D00058D5A03092AF760BC05709FF9F8FAFCEEE +:10A9E00034E0DFEC8ECFC471BADAE6796A71FCF636 +:10A9F000ABC92F9283BB93C7DF2A2E902A305ED03B +:10AA0000B5A486F6D7A48B24D28F3605C3BBAD760A +:10AA1000B799A7B0D9ADD5135E3AC7E9271B673DF3 +:10AA2000903B7C5D268924772E90393F77C7E224BE +:10AA300017AA3AB83FEB3A496B962DEBDAFD474738 +:10AA40006731FB5B33F0D0EDD239BF37F227BA2B39 +:10AA500082A40F0B30AED51FBE4E8A5F80F392EBFF +:10AA6000B93F5B0EF3388433C0E3A8EE109703D0F0 +:10AA700096E2A8AE208FA3F64578DCD419E0715495 +:10AA8000B36CF6DB174907150B7C1BE63C4E715483 +:10AA90004F988567433D39B389E2A87218E43FEACD +:10AAA000BF404FB8FF5888C74D3D729C117F0BF2D5 +:10AAB000B8AA331C632D681F631CB508DD9F251BD6 +:10AAC000FE0CB7F63579FE48B9A9BDAB109E83469A +:10AAD0001C615A2CD3C2F1CBE564EE5C3A7B9BA19E +:10AAE000FF3CBF3E894127AECF3C16ED0A93DCBE4A +:10AAF00001F155164F6B18BF63A0B7203E5FA88ABF +:10AB0000DF84E3CACB1378D295B956C43228A4BDEA +:10AB10006DDACD1C1E7E4EFDFEAFAD24FC4E0EC682 +:10AB20007546F1E39456EC5CE686A9ADDFC67693F4 +:10AB3000A5A880FB7C7298DB415D4AABCD3F90C8F5 +:10AB4000CFFB36ACDF3E55BB9DEFDFB4F097A80FCF +:10AB5000E86C18F3204D7C987185402CDD82EB3A2F +:10AB60005D037D01BECF5836BC0EFD26E1E5AA8807 +:10AB7000AA55CD8AA8C8CF6F9BE7F5795C2147DF3E +:10AB800046FCEEEA66A34316FE02DA6FD7051D0CFB +:10AB9000FDCDAB9F7EE810C67F569FED56D18F78D6 +:10ABA000FEC9470E3D07DF1DC6F94ED00C0FFD0A4A +:10ABB000CA2B3ACA18F757C7FC889F0F99D88EF34B +:10ABC000FC901DF69F6999E71ED965E49D3A892F8F +:10ABD000E8F01FEA7BD7A49CB638C5B5DBEDE59558 +:10ABE0006C6915FADB57DEEB64E87FBFAEC03F7AD5 +:10ABF000AFCCCF075CCB123D88E70D86BFE8C69F80 +:10AC00009EEE423DF4BA33D508E2C784E34999EB9E +:10AC10006FEF2761C6EEFCFBEB95B40BEDBAB70FF7 +:10AC20009C79D9B90CFB49F74C45BAA9E0FCAC704A +:10AC30007DBFD16B8773AC7914C26DE60B968243EE +:10AC4000DA2B505CB070DCFF65F0070B7DD3392246 +:10AC50007DBDC4305E707FD91D74CE68ADEE5631B7 +:10AC60001E77C233238D497487912FF1B8EF59FCB9 +:10AC70009C20BFE765BCED5F33F85A61FBCD81A135 +:10AC800018CA1F332FB34C4ED31C0589E7636E0ED1 +:10AC90008EF1BD76F4EF273C5756AD6BA2387302A8 +:10ACA000CF2F8C758E0AEC817FC3FD73AB23752586 +:10ACB000D72F399CA08E2FC6732A6EE6A73C53B7B8 +:10ACC000219F487E0998FF94CA6811E46FF6B8592D +:10ACD00019CA63E8E766C38F51566FFF5E28C7FE47 +:10ACE00060C8D1852C4BF2D72F2B193AD7DD6C3F9A +:10ACF000D762AEE7EA20D85D9347AEB3F91481C3BB +:10AD00002A32C2C7ED27C1289BE31F4F09ED48EF48 +:10AD1000AB818DAF9D67EDD745FD8ED0EF4FC2F76C +:10AD20000586BD4CF88906113FBD49C6EFB771C60F +:10AD3000BE4CE7AA5E7530400DD81F9CAFEBD3B96F +:10AD40005FC55D1B2BC77DE57EC511102306EBC0DB +:10AD5000385175FB1EE4CB651EA7712E94E793B99D +:10AD6000159DF2087B9CF16005C0E9BA83CBF11612 +:10AD7000251EC7768E608713E37D7FFFE4373AB0E8 +:10AD80007C7D70B1842A6295D1CF874FEC5F807C47 +:10AD9000B6679F8F65486F49BB306E77FD01878628 +:10ADA000F1EC1B7EE8A3F1AFFFD1B58F2F41FCFC86 +:10ADB000F4BCF03192075D3CFFE32797FCB36ECC07 +:10ADC0000749B86B9DE1BFD2A3418C57DDE8665FB0 +:10ADD00047FE6DCEDFC41FC851D2CFAFDF5B41F954 +:10ADE00025B9FD29417D68EF86E7D222F2FB1C0FD1 +:10ADF000E7E71FF878BC5DD83B48E74FAE1FF88AFD +:10AE000013E7258412EC1D18EF0C637E508FF416A7 +:10AE1000FDFB42BA0EBE7FF0FD5D2EF4475EBF77AC +:10AE200097EB6ABA6F85EB2F269CF2DEBB74E44B7E +:10AE300072AD5A837EC0453FDCE7477FF70D3FFC8C +:10AE4000B4E79C26CAFF1F5E02FBE0E6BD0E8A1334 +:10AE50007AC262C139197ECEFF26FC27B4BFE1C792 +:10AE6000FFB6F897D0EE7DE0FB1E60A5EF0FBDE3C7 +:10AE7000FA1996D1CEC77E9EB1F3B19BF7BE4DF9BC +:10AE8000F9AAC88643E7A21D6ADF0F85F53F66274A +:10AE90005D28876E1ED844F72DDC7CE0C337909F79 +:10AEA000DC5CC00FDFC77F548F3C1F11F7D8CF4742 +:10AEB000B0BD93C71597BF61DFC70FEB80C70F7E8B +:10AEC000F47F1ED6018FABFEF81F0F7F0FF591BFE9 +:10AED000F1A8C8CF6F7EE29D87BF0BF3FCF019B7D6 +:10AEE0008874F1D1737FF5F84E287FF4FAEC79027B +:10AEF00094BFE3E1FBF8A3FD7FA80A433F6B9EBB31 +:10AF0000600AD2DD9AA7174D19ED9CDD47404769CD +:10AF1000B7159E34BF97EB19019D0F8C3D6B3C0B11 +:10AF2000D6E183FD275CB8CF7E2FB0619457370DF3 +:10AF30007CEA42FA3BA4B161C4CBF307DE3EF45D88 +:10AF4000287F08EBE22EB22E30EF6922DD73939951 +:10AF500086F918371DB8E4CBE735E1D3190DE3BA0C +:10AF6000B061928F23D6F31558CFA6FC7A965CBFBA +:10AF70002737515EE8CD03B07E7347AEDF87F88F89 +:10AF8000B347AEDF768FFD1E878FD9AA47C87639C3 +:10AF900030B9A87E6D9E6BB9F1E94B47BD07ECA3B4 +:10AFA00082FD5A0ACF9D861FE31A8FB6D7331FE959 +:10AFB000E1078FEF0CE03ABBA34B70DDF77D3C035C +:10AFC000FDB7EF3A87AF443C0C3FE75677A3BFE4A9 +:10AFD000B97F2139FCD1D32FBBC2243F985F00BE7B +:10AFE000F911CBFD1DC63C9A9B8C38C28D7BFE733C +:10AFF000F11BD0FE46E802FD63B07E543EA4F1FB97 +:10B00000876E4A5FDC1EA6F32A9534EF9BD27C3F05 +:10B01000DC941E5C86F79114E2FDD71E334F2BBFE4 +:10B02000AE4233AEE75B8B91FE4AADA7397F15E7A1 +:10B030007F167CDF63DFAF23E966D885FCDF5CDF4A +:10B040008F769D70FD12EA677EE652C573A0EC1CF8 +:10B0500076911EB4DFA1E279B9C275C7FBDAAE22E0 +:10B060003FDBFAA2E79F0AE9E18D027A30F131D69F +:10B070007E1E7B1E13C3D33F802143790E05F85AF1 +:10B0800057ED227BCBE177511E4A8F33FC2F789FFF +:10B09000C2F04B4EB61B9A74F91790DD5308673710 +:10B0A000EA7196BC344989D1B92129A0927D5A68A8 +:10B0B000D73B6122616BBC3CA25E44E78CCE131986 +:10B0C000DAF75B17AA9BB0BCF546D1B55EC89F8383 +:10B0D00031DB9FE19D45FD6D5AE81231CEB6E94561 +:10B0E000CE9FB63A07A89FAE3A91E8B810CEE95E77 +:10B0F0002E9F1C6BCBA27BCE2C8D7787114FDC54FF +:10B10000BB3E86FDB923810AB4ABBB06FFFA25CC52 +:10B1100097F42CAC8A208B3CD76BD069ADC2DEB6DD +:10B120009DC30238108FAB44B43D613C3F8D371650 +:10B130007C1EAF60C0E789EE19452FFA53C367E262 +:10B1400031E80D1BE32B34BE8957CCC36D69A23C9B +:10B15000D9616EFF6819BC5F0CEC212A3BB36731E3 +:10B16000CA6784EFEE66F2B79EED8571B57B3586D2 +:10B17000FA92AF9E911FAA2C90C86025C9CBE39983 +:10B1800077C903140F31CF2DC971295A0B7872C7B3 +:10B19000B9DFA7701FB89D5986FE497F9B48FA8F7B +:10B1A000C7F087DDB5508FE17C1E8AD48AEB613E03 +:10B1B000DFF572F9F59033DB7E2DC0D9BBAE3CBC18 +:10B1C0001BFD612F3A19FABFD74C67BBC901ECB818 +:10B1D0008DEE45F8B637628BA7E7E0403CC0F31E22 +:10B1E000317CFF72E403DF16C91E9AF562E420BACF +:10B1F00016224342EB7484CE18AFEECD1671067C56 +:10B20000FF8AD7D8E767B233719FAFEE4F5C887182 +:10B21000BAD5DF5AEFC6E7377BB50B51EEA6F5A5D9 +:10B22000363E5F245EE5C1F9DEB5E6F045B32DFE9E +:10B230005556DB3406DF5867F0CF68A62540E1CDD0 +:10B2400061B4531DA15676079777740F119AD57480 +:10B250007E1DF3AC304ED71FD3663751488FEAC3FB +:10B260003ADE82EBE85506085DCE8071CEAC363012 +:10B27000CE7CC335E45FF832D2D57CD4BB15F2D393 +:10B28000B8713FA07EFEFC7734ECCA0F7484FA17C5 +:10B290006B063AB5D8095F36E8C4A407C69AF4A38A +:10B2A00098272838499F37F15D0A8ECFFB8475D0E7 +:10B2B0008F3AE9DE23FD2820FC71A3BCC5783E6CE3 +:10B2C000BC37EBDFE735F43463BD4129D78FE27932 +:10B2D000C499DCEE9043BC6CF2BB427A08AD0AD054 +:10B2E000BCCCEFB3B7DBCBE5CDF6F2CCB5F6B249CB +:10B2F0004F26FD9874F55FA59F957821D6FCF1AF98 +:10B3000077E1FB8C996F1A32CEDD877AE9BC83999D +:10B3100077BAB332F62CD297A48629BF7970FA296E +:10B32000E574CF6689FCD39EE4DEC662E7495C1211 +:10B33000CB38E6A1BF18BE5BF0928B3344CD387298 +:10B34000AC731794FB8355943758A63E151CC475EF +:10B35000689C771D1BE51CE79F208E7CC43B4A1C24 +:10B36000B77FC2711763FC2587DBAD711718BF5417 +:10B37000DCE55D1C7F8391175438BEA636D0B9DF5B +:10B38000A9099E87F07F0D39349D65D739B98E178D +:10B39000932DFEB799CB87AAFF2E8C76EF6B11E425 +:10B3A00007E5AC9BF27741DA347D368A5C2DCCDF41 +:10B3B000751A793F2DF13DDBF17CD1D44483990797 +:10B3C000C1C7C3B1A1AC9471FE3A9D65FE80572BF5 +:10B3D000CC60C3E4F70FC7D456F483D674440FE2AD +:10B3E00013E099F35FC927CED14B9319471992AD5A +:10B3F000F1F0CD4D7F9E78D474637EFFE9D1A6979E +:10B40000558E5C9FCD7FA6785443592E1ED550563D +:10B41000240EF679EFD3BBFF123FBFFFF74D81EE4D +:10B420009DBDEB123FDD5FEB66DE28EA956E4513AE +:10B43000D02F7DEB54165D0FEBEB5CA65F88F6FC1E +:10B44000F71DF1F371FE2DFFFA12DD4BD95F9798CE +:10B45000897A6CC97C10CC87B5C4BB279A0F32DEC1 +:10B46000F8D644F33C46C987FD6A5991F856613CC9 +:10B47000C9E1EB26392B4F308E1498AC35F27BF4B2 +:10B48000962FFEB9250FF6A63BAB172BD59807CB09 +:10B4900028EF7575D9D77BF01EB9C0346D3FD677CC +:10B4A000F57F6D7100BFCFE2DF972BF05DC1B886ED +:10B4B000A6A3E07F5609F3FCF0B8EB2DBA1FA596C2 +:10B4C000C775C0B6CB0A0BF2F92733A7C66FC5F50F +:10B4D00033F318DD219EC788F98BD951F077279E69 +:10B4E00087AAC33CC6309D8BC2CC0BD41B3C0DFC41 +:10B4F0005CFA8E243F37B539A952BDBB92417A76AA +:10B5000027357A3E2DC536205E3DB5FCFCC276C39C +:10B510000FEE32F4E4C3465E93A0F07D967F72FD99 +:10B52000D88CAFF59D7A45F9D51638EF33F6A55985 +:10B53000EE49D69FFB8225CFD3B582C79DDC4178EB +:10B540006F91EFD5C63D143B6E4F31F49379323B8A +:10B5500018FAB5F619FB6D63B2F33CCC2BDE70CD57 +:10B560004A0DF1B23599A073E52E29C1E93CC41A00 +:10B57000F9793C5D33CEC5F3B232CCCB0BA10CF8DC +:10B5800075A9AC85E7EFF0EF0F24D752BFB97D1F47 +:10B5900082712CFB795AED8080F6AABA30613BAFFC +:10B5A0001E5AB5D6562FF2E2F6765700EF21F0A9D3 +:10B5B000E82FDE14BAFB758C7F1D0F02241847CBD1 +:10B5C000EC78BD1CCA4ABD2B8C3A78DFEDF67B8F38 +:10B5D0007A60BDACF7822AC10CDD1BE10AC5CF44FD +:10B5E000B9D46DE4D1B983F67BEB409E0F1C847116 +:10B5F0005D2FCEA2736CCF1BF837F19CE333C1DE15 +:10B60000F3248B9EA8B004F97395EBDA285E7AA731 +:10B61000A06978BF8F1E91E89E9BB2B9ED941FE799 +:10B620003E45A2734B1BE72CE9409B72CEC28CF6C1 +:10B6300002CE2F5C4B711FA57DDB52F4CF292B9ED0 +:10B6400058867E1EA5F9D9CBE8D976A803DFFF5B23 +:10B6500019B71394B62357F0F7EF2FC7F7D5B9F3FF +:10B660001EBA8CF6526F6DCDA8F75191A4B49D43CC +:10B67000F616DC4B3BA9A03CB5A07E4DC1F7530BA1 +:10B68000BECFB39507AFE17AD5CE5CFEE2BD0CF339 +:10B6900051775CB32D88F47E1CE7857A76D4AE3F73 +:10B6A00049F240A335CFF58037769CEF336E0778AB +:10B6B0005942C3C3D9DEC0B733784E96811D81F796 +:10B6C000A37A03096D6500E5AF9C40FF8F3B94A60C +:10B6D00073A57EE80BF301BD81A88678F306340DCF +:10B6E000F1E80DC4A8AC95C73FC3FEBD8138FF5E2D +:10B6F000CFCFDD898A790F649AFCF54C8227C55D2E +:10B70000DB74A4C71C7FAA1FC19FE2CCCE9FCA9442 +:10B71000A2FC89C7578FD732F27B945AB7BE243325 +:10B72000F88E6CF09D7825F6E7A9E7E73BF2FC2759 +:10B73000D3817C77AE3265B17436F11F3A5FC0D8E1 +:10B74000941E8C07E0B1592C4F53D4C57A8385DF02 +:10B75000D5733DF980371EA67E557E3ED8C4F7E0EE +:10B760009C5328BFDB8B6B8CFBFE3417E92985705B +:10B7700076A39E6CE153527D5F0CFD6F65069F932F +:10B780001AB62D0D03BC67187833EB3955FBFAE771 +:10B79000F0CCDAEC72A000CF831DE2B8F0E755BF21 +:10B7A000DF288DE2D7007C9EAF50FFB26EC3A7A109 +:10B7B000B71E2EC873FE8AC1BFCD27F0AD5EA78D20 +:10B7C0006F5D5DC0B7AE2BE05B1986FE12BD9A0DB2 +:10B7D000203FCD18EB80FE2C241A4F07E73B2E3577 +:10B7E000AEF1FCE3F82CD4537656C62FA5F5A9E5A7 +:10B7F000768B53B5F3B18E52F43A061E8BD0EB55CF +:10B80000C5E8B550BE99F838A070F9623EC792BB42 +:10B81000BD865CCDC98B705618CDEF3CF8DD5389E1 +:10B82000FE1E76DAF9BDF9DC9C1C68E4E70BECF44B +:10B83000D7AD446C74E677E9EC6268FFB0A7783F57 +:10B840005DC67AFA5DA9B8913F4FFA9E1CE4797FF4 +:10B8500066BD0D861C47BD93DFCF1FA7F59B61E03A +:10B86000C5DDCC26A967E4EBDF63E06586B7F87930 +:10B8700097BBCD71BDF671DDB5F671EFCD8D9B3007 +:10B88000C6E574E3C27C1005CFADF1FDEAAE4D69AB +:10B89000587EF83BC7766D0CE0BDF9F56497C1BCE6 +:10B8A0007494471BD69F26AE87E76EA33FED4146B3 +:10B8B000FBC8576F9EA7CC9D53DE8D74E0ACD5C9F5 +:10B8C0004F6DE6499BEBE067BF61B758E6B3D7E839 +:10B8D000CFC42F9ADEE2BC3C5EFCEC5D5BFDA78C26 +:10B8E000FA265EA07E9B3869243F78DAA05B7F93BE +:10B8F0005D2E4C94CE9F35F687D3E0DF4EA3FE211C +:10B90000AFF69C6289EFF7C456C5AE812EB46E4D7A +:10B91000473F952FAE240CFFA39E6DE2F751ECE458 +:10B920007EAA43CAFC7C5EB92B68DCB796F343E978 +:10B93000B6737DDD78AE4FA0737D11F463FE09CF41 +:10B94000F51D4138C63CD7F7FFBF1DF33BA5726418 +:10B95000FF85768CACEC09AE6413B763181B20BA74 +:10B960000F9CA1FD56A4FC9ADEC5782F7860B6B670 +:10B970001FCB5DAEEEC578CE3670A62157F54D8B48 +:10B9800051AE06CE62A42AB936F7917D7356B9E658 +:10B99000F6215DE31EADC47B29C3FCD991A1F3352B +:10B9A0004CE1FBD62C6B5886BAF16ACDCFDB713AED +:10B9B000EDAB7C82CEDD14B6D78DFAA7F9B580AF9A +:10B9C000323FCEE7380731C367C1E7887310AAFD5D +:10B9D0001C68379E83B0C40FBAD589E60DC764A42E +:10B9E000830DCAD2F688C57FB42150D27F15F55990 +:10B9F000F877A19FA07B82FE89DCF84B60FC26DBF8 +:10BA0000F8A5FC579A153F45CE41507E986CC8CD9D +:10BA1000BE393DA5CE41FC85AD9FB056E2BC49DAAA +:10BA200076BFD944F763E1B394DF67B92FE7F759DD +:10BA3000EE2BE2F799E87E2D356EA1DFE7065FCEAB +:10BA4000EF73836F3C7E1F837F96A7588B87F37BB2 +:10BA500082FBEE85AC19E34677B71F35EE614FD117 +:10BA6000FBEA159C7E4BC13558B76054BD44053D7B +:10BA7000B10DF88967ED8F1BDB8AF813D5D6F67AFE +:10BA8000CEDF391CF7CFF60BA897A8925A5D2C1F72 +:10BA9000B1E1D3F5074FC3B8471B97AB15B5AE1649 +:10BAA000F4377EF39F3CBA1CC4F7767F7AE0B6C8C1 +:10BAB00045F8BDC2D02323DB832D784F46EAE71E2D +:10BAC0009DF2FDDA2CFE7C30C5EED6EE3E82F962A8 +:10BAD000C7BBB99E19C9EC38520EE50A1DF44C28B3 +:10BAE000A76F575BF01C96BE81EB99913DB207F9A9 +:10BAF000CEEE023B39D2AB1EC4FCD49A7EAE67A612 +:10BB00006FE7FAEEAC5EBB7E79B7C6EDCBC800EF4F +:10BB1000A770BEFFD57E4BAD4B61BF15BDEAA0D16E +:10BB20002FD9F530CF8377E23C2FE0FB6844FF6DDF +:10BB3000D0FF28EB3E16DC8571E4C2FE7376549B81 +:10BB4000F49613EDA6E6DF255199F1B085EB72EB83 +:10BB50004B7C94AFDFAB35A28DBECDF37ADDF22FF7 +:10BB6000AA307F4CF2FCB20ACFE398F18AEEDCBD3A +:10BB7000559F3932A0A7536EBDC072796574DF132B +:10BB8000F47FCCD85F85F333FD1EDDA097FDA808B8 +:10BB90001E8E1AFCA0DB973B67C8CF03AAFC3CA013 +:10BBA00059EF98CF38AF097068D6DF2D01389296DB +:10BBB00073C5808F6998972E1BF28649BD14EFF3E9 +:10BBC000A01E15C5F7A9CCED5CBE441735635E9584 +:10BBD000F47B6B9E805B66742FB0FB157E2F09F49F +:10BBE00093F1CCA5FB337E8FF29AE089146917D4C8 +:10BBF000E99E08B7C6127A05C2C3BFE7EA87529A20 +:10BC000071AF686251F5C8F6CCE8BFC6E03F8579F0 +:10BC1000140E7F411E85F1BB79A5FCD3665E4DFEF7 +:10BC2000BE3799F03ABD89F383E9EDAF65308ED226 +:10BC30008DE79682583EA2B5217C9A3C80FE8CE925 +:10BC4000ED6FE818E78924FC6191BEBFA9E3FD3CD4 +:10BC5000EA1FCB19FF7D2DC0FC028C4B30BAAC6EB5 +:10BC60007ADBB116FC5DA146B4F3B17E5BF3B5128D +:10BC7000D0E1F4B5211B9FF169F672611CAD8E25F0 +:10BC800044D423EADAD6B4B6F2B8AD5E06FD3DB6CA +:10BC9000F06A6F6D383FEEA9F8AF59793A9C64C0ED +:10BCA000A1B6EC69C5B8FC2902F7BB98FBA7AEF9B1 +:10BCB000E077F0F781EA707FCC2518B3E2823CDDB3 +:10BCC00098F40EF667A37F7EE973E94CE171C4C274 +:10BCD000F3E9E6D38C23A60C3BB33B39407E935E5D +:10BCE000C37FF29CE1CFFD29FA73E1FB13E8FFADBE +:10BCF000C3F86A3D3D1F4C46E9FDCE643395B7A3BA +:10BD0000BF17CA7B93312A3F9EECA0E79E649C9E9E +:10BD1000BB939DF43D9D4C50F9AF936BB99F26A901 +:10BD2000D3FB1F277BA9BC3F99A2F20F93DBA9FC91 +:10BD3000B7C9343D7F96DC6BF897DBE9996A71ED02 +:10BD4000A273C5075C61BC7F605F8546F78EE8A77C +:10BD5000F3BC68F56076AA350FB23FD97B9ED5EE6D +:10BD60001D6CE4FE9A52FCAE309EE9D6E20CFD91C9 +:10BD70004730DF17D679A59FFB1BDD5AEA7236776D +:10BD8000647CF3A975C5EDE76FF9397F68D0B222FD +:10BD9000EEC3AC58C6EF3F1F181225CAD3F0F2B35A +:10BDA000112CA697617E8071CF4A8316D3B01C6F89 +:10BDB0009513A8574BDA65AC0CF701E6DD013CDAC8 +:10BDC000931AC37B5A7CF97B59BEE5A7B8FE80263F +:10BDD00044F2FAACC4F8384FEAE5F13E789EAE1D65 +:10BDE00015518F697D26EB2D868FA7060E7BE9BC4A +:10BDF00032CB78519FDE373096FFD4FE3B5D2F3932 +:10BE0000B46E844315AF22BBBDDB88D3F71B71FA38 +:10BE100027FD9CAFA69C1AE537F5EC17D3987FF366 +:10BE2000D4802860F9A90322FD2ED95307E63D8F5F +:10BE30002CE4B8CA1A711F0CB62C76F860FE4F05B8 +:10BE400058231E553CF80CFFBE2FCAE661B969881D +:10BE5000F7E71BA8A1F64EEBEFCA309CC7D12F2203 +:10BE60009FDBF78CC8F0BB2F6AFF7EF01918BF89E3 +:10BE7000E020BF99396F491A223C3C75E0A8D7AA47 +:10BE8000476927EDED177E602F3F3506DEE6BDE002 +:10BE9000B2C9CBE8B3F6F612500A5F37BF86EB366D +:10BEA00077E8977CDD0E0C155D37989F6DDD9E1A47 +:10BEB000583AAA7C37EF51B6ACDBCF70DD52D3E3F2 +:10BEC000C48F81C487D783BC98ABC6D91EA25396B2 +:10BED000780CEF59D27A6328C75D5A8AFCC52E2D9B +:10BEE0002DE2B3709DCD71DEF1737F538F3640F537 +:10BEF0007A8207E9DE87B96AF17B3F5EF3BB69BFEF +:10BF0000CC95F9F79EE052DB3D11EFF885C2EFEAE0 +:10BF1000B5B6EF467B64A0607FFEC67FCB468C9FA4 +:10BF2000CD0D727DA22778D876EE25D75FEEFB4146 +:10BF3000F53ADB777E9FFADC9039DE61B558FB7706 +:10BF4000FCFCFC474F90FF0E123C55DA7F12AC0709 +:10BF5000C69B4AECABE75B5EA3F5DC3774D48BEB96 +:10BF60007BF09956CDDC07E8AF30E90EF707F2BB5E +:10BF70008FE13DEA3985F45D48CF4F86335E7EEF31 +:10BF80008DFD7725BFF03BFBEF4A3E7580DFFFBCA0 +:10BF90002F3C44F50BE576F39BF6FAA7EDB5F76772 +:10BFA000D299395EE17ACE5C6BAF3F3D51D0BE6035 +:10BFB000FCC2F6D33AEDF5ABE3131B7F529B1DFE9B +:10BFC00039E9E2E397DA27B3B7DBEBD7A58A8FBF6E +:10BFD0000FC72F42CFB37AEDF5237AF1F6A5C63F0E +:10BFE000E73776F817BC52F8BBA0BA713FF1F8F208 +:10BFF0000136C4968FD38F17E6E7AF0D3992FBDD7C +:10C0000004A39F07E6A72F477F7D16753E9067E93B +:10C01000F9C397A31F55C343B0507E687E86BE9B6D +:10C02000BFF751FFEC512A7B741FFD0E51C3C9C3EA +:10C030009995F02C07450FC7F7756ECB609C8AB5B4 +:10C040007B484FF3E9BFD7F1FB21B37CDB36FD51D1 +:10C0500028B782DD877AA06FCDEFF547A1FE37CCF8 +:10C0600072A26A07F6DFAD9763CC9695D7DAF3BC78 +:10C0700002B7BDAC63FEA1E75E91C6F3E82EAABF8E +:10C0800014F5C285689FEC24F8BE29B204DAA1AC8D +:10C09000D66E579AE7D03757A7E83CE40E678AEE8A +:10C0A00093C9C9F9722ED7CC27FCBD80F7BC399A49 +:10C0B0004CFF7194E1BD93A82AF3736A516D05DAC0 +:10C0C00013C6FC1DCDBD43740F60B3977EFFC4D172 +:10C0D000D9730BF24BC7AA6DDF447EEBB8EDF16F5D +:10C0E0005179CD4F6EA572E2D077A8BCF6B5EF615D +:10C0F00019E57F39AC8B433F763BBD37EEA15FCB73 +:10C10000D4F59B282ECDFD568F08D977D11ED6D7D2 +:10C11000B9C258DE72C7F026C4EB34365DC5B8E14B +:10C1200023DAD177C97E6E03951FA6322DE3E1F79E +:10C1300069B6A9BBD07E36F55ACA07023DB722536D +:10C14000DD8AF2A9A2B3268D719C7EC36E9CB66A6D +:10C1500040B8CA97B76F2BA26A0BE2B7A20DEC5397 +:10C160009CBE71DEBA62953A88F16DA589DB950FA8 +:10C170000AAA7827EA753772BB157F8FC52A271F51 +:10C18000E934E04B807507F08432EFBD8B71A55028 +:10C19000BB5A63852F4439A5B0FF0DF827B5870931 +:10C1A0007E13BE5022235C757A1EBE49D130C13742 +:10C1B000A99DC397E31F89B0E0B6C0F79011FF1A9D +:10C1C00001D7AAA304C7F13500158C3D1DE142BB80 +:10C1D0002661876BBA81B75086FF7E702861876BB6 +:10C1E000FA9A211BDE42D10CC1154AD8E10AADC929 +:10C1F000B458E17A5830ECFD6F95C0DB1A03BE6E7F +:10C200000E5FC4802FB216E0B3D8CD1103BE19065D +:10C21000DE66ACB5C317E906CDCE02DF8C6896E0CA +:10C220009BB1D60EDF8CEE6C8B6C816FC4FDEA0582 +:10C23000F00D661DF4BB067D46DCD253F14946C3C2 +:10C24000BD927D542EC61F59AD346C3DC756E8EFE4 +:10C250009EC352742F52E1EFBDF5D5B61A79D4A31F +:10C26000FBBDCD71A44F26B3B42DFF399DBB4F8CC0 +:10C27000EEEDFDA48ABEDF75E1C30789BF45B9FEB7 +:10C28000E851D274FFEBDDD3EDF74FDE7FE11F65A0 +:10C29000B46F37BDECA4D8E2E09CDFCB38EF7E4131 +:10C2A000D6717DFAEB1EA7DFFF9D13CCC8567F52D7 +:10C2B0005FE33C92135B119714BF661AF2BD3B73A8 +:10C2C000F16CA6CB00BF1F71413F6432A5BD13F8CE +:10C2D000E03B2EB30CF5A1EC73E7EBA3BEE06F35AA +:10C2E000BF57507D5F59C1774CF2A3EF01FABE41B1 +:10C2F000847900BFFA7F68C56E7500800000000079 +:10C300001F8B080000000000000BED7D0D7854D558 +:10C3100099F0B977FE9349E6CE304966427E6EC207 +:10C320000402069C40884143BD09C1261875C0001F +:10C3300051A31D214A74D10ECAAA75D14C20812463 +:10C3400006180228BA6A8780DD686D1B5DAC7E5FC7 +:10C35000FBED4E145BF46B35F2635151035A6DBB28 +:10C36000DDDD687597FD96D67DDF73CECDDC7B99DC +:10C3700010DCEA3EDFF77C9BE7D1C37BCFDF7BDEBF +:10C38000F3FE9F73EFD862A67AFB02427E228ECA2A +:10C39000F62021B3A3A6EEBA8584748963762211B0 +:10C3A000629BA03EF30A7328EE24E40BFCBB3459D5 +:10C3B00012D249C87C42D24EFB497C1EB4F3C4C29F +:10C3C000A13280CD71E2294BB64B3B9DA7ABDFD1AB +:10C3D0004E8862236444F9949C0238571208C9229B +:10C3E00044AA8E4547012EAC4ED0D251175708941F +:10C3F000CEFA7854F4224C828A0C654016C2808FA3 +:10C400007943B88D5410E2F2A549BD458478EA44D9 +:10C41000A29412FAF705FCE752AAD79833E11FD588 +:10C42000DEE8293B7F5E8CFF8FD2F9D24E3B487C01 +:10C43000CAD9784B924CEB93F83B69BBAFBFFDCCAC +:10C4400094743CBB7D196DA7AE839078B300F4491A +:10C45000EFC8947AA1EC138746FF16486A11A789A2 +:10C460008B0176E68AF101807B67FED81786F11A88 +:10C47000FC6228AED99FBD6E91EEE35EB7C0F6F3C5 +:10C48000506C8F13FAC505AB4C0A0026B13D487FAE +:10C4900012B2069F8062B3FD48F68730BFD5F14ED9 +:10C4A000F68780370944941AA8DF4DC8582FF0D179 +:10C4B00066FF5DA40CF1A8B18F99828CEEA412DA0C +:10C4C00063598CE385A3584F14FBD013D0FED98257 +:10C4D0003069847DEC11C8D846DA3E4C6EC2F12238 +:10C4E00005328EA704F3F8FE01BE2618272F2FB9B8 +:10C4F0009F8896CC6001EBA79D5D6FCDAB8E9ED2E1 +:10C50000F0458F1BDAC2F8D11A31FE04F0CDEE7A75 +:10C51000C54FE73B9113048A923E0BF01BE0133D9D +:10C5200029D0F5762C05CC01BEBB56DC6B0312CDB1 +:10C5300098C7F8E91811C91733A07D86D23105C70D +:10C54000EB10C9135066D8FF9DD207303F8EF36CB5 +:10C55000F6A7C9C89F2F17B37E2FC3FCB88E3B9692 +:10C56000AF922DD02AE6238E72D88FCD69E141019A +:10C57000D6BBCF3DD860F613B2152B2FC6717E53B4 +:10C58000AF94D1798266A0CFFD1251EAAA114FA8CB +:10C59000CAC5F12EED8E42BD5564F00D9E994BA299 +:10C5A000201FC3276D3504D75544E288F7EE771B6B +:10C5B000FC2837BBFC719F04EDEDA59B478439D067 +:10C5C00047F626E9538CFC13A3FC14DDE894703D78 +:10C5D0005BDA49305002E3DB466402F4DD62269404 +:10C5E0001E5B246B3C0AEBBA5B18F11158CF7A77CB +:10C5F0005B2990842CF014533ECA98517908AA897B +:10C60000CD670D06804F4AED8A23341BE8DF4EA22A +:10C61000A760BC6D58C21A860303F651C4B76AA05E +:10C62000BE18C6DD1D10890DF7C91AEA990670DF1C +:10C630002C910C201C1AB097003E77BE0193C9497B +:10C64000FECDF432FEEDB2249A434E5C05A3F372A4 +:10C65000C013F9416D77EF14A667B65963DD4E2A12 +:10C66000276468004AD7693789C27E99EF1B25CBBA +:10C670003280FBA63039C8ACAEA4FAC355F087B0FF +:10C68000504EC8753B57D4DBF3014EE3FB125D59A6 +:10C69000AFE4015E65664AF7EB76AEEC8E226DAADA +:10C6A000F4F4CCF1307C2CB8EFC02F33DC1C9EA509 +:10C6B000C76F677BB0FC430BEAC72A5AF6B42BB4AA +:10C6C00034EADD2F5BAA749EB03E33D146E9668E14 +:10C6D000BD6842FE9D1318E81592F50F7B04AE6706 +:10C6E00018DEFEA922E5DFDE0D9F9891BF70CFD343 +:10C6F000A74E3CFEEB02890A73B1149B8752D89176 +:10C7000089F0DDC3F51121A3872E857976CD1465D7 +:10C71000C4EBC3F643D27E0BE2CDF8B02F3B8DEADB +:10C72000B7E15251417877C8BAD7068CF78065B423 +:10C730000DF18B5E9126A39C1333284C80BB664978 +:10C740007194C7071C631FEEC4FAF969C12764AC72 +:10C750001FED467EEBAACD0BF6027C9309605C5F71 +:10C760008E93EA81CF9AE6AE2C81E73BAF5CF2F084 +:10C770008DF07C674D5A10C8408E797C943E66CF10 +:10C78000A0142E9B785DA4D43C36AAE18B6E73C8AE +:10C790004AF1DD0038006FEC762E6B2841BD238B0B +:10C7A00041100F7253EC1569BF466FED6E5A761942 +:10C7B000B6B7DD271113B457D2969D9160DE4D4E6A +:10C7C0008F6315D03526C69BFDD85FB491272A50BC +:10C7D000DF5FF6DA4694FF2BCC523AE01D8B1D69E1 +:10C7E000463D17ABB0E26AC9CF3D4C6EB6B50F9669 +:10C7F000B752BE1B2A6F8589375BE37601FA6F1645 +:10C80000EDD128945384D01C33E8A567FABFD560D6 +:10C81000077FE0D7C5413F81F9BDFD993D66F0171F +:10C820003245554F35396A61FD972C7252D8B52380 +:10C83000AB211A80F656CE5F64C4B76C76921E8F19 +:10C84000A2DDC942FF62BF5D0C22FC5ABD230BFD75 +:10C850000F181FE0318071FCCD7C7CBF7B5103EA57 +:10C8600035C4B7B384DA091FEA936D42A814FD9763 +:10C870008BFAA73660FB6D8ED1E3086FF55CCE6056 +:10C88000B78A9FB54181FE19E92A0CFC00FCFCC067 +:10C890004227955F42CED4B75520DFB0FA19EEFBA0 +:10C8A0007A70BE2E41607C763DA17C06EB1843B8C1 +:10C8B000A7647A11F2112191E155006783A9467BA3 +:10C8C0009513B8797835C0B580A05005F46BBBB32B +:10C8D000665F05B5771117C0D9BECA8E15004BB576 +:10C8E000F6312BB04E764B93CE5E91C6269DBFD2CD +:10C8F000BC76B9CE7E1173DC17CAE07822FF2E25F4 +:10C9000071C6DF2107EA6D2F298DA21FD02A841A54 +:10C91000505F8221A1FC8B04C0F6598D24D15B4E5F +:10C92000DBD717011E59D129C15E007B0589F2634F +:10C9300014D6F81CD43B2489B6275702E620DF8B97 +:10C94000A4BCCBD02E2E4958492FEC8F29C36CB5EF +:10C9500040FDC9E6748276FED943A2F546A8FF657C +:10C96000288D98249407FB659BA0FE8A630C8E2972 +:10C97000E26516A8BFEA5DD63E7D8E6F7307D48749 +:10C980005F7710EE2784EC40C4CB19AEE475DFACC2 +:10C99000CA5F42796AA478CE0F50AD8E32FC6F56D2 +:10C9A0004839F27FABBB88F2CF820F15D74278BEF1 +:10C9B000E617967294C779BF005308F35CA94873D1 +:10C9C0004DB08E7E6E6F76F0724AE3A819EDE0F0FE +:10C9D00062EBE656B4273576D91644BE0F533E2295 +:10C9E000E4BD4307615FEC02E3835BDDEF50FBAA2C +:10C9F000C29FF4FF7D2F85F3C02E6AF66573EE5358 +:10CA00003E1C5795A3DD0B183DC93761D44B80EF11 +:10CA10006C6CBFC8968CF813389633F4F030F2552E +:10CA20008955EEE56B46B9EB9B39238E7AAE1F6CC8 +:10CA3000CD08D5CB8A83A0DD2EF36E3641FDFA57A3 +:10CA4000C0C8009E990BBC9721DF7D70D04EE9FBDA +:10CA500040C31E1FF5134A7ED68C7C4EE49166E4DB +:10CA6000C357BB66CF457D96E94950BF12EC3938B4 +:10CA700004A037DAEDB4ECE57A764499AB207E0E6B +:10CA8000E88BFE82140875A05D2E0C281DE88F67C8 +:10CA9000E54514C4C32B47A3E897F75AA41A33F209 +:10CAA0004BB940F5A73D4F24710D1F9B9D693A5826 +:10CAB0009A22723BD2227D7401AC555960FA024A27 +:10CAC000E2F3C0269E436F723FB7F7C42201F5C858 +:10CAD000AFD01F067CBD0A5186CA70A211DF5290EA +:10CAE00087532EE531373CDF89B4A5F27CBA1EE9C5 +:10CAF00060D41FB77E431970C3788B71AFA9FE0B4A +:10CB0000C53F2C41FBABC499FDADA7E596F6665A2F +:10CB10005E7AE6BB7694B76DE097E0B84FB92FA97F +:10CB200047BDB6CD3C6A97901E8DD04FC3079EBAC5 +:10CB30007A1DACAEC35505F368E861CF6BD6C1AAC8 +:10CB4000BF37E2AEEE463CFFDD117AC1CDF53BDAF0 +:10CB500095DBDC6CDD13F19DC5A6D4FF25F59F4860 +:10CB60001C65D8D134778D19FDBB803EFED92C468B +:10CB700025D4AF3F763F57DFED3B9BAFB7B497521D +:10CB8000BFC3E83FDA48E8ADC7909F791CB0CB4FF0 +:10CB9000A8BDEDF55BF7A21F38913FD9C5E96CB28E +:10CBA000931CED7A2D923D474BA7F284A483E71D99 +:10CBB000F2E9DACF1F9175F5171D2FD5D52F180D76 +:10CBC000EAE04B7E53A56BBF704CD1C1979EAED7A8 +:10CBD000B5AF214B75F022FB35BAF68BA51B75F569 +:10CBE000DFF4DDA2AB6F90D7E5A4DAF77B70FD59D7 +:10CBF00049BF17F8B10DFDA0E1407F7D31D53FCE93 +:10CC000020AA0613EE2FB4BBF39796F283F0FC3301 +:10CC10006F5EB949463F38E847BE077D4FFD27FAAA +:10CC200007F539CDD25EB43F5DC2BAE155B84F8247 +:10CC3000E4EE847D3DC8FDE1DEE56087E0B9628217 +:10CC4000800AF836A7B4B2A3D24BEDD29840EDD00B +:10CC50005D35FBBCD40E45AC5567DBA1296D9693C1 +:10CC600036F4B126B1470BDC6C7F7B5F71768A2E80 +:10CC7000987FE6CD3ED4175FD6CE4AC8BFE8E70519 +:10CC8000098D2B9CA1B92C7E0FEAF977327F63784E +:10CC900074A748ED739318473FB067D444E9B5CB08 +:10CCA0009716872091EC6AAACD21E7F0435DA74D46 +:10CCB000341E1F87CD6304E5DC75DA4A9F1BF5C976 +:10CCC000B305213FEAD5DD6EB63F9BAD4AC286FE75 +:10CCD000D337A4BD1D30BFEBF7D56BBC20172EEEAC +:10CCE000EF18F31193E9AB8BDD921AE7537F478D71 +:10CCF00073547E4A966D0B99FE8AD0322710EE103F +:10CD000065CA2C74BEC5052CDEC86EF1EAF6CF5D8F +:10CD1000077E3FFA0165E6015311EAC17B68FFA473 +:10CD20007F2F8BE8DF7B9AF4FDBC8D7A589D87C2FC +:10CD300040F2E3DED471831A0FFCB9718D315E804D +:10CD4000F882D26DCF8EBFA0FA738989448652F8DB +:10CD5000E35778ED14AF25A6E166DCB77B4044B419 +:10CD600071C9662E3F9B78B9A55DCE45FBB0B5BDB8 +:10CD70003417E9F26C41BCDBE3C57C857D04FDEB37 +:10CD80001E37495C8A76F05D07B5EBBDA54234CB12 +:10CD9000951C6F4BA9588FF916D0ECF5184FDC3D58 +:10CDA000C75B4EFDAD3C337B6E1E092DAAD03C9770 +:10CDB000797B3B8B4792CF797BE7686C91661C75DA +:10CDC0009EBBFF640A0F69E2FE9E227980F2FFBBE0 +:10CDD000D7F85741BF655E66E777FB153FF2B33D75 +:10CDE000746E7DFDAA4BD9E2C9FAF27E51F7C17E7D +:10CDF0002AFFBD25D634E1C2FFBC3ED8EE91291EE4 +:10CE0000DD87F4E34D6964FC9A5D668E9B04E4DF84 +:10CE1000A080F6518DB317C39ABE0085EA6DD6F394 +:10CE2000A7C7C0AF8E8044F38869755EBDFF6DE013 +:10CE3000E357B9FE36E61B27CA2F4E26CFAA7EEA55 +:10CE40000D88D4AEF672FDB41BF513E6A302E7D647 +:10CE50004F79A7D375FA29CF9C10703FF34E67A680 +:10CE6000D44FB79AC22F79808ECA1E99C6BF196552 +:10CE700084C6B769B13B49878CF88ECAB8BF839E18 +:10CE8000B406D93FB13EDDC5F1FD75ADE2F88626A9 +:10CE90002FD38BF86AE46C11E733157620BEF3923A +:10CEA000F0ABAEF051C4C7618E51BDEA40BCA17E6B +:10CEB0008B87F11DCC46FDD06831A1F264770F76E7 +:10CEC000E4019EFE5F7408E01293BF3CBAEEE7F9FE +:10CED00098D78C90B9E8EFDF33FA8C80FC6D277D12 +:10CEE0002326DC0F19E26CCD7E5CCBF5D0294F8672 +:10CEF00017FD4E328FCCC37D5D1F96B760247C77C3 +:10CF000024FA732CEF6C0DB9A6C9493CD53C839A21 +:10CF1000FF32EEC34DA85F52EC536F16D32FC67885 +:10CF2000FF532E5746FF0D764EFA283DC96FE7EBAB +:10CF30000FFB4844C0BC9BAFEC2E1A6F121E6FFA59 +:10CF40002AD676545624ED7C8E6F338D3F553B9F09 +:10CF5000136ED2C941B66AE79BCF6DE757B4EAE1D9 +:10CF6000A6163DBCAC69B94E8EC6ED168F5737710B +:10CF70003BD58B72CEFCC638DAC761E7DC9CD17337 +:10CF8000E44DD4FCC438CCE3FDFFE9BD7E8936DE38 +:10CF9000FF76D6FF58A28BF7A3834BCE19EF471F1E +:10CFA0005FD2E64DEA9D929D3FA1FAEBFFBE783F2E +:10CFB00046E947489DF45169326E9A983FCCE42384 +:10CFC000B5BF89D2BB39951D5C9F65627EA9C0FC47 +:10CFD000168C9B51EE206E2EC7B8596D771B8F0FA4 +:10CFE000CF8EA3D5389B04B1BD319E4EF667FAB300 +:10CFF000333F740D8EDF49C4E046E8675EBE82E6CB +:10D000000E95FDA1E828EA2520EC23418C338614F7 +:10D01000A188EAAD6BA668CE3DCC529CA0BE36C6B8 +:10D020004999E85BCC65E554D4213CFF5A02BAEB40 +:10D030000B18FF475C7F6F4B4B507B6FA4C38F2453 +:10D04000B63E6D1E18FD2CD50E1C9B67A27E93313B +:10D050001FFCDCAEE71BF4F9E0171AB4F9E0E77641 +:10D06000BDD083FAD3980F56E755F3E1C6FCEC70B8 +:10D07000D53207C6DDBBAB06EC34CE0ED5BAB0A4B4 +:10D08000F94E18B775E7CAFA681EC6A55739902F2A +:10D090002C4B457A3E371402BF41A38FA23CDE1EC3 +:10D0A000E179EF9DEDF53CBF1C2A477F26BB31415E +:10D0B000CF63DC75CA08FAAB53AA481CFDBF9EF6C5 +:10D0C000665DDE59B5932A3D04EE474E665F8D7668 +:10D0D0007524D14F50CE2D257182EB090EEFA2FBA6 +:10D0E000494A6304F3CEF0CF28657383FD35EE57CC +:10D0F0005FF90A07B6BFB32353413FE0B3A65AFF17 +:10D100006A199EBB995FACB6033E8DB532FF780FAE +:10D11000E60B3DF524EABA10D7C3CE13B39A246ABE +:10D120003F5E5AFA20417A3BC27182FDD39A1401C4 +:10D1300099D15D47A85DEE2D21F13281F62776D495 +:10D140005B25233F40D87BE60FB47D6F49DCE7D4F5 +:10D15000CCDB35F34105C7EBBD2F4690DF1C89873B +:10D16000899C81F3C64818F6DB1D906B707E77BDF5 +:10D17000548CA6BAF78FA69479F1CFF8BEF516C9EC +:10D180001D9867C1F3B118FA75259539E173F80751 +:10D190000EFB0597B46AFC83CC00E3DBC9D663E4DD +:10D1A000D3AF605D542E9E9FF27F1A50AF06399F19 +:10D1B000823EAB35A31E98EDA5F1EB55A8B03C49D6 +:10D1C0007EED6FBF87F2E7B6F6282D3DF56379A8AF +:10D1D0007FB34177A29EC9AC62E7BF3DEDDDB43EAF +:10D1E000A9F7F8B94A8148F9734AB39EFF5CF57A0A +:10D1F000D8111825E837A6559D3B8EE9DD20C42DB2 +:10D20000177EFDF1CAF6850F5279700448D4C4F830 +:10D21000B4390A74ED1DFE3752067476558F91B5F8 +:10D22000003BAA63A4B16C62BE29E0FE4E2FEC174E +:10D23000EEC767A057515E26C2270DF8A553E39F9E +:10D240006596327E99687E239F68F0A1EBF9D3142E +:10D25000173D7FC473FEF00C421E6AB79330F8E3AB +:10D260000FB74B14CEAE0B75E03199C5CCC65999AA +:10D27000C9E89C65D82F5F8BC12F6FD5CF6BDCA71A +:10D280002E7E1EBA57FA5F0DD16AD47761AEEFDAFF +:10D290006869E90A0EA31C916B08CD5F591C520DF9 +:10D2A000F221B94266E73F2AFFF0F3D9F1B8B58021 +:10D2B000C5AD93E9BB998D43123BDF8CA4D49F93FA +:10D2C000C7192CDE0C923D761C6728C0F479320E0B +:10D2D00097048CC3415E3A054FB2FD44FB1A14AC6F +:10D2E000A1216792DF603782982735F2DD666EFFF5 +:10D2F0008DFD9BB81FEFE0F718D4E7E0BF377AB396 +:10D30000B4FE3BBBBFA0FAEFC67C8871DC551E366D +:10D310006E97A4FA8761EADF384E0BC638E11AAF80 +:10D320002E4E30EBE20470D228FD05C142E997771A +:10D33000E219A140FEEAE4542D77717F670BA7A3A1 +:10D34000EAFF3CC861A3FDFEB6571F678CDBCD42E8 +:10D35000CEE7213DDFA871883D4FCF1F1E03BFE4FC +:10D3600018F8CF65D05B6A1C638C5B8C71CD4D88DF +:10D37000D3C518A7DCDDB091E67B8334AFB1B5BD72 +:10D380008AE6396EE1F4359DF92ECD73EC22F61163 +:10D390003C4FEA090D50380AAC89E7949B02FD879F +:10D3A000F0BCE9CEE55619E342A535DEE9A1F16509 +:10D3B000701EC6973BBC56BABFB79A423B905FD22D +:10D3C0004884E0FD81DD19CC1F05FC949B60DE974D +:10D3D00096AF10D0AED8E54802C77304829534AE3C +:10D3E0002321C18AF2DA44E8F96D5620E643BBAC4A +:10D3F000AE2390C5F8BF67F93A6A8F6C849F0734F3 +:10D40000AD234B417E9688248CF0569EBF51FBB9CC +:10D41000B31CBABCD4CB756C5F6C794CEFDAF254A8 +:10D42000BDD743CA66235E51B216E6B5C911D2E82C +:10D430004CEADD8E992BFCA768BE65E53578AEDA3F +:10D44000F3EECCB998C7EDE2F79976975CE647FB27 +:10D45000B2CB4F86DD15CCEED2BC3CE6C9D19733BA +:10D46000E4E5F7A38C674DEECFAE9B4238FE311F4B +:10D47000F353FFD37101D597EB77EFEDE98075F8A2 +:10D48000248827A79D1D4F66B76DD2C53339BE9B33 +:10D490003B567893F18C319EFCAAE3C8CC298C1FB3 +:10D4A0002FE5E7309612EEEF06F4FEEE7B5EE63FE8 +:10D4B0009CE1F66F07EA7FD8F73D5CFFE7D4853B38 +:10D4C000CCF2D97ADD980FF587F5B0F19EC34ED432 +:10D4D000EF25497D3F591EF4BF2ADF19E47499599D +:10D4E0003746F14D172401CF79C7F1CF65F643A533 +:10D4F000D3787CE31653FAD95F179EBD153CBF79EC +:10D500001ADA4110DD83A800DFD902115243EB790A +:10D510009EF3F7AC7E37D6A37C36413DFA1955BC55 +:10D52000FF4F59FD2EB57F88F7AFE2FDCFFC89D6BE +:10D53000F7F27A15AF019ED71DF04AB4B4954608AC +:10D540009E9BF63C79875E8F0CDE61D0234C4F2684 +:10D55000C7B1B3730F753D9F4DB29E1393AC67C3B4 +:10D5600064EBF9E339D7539CC5F4C264E744BBF0DC +:10D570009C08967E8DAA3F97B2FCC5F83951E0EB26 +:10D580003927BA88CB718F7A4E5432495E7882FC43 +:10D59000CC447AEAEDB63B3BF05ECE838A3D8CF715 +:10D5A00009B26FE9BA651F557B2C7F62E4CFAF5B90 +:10D5B0006F55F1F5761F5CE647FBB62C8BF93B3DCA +:10D5C000CBAD6902AC3FC2E1EE43AC3E298F2CDF0C +:10D5D000B088F79F38CFB7A103EF5BD4C27A11FEB2 +:10D5E00056964CDB3FD8B67AC70A68B4B5B27726F0 +:10D5F000FA9DFFEE087564CD4F9E237F55F947B322 +:10D60000C75E87FC65A920340F7FAB29BC1DE749A5 +:10D610008BAD53FCD0CAE21DA2F195439B0725C9EF +:10D620003CE8F9CE7389147A380BCA682D298D38F5 +:10D6300093CFD5739B18DE47055A49781F15FC43D5 +:10D6400007C6B28040CCC1E5C027FB976AF6FF59F8 +:10D65000CEF7FD0B4902E3A21D5D24BE11E4A3DF5A +:10D6600022D5B6023DFBDD62300A38F6CF0418FD44 +:10D670009D726BF009E0A7A2EED29BC81C2C2BD99F +:10D68000B97AA7DE7E0F6471BD1AF09ED7BA864FB5 +:10D69000DAE8FC31981FCF6962EFCEA4F733FBFDC7 +:10D6A000921FEF67EE5848A81F5DA45C76489893D8 +:10D6B0001CB748F9D97161CEE4F88CDF0F3E4F7C7E +:10D6C000C6FD543CBBD2E897787BCCFF6BB07703A8 +:10D6D000ED7B68B9BF3DEEFF35F57B0769196B1F20 +:10D6E000A2A5DABE28AAB787D3BAF57049ECDC7ECA +:10D6F000AC5B496D4F55FF795CEFB5BFC0F1485049 +:10D70000BCE2ED8728BCBF7D84C2B1F6E3B454DB34 +:10D710001BF130CE6BC4DB88E7D97831BA6592183B +:10D72000D5C756CE776E3246F57B7E66F813E45B3E +:10D73000898C1EBA0FEAE2D17E7A3F307EE69B23C7 +:10D7400036D892ED01E03BECB33096C073C1CC5FAC +:10D7500038A2984FCEAC66F73686A39FDA513F6E5B +:10D760008F7AD23039366370834EBF94DAC7689CA3 +:10D7700058B267830EAFBDD52C5FE821EC395D3F11 +:10D78000E6AD7D8C0F1C67E53B6234DFE938EDA523 +:10D79000F94F755D13F1CB70D5C68D28F73BF8793D +:10D7A000D08EAA53F49C72475CA4B7B876E03D19BA +:10D7B000CC3B54117A9E45AA159A4FC7F678AF49CB +:10D7C000A5133903E3551276B4380DF74F22511BD8 +:10D7D000FA795F507C8CF3162D92D7D17B846592B9 +:10D7E0006399469E7704985E93401360BF1D8162E3 +:10D7F0007A1ED5D32935D8A9DF2692F46FC0BE94FE +:10D800009C0A0564BA2F81ECF9C9750FC6D9BECC44 +:10D8100018B41259BBFF7B00D6C6EB9C7E64A144B2 +:10D82000CFC332F1BEBB1BE9CCDAA974CE8C7B44EA +:10D830005CFF9D77C1636C6FC897E0BCA87F8A3896 +:10D84000BD05613EBFBF0E716C7A923EAF98948B5E +:10D85000B2B3908F991F35C0E3CEFDBCFC1E7FFE96 +:10D86000142F7FC89FC739FC342F4B0FB5B8E8FD84 +:10D87000250E0FF276EA7ADC8A48123A794D2309AE +:10D88000CDBA4B621E1D3C634FAEAEFD0583C5BADB +:10D89000FAD2136CBE89F8E7C217F4F31545F5F315 +:10D8A000CD1ED2CF072B62F9F92AFDBC33E3FA79FA +:10D8B000279A2FDAF487E3F45E739595DEC3CFA839 +:10D8C00062F1574615E8517A8758BF3F1AFAAF41BF +:10D8D000FA6F55F327EAFE935050CB9F5B3363FCFE +:10D8E0007E2BDB57620E05F19E6BA93DBE04CF4730 +:10D8F000B6F1F722D471C7E528203A50BE63502212 +:10D90000BFC6AA98DC764DFF9D82CF7BEED7E75944 +:10D91000BFDF4EA87CC4DBEDB454F3AE99E6A15A48 +:10D92000FA7EC6D3A408F35A99F6442DCE4B86004E +:10D93000067ECF7412561FE5B02431B893B51F444C +:10D94000B99B91C4AB341015D1EFBC80244414CEE4 +:10D950009F66DFF000F2B14C241D4C497631DEBFEA +:10D96000BEE101F4EB9F3A63AB9F5F81EB61F6D4BC +:10D970007C5F8C042A347A4DE96772510BDB964246 +:10D980000F01BD7767CF3F3B9FF254158BF3E81F24 +:10D99000E697ABC19F1592B054C5E0BFC966F617B4 +:10D9A000E43BAE95EFA70655F9D6EB4FA3DE34EA7C +:10D9B000CB9F82AF4D34E338145141BDEC20EB9343 +:10D9C000E31451BC9FC6F90E70BC9FE5A58348D4F3 +:10D9D0006FAB38344A63C7F923B1D82C64B75F847E +:10D9E0006AF19CE379DE2E92117A0EFB578C282285 +:10D9F000DAFFFC4CE5C708CF186CD1DBA33D2DFA4C +:10DA0000FC1061B051BF973D2D92A8A61DCA575476 +:10DA100027371E1DACEAFB6DED311A277FBF7D0F46 +:10DA20002DC1CED3387767D69BF49CA8139B2EC00C +:10DA3000739A21AAAFD348D08EE5ACAAD88B784F81 +:10DA4000CD9623537A953E1D11F1BEF9F45888AE58 +:10DA50001BFE04D4077765848FE0BAA43E6B14CF15 +:10DA6000E9252546F3DD5D9E7B87F15EB04721C148 +:10DA700019D0CF63567E83E7512440643CFF77245E +:10DA80007A042BE6851452EEC075E3DAB0BEDB4AA9 +:10DA9000EF3DFB5B8970A3260F2005480DBDFF6A93 +:10DAA0009673B5F7CD07789E731FF0E5322E57C5F4 +:10DAB000B3116F968FDCC1EB8999DD3FD894E11BE0 +:10DAC000A071D3566B0DFAE7921936A882CE5D8EFF +:10DAD0007223D91334BF4E820003DE927388C1656E +:10DAE000BC5E8A33B894D55B02217223CAF7D6CACA +:10DAF000B7717D80A73CA3E8EC7314C93CCAE6A9C2 +:10DB000062F22AD9C7D838D54C5E611E26DF5CDEAA +:10DB100025492FEFE01653F99662A408634595DE78 +:10DB20008F64854D39E88F345A4F9AE620FD659110 +:10DB30009DEBB1FDE9CA08DB68BD617FA6EF21D18D +:10DB400074F009670D3279DB87E74780F7CCFDEC8D +:10DB5000FC681F9E1F015C1A873E1A78C6A38C259D +:10DB60005518C621B2A65EDD977D25C15CDD39134F +:10DB7000A78F5B61F491120E01E923294408E3B9F0 +:10DB80009C392ED23CFE205BAFDB1E63F07E0E3B49 +:10DB9000A30C8E33FAB8A58848F3FC8F3278BA12FA +:10DBA0001631EEDE8779BC14E7C1AF678BDCDE800F +:10DBB0003C68E4E460567876CE7C942F900F9D7D8F +:10DBC0008CEBDA9572FE1CE813E97B2603DDC5AE0B +:10DBD00073BD17F203D0EB6406CA9D9D261F9E04F9 +:10DBE0007D4C664CDC7ED626C2FC20127F1BFDC815 +:10DBF0009E057231EABFCCC45BF43C345391E7A27A +:10DC00009CB4E4B03C58D793FF42ED89CBCCF21AD8 +:10DC1000CE209317979DC1E9651C76B2782AAD9402 +:10DC2000C312ABB7780DF25505F285F90888ABB58C +:10DC3000F2A5DE2398E521376ACF61553C56E6A868 +:10DC4000EFF3307E93FAC428E60DFE212BBC42CFC1 +:10DC50009744447AB5E49094EDADD9E1167D7B7696 +:10DC60008E37BB62B416ED7C7982C878EF710DD720 +:10DC7000471794255E44F9B8F005F67CA67744442E +:10DC8000FDA08E07727812F9FDF6ECF01A36EEE67A +:10DC90004FD8B88CFF671F60FC5F7E90F17FCF028A +:10DCA000C6FFC104E3FF9E058C9F2FFC29E37F156F +:10DCB0009EF302E37F15867128FFABF038DD16C4B2 +:10DCC0007C4E0D7F74953C78FCDCFC2F99287F1FDF +:10DCD00054F99F98287F2738BF3BC718BFFF94D7B8 +:10DCE0004BA30C7E81D5CF564628FFF7F03CF63E7D +:10DCF000B3FC2A95EB6E8F10D5E0B52A87C9C13EDB +:10DD0000C55C9F4A4E2EE4F5F3B2953EA45B779135 +:10DD100095E987572CF174BCB755FC9B04E66FBAA4 +:10DD20000512490796EE2EFE1D85EDC5E6483A44DC +:10DD30000AF669BF67F5B5765ABF25FF2356BFDAE5 +:10DD400049615B41D5DB086F29B106313DB1A5E0E2 +:10DD5000620ADBA6DB29DCB3EDC1B136286D85BFD5 +:10DD60008FE2BE6FE9254196C608EFC13CD0B43CB6 +:10DD7000E710EA3FF027F604C09E4D3307453C47C5 +:10DD80009A168D454D4CBFCA488FE26AB6AFAE3E7B +:10DD9000B2571450EEC99E328D7C7F3787F91577C4 +:10DDA00008F28B782F657C1C62A6F242A4B9D42EAF +:10DDB0006E6E07D747E3B73C99C3DE83B4FBA09FE1 +:10DDC00017DF4365FC67F39158590AFBEB0A8E385D +:10DDD000285EC43E8679F6B3FCC5603F7D4FB2270E +:10DDE0000856DF897A86C53BDB02E037025C035ABE +:10DDF00009E57C5BF0437A6F641BBF4758CAEFB5F7 +:10DE00008CFB31D5E0C764E27D41B7EEBC2D855F68 +:10DE1000F373D4778FF378A1CF107F10326A473E27 +:10DE20007510FB502F948FADFFD48EFAC82188F463 +:10DE30003E474170A406FD824846F8308EE35E708E +:10DE40006A641AEACB7B945A9B4CFD9C23C83746E4 +:10DE50003F272F0EF667CED9FE8EEADFE4C5871482 +:10DE6000CC7F18FD9FBC78770883B2D2F138364E4C +:10DE7000E99F178F299827C983E7DAF5AA654675C0 +:10DE8000228A69AF4C12777C5360EFBEE03C1ECC17 +:10DE9000C402C2790EE60F90C5EC3E62AC425CBA99 +:10DEA00008C0EDC15387EE83F21127D1C9C73F7374 +:10DEB0003D37C6F98648B29F9E6F662A9FE07A81F9 +:10DEC000AE9F223D547AAAFDFA8287EDDA7B1D7D52 +:10DED000F85E268CAB943E336CA5E76A52399EAB54 +:10DEE00011FEFE6D5A1ECBEBFE91CBE1AD26E58F08 +:10DEF00038EE7010E273A8EFE3F1795FC58B945FA1 +:10DF0000FA022CBE98C8AE38389F8CEBA5DBD29AAB +:10DF100031EF0C669CAECF919608A35E77FAD8BA23 +:10DF20003C3E81970CEE6E7AA71EE775568804ED8D +:10DF300091B382BF7F62B8BFFF09EAF52C0D3F564F +:10DF4000801E9E43F57A8E0FCF952366AAD7D5FB08 +:10DF50001924CFAB9303633959BEC2294409F58F05 +:10DF60006E62E7FE66BEBFAE6AF6FECAD400D98B0B +:10DF7000F9CB397C1D2773C233118F8C8A9882E7C5 +:10DF80008F2E85BDC79E599FA8A1EEAC747EF8B8B0 +:10DF9000CDA3340F047CA460A9F28DDF9EB0D3F72B +:10DFA0004AAB457AEFC05DFE21E523BF93D95B758F +:10DFB0009C2A1FE3A3051C2FE2053E9A4DF9E86257 +:10DFC000DF7CCA4797F852F2D180C3C047B7E0BEA2 +:10DFD00019F948217A3EBACC37CE4797F9347CB448 +:10DFE0004361EF51EC087A689CBA4361FAE6CBF2E0 +:10DFF000114804C13C6C5FB0BF06F1D85E9D4BDF99 +:10E000006FB9DEA7BFC700FE40B34F03C33E517FC9 +:10E0100040A5BB315F65A47B77D3F71B281FB67182 +:10E020003E6C4BCD8717FBB87F719EFBE9AC8A290C +:10E03000A82754FDD0921DFEB68FF131BD8FE6E2C8 +:10E0400071FE23C1A106CA6F22A17ADC6262F7FECB +:10E05000C9DD6CBF95802098CF21CF77F3FD867DF9 +:10E06000B81BC71FAE60F9B67E2ECFFD15FD0DD3D0 +:10E07000314FAD884108CAE1F9B3AF4CC77C5B357D +:10E08000CBBF3930DF5884FAB85FF73EB2D3B02F38 +:10E0900068BADAC07439C12FB44119AB7D95BE4757 +:10E0A000F6489BE84E75BFCC59D7BF0CF5A8F3C412 +:10E0B000F32B50FF429CBD0DF1EB0F2698DD52F380 +:10E0C0006C0DA724705F278D5F55B926D52304F505 +:10E0D000A3519F67ACE7FB56913A7FE6E4FBEFAFB5 +:10E0E0002702DA5555AEA756C76B709F54BCFD0288 +:10E0F00009B1F704E31D28CF8E2A89BE3701FE1D22 +:10E10000E543C77C89BE37FA43CE8753D712FA3E20 +:10E11000419B2FFCA44FA357C6EF419E27BF1C9BDA +:10E12000C7F0B6E05D5A1B95D767703CA3BC1A4B8D +:10E1300055EFF705591EF5FBD532D54F6AFDEB9C1F +:10E140003F5AB2959FA09C001FFE1D8EBB23EBD1B2 +:10E1500025685F89798CD27387C0F82EFA03C67759 +:10E160001613893C8BF624706E3DF0F3A41EF8392B +:10E170008EEFE2FAF9404EF87FE33CAEFD223DEF30 +:10E18000735527D8FD4D28511E9DFB53CB59268929 +:10E1900051FDE7BEC9DC335DA67C7314C7916EF9EF +:10E1A000AC1EE16D271E1AC1BCC8F0D34CDFC4EA17 +:10E1B00098BE893D2D2690AF9E0CF23C329148B41A +:10E1C00012F99BFD3D59D79FF85E05BBDF86EF3303 +:10E1D0004EC66FDF3FF350E23EA4E7D31619BF33BC +:10E1E00062E43747EBC1C42C8CCB5F7344D37DC949 +:10E1F0007D56F58C7903D73B4FB3F7D21CDA759275 +:10E20000E4BE9F2F7FA8FEDDC18CD0BF209D157C72 +:10E210003F08E3B73A337D3F03F8E55FF1B931FFDB +:10E22000681C6FAB35140C69CEC55439F8D4171679 +:10E23000FC00FBE5A161E46F67F951EA5F58F87BE8 +:10E240000B67F915A888347C60F78FEB213B8E9320 +:10E25000B1364D8D939C146E8DD23809EC24F93271 +:10E2600072E1A80F8B9817EA9B7B2BCD5B3C2E802D +:10E270007D95B478877CFEF9982F186BC03C4606D4 +:10E2800061F6775C8F6E12D9FBECC0E74B35F1A7D6 +:10E29000E21F978B02C4CFD85E090C53BF74A2F55E +:10E2A0004E4FAE77BA9FEA75F26A3BEA8BF5ECBB4C +:10E2B000135052BF39859F5C86EDF7F17DDA3BEE56 +:10E2C0001FC30454DF109A0798D629BD817AF1AF95 +:10E2D000793DF8C5F3B15FA03B2695023ED3FA42E3 +:10E2E000D4CE815F5CE94FE1171BF9D9BC81C99D90 +:10E2F000918F9DEB53BF37391C3DF516FAE78FD54B +:10E30000137A5FABEB3B6F3A4A11BFA888E906E28C +:10E3100049F450F9F3AC17E378861A5F5F4CEDFCD3 +:10E3200044FBBA0DF316363C9FB0D37C85C33C1A30 +:10E33000A5716615CB7F39EC63511AA756B3FC97CC +:10E34000C349E83D666074562F490CAE63F57D986D +:10E35000F7B069EC4DFD08DD1FA7E249E0BD5F574E +:10E3600095C893CE6CFD191BC493165C27F7F3DD9B +:10E370004A1ABE0494AC0F7A747067E08EFA5A9C05 +:10E38000B7228AEA8898B8FC15E686D720BF758937 +:10E3900044A0CF726334FFE66A23F4BB087DFCFD22 +:10E3A00089C5A66A177EAF8A806E3067C3F83C07BE +:10E3B0007DB79FDF93944768FEC55A4D8280114C0C +:10E3C0001D8EE2FBFCF6369A2A207B805E75169C39 +:10E3D0002F7427CE6797999DE99BE0FD8C0D9C1FBC +:10E3E0008993C93D31874A539DABA872B53E2374CA +:10E3F0003F8E8B78629CB885909471FBC1AC9A8DEE +:10E400008CBF15FA5D95CD4584F277E799ABED6841 +:10E410007736DF68A5797DF7232F35E245DD4701A3 +:10E42000EF46C0FB115E763A13D7A0BECDCC25D106 +:10E43000BA3CFC1E50A41EE1871EFEB8D10B786EBC +:10E44000419AE71272D86FDB8AF7353A394C771E5A +:10E45000FEFD282A707ADFC376C5F9F447BF11F9AB +:10E46000FC3973F8AF717DAE889DE6275DD5410B11 +:10E47000EA9DC3FCBE8B3F423A25CD3DEDCC5C46C8 +:10E480003FBF99E5B5FC765EF2FB3DCFF37D7BD1D6 +:10E49000CFE298D738BDA7AE95FC2CAECD24B89F5F +:10E4A0003BF8FEE44508CB13D4497BF13D095735D1 +:10E4B000F8135E7AFE40FD8721DEBFCD17FA919FEB +:10E4C000FA1123347EC9C4B553BC2501F59EAB5A5D +:10E4D000AAC1EF6E4CE57105C41B3FC6F69981B128 +:10E4E000287E23CB5D9710B4FD62EB806AB0AE1836 +:10E4F0005F675E6488EA6D573D9B17ED30E695FFD8 +:10E500009ECFEFF62B7F87FBABF6FFA32F348CB0AB +:10E510002B9248E0FD50F5F9E3382E38AD8F8FAFE0 +:10E520008FADC7552151BF7CEA5A59C0715FF53391 +:10E530007FE0AF7DCA2BDA71F37CE15FB27147A255 +:10E5400038AE672D8C4F92F56AA9B8426FD0F54569 +:10E5500046149B667ECDBEBE79AE7D35F2AFBAAFB6 +:10E560007985CC8EE54D5344FC4ECDC3DF99BB0F6E +:10E57000DF277BF45E4FC3CD5EF412174EC1FDFA68 +:10E58000839FDD437DD44D1AF03C6AFB2B26FADED7 +:10E59000E2C3F7C5A83ECCAD978AF1BC2A37E1A00B +:10E5A000FA06E0BDF40E093F9FCEC57F9BA8DF466B +:10E5B000F59C27F1F05B2ED493ADD3656C97DB16F9 +:10E5C000176E9C8DE3317C3D41B906F9C6531F9E01 +:10E5D00087FB93962BEBE21B4F9B4CE9ECAC084F6F +:10E5E00043BFF55177E2B7981FDABED82A0F001E55 +:10E5F0002F2DFEC881FCF748875541FC1E59D728AE +:10E6000026A0DC5123523FE871C543F1FEB415202A +:10E610003CFF48F829EC6F938AB578FB39DEC0A13E +:10E620006FB9E83AB3E9F9A7BA8EDCC4C335E80F8D +:10E63000E7B6CACF38008FFEFB181FE406E314FFCD +:10E64000DC3686BF8A776E6BBC468B7726AE4BE393 +:10E650001F6704F5FA79B325ECC33C99519F4CA48C +:10E6600097E665D764E56AF4DD647EC479B7234A2A +:10E67000A6904D8FB0E89F8D148905D0F5739F89C2 +:10E6800060BCB6D8E4A4FB9EB1817DE7A2A83AF0B5 +:10E6900022F51BC24E05E3B70C22BD88EF5B17D6EF +:10E6A0008041A3971564DA7F2AEF5FD46DD59D4B27 +:10E6B0004B6D7A782AE9A37E5221B126CFAB611F38 +:10E6C000A69EF8ED09CC574D259AF6E8E79A5A5CD4 +:10E6D000F47D0143FE4F2DEF397163FCA0C6AE2DD2 +:10E6E000CCE5F7CD2F2217D1FB5BBCFF4474F9D7E3 +:10E6F000F670FC60097E5F5059948B7258CAE8D856 +:10E70000577EB39CEA9C42F39D41A11BE8948F7114 +:10E710002ED8E316CED7847FB7672AA76F2EECB129 +:10E7200019E2C9617725B54313E161BAE76FCBEB15 +:10E7300034F1A8C9C9F45EF23EF307F43EC4C4FB49 +:10E74000ABBFCF6CF1B23C7D4605D3D39D192C4FA6 +:10E75000EF0CB23C7D6706CBBBA797B13CBD0AA7C7 +:10E760009532D75A85F19B46B2A65E9DAF3343D111 +:10E77000BF0FE5BE8CE6E94D3E22CFC07B2D895B05 +:10E78000E8399ED517A6E77826F34814E51A788B62 +:10E79000E6E14DF604F507C0D6D13CBCC939C4E06A +:10E7A000325E2FC5195CCAEA2DBE10BDFFD939C132 +:10E7B00039D595B922A73FDB9FC552A413F978310B +:10E7C0002C6F13EC4F4E4BA813E9502F1109BF9734 +:10E7D000A4FA49E4CCD5F4DEDE550D44C2FB2B2A65 +:10E7E000FCCD7BF15B40F85EA742CFE9331591DEAB +:10E7F000EB8B29CBCEC94F9B419F2466E07D6B3BC1 +:10E8000049D8CEAEB7F1EF30EC287C9C7EEFD3E157 +:10E810001CF3E1F9EBA3B9CCFE0E2F7C90DE037D57 +:10E82000A8F04F3E9ADF5EB8D98779A6EEA27F2185 +:10E83000DA7941169594DF219DCAEC77E0F4169AB7 +:10E840000F8FC9FA7BE1497EE960F6D40EAEA7F3DB +:10E85000EB5BD7F35FD1BAAEE6EB8AD9C7EC781F92 +:10E86000707BF55785EF3682EF2D3C54B82DC1BE35 +:10E870001331BD18F5DE6BB9824E9F0F176DA6F8E8 +:10E8800077973C48F1EE29D94CB4FAC18E78A7F2BB +:10E890005BA7B2F5C7A4FF1ABC3F9A14EF0749AAB9 +:10E8A000F91D13D0FD0995EEBE31FA7DA7AF1BFF10 +:10E8B0003F7DC5F8CFE2F4DF92CBEEB7C76495DFBA +:10E8C000EFA076EEF33089603C3591BCD87CFAFB42 +:10E8D000599EBA341D5C1C08B952DDCF53CBDF20E2 +:10E8E0003D6C93CBD73FF176BFE3742B0E8C5A2F40 +:10E8F00046FC781EB54D61E7B313F56FB344B3A57D +:10E90000738C7F4BDCA4C37B327CF6E6B2F3BA6F28 +:10E91000BFA0EFF71783E986FB684CDF6EAFD6D355 +:10E9200053A5F359FBFF15D173323E9C949ED52C11 +:10E930008FF755D173327CB670FF60327A1AF97254 +:10E94000A2F1FE7FE5CBE7CF938E467EFCBAE9F8D5 +:10E95000FF1A3FBEC6E395FFA6E39F47C78FCE933E +:10E960008EAA9E1CB49236B47F331E5B7FB801EC36 +:10E97000DE91FA79F330BF40CCCAECAB6763FE9509 +:10E98000C5E733F09C26C5BC6979CC9E1DAE5F748B +:10E990001BDACDCF43E9347777540CFEB202E8108E +:10E9A0005D66A2F95D63BFC39C6EBF9DEA56E3C07E +:10E9B0008CF9D07FD931D3DCDE14EDD592D46BD66F +:10E9C000458346CDBE429C7198C8F47E5DF4A8890B +:10E9D000DE07385C3F2F2355DCA4EEEFD1D0D57F86 +:10E9E000DEFE864C5FA9BE990C9FE353CFD70EF293 +:10E9F000FBCE4411705F06EF67F103444F16CC5312 +:10EA00002E3B61A3F7388EE1233FE679429E3CD846 +:10EA10008765F5E5BAFC8E7ADF72D5B619F4BBD3FB +:10EA2000A4E96ADA3E374FEF178DEF8FCA57FC3BE8 +:10EA30008A392D518BF67EDAAA3CF5FDC6483EE2B6 +:10EA400071C0AA5CF00318FFF095B620E67D6C5704 +:10EA5000373E8031E2D16BDC824DC307F3399F55DD +:10EA6000B630BFF6C0F1B045D4ECEB328E0FF4BF38 +:10EA70003E555C5BCEEB578405857DE742C9D7BE2A +:10EA8000A7D0C2C757EB8DFD6BF33269FD512175DD +:10EA90003E78211FBFB9F9DCFD49D3147E4F3D58A4 +:10EAA000904AFFA8F47B7D6AF8B23C68FF2B21F204 +:10EAB0002E7E3734FA988D7F073B321DEFF5A9740F +:10EAC00020E6108D2BAFBA5CF6B0EF062B26DC2FBC +:10EAD000AB49FE1461152F755E0FD4635EFF22856E +:10EAE000443AA07E9518BC41FBBEA266FE15C80F35 +:10EAF00013CD3FBE0EB342BF6777D3ED2A7FE9D770 +:10EB0000359E9FE0ED8FFCDBA2CBB1FD81C3A2B4AB +:10EB1000B168E2F6AA5E9ABE47CF3F77E7B1B8DAAE +:10EB2000CBCFC9009FFC66CD3EAECB63EF8F7F5944 +:10EB3000BE2AC923B49CBE2B629161DC953C2F8D0B +:10EB4000E36BF9A480B7BF15DB67211ED1B45998D8 +:10EB500047F815D3738303F7E6A7D23787517F4071 +:10EB60001C529857AACB375EDD58DEE5ADA07CE39A +:10EB7000C7F4D081C317E7A3FCADE0F74107AD911F +:10EB80007CFCFD810356F9363C473CDF75A8F49EBA +:10EB9000488FA8743E703C64C173A4B226C6B7CB3C +:10EBA0009B86C5DBA0DCCBE5F72436D58CF33A9FFA +:10EBB00067D01ADEE40812B22FEF8A6DDD762AEFF5 +:10EBC000348F78F0D1A5DBE8B940E714AA2796374F +:10EBD0002DA5798EE9F52CCF71C0CAEEF51C5B9896 +:10EBE000C1DEAFB22B35C85F6BBE70D1EF56AB7ACA +:10EBF000EB63AB3C9DE54799BE7ACE1CFE1B9407A8 +:10EC0000556F9DA5A73AAFE6FC284F5F9652AE36EA +:10EC100072BC195F0DC697B9566BF86A14ED9C6605 +:10EC20005FDE6C6771E31143DCD8749CC57507AC7B +:10EC30002C7FF37683E4DEC8E4AEE32E94C32F0A80 +:10EC4000055CC728D7739FC7EFF831BD67CFE9F1DF +:10EC5000F1C0ACE908ABE3AD6CD6EB7175FDCB1B35 +:10EC6000D3F5CF79FF5293F217F4BEDBE536FADD28 +:10EC7000056FFD4A2AFF5F5C4E24AC1FB4863666E2 +:10EC8000E07969D327EBD9FDFE381D6F8D2D723BDE +:10EC9000A327A3FFAA01273D57CDDA34FA97C85717 +:10ECA0009F39432EEDEFC2BCC3F739C9BFCC0E620A +:10ECB0003BB467CBCCB225955DBBBADE94126FAB8B +:10ECC0004DFE48AB678C7C588CDFE242FFE1511B64 +:10ECD0003D8FBD86442DD87E255116127A7162CCA7 +:10ECE000827AE204DF17B5FF0992C8B808F553BD70 +:10ECF00089EAA71391AB5DF8BDC116CB50C65C285D +:10ED00003FE7EB7867BD89C6D1AADD2F0E8CBC5CCE +:10ED1000C9ECF8E768C75BE226EAA7B5AC359DD435 +:10ED2000DAF3EB23FAF5803C1E6EC0F9EE37F1EF13 +:10ED3000D2046F437ABE4FA408EABFC3F5EC7B91BF +:10ED400083A1A9343F774494B756A03F72B3DA9EAB +:10ED50009D4F86D93FC98A96E0D60A789E9E5F4429 +:10ED6000E9B07A97B219F3FD1BD3E7D07EA3BF3287 +:10ED7000CDD5E6F98D6578834967F7A7EFD2FBB962 +:10ED800095688FA89D48E4DFA0918BEB0AD3993D4D +:10ED90006C1252E689AE2D74D2FA237F32B5A5F2F9 +:10EDA000FB2285CCAE2CEF4BDD3F5298C1EA63A924 +:10EDB000ED61A2209D7F5F66281FF7757973EA7168 +:10EDC0003ECECFA4ED4EDCF6F1F5782FFCA8C8E4DA +:10EDD00057AD7F2B9FEDEF4FF299BC1D1958F233C1 +:10EDE0001FEECFED8284BF07B1664A640EF2CF7585 +:10EDF0006B4FD2FCD8817C86F786DC50793ED2FB03 +:10EE000078AD157F97E1400B090A72523F18F1580F +:10EE1000C0C74FDA1DD5EEC51CB8EFF0CF0FF19E7D +:10EE2000163489BA3CB8EFD15BE9F7FA07D224FA75 +:10EE30003D7902FE30340AFF4AEFDF2ECED7CB9960 +:10EE4000713F5BFBF47EDDFBE8DF5624FDDB23D660 +:10EE5000B15F22FF1F01FEEA40FE3A336FB6F67D36 +:10EE60006A95DF8F34CEA37CFA7963BAA8BDAF640C +:10EE70002C27F5771B4D5F693C73A491F9BBEF6FAD +:10EE80009897B12A45BFDBB95C4CE6EFBEBFE1DC29 +:10EE90007EF3FB5C6F7CC0D7A5F211FADBAB34FBD1 +:10EEA0007D77BEDEAF6D6ED5CFBBA2453FAF2A1FCB +:10EEB00047439BD2D04F017B359DBEB7CAED27C1DA +:10EEC0008F779DD30EB3BCB78A0FE80F33DBA72231 +:10EED000FABD678C5F902EDD06BC8CEB3922021FD9 +:10EEE000A09E79DC4CF54C49DF8DA25F3E9BEF760E +:10EEF00019F8ED7CF94E8D97557D6EEC9FE4B33F8C +:10EF0000339EFA9AF86B62FAC7CF2B9E52E5FE3A0F +:10EF1000F390654119D327B7403927DF4EF7654E87 +:10EF2000BE4CCBEBD4EF93904825DE7F3A3290462F +:10EF30007F3722FA7846BC04F6F3E8B2BF9AA3F50D +:10EF40000FDFE0FBBA3CF6CCCB78ADEDA8188F65AF +:10EF5000E13EDE6522E84FBE7BFCD92E84D3DE1075 +:10EF600025D44F2B9A6B689C5C7914EC02C0AFE5FA +:10EF7000B3F87979D38D16ED3A8D7CBBDCC0B71729 +:10EF8000E7ABDFF752E3072261BCA0AEB33556FE14 +:10EF9000333C775BBE76C7029CA7B56FD832139E11 +:10EFA00027F87A8771BD40B716EEA7123BAC17F46D +:10EFB000CE3BA8EB70BDDF11D8EF6898472D5A7D86 +:10EFC0007443E4E3C5A9F438296074F807AE6737E1 +:10EFD000E4863FCAA7716248C0F1D6FC15C36F79B9 +:10EFE000D33A7ACFF33BF8B161A8BF97E3A1AEC3A0 +:10EFF0007A393B375B9536B61EF5FE383D6F67F4C0 +:10F000007CE7F8B2AEAC8A89E9797A02F9988C9EED +:10F010004707AEA5F3479710A944E7E7E6D3F76D96 +:10F02000BFA3E299F47705E477951FDE59F7F1F570 +:10F03000615D3C27B971BDC572C8857CE42C6471E3 +:10F04000CF3F66E8E3CFB7B91E50E5F3C42D420CBD +:10F05000FD6328E35332CF6E37911C5CCBF33B83C7 +:10F0600077D8DA0652C84B88EF0FCCB318E9F97994 +:10F070004C08AABF8BA2F567561F277F372A6BFC67 +:10F08000B389FCB526162F25FDB578C65C98F70226 +:10F090003ECFDBE8AF95E9FCB52EFCEECD59FE5A2C +:10F0A0001BF86B1A7D61F4D78E91D015F8DE73B41E +:10F0B00091CD77D41ABB02C73972FFB4B951AC6F86 +:10F0C000DA49F5EBA202B6EF47B8DE3ED6A4B70B9D +:10F0D0001717E8F5EF59FAF2B8FE3DF989EC8B3ACB +:10F0E000CFF9DA17F0E7F351DF1DDBDB723DFEFEEF +:10F0F00042746F5AB0443E7B7F0A0A4DDCFF49A33D +:10F100007CA7EA1B95EF0E5883FF7800FA1F7B6CF3 +:10F110006A7023D58B8B6A70BCC1338502DEEF1C0D +:10F120005C96DE867EDA20EFBFE6F11903E8270C55 +:10F13000C645668FD61651B882FB7D5EC3F7B5D53E +:10F140007D52EDD1B70A989E68ED3B699161FD371C +:10F15000A8F134FE7971FC1C1A7FBC23727DF1BDCD +:10F160000CFABE30C6655A7ADD62A0BB51BF1BEDFA +:10F17000D45BF1E2F1FC5F495172BED5B1A2815E70 +:10F180000DDCB25E85193FBCB77D1AB58FEA3A0631 +:10F19000E3B5B39F437EBB27FD9CFEF7A4F62CFE90 +:10F1A000D5E67F913EE7B267DF2B283A2F7BF60149 +:10F1B000DEF3C1FD3833EFB52A5CFFBD53E8FA3FFB +:10F1C000E863FCFA10E7D3F7ACA3B3B5F87DC0E56C +:10F1D000F9045FEF0771F5FDFF60A6F6BEEFB6021A +:10F1E000A6C7DFE372F0DE3D7A39D86F9083D63E52 +:10F1F0003DBED747F4F83E53C0ECD57BF76C4A438D +:10F200003D7954E59B9B991F7C34B488EAF1C1A3F6 +:10F21000FA78E999822FE7CF5D2B28D4DE90FB089E +:10F2200079C28DF2276F447F7BF04DD3DE0E8DDFE8 +:10F230007C47A1FEBD98713D5CCAF430FA095ABA08 +:10F240006515C8BAF6D7B519FC145116F1FE73F45A +:10F250004D1395832357FED50D4C4E6C349F3E685D +:10F2600065EB1DDC9841BFCB7ED6BC4136EFB5E6E1 +:10F27000B86EDE5F717E9870DE49FCA3FF8E47F4A6 +:10F28000ED49E17F6D3CE228FC72F6620AD7F7C6D1 +:10F29000B8E408FA27DEA47F72952DF24F07D03F1D +:10F2A00073462A31BF56C6F5FAEABEA5D48F3C2272 +:10F2B00086BA32B0FD6151C278A2F2388B23567300 +:10F2C0003F49C5E73B067F49B53793D94790136A55 +:10F2D000CF3E8F3BE9FB14C796AFB4A4A2D78AD325 +:10F2E000534942F37D5B354F807276B546DF341467 +:10F2F000B073AA06839C2D3F5D40FBABF66A755F39 +:10F300000DCD0F2C8FECF06BD7E12EB4D37E9E4247 +:10F3100059EFD79A995F3B519E4C29D4EB97637C68 +:10F320005FD53CD9727328659E6C4593C9A07798C8 +:10F33000FF85EBD2CACB95063DA38EAFEA99F31DAC +:10F34000FFDE7C76DF44CDC3159785CEF91DA0F195 +:10F3500079783BE33C8D48A7AC89E72BE4FEF94480 +:10F36000F9A328A75B25CF1F1DB9F212CA5F4797E3 +:10F37000BD548DFBF2FE863F1C5B09F05BAD2F5741 +:10F38000A33E8FF27CD2FB78850FF54D98FDFEEF02 +:10F39000CABE1B2D7E2A6F7FA0F1EF91A3D3287FD9 +:10F3A000DECFE5E68835A8B35F46B94BE778CA9C5F +:10F3B0003E840CD173A9C9E8F3B6813E5F56DFA73E +:10F3C000ABF3817EC47D74A9F1184458E78AB3C7B2 +:10F3D000F5909ABFB7926F215F1E302BE9C897EA6C +:10F3E00077F73EE2BF037D33FF1DE85528EB0BE0C6 +:10F3F0007946EA7BDB6F16337A29243A1D7FDF6C6E +:10F4000035C90CE27785BBDCD19B516F8CED75481B +:10F41000F87B1B45DB3A28BC3A6E931CA00A2B8E66 +:10F42000F45562FB348104F15E72E548EDF7F17C3E +:10F43000A2359E2EE3EF795D5EC4CE2BDBBE117D3F +:10F440000FEBDB066C32C6439EBE722BFA85CF0EE5 +:10F45000AECAC4EF131DDCB33A13CFED9EC2A5694B +:10F46000BE37F911FE8B7E6FD215AB83F6B3B20EA9 +:10F47000884E205561DC15B3C3385D1D219F04FA09 +:10F48000EC8DEF7EBC1D7FEF213B5B19B9147FBF74 +:10F4900032FEDBAB102E9FC6C78BFEEE2AA51AE804 +:10F4A000F4883AFED876847F22868B04683F2F6EDC +:10F4B0000DE1EF3A9B85BA7211C69B2F2F8F61FF2A +:10F4C000B67D3D95F7C27C2BE40B42E6227AEEC670 +:10F4D000FB07438BCCB0CE6A8E1FA99010F6A6878F +:10F4E0006411E2B697BE7BF22A33F43FE051D611A5 +:10F4F0008023F193DBF1F759ABC26AFB4B428B02DD +:10F50000C9F186BF7B723BFE3EB1FF9E45E4832975 +:10F51000F87B9A511AE7FEA636B2087FDF75BFBCAA +:10F520003056E620E4A2BE9A74FCCED3D37253C800 +:10F53000564ECFB9CA65287F28AFA4F856B644679F +:10F54000E1FB1AD6E8B5B17A787E7BD9483786D404 +:10F55000B79A98BC665822517C7F2FDD1E8F4E458E +:10F56000FBAC9E13E7C9D3D9EF9870B894E5B1C648 +:10F57000611F83DF78E5D656EA1FD989245E02B081 +:10F580003B5C467F8FDA9F1EA4F1BE3D7CC32F00FB +:10F590007E4390D6E1770780DF683CF1D1E29C01A1 +:10F5A0003CEFF901D71B2F3EBCA6E024ACEF8D87C2 +:10F5B00073F2F13D86031B191F1BF9726D11F323C2 +:10F5C0000FA4A5AEB7C8FA7361D771A23C0DE5CB05 +:10F5D00018FF7BF135DF91FB3AF05CC82E4FBF1E60 +:10F5E000F0FF67CC6BCF4FCA8FDA2FD0E18A229E13 +:10F5F0008DDD33695CA08E6FE2E34F0BF23C3A493C +:10F6000098AF46556412293E5926E15B4BE1797665 +:10F610001A093F0365D61442E14610A567A07EF1A2 +:10F62000B4D07E7AEF37C75FBEA908E779DD8C7E5C +:10F63000B2DA5FCD3FFD07DC437787008000000032 +:10F640001F8B080000000000000BDD7D0B7854D5F7 +:10F65000B5F03E73CE3C924C262761F204C299BCB1 +:10F6600008E4C124840015E124018C157B071009EE +:10F670000A388418038430E28B56BD9910C0C8D56F +:10F68000365A8BB4453B202A6D5103A51515E980E8 +:10F69000807AAFBD8D14955ADA3B2A02E22391ABF2 +:10F6A00095FEA5F55F6BED7332E74C12826DEFFDB1 +:10F6B000FAFFE96737FBECC7597BBDD7DAFBEC39BA +:10F6C0001CDF7B2B73336661F2CD6D93194B15E70D +:10F6D00094DD5CCCE0AF93B10950142B05BE44C659 +:10F6E000F6A4B01B7C4E7CAEFE741AF4DFD33D361C +:10F6F00067A3C0D833A314EAF725FE4D63ACB2BBB1 +:10F70000DAC660FC751E192683EE0A1F9F5AC35481 +:10F7100056C158EFBD71A16D1E78EEF07BF1B93E78 +:10F720002E4D11A87FF3F9312C343EFABC590ADB77 +:10F7300064273E2FA6E7A9ED1C0EBD5D2F196B2394 +:10F74000389ACF27B3E078E3F3107FDE378F9BDA68 +:10F75000FBC3D369413CD87E63DD86EB8A9D770D80 +:10F760002CBC0BC6DF9AA8A6A70CF0FE3E78CF0BE8 +:10F7700083C02FD173CF28C6BA118FF09C1547E1F3 +:10F780001B33454DF795C0FCBBAAD299D3807F4966 +:10F79000C3BF8DAF1BF16B31BC7F3AE20DFA352C44 +:10F7A000646A88E68575C13AEAB38A691D7BFE4FB3 +:10F7B0004DD16C9A6F2DF5DB23B15A5C47A5A45E41 +:10F7C00085FD2ABB53E420F43B1CC3073A1DF7A474 +:10F7D00004AA084FDF17E46D42FFF55EA5BDBF72B6 +:10F7E000B3A086A07FFA42BFB8A4D8C00F0857B113 +:10F7F00071FEEEBB717EE6500A1695205CF773B879 +:10F8000018C085F8F02A0573128DF8E770FF0CF028 +:10F810008625D09FD32DD3C9E9A6E1A73F1F0C1F92 +:10F82000820FB2A9BDB2FBA00DF1DDACC1997E3C47 +:10F83000EC2AD2D6B102CA991E178D7B7694CCE100 +:10F84000ECAA197F19BC7F4FA1C460E5AC720AFC19 +:10F85000DFD770FEC7BAAB2518D7576741A610BED1 +:10F8600019CBA27AD8E188F69FEC79CCB72E0FF1AC +:10F87000A396215EF02FBFAC3F7E0F8CE272F11297 +:10F88000AE3F35BA8E283E5940C7A7514E75BCEBE6 +:10F89000F33CA4C957A746AFBCB6A420E2715647B3 +:10F8A0005C6823E031D7CBE907604A73515E450BB2 +:10F8B000CD932A0A37CC86E769F1CCBF0BCAD46155 +:10F8C0008CEAB3401E7641FB8C5CDF769C67467AFF +:10F8D0006659BB07E7FDB534BB848FE3FA22165E99 +:10F8E0005DCFCCD6F40C6F676E5F33B6A741878DC2 +:10F8F000C95097F97AEA5FAD29C045AECE1095930D +:10F90000C380CF05FF0644FCD2E34A233ED7D7D7B6 +:10F910000808701632360F1E7E09ED0DDDF141111B +:10F9200048B7B4334E713A387EBF84FFCE750AC4EF +:10F9300067ABE10D6BCAFBF3C7EA0C1BBDA7FEDE8C +:10F94000FC24BF113EC9B713D7F92F091A7C1ABE80 +:10F9500063E554AFA7A5298D16D1D0EE8476C04BB0 +:10F96000E208F51905EAEF09AC0EE5907500513291 +:10F97000A370BC3A4A30E9536423A4DB7746A8BF9E +:10F980005052FBF7EFAF0779FFCAEE3902C29B7EF8 +:10F99000173C02BE4AEF8212EA6C4B6228DF83FCFE +:10F9A0001DB6341BF8639EA784CB97C88202E0E59E +:10F9B000E43C002E29DA7E5200FAC0F8601C931F46 +:10F9C00087F51F4EF655C840AFC3A989DE7600B94A +:10F9D00076616F05D2E34D8DCF5213381F1E8E0B0B +:10F9E0006CC171125352884F35FDF4EBEC315C3F22 +:10F9F000D998894FD805313CCDD07E58983D82BFEB +:10FA0000677419BEA78F9FFAE66532CEFBEBBFDEA7 +:10FA100072721AE0DB9AC3E773C3FBE718E4606213 +:10FA20002DD78F2735FE3FA924F0793CBE3D08CF66 +:10FA3000E16426B7C3BA2645FC3BB17E65468257D2 +:10FA4000F444F513F23FD20BF8D38FFC9366E3F541 +:10FA50006FE4F0F5DEEDE1A594C3E74F73F17EB1FD +:10FA6000F459ACB5FF40E4FAECFE13AFFB582E633B +:10FA7000CB4585C62738607D39F8DE00437EDA58ED +:10FA800005EB19609E5EC5C2E955C3D7DBDFAEE862 +:10FA900076CBFB6A1EEA9742C9FB38BCE294E33797 +:10FAA000692741EF35C6FD2E0DF93C76DC296BE761 +:10FAB0004111FA07DF10438FC3FABF2BFB92860375 +:10FAC0009EE3DFC86541186F4B608181D695E5E103 +:10FAD000EBB289D00EF3AD6B054D6267CC753E81FC +:10FAE00085E13DA91E0EAF547892E82F4D02D70054 +:10FAF0008658992F281BE86F952D2C5C189557D7A1 +:10FB000079178D6F3E3F9E85865D4C9F5752FB98BF +:10FB10000C5F12E2EDF313F393D800788985FBDBD9 +:10FB20001A9C7ADD85F019E04962BD045FD2243366 +:10FB30005C83F921951EDD8F114DF6270AA7CDF4C0 +:10FB4000FCDBAD0E1634BEFF0C7F7FF4BDF12C68DC +:10FB500078EF79459DE841396153E4534550C4C17C +:10FB60007391EC0AB75F506E75723B8FFABA1E65DF +:10FB700066329767791C638794AA6938BECFEE69AD +:10FB8000E374BD92743CEADF0930F639CDFE3CA740 +:10FB9000D9DF3E3F10F4DD9C9228DCB76B72AFEBEF +:10FBA0001FDD5F8AE537BDFF294DFFED3A3427039E +:10FBB000F961B7431644D053EBE37C1968177E34E0 +:10FBC0008AF3CB8F34BB57EBA8518DE30F295C5ED2 +:10FBD0005ED1F52853B3111E9087A0D13F88A5CFE1 +:10FBE000D23EFAC499F8294A1F273DFF47F9999553 +:10FBF00053FC6209CADF7D02CB0790274EE77A48A3 +:10FC00001F7787C749E3EEF02470BDADE9ABA5319E +:10FC1000F6FB4EADDF9D5ABFA1FC00A31D12C4A888 +:10FC2000FE6BD1F8C173F6A84D017CFD42F36F1E47 +:10FC3000CA51D7225F6CFD4B4D2802F3F5B6496CD3 +:10FC40009B1BC7A9A14805AE0B08E465AC6AC1744B +:10FC5000A50DEAD6D7AC5E3BAC87ED1DD81E39D7D3 +:10FC6000086A03E0F13B9A5E6876F3F534BBC3B6ED +:10FC70003C8023AB99C333A2EB802019D639A289EB +:10FC8000F7DBECB1EAEB6C9B5181CF556923BC6F7C +:10FC90000B3E47FDE9E1FC98D525905DCB0A00427B +:10FCA000E0599697CFEBF48684A5C5D1F5765866D2 +:10FCB00017A31DE9484B207B9593EBDF86EB6D3E48 +:10FCC000110E23BA269EE896FC30AE2A577D8CE4AE +:10FCD0004B5B9722CA59A89F134E70B83A53CC7CFD +:10FCE000C1D8BF71BBC5B671789DBE328427CDA582 +:10FCF00058369691D8E6A03F9B96A2D98F34E6DF7E +:10FD00008DFCEAF091DF97160FFD920DF68FF92A20 +:10FD10002CF03C945A528EF66F46BCF7A003FDAB14 +:10FD2000724F793BB43EBFC5521B1A802FC31A5F76 +:10FD300003FC2F18E11FCA4FD0FB59E32FCEEF0968 +:10FD40001AFF542D705F877037AFFB45825D40FC12 +:10FD50006F1512C8DE7C9BFAE9F806385EF3107D59 +:10FD6000AA887FB282E02FA3DE8FCF0E31603929BF +:10FD700065523AE27B30389BD7886A83517FAEB3B5 +:10FD800011FEB7DA5893D1FEE8F1C1FB9A7DB92391 +:10FD9000D77702DFDBB2F7011BCEBF6CFB3B36FF30 +:10FDA000007ABF6FFC25E24968E2FE69B3CC647B50 +:10FDB00019E2A181FC8F150EA803FD9A770A64D77A +:10FDC000589D23940F3868EEDA75240BEAC39BD54F +:10FDD0000968DAD38007BA8BA37628AB19F8CA82F0 +:10FDE000F8D915B6207EEE625E7C9B8E3FA068F649 +:10FDF00021E47B888836C23C1F59FDE47F7D9499BD +:10FE0000E00D029FBFBCEB2DE54E78BE0EDAC50CAF +:10FE1000E4EF6D19C8271D636D5EF4C3AB72FD5F1F +:10FE20007A00EE1409FC1B789EEC4EF4B6C1DC8A15 +:10FE30009D95CB17C17BECBA75BDA13F9F781797F5 +:10FE400083B21C97C6AF7E0FAE5B11D95DC8EF9928 +:10FE50003989F4FC8895051D29B05C6D3D777B548C +:10FE6000570EF64721CCC4F58705F47362DF6BE0CB +:10FE70001F77CE57E0E389B55D3605E05AA1E98FDB +:10FE8000AA05DB85F70C74CFCD11A95FD6CEAD8264 +:10FE9000427CBCBD6D869BFA33D463593B79FCB37D +:10FEA00002DA6F34E98D250B717D1DF1DC3F04BD55 +:10FEB0003116E13A6CB9F9A544F41BCB9917E5F278 +:10FEC000EA13E123A47635780FDBFC5BC8CF01FE93 +:10FED00068837A650EB757476CFE06A4C7912C98C5 +:10FEE000AF0CE75F5B187046E53A560E2B732C1C7F +:10FEF000EEBAED82A598FBB53E037C7ABF8772AA65 +:10FF0000BF964378E8263CACAC93783E4083E7E06C +:10FF1000FCC50D08CF4A7766991DF8A3569BF7A13B +:10FF200067B78A9B019E95C54208E3AA959D02D9B1 +:10FF30006DD6F9BA6D9EC1BE6FFAF9EB642FAEDAD9 +:10FF400023D0BC2BF7EC9296A27F75F620F1E94AFC +:10FF5000E0C3B80AA49B42F4FFC81ACE463E8BE524 +:10FF6000D3845AAEF718C464F9C9DCAFC17A68818A +:10FF700083FC7D5DBFDEEDB1E8FA94F4615A5A4925 +:10FF800019C6A9D7E77039D7DF13D58F02D141B78A +:10FF90006B8B73645D9F923E56805D913FF5F9FBDC +:10FFA000DB85A272B40BEB35FF1CE8DC88F88CB55E +:10FFB0000FFAFC9E47E73025D14037C4B781DF6E8A +:10FFC000CBB111FCB7E5481A1CAA827802B7DDBB99 +:10FFD00011E3169BAF58C1324D93E7E4E34A9B010E +:10FFE0004F476CC14205EA4772E2C95E813CDC8E34 +:10FFF000F01C9CFFB4B819F510D00BF5EF433F9BF4 +:020000021000EC +:100000004DF86C469AA11EF237109D5906C46968D6 +:100010007FFC12D9C7E6BA6B29CEEFB36BBB05C222 +:100020007B73D0198A837F5ED5359BF892B9E3BC88 +:100030009AFE22FAEAF275B79ECF0379C738568F37 +:10004000C7E7382261ABD25F2EE7603C0E34BE06B4 +:10005000E371786FE524C745E370DDFEE9E3F53829 +:100060007CC59AFF20BF7179C6AB54EAFCAFC77953 +:100070007AFF4735BADDA3C5638F6BF2B6A2A28BB8 +:10008000F4ED8A9301920B672DD70FCE1366BDA6B0 +:10009000C779E0A8D1B819095D33310E9AF123412F +:1000A00046BE1A4CFFDC24301FAE63DA855FBB8C82 +:1000B000FEF0CF343E3DBD436461D2FB01F2B73F59 +:1000C000DA2204EDA543CF33323C7DF2FB408F0FA3 +:1000D00077247937C2F08F76CEFD26D683DB93BCAA +:1000E000E8478E0C5F4374FEC83DD98B7475B773B7 +:1000F000BC7CD45543FC70365DB1A03FDDD6F5DD48 +:10010000A9EFC27B5FD5E4FDECCFC435B8EEB54FA7 +:100110003E3315F3582B42C2303BCEBFE3477F45F9 +:100120007BD5B47D958CA2D1FED35FDA22D0CF12DD +:10013000DACA9FEF4892B1DF078F3D3015F1D9DE63 +:10014000D54EED671FDB4AF5834F3E437A44E7CB3C +:10015000B33FDBBAFFFF60DDE7F2621EACD9FFD030 +:10016000BF629D5DE3F23E4E6C74C836CF90B7DB44 +:10017000B4EB00C995CE07577571FE647536CA5742 +:10018000E8FCF8DEABF14C48823219FC7E786F83D4 +:1001900096A76AD0F24D0F68F18A92CBCB5E7DDDD7 +:1001A000AD4AD6492BC5C3690B2A880DBB1FAFC00A +:1001B000E765F49C5D189F8D7C7DF63E2BC93388E6 +:1001C00061F66C806FF9FD561FCFAB421DDA3FC45C +:1001D00076A4A783D757603BD69DBCBFBE9EF77E53 +:1001E0001F5737909F16858FF1BCADC5427483F7BA +:1001F000BB26033CEF5994DD68EFF5FEB65CCED725 +:1002000051F8795CA5C3ADF73B7B9FA8C35DCAE1FC +:100210001675B84B39DCA20E7729875BD4E12E35F1 +:10022000C1FD87B8A681E0D6F12921FE00BEF70006 +:100230007FA8C796EAEF69E0799DFB2BA66F473D43 +:10024000DED0C9E99750A86E17E19F722EF7DB97B1 +:100250008BBA1EE1F90DF1FE096FA25F786E739CF7 +:100260008276A931C57F8AF4D00FEC0AE61F5EFAC8 +:10027000FE4DD911033CEFB532D59A6F88231FA8E4 +:10028000CA66B09E53F757655B61BE2F0E4CCE46D3 +:10029000BD7CF27EFB0DEA45D6F18016CFEA719265 +:1002A0002D416964E0221CAD2ACE3F44FCE1F28A74 +:1002B00053A17E25A7630BA87384ABE5BAE4AD9880 +:1002C0002FB73864A602DCD7D4266FC53CD1D45CE6 +:1002D000CE679853CBC0F1B304F2033B6CC11DE46D +:1002E00007C85DD9E8072414876DC3A13E7FE1AE3E +:1002F000A998022A01FD7AAA90E2B7ED5F82BF3B7E +:10030000F7A19B16E17BB6884C1633B15F1B8DCFEE +:10031000063F42247B29C9A7743D2A5ECC2F9268F0 +:100320005EBD5F9FBFAFC957878DFB67E0D7B03811 +:10033000282B6FD5F2F4427D3BF935B785A750BC29 +:100340007166757C73B1513FF2F1597BB8BF94D59A +:10035000D43D13D7F3F5C225E3F1352BD7D4B0F74D +:10036000504FA33CA29F12749AECE27C0DFF69B23D +:100370006F3AAECBA1FA52EF417B64F74964A76FA5 +:10038000F059DBD06E49BDD9F3C8A17ADC641736C9 +:1003900059FD9913D0BFE9D0FC9CED1C6E184FF3AA +:1003A0002935AA1BC7C3FC349F63A12AE1FCE86F6F +:1003B00060BDE7C52B1EDFE831E229D46FFE0A27B6 +:1003C000FA29C13AE243C5E645FD7316BB66121E23 +:1003D0004B8DFB16B1F940B48F284F77E456ADCE64 +:1003E0009D102DF5FC612C9DF668EDBDB9EAEA5C27 +:1003F000A4CF8E6126BF6E307F57F7035A6A353F10 +:10040000E08577C8CEB5F825EEBFF94F92FFF661CB +:10041000ABCADE0379D9F4DC3BA45FE7ECE5746B8F +:10042000D9EBB1627CBC49E07AB4A5FA23F2E3824D +:100430002223BE6FB1756D7023BF6F64C91001B206 +:1004400096A99102D4AF9F3CC7E5E1B0C542799629 +:10045000C3DB8AB6A27F2234713FAE25A06CB353B2 +:100460009E96C78D10273D80F1FBCA2646F98296DD +:100470003DDCDF64C55C3E5AF6BE4EFCA3C749E0D6 +:10048000578D40BF27D96DF7A25F9235BD3B9BCBFF +:1004900023F3E6631C33DDFFC00CE2B7B24AE4B7D6 +:1004A00083F3F76F70E07BA7431C06E3378D549FFF +:1004B000C3F982CF090CF39D9BAC9DD5128CDB3424 +:1004C000439183B80EFF357D7E0EEA17E6BF86E2C4 +:1004D000A316F7222FEAAD8D6D3CCEDA087116C651 +:1004E000519B9E6B233FAC4589F7C641FDAABDC217 +:1004F0006A1A1F7432E48B16C027D6AF0A5D161233 +:100500000DFB63574D8F641F7247E1FEC4DABD18BF +:10051000F1F3C9CFED2C68C863274F0F6CB913C72F +:10052000CBE55ED18BF15AB71FFD6510756F1BD4FB +:100530003BAD3EBB17F359570A21DC7F4BD6FC97E6 +:10054000DC5A4EC71735FBF062AE452B6D9A9C6B9B +:10055000FB0E72B014EDDAC71A1FE09F9206FA9FE5 +:10056000FE01746908931C61FC8A7475DBD5B25B6B +:100570000C7CEAAEE17E85BE0F84FB42B41FB44022 +:10058000227A6701BD51FFE974FBBA7B7439E22915 +:10059000A2C97956A140F90216B411BED2166C97C1 +:1005A0001A8BF93ED240F98693DA3A5287F92AD06B +:1005B0002EA4A6F3FD8554B1CA128779A932C1BB16 +:1005C0004DA17D6ADA77EA4DCDF46E33E053CF9FCB +:1005D0009C494B247AB2D0AF25F4A77A73078E07D3 +:1005E000F471D17DAC38A2FBACCE6029C6A7FA3E2F +:1005F00096BEEE505B7C9D519F9DD5D6191AC3E5E2 +:1006000088C97C9F24CDE21D46791D275FC799B418 +:10061000CB2B091ED64EFD7FA3D9FFD45C1FE5EF7F +:100620007A5313691DA9B9AC1EC7A7B66708ED1E9A +:10063000239E65B2337768F8E9937FF4B73C28FFCF +:10064000DC7F6F01BEC6380EF580C6A7A1C785A89E +:100650003EE8D3739A3EB86A2FA77BCB5EEE5FE984 +:10066000791EA06001CADD194B7639DAF9165B8470 +:10067000E4B0C5A294B7B9A3F23D945E989110A2DC +:10068000BCC48CA282F2764F74DC275685F6953F67 +:1006900099C168FFF9E5E7DE0A19E3449D2EB171BF +:1006A00010EA5FF41B747D9C93EBCBCA43382CE1BA +:1006B0000D9227AA3F5B9EBFB7C03F603E8BEB4FBA +:1006C00087C4F59523941032EE2BE11E6D623995A7 +:1006D000412794096B383E128A597024AEBFE2E874 +:1006E0005328E74C52689D8925DD97A37F5E8C498E +:1006F000CDD4A87F13BFF7664CEB63DE8FEFBB6DE5 +:100700004BA0FD143DFF170BD7A83CC19467D3E362 +:1007100054DC47C2FE57E671BA4FC9E3FC3647EBDB +:100720006FE07B335F3B799C3698DDD1C7FFA3F246 +:1007300092FA7B74FB17C5779B693F0CD735BB7862 +:10074000F07E9D07B8BE413ACF36F0EB528DEFD325 +:10075000F3B8DC3CADE5FD73FC0B92E60C308F5E2C +:100760008FDDDF892D93FE2A12DCB82D89F3244D0D +:10077000ADF5D643BD49C34F6C7F89499F4574BFD2 +:10078000CA83EFFF80E8FBB99F05105FFDF9CDEC50 +:100790005FC4EE23E9FC88EBF0950C0E6747CC3A7A +:1007A0003A72F733CC6B26385CC42FD330B804FAD6 +:1007B000DCAB8CD88AF4C1F96693FFB436663FD9B6 +:1007C0000C4F9C32303C43E1B7C3B2AB09F9F35D47 +:1007D0000DAE9C2D1787FF69EC379AEF7761E9F42E +:1007E0002A6D12C03B6E9F528676BCC3A2546F42E4 +:1007F000BBFD26DF774C9CCA3E1501AFAE499D85F7 +:100800006B3D6897BBEA902FC649114B19DA0F9FD1 +:1008100019EEF4BA781636E41732FD29A6FAF0A6D6 +:100820002C53FF91811C53FBA835634DED9E60B99D +:10083000A99EDBF13553FFFCCE6A537DF4E6AF9BF6 +:10084000FA8F09CD31D58B765C67EA5FD2556F6A36 +:100850005FFAD7DC83DF473D81EB47FDE2502A8D0D +:10086000F2A19707F372883EE3F69AD78FFB84C60E +:10087000F907E3A758FA2FED104DF3E4F8AFE4FCC5 +:100880005CCC285F9470DF980DC857194B59C00E87 +:100890007A352186FF879A2FCADF63F6E2BED2E758 +:1008A0006E81F219FBB169003FF7680C9FCFA84D2C +:1008B000E2F6E8FC9C21FC62CEE773EC7CFF794E0B +:1008C000022FFBDAF3B93C9FD7F4E850FC7A468359 +:1008D000E35D9D5F431EE24F764C24BF75D976A140 +:1008E0002D03EA297E27F96DCBA4302B33BCEF21F1 +:1008F0008DDF3769E337B7CA34DF0F5A33A8DCD24C +:10090000AAD0F3475B0BA90CB57AE9F9B6D64954DE +:100910006E077F0DCB275A6BA9DCD1EAA37E3F6916 +:10092000ADA37267AB9FCB9D7F8CD5A87FD8F99480 +:1009300001F3E5736B07A3CB646B18E9A248818DC3 +:10094000DEC1F1D16FBCB8306920FBAA976B4E2C89 +:10095000091D32F063527EA2FB5402FC63229B48C5 +:10096000F1E810E3BF68F5870EE50FAD17757E61FE +:1009700017C6E7FB06909739F8CEAF31F65F797767 +:100980003D18740E8E9F281FC5F06B07E7D7529451 +:10099000498AFF225946784E6974D6EBF59B934CF1 +:1009A000F1AE5EFE5B3EE7BB463B3F3FD118738E28 +:1009B00062653EB7EBB3F2791EE1FF17FE3CFD48DE +:1009C00022F9CBA7AD81EC54C3FB4F3F9240CF59E6 +:1009D000A1CCD00EB014753AF22F6E01D8C0EFFA48 +:1009E0007EBEBEFF9B27531E23EEABE53B72B66473 +:1009F000523EEA7399A9E80F354A32D9C78C598C0F +:100A0000513EC02FF3FDBAE59ABF24015DD15E7A55 +:100A10002D513D4AE770E2A37C2F0ECE8FCF60525E +:100A2000D6A0076FDA1CAB57BF690B570C2D67B107 +:100A3000E3BEAA9CDD857256F48F97339DCFD9858E +:100A40005B0A06EAD7887296C5D8F8FC271E0C16F2 +:100A500047F9FC26F4AF0C7CFE634D0FFF589387DB +:100A6000D35AFEE1B455B120FF9E7E23775B9B21D4 +:100A70008EDEAAC9C5D0F85D66237AEB7A30464E81 +:100A8000871E1F47FCF1F9662184FE53A3C3154C52 +:100A900028FD2AE32F8EBF7E74DDEBBEA43C8F9B26 +:100AA00005AF47B81A9985F6811B1DCEA00870B115 +:100AB000CDD68F22063EFDF570F5F97C9417952969 +:100AC000721AC911C5F7F0E773A4D111405E0FDEA9 +:100AD0004CF67D22137A91EF85489AD802F36EB9CD +:100AE000C54571D7C44823E1610BE681701F7A3A8E +:100AF000B82269FA9156949B008F67AA1D111CEFCA +:100B0000C03C03C4B21B056F8788FCE6160E1D852A +:100B1000F1E24B8CF058EEF0B6BB2D38C427623FA3 +:100B200081F178B6F2246F9FC2BADBDD306E2AEB1A +:100B3000A5F6CB6A83ED08E7287641267B91FEC4B3 +:100B4000CA2F21A463CE944BC257B03AF0233C6F16 +:100B5000105C2BB176281F4EF8D727518FAF09DADA +:100B6000653BCABBC4DB3FB03A6494C3D1A2FFBDAE +:100B70007CCCD389BEB403E4CF04C6F928BF27BD1B +:100B80008B7E8E0582D32F01AE6A6745DD8DB86CF2 +:100B9000ED39E1DD13EDA7EB87D8FAF7D673FE6EDA +:100BA000BF97FBD3ED6DBCFE178DAFCF69A5ADC070 +:100BB000A2C5596C1DE22F2E83E387280AF8B76B74 +:100BC000F4B33802E120C6AD01A0978CDAA98BF00E +:100BD0007FEFBC4DFEF5D47D219D0B13C23EF66523 +:100BE00042142FB1F3A88577D33C369867A38CF1D4 +:100BF0006EA7EA003E8AAFEB0A5B2F3ECF21DC0FE7 +:100C0000922A387CCB45BFB3809EABEA8D98EF0724 +:100C100004E27C76F00B058F71DCDF4C9F749C7FC7 +:100C200028FA8889D38F639EA53A6457304F124BB8 +:100C3000A733A8F3F1BD7FB271FF7A08BA4DD6E8A9 +:100C400051BDE6CA10EE3B4EBBD0EAC2F7CE5853B8 +:100C500013C2F36CD3D7545159FD08DF47A9B62A04 +:100C6000EE14286BD65C45FDABD6CCA57675CD6C65 +:100C70002AA7ADB99E9E4F5DB320643CC736DD0DFB +:100C8000F318F442B513DE67D0E7330A14C29B2A87 +:100C9000CD363D9F7AA1CE34CE5AEDBB919FA3F5C0 +:100CA000CF443CD8589680791BD1554B78D9909930 +:100CB000E141BCCC2CE0FE851AF1F0FC4531F36E2D +:100CC000243DC1F763809E330A703F64B3F00EEA9F +:100CD000195B4688D1391D29321CD7BF5FD3D7B1E4 +:100CE000F2F72F058246E7115C6ED9C5EDF5AEAB84 +:100CF000937FE7C6132FC127E7BE067A675755F2E1 +:100D0000F56EE09B614F16CF9540CE77BDCE48E99A +:100D10007C5AF0F587D09EEC9A97FCC354E87FFB91 +:100D20008EF7BF6B055AEE5A2450FB17A3A11DE0A6 +:100D3000BB39CFBF08E11EFF9A3A12FD89EB98E458 +:100D4000C5F8716EB1B268A782794C6F04F773E78A +:100D50002DB52B942FBC00705432F618022AF2FAEB +:100D6000B44AD4B3DA9FD6BE1DFF0DFC95BBF9E69D +:100D7000FFBA1BF55EB7E8C5346AE366CF0137CC2E +:100D800097DB5026E3F0BCCDDA7EE5163BED573617 +:100D90006EE67A368F797B71DFA60BF3AF2058476A +:100DA000AD4ABB13E3DC1246E7714735F07343A746 +:100DB0001EB16FC5BCF929840DDB470A1407BFD1EA +:100DC000CAD475F96C50BD3E51AF831C4850BF3C2E +:100DD000A65DD7FB82FF0EF176839EBFDC9F6EAAD5 +:100DE0007B3B588D0DE0CD6960B2A020FF04B85F59 +:100DF000A63A22ED680780366A25DF46D1E627BB92 +:100E00003043AFFB03D26D889F14B0535E74D7425A +:100E1000190ECC71324F15AE47BC82C9184F66D738 +:100E2000860FE27981F16A15E9FB09CCFF5237940C +:100E300093D55D549FE408B5636ACE82F90C986F30 +:100E4000CA05AE6754264BD85ECDBC54224762FB20 +:100E5000F40C81E2D45AD649CFBFCEBAA89CC5BA09 +:100E6000A9FC06EBA5D2C7642B96531D60A740CF03 +:100E7000FDB8C043FC6A71F0EF49CA6BED5B31AF5E +:100E800037EF1AB05F50AF0B33CAE7CFAD55AC8A1E +:100E9000C17F9A23F1FD5758F448F2172565E4B550 +:100EA00006BB7FF491F98B70DF51B198CF7F3FA3E0 +:100EB000E993E73539D92468FA6819A73393FCDF39 +:100EC000BF11EAD7F946933C427B98DA1738A87DE0 +:100ED00093D5D79606F5631F9730DC1738ABE90535 +:100EE0007DFE63B36FCAC47CD0D6F505562CE7F8F7 +:100EF000F5EF39821A9CC191C6FCEFA92500A7968F +:100F00008733E6770E69F09D2D6004EF29580FC9ED +:100F1000BFB67F96F68D64CA2FCD6075129ED3FD45 +:100F20008DA64F42826F3AC1BB9231FC3E4097A7DB +:100F3000269D3FA4A02D0BE5D1EBA1F5E9F05F17AD +:100F4000E2F9E7EB9A661FC0FDA6594D2B19DAB5F9 +:100F5000E879397E6EA26AC174DA17ADDB6C6798E6 +:100F6000EF169AFC7F40795EB0D0AEA0DCD435CCD1 +:100F7000A6F723A1F15C519D7FC93AE4BB050E554C +:100F8000C67310572CBC87E8BC6E21F022F073E2C8 +:100F9000C2F97CFF118C3AEEB302FE697C5A35F837 +:100FA00032307ED4AC03023F871F6298E7DC3A867A +:100FB000D17E428AC468FF2719940EFAA90B1A1E23 +:100FC000389C5981F9259847C1A5FA6D88EFC1FC75 +:100FD000B447EEB9904CFE39FA35A3883E3C1FBDAC +:100FE0004654D04E78B4BCF25B8718C59D1D0BDB10 +:100FF00083E497CE8297C1BAE776961D463CC18BB3 +:10100000487F80E44650CF397C5728081F6E85E220 +:101010007E57A3C4F337658CE789AED5BE8B898D27 +:10102000671C6B6CF4DE464733F7EB60427B667FF0 +:10103000FD11BB0EC17707D3F6A923C3503F14CAD5 +:10104000E26DA82F56BBFAE41FF5AA5A5C42EBF1F9 +:10105000BEC2D733BE5B15F1F9045C37C9F15DDC64 +:101060005EC43D2118FD8C1A39B8D80DEF397AA825 +:10107000618313DE6F757B7F2F57A0FCB300F2876F +:10108000CEAF2F8DEC1C8976EFB799DCBF9A76E155 +:10109000994463DEB86C3497BB72B4E3B0CE32B41B +:1010A000CB607F27A01D87B202ED3894E5CBB81D39 +:1010B0001F8FF61BFA79D16EC3F338CD6E3B34BB6C +:1010C0005D669587A19DAF38A69AEC6FF96BB52642 +:1010D000FBACBFBF7234E773EF219FA9DD9167B608 +:1010E000DFD59AFDFE4D956F91E9FCDF682E8F13D9 +:1010F000476BF9FED782D9746E622A97C7D3BF6255 +:10110000A1B5D074E6579CEE412BD3FC1B33FD50A8 +:101110009F6BF48D7C17E82B6C497FE99B06FDCF14 +:10112000C606C90E0E46B7DAD139F4FE8ACDB345EC +:101130003CAC30FECAF1C3BFC590DF2ECEEF83D1E9 +:10114000F75779AA6FF404B48FF2F5CD18D7F8EDFC +:10115000F49E1962F306CC479D033ADBE5FEF39556 +:10116000237000D7826E160A0951BB0AFDBD185FB5 +:1011700057BC217A83B05E6F036B47B9CDECE0F6C4 +:101180002CD587DF9E44F19D5EE7C0B3997DF54C79 +:10119000BF6CAA0F6FCA30F51F19504CEDA3D614BF +:1011A0009ADA3D41AFA99EDB31C9D43FBF5335D553 +:1011B000476FAE35F51F13F299EA453BEA4CFD59EE +:1011C000503D5A6CB0F7255D7E537F148B6CA4574D +:1011D00086C8D0FF1EB7B7C93CFE04F8B70EF4F2BC +:1011E0000284C70AC6EBD40E7A0258FEA547D0FE89 +:1011F0004CB2CB61187F5D8335EA0F33F4AB98882E +:101200007499EB7792FC7963FCEBD83CC44DAF0446 +:101210008FA0DC96BFE2A773D8DF196DCEFFCD108B +:101220009D44AF73C7442FC624376164E28ED2F564 +:101230001C4E84F43CC042B45F1EB37E3D6FC1C4FB +:10124000FB6C94FF6C12D830E867CF30D3394E3145 +:10125000D339A1D04CE744AF99CE4993CC744E56C4 +:10126000CD749E18115E7A04F723014F6C12F8AB0F +:10127000B566BAEB789E04FF1B08CFB178F5B2FBD8 +:101280003E45B9190A9FCF8E8ECDEB4C21BDFFB9DB +:101290008FC73BF0778DA3D2A0AF4151223E85D7B7 +:1012A000B81D88957F1D7F65BE7476DBC5F480739D +:1012B000E5864C68F776733D30619607B7FBD8F149 +:1012C000251387235DB3D83EFD3B243F9E5F32C884 +:1012D000F76B28DF096BBC9120BE77B39DCE2DFE46 +:1012E000E6F0ED472C50AAC73D64D7128BBB2F47C1 +:1012F0007FE0D868A7763ECC770CC7C56FE1FBA727 +:10130000A72E0F2CC27EC7058B77AD1BF5055F5747 +:10131000E36B7DF1B1D94EC5FAC9C1251BC294EF6B +:10132000E07129F83B34FE723C578F7E4A8C7E294F +:10133000F3C7D8B598FC87B0D0EC47B37A33BEDAA0 +:1013400027F93D426E7FFD3978FE2342CFA7B16079 +:101350003BDAF7CB6ABDBFBB15F174F55BC3D18F28 +:10136000EB970789E2F7FCE854C46F177D3FC0662E +:101370000984DF58BCCE9DF54E1BC6D5F123BA2F8C +:1013800047FF8415EA785659218CDF1DC7FD873742 +:101390001EE17151C5EB0D045F9AA078D16FDA9D03 +:1013A000CCF9E60D814576437DC2311EBFE4367926 +:1013B000BCC886BB3DDE97B0FEC64AC1BB0DEA95F0 +:1013C000C75511CF8FE505A01DDE57BED657930830 +:1013D000E3E7DDCECF6DBCF071239D2F0B7D8BB786 +:1013E000EFAE0AD039FA37EEE6ED134F044517D4C5 +:1013F000C704B5F985CE1A17DAB5F502F777FAD131 +:1014000097C73DD374FA6CF9E2A56F5644E9537F50 +:10141000C67BC405CF1B7A7D3393587F7AE971C6AA +:101420005489C7117A7C319DF9A89CC902545E6A1F +:101430007C71556121DF87625EAAAB5ABC9150ABCB +:10144000563D8D740AB858BEC17FD1CBCE14DF4A49 +:10145000DCDF74D7F86E43FB7F5521F7ABA325F78C +:1014600003D252D4915E683F66D5BE7B73F804A266 +:10147000D772AFC8F39E0109E52D34B26C3CAE675C +:101480005AA18DE0C9BD2F40FEED37C0CDC37834E1 +:10149000FCB0948CE70811C703C5E7D1BC5ACC391E +:1014A000422948E764CB45A508BF58B9B1B0F0213F +:1014B0008CD7913730FF3B7F47F935C111C4A7E482 +:1014C000A70CD5EF98762E69B7857FD7738DCF633C +:1014D00041BDB2BBCCEC07DDA8AD5F2FAF6075C4DA +:1014E00057574C12BCEDC00757482C8CFB067FEBBE +:1014F000BACAD70617237EE66DB3337E9E88651978 +:10150000CF73EB7A661ED3FF7C8791CF1AB5FCD9D7 +:10151000E99200D1FBF4D6D187E6C0F353B385102E +:10152000E6BFAE75804706F45FC0028B9A3D867CAD +:10153000F9E6978F0BAE4BF09B1E1E2B7E59149530 +:101540007B716AD082701EFDBE407E9F0E57AA2E10 +:101550000FD57ED27782A6EFD2EB76091962FFF91A +:1015600063ED01C81543FB91ADAD2EB5363D78ABAB +:1015700051CF1576B5DD8AFD35FF5ECFFBC21FC5A5 +:10158000CB1B67737D96E6086A71133F1F9BD9C416 +:101590009F8F64BD02F65798BC3635173F71F65AD7 +:1015A000B03EC211983D4BC1F36E17B81DB9F7603C +:1015B0008551CFC1F282981F04AD19F801BCD7EA5A +:1015C00098A536C3FB604D01B4F5CB45FF9642E0CC +:1015D0006F7527CFBF248EE0EF4B7087B88E88C918 +:1015E0003FDAD7FC99BE2388CD43DAA5C09358676C +:1015F00041BB8CE7C21F4EF8576A5F2339643B7DBD +:10160000991598887C7FA43045CBD3F23CA4E86040 +:10161000E946BFDE2A3BD28D7E7D595836D5C7BFFD +:101620009261EA3FA15B31B54F3C5E686A9F1CF155 +:101630009AEA979D9964EA7F79AF6AAA4F3B5F6BFC +:10164000EA5FC5669BEA358E05A6FE33E425A6F65D +:101650002B329699DAAF546E36D599DFB718F98BDD +:10166000595CF41D4BBFBC538C7EBEFCA174D518D5 +:1016700067F4E575326C44273BD2C5683F277B157C +:101680002CA709A07FA1CCCDF7BF85F4053D3C82F6 +:10169000E76FD40D78A42A47756C45BE78262831AB +:1016A00084438E6F695A82FECE5A972C4C817A8180 +:1016B0009E3FF0C66150FCCCAC070FA29D7B66AF8D +:1016C000448C11FD2E9CB76F88673C1F33D641F1C7 +:1016D000D3C3092EAA978E95E87CED4DA2AF00E109 +:1016E000396D0914909C0B1182BBDEE2F762395A06 +:1016F000F47F8C70DE98BC391BE3A3D2ABCFC563FB +:10170000DEB5F4458B8076FD997DE5F77E0DE6FB31 +:101710008CB15E84634FB7D3B30ECA71AF50F299E8 +:101720008D9BF5EE8357213EBBAD945FFCD0C6EE9A +:101730006386FB293EBC9D9F8B5AE2107D12CA87AF +:10174000D44DDF1B348FE5F1ED3B83E465EF195594 +:10175000953306DB3307BE4720618CC5F4DD714E3F +:10176000A137FDFA44E3F86FD078BD6E3D9FCCFC05 +:10177000C38CE3151A6F95C0023AB1DD4DEDB0CCC4 +:1017800020AEBF06FE81762929B95042BC54393FAC +:10179000B3D0B94AF422A1BD57E0E75A99C4EF0388 +:1017A0006253A4DE3E3F3807C773FF99F2FCD0AF07 +:1017B000CA61F69FC731733D368F5F3F96DB0B6B77 +:1017C000CC7D30F56363E1E6F7C1E8F751EC91D4E5 +:1017D000847227D297E7F158864ADF677D678ABB14 +:1017E0000CFD2A7D9E1BC670FCEFD1EEAFC1FD4CF7 +:1017F000BC1725761D55C1AA3A8C9F16B2D272DC51 +:10180000C79B3B46308D639A1E5FA4C9CD22F9C8A1 +:101810009FD03EEC19CBFB591C72DA53C01F8B834F +:101820002E86FC73C342E62A817EFE31EEFF54A170 +:101830007CF7919253CF61F9E8983F7E13CA1B2D34 +:101840009120F663DFD6FC26369DF6D185E070B296 +:1018500027976A17DF5696248EC5F38CAE90220325 +:101860009CF163CFD0B9CA596318C175A3453FF73E +:101870001729309E577A5BA94A1C8BE7F9AC2C9C40 +:1018800082747ED1CEEFEB7905420AA8AFDA3F86AB +:10189000F288E1B1FE049C5FFF2E9E1DEAA5FB7F4E +:1018A0006A98427E553FFA6BFC13CB070838F2CF9B +:1018B00050FC508B70C3FBEA5D03D395FE906F1D07 +:1018C000C95BD17FBA5BA3AFFEDEAFCA9FEE5CAE51 +:1018D00057743E1F0A3EC097E95C7482C6BF7AA95E +:1018E000E329F6BBDC84B116AD9F8BCAF0581FE12B +:1018F000B567E4A7055680A15EFF3E6188F576FED8 +:101900009DEBBD543AD48FE5FC531F7F69703DF6C3 +:10191000BF04974B87ABF4D2E07AF6EF844B65BDFA +:101920007F48CE1D1A2EA0A70BE9C9A6F7F27B911E +:10193000522E0DBEDFFD03E04BB934F8FE630CC23E +:1019400017E6F05D0BF10FFA9D037CDF3483E2EBC9 +:10195000A53C0F1F6F53285E8D9F2350DE4E60798C +:10196000567E7FC5DFF69D531FFDD2583819F3D13F +:10197000FBED3C1FEAED2D30E685DFD1F0121EAB0A +:101980009E42FB565FA0E9835A73BF539A7DD4FBF6 +:10199000E9F7F1B013FCBB8FFB2BF2E8BB658B833F +:1019A00069DFBB29DB70DFE8134DBFC77EEFC62AB6 +:1019B00014F2CF3758C03F47BF36A569C75AA8AF02 +:1019C000CE8CA77DC4FA8C7F3F2E603CD001FEBA3E +:1019D000814E3A3C675B5F91F3AC83E36385B8BBB0 +:1019E0003230C0799FF63CBF30D6B05FB462C7AB2F +:1019F000729EC1EF2B61110B054DACD7C2F1AF9DAB +:101A0000BB4AFF6AF8BF4CE6F87F5BF191FED7ED69 +:101A100045CBF33F56309F81761FF76D7A13E3C9AC +:101A20001EB48F9D5468DC5FCBEDB3D7E6FB73A289 +:101A300076FAEFBB3F27EAC7082C386CA0F9257A65 +:101A4000FEB4A0501E1AC42280F140BDF3E274F926 +:101A5000766B780E7E8FB9AE75D25C2CC3AD2A95AD +:101A60009F29558BC7D27969617A3BD901E6C57B3D +:101A700055527DAFCC31FADDE975DDA67AA6FFF8C7 +:101A80001CA3DF3DBC29626AD7CF4F5BDDFCFCF4B1 +:101A9000C8C01953FF0ECBBB2457BD4B58605B1910 +:101AA000E6AB7B4DEDAAEA0C268FC3BCF579D3BC1F +:101AB0001BDB387FE776B0B9A6B84652199EBBCE7D +:101AC000EF74CC35CE337AB36CAA8F096598C615FE +:101AD000ED504CED255D85E679E549A676FD3C7E29 +:101AE00015AB323F9F1436C1AFE315CFEDAFC17BCD +:101AF00026A674501E15F78EA794F73FA7FF99A24C +:101B00002E46FE8FE5F3E03D53B4FD389E2FD0E521 +:101B1000B35D934F9D3F07A3FFFC3C7519CE3B5A25 +:101B2000FF3EBE50F6525C1DCFCF15EAF773C5CA13 +:101B3000CD831A9F7F681BB87D8DE6F75963EE2928 +:101B40008AF229BFA7E8C36A3E7E0C53D38DFBB847 +:101B5000EBB5F94B35FF6CA87B2BADE7134CF75673 +:101B600046DFE3A2E71FE60CFC9E07BFF27BC44101 +:101B7000D663BBE8BD4B8F69F8F83065E0F61FF51A +:101B8000E12BD324D78FA19F3FC1F89E11D46E8D36 +:101B9000B9BFC918BF04298F7DF1F84585E53283A7 +:101BA0005EFCC7C72D8CE0FEAA7EB0CA02B7E37DFB +:101BB0004F43CD7F62AC3A610CE531FE363B1B8F63 +:101BC000363593E67915E55065CD4D3CBE71D1397A +:101BD000451613CFB042379DDF8B7775AFDF8AF69E +:101BE0007EB5CB1BF4421C63E94D453C2E6191F55B +:101BF0001897FFD78B7136C473CF8B2F8FA47307C1 +:101C00007D714B8288FB87970A9F9EEFD1EF53012E +:101C1000BFA90EE57A9C08F117886A92E54206C9C9 +:101C2000A9AC94D3FEBFF65DCBE7ECA31484791C7A +:101C30009EFF04573A0914CAF072BA0A914D49C17D +:101C400092EFD724ED93CE1AF1FB1DC6F111BB6FB5 +:101C5000F359F77FC7E33A7AC69AF76FCEB1854951 +:101C600061459B7432E607AAE9BEC9D2E7A6A7631D +:101C70001969ED90256B749F2676BDFE41F4C6056B +:101C80004D0EB225F502EA25FF20F73A0945BCDFE3 +:101C90003849158A2644E7C3FEB307C813B415595B +:101CA0004C79B4C1F2F07A1E4878E8AD1AD3FEB28E +:101CB0005F6194373AC7F7A3360801CA1F1ACE8F5F +:101CC0006E16F11C9FA57718D7CF21FE5D265E60AA +:101CD00002F5978508ED8F0C757EF08B387EBFD4AA +:101CE000AFF2FCD945DCEF9AC8CF0BF27C9DEDA09A +:101CF0006F7198F20E2EEF36CA7F064DE799F38A80 +:101D0000B83EDB93AFE6215EEC456A3ECE73342EDF +:101D10009BFC3DA58C79D970AA875829DE0F7045A8 +:101D200012E68F3E636A923C00DEF412F336EB0C4F +:101D3000FAE69DE481E952A1D165751197FFBC3C9B +:101D40007502BEFF0CDE7B05FDCFC46BA58BE7CB18 +:101D5000D5BEFE1CEE795A7946CBA79F49E1FDF529 +:101D6000F9F57EF3B571275B1DBE75067F5279D8F4 +:101D70001EC0B8323557FB4E4F65FCBBF9E7783CC7 +:101D8000D1D0F98E0DBF8F5B5254B51AE1C27E746B +:101D9000FF8614B1E1B988AFE7FAAF46BCB5284C6D +:101DA000DD8DE395886D2EE0B747FB9EACC7CAF387 +:101DB000543D71BCD4E15952347B358EEBB93C6251 +:101DC000437EE8AB4F803AEA87221FBDAF67724C73 +:101DD000FD6A5E5718D85DA06BBD433BCF5FC8FD61 +:101DE0003766D1F6FD62EC76ECFD89EA88BF3422D5 +:101DF0007F0EA6BF2C8EEEC33F84E78BB573B7FE74 +:101E0000BD9F1EBE5321FE3985EF5D128A6374BFEC +:101E1000CEDFA9AF7A4676D37A3656F566FFA08232 +:101E2000F22632EE8BB113AF1FC1EFC4EFF716509D +:101E3000FE9D49DDE4A7240A0A5FDF1EF3FA5A8BF0 +:101E4000F4F8436103DD2B1AEBF7D48FD5FC173D73 +:101E50000F37947CEF7BEBA53B8DF2BDFFD5E138CE +:101E6000FF94FDBF1A86E500F27DFC05CFD0F2DDC0 +:101E7000C23A6D7C5F213213E75FEEB5D1FECA3AFC +:101E8000F9DD993FACA0EFD603F83D0BDB6B5EEFBD +:101E900032E3796001E31B6B74DF1DFE6B66DD349A +:101EA000EFCA2EF3F37EE78063FCB7583EF9A32612 +:101EB000970AE3DF79378105C17E4D8E85696D7C98 +:101EC0003F2560C73B9E4366F8F47BD0468BBEAE91 +:101ED00022DAC7EB5CCCED9EC2F939C6BEEBF7A4A3 +:101EE0002D755E43F67069472CDC2A9DBBB9B17332 +:101EF00088F5687C754C83FBC12285CA95F1B35E79 +:101F000041D16615DDB49F07701D227D29F9D230BD +:101F10009FF081C0FD5FBDFFC713BA9F080B74CE51 +:101F2000DA81F6EC6DC5FFEF289F238F474E09003D +:101F30001F73FA689E4FF67EF026EE77B20CB776E6 +:101F40008F5D64D365F0CFA6BDA2CCF313C10D782D +:101F5000EF504F19A76B93C319A6FDAF50AC7C721D +:101F6000B801AEB7F03DB170E9F9F058B9DAAFD9C0 +:101F7000A99652F504AEC79AD345F7F0F5DEC6F739 +:101F800097016FF47DF33A890948B74991DE5B9078 +:101F90008E19198CCE09EAF74B31AFEA403F37531F +:101FA000BBCFE4F772B503EF49484BB6D07D37EBB2 +:101FB000E4FAE4A506BD9A26587C3C0F5A9F8CF79C +:101FC000962CB26BF7F2DEFEE7157C9F4D49C1EF10 +:101FD00027DD097EBA0FA337592478AA167C361E4E +:101FE000EFAFC8BAE02CC77D8697357CEBF34EABDC +:101FF000E91D1F7046F1E1CED5EE7F4B9DB919ED7D +:1020000060A8DD2D0853713FA496EA9F4919C9883D +:10201000D703453CBF816787F93E4748C6B8B82516 +:102020004EFD4E35C2F3BA8837ABB0CF643529B90F +:10203000B8FF3DB9A9ED9DB45FD2FBBA95F296FA0F +:10204000BDF43A5CC38AB9DEFE9FBAE756CF8BB7C0 +:10205000244BCC6DB8875A5F578B765F562CFDF5B5 +:10206000F617FE2A0EC81FDE62ED7E8941E2B2D16C +:10207000C55C6FB6E0EF1018E28816B06F08670B0A +:10208000FE0EC145E2940345FAF864531C7240A366 +:102090006B741E37B5FF445BE74F5EB1D46E1B0017 +:1020A0005E9F06EFD85489CE271685F9FDBE83F5CD +:1020B000D3BFE71F0CAE3DD591C50837E691077A2F +:1020C000DF746DFD07505FA01F941269247990D5CD +:1020D0009F62BEA1E7B9D11EE3EF233CA9E1FB93C8 +:1020E0002BB93DAF94D4C5872BD0ACC8029E43C05A +:1020F0007BC69738A37439A4A82F1619FC489D0EE7 +:102100000F273C4ABFBFB0EEF57CBA3F2616EE75EE +:10211000DAFE961E5F0E75AF730BFE0EC345F12FF0 +:10212000517B747F58750969A887B97D7BF837A5FD +:10213000361BEA1B0BEBC5FB3E678823663E8FF51B +:102140000C91E17EF007A0B7A95D050686F60FB6F3 +:102150000FDB20C07A1B97807D8278B17E5D6CFC9E +:10216000D559FA31EA41DCAF84B2E1847703A5D9CD +:10217000C466FEDD1AEE0BC2B886FBCCFAFC83A364 +:10218000DFA6EF06857A6740A07B3182339F87FA0E +:102190008D7B6DF47D4CE343E6F734C59C374BD320 +:1021A000EC4E6C5CD256AC9DC7AB649568279E6FB5 +:1021B000DDCBEF87D1BE17FC1AD3CFB9774BC67DE5 +:1021C0001D3D1E794FACEE28067C5E8DE7E18B71DC +:1021D000FDB9E9F506BE3B354E309D4F3F0BF29FF2 +:1021E00007E33E6A95A9DC52AC761643FBCE62FF4C +:1021F00043C564777AB33F8675AD5ACBF1D3F33AD2 +:10220000F7E3591DB78376F1E626C4937D38BF37CF +:1022100013CC6CC0F87B01A2788BE822FF8BDF7BAC +:1022200033F9FD86645C87FBA7F37721BED6615343 +:1022300006FA556A19EADB8DB39D749FC8564B9018 +:10224000E6613293EF013C857E32F920FE5C435E0D +:10225000D703D5C3F17124CC5C0AE6D3DAE85C522B +:10226000C7547EDFA7EEBF4C8AF876D1FD5CD73825 +:10227000BD98F7DDE851CB64C3FC0A0B115F7F8288 +:10228000790480FB877B73E95EF273FB4653A97F79 +:102290006782EF629EFE7CFC512B3C377C5FBC72F8 +:1022A000CF560BDEC70EE2D9653C07DD77FFF4DAC7 +:1022B00070DAF568EF7E2CD1792CF72FAFA47B4133 +:1022C0003C9222201EAF1764EE5F69FEDC02CE1244 +:1022D0006CC1BE67BF4779F9CBC00E021EEA9937C1 +:1022E0001BFB591C3C6EBBCE2FD0F710B020FA0E52 +:1022F000EAFA9AAE096497565893D18FFDCAE788D7 +:1023000034B98BED77D61A697CDB9027FD44E82D34 +:10231000E0FE6220447148324B417ABFABEB693D2D +:102320006F9FE7F7A0FCB55894D5740EEA18BFAFBD +:10233000B74790534CF798C89DBF403F72954526CC +:10234000FF831D57CBF0FC5CCFEC62BAD7E4136B74 +:1023500084EE2D6D01BD2740FB9F77DE712D9E5BC6 +:102360006AC9023F07EA054FADBB56023CB6E444DA +:102370001A2D50BFBAE411DE3E36720AEBF39F7A93 +:1023800092D7CB238D489FD54FFD9CF7C70384C0C0 +:1023900058AD4FEDBB16BF573A9BACFB1911BA179E +:1023A000AAE5F9D116E3BD642B4AB8BE3C1BC7FBB6 +:1023B0009DF5F0DF33608511D3EFA3FC4B89FEDD83 +:1023C00020E7FB652FC48571DF581FC732069E3F8B +:1023D000AE84FB49CBB4FB9D40FE7E86FD0E652896 +:1023E00029E4F79E019D43711FFF1D869EE214EDB7 +:1023F000DE9E48764A71FFF72D477BECC4761EE7D8 +:10240000E9EF492BE17462C57CFE962C3919E991FC +:1024100096C2FD672048327D8FCDB66AFE0DA78F2C +:102420005B94CBDA913E72EF78B43B872E8CA0FBA5 +:102430005F0783577F9FA784EB9D65ED1ABE602ED3 +:10244000F4635A9EE7FBCD083FFA3BABB5F5AFD03E +:10245000E05BA6DD9FC94644E85EFBD87B2D865A2B +:10246000E778EDBDFFD3EB64157C1CF07919F2AF72 +:10247000BE0E3D7F7556CBDFB3493A1C0AF1FFB261 +:1024800017BEB999EB392585BEEB650FF2710EFDCC +:10249000BDC0FF9EE8FD7D82FA6B1BCA79DF3D7BE4 +:1024A0005DFC3B9DA89CA9B71AE5CA9DCBD7E91650 +:1024B00055773BC91FC049F2A7F27835865FFAF01D +:1024C0001D2BB7FDE65352CCF32934DF607468F856 +:1024D00047F35BFBC0F8ECD32731F8EB933F8F3623 +:1024E000AE3842E70A63E56FFE6072EBF91BDFA7C7 +:1024F000ED4BAEFC26D00FF3D78A998F57EEF158EB +:10250000EA8BA3FDEF2F3CEA43BDDA971FD8B33522 +:10251000381CFEB96ADFCD74AFD0CA679FFA451088 +:10252000C62F7FE67B2E06FAE603A933CD0BCF9BA1 +:102530001F5FEFC2EFC6CE484117EAC90F42FC5EEB +:10254000D1583DFEBC4E07CDAF6A61643BD8D99FE0 +:10255000FC79C3B700FE3F0AE0EFC8781FE09F3662 +:102560007C0BF0734475F4A27D3E2341DC0FF565CE +:102570004B9C01FCCE6DD55EB33FB4FCC9EFA529E1 +:10258000E43805875BC81F0A0FC7712DDBAD5ECC31 +:10259000F7B41C13BDF01AB68AF56E40F862C7AFE7 +:1025A000EA7A8FFC2D19FCBA1197F56F07CB437CA3 +:1025B000BF6ACFBF7D8ABF1FB46ACF076F639E6FAC +:1025C00055CCF9FCA641FCAA9D25E63CAF8E1F1612 +:1025D0004A253FA6FDC74F3E4D7EE4DBE96574EF1B +:1025E000EEF6FF7009C5786F6F6ED212F2B7D60E95 +:1025F00078EFD427E807D8FBDB7B65AF40391CB602 +:102600008F97CDD6B00BE3EDE6AD566F101E373F7A +:10261000F5D813984762BFE5E7EF9B9FFA6F1BDE83 +:10262000E3D52CA8BD02FF7D02975019A5CF8AA73C +:10263000DEE779964C91CD02FA2CFFD9E7BC3FF842 +:10264000B971D07FC5AE77282FD3EC77061C03D0A5 +:10265000A7A6EB00DD0BDC8F3E5DEFCCA47B837F78 +:10266000FC05E1FF83FD024BF7F41FDFF4F887F46C +:102670003DC74740083919E9252EB1250D44A7F07B +:1026800037D0AF8376CA2B0C45AFFB50165289AFBB +:1026900009FF4D6FDBBDB3F07D4FDFE2C2FB634F3F +:1026A0004B01CEDF8FAC4FC3EF379BACC134994A9F +:1026B000FEBCE9D1DB88EF6E7AFDB634FEFB3A6AE8 +:1026C000A66512AD3313D777E39679B4BE46E627F5 +:1026D000BE6BC2EFC2A1FC5CFB1D96587A96967247 +:1026E0007B616737977E8BFBFF748EF134DE330B93 +:1026F000F5E0517E0F949D6DFB03EAC7CFBB5305F8 +:102700009477F175AB03F173EB8BC95BF13B48B187 +:1027100094EBFF9AD73F9F897274AB47A2EFA660F4 +:10272000FD410D5F02FFEE8F2952253E679407B4ED +:10273000B373B64515741E51C173B586FE84AFD30D +:10274000DBECF1C23828D3781E19FE8EB24AEDDEDA +:102750007466905BA69CC3F52F2AE5F2BE6AC7E9B2 +:10276000993F40F982782509F0F3D9B1F7E8BBCF5A +:10277000A0DB42E7DE5775BF4F75E64D559232A29A +:10278000F858B5D76EBABF6AD5F6F763E4D4DC0E55 +:10279000FE20E16D154B52305E386DEB9DF902BEA7 +:1027A00007DEFBB88C7191DD74DF46942F6CD1E7A6 +:1027B0009EA8BCE971CF4D9A5CC7D22B56CEC79468 +:1027C000C6DC67B425F592EE156AB6869E40FC34E9 +:1027D000833C06491EB97C31D087F8DDEA873B5F30 +:1027E0007AF33A58C7875D56F72C7A9B597F36EDB6 +:1027F00006F984FE22C4A1715EA4C31736F45F33C8 +:102800006A204E05B83F747A7193BBBF5CC2F30176 +:10281000E5D2C9BF9BFBDFD29B370DA237E7969A63 +:10282000F5E6E7AC38095E03F662C528FA1DB6186E +:10283000FCEA7168AC5EEC2D5108CFB17A11FEDE76 +:1028400064063C2EFFE9C7A4E7FE087A8EECD0F6BA +:102850003F915D02B4F6DA816F5B429F527D3DDAB3 +:1028600025AA1FB806F7FFFBAFDB8CCFD8F674CCD8 +:102870006D4E88D2DFBA9605F17B97DE1745CAAB5D +:10288000F5002C1BD0CFDEE909E1EF00ACD7FCF658 +:102890001EB9D7857EF6FA64BDCE6E5882FD82A53C +:1028A00032DEDBD11BA7EDA7F87A5DC9CEE8BDE02B +:1028B000EBF0F796C07F93F0F7960CF9B77589DACD +:1028C000BE4B06EFAF3FAFF8A5E8C2F30D9110FF86 +:1028D0005DC8FE7CDB4E7047186F9F215E781AF34F +:1028E0008CE7827916DC6F3BE7E87D1AF7DFCE498B +:1028F000852941FABE8AFBA1278357A4014CEC7DB0 +:10290000E67BF332A47950B56502FE9772D4B0A687 +:1029100057DB5D98D716132B8EBC00E31B01F19893 +:10292000D78FCD7F2C67BEA4B0A77F9E03EC9F0DF1 +:10293000EDFD4D6087288FBCC5DCBE7CDF87C47F82 +:10294000CB63F8CFAFED5BC7F2DF633AFF95B132EF +:10295000EDFB448ADB7B5E11E9FCF7390723FF02BC +:10296000BF57044A42FC2E12DDCEED14E87787589B +:102970003095DF3B0A728071B3CE9FB1F17BBFF817 +:10298000FEE7BFAFBC13BA34FFE277A53F84F2A3E2 +:102990005FFCB6E005AC3FFB56F6EF58FFFE35FB9B +:1029A000FF44F15CCF7E3B43B87AF6BF9C8DF6B80E +:1029B000E7793BDDB3DFB3D64EFB94C1FD89740FDD +:1029C00058CF48EDFE9917BF288D901E5F47F4F948 +:1029D000CF527E4FF0B97D7FFE039E7338B7CFAEE6 +:1029E000E03A56ED4FA09869D5F371744EBEE7C535 +:1029F0002F2A8DF747FDBDEB69D1CEA1F6003FE24E +:102A0000FE20C4F374FFC5AA17263FD686F1C79EE1 +:102A10000336CCABD7FCF22FA5A8AF7A761FB0A1B6 +:102A20003E83B8ED51FC8EE8B7A5D73D6C053C7FE1 +:102A3000823E20C4D3B78DFBE17CBC1FA43F5E382F +:102A40001E7A000FB82EC04B13FA6183E1A3B7942E +:102A50007F27F5CF878F4F297E68DE3791E1779EFC +:102A600051BCF0F387CDFB12430E01D7FF9C0BF353 +:102A7000423D3960FFBDB8EE2F4A31BF34D4BA931E +:102A8000C6FDB3F2C1575CB7857DA57597FED3AE81 +:102A90009BF3FF9E526EC762E5A03F9F3F7B3BD5F5 +:102AA0009F4EA47B9F2F55FEBFF14FBBFE4BA67BD5 +:102AB00029DEF3FE55E9BE72DC3FAB9C0F45F757AC +:102AC00035BA27CAE8F7F7BCF8976C5AEF25AEFB82 +:102AD000BEFF47D7DDE737893E07FEB4CF7D2CDC4C +:102AE000AD40B95EF347D6E3E572305FC7087EEECE +:102AF0009A69718A96AB66CF69FB10EB59B98AE780 +:102B0000CE82E0673C4E7E0AD461DD1DFE29741F33 +:102B1000A39D71FEFADCED7C02F38492B29AFA3343 +:102B20003F8F63F4BAFC35BB8CF5F6368007EAEDCF +:102B3000A91619BF3F1D0C3FA2FBB53AF41B25A7F0 +:102B4000CD14BF3863E290F83C9B295E896307652A +:102B5000BCCF23CE2BB110C58186F1D0FFE171DA55 +:102B60003DE32CA4FD7EEA9078A2B8B143D6F1A44F +:102B7000D2FAED4ADE6AF49F4E8EE3F1DB7AB69A22 +:102B8000E17DEBC163A27E8F08C727D3FF34BC650C +:102B90008CA77B2698E4A5BA756933E1516210478A +:102BA000F27598E24E3C978BFE9E11AFD584C7001C +:102BB000D5DB27DBE576F3785AE77AA59A219ED70D +:102BC000E39600B62B9677F0F793FEA7F0BA6F1056 +:102BD000BCEA6505EBA5F3636EED9C90DB3102EF7B +:102BE000C2C3BF5E7E6F8ECC309E13AB5917E5ED2E +:102BF0007C52CC77BD7218F35BED37F3EF86592129 +:102C000053F8797BF33993EFBEE8B3225FFB416C55 +:102C1000050884AC575F4BF5AB9D4C1560DEAB9956 +:102C2000CF8AE72150BC1FA7FCAAAFBB01EABFAA0D +:102C3000F86E06E643AC82B28EDAAFD4EE9762DE6F +:102C40000309509FB7363305E11E368B59F1FEB2AA +:102C5000FF0B496DA6150080000000001F8B0800C7 +:102C600000000000000BCD7D0B7C14D5BDF0999DBC +:102C7000D957B24926C9123608389B048812609287 +:102C80006C9205024C1E68D0A0CBB38054378810DC +:102C9000156485DAE65A6FB321240215098F56545C +:102CA000AC0B82725B7A9B2AB4B4A57679C8C55EF8 +:102CB000C58894A2C536A215AD0F22E0A35FF92EF8 +:102CC000F7FFFF9F99ECCE9210E8E3FB7DF1D71E52 +:102CD000CE9C3367CEF9BF1FE79C9D31D5AB8A0AE6 +:102CE000634758D7B1693EC6C2B344753BA3BFE939 +:102CF000874B199BC6FFCD66A67C636232F44B55A9 +:102D00003318EBC7D82C1698512C30764B732014FF +:102D1000703176EBE0AEBCF402C62EE2DF04C632C0 +:102D2000542F63258CCD9002D6FBE1F90CC656B02A +:102D30008C58BB51CEC0C1E1F90C39600DB9B0520D +:102D40002DBF9FCF98A05D2F5E4CBEB4BF513226E1 +:102D500031EC877F1745FCFF30CD6B940DDE75336A +:102D6000766FAD3DB21CE677AFAABE7D2FD427D7D4 +:102D7000DA65E8C12A7D75833A613E13C5F2A71E64 +:102D800080F51EDD69677678FED1E36F0C54E0B9FB +:102D9000EAFBD60D0CE651C8D41619EA0B04F5254A +:102DA00037F4632582BA1DD66F85315936630B37E8 +:102DB000D71DC1EF4CDB2908222C758C6AA1EF8B43 +:102DC0003BA103F4CFDC24446E847F368D83D1A1F4 +:102DD000DF475B84881DEA55B5C1430F42FB06BF40 +:102DE0005DB6AB386F2D353B8BB17B7438BF665504 +:102DF0005FCEC3FE3FB6AACB157C12A1FE777B4403 +:102E0000B65A86E7B5CBBF8FD3B9415508BE99BE38 +:102E1000BAD228FC735AEDEB5210E117D68E1698F1 +:102E2000C60B3E3A3A6EBCA671CFD178C7B34566A1 +:102E3000C7F13635DF9009FD16305560B9B4AED60E +:102E400007A0FFDD303F11DA2733759D0FD6C7C4C9 +:102E500045A538FEBD3BACA73A1D3ADCF1FFC4B92D +:102E600069F83CD3677E5EBFCD5C5F007D928BF0DE +:102E70003BD2A94E036F306EC3C9BAC8C1B87ED366 +:102E80005597FBFDE1F08F32567671586C7CE686E3 +:102E9000498DBE940EBE6C0C460E0E89E1DFC0CF8C +:102EA0001EBF581301FC8DCAD082489F46FF66C4DE +:102EB0005349ACDCB3F78BB7EE45BAF7D9551C468E +:102EC00063E9D5327C6A767D850FC9AAD251781024 +:102ED000EBB785A00EF05BAC5AE93B5F97DF9998A2 +:102EE0000EF53B3CC2212CEB14EF0D19508675BC3E +:102EF000DC995F7108C89AD5AA536C38FF89E285BE +:102F00004AA48BB3B0767B3A7CB7F3E8C0A0EBD28F +:102F1000F554308149F9317854399C4C8A83CF4437 +:102F200039DD54BFD1936DEA3F49F19ADA6FCEBFD4 +:102F3000CED45EAB169ADA7FA3CA34DF23BE2FE766 +:102F40002C83751ED96B93118447102EEE185C8E5E +:102F50008CFEB212E9F8D5EB0256313D36DFD5AA28 +:102F600044EFAF465AEE876CA9D9909EEFEEA63F8C +:102F700046F4BF618A10590EF87EB5E4B143F301FF +:102F80000E1F003D8B2AC2E5E4DC65C80F11AB6A59 +:102F900007D02D64C1431AF4DBC04287501E4DAFE9 +:102FA000707485618A5359202D2A5C4A574DE34E2F +:102FB000D7D2FBA34519F978C16673FB4F4A86BD8A +:102FC00084DFFBC968BB2CC038D391FE8C762F8E72 +:102FD000FBC867622A96E6E78974F99C9AE27E3F0D +:102FE00059A74B208C9F084C8D22DDFC8ECBCBDE6D +:102FF000E494419F8974F81B9DFE8C72A2589086C0 +:10300000726994CDDCCF28DF6C04D0C2387F68743D +:1030100050F976A34CE59F1A3D54BED3A850F96EE3 +:10302000633E95BF017626F9D000F8CE8C8D93597A +:103030001BB05D8E9F62F235ACCBD3AE9308DFCC74 +:1030400023A2BA5589F117BB00FD403F64625D8C35 +:10305000BD37B9E140B0BA98B1D3F87DA487F95B28 +:103060005E92F07D183005DE678BF6BD24B9E3EA89 +:10307000DF78C7DCFE9070C8545FE135D71FA938F0 +:1030800014FF7E6FF3CFAC55ACC114C0EB46418B3F +:10309000F4004F637EAF36A9B30305080F4D999234 +:1030A00082A58FD6775A97E7BDC165B6C842ED3085 +:1030B000EEE44AB52E10A7F73ED3E1FE998E5703F2 +:1030C000CE4CD594C088DEC77B53640D38DEF4BD8A +:1030D0002C431915D74F9FE79B69C18948170C6886 +:1030E00018E5C886D9C3B6ACF6F6BEFE0DB3EB063E +:1030F000E5C0BC2A038502D255E6FC5BAD0CCAE3F1 +:1031000053DEB160392A07E60DE3CDB9A80C9A1257 +:10311000079F7E857CDD47D7B059ED3DC02D556FAB +:103120007FCBC2EAB1FDADD4E0A0D9A6F71DD4DEB5 +:10313000AF50A1F2780A1F6794C42411E4FFE41C85 +:103140000E2F5600F01E1183B7F1DDDEE0D34D6F78 +:10315000F808F4D4EDB54C43F93EE7A236686ADCD2 +:10316000F7730B39BC8EB5C0770B2E1D6F6621C768 +:103170008B01EF4BDB39FE0CBD7D7C328BD851FFD0 +:1031800031B509ED85A9A017510F4F145DC4FFC7D4 +:103190008F89AA9DA404D7E30BF19FB0F4E3A04F5D +:1031A000A3F0FED43A5728AC921E1E84F05E386B12 +:1031B000612D1B097D7439E580FF2EE680BD1195D8 +:1031C0004C722B511E65F6219FC616BA62F209F4A5 +:1031D000E6D1C63DEC5D6B6C9E67F5794E8589F650 +:1031E0000417434EC9209725E0DF493A1CDF15B587 +:1031F0008985008F57AD1C9EA3ACCC196FE74DD2CB +:10320000F136AAC212403E7B6DDC9753913E974E39 +:10321000CAB58830C4D19A7319F30A6278E9E6CF47 +:1032200086E6605E711CBD4EB2CF427C2A4C4B419B +:10323000BA381A287656B862F8DA103897C1E2E43C +:10324000162CE3B2FC74A5F2ED48A785EC8423E3C9 +:103250003F27FDF641BE6C110A41D6A25C83F717E9 +:1032600016A6D3F73FF0BFEB120A506F9F7205A16D +:103270009CCD2256947BB7B1A815E9F1EBAC93EA4B +:10328000773066C3B28E2954DEC9341BB6DFC53A27 +:103290009920A29D0D7F03183B57B8675318C61994 +:1032A00089F840FE606CA525CE3E7E4E87EB1C550E +:1032B0007BA010E19BD17112F561E6782B4339AC0C +:1032C000017D4D4D417D5AE69CD7033E07A8F3BED4 +:1032D00053180FEFDAA00DFB81DE223C2200114FC4 +:1032E000D6F4FCADF172A445C7D3B951DA0A7CFF1C +:1032F0005C21D7EBA332B8BC60ACCB42F66DBE62AA +:10330000591D67073CADF38D511F650BDA90CF1740 +:10331000A8219B0CEF556E2E7476F6C06F03D4E097 +:1033200086C212F33CB9BDC4F5616FF833F4DAD547 +:10333000EA4543FF1D54B508AE4FB2B020C243CAA0 +:1033400098E541F830793AE1FDB9047A4DA49B91B2 +:10335000FE771F294643BCD6A20E017C8CDCA3BCA1 +:103360009D8C764E78B62CBA63FD47D69E7A25CFD3 +:1033700087FD4559807E1B6ACA9C287F37B8C28367 +:10338000113E1F08AAF341B4B3B68B32F7BBBAE6BD +:10339000221D2EACCDCA41BCDC3AAEA44383FAE96F +:1033A0005A6F11DAA37FD6E7F521E37A201C1022A9 +:1033B000DBA1DF07931E1E8CE3BC5AD2BF08BF738C +:1033C000EB243BF1FDE963B9A841D871DFC219CB09 +:1033D000F01DDD3EFB9A2EA74E6F5B46F6D1694F7E +:1033E0002EE916901734EEAB35DC5F7995692FA185 +:1033F000FF3055B7C366CE4DB4BFB89C3C8D72123A +:10340000FA4F0B98DB33379F3E89447EA93CE37625 +:10341000575F72ED78614ACC1F102F95671FBA581D +:103420000DF2CFD4BDEC89601AD8CB355EEBFBE84A +:103430008F3408441F865C9B5AABEE43BB616A4DD8 +:103440005DB103D69D1A29131417FA63CAC4641810 +:103450006F728D508AE319789B5C73BF8D817C9964 +:10346000BCF97E9B9282FC10388D746ADD5EA5B03B +:103470001CF4930A5FC6F746849D84EF5B279FB5D3 +:1034800020FC37EC02FB59457B76580AE2F9E8B696 +:10349000736E56D0135FB4D9D0BFACDCF6D900E45C +:1034A0000B432E8084D914253A74733B8B053C97CB +:1034B00095737ABFBEE45CB892E58788AF5E194C1D +:1034C0007EC840F04380B76FF1EF1B8CF89FBF02BE +:1034D000CC38C0EFC783DE978EC090D12A4788F9D9 +:1034E000797D24B4C392BB9807EAD95F6DEE84F668 +:1034F000E666B0FB0762FB17545F213964EC3FAE10 +:103500008B99FC8D095F394CFE460533FB2F8B3AB6 +:103510004FEDC2F7E5E576396D20FA3B667F668FA1 +:103520002DDAFA0A7CBFEB7B8C6D45FA94BD09FE5F +:10353000CF7509FE4FA1A97E73FE6853FF29AC4BDE +:10354000427A05DA0FAD05B82D62B295E4A0267770 +:1035500085A13E59AD30F5BFD53FC9345EF12B5141 +:103560001BBE9F0AEF8B00BF298E80793D0D5F1037 +:10357000DD8D6DB8407AB430DA6E6A2F3EBCC73448 +:103580009EDA2157A1D95974423D80E597CE5B3C24 +:103590004D301F456021361E58B13350056CC24A6C +:1035A0003F081DC0325C197A0EE11506783543F9E3 +:1035B00058F2779EEE84FE0D007F8C277C4B642DA5 +:1035C000E042B22F2DC17AD43BB2457DBC0EEA1F3A +:1035D0000A81AC3AE0AF6162B0A208E8C1DFD5561B +:1035E00005ECC2C67CD57E00CB5D1DE52BC7F8106F +:1035F0001E8067187791CB4276F34471EF4801E95A +:1036000065677231F2B741571F7D93DD41769C4764 +:10361000F3D441FF16775ED16AE0AB40558A26426B +:10362000FFC53F1BB615F5BFA7A4624A11F08D98E0 +:1036300052EDE07E87D4D5EDFFE760BBB67E38EA79 +:10364000F70A91E44878A295E459922522338AEB4F +:10365000703D65BBD14AF6EE6B455CCF6C78194086 +:103660000413DF90CEEDCBD20E6888E3B34C3FB7A6 +:103670000FEF2ED2ED7020571C674ABF633B570BEC +:10368000384E0A3D2FF5ABFBAC480FB224A39F9BED +:103690007A22208F80F176B9DF0BE33A769DE81825 +:1036A0002728D85FA1FEFD6BB5651528F7F32586A1 +:1036B000FD77C9D5C9D83F75AE6A49C2710E5B2383 +:1036C00043609E4BC7D969DE4B2B1C3F665E1C973F +:1036D000113C6139F712FD8CB129380F26752A5F2C +:1036E00007FEFE33E831C5DE3B1FFF79638913E334 +:1036F000531B34D5A962B949D4E5050BE330A916AB +:103700004426D6AADFAC86EFEC30EAC0CA0CE02D26 +:10371000DB0CF9C298331FFDEBEEFEB3ABC91FE81B +:103720006E0F231F3F2AE8F5F0C4D9385E6AC278CD +:10373000C6F8DF7DBEFACD9505081F5987B3DC2F8B +:1037400000A0BDCB122A45FC9DB68486221D9E1684 +:10375000142A1FBE36B81EE9EFDA0B695184CFF97F +:103760005DF608C2E1DA0BB7F64739077AFFD94DA3 +:10377000486FD55692EFBB6CA12FDE047875F54BE0 +:1037800052B742DDFAF4BD5D8F032A4E3F75E3CD9B +:10379000F8FEA3AF5B3290CEEE92BF207E33EC8674 +:1037A0008562F77A3430B1D9C2D8FC35E4BFD396FC +:1037B000587B9E03F924B63E07D4E775C373DEEC4D +:1037C000F760FDCAFC1DF918EF3BC75CA1D558E6B0 +:1037D000CF9989783CB7118C6CF8FE2E7C13E9D711 +:1037E0009314D98EB07307F2D19F3CD2C1EDCB7642 +:1037F000C0AF060BCA0D77BA46F8F07D2963357461 +:103800003B57DEBF0AD771EE218641477657A78D19 +:1038100029B08E5DF9F39B2BDD487F4A06EA698368 +:103820000E4EE03860DFE797687B90AF62F1D20719 +:10383000AF2E5E2A75D988AF725968357C7789BFFB +:10384000A900F5F4701FA7F325D5C23B76A82F6910 +:10385000384F705DD4708EE41A93822AE2F7E32623 +:10386000CEFF6D5676C7142817FD8F7807FA912082 +:103870003F560A4558EEB72D8DE347D6FE59B71C83 +:103880001C65E9DBBE4B0AD6D277A708F20CB44B15 +:10389000327D3B664B60974D71CA33308EF3A7176C +:1038A00036CC96405E4F1924CFB040FD6FCF77F1F4 +:1038B000F66CF97B169083037739E750DD2BFF0E0A +:1038C000EBEE17F47A8A8157714E94E2C02E0DF117 +:1038D00076B6C6497E5E6FF399D6F02B531CE592FF +:1038E0007651E0F2701697339F4CCA2679C5F28262 +:1038F0005E949F8B2DF252B497CF1671FBCD9D1B1A +:103900005884FDDC22939BE1F9E2A11DB7A7E622D2 +:1039100074D4894FA2FC0DBA54F433A735BC48DFE8 +:103920003D6A5106213F5D5F16FC2BF2CFA7291D92 +:10393000C44F6FD4BE918572758B4FD6ED81AE3C6E +:10394000C4CF6C16247F64B61E6FB58094B8089FF0 +:103950009EEECAB33280FFF459663B6D1A8B92BF5C +:1039600032B53621BE1B1FAF15E9BBB703CD30AB57 +:103970000E8FC519DE21FABC5CC5403747056504CA +:10398000D6ADEE8E2C6EC7EF54487FE43B18EA8F1D +:10399000A4EB4F8C0CF680F7F646D093C04ACF8349 +:1039A000DF8A6523C5DC41DE4A9D3615C6B94F97CF +:1039B0009F13C54522F2CFD93D5E166FAF0D2DE6A0 +:1039C0007A216D0F8FF7B87301EE6E846FF4218446 +:1039D0002F2BE0F05E6C890E443C0C2DE6F2DFC02C +:1039E0002BC0ED05A483831E68077E985005788060 +:1039F000FE13EE7C456D8EC3C3167D5EBB9238BF51 +:103A000077ED7646B67A2F9D677931C773E27C6F82 +:103A1000BDCA79DEDAC73C6F2DE6FCDADB7C0DBE71 +:103A200035E064F02DD3E5D5EC59DEADA487F4FA8A +:103A3000D45A2FF983C63C2FA59F6D4A4FF4D31754 +:103A4000DD0CF719FA81CB0F038EC6FC0C790072DE +:103A5000B4A6DD34BFF42DE6F9A5135FA536FC82CC +:103A6000DE1353247A3E3DDFB305F330A91D6749C9 +:103A7000AE817D763F989AECDEE21CC2436AFB5F22 +:103A80005B33C96EB30A284F521BF6D2FB97ACEFDB +:103A9000AAD7D5B3BC1C078280E41DCA6401EDE03F +:103AA000A0C9EEAB60779BECC22AC7FD0971FE7F0F +:103AB00033F5BFD1D3646A9FA4AC4AB073D799EAF7 +:103AC00093D5C713ECD82DA6F6298E1DA67A796753 +:103AD00007D999471A6BC84F1EFF4117D99B51DD73 +:103AE0009FDEAFFBD307D19F06FE3C84FE34948754 +:103AF0001B557AFEDB463F95AF346A54763406A8F0 +:103B00004CE46B5F47A7EFDB8007BF3B8DFC8D600C +:103B100061F0E7C5809FD1C7BAF2D0C91873A29DE2 +:103B2000ECE0967DA32D368C33BC22469C02EAC97C +:103B3000B23476197D91FA95C8B4383A4FADED6438 +:103B40001ADA2D7ABC6B8AEBBD6AA40BD6200B69FE +:103B5000A007EC92CA7C501F1C94EF0F437D6F317D +:103B6000B713035A13F90333A12BE6396639C0DEC4 +:103B700081F9CEAA1722CD14070C53FB6D005BE42C +:103B8000BFE70F2FA7FA6C178B627FF80B38B2F4E0 +:103B9000BC26E2D93DED25A2CF1053B1FF89ACD6AA +:103BA000071C686B197A3BFC96E5E2F02BD7DB7BB0 +:103BB00081B6909E5B0495E202E17489F20F89FA66 +:103BC0007443318F1FDDD2CCF57C979785B6A23C2C +:103BD00041BD0A709A22033CD05E6D502C080F83C1 +:103BE0000FFD9D5DC4273EC54AF99945ECB31B30D6 +:103BF00094B648CBEF6A867AC97BC166A40BC3CF63 +:103C000031E81DFC8403A928E74E32CAE3248D5F06 +:103C100025A25F31FA7CA419CB0917DA4594FB7D04 +:103C2000F943C6FCF736CE227A79B1314865B4B192 +:103C30005EA7C310D50F363650FD506398CAC38DAA +:103C40002B753A6CA3F6571A3751FD486344A7C742 +:103C50001DF47CB88FC3EF54B1AE2F1D151447640B +:103C6000122F2D8E7022FE593CFE9332787B12C8A3 +:103C7000FF70611C3D00FE515E2FF2E872BA2F3AD0 +:103C8000C858F9800D50F471FB062BF9457F273D8C +:103C90004C7781019A73A91C9BC9148A4B26CA339D +:103CA000B02F54A4FB690CECBEF4AB90DB2CA462E7 +:103CB000A8C1762DD825DEBFC7BE0886703E7D7FA1 +:103CC0008FE3C7923C378C7A71B18575211EACE9C0 +:103CD000C76F1773627EE4257049F02BD70FE7E3B7 +:103CE0005CED3C013E56A483BEE66929D1F27DFD20 +:103CF00062F049CAE0749234C01509037C6CF6483E +:103D00006439AEE5574EBE9FC215188CB6A731DF99 +:103D1000429F9E4751B4421FD90917F65D443BB4F8 +:103D2000C34A71B4FB7EF9E615D9494BE47326FB0F +:103D3000BC5BCF0B16D2F34B2C2CF83C944576E6AB +:103D400010608EFB7D9513F8F7CA3B34E457595247 +:103D5000E3EDA8C47249C367347EAFED183F057C1C +:103D60002CF975893C2F0E2F8D3E3DFF070EE1FB90 +:103D70008E18DCAE94AEC775CD32C989FFEFF4A7BB +:103D8000F61FA676C63A7D88FF396EAE176E0D4EC9 +:103D9000D2ED8B76E2C3B9AC83CADB59179541F4F7 +:103DA000C8A19CC7542AE7B30095E746051F40FC0D +:103DB00048B600C53F8EB0AEF9BF027AFA64FC681F +:103DC000B9825D2A17AF540E1AF2CF9087AD3656DE +:103DD000DF6E8ADFB80B317E63E0E3619FC514CFED +:103DE0004FE4AF33850ACDF7CCEEB11617BC7FE6B2 +:103DF000553122909DA61CFA36D05573918DFC97B3 +:103E0000E2B94A2BE6C150800CC13D022BAD1FC761 +:103E10008F73AEFC6BA497CF61F419E5A9A4E67F7C +:103E20003D2EDED9ACE7197740F953986FDADC4EB6 +:103E30004989E38B1FE87C5431BB9AA1FEBB45D670 +:103E4000FD0407733B91272F9C2B98017C770BDA9D +:103E50000740C7E715ED691FAC2BFC70793AC59593 +:103E600031767A2DF203C81BE4075095769237DF3E +:103E700027B93A93692FE17E84FB5485E4C834C6A0 +:103E8000D79D088FFBCAFF4AFC7B1FF02FC22191F0 +:103E90004FE7EDD9774248FDC7EDCD790E57541C59 +:103EA00079291C615DBF44BA495C9711FF5DCC3A2A +:103EB000C9BF5B33F06800E77F0F6E6681E776D697 +:103EC000AE5D83F266CF168672B54814286ED5357E +:103ED00089FB35897C7A4487F7229DEF5950294622 +:103EE000397D46508A5617F2F9909DFEE275E447F7 +:103EF000BCAFF737E60172A7E5490EE710EE3FFACF +:103F0000D8C9FD91C4EFBCE5E379B7698EF326B952 +:103F1000765FC35F4DF2E8BE021EE72B6A568A71D8 +:103F20009FD9323D6FD75110781BE1714FFBBA9F7B +:103F3000BDA2E077377FF32DFCEE6117D927EC9512 +:103F40007E04A3338239CF3DCDF199AEBFB798F24D +:103F50003F6F4CFE3DC963F4CF7FE5433F17F4A7A5 +:103F60001C9BDF514BC7FB4F7A637218FCE43F7E0A +:103F7000DB8B72D8FBDD0284E76E2BC5AF16E1FC4C +:103F800033D15F0E9CF5F1B824C51F8E4E1A4E7EBC +:103F90009861C79DF9B0E7FCBB313FE33BC6BC3E2F +:103FA0001604331C75FE9DA0EBA737AC1D9FE2776E +:103FB0003EF9D970010386DDCFD33B46A6BB62F83C +:103FC000E9CBFE49B47F2BDCCD549FDE87FD031285 +:103FD000F325EC776229B77F662D6CB38E2579F1D6 +:103FE000F7D93DC67C9B5358C486758D29721685BA +:103FF000E228AF855151290BFD305E175CC70F04D5 +:10400000611D9B97A5AAA207D6C9789EABDC63A3C6 +:10401000F8A31DC783719C2CE2C152B47465623948 +:104020009105251E878E10BCFE4BE86CC6782ED3FA +:10403000540FFAB12DEE4A8A6F7CC05C218C17CFE9 +:1040400048AF19079F65B3174C0A225F4C6F4EA506 +:10405000FC906453A57D680FDCC4F375E037905D78 +:10406000FE3B8DE7110C7819FB2DA5F4F00DE4AFA4 +:10407000CC01945C837907D58A789809F623F6FFFA +:10408000BD14EA57E0C5FCD7C69102A0FA6E319282 +:104090003A02D6F197A33F2C7D155EFB88456D2E25 +:1040A000685F7C10F81EDA975C75BE3A48F585ACFF +:1040B000EDA97D30EE9B594F3CB08FC5E0304B7B76 +:1040C0007AFB9D50AB17DBB32A84587EE94BE7EDB2 +:1040D00059FBDCB1FC455FF98A6162705A4909E617 +:1040E0002DDA6E27B9CA42A3C81E675D83EBA0DF35 +:1040F00058186A359467FA713A0C7FC6087E67AC27 +:104100002AD92FE1CF15B2AF7C5516C227BBA850D4 +:10411000FC75AC9E5734E4AC6FB885DE677F53E81E +:10412000FD715DE6FD16BE5196D0F32EB433A4CBDF +:10413000CADF774AB83CF3655A42F1718A664F1676 +:104140008FF7E975BB2253DC625509E7431FEBFA91 +:104150005441FD80F1631FF59AEE28A5F5117D8E7F +:10416000DDFB512BE635378B400F7E7CD85E85E337 +:1041700094A3BFA0627C37A4717F8D31CC5BB13D2D +:1041800066F98FEAD302ED4E8DB5237FAD163A4422 +:1041900084E778309FB1D4982C6159C9542AAB591F +:1041A00080CA1B5888CA1AD646E54DAC9DCA5AD655 +:1041B000C1FB7B92C3161F864C1D115C9F987B80B0 +:1041C000D33F7B48A6FD2693165A30EEECFB1ADF50 +:1041D0000FD5173C7EA4C3C383F0F0FDFDF0C0F5FE +:1041E000623EF7062014943BFF2C78DCC8C2C4EF73 +:1041F000935884CA9B5954E274A91C6C82F1267F9F +:10420000C0485EB0EBA304077F6750E27A21011E2D +:10421000559C3E12E5D82E9D7E6E85B562D92A84C6 +:10422000683FD3F11285E0E2606D8C7F2F42795FA9 +:10423000A33DF1B92FB9F29C0222FCF0EE3F515C94 +:10424000DB575CB92C17EAAFED7E7F0EC6C57D63E8 +:104250002B5FC881FAEB251FF0FAA8CA622BC0AD0C +:1042600049F8704E35C63FC4FBEB092F993CFEEC74 +:10427000B0AB6A918FD264A126687FD8160A61BB61 +:104280000D00D9941D9BDFE09AE87E2BCA57B752E8 +:104290008CF2AFAE20F0DF25B00E5109D523FF3DE3 +:1042A000293319F171BC44F71BDDDE629CEF8B05ED +:1042B00081E3C8E767521C610C0C1C2FE1EBEFADEA +:1042C00064A5DAB1921E9E5B922FDC7E1FCC6B0937 +:1042D000CA68283F2C09FE01FB2DB1740E2E86679B +:1042E000CB93FF68237C68401F68871AF4510FF452 +:1042F0008074B69FD3035092DC6D27E562BAA6EBBB +:10430000F6053E2E42508E97CE0A1DC0ADAB30FE54 +:10431000691A5FEC5A80F4F069FA1BB63F135D0F1F +:10432000E4F8D6E5C29217FFFA6918DEFBB505E896 +:1043300095DBBB011647CF4B5E744A48CF4BFEC29C +:1043400022C95EA4EFFF68463B7934D037E6DB161E +:10435000EFFAE901B42BF6A27E02D02DF9CDAF0F12 +:10436000601EA0FC6627C561C6BD713217EDD1097C +:10437000273B9B313E76E6D7BFBF86D39D91FFF9A1 +:1043800052F87BF4E744F1A147511E2F6D92981D1E +:10439000BEB75408F1BAD521E37E0FB0A45AE72284 +:1043A000BC3547D76AAAF37D6EF5FABA609C43A381 +:1043B000A1FF27FAFE745033243F15F88FF850BC44 +:1043C0006043FBFFF320E847682F3B91285FBB0E5B +:1043D000E1FE92457B6C32F2F5E276B3FDBBA48F31 +:1043E000FDE2034AF57DB983D8205CD72F71DF1B2E +:1043F0002666F57DE363F4FD55B00E29DEFF36F643 +:1044000085BC2B567A4B010E93251E279C28BA2C6F +:1044100048F74B9FCADD8AF9A0A54F2D536584C785 +:10442000A08222E4F7F747E97E6D54BE1EFBFD44EF +:10443000E0F93316F83D437C2FD4E776F74A81F252 +:104440007862AEC8FCE0878C7AB6FF3D0F125DA49F +:10445000CAB88F62D4B365B376B8C95E09B1723A8F +:10446000B740F6DB4FD2BB7268DC748585816E9BEA +:104470009D5D3928C7C2BF76A8A8B7D8E64CA2D997 +:10448000DCB0BA09F5EAD226B780F9C85B4AB95C54 +:10449000F11EF36F42FC9D05FD8AF8589A32B43F35 +:1044A000EBC18E344A1FCE33CEBEDEF7FACC64B4F5 +:1044B0003F774B8164DCB775F658CE65E3AE255186 +:1044C00000FA65E203BE638F74E03E1FDF2689E0D9 +:1044D00061D0DD2F1BB51EF7272A2C5265C375DD71 +:1044E000057204EA4B5F7EA6D981F555B4F315EC4D +:1044F000879169089F5D2F8B944F2A653B9ACBA1CA +:104500005E02F41901FAF9256B17914FED1E0B535A +:10451000E2E8C4A9243125CE7F4FCECF30D553D485 +:1045200001A6FE69FE1C53BB71AEC2B027D3B5EB2A +:104530004DFDCB5887B818D6E1073E8862BEB2A6BB +:10454000C8D4CECE73BAF7C37F5C3F71FCD9C376B3 +:1045500019F5DF988FCD7CE1EF0C31848B53E71B8D +:10456000E7B1383E80FFD95DEF9FC4E0B6BD8FFD57 +:1045700053DF29D5F74F0D64037BDA3FF55872AA54 +:1045800085C393C79D4A59DE63E5D05E72D8CA22BF +:104590000AF9694CDF2F1441BF2176DE22D28CFD4F +:1045A000C6A25C00B8F70B98E1DD7F9619DED94111 +:1045B00033BCAFA937C37B50C80CEF6B1BCCF0F5F5 +:1045C00086CDF0CC5D39C6D47F485BA5A93E6CD3BF +:1045D0004DA6FED745A69AEAC377CC31F51FD13E4A +:1045E000CFD43E6ACF3D66FC83584738FCB293B1C6 +:1045F00027BC97D2436174A9B9BF78525C8C724FC3 +:104600003FE7507CF8C11EE9210CFF213D24E2BFA9 +:10461000D9F91DC27F679D2B248C217A8806911EB3 +:10462000F4733997D0431F74F01B434EEA7460C88B +:10463000C7DEF8D6C073BBAE77816E5A0A8CF80815 +:10464000AC27E0F2BC84F6B75CE9E8B2FB918E06D9 +:10465000937F12C805BFBE10FD809156945B4A93AC +:10466000D0C5C07F49F4CF0457C37328A73637C3DA +:104670007A06623CCD7CEE655A8DF9DC4B5F79831E +:10468000928EA8A95E788C89A8274BDE539A53E0B6 +:104690007BC527F97EA744BFD0D7C9F319633FEE86 +:1046A000381086F99685B8FEF57719798BD0D3C87E +:1046B000A763419E221E59C71F1883F76D327F1FC3 +:1046C000F8271FEDD00696A422FF7C4BE4FEE89766 +:1046D0009620F991897E65734580EC4AB0BB07A2AC +:1046E0003DF7ECF0E0F9D27E7C32886FF12C233B71 +:1046F0007BBC03FC4FDC83C2DA19DA59671070B453 +:104700006FA1F136CC6B9D419B6600D062F343B73D +:1047100085695F15933B4B31AEC8FF92CB82FF8317 +:10472000E39E1278BCB14E7B77F02E982F082AC2F8 +:1047300067FFB9ED0CED87F38A2694F5EB7B3F8696 +:1047400011C732E25ABB1AA3542617A822D25162CB +:10475000DCA9D3225717A2DE5ACAFDDD8F7052A3FF +:10476000E93BA9244F1CACC31E972FFBBA8E0F8BBD +:10477000A3A305F383B7EB789827A8E487DEEBF9CA +:1047800098E20A7651A0BC9D3DAD602B8F4718F191 +:10479000836BC4ABB17FFA5AEFBD9E0F4D7127B644 +:1047A00033F38AF659C6ADF307DFE0FCC2905F4EE3 +:1047B0004DBAA612E5F5A5DFF994E2595F0FBD6E7B +:1047C000A2EF3B1ADE34D1735DF81D537BA7BBCB40 +:1047D0008A713BC07339E26FF1CF9C8F6E4479913F +:1047E0002490BCA9DB65FDE6B7D995ACF323FAFEAE +:1047F000C9C60EC2A7B1CE3F369EA07A6763279581 +:1048000089EB34FC7DA3B4ED0F915FDF0576E456B0 +:1048100077DF7EFF9B6539E41F7C4B0CFC91C7570B +:10482000A283701FEA97AD4CE0FE5DD7EDC80F7311 +:10483000855415F5636BF6A1B7311EF03B4B1AADED +:104840008FD547DFC6B8F592D5FAD9332DFA14FAC9 +:1048500067675253A9DE3C3C182C43D955A0F7CBCF +:10486000B470FBD41D1D8472EA535803FA0579799C +:10487000813BCB88FFE420D2657D06F897F0FC03EE +:104880004B7824EE33FA41D96BB7A17FF54152F84A +:1048900053B440BEFFF3DFF2BA8DF3E3B33FDF451D +:1048A000FCF73B8B48FE46F89702DFFFE5EAB4E1F0 +:1048B00039869B72834B707CDC2745FBE7E1F9D49A +:1048C00011B1B8E319FD5CC519272FBF59C6EDCB4F +:1048D0006F95F1FD1746D9A6F3EDB365863C7E646E +:1048E00028C697CED6DA19DAA9F07D8DECC417ED7B +:1048F000C46F59197C1F092EECE16CDC67A29C4344 +:10490000BE728B8CF687AC2AF39AE2ABE8F8A5422C +:10491000FBD49FD9C94FEF9EEF31BEFFF293493CC4 +:104920009ECBE633D3FEA65565DCEE5CFCF2A93FD8 +:10493000A2BCBABE2CB806D76BEC035A9CBA8FE265 +:10494000494F9729F43D9827C5F3ED225B81F9A8DB +:10495000C50E1E9FEA2B2EDDDBBA3FB9ABE3FB1879 +:1049600007FB34451982EF1BDF85793C8DF330D688 +:1049700067CC2336CEE5F9C288B31AF537263F3C1B +:10498000548F8FDFD1D3F9BCDD3A1C4E5A59C23E49 +:10499000301D6ECCD807A6D03EB00E1DCFFBCBF895 +:1049A0007A5FB229CB2C1C5F2AFADFEEDC5004E9D7 +:1049B000D48DFE79616CDCAC0C16C43CC8DC90F77D +:1049C0008557A0FD9E6D23E85C80310F63DC8E026D +:1049D0006D6F595CFC1AE88DF0189EE424FA58FCBF +:1049E000E29B7F44F970F773238A510F18EF25C2B9 +:1049F00017E04AFBCE8E5AA2043F80EBCB38EEF391 +:104A0000878FD2FE2E03BE7F2F3CCF0CEA20F97E8B +:104A100066CBBF45707E67B2992CE07EB8BDFF754E +:104A2000421889F4A1E73B7699E33B89FA4666C1CF +:104A3000DBD0CFB4332E2FECC67B0325D37BAF5D09 +:104A4000A3FD89F33B53506FDB253D9EA3EBA112E1 +:104A50005D7F0A276636A33D6FC48BD9F5A0CF7959 +:104A60007C92E6E970F03847B75E175485DA83E246 +:104A7000C1B330AEF806D7E3652C4CFEC868166C9F +:104A800046E3C72EDEAFF273EE7ABC68D521F2DBC7 +:104A90005182A15D3148FFFE0F923FFD6914CA9C0F +:104AA000805A8962396F5660BF955A2234C9A7EB84 +:104AB000BEF0B672F6961AE07B4F2F35D611D6F3BC +:104AC0002D7C3D46086E79F2E0FD189FD8AAC717E5 +:104AD0007292175950840D9B1F5E8EE5758BD40121 +:104AE0000B95D8F8B94BFD7F0942BDA2CD6EC1F838 +:104AF0008D55E3FEB16328D216CA8B9003FDC24CDC +:104B00003FA7FB7303D7873B59EFF87FB2D171BC46 +:104B10003A4E8F0C94A282EC8A7D6F6083EB389EB4 +:104B20001B7536645169ADE67EFBC30373F6A01EA8 +:104B30005976975C88A2C178BFC06F3E2F087FC7A7 +:104B4000E79BE21B8EE3F3E3F2CE0293CDEDF33D60 +:104B5000B176F2C714537FC6F213C65313EA119D00 +:104B600058FC09EF69A6BAB5C6BC8E736E58078BA0 +:104B70009FF772539EF5F1468F094E03A488094EA4 +:104B8000031A061EAFCEC4FD9743094E71F8665A4C +:104B9000967E3E12E094B952FB503F5FC34EC5C5AE +:104BA0004F50D09F32CD17BA67519C8FEC545BACFD +:104BB0005DC3B8796FF8BCD2F2D146B07D86C4EA45 +:104BC000396C0AC9C587832CD404726DDFC0790E95 +:104BD000941B8F366A6FBC8779E98145146F4895BD +:104BE0003A19EE734FF3C37353BC28628297559BF7 +:104BF000DE81F0B0B11A07DAC9D91953892E15A68A +:104C000051BD459E4AE339F4BC60E2FC56C0FCA2AB +:104C100071FBEE257DBF18C3E0F4E8185C710F1A34 +:104C2000392F172E8AE8C7D804A6C7BF38FCAC4670 +:104C30003B6BE2FB41CABF1FBE93CBF390DD83F514 +:104C40004DE166941B5E49AFCFD15A811EE4792EA7 +:104C500085D71FF90CE595333F0E3F2C860F9A1F21 +:104C6000E2CFDDDDFE1AD2ED3F8A9F2B2D5B108F48 +:104C7000D6CBB4DBB47AD44F2DFD865AE2CF238E47 +:104C8000F657AEF1239F60F2E30AECE72BEEC70A7A +:104C9000B3799E88E3278DFF93A5D5DE40749F16D8 +:104CA0004FE7BDD03DC6EBFE5574DF9A00AF0D5601 +:104CB000351BF9784393D0E3B9E44D7E739E3C3FB6 +:104CC000CC282E63DD6C8978058C7587E97C495981 +:104CD0002DDF5FE778BBAD0EDB7FEEB62944777A38 +:104CE0003CA2D4589A7B412DFA1B3FDFCCF3629F44 +:104CF000BB8171000EC2828601C86FD6CDEFD3B9D9 +:104D00003C0C53A3DE1C167485D06E1EBEC3C2A21B +:104D1000717EC7A83D492C1A478F23DA334CF53BE7 +:104D2000575E63EA7F7724D7D4BE70D37053FBBD40 +:104D30003B8A4DF5BBDAC69AFADBD9FDFB4760DC4E +:104D4000448F37A7E3DA7AA00776C246E3805A2277 +:104D5000F93D8CD962E3C23AAFABB599BE634D68F9 +:104D6000EF2BFE91183F39ED37DFFFD07D2F49B58E +:104D7000FB8AEE25197AD04979B0160FB70BB2B37A +:104D8000B85CAAAA09303CFF67E00FCD532E571438 +:104D900001E9FBD7BA7C32E0603DDF5185EFD9BE37 +:104DA000E2F431DE6D8968B46F6011C9D156378C79 +:104DB0000BE365DB021EE4C732A4839188F7591E1A +:104DC0006CCF7073BCDF1D114DF0B12311B9399D4B +:104DD000A01D61F5E408E87F817C0AA5F97B80FFCE +:104DE000491BE1CD38BF9E08DFF1E7CDF0CFF807D2 +:104DF000E1DF7FB4F91CE8D5C2DF166E8BA6C17A5D +:104E0000AC3253304E3371413DED17B27A54825774 +:104E10008D7EAF82D5C3CFB126EA8B2D8D2C1AAFF4 +:104E200097AD2BE44A46F982456107BCD7B212E63A +:104E3000A820EA820EC45B8BA7D241E7D52341CAE2 +:104E4000D7AD003D84F36DCDBEC1817EC017E9169C +:104E500086E7965ABD410FCA85D62D5C2E080B36C3 +:104E6000D5E13C5AD3B3BC76D22751A785F29F61D6 +:104E7000A7C543E070F0322AF1322CF1768DCAA139 +:104E80009BCDFCCBF08833F4CB0C27253CD72CD81A +:104E90007FC468EE87A7D76498DA9DDA0073FF3085 +:104EA0003B5A506A9026D18BA54E8F6F229F4A7A2B +:104EB0007E5272AF0FE373798C5D46BA7132AED712 +:104EC0005898D38B11EF94982DC6F7400F392BCCFF +:104ED000F4E24CA4179D3F8CEF67DB38BE560C61A3 +:104EE00074CF53E27C8405351EE42B2F5BCFF0B9E1 +:104EF000D76F9723944150886F24C0D713F05E8BEF +:104F0000D646F24FD2EF69489C67225D5DF5BCAF93 +:104F100092CEBFD11B9DF7A21713E97CA510F6CC4A +:104F2000433FEF1D81F645AC70BC91F51ED847920A +:104F3000F30F59EF613E4A97232B9C3CFEC05CD394 +:104F4000F573C68CF8DF2ACB7ADE5E11305FB67659 +:104F5000DC179D18BF593FC943F6B761AF1AF77107 +:104F600050084F8CD509C4400719E549EF10DE9968 +:104F700052817E16F4D3301E9B01626B3CF8FD1902 +:104F8000F357DE2FC6C5C3D2F3DA581BCCC779E17D +:104F9000318672CB99270BB86E679E7A59F8451AFD +:104FA000597BF565EC1205EF69E9691FED6807ADFE +:104FB00043A9613DDE0FF3B3D17C9F82DDB007755D +:104FC0003801080EDA8B7AB24B74B8B8B83CF28666 +:104FD000615E71747169FFB0E95E13C30E913D7C2F +:104FE0003EE9D57225E6BD6499FB0B19A027EA605E +:104FF0001E5EFDDE99C4F17E8BEBC1FC5F0DDF0F01 +:1050000097D8DED1CB7ABCB89E1EEE65FBE7AF87A2 +:1050100059683D6EEEC765D468AC0EF12BB531947E +:105020007F4EE6E0F30239129FA77556F7BC9E8DBE +:10503000C67A243DBFABAF47D6D4B4BA1EFA27AE6A +:105040000768F2CAD6E3EA59BF24F6FB57F91FBD39 +:105050007F97FB19ADE837C5D1BFED21FEBE4D0AE4 +:10506000B2AC383A11C68834CFE4317C5F86DD6358 +:10507000F6AB6CE14BFC9E707FC3EF51F0902CDFE0 +:105080003F9552A0E8E7C5DA28DE983450295ACD7A +:1050900062F3B947D492C7E84114F29BF01F5E2C2B +:1050A00013ED71C095E1773293FDDDDD8E7E95A421 +:1050B000CB1329E6C7FE53ECF32B2D113FF1FEEB8A +:1050C00025ED36B55E3F4F57EE29A5FD2609F0E2E6 +:1050D000FB9ED431DCBEBF470CA8089F24168AA2D1 +:1050E000C9B542A88BE6A0DCC5D0B98AFB2983519B +:1050F0003CF7BB02EC5FDC1FBBC22D3751DC00FC70 +:105100004859E570910CB8C0779CBE6F84ABB89FCE +:10511000D995E6C1EDD3BBA286DF89FA57CACF6A1B +:105120008A723F93FC4E032F493ADC9DBEA52CD7D3 +:10513000CDF378F87E72F90EF25B815E79FF6AAD8D +:10514000A39B4F72B0FD87E4C7CA39DC8FB5E7D5A2 +:1051500074C4F39195FD347A00ED5C5D9F4A9E80A6 +:10516000A93DC90DFE19E885A482B8B8048BE1DB1E +:10517000A6D3CBC58B717E2FFA67A02F301EC83CFB +:10518000FF5CFF3711BF869E0540D2FECE5EE5C2B2 +:1051900015FAA91345D772E493B51E0BD9956B3D4B +:1051A000CB3DF3A0FE689EA422FE1EF5CF5B4976A0 +:1051B000B787DB8346FBDA57446A4F4D901B9867ED +:1051C0008FB73730CF1EEF3FAD2D9F7A597D991D98 +:1051D00034BF7F4DBDF9FDC72B830F237D0E0A9988 +:1051E000FDBC6B1BCCF6E0F02A6D25F65BE92DEDDE +:1051F000F17B9F546A8F60FBA37E3E1FE6EF195E32 +:105200001B51FE0D63ECFB8D0E2AFB9AFF26BDFFA2 +:10521000137AFFCD8D32953F68F45069C0FD9C52E2 +:1052200013C4BCC28FF0510FDFB537FCF71BD5712B +:10523000F1E86EBDB8B348B787F87D7097E295CBBB +:10524000B94563023FE472EEF01BDDF40D743AF4ED +:10525000E37B2A7F82F8CBB3901FB572DC29F2037F +:105260001EF52F9F857CFE7939E059E97D7DEBF5B0 +:10527000F5F5058756BD9F51770CB005E97E095DB0 +:10528000FFB6EA72D368DF3786E7911C83A15F41DE +:10529000ACDFC3D84F8C7D6F08FBCAD113DDE37E32 +:1052A0009A78FC5FE9FC8C7E6BA52E871CD7DF7695 +:1052B000711DB7F31407E97710575DD7027C6C793D +:1052C00032DD8B117B1EA4FBA6EC791991F87BAA29 +:1052D00000BE35B8DEC47965489D2B73A17FC6B189 +:1052E000CC42C014FBAF31DC4EC8D0F7811DF42E88 +:1052F000A87CD687EF676C417ECCAC31BF9F3A96D5 +:10530000CBE99543E6EDC77E9FFB2D11E6ED7D9D34 +:10531000B893BC9B4F108EFEA997DD2F95D81F2503 +:1053200071343FBE9E91501F90D03F27A1FDFA845B +:10533000F6A284FA9884FE9509F59B12FA4F4DA8BF +:10534000CF49E83F2FA1FD9E84F6A509F5074DFD45 +:10535000875E9893D6137D25D28DD10FED188C03DF +:10536000DB74FCF5468F8FF92B068C45FACEF1F7EE +:105370002779B333A347FB09FE3AE2E3F815D0BF20 +:10538000A77BC962FD237A9C3F70C21CE79F75C250 +:10539000940FE8E57BB171C2445755B5C1CACD48F9 +:1053A000E76E0BDD37919DA5C7E76AE1431877618A +:1053B000610BCF876BB764037FF2D450EC3EBA9D8C +:1053C000BABD686753D230AE606B8F521C42583002 +:1053D0004BC3FBC75A77834E80AE3788E54D74AE1A +:1053E0000BEF19063BA2A5A38DE20AF9D93605F702 +:1053F000710DF794527CE750D045FB4FD94EEEB774 +:105400001AF19C11ED3693FCCF4FF06B3313FCE097 +:10541000ABF573A78CD5FDDC62E6C3FDB7DD7E6E10 +:105420002FF759197EEEE355ECAAEEBDB2D530B296 +:10543000C36C6E1ED799B8A0815E4D3F2652DD56D3 +:10544000CDDBCFE9F0BF412CD88771A2751E1E2796 +:10545000AAF104294E64E0430741773C685D404D62 +:1054600047B966D3E341808730FA39ADAB381E3097 +:10547000BE4AF9330F8FBB65DB02B4CFA715ECA38F +:10548000E580977C0F8FD3B2880E5F810908FFC437 +:10549000B84222BC7B8B674A09F6426FF06F1AABA9 +:1054A000C7333359F1BF12FE428E83E0DB3A84C327 +:1054B000DFCED6517CE873BC47538DDD37D75AC059 +:1054C000DB8DFDC50812B47F1CB60E0DE3072D025F +:1054D000EB5AAEA25EEBD4F0FDE46C91E1FEE494F5 +:1054E000EA36161FA74CF19BE196A699E9383901D7 +:1054F0008EBDC56BAE148E3F1CDB4B5CF89F0C471A +:10550000236EF3C8D8E02F50CEA5875913E69CFA36 +:10551000CFED62FC9E15BE6F794D3E972B6BF2B9B5 +:105520001E32E2662E9D6E2B669E70C4CBBB165D4E +:10553000DEAE427B0AE48A4D0B505EC19A6F532265 +:10554000A88759348CF6A8A4EF6B1566D6D0FDEA6F +:10555000ABB3791EC288FB31B1363CCFC7F18AF9B3 +:10556000655BFE5C8DFA0D642A9E2B5D935F49712D +:105570003627D03D433F46E5FB1765F8AF273BDEB6 +:1055800099B0EFDB36D0BC3F52EA63BFE3DB09786A +:10559000F99CCD0D4B97F1170CBC58FDDABB63E3BA +:1055A000E2045781978F092F11D66483F95CB3C841 +:1055B0008C97D61A6EFFB7D6CCAB8C20FDD772BBBA +:1055C0002209E1C7F35142BC5E34F012D1EDDC7523 +:1055D00068E7027E9E453B17CAEC5BCE86E7E33860 +:1055E000B87F1CF920FBE8CA0A18A425DC155E81E7 +:1055F000FE1FF867C90380FE6BFE125EE5A3FBADDC +:10560000C85FB37D057804BB3775D3FF09DF8D7E96 +:105610005E1DF70B336EFE98A1DC5A5DE1E8A2FD3A +:1056200055BA7DA8E0CC10BFFE2E6A873ADDBBBC20 +:10563000EAE968C00B65EBFEEC49785F7D866A514C +:105640009D0ADA5FF24DF9306E7A814545FBAB7504 +:10565000B93CB506E3EA05928AF72E5AC36D51A408 +:105660008BCC0B69E0623136776C30B31CE156AB02 +:1056700008B8AF31A38659703FCAADE53C4EB1DEE4 +:10568000AA66237C36F493290F5E55AD6423FDAEE4 +:105690009FB4E0DA9ECEC7C7F0A3097A5CFCAACA21 +:1056A000C4F713C7B5B39086F0BEB19C6935D06E10 +:1056B000057F1EE9D9BD7AE0E0AD00EF96FEB71395 +:1056C000DEAD79A914F7C279D6C5F1DBE472F3BE79 +:1056D00005A59C6894293887FE3CFC42A5AA3F2F6B +:1056E000D0EBF9BC3EB15CE1714B4D7F9EC79FF79B +:1056F000058FABFD4EE2F8B794EBF76530C5C8BB3C +:10570000EE4D29354817E31AC1C988C758DC83E72D +:10571000918C380793E0BD94B83C286E7471E3F522 +:105720007236DA8FC424397B661CFDAF9F3873163E +:10573000D2C3FA84F3B9FDCAB93DFFB772C1B83715 +:10574000DD89FA793D68031CD7C0CFF49B46DE5E45 +:10575000037C59B1A0BE12F723B6BA75FE735B285D +:105760000EB9AE86917FFD79F57211CFD594B12037 +:105770009D0B2B611A95C5183986F257BABDF50BEA +:105780005D3E16E2927369BF11D96923C706EFC562 +:1057900075E7208789C81F6A93E4C57BEAA768FC80 +:1057A0005E0F36DD9A853F7EC1FF12E342CBF4F5F2 +:1057B000DC23069695F723783101DE7FA632F000D0 +:1057C000D6F323EB2AF19ABAC7ABB46F62FDDDB50D +:1057D0004B88BE6C3A7D0104292FBC7E8842E7F7D6 +:1057E000AFDBC6E3AAABF5713FF16BFF8EF3DBAE27 +:1057F000E3AFFEE3361BE6CAFD91505512F42FDDF0 +:10580000113880A56F8F7A00C56551BB5C85BFF3E9 +:10581000F14C65B015BFA7AE14F66118286E1E0FC7 +:10582000E378EFAEBDC344E7885FBACF9BF17C97C6 +:10583000813726053DF83C060F7E9F2993029EA9DD +:1058400071E7FC5BFBF58CEF467D1D9BCB8DFC3837 +:10585000936C5926BADB7C39BA7346340D635DD735 +:105860009F68AF44B935B2A36B3F4EA3E07047A524 +:105870000BEA2FF883CFE0FBF3A2AA0D636AF99D30 +:105880006DFBB19F01A7FCBC360B92EF0B7EED596F +:1058900084C7BAEAF5745FDFE7EFC11CBCBDEB0952 +:1058A000292F310FD746EB18F39E390F07F4A96D56 +:1058B000C5FCA11E1F8292FCDDF5A81F042A2D98AD +:1058C0005FFCBC9AB4265B5F5399DC939DDDAEEB25 +:1058D0008BE7757D613C2F32E21A8C758A59BDC702 +:1058E000270FC6E8F0A04E87043F2546E787E3E987 +:1058F0003CBD5A1550DE1878AD8FACBB61008C975B +:10590000BF4D29C2F8861A95AB1034F5DBD229DEDB +:105910007F54C7DF27FE4007C9FB6A85F23B6FA1B2 +:105920005C8AA3F3672AB537B01DE8EC1896C6F871 +:1059300089E319EB7B5D1F17F0F316F607BE3949B3 +:105940007C136DAB74717A7D1B9F2B4C21BCAD3BDE +:10595000CC648C23ECAA3E1BC5737E9FEFE0726083 +:10596000B8BFB312696A941ADD6F81FA887C85F634 +:10597000A526E6C98B0F9BE365403F1FE1F877E65C +:10598000856D7CBF7E9B8DE8FB0AED07EC996AA6CE +:10599000E72F2E2B47AF70DC41A303FF17E1A08454 +:1059A000DB884FAF783E5769F73C3946738EEB176B +:1059B000BB479BB97C267B36751CC7CFBFEBF6AEC9 +:1059C000D51F90B13FABE67ED1D57E0FDEF78C437D +:1059D000FB4C0BD0B908B0BBAEC1F1D23B8526ABB6 +:1059E000B7077B58D5ED6155F7B33D7C1F0CFCA57F +:1059F000A23F67F81989DF5DA5DB5B8FE871C5B64B +:105A00004685CAF58DF954AE6854A97D6DA39FCA29 +:105A1000EF36D670FB9905C9BE5B53C0E37F8FE0BC +:105A2000A64D8A5FF13CF5507698E26BFD8AB87D11 +:105A30003E71E661B2C71FF1EDA738613F5B1BC540 +:105A4000E3D7801D86FE211B182747F02ABB91A7AC +:105A5000B43BF53C374A046126F7AFBE3B88FB4FA9 +:105A6000B6826F8673E07B47C05F1240D7DB7DF75D +:105A70003053FC3F613C3BABAB7C02C70338215F3A +:105A80000C3D787725CA2363FE97E0C3AFFB4FBA7E +:105A90009F9A517DF9FCB72DA10EEBD6048E07928B +:105AA00067433FFE6D8FF146A9D662E2B37EA57CC7 +:105AB0005F4BA2FF6294691E73FF350595E4A7183A +:105AC000DF5959388FE2B2B82EC4FFCA111CDEC6A6 +:105AD000FBB6DA0479ADC5F139AC738DEFCAE29D3E +:105AE0008FA8BC9F11AFC2F8557CDCD3C8F741BF6B +:105AF000BA169C9FCC28BF6BD8DB2DF86FB02F4017 +:105B00001DB2F87D7456D93CBFBEE693181FEB2B2F +:105B1000EE66CCCBE827491ACD5BD2F3AB43D8096C +:105B200007C6C313E7B15EE7EF35BE79A4B73E07FA +:105B3000F8A25E5C237550BC17E05D139F5F4F8C2D +:105B40007FAED2DF7FCCAFAD473E1EFADECBB47F57 +:105B5000C6E00F433E18F031F281DD74C2F87CA834 +:105B6000EE8DC98BC7D3F9B9AD7093C4B6BBE9FC50 +:105B7000099D47191EB6CB78CE395CC9CFAB846D71 +:105B80000E19EFB57B2C3995F8B4E1640AF1D19781 +:105B90009670B015C6FBF1382FFFBD2841A3FDDF7D +:105BA000C325568DFCB5B2846D5D4EF10AB6C36255 +:105BB000B6837F8CF22919E386D05F047717F5E46A +:105BC00066FD77172ECDA3B29D962C5DBE811CDAA3 +:105BD0003D4E30F284BBC7C5E5098789819F237C90 +:105BE0003EB406B2F6D17B71F708C1773CB7F1FB42 +:105BF00030D87046FB3E9212FCE7C47B2C12EBAF10 +:105C00008FE3FA3FBB7B7F772409E17F6E07DFD705 +:105C1000CDA410EBE91EFA96C6FCE3D571F93383E7 +:105C2000DE3F181B3C82F3B53514E8FBBA4B69DF45 +:105C3000F283A3B5D7681DA3B50E5CDFDFF0201E8D +:105C4000949E3BF8BE86E5C9B7B3F8FCFD9F75FA94 +:105C500088CDAB3D09F9F6473B8BFAE047D5342FA9 +:105C60003BCC9FFC83061FCD03E6770ABF6F6D1800 +:105C7000AFEFA30E913E990DFEFF38CAEF68EF9982 +:105C8000E6F735BE8F6479F22D2CDE9FFBBC17B88A +:105C9000FD70C7E5E7D7D2A898F6791B70FBDB3813 +:105CA00085C72D1BF2689E52C3487D7E4C95CC76ED +:105CB000C2DFC65DC64EF85B9976611CC155EDC466 +:105CC000738DEC4736FAFD3A3BD3F441F87D22D68A +:105CD000004BC7F3EB36E49B5C3ACF40EDC92C4A4E +:105CE000F514D649F53494F8504F1DCFF9211D6FA6 +:105CF0007811317CA8523F033E0E7788CE99B81BAD +:105D0000646139F22D30EC58F88ECB3590DFE35AD0 +:105D1000090E8B1B0773D07C851D87FE2A9012D637 +:105D2000CF4338AB858BC9313E36CE8DD9C212E810 +:105D3000B2BECF957D4B0C075BBCC8BFDA2C9CDF95 +:105D4000303178EDF89218DFD8A4B087FF8E8999AA +:105D50007FC4946D64375C2DDF807D791D8EBF49D3 +:105D6000D00A5FC27965DB7AFC3DB0EAF19C4EDC7B +:105D700037723A6F9DC4FD9CD60A2E174AC7737FAF +:105D8000D63F9EF3FF18BD7FBF715A098E3F653C19 +:105D9000A743FB38AD6C7CBF587DF7586D747C3BD6 +:105DA000FC55639E51F2717A90A6EC65DC2E65DBA2 +:105DB00084383965C825A0A32A7CBF5B9ECA11829E +:105DC00083319EBB8AE315EDAD2971FC1FD0E76BD3 +:105DD000AC07EDB9F87C6977FBCD7A7B8DB97DCACC +:105DE000788B6E0F6A53F0FB9F956953C7933D3CC8 +:105DF00097EEE510C2B9FAB9184E07B4C7241BF3E1 +:105E0000CE8159D8CF39C447FC659489F0FEA4529D +:105E10009B3B9EE783783C36BFE7FC8C0DF3C0715B +:105E2000F71718F91E437F8356A47BDC7B7B3FF674 +:105E30009E41AF232D1301FEDBBD12D99DDB85C032 +:105E40001C8CB385BD9CFFD6E17E3CF85E3AEEC764 +:105E500003FE7E445FD73AE37C566112C5430213CA +:105E6000028B7723DFDC9CA42E872EDBBFD74AFB77 +:105E7000029C5E07D90BAB2A387D2CF3D6BC3C03C1 +:105E8000C6754F99E6C4B2DF8C3B27E1DD5D59B39F +:105E900097ADC23AAE6F3E7CA7FFD79B5FC6E79E29 +:105EA000BA0DCE99F03CFBAEAA348CCFD9585B002A +:105EB000F79BB057F8EFD84DF24A81787DBDA982A3 +:105EC000E3714305A74BDCC775B93853C4CAE95A17 +:105ED000AA0A2D8DBF8F6CED78919F2BAAE4F37EDB +:105EE000A2F1B0BC02E4B3CDF3DFC7AAF9F9433A9B +:105EF00067D42A81AB87F9F3B0430588B26B444D70 +:105F0000C1739DAC99DF73BBB67CBD23FEFB4F6BA9 +:105F1000D9FC3E6DCF113E4E58EAEA8CB3DB7E30A1 +:105F20005ECF33A94C457E95326AD22E377F635EB1 +:105F3000F8D77DAE00F0F144FD59D6E2A3BC7A0853 +:105F4000E3A303A67F41760553F83E9896F44805EF +:105F5000DA73CF79A5D0566AE7FB1F07045AE977B1 +:105F60006ED2EA13F6BBE8E74890B4789095EF7FDD +:105F700049D2BF97A2EF7732EC9AB5EE08C3FB4443 +:105F80003BEF7429740E3CDFBC0F667FF93C07DAE7 +:105F9000BBDBE139D2DDBEF17C5FEF76BFEA44BD09 +:105FA00092941E588D7994A4C939962640E53AFDFD +:105FB00077D9B6075427DEFFF6E4BCD03D88AFD6CC +:105FC000DAA249F8BB36DB363301EF31DCD656B9FD +:105FD0001AEBB689924CBFE7A571FC0DF3F0DF0711 +:105FE00069757438B2E1BD35B59549D7B9B09DEF43 +:105FF000ABDC260B35F1F7410DAC579FE1F68EBABD +:106000000A7F3FC35E5E2462BC2ABFD2A6C7F12EC0 +:1060100038F0FCE373214946FB6B5DF27792F0BDEB +:106020003C801BEDC7D6E3FD425B05BB48F77E57BE +:10603000EFC7F6349F4D417B332D64CE0F38721A73 +:10604000C84F3A8FF908C44742BEC0AEFFFE50E2C7 +:10605000BD09061DAC69641D2BAC979EE3F860BCBE +:106060009E57505921EA8D89E2C9195FC379D75BE0 +:10607000E83E8DE758644D29D4CFD74B44BF4FD667 +:10608000EF7EBD14D6B9F9A197D2716FFF53A1DF8E +:106090004DC1239F199AC856C03A7EB0E2CFEBF0AB +:1060A000F9D30D9FBF8ECF5B8575814A78FF9957D5 +:1060B00045B509EACF008174501C4D23FF27458F59 +:1060C000E7B4DA005F717CEA9FA0EB0FBD6C6D3C1A +:1060D0007C0CED9F48630DAD634D63804AB9A1AA66 +:1060E00003BFBBED70600EFA612C9CC69207C7F22D +:1060F000E02E91DD5481F71F4CD8FCB4C30934B9AC +:106100002F23A9D6A8A35D7FEC6860B21AAB7B876A +:106110004C7BE299B8F6ED82B63A17DA0B58EB1DD4 +:10612000D54EF48B0327E6C377CFCB27C202EEFB15 +:10613000CED8437647CA086EF32615060328F75CC7 +:106140001B2D44F7AE82402CAF4EFF0FFC18AF7FE3 +:106150007D66FE66FA3947834F2B23761A3FB5C614 +:1061600046FEEC3AD7FCC07500C7ED79FC77388065 +:106170009602F1FB815375395A3041DF4FBAD11283 +:10618000B6235D78007EA679E87A29FA1943BD64C2 +:106190001B32AFAD02F9FF7B16FA7DD44439628C15 +:1061A000BB7DE3D21EEF2B36E691F81DA3BDB4C232 +:1061B00088779ABF9B5877E4D46B77F9F8FE40CC88 +:1061C000BBD903F55A4B9C5CB24D7F90E494B15F10 +:1061D000CFF0A3C8E402FA4D6B4826B9690B7C9353 +:1061E000D5423F4F15BFCF830D0C86F11EAB543DFA +:1061F000DF3331C7A3A17F91A7E717D7EE9F6D517A +:10620000008743A490057FF760ED980E86BF9795B1 +:10621000E2EF62F8BB76C3CA3BE8FE759BAF239AF8 +:1062200006E3E46E640ABE57B351B538916F5F114F +:1062300019DDC3C9C274EE7ED846FE7B38A93E1074 +:1062400030399837F6D3EF62197976E033F2FBD321 +:10625000566895181FF16A8E2EBCFF6CD84A2E5FC7 +:1062600072CA199D8331F2C7C374D1336CE317D15D +:106270007A683F047280F6396CD6EDB7EE3CBBF914 +:106280001E95BC04FB2F4D3FBF9096F0FCEE0966B7 +:10629000BD12D17F6F51615A12EA31857538AEE374 +:1062A0007A95F5640F1AE50F1BF9EFB9FC67A38324 +:1062B000CA9D8D32FD4ECCA9460FD5BBAA2A1F9888 +:1062C00080F2F470680ECA77835FDF5D9B361AE94F +:1062D000EA4E31B21CEF29D8FD9BB7AE4D027EFBD2 +:1062E000D1C053532B789DF8F13FA3CF67D4AAB107 +:1062F000FACE63FBA74E8EABFF24EF00E5AFA89E5E +:106300000EFEEE5336BAD76005D4C1E4663FD6E33D +:10631000F1A3D659025B51AF6738E85EEEF33E99C0 +:106320007E6F41CA8079223F5F97B105F979B7CE78 +:106330004752600A8FEF25F22F92A0B13F9CE13EB9 +:106340008645D1AF7C7CBF69A6E752FEB6EAF0B7BE +:106350007AA4BFC4CBF7C713E07F9E95DF5AC97AF2 +:106360009407E4D71BF2404C713B51FFB734AE2485 +:106370003DDFED8FF5B315C6DB05D6D4D0BC9EEE60 +:10638000A59574FB657895B66342BF98DCECCD0E9D +:1063900035E45FCC2E0DBE80EF254B1119E3CFC93C +:1063A0002A598E3DC83D339F03AD53DEEA99361E10 +:1063B000A75BF3C854F283D7B41DA5FDE6DB3716FF +:1063C000AD767139D08EE3AEED0756FFA8ABA73797 +:1063D000A39F415F46DDA0B394A84D89A733A8478A +:1063E000E2E9CCA81B7466D40D3AA33AD2D9384E50 +:1063F00067AFFFC61609E7C5D1D91AA0B382BEE9B7 +:106400002C45E3F2F15F4D67EF4FE8D6F7FF4FE918 +:10641000EC17FAFA80CE98D6AF77F9F18F96FF0B8A +:1064200009361F1D008000001F8B080000000000BF +:10643000000BA5597F7014D51DFFDEEEDEDD26B9F9 +:106440004B9690E091066673E4C70151B618214A55 +:106450000A7B7BD14187B647AA82943F0EA423587A +:10646000ED5C756AC38C724B4230A42049415141A6 +:10647000DD844B8991525A6BC599B69300D3E2B42F +:10648000A37144261D9D4E04C7696D1DD14A6B67DB +:1064900052D3EFF7BDDDDC8F5C428861C837DFF790 +:1064A000E3FBDEFBBCEFCFB7E160FD75233E80BCB4 +:1064B000AABAA218D231FA5995A23F494487B7B86F +:1064C00053FCC746AC40BF09A040B214B10EA906A8 +:1064D000600280AF16C78580FD8CB1DF1B950F175A +:1064E00003B8063E8531A4BD4A345F41F9BD75C28B +:1064F0006A0BE9AD22FEC2F9BDA6D2EDAD404A530A +:106500004A00E467946E13F9D7560900B84EA43ECA +:10651000661CC1F69A06C1A271F24A81CDBB520730 +:1065200016B868925E38770EC062BE34CADD1B238F +:1065300039BD7B3DAA17FB5DC153A7B7E2F8E45C08 +:1065400011BC0A405F0260A006A010540116A05CB6 +:106550006B04B6617FA8DEABA878167F7204069044 +:106560005F18F3C57525B5AF7DBBC03269BDE3D2F9 +:10657000C5113CA78CFFC682D41915A27E1C6F6181 +:10658000BB9C3A7F559DF0BEF706A490D65E41EBCA +:1065900066F24B757F09E1041A686322C0138953C0 +:1065A00070290DEF423CE0C9DA89F7723962D4EB09 +:1065B000A5002AE8F9D1EB717F9D4D4590639C437E +:1065C0009D733B7C28193772DDF77E1D0F89728F12 +:1065D0001A7A23DDF335ECE70EDA4FF25C7C830B9D +:1065E000F102B3080AE6035CDA5F7433AD73AF6897 +:1065F000B5B810CF0EFD56353F0FE0A5F28B4D61BB +:10660000CE5B32E27062E057C56BB4147FFCFCE9EC +:10661000A66FA6F1BFA83C8308D9FC2C809F3FE75A +:1066200001B805E01EE44D097917AC3F89EB2CE970 +:1066300012A23D48A562D9A47D7C5EA7748B15C4C7 +:10664000074047DEBFB0B85B74911C819D538AAE92 +:1066500005C20FE09CB2CBD15F91D3D165001E5B28 +:10666000AFDCF0C0C017A817B20BE2B303D85027B5 +:106670005D1EBFC720F5EFFD54C4FB7607A48FD283 +:10668000F5E00759F7FB39347CDBE0DD5119F5B64D +:1066900088FEC2FD199697E975E16A8FD581BCE83D +:1066A0002FC98B21CE6D89766557550AE7B652CF33 +:1066B000D76369F8BB0BE39BA339EEC3D2B9FD2CBA +:1066C0008EE88FD1BD84AFDDCEDB69DEB5DAF9C2ED +:1066D000E44EA10C5BB7927EE5D857C4C6DD2742D5 +:1066E0009CEE2B1C6CCEBF88F498A45D578CF419DB +:1066F000D2BF9B26CEF3347F6778CBEC345E8A0121 +:10670000F9134FF3DDACFDAE95FAB3B45FD08A0157 +:106710006E9EDC0ED82948BF5702A36E4F7C432ED5 +:10672000FC7684F93EDDF9886F0EBC9648461FD989 +:10673000C7EB91683F51445C253F8078BF44FC0C17 +:10674000F0FECD4CFC6A870E0CAFC9CE215EFD1C5D +:1067500083F639CE649DE3EC0CCFF1E64CF4C66FC2 +:106760009F43AE0618C27380A4317F160EAECFA72A +:10677000F50F1BD13BC80F1F7BC30D3DA822BBD11A +:106780009F5D74E7D293B5C35B6ECCA5277766B4E3 +:106790003F99800B8D6E9223333A478AB98A71BD37 +:1067A000AE84C2F84389C08546B4BB7D0995D12328 +:1067B00089106B3F90D018DD9FA867F49984CEFABA +:1067C0000F07E3F713BEB41EC9997327CA4FF3032B +:1067D000DE809CC11737E23A697804360632FA0B3C +:1067E000EBD48CFE79F150065FB246CBE0EF5A193C +:1067F000FB9270571AEA33E4946DD133C64DD73EFD +:10680000E64BBA14667A032CFED5CC078B70F7865C +:10681000CE0DBB3008784B3C26F93B2897FE39E279 +:10682000C80F327D2AA079A84FFE709A3E9DD1B93B +:10683000BD3D2EF17B4C062485E27CB292E70367D6 +:106840002B9E1A267DD9D7190C52DCF622B6E4AF5E +:10685000BDB3D41E1AF74098C7A5649DA0517CFE15 +:10686000FCBCA861F003097C6C1FDEC0B9F3E9E74A +:106870001C3F8F327C7E579A9F6E7E6F9375360DCC +:106880009F60D857F26141CA3F5F21FFAC4E8ECF67 +:106890007F1231EB6C15E90DAE5735F9388F1BF3CC +:1068A0001DD483DECAA63B16E27ECD80A455A96C1A +:1068B000D9B33EF4FB148368FF7AA5C0F0F5D7AADC +:1068C0003D1DD8B66415F77FF78BD19B08BF7C8838 +:1068D0000F006BE7F8214EAB294E240F0AC0F2A639 +:1068E000867819E9DDB12EA30872D8A7435B138817 +:1068F000430E7B19F7131E88E58AEBF785791CE9AF +:106900003DB894EDF37115E222C6DF5E291E65796C +:106910005639BFC7DE06AD8CFCCFB17D9EF5749FA6 +:10692000AD837B40A5B8AAFAE0529A7E7C375CC161 +:10693000E3AE2FED5EF0FF51DAFF14F9CB34F6CF62 +:10694000F2815B075FB64C1F13FB673FE1CC9740BA +:106950003C639B482F53788345783BF85EABFC6CD7 +:106960007DCBF667F5F67DC1993C6D00D793505FFE +:10697000F3E8FE954C3CBC9D82E9CDA1BFD97AFAE3 +:10698000E3AFA8A7A130B07B44BB4ECCD0AE77DB41 +:1069900076DD4ED4B1EB7EDBAEBBF230FFCA717F49 +:1069A00003B6DD76F9797E56750E421545A9FEE7E8 +:1069B000C25CDF9B572A8C561D34558A33D3F5535E +:1069C000CE385C294479DC64E3DA5DB9F727185CDA +:1069D000BFD1CF977D8038F5865C9667094E1BC581 +:1069E0007ECCFF2A29D71353750B6A50D95A3FF131 +:1069F00012E725E471DDDE7ABB5F7678BBDFC7C7BF +:106A00003BEBBD6C9F37F93F91E191BD9F576DBC4A +:106A1000BEB520FE10D9F560D76D65941F252B7685 +:106A2000AB828F70E2FBFD97FA87AD109C1C274F5D +:106A30007378B8F1C6741C2C362F150F1B597F7B49 +:106A4000C5B29C71DDA1DEE677DFA1719EE67FBC59 +:106A5000D388799657C2FC9FE607A2C2265F0AA791 +:106A6000242D81F5D49B76BEE1E904DDCA817797B8 +:106A7000ED4F3C785FCC3847EF855728AF1620DEC6 +:106A800081B98227BA6F482C4CC92DB4E57AEEF44F +:106A9000BECFF4126226C509AA43FC53E87F61A564 +:106AA0002674E2FE168CAE13C82F551D1C8118A348 +:106AB000DA94E73D98809353F9F5123B6FA5FD8971 +:106AC000B8BFFD12B7919286B8703BCAFF242CB3B1 +:106AD000F3D504F8F94BC676AA6BD3D60383DF6FE0 +:106AE00029C9A94DC949DA724A3B8780E47C61CB48 +:106AF000F1931C9C5F4A726A27CAA9AAE7EB8086B9 +:106B0000FE792EF2525428CE813BC04E6E5FA8A073 +:106B10006CFF58B7929ECA5F8ACCAF35AFFC246633 +:106B2000D6921D68651FA01FEC09C394F971A1E1FD +:106B300072FC499EC1E27C1CC81F5CCD8F4C9187C2 +:106B4000161B3C0F2D31D2FC0BE6A1A5C6CCEA17D3 +:106B5000D598411EFA8AE3B7A7E97F5A3A5BD41663 +:106B6000947F7448D4BC14C7A4A1BBD6217F6CAB5E +:106B7000A0F5102F5BFB9651FFD6126DA79ACA5B4A +:106B80008FEADD4FDE8DFEF7DF0F0A9A89ED5F7B1E +:106B9000F0CCEBEB08AE1FBE9DB70EF9793FBA748F +:106BA000FB7AB63F5314D007FDB579C12FE91CF32A +:106BB0005DBE38663E784F3044F1EA33F29BB88FC1 +:106BC000179AAFBCB55C9DFEBEBB0A0AA5515C5FBF +:106BD0008C8145F9D6A182950394573CEFF7A89490 +:106BE00057805D9FCEA5BF5C1C2FD71C7AF70096FF +:106BF000B70CFAAB4D8A1FADDB809DBB75BB87C55B +:106C000093E74BD1D1E0FC6A299FF1AD0160F5AC6F +:106C1000173A991D3FEFB7DF6F427CDCFCDA212089 +:106C20003F369FF41FDB7DF560513E5144AB2EA0F3 +:106C3000B8CCDF2D0046EEA1FE5920681D2457D2A6 +:106C400055A98E28583B717C6BAD62DE87FCE178DC +:106C5000A126203EC5A0B1F9B04867FE5B84936CC5 +:106C60007D8047151647F32EC15841061E40EF059B +:106C7000C147051B8F1B4ED37AAD7B381E6EF9C4FE +:106C80006B2390850BE1B0A7FA24C5F79E6D3E8675 +:106C9000438FDFA3ABC46FF7B1F3F5548DD7333215 +:106CA000E5670FFB3FEBDEAAB2C91B48FE61173F49 +:106CB0000F1336877072F056A4EDD4BF99E729AD53 +:106CC000586F6CA922BF69B2734892B69EE64B8892 +:106CD0008749B4B9E102D5C1EEE6DB1805A37330EC +:106CE00086ED2EC483FC2AB3A865763EC47E292691 +:106CF000BD8BE551BF427910C7C707438C16C265EB +:106D0000461550188ED978220CF6BB8983A7E84A1D +:106D1000C7D3733AFEC208CA175B24E8C1F3994689 +:106D2000FCD808D116AFD25A42F8EE60FDCD92AC35 +:106D300078717F4F1941E64FD08F2CE772E34B8873 +:106D4000AE32F427B93FE0723719FAA174DEA1130D +:106D5000E25FE04FE71BD3DE0B764B5A1EE5E307FD +:106D6000D6FC544E7F9770E2A2C3CF0EBC719EE258 +:106D7000DD51EA423BBAC1BA6C50AA54635A2D9411 +:106D8000BF5527B9BF5DF45B4E6B4E71FAB221B2AD +:106D90007D1C3778FC73F8C5ED9621E3BC8A24F797 +:106DA000E3CEBCC5E3F3DC6CDCBBF6BC770D8951EC +:106DB0005770ABF12CE274E2775C1FE5DF37B1FC72 +:106DC0009E050CBCC745F427D367FEFE793DBF6224 +:106DD000903D97593D6091DD903289EF9DFE3ED9FF +:106DE0005B4004F21B21F3A4A1D2FA7D9D868CF2B4 +:106DF000171D01A598AE1561247B558FA3E345BDF2 +:106E0000ADD975523090AFD6E5CB3AE9CFAFF9BBEB +:106E100027EAA68BFCB83A2A327B0D1E01CB227BD7 +:106E200037ED7EE07EB51AE22DB46E45BD571950A0 +:106E3000E87D36AD9FE4DBEF653559EDD979EF0597 +:106E4000C3CFF3DEE5B09CBDCB891BA78CDF4EDE44 +:106E50001B324160F96D9F6055D0BBF18B17F3A9D0 +:106E6000BE108F5802C511D85BCC8CF8445F74CA31 +:106E7000BAA9DFC6F1444266F4784261FEE86222B4 +:106E8000C0F8BF2554C67F980831FA514263F48395 +:106E900044BDEDB7B87ECA2EAE4F57AB1BBDAE1882 +:106EA000ABAB60AE04BDE487D53A36CFA9FB5EEC50 +:106EB0000B0AA40FFD0D6659536DAE3A84C7F9BE97 +:106EC000DEA9EBA99F51BD33C53EAAA9DEA1873C2F +:106ED000E8EC1E4039FD7D9B055ADFA9FFFAEDFA6B +:106EE000AFDFAEFF26C81F5C28B0FAAF1DEB9DB424 +:106EF000FABBBF4165FA59F37466FDD7D35DBD6136 +:106F000011F987B744CC51D84FB91BF5BAD5768D56 +:106F1000A9BA4DE9267F5816E1F68275725924AD5B +:106F20004E9EEEB9D4332D9B28DF0172D673277F96 +:106F30003FC88E9BCEF8ABC557E7BEB3FBAFFE6E26 +:106F400060B2EF247DF6BB489FF590BCA936A5073B +:106F50002BEC738FEBCB84FBE7EBB7573CC2F4E52C +:106F6000E16E81BD35F48DBFB33CC2EEADAFBC5216 +:106F700060711EED69732DE1A60F537CD9F38D78F6 +:106F80007E138E5B1FA9607A542DC5F3E95EAA8734 +:106F900044815C4475F36DECBD15608B40FE397B1C +:106FA000FD6AFB3D069E9EFADD656DE4ABD5B3DB65 +:106FB0002290515F573BF5F5D359F5B535BDFAFA37 +:106FC0005EDACFE299EF67F2FB8CB3FB3C66E3EF4E +:106FD000DC23FE8C52DE3FD93B106E6480F8FC72DD +:106FE0007569479A5DDF2F2A197A385D7DDC35494E +:106FF000FDBB2BE2B2E36E398FE38487989A570783 +:10700000DA08E517DEA84763FB30E226E18DB3E23C +:10701000943764E7F794317C8FF2113BEF70438C27 +:10702000E50BB29DFF4D3FCFD0ECF8C6EB0A8006D2 +:1070300096A7435EE6FE1CDA46DFA9D2EE819E0FDC +:10704000A9CE9177C485A634FFFEAA7DDEB684EC76 +:10705000A2F13503DB4045F99E12CDA5E3B8D9F680 +:10706000F72DB70AA709FF0381600FE5AFAB461301 +:10707000F94DD7A7E61F082CCD03964F344D198F35 +:10708000DAECFCD519D77644D0C92ECD351EAB0A23 +:1070900045B549513957BD762AA266E4259E1201AD +:1070A00006D2F415F5632EE122074345B9BEB38C31 +:1070B000E320BF7D9D949607B5E5C5CB347AA773D1 +:1070C000E7D6873F463CFC7C93E88BA3878F39F655 +:1070D00067E3DF617F7F1BFFEE56AEF6F0EF6ECD0C +:1070E0000AF997B723AE0CBF35E17B5B79E6F7B4BD +:1070F000C591E83B111C9F57B1AC68B33AF93BC549 +:10710000C786FE9708DB07CF2304D30563A46782F5 +:1071100036A423CE585B68F40D57CEFAEE0AE9790F +:10712000873891FFBBBDDF0975AD8EFEAD3097DEB0 +:1071300067D98F6F9ADFA1480FDDA4A79781EAEC8A +:10714000A281FF327D2CDAAB0BA48F95B61E3BFAE1 +:10715000986C0832FF907D1FC90683E537C9CECFF2 +:10716000CE8CE1B82B0D8225BAAEAE97C94E5B2FFF +:107170001BB87F9A4C1F5FBFAA3EF2F358F4279EBC +:107180005BD938C7851918CC1AE0EFC0B21ED3E915 +:107190003CB324254C755B7B4568694B9A7F3D7CED +:1071A0008B51DC58CAFA5DE42F67A9DC0E99A7A1C0 +:1071B0003AA5B1B8BB232DCFF035F238D8D5B87485 +:1071C0004AFBDB9D880E917F7E22A10FE5F2D35E04 +:1071D000FB1DA66BC50EA077B6432B7630BFDB3EFA +:1071E000AF3A48F1B1AE31F37BE4E0BC470223385B +:1071F000FEF18ADD01C2BB7D703BBBAF7179F63910 +:10720000D1DFE902F9CD76EEBF0B573C1AD8EC9BE3 +:10721000286FFC1EB3F4E9E67ABD8EF0E8F275EA59 +:10722000B49F2E5404CAB3BA4CD76AF67E632ECDEF +:10723000D0AF40A390655FFC3EFE0F5DA57900E0F6 +:1072400021000000000000001F8B0800000000006B +:10725000000BFB51CFC0F00309DBF1A3F217A3F140 +:107260005B7951F98C687C0D34FE1A2E54BE119A4C +:10727000799168EA49C51BD918187602F14136544C +:10728000715506082D0CA55980B422929AD3CCD8FA +:10729000CD2B5480D02240DA03888B80788238034B +:1072A00043AF2403C31320BD409C32F7A2E3365101 +:1072B000EA9A378A49C3A6AAA8FC0C03068639862F +:1072C0000C0CCF8C207C1D24F97F40B14C03087B33 +:1072D000871603433590AFAC8ADDDC9D40F91AA0D8 +:1072E0003CBF317EFB2F5BA0F203D1F832AEA87C0D +:1072F000663479B56054FE925054FE9B30080D0000 +:10730000264BDBDBE803000000000000000000006B +:107310001F8B080000000000000BED7D7B7C54D526 +:10732000B9E8DAAF99496626D909933060127642F6 +:1073300080A00127902020AD3B21D0A0A823A2A5AA +:107340001670406AA98A0E94D6E041B3F30E016D1F +:10735000F0A0A2200CF141A46A530F28B5F5FC86D9 +:1073600047A95A6E8D965A54B0033EAA1EF1447A2C +:1073700014CFBD58CEF77D6BEFCC9EC904A2B7F7F2 +:1073800078FEB8F1E76FB1F67A7FEFF5AD6FAD71CA +:107390008A13993682B133F8770963FB05C65845DD +:1073A0003C35AA0251560EE9241668844F4F88A135 +:1073B0003496C39847EDD6B10A53232CE8654CF2B6 +:1073C000848C3FF8184B63AC57CAC202A6B35CC6A4 +:1073D0009CF82F8D31590DE9D84FBA0E75CB185343 +:1073E0007CDD2C540A29DBACBE7F016322747966F4 +:1073F00008563618F66F54C50C29715C3F8D3BADAD +:107400009BC958CD658DAB0957C0B83946E2B84322 +:10741000FAC6D52A71DC5C1C17CA87FA8C7A09BEB9 +:10742000CF9A172AC2F50D9B161164C8DF33E559B0 +:107430009A8F17E7E3A6F914DBE75338EFF6AD317F +:1074400018E7334366EDD05FFDB7C2DB312F1B4E2B +:10745000B5C187F30D6F8DE17C1D2EB531C0D8030A +:10746000EE0C86E3D61EF1469C00A875758C45C7C8 +:1074700030D65EE76251004A5B9D4AF9963A3FA5D5 +:107480000048E32750FFD45431D20EF5651FD3BB1B +:107490004B6D69314F0D26105E66B1749AD74D98C9 +:1074A000CFC1A5065CC171B00ECF9C4C561AC76700 +:1074B00072EA0D882C5A42706267E07F77493A8BF6 +:1074C000BAE2F9342D3B21EFF40F4FA8CF581EC17B +:1074D00087F212CCDAA41359D65900E729C33C3DF0 +:1074E00000EBCCD9FE1B6DF398C224AA274995E185 +:1074F000207C6F12D8BC6E5BF95E843894FF89B92A +:1075000028BDE4F4950203B836FA58A4BD10F0EE95 +:107510009D6344013EB0DCF02815529FFC71CC9A6B +:107520006711942B5135BBF49B8783B5BE4B4E5FDF +:10753000E29A332E3EDE36136FE95E3118F1E03CFD +:107540002341A48FC61259C4F57D73F32DEB45B8C2 +:10755000CA431C814EAD3F5EEE41BCE420FE5C940C +:10756000025E88AE2DBCB47B385E804B52E2E53AB9 +:10757000A652BB7639E2CA36E1827CEB453810BEB2 +:107580007A8284E7728083F00DC2A1B16A5E10F046 +:1075900022B300C14351474F688722D13D2D50028D +:1075A000F36BF68E2E92048403E7B7C67A711ED26F +:1075B000B935AFE47527C3F1EF26FEFFAD0F8E1C82 +:1075C0000E6B3D620D8743770DC1A154FC46E1600F +:1075D000CD6B1DCE8BE8345A43F80E88DF2C9DBA54 +:1075E000F579A9F8CAC2C7DD7D70ECE1702CFF9F68 +:1075F0000147771F9D77733A2FFD66E9DC9A575B49 +:107600001FBC0C0E2FED9B8197A55F992B300FE7C8 +:10761000B15475684867374B866311CA7BB7C01E83 +:10762000037D8ABCC786011F7A1A5ED734C6260935 +:1076300069BC9D343F3364E3C3A5601CA813206577 +:10764000EB7A2450C12CA2F4DAF9B2F6C8ABE3F716 +:10765000DBE65324787D349F8BD845389F93B0FE6A +:10766000281B78FD1FD5F596C8A3404FD7F58CDFB2 +:10767000AFF42FBF596261E47BE6EA76D07A5677A1 +:10768000A4B597E1BA465777C07CBE2570FE671E49 +:107690001F122FBBB9EBD312D9369FA51EF1983319 +:1076A000C5BCFBE064B50373C299DDBFFD40ED3698 +:1076B00008A14A01525D0ED6144217AE3C16680767 +:1076C000383ABA2AA3C359BCDFF8BC41669BF366BB +:1076D0001929E6E91BDC3C0782A355EFA4A7A18585 +:1076E00041BB4625F0A206F86ECA11030D2C3EAE32 +:1076F00085770BEE8D9E865C3BBEFBC15D5A3713D2 +:10770000E7FF19334AD0CE84FCE8A5F0FD0EA4971C +:107710008A14F338077DDCF8DF4C1FF502B77FBE13 +:1077200001FA68162AFEE7D187522B69EF821D5EA7 +:107730002877905DD75C3CC7407DF419D0000339B1 +:10774000217594D1FE04E614788C0FC344D4DFC5B0 +:107750003AD927E92CC0B09D531313E492EC4F940F +:107760005BFE791D51AB5F5CB752EBA071713B8141 +:10777000F252F6B0681AAE8739489E21599E19898F +:10778000FB9BB5AE221FB523780DB41E19DBC17863 +:1077900002343C5388EDBE9F191C77B6F5278EE363 +:1077A0009F1BCCC4790CB63EF3C8DAFB36B80FDCAD +:1077B0004E66EF5B7803FADE6BEA090BFEBAB69809 +:1077C000E4B28B8901DCF734FA7F6AE0BEAA8571E6 +:1077D000BE5C63A6AC389BF0B941D0A89DE407FC21 +:1077E0008FC759CD8C627DABFC5CF82E34F9FD0659 +:1077F00031F82794579D39AC431A1FAFA7385888E2 +:10780000F8A7692ED5EB5CF3D3A800F353EE50CB69 +:10781000705F57286BE95779EDFD36D07AB6D645BB +:10782000D83B0AEE3BC3B4CF1BB13AC8508E14D438 +:10783000F60A9877E6C504CC5BE516DDB1264EA7BF +:10784000CD6DA017B1DCA5892AA4451D850DAE0418 +:10785000BA0BB2B930EE08C6F5E35A48CFD00639B4 +:1078600042E33B6B13E9AD8FBE9A06C707B7A3DCB3 +:1078700080714FDDA53BE6C0FC964467398A807E67 +:10788000B2456E579EBA8B2D45B81CAFFB82BD33F7 +:107890002ADE3E47CCA5F64BD6553AA6DBF4FA12C3 +:1078A000C6F793600138AE1A671FAFDE943FBDFB89 +:1078B000CEC0D44EB649C44703CDEF06FFBF8C9768 +:1078C00027C6F3EFB4496457BC03FB40E4A777DA5B +:1078D0000A23468AF6165CE2FD3C4BFD9CBA5377C0 +:1078E000A01D7EBCCE2520BE709D1AC075495BA52B +:1078F00043F79C7BDE126C5748BE98708B98FD9CBA +:10790000BA3326A0FD5810FD50C0FE0A8C58A54E73 +:10791000FDB028D277C18B433A719D979CFEF73416 +:10792000B42FADFEACFE355CE790783E52CBEDA7B0 +:1079300008AED387796D50EBD4709D36BF421F9C43 +:107940008BF9BE7F2038B7D4758F9753E8132B750A +:107950008CE2FB4A8712A27DF0B9E6E1F4437F3660 +:107960007AFCBAF3682DE6706895C3AEAF352EC0C9 +:10797000A10448944C4180DFA922A6D7A03D9ACD0E +:10798000089E209F4EA2FE104DB926BBAE60AB27CD +:10799000C4FB9354284FB02F797D4B9E597076A12C +:1079A0001E407F91AFE5539427922FDD40FB50F2AC +:1079B000C9EFC792E6437AA7400821BF355AF28D36 +:1079C000B1FD32FA7BB4C023089F65A2C39493BA79 +:1079D0005EEF4339C7C2ED01D2A3CB44F487A85C64 +:1079E0008E58FA43C92DC9A4BC27B51CDC52172EEA +:1079F0009547F587DB1685EF23D9E9AB234ED46B8A +:107A000062C9721C67A07E92E546637ED9E110FAD6 +:107A1000A7721C24A72C7B2A793DADB89E1CBE1EE4 +:107A2000B4BB6DEB691573FAAFA7D13BDA5C4F6A53 +:107A3000F9D584EB51FAE3BF09D7E319B85DF2FC3D +:107A40002D3DE32C66865D0FACC917783F49EB5896 +:107A500033CA813299350D0B3C826BED34F194DCE5 +:107A60003FACAB33159E5AF3EFD71B60FD2761FD8A +:107A700012C2D99F1ACE69AE9F96A2BCB2E6D92D8A +:107A8000723F477A1F7CC3D49FB3DA41F3DE20866E +:107A9000BA713C67490BED4B9C791DA47FDCA5B006 +:107AA000AE0B615FC575095B9FCF22A5E8EF82B180 +:107AB00051BFACCFEF790AF3508FA9B6BC358FF523 +:107AC000F9EA308F8DEF9A67E4BE81749296C7B45D +:107AD0003168674457319477CE3C5827A469724F78 +:107AE00054C0B1CA59E1631AAE234AFA13D8A3109D +:107AF000E9C39DD7CD2AA1BFF55F4A1CBE25E5B4D9 +:107B00001EABFF9F8BDC1F948CA7D1B8EE14707A4C +:107B10007A003C3DFDAB443CFDD9A4BF1478FA7318 +:107B20002AFA7BFA5726FD6DF425CCCF4AC7B87EDA +:107B30006CE22791FEB63F7C635188CF87FCC43E40 +:107B4000CEFAB8CDA4F93BF3820F227C24C43FA027 +:107B50007483BF4B43E173BF7F7215CA20679E26B3 +:107B600062FBF7BCA18F445BBFBEA04ADF2D7E9DA8 +:107B700021AD4E3B0EF907E617652E865495849489 +:107B800074B8A30ED6067CB2A9CE45E9A9A3636852 +:107B90005D03CB5F566A97BF2D5D32C9DF167FE765 +:107BA000BD97A29FCA573C01C59EEEDFF6D04D6837 +:107BB000B7F935F26309E6F8004F41CAB1C925D3D8 +:107BC000DE49D37B74B46B24D6A34BD0CE0F764D55 +:107BD000D4848D6C8393B75CAF1F059991E8E75708 +:107BE000090E6EEC4F0A6988C17E707860BE488DC0 +:107BF000572C1ADD29D9F44A48E274C44A39FE9850 +:107C00001CF0A7B26F2DFABA17E0543A0AF3A0C7D6 +:107C1000413F17D4B008F2D583F81DE0F192183C2B +:107C20000FE751501BA3F1B70B5CCE08CC25FBD05E +:107C3000BFA9A9DB90EEEEBD34DDA43B751BCE677A +:107C4000B4240E241F464B29E82E6D896138806FBD +:107C50004E28A1F3B13C47086521B164D744899F00 +:107C6000DBCD7161DAAF217D8D1058FC0FC61D1E72 +:107C7000D0C8CEB842E27E2B9FD65189745538F9D0 +:107C8000F3CA1FC03CDB421E1DE56E76BE965584CE +:107C90007CFA2789219F16CC7DB47E06E675576F46 +:107CA000A61FE11CAB9C01FD79218F7818B2546DA1 +:107CB000C0B396B63A46E70B505148B5BF70390C81 +:107CC0003FDA5723B41B67E3BE4D28FA628F13FADD +:107CD000695BC302D8ACA82DCA16C338C3273B556D +:107CE000947FD985861FFDFAC396F0EFD9BA2B8809 +:107CF000DF5DACA3D285FA5936D8D5B6713C5A6847 +:107D00001903BC1C554257481528C70C825FCE3555 +:107D1000FB093E1B951EA6E239CBB4A88EF3D8F121 +:107D2000440B5B64DBCF5F6FD205C83E3D521AA7A0 +:107D3000BF0D48D40087FBE755A5FDD083F5D209D8 +:107D40006F0A6B32E9D66022C203E95623BA5C8817 +:107D5000F8290C06506231A95CABC22E801F87E265 +:107D60007C362AC6306CB7F109C7BC08C7D7EB6CA4 +:107D700012B41713F1E5D1F447115F3992C2E5FB54 +:107D8000ADD1E8C3F07D28C047033878E71E88BE30 +:107D900080FC32DD159427433EB6277A14E07460E8 +:107DA0009E1B3EC23AC29C9F724B5840C77904F456 +:107DB000FA428D7AD770BE439630B2B7B2E7F71861 +:107DC000A82E016E3FC1790F2F3138FB6951A2BB3C +:107DD0001639FC973BA17ECB8B52C0D06C7CC38004 +:107DE0006F6CF077FA413EA4B067ACFAE7D2B7F116 +:107DF000FD2ED75B96BD00FCD5CAF981F3D760F59F +:107E00003733F47DC500D7CBFB80DA231740D3D9B5 +:107E10007E89911D53AEBCDB67BF917F408EE70129 +:107E2000612756EDDBFF309E2F4C71AA8FA9FDCB49 +:107E30006763DE5A2FE0E91993AFF6EEFAF368D4E0 +:107E40006BAF049C1A9EBF1D147ADEA773CC4A49FF +:107E50007BAC90CFCF3509DB33BE69C699631E700A +:107E600086C2ED155DD2ABA17D4FB910C172273B23 +:107E7000D67431F607FCD60EF3E899B6EF4826E43F +:107E80002F17D8725606FCBC5B329CE3FBC361F62D +:107E90004EE73184E36C5CA70D2F57FCC6B66EF835 +:107EA000FF65244EA0E7BD47875EBE09C7619941C3 +:107EB000D4E3AC7A257B16D2CB27F37DD82BD57FA4 +:107EC0007C9FD13C040DE7F5CAE43FFA705F5AA9E4 +:107ED0000BB48FB9629A1071A6581F7C5734A093C7 +:107EE000D9FAA7B40EF8EB7502BD9E3AC6D7755005 +:107EF00064BDF5B0AE2B77BFD374318CA756713902 +:107F0000D36F3DC9EB989698EFC37B352B9151EE1B +:107F1000B2F400CEFBB01C7A95F8F1C9EF18D3711A +:107F20009F1165BDED647F8518D7C7BCDDAC9C256E +:107F300074BE247B443A378594F8F0641EC87BB441 +:107F4000677C624A38B33C070A251B1D0DE0673683 +:107F5000F53E15011F557E2153FFE901CE875E16C0 +:107F600023E59F8950033AC8629AC037270101F977 +:107F700082B169745EED4BFB47F73B9FFA15F4F550 +:107F8000EC8CFB2BF42BC7885EFFE1FD9E63BE6982 +:107F9000F1737B9FFD9C7C0DD83178E8DF58A752A8 +:107FA000EAC48800F4AB95F2F3C2D63A3F0F0A90C8 +:107FB00077E928FF3C01878672C0ED89B242A8F7B5 +:107FC000EF95AE5E949B963FCBDAF7B94BD8311163 +:107FD000F0EE0E3812FC28AE3CC7A0CE179A7346BE +:107FE0000F3D9B5D85945A68DB370E54EFFF75DAC1 +:107FF00008FABBD066DFC99EA2385D9F657DD2CAF4 +:10800000106344F74166D707B2C8FD658D9EC52E43 +:10801000B2634E9F39234D32F7DB0CE32782935333 +:10802000C165965C986017296ACB7201EC05C5BFE3 +:1080300044B7F3FB65188C81FB65FF2D7A6C1078D3 +:10804000685382F316E17EB48205D0AE59EF5EC864 +:108050008EA19DE85E48FED7969CDC422EBFB8DF1D +:108060008EB93C24C72C3ADD9373AD3F06F59B8750 +:108070005DEB47B9D7AC04FDE8D77931E759DAB7FA +:10808000B69CCE64CE00DAC3456447B79C1E393433 +:108090009C627D6EC6E5453AE37A8376BC36BDD2F6 +:1080A000E2175D389F93A55CEEAC77FFAB8EF128AD +:1080B0000E4D0E63FF0E4F90ECA89AF26E1DD7E3A3 +:1080C0000879424EB57F3FD638F027903F10EB58E5 +:1080D0007C272494A79C47FF7C4847BB505119C973 +:1080E000D5E472C59561B8C7A35DD4F75DC5718B42 +:1080F0000F8E237F33D6D7D00F0D1201F92A4EFFF2 +:1081000091047C33558CF76BF3DBCBCC68C3FD91CA +:10811000132C1BE4DB64B8B638B81F92C9FA3C8450 +:108120005F93903D01FDC603D1BBEC6F237F0CC074 +:108130002E8AF4E5F4CF341CD80EF65F434854ACD5 +:10814000EB11C653FA29ED9B55F9233BFD3D24273E +:108150009ECF347A8ACEBA7F6A06FE6263062E57B5 +:108160001C815090F451F830DA0F321B4FF397F323 +:108170000E1C2E8479FC5CE6F685ECE3F61153E5E3 +:108180008FEDF64B40D47F2EA35D9ACEFB49EEBF18 +:1081900052ACFA05965F21EBDD72450A3E19AC5DE3 +:1081A000C5F40C2197D32FFF8B44F1DC4332F70F3A +:1081B000E98100B9960F809DCA40CF83363E8EF389 +:1081C000D4E13F8ECF007B14E908EC79B46732A686 +:1081D00041B9DD3F5D3E8145A1BDBAD813CE9C8C2F +:1081E000F4C4DB5B742A25E57F8F78B8C08687BA34 +:1081F000DD097E6889F1B8A0E4F57C2654BD9A1AA1 +:108200000E83F36F39CD7D3BE0AB0DF185F167B89F +:108210009E4D269E1F30F5D17A531FDD6DEA9FA635 +:108220003A8DCAD7D69550FE677501CAFF73DD64D3 +:108230004A1FACD3297DB8AE86D2FBEA8254CF3137 +:10824000ACC985F6CAA661DD0F0A68BF1AF7571DCB +:1082500084269BBCDD6F30CCB37B791E8DF9E18C1D +:10826000FD4D5E5765003D6ECAEAFE1EBA889E1A35 +:108270007267C37EB0A7378DEA7E4380FC85CDC68A +:10828000DE2698D2A671BCBE57D95A6560FF69A692 +:10829000DF2F6FEE39E0C0E524EA0C4C37E598FBA0 +:1082A000CF41B61B8BED008E9B0ABFDA78697287CF +:1082B000CED7FB5CD5213FFA91F8FCA72B8FD1FCE0 +:1082C00049544D057B51D9DE40EB1F67F60FFAE9A3 +:1082D0001A9B7EBA4451F8BCCBBEDABC2BCDF5BAA2 +:1082E000A6C568ACE7E4509E02F9CCD21E26026A0D +:1082F0003DB3BBA3241EF306B7EF69C120C09C7831 +:108300007DC792002B824F53F07B45FC7B41AD4EE5 +:10831000FBD9F34100E3F7FBE656B9B8FDAAD3F960 +:10832000E404F33BC869B2A7E497B8DD1E50B87FF8 +:1083300030B93ED633CAE3F5069CA77A0EFB769099 +:10834000EB647290F677F9B29AB0AEF4A47C9A8797 +:10835000F3EB60F1718B898F0FA5C47EDE96D40498 +:10836000B89EF7A4C826036BE7DD62D32FF0BF7F6A +:108370007E7A423EBB3A3B219F513E3CC10E52D4D5 +:1083800044BBC8537A7E427D75DA8484BC6FF6D4D0 +:1083900084FAC39754259417ACBC34A13C77EE9C67 +:1083A000B3DB5D8384F799A4F5FF47127C06DB8F6E +:1083B00033BC9C05A0EA824312EDEF6A598F321458 +:1083C000F7872B05F20F613D15ECA4F97C8A4C5C14 +:1083D000B96706EADF058CAD7066412AF728E8EF39 +:1083E00098BFD299603F5BFDEF890D69580CFDBFC6 +:1083F0001DE6FD434A76FBDB06EC7F217FFD9DEF0A +:10840000DC7D11941F3D240570F94759CFE598375D +:108410000CC93CFFECC947BABAC6F4171C33FD506F +:108420006F9AF1AE4CEEC99F03E56F2A91055C6E21 +:10843000FCB1EA10C8C937D37AF2315FCF8E553517 +:108440004DC5EFEB5ABE635BC7E2B0A0A37F460FFA +:108450006A2DFE72B4F70313DB35B310ED2E35F041 +:1084600008F2CD26C561C631E89B500EF88B8367B4 +:108470003D5F3F52C7E371ADFC4F94D0A3D86E71FE +:1084800038CB8176E5E2B63D0AF2E93E936F991C5E +:10849000A1F51D152C396654E2FEE5CD3F0DE9B47A +:1084A0009F97ED5384043F76F2388BC27B38DE6EA3 +:1084B0001102E4CE7445F217DAE6B957C9E071D774 +:1084C000CBF938C63021218E70B7D9FF3E85FBC964 +:1084D000BEC63AF7A45E2733E516CBC075BE5D7BFA +:1084E00003C1F733A00774A9BC74ECAF0ADADD6CE2 +:1084F0006E4E823C58DC2425D0D3F797BA13F20B8A +:10850000C35767A68AD7E9A36FC319DFBFD9ECCCDD +:108510004A8CF2467FE35CBE6F644971DD3E161201 +:1085200004F83E9419F5383F2B8EDBB263CFABD6FF +:10853000DE807FB146EFB5C3B8FF966932D0553EB5 +:10854000FE8BFB998C986597037DE607988EF11D4D +:10855000F9F1EF64D70C5B2A27F8698604E5047FFC +:1085600087B72631EF4AF247F5C90173BDF732CE1E +:108570001F4C8F6888B775DEA81FED808E8CFF6C4E +:108580009805705D679DF7D5DC6B9DD381EC63AC7E +:10859000FD9AEAC752E907B294511FC70295C8DF96 +:1085A0002E16D8837E175F31F7DF7B0A8033C91E12 +:1085B000EF71615C9F2FC8FDB1E9E8C48679894FEE +:1085C000EA69388FBB838BB3B03CCD08B1B6725C1F +:1085D000A71889147211E842BFEA5C391215D02F2E +:1085E000DB114538EF3DFA6757CC4697567B56C3AB +:1085F000ED36E097B3FAF3F5F24A76838FFA0FB7C8 +:10860000AB1CBD8D3EBEBF42FB550EC8143FB441EE +:10861000080D75A438A7B3C639A7BE1B64BDC2C96F +:108620000EA2B7E62302D15B66416F08E3A0D8EB48 +:10863000DCFF6E54050E87D07F38DE41F7113226FD +:10864000F792FFD679C4AD4AE4070F5F74B597EF90 +:108650002FECFC762A297EE535213401D723E4CEA0 +:108660000BE178B71F17C83F99398DC7A3648CE118 +:10867000F161F32E9ECFDE2FC5739880F13E7C9F73 +:10868000EB90F83E3FFA3D3ACF537ABF4DFE7385EB +:1086900095F1D415A07481839F675C69A6731DFC56 +:1086A000DCE73D6F487740FB91BA5645F727AA545F +:1086B00011F11E3FAF2ACD3C6EE3D3CB1D8972ACC6 +:1086C000B58E9F537D111B49FB2B45837DF185FDA5 +:1086D000E1E9747D7E01C537F8BA2F7CD7C6D70B88 +:1086E0001C5CEFAD5DF5AC1FD7F917313407E7938C +:1086F000A687759C8F5C1C22BCF6D5F3F27A0AE043 +:108700001BFD4F1917CF8E227D349BE7B260AE342C +:1087100029442F8CE4934517402F0B1CB6795BE757 +:108720005BF0F731CA0F079F125B3BEE4657AA7DFD +:10873000E21F95D00FECED1DFE00E165A07B21D678 +:1087400039CFE2C966C74CFB36FAB77F84FE6D5855 +:10875000CA8A5D0F1F40FFF58A29B00F0B607CC9E4 +:10876000D603785E60EDBB80F30F1C85FC92796EBA +:10877000EE0F674192BF27985883F6D7091C11DA8C +:108780009FF04C7AA4BE1087D3E9BCA5DDC1F59D4E +:10879000ECE1E7C932CAAD12539E113C78DC1BF301 +:1087A00070796630573DC9D736EEAF35E03FCCFF24 +:1087B000A023D17FFBC38D89F91BD99C5C942737FB +:1087C0006E505804FAFD91DDFF0EF3F9B189AF1F29 +:1087D000B2700BCA9F56F37C7FD973E31CB81FFBA2 +:1087E000D144B510E330FBE49F49971F013D69CEAA +:1087F000F8F79B7C1187198F437E97C62C2EF74F75 +:10880000EC9C1E45BE7B07E402E13D699DAD4ACF6D +:1088100015E8BF36EE5602DC0EE2729E681C86BA80 +:10882000A9AB52477F36404B1B92D89EE67F435BF5 +:10883000E27ACF058FE4F55BF6EF40EB71740974D3 +:108840008E954C674F98FC15BFEF64DE1F6A9059F8 +:108850006339FAC3EEA2FB45B58653C5F3B9536934 +:1088600005113CAF7BC994DBC00617F1FD43F8420C +:108870004C07DBFE7F61FB8AAFDFFED501C66FF3DD +:108880001941E4D30D022F77BA421C4932DF2FB5CC +:10889000F9CF519E07E5D259CA8BCFDE1EFD9A78DB +:1088A0007EB3083F8E24FAA773B1E3A61DDAA804AD +:1088B000AFA438F73F49CC1090BE54B2278D664123 +:1088C00043FB75D1BAAB32915E171D927C62A1C990 +:1088D000CA58DF5B43E77F471C8A6907C664E4CF59 +:1088E00045930B67623C5AA312F067C1F8D25DDC76 +:1088F000CF5A39B92C44E7309E790ADAD1BF7B725E +:1089000022C54FDEE49929A39CFFAB83EF774FECA0 +:10891000F8E52406F36B7CCACBA2A49F230ED49F58 +:1089200037ED94885E6EFE8597E2E76E7A66D9230E +:10893000B3A11FE1392FCD477AE6878F73FF6823F4 +:10894000BFFFF5ECD5AF18E6BA5C1ADE4B31ED0788 +:1089500023E0477DB4CCC9AEE7F1741C0E7D765B95 +:108960005BD9013FCEAB2B8BE205FAE85686FAD0F5 +:108970007E11A47352D0ADC7C9F9F763AF631ECEA1 +:1089800053E8DAB390D6D7FD5D05D727346539DED5 +:10899000C37377A762D5A375184F08915150FEF1A4 +:1089A00013025F57F7B86D698538FE36C7623AA77C +:1089B000E0F176D67C177795B50C877A8BD765155D +:1089C000E17E7EFA2F9ECA8879102E5FB64C2DA7C5 +:1089D00038EADED9C0CFB7754914677A439B9474DF +:1089E0000EC0FD63B7924480FAFFF2D7996F41BB86 +:1089F0008F402EA781C8FAA8E73DC7AF311FF28488 +:108A0000512EDFB65B49F07FDDD6F50EC539AB22BE +:108A1000EBCDBB1844F0C144FF5872FDCFD86907B5 +:108A2000DA95B775AF213FE56D3B4FBC89FC725BB2 +:108A3000929FEC23FCC7B0FE71E6139D897ECCCFDC +:108A4000D8C14964A7760D4969BF58F1E596FCF88D +:108A500064F7DFB618404F1F3FF36F5B0C80E78B66 +:108A60005FFE6DCB3F21DC5F485391BE6FDBF1DED3 +:108A7000963B508FEC768A48279FBCB0FDF187204B +:108A8000FFC91B6326204B5DEEE476C22785A772E3 +:108A9000D1BE58F9C28CA1488F2B774D1FCACE6228 +:108AA000BF7F027415B1D195657F6BBB0534CE19BC +:108AB000FB8D9926E1831DEC75A0BFF27381F5B69D +:108AC000C3FEF4D6F02907DA530774D68BF0D9B772 +:108AD000F39D037740FE04E0C799023FB0B2F34430 +:108AE0003A278A9E87E745B7EEBCFACA6F9563AA14 +:108AF00004B0FBDB582FE9A37E783D04782D8FE38B +:108B000075403CA2BF19E8EAB6F05FDFC47886641E +:108B10003C9EC07F4CE98FC75BFAE1F196AD0F61D7 +:108B2000E1CE2129F7F9161E97EDBAE6ACFBA44F6A +:108B300092F87720382F35FDA1539CFA6A27F2DF8F +:108B4000333F7FFC211FE2D919988D787FEAB30269 +:108B50003066D8074AEF428443EF0B4EB513DADC98 +:108B6000F4C29F495F7DB20B243CC9759621803CBD +:108B7000FD84F5FDBD86F111B79AF12CCBB4DE99D9 +:108B80006F42BFCBA00B2340F89BF96639E28F9F61 +:108B9000DFDD1AB9AA46A3F8FF1C5AF7AD11CE17AC +:108BA000B746F6CC457F7E32DC779A72C58E576128 +:108BB00032E2F3D84CA4BF81F069AD5FC5F55F0424 +:108BC000E58F26F26D7FBAE975A05EB0F0FBC9B6FD +:108BD000538EDBA17EF4D70E559C0A79A5D78172FE +:108BE000C7F8A5A4E2BDA364BCE37DA34564A73494 +:108BF000A48C1B4AA687A79D897E71EBBE92059720 +:108C000073F1F5B9D7F3D5E0B5C5A9F1FBC2497049 +:108C1000AB9FE124B9FC8742279DBBBFAA680FFC2C +:108C200018E9E32585E1BDD02B8AFE2A6B29FC0CCF +:108C3000AFA0DD63DBEF5C3959681E02EDAED441B5 +:108C4000AF68713AB5CA83D3243A7FB2E6637DCF69 +:108C50009E55BE0EF5EF4933AE6CFFB0E0668A5309 +:108C600014E5B013D6A7987EA5229D913DBC22DFC6 +:108C700049F621DEAB66748F9AFBF7DBACF3654FE8 +:108C800088F4F461737EAC6BC78E1D207F2EC58186 +:108C900081D4F6B18EE66CC47329D7FF42E92F6503 +:108CA000D42F97857E2963BCDE7E338EEBB53A17D1 +:108CB000D97518E98DF1E6736AB651F96F4D3FD059 +:108CC000A5B3216FD3939795FC5246BBE0B2D26D0A +:108CD00079288F5FC638CA147A74AC8BDB7FF56352 +:108CE000BF2BE27A5E5EC5E31D5ECE7F200FF1B73B +:108CF0007FD4F6CD2BE0FB8B25420051F6626D83CD +:108D000007E5F18B5AA23F65CFD8BF0A38EF02FFC3 +:108D10003619E576A7B9FF7CD4F4BB3D6EDE33EFA0 +:108D200032EF99EFA8D3287DB2AE84CA9FAE0B5024 +:108D3000BEBB6E32E59FA9D329BFB3AE86F2CFD6B4 +:108D40000529BFBB6E1EA5BFA95B4ADF33DABB9AFC +:108D5000107EEC7CA11BFD58FF5A17A6F2685D2D12 +:108D6000957FE8E4FEA98236B0E7619F585BCBE3CC +:108D7000B93A95E03CFBB998552FDFC5F5CF1FB246 +:108D800042392EC89FAC995B8172B879D477C721DC +:108D9000BE5ED4468AFC5E17BFC79FE6E898BF0256 +:108DA000CF7B325C140F65F5B73C2794EFB2D15BF3 +:108DB000519B834527223E23D5B988EF1F00BEA1D2 +:108DC000FEA580C75C683F2754A8A17DF15BA1BBCD +:108DD000291BF711E3CCF2D9654A55E9B9F1D86BF3 +:108DE000CAADDF5586F390DF7E27707FDDF7421234 +:108DF0002BB1C981AB6B12F347CC7567CF2AE671F3 +:108E0000ACBED4E77E78DF9225D8359C9F9C18971E +:108E10006CE3A3346D78423D49DDA7BF3BB17F7F52 +:108E2000562A65D470BB5995DF47F9063010CE88B5 +:108E300071B9433B25CB9ED6F0BCD8C3AA017ED7DF +:108E4000DDC2FD230B584C417B1DF7590A7CBFDE68 +:108E500010286E64310B38D0FE5EC28294DEC8C228 +:108E6000943AF3A20A3FF7A856F1BE91A05F2C6195 +:108E70003CCA40F34BBE97D417976FCA01A7790F2E +:108E8000C43FD515B2EFAFE6BB383E6E3253A0A358 +:108E900065483F038D63C90F4B6EBC971D5CE2B202 +:108EA000E1C54A076A9F8C1F6B3E0C834E8761FBAE +:108EB00095BFCB07D4767668240FA72F6E73164024 +:108EC000D1D675DA04142B639942F26CCB91C24E61 +:108ED000EEE7E476F0D65ABEEFDF3AD74DFEF793D1 +:108EE000AB8B5E1DC3CEBD8E6439F8C088F1EB112B +:108EF0006F235E94488EAC1FF1F73D18575610E370 +:108F000072A5C0131E83F67EE5DB1F0E437FDE7B5A +:108F1000D9A16697CDFFB1E5CEF008943BD35D7A39 +:108F20000BE7CB95CE3416A7D7DA75DAFA126D6057 +:108F30007874B69DFD3C3E79DE7DF437003FC4E990 +:108F400083D7DBEB1E41F73D631253512E54B9F327 +:108F5000C9BE0B65321DFD0E0B6AA30AE2FF5A4023 +:108F60000BCA85EFB388C2F7876A2EDA01D37C5C1F +:108F70001F6EC97D7F18D9DB72AC90FB4D0679BF9F +:108F800082B1043DDECA580DD2E5341613F0BC435D +:108F9000747F3C0CF5C333A67CEBD74F6DE2BB016D +:108FA0004E41A5F9E341F663B09E456250E7F3D523 +:108FB000E52C1F9E3F0A13F0FC63864FA0FDE0F5F1 +:108FC000B58514C7BCD1157AC195C3FBA1EF792A29 +:108FD000F1E322CFF9D568BF0E763D4C8789DBDE01 +:108FE0006DB1D6F79E37F422C26FA45A5885CFAC24 +:108FF00038F3789CF70CC943747AD2C7E8DC68A0D0 +:10900000FE2318DF0E8A629FE947540CD681F6E0F2 +:10901000938077FCFE6BA057FCBE05F413A6BF053A +:10902000FD84E90BA09F30FD05E827ACD705FA09C0 +:10903000F39DA09F30FF28E8274C5F12836FE1FC6F +:10904000141F8F4F6D34E3501E37FD51D63CDE3573 +:10905000F160A5EFB938FEB7A3CD85FAE13D4784AD +:10906000E243E58EF3E81E18A4748FA3B7976276E7 +:10907000A67B8ED17D890AE60AA09D326E674CC719 +:10908000BB1B434CFFD4E3DF0ABD857142312993FA +:10909000B16F43BB82DAC398BF47C41864E08FDA6C +:1090A000281D874D54977F7F190C3D6A43E48965DD +:1090B000DC3FC5B0BD66C4A24BA0FF31B008CC7B7D +:1090C000C55814E38BD8E7190CE35F332FF9D8F8B0 +:1090D00011E47FB62A93CA67F88EE94FA1BFFF5DFE +:1090E0005E7FA6FF18F94973967A191D35BEFE41B9 +:1090F000F41128CFFCC4CCB3506526AD2FD6980907 +:10910000DF2BE6AB01BC1FB0F1F22E3792D9BAC00B +:10911000715A4F473883FA7BC8D1330FFDF4BB1621 +:109120007BE87D90DD079B8EAD83F4C1831BD66306 +:10913000370FF9ABDFFA11A4DFC6CD3CC0D15BB16C +:10914000DF3512EA672E17CB24EA6F2FE537857DCE +:10915000743F736219BFA7B67B1ABFB760E1654859 +:109160001AF76FE7A7F5DDAB62D84E31E33994C348 +:1091700033F5E9C817B0BFC0B855590D466723DCB1 +:1091800030FE9DDF53CA4F83767ACD553AE2C7BA97 +:10919000BF6CF9850BD3F839DEC46D1CCFBB3E1014 +:1091A00023E84F7DFE50A71BE5DBF3872648687751 +:1091B0004D0C8874DEF8FC07F7A6211C361F5A31C7 +:1091C00094FCFB2CE2064B846969FCDD9DB128040C +:1091D00073ECED8F8BD87EBCAD3DC6076FC2F642F7 +:1091E000BC7D491A8F5B2FEBD77E05B51F636B8F54 +:1091F000F648DE9F12C70F98EDA760FB0A7BFBC500 +:1092000022A6A3B17D0A793BD99CF74E21B2763CC8 +:10921000D2F93299FCA5454F86DCF6F734BE9BC6E1 +:10922000F922B3EFDCC8A0FE771F2ECA3C9B1F803B +:109230008CEA847B77E949716BD949F9E149F58B6F +:1092400092CACF4F2A9F9090DF77F47E3108EB7857 +:10925000DEC7EDE6E77D0D641F36E78914AFFD2B11 +:1092600081DF63375E92689DF1F584693D7BAF983D +:109270004AF5771DE4ED8B9E8CFC1EE34F77CE16EE +:10928000E9FE77B25EBA30BD88C791FAE6FC1E43AC +:10929000E9B32F9719D2F3733DAF55B9219F354AE2 +:1092A000284379397A5DB801A7E9EC8855616CD615 +:1092B000B4DE6023964F65FC9E46F6ACB9FBD270D7 +:1092C0009FA333A25BC068E32C1B9D6FDF3C615FF3 +:1092D00025E49F33E97AAA148CD23994C47A713F79 +:1092E000FAF8C6150D6321BFDB2C9F786842821DFA +:1092F000B8352D9BDF8BD83C35410F5BE73603E15A +:10930000EFF13A3DE15ED176D46380EFBDA32F2625 +:10931000386DDF58D489F27DFBC63999A207C74959 +:109320003C1F8AF7C3FD14CFE1C0749E8F470F9096 +:10933000DF28F2BCF17B794631E9C984F2D6CD222F +:10934000918455BEDB2A375EA9C6FDD4EE8D32E589 +:109350001F58F34A753D94CB1BE71A63CBA93DC553 +:10936000A9CB7973A208172B6E1DE4C1D6B40A7E6F +:109370004EE42E8F9F13397D3ADD5FD78CB013D723 +:109380007599C6C243C04EA888446494EF537B8D40 +:109390004627C98DD04378EE5A64DE83BCAC80EB9F +:1093A0005F3641E0F10E724F15F67BFB9832929FCB +:1093B0002F7BBBF761FD5D8A407272D2EAD870F4F0 +:1093C000753D7FA8F852BCFB104DE3F1B4971585AD +:1093D000AF47F973EAB8A0D5C37CEA8FDE3E06ED4D +:1093E000AE7D87E730DCC7298764E27FC5179442EA +:1093F0002407E6483FB4E1AD22A0107F3FFFC1E261 +:10940000B5E390DE7D8F4E356379E5213EBCE714F0 +:10941000D9817A3F9AE6E4E74301C530CF51A308EA +:109420000F871AE6EFB69972B15262F4CE1A7B4BEF +:109430008C3C86053521B7FD5EF5B3312EA7271F7D +:10944000F3ADEC81FE9BD4A91391EE1F7FD0217B5D +:10945000A09D3C32F008CAA757FAE4762821FE18EE +:10946000C67D252DC5F9ED08A6FDAC1AC73BDD5B11 +:10947000F90CF4BBD38433A0B3FE66D44BE6397049 +:10948000E6E94CB267FEA598EF2F92E54CE037E98C +:1094900009F42FB625EE8B4630DBBEA830859C390B +:1094A0007241425C15D8FBAF227F9FCC13350ED79B +:1094B000B00BFD10538B1546E34B4FEEC3F3BCCFFF +:1094C000F07E14F0EBD423EE6322C0779B292FB6F5 +:1094D00098F1863BDB3AF7E13DA067E7B919C60989 +:1094E0001E38DC29D1BB52A63F53A90D57A11CAA97 +:1094F000581D6B40B9CA0C3DA332D70AC18034B69F +:1095000088EE67B143DCFFE482FF707EE337DBFC6B +:10951000510CDF81B3F9A50B914512FD55C9FE2809 +:10952000969EE88FBAE70E2940EF77BDCEE3789E8E +:109530009F12DE44F400FB2F09ED97D0C56B6F85B9 +:10954000FCE36C44563BD2BF2BF216D26F56815AC5 +:1095500088FB15CB5F959DCEF7B37B8F3AE91ECA8A +:10956000F61823B95A99176E47BE9CBA5B249B72B2 +:1095700044BA468B9C1A8BBD5C0AFD5C5423A2A99D +:10958000CB2E3A628C457ADF3B75C779A8BF9B3DED +:109590000E3A176F14C24C4539FE06A7CFE6C32218 +:1095A000BDFFB1ABDA45FBA2E78196302EAA399414 +:1095B000DED95088FD67D33C76F9440AA5BD3794BF +:1095C000BE0DEB3D67C5ED9C36C6A25D9EF1887E63 +:1095D0001EFA21766EE3DFF59D8CE2CF5D79FC9E6D +:1095E000204A081E5FA496217F8F31D7B741D0C78C +:1095F000A4439A317239B57FAE501854FB0BD34552 +:10960000F3FEA57E613AA4A518D087F63CE0AE9D96 +:10961000DE2D8CD5231E1689261F24ED0B16B25E77 +:10962000DAB7809D3F15DB2B72D80CB25467227ECF +:109630000AC09EA5F3E4C1DBF921FBFB8C05BE3219 +:1096400011A711B7F78333709D85795A03CAC3C137 +:10965000DAF95BD0BE1F15B7F7955A1EFFF07BB441 +:10966000F3F93DCD20F61BB7D343F444DCCDED1523 +:1096700033E42968877797637E5E7B45B36B0A5E28 +:1096800092030686FCB2F64933309FD128909EB8EB +:1096900011F2461EF48B3E0BA48F1D8CCB2F599DCF +:1096A0005303F33C7F898FEC3F4DEC3E3801E9F6E4 +:1096B0002691EC808CAEE82AE4AB7EFB13933E321D +:1096C0001A3F5D8EFBE165E9DC0E5A66E2CDCAF712 +:1096D00038433721FCD13D82F71215935F151FBF28 +:1096E000C7B40C953EACEFD67433CE4F8E0CE7E783 +:1096F000A4907A715FC8F7775F03EFAB086E26DE40 +:109700006707B25A6EF271BC4B5FE13D00CB9F918F +:10971000BC6FB552E58B0B28C86AA07E14F31D926E +:10972000E6A2E03CBC6FD19A3FBA0CFD6FD6BD9368 +:1097300097C4D0DD34CF3C1E1FDF876711F66390DE +:109740008EC6F75B6C76E42613BE569AD178559890 +:10975000E2EF2DF80A9C3EADFA3DCEC50FA627C418 +:10976000778418EEAF37A7ABD6B934C51D819D47B6 +:10977000E7BF5F17DE0A6C8311CE00F7ED38DEA27B +:109780003CFECE9175AF7FB0F09E5EC0CFD55983C1 +:10979000CC1E2B67FDDE0975BAAE8A22DB26B7BF69 +:1097A0001D65319876D38BC21706B8DD4AF145AFF7 +:1097B00009A1E7D36D7E04B01FAE47FAB7E2881661 +:1097C000997E39D0A30AAEBF6A88564E71EA6CC939 +:1097D0008C8360175521C3D3834E37CC40BBAACAB4 +:1097E000CDF39FB5DFD58271DA5578964476D73FB1 +:1097F000CDC0F3A0AA91BCFC3FCDF2BD2EFD77E910 +:10980000150972246297238A7AAC324B237FC11FD9 +:10981000B8FC0854210A0B6AB5AFE52F78D4942719 +:1098200040578789AE4CBFC1B9F6F9C7D2B97D6A36 +:10983000A5C751EFD8F7F9F7394C79111C3EC7CBC2 +:109840005384D7BEF5B924973B518DE3FB612C4A75 +:10985000FEF94577F07B7163D97BF5782F629B1910 +:10986000B716DF5704D229FE2D899E8A9E5467E2DF +:109870007EFD5194CF80878CBF372E5A23D8E92C98 +:109880004CF10AFFC7C3F5626713BFEF98BD8AD1D9 +:109890003EE6918EEC2CB40FEE4AD73F4FB7C58B06 +:1098A0005C92AE7F918487D000783883F5CE8507AF +:1098B000C59366D8E1DAC76F26FC0F9AF8F8439F84 +:1098C0001CD75DEE0A84BF46FE45E365BECF1A088D +:1098D0009F03F9272DBC5972E18487E32B9E72BD4B +:1098E000DB63C6A9154D6653D5CC78BF23DDBC5EBE +:1098F0004F1A4BE99F2F725B722548EFB212A4D02A +:10990000AE6FE27ADAAA57EC164CE34B13B9BCE619 +:10991000F17141F3BDA99193D934D516EF36C11C2D +:109920003798CECB93C72D73F379674857258C3B77 +:10993000B203C6B5D1FDC4BE710322BFAFA9D3B86F +:10994000856DFC5DAA91AB9988A9D611D4112F3DE4 +:1099500095CE511BD0DEC92931CFD762F568AFC98A +:1099600046A188F659B5D9DF438E00D9F54D82C09E +:10997000F07D62FD60D040BFAF4B7711DD2A1EE362 +:10998000532E9FB95D0E767AB53BC77E1F97DBE9F4 +:1099900016DC336456EDB4BDBBF3963BF1DD046BCE +:1099A0009D413D6B06BA6EC7EF54C9FF333BC0FD06 +:1099B00094E7EB79DB709FE037F1F958977A9D9B3C +:1099C000EFDFE87ED13867CF8ADF433E72B783DEB0 +:1099D000FFDBD1D5397629B4EB60CCF24355E3FEF9 +:1099E000A6F93A16E86478FFBEFE7B37433AFED705 +:1099F0004FB69F0FDFFD3F16C9BFF43337DF674116 +:109A00007BFA6EF99D76743D9385EF0C3CB8E1DEF0 +:109A100059A3D15EE81229FE7A47921F6A895BA298 +:109A2000F6B7BAE3EFFBE03EB3CF0F65CC8C26F977 +:109A3000A174ECCFE687BAD57D163FD40A37B70BB1 +:109A40001E8C301E5FD42546701FB8C3D349F26305 +:109A500087670E1A874CD1B91F674797E987F2F4D9 +:109A6000F981D2BF0BFD2C77737FCE1D28BF2BEC65 +:109A7000ED8F0B9816D8DA931FCAD3E787A2F6ABFF +:109A8000DCDC8FD480ED73CE3E3EF9A1BC89E3D7F8 +:109A90009BE3B79F73FC67B27E6893276BCC71C75B +:109AA000EF8E54215CC79AE7BD63BA42B4B5F34A5E +:109AB0005117EAAFAD8F7584D2C9EF218711CE4F10 +:109AC00098F6D998879750DCE6D6A4F7753799FCB5 +:109AD000B6C3A4FF7D9BCDFDF4E6B93A9D23AF66E6 +:109AE00084EF310FFF87609FCF8825DCDF36E6E10A +:109AF000952F8F3DCB7E7A87DB49FDCA4B446B3F68 +:109B0000BD03F925793F7DB266C95E0C0F1DD7E410 +:109B100020793A6E5D0BC53D8CDB69905CD5BE98B3 +:109B2000084C0FE37E51467656C11717535EF96213 +:109B30000AE5BBC4DE7A848B21727F8FB251A6FB0B +:109B4000EE238C443F8FDF63FA796ABF9A9F670BDD +:109B5000FA796CF7F2B69AE715D9B3CA49CF9DECFA +:109B600028EA946CF2C96FCAE1D1020B62BDADA6BE +:109B7000DCB6CAF7D68F4E47FF4567C79CB3FA07D6 +:109B8000715F80E7C37DFDDDC9FDC0F487FE2F95C1 +:109B9000BFB3B175F5E27BC91F96555D8E7CEBF7BF +:109BA000F038327DB791EC5778D36DF367882E1E6D +:109BB00007E8F7707AB4F40180BE1ADFC18CAF47B2 +:109BC0004CF05BD9E433CDA3631E97CF567E682853 +:109BD00097F444AEC73A4FDCCFF15B5D5F96EA5C29 +:109BE000F15CF87D4AEC152EB0E3B73B357E733D52 +:109BF0007C1FFB0FC76F6D227E733D9C5F4A07C4BD +:109C0000AF231DF928527BF677812DFCF6F537201E +:109C10007EF7665F66C36FAE87C755A6C06FAE2777 +:109C2000A73F7E7B9C41BF07E941E67E264B3F83F1 +:109C30007E6AB2EBA7A73D49FAC9D4FF967E1A1BEC +:109C4000E1EF455AFA690CEA27216E6F6CDB1618B2 +:109C50009ECEFD20247F4A9CECA5B472DA27F6360E +:109C600080BCBABC7C1BE9A75C14512AEAA7581334 +:109C7000E9A7858CFC7F1BB7B52C7F59437FEE0A83 +:109C8000922B9B6FC9A6F1167BB2B81D6A7ECF5B83 +:109C9000C6F5D3839B412F950FAC972EF2F0F3912D +:109CA0004A4F9F5E227FE757D04B959EB3E8A51998 +:109CB0009E41EAA5CD5C5E0EA497AA3D5CBE5FEE18 +:109CC00019402FD8DAA7D24BB33D5CAF5CD3AF7D40 +:109CD000FFF153E9A5B966FB059E64BD963C7EA2E3 +:109CE0005E9A6FCE7BFCA391BDE88F72B09E003F61 +:109CF0007765ED4807EB10CE00C7ADBFEA88B86DB9 +:109D00007AE9692142EF6E19C3B87F21592FDD6AC4 +:109D1000D2E19DA6DCDB67805EC27574CD253C5820 +:109D20007AE9FC2752EBA5F39F90D34BCEA297EE96 +:109D3000F4987EDEB85EBAD393C2CF6BC9AD12532E +:109D40002F95987AA924D23328BD3458B975E2BF2B +:109D5000492F59FB8381E5D657D34B567F5BBBE533 +:109D60009A44B9157A3C516E2D9984FC7AC2230D20 +:109D7000A4979E4A25B74E98F46CED1700F44D76E3 +:109D8000BD7422592FC5F72B67D54B1FF6E9256EF9 +:109D900077947C4DBD3458BBE3C3FF26BDF4A1A925 +:109DA0004706B63BBE9A5EB2FADBBA3111BFE37723 +:109DB000027E85B8DD317E17E097D629997A49234E +:109DC0007FB34BE5F212F0FBA1C78627E7EE90EEDA +:109DD000D6C82F78C2C3FD82143795EC179CC66095 +:109DE0009F8CFEBA17253A2F62728CFC080A4BED45 +:109DF00087B2DEB94B8EA73957DCD755335711BD23 +:109E00006D74E9A73D367F41972B7886EB4DD37F64 +:109E1000D517E76524DC7F6B89DF7F8B24DE7F33FA +:109E20007F8FA780FF1E4F26FAA5C84F9778EFAD0A +:109E3000D17B23DDDB4A71EF2DCB5B71B67B6F01EC +:109E40007A67AE31CBBA5F6BF11FBFDF9B71F1E96F +:109E500018DDFF52274D44FCE47BF9FD277D9EC1B0 +:109E6000ECF70C310EC09BC22E67E6FD510B2F2D77 +:109E7000C3AE1DE8FED7286F827FF1ECF7BF807E6E +:109E800037A21C5F21482ABEF3D628F077AF0C21F9 +:109E90003DF0580AFF16FA5735E0BB99DEA2C4F729 +:109EA000757C417A2FE5F698A0A13E047ABAC8CB1A +:109EB0000F83E454F4B44E0A5D8CF3BC67EA471494 +:109EC0005F7262579A86FCF349F94907C633360A2E +:109ED00051EE17CF37FDE22C6C44F9FC38BD61E040 +:109EE0001EB46B5C359CDFAFCD4B7CC7649A8FFB97 +:109EF000530B1CB13742503ECFCBFA0EA7F272E99A +:109F00007503FA5B24C7C88F753D7A0A46E2BDED3A +:109F10006E4A01BA57E0FCAF33FD5B0DEE8C6F93D8 +:109F2000DFF91F3C2F0B0F276BAA093946956E20CE +:109F30009D801C0B37D23D418E3F0BCEEDF8DE07E6 +:109F4000D069ACEEB0FEEE28BC1F1DD3DF55F09EED +:109F5000FA07941F9E115C82F34E2F093BB1DD225C +:109F6000E30DFD5D1B7FCDCE08DD8CE50BC2C7F494 +:109F70007713EE3D7F9850CF6A6FF9B1E93E9A169C +:109F8000F7AF007E57D8E9EC94623883240F7D0C3C +:109F9000FDD3275D02BFD758C5E83D9CE93E7EFE54 +:109FA0003993856584670DEBA0F4ABCA874B5937AD +:109FB000B59BCD7A28BD82F5520A7A4AE67E1FEB20 +:109FC000BDB05AD1FE5E98E4E2F1A446152B09A378 +:109FD000DFD5F40BE98738BE5C795A273FF762E694 +:109FE000BD7CFECEE53D5EC13AF7BA07E156A4F36B +:109FF000FA2B463908BF0E6644C9CE32E3B369482E +:10A000009BFEBABB8EC76F379971D8DEC961B203A8 +:10A010009DA5618AC34A9FCC10024C2889D07E3FFF +:10A02000BDA4DB8FF1BA6B0788D77DD59C4FFDB8F7 +:10A030006B49EFACF5F2F88FB5A3B8FC6B3DCADF06 +:10A04000FBDB9FFF53572C85DDD0EA5941F7A85B16 +:10A05000F3B21B6E28C777FFC588FD5DD3E4D4D368 +:10A060002151FC716BDE9CB3DEEFF0B4F17A039505 +:10A07000B706589B70218ECFF5DD585785CB2EF74C +:10A080005ACBA03C13DFB1E172B8353FECC7FB34CB +:10A09000C651B78A7C367D42ED5F504EB4327EFEAB +:10A0A000DCEA11E9DDF2CF8E78B7E37A856F7F9134 +:10A0B000209793C7777E21B0E8108A03FD1DD2ED6B +:10A0C0009E719308DE92D64DF791DDA5FC7DE1F4FB +:10A0D000BC30BD93053633C5559F0B1F5BBDA67FB6 +:10A0E00016CC80121BDDAEA90CD1BB996B86318AD0 +:10A0F000EF565431217E7A8D1967ED487A5768BD45 +:10A1000097DB51C7CC7E51574C9E80F47B80E8177B +:10A110007FB98ECEBFB11F287C17E51AD4BFD8A552 +:10A120001FE7F236B13CF9BDA5B1261F3BD97A1124 +:10A13000E3783F33EFF95AFE746D233FF72E69DA67 +:10A1400050854F2703B3EBE8DFD48073F05DF3D184 +:10A1500095AE5E83DFFBA5F6C566FB924713DFB5C0 +:10A160002B5A97982F36EFAB8C66B6EFC03FC5479A +:10A170003E3C82C66431B3BD838772D1BC67B215E1 +:10A180003FA438A74A8E0B903212EF2D25FFAE4E1A +:10A19000726A9DFBE7897A5A06C26D75369D276EF5 +:10A1A0005975E3F0547AD5826373D6241DEDF2A677 +:10A1B0003B412F432A476711FD4832A3FBC2A03819 +:10A1C000CBD0DE905CAA83FC764D90C7E978A20ADA +:10A1D000E5C366B9DAC3F32B79795FFFDE99D47FE3 +:10A1E000E39D01EA5F8A4EE1FD7B400F8CA3DFA770 +:10A1F0003BC0F838F4DEB5EC520F303E0EBD872D73 +:10A200007BA2BF657C1C5EAEF6F0FC4A5E4E1E690A +:10A21000D46B9E885209F0F9E2D877CE6AF7FE0532 +:10A22000ECDE265B5C55CC8CABFACBDCF762E88FBE +:10A23000FF4B5B21FDAED8E2E858FA3D072BFEDB71 +:10A24000D24FCAD40F66209F597A6AA1CCE8DEAA01 +:10A2500005A7852EB505EF715A705AE8893653DE89 +:10A2600084D342B587E74D38597ACE9A4FB27EBB38 +:10A27000AE6D9B827EF273E9B7EBFD334B9B889FFB +:10A28000E4FF8DFA19F51BBE2757DFF78E08C707C5 +:10A290005E7346BA1848DF868CE5097141FADE61C3 +:10A2A0003371BE604305781C96AE733B90A93B0AA0 +:10A2B000299E8BBFAB94C73AD1D5AF587493C7DFF3 +:10A2C000335F64967BCBD547F01EAFE28AF2F75638 +:10A2D000A6F1DFE9988FE5E568779AE59E9E194338 +:10A2E000B1BD87972F30DB4B1EB35C8D34E3BD11BE +:10A2F000EB773EAE33DB2B3E5EEECCE3F5EFCB628D +:10A3000011D88BD23BEEF86EFB7D593D4F95927D77 +:10A31000CBDF6DB7F22826FCBE781EDF30D06CE5AF +:10A320006B815E102EF76599FD0E3B40FAA8ADAE2D +:10A33000A614E176DF227E3E688C13799CF269894F +:10A34000D72B9C90F07ED47D03E9BF0CD33F7E0DCC +:10A350008F9F6CC577560BE37A65203AB6F4CAFD39 +:10A36000E67DA226BC4F44EF7CF2FB43F86E1AA6B2 +:10A370007B7326915EB5FA7DE0FABBE8779D6A0FA4 +:10A38000490CF1596BCAEB75817B6BF077731A3D01 +:10A39000D909F78F1B65BE2FBCBF2EF1BEE3A719ED +:10A3A0007C7FDE7CCDB5F4BEBDECE1EFDB4BD1EFC5 +:10A3B0007D8FF035D7C1D2847F1C9F5BFC6DD1E7C8 +:10A3C0007D7DF20AE8B39CD327FA899AAF9949E7D1 +:10A3D0007A489F63FE07D3676B127DB626D1676B01 +:10A3E000127DB626D1A795EFB337B2C27EFBEF0E32 +:10A3F000B42EE2BF87C84EFF98EE9DF77DFFF2C7EF +:10A4000087314EC4B8C691F27CB82E83EB6BB9D4B9 +:10A410007062685EB23C3A971CAA57424750FF34BC +:10A42000B1EE28D93BAB051AA74509F95720BE3430 +:10A43000E33B1432A8F52AA9F419B47F87B7E7746F +:10A4400067B56BB1DEE1F1CF25F9E52905BE4CB06A +:10A45000AB811F6DF388EB397E2F948038A5BF7CCC +:10A460001C482FDEAF4F70696857CFE6BFA792FB3D +:10A47000AD7257B16DBE7FCFE0E7208DB3B95FF805 +:10A480008169135CC5A529CA83FC771B93C7B93FB3 +:10A4900043A6F25A16247E61C02F6817CAE3AA5455 +:10A4A000E4C3B51AE7C3FF4FEFFF97F49ECFDF9BDE +:10A4B0006AFD52A2B89957EFB9A4D5288DD3C340ED +:10A4C000F2D5A283D919C1F2CC9CF83E6B207B94C3 +:10A4D000E2A7A1BF928CE054ACBFE027D7E4E0B87C +:10A4E0007FF359EFCD717B0CCA6FCBB6951B55F13D +:10A4F000780DF4E3ACBC7C4905F2C7EBD3B85F2C14 +:10A5000063087F7FC19AD7E399DCCFF97826E7D338 +:10A510007690CB9131F1788E0CD8D023DFF5E68B95 +:10A5200091CE42B40BF9FEBA35F464CD4884E3DC35 +:10A53000512ADACBD6FEF69A7C917E0FF3EEAAF47E +:10A54000A5F6F38DCB7C9C7E3FF255DE87EB097838 +:10A550006214AF72A1CA6202FAC3AAF87B60421EFB +:10A560008FC35158C0C5FDF3E67D4216625FE53EDC +:10A57000E1D332A01EE58587BF43ECDD28901FD4D0 +:10A580008A4BB9DF37E707380F657788EE0FEE990A +:10A59000944EE37FDECCEF477FBE4A7D7B17E6BD5E +:10A5A000F8D40663AF89D96FEF847C6F96C83A31CF +:10A5B0007FE9796FEF82FE17DD2FF2F8BCD3430AF3 +:10A5C000B0FDB15C26B6535C11CBC07BDB19237B9D +:10A5D000F7E279426FBD40710D8AFF6FBAF9BB7324 +:10A5E0001922EC1BDEF69CBC0FC97D018B925FC566 +:10A5F000BABFB67848E89F32F13CFAFB9795A0DCE9 +:10A60000BCDBA11620DFDDDDE29C80BF9B54F4297A +:10A6100023BB895DE3E67E965EA07DC82FBCF3EA8E +:10A620008477C416E6707CB86A9B75BCFFE0D202E2 +:10A63000F44452C6484E07EF6587D6E03855AEB2AF +:10A64000FD1887BB205C487127D5EA55D5180FFF48 +:10A65000FDA53CFFBA198795EC8F48F63FFCB3493E +:10A660004732ACBD7602EA61FECE1753E5A4DF099E +:10A670004C7C6FD1A207A6CB1ABE7348FFD6387D9B +:10A68000E053784E16E4EFBEE801F35DCD3EBA101C +:10A69000CE5C3078BAB81EF6D0F4FE5E55E055E2D6 +:10A6A00093D714E29393354B7E8274904CEFADA117 +:10A6B000D52EB1B43F5F587CD05E3E274723BA5FAA +:10A6C00041717AEC98A0E13B28EA45AB55FCEE5C81 +:10A6D000E4A073528B1F2C3E1891CDCF45811F6A89 +:10A6E000917F439ED80C412300303BBD5F8FFC21FE +:10A6F0000ECC1FD7B1C07731CEFE3A991999D971D6 +:10A700003ABF6EB28BCE81AE8BD5F7E0BEF2BAD532 +:10A71000023B9EA0CF20EF4A8093DAF77B82D2E003 +:10A72000E179CFACB28D483711C911160A20AFF4C8 +:10A73000FE16E5BB91C5F9AEC5FB7E33E63B72352F +:10A74000B2F793E3C35A46BB898E3BAE3D8FF8EE1A +:10A750009FEB341602B8BE6DFA098DB95EA26FF494 +:10A76000EB85E89D5EB0FF38FF1E45FE7DDD116084 +:10A770007E28BF56EA09EF43F8BFE5267FF6E7CF0C +:10A78000872EC4DF21B97BD24D74BFF5F355A111DB +:10A790006AA97D1D91E1FC5D85D87091DEF6D2CC71 +:10A7A000771698F93D741EFF1EA1F461C0FB71403D +:10A7B000D9C1AC42EB7CD66C17A3761D193D6964F8 +:10A7C000B7E73A54EEF7D42B2A60FE574FF7313CE7 +:10A7D0000F78D8C1DFDD4986679ECAF9E56AA943CB +:10A7E000C338E8FFFCD9E9EF609CB45A28ACAF80CD +:10A7F000BC689CFECEACB1588FCBFDE62F275650DF +:10A80000FC4CDD8B09FBBC11ABC302DAC543E70787 +:10A81000FDF83E4CF3979288EFFAFD1765344A6EC7 +:10A82000008000001F8B080000000000000BCD7DA1 +:10A830000B7C54D599F8B98F99B9934CC8CD7BF25C +:10A8400020B979498080939048D00877026844D035 +:10A85000011182069904EC9F5A1F91DA76546A26F8 +:10A860002484104083F581A269121FE5DFDDDA54EC +:10A87000DD5D7E5DEB0E0F59DA02468A885DAC0124 +:10A88000DDFEEBAEED46D02D6DE9DFFFF77DE7DEB7 +:10A89000CCDCC94C0075F7BFF1D71EBE7BCE3D8F17 +:10A8A000EF7CEFEF9C3BC1956CF0058DB1AC469F02 +:10A8B000BB6D1A639FE3DF1CC6ECAAC85835631B47 +:10A8C000FF2A350CBAA06CF3B953CBC3F51B05A115 +:10A8D0006110E08D7B9C8CA5C3FB0B573EEF14C22F +:10A8E000F579AACC5806BEC7A85D41E388703BF550 +:10A8F000D3227800CE0ADD2F68498C698D4C5C1319 +:10A90000D1AFB6FEA0FE6119A3BFCF198ED367C326 +:10A91000FED5FB991A4C61CC69EFB3CD03D8B924AD +:10A92000A1A74D65EC96F5023B1DD11EFF466109BE +:10A93000E77F93C8AA180BBE25F5BD00F3DB9F7116 +:10A940009948FD094C70407F99B29E3C0FEA3387CD +:10A95000D25810DEA9860A5CB7391FB31C68853E41 +:10A960001C8C3DDFAAB0E024C65E6C5509DED5EA3A +:10A97000A6F287AD1A957FDB5A46F52FB57A081EE9 +:10A980006CAD21F8E5569DE0575BEB09FEFB561FC9 +:10A99000C1BB5B1BA8FC69AB9FCAD75AD752FDEB62 +:10A9A000AD2D04875A0304DFE4602D88C7B99BE509 +:10A9B000A008F3CDAA750F380AA17CE6D3BEB588EE +:10A9C0007F061BE661EC11DC37C07B967BC9B66362 +:10A9D000D08ECD935929149DEE25FE63D46EB647D3 +:10A9E00082E72FFAD2DE3D5C857898E041FCA42C0A +:10A9F000FEAEB71ACB95F008E861C0A64969158C80 +:10AA00003DA8D6D42B93197BD8C6DA5301DF0FF6B5 +:10AA10002CDC8CF08CAA4FEE7819C6FB76CFD55D76 +:10AA20000AA06C7B46FD510DEADB7AF42E05E65553 +:10AA30005CEB4DC2F9B0A0DEB51F9EDF3004FFCE47 +:10AA4000A16D0932E85FF7C34B5772582961ECD802 +:10AA5000BCFB8479D0AEB3677ED76350FFB4BD45ED +:10AA60009807FB636373BB963AE97D3993F75F3FC1 +:10AA70004D08D767285799F5BC7F184F07D27BEB55 +:10AA8000A448FDAF84F641808F15A98BAA60FD23F1 +:10AA9000EF899E016876DCAE6D403A087633CF0BC5 +:10AAA00030DF1B7D402CB0FEE246D6CF0A0D42823D +:10AAB000FAD45AB5BF1BC64B4931F0CAE40F87819F +:10AAC000BEC4A0C03EC7E70B2581154159CF9F9B4F +:10AAD0007498AC03AC44D26544BD84FD31A2B36329 +:10AAE00045800F1877E46AA56F00FA5B83F45B8AF0 +:10AAF000FBA8D27837FACE6AB8DFC5B54A2513F07D +:10AB0000B946CFE1BD10CECF7C2FBA1DF62B46D46F +:10AB10009BEFB1F36765DCE78DDB18EBC679168D2B +:10AB200068EBCAADFD8A55F1FB8D68C7A4F1C76714 +:10AB3000C238FD987C956CD793AAB19FF9B2670093 +:10AB4000BA5E7AD35D5EE2CF154C94601F9213D843 +:10AB50002A9F2BDCFE484A5D730AE0AD3985CBA7FE +:10AB6000E40475F13C9A077F9FED6A5A80FCFCED86 +:10AB7000A745D60D70BACCF739BD4BAD802D633FDC +:10AB800036E45A42FA9A25F83C6187CC34789EC85C +:10AB900082B6CC2A2C054F8821BDF7CCCF44FAB021 +:10ABA000099E1700AEAAB9F7FA2AE86FE6FCCF12A1 +:10ABB00070BE337F260A12C0FF90CAE9A2E2F2A457 +:10ABC000963E98E7F5974F9CB11AF0992230DFA096 +:10ABD0006BAC1C714105B67F9EB17AAC177A4FB44D +:10ABE000E0FEFF67B54B407EFECF4FFC052ABCFF61 +:10ABF000BA31CF4976BE7EC67A26886EA07F3710DE +:10AC0000F34CA0BF6C5EDA6D2DCDB80EFBB3209770 +:10AC1000A06BFB5F672A3E78BFFD9C83FA676C6878 +:10AC2000825803CF9D7E35059E176D17751CAF5D4D +:10AC30004DE813A07D7252E5410DDE675ED183724F +:10AC400022F96A99E8BEC7B5AC0FF1FFC81E27B557 +:10AC5000B725297D4E809FD7CFA82550FF7CADAC6E +:10AC6000221F3FDFB5D4477CA48A6AA980E3A922CA +:10AC7000EEC7F3BA7BA41B48385908115FB17B5962 +:10AC80001FF2D9F15B7249FEB60BEA885441ECA081 +:10AC9000C95718A20196DC6E0BED7916E5F52C87E5 +:10ACA000FA828A0F3D87916F3B36A81EA4D72BD519 +:10ACB000BD7B7E06F51DBAE22B02F9624BD9BBE7DC +:10ACC0003DAC6F809D83F63D7A9DD2544EFC163488 +:10ACD000F84FF8DC81EDC57ADC1FAC5F8D78E96058 +:10ACE000074A60DC3A83D57BD401A110D7F97546B9 +:10ACF000ECDF917AA5D6E4C279413F26DF42459D3B +:10AD00006B9750984EE0880078CD518BE47C94A3EB +:10AD100039124B86FDC9516C16BED73AAC72C0666B +:10AD2000D0C555BFB33ECF6311308CE334E8241A4D +:10AD30003FD1EBCA499753703E391D323D8C9E6F0F +:10AD40004E7A89DC5F45A09A5C83F81BF07AA17D7E +:10AD500081AE8C689E0BCFF72A36DC86F498BF7ED6 +:10AD6000FCF95EA98B2948175782F0D5347C6FB067 +:10AD70005D75E1FEF3F5261759F9F8C7AA44EB0310 +:10AD80007EBE0EF9B9B84B044510EEBFB42781055D +:10AD900023E4E9A41DA91678725F8EA5FDD45D4554 +:10ADA00096FA6983532CF597EFAEB4C015A12B2DFD +:10ADB000ED671CACB3C0D5430B2CED679E58628188 +:10ADC000670DDF62697FD5EF9A2DF5578FDC61A99A +:10ADD0009F736E9D05F6B2072DED8FDBD95AD4EF28 +:10ADE000CCED19D2919ED5F40A945F26BE6619FA6D +:10ADF000C784992A8F8CE21F64ADC39DCA58447FD3 +:10AE0000131239BE933CF05EC4B84E2DC7025F6B7F +:10AE1000D059FAC222E68F783FB16C0AF347B4CB1F +:10AE20005C5A69A9470BEFB789064C765631F13564 +:10AE3000CAA01740B775642C6B6802BA5B97A478F8 +:10AE40001CB08E8D576B4F3642FDC33FB7B10D8896 +:10AE5000FF146E67DD9BA12F4E81F18BBAEC2C980D +:10AE6000C6D89E59F610CA8B6497BDCF81F2C9F53A +:10AE7000841FFB4D2E5118DA97C9B523CC0F766A83 +:10AE8000476B975E6203BE6D0DEA2520B8E45A5FFA +:10AE900008ED1A399D69228C9752CBF6209CA2733B +:10AEA000B82245A3F15274681FC98F2AF413B1CE9A +:10AEB000A3A248F26F64A383F496ACAABFF93B80C7 +:10AEC000FD804B09F8E5D4A2A9644F12BB6543FB92 +:10AED00005B954DFF48448F5EC7C5A3ED69FCA6429 +:10AEE0006237C8B709C51E92AF23F74B6477ACBA77 +:10AEF000EE5736B4171AD9A08D1583FDCA42120336 +:10AF0000FC5DCD86A99CC3F4047C3E49F4DD8570CC +:10AF10004DDFF6B9C8FBCD69FE07104FDBECFE1F15 +:10AF2000E178DB525D9EA086B356F305A4974E47A9 +:10AF3000657721DA45BE6DC7683C1BC3F16E5B3C8B +:10AF4000EDD17A98CF6D4F891E81DAEB0ACA8BDB7F +:10AF5000BCE91EAEFF0DFD22336709B4BB794B4936 +:10AF6000253E4F977D5E5C47FA52550842BFFB0C69 +:10AF7000FA4B48AF3AA8C1F3841ED983DD2532AD20 +:10AF80000EF195D8C53C21C0D792226DC36A1CDF53 +:10AF900029A803208F73EFD4F67E17ED4EB5C82392 +:10AFA000019CD7D2F2A882F62B738F20BE1EB681E9 +:10AFB000DE45BA791CEC300DE9E6B2BD36A41BAF14 +:10AFC000F28903DAAFFBB98DF4CFBAA7E43EB41B24 +:10AFD00054659FFE21D049D64AAEA78A9EBD8CF407 +:10AFE000548FA0F6929DBFD1E1413B7F27D205D07F +:10AFF000C7B34827A5B81F9D1BD07499ECEA1791D9 +:10B0000014A6A6EFD980E5B4BC5322700EBBBC4495 +:10B01000684F453A292F94D234B46FBDED5856D7B6 +:10B020003649E950CE9C27C899D0EE272945444798 +:10B030002BD62C3E81F68F577569387ED195CA0A7A +:10B0400094CF920AF39B3156EF9BA5346187E0477A +:10B050003E5F23FF96EC480DE438BCE74D7311DDED +:10B060006719740F25F7AB962692DE7DD8D6B2C746 +:10B07000867832FCB5BCC690A097E37BEB85615720 +:10B08000D89FCA6D1CA276B9F7B10AB44FF21B87DC +:10B090008566689777A795EEFF35D5BF0FE929FF3D +:10B0A000BE2ECB73553940F8ED10B93C4A4EF5270A +:10B0B000A15E4CBEA624B51DE54A1A5BB5B83C4C52 +:10B0C000373B0C7F63732AB7574C796EDAB7A61DEE +:10B0D000BBF1AF67FB44A0EB1747FCDD93711D018B +:10B0E0001BED371B0949C9488FDF5A4CF498EF3ED6 +:10B0F0004BE3377E3AB83119EA6F768CEC4B46FD5C +:10B10000F50D6E870D3861DC087F313795CBAFCCFC +:10B11000542E4F6CDDA0D92F87D2CEFC244F996FCF +:10B12000F830F4FF13965FD14D7A7B44580CF2E36C +:10B130001F0DBB6DFA6B6A1D83751486D4BD541E3A +:10B1400032CAFD509673BCE0C613EB148FDDCFFE00 +:10B150008EF45F60BB7EA6FE428D286D45EA82328A +:10B160001CEF8038F802894BA6A33DDCDF913A80C2 +:10B17000FE04037F2501E0FCFBD30986F6DDB8DF82 +:10B18000ECA104867692169075E784B1E315B05170 +:10B19000FD2EA2FFC1821C5658571BD2D1E5BB23FE +:10B1A000F43FCAD990159E71D00A570F59E19927DB +:10B1B000ACF063065EC14B398EF612E101FE4F1B07 +:10B1C000FE44407BFE002094CD02BB968DB45D0B07 +:10B1D000F35F057605DA7D0541AB3FB4EAE4472726 +:10B1E000D904C2A6C50F5A7532F1943801F5A9D514 +:10B1F000BE5875F2AEBBB0FDAAC8F68097532E7547 +:10B20000591394FA63FE47AF43B91C9048AEBDFF93 +:10B21000EC7F9672FB6824C39784F4ADD1BC6FBBFE +:10B220005FF4F5C17E28818DC149305F45F3D8B107 +:10B23000D516CFD1967D00BF73C2816285CD970EA2 +:10B240001D6C45393351D690FFD499777E3F11E07C +:10B250004DEF423DC0EF685A16E9B78336DA9F4D8D +:10B26000028F6B6CB2318A8F5C9F6EA3F1AA0C7C4B +:10B2700079524DFB2D9888F63778F28968BF5FBE0A +:10B280009BB1726BBCC2C5EB7517D65784A2EBF5A8 +:10B2900009DE2BF816E05FF5B05752D3C378877AF2 +:10B2A00082A7EB6CA41B78AEEA987C3A128F590DFA +:10B2B0005678FA49673BEAE1235E85EC57267DBC68 +:10B2C000F767007F06F634CAE3E92793245CE77149 +:10B2D00091F7EF61F07E04FE33D9293104F5997EB0 +:10B2E000574B1FB68FAA0F9C7C6BFA7ECBFC430A90 +:10B2F000FAA14933C01F43B9C65ADAD02E5C9C9AD2 +:10B30000944EF643392B473A982FB93C21C4FFDBC2 +:10B310009207CC5AE63835E99D26E487B72486FCA7 +:10B32000B3A950DB8E7E85FA4B89F49E9AC82A2AEF +:10B33000A09F3FB60E4DDF0FA87FE2730FEB807228 +:10B340005B5DC25ADCEF975A1943F93FD8AA309493 +:10B35000FF2FB7AA04BFDAEA26F8EF5B352A77B7E2 +:10B360009651F9D3560FD5BFD65A43F0EBAD3AC13B +:10B37000A1D67A82FF2DDD7B4F2AECE74968C726EC +:10B3800001EF56BCAA14237D344A18311AC3A737DB +:10B39000DFFB4D6539F0416D72EFB519809777EE9F +:10B3A000938C7847EFB57B4AD09E189E8F74CB74F0 +:10B3B0005953617F0583AFE001FB6D19C1E2E7538B +:10B3C00081FE5530BB40E5BC96CCE9D9C17C2487D1 +:10B3D000D85A8FE29B7631FDF805A39F615BAC7E66 +:10B3E00074DE0F3B31D4D905F8ED62ACA51BED1826 +:10B3F00079A8B31D60A55026F8311C84E879E81AB5 +:10B400005CB7DDE07399B5E8B9E877DA865AC80F1A +:10B41000AD76197EE877C82F6D7F46611B0AC3FEA3 +:10B42000A8E98746FB0311FEBD457F80642479941B +:10B43000A0085C4FB251FF87E8CD96CADB4D51DFC3 +:10B44000DA9B42F1A9AB29FE54EEFEA42ED5138659 +:10B45000A76B29FB5223EA3D651573D322E0322501 +:10B460006505C613DBD4AB289E559254B937CD136E +:10B470008E671DC30179BC4A4779FFFF3B9EF537B4 +:10B48000461CE66F32FE2115E311C11FF138DF1BA8 +:10B4900019FF9043FEADA1F70AD8044F37FAB5451E +:10B4A000413101F9E945467A147D0031521F6902A4 +:10B4B000433D1CA18F7E417EBBA18FF25358822752 +:10B4C000C67E45E82309F70370A1D9AFC0E78CFC1D +:10B4D00055B31EA61C227DC5B83EA5FA62D413A2A0 +:10B4E000EE9C6EE987F6B5AC2F629F19FA7756BDD0 +:10B4F000346DD00AFF57E93D93BEB6C9430ACAADC1 +:10B500006DE763D36D759AA127C3F4297E3E338C12 +:10B510008F7C7C528425AFD7C1D5C175FA3B6C9620 +:10B52000715705AC70E37D56F8963BAD70C478A4B6 +:10B530004F2F190EEAEF44EAF50F415EA27CD38645 +:10B540009B168270676B58E13568CFDCCE3C9DB8A6 +:10B55000FED55D89163FF36DD4B914471528BEAEEC +:10B5600030ED00C66F0A6A26A9283776344F398035 +:10B57000F19AEF7BCB48BF4C4D4B21BA4D110B0FCD +:10B58000BC87ED6E9DCADA31CE13E4FA5F01CCA020 +:10B590003FFBF003928EF23EB88151BFD176C3EDEE +:10B5A0003DD6B84573543CE2D1FA750545F0BEF678 +:10B5B000DD0401EDF3C2AAD3DE62A47F905B18A77D +:10B5C00069AE4AAD433966C2F95545D744C28A3699 +:10B5D000D2F61CB42FD4CBD6A1DF921FD0ECCDAEC7 +:10B5E000B1764D7347749C3748EB437CA6A58E5DBE +:10B5F000D7A5AEC3ECEF34E82BDC17761EE8ED8A56 +:10B6000008FE918705E4CBE600D331BEB57A3DD381 +:10B61000FB61BF24964CFBF2CE63C503E8174237AB +:10B62000644768060FDE62D06BF47E36374A623EAE +:10B63000BCD7EC9618C68758A0886405D139FCB3EE +:10B64000B9EB93D0E728271A25F2BB5253C09E02CC +:10B65000F8F45681F5007CBA71C60137C0B76F6443 +:10B660001E32C7D8503DCA91E62AD0FF340F6E8FE4 +:10B6700028F01FF5877621D0596120C28EC079A0AD +:10B680005D381DE9CE6A5F34A35D389DF0743A12CF +:10B690004FFF86B846FDF421E8AD2A8B1EB3E7C7FD +:10B6A000D66376467A8CDB4DA61E9B30D7D37519B0 +:10B6B0003C1F4911358C2777AC91EBFBADF144FB76 +:10B6C000E7B98CE30CE4D8447C02EBF855C2C834EB +:10B6D000ECEF5776556847DDC5FCDB502EFF464D35 +:10B6E00025BFE6688A679AC8E39D41A51660A7E76B +:10B6F000470C60C7A6D7AEABBF3A0C27747F40F0AB +:10B70000AF52B56711DE9EC682F3F2B07F0E6F5264 +:10B710000E5DB71FEB1318E98757BEF79BCDC13CF1 +:10B720009C079F1F98CC414E37563EFF3FE4CC828A +:10B73000DDE40D6E96806EB60BDAA3D585E1F75287 +:10B74000F13D619CF7160737CB31DE7399EFA1AE5F +:10B75000BB02ED3B8E8F2CA35E34E61339BE8C7298 +:10B7600047F527A13FB47DB3ACA2BEF9B2F3C8BC84 +:10B77000D0BA9B829B6DD2D8F750059BF31763CF4D +:10B78000BF0FEB23C7B78D33FFAF1A1F17EACF6E7A +:10B79000D45FF2FCA0F986CC8B582FCCCF8676A252 +:10B7A000E64F12C7EB0F64E686D8EBED89EACF4986 +:10B7B000F373FBB78D3BBF38FDC17AB747ADD7698F +:10B7C0002F1EDB1FF26728934274348964F065648E +:10B7D00094EF5E99EB137F0FE59976F89984FC3F1F +:10B7E00066FC35DC1E4860C13EB43B59997F5BE482 +:10B7F000FA1FD9338BF2124FAF671E274CE569B998 +:10B8000087E470CD9A1EAF1D9E3FDBC80671E867C6 +:10B810001B879C18A7797678C8A961FD7D4737E317 +:10B82000B8351D49248B67B11E8A93175D2DFB50D7 +:10B830007E275FFDA96F0D8C5394522961FC060D84 +:10B84000278A37A6D63E87E316D97405E55356AD49 +:10B85000ACA21FD4616FF1DA31EE751BD3288F2FA4 +:10B86000AB6221C5D7D8481068E6E946ED518A2376 +:10B8700075C84C20FED01EAD4738904172E969561C +:10B8800048F1C1E07A89DB85AC45589244FFA0BC01 +:10B89000C328FE849E3D73117FB733F2C70A57F663 +:10B8A00008388FC2DF276994E7C5BF2B0C7928D1F0 +:10B8B000BCC9EE796A74FF785C8ADDC7DF87DD2159 +:10B8C000FD34B151ED23BD60E46396334E9BD9F74F +:10B8D000C95FAD9D1305CB8E16CA33B1ABCC3C937B +:10B8E000B53EEBE48336C4BB2AB214DBAC0BF7B72E +:10B8F0007CF8DE3D68CF1C684824DA2D6CB4EAF58C +:10B900008228BD1E1DEFA8D13BE6A25F911515EF61 +:10B9100000F6213A37E9648C9FD7C9FD3807F374E4 +:10B92000111FB046F5B753C3FE632F36443B6AA2DE +:10B93000614745BF5FAB067F8078289219EA471BB5 +:10B94000F32822ACC791D04279496894DA961DB6A3 +:10B9500073053B53B22B41FF8BCC8FFE5C9BC064C5 +:10B9600084C3E30E331C37C040FEE07EBB4486E355 +:10B970006E52CE4EC5B89EC3F997A9181F4D0683C7 +:10B980007808F5AAEC5391E936D9B4BDE89F040FC5 +:10B99000DB284FD8AE7A967B61FCF64319AC0D9A42 +:10B9A0006D4AE2F19676B747A928C7FC86B69201A0 +:10B9B000DFDE9A3E678182FA131379E01FFDAFC77D +:10B9C00066750741BF3ACEE5327F441CD621B730B9 +:10B9D000C49FE35CBEE5F9DE56100593C2709DABD3 +:10B9E000681ECEE7210CFA829D3097793AF0BDB9F6 +:10B9F0008A64C98738CE65337F5AACFEF32CCFF703 +:10BA0000823DED775C4CFF8996FC8AE35C719CFE7D +:10BA10002F8BEA5F8DD97FB8DF344BBF1B6546F1B2 +:10BA2000F4604322D143B41FF3447A5D7B7AC6D8D5 +:10BA30007CD4A63C9E8FA23F80AF494FA173118F4B +:10BA4000A7F338EABC85C532C5DFF2AC79A96B0C27 +:10BA5000BA37CF4BCC4BB745D9CB1E19E37575AE72 +:10BA6000E8E7563BF90AA4A518E772C4A4AA219CEA +:10BA7000CFBA950E0DF3E7F1E2EE275B19E501DE93 +:10BA800071B6AC4479F56AFAE2848DC0A7EFA0AC38 +:10BA9000033BEA40FA9D0B8280AF93028FE76D4C27 +:10BAA000DF5BDA14C3CF33CB4699C93595E3D4DBDA +:10BAB00043A578CEA9D1E013A0B269285747EB611E +:10BAC000813568B3B23ECBBA56B608967CD4498C61 +:10BAD000C3F3F95437958F3F9FDAD471EA1DA16AF9 +:10BAE0009A8FC45AE2CDA7B6F2C2F379CF887B6EA3 +:10BAF0004C3F5A3ADE7C56CA7C7D71EBED43849F05 +:10BB000095A219A7B7CE6725E3F8BDE07C8C3C056C +:10BB1000CCA77ABCFDC2F9D48EB35F2B1D43849FA2 +:10BB200095123F67156B3EB517B35F467C70931D4A +:10BB3000E4A7143F4E68C607673EB2D31A1F0CEE47 +:10BB4000BCD65B82762A33E0AE052158D7D985EB87 +:10BB5000CA88BF0CFFEF561C10E4FDAD32E7C75B8F +:10BB6000F25C7D6D11FCDC0B724D07B9D007F2075A +:10BB7000CB019013FA243CBFE626F845F027753A2E +:10BB8000BF5646E50F61DE58FFB7AD35049BFD9407 +:10BB9000AF15C8AF9C76A7407E6534DEAECDE07EA3 +:10BBA000E4F66C75C51A94DFDE049ED7597B15B890 +:10BBB000D261BF91B14192EFDB96B10AB43BA6ECE2 +:10BBC000E2F34E9F97D9270988A7FD43AD286796D2 +:10BBD000DA348CB76FD298717E05FC56B0E39A4484 +:10BBE00043F68086C178F77070FEF3287FEA326CE6 +:10BBF000863FA71ED88378F0D835D463B79CCC266F +:10BC0000BFEF48B6C430CEED70F4BD81716E1088C0 +:10BC1000BE173C1477B1C4C593CFFFF80D3C47F273 +:10BC20000EE86F8C6B66F8AC71F3EF353E67C3B806 +:10BC3000776393EB5ED18353179848F3B7F7F51505 +:10BC4000E214422ADA87191E998500BEF99483CE40 +:10BC50003D6C7786C88ED82EA8236DE8EF3938FF63 +:10BC60003546F9B5B744C10CB3E4184F921A933175 +:10BC7000F7BC091FCD1A8BFFE8787B6D8635AEFEC9 +:10BC8000192B7F641E56E6A5923117FDBE193FFFA2 +:10BC9000CC90AF9BEC5CDE44B733E773BDD1AEB75D +:10BCA000F59CFEA12D3CBF7C7958407D531080E768 +:10BCB000117893D3870594EFF1E6DF2B7C9CCDC6FA +:10BCC000E1DB7CB6F513693AC5CD7E8BFB413C24A4 +:10BCD0008C5DF7ADB8EEA991EBAE7DB384C5E217EC +:10BCE0009E47B8E5A0E469D3C27831F1F0DFCD37E3 +:10BCF0004EA4DD0C83B423E284D2068F46F657A609 +:10BD0000C8E3AFE9751FC9D379FD690B9D58CFBB57 +:10BD10004A7B3F12B4698C7DBFF5A0FE616978BC97 +:10BD200082C088B011E3421B78BC283FF4113F7FEA +:10BD30001B6062872B7CEE305ABE459FC7955C2DF9 +:10BD4000DF1F06FCB983329DFF0BD6B5FC6098E27D +:10BD5000740E15F3054F263EF4FD61987740565456 +:10BD600007F0C97724BF1FE5E01F45BF5A084B7E87 +:10BD700035DFBF3D03FAEF569F5FDBAFA1DCAE546A +:10BD8000311FDE187830340FEC32352D767CD5D467 +:10BD9000A3CF18783B690B4DC43CC287F975CF64BB +:10BDA00064C4681F7888FA9B6DC8F3E8FA57327844 +:10BDB0007E6EA7A15F97DFF5F2472FC2BC13B5F2E5 +:10BDC0004A01E695581E4ABF09F3216F1657A2B9DA +:10BDD000FF37467BB0EDAB909E3B72FD3F8C1C570E +:10BDE000D154D94FF26A7016D6CFFE4BF94FDEC44C +:10BDF00038D4F52E15FDB8B31E5B955834761ED099 +:10BE0000CF2B880FE55C37D1B9D9CFEBCEE19DC6FA +:10BE1000F9D9EB4F809DF27ACA70AE00F03F3E5EDA +:10BE2000707D3AD0EBEB19C3B9585FDFF687EEFDB2 +:10BE3000C057AFDBB8BE909FF8437710D63B7BC1AD +:10BE4000C7CF3D82BC7A999DCEF56D36EC1A73DC76 +:10BE50004999FCFCD5A44C8E4F130F87EF043CA4EA +:10BE6000C7C7C32FC7E2E19719D563F1B0B2403F0E +:10BE700084CF6192C937019D76B5B2D01A98A39E3E +:10BE80003578DD0CE8225B1BFCDF8F3074D3FBBC04 +:10BE90006221F5730CF1A99CEBFA449A10EEE7705D +:10BEA000BEFE36F673F8CEBD340FE7219EEF65E98E +:10BEB000411DE5AD0EFBFBB487DE3FC9F1687DDFB8 +:10BEC000DC8F3BF2389FD56571F9956AD841DDF674 +:10BED0001EF76228D59227BEA9C27B9D853D0DB174 +:10BEE000E8EF3799FC7C03B81C3ABED7A1BEAC344E +:10BEF00047D0D579832ED74ED4FF1DD79188E7DE62 +:10BF0000A07E4B0DE00FE639E1505A25F95B25ACD8 +:10BF10006A09F06766166F0FF33E4BED67F5A0EC0C +:10BF200062CE123EEF2DEEC718C60B9CE550D2F341 +:10BF300061867CE2647E95625599FFB7BBC38DEB49 +:10BF4000E82B433A28CADABE45063AE8471B05EC17 +:10BF5000D93C80312ED86B873668EFE7D8C9AF8AD5 +:10BF60005E9768CC6349AE2E6656C7C09363F8B936 +:10BF700047E0FDCDD3EC9E203C9A2DF63434235D72 +:10BF80002D70919E87E70D7D11F89A61D0D38C4C6E +:10BF9000AE9737FF4969C07C6C349E2F96DEB23372 +:10BFA000C7D05B76666C7ACBC9CC88416FC971E922 +:10BFB000AD283336BD15C7C243340C3D0731DE24EE +:10BFC000197166F9DC15C11F03AC08ACC5E146B8B0 +:10BFD00026F826E6AB8B6482F55DDEE07E8C43FBC3 +:10BFE0005D2D685F3C26F82B711CBBDA42F943C912 +:10BFF000A5D3FEEEC9F8C2FDEBCDD6FE67C7EADFDA +:10C0000095C9D7317B81CB8FFB36DBB0BF4D7C9E92 +:10C01000CA9469FC1F1BF41E8F1FD2B2C6E7873F6C +:10C02000678EF2C3A2CC8BE087A9597C9F615F6EBB +:10C03000CE1C971F5EA532B19CF34322F28307C743 +:10C0400063C17A37CE97D3FF9ACCEE2D180730F91B +:10C05000A326EB190B7F54008CF5F1D6979EC5FDF6 +:10C06000DA09B83E186761858DCED39F65D306D0B7 +:10C070005E9D50A3CAB8DE6F649AF3D6EFC8A47D64 +:10C080001B6648A7FD6C648F03F9AE969F5BBA21CF +:10C0900038A473B3A8872D86FA6F1AEFF59AF9B30F +:10C0A000CBF8F96826F730C44734DF3A4B06CBFCAF +:10C0B00011F8550CBE9D9BE57B00F1D5CF8627A3DB +:10C0C0007D63EE47F47A5A8DF1B47CBD35167D5F01 +:10C0D000485F3C67E88BE78C7D4DFD8BD2128BAFC0 +:10C0E00067DFFD53E2E778FDF419EF3F69CCC794B1 +:10C0F000EB8928D7113DEE6008F11C21D79FC4F9C8 +:10C100002A77765BF814F87D474C7E4F037E2F8CA0 +:10C11000C9EF7D71F8BD3F163EBE02FE7E2916FFB7 +:10C120006D1AE5BFF1F1FD0703DF7FF892F83E627B +:10C13000E0F90DA39F8BC0F71B84A7B1F83E9019BF +:10C140004B9FC7C7F791CC18FA18F0FD6666460CEE +:10C150007DEE1EA3CF8FC7DA7705C717A8FE5FB0A5 +:10C160001F96170C221EF5D51CEF66BBD64CD5B01A +:10C17000ABB57BD18EDE097618FA8BA0E7DEFF2FF8 +:10C18000DAEF8F63EDF76C91DB65F39E58BE25E81F +:10C19000FA4AC6F913AE3B7A9CBFCBE4EBB890BE2B +:10C1A00077197216F0C0B2AAC7CACB7EE35ECA92F4 +:10C1B0005CBF238BCBB3EB503EF53E902A609C3E98 +:10C1C0004F0F0968778BC678814C8D4AF3BD5E3975 +:10C1D00024C8D8BE4515F01C50447F295919F1FBDD +:10C1E0008B9E07CC2F3D8BE49B9E81EFB56646D995 +:10C1F0006D86FDD09FDAB316E5779121AF8B8CF574 +:10C2000099F0E989FAC42CAE57342CC10EBF0F8FB8 +:10C2100078A3FCE6F62197D7E67A44DF201B46BDDB +:10C2200002EE5C9F45EEAF7CC194FB788F51CC94BD +:10C230004DB93F19E7599865D21BEF2FDE3C6B0CC7 +:10C24000BD5963C86F1386795666717BB01ACB7877 +:10C25000F38CC6D3C5CED76FE87598EF9CAC8CF83D +:10C26000FD99E70DCC7DB3A390007FE37007E757FE +:10C27000DFA162B2D3AE1FD5D7BE05D89F9EA8CA94 +:10C28000E9E48FAA09D8EF4E237EBCF3CE47291FDD +:10C29000D6BF5EAD407B2E672DD777DA9DF9FD784E +:10C2A0007EE066A39F683A1D7DDF3E38794639E11E +:10C2B0006505E2654E2DB70F930FD1697BA617A8D0 +:10C2C000323253AA23E846BFB64B08BA9B91FEAF61 +:10C2D00073F17C967B69CCB887599A710D73BDCC8C +:10C2E0005D7581F66D3CEF98186CF15D4A7B479067 +:10C2F000EC8C301ED32A48EE29CC968E72CF914218 +:10C3000071B1FB0D7A807DBA8FF6090F53CC0AE329 +:10C31000756CFF7CBFBCBE1601F1EC2C83A1E0A9BB +:10C32000D31724FB49D47A883E124A387D30F7313E +:10C33000EA2F3C8F1933ACF3A89881F308F7DF6933 +:10C34000D27927C9838B9C8FD92E3E5E78BB605DE6 +:10C350000BC50B821B6486E7369E4C7C88E2098104 +:10C36000A0437540F947677E1F1A61AFE6FB7770FF +:10C37000BA6D9949E71559CBE558BA98AA233DCD2E +:10C38000F1300FDEB798A3B882E847B3F3F2C79154 +:10C39000798888FC94F079E2171A7F57ACF12F3630 +:10C3A0006EF14AD698B8C52B5931E8DE8C5B4C60EB +:10C3B000C341BCBF02BE1E8FA7A2D38776B347A3DB +:10C3C000759AEDFFC9A097E43876DF3F19E39AF438 +:10C3D000BD7C631D2B227902FA03F9B281A998FF73 +:10C3E00046BD8FFBBBB0E25BF4FC6C80A9783F4F8D +:10C3F000BF3E45C678ACB93E73BD66FF47A3F8B7EC +:10C40000D138777FD2C61A7EE2E2EBAD8C98D75F47 +:10C41000F2BD4723D76DAE377ADE075B03A17936CD +:10C42000CC6FF9A94C0BCC651F60FE50E1FB6D6F22 +:10C4300000CECAC634F3D06DEB600A5B25FF7BD813 +:10C44000EF5D977DF4305E4C195266B4A13D71CF1B +:10C450004278A790CEA74BB85F5F357DB4277D9B10 +:10C46000E2617B6C8A2AA963E9A37D7E45433A4950 +:10C47000AAC285876A003EEC39E102F85C56E142C7 +:10C4800037F047FB5B9E860C786FCA8EFFBB652B2F +:10C49000C28B05E3DC67AFCB0B786BBF8EC3E28E3C +:10C4A0009A8518D7695F21903DE1701772788FD512 +:10C4B000DE0BF3D7469AFFD5D95CAFB57B8538ED57 +:10C4C000B8FC73B98D768BC66FF75DB3DD4A7EFF1E +:10C4D0003F5EBBDB8C7103E8BAA07D7A4E2479DC29 +:10C4E000AEA7066F457C9D17E9FEBA10F8D75F62CC +:10C4F0009EF8486D96D6CDE383596EB23BD44397F0 +:10C50000C3F347EB4411E5D1BEABB3B6CE00B8A739 +:10C510004E14F03E9943F6511E13CFF8B6A13CD20B +:10C52000EE25BAE85C01F45C41F45CE0467ED5F9A6 +:10C5300073FD41FE1C2FCEF9A6C5A733A0A349F871 +:10C54000DECF4BDFF91ADA51BF175C2DA86986944C +:10C55000E2AD1EE8E79EDD12DD678B472FB1D6BB4B +:10C560001CE0376BA47EBC57F0664D1AADBFE77C6C +:10C57000EA0006B35FCF1BA1751EF18AE2068DD6D5 +:10C580005FED8E886FEC9BE5983C4CFACF3713E754 +:10C59000A5FF8AEBBB71E63FE7CBCDDF73C28FF31C +:10C5A0003F6FA7F90BBB3368FE476A8A29DF2B254B +:10C5B0007DEAC2F9C07A9CA85F60BED7E37CA589FA +:10C5C000C379281FCCF95EAC5C5CE6E6F223422E10 +:10C5D0002E8B5C7FB49C403BC0CDEDA34FEFD1E8E8 +:10C5E0007E1ED947F1E4D3D7DC972C9FBEE6FE022E +:10C5F000F209F07E37CEEB8BE29DE94C53C1069DEC +:10C600008D8FA89D4EF21E640C9D8F11CEB5101D0E +:10C61000839E56AF477A5FEFE37025D89820BFDB43 +:10C62000FD7E779A14BFFF57F37DADB82E5BFAB04D +:10C630007429F1F66EF718BDD51D899F683CCD971A +:10C640003E6EC7FB5A676A055AAF7E8ED17D477032 +:10C65000569271BEB3751BDD0391D5E176CCA72D43 +:10C66000D2E416949B7837598EC833A4E80A9323F2 +:10C67000F24869F5AA05CEF0B92DEDB31A344B7D19 +:10C68000B6BFCC529FBBD6638127B6D458DA170405 +:10C69000740B5C18ACB7B42FEEF259E0D29E064B87 +:10C6A000FB493BFC96FAC97D6B2DF55377B558E0F5 +:10C6B0006983014BFBCB77072DF515A12E4BFD8C24 +:10C6C000833D16B87A6887A5FDCC137D96FA59C3C9 +:10C6D000BB2CF557FD6ED0025F3DB2DBD27E361B20 +:10C6E0003D6F25F0F397A2269BF4285AEA79DE29BC +:10C6F000C88E9640FD4DCCFCF3D830DF3ADB2DD10F +:10C700003922B6D046E73782F01FEA575FD4B92600 +:10C71000BDCA7ADE03E861DFB3F0BEB7C6417A7402 +:10C7200076D479292F2B4AC67BA7B30F4A0CF3ADD9 +:10C730008B90AEC4B174C580FE90AE3E33E86AEC17 +:10C74000BA840BAC4B3F8AE7D0CC75DD88EB8271A5 +:10C750006F80758522D6A51BE7B9A19F8EB4C2B1A3 +:10C76000EB9B6D9C6B8E5EE76CCC674E18BBBEE896 +:10C770007CE6676E239F09766DE4FDA833C7F8FD5C +:10C78000A82036447CE802C987330CF809605FA111 +:10C79000DC1254C7AEC3CC6F7A838A07F1E3857E7F +:10C7A000FAB002630E11769053B3F25D629995EF81 +:10C7B000923CEEF1E90636645CFCC6A1130DFE8BDB +:10C7C00045273732A00B58D78D401788FF1BE52F20 +:10C7D00086CF826C2B3E3F63B5C9881BFDC61439DA +:10C7E000D6BD4E135FE0F7946667C4D72F95D997EF +:10C7F000AC5F2AB3BF987EB932FB4BE81790FF734A +:10C80000705C26FBB54BF15B16648FD1CF0BB2C7C2 +:10C81000D1CFA37E0BC6BD713E258BB95D06B61781 +:10C82000B7BF8629BEBD2C7B7CBF655976B4DF724D +:10C830004646BF658FED3BE49FE8B772FF04EC818D +:10C84000C66CEE97717F26C0EDBCB39E8CFD78441C +:10C85000789B11E70BE3415F85F3BFD8F5DF913D8E +:10C8600046FFDD913D8EFE7BBD8DC7275E3FCCEF41 +:10C87000FBBF912E8532001F8FB26974CEC5CCB735 +:10C88000D4FB19C541BCF2F65D8CC733EFC37EEB18 +:10C8900035AFF075173EBF97CA7874D766CCEB12E8 +:10C8A000E8AE2D72DF2E81EE36677F097BF252FDF6 +:10C8B000A84DE84741FFED1B397E82EF25F1BC888A +:10C8C000E14F6DDA6CDCBB6DE37ECF8F0CFADC6977 +:10C8D00094DFC8E1713FEF841AB263370A49242F0D +:10C8E000379E72507F9D36A18FF1F8F400E2637F8E +:10C8F000F615C968AF9E3DB42FDD1F81AF93061EAC +:10C900008E87F1F0436CFFDEB7DEF95A56241E1A0B +:10C9100056D33D8F301EACDFC530D76F5707E95C6B +:10C92000C735928B9FE72E6174CF1F28F986F95780 +:10C93000185770E0FD8EBC2043F998982D3192E392 +:10C940001A3F87D405FF919F2A3D134279F899A198 +:10C95000276D6EEBBD19A7715E2631EA7E8CD3B8C8 +:10C960007FEDBCC07DDDFDA69CB4B32C9C7F47EB66 +:10C970006EF641C4391FD9C887C59397470DBAFCD5 +:10C980004CD00F21DD9C36CE0B46B737DB45E36B31 +:10C99000FFF007DD53D3F11EB648FBC698DF1DE953 +:10C9A000AF996572CDC894C8737729FAB92991DF18 +:10C9B0003148AB675323E10C9F3235B27D56836A11 +:10C9C00081B3FD6E4BFBDCB59AA57E624B99A5BE8B +:10C9D00020E0B1C085C11A4BFBE22EDD0297F6D4F0 +:10C9E0005BDA4FDAE1B3C093FB1A2CEDA7EEF25BF2 +:10C9F000EAA70DAEB5D4BFC486176048283F277597 +:10CA0000D13C50B69DA796BBF11CD5C68C658A3F1C +:10CA100006BECD727F06A7F778F526FFBFDEEA0BCC +:10CA2000CD2BC5FBCF0D1679506FC8C5FDAD6BA9D9 +:10CA3000FE406B0B3D4FC9E1FBA93FEFD5F1FE0175 +:10CA40004C7D04F5BBA8E841DC4F87AE8C483C7FA9 +:10CA500091929381F69E9FF1B8B64E71E839E760E6 +:10CA6000BC88F57AD98AD0BC88F5CE559A2CF5F3D6 +:10CA7000D5AF5BEAEB8130AF045FE85AF7BD96E7CC +:10CA8000D769F75BDE6BCB6BDE81FCB7C96D67C81E +:10CA90007F742E8DEEEDA62EC27B1A9BF03C650EA8 +:10CAA000637FCA4E5E84F1F04DBB9BDD68C798F88A +:10CAB0006ECEA932F07DAD1BFDDFFD2980CF18FAC7 +:10CAC000E362F1198DC78346FEAEDE6ECDCB2FCB70 +:10CAD000E1FAD22C417E5D89785C7858FAD4AFE1D6 +:10CAE000FCC78F6B448F1F3D2EC8B7F9D8DFEF41CD +:10CAF000CE3FCAC6CAF725393CBF512F82E305F69F +:10CB000052BDADA7DE47F2A085F5413BF918BF67DE +:10CB1000B831E31A0FDE93F4E558F59359CA20585B +:10CB20004211724928BCB901E5727D869DE274F517 +:10CB300071BE9B76ADB1EE2F4B275F9C3EAA16E9E6 +:10CB4000AE307D4CCAA95884E76BE2C97BF8DB9F05 +:10CB50008378D1C07FE7723EE4477F1EF37E9C0F4F +:10CB6000D6C5E28368BD1960FCBC3E73D90D3DC8D3 +:10CB7000BF1778E6601ADDD38E47779B5A555586E6 +:10CB80007D3DA36AC9782ED3FC5E0518C0EEC8733C +:10CB9000CDFF55ED4CD83C4F18DD3E80FFC4F885E5 +:10CBA000DB45EBA2AF97D165237F199E8FE833F762 +:10CBB0003B4F7F1CF13427CFF724964CF19791BC63 +:10CBC000C8F33D9583FA431D857752BD1B608CBF2A +:10CBD000E277672E22FF00EF0DE470BBD8ECE77917 +:10CBE000825DBC1F805FA471D247E15D549FC7DBAB +:10CBF0005FEC3811FBC9D73DC4BF47FAA9AC27E3A6 +:10CC00007755970556933DB622F0752ABB5AD51431 +:10CC10003C5FFB7EAB5E8EDFB558B662868AE75E10 +:10CC200056DCBE9A4AB37FBFC12FF64299BE73222B +:10CC3000158ABEE7899E78DE49027387E3B5C3D0C3 +:10CC4000B723F3917E14BCF70A76B27FBDB7BCC39D +:10CC500072CFAA87E13A9D9AFCE7483FABCDA61F69 +:10CC6000203CB82E2EAF33769DC01030EEA7AE928A +:10CC7000BE20D1719D1A2B7F64AE375EFFFE38F265 +:10CC8000C15CAF89B7E873AC9B4BEA7C98179504FD +:10CC900085BE3B859F6B20BE4A520CBEE2ED5741DC +:10CCA000FF2F239DCA1E0DE97495319E64E4415700 +:10CCB00001EAD6A786C76BB3F9FE1DE9610C1E2FEA +:10CCC000124F27500EDBD0CF1974D2BD39A60A916E +:10CCD00072BCC13837050A94F0B9F9A1CB07107FAF +:10CCE0009B9BFF4E11617EB65C6EF76E293F531D14 +:10CCF00004780B1BF9D600DACDEB9318FA5F0D4DD3 +:10CD00009F55477ED777D5BEA7543C1FDC50DA919C +:10CD100081E7115631F9D3483B317A9E0D81BB89A9 +:10CD20001E836D3C2FC08C7D5D15E4F77F4C7875BC +:10CD300017C085E86F71BE5D65D899E6BD1F2929CA +:10CD4000DD8E764953D07AEE7E7597156691F6A9F9 +:10CD500014F6DF8278B901D7B551247ADA895FF009 +:10CD60002DC6F3D0212AB7E139EE8CF07C26AE1720 +:10CD7000683E7EA61ED00BC7CE67CC3C9866C77EA9 +:10CD80002E763EDBF254FE1D1585051361E874C056 +:10CD9000FD10E247E6E7D61E739970902E95FA4A89 +:10CDA000781ED6A9F17A33AF9EE5EF6398B74DAC04 +:10CDB00062743F44C476E8F7250EE9785F7CD1CEF3 +:10CDC0001717B927437D89DF8DF70E003E2C67E0EA +:10CDD000F9028029CEF3E2E1FD79F4DDA929783E5C +:10CDE00058E918387C7022E39F5AA23CD2C061D423 +:10CDF0005BFD268C172F613DFD09A3B0AEB8012E57 +:10CE00001A858308F71AE75616ED1C38DCC1F30FB4 +:10CE1000F5B9D598371649FF7859521FDD27FD8A95 +:10CE2000F3C1FDEE353DF87DCAA0C6BF47BA9931C2 +:10CE30004B7EFDBE5C3BE1FD9D3CFF2DB9D03E69C4 +:10CE4000FD0885A7ECD97212D257781F8608EFE14A +:10CE50007D18E4FB503544FB90543E44FB50A09DAC +:10CE60006145B09E825A1E76D7601DF4DD880E5152 +:10CE70000DE18392549AB758C5F3EB4935828AF68F +:10CE800050B7713EE1862AFEDD05D5C1FDF4BB72C7 +:10CE900039FDAFCFE5E7B7D6E7723B2859DB40E76E +:10CEA00016957A91F2F0C958BA22D7DF61BC271BD8 +:10CEB000729AE36365813F901B110781D52CC4EF03 +:10CEC0008A2985E9A99817F36AF27DE8577EDF3849 +:10CED0008F05FBB41CF172B82A2DC1CFF7AD95E0D8 +:10CEE000E87D33D675A17D8BB75FA65F1CAF7ED979 +:10CEF0000A89EE338B8AFFF19B61BE77ED4EA3EF7B +:10CF0000D11D6F90AA8600BEFB6759741EE44903C9 +:10CF10005FF788239928FFBA9E69F361E978B529FC +:10CF200098AB85BFD760F67BCF6B5E3AEFB42171CB +:10CF3000422DDA4DD1F3387EFE9F5DB80F87F07B2E +:10CF400043E5B4A1148F5C45CCC546BF63769B21F5 +:10CF5000BBFED1909FC70CBBF8B83C4CF1DEE36E32 +:10CF6000F0BF296F6BFDDE6AB34FB0E3A77756853C +:10CF70009FF3B866C0F661E4772D9AE4C5761C0F7E +:10CF8000E48C255E79F3D2C5F47D94D586FF0EF24C +:10CF9000C6527F7B54FC737943D89E3D4BFFDF47DD +:10CFA000F85AAA71BB70A9C7D187E7AC6EF659EDE4 +:10CFB000E077FE2AD177F28EE3BB80EFE38D930614 +:10CFC000B05D343EEC799C3E8F19FEC1287E18B5C9 +:10CFD000654B7DA7081FF83D10C97A4F9AF0712163 +:10CFE0003CF859CA35F85A341E562F05FC148D5D8D +:10CFF000FF71D947F8390EF8C1F847343EAE9116A3 +:10D00000DA30AFBF7AB1C022E327E67CA3F1158DF9 +:10D0100017B03F8F27023E3ED8CAF305478D754BA8 +:10D02000A1FFA075FA302EADD23A4EF3EF43A8C659 +:10D03000F9008DCEC7DC0E48C47BB037A1FEB0F43A +:10D04000EBB3635CBDD938A737468F488D0722E321 +:10D0500036D1DF35899E67F43A1619FA62CCF7D5D6 +:10D06000E4501EDA0B7FC935EE7D4DB7C6B7595572 +:10D07000464CB96BC66BC2FCCEE96A5560B1C51FA0 +:10D0800012987F1456413FAE734B1ADEE37EAB21FC +:10D09000E37114534B149EDF63D242B2A73E5B2F61 +:10D0A000D077619630457329481F22E95BDF3C2722 +:10D0B000C166BF677A3EA1EFFA07FDAC05EFE3ADAD +:10D0C00083EE0395E175AE73DB699C68FB247AFD02 +:10D0D000397946BC6A3A9B7E29EBDE81DF70A1B8C4 +:10D0E0003E3F5733F275C6062AC2715696A773FBA8 +:10D0F0003593E75FA7E7A518F6450BF96917116F98 +:10D100009D9E1723DEEA62C3367CFF36C515A273E7 +:10D110002801DBC7A374603987E2671847EDCCB9F3 +:10D12000C38372AE3361C2740C9677619359E487FE +:10D13000CCC2FE3B13F8F924A6F17B6C09F8BD00C4 +:10D1400009CF8181FD1E81A731FA78FF9A5DFDE943 +:10D15000F8FD3899BE032F3285F483FF7EC1F05766 +:10D16000B5CE3D5564EFD239D55501DB99C8FEFCEB +:10D170004925F4FD1C7F2120A402E7398560C9CB35 +:10D1800046F0103A2BE3FED2E8B841783F22CFE4D4 +:10D19000C76DC6FBBD8A92497E545744FF45B1C650 +:10D1A00003A9354EDC2ABAFFE8FE3A8D73989D76C6 +:10D1B000CF900EF3ECFC8554D1C6F83CD1DF5C99DE +:10D1C000275AF44CB392A6CA11F7EC4F67BB2CF761 +:10D1D0005CCCD27CCFC4EBA85DC6EA8EECAF0DDB95 +:10D1E000652E7BED118B5DC66A8F7C19BBAC23AFBE +:10D1F000F608DEDBFBE37BD7527EE54C0B08AA8A00 +:10D20000F0392919CFC5C13AF38D73524CD6262374 +:10D210009E9540AE655DDBF234E2FB344DA7FBAC7E +:10D220005035882E6D9AECA1DFE978D4FC0E809100 +:10D230005F7934474DE9A6EF1BF1735872832AA03A +:10D240001F69DAFDE6F866FF69651E01BF1F162F2C +:10D250008FF154DE25E7319E8AC557878496F7BF44 +:10D260008BF9859F4BE4F7AC74DF4FCFA3FDEAE762 +:10D270008CF1B64AFEE7B09FA1865FADFC0EC6B941 +:10D280005E7550BCF9AE6F7FF470B5867882FD9FF5 +:10D2900041FEF6E318DF974A45B2CFBB26F2F89C71 +:10D2A000D426905FB859B3D7BF0AE54B39DE21ECDD +:10D2B0004FAB0FBC8FDF3B3E53E6B3215FBD9433D2 +:10D2C0008F9E9F29E3E752CFB8133CA8A7CCF73B2A +:10D2D00013F8F76C3BEDBCDC9BC7CF15EF35E8EAE4 +:10D2E000A746D965F397B594E3797A8136C95CBFCF +:10D2F0002207E9BB10CA39999E4B8240FE626782C1 +:10D30000BFEC5B117833FB55CE81709811EB7D3B00 +:10D310003DC7F5D0FBA9D6EFECFED278FF97C67CCF +:10D32000947389345E672ACCCB15D9CF04FE5C8C0C +:10D330007D8FB82A6FEE9B888F9772F4A13CE21B19 +:10D34000431EBA0F9E10265C8C5CE4F9A521379829 +:10D35000FDB8DFA06F4A413E77979DD9C8E591425D +:10D36000799908BBC4C8FBF3EFD9ACC27F517F23C6 +:10D37000B6AA2ACC4632ED69CF583BE67DFD2CA6F5 +:10D38000ED46BF4B63DA8BC0E607F0DCC36F0CB031 +:10D39000C955720DDAB137D6723B6935DA495C5E30 +:10D3A0005AEC9A68FBC7C5FC2A7E3FE876B7ACA268 +:10D3B0003D116D0775EB3791BDD00DF602DE5F8A2A +:10D3C000B6834C79B33520329467DBAA6C64D76F8F +:10D3D0002B1BFEF91CC44B95AC515CA36C68E95C3B +:10D3E000AAAFA671DEC45767517BD27B414F02E1E1 +:10D3F0006F51F5DBF4BB08A372A1EAF464D43BBD22 +:10D40000C63EE27768E76746E081713BF97677B11F +:10D4100048F692110FD9FF40027D1FFD7D8FAB0FA3 +:10D42000E3B9F38D7CD7EA6D12E5BB56579CF4E265 +:10D43000BDA8D51B05B2AEFD2DBE64F4B356ADBF7D +:10D44000C98EE717D466570B9E055A15B0DA4FD12F +:10D45000FE3A5814849F66C04F2C7B2BDABE8AB6E6 +:10D460001B0A271A764325AB44BBE12D23CF65DA8F +:10D470000F8B8D3C1790877D71841E1BBD2F2FD481 +:10D48000954D04FC37CB3C7FCD6A6F22BCCE973ED6 +:10D49000FEF91CE4FFAAA2225C6F86E1FF6D0BFC83 +:10D4A0005A41FF73DB7989F8ABD7CE487EF6565EDA +:10D4B000F95C1BCC6FCF0353B23E80FAAB26DA8DFA +:10D4C0007B61DA93B5681FFDC246F22C9EDE5302E3 +:10D4D000122B017E7306042ACD7D480A38991CC19F +:10D4E000E749C67A32AA4684A208BEBE6E229F5F72 +:10D4F000CA7AEEC702D1EBD9E89F694503E427CA8F +:10D500001AD905CA448DBE0B6FB67F4CE0F900FBFB +:10D510006EAF8EB1DB0298078EA7C13C50BF1406D8 +:10D5200012092E0AA451591C48A1B224904BF5A50A +:10D5300081622A2F0B14D2F34981A9049705665002 +:10D5400039395041E594C055544E05BD82EDCA03AA +:10D550005E2AA705AEA7E7D30337517979603195E5 +:10D560009EC0AD545F11584D6565A0899ECF087C63 +:10D5700083E0AAC03709AE0EDC4BE5158107A99CF4 +:10D580001968A7B226D046ED6605B6107C65E07B2B +:10D59000545E15D84E656D6027D59BFC7704FF0956 +:10D5A000FAF586949755FEFDE910D93DBD71E45F0B +:10D5B000D7442E3FCFE5E92D13ABC3EDB646B537C3 +:10D5C000DB7518A579AF4F54424A31F9D3C595E8B8 +:10D5D0004FF702FF67C3FEDC5D5834807677ABB14E +:10D5E0003F8A8D7FCFD0F49F53E6F17B4277EF6E79 +:10D5F000E2F9869AB48B8AC7DC3391BFDF2B07C967 +:10D600003EE86D61F4FD6567C99080FDF4BB65FA85 +:10D610005D157BF6A77B308FBFA85AAF4279A8056E +:10D62000FD14C7B9519F4BF0EE8936236EA33F829C +:10D630007C535095B100CF49147488E84E63DCC523 +:10D640008BB0368FA921168E77F42758F5D0E04499 +:10D65000D1888F0C3F86ED7BA79754F2EF12F17BB8 +:10D66000455B1F2822BFAED71E12F07B6F41702C86 +:10D670005E888853F67636BF88F67C519767AF820E +:10D68000E3073D33707E8306DF15F668754EE8AF1D +:10D690007887BED709CF4BFBFC7509004FDA15DC44 +:10D6A0008BE5E4C1BEBA4428A7EE0EED45776B5A70 +:10D6B00068B8CE05F0E507D93E446BC5903637090A +:10D6C000E01927F47D68D6560FFBE74EC07DB2F710 +:10D6D000B54F80F9F4FE8679DA00AEF9B8470273E7 +:10D6E0003EBCFF6067FD24625F14AD47477CE7DD09 +:10D6F000A752DCA4571E76A6948FDD9F7E5C37AEC2 +:10D7000033C0BF1391A78FD03EE455B1CA20ED03BB +:10D71000FF0EFD8D3ABF4F7DD2A00FD88710D25F8C +:10D720007F82EAC5FA91F94CC5EF5DDE90CD7F5757 +:10D7300021716311FD3E90497780DFC98B9322F7F9 +:10D740004130EF9B19F6E1F8F83DF93F04BFDF40A7 +:10D750007AAE8E8FDF1B0CFFF3427CFCFB301F7F09 +:10D7600014C9C7D1ED52F3797C291ACFBDB23A85DD +:10D77000F0E56262B082DF8343FB29295FBC24BCF1 +:10D780003AF2FF67E0F543434EC4C32BABE1FEB86A +:10D79000794F399EBCD96AAC3B969C6314372C24D4 +:10D7A000399797CFE9AFAB8BC70B4D39E778D51BCE +:10D7B000C2B8A129E77E7721F965C8992D38855926 +:10D7C0009171D269A4FFCA8CFDEBC8D52FCB47B9A4 +:10D7D000539E6AD0078F9B6E11552FC9993A7ECF01 +:10D7E0001BECC08E34DA1FAD927F269091FDD35B87 +:10D7F0003985E20885602FC895F41B53212C93AA24 +:10D800005411EF919BE7E098DAE48EE433539F875D +:10D81000F9D0A48754CA6F209D62FBAF19F30CF7AF +:10D82000C3F3259DF7E758F234FD9E1C7ACF6C1F99 +:10D830008F6E3B4CBAED384A7A23A996DB07C91D97 +:10D84000A944C7C9F3FC78A338E2BEA7DF8EF1452F +:10D850007FBE7449F4BB2A9FC7F3FFBBE9B71A3FE9 +:10D86000A4538D717F957E27A800F48E06F5FDE008 +:10D87000B3A754A15EB3933DAD31BE7F5A2DEBC328 +:10D88000DFB7017CD1EFE305C524CA4301BDCEA7B4 +:10D89000FDB7A7A8B8FF1DB9FEBBF3C7E10335511B +:10D8A000ABC0CD6CED9D73A32B1BEF5FAA0908AF36 +:10D8B00007782BFAFBA9C3CC801FC1FA2F1A1F6867 +:10D8C000CD9FFD26C6074E4FD4BF9B9FC1F3005886 +:10D8D000EA93543AEF6AD2F185F4BFC98F61FE51E1 +:10D8E0002B4CFEC1EFBF81FCDB1CC917F1EC997911 +:10D8F000F95C5E3E9D7F217B26D52B733EE7FC6362 +:10D90000E6757BC6E77373BE5DF9E3F3FBE6EB7E7A +:10D910001DC4D6661C53898A5738DD9D43E87F3A7B +:10D9200017B2538EE96837F338A6DF88632A254A91 +:10D93000541C53207BDE8C5F46E79DCD38A6F91D35 +:10D9400089683CBF926F3D078BF288F2CFC67A7A26 +:10D950003630FEFBA54724CA539FD5C58F50BF9FC5 +:10D96000AD024420031AF74616E22B44AC2A43F9D1 +:10D97000833F3D8A7E2D7BC8A3E0774117FE596027 +:10D980003ACCE3D09F252A65E6A338E622CF9E3C19 +:10D99000067A6E4FC53FE7615EECD02980611EFBC1 +:10D9A0002B66D2B9A68587F7E5A15D1B3DEFE5FEA5 +:10D9B000A698E747A3D7BF7CE5DB2E941F3BD53A5B +:10D9C00005CF85C5CBEBFD4BFE685EEF6DA4A7A42C +:10D9D00035231DF8432D1DAA48793D335F95ADBD14 +:10D9E000ECC4FC5CF69DDC6ECC617DF47B22D174D2 +:10D9F000BBB2C0FF3ED2FBCE70DEECD065E9117940 +:10DA0000B37B726AEBA083A746F366FEA338AE9E93 +:10DA100036588174B6B3EA15FA9EC1423BF8A7881E +:10DA2000E719EFA663DEBCB1FA8D0C9C8F19A78EA7 +:10DA30005EBF198F8AF637FF237F343E4F71EAB3FA +:10DA40009E9B9343245B62C7A9CD3899E96F621C02 +:10DA50004C8D21A7A3F16D8EDF2870FF92D9F87746 +:10DA6000F90F1BF80639201420BF76F07344BA432F +:10DA7000A07344673D6F94505CA42AB65F301A17B8 +:10DA800067A1D258F9C2C638E732B20AB89E6EB45E +:10DA9000F1F89F70EF1B6B705E8D154E01FD639961 +:10DAA0008DD8F03CB8A380EB9B559ECD747E353A63 +:10DAB000EEEF28E0FEE6427BA84435E2829E18FCA9 +:10DAC000140F1F276C3D8B70DC13B74B0CFDED85DD +:10DAD0004D33B3C68B27FF1AE90208F5DF0B188D0B +:10DAE0003BBA5F78B92F067ECC731CD17995D1FAF9 +:10DAF0002627C58FCDF31CE6F3B9C6BA6F37F0C43D +:10DB00001C3D65B83E3CDF817C79B1E73AA2CB553C +:10DB1000B0FDBB2B2F7CBEE3F6028DE77DA2CE8548 +:10DB20001CC1784869D82EBA61D4FEB0C6433E13F2 +:10DB3000EAAE2B888C83942FE179E57D4E3108F392 +:10DB400075BE553A80BF5F36629C076C2895E91E0A +:10DB50004BC3DB9207E5BB330E1F99E74E4C38F100 +:10DB60009CC0FA22E474A23C48F1C6C473323D8FD3 +:10DB7000E6B7D2026B5EC8DC9F78F832F727FAB9B5 +:10DB8000B93FE1764F95611E7F7302D78BD1ED9F30 +:10DB90002AB0C6B3A3F3D3665E36FABDFB8D71CE51 +:10DBA000FA6765A1FC6DB0074B2F86DF4D3C1D3F2A +:10DBB000FFA48AFD3AFFC4BF3B69E6DD6FA84AA512 +:10DBC0003CFBF10689F20149D3D47E3CCBB4AE8054 +:10DBD000EB1D530F46E7EF56B1E01ED283C6FEDCC5 +:10DBE000807AB02C9CCF4BACE2703C3D68CEEF62AB +:10DBF000F378DF2BB0CAC7D13C5E1C7E33F96C25AD +:10DC0000F267F585CF232CB7F373CBD1CFBF318A21 +:10DC1000F7A76EC66F0C7FB35AA4DFB5DD06FF43CE +:10DC2000FA0D56F1EF51BF7BDE41BF9793542D3E65 +:10DC300087BF6774A2E9DDA573519E54DB282F309E +:10DC40001A4FDD2AF5E1EFE02EAAB691DDBBEDB16A +:10DC50000AC2E710C8933B6DD86E037D0F34A198BC +:10DC6000B5486004BD5BC6EF7539811F705CE75F26 +:10DC700097531ED9D9E46AC1DF4F3C62C8A150D383 +:10DC80000FE87BDCAB27BB5230AEBA58172C79DAE1 +:10DC90001B6B9C96FCB1491776E6C9C4EF6D39B78A +:10DCA000D9286F3D776AEDB23A8CCF6EB531BAAFF5 +:10DCB0002084F3BB1A7D3FDC88F31AF6C4309E0F34 +:10DCC0002EC5F8EC07746FCBFC9DDBAF3A3E6BD2F0 +:10DCD00059345D1C8FE263532E99F4114F2E45C4C5 +:10DCE00069DF437D372A9F4A96D23873A7BEC64E56 +:10DCF000BBC272C9940FBF36D6FB6ED9D667F7C2C6 +:10DD00007ADFF5F35B08EF9EFFC11BB8FFCEAF0BC8 +:10DD10006C03ED93C3178BFF279A721CF3E66561C2 +:10DD2000BCAEF087CF21231BDFBAD67A0E395A8FCB +:10DD3000C49753E3CB9FFE026E47C53F376823B9B4 +:10DD4000BC65A874007FD7EAFF01E04B890500801D +:10DD5000000000001F8B080000000000000BE57DA4 +:10DD600009785445B670DDBEB797EC372B0924E12E +:10DD700076201020090D040810B54320C691A59106 +:10DD8000DD44E8B00B0182328A234A871040C48FF9 +:10DD900008A88C32FE0D233E9E0E4E44461905EC1B +:10DDA00088F260C625282EA30C46164541892CDA38 +:10DDB0006EC33BE754DDE4DE4E223833EFFBDEFF7B +:10DDC000BDF87D16756B3DA7CE56A74E55CFEB2CF3 +:10DDD0003196C8D8FDD9E7FBFBA220654DBFDE9A7E +:10DDE000C0986F6914DBA63136A9FC52FFAA1CC685 +:10DDF0002EE3DF758C4DDDFF5B5583FCA4CC1589CC +:10DE0000BE482C7FC885ED20DDEE83EF61DDC32B9E +:10DE1000FDD9508F29171B1D8CFE2E3B5BDACF13CB +:10DE2000E3450465E6EF67FCAEF1EF4A1D5323B10D +:10DE3000DC46E5BEA1D0411EA4C7257F3534FD6B6D +:10DE4000477707AD3F631F77742763BAB8A33B05D5 +:10DE500053BD9F6A2B9B5407E3CB16E67D361B47C9 +:10DE6000F724DF14D552EED6F8F83585BC5E7DE296 +:10DE700080E45390567FD227D90AE30ED614C6A069 +:10DE8000BF57A306C43466B7B40B4DD72DAB0C0CEB +:10DE9000CB047C2DF3521A035DD741FB0796CD09C5 +:10DEA0000CB332A642FE59C8D7583DC9B1867E3A56 +:10DEB0006BB1D47FF4A09D0D1980E76AD5A24A1AF0 +:10DEC000A64A09E26D45A452F204B5E370D744B9FD +:10DED000B7F99C08879B8D8FC2F60ACD5F8954BE27 +:10DEE0006FC62F96421FD8AF0E57E87CDD9A85DAB1 +:10DEF0009DECE8BE4E83745D47B71BD3258ACF8E59 +:10DF0000F85EE280F9B7D1AE58E02B49F4CF58A4BF +:10DF1000FA692F31AE8CEB53F9FF1A717D962BAC59 +:10DF20001AD24722EEFD8F46806B09746B875451DD +:10DF3000A11C5287E250651763BBD2BD6370BDEE72 +:10DF4000945DA7BD0457656F0FD04DD992BB03C335 +:10DF500060BDD57836D513D97A1E65B09E88DF327C +:10DF60009C0FB43F6A0DA4215E4FA60F2D43385A73 +:10DF7000D55F722FF5B7A293F78154282FD4D845D7 +:10DF80003F0EA778351C6F35FE7B10967BA663FB92 +:10DF90008935161F837916B228BF84F3D2E2184B55 +:10DFA000616C0BD37AB02EADFB0788092F6FE23F6F +:10DFB000A1DEF134F75C840BFAABC0FEDCDDD515D5 +:10DFC00032F6931F4FE3445FA11FA0F3ACCAC82BE6 +:10DFD000E39345727CDA6C0E758D4AF8BC1BC7035F +:10DFE0003C0E44B87E293E578AF535E073A5919FD3 +:10DFF00042F1F9EDDF3BB8114FE75DCCC5FAB4CF84 +:10E000001F8E25F1AA62E0EFD5B1E679ACECCBF337 +:10E01000EBC5F85A2AA7CF27C5FA3A9614B1138050 +:10E020003ABB83F9C2FA427E0473237FACB7B1399D +:10E03000463A7D528BA2FA8FA70F7D12E7BDD229F7 +:10E040004D22B86279DA2CB7B4422AF78BFE9F448E +:10E050007A86F1B664C03CA0BF58C1BF7AFD39587A +:10E060003F11D3A14F72FC6A3D10AF36596E139F1A +:10E070004F0BFE7A2095F75B2C4712FF4E7F40F640 +:10E08000DB25E2DF51C307303685BA82EF7B1BAD5B +:10E09000E9589E22331FF0055B623D8EFCACC27FC7 +:10E0A0009733189B092058807ECAB33D3101282E32 +:10E0B000F7F1729DDF41AED902B00ED3BC91954805 +:10E0C00007D3579BCB671EBDCB87E3BF3988A952C7 +:10E0D0000AF6A71C6FCC6A91C74B8E1ECE7D35AB5E +:10E0E000A5FE7E2D2AE1D308F8472E73215F1F5E1F +:10E0F000B69B9D0019748915C48C85CF6318970F42 +:10E100003079DB18833EF8765943EEAB584F1AFA54 +:10E1100017C4EF3485E391316F9651EE76EFC4D793 +:10E12000B9319CE33B147F9F887559CB5809B6479A +:10E13000798AF23B4E669524C7A15FA4BBF51D3BCF +:10E140006E592319E870922AE1E27D82F887F6F190 +:10E15000826E141093317148479D5405F3C0529854 +:10E160008FD7DCCC02EDE0539D0A788B575C920B85 +:10E17000FA6FB435D674007C35F560AEAD305C878F +:10E1800032B5BE03D40B1FA6315943BA62D1F95838 +:10E19000DEC7E2DA0AF9D871EA4A2BE4633516875A +:10E1A000CBDBE81BEB467CAF9DC45419F822CCC9ED +:10E1B000E5FCD4A55F330B7C4F2C00503494276AC8 +:10E1C0007132F2F724E6DA06EDDE58B19C6518F0FC +:10E1D000F1BDC0438C06F40E7870688CD6B190A562 +:10E1E0006D9125633D0EEF8A4EEEEF3492CB6AB807 +:10E1F000278AE898215E5876B87F1BD41FCD1A1560 +:10E20000943B8C35302CD7D28B2E233DEB7CB4D273 +:10E21000C2E6703D59E9E3F85563D750272AE15724 +:10E2200001FCAE2178387DEBF8D5E7119FE59254DB +:10E23000681F5EC6F933745D339C7CDD7B74724766 +:10E240003B918F7EBC7C59063E70083E082F73CDF3 +:10E2500009007C612CDA25C178619ACADC90670ECE +:10E26000C99F2921FC95C44761F9AE7819E735C3E8 +:10E27000C29424C68A447BF724267D0A742C231D6D +:10E28000933C55D8A73A5DE347B7EB553FF43BFCC9 +:10E29000F668D71AE0338BC3EB45B88625833E0278 +:10E2A0003E08EB5A5988F4F0DA54DEC77AC0475D6D +:10E2B0001BFCFD402AC7779CEC4DB6A8D8BBBFE13C +:10E2C000D5025ACF9E12F41B697BB4E1601ACA7959 +:10E2D000F8EB88FF7BB4C11D89E57A9E0518CC6BED +:10E2E0004B7873DEED4826F9A3E77D987F1C8661A5 +:10E2F00083A1D0F968C38A48A4F3EB399D578260A3 +:10E30000E863A06F5C1FC04BFA24C6AA52106C9041 +:10E310004F512DF4DE326F8DF3453B74AFCB2B9014 +:10E3200027560DFAFB40664DB8DEE3D98A7B705C58 +:10E33000D5C1D4FBA17FDFF78067470B9ECFED9D52 +:10E34000F8DA63507FE5A26817EA75EB504E77D68E +:10E35000DFC4F8AB49AFFB695C8965115D8D9B2417 +:10E36000B9D6D0F2342DC0FCE43D11EA1A27F6F3F9 +:10E370007E1ADA8D7FBFE7421483F97FAC3445E122 +:10E38000BC4E2F7D270AF1F7F7A532D9455324AEAD +:10E39000AFA72EFB69C034C84F73723ED9E7744FE4 +:10E3A000761AF43F5B9248FAF8563FCCD420DFE669 +:10E3B0006D8F1044C7F3F3EBE24D795D0FCFB7B328 +:10E3C0004A5CFF797FA8B7758279DEBA3DB60FC285 +:10E3D0007C1A0408E2FBF4AEB42D688FFD56F0C33E +:10E3E0003EA767AEB33F9F9717DA7DBCC7CE022426 +:10E3F000AF1AAC2C92CB7D09E8DDCB876A35AF0331 +:10E40000FB3AD9503ECC9458939DF88E1D40BC9E4B +:10E410004A9619D26BE8BC67FE5DB5E13ACE2C6432 +:10E420004DBE3E384F69E59D795C0FE03A84C215D8 +:10E43000AA37A6D72DB231A43139BB18E5DBA5D553 +:10E4400012C9B750FD01F2E0C04BD0EF0CA15F66DE +:10E45000D69ACBCF1FBCFDC06368BFEEB6915D37C7 +:10E460001BF58BC1DE0FD52FEB9C42BF0C60032F39 +:10E47000833CAA8ECC88F1FE8C7D7D7A19D4B5338D +:10E48000F6C53207A56797A9944E766A84F779BBDB +:10E49000EB0F74227A6A18807A79E4A122C7CD90B2 +:10E4A000BD2D59D64E227F6C191B784C437A05FD41 +:10E4B000E9447E0958913FAC205122615E358004C9 +:10E4C0009CA7AC42DE08576DFD6B2FE1FE07E0DE36 +:10E4D00006708DEC9F69477AAD66EC22CA1F7D7E7F +:10E4E000B725DB689CB2907D4E28DCCFE8700F0426 +:10E4F000B865D4A7D96F69AC7DB8757DDA1EFCED1F +:10E50000B59B0F7AB22DFB5DE793C9825E673C3104 +:10E510006665479840F5DECFD21B2389EA89AEE5D0 +:10E52000CD921FF9514E4E22FA72203DA620FE14C4 +:10E530009F804FBA2C119BBCC70CF43C7B4F04D17D +:10E5400041722799D9F3F10BA74FD90D7204E9391C +:10E5500092B777304715DA35DE3DF7F0FA2FD95408 +:10E560007B32F15DB285D240B2259FE8F5A4895E89 +:10E57000579BF34087A6FC57D6C6749417407F2755 +:10E580008DEBF095D4F63E28E0CC207CCCD0DCC5D9 +:10E59000A8B76632CF4A95F8B496BE9F566A0FDC8C +:10E5A0008D7CFE84C47C80A7F92FEC781EE5D3DC3B +:10E5B0003F3E148DF2E973A53609C7ABD85613ED6B +:10E5C0004639A5F8A2B1FDE77E2EA742C74BCF90F2 +:10E5D000847C75474BA0B716E03F91006634ADFCD4 +:10E5E0000D8CF30DE019F97CC1AEEF287FC0ED680A +:10E5F00062C9D86F6331CEE3D6F2C8CA2A285FB8A1 +:10E60000DBCC7F73FFE3A124347D017F9D04FE3AC0 +:10E6100061BB054F585D68172E3822BB709885ACDA +:10E6200089E00B6DBFB0EE848DE4BB8535A50E6926 +:10E630005D0E968E0DF96A215BFBB59C0BE9AECFA2 +:10E640003F649886D89173845C0EA5FBA80C33DDDB +:10E65000037E5CA8E77D30AF4CACE4E772BAFA3FCA +:10E66000ED6E1B7CFFFCC30E5BECD0DFD927FE1ADE +:10E670002D65B7F00163CB695DCED675F95979F197 +:10E6800095E097663D20F48FB61B26D801B27B78C3 +:10E690005A610D440F01B82BB6585D48FB153B6419 +:10E6A0007724DA4B7FB393BD51B1E302D16F85E498 +:10E6B0006E92FA1038D128BFF5759BB7E35431CA72 +:10E6C000E77960B78F00969CFBDC255E1FE83D0C68 +:10E6D000E5F1B39F14DF8D79901F8E36D6ADA8AECD +:10E6E000DED618D9C6BAD57D52CCD00FF19FDFD275 +:10E6F000BA7CBE4F621D9CADDBCFD976C686FC7A54 +:10E700001616488DC57594CB6D316DAD5F60D48B99 +:10E710007954AEAED1AEBC8E5FA2CEEE4FF4FECC3D +:10E720008B30FE9C0FEDAE1138DE33B74733A0833C +:10E73000CF944A4EF7BFAB4942BD3CC7EA4B522982 +:10E74000E5DFE73CFE6BA2C7D9877F9DC4C89E74F6 +:10E75000A758481EF85210BE999BC7137CB39897D0 +:10E76000E871CEEF640FDAB7971456F26C1BEBBA70 +:10E7700041F08D9D2DCAFD0DEA29E8690DC0F39980 +:10E780008D919DE17B5B26FBD6CEB61E93E0FBA56B +:10E79000864489E4D761AB03F1B3786F2CD1D3EC15 +:10E7A0000C6EB7151DBE548CFCB5D8A954DA558231 +:10E7B000DF2CD760759501F81DFE32B0DFF3B65B34 +:10E7C000A0FE45F8FEA8CB549FF0F5D9567BB8D4EF +:10E7D0001BD2246E47C3DFDB281717F0BE5AF89907 +:10E7E00069E711FE5732B81C5EB8FDB3E24791EFFE +:10E7F000A64556C6007E2E1E3961EB887C9160616D +:10E800009938AF86539467AE442D26B9051F0B7710 +:10E81000835D61E4DF274E85F0AFB91CF437E16D0D +:10E8200021EC24D62420DE9A8A519FFB60DC6D30D7 +:10E83000CEAC8D50DFC0AF2D74616BF9EE6CE13F53 +:10E840002697C5A07D335BF07BE87A85F2FF03C88D +:10E85000FFBD5AF85F6FCF3673BE6F4FEFE9765842 +:10E8600085D5FF24E2A9E26F7617CAE18A1D9CCF05 +:10E87000C0A06CCA04BA3FF387FDEFDD0CF09CA981 +:10E88000B3268CA051CDF275CE4EE053B447C18E65 +:10E890000A23F9FA2DD959C945A0D760FE67123C61 +:10E8A0000CE9BA157FC2F736F9338191FCFAB7C982 +:10E8B000D55DF77F2D47B7CF8FB3DB91ABBB43F06F +:10E8C0000AF6440C0CC3BE786A5E67948FA1F8D533 +:10E8D000F11A2A1FC765686DCA47F87B8F19F0388F +:10E8E000F7E92F49DE7D03F24E5651BF005DA3FECE +:10E8F000867D02EAFB05FEAF295F837A8BF2F5E3A2 +:10E90000A4DCB6E036E333B4FC6EDC07F56F597F68 +:10E91000EB72E68B827E9BF6CAFEAD30B5735A531E +:10E92000741CC05713C6FD07E754918FD5F36C6A6A +:10E9300039CCF39C2F57F561BB3046FE9F739EA6E2 +:10E94000E858F46F0AFF4EB5E342AF93FD801CC355 +:10E950007EE875D2B04FAA8E12F59379FD66BFC4DA +:10E960001E395A43FF809FFB2542E9962C43F46BE6 +:10E9700008BFC570F9C767D07F77DED7D582FEBAEA +:10E98000F32B2EF1BC9215C7D0CFC3AA08CE93BEED +:10E99000EB93604EEC14F3BC3784EC2AB72D05F0F2 +:10E9A0003E9DA384CD39541D8D76BA1C957700ED1C +:10E9B000D1598070B4B367AC0DB103847D3B6BA3B8 +:10E9C000B5857EE8FF7EF20FCD16F6FB9CCDE6F214 +:10E9D000B97BCE10DDCD0DA13B2FCE25A535DDD9E0 +:10E9E000BB08BAEBC3FA20DD0D97232D48E7E70EED +:10E9F00072FFD6F91556B612E1FD83E467D0CFF960 +:10EA00003D32C9E9F3BB799EF912899E75FAD7F1B7 +:10EA10007716E9B27BFB7AFDEC9FFE3EE06EA852D2 +:10EA2000F1FC47B98F417AF6F9BF757B09F32FBC2A +:10EA30009FFE116B5DBF68DF7753685EFBEC0CE7F0 +:10EA4000756EDF7FA5A33E3EF7A2DD85F47C6EB92F +:10EA50009DF6CDBE7D51A4EFCFA5713BB17AEFB746 +:10EA6000B98D24C757D0FAF4ED62A3F4FC9E1F8E33 +:10EA7000A15FE2FC1EBB86702CDC1741F6F2C217C8 +:10EA8000C3FC0CDBEFFD96F67DFF2E7816D8B85F41 +:10EA9000F61CD0E34EA4EB58EEF75AF8D2A0DF579D +:10EAA000C1F8F377D5DBA64379D1CB3FE5A29C3AF9 +:10EAB000B7B3DE86720CECE0C791BEAEE9B2F641A8 +:10EAC0002BE0F92BB40D3B023377797D0C9ED3B448 +:10EAD000C60BC7C339C003C205789983F66B7BF8B0 +:10EAE00018F7BF161F5F4FC1F12BF60C64E8CF6912 +:10EAF000C18BE4E6DFA3FCB09741F8F9F77DDFE6D0 +:10EB0000E2BEFC4AF0DE86F026FEDF81B7F67F2DFE +:10EB1000BC9CDE93BB707D154AF7ADE9FA853B28B6 +:10EB2000FF4C948BE67B95FC5EF77F8CBEDFFC5F31 +:10EB30000BEF95D6FB9058EF28D54EFEC39FD2D948 +:10EB40002F80FBCBFF4FE9BCD92EB2B81C7930BF68 +:10EB50000F997F7CA144D607D91DD5A08EB1BF8661 +:10EB600071CEAD32DF83D07E6414FE1BBAECD89533 +:10EB7000EF3FAAD9F161E5B87F027B621BF9B18F43 +:10EB80002B4700EE066F01D90976C6E9EA5282E307 +:10EB900049DC4F8D768FB53E8C76B797EF5730BFF7 +:10EBA0000BEDDBC17615F36F56C17CA0FE9B5116B1 +:10EBB000B55A6B1F3FA3120E4E92C0DE1D9D6FDE35 +:10EBC000A7DC1CB2DF9838C95C3E816D4D54A0FFB4 +:10EBD0000973ACCC2FA15FDA5C3FD84525BC4C64EF +:10EBE0009535DC8F73453CD1FEB02155DB2AF3F31C +:10EBF000677607C0335EEB7A1BFA618A9BF1741B60 +:10EC0000D312C85F41FB4CC62CB45E0D09F94FAE60 +:10EC100031E2974F05E0FB46C94BC0FD1E23FFCDF7 +:10EC200028F74F944F2E72909D6C67B07FE4F336B7 +:10EC3000ED37EDD435A4063C0F25BC7AACBB10AF44 +:10EC400083EC6AB5CBD49EE0AE76F7736891FFF3A0 +:10EC5000F84DEBDA367EF5349B354D413B339A4522 +:10EC6000BB707F1EED48654A023527FF219E6892E2 +:10EC70003F7028AB237F60BE72B6198E0C2A0FA09E +:10EC80009FAB7A11B4477A4C651A3FC72EA338035D +:10EC90008979D9E588167BF3AD7CB0379D9412BF96 +:10ECA000BEF504B72F2F153CB7B20FD01FFABE7DAB +:10ECB00003D0AE157FBEC6326C27338B0BF7C1CCA9 +:10ECC000EDD6D401D82FE78B987C8B691F1CEB0EF7 +:10ECD00037E127BE24CE944FF47434D5EF3029C3E6 +:10ECE000549EE2ED692AEF34A7AF299F5639D854D4 +:10ECF000BFF392A1A6BCD3F72B53FD2EAB6F32E529 +:10ED0000336B6F36D5EFBE699AA9BC877FAEA9BCBD +:10ED1000D7F6DB4CF99CBADF98EAF7DEBDDC54DEAF +:10ED200027B0C654DEEFE07A53BE7FC3A3A6FA0332 +:10ED30003FD86A2A1FD4F894A97CC8E99DA6FC355F +:10ED40004D2F9AEA5F177CC5942F647F35D52F72BB +:10ED5000BC63CA0F573F32D5BF3EF94488DF43F545 +:10ED6000DD0E74A154F2F3BE1BB433A6FAB0532BDC +:10ED700043BAB10A7AB831EB82A97CA4EB07537F7E +:10ED800036900F787EEA40FF30A4E1AC8ED248D6B0 +:10ED900040E9E0BEDEA7BBE2BEF571DF4A24AA3738 +:10EDA000077D9B8E7AE3AD82DBE9DCEB52323F0FCD +:10EDB00056589382743DDA11E9C37DBFCEB7D14175 +:10EDC0009905603F1A1394285583112C00FBD2D863 +:10EDD0006018A571C178FA1E1F8CA53421D889BE90 +:10EDE000270653284D0A76A1B443D0496972B0175B +:10EDF000A529C11E94760CF6A3769D827D284D0D23 +:10EE00000EA1EF69C14194A6078BE87BE76021A5BD +:10EE10005AF0464A9DC11B28CD088EA57A5D8263B3 +:10EE200028ED1A2CA5EF99C1C994760B4EA7B47B97 +:10EE3000B09CD2ACE03C4A7B046FA5B467F0766A24 +:10EE4000D72BB888D2ECE0DDF43D277817A5B9C1FF +:10EE50006A4A7B07AB287505EFA77A7D82F751DAFE +:10EE600037B881BEF70B3E48695EF031FADE3FF8F5 +:10EE70005B4A07047F4FE9C0E0164AF3834F533AD9 +:10EE800028F89F940E0E3E47ED86049FA5B420F807 +:10EE9000127DBF26F8674AAF0DEEA7EFD705EB2925 +:10EEA0007507FF4ADF0B8387281D1A7C87BE17056D +:10EEB0000F533A2CF8117D1F1EFC1BA5C5C11394DE +:10EEC0005E1FFC84D292E0194A6F087E4EE9AF8241 +:10EED00017A8DD8DC1AF291D11FC81BE8F0C7E47A7 +:10EEE00069B31FA1C01A22179BE59FE532EEBB2331 +:10EEF000E3DAF4BB35B717F2F8C188C719FA3F4611 +:10EF0000554AB42F7F24E2AB57494E0EB26B98AFEF +:10EF1000C1AA297C1C3589B15BF01F1A63F583EC0B +:10EF2000643FBC790F6FB7B2F0C4D1DB51FF2DB293 +:10EF3000338C530895BFFAB86FE5EF4F44BB6B6550 +:10EF4000DFC60AF4C33CE06C2CC3B44326D7A3D17C +:10EF500099DC8F9B98C9CF9F46F7E5FAA46C5126A0 +:10EF6000F9F359C2D5C1355EE821BDFE073D54EE27 +:10EF70002F8A6C4A277D7195FD5C6DBD2BC5617D27 +:10EF80001B96EEC7C3FEEFBB7A7B65B6117FF54FCC +:10EF9000F49397D9FFDFD2CF353FD70F53DCB6912B +:10EFA000A0FF4AC5BA1FB57A26A1DFAC31CDE25A1F +:10EFB0000E9F6A129FB72E81BC3D85FB9B60DDC909 +:10EFC000EFD9784476A1AD322DC4FF6BAF30FB95FD +:10EFD0004A415E16027D942E963FB1E7B62E6F74BD +:10EFE00033A2B35515929FC735D6BDE684FEBD6EDC +:10EFF0004713EAFFD29073E4AA452FA419E330BD6A +:10F00000159F1D4538BDE23CC37B85B8A62999668E +:10F010007F29804CF07C04F0E0B9C8FEC43B0E0EA2 +:10F0200040F8DE9019EC048029EAD2085FABB91FE2 +:10F0300055F79F96837C7603FF7E94F87C1AFA033B +:10F04000F7CFBF3319EDF35535CF5AF15CB0316DC1 +:10F05000116351463AF2137D36A6311BC6CB96FAA0 +:10F06000162948EF560BDB4C7EEC74E6DF06F3B551 +:10F07000442CD5505FC8221E4F6FDF28F8454F3F04 +:10F08000B670BCF91648648FAEB25566C5F1FEA8DD +:10F09000DD413C1701384E3CE8DCBA1CCA4B14E693 +:10F0A00050FA9AECC670F2E72B30A6D1EE6466BB3C +:10F0B000F27E74AE737AA678A11312F78BE21FFA70 +:10F0C000D7A91DC6132995EE2A186F0653B54755C3 +:10F0D000033DD48E9987EBF3B188A3C13F8CF72908 +:10F0E00045BA01FC972E8D70F780F25A211F803EA1 +:10F0F0007C467FA655E270B0F912E10720AEC0BC95 +:10F100007DAD3D638DD3300FAC0772F26B215F4E46 +:10F1100048023F55A21DCCAF10E90AE787F12969E3 +:10F12000BCFCE403927F2B2F67C9909F7EA423C56C +:10F13000594CEDB07218233A64E8E364DE158B0293 +:10F1400058EE85C5D1705FA430C506F82C17F15B69 +:10F150006CAD44F15B26F8603E276B9E7D0DCB1BAA +:10F16000252D43857E9F17F36B4CE37035E2F858ED +:10F1700057F17CF03EE4A7FB6219C6C5E8F82B5DA9 +:10F180005BB588115DD759EF423A391BA5E13EAD19 +:10F19000548C3F55E6F129A17843BE43FC1E1778F5 +:10F1A0003D794F54F378681FC3F853306E91292E80 +:10F1B0008ADFD3E7ADD3418D5419C0F9F824A6FDF9 +:10F1C00009F71B621E358977309CC7892FA334F459 +:10F1D000FF9FCD8CE3745D7527ED874E966B92DCB7 +:10F1E000C7240F4CF342866306BA09A537AB45AC7A +:10F1F000B7E0079D0F74FAF928939FDFE9E9F7025A +:10F200003EC60CE771327E17FA40D0EDF5C672E8C3 +:10F21000F7FAD4450CF9EF63115FF57EE64F37A19D +:10F220005FF4D79942AF689559C8F7FAF8F0E72626 +:10F230003E11746B8F74B87B003E3E13E3D74820B9 +:10F240003791DE1EB0131D84EA91BF34CF93796DE0 +:10F25000BABCB5E0778DBE97AEB5BBC3A0BFD2DA5E +:10F2600017EEC4F392E3225E01864DA7F55105DE49 +:10F27000045D3D29FA7B52B4AF812C9E7BFA1EB40B +:10F28000F37350411FA1F8D5E5FE31DCFF42FF0FBB +:10F29000E32783FC0EEBC6FBDD2FB3256DC54B7456 +:10F2A000EEC6E54F3D96B771FED1B91BA76FB71EED +:10F2B0001FFA237C1F40FB6D668C77EE28FAD1F392 +:10F2C000C551160FFA696E7CA4EDB89549DDF9BCFD +:10F2D0006E5C5777F16DA48F893617DE4778A88A60 +:10F2E00099E27A3B8AF16788FA6C525C9BE78BA1C2 +:10F2F000FAFDD812390CE56E6DF08BA7FF08FD877B +:10F30000796C743A13C61A9FFE23F2DD3846E3ED9A +:10F310008F3947F9E811197D314EAAD69D2161FC3C +:10F32000D9658137BDDF0DF996123CCFDE1F333A28 +:10F330006506946F1C33419A619867A21243F1915C +:10F34000F5F6D1297344F91C28DF77D3A7BD489F70 +:10F350004C5497623CA963045371C9E35AE23FC31A +:10F36000B03E8E3BC780A7B811BCBC7E6C71CA4C46 +:10F3700068573B62F9206CB7718C2DAC2BCC77436E +:10F38000892F5F36D02594FB709FBF6A185016C036 +:10F390001196DA772986B48529CB0EA2FE6505CCB5 +:10F3A00085A4556FEF2C19FD5EBD055EDD5DF97816 +:10F3B000AB34F339D8BDDDF9BAEEEACEFD89AFC87A +:10F3C000EA8F38BE6FB44545BEB84FD252907FAE7B +:10F3D000955D79984A5971FC5CDFD1B900F961A358 +:10F3E00004FA308F8E8784BCF7F8503FDB34A512C7 +:10F3F000E5B2B5858F1DE43711FA8B8E8A334CE563 +:10F4000044EFB3BAE9FA8BEB0DEB305B86F0D790A3 +:10F41000DEA076308F07258FDB6A9077F02F92FF82 +:10F420008940C818FF08F2591A63D0E7D6719E794F +:10F43000280F37083E8279A618E3A0EF16F4B02112 +:10F44000D53319ED5FA6A81296AF9754290EF0B5E3 +:10F450004894EB71E6C0E012D919A29EAEBF575F87 +:10F46000C3FCA8BF5737CB033E6F9B809729DE4074 +:10F47000D73C8C8FE67A4D1FDF56E021BD6B1BE633 +:10F480005B84E97D1287C757C8D8B63E780EAE9820 +:10F49000E4F243E36DA40F1F4C51FDE82F5CD72D20 +:10F4A00056C82B4F8AC09B05F5AD1DB72088AF34D9 +:10F4B0007532D71F950CF1B25EB70B14467822B4A3 +:10F4C0001AD6C5EEF6B8A7915F8869F120CBACF9E2 +:10F4D0003ED227D671CFDF897EAAF52D7685DB86D1 +:10F4E000F0495C3EDA4A6C24671F12F8B20D7B9E2D +:10F4F000E463E8FC75BDA2AF67281DB492FF21F953 +:10F5000075636C2938DE43B03E64CFAC483ED0759D +:10F51000009970C22EAEDD3403F0B0D169C1080885 +:10F52000B67AC4DB0CF9ECBE6499CB66B0009AFDE8 +:10F53000772897A400BFA724E8B86AD16723F17E93 +:10F54000CFAA311695EAB006773C94DFBFD9C6D072 +:10F55000CE5562C705D0EE0ECFB7ABA8578BBA67B2 +:10F5600010DDAE1BB9BE04DB45F6B110556EF41CC0 +:10F570008F427E7C59E8C3C1A71B8A62A03C7E846F +:10F58000DA17F95BFF3EE86440C6EF7125FCFB909B +:10F5900091B5E89C83BC8FF4DEBAC2F7460E44FFF7 +:10F5A0005CB6E212F35D2DE37CAF61B4BF8B19163C +:10F5B000508BA07D6C2A1FD73D2C503210F38B65E9 +:10F5C0002641FDC82F130A517E0C9162F9BCF07FD1 +:10F5D000226E197D6ED55691F7CD1A3BA740C4A176 +:10F5E000839E7DB7DB820DA86763D15F9247F55597 +:10F5F000A247766438E5BD8013D04787AC0D644FD1 +:10F600001C025EA882C647BB713BC31251968CF0A8 +:10F610008F8CF72958DF56C4D856EC5C3E4AF5ADBE +:10F62000FDB40CA3FD7154E883667B84BDADA5A237 +:10F630003FDB6DD3500ED4169AF5879E46E6D94C23 +:10F640007E9FF06C73DED1D59CB7A69AF3FDBBF319 +:10F6500071753DFA5048FCE137DDB8FDA2A72FDBFC +:10F66000B4C538FF97C3A35006419EF3BFEF2B45A7 +:10F67000C84157C158837C99D2DD66EAFFD89213FE +:10F680000FA0DEAAF56816A39CD7F55242C87D16D6 +:10F690003DD5841E1E19EFAD6CEB1E4BA290F7D525 +:10F6A000CB96B013992DDF65D15FFF23DE6A8CCB3B +:10F6B000B0A66AA40FF5F208D16E794F7744F744EB +:10F6C000839CDBDF4372E618FB1771F4915E37C64B +:10F6D00091B149375D613FCEE38F74FB25B47CB4B3 +:10F6E000E8CF7D05FBA3A7A877B5F6C75CB19E5709 +:10F6F000B23F7A0AB8178AFA576B7F14C98D179CE4 +:10F70000686774B610FFAD4A5DCFCA0DF3F8B598BF +:10F71000EFF06ECC147FD55EBFA1FBDE6BBA47B6AF +:10F72000197FD55E7B7D9FFB8518CFE97ACC81F66A +:10F73000E57A978521DF1CBDE11515F3175C0A39C1 +:10F74000CF8F3177585BF7D91C4199B9E3814F715D +:10F75000BF0CE9DE6E1ABFCFA5D5321CDF96CCE513 +:10F76000517BF6A6BE4EEDD99B29A2BC67774678A1 +:10F770002CB17B27915E9AD4D7444709DDCCEBAD01 +:10F78000E35D97972F9D3D7E7F6FC07FE2382E2FE0 +:10F79000BF11F36CA6D371AE029CEF753FF60EC39A +:10F7A000FD44F10D9C5E42E7A3DB9F1D05DEF4F9ED +:10F7B00084D6EB2AEC247DDED7FD78CE81FABF78A3 +:10F7C0009085E2205BE34132C1792C38F822D24B9C +:10F7D0007402D737D1E32A0F52BE2B23796ECDE7BF +:10F7E000F65951E7DB1CE1D99C9EE64622FDD8A9DB +:10F7F000BD4E47D7B613271E97C5E787F69B4CF635 +:10F800001BC8698DECB41FD14EF4F5F090DE8FCAA1 +:10F81000E278DD28713BCDE754289ED0A07F6D466D +:10F820003F437B76DA63DD43EC34CD26F6F7DC6EBE +:10F83000890186C6F3A2503B48D7F7609FB9AD094E +:10F84000ADED20ABB083747B6AD520B0A784DFC058 +:10F850003AA0C58E5A2579C91E6EB6FF1416867653 +:10F8600055F48838F20B6D1CC3FD01EBC07E922964 +:10F870000ED8EB437D79DFBBE1A4BFFFDDF6C816F0 +:10F88000A4BFC4167B04ECA3144C8DFB06E3BE425C +:10F89000BF47152FC6AE9F58C9F03CD03EA2966117 +:10F8A0005C7A5C577E1FABF6C70D81EB703F30E290 +:10F8B000A6AE88877D161EAF1A36C222617DD5ADF1 +:10F8C0001678397E5390CEF77D1F9E32CB401FFBBA +:10F8D000867EDA6F06B45F9D69A37BCAAB857FC65F +:10F8E000F71DBF5F56D4A55B8A66A81F14FCB961DB +:10F8F0009CD78D7EE1D5CE24BE5FD2D7278BF3CBAC +:10F90000BA3113C8FE7A256219C903B29150CEAE3E +:10F91000E0FEAD50FAFC54F0835DE063E3484B98A1 +:10F9200083F64543695FF469F730EAB75689917009 +:10F930005CBB9BC35F3F569B8CEB5C9ECFAF61C2B1 +:10F94000FEC6361BCA4F750FA7FAD1AA6E8F335267 +:10F950009AEB0A93B6AC31F8B79B845CAF959A9258 +:10F96000713D1EB2EA76ABEB10EE731E4AECDA176D +:10F97000E965DD350F4F427BD77A6F0EE945BDDD76 +:10F98000824CEF39D4871F0F9DB069067C9733BA3C +:10F99000A523DC5B043FFE5D650ACAD5BF8350AD7D +:10F9A00092B07F4F031E415BAFFDE6D7D3346AFFB1 +:10F9B0006D48FB2948BF7AFB6B333DDF778774FDC9 +:10F9C0000D13C84EDA304E4BC179D8341B91249EAA +:10F9D000F4637EFD70D6D7E8677A4BC8236B16EFC9 +:10F9E00067DD9895C938AFC3DD3501AF87F66DFA8D +:10F9F0003E65BD7365F234DC1F0DE3F22651E85B12 +:10FA0000D86F52BCC0BAF1DD28EE00D7731A9E7FC2 +:10FA100009F80F77E7FD6F709F4F9EC9907E34A263 +:10FA20006B7D9CFB709C2E642F501A83EB6BA0EFB8 +:10FA30000D4CFFD3F634211DA6A97D10DFCBC5FCEC +:10FA400063C7897DB03D86D66FE3708F1FCFF59178 +:10FA50004F66D2FCBE21BCD44FF410BD270AFE086D +:10FA60002BE1EBCDC6D9FC994E239F0CCD243E0152 +:10FA70003EF0129F644848DFFA7CE34A1A9F437FB6 +:10FA8000407D779B8AE8B956E6F05CADDE77BF1221 +:10FA9000C6EFC9B96C4490C909AAE549CC1F91FDCC +:10FAA00019306EE12B616E51BED578CEB256EC970F +:10FAB000AA973116E8CE9AED1C8AF5E8C2C897A934 +:10FAC000F78BFD0C0DE967E532070BD85BFAD1DB4C +:10FAD0002BC2BF15DABE08DBE7B5B45FBD4CA5711C +:10FAE00043DBDBDA197F58C8F86B96258BF61C5E72 +:10FAF000DFBB32B773453FF676E6313C641E4AA45D +:10FB0000F9BC3E743E8E76FA290EE9C79E6C3EE73C +:10FB10000FED27AC1DB8AE0F812B4C8BFBD97EC2ED +:10FB2000DBE9872981E49B725AAFAFDE2E42C0A188 +:10FB30009F23E8F522B2CCF1071F93E4067C667997 +:10FB4000EECEE2E73BB9E45758CADF1D28B3D467CD +:10FB5000E2BB0265CB039486D26309ECD91AB85F85 +:10FB60003809E5A6B372700CEA810B6BFBC7E0FEA7 +:10FB7000D11BCDCB25C53B10F325FF983ED086B0D9 +:10FB80007C18C570FD6EE9C2A6DE04DFA74A7C1EA4 +:10FB9000B754DF5082FBF5F5595C5EBFB50CDF4210 +:10FBA000C0FBE40EE606FA7B07E808F3EF023D60CF +:10FBB000FEFD651AA57F5B9645E9491BB7CF6E111F +:10FBC000EF16E07D329CCF2661776CCAD2FDAA8BFE +:10FBD0009331CEA6E41FEFF4C7FBB8096CE4B8E19B +:10FBE000698C358AF73F46BBCDF72C278D33DFA3D1 +:10FBF0002CF70C3195B3AC7E2D79F2B330D247D3CC +:10FC000056C76E45FB77F2887853FD09AB3B99F2F6 +:10FC10007FCCE2F2614C4917D3F79BCB7A99F2E59E +:10FC200041B040F07C5D4BB6F8A0FF8BAF5BE9DEE6 +:10FC3000DDC5CA811DEEE479D2E7A1783FA9DF7B5B +:10FC4000794FF00D7CC775B8F4411AD9E725FF80CC +:10FC50007D3AAECB53DC1F3C7D93C47C681C34F9E9 +:10FC6000285E6EF116BB0BEBCDD824336F3F9C8D15 +:10FC700044F07D713873EB1A5A47DFE358AF09EA55 +:10FC8000E1F98425622DB5FB3C8C6978EF717AA38C +:10FC9000E84FEA4BF1FB4717AD4AC7F1E627413978 +:10FCA000D8475F8EAC9D65413928BF9E88E75B5F72 +:10FCB000EE94295EF1D645EF0E50019F730FD4BD2F +:10FCC000970FFD9EAC95990AE39ED96EDFC2E3D4EF +:10FCD000DC1DD0FFD502AF9FE2F8866678DE457A5C +:10FCE000FE62963F97E28E9626123DB7819759EFB6 +:10FCF000235E2CD1DA3648EF98EE9A8070DDB1CED3 +:10FD00001AEB938CF42EEEB1887E7C2C2F05EF2B12 +:10FD10009C5C6BA57B7BC037A3E83CA336DEC2FDB1 +:10FD2000853B89BEA6299A0DC79FB656267B427F82 +:10FD3000FF40E74BF6A0EC853D16F3AD96BC787F0F +:10FD4000C2894406E3DF9E164EEB7AFBA2811D10AA +:10FD50001EFDFE72A85EF80A78C66BB89731772F41 +:10FD6000BF17C5F2540BC6D38F6A18BE0DE773FEDA +:10FD70006097188CABFAFCC8582BC71B8F67BCB5B3 +:10FD8000BA3E5703BC9F19E9FB5481F43776EF4F15 +:10FD900088B7D329750FE3BD82737B7E9F8EEFF307 +:10FDA00034E27B0E86FDBCB7D90F697ECFE1923479 +:10FDB00054EED1DFF08E83B84FCD14FF938FA23D68 +:10FDC000FD6107B2775AEBB72A8E0FBD3E883C7EA5 +:10FDD000FF2B9024011EBD1AA3FB96A5AC4EC49127 +:10FDE00071FC69B848803FB542A2FB27D32DAE29EC +:10FDF000EFA01DB83C4AC5F5D4FB3F21F83AA50752 +:10FE0000B72B74B937BE079707D3F573A47DDC7E93 +:10FE1000C47BAAE8CF9B4320D2FD371BF2977E4FCD +:10FE200035AB479CD87F34D9EE4CC0FBC4367A4FF3 +:10FE300065167ADF215FB1DDEEF7C3FA4DEFA15110 +:10FE4000FF736D3B1EEE8BD59D9574FFEED65D1254 +:10FE50007B54C2FA5B8A290E97B14A7F1FBC87EA9E +:10FE60002F6E80FC7C4DA90CE0BEC2CFEFAB3A40B8 +:10FE7000A0A05CF131FFCA38E87FA638EF66DBA1AD +:10FE8000DC2077E6D799EFB72EC47BADA6F31CCF65 +:10FE90004ADC77CD40FFB84AEF7A98EFB1D55AE9FE +:10FEA000FC47BF6FEB8988A278C7B91B795C47CB49 +:10FEB0007C6476197036CBEB3F308AE0955C7ED659 +:10FEC0007A3EB371BC841678AE34BFD0F9CC72716F +:10FED0003953512BF9FD6DCC4FC76F4C01D3506E88 +:10FEE000CC7B42227FF4F0844584E7B980E778E850 +:10FEF0007796CF133D310FEF0FB200BEE700E8A6B3 +:10FF0000F2859BF93A0062DFEE9AD4B2DEA7129A2C +:10FF10006C88A753DEC84A1FDE7FA9FC96D6FF0077 +:10FF2000AC33F2FDADCFFA6DA85FCFB0DAE848E0B0 +:10FF30009B8A4D870F20D99EDAF85C12DA8B6571A7 +:10FF4000814C0BC8BD78DFCE8D25D7B4D0E1AD7E16 +:10FF500033FCF3B69BF3A1F8F1310FE9AF56787299 +:10FF6000AC6DC038B056EB27E242D156463B7FE637 +:10FF700013329D131AEA99CEF5E6F89AE89ECF1C43 +:10FF800080B35AC5AF3EA2C79960A5E3FEF997CEEC +:10FF9000B715BDC965446F9760FDE5B6E8ED2AE782 +:10FFA0001BEA9F7AB08788CB70F1F766F01EDB44BE +:10FFB0002C14764BA87C09BD1F78D4AA5A96C3BCD2 +:10FFC0009A0EF3FB61171555E8D34C3F8A94F6E47B +:10FFD000EE2CA11767A21E84F4D34DCF45E37AEB34 +:10FFE000EB3E1BF54B768B7EB9637A200DE9E68EEE +:10FFF00017C25C3E1C7E44E0DDBB20FFE5B3326BE4 +:020000022000DC +:100000004B0E9E747A77A0FCD4F5E47C794BBA8AC7 +:100010007A51C8C52BED0FFE59B8A6215CFD50EFF3 +:1000200073B88EAFE6F09C58CBE19BD10A2E1FDD52 +:100030002BB8E3F77617F67B3A2C407AFB34C055A1 +:100040004DEBCAED864B0EA0A33E640F90BEFF3C65 +:1000500091EBFB66F86E7BFF9802EB7E6BB7865CDC +:10006000BC8756F6A09DF4FBAD7FE2F78ABE900AEE +:100070003B901DFB6A201AF1367727C75BCB7C9A31 +:10008000F5FD3B88B7667D7F95F8C2C318D48B0B0E +:10009000187F6F60C19E0EF4DECEDA425627D37D04 +:1000A000B346925F403A749EC8769BE3ECECCCE595 +:1000B00070E0FAB413778C8601BE7B320BEB031C25 +:1000C000DF647E3DE536C24F5337E2EBF08015DF4B +:1000D000D1687A56A27783E62F2E8C2E64381E8F35 +:1000E0001B3D2FF4D52521E7247725C585FA34A6B5 +:1000F000AEC3F96DE6F1D1EC155647E78E9B393C5E +:10010000B0172778244D65657D799CB903F55BA40C +:10011000A54DFF48979E7C9CF9B285ECE60A1BB77B +:100120009FCF897D8545945B7AF27DB3A3278F7B32 +:100130003807DB51BA0736DCEE47FF03A8A9F938C8 +:10014000BFC39285E2B9FD3DBDF69E506FC5DFECA1 +:10015000990100A1C1AAD534C2BAAE889D45F74D18 +:10016000A7C0175CDF51F98BB663BB631D992AF3F7 +:10017000774C3CCC1067F6A6F5E8F0C5E83782BAB4 +:1001800032EC394AF33F4BC3FA9B310F783816569D +:10019000377C31B6772A0CE3DD7D7BED640F588721 +:1001A00036A6D1BE2D1CF6BE7D302E717F0DD2D568 +:1001B00081E4F82C15EA4F55C25DE2BEC3B0AFA191 +:1001C0009E3287BF63C15634F6C7F5E9CD56A8B84D +:1001D0007E00F5AECBF13F474FE677832AF03D9B9B +:1001E000C18C135A3EE1D594AFB0F1F2414F258C4A +:1001F000DF980A79DC33201DDC20537CD1F8FC2603 +:1002000005DFD34142190D743C31705E71E3BABA17 +:10021000B5BA18C8070E99DF2D1AAD68568433D5C4 +:10022000CD2A65B29FB4E1D8DF07BDF879B4C4B276 +:10023000283FAA84C5113F3A342BC2EF2991FAA274 +:100240009D5DB1FCEAE67BD3539DF97C2DFCBE4855 +:10025000D35D3C1E698A5267C5B8A518A636F960F9 +:100260003D16C6D5D17C9A808FF0BCAD5469A4F1FF +:1002700053E7B0385CAF0A508E084FD3AD3C9ECAEE +:10028000E2E0E5651A94C3FC36792D49E807F2F4FB +:10029000E4F6D97C7D3FA734D6509CDA24FECE54B8 +:1002A0001F989E717D16DA9AF77D1AF6370FCC02E9 +:1002B000AC376FCF0B99F4BE96A45970FC32D1EFD6 +:1002C0003C476400E300D91FCC7C7D6F4FF6B3FC44 +:1002D00070B7687F774FBEAF9C2DF883B13AD2D705 +:1002E000F3F6FCD707B88F6DAFFFF9761620FCED5B +:1002F000B513FC92A5A92BF99318BD7880FD646213 +:100300007E16C8279CFF5D3DF979A64ED7B344DC25 +:10031000A205842FEAD1D9CC671BE46CE39E2EABF7 +:10032000253B65EE13A1F77B0D718FB2496E51BC71 +:10033000B0646B9A81E34BD786B9509E97DAEA682E +:10034000FF2FA13CCB6A9167A1EDACB5DC5EB3AEEB +:1003500095C8FED5FDB276B0DF50BE97A736E5F062 +:10036000F711B4627A2751D8D9B3F854E07B85C924 +:10037000CEB6577EF6213D8AB589DB958AB083A734 +:1003800087BCE352BEDA607752B74D2487AC4B236B +:10039000687F6B0F79DFE563CB181FCA755F46ABCB +:1003A000F307619778188F0BE6DF15616F3ED0D3A6 +:1003B0006ABABFA2F3FF68BC476D90AB9E618C5DCB +:1003C000DB17FD08921FE960B4BBF0204FAB02744D +:1003D000CF4661AC531CB663AC80EADD47F1A8C0E0 +:1003E0008FBE082C775BBF30C2F316FEA38DFBFCDB +:1003F0003B7B9ADF49697E27A120FEAADE49D0DF38 +:100400008D2C4339DCA5254EBBEC10BF97FD6DD874 +:100410003FD28F405E930021E98CDD197EEC352FB1 +:10042000E41B7F8A6152477C57ECB5DF611C715930 +:100430009542EB5C167D07C51907EC0EB2937D4320 +:1004400003BFA3B8639B83EE213D82C0E5211C510D +:10045000BC7F4B238D3B95359EC178DEEB131AA2F2 +:10046000902CF4F8EE9585FD36E1BDE4A33D178CA4 +:1004700077A4D139AD881BB8FD5DF4C38E437F17D7 +:10048000E5178F77F706FE7CAD690A8CCC2E3CB55C +:1004900078BC02F09F7BA8E971CC473C7D2FCF3F11 +:1004A000D0941E46F99AF10AE0F35C95E8CF5733F1 +:1004B0001EFB3BF75B9EFFE4A99AF118775026DEFE +:1004C000252B1B2CD1BB6427851ED6FD6165965755 +:1004D000783A9405D06EB852BDC45E9E9368A7C8A2 +:1004E0005127292E2321C74DF92FB23C67514FB216 +:1004F00023FEA444186FAE8535A0FE1C25F6D9ABAB +:100500002CE6772B4FF6E072474FBFC37E135BF0AC +:1005100006FD7DD3B3FF3FDFDFEA90FE743B66A6A6 +:10052000E07BE8DFD2EB5FE85F97237A7F3765B740 +:100530009A7FF4BFD2FFC190FE747B57872307795F +:1005400015E8EE00CA66C37CF4EF3552207122CA6A +:100550008743329DDBD7242659FE84E3BF1E4FF725 +:10056000FE2E540E8CB140BFBD7B713D50730FF712 +:100570002FD454F178F8333B060E40D25A20CEB334 +:10058000CFD4FFCD86EFDB2C14E7DA0B76D5DB8AF0 +:10059000B3F1FD8E7A5B91C15EAD68F6AB342AF89B +:1005A000FE654DE2A74A398D63117ECBAA9F8D6708 +:1005B000B8A697EEDFE470E60A7886E5BA07F44A53 +:1005C0006C8153FFAEBF771CDA4F552FAECF927AB6 +:1005D0003121EF787FBD25BE5E65E15C1FF63FE20D +:1005E0009AF50EEDAB732D78BE39E0834A1BEAED28 +:1005F000B81E438719C7D3DBB5F88B9BCCFEE23D11 +:10060000DC5FAC8FE312F32B8B6B588CF1D455BDB0 +:100610009E7AC8710DC55B34BF7F88AEB212BBCE67 +:10062000BF81F1C352B91F13F3337ABDF8900FFAAB +:100630003B18DEF0EB7750CFDE17C5B602DFDF32B6 +:10064000302A7D671EC64DC748AC80B1427B54B787 +:100650007298C792ACC22AA237C6C82E5F92E5B97B +:1006600005E7DFE88CB08011C8BC364E0FDEBFC88E +:10067000F49E8C3737C28BFEBC8316368CC5B5E032 +:10068000AD54AC53552F4E5707C57BA5F097BE13FD +:10069000FD83CB3B4B48C7FAB8BEAC429F715C5F51 +:1006A0009667BEC88BFA31F46E517BE387AEDBDC14 +:1006B0005EDC3EF78975F31400FD19F4E44DC322A6 +:1006C0004CF97123E299DBE8971ED7C9949F54D661 +:1006D000C554FFE619BD4CE523ED0D7946BB405FDF +:1006E000B7ABDD7F35D47B1312F3E81CBD09F90BE2 +:1006F000D66BD7184C1FEEA4A23F62DEEA1BC8DF00 +:100700001D132CA5B4A2F6063AB49E1F1C4BF90586 +:10071000C108CABF253714D3BEE80589CE15A09FEE +:100720008BF8AECCC1B8BE0CFB59B0EBD9BC23DC06 +:10073000BEF26442FF23E5B7F3500F8DECAC5AAA2A +:10074000F11DAC6018F5D330F4A33CECA704F71509 +:10075000F0BD62E7A049483F85D5512AD2777BFC9E +:10076000B25DF09DB591CF7778700CF5A7973FD328 +:100770002BC3642F58139F50904F7438AC8D12A523 +:10078000BF0AF6A274E1AE310A9E1BFE25EBF70903 +:10079000A827A07E24A64ECF10CE2F207F5864FB22 +:1007A000F8B50BB9532AEE9D3C97E3DE8F74356A9A +:1007B00069A3E2403C44DA54DC078ECAEF933CCB99 +:1007C000D04F75FD648672CA9EC06C185F550A6969 +:1007D00091A1DCDB4E5CD8214177BA7CD2E534AB09 +:1007E000FD0F8A6B98C2631E9BE9E2F95EE6F89AF8 +:1007F0000689EB59DF9FF8F9C3EB39DEA3C87F0DFB +:10080000856CD24E92170DE9183FF2EF9A3FF44CE7 +:10081000EB3C4AE5FB8368A591E17D984F9AE1E0C6 +:10082000F4792538DE1470BC25E291DEBAEEBA0602 +:10083000DCD7D4DFDDAF1F9EE3C376E847F233EEAB +:100840001BD205EDD0AF7BD944FC1C233B48B7FF3E +:10085000F1FD00F48F2CDC67DF2A41BD85D14DDD31 +:1008600050BE2ECFF57E8D7878EBE5EF8EE13D67BB +:10087000776414C54F2EDC17F62AE6AF9529BC160F +:10088000EC0AF779ACD7DE3CAFC4874ECFBC04D4BA +:10089000B317604AF86ED685CAF7778DC1746304C2 +:1008A0003E29CDBCAB39DF7905FF950BBA9D26F803 +:1008B000AF5CA923FE9A8A01D830AF694BA51CBC56 +:1008C0007F0E8B4171E156A4C77E48979C1E2B82F8 +:1008D000B1828F9DA21F4EF7A17CB920184FF574ED +:1008E000FEB4E77AB5EC44BE7E4B60BC5FA916BA95 +:1008F0007FE35D9E9287FC7165FAF84EC1FB54D68A +:1009000002C98AF46187B4C8C0CF9E96F8EAE2248F +:10091000D4F72B9C1663DC4366F62FA3F3B86C4E1A +:100920001FD322414F921F299AA17FAE2C51233F02 +:10093000EB6DF74978E8C36EB30632D18F73DBA253 +:1009400030F2A7CD3A52B9324A6BBD5E9383B94CAF +:10095000033C8D0D76A534AE87B75F767F5C8F093B +:10096000028FB957753ED8DFCDFD7756BFDDB5C5CF +:1009700089FE3BAF8CFC703A8DA91BC88FC3CB7529 +:10098000FF1DFA05D13FD872FEE76BF6E721FFD8CD +:10099000132CA673CA567EBD42AEBFCE3E61E5EFB4 +:1009A000B1D5BF3DC002E55F38DDE4DF1B9AE11D34 +:1009B0008170CCBDC9FF8C15F2F31E782E7A90D6CB +:1009C00082C73A2590897EADBA4A8E9FBAB532DD8C +:1009D0009780BF8831C6FB89C27E38C4B8BD114A32 +:1009E000D773835D083FBA5ED1E5F50BCB9269B34F +:1009F000AACBED2BE99BF94AC3AEC3809FF91B63D9 +:100A0000541FBD0F77F822BED7870FB7E19520E0BE +:100A10001F922F1752998519F4CB487967DE11D2AE +:100A20003FAAA71AF54CD19002DA0F87C8EB2FB670 +:100A3000BF43EDF10C0EF5D0D0A77F78EE43E8DE92 +:100A40006A0D74C377E97EA544B97CAC357DE87A3C +:100A500058875FC7C75F44FEB61CF78AECABD2036A +:100A60006164AFDA7D6318C951488D72D41A62A7E8 +:100A7000EADFEFFB85FC7167B6793FA0CFB3C1A673 +:100A8000DB4D7CFE7F65DCAED0C7793DE7263FC2FB +:100A9000817A01C7DF96CDF5EFBF0FAEB6F5C3B6CD +:100AA0006CDD0EBF3AFDB05EE043874F874387EBB6 +:100AB0007501EFD5EA8F17B3F93D9950FD01F53E69 +:100AC000C577DECEEDEDA1A2BC92A5A64FC99FB41D +:100AD000374C433CBCF57218D5773B62C8AF5EF427 +:100AE000F26717F07DE361B9635F443CBAF7D8154C +:100AF00066B0E3F479E9F37C43CC1BF4CCCBD98624 +:100B0000F5D2BFFFB37AA778CCB3C40FF0E7197D55 +:100B10002DD8F7F73790DE618F44A8E89709E5D71D +:100B2000503E0DE54BB0FB48AE1E7C3E96CE217488 +:100B3000FE0DE54FA7E723D233C89F28DF2E54DAF6 +:100B400073F05D9A0B1AD7AF23D1FF897CDA2B960D +:100B50007E3766BF5CB761B084EF2472FB70A8B0CB +:100B60000F43F5DAC41CCFD7A89FAE7B3A2D0FF107 +:100B70007B657AFCB395F4518544F68A1D52A33EF9 +:100B8000F2B6C367DF649BF78357A2C393D9CD76D0 +:100B90000AB7B3626C64675D89DE1C396DDB2BFFBD +:100BA00002BD3972125BE8AD3D7B3A2A87F333D040 +:100BB0005B54CEBF64D7BC44F405F2DF83FBA81BB3 +:100BC000FFEA8A413D8888C0B879A0973C7CA7E7B6 +:100BD000E0803417FA6D6EBCCCF723A093683F1207 +:100BE000BA1F281572DA2BF6F1AE5C8F2B87CB83F8 +:100BF0003F20BC855D22FAA0BEBD5A3BB534A19210 +:100C0000E209BD901AE590BDF9F732CCEBDE3FE783 +:100C100097C9D72E39BFCC3E1DDECE7AFF8C7D3AE8 +:100C20003AE72AEC53A7DB3196F46140616B9C579D +:100C3000DEBFC89B387E9BF11550747D1F8FFA1E56 +:100C4000E8C24378FF27E9626451DD4507DA973B44 +:100C50009E9B807EC009186B427E845D0FBBBBA249 +:100C60001C62FAF907F919886F30EFFBD37BC300D8 +:100C70008F376E602DE723503EBC20A6D92F21B1BF +:100C800096FAF377EC7C6F2DCD9BBF0FCEBC8D0A0F +:100C90003F2714F93CC84719F2F921F9CDBC3EEAC7 +:100CA0001FE33BE32DFA89C7B9B7D83F4DC5B168FB +:100CB000B7EE92E8DDE69B0BCED9D0AF32B2A8F109 +:100CC0004027A8E7DBB16742640FF8BE4BA2F9D614 +:100CD000E6BCFAB0AF2B85B6B9316EBF225FF29396 +:100CE000BFBCAEBED8DD065FD6E698F747A421921A +:100CF000C86F457FF63A89E17BDCD80FC6295E4D87 +:100D00007B3CE7A3F619D43E604FB8FAF6130B7894 +:100D1000FC6E68BDC705DDEBF190D43FACC9D83A95 +:100D2000A9CDDF197952F4DB60B1CC477BED999CFA +:100D30000F1E467FF370C6E9A22EE7FD093E4E7FE7 +:100D4000CC1D02EFCFCD77638ED95EC03FCDDC3EA8 +:100D5000F073F87AB415BEC4FACF31D3498CE27976 +:100D6000F502CC23264152D1BE5EE0095B8B3F8267 +:100D700033B248D0353B3EC19D0AF0853193FFAC7C +:100D800099AED9890948D70B985E7EEA61D4471E8F +:100D90000B33DDD31BBE476A6E9FA5D0EFEC50FB33 +:100DA000BFE49C7C18FD6DB01E544E79E567E8BC2D +:100DB0002E245F10C2178CE7892F511EE7F3DF73D3 +:100DC00009C5CF2981DF2FC53D8F86A1DC6E6C1050 +:100DD000BFCBA4E4723D7256D4BB28D206C3EFA8A1 +:100DE000B0D4967566E277560C70139E2627E8708D +:100DF0005B268E00B81AE2588E0474F28F9C7F3CFA +:100E0000BC82E8C4A3E03905143DF23AC893C90294 +:100E10002F30FEFB88170CAD41FE9A9FCFCF97ED88 +:100E2000BB0EB7C95F875BF3870FE5DB7C221C6CC9 +:100E300027D1BD63EC27A30D7CBCDFBABD3BA43D2D +:100E4000B326FC92F6623D4684AC5749C87A0D0B36 +:100E5000C99799F3D10A9757D18808B0B7A6ED7E04 +:100E6000B0262901E389247A4B0DE4B10DDFCB4F85 +:100E700079266262E420A44BCDDA09EAA63D13F597 +:100E8000BE03E4D5189457247FA31F41F93C16F9FB +:100E90009AF23113F1DC67427E654D32D4EFF28C69 +:100EA000FA08C670DFBCE2412B22BDFB33718F28EC +:100EB000D0EFE4BC3F1EC0FE94AA84F747387F867B +:100EC0002E6B43E0D81C92F785D4DF7805F9BD225C +:100ED000A4FDD290F2B521F94D21F9D5E6F6E5331E +:100EE000F8F96A39AC1F22EE4AFC312897AFE75B6C +:100EF000725D1E9E83B9739D8FD4409B1BAB397D61 +:100F00000F7DC639D1489F5621FF4B133CEEB6E802 +:100F1000B37F6E3BF49115AAA778F9751139313872 +:100F2000BF93FD9986FC72324C8BA17BC387C0FEB8 +:100F3000C2857734AC2CC0F2C27CFA1D0B7C877D55 +:100F4000A421EEF2D507ED04DFCC5DFC3C7258C461 +:100F5000EF8A5312E8BCB8C94E71798F14A7E4B573 +:100F6000FCEEC5ACA31C1FB3F648F4536DB7FA43AF +:100F7000DE1197D7CAE4D7D8CCE302676F6AFDBE0B +:100F80003A9E0BE3EF2FACE1F18AADCA31DEB3FA42 +:100F9000CF3615CB43DF5DFF18FFD1C6FBD7B37348 +:100FA000C539AD8857D3E369F5F35A6F3BF1B48681 +:100FB000DF475B90DBDF10572BE2DC981248C4B8A8 +:100FC000C6EA43F1743FE7650B73E41BCE23743B21 +:100FD000F1EC322FBD3FFAD5B23994EAEDCF49F5A5 +:100FE000B64E68E79DE2BF5B3678D7B3F70FD1B056 +:100FF0007E2519A15F9DCD2B403FF457CB9688C32A +:101000007C11072DE26FAFD9552FE3EFE87CB5FBDC +:101010004404F9A7F1B000EDBCB30AD1D185CA6F81 +:10102000F75FA6BC85F6014E16DC7F19C6BB3D2ACC +:1010300086CA6F5FC4DF0DBBFDA7702AD7F1F7C565 +:101040005D8CE2F9F579D63F1DBF6730EE5B226219 +:101050005444DB6CE187FA62BB4CED4F3B629E442B +:10106000BE3EBD796C125EC29F696DB2B9603EAE84 +:10107000BD63E877564E41BD00F991FD32DA4383F6 +:101080004B18D9A383C11ED59CB845F48C42BA181D +:10109000B41BEA41FE4C80FF9E2613F6E6CC3FCB04 +:1010A000747FF3B3CDCF51BDCF9F488CC5F1BE7ACD +:1010B000E2DD24F46BCD656A3D9EFFBE26F8E33485 +:1010C000C835EC7F2ED06D18D4FB7C3BE7DBB940F4 +:1010D0009774C72484CE8BB657115DCD4D9619D227 +:1010E000F55C377F676A2EFE5E8086E8E674E880EE +:1010F000FF300E2156D0E93CA0538CAB9DB7BD6D9F +:101100003AADD8CDE934948E43E936945EF7E68A59 +:10111000F8CABEACEF2F89AF0C7DE736AEAE4F21DB +:10112000FDCE52B3BCF024A39C3886FF24BBA3FBA6 +:1011300024B433F637DB215CDFD6CB5C3EBD91DBDC +:10114000FD8315063FD07A718EA8DF43C473D06744 +:10115000DBB0FF725DFCFC72FF0FFC7D165F671B4E +:10116000F9A1F7C7F07B5EABEE9B48F7BCF4FAF54C +:101170009D6D4BF83DB065C9330D726F7FE7A41FBD +:10118000F13C777F07FEAECAFEBBFBFD88F7C87C4B +:101190000BF9EFD01C5B72E20CBEE3F35170B06A46 +:1011A000BC476FADE0F1FED684BAA89986F9ED5F31 +:1011B000D88FF84987E792382FFB28F50E15E9B24A +:1011C000BEF3E2067C77CAD741A1F9DABF2B53F10F +:1011D000F76C8AC4BDDB6F047D59A3BEA4FBFBD5AD +:1011E00009F80325F89DC35B933AC141BF0393C03F +:1011F000DF93B146DDA2DA0CF0B813143E2F27F3CB +:1012000018F7DDB7F6E67651496F5BF33DDE723EC7 +:101210000FBAC73BF587B20F1A601C6BFA000D833B +:10122000AD76F4EE22DE15530B307E437F9F45876B +:101230006BB285C315FA5E19FE4E20D26DB593BF11 +:10124000CF62786FC8F43E4B7BEF8B75E8EDE4EF2F +:10125000BFE02F4D76E1DF9BDFF392E9DE2ED97DF3 +:1012600076BC079CC0DF63C1782A7B82C31D164D04 +:10127000EF1C0DB3C6D13B611E94A3D634B6E02655 +:1012800092BB75F4FB5E5D7BEBE7E7BC5FFDDDA524 +:10129000C6E52F0D2FC4794B4C8B7719DED3EA604E +:1012A0001B85FB583DAF8F5F2AC6992AF3FBC8F810 +:1012B0008383F86E45ABF7AD98EB03BC7F62F745CF +:1012C0005870BF96D75B6ADE2718DFD76A4CAF0C21 +:1012D00060BD460BD3761ADE13AB11F168F648FEFB +:1012E0002E4AE3F2BBE97E597539A377B56AF473E8 +:1012F000B5F9E25E83782F457F6FAC34C146EFA924 +:1013000095427B67AEC1FFF00BDFE1BAD2FD64DD31 +:101310005FA8D3C501B0D9E85DA8CE494B899F3AF3 +:101320003888DE57A57D4AEF2559EF1DE242FF447C +:10133000337F76482EC0FB97F50BE3973619F8E319 +:10134000A38AB1EAF46CBC6F1949EF765FFB43EAFC +:10135000525CA78F6DD799F871DFBD672EBC908066 +:101360006914DD43DEF7FD600DE342644B23C907DA +:10137000F67D38D17951CCA464E37D64AFA0876B4E +:1013800033DD537AC37CE524A0FFC81639664DCA05 +:10139000F3229FAC8AA49BE16C9588CBA896CCEFF6 +:1013A0003CECE8CDF9768758DF1DBDC5BB618A46A8 +:1013B000EF4FEAF7EAEB3B2B4B8CFBD37BC4F8F700 +:1013C00008FEACEF7CC707E5067CD5DB5F7E6300DB +:1013D000E22B699C8BEE93A2BC4BC0DF138C702177 +:1013E0009CF51DB83EAEEF60A3DF25AE5F28F3FB92 +:1013F000D7310EB217F57BAFD6EFCA481EEEE8AD77 +:1014000099CEA9EB3B2410DE5F912B3FE0F2C04167 +:10141000EF957D5411FF23CA29AB3546C575FAD81F +:10142000D2D41FF96F476F1EA75823B93466F073E3 +:10143000DFDC220F36A19ED4E5811DEF31E49AE86E +:10144000C97635EF0C6E4239407CCADF6BFB67E52D +:1014500000FE590DEFAB1DB4D50D47B89A80CF777C +:10146000229F87B4D7F9FA7F9A4F6E0EE193577097 +:101470007111FFABF8FB84D6C4DD5146FFD93E4164 +:1014800027F511315C8F2D8CFF11E9C2BEA23C897A +:1014900069C67AB2783F4B7F17E03AA2DFF2C809FB +:1014A00056F207023D8E077ADCDB9BFF8E79752CA6 +:1014B000DF575B2D4D3908CF824CEF2BBDE1FB711F +:1014C000718FBDE5FE79AC84F1DFFAFC75BDA6AF86 +:1014D000FF37225FB5E8BF783C6805BF4F745CAA50 +:1014E0007B8DDEA11B64277FBFFE8E921E0F6ABD1F +:1014F000673EC583AEC27793603D5625CC2A8E47A2 +:10150000FDBDD9C6F8EFE1F07794A68BFAA740BCF1 +:10151000E1FBA1AA8BC75B784FABC5D11AE2EBF414 +:101520001BF8DE85FD2E99DE2F7BF91FFC7798AF27 +:10153000B9C8DF3DF2AE709ADEA3F19E55E8F7C65A +:10154000CA994ABFD3F471F492922A94AB42361FDF +:10155000973C012FCE3B91BF7F34242D6F12BE7F6D +:1015600038A42A95F8E9186B1889EF1FF9365A89BB +:101570005FAAAD955CAF3F104F797742C31BF86E01 +:101580009A1BDF47827CA9A382CE2D58B62AE1EFB1 +:101590004B35097E2F55BCF47B508042B53A85DE31 +:1015A00039A238E943E580CB3E2DEFD61CB400C705 +:1015B000F425BF2DD1FD37A23D9379BFA5F8CE917B +:1015C000E1F727ED9BCCF1B3D5BF9592F1F7C86653 +:1015D0006C0CF92EFCF3A1BFAB58BA96E7FF1BB910 +:1015E0007D016C00800000001F8B080000000000DF +:1015F000000BD57D7B7C54D5B5F03EE7CC2BC924C0 +:101600004C1EE000014F420801031E9210020970B7 +:1016100012120C10EC101003061810155BAC53C41A +:1016200092B6B4993C09946AA480D4A21DF071A921 +:10163000173020B6B47ABD03418A8A187C552BDA5C +:1016400001BDD87A691BA194DCEF7A2FDF5A6BEFCA +:101650009399334C02B6FDFEF8E20F77F6D9EFB559 +:10166000D77BAFBDC3186357E0DF604D666C02FCEB +:10167000A2D40EF03AE11BFE4CBB3AAD3B7D6ADCD6 +:10168000D11C463FD82E5E73A69D4B805F26B28943 +:1016900057946BB7BF5CDF35EEA815C783BA031943 +:1016A000CBD0BEE792D218BB986E611B25487D6BEC +:1016B0001D5201E6613E19384A28D133F6EA7E42CE +:1016C000F58CE976C63EBA99F723318B7E0EE6F5A6 +:1016D00037E8E3CA08C63A1556D791CBD85989D509 +:1016E000EC87F9FCBB4D5DC3609C7F8F1F26F925FD +:1016F000ECB723756E226339B8EE8158CE56627D01 +:10170000C6B4927930DEBFCB907762B9427079F17E +:101710007C5E09AEEBE59EBC92E5B9E179742AA145 +:101720007F9D08F3F50F90D9D3D0BA89B1CAE7638A +:10173000ACFF9D71BC1F639E9B719E082FCC3B1814 +:10174000FBB198F79C54B6D4937B75FB0A4DA2F677 +:10175000A1FA3AF6C9C8F0772F8001E739E11D6F89 +:101760005322ACCF9AAEE6296AB8BC714CD9140D9D +:10177000DAE9580FD7D7B99065C0FAD8BA7CD8043F +:10178000EC97EFBB378DCDD0A11FE6F6B8AB13C3F6 +:10179000ED07DF249BE66DCC93318F1BF7E563FCEF +:1017A0007532FE6F540DB6EF548C3C0C09EB3A8C3D +:1017B000F921D8CFA8F79B73C3EB7D44AC5F67DDFD +:1017C0009D57007ECC29079E866FB5322B6779E145 +:1017D000F1978BF9CD48943D01685F1B1F1CB91A26 +:1017E000D2D98F321FAEA7D2CE96CE85716B53F869 +:1017F000F7703B0EAFD90FF37AB39B788AFDEC7488 +:1018000086CB6BCB783B236FACD398DFE09B5C9CA3 +:101810002ED6A53236E9EAF9FBCB588E0FFA6BB219 +:10182000F97E16423C68B4B0A7D3F0BBEF5F429894 +:1018300036DA5D4D903E9AF0032AAFB3385C76C03D +:10184000FDB58AEB15188CBDA76510FE5D9655ABEE +:1018500004BFCE4B0B95237A2AD3655D4E4384B2E9 +:10186000079ECEB81A1FBE27F036793CC7FFED1A87 +:101870009FA795F9181B114E19730DF3C07ECE4D1D +:1018800048B9A44295B68EB21A0BECFBDCE2940781 +:1018900047C03C1ED166D658605D73F3535EC88462 +:1018A000FC8F3B6EE1E537A74CB042BE419A5553E1 +:1018B0000EF9FD9ADE8A78648C63F40BDF37E0F76B +:1018C000D20CEF8F34FADE7D7710E6FD172949DB65 +:1018D00088F3CFEA1E877862B43B25B18F5F94C24C +:1018E000F990950DD772316FAC2376FAB1A66FD30C +:1018F000627CC70DB908705D5E240536029C648762 +:101900006AAB83BC47B3698A46E51EC720C6BE865C +:10191000BF015D2C777C598E7C00C0A3D9DD90B6C9 +:1019200059CF870C7E96C9D868D6ECC2FD05E8EE83 +:10193000B892DA371F8361D939A31DE2B8BF7B099A +:10194000AEBB89C1BA119F77B89805C79159F7C640 +:1019500064C02B007E2DE0B5F4D26FFE4B1A87AD2C +:101960006A5DE76E427CF3CA5730F5BEFF0BC48F49 +:10197000350DC007A15D86F77794BF04F8B211D684 +:10198000B1FA858F925498D4BD881CB01FE76F0DB3 +:10199000660761BDC7337E331CF9D267F54CCB02B5 +:1019A000BEF081CDFB32C2C998E7673B9A922643CD +:1019B0007F7FDAA76855D0749502748074FEA512F3 +:1019C0009C9686ED47EF42B89DDFBF3E7D19ECC384 +:1019D000318157E733580DF18B2F3B877F0FEA5545 +:1019E00066CE9CB011B227EB0F99F8CFAD82FF0005 +:1019F000706D7323F8F425A9EC04CE63B945943FC8 +:101A0000751BCD7BA6D3A733844F8D9AB21EF0AE43 +:101A1000324BA2F1EC160F7D7723CE119DB5733CAE +:101A2000531FA0EFADF732D7C6F17C3F5961783F25 +:101A300075ED4A3996DF0AFB8970921DDD16CC7B65 +:101A40002A818692713F77B8503E19FB59A1AC7B31 +:101A500008E1BA1AE06C8775AD967C3C6F75B8FCEE +:101A60002EECB4ABB516BEDFAF3BBA37525E4F9A21 +:101A700003E3AD14E3C1461F9B04F5FFE45618953C +:101A800007AC67430E2C52097F98F2A50DF1E09246 +:101A9000D7E953A0FC569785CA0D7909F4716C12E9 +:101AA00094AF3A64A37DBDAFC36A2ABF9F417D0353 +:101AB000AF32AE96B73D5A2297B7E3D978C43B63AD +:101AC0003F0CB9DBD77E187217F6E54AE4BE5428FE +:101AD0004E19E961F5E32376D933309DA75A101EDC +:101AE0000373F250FE1AFBC36A8E3084FB3D62AE74 +:101AF0006C472AEDE79C4343990ABFDE7B48622A84 +:101B00008894AA43A9944FEA194C790010EDE39CFC +:101B10007FB9C79D574022DD87EDFEF8CC876BBEAD +:101B20000BE356FD10A6EEA27938701E17742980BB +:101B3000F30050B7201C5767587C08E74713C63D91 +:101B40005A02ED9B5EB5323B2181C52FE0265D2117 +:101B500079AE0EA07D3F0EFB827A836EF5F37D7128 +:101B600034E0BED8DD325323E06CF12F6CC1FEAC03 +:101B7000B0CF01D88738359EA911707E9779ADC452 +:101B80003FFDFA5B59B0EE1AB1FF093929A67A4C2C +:101B9000D9F48A17E914F001F94DA236C4340E7451 +:101BA000F3A9093F58C882EBF49448EC3198F76DDB +:101BB00035501ED1DFFAB8246B10FA0B2D73FA24BE +:101BC00090A3D6922F481E584B783F463D4FFAB906 +:101BD000D32C89E0F0697FF832753CE00BF01720D8 +:101BE00084D1882F00670DFBBFF08EA2D969499E72 +:101BF000ED063D20DFB13095E0BCE0B8950560BD55 +:101C00001718DB8BE517FC7697BF208C472C0BDA77 +:101C1000E13AEC9C3F0D2832C3375937C333B5D274 +:101C20000CB7811E339C6EA8C934950FF68E319582 +:101C30000F5D9967CA0FF34D36D5BFB1AECC94CFC7 +:101C4000F0CF32D51FD1566DCA8F6C5F64AA3F6A40 +:101C5000FB7253F9E8C0D74DE537ED5E6DCA8FEDE5 +:101C6000F8AEA9FECD871A4DE5E3831B4DE5F9C714 +:101C7000379BF213BA1E33D59FF8FE2E53F9A4D02A +:101C8000B3A6F2E23F1C30E5A774FFDA547F5ACFC7 +:101C90001153BE94BD6EAA3FDDF1B6295FE1FAD0C3 +:101CA00054FF16F727A6F299EA7F9ACA67E75C34D1 +:101CB000E5E768FF6DAADFC59A47A23C1A9AE57D61 +:101CC000683CF00B39E13CE1F9FB8B25960A087C76 +:101CD000E1F83C9717E5C957B42FB68D17FC4EE0D5 +:101CE000EF25E65C22675EDBBEF88ED00F2A942AD1 +:101CF00086F6C4850E89F0FD2FD6755C4F6BB23029 +:101D0000652A4CC7C9E5F43781312B205FAC692EB9 +:101D1000867AD77D41D681F2634011D044C47C924B +:101D20007507B344C021B5D265CA0FF4B84DF56F3D +:101D3000A8514DE583BD39A6F2A12B35537E98AF4E +:101D4000C854FFC63ADD94CFF0579AEA8F68F398EB +:101D5000F223DB6B4CF5476DF79ACA4707569ACAD0 +:101D60006FDAED33E5C776D499EADF7CC86F2A1FB6 +:101D70001F6C3395E71F6F37E527746D37D59FF8D4 +:101D80007EC0543E29B4DB545EFC870E537E4AF776 +:101D90002153FD693D4153BE94BD6AAA3FDD71CA1E +:101DA00094AF707D60AA7F8BFB8CA97CA6FA475309 +:101DB000F9AAFF043D1DF59126BBEBE902C4F32F00 +:101DC0004CE597E38607BF07DFA5D5499A54847889 +:101DD000FF5FA6FE1E4D48CA41FCA9034BD82EA1A9 +:101DE0005ECFF5EEFF1D9F4972EFB2CC4271906F4E +:101DF000F27B00D9B055377343FD14F805F5198906 +:101E0000FD95219D24E9AC03F544D05F48DF718145 +:101E10003E83F2C4C0EB14392303ED8C84B07E9A68 +:101E20007E25FFFAF55327E89E480F93F3BC521E18 +:101E3000A45FEFD83F63287CBA97F95B51285728F5 +:101E4000B90342409F27E362DB9F331D00B788F14F +:101E50005E8D6B4FCFEB878E673ACE53FDDE7EAD46 +:101E6000BC5F09161B69A73D0476BC05E8B5BD1E1D +:101E7000E80AF498CDF52ECA6FA977537E5BBD4A68 +:101E8000E9F6FA1C4A1FABD7A87C477D11E59FA84D +:101E9000D7291FA8AFA47457BD87BE3F555F43F92C +:101EA00067EABD94EEAE5F49E9B3F53E2ADF0376FB +:101EB00034E6F7D5FB29EDA86FA3EF07EADB297F0E +:101EC000B07E3BE57F511FA0F450FD6E4A7F5DDF81 +:101ED00041E52F81DE85F997EB83940FD61FA7FC90 +:101EE00091FA2ECA1FAD7F9FF2C7EA43941EAFFF3F +:101EF00003A5AFD57753F989FA1ECA9F177E86A22C +:101F00003CA167294EDA7F4FD9A85D8A14FE1E18BE +:101F1000E329C27D6B4C48BA0FCBAB99AC29685F03 +:101F200044D911D1FBF0B9E8DF5AC65801EA3B4366 +:101F3000B27735C17E37C812E15D438ABAAB097EFC +:101F40009D2EC6591FCFFC71798436A467DF83BFED +:101F5000A9A04EA5D51F433BE06E1FD83764BA0138 +:101F60001EE6101E9EF84A7612F3D3389FE778AA31 +:101F7000713DCC19782F03E6F5759975A1DD943282 +:101F8000DA7B5B1ED0CDDD4E9F8DD43AA665A39D36 +:101F900039C71E1C783B9477BFAA68BBD4BEC7BBA9 +:101FA000BF7D2630E57ECA5FFE633ACA9FCAFF55F1 +:101FB000BC089793D6C41AF42BDC23D67F4F9E6CB3 +:101FC0004A1F1DEDB91BE7F9D948DFB99F02DC6A4A +:101FD000BF357200CAB1AFA1890D743D97A956A44F +:101FE000EB794C7F2503F539D41B217F3BF3535A02 +:101FF00097E3BD1FDB2F044301F3DEC9F6E108B40C +:1020000039764E0FD1F3589BC7FD106BF364537AAA +:1020100060B4672DC2E5D391FA330F40953F8C56DB +:10202000E9FBADACFB099CC7DFFEED8B73D28830BA +:102030007C0DBF04C32D02B8D51E57C83E06FD8FC8 +:1020400051FE41D0B3A19FD6D207B83C6CE07E8B45 +:10205000B5F11F576079E85EC0296010177CAF3C6E +:102060008E7A5E2D9453BB6FF1FC05B04B913F5DB2 +:102070008E83FA909796C3BFC1B1F861C83990FCBE +:102080007841EAF7F218C690EFBD3F9AFB3D6AD15E +:102090004984FDAE930288872C2D68C5FEFE32C1AF +:1020A00045F53ECFF16E273C61816DF9F0FD24E2EC +:1020B00009E2BD2B908D7E85F532C70BFF6B8AF64A +:1020C0003480C4E2F2E8E84FBC7B47F278F4832125 +:1020D000FEA01D1412FB69E0C737DB208DE067808E +:1020E000774FE1387FFED5C41CC48FFB5F9EA4E20E +:1020F0003E3761FF69E1FE19BAAC603C6540EE4EC7 +:10210000F457CE41A502F1725262605706F9BBEA5C +:10211000F6C7E09FAF8A7D3DE9B65606A85F4E97A9 +:1021200046F91131BF23020FE71C7975D85AE8F739 +:102130009BC7AD9A1DC72D08E57A1263E073DD9346 +:10214000855911EBB8FFD019EEC7438F1FB43F3943 +:1021500048A5795A1DCE60EAB8F0382CCD72BED7AA +:102160009EC844F8309A9F818F8A2DD1BBD31939EC +:102170007F8E87400FC7110F911EFCB0DE5BEDEA2A +:1021800080DBA1FF10802E08A9F7672E1BE2E37207 +:10219000A651BA827928BD87F96D88FF1EFF2336C4 +:1021A00006E37D9D75D0F76F16DD391CF3F7B3EEAE +:1021B0007237F4775B5BC32BE89699D7FE48C5600E +:1021C00058777560D92B98CE7D4A3AE757899E3E5D +:1021D000C0F14392AF65088CB7684F69CB50F87E69 +:1021E000ABC2F18B4D64EC69F4136469213FECDB05 +:1021F000A78F8CCE43BF85B18E9080EF81D17A08B6 +:10220000FBA96D64842FDDFF66A7FDEBA5ABA26F74 +:10221000FC7EA88CECAB7B09E2E3FD2FDB53C8AE60 +:10222000645C5FFCBA90DF98477DD18AF29BF2BE76 +:102230009F217D7CC3CFEDA9B5F1FF4BED4392AC5F +:1022400049C3019FADDC4FF8B9D5E16AD2904E0386 +:10225000C371DE001DD6944CF443FB56773A91E8E7 +:10226000F3B22CFC78C3BDEEBC116179FDB91C281A +:102270004C1A41F2FC4B5CC73137D8ED386E9A43AB +:1022800053B03C39309CD37FAF7C605712C27EC1C3 +:1022900087500F4E0BEBC16BE38733B4FB4312EB5C +:1022A000968A49EFA1754965AC03E95A2AFAB6172F +:1022B000E7B52381B99449B1E8DCEB2E5470BE9A9E +:1022C00083E69BEE213F021BE4D0364A57CF03F052 +:1022D000B306ED7BBBF0971DFF9F5482AB1FC67FFB +:1022E0003A393CBE5ACA3A18F021C9F56DD2D376B4 +:1022F000809EA6A443BB78DF6E9C8FEC662EF417FD +:10230000F9CB84FFD5C6E17A351CB9FE95939F4180 +:10231000FBDB844BE5FED11C17DABD96789AE761AA +:10232000BB7754FE04F4BF0D793CD22E3E9E710360 +:10233000E56FB571BEC7BE6C4A47FEE364AA1FF7DE +:10234000F7565DD236127F0835A37D3D171081FC0C +:10235000434556139DB128FF15A011F923ABD17F3A +:1023600045FE267614FD99F3D09F29A1D973DA8012 +:102370001BF9AFF68C065B0BF7D5028608F0912CA3 +:1023800056E4C079343BAB0760BE31E156E68DC1FF +:102390007F5A41BF0ADA23F216AFC3D58FFE66F823 +:1023A0006D6CDB935810F88BA5279B05FF81F15BC3 +:1023B000A2C68F4EAD568FEB7AE6630D19F3C9A214 +:1023C000F461C147611FC9DFB56C7EF0FD64F2AFF7 +:1023D0003652FD650EA75F015460CD663FAF2127E1 +:1023E0008D340B7B00B8EF7ECA16E0F80A183A0865 +:1023F000EC2FB14F373E35E38FCA38CC5BD8D908C4 +:102400007F0BEA37678DFD55788AFB1B87A98269A8 +:102410006FB98E7EAABED677BDE906D097CF5AC3D4 +:10242000F9DD81CD8B107F2E3D05EC15FAFF796922 +:10243000C32C2BD2C14E993D1D633C540782A6F993 +:10244000C6B3A0493F4B89CA0F89AA9F19553E269A +:10245000AA3C2F2A3F39AA7E59547E5654FDEAA839 +:10246000FCA2A8FACBA3CABF1E55BE3A2AFFDDA81C +:10247000FA8D51E51BA3CA379BF277E6678AF38E84 +:10248000C7A2DAED8A6AE7273C0AD307986A4E4C5E +:102490001CA47F3D775E26BCEA78E9C8987F85FC5E +:1024A000BE75928678B5EFFCD98D37A1FFB0C342D7 +:1024B000A7155ECFA72D21DE2D0B0D427D9291D366 +:1024C000F4B60EC719C4BFE760FF918E9E17F4F4EF +:1024D0004BB09782A318FB15D84B98BE04F6127E1A +:1024E000DF0BF612E673FF0474D90F5D692FC9E1A3 +:1024F00075C1BF8213F1E175C1BFA2D329A6F2C98C +:102500009F0E31954FE9CE34E5C71D1C63CAEF49D4 +:1025100034C363A93FDF549EADFF4F3CEA35ACAEF8 +:1025200038FC3D13E19447FC241A5F6E8BC49788F6 +:1025300073B1F7012EFAA870FE83EF2835C8178E05 +:102540007CB496FD02E863DFC1949D28079E5B91F1 +:10255000D09C3200E47C3ED783F6BD742001C7F9DD +:1025600020A96336EEC3CD609035C2BE94BEC4824E +:10257000B86FDA2146F2E342BE4A78A01DEA9255CE +:1025800098EFD8835D43504FFC20C9C7507EBC787C +:10259000480E3442BD2377FDF287D8CF5EE8075559 +:1025A000C30F52A05F286FFA938C1C89D10C813F16 +:1025B0008C452507D6033A6F0D3F8FE91A82E7D184 +:1025C000617885E2115ED9CCA197437F1D2BF9F983 +:1025D000D6BEE0AE57C6417F17754737D3107E8908 +:1025E00024E73A567179B12F58C6E1E6D77F8B7E42 +:1025F000EB3B052E9D11F069D87F8CF8C5BEC33624 +:1026000015FDEC0837FF28B4471DCC6F47B8E5DB54 +:1026100056A11C1EACB0A735B4575DF41D1DD8B62D +:10262000423A5F4016801334FCEFF2959BF1BB45B4 +:10263000F8DBD961DC97A57EAB3F14B1CFAC0EF2CD +:1026400026FE6B0997D3BE46E4715E16C6D7B54524 +:10265000DAC5CFEBFDCC5118410F0717D8720BA884 +:10266000FA17788EB7225866CB45BB40775F1800C3 +:10267000F9CB67E652F9BB65EE2F1AB470B94B7609 +:1026800051794BF3BCFB0A71DF8061D851EE6EE2E9 +:102690007E7847AF9F3EC2AF0EF37BD1D2D1F20D11 +:1026A000A8DF516477617F7334B33FBEC3FB76BC50 +:1026B0000E70BF03DB45AC636F50AE0CC03EDEB6A0 +:1026C000D2ECE75FB1C5DC7E4201B70F2A0B389E22 +:1026D00055F983E52EE86F0EEB6A46B938DB125CDC +:1026E00084F018771E2001FD8ECB39D39880EBCF74 +:1026F00095B491D04482EFB8AF5AAEB4F316E82A3D +:102700003EC741E73A7B5F92096FA2E9FEF5836716 +:10271000E3114F3A0206BE7511BEED3B7880E8F436 +:1027200045A4BF7EF8C609814FEF5BFC89FDC9ED6A +:10273000855E85F923F1C0380FD212983F021EB38F +:1027400073524DF986FD365ACFC15F313A0FDA63C5 +:102750000DC9F7C17A0F4CB2BB1A8953F273B97C19 +:1027600081DF7636BE69953887D9E80ADBB90783F9 +:102770009C7E0F32753AC24B03FDD20FEDF30E86ED +:1027800064D4D35CCB9D3EF4F1E69DB099F8925DA4 +:1027900033E735660BF321847F54DEF06BE336625A +:1027A0009C40341CA2FDDADF2A4834C5CDEC8D3ABA +:1027B000C71B6B9CE37515507F7BBEAF2AD5CEB08F +:1027C0007F3B2CCF1B089E7BEB1D12B6CF0BFE511F +:1027D00056C7221F0EC9888FE358A83101E9E220AD +:1027E000D3303EC5E84FAAB11F213E703C93CE7F47 +:1027F000214D90A1FF03C72F745E417DE25026F961 +:102800009F8CFE59571A9DF719E31A72E8C0F16AB6 +:102810009AEF738764B26B9FB374C7A7C4D0FF8C61 +:102820007DEF4BEE44F77F757B3FF1EB26FC15EA1D +:10283000CD2BF03E563001E17484A5C2FCE7147C38 +:102840008BF4CE5EB839ABA9DEEC7133653CB7DAF8 +:102850003A3C6527AE07F453F909C8A76A90877612 +:10286000697EEE074B2B1ABE93FC0F426F9C3DC650 +:10287000CC87F7A5BF156F45B8F813A9FEEC2473F4 +:10288000F9EC71BF5A81DFFF75BE43C57EA5710BA0 +:1028900007A3DF739B80D39B0757C78762C0E506FA +:1028A000AB2FB93FFAB92164213D37B5279DF4EF2D +:1028B000D979FDCB737B8F42F58DFCFAB8901BFD67 +:1028C0004C76F74F3FFC34F27B7A4A1CC22B5BFFFD +:1028D000BE03E5EFBE74AEBFF7D5AFB10E23FF6800 +:1028E000AF7CB5FB91CE36ED4E27F9BABE369EE4ED +:1028F000EBBB055CBE6E02B8E17CEDDE8420C267F6 +:10290000533A2339B5576B24FEF3685297EC81F2A2 +:1029100052C057844F08F91FB41B971E6488C74ED6 +:10292000CD33DE4BF5B89CDD942EE4ECE26F8FC620 +:10293000739DBD6E9063B86FC1E071F4230E04B94E +:102940008E7658ABC4685EFE9F3B29AEC890BB0331 +:10295000D146077ADB74908F9FCDEE93D14FB0377D +:102960009DF3C9D9BF582EB7231FD1E400C6E74451 +:10297000EFB3EAEAE2FA8A3385E86833C2655418AD +:102980007E15CA9E5D68F7EE630E1FC6F9A8CCE7F8 +:1029900088F4DB18F5B7A1FE06E98FAB0EA4D0FAD8 +:1029A000B4D5AF8E44FCAA751277AB5072FF887E07 +:1029B000894DB5F12E5CDFB69ACD2991E766578F28 +:1029C000EB946518773DE821C82F53826A29E255B8 +:1029D0002AD31A30DD2EEAFF448CFB53D41B613F0F +:1029E0001F177A23C0232E1BC7F758482F7DA24EEE +:1029F0009615E8EF9983724089614718FD05447F79 +:102A00004F88FE9E12FDAD3FB4B9D48670F4325AA1 +:102A1000CF60BFD6887E2C759D5AE6A0F555C9714A +:102A200008A76646E7724F087DD668BFEF60590376 +:102A3000C6675C02C591013F4FABF3C6C5A13F42DB +:102A400002BD07F8F5D35B78F9A0380B9DBB3FBDFD +:102A50006D16E51F75F2BCC19F9E12F34AABD335CC +:102A60003C2F7F42F49FDDB578402C7F9A91768889 +:102A7000F5ED15F37ACEEA953F42F9F15B25E0EFEB +:102A8000C78E33F8DCF8A099BF8D3B186FE677024C +:102A90007FAEC5EF5AC2FCAE6802F49B3BAB4B76EF +:102AA0008C80E6BA4F4715A997DFA5717E67C4737E +:102AB00034A9A0EF66605A46F87D292B6527E2B35A +:102AC00011CFF04366FC349AF8F27A01B726B16E62 +:102AD00087DFA7A31EA230AF1FF168402F5FD41C71 +:102AE000480F4D599C1F35264C65B1CE75DB447F90 +:102AF000367F1BF9093658DAFBF53BC46DE7FC4E0F +:102B0000E9194EFCAE6CAAC38174BCC1C9F5800D35 +:102B10006A9E1FFD461B548B0F314B61117A28AD05 +:102B20008FA99641E2A82DD3544E725A9ADA437E69 +:102B3000ACB644C13784BC4D70DE5DC5C86FA031F2 +:102B40009CA7A2F2F80ACCE3780EAF93FB73722D28 +:102B5000A6780E47967CC69E847AA359EFB3A55BF0 +:102B60004CFA9D728D388D072624C68CA36569B1F9 +:102B7000F1A4370EC3F063F4512F1A9FC6388AC8E8 +:102B8000AE59AF320DFDA24A7A1EF1E55D053C5A01 +:102B90006E571B97E79B04DE45F7D324E8C2C82B8A +:102BA00006FE6979541F20B33107FA7BE8DD54F241 +:102BB000BB1E2E50C85FBEBE289BE28BD617DC49D9 +:102BC000F278973B73178FEFE5FAC52EF772F93459 +:102BD000CE239DF3DD683FC5AEB6469DFC1C6E99C5 +:102BE000E46B6B7AA32396BC7A58CCEF7181BFCF8C +:102BF0000AFBB84DADEE37EEC05897514F0136A8DD +:102C0000C5E8DFE234D375F6F1FEF94840E0BF5184 +:102C10004FB53019FB55453CAE512FC36FEEF797BA +:102C200013B8FC5C96AFBF306160045ED6D9B6A124 +:102C30001C574ACBE527D2701F65D26FDF50573340 +:102C4000011F82DF7AB79C8C7663932A133F6FD77C +:102C5000D73822F58668F8BA86C93C6ED77F6EC829 +:102C6000E12C9C9FDF81FED75655A678AA2637A770 +:102C7000F326A0FB58F41BDD5F5BBAD1DF9945D882 +:102C8000DF91823B595BC47C2125BF88738212404F +:102C90003C5059D0938FF6CC3B0AC551F78DC7FDF8 +:102CA000FBAF3E9B60F86BFAF7635D8BFF5F6B9C3D +:102CB0005D6DB284F3BF847123C9B83D9CFE86C3A9 +:102CC000AFEB22E2975D25517AAE900FC3D798E51E +:102CD000C14DBB534CF686D1DFB5E8395A4FCD62B2 +:102CE0003987D04FBDB783913F7ADF41D96FA5793E +:102CF0003A082F9EC3A631FADD1BE59FDD07FDF5DF +:102D0000C7A7C76D77127FDE67658724D0F7980E57 +:102D1000AAD120C64917C6BD5CE44D2A84F9E5F660 +:102D20008C237E2E1D3A4671AF00774EC71A3F079F +:102D300064251EC2DBA63990473876CCA3F2D607AD +:102D4000998BF296C010C4FB3D828E8C79EEC90837 +:102D50002E42BD71DF8B1FCB91F1F83716723B7A93 +:102D6000AC23490FC4A05F5594DB2DCC1F8F675E49 +:102D70002FA510DF7233970DF1E19AFEE29A600DF4 +:102D8000C50FCB328FF38D5AF75E4C07E3FA3D63E4 +:102D90000B319E5CE3EBDEE4F1F8513FF38242C677 +:102DA0008AA1CE41BEBFB9CC43EB5DA6F1F5BFA968 +:102DB0005553DE09F0B08FC7F9D48A7859E6B20FBF +:102DC000C67E78FCACF71BA0150D8D354F8E5FBD10 +:102DD0007015707C5393D954D427DD3692A32C47B9 +:102DE000ABA17EFB58C716B18ED2499E19B88F92FF +:102DF00093AFE3614067ECD79F64A3B8F49A7C6F0C +:102E00005521D11BD3515F7C78814AF624CBF548FC +:102E1000E8CF629EEBC3E3EBAE97A3F70BFFA6A44C +:102E2000216C19943FBC3A89E26722D6B194F6C36B +:102E3000B9D14372DE63C09FFBF996396DA4FF5F81 +:102E40006BFFC3FA8F87EB3F924EF2CC9F2C133C63 +:102E50005A5CB26E217FAE83F85A63C212D28B36AF +:102E60008B795CCD5F24719FC2CC5FAC91FC8BE40D +:102E7000E4FF5B3FFCFAC20CC137A3FCF1AAC78D8B +:102E8000E72ABF069D91F451ABC78DF22BBBEB3EF9 +:102E900086FAF025676CFF9291B61A7255D809AD83 +:102EA000717A4DACF8A2B603B69591F4FABCA0D3F2 +:102EB000E70BF9B9336C2DC5AD36833C43BED6E480 +:102EC0005ACE249277404FFD8C8F71BF917C16E3D0 +:102ED0007C4D7CF62BC623EE2E34EB692D12CC0BE9 +:102EE000E9E15D85FB57F007F235DB06EEE4E7C567 +:102EF0006C5502E0E7EF057E1AFD1AFA5BAB58DF6E +:102F00009062FD00D259AB80F30F26785EC0FC9E24 +:102F1000FD85843FAC92E3EB43128FCBEF8B3E14E5 +:102F20001BF352DC7E25B707B259A5636E0C3967D7 +:102F3000E8FD617F33C7E71657354FD3B81E648C61 +:102F40007BAD7D6D1276564BDA6A162917AF775F27 +:102F50000CBE15BD3F1667945CEC633E57C14162E1 +:102F600086DDF47BA4FBDCB22E79782CBBC939DF7B +:102F700064376D2BE176D336B18F9BEB5C3BD1DFB1 +:102F8000BA19E438C92D9F8BDB51027EC358878460 +:102F90004AF010D64EA901979D424EFD50E89FCDB4 +:102FA0006877DAF1FC4EA7F467F59594FEA8DE4B3E +:102FB000E993F52B397DB8F34AD1AFF13818581899 +:102FC000DF951A9C5486F01C08FC3F0EC61DB443C6 +:102FD0003B4CE7EA75F1846F6DF53E6A37703E9FB2 +:102FE000EF13DEB82769ED136D048721C55E3691B6 +:102FF000DF930959010F971A38CA3C8350DEEDB1AF +:1030000006FC8DD87F951CC0754AA29F149D05D0E3 +:103010008FDCB0FFDBE47779F85D85F436578961A2 +:103020001771FFAB5BF4B63960E091370E99EAB6E1 +:103030002A0EAFAD958CF860E7A62374EEB0AD8A8A +:10304000DB5D036A1A0FAFC075B81586FEF801354F +:1030500099A5E8FF709539BA29EFB599F023A9C071 +:103060009C4F89F2BFBAD8A62F906FBB98CD743E03 +:10307000F455E93B6B62B41DE6243DF55209F78334 +:1030800084E945A3752EC4382FC0AB856AB3359348 +:10309000E4119FBF41DF5B4B36572CC7F6BAC3879D +:1030A0007E0C9B3E87FB232B39DF6C92B499B86E64 +:1030B000FF427E7F10EC4AD2DF7E2CECB31342EF4E +:1030C000D956B59CFD0EFB992F13FE85CF19BB89F0 +:1030D0005EF7DCB63C4E8A5827FADD23E185FE76A2 +:1030E000131D6D4A319DB73D5CD9BF5FF147F56651 +:1030F000FFDF8F2C5DFDDAF17F9E9849F897B8DDF0 +:1031000046FA9FA36710E98BDBAAF8387BAC5EB266 +:10311000F7004F028D486F55174CF6DC8D3966FE6F +:10312000F07049FFF69BE16730EA392C7E166B7E22 +:1031300071EA57B3DF8C7E8D7A46BF0E717FA6AFE2 +:103140007E1F9CC8ED37C57D71D4A731E27497E529 +:103150007B574F8CF0BB28EE273EFC14E0C3BEBC6F +:10316000427ECADEF80161EFC53B2AC96FFD63816B +:10317000377BE61C792C0BF1E81D1E741088E37177 +:103180007EF125DC3F6A9DA6492867A3FB6339B21F +:1031900069DFB79670FFE16FDCD55208FD85F3BBA0 +:1031A00089393E61E90E12FF71CA1A58E8F05D2DA7 +:1031B000C5B8B2DFD45C20FD74AB5396918E4FD46A +:1031C000A410BFDF56C2FD8EAD25D51C9F57C97414 +:1031D0002E1527F41C5A27EE734D661C9EA30D6B0B +:1031E000187037F6BF7D22BF17BB19EDEA087CDEE9 +:1031F000EC36F29CCE764E74113C1F9E9FB7612434 +:103200008CF7D335165A83CCD438B40F5A2BF939EE +:103210009BE3CB697183203D56951977CE89ED44A8 +:10322000FFF31B83766C877C09E6FD7A55751CAE2F +:10323000776BCD5BC9D8BF8D2512FFDF5AC5CFE9AB +:10324000F7DC565D89FEE4CD3EEE0FDD5CB53A88D5 +:103250007CF9D24A4679BCC6545A807A1AA37B625A +:1032600056D7B7D9F402CEBFEC45D09F7A1F6B4535 +:103270007DB892F7674D37E3C79E29B07F88FF6E10 +:103280000BE905DBAA387FBC34DFA622BFB4E18E90 +:1032900061B98BD17EFFB4E6886304CD87DBF39DF3 +:1032A000CE943207C27D05F79F26B499FBB7CDD9DE +:1032B000E51F29E430F7C0B2A43983307E9C980C16 +:1032C0008BAF39A0DF85FC7608E7BFC679DB8F07B7 +:1032D000733F5BB4FD6B67CBFC599C8FD17A2D5546 +:1032E0002007C6E1B13EE7BB061EC7E79ACFCD3245 +:1032F000569AF3B628BE6D89E2D7BD7AA5DBD2AF68 +:103300005E69F8299B85FEB1DEAA2E247C673EC249 +:10331000CF66C5359EEC4BA0D3C1D09F7D783AE9EE +:10332000637F9E68E8937A11E2E136E0CB787FC94B +:10333000B6B0DAD05B7CAE7EF41647BA6C5A8FD545 +:1033400015A54FBAFC2CAD1087E570B630CB39B45B +:1033500023DA3026D9243FD438C4731B7398F06E17 +:10336000F3FC0B84FF0F5771BA64CEB498FACEB059 +:103370003AF33C0CFD69A8CF3C9FC12B53A2FCCE75 +:10338000B1FB8BD69F1E11F795C7FA2D0CE9E6D13C +:10339000848F8F207C9E7F81C70D5CEB7EF3E117CD +:1033A000383EEDFD88C7DFED7D83E7F77C94407EF6 +:1033B00088A6C4AE45B85FCF5AB5A1E3217DFE8D86 +:1033C00067862C8375DF50C4F7E7791117113DBF6D +:1033D000A14592D097BD438BB85E735E89D06B6A6E +:1033E00064CF208A3FACD1EE88B4132F177933A86D +:1033F0007E94BD289DE076AD4D99C7D03E1F0BF65B +:10340000F9AE64C2238AEB1BBB52DC3B7578083FE4 +:10341000C656A9E4B7B00BBB7DF81AE66A00FDF109 +:10342000D97CEF58EADFB25AC773E6DCEF0EA07B17 +:103430007180A563506E38193F3F58F60E8FC3B6A2 +:10344000750D6B45BBA1C388138CB2378DF5EE1398 +:10345000FAE47E81E7FB32BAC8EF71E075B3DFA30F +:10346000ACC8ECF7805632DA6DFB7EFD5AFCB21820 +:10347000F642E5A465654511F227B7435396915F7F +:1034800032447204DF3020FF4B89E68E7C7FA1E35B +:1034900044FF7AC2CD87CC7C28EF68D4B9476F1C33 +:1034A000A847C2FB0A06BEBD9EEC33C5A15F0BBF99 +:1034B00096166518F7BF09AFD6DE19B74BD85B94DF +:1034C000BFBCCDBA0BE96948B167A9C013875C18C6 +:1034D000C693DEB81B51BF66DB48A3BD53467C9242 +:1034E000387EDCDD8B6FFADD08AFA935DE7BB1BF3E +:1034F000DC316F8CC1F385D9E35E1D1219EF68D8FA +:1035000015D170E92AE2FAC0AC3B0207AD3C7EA1BE +:10351000F604C88959B707FE6A85FD3F51545CDB44 +:103520000C7439CB2ED37B099D4577EFF03BC9DE78 +:10353000A3FC6345F36BFDA85717E86B71FCEC42E5 +:10354000BD8EAFAB9CEE6118F0EC9BAECDF730B604 +:10355000C3D8E6736EAF23D27FD8E4E2FEC35667CA +:10356000FFFBFD55E34A17147A1F298A11571A5E8B +:10357000473BC5075FEF3A9ECDD77F82FD7589F542 +:103580004C1F37530E14E0BCB99FF95AF3577A8A8F +:103590004DE7E58A45BC9351BE76EDDA42116F30B6 +:1035A000225CBE5BECA3D23395DAFDA3F0FB47E3CC +:1035B00062A7157A5F443C888E8BFD7BE169E0450C +:1035C000CF04FD68D184BF1FBF8CFD003EDDC5FB6D +:1035D00061AB9442139FDEF616D15B3ADDCF37DA4A +:1035E00085EFAF84DFD36822F9F303E207757EBB72 +:1035F0000BCF79938A79FC7A2EC663BB882E4FE372 +:10360000386B95E018DCAFCB72F0774D11FAC358E8 +:10361000A6A1A7889D2DFAEE0E7CDF42B185348CE1 +:10362000B83C7BC8B7A372084E1FF834106FD22D78 +:10363000A18E4EB4E3526D74DFA37926F7B73497A9 +:10364000727EF19F821FFC49A47F11F8F061A1FEF8 +:1036500039EEC3455C37A47717EAE723F30513F483 +:103660003F47E6012E17055F6A93CCF26B5B670656 +:10367000E1F55F79796CF8B03AE1DF35F834E37958 +:103680007BBAF0AB1BF1D2200826A750CA2AF280E1 +:10369000A5E57425A23CB23F38AF5FBCFC7DBDF907 +:1036A0009CCFE8CFBB4E31E9178E1CB3BEB17590ED +:1036B000410F7E1E1FAEDF4BE7BE6DEEFEE34B36C5 +:1036C000F4315EBC2540F6567C8FC544A7D169E92C +:1036D000B75E48C4F8910F7D13FA1DE7A37A4757E8 +:1036E000F9485A1FA5C677EF3AA9AB3C621D4BAC0F +:1036F000A181E8E73CED7F2131169C96AC89EB2A4D +:103700008F906B4DAB1E20B9F9F11AEE27F9303DC1 +:103710003407DF05FAF09442719F1F26723CFAF0DD +:103720003E3BBDBB71479DF48C92618637C65916EE +:103730004D52687FA7AFDA6F45FBE48EBA53568CC3 +:1037400083993A4925782C5E73C6EA85FD5BB2EE13 +:103750000B2BDA6377B898D15FA02103DB9DA276AB +:103760008BEBF653BB3B208FF517FB251BBF17D404 +:10377000DEBB8F91F1760ADE17A27763BC6427DA8D +:1037800011CF287E3D200ED3F97E24B0A07857A615 +:103790008BF567373F1F7C95E2641910CD2731FC0C +:1037A000E80D0BE2095FBBBECFEFA18199625D839B +:1037B000E720457657E4BB1B7709BAB02FF6DC4B00 +:1037C000E724A57615FD5477E997ADA83F1DF33A98 +:1037D0007D180FC2B658CFF2F84D078D93E137BF71 +:1037E000BBB18C45E43390DECCEF6CD884BF70C5A0 +:1037F00024E1FFC96379486F6A2DA3F7A7ECA5F30D +:10380000B83EEE8EAD3FD762DC556A184EC6F7D390 +:10381000BE3BE3D11FD1AECB14C7705165E447DA8C +:103820006AF3531C436B86C5D788EB15711946BCE8 +:103830002E635A2B9E6378453C63F11F64A69BE27E +:10384000AEE3991EB17FD37A524CF95236D4547FED +:10385000BA6384A9BCC27593A9FC1677BE293F53ED +:103860002D36D57700410B78F1380B26519C053564 +:10387000914DE5DCEF26E26975F80FF723456736D1 +:103880003C8F5E24DEDB30F6BF3583DB9BDEA8F8A1 +:103890008854E6F7E3FA17023E0461FD0BA3E267E2 +:1038A0001DC2EEBC2AEE42ECE3E393A2FC787DEC71 +:1038B0005B98DF70BCEC9B7FF178F46CF54714CF1C +:1038C00005FBF55E16D4BD45ECD62DF35756A15F2A +:1038D000D4D693CC7494BF2F4D7C2E1BCACBB11081 +:1038E000D66FB378898FD97AD2A8DCCF3CA3336165 +:1038F0004AB6130AC5ABD91C9BBA703D361615CF14 +:10390000A2F278169BD14FB89CD60B7605C505CC94 +:1039100004FCD301FF2A7B244A6DF3859F36DD88A2 +:103920006BE674512EE07C4FC50809DB576699E3BE +:10393000906D08D771348E693FE2055C8F47C335BF +:10394000E7FAE09A28EF5C8176CBA65AA532F29C82 +:10395000479B2C51F9DB932471FE14BD0FAE24BE9E +:103960000F33496E9DF1F42FB766F58C203A34F28F +:10397000AF5902CEFEF4A75942FFDC9A641E2F9B7A +:10398000552657C0D24EFA25F2C39E291A417ADD38 +:10399000C53A7E6FC388BB3F29E2EECF143D5F710D +:1039A00017E4FF0AF84AFE96A8787923FE1E171836 +:1039B0008CB8D7111D7F6FC4DB7FF01D85E2FEFD43 +:1039C000F74A74AE78AD787B16196F8F7CF62BC7EB +:1039D000DBFB891E4FCE97E81C608C32B715E331B4 +:1039E0006E53D817789F2EFA3EC18AA2E9AD781F90 +:1039F000D788B7BFAB287F460BFABF86A4D29B19E6 +:103A0000B7CDAFA2F6C054283EFFF299B91585058F +:103A1000148FBFBA81F3776A7F17532F6C8C117F95 +:103A2000DFD2FCA4750CCA07E01776B297CCF1F888 +:103A30005D96A06304949FDA216B0DEAD5F1F8A797 +:103A4000BC231263C5E39FAA54AE2B1E3F6FB22462 +:103A5000E2F0FD73709FABBC0A0B48E178FC683C58 +:103A6000FA7BE3DCCF4CE27E4D2BD81D035230CEE7 +:103A70001FE41CFA094A24BC0BC996E524CF40D6A2 +:103A8000D51BE70FDF719FE6379BE3FC4F5672BFF4 +:103A9000C2B22285CA4FE54A744E60CCEF1D984EE3 +:103AA00017CA2F0B237DE694DE3407EBBD0DF3C65A +:103AB0007A6F57E6F7AB3719F1FEFFE87A0DFA7E19 +:103AC0000F952258675BB514D82521BDCDB162FE94 +:103AD0007550C9519F2D1D3FFF8F7930BF38E08F42 +:103AE00018373AEDCBAFD1F9CA6CC6DEDAC8E52596 +:103AF000F15F8FC0C7B8DC526A3F8B39CEC8A4FFD4 +:103B0000EA2D13A0FD3C87B41FEBB789F9CFF23241 +:103B10007A67AA3A8B055480579CA3CA8A71DD8EB6 +:103B20002956867EDB3816C57F1D9CFF92FF3CD34D +:103B3000544EF8E4995F647DB020420FD1395EC9DC +:103B4000F01FA73BCDBA15FA9F2DFC8C4ED6518E97 +:103B500071B171E5127B0CD635CF63C6BB1BBFFCC0 +:103B600019F96567093D686EA5194FE3188F07714C +:103B70007F0D749249341F139F765A797CA52107D3 +:103B800037E43C5289726636583B789D79B62AC72D +:103B90008C8B699DCCFD6EAFCF65F16C00A4D676A1 +:103BA000773BD47B73E48C523CBF726E9519D26123 +:103BB000DB64F19E542ECBFD2A72D5BEB8AB01E377 +:103BC0007D77304708CFBFDE7F90EFFF22BF14A87C +:103BD00044BD75A544F96175FCFDAF1BD730DB28EA +:103BE000A12FDC02E30E5BD95581F8B96815D70324 +:103BF0006BD7D8549DF822D71397E3AF2AEA156301 +:103C000066DC03ED7E3718F006F1A48DBFAF66C801 +:103C1000BFDA35E6F7D696ACFC8CE4A4374A1F5CD5 +:103C200022F48B25517A631BFE02EBFDB901875EFE +:103C30003D31C0F5C47BE7F54B473BEAB9DFFAF706 +:103C400051EFE82D35CEA3D53CF1CE64BB15DFE1B5 +:103C5000DCBAE0B1C4E5CE487836D03EDD5EE3FDA7 +:103C6000F5E48111F4B822D946EF2BA929D7758F35 +:103C7000E27AEB85E562BB83DF475B29E3558D374D +:103C800055EEAFDE50C2E3392FE5F038BE707DB09F +:103C9000429CD4CD5B48A773C5FE58240EBFB785A0 +:103CA000BDB735B37FBBD0387FAB50CE6F427EB04F +:103CB000E11D85EED5B56D67AAFDE670BDB7B3C74A +:103CC000585567F8BCB43A387A981AC33E3991FD12 +:103CD0007F2C2A8CF7B5E0CF2D583ECB12488F8C25 +:103CE000F37C53F4FBDA94272D283F368C994BFC58 +:103CF0007856895DC5F3F71B73CE34A37D959E93EB +:103D0000FCCA03309F39A09FE3BB9A7ED6D5908A28 +:103D1000F534A06BDCA505CF36A37E7F12F47BA41F +:103D20009B592C4A7F0E005F29C4EF8CF4E7887200 +:103D300011EF13B0A0BE33ABE83371DE1EB060FCF0 +:103D4000CBAD1887AC215D87D25CE4A7E2FC2307EA +:103D5000FE8BF41B1BE9AD51FCA1AAC0CC6F6645DC +:103D6000C9C71BBF7C6E13C6D99F043AC57BEFAF92 +:103D700061BC36C2A1E84927C2C331FACE467CC72E +:103D80008F953A422361DDAFA9598B911E5F2BBA03 +:103D9000C785EF979ECC584EE51B4A1DE76498E710 +:103DA0005B23B387A911F07DED276CAA17E13BFADD +:103DB0005FD2EF86F565E75CAEF7C2FADEB272FF5E +:103DC000CADBD91B876544D4FFD1E4D281C5A817CB +:103DD000621002E0EB185B2033565CAE81AF3547D2 +:103DE0007E4EF1EE2BDE51027152DF787546E0C94E +:103DF00047C2AFBEA23979861EB35F4E6F35D93C3C +:103E0000AEE6AEAD136C91FEF4C9C5B2C9DEFB647B +:103E10001DABA47A8727D9B223FCE6F9C5DCAEBF77 +:103E2000734D32BDCF113D4E59B159FFBDAB41B3BA +:103E30006950EFCEE04C1BDAF12BEA62CF2FBA5D6E +:103E4000CD1831CFC3336D196323EBF179AE68EB35 +:103E50006B9D3C9E45CFAAB6E17E3A187FB7748B26 +:103E6000A472FECDF4E00D68776F59C6E391C47873 +:103E70000E5597B7E0F95A9A1C407F46586FE7FEF7 +:103E800050BBE6A5735476A2FFB85E433EB780FEF2 +:103E90008BA93DB881E49C0D86C77DB4A579685C8B +:103EA000478F8DEC1B6BCF204A8F2CF8BA8C71C5D5 +:103EB000AD69C2DF9BD6FFBDC56D621C8C5BC2F7CE +:103EC000A38DF136D5BB297F4F7132C16190C54BAF +:103ED000E30F72BB480FB33B387FBEC1E29392E958 +:103EE0007C85390746F8ED6EA831DBE718C7146901 +:103EF0003FDBD2524CE5438A395CF1BDC8C8EF358F +:103F0000633CEF491961F85628CE468CC36ECBE26C +:103F1000E7EB6D59CB658A03D138BF75F965929B84 +:103F200073757E3FD8E0AF733DDDF3F17CF63581EC +:103F3000E75BF3FA974B069F35F28E9C063D169E83 +:103F4000FC50E0515C2E2F9F8BCFE1A584CB371521 +:103F5000737B6EAE05FAC823FE46FEF4D951E72204 +:103F60005B453F463AA4D8BBB598FB4383AE18E700 +:103F700079A5E3FF4AF7121D1AF717415AB106F562 +:103F800028E087C867005A1588870ED4B3802FB9F8 +:103F9000B3B87F659E6AF1A95A0CFF85D0EBFAF49D +:103FA0005F08FDD278A7C3C9BACBD1BE71A03F06C6 +:103FB000ED11F11EA7A1E779CACD7C75307480F6AA +:103FC0006035FA2FA07E7595B9BC2FFFC5C162B3CD +:103FD0007D9DCDDEF0203DB6690ABD8FBE35F388EC +:103FE000339FF69FC725187C11EC87A025E5EAFDD5 +:103FF000BCF1CB9F919FEE4456D0827CA74A05FD31 +:104000002F067D9C00BDCF057ADF096B30FD11289E +:104010004FD36E9F0596303B31FE37CE6584EF015E +:10402000139F7B53EB749DC90D8FDF175E1978FCCE +:10403000CCF6667ACF056C010DAFB926083C3DBAC7 +:104040005DDD817A21F3BBA5A4A98C5D28E6FEF491 +:104050006C36C589FAD4D6A4EBC3DBAF4DD27F87CB +:1040600072A24FBD8AB533A14F39509FFA54F04D1B +:10407000A31EE8539F1647E85371592ED2A73A7FE3 +:10408000C286A33E7C24D15E130B6E9DBE7CE744AA +:10409000B4CF98EB6CD2F0887925E5A7CBE83FDE6A +:1040A0006E217F07C3CBE8B0DECE9FE7A4E37A8E14 +:1040B000243F99A9C6D0EB8E4ED62FE23CD614EB06 +:1040C0007FC5F5C41BF317ED1758D8516B4A2C3830 +:1040D000F3F66F4C12EF73E7F27D31D26BEDCF0F39 +:1040E00025AF1FE35BC0F6A7738FE87A89251C5EB6 +:1040F000EF657A577A629F9BEE1E10716E6ACC67ED +:1041000008C6BAE3BC441A1E8F115FF33FA8907F24 +:10411000C3FEA042F70D2FAD53E85E90FDFBF903FF +:10412000E418F0FE44E88D6784DC56C5BC66E728D9 +:10413000263E8A766824FFFD5A51AA297F27D3E9B3 +:10414000FDA9B0BCEA4AE47EA638E2A7BFCFE5EFFE +:10415000C07CB48EDBC509379FB6C67AD7C6483F48 +:10416000FA3ED75F123AFFCB8A721FD257DCD0CF0C +:10417000E24DCB0AE3001EF9253C0E69494F02F9D6 +:10418000FF8C76C5252AF7EBD79DA1FE97F4245125 +:10419000794253B715E5FFD2E007E4C75FD2134772 +:1041A000F26E71FB7ECD81FACD3AC985F2D6280F29 +:1041B000B77752BD159B94A87377E671469CBF19DB +:1041C000F267797382A95E4DB6E7BD2311F2C790FD +:1041D00027034AF4192518379313207FA87DB48844 +:1041E0004FE983FEAFFBFC28CB7C7E74357EF277F3 +:1041F000782AF1173EAF660FC07526EA27F40ED372 +:10420000952B78AE68F80180CE9BD14F770B63BEBB +:10421000C75CE4DF0CBFD7236AA8D05F05FE026B42 +:10422000BB459FDBAC21FD7A9DEA2D68BFA75BE90A +:10423000BD9E2B5798E50A1ACC69BDEDDF8C3CBFBB +:104240005019F7239C7470B9BB4A5749DF5F05F2D8 +:104250002600E3DEC7BA5AD10E9F2FEB5BC90FF6DB +:104260001EE83F6AD82E6F98FBDBF4C8FBE0F70628 +:10427000CCFB75CF7673BCE6BCCA5453FE1BBB8720 +:104280009AEA57B84698CA6F71DF642A9FA9E69BDD +:10429000F273F56253FD3216E5F760DCBF5F86BF4F +:1042A000669ACA494E3D5E924C7078C7DA356368AB +:1042B0001AF233290FDF4D31CE316612A0F97EF8A4 +:1042C00060FD330CB929FCCDC6B90000DE721B9429 +:1042D0009789B8B21951F2B0ACE0338A332BEF3082 +:1042E000FB41CA849FBA2CCABED95122EC72213F2D +:1042F000F795306EEF0A3BF49F35AFFB0E6694A343 +:10430000FD570EF21DCF9FAF777ED7EB2F29752D6E +:10431000233BA6335D21BDAFD3556A494638BB2543 +:10432000F2861E499F579582FE68E6E8C6B8E257B6 +:10433000B31EB070BD5C4FAA88F08B3904FD1EA976 +:10434000E77F2FA553E8BDD96CB43332AEE7C87010 +:104350003FD9C1C7878D6FC62096A389E3D363E990 +:10436000D19D71F9A45F1F3F3CC9827C67BAC56FBC +:10437000413E55993582ECE55B1CDC3F395DE57EBD +:104380009CF3625C5857F9F8B4303CA7771C9E81C7 +:10439000FDCC7067940F857574BE20B154D89755C5 +:1043A00041AD16DBAF4AB7AB01C243F6CAB7B09D09 +:1043B000F1DEBECECFF93CF01FEE93E43E65437EC6 +:1043C0007D0CDAA37D12FD9E7E999BDBCF9551FE7D +:1043D0009D88FD317DFF340A7F54E62738BDA28ACF +:1043E000F33F3536BF3B22F8DD9F855CFA8388FBBF +:1043F0003F27EE9BBF85EF3241FAB97897E968BD58 +:1044000046E9B1FA224A8F8B7B015D782F60541800 +:104410000F8CFE1F92422D37A07C7E50D222F9C80D +:104420006947FE260FE4EF99922CE46B57C50D30D7 +:10443000C5A414250FCF95FAC2B3EA12AF3C05FA12 +:104440002F7748747FB9DC9561E92FBEFAEF4D8F65 +:10445000D69BDF2BBBAADC16BA0FE3008F4AA574EC +:104460007EDEF9E0885D0D1176FB3D53B83DD179D4 +:104470009BE1BF0E92FFFAF49A4E9EFAF2FB8D0B6F +:104480007704E699E46D74DA268BBFFBE3E0F78BE3 +:104490001C6B4799E0365E8CDFDB5F7001F5B7B8C7 +:1044A0006D3EC9D93153CC7EC076BD91F4878B5E09 +:1044B000E6C3F7C4FB9C97E827127F904EFE2CE8DA +:1044C00013F107D373C22E45FCC114F10753C41F67 +:1044D0004C117F3045FC413B16F187FE2E527D0D7D +:1044E000A5177D9FE4F0F79AB81CF5B2F00FCAC18A +:1044F0005AFC05E6BD6ACDA9D61B60DD4BDBE7D1D2 +:10450000BAFA9AF7D21F7CC78D7AC67A493AB60CA6 +:10451000D6F9D1DC781FBE87E48D7C078F9F579931 +:10452000DEC5AB8D7A070FDF79EBD5C7C43B6F7A59 +:1045300044FD8F0EBFCAF59E3A65DBA711F359E221 +:10454000033DC789DF6DA6EF7F6F7A3A0A3FAF97C9 +:104550003F2F5E9361C1F88E72BCE704EB7FBEC44F +:10456000BB6A0AD05F9953217A2A733C624138F5BD +:10457000698FA07248F7E543D66AB473167C9E181B +:1045800019CF19F6F3AA5C7E89792DA9137EDEEB8B +:104590009CA7F15E4EFD14A729AEE17ADF9F68D794 +:1045A00097D33DD18BF8DE349DE799E3673B170C39 +:1045B000F1231E6CF02569E8E7945C0B88FF3B1241 +:1045C000B9DCB15978DCAC2B1D706612C6C72DE280 +:1045D000E7FE1AF3A27FC9F0A7F7C62F79981FE369 +:1045E0009736B8651DED42E3DEB22DB080F092D56E +:1045F00069A6F7546C51F17BE173F6A9517170BA59 +:10460000FC55E2E0AED73FDE2CEEE3F5BE3FA9FE5F +:104610007DEF4F12EA237C7324FE5E8D38079CE504 +:10462000CE56C9BE12FA8B21D767E5482D28FF4F19 +:104630008DB7A90A8FA768C17889D7F0DC43A3BFDB +:10464000B344FDF90733B2AF6C395C0E1AFA3C5231 +:104650002CEAABB38C772D7473BC063D8689F1A828 +:10466000BAE58C7DDCD57EE2E8788CE87801037FC2 +:104670004F4E893A2FBA4E7FC1F5D633E26A2EB932 +:1046800019F91F53742FF97D16093D3C95B5B7B83C +:1046900022E80AE36822F5608CA389D483318E2650 +:1046A000328F713491F5318E26B21CE36822CB3102 +:1046B0008EC6AC771747DD7F88AD67F715DF61AC35 +:1046C000335B7D83F6734B1ABF0FB2B5BA9AFC4BBE +:1046D0001731DE80CE43D97BA87723D9215DFA59E3 +:1046E00097DE822034F45B11477283186790881735 +:1046F0004913F12246BC8A71CE69F778B420F433AD +:1047000038BE6A30FAC7B658F5C148575B24C97439 +:10471000FF743033FBD56E889E7F01C71BE3FC2DF1 +:104720002E2AFEC45E6331E191350A8FAC53659346 +:10473000DF00E040E76C5B57733D1431850D223F8D +:10474000097FEF655980F6BF16F6DF1FF1F71316E4 +:10475000E17A811F2C14EB35BEC787E76BC1F9D70F +:10476000A60774E1DFF0DB0BF1755046FE4126052C +:1047700018EA5FCB982BE331E877FA54EEA732DAE8 +:104780005B98BBE18AE1FB30E6A398FA17FBA951DD +:10479000FCAAB799FBF35A8AB4E3A8527ABF2F69EF +:1047A0007E1AB5E65856C479A6C422FC920ABD37D3 +:1047B0004C7116F1421F5ED666A6C3A57E733E5E9F +:1047C000C40145D36BBCD07FE305BC2D3018CE6F40 +:1047D000D95426E00DF45418866B78FD4CC5F54786 +:1047E000AC7B27ADEBFFF375F7C625C47B9E18089D +:1047F000E37C22D9597341785D4B041EBC91187A31 +:1048000005FFBEDC39FC5B1378CF65EBED4F205D17 +:104810007EB2C1CEF8BD2975C97720BF748B9DE2E9 +:10482000BA16A3DF6304636BA66650FF724209D514 +:104830005FF2834486FCEA3FB67E3616E5F97B29B3 +:10484000DE2588779F247BE8BDF0A5DFBB49C6380D +:104850009CF7E2BBE85DF3733273E1BD94F76ADE67 +:10486000B6A2DFECB4C6B448FD72C9BA88781FF8A6 +:1048700077642AD75B6B647E1E54B34821FE71BAFD +:104880007D94787787E337F9EB605DFF2DEA2FF5AC +:10489000DE4BEFEFA36253D68F7E00F3FDA6278693 +:1048A000DEFD1BD1CF7BE9A1C5A90447E66AA4546C +:1048B0007B02DFB3F7039CE81D7DF1BEA76DE89096 +:1048C0009DFCBD657538DEE7B77D6F848CF9474583 +:1048D0003F1FABBC9EDF1D2FE4A2376741225FA7BD +:1048E00064DE178AF7382731F500E0C792F6DF5209 +:1048F0003CC80B0037B2935CA196C390FF0F501ECB +:10490000912F2C71FF8EE0FA401EEC30942FAD33C6 +:10491000C3EF93A9294407FFB1A53391F42D17F3F1 +:10492000DA8C7309A087A59B7EB916EF0D2D15783B +:10493000EE107158D1785B0BFB85F113AE78D63E43 +:1049400000C689F7BE5B5185F932A97BC024C4EB50 +:10495000AE0AC4EB25824FD7AE319F133439CF5600 +:10496000603CC80AF433E03BA639E677A5E06793DC +:1049700025C2AF178DEF4BD8970417E89EEE25029E +:104980009E98DACBD3B8BFF8B4B76520233CE4F0E7 +:104990003EF7031E97031AC1F0487DEB87BDFC98D4 +:1049A000A9D608F82FA9E96C9940FAA1A3BBCCCDF0 +:1049B000E1BF1CC67D01D61D0BBED1706872BE451D +:1049C0007058817F47CD75351C9C2C98B800E1E468 +:1049D000B5124FBE161C96CCFF1BCDE724BE675FF9 +:1049E000140B2E22BEE32A7830C2BBB3C3427352EB +:1049F000D3E8EFC7BA76413F1F6F993E03F3A71183 +:104A000013C8DFEFB1A11CC29FDE7B0DC8272DDDCF +:104A1000D6C16918D7E6223E69E08D01A7A55BCE15 +:104A2000B4D4E17EFC2551C578A1A5EEC9F7209F3D +:104A3000EAC5A7283821FFC17551FB11148F623ACE +:104A4000A78AC6B73D5399D02BBD44C74BCBC57D74 +:104A5000000BEC638CBFA34BFB3D04F6F5E53B97E5 +:104A6000FAD3B19D9FDBDB0BE2E3F07E6AD309FE54 +:104A700077E2B2F0240FE0D0AA331FEAEDC67B50F4 +:104A8000463F9680D99EBDFA5E0D7F4FCBB837D397 +:104A9000DB2EC8ED736BDBDC9876BA45E17FB7B5EA +:104AA000E5F042963916E735D97196F46DAE5F5A46 +:104AB000EC5A5B06EEC79BFC7C99A539D927C67ECC +:104AC000C27E58524BDC682F36C599DFCD18338D26 +:104AD0009F1BDC2C52CB003ECED57A26D7E315F4B3 +:104AE000BFE7477E0FF0EFB02ED48B14F4BBD3BBDF +:104AF0007566FDE2EA7A162A57F01CA0DF7A495C57 +:104B00002F33FCCDE57AC17E80FFC672BB0BF1FF6F +:104B1000541C7B04E3E1FCEF8A758B7BDE8B059EE6 +:104B20001879431EBB2AF483B87F67CBEDA9789E22 +:104B3000BD98713D98C6CFC07AF1A6FC629662BA64 +:104B4000B77DF7B46CA1EF0C317D6FD75386E1BC14 +:104B50002EE5D85215351CD71DFA163FA7DD680D76 +:104B6000B614E13C4B1DDDF89EF4D1D13686F796A4 +:104B70003DA5773DC9E3FEF9397B3CE2D5788C8BC6 +:104B80000F30A48FB3BDEFFCB2A4D241A477102D97 +:104B900078F581AD287F8D77236C81F9FC9D403FAE +:104BA000B3CD477C17F1E5DE66B31F703AC03748D6 +:104BB000FCC3E9C3F358A07B53796D941F303E2AA0 +:104BC0006FEC03EAE9252957EF9B9137E613B64FBF +:104BD000F2C83F65D85DD1F875DDFE29277F6726CD +:104BE000DA3FD532CD7C8E19ED9FFAC1B47F8E7F2E +:104BF0004A6933FB858CFB939D0B66C901B4E7D3EF +:104C00003277D923FC768F4DE3F2FBD722BEE22523 +:104C1000E1C77A59F8B182E8C71A857E2F4DF8B3FB +:104C20008A287F0CFD58E4CFE27E2C239E63DAFFB6 +:104C3000CC37BD2F79DF24EF63D322FC72D69E6C74 +:104C40009ADF4306BC84FD0AF621E1E3452D43BC0F +:104C500067CCFD60B37BCF291995CFCA11EF5619E8 +:104C6000EF1DE38FF16E02D797C85FE610F435BBF6 +:104C7000A48AFE1EC46CCD7CBE149F63CE3BB22CB6 +:104C800051E74FFDFBBD062873E97D2505FD5EF963 +:104C9000C8F7EE6518A7A6B8355ABFF1FE5F2F7E9C +:104CA000A0FF0A0FD4FFC976F5AA69FAD169008777 +:104CB000DD533CC730654E3FC5113427CF5848EF10 +:104CC0003D48E2EF8F45DFA7F69C2378EE18C17CC4 +:104CD000A9E8DF72BAFCA8BF28AA85F4F6BEEE17D1 +:104CE00019F78A6088804C70D169BCF07D617E8F35 +:104CF000F1BADF4D157F279D75C6911CB3811CC38A +:104D0000BD34FC61B6348F4EF7A19CE2DD4A8BA620 +:104D100055C7908F063E28D33C9F211C94E07CA26F +:104D20008B4B53F43F60BE17FF7BEF9BF61F7FD486 +:104D300022F07C9AD5CBF0DCC46ADC37052B2872D4 +:104D40007CBBCEE9A7B2D8F337C4735B4F168D0B8B +:104D5000FBC1F481E1FDE86B9CEB4DFF2FEA7D98F0 +:104D600031008000000000001F8B080000000000E0 +:104D7000000BE57D0B7C54D599F8B9F3BC994CC276 +:104D800004021D5E7A030182069C00224FB9492667 +:104D90002F42600218C112BC4988207FDD1D5DAC26 +:104DA00068ED720321265169B0C1D7B6BB93001AD2 +:104DB000B46EE38396BF75BBC3434B95D42016698D +:104DC000313622584B5D1B452B6DEDFAFFBEEF9C33 +:104DD0009BB9773201EC63F7BFBF1D7F7A3DF79C2B +:104DE0007B1EDFF9DEDF774E181BE37B2F99D1EFB7 +:104DF0000B3BFCC73B94B1D9F0FFF85B30F0C9988E +:104E0000CED87078D4FFF0873F9CC998135FC177E4 +:104E1000CEF3D732751863C573B51415EA5DE73361 +:104E2000993A1DEA023A0BA530D6313F3404DF33FC +:104E30002F2FB33F77DC4B6C573C373456BD1AE607 +:104E4000E1D79996CDD83689ADE884E7C18A85B691 +:104E5000483A630F85C6B5BB33F0B97488CDCB58DB +:104E6000B62AD177F1FD39CFCF65D1E9A6B283A9B2 +:104E7000D80F3BF4E1871F8E606C2B0E698BD567D2 +:104E8000AB36EA07E181DFBDE90ADFCA028CCD5209 +:104E9000C76BE923A19C0AED47E13433232A8CFB3D +:104EA0004D68CEE61018542603582551CF2645D616 +:104EB000C138C9FDF5391AB6DF26EA57AB399A0E63 +:104EC000654D0E1C5666309692C902CDD44DB7BAC8 +:104ED00015CA4EBF9D35FBA038C371BA5716701E58 +:104EE000C758128372962867E07F4D65DCC7E5EFEF +:104EF000BDC552715FADED022AE3705553D269DF33 +:104F0000AE61D7607BE3FDA8B95A19ED2FECD00450 +:104F100080CB8DFC53B6C2161AC1C6C7DAED80BA73 +:104F20006E2F0EAB25315A9F6A6B85F9B2A5B6C8B4 +:104F30006EB11FF87EB0FDDDBA49615177ACEC72FD +:104F400068CCE7E5F8161D16DB67A3BE5AECABF19B +:104F5000DC6663EB3A13F47F70415E35E20BE0E907 +:104F60001A7C1A785A9F56B892C1FC1E926C013B6B +:104F7000E00DCB837FE1297959A499E0E763B50877 +:104F8000EF706A80E0CD7C7A2DD4BB1407C1DF8D31 +:104F9000F86847B847E899CCA20CE1015DF74AE30D +:104FA000F9B6737A58E57BEF4AE89769EC0B84AF62 +:104FB00037FD92F0BC69D346F6EE04281E4C8AE217 +:104FC000BCE455C9912498970BF104F04DCED4550B +:104FD000C41BE69F41E5C1FBAB630CD6FDE97C75C4 +:104FE0000BAE7FB41ADA4AFB19D058680A7E7F6983 +:104FF000F3B9D4766F6C62EC5D641E071F650AAC72 +:105000003F295447F334E6CDFCCBE9F988D83796ED +:1050100099CEDE35E1F146814F8FA9DE74841B9B6A +:10502000C6A6213E6E547DB40E631E973CEFD6F0AB +:105030000ADC6766B3059A67D0B628BE11B81FF0C0 +:105040005318FB6C9642EDA4312FFF5E02FA907C60 +:105050000D21A413E3FBF87E65FC10C61D324F7DC5 +:105060001AE118CF7FDE6E1CDFEE96F0B96C880D6A +:10507000DEBF3808FFA944FE33CC5446FE83FB59FB +:10508000FFE4934F02FFEDC1298C8BD5BF28F84F69 +:1050900025F21FF82EF9AA5B6CBF80F1566FB0475E +:1050A000EC30C48EAF2D4B485F6F7F03E607FD9E4B +:1050B000827D41FA4A3EF86BE744D89723AA9DFACD +:1050C0005BDD9856A822DF4366734178723C7A43D1 +:1050D000EC4FF2966E6700BEAB8C4E76E13E57DF2A +:1050E0000FFD782FBD1F837F9E506FD5D2A1FD9BF2 +:1050F0009EF07F00C9019EFC9D560CE511D7AA3F8A +:1051000047F8FE02C783F6DF54D59388BFA7C4F8DB +:105110001B55B507EB8D32F0A953824F05BD330700 +:10512000F22947BE1426FEEE858D8529BE39CAD7E1 +:1051300086746ECCEB77B84FD07FFD2F12F3913E83 +:10514000A3FE055E8FFD48E9D88FD26EEDC746ED10 +:105150001C6E3E9E23993F8DFACF043E18CF3753E5 +:10516000B5A86447BA543FC3F57966ABE7711DC96A +:105170003732FA2EF9072CFCAC77E07CA45C3E9F1A +:10518000E4652C9C68BEC9B97C1E072AD6DB1A09C7 +:105190002FED118E97D387B004FD194FD7F9649284 +:1051A000F7FDE57E3E9C4AEF416E69385E3CBF2DBF +:1051B000CBE5EB99279E2DEAB421DA05C69123CBE6 +:1051C000488F18ACBED1D60FE74014F9DF9D93A6E7 +:1051D000352BB1FAAC5C2B5DC9D10AEAAFB271399B +:1051E000CD735C6E8A857FB4A89B19EEFB398D85E3 +:1051F000ED39179897E8E7608527095813EBE9B66A +:1052000007DCC8A6D8D914E497F1ED5FD8E463FAB7 +:1052100024A0CF4D7EA643C31F811CC367745316C1 +:10522000BD3FB02940E5439B6651F9E54D2A950FF6 +:105230006F2AA667CFC673C796C0389F28480D034C +:10524000FB2FCA55ACEB3C3F95E9B03EC5ABA4A2E1 +:105250007C7137E55F50AEBE0874CFE7258B79F9D6 +:10526000E87940CCF710CE97E6C5E7FB9FB3B4D200 +:105270005CC09B6BCF47ED12C0CBA330D59E06E33D +:105280003AF61F43B5EFD6D9EAA25CA2B35E05E1B8 +:10529000719F0D041FB4D357274776C39614D8BD0A +:1052A00007509EF66CE47CB06723E78395025F07A6 +:1052B000ECB3E04B46B969C24D361B7C7F451EEB13 +:1052C000B50344262A7DB96C2A630FCCD12A71DC40 +:1052D00089301FF7547AAF229F7EFC11477104F08A +:1052E000ECED47BABF9384FC5DF74BA9D7423D9BD9 +:1052F000925A0EF0D92AE860477362FE183F8F2554 +:10530000B3D57538CE2F37ED23F96BD4033FE1FCCD +:1053100099B5B0A5D0EF8E8AC7E46A28DF1E8787CB +:10532000D7AFD06ECF35AD3329D3E7423DF5D4A307 +:10533000EC323604E0D1E45E1149308F53E1F1A93B +:10534000D7A4939E712AF532D3BC9AC75F86F07BAF +:105350000BD789FDEC91A3089F9E91AC8D01DFE9ED +:10536000B96BE738C51B5B27F0119DF64749BF882D +:105370005EC0E59B41CFF4834F52E7645BF8D99E52 +:105380005CAB7EC57049D06EDB4FC74F6B66B1EF2B +:10539000166565B4374BB1F6A401819C2D65A6DF77 +:1053A0004CD497E097C18B0AD493E8277DA9F3D01A +:1053B00041E8C713F2849B61DF4B034E76CAD0539A +:1053C000E15F4F96B52C673A2C655034996AD277D5 +:1053D00019BB81A972AC3CC47E746C00F9D846FB41 +:1053E00043A701917BF6FFDA8972CBB5B18AEC084D +:1053F000D74617BD37E3C329D8FF4373D427713F7E +:1054000037CC559F42B87E364BFD2EC1776377254A +:10541000AE7B0B4BAC5774CDD6F6E277ACD5A7DE9E +:1054200089F5B7831E4914EE635508E7F1A04706D6 +:10543000482FFD41AE492F8DE98BAA8DF4C54BDC79 +:10544000C74B6D67E86140E73FCEA5FDEF0CD4C1C7 +:105450003B0FD6C33EECF933F52CA3DFA5C56D0C8D +:10546000F93EC84961EF400399E4607F5986FA0527 +:10547000AEEE6C1BF0E1CBF246B439E683FC186F5C +:10548000B44F69437D6441815DD853729B9AC9D8FA +:105490007197A9BF598CBDD6E710F58EAA7550EF4C +:1054A00051DF09FA009E1FEC97DA5047B3AFB48979 +:1054B000FA2F7A55683A2753ED4886A59DDFFF7B82 +:1054C000A5290DC7573B5260FCDF4CF6571D1E89BE +:1054D000E5BED1C7A0FC8D03D756C94938DFDC3003 +:1054E000F6B7F3C0A82A19D6DF358E8FFFADBCB151 +:1054F00055FA3C8453E843C283506700F70DC60B4E +:10550000217DCE01F3D842DFB97682E7F95C27C16D +:105510006981336A47BC5990C1541DE6919BC98289 +:1055200036C097D7E61D1C8678F802DA21C3A9FF9A +:105530003F50FF2BA0FF2903BFFB2C57A17EE3BFE9 +:1055400087EFA43CDCBFE5FC3B980FD999B8EE3A55 +:1055500007D53BF3B0DF30AF5FECC86999E0C379A2 +:10556000FE2EE2CD88B53F97FBB9569749ED93A93A +:10557000BF4EDEFEE270B67E6FE84B47C0C4C46724 +:105580006B9ABE2204CF5BF338BF8A7F82A6350CAC +:10559000E179DCD5E75D02EBBC92FD36129C4CF361 +:1055A0001843F3D8C7E16DE0475ADE7F683A5F974A +:1055B00042F5EBF83C07C3D73FF769E0E7A8BC0F1B +:1055C000349DC3792AC171159F8F811F97E5FD26F0 +:1055D000A28F41FCF9C8AE223FB7337D37E0D5A298 +:1055E000E97F1A6DD687B6E5717DBE6B9CBE0EE174 +:1055F0009194D947FBAB2A0A33EB274FE571B98960 +:105600003CC53653F04B85CB65947B302F8BFEF732 +:105610008480E3F744FFC75DBC7F4059D93E8DE3EA +:1056200009CAAD62516F7CD74F4F6C25D1DB829C8C +:1056300077833EC08BC579B3DBE40CF33ECF78C7EC +:10564000BCCFD7E55D5525F024947709F470731E1F +:10565000A787D5794EB1FEBE65A83F34FEA783B5B6 +:1056600013F3E4780EEB0B34C3FE33478B6A433DF0 +:10567000C491467E10A39F05599D1528FF4DF4A2A5 +:10568000E599E8E5CBF65B99A758F413A37FE8F713 +:10569000FF24A2A7D507AEC810F4F4F734EEF37CCC +:1056A000DD83E1EF6074709FD887F8A7D18F419FA9 +:1056B00037E74D6AF34A09E1BE89E6A7F1F12FC643 +:1056C000B7989FDBFDA0276CA579C7E1D55285F778 +:1056D000CFF4656DB8CF06DEE71EB8BE0DFD5230C3 +:1056E000DE03E6F56E44F89BEC1D039F0D38EE14C7 +:1056F000EB99932719FBB483BE5FC3E19900AF0513 +:105700009E0D3AFE7768BD82EE1630309C87C6E863 +:10571000EB62EBAFC77D1E6EB2076516453BCEE56B +:10572000F771FD450DED31F34763FCEF1D50AAC441 +:10573000F84F9BF9CC9C3C1FF59794C91C82FF3E07 +:1057400043DF0B3E952BE003EF9FA7F7828F7E5937 +:10575000FABA64391C2D27FBA581B184FA80CB0EDF +:105760002B23BFD134AA073B87F4B7A3FE4CF29B8F +:1057700066028747BA69561482C7D1AC3CA50ECAE7 +:105780009FACBA721A495F61BF7F1FF42315F4E51D +:105790007D6057E013ED2055D841AAB083546107CE +:1057A000A9C20E52851DA40A3B481576103E3D3312 +:1057B000249D5D85F35F4EF37745F8533E3F93ECB0 +:1057C0001DBBB30E6D412667B53085FC0C870FD924 +:1057D00047A0DEC27F5D57FA9CA837942B1116862E +:1057E000E74F73B5D366FC0E89764BB37CCEE9FCEC +:1057F0007F5FF498FC99A3E62AC2CFC5FDD086DF6F +:10580000C0285F54FF8225DA014E49AA9DFC87EE2D +:10581000DC6FE94900D74F55D6CB2DBB161DED13D4 +:10582000F91E46FEC3A44774BD99F47D164EF5A338 +:10583000BDF208D5F7CCE3F57226185626FD767F23 +:1058400005EC0BB46FCCF644709F1A973F29233CAC +:105850009A37D4D8BAD1AE556C11D4AB778CCB2350 +:10586000FBFE287E689AF7CFC57EA15E8B76DE9818 +:1058700070C499C83E6F3AF0E8ADED304E4873FB06 +:1058800050576F54B717A0FD7BF2163BB56FCA6B2C +:10589000D3D1C9D93359DB8B7A47A323C2D00FE4C4 +:1058A000B9E56001FA7F7A9CDAD543E1797C73F43B +:1058B000D6103CE7AD282BCE30D969F1E32DCDE7EA +:1058C0007CE1C4FEA40770FD8D92DC4B4F67A41DE4 +:1058D000E1D333D915A883717A728F8DC5FE1BEF82 +:1058E00058BBF76708875C7700D97AE31E7905F61D +:1058F000DB98F1B8FF2653FF1557BAC228779AAE46 +:10590000B8A900F139541C7025013F0EA9CFA4A4F9 +:10591000C3F7C76F993E0CCD84E6C9AEB135B8AEBA +:10592000AFFDA06B26CA8315F69949C887B2BA9D08 +:1059300048CF976745F45E78565FAB4DC947FFDBAC +:10594000BAB60284AF67CDF6AD684F5EFEF9F71ABE +:1059500069DF98DC8B7640F7E476B12F3B65C4476E +:105960007972F5E671A8FFE7CABDC8C79B955DF2DD +:1059700044783F31CB56B576EA4078343FCAAED54D +:1059800086E0BC603D53B0DDEF3669D0AE3BC3B5B9 +:105990002211FC8AF3B97E5091FFC4B80DB0AEE677 +:1059A0003DB20FE1D22C451EA986B2BE3225B09B76 +:1059B0000DFCAE5DC0FD86704B815BA1FD217EB309 +:1059C00034FFBE361DF5EDA17CFF2A1C4C760E8DF2 +:1059D0007DF7C09CDCB27C93DE3060DCC9375D8D26 +:1059E0007882BC03FB6B3FD84E7C7BC9ECD075F949 +:1059F00030CFC647228F205D805ECFD04E1FCCCEE9 +:105A0000EE017BD97755ECFDFDF95C8E34DFE126A4 +:105A100038F4848FA524B497BF766CACD95EEED9E8 +:105A20002393DFA7B93299EC65961DF1E37EB83A6E +:105A3000FC3EF4278D56736FC279FD0FC0BF6FFC1B +:105A400037E31FC9A7E2FC7F69437D5B6551678827 +:105A5000FC20AFA46809FC19D7AFD0BE65C693552A +:105A6000E134F283F4083F88B18FF1DFF53CD2FDD9 +:105A700040D205F6D5E02397B0AF6D38FE4DF98CD6 +:105A8000F3E7E0B04BB28FB7D9D419CFA03FEB6E9C +:105A9000B70FE9C623EC5A7725CB73E078C161EDE7 +:105AA0003A8CF7A2A01F5F81BDDC817C3ECBC68D06 +:105AB000FFCFA13F90371A76698F95CBB13C3E3628 +:105AC0009EC680BFCBA29C81F51E4B59634389FFC4 +:105AD000C7EA4759CA6F3B7BBF7327D2F75E39B01D +:105AE0005BA1E9EB281F5C7B67ED44DA33C6399D87 +:105AF000EF12F2494DCD9D294C2CF8ED70A95B7247 +:105B0000D12F2CB1BECD68F26F2CDA920BEB7B5902 +:105B100095FB18C8A3196F384EF5C717E1DF00EBE6 +:105B2000B5E17AEA2A3C5B10CE4773E53E37C8B54B +:105B30007CD969693735F82B8A3306187C6F8A332C +:105B40004E65F77F649F8A4FEBFB37F345DC51F8D6 +:105B50006907E3070AEB4E299F8278BD6C8804E54C +:105B6000B3F956FBC578FE2BFAF140BE75825E8212 +:105B7000FEBC67412FC1F2F3A09760F90F021FDE50 +:105B800016719B4377AD2D20B89531C98D7641169E +:105B90008FA71D10FD8F001E854003316EE3F87E38 +:105BA000D63308BE7F946FB21FA6EEE37E3F9C37CC +:105BB0007E87F3BE90FFF162F3665997A6FFB5A802 +:105BC0001F1FFC02F131688FD8332E345EA318AF4B +:105BD000859ECF6E7A448C17B1F863F706EDC44703 +:105BE00083C39EF26778CDE36D26B8343BADF1AF49 +:105BF000A359D376A27E02CF2176783F32E84AB805 +:105C00004F9EF3768BFFFF897CAE7F79409FC078F3 +:105C100083E7BC8BEA9F11F652AC7F1EDFC7FE6D97 +:105C2000DE983EFAE7F66FC02DD51E2D1BC6ED752A +:105C3000DFEE198248A03C25D347FA5C37E37C406D +:105C4000663E17D2C1FC60067DA7317D02E8D4CC48 +:105C50007E5BBE3707DA9F7CDE9123C1504FA76879 +:105C60007E949F07468E18DB8BFAD8FFD52EF75D02 +:105C700060FF01C3FC363F8DEAB7CDA2723A2FEB2D +:105C8000362CC7B73FFAFCF3C3510F7E7A2FE78358 +:105C9000FA485B644282FDBE27C8F583297B77C939 +:105CA000888FCDBA44ED6F084B1105FE7755FD3353 +:105CB000247756AEB05328FFE42D7B7F56817C2598 +:105CC000680F4CA0F2730F20BDBFF5BC0397C9BE8F +:105CD0007A6B4DF10C287F756435861DD9CAE008B2 +:105CE000C15F349273278B3557730ED81FDECE9F5A +:105CF0005540B901FA6D47FEC43A495EBC157C2E89 +:105D000005E7BD32C8F9E7D34E6B5CDF78FE2C980F +:105D1000385E701CF12181DCA8BE36EFC620B4FFCE +:105D2000AAD49982FAF69D8772AA1DB3113EEF6735 +:105D300061F9DAB519EDC11C1A8FD67F74AF2382D1 +:105D4000A0389AE2ABDC80EBDBEB0A0046B303B78A +:105D50003DE14779DB8CFB7581F8D5C5F6EBAB05EA +:105D600092EE063EB8AFEEE80DF7015FF963B0BE04 +:105D7000DA3119E0C3BA6FB80FF86DDEA1B9D5E812 +:105D800067DC867920A310DE8DD5E857A2E015CC1C +:105D9000FBD0F3A7C3E6F86F3C9D0F96EFE02BB85E +:105DA000B4F89B2B527EC1F85B03F69FE0FBD7C58E +:105DB000BE7D91AF3E80F0BE7A81BA2D887EA671FD +:105DC000917588EF4C5D761139CBF94679D4D7803F +:105DD0006C5F7BB17B9439CFA61FBF05DD4FD99B8C +:105DE0005E568A72F7960943ED263D5612EB6C100B +:105DF000F860D0EB8D1B32287E018C57C678433972 +:105E00002229C0315FE0D3718FF634B66BBEC2A5D4 +:105E1000B6A35CCDFA1DF17F091DF300F772F9738B +:105E200027FA85E41C16708F44B9EBD085BCB27D8F +:105E3000018D4E06D3A89F06FFA91484EF0A113FD7 +:105E40005931CA4678F5767852BB886FE8EE9942A8 +:105E50007F80AACFC4F81EED66278EC7828003B369 +:105E6000A99DE21C21F4036857EE3FB53503EB41D1 +:105E70000EE7013E95873F73A21EBFD7C35A10AEEF +:105E80009EA053EF35D98595DAA7058B605C5F9EA0 +:105E9000D43704FADBE2FDB8602BB45FE5B7338C8E +:105EA0009FADBEC779DA2C9FBDAC3705E9DBA339BE +:105EB00019EA49AB3658EBE177BFC3D057A0DEB340 +:105EC0007CC4D60CE8FFA7A02748B328EE6269EF90 +:105ED00011721DE665799F1FF459F8CE13F9EA3166 +:105EE000812F6F20BE6C0B72B97AD4CFE176348BE0 +:105EF000452409F902E7D347D7A595CD8079260136 +:105F0000FF40F6E15953A7336F22787DECAC467E13 +:105F10002DB396BC91088FE1045F5F05634330DFCA +:105F2000C40C2FC083D5FE8F0B16A5C7E0E5657D99 +:105F3000042F8FC8AB8A87D7166FBB8A7940AB66B0 +:105F4000B97D76DFC5E135103E63683FA1FB3EF7C2 +:105F5000AC8170EA16706AD0B60E47FD602FAE9F16 +:105F600094348DD6E10138213F658EE858E49F27AF +:105F7000055D10F18E24BE3A1CE39C03E98CCBC571 +:105F800011D786EC05C3C98E8B3A86C6F8CBE0F4F0 +:105F9000C9F94B9ECA685FF27CF64804F6E5902B7F +:105FA000E0C0F91C4A95588B74713E06FB9D5670F3 +:105FB000F5E07CA1358EBFF7FB512E717E1335D0F5 +:105FC00093603E4D635804F5DDA7326D44FFE7341E +:105FD00029C2280EBDAA11FD3167008C6E4E8F8D2F +:105FE000C80F2A04AB68BE5A7A7B28B457245B805A +:105FF000818EB7EABC4443374C29A77E5819C8F4B0 +:10600000D118670FA562F9EC180743BE22FBCF4DEC +:106010003A0DEDF4BC1097BB5F63BE2DC012BECA33 +:10602000224ED4EF57B2700A9A06C98E0DB7623964 +:1060300049FEC7BDD5B0A5F7D6ADDD5B054FF79ED0 +:10604000E9A4075E6FEF7B6321D0E79C9FFC6E0D98 +:106050003A5A526D7A7126C0F337454CDF20635EA1 +:1060600051DFF220D4FFB030D25E0FF58DC1532442 +:10607000C7B24A7F54EBCE89E50BAA2F55D620BC78 +:106080000DF89F08DDD981F67625C639619E86FD1B +:10609000417E3260A095593C6E50B941A27536FCE4 +:1060A0009CB57B250E138CD70EC3FF8775FE6B2125 +:1060B000E7AFC3E6D56EE9E5FA50F8723FEFCF6E71 +:1060C000D8379C1C25F4670E3B111F8FE5F15D1A34 +:1060D00017FA1BAAB7A9A457695EA508E56531B4EC +:1060E000277B8739BEC0B967F132FC5EFB2281DCB9 +:1060F000FB5B3D1F04BDFB94F302F5AEEE5BD19F4D +:10610000FD60C9C4913E98FF902B270E45C5C781FD +:10611000DC07E0D7DB319EFCA4CF0978355F67E46C +:106120004102DEC0F35E29943A0BF124C3C6D09E2F +:106130006CEC7857C5B85083C2FA18E0CD92F96775 +:10614000C8AF9756C5C29867F1596106D1852FC36C +:10615000D694A1A09CF92BE5D1C87A60A9894FD823 +:106160008B6C167FF160DF1BFEE2F8F70F0BF96B0B +:10617000E8E50D8A8DFC92F0A4F57CF2168B70395F +:10618000D84B7EF0FEFEE0CD3DD318BBE67C36D387 +:10619000A70FF4F71AEDFEDAFEE50737ADA0F753C7 +:1061A000CE57119DFFEBA67554EEDC14A6E7B39B0A +:1061B00036D2F3F94D3AB59F753723FA68BCC31D43 +:1061C000D98CFED6A4E8BB76D2B35D0AE6B920022C +:1061D00020FDF7DC3A89EC8306499B3204F566C959 +:1061E000C376039D36A4F476623E833E328BFC6F09 +:1061F000CC11F10F41FDB82E8BA19FE6B88B5D96B7 +:106200008AFE253062D0DF7AE623DD8F65CD06C4B5 +:106210000EFC68DF583EBE638EB71DC7DF921ABE04 +:106220009A01DD1F28FE749703F86873DDC3D10F50 +:10623000619C5F953C598BF1831EA9732CF287BB3F +:106240008BE7EFC2B8C7AAD3D16CCCA7CB7CF5A3A0 +:1062500035C980575D189B32F29167C5E2224CEF39 +:10626000DDB96E0CAC6F875B94DFAEC1F89FC313D2 +:10627000F693DF5AF7D71E06BAAFB85CBB03CB451F +:1062800025BF26BDBAE22BBC3FE5B5AB88DFDC9B62 +:1062900014F60327654F96FEAC16EBEFCDE1FDFF3C +:1062A000B0F867B5586FAF6221C4A389CA7C9F0B51 +:1062B000F9B61FEC04F4574F5CFA30C65FCEB5AEAA +:1062C0001D81F233B7C46EF8D37DCCF0CFC35CCF61 +:1062D0008CEDDB8AFCBE37C3116E87716E10F6DD64 +:1062E0004AC1B799D0B71A45FB1B19E86D9C9F3876 +:1062F000506FBBBE54C497259DF2F680CB2B8F0503 +:1063000068140DE5B74B7C879C6D23FABF3F48515D +:10631000303F43F63B2CFA16CE11E7E512FCD415BC +:106320001B87FC19F6DB428D98FF74547532F41309 +:10633000317DC5CB9933513EF06F2566EACF8EFA99 +:10634000C5B30598D75D80FA1AEC57F92DCED3E680 +:10635000F1BC8CC7EB0A54ABDEE012F9DC2BD75949 +:10636000DBBB843EE61279DE0E1814E7E570055EAD +:106370004A47FE3B42E2F8C80E47307E62F0F1AE7B +:106380002DCF50FCE4D3C20C03FE0AC64D5689FA49 +:106390005C87E4AA82FA5942DF9DF37E640BE2AB8C +:1063A0004BDF3EDBAC977F522873BEA2B79D403FC8 +:1063B000A70B2400E691D5BFA076625CEEF9A25F40 +:1063C000EC44FC5CE012F8A89FDBA9CE03F88445FE +:1063D0007E88FED14E8C7F75E519F8F9610DD6F7F0 +:1063E000E787E8EFEF443FECE0F920EFD5AC7360CE +:1063F0007CCDC81F39B513F1D95E09E62C8CFFDBC3 +:10640000127D57D26CB17F440FE935B8EE63C25F9D +:10641000FD4251FA4EC4D760F16DC1E1B05FCB438C +:106420005514D7CB2EF45AFC54C7F3222B50AF6926 +:10643000C43C6DCA774EA23CD88F8A389E2DCBEBD8 +:10644000AE0D650FB4D38C7AE3A9293A437BA3122E +:10645000A86D1C8C37CFC6F5987973FC6D752497A1 +:10646000355B773AE60B0DA57CD58FC57795FE7F1A +:106470003A89F94AB0BD8ACB84BF3D8E680DF2A53A +:1064800033784203E87EA81A1D2FA3BDDF27AB1186 +:10649000C247F66626EC7BB5C0C7614C2944FD7740 +:1064A00025E05F14E053EBFFE793A437C4F0DAF67E +:1064B000C535313C5719DB8FF834F77D2B5DCCEFB8 +:1064C000B396179CB7967399D56EC997ADE5029FA1 +:1064D000B55CE4B7964B146B9935727A00E9407A53 +:1064E0007DFC79077A63D0291B4827B9396B48AFFF +:1064F0004F02BD1EFD98AEB87311675ACF911F6D44 +:10650000BB9F517E75923F3419FD20B547EC0CE3DB +:106510005E3A3684F2EAFB25E2FFABE57985C119E4 +:10652000941FDEED463D49664AFFF8E378DC0DE551 +:106530000B6C8BCB8976EA3C27B73798D5BE8CE7B6 +:106540002730D071E41F8BC47EDD78FF8F83C82F86 +:10655000FCA3ED0CED0916E070B0C13F1C0E7D2FC1 +:106560003D82710455A63CBA5A2D1A427CAA02FDFE +:1065700018FD3D37DE1FCF5F22AA0BFDE68D127B93 +:106580000CFAAFAEB7D65FFEF9DFAB78EE613DC077 +:10659000A939019C9A3ACA49DEBB6082B6343C1FD5 +:1065A000F160F138D49F030EF21F31AFE637EB1DD7 +:1065B0006F1671BDE140C593AB495F67B6801BDBC9 +:1065C000B7727D1A791AE567C4E5D3491DD753FD23 +:1065D000B72F075A467FFCC6D147D1A52FA1A19757 +:1065E0004EF6BA867683DB11A2B23BC4743D87F2C5 +:1065F000F076150EC7F69751FB2D1BC3C4B7EB857C +:10660000FF1704800BFDCA55FE974FA4C1D84F1544 +:1066100072BDA84AF6EA763C0750EFFCC06C3F0E0C +:10662000C8CF13F68891DF119FEFFD9CE8EF9E2203 +:10663000C9C81F37F8966AC98BD32B6B82A42F72F7 +:1066400039FBC3972B894F36CC67824F36EFDC0F6F +:10665000FD3E7CE0F76F2C433DA1550A607CF6E1DE +:1066600087A442848B4761BE62D88FAF5CD947F55F +:106670000D058E00C2AD61E48834CC173DD72129C9 +:106680007628177594DF8CF0A9D5DD0AB78BD4D4A2 +:106690008211866A80BF881DE5DF4C610F837EFC16 +:1066A0007AD0895BA01DC4F8C05955EE433C181A36 +:1066B0000D7763FCC0A33A0211867C24DC3207F11B +:1066C00040C5846078DF9A918B764E5DC57ADA8F0B +:1066D00066B0A7BE829BF93EF7FF87E09F2F84BC80 +:1066E00025FBA1D81A6F7065817C9B8A29A3D67877 +:1066F0008149BE59DEF7168A7C6F717EA907E308CF +:106700004EF4839DE2FAA8C2C2C300AF2A193FE744 +:10671000A5C2BEF13CDE66B93A9BEB9BBAD0377599 +:10672000F75F9ED7DD21F46359E17180EB57A8E74D +:106730000AAFC6F78CF060E609E642BDDE57C8F343 +:1067400047E6BCAF51DE64853B713EFFDD051C8F23 +:106750002E59DF7758F5FDAD623E950CF07AEAC010 +:106760007C79B9C81A8769F07FB97CF97EFDFEE2B1 +:10677000F60421DB032FBD4A7E8225F36BFD6857AB +:10678000D5CEF3328C573CFCD04784BFEB838E4090 +:10679000B182F87ED733A390BEB35C0CE3A2CD9355 +:1067A0001B683FCFF9990FF972DA48CE8735B037B9 +:1067B0006CDCCE273B76A6C0E6229DF7577BC2460F +:1067C00079FC063E135B31F28F25C4674678BA5ECA +:1067D00065E4EF1806F87E7006CF478EC216AD6FDF +:1067E000AD537743FD50B05F15D41B851D5C2BC6A0 +:1067F000F130655F2FD40F7B2B351055F8BB793303 +:10680000637A626DEB47244F5AAE6409E33233DF9B +:10681000B2DACF405796329E3B339787D873B97D13 +:1068200032D916A943FB04ED4EDA778DE2BF0D593C +:10683000A048CC40FBD44E76183CA9FD1961979D29 +:1068400069FD075ADF39C51146BDB3717F12D9A959 +:106850002EA067E42B2E7F88F884A7C3AD2427E2FF +:10686000136F2DE5F9D5186BB421FDDE10CBBF6693 +:1068700048F74F6EB91BF5F59120A7A0FF2AE18FCD +:10688000F8BEB0B7ABB2F8BE55F9F9BE5561FEF52A +:10689000B0C4FC81F891903FF17C62A6BA86FC40BE +:1068A000BE6A6F78C8AC44FCC25A3ED30AF6378C35 +:1068B000DB82FC00F07A6D91F5DCE360F1C733AD6B +:1068C0001C7EE77CFE363BF5933FA40AE11CB259DF +:1068D000FC588E96E596F3337F7DBEC2F98721077B +:1068E0003CFD72C04A371E47F89951B89F8A8BD534 +:1068F000294827BA1FFDA4DA117B00F597229DFBDA +:106900007F6A4F303A1734500E00BF277E0EFCDEF0 +:10691000220780EF235E019E60DE24C8011FE2CDC6 +:106920007AE0FB5C0EE83AC64DD60BFEBFC3A5D39A +:106930003E9F01FEFF6006E145FE5DE84F137811C2 +:10694000BFDF03E440C7AFBE941C688BDBCF770684 +:10695000910355FF4572E0E3C2A1B45F280730EF11 +:10696000D6D8BFD1AAB6AFC89A87A8A29D64E421A1 +:106970001AF6D1AF8A926B44BEF98B4568BF66F3B5 +:10698000FCC1AC4226F229B528F6933A7AE314F416 +:1069900087B3EFF2BCC3C3621CA83F84DFF5D7778F +:1069A000F0EF8DFA8179A9DD9594975A2AF251E397 +:1069B0009EE30A7D963C6D98D76B4596BC466E77F4 +:1069C000BD54945623F2B28FD1BC453E64CC6EF3D5 +:1069D00091DD67D86D5D453E6ACFBC91CB503F6E6F +:1069E000A84B213F496BA142E39E75B6F85B605E00 +:1069F000AF4D28CC453CF6EEB031D4DB8D3CA35FE7 +:106A000016A5EC1479D9EFD07C8AF97886DD78B4B4 +:106A100028B546E46F9EA1F90445DEB6B0337BF09D +:106A20007B0EE75F53BDCAD763D8A5EF16796B30ED +:106A30002FAA7DB6FA01F65F25EC2F83CEDFA91FC2 +:106A40009624CEA35BFCB2B2C2E5BAE667748EB7F9 +:106A5000725572645C02FEDFB888F39166899FD735 +:106A60008CAF7F604EDE1F71DC6579D1F178D4A3E5 +:106A7000F263D927F29A6BE8DC8E9DE735CFDBCC49 +:106A8000EDC57957D8DAF0CCF941B16F83D98B4392 +:106A9000D5EE32FCFE06E06F28F72E661FE6E67C98 +:106AA00042724CEB90886FFC6FB117CFB4D690BD9B +:106AB000B81DE34009EC20ADA37C0FDA3D867D587C +:106AC000AB31E2AF550AA338BBBC068686EFAB37C5 +:106AD0004A1195F6AD97FC5935207F51AEF5DB870D +:106AE0007176E345ED431620BB13E45437F6E31506 +:106AF000F6A54BD89703EDC7FD17B41F6FBCFF6613 +:106B0000B2F77C73C02EF60FB417E3ED43AF3344F6 +:106B1000F9C2BD3000DA5BF170B9FCF3215CAF085B +:106B20007079D1EB0FB9D07F53ABD8E85C40BC7D16 +:106B3000F87E4832E2DB3CBE3247A6FB03E88778AA +:106B40003ED743F1DD1655C47B0219EDA807B60AFE +:106B5000FF3BFEFE9C73670BF1DC199DF38F903DAC +:106B6000F2D73F7FB6DD8F79B235E2FC59D3FE3DD7 +:106B7000743EBE262B407640CD20E7CF5A91CF639E +:106B80007C7024E70B67A6549DC0B895CED273ECF9 +:106B9000A6FCB8BB847FF34C06B76B1BD2347F8E48 +:106BA000898F6C15F50D4EC3EE653ADA856F8E0A46 +:106BB000EC349FF76B2EE6F93AA355B5A998E0A9F6 +:106BC0008B3C28F53E2C1BF6AD21378CEF5A8A39C9 +:106BD0009F79B05812F22DF46031F2D17471CF80E8 +:106BE000371AB18D30C78DB87F314914BAB6D43158 +:106BF000CA57CCE4F129D6DA69B15FBE5D2C0979B8 +:106C0000A77E1BFBFDA6AA7E079FF36C9B4F4AC481 +:106C1000EF5C0AEAC1CDCEE8BB284741BD09EC4E86 +:106C2000A37353E3118F16C0B7E80F037E391EFD1F +:106C30009679AD57D2F9BB7F0EF1F916B2B003F1D8 +:106C4000A198B5D0F3C47CED29ECFFC094F98E7403 +:106C5000A09B60B0BC1E9FCFCC0F3D4DEB62FCBC37 +:106C6000DE9239A1EF215CD20AEA65DCC781786B3C +:106C70008D7F7C5FE88B6DAABA17FBE99AAD7E1F0A +:106C8000BFEF981FDA47FD0E760E50EC03C8A77FC2 +:106C9000C3F66FDA3A3B53ED74EE7D3FDF27D63211 +:106CA00036C1B977E3BB23C22EEC4A01F96EC28B21 +:106CB0000717F17DFB9A9897BDAAA518F3A0CEE21D +:106CC0008517B08E0FF3B42EECFF6C6635C5A31B91 +:106CD00096C39C72B0FFCE073200745AB6B44FBA56 +:106CE0000AEF2B6142AEDFB20BE93BDECF51FF0B67 +:106CF000A37CA4765DB6D9EFD1558BFBEE70F3F291 +:106D00003F951ED94DF79F28E23E96B75465A9E9F5 +:106D10003CD76F041E1CCC557B705E80076FE3F37D +:106D2000781E8FD325909BA710AEB04FA7A99D7F4B +:106D3000733186D801FE6704FCDF13F07FFF52E059 +:106D40003F989FA74FE0FF73A5FDF8FFB119FF61C2 +:106D50009EE72E32CFCFB01EE6F9FBB879FE01CB0D +:106D600030CF3F8A79FE89F6FB22F35C3F633BF923 +:106D7000DF999EA448D762BA09E037F1A5880BE3F2 +:106D800013851D12C5B39B84FEC4F46B3A70DFD625 +:106D90007B679C41F976CD4FEEDD25A31F9F05282B +:106DA000AE7445E1ABB58DB3503FE9BE05E34AFF94 +:106DB000181A5EE3180B649AC1F775436838E94FF7 +:106DC000CBC60526484067DF7C75DB2E79ACD9CF72 +:106DD000CEF1E058FF783FD9BD0EC65B66C401D83E +:106DE000B776A13EB8CC13F1635C745AC943BB308B +:106DF0008ED465E88B7A6FAD3A26365E67E9A3BB21 +:106E0000F09CDD7A9FB215E31AEB7D52400778695A +:106E1000EF6B7A3ACC6FFC4FB667E27D29CB86F2F6 +:106E2000FE6FEF6E5E43E79FB2B8DE077C644209F7 +:106E3000ECCFF012CE5FD7FB54E770ECC70FFDC06C +:106E4000ABE53EEBBC972BBC3CE1E87D6B1A114EE9 +:106E5000BE5001B51FC3C7BD8E45285E36ADA475B3 +:106E60001DC6E7BA5CEA48F48776BEDA5B1B04F815 +:106E7000DB5376911EE8E990ACE743C5F30A437E05 +:106E8000CDE27A27CC6F76C9707CCFE77730373484 +:106E9000AF84E85ED5BC9CEED512E243ACF32B097F +:106EA000EEE531EC0CA0DFC212A26BBD78D80CCAA3 +:106EB00097F2D5215E443519FDD92BFECEEE43B9AC +:106EC0006C13E3385C4C4339033295E275FBEA8E70 +:106ED000923D306A09C7EFD0623ECFEAC592914C2D +:106EE000BC1AF9C532E817F3E5ED754FA42AD99815 +:106EF0002FC1F31F1BEAD63E82E79D4F4EF6903F0F +:106F0000F2649A92827990677D20BDE85CCCA7EF0D +:106F10001DC678A9C08B1B4A7EF438D2FFEB0ADF6E +:106F2000E7EF76C9BFA2BC3805B0CEA4B7DA6FD3FD +:106F3000F4E80CCC677784759F452FA2781FFE9CE0 +:106F4000A6F6AE8EE94ECC4734F2AA989FB7F7B3B7 +:106F5000DE3ACA3FF031CD65E805367C72BD4B168E +:106F6000FAAB11C75BCA58C2389EA7633CE511F95A +:106F700046D9D910E8DF531C9F4794773FFA4793CF +:106F80007C761F9261D222AB1E05FAADA57D5EC74D +:106F9000419E7FE3E7FA633E484E5C6FBEE60DA379 +:106FA0001E7E8869A4A7E9A08FEE2638F23C2459FA +:106FB000CC2F98B655C7F10E315F1FE9AB8A352F3C +:106FC000893942C134E82F3559CAC13CB0423FF734 +:106FD00007E4FB86937FA3B9C41AEF32CE5B19FA9C +:106FE00071D7E8888AF8A4C192518F30E26076A701 +:106FF000E4C2F27AA4860C36E0FC95719F512DDE36 +:107000006704431E09EC6CC0F6BD998CE0522BF668 +:107010001D2CEEC7314FE252CF91AFEDBAE971CBE3 +:1070200039727DCDE328577A3F77083ABEF1718CEB +:107030002B0E1A37645FBD09CF91BBC4F9E6BD259D +:107040006A87F57CF36F4F9BCF919F28793BD37C68 +:107050008E7CF38FD73D6E3E477E43D9D33799CF91 +:1070600091D794DD72933C321677BFBEEBEF6F423F +:10707000FE05F2FC0744C7173937FBCB127E6EF6CC +:1070800044C9A59D233F50E1F972F115FDCF8BAFA7 +:10709000187115D07B7437EA3DA936BA0784B13030 +:1070A000BF672BEEDEAE47859DFBD422435F1F54A6 +:1070B000CFF905F2BBC1CEBF474B94C1CEBFBF4392 +:1070C000F08C3BAF8BFBC5CFEB6AEF9598FD258726 +:1070D000ADFE1090DBBFE67C568B9AF52778FF81DA +:1070E00078CF6CF6D8FB8E029F584727DD87B29C7D +:1070F00085DEA6383BC85DF4172FF78556A3BF8BF6 +:107100008D994871F7C6B272AA8F60F23A9E2D002F +:10711000798CF97B7F28E1FC94E40CB607FB9AF4A8 +:107120004747C485FA4F53993414CFCDDC2B19F857 +:107130005DF4389D477282BCE5F4AF3AE6C5E4DF02 +:10714000C857BCBB312FE48CD34A3FEB1913F277FD +:1071500018E9614D71F5D7F5D7FB7663BD21EF1FB7 +:1071600058946E91F76316A6EF44FC35F48391AF03 +:1071700030CAFB186CBC49AFD86A1BB363F37BFA07 +:10718000D5E313B87C0EADC6BC16E72BC77763BC3E +:10719000CBDC5EF86B462F34F9BDA4857C9FD8A26A +:1071A0007E3979D94292930AED437CDC1EBE1F8F53 +:1071B000F56C066F7FB1F540FBC9D43EC0E9F12FF5 +:1071C000858F214707F87B4A39FE4F0CAA3371BCE3 +:1071D000D283C7EE082568B76021A797D20591CB67 +:1071E000B0FEECD8C4F9F2471672FC293D68A776C8 +:1071F000BD7589DBD5F6B7DBE247B9DEB89FB7C30B +:10720000FECB4DEDCBC4B8675312FBA3CE2C34ECB0 +:10721000B1D01282D7FD1CBEA0E78670BF4ECC0F46 +:107220002DC3673FDDE670FB0BECA7EB683F1D3A13 +:10723000E9C5679D228F12758EB909F8525CDC375B +:107240009E1FF5F3B5A54CC73CD98EF95A35F66F9C +:10725000C4792FA627972E0811BCCE8875C6DBB53A +:10726000410187A34B25CBFD60788EDE6C9F7E436A +:10727000B433F8FF9DAFCCAD35F3FFBB5F49B9D94F +:10728000CCFF999EBC07F5D932372F6F5E9867E027 +:10729000FB5D04CF7B383C6F437C1F3EF87975B0B3 +:1072A000D3FF11DB970D1237AC17FB0DFDD613DCA6 +:1072B00037187E586E87C4DF0BB16DA1359E01F281 +:1072C00091CEFFA07FD7BCDE6DFDFDAADB70FC0573 +:1072D00039F65022BD76C8529177957D388AF132C1 +:1072E000A26FFE53CDE7FEBB9EAA62744FA0B8D733 +:1072F0008235C27826BBEFDBB1F1BEBD90DBBB2A85 +:10730000B39CFFEEA6F3C70CF8B3F9BB25024FBB45 +:1073100046F37AD0176ACDF69751FF79B9CDB867A1 +:10732000AE63E17093DF208DFBB5E6D9A675A33E71 +:10733000326F9C14A883F92ECCDA4F7ED73CE01430 +:1073400098B7999F9DEB403768C18CAA7A7C9E982C +:10735000AF3D87FD14CD7B2780FAE7BCCDD1F1E8A6 +:10736000BF06FCDFBB50F855701F0CBA2F5DA0F9AB +:10737000CDF4F76F621F1A06A1F74C818F602FFEC4 +:10738000FBC20BFA1FB8DF3975B4ABCD7C2EF0E72A +:107390004BB93E0FF6E5CB0BB91DFC637C827DF942 +:1073A00013ECAF616403DD8B3418DD0CCC1FCBA173 +:1073B000FCB255E952C0C65F917FC7C87B33C6EDAA +:1073C0002D93FC28C78C7CB0A4D71D7B285FF116B9 +:1073D000C31FD0D981F95AB1FCAFA7D759F3BF3A2F +:1073E0003A2E9CFFB57B1DCFFF9ADEEDC4FC97A320 +:1073F0009F76F861FF9689FCE8D30BDFA27CC52756 +:10740000841C89A777E339B3FCC2F4FEC7851C7ED0 +:1074100006BD7FFACADD167A3FFF4AFB3AF3FD1339 +:107420004C8F7410BD1BEB28ADAB15F18ACFCCF49B +:10743000FE5B31AF0BD0FBE744EFE313D3BBADB43E +:107440009FDE6DA59740EFDE52EB39CAC1E8DD5BE8 +:10745000DAEF7FF362BF83D1FBD4722BBD1BF682C0 +:1074600041EFFDF43A9A911F58CBE27A6E3CBD8F02 +:10747000EA5F873AAAD444EFFDFEC24906BD3357FE +:10748000427ADF62E0D3A45AA45B239EF6C4C2FF13 +:10749000ECE0725E9B546AD603A3D6B859D5A0F12E +:1074A00012DF628A97745C5ABCE46C078F0BADFFE5 +:1074B0005F122731F252E3E300F17131D0A72B4A7A +:1074C00013E8D90C139066C6ECF0FFADF9BA863F0D +:1074D00006E0F47501272699EC8E5B676B3AD2A122 +:1074E000118F6F16F178F7641BDDBF7CA9F149E8B5 +:1074F000FF5ED1BF6A33EDC3886BD5A652AE4F1283 +:10750000DDCC79E5F2DD223EFA00D1A3B8FF273EBB +:107510001E3CD01FC7E8FB6FBDDABC46E7F715ED90 +:10752000A0EF853E6FF8DF6695083B4ABC87793D42 +:1075300046ED84FFF4E36246F5869EC38EA88A99E1 +:107540003F1DCCCDFB17E2773AD3A51131BD82DECA +:1075500098F584F1C077B24D7CE70D6B3F3D31FF6C +:10756000F21E1CBFA79819FCF4BB1C4E9DE154D31E +:107570003EC0FBEFD13C855F31817DF22CCE6B9A12 +:1075800058679971FF4EB7D5AF0DF3FF4129F7A7A3 +:10759000AD914C7C52B575BF88F9C1EB339982FB34 +:1075A0009B24FC87ECC4A0F38E9AE7FD4CA980AB2A +:1075B00088779F98AF1EC2FA3A71EF4FE34846E7CB +:1075C0003626B2750CE3EA4D9867039FEC4835CE3A +:1075D000B144F87D12994B291FE8D356B7C238DF62 +:1075E0007B1DF95E19337EDD41B47365CC1B443AD3 +:1075F0009DC1F15C157C44C63C9D19B13C1D999917 +:10760000FC511989E8222EBEBAEB598791474BE706 +:10761000E1999A5A663A77B7C3D5E24738354A7244 +:1076200018EF337057FAE8DC6433CC47C7F86A2A9E +:107630000BE0F8AE37EC813AEC5F7FA69EF279550D +:10764000B9AF18EF31686D73E139EDCB3BAAE8BEF5 +:107650008DF51B15BA67A3AE627D14FD1ABD574B9D +:107660000C8F3CB020BFEF40867F705D2EA6AB78BC +:10767000664A2E769EB2CC5FE7792BA59798B7B273 +:10768000F1ADA3530F99BEFF43A9F5FE5A232F89ED +:10769000D957D17920232F093702F1C8C85FF96C77 +:1076A00053F7D44360B33A847FE5FA159A6391495E +:1076B0009F37F2119B52FA781CBF55A2FC312D9ACC +:1076C00044F962EBFD36F2CBAD6F6D6BC4738BF298 +:1076D0001B7662C3B2836DC6B87252873D8279E968 +:1076E0007B32F5E8B21984A77D3680777E961E9DA1 +:1076F0002EF28530AFE715B14FEE3D7699F0E61EDC +:1077000089F2CE5C591F51DC7BA1E2082B3EDA3BAB +:107710004BBCDBC0CBE61D3CBF60B162BD07C9748A +:10772000AE23613CDCBD327433AEA3417129C8CFB6 +:10773000DD2C34240AED6AB36FD311BF4B01BF5562 +:107740003AD7A2BE8E7CDE84BF0EACF7F4DFAFCF9B +:10775000F1D1D8678FFF764B9E99270E3F4BB3AC84 +:10776000FCDE1D87DFF1FB3B739135DF728F384FF5 +:107770007456972238EFB3BB766D9B837AFC2E1B31 +:10778000CFA38645384C7289D9BD04A74F3BECE4A2 +:10779000AF854D227F5FA5711F29EB746E84E7EAE8 +:1077A000B071EF68A713FDF0372AFCFE7A034FAAE9 +:1077B00040BD41B958C35417CAE15AA6B9789CC80C +:1077C00047F4BA761DCF6FB7E15AE0FB55BB6C6D3D +:1077D000186F3FDB614F453C52E73AD3DE93B9A9BE +:1077E0007DA1737628D9DE33C951238FC4E3E7F92D +:1077F000671E3FCF5BD1145BC426E13D5636C29B6A +:1078000073026F00CDB6E27C2A315F02F7272E4F5C +:1078100002F6AF20988EF912AC1BEB63F9F6DD4E41 +:1078200027D2B9C887B818FE005E1C47BE66E44B75 +:10783000ACDE70E17C7B4DEB2D7818EAAB5499F00F +:10784000D9CB78BEBD2BCB46F1B5D51BAC7CAD7684 +:107850000DF7DB57231EFA12E6DB13DC93346F3887 +:1078600051BE7D7366282EDFBEBDD19C6FDF58CE22 +:107870003CBE21A8C6B5F8B7639C5EF85BE3F3A6EF +:107880001A1659F9CB8A6221C765CD8F72E2D3F9F6 +:107890006AD322AE7FDC874FE3EF057C56C4DB1D45 +:1078A000CF8B90FF68EC42F15DD088AB85B62F425C +:1078B0007993C9CB7F1272EF60AEB6639145DF5604 +:1078C000C95FDA7F2E4DAF5983F691612FDDDD5D03 +:1078D000B30BF58D16B59AF24BCEB10BE721CFEF76 +:1078E0001B15CBB760A8278FB3E4A3E6B22B2DF509 +:1078F000F9F2744BB9C037D7D2BEC89F6F29BB1AF3 +:107900002B28AFD3F0677BC5B9015BF298CB300F62 +:10791000F4B945563BAA1FEF2FF1FC00C06D1FC103 +:1079200059E4D15D3C0EC1E1F662C9076BEA12DE93 +:10793000B3CAF3F8EE28E3FB1FFF8CDD53C944BF45 +:10794000C77699F3F1BE7FE498A1AFBD4AFB29F257 +:10795000F78C78CA8F8E1C35EA5FA379C7DD83BAAE +:10796000B6EBB55D425F3C46DFAF32EEA7BCF0BD83 +:10797000A84BC5FCBAC6717B95ADEBB3E3FE278F70 +:10798000F751DCC268F7B6C06BD0AFDEC6FE8DFB28 +:10799000178D78939197ED6A15FA52D86ACFBEB7D2 +:1079A000A8DF9E7D0FE76FD8D3B84E4BBEC1A27E35 +:1079B0003BF43738CE6076F4C771FB1F8B2B7D9D6F +:1079C000E24EC67D8FBF3FD2F438BFEFB13D1FE519 +:1079D000A6AB7ED37BA10C82D3798293D8FF8F177D +:1079E0003143EFFC23BD8F8B0FC5E39954E632F092 +:1079F000482AC3FD88C53F12C69BDD650EA37F37AD +:107A0000B5EFBF37354AF0EE19C702ED39E8076B1D +:107A100051313EB7C0C9E3E26905CB6FC6B846A392 +:107A200092390D79FE65659265DD23666B43CBD097 +:107A30002F02146E9B86FA4694EE0D8C221F183E80 +:107A4000389E168A7D8F7FC6DF83FAC5917B1E37ED +:107A5000DF83EAECDA3211E33AF1FA6AFD0B9A0DB0 +:107A6000F357F427ED148F6AEE38974F7C04F7F83C +:107A7000027CE41521379AF1DCF1A4D8FB1965E307 +:107A80002CEB2C2D5823D3DFB97176FA30DFB934C3 +:107A9000CB6EE127F1FD2667792CFC64120BD1FD3A +:107AA000FDF76E8A9C3C0D8C7B8B7FB38C7A676371 +:107AB0006BCD61CC5FFAC4EF5250EE3508BFF4C114 +:107AC00091AEE802940B8AF638EAEB494AC4357164 +:107AD0000A9F2FE61D9794F173B349633A1A4691B2 +:107AE000FC619D490AE6AD49DCCFE28F107D444B35 +:107AF00038BFC6F9EAA6F9021E149799ECBA916547 +:107B00007CBF1AD2188D5BAB30D2FBF25BB733D49B +:107B100093717C65CAC0F1F2CB147ECF49B6C4ED37 +:107B20002C7FA783EE65EDBF1FD69AFF5253C6E99F +:107B3000E697FDF4185A49F310F7C3FE324607AB37 +:107B4000E87DDC3DB783C5554DF7DC56970D8FF5C5 +:107B50005325E67781FB5F6FA671FEC6F748FFE409 +:107B600048F71AE1FFBBD30CF743629E207FEFC2B8 +:107B7000F768FF53BD90BF8F0A3A8ACF57B0DFA690 +:107B8000EBEDE807F82045D1B95E6DC99770C9F3F0 +:107B900028FF41C67BDB6625CC9750244BBEC44EE4 +:107BA000CA1F182C5FE2CBE6476CF18E23BF4992C7 +:107BB000B897263E3FE2E2F910F9F7A33E9CE7B3FF +:107BC000FB14C4333C6586F910A03FA27E7F48E4D5 +:107BD00047E8A03725CA87702D6FD0F17BE31E9B45 +:107BE000609A93F48A43B3C6D0F9CEF8FC88461164 +:107BF0005F2E48AFAA4F433FBF372D07CFCFE13DA0 +:107C00004F28F7A1CF7466D23F4F8EE5F92867C49D +:107C1000F974137C5D3C4FD70A5F9056045F878DE3 +:107C2000298FF906C21736DCE736E991F8B3F8C5B3 +:107C30001C3AF9BD5CCCC7FD6271F097FD0AE5A363 +:107C4000A0DE8AF7F9C9BE59B4FFFF90C7EFF7DB92 +:107C5000E2DD4CF89204F8827E2C039FFAF7BFF520 +:107C60000982D7D7F3E53EBCCF2A915FADDF0F97EE +:107C7000C0AF36203FE67FF87E1F12F74C05D36A6F +:107C8000E9EF7EE013F5BE8F859C0A0E12E75D22B8 +:107C9000F2A4E83E669CEFF38CE4D1144F6F18E138 +:107CA0007695FCCE01047FA76F7A7E9A82F160ED13 +:107CB0000F48EFD3FCB9F765E0F88EEE71981F30EE +:107CC000E56689DFDB96C5F381188BA823609EC12A +:107CD00035127B8C61FEBF523F02F9F39ADC2378A8 +:107CE000C78D6DB1F5EF67FD57E7EF6CEC3AB20663 +:107CF000E5EF49718F4513D8F3745E218E6E900EB7 +:107D0000D0AEAE55D2C9AE4B403756BC879F64FA51 +:107D10005ED6D7723E053D2FE5F7AFA923615C071C +:107D20006C527302BA023EC9F03EEBE62349E417F7 +:107D30008AC77B396BBD8A76D2D77F9BA2E07D6EE6 +:107D40005F16EFFFF23CB1694EBC9F2B09F82EF293 +:107D5000C9FF697462DC3335E25AB57C31B45BB675 +:107D6000F8BF378FCCC0C38941B506E7D3FF776C26 +:107D70008CFE384EC27855348F24A60CA5BF1B202C +:107D8000F2718CF96AC67CB76CD7513FAB85711024 +:107D90001D7F9AABDDB678388E17F54E47F91A94E9 +:107DA000025B14D47B15BABFF7E2F7F02DB39C1732 +:107DB0008C7F0E760FDF0782AF6C8AA3F3BFDADF0A +:107DC000DD72707F69FCDFDD7A588CDBDF5FDC39C8 +:107DD000E2ED8BAD7EAD2FFB77B7FE3D2FF428C2D1 +:107DE00093C9AA42F963F3D5C770DF4E2E50FF69DD +:107DF000F1D517C807D4434FACCB8EE981EF2EBE27 +:107E00006B2DF71F4CBB24FF815DD8F7D79CB05971 +:107E1000F4F8D9BD56BD7DEEFB432DE5BFB5DFA11E +:107E20004429B5B49F727E0DCDF3AA7DEB2DED7282 +:107E3000A2B75BCAF605DA4B08AFE987EFB67C7FDD +:107E400075F7664BBB03157386A03E3F985FC3C8AA +:107E50000334E0D4BD98DB416E4798EE5135F2FF14 +:107E600006FA39AC7F07F68DFF4FF8801CFC84F2D0 +:107E700091D076C3FB01775434FB12D10BD8B1BF3C +:107E8000596CB2F70C3BB66D31A3F5039E7E487872 +:107E9000EAE8C7D3DF62F9A3387A7C0CDB5FFDB771 +:107EA000B74FE525E32C74F997DAA75BFCB7F3FB32 +:107EB000CD326DE49FEDCDAC3E8C769261971A7613 +:107EC0006BBC7D5AAB573D8EED0DBBF4A610CF5B5E +:107ED000ADD5DBE87E9CDA01F6A938F783F629C137 +:107EE0007750FB74CC121E7FEBA3FB76451C93B13D +:107EF000ACB568DFEEABE37CA0AC2487E81E68BDC0 +:107F000080CE3F001FA7FB8EBC874F23BE197E216A +:107F1000F865E27924C39FBE2AC4E1D7F0B923757E +:107F20003A94BB1EAEB2BD8EFEEE0E7B9B8DDB4740 +:107F300096FBA8763C798EFCD1787E1EF3FF588B99 +:107F4000356E7D036B7909F5B4ADB322C311FECB59 +:107F5000C47D551EE3BE2AA127AC16E3C7DF5765D3 +:107F6000D8570EE66FFB42E03D339D5B33EA093E96 +:107F700009F46D2FEB257BAB3F1EB791EB0D59D06C +:107F800023EA41F1F1367939BF6FC313A76FC818DF +:107F9000AF4A8DC5EB8CF8B491BF737DF7951D98F2 +:107FA000E7E240614879D6DF7B02F7C394CFF30460 +:107FB000E6F3509CCEC4B74DF93BAA0C7A50E87D4D +:107FC000E37BD8F64CB293B765A03E58F1EC13C5ED +:107FD00093B1ACD1DF0BBDBCDBDB81E74A0CFF5AB0 +:107FE00079F79075C20FA92D41799DCEEDE8D01299 +:107FF00066F8136AE8BDC2EDF9A54B98E14FB88960 +:10800000DE1B7E4DBF2DE1DFA7F0897351F374C6EF +:10801000AE00BDE6D625563E766FECFE27E2432E37 +:10802000C1875C63787E4A7C7F772E910CFBFE8E45 +:1080300025DCBF7EE712937F5DF1F2BF5B847E5645 +:10804000F447F8EA0E1E44BDE21CDECB1E60FDF7CD +:108050000EB9B2F9DF2976C92FAAE2DEA15EBA779E +:108060008875328C77B85FE47F5F2ED467B3D0F524 +:108070008260B2D5AF1DC33B8A87C4C75506BB8F8C +:1080800068B9C05B77766181253E12B2C64772BF80 +:10809000B321BA7906E9B3618C3BB8B31D16FC4A2B +:1080A0006A64641FAC30CEC9DE1FA5F275A0BFE2C2 +:1080B00039595D9C73B851DCFF709D169757C13ECE +:1080C000273AF48F778471FDF1F192F8780F50CA56 +:1080D00045D6C7E382C6F9D11D2EB69DE272936DD7 +:1080E0006C337DDF598FF75A241B74956D8D73D7D0 +:1080F00055BCA0633CE64C2E8F830E55F97EDD0007 +:10810000EBC1FBB792E3E282C3607D7741FD4A5841 +:108110001FDE33124F9721B58AE28EF3417F4F74F1 +:10812000EEB83CF88E9DFC7A4B84DE95CDB2112FD3 +:108130002739F5156477315B00E54CD3AED6628CF8 +:1081400077EBDF760426288C0E483A4CE7640F5410 +:10815000BCE0C078F9B9706A80EE65602D7E8CF75E +:108160004E92C64A184F6C9AD0301AFFD47453C638 +:1081700008BA0F24A4E6E6627B8FDF2E91FF80F120 +:108180007D6C5A9E46F7B11A7A43639DC6B01F5D57 +:108190004A61FC5E7595E655A9BB156CB7C41F26F0 +:1081A000FD6CFD18C6EF69C538E808815F507F5D3A +:1081B000F07907C6317DE31C2C75564CDF48B5F5C8 +:1081C00006900F96B15E3AD7B684F99CF85CCA0265 +:1081D000740F6B050BD373056BA1E70DAC939EABCE +:1081E00058AF93E71B296417DD98C5E39B0C9DF0FE +:1081F00040878B64E644BC68EA384A7FD7A2F922FC +:10820000F9C9F592A8079E84F10C29AB82E72B4FA0 +:10821000679A1DF8A2FA7B2699E3A3C6390BB91C0D +:10822000501BF48F3F09B9CD1E0A34BA8DFC1BA434 +:10823000DF7AC9F2F789BFEC7D54FF0F9B633D3FA6 +:10824000008000001F8B080000000000000BE55BB1 +:108250007D7854D5997FEF9D3B333761126E208432 +:108260000904BD8144620D3881800901B9F9C290C9 +:1082700080CCE48B58814E5430027647A92B76B5DA +:10828000B9211093686D74C16A6BEBC0C21AAC5D02 +:10829000A3A53ED2B5DDE1436C31B4C15674DBB465 +:1082A0008D886879FAB458A052B7BBECFB9E736E08 +:1082B000E6DE2101BBB5FF74D3074FCFBDE79EF3C8 +:1082C0009EF7E3F77E9C333244DB530B01543F04AB +:1082D000BA01609E0E46D40790ECC7361FE002FD3F +:1082E0002D04F8CD3217C01C6A65800900754AB0AC +:1082F00012D2F10315B4B662EC432DEBD7DD0FD0EB +:108300009E0630FFC3C24AC0797FD504E02AA0EFA1 +:1083100074F6DDE0D9FD1366E2674DEA0BAF6AF84B +:10832000A81FA0AA0FD7D99A36B032685B6F425007 +:1083300066EB4D0C4AECBBDD467062105BD8D31780 +:1083400008A600AC5DA6B1F700A7C7531FDF4F66B4 +:10835000EF5FE6EF8F7906EEB4CF67B54BC57C0BC8 +:108360000B0EF866237D90290772F58BC7558AF5A9 +:108370006BAB9A21ECA3F93437E0BE0A83592D2A5E +:10838000EE3708FA965424C1B339BDA52989AD7FCB +:108390000D5B5FC5F567E0F30F9CFCB3DA82A0C705 +:1083A000DA4F4190E8F7717AD709FECCC765F571CD +:1083B000D86E8A4DEBC9A7FDF1F7BB0D632E8D0F6B +:1083C00042D84C0DC4D70DBD8D4326D138BDD750F2 +:1083D00070FBD92444EA830945004753C47B33BB6F +:1083E000A525EBE2EF918E3246B758675E10D8BEF6 +:1083F000E70435460F287C3F9BBF072D24A70E922C +:10840000972F2EAF7AC1A7C436C7FA5EC8E727A751 +:1084100095AA91F87125C9630EA3A38ED1D1C7D7B0 +:10842000BB92E8E07C6AB4CBBD46D037D908DF4CBC +:10843000FC50CAA508D1857A6848284F8F5FDBD1E8 +:108440008D53DEB86CF8FB5534EE2DB92F204D035B +:1084500058B20CACF59AADE7A9F87C52497835933F +:108460000740FE940C80CF01FF6B928319308DB3CF +:1084700093E6EB4883D8425C27C994A26DC8EBF21F +:108480009CA06708F9B1DADCEED191BED559BD1DCB +:1084900093D00E3C79D09784229D4872C57993F38E +:1084A000DBC0F0919DF529E17CB6FE5D6C5F397C07 +:1084B0005FDEC59CAE9CC542AFF3F8F3A2C5828FC8 +:1084C0004B385F8E4C1D59AF5FABE27C3F501A7E3C +:1084D00080F6913A79E30CC047D06BE834CF6B5506 +:1084E0009C1FC3F355587A15DCC4E888F0F96F5423 +:1084F0000A7A7271C8AF7FF4F39D3EE4E3BC1CAE10 +:108500004FAF2CFEED6D6DF8FF0DE4038DDBD6D87B +:10851000AD925D24D2B1BC29FC655ADFEAABBAE664 +:10852000A1FD9ED95ABEAC1859A1D074B32EFE4EEF +:10853000E9A907637CBCFF522B72DC8BFADCAAB280 +:10854000F67BAD1A98D3918E563FEBFFA055676D21 +:10855000AC358F3DDFDF1A60FD83AD45AC7FA8D51C +:1085600060FD1FB656B1F69F6EE0FC5D7855F00ACF +:10857000E2DF7BB9D0447AAC5628E6C454B61FADCE +:108580007904BE6614373F43FC89EF27E6A6716580 +:108590001056482F6E00530184C6C51050D2511F8B +:1085A000DE5E10FE36EDBFA222B4391DF75B73ED1F +:1085B0008C2CE2D30B0B82CF733B43FE21DF97CD94 +:1085C0000BBE40FDB4CACD8C8F8F90AC50AFCC7930 +:1085D0006A7417D9300C31F958EBEEA992843DA199 +:1085E0000C503F6BC0F63717F591DA6CDED533C807 +:1085F0001CF08FE96DDFC103A88F8FD42647BA51D5 +:10860000AE678CFD0AE9453544D9FB9A801B8EE79D +:10861000F1EF2EE0BFE43C675FCD511C7D44443058 +:10862000ACBE8BFEFB5930D4787FACABCD1FC0FD08 +:10863000ACDCE87AFC04CAB373DF1DA0A3BEACF4C3 +:108640000FB8C3ECB9873DB7F6D589723E9E0BB023 +:10865000DD30DE207E1C29367E4A6DEF82E09B8C69 +:108660005F3ECE2F8015DAC96B002430E40B63E245 +:10867000F6B8E0B41C5F1FFF2D3C9F1CA70FFF95B1 +:10868000C27847BF5C9DEC185FA94D73BCD72132FF +:10869000508A72183214E60F6FF05FE318EF6D73B3 +:1086A0002501CABFB792EB53470892612CB66EB84A +:1086B00082F0BAA98ADBFB4FDA6E9036E23CBE6DDF +:1086C000327803B48FB09FECE64109927248CE47EE +:1086D0005C815DF8B8D10B0CBF2C7E9C15F8991409 +:1086E000E2B8A846EBC0987DB15E0EF34FE6B88CB9 +:1086F000020FC4C88FDF3B7D56B71E7F6FCD33ACF2 +:10870000BFB14636DFCA4E6E6F7228259DF80AB398 +:108710006016C9AFC7D8C4F4F04C1822E4B7475B61 +:10872000D79AC7EA7B62A14BD2E971E13E51FE07BD +:108730001AABE528EAE329FFD41D5E895AD9A0F5D2 +:10874000CE0EEA3B487FDF0F5A7ACEF51FBD25DCFF +:108750008F7871DDF97C30673BF1C110F860087CDF +:1087600030043E18021F0C810F86C00743E08321AE +:10877000F0C110F840AD35EFFB419DADEF89D5B3A9 +:10878000FD78A2BC459C9C1E225C0E70DC9CB81837 +:108790002CFFF29910D15BC8F1B35B1A580F6867D0 +:1087A000FB6A9EBC4D59807E926C12FD6F5FCD932B +:1087B0003BCDACB81F4D8C7BAE0FF1B82AB1D56A5A +:1087C0009C71CE42CFC06A1A0F1BFB02B533E27414 +:1087D0009784AC38C928213A7F5FCDF7B11011D703 +:1087E000C07862C9ECFF9E4CF687F41A219B3F2D9E +:1087F0000C713D0693D38FDF97D3F74BA771BAA1C6 +:10880000A66DB5994F7EE7B48BE4F4CBA9003B503D +:108810002F60735F20645BFFCFD55C6FCB42C37C5E +:1088200059CAF825FCF9C282D9036EB483D547CF63 +:10883000F5FAF1FB3A99CF7FA27AB0D7E474D5B1BB +:10884000F1C3F19B585FC431183F883866574B8B92 +:1088500072F9F986901DE4B75686EEDC25E6FF1C1A +:108860009BBF8ACF6FED2F14FAFC6AF1FE56F65EBD +:10887000F8C52365FCFDCDF4FD7CD483C2D0AFD216 +:1088800029DE359374E97A1C061186FB006170E1DC +:10889000F3457E943DCAFA3DB12EC0DE5E03F9E693 +:1088A000F115BEE7423ABF79F47BBDEA1CA28BEB1F +:1088B000C74B47EB562B53E2FAF1E2D1BA5DA41F46 +:1088C00048C717181D222E582FF8593735902B619D +:1088D000FCF9DCD1FFE85551AFEA3C621D737FAF74 +:1088E00081F4D525C315149F3E79F4D55E05E3D3F5 +:1088F00023C3FCFB798B91155F67F7D1FE5EB61F32 +:108900004DDF924EF19226054C9DA6D2DD44D7F65E +:10891000A3032CBEAD1BC7E7BFF7E8402FD1E5D1BD +:108920000CF704165FE1787C55AF59FBC49000F159 +:10893000B15EE7FD3F1E7DA5A5D347E383956C7C23 +:10894000169FBF0190BE00D1F7A3964F421FF26160 +:108950001BE383B02B9427F3D789B8B253D8892B64 +:1089600065A787F47BAD7FE4B8FB996A812B45C38B +:108970007A1E253B78A61A1CF1163EFF177A7EAFA9 +:10898000E0FB1191476CCD76E6277B04AE3E19E201 +:108990007A6FC567F8FDB742EC39FFFE623E733E61 +:1089A000F51DFDF716B2AB1D21118FE5F3EF9F0EFC +:1089B000698EF99EB5FA422F9F4EE8D743CFDB343C +:1089C0003F98C9B0AB90E412147A7AB54E7D8028F6 +:1089D000EB7B200BBAD3B9BED6E277FB055EA0DCF9 +:1089E0000CE22B28F89CF06BA9348EFCD9B01E9BAE +:1089F000BFEFA5B8B5CB8DFAA771792BF3E3FA7267 +:108A00003CF4612FE9CB29B7CD5E558EDB7CB3AE4C +:108A10003B5A709FDD09EF1B86DFC36E7A6FD9C5A5 +:108A2000FF84EE5E6DC7CD93A1BB995D8C36BFE729 +:108A30008D934CDF2C7A7E73F4ACD0DFE82A405C57 +:108A40003872F42CA3CF3EDEE4F1F73B763B7B5546 +:108A5000C8CB9203CAF104E9C129771868DE62F332 +:108A6000646F45A643CE1FD8F5E75D4B8E428F4617 +:108A7000C3F93F097D496C2D7C77AD14FB345FEC65 +:108A80002DF58D8893E7197E0B3F749FC06F7CFE98 +:108A90005F765CFF503C1FD61783D3FD7E82FEE0DD +:108AA0007772ADCD7F5D4E0E385EADB5AD7F44AC17 +:108AB00083F9580A3D1F2D1F5BB15E62F33487D6E0 +:108AC000AFC6887954FE64D7727E24B68F553BF3C7 +:108AD000499BBFCAAC257FE5E5746EAA2E63787EFC +:108AE000397FF525E1AFFCB5C3FE6A5AAD8D7F1322 +:108AF0006AF9BEEACA84BFC5F82D648BC76F1474C7 +:108B00005D1CB7E31FDA596A49F20EF2073D86CCC5 +:108B1000FA6702D93B5CC882C5B57F5D1C5F1DE466 +:108B2000713CDA35CBC33EFDF87DBB3F901F8FDF34 +:108B3000BBF73D0994D7AECCB974FC8EF94C0DC986 +:108B4000C1CA67309E5F52CBE3F9A5D4BE26EC6460 +:108B50001BE65A030C6FA22A607B153C51FD19DC01 +:108B600057D75689C5DBDD399C5FE7F2A528E78337 +:108B700091BA14F912620CC1F87B6554D5F0BB9A16 +:108B80003CF91DEF4CBE7E8C64EF5A3196D6EDCA8F +:108B900086A82BD5465F6A18683F9EAD6D2620BF1C +:108BA000CA752E1FF413518A3FAFEC0D750CE1FB13 +:108BB000B51BF54AA2A7ADF1B387BC28CFCE3912B9 +:108BC0004CC4B1DB3C61B805FBEF157BB54DC8F774 +:108BD000A5856995F7B17A990B5C24870AF7F1218D +:108BE00095E4A4C205D435B50AFB367ED78012EFD2 +:108BF00067130E3DFCA16B26B5CEE71B078FCE3C5D +:108C000068FBEE9E5A675CFEEBD697E1DDDCF83E32 +:108C10003F0702B7110E6B453E7E0BEEE3A3D681F4 +:108C20009907112B5B859E613EDE5A3B423EAEA307 +:108C3000DF20BD7DCF9434B2CFEEAD670E5C20BE99 +:108C4000EBA858D80FC792547ABF76A3144DC2FE32 +:108C50005A7D680BE517C9BA1291D18F272BB0C97D +:108C60004D75905E57B40DDF1F1672D89D13E999AC +:108C70004776FF3317C8C8BF723FB78FD538AF17D5 +:108C8000F7B93A2F7407F5ABF33CBA8EDFA9F97741 +:108C9000F5B871DD9AAD2E3098BCCD581DBEC7A970 +:108CA0004E77E33AEA7C1793F38DBA0C31BB1E9BE7 +:108CB000C61B39A8174B85E9AC02C514FC942F4894 +:108CC0004C57742543E0FE54E2DBE0E65B687F240A +:108CD000B700E3BF3964E97D36C93D99E945C7D599 +:108CE0005C2FA0D07D82E6B3E49ABC7583D98CEF6B +:108CF000B5795E6D2CC6A3C9A09CB0CBAF260FC7BB +:108D0000DBF34492732AB5CA09FB3A89727E91E477 +:108D10003C262EE7DD0ACFE34EFDCCC5E2AC533B4B +:108D2000773E42FC3477CA815CF695D944749E82C2 +:108D30007101E6CF631228C8879B857D58F247BC36 +:108D400070D37EC391D400C30BB9CFDD8CF3ACD408 +:108D50001520BEAE82D36EC29566D03D14C7DE0A22 +:108D60008687FAAB21ECE171AD0644C7ED2D529434 +:108D7000704C56B9DDACD8296F271C3BD5EB4A2582 +:108D80003D324ADC6927F11D7D3252DE67B554F968 +:108D90003969C39DBC5AE18754CC8B2F91D71CAB4A +:108DA0001DCE6B8E911EDF4579CD9C8BF31A8614F8 +:108DB0007F87759157AB059F44FDC0AA7B74EFCDAB +:108DC0005E2293FC5D709AE21A857416E39C034F51 +:108DD000B655C928375D564F933FEC4EF136513D9D +:108DE0001FB442F67ECDF5517FED0871345A005B19 +:108DF00007E3B426E6BFC5F803EEF0225AA73B5BB3 +:108E00009FB519FDE8EFA6A07E60FFC0025DDE847D +:108E1000FD35797F5CA5CF8C7F7FC0CDE3F4BAAB05 +:108E20000259215BBC3CB18EC7E90772F9FC9DFA7F +:108E30002C37CDD395AF49AE34C2AFAF69CDBEF8B4 +:108E4000B878FD2D3CB1CED64FCA89B9B9BC7B9854 +:108E5000FF4BAA4F36094F6F9F1FCEAAA3BA89CAEC +:108E6000F12229C77087F36DE3A85C984A7E8AEBEC +:108E70000F68B878268D33818D13FDD1F597F3BD3A +:108E8000D2E5030387F667713CC3F845263CEBCC7B +:108E900091A326F6BDD9721AC14DAA6C564DA5F8FC +:108EA000BB4C865D3AF98B33D349BE1F25AD627644 +:108EB000A4137095609E91BC8AE1E3D03DA04993D4 +:108EC000B98103EA69A35061B32CF2F410D9BF470A +:108ED000D5DAD16EBF3A26958DDF3898C270EA2375 +:108EE000393283F4F5AEBA6CB6AF317224A55C2288 +:108EF000FEEEF0119F0E57C823D6DDCBEA7C6CFC4A +:108F00009DC54629F1ED9E3A60FB7BC4AA27217ED0 +:108F10007AE6B27A3FB03AB2096FE5205DC7055DE7 +:108F2000F7D4F1F867A9FFEBBFA07D8D33F4455B63 +:108F3000705F9F457C8D229D4794804474BE7E9BCC +:108F4000043DD2E87CADF17F937D8F1A6CE1B17C5A +:108F5000E1BA383E1B00FB08374B3E18C677666FF8 +:108F60000B4E3BFB0BCF3BFBA5E076F4CB5567BF2D +:108F70005273F66FF03BFB8B75671F3A39BE63582F +:108F8000CBFC01D8F1DFC5DB617F837F37B5B84FFC +:108F9000D8BFF7D49F1C8454B62F87DFB0F83E9A11 +:108FA0009C76142FBDA7CEC6E747245E9F3433E5D9 +:108FB00000E9D591C2F14961DB775D753C2FB5EAD7 +:108FC0006C83BACCF47450AF1D0B23CC3F1C179CA0 +:108FD0002F81980D7F54C5CA0B67CF9E8DFBEA0485 +:108FE0008635B675B8FCD5F3D7B3EFAC386D113014 +:108FF000DDC1B829C24CAAEB4D577413AE5FB6FD64 +:10900000B60A8AA36A503FBC0869353DC0ECE086C9 +:10901000F55254C7F7376FE5FD0A558A1A84657E05 +:109020002FC46C7195E59F0F6773FF5CA1651F2CC2 +:10903000C57E92A19E267F9E94E575C4076ADEFBDD +:10904000833093EAF49EF8F36C9A8FFB65959EDB70 +:10905000FCB215578DC69F44BFBDBB4EC467D7C178 +:109060007524FF3359F56363108FD3ACEFAC388DA3 +:10907000F0BC2237EE9F5FAE4BE3FCD3F9BE937D8D +:10908000D20E5736E1E03CDF28E72A2FD7D9E2B8E5 +:10909000725F1A8BE3CECE0FBF42CF3BFC531F262D +:1090A000DC2F93E034C5A5DB1A4F31FCCB73F3F909 +:1090B000078B54864F833B0FA65C47FA1355D8B9EC +:1090C00027FE3D973C377EDE35A9247C88E6EB26DB +:1090D00045C6714D8FBBD977F8C538CA9FBA53A31F +:1090E0001F501D07CC8CB5FD7E318EE5E5A7EEA0A7 +:1090F0003A81D51FA84B3D4579587746B445C2F112 +:109100005B7F66AE4D477FD24D63D15F4D7933FAB9 +:10911000ACC9703CA090FF7F840A48B86E799E6C01 +:10912000127E97FBDA40ECEF2DC2FFAEBC178F9496 +:10913000E2E8B229272A49EF0FEF7DE1A94CF27F3F +:10914000ED2A5596E0F00C2FCFC366403417E92D79 +:10915000FDC66D1EE2874787595EF4539ECE3E736F +:109160002A8E6F42A8D53582B33EA0B8D3F30AC683 +:10917000432C9F0A9B14EF7831BEA5BE2D3EE4F12F +:10918000A4EA8C2713E3479CF018C5A3F542FFEB34 +:10919000EB37C648DF0F857D11AA5F4290E3878CCD +:1091A000FFE3F811896DA23CC250453E7790D18F04 +:1091B000F1328BB7BCF94A027ECCADA07ACE8F25B6 +:1091C0008848C877F5E130C490FE069CDF0850EB74 +:1091D0008C3FCBD7733F988837B7CF0F423DF1D93B +:1091E00057CAF463BA3BB682D915C80193DA9D3BDE +:1091F0001F9E85ADF9D4B07E30FD99FE9E16A53C2C +:10920000817640F1E675629F874311D706A4CBD8DB +:10921000704580E47AF86A2FB7D3DF68D1316CBC2F +:10922000D17637BE2FF1BB24B64F0D01742EC37516 +:10923000F63D318EF288F990C2EA53CB843D78CE68 +:1092400072FF1AF3804471A3155F5E8FEA4DFEEE44 +:1092500082D01709F24C1A3F7788DF5FE8CAB9FB62 +:1092600031AA3B94BA5D010ECB5CBF96CD0BEBF5FA +:10927000132ED62FEF4D61766FA16B055292C6F477 +:109280002D97C675AAEF323DEBCA999A4EE3CA7381 +:1092900078FCF0516DF86AC63F9DE79FE5BE47D95F +:1092A000FD80F6A822EA59BBD6D239FC2312B78337 +:1092B0007FFAE9C13B4C966F8517D13AAFEB48274F +:1092C000EAA377C60696F71C262A719FE7F2BEF33B +:1092D000E500AEB774C9F62D6422373DD7E6467275 +:1092E000A021BD744B9A4EFECBE5C0B77F78794C78 +:1092F0001CBFF0DF1DD1F18EFEED4F4C768CAFAB75 +:109300009AE678BFAEF71AC7FB4A6DB6A37F83BF54 +:10931000C4317EB15EEEE8878C1AC7F86559EF2834 +:10932000E374C6BFA5C49FA4BE772AE97CAB664F91 +:1093300076FA6CA0B8333685E2FBC194D8148A83E0 +:1093400007459C69C59383D9E1B99B6CE74D1BEB3D +:109350005DFCBE88189788876BEAB9FFA99B1A5BEA +:109360001DF4317D37A7CF64F8997ECB88E7B8B775 +:1093700084EB27D8F1739F9BC6D5156EEFC8207E6E +:10938000DF56C0E2D175F88CE2D18A70A882CA3467 +:109390008B82771D1C8FFBBAB1A84D09DBF0AA9C0C +:1093A000E2CE541677AE637A1570097DE076753893 +:1093B000AFEE92FEE48356CCAFA6039C6CF5B3F6F9 +:1093C0008D569DB5A75AF3587BB035C0DA43AD45ED +:1093D000ACFD61ABC1F2EB81D62AD6DF424033E768 +:1093E0006FBFCE1ADCCB24CCB3CA61E0D0B86C8A94 +:1093F000970315BB904FEB11C0C8CFE0FE1F62F67C +:1094000090A538F63FCCA7047B5B36CFF80A8D6F6A +:109410005420E69E7579BB417DFA2AB347C27F3D51 +:109420008EFFFD7B9B9FB0E37F7FA687E73902AF6E +:10943000C664E9ACEE58FA8D3D0CF73DA01FA7734A +:10944000D8FDF53C9F447FC070A709F15F0F100A5B +:109450004562CC5F209E527EEC51EF677DB554890A +:1094600078FD7FBD3F40C4ABDC22E21F868317F945 +:1094700083BF0CFF6B08FF0B2F85FFB72E221CD478 +:10948000A642606CE6887E601FD35B21AF1344E880 +:109490000496E5303ABC161DEA7A93F218558221FB +:1094A000E2831712EA2C820F5EF6C4F19EF301C22A +:1094B000CCCF2AAFF0BA0398C631CA238A85A81444 +:1094C0007F4F39F1C53F19E3C2229257854974D7BE +:1094D00018C8771A7F82D31DE7538CC9B71AF32FA8 +:1094E000926F4D67C4588DFD9222AF467E5DF12B81 +:1094F0000E3E543F1C617C9A27F834EFB74A429DD8 +:10950000C6599F39512FEA3122AE9BEEEE5B49EBF3 +:10951000F50BFFD8BFF3A06FF65FE01FFB4391038D +:10952000FF68F38FFD05DC3FF6C7FDA3B4E192FEB3 +:1095300091F36FD83F8A7ADA8ACBF8C744BFD8A9AB +:10954000DF3D6EA2CD2FD634887A7ABAC9EA2F6B66 +:10955000645E775D932AEE35D5AF5DC3EEF7A1214A +:109560007B33999D2735E0F8FDEAEC83947F2497BF +:10957000AA2CCE54A654BCCA8F8586FD6C4AC3C89B +:10958000719C46CFF7E7E5A4931D5BF1E9E1BD6D62 +:109590004F6416C6EDF87036DA31C38FDB3A480FE8 +:1095A000CA757D16F9CB6D8DD51AC5FB075272674A +:1095B000B9F0FBAF083BB6708EF2FF06477CCCF5E6 +:1095C000FA2B0227E9E2D159E4EB18C1D7418A1FEF +:1095D0006DEB0ECEB84EAD46FDA87EF3B16795ECAF +:1095E0008B7108FD5716F999FEB4001FD7B0ED59DD +:1095F00025E9E2719FFF22F293EA1B99384EA3F905 +:10960000BE3AE23894EB21A6C7221E406FCAEE1381 +:109610002D852176AE5C313F3C97F6B3ECEAC74826 +:10962000ED407DEEC3876FD2E37CB6F99F92861141 +:10963000F0F748497041033B67E0F7672E87B3F8BE +:109640009735C699072CA2EF9BE4E0E33BA83E9C2C +:10965000F787149AF7B2F3F8B93E415398D52941E8 +:109660009603DDC8E78F8AC221468F01BA9641FA78 +:10967000C9E520F90FFD4942BA8FC910A3737433AD +:10968000D5C3CE5112FDD891E2C58D0DEC9C4CF3A3 +:10969000D0FCCDFAA1B725DC7FB3EA637C80CDEEA8 +:1096A000DF0EE30EC309EBBE5050BA700DE703E9BD +:1096B0004BCED07F76925E3D44F565944FFBCCFD5A +:1096C000AC7F06D4D374EED59E7A0AC223C40F9E13 +:1096D000F32EE77D97E1FA3BAF3B8EA50DD1BF3F5F +:1096E0005F70D1FE92780D1ABEDEC0F3F1B185DC59 +:1096F0001EC6A2221EB7FB09E07549869F12D52B14 +:109700009DEFBD45E65DC41FC81AAE37FE84F6372F +:109710009ABFFFB4DB0EAA43BA2FF1DE136E21BB52 +:10972000E8904A591DECA1DCA93BDA6CF2B3F6FFD4 +:109730005003C614A41F4A9F4A75888772665DB29B +:109740001EE1ED0939EE035EF45E86F0487161B406 +:1097500081E3426A51D89846F5049433D507BE3365 +:109760005F677478023C6EF7F87BD83DCCDF89FBED +:10977000431427517B52DC1FB2F4E5AA810758FD40 +:10978000ED9C89FEAB90D5E39E19223DDDE4D5DA50 +:10979000D3A91EF725F67EA3A26ACC5F41E43AAABC +:1097A000373E649D4B41E45AD677879B0817BCB07F +:1097B00072ACFD1CF1A5061EC78ED1FEF517272839 +:1097C0005016F50A4ADB795D294B63FE48F4C778E9 +:1097D00034F31ECA573279BD113484F9B91CFFE93C +:1097E000AF6BC6534D94779AD91E765EE002E5249E +:1097F000F9B74EE225B246F7858100A56B89CCFC0E +:109800003BBB9049F5CB9449CC7F75E4CC62F2D157 +:10981000C150C9CEFE59AB1D0B97882FBB689F184E +:10982000276E463E523B9ECE4F6CE76FDD7915ECBE +:109830009CCF8D8648F6E2BAFA0B6CBD2D39FCFE42 +:10984000D7969C1DAA8CCFCF09B96D5EA25445470F +:1098500058CF7A8F7994CAEE59F92F4DD7A3822E1B +:10986000AB9F56153648DEE3B3A355B4FEF8ABC73D +:1098700049BCAE11F4D37D8837C4FC5B5278FD3A05 +:10988000AD426F53884FB96B66136FD50A4D3AE9F5 +:10989000A3F33D5D7A97EA39B93CDE1CEF0E329CAA +:1098A0001B3FE12AD9B4D5393FB6E6CB1E397F3903 +:1098B000DE208BFDEEACA2EFCD3C197247A8931EC3 +:1098C00013FAD1EE09FC88F16DA90CB4CE96097398 +:1098D000F328EEDF3285E3EFF163EF3CDB964FFADE +:1098E0007A27FC92F4355D61F245F7F26819ED4391 +:1098F0005334FBBD40ABB5F4F4CB427EEEDC174DE8 +:109900007EFE0A01C2A34AD7608CEA885D861AA14E +:10991000BA5DE2F7BE7CE7B9DC184D61797217F4E5 +:1099200069744E9B5A98EC786F7DB7AA213CAED1F2 +:10993000E6BFC7E487591E6DC9D79D7969F926D25C +:10994000FD90849E05F39487D2B89DE1BE3F8816B2 +:10995000923E671474DBD62D6DE47CBFDCFC89FB82 +:109960001A6D1FDF4EA8F7CD107E2171BEBE462EA8 +:10997000C78EBD8F3AE29D8E5C1EEFACB9BEC7713B +:109980002E53DCC8F5A74BDC7BEA42BD7C71043D5D +:109990006A10E3465BF79CD0B3B89E7AB8FE647356 +:1099A000BD39DDF0A1A8C3F5F1B81FC9A278A4AAFA +:1099B00038BC88E4E325BF45E798590117978FC560 +:1099C000570F8B2BFF867CE4F7A41A27AEE3F593A1 +:1099D0003EA07CAC03F59270CA9DF9228BEBCFA11F +:1099E0005E92DF567A868C8F0B995F8E7C8D07A4F2 +:1099F000F0E7B9C2AFEAF4FC7EE3E37496C744C66D +:109A0000FB2F4F971756F3F9453E38DAFE3C591EA7 +:109A1000475DE42FAD23DFDDE8AC23832B6B5339A7 +:109A2000D99F5F8EBA2E716E327CCE3BF9D2757D96 +:109A3000CB4E467B3F267540A67B838F37967D6B4A +:109A40007311F917AE17AF35AE5947F77D2EC69390 +:109A50001E669F9F0047983E9D23DD4AFBBFEB8714 +:109A6000A507E7DEBC82E901F287CB25085117C3C1 +:109A70006F839D2B4BA6CCE33C03FF65882B362CD4 +:109A8000C8C42719EC688FE94122FF27923588F373 +:109A90006EA277D27A9EF766D18D438CC7AFA4842D +:109AA0008E95E8C2F77D8CF3655C7B4CA23AF4EEB0 +:109AB0008BE47669B95BF24ADCCFB75B5589F4BEBB +:109AC000EB811E20DC4A8ADDC1EEDB78F6F400DD96 +:109AD0001F4DA21B441447EF01765FBCDDF7077EE4 +:109AE0004FC33F75875D3F66363AF3A1E7853CDAA1 +:109AF0007DB58CAEE7FDFC7CE979E574F2B8FCD16C +:109B0000F16266233F9708BC225F520E01D9F8210B +:109B1000E1834AF138BE6CCEF78C18878F490E87E7 +:109B200047FABD4AA95C36D0386724FD427991BF17 +:109B3000D9C3E5F069E9D9D6469DEDEBF276FF7D14 +:109B400060F744E81C20108FCB12E7BB5C9C66C515 +:109B50008FC3E7B79B14682F64F1228B1F379A5E7F +:109B6000CD8BADAFE00B4F537F09C68F14A7DEEB53 +:109B7000E2E7B7D6B9AEB55E8ABC4F9D8DFBBBF2AE +:109B8000EDFBD76D46BC7998B278B4D35D6FDDBF7D +:109B90008EEED3792876C479EA677BA394AF5971A6 +:109BA0005DFF8C892CAEB3E679BDE0869523E53761 +:109BB0003F58CEFD53A5CB27B3FA44BE8B9F6FE72A +:109BC000DF2A9B384F4F9E8BDDC78ADFDF42EDC116 +:109BD000F6F53C17E77F16BF37A4156CD08894E9DB +:109BE00010E4E7004BD09FA4016788ED5CFB392BA4 +:109BF0003E463A4F67C4F372E4A731D6F6FBA0EEB7 +:109C00003D07D93AED81EFF8E89ED6EB7907FA25C2 +:109C1000924FC0AB834D3FFA53789C75A0E035E579 +:109C2000A42F7E2FECE9E5BC8EBC44EF5348896B32 +:109C3000F24B75B2076594FC61C372913F88F7D609 +:109C4000B9BDF57EAF78DF39CA796D49538AF31C07 +:109C50003DE1DCFC96FA96251AF2F026C16FCFF0B2 +:109C6000F979B452C3F11D09E7E6D639BC55674C02 +:109C70005CEFFFFBF9B9C5078B8F565DA9C33FCEDB +:109C8000712EEEC9E371CCD9F9E1E6E554FFA57A6E +:109C900009CDE7D7595D5F15F52AFA1DD848389EDA +:109CA000511C6E596EC357FA1D18BB5FB1779FA345 +:109CB0008E74B8C02BE2B9BE2C7B3C67E9D5EB2291 +:109CC0009E7B7D9478EEC762DC302EFA64818B7DBA +:109CD0002BAC3A24BBF76518BA36375E4781262D80 +:109CE00076373DBF3B3540B8D521F21FBF121C6B04 +:109CF000FF1D99D576ECE77E06FCB6F3F1A9B4EE2C +:109D0000CA11C70F7F27E6ED14F8DB1EB8F513E183 +:109D1000EF4745E1C796CFA1BAB2137F93F46447EA +:109D2000FC748CEC6604FE1F295EFC38F1DF071121 +:109D3000969F34E78146712ACCD73AE81CB41DE3DC +:109D40003A565FBE4C1D68411330BBEB4F8B2A74F3 +:109D50002FB43C6F9F42BFDF5C9283F890E2C00754 +:109D6000E6EFA6BDB5771DC5C70F3FB59FE199B911 +:109D7000598A529ED6ACF6AFE0F551799637EBE2B0 +:109D8000750B9BB81C616B90F1877497E16082DC66 +:109D9000A4C07236EF531868B832699FE197689F84 +:109DA000B091E3677B00F4AF31FC8C8CF83B3879E1 +:109DB00039DFCF6878B4A378E9F789EF37D138BABB +:109DC00067E2E6F3D29E5C25C44FDE6FCEE2717F80 +:109DD000227DCDEA0AF61EB3417D62E608FCDDAACB +:109DE0009974BE6BE95DFBC68828468C4CE71A2D3A +:109DF000E0267EA8544BCCA4FB767DACEEB90406DD +:109E0000587B239CDE3A5562F5CF63447752555B0D +:109E10006C12D2B1E6C9733E7EFEC6EB996ABCFEF7 +:109E2000F90B1AA78AFAA7AAF37B5FFB1BD7CA9D77 +:109E3000642FE8B7A8CED04F7E0AFB678A7CCC4F50 +:109E40008DA6A7E497E8F7617D5417C2F6DFC4EF4B +:109E5000CA3AA92E846D81325446F417BC4C35168B +:109E60008C8BFA9CBF3F2C88397F7F985C1CFE90BE +:109E7000E8BBF6E5718EE749FA24C777474A82675F +:109E800096DBEAB57F87F63FAE69C25F65FF194D85 +:109E9000733E3DFBDF96317C0FDD47F99367B621BA +:109EA0006FC57DD45FEB62F1D3E17C11D704BC4C6C +:109EB0005FE8BA29E3BF88A7DCA81E63C7C5E3290A +:109EC000EFF9698EFB5389ADD71D61F590C4E7F2B8 +:109ED000F26CC7EF33BDE7AF62F3FC40D8EBA4925E +:109EE000705113AB7BC373D288BF4B77C69D969DD1 +:109EF000DD596CCC277E5B766FC5A367FA8ED15196 +:109F0000DAE8F9ACBA21BFC2B68F8EA408BBB74A53 +:109F1000BF37A0791F14F73B4119901B53E2F3A6FA +:109F2000128FD8A1DE00D3DF945831BBDFEACA0F0D +:109F30001894C7A41406C07E2EFFA5396541A22F30 +:109F4000451900E24B8AF53BA4A242368F35AEA6F6 +:109F50004976F0C75ACFEAFF5AE44F1E5ADF767FA0 +:109F6000F39DFBC14379473896C47E971FBE3FDB04 +:109F700043F7936EA1BC879D5314B2F15293773F80 +:109F8000C9F5B8398DFD5E03DB54AA471EEF14F7FF +:109F9000E1F1B98B19599B830EABB5F2ACE39DFC93 +:109FA0001CFE79D3E5C8B346E373627EE54D8E0CA3 +:109FB000510A7ACFDB0BD7D3EFE3BC220FFFE2DBF2 +:109FC0004DCF51BE35D908DF47FC7A07E1869D9316 +:109FD0004C02764ED2FCE003336EC175BF2BF4DA2F +:109FE0006F9D8F8C722E628D1BC617BF852FB08A16 +:109FF000F161147C91CCDB196E3F850AE82A8EC78B +:10A00000D77E91679C2B52F9F96713E8F6FA40E77F +:10A01000FEC51C67345B9DE413E0CC8356FE4A38D2 +:10A02000836D47E706FEBB90CBE3CCD3C427354B0B +:10A0300076E08AE273E24C69B11125BBBA04DEEC2A +:10A04000FC34F006FCE90E7D4E6C2D7D463BFFAEE8 +:10A05000B073539A7BB19D23BD2FD1BE208BCBC94A +:10A060003A5783328DD99B64BEC6CED1E2EB87814D +:10A07000FD4EFE13AEFF49C7FD2FDFF77653304686 +:10A0800000000000000000001F8B0800000000001E +:10A09000000B53E66760F8518FC0B57CA87C42F88E +:10A0A0003189EAD1F1432606063E66CACC00E12298 +:10A0B0005E547E283B03830D3703C3263606861C79 +:10A0C00020B606E2EB3C08F979EC103A511021B6C3 +:10A0D000979F72778CE2A18D2F8830305C1245F00B +:10A0E00053C550E52F8A20D8F15294D95500D40F8A +:10A0F00000B833811680030000000000000000005B +:10A100001F8B080000000000000BE57D0F7C54D57C +:10A1100095F07D6FDEBC793399C9BC84499884047D +:10A120005E428060A34E2060B0515E42B4B11F5BBE +:10A13000474437B6B61D902252FF444A2D5BFFE4D8 +:10A1400041FE104290604151FC332020566DA3AB7C +:10A15000AD5BB51DD08FD2FEECB7D4CF75D16237D1 +:10A16000B6AEBADD6AA32D85DDA565CF39F7BECCC5 +:10A170007B2F9310FFF4FBBEDD0F7FEDE5CEBDEF2F +:10A18000DE73CFBF7BCEB9E75E02F26C56399FB16A +:10A1900053F807CA3541C6D89C6CF9F0DF7CEBF365 +:10A1A0002BEB18B376AA893DF0D39E6D7BB75C1874 +:10A1B000636CEFADF22C1FD40FECB949D6A1BEBB36 +:10A1C000AF7257A082B11626315604FD22E64FAB7E +:10A1D000E1776B8BCCF618D03F920A256BA0DFF6A7 +:10A1E000CA280B3356C354EAD7B5B3FBB5008C3F2E +:10A1F000A59F1933E0FBAACC45B21161AC74506144 +:10A200006C4216AEBDED99E36FFA19DBD57E88CAB4 +:10A21000294A4A0EC2776C3BAB45B8A6686D7210EE +:10A22000E663F7421DE69B1236787B8FA8EB095E4A +:10A23000EFE3FD1F6E3F7CFCCD69F01766316D2E9C +:10A24000B4E35FA1DF8CED304F35A33FA7E07F3350 +:10A25000FBFBE52500F7D41E9857CBFE7EC6EEC368 +:10A26000AE7E5398F28741BB0EEB7815FF02EB9B55 +:10A27000B29DAFE38C13B0DED923D76BAFCB5EF7C3 +:10A280007FB5F51D78FD9CCF5E03F3EE66D164804B +:10A29000F860D16B0CF9E35E980D5821907A84F840 +:10A2A00065778F9CE885F94BAF593D6532D41F48DF +:10A2B000ABBA0FDA6768A9D04C5CD776E013286692 +:10A2C00084993900FC31438112E05A23F8E9EFB058 +:10A2D0009C83E8E0A5C1ACD770BE876E61466F0570 +:10A2E000E275F94F67021C552FFBD80C8437F36FCA +:10A2F00012E2D3E61FBBACDCAEB2CC187C55A5A4F1 +:10A300000E041C78AFD2DA0E041C78AF0A1BBC5DB9 +:10A31000E0BD4A4FF0BA07EFF6F8336F01FC86470D +:10A32000E2DD8B6F2F9DC68B7F8399A1E499B08E60 +:10A33000FE4551102AC0C3854D83E191EB463EC4D2 +:10A3400075EFBB75484A86B3EBB6F1F45F77FD9CB9 +:10A350000F1E443E90381FA0DE391D1F940E021FB1 +:10A36000CCFEEFC4071F4D1E50CFFE779007EC8F39 +:10A3700078F0AECF2EB7B41BC7AA008EDE7676ACCF +:10A380000AD6757BBB46654FBB4E655F7B9CCA2D6D +:10A39000A0AE517F6D39C2D2168C9B570DFD1D703A +:10A3A00045EBE13B071C414377D52389B8AB7F617F +:10A3B000B3E1AA07AC108DBFF1104B239D36B73324 +:10A3C000660618DBD4AE51B9EACC031AEE8F7D894C +:10A3D0005FB562BFB93355C387EBB3CCFF1D2F66A2 +:10A3E0006C1E1F8AE5E7F7772C85F6BE121F5B9778 +:10A3F00080F5FCD9F05D05F5DE79017D9D0EED015E +:10A40000A36329D0A1AF514B62FBACC4F2EBD85986 +:10A410008C85D77CA1E04D07BDFBFCAC15F52C531A +:10A4200060F1D0BF36A3EF44B824F6E61109C7AFF8 +:10A430002AAE40B99A2CC9A47737D5CA0B70DEDA98 +:10A440005AD560300F7B53F915D2A11AFE3B55093E +:10A45000F0325EB7E9921F187C270AE3F642FF75D7 +:10A46000308EDE00ED2E3A033A80CE0DE2EF89EA1F +:10A47000830BAAA0FFEF2496D0EB016EE6E80FE372 +:10A48000452633DF55D0BE41AC2BF1827BBC86AA7A +:10A49000CBBF2AC13AD990030E80AB0EE646F87FB7 +:10A4A0003A4F3593889717583A208D84BF4F3972A9 +:10A4B00004F9B716F08EF4F7AEC70BAF773D91C92C +:10A4C000990555809F1E890D211DBCF03754AB4B5B +:10A4D0006484CF0937CCDB6000DCF923E1B6F97A7C +:10A4E00067BBCE4C10E4FDEDD5C427035037B0FE5A +:10A4F000275F2BEE97067605B81F3862EC427A0D7F +:10A50000F38BC4E56795C4F7CD037EDECFFA094B24 +:10A51000EFC136367404F966EFDDC5B3707FAEE87F +:10A520004CFA52B83F489C2F56DD2AFF0FECBFD79C +:10A530009225DC7A137EE643FD9A66C6FB16AC6F65 +:10A54000EFF6C22BB17DEEADC0A7D0DE980FEDD8EF +:10A55000BF51FB80F86EFB9DCF5F0DF5FF057C2A98 +:10A56000013D13278A9901FCB7FFCFFA6A82F76E83 +:10A57000CE1715822F67DDA2BE21031E76FA8D0E3F +:10A58000B42BAC2BF2D89E442EFE8C1D95709E5B96 +:10A59000387F7E0DF9B3284B4F13FE43FCFDE81EB8 +:10A5A00099E6B7F9D54BCFC680FE5BE4CFBDD77037 +:10A5B000382A5F76B4E7E2CFED07697DA3F1E7FCC7 +:10A5C00029AC6339E0670FF2A79E833FB78E4DE752 +:10A5D0006CE99E9729FF93E6AD852F7B011F3FF520 +:10A5E0001FFF57D4C37B57A886938FED75EF550E89 +:10A5F000752CC7FE8D9A692546AEDBBBCE1CEB28B9 +:10A60000453B61049F5AE383BFB73DCD7E3D0DF5C9 +:10A610006E5CE83783CA8DC8BFC0B704F3BC917ABB +:10A62000BA4F662B909FFB426CC513387F595DCEA5 +:10A630007E76C9D85AE2EB2DC8D7A5048EC9802EE4 +:10A640008508DBB954CF84AA607EFF70DD64653075 +:10A65000BE345C878D06F454F5F0F7561EF4DF1215 +:10A66000E4F55FAE8D375A65D9FA89B5D146AB614D +:10A6700064FB26FFA0250371FE76EDAB664DD03559 +:10A68000BE89E33BE1D31A468EB729C8FB87E53C78 +:10A690001A6FA3D41F675341CF490371E4DB1F48EE +:10A6A000CC6CAEC771797DDEC4D7AD17E665E7F92E +:10A6B00085F4BA6581BCCE9192CF4A80FFF9CD4333 +:10A6C000715689F31E6E45A67911BF8779F25BF842 +:10A6D000BC07A4B75887032FAFACFD8365357074F2 +:10A6E000848B05A8387619305909E227DD887E6009 +:10A6F0001E636D12CC2FD7401D9AA6985A5B00EAB4 +:10A70000A5B7286FB9F57A961F728D5758CDBFD768 +:10A71000ECF18C718E27BE1F9D1F783FC0C3EB12DA +:10A72000F0C5FCBAA156C4C3B342FF375D58FFF76A +:10A730000D3044F0B03F01ECC882D5BA84FB6C21E7 +:10A74000EEFBB5F8BDBE7F3EEECF15ACADB780B128 +:10A75000272583BE634A7F3C19C1FDBC94A51D70AB +:10A76000D9E37ED27803F88F11FC828E503F4E746D +:10A770001D653D1AAE0740D5703D758EF528B01E9B +:10A78000DC2F713DB5593C79D7B12968B5A2BC37EA +:10A79000CDADBF98D178D3649251E530B757FC86E0 +:10A7A0008CDF57CB7C1FB1F1A2551FCE20BEF20D1E +:10A7B000D686F3E5D7B9C7B5C7037C338C0F04AB96 +:10A7C0000F931ECF47F80A68FC4C4E7C33C0F799B4 +:10A7D00023C7FBBD8067358061E1F70CBEAFCB7E40 +:10A7E0006F7F678F63AF77C4382F4E90EC717C0E0C +:10A7F000BA7BF124C986CBAEF4E2ED74F0D8DF7DEC +:10A8000054784EB72E2F3CE3950FE3C44C66CECE62 +:10A81000EAE175DB545AC7E64EB08BD02E3D740189 +:10A82000F9936979E810F297F5929FE23869D4CBF1 +:10A83000682F0ABDBC2732145F94C3DFB4F5F2035E +:10A8400060DF5AA0EF37A33D01FD1E857A1A046F21 +:10A85000CA0AC59A0876D0A3038521F407360B3BB4 +:10A86000B4E6F13FACBD1086DE69C6DFF7817C6CD3 +:10A870000EF2DF1F7B525E47BF339DFF1EE1E39D5B +:10A88000F994B2CED9DF9EDFB8456696637FB37F79 +:10A89000AF50D34B300EE585D792B9FDF023B15FB1 +:10A8A000ED11FB5545485F8A78293D5F3576015E9D +:10A8B0007676BD52BA14E179EAA0BC14E6BF53C85B +:10A8C000C303B8DF812E3DF0942AA3FF6DDCC26480 +:10A8D000C4DF8FFC43920EF45C2D33B34D4353EC35 +:10A8E00092CF33D88F3BE473A5007C37DD4A52FD0D +:10A8F000B1DE46E9C75467A48FB7CB9734A27E9EDA +:10A90000AF0D1D6980F5CD07F9E980A6F9CA90AFB2 +:10A910002D3C3A9D1FFB93D69A86F6F94F761FBEC3 +:10A9200014ED4CB0D49CFC629E047E71E0E547B807 +:10A93000CE19B8DE3895CBE4DCFA6CBEC6F5180C3F +:10A94000D1D601F01A16D76326E8311FD44B07DCA5 +:10A950007A0CE074C1FD49C13B0795E89CEC78A0F6 +:10A960001777C8C8CFD6900FE964825EF1158C8442 +:10A97000BF74B76AF9F2A97CC377D6487837E2BAD0 +:10A98000B9DEDD23CF1939DE5F6A3DF3C3306EECEB +:10A99000E38F6B78C61DAF1E58F0CD1532AE73D75E +:10A9A0002D32C9FDFDAAF1D31928EFAFF8281E57A3 +:10A9B000C98682A877BCDF97F7CF74C50DBC65D375 +:10A9C0004DD52194835DB7F0B8D4FDDF3CA334E5C9 +:10A9D000D013BB84BCEF12F27D54E671BED7643F46 +:10A9E000ADEB9742AEEECFE7F6E048F8D7D9FB04DF +:10A9F000953527C214CFC9D6554F9DC739B2F57CBE +:10AA000051E778B09A98A4A0BF51CA121DA0E70AD6 +:10AA10009ADB580AE00A9431CB7736F000CA1CDF83 +:10AA20001FD23515B8ADC2DE47FBEAE1C7B0EE87ED +:10AA300036DD5157E38CC563D93A8CC30C47BBBD97 +:10AA40008E0D15FDF1B0431F754DBB93FCCF90C12A +:10AA5000E3C35AE6EE56F4E3B5DD6A024D44CDB0E9 +:10AA6000580AEC9090926032C661C2AC02E914D2EE +:10AA70004C2663DC45873AC01F0A27793D26DAF564 +:10AA800014EF1FE7F580D1C61A61DE0DC27F7C7E10 +:10AA9000DA72E2830D068FE36F30664565F83DE8B4 +:10AAA000E374D928A534DF1CF4932D0DF901FA4D78 +:10AAB000C438C59B426E0023FF8EFE009E099CC2D7 +:10AAC000FF6361FDAD4F097EF465F1DC8BF1A56993 +:10AAD00018773944651FC687FC88FF7486FCD27CD2 +:10AAE0008E7F30DBB3F120FAFE5036FE43F5C3AE65 +:10AAF0007A9E6E99E80F2A3196F0C1F741336322AE +:10AB00003DD5325E473A06A2593A6E433A4A593A1F +:10AB10006E43BA48593ADA759B8E76DDA6A35DB7C7 +:10AB2000E9B6AD2259E2A2E36597BFEAA6E315575D +:10AB30007CE52F48C76D48C71CFBDAAB0AA7DFF3DB +:10AB40007B80BE18F7689629EEF170F93AAA5B97F8 +:10AB5000C9E93D15D9739CFE06AE07FA9A0FB44CAD +:10AB600083F6DF1FF253FCE07A65028DD3DF504994 +:10AB7000DF7D6D9EBC9739F8B807E35833909E3C53 +:10AB80003E61FFFE7CEDF4E8A003AE4DE8DF417DC1 +:10AB900093B0239AE69ED0B07D733DD713E582DF54 +:10ABA000FA613C8C6FF4B66B54DE0EF5148CBB1559 +:10ABB000EA58EE68D7A97C10F62D2CEF84F60C9499 +:10ABC000F7413B969B4DB9250DE3DDD10E261AF0DA +:10ABD000D973ED1A950FB5EBBFC750C2F6F638D54D +:10ABE000FBDA0DAAFFA0BD9AEADF694F50F9EDF636 +:10ABF0007A2AE7CB8BAEF6117F0F1D9A8A7EFD3540 +:10AC000055B37AA1169D2927511F337DE8F082BAEA +:10AC1000ECEFF63AE7CB4DD7E277DB4CA585FA2986 +:10AC2000C98BA6E5EE7723F62B9AA924115E164B65 +:10AC30005E72412C67BF9B50FEEE6DE6EB02860A0A +:10AC4000CEC83DDECD385ED99902BE78A6E033B9D4 +:10AC5000C7B370BCDDCD02BEB049E73039FA7561CB +:10AC6000BFAA33057C6566E145B9E7EDC57E5AE1CB +:10AC7000D0128A1BB0410B65A968B15E88FDB4098A +:10AC80004337F2DFCDFDF87B7E3DFF3D88FD715CF3 +:10AC900036D088F18C6883F81DFBD3EF897528477F +:10ACA000BA29C651F9F83FBC8CCB7141B3BE4B03F6 +:10ACB000967946D48B161B3BB1AE05F87CE79F3BDB +:10ACC000C82490B3827A5D92A0FE69A8CB502FAAC7 +:10ACD0004F4AA4DF543EFF0FCF1F6212E8B5820631 +:10ACE000E807F567A02E43BDA801FA413D18E0F042 +:10ACF0009CBF8049D82F2DECA54F2FD069DFD09B6A +:10AD00000D09D555AFB0A78A4C3E7EC1427D2DEAD4 +:10AD10009845B0FD2C04394ADFC8C8BE7BA2E37554 +:10AD2000F2FB0BFEC0C848D195C4010BEC3DAD94BD +:10AD3000917CB11033F680DDF8D07DDD71B48FB534 +:10AD400049AC0DE566C6FD3DD5580F96B214EAED47 +:10AD500087EEBF278EE777416CC7B8FA03F75663D3 +:10AD6000FDF72F2E9898CAA10F820618A20EBBA736 +:10AD7000C272DB0D45754909EDE8C9082FAEE746FB +:10AD80000EDFA18E77282E51F40EAFFFD15776C07B +:10AD900002DB489B9C664E78BFF37702DE291C9E3F +:10ADA000B37E20E09D0CF0023CDFF98180770A5FE2 +:10ADB000CF59CF08781573A23E0E78F3AADDF0FEC6 +:10ADC0007FA0D709DFAF76DEBF16E33BDB663245F7 +:10ADD000027B645B90FB3FBF57D216F98D41A3D233 +:10ADE00072F89B3F177A549BCCF944DBA75A13CED9 +:10ADF0001ADD5EB3E9A5EDD3DEC07E36BD82FB422F +:10AE0000D684FCD1BFB3E918DC177EC339FE11DC50 +:10AE1000748B4E4FBFCD6BF97A6C3FCFD0588F3EBD +:10AE20002B3BCE33F63A4A393CDB97B8E521BED40A +:10AE30002D0FDB9772FE7AC69E5FC845FC2ACE674F +:10AE40007D88BF68F6DC03F0678E0B7FCF8E137FA3 +:10AE5000CF7AF0F7EC38F1F7EC47C3DF16B19E2D4F +:10AE600091617E203BEAB4EB79541D13AEE1F53CD1 +:10AE70000AEBC977ACE7D1D09878185ECFA3E13759 +:10AE80009CE38F773DFD6BF97AFAFD7C3D86323687 +:10AE90003FECDBE9E687EA5D6E7ED8B72B373F549F +:10AEA0003FC8F9E17631DFED11C17F6198AF70F4F1 +:10AEB000F9EEFE8A7BBE92E5EEF9EE5E9E7BBE92D7 +:10AEC000ABF97C0FBF71A3FC04DA618D72DA82A149 +:10AED000FBA0CF61DCE71483ECE9FDB507E3781E46 +:10AEE000737B5988E293076AE74E44FBE876731652 +:10AEF000E5CDF489F34B1B3EB0A7FF782D9D636A27 +:10AF00002EBBCB5BF608BBAB47D85DDE76DBEEEA4B +:10AF1000AB96C91EF0B6BFA848220E9A2C41FB1F63 +:10AF2000CF456B72C4576C786C383F2E5C07141B8E +:10AF3000AE03FD4D09C06FE7C2751AE8DD4D352F30 +:10AF40001DC6FA0FAD85EB9A2BFEEFC3F5A872B9BB +:10AF50000BAE87D9E5FF4FC0F5A3CE2FBBE0DA6873 +:10AF60007D795DB3343A5CDBC4B9DF68FCF11A4B20 +:10AF7000FD44013E585F0C7C1BCEF26D39FA64F043 +:10AF80007B46D15D7C1246BB368CF3BBF9AA5BE1F4 +:10AF9000F136BB5CAF18F45DDE1C85F67176999ACC +:10AFA0009E26E05C04FBE963386E5176DC7B3CF363 +:10AFB000D8FE27BAA3A7A6623DB7FF193891C78C60 +:10AFC000D9D07A2248A5779DEB057EFB6A793CB4FF +:10AFD000A77CFA2E3C7FEFBB35417A35AFD998B5C7 +:10AFE000CEC0F1787CB3AB76AF89718E90C85752E2 +:10AFF000745D42390F69BC9E97B982FCD25033AB65 +:10B000000D1AD9790AAAF54693F0D7165FE4C8CB92 +:10B01000582FF00F766F06E75F7F815EEBB4B38346 +:10B020007E8EAFB08FEB95BE4A2B5EE8C06BCFAD86 +:10B030006986766F574537C1A5293C9FCA864BD391 +:10B04000783D8470619C1FE1728C5F60005C35A369 +:10B05000C3E5C5978D07EFF95FD9091F9DF34E3AF8 +:10B060002151592AF05E8278877AFCC4042A279EEF +:10B0700028A0DF8B4F4CA27AD18912AAC74E4CA5CB +:10B08000FA84131554E69FF8149591133305FD6661 +:10B09000539977A296CAD0894F53BBED5F6A27E6D2 +:10B0A00051FDF6799C8EFDE7011D2507DDE6CD25D6 +:10B0B0007A069A596206D025A00C1EA1BC9616B03D +:10B0C00063A52CBE02025F85025F012FBECA6C7CA5 +:10B0D0000DC51739E26476BCDBA6E366A4A383FE44 +:10B0E0004D828EF93EBE8FDC5EC94A0A9D7666A30C +:10B0F0004A7666A085DB99010F1D3F2E5CA3D171B6 +:10B10000529B8C36D8B03E28591172D527A60A5DBD +:10B11000F5A2D6526638F35FA0AD01F6CF09C94A51 +:10B12000F7EFF567B8EA76FC322F31CB359E567DC6 +:10B13000AEA71FE7A742911F10441A96805F6FE3E6 +:10B140001793451C71CE2FFA65575C7458EEF1AF1A +:10B15000686F2719C53BC00F95D601DE8A13AAD1A7 +:10B160008B792CCA05D22EF41F9F0D303C5F975867 +:10B17000B37400FA6F31B524D62D7FE5F0B97CFFAA +:10B180005C4AE964783ECB7C7DAD98EF51FCD70AF0 +:10B19000A33813665C40FDD81ACC7941F86239CFE8 +:10B1A000AF8B99CA329AD057B0A6D8625ECFAE1B89 +:10B1B000EA1C0F6FA2FE0AB02BA2C91CF95BE31EAA +:10B1C0006FA1A3EE38AFF7C23B625C50C7930A3F52 +:10B1D000FCF89BFC9118E9DF73D839A47F47C18341 +:10B1E000974EE3ED5781FA65369E6349544E11FA46 +:10B1F00065B2D0EBE542BF94A17E213D34897E2F1C +:10B2000015FAA504F5CB6CD44315544651BFCC4672 +:10B210003DC3F58B2AF82C827A6602EA9B5AAE4F20 +:10B22000847E6171CE7779A87748FFCCA312F36949 +:10B23000506EEFA8302A7B9DFAE6BCB9A407B2FA9B +:10B2400026B73C6B62BF185D9E8D12A73CDFE1D133 +:10B25000333D9EFDE225A167A262BFD87CDE1FAB15 +:10B26000D1EFBCE3A262D9E788DF755D349DEB9B2B +:10B27000E4D8FA26765A7D63B9F68D1E7B3F8BD7CC +:10B280009DE63C82E369F379DF237E54557EEEA28E +:10B290009F7FED9107512F9CDFFDCEF380B7CBFC54 +:10B2A000A957FD688FCFFF261E4EB01DD7F7C631B8 +:10B2B000CEB1F9BC3BE9DC5B53F9F969CFF97D43C9 +:10B2C000F81DF41FF473B9BD4245B899D686F2DC77 +:10B2D000F31596C67320A3D3ADEF26DF1272E99F54 +:10B2E000B2D585AE7AE9B5A5AEFE980AD3308BF11A +:10B2F0006002F06D7C995BEFE5379CE1EA1FAE736D +:10B30000EB3BFB3C2254E3D17BF1F1C94154C841F2 +:10B31000BE90838890039B7FBD76CE260FFF82C5AB +:10B3200046FCDA2BF8D517D6A5A53523E9D2557BEF +:10B3300093897EC847E7DBB46B1FEA3D0DDFCE542F +:10B34000B91E1FB6736A0F12DFF6CEF4F0EDCCBD56 +:10B35000473E997DF2E3F16DFF9CE5C655C09FFA2B +:10B36000AC6BE3C8773D73BA8DAB38FF9DAD029DE2 +:10B370007A66F5251E24EAB631D4E3367D23827F32 +:10B38000F21B640F9F8472EE83E3E58B8B5583E0A1 +:10B39000B29AB8DD6A9DC51278BE18D2FB4D099AE3 +:10B3A0008C9735B28BBA8F4A9487DA5772208EF118 +:10B3B000A76386AA635CBFAF9CF13CC12FF2FD324C +:10B3C0005E959270BF2B626D672F857A773B70CE4A +:10B3D0000C5857856A62BFBB5E8F3C8874395EC269 +:10B3E000FA51AEDECE4B5DAC3AF661A974450AFB6C +:10B3F0007DE35712E5AB05ABF8B95A1EE23886F388 +:10B40000F3B85DA89AC7EDFA4A781C0EFA51DCCE63 +:10B41000AEDBE3F59564E261871DD3557B90F84080 +:10B420002B033EC0785EE66F18E63B07CADA281E9B +:10B43000A7290319A43FABE1F1374D4B67905F5942 +:10B44000358FB705CBFA29DED627CEC37C61936151 +:10B45000FF708D5E8BFB3AC60FC98EAFD277E23A92 +:10B46000E7AB5CAF7E21645EA392FD5BA6BF952730 +:10B47000E8E5F037AC2646F92056939AEEC07341C2 +:10B4800019B00B78EC963219C4F31742A9AFE1F763 +:10B49000797ADAA4ED22DCCFD09F99CE38FE574DD1 +:10B4A00093D3289777F9CD9B908F3680BF8574DA38 +:10B4B00070C8CF307EB0C1905B28EE6BE4111E5790 +:10B4C0004D2BDCD9EBC0D3D7851C9DF09BB7E13C5D +:10B4D000F0FD5DCCF53D6BC965D7DF2AD6D72FCE01 +:10B4E00095FA1B97A7D7A23F525E3D0BF1A137AD4E +:10B4F000D8BE04EB936BE81E50BF2AE5CCBF06FE16 +:10B50000DF8C7007CA2C3A4F05BF82D6D70F7A9AC4 +:10B51000EE73083E0D8553261A17FE5882E139F165 +:10B520008669D3A3B9E2D776A9AE79B4008FA47C9B +:10B5300061CE47C837B4AE2277FC774311E71B8C46 +:10B540000FEB8EBA3DCE86A27E371F89F3D7D1F995 +:10B55000C8CD379A6672BE12715D5F59C275AEEA88 +:10B5600085FB5B02AFA3F38B90D759FC1C14F8E367 +:10B57000FB88BF61FED0FA497FFC1CF1867E6078B3 +:10B5800080D2CDFCB134C75BB9D05B06E79FF8959C +:10B590008907B91DC2F153BC98D77F8E1BEC1C3AAA +:10B5A000CF6EDA04FDD657C8E9B5C80F15AB8E20AB +:10B5B0005D8F5DA926C4574C015FFF1BE2EFEBCB0B +:10B5C0006F3ADB798E8FE77E1947BCE27805C8BFFA +:10B5D00023EEA7FDB983E49E81DCA31E912AD7CC7C +:10B5E00070DE4F793BAFE9E7B83EA01FD1319C1028 +:10B5F000742CE7E7ECA81F888EE5FCDC1CE9AC3B6B +:10B60000EAC3742CCF7D8E3E3A1D339C8E099B8EEF +:10B610006EFD102A4BBBE8989547B77CFD40C85794 +:10B620009EDFFCCD4791CF7F11DFFF52313F10DF0E +:10B63000E7944F9B7EA11A9EFF0C7F4EFAC00F59D4 +:10B640002F9ADE17E3182FB64673E56B64F70739B8 +:10B650006BA713DF85849F718AEAC6D3637F8FF15E +:10B6600029D4FB9BDA752A8D659F1FB37F9FD8274E +:10B6700002EC0BD42F5C77D844B9D600C726E03350 +:10B6800058A7A77D7C3D2638192C2CD613AE3A6CD2 +:10B69000F5D5D1AF430BE6E1EF7DEFE3BE12AEF39C +:10B6A000F81DBE2BA3A91C7266976B8EFECB841768 +:10B6B0001CFBA81170FB25C7D8519641A7861DCE4B +:10B6C000F4A1BE87F99C797BC37CDDFECE8417F0A4 +:10B6D00028FC50EB987E9806F618E69DD8EB950D61 +:10B6E0008B511CA6BE9F1617AE6299608E75AC4733 +:10B6F000182859E98105999AD3D3B157E075BDA0AF +:10B70000C768FD86C7B5EEEEC88411AE5FD079C7B5 +:10B7100031E07CF4F742A83FA0EED3459E442CC90B +:10B720009C7AD70BA7BDAED1E653C21FAEBF1A1B82 +:10B73000F673859D935B2F1A03F1233E845BE7F735 +:10B74000BC14A5ED81C1189A6D0A5B5B47F58706AD +:10B75000915FAC80BE87F65B68C752D574CC575BEF +:10B760002FF45497C80F5819984AF272575E3EC981 +:10B77000F59AA311CA8B382EF76B1BA1C9175D4828 +:10B780007E85CF57DB86F1B4F927E76B4EFBF5A634 +:10B7900000DFEFD687F979FC7AA54DC3F88DC14C4F +:10B7A0000DF96383CEF31946E59332D98527351613 +:10B7B0001A130FF7610003E0ED1476696730D1EAE0 +:10B7C000CC63EC0D04A97D6580C7E9E79F8CD23975 +:10B7D00072872E937DD713BE43AB007C592FFB1885 +:10B7E0005E0BED512CADF02F005F8C0D3D7F0AE913 +:10B7F00012E6764B20D26465902E126B9B867116F2 +:10B800005DF9ADF3DE80C1DA92C88F9D658ADCEB0D +:10B81000D4E79F30FE86EDE714ABC6F37A85851238 +:10B8200038DF235A6A37E6611AF59F353B018E0FE0 +:10B8300050FE8BD07E48D17E6A7F7751D132E213A1 +:10B840005C17A2184AD2C71F9431D25F81986C0549 +:10B85000729C8BB1329592DCEDF58E0A97D07FD435 +:10B860000472D87882C7C1430946788CB0414AAE89 +:10B870008A2226A762EAB42151B2154B48E44FB0A0 +:10B88000068A77C7829FF4B857D2B892B9859DCA05 +:10B89000FB10E32A83141FFBC4C73D0DBC41762F68 +:10B8A0008D8BD439E5C8EFDB00728F41C00ED8B75D +:10B8B000B00C404FA4E7B11A7E0F6F7D7B9C070947 +:10B8C00095A74CDCBFC3181704BD911706331DFAAA +:10B8D000FDAE511B62711C8FEB2BFB9C21AF9ABDFF +:10B8E00081F7B9F2126EBDA7958D4FAF75154DCF8B +:10B8F00099A731CC3FC0A9158EFD7AB47E7FE9B2FD +:10B9000003F46785E3DC51095766F97A8CF5F9563B +:10B91000A7284E838157E73EA0C8FC3CB523BC5402 +:10B9200023BFE0E4A95368CFF8F81060AF27EB73AA +:10B93000E1A50C0FB31C7EA55FEFBE11EF23F9E369 +:10B94000CB4C673EEF64FC7B11FE7EAD39380E3A7E +:10B95000F4F853E4CF58735802EDBF2D795F626F4E +:10B96000D4E0FEF025B2C7BB8B8A2B0264A788BC4B +:10B97000532D4CF7536D3EDD5F74791CE3235D2539 +:10B9800097C7719FEFF227E3A89F0F157DCF5C82C9 +:10B99000DF9F8CB200F05377BC92FC9AEE93532752 +:10B9A000B6E5585F1EE3FA2284F055707E638E3C44 +:10B9B000C7EEB8AC213C1FD470BDB325EF87A60FEE +:10B9C000EAAAA1B4E1F86A18E685F95BEA064C5CDC +:10B9D0008F9A0AA7F09E89771C7B1EF823613C97FB +:10B9E000EE72DA7227B9DA73C231B29E322BEB9063 +:10B9F0001E2CD19BA3BF5FCBB7F2404EFCD9DF75A5 +:10BA00009CB7EAC533A3FCFC4EA5F887041A01E5F0 +:10BA10002ACBFF69773C5F97B3E33AE2D80AB37A5F +:10BA2000D09E0F627C4F1F89D76E55C4BD14B315CD +:10BA3000F1D72915CEEAAD1BC38E89F790BD190445 +:10BA40003317EF9306E3175A183FEC64AC6D421CB2 +:10BA5000E7E93B8C7C1714766950577EE3E4B3EB3F +:10BA600034B79DD911AE1CD39FC5780A1BC38E5322 +:10BA7000D5448AE7CFB5B5CAB47F9D45F02B65079D +:10BA80008F54C0FCB7697CDF57E2AA85F078F7D9FC +:10BA90003783E66D1AB4AB213E8E77FC63C1A67581 +:10BAA0001AC6D535B343CB15CF088F337ECFCC7CA8 +:10BAB000A998F32FFF93CE20BCBE54D8447D1A4AD8 +:10BAC0002418EEB307EB812BEBA1B9DA7D6F111DC2 +:10BAD000B2DDC84778EE82F7983DF76BFD75B35835 +:10BAE00006BED79786DBA2F5C84FEE7B8D3E4FFD95 +:10BAF0007E2F1DDA9FA67B8936DCF09399CB4F7F92 +:10BB000038D8B43B371E0AC78507FB5E0D53DA04ED +:10BB10005F825DA163DE2AA7F35D623FDA22F6A3AE +:10BB20004D62FFE96C37A81DEF49627D737B82EAA5 +:10BB3000DF6AAFA7F2EE7693CAFBDA5BA8DCD69E8B +:10BB4000A47E6A49A786F6CA8E9281BB25F2DCAD37 +:10BB5000E617E1931D918157F17E09B36EE6757189 +:10BB60000FF160CFD79B2DEC5F3070850C203CF639 +:10BB7000ADE59D789F70C7B48157E99E5A70E50B7B +:10BB80009D00D28E3379FFC19E1EDE5FE469B1B2A3 +:10BB9000C5A7C103D7937F40DA41B9A348C47BC787 +:10BBA000F9DD49A1BF77547CB8F9824ABFC9D79B58 +:10BBB0006E7E19D61BD438FCC51B6E6FC6FC39527D +:10BBC00055E7323665437F27D6617DE2BC3DC92EFD +:10BBD00073EC4F85417E0F6147ED87833B26DECDB9 +:10BBE000D11A0669AE5E2DF53BE4A368CD61865798 +:10BBF000C9C20B0732A41EC7793FE30A7494E764F5 +:10BC0000FBABCB12AC12C7F1FC3E798D497EDB9FBA +:10BC1000349E27B16D7193C6ED5793F2F5FD4191B6 +:10BC20003F010630DA53CA4F7C64F7F882B9FB63F0 +:10BC30003FAB2EDB6F5438F5D3D8B7E35C27539274 +:10BC400014D71A0AB8EFF7BCEEA907C5FB30E3A575 +:10BC5000C77C418F6703BAEBFEE8E39E71273D2A5C +:10BC6000B37A10EDB26B1DFB0BC3F859C8552F6C9E +:10BC70002E74D5F11E9FD30EF2EB6EBB285C73863B +:10BC8000ABBF8EC17E473DB6F05C57FFD2654DAE6F +:10BC9000F6C9AB3FEB6A2F5EBC686CBB6B9CF87E51 +:10BCA000C9B3FE1F7BF033DE71D4353E03CFE52BE5 +:10BCB00014EEF776EB4B291FF518D208F9ABBF96B7 +:10BCC000EC27B09DE9FD286430B4AF55DD247B3E00 +:10BCD00004C28AFC16AC76FB73FEB290AB1E6F35C5 +:10BCE00033F6B89847A1AE51695EDC39705E25CC59 +:10BCF00032413C8C13F639AA5FB42302EC919E4A80 +:10BD0000FE5DC2997FE12D1571BE8DCF24E0BE711D +:10BD1000BAB885779EF8E2E49871216F7F16568C49 +:10BD2000B71C7233FA770A7BCB6147DD84FCECC821 +:10BD3000B3318D5564CF84989CE885757694DD6920 +:10BD4000A13D4A7141908F6E2C919E71BE6FB5607E +:10BD50001212DAE565F21B817C5CE7E5198A15C7EA +:10BD6000C7B7AFE5897D6D6228B92188F42F3D14EE +:10BD700077C6DF5495DBF5AC86CB675FED4D145786 +:10BD8000552BF55A64CF0A25A35D126123E4748311 +:10BD9000782F408DF37B57C12AEE7F6B463F95F697 +:10BDA000F981DD6EF31DABE17CDA9D5844F991AA6F +:10BDB00096613AC6D9FAF7339F8BEF526C31F98707 +:10BDC0009CCF36424976AFB02F03863B7E30CC5FA6 +:10BDD00035E393836F8873CAE3B70D298B00BE8B5D +:10BDE00033FFA65402FF1C0CF238D1F1DBB8FDF989 +:10BDF00062FB0997FDF19360313FAFAB7B5F59E088 +:10BE0000B00F2F663C7F0C33EA2E39D3399FC8B769 +:10BE100052869E3F857E40626CFDFC57F1ABE89CEC +:10BE2000C4AEFF2CE1A378D5CF1446E7763F4B5440 +:10BE3000D03B3723D79576D9DD7F155F4EE31CBF06 +:10BE4000754841FBF1C5764DC2FBAEB84E8CAB5F79 +:10BE50009C785FC17CB6D3C1FD7DA18F87FD2E315B +:10BE6000CEF15B41FFC377FECC1514A7F71B49D376 +:10BE7000E4716F82D37F68C22E5CE7FC935FA638C3 +:10BE80009C3D9E3DBE86EB749C73F7C4785CAE0708 +:10BE9000D719C3BA31AE756AB8CED959F886F11C34 +:10BEA000E3F1ACD1F0DCD19E2A50A68DDEEE2BE280 +:10BEB000F7717CFE849E2BEEE6854309C3784EBF66 +:10BEC000F523C2D129F0D009FAF923CD0B78A82E99 +:10BED000266F8EF4F9F14A66B6003EBB27F3F79160 +:10BEE000E08B0F06B56C3C24A07D8EDDE2C8D756F2 +:10BEF000CBA0DD351EEF6FEB331BCF1AEE0340777F +:10BF00005FAC9BFC295F2C44F7757DB1DCEF23A867 +:10BF10009325CAB7F6893C07862F95A05D539D7877 +:10BF200010F9C408F1F7055B822923C4FD120BCF79 +:10BF30002FC15426FFD0CFFA49D7ABA5D5E4978DB2 +:10BF4000E6DFF4B4EF73E1D3C6578FC84F6727AF6E +:10BF500032683F93AB6F44FF66BC7E524779ED91E8 +:10BF600014C61B8AF8BB8AA3AD635E889FD3C13A0F +:10BF7000E685486E4C8A27D8EB08EA49427E47643A +:10BF8000FA98EBE814EBF0D2BBD35EC738E11EEDB4 +:10BF9000DD969EF2B571BCA76A95AB143FF1AEA3D6 +:10BFA000A782E761769627284F60B1A08F1D178280 +:10BFB000F52D0E39CE8F159DEBFDF5E5DD6C1DF2EF +:10BFC0003DAC17EF998F669768DA775C72BB34C423 +:10BFD000ED9BE0305E79DE45A08EDF03BF30945AE2 +:10BFE0008AF80C54751FC6BABDBF78CF213795F3B8 +:10BFF000F364FB1C7253393F3FB6CF21EDBA0D07F6 +:10C00000D4DDE790735EF944CE21378973F811F9D6 +:10C010008EA1DCF98E76BDC443AF7BCA25E1EFB8B3 +:10C02000E973CF356EFAF408BE73D0A727346724BE +:10C030007DEEB946F0DDB2DC7429D11E71D1250B3D +:10C04000278FF31670D1665BC2478EA40CDC97393C +:10C05000BC552D8903F84448401E3C84E7A05BA3EF +:10C06000A9ED387FB825CD2403EFFDF1F9BBC43D20 +:10C070009E0B7C27B55F417D73436514DF65F851E6 +:10C080004872E1C52E77B603ECD3D00FD7E849A9A3 +:10C09000E3AFCF18332ED3D1AE15288EB86747271C +:10C0A000BF2FD9112E5C847AB02B5645F90F66BC90 +:10C0B000E0F32B304E5D66D0BDC801CFFC80BF01E0 +:10C0C000E46F7FAC5F9C2B70BC5699FD26DE7B9B9A +:10C0D000CAFA4D8C93005A13192E3F74EE6EE32763 +:10C0E00058A5AFC5FBA7F0E910CA01E0E307888FA8 +:10C0F000A9669A2939F0B1B9819F4FAC6AE4F9EB8E +:10C10000361C7A9EC83FA829E472A124E2B9ECD675 +:10C110006CDC1CBA92DEE0F1F509552C8DF2B245CB +:10C12000FC7E7328F9538463C2C2B48478BC5B9CE0 +:10C130004F49C0D931F41FABF979F586E921C15FC8 +:10C140003C7FE6E590EC95FF9773F197DA9CC46B22 +:10C1500086EC3BE1D49110D99F877574AC83555C14 +:10C160005E87F3E52DF612F253899DEBC0B8FC16FD +:10C170001A06D90D7F16F408C7744C7360C6CBDB62 +:10C180001BF19E4D17C6A5508F1655362E403FC148 +:10C19000D486307E102C37F737A11C4A6C680FB458 +:10C1A000C76A14B29787E5BA9D8D79EEEA57791C74 +:10C1B000B624B67C21BEBB27156F6F54011F5D5F8F +:10C1C00067F44E4F618B457ABCA43EA0233D831596 +:10C1D0007A23CA63D7452CB116D57182B707C1AD92 +:10C1E000C2763F6CB70AEEB7CAE146D427FE85890E +:10C1F00004F25901CB98987A134BF2FBEF85AD7995 +:10C200000CFBEF0CA7FE8CF8D48C24E1D11FE3F6D5 +:10C2100074BFBF9F21BF051B2C13E1DBD975395BB0 +:10C22000E2E0FF681ED727FE2A66A66BB27CB8053F +:10C23000991CE0BEBDBE30787518FB85887E556CB4 +:10C24000B1E0DF24CD1F44FE65C49FF979D03EB52F +:10C250002A6D52DC23D68F4F69A07CD27947BF9FCD +:10C2600095A09DDEDFA5D2BB1640BF57D85C901FBE +:10C270009989C7EC38FDB498B91BE9F742C8CFF7E4 +:10C280009FEBADCC7D317C8731A01B8897B6B489FC +:10C2900074CC073A9A98F373F4113619E5A8D4C709 +:10C2A000FC71D4D356E675A84F40BCE0BE6FE8FBE6 +:10C2B000C5F0B46F875BF8B912E0AB2A0FF78BFAC1 +:10C2C0007486E77B717C75286DFF742BFA55877C2B +:10C2D00009CBC8CA8D97DE4A18F4448EBC4E901B19 +:10C2E0007AB767B4EFBCF296F567791CD7B60B4006 +:10C2F000CECE41F8149DCBD978F76BFB5E2CE08253 +:10C30000CE0BD4CC4574DEAF1A2C112444A4C8BE85 +:10C310000EC499FEED0A7E2F96F26F636C571EFADB +:10C32000C14AC2A2FD48DC5355B01DF733437F50CC +:10C33000AEE07971D8BF4BE4EF61580AF7C92E918E +:10C34000AF6735B16A7CAFA6AB24E9CEB392C43EE9 +:10C3500074F2D2F8A50E3FA16B94BCA95FE671F907 +:10C36000ED12F94A1B4BF8FD392869FE6347A534E5 +:10C37000DAA71BCB93AD748EF37A1ED955FB8B785D +:10C380007EE2C6A39107038E7DBADB23BF76DEA2D1 +:10C390005DF7E62B565AD7505C6C63DC7E9F73D1F9 +:10C3A0009879271BC4F8DD22DF6078DE51EE5FF458 +:10C3B00009BD8CE7462817BE7092EC0615EC063ACC +:10C3C0005F46BA219D906E0CCF0D6F22BFC65FC62F +:10C3D00074CA7B2DE374003AEE4254F99504B723F6 +:10C3E000C47D6245B4DB74B3E9DC57E4A65B9F27E8 +:10C3F0003FAEAFC89D67D9374CB7E75D74EBABBDB7 +:10C400009CE2007D785FF95CA4D7235D182FAEB461 +:10C41000BE4A71A1AE9227343CCF5759F2EF2B2B75 +:10C42000908E295AA7170F769E06F0FB36D41F6A06 +:10C430005CEC2BC24E0D8873435BEFAF12FAEA79C6 +:10C44000C11FCF8BFAC69A55769E4B1BE6834FC40D +:10C450006C2A00ADB82AB91655CCDB79A907519ED4 +:10C460008EFFF2E6128A3378F2096232BFCF09D02A +:10C47000B4509EEC3F4C95E97D61A04F21CDEBDEA1 +:10C48000DFD51EFEDE8C4D37A083914BDEBA8A9637 +:10C49000737F16E40DEDC161792B1BA69B45F660F9 +:10C4A00019B7FFBCF266D3F92F4D372564BE80F86B +:10C4B000F1F2E37FD57531F64817CF7FFAE2878A2C +:10C4C000EB8D9EAFD14FF650C9D100E9E958564FD8 +:10C4D000FF16F156B2CCCDB72CB958F821867C089E +:10C4E000D615BBB37267AEB88D1D0F3B1EB1EF05FD +:10C4F000A74228377BB72E0DA1DED9BB7D6CBD735B +:10C50000B7909F9D42EFE03B294EFDB343E8D77BB8 +:10C510003DF7F9AE0873FD3335CCF97AAF960C21AF +:10C52000DDD9F3577C16DF05A97AD9477A67D29609 +:10C530008182B1E6C7F8B92BEFE143E6E7C5C29EB9 +:10C540007B43A7F9DECECBFBB878B917E9574A7819 +:10C55000E8A673A24C94F8B17235B70F4A7A52BD6F +:10C560008CE301334E58F4E477E9BEC9AE3EF08166 +:10C57000280E62E62F013B894C65E0DDBD3D8B64F2 +:10C580007CE7BEBCC4C764F425B7F2734C0DFEE370 +:10C59000E7249946C65D267A6F706ABFFB9CB30498 +:10C5A000CF95C1DE2CF79C67961CFD97A3684F962C +:10C5B00078DE6BFDB8785F8078CFFB3F8FF71DCAC0 +:10C5C00040D0B90F4C925812F973D2756FBAEEA1E0 +:10C5D000B40ABE646BC2ECD78EB8F9BDD24001EA92 +:10C5E000F59DD7F2FBC50C435DA887AA07BF8374EE +:10C5F000DBBEE4A6DF3D87F649D13BE7A35DB72C60 +:10C600009CC7CFF5AE5DE5CA7304FF6359D8E19FBF +:10C61000EDEC5C44E58E935FDBEF87F1A6AD660938 +:10C620007EEF97BD82EF2A1B82CECD5B19D1B93246 +:10C63000EE63946761B9E95CB98CEBB9697D2C8DC7 +:10C640007C33758525611E41D51A9630E1FBF235A4 +:10C65000EE7778ABB68E781FBB09F96462821998C1 +:10C66000975AD5DFB6FF3E87DF30D1FB3EB567FE78 +:10C67000BDDAC04594E704FC81F1BA69469B84E7C2 +:10C68000E755A9705B1A8F7C5ADDF397C032911E73 +:10C690005E7EF4CEF371F96D8B87DF8EB17B3FBF89 +:10C6A0000FF0B1A7EBD19F53AE354BCB4EBFD4E6C5 +:10C6B00037859977219D583226CED7CD8A5CFA7C72 +:10C6C000584F27C719D762978CB92F142E74E77764 +:10C6D000859BDDF95DC16A775D658E7A45769E0D35 +:10C6E0008CF17D20D56638E7EB895847D0EFCCF444 +:10C6F0007DFEC218C0DB838EFFB9585FDA8DFBB1B7 +:10C7000084273CB094DE1A85E2FDC767CA64DF4423 +:10C71000CAD5346E562ADB457E18ABE2E738E82FDF +:10C72000927F13E7FE5838C1FDC011F811FD410D8D +:10C730008D190730EB1A19C6F742A8AF28BFC0A45D +:10C74000B85CC050280E09F2F3B3B0F05F9AEA2843 +:10C750007F83F21D6C3FDE9EE77474186F3FFBFE13 +:10C760005227DE5F82F5174CD62B304F8FE1BB8509 +:10C7700086E33DBFC9FCDE5341B35E4171DAA37964 +:10C78000F4EF8E30A5ED9C4B231817F5DC5F28E005 +:10C79000F717BA83A9B7C38E789554D8E2F207E2A7 +:10C7A000AC8DDB932C49A53E91D5BE80F34FE0F1D3 +:10C7B000CF8E487705EA97CE22F73E3B25C2CF833E +:10C7C0004E867DA487F43C7E6EC434ABC4795E3261 +:10C7D0002722D9ED37225F6C2DBDF9600BE0458F24 +:10C7E000F2FBE22C01FD2339FA4FE07C53BE691BBA +:10C7F000F18D2EDE7161F151FA8B762F9E2B23DCA9 +:10C80000DFD6A78AEFCB46810FFF7109D837ABC5BA +:10C810007CE0F747224514A7CB605C8A2DE5F755ED +:10C82000B271BA9AE8AF1CF3950A7CD875CC33C4C0 +:10C83000F8DC89C1A914975374F05BA323E1F36971 +:10C840009FE37145FD506CF81D407C273932FC2E6A +:10C8500044BC3B86FA5FA338891111E7DB618BBFCB +:10C8600017A14319C9F6EF5F709B847C7A7B283946 +:10C870002D42F1AC5427BD271886F925C7B8B1441D +:10C88000BCBB2E3BEE9C88C1EF31CD69BBBB13E432 +:10C8900072C2E7D610DDFD2007989FAA2F5848796D +:10C8A000C55D227E6DB6F27B65A1329670DE77742F +:10C8B000EC43732239E2846FE7997323245FA3D892 +:10C8C000A322FEB5B49E893FC6F9B82F5D03FB12C3 +:10C8D000CAE1AAA7EE3B88FBC6AA79B04B25F01C9B +:10C8E000ED8183B82FFA449E1560E0E0EB505FD6EF +:10C8F0009AC7B87C27F3113FEF327E7FE55DF65291 +:10C90000FE6C071F2F8E88F8708F9FF6090BFE4371 +:10C91000FC7FA5DFEFDA37AEDEEEAE2F678B8A51F4 +:10C920002E976F050D0578BDC6B3AF340B3C5FCDB8 +:10C93000DABA75473CF3BAEF9FA922DEAE99AD573C +:10C94000F81CF7D4AF8C707FEF37ED78B723FBFB83 +:10C95000CA705AC5F3C35F3F39FBF24F331C27DD62 +:10C960005D5A476F34937C7AF17E558F1BCED3ADE1 +:10C97000C30BB76DB78F0687B24F3273BDABB352DF +:10C98000C851F6FE97B8B7B04E611D75987F7ADB37 +:10C990004378CF618D15D0F17D8AE3C1C969BC743C +:10C9A000BC4EF01DB0D5393C5FA7ED6C2C7B63E924 +:10C9B00024F29D7DCE1FD4DA084649E1FABF377EC6 +:10C9C0009AF63268F78DD15E35F6F798C77B6AAE76 +:10C9D000786F81FC271EFFB2EF8975F893F41E78FB +:10C9E000C73FF8E87E5347411BBD8366953383DE1E +:10C9F0003DAB4A46E99EEECBBE985C215819FDEF4F +:10CA000092168A036E127A8929FCBC3010B64C3C0F +:10CA100077EEF6A7E205185FB88DC7071AC3A91409 +:10CA20007EE78BB7FA316FF7C78F5E45FF9ECACAA4 +:10CA3000F8850AEAEFED119EDFF5EEB71F9FCB00F8 +:10CA4000BEEEC7222C43FE565A457F6BE5933E8AC5 +:10CA50007F7EF5BB119A7FE51357EF5D08E348DF52 +:10CA60003FCF788BE4B283E058F9BD4BFFDE12EB89 +:10CA7000419FB563AD1D8F4EC4717FB92EC0BE8C72 +:10CA80007156EF3D39CDE8A73C9895FB0AE8FC606C +:10CA9000981F14E85F43F798BFBC28C7B9C4B31107 +:10CAA000EEA7FD36A2B6227CD2BEFD5F22F806FEBE +:10CAB000DA8FEB92CADAD83FC37C8F0B3C413FF24E +:10CAC000CBAD87257A4FE7B70FEF54312F61E5BE25 +:10CAD0009DEA52CAC3E7E7E8369CDABE2D16CA893A +:10CAE00056A55762DC76C1771FCBC7FB4B5FFDEEC7 +:10CAF0009FBACF85DFBFEA63430B413FDCB0CFF77E +:10CB000006DE77C0F7BCDC79EE3CFFF37A5241D009 +:10CB1000FF6FDFBEF017F0DD6F400F61AAD96F0E17 +:10CB2000FFB3FA0CD6C1FE443D74C3D36EB9BA61EB +:10CB3000DFAF555C8F2EB3A1B24F633E95DB0EF590 +:10CB4000F63FC64EAA985F7EC3C006F2976E78F293 +:10CB5000DDD7503E6EF0C8E76FF02F2523EDD05F94 +:10CB6000453C7ECFBE09E3B23FBEFAD8B1FB2DC033 +:10CB7000E36F9FF8D7FB2DC0E3B57FFEFDFD376364 +:10CB8000BCED87411DF5CB0DDFFEE7FBBF09EB7C5C +:10CB9000F7E9808C7CF1DE730FEDBD07EAEFBD3A5B +:10CBA000639604F5FF10FBDE7B8FFF5BB101E3AC06 +:10CBB0007EEE8289C877AB9F5A40EF298D36FF7B86 +:10CBC000EDFCFDF42C3C697EEFEF69098D74FE0FDE +:10CBD000034C1C4907D63FA4A29CFD51E2F7DBAEF3 +:10CBE0001FF8938AFC77D064438897E79FFCF5C1D0 +:10CBF0006F42FD5DA04B20075D60DD9364BAFF903E +:10CC00009984F720AE7FF2D28BCFABC3D29FC0E125 +:10CC10006F6043A4AF47D0F365A0675D969EA3D233 +:10CC2000EFD10D74EE7FC300D0EFAC91F47B17FF12 +:10CC3000326F24FD4AF3BDF7F9AE7DE01E6C7C72C5 +:10CC400042CE78BBED475CF7D46563FA2BEF79E40D +:10CC500075343CAF10E7AB6F47CC33F2E7203F3C75 +:10CC6000B2F79E18D23990C0F73EDF7BECD864BC97 +:10CC7000E4FF8E7FE84B8887A1E702FA2EF866E58D +:10CC800073FF48FBC27B4FFD5C35487FB37C09F4E2 +:10CC9000E67B6CF8CF4B781E72BD38CFBA6EF77F4B +:10CCA0005CF81A7C7F1D0C81B9FA403FAA1F34F949 +:10CCB000BD94EBD397B41898FF962EA2755F9FE6AC +:10CCC000F2707D7AFF62CC5FF7E27D49BE7DFE9611 +:10CCD000A52BFEFB3CD73FF9C685C87FA3D1D35E09 +:10CCE000BF8EEB3F07DA77BBE57524DF0CA9A8FF01 +:10CCF0006DFABEB7F3B8FA0BE89F7946D565B05325 +:10CD0000DFF30FA9B42F3FEED3F1DFF9F1D21DFD10 +:10CD1000CA25740EB52EE779AE971FAECCF7C8B30F +:10CD2000C0C7E9E4F9F4EBF870785A986F703FC522 +:10CD300083AFB5252AF96DBE7C95DE59EEF61BFF53 +:10CD40008879B6433FF1B35DF04947FE5C96EBDF6F +:10CD500069433FC5709C5728E124E5552A319DEE73 +:10CD6000E37BF33AFCBAEC796784DF97542D85E1D5 +:10CD7000BD01EFFD48AF9DF10D9FF96AAA82FCA0AD +:10CD8000F5C8D7C7E5B6A707314E1B5D3E782B8C9B +:10CD9000B655D8655B23EEF38C3BF2B95EB3CBADF1 +:10CDA000E8C7E23C97897F6F4A494A4E3F84581052 +:10CDB000FC876DF95FFE0CFA0FD88EFCE2FDDD9E5C +:10CDC0004FD193FC1D8F6AFE2E034BB141949B4EB5 +:10CDD0002134BB055F6F8D26EFCB473FA4AC9F622C +:10CDE000B9E8770CE6D84FED12EF35A3DFD1DD9E21 +:10CDF000A2F2BB284B181710F7EEC1AF7918F1005B +:10CE0000F3A5512EF12C13F5EA871F5FA7BC033B56 +:10CE10001FE5E650EA6F71DC80C1CF9F02653C6E72 +:10CE2000EC137994B6FD6B8FF35C3EB717EDD28EA1 +:10CE30002FABA52BF6ED8CE13B0D718E1796247F61 +:10CE4000ED87A29FFD4EDE368959646F491AA78788 +:10CE5000C90CBD98C7BB713D3ECDA424793FE6897E +:10CE6000D3BB53169541E42FBA379421BB6E30BF24 +:10CE700092C6B5EFE3615E12F27534C124DC5FB691 +:10CE8000461216D17D09D3F7D466DBBBCF13EF6210 +:10CE900055F37A3CA933ECFF5A7EA1B0674DCA1F07 +:10CEA0009E98D275ECF7765EF215A4A3ED67D7B124 +:10CEB00014F147B116A63C1ED6EABEE732CC970560 +:10CEC0006EBCFD93E0C741C11F78D65E5AE8BA2F09 +:10CED000C89CF705EDF84297781FA560B2BE04EF35 +:10CEE000CF8E1A5FA86C3B3B41FCCBE30A767E40B9 +:10CEF00041333F473E5EC4E90BF2F441BE33AE50CE +:10CF0000DCEA892BD8EFAC586FA0FCE967B3F729AE +:10CF10007ECCD67DE6C538F9DB8F63BDA3B3FD3388 +:10CF2000140F98CDE5E4DFF33B3E83716BFD1CE10C +:10CF3000AFD7BBFD752DCAFD24BC38496503F78307 +:10CF40000BA3DC2F56F436F27F99A80319C83F1EB5 +:10CF5000AE370BBFD9AED7F0F68FE1E71646E7E460 +:10CF6000F4732744C7F073F5884CEF908FD4E37DBA +:10CF70003CAF4EFCFB611D61B9045392F43DC5B555 +:10CF8000FCBD92FA43460CDF2D8F09F9E0FB89C204 +:10CF9000845F2FE28DF63CA1F316BD8AF06F07ABDC +:10CFA00015E300DBA4D4DD58B7A420DD2FBF531256 +:10CFB0007AED8BD3855EB382D3D15F8B54529EF9C9 +:10CFC00076F46EB03DC9DFD7DF5CBD9AF4EF766BC7 +:10CFD0002BE105F42FE95B6B5D40EF80726B6A1506 +:10CFE000B55B8AA6E33DE991F7D2D33F990A655F25 +:10CFF0007432C1D7D970C7862698767382E72385A5 +:10D0000066366BCE3C8E5551CEEF763BD3CCE017D7 +:10D010001D7AF7E26884BFBB322F373EEDEFEDF6A5 +:10D02000CD0D0774CC8FE98ABDD080E408CD7CB3E8 +:10D0300007F3913A755EDF20C6338D9DA4D780BE7D +:10D040009F73D23780798A95A8A7CD20F24B71348F +:10D05000B508DBB7B3845601F8B9EB8B73AB299FE6 +:10D060004CAC8B61DCDBA167B749269B4EFA24AC44 +:10D07000633E0EAC87F40BD0B210F5C7303D660EA0 +:10D08000BFEF477A24BF9AB7DF2525D834E7F7A644 +:10D0900069E873B37A0F2F409A73919FC59F3352FB +:10D0A000C4D759FD3740F5303B4CE537A25CFF450E +:10D0B00059BA653A0C72CF8A03A42FF22F633B9DB5 +:10D0C000F95645B69E5AECD653A3E99DAD9AB58163 +:10D0D000E28AD1E4D7113F1DFAAC77BE02F05D2A97 +:10D0E000E4CEC68F867C0BF3152540BE0A701D5713 +:10D0F000AEC57BF6313B3EEB990FD787EB9D24966F +:10D10000679F87237EF17CA364053FE72A638749F5 +:10D11000FF4C6643541A681121BDB4A4A410DC4727 +:10D12000492E654B964E7D2A0BF7D7A2067F9FA00E +:10D13000BA3948F77D358BFEDD18D48D4E3900C0E5 +:10D14000892E5B53EB48AF5E8ADF1551BF167EDE3A +:10D150006E055BCFCC8E6BFB3186A053804932E6E7 +:10D16000F71C1371AD0B30C105FDD5D5FCDFAD9AB1 +:10D1700052A534E17D0F603A13EF076A6CA811E302 +:10D18000D1E58DDA90C55FB4A1EF4BF07BA84FB12C +:10D19000DC71FB50C25DCF9EC3B9E3F9D97338C7C8 +:10D1A000B980B057918FED7B17A7B3579F887EB496 +:10D1B000F3CEC341F369E48FF1DEDB186F5CC91B6A +:10D1C0004FEA68AC3D12033C159DFB6BDA6F7CCADD +:10D1D00000A64DB3FD9775BF8A78BF87C9097A3716 +:10D1E000D563479CB8A690E1BF3F797F5B7E82EE16 +:10D1F000160BF9B2EF4B33DD5C8B74B5E59BCD4A72 +:10D20000925CA9EC4692370DED0D87BCE583DB837C +:10D2100065F05A303040680EAC692AC0B8441EEB45 +:10D22000CB2947365F7C20F842619F8AD27B48AB8E +:10D23000158A3B96A492D10CCE6B992FC5E7526A02 +:10D240003BFD29303167314B9F092D60B739ECE840 +:10D2500022B057DC795E3A9DFFC5053F4E6C8DBB11 +:10D26000BE679DDC9F31E03F9443EF79AE9F5974D8 +:10D270009E37A93EA06774CC1BB0E87CAE0CFC7056 +:10D28000DC4727B5B9E31F71CFF75E7E3A69F31328 +:10D29000883BF213E021817AE183977DF49EB832D6 +:10D2A0001820BC94025E100FFF092B49167C0080E9 +:10D2B000000000001F8B080000000000000BE57C50 +:10D2C0007B7C54D5B5FF3AE7CC2BC92439794D2660 +:10D2D000218493844790A04302C8CB72088829A276 +:10D2E0000E0F2B5AAB038244C8CBF8A2D6CF8F13B4 +:10D2F000022902B7C496B6D4621DB880A8E0674080 +:10D30000C0D41BF80D8F22586C835A2CFE6C8DB53F +:10D310002A2A90318A60EBBDFED65AFB1CE691A406 +:10D32000D0DBDFFDEB17F473B267EFB31F6B7DD774 +:10D3300073AF4937E0CF4880FE73216814E1EF8670 +:10D34000FEBA773400FD4A3F17969ECE3A6C07C06E +:10D35000FF7CE16C80C237155F183F777A016CA5BE +:10D3600062CC37F87F92E6029B2BDA4E2955E3DA3E +:10D37000A93E6FDCF8A2CEA6034FE1BA47C63855E6 +:10D380001803903E468B1B0FCB6D7FE9C4F1A5F8C7 +:10D39000EF9B62DC1F8836F7E3E60AAA434D4EFC9A +:10D3A000BD5F037E1EF39E17D67CA65C4DCFF8F1C1 +:10D3B0004BDEF938EB70ECFA6A6AF68729F88B0ACB +:10D3C000EA370A80E20EDE0E78BE7E20FB14DC9780 +:10D3D00062F3A787353CA3DA798A3E2FA0CFB3F951 +:10D3E00075BFCB039047BF613FE8A0A9D896CCF6A4 +:10D3F000257A65B736DD8BE3FB37A4F9141F0E2BB6 +:10D40000EB6F2CC4B617DBAB541C5B1E0028413AF3 +:10D4100082818B21FD20C8CF1408F3E7A9D0C9ED84 +:10D4200074F081846D1B049BC4227EF00FA771EF02 +:10D43000A81F0E0390E17DF866187D8EF3E470BF9F +:10D44000D1994DE3A1E1495CD7EE9A1E0ED0BA0AFC +:10D450003410CFAA9202956A0EED0F0EE7E3E7496A +:10D46000A51054903E4ED50F501C3B8F784A36DCA9 +:10D470000F8E53368871B6CA86658403DC4A039FD3 +:10D480006383EDCC25FAD3FBC53AEF1FE1F2477A6F +:10D49000CF8E745BC57453C301A4ABC33CFF959E90 +:10D4A000DB091B54E2934CF36745F755B226DCD4F5 +:10D4B00089F30DC17D64F9E873FD24E176B0C98775 +:10D4C000822501B990CEDD4F0127E2AB784DA7440C +:10D4D0007881F5022F2EFC47FB2D59129268F2E25B +:10D4E00035F1382A32E2DBA0B4335ECF235E15DC9F +:10D4F0007F7F7B48223A3C1D7037183EC24D3CDE90 +:10D5000034ADE3C010ECD7745784FA8B0CF0CD8F98 +:10D51000C15FFF409A6F7E05C020E2E9D89EF87C8B +:10D5200088F0497CBD16AE257C3E306336E3F1E9D8 +:10D53000C7366504DC38867E26469FCF2FF5FAE68F +:10D540000F02786AA9CB371FF197BABD414EC1F5DA +:10D550008B43821EC5735A9F74521BDC0D922F8A17 +:10D56000D3E052E0F1BF5CAAF2D3068115848F2D7F +:10D57000DF7F79990BDFF38C0CF2332CEB2DEA284B +:10D580009C6B5D3683BF6C49816F3EF263D89242DB +:10D590007E5AFBB0F8D3FF3FDF9A71030E1DD02AED +:10D5A000FB96E1A7032E3AF55019C09320CE5B827B +:10D5B000FC9887ED5FA848009CF736D5FF135AB753 +:10D5C00078A54F0EE0E7509DC9EBF445B7C4F57E52 +:10D5D00025C19C10D2E5A9075FE77597ABD9231445 +:10D5E000E2A34D4F9E910AB05D95791DC71245FB90 +:10D5F0006BCC7E5B5A67A603BEE770E9B28ACF8127 +:10D60000AD93E4A491AC487C5B78D500CC4E25FC6E +:10D61000C910C67D7C179FC4DF296AE079DA2FA87C +:10D62000C9108EC1BF638983E7EFFFD094643AC706 +:10D630006657A74472D05F82066304E2B226FE3CBE +:10D640005A8D2A132EADFD58E72B74B9F9799B1A20 +:10D650007849CD11F422BE5BF451C2E92C9703D670 +:10D6600043701592B0DF63A89F71DF03DF54581A2F +:10D6700006B486A424E4DB54657A726719CBC7CD5F +:10D6800073479BA2899F6F0EF8583E06E72960906A +:10D690001C9BF8477528E4187499F44CC16331B8A1 +:10D6A000C6FF079AFA7530C4C807D263E03B1FBFB4 +:10D6B0000369D41F2F0789FC2BA8419CC5C855E2DC +:10D6C0007913E5E0A42507B990F70D6EFE3C4CC830 +:10D6D000BD5E8BE2A31015DD98CC28FD2C5C47F1D4 +:10D6E0001164BE5BF38F08C7AF6FCD93284F89F8E5 +:10D6F000926C86CEFACC0BAA4232EB336E9748AFCF +:10D70000C9A8DF082FBAAEA9A3A376400A1CF94A1C +:10D71000423A39AA0C4943FA7BA7070C09C779ABEF +:10D72000C0A761BF3E1F2983EDE4811DD7ADC2B6FE +:10D7300037E03B60C3F99CD91DD729D83E4F60CC58 +:10D74000217DAD9F27B9CB227DA8907CFA99890EC7 +:10D7500068E0A70B5AF9990C2130B0DF0D1DDC5E93 +:10D76000AD06FE8B709306116E978435D921517FDB +:10D7700003F37588CB6D101F13F5774AA2BE75674A +:10D78000B2BC5E8E3E4E5B203C4FEB4907DCB6E6FA +:10D790004F8D8EFF617F6893AEC1FE02A44F1AC900 +:10D7A0002B32701C0DFEB72A1D7F5D7DEB4E6F8EF8 +:10D7B000CADB09ABA8B7577F5BE2FEB1195B561A0B +:10D7C00048C7D53344FB5B4F3C2DDAB7633B1F6042 +:10D7D0001AF5BBC96FB9CA203EADD0C04774BD9021 +:10D7E000D3E8021CF7C38299E9BDE94DEBD9BC141B +:10D7F000171C121DA7D8D44AB67B0572D0907A8E1A +:10D80000B7B9853EB070B47AF8549DF43DB2204269 +:10D810001268E919DB83B6F79C78CE169C97F6E17F +:10D820007035808A4F67EBFD61C64F829E71997A91 +:10D83000E60ED23312EB993119C87F2556CF4054EA +:10D84000CF646600E3BB6CA4CA7E9CD38714473DBB +:10D85000333143137CD1C2B2E68EEAEB89E6789786 +:10D86000CD0F3EFCDC5ED500D4EF9CEED7693F4E79 +:10D87000C2270EC99AAE311DED0381F1A8CFDF0892 +:10D88000DF43DC5465B8F97DC4655506CE7F6386F9 +:10D890006AFA0B3E89F88CE618E8B95AF5DF44FDC0 +:10D8A000255EED206101DF02C2FF10B7D057386E50 +:10D8B00019E92B5B5F7E04FD8C66BF939DD1DEF082 +:10D8C0004E4F0BEF16CE7BE057CDBE22F9FE9143B3 +:10D8D000CFB81E87B6FCCEEEDB84E7352A1B9E262A +:10D8E000FFC2586683667CFE3CE57F3D437ED512D1 +:10D8F000C3A9921DBD905418247D67D94FCBEE5A11 +:10D9000076D4B2C74F641499F469B896E40EA0E3D4 +:10D91000DB649F2E7C4BCE5C05D17DAC9D0F5564A6 +:10D920001F8B20BF92F8B8AA6CDED655F8EA85A105 +:10D93000F3921DF8796B86C274DFBAFECA706C8DE3 +:10D94000536C3E507B199F885FDB83B2E1BCBA17F2 +:10D95000DC96CD631C9CDF20F830A4F5FE83BDD996 +:10D96000476B5EB9277E5B33FE819DFC40D59F20CF +:10D970007CFFA83C50EDEF659FDB3285DD7EEAC180 +:10D980007549A4477F41747247E9B43A60D2697817 +:10D9900023D3690FD109D77B66C395D1C91AF72F55 +:10D9A000D329308FF5F9F909824EE9AD9F85957F2E +:10D9B0008E4E7B880E7DD169957FD3CA62E4831138 +:10D9C000907D83109FEBFC727822B67F512D6F27DC +:10D9D000BF7C95BF326910B6B74E38D82E61FF1B99 +:10D9E00099A9022F6AE4288D3306CADA16923BB54C +:10D9F000B58AF6B9B5B41C886ED67EB696CA5541BE +:10DA0000A4DFAAD279C9F7C4D061EBFA6E6F2C1DDE +:10DA1000B7929F55D6934E8F660A3FEEC9F932FBF7 +:10DA200025490108CA74AE81C0EDBC02083AB19D17 +:10DA3000A78B36EACAA086EDC3D7B54C22BBB76A1E +:10DA40003E9978F2578E1B74CEF5A8479DC2AF67FA +:10DA5000BF25CDB427EB0361EE774E42BF1AF546E2 +:10DA60005AE78CF053D9D138D23D26D16FBF13C8B5 +:10DA70004F3F8F7E3AF9ED791BE2FB9D097E8CAA20 +:10DA8000FBC3E4E7DBC8CFA7F8E9327164C6141F13 +:10DA9000107D3ECDB8E4A70C203F65C5D236787F17 +:10DAA00010AFCFF84295A0877AC1D7257F85708EB9 +:10DAB000B87DD2BF4CD271DCDAB9AD12D98BBCAF14 +:10DAC00015F69B510378EF181E7D2F293399E9BD78 +:10DAD000D62EF8E10BAB93DD14F7B9D511A4AFAD99 +:10DAE000714E932F6B93C4B8911DFEC9A9FF685C5A +:10DAF000AAF0A3C774B64E4EEB65DC27A63CE2BA8B +:10DB0000EC0FAD1DE40836215DD64A427F1AAFD92D +:10DB10004DBC0B3E6F5DA06E247DBFEB68F1EA3219 +:10DB2000C241402BA7F9766901B9D8DDB7FE8CD088 +:10DB30007E901E83AB023A1B8F4BF385B70BFB1114 +:10DB4000F1DE89F4F87BA6F0937625A3FE603A0512 +:10DB5000F267C4D0E94193AE169DF6FE715E8A4C21 +:10DB60007161A99649FBC82C0D825C165D6F57291F +:10DB7000AE47F3D8B4D5C3E97C0BC2A9AB62CE6F74 +:10DB8000ADB737B9777DF5B0451F93DE2F9FDE1413 +:10DB9000B75E7255FC7AC9F3CDF3B95A9BAE1ED964 +:10DBA000F77A2FF7B1DE12EB7C26DFF65FFC4B8AAB +:10DBB0004C7E6619AE87D3A6D07AEE9EEBE55DFC6F +:10DBC000B1941A23C77FCB14767DBF45475B207F76 +:10DBD000668CBE9A6AE2E319FFAEA3F760F7E383AF +:10DBE0005A92280ED92A855C8389EFD7C9B005F7E8 +:10DBF000BD764325901FF18C0E2CBD196E63121952 +:10DC0000E3E73233C5FB1B2AF93DC9D6DA64A33CEE +:10DC10000B0A3AD10591C0F982422B5F90E047E6AA +:10DC20004D578D79383EAB210D15359E6F7DC3ABB9 +:10DC300043B19DB444F6B19F1996C0363A9A977194 +:10DC400081C1F99C21E67C798187396FB1418106D8 +:10DC500005F5442FFE868FFC8D7EF41BB5CB75CE6B +:10DC60003FD8516F935367E52B7AE629C293E83981 +:10DC70008054BA425DBA4CFD83CC7C4D91AE55DAEE +:10DC8000703F83D707D89FCC7C105F2B227F2EC894 +:10DC9000F348B086FDA69492A732443E07F7331EA0 +:10DCA000D725DF85E2E84CD3BF427E90FF302CA120 +:10DCB0003D36A1ADDF3909881FA81D22E45755253F +:10DCC000058C4CEC975DBA3E98E8A5BB2242AF3577 +:10DCD000805444FA4666BFF1FF377DBD31D3CCFF97 +:10DCE00099FADAD2D396DEEE4B4FB33F3A8EF4F583 +:10DCF0005755147F2465E8CF127D7F6AFAD51877CF +:10DD0000BD90398AF00ABA9DF0BD06035089F28BA6 +:10DD10009A4CF327E2DEBB1E714FF4479C422F71F1 +:10DD2000A40B10F7447F2B6F9880F3F576918F4307 +:10DD30007436281C47B54AF7E23C85D6F8CBE01C80 +:10DD400061A629145752FE4F89F5B343DC4EF4AF58 +:10DD50000B6C11899E185E31DE07829FF19EEF5297 +:10DD600065C279F114AD89F20E836DC2DFEF8FFECB +:10DD7000BEC1875181FCFDE480F0FFD7F9FFC27A74 +:10DD8000A02FDC235E193749663C85387E3B93FD26 +:10DD9000681DC8CFB1238EE97C7A6012EB9BE40248 +:10DDA0008CF720D60F92439246FE4F7065F148E102 +:10DDB00037915D5AFBB5C2E31F5F2FFFFB32DCC713 +:10DDC000E3369DC7AF9A2FFB9086E4078527D2F8EC +:10DDD0006A3938A8E88AFC218E3F1FCDFC80E3D148 +:10DDE000B519C22E1A6817B714919DD6F83C1322A4 +:10DDF0001D93D363ECE95A7BC4EBE3F19139A4D7CB +:10DE00008CA784FE7CC69FA83F43AC6FAB28D04351 +:10DE10005CAD1F38F5D850D2773683F586B5FE2D28 +:10DE200099B73E4EEB833BE2253DB076466332E93F +:10DE3000794BDF268E7B3649872C9CEF781FFE9C22 +:10DE400023ABD29685FBEECE80DEF3C153AC7CB023 +:10DE5000DA14970F9E9280370D38FF059956DCF73C +:10DE6000AFE785853EEE3D2FDCB5EFADFE069EFFAC +:10DE70004F0B3E4FC597E05D5B2495E87CFAB137C8 +:10DE800052C9AFFAD3630AFBB9779979D7BB97FE2A +:10DE9000E768CA430ECB12F6ED87597A09D1059689 +:10DEA000E4B090DD1754E812E292FE58BC2D858450 +:10DEB000E352BB369415D7B6F651EB8406B2C78B46 +:10DEC000B71F70F4C373DEB72D83F391A7512E48AB +:10DED000CE4FEFEEBF91EE5BEEC992CD75FD15B45E +:10DEE0002EED87F0F56EBB13C26C873BECC2FFD101 +:10DEF0006F96465314217E12F775647F3F07D9FD54 +:10DF00000512EAE10CFEB8652FAEFB81578155BEC4 +:10DF10009EFB5EF027D5417EC9824910A1BCE4E298 +:10DF2000ED52CB23F8FE3CD2BBBE9EE79A6BD8E302 +:10DF3000F4F03DA1FB1D4C7CA56C6A2EE9EB95121B +:10DF4000EBB37B56C68F43581CF90F9C773ECE4BE4 +:10DF5000FC5DD01ADFDF7DF48196BDD8BFABCDC1AB +:10DF600079F58509FA3D517FCFC932FDECD170AD0D +:10DF7000C80796AD2DD3FA8EF32CBD7D1AE33D0470 +:10DF80000D7CB2D4C5CF334B196C509225E473711C +:10DF9000DB8123AC136D1DA3497E761D7D3FE50E0D +:10DFA000EC6AF48A38EF5B1B3F6FDE8BDD15E04FC8 +:10DFB0000F13EE216C27F99B082ECD8DFB5B61E6DC +:10DFC000852B2E623BF67CAD077EF31F1CB7B91B79 +:10DFD000B6205D1B11F04BCAA3FB6BF48AF8EE4E22 +:10DFE000B07DF18FCEFD489669AFCCFB807FF5DC2C +:10DFF0007DBD578BFE516FFAC0928F922CE16F3628 +:10E00000EFFBF954BA3F3AF784E473E23E166D7BB6 +:10E01000EF2E92EB056D6887C5E5E149F044F18A82 +:10E02000C766BC2D24BF04F119A8FE01E3E208D2A3 +:10E0300085FC80407B7FEEF74E46FCA25C2EACFE5A +:10E04000F46DE144185ED94BCFB0571ED30B0E13BD +:10E05000F09688AF73F6CE4292FF445C9DEB43EF9F +:10E06000ADCE2AE6F3CDD7F4A994A75B00FE1655F2 +:10E07000C8DF5BFF13E739B8FB015009FF476DECC0 +:10E080006F951F13F173F96B8E20E5115EB4779CC9 +:10E09000637B724CC4EFD44F715EF96FDCEC57C0F8 +:10E0A000D706EB93117F578314CF9FCD346EA6F61E +:10E0B0002ED40F9B58DF2A9C9718F1FB52D1BFA496 +:10E0C000A2845262C645B78FECD3C4297FFDEE719E +:10E0D0009EF7C101646F277E952C517EFB7274D62A +:10E0E0008315CA389C579521928EE7290FBE3F7938 +:10E0F0003CFBEDAE466A27F2A122A8D862C793DBAB +:10E1000041ED0ABD3442FA29913F3A3C71E407746B +:10E11000CECD45A4EEE15B5FC7FB81E5C713FC46AE +:10E120004BEFBEB4632FE9FF45FFE7C76980CF8F90 +:10E130006DAD1EE2FF8ECD2BD274B20336238DF867 +:10E14000F97150D88144FE67674BA6BDD3D324E450 +:10E15000771D6F15FF5F19697914F7F325EA57DA10 +:10E160006FDDE1BF71FB08FA21E0A5793BA7FE0056 +:10E17000CF73DF5C774313F6D7B7C59F7FD1333FAB +:10E18000F5689C1F35FA99FCEF47EFD56DB6F3BDE6 +:10E190007ADD9B0AE75DEB21C2784B7CBF3EF4BE83 +:10E1A000837040F42B18DFB31F61E820BD556FDE8C +:10E1B000CFD41FFE84F1569FE00F57F771DFA8649C +:10E1C000C7DF37227DF83EC9C07D511A0382C21EC7 +:10E1D000363FEB345CB88F8FDFCEDDE8C4F9CE6C10 +:10E1E000FE6D9A5416D53700CB584F9C0995A4075D +:10E1F0007AA1AFF53C67EA25AB6DDDD3686D920877 +:10E200002CDAC57307DA4B17EEA3E69493FDC89A90 +:10E2100013DD2C5788FDC8A00C8AE70F7A8663FFB0 +:10E22000E29DF6ECE9E2386964272DBE2D7AF18390 +:10E23000A9DBE97DB48349C4B7DD17D84E5A72B95A +:10E2400078A7944279899AA0DD47F79C89749D1C30 +:10E250003AE0E874F7C2B7D07B53294FD0FCEC0505 +:10E26000E6CBC7FB25C82DEAF97EF5964F1D247F26 +:10E270006790416A06F15199EB48EF8D7FE19B5F12 +:10E280001EC9FD2AC5FF97E3E3FBE4F38C62BCBF24 +:10E29000F032AE5FFDB6D347E7AF7EE101C6FD4782 +:10E2A000B606C67DCD532B3CE4F754DB0D8FCA4F29 +:10E2B000F179F5AF1E623C2E3CF19007C4FD601E63 +:10E2C000E9233C671E9D6FC1865BF97CF74280F1B4 +:10E2D00058FD94E20FE2F3BC0DAA76F6C2D795A6DC +:10E2E000DC38E1FEAB492ECEE34C742FF691035897 +:10E2F0009F19AF2B41D25F4ED8F4678A0BCE77E4DB +:10E3000048A48F94137617D1E7C17D198CA7EF65C8 +:10E310000B7F68F289F3531FA5CF8B6C0D1829D2A0 +:10E32000F90D935ED237ACD740A338A89E7E2BA6BA +:10E3300079BB1DDFC3F15FE0E754F710339EE9F5C9 +:10E34000D1266732DD3B7DE4816A914F83D7290E68 +:10E35000AA1373212EBE6AA1F58E80D64DE77FC920 +:10E360003C4FFDB68FA63E497237CFDD908EF4F953 +:10E37000E2CDF71DF92417B8CF41B4AF8E0FB80D19 +:10E38000BE1C8DF49A458FFA3667DC7D4DFDE60F95 +:10E3900012E437BE1FFD24A65B3DA46BE4177FE4A7 +:10E3A000884C257B62E0BA5B709D7BD739E3F2D065 +:10E3B000F5BB3F7E1B081F18B185637061C99F15AF +:10E3C000CF2E34E5BD47DE2841FE9BB3E3FD0BD8DD +:10E3D000907345F72635F6E056A20FCAA7CF40DC6A +:10E3E000D6EC381F279F9F6E3F74F20E3CC7A721C3 +:10E3F0004B3EE3F56AF5AE0FA6FE92E2893EE4F3EA +:10E4000053377E38BC17B9C4CF7B954BB7B807FFDD +:10E410007FA64F77AFFE4C498BA577BC1C2EEC43F3 +:10E420009FEEC8EEE1AFA5E332F0C9738B07707DB4 +:10E4300043027D2DFD99A817A7656BBDEA4530FD08 +:10E44000AB4B7AEEF9B3537F89E7FE324F01F2A36B +:10E45000EB367FC5F609C91AA1FA97BAE067DC5E08 +:10E4600041F68ADB0766D3FD74CF73C7D333B1FFA0 +:10E470007EE2ED28A6CF5D4467454E13F7DF18DF37 +:10E48000535EA899ECE308DA930AC447A88410F90C +:10E490004752FB2B7C1F9E18B7199550DA80FC69F8 +:10E4A0007644EFDBB664F3FD1BDFB719CB9C6A73D0 +:10E4B00036DFBF71FF129B4BA53C53698E75AFE6EB +:10E4C0000B131F1F3904E5AB04BE387EBE7004DB9E +:10E4D0001AD539694AAC1DF24D961B7ACBC37F68B9 +:10E4E000EA9DB939E27CE93982EECB159117010832 +:10E4F000F1BD6633F19BF69591C6F1BDDDBC87C4D5 +:10E500009939EEF6A5C89FE3D1E1EFD9DF9F6643C5 +:10E510005CF82AE4074AB09DFCD3E5A23D5E7EB1DB +:10E5200018DBEE9FAE986643FEFBAE912BEC789E17 +:10E53000678C966953B0DF26EFAC267D6893416DFA +:10E5400046BA2D4F0B35509BEA0E96E545F705DA96 +:10E550008B01DA474B1EA8AB38DED335CA2B3567A3 +:10E56000B87C1467DBE4497362E759EDD04F737EE2 +:10E57000291BB4269C27C5190A50DB81F3521BB412 +:10E5800092C9D46EE90F7C2F546ED326F33D0E1E34 +:10E590008FE2D44BEB26ACB33C43F712FFD2896E2B +:10E5A0003957FE6C36F3F14A8AE087922E37ECC475 +:10E5B000A72747C417B95404304AE08EEC45D7BEAC +:10E5C000DC4D66DEBF90E8AC289B76101E224D36EF +:10E5D000D8944DFDCFEC20BCBCE570711EF0B6F4B4 +:10E5E00035F6AB70CBE5AEC207086C6F4BDB1FA2F4 +:10E5F000E7C59C40710EE306C234EF1D7729625EC9 +:10E6000077432AD509818E38A6F3997E3D0410C739 +:10E6100084F98388E311247A1BD44BF9AAAC9EFBBE +:10E6200050D2B7F33E6E738A7DCC09163777E23E3F +:10E63000463883FD296EC4F5CB73F05C773883834D +:10E64000085746011C25BABF75F7351BC5F90A588E +:10E650003E58DEB0FF7AE5CC0B345F3DCE4FF7CEAF +:10E66000E7927FA5D07809F5969427F4E95C0F87A7 +:10E6700000C24F05BD99E2CDF166DC0F1DC24FD639 +:10E68000F01FE76394AF3D7C4F795C06F2F3CB0F4C +:10E69000C7D7F78C870D87CA386E71B1DE189BA07B +:10E6A000EFC6B77DCA7A70FC65E2F49B724CFD97A9 +:10E6B0000FF9748E50C27D98CFBC0F4336D862EFED +:10E6C0006B2C3DF86C52E56CA2D3749B18A781AEFD +:10E6D000D3BEBB7D9A4C7CE93E3E0FCAA90D5A239E +:10E6E00060FB956C119F26CAF5EE047D6AE178F80F +:10E6F0009BEA3DE4570D7F13EEA6F35CAFB8998813 +:10E70000DDA721487EC8884E97CC79AAA3F6605031 +:10E7100022FD73F5CF2760FFF26376A078B79BB632 +:10E720004EE3DF34EB66959A66EA3F6FE6D729BE83 +:10E73000A1FEBD618027C9EFF1CAA0C5E8D1242D93 +:10E7400019B4187AA59466C6B5AD3ADC0AF111A4DD +:10E75000FAF2E3DEAF5047070917470CF48E0AA818 +:10E760007EB638FEFDE3F1F5B3A3DF8CE7B33D3BA6 +:10E77000A850DC71AD99EFF18583870CDCEF18337D +:10E780008F3EE69DF8F1E32E93575F9DC06FA4275F +:10E79000DBE16EB4C354DF3602D264D66397A3E7DD +:10E7A0006941CF683C1160BA8E32F3BD197A3C1DC5 +:10E7B000B3AAE2E998E38FA763EE9C78BAE505E295 +:10E7C000E9D4AFFAAAB8FEFE0DE571ED014BC6C55E +:10E7D0008D2F428315DB2E59392D6EFCA0D69971F1 +:10E7E000ED21EBEF881B3F34382FAE7FD8B645F1D3 +:10E7F0007C4BC04D220E86871AE3C72B1394B98435 +:10E800003B9477E2DB356D8FC6CD6FE1C0C07FBD35 +:10E81000E140497E41213E7562DC2A8D433C641B08 +:10E8200024093DF9EF3ECDF57D97C3C1F1041C5895 +:10E83000F27EB93CD5FBA46373B8AE4622FDABA112 +:10E840001F4197145DF60289F4AF3119420A3A501C +:10E850008F24171EA038BBF3FE349F941F53A78349 +:10E860007ABFD947B84A631C2D792795F3291764D5 +:10E870008DEFE1D6297E89F42D4E5924A3BD5E2E5D +:10E880008B38E047B27C77ECBDEA8739C2EFFFD026 +:10E89000B443BF748476921EB0B9849D5C2EF3D9C4 +:10E8A000E847A7FC681AC5617CEFF2E5AA29056470 +:10E8B0000F3B4BB50C4A9D621B6DE9B29417D81EF5 +:10E8C000941B36E07A1008727B04DA07C233DA83CD +:10E8D000CFC91EDD21A37D90A8DED3B85ED2709F84 +:10E8E0002E30D2CAD94EDE4DF7B119902D35965142 +:10E8F000FEFB92FDD1BEA9E849CF438BC6CBE4779E +:10E9000075CF57F8FCDDD5BF387B3E3B46BEF0AC3B +:10E910001DC4609BC675AFA71CDA2DA3897EAF2AE4 +:10E920007CFFF03B1AD78BDF7FB93C62F5C69FA412 +:10E93000521DD9A952519F637DEEF508BDECF588B3 +:10E94000BA9CFAF99F3AEE603A587EE9E71C1FAB91 +:10E95000C5D0908EFE0FA8DDEC97AFD2851F59452C +:10E960009749746F6D6F35DCA447DB6684394F6B54 +:10E97000C61FB7BD25F295B7FD1DE2FCBAA11E3B2F +:10E98000AF3BD423EAA6CA8F0646D1BCB79080B16C +:10E99000BF141845F6DFAF8246EBCC09CC7DE838D2 +:10E9A000B667AC91D87FA67E1A3F13794AFD6F8077 +:10E9B000EF0F7B70FDD11E8DE79B0D7E3BF97D2710 +:10E9C000EFAA4DA5F8F3AD0C313E2281B62966BE03 +:10E9D0005BCCF9DEBA6BF11EF24B693D5A9FF643F0 +:10E9E000EBCF50A198DA272170F60F453DD79D0552 +:10E9F000BA5DF8977E3BF93DF86B380BFB1B4F393E +:10EA0000F93EA5F1BE14A07C4CE33E27E703BB16FC +:10EA10005DD8F133DCE2DDFD3AFB3B4AA2F4B87D80 +:10EA2000BD021AE2253F4B9FE821BF6A4CD615D59F +:10EA3000754E7E6E2CE3A9718BC053E3B34EC65165 +:10EA4000E3B3C0F9C9C6D44B78CA253C356E29C991 +:10EA5000E57A4B9AA297F957208E3427D55F21216A +:10EA60008670BDF96C0FAEB3225BD4B52F5767E645 +:10EA7000139D9E955C7CFF0B0557569F4BB268A07B +:10EA80009EBC8D5528C06B268EE7B46755987E5F77 +:10EA900080D6797BFF8EFEA85AE1D5A1CF0CE23853 +:10EAA0006CE495D101F5D2F3A46734F4C3A090EDE2 +:10EAB0001BFB075D6199E9827AE97992EB4EBB4BCA +:10EAC000253D7A79BDA43333ADF841917D5E1BF9C4 +:10EAD00049ED4A0AD12F8D020D4BCFA09CA429B23B +:10EAE000A9674077615C36CCD443DFF77CFBC6E591 +:10EAF000227F93E8074EDEDE8B1FE8C77FC20FDC64 +:10EB0000A094097F254CDF6B19B23E3E9F3A9EF2DE +:10EB10004F69BDF87F948FBA02FFEFDF3CFF3D3BAA +:10EB2000B08BFC447C864A85BE0A8593D91F283762 +:10EB3000F51784DD1C7725FA8DE82F3E49FCB5FCDE +:10EB4000C5C4F983A61EDAEA1176E67E8AA1B19DD4 +:10EB5000E2D2F9BED683346E1ACB6D5E479D6DC688 +:10EB600049A887D371717BBE78CF219D2B75A1BC3D +:10EB70003EF7B35B56AF4419750D34ED8171CBEAA6 +:10EB800043F87B89F6F9A16F48DF76D838DFDE7D60 +:10EB9000F82AAEFBEDEBDC23512EC9B8878F8C63CE +:10EBA000FFA8EBA890B31D99DAEFC7535C714C0135 +:10EBB000AA474DB2753A327A39D75ED2CB28475F31 +:10EBC0007884BD72B5493AE5B55D9A8883935475EA +:10EBD00004D7AB0780F39C677796705CFCB4498FD1 +:10EBE000B7B3FC07491FD42A1B0BD59228FDADF9FA +:10EBF000CBC94F2FEB95DE473D31FE7928FC3AD744 +:10EC000063765769B232A227DDAD76FDFA0A2E3A55 +:10EC1000A85B9FC5CFA194D7C08FEAC3820EE7DA65 +:10EC20009A337BCB1BD7E7761C247AC0EF9380EE18 +:10EC3000D1EAFFF79F58FE9E9F81D0227E5C1CC6C2 +:10EC4000F3BDE7C930F3021DBC9FABFC9A44F1420F +:10EC5000BD53D8897317151E67CD3BBC6D92A22298 +:10EC6000CECBC2AD0739DE6D776A84B7A4CD20E87C +:10EC7000D79EC47AB57EFF0D220ECD001FD5CDECF8 +:10EC8000488EFC99E68FEC736A74CF92A4B6422644 +:10EC9000DD333884BD1E8A74DBE58E7E6EAD97D47D +:10ECA000FE732E8646DCE8944F4DB2B5C275317CBA +:10ECB0007DDA23EA36E55C81B71DC96199EE7B22D6 +:10ECC000183B6DE27D45F709BCAEB5CFA19C1FDFB7 +:10ECD000E1887C48F726B82F95703314C43EA17D97 +:10ECE00088C6F508AACEE74852355F6C5DBBB5AF64 +:10ECF000FAAB51AFA7A35FB40C2EE91BD23FF5C905 +:10ED0000D1B60B657347B185FB96D55326C4B4497C +:10ED1000618E89BEEFCD7D7CF5F2023A97B09B36CD +:10ED20005B88E52D6D0EA8C6583ABF2EEA4549DE30 +:10ED3000327A95C770AC3CFAD28DCC69D8EF7B455E +:10ED4000F635E394E95F8BEFC1D475D8D91ED6FCB4 +:10ED5000D7ACF432BA97900F3EBC1D9F9FCE0D0DDD +:10ED600026BFEAA3D440712ED2F3A577E6715DDF0A +:10ED7000273BECBEE9A4273B8D1FF7C3F9173D677E +:10ED8000D7287FF4C33F7687BF213EFF5AE238B0D1 +:10ED9000CB2EFAB18D8E24AED3FE9183EE916E68A8 +:10EDA0007BCF41DFABD9971B18968BE71AD3D634AC +:10EDB00099E837165A9B29DF88FA39C072E1053382 +:10EDC0004E1CBCA989E43012183013E5E8F65CE16A +:10EDD000675AF46F37E5783FF95743FAD617061CA0 +:10EDE000E4BCDC1ED32F5C0687FB11BDF71CB8BD4D +:10EDF00044C379BB82B62AC2D5B093AEBBF518DC4A +:10EE0000CDCA15FA6196B9EEBBB9814AA2C7E20331 +:10EE10007F71A4211DEAFF1A2A243BF94FC87F55B0 +:10EE20006EACFCA33F198BF31E729F2077F5B6885A +:10EE300083F3B2A781F5D5F327DB38BE7FFE5135CA +:10EE400083F4079E0FD2B1BD87EE7D8AB8CDF9A2BB +:10EE5000A63F7C7935E57DBFDCB77800D17B74AE09 +:10EE6000F0F3504E2A93491E7702EB4B4B9ECB4852 +:10EE70009E712B65AAC82395919C90FC3A3AA6B145 +:10EE8000FCEE91F99E14E584E506E544A53AA1322D +:10EE900015E586DF1FC2FA6047C7EB57D17803D963 +:10EEA000336804B565C6E98EF0B4A084EF8FB487EB +:10EEB0000FD2FB2371FD262D2ADF2325F0C7DE3379 +:10EEC0003FED49E3FD5AFA77A7698F52A8082B4610 +:10EED0007E62ECBD685FF207FEBCFA0B94A712BD20 +:10EEE0004226BFBDF13585ED4CE36FC6DDB25DB4A2 +:10EEF000D9FE8FD61B2653A9C998AAD643F41CE77E +:10EF00000F4DA6709AEC8D867C18854F1DF5ED840B +:10EF1000391D87EC42AC87517E73F7C16F0FA3F8A0 +:10EF2000ABEB94139270C9DD7F8BFCF9393CD7C3EE +:10EF3000FB918ED0AB7FC4F8EB0BAF5D52671AE547 +:10EF40003FD7E5BE7AA32D09E567AC38D713B9479B +:10EF500057634804D95E7D1DE1A83C2FB08EF0D8E0 +:10EF600075E26F1EFA9AC49E37FF9246FEC26E8704 +:10EF70003E4CE527C66BBDD8BF6526FF479AF536E0 +:10EF8000246F94873EBB3E6B23CB9BDE7133D98DC0 +:10EF90007B25F500DDABECC915795E2BAE5E205C00 +:10EFA00016A8DE3D6B2AF94B6ABE02748F73EF3AE6 +:10EFB0007B5CFC3BD830384EA943C80491FF3566D2 +:10EFC0001D4875821F3404C20ECAABD407DC0D6124 +:10EFD000B567FEBCC6BCCFABB94C1CBD27D7F49FF0 +:10EFE0004AA084FC27E43FE753227F507C9BF063D8 +:10EFF000BB0D8E3A51389F97055DD04F599E9E1993 +:10F00000F5A3EECAD3B7907DDE62E26B47A5D0438D +:10F01000911D5290F1BE0D58DEC69DD636F297BDB9 +:10F020000DFDA4D743E701C6CF389BC1F7A6E3BCCB +:10F030002540DF5F1D836A9AF07E6FBB140CD2F807 +:10F04000A038970DFF913F791EB6B75079C3588805 +:10F05000F0F917D2F9B9EE28E1FCEB4F1CA1B46529 +:10F060006D28E13EA68F7BCE5D00BDDEAF9CB2E891 +:10F07000530885B1FE251CED3D5E88E6930CA6C7BE +:10F08000A776512FFDBA393FFEA451DDEAFBE6F920 +:10F09000CF9BFA122D0DD3E134F9D174AF62D2A116 +:10F0A000669B4987350227D6F789EB21C8E7AF353C +:10F0B000CF9F784E5CFF08C5BF0BD1EF263C566F43 +:10F0C00088C7D922930E8B12E8501790C4BA4145D5 +:10F0D000AC6BFAFBF780F523F6B9C8DC67E2BE1625 +:10F0E000DBC5BDD862C40FDDD3FD4FED33914F6951 +:10F0F0005E934F57C155717CAACABA223E9580963D +:10F100004E71AFE5475B78487C6FAAE947DFB05E98 +:10F11000F893BB3B0EAE24B92FDFA7A864E7BB3A38 +:10F120002A53A84EA0EBB88DB3B35DED15AB0DD44B +:10F13000772F1E1D388BBE57547E426679A878AD56 +:10F140003C9844F1C66BE529255CAFA165D1FAF87E +:10F150001EDBD5AEE303DF28633F7DCA48522F4D47 +:10F16000C7CB53C80F781144DE437AED8BDFD1BA99 +:10F1700015C76CA329EFD982FCA0796FF8C5DCAD67 +:10F18000E44F0CF28A3CC8918EC6D9C4CFDAE3B200 +:10F190004A9F9F3B2EEAB06B9E528232B66FD829AF +:10F1A000EA42EA915F12EFD7CEEBD7EF1B94758F4F +:10F1B0003BCAFF79265ECB33B49F4C273F2F2F8568 +:10F1C000EB5C6FE86F677B77263FE5DFA7E37C8327 +:10F1D000F5A24BF8082205CEBCFC80885F7748E09A +:10F1E000C5058E781F70507C70A6D215A679CEEC1E +:10F1F0003DE1A07BD7C9BB4F88FA07B3FEC7C25316 +:10F2000022FDCF76249BF58AAD0EE253ED09ABDDEE +:10F21000E9203BED37FDA5BACDEF717B11F9FDB4C7 +:10F220009FCD12D7951FDAF712E77DEAB68B3A8A9F +:10F23000456D4F3808AF8B109F1AE9116865FDBC0A +:10F24000B8CDA1F6A65716AE8F6FDF77195CCEB595 +:10F2500070391486122EBF9C24F4F9972792394EE8 +:10F26000FAF298C8E2FF037CB2DD3B6EE6C5BAC392 +:10F27000B2EEB8263AEEDCF16E07D55D4C6DFF8C30 +:10F28000E937BDFDC014A2CB4D10A8A173DED49EFA +:10F29000A2925F3ABD53E89369ED4ECE8BDF04A195 +:10F2A000E564EFBAF6BFD242796FA3D21519A4462E +:10F2B000F5D34293DF000D4C8F33567C8F6DA69FA4 +:10F2C0000F8A28DEE9B277B27C77CD157F9F0036B2 +:10F2D000C4F3EFC6D2787A4D03A15FA66D177AED1D +:10F2E00046E8E4F96F247AE3FA5D79C36E61FF07BB +:10F2F000E351AA8BAED91EFF7E5D821D7CC06B17C9 +:10F30000FAF332717F225FD625F0657A44E8AD6961 +:10F310006F2ABE209EFB68785919E5DB2C3A25F24E +:10F32000E5A8F68FEB8E7E67FAD956FB16D3BF0D94 +:10F33000A9C19F55E0798F817AC2C8E6EDF0F7EB5D +:10F340001EDC9927EEE5F284DF707EE0A1AB35FC90 +:10F35000B5E695970B1DC51C576CF7921F2DB7FF8F +:10F360008CAEBD5F2950209BE28B67938224773F50 +:10F37000F4BEFFA38A915CA7D241F777F5B6D6E930 +:10F38000746F55BFDDEEA378A2BE4D61BD53BFDDE6 +:10F3900029E49EF082FBF1B74BD7135ED04F6FA3E9 +:10F3A000F967D0950DE50BDB24FEFB2B33A67CE63D +:10F3B00020BA1E4FF0D7A7F7EDAFEFF7C6F8EBC7AF +:10F3C0000696A4CFA3A74DCBA5AFFEF4E5AFD75DBE +:10F3D00014FEA2F5791DCA33D1BDAE5D62FF36EAD7 +:10F3E0002FE64AE42F76ED7BC441F16897A47E9620 +:10F3F000820439EB157674F7C1EF3B481F4526416F +:10F40000A498F2AFD272969F3A764AF1B94712F7B2 +:10F4100068BFB653CD0434BD9ECCFAEFDC49717F92 +:10F4200044FE09D53BDC2BA002E7E605189F54EF0C +:10F4300040F8AE859A16FE7EFD3DD0C0F59609FADD +:10F440006071D9C6964CD2D7B08CE3A765B09C9FAB +:10F45000C3F6BFC57A71D8CB0E555639FFE0E0BC74 +:10F460006030E6FDE29EFAA6F632F92FC88BC7316E +:10F470009E6735E70F8E292AE577761FFCEA5754F9 +:10F480003714413FBB98CE6DFA2DBB0F26715CD16E +:10F4900075C21D247A7E62E2F58C99776F1AA330CB +:10F4A0007DE4B1E2396CFF4BC58483AE7D170A035E +:10F4B000C8EFE7F7BF7495CEFC0F323F176F8BAFE5 +:10F4C00013AF0DC5D7815B74AE37E98CFB1AECC85E +:10F4D0008EEE6B8FAD33CDD78B9C49D241E69F2CFE +:10F4E0001D8EF3FFEB7FADF863EB2AF13C77931EA3 +:10F4F000CC34E5076C110FD9534F9EC6B8686A1714 +:10F50000FC96F78927AEFF1D9157B1F3FA3DFA2B10 +:10F510008D1AEAFFB22885EB12E0A2319DDA0F17AF +:10F520002B5CB7F0F0EB8B86C4E6DB4012F172BDCA +:10F530003DC2F56FF52764DE5FFD896ECF4037E988 +:10F54000BD8D53A8CEF746539F1C294EA9265C1BA0 +:10F55000B46E2EE5FB0EF3FB4F7AC53D42FD58F12C +:10F56000FE321347BB5F9F9642F984AE7D39FCBDE6 +:10F570008E7E26DECBF3FCC3F372A2714C5F7E69F4 +:10F580004C1C25EE47F09C244F2FFED1199C2E5188 +:10F590009C7BE1E477E9BCC76CFC3DB7A67D4E835C +:10F5A000BE4752FF7612E7272010B886E2B687F7EB +:10F5B0002F1C22BE64BF8CF9B1A66D4117D503D5AF +:10F5C0009E4AE132E1DA7D7FE03ABFDA3DA37E4236 +:10F5D0007E0FFA393792DFF362BB9DF54FF96B234B +:10F5E000196F2F1E1F9955C2DF53F7A5D0BCB5C7A1 +:10F5F0006C5CF7577B6CE46FA793BFF25A25FB3D19 +:10F60000D26B23B3484F55507C4B7ECFB181DCB6D3 +:10F61000CE33254FF8395D0792380F2141B1C00B29 +:10F620000C8CC34BCDEEDFB03F50837A301637D60B +:10F630007B73F26C3CCF9D8417A47F5348D2190F83 +:10F640003BC5B3A6ED450F9D63B13DC4FC6DDA6EBD +:10F6500017FD3BC413E8EF05E07B864F667EFE9600 +:10F660006513F9EE0816D07DE0AB661CF0EAA9C080 +:10F6700000D283AF4E0A0CA1E77B79F1FAD0804A21 +:10F68000DE37483399EF67770B7F2C918FEFE68950 +:10F69000FC4A5A16C4DD2B5EB23F79021FD31C22EE +:10F6A0003F447E5C9EC7BC7763BBDE3985F4D14C9A +:10F6B0006F964476FD97E6F837CCFB265026A47269 +:10F6C000FD067D2F2A83F2E47E3BD9C75966DDF122 +:10F6D000AC9B6EBD9EDE07B4DB6ECA178C117EBB81 +:10F6E00095F74FCCF35BFB9A5515AFDF6EBD8CFFE2 +:10F6F000F4789E592F3C18060BBFDE9D427AFFFC22 +:10F7000051BB59FF1F1CE81FDEF3FC96FE3842F781 +:10F7100040A8D78EA25EA3E73F9177FA79DEA8CB07 +:10F72000E7F99B86BEC579A2570F9C7A2183F56CB9 +:10F73000121463D7C4AFDFF5F4B6AF2698C9FC5DE9 +:10F7400006B3E3F069F1F92C88BFCF90C8E7174CF6 +:10F75000FED461DC4BFC59551AF4D3D3BAB74C72C2 +:10F760003D66F4C35FEBDB67F0F70E9B865E584E99 +:10F77000FAFDACF93D1DDC5FA133C60E9CCDFB8CC0 +:10F78000FB1FAE848881FD07868AFBB6DA2912DF6B +:10F790000BD48685BDAC9D2DECE5E0DD33ECA4BF3C +:10F7A000BF837EB2EE63357292EA5A6F36EDE4C4DF +:10F7B000AFBB184FB5A69FD8049986D0DBD9FCAC57 +:10F7C000DDFDDE72BE970C4003E5DD6E19138F83FD +:10F7D0002110589183FDB755493EB42830438FEF2F +:10F7E000BFEDCE198CB759E6F7772E87A30FF3FC40 +:10F7F0001DC4BFAE8EEEEF0C47BAD49972E01BA2C7 +:10F80000B5D1FD99EFB7EA88661CBB2DD8BD97DA54 +:10F810005D46B644F7E66F9B74BEDDE33F457A155F +:10F82000EDC85EBA5FAB73B8543AD7BB94541815A1 +:10F83000953B5F2E54DCEF8EE59778DF1A17C813DF +:10F84000F565AFDA8305FCFD8EB22BBB076C1AFAA7 +:10F85000CAD5A4E75E3D70EC6A470CDFCE3406865D +:10F86000B07DD977C8A3B96371259BB8B2F1539223 +:10F87000669A76331E67670867A49F771EBAF9BB3E +:10F88000848FDDB3B2252DC6AEEE79236D50CCBC8E +:10F8900067DBC5F71730BE1A7C6B6AEC3E57F03E4B +:10F8A000CF86C47C2865FCF73BEAF68E182DEA2348 +:10F8B000C1A07A8ABAD2795B45BD59B3F97786344B +:10F8C000EB9E5DEF27EED9E3FE1E5CC8013C8FB1D5 +:10F8D000DFC9F76F5D7695BFA7DB754ADD28BEDF10 +:10F8E000D9A014607B0CA89F51FCA1E55BF993069D +:10F8F00045C7CFC7EAA27E0EF531D7198E9F2EEEEF +:10F90000B7B19FEB0C2734804FC431A27F5C95E8E0 +:10F91000BF0E3A15D2D31329D584723509341BB5DD +:10F920002783D14C866D7C287C23A9A1B0C796F192 +:10F93000A14B946AF6C6BF287D6CF0A185471C8C4C +:10F940004E0FE7D125784C21BB3B1AB46E735F5C38 +:10F95000873346D776D1796EC8177AC59722E42FB8 +:10F960007216388F66ED6FBCAD83CF91AA6999741A +:10F97000AFB1F37023B7F763F4CAF55559E67B1FAF +:10F98000E37B48BF6B6D413EA7A7418C1F0BE15E37 +:10F99000CF392EBF48DCC39BE7EDB287D85E77DD59 +:10F9A00087828CFBD2F3C5F7BFC7B54AF047549A9C +:10F9B000BE12711E9C5FE17B1473FE711062FE41EA +:10F9C000B596F9DB3C7A4F32F93345257A48618F99 +:10F9D000FC4DCA95D3ADCB03BCDFB47B22E77E30B0 +:10F9E000327ADFE46BCFE5FCEB1A498E28745FE3D3 +:10F9F0002A1075C06108915F8EEA3CEEFBA1B3F35B +:10FA000067CECCA77D04C4DF894AACAFDC16DCC46A +:10FA1000F53273ACFA990280D39EE83DBFBD58D44D +:10FA2000D3D8E99E5DE57ACF0AC2EDC59CC0CCFC77 +:10FA3000515CF7398827B3054789BF4F24F09C02F2 +:10FA4000FA18A2F385A442DEAF556FF4487221EF95 +:10FA5000B7731284A4F13DEFF1539CA16AA623D59C +:10FA6000038DEDED5E5FD40BA354695467048F4D95 +:10FA7000D668FE16B35E36B1FEF94292A80FB2EA1E +:10FA80000A1E497E81EB49AD3A023AEF04EBBCF223 +:10FA900095D41518F6AB8AA275AF4887A5261DB870 +:10FAA000FE152DE420418730C7FB29BAF85EAE8AE7 +:10FAB0007CB289B837E2241DA9239F4AA37CA2FA0D +:10FAC0006ED21BCB275B721CDAC6F59148076A5BC6 +:10FAD000E74D3CDFFF0508619EB360540000000065 +:10FAE00000000000000000001F8B08000000000064 +:10FAF000000B0B936260F8518FC04B8450F9E8D82B +:10FB0000510495BF4D18BF7A42989D05C1FECFCFD5 +:10FB1000C0F0861D82D740711C107B42B1000704E3 +:10FB20004B7022F474F031304C00E2197CA8E6A648 +:10FB30003042E83B0C0C0C0D402C07C47390F4B918 +:10FB40003141687E7306861A6B84B88E010343398F +:10FB500010071A52E6AF513C34B0901F2ADFD91D6E +:10FB6000959FE6C9C0B001498D8B3B69E6EBF9333F +:10FB700030E8FBE3966F0A46E527C4A2F2BF06A170 +:10FB8000F2193350F95121101A00B5522727C80332 +:10FB900000000000000000001F8B080000000000B3 +:10FBA000000BCD7D0B7C54D599F8B9731F73E79981 +:10FBB0001B18601242BC8100A906BC40C0A074BDE5 +:10FBC000814069975F77AAAE1B5DABC3A3808A3083 +:10FBD00052B7E4B7D5CE843C0810702816220F1D0A +:10FBE0001ED260D546454B5B6D874259EDFADF4D1D +:10FBF000FBEF43576D035A7C5430BA55EC1697FF10 +:10FC0000F77DE7DECCBD9349C0FEDD47FAAB9773C5 +:10FC1000EF39DFF9CE77BEF3BDCE77CE783DD3583E +:10FC2000E5D58C9DC73F78FEB5CC189B9E7B326690 +:10FC300066590D63973296D81161F4F7FA0CC6AA8B +:10FC400058EE4F1AC9D867F01F1EC64669A99F60B3 +:10FC5000FD16812546198CDD8BEF4BF03F69CF42B5 +:10FC6000687FD931956DD018AB663D1E368EB1C90F +:10FC7000AC8F9E06D3447C4E65063D6B588C9EEF40 +:10FC8000D6F57E0D9F078AE251C46745307E891FF5 +:10FC9000FA393D263E310CEFFB44B384F09C358CA1 +:10FCA000B199B971E43F194B313602FE3BDBA0F14B +:10FCB000A41E664633BCBD4CCBCE161836D5E9BB68 +:10FCC0001A4C3001FE2947E22C1EA4F1B35888B12A +:10FCD0001B947815F62305959438199E5A9F82DF58 +:10FCE000CF14B386EEE0C0FE662031005E6B689EE6 +:10FCF000D95BCD58F33D068BC153CC424F004F0C1E +:10FD00001A2C3E09E04819A217EB62150F41BF9269 +:10FD1000DAFD1386747E04CA84974670AA83594F0D +:10FD20001DF4334E89CFC4B2807841FBE6D0BC6865 +:10FD30001CE02A5196122F07FC0106B66F2E669919 +:10FD4000EA0AC6BC65F0AE06CB3D8F6219EA31CD3A +:10FD500051B6F16D2E36A2C1EA5CB93534E3452FB8 +:10FD6000D49335A64F847A52F6F384B7A4992C0E17 +:10FD70004F594A3101F1D639DEB29AE0E5325E568A +:10FD8000B438ABC3717F2C16A44FA5459F4BBB382D +:10FD9000BE5290654401E9F3FD9FF8A12C4699E11C +:10FDA00023EE324CA48F1C64DAC3F83DC8EB8B1AE7 +:10FDB000DB1B10108F0CA797C6FBBDCCFAAE44B569 +:10FDC0007D9E0AC42BEB09D4D03B03E9598DDF118A +:10FDD0005E847F973437BD903E4E7AC9918BA3578E +:10FDE000738540E364E7A645AF9DE4786F8D1FFF00 +:10FDF000DEC4752310CDE82F08E5CF08FCDF6B606B +:10FE000046911E0E7EFF1A965730E077289F96E3A4 +:10FE1000DFF6737E5F83EFBDECCB45B14943F1BBA9 +:10FE2000C2B2B048FDF0AFF322F5A69DBA8CF7C57B +:10FE3000CB7C3D5C19899B8842FFBA38C9D7C54C39 +:10FE4000AD7B0E4ED14C25BE0EF9DE5E172C18236D +:10FE5000BEA38501EB5EB66580309FCF6319CB6C86 +:10FE6000008073C59B9800E56FC2048E021A8F4410 +:10FE700096A57E751FF6B3A54C621B809E4CBCC92F +:10FE8000C075E4657F5F703C5284A57C45D04F19F6 +:10FE90008C47B5F0C7FE4C9018D5C417591FACC796 +:10FEA0009D2C143915800F57B02BF8F87401E10D13 +:10FEB00093F426A906F9C963EC453631615450DE46 +:10FEC0005634760FF25B5374917A02FA7FD8E24788 +:10FED0006F68B60AC289B544AF2962D583D357FC8F +:10FEE0004864D9E100EF23819E62303E13C7B1CD53 +:10FEF0001BFFFEEF6B38FFEE057A09D1BEF3E76B0F +:10FF0000703DE87B3F27E0D360B301EE8F71BE8187 +:10FF1000AEC5C1F811C44701F98A7452824634064D +:10FF2000708EC0BAEE8567CB111FF12BC89D8C4F28 +:10FF3000188847AD96314DE42FC9885EE3E43B81D4 +:10FF4000CBA5910D065BE41887C466FF18FB05BAC4 +:10FF5000081A7C1F6632B31BBE6F91345FB1A3DEFB +:10FF60002E8B1E5B4C36BFBB001DB6E07780732026 +:10FF7000623E8FF56CBD30C3A11790BFAF609CDFB0 +:10FF8000AF627DE512CCCB4A6FB64D1688BF7F813C +:10FF9000ED3F7CA9E766E477D61B9F887216F8FBD5 +:10FFA000FFE2FB8BE56F5F3F3F976934FF79FC3DD4 +:10FFB00098BC9F14ECF5203F5F1E89473D63619D0F +:10FFC00028E649ACDF4FBF2333A328EF9A0FCE6B4F +:10FFD00040FA363F3EBFC174D0E12D6BFCEF59F3C0 +:10FFE000D85AB294E425C8319297B69C97A41E2E95 +:10FFF0009F0EB1295CBEF7F2F2615EBE3CD8E759B4 +:020000023000CC +:100000000870DBE47814E7A3CD9223930EF5AE0DD0 +:10001000403DB54C9B82C3B9FC191810F24944DB32 +:100020002302FC13D6FCCC54CC3FE1F3A588F91F86 +:1000300088C7915B63E7B0FCE8538A807A817519C1 +:100040000CF908F8B32105F46C13E2D132C738DAA1 +:100050002A804FB0DEB9C52EB9D5F631F47A252CF9 +:10006000E9A6B5A914B4FF822FE615006E5BC93668 +:10007000D28BFDF81E0425CFF519C1CF9FA7E692BC +:1000800019D160D02927EDFEF2E464686914E136E5 +:10009000E7F58B7FBD23DDF606C94D8BAFDE5D082E +:1000A000F252247E2A13A617949763844FC04FC838 +:1000B0001BE7C70D2E2F27A416BD88F3F00153E3CD +:1000C0001B607EDA3E9B5071BD36975DA3A29E5F9A +:1000D0005706659CCFA8A20AA08FDB82B07EF07B7A +:1000E00092B1EC447CBFA8BD82F4933103C1DAFD28 +:1000F000CF89C6495E2AD1F8706F85FBFD6B41D26E +:10010000A75111E8AC2466AB388E56ED1A9539E844 +:10011000AA04E35105DEAF0BF2F5DA26279EAB0009 +:100120003CDBCAD8B4B5D08F574BB069F0FE4874E9 +:1001300036E1D9AAADCEA2BE6E832588E39953C617 +:10014000E5A237B228E30522B44540FE05F17D82E1 +:10015000FA1F30AFD678ECB217F483E2A02FF687FF +:10016000F8F697A5445688E4E4224B6F3755D41F20 +:10017000963EF4E8B1147EFFC09C307503B0548302 +:10018000C0F5E180798AF079A2798175DBE6331ACE +:1001900090FE2C263075C6E0F040D2D33ABD103C1C +:1001A0007B9EFBE73BBEFAC15E8493027D05F4694A +:1001B000FA6CE2DB5896525E6D6D04E54BE2C15E6F +:1001C000942F8AAA35433FDB036192D78DAF848891 +:1001D0008E9B914E5EC63A922A3D3724357AB627D9 +:1001E000A3F4642CCE2640FDB3B33DA43741DF9188 +:1001F0003CEE7F56F2E7CF052E67DA053FE1F5B01A +:1002000055D69941FC900E0EADAF8A6A3DB971C2C8 +:10021000FF4386DFA54F0355C35C659F5EEAAA9F37 +:100220002F5FE782F8217B58329981784A8027CA6C +:1002300099A205D1A50E3C1A0591F015C52F257080 +:100240009E5A04BEFEEDEFC33D5C8E453D2AC1BB08 +:10025000FA5C9148F65804EC085807E1D035A92C0F +:10026000CA4BF027C693AD26BDD36BE309F33541E6 +:1002700088ED40B914967BB561D5FFF3F410C5291C +:100280007D59B42F872B646FB4345D43FCD9CF6F95 +:100290001EAE371AADF913BD86515583F6B6A2EFDF +:1002A000AD403FC8B4EC537D0FF24373D3D43E1C32 +:1002B0007FAA5831505FD8706435487E483E3DF281 +:1002C000E93BCD63F109D27704D2F76A15F5ECA6C4 +:1002D000A0677E86E8D5339FE85DE3F1607FFF6B22 +:1002E000E896378ED3824D379B4FFE86E864F349FC +:1002F0004710F8A486562DF189CEB2F3E9BB01E38D +:10030000AAC88D2B9F5EFF5DE3B3E95E14F2C43291 +:1003100041C4AF2F46F8CD925CF8FD77D3DDC62BF4 +:10032000D88F5796E365FCEFC06B82101FE501BEC6 +:10033000DD6CF1EB66A957C575BE03E53CCA954077 +:100340008CD617D677DABFF6FA82F69778E0792F4F +:10035000B6877AF74A7DAEF6763F211C3F5F0F31B4 +:10036000BE1EA4FFD1F560E3B5C1C25B6719CECF55 +:10037000559EFF9179E9D78B35AC0A7413F87D7ED1 +:1003800003E973AD185F80F4AD7CE1CBAC15DEBF43 +:100390006F7AFA364C77C64F78BBCF8F5862F931F7 +:1003A0001ED28BF0247FF17DF017D19EF5463C29BB +:1003B000EFE402FA19FC3EE658AF83E265F9A3F4D4 +:1003C0004967ACEE2389E0FB0DEE8F86582F433B47 +:1003D000B1083509D877C5E01F727FD41090CE8C54 +:1003E000CD227B2FE2FBB4E1DE447005730B3B1F93 +:1003F000F8047025803BEEBF00EE05F0F5B15D041A +:100400001767E7FCF01CDCF560BF80110D769F4696 +:100410004F2FE37EE907D55CFEAE037B06DF33E9B1 +:1004200029D303FD050D4547BB2B10CC32B443DF68 +:10043000AD53FB5814E1717B0BD91CEDEC40153B1F +:10044000E181790F186EFF5E2D532E8A1F5B474C9A +:1004500018151F621DA0C75BA1E6DA0D56EFBFFAA3 +:1004600089F672859C2B4BC1B139BE1E627CE25D60 +:1004700071C688EF79DCA5BFBD87C5513F36071728 +:10048000A9E4E79D3B7F5E9CC1F85432F4C762B596 +:1004900085E8720C835E0E3B58D6DAEE14C0649584 +:1004A000A34BCC5E073EC7718246E0FB1566EF4565 +:1004B000CC43BB1C6BC0F86E6A3A233B654BE066CD +:1004C00076A21AEDE19BC9FF6E1B31B202FD1AC67E +:1004D000D6F2B8B21A247BDDE6D32323AE8F925F27 +:1004E00052727D14FD8E563916453FEAB9114F9B65 +:1004F0000BB1FDB922E635D07F1A5B84E36A3B3746 +:100500006E54A2C0F8028CCB0B8A7B55707EB39DD3 +:1005100047C4B70D0D4D80F77E35973B5B023F32E8 +:1005200045F4AB752981F095608CE22FF36BBA4DE1 +:100530001C8F120FC6BDDA4038763FF0279C475D0E +:100540008275EC7527B8BE17C46360396E8EE5F10D +:1005500056634381FAB21A4E0526A3DCED7FAF61E4 +:10056000BF952F4C2AE2F13885E92A762D98B8AE4E +:1005700072FC9F71CD37D33C39B80E7F4762A976A4 +:10058000F407BD4C4DE0BACDA76B9BC29693DF2E0E +:10059000990D3CBE3F6C2AFA4383F1BB146D7F0F6B +:1005A000ED53A05D16F9CB1B9D9752B01DD867C3C4 +:1005B000495474F40893E9F99E88DF35E96D27FF03 +:1005C0008D10DDF1BCE6209FF7C1FA6B85F5C526DD +:1005D0000EFE5D568C38F9892CF122FA85129B4C5F +:1005E000F84B65C75FAC003C2688DC5E90223CBEC1 +:1005F000CF34B0131D74FAA16C4E1051AFF9399C71 +:100600007CF82FC8B32F15818ECF7BCCCBC4E905E6 +:10061000D649307251FB1320BEC3C248CEBFFC2F57 +:1006200093F5603C311E34715EFC86C15A00D4F1F2 +:100630005AA06C2D7CAE924E229E26FC8FCFA7C175 +:10064000F6231F996A0CF759C2B3E0BB83AE72CD93 +:100650005486FE84B6289828AA457EE2ED6D3E15A4 +:10066000F3CAF3F2E7217998BD363E8737BC320BE7 +:10067000C5F753F2EC0585E97071FB345EBE2903C2 +:100680006B28417C09DAA60FC7B3D39AE7ED963EF3 +:10069000DA62E9A34D96FE6949EAF47D63B28ACA3B +:1006A000F7260D2A6F4DD6D2F3FEA449CFDDC9F946 +:1006B000F4FC563246F594921615ED959D25DDF71E +:1006C0000B142FF865DD0B007267A8FB2586E5D4B7 +:1006D000BFD6BD00207662C0BB94B195CDCFD7A563 +:1006E000801F771677DFE001141EDDFA83A66325ED +:1006F000501EDFFD9200E587C51F1D69C1FA937882 +:10070000FDF6E657787D9F15FF2ABBEE0274E07276 +:100710007217D20C9E3B47F078EEC5B6DB8FED80AA +:100720008E3B2B3E597F3E296DF2F1FEB1EE9730A4 +:100730007E9FCAF1FF51F3C93A8CC791A8BA92B112 +:100740007F6A7EBD89C633C9820FFAE96F1DFAE957 +:1007500007A2CCFB9FF2C9F07EC6C25B9DD54B7D44 +:100760004D15E3DB918F8AAA7B9807A636B8A03B8C +:100770004BE2B12C42FB8A17E22341D4B9BEB1EA65 +:100780002B4B0C36165E1DF2B8DF97379A0CE5CB73 +:100790004322DF6FFBD675B3556BFF8FE2098FE203 +:1007A0007BE2E738DFE7785E24BBE73BD6FBFCFA69 +:1007B000582F5593AB37289EDA05ECDB8B1C27931B +:1007C00062B44FD9E9E1F8DBED5AF3CABE205FAF5E +:1007D000173B1F6F58FCB7240F0E31BD837EA31F3C +:1007E000F1B05A58DA652B1CFA05FE1FBDC9EF2A75 +:1007F0000FAB1FE62A876B4A5D7690ACB9EDA2601D +:10080000F5A5AEFADAACA9AE7264C195AEFAA54B05 +:1008100066BBBE97DFF505D7F791D75D33B4DD75BD +:1008200091F4FEC73C7AACCAA3C745CF1B93744B67 +:100830003EA778DCB9BF6CD905172A9F9BE82E73B9 +:10084000B85E766311F713B83F700BB3EAE4E36167 +:1008500038EC6C11EBF1B2EE1118D935CCFD3DB787 +:10086000AF62C53DD74AE02BA39DF70D8A8B36A614 +:10087000BC9A179E677DE519067AFD3D295E24D155 +:10088000381357F07591B89CF6AD85C2FBE636DF9C +:1008900035278DADAF3BEC65B16C4A96F64D66F1F0 +:1008A0007D5CD3DAC7F5468D7DB8BE8A66315A972E +:1008B000B266EC43553E465208CF32D91C83FD8FB9 +:1008C0009574827B2434E3C538FA9DB31403DD9517 +:1008D000D5A15F937DBD79E687B4FF10927A18EEBB +:1008E0006B842A055A27B86FF025471CFB32C9E3F1 +:1008F000B6A7F2E8F32CB85BD8EFBD632AEE9D856E +:10090000F6F0FF11095F505F64376D9E3992E20A7D +:10091000EB92B1FB2BC793DD9295E0B94EEEED5C07 +:100920008CF59F97C97EDE9854E9FD9199138AD082 +:100930002EAEC8EB77E3247F03C62BBCE58D718414 +:100940007B764AF76538EE7B2BB20CEDD9B3271FC7 +:10095000BFAA8961BB30B5DB5C2110BDC03ECF3C76 +:1009600044F3CAFB0BD76A5337E8886F82F6B95352 +:10097000BF12330FE1BE782DD0DFB18EEA2749D404 +:100980005EAC6519B2E3C13FC5FD1B31923219B7A8 +:10099000ABD689DC4E21FB5128AF253B630DD8191E +:1009A000683F87A2D67C4558C624016E864B1C76CC +:1009B0008EF8CA41C2FB5F4A442680DE0CFC695AAD +:1009C000F659DCB7AF53630F69D86F8CDD0FE55F65 +:1009D000CFF6F4915D50C5E9AEC1FF506E7A75B7A0 +:1009E000BF283BE785EC1A7739F0F19314E7DA5C1E +:1009F000BBDADF84F4106F2AC2F90FD47A4E601C80 +:100A000022100F67EBA7E5E81D7CC5F7D3630EF84E +:100A1000B74A85ED221BCE6076D1D9A4FAD363C044 +:100A2000D75989DB9B29D9BC13F9F36DD91DEFB4D4 +:100A30009F596BDEFF2C9A5F93A6E7F84B9E988D2B +:100A40001A00BFA398917E5E2B7DE527A88FE566EF +:100A5000238AF1F86639EFFD1CEBBDAF703F3F9381 +:100A6000789C7E93007C2AE6E4066D51207F0889FD +:100A700014FA61A93BC3C64306BE4F505EC6B0F927 +:100A8000BA902AC1CA0D8D2770BF520B1B1B58EE9E +:100A90007BC912FEBDADA2A76131B62F0E127FB782 +:100AA0009528D930D2BF42A17D781B8F2725BEEF74 +:100AB000D366D163B3EC96137BADEF0F4832D1A56B +:100AC0002D64D9175A73D4B94EFBE158F439205D1F +:100AD000BF16ED9727510EE0FA84CF6857A62A1467 +:100AE000BE1ECC54F49A90EB7BAAD8F95D6BA2FDA4 +:100AF0007590D2E7CF035D54E4E771AEFA1C8F2CFA +:100B00007C07BF56451D00746C8F74A4172278CDE6 +:100B100034B97FC5123B807E524D1BF9476572FC8C +:100B2000499C7F498B51BC4CD14D9247B6FC1E5419 +:100B30007FE4C9ED7CFE47BB223B945D61C9F1CAED +:100B4000F40D43EE8BA25FE5DCE76BAB8847D1D7B2 +:100B50005D23D5CD9666F27D60B497EF913E3BBBA9 +:100B6000FE4ADC0F3559B486E7D3AC15701C73B35D +:100B7000286F3F008CD17E675767A3316B5FB76FDB +:100B800086A58A311E68B49927A09D2A70FF50B2AD +:100B9000FC42297F5CD6FA1A0CDFC6BC75FADBBCB6 +:100BA00075CAC4059E568C5BD578C8FF1F0C8EBDD8 +:100BB0004ED9157C1F74B07AEB927C7FEFDF25F362 +:100BC0006D5C9FCD72E2455A27D3F97E0D8CD2C55C +:100BD00097CF5AEBB919D7F1F4DC3C3096B6CA4638 +:100BE00014E7C38BFE2AF0BF82BCE7B023BC326F90 +:100BF000EFF5F3EFF9F8801FFA67C4C31BB6FC5D8D +:100C00009C0CE445C9887EA9C03CDBFBA2205F3C6C +:100C100032E211E57EAA8DC760764BD4CA8B93CAA7 +:100C2000C05F0EB342FE7210E10D81A746DF3F2187 +:100C30009E82CCE59F8DE7A0EBC38E9F358AFAEBB1 +:100C4000C3510FA6289EDEACF3B8B9A8B214F9D5EB +:100C50003ACBA4503FA40593FB3106BB0EF7D9CB8A +:100C6000DCF17329E28E9F8B8D0AC18D3664781C6E +:100C700034C8E3ABD06F96C7B919433928617E52A7 +:100C800018F302A65AF170779EC160794FF653624D +:100C90007C1DE37606EAAD0BD5CF871FBD2E36B49B +:100CA0001CC9CF7B084AFAA921F6C772ED2476CA7F +:100CB000217F3E6FCF8B4577535FD480F69897792D +:100CC0000C8CB33447AF67719DF20D689EDBF189E0 +:100CD0007CA60FA37299ACF37DC028D7BF8A6A6641 +:100CE00009B8F5FD42F36CCB4F31C8FD38584F5170 +:100CF00094B722E3F608B86969E453D58A2B9C912E +:100D0000630B91FFC420DFA7B0E135DB712E9DFBA3 +:100D100047EBC7CFD31792FD95569DEBD8B653DB63 +:100D20009219AEF775CBBF8C1A04CFDEFFC8C7CBC4 +:100D3000E6C7FEFE2AB97C11D534D99DBEF4161340 +:100D4000F912DE5976A3C58FCC437CB0119EDC2E00 +:100D5000CF58F1AAC27C69E37321BAAD115902F5EB +:100D6000D6D96F64946BE0795BF6A03216F86BB756 +:100D7000CCED93B3DFE0F4389DFCC815F7C9C82368 +:100D8000A9FD6D87F728731CF4BBCDB27BA086E26A +:100D9000A6175FBF2CD877F43CDADF5D22AD97C190 +:100DA000F05B1E3D7A4C72D0E9CD2E91F6FFDE94B9 +:100DB00040F044B05C41EB76E0B8322E3B7979F4F8 +:100DC00038C1397B4F4689D13854E135998F13F3B7 +:100DD000B36E3BB447415FE242786FEECF874ED9A6 +:100DE000FB2102D203E0525EAF3F7B90F2BDFC9547 +:100DF000699E8F076A01F1F43D377C2FFA27579FD0 +:100E00007B90F627F3F350FC384E879DB9A192EF03 +:100E1000F76DC071D66059CFA40AD0297F9C7E1C83 +:100E2000E7B41C7EFD74AEF50C197FE848668F4967 +:100E3000F2E0DF8333F9BE6850CE527EC585F008FC +:100E40001900CFE95FFF85786CAAE574D824F5A86E +:100E50007F51BF4087AA91964802FA9D1DCBCCF9DD +:100E600080C7B76E64444F5839EFA3DF6CEF438DF2 +:100E700054BFC8EE9E9A8337A2817FCFC173941D61 +:100E8000F6936AE5614BB5DC9E936AFDA40FA55904 +:100E9000D229F7BE09AFDF6CC93FBB9FB631829D37 +:100EA0001F7C0CF755A532F06705B28FC99F6D19ED +:100EB000C1FDD93FCB4AC17C28B01FFF2CA31CD059 +:100EC000DCF9EA6D2513285E3E58BCB50DFC4F6970 +:100ED000FC407ADA76373B37AD0BE3E4CD9EAA3B94 +:100EE000C96EBBC8B86DDB98859DB40F344221F93B +:100EF000255AF64BFEF8228AE28AB7C33822CA087E +:100F0000CC738BF14919308EC2FABE05C7210F1C74 +:100F1000478BE537609E21EA8166A1FA4ECA03BB82 +:100F2000C838BC986777F5F737A62E4AF65D48B102 +:100F3000E4331F975CC6E310CD213E6FADC57CDE68 +:100F4000A62A83CEDB54C5B54F1EB3F3F95913EE71 +:100F50004F819F200E81AFA45E7FBFE4D89F3515DF +:100F60001E7F92FBE96D103CB192DB67E394B88978 +:100F7000FD8991B61EA4B7AD8FF2CF0DAC0FB14C69 +:100F8000B5903B37B03ED4F32896ED730376D9C6BF +:100F9000637D28EDCAEF6C1DBFAD601E6CEEBC0317 +:100FA000B78F986E9F7748F0B27D6E00F4319E73D4 +:100FB000586FE7CD476A5CF37095921F7FE1E35F5E +:100FC00069E9F57C3ABD3BC8FA7AF759AF6B7D2DDC +:100FD0001B7C9E962905D6D7BBCF4EE47C797844FE +:100FE000413E59A95EEB9A9F1CBEDCAF2EE7BCC305 +:100FF0001E88A8372C84716F621CFF8D82F6798C55 +:10100000475C373EFE355C0FB7C652F350F5943758 +:101010006A1EEC7FBDB53EE78A1DBE9350EE8C8FF5 +:101020002D5A04CF5D8A5010FFBDE09FE03ADF9556 +:1010300054E979F6D58917D8474B1D73CA85D676FA +:1010400089E4F0D8F5524B31F2F9187DAFC8E33797 +:101050000CF5D9A6BC7E815E9B106F9BAFF7AEBF2F +:101060009E9E11336362BEBE08E217F3034A3466E4 +:10107000642D1A480E7AF8AB7AEB2A61CA6FC5D490 +:101080005D83E8B01DE1894B52F3147D201D3AE3E6 +:101090003C8F64F55726EC75FA73A7158F95AF3220 +:1010A000ACDFAF286407DBF3B311E8544D8719BAFE +:1010B000E9DCC068DC1F0EF3FC4D7C7F8312FB363D +:1010C000E2317A8575EEC7CA4F13982A45681F51D9 +:1010D000A37CBD8D93FD165F6914D778C2C2A300AF +:1010E0005F3DA18C18C8576A6D228B5B164B7CF153 +:1010F000A791EF42022BC63842A03A43F5D6DB71E6 +:101100008614FB05F2D12502CBFD41BFA5953AD946 +:101110001B2F5BF3122EEBA37D93CAAE73C212C0DA +:10112000739DB58F1818D3DD837919EC5722C375D9 +:10113000576ABE5E37A786B687FB8AA21817ECAD42 +:101140009B03F0FCA64AF3109CC5D67AF59CBF0B16 +:10115000D3C30AF9215E2541FEFD25654B1760FCCE +:101160005728FFE808C683D7B5328AB7962E4F674F +:10117000517E5E52EBD5106EA0429B8D7266DD1DD6 +:10118000CC6802F87A8A7F2F35D598485B7BBD59A9 +:10119000DA0B9412CC992FEE2B8BDFC1408E5DE5DC +:1011A0008BBF8C74F45526489E79CB52F4BC5FCE2D +:1011B000D0F910FFACB489F6D9DEF55F630B1D7270 +:1011C000EA1D4B8E78AB989909E6F8F0019164130B +:1011D000DB527FD2B72C88F5FCD6FEF85D16FFF205 +:1011E0003C663FF2AF4EFCF9079CA78AC6F471013A +:1011F000CA6255AA0DE90DEB7214C7235D8276FD14 +:10120000FDEB95860C9FB75FE321093CC386FDD8B3 +:10121000F3E62B33F7E3BCED51F8BED9C63BD3D987 +:10122000DD408728D049C77D5F731BC543A373D4B6 +:1012300098540BE5DE2DD957711FB82180CE386B3D +:101240008DAC3651EE96D733361CF1A8EC6E2235B4 +:101250003AD6E28B5AEE9F02BD042FC00FC6FB5256 +:10126000381FFE7A90C750BF554AFCEE1ED45BCFA4 +:1012700089464A77AC9BBC388012490DB0B39CEBD1 +:10128000EC427A15F85C4278F56A80F4D2514BEE64 +:10129000C1FA1AEE053AD66BEFD1FA62C1E1170531 +:1012A0002FFFFD47865184F45E1C5D785F25D8C30F +:1012B0008B1AB7DC5709A096371EDC8AF6F1C98E67 +:1012C000C561A7BF77AAFD1FC2384F6F6464A2D360 +:1012D000A97681E242A7325FBD05CB277779759267 +:1012E00077567ECD526BCA8EECF692DFFFC61E811A +:1012F000F2D996770A294CFD3E5B1C2F477E7BE393 +:10130000FE35E585E2464B5F113CEC72FCBEB0BC9D +:1013100050FEDEF2CE75948FB3BC5D36CD02746E96 +:101320002E4E4C4479D09AECDAF5FAF89C9D321B9B +:1013300017E774CA1AE17E8CCACF03D5FDF6F374A1 +:101340008E28EA8DD7217D5B4E7C8EF26B8E16CF78 +:101350008BA29DB6FA552FADCB354A62A2E6C07777 +:101360004D588967C8EEBACF350FB3BC729E3EE3C5 +:1013700078A51EE2798122F31B4D40AFFAA041FE11 +:10138000CFFBBD02C16FB6FCE4FCF1CA8DDFD9EA28 +:10139000F47F64B013F4EA5CFC5CAC72C7D11BBC94 +:1013A0007E1AE7DF7B457ACEF0C6FF1EF919976DEE +:1013B000E3308C1F3CB295EBDDC2E7379A3ECBF1B0 +:1013C000DC28F80D8C4F6E9C64C953D64DF29749BA +:1013D000DD0CE3C0EB105F186A7D7537E55FD8E37D +:1013E000188C1FD727135BD10E5D2B654C3A0F92DB +:1013F0006CDC8A7A94B1F48B687F6E2CD318EEB3D0 +:1014000034079F50F13CD65A95D7DB183CA4A2FE76 +:10141000EE48A6787B4DE3F97A4196D98BF8695668 +:101420007DDDAAAF1DE265D32A1B4F50FBB5295EB7 +:10143000DE9C6C27381B0D0E772DDBC3EBD5587067 +:10144000D85EAB6CC161FBE723BF6EACB5BF77590B +:1014500065EB7B30331FCF3D6D9C3596F0DA18D4A9 +:10146000E99C66EE7D7DC1F7ADC9348D5F453B14C7 +:10147000E8B93162E169B78B48424178518FA7F0F2 +:101480007B3E1E6FE3635B9D710198FF9D5E073F8E +:101490000670FEA7619C849F83912A0DA602BCEC76 +:1014A00038FD7DF9AA5CBD835E1EDF68B4F9ACCC63 +:1014B00060689780065CBDCEC1EFA26998787E30E7 +:1014C0001ACF7BAFE5FB7785F92D757F2E5F96D61A +:1014D0004524660A910BF3D3866486E8D79A6CA0FC +:1014E000F9F40FB29FF443AFC78A4BB8FB6F04BA4D +:1014F000ABDCCEEE7B680ADAFD069D87B1C707EE4E +:10150000059DB7B3C73D607C11189F43FED8EF5BC4 +:10151000AC7561975F43B983FAB17AAA8AEB56D268 +:10152000BA49FFD6FDF6069ECF87F2A67AA0BC196F +:101530007C1D35DC5729E3FA8BD3B3B96AAA86F24E +:10154000AB3928B12CAE53298687C7C1DF4AF13C9D +:101550000C3444607C4AA549E7A7E43218B88E7E73 +:10156000656219F915AFF8D8F80AB447136C998376 +:101570007E5EC6CFD5A8E792952837BC8D4B495FD4 +:10158000A8D125A42FD68459BC10BDFFD9AB587261 +:1015900027F616F25DA071FF90F226B505E6BFC6EC +:1015A0002917B93E7EFF151FE90D3198F216DACFE3 +:1015B000901A17131FAB3807D3919E33899ECD27FE +:1015C000D62CA3FCF4577D14D7388AFBD93517A63F +:1015D000ABDCB895C625367E9D9EB97946E30EF9FB +:1015E000999F93C473D2E3917E9AC1F7D3CD449F60 +:1015F00058EC84B38DC389DF47F41A8C4E1F78B939 +:101600003F35C36B86D402FCD94F9F47D98B78DE18 +:10161000FB6C8869E8F71C7DF50AC263F509BE3EDC +:10162000EAC11F247AC13C7B8B31EF805525824E65 +:101630007E594E7C02F2939E018B6E3E2346E392CE +:10164000AB63B4EF065C41E3F2D770792E1BEC0A72 +:10165000E493FEEF35F09D21DF25EEC37DF9E664CE +:101660003B3D03D53DC437DEA0C57776FD2087A777 +:101670006A002F42E790DDF0340E2F506D52FB9040 +:1016800001F839D613E8E36948172908FD38E488DA +:1016900012E5741D8C5EC74E4C2CEA2D406FFB7911 +:1016A000AFA58736273B497E6CB0F4D0E60A93CECF +:1016B00049B4597AA6DDD2131D969CBE5DADB0E447 +:1016C000884679B91B99F5A7707EF55747F6D27908 +:1016D000089997A528E827DA8F4891F2F5B12C3DB3 +:1016E0003748FCFB861A3DD30CDFD33E93F48DC004 +:1016F0004CD7F98C7E39A7ED253D932EE6F536B013 +:101700002E7535962BACB294A1B2A69864C7FBE5B2 +:101710008C46653F2F0F06D75FBC5743B8DA30AB16 +:101720009DD0C5DB8D75C3492BBC9F8D5237EFD73C +:101730003F34BEB63E4E0FB3DAB1C3BCDD58379C62 +:10174000C1E6275005F3E1986F6F14E6C365E765BE +:10175000781E9EDEEEAA1732D2AEF2D157278EEA5D +:1017600075F473AC77DC907C710AF9C121B74FF93D +:10177000E2378367C99E6DAFAB6F990565395E2E01 +:1017800040B95C5BDC32FFB360A7362EA475B40CA5 +:10179000E506D9D1B7939C5BD6F15545877E967502 +:1017A0000AE4372D437940FC1A5750DFBC55913875 +:1017B000BB01E03CAAFA5DFA756930AED0BAC8D375 +:1017C000AF4B23F136A180FE59DA2EBBF4ABFD7E80 +:1017D00051E362EAAFBFDC318EF05964C9F345963C +:1017E0001C07C557DE00F3B75FF5111E271FDA5E31 +:1017F0008E7AE92D217DF33F627CF256BFEB3C9D52 +:10180000FDB4E3F351143EE8AF48F1E3787EFF64A2 +:1018100093D8B761CAE07096A2DE983610CE3E9596 +:10182000C35966E1077A378BF0DE5ADF7A90F2BC53 +:10183000A574F90DA087BFA5AAAEB8D62294AFC3F0 +:10184000FFF271EF56F979BFFD96FEB8D8F6F6F7BC +:10185000972CBAE5F6A5339F417BE12FE58B1D63FD +:10186000812F807EAFAADC9FFEB4F8C2968B4BCF4F +:101870002559E3D4DC3C44BD563E9E04784FCAD182 +:10188000DF7BEEF2913738E240C72C3ABD8C01D0B5 +:1018900002F4CF1FFF5BCBFD1E8C97BEF5DC5CDA3C +:1018A00047DEA1A46F4679B21CE9323C478F53A0B2 +:1018B0008F5A1CEB6D69C7578FD7625C6B7FF13015 +:1018C000C1C1CFB7EEDF32AF14C6B97457F1548C33 +:1018D000FB2CDF6FD1AFB3E9BE16975CB0E998FE81 +:1018E00013D2D1E353DDEBAB32DE56C87E5D5A1D19 +:1018F00057C402F6EB6074BCD582B7239CDE7C0033 +:10190000DABDC61EBC612DF2EB73738A7CD5397AC1 +:101910002D8A72BFFA35C6CFB79F023DE31CEFC9CF +:10192000CE71618CB7BC26713BFC64E7785E56AD26 +:10193000F22EF80ECFD7ACF3F127778DA772FE7A8F +:101940001C302F517B5E52F6FD0E6F66301EFF5B22 +:10195000AFD10C55D7A8F1721FFA79E12B97A31ECE +:101960005A7352D0D1CEDA119EF52FBA3EB85E5DD1 +:101970009FD405A77FEA1BC4DEAEF009AE7DEEE67C +:10198000E4FC83AE3C45C9A07D5C2908EF0BD8CFB1 +:1019900017DBCF953ECF27C26B521E5EA52BDC799D +:1019A000FFF9E700FC8623CF9FA19FE6F85E9183B5 +:1019B00043149B91BBE7C5D64FF8F7CE48B2BF2979 +:1019C0008E25F7162FC6785F5D659AF62DDF8F7826 +:1019D00074E73D0603E52CCB4AAEFD3435DBAFDFC3 +:1019E00030BE1119FABC4773B2619B944777C31993 +:1019F0003768BC791BCAA96311EB9C6150DBE33CDF +:101A00007F94C323E32A8B8D07B63AE3F6C5FDFB2B +:101A100029DDAEF8F1065FE645CC83FAFAFAA75A5B +:101A2000E49950B6F2CC9A7C3F6DC17CBB0DF63E7A +:101A30005AFD7DF6FE17433B77FDF4FA870AED83E6 +:101A4000D2C998E948852326F28F97F13CCEB0CED3 +:101A5000E3E47EA0750FF93F69BAF7215CCBE39D03 +:101A6000AD3EBE3E7CEA9B9477BEBED6538C72E9F7 +:101A7000EC18777DBB9E078C50CABBAB91281E68C3 +:101A8000D73FF2EADFB176C4CFE0E733999956C782 +:101A900041BD509D44710B705C79BE86941E328EA0 +:101AA0006ED6D4A51645789E1BED1B323385F724E0 +:101AB000C8BA447918529574C21BA6F8F7377D0549 +:101AC000F655EC7E06E71B8B2F2FB2DE3793FA56C6 +:101AD0008C93557605295EB7FF1581F6A1EF4B561D +:101AE000517E31F8133C2FF64646F6EAF072A3E237 +:101AF0003328477FCDE3E2E03854A0BF30EA958039 +:101B0000C6F575E28A6B434E3EE4F971C3E6F3FD18 +:101B100034F063D2A2E31CEB0D72BC1BE59110AE56 +:101B2000A53C5D5B1E0D5FC0F344868DD2A7E079B6 +:101B3000915501968DD54239A03F8EE72FFE73C394 +:101B40003D7383C037C3BC9CAF7EE07BB215F317F7 +:101B5000875DA2BF87F976376DEC9E1B81F10F1B65 +:101B6000A7DF89A9E71D4D8FCF9D3F33A70F36C152 +:101B7000FAC0F16D4CC6B7E1F88FF8789CE028F216 +:101B8000C108479E33AC93D7619D04A46E2A071AFF +:101B9000976EC3FC91EBC6C78FE3FCD8FB4FAC54E8 +:101BA000F3E0FCAC97D30D8B1CFB9F73454ED7F72E +:101BB000757DAFD7DE8BC0F9D6F83EC4FB3EC1B50C +:101BC000BEDA927C3FEA23B057E91C9F94A2787A50 +:101BD0000A08FB90C69B631CBE05FF81B16B2D9E5E +:101BE000AEABC1FB4A864DC17C2A453DDE89EBD3B5 +:101BF0006E9F3FEF6FF92ADCF149FDF0AE7EB982AE +:101C0000F78548F176A4EF49DF7BF57209DDCF4215 +:101C1000F47D7DFD1F69DDBEE5B3CF79C4285F4C3F +:101C20008E32F6E630927F59EF5402D35969CB3D9C +:101C30000FC61B3C27E4C917DE5793223D9D4EFB80 +:101C40007D5DF98D9CEF231FED7CDD815FA0C6F4E7 +:101C5000E07AAD94B8BD92D258EAAF2228BFB53D24 +:101C60004EB951EBE7F3D9929C4FFC6DBF7F538E79 +:101C70007FECA3FD379E4725C7176CC5F9DC985C40 +:101C80004EFCC0ACFD47DD92DB2ABBAE080FD4B4DE +:101C90002513C427EB93297AEA462A8BFB014CF3E0 +:101CA00018736AB16A47F618ED3F78FABC40375DA1 +:101CB000973E74EA8FFCBCCB90DF9D77D9928471FC +:101CC000527E7407FB690DDECBE2A1B88214E935C0 +:101CD000F93E34DF57A94C6B53AD33AC2E3CFBF3CC +:101CE00031C5A0C757C3F34987D33D0F3C4F341FBD +:101CF0001F9B1EF978E979788D6BDCD789FCFF0191 +:101D0000EB3081F2CCD3C1F9775C8A911C0C35EEB3 +:101D1000EC44FAF93A325995E6C18D0FC886B5629E +:101D200084AE40A27BCEC6351E2078EA2B9F7B0E68 +:101D3000CF37861A1FA0F6F9F8C1C8A96CE7DDE90C +:101D4000B3789EE060F58E2D1949F54E8F37AFF0D0 +:101D5000C3FC5E8589F323709D7776225DF725337A +:101D60009D7CBDF3791EA76BB42E2B2B5906E34E39 +:101D7000475FDD9EBD07CA7B603EF19CABB420404F +:101D8000DFF769FCFC7623D37E86F79020E3D1BE93 +:101D90007C9AE333808F2B011F871DF1D77E6EA7BE +:101DA000EC4FB653BF0B2CBCF627D39CDFC45D644D +:101DB0000F7CA0B3C470B05B1FAA499B3F057A5546 +:101DC000C0FC33475CA972BAE1413D2475F0FBDCED +:101DD000F2FBB1F9C1B637A496740AE1308033A79B +:101DE000C4912F9CD72E7FFEE338FF9731473EF0FA +:101DF00039CA4FFAA0859F07668DF03703EF27B4E5 +:101E0000DAE48DDF9E77BB0C7E7851EF10EBBE2DB0 +:101E1000D949764A4B3243CFB6E85ED5CABBC8A093 +:101E20001E54AAF83A5D57B688F9306E126526A29C +:101E3000E52D4B37915F84FBB1656042B424527845 +:101E40003E98996A1FDE6FE24D9B2AEEDF7AAB3C2B +:101E500006A6A04B5A2FAD1FBBBE54F58B2382BDE7 +:101E60009F3B0BE733361FEB4B567DEF98EB280E6D +:101E70005DC4D43EDC676D8B5E43F0559397E534CB +:101E8000C85D94E335CC409AA71897C3EADD1AE5FC +:101E9000F7875A123D58662B781C2CC5383E97D4CC +:101EA000C37728875B78992DE17130F8AE61FD31F9 +:101EB000EDBC7D510BE083F876D8DF397EA367F166 +:101EC000EFC52DB118F60FEE17C12FD6EE32EBA8E5 +:101ED0005E5AC0FCBCB12DCCC4FDA914D304CC17F0 +:101EE0001ED7C2F77153AC8F61B9D2FADE923C4C67 +:101EF000EB22C5120CDBB526BBA86CEBC936F52866 +:101F0000AD4FC5F7CFB46EEDF5B427D94DF5DAACCA +:101F1000FD7659E3F0032DBD94DF77C8E2FBFCE7C3 +:101F2000F8E969CA4F1C8B1147B409D17FC478996D +:101F3000C9287E80F610FA71A3E13B9D0318C0E723 +:101F40007CBD97C31FF2A7CD5F76BCE7D8892B5C19 +:101F5000FCC674E02F679EFFDDC067CEF3DD7775AA +:101F6000B9CB2BBADDE52587DDE5FAAC1BDEACE7A6 +:101F7000DCDFCB7A5CDF6D3C3A939D5BEBC763FCA7 +:101F800091C7EF3B476825180FDB629D5B6DC378F7 +:101F90003EE5A1A4E9FB462BCEBA29D948E51D1898 +:101FA000BF25FDC3E3AE5AE3BEADF5C3311EBB9CF6 +:101FB000CABB930D04FF658BCE603FBE8C72D09C74 +:101FC0009512F05CB937CA886FE4252611BFD3D7C4 +:101FD000DB807E79F9AC38F338E8F5B69FDB239ADD +:101FE0001D8F9198E0CCF77CDBD2AB367F98637A7B +:101FF000EA705F1DF42FD91FA90ABBAC4FC5F25B75 +:1020000016BC3765F36DFF741C772FC559310F016E +:10201000FDF1D2153AF9F5816AB0E7A1ECABD249EE +:10202000BF856AB202EE6769E06FE038472F77C775 +:1020300087FD95EDAE7267311F4F99155751305E90 +:1020400003ED66A8B3FF84745815E0764B73686996 +:1020500009CA972FF8621F233E675FDD4E76C6AA36 +:1020600000B3F2E699EBDE4EB0F3C48023CF488E86 +:10207000E4E71955179D74F89B3706DCF65CB365E9 +:10208000CF6DC0FC2299CE3FFC0EF54CEA79B160D1 +:102090007CCD7EB626C11E72D82DB2E6393102E45F +:1020A000E1062BFF7A7F244EFA8979B49F07AE822E +:1020B000F14AEC9808769892F664473AEC6B3C3D0E +:1020C000BB7C183D9F13C13E13157E2F8682F6966A +:1020D000837E17CE7BD25C7984B226A5468573F9C0 +:1020E000E0729572627818EFEB62090E1FEA3BF41A +:1020F000CA60F6680E3ED8A130DEEB029C7FFD235D +:10210000F9FEFA443C01837A383D61AF331FFABAD5 +:1021100000F7E7F7755CC80F66D67977959EED787E +:102120001EDE715EA7DDCA53DA5EF49FEC84631E87 +:10213000BF18E07C5ED42B909C0C7EB537E13CA7A9 +:10214000617FFFA235DF28192291DCFDAEFDF72467 +:10215000E4FB7769E584C8FDBB2F060AF877FB65C9 +:10216000E367E4876DF230CCC3DDBFD043F8F92FCD +:102170006D883AE33F35169D2E445725027475CC81 +:10218000B3BD0E1EFCC66DB40EEE5062B7201E4DE0 +:10219000550D75720DEDD3907ECA5F2FAF87CC457C +:1021A00058CF5E277706CD258102EB6AD85F2FC80E +:1021B000B6A03F62E5679A0D0956C81FB6F3DF80E7 +:1021C0000EAB381DF2CF27F4DF2BFD55FAFE8AD770 +:1021D0007DAFB495BF3A6C784F748A63FCDB2DBA3F +:1021E0006CB2F35B991587B1F296E80FE335581E90 +:1021F0008BF79BF03C8961A38CB5747E566489A7EC +:10220000E039AA0354223CF77C45B1CE73C6CCE535 +:1022100030AEFB7F5AC56CBF9DEE51C6F36A548E3B +:10222000994B51CEC6833A7E5751AF8DC37DE96E2F +:102230007A06590F3DC3A07FF1A9815EA6FBBB734F +:10224000F773A6919E2BD4F8257895DBE931F16FD1 +:1022500023CEDB2C7AD7FBCC6FE27747FD6DAEFA4D +:1022600032AFDF279ADBF1FD9F45B333407C59F84D +:102270005CDB60FC72A477B18AF3777F2ACC508E46 +:10228000B72DF15460F9FDBB14DA37D6CA5909E607 +:10229000C9B525142018F9879FC1FB34522BF87952 +:1022A000AEE51FF0EF509BF8E8F1642FE5ADEF2E9F +:1022B00061A609F42A315986519C891D4139A880AB +:1022C000BD8DF49A7AACD79537A52CE1F6B562E6C8 +:1022D000E97FC361FFC3FCED14BA6F4065F5CF81A0 +:1022E000DEB912DE2FE1EB7E09CB27027FE0E5E2CB +:1022F000EE1B307E7036F0E15C3C8FB74BC8527DF0 +:102300007F509887DF77F9B254BF34E8E3E5E22CD9 +:10231000D56FF716CFC378C1EE7BB87CD87DE4A526 +:1023200012B24B56C4873BEF191E9DFDFE1125824C +:10233000EF8DA77D0E79FE83804E741EBDA2BB0E6D +:10234000F5DCE84A63024EC3E8AA0C9B53FDA9C022 +:1023500025FB757419C08557A3F5D4A7061753AA92 +:1023600047BF60E1DB638A9F165CBC677CF4331671 +:10237000BEA0EE3F25B84DE8EF8EEEB4E0EE4A7811 +:102380003E25B802B54B59705BB48270CB1BDD7033 +:10239000A704759227E5D9B768DECB2B8D1978078E +:1023A0007339CCFBE2E0276A4FF35B5E06EDE15543 +:1023B00039CCEF276D8FF358FE82D53FCCE3276DE4 +:1023C0008FF355FE8CD53FCCD7276C4FF352DE6987 +:1023D000B58779B998F6D08EE85E9EB2DA01DDB1A4 +:1023E0005D54E3F6E8917FF87589D3DEB2F7117793 +:1023F0000985CF6DC7825C1FE4FA7D4B9810C27EC1 +:102400007B85A574DE681BC7376D7AE6E1F78FB967 +:10241000DED8DDD42DCCA8463E795E9800F5E606E0 +:10242000452BDE9FA1FA65891E01F3F5C7DC17F382 +:1024300098C4173C8F7EB7F0F3123AAAB9243EBC79 +:10244000C931AE92ECFDD46FC992B4B0149F4183F0 +:10245000CD0BF2F7E34239B8F87D317ED74C362701 +:1024600058006FC07329E9B5363EAE7E7C7B095FAC +:10247000A4DF8490635C80DFD2E040FCF01E65271F +:102480007E4AF65686ED14C08BC3E7F8E07BC44F56 +:10249000017C160707D71F477B45B2D35ACB785C20 +:1024A000A8B5F7AB59CCBB69ED10748C27368F5C9F +:1024B0009DC5FB5EDEA72B68414FDECDF39FBDC1FE +:1024C000BBBFC826E7FAEB9FD7327D97CBCF8A42B6 +:1024D00005C73ECB16FC4F09D9E76B82D307B7CFB0 +:1024E00059FD54AA37170D0BDAE79840FB1C886F8B +:1024F0000ACA07CBF4BD589E2BDE4DF1BCEF6863D2 +:10250000A77A1DF7216F42FB9DFC2F7E3EE0C1A400 +:102510004ECF83BD4FFAF9FD8C1205A93AAD7CD39D +:10252000E5756BB7617EFEA48C7DCF7FC7C8F15087 +:10253000EFE147385DF6268D5D3C6FAD8A9EF7264C +:10254000619C722E4EBC2FCAEBCD155798B8FE1E5B +:10255000B3E2664A995B0F7AD972DACCF1BEB28CDB +:10256000F96B281E6C0CAFC576B3BE807875005E23 +:1025700038AEA896DA361EFD840E7EAFC55CF10536 +:10258000BF330F6208B85927DC87D58486F1EFE5A1 +:102590000BF77A0AE5B50F0507E382369CC782166A +:1025A0009C5B4F7E523829BF034E87067086B27BF4 +:1025B000CBF2E306CB53484F2FC615809EC7F17E62 +:1025C000C1E90497F8A225C61E1741DF3F12610634 +:1025D000DECBE12D094E49B18B878F34C57531575C +:1025E0007C67DB4AE8E73B87F83D20501EB90AE7E5 +:1025F00035C3E7B5BF3D54FFF2D421C74BF36F8F0E +:10260000F73B514EB78B1F6F239D3FF05A71D67D1C +:1026100065BC3DB3E2848AB58E940C8F272A181FBF +:102620009C5C00CE27BC4FE0CDA03B7E087C6DE0DB +:10263000BDC3EFFF52A47C355B8EE7C3B1E386EBED +:102640002D7F799DB5DE9E047F0DD7C77793517A94 +:102650001EB0D65F265945E5B341EE7FED4F1AF423 +:10266000BE39594BEFEB7A9BBCE5308F5DCFF37EE3 +:102670004B58AAB41CD7C16185E1BE4C5771B694C2 +:1026800092A2D55429E6316D44FFD3E1DF6E9CB4AC +:10269000AD14FD9083B2F16FB8CF986A0AEB0FC109 +:1026A000F3C8E3A76EC4FB7C1E3DA8D0DD1F8F6D71 +:1026B000FA75E93770BE9FE2141D1EE27E6913961B +:1026C00071DE27F1793F72E27BA9DB705D0A8CEE47 +:1026D00051DC37E538FD2ECDB1294FEB43C54777A7 +:1026E00006E2C34330BEC023DC6F0C5433FADD82F4 +:1026F0008B877F9CF2223B42DDFA50EB05FAD10B2F +:10270000F573E4043F07D63189F373A08B9F97DB01 +:1027100037E54029F2C5B183C7297FBEA3E482F023 +:10272000AB8782FFB0358E7D074FED6846393C4957 +:10273000C1BB07D8B1470FDC88765007D01FCFC97F +:10274000747CA677C76D500E4CF6B342EB13FA9922 +:102750001972E8A75C3F6FEC68C3F6D6BCC1B22A19 +:10276000C5FB560286427131980717FD3AC677EFCE +:1027700040B915581BD6514F3CF6E8D3A585CE2B52 +:10278000407F9FC3FE2E44B77D081FF906E063FC1F +:10279000F8D853074A916E0F4FBA20DDAE2D04FFD3 +:1027A00011395B8AEBF9913DD6B919A97D6425FAF7 +:1027B000A387CDFDFC9E8538E933599B5D43FE6AB6 +:1027C000889F4B98ACC6480E5E0A0448631C3BEADF +:1027D000DE4F51A406923FFECABCF7AFFC5DCAA90A +:1027E0000FF2DB5DAA82430CFD8D8BF2FB2272FDA2 +:1027F00073FF4E2D73D71FA7C6B268E755211EC6BB +:10280000E078D4BCE09647800773EA81FC7655886F +:1028100007C0AD1E040FE31937BCA81663F83B22AE +:10282000C8104F15A047B535AEC9517E2E7A62A7A4 +:10283000BBFDE6D030A22BD227E0C40BCC822FD335 +:10284000BE2897ABF9702B526E3807425C7FAC7C88 +:10285000EB7ABEBF1663DD180F1F8C2EF9EDA17F3A +:10286000A2E76074B1E5BE6D3F8DB3C655658D4B73 +:10287000CEC45DFB99E3D36EF8838D430AFEFFE976 +:102880008BC7426E7DF1017B86F68D1FBCE7691315 +:10289000E5AC64C5910235FC5C6EE0EE0D8487AD5D +:1028A0002F02D53C4FE068EF6B7E94738FF58E2B33 +:1028B00078EFF7E260FC59A75C605AD4B5EF6DE29F +:1028C000F9964978BF954A71A6402DEF0FDA1DA5FC +:1028D000F567F56BF797B2EB2FB7EA2FEFAFFF7CF9 +:1028E000A1FAC7D03E26FB93CB03B151D985FB2972 +:1028F000A882F05CFD0C6FBCC7899F18E7E774ECF9 +:10290000BC8C0E2B2F03F32FC6E13CD9F917F5FC35 +:10291000DCF9F0B189CB0D8AD7F3FC0B3BEF62F009 +:102920007B6A32FC3E11CCBB0078674F083A9E2789 +:1029300011C28D137BAB7370079BC7FE7CEBDE6906 +:1029400059BABF202B52FEF97AFCE4C8A38371FD6B +:1029500021347DF071B5E6C6B5B0C231AEFCF1D818 +:10296000EDF37F57253F9F243F8F8449FC7C8D4D9D +:102970006FB4B3310ED5AA717D83BFDF877128D1C3 +:10298000920F73C59B54A4C73A4DA23B56577EACD9 +:10299000903D2883FD82F12C31C2EDA5FEF1686ED9 +:1029A000FE97E812388C5772BB6B9D6492DD254B05 +:1029B000093A6F2996F1B816F81B2AFDEE90966F2A +:1029C000B7D5F3FB12ECF6AAE9B2DBECFBAB57CAC6 +:1029D0006BF8B82C78A2B53EF3E1E5AFB7B2F0D012 +:1029E000F699CEE205E3B5EB2C3FA8D9DAC7B0D70C +:1029F0005F0BDA67E3697F89F6FFC428DF5794AC81 +:102A0000F27F84789C3CFFC92A2F8EBFB604C20A8D +:102A1000D2697B207C1C497BB2C94BF37A22CFDF81 +:102A20003F02E61EF26DEFFA8974AEF0E87A6F1895 +:102A3000DBB5DD3D2EECB4AF7ADBC70D795FD5EFAA +:102A4000ACFDE8FA30C7734158273CE21253901F9F +:102A5000E377DFBFCDB9AF11BF9BEF0FC0C4CF434A +:102A6000BEF95D539DECCC43B1F3D6EC727EFB5CBA +:102A7000FE6CDF187EFF231FB77D7E7951AD35E1F7 +:102A80004CFF2BB4676F8D8A147F5EFDD4EEE37824 +:102A9000FE75F54CAF86FEF4D5E71E3CFE6C04CF08 +:102AA00063F17B8D01EE713CFFBAA421C0F8EFFB0E +:102AB000C4C238AFA79987F2494FB35F84A739E8FA +:102AC000725B989F4761ED32E539A6E07F2817BF1A +:102AD00092965D7991CB3ADDE5A5EC9A91787E6787 +:102AE000E97D32CB08981FEBBE1FF9C630DF1F58B7 +:102AF000C6126DC8C7AD965F7EC7F72629B8BF7EE0 +:102B0000EB34AD429C92C363B545F7B781DF74AF38 +:102B100003BF6046C138CB6B87A65D7F15433899EC +:102B2000B652B4CB8B59C17DB4C5ED6E3C2F348EFB +:102B30007CBCED3CC8C1F090BA781E727EBFA9B0D3 +:102B40003BCFF462EF01CD209F111FB8EF01BDD83C +:102B5000F6FB2D3EFD4BDB770DD27E5D2411C37D50 +:102B60000AFBFE29458DD13E8A20F17D9A75D10B55 +:102B70007C2F83EFE210DF2B876E8FE78AF1BE4058 +:102B80001351A2FB5FB93E3B9AE4E7EC9BE5D8DF2B +:102B9000D079AF5F89B45FD65CCC8ED13D9D82A0E9 +:102BA000A39F676A5F2A423E337F29463C15D6526F +:102BB000C2FAA1F9749EFCC9B06CE5C1F78808D7C8 +:102BC000FCA3564FBF67271B51FCBD3FF11B7CBFC9 +:102BD000B4EE8F06E995CF061B64943FFFF4C8342A +:102BE000BABFEBB6E03C09CB3F0A73FBFAF4C38FE4 +:102BF000CF60784FC9A3219625B99051D01EB9ED69 +:102C0000904872E2F6EF8628DFE7B627EED8B700E5 +:102C1000FA17BE17E2BFD7F9C4B2033CFFB699DF7B +:102C20001BF5F4B5FF9AB2C68529DECD4D563C2B77 +:102C30006544511FDEE165B7E03EBA4D079BFFE6F4 +:102C400004EB24BC87E2B6AE62DA47EFE75B09EA41 +:102C500057E3E97276CB3505ECA3D7C23C4EFA4E6A +:102C600048A17B5385AE2337D3F8BAFF8EC62BC05D +:102C70008CFC1EFA7BD11A27D4A371A40E0A99F1F9 +:102C8000F0FD9D83021F57F7A43D9862785BD71E25 +:102C90006511C521791CCDC6774E575D0BAEDB396A +:102CA0005AF158BC0760CE771F25397DFB773F6E00 +:102CB000BB12DEDF2EB2BE0520AF56758994F753E6 +:102CC0001F14F37EE782DFFFBE924422D47FF28D91 +:102CD000792F43BBB7412E626AE2DB3DBF577E8846 +:102CE000E57830817271D561F73A5FD5F59A82E364 +:102CF000C2BC9F321024577FE4CEFBCEAFFF013B16 +:102D0000A7E03EE1AAEEF5943FB5EAD0E97FC3F52E +:102D1000B22A4F5EBC8DFF2819A86FFD45F9F6ED6C +:102D20000B33286FB36B7841FDD79FC767C98FDB23 +:102D30001FFDE001FCDDC0779EF8C30329A0E78AF0 +:102D4000FFFCF707BE8E76D28F7C1ACABD550FFFE7 +:102D5000FE817F84F19E3EECF5209F9C79F6DB0797 +:102D60007640F9CC4B13A70A50AE2CE2F2E8CCE344 +:102D70007F1AA9039CBB9E9D3B0AF9F1AEA7E68C86 +:102D80001A4A0F9E01BECA38F8CAB617F5C3006FBB +:102D900014149FB19E79F3F1CEE36715CC07FE5072 +:102DA000607D28D757767FACE03EC87193F5217DD2 +:102DB0008E1E7AED389E0B3A0DF3E32D303F30EE48 +:102DC000D11EFA1D94EC68BCB761E5A16BFFE6B3B8 +:102DD00035F8940D1DE787F5911E1930AFBF847942 +:102DE000ADC9CDEBA0F3F8C87AB2935675C33C4E8B +:102DF0001E388FA7F11F3307CEE39C22775EE407CE +:102E00006CC5833BF0E3A1C2F730D8F378C7537F9A +:102E10003BA43F74266FFD0E46E7E502C74B2B32FD +:102E2000AF2D9A8EFC104845699EBD9905F0ED4C7A +:102E3000EBBF976392E59B72DFCD4887BE67BD1AF3 +:102E40009E8F5FF8EC6FE8FEB6334FFD5CD149AE64 +:102E5000B3B000F2F40CEBFFFB05C6D5575AB9C965 +:102E6000ABF687B29877B7F2EE8FE6FD5B0DCE1B1F +:102E7000FF5D9A95992FCDD7F11ECBCC081AEFCADA +:102E80000C5F0F2B3347AE433B359FDE1B8AEC7341 +:102E9000D7B9F9C47B8B571E3A310FF96EB079B4AC +:102EA000C7ADE1B8AF80EFA9DFBBD6EB407EE953F9 +:102EB000506EAFB2ECDF337BCE1E5F07F5B33F54ED +:102EC00034CF959827D0A7909DF0B8A8E1BDBCF964 +:102ED000F38DFE2AE655E49F7BB09FF97CD0529497 +:102EE0009F1FC9FD5D9B2E175ACF171ECF27A3D753 +:102EF0005D453AC1CDA75B53AB97E4F16FA778C9A5 +:102F0000CF3921EBDBD740BF7DCFCB6C2F34B979E4 +:102F1000EA1BB25EC0CEFF5D9EBD734BA3D0360AE6 +:102F2000DADD922AB6F28E3379F6ACC874077D5694 +:102F30007AFB7E4B79993FF631DC6F107FE41310FA +:102F40008F550FC8E4F7AEF2F37BFFDED8EDA3F8A0 +:102F5000CCF6279337A33C7BF7012FC5E5963DF0D0 +:102F60003DA2CF523040F0DCFAD1A7D67C88F2FCEB +:102F7000CC8322FE560A5B16E8A675BE6CB196009D +:102F80005DCFDEFDFEF90358FFD64702FCBCF753C8 +:102F9000CB6E467D7F66A757C0FECEFCF83704FF98 +:102FA000CC8F436405FFE1E9EF4D76C607C00ED430 +:102FB0009DF18C5B9DF7C7933E76DF277F7BF7A65D +:102FC0001EE4FBDBF13D6FC77FDF06FF66E07B465B +:102FD00076CAED878B4CF4131DF508DE2A6FDFD718 +:102FE0000CBE8F56EA21DB3E5B8AF37D7B971B8FFD +:102FF0009F15717DBC4AE95BCAEBA74B395FF45062 +:10300000BBDF5872DDFE9EDFDEAEFFABA2B1797092 +:1030100078FB955E7EAF65FEFC9FB4E0DEDEF5F1E9 +:10302000C442E7DF06F6C3DFFF83C0E8DE2AF6B856 +:103030008FEE475FA16427E0BD84F03E86768B5D0E +:103040002EB5FAC532DA573FB4F27456F879F969F9 +:103050002B9F6C4518CA88AFDA7B06E7F78EEFF92D +:10306000E8F7B0EF78FA371FBE0CE57790E630A3AB +:10307000EF8CE8F9F0EBC00FEFEC16F12C00D8194B +:10308000D9F29D28FF1EF7B2BD50E51D395BEEBC9D +:103090001FF18E677C279CF1823BBABD79BF779088 +:1030A000B2CEAD35509EFFFF03A4CE4DAA008000E6 +:1030B000000000001F8B080000000000000BED7DE9 +:1030C00009741CD595E8ABEA5D6AA9ABA556AB5B64 +:1030D00096E4D262213B5E5AB20C7622A0248C91F7 +:1030E000C1402364221143DAB20039114CE361116B +:1030F0000344A5C59BF0D25EB4D8F2D2B631316399 +:103100003B9119F03809996981212661660421C42F +:10311000244064431826038C70C0E6FF4F867FEF7F +:103120007D5552754BB20D99F97366CED7399CC750 +:10313000EB7AF5EADEFBEEFEEE7BEE680975BF3B4F +:103140008531130BEF1EF230C65433DB0FAD99857A +:10315000BFCFFB9912F6D54A785E06ADD52EB507DE +:1031600018EB494E650CFACD6FA6446D026385924B +:103170009BB10C18CFC2B38233185BD952B5E55D51 +:103180000B74ED2A93BC381FFCC9D89ADF1B2A6642 +:10319000EC7F43F78B3CF80FFFAE64CC6A094981A2 +:1031A000E9D00A2CD8EF64CC620EADC983F92D3E6C +:1031B0004F890A6357F9AA1501E058375D2A314152 +:1031C0003F5F12199BC3980DE66705F0C3F1AD0C84 +:1031D000BF6BCF369F19B233FAFB02FE7334FC8209 +:1031E00031784F52D8F0463FFC5068789ECF9873A4 +:1031F0003AF48B47C75B3D00B7A10F23A4F7BEA6E7 +:10320000F5E1C33F1102BEB34887569BB41FDA3ABB +:1032100016B1E0FCCC54FCF146C0A367D917454376 +:1032200080479D79AB4581E7D255D33FDE3879148D +:10323000CFBA67570F0AA9D8FA97B199D03A8B7EBF +:103240008F2D63017B128C7F5E60FD9DD0CEB7FF1A +:10325000B1EFDDD9D0B7B05AA4C771ECA78FCE7348 +:103260001C7F87EFB433567504BF678F58EE85F621 +:1032700027DAF859CF066FBE1EE0BAAD714A29D2DF +:103280006B7A7FF0BA19D05FD258506A8275A892D3 +:1032900004A2DF714B7FC6345C5FF82EE2733B1BE8 +:1032A000B6203D434CB2125D5994C6D5B380D66763 +:1032B00044CFDF3659F676E68D7D7F492CBAF87A11 +:1032C0001872DBF1E8F5B01CECF613C32F00382CB4 +:1032D000D42F2D486686F98E055E4C6663E703FAA7 +:1032E000F60E8D475F4126FA06CC76938ABFDF3112 +:1032F000654FA7304A8F11FAA69CBC95217D538A51 +:103300008E639BF85C6F753812D7E3137C047C5294 +:103310002D290D12F07389A4DC21C1B826FB70AEF3 +:1033200019F8E509576839FE7E8F2934D90BF4F86E +:103330003027744906D265101667DEF9BEA76AF217 +:10334000A18A31C0E78D064B14E16F4BBEA217E591 +:10335000EC64BB4D32015E7FC42130CFADAC9FD653 +:10336000E18DD4EE1CC4BF12044B98870F23B7C560 +:1033700090CE2C35D00972781B1BB280F0B26F034F +:10338000EB62BB94C9D42E630AADD71D2CB68A0953 +:1033900004B78A78E870B3ECC15C9417F6723AE12E +:1033A0007B21B8DF6D89F4A13CEBBFBF20851EC334 +:1033B000F91A40B0AF2885EF4436F519E5461FD716 +:1033C000AEF129B32B97DE94823A605685F352C64C +:1033D0007A357D50769948F3FB62F653C2CCB1F34F +:1033E000B0D07C65443EF371D944E6047DE2D35805 +:1033F000477F2F719CFE7D5FF355EC9DD908AFB2DE +:103400000BE14D842B11DF2735BD528FEF19E4AD51 +:103410003E245B65185FFFB94BC1F7CA2EB3D0B825 +:103420009D12A39631E545D487F52116EE2CC16592 +:10343000EA51104F1DCE44BCEAB7AE16D6215F2B21 +:10344000F6C014E9ABE3F963C94CF4D3E165FD2F91 +:1034500056D82FBDF07B4CB1B08B19577619C72FBA +:10346000006441FCD8AD49D1FD79F8BD76FADE5A49 +:10347000D087C86F89743C6D95678A805F77913774 +:10348000AF0DC683F60821DD4E27C933CDC6DFD385 +:10349000B4DFDBE499A8DFD7D665D1EFFA3C6B0542 +:1034A000AECF7479ED1659E353D837077CD5C0BF3A +:1034B0000D1F4DDFD50C7029EDA932CB853E7E075F +:1034C0009F7BD4D33F80F91ABC2CBF13E8DB6C661A +:1034D000B46E30B2A81AF8F05F5A0EEC40BBD7D0E9 +:1034E000794D1183DF974BFC79F39A6B8AEA0DDFF4 +:1034F000D3E1F8C9667F25EA89669800E73F6D7FCA +:10350000BE17F573BDE317BD46BD7C3A85F3D5B94B +:10351000B7AEF14E2379968EA05CEBCF3FD7F8ABD8 +:1035200001ED1CEAEB4AF6EDEAE9088FB46DFE14F2 +:10353000C44B29EA04B84FB7CEC8473BD0D0B9BA7C +:10354000320BDAD3827CC401F25EFCF891AFE13A2F +:10355000382550E020B7A7F73FC69FCF91F3C400AE +:103560008E63B5489FE2C75F51DC338D7A2742DF17 +:103570006D1FA127FFDD0EAD88EB5ACC02FBA149E0 +:10358000BFE144EE528067A3A6075D6E2E9FE9332C +:10359000455AA72D407F6C3FD0E649769BE8B93E5F +:1035A000CEE516A8CDB6845C6E68152570AA03F02A +:1035B000B1F958A013A6B43085ECF5166BB00EF532 +:1035C000DA87476C32AEF75A61B0F261D4FBBF4A7A +:1035D00062FB010FC7E44111FB1FED34B13658BF48 +:1035E0008A5B1BFD02F49B9EB6056C7908E7C93621 +:1035F0007C5E2C32D904E367B8F308BF22355C89BE +:10360000E6FDC3239BB242005F3AC8D020AEBB792F +:103610002815D779AAFD442AEABD8FFAAF7231E79F +:10362000F9F49EC8545D0ED080B224A6DA8DFDB4A4 +:10363000847E56C2F8FCB8E787DBFA2B10FEAE3466 +:1036400016D80BFA6192735040FC33E19D56D0EBD3 +:103650003E737F05F67D8DB0466E54E631EADBEDB4 +:103660004C6A8575C861F01CD7BD99492A8CDF2743 +:10367000F657A1DC298837D059320F2F6C13509E92 +:103680008FF17900C0F61223FE831AFEEFA70681A0 +:10369000FF3F3C365BC2FEF343EF8471DE0F8ED9F1 +:1036A00064A4AB2337FCB31C0F814FFCB0C13A4874 +:1036B00074FEF0A6245A870F869EAF7C189E7FF476 +:1036C000AC0D8417FC8A5A0E17BB057801FD2B162A +:1036D0006BB3C0F303B0AE689F0EE770BDF1C121BC +:1036E000318AEBFC51FF2F45EC4F753389B971FCE2 +:1036F000A088F036D53289F4A679B00DF9B1696B9E +:103700002943B99DF1E6F20FD18E37B1987512C2F7 +:10371000253B03FB6580333F965B3A1D5785CBE322 +:1037200007471EFC36CEBBE6A8906F82EF543C7D67 +:10373000EFEF1E85FE3DFD79A500296BD2F8F29CC6 +:103740003BCC709EBB55176B83F69E6C4EE7243BBB +:103750008727E96981A11EBAE7505214ED262B4F45 +:10376000237B3CFF9810BB12F1586F8D229D3E28A1 +:1037700061B12B61DCEAB5495115FAABFF14F505CF +:10378000A78FCA5961B13526A622FEAAEB0A5CF7BB +:10379000574C81BD00F724738CE825828385EBBEEE +:1037A0006FF1F43F34C8A37C176D39B6A3630AB137 +:1037B0004D16EAB791DF2DE012003D1FDA74A2CA60 +:1037C00003748E3A60C4D761FDDC9FAC5111FF6772 +:1037D000C0459A05AD6E6F8B63A93719DE6FD3F0C4 +:1037E000D7FB1F38B4718531E20758B754FCDE3976 +:1037F0000B5FAF7B9EB6D37A551C1B48FD06F4EFDA +:103800005E670F201DCFBDF5332BCAD53DFD82C8A5 +:103810005CF0FBB13D0CE5E89C7BD01A7422FD0600 +:10382000ACC857F3FB5FC91D32C8D787EB4FE4E242 +:10383000EF47DD32D1E703A49773944E6BAD83223B +:10384000DA0BF528F01DD277CA6FEA915E51D4D316 +:1038500000D3936E37B7B3E6582EE2B5D6AAE92166 +:103860000D0F59E27CF07DB785F0DCA7E9A33D6E32 +:10387000EEE7823EDAE38656990E0AAF8CF45114D5 +:10388000FD4D4B61953AC4707E89EB497B2C17E95D +:1038900001E3BFCFC7471AF71AF597361EE845FE72 +:1038A000D3083D35FE2BF8B12013FF1DE3FC7777DD +:1038B000BF4074FBAAF44AA45361CD065B2EC0F34B +:1038C00029CCDB09F49971F4802F348E1E6BFCCC6B +:1038D000C462B30D7D8D3E9543AFE4E7A25E3D9C8F +:1038E0004572F1D1A9815C017E7F5FA3D73FBBB94F +:1038F000BD87F5A844B9506F606C3FCAA533908F5F +:10390000FE9B3EDF6B1A3FE9EB00CA207FF10CE320 +:1039100073EE1FAD4DD29E174FF07E2A3C477B546D +:1039200098F89CC373EE2D4ED7BB8B19D1B5B0E67A +:10393000A30528BF9F82FCA29DAC28E6EBD3F434FC +:10394000E7CF26A42FDA5F77CC8AF2A8D321A9FF8C +:1039500014A7F331A033FE2E0DBEBD06F556BF8D64 +:10396000A19EFBE04F2AD1B5F37052691BD0B57907 +:10397000A8A2AD1EE7652C88F645A74FE5D01E1F0F +:10398000BEDF79E4C8345CC7AD9A1DCC36C75A9106 +:103990005EA25D76A3BEAEB7B130FEBE05701A243E +:1039A0007F45217B634BE3F67F4AEF7D271A508FDB +:1039B000B21409EDFCEA63268A83CE1C12A20CF035 +:1039C000F4DC54F6860B7EFFD76C2BE1BDE5D148C5 +:1039D00008F555D2A1E400C2B7FA5146E3D53D42FD +:1039E000743F90726B0BF42F81E731875D41FD9638 +:1039F0000D2A02DEBB3B38B8C002F3786A42B3310D +:103A0000EE430771273C97434E09F56B465044DB64 +:103A1000CFED14FC97C7A2143FD41485AC6900E71E +:103A200072A6DEFE1CCCBFE5FA077C21C07B0AA88B +:103A300043A4C3AAEB6F695B88F03F63227DF8D192 +:103A400033B3DFB0215FC13AA1DE4C8ACD23F893B6 +:103A5000007E87C19FFBE858812B348EDFADB73ADB +:103A60001E841FE8B78CCDC92FA17EF3A571F94C38 +:103A70000A062B14D4FB35D0921F13F691FE328721 +:103A80007DD506FE592D70BDA094C9C786487EA578 +:103A90001294DF2DD7171D3D097D8B2495203DF213 +:103AA000D344CD5F51F211DF680B1B46FDFB871637 +:103AB0003BB5EFB748C31D96513E17EDFD0B90EE99 +:103AC000794D92600259F9AE9975D820FE294B13B1 +:103AD00034B9891F2737062DDAB81A5B1A8EE3FA34 +:103AE00049970B7DDC77C2305F098D3BCEC7713EB5 +:103AF000D1ED4F9E0A7019F21ADF3DE018EE30AC9E +:103B0000DBF2A83BAE3FE2F769EF5F302E057DC8E0 +:103B1000201E70F029300F43FE5FCD94D03548173A +:103B20005B71C48AE6BD71ABBB5204BA5D6D5AE4E9 +:103B30004239B031EE3727CEBB05D611E9B7B6C54D +:103B40004E6D578BC4908ED1161FF537B4C8D40F65 +:103B5000A5713DE015791CD0ADAD5B97D67E53A322 +:103B600083DEEAE371C5ADC05F66E0738CA3010C30 +:103B70007525E68B8021D0EF30D7AE1A3481FF6BEC +:103B8000AEB19EC216F479280DDE334B211622BE4B +:103B90005118B77BC39437AAB3861AF0B9ABD0AE2D +:103BA000E27857F930D9B9DD56AE9F3ED2F22A3AC3 +:103BB0007E4D1A1C4D1AFF30B46B44470FD1DB9673 +:103BC000AD32E473BDCFCC21B22BE7A1FF9000F45E +:103BD000778DA5FF83248791D605487F57B9242286 +:103BE0005C579B9C64A73F890A947F9B687D75FA0C +:103BF000EBEBD158C822A6545C8F10F5A32D8DB4E1 +:103C00000E1B5AC2D4D659831DF8BDC6E8C7E7C5F6 +:103C10007FADC6EF1BF4F5B8583CDDC148DA1CDEB9 +:103C2000C7711E36AC623CE0997B5641FD96279BDE +:103C3000C36C2EF68763A81F1B147B189D5957B9B8 +:103C4000D28A71D47741E19A4015FCCD94D0769C0C +:103C5000C73337B400F3369E6094E0D5E1B830BF87 +:103C60005FDCB8D32D32E53147F29F6D66D65E86B4 +:103C7000F990E22D183FF6247F8FF2A4CDAA4DB221 +:103C800079481F511EF54EB35D423EACB3847E8829 +:103C9000703EB865918AB1F6B9CD5F8F613BDD1397 +:103CA0003C82FCB667E5AA5CE4937A977C16FD3B00 +:103CB000C61E5DF8F25CB41FF251ECDFF3FB250B7E +:103CC000ABD09E64CA0F08D01F4E5BBAD00370D72A +:103CD0004FE6FAD1BC65602DEAC77BD3941F73BA57 +:103CE0005ADCEFD9319F0BB88C83D7287E66F69EBD +:103CF000215EE94CE7761F681D32EA01E0BF9F2193 +:103D00009C3AFF390A13F86F11BB00FF318DBFECED +:103D10001A7F855E4138D3353E4C5F747E397B5DBA +:103D2000E3B3931A9FBDAFD9019DCF5235BD91F832 +:103D3000DDDFE9FCA9E99144FB9C64E2F67960DAF5 +:103D4000F65BD18FB73D5E948F76ECC99C4816C662 +:103D5000FF2E91E711365AC0AEC0FBD3B3CFDE2E93 +:103D6000039F4D9FCBA25352B18DE5E7CDFCF3E904 +:103D70005D91163C9346FA2C4A7AE83F60BECF89A3 +:103D80000FCC514DBFFD79F3BD9FE0BFCCB0F278B1 +:103D900089553289FCC2008FFFF6D5C33BEED1F9BD +:103DA00036A0FDB490DE19E67640A2D697CEF7098C +:103DB00040CF1DB796E27C7CFDA0BF15FBFAFBBE91 +:103DC000746E2767248D3C37A35D1C7DCEED816723 +:103DD00051BC5D74CDB5C7D9C16C3B84E1F05E5276 +:103DE000A11437EECFA5CB83F822D2E14646FED709 +:103DF000B9FC30F9FBAB738A4A54D9908FB686660A +:103E0000A523BF675B5523BFEB7C0E74B5FAE1BDFC +:103E1000F7E03DF44FAC917B4FA21FD5394FCA4319 +:103E2000B97A58C333355647FE566AA1487E5DE7D6 +:103E30009415275DE8AF827F85FE566771FE97F285 +:103E4000AB94F43DE4575D95CEE5293518207F2AE3 +:103E5000B52640FED597F5AB1A2279717ED5F51AB5 +:103E6000DCE0575D9F9E81FEEEBB763FC28BFE2E4F +:103E7000B41B8A2BDF463CCF1482BF887987D8C217 +:103E8000B7D15F741583BF28A0BE6776E42B07E81F +:103E90009764C4F7D180F05019ED3384F74BC85FB5 +:103EA0008C9C8FF44561B2B38EB99118DA87D4F245 +:103EB0005001FA27E0BF7E3BDD10EFBAE6C6FBB942 +:103EC000EF26F0F579EC27F1ED08FE53877A314EB5 +:103ED0008D22E7E4427FDE13BEF3BDBF712A583363 +:103EE00088CB3B2FEFA6716B2D89F4934BE3E92729 +:103EF000D3FECCFDE97A1E4DB93F9DF43A1BE56B2C +:103F0000CA2FD947F999FA5242FFCFB4035FF1FDA6 +:103F10007416527DB05ECBD6950CA03CC012853194 +:103F20007EB2473629683F401E36213E49BD4730A4 +:103F3000C536461EAC93412F1BF8F8403AF7AF0E3A +:103F4000A48FF87D4CF6325644FFC3FBEBBCC4DAB9 +:103F500098B342BE15318E2B3E6EA7FCD1544CA4B3 +:103F6000035C5F633111FD8C196C88FAB31035E87E +:103F700097405889FDD96C38D76AC2FD91D82AE498 +:103F8000C7275CA127907FCE6E1B7C5B80DF1FC89C +:103F90000AFD7808ED03CACB1C0CE10356D4D712F6 +:103FA000B6C04BCBEC4EF21BD93ACB07C6FDC5FFD2 +:103FB00063520EF3F5CB96DE4B36AE8F3A820FEEA0 +:103FC000135898FE17D5E80F3C62D837B50CB9974F +:103FD000611E6C33FA23C08F8507B8FD6D7F53A037 +:103FE0003CC656F447C84F61F4BB7A2B8BB6639E30 +:103FF0003437704A463DF5BA89ED277A05F230BF6D +:1040000096F966B284EF817C5F76B341BEDB41AE48 +:104010006240CCB42A85E4EA5C0AD8E999067D6658 +:1040200009FD1CE922A4CE0DE1771E3C2DC8A8A7EE +:10403000D21705C8AF4E9B257F2C921FF3C1C297A4 +:10404000310979897C04FBED96F7175681DF92865A +:10405000FB0959207F5B3E7C4985F97F952E6B716A +:104060005D44B1207CE0EE215DF53EBA7F48DFF48F +:1040700069CAEBF8DD7735FAAFCAFA8E3F34CEFB6A +:10408000AA363EEDBA45B10E806FA5C67F4A2DFF18 +:104090003D917F2D1E1E0F407CF02EAE93590A528B +:1040A000DFE4E4F8C3EBF41EF0EDFBF87DDB9B36B8 +:1040B0005A675B763CDF26CE7B46E3DBFE74E54346 +:1040C0009CF7DF960E3D807C067CF5713AED2786E5 +:1040D000260B30E4434BE8FB66F87DD8A49CC1F97D +:1040E000815FFE989E3131BF8CC89DDD49FB37CB87 +:1040F00046F8A6D48A799D86CF5D0CFDCE65CCCAE4 +:10410000643BE547699F1DF7A77E5A46E38328175E +:10411000CBDE5CF8E25BC0176F4F323161EEE878BE +:10412000A68D5799B220199E2F5B6423396A787344 +:10413000DE2ADC7794F2CD61011DD8888DC9867D99 +:1041400022C3FBC2178206920E5FDED8F999B16FC7 +:104150001ADB3F2D687CBC5EA0FDA6C4E7CBECA9B2 +:104160006AF2CCB1F3E67BF246E44705F969D0E4A4 +:104170008769F25AE491E9F9C1341E7F3798158AAC +:10418000BF336B2511F3EAFAEFCB3CCA02CCD74B15 +:104190008A54DA0E8AEB9D4395FF384D9E580F2EB8 +:1041A0008B7C6193C78BBF15267B800E820EC78BDD +:1041B00001D56642B90ED23E8815F80B5B3BE68D01 +:1041C0000B70BDFAA975B2416A53213EC556629281 +:1041D000806D1A0B50EB61416ABD2C4CAD8F45A828 +:1041E000CD62FDD466B3416A73D930B5329344E3EE +:1041F0007E7E3EEEE841BF9005A93D9CC7E39BD380 +:10420000AD6686F934887728AE51DB6C52BB87E205 +:104210001C7ADE0C718D0DF8ABD193AFEF2B555F8F +:104220000BCF1FFCA5A9A493E8CCEB3F12E963B226 +:1042300017ECE830E423DB9FB4D74681CE875BE5FB +:10424000DB83067DDFE8E17E7BA387FB0F875B03D3 +:10425000274308D793F6C05E36BA3EA3E3F9B83BCE +:104260003DDC3E14D65CF136A3FC60AA8C7EC644CD +:10427000EB35717EB42417EDC7692D3F7AFA5445AA +:10428000AE00DF7B77FDDF4EC33C29F80D56019C65 +:10429000D17737FD3A9FF443CCCACC5EC3FADE1027 +:1042A000600AD25906FB59ACD9CF49176F3FA77B9B +:1042B00094BFF4001E277E9044FB242B80FF6DA446 +:1042C000A703ABB06EA01EF31BB85F9C6067CEA6C1 +:1042D0002B7F85EFE9F401C6ADFC3DBC7FF0F58294 +:1042E000B83A89351EAE970EE7CBF718F3A3E00D69 +:1042F000D53F06F3BFB3FE125AC70BD1E39D4D9CC9 +:104300001E67D3438F79281E9349BE4EFC605A2600 +:10431000E6B12F04C7B6FF6038501C501FEAF27E8A +:10432000F08A402EE6CD1BD6D9F8BE76E46AC548A1 +:10433000AF86480F6B4EE3F50B96B4B1CF19CB7136 +:10434000A3FED5FD1F5D9ED1D6519E8385ED88EFDE +:1043500027D97BD12CA37EF18DC7F73D9AFFD8A139 +:10436000C541AB96B2A8D19EAEACEFFC17F4831D4D +:1043700032932F413F58DBA7B6C7B65D950ABFDB26 +:104380008B5909C6E20E3BFFFDEBEF47D95203FF05 +:1043900027C95185FC756D3F7C44BEB4BCF4AA9C12 +:1043A000F83A8757353979D96325B9F1B507C24845 +:1043B00027B31460F58671665679DC83CF4D25F4FA +:1043C000DCE219F3FC047FCEE3E8CC2501B6DC691E +:1043D0007CBEF065CF57F05B573BC37609BEB35A3E +:1043E000B65511FF6497C5E5690E68F23E2A3F7C19 +:1043F0005D56B5B000FA3F262D6F06BF53FCB2C61E +:10440000AFA0D387F8D5AAD0B6E75DEA731AF068F3 +:10441000776BFB609FCFF6DD6CA4DF9F669F0CA1DE +:10442000FECBB3D27EE38B290B5CA79D7C9D311E16 +:10443000726408717074B448018C773B5BEC015C6A +:10444000E7194F4799715FA6E37B4186745C9976C3 +:10445000AD82F2613673BE9E798CAFA7D9CEFB9642 +:10446000D8FF7A0EEDAE595BF7917596CEBFCE6B45 +:10447000067E345889F950677E29CFDD28B48F999C +:104480002CC94F617C61CEE0EB6E95FA63328CB340 +:104490002AF66111F448320378F5F5213B0B7818C0 +:1044A000D6638D45F54938FF9F4CE3D6CBBCA9AD0B +:1044B00007EE8FBD6B88AFBF77492835037EB71CE9 +:1044C0005362C9C4BF212519D7C6797179378F2D99 +:1044D000BA261FF74DEF4F22BD0F3AEFDA14787569 +:1044E000A728C7546807D43355D85FBF262980F260 +:1044F000735818AE2A407F619E99F6737439DDF9BE +:1045000075800AE0FF3F5E07C1E9887C7F610A8C05 +:104510008BAAB6418A431B4FD739A1BF09088B76B6 +:1045200063937A3A7215CEA3B0C01458F7CD6C706D +:10453000DB5D06BD752693D73B6CF8CC5485747F44 +:10454000EEA1A334DFBE56DBEB08C7BE9786EA5068 +:104550006F9F7DC86AC57DE157703C7C77D71E2B65 +:10456000D93BFA83EFEC2E09EE27FF5BEB67675729 +:1045700053FF332FAFE7E96BAAFE7511CC93D2C07E +:1045800024BE6F133389738D2DB38BBED17E221D54 +:1045900065ADBE24F1F73D999C6FBDEA7D0E8C9709 +:1045A00056AB6611F7C5E4F030ED4BA69433258A7F +:1045B000F9AFA6150B110FD7927AAB0070B91A9804 +:1045C0006885DF6B32383E725329BD97B20EC68FB5 +:1045D000F39D91716A7821E2E75A22926CCA300FFA +:1045E0007DEF02EF2FCAE0FAA98731A2F36E4BAC40 +:1045F00015EB0A76DF2B09985F719587EDA88F1A66 +:1046000034BEDE04F3C7289E0743006DDF483F46F3 +:10461000FDDDF75B055C9F9D15DC3E386BC26B0BC7 +:10462000A1EFAC12A9BF53DBF7DE792FA3FD7C50BD +:104630005B7ED41FBB1EB25E47FB38E5B00E79D45B +:10464000127D763F6AAD4456F6B2ADF34CF85C1D70 +:1046500066CB412E7778ED04B7AB6C98A1DC78B5CA +:10466000F189F8A5FBF83A38E76F660F217D6A19E2 +:10467000D51B404BE3775986FC5EC37B7FE7E57C27 +:10468000A7F351E27C733278BECC1588F831AEDEE8 +:10469000CC383E6A9995FCE73176C9CBE9E62A1F0A +:1046A000B6A31FB3B25CACC2EFEEB40C525DCEBA8F +:1046B0007B158F0A43C470B4F55D278EE7FBB9EB19 +:1046C00096838B09FDE8BC213FEAE95D735EA7BCD8 +:1046D000C6FA14672DBEBFB2BC34BC0CE32E679380 +:1046E00057908DDFE3FCB0558C64611E7B6FC64B29 +:1046F0009D1DD998F463140FEEC87CA513F3519B4C +:104700008BF575EB77E0BCCF55A5CD0EC07CBB1A01 +:10471000AD549FB239A4E76D247ABE5D38F55211CD +:10472000EAE93A51423DDD5D7EA60AD7755F215F19 +:10473000D72D55A5AF14437FCB220FB968EE75A2D4 +:104740007A0918EC527FFDDE0CC0DF5D259EC2BEEB +:104750007B7E58407EC21C11FA736E4D34A3299C97 +:104760008EEE5B802F0494FB9B2B103FD05261ACEC +:10477000539294A080F56CBB409FE2BEC4368B443C +:10478000E3A3158CEA27DCC1A4D67DF0FCA757D99A +:104790001F6024B712BDBFAFC2CEFD382031D6F99D +:1047A00051AA16E04D796D90F4C19010FA650AF99E +:1047B0001992D008E377FCDE49715DCADC57793D78 +:1047C000737DA8C006CFDD431FB7A00392522EC64B +:1047D0002E9D89F9352E2FEE1A2B8B8B47CC1C8FF3 +:1047E0007D5717D17E9947B3DB40473FDA934EBDE3 +:1047F0002E4CEB8F3E1F54701F66C7BC4B280EDC3F +:1048000079BF5740BBB6EFDE27FC982F4C697CFD83 +:1048100061FAFE9BFFF227DC8749510CF118474FE4 +:10482000A03CC99BC9317126B6772FC271D2D38102 +:10483000DBA87DD3718AEA9F156B5C3CF99E4F79AA +:104840000DD7C7A3E7591FE3FBDC64812FC5788828 +:104850008DE47F70BDEAF1593E56D7F2F1295549F2 +:104860009417D9F00C1B40BBA0081008019F1D39FC +:10487000FEAA8A7EF469B990F2023051C501E86F50 +:10488000AE2CA6F5382C0CAACB909F963A43B8BE16 +:1048900089F8DCC5425457BBDBE7E779D379AFD958 +:1048A000911E9E649EB7C2BDAA18C047253C22EF48 +:1048B0008B5E62718AE3FE3E334F8B9B8624D41B52 +:1048C00093D6E5A7911D9086C9AE77326EF7544511 +:1048D00024BF23516E97798591F816E3EB4C6C81D8 +:1048E000469BC5B050E821FCE56700EECDD726F920 +:1048F0008DF9E0E5DA7BA939C18AE0F4D1F77DDAF8 +:10490000FBBBE67608B8CEB094B29BF2374CE0F928 +:104910005F2650DDAE369EE402E83CC7240D147BD2 +:10492000E85DFA9E5B51EFA575DCCAD711C45AFD4C +:1049300002F0CF6A8AE7437739B7970FB7DB06C52E +:10494000F2D1F5CBD0E8B53E3B48FB7C1B05266F8A +:1049500086793343F1F4778FC9230407509E523F81 +:104960004891499E6AE2F9A8EF8099C5C86F0A91FB +:104970001D189B77E0EB45FC0424BA73872D0EDEEF +:10498000694F9AC9EE6C800F61EA29B9381E1FE998 +:10499000B87A13E25DCF0CBF035C927AF44124E64F +:1049A0003621DEFFEEF53908D9D7BD3CFE4955FE6C +:1049B000DD66C4CF933AB882F8FD522B43BDDD6E5D +:1049C00019ACBD0BFAEDCF38592BC33AA548D60A1E +:1049D00098EF273EAEBFF5F959768D1697F07ABA63 +:1049E000696E59C4FD1858BF5BD1BFB1983C25E82A +:1049F000EFCC50D8ADA80766F87C423BD1AF8DF81C +:104A000062359316A23D53C10FC2F31ECFDDEF7581 +:104A10004C477B7B473EB3011F6EBBEFECB6645C3B +:104A200097933611FD81DBBDBC1E6B63F9E95A7C9F +:104A3000AFDF6E29A575338742F8FD7E9F9D91BE3D +:104A40007C297489348EBD42C8B8FFA29A78CB34D1 +:104A5000BF46B18DE7CF3873CE3019D66F72792C3F +:104A600086E742BCA06FAF81F590CA5905F9130AD9 +:104A70006883CB809EB5432AAEB33C97F7E500B47C +:104A80002024F27DBC65D91E8A0FA62DDC9BC6C6EC +:104A9000854B25BA6E16E5271FA73C08F7FF51D7AF +:104AA000880679D3C7FF7B86B68E5A9D6386C2A2DD +:104AB0007B0DF92F5D5E40AF0EA01D9298246F977D +:104AC000C6CAC9AEB91EB223A9A04CD03EFED97247 +:104AD000A3F1B999A931E4C7FF6E723307BFF1752D +:104AE000FC75D1A24A27F13929D180F7BB8FA9D310 +:104AF00047D711FCBDC0F9EA0D568707DF40F929F9 +:104B0000B8CF4AE6C2198E90BF95F588BC17F392CC +:104B10001BB29F1344987F58D38F599A1FEC7A8405 +:104B2000FB619BCD0111D765B312B2A2DFA9DBD126 +:104B30006D39F54FA0DE3EABF9652CDCF8C5179753 +:104B4000324E2A13FA61AC123BF75F2D56929FA9A1 +:104B5000F64F12E451F88E7953B97F1C18560A3576 +:104B6000FF125FDDA4864FA0DF9F912D12BC9BCD6D +:104B70006CA088BECFA456C3FBFDDEE478F9F70C29 +:104B8000C6C5850F6BF129F9814037B5EBBAEBD07B +:104B9000BFD2E1CCD5E074360F2B2807F75F7D46F6 +:104BA00083231ECEBFCA48E57EA21AA3E78097845E +:104BB000806D2A07383D13C3E99CBF829E3BB39F9B +:104BC0004AC6F946E791795C5105D1671ECE03EFDD +:104BD00071B991709EC4757C01F19C83EF336EBFF7 +:104BE000C6F817E7CF231F4CE3EBA55ECA34FF21BD +:104BF000E1B97950C5BCE641A04C04ED7D023FBE51 +:104C000098199F4FA65C0F02CA0679FD4AEA109DCB +:104C10004B83D50EEC07614F39F42ABBAE0C9F4B8A +:104C2000675CA0D7520F89AA0DFDA2B9F17ABED454 +:104C3000CBB478F41CCDE32CE771903300813BD2E8 +:104C4000A7E1CE274C86B8F349AF95E8F7A497EFD4 +:104C50007FE87EFEC319B2A6BF8779B28A45286E67 +:104C6000395C11AC433B1F1830ABC8BFEBC3697B49 +:104C7000307E6127F9FC672FF7EE41FECDCDE0F1E4 +:104C8000FB9E54BD4E9CEF878EF83373630E235FFB +:104C9000E5F81CC398C7DD78F91315A8F70BC05EBB +:104CA000A01F53D0C8E17730D582FADCC1146A4B1B +:104CB00033ED3AFDF4B895F47E34C0A236C3F92C36 +:104CC000A776EE2F30D0917E03C6E1F33D74CEAFD0 +:104CD000FC63B32708FD88C2FBB332456DFF3DC6B8 +:104CE0006672FF6318FD347DFF7DDF7ABEFFEE9EA6 +:104CF0001F63D3B99D203F2FA3D924E3790D4989A0 +:104D0000C5D09F76879C61F4D79D8120D58548EBDF +:104D1000602AA04741C45D49F5EC0191F84587AF91 +:104D20002B50ED423929581714F8BE5050A831D0F5 +:104D3000C50B8B1103BEF906B4C8378BB242B33230 +:104D400061BDA4F9492C6658F78C662BC161CBE490 +:104D5000EBB85E3D538BDF5B5F6EA57D92804607AF +:104D6000D0AEE937225CF3D3280F3AF714A7837447 +:104D7000B587F6D78399DCEE4C44878D97733A3824 +:104D800063E229AC3B7096AFFA18F38E3A1DDCF360 +:104D900087293F95077114FAE75DF3397E89F2A7F9 +:104DA000B752027ECEF224EA8FE065877817DE776D +:104DB000453EA67D7856C3B8DDD4E804F408661AEB +:104DC000F2653A1DD6CF3553DCB9FD355687F68DE1 +:104DD000A9534B9D5740BF7105F915DDAC90FC8A76 +:104DE000B096B7007C950203BE7910EF2F82E77D65 +:104DF000A0C2313E8A54DC22DC80EB5E01F118AEA9 +:104E00007B4D7816EE77A6945B455C5F1DFF736F54 +:104E1000FD2CB614E954E123FEE86AE2F8EB744A8B +:104E2000C45F5FDFCB75FCCB12D6D53E48F17E4A1E +:104E3000E41505E5611CFCC3991963F12F788DED2C +:104E4000B5BA404FAC9704FCBE3BFC2AF93929F7B0 +:104E500089244F81814FAA902E11F5C15F231DE651 +:104E60009E3ACEF962F18ACB501E723392343E18CC +:104E70005E83792B365BA47D5E9D0FD6CFE17C806F +:104E80007442FED9017E13DAFB11B9D3F9A30CF0F9 +:104E900046155D3348FB9E3A9D46F83F5C7DDE3A01 +:104EA000099D3F2A903EC257A2CFD6F1E8B3EB85C9 +:104EB00028F93DACD5366802A325CD2DA4BC952399 +:104EC000F2CFDBEEC238FB3E2BD5C16F684C7320AE +:104ED000FD36610008F6EE4CCF96CE56B0D5EECF3B +:104EE000F29862C0632FEA4B8AFBD338BD3F2BA4F4 +:104EF000E723F53CDF8CAFE7D1E5E8B0C0D217F18E +:104F00003C039D8BF19EBACF7123B499C2E2A9D321 +:104F1000F1B9CF47F36EBCDC4BFA2363A3F8A4517D +:104F20007F27B619352AC5D163E8BCAE9AF4D1A75C +:104F3000E8E3E54D2C4FE7D13B7F8772E65B92209B +:104F40009F1A3DAF443B8AFF010FAC023F60120E37 +:104F5000007AA656703BB9AFDC1A6DCDC37A22D168 +:104F600081F061EE18E979AEABE43AF4BB0EB772AA +:104F7000BB92E261E6EC52B09B875EB563FEFA7DC0 +:104F8000AF568F95CAEBE6520F9D8EB3833ABC1392 +:104F9000D9419070CAE73AB5BC6C7FEC558AABD763 +:104FA000475FA77CAAAA5AD914A0E7FAB2B6ACEF19 +:104FB000607C5F162C433D186D3D4B7ACC55C6FD89 +:104FC00035B03B26CDFE50FB19E6E3C84956AC3C54 +:104FD000CEE0BF27AE877F827CE9835A9CE52F898C +:104FE0009173E7CCE672D91F13292FB8BE219861BF +:104FF00032E4D71A7D66C2C7AF5A695CB4243EFE5C +:10500000FB968FCBEBE55AFEEFB54C5E7F156D7DC1 +:10501000DD8F78801C93BC33F0F3F1FC73A21C1F6E +:1050200016389FAA254CDB1767911E3D0E80E7DEE0 +:1050300079F52F15405BA2F1A3F3B25B161632038C +:10504000BFD48605AEF7430EF4132694F7DAF3CBFC +:105050007B26F21D90F68AAFAE0FD37CE3D8834B4C +:1050600034FE7CD014AA73929E8778B46C5C79E489 +:105070007458CFE515F4B71BF7057B622B36DD01BD +:10508000ED6523F2786929E15723915CFACAC528B6 +:10509000CAE5187CCBCF6FFF7C1ABE576AFAAD60A9 +:1050A0004922BE0111F12D88943C671F1FDFC07893 +:1050B000F88635BF56F92C44F1927ECE28DB12BA21 +:1050C000D467D087961A85DC3B9D3ECAE7C10A3C6F +:1050D000D761185F8EE33397F0FA958275BC7E45F1 +:1050E0009FFF41D320ED735C909E73383D9D81D02E +:1050F0004294472FEA5D18D715ABBEE92E18B70CBE +:10510000E93A6754CFA5B4703DA7F355464D48180A +:10511000979F1ED1F45A33D76BB99153ADB6F3E8CC +:10512000B5CC047A03FDEA907E29B5E3EBB5614D79 +:105130008E74BD21A11F8D76B24AA4F3341B025C8C +:105140007E5D81417FA38CFE72A48E080A7113CA12 +:1051500041629C04F4BC0BBFA77C0EEB62A033AC95 +:1051600083827AA7CEC7E92A813E307EC799BDC225 +:105170008EE7C4319F42F9B800C7AFDF2C0925067E +:10518000FEBACFC7FD3737EA8971E4EC764D3FE8C8 +:10519000FEFD4ED0737C1F88FBF760AFC81EB16F59 +:1051A000F33CE1583DA1921FADDE66A6E7DDC30DDD +:1051B000EE20B45D43D553D17DFDADB68EEBE768EF +:1051C000F6EA2F2F64AFBE9A5FA0AFA36E9FC6AC66 +:1051D000DF85F5448F510EF4F5FE7D269783D607C3 +:1051E0007E43FA72BBC062587FBF7D8E3880EBB1C0 +:1051F000AB999FE74C6D16975A53C7E60F3CA6C074 +:105200002F897EBB2D64CF3111FA9C373E6F8BF90D +:105210001B3D6FFB373E5EB7FCDE60BD17EFB71876 +:10522000898F26C8E39ED1F2427FAFC1A97C304668 +:10523000BE9F32CA6B460D97D711FB0C346BF38EB1 +:10524000DA67661F8AE077366F10A96EAFFE853386 +:10525000BD42FEC476FA605AE43778EE547DC22A25 +:10526000A39DB0D842F232822FBE1EE3173EADCED0 +:10527000263FB89CE78579FD05F211FA55A9097515 +:1052800032A95A3DC673A77EEDFB1EEA0FACC7805C +:10529000711B4F9DF3613DC6FACB8F523D4687D8B7 +:1052A000FF733CFFAE3E6526FA9EF84112C59D2B6A +:1052B000DC497B6C867DCF0E4F16C1F14B0D8E9E67 +:1052C0001695BD837B715A7E67A7E7B99320B9B065 +:1052D0007E8A1DF37E6A06E77753E6B555977079A7 +:1052E000E0F55CE6980FF3F6073DD3029827553EAC +:1052F000080F24D07B08E5D95B1B4F6F9D8FF4EF1F +:105300004DC4C789F57789EDA6F9D502F253044B50 +:10531000F9301F3E5C23A0FC31F0B7D1FF8980FC3F +:1053200007117EE863FD72E2FECCAC6309FB3598A1 +:10533000ED05782376C57313BE57C3F1BEEC64FC4C +:10534000B8AABC173C37631EE66AB1D4647CCF09A7 +:1053500028A2FCCFE7F4FFC6FBF1EF8DE2A58D9705 +:10536000F8BED1959F5D609C87515D4622FC57D960 +:105370006DE3C3EF5332167B46E1BFC6173FAE76EF +:10538000E90B19DF1C0FFE6C58AAB251F8AF2BB60F +:105390009D1F2E99C37FE3DC0B8C2B1C1FFE9BAB48 +:1053A0002680BF982DC47B89BE597B8179CDFCFBBB +:1053B000DF6A3CFFB86F37277E47D59C37DE1E6E0D +:1053C0008B35629D48896999BF7AFAD8F7BB055138 +:1053D000BBBF212418F3320BFCDC4FDDD502027A6F +:1053E000C9E8EF3DCD4315A89FBD8F0CB7623BB90F +:1053F000398D29E3C0E7FEAC8029E9C6EF45E97B9A +:1054000099576B71E96745F47C578B9DE6C7EFA30D +:105410001D1A3B7FD204F3FB2F307F363D1F53E72D +:105420006A5A44E71A26A1FE1E473EBB5BA21163DF +:105430007D7E62EB3D73F3527DBFCBEE1DBD77C623 +:10544000E47AF60FA84F7B6BBD7968F7AECEE2FA2F +:10545000DA9B0AF10DED7B068A91BEDE24B5F50ECE +:10546000E4CF4A7B602FC86D7BCA5C1FD59B25DCCF +:1054700093D221AA742E46AD666C3F25FDD50AD481 +:10548000572691E72512C75BB3B8BE6B17F9B9274A +:105490006FB36907DE2352BCA746580AFDF7FC1C10 +:1054A0001E7BD4ACE5C1813000F78C7D56ADFFC7C3 +:1054B000758DE0D8AF42BA605F7D7B11D607613849 +:1054C0008576E0916D6FAF433BD0DD1210DE31D0B9 +:1054D000C73BC179CD9FFA393CDEE6833BD0BEEABB +:1054E0007AD8ABE9FBC4F167FDDC3F39A8C1DF75B1 +:1054F000DBAD749F45D424AD00630F7FE1E5A8EFD9 +:10550000BBEB8AF2D05E1DD4CEC5F6DC7E2BE1D794 +:10551000BD9889926BECBC5D8B991D7FD7EB07F52D +:10552000F123EBBD98998DEFC1F82469D6C4EBDF68 +:10553000BD3858A78C8BAFB68F8AE522867B760E56 +:105540005EC102B83F8CF735B4313CBFB0B202D770 +:10555000FF53C51EA07D92AA20F95F89EBD995B2B1 +:105560004AC07D85EE56F3B000EB6FBA75159D8B82 +:1055700032013FB092B1E3D9E75F501E9E44BF00B5 +:105580005BE063BB061FDAC7268FB69F17E4FBB04C +:10559000F037ACEF3F611EABF68156ACCFED004269 +:1055A000A753A8B36E10EB1C339658E3E2125D9E2E +:1055B000BA2DC13742C268BD58D7E5F171E9094D2E +:1055C0007FFCAB5FDBCF6041AAC3B7D4BC7812E7E6 +:1055D000B5E8E71B3CE6B8BAD3766DBF5D5DA1C503 +:1055E000615362AD8877CCC1D22C93E83CAF42FBCB +:1055F0008A827D64FF5ED2FD1AF8EB1AE0F79E7492 +:105600003FCA84B6125C77A50DE9AD8A2C88F9BD36 +:10561000EE4D21BFC343427B9305372D1445F61849 +:10562000EA6DBB5736F9518E81CF4A300E6F6FE667 +:10563000F5D0DD7F6294CFE85E2A531D869F0D3A38 +:10564000D0DF2FACB5521DC298FA4E8DDE17B2FFD7 +:10565000DD02D0318FE8A8C9E1BB8BB00EA2FD728C +:10566000DE7F7EDBA72FA3DC95B3C04984CBE2B4F9 +:1056700092BF3611FD46E8EC043AA74E3CEE04EE2C +:105680007519E48D1817F113E415786F4A8F25BC4E +:1056900094FA8BBD79780F8C2E6FDDB7819CCD424B +:1056A000F9646946B9EABA2DF48685E89C2B401066 +:1056B0007F1EF9E17845B7BDBD08EBEE46EB7AFBFE +:1056C000A755CF18D5AB18AEE07A4CCBE27CB4D25C +:1056D000FB634DBF5A65D4AF89EFE9F3FB6AADE3D5 +:1056E000DE3B8569144B29B412DF3F497C9EA57DC2 +:1056F00027ECE7719F5E777C389FFBB75DAF9BA27D +:105700007BC9CFE4FE6CD762EECF8EB10F09FEAD40 +:1057100077C4BFFDA61FFDDB6EADDEB8FBD45D7E9A +:10572000F46FBBEAC0BFC5B8DA2FC7D9A98BFDFE9D +:1057300008BD34FE5FE9ED74A07DFBAA70E8E30FBD +:10574000A6F5FF01E374F556EEEF3389DBAD8395E3 +:10575000C581F1ECCF85E8EBD3EC535616E73BDD82 +:10576000CED6211F665CBCBCF4E0FFC23BBFB528AF +:105770003764C13C3723DD50EF2E49D3CE8B078AE7 +:1057800049BF2DB9C87B0A4C8F30F4A33F79CD4473 +:10579000799C443D8A7F463DA956865BE9DCB6C8C4 +:1057A000C25BA4B17A3683556EAC427A1507053CCC +:1057B000DFD29E67263D9FA8475759C2363C97D8EF +:1057C000D112DC8674781C6C239E036C76DAA328D5 +:1057D0006F58FB4B7A302569DC7ABBC61C4ECF274D +:1057E000DD21F22F0E0B4BEB8CE71E7E3789DBA3FE +:1057F0005F687E082B0B3AB8DEEF7815CF2777D499 +:105800008A32EA918EDA36FBB50067474894042065 +:1058100065AF54EDF80EE2572B4A53A8DF46E3D5A7 +:105820000651C67CE9F1864A8A9BB685C4D9C83F31 +:1058300016F4BB4C28976200F1553DCE00C6BCDD86 +:10584000B56DFE6500D702539303F9F8F8D2171D22 +:1058500078BFC386F06909DDBDA286EA18DE1B9217 +:105860003DD726C9129EB70BC67E8A71AF620FC69E +:1058700070DF341C8B61295FAF107A89F4CADD2296 +:10588000E3FA5EB9A1C470AFC1C09E5B6278EE68F6 +:10589000476D32B3C13C07B3781D495FF80CC3F3C1 +:1058A0004B49687FE0F7037B56F911CF9E3D66CAEE +:1058B0007B0CDCB6CA8F79DFEE3D563C53C852CB29 +:1058C000CDA78DF77C76D745FD98477096C5FF7EAE +:1058D00062F95101F14962F07B5C9D33AF5FA0F842 +:1058E0005E46BAC43F9FD4A8F27DBE90D38376E2D1 +:1058F00009D0372817074445447BA4BE2D505CF2DD +:10590000B845B519D7F15821D74B9D5A3D7A719EAC +:1059100018C43CF063DA3E7D9293CBB5BEDE896D50 +:10592000FEDAF9E73DC79B61BF799BF11C4D977685 +:10593000FE2CA9785094805ED94F4B25785E363B7B +:10594000CCCF97F65C9E5BE29447F9AF67E0A13756 +:10595000C89F3DE40C3864CC23055BE9FEB7AFF18A +:10596000FBBE5EBCED8159C8D72B165B458CD3CFEF +:10597000BD754E453EE95A9A4DFBA5FA7753B57B66 +:10598000355CCD9E4021C0932A7B0385E0BF263540 +:105990005B03E83F2EF8E1F4CCA1F3E0B1A1450AA6 +:1059A000146AF5F2855346CFE97FED878B5CF506E7 +:1059B0007F6F48D3F37ADFD29C1CE930C411C91938 +:1059C0009CBE30D267BCEFAA7B127F6F4342FD556D +:1059D000E2735616EDAD443B7537D869E8564CED89 +:1059E000203EEB0A5925E4B3BEA5B7AC5D8272F246 +:1059F0008A8972437D77AFF2DF6980AF5718FFFC69 +:105A0000DF17597C3D0FF8D5ED58CFC3D4C541BC45 +:105A1000D7E18043DDCEEF79B83988E7230F8CF8E2 +:105A200011B541F4230EA01E01A6FC7CFBBFDF884C +:105A30007EC401B77A2BD6E96F705C13390E7AF405 +:105A4000C014F53702F47B64169B8FEFE7F1F12D5C +:105A5000F2F7D6D3F819BCDF212F09621EB317F174 +:105A600041B902B9413EEFDDD39186715AE7D4C7FF +:105A7000FD98A7DC5E32E443787E33E9C37FB0E370 +:105A8000BD0842D48FFDBEBE7FBC7E7E16D2A3B0C1 +:105A90006709CADDA085EE57EA3EB19FF6633E0175 +:105AA000FAA07EEDCDE9F707C7A16FA4C517580787 +:105AB000B8ACC3D6107FB8155FE090413E5302F1F9 +:105AC000FD5EA19FBE5FD3F70FD79BC11EF459FAAD +:105AD000B7617FFEA427AE37037C7D29FD7EC4BF5E +:105AE0006CD22EDECFD0E9D77D3DFAF97D7EDECFB8 +:105AF000EEDB743DE29F0847AF45F5633C7F4138DC +:105B0000B4715F158F89E870B1DFFF1FFC7E5DC047 +:105B100079E1F7FB347D38E13C791737CF9FCB8FA4 +:105B2000FFFFFDFFDCF76B26F173A417E607C6EB5A +:105B30002CB5FB5E1E9BBED76ECC0BEC2FE47ED348 +:105B400090E6AFEAF7A96C5FFE049D6FE87B24E462 +:105B5000C07399C57B1EA77C795F71DBE67CF4433B +:105B60001A4426C8E01F7DDE4E75D7DB6A4409EF74 +:105B700057EB6EA87690FFD124E24DD9AC27BC97A5 +:105B8000D76587443A17B423BCC2B1CCA0F7601CD8 +:105B9000D5B1F42C792ACE3EF4E975F58F802784AF +:105BA000F9E1F9F974CFB5FEBCAD80F379DFD2BD70 +:105BB0006B8A285EE2E7168EDF7DE74BE8C7F5814A +:105BC000DF8767998ED73EF512D6C9750745D2C3D0 +:105BD000455A3F33680EC844A530D5FD5A9A006730 +:105BE00098FF6B36752DCE67491719EE070D1457C0 +:105BF0009EC0F97648229DA3C85C22D139AAF45AE6 +:105C0000BE1FDAC1FA07ACE8D7548DECBFC476C228 +:105C1000FC4EF0F73A793DB8ABC4B0CFBCA3B69A0E +:105C2000FCBF1EF0FFD05F5BF0C325029ECFECF3FC +:105C300099189E0F5E58904778F586AAC9DF7B0CAD +:105C4000FC3DCC8BF7343D47F78E7A6AE2FDB4B465 +:105C500045F1FD640BDFBF4B9E67A5F338CE04FF13 +:105C60002CD15F1BF1078AC19F30E41F5D73A5B87B +:105C70007EA29DEA6C39C68CF931FD3ED1C471BB60 +:105C80000AB5FBD898EA47BE6A66E1DF3D8A7989A2 +:105C90004113D1AB43BB0FD8ACDD079CD19C4C79F1 +:105CA000B4C37981E23B71DD52B4736C2D83BD18AE +:105CB0002BA40B01CA4738223696E1C1F3324E7E3F +:105CC0001FA52924631CD32146ECF87CAB280BD8F4 +:105CD0009AB2F3B538F73B910AF4CFFEC1447CB0D9 +:105CE000D5DD1DC6FDEEA9FBCFEF37FAF1FCB5C13E +:105CF0006FDA86E7AFC7C1739A86E7564BFFB55494 +:105D000077B158A43AF4AEFEA7D524DC5F7B5ACC19 +:105D1000437F6643E30ADA4FEE062FFE12F4970440 +:105D2000D54FF197561FDBB5BC88F0E911FAFFF0AB +:105D3000D7C85737D9395F99C36FDC01CF7B6FCA9A +:105D4000A67D992387AD0407D215CF191C1E39876C +:105D500012F5D71AEA7A7B9777FBD1BE1FB0048A77 +:105D600091DF6EDBF9830D0E3FDD13A739F1333779 +:105D7000A3FF744414F47CA982E76DFAF768F95222 +:105D8000B5E2D5F9E6D17D40A66EA2F1FD082F3D22 +:105D9000EFD85C81EF57EAFD7BAA95729C4F9F1F5D +:105DA000EF8E82BE557F1EAA6ECC66ACE4AA583E2A +:105DB000EE335A0B21E4027F6C6B8AFEDC5E8DF3BE +:105DC0004F13376509258C2D9BCCD44500CFC16A74 +:105DD000BB36DFAA8D8A99E0BD0EEF07FCDDE4BF7C +:105DE000DEE8F41BE1FDD33FE1F3C39A7F58B9E34A +:105DF0006F6F6CA37DCBE869F47FE64DD9BDD97E8A +:105E000039CECF9F43BFBACD89F125EFCFDC71E406 +:105E10009FD01F4CEC1F9EC05FFD8BC9FC5C42BF36 +:105E20009D3D4671EC1226E1BA8B4BD4E49918578C +:105E300040FC780D4C951D1369DFB96B2956C3439F +:105E40007BB51218C0FDD70A6B00F5CCF694471C41 +:105E50002FE0FB102C4FC175F688C9788E406DAAD3 +:105E600027BD39E3F9EA2A8C47675C236265FEC8DF +:105E7000F77F33999F0FDB142AED47790179A0F85A +:105E8000F6A03940F591079D5609CF13E8E7C7EE14 +:105E9000CC9EB1C1787EECE7F2EC0DE8EF7516B65A +:105EA00039B01E7713EA5118BF29187A690AEABD7A +:105EB000252266105889E979EA6F9A22B236C3F72B +:105EC000370902C509E9B795D279C5F4EBD3046661 +:105ED000D02B2772B5FA26ED5C6AB7762E1571C005 +:105EE000FCB14DFBFF4E29CCB0BE62E7D999B8F7A3 +:105EF000CFBA801FF0FE15DB027E7E0C82DB01D460 +:105F00009B4EED1E8E9D452FAB88EF0EBCDF3FC034 +:105F10009FA3BE4C013D8A7A774768053DEFC18B50 +:105F200050A0EF0CA5D1391DE9A895E1BEA26DE8FE +:105F30009518D2F90B131B447EB70512CE0D3C3DCC +:105F40004871FB2F1F7249F83CB1BEB9DF2C0DA080 +:105F50009EF72A76A915BF3FDF501F4DE7B0426B71 +:105F6000B2E7687C04F33C398F45DBA9DE43A27AB3 +:105F70008F91F35977B191FC2E9E4BC07432BF8F35 +:105F800007A802F36FBE42BFA791DFDFA39FDF3AEE +:105F9000721CEC2FDADDAA697B317FBBFD99613A77 +:105FA0009FA5E499C302F06D6F800968E760ED6812 +:105FB000DFD4D568A5F35ABEABEC612BE0E352E227 +:105FC000F1354F2E223E2EC05D7C806D72F1D000E7 +:105FD0008AC8885ED1F6F5699F44DBE7C73C40A6D6 +:105FE00099F79F95F93961E3792E513F0FC8EF6119 +:105FF00071609E2D23C4F7FBEFC9D1FEDD1329EAA2 +:10600000C773E123E7B79A789D60A29CDD97A3C58B +:106010009D8CC3E1D2E6DD2C0EC78ACA8CE7B77E21 +:10602000EC379E1FFFAB1C21EEDC17D10FEF05698B +:10603000B22A8E99A374D7EB05268544FA7D52E3E4 +:10604000D10731AFEC5D92C01709FB9F89749C9416 +:10605000705E445E175F777F2489AF7B77253FEFC3 +:1060600092FB48FCFBFE043EFB55B65B879FEAC6ED +:106070005D2133F1F71C13E3F7C93DCCEF934BA43B +:1060800057BDB61E89E7032FBAEEFF0A36EEFD3183 +:106090002EEDFE1857029E3FCACD1B591FD5C0A733 +:1060A000FA3DA19E545661ACF7771D3A1357E708A5 +:1060B000CF07B0EE017889F32B9EEF1AC7FF68D5A2 +:1060C000F8E0C033EB280EEFD5EE05B368E72EF508 +:1060D00071B373F839E8D939DCBFDD7C3C7FEA0B5A +:1060E000004FE5DF3ECBD07FEB7A83DFBFDBF523CC +:1060F000B91DEDF1D9AB594045685E1EA633A50721 +:106100009E995E81BF6785042618F23732FE0B1315 +:10611000BE8B6FFB5E608F23B38EF9FDEE0525C845 +:10612000A7593171C4EEA25819ECB06A2F273DF37C +:106130003533ACF7EE5D951B2D39E7B1ABECD21BD7 +:106140001BCB47EDEA37E404BBCA0A82DCAE0A8FF8 +:10615000E1BEDAD41C6E5713ED9C6E2703D1AC88D8 +:106160003D67D44E423F8876B4DFAECDA76EFD4783 +:10617000651CBB39C33438CD0EEF7747FA36CCBF38 +:106180009CC6578D97472ACFB66AF53A2AD5D15F74 +:10619000888EBD66D58179CADE117A75DD50513899 +:1061A000FAFD65933337B4D2F7E3F9406F176A7A93 +:1061B00060C63E6B18F35E95597692C3BEA5B73C98 +:1061C0008E7C007CB10DEF8FE87DA3CE8271C3354C +:1061D00039FC3E81DE1F85264B9A9F8570621C4FDD +:1061E000703CF32C9DEF4A84735294D7AF26FE7E09 +:1061F000658E43F783B7B596F1FD68DCD738DC16BA +:106200005A3E5E1EA85683B7B3054FF6E17B613A4E +:106210000F9C3E354AE78E32A7F7ABD826178B4C3A +:1062200019276EB47D3629AE6E604B76988CA7ED3B +:10623000B35CFAFD417BF0D61CC06FFBD1B937A02F +:106240005AD82E6A729FC5CFBD337388F28237FB4E +:1062500095DB71DC276BCA8A513F4EE427EBF9FDD1 +:1062600091FE04F77BDD93A5E77979FCA0EF63A0AD +:106270005AD4F6E7291FD5AEF1DDDEC23FAE27FFC7 +:1062800004EC8799C79112D94BAD0E9B548E88753B +:106290006CFD6BF3E1F71F66737F63E41CE23D5610 +:1062A0005EA726F37388BADDD0E1399A2D8EE8AD6A +:1062B000F1ECC04FB365BE6E127F5FB71FBA7D4869 +:1062C000D43B7A3BACC171A1FB7CB6E6E875649C1B +:1062D0000FBC09F7F9F42E8DDF7F1BDDDF5AEDFFD0 +:1062E0001EC615DAFED6F653DFA7FDADDEE517575D +:1062F00047A6CFF75CCE97AB5FB8BC80AFDFE87E38 +:10630000AAFA069E7BED6D9D2974923EE7F50BDBA4 +:106310009727D62F740A58EFBE7D29DF574D9CB7BB +:10632000776962FD021FAF3F87F7CCC6F7607C5CE0 +:10633000FDC2F6A577D6294EBE8EC6FA38BD4E21CF +:1063400043F3A19ED3E4EAE0151186F762F6B9F9AA +:10635000BFAFC182370DDC89F164A556AF50333F22 +:10636000EE5EA30CEDDEA30CFDDEA384E7BD29CF1A +:10637000D6ED61A8EF828D7B90EF9CFCDFDB585956 +:10638000FF80230FDA6343DCFFEF0D955E8A6677AB +:10639000A5672FE5537A4295F63C1CEFE1F991EDA4 +:1063A0008D22C5111D6150C502DE2321B5BE0B74BF +:1063B000985BC0EF9170C7D2FCC67AEB4D57F3FDE6 +:1063C0009BBEE53C1EEC093DB58DC7018B3C828C24 +:1063D000E7A0B95FD57EFFB565AD6C749E44FFDB69 +:1063E000630BD3BF5FD7FD692ADB0BF666534AD434 +:1063F0008EF6DAF64092C8F3081056148CFADDDDFA +:106400009ADFDD1D4A1BC0FBF17A70439E8423ACEA +:10641000221D53147E4F03F8DD036FC17329CBF4A3 +:10642000FFC8EF0E7E8AFA2A9549AD963CF2B3C9B1 +:106430008F66578ED4FDC7F9D1897E33FC0998FF4A +:10644000F16BE7A212FD665D4F8CFAE9D27518A7D1 +:106450006DBE53A4FB4813FD41FA10FAF11B64F220 +:10646000E37B039A9E55393C19186D911FC6FDA414 +:106470004001B78B17EB77CB050EFDFEE9387F7B2C +:10648000B4CE36DEEFD6FDED9C5C31EE3C8BAE47F4 +:106490007B152E3FBD8DDA7916ED5E0C104D7B6FAE +:1064A0001AB55533A0CDD6F480CBC9545729DE3F59 +:1064B000CBF525F8E3CC58CFE542FCCA48AF966E41 +:1064C0009E479FAB9A01E325ED7D09DF4FC33AF06C +:1064D000A489FC71AA8FC26BFF2AE7A1DEB552FF27 +:1064E000E1BF60B238EF3FDF3F4F3C7F9DE89F0741 +:1064F000732FCE3F6F7D2089EA7BB63F14F1DB4AD4 +:10650000503FBE48E704B6B3C84B58EF11CCB58F27 +:106510005B27BBFDDE36BAAFC51512975AD1EF3EE9 +:106520003E78131EA61DC367FF497EBDA7E0CBF9C9 +:10653000F5070F3DF573FC770D23E5229D3B3D7874 +:10654000E88CBD7E1C3BA2B7897EFE7036D3CEB1EF +:1065500048DF3D44F171525C9D3EDA43CC97807C2C +:10656000F0FCC81D3C5EEC5DCAEBF1FD09F5F837A7 +:106570004CB1D3FAE460FDBDC11FDA197E959FAB23 +:106580000831AA77F0455A05FC7711D87D7C3F1772 +:10659000ECAF5063C8A3CDD4EAF1278F9E17EBC8A8 +:1065A0008579FDCFC6D7E5E7609D3D7C273D270176 +:1065B0008F6F5E008FC5F17864FC05E061B0D3BFDA +:1065C00092397F8CC1A3E955E2AB2F8B47F6281E89 +:1065D0003B7361DE8C09F0D0F37ABB77ADDEA09619 +:1065E0007F157C6E29C1FC6A1EF8EF75C02FEF4C39 +:1065F0008447889F87C8B1AB02DAB389F0D0E1CF76 +:106600001A85FF99F3C2AFC74BEADAD4CAE9A3F1FE +:1066100052D3AEB537A8D9782E2F54379EFFFD9EA2 +:10662000E6177A528715CCB3E8FC2D1D120563DC02 +:10663000EAC273EAA963F9D893AA7D97356F5078B7 +:106640007C4ADF5D99D34CF93605EB8067E07D4AE3 +:10665000A197918FBC4B18CDA39F07DA5ACDF318A1 +:106660001791378BDDF93F2B6FF66FB9FF8DF2660F +:106670003BB30BC6CD9BE9708D9C4361FD342F5E0F +:10668000A982F79878D131358DC6176EB4935487A7 +:1066900035A257897F5227FB6EE0E752CE1F47E4B1 +:1066A0004CFEAF8D23AE9BFCE5E288CA2942425DD9 +:1066B000E67FAF38E2BAC9F171C4768C2368DC4D4D +:1066C000ADE47F7FC53862BBA7ED8D18ACD34AA976 +:1066D00034BC07DA8EC6EAE23BD997DFEFE87D01EA +:1066E000186E16E2F704D5636545C73F2F373B8721 +:1066F000EBE3F40CE55B932F22AFB67432CFAB9D86 +:10670000CDD6F22909F99EB47479EA0BE0DF38F6A8 +:106710007404ED0E4D5EF57D253BE6E1444D1F779B +:1067200004B10EDF7D820D38410FDCBDFBE8463B36 +:10673000ACB36B90F3FDDD93336F5001AFA43C5EBF +:10674000A7CACC2AD58F8F73DF866A26FF9EDF3BD0 +:10675000B13DD6B03B259FCE19ABE8F7F6968B7BC3 +:10676000D11FF0E3FD1BE9948F4A4765F0FEBEBFE1 +:10677000FB27AC8319CD67BDF70AEAE98D317E6E40 +:10678000E0F0EE93AFA87800D8DEEFD7EAC86DDA74 +:10679000BD91167E1F07BFAF8369F77524D2D52B35 +:1067A00044D75E8D7A6A39BF5740BF9FA3BB36FE80 +:1067B0007E8EAE1ADE8F4ED6EFE7E0E76DD9B739A1 +:1067C0003EBA9D3C972F09B89FD42BC8C3A8E77742 +:1067D0002E5941FBA89F86AC25A8D7DCDA7D04EEB4 +:1067E00050FC3D0C89E7DCDD35F1E76F73EC12D925 +:1067F0005B77C45D611EC7DE827D8D4E36F8A5BA1B +:106800005DEDB3809DC7F879A94879D3BEBB1FA0C1 +:106810007ADC9E98C8E95BF0F7375A4AC6A16F2325 +:106820005F7F9DBED0AF1AEF5EC62305BC9E7E7B08 +:10683000799B80F73AF81AF8F9714F023FF614D8AD +:10684000685CA5966F915903E5138FD4F2BA822341 +:10685000C7D3C85FD9343F8BEEFFC833471D98D7E5 +:10686000D2C73FA8CD374AE7787F6667233FDFACC2 +:10687000D315E84574F2D5F07C71A29F92A1D17B2B +:10688000BE76FED640C79F4F263FDAE0A79846E97E +:10689000F95FB57F589DCDE5D9620B0D150917F647 +:1068A0005B805E342FBB8AFB7763FD3FEE1FAA152A +:1068B000DC3FD4FD59E95BF17EF96FE578BF5C52AE +:1068C000B87DDF59FBE5FC72B7E60F5E337ADEF97F +:1068D000DCE439E7A1F304F7805EA1D121519F8167 +:1068E000FEA4FB00B75BA25437F594568FF37F01EB +:1068F000296C012C008000001F8B080000000000A4 +:10690000000BED7D7B7C54D5B5F03E67DE9349727C +:1069100012F29A90C09930091348600281461BDB3D +:106920009388345A6EEF40A3421BE9F03440302381 +:106930005A8DBD684E203C020801798488767859CA +:10694000506983ADCA45FB7582CAC5D6D6D8878F34 +:10695000D647A096AAF5D2D85AB5DFB5F65B6BED4F +:106960007D3267260952DBFBDF97DF4F37FBECF701 +:10697000DAEBBDD639F383D6BCE0161B631FE74BB9 +:106980008C4D63ACDB169D17F430F6183E2F66EC89 +:10699000C408ED2745FB93A24C6EFF3F625C6C84FC +:1069A000F1A7C4B8A747187F5A8C3B3342FB8F45E9 +:1069B000FB7323CCFF3331AE6F84F13F17E37E3995 +:1069C000C2F817C5B89787B4B3B93DD0FE6BD1FEF6 +:1069D0006AD2FCAF8BFEFDE2F9DFF3557ADE55DAC1 +:1069E000EE5D5EC9987BBF9D3178D4B5BF3D93C144 +:1069F0003CC799F61EB3403FFCFBE2D0B2C2C37461 +:106A00004F2663591616C1752B8EF45DE39BC4584F +:106A10008F93317639FCA7EFFC9906CF8F66F0FA99 +:106A2000A47DC79FD7CBE2FD93E7FB832AD37E9853 +:106A300047B1B04AEA37B0A922BE4E450F8BD926DE +:106A400061D9572B41B93395CF3B33BA79ABEEC1FE +:106A5000FE9137EECC8267BFB0040FAB34CF533416 +:106A6000CF97958C4D1943D7DBDBAAEC6D077814D3 +:106A700017FA18CB363D5F9C99B2A02C5EDFF5B4B7 +:106A80001CB3A543C9585D0F3CAF58CC62D969F11E +:106A9000F69CA759BE04ED39B10E492D87F10BFBC9 +:106AA000265861BD1BA29342CE699F0E8F8AC57D79 +:106AB0009A94F6E9FDDA6EFBDAD5A9709E6E89C567 +:106AC0001C70CEEE65F63686650B532C1523DF530E +:106AD000F7B56B5C789FE96179811DE096FE74DF04 +:106AE0006C06EBA56B76A60618FDFD9DFE0F75A73F +:106AF000A85B86AB0FB050F9D0E7E9CE343D05E78F +:106B0000353FF7F152CF614CC17FA8F1F10FC15D64 +:106B1000B27CACDFB215CF79AC8DD77F38E696ADBD +:106B20007A35E01FE279D9C8743206E782FB3A521F +:106B30000EF80EFDBA163CE05D62BAAF22D5C6DB98 +:106B40002B383DC4F1BB4436F05B86FE135489DF1D +:106B50007BBE982F233EDF22D37C69AA85D389D8B8 +:106B6000D748FCC52DF665F41B890F20D999E71B82 +:106B7000891FA525F51B892F1425AD3B127FB4274E +:106B8000F51B898FE524ADFB5DD1DE23CA4FC6CA54 +:106B9000026E17E71FC97CA8CBC6EFF9E3FCEC4EE9 +:106BA000CE0782BF9885F4BACD1A3C8CE89007BC1A +:106BB00017F02517FF5DC4EB6C3A634806C8879E43 +:106BC000573369DD689F9CF96FF80C706D4D0E3D71 +:106BD000620CB6F46001DF0F73EA1D16D8CF8E8504 +:106BE000B2B2098EE47DE6C05E09DA1D1FF998365F +:106BF0000AF8C69C93DE30ECEFA763787F8735C236 +:106C0000140FB6FBA93D2B05F8531961AF0BE7C96B +:106C10000E17656E427C56A2DE39A9B80EE75337CF +:106C200015727816D8C2AFA8506A91FE3529701E29 +:106C3000471E0B6E8226DB939A6683258ED7723AA7 +:106C4000FEF6FD1B08BFA1FF1BD4BF4092AC95A66A +:106C5000FE4C636C1CC019E1487CE06FCF6B56A002 +:106C60000F898FAFDDF7F8BFAF29A3F1BF57617D63 +:106C7000AD7184F564415F7A475A2DF43F6EE7E3C6 +:106C80009BEEEFF88A5E00E74BE7FCF7F8D3B5150B +:106C9000CFC0F85DF513A658609CCF1A71E1F9BE1C +:106CA000A8723CB85DF0E9C2168BFA26C0E5C32293 +:106CB000E0AF95481F25153AF4BFAF614E3ADE7339 +:106CC0007678FD7B16E027D9F5BA1436F1F53CB895 +:106CD0009418DCD15550223F2874EA12C239AFB360 +:106CE0004DB2C33CEC56C6EF9DF549F5B0EEACFC99 +:106CF000B0ECA3CB74B398C1972CB8BE9DD6FFACB3 +:106D0000720100E145BE936509B79555122E0D1C21 +:106D10000EE273E5CB65C83F1B33A76C52F97A8846 +:106D20006F063E65372E6C43FC546A9D032955500F +:106D3000FEB4BE97C64B6CA018C66B5A817E8EF609 +:106D400009E725FE18EA45F8ECBB394DDD044C2F68 +:106D50007BAED1CEF96B28C4EB12F61F37B43D7B66 +:106D60006EB57ECE19AFA7F7453B4A70BDBACC6071 +:106D700031EE0F7001CFBF6F9912457C1C7D2854F6 +:106D8000E3867A3FAEFD05B8979B97CE437E6AF4C3 +:106D9000CB9F9B43FD3A9F93EBA280071967A2BD4F +:106DA00076A4B7A61C95CF17F6CE4658B12C5AF745 +:106DB00057784F3057D73C310FD325E2F7565D9ABD +:106DC0000DE53319BCDFF53378BFBCFAA8578379DA +:106DD000BB572E9D17865263FA1A1DD6CD88141DF7 +:106DE00040BA33F0E095228E4F23C9A77FB4DCD59B +:106DF000CAF473C04BB661097CA5B77E95AB1FD6AC +:106E0000EFAD5E757531E2E75C993960DBBBECFA9A +:106E1000B3E3E0BCBB17CAEC009C37E06C748D4751 +:106E20007C7FCEC6F0BEBBEA6B73117FBF55C4E951 +:106E300019E4EA5C4EF7FC9C520AC73F63DD033E4F +:106E40007E8E0ACB57BD2118B74B92E60EA7C7F826 +:106E50008A387FDC96165E86FD0A3FCA6051C45FA1 +:106E6000169190BE56F9A4047DA370CC2F16481538 +:106E700008EE474367803E0BDD1C7F198214F06EDD +:106E80000713F40C3D02B0AFFBD6B9057F58B37DB4 +:106E9000861FD671F3F655BE55DB91BF98DB917F07 +:106EA00024B7E7AED6580BD04DAE95E9B3A64079DE +:106EB000EBF41BAD4037AC212B8E7F4543C7F59ECD +:106EC000FDAF583AC0AFEB0A1675C011BA5EFBAB06 +:106ED0007604E0BDEBA72EDD02F460BB268BF0D973 +:106EE00056C1F163973756978AFD6B5854F7A17EC8 +:106EF000C0E7FFD254AE1F28E1F57D48AFFF2C1E3E +:106F00008CD88EF0C7FBB42A5EC45FE3F90A71DF48 +:106F10004CCB8AD35FD1BF0E3FFFD5FB5D2AF0E992 +:106F20005E89EB33DB65D668C6BB277CBCFD03817D +:106F300057DD12A77F7DB63B7A18E09C21B3B0B92C +:106F4000FF09D1EF7F7C1C0EFEFAF9E9A1F291F75F +:106F500095F39185C5A69AEA0AD370BE53675F2A56 +:106F6000BA0BF5D1D979531C404FDD67BFE395903B +:106F70001F3C5AE793A03D13F0CB0E78F6D01C27A8 +:106F8000E191676CDE57743F81BB17F92AA8CC03E7 +:106F9000C8279DEC3DDD8F725673F6603DBDCF2A4C +:106FA0009523DFD39C03E9A003686A329F651FFF26 +:106FB0001DF8740EFE0BF868FAABD7D748C8174710 +:106FC000B1A07C19EAB505097C34C71AEA4578E412 +:106FD0000459706DC650BE9BDC5FAFB74821A0530B +:106FE000A5FDF21BAD69713CF91CDCC3FF269E18A0 +:106FF000FC6CC476C14F509E71BEAD933EF296B804 +:10700000CF6DED6EE2F3C0AF097F8CF902CE16179B +:107010009EA7B7FA11573F8CBFB77A21D903BB1B84 +:107020006A497E8FB45E36F02D7D94697D7B68DE83 +:1070300011B4A37CFF136A77C6F9434AD1FF845089 +:10704000AF6056501C00CE3B973386F61653349FE4 +:1070500059DFA7FBF720FEA9B4DFED60C7A0FDA2B2 +:10706000CF76460F4BBC3F9E2B3B6790FFE90CE66B +:10707000CD76C7F95F123FD4FCCEB85E0918DD3972 +:10708000A38CE883C67F07F6A90F534F3ED7A0FC19 +:107090002BB23094CBBBD6B9E7462F0297CF7AAF4D +:1070A0007717F17BEAAD5EB34647391491898FEECD +:1070B000827BC17BB837C2EF635B1ADFAF01D70AAF +:1070C0008B454338EDBBCA1E5D03FDF7491692534D +:1070D000BD67BF5427C1F33D35EA0107D0F99ED7FC +:1070E0005C44F7BB97A8072C503F22E46EE8D9C553 +:1070F0007BB15F41D8CE1C26BE9BCCFF0C38647F91 +:1071000041263898F67FF44D1BF22F279563ABFB91 +:10711000255431C6ACCE4AD45FEAFB48FFCBB93523 +:10712000F1F9F79F5B28A17EB0A75539FAA609BFF0 +:10713000F3CCF206FE7B24129118E26F43B806F5F9 +:10714000142FDC77AA1ADF17F51BC61FB13723727D +:1071500035F6DFDD96A61D80F3BFDF30E5FAA5EA40 +:10716000C8F7B1AF951D69E7FA437431ECA7F0D6C3 +:107170009884F6746E835A81EC655F129FDE7533D6 +:107180008B5A4C726A9F9BD3E12E5B785EC8842732 +:10719000F709B9B257F0EBE47986ECC31D5B86C6FC +:1071A000CDC2A2A9DB9D57107F1772FBB54ECD3320 +:1071B000146FF7217D0F8397865E027283E8EDD30B +:1071C000E6E9AD97099FBA6638B91CAFE7FE81F1D1 +:1071D0006C2EF109D08B2ECA17000F98EE88D7CBF2 +:1071E000E786D7B1499FBEAE718F8FA3EFC4845F8E +:1071F0007B5A190B8F477839A9DCD5AA50A986C3C9 +:10720000BD48DAEADC443C298C24E217AB1F1E8F10 +:107210000D7CE9967ABCE8847862FFD14EE765C3BD +:10722000F083CFCA6FF4D4ED97C26F46BAB7B98274 +:107230003E9F5AB25442BE9C13067DBB0CE922E429 +:1072400065A9A85F727D14E424C95B054BA83F20A3 +:10725000F0CB288D79E616290978B0A7354FD0AD47 +:107260004A656E03A7CFECFA0895DB5A03F4DCD825 +:107270004F7A7588E8D4809FED0BFC9EF26E4D84AA +:107280007F4E4322FC95FAC476D013EBD04FB50B5A +:10729000F544E037BB5E7B96F4C63DA0075A60AB71 +:1072A0007BBCAC06F5C62ED01BF5E0D0FB4A47FEF2 +:1072B00044FEA9C475FE55FCF8B3F2EF11DBD30010 +:1072C000BF32500F033A1E06BFFED9758D32598F5B +:1072D000EAD5D690BDB5AB41E670D64E111DEF6B29 +:1072E000E0760DDA1BC3E975863D62D407E5DF0C55 +:1072F0004B025D1A7649CAB86FCD46FE54E8565D1A +:107300000CEA99FAEAD975DE4BB7230CFB7BA4F3A0 +:10731000059C675CD80EF61BE9277B0CFD2402E771 +:1073200028433D43F7E2BA6F1D5833BB1DF4C12E0D +:10733000C1676CE3FE93F3156B5FAD03EDCEAFD980 +:10734000944DC14FE743F7A17C177AD21CD3BEFE00 +:10735000AFA0A7BFE29E818E1420A72E38D7C431DC +:107360002A3D87BA560E75C5C3F4F44CF45B02FF90 +:1073700047FACC62D602D4731FFE937301ACB76098 +:107380000C97034BC5B8AC34AE7F3FF4F0233F9E5F +:107390000074D0A9654E4139930ECD5D306E1CF658 +:1073A00083FEE9383FD4D3717E58E7D3FC61E37E96 +:1073B0006A7597C350F58543DE6754F28BD0390365 +:1073C000E376CD26BE3686F383417F5692BFAC501E +:1073D000EC6F247F19FE59A1FF68637DD623A13F7E +:1073E00002F6A3762BA87F8724DC4785D87F06BAD0 +:1073F00036C6613FEEE71D10FEB887AC2C05FD2CAC +:107400000FE53983E8EA3DFADFA0CFC03C47B33D42 +:10741000A4CF3C24EC19FA43B9B4ACE400FA2DF63D +:10742000D8220BB05FF7821CDF1AA83F64877E6802 +:107430005FDCA0BF6243BFC7DAD112FA3D8E17F2FC +:1074400073809E99D0AE5BF2A9BDAB92D17A7A954A +:10745000D0332D0D35B88E6D6AB8C4EC377F7E34CD +:10746000F7F366D55BCFF59BF859E6ACC4BA874114 +:10747000DDE04B3EF4DB25D65302CEA0DF6C5F543B +:107480002909F51BC6A5669D9F08FF007B04F9DD51 +:10749000CCEF95EDA883FDAD7AC112443BCADFA9BC +:1074A0007D0DF77B7BBFA45AA4A17493EDFCEADEAB +:1074B00076B0C736B5C23AC5A88770BB706B2BAC27 +:1074C00003FC7CB3F0FFDC5B95B7BF0DC66F1FC735 +:1074D000F1BAB7497E16EFAF7BAEACA07FA4FBCC70 +:1074E000A3547FBF4C0EA2DF3660EB79B604FD617A +:1074F0006139A8637BD323D4BE37C0DBF77EBC766B +:1075000023B6EF8DC8CA1AA86F5F7C8AFAEF69921A +:107510001504EBEE8603E4AFD2A356F257ED69589B +:10752000E85A04FBDAD29A17447D6B7713F743EDE0 +:107530009E7B8A5960DCBD7BC341F43BA656466402 +:107540009447867D9B7CDEE3A3F9FEBB30FE02ED13 +:1075500029E5BF94F1FEF6E42912DEDFC4A75C84BE +:10756000377965CA7E176CE4D7A339FDD95A2CC187 +:1075700037014E290DF25907C893BCAC1043BAB07D +:10758000B5D8E9F91BA3397EA630D37D51DC02E0E2 +:10759000689247C9F7698C4BBE57660D06507FBA93 +:1075A000DD32A0235C0C3F63B2DF343D9629915F4E +:1075B0005166038EAAB87F353D6C97FE1DCF61E101 +:1075C000CF7D5645FA0A8E033B18F9DA7D61590AD8 +:1075D00041FD2F5007DC19F4A71A704AF6AB660874 +:1075E000FF6B0DFAF5F082E27ED6EF8DCB46F9EA1D +:1075F000A67663FF869FD5E023DF1FEBDB8AF0BA18 +:10760000DDA2B499CF33923F18F78B747EAFE68C2E +:10761000A01D7F5F53A6B414EA7F097B22A8BC1487 +:107620003AC3D2AC4A6263033AFA470716D3F90C5D +:107630003B7FA85F3844E72DD4EAE8FC39789E0008 +:107640003AC5B83F19CE71661CF29DFAE1CFD15D03 +:10765000BD4652D1DFBC5816F2E0272FD4F8879EE2 +:10766000AFBB5F26FD2CD8DB3EEA2BE40FF7137F80 +:10767000AE7ECF9A1582FAF619BC7E742CD7B38CE5 +:10768000F3DF6E61D224933FD96765C41FF718E713 +:107690006F583559C6FB6AB2CBC019D987AFBDD474 +:1076A0004674B9406148D743CFCB7A97E279C3B3E8 +:1076B000687CB6386FB5B83F38EF793CAF3263F8C5 +:1076C000F36E6B94493F387EF0C56D6DFE91F709FE +:1076D0007F12DE67B6D8E787452109CF7D6F4D6001 +:1076E00000F531D00F298E9AD364277BC867EDA3AC +:1076F00038E3AE30F01CDA7706E129327A9CEFBE2F +:107700007AB9D77CCF79614542B815C2BD5A82712A +:10771000BC33F0D4B8C7CFC7EF51F2678F7CAE9EB1 +:10772000D81A17EAA5F1F8E8F917D0EF6C9CF7D84A +:10773000B75F7E41F78F1C57BED2FFD9E2CA19FE50 +:107740009C7F2AAE5C5D70F1B8F21E8C2B4F865286 +:10775000F0B5E4B87281882B170CC695C3CB285EB0 +:107760005ACBFD8446BFF17EEE57A82E10FE69115C +:107770004F36E2C78BC6E66E6D2B8BEB2B7B973CAF +:107780005064DE8745C4B38C76438E1AED357ECEC9 +:107790007FBF28D6F1D7CF9F87F6F65FF4347553B5 +:1077A000D6C8FAEBC87EC3EBBDE4373C963F85E410 +:1077B00090E137BCF6B10958762D61763C77D782D7 +:1077C000178BF0DE2D055C8F39F3DD09B9A81F2674 +:1077D000C7AF76CFE5F12B631DB7D8A711BF4AE637 +:1077E00053065DE488B895CF1A6E437DA1AB81C77F +:1077F000D1EE0BF3B8D6A7F1D7DCA4F89689BF7EFB +:10780000DD7F9138961B7DA0709E0F4685E6FB11AB +:107810002F996A47B961C09D295AEDEF609D875E37 +:107820001CB7DF1C475929F0F85811BF7F03BEB0C1 +:10783000EEC2CD59FC7C9BD4E1E0BDC17B57D65054 +:1078400078772D03787B701FE188791F069C3F6D48 +:107850003FADFF4BFBC947BD11E0B7D6D5F3E309F8 +:10786000B0EEDAE356D21B8D7D1D9324A2FB75FE8C +:10787000748AA7DE8E4C0AE9F3EB8CF4BBE4FB3E82 +:1078800026E94C463FE30D32D16FEEFEC5AE321510 +:10789000DB9796227E3D82C23E3B8E173EAB4EF674 +:1078A000C83F8A076386CAD97D04D7B926BE561455 +:1078B000C783BDD817CE31AE5821BFE8DA24BFBE8A +:1078C000519E17FA8C6ED30EE27CBF1F4DC281BD54 +:1078D000737403C5B1375BF539C88FF644ADAC0D91 +:1078E000F0B0B7412678ECAEE2FE9DDD67BEF96CE4 +:1078F000B149CFDBD370C0191EC62E35F4B4FE7C5F +:1079000035816F950423B508E2025BF8315C5F6B4B +:1079100089F422BD0CC69DE76A641F249FE7884D49 +:10792000CFC7FC8153FB73BC189FDBFE9FE1B1CA3C +:1079300030E733CA5B453E01C6DD65B47558CC25DA +:107940005791FEB1E261BCDFEBDD747F43EF97DB63 +:1079500017FAB532DD47D7820F4E615C3CFB1BEC5A +:1079600032E40B934E28B5089FBCB93B8EA25FD47E +:107970005A9C78DFC6FAF7CD85FBBE88BD6EC4B3CE +:10798000C75E7A3CFB55E403D90DC3CBB500FACCF6 +:10799000B3FF15E7D3A565B08F8F93F038BB3E4C8E +:1079A000FE1C9F35447EBDFBEA2FED7CF9977EBE21 +:1079B0008FF07C39239C6F300F012C60731E42AF17 +:1079C0003FEB2B220F82155F4A1EC3C8E39DC5986B +:1079D00047B17AF8F19F1DBE39842FD9CD32E18BA2 +:1079E000019FA98837D386C19BA69F935EF79730E6 +:1079F0002A4B23C3CBE83F49C0B920AEFFF8F01CA7 +:107A0000D94F9AE485198E227FE4357FE6568C079C +:107A1000DC6E0969B85F76A593F42FAB1A8A219FB3 +:107A2000843FD2A393CF871AF335D0DF827604B098 +:107A30000E5B5690A1BE06E08C5814826305AE6FB3 +:107A400055D8D30ADAC505DC4F67F1688CF42E2BC4 +:107A50005FDF559CF133D497A1FFE78A2F21DFC563 +:107A6000D8EF67CD234CD65FFE593FC1E563397F20 +:107A700019C94F00E79A33123E61EED42891EF8383 +:107A80006E615E6A69520E4A79FEE760FBD918D4CE +:107A90008BC08043385F65F1901DAEF648E49F735C +:107AA000B51FD202786F618F965E85A9529D5A1DCF +:107AB000D49B6A9C03DC0F1AA5F1CBC57857C09EF6 +:107AC000800F8D871C0974B69C6D790FE3124DCC25 +:107AD000D40FD659FEEADBAF627EDFF2A4E7CCD248 +:107AE000908EF2220DF9F46543EFA1E555D7334F9F +:107AF0009BD65B559C9A753E05FEF139F6398ABBDB +:107B00008AF123DDE387ADCE679E06F9F11D9BD692 +:107B1000827064553C88D351FC41E970F2C680A361 +:107B20007B750F73AAFCFC783F77075815EA7F77BF +:107B300057EE70727FB49E208F92CB0D405B7D8894 +:107B40001756EDA2710B87EA1A689F3AF27C651FFF +:107B5000AF393511B6ECF433CA9B7115AC8F2D805B +:107B6000FBBBE5672EDD9987CF13FDD11BEE8CBCE7 +:107B70009C0EEDCE4ABB8A7E2C67ECE819ECEF62D6 +:107B8000A98A0BE6B9FBCE908C7E1DDD27531CDE47 +:107B9000E5EF6461D02B36A94517DDE7865642A68E +:107BA000C1BAABA093F417871A464F0ECCCBFD2475 +:107BB0004ED4DB4DF850BCA5DD897CFE9F9DDFB81F +:107BC00007A33D791DC791B33114D5DB0A3B5FC7CD +:107BD000B8A2BE361D951FB64DD2097E7A31E3E7B5 +:107BE0003DE4F835B6CF915391D9B1AD859DFA41B9 +:107BF0008047F879978E7CBDECE33F6D3C88EB02C3 +:107C0000BCD08ED87A57843542B9ACCECBD6285466 +:107C1000D7B1BDF1B9521DEB8E24F82F8BCD23F8CF +:107C20002E2BC88CA2DF877D0CFB9D0E75FCF738D0 +:107C3000D80FEE1BDAFF1495F6A3FDBDF593CE9990 +:107C4000F9500725F138FAAF1A63F34E21FD35B626 +:107C500017D1F8A8806B07C2677CFCFC8D7E7D3D48 +:107C6000C2A731BA602A92C1E0F3436D33F3B390F7 +:107C70004E39DCB68A788DDB9F08AF6DEDE7DEC24A +:107C8000F8E29F0E493EDCC7B2D8DB545F16CD2820 +:107C900072F986EEBB31C6E3B88D51DF7E6C37F6E4 +:107CA000B3ECD076FB82D4F83E2F755FC9F799BC50 +:107CB000BF16115F6A773ED5857E31ABEB275D2815 +:107CC00077500620FDB68B7325E3915CC2EDAC7650 +:107CD000E17F84735862708E0E9CD8741FED5887B4 +:107CE00073D84B86CF036B7789F182AFBB1495F8BD +:107CF000BAD16E2F11F63BCCAFE5207D893F98BFFE +:107D00003587A7BB31E21F9D1335AE9712FD326B4D +:107D10000B8B217D863DE4E770E4E931B2E3153950 +:107D2000786515E2BBF5837E133ED99D2C88FDED69 +:107D3000BFB404516EC23C31571AAEC7FBD17E7C32 +:107D4000C38CCB8B302BCA538D45F40ADC0FB43B6C +:107D50004DFDF374F23FC31E23577A878E67627E10 +:107D600074B1239F4DE6C3E34A84BF38890F334F74 +:107D7000D6B07CDCE0C371391561C8171C55F259C7 +:107D80005B1AD2D1FBAD281F1CACBA6D304E43F646 +:107D9000AB9107218B7C6F3EDE89C8024B8D6EE470 +:107DA000701DBDF181B6A22CBAD7014B1ED68F48EB +:107DB00057723F5E0FC64B476F7CB006DB7D913438 +:107DC00055A6F6876B6AA1AE7C92CE6318227F0718 +:107DD000D533C4F7D1C1D3BD3E185F81C88AFD83B6 +:107DE000559477333A929897935F9698B793CCC708 +:107DF00055A6CA38DFE63259BE12D6DB0FFB41FF6B +:107E0000D3A640D1A99A2CA202DDA2C4D71F27D69F +:107E100037F0345FD453CA2B4FE17E30ACCEFB73C6 +:107E2000FA51FDA7EE40FF902AE067D04D07D20D32 +:107E3000D08B0BE906E8C721E46B874BE413E6859A +:107E400013F2B99A043EEFBE82C530EEB2EB51296F +:107E50008A7ACB6E5BDFCC2568B765C841D40776DC +:107E600097421DE547853D887ADECA82C0128CB3F1 +:107E7000AF2C1071B61F6427C4BD1B0C3A29E072E9 +:107E80007724FE6FC0ADF7AC23867EF89D8F72FD20 +:107E900064E76BCBC89EDCED0D7995328CDF6A5EB2 +:107EA000B4EB5786669EA17C1131EFCAD0E997A545 +:107EB000499FBE9F41FCBBC4FD18F5AED6CED2DFB4 +:107EC00001FE76B77651B9AF355AFABB62945B477B +:107ED000A8DED1DA43F5F87891AF09E885F14B6F68 +:107EE00038514E8C6E4CAC27E70F380B12E3D76E2F +:107EF0007F627D70FEB12C21FFA4BBF584D8578C26 +:107F0000CAAED63354EE6BED13FB7C994AA37FF2D5 +:107F10003E92D74DDE77F23E87EE2B116E2EA07388 +:107F2000C45FABC0BFAECA5314E7BBAA24FC700940 +:107F3000EA59AC87DA3B5EBD3D344E85F68FBFD43F +:107F40008771D34DA0EF23FEB12B227A11EA2FCFF8 +:107F5000B974F4B7BB0253880E7BC3079CE877D98A +:107F6000145EE342FBB168CBEA847D049C4748EF92 +:107F700050DB139F77056AC9DECC67FCB9C10F9946 +:107F8000C2F121599E0FF2A98FB2283FEBD3F4BE64 +:107F90005E3FCFA3DA52C0E3DF5BFC3BEA90EF6CBD +:107FA00009CBA44D6F11F2FF7DD0E7501E59D9C007 +:107FB000537F87FA8600F031290E2783FE5304FD94 +:107FC0006F6955980EF29655C7E85CC9EBA65ED965 +:107FD0007933E5E195C59C734CED5B0A4E39C3944A +:107FE000A711A1715B0A8A280EBFA132568774CEF1 +:107FF0006499A5809DE129DCA120FCE15EDE289941 +:10800000163F7757789582E38BB624BE97A3B627A1 +:10801000BDA723E0C7AEE8E3F292717F763EE3FDB1 +:108020000C38BBC23FA7F65B6E632AE625307F7231 +:108030005CBE93F845AA80B7244DE378CE6CECEF94 +:108040002971F8F85CDA9F107F3A8C3CB6A4FCEBFF +:108050002E511AF94E51516E16E5FDA2BDF44C7D1C +:108060003A9E738378DE2D4AE33CA89798ED9BB443 +:10807000CA447B58A9CE4C68F786F313EDE5485106 +:10808000427BE9AB7CBD91F0C7A7CB09E33D658995 +:108090007E8CB12D89EB1972C059909FF07C74636E +:1080A000E2BA23ADA7D7FFF665C403B0EB54B22FF5 +:1080B000023CCFC515007E9A36F47E6C42FF02F872 +:1080C000178D37C19F6571B96F93237545263DA9FB +:1080D000232DD2C8F3433B451E50489D7391F3F7BF +:1080E00016F0FC91CD7E4E3F9B0B569DF1C1D49B6B +:1080F000B770FAD9ECE77960EBC6746BE8BFDB00C8 +:10810000FA39CA0347EC0EA6A23F09F452CC033B4E +:1081100082F960402F8E82080BC37397B5AF17F5B5 +:108120007E762BF3A1FFC3E5ECE7F51651F7E8A740 +:10813000305F17C0C9EB4A27AF1F823AD0C5BD8256 +:10814000FE0CFC1B5DD023D5C0BA85AC5FC2B8E77E +:108150006DE39FB807F139C03A658C371975CA537A +:10816000B89CB13AA8A39FE2E0C78EBA69783EE412 +:108170006F48EF774662C81F06F95BD929CA57BD19 +:10818000A516AEEFB2A1FC08E03E7BFCB438DC0DD6 +:10819000B81DF4F33836FDC17C9E80427E71A39EEB +:1081A000E2873AC073D1781E37013A6F186FA2F395 +:1081B000835B0C3A4FE497C9FC33996FDE863CC968 +:1081C000ACCF95C99A95F4B85BE3FBF6D1BE1B71B1 +:1081D000BD47047DF588FD7F5BD41D2C467CEECE2B +:1081E000E27033E215F00FD903FB1FFB74A40FA755 +:1081F000B9AA448BE0F8A22D0D09F050DB13EBF97E +:108200008CD793F9FA985B65A69BFA9546DD09F53C +:1082100082A6CC84BAC1E737B706293FF4DBAD5557 +:108220009497D6D5AA517D2DE374704F31181072F2 +:108230003CCF249DF5D33946C9FDBD32ECFF47E361 +:1082400055EE9F0BC67A31AE305A8F4A76C6E90199 +:10825000FDF96B8AC377D3791BEC3AC67D5CFE08C7 +:10826000F9B736DCD5579B42F6120BAE6188EF6E3C +:10827000921B0ED51E1D8FFABB95EB79934E4419B8 +:10828000C6CD1C4E5E77C5FE4A7E58478055B84C19 +:1082900074EF2E886A1ACF2FCA33D3DF466147EDB9 +:1082A000B993F1F9FDEA01C44BA0A7579650BD64FC +:1082B0008A4BC573703B6914E6ED43FF7537AC27F5 +:1082C000FA735AD55EA2933A568174E2742ABC3E80 +:1082D00043D43D8CD735A843E154066254AFE6ED54 +:1082E00069059DB1C5504FD3F2C8EFB7EE86DB5E8E +:1082F00041F9EF2C60EA78294ED7061D3BAD3D31A0 +:10830000A2DB324E974E678CCF17E474EBF40CF07F +:10831000F5568B76859DA2FE3AAFD797849F403C59 +:10832000CA2BD0897E0D781BF7B1A538FCA3E1EEEE +:1083300023BF91E929E85268E1F4B4A79045CBD076 +:108340001F7D2BFA5AB0DE770CEBB04DA698EAA34E +:108350009B30C7235E8779986A6A37EE614F61C4A4 +:10836000EB31D9B3061CDC7E0E07576C2FC1C1F070 +:10837000D7B8ADFD3518C737F897DBD9C7EB82BF43 +:10838000B93D315E8FF073BB951E5E6FE2EDF9FE75 +:10839000A85403F8B2E76F9661F35B3AC673BDDD8C +:1083A0005306F86FA2FFBB4AC2BF43F8A9ABAB129A +:1083B0009E7BC3401726FA0938B97DB6B14126FB2A +:1083C0006CA35A943E9CBFCD28EF13FE847B816F33 +:1083D000A31F6867AB92E00F4A2EB3D77646E8BD7D +:1083E00014167A05FD161B8AD522E477997551B6C5 +:1083F000109E6704B81F60DDB58F69A827A6580DC9 +:10840000FAF0D658395D55205EA708BA51344E4768 +:10841000291E9ECF9A5E2DEA223E9856C5EB83F424 +:10842000E4077A22FF5E24819E36087ACACEEC0CDD +:108430009BE3E1C67ED24569E09BAB41D6310FE8B4 +:108440007049382D007075CDB29FE578D747789781 +:10845000813085E7BD25A10C6CDFD3C0FD8F85750C +:10846000FD6D788EE24E3030E11C0501CE67466B23 +:10847000317A7F33A71E0D4FB8822A4DC27D1AEB89 +:10848000B80A18CD5F3A3E5CC0D7E3F16603CF313E +:108490001D09F1BC7827C7F30DC51CCF01ED08CF2E +:1084A000371473BCCD99CBF1DCA867D7733C37EA9E +:1084B000300FE1B9511F844F7124CF63C2B7758566 +:1084C000B7BD7C713C0FD5A23F89ED1478ECD46A1E +:1084D000098F3B0D3C0F73BC9E6BE079A886FAD7E1 +:1084E000F37A965F233CDFF037FE7EC21EAB7E86BA +:1084F000E857CD9474D3BE72035C2EEED1AC75C335 +:10850000D1C3EF85DCBC50A2D520DCD67BED9C0F1F +:108510003C6B8BA6A01F29BFE515B493D717DA8350 +:10852000A8B3AFCFFF16D5ED639C54B78F5ECDDBFC +:10853000C7B8A9BE2EFB36DE3ED643755B0E1FBF05 +:10854000CEC7C7AFCBE1E36D457CFCC6F9EB079620 +:1085500060BF5C0FADBB6E3E8BA600BCDA33AE0BCA +:10856000229C401F38827977B9D608C5C772F58832 +:10857000467000B8121F0C70FEEE6E60FB651FC1E6 +:10858000FB4899895EBF2ACEBF4AD235C9679A8710 +:1085900059891E98670AF7BBB5B2A8DFA477DC102B +:1085A00028A2717605C6C17A8093848F3605F0665D +:1085B0003879EA8F5E4DFB62CE018C3718FA64DCA5 +:1085C0007E5AE524BDCE7FC0897A5EC0D9E2443AA6 +:1085D000D954C0F5BE9AE243DCEEF31F72A21D0728 +:1085E000CFC99EF1E3FB33E4474FD443BC98576CAB +:1085F000CAF718462FF98F4036F29D443B62D3E20A +:108600009E3ABBC93E02FDA4067D8FA3AB629DF8D6 +:108610006EFB61D10FF495754447E5AB3A4BE0B979 +:108620001A19E8C5B80CE82BEB03C3E82BDE4E9013 +:108630002B9386EA2D86FEECEDECD1D08F91ACC762 +:10864000783B3786D0BFE347BB88CE19257AF776CB +:10865000766AE8EFF0C2733CA727D8EFB493FDE544 +:108660001CE07EA2437508EF22F15E9B618F1BF137 +:10867000963C17CF436515224FE1B53DC45FB67AEE +:10868000F877250CB8ED0F70F97F2020FC398A9A15 +:108690008F70AE28D10E22FC008E8702C3E8A51D84 +:1086A000FEC4B87E47DA4023F2452D90417CD89134 +:1086B000A754603CCB783FD8A6703DF57B021F0BDA +:1086C0006CDAF7705EC3AEEE107675476007DD7F3B +:1086D00047C1C5DF0B7124BD57B5E12AFE1E959138 +:1086E000B7E9700F109FFE3F62BDA7C5399F16E71F +:1086F000DC58FF501DD9B350E7F611F73F24DB4596 +:1087000007059F1EC4BF00F0DB49C8B7C3CFE2FE18 +:108710001D61EB59BC774701F035941B5597E67FF7 +:1087200032E8235DD5258CABBB033DC4A75D120B9E +:10873000917FDAAA535CD73183C331BDBA5F47FF5B +:1087400099A342A13CB97E710E63DE9D81F06F0258 +:1087500026FF85A380BF1F6FE0DFA7EDC7638DD61F +:10876000E1AB1D9E62BFACC9844F1AA3EF6DF0F858 +:108770002EF3F37C96740F979BC6F8B7055CDF3138 +:10878000F0270BF0A79CF0E70F027FDE1D1E7F3263 +:108790005D89F8D347F6A4166893EC26FCD15822DD +:1087A000FE7C28D601FCF910E737F0676B257FBF08 +:1087B0006DABFF1CE1CFD6CADA8BE61F0CC19F055B +:1087C0001C7F3AFC3F7726E803A57CBDC3259AAD04 +:1087D000343B0ECF64FF51323C37D68FBE9AF06BDC +:1087E00086C0AF19C3E3D71F0CFCBAC47B725547D0 +:1087F00074E4C38AA0F394703F31815C90FBA53090 +:10880000CFDE243EBCA1E01182B34DEEAC437F1B12 +:10881000BB9CDFA3E63F1E932F42A7FED24138FB4D +:108820004B09CE3BAEC63CCE8E323988F64E470160 +:10883000CFD7EE0870FBDDE0E706DD1AF0D95AC5A8 +:10884000ED4FE31CA94970C7F4C7C64C28418F738C +:1088500040B979D2AFF370BFDD8D8F248C1BEC1F34 +:10886000DC3107F965EAAB8F5F877E8C8ECAD8D57D +:10887000667F17D8BFD5B85F4FF10E054D3483EF33 +:108880007D9A7DC934E1E7AAE6FA5B329F76554DC1 +:10889000E17EE74FF16BA557754A783F863F212F60 +:1088A000A8B4A1BE66EC3F5DD0775A15E7CFAE0203 +:1088B000653FCA1FEFE2A84EF77105A7EF06017FDB +:1088C000973F4A7C25BB347C7DE934337DC738BF74 +:1088D000512E8DDFFC6AAAF1BE3CB439882EBF51FF +:1088E0003A0C5D2697065D76F8799ED7912A75BF7A +:1088F000394FE54EB1CFDCF1DAB2522AC34D08FF51 +:10890000EEEC966B083CD67E8267B7C4F14FDFCFA2 +:10891000F1CF06F6E623282FFC17A7F76F960ECAAD +:108920008B6FE2FC1E3F23FEDB1808DF41F7BC4FD4 +:108930003E8B754F50F05F717FAE7DC3D39BC1D727 +:108940003C57FCA0CE4FF23CBC06E749B9EAD0192F +:10895000F49376BC7ABB3201FAF646658A57ECF599 +:10896000F3EF0FEC8DAE7233CF3FEEA7083837FE32 +:10897000B815E6E98ECA2AF7DB284C9F4E2610C5AB +:1089800011BFD3B88A3D00EDEF23C10025395EDD6C +:10899000C3F0BD9D153F75E918CF72545BCF62BE21 +:1089A000F0A01F5BE09975B5E03F518E9743FDDB6A +:1089B000FCDE2F153F0CBDA1B4247410E1A1A11D54 +:1089C00093CAE57FA9D91F38827CEBB08754F1BEEA +:1089D00038CFB3607D0CF5514F304AFA6A86D05BD0 +:1089E0000CB9172D0DF5E0BCEE403FE3FC89BFB795 +:1089F00034447F40C664C287C7E37CE9711AEFE75D +:108A0000F68F7B869BE430D83F4FD2F34A9DEC1F14 +:108A10007740F8012E91BF3AAAFA18CA63C6FA9EA7 +:108A200045BD771CE3794CE30A62F3101F98EC8C88 +:108A3000205F35E81BCEF12CE2E5B82DC639049F46 +:108A4000FD16CFEF42FC9F6DB223FF1CA797E77185 +:108A50005C727FCDFF8266B9C8F95F8A9FFF25925D +:108A600047ACFF59C42F47934C7E5E2835C287A17F +:108A7000FAF06BB8DE41A1DF1AFE395A80FC413CA6 +:108A8000DEEA5B1D0B21DF1CAB473AB1F4B53319AD +:108A9000CF3576B542EFCD18FEF73B8B436FE17CC7 +:108AA000BEF601CAFB03BDF86DDCCFA7D18775F513 +:108AB00008FCB569787AED6D39457E807BAB998A83 +:108AC00074B8EEE6C73AC6E37E5B64742BB0F45824 +:108AD00007C9FFF42699F22AEE6F2A22B93F12DE67 +:108AE0006F467F8403ED0127F9251CD61E8A8BC2B1 +:108AF00018F263399C31A27BA045F263393C7DBCFE +:108B00005E29DA957EDEBF8AD73B92FC19AEEA2851 +:108B10008F936899317C5FC85326A3F378F0FCEEFD +:108B20005B795CDCD0F331EE90D0EECF4CA8DB0269 +:108B3000C1333E359E1FB1BE6006AA67ACBE389CED +:108B40003F01ED55599F89FE48961FD2D03FE63B25 +:108B50002405310FBAC3C6FD155759AAD3CF515CAE +:108B600098BF5FE79638DF993081FB2B6C2AC81DD0 +:108B7000C4AF76168C1232F0799C304F0CFA750225 +:108B8000BC6614E37AA1125CCFA9EA76BC6F63FEDF +:108B900064F84E9EC0F9B5912FC0ACE1C070711160 +:108BA00083DEDA8A431513B2F93ED1FE73A07C1C32 +:108BB00066DEBB4A6AA64D203D3C78E68B95684F41 +:108BC00033E2A76B3FBED2897AFEBA1A3B05D54F76 +:108BD0004F28BCB6CD4AF11E368BFCBA50A25FD7E7 +:108BE000139D87FEFBA726307D4635C0CD1AAE43C8 +:108BF0007E7BCD84DA6BB3609FEBC5FB1E1B1E5CD6 +:108C0000B08BF2A38DF73F9015C2BFBB5DA2AE2F14 +:108C1000B8F652C63316233C9F670F7F05CFE7692E +:108C20007492DFD1131CB0231D5D10792C198DAC0B +:108C30005D498F9FF3A9099CBE33ACDC5F95E114BD +:108C4000A588FF374DE0FAF6EDA25C2BE09D17EE0C +:108C5000EFE2F6611A43FCDC2AE647BF24C50D2A81 +:108C6000B99ED1AEF0F7E15217703D6389582FDD00 +:108C70001FA5BC43D033164F30E919A9955CCF78B6 +:108C80000A85229DA38FF4CDBC701FC3BC85148DB3 +:108C9000F375B03F56E03933827A0DF24FEFE2C4FC +:108CA00071772F03284E8672705F9DF4DD054F1596 +:108CB000EC438DAF77ABD84F6FA9760BCE678C7F27 +:108CC000B034741B8763A7867E76E3F93E31EFBE2E +:108CD000C17975D2273C017E3EEFE27E86EFC9B6B0 +:108CE0000A385D5DAADD85E733C6FF2C105E83750B +:108CF0004F6394BE5997B6B893E060B41BE5F78B09 +:108D000043EBB1DF8AC6E869F3FAA67BDE7CB17B70 +:108D10004EC667E39EF3C7F23CD4FC712119F9F00B +:108D2000F69BA71CC4BCFAEE55E7EAD07F7E37BBA2 +:108D30006214E95D13ECFCBB51197D1BF13B535BE5 +:108D40009EB5B003B0FAF63B15E28F79D54A11FA19 +:108D5000F7F362E2FDC46A65BF39DF2B4FE47B198C +:108D6000F95DE931EF2BF89E7CFA8C1215FBE58555 +:108D70007509F3BDB6DF29BE03E01F207D34BD3A7F +:108D80004CF95E3F9AA026C4C7D3C3038CF04DE4D0 +:108D90007D756744DF4679B9E532BB7A00D67AEA59 +:108DA000B2D31D68BF76B5D935F403762D6B9031FB +:108DB0005F6AEB3499E2E3FB2ACFBD4C796A331842 +:108DC000E5A965C4DEA67A46582932E7D765887DCD +:108DD000839CA3FCC7BCEA1CA27BE31C79C2EF9B6B +:108DE00037433D8E7EDF6D62FF797EBD0DF79F17A5 +:108DF0000E27E4ABE5CDD0859F98EFFB293C970982 +:108E0000DF93F3D5D6D94279E82F4BE62FEB859F38 +:108E100021F95E2F94D4FC98F8D408F952C9FCEFDC +:108E200052FB2D6AB992FD762A638FD9795E81BE95 +:108E30005BA2BCC7C77756CCC4F32C798BE7AA2DAD +:108E4000BAE3CBF7607ED0656F2A74CE45FB3282E1 +:108E500078FE9BFA2233E9BD15D032F17B72B91648 +:108E6000DF897E9827F7E00BC1B500825DA7D83770 +:108E7000908FE65A6EAEB899FC829AEA01F82F609C +:108E80005C5EE45A326662FE72EE57EDC17618FF00 +:108E9000AE4D398DEF43E9AE3486F9420B7AEE5888 +:108EA00040F32BC0AA404E2D702AB49E535532DB9E +:108EB000F0FD7D3773BAA630367D8D72FA3F609E25 +:108EC0008165A9CA0105ED20E5F4BDB8FFC818C544 +:108ED000128CCB45E3FC4BB4901DE5F9C423F6841A +:108EE0007B29EF49AC4F3E9158AF8825D6A79E49C4 +:108EF000ACAF9CC8E9B785F5D8499E8759E430C81E +:108F0000EBF322BF6AA9C8AF7AE26F1686E71E3874 +:108F10009A123DE0E3DBB3C17E973F544E71D8C750 +:108F20003EB985DED71BF8A92588F4F818F0853EF0 +:108F30008AC745C7E0BEDFE93E7AFF5E687FE7C1CA +:108F4000DC4C44E5536F2D3CFF33D4EFE55486F8F9 +:108F50007EA1B5AF0BE5EB952B9E1C83F2EFC2898A +:108F6000EFDF8F70FBC3771D0CEDAC3FC83C7FBCBF +:108F7000F7D727CF77E3BADF4DA940DBE10FC71E54 +:108F80002F413FC5F2877E3806F9DB3B0F3E349D0B +:108F9000EA0F1E9D84E53B47BF53B280E450740C3A +:108FA000EA9FC63C2B1E769D1D7591EFA0FDA3F395 +:108FB000AE1071C3150F6FE81B057C6FC591541D72 +:108FC000CBE54736BFC74BE9055EB651FB72804C17 +:108FD00015A838E753395F5C71C491702FE3BB1259 +:108FE000EFA9349A585F2AECC6C085866B7C30DFC7 +:108FF00079A1872CB5B3F07198AF199E67C0F30BB8 +:109000002CD1CF6994DA442E379B4F24AE7BD23AD1 +:109010007CFF9913399F0EE01B0C267D3ADF31FC53 +:10902000FB9FB344FF071F1CEC6F11DF11632AE89D +:109030005F2B043D3D31F8FD3F76EB68A0B315880A +:109040001C45F1E72B98E9DCB0DE9F9D6907504F86 +:10905000785FC8B10F6D9C5EDF69D5EEC1B8F5F9D8 +:10906000564D9B61CAFF5ADA75F3692FE04BD3F175 +:10907000EC2966FED774F4A0FC7578FE2EC86DF45A +:10908000DC34CD7B60EBE5D8EFA8A507F7D574F409 +:10909000A91C8C2BBDDBF34C1AF65BBA2F23E17DA8 +:1090A000C71BBBAED26698F4D37F942E1FAFE2FCF1 +:1090B0006B458F2DEA94B0FCD5CCD1C837BA247A51 +:1090C0008F7FBA354CEFCDA6566A361DF8E2173FB2 +:1090D000FED169CC2F6EFEE1B4E9A8D76E92435F52 +:1090E000FD37E43BF75BC85E7AF4970B2D482F37CA +:1090F0009633D9024AD2A9C00EFB3994F7E29E37C3 +:109100005D0792DD83F3B2A765E03F6987244DD404 +:109110005F96F15B615AE7FC188C7F4B4E0B6E82B9 +:1091200075DF468714CE7FCC42FCF58BB1D65FE06D +:109130007A6F3F6CA3F7336EEC4AC49BC6276DE48D +:109140008F683EBC360DE3518F7D629190EF0E1C0F +:1091500096881F18706BC46F58C2FAEFEC4FDD8809 +:10916000B983EF6447C760DEE33BA9D131997CDC6A +:1091700037D07E6E3CF25F7FC538C1B268E23AC933 +:10918000F870489C0FFE0266BC4AEE879CC83A3DC8 +:10919000DEDED402F2C11437697AB3D38E7E8D65D8 +:1091A000B3EC175D0FF092A9041717C165C5849E33 +:1091B00012E4839255A96DF75237C909EBBC83FFBE +:1091C0001AC7EBF8D1BCE588D780B27F7EF5BFB671 +:1091D0005A00BFF32D3DAFDF84FC16E0C1DF0F8FD7 +:1091E000AEFF6E16F127867932C6BE6ECAFB45D732 +:1091F0000C939FF0DD13DF5F8F7CF35D7CEF1BE54D +:109200008F1A4BCB04F89D1472F85D85D78DFE6DD7 +:109210003D4FA561BC6945CFA85AD4C74E1E9332B5 +:109220006580FBBB6F3D90325C5C61F95B99B5F882 +:10923000BDEA647E64C8DFB3F84FC0C79F4CD44E0C +:109240004F44B8B78F227B2C7754A42232CC7CC6F3 +:10925000B84CE73DF722BC17087FC10E5BA482E043 +:1092600078832778D83774DCCF2772FAFEA03CF4D5 +:10927000AB89A8D7D7F6913F20EF1A16C4DC94DF4C +:109280005A82B72900DF252C6C4718B2F66CDAC772 +:109290008D0CEE91E01E9C89F4B37C16FF2EDEA2AD +:1092A000FA4E92C33B6F66414B15D4ADD1F5585F72 +:1092B000049AC03D207F53B7389866A2E7A53BA12A +:1092C0006E3EFF3E533BDCDFF24389ED2B588CD6DC +:1092D0006D7AF8EF0EF33C8379614CA3F77CFF22A3 +:1092E000E0F741B97601CF25E1F785609FB71CE330 +:1092F000F9C059F61EDAE700EC13F582AF097DE7F5 +:109300007796109DB7F98E05DA62A8FFB16591B620 +:109310007814E32E66E41B3D5C0F5A31A3E734F169 +:1093200011A63CF275B0759B9C21AEEFA84CF912CA +:10933000AC7BF9C3B3E9DCAC91295F1E0DF5C6D94E +:1093400004A7CB23A4B1B0AF897B62BFE4F7FA6B6B +:10935000F48DA09EB597CF7F23D309DECB581F9DF8 +:1093600037A52C93BF27DECBE3C57F3E91417E42DC +:10937000E31EFFCC82E948DFA0F73057E6D07B4EF2 +:109380008673E3BE24B89BE15C84F04DBCA79B7E52 +:1093900000F01E064F8DEF78BD8E9E54AF191FDB77 +:1093A00068BFBBDA242E77F4D9F328FF7BDE74E2A2 +:1093B000ABDBF0FD37D377C836A172CCEDDF18A652 +:1093C0007CB8A7B2F877CBAA508FE3F5D2B2ACEB5A +:1093D000BA0A309F3CEC453D79F76C3B8B71FD87B9 +:1093E000F277E74C0E4F2A43FDD5123A8D7E8A372D +:1093F0006BB412C2DB160EE73D5322A59161E4AEB9 +:10940000719E6D1911FA1EC44005530E54105E5121 +:109410003D651C5310BF53C7F07B4A9DE4A6BC3B7F +:10942000637CAE0CAAE930701F6CB7F2F700A16440 +:10943000A999F49D213DF522FD0DBD347742E466E6 +:109440005C3F5756D95AD84F6E4AA4625599A9DD48 +:10945000DA5943EFFF02DEE970BED473B7D0F77F6D +:1094600052A73005BF07BA5B027A46BCBA5322F94D +:1094700095F2E4F118E2EDCA3A95BE179F7DFD160C +:109480001A7FF7145546FF51B88CF3F974A19FEF7A +:1094900095B67BB17DAF579570BECA1F803C83E700 +:1094A0002B7F506359E9A17BE47A7C4A643FDA3F21 +:1094B000B9DF084C590BF8BB045F429F86F7D849C7 +:1094C000DF271DB8592578E6ADD17DB8FFF45302EA +:1094D000CEB3399CB3AF5F4DEF996ECE6799B88F1D +:1094E0003CD62661BFF5D91C7FD62F6073510FB3D0 +:1094F0003285E218057315A9ED32AC476A38DD29CB +:10950000193FF192F7B21DBF2FB52B8DEF2B5BB634 +:109510007C633694BBA6F07AE66A493B40C4BC9DA6 +:10952000EE3BD7C1EAA44CFE1CCF05A8A71DF798B7 +:10953000E07B258777EE385E963ACF78B6C2FAB7E9 +:109540004A2C82F2FBB92C43FF8E7910FFFE68D3C0 +:1095500072A722BF7DC1C6286F644C627B91BF8E0B +:10956000BE47FB7EF04A8A5BBDEFD1D233A03C817F +:10957000FAD5307C7D7B19F79B357F343AE1BB66A9 +:10958000CD733F203BA5F9A33109CFDF053B356AF9 +:109590007ABFABA9F1D44CECB792F5AD477A59D963 +:1095A000636151135D9F70F1753F7CCDC1F3A93BA1 +:1095B000C61D30C75B0C3A6EFEC842F9029FB7C8A1 +:1095C000D4BF79AE9DBEB3D8BCD142EF9F357F6486 +:1095D000E7ED63F97CCD1F8DE279EE56350DBF4383 +:1095E000F679CB7BEB310F70E08712F9119A3FCA05 +:1095F0001179F06A1AEAF5CD1F49543F67E5F2B5D3 +:10960000F9C4F8348C4B3433F608ADF39195B7E3D5 +:109610007B2E88CF272C9467300BE436F269639D4C +:109620000BC1DFA6215CCF097DFC82D24F723ADFED +:10963000C2BF137641E5F577455E2FB6235C2ECC8D +:1096400035F848CC8AE3BB83BD5615EA4DC1DE9997 +:10965000CC840F7138A624E479E6ACED8BC9401FA9 +:10966000CF952DD95D068671F629837FDDB85BAB7A +:1096700086768B9CC0CF522A07F91BB1D55DB245C7 +:10968000F0C3C6DD330ACC75DE3F3E7ED975E80FE8 +:10969000AC2CE3E35F2C5BFEE21AAB49FE5907C634 +:1096A00084524D756752DD03F572535D496ACF4AA6 +:1096B0006ACF4BAA17F0FEF3D3FBA7A1FD7CB6EC53 +:1096C000A6EBAC4077F347F77F5382FA96B591EB60 +:1096D00066407D5125E73B373D2905290C25E0777C +:1096E0005390913EEC09F6DBF17728522A83A7D1FB +:1096F0001FDC74425224A0174F0F8F1337E138D567 +:1097000034AE87EBD14D3D6769DC88F30764A2E393 +:109710004D8173D46F65CB7FDB511FDCF0F1CD2120 +:1097200094030536CE97AC2CAC8D063CBFE9C46CD7 +:109730001EC713FCFF82577B0AF7A3FF5052907E8F +:1097400007E90DE7F5C4E9C1E8FF9BF2277F8571C2 +:10975000C7945BDF6BB342FFD756FE7E1AAEF71B92 +:10976000EC7219F2DF6829AEDBD0B8B0149FDFB01D +:10977000B2B817E3B5AFDBFAEF43BD522D5F4FF040 +:109780007B3DB5BF50023DA4E858E7755618F77AFF +:1097900076FF7D08CF3DC7B6F37A617F21DA4FE3CC +:1097A0008FFD84F72FEEBF0FEBF38F7D8FD7CBFBB1 +:1097B0000BD12F5AA1F710FC0F2B9CDFFD26492E51 +:1097C000E79473FEBEF98B5A4639FA839AB85C9CCB +:1097D000DFDD370FE96CBE0C7204F0F8F0BBBF3D63 +:1097E0007618E070B82585E815CE1B42BD3E97A3DC +:1097F0003CF0FD4EE2D7033EE0DFF4D1BEBE7EF486 +:10980000E3A74C73525C28D9AF0272EC38C9B1F9A6 +:1098100065241F9E9EA875E1FA46E9BF1C4AE8DF51 +:1098200055AE1AF92F1598F7D7D0E009521CD3DAA4 +:109830003F0DF1709B8B9F0BE887EED923EEA5BC03 +:109840009CF3C9F272AECFBE3BF12A9A17EC081D09 +:10985000F30DF5D976D2AB76CED6BC6ED44F67E792 +:10986000C87A823FC546F6D34E94F9D8BEB298BEA8 +:10987000EB9E8FBA03D2EA3DDC0E31CEF335E43BEA +:1098800026BEBB73D9955EE4B33B7D9A17F98BC1B5 +:109890002799B5271BDF8F33F822D6393F94789D5F +:1098A00041BB295EF1751B8FD77F7DBFAC174F364B +:1098B0003D17710A63FCA53EDF99C1F763C8BFDCA1 +:1098C000B53D243F73F7F832F11E5060A2FDB87B1E +:1098D000FB78FA5D833993E7D03DEC9CFD806B61AA +:1098E000591C8F99A65D8FF0FC9AF88E818137F80C +:1098F0008779A28BEEC9A578615739F747BC2983D0 +:10990000DE057AEBA4C9FC7EBB908750C9BF77D433 +:10991000C0FABF8974F1FFEFE75F763F9BF1F9670B +:10992000BD9F952DBFBF343E29E870B714B3E572D3 +:109930003E69C49DA761FEF2BF9585EF2F37D1FD2B +:10994000FCFF58E9A578B8D84FCAED8FD75D0FD581 +:10995000F9CBDF21FE32FF5B29E42748D6C353CA87 +:10996000FA8FDD0DE7CE64A90ADAA3AFDBFBCBF1FA +:109970007B3BAFCBE1838FE3BAF91605781CD81D8A +:10998000E2FCD67E3AE71B978573D0BEF853B985C3 +:10999000E6413F0233E35747F0A53B87C5330BE170 +:1099A000D5C00F2D518C27ECAC88EEC5EF88ECBCF0 +:1099B000B68CDE9776097C027CD3F8F798ECA47F0E +:1099C000EC2C9675C2C7796E8A33ECF4F1F576CE3D +:1099D0000B107E7EDEC2F3580696C9DC9F2BF29EEA +:1099E000FEE8CFA4F8771CEF06D2107E71BC1B48AE +:1099F00033BF57FB47E12FFC6314F0CE14BFFBA32A +:109A0000F04718E32FF5B98177396B8DF5399EBD95 +:109A1000B92357BCEFA39520DEBF21F0C5E0B79373 +:109A200026877F83F832A8278BF32CDA5648F8F97B +:109A300086E0DF1B52393EEF73C5C87E909D6A06F3 +:109A4000FAE5C11EEF47FC5893926647B8FC1EF03A +:109A50007514C88F70AEF02F083B2DA52C4CF6F274 +:109A6000FC080BA29E712388B12FE07763F5443B7D +:109A700015BFF43258B70CADA3FF2CD14FF089239A +:109A8000B1BF2EE26A5C5E754937EFA5EFAF78B9DA +:109A9000FDF486D4FF0CE6952C447B1DB6F6E777E3 +:109AA000DDB204747F4EC4D9CE3C3795E2C886FD42 +:109AB000FD8980D799DEE9E9E80F329EDFC406C848 +:109AC0001F00281BD906E76B4E53D390FE06F1E327 +:109AD0003F5D023F34FADECB39BD90E24E801FBCC1 +:109AE000FD5189F012EE93E639175623F85E24E80B +:109AF000D533515F1AA8611194C3869FE37C8765B3 +:109B00003FFA3974165D46FA54A39BF202CF5963AB +:109B1000EBD1FFA8ABD608FAC39ADD6A1A7E5FE7DD +:109B200082C41EC1BC860BD903761C7F6101F4C9B7 +:109B3000403D7AC0FE32F6FF381D750A8CAF2FA368 +:109B4000FDCD9D40DF4BA41F40CB213F3B7D070156 +:109B5000FDDC66789F63FD69E4DF0405E17006F9CA +:109B6000C975CB9491EDDE9BE4B325AB4CFAFA902A +:109B70007698B37A0A954F5BD09FCAFAA70F17EF72 +:109B8000BF493E47F38CB84ED7EFFF86797D37FD4E +:109B900020C90F92843F4DF1BA84DF3F5B6E6EF7B0 +:109BA00099F85525BF273683458B25F427F37A4A44 +:109BB0005D5F14EDA966E15FCA3ED53F13E92DB59F +:109BC000B2872D443BE72D4E57973FB9FF29B4CBC1 +:109BD00033EAFA0A11ACCDC26F9AAC475DF6E4766F +:109BE0000BDA232D56467913CC994A7C0D98E89BC5 +:109BF000E8AFAC5D3B4925BF72EB917DE8A7AF4D67 +:109C0000297DF5BBF43C5DC5FD2C5304FF9ACBF9CF +:109C1000578BD345745F7BCF78DAE79CC9E1EB279C +:109C2000C17916CBC1E9488F29D69E87FA60BE2537 +:109C3000ED4C6DA33CF09E891877ADB53315FD2131 +:109C4000B5993C1E53E32E2DFB1D94A7CEF9CA6C8B +:109C5000A8A74FB2F23C2F87367FD2B491E3D2CB84 +:109C600027717DADF6755718F5B85AB78BF8F8B669 +:109C70001DE3E9771F603DDAEFE2DD3EFA9DB2E5D4 +:109C800093B89E37677268F9249E9F319DE2E193F5 +:109C9000F877E36AEDAA1FEDB327DC7B66209EFA16 +:109CA000807FD0F7D6F41A7F16E0692DFF4603FCBB +:109CB00075B647A07D362CD00D74B0B7B62F0FE91E +:109CC00064EF747B702DCA59162C44FAFCB2146DE3 +:109CD000E7EF571714E27B2A75331C41DCC7D58E9A +:109CE000CE4AF4C3B265B68CF34E722FB3E1F02CBA +:109CF0002ED7ACECBC4117D079B7BB2F8F7ECFC22B +:109D00008EDF40C063F0FA29586B13F99D787D9679 +:109D100093D74FCDFB751EC2E114D278063E7F4922 +:109D2000C5F62DD0DF02F2EF6E29B29FF2B6802287 +:109D3000318E31CBD947F78D0F1C5E6CEFDC8BED8C +:109D40007685FB8958D0F66EBFC9CF9AEBE6FD65E4 +:109D500058AF8DE6633189E8AB2003BFCF619C6FBC +:109D600091A3A782DE836BE6FEE47D355A776725F3 +:109D7000FE6E079BBD16AEC0EF2E7FF3678897FA85 +:109D8000189F0DECD82727717E38145F35F92CE227 +:109D9000D1F3C52407E3F8CABF0F530BFA1CF21323 +:109DA000C457C4AF166769E542C27B75317EC704EC +:109DB000302B88FAC32DC51C3F6F59A7A8F8DD5D6D +:109DC000C04BC2C75BA4602EFA556AC5F7C96F7154 +:109DD00041FD22FC60E1460B0B9BF4C5CF6F76443E +:109DE000F877D4D5FB5B60FEC517CAA6603CC66891 +:109DF0005F6C4FFCDD21A37C59A97912F172514AA5 +:109E00001FDD17E66A619CF76EA98FEE0BE1A8D300 +:109E10007D001D55125AF8747ADF37F1BE8DFE565B +:109E20002BEF3FCBF92AB5E39C97729F875C5F3E8F +:109E300010213829B36D80F3A9329F5F2EE0F3ED36 +:109E4000ADD54B119FF72E740751CF7CC2DE3391F5 +:109E5000F039E9BE53441CE183F2D0CB782E0C9745 +:109E6000BA88FF86BF409DAC67491E2DBD9DFB474C +:109E7000E37EEB2897E7F83137EF50397C019DB34B +:109E8000286F1E91A2B83EC69F12E5748CE4FF4A6B +:109E9000A05FCC87644792E57E1FADDB0CF214BF58 +:109EA000D7BEB227717CF389E1E3034FA09F794AC3 +:109EB0005C9F89FBFB386CBB77FB484FEE47A59452 +:109EC000F2EED7D038F423723D49F3A21F6BF7B2FC +:109ED00022C287142BD7AF97748E3FD026F426D496 +:109EE000B70CFFA3C19FE64CAEB54D06FEF4D7C933 +:109EF000B56C32F22D74665D4ABE86E887FEC78B6C +:109F0000C57D2E17F18455FF0DFA09E88727459C7A +:109F1000BAEED962FAAEE82A49CD453D2473B2A122 +:109F20009F94243C3F6F0953DC237E7F317E7FE288 +:109F30001E96E33D50FC2CBC9EEEA591DF77D30C22 +:109F4000AEA7B10853BE7C19BF67F3F71CF05E13D0 +:109F5000BEEF00F7A80E738F37E13D06F93D26FEF0 +:109F60006E6B27E963CD80E7481778AF09ED3B3981 +:109F70007C16A07C35D16F46FB7E0BE5650AF8A404 +:109F80004FD17CEBD05FF12CD89170B5BFC326B216 +:109F90008FB4E9A8677F505EEBC6FB71A35D58865E +:109FA000F6116B44BC40FFF61CF40FB6320DBF3FF8 +:109FB0000FF73F7DB8EF0E6C3AE96A447CFAC26451 +:109FC00039216F6960928DE04DF10BD4D33A1C4278 +:109FD0008F53C7E03CD38B0CFD5BA5FC86C522CE1E +:109FE0007FD3759E30CE774EC457AE99CCE5DE3523 +:109FF00093795E965137CE07F3D33CEEA9897EE480 +:10A00000D064236ECBFDDDF8BB8864BFD9A2AE253A +:10A010003ED4B343943766E0CF6EBBFA3CEA0BBB49 +:10A02000D7A4ABA80F1A7874E6CC38D273170B7E7E +:10A03000D03099FF5EE99F984AFA2DE013B51BF5E1 +:10A0400041BDF66D599C97BFD773F2B951942F3A21 +:10A05000A8D7BEED36EC22CA0B3DD953CAED228BF0 +:10A0600044EF010E3C2AE0C5F8FB0B279F2CA4EF20 +:10A070009B9CC73C161BE65184F7625C49EFB1918B +:10A080001DDABDFCC114F21BCBEC11F40F5E90077E +:10A09000C68C91E2715B668DA620DCCFC7EB13BF47 +:10A0A0006ABACF93E23B8C4DF6588939DE6BD48D7A +:10A0B0003C0CACA33C7942E8354D6E5E1F480FDF87 +:10A0C0008578F498F84E63531A3CF70C078F813467 +:10A0D000DCF749A6F4215D7D7E2CF0158E1F849F50 +:10A0E0006857E1F94F3E594EE7FDBC45127602B77D +:10A0F0000306F5FCB7E5FDF44D2636F0D81DA8DFC4 +:10A10000E559E877424E5A07026837EB6FB9559424 +:10A11000B727A33B4EDF8774AA0582299703577B95 +:10A12000E7C189785FC970D92DCEB3D3A68E99EADD +:10A13000899FA379A383DEF76D7EEB5C03BE27D8EE +:10A14000DCF8F17C2A93F25AFE28F56F2DC1FB3C16 +:10A15000E488E7AF14F112F381970A566BC0BBD9BC +:10A16000F9AE1DBFD3E1EC650328D758D640CE70B9 +:10A17000FA7CF3DB9B42968BE41125EF83ECD9E963 +:10A18000241F48983527E5D33073DD32B47E6290C2 +:10A190006E129F9F04DB8F7EFF2469BE376DA199ED +:10A1A0005E6EA7D1FD2DB547A7DE81F1C109E1DEC5 +:10A1B000C9D9E2D0D0DEF80737B7AF01EFD01FC45E +:10A1C0003A793CFD4D9B361FE9366346CCBED0A4A0 +:10A1D000A7BC24F8F52287F1BBBD31BB99FF18ED70 +:10A1E000D36B878F1FBD28F8446A1F9777DF6407FA +:10A1F0002D66BFC28B825FBD3459A579C6BEC5FD31 +:10A20000F3DF647FEEC53CCAA69E0A8AD78E5D1D29 +:10A21000233EF1A62D4C76FB9B921C7904F5D42DA0 +:10A220003CBF66E94312E1E9E3476A2CF8BB98CBEF +:10A23000F74941CC8FBC5CD83D4B41BE703F00CF4D +:10A24000CFC373103C50AE54A03FE0BB168A4BBE48 +:10A25000C5E87D88959DCF523C3DEF161674E421EC +:10A26000BCC3A79D5C9F59B5C11BE7776955513B9E +:10A27000E68919F059AE8569DCF24696C14CBF7F7C +:10A28000929C47C3CCF92E889F4712F115E5506286 +:10A290005EC6278E447CD12F49EE1A72460E668A1E +:10A2A000F7A2B9BCFD7F883924EE008000000000D1 +:10A2B0001F8B080000000000000BED7D0B7854D5CB +:10A2C000D5E83E8F792433939C0909494842CE84CE +:10A2D00004C2FB24841812C093071814EC10100158 +:10A2E000512721206F06F0817FB14C48E42568A8F2 +:10A2F00051A20519B4F8E8DF476811A9601BC243F1 +:10A30000DAAA7F54E0026A0D62A956C4142BDA5B04 +:10A31000AC77ADB5CF99CC4C40F0EFFF7FF7DEEFD7 +:10A32000DED87ADCE7ECC7DAEBB5D75A7BED3D47F0 +:10A33000F6F74DEE7032B654509395418C5D1CACDF +:10A340004B5A126385658CB144C63A770AC1A73D62 +:10A35000F0DFAC752C2B606CA19F69EB152836F5EE +:10A36000606C04BE6F5F8DF5EE62CCFFA4C6D85959 +:10A370002960651263B36D9BE899AC41E3E18CCD34 +:10A38000631D56D607EB775ABD831973B5333D0865 +:10A39000E3DDC39E912642F91BFCBB1EEB8B8CC1F7 +:10A3A000F8299A4ACFCC8FA01EC0B7E0A3D6C3B677 +:10A3B000026CAFEDBE2D05CA2B58AB6B088C23FB8E +:10A3C000AB11AE5E0A53EA52A17DB98FE0495EC679 +:10A3D00094FA3CF86E672C361FE06BB6313597D196 +:10A3E000DF37F0FFB9C1C8327B1ECA76A39C05F3E4 +:10A3F0006C89FCBE78CF37B6F0B2096FF1F2727695 +:10A400006618BE0DD23C43EF57042506F33BBC5201 +:10A410007DF4430B638132FFB60E8033B04A66F59C +:10A42000F0DCECF8C1731D00E7F2804DB1C1F3CB55 +:10A4300098D1CD6E782F88B25F28626CEC1AE81242 +:10A44000E7FBBE2BB883F0EF1F8A78AB5FC7A6B6D9 +:10A45000003EEAEBE009FDDFA20984A7127CC2F806 +:10A460008B107FF06CC37173183BB83297C61F6BAB +:10A47000CF9319CCAB42C90B60BFE3A1C31EF074EC +:10A48000435F323CA57DB6A00DBA603263CE9E8C90 +:10A49000DDC0A7CAC6A68D6A457C1E705955C9C3C2 +:10A4A000DF29F07D2CFE07D4BFC139BB01BF57891E +:10A4B000CCEF06B817D95A57E3FB8BA96FDE81F4AE +:10A4C000BF3776A28C747F36DEE7D500AE32BB96FE +:10A4D000BD8C7AD1659C4FA7A44FC4F7FF90F42A96 +:10A4E000E43BC6D295B30E03CF12FE3B40F333E7F5 +:10A4F00003F427F8CB91DF12117EB54181A7942296 +:10A500006836D61D7EC9985FFD2BB6E02A845FD6DB +:10A51000B6209E1749B27FBDD67D3E26BEA2E7B5C6 +:10A52000C0EEDBE616691E7311DE4F2DBEE7148008 +:10A530004FB4ABB2CF49F39887F0C33CE67FDB3C26 +:10A54000E0EF602FE8574E67C1F502E121D00EF031 +:10A5500058613E084FBAC5770FF62F2B5E86FDC2B5 +:10A5600077E67585B7E7CFCD8EB85C19F987C56AF0 +:10A5700048B76CE507DB909F0E0564B61EFABB2F4B +:10A5800036EE69168F7CD53BC8E218FB0A70D73EC1 +:10A5900008E70FBD225F264A24DF87DF750519E033 +:10A5A00045382011BF1D7ACF115C05FD1D2AE57CC1 +:10A5B00066F2B3F9DC60F0D9A1FD9CFF0EDB399F98 +:10A5C0001EB6A73E1DF074D57BCC90E32F52FA64E3 +:10A5D00033B17B3FE673F34AD02CFDBACA25775AD4 +:10A5E000FD28EF9B6FB7EAD86F89A3FFD35258BFFE +:10A5F0006522F3215CD993EF88AF02BC1CFE941551 +:10A600007A609E3F36E02A913C777B01AE1BBE927A +:10A61000582BA8A8DC73ED8A1BE67F83C27484B72D +:10A62000ACA33ABD37F47B2026391FF9E5C0694F4A +:10A63000BA00FDB5A5F6A367080E7BF24C01DA65FA +:10A640001F99F06E1CD4FF226053D7A31C581A0523 +:10A65000840BA8D0DEA384C8939DD893588731502B +:10A6600059AC4169F5433DB6344E437ABE6ACC4F8E +:10A6700054B93EFD6206A7FBAB022F07AA19C9B762 +:10A68000D666A7F2C1856A50C26F7B18B387F1F115 +:10A6900072E6979760BFBA5DDB817C9B6E63ADA667 +:10A6A0003ECA223E7917DBA7033B23FDDBEC079A6A +:10A6B0003F84F997C5FCA1F943D04F19309404EFBA +:10A6C000339C22D1B7CDC5E99BBD76813316E7C552 +:10A6D000949D38BF2F5D93E205C0D331438F1C6634 +:10A6E000AC12F166E2C59CCFDE32758137ECFD1FFE +:10A6F0000CFCB71BED72D3774AA4BFBC8C3952B1A6 +:10A700003FD578BF5F477ECC4D7F5347FCBEDA7B99 +:10A71000BE1C8BF21C885111BEB14E4F0303BA967A +:10A72000C96A85D7C9EBB98784F3AFEA6408B73241 +:10A73000DA89FAA3CD3993F85938302CDD1B46BF9E +:10A740000357E0DF0F0D7D79E02AFCFBA9C1BF872D +:10A750005326C5FB2ED38FF96C33F001C4CF463995 +:10A760002D71D8887FDB626CD7C4BF070CFEBD6437 +:10A77000EAF1ABF26F1EF16F5B2AE7DFB6D3D5C407 +:10A78000B7875D7745F26F0AF02FE0EDA0CBA7A267 +:10A790007E6C4BB5E94F7326DDB204DA1F145C0CF6 +:10A7A000E9CD643D3D7CFD3D18D36F868E78678A88 +:10A7B0008EFC54AEA9F9EBDDC0BF8E41240707EA39 +:10A7C000FA6549F0BE6F1E87375A3ECC7E98D37229 +:10A7D000AE238C3FCDF787105F3694076F3CD2EFE6 +:10A7E00090C0E9A0B5E5A6D7207D1B37EBC8F7637D +:10A7F0000C791A63B79DC679B044E0F7B0F539FB20 +:10A80000C8EDD4FE4A74B9F238957C9C6690AFC20C +:10A81000B07194CB8F0312E53E3B90E152C6B0DF9E +:10A820001F0FF60DC883797F69F1BFFF00CCBB73A2 +:10A83000A25D7B1ADA2754760A3EE8F77D81F35D44 +:10A840002ED357BD8BF83BDA63FB7A0FE26FBC81E6 +:10A85000BF640FE26F429E18612F5C096FC01F59E1 +:10A86000C2D06F9B4F517A8DF3327873C27CE2FE77 +:10A87000CFC19B16E7FD1EE2ED7DA6F4C69787616A +:10A880004D0D5FCFAE6427BD86EB71CEE5EC25BEE6 +:10A89000AEC1B2791DC269DA4763BF57FDB744D470 +:10A8A0008F812FA7BD0676E2D81BAAEFC6F2C96139 +:10A8B00087A739410F8D2D07BEED0576E1CE7F3E8E +:10A8C0001900BC8DBDB5FAEE24F8FE70C1E3D313B8 +:10A8D000F1FB6DFC3B0BFC65BA0EF31D7B27948BE3 +:10A8E000199BF222D487B2A3C06751E13945E6F241 +:10A8F000085DE8E17AC69F27115DFD795C7F2CC970 +:10A90000E37A8F5083FA70AAC0ED39D967A922B8CB +:10A910007D1684FBED51B04A0EC57E7D198D617A9E +:10A92000F5F804DBEDBA93D79BE8EA7ADF90C7F538 +:10A93000ADA380DBD1D174AC37C677E68A643F63C0 +:10A94000FB5B06877F97E97B83019F53E57636C2E1 +:10A950003579307F7AC3C63B3EADD402EA88DD52FA +:10A9600000FA59457AFAD6233D0FA47EEDC2F51DB3 +:10A970000C96DE388FF72D9A4CEB9A87F95F04FB23 +:10A98000BBA2C8DB0023B1F71FB8EB76B2DBE21C39 +:10A990003AEAC33D06FF6F720CA1F7D398A8215D78 +:10A9A000F16F83B9EE011FBD356EF321ECEFD51CBD +:10A9B0005BC8FE4C29ECB2D70EBC09060FA0FC46C2 +:10A9C000D62273FFC25FB114EDDBCA1805FD9409EE +:10A9D000AC83BE7F8F310B7E9FC8347A7E56DA51AE +:10A9E00088EF4DBBEED30C6ECF817DB703E755C525 +:10A9F0007CFB3A485F36CA8807270B72F8014E5C29 +:10AA00005FA3D7FD72FB16B20BE0AF3D39B5BB1C9F +:10AA100013B8503F99197F0D4AE05EAC6FD809FF1B +:10AA2000907C2FE2B829AC4520A161ED02ADE7771B +:10AA30003395ECC422CDCEF93C52AEF60A9CAF025F +:10AA4000D5C05702D985A4B77F572D3C6DE3F89246 +:10AA50001A0A0D7C42A3ECAF1E907BA2BED6ED0C71 +:10AA6000F1B3C9F1838AA550FFC683766603386EB9 +:10AA700074FA699E6F0BA2B68AE6E33F7877621795 +:10AA80003E8F84D6BB483A5442BD7BB0BE2A73FB8E +:10AA900004EC151C67C22E2B8D7333EB24FA7899C6 +:10AAA00042F83F96C7FDC29EDE89A54980BF34B5F6 +:10AAB0007A5F07B43A1664010BAC87C7D0EE007E0C +:10AAC000BCC10E760FF0F75E8B77D204E22B8BB60B +:10AAD00003F9AF55297722DC83DC791294F38F6870 +:10AAE00007B03CBE809707B5B49739A07CF3485EA9 +:10AAF0001EB2A7B30DCBDE0A5E1EBAAF55C4F24D2F +:10AB0000B99E7C2CA731EF4D8391FF5489FA07BA87 +:10AB1000BBD02E192728BFC475ED642DB797C7E5A4 +:10AB2000F421FBECE8CA4AD24BEE19934B2D38EFD7 +:10AB3000F182B6031E23BCD575581E5129E08ACE7A +:10AB4000DC1541A919CA937DC233C8BF17F27A72C6 +:10AB5000BDE7ABB04C017ABA7D02C95D71609C65FE +:10AB6000D260E2CB7B0D7FE922F243347FEE46597F +:10AB7000433CCC36F508237A4F9BDC2FB8DE908F10 +:10AB8000C93DC93F22BE3C2E289C3F8E4954FFD46C +:10AB900049AD02E91288E57A8DD9B5867BA1FDB170 +:10ABA000C7B218F7878233B0BF14E4735CBF26AF17 +:10ABB0001192E06917580BFA41CC19A5E73FB4464A +:10ABC000D9A1813A94BF647F1C8F13B0B0EF180FE6 +:10ABD000B0C7051CB05E24FBC2DED3BFFF690BAF5C +:10ABE000077E54627E124EE143867E4EAE4750D6BB +:10ABF000C37C5E52AB254674079840BF5C7F6931C9 +:10AC000095A7C19868A7DC985B5AF62728C71D95B9 +:10AC1000884E965E7B24A4E3EF6E91551BC27309A8 +:10AC2000F459A1B1F4009E77E79B76A5DF82CADCD8 +:10AC3000B4BBF60A8D33086F279D2ACA95C25A56AF +:10AC40000950FE895F217B88250A012C0F7CA9D73A +:10AC50007692CF144E9701377B880E37D62EB15897 +:10AC6000909F7C02CBF1209CF1640FDE987D1DD972 +:10AC7000FFD9937FF05E1CFA030191EC26D1379146 +:10AC8000E4AE0AF5203E2BDF24F9DF5DC78212CC4B +:10AC9000F3F793DFA27200689483E3CBC177D18E80 +:10ACA00098C432C98E3B0E7D5AC3FC0966F71D4815 +:10ACB000C479BFD893E40FEC47467CEA67A427CA5F +:10ACC0003A9664A01D796A1AD89180D753A705A631 +:10ACD00040F9F8C65EE40F1EBFFDCFF508CFF1E1E5 +:10ACE000094194EFB2AF1CAC95E21C822C87E9B10C +:10ACF00032B9A5FE1E9CE741BBBA43E9AE17D1C0ED +:10AD00006480EFD45039C0F07B1AFE278C939C9D51 +:10AD1000AC63FB0D4BE2348C7B8084DA34183773E0 +:10AD20001A233CFAF2B3885856E6D4ED89F8B407F2 +:10AD3000EBE1FD646FF57B684F2505440FFA0DA12B +:10AD4000754AF0DD0EC4620BF2B569F20828C7F847 +:10AD50006E471168C81FC9CBA9BEF7B0BCD159391D +:10AD6000AD12CA5FBE77DF9D38CFA9B502AD2FA562 +:10AD7000B59BE49E30CEAD81788674F8D2ED1F93FA +:10AD800000CFCA4A81AD02F8ABD4ED16F4372AE6FB +:10AD9000546774C0F3F97C95E03BEED2331427F688 +:10ADA000AF8BA807811EDE80F25FD8BF1BFA87F247 +:10ADB000F10CE83FF1BFA1FF24037ECF7F53FF16C4 +:10ADC00003FEFE97C74F5536F40F4C539ABDE4412E +:10ADD000E4DBA9A1FE038792E0395D85FE813B2A71 +:10ADE000E754939C564CE5FD47DB3DA1F162F878B2 +:10ADF000D95E5BAB38E45F1967138D7332A73103FB +:10AE0000E5EDE8341BDA36A17EB3A7AE691723E27D +:10AE10002B8D2EEE9FDEECC2F5FAA47726958503E6 +:10AE2000E519E1FEE9D12BF8A77BF2B95D77D4F003 +:10AE30004F8FDBB95E398EFEA9D0556F7FBE115F93 +:10AE400099DA279B655DD99E37D7EB905FD887FB52 +:10AE5000A7473CD7E69FBE65F8A7EDF9A67F2ADC99 +:10AE6000F3EDFEA987EB158FA957EAD2319E7064E6 +:10AE7000DC9A48FF54E5F1952F2DAA88FAFDC40C01 +:10AE800089E2732766D4939EFB020C05967775BF03 +:10AE90003B04B7618797B04029B65796AB0901527A +:10AEA0003A2D7502941F5E0A7E2CF4F799318FDFDC +:10AEB0000BFE3AD2A7794CD901EF9313B9BD950097 +:10AEC0006B503DC691E5C652C44F8AC214ECC765AB +:10AED000F7D789F0DDA5B2FC7A37AD6AD4DE6EE72C +:10AEE00071E70CD64865B0A3A9FE05830F5DCC4F72 +:10AEF000F0386A99D8C0E151902F52E49672ECBFB5 +:10AF0000B7CE18B66772472EBEBF9A7F163DEF3692 +:10AF1000E1F27CB46A189FA7E660F720DF85E43889 +:10AF2000DB93C5F97F3BD967B706868AC8FF71C333 +:10AF300038DFDD9ABB2413D7B5E995828AFAB9EEDA +:10AF4000BDE71E4C447BD223308C3754A85CEEDA2C +:10AF500072EECA40BD7B6CA28DA19D79F46BEF5659 +:10AF60009CE7C911B10CE34BAB86F1F967D7829C22 +:10AF7000601CAD96CB89D683DDEE0DE3AF687843D8 +:10AF8000F4FC4AA0F5A62596FD3B8335AFD7B0CD9E +:10AF9000D352405FB7F4629FA0FE9EF5AB1DA4CFD5 +:10AFA0005B602D413B461BB6FF09F4E75A4436A7C8 +:10AFB00085E67B97A53A4C3F0C37FA6FB132EEDF4E +:10AFC000B1FD4FB40E0AC78BA9174CBC84F4DB83C8 +:10AFD000A8DFA6CCE17A61FAD44D5C2FD47A323A5C +:10AFE0008C27F2D7310FE001DAD719F33EF2B5F72B +:10AFF0003DC423EA0BC487A92FE60D53E83BC28763 +:10B0000071A53299C711C02F24FB319A8EFA30EE08 +:10B01000274D91030F26197A77153C4B67545B70C7 +:10B020005CD0572AE27FBACF437055A9A51C3EEFEA +:10B030002682CF84E7A4AB712BC189FA8BEC0F4E2B +:10B04000972F2D3AF55B65F65BC9FBADACE5FD5678 +:10B050007A27923EBF05F43EE9F5ECEA887E8F5BE5 +:10B0600082E9865E5FB5344CAF47CFEB4B4BE38351 +:10B07000A85F6F09640AE857944E8671D0BE9EEAB5 +:10B08000F620DEA60DE3FA6C5CED7619E1BF71EAFD +:10B09000123E8F1975C46F27DC41D2E7E6B8A7BE10 +:10B0A000F6913ECD9E6ACEA3B101E7310DE781FD59 +:10B0B000D7723EBED1C7E77163F6129AC7ADBE3AEA +:10B0C000EABF42DD4EFDC2732BD939E3381FDF835F +:10B0D000FD03BEDFFABB9EE10D5B3FAE46A7FB0C56 +:10B0E000F8A7C87EC2E78D263E73393EA756723850 +:10B0F000A6CED84EF39A5E59C7F1A996723E524B2E +:10B100006F47788FDFC2F908D6E1B2F075B2CEE0B2 +:10B110009BE3C6BC4DBA4D37E73B87E3B30AF90161 +:10B12000DA5721DDA0DE2D6A681D4BC7717E97D3EB +:10B13000988EEBD849930F4CF934D6B1B6953A3B7B +:10B1400063A1B806C58BCB9D22D9AB65155A436B5D +:10B1500022899A1FEDABEEFE6DA45F6AC67526DBF1 +:10B16000FDFBE3C8EED357BD8F7800BBDCF053C4C2 +:10B17000B53DBBFC5256B124C2BFDE34E93F9CC38F +:10B18000903F9C16DAD7D92C341E247BBCBF4D458A +:10B19000FB76F3A478F27B8EA39F2B74AD73A29DF4 +:10B1A000FB9D65E0DF4A1AF9A50D867DCA0CBFB488 +:10B1B00001F9B402FD5963FF27DC8F65861F3B064A +:10B1C000FCD8F5D7E0C7FE6218F763C783DF9E801F +:10B1D0007EE1A4479CE86F1C96D82F11CFA175F88B +:10B1E0007FBB3FABBA30CEFF3BC67E89F87DABD28A +:10B1F000F0672778C84F8A8E8780FFF9EAB0A42EBF +:10B20000BF93FEB0FE3837F103F86747F0BB937980 +:10B2100023E8D62D0E12ED0F44F34D83A253DCC06C +:10B2200088832423574A087FAB80F88DDEB7B81295 +:10B230009F292CF02FC76764D32FA13F41C17DC147 +:10B2400074A3BDE0BB8BFCA12D254C9170DF7BB5B9 +:10B250009FE0FB87E43B376C38754BF6430AC66BBF +:10B260008025EA8BB4796EE9CAF0160FD13B117FC5 +:10B270006324A7D60AFD5E382A119F8FD79FA84066 +:10B280003D3781355624203FA882D6AA76F151BF9A +:10B29000668033CC6FEE1FB433D9DE551EF8BC1276 +:10B2A000511EDC9212517FE81E35E27B1E38DDE133 +:10B2B000DF871DD122CAC3DB8B22EA5F77428F284A +:10B2C0008FE8A88CA85FF29137A23C80F9449CFCDF +:10B2D000A8CEA911ED2E305FDB5698F780113625E8 +:10B2E00040F15AFDAD5C90C3C106F6AFFFCA17D15D +:10B2F000CFE08E6A11F174D8E7F433F0134BD9DC48 +:10B3000088FED82EF903A4A71FFE417A0E6050369E +:10B31000BFA3FE572D5D65F87FDFA8EFCBDF8D392A +:10B3200074306CBC9C025722D20D685E80F1886E2E +:10B330007462168AAB4C7F9E058302CE87EAB20107 +:10B340004FB020FA07D1F3F972A5FDD04168C2A42D +:10B3500077293EFA05F84B3DA09E2D25929E316A35 +:10B36000243D1DB991F4746991F48C2F8AA4A75BD4 +:10B370008FA4678FCA487A267923E9993C35929E33 +:10B38000A9BE487AA6CD89A467863F928E99CB2321 +:10B39000E9E409CC89F8DE67AD3F921F3BAADBB632 +:10B3A0002662FCDFA6201D731A9747B437E9188080 +:10B3B0007F2E47C7AA39D174DCF05729EEEAF4BCD6 +:10B3C00013E9E9E8A22793667CEBBE9E492FD07370 +:10B3D000B30A92304EBAE876D27F467C06FFC2E3CB +:10B3E000D4C7A76DA6F5E9D5FE3C4E5DCE7419E92C +:10B3F0007B20F5F68A1E2AAF1FB5CED03A5469AE2F +:10B4000043465C0AD36E505E6EEA16B7562D589EC0 +:10B41000C43A7BCB7D307FA17535DAE71753DFFC6B +:10B42000A34079169BCC3C8B0710DEF1AC9DCA87FC +:10B430001D3F97313EEF647E823F5C3FCA85DF410E +:10B440003F8E575ABF939E5633BAF41E29D500E952 +:10B450003DF083C5D3E437707F2F2C2F81FCE4634C +:10B46000A53ED7705C17A7490CD7AD68BA6C29E028 +:10B470007ECAB1FDDCEFB9927FBCA380DBCD57F370 +:10B480008FFFD5FC8363E81F0F05B635E0BABA7F9E +:10B490003C31A337C611C671FFF8E869F01FE0FD23 +:10B4A0005BB7F4A367088E4ABE7F9B7DC415C0B806 +:10B4B000D717736CB4EED6BD771FD9A165AF815D88 +:10B4C00044741348EF947D240629DE2FCFA17570B4 +:10B4D0008C41E703C67E5EF9F2722FE6018C797724 +:10B4E00033AD538AC8E95C9928F8EC981754AE66D6 +:10B4F000E07AE39598FF69B27B02B1982793C2EC9A +:10B50000BF447A7F6921D9619D6E9E0F567E7F2947 +:10B51000F517DA7F58C8E38E65CEED1918672C9FB2 +:10B52000631310B432E7C4F770FF19191E75DDA953 +:10B53000ED9C5EA796A841A4D7EE7FBE4DF074DEC9 +:10B54000C354DC9F3E95C7F9E8942B8BBE97A7BCEC +:10B55000DD5C3B0CFDDC0E8A03074680BFCEF0FBB2 +:10B56000AF5AD11F3FF59840D09E82B1D1CE3EB5A3 +:10B57000A91FB52B91449EBFB6D1C5F3D7640EE782 +:10B58000CB8DA984C7924CB50EFBEB7C80D1FE2DF0 +:10B590009303D93FC4EF530768EB19B6AF2B780B71 +:10B5A000BFCF8DE5DF5960D02FA1FCB23785BE47F4 +:10B5B000DB172FCB4A00E523E08FD3300EFAD6B845 +:10B5C000E71C03A0FEE302D88186BE08DFFF79D91D +:10B5D000B007991C7484FBC1577B7F0AFCA08430A0 +:10B5E0003E3935F7068ADF1FF5C87EB4772B26DB98 +:10B5F00002A80F2B944D32EE47570DF5B1E1C097DD +:10B600004D39DB97A01F0B02497478325B08DA7062 +:10B61000DFD688F787F442945EDBE4F8F916D4535A +:10B62000B7A6DB68DD1B9BF6C021C4E3816A1BF96A +:10B63000CBD17AADCCAE93BE41BB19F7B7C618FBE0 +:10B640004695AC91F4D14DAC959EDDF7E5BE5DBF5E +:10B65000815E4BC179DC1BBB9DDAAF722C1A89FA73 +:10B660001BF473EA708C4B9DD365C47F990A788074 +:10B67000F18EBA0344EF0A9740FC001636F92FE723 +:10B6800005E65F7F19FFA52DE6CBDED85F34FEBA55 +:10B69000F979837CFD8787EDDB8F4B08C628B4BF23 +:10B6A0007A793B6F93E329DA47B8F10AEBC6EF7278 +:10B6B0009EE3EBC6842BE153AB4842F9645E737F93 +:10B6C00093F6E3CC75E36AF8FC967DCE329CC738DE +:10B6D00016A476871DA32D080FE0B37CF87F855D47 +:10B6E000CFBAED7746D8F9DF759FD3C4E7584CE859 +:10B6F000837E4E2A02D7774CBF39B510F98BFF9D58 +:10B700005C1B9031FE58912AD15E0943BB0FE0D2F9 +:10B71000E01F84AB8C79E35BA1DD042DD28E287B06 +:10B72000B73FCDF70D41D48491886F6E87D077D421 +:10B730006B8CCF3F45E2F32F8BFA1E8D8F68FB0396 +:10B74000F77B916ED7BA7EDE33DCB05754D6EF9BD1 +:10B750003EE897EF616730FFD1B05BCAA2F20EA25C +:10B76000ED96B5C379BC2B60D11F403AFFC5881355 +:10B770002A4C9351AF888E91943762D68BEE279ADC +:10B780009EC017AB872775A70B8C45F1BC4349B703 +:10B79000D66E82F9F5DB36201FBF1DEA79DBDD6F3F +:10B7A00062F9A9BEE48F3E329CAF8F7DD3EEFAC919 +:10B7B00026285788C22CCAEF2A3839DD83794A31C6 +:10B7C000BC9F1436A76922E27950567E3DD6B3322B +:10B7D000AA77D3D085C36AC2E4719B01F74DA0CF8D +:10B7E000705E19AC85E2B5B1CB152140F158264BFE +:10B7F000F9F04C09CA0AF46F95991C9B00CF944646 +:10B80000A782F21DCBFB7D2DEF7FE463BF1559BCF2 +:10B810003C50739CEE83F00802C133305768ED0F43 +:10B82000E58A04FE7D7CFE0BBD106F156566FD0983 +:10B830001F63FD0AC32E88D33B0F7C03F39EE2DB1C +:10B84000F482007CF192AFD4D21FF0BD67B89DC7DF +:10B8500087BC7CBFF7E6A23AC15E80F5F48270FB3C +:10B86000E2A5E116C2D3E4225E6FB2B7DA521B360C +:10B87000EF297A27C3B8D194A9A729EF7493E30ECF +:10B88000B2EB2647E99789F81F20EFC76EB981F41C +:10B89000F59BB747EA172FFE8787F4CBC12411F732 +:10B8A0001D795E0470C8218C974C31F4CB54D64876 +:10B8B000EFA7B3167ACE60ED3C7FE27448AF642602 +:10B8C0006645E895D7914F26332FD56B77FC80F4EA +:10B8D0008A13F80EF328CAED4ED2AF97E1AFB786C0 +:10B8E0000FFF563D4AF39C7E853C9157675DD7809C +:10B8F000F398EE6C750E83EFBF775934DC8FEAAEA8 +:10B900004F43EB13D9DFDDD7A776D287D1719EAA3B +:10B91000ABE78D9C1B4E76B7993712A4F9C2BC3E9B +:10B92000C579C1FCAFAA4FC3EDF1CBD9DFDFAE3F84 +:10B93000DA05E4C72BD9DDECEA79C772E135E41DFD +:10B94000D75EC7883FCDE7B981FA4DC56179488E8A +:10B9500082CED51B0B70111A22A23DB63586AD8D55 +:10B9600001393C38B0747E09B45F6CE44DDD5AA2F5 +:10B97000527F8E76A66F87F12C7280F2F82D76C5F5 +:10B980005DE7C6F307ED64DF75263105ED2FF3BCE7 +:10B99000C056170B607FB79670F9BFB584C745A135 +:10B9A0003DEDBF5872A17D1ED0F936BE4E5C5CC71E +:10B9B000F3DA2FBA058A175E9CE6247BE0CC7ADBAB +:10B9C0001C94AF1A2B97DB44438F30B69AFAEB578F +:10B9D000C8E37A0156964A7BFBC2FA147AE22E003B +:10B9E000BCAF71B33BD1CEBFE856EFA07ED7250BDD +:10B9F000D86F6D539F29386EED86640FF374D5CFE1 +:10BA00002C54793B8FFED7E568474F746A4F135922 +:10BA10007C79987F6993B26FB64BB8BEAD68D90395 +:10BA2000DF17663815B4EF2B32DF7DBC08CA1FEF75 +:10BA3000B2D0FECBDC1D93E25BB199ACA75C6E9FEC +:10BA4000686E30725D9BFF7C6479614B647971D460 +:10BA50003A16BD6E8D2D0CAD431AAE431FE23A442B +:10BA6000710CBE0ED5324E4FE0776B787E9AB90ED0 +:10BA7000052C65130A019FF30CBADB6CFE8FB6032D +:10BA8000BE6C0FF5CFAF23F9ECDC8FF2DCF3514F36 +:10BA90003EE677D80AF93A9156E8BD05F9D19639CC +:10BAA0007208AD7799E3893F2E3E114371F48B31D3 +:10BAB000DCEFB9F88A40F196A6DE97563F01FD34D7 +:10BAC00015DB14EE11E8370F07FD30C790A744AB24 +:10BAD0003E17EB9F9D18ABF03822B38B444FDD8EA1 +:10BAE00074AD6DAC5B7D3F7CCF84051EEDC705ACAE +:10BAF0003D0E85684B21E753268DEF5F07FD2F9E96 +:10BB0000144BB2352FD03216D1287F2D7B912FF1D7 +:10BB1000B8069E8711EDBA520AF516EE716326201B +:10BB20005B52C8F705D6BCB6C48B0DD32D9C0FACA9 +:10BB3000BB2606503CAFFFBA82A19D79D7F292474F +:10BB4000D19F4AB476F62845FE582711DFDF75FFEE +:10BB5000087A2F5455B65F8FF0AF73507CFFC01337 +:10BB6000369AFF59983F96CF6EE5F8B82BDD19B499 +:10BB70000BDDE7DF20B41AE76FDAE3906FFEBCF568 +:10BB8000BE38C4EB9F8DFC6EA6F8E348DE557F5CA3 +:10BB900055185F7DB045AA4439F960EDB2374620AB +:10BBA0007EABA617E07A7EBD3B3B4E75767D37FDBA +:10BBB0002B39A1E859D42FD77F2D917CC8B02EEE18 +:10BBC00084EF07D7DF3417E5E4036FAC1BE155D7EB +:10BBD0003E3396F6C5AB2A89AE1FAC8BA179795856 +:10BBE000CB6A8C7F2E5EBB667533D47F03EC38CC7A +:10BBF0000BF9A02A96E26F1FEC7311753F5072E3A8 +:10BC0000B0FD074CAEBC9C1D94572811DE4B337918 +:10BC1000DCEE038CDBA9285F836EC67577E13A8979 +:10BC2000F6590E569D7ABC28B14BBE84AAE59DFB01 +:10BC3000B1FE46F80EF5CF04B438B4EF8F6CF87C43 +:10BC400035CAED99229B827944737F2C9D46FFE98A +:10BC50005F9537FC6B05BD5F63D0295AFE6A36F4E9 +:10BC6000B1E27ACFD6F278E44B201FDF88FF293982 +:10BC7000FC4DB81CB2F42AE257B39E297721FBCFC2 +:10BC8000D0F766FEA85D63FA0E7826DB982E80FE5C +:10BC90003D532853FD338556AA27FF7DE9F3AF03B3 +:10BCA000FC730A7DAFA3DC66323D0FF94DED54CA3B +:10BCB000E219CF93A5F52EDB4A7182C72D5E91F86C +:10BCC00051F6FDEA75D4FB6BE70E43F9EF30FA4B02 +:10BCD0002BF41D47786B57F8FEBA9F21DF15931E92 +:10BCE000A8FD6AB288F9B7CE269EAFEAD4BC65310A +:10BCF000A8F713BDC497A61ECF0178B75FC67F1300 +:10BD0000AFE3F6554EA297FAA92B52A80CE04DC30B +:10BD1000F5EAA979224338AEBF94298A00D7C32017 +:10BD20008A681FD88BAA4489DB1D9D3950F65CFABE +:10BD3000A6C772C083B34834D63D6FDB3750DF19D6 +:10BD400088FF9B00702F4D91543C7FE12C4AE0ED21 +:10BD5000743BB5CBC94D6843FB50698BFF5BFCA8B6 +:10BD600030B8985D75DA317E2D125F789A78D9E413 +:10BD7000830B8D02C9E9524C6DC8A77C62A223AE29 +:10BD8000BBB87E2E4DB1D278667F7F1F5A7A09F1FB +:10BD9000C7743D3BB190F04F7F878BB8FE017F8425 +:10BDA000515C42642D786ECF31A8C3827AC884BBBF +:10BDB000D61E2C8F51BBE3AFD6807309C2092C531A +:10BDC000AC4139F7CA70BE6FAC7B667B134E4781BE +:10BDD000AFE330D93FF12C87F2047D41D4AF5B65EE +:10BDE000979187D8BE0ECB69B912EDBB49F6477F54 +:10BDF000847A702BF3A9946791C8EDFC2F636EDEF3 +:10BE00008EF9E26A1DF0636FA82F2DA13CF1B4FA00 +:10BE10006405F3C7EB2D463E39181618970994E9C7 +:10BE2000DBF17BC06A57EA35CA9725BDB5FC5D17C3 +:10BE3000E9D12F452F194F05D76511DCA98CEFF3F8 +:10BE4000A42BDE9DB3812E5A1FBEEE47E365E0753D +:10BE50005C7E1EC4B9C0532BE7F5D6081AC10B107F +:10BE60008A752310BE2A1A2F4D522F3CEAC6710440 +:10BE7000C3BE927D21BD00E36FB5809D938072DECD +:10BE8000F823CC8BBF52FC7296314E6E9310CC8946 +:10BE9000EB7A3FD280E7ACA28FBA0EFA5F2EEB149A +:10BEA0007765AF5948FE96E56853512F2E137A6B8C +:10BEB00001C213D7DF814D31FCBBA025E3D9C07A85 +:10BEC000E39CD0B218285F66DEE6B366ADC47C6141 +:10BED000FC57F290CD1FA4B8AEFA14EACDDAF38382 +:10BEE000F2316E16E223C3EE8AEEE784523AE93A63 +:10BEF000803BC5A03760F2C4CFA1FD93817815EDDA +:10BF0000E66613CEB9B194C7689E9BAACF49085282 +:10BF10007EB8716ECAD4A73DEBD5C33E5C4F4BEDE6 +:10BF20001AC535D78ED143FA18ED6A7B079D0F7C71 +:10BF3000BC982908DFC6EBDCFCFC29D39AA53E5D42 +:10BF4000F2B3D8901F619F40E74ECB0CF8621AEF16 +:10BF5000EA40F81C751CBE3613BE7BEC067C479E7F +:10BF600040F8ACB18A22B9A90BDD1EA6EF5983BAFD +:10BF70001AF91C1D31E4FB9A41B5D41F83F9C68F11 +:10BF8000BC0CBC2C727E261C8E2780CF241CBFA527 +:10BF9000F159E4EFC1B242FBCA809F141C7F513AB1 +:10BFA000C70F6BF7E03A5F9362E7E743987AB80C04 +:10BFB000FD0011F4DC65F0F378B1FE20F24F5B1E5A +:10BFC0008F33B54D1B908EEBFE78FBAB27303E3D9B +:10BFD000DECE5AC89FD3BE3D1F6091117F4EB43252 +:10BFE0008A67774EB4525C7651288ECCF32B02AF21 +:10BFF0005B28BFA269A29E8AFBD54D137B8A3C4E6B +:10C00000DC47443A75BE2EF178AE4117130F4D79D7 +:10C010004A00E7D924A82D8D1AAEE376A2C3E2B573 +:10C020001692EBF27D13FF1848E474443F79F11E39 +:10C030004F1DF6B76805030D86F8E071E600E3F4DE +:10C040007B3CDE4E790A4DEB789CB9691C23AD74BC +:10C050005EE878EAFBC47F4EDA576FF2E8A9188FE2 +:10C060002D91C43BC9FF92D59E68CF9764B25019F9 +:10C07000EDA91249E06506DFC3D6E71A0BF3A21C4F +:10C08000D46C17033943C3DE0BF07E5057FB6B7D36 +:10C09000DFE46E64F723BCEB3CE4E72C37D6FBCF40 +:10C0A000652DFEDBE4B7F62B89E961F25B2BF3F833 +:10C0B000D223715AE1C4B0769E22BEAF32D3586704 +:10C0C000631A9F7BE7E7305E595DA6677D62177F45 +:10C0D0007F60C8CB99EBB8FDDB13F934ACFFC72DFB +:10C0E0005CAF686DCFA785E769D57C64A5F344355F +:10C0F000F61DEF7C173930FB67CD6A22DAB757EFB0 +:10C10000DFD26A8BEBDE6FE510AEBFF75A39FD6206 +:10C110001AFB7D88705C697E89063E4C3934C7699C +:10C12000B384CEB5655787E9B91A7B0CC95D8D3DDF +:10C13000E743C4DB779573737E57EFFFF2F3DB566B +:10C14000AC7F83FA15FCA1EDA897DA626254DC8714 +:10C15000DB1F73835176917F25C4C6F07DA55807F8 +:10C16000C55905C7E02D8D4867470CD9C989092AEB +:10C170009DB76C8BE99F4DF945B1E3AAB17D59ACF0 +:10C180008DECF8FD31FD3EC4F6D03FE555B5C50C4C +:10C190002EC07A5DED7879F31095F057E170911E1D +:10C1A0002F73707FBD2C4D2D403F60A64DFB23E1CA +:10C1B000A93E5EDD01CF336E3E6F73BEBD8A387F10 +:10C1C0006516F17574A603F87250F77A26DF7A8A3D +:10C1D0008CFDC321BA5A04CFBB8C38866B90D7E351 +:10C1E00004098FD91DF34E2CF22BEE1F1513DA0222 +:10C1F000B84FED405E2C36E80FFF7A4C948C73629A +:10C20000EEAD1523C3CA46FDAEF677DE5E914EF65F +:10C2100073E83BBA6760579B651DEDAC35AEAEEF7A +:10C2200032F8A3F6B5026F1FC8BD7D0C98367F1299 +:10C230008CF1037DB6E0B9B4476258C478E1F0C927 +:10C2400051FDA3CBE954CDFAF26DD8DF63F966B99D +:10C25000E6473AC0F78825B23F6219A33D16CCF1F4 +:10C260009E7FF9D2960DE95DF63DD8FB37211E4D34 +:10C270003B7FCDA9F18D43612C8732898C4ECB5702 +:10C280009319DAD996441ECFC4331119A887D3B3B2 +:10C29000685F15F4189DE7B7A5AAE4FFDF62D02711 +:10C2A000DDC2ED724B62692BFAC916A63EFBBA8756 +:10C2B000FC826945489FCCF187910FBBFC0299E253 +:10C2C0003B39E05F60DCD5DE047A1071922E067394 +:10C2D000A04BD4F1FCFB941D1807DD59E4AB290AEF +:10C2E0008B7BE734E956B47FCF1872D534374B0CCB +:10C2F000DF8FBDCFE09F9C5C6EEFAFCFAD22BF4321 +:10C3000076570C47BFC3AC97A5648B38EFAC74C3AA +:10C310002F003F03E301594D3ECC546559B26F1ACB +:10C32000CE376BEA6C2BC62DEE2BE27E6AC1DA604B +:10C330000CFAFD6C8EC872A0BF3B0D3BDDA2D4F29F +:10C34000B8D854BB13E3494F7A9F8DC1FE73729FD7 +:10C350005E9B8572A1C81AD6CF69E2FE957CFFF478 +:10C3600060783C79BD2257221C85926F09D9A13D86 +:10C370008A75B4EFD2A4373DDBD10EED912FD52BCA +:10C38000B44F19212FE6D352CCE5AA41F006BE578F +:10C3900040F9D22C3CFF3153E37ED8C345DC6F53C8 +:10C3A000034A19AEEF23FFE625BC3C5CC4FDC4DFA5 +:10C3B000C81D0EF4A37398BEA406E7E975AA3C2F26 +:10C3C000AD85D6D7C495AA86F4B727763C3414BF7A +:10C3D0006BA246D73D187185F3BF4E7E1AE30AEA79 +:10C3E00008DF8F906E8552C7A3DFC3F93C24F3FCAE +:10C3F0003699AFCBBD2739C9CEB424B6139ED7A585 +:10C4000030B2BB46AFFBD081E69C3DD1CBD07E7134 +:10C410000099D05E703A053ADF52A06915E49FFAA0 +:10C420009906BE23F8950AD3E1FB8DF637B9DD14E2 +:10C43000E547E580989CB55388BDE11B5C7734EEF9 +:10C440004F8D65DC9F3A726932C59945BB8FE21EFC +:10C4500015536319F25DC8FF5ADD7148C471DB835F +:10C46000F202E29376867E624D9340FABE26B7C60C +:10C470008A83CD6E12888F6A0DBE63B2D61BEDB76C +:10C480005F17390CBFA181C76319C713DB6023FB9A +:10C49000BDA6B194E206269DC0D3E5F59AB81C5A14 +:10C4A00057F1F5ADC688DB0222E9FBC122D31F5943 +:10C4B00065F8C58DFC698C1B1BB2CB23EDD8F51636 +:10C4C0006E77045E91C8EEFD6CCE853894FBD8F390 +:10C4D000B1A2104FEBB01AB14EE572FBB3669F7478 +:10C4E000D9758A3507C90EFE0CEDFEC4887123D6B6 +:10C4F000C5F596CE879F2DA071292FC01CE7492333 +:10C50000AE75B571CE18F36D9B76310EF3819FDC5D +:10C51000F74C0CE2EDF189602993FDA6519CE93EB0 +:10C52000BBF7A322C287F6705FF4471E96284EF031 +:10C53000B8D0AE4B5C2EC86EBD23BB6AC921803714 +:10C54000A160403EC2972233BB047EDC3F8C71E287 +:10C55000DBB8BFF684B02915E9F544AA2AE0798250 +:10C56000824A2E470995BAB410ED2E77C7982CB49D +:10C5700077C7318671E264877F3BCA49F29DB9F97A +:10C5800078FE898D50A9BFD8618DFB292F6389AAB8 +:10C590003C0DB299B22AE0593A08C7E1E71B3A27A5 +:10C5A000327A9F74EB8A3AACF7502F9680E7C952E3 +:10C5B000589D80F556270924F7ABABD9D45F62BCF0 +:10C5C0000ECFFD43BDF4A98A80FEAA6C9C5F60AAD1 +:10C5D000E2FE432A8963433CAC1D8FC5F17924896F +:10C5E000D29D681FC27A42E504D0074F03FCEE11CA +:10C5F0006EE29B641BAB1412F87BE4338C5B603CF3 +:10C6000030B9DC9F87E327F7E1CFF5867FF1240B74 +:10C6100036EF407CE65A899E7B3F3DDC80FAE2B3F0 +:10C620003CAB86F90D3DA71FA17B59CE0B7C9F3FEC +:10C63000DAEFB86F5079DA0818F7B1BA89D36661C2 +:10C640003F83B99DCE023BB549B49F11E997C88697 +:10C65000DD78E11CE7D306C36E3C72A44F3CE64B89 +:10C66000538C1EE6DD7F4402E1FB0253E3D12E39F9 +:10C67000B2BF2F7D37CB9FBFFBAA82F21ECA3B7190 +:10C68000837F2390FE0A601CC9B93395FC09F00B27 +:10C69000E83E9DCE176DF4FDFCCAF6E60A5474B26E +:10C6A0005717A85E8E917F22101D3A5F31F257987E +:10C6B0004EF695F39564CA2F5D2C76FC1C4D0EA7A3 +:10C6C00085DBFD4EF41FE2BBE4CB2970BF82C9AD10 +:10C6D0000AEEF79E37E3BCB29E3229CC6F6830F485 +:10C6E000FE026B6B5FF463CC7666B9978DDBF9580D +:10C6F00046FF61AF819F05B1BCDC19EFBB09F1BDFD +:10C70000DBCAE6503F71F0DE1986873CD9C083F65C +:10C7100030F2B35350DAD1CF043CD0BA6FE6E780A1 +:10C72000BF46EBF7D93C99F2B94BA4BCDDA84F3A10 +:10C730005325E569C550BA38FF756EC263689EA17E +:10C74000F9E75B67219FEAB97E47AF2BE3C17C3FE6 +:10C7500033BF763CDE1F3073DE8A9B595CF7752F42 +:10C76000546FADCD308658C4BD4F72943F63F20D07 +:10C77000E8CB88F8EBB211DC6E0846C571E606D846 +:10C780007EF2BF7F6CC3CB22BAF817738BB9DEA5DC +:10C790007BB2E6BE1BC3EF5788AA7731A694EED7CB +:10C7A000BAF7871329AE3F9BF9E93907DAF1383F29 +:10C7B000DFDF50D7CA8437F57921A8723EB28B7477 +:10C7C000CE5211F1FD7C583E9EC4252700DA0A6D39 +:10C7D00061015625F8AEE229FF6498E73A99FCEA30 +:10C7E000ED271C4101EAAD4954ADC8E76B1A441E60 +:10C7F000E7D820047378BF29B83E041A441DFBD93A +:10C800003C82DB35BF1861A5F9800806091EE309E3 +:10C81000F8E2FEB0315E1D135BF1290AFCB906EDAA +:10C8200096CBC487CCFE1A2C7E3BDA559D1922ED9F +:10C83000935CB4EA53691F2EA12F9DCF6B70F9D77B +:10C8400056F2EF24C317635A2BE97B9EC80D701470 +:10C850006BB4C34EC6D0F9DD8D23B81F114DEF590F +:10C860008D9165BC472CBC8CF78885976732DF2F8C +:10C870005224DC07887CBF7104DFA7AC611AD1A702 +:10C88000C1A2BEE541FE5F273384BF2E9DE34DCCA0 +:10C89000E0CF2C77C5545ACFDD569643F072F8B3EB +:10C8A000F2120484B7C1CDF9ED5F85371ACE9746F1 +:10C8B000F4E5F69E9BCB5BC33A337F8ADB97337FED +:10C8C0006A7B06E54F35F8FF13FC867CB08E9F2F00 +:10C8D0007F728E48FAED830D396437052D9DB96856 +:10C8E000D70436BAE81CF519417B16F36F04A6F697 +:10C8F000447E3966E855F1915185A84F5F8B92933C +:10C900001A4D785302FE2F9FB4A110FB2DEEC134B7 +:10C910001BC0F6B235E8C0AB3CA2E7CFF00602D3AD +:10C920002E019266AE50C7A25E5D08EF7BA01E0985 +:10C93000AF4F7EB6B54BAE806EDF0CF0FE6904C91A +:10C940005F7018C68766FFC5A9E17C1F13CFEC7C1A +:10C9500015E9B53386F20117ADE87C16F30E8E0E9D +:10C96000F09DC3FAE7EE3F355650BBF0F4D92BFDEE +:10C9700088AF0A1AC2E416FFB521528ED9DA047EB6 +:10C980008F5E53E4FB395BA2DAB17FDAC2E134EDAA +:10C99000B2C7ADBEFE68573FE92D2C44781EB734B0 +:10C9A00056A25EA81AEAFBE708C0EB8763BC87457E +:10C9B0002E9F7D519FFCE6523DD901815CA6EC7013 +:10C9C000A35DEEEB83F3FCCD89140DE9BCCDB04F34 +:10C9D0004DFC9B76BB692F46CB63ACE11FA414EBE7 +:10C9E0000FA25D7EFDA5DFEA48EFFA7DFCBCBEDD4F +:10C9F000D9D69A867A19CAB8CC2D523B0EE33E8915 +:10CA0000D2B6F8F3F80CB0A39DA29E16E6A72D6A45 +:10CA1000E2DF5900BE8FEADA2FB5597C01F47FE4DA +:10CA20007D7CDF14C6AB437B0CFD2BD4FB96399485 +:10CA3000D4C12C867F65996A253D509068DC6B6275 +:10CA4000DCCF97D3E40BF9533C1EEA15799E43E4FF +:10CA50007D6DD9C5FA18CC6BF813BE48A57B11FBC8 +:10CA600062D967D8A15FA0BD3094B10EC35F3C729C +:10CA70007412D9035F302FD903438AB93E39B27F8C +:10CA80004A3CDA95E6FBB392EF5EA50FDE97C8EF5E +:10CA9000499CCB82F4ECBA4FD147F72C2E18CFEF3C +:10CAA00033C032E6D32EF45A293E8CF2DC1A25CF5D +:10CAB000E165BCC730FC3E860572FB6AB2E7F0BE9A +:10CAC000BF227EAF6178FD45AC93F411DE6F18D1C3 +:10CAD0008FC15FC9D2D23C3FE2EF3BEE237DD7FA54 +:10CAE0001FAB8D3DD19E31E3B66DC6BEF658C9A9C8 +:10CAF0001BFBB5FC7EC26EFBFA9DABF1BEB5B2620C +:10CB00009BB28AEF1BD17EEEA7BB2C649F3369C317 +:10CB10006A8C5B2D4E93E83C58F47EED3CB6732C4A +:10CB2000AA852FD86B56949F7F355F6241B1716E95 +:10CB300044659EFF64BEC432E433739F365ADEAC54 +:10CB4000855CDE0E383FEF119E9F5A362840719665 +:10CB5000C2B2CBCB699D21A70E238FC62E07587872 +:10CB60003CF84AEDD61573FBE580B5F3440BEA3F7C +:10CB7000E806F75152307A5140F71FBAF1FCF2CE75 +:10CB800022EF43C549186731E328E07FA3DE4FE574 +:10CB9000E7ABED6A4B9E8A72B7C0A991DC3570BFD6 +:10CBA0009FFD1BCFFBB8C188FB84F8248A7F048DCE +:10CBB000DFF789710BEC370D6495CE618B2D3BB19E +:10CBC0002CE0396D909F618378FB2D31ED1C3E3C4C +:10CBD0003B3982EAE5D17A9A4E39E4D40FAE0B693B +:10CBE000F7D935F4A7ACB12D4BF0BB358129D86FFF +:10CBF000A5D98F05DA41FF623AEF27A3CCE7C372CC +:10CC0000462F680720B7147B7F524CFEB23E84F457 +:10CC10008801F722833FC3F83E407A308AEF316EB5 +:10CC200087FA9735DAC88E2256A3722AF9D17FC4C3 +:10CC3000328C3B64A8770F8D63C443663E9241F10A +:10CC400010B6BC07E9A7352EEE7F6D89694D0DA79B +:10CC50004B97FF1F20FA1796B5939DDDF900D05131 +:10CC6000088BE3187C71C8E013F37D9F624E174B6D +:10CC7000897E18F9B2A0A0F529CCEF5A044633E218 +:10CC80006F51CB7DCFBF9E48F3F5533997DBFDCC79 +:10CC9000EB247D3EA7D0D75E4CEB69C76A9C7F66CC +:10CCA000222B44FF667D6E159BE9A478DE51FC0EB5 +:10CCB000EBF4B3D80FC8871FD78F9E992387A0FFA7 +:10CCC00057F84DF9EA4A0EAF82765CA28DC7774DD0 +:10CCD000F83E37F4ACF9EC34E03F075AAED483E3C6 +:10CCE000E9D384B0B89A436D273F6BD12E6ED460E0 +:10CCF0009A08C1FBFD74C2F7A25DA579E8BFB3969F +:10CD0000983CAC5FF88E93D6F373F7F7A27392EA70 +:10CD100008DFC708AFAB80DFF7766EE7B8BCCBE9BA +:10CD2000BB6470FA711EC9126B7954E9E2839E5696 +:10CD3000589FD03E37E23FEF14AB3C7E6DAC539929 +:10CD40002BBC6C96B3ABEC4CE47481F7228E9352FF +:10CD50003CE61DE483778AF9FD5DE67EBDC70E9C47 +:10CD60007599732E1EC6F7E7171BFBF52C10965707 +:10CD700090D57DBFDE84C76C1FDAAFFF4A26BECBDD +:10CD800052787CD5B5D6E0D3158CF87664677B797C +:10CD90003CCC37BBA97524C6FD303D8B5FFAD2F180 +:10CDA000D0508CEFF59047A29C3FB53CBF0DE3837C +:10CDB000F2BAF651887AB55129C3D0B29947457F66 +:10CDC0008918F772F37B75647F2EFA6D5A09E7C3F1 +:10CDD00039857A32E611961DE3E7EF2E6EE4FB13F8 +:10CDE0004DBD1764BAA1DDCC776C944479257F2EB4 +:10CDF000C0DA288F2F0BF36A9C380F1E5F63D9C0EF +:10CE00001018DFD8F84E00D71B79DDD10C04655C13 +:10CE100089D3C8036C4B41BFC9B5411211FE596B90 +:10CE20004123A92457A9989F346B6D6219B69BD5ED +:10CE3000C8EF7D9AD55C2A627C181A521C33A74928 +:10CE400011C3CF9BE946FEE26F2F4994BF24DA79E4 +:10CE50005C7C617AC27689C70D484E176626D2FD82 +:10CE600081C5255C0F5B9A4BF554B5CB2E32FB5B2D +:10CE7000B8AB9AE76D5E41FFFC56E6FAE7B7C0D95A +:10CE8000B83F6AF25F8385E33BF0B548FC9F69AC2D +:10CE90004F671EFE472AF175280E18A4A76C51573C +:10CEA000A7207EEA3A46834661B58D6E71D120ECAB +:10CEB000475B4476E54607433F2073439F36CC5B90 +:10CEC000CC5CAB3041C5FE1666627E4DE0948DEEC3 +:10CED0004392373A088FF2261DB988C9EE9E843FE7 +:10CEE000F9312843FDB4120BE1C75DC2E16F103A7E +:10CEF0008DF3027A1EDAB19612DF8C92E1C6BE077C +:10CF0000E279792CE91B97CCED6FD7F2533FAB83D5 +:10CF1000F253465CA2EDE181553C4F5316287FD079 +:10CF2000FD26D5BB389C096827CE29112F9B070FFA +:10CF3000744F237E7945F2A23CCAC6FEBEBC2E7158 +:10CF40003BB63B38D04779ADA31A5A2514ABDF283E +:10CF50001F3E5AA97EF77520B4BFA70722F20DDA4B +:10CF60002C0AD9CF609BB7BCA87587EFFB065F681A +:10CF700046FE39D02906E5C5DCD7DA8CFE544EF7DB +:10CF80007B15AF749F624A399F5FE77B66DC29207F +:10CF9000E2BD525F8AFC1C9839EE5A431E97CBFCC7 +:10CFA000FE16F61AF7FF3E9755DA57FF7C85A20565 +:10CFB00060CA89B16FBC8B715CB52E5EC5FC1CD696 +:10CFC000A053BE0EB3DA29EFDAEC2F01F79FC3F6B8 +:10CFD0004F130CFB676F02AB50F2BBDE371B74DAEA +:10CFE0001B1A9F913E674E9E6F81F9226F40595ADE +:10CFF0003584E2C61FAF7C7E0BCE5F8A2B5451DE98 +:10D00000E71AE7F0963B0B55CCE33FABF89E2909B6 +:10D01000A3FBDEB894328CB7FC5F942FF36B84FFD4 +:10D0200035231EF0DAA7B1229E474CC07C8B1EDD53 +:10D03000F32D1230DF82EE370B3E311BE1BFC5C846 +:10D0400063E8966FB1ECFD07B0DDEB16CA5316AA84 +:10D050002A53D16EEFE5B58A944F3187CB5DAF7D12 +:10D06000DC2EEF55D94AFBD909817815E558C27CE9 +:10D070008A1E5D7CDDE4CA223E697A5DA2FBC57E24 +:10D0800028A84FD42686E751707C3655AB94CF1B29 +:10D090008A1FCE62661C95BE7FB64031CEEF31B29C +:10D0A0003F3A97447D9FA1F2EFD2693A2FD8398257 +:10D0B000DB0DE6BAF2D9D49E143FEC29FA5EA0F358 +:10D0C00051B2A1FFB245E39EF5CE383CB7B715EF9C +:10D0D0004980E793623086F2FEF17C0ED6731AF532 +:10D0E00064B05F71BC4ABE6F65D2E3B3D0F9BDCE08 +:10D0F000B8F078A3F9BEC9CDF345BAF6EF8F6463F3 +:10D100007E8299A761E62F951920833CC98FA23CA6 +:10D11000E9E09FA3DEB68FD12F77AFAEF99C102543 +:10D1200047138C7EA3F3382A471AF12E238FC3CCE2 +:10D130007730BFA78DE4EB93F99C69D85D269F9962 +:10D14000F5628D7E42F51C97AF171FAA678C6BE3C3 +:10D15000FC62EEEB8F4F88E4EFA4915CAFE546F5FF +:10D160001B5DCF9C47AEF1AC1CC9F5DE464F3BE5DD +:10D17000DD6D14B89FB051807201E713B4FF370A18 +:10D180008DD30CFF40E165FE1DCFAA635EE1136500 +:10D19000ED29B43FD3D36C0F2A389F9EADB89FB111 +:10D1A00031A63D05FDE2AE3CB0EB48CF9587F2C01D +:10D1B000349A5FA08ECF4F6BDB3370193C0F3CA8C5 +:10D1C000A8128F67D3FE9949E75CA61EF417E0FD0D +:10D1D0000F3C0F8C35AB07BD503E20187959517468 +:10D1E00037D789E8FC90F1F6748AD7C25F4B725149 +:10D1F000389F15119FE15F387F953979BE4899D3E3 +:10D20000D64AE741A3C7B94A5E57CFFACBFB8D4B4D +:10D210008C752975903E61645217BCD1EBE1DEFC40 +:10D22000645A0F41A45A12302E6DD8256F633DA069 +:10D23000C3AA91DE292387E37919F5EEC7A0499B9C +:10D2400071BF131B6FC44B64F0C7004FC77AE5E68C +:10D2500085EF0B74F93DDC7ED96BEC73B094965F6F +:10D26000A21D322081DF6B8D29A174AFE32E7E8F4A +:10D2700063ADC1770393B72750BE5BB7F1BC83C3DF +:10D28000F3AEA2C7F18FD4E7D37C8DFA57D2FFA6B5 +:10D290003F66B56AF3EEE17EB51FF7398EE227F4FB +:10D2A0004F6D9D77E079D534294EAB87E709C71DCF +:10D2B000879360FE7D15DFFDD8FFD45BC7ADC6B296 +:10D2C000D0D6435D0AF07D56DD51689EFF477CE174 +:10D2D000B9AC9EFC7C52BF782496B787618F7B07E0 +:10D2E0005FEEDC8809CF4103EF5A9C6F35F6D326F9 +:10D2F00076BA34CAD3E6F7FB3285CFEB7D83AFF63F +:10D300005BB44B9D00FFFE4D9979785EAFCCF1DEAA +:10D310006D8BD18FDB9C4CF7D298782933FC8159E7 +:10D32000A2B767AB1401EFA304AFB33A3355A4DF40 +:10D3300055E0F0DA930C7CAB83C2EF218E86177D2B +:10D3400070D2DF0F18F7A1B2D617B0FC125314BC7D +:10D35000EFCD8641255C07EAF8B9F5FF30F0BBD583 +:10D3600002F5501FD85902FAC929B1BC9F94C7458C +:10D37000BA5FD25BF66B8A073CB3C8A9A13D5ECD0C +:10D38000548AD3CD643AC5CBFE54FA8F573A607EA7 +:10D390003B47FA7E8AF0E3760AB6BFF39D58B2D7D0 +:10D3A000BDE52E3A4FCC4672BC5F8D0F7229398A8B +:10D3B000B1AA0982713E4B3DB6A800CFD131CA87D0 +:10D3C0009E15F2A7D424AC770BBE87F94D617E3A47 +:10D3D0009776A5737A7730E5153C8FF6565DF23D6A +:10D3E000F733FC3D8BCEDE56A9EB7C35E0FF00C267 +:10D3F0007F710C3F67CD5654F7233A37255D13FFF5 +:10D400004E14383E414EFF807C09725A80573B874C +:10D41000E4A62289C32D77D4C7C37C26F6F4E4A101 +:10D420005D73FD25251DE731962902EE478F31CE2C +:10D43000F5B67FA86CE7E77A4DBF438F4B0DFB1D18 +:10D4400084CD9FC731BC8FAE3D4BE2E77FF525F21F +:10D450002E28837562E48DFB7A7D06E5D7C0AEC5C4 +:10D46000F5BB9DF1FCE0F6227E4EE8C6944D151802 +:10D47000567DB58ED1B990578F491AF2EDCDCD8733 +:10D48000E50228BF516AEFE4F79076C8287F37F9A4 +:10D490009CFE70BBB732DDD215FF6378AF5864795C +:10D4A000FCA0C878E1CD5789175E18699CAF1AC0F7 +:10D4B0000660DCF94054BCB0FCEAF1C2BF23DE4395 +:10D4C000E73A70171AE07E76548FA7910FDB471E5C +:10D4D00028F90CED877D1ECCF8626F9471BB79D072 +:10D4E00028AF300A9EE72D1DB3914F3E580903F532 +:10D4F000C378A59DE9E0429F5DA950F9A39529F461 +:10D50000FCCB4A959EE756E6D2F7F32B352A7B47AC +:10D51000E931A39250A5FB9BD19F5856C77F7F64EA +:10D52000996B292F5BEC0A2AD9351987E97EAA3530 +:10D5300041EE37CFDD155C8DD39EBF4FB7626EDAFB +:10D54000B28C04BAFF6A99719FC3EC23FEC3C83E34 +:10D55000E78F7E3065020BF373BF12C86E2E2AD59B +:10D560005370DC3FAF2C22783E5EA9133C9FACACDD +:10D57000A4E7C251DE0CFCAEEF3BBD3A05FA9FF0CA +:10D58000D3D3721A3CC7E8FC1CE0689D05831ECC0F +:10D5900027E7EB47732A8F03960EAEDA7A37433DBF +:10D5A000EEEB87F8B92561E618BCC7E5E6A26A1973 +:10D5B000EBDD7A89D1BD3D265F5F4D3E54D67E1EA0 +:10D5C000D7B74F031C2F6FEF7A9BCA1764C00BCCE1 +:10D5D000F4C22E07F9A1174EC4521ED2A417F9F7B0 +:10D5E000A5753CDEB2D70AEDE96957304F2B799F1C +:10D5F000E7D6BD88C7DF5BE87CD22740374CC8DC64 +:10D60000DB7B7D82CED7D14E7114E8BF9F569FE958 +:10D6100085FAED413BB3F5827A3FBBAF03CB6B0498 +:10D6200027DD13F14982B1FFCAFC0EE4ABF3A1FD83 +:10D630006B3FDD3BB1C86AFA93BE8158FE2496D792 +:10D64000C7F1D47EFC3DB6FBE4672F0D44F8FAF633 +:10D650009455ECF7D99F6DBA80E74C9964F7DB409D +:10D660008E5EF8F9D6ACEF13B70789EF5ED8B92E06 +:10D67000F63686BF67C2F38BCF6C7C290DE7D90FD6 +:10D68000EC50D403331FFE75DAAFA1FD73A043B095 +:10D69000BFBD16EDFC1ED4EF5BEDE4273CB7716116 +:10D6A0003EEAB1DA1F4E1B9B8A7CBE9BD139BBD9A7 +:10D6B000A3F8BA3DBB79E70F713D1FA4310DFB1BE9 +:10D6C000BAE5B4D80BDAE5FD58A8C7E7B09F7A24CD +:10D6D0003A169BD2F26F88E70122D39EA4FB779E75 +:10D6E000E915BECECC1FA546C4030666541EC13C38 +:10D6F000F7414D7F2DEBC5C2ED8658D2D7A6BDF0C0 +:10D70000EFBD4F5CA8A6758FEF9FBCB86FD2DB381A +:10D71000DFBD422015FDB040B555A3752AC8732161 +:10D720003FDDD587EC8EDD6280F26F0335304F2808 +:10D730007FEA0D3C81785908F5D11F5B98D77E1A96 +:10D74000F32116BAB3E85E838F82CBC87EBD4E60EC +:10D750000ACE73D1AEC7C6227D3F1DC93401C69F14 +:10D76000F3E2E7B48F8407E1312EF2E9AEFA9ED3FB +:10D77000A1FD4383CA282FCF2BB5D0786C311F6F02 +:10D78000F1BE9D76BAFF14FE87F972EE7DA507D231 +:10D79000D42EBA891D0F7BD0AF4FF2817D0AF59B45 +:10D7A0003D8154B47FCDF574E748EF8651B40E3E09 +:10D7B0004A792A7F02B868FFEA1AD73FABE8A73C4C +:10D7C0003996C2ED71B3DF0CB195CE6D8234D0BD08 +:10D7D000AA3B14BEAF80233D42E3FAB6A09CA74902 +:10D7E000D564EFA7D9B8BDCE944994AF76ADE36FB9 +:10D7F00076FC93ECADC5621C9DA337ED95A93DEA7F +:10D800005FE9007A5529BEE7717EB38CF59FC99A0E +:10D810008AEB649EA2BF308AEC2D5857455A4F7F41 +:10D8200086E54512D85F7DC2EC2FFBB5ADA7358AE2 +:10D83000FE2B9CCFB5D65799D68CF19490DEFD2265 +:10D840003F42EFD6BBAC2C0FDED737D948BFB083F1 +:10D85000E282C360878FC22EC4AEFE96B9F29331C6 +:10D86000EFAD9EB1CBE2EB3720F73EC06D2BAC0F96 +:10D870003E92FFF67A8CF7EAF03F17F0C9E8AF4422 +:10D88000E6BB4C9E8CF9043ABD89F32A658E887AF2 +:10D890003A73D37E1173265CE37C5B9F895C67DA05 +:10D8A0009E099FEFC80B271C684A011E92F179A5BB +:10D8B000F9BC62CCE7B7381F78BE5AE63D83F08DDD +:10D8C000FA9B42F72A8C9625E60B5BA701FE8F9107 +:10D8D000AEFAA5D808F8437C768DF0DF037E24ED00 +:10D8E0007BFDD54AF1AA7D461C69DFDC41FC3E2464 +:10D8F0008CD7403950C5CF49EE73F9290EB3EFF5F7 +:10D90000242DC028FFCAF8DD281E6FDB17C3E56190 +:10D910005FAAA2606E6E2F1B3BBB0BE55E8A67E8B9 +:10D920007786FA4F52C8FE09DDD7348D8FDF3DEE82 +:10D9300023F1BCB369B1145769CA6B1DF80BFA9E89 +:10D940004BF13C33AED34BC28BDCA1AF7A9E6FDA86 +:10D95000E45AFA87C1D0AEA9CE41EB779327B81627 +:10D96000F3BD9A1EE843ED4AA4B61F61FCA8F3AFCD +:10D9700056C6EF630AB822CFC9045C91E764E03B66 +:10D98000E0F5A441BF13328F9F9C08469E93391146 +:10D99000CA6BE3EDAFF5BD19873965E67BBB1B9319 +:10D9A00068DF7EB42F6734D069DAAC1D31BEB07841 +:10D9B000EA7D766FBFD140FF33B53B5EC07D165622 +:10D9C000CBFD20684FF644E0EF3C2E34D2DA71D321 +:10D9D0001498E7C8FF290A38EF68FA87E25A0F88D7 +:10D9E000C6BD54FCDCD3B6D77AF0BCBF4C4EDF4E7C +:10D9F00097D5BCB78AF207B7B5F437E25A828EFEE4 +:10DA0000AB993F5859C5EDDB0B2BC4ED18876B352F +:10DA1000F209B719FB07817D2E1E17953B6330AEC7 +:10DA2000B540E071AD3B0DFDB68DB5A62DA67A31A2 +:10DA300094BF6AC6D1B6ED1948E3B532359EF8E514 +:10DA40008844717DF3F7453E73599FB185EDB3D49A +:10DA50001BF7CB2C30F206B719785E70ED79849302 +:10DA600011BF57CC230CE18BDFF3B56D790F339FDA +:10DA7000D288039AF77CF1F39DDB02D9F4BB082529 +:10DA80005229C59B3B413FA07F6DE6179C7D4024FA +:10DA90003FE336D6F9785F0FE2ABF3F5EB709E7B90 +:10DAA000F87DA9BE557F8F1950807A9CDFDFD5B1F4 +:10DAB000EA9DDEBEB079213E91AF7C682741F98FA7 +:10DAC0004A872B3CDEFB47EF59BACFEEDDE552AB80 +:10DAD000F55BF20B6734FFF96B36049E5EEB69CCA5 +:10DAE000739AB1E2831918879F31E7D21DF47E4102 +:10DAF000747E5364BED263A3F5FB116F213C7D2C71 +:10DB00001AF1D0C06E9CE7CB8AA2E13A0C78E2729F +:10DB1000FD716C88AFB0FECB1F0D32F86A27BF6F66 +:10DB2000E345C1B8EF8CF3E1CBCDA911F9962FCB2A +:10DB30007CFE2F0723F34DBF19E0DB8072137D7F3E +:10DB4000D9B8EB7D8DA3C97E383F16FDADC52C8EAF +:10DB50007E57E49CA5FD30C679D88A6B5BE7E6C7A3 +:10DB6000EE5B2480DCFD65DF8EDDF804BC13DD8117 +:10DB70003A2477E794D638C4BF4F6CB1925EAA615D +:10DB80007ECC6F9A87377E1790BDE65F33A27BBE4F +:10DB90001BB13CF897F3F13F286FB2C55A9288ED5C +:10DBA00098FAA482EFAD5DF5C92F0D925D05F5974A +:10DBB000225EE7BBF73C5C02EFE7399DF61509DD15 +:10DBC000E9336FD79AF63E43BABFEF0E47947ED83B +:10DBD0002919746C8D433DD8A5275B29AEDCA52798 +:10DBE000E17B987E3B67D0E75C147DCE85E8C2DBA5 +:10DBF0009BF6F783C6EF045A8CDF093CD77286F890 +:10DC0000FCBC192FD3787EC2FC5FF07C83070D7DAE +:10DC100039BF474B21E2BB9714B91F6F3EE7DB5B6F +:10DC200056A3DE527465E99AD4AEF8DB7C6F8B158F +:10DC3000D71BBBCADFEF36E204F35890F294527C54 +:10DC4000FCFD7C2FF87809FC3DF2A5D9CF3C31D8FA +:10DC50001BE964C2D16DDC28BCBE379AFB050F9A64 +:10DC6000FB352EAB11BFD752106FFD9AAD11F5CF1A +:10DC7000BBAC77E2EF6DF50F46BE37FBFF78B460C3 +:10DC8000C46BC2E8E9B9321E3E33EAFFE427A1FAC9 +:10DC900012CFDFC393A006DFA97C5DC63CAFC049AD +:10DCA000033EC6EE4E033B6D3EF24056179E76E7AE +:10DCB000F9D212E0795EE47A72B71BCA83484FF951 +:10DCC000C3CB217C47F1EFAA9385642FEEAE930579 +:10DCD000DCF7CBB89EC7CDF7895AB3792E1ECFC9D2 +:10DCE000D7B90AE97781FFB252A7DF398A9ED7D91F +:10DCF00095BA5E1BF67E76739E9DEE31D99267AF24 +:10DD0000098B07D73FFF4C9B8AF2AEDB3B45E0A572 +:10DD10007A39F8707122BE975A80E3E139CC8EF8D7 +:10DD20003EE76C7B03EBCDDEE2CE0F3F4F7557F342 +:10DD300018BD368C0E039F8FA4CBE096C8F2D03D61 +:10DD400091E57EA843867FF77679AD91E56147221C +:10DD5000CB2F15754A98A7283B45BA6F4576AEB2CA +:10DD6000F2BCC5F8CE1C186FF8B1062BAE537F6617 +:10DD7000EC22FAB11FED5E5388F6F627ACE5F80405 +:10DD8000A0C3EC7D9BACB28A74F58FC57BBA0365EA +:10DD9000F6CE1D5AF77C5DF8B27A21F43BCFF83D00 +:10DDA000A5ABE5EF9AE77CE02F379CBFA2F9E01323 +:10DDB00023EF70C1F29B1E0D3FB73AA26513E545F4 +:10DDC000CC1D1F39DFF9B2CC50BF5D496FC971ED71 +:10DDD00063516F9D7E4860FC7E7765F47228CF6C3E +:10DDE0001219FF1D28E5070F42B9D61B4BFB1BA1DB +:10DDF000DF4DDEB0E430C60FAA25BE1FAE14298564 +:10DE0000788E6B965D207B7E95E30794373407E62A +:10DE10008FFB2666BE64F1BEED12C25913955F5B9F +:10DE2000BB210ABEABE4D5CEFBF137B6C83C5B3EA6 +:10DE30009F59067C5280DF2F516CC46F3EC42A2349 +:10DE4000301FD43BEF7AC0737113B72F8A65EE7F12 +:10DE50002C643CBF73A1DD77AF115F566E80FA472B +:10DE6000C00F43FC7CDE1C4F71CBCFB11F2C6FE188 +:10DE70007149336F7F610FFE7EE1AF048A432F94B7 +:10DE8000AAF9EF6E2FE37969C81F7A18BCC80FE1B1 +:10DE900065D668C6F9F9EF75CFC3DFEB468B1CE892 +:10DEA000A647E43DB75A3F82711605849627DD3CAC +:10DEB0002F34A21FC6CFCF2D66DC8FC7FCD0C8EF92 +:10DEC00041E2B36D161E6F87658BFC8F6DF3A6C79D +:10DED000A2BE02FDC3FD98895C9F5D6D7FB9298F4D +:10DEE000CFBB696E0EF941BD504722FE1EE5FBEB2C +:10DEF000B5E29BE4E7D4F6E278B0187EC8290425A1 +:10DF000015C3D56D14CF6F12F8EFC634795820863B +:10DF1000FA1B60DE076BF835E6B91CBE7F3BFD31AE +:10DF200037EDDF86ECC84DB688FDE4E91B071BF62C +:10DF300051695F3B7D8FD1785E0487777A12DF8FDE +:10DF400036E567BA711E657AD4799CE9A17328C158 +:10DF5000A4F07DE1ABBD37FD94AAA1BE3DD787E516 +:10DF6000FB34B98D7B47E75CDB3ED395BEFFFFE713 +:10DF7000FFDBCFFF052A16D1F10080000000000072 +:10DF80001F8B080000000000000BE57D0B7C54D5C2 +:10DF9000B5F73E7366269364929C841012C03009D4 +:10DFA00049881060C24B10C4212F03040CF80245AD +:10DFB000984080000984406DB42813028888365840 +:10DFC00054EA032708A82D7203A2528BDEE12160D8 +:10DFD000458DCF6BD54B13A90A8232061FD8DAF6CE +:10DFE0005BFFB5CF49E60CC1C7F7DDDEC777E3AF0E +:10DFF000DDACB3DF6BADBDF6DA6BADBD67AB55081D +:10E00000314488E0FA48FFE63421FEAC941EB25059 +:10E010005A1E55BAF6F2444AEF4B4FAF2738DAA3EF +:10E0200008D1558861799E2C4D9677A3BCF0344F6A +:10E030001589A827B4B5B9543EDD93559383726210 +:10E0400046A9538863B9624A13C1D14384C74F6953 +:10E0500022DA198AD4624A4581AF91DB89A476E23B +:10E060008598264A8B542ABAD545ED50BD727BE976 +:10E070001F2E0B19CFC3B6C01318B710AE84BA1435 +:10E080002152F576CB2D8AC74ADFCBEF89F0A39CCE +:10E09000B07A7B039EF66EB67BADC2E3E4F1BC873B +:10E0A000AA29F8BFEA3FDD4AED5EFF5AD7416B5D12 +:10E0B00080EBB89DDF2BC2E7A07ABE4976FF566A97 +:10E0C00067C3244F4A5422D2248B8FDA79E6EFAA11 +:10E0D000C07883F36CFECD046FC8151E8C67C3D463 +:10E0E0002C3FF2E393DFDC58DE4588EEAAC4AFF89C +:10E0F000658C6CA7302F4550FF1BE8DF7F41F9424C +:10E1000097DF47FF1EA95A185FC2EAEF3A2986E057 +:10E110005EA21D9E0C5855242C28BFBF10FFC0DFE7 +:10E12000E5346E9B28C57CAE6FB4F832E342BE2B5B +:10E13000F43DA4FE8FFDBE21DE939240ED4D1EE81E +:10E140002DF20CEDC8DF10EF8FD450AF8226358250 +:10E15000EB0F2D0DA96FA48431E693AA679F7CC6AF +:10E1600047E39CFF2FF7C60A2A77D2DA90E4A67617 +:10E170002BB7AE8AF5507AC2EA8B457B27FD6A3110 +:10E18000F822BC9D553ABF1183C52A49422C6452DE +:10E190000BF1E96FFEBAFA16C2FBD78A08AA1A7DFC +:10E1A000DFFDEDEA5B088F873C8EA04846BB2D451E +:10E1B000BF20785E99B3BACE2DC4A23DB60F5B1CCA +:10E1C00082FFFE41FF9BFFD8BD49AE181E670F4B73 +:10E1D00032D2400FD45BB8C5E60E50BB0BDF52DD28 +:10E1E00060834522B81AE30BAFBFA8E9B81D74D706 +:10E1F0002C22D873E4F9F9C411F6529AF7A2DD770C +:10E200007EA1C6223DF99E1880F6AC1FB664EBE5F0 +:10E2100088DE15343DE0B1F683C8170F6677D45F0A +:10E22000EA8949FC389AFE7189B8E41F2AE3C71DC0 +:10E23000001FD2B83225F9996FEB9F786CC7733401 +:10E240008E93EF75CB8DA0CFA7B7BC1CAB101EBFB4 +:10E2500059EE78F1A00D0557301F9F6EEA1DE7EDCE +:10E2600004BF46FAF9722A1A114A3F3FD773EDA14B +:10E2700001762370AF4C2B6D81D891D45F65A3CD0F +:10E280004D1416954F3EBAED01F0F51F23DC992E83 +:10E29000C067ED16E42B9EA092CBD389558675D02E +:10E2A0006DC1931F153D48E517A4A8A284E836FF69 +:10E2B000A9AF64798F084652F9053B5B8B7E01D884 +:10E2C000EBAC767442B7FCA67DF6166727746B6AD2 +:10E2D0002DC27AAA7FE21BA6CBC91714D12DEDFC63 +:10E2E000FA155B4FD9B10E4F1381B478D0512DB3CD +:10E2F000C77546BFC0C4E78670BE0679F04374BCDC +:10E30000DA23185F55CFC68878EABFE2BD087F09D7 +:10E31000E87BF712E6FB4FACD592EF1F5E95E4A1C8 +:10E32000F157D87C491AA7F27BC5A69FE9FCE849BA +:10E33000B10CE7F9A5605EB31FBA86E73547789957 +:10E340000F2B1E564BFD947E6515C53B3BA1E7B7D1 +:10E35000BAFC8B108B07607D7C452DADA5797C6266 +:10E36000172CA77C6FA8FEAD0AF2371F53E8FB57A6 +:10E37000CD5D95B5344EF5759B037859FA7C7C6379 +:10E3800004C1AF401E138BE5BFFE5511D6D5D23464 +:10E390006B7584C6F3F6E97852FEA170EAB20EC33B +:10E3A00077FA4B47BB6DF61BA9FC97F4FD01B7A9A3 +:10E3B0003CE3E993CD1151CA404A934405E415FD6D +:10E3C000BD21C01FB22DB170D939B98E85AB0DF307 +:10E3D000CF1E23D7FFA2C73F297A00EB6DA6B33A21 +:10E3E0008EF0F3E55BC7EDDDB11E122D2213E36A5B +:10E3F000FE8861E1EEEA8A4BEEC0C7A23D11221011 +:10E40000BA6EB77C14B66ECDF9B40F30DE1689380B +:10E41000D7DA44E02D68873CF051BF5BA99F391BD8 +:10E42000A87CC83A5DB4EC84CE0FF68EEF691DEB84 +:10E430004EA8D3E2BC44AFB9FA3A0FA757F8BA3F97 +:10E440001BB6EE8DFAE221B9DEC3EB77AC731FE3A6 +:10E45000A9D2267C1AD6CF1F2378FFA95C2FD7A379 +:10E4600020399949FC7E7CDD81A41184A7534DB6E7 +:10E47000C412EED52C572B767D74E8762ADF3D59F1 +:10E4800015912C57BFB15BA87C72BE0846D0F84FDF +:10E4900055F815D1BF937549DF3B5D9715E23F569F +:10E4A0009E8A755FA80342F16E5E87732F204F53DB +:10E4B000C7105EFB75E0F52B91133712995A592F4F +:10E4C000EC5FE1F835F01A2E179FF3B818CFE17220 +:10E4D00091FEDE11217814A2E5D0ED84B7AF49CECC +:10E4E000AD75635FF996F72B426B3082F877A1FF29 +:10E4F0000B865761BF6278DFD5CA80CEE66DC667EE +:10E50000787EAB47F0784A7F6763FDA272AFE28FF7 +:10E51000E0B5E43BD46308AF4B0F8B15D170A8472F +:10E520006228EC0F839BC2CA7BC2E0D2B0F2DE301D +:10E53000B8DA54BE72CF01BB607E0898CA45D48E4B +:10E5400017C70777A62FF879BD2CDAFD85DD07FE02 +:10E55000E819B443EED956085F0CF4ABE755D6AFD3 +:10E56000CEB882B1D04B56454A7DF08CA6C3F10699 +:10E570002C6694D138CEF806683ED48B243D8FDAD1 +:10E580003B531A8C8DA7B496C601B8DE7160E39F29 +:10E59000498551235FDEF8E790F1D4C7E8E593653C +:10E5A00079E37BEB5E35D645EDB7F8457193B3B3B0 +:10E5B000F1D7331D5A84CC2F54BFDBD142E368F32B +:10E5C000655822681C6D2BBF92B0353B41B8515E37 +:10E5D000EA977FF65D914463121F89D27746826E77 +:10E5E0003E8F3D85F8689624B1A878A93E569028BC +:10E5F0005663861CFA3DB533871848A5FAE5EBC289 +:10E60000F419511A1748837CB275AC074967965FB5 +:10E6100073693F5D4BEBB9E22173FEFCBDA7781D2A +:10E62000CD0F5B475E8C25E5FC7574BBB18E7245E2 +:10E630002ED651A1EAB460DD9E39A232DFB5ADB469 +:10E6400089D598EF76C52FA89DB6BD523F6EDB23C6 +:10E6500061E1EB2AF5467D3D1BF83B8D75D6E7C29F +:10E66000FAC9E9A7FF7DD82FC057CFBC3FE0414A88 +:10E670004F3FF3C7ACDF037EF6DF52DF17E797CFDC +:10E680007FE1DBE93CAE172204C675E685C3A9D05D +:10E690002BCE3C17E1C6FA3CB32282F574DF0B3176 +:10E6A000FE4CE45F24CF03F5CF7F33A085F7A5951B +:10E6B0004C9F5D63EC9CB6EDFDEB3105F3D81BE19F +:10E6C000C23C16BD10CDEB6DD173917E81FACF7F28 +:10E6D00033CCEBFC8F9BCF42BBF0321F123FEE02DC +:10E6E0005FC7D3B902EBE8F7231EADA3FEAB76EF0D +:10E6F000B3CFA2FCFC7FFDDB00C8DD33BBF6D92124 +:10E70000973FB7B56C027F3D3FE6A8DF4678FE1C19 +:10E710008BAEBB10D7E639CBB0AECEC78BC4C31916 +:10E72000C203E64578A9801E7E217CBCF5DF161F5A +:10E730005F4C97F2EF12A1A685E245F1C8EF317E5A +:10E7400087C2F397DF5FF86600E4D30FCDB70DF310 +:10E75000EDFABF67BE5ADE7FD7F94A7EDF38C6C5FD +:10E76000E30CE7FBF3F9FAD99B18DE11E3E6F1FEBF +:10E77000C8F5EECEFBDFC5DF13FFDBCEF787E8FD84 +:10E78000924EEF180DE79533CFFF2D55FC84795746 +:10E79000FD0FE57343CFCF53DD4772A9FCCBA2E950 +:10E7A0002D771A6B1FAC77D4D3768CF60E27A76D16 +:10E7B00056F91C22CF57F9FAF9EA813C799EAA173B +:10E7C000835636613D903E81738D10830EBE8E7AE6 +:10E7D000DE51AC274408C9575F3962B6C15E56D0D6 +:10E7E00073967509CE575E79FE22F8E04EE8EB97F6 +:10E7F0004668800FD4D178083E1063D1EA3BD98FA8 +:10E80000DBF765C72B53143A471738CDE7AEF161F4 +:10E81000E7A7B12E737EB1D89508FB5D718E4DD000 +:10E82000094414A17CC8B9B2364FE3798D150D2B7C +:10E8300035E78FC2139F770F6B2E1D4F9E809FE091 +:10E840002257460DE67FA81D4F35C295C876173E64 +:10E85000370B61617A1D765CB66D6D287EF12F17DE +:10E86000E637FE20F07088141CE8EBF93D27309C59 +:10E870009CEF60BDDF2AE83C2CE7693A3F5BB96951 +:10E880004A81E74489E73CC6ABF7E04E1AD78111CD +:10E89000115ABD66AACFF3AEEF39D8E172FEF3F19B +:10E8A000FB30F03BF47CFCF6B4E65AB1AE2ED3F567 +:10E8B000FA026BBC847B36ABA5BCDEFC928FBF74C6 +:10E8C0005BA17F8C71C65BBDFC3D381DF62CD5125B +:10E8D000EB867D8238495869DEF5744E85FDF8AFC8 +:10E8E000AAF79D3C9C9F4B3491077CE48926D883F2 +:10E8F00095BD87BFC53989CE1B16E88F7D361E7A38 +:10E9000017701F873300FB8C78C87ABA5D2F4E07CB +:10E91000762F8A87BE8AA3F43F7A1095F747F2FADA +:10E9200070F4B4B3BEDADFE5C97351FF5144DF744C +:10E930009AE798FD911E3D7F33E48A81D7DB757B92 +:10E94000F19DB4FE0330B47D47DF896ED1A0A18A6A +:10E950007604CB8D286A379DBEE585B573D772875F +:10E9600008F4E968C7A8EF44FDDEE7D7CF47FD21EB +:10E970001DF5EB976BDC6F78FD980BF45F10D6FFFD +:10E98000AAE5C97AFF72BEBEB755B6431BEDC45E99 +:10E99000A09DC2B07138732C26FB47F878D40BCCFD +:10E9A000A728AC9DD82151DFDB8EF502E3B9226C9C +:10E9B0005E566782898FC3DBB15D603CC25A9D1C85 +:10E9C0006AF70EAF67D7EB19FC6B94B3277637DB8A +:10E9D0008BB4A631184F19097DF0E74467608CE1CC +:10E9E000BF58417C7C91D5CBFDDAB38506FF44D975 +:10E9F000AF9E1D03B86C2EF1722ED64FB382F23D3E +:10EA0000496747BE5DEC56B8BC26B47ACA2F8B0B5B +:10EA1000C8F2B3A8BD78D92FE44D0652E2EF8B447B +:10EA200013D78F2A608B210407F3777AA61C8F4DAA +:10EA300068A90AE1B157BE76D3BB380FAF8A746FAD +:10EA4000C6B2CA93E7E5F6F9E74BFF8B91F62C7057 +:10EA500071AA5ADCC9C0C3C49517F3795C8D2AAD7D +:10EA60007A1AEB7147B47B2B2565AB6F9C3014E3AE +:10EA7000DBD1C50D947D3A71E730949FB972EACF2E +:10EA8000DEA6EFDEC723F9BBA7C07B653EC98B4F6F +:10EA900015D7F4A7E9C3CC6B0ED893A98B894D3B4E +:10EAA0003F87FD7AE2D5D16E05B0687AF552B47F22 +:10EAB000B5EADE4A70EB8E183B2D5B31A1E90B2BDA +:10EAC000EC0B134629D896456BA496BA98C653A664 +:10EAD0008A6AD0ED867C29AFD528E1DDE5C4B82E61 +:10EAE000CA4AA7EF13F4F37EF83EB44E2FDFABDE35 +:10EAF000ED4AA476834AA4B679484779B48376EF81 +:10EB0000C99776D0393A5E0CB857BEF4CB94AF892A +:10EB100068ED1D8BD416E843A95294371FF32C4996 +:10EB200017451BD1EECDAAD8CCE3A52D01F85F9FE8 +:10EB3000E6821D83A824607F15EBD2785F691DE310 +:10EB4000B6A710DCBA3E4DABA779973B25BF969789 +:10EB50003AFC2BD290DF14801D2FF86B85E9774C9F +:10EB6000D35251FE58726FCD47A2B917161EF263E9 +:10EB70001C6C2779B5C07B5BFED00E7EEEABAFA7D9 +:10EB800012CBBE8C6ACC2F96E43BF8DDEA8E85BEB4 +:10EB9000F47347693DC62D1CEEBB2FA1761EB85BF2 +:10EBA00015B07B1FCF77C9F9AA810C8CC7AA493E43 +:10EBB000DB646B9987F6F2F2259F942468C39C92DC +:10EBC000BF04FC81AD362D0BF36B5D156921992EC9 +:10EBD0004A56487EBBC3DAC4FCECF7B82C3EE2CF01 +:10EBE000197AFD6975D6D2461A474F87B0C62408F0 +:10EBF000716991770EC63FA1A9EE18EC27B37C721C +:10EC00007EB3D6ADB7431FEB556FF8C59A0BBA501C +:10EC10007B27B6A60D5A2B3AE87B6951DE83F9A112 +:10EC200074BAFA8B5CD4179ACB129702FEF714755C +:10EC30004D44EAAAC1BE4A746B447F85EA5E5EBF5A +:10EC40006DB5A403D1F8DA44B3849385E6CBE5F53A +:10EC5000C9B0BD9C64723CC66B5EBF3DF4F567CD28 +:10EC600090F036DA2FAC36211E27F98FF43724C7FF +:10EC7000ADB436B7933C06BC63B98BD3A6E5D9FCDB +:10EC80007DD77237C3BB970F67F899E51E86F72CBF +:10EC90002FE6F4B9E5A5FC7DBA2B50877E921D4284 +:10ECA000BB7D04E44C13CB8DF3E4C0C5D21F6BD005 +:10ECB000D1B6668C057A8641BF4235270EFB759B1F +:10ECC00070C5693917D6DBFE59F3C810921F520977 +:10ECD000DF75233A60E017F8CB10729E490E293F8A +:10ECE000D385C4B7467BC7EDC0B7D56361BEF40A10 +:10ECF00017EADB4529CF3B0A4B2D05F471B17DAAFC +:10ED0000A75754D7493C49FA15C8FE0CBC08BD9D0D +:10ED10004D55C205B929AC2D17C32E5CA89EBEEB7C +:10ED200012FADE56617163DB6F132D4F3ECBB0D309 +:10ED3000EDA3AAA976F1F9E121AC0DB9D454292F9C +:10ED400023206F6F2B4E839E73438522AC21FBDC07 +:10ED50008DD591C21AB27FCCA88D37C1DFE678BFBE +:10ED600004DFDEB8ACF5E17FA3F6A7DFF6E9677351 +:10ED70005D3C8EADF7A3DF65516E3AA9D03868D8F7 +:10ED8000896C6F63BF31FE1C492457F10FCA2FBB3A +:10ED9000B5AF7D4F22ECC30EB742FCBDC9EE2A1AB7 +:10EDA0000E3DD622825B8957DF033D09FF1FE8F441 +:10EDB0008C6CF8A611F6C9569F95FD45624DA127AA +:10EDC000548F8A2D48673C1DBBE5AF8D2DD4CE23D3 +:10EDD0003687063B646B4502DB4521E21DC33AFAE8 +:10EDE0009FE98B6E855E3673A51A8818707E7BC28C +:10EDF0002DF5BD0FA1EFF1BE467A1EF68B80D4F340 +:10EE00003EBC35C9073FC4878B63DD0AF5E35DD39C +:10EE1000CD3797E075B976B70A7BF85EB11A764DB3 +:10EE2000E2653EAF089FCDACF7B5F48C871F85F542 +:10EE3000BECB1177E0677D9FD84AC3BE3B337BBF13 +:10EE400080FC140D8A06BF6539F0970039AE707CDE +:10EE500002C9C5E4AB49BFCC2A5079DE85F9564ECC +:10EE6000EF83A24F69A470B3FDB27C1D95877C69C6 +:10EE7000C8B5CF09D96766EADF67655B3835BE0F6D +:10EE8000457B2467BAAFC99D8275D81DF9394807FB +:10EE90004DC1F8BA3B8BAC4A88DE39B0C0CAE50B2D +:10EEA000D1EF50F4DF95D3B5D9F29C37D379ED1675 +:10EEB000797E71D9C1AF467F33B307AD4E1F8271E2 +:10EEC0008C019644BD8D5814FA754CF15688D211B8 +:10EED00005567D5EB2DD4A7DDF2384D8A1179DA053 +:10EEE00063A98C8B9076EAF93B7ECB7EE6F9EF47FF +:10EEF000F07E3E7FA0DC77458E7FD855D26F69F2D9 +:10EF00002315FCF633F67F7C46E74BF61BEE3E6E90 +:10EF100057F9FC28AA217F17ED565B2362CFF767CC +:10EF20001CDCF17E6CA77EA4DDD2FFFD437EA442F3 +:10EF3000D529CFEFBF937E10038F8B9473EC6F5D59 +:10EF4000F4FCAA246F27FA00FC97B509E7FB937E2F +:10EF5000ACDF29DC4E5E5960F637197EBC0BC95711 +:10EF6000C3DF64C015B5037AC32F31BF76586FF87D +:10EF70002916D68EE6D4C8FF6CF91E713CA47C1508 +:10EF8000E827CF5BF649217AADCF96B7AC00F4B352 +:10EF9000CAFC8ADA7E7ABB83B9BD7FD5F52097D5C6 +:10EFA0001507FE69F367C689EF19E7A28D34992E1C +:10EFB000F063B8E2E0B73EA39FA7CF6C57592F3F4D +:10EFC000B3BDFF66859A9CB7F757760B7D3F58A077 +:10EFD00030FF7C16E6475BB8FD38FBB5AB4433D356 +:10EFE00091E82B1CA17ED58D76EE277C5C0B7E1BD9 +:10EFF000530DFE9ED7A478B662DF7234B19DAF6D1B +:10F00000FB8D365F08BDFD3A7F878FFBDE0297E9F7 +:10F010003BC689712C8868FAFC3DAC947F8946AC6C +:10F0200011E8FE2AE21C4E3D34D80D3D685ED3CE79 +:10F0300085AC3F6C8FD6603FFCD426CF0B463BDBC4 +:10F04000F5FEB61748FDF094EE6F3FB54365F98CB9 +:10F05000F1629D7FAA48FF92516F975E6F5781A41E +:10F060004341815C8F46F9794DEB596FFC7CF7F891 +:10F070004CC885337BDE8CCDA0EF7B75B97066778D +:10F080007431F07166F78345BFC77A6B1A9388F5C0 +:10F0900069B4FF52814DE27FAF8CAF11FE2EBCAE42 +:10F0A000AB80DFC1A1E3ECD2E80B913B2407B8DED3 +:10F0B000A9DD4FC55A723AE8B7C851BD867654D11A +:10F0C000D3E692710636AF0F7633DB9E3101E8E965 +:10F0D000BCFEA9FDDBB3AB4B710E30CAD91D1E3E81 +:10F0E000AF2CDC3349601D187EA39AA76D7E9CE38C +:10F0F000A60F745D7703E4C3CB36C67FCDC522006F +:10F10000BBDCD9DA9846D0B526AD256615E52FE9E2 +:10F110001F85BD564C1FACCB9FE496A18883AA5C8B +:10F12000A308CF60F8F73C2B0EA19DA3F27CDB9ADD +:10F13000E67E0DFB48F015A98757FA55E11DCC7204 +:10F14000256B32EC69C30359582FDD893F3C849A03 +:10F15000330552CF3F661715A053657A202B3E0723 +:10F16000FAAF8CCBAA4C0864C1DF785AA763E5E4F8 +:10F170004016E2C12A77A5703CD869BB8C6BC0777A +:10F18000E8539583A87E08BD2BE7EFCF021F57CE2B +:10F1900074BB90DF9AA67DCE71774FC708E8ED96D5 +:10F1A0006763981E558F45F2F91682107A7FE2B692 +:10F1B0009446D8E1AC8592BF1EC0BAE37DCAFFD2A7 +:10F1C00061E4AF18C5FBB6D14FA245DA19E7D91BE8 +:10F1D00078BC46790336E60718F33BADF3F3BC2859 +:10F1E0001DD6E7312FB681C7DF6A131ED023F8443E +:10F1F00004C7077E9AD2FC35C6FDE913170BCCBBBA +:10F2000035CD3F670FE793FE8FF5E36CB02763BF03 +:10F21000C87704B13FCFFFCD635F633F38F930ADAE +:10F2200043DACF136FDB3E8CD7134DD9428C533C5E +:10F23000F97186DBACC202BDFBA4CD3F0CED9F8C07 +:10F24000D4F89C70B2AB2B8EE197BA707F2795866D +:10F25000548CCBABEF5B27B7FE3A15EBF8E4D6C77F +:10F260008AE0577F24CF510DFD245C7ECDDF424CD8 +:10F270001C22675AD3E4F9C0C8CF2C94EB3053C793 +:10F28000F3C585D2AE5815DD745F3ACF53AE17A2E1 +:10F29000179FB348E3CD7E3011714D990AE4442F96 +:10F2A00075B31DF14DC1318EEACD98F7F67BED9E19 +:10F2B00021DC5D3086D68572DB468E73489C29AA98 +:10F2C0002372E53AF051FED92695D7C1D9A6C1716E +:10F2D00098C77C4BEE9598EFFC5733611303FE8D76 +:10F2E000B8BF6DCF52FD939BBA705C8108F86F7AFE +:10F2F0001F78B1B85CC0734982FFA65A8CEFAE810B +:10F300006233E59F4CD0F198E0123E8EC7F2339EF7 +:10F31000ABBA49FB40D5EDBF1D8675257AA85A6664 +:10F3200027F8BA10DEA069B7C344D29B0AA51CAB6C +:10F33000A475E4A575541521F1B4609BC271280B26 +:10F34000564BBBBAF88DE2CFA4792E890CC48EC47B +:10F350007ADEAABAB19E17D89BB2BAE2DCAEB74346 +:10F36000E5BD9057467B4B229BE6A0BD254F46B29C +:10F370009C2F2B4CD4E3DA7E95043DFBFCF2EE6E21 +:10F380009A33B4DCA3B1A1F16F46B9F6F935913ED9 +:10F3900042FBFA59D17CD3FB54E5CBED913C2EA234 +:10F3A0006F2AF69FF0F99FB2D17868FCA79E8C1463 +:10F3B000909B9F907CF4F52138DEF34B8EB37A5D01 +:10F3C000155BE5BCBDD8A7E6FACDF5ABBAB8E3103E +:10F3D0005753F55ABE15F5E714DA249FDD3E92E93E +:10F3E0002E5EB3894CE57C3A8C2D94F2BC7D3D3E7B +:10F3F00019CD7C78AABB60FC9EDAD187F79BD678C2 +:10F40000BF1D7C15DC27829BE379BCA9D0B74F3D9B +:10F41000D92717FC34BF96F4F2588CB729550BF94D +:10F42000DECE670112ADC310C727D80E66F4BFC089 +:10F43000B1AE197AD002FA3C6C10A78108D29B16A3 +:10F440003C4EF30BD1C34A12E479FFF78572FF17E4 +:10F45000D0D1493F5C80F658AE35D921B78DF55BE8 +:10F46000B9DD5CDFC87F505F8FF4E74A4C92FD4204 +:10F470006F6EB535D993D96E235CBB886F17AC5CC2 +:10F480003C4FD07C1654AFBF01FAD902AB28B6D39B +:10F49000B85A1595C7D11A29664C86BC0CED275D64 +:10F4A000A65A52C73CB7EAE37DA2D065E8C5A2815F +:10F4B000DAA95CA9AC43BB86BC60837D483D4203AE +:10F4C000EB5DAD63F4FC0BCCD7C06FF87C0DFC3E5C +:10F4D0005F28F79FD634D72F47C97D8BED3D6DDF71 +:10F4E0000D8E4BF89EF339D6A3C7688FD6E31F0A5B +:10F4F00005E3ED97BAFC5A40E3C338B31EB29BFA5A +:10F50000CDDE6286FB6E37C339BBCDF080BD66D8D9 +:10F510007DD00CEFD2FB85BDC0D547DA0B90C25E23 +:10F52000E08A90F602C0B0172085BD00DF612F0091 +:10F530000C7B0160D80B001BF886DD0030EC06C8A0 +:10F54000FF878EA7E7847FB055E5FD8DE34A46AA85 +:10F550002B58DE05E3857B732ED3C9033BD473534D +:10F5600092FCF0D78CEC25F4786DA794DF56E97FF8 +:10F570007BEE445F3FF6D790F8EA68D06B8EA579B2 +:10F58000750AD57BCE2AF7CFE7FCE6F8EAE774FDEB +:10F5900097F6E168B627F7F59E2EEC2AF90DED5C9B +:10F5A000DADB3F1871F0ADAB0E67FD8AC6D1A2C49D +:10F5B000089C83DEEAEBFD02E5166EFC623AF4A2DB +:10F5C000455181E9A04F4B9DEBB5CB0D7D85FA2DC3 +:10F5D00023EC828F454502EB55435686C9E17521E0 +:10F5E00030F8798319AE78E87CB91DCA27869EF772 +:10F5F000882D98A2B15E366A13F4881A254683DDF9 +:10F60000ED78A458B10AF2EC25E9FF6A3B6293F168 +:10F610003CEB94CD22445F8C29B298F4EA59E7067A +:10F62000B3BEDD0EAF532C6220FC3516D3782EF618 +:10F630004799F8A7DFE30926B87F537753F9817B11 +:10F64000D24DF9195E4F5157EC9F74AEC47E981B92 +:10F65000E86B2A7F76D91A8EF73D8B0F2407AF5AB5 +:10F6600037D854BFBC74A4A97CAA22ED40E2151B74 +:10F67000CFB75CD70B97DCBA6635EF3F8D0AC7135F +:10F68000B86AD714013EED90F6A24D6800E765AB6D +:10F69000CFCE71B589F2FB2C7D9F39A934A7AA443E +:10F6A000DF797D1BEE1B45F5ABD4C6548DE0273CBE +:10F6B000DE21452CDF5A26A1BDA53B6D097C3FC14B +:10F6C0001AB87B1AB553B9B38BA87309793825FEDC +:10F6D0004EB549FB58E370C1FB796383D4EB1B1B28 +:10F6E000BA4465C87333D32143F8921213D94ED468 +:10F6F0000C7A16AA39AC079F3DA2428DA7F117E7F5 +:10F7000039A07FBF6E63BE37D64FE5A0C39B12887A +:10F71000447FD6F5FDD396FD5FDF8EFD25B7292BFF +:10F72000807DE381C6A4EB89EE5A9C771CC65DF30D +:10F730004A7E2CE249BFDA6EE3A8B68F363CBA099E +:10F74000F1FEB7373C6A875D71BED56FE7F8E627F3 +:10F750001AED88F7BFE2F146FE3EE7F1323EFFCDFB +:10F7600015D57CFE3B6193FAB4C1E785EABAAC4497 +:10F77000A65B4A3CF8F0374572BD574449BDF6AA2E +:10F78000923136D8BFE66F8FCF55093FAE29530A65 +:10F79000C1076D4DF1B9B003CFD2CBB71D55795F1D +:10F7A0006CBB5A95F167A2B47F68DC99915E752EA7 +:10F7B0008DF9F5EA73FDF85C744DE06279FECC09D1 +:10F7C000B2BE4678643B55DBD1B3F6ABD01EE23611 +:10F7D000114F676F2E627EB188EAADF1184733F39F +:10F7E000DB9234E247A2CF9257DE94F01811140452 +:10F7F000978E524DFCB6A820DAC48F534408FFD32D +:10F8000090AE45F056087C75496F53F9EBAEEE1794 +:10F81000B6BE0775E4F3FABED4A4A7C1916A86C741 +:10F8200099CA5789C91DF938B76E9176F7AADDF1E3 +:10F83000EC27AFB048BFC814AFFCBE704FBCEE3F62 +:10F8400027C2E8F5E254799EF79AF673E927AFC22A +:10F85000BF5CB0CB37B37D2898A2B29E5A95DDC26B +:10F86000FE8F64FA047B76958F60F4EB1141F8C14A +:10F87000AAAC12AF4EB796BE22A5830F16EE36C7BE +:10F88000332E3C22F16DC41187E7935C5FDD1DE3ED +:10F890002E5172A1AF2FD8DE6A875DE96A6FCF6AF9 +:10F8A000DC2399BBD16C4FAA6C6AE5715EB32789E2 +:10F8B000ED9D0B61F709A1C7A922E91737FC2C536D +:10F8C00090D19BF5FAFDD0EFCE1E917A7DDBD1472A +:10F8D00015838F44EEF9F8A85A76C20EFF3BC70D88 +:10F8E000D0FCBBBBDF5E8D739F3653DACBC2F9060B +:10F8F000F8B186E0A73BF828247F8E90F89A43DB86 +:10F90000AA3FF7A7E3692EFE41F973F7287EC49555 +:10F9100086E3658EB785F136C7EBACF66BE7CF674C +:10F92000E1B277398E7C07D157197E3EDEE68A66D2 +:10F930009EDF5C92DB8178E607BB83CF558A1BFB99 +:10F94000B26B788BDD362474DDBDC9EBACCD4DAB2D +:10F9500018F32915625902F7E7E832A8631D4F3EF4 +:10F9600027ED1AD79EB3727A7589797D5D732E89DA +:10F97000BFFF74BE6961FBEA42D80163CFC7C742CB +:10F98000D80563CF9FA7E17F32E42BEC80656CA79D +:10F990005B61F22B1B69B81DF1AB22FD3EC05031FB +:10F9A000D4741F409793E1F5C3EF0314AA25163BC7 +:10F9B000CDABEC259D0F9739783F6FF3D9581E7A60 +:10F9C0005715F27EE77D49C235B766770BB5FF79EB +:10F9D00075BB9901A7D67549427E59A4C6F756CA88 +:10F9E000EAD452EC3F6554CE15526EF5CADEA990AA +:10F9F000F31FDED167938FF0F6E1CD8949C3A99F4C +:10FA0000E3AB6C890E5747B90F5715A622AEE9F83C +:10FA1000FA8829B063F5BACD2154F0F533DD1A39EF +:10FA2000964075264D21F8B35D5D7231FD9E5748B5 +:10FA3000B95EB9EAE9585C9359B0EACD611AA904F4 +:10FA4000E33DDE1E57B07FB9719B86825AE300C842 +:10FA5000F97E5730EE44D9AA55A97C9EA636555E4C +:10FA60007F3E8E1F5B1A29F7E913912200BDEBC47C +:10FA7000CE483FCE41C251C7E54F7795F710BDD86C +:10FA8000F3B0CF6D89E1F3EC69CB3E7D5FF4656146 +:10FA90005F9F14E7ED87FE1758F65E8B717DAAF81D +:10FAA000B725AB1D76DC2AD87129F5D665F23DACB9 +:10FAB00016D86F3343F0DC6E7F3FCF7E3BE48A4E37 +:10FAC000ECB746FE6BF9F2BCB24DDFAFA16F2385F8 +:10FAD000BE8D3835E8DB80A16F2385BE8DEF8B3678 +:10FAE0009AF5B33EBA1FD6B0E7F652BFC885DEEA34 +:10FAF000CB13D9D54EC947BFC63EF692B4D72D51C8 +:10FB0000AA1F811F68499D55E09CE9CBAB7E0CB0D4 +:10FB10006F4584564FE9FDD1B73D027F52ADD5A167 +:10FB200045B066507D09E871599074AA10FEBEFC7C +:10FB30009C439487ACA331A4A485C2F98E1453F9D5 +:10FB4000422DCD947F45F2C5A6FCB1AE5C133C3E80 +:10FB50007B84A9FC04F718137CE5F0B1A6F2933C72 +:10FB6000934CF055C5534DE5AF292D33E55F37650F +:10FB70009E297FAA77B109BEA1E26653F91BABEBC0 +:10FB80004CF9DF58E80442FCB317E725A2CF0B3845 +:10FB90002F45000FAEA3D342CEFFA3F22DD59DC5B6 +:10FBA000312CD7D7C35BC59E9BC127A4EEA5816F1F +:10FBB000618B85FE71F7152EFDFC2CBFF7B4CAEFE3 +:10FBC00004A794F63FBFFC85CA8D8ADE7FD6452CFC +:10FBD000F5E5E1F76659498E8DBA64FFE0DE040F62 +:10FBE0002F4E2DB7921C1A3572FF53E9047B8ECC31 +:10FBF0002AE7FC81FBCF22FFC89174095F255815C5 +:10FC000019577C78968FF86AD4E5E9EBDCD2CEC13F +:10FC100071244E92AFB0C72E74380388A730E60720 +:10FC2000BC94674ABC200D105F23DD4F7C8DF4200F +:10FC3000F17539C9BB43C4D7488FD03912DFFF40B3 +:10FC4000E748A447E91C89F4553A3F226DA6F323FF +:10FC5000D237964FE1F4ADE55EAEF7CEF20A4EDF55 +:10FC60005D5ECDDFDF5B5ECBE907CB7DFCFDB12BBD +:10FC7000743BC61EDBE9F67D01E7AD6A4D60DFAE81 +:10FC8000D7F729B1578F57DB2F9A187F2DD6F88FCA +:10FC90001D1D7EC80B9FDFADE2E310BDECAFAAE7F0 +:10FCA000A92B986E3D3596FFFAF7AB4679F780CED3 +:10FCB0006FA75D953958C53E57FD221D47C5DB1618 +:10FCC00069CF0D6FF7EE2BE4B9EC8962CFF368EFE3 +:10FCD00032C731BEA7ED4A21ED7524E017D81FAE1B +:10FCE000DC42FF233A5E666DAE673FE1B7C285B87E +:10FCF000937D3187B87C7DA4D060AF54CE49FFFBA3 +:10FD000068B78C8FA8FFB699E30E4663EC947F9991 +:10FD100026CF27F5B36987CB45BE8C4B18AD517FF5 +:10FD200052EF31C52F159C6BCEE77CA7DD057FDD3B +:10FD3000E80CBD3CE218E2B97F1E5FFD62D9FF9678 +:10FD40006F9B398E8CEF0661BC0E196F35DA2BE391 +:10FD5000A39473D5DC3FC1C6F8B8FC68D489C7F852 +:10FD6000BCACB7D65F2CE3B3687C8BB97EB21C7F8A +:10FD700037AB2C6F77CBF8001A5F19D78758A5FCE3 +:10FD800018AB6C9F5854F3C978AD5CD8E1EC954E34 +:10FD900037F68DD139CD297A7B1C2F62948F73135E +:10FDA0008CF886BFC8FE8100DCCF48574A595F34C3 +:10FDB000D6E943639AD3D0DE433F73707B3DD49D35 +:10FDC000B990BF568F47405FBA6A82CAE7B523A38E +:10FDD000BC7F013DAD89161E6FBD2786ED1BAF3F71 +:10FDE000EFBAC88DFD48D7D3BF871FFEF17FC70F7D +:10FDF000CFB4D33782F12DE3CF405F133FB8DBF9A7 +:10FE000081F3EB0B891F3AE197F3F9213055C7379E +:10FE1000B7373AA3833FB0EFEE8B7987ED35F5FD29 +:10FE200065FF5BBEADE6F16203053EDBF9A15AD288 +:10FE30005739D7C11F11B9FF73F86188B589DF4100 +:10FE400088A874B831EF1FE28F194151144745D685 +:10FE50005CE6BD1B742D3BE73A0478961883134A81 +:10FE60007BFE7AE40F3D3FDFFB65D006D8F8BE4746 +:10FE70006FC7C8B726BE118D7DC068C728F78EDE54 +:10FE80005E47B9410EE8C94B0A9B1E823E500CFDED +:10FE900000F313121E47FA00C76B084F6C6E5247EF +:10FEA000DCB450471DAC817EA5DF6F134EA95FBB4C +:10FEB000E83FC8D9CBCF594DFAF638B1CE0A3CF25B +:10FEC0007DCA14C42F9BFDF1E3723E617D7C5C987A +:10FED0003E1EAE5F9715EBFA759A48837C3DA0FBFA +:10FEE000D50D3D3BFF027E7543CF26FDACA23844C5 +:10FEF0003F33E241B795691619D7E2B60C22B8D064 +:10FF0000E3AA01FC6A9EDC47B2A144D3F7821485C0 +:10FF1000D73375F3D64282A1AE023FC5A281F582E6 +:10FF200071A289D312D1CCE94411E4B454B8F7B624 +:10FF3000D07C0E7E356CC860AC1B4B6035DFDF2A91 +:10FF40006BE1F8CB6D71DE5B31AEAF635E3F86F87F +:10FF50004F11F4F601FDF617C8F1D55C23ED47FB10 +:10FF60001D9DBF0BF012EDAF1999C087E0F445DA83 +:10FF70007F3368BE8769FF053C2EBB4EA05E91CBE8 +:10FF80001CDF64D41FAFE50B6B970BEF77E307FC27 +:10FF9000AE27F0FB727C9F02D0E9E5F84B0A605F68 +:10FFA0007F39BE9B45A61176A417AA6FAC87F1399D +:10FFB000B7B33F62BC56C4FDB5E3B5AB19AF45C09E +:10FFC000AB1BF8F559B1198F157E4EC78B00E37343 +:10FFD000026DD480AF44C82CC107A2274E5B445D9C +:10FFE000E40FCECFC0F74A4730D56E61BC3E5E0C01 +:10FFF000BBADEAFD13EC779F5DE4ED037BC7DDFA53 +:020000024000BC +:100000003963BFE3CD67A0F7B6A11B4A3356363339 +:10001000BCD426F9BEEAD90979B84F50F3B6EAC77D +:10002000F9E6248648FC3BBA76248FFFF2DA119C6D +:100030007EB25CF880EF4A87C4E367BE7D0354EA72 +:10004000A729D6BB0774ADB4EC8DBD94C6F7C943E0 +:100050006FEEC0F9CAE0DB4AD5B5CE8DF5F6B28CAD +:100060009F15DF1D48855DFA427C4CFC1BC07CDA85 +:10007000F9D7E9ED0EBBB7D872158FCBE0D74A4759 +:1000800091899EC6F9B2F1320FCB094D0416633D3A +:100090002E1432DE70A1E3E83CDDBFABE1DE78B8C0 +:1000A000DE342C2AC072D68EB8BE111DF4EC1111AC +:1000B00098C7FA68B48C7F16DEC17D214F2E1DE0F3 +:1000C00079BB98E33373B61BF8855D7074A01FFB92 +:1000D000858B8FA87C6FE170D480ED90332D846F79 +:1000E00085F4CD2BFA553BD3894E37E5795B505FCC +:1000F000A8DFA9E8F768A622BAB03D7BB093CFD3BA +:100100003F109F132E374E14EBF13D03C400FD1E2C +:100110002CC727B5BDA5729CE0FDD1B11CDF50AF47 +:100120009F97468BACFB47517EFE111B22CA397E3E +:100130008FED19C9D23F6AC893CB45E94AF87D0AC9 +:100140003C8E60003A56B245B842E45EA42B4AB8F1 +:1001500042C6119D9D608263DCDD4DE5E386A79B71 +:10016000F2E33D7D4DF95D8A0799E0AEA5979ACA05 +:10017000779B92678253BCE34CE57B544C36C117A6 +:10018000555F6F2ADFAB76A6293FCD37DF94FFA2FC +:100190007E6F59F83C6F640F83DC937FBDD7D49892 +:1001A000CA5181835EC24B0F12F85847990DB79818 +:1001B000DA152E69AFF1D17FE0AFC264B3FD468D91 +:1001C0007A41017D5ACA9CD5E08B7C6DCC416C4351 +:1001D000F99AD98ED3C379E203C8A31E3F10DF95E5 +:1001E0003D56DF377E2CFDBD7D3BA77FA5607F6D33 +:1001F00087DD46D2BF88E80F79057F49E83CE12FCB +:1002000009C50BFC25A130FC25A1E5E12F09CD870F +:100210007F24347FF01133FD87369BE97FC9BB799A +:10022000617408F2FA795153C4039DD06D448B99DF +:100230003F84BA8EE966ECEB234F4CEE946E53E8A4 +:10024000BFFF0CBACD08A3DB5762DDD0DC74EC9B9A +:10025000528E5FC89EB650F3CC1E4BF2E366C8794F +:100260009253DF44FE9DE3605DA4DF8854217E1E2F +:10027000F5778E9F35E48E2FAF9AED1F3EBB43ABD3 +:1002800077333F30BD6B3F88E1B8C46F2C2D31D838 +:10029000578E591A14A4CFE57897A0FD1939D50ABD +:1002A000FCDBC9A274E71CECE717058FE11D23DF17 +:1002B000CD31529ED3111876E5969B63381EC8182F +:1002C000E7F41E321E6AD958DD5FEE967151CBC736 +:1002D0004A7D3FC6ADF17B0C6539428F6F15A9D3BE +:1002E00029FF63CDBB722CDB09476DBC0B76414205 +:1002F00062C410260CCBD55E2FD17A031EAD1E4BE7 +:100300002BBE1FB5715CD5924CB717F1B74B945407 +:1003100037EC3FAA1E4726EE8964BFD912C5DD0D12 +:10032000F1396AACB4D3231E23FE7BFCD733D798B4 +:10033000E33146DE19512DC7E9DA544BED977F9E24 +:10034000638AEF2FD7EF5186B7F3AE36E601E0713F +:10035000A46AD1FDBC168E57125679EE78C0A5B1AD +:100360005D63642F798E0D922EB399E3BD03917D69 +:1003700090BF21DD8D7E461AF729AA84AC0FD18269 +:10038000FC6549AC57F4D9284C7ACF03FAFB69BE17 +:10039000A576FD9EA03FB22FEC2842ECC23B32175F +:1003A000FB1DA638EF90F8AD48D83DFA3DAE99F266 +:1003B000FB37259BDA1FB8C765CACF0D649BF207D0 +:1003C0001F719BE0165B706716F5EB7B581588F77D +:1003D0001EDA3CDC54FF92773D2678444BB1A9FEEF +:1003E000BF8D95F1DEC215FC6207CD637A7D2F8E3D +:1003F0002F1A79A2D454AE8755DE8F484D96E799CF +:100400009F7A3F82F2F93C64C936E7C767CBF6E8CA +:100410003CE4C1FA30E2F43344CB548EB7D0E3F37A +:10042000A747886AE97F977EFC4D377737AD8B7F8A +:100430001F2BED63C7F538E7AD0E199722ACEE77A9 +:100440001137B74971A5833E46F98FF4F533EB7246 +:10045000CF71AC8BE3F9327EE2919813F3B02EA703 +:100460000F94FD4DB358664CCAE1FB8A7C8FD7A828 +:100470001F1C2BF5A557C62B7ABF72DCD3E3E4F81B +:10048000C42FE43B72C2EAE373E4A628118F73C160 +:100490008DEB9AEEEA4345A7D91B6C6C2C127E1BA0 +:1004A000F4F5923CD24B895FFB1CB8F55127E16310 +:1004B00053AD95ED68DFBCF4F7725F06F4D6A03C4F +:1004C000FF56D3DC72714EA03517E20F291B2FE3C4 +:1004D000D713C609DD1F107EBF2550C7FB109D979F +:1004E000616FB948BF7F1145F4F3F13B1D82FD03F5 +:1004F000B606C17C6FDC1BF967DD0731E864DC17E9 +:10050000722DB6956E76E2DE92285642E6B574BC40 +:10051000946B978D93E5510EF2A2503DCAF794DA91 +:1005200012358B9C9F2B0E72C8281F2E2FFE59F35D +:10053000E86195F7F6521DD22E107E0FD0C84FA954 +:10054000967C6EDCE3736A861DE1A0BC07E3253D63 +:10055000B8937B7F3DF47B30F1D99DDFFB6BBFEF20 +:1005600013B65EFC19168E17B83DC67CFFAF6A9CA9 +:10057000C44FF238DDCEE9A3F3F930794F0D7F8512 +:10058000EA7765687F768CB4D3CDBED97108FBFA63 +:10059000EC1455F8686D8FF668FCCED44C5A028D79 +:1005A000B0F344A632DC324604951EC4873EF37E87 +:1005B0003D177A9FC2FA2EFBD76721548DF877D664 +:1005C0009AB072CE8F795F9F1DFECE93E187FB813B +:1005D000F3FD8DE3743D7DA01828FD67CE15F04B2B +:1005E0007EE5A7F3575AC87AD0ED996DFEA724BCD3 +:1005F0004CB07D285C0F306017FC62217E18C26B06 +:100600005436E4FF4A2BBF8317CE67065E897E2BE4 +:1006100056F1F945DAF18CB88CD388CBA07AA77D56 +:10062000675B19DE1DC9EFD47C96DB3C00FAB11183 +:100630002F62F8E332BCC21787761E8FE476DA9613 +:1006400011A361DC8F47F3BB052DBEA73ABDE7E0E0 +:100650006D31FBF3CE3B977BBCABC6111F786D822F +:10066000FD6EF5DB55771D8DE30EE77E7EB7EE2739 +:10067000F8ADEE1C17621729B18A6235A123DFF0AD +:100680005B91DEACFB23F5F7837C6725FE970AB60A +:10069000BF5D490A22E4CDDB82A421EC9A82B48EAC +:1006A000DE3FDDDF75D5B95CE90F3E3792E7EF5DE0 +:1006B0003382E1AC5E3E0BE2B7C50D0AFB21AEDB37 +:1006C000225645B9108775DD50E0EF099D6E59FA45 +:1006D0003E138EAFEEE3E5FE72C97843BE3A799DD4 +:1006E000D7D429ACF7D74017007C97C27ABE019FB8 +:1006F0006DD0E142092F59A518F7B8F85EFC4C21DE +:10070000EFC56FD3ED2F982752CC137681EDBA7DCC +:1007100006F3448A79E23BE41360C827C0904F8017 +:10072000219F90423EE1FB47F1F976E015FEB88249 +:1007300090F5067F5C41C8FA813F2E14863F2EB4A7 +:100740003CFC71A1F9F0C785E6C31F170AC31F1748 +:100750005A1EFEB850580C1FDB01C3BFE2996482D9 +:10076000AFA2734241C87A873F2EB47DF8E34CEDC7 +:1007700079179BEADF206A4DF57B57D799CACFA836 +:10078000554CFE3A124BBC0FCFDAD885F965E7A875 +:10079000D24FB03EFE14FDF79FD9D2597EB09DA333 +:1007A000A62ACA2DE9DD502CE96F1192DE41B66709 +:1007B0009F5D669770A18C4B0EE723F8B9705503C7 +:1007C0007E2EA4F07321859F0B29FC5C0599D2CF66 +:1007D00085147E2E7C879F0B29FC5C48E1E7420A4A +:1007E0003F1752F8B990C2CF857AF07321859F0BDD +:1007F000DFE1E7420A3F17BE1FA3719487C839E8BB +:10080000B919A6F327F1A1E9FCA99960E8ADA1E522 +:10081000A1B786E6436F0DCD87DE1A0A434F0D2D33 +:100820000F3D3514EE3BCEC5EB0CFA6A683DE8A5EA +:10083000A170FF06DF8BB0AD4D78E8F38348B3E2DB +:10084000CA76E11E64F6F886D9F0576645970D8A98 +:1008500027996FABBB7776018902AF1EAF38400492 +:100860002D902F5E1C3287F07D448E13EDFF6D0AB4 +:10087000E7F7C9D7E37DF04774CFDD2D58DF34FCAF +:10088000E7467DB7D054A446F90EB8F372E1FD1BDC +:10089000E538862A641CC48FB990F3B9CB9C837069 +:1008A0002EDB6691F1AADB56C8F8E67EDB3D964862 +:1008B000CA9FB25BE3B838520C07412E4FD3F51FE5 +:1008C000A33CB59887F13F36C3A5DBA9E57C260C90 +:1008D0004FDBCCEFBD8C977A701FFDBE23C909BEDC +:1008E00057382AD89C1F47E5BCBE3143D17E895D6D +:1008F000D7A745F5A5386FF6F3299ECD21FC3D51CC +:100900006FC7EBDBB91F72F6B14726CA7A51B2DE68 +:10091000638FC472BF13572A1C47366ABBF0E01EB0 +:10092000F875BA5CEDB73DA0A2BFB295B2BF76BD77 +:10093000F6A1543BDE3D31F05426AA6F413CB81875 +:10094000A208C8F12CAB97F5D66ED3340BF4A31FD5 +:100950007B2FE9B221F185883B147B05BFB33B6156 +:10096000C8EBA6F9329A482FCAC23F5CF8BED882BB +:100970007B2E1309015D889F26108CF978BDA23A61 +:100980008DB69C6BA794319EB3A709057127174FAD +:100990006BB42452BD7EDE7D16F4DBBFA1855363AC +:1009A0001EEE51F12AE0129B5688F197142A2C373B +:1009B00068BF67BD05F77DD7A69D1FCF9921DC577E +:1009C00062BFAE59651338BFD6DC7AAE15716B3590 +:1009D0004F9BF508EF4685E558E5E2B78759D23BCE +:1009E000E2763E4DF36F8B27BC7C9ABE3376B822FD +:1009F000F580F188435F29F588B2552FF2FD89B360 +:100A00002B9FB6E31C64F86FCA753C881C0FC77B2C +:100A100095A548FB9C50F7727CD8575E27C7D57DBB +:100A20004872C5D387E525973BBBC72EE3421AA47E +:100A3000BE67D87FCA5E91F145E17AE0BC95B632D7 +:100A4000FB404AC3F4C0053FA0FF3D3C5EB7F7B88A +:100A5000851BFADF8761FE9D993FECDFD9323E446A +:100A60008F7189C0352CCFAB332DA043D92BAA8CE5 +:100A7000876E72713CB4A1D74CABCBE775289E96BC +:100A80007C34AD4E969BF63B8F1FF7235FD3F597D3 +:100A9000C9E77A303DDED4F5956B107F4AF42869BA +:100AA00089D4E3D85238BDEE9C8C479DEC94F2A0DB +:100AB000E579E15FC1FA5284B4231E147A7CAB99C4 +:100AC0003F2759FD165C08748FAA5BD195E009D0C9 +:100AD0007FA8BD29D087BA80DF17BF88B859B1A5D4 +:100AE000737E9F6C0D5C8DF627BB6DCC87DFC7EFE7 +:100AF0004A7C88DC22CC2561FEDB855BAE4771D069 +:100B000046E7B7E9D1FA79DD29ED53EDF62B1A0B5B +:100B1000CEB5C2777636F4CCE9086AE8CED3F120B8 +:100B20007E2F2647E69F7CF9ECEC9519FFF5EF0642 +:100B3000D0100249833AEC03C6B9187601C8D71B16 +:100B4000972ADCFEAC35998DF29C91D3AD95BE6FA2 +:100B5000989077B20471D3776476FBBE7BB6B38886 +:100B60004E5897D3E35A7E86FBEFB612E12920D583 +:100B700076AAD0F1841B3A3497EB7578E0D12E1F1A +:100B8000AFC961FC32AC1CFDDB6CC4D9DCEEAC2916 +:100B9000C5B83AE45DA907C7A0E81C0FFBEFC2C7C0 +:100BA0006FD8210696B8F87BB83D62568EDC078474 +:100BB0006EEFFAF08E677784DA5B3E34E2B84590E8 +:100BC000CF31F74D4ECE5DEBEAD85F1E98DF93F73D +:100BD000CBF4124B7BDCDA7FC43D91F0FB211997FB +:100BE00096F62CE17DBA81FDD1223BF8EBADD4FF26 +:100BF000F4E576D3BB268FCC8F62FFFE23B7D8F9FE +:100C0000DC649C93A7D99B5F74A475E0E1FDDA7B5B +:100C10006C52EE0532E1BFBBBE3AD28DF5BF6142E8 +:100C2000E9C5A067748E9BDF25F1E6F815BC87D077 +:100C30005D93E7A25EBD83B93FA3F4A4DE4E49BA3B +:100C4000DCF77AA9E22042BDDFCDF1B8517FC304C1 +:100C5000EF608C77E6DEDC433D5C1C576D077DA6BC +:100C600077D3EFB98A606AE87B458525725F3D33AB +:100C700041EECF67F4FB9B425F07536B350576CEA1 +:100C80001E42DAD752B235057686C212A907D8C5F8 +:100C90005B929F93A57DE122DD7EE0CC90F6847689 +:100CA000FB41F68753B11F75E0453BC4F76B62EC1F +:100CB000FC8E4D9933ABA81BC1650D4A82E2E277E9 +:100CC0006BF83C57BEA1F766C48BDCA48F93F89FEA +:100CD000E3BB6BEE5034EC572509AEEB706F20F898 +:100CE000928DEF8BCE5CBA2F93D78B90EF2285AF8E +:100CF00087F28D23783D94FB29EDE4FD6023BD61EF +:100D0000FD818B7E077E0B78385EB75CF3D843EFAE +:100D10004DCD6A504CEF3118F09C1269279B268EFE +:100D2000D8308E69192E05FEC79B74BADDB834CD54 +:100D30003E13763FD8DF07311D251ED62B1AECC394 +:100D4000E8675048BB331BE4FD6D0336E85E5D1277 +:100D5000C3ED95692E3BEE1595691A8F8FE66F638B +:100D60003B48869C7F4982DBEE44FBF3A87D42E151 +:100D7000F55AA010F9D7E7B8445D3CDED5C8657BCD +:100D8000BE779DECC7BB26DEDE1FFBB455B35F44C8 +:100D9000F0B428B9DE687CAC3796133E129CF25E44 +:100DA0001EF69070BC94E9E32D6F88B7CF367D5F57 +:100DB0006F033F4FD5CFF933574E4AC53B24E5BEAD +:100DC000FE0968BFDC2AE7ED2F91FB9E57C7E7D4E9 +:100DD0000D873311A732B53A2537F43D8BF53AFF2D +:100DE000F94BA43C32F032556BB0A19D76BCDE2BA2 +:100DF000E73D5B0B64B2DDC921E7DDCE0F1BF47765 +:100E0000373694D973403F6B69EAFD546E8EEF9587 +:100E10009E8837F103CFD4FED48DFBF47144BA31F0 +:100E20000EA179F93EE7C7F75E97CAF3DA70BF0DF6 +:100E3000788C71BB8AA03F123FF0BE69F08571CFFC +:100E4000DCE8775789BC77BF4B975FC6BE10552B40 +:100E5000D74DF9BAD7199E45EB0AFB61FB7B5EBA09 +:100E60003DFC42EB6CAA6EA7DB642F0D242B1DEB1F +:100E70009EF6C1EA5D9DEC1327753C5EAFD3659A83 +:100E800045CA1323FF8FFABA9B966EBEDF8CF6D04D +:100E9000EE61233F2F908977B48CF246BFD3126462 +:100EA0003DD007FC7258EF0FE56BB8BCC5B077F0CA +:100EB0007AAFB94BDA6F6AEE7A7415F6FD9A9D0A2D +:100EC000EB9DA76A9E7DF55A4A3FBDAF717AE83D1A +:100ED000D2D9A47F603DCFD1F7B9F240E7EBDA5326 +:100EE000E07DA724C46E5BFEAB27B320174FED78DF +:100EF00099E5C507444B95F07AC3938FDA20A78C08 +:100F0000F1CF5CD3B8263D11FB59FC20E831ED7ED2 +:100F10008A6C179F074EEAF39DB552D24B10BDF075 +:100F20003E7ED9CA3281FBDAB392DD6EECDB869D60 +:100F300035C52DEDE11DEF057979FFDB9429E364DB +:100F40000DBA4D4B6F30ADBBF0F9B4E9FD7EA5F3A2 +:100F5000FFF53A9F5D5FB15EBEE7B2A6EC51F43B90 +:100F6000D55847E5E6EFEDF6B27536692F5B97B9D0 +:100F70003A99F54F89EF056AD3809F53B953955B32 +:100F800017A6F0FD567F2AF6EDD9BAFD6B8EAEFF9F +:100F9000CD257C776607247C5B270CED80E73E221D +:100FA000F13D2DBD89DF690B2E8EE0FBA8A7B60FA2 +:100FB00066BBED0D8AA8C6B9666A53A30DEFBC4F98 +:100FC000AD884FC036DA75429AF93E6075AE063B81 +:100FD0006ED709FABCC3F8B603AF72BD6FB2493B16 +:100FE000763B9C2061A3DE54E1E986F52E7C3D052D +:100FF000F6F58E7EE213B401428C996031EDB7466E +:10100000FEF1C5657723AEE878A4E4EB4A6A0FFEEB +:101010009BE363DCA9E06B437F138901E6AFE9BD85 +:10102000E87C8C7D34DAEBC2387A44BB12B02F0CEA +:101030009FA0DB73335C7DF13DD642FA2FFC55B4A3 +:101040008D0C1F047E132272D085F7A907A39A2E58 +:10105000AEFE1EFD2FA3B2E50B8C136202ED20C580 +:10106000BB68D375FCC10F9034A8430F0D9743E1C3 +:10107000FBBB512F9C9FD766CF64FEB265C87564D9 +:10108000CC9FE6EB97713872BE345E8E137D304193 +:10109000C257EBF33F9EE6C9833F3A38C2A1E1BD98 +:1010A00083CD16570DC7E7D256073D5B647BF6DB51 +:1010B000A177FD2247E3F70A323CAC574FEFA1F18D +:1010C000BD8AE375520F3F3E55C6FBFCD8F91D4F54 +:1010D00093EB399822B4CDB93F2C67A7962BFC8EA1 +:1010E00086AD3666B3691D35E8F7621A06F37D8F63 +:1010F000369C2531AEC5911C87763CCDB06F7862A9 +:10110000B1EF1DF3F58F87BFF0A7DA9F6F9E20F731 +:101110008B69511DF7EB31BE63B5BD591F36BE1B40 +:10112000FBF331AD252621440ED3FE1083F5256A4D +:101130007BF3FB28C71A8EC758986FE5F88CF24BE3 +:101140006DB25D31C9C17EC61B974EB2E3BED18D73 +:10115000B56FDAF0BB402B2748F9D3AB7793A71BC9 +:10116000F03789E8862AB19E34F49398E0490BD58C +:101170000BA24BA7D8B14F1E4F0B64C0EE14CC95F9 +:10118000BFF775AC744A11BF3FB8319EDF835AAACE +:10119000B88FC14F2F5645F079AFB2695F069F0BEC +:1011A000938505F2E1785AD3D7EF814F5645BBA11D +:1011B000EFD1F6B106FEBC570BBCBF9AD095DF2F1E +:1011C0009478097BAF50D3F5DB5E760FDF630ABE00 +:1011D000247F07C2F0A3D434AA267BC8EC97A41FAF +:1011E000A5E6D629497847B2E65E0EAA417CBEE95B +:1011F000BE54B9EEBF990DFB47C8BEB37A437E1209 +:10120000EE2D95AF2FBC0FF75853F5DFC3FAB3B5EA +:101210006512F8E34463B7843AE85355F559B8B713 +:1012200054DE783BDF5F3AD118C9F7970AB4490515 +:10123000F8FD9F390FC97BA9EF57CA73FFFCD7335D +:1012400099EF9ED3D74DE5DF0F6C823F67769A7E8C +:10125000AFA8295AFE5ECBF23DA9085DD0E2BC4F93 +:10126000430EE33ED10897BC4F94C2E55D9DDA8FF3 +:101270008DF4E3E5F21E49D56DEF723B9F598E4E1A +:101280009C4AF52BAB9E8A453B0BEE7D73986661BD +:10129000FBCE3EB4DF7E5F6AA3BC2FF569987F6703 +:1012A000FE85FD3B872784D845C2C7F18EEEFF3E01 +:1012B0000AFA41CF4B28BD76AAA41FD3FF42E3AF61 +:1012C000D8A398FC6A37FAE3F87D266F40D8F15E20 +:1012D0008E5713ACB79E50452DFB9574FDC4F8FE98 +:1012E000271DBF27E21A52C14FF3B6DD9F0A3BE12B +:1012F000C918097BB71C9E8DDF17F26EB0E04682DD +:10130000F05A05DF4F9EE5D3DF7D7326987EA7E771 +:10131000E48468F91E53D87D29E35DD893FABB00B5 +:10132000B82F053DEA7D6B6036F8E47DD2377D4C01 +:101330006F29CFDE6F508B647C88C2EF7ABCDFF000 +:10134000544C86B473B03C14BF9771353143E43BC1 +:101350009F55BB496F11D26E007EACF99DADA88739 +:10136000D4AB387ABAD21AB077C607F3757DAA1D06 +:10137000DEBD93D76FE5F6F5F2FD95DDF2FD95CA7A +:10138000A69D87F81EEC9EB2C17C37452FBF70B773 +:10139000C443A468B15F1542EFB2EC84D53D487EEA +:1013A000474DEC39E75E9A5219E87429ED7525D658 +:1013B000B9751948357DFF0EB27EBD36FB0D3EBFB7 +:1013C00056AD94ED5565BFB13A9DE735A98B08A19F +:1013D0007FF444F9EE89519FE6CDF5DAE3A756583C +:1013E00045FD10BE4FC6F7CB6A7D11FC2EC103F33D +:1013F0006EE2FB675D23E43B841F6BDE1E13F9BCCA +:101400002FEF99513A106927714B53609734E29648 +:10141000EA6DD28EE15B1F29F3F5B825E37760FE14 +:1014200013E3967231FE40D51FFAF17854D2274863 +:1014300055F32C1CF5EE219A67A0DE892052F1505D +:10144000F5FE5388C7F1D4C5B930EF87858C1FBB33 +:101450005C8F1B7B2EC73B0AED24239E80ED36015B +:1014600005F438F3FC27838157C49381EF6D75BD74 +:10147000E6C2EF513051A75B4ECB60E0ABEBFEF61E +:10148000775579BFB725BB12B04F0774BFA5EF5B87 +:101490000BE369AF127894DBD7D49F210EACD9321D +:1014A0006010F6C55B26CAF5B771546909D3C3A5A8 +:1014B00066A2DD33B60FD2D09E0F6F32F6A07DBA92 +:1014C000FBF08DA0DF987A529446096151BAF27B05 +:1014D00090770A4B107EF88BF4FC3F137DF1FB48AC +:1014E000A3ECF27DC851FB4513C7ADE7CC74357052 +:1014F00079C1EF0B8A5A2D8038395113EB869ED172 +:1015000043FDE200FCE33D7EAEB821FBA7B77DFCC6 +:10151000F06B027157FE5C9C43BECDF196617C89F5 +:10152000B11FF7FF25F1E39D5A93C3CDFBBC7C4768 +:10153000334FFE53ECBDF9DBD8AE880F0C6659FF74 +:1015400085DA3B83F734DD7807B3DF41BC5F34CA0B +:10155000227F7F50380A3DA67B61FA7B98463B91FB +:101560000D7DDAEBB31E94E33A88F7E5F8DE98FBDD +:10157000FCFA67DC2E8E4B3F133C170BF995B7F73F +:1015800000BF739E67BC73EE087BEFB2D9FCCE79C7 +:1015900092FE3EEEE838F3F9F5CE89522FBE73A2E3 +:1015A000D403AC2E37E319F1D4A09F4B108C71EA11 +:1015B000F734DA9C76695FAE8860FB58DBDEDEFCD0 +:1015C0003ED585D6C39BD08B48DFF9FC32CF9DC07A +:1015D000EF19DB286ECF47745647735C08D359B1B7 +:1015E0005882D097896E4C57E3BEDCE5DF493ADE7E +:1015F000581DEB065E896EFD7F29985EF7A3BD63DB +:10160000DF6EBF63A0C0EF697A5ABD69FFFFD0EB00 +:101610009BC8D86DC053473C29C1893F259EB4342F +:10162000AA4F1ACBC1BD13BB42D509BE88DF6FEDEF +:1016300086D7D2D4FF5172F00D8CBF3D7E33C6A247 +:10164000BFD323E337EB11BF19DF59FCA6F0E11C30 +:10165000525FDB5FBEF3A3A6D581CF82B70AD63730 +:10166000F80FF4ABEDC1F9C7F0640BD10BE287E5DD +:10167000922F5A8FDB743BFA26F27DD85D88BFE843 +:10168000299A53B85CFB3B3F6E07ECB049EDEF4F36 +:101690008BAF610F9EFE486FF67B4536447CBD03E1 +:1016A000FDF80672BCE497BA3CBC73458C50E23A34 +:1016B000F88C5D1B34AEEE3951ADF8BD86EE4E0BA5 +:1016C000BFC7252A0A4CEFE4F6BB52F03AFDE1DF32 +:1016D000A15DC2BF5F1B7CC5C6E7F30DB9725E1B7F +:1016E0009EEFCD7AE5318BFFD77350FF5A27C71194 +:1016F000DFA7789FC0BC54FDF7691FB03438C027FE +:101700001B622C5978B77CC32407DB13F0FBB4C0F1 +:10171000FB867939DC4E3B5DEE8AD1E36A65FE9942 +:101720008A04F97E52FBEFD50663CDBF571B8C0DA3 +:10173000F5F79CD1F5A63361EF299D69C7B3ACFFDE +:1017400043DF5372BCDDAF1CDA916FFC6E6D64C376 +:10175000B3D9EFCAF5EA021DEFADCB5DC3F1B031ED +:10176000166DAB389F0EF75EB36DDF66CA8FCE770E +:10177000B0DC11BEC67DA06BB4EAE6F50E7C6D054B +:10178000FEEAE4F9269C4E2D7A3CB7E8D93234744F +:101790007CEDEFA7FB5A7FCD7674D17231F643E32F +:1017A0005EFD31DB07CCC7BEDE725FFC46978F2E35 +:1017B0004504C18417E9EF22470668DF1B01B99091 +:1017C000EAFB39C12D7817B9FB8F910B520FE8490D +:1017D00055A27BB37CF0005FC63BD5C6FDEEF3E5BA +:1017E000836B6AA87CB8E702F2E19EFF7CF9702D5A +:1017F000C6BFA5BFF7862BBB321939EEBE7BBDDC59 +:10180000BF0CF801BBDCBF8C7A7FD2DFEBCC16417A +:101810001BCE3133482E7721F9BCF44A792E17CBF1 +:10182000C2E4B3CE1FD375FE886CF8E6DFB1AE67B5 +:10183000D4C9DF059DBE2C82DFB79EBECC26D76DF6 +:101840006DD8FBD6FABE64D417A5AD2FFE1CF5C724 +:10185000C8FD64C6BCBF74C53E71C1FA61EF57BB19 +:10186000634B6FC27CFF24BAA4E2E3D1BFA9ECEFC3 +:10187000C9B0266CC27C6BEA322C18D7D1DC6E0C56 +:101880004FB76727808F6FBB52CA9FFBE33CB732CD +:10189000BEBE3BD013FAE0849C521FE03B32DAD844 +:1018A0006F752C37C8F7DE8E4DFDF4228C6B46ED3C +:1018B00061DEBF6618FBD70FE3A72BDF0F9DD7D6DE +:1018C0008E27E5BF004FE3B288A399AF3C0EE8290D +:1018D0009953463B30AE95CEC9DFABB7B42E77F304 +:1018E000EFABAC881EC0E70FF851E4EFDCF8657C85 +:1018F000C9B961224047C099E786884097FF977E23 +:1019000086F3EFB05CB89FD1DCFECC73A3B8BFFC0C +:10191000BE63F7EF4E44BB16B653FD50FBAB976763 +:1019200073FBE7FD6E49FB39DE277FD7B77DFC5E91 +:1019300007FC1F995326F2EF51AC2A17FCDE718A7F +:10194000C75B9C86F5F496CAF13417EAEF1EFD7763 +:10195000691A96BBB8DFD7F4F5946075ED011F26C0 +:101960009408B74F748C27E15C12CFABCBB9444ECF +:10197000530AA4FD6045F474DC4DE9B0635C69D1A1 +:10198000DFADB074FCDE0ACBAB90DF8D6138C104F3 +:10199000DB84FC7D166CE5F2F795D2C3CAF70D6BBC +:1019A0006F5018ECD7E3BB2E0DAB976782538AE5D7 +:1019B000B835CC93F0A41568B9BE103CB5FFFEAFA6 +:1019C000DE9E762E8BE91A7F2E8353830EF85B976B +:1019D000847BA83C547120E60A7EA7FD65455477B8 +:1019E000A1345E8F43B3BA8DDF75255C0FE357BB1F +:1019F000F89EB8D5E95F89FC9554FE1EADC3CE258F +:101A00004493B58CBE4F288E64BB6BC7BD618DD728 +:101A1000F964E1E6F46A51CAE9FF01B4422CCD0051 +:101A2000800000001F8B080000000000000BED7D0F +:101A30000B5C15D7B9EF9A99BD676F600BC3335B29 +:101A4000833A20444CB7B8356A4D9A36C34383D1A4 +:101A50009C6E11151FC806096A9AF612FB08E692D9 +:101A60003A08020A4989624A723C716B34CDEB181C +:101A70006A1F31393929A035369AD693DB26F1D43D +:101A8000EA16238D3D27B734D65B7B6BDBFB7DDF0E +:101A90009A813DC343343D3DAF4B7FE9B8E6B11E6B +:101AA000DFFAD6F7FDBFC75A7B29AB72B2498CFD6E +:101AB000BA363C9B498C3D1B1774066631F6803B59 +:101AC000B83B4164ECA3F1C16F29709F791218BB38 +:101AD0009DB13FE3DF5D83AF8CE98C250FBE2F09FD +:101AE000F0682CA33F3D85B17BF01F9378D9339BE1 +:101AF000B105FC9FD8FED7F03EB49F1C488E68DF2E +:101B000069B4CF1C6AD8CDABF9F3244B99FD99FA8F +:101B10009744FD1B747F50F9EA646B99F73BB37AE5 +:101B2000B726CE646C4BAAE8DF0677A3920AE39847 +:101B30006FF8F1D66D62AC7372C43819D33A3C5861 +:101B40005FABC6A09EBAB109E9DB60EC990B3FE739 +:101B50002E1C83F76B199B8557917546B4DFE08186 +:101B6000763CD7D18EC3CFFCD02F8707EAC932EAA3 +:101B700081FF328B56C705C65C7F3D66BF07D577B0 +:101B80006455DC22A86F41401C725EEDE3602C7A44 +:101B9000E07B2877A5168A3AD0A1DE2B865C697097 +:101BA0004D2D177598A22D1E31C4A0BCC55BE8460B +:101BB000FA6E013A074718FF36A3DF2D9BDCACD342 +:101BC000C5D8639B142A37F858C8150BFD9F9AEFA8 +:101BD0000EC3F7F51E3E5FCDBE7C37D233261EFA0C +:101BE0007D07636B4E66AFABCD1882EE6AE0F338CB +:101BF0004F0D3F95980EFD6950E0FD71C80ED9EB71 +:101C0000BA1CD8AF830C9F5F66AC4F8AE7E369824A +:101C1000FE377AF878ECFD8CC9B2D26F8C3F7AA08F +:101C20003DF82F6E4E82A5DC68F49739FCDEA1E604 +:101C30008DB1D090FC62A7B3C9BF426C1463D0BF12 +:101C4000979F04BAE09A63C1EE2F4079CA1C97B2FD +:101C50004D616CAE54C31418CFCB3F958CE75AEC52 +:101C600074588F7E63FDBD9CE1AFC0F14EF9B6ACF8 +:101C7000EAF0FCE59798F4052833AFC4E2BC8CDDAC +:101C8000C25A7E2301BDB38CF56CF673DA4BEC9C23 +:101C90002B1BAE9DB2657C731597A53C85453C4FCB +:101CA000C3FAAC6526AD1A910FAA4F47FDF0480460 +:101CB0007D9F0C8C49EAFD14FCE3D3ECD348876785 +:101CC000371D62E79D03F5DC827C8DF40DCDA4FE0B +:101CD000E67DBD532C84F2EF36B97F78C41949678D +:101CE000BE2E9FDDE416F07B5FE746519DCAD8E427 +:101CF000F62A51837A26B3AAEE28A0236B67FEFD4D +:101D0000EA407D7250EC467A7FAB237DEFB634BC5F +:101D100076478BF0FE4B1D1F1FFE33DCBFBC2B7DB7 +:101D20002FC93E73DD87922CF2F379E46B17BECF97 +:101D3000F9FFF95D624108FAF7BCA3353A6108B9C9 +:101D400063F28359BE759F68A1AFBDFEE1E4F36302 +:101D5000F84F786F6320D085729EE91D22F25F3FB5 +:101D6000BDE6145AEA391A10E8BBA2F58CAE732509 +:101D70004FAE9884EBCD58D79E91E564BD31CE0629 +:101D800063FDBEF1F9E03FA17CF72669BA03969C9A +:101D9000ECED63387EA66BEF64813E88C1FE019D49 +:101DA000F36446EBAF2E998536433B39B1AF7606E7 +:101DB000B15DE0479732C0EF759906BF4BABE8F9CC +:101DC00065E077099E3BF562D689CF839E2AE47F42 +:101DD000E673F4A0DC57E07F7F4EC77E6F574692D4 +:101DE000BB510CDE37F90DDA8F0B4694E13FA7EDBE +:101DF000B99D3F3FB2F1A7C9970CE440E4FA31AF77 +:101E0000265F460718E79761DEB3CF671E4CDC49B3 +:101E100092237D63703C99C56F7802C0BF677D8B4C +:101E200049AFDC23B021F9E2EC268DE663734CACBC +:101E30008CFD2A75F43915B88E2F0F3A1741FBA582 +:101E400057E6B1CEDB408A5CC9679D8920AFC67476 +:101E500008381FC761AC7BE3B17D28037D17800084 +:101E6000D9369DB19B994EE5588D29FAED586EA54E +:101E7000F79575BCBCC0CDBFF716415D6351EF77D8 +:101E8000E45039A850F9727930795132F2F177A8DB +:101E90009E67BECEEB5DE013A87FA88F705CC3D1B8 +:101EA000E3ACA127C2069F9D4DEB581580EFCE35C0 +:101EB000FEC0511EC19F998B383F2F70C76AB8DE94 +:101EC00058D6AC6BAC1B63FD6625D37CA43A3814A2 +:101ED0001A6E3ECCF7AE356F758CCB515887336890 +:101EE000DCECA0651DDABFFBD2FADCD9382F8FC736 +:101EF000BC9183F40902DD5D409F6FC6C41E453A64 +:101F00009EAD75A9B81ECF3EF20AD1353B0F580ED3 +:101F10009E33B7DBED984DF5D2BAEAAA754DA88687 +:101F2000EF8FFFA3EC0732B1E38F34D2FB0772616E +:101F300061C447F2138B45FEE97A6DC5E60BF0BC30 +:101F4000F81189D67BB8E6FC0B2FE23A0B4AA43A8B +:101F5000B2F5C7A93FD930CF75D0DEF1431DBC7FA4 +:101F60006B183201FB894FA2751C7ECE43EB74C700 +:101F7000A62C9A9FB45A297A0EF427D1A11E0AC31F +:101F8000FB8901E607CAB0C42BD9C4770C155F0AD8 +:101F90006A3BF883F59A74C547F7814F96231D3E37 +:101FA00075B3FFD6DB0107DED2CE883FF2626F2722 +:101FB000FD15AC115494BB3935DF7678A1DE523D66 +:101FC0008EB9F0EA9B9E21CCC4B2A03201AFE748A3 +:101FD0007E2F38042A10C695EF5B44F8246C8CD30E +:101FE000EB0F8BF8DC0BB2A30EE8129EC2CBC7C777 +:101FF000C30C229D62AD740AD7E4756F4822BC10F1 +:1020000040A56ACAC9B08FEB5B7526E7F7B305C078 +:10201000D7F0BD57EB34F81FE806E526E45BE45F34 +:10202000DF77E8FEE5755037D0B349FD380171A977 +:102030004F70F7490AAFD781FDD04D3DAE326C6786 +:102040006F951442BCD966AC03B3BEE3358B739C69 +:10205000D8AF0057F573A51686F51D2F627E974AF7 +:10206000FC28202E280932FFB6085CD361ABE73587 +:10207000C45D2E6C778786ED5D2E86FA70FE3EEC91 +:102080008C4632D8F9F535DBF71DC6F7D96A9F13B0 +:10209000BF77C0B262A9F03CAD61732C945F145855 +:1020A000078EAFB4A696CAEFCD00FE85F23F7CC482 +:1020B0009FBF308BA958CE9642CE68D4C77551EADF +:1020C0007E185193FB70FB07C017EEA8E3ED1F804D +:1020D0009CFACCFF7EEE87DF83F1DCFA98C0904358 +:1020E0009B9C1DFF7200DED79F8F26FDBDECD7277E +:1020F0002EDF049F7F2AFDD0AD7BE17A605102ADD7 +:10210000EFEA4357D3CBE1F97BA2B6F928BE0F0D16 +:10211000ED077A1EC83EFC559CF7CB55B03887C0FA +:102120007DE6B5C9D0736679458648B8684528B458 +:102130002505BE1FBF392D4D9CC3E7CF397360FE07 +:10214000A6C57678E6E078DE9518F64F65DFEDC235 +:10215000F6B2963005F9643839F79A21E79A0C3CC3 +:102160007C6E9397CA99476A7A62890F1DA4F7BE5D +:10217000F5D1FD1FA3CE7FF67F57EE7D0CEAFF4C15 +:1021800046F0A92F4139AAE9C1833F86728FD1EF6A +:10219000B36F875E443A95EF8EA6757887DA3AE397 +:1021A0007DB83EBFF96FD3DBF15ADBA879D501F9D1 +:1021B0009AE1F9D31894C76B9A240BEE2DD3632CB4 +:1021C000B8247BB27D9D70F971E9A7209DD491E57B +:1021D000B9E6C2FE2974FDCDA2740BFEE9D9FA500E +:1021E00026AEFBF0A693ED473271DEC22FBC087419 +:1021F000D5DF95FCFBB15D26C6E2FACF66DE8E3AEE +:102200005C87BA4476D98A92983D84CB1C9DB316DC +:102210004DC5EF952751EFFE0BD61F61E764E9FF2F +:10222000A4098877E1D56002CE4B7DC248F6559669 +:102230002E743AB3F1DAA5C14859290BEA73715EDD +:102240002B9CC44772A16AE079D6E0857E9CDE3C77 +:10225000217D1BCA49BD6B2AEAA7D27EFBB1631759 +:102260003D17157A9ED5B4E7871BA0FCF797B3D32B +:1022700045C0E17F32F4D77B62DF161C9FBE395622 +:10228000DD8F38DDA18B38BEF744A50BF96695AB21 +:10229000EF87374179D5976FA6F9C4FEE3785749A0 +:1022A0009D9719AD1F81ED077ECE05B52D43F954DD +:1022B000E5983D28F75845EBACC2A9D85F81FABB39 +:1022C000CAC5AA0817065B67A13D38B55C7315C27D +:1022D000FD0336F9776CC34A929FC76B385F876BF3 +:1022E000BE736206CE73854472C2F41F1CBFBA630C +:1022F0006A12F4EBE70F38B10BECD4840E07E20E50 +:1023000073BECF017FE135AC3F7301FB1F10DC557D +:10231000B8EE4DFC2BF9D21EC3F552BAD0E9BF5B23 +:1023200045B95E355E817E8C37E8DB6EE855A67276 +:10233000BBAACEE9F7A29D7B2DFC60C7A9F5517A17 +:102340007160087CD8706BD4BA50847ECE37E89424 +:102350005F28F2F99516322109ED49E697809E4EE5 +:10236000C56A17DAEB7379AD76E2F5DA41771402D4 +:10237000CE44D06CE04CA0A91F71AFFE33BE0EE07E +:10238000EF6AF46C9C26AEFF65504F64F4676C6096 +:10239000C80F26EE4C2DE4767EAA53CBC3F94D052B +:1023A0003300C7931608CCC3725EEC9384D3A1FEAE +:1023B00062E2D3E00C0BCE59608CDFB413DEF87C04 +:1023C000E05EFC8EE56B0CE7213AA0707C14E47CA7 +:1023D000605EAF03272D2BC4EFC3DF16711E87C3CA +:1023E0004945EB73571652FBC1D5788D6361EE6F8B +:1023F000D2A01F5307F4F2F62C91F8747B5661F7C4 +:1024000007A86F53B95F224F56A3869A77933F4C24 +:102410007DB6CDD0672D2877A1BC3D75643B68ABF8 +:10242000CDFF12E55004E4FB78B792E3C0F59BC101 +:10243000F87C3902FAEFA07C549BF12CEA73959D4D +:10244000EC93A0BF2D77DE7F0B967F5528119DA3BF +:10245000F3ADF65F5E6E612EE2B4C7C1BE477C335A +:10246000E62E260CC9BFB67EC80E00201EE4432B04 +:102470009F3EEEE77EA93715B067A1DE783FB7B380 +:1024800094FC2A100270EDDCD889784AC912FD60EC +:1024900089B16F68A1932856153F1334A083E25089 +:1024A00008F7B9FC62A816E8EACAAFD2D09E665710 +:1024B000A1DDD9C8878CF8F0CD82BD05288F1ECF4D +:1024C0007288287F64C3DF41FD43FBD29F303F0306 +:1024D000E5FA1CD10F629E9D28C875A74179BB57AC +:1024E00024FCB2BD60C3B156F85EAE8DAB443AED8C +:1024F00035E8D398E5609D249F3AC91FD488EB1036 +:10250000DB7784A8FC6221E7C796FCBD4D19F0DD9E +:10251000635E07AD0F9185DCC827F559DC1E8FBAC5 +:10252000BABBD305ED6DD3CA65F4131DCDEA76F7BA +:10253000FAF07BDE4E4B7E0FD5775C4B880AC3FDED +:10254000C70BCA15E483017CA846E1732773137E89 +:102550007C5C134388B3B6E7E776A663BD8CF501D0 +:10256000F286FA73B549A8B735771F223567B09858 +:10257000B5A0BF299FBF9F37A1A700E9204D1169D2 +:102580008EF2A6146948FF16E01BC4F1F29D567E38 +:102590008855A22DF3E94EB2FA9FA41C91FBB7BC5B +:1025A000CCE0FBA09E0EEDB5E6B8FB3693BC65B162 +:1025B000D323ECF168FF415611E10FB2FBA55C6C2F +:1025C0000F9B3493F77F5B847DBE3D9E119E7614F6 +:1025D000F49E46BDE830FC48D13EABBFC89D612D9E +:1025E000CBE81F8AB0AF1D367FD175CB736715C995 +:1025F000731204289F25653AEA49A8B83313F16895 +:1026000042EA1EA4F3AF0C3988343D3463A0BEEE19 +:10261000F2E0AF509ED9E5B95D7E4707B47F21B99E +:10262000374A7FF968DFD373AB7687711D6C76B05C +:10263000BA9968F77DFD5B683755EB2E05ED9BDF9A +:10264000454D08217D07F0961A8B7CD883821FDECA +:10265000BF747A4C48277BA16ADA50745B5D3D6990 +:1026600057FE6D03E5332551C5A121E487B426D774 +:10267000B518FA13CAE0EBE3E96A4701BED716E0E2 +:10268000D7C4C55C0FD8AF21B5AF0BFD62E5BA105A +:1026900072A4D1759E3684BC1CBB58307152C839A7 +:1026A0009B4404FDA53A836317CF42BD25125FB951 +:1026B000806F71BE9C4CEB4479C7DC9E2C37BC5FAD +:1026C00069BCFFCD98A7EF9D8D7627E8419413A7AD +:1026D0002AD6C868F77E7C358EEC8AC763B25793DA +:1026E000BDC8408E24F16FB414C261F45769F05F25 +:1026F000B4C16FE4BB411CF9A440FE28B3BECBD5E6 +:10270000710AAFEF4F5BC2541FABBA09D74F96C0E7 +:10271000B03F6B8DF513F4707F4918BEDD3C7DA092 +:102720007E939F75D64AFDADFCA9E4DF06EF57BA4C +:102730005F277F891B78C305FF55EA8DF4BD378F6E +:102740002932C539640E4E8DF517519FF067A0C729 +:10275000E50A0945293ABC18DAD144171C87A39524 +:10276000EA49057B5D429CA4313509FA6998928358 +:10277000FA75AA82FB632E6B863FE17545AF463939 +:10278000B021D6BFCD3F14BF46F46392A56CF8AB21 +:10279000ADE552DD65594FA7AE1EFE484239A2BBDA +:1027A000D43A687FADEE3A27648FD80ED523AA813C +:1027B00011E501DB15E18F4E1F789FB57E5373A79E +:1027C0000CCC93BD3DFB77E3CBB5B5C8FF97CB03EE +:1027D000F72F26BF4D672DF93BD07E9E8E6A3C9029 +:1027E0007B02CA65A087913FCBDC1E1DE51D08A0BA +:1027F0007FEDF717A647AC33434E9D37E4D49934A9 +:10280000B63A00EBE2831D7172A4DFEA61635D04F6 +:102810000DBFD5998763E4B288E71BD6E43C8CFDF5 +:10282000590DD531905BA5D556BBACA2C56A97B101 +:10283000706A3CE2469C92483903F888F4D4991AAD +:10284000EE07812BD7131EAE27AE258780FD776359 +:10285000D9E17053DC21CF6DEDC75CC5DA8FBBBD0C +:102860008996F27CF566CBFB0BB226599E67B47253 +:10287000BD7219E419E2A1DF891CCFCAAC8A709E2F +:102880009BB5D2B5DBC039470CBAC2E4FE4449C29D +:10289000F5ECA942BB0A7A41EF8D417C28214E8498 +:1028A000250065C9BDF84907C8C178A60A78BF0EDA +:1028B000C10DFA6DEE65A15A68EFAC9397F5452C02 +:1028C00084F653320BD27B37A1FF5342A81AA22BB6 +:1028D0008C82EA1BCFC2549E880A53C225A8D275A7 +:1028E00012D3447CFEA5F595DF41B996C942A7F104 +:1028F0007E6ECC47E38330AFB92BD5EF3AD163A3DB +:10290000FF62FD8939505EA6FED609F4DCDD787AD7 +:10291000FD1158FFB92E1EDFFAD9E27F7D5E87F7E1 +:10292000A72DD25EC37ACE2C66C427D7F20B0FB781 +:102930004ECE6DF21B7EE16C19FB51E65064C487EC +:102940006716ABC41F655766931FAEFCCA4CF20BEB +:10295000DF783B73687E866FE773547FF9953BA9F8 +:10296000BD2B01ED5DE4EF338B396E7BCB194A55FE +:10297000489FB3B09462D11367F0BD61F504EB2BAF +:10298000C1F92B03B9BF0DE55895D280F6759D5F4F +:10299000267966978765EED4CE87E8BD58BF6BCEA3 +:1029A000E075FC0729F02BA43B7B9DA9A67D81F651 +:1029B000DF59C3EF67D2C15C57E67D3B3DAEB54EF4 +:1029C000184BB0C9D17116FC752D7ADBD7C351C332 +:1029D0006F74CCB05FDEDAA45AEC021676C4F7BA94 +:1029E00007E4C3F0F8C4C17A23FA3578FCE74BC892 +:1029F000FF58ED52507E9C89E2F6E3F5F6EFD79F43 +:102A00009F975244F23655217BB79F0E5C6EF5CBF3 +:102A100005AF40F37D37D31D9C295A1D917E1B7B4A +:102A20003B1F7BF67C80FE4F2679AA5C770C3F4EDD +:102A3000532E98E5BA28CDEBC7B8B373E8F114ADBF +:102A40009FE72B22BB797EF77793461F2F6B40FFC2 +:102A500078A47D66FA851C0E1ADF51EF4D7B23FDAD +:102A6000B4F6EB5141FD0A9A5E0545EA0B0ED0EF34 +:102A7000B998607107D221F37EB4BF72F38875D81C +:102A8000BCA25B5ED03D6427E7633FE13EF7F3689D +:102A90004C437BD4A1287B51BE029E9D8B742F2C6E +:102AA000E272A5A850BB1BDF37CB630BB5F991CF02 +:102AB000DF08680B229FC35F9B68C571854523AC07 +:102AC000CF3F48DAE221E779943879FB2675C707CA +:102AD0006028663CE7E1F1C3D39C1FF45C96551572 +:102AE000314F8913FCE7D408BF6B627AD5343FC9F4 +:102AF000B1AA4F2F8EE017336F22A1406328A77E23 +:102B00003786B54A11F860B933F84011C5DFE704DC +:102B1000B1BD877A0415F93E71A19F3063421EF75B +:102B20003FD521DF0F31EF5F2EE276E4D8226D43EF +:102B3000D1AC8171242C58D8590FF56D01C9837E11 +:102B40006CADB88A0DE57F742605A91DA06B0DF646 +:102B5000C3A104A82C79787FFBED8CFE2BE8C81468 +:102B6000D4935CBEB1401AC503B61878658BB29D8C +:102B70006D04BA34A58A2101C671FA731DC5384F98 +:102B80005B04D1BF19D789A6A9492903F2719AAC70 +:102B900074961B78703FF05D6E6C935606E566CDBB +:102BA000EDC7382D53650B7EC21A10179BED377A8F +:102BB00032A8FD26681FDB6BF6383A63A0BD66E6D7 +:102BC000263F46B6A7E318DAA5D91E871F7D41A781 +:102BD00037BC38A5DC83F6AC4C38CD5EFFA1228E25 +:102BE0009332F50F0F1EC7718505CAE7294EEE21F6 +:102BF000FFF0A5D32E8A834885A0B7685D55511E86 +:102C00004AA367666CA4FCDCBE89FB239B0C7FA4F3 +:102C100074AF3F84EB22B180F7FB2177F0259CAFA6 +:102C2000C40211063420A7A3D468A645C8F1E6293A +:102C30008A8CCCDF3CE618C5C51E8D628A0076679B +:102C4000D9CCEF13AE6EB90FEA461C0E7AA87326E4 +:102C5000F9BB78BCDAA667EC78ED94B1BEEEEAFB7E +:102C6000F5C1E34903E394524C3F071F57A67EE8A2 +:102C700018FA4BB6781C0CED8A6BD1E1F486FF791B +:102C80004C83E74F3D26F1B6464F8F1F23FFFD7B58 +:102C9000D18321B81B45DC15ACA220AE4349F6AB6D +:102CA0003322E6FB43836FBE5EA49DA77538CAFA44 +:102CB000DE1ACF74F427366F8C21BBB0197D0AE879 +:102CC0007FDD3886FCFEF6EF2E15717BF817955ADE +:102CD0001FB6E358AA1A725291717D97551F7F1F34 +:102CE000E30ECDC943CB8BDF1BDF3FBD56BB82F468 +:102CF000169732EAC7A97742A9180F782620ABE8C1 +:102D0000A79AF6E8C712DADB8D0BF93A6EECD870A9 +:102D10002C0DFB95EA203FDA4B1D3D84475C517E2C +:102D2000B2EBDA6A834F2C475C3B5EA23899EBDE4C +:102D3000C27963717E54C12F42F99996EDF3C62191 +:102D40009FF98519129485A509863C3959807EAB77 +:102D5000B75333C86EED9A992E603ED6FA02467686 +:102D6000CAFA7D02C52516A6CE7816E32E6752BB99 +:102D7000A53878FFB719C1D98CEA9178FE5DF00AC1 +:102D8000E5CDEC9EC9F5C1FB35DBE7A11D78A98532 +:102D9000A414BBB325B06C1C94EF2C9015BCD1953A +:102DA000944E71CF9D463ED3CE7D8FB38DF0FCD136 +:102DB00016EEC7755C919806F851BA22D0D5E13865 +:102DC0009987ED26AACCAFABE8A6B7F269C9C28E47 +:102DD000230EEC7FC9E453D8DFE67B658AA73FBAB0 +:102DE000101404D2E1B730436903F2CBF4A73FAA31 +:102DF00076BC8F7EC7C61A99A17DB043F0BF85EB24 +:102E00004D8F1715A4E3E9CF717E7866AA4CFCC1FB +:102E10001CE105388EE6DFA72BB85EEF111F3C3AA8 +:102E200016CAF71C14FCF550DE3D755EE73A1C57D8 +:102E30008EDB4FB6BB32487E92FC36DB37E5F7EED1 +:102E40009FF2F8EFEEA2271CD81ED4D527C0BCAE47 +:102E50006F3B773F8EA7A04656912E669ECD17CC2E +:102E6000EF59C7D1B5F0FE17BD1243FCEB6879B737 +:102E7000E1D3F0BE92EBEE93BC83DBFF6C9FC8F412 +:102E800008BADD75259AE911EB3B87255ACA79EE18 +:102E90009B2DEFCF5526599EDFEDFD94E5F97CF58E +:102EA000364BB924EB3396327BC949793C0053A8A1 +:102EB0003FB5AF45939EDFF97702F1C11719CFF304 +:102EC000A1F761BCEB420FCEBB0FC65769E40555B5 +:102ED00076382D793C3BEEFD9A8C72667BD0437A36 +:102EE00076ADEDFBCA25D63C1E5732F79BEEF4CAF1 +:102EF000C467EF953C54827ED886711E86F19EA6EB +:102F0000D2E017972463BE637E16FA5F762A01C566 +:102F1000CFED146FC66C63C9908B511E908B283710 +:102F20004A5CC427BB37B21057AE3017293C251175 +:102F3000E7E962EA07B5B7423BCFE0BC2AD8EF67C2 +:102F4000BB6E453FA6C0FA7826864CFC8C2A11FB46 +:102F500039E1B917BA5E48A279AC7291BF36E04642 +:102F60005C9EB25054904FC655CB16B98C6DA811CB +:102F70007C2DA5AEA96D46BD0E748903BB6747CBFA +:102F80000C7D09D7EBE49F66C5FC7B68D28DF3E02E +:102F9000CAEC6842FF74549283D84A6A7359D69730 +:102FA000391E1A3F8D2F703407FA93A0930F9CE8B7 +:102FB000A147D063F723FFE749D14AD776A26B4BED +:102FC000EE3ACC074950759DF2270DBAA2998EF7BB +:102FD000A30C3A98F568E941CAA70011D047FE5EF4 +:102FE000E3F96C834E0D42F07DD463FA129EDF67E5 +:102FF000A78BA388E931405447B16C198FA45BDFDC +:103000003BB024DE82AFD04D40EB2DB23F12DEB795 +:10301000F64F0E3E17C0FE3D03721DE7E5C0631F6D +:103020007761BCA5B940ECE703DD5CEFC2E0FA0EC6 +:10303000FB388EAE57B99FDDFE1CE8BC15E7C5E92D +:1030400075A8289FEDCFDD8E808EFE9A54D0B3896F +:1030500030CFBEB11FACA0F8F02332CB84F69CAACF +:10306000759CBBC7F0FC9E1DF3B91FB304E443E499 +:10307000FACC5EF804D19BAD03BD0EFAF3DD253C1E +:10308000AE9E2E77DE87DFA56F8862180FDA09E320 +:10309000C5F98D7E308AC7E399FFC91828A78B63CD +:1030A00018DAE53B9CEAD85658373F99DFBB19E35D +:1030B0000ED163258688A5FA50D56EC4874C7093CF +:1030C000BD86783018A127B3E5BEB1E817D85DF208 +:1030D000C75328D7F457DDA4EF0030A463BC731A9C +:1030E000EA7F8C07A5BEE32E237C54ED46BD5B3CF6 +:1030F000FE1D37E6955C6A9188CEC3E97D3B0E7A6A +:1031000074A14AFE3FC24102E1A05F2F19052E546F +:1031100099B61CBF33FD1065EE13445758508A8B87 +:10312000FCB2569C6DC73F42E0FBE41FDEB5D6C043 +:103130004B6FF8DD2E9CEF1BC4454A50139712FFCE +:103140005A71C870FECB41F6D928DB19354EFB9277 +:10315000D388DFF178DDF238B7510E50D95C67764D +:103160003BA6DED083F549563B669ADC497E6596E0 +:1031700020AB88CB72633F24FC03F695E222BF7636 +:10318000E7D457F0F9FDD133501EB915B02F70DCDC +:10319000D7B25FB2D22DF6CB96AC1EC2E3DBC2C271 +:1031A0000C7CE5C06B0F4F8CF4E30E57AF9D0E4DBA +:1031B0004E764898C6D8E2A5691C1FDAF841508FB0 +:1031C000FE1EEBC9D49B38FFA6CD20FF8F1DCF6F0D +:1031D0004B9D31A25DB36DE1201C7FF7D251E0F829 +:1031E0007A03C7D71B387E1BE278A0635916E7CB5A +:1031F0001BC5F15F413C3BA25DA3F371A9DC8ED9F5 +:1032000086768C8A743846F3D7B42E9ADB7B7F3966 +:103210007AACFFF7A487B9AFE55AEB255DECDCEF9C +:1032200041FEFD6717E5F5389051E0BB89577FE017 +:1032300046B9F787653C7F6A9BAF302A87F4A6269C +:10324000603E5AF4D4836EF40BEDF48914BFDBE9CD +:10325000EB7E07EDED665F6EB2A00EB4D3EC3B588B +:103260008071D29D45B94E29E2FE4E072B18CAFF48 +:10327000C58AB93DD55B1A7C7C295C9B33B81D0F90 +:10328000ECCAF31C54AE47D2EFD128CF77D55BC13F +:1032900089CA08FE4BB3BFCD494C75C5617FCA933F +:1032A00051EEAF9810DCB904FBB588F96B55BC063C +:1032B000C416A0430CACFB02B40BBA6EFF08ED843D +:1032C000E4800C7346F5C4CE82F59B67ACA3B6F1DF +:1032D00085D48F4B3E46FEC9A553C384975D45B246 +:1032E0002AA21F31D59F7F1F94938CBCF3181626FA +:1032F000C3F897C8379307F067E36FB8FE4DDA75E8 +:10330000AEEED350DF5AC0492AE2240FC7ABC5F056 +:103310003F9CDF9850D761F48FAC033CAA417DEB12 +:103320007659F1E8E76CF8F34E8C9767E3D59A6F1E +:10333000FEEA5223EF67369B8DF2F757B8FF01156F +:103340005DEB37037F84F1DD872FC2FDFB0DFFA10D +:103350009D9EFAFADC4EE4EB33D5B78D986FF4D628 +:10336000A6392C1FC0CCEB305EBCBEF5773963317B +:103370008EDE56CBEDD33760DDE0FDCE4D0A5DBB72 +:103380003779E97A6493CAF233D18F9B45D7639B2F +:10339000FC74BFB27A01C338F3FAEAF92C1F40D9A2 +:1033A0007DD58BA93C79B968D8B17D12E29F369F53 +:1033B00018223B76516E5426D23749F4234B5FCB0B +:1033C0008E7DB37D4B3E2E33D7D4DC28E4EBF50164 +:1033D0005143BE5659A71487F582DD89F2E14CE0CE +:1033E0009D3C2CFF560D221484F6B91FEEAEABA502 +:1033F000CBD0CE4DF6C9649FAD2FEA781FEB4FF2CC +:10340000013F4007EE0C74BC5F0EE53BBDB25F456B +:10341000B9137C5FC2F96F03FBF029C4F142EB3CA6 +:10342000B4E7F43481219FBF1FD89B812AEF525605 +:1034300094C68537D87F50FED11591EAB7D37B9CCF +:1034400061B7A6A0DD0A7419E708509E500AE0A5EE +:1034500048795352D491EF54D15F178842FB62E709 +:10346000BE459467B2D3B7348AF64109814026D964 +:103470009B1D5EDC7F66E66D35977C3A80F46C1BA5 +:10348000431282B54DD1C6A27DD43C96E77DDEBC09 +:103490008CE3D8E6A9DFF7A21D2B278A8244EB86AE +:1034A000EB3DD31E896A9D4C7AAFCDF01BB61575E6 +:1034B000937E7D0AE8847A900516450DE5AF1CE7FA +:1034C00033F4DFBAA1ED5AB3FE9D5E1FD9F74F1951 +:1034D0007A7538FE1CAEBEBFB49DBA7617B7A31F6F +:1034E00000B980F688DD6EB5DBD5763B16EC6CB2A4 +:1034F000434D3BFBDA76ED3F37A01C69CE71F7B93F +:10350000C82E0DCAE3D206DBB76B7DBDA7D1E8B3E9 +:10351000DBB56B8D3C1BBB3DAB2DB3ED4B01E646E4 +:10352000BA27F157D8A98ABCDA3DC8AFE877A63CDC +:1035300020AD16F570F2D538EA77F2BEBCDA2EC3AC +:10354000AE44BBF054C5E2DA2EA0CBC7869F3AA9A1 +:10355000C86A2F34088CFBC38C78E9CF1FC8CBC94D +:10356000C175076A99DE7FBDF78F98B79264B38BF8 +:10357000ECF90D6C5F843D99CEF3852CF62BFE990A +:10358000B88CA7483135C5B00B91B7BC4F69686F8F +:103590002A22EBC3389EDBDD7212E5EA88F5F07D66 +:1035A000AA84BB4CFBD25DF1B71AFA6FF07EA1176B +:1035B000DFE3DF03A93A31EF8265F071C0A3A3D83E +:1035C000CF3F2D13FAED422565A05EB757D6A2B2C4 +:1035D00007BEEF1FB791AF41EF0903CF1D46FD9323 +:1035E000DBADFD9D16DBD7D38C9397CDF307631C22 +:1035F00056793F75396FFF4E43BEE29FC3CC7710BB +:10360000315FB8AA6129CA2BA00BE6D34FD965B5A3 +:10361000DBFBF1E832AECFB376C976BB9EECEF248C +:10362000833E83E791B747A454F1FFFCDDE8B7C8B8 +:10363000447B1CE31AE981CD584E36CA763F863961 +:103640008F138CA999F4D28ACD2FCC8CF46B048B78 +:10365000319F7E628011EE9BD466ED5F4AEAA55AE7 +:10366000A28FE1C76810C202C6237581557D0FDAAB +:103670009B5063A5674AB1F31CEE2B4D41FF45C437 +:10368000FD1796C50F8E9F0C618FCBC10FC97E6E43 +:10369000F3C9DC9E2F34FC45EB98C59E277E02FAC9 +:1036A0001C2E3AF83E3EDF1A90296E14EDECE3F63C +:1036B0007F9148F95A83F863907D6F2F77104E4BB6 +:1036C000417B9F0D7E3ECE11ACC5FC8D017BFFBBC7 +:1036D000DCEE047B3E138698B2CE4ABF920CD92210 +:1036E00007B3034FF0F70DFB3E6139B74FECF67DA2 +:1036F000B36FAF82F82C5BEEF02AA477FE91F4A6AC +:10370000DD1EEFCF27C620EC28F66165EAC5811CD7 +:103710008E0F68BEA7C97A328E97FD98C7F19CF1CB +:1037200061B21B9CE704D267CDBE1EDA6FE0FCC518 +:103730004D7E248FE92FB0E37EE7BD2AF71319767B +:10374000BC1DEF831D707159F260DCEF5CE48FC526 +:10375000FCF30C5655FC89ECF9541EFFF84BD9F3D9 +:10376000ED465CA1D1C0CB8DA91C2F572D53FAE398 +:1037700081A89FCD7808E004EA6FDD7C45403CCE0F +:103780001C309FE88FD930361EF57BCB521E7788D0 +:1037900015B5ADE8EF06D911DE8F7C1ED87B01FD93 +:1037A0008A4B97C863D18FD3162814316F3529758A +:1037B000FBF3A827DB97BAE9BB9D8B54C20B31A062 +:1037C000CF87C2E58371383C231C2E86380E67B440 +:1037D0008E927C1C679F7A274C71854637DF8F65F8 +:1037E000E2F1C6D4BD47F2B85D4FFBA59276EDA9D4 +:1037F000C7F7D6CE618A1A8FF85B2061B5CEC34277 +:103800001AE2CBF11F1FC3F845F33EC12F403F9A88 +:103810003B0AC506C2976208F1D3FBA985EF615E3A +:10382000EB25C08348B56F247DFC36EAE5C654BE5F +:10383000AFA179CC490D714F731AF36F467E130017 +:103840001FA23C1D2B933C1E8CE73401F9252560FB +:103850008B3F043A1C88E71A158DF05C9BEF6BE4F4 +:10386000E768130227D390691CDA58DC97C16C38DB +:103870006C6D583BF5551C1FC89B10435CF64A3BCA +:10388000D2B5CDEB6184CB5237CB38DEA760DCF10B +:1038900002C623B87DD3B84856295E35B5322B12FF +:1038A000FF8F4BBD317C06F8E7DD2CD3BFABE2BC0C +:1038B000562E64D9A3A8B788E31337FC8FE39E87FD +:1038C000BD98475D9265C533522ACF1FB6DB4B9238 +:1038D000611F4936FBA8A4F8BF08CEF1FFE7C03945 +:1038E00099CB0533DFE3DF16E72CE53827D986735C +:1038F000EE3270CE239F10E7EC2FFEB7C539495842 +:1039000056F8BC5F27CEF1226E9958C428CE3A08EB +:10391000E7D40CC23939888BAE89736CF3F26671C7 +:103920007CFF3C8E0AE71459714EE3703827B5F0DE +:10393000D450386767EA8DE29CC08FD2FE8A38E7A0 +:103940006F86C1393B8B0A03B8DEA217891417CFE3 +:10395000960362138E6B3CF75F148F2F5C8E76DFBD +:10396000A5436ED2173B4B4A14D4973A3030D9E76F +:103970008CE395EC9E789AD76932DFC7C8CEB82819 +:103980001E65E294B640F7D45710C7AC1FE7C77660 +:103990004CDC92E0089C447F65C242D2FC43E116B5 +:1039A000B67C44DCD2F1C9708BEF2F8B5B98AA51A7 +:1039B0001C689511076A33F26D776E7587EA815E30 +:1039C0003F59D29B8BFE38331E345C7D378A3BDFF8 +:1039D0005D663DEFC6ECD7A3C58AB12E386E3A536B +:1039E000A4652DBF8E3C115898F3EE9F49F288FCD8 +:1039F000BE95FBAAE56828BB73DC1DB8BE2BF73D5E +:103A00002C63FC49D9E06628B72BF7D550D9FB9039 +:103A10005BA5723F7FDFB215D787CA2A64CC37AD6A +:103A20005CE73CE784755CB9CB6AAF342D63D4EEB8 +:103A300094903CE4FDBF767FF617F37657A5ABE98B +:103A40002824ED71BBB65701EDC4E17C577929EE0E +:103A500037BEB7BB2C629E4DDCDF18E0B8DF19AF74 +:103A600037621CD02938AA70DF69F1F80D1417BC31 +:103A7000C4DC55189F8675487140586FB4FEECF34E +:103A80006FAE2B331ED8164827FCEF9CAFF078732F +:103A9000BF5D1050508E26B650F236AEA72F2C1FA9 +:103AA000457CEF3FDABAB2F381391FA3FDBE4BE785 +:103AB000FB00B53E8EBFE14AEB32E70A237CAEA0A5 +:103AC0003B11CAF3E0B99A86386E1CC53D3A93059E +:103AD000761394E74927A42A68AA6B8E4B7171BCB0 +:103AE000F537D323FCF05D270097C2F3CF092E3AB8 +:103AF0007F288FBD29E13ED6A3A0CF18E65D1B7EAF +:103B000074F3FC96B9DE6BF9CDAD78F008FE03C610 +:103B1000195A6EE0C2196CE60DFACDBF85F33FF17C +:103B2000EA0F683EBB0AF8790E694EE91E3F8CF732 +:103B3000E00951C57C29B8F27D02552EB2230E9EB4 +:103B4000E87EC707EF1F3C362385E65C4924B9733E +:103B500050559B7DF85E934CF2FEBBBB161F5F0E6B +:103B6000D7EF87BE1CB302AE87F6ED58805773FFC0 +:103B700073E5934EB2A3BED3243F83F6566FFBA4E6 +:103B800018CAF734ECB8D546DCC7CC6FFB8181CBC3 +:103B900012971AF2AB3A99EF8FCE0A9D463D74E622 +:103BA000EB828AFABB54E9730AB4DFE083074EC3A1 +:103BB000FA2F75F7CDC53C13F7E6F3BEA3F07E29C7 +:103BC00062903B187BFBD42F5FC2FD06FF50A91DFE +:103BD000433AFC6C39E7A3CFAED5DE423D63967F16 +:103BE000BC563B11597E60ADF6E3C832FCB547596F +:103BF000F3F67FB67CA4FD5D371A9736C67B2DFEA3 +:103C0000DE2B74FE1DC6CFF4532E86F1E1B306BF42 +:103C100098EFED5D9966397F00FEE2301EB5624295 +:103C20006B2CC6112E082C5C0BD735FBD62CB90398 +:103C3000E6EBC2A38BC80EAED4B9BD7BA1EBF6BF39 +:103C4000C77CBAFB00DF2326BA58BB781ED9BB2D30 +:103C5000406578BEF451BE7E2ADB8410C619EE6E34 +:103C6000E7766AF08A99D7618D5BD9E34FE77FC326 +:103C7000F7E7066DF1A7037240C67843788FC0B6A8 +:103C8000C3A779FA9B8771FFD651588791EBCA8CED +:103C90004FDD683C2A66C5278E4725AC8079B8542D +:103CA0007D9B970D110F37AF83E251E35B69BF1422 +:103CB0009EA38672FDA2F3C6E252F757E7513CCAB3 +:103CC0008C4F3DBFD2CC4B743F8D7AE53C186F28AA +:103CD000C7C382FEF61CE493B7258AEFDC73A86A9B +:103CE0001EDA7566FF82C54E7D32D0A7C2B0FB0FCB +:103CF000BCF6023F9766CA140DD76B85232823EEC6 +:103D00005A63E42596B47FBB7E2CCCE797CBCB6778 +:103D1000E1F8D7B44B16391DD4A7D33EB03AA1353C +:103D20003F01F5D81681E4C43D62AD2301EABD67C9 +:103D30009BE0AF578D4504CF7FA44B7B703DB3957F +:103D4000DC5F73A9FAF051ACDF1E9FE8E79BEF0937 +:103D5000067F9DA4BC3FE41BB4572AB36E67F911DC +:103D6000FD3820571DC5FD8EBDB7BB14DC1FFC857B +:103D7000F687E448F93C1F946E7EA43D648B670C83 +:103D8000CECB2BA3737B06C72DACEF2D5D61B5E3C6 +:103D9000A7C5AA0D98E7CAD2391DE6D7973D7D1C65 +:103DA000D753C56D9F9F0DE5D92BB99F16ECEF3802 +:103DB000C417AB5C9DB3DE433CFD0D17D98DE70501 +:103DC000EB7E8DCD2BB97C9CBFD2B01B354F10FD47 +:103DD0002BE5069D2EEE9BD48079A5E6BED172C35D +:103DE0004EF19AE3AC8A97D1FFB306DE7E6A3A5C65 +:103DF0000D3B7FCD60FB50437B97EA25BBDD6AF727 +:103E0000971B76BA59FF2A7801BF9BF68657C67969 +:103E10005ABF50EAC4F86699DD0E0F435F52A87D81 +:103E20005A5F66BB60476B917636B53B69A07EB33F +:103E30005F83ED6CAE47D63BACE72BBC6CD0E90F93 +:103E40002B3F997DFDF88A91ED6B1A47FA90F4DBD0 +:103E5000D7BF8FD5F8437BB9CC9827186803C65DC8 +:103E6000619C554F0D1147F8D473D671DE75755AA4 +:103E700003DACB6BF07C3878BFACC9DA5F3938A78E +:103E800001F30A2E18EBC1DE9F3CB715DFE27987FC +:103E900091E5BBBDD6F27CD535C8FFE236E72D6D86 +:103EA00070FD079E385F8EF37EB1C5452031E4E09A +:103EB000FBA72FB44BC63E6E6E5FD3BC0E619F9FB7 +:103EC0002FF9EC1994F326EE3DBC6FF163B743B9BB +:103ED000A7C6A9F2739F06C50DF8B961B90A8BCCC4 +:103EE00093349FFB1EF99EC57EB63F2F01FA45C64F +:103EF0003377A2BE043E39ED54C94F707AABACA003 +:103F00003D7CA14D8AB69C235273DB35F433F7FB1D +:103F10004F935B5753FBA2E847BFB31D3F9BF95C30 +:103F2000E78D7CAE5546FBEC75457B18DF37F62BED +:103F3000875B16937D1EDE27EDC58FAB0FD5EC7E1C +:103F4000111E17EF3F4CF94397D645939D3E90378E +:103F500014E0E716B5DD161BB96FCB1E3F080FCE78 +:103F60001BEA5B318ABCA15ECC1B8275D98B79437D +:103F7000D82F336F487FE593E50DD5248E2A6F68DF +:103F800020CF8E9FE3339067E78F8DCCB3AB30E8C3 +:103F90006CE6D9F51A71FFDE96C31F613CE08336EB +:103FA000972AA4A1FFF9978FA21EB97842223BCD90 +:103FB000AE77508FE03AEDFDB640FEF28AB6571A62 +:103FC000304F4F192731CA376F750D996F67B67F1C +:103FD000519F447EE70F0CBFF3B5F4D8BAD08347A6 +:103FE000711D98F9DF156D5C6F29E59E2A69CEE099 +:103FF000F64A50EF45CCD7F5EAB56BE933FF4AEB0B +:10400000793DD7D267AB56F0F3C94C7DC6F23D156A +:10401000A3D14FC832A41FDAE31BD06F380AFD9436 +:10402000CF668F5E3F551AFAE92B2B18B72BAEB728 +:104030005FADF132F6AB1CFB05F2A41CFB953D58BD +:104040003F99FD32F582BD5F6BB05F11E3A9C07E81 +:104050000903FD32F308CF9B79848F49461E612BFB +:104060005FD7FBF87964615B1EE145CC2354512E88 +:10407000DC46FB35FF02F260C3CA51F80DFEBDE518 +:10408000C175E31F3D5E768C6E1E09FF8C761E8324 +:1040900036FEAA130284C3F5DA310CE5FF05C0EC45 +:1040A00028072E3EE822BF200C3817E5FCDE9D22B3 +:1040B000437AFC6C05DF9FF493FDAEE8B067F4E350 +:1040C000DFB25C7B6625EAAD1F05272A43ECBFFA09 +:1040D000108D738B7F90DB81AF2ED75EC0EF464D86 +:1040E000E7BFB8FF8DEF0FAE6CE2FB5D2BD76536F7 +:1040F000E0FE0D947331DEC1FE38766DBC65C357AA +:1041000056FC75D7D58984B7D620DE1A229E61C7A2 +:104110005BFFD1F115CDCC0878EAF03EE91EA46F23 +:104120004F9BC486DE673172D9F417F56AFC5C5B7D +:104130003B3EB3E3A7D34E1E8F3F0D784B87F7F777 +:104140003A037F83F86D6FADE80744843890E6BB8F +:10415000F455F71EF4BFF91E71527076E7CFD7FE03 +:10416000BDEE18ECEF1BC57CFFB7C6D7FFD5E67FC9 +:10417000B47268E01C47E3FC0EF6E1E37743BD75DB +:1041800033799CF1ACA7BB90CE7F0930F253F55444 +:104190006F277C50FBDAAFB64E9E89E70E3BE87C7A +:1041A00025F3771ECC73B75CEC1CD573B99EFBEB83 +:1041B000EDEDD7C7FA05CC7348ECBCDDAD8E81EBD5 +:1041C0004C3F9D03E72A129582343C0F38B015BF4F +:1041D00077AAA25A00F51F567BDE46DC3971A6C8C5 +:1041E0004C7FD8F4887C03B3DEC66499CEADF26D03 +:1041F0009CE9C67CF33A4F420276ED801CF0A29F08 +:10420000A8CEE33FA622DD0B449E87AE0472CA927D +:10421000F03CB9DB28EE3F61A318C0EF9FEEC888E1 +:104220009522E47F4F75BE5B85FBF505FCDCABEDAD +:1042300005B9EE35509ED8C9087FBA0BB8DF3BEA06 +:10424000889A83F9222EE06B0DEA3BAC707F665BA7 +:1042500006F7E3B9524F32CC577232BE6F6F4C60E3 +:104260007BE74328E7EF702918B71D53245BCE0185 +:1042700071AAD673D1126CE7334519FEB828DBFD5D +:104280004756197E931BF7C7D5AFC27CEC09AD53D7 +:10429000D12F9A5220D3EF2448C5AC1BE721B9494E +:1042A0000ADD0D844DCEE2E37FD48877B62D9A3EA9 +:1042B00016EBDD3EFF09DA8FBBBD580CD1BEDFA681 +:1042C000C53968276C85F1E17ADC9139F2EF5E60DF +:1042D000DE0C9EFB52561EFCE6AA087DFBD43A9EDD +:1042E000C774A9E23BAC13E4D8A9EE0E1DF7F9F7A9 +:1042F000FC318EE924973AB43549B41448AF8E2B7B +:10430000FABE761FD98B3C8EDED3349970758C2D16 +:10431000FE1BC3B49FCC867E9D913B74F4EF9D1130 +:10432000D9C95AA82FC6C0333183F10CF346E4E152 +:10433000F4FCF199A880CF103CE6B97930F531331F +:10434000E573383F76BC1363E0697B3F2CDF4F4257 +:10435000FFCF21EDFB33A91D355119E847BFFF27DA +:10436000C8FB61BE6F3EB7FB7FECCFCD714CA9D0CF +:10437000BA56CDC273CF38EE547D4A03EE333DDBDF +:104380009F8FC9F506E525A4E3D52A47CFD4243667 +:10439000609E420FD017DBDAB1F592D3FCDD0C162C +:1043A000E12788CC73C0DF7D091A430DBEF4F19676 +:1043B000C8BC85A737F1F33688AC11F914136BD854 +:1043C00051DCCF3A0EDAE1FB5D01EAA7D0B94AF43D +:1043D0003C586F95FF31D533BAF13C2A587E5513BE +:1043E00061DE27D5D89F3B74D730F4779BF4123821 +:1043F000BD22F7A5BE59AEFD12F97187535B8E71D0 +:10440000E81D8B644557713F6E25EDB39C542CD24B +:10441000CFD54C5236D0B9922C5564992A7D4E7620 +:104420006CB3D1C613C5DD643737AB2969186FFC8F +:10443000C62AEEAFB59F6316A3F2BCA97EB9ED1BE9 +:104440003A2FCB3CA7B16DD12D848B9BC13EC67A50 +:10445000875B5F66BDF6FA1696071C25D08F7AE556 +:10446000209D1F324DD68EDD85FED31491F6CD757D +:1044700027F17305B6168B7B30DED098B181F655E7 +:104480008D29E17EC12DC5A2E13FE0E75E3616F041 +:10449000E7CBCAB5D8127C1E30ED283FED5300BBE8 +:1044A0002809DB33FD3078FE04D2CD3C7FA2BEFE6E +:1044B00020E9C146B4D5A7E3FE8FAFF0FD1FA0579A +:1044C00090AE8D1D49D1193E3A5F87E47226F3DE26 +:1044D0009385F2BC297E3AEAAFFEFDE1E315EAEFEF +:1044E000BD259CCE037A4FA7FE3515F450FCF17222 +:1044F0004056B9FEE7FA25C198AF84C0D774F42BB3 +:104500001CC5FDCFDE083DD6AFEF160D79FE5C7DF4 +:104510006C2BFDCE4E54138FEF4C545808F55B5E58 +:104520008D4672A914E3A17EE4EF1CFABD8A49B05E +:104530000EEE867269AB3F07E937A9AD43273F4CC2 +:104540000197EF669E5C8CAF95CE79895A68D50F3E +:104550002E663D27D37E6EA65662D50B2AB025E582 +:1045600033285C1EE3DFD508FD601F8F792EBCA9C0 +:104570004FCCFB23E8917B717E9F7076D23C02B5D5 +:1045800015E9336CF07EC6E2E1E2DD37760ED568E0 +:10459000F7CDCD951E3823230E64B2E2A22BA3796A +:1045A0003AF300233F6BE398B08EFEFD8B9F65FED0 +:1045B000BDD0CF907E90ECF2B4E98A28D1F9FC46C8 +:1045C000F91155C4DF092A0D868FCD55077EFFC22C +:1045D000C39493ADB7935F3D8BCEF915A3FDB88E11 +:1045E000E0363D4FFD0AA3F8EBB6C05E652EB2F88B +:1045F000EA34E2CFBDBAE31E5CDEE6B97203E77AC5 +:1046000072BFC545873F6E28FBD4BC96D9CEF33C1C +:1046100037FC799EB5B82E59562BD9D7A0F7148CF4 +:1046200073F50AE17118FF7DE1CCAC97DD9FC5738E +:104630003EDBCEF05F1098FEF231B8A665E646CDBF +:1046400085EBDD478E1EC84FA3F33FF939537AE956 +:10465000CB5A063E17A92C9E8DFE1F8847CF2D0FE3 +:104660007C03F900D63D9D9396560B38CBC7E3D417 +:1046700091BF77B31A03D8C9F8BED686FD1AC57B99 +:104680004F62BD5FBD6F2AC9BD0BE817443F73C5BC +:10469000DBB41FE9C23E17DF8F64C8C952633DE730 +:1046A0007C71492CE617F7229E17F0FD2FFE782922 +:1046B0007C7F1670B5A0921F93F28B2FC04C215EA9 +:1046C0009F26F3DF6B60D14CD94FFB85F9EF99A0A2 +:1046D000C144F9D2557D731F467F8CE6E6E7C8D505 +:1046E000449C6B19E1C734DBBFD0CEFD98678DFECB +:1046F000F6FA03E4DFEE65E97E3D69F0FA38BDE1E4 +:10470000660DF1D4531B62FDF43B08FF70752EFA61 +:104710003BAAA13D89F2633EA4BCB18BA75D7CFF9F +:10472000EBFE35B178DE89B99FDDDE1F3B1FD8FD7A +:1047300057BD0BD52EDBBEF6B74A46E1BF4AC5389A +:10474000FDD411E2F336BFD4B62C7E6EACBD3FC9AA +:10475000C6FC3207CFF396443E0F1B97064F215FEE +:10476000D4097E8583038DCE6B36EBB1F349CE6AD7 +:104770001E6FDAB8543B83DF8DE2BDF32511F98F4C +:10478000E67C997EEF8B86DFFBA2C2F7BB9D6DE7CF +:10479000FC05FCD24DFEBA43FC7734ECFC72D1C967 +:1047A000F945AF80B66F46FEE9DB82F3C97247C7B1 +:1047B0002F613C272B825F32419022BE097B44DA75 +:1047C000EF5E5C6B8D5FD8F9A7B4FD260DF9534100 +:1047D000FEF10E6EAFD753DF887E67930FA4E93CDE +:1047E0000F51FA85CB0F9212F34C881F245B7E94F5 +:1047F00074AF5FC1FC8788FCA8B8D5FF067C22AAED +:104800009D84972EC37A46FA9AE7B69AF429DDE793 +:10481000A2F37C1551F44BA908B5B9BE2973F3DF97 +:10482000D1B08F57549506D4B797D14E40FA07F8B8 +:1048300079BD03F5BD42FA48A934F4913D5FCB3E02 +:104840005FF6FEBFAE308C979B712756E5273E1D65 +:10485000EEDCD5034298FCD0FADBFCDCFEE1E43A66 +:10486000FEDE05E62B1C78ED0EDAB77B411742CE53 +:104870006918577B2639329F0E7FD7223F423F9BD4 +:10488000BF67F1D51295DAC3DFABD869FC5E056866 +:10489000143CF72A7775F27F7D3A272ED54A574781 +:1048A000D893200F484FFDF4175C4F69ABB435AB7C +:1048B000C9A97083F946463BD7ABAF1D367D5D3F36 +:1048C000BCBE7E08FB9779E401DAF77EB98DC7D9C3 +:1048D00074275F4FF6F7CDF30B9F5B13D423C7BD4F +:1048E000349EFF7E62D8D9298C84CB6E36CE371E9B +:1048F0006BFCAED785B644867EABA50F723DF449FE +:10490000719A53E176D881D75628C121E8F365B072 +:10491000FF5747E45D3993FC9437B2614DE0491C81 +:104920004F5D6C3495BFB6467BEA7AE6CDAC6FCB73 +:10493000A6A657F1BCC8BA4DAD74C5942104FD724A +:1049400012DC8F905F0E0F3CB7F817879EF7B2729C +:10495000ED45ECC75BE383949764EE67BFD89EB8E0 +:1049600007F1E4C57D970AEF80F296B6C478CCE3F0 +:104970002E2DE576D3858E42F2EF0DEC6BDFA0A0F5 +:104980007F4909065F891CBFEBC92F2BF43B0A9FA7 +:10499000903F418F76633F410F7A71D22401A4F595 +:1049A000A4E1F5E3DAD27EFDF826F66714EF9D5810 +:1049B0001DB15FD2AE47FBE3C7A61EDD373A3DDA35 +:1049C0003B588F12EEFAABE9D17D37E91B47D0A3F4 +:1049D00017AFA1472FEE1BB51EBDB27A14F903D74E +:1049E000AB474D3C3D1CDE029CEE2C9D85E76D32B5 +:1049F000FABDA46C8F3B84E7B00F87C3EF2FEDC7E0 +:104A0000E1D1A523E0F588F7E2F0BDFFEC783D5356 +:104A10005F178B7AF242BB24229F16EFB4F28DE926 +:104A2000CFE8EDE3ED9C8776F421DAB988E7FCC4A2 +:104A30005D1B7FDBF970887D1E9FC57913F6BDF97C +:104A40007B3C17F5FFE3AD9171406F547002FA653E +:104A50007A9D439FB3595939AF02E9F9EA6AD508FB +:104A60003258E52DE0A57506BF9373D6B473015F88 +:104A70007CA1F4BF018E32AF026BBB77367C976CA2 +:104A8000E6FB40C7705FE5C40F3C7C1FA5F7FF0A3B +:104A90006964CFBA693F62F2A1ABB4AF127411E599 +:104AA0008DF6EFAB34FCBAC935567F6C32EB13D2BE +:104AB000D2703F5B2007F759810E3D89E70CFFFC60 +:104AC00081C55DF8FBC6BFC5DFDFF00F3E4F71D07B +:104AD000BECAC8FD6F86DF14FDEC3494887D94A6B1 +:104AE0003F19FA4DFB37FBF751DAF64F261BFE7BD9 +:104AF0007B7F2DF546ECAB9C68B4935CF1074E0FC1 +:104B0000635F65B2DD9F5FD39F5F41FB2AFFC99062 +:104B10009BC4812903F5261BFB2A078DDBF0F7D305 +:104B20007BC2C0F36BEEAB7C8CEFAB9C64DB57F9C4 +:104B3000BF0C7DDE53FAC9F23ECD3CBEC1799F9CCD +:104B40008F0E959AFBD20342807E2FFDAFBB3F694B +:104B5000B87D32767ECF99F25B3AA7D699CAE379CF +:104B60004E635F7A94CAF7C144A1BC86E713022C56 +:104B7000A40AB8EFA5A513FD7E5BD7A12F0FFFF800 +:104B8000BE971483CF0EC8ADC7D055D9B8C8C17071 +:104B90003F76ED6BF777E1BEA72D63F97953ACD87B +:104BA000FABBC5E6FEB371D51179650CCFC3E6FB40 +:104BB000A3936C79F96EE31C18B72D0F4D36E2B54F +:104BC000FF0FEE1E2AAA0080000000001F8B0800C5 +:104BD00000000000000BBD7C0D7854D599F0B9772A +:104BE000EEDC99814C72F3434862C01B9260A84985 +:104BF000989004C102DE408480D80E3F6A7041263E +:104C0000937F75FD067FE37EB1B92101124C24C06C +:104C100024A2B2268071B57579B23EDAADD66D07A1 +:104C2000B054A9DAE8B2B574F92010405B759F540E +:104C3000C5C6ADADDFFBBEE7DEE4CE2401D66E1BFC +:104C40009FC7E39973CE7BCE79CFFBFFBE57D1E7E9 +:104C50004EB83099313687157C6D63EC770D3F6225 +:104C60008399D0EF78DCFBA7B98C55C27F32F8FD71 +:104C70004EC6B4BE28C6BEC6BF1B465BBD76B1CB12 +:104C80003705E6242530361FC03C91BF7B9DCA58AE +:104C9000C13FAEF9776CE7EEBB2FFE761581F4309D +:104CA00056C8D8BCDEDD6B783F94E9753376AC31FD +:104CB0002FC50B700F34B252846F1360287914FE25 +:104CC000276502ADABAAD4127D8538FF4CB2379B65 +:104CD000B1A7717EF6D8F3BC6FCC5FC9B452560051 +:104CE000B0A244A5378DB1A6548985603E93548106 +:104CF000415BA2E66D9E0CE32E16C36C09781E552F +:104D0000888376DB5AC6B643AF25E3BE5F3BA12D51 +:104D100059ABF7E741BBAF2C8DE036671E91E261DE +:104D2000DD9B6DCCC3E01E8E5B74498473A733EFAB +:104D3000EDB41F133DBDD0DEF163E7C0E419D0D55B +:104D4000343521913181B6606CA90F7E047C09C194 +:104D50000B2283FDF602EE6D70DF5CA5AF08FBB998 +:104D600025AAD0041B4EB20F1DFA1AE0747AC51E94 +:104D70003D0DDB5D45085FAE658A18CB58767286BF +:104D80009FF66B752A99307ED01EAAC4FEAE4D2EBA +:104D900086F377B9BDCB3301DEEE599267334C1BF6 +:104DA0002E8BA5F3E7AE94432C7A2CDECC36571E1F +:104DB0004A56E03EDD1BFE74A21AD6EBAF383D48E2 +:104DC0000E8C0DCC5895034D2044E7687232653B3C +:104DD00080BC0A6E28CFC16129F6829348858D0771 +:104DE000D76CE101D8852C02C890DE3EAB58F24B5F +:104DF0002033F6FE860FDC22C07D3256221AE8648C +:104E00009E64402A0B0A3E6A6183642FEC7FE4E1D2 +:104E10002FA60DC0F90EC6AAEB906E4EE70C3C51C2 +:104E20000DEBCE77B23C27BEC7B4E252C4E3E91221 +:104E3000168B70CA7C22DD3BB384693DE3D0AF1F83 +:104E4000E9650AD14532D2E31605FE1BD61FC862BA +:104E50003D8D80C703F50742D741BF5B730EC18B01 +:104E6000B32EC17B0AEFAFB7CBAC971E75C85509FF +:104E7000E372BDC8B6C3FE4FB657E99530DE7B1E60 +:104E80003603589382557A15D1170B3892E0F729DB +:104E9000BE500DF4B7A7650474183F5151AEFF0220 +:104EA000FA9F7E057408FDCEFAD52E064BB7CFBA11 +:104EB00035C50FED7981F3C5EECE2AAD16E0EE2EA5 +:104EC0007206F01C7296CC34A78147FAB7F70EA28F +:104ED0008FA01CB71DCEDDEBF685AEC173086AFF4F +:104EE000660549CF17BA0BEF55375BD90E7D995937 +:104EF000D6A7E1BF65C62CEFF2B68FF391D4BE3AC8 +:104F000006CF23D999867891DA19D163241E1F6BB5 +:104F1000008E768CF663E601FCACD1F39DB77B5333 +:104F2000F0DC7D03550109E444AFDDFB24F69F1A54 +:104F3000581D28BE9E584347F8BD6DAC07CF2F754E +:104F40009AFB6A8A32CEBB5D6E3F957916233E008E +:104F50001EFB5BC23BDF2E97229D5D0E9E895F800C +:104F60002B0ADF00AE392F126EE4BABFD5FC89EEF2 +:104F7000D967F01FFD01A34FC27606EFAA894475D9 +:104F8000F437A9A68AE85511D990631EF27D8F1EC9 +:104F9000423E4B9302BDC8474991F4CEE1D17A1B02 +:104FA000078772D6842F57FC20745D01FF7D75D270 +:104FB00028BD03A8D0D7C8B706FFC0D0D1AF61FEC7 +:104FC000DD86DEC03F2571146E70551543FE061157 +:104FD000A4C68FC737282FCCF969A3E392B1CF3588 +:104FE0007BC2F1313B7AE8ECA3280FBA044F2F10B3 +:104FF0007DA5047AD5A2C75C7E7E0ED93F8A37098B +:10500000E057E37FC04FEF8B81ADB7225E004FBD0D +:10501000C03FB3F63AC2F062C2F9B3415F597BC3F5 +:10502000F1B60DEF8EEB67B19E5EE2FB1EDD9D409B +:10503000E70FA03CC7FE64E84F656CD376D043BB56 +:105040008440E3B7500F087C3FF3DD62D8C85F525D +:1050500006BC4394F9AE2ACB1061FE8E1B72F76D2D +:1050600017F0F74839C3EF133BB25C39F4AD024295 +:10507000E3D076CFE8BBD07C8037F5B949C28C84C9 +:1050800051BA70652887BE0FFD68CD19B0E17C4923 +:10509000D0153CFF55D9B45FFA8277D862E86F0427 +:1050A00078381EBB3EFCFE4ADD9F4253613CC9C6B8 +:1050B000025389CE42FA2D888F2227DD2F460B7F9F +:1050C000AFA8087ABE16F528E98B8017F5D5B64C3F +:1050D0006E2F30EB3D6DF8BCDC3E79DAAE97A05C0C +:1050E0007B3A2D4E001C8EBCCF3D6522C1793A968D +:1050F000F335D28D6EC19339EF569F7D840E9C801F +:10510000B738136DDE3486FBB71FB7F5E0BDDB574C +:105110001EFDC486FABF465605583F5BEE600F235E +:105120009D7D47EC413D7538F656B105CF516FDB9B +:10513000EF80F1D247065FFC05CCFF6C200DB53740 +:105140003BF8EAB71AABA0FF87A22C0FEA21562240 +:10515000B390796FCEAF9A73EEE8FEBBD7CE60F80E +:10516000CEBB607FDCAFB3EE70CEBFA2BD52338941 +:10517000E045CAD7B81AF98C903B16EE3683EFDCBF +:10518000C302D3F2C1BE5AC5583F1293E48D46A262 +:105190007AC8E92B2D033C75167897CF87FDDC6D17 +:1051A0009CD9DDC312CDCFD44B5C681794AE9A1353 +:1051B000C3C6B10747F61FB6D17CB39FE45769DF7A +:1051C000386526D98371C3328D3F304522FE08AE43 +:1051D00093E95E41B7D75B04FB061FB179F613F183 +:1051E00072FEE95A3E93F03E6247F838BC27D73D3D +:1051F0009B8CF01CD36B927DD05EF0299C9F41CE9E +:10520000A310917D4E5A7F601ED77363F530D0A2F4 +:1052100029C7D0AE7B4C247BA4DB030674DA583A52 +:105220003B527F96F4F276B00A1CCAD8F1C8FED37E +:10523000F6903E00FB3F2DB040873296BE3700FF10 +:10524000E9967E8BA43B51DE039D3296025729BB23 +:1052500036D098C1D80D431BC516C443BD8DEED1C1 +:10526000BC4E34EC6B8F13DFADF491356FAA70AE8A +:10527000CFD68A042BF25DEB7E54DFFD03E89EBCA3 +:10528000F7EF96CF47BBEF311B8971930E4CBCC231 +:10529000FB3FCEDFBF9F84CC5FEBDD337D4E11DF64 +:1052A000E5748D48F7F975FD810C942B9F65B93431 +:1052B00034DEABF7EE9470FC6E942B2002EC696741 +:1052C000EE44BC97041D2A19F7BAF65E16F0C75DC6 +:1052D000785975745FF33E7152DF52E4C744103C55 +:1052E0003AC81977A91886F75335FC9D3F7B49E8E2 +:1052F00041788DAFFE662BD99D20971C1E94FF3EF2 +:1053000039258DE4CE51B4771DD73B1494970B8784 +:10531000C430F976C3F0A430B8452C3EACBFC47994 +:1053200055D8FC1B95F4B0F16549D7868D2F57F3FE +:10533000C3FA8959DF0ED7C32FD8CF0E405F837FC2 +:10534000909FFF9E49D437E9B9AA0FC62DF0134BA1 +:105350000332EAF50DBE2892DFD511F3134BFB247F +:105360001FBCF37F94815F7A2DFC781DBB0EE9761C +:1053700096C1472B3D7922F2D54F3A04E2A38A52D7 +:10538000D6031E1D6BB6FB0E25A15FD226B09D6C09 +:10539000ACBFB792A98FCD467BA0C5A6A0DEBD72DB +:1053A000FF6F6809D8084CD31BC90F5CD0F1EE1110 +:1053B000ECCF32FC387F4B51E91C80B32803E8570F +:1053C000C5F36DF2DAA19FAE0A22D2F3BE3246E7F0 +:1053D000EE1F9EB13546A56B4A12D0C922834E6E90 +:1053E000669F4B3170EFEF7CAEC9A853AB2A7D1797 +:1053F00091DECB3F578E621F884F467C58FC5EE2A1 +:10540000C3F7CFB8FB74BC9FEA7912F5F57AD1CD1A +:10541000B6A35C01758174D4D4EAEC6906BCFCD2F5 +:105420007DE1B00F7E9F946C63484797F3FB961A1B +:10543000726C22FF6F564FB8BCF8B38F717DC87C79 +:105440004BEF2C203B2580FE45D53375F224E83BFD +:105450008B9C7DE8F7543DF30FF224D4E3F73A191F +:10546000EAF1AA67EAA99FF49053A5FE889C9AD90D +:105470008A74A0B20A19F9BBAAC67EC60EFE6A15C6 +:10548000DA39E3ED1BC5E30E13FB9B3ACD7B4AD023 +:105490005DE4472A4038E87733D6F1241A2101DE4B +:1054A0006F0A707F165E8AFA53EF672ACA81ABD003 +:1054B000F281BEAB84F56F4EC67E4840BA73435F3F +:1054C000A73E0BD9E2B81F2C9172EC21FCE1EF1939 +:1054D000C6EFB9A01133D6DE1183F799E89CE52019 +:1054E0002F42F196BEC2EDC2C53F7EEB9FD13FFC7D +:1054F000C5A6ABE638D451F8BF78E5B55401C64F20 +:10550000E6FE3C075BF39E66DC608BC2E3065B94C1 +:105510001729AED05C02E6231070735F90FA7A0D03 +:105520005332E1BEEB65D58FFDF5DB9D0ACD4F1003 +:10553000C9AE98B4C9B58F62316CB3617F78F7207A +:105540009DCD30E8CC3CC716BB96D40174F3CBD8C4 +:105550000B629985CECCF31C7AF576D213ADAAD81E +:10556000837647AB7A6979ED44B9196F7D3FBE8F79 +:10557000331BE065E3B84CE3997A8B13FDF5D2B4A5 +:1055800039E4A74C0C2F5C9F8CC04BDD4CFAC469EE +:10559000E893DBA7FB3A6FC1B841AFE041163BFD92 +:1055A000C86DB9C877A77B7FBF85B947D7FFFBF721 +:1055B000764EC77599A16137EEFFDB47F2E93EE70A +:1055C0000F7F69572DF3364A43760FFC7EEB233B62 +:1055D000650DE62F7BE6F7F601E87F00FE92760D7B +:1055E0009EA383E8DB3CCFC6BD9B96229CDA9EC679 +:1055F000ADD866B2D268AF7BEC7D8ADAA744239C33 +:10560000336D99D138EF6C30FF92F83C63EC37D0B2 +:10561000D0F2CA3960E4992C29DA4A87832D1C4ECE +:1056200053CB1A827B36D5FB9D798087B3EFDAF0B6 +:10563000E547E69D75737BF66CAB2374038CFB9B8F +:1056400085676DF09E83005F07FF6FA7DF46F75801 +:10565000D29226637CC6DF1C2BABB08F5F4F5E9A65 +:10566000C4E7F7B9807E9F30F46F595BACAC01BCE6 +:10567000B2963C926F7E85997029EE723938651D1D +:10568000B184D7B29622D947F4DF41702BC03ED403 +:105690002DFA299365B9C6C5E3AAE34EBC6FBBB723 +:1056A000C085F7DF5DE21775B4870B44B2B326C23D +:1056B000E736039F138D07550EAF69E50C17C2DF60 +:1056C0009DAA2E4FC7385C043E771BF8DC7DB34C97 +:1056D000F78E2F61CF22BF217C1DE0BF62E273A550 +:1056E00047403CC497F433A4AF9F22FE80AFDC0553 +:1056F0001EC107FDF8D400433CC41BF803383D8DA0 +:1057000002AEEB67B8CE5DE211705D3CF471BE5B3A +:10571000D569BE892F67AA1866EF31E0B37989DCB5 +:10572000CC45FD2431E902EAEF16E4496194AF73F8 +:10573000E5BE24256A947E1FDDF06FBFF68F172F1C +:1057400034E6DB5980F1381E9FDF6CEFA3FE29B9E8 +:1057500023C70D783F9528327CF76DF6018A8BC2FE +:105760002AC576151B133F35E3C3D3FCDEDFF851A2 +:10577000FEBFA68450EEB07BA33D680F896AE81394 +:10578000D4E717536515ED73D6F1B8867E939D5F08 +:1057900091D953B91F32220F12C2FD1151F5929CBB +:1057A000665E81A1BF73A5EBBE69FCF34AF51720C5 +:1057B00082F0B23189EBA90CE6233D1F9DC594C64A +:1057C000F9D8EFA3B86C6205C858C0CF80A089751E +:1057D00088C78763148C9F304913F7E0FA795329FF +:1057E000FE67BE43AA7EB3F82358B7F863B72A8092 +:1057F0009ECEADCF5B8AF1E15CA0C17E6ECF937C83 +:1058000099487F9D6D48DA5B9C89F2256B6FB1DD0D +:10581000A2BF7441166643DB762807F9FB72FA6D66 +:10582000D0D06F83AF2C984E7AED31AED7CCF96FD4 +:10583000DCFBED68A4E7C1B6FC776E80F39EB8DBB5 +:10584000E6415AF0B3A1B3183CC8297F6C53339C8E +:10585000FF365120FB68E660D7263D15E325CA7464 +:10586000941BBAC8548CCB67E9FB6EAC83F69F2FB0 +:1058700046AB221A72924E763FCC3B8478CD29E714 +:105880007E790E1C105B95BDFE008E676D72537C99 +:10589000EE4C6DE3E644A4B7976455BC1EFDEC9E48 +:1058A0001B11CFEC8B6815E30783B5828CC191F592 +:1058B0003B1EFAA40EEF630F15C66663DC874DA787 +:1058C0007977B828EEB31EE644039CB2A899FB5141 +:1058D000EF2E6ECE9B7E96E45823BDCB7A9B274954 +:1058E000C6F9DB6C0CE33483ED53DFC1F527EEB171 +:1058F000F37097AFA37015F0F382721EBF5E0FE6D0 +:1059000011CDAF76F3B88E317E62BA222BD9A3EFD8 +:105910006D6BCEDB8A72A93C3B304DB1D80D3D1288 +:10592000D80DB0BE3D83DB0DED19DC6E908A80276B +:10593000002FD2BFBC44F4C596834C85FE49BB7A88 +:105940003B8E9F6C95C96E682FE076434FC0116106 +:1059500037F4EF413B7B7F63B8DDD06EEFE07643F9 +:10596000E685C57E5C171419F75FF9790E825D81B3 +:10597000E76B766B4918E7DFC238DF17957B4BCBB7 +:1059800051FE2832E531AEF773BF8025C4111F994F +:10599000EDE5F8A915E54CC1C47246C8B8F032DA95 +:1059A0003B7B6DE0A7807D2A1B722717D81EEFD3A3 +:1059B0002A38094F45E5BEBBCB61FFD60DFF588A9B +:1059C000F71823FF8CBC58AAD44776A408FC89FC9E +:1059D000CA021EA7959FCC73F9422E19E535D3DD77 +:1059E0006CD0120733C73FAB48FFEE5C381F7346DD +:1059F00065A17C8A37CE7BE2ABFC46E4A3CFBF8AAD +:105A0000614D40874E94B7361CE7F63AC613787C52 +:105A100041A5B84DFC71EEB7C7BFB695E207A7EE3A +:105A2000631EE47F733E33E6EB2CA00F24D03E814F +:105A300027C9AE0BCF139C5CE4690CA17D992605A8 +:105A4000367BC2D60BA42F8CF8289D53180B3FC76A +:105A5000B0FB61A888EB974BC72F1C6A441C388B9E +:105A6000CBE90466FE59E26836D42F9A80FAE1D475 +:105A700062A7A711CFE29D40DE1B7AC28493A044A7 +:105A8000C87B6F643C8CBF47362A08805F5ECFEDD1 +:105A900016E7BAC2A5481F175A0515E5D9E927AF79 +:105AA00093312EBAB885FBAB55BAD0E3A07801FB91 +:105AB00015C60BFEDE78BFAA0FFBB7623CCE9F6413 +:105AC00003970EE07D0CF628F4EFA9777B349872EB +:105AD0008685E8707A9B40F1BCB22D8547EF82F154 +:105AE0008DD73B14F4A39B0CFE3856CEF39403A53C +:105AF000F67B4AF137DBC9A5B8AE3C9FCDC0B8C52F +:105B0000C87D5EE27E3BE877BACF463DDC4FBFA75B +:105B100025BC5F8E7EBAE5DDDE2C0FF7CF8F973385 +:105B2000DAD7848FF78A8FFBCBF761519C9F73A4E0 +:105B30007E71BCBC8DF90E8DAF4E22FC7616328E76 +:105B40005FD6AF61DC3E7E9EC3D0775A7421E07B86 +:105B5000BAF1BE07654F23C6573A8B9C43981F9BEB +:105B6000BEF6570CE9F8A82F2AC080DF591D3F4721 +:105B700029FC83E7AED91B7ECEF888B8853BA26F9F +:105B8000CA8BFF32F13497CD257AACCB8F417D683B +:105B9000CA85C8FBBC06F61FEAD19F3438A90D356B +:105BA00028D41E6E48A2F6F50695A1BE3DDA9045B2 +:105BB000ED1B0D1EFAFD58C33C6AABEA6E62C5F9D7 +:105BC000A3785119A7CF332D02F1FBA9E6C13BB150 +:105BD000FF593D8F5B35BEFA0F479371FC09C1E356 +:105BE000A0653C8EE533F0E46F761C7D088EFA0EDE +:105BF000F875C2BCBF7DBCE9268C3759ED53A6525F +:105C0000FCA80CDE89DED5A02733FE5456673BE3A3 +:105C100000BE2D8B788F9A3DF6D13EDE2B62DCE400 +:105C20009F8C0AA31EC2A06B93FE2EA74F52A2B850 +:105C30003D1399EF79BEB7CBBF1DF077E189E43C06 +:105C40008C0F2DA830F33A0119FD92EA1EC6E31B12 +:105C5000FFCBF191917349E3D76D2CA9E0764364B2 +:105C60003C67D4DEFC667927D37E89CC3B8DC2E5C8 +:105C7000ED89E91D37CF457BF52D9B077E61B6D2B7 +:105C8000BEB7B13FA5DFE659C646DFE314E00CE935 +:105C9000558A057D0B470EB2FE246E00790FA11EBA +:105CA000DB7D8BCCC8CE673ECADF1FB9F98B645E43 +:105CB0001F3040F501DD399E131530EFC37621AC5E +:105CC0003EA01BEB03008F0F54707BAF1CEB03E077 +:105CD000FDEC53D6DE5604FB7507A7C6E27B9D7725 +:105CE000FB9257458DCE7388CCD767C4155703FEFA +:105CF0008F4D53935741FF1E63DCC4C32E17F7EF3C +:105D000030AE48FAC598DF65E6DFDA1DDC4E93D485 +:105D10004609FA83B1591E8C3B3E58A11A7852A904 +:105D2000DEA1B3FDB6644AAE19F5091FBABD4ECC6B +:105D3000179F6FB729888FC17A91E09DABE3F981F6 +:105D4000CECE0F0E611E75B088D72B48187E47A5A2 +:105D50007627CFF70DB6FF93D008E34F9F8F62A849 +:105D60003706A7F414A19C7C5A50A91EE15CE9B344 +:105D70004518A73EA74A0146F509071A512F99F57C +:105D80000960A93562FCB95C7306D0DF4AA98BA40F +:105D90001FCD85F1FC142FAF87687FF85901F336CA +:105DA000ED02EBC7F3A4BC76E14F2C174DF4703B2A +:105DB00020D2AEF8B0DD41763CD3BDF78624CA933D +:105DC000931E3BDF261879F235E4974C94CF3F0DB4 +:105DD000723464F1D37DF5E1F43A0A7FC58BA10CEE +:105DE000FE3BE693530C7AA717481CD517296B2F57 +:105DF000D03DCC3C6437E001F5850E78EA1D170FE5 +:105E00001678E0E7A6544CD65C967B9B79E8970D14 +:105E10003EFCE1C8BBF33C36ED0BF26C7ABDA8B991 +:105E2000A2B133407464E615595D78FE1AFF306FF5 +:105E30009D82F405F8FB4905CFABFDB482FB312907 +:105E4000A5B201A747403A1A837FC34EA3F30AA322 +:105E5000E3661E7B5685F7E715006FF64F9E1330FD +:105E6000DE3292477ED8CC23F33CF0D506FE8E4D31 +:105E70001B68C4BCF2A0C0029BF3F0F7F0FD065D06 +:105E8000038D6827750B6C53238C77BB389DEAAD67 +:105E9000DCBE31EF47F351AE2381A4635ED74B796B +:105EA000B45315E974BF74B80FC903496D5600DEC9 +:105EB000B656612ED25D59942063387763C2AACD5D +:105EC000B1D05F96CAF306C7A6E94ECC277737DA7A +:105ED000A82EAADB3DF0F2FB788F46B7A7978DA5D9 +:105EE000A3FF32E4F52EA30E07095CC47B0AE62368 +:105EF000339F08783B67F62A799DD5D5F59A9C8C17 +:105F0000F1C486D97978BCFF06BB1FDFA1DBC5E1F0 +:105F100044EEF3D5D87D9EC1F7384F14016083BF9E +:105F20005F5886BF570A269DE8CC920F8E2B195AD0 +:105F300088F7132A0D7F48DA9787EFDC1DCBE169DC +:105F4000E2D0C255167F43A834F49093CFEB127C75 +:105F500027FE8078E814080F652DE1FCB23128E8AF +:105F60009373D17E0BFF3D3D182EE7DD9582A1DFB7 +:105F7000C2ED76C9949B8CBFB3BF396DFF7661B417 +:105F80007F759DBA1FF93ACF587F6C1AFF7D703923 +:105F9000EBD94CF4C2E97EACDC50492EA4B40873B2 +:105FA00070FD74133FD2EFC97FF5835F8376C2D350 +:105FB00093A72F45B5EEB09C4337F905ED355F4902 +:105FC00034CAE799C6FE0777A5531CEF48C97E1768 +:105FD000EA930DF7A709BEA8B178B99CBF32BD3EC0 +:105FE0005C2EC4D584E757F3B1C0B290DF4BB7DC69 +:105FF0006B37D60DC07BEC4E13A99E6F37D609E0E8 +:10600000B98DBCFFE3C7973CB3DDC817A3DFE2300F +:1060100064D6ED1576BAFFE3055DEC61E407F0E7C1 +:10602000793D4088EA03D85C59E5F5005FD8304FE8 +:10603000B03B68DB87F6B249178E02F07B504EA466 +:1060400082BF13E67FF2FCBFC3A0C7562FCFFF6FFE +:10605000C3FC3FEAE5958B5DE3C5E12782B7A692D5 +:10606000EBCBE64E1B0BF1BC30E13BB896C3C9D479 +:106070003FA4FA840F07040FF273E9BEC1EFFF00DB +:10608000F6FBEC24CF2E8CE6937DB4EEE4BD37B561 +:1060900066168CE691CDFDED18FFB7C49D1E72FA11 +:1060A000CA2A01DFC1042FE513EC18FF47E7F40A01 +:1060B000EDBC43858F135EBB6EE1F98CAEC2DBC8CD +:1060C000AF3F304DA4BCED81F99BFAD17EF8628AD6 +:1060D000E4D1E1DCAE8E0F1EC5BC637A819DEE017A +:1060E0007FC5CCE2AFAE6C0BD962B0B3921971032D +:1060F000DD21CEA356A6F81418B8D8AEF4087A3C21 +:10610000FA2BA935147737ED23C72DEF2DA1F5CB49 +:10611000F97AF7B04EF2D7C5B424A36E92EA2A27D3 +:106120002B12E9CDCEB5FED6D930DFBE6A8E82F60F +:10613000CDDB852EAA3F01BB27D66779BFFF34F898 +:10614000282807A88EB6BB53C64C18737CEF8B1358 +:10615000A8FFD9EA49B45F6FE783493E4B9C2EBB49 +:106160004AA675BD1B38BF9E12594D5FD8B883E84B +:106170003DBB8AF3D9CDB506FFB7F13C6E7A9DAF32 +:1061800091D38144F5767A9BD883F5ADC1B56B5731 +:10619000AD8179C1821B2541A5BAC4E588E7DEB58A +:1061A00022A1B2D7FB5631D6695CF40809489FE6B4 +:1061B000B983D3974AC83FA7E4819C02B85F5E5574 +:1061C00066989F9A08F653C8C2CF090E6D133D4ECC +:1061D000035351AF15D7F37E3A1893F8DEE96B8B72 +:1061E000A99F0872CF85FE7E69878EF95E67862F2C +:1061F0001FF1792456A6B8527A29A78F2002C67BB0 +:1062000078A348AFA5079776605D6EFA711BC33C13 +:1062100046B3DD73186FD09C83B604DC23F6F87A9E +:106220005E67091E24F1F7C05DD8BFF9CB1401E504 +:10623000E5CF2B79DED9A58AA3F108940118CF8781 +:10624000F73ED43EF7373588974207F9730B342F62 +:10625000F51794CA8060A0D7F9EFDA10DE17171986 +:10626000EBB8449E63223A0C96C2402ED6E7F6AFB6 +:10627000C5F7D087458A672E18EA273A8C2F51E751 +:10628000201E824BBD2971F08EEBAB381D75269C0C +:106290006B8A413C14009DE23D3B6FA5FAE460A28D +:1062A0005488F31FB845D405D4CBEDB7F6A23CD142 +:1062B0002B259E87C63A66A4BF5B245E7F93E04988 +:1062C000B1EAB1039D4B67A1BC003A368C97C32F4E +:1062D000A2BDB8E88F93781D6F2D23F974C0E5F93E +:1062E0000DD6DDEA853CFEFA7ABBCCA200AE9C5C02 +:1062F00071C0417EF0EDA1B7709F76FE6E29F55F0B +:1063000034233DBD23B021F47B3191CBE3E15CDE4E +:1063100098F18455863C3C280F3593DF60C413BA4E +:10632000DAE27E86F9F3AE24904620B1BE5B1C1EF5 +:106330003F403B0CFDD874C38F5D382485F9A72CF2 +:10634000CAB319EF7DF3E2795417971EE1AFA64463 +:10635000F4FF5869F8AD469CE11BD4F18B5585A339 +:10636000F182EE0207D53775D57FDACAEB5E45D2EA +:1063700093BD41FF9B59C867D0B7CAD9C8F61DC3A2 +:10638000FEEE0DAEA67887AA0C34A3FCEAAD63241A +:1063900007BB829FBE8EFDEE1A5E47BFCDEE4D411C +:1063A0003B3E61CF6416CA47F8F796A268F07A457B +:1063B000DD01FAC3AB95095639F36E03AF3B3DD00F +:1063C000C6E14F740E135E773D9F17F4CE715BE10B +:1063D00098ED7103DEC83CAC87C81E2BEF22E19A12 +:1063E000FD472BD3B9BCF4FA097E57C18D2E357BFE +:1063F00054AF2C58D9DF8439B54505A0B5C4B17A5E +:106400006544EEEC30E44E1BEF5F0D7C8BF479B508 +:1064100077752CD243E65A494153D919ECD05C1612 +:10642000B9D3E5F63D8175E7DDABA2884FBAEC5AEA +:106430002DD5A9AD4A1150FE1D897D90FCDEAB53D0 +:10644000130584775315D7BF009FCBABA0D8E312B9 +:10645000D0AFE2754817415EE17BA767FB928B0CDA +:10646000FD81EF1489B789E4D002AD9FE418C91DFE +:10647000807B685D159DCF944BBDEB64CE9F857688 +:10648000DAE7C0FC3377E139BEF87212E99985ACDE +:10649000BF698278DF25E5922907FEB3F2F08B7A97 +:1064A000C628FE1F98727D8A0AF00EB887D679B387 +:1064B000C7E2FF4AF5FF4AC6E33C91DFA9DC6DE085 +:1064C000F36DBF7617F2D183558CC739DEEB70229E +:1064D0001DB566AC76225DCCCEDCE544BA68EDDB5A +:1064E000553203E561AA4474F542DFA736CCBF38C4 +:1064F00032E7F420ECAA4ADF835596788223F35ED4 +:1065000005F3B62B59878E7E1356E0F626509D92E2 +:1065100013FD445786467548DB32791DD25355A288 +:1065200061477750FEA4D5B09F337D4E0DF1DC9AC4 +:106530009AB40FED8115E2BE8C9D30DE6E9CFFD7C4 +:106540001997AECF8832EADA2619765594D4C1F07D +:106550009D9EAA5269BF4919E1756D1B32FA8A45A1 +:10656000186A75733F6485CCE5CB8AADB1FB9A2D73 +:106570007667A7B1FF73E5DE20E26F45221830731E +:10658000102E33FD9D00FA5DBCFA13CC49BBEF29F8 +:106590009CA765707A7524F17A4A3BD34268877D5F +:1065A00055AEEDADA2F7E2791E204CD69B37F63EF4 +:1065B000078C7D37966BFB11DE0BB85F21E6973AAF +:1065C000885F7299E86942BE8CC80F8DC9E7BCA686 +:1065D0006898FF36F3D04D8181971F45FDFD0DF37F +:1065E000C2DFADD05EA2F3FBBD3FC4B639F6878CE7 +:1065F000EA1CAE305F7C6C9A9684746EDA89CD8624 +:10660000DF79B0482BB5D2FF31E3FEC70C3D2D95A5 +:10661000DA898F0EBEBA42194FAEDEE7F7BD596573 +:10662000B19F24C543F51BEF1A78BBDCFABD7EDFB2 +:10663000BB56BA96148DFCAA15327F270170D594EB +:106640003CCA8F6FB240DB3AC06315D217E2E3B9A0 +:1066500077A390DE57C83D191D16F97A397CA8D961 +:10666000BCBEA7491129CE762A4A5C4B72AE99D797 +:106670005B46F2B3D962BCDB2ADF30DE6DB5173181 +:10668000DE6DED63BCDB3A1FE3DDD6718C775BC753 +:106690009F2BF75D447C60DCDBFA3BC6BDADEBCAEB +:1066A000FCDE3FE0BC65D32AA7201D9C28D786B11D +:1066B000FF0DF4FCD7B8AE6A9197E863CB144E1780 +:1066C000B7AE3B4FFED59684843CAB5ECFACE6F4D0 +:1066D00001EFE6ACB6BC9B3D81BF9B9AAD39D310B0 +:1066E000AFA5DCBF3915B5FA92F263815107B0103E +:1066F000E407B68B8627537BC3B08B5A6D389EDA7E +:10670000A2E1586A170F5F45ED92E1646A8B87D367 +:1067100049EFDE389C46EDD2E16BA95D363C8BDA61 +:1067200092E17C9AB77C388FDA15C3DFA6F6A6E132 +:10673000F9D4BEEDF7AAD540A7554F3C108578FC9B +:106740006E857706DEAB8505C85F027ECBA8A6F80E +:10675000411FC378DBCC6A4ED70F966B33711D7B1C +:10676000CDF8AE50043A2AC03A145F36CD8FCC1F14 +:106770002B47BF44BFF7A2DFE7A1754EA753B2D6A0 +:10678000932430E29B35E55A1EADFF2BD78F1C4C6E +:106790001BDA807AE0BC210F324BBFE75AED86FB53 +:1067A0005673BE3F38D3B46F87DC684F9F5ECFBF50 +:1067B000FF61C1F871E1DB22EA39DE33EABA6C929B +:1067C00087F4816D58A6F132BFCF8BF75B21078E1E +:1067D000AF42B93FC3E66956B105F91E47727A5513 +:1067E0003597FB6B084F7685F222A723F2F380E7FB +:1067F000DB693C02CF58FFF39045EE02BEEF207CF0 +:1068000022C213E93B10FADB58CFEB68BF299E1F69 +:106810002C37E26A063E26C24B24DE4DB902F7FB56 +:106820003F78FE90A450DEA6497D59C3D89D6B48A1 +:10683000D76288BF7DF7E3B91DC3DE500CED5E362D +:10684000053FA4003E7F00D77D033EAFAF263EEF5D +:1068500027FDDFEEEE4FF2606BE7FC7E6C5A7FA9FE +:10686000D7B2AEA3DA46E76DA9E676C39B519B5F2C +:10687000C790D2828C7E1BB65F95FB5A10DEA2D4E5 +:10688000A125782549014F281BF5493FE91394FBC1 +:10689000D74473B9EF1F87FFEFF3FB3BAA23F4063E +:1068A000CE03BDBBF32FA17FE0CB2768FD15F2819E +:1068B000E53DF6E3BA37541B7D9FD30C7A80BE17B3 +:1068C000F57B9FC173BEA1969B72B6B7FA9BC9D9DF +:1068D0001748CE2CF2703D9CC6ED2FBB22EA53091F +:1068E0004FB72B65E3EAC7B297AD7842395B963D67 +:1068F000AEDCF9F178FC60913B3F25BC4C2C774233 +:10690000B4FE2FE50703EFFF5339740A7F9A3F2A3D +:1069100087FE5FB511779D480ED5C58FAB9F6DA8DB +:10692000472C7ED8583924D138BCF769C487264D06 +:10693000285F2E8C27C7C7912FBFFBABCA17E39EDA +:1069400013DD37129F0EB681EA5764E5B157CEE5E5 +:106950008F378FD7AD6008F66B8A07A62A142730C9 +:10696000F635E164BE5EDF8D753E177589EAB4F4D5 +:10697000C5817FC2BEBED9A1A0FDFBF8E4EF75E3DF +:106980007743759253E111D8C075B8EF6EC36F8627 +:10699000FE6CEADB19E55DF15CAB2C75B7F135DC1B +:1069A0008E88C773C65FFE5C87FD5A420DE0235E8A +:1069B000F6B199B0FFCE59BC2E4D8D52D655A09F41 +:1069C00093E4243B2E7ED9AD4CC7F789E17142C6D2 +:1069D0007ADE4883F1ADB344FE5D9EE453F11C5B67 +:1069E000319F40F9BEDECF31DEAC321FADDB56CC7D +:1069F000BFF7694ABDB4DDD2D210FE9DAB2D93F531 +:106A00003872ADFD60097E77D801FE08A2A3A3D835 +:106A1000AF20DDBA32E1DED7E3BE07EEE779CC2165 +:106A2000AAFB9217AEBE64DD7A73C47E52022B427B +:106A30007984B15F9457B69CC4FDD6EF098B6BB9CE +:106A40001E7FD4A82B9614AF86F1B46DD3AAF2F1B1 +:106A5000999D8AC62EC07ECE042F1B84765BB2938E +:106A6000F20937DA16781703BE76AA71B1FCFB0279 +:106A70001ED7EA34E87A512DD707ED0D1DAF9CB330 +:106A8000E37BB7500B5CAA635D559491078E777AD0 +:106A90008400C66F56C2B8C58E8D2E8075163B76A3 +:106AA000AB7B84BFE93B313B6B71A21FFC5801A358 +:106AB000F7DC31EF53FA5D650354DFBF63DEA5DF1A +:106AC000C5FCFE785783330C5F23E3D30792B00EE7 +:106AD000FFB1C2813DE5808F9854A7A704F6D9BDC8 +:106AE000D0CBDAA0BF63BE687C57E7A1BC687CB19D +:106AF0007806E34D3BE6C339B2C79EC371F84BAA93 +:106B0000C38E918618C28D51DFA37AEA2EE31CCB87 +:106B10000A020CF39031C76D548714834558D04F47 +:106B20002CE0F1EDC6E45F85ECB8EF06FAC6966D91 +:106B3000B573FD1CB5E0C249CC8B4F29381A5E876E +:106B4000B496E74DCC3AA4A9A572985F80F574215C +:106B50004B1C308A59EAD4F05EB6F5978C8FD59DE0 +:106B600074FDEC75CB7B35D784C7112FB7FE0F0DA5 +:106B7000CE9FBD0EF4B0F332EFD4D6308FF0B3B366 +:106B800041A376474309C5079F45BD6AA91B9E6976 +:106B9000C457B63ED2CF5643EB0E3DCC6600BF7C09 +:106BA000BF86EB87671B9C8275BE630F1310FF20A7 +:106BB0003D05ACA3607B18C577B7677D7A04E329F0 +:106BC000178B67ECB759F8C48463F69F37DE6D7B8B +:106BD000168FFB3D5F2C96205F3C2F754C8ABBC403 +:106BE0007DBEF54C78DEC0FCDDE48F117E11988609 +:106BF00049DADDB15C2EB6875AA98E56399EBEDFC2 +:106C00006539D7CB359C7FE35120A361A885E7CBBD +:106C100076E4C115675F9EBF4C783B17B2E9588791 +:106C2000BCE3469E378C59A424AFB6BC63BE212F6B +:106C300076C67279D1368D25AFCE1E3BDE61E48FEC +:106C40003B5CACF4C571F0915FCBBF536833F2D6B7 +:106C5000E6FB8D8E3B094E7EAD21FF558DBEE78E46 +:106C6000D79C434D542FFAB17EAE80EA2AE87BECE4 +:106C7000C8FB39D88DCC45791D46F1E8C8FB46B133 +:106C8000B67ECA2FC2DF5773B10E8F91F28E622784 +:106C9000F57309A3DF79471584F3CDFF942F3E30B8 +:106CA000F9C2C55C9C2F568A5BE0DC170BC41E92B0 +:106CB000C9CC278EF79D89C91FECBA4BCBFB1D0DA4 +:106CC000E1F52A916D4CF4908FE531F6E70FEBEF8B +:106CD0006F5E4078267DE6F8EDB6FBF13BC01FDB2A +:106CE000B5FF467DE964DCBF285B20EB36FCDEBAED +:106CF000D9FEF148DE01E82866122BF38EF38E6F81 +:106D0000D9178BB5E4F7C23D72C6BEE3C8390CBAD9 +:106D100088A473A0DB109B83EFACF278F665E814CF +:106D2000F0C730FF71D1CB087FFA614118B19BA841 +:106D30001E1B8E32D708FD09282B75AAF3887C9775 +:106D400064A3FE83BECB033B621A1BA0FED598054D +:106D5000B561CA42A5361DBF9F48C7EF817CD4BF2D +:106D6000062BD9F0BB52D643EDB52C44E339182F8E +:106D7000E44146FADE777688C715F3984A89E57CC0 +:106D8000A6D918959EF8A87F1DD3A99DCF7CAF9C4E +:106D90008373EE585895877A3AA7D6A8FB1CA1971B +:106DA0002B93A38B30E981769DCAF31E5B931F9CC6 +:106DB000288E767DAD353E9CCAE33113BDDB328330 +:106DC000FF1EB57BBC683F3CEA9628CEFE68DAF829 +:106DD000F528D7D770BD2FDB7D545F6533EC986500 +:106DE000B5535F0213913545F9283EDA9424537D5B +:106DF00082695FDDF4DB98971AB3FFF7ECD23FDAD4 +:106E0000B45B6A0BC719BFC2B8DFB3F89FF3D1BE3A +:106E1000D7EE407C99DF733A35A6E8F3B1DF41DF66 +:106E20007346D5409F7FDFD948DFD5F89807C7C1A3 +:106E3000DEAF25BE603CDEDB047489FF5F0CB3EF80 +:106E4000F319FD3D715764AFB395817594E731FC3B +:106E5000B8F5B5BEFBE97E1A5325AB1FB71EFCB8CB +:106E60005CBAFF03B8BF62F2B5334AB7458FE56B32 +:106E7000A64E8B457A1BE19F2BC4CFEF509F825FBC +:106E80007BF07B2119E5C2DDA137E9FB83BB9FFBCA +:106E900017FABE6EA3E12FDF65D015AB2FA4BEECB1 +:106EA000130FE33D3EEA4BA7BA9D8FFA6C64E77C73 +:106EB000D49CB61F2FF1D10B9F71FD0BE3FC7B908F +:106EC00046F3FF63417524E6F7656CA5A6CD27BFA1 +:106ED00096FFFF3F4C7DFCD10B6BB83EEEB319FA29 +:106EE00098D7AF3CDF778D8A745BF9F512F67F7126 +:106EF000DD12A707EBEF2A1FFF24C76FA1E348FDB0 +:106F00002CAACAD67F253D22533D9089C73178519E +:106F1000C6D4BD507D8D79DEF35DD752DD4B33D8BD +:106F200077B64BE4CFA53E077D3FF0B19DFD488885 +:106F300019076EC47B47BEE7FA5AEFCBF8EE42DF83 +:106F4000CF890EC6BC6FFD942BFB6EEC0AE7B5181B +:106F50007C0207A53AC3D8D07CB2736D9A47C3EFC1 +:106F600034638B3B9835AE93E65DFC069E2F5652FC +:106F700004940FB1AA411FEA9CB0FD8ED486D7C5F8 +:106F80009AFB99FDFF0F5E7DE7E5804E0000000053 +:106F900000000000000000000000004000000000B1 +:106FA00000000000000000400000000000000000A1 +:106FB0000000002800000000000000000000001099 +:106FC0000000000000000000000000400000000081 +:106FD00000000000000000100000000000000000A1 +:106FE0000000000800000000000000000000000099 +:106FF00000000000000000000000003D0000000054 +:10700000000000000000003C000000000000000044 +:107010000000000000000000000000000000000868 +:107020000000000000000000000000000000000060 +:10703000000000000000000C000000000000000044 +:107040000000000E0000000000000000000000042E +:107050000000000000000000000000180000000018 +:10706000000000000000001C000000000000000004 +:107070000000001C000000000000000000000013E1 +:1070800000000000000000000000003E00000000C2 +:1070900000000000000000010000000000000000EF +:1070A00000000002000000000000000000000001DD +:1070B00000000000000000000000001000000000C0 +:1070C0000000000000000050000000000000000070 +:1070D00000000000000000000000000000000003AD +:1070E0000000000000000000000000AB00000000F5 +:1070F0000000000000000008000000000000000088 +:107100000000C00000100000000000080000C008DF +:1071100000100000000000020000C000001000008D +:107120000000001000009C080004000000000004A3 +:107130000000C08000100000000000040000C088B3 +:1071400000100000000000020000C08000100000DD +:10715000000000100000933800010004000000014E +:10716000000093400000000000000002000093486F +:1071700000000000000000080000934C0000000028 +:107180000000000200009350000000000000000812 +:107190000000969800400000000000400000935856 +:1071A00000800000000000480000945800400000EB +:1071B0000000000800009468004000000000001873 +:1071C0000006301000280000000000280000995040 +:1071D00000080000000000010000995100080000B4 +:1071E00000000001000099520008000000000001AA +:1071F0000000200800100000000000100000200027 +:10720000000000000000000800009BB80000000023 +:107210000000000800000001000000000000000065 +:107220000000000200000000000000000000000359 +:10723000000000000000000000000004000000004A +:107240000000000000000005000000000000000039 +:107250000000000600000000000000000000000721 +:107260000000000000000000000000080000000016 +:107270000000000000000009000000000000000005 +:107280000000000A00000000000000000000000BE9 +:1072900000000000000000000000000C00000000E2 +:1072A00000000000000000010000000000000000DD +:1072B00000000009000000000000000000000002C3 +:1072C00000000000000000000000C4C0000000003A +:1072D000000000200000C4E60000000000000001E3 +:1072E000000060000020000000000020000073008B +:1072F000000800000000000800009BF000000000F3 +:107300000000000100009B90000000000000000849 +:1073100000009B93000000000000000100009B9112 +:10732000000000000000000100009B96000000002B +:107330000000000100009B9700000000000000001A +:10734000800000000000000000000000800000003D +:10735000000000000000000000000000000000002D +:10736000000000000000000000000000000000001D +:10737000000000000000000000000000000000000D +:1073800000000000000000000000000000000000FD +:1073900000000000000600000000000000000020C7 +:1073A00000009B98000000000000000100009BD836 +:1073B0000000000000000008000000530000000072 +:1073C0000000000000009BE0000000000000000240 +:1073D00000009BE4000000000000000100009BE5AD +:1073E0000000000000000001000000090000000093 +:1073F000000000000000000100000000000000008C +:107400000000004400000000000000000000000137 +:10741000000000000000000000000050000000001C +:1074200000000000000000890000000000000000D3 +:107430000000995300080000000000010000000057 +:107440000000000000000000000016C8000000005E +:1074500000000008000020080010000000000010DC +:10746000000020000000000000000008000017D00D +:107470000008000000000001000017D10008000013 +:1074800000000001000017D2000800000000000109 +:10749000000620780038000000000038000016E0E8 +:1074A0000000000000000002000016E200000000E2 +:1074B000000000020000A0400000000000000020CA +:1074C0008000000000000000000000000000E0005C +:1074D00000200000000000200000F3000008000071 +:1074E00000000008000016F800000000000000D8AE +:1074F0000000173F00000000000000010000171707 +:1075000000000000000000018000000000000000FA +:1075100000000000800000000000000000000000EB +:10752000000000000000000000000000000000005B +:10753000000000000000000000000000000000004B +:10754000000000000000000000000000000000003B +:10755000000000000000000000000000000017789C +:107560000000000000000001000017B8000000004B +:1075700000000008000000510000000000000000B2 +:10758000000017A00000000000000004000017A485 +:107590000000000000000004000017A80000000028 +:1075A00000000004000017AC00000000000000080C +:1075B000000017980000000000000008000017C835 +:1075C0000000000000000002000600000040000073 +:1075D000000000400000C00000400000000000402B +:1075E0000000C02E00400000000000010000C000AC +:1075F00000400002000000010000C0010040000245 +:10760000000000000000E200002000000000002058 +:107610000000E204000200080020000280000000D8 +:1076200000000000000000000000E2000008002050 +:10763000000000040000F500002800000000002801 +:107640000000F64000100000000000100000F64AA4 +:1076500000100000000000010000F6C00020000043 +:10766000000000200000F6C0000200200000000220 +:107670000000F3000040000000000040000020086F +:1076800000100000000000100000200000000000BA +:1076900000000008000011A8000800000000000120 +:1076A000000011A90008000000000001000011AA5C +:1076B000000800000000000100004000002000045D +:1076C00000000010000059000030001800000010F9 +:1076D00000005908003000180000000200005700A8 +:1076E0000008000000000001000057010008000031 +:1076F000000000010000115800000000000000011F +:10770000000011600000000000000010000011AC3B +:1077100000080000000000040000400000200000FD +:1077200000000020000053000010000000000010C6 +:107730000000000000000000000000000000000049 +:107740000000000000000000000000000000000039 +:107750000000000000000000000000000000000029 +:10776000000014700000000000000001000014B0D0 +:1077700000000000000000080000005000000000B1 +:107780000000000000001478000000000000000469 +:107790000000147C000000000000000400001480C1 +:1077A000000000000000000400001484000000003D +:1077B0000000000400001488000000000000000821 +:1077C00000002AF00080000000000080000000019E +:1077D0000000000000000000000020080010000071 +:1077E0000000001000002000000000000000000861 +:1077F00000002C70000800000000000100002C7147 +:10780000000800000000000100002C7200080000C9 +:10781000000000010000415800380000000000385E +:1078200080000000000000000000000000002C4468 +:10783000000800000000000200002C4600080000C4 +:107840000000000200002C540010000000000004A2 +:1078500000002EB0000000000000002000006000CA +:10786000002000000000002000007300000800005D +:107870000000000800000000000000000000000000 +:1078800000000000000000000000000000000000F8 +:1078900000000000000000000000000000000000E8 +:1078A0000000000000002F58000000000000000150 +:1078B00000002F98000000000000000800000050A9 +:1078C000000000000000000000002F800000000009 +:1078D0000000000400002F840000000000000004ED +:1078E00000002F88000000000000000400002F8C22 +:1078F000000000000000000800002FA800000000A9 +:1079000000000002800000000000000000000000F5 +:107910008000000000000000000000008000000067 +:1079200000000000000000000000312800000000FE +:107930000000000800062A20260000400000000881 +:107940000000A0000000000000002000000040C176 +:107950000000000000000001000040F000000000F6 +:107960000000000280000000000000000000000095 +:10797000000060000020000000000008000040003F +:1079800000080000000000010000400100080000A5 +:107990000000000100004040000800040000000258 +:1079A0000000406000080004000000040000408067 +:1079B0000008000000000004000040000008000073 +:1079C0000000000400004004000800000000000463 +:1079D0000000404000000000000000080000404897 +:1079E000000000000000000800008000000000000F +:1079F00000000010000050400001000400000001E1 +:107A000000005000000000000000002000005008AE +:107A100000100000000000040000500C00100000E6 +:107A200000000001000052C700000000000000013B +:107A3000000052C6000000000000000100003000FD +:107A4000004000200000000400003004004000203E +:107A50000000000400003008004000200000000288 +:107A60000000300A00400020000000020000300C3E +:107A700000400020000000010000300D0040002008 +:107A8000000000010000300E004000200000000156 +:107A900000003010004000200000000400003014FE +:107AA00000400020000000040000301800400020CA +:107AB000000000040000301C004000200000000412 +:107AC0000000C00001000080000800040000C004A5 +:107AD00001000080000800040000000A000000000F +:107AE000000000000000C0680100008000000001EC +:107AF0000000C06901000080000000010000C06CAF +:107B000001000080000000020000C06E0100008043 +:107B1000000000020000C0700100008000000004AE +:107B20000000C07401000080000000040000C06676 +:107B300001000080000000020000C064010000801D +:107B4000000000010000C060010000800000000291 +:107B50000000C06201000080000000020000C05070 +:107B600001000080000000040000C05401000080FB +:107B7000000000040000C058010000800000000464 +:107B80000000C05C01000080000000040000C07C18 +:107B900001000080000000010000C07D01000080A5 +:107BA0000000000100001018001000000000000498 +:107BB0000000109000100000000000040000109869 +:107BC0000010000000000004000011100000000080 +:107BD000000000020000111200000000000000027E +:107BE0000000111400000000000000020000111647 +:107BF00000000000000000020000604000080000DB +:107C000000000002000060420008000000000002C6 +:107C10000000604400080000000000020000604610 +:107C20000008000000000002000060800008000062 +:107C300000000008000060000008000000000002D2 +:107C40000000600200080000000000010000600465 +:107C50000008000000000002000060C000080000F2 +:107C6000000000080000610000080000000000049F +:107C700000006104000800000000000100006140F5 +:107C8000000800000000000200006144000800003D +:107C900000000002000061800008000000000004F5 +:107CA0000000300000080000000000020000300268 +:107CB000000800000000000100003004000800007F +:107CC0000000000200003040000800000000000238 +:107CD00000003044000800000000000200003046B0 +:107CE00000080000000000020000366000080000EC +:107CF00000000008000030800008000000000002C2 +:107D0000000030840008000000000002000036A0DF +:107D1000000800000000000800008040000800008B +:107D20000000000100008041000800000000000188 +:107D300000008042000800000000000100008043B5 +:107D400000080000000000010000800000080000A2 +:107D50000000000200008002000800000000000196 +:107D6000000080040008000000000002000080C045 +:107D70000008000000000002000080C200080000AF +:107D800000000002000080C40008000000000002A3 +:107D900000008080000800000000000100008081D9 +:107DA00000080000000000010000808200080000C0 +:107DB00000000001000080830008000000000001B6 +:107DC00000008084000800000000000100008085A1 +:107DD000000800000000000100008086000800008C +:107DE0000000000100006000000800000000000228 +:107DF00000006002000800000000000100006004B4 +:107E000000080000000000020000604200C00018EE +:107E1000000000020000604000C0001800000002E6 +:107E20000000604C00C00018000000080000604422 +:107E300000C00018000000080000605700C00018D3 +:107E4000000000010000605400C0001800000002A3 +:107E50000000605600C000180000000100006640ED +:107E60000008000000000008000066800008000014 +:107E700000000008000066C00008000000000008C4 +:107E80000000DA8200180000000000020000DBA001 +:107E900000000000000000000000E0000000000002 +:107EA000000000040000D1000000000000000004F9 +:107EB0000000D10400000000000000040000D10810 +:107EC00000000000000000040000D10C00000000D1 +:107ED000000000040000D1100000000000000004B9 +:107EE0000000D11400000000000000040000D118C0 +:107EF00000000000000000040000D10000000000AD +:107F0000000000200000928000000000000000043B +:107F10000000928000000000000000280000805057 +:107F200000A80000000000010000805400A800002C +:107F30000000000100008000000000000000005070 +:107F400000008050000000000000001000009600BB +:107F50000000000000000004000094000000000089 +:107F60000000000400009404000000000000000471 +:107F70000000940800000000000000040000940CC1 +:107F80000000000000000004000094100000000049 +:107F90000000000400009414000000000000000431 +:107FA000000094180000000000000004000094008D +:107FB00000000000000000400000942000000000CD +:107FC00000000004000094240000000000000004F1 +:107FD0000000942800000000000000040000941C31 +:107FE00000000000000000040000943000000000C9 +:107FF000000000040000942C0000000000000004B9 +:10800000000094340000000000000004000092848E +:10801000000000000000000400009280000000004A +:108020000000000400009290000000000000000426 +:10803000000092A40000000000000004000094383A +:1080400000000000000000040000943C000000005C +:10805000000000040000B9880000000000000000DB +:108060000000D00000000000000000040000B1008B +:1080700000000000000000040000B1040000000047 +:10808000000000040000B10800000000000000042F +:108090000000B10000000000000000100000BCB0B3 +:1080A00000000000000000040000BCB4000000005C +:1080B000000000040000BCB0000000000000004808 +:1080C0000000D85800000000000000040000D85054 +:1080D00000000000000000040000D8540000000070 +:1080E000000000040000D85C000000000000000454 +:1080F0000000D85000000000000000100000D84030 +:1081000000000000000000040000D844000000004F +:10811000000000040000D84000000000000000083B +:108120000000D4C800000000000000080000D4D8FF +:1081300000000000000000800000001000000000AF +:10814000000000000000D4D800000000000000087B +:1081500000000000000000000702330000000000E3 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e1-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e1-7.2.51.0.fw.ihex @@ -0,0 +1,10138 @@ +:100000000000177800000068000005D8000017E81D +:10001000000031CC00001DC80000006C00004F98AB +:10002000000081D0000050080000009C0000D1E0DA +:10003000000094300000D28000000084000166B807 +:100040000000423800016740000000880001A980DC +:100050000000BD8C0001AA10000011B8000267A0CA +:100060000000000400027960020600DC00000001CC +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:1000900002060068000000B80206007800000114A3 +:1000A000010600B800000000010600C800000000C2 +:1000B0000206006C000000B80206007C000001147B +:1000C000010600BC00000000010600CC000000009A +:1000D000020D004400000032030D004C0004020336 +:1000E000040D005C00000004030D008C00110207E9 +:1000F000020D015C00000001030D01640002021802 +:10010000020D020400000001030D020C0003021A9C +:10011000030D02200002021D040D028000000012E7 +:10012000030D03000018021F040D03600000000C03 +:10013000040D400000000A00030D0004000F023708 +:10014000020D01140000000D020D01180000002D29 +:100150000310100000030246021010100000026499 +:10016000071011000010024908101140000000089B +:100170000710116000100259081011A000000018AB +:1001800007101800020002690210101000000000A1 +:1001900004104C0000000100021040280000001074 +:1001A0000210404400003FFF0210405800280000A9 +:1001B000021040840084924A02104058000000005F +:1001C000030C200800030469030C201C0004046CC9 +:1001D000030C203800110470040C207C0000004F38 +:1001E000030C21B800110481040C21FC0000000F55 +:1001F000030C223800040492010C22480000000085 +:10020000010C224C00000000010C225000000000F4 +:10021000010C225400000000010C225800000000D4 +:10022000010C225C00000000010C226000000000B4 +:10023000010C226400000000010C22680000000094 +:10024000010C226C00000000010C22700000000074 +:10025000010C227400000000010C22780000000054 +:10026000010C227C00000000020C24BC00000001F4 +:100270000A00000100000001020C2000000003E859 +:100280000A00000100000002020C20000000000A29 +:100290000A00000100000004020C20000000000120 +:1002A000052004000084000006200780001004964A +:1002B000042200000000160004228000000000401C +:1002C00004223BD000000008042248000000000681 +:1002D0000322481800040498042248280000000C57 +:1002E000032248580004049C042248680000000CC3 +:1002F00003224898000404A0042248A80000000C2F +:10030000032248D8000404A4042248E80000000C9A +:1003100003224918000404A8042249280000000C04 +:1003200003224958000404AC042249680000000C70 +:1003300003224998000404B0042249A80000000CDC +:10034000032249D8000404B4042249E80000000C48 +:1003500003224A18000404B804224A280000000CB2 +:1003600003224A58000404BC04224A680000000C1E +:1003700003224A98000404C004224AA80000000C8A +:1003800003224AD8000404C404224AE80000000CF6 +:1003900003224B18000404C804224B280000000C60 +:1003A00003224B58000404CC04224B680000000CCC +:1003B00003224B98000404D004224BA80000000C38 +:1003C00003224BD8000404D404224BE80000000CA4 +:1003D00003224C18000404D804224C280000000C0E +:1003E00003224C58000404DC04224C680000000C7A +:1003F00003224C98000404E004224CA80000000CE6 +:1004000003224CD8000404E404224CE80000000C51 +:1004100003224D18000404E804224D280000000CBB +:1004200003224D58000404EC04224D680000000C27 +:1004300003224D98000404F004224DA80000000C93 +:1004400003224DD8000404F404224DE80000000CFF +:1004500003224E18000404F804224E280000000C69 +:1004600003224E58000404FC04224E680000000CD5 +:1004700003224E980004050004224EA80000000C40 +:1004800003224ED80004050404224EE80000000CAC +:1004900003224F180004050804224F280000000C16 +:1004A00003224F580004050C04224F680000000C82 +:1004B00003224F980004051004224FA80000000CEE +:1004C00003224FD80004051404224FE80000000660 +:1004D0000322519800040518022380000000001038 +:1004E00002238040000000120223808000000030C0 +:1004F000022380C00000000E022383800007A12099 +:10050000022383C0000001F402238BC0000000011D +:100510000A00000200000001022383000007A1205E +:1005200002238340000001F40A00000200000002E0 +:10053000022383000000138802238340000000058B +:100540000A000002000000040223830000000138BA +:100550000223834000000000052400003324000033 +:10056000052480000F130CC906249C406ADE051C7C +:100570000120000000000000012000040000000035 +:1005800001200008000000000120000C0000000015 +:1005900001200010000000000120001400000000F5 +:1005A00003200020001A051E032000A400020538C5 +:1005B000022002240000000002200234000000009B +:1005C0000220024C00000000022002E40000FFFFB5 +:1005D000082020000000080004221400000000028F +:1005E00004221490000000300422390000000010A2 +:1005F0000422510800000002042251A80000000655 +:1006000004221408000000020422155000000030EB +:1006100004223940000000100422511000000002A2 +:10062000042251C00000000604102400000000E075 +:100630000310201C0002053A021020C00000000137 +:10064000031020040002053C02170008000000020D +:100650000217002C00000003031700380002053EBB +:100660000317004400060540031700600005054617 +:10067000031700780002054B021700040000000F6A +:100680000410806800000004021080000000108048 +:1006900004108040000000020410802800000002C6 +:1006A0000210803800000010031080400002054D49 +:1006B00002108050000000000210810000000000C5 +:1006C000041081200000000202108008000002B522 +:1006D0000210801000000000021081080001FFFFDE +:1006E000041082000000004A041081400000000253 +:1006F0000210800000001A80041090000000002406 +:10070000041091200000004A041093700000004A79 +:10071000041095C00000004A021080040000108000 +:100720000410804800000002041080300000000225 +:100730000210803C00000010031080480002054FAA +:10074000021080540000000002108104000000002C +:1007500004108128000000020210800C000002B585 +:1007600002108014000000000210810C0001FFFF45 +:10077000041084000000004A0410814800000002B8 +:100780000210800400001A800410909000000024E1 +:10079000041092480000004A041094980000004A97 +:1007A000041096E80000004A0200A468000AFFDC7A +:1007B0000200A280000000010300A2940004055181 +:1007C0000200A4FCFF000000030100B40002055574 +:1007D000020100DC000000010301010000020557D6 +:1007E0000201007C003000000201008400000028AB +:1007F0000201008C00000000020101300000000432 +:100800000401013800000011020102440000001F31 +:100810000201025C00000001020103280000000048 +:100820000201055400000030020100C40000000174 +:10083000020100CC00000001020100F800000001EC +:10084000020100F000000001020100800030000001 +:100850000201008800000028020100900000000052 +:1008600002010134000000040401017C00000011B9 +:10087000020102480000001F020102DC000000012A +:100880000201032C0000000002010564000000309A +:10089000020100C800000001020100D000000001B8 +:1008A000020100FC00000001020100F40000000150 +:1008B00002140000000000010214000C00000001FE +:1008C00003140040000205590214000C000000004F +:1008D00002140000000000000214006C0000000080 +:1008E00002140004000000010214003000000001A6 +:1008F00002140004000000000214005C000000006C +:10090000021400080000000102140034000000017D +:100910000214000800000000021400600000000043 +:10092000030400040012055B030400540003056D7A +:100930000204007000000004030400780004057045 +:1009400004040088000000050304009C00030574F3 +:10095000040400A800000004030400B800050577A3 +:10096000040400CC00000004030400DC0004057C47 +:10097000040400EC00000004010401240000000055 +:1009800001040128000000000104012C0000000007 +:100990000104013000000000020401340000000FD7 +:1009A00003120490002205800212052000000002BC +:1009B0000212038800000064021203900000000885 +:1009C0000312039C000305A2021203BC00000004F2 +:1009D000021203C400000004021203D00000000051 +:1009E000021203DC000000000212036C0000000190 +:1009F000021203680000003F031201BC003C05A581 +:100A0000031202B0000205E103120324000205E311 +:100A1000021201B00000000107103800000505E5D2 +:100A200007103C00000505EA07103C20000505EF13 +:100A300003168030000805F40216805400000002FE +:100A400003168060000505FC041680740000000792 +:100A500003168090000206010316809C0005060321 +:100A6000041680B000000007031680CC00080608BA +:100A7000021680F000000007041680F40000000C4D +:100A80000316812400040610041681340000000CB3 +:100A900003168164003B0614041682500000000413 +:100AA000031682600002064F0416826800000008E8 +:100AB0000316828800080651041682A80000000A66 +:100AC00002168804000000040316880C0010065962 +:100AD000021680EC000000FF0304040800140669FD +:100AE000030500440002067D030500500004067F54 +:100AF0000405006000000004030500900013068355 +:100B000002050114000000010305011C0002069605 +:100B100002050204000000010305020C0002069811 +:100B20000305021C0003069A040502400000000AA7 +:100B3000030502800020069D0405400000000D0012 +:100B400003050004001006BD020500E00000000ED1 +:100B5000020500E40000002E0416402400000002FC +:100B600003164030000306CD02164044000000206A +:100B7000021640700000001C02164208000000012E +:100B8000021642100000000102164220000000017F +:100B90000216422800000001021642300000000147 +:100BA00002164238000000010216426000000001F7 +:100BB0000A000001000000010216401C0003D09052 +:100BC0000A000001000000020216401C000009C4D7 +:100BD0000A000001000000040216401C0000009CF6 +:100BE0000216400000000001021640D8000000017B +:100BF00003164008000306D0021642400000000021 +:100C00000216424800000000081642700000000270 +:100C10000216425000000000021642580000000078 +:100C2000081642800000000203042008000406D3D6 +:100C30000304201C000406D70404203800000080B0 +:100C400003042238000406DB0104224800000000EF +:100C50000104224C000000000104225000000000AA +:100C6000010422540000000001042258000000008A +:100C70000104225C0000000001042260000000006A +:100C8000010422640000000001042268000000004A +:100C90000104226C0000000001042270000000002A +:100CA000010422740000000001042278000000000A +:100CB0000104227C00000000020424BC00000001AA +:100CC0000A0000010000000102042000000003E807 +:100CD0000A00000100000002020420000000000AD7 +:100CE0000A000001000000040204200000000001CE +:100CF00005180400006A000006180760001406DFEB +:100D0000041A000000001600041A800000000040D1 +:100D1000031A08B0000206E1031A19C8000206E32C +:100D2000031A2FC0000406E5041A2FD000000006A5 +:100D3000031A2FE8000206E9031A300003F906EB54 +:100D4000041A3FE400000007031A487000040AE494 +:100D5000021B800000000034021B804000000018CD +:100D6000021B80800000000C021B80C000000020DD +:100D7000021B83800007A120021B83C0000001F436 +:100D8000021B8BC0000000010A00000200000001ED +:100D9000021B83000007A120021B8340000001F416 +:100DA0000A00000200000002021B830000001388FA +:100DB000021B8340000000050A000002000000043E +:100DC000021B830000000138021B8340000000006A +:100DD000051C00002CC80000051C800034270B32C5 +:100DE000051D000020E0183C061D4D10565E0AE867 +:100DF00001180000000000000118000400000000BD +:100E000001180008000000000118000C000000009C +:100E1000011800100000000001180014000000007C +:100E200003180020001A0AEA031800A400020B04A9 +:100E30000218022400000000021802340000000022 +:100E40000218024C00000000021802E4000000FF3B +:100E50000818100000000400041A08000000000236 +:100E6000041A082000000012041A09C000000048FB +:100E7000041A250000000010041A2580000000124A +:100E8000041A261000000012031A2FB000020B06ED +:100E9000041A400000000006041A4030000000025E +:100EA000041A482000000002031A4C5000020B08EC +:100EB000041A081000000002041A0868000000125A +:100EC000041A0AE000000048041A2540000000103F +:100ED000041A25C800000012041A26580000001247 +:100EE000031A2FB800020B0A041A4018000000066B +:100EF000041A403800000002041A482800000002CA +:100F0000031A4C5800020B0C020E004C0000003279 +:100F1000030E005400040B0E040E006400000004D5 +:100F2000030E009400130B12020E01440000000196 +:100F3000030E014C00020B25020E0204000000010A +:100F4000030E020C00020B27030E021C00040B29E7 +:100F5000030E0280001B0B2D040E02EC0000001794 +:100F6000040E200000000800030E000400110B48CE +:100F7000020E01100000000F020E01140000002FED +:100F8000020C100000000028030C400800040B595C +:100F9000030C401C00040B5D030C403800020B6185 +:100FA000040C40400000005E020C41B8000000014B +:100FB000040C41BC0000001F030C423800040B630A +:100FC000010C424800000000010C424C00000000EF +:100FD000010C425000000000010C425400000000CF +:100FE000010C425800000000010C425C00000000AF +:100FF000010C426000000000010C4264000000008F +:10100000010C426800000000010C426C000000006E +:10101000010C427000000000010C4274000000004E +:10102000010C427800000000010C427C000000002E +:10103000010C428000000000020C44C000000001CE +:101040000A00000100000001020C4000000003E85B +:101050000A00000100000002020C40000000000A2B +:101060000A00000100000004020C40000000000122 +:1010700005300400009C00000630076800130B6771 +:10108000043200000000160004328000000000401E +:101090000332183000020B6903322E7000040B6B10 +:1010A0000432508000000008033250A000020B6F91 +:1010B000023380000000001A023380400000004E1E +:1010C0000233808000000010023380C00000002046 +:1010D000023383800007A120023383C0000001F4A3 +:1010E00002338BC0000000010A0000020000000172 +:1010F000023383000007A12002338340000001F483 +:101100000A0000020000000202338300000013887E +:1011100002338340000000050A00000200000004C2 +:1011200002338300000001380233834000000000D6 +:1011300005340000371200000534800031C80DC5A9 +:10114000053500002B541A37063561C053C80B71A2 +:101150000130000000000000013000040000000029 +:1011600001300008000000000130000C0000000009 +:1011700001300010000000000130001400000000E9 +:1011800003300020001A0B73033000A400020B8D03 +:10119000023002240000000002300234000000008F +:1011A0000230024C00000000023002E40000FFFFA9 +:1011B000083020000000080004321C10000000026B +:1011C00004322DE000000002043230000000002054 +:1011D0000432310000000020043232000000002000 +:1011E00004323300000000200432340000000020EC +:1011F00004323500000000200432360000000020D8 +:1012000004323700000000200432380000000020C3 +:10121000043239000000002004323A0000000020AF +:1012200004323B000000002004323C00000000209B +:1012300004323D000000002004323E000000002087 +:1012400004323F000000002004324000000000D8BB +:10125000043246C000000120043250C800000024BF +:1012600004321C200000000204322DE800000002BD +:101270000432308000000020043231800000002061 +:10128000043232800000002004323380000000204D +:101290000432348000000020043235800000002039 +:1012A0000432368000000020043237800000002025 +:1012B0000432388000000020043239800000002011 +:1012C00004323A800000002004323B8000000020FD +:1012D00004323C800000002004323D8000000020E9 +:1012E00004323E800000002004323F8000000020D5 +:1012F00004324360000000D804324B40000001205B +:10130000043251580000002402020058000000324C +:101310000302006000040B8F040200700000000450 +:10132000030200A0000E0B93030200DC00070BA1D8 +:10133000020200FC00000006020201200000000082 +:101340000202013400000002020201B000000001AC +:101350000202020C000000010302021400020BA8AA +:1013600002020404000000010302040C00020BAAA4 +:101370000302041C00040BAC03020480001F0BB02A +:10138000040204FC0000001304028000000020009E +:101390000302000400140BCF02020108000000C881 +:1013A0000202011800000002020201C40000000055 +:1013B000020201CC00000000020201D40000000281 +:1013C000020201DC00000002020201E4000000FF52 +:1013D000020201EC000000FF0202010C000000C844 +:1013E0000202011C00000002020201C8000000000D +:1013F000020201D000000000020201D80000000239 +:10140000020201E000000002020201E8000000FF09 +:10141000020201F0000000FF021610000000002888 +:101420000316600800030BE30316601C00040BE6C0 +:1014300003166038000D0BEA0416606C0000001300 +:10144000031660B800020BF7041660C00000003EEF +:10145000021661B800000001041661BC0000001F04 +:101460000316623800040BF9011662480000000000 +:101470000116624C000000000116625000000000DE +:1014800001166254000000000116625800000000BE +:101490000116625C0000000001166260000000009E +:1014A000011662640000000001166268000000007E +:1014B0000116626C0000000001166270000000005E +:1014C000011662740000000001166278000000003E +:1014D0000116627C00000000021664BC00000001DE +:1014E0000A0000010000000102166000000003E88D +:1014F0000A00000100000002021660000000000A5D +:101500000A00000100000004021660000000000153 +:1015100005280400008800000628076800130BFD5A +:10152000042A000000001600042A80000000004089 +:10153000032A250000020BFF032A296000040C0186 +:10154000032A2F4800020C05032A336800020C0707 +:10155000032A392000020C09032A393000020C0B3F +:10156000032A3AC800020C0D042A3AD000000006F3 +:10157000032A3B9800020C0F032A3C2000040C11A4 +:10158000022A3CD000000000022B80000000000076 +:10159000022B804000000018022B80800000000C0D +:1015A000022B80C000000066022B83800007A12070 +:1015B000022B83C0000001F4022B8BC0000000014D +:1015C0000A00000200000001022B83000007A12096 +:1015D000022B8340000001F40A0000020000000218 +:1015E000022B830000001388022B834000000005BB +:1015F0000A00000200000004022B830000000138F2 +:10160000022B8340000000000A00000100000020BF +:10161000022A3CD400000000052C000038B0000075 +:10162000052C800039E30E2C052D0000399B1CA5EC +:10163000052D8000115B2B0C062DA1604BD40C15E1 +:101640000128000000000000012800040000000044 +:1016500001280008000000000128000C0000000024 +:101660000128001000000000012800140000000004 +:1016700003280020001A0C17032800A400020C31D4 +:1016800002280224000000000228023400000000AA +:101690000228024C00000000022802E40000FFFFC4 +:1016A0000828200000000800042A39100000000269 +:1016B000042A393800000020042A3A3800000010BB +:1016C000032A3AE800020C33032A3AF800100C35DA +:1016D000042A3C3000000002042A500000000002EE +:1016E000042A501000000002042A502000000002CA +:1016F000042A503000000002022A5040000000007E +:10170000042A50480000000E042A39180000000284 +:10171000042A39B800000020042A3A78000000109A +:10172000032A3AF000020C45032A3B3800100C470C +:10173000042A3C3800000002042A5008000000027D +:10174000042A501800000002042A50280000000259 +:10175000042A503800000002022A50440000000011 +:10176000042A50800000000E0400A00000000016B3 +:101770000300A06C00060C570400A08400000005C4 +:101780000200A0980FE000000400A09C00000014DC +:101790000300A0EC00080C5D0400A22C0000000473 +:1017A0000200A060000003070300A10C00060C6506 +:1017B0000400A124000000050200A1380FE0000091 +:1017C0000400A13C000000140300A18C00080C6B75 +:1017D0000400A23C000000040200A0640000030713 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:1018000000000000000000000000000000000000D8 +:101810000000000000000005000500090009000D9F +:1018200000000000000000000000000000000000B8 +:1018300000000000000000000000000000000000A8 +:10184000000D001B001B001C001C001D0000000000 +:101850000000000000000000000000000000000088 +:10186000000000000000000000000000001D002536 +:101870000000000000000000000000000000000068 +:101880000000000000000000000000000000000058 +:1018900000000000000000000025002B00000000F8 +:1018A0000000000000000000000000000000000038 +:1018B0000000000000000000000000000000000028 +:1018C00000000000002B00470000000000000000A6 +:1018D0000000000000000000000000000000000008 +:1018E00000000000000000000000000000000000F8 +:1018F000004700AE00AE00B300B300B80000000027 +:1019000000000000000000000000000000000000D7 +:1019100000000000000000000000000000000000C7 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000000000000000000A7 +:10194000000000000000000000B800BC0000000023 +:101950000000000000000000000000000000000087 +:101960000000000000000000000000000000000077 +:101970000000000000BC00C30000000000000000E8 +:101980000000000000000000000000000000000057 +:101990000000000000000000000000000000000047 +:1019A00000C300C400C400D600D600E80000000058 +:1019B0000000000000000000000000000000000027 +:1019C0000000000000000000000000000000000017 +:1019D0000000000000000000000000000000000007 +:1019E00000000000000000000000000000000000F7 +:1019F000000000000000000000E800EC0000000013 +:101A000000000000000000000000000000000000D6 +:101A100000000000000000000000000000000000C6 +:101A20000000000000EC00EF00EF00FC00FC0109EA +:101A300000000000000000000000000000000000A6 +:101A40000000000000000000000000000000000096 +:101A50000109010F010F011301130117000000001C +:101A60000000000000000000000000000000000076 +:101A70000000000000000000000000000000000066 +:101A80000000000000000000000000000000000056 +:101A90000000000000000000000000000000000046 +:101AA00000000000000000000117012700000000F6 +:101AB0000000000000000000000000000000000026 +:101AC0000000000000000000000000000000000016 +:101AD00000000000012701360000000000000000A7 +:101AE00000000000000000000000000000000000F6 +:101AF00000000000000000000000000000000000E6 +:101B00000136013900000000000000000000000064 +:101B100000000000000000000000000000000000C5 +:101B20000000000000000000000000000139014E2C +:101B300000000000000000000000000000000000A5 +:101B40000000000000000000000000000000000095 +:101B50000000000000000000014E014F00000000E6 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B800000000000014F015C015C015D015D015E30 +:101B90000000000000000000000000000000000045 +:101BA0000000000000000000000000000000000035 +:101BB000015E01720172017501750178000000007B +:101BC0000000000000000000000000000000000015 +:101BD00000000000000000000000000001780191FA +:101BE00000000000000000000000000000000000F5 +:101BF00000000000000000000000000000000000E5 +:101C00000000000000000000019101BE01BE01C9FA +:101C100001C901D400000000000000000000000025 +:101C200000000000000000000000000000000000B4 +:101C30000000000001D401E101E101E201E201E361 +:101C40000000000000000000000000000000000094 +:101C50000000000000000000000000000000000084 +:101C600001E301E4000000000000000000000000AB +:101C70000000000000000000000000000000000064 +:101C800000000000000000000000000001E402016C +:101C90000000000000000000000000000000000044 +:101CA0000000000000000000000000000000000034 +:101CB00000000000000000000201022A022A023F88 +:101CC000023F02540000000000000000000000007D +:101CD0000000000000000000000000000000000004 +:101CE00000000000025402660266026E026E027676 +:101CF00000000000000000000000000000000000E4 +:101D000000000000000000000000000000000000D3 +:101D100002760277000000000000000000000000D2 +:101D200000000000000000000000000000000000B3 +:101D30000000000000000000000000000277029593 +:101D40000000000000000000000000000000000093 +:101D50000000000000000000000000000000000083 +:101D60000000000000000000029502C802C802D472 +:101D700002D402E0000000000000000000000000AB +:101D80000000000000000000000000000000000053 +:101D90000000000002E002E102E102E802E802EFD6 +:101DA0000000000000000000000000000000000033 +:101DB0000000000000000000000000000000000023 +:101DC00000000000000000000000200000004000B3 +:101DD00000006000000080000000A0000000C000C3 +:101DE0000000E000000100000001200000014000B0 +:101DF00000016000000180000001A0000001C0009F +:101E00000001E0000002000000022000000240008B +:101E100000026000000280000002A0000002C0007A +:101E20000002E00000030000000320000003400067 +:101E300000036000000380000003A0000003C00056 +:101E40000003E00000040000000420000004400043 +:101E500000046000000480000004A0000004C00032 +:101E60000004E0000005000000052000000540001F +:101E700000056000000580000005A0000005C0000E +:101E80000005E000000600000006200000064000FB +:101E900000066000000680000006A0000006C000EA +:101EA0000006E000000700000007200000074000D7 +:101EB00000076000000780000007A0000007C000C6 +:101EC0000007E000000800000008200000084000B3 +:101ED00000086000000880000008A0000008C000A2 +:101EE0000008E0000009000000092000000940008F +:101EF00000096000000980000009A0000009C0007E +:101F00000009E000000A0000000A2000000A40006A +:101F1000000A6000000A8000000AA000000AC00059 +:101F2000000AE000000B0000000B2000000B400046 +:101F3000000B6000000B8000000BA000000BC00035 +:101F4000000BE000000C0000000C2000000C400022 +:101F5000000C6000000C8000000CA000000CC00011 +:101F6000000CE000000D0000000D2000000D4000FE +:101F7000000D6000000D8000000DA000000DC000ED +:101F8000000DE000000E0000000E2000000E4000DA +:101F9000000E6000000E8000000EA000000EC000C9 +:101FA000000EE000000F0000000F2000000F4000B6 +:101FB000000F6000000F8000000FA000000FC000A5 +:101FC000000FE00000100000001020000010400092 +:101FD00000106000001080000010A0000010C00081 +:101FE0000010E0000011000000112000001140006E +:101FF00000116000001180000011A0000011C0005D +:102000000011E00000120000001220000012400049 +:1020100000126000001280000012A0000012C00038 +:102020000012E00000130000001320000013400025 +:1020300000136000001380000013A0000013C00014 +:102040000013E00000140000001420000014400001 +:1020500000146000001480000014A0000014C000F0 +:102060000014E000001500000015200000154000DD +:1020700000156000001580000015A0000015C000CC +:102080000015E000001600000016200000164000B9 +:1020900000166000001680000016A0000016C000A8 +:1020A0000016E00000170000001720000017400095 +:1020B00000176000001780000017A0000017C00084 +:1020C0000017E00000180000001820000018400071 +:1020D00000186000001880000018A0000018C00060 +:1020E0000018E0000019000000192000001940004D +:1020F00000196000001980000019A0000019C0003C +:102100000019E000001A0000001A2000001A400028 +:10211000001A6000001A8000001AA000001AC00017 +:10212000001AE000001B0000001B2000001B400004 +:10213000001B6000001B8000001BA000001BC000F3 +:10214000001BE000001C0000001C2000001C4000E0 +:10215000001C6000001C8000001CA000001CC000CF +:10216000001CE000001D0000001D2000001D4000BC +:10217000001D6000001D8000001DA000001DC000AB +:10218000001DE000001E0000001E2000001E400098 +:10219000001E6000001E8000001EA000001EC00087 +:1021A000001EE000001F0000001F2000001F400074 +:1021B000001F6000001F8000001FA000001FC00063 +:1021C000001FE00000200000002020000020400050 +:1021D00000206000002080000020A0000020C0003F +:1021E0000020E0000021000000212000002140002C +:1021F00000216000002180000021A0000021C0001B +:102200000021E00000220000002220000022400007 +:1022100000226000002280000022A0000022C000F6 +:102220000022E000002300000023200000234000E3 +:1022300000236000002380000023A0000023C000D2 +:102240000023E000002400000024200000244000BF +:1022500000246000002480000024A0000024C000AE +:102260000024E0000025000000252000002540009B +:1022700000256000002580000025A0000025C0008A +:102280000025E00000260000002620000026400077 +:1022900000266000002680000026A0000026C00066 +:1022A0000026E00000270000002720000027400053 +:1022B00000276000002780000027A0000027C00042 +:1022C0000027E0000028000000282000002840002F +:1022D00000286000002880000028A0000028C0001E +:1022E0000028E0000029000000292000002940000B +:1022F00000296000002980000029A0000029C000FA +:102300000029E000002A0000002A2000002A4000E6 +:10231000002A6000002A8000002AA000002AC000D5 +:10232000002AE000002B0000002B2000002B4000C2 +:10233000002B6000002B8000002BA000002BC000B1 +:10234000002BE000002C0000002C2000002C40009E +:10235000002C6000002C8000002CA000002CC0008D +:10236000002CE000002D0000002D2000002D40007A +:10237000002D6000002D8000002DA000002DC00069 +:10238000002DE000002E0000002E2000002E400056 +:10239000002E6000002E8000002EA000002EC00045 +:1023A000002EE000002F0000002F2000002F400032 +:1023B000002F6000002F8000002FA000002FC00021 +:1023C000002FE0000030000000302000003040000E +:1023D00000306000003080000030A0000030C000FD +:1023E0000030E000003100000031200000314000EA +:1023F00000316000003180000031A0000031C000D9 +:102400000031E000003200000032200000324000C5 +:1024100000326000003280000032A0000032C000B4 +:102420000032E000003300000033200000334000A1 +:1024300000336000003380000033A0000033C00090 +:102440000033E0000034000000342000003440007D +:1024500000346000003480000034A0000034C0006C +:102460000034E00000350000003520000035400059 +:1024700000356000003580000035A0000035C00048 +:102480000035E00000360000003620000036400035 +:1024900000366000003680000036A0000036C00024 +:1024A0000036E00000370000003720000037400011 +:1024B00000376000003780000037A0000037C00000 +:1024C0000037E000003800000038200000384000ED +:1024D00000386000003880000038A0000038C000DC +:1024E0000038E000003900000039200000394000C9 +:1024F00000396000003980000039A0000039C000B8 +:102500000039E000003A0000003A2000003A4000A4 +:10251000003A6000003A8000003AA000003AC00093 +:10252000003AE000003B0000003B2000003B400080 +:10253000003B6000003B8000003BA000003BC0006F +:10254000003BE000003C0000003C2000003C40005C +:10255000003C6000003C8000003CA000003CC0004B +:10256000003CE000003D0000003D2000003D400038 +:10257000003D6000003D8000003DA000003DC00027 +:10258000003DE000003E0000003E2000003E400014 +:10259000003E6000003E8000003EA000003EC00003 +:1025A000003EE000003F0000003F2000003F4000F0 +:1025B000003F6000003F8000003FA000003FC000DF +:1025C000003FE000003FE00100000000000001FFCC +:1025D00000000200000000010000000200000000F6 +:1025E000000000080215002002150020081000005D +:1025F00000000033000000020000000000000005A1 +:1026000000000005000000000000000000000002C3 +:1026100000000003000000020000000100000004B0 +:1026200000000002000000020000000100000002A3 +:1026300000000020000000400000004000000003F7 +:102640000000001800002000000040C00000618071 +:10265000000082400000A3000000C3C00000E4802E +:102660000001054000012600000146C0000167800E +:10267000000188400001A9000001C9C00001EA80F2 +:1026800000020B4000022C0000024CC000026D80D2 +:1026900000028E400002AF000002CFC00002F080B6 +:1026A00000001140000000010000000100000001D6 +:1026B0000000000100000001000000010000000116 +:1026C0000000000100000001000000010000000106 +:1026D00000000001000000010000000100000001F6 +:1026E0000003D0000000003D00000001000D0000CC +:1026F000000700D000028140000B81680002022028 +:1027000000010240000F025000010340000C0000D5 +:10271000000800C000028140000B81680002022016 +:102720000001024000070250000202C00010000039 +:102730000008010000028180000B81A800020260F5 +:1027400000018280000E82980008038000000000D3 +:102750000000000000028000000B8028000200E062 +:10276000000101000000811000000118FFFFFFF3CD +:1027700001AFFFFF000000000000000000000000AB +:10278000000000000000000000000000FFFFFFF15B +:1027900000EFFFFF0000000000000000000000004C +:1027A000000000000001000000000000FFFFFFF635 +:1027B000005FFFFF000000000000000000000000BC +:1027C000000000000002000000000000FFFFF4060F +:1027D0001CBFFFFF00000005000000000000001407 +:1027E000000000000004000000000000FFFFFFF2F6 +:1027F000004FFFFF0000000000000000000000008C +:10280000000000000008000000000000FFFFFFFAC9 +:10281000002FFFFF0000000000000000000000008B +:10282000000000000010000000000000FFFFFFF7A4 +:1028300001EFFFFF000000000000000000000000AA +:10284000000000000020000000000000FFFFFFF576 +:10285000002FFFFF0000000000000000000000004B +:10286000000000000040000000000000FFFFFFF338 +:10287000018FFFFF000000000000000000000000CA +:10288000000000000000000000000000FFFFFFF15A +:10289000010FFFFF0000000000000000000000002A +:1028A000000000000001000000000000FFFFFFF634 +:1028B000005FFFFF000000000000000000000000BB +:1028C000000000000002000000000000FFFFF4060E +:1028D0001CBFFFFF00000005000000000000001406 +:1028E000000000000004000000000000FFFFFFF2F5 +:1028F000004FFFFF0000000000000000000000008B +:10290000000000000008000000000000FFFFFFFAC8 +:10291000002FFFFF0000000000000000000000008A +:10292000000000000010000000000000FFFFFFF7A3 +:1029300000EFFFFF000000000000000000000000AA +:10294000000000000020000000000000FFFFFFF575 +:10295000004FFFFF0000000000000000000000002A +:10296000000000000040000000000000FFFFFFFF2B +:1029700000CFFFFF0000000000000000000000CCBE +:10298000000000000000000000000000FFFFFFFF4B +:1029900000CFFFFF0000000000000000000000CC9E +:1029A000000000000001000000000000FFFFFFFF2A +:1029B00000CFFFFF0000000000000000000000CC7E +:1029C000000000000002000000000000FFFFFFFF09 +:1029D00000CFFFFF0000000000000000000000CC5E +:1029E000000000000004000000000000FFFFFFFFE7 +:1029F00000CFFFFF0000000000000000000000CC3E +:102A0000000000000008000000000000FFFFFFFFC2 +:102A100000CFFFFF0000000000000000000000CC1D +:102A2000000000000010000000000000FFFFFFFF9A +:102A300000CFFFFF0000000000000000000000CCFD +:102A4000000000000020000000000000FFFFFFFF6A +:102A500000CFFFFF0000000000000000000000CCDD +:102A6000000000000040000000000000FFFFFFF336 +:102A7000020FFFFF00000000000000000000000047 +:102A8000000000000000000000000000FFFFFFF158 +:102A9000010FFFFF00000000000000000000000028 +:102AA000000000000001000000000000FFFFFFF632 +:102AB000005FFFFF000000000000000000000000B9 +:102AC000000000000002000000000000FFFFF4060C +:102AD0001CBFFFFF00000005000000000000001404 +:102AE000000000000004000000000000FFFFFFF2F3 +:102AF000004FFFFF00000000000000000000000089 +:102B0000000000000008000000000000FFFFFF8A36 +:102B1000042FFFFF00000000000000000000000084 +:102B2000000000000010000000000000FFFFFF9701 +:102B300005CFFFFF000000000000000000000000C3 +:102B4000000000000020000000000000FFFFFFF573 +:102B5000010FFFFF00000000000000000000000067 +:102B6000000000000040000000000000FFFFFFF335 +:102B7000000FFFFF00000000000000000000000048 +:102B8000000000000000000000000000FFFFFFF157 +:102B9000000FFFFF00000000000000000000000028 +:102BA000000000000001000000000000FFFFFFF631 +:102BB000005FFFFF000000000000000000000000B8 +:102BC000000000000002000000000000FFFFF4060B +:102BD0001CBFFFFF00000005000000000000001403 +:102BE000000000000004000000000000FFFFFFF2F2 +:102BF000004FFFFF00000000000000000000000088 +:102C0000000000000008000000000000FFFFFFFAC5 +:102C1000002FFFFF00000000000000000000000087 +:102C2000000000000010000000000000FFFFFF9700 +:102C3000040FFFFF00000000000000000000000083 +:102C4000000000000020000000000000FFFFFFF572 +:102C5000000FFFFF00000000000000000000000067 +:102C6000000000000040000000000000FFFFFFFF28 +:102C700000CFFFFF0000000000000000000000CCBB +:102C8000000000000000000000000000FFFFFFFF48 +:102C900000CFFFFF0000000000000000000000CC9B +:102CA000000000000001000000000000FFFFFFFF27 +:102CB00000CFFFFF0000000000000000000000CC7B +:102CC000000000000002000000000000FFFFFFFF06 +:102CD00000CFFFFF0000000000000000000000CC5B +:102CE000000000000004000000000000FFFFFFFFE4 +:102CF00000CFFFFF0000000000000000000000CC3B +:102D0000000000000008000000000000FFFFFFFFBF +:102D100000CFFFFF0000000000000000000000CC1A +:102D2000000000000010000000000000FFFFFFFF97 +:102D300000CFFFFF0000000000000000000000CCFA +:102D4000000000000020000000000000FFFFFFFF67 +:102D500000CFFFFF0000000000000000000000CCDA +:102D6000000000000040000000000000FFFFFFFF27 +:102D700000CFFFFF0000000000000000000000CCBA +:102D8000000000000000000000000000FFFFFFFF47 +:102D900000CFFFFF0000000000000000000000CC9A +:102DA000000000000001000000000000FFFFFFFF26 +:102DB00000CFFFFF0000000000000000000000CC7A +:102DC000000000000002000000000000FFFFFFFF05 +:102DD00000CFFFFF0000000000000000000000CC5A +:102DE000000000000004000000000000FFFFFFFFE3 +:102DF00000CFFFFF0000000000000000000000CC3A +:102E0000000000000008000000000000FFFFFFFFBE +:102E100000CFFFFF0000000000000000000000CC19 +:102E2000000000000010000000000000FFFFFFFF96 +:102E300000CFFFFF0000000000000000000000CCF9 +:102E4000000000000020000000000000FFFFFFFF66 +:102E500000CFFFFF0000000000000000000000CCD9 +:102E6000000000000040000000000000FFFFFFFF26 +:102E700000CFFFFF0000000000000000000000CCB9 +:102E8000000000000000000000000000FFFFFFFF46 +:102E900000CFFFFF0000000000000000000000CC99 +:102EA000000000000001000000000000FFFFFFFF25 +:102EB00000CFFFFF0000000000000000000000CC79 +:102EC000000000000002000000000000FFFFFFFF04 +:102ED00000CFFFFF0000000000000000000000CC59 +:102EE000000000000004000000000000FFFFFFFFE2 +:102EF00000CFFFFF0000000000000000000000CC39 +:102F0000000000000008000000000000FFFFFFFFBD +:102F100000CFFFFF0000000000000000000000CC18 +:102F2000000000000010000000000000FFFFFFFF95 +:102F300000CFFFFF0000000000000000000000CCF8 +:102F4000000000000020000000000000FFFFFFFF65 +:102F500000CFFFFF0000000000000000000000CCD8 +:102F600000000000004000000000000000000A1106 +:102F700000000A0000000A040000FFFF0000FFFF3D +:102F80000000FFFF0000FFFF000000200000002104 +:102F900000000022000000230000002400000025A3 +:102FA0000000002600000027000000280000002983 +:102FB0000000002A0000002B0000002C0000002D63 +:102FC0000000002E0000002F000000100000000193 +:102FD00000000001000000010000000100000001ED +:102FE00000000001000000010000000100000001DD +:102FF00000000001000000010000000100000001CD +:1030000000000001000000010000000100000001BC +:1030100007FFFFFF0000003F07FFFFFF0000000F5A +:1030200000007FF800007FF80000FF1C0FFFFFFF8B +:103030000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:103040000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:103050000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:103060000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:103070000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:103080000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:103090000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:1030A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:1030B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:1030C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1030D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1030E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1030F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:103100000000FF1C0FFFFFFF0000FF1C0FFFFFFF71 +:103110000000FF1C0FFFFFFF0000FF1C0FFFFFFF61 +:103120000000FF1C0FFFFFFF0000FF1C0FFFFFFF51 +:103130000000FF1C0FFFFFFF0000FF1C0FFFFFFF41 +:103140000000FF1C0FFFFFFF0000FF1C0FFFFFFF31 +:103150000000FF1C0FFFFFFF0000FF1C0FFFFFFF21 +:103160000000FF1C0FFFFFFF0000FF1C0FFFFFFF11 +:103170000000FF1C0FFFFFFF0000FF1C0FFFFFFF01 +:103180000000FF1C0FFFFFFF0000FF1C0FFFFFFFF1 +:103190000000FF1C0FFFFFFF0000FF1C0FFFFFFFE1 +:1031A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD1 +:1031B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC1 +:1031C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB1 +:1031D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA1 +:1031E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF91 +:1031F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF81 +:103200000000FF1C0FFFFFFF0000FF1C0FFFFFFF70 +:103210000000FF1C0FFFFFFF0000FF1C0FFFFFFF60 +:103220000000FF1C0FFFFFFF0000FF000000000078 +:103230000000FF0000000000000003110000350046 +:103240000000000100000002000000030000000078 +:103250000000000400000001000000000000000168 +:103260000000000400000000000000010000000356 +:103270000000000000000001000000040000000049 +:103280000000000100000003000000000000000139 +:103290000000000400000000000000040000000323 +:1032A000000000000000000000003FFF000003FFDE +:1032B000000000000000000100000001000000010B +:1032C000007C100400000004000000000000000268 +:1032D00000000090000000900080009008100000A6 +:1032E0000000008A000000800000008100000080D3 +:1032F00000000006000007D00000076C0000FFFF80 +:103300000000FFFF0000FFFF0000FFFF071D291165 +:1033100000000000009C04240000000000000001E8 +:103320000000000100000001000000010000000199 +:1033300000007FFF000000FF000000FF000000FF12 +:10334000000000FF000000FF000000FF000000FF81 +:10335000000000FF0000003E000000000000003FF1 +:103360000000003F0000003F000000000000003FA0 +:103370000000003F0000003F0000000F000000437D +:10338000000000000000000600000000121700000E +:10339000221700003217000012150000221500004D +:1033A0003215000002100000001000001010000094 +:1033B0002010000030100000001000001214000067 +:1033C000221400003214000000E38340FFFFFFFFDF +:1033D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +:1033E000FFFFFFFFFFFFFFFFFFFFFFFFF0003000C9 +:1033F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +:10340000FFFFFFFFFFFFFFFFFFFFFFFFFFFF33286F +:10341000FFFF3338FFFFFFFFFFFFFFFFFFFFFFFF4F +:10342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +:10343000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:10344000FFFFFFFFFFFFFFFFFFFFFFFF00003C103C +:103450000000000800000000000000000000004024 +:1034600000001808000008030000080300000040E6 +:103470000000000300000803000008030000080328 +:10348000000100030000080300000803000000031F +:103490000000000300000003000000030000000320 +:1034A0000000000300000003000000030000000310 +:1034B0000000000300000003000000030000000300 +:1034C0000000000300000003000024030000002FA0 +:1034D00000000009000000190000018400000183C1 +:1034E00000000306000000190000000600000306AB +:1034F000000003060000030600000C86000003061F +:1035000000000306000000060000000600000006A0 +:103510000000000600000006000000060000000693 +:103520000000000600000006000000060000000683 +:103530000000000600000006000000060000000673 +:103540000000030600000013000000060000100445 +:1035500000001004001064400010644000000000EF +:10356000000000000000000000000000000020003B +:10357000000000000000000000000000000000004B +:10358000000020000000000000000000000000001B +:1035900000000000000020000000007C0000003D52 +:1035A0000000003F0000009C000000060000000535 +:1035B0000000000A0000000500000140000001407A +:1035C0000000000000000000000000C00000013FFB +:1035D00000007FFF000000480000004800000000DD +:1035E000000000000000004800000004000000048B +:1035F00000000004000000040000000400000004BB +:1036000000000004000000040000000400000009A5 +:103610000000000B0000000A000000040000000988 +:103620000000000B0000000A000000010000000183 +:103630000000000100000001000000010000000186 +:103640000000000100000001000000010000000176 +:10365000000000010000000100000004000000095B +:103660000000000B0000000A000000010000000143 +:103670000000000100000001000000010000000146 +:103680000000000100000001000000010000000136 +:10369000000000010000000100000004000000091B +:1036A0000000000B0000000A000000000000000005 +:1036B0000000080000000200000001FF00000400FC +:1036C00000000000000000001E491E491E491E495E +:1036D0000E490E490E490E49FFFFFFFF0000000092 +:1036E000FFFFFFFF00000000000025E40000800055 +:1036F000000000130FFF0FFF00000000000000009B +:103700000FFF0FFF1000100010001000200020001D +:1037100020002000800080008000800040004000E9 +:103720004000400000000000000000010101010114 +:10373000012001012001010101011001010101012C +:1037400001200101200101010101100120010101FD +:10375000010110010101010101200101200101010C +:1037600001011001010101010120010100000123FB +:1037700000000123000001230000012300000123B9 +:1037800000000123000001230000012300000123A9 +:103790000000012300000123000001230000012399 +:1037A0000000012300000123000001230000012389 +:1037B000000001230000012300000123000000207D +:1037C00000000032000000070000000700000000B9 +:1037D0000000000802150020021500200000003043 +:1037E000081000000000003300000030000000312D +:1037F00000000002000000050000000600000002BA +:1038000000000002000000000000000500000002AF +:10381000000000020000000200000001000000069D +:103820000000000100000002000000400000004015 +:103830000000002000000013000000200001000034 +:10384000000204C00003098000040E4000051300BC +:10385000000617C000071C80000821400009260050 +:10386000000A2AC0000B2F80000C3440000D3900E4 +:10387000000E3DC0000F42800010474000114C0078 +:10388000001250C00013558000145A4000155F000C +:10389000001663C00017688000186D4000197200A0 +:1038A000001A76C0001B7B80001C8040001D850034 +:1038B000001E89C0001F8E800000934000000001A0 +:1038C00000000001000000010000000100000001F4 +:1038D00000000001000000010000000100000001E4 +:1038E00000000001000000010000000100000001D4 +:1038F00000000001000000010000000100000008BD +:103900000000000C00000010000000010000000199 +:10391000000000010000021100000200000002048B +:10392000000002190000FFFF0000FFFF0000FFFF82 +:103930000000FFFF07FFFFFF0000003F07FFFFFF42 +:103940000000000F00007FF800007FF8000000007A +:10395000140AFF0000000000000000010020100118 +:1039600000000000010086000000010000000001CE +:1039700000000000000086020000000000000000BF +:1039800000000000000086040000000000000000AD +:10399000000000000000860600000000000000009B +:1039A0000000000000008608000000000000000089 +:1039B000000000000000860A000000000000000077 +:1039C000000000000000860C000000000000000065 +:1039D000000000000000860E000000000000000053 +:1039E0000000000000008610000000000000000041 +:1039F000000000000000861200000000000000002F +:103A0000000000000000861400000000000000001C +:103A1000000000000000861600000000000000000A +:103A200000000000000086180000000000000000F8 +:103A3000000000000000861A0000000000000000E6 +:103A4000000000000000861C0000000000000000D4 +:103A5000000000000000861E0000000000000000C2 +:103A600000000000000086200000000000000000B0 +:103A7000000000000000862200000000000000009E +:103A8000000000000000862400000000000000008C +:103A9000000000000000862600000000000000007A +:103AA0000000000000008628000000000000000068 +:103AB000000000000000862A000000000000000056 +:103AC000000000000000862C000000000000000044 +:103AD000000000000000862E000000000000000032 +:103AE0000000000000008630000000000000000020 +:103AF000000000000000863200000000000000000E +:103B000000000000000086340000000000000000FB +:103B100000000000000086360000000000000000E9 +:103B200000000000000086380000000000000000D7 +:103B3000000000000000863A0000000000000000C5 +:103B4000000000000000863C0000000000000000B3 +:103B5000000000000000863E0000000000000000A1 +:103B6000000000000000864000000000000000008F +:103B7000000000000000864200000000000000007D +:103B8000000000000000864400000000000000006B +:103B90000000000000008646000000000000000059 +:103BA0000000000000008648000000000000000047 +:103BB000000000000000864A000000000000000035 +:103BC000000000000000864C000000000000000023 +:103BD000000000000000864E000000000000000011 +:103BE00000000000000086500000000000000000FF +:103BF00000000000000086520000000000000000ED +:103C000000000000000086540000000000000000DA +:103C100000000000000086560000000000000000C8 +:103C200000000000000086580000000000000000B6 +:103C3000000000000000865A0000000000000000A4 +:103C4000000000000000865C000000000000000092 +:103C5000000000000000865E000000000000000080 +:103C6000000000000000866000000000000000006E +:103C7000000000000000866200000000000000005C +:103C8000000000000000866400000000000000004A +:103C90000000000000008666000000000000000038 +:103CA0000000000000008668000000000000000026 +:103CB000000000000000866A000000000000000014 +:103CC000000000000000866C000000000000000002 +:103CD000000000000000866E0000000000000000F0 +:103CE00000000000000086700000000000000000DE +:103CF00000000000000086720000000000000000CC +:103D000000000000000086740000000000000000B9 +:103D100000000000000086760000000000000000A7 +:103D20000000000000008678000000000000000095 +:103D3000000000000000867A000000000000000083 +:103D4000000000000000867C000000000000000071 +:103D5000000000000000867E00000000000000005F +:103D6000000000000000868000000000000000004D +:103D7000000000000000868200000000000000003B +:103D80000000000000008684000000000000000029 +:103D90000000000000008686000000000000000017 +:103DA0000000000000008688000000000000000005 +:103DB000000000000000868A0000000000000000F3 +:103DC000000000000000868C0000000000000000E1 +:103DD000000000000000868E0000000000000000CF +:103DE00000000000000086900000000000000000BD +:103DF00000000000000086920000000000000000AB +:103E00000000000000008694000000000000000098 +:103E10000000000000008696000000000000000086 +:103E20000000000000008698000000000000000074 +:103E3000000000000000869A000000000000000062 +:103E4000000000000000869C000000000000000050 +:103E5000000000000000869E00000000000000003E +:103E600000000000000086A000000000000000002C +:103E700000000000000086A200000000000000001A +:103E800000000000000086A4000000000000000008 +:103E900000000000000086A60000000000000000F6 +:103EA00000000000000086A80000000000000000E4 +:103EB00000000000000086AA0000000000000000D2 +:103EC00000000000000086AC0000000000000000C0 +:103ED00000000000000086AE0000000000000000AE +:103EE00000000000000086B000000000000000009C +:103EF00000000000000086B200000000000000008A +:103F000000000000000086B4000000000000000077 +:103F100000000000000086B6000000000000000065 +:103F200000000000000086B8000000000000000053 +:103F300000000000000086BA000000000000000041 +:103F400000000000000086BC00000000000000002F +:103F500000000000000086BE00000000000000001D +:103F600000000000000086C000000000000000000B +:103F700000000000000086C20000000000000000F9 +:103F800000000000000086C40000000000000000E7 +:103F900000000000000086C60000000000000000D5 +:103FA00000000000000086C80000000000000000C3 +:103FB00000000000000086CA0000000000000000B1 +:103FC00000000000000086CC00000000000000009F +:103FD00000000000000086CE00000000000000008D +:103FE00000000000000086D000000000000000007B +:103FF00000000000000086D2000000000000000069 +:1040000000000000000086D4000000000000000056 +:1040100000000000000086D6000000000000000044 +:1040200000000000000086D8000000000000000032 +:1040300000000000000086DA000000000000000020 +:1040400000000000000086DC00000000000000000E +:1040500000000000000086DE0000000000000000FC +:1040600000000000000086E00000000000000000EA +:1040700000000000000086E20000000000000000D8 +:1040800000000000000086E40000000000000000C6 +:1040900000000000000086E60000000000000000B4 +:1040A00000000000000086E80000000000000000A2 +:1040B00000000000000086EA000000000000000090 +:1040C00000000000000086EC00000000000000007E +:1040D00000000000000086EE00000000000000006C +:1040E00000000000000086F000000000000000005A +:1040F00000000000000086F2000000000000000048 +:1041000000000000000086F4000000000000000035 +:1041100000000000000086F6000000000000000023 +:1041200000000000000086F8000000000000000011 +:1041300000000000000086FA0000000000000000FF +:1041400000000000000086FC0000000000000000ED +:1041500000000000000086FE0000000000000000DB +:1041600000000000000087000000000000000000C8 +:1041700000000000000087020000000000000000B6 +:1041800000000000000087040000000000000000A4 +:104190000000000000008706000000000000000092 +:1041A0000000000000008708000000000000000080 +:1041B000000000000000870A00000000000000006E +:1041C000000000000000870C00000000000000005C +:1041D000000000000000870E00000000000000004A +:1041E0000000000000008710000000000000000038 +:1041F0000000000000008712000000000000000026 +:104200000000000000008714000000000000000013 +:104210000000000000008716000000000000000001 +:1042200000000000000087180000000000000000EF +:10423000000000000000871A0000000000000000DD +:10424000000000000000871C0000000000000000CB +:10425000000000000000871E0000000000000000B9 +:1042600000000000000087200000000000000000A7 +:104270000000000000008722000000000000000095 +:104280000000000000008724000000000000000083 +:104290000000000000008726000000000000000071 +:1042A000000000000000872800000000000000005F +:1042B000000000000000872A00000000000000004D +:1042C000000000000000872C00000000000000003B +:1042D000000000000000872E000000000000000029 +:1042E0000000000000008730000000000000000017 +:1042F0000000000000008732000000000000000005 +:1043000000000000000087340000000000000000F2 +:1043100000000000000087360000000000000000E0 +:1043200000000000000087380000000000000000CE +:10433000000000000000873A0000000000000000BC +:10434000000000000000873C0000000000000000AA +:10435000000000000000873E000000000000000098 +:104360000000000000008740000000000000000086 +:104370000000000000008742000000000000000074 +:104380000000000000008744000000000000000062 +:104390000000000000008746000000000000000050 +:1043A000000000000000874800000000000000003E +:1043B000000000000000874A00000000000000002C +:1043C000000000000000874C00000000000000001A +:1043D000000000000000874E000000000000000008 +:1043E00000000000000087500000000000000000F6 +:1043F00000000000000087520000000000000000E4 +:1044000000000000000087540000000000000000D1 +:1044100000000000000087560000000000000000BF +:1044200000000000000087580000000000000000AD +:10443000000000000000875A00000000000000009B +:10444000000000000000875C000000000000000089 +:10445000000000000000875E000000000000000077 +:104460000000000000008760000000000000000065 +:104470000000000000008762000000000000000053 +:104480000000000000008764000000000000000041 +:10449000000000000000876600000000000000002F +:1044A000000000000000876800000000000000001D +:1044B000000000000000876A00000000000000000B +:1044C000000000000000876C0000000000000000F9 +:1044D000000000000000876E0000000000000000E7 +:1044E00000000000000087700000000000000000D5 +:1044F00000000000000087720000000000000000C3 +:1045000000000000000087740000000000000000B0 +:10451000000000000000877600000000000000009E +:10452000000000000000877800000000000000008C +:10453000000000000000877A00000000000000007A +:10454000000000000000877C000000000000000068 +:10455000000000000000877E000000000000000056 +:104560000000000000008780000000000000000044 +:104570000000000000008782000000000000000032 +:104580000000000000008784000000000000000020 +:10459000000000000000878600000000000000000E +:1045A00000000000000087880000000000000000FC +:1045B000000000000000878A0000000000000000EA +:1045C000000000000000878C0000000000000000D8 +:1045D000000000000000878E0000000000000000C6 +:1045E00000000000000087900000000000000000B4 +:1045F00000000000000087920000000000000000A2 +:10460000000000000000879400000000000000008F +:10461000000000000000879600000000000000007D +:10462000000000000000879800000000000000006B +:10463000000000000000879A000000000000000059 +:10464000000000000000879C000000000000000047 +:10465000000000000000879E000000000000000035 +:1046600000000000000087A0000000000000000023 +:1046700000000000000087A2000000000000000011 +:1046800000000000000087A40000000000000000FF +:1046900000000000000087A60000000000000000ED +:1046A00000000000000087A80000000000000000DB +:1046B00000000000000087AA0000000000000000C9 +:1046C00000000000000087AC0000000000000000B7 +:1046D00000000000000087AE0000000000000000A5 +:1046E00000000000000087B0000000000000000093 +:1046F00000000000000087B2000000000000000081 +:1047000000000000000087B400000000000000006E +:1047100000000000000087B600000000000000005C +:1047200000000000000087B800000000000000004A +:1047300000000000000087BA000000000000000038 +:1047400000000000000087BC000000000000000026 +:1047500000000000000087BE000000000000000014 +:1047600000000000000087C0000000000000000002 +:1047700000000000000087C20000000000000000F0 +:1047800000000000000087C40000000000000000DE +:1047900000000000000087C60000000000000000CC +:1047A00000000000000087C80000000000000000BA +:1047B00000000000000087CA0000000000000000A8 +:1047C00000000000000087CC000000000000000096 +:1047D00000000000000087CE000000000000000084 +:1047E00000000000000087D0000000000000000072 +:1047F00000000000000087D2000000000000000060 +:1048000000000000000087D400000000000000004D +:1048100000000000000087D600000000000000003B +:1048200000000000000087D8000000000000000029 +:1048300000000000000087DA000000000000000017 +:1048400000000000000087DC000000000000000005 +:1048500000000000000087DE0000000000000000F3 +:1048600000000000000087E00000000000000000E1 +:1048700000000000000087E20000000000000000CF +:1048800000000000000087E40000000000000000BD +:1048900000000000000087E60000000000000000AB +:1048A00000000000000087E8000000000000000099 +:1048B00000000000000087EA000000000000000087 +:1048C00000000000000087EC000000000000000075 +:1048D00000000000000087EE000000000000000063 +:1048E00000000000000087F0000000000000000051 +:1048F00000000000000087F200000000000000003F +:1049000000000000000087F400000000000000002C +:1049100000000000000087F600000000000000001A +:1049200000000000000087F8000000000000000008 +:1049300000000000000087FA0000000000000000F6 +:1049400000000000000087FC0000000000000000E4 +:1049500000000000000087FE0000FF0000000000D3 +:104960000000FF0000000000000001D20000150060 +:104970000000000100000002000000030000000031 +:104980000000000400000001000000000000000121 +:10499000000000040000000000000001000000030F +:1049A0000000000000000001000000040000000002 +:1049B00000000001000000030000000000000001F2 +:1049C00000000004000000000000000400000003DC +:1049D000000000000000000000003FFF000003FF97 +:1049E0000000000300BEBC20000000000000000525 +:1049F0000000000300BEBC20000000000000000515 +:104A00000000000D0000000C00000000000000107D +:104A100002150020021500200000003008100000E0 +:104A200000000033000000300000003100000002F0 +:104A3000000000040000000000000002000000026E +:104A4000000000000000000200000007000000025B +:104A5000000000020000000100000003000000014F +:104A600000000002000000400000004000000004C0 +:104A7000000000200000000F0000001B000080006C +:104A8000000103C00001878000020B4000028F007C +:104A9000000312C00003968000041A4000049E0028 +:104AA000000521C00005A580000629400006AD00D4 +:104AB000000730C00007B480000838400008BC0080 +:104AC00000093FC00009C380000A4740000ACB002C +:104AD000000B4EC0000BD280000C5640000CDA00D8 +:104AE000000D5DC0000061800000000100000001B9 +:104AF00000000001000000010000000100000001B2 +:104B000000000001000000010000000100000001A1 +:104B10000000000100000001000000010000000191 +:104B2000000000010000000100000001000005AAD3 +:104B3000000005990000059D000003C00000FFFF74 +:104B40000000FFFF0000FFFF0000FFFF0000004625 +:104B50000000000C07FFFFFF0000003F07FFFFFF02 +:104B60000000000F00007FF800007FF8FFFFFFFF4C +:104B7000FFFFFFFF0000FF00000000000000FF003B +:104B8000000000000000190000000000000001D338 +:104B900000003500000000010000000200000003DA +:104BA0000000000000000004000000010000000000 +:104BB00000000001000000040000000000000001EF +:104BC00000000003000000000000000100000004DD +:104BD00000000000000000010000000300000000D1 +:104BE00000000001000000040000000000000004BC +:104BF00000000003000000000000000000003FFF74 +:104C0000000003FF0000000F00000007000000008C +:104C10000000000E031500200315002001000030E5 +:104C200008100000000000330000003000000031D8 +:104C30000000000300000006000000030000000365 +:104C40000000000200000000000000020000000060 +:104C50000000000600000004000000020000000246 +:104C6000000000010000000400000001000000023C +:104C70000000004000000040000000040000002090 +:104C8000000000020000001F000010000000208053 +:104C900000003100000041800000520000006280EE +:104CA0000000730000008380000094000000A480D6 +:104CB0000000B5000000C5800000D6000000E680BE +:104CC0000000F700000107800001180000012880A3 +:104CD000000139000001498000015A0000016A808A +:104CE00000017B0000018B8000019C000001AC8072 +:104CF0000001BD000001CD800001DE000001EE805A +:104D000000000F0000000001000000010000000191 +:104D1000000000010000000100000001000000018F +:104D2000000000010000000100000001000000017F +:104D3000000000010000000100000001000000016F +:104D4000000000010000000100000001000000015F +:104D50000000000100000614000006000000060428 +:104D60000000FFFF0000FFFF0000FFFF0000FFFF4B +:104D700000000020000000200000000000000000F3 +:104D80000000002300000024000000250000002691 +:104D900000000027000000290000002A0000002B6E +:104DA0000000002C000000010000000107FFFFFFD1 +:104DB0000000003F07FFFFFF0000000F00007FF82A +:104DC00000007FF80000000000000001CCCC0201D0 +:104DD000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFFDC +:104DE000FFFFFFFF00000000000100010033020789 +:104DF000CCCCCCC1FFFFFFFFFFFFFFFF1000000086 +:104E0000000028AD7058103C000000000000FF00BA +:104E1000000000000000FF0000000000000002820F +:104E20000000150000000001000000020000000367 +:104E3000000000000000000400000001000000006D +:104E4000000000010000000400000000000000015C +:104E5000000000030000000000000001000000044A +:104E6000000000000000000100000003000000003E +:104E70000000000100000004000000000000000429 +:104E800000000003000000000000000000003FFFE1 +:104E9000000003FF000E0000011600D60000FFFF17 +:104EA000000000000000FFFF000000000000FFFF06 +:104EB000000000000000FFFF000000000000FFFFF6 +:104EC000000000000000FFFF0000000000000000E4 +:104ED000000000000000FFFF000000000072000062 +:104EE000012300F30000FFFF000000000000FFFFAF +:104EF000000000000000FFFF000000000000FFFFB6 +:104F0000000000000000FFFF000000000000FFFFA5 +:104F10000000000000000000000000000000FFFF93 +:104F200000000000BF5C0000FFF51FEF0000FFFF66 +:104F3000F00003E0000000000000A0005554000055 +:104F40005555555500005555F000000055540000CA +:104F50005555555500005555F0000000BF5C000048 +:104F6000FFF51FEF0000FFFFF00003E0000000006E +:104F70000000A000555400005555555500005555EA +:104F8000F00000005554000055555555000055558A +:104F9000F0000000000000001F8B0800000000006F +:104FA000000BFB51CFC0F00309B773A2F2A5595112 +:104FB000F90D6CA8FC81C629CC0C0CD940DC0AC4C4 +:104FC00045CCF8D58631618AB1CA22D83BA41818DD +:104FD0002424206C6F8981F7DB28A63DFEA981CAB5 +:104FE000FFA706A1CBA1E2BFD0E4FF43E5372B43E7 +:104FF000E8DF1AD8CDDD029507001BFDA1C26003D2 +:1050000000000000000000001F8B080000000000EE +:10501000000BED7D0D7854D5B5E89E33E79C393310 +:1050200099999C84106642424F4280A001078810E3 +:105030002CDA49081ADB54861F35B5A80352457E81 +:10504000A38D356DED9D03F931F2F78270297AD188 +:105050003B506AB1D7F6466EB4F47DD86F22B617CE +:105060009F6D6F0A28DAE23558F5562BDE68B5D207 +:10507000EFB3F5ADB57F32E79CCC24C1AAB7EF7B87 +:105080008D5FBBD9679FBDF7DAEB6FAFBDD6DA672F +:105090003CD22CA27E8E900FF10FCAE32E42C8D8CC +:1050A00074299E132D7A3DA922645548353643DB79 +:1050B0001A3769EAAEC4FAE43A329D1005DF0F13DD +:1050C000F86798F693F3B548AA00DA9F7557BB8D39 +:1050D000F438CE72954C883E134AB2B5CF1D843158 +:1050E00092CA40BF46E8DF876584B49C9E51FF9416 +:1050F000A8C3FF422450F0DA85F08F3964CE876E62 +:1051000042DED11B7353C38CFF46E2982E4F22E43C +:10511000FD44A4FEA94943DBC53AD610F28A271FF5 +:10512000D769AA5F9A46C86CA2D17588F5C9F99D5E +:1051300085713FBC77F0695DAE48C3430A609173E7 +:10514000E1B94C529E9943E11FC41F31E978304FB9 +:105150008ACE23FAF5037C96F539FB0F8ECBFB1331 +:1051600019FE9B4D888FBD421E74C53F8BCFBD7508 +:105170007798458087358F2C220827AE23362D0D52 +:10518000BF9857AC63707EC77AB2AD63707EDE2F76 +:105190001BBEC57BEFD4B577108990938A5112431B +:1051A0003EA99F524780BE8B914FE6A6E9B2684167 +:1051B0003B85271B5D803F0C1DF1E5F6337E7AAE03 +:1051C000B51AC84E9A8997908B33CC3F02FFC49D85 +:1051D000FC5377F527C23FDFE4FC43EAC752B9101E +:1051E000EB77E27B559D72C6337D187CF3FE827EA1 +:1051F00043F82F5BBFA17C6266E4133EBEE017312B +:10520000CF5F0BEF48FC414817A51F213137CE9BDC +:10521000AE2709AB8BF72C6521B0015F8FBBA0E3F4 +:105220006DF7742C7D26EA0D7781FC5ABF558E7878 +:105230003F452571A44F2B3E0AF3CEC0477271E45F +:105240003BA8C71E222A9D572ED0E83880A7872862 +:105250001C0D76FC79F518417E560A2B72E3301E40 +:10526000F1E7679483BB134DF5B2854FEE56486363 +:10527000B79FAD8BCE338124C720FE3E986F2C0E96 +:10528000641FC789AF5625F27C1CF4AF39568D7C5C +:1052900017D7EFCABC9ED4E07A5413F103EB490D43 +:1052A000B79ED6C064BE9ECC72DDC6D723E01F7CFD +:1052B0002ED695A59F13FE6CED6D4A34B41C863036 +:1052C0000399D7A5E0BA4A09398DEB427AFA554AD3 +:1052D00027A5A08BF22FACEF34E50FC7FA80AF28DB +:1052E0001F39D727EB1AC58B985FD6BE562FCF4AEA +:1052F000C3F93AD1E93A95413822741CB74E68BFD8 +:105300005F90F8EBD80EFCD747F9CF1F2538BE1AAF +:1053100082012EC232DA68025DDB7AE792CA6954F2 +:105320006D91B550AAFE386980F7DAFEEC6E447EC6 +:10533000240555363979058931363BDE84DE14F58E +:105340001388FFCAA1F43FF1450FADB78D8D7C07DF +:105350007129B9183F38F10378935C167ACA3AC3B9 +:10536000E7892F4E61F8CA22C78BB5AFDAF0057F07 +:105370005194CB123EAEC0DB8E5286AF078CEA272B +:10538000258390B2F24884809EB8D7D853032B254A +:10539000A73CF17C9C3FA732E9C2F94A9A092D3714 +:1053A000F3752D70CFF3BE0CE5CE86B2DC15005739 +:1053B000B5CB95918FF62600768590CE8446A89E33 +:1053C0007E91C19F8DDFB6240C9B7C6E6992EB931E +:1053D00030FE96CA27F3AE00BCB51794CFA43A2688 +:1053E000E462F8C2F500FC17F0F9F7DEF6354A6F13 +:1053F000C0DF0508BFE043C16F13A3C9A80EF53293 +:10540000923425182FB49544707FC13FD982A7925A +:105410007AC9F404291E66E138451586A4C27BE1E9 +:1054200038A9010A0EE261678344E979FBF2C9FBFE +:10543000919E02EE6697C4E8CAF76322472A62810A +:10544000ECF2771FE0A952C17AB70BE11CBF92249E +:10545000518EB6F3E7EF92D87C17BC377E6D44C10E +:10546000F580FDC7F92B84C61069E370DF77B38F31 +:10547000F15789BECF0D72799580230AF82AB4F1CD +:10548000D755AEB169BC08FE9A20C517E1735F75A8 +:10549000778D8A60CFEB4F61D92A9155549F98A49C +:1054A0000FE72B7291F41FCCA75719FB91BF5770D0 +:1054B0003A14D575DC2601FCE1906CE27E54D4BF31 +:1054C000BC01ED9CC0E92B5FC7129E9F41FC8E5F23 +:1054D000356022FF95AC4CD6A01D1A6E4E9A385FEF +:1054E00081145F817014AD248BEAE07950EF72A1D2 +:1054F00008EE519204E9E79BD7178DF991DE979357 +:10550000E516FBE4AB2E26A7B0274693FE345D1FBD +:1055100070333EB9B7FEB8F7163FBEE7A378994897 +:10552000EAA27A25F24394B8601D3ECE0F40F7DB25 +:1055300091EE7A73D2E542F9A8E8DA887002BF8F5B +:1055400043FEDAA398618463CF6D6A6392E1E52438 +:10555000E23728719C18F01FF2A7C4E6BDD4A5D08D +:10556000F9DC13A10EAA658C4E9206A04A2E073EC6 +:10557000847A68258944A129C8F116205DA932687A +:105580000F3AF056B4B27B23E249AE22141F80A733 +:10559000BB11CEDC867ED4C0245C9E24489A2D723A +:1055A000D34BDF8271B71C73474C62E143027C38F6 +:1055B0002D8D2F7F25C85B867D79B47624AA17E4CC +:1055C0006BD9CFF633B13F00BFDE8770C93AE3D75E +:1055D000D1EE435A8BDB7805F597AC4B884F015BD6 +:1055E000A7BEC9443E7B0FC702BE7677CD48211EB9 +:1055F00001B791EF32F94DB9A0AEE9D124EE47746D +:105600003F9C9DB647BC15124959D6A914FB6C7531 +:10561000D268BA70BE3BF833AD45A570C8B03F90B4 +:10562000CAF43A61A72029B0B770991F222DC19200 +:10563000C479443FD94F525EA0DFE68A99C46A37E5 +:10564000CBD80FDE41F1F8B07468BFEC7871CCB7FD +:10565000D40EE7A8FBF965E3B50CE79EA1FD64F263 +:105660009AB02701797D38C0C569FA80BD74D80524 +:10567000FB686BF16E13F9FA6E6C02BA761046771E +:105680006248363DE32E96A89C3FE83218BF8498C6 +:105690003DE521D7A4B0BFA88FC4173ECE577B49A4 +:1056A000FC55E42B4F719CE277CB58D2857A72106F +:1056B000CF684F228F542CA5EF6F9976B38972ADC6 +:1056C0004CD067505EE07CB545A3BC639967135D21 +:1056D000676722497EABE0BEC1C6D78C182B055F39 +:1056E00056303EEEAC5C9C4BF0B9D64DF5514ED7E2 +:1056F000A329DC4FD2FC6892A5D3709D12A5C316D6 +:10570000283F7471BEC47D29E4A3CF05FF097E1331 +:10571000E38F2C770514CF4584ADA304D89F507E2A +:1057200064FBFD788EFF09C5032EDCD78D985E8B58 +:10573000DB4B5963E4492CEFCFFB75783985B34EC9 +:10574000477ABBA2635C1F5E387ABE70DA3F456B56 +:10575000E597ADF6BDBE12EA96F505E7D9DB7DC447 +:10576000D25E3A74BC7C61DF199108CADD76A5BFB0 +:10577000114C3D32492AAC2980E7DBBDFDCFA3297E +:10578000D8DE19AEA9077C052700AF22DDE5010DA3 +:10579000E9F23954D6C8B78641E54CE77393FE0168 +:1057A000AD1C50AC2E90C96668EAED771315EA5D22 +:1057B0002139E929E5C804FCE572FE10E374F59F80 +:1057C000D0500F6C9B979F671B3FC4DE0F88F18DF5 +:1057D000A61B2756A5C77F1F6C993ED41F721FEDCD +:1057E000EFEB87B5417B2ECC9744FD4FFAB41AA856 +:1057F000EB7570B02FC57D2D0ACFE0AF7E74768338 +:105800005CCDEC6DB9BAB38F95323BFF550DD9EF36 +:105810001B24941BD8EF914FC47E2FE61991DF46CD +:10582000FB1E7030EC4DE44EE28BA03D70C615FFC0 +:10583000B204CF5B96B61005F0A12C6DBAB11DCAAB +:10584000B112895279B9444A7ED7C5F916FA6D8FDB +:105850008D4B623F794CF158846F7B35DB6FB3CD54 +:10586000BB25614E2AB7DA8B72B7A6537B71A69619 +:10587000A95F4EA86352F91818B7DE18A767F06B36 +:105880008C3CEE62DBB85F20F13BA5B143C7279C9F +:10589000BF25D0C0282F3E7F331A1919F8DE527762 +:1058A0000FADEF597E7308F150302E3AC305FCDE80 +:1058B00003EA24560DF59CE8A3280F0F6F5A58E30E +:1058C000077928F0441FC5F6B9F7D5D53C85F529E9 +:1058D000885B429E9196F79A006F0BE017F5E2E61F +:1058E000445FF8156A8F3F4FCB1D12B39776213F67 +:1058F000A39E95997D955301EF59E455934DFADC9C +:105900006B403FAB7F23045282FB34171DB09BEEEC +:10591000433E2B6AECEA457ACBBAFDDCE0C4F303E4 +:1059200012B3179F91745AEE99CAD67BAE7FE2B03C +:10593000E7844E58079E2B44FD190E3FC219A94417 +:1059400038A1DD02A702EC857C5FB06419A59FBC7D +:10595000949D33C932629313596F12E787434857B6 +:10596000E7F961104E251E6A82E7DBF24077C27EBE +:10597000B84D311B63F4BDFED0628B7D558806D1D6 +:10598000C5967E73617DA80F2A437E2BDE34573C7B +:1059900085F3E53476A5140A8749E110FD3A02AB98 +:1059A000295EB2AEA3D17E7EB4ACE31929C3390817 +:1059B000F981CA5F15C81FE5C33E6D9145CF6CAB39 +:1059C0003A3FB9DB2AF76B68476FF7BFDC89FACF3C +:1059D0008C48914906CAEFCC6306CC93132898698A +:1059E000F5337FDD537B5AB29C6FFD95309E85DF8A +:1059F000B69DA77C0ECE5FE09C7F717D69E6F9DFE6 +:105A000094A85D43DE443A7839DE3AC2BB295E9DF4 +:105A1000F0887E6E29FE9E156E6F39F32F0CE2B36F +:105A20005AE0B3DF86CFF3D563CED2EF223194DFD5 +:105A300056FF4C7D85052FAA9BC94F9527AABAC74B +:105A40000E85FB7CF55CB679DB0BECF34EE57C0D4B +:105A5000F38E755F8C75C2F62387FD1EE4B0B455D6 +:105A60001F6FBC09EDF7722982FCEE8B05CD9C20DF +:105A7000965BA99F30A7A22BF61583DAFB741F80D3 +:105A80007D2D69E23ED0E5A27A2B87DB5163D18E72 +:105A90002A45BC137AEEF4E9E4009E737FCCE59FBF +:105AA0005458ECAA328487D9554EBC1052ACBF96DC +:105AB00063D5BB26EBCFCFB72BAA394310E3DADF90 +:105AC000C03CB71E53C866AC7E006F5BCE152FFF7F +:105AD00016CE67B08E5BF17C06E54A120B62E35985 +:105AE00022D523DC67C9F1E02C0BDDAF70737F4F4B +:105AF000A742ED2113FE4338BFD2A5D8ECA35BF635 +:105B0000D8EB3793C585B8AFDEBC4B216837DCEAEC +:105B1000D847E6B8995FEC16D2D481F46EE7FA76EE +:105B2000850E5B2998D8EB7EF4C0ECE550BFCACD5A +:105B3000F4FD1B095899270DD76A7F528D42FB6FE0 +:105B40007B665DF35982FD931D45284779CC9E7590 +:105B5000F2C54D9D76F84682DF09AFB0B7B3C121DB +:105B60001F74D1F3BB73DE659CDF05BD5AB4E074CE +:105B7000920B76969795662DA1E76BF33FBDC956BC +:105B800098E7EB28F454CE9BE630BF75D34554FF1D +:105B90008DD0EF5B6ECE4FE7D96F63967E9B0B92F5 +:105BA00031D4DBE21CE4D59A282E5C323B5F6C0ECC +:105BB0008DD05E3E7CBB13AE4579B02F5C34143E75 +:105BC000B057B6A1BCDEE98E5ECF9898C1E7417CA4 +:105BD000BAB164763AB55BE0FD0DB2BFD305E379A7 +:105BE000FD3DD47EF11A763B7E036172482A08D5CA +:105BF0007B3915F676A73D931CA45F8ACA51908A1B +:105C000018EA097F8AEE63D5F29BFD16F91574BF79 +:105C10003D047A654C763D25C149CD0FF36A5C3F62 +:105C2000B8785DC0F14E97AB1EE5E17630B55B66A6 +:105C30005AC755E9B843F4C107D03E1BF141083BB0 +:105C400057454288A7CE040660D0DF1F5B88EB6E05 +:105C50007DD64D504FB52A4D04FD38660931D04FE1 +:105C6000EE2967ED9E93EE02A9948D8BF58E70FD63 +:105C700001F44F1C72337F10D8F7D4AFE0F19BD101 +:105C800028D0B103EC8A3CF457FF038B8BD4F8E3A4 +:105C900071ECE70E352A783EF9F7476E6AC4FAEAE6 +:105CA000D0E5B207E67D828F73F6FB8FCE26005FCC +:105CB000C70F022445CF1B4915CF1BAB7BDCD1247A +:105CC000C6BFFE3540E75F7DE896871A103F3FBAB2 +:105CD000D4788DDA03AD941EAB1F5FF21F265F8F61 +:105CE00006F468DDC8FD8B6624B404BAAEF3901BDD +:105CF000D1BE11EB17F8D38C2EBAEFAD3E9847FD0D +:105D0000B283722CC3FBD0DF03E5E20CFBDE19AEDD +:105D100087DE0CA88D089FEB60EF0D14BEEE6B15AF +:105D20005C97ABB889BC0AF33D87EB63EFD17DC1CB +:105D30007CD8959C04ED6F3EBC4F2D9B86F3EE53B3 +:105D40005750BFCC468A0701A776708789FA4B2B3C +:105D5000D7CB706B98FFAF3F08F6C3F30D07DD2973 +:105D60003C1F4149CF495E43B29DC3611BF7BB80D5 +:105D7000EEEB395FAEEF5947F5FBFAEE2D6FE3F925 +:105D80006AC361BB5E03BCD2B8E79A53EE4803D640 +:105D9000FFED7B4103E079A3EFBB41C43FCCB35C93 +:105DA00005F95174BB5CE0F8E7F2878E47C8008DB7 +:105DB000F36DE8BE87CDE7D09B6FE03FC243E3A61B +:105DC0001ED91E372507C78CEABCB6E607EF3D682B +:105DD000C27C6F1EFAFD83181759FB973F3CF84DA4 +:105DE00094E79F7875D4FB1BBEFFEA83DF003C9EDF +:105DF0003DEC91902FDE7AE27B0FDD0FF5B75E98D8 +:105E0000321355912133797EEBD13F151A304EF381 +:105E1000130BC6E1BA9B1F9B3F8E0C6377BC057CBE +:105E200094F458E14952FA198761BC71503DC24B54 +:105E3000073D8EF61C9D80F09D7DDE1341D9DC0070 +:105E4000CF509ED777AFA37E52ACDF05785DFFC8F9 +:105E5000DDD4AE188A5F73BC14A2FA673CBACED701 +:105E6000F72C59786915964AC4C0F1C800DD3F9DEA +:105E7000FD369C043A5E949D6EEF910F54D48F1BB7 +:105E80001EB987CDEBA0DB59FCC7DCA174BBCC41AC +:105E9000B7F7C8DA7FBE1F1B7BC6648CEF8838F764 +:105EA000BAC7AECECD1497B7E237350AFCAEE27171 +:105EB0002BBF1CBD4A46393BF42F0FDD5F80F4F544 +:105EC000441A90DE3F786F0201BEF89D327003CA1B +:105ED000DFC0131E7D3FF459FDC429BA4FBFF5D86A +:105EE000AF5483EE73602A82BDF71619FCEB43FBB7 +:105EF0006F3D8F136C3810487982693AAD4F2EAAE6 +:105F00003782F439F50FAE4F327E5F9FEC5DEACAFF +:105F100040B776B98CE9CB248B7BAD3BF01B95F871 +:105F2000EDF47455231DCF5C8ECFB3D151AC5FC758 +:105F3000F5CFB1D0F30093D36CF2F8D63E8F8CFB43 +:105F4000A0A0EF5B3CBEBA21E93A4532C8A9B06FC8 +:105F5000887BD9B07472F283E994E3E4E8E2F52334 +:105F6000AFE3FCF0D4241B745C27BE3686410FE3FC +:105F70007E1454A9BFAC43314E99C8174F2B643FD0 +:105F800074690DCE2646067F551BDA7953D275D932 +:105F90001FA3FE7BB940A7E73267FC5A81E3836108 +:105FA00081E7E88B53C6F5E3BE2831FF6E47EF5C0F +:105FB00082FA1FCB528C5FB5CC9A543ECB724ED333 +:105FC00023349E23EB464DA6F1E596D9F4FDA1E7D7 +:105FD000B6A6DFED83FAF6506104EDFD80FEC350F6 +:105FE0002F39FFF3DB56D9A4E7D14EFF26ADCC7293 +:105FF0001EED34B29E877F225BFC487FED396E70C8 +:10600000FE02E7FC59CFC3BF94013F77F3B8E2909B +:10601000F392EE97AD71BF7EAEF74B486A2361F6FF +:106020004D4CB3FA9D1B077AD18FF1C0A2D3FB96DA +:10603000C33CB9A48DFA9961D7AFFA70D670FC6CE5 +:10604000F7337B2466079118F777A7E38E6C3E1E23 +:10605000FF7D270DCFA32BE09F7BE7F4D3F8D86714 +:10606000604A05E02B5D6A6C4278262EEB7B78391E +:10607000E5878FE6F71EE41743F08B693BE7771A55 +:106080009FCC39DFAD0C9EF3DD4A86737EE7277423 +:10609000CECF4FCF9B9F69DE2176F328E37CDF5E76 +:1060A00012A4F668E0B48BEA11B336EA52904F2797 +:1060B0009008E6029D71C5CB703E65A979050E1B5F +:1060C000909B3E83765D00F15F6595D7FF67FDC6C7 +:1060D0009729A3F01BBB03BBE8F9CE7B9E7EE3822E +:1060E00031D119AE08A2BB7AFECF2DFEE245EDBE3E +:1060F000F9CC5F4C68F068A9F2D95613FDCBE3A345 +:106100008FE2FB2FB4CF9D8FF1958289AC3DA242E7 +:106110003BDA732ADB0F3C72D44479DFB3FC6B1596 +:10612000D48F1922FD689F093FA6A7314EFD97A77E +:106130003CF1EB707DBA9EEC451155435DD40FBC2C +:10614000C0EDA7E7D1778AC1FC7365C7E30ECC1712 +:1061500051D05F4D68DE88A78EC5F9EE4FE8B4DEFA +:106160009908D1F6AD89282DDF25B15B141A176483 +:10617000F1E63DDCFFD1AA9255581EE7FBF5B30AC4 +:10618000F35BA54B961F71F4C5EFED598170F97D56 +:10619000D4AECC065747A26212CEB73D1199847097 +:1061A000DC9BA8A6E55657CAC078D4B7DA8F6CD264 +:1061B000007F3E777708EB1D6DBD9BEAD0BEE2FB0A +:1061C00096DB983E49B69C63131C0EB582E5CBA9BD +:1061D00051D6EEC3BCC50C7CD69E7E9FE637A93A4D +:1061E0007B7F8B2BB37F7D2B7F7F73EFD3745FF629 +:1061F00057F7537E0AC2FE87FD36F7BE4ED07EBBF0 +:106200005FE94FE17ED9554222B88F7B5A2A276138 +:106210001ED1E6DE174819F4DBC5C709CC1BA0FE6A +:10622000CEDC962ADAFF7E2FF912F37B139EE7C4A9 +:10623000F240EE5708CF7332F66F82FA3EDE5F5BB4 +:1062400005AC0D76747ECB65B4BF6C987D3C0F6E4B +:106250001FF20BD9EBF4C733BF7511FABD81AF8BB9 +:106260000C7F14EDADA2F2C25A9A0F517101CD9F6D +:106270002D5AEB5F4E4BA3F0266CDFE1EAEEABC587 +:10628000BCB53C89E6AD1519155F61ED97DC82ED73 +:1062900047953C0A8FEF827ACAC7BE09224ED74F74 +:1062A000E374C430246B5C6F7B55592E19469FD024 +:1062B0009D4DE8452A8F3EF48958EAF98E7A91E39C +:1062C000FD3247FB058EF699B67A0BC737A95659AA +:1062D000FCAC5FA6F06EE3714BD2048C0D7219F02A +:1062E000B27A6F70B376C6CFCA972D7CD539C2BA51 +:1062F0009EC3200EC67374CBFAF0FF345FBA5E46BD +:10630000F146FD23693D516762F2C1F6B9837A22F5 +:106310004E32EB8997506E87EA89CADCFE61E0DA7B +:10632000C1F54207D713B060EA477997C45FA77AEF +:1063300080EB8BB43E88AC42FD97D7A1CD97E75256 +:106340007D40E363B07DB7A2DF45951849FEBBFDF4 +:10635000835AD477C2DEEC7031BDB183CB0196A5F0 +:1063600081A1F66640EFB3D99BE2B9C5CE3C3F7A36 +:106370002DE860F48212E995C7F5C148F4BA07F038 +:1063800042A630BCA0F3CA57E78B1AC0F7F95CFFEE +:10639000F8EA0B6B0D4B7E653EA797AFDC4E5F4F67 +:1063A000C867A7B793BEA48EEE0382BE802F4AAF04 +:1063B000C2D40B19ED7FB5652A9377C01B96811067 +:1063C000A9895AF486A2EBFBD02FB66BC9FA8D0AC5 +:1063D000E6F98DC99F81789CA2323F11E9B2EB05A5 +:1063E000312EE88D292AD0DB5BD0449869C8E25B66 +:1063F00085292F89C23841D867BC306EB03A45E252 +:10640000F0DCAFA74CCC13924360C1198C3E088FCF +:1064100058978A7A0FEA92C6E23AC3F0ED6C35C318 +:10642000FEE6DC77049CEB54A6FF4439127F8B7D9B +:106430004FE0D557117165B24B3A701F028076F26A +:10644000FDED1EBE1FED7CF21E7A2E6A50D9FEA60F +:10645000159B04F1ADC99152940353AE9C8FFBD2AE +:106460004E2FEB27DE17E32E1DEC0774CA306F2387 +:106470005FC7186E9F3BDB97F376B981E72734F04F +:10648000FC8462F50CEA7BB9DC7C9BDD2721CE3CE9 +:1064900085E588578534A50E94A6F5BF58DFCE272D +:1064A0005FA770068B9B68DEDFAD2AB34FD3EBE0AE +:1064B000EDB0CF2DE7EFD5201D09F02FF0E57A954F +:1064C000E9330FEE5F20975EBE0F8DC4DFCDAA6E5D +:1064D000D36BA2FD11397A876A894774C4D6F23822 +:1064E000168B6BC91A8B7391B621EBFC07E45B85A5 +:1064F0007499AED274BC76685EFD907C8A76ECD7D7 +:10650000B2B4318AAAD91373E45394D9F3293A1D4A +:1065100076F1F99E4F466B179FEFF96318BB789F92 +:106520003A0ABBD8EBAF0BDD4C3E825D7C51F46D7B +:1065300009ED6272CBFC9F87304F22FA28D6FD0509 +:10654000D7CDAF47BB7716DF17C8BAF9C8F70573C1 +:10655000D8BE70485D4FEDE05A2DFA6F08DFAB985A +:106560006C897C1A8B46E9F6D396593F895219C734 +:10657000E2F56D79D7E8346EEFE08F67385F0A3E59 +:1065800010F1FA8F6B7CE7B80FBA62BF607CCBF476 +:10659000E5A7B59EFFA3457F83FC3B38DFF9E733D2 +:1065A000BCAA66C8CB183C975708FE4F6A8B2CFADA +:1065B0006C73C527EEBFF9A33A4C3EC366948F8F28 +:1065C00032FFE8FD37AA87E90BBA5FA91C6F6D7926 +:1065D000378F94CF90EBB1C0AD861CF90C9FB29F62 +:1065E000C3F00CFA1B0CCFA7E8E7B8283DEF45999C +:1065F000E6CD962FE02F8DC4A85D179608E2A9631B +:106600005EA40BF56E4789A46E2A4DDFB710F3AC7C +:10661000F24CA4FDDA42AA84FEE4B6630B689CA4A3 +:106620004369AAA7F1C43C49DF5F3A14EE6B3C6CA6 +:106630003F76B76C99746018FF999BDFA76AD39F68 +:10664000A470E5CC28C8C3FC88D6DEAF1F73A37D39 +:106650001A2A2C457BA8998F87495DBFB5C45BC1B9 +:1066600010AD47F8DDC512C17DC3DDB29DCE371236 +:106670007CB51E1787EF9E49078689D37EDCF0091B +:106680003C2EF21814AFEE96AD747E8157058D1D29 +:10669000A0575BA54CE30F4ABF87DD478BB0FB1DBE +:1066A000428FC895128D07827EB99DCAD12EBBFE3E +:1066B00051FCCCBEBCD4C3EC00B7B789CAA7C89301 +:1066C000F7C7DBE83E951367FB9558AFE0931CC511 +:1066D00024F8BEE697693C56E57CE1BE3415C3F567 +:1066E00074CD2897905FFE37E7C3CE28AC0BCEC998 +:1066F0009D7C1D5D3CBF4CCC4348F9B797617C3312 +:106700005A3613FDD4DFE5F8D7889FEA4F0DF180A4 +:10671000F6CDE98D6402A0668B275040F9B78C94C2 +:1067200021FFDE5E73FB1568FF6A86E9C9149F18B6 +:10673000AA8F8817E177D748DE72F4BFCD60FA8858 +:1067400084AA46884FB0B8ACA083C0BF5C2933FC94 +:10675000E3BD62BC371095E83D114187417B7EABBC +:10676000F35E94C1F3C819DEDD7E9E9F4DE47B96F7 +:10677000B9ACEBDF4EF940ACFF5F3C3CAEF23FB44E +:10678000FEFB3C6CBF2347A77E7B1980EE8D4A1130 +:106790009A73560EFC6D3947E7F8D9BD18C1475AB0 +:1067A000FF8E5409CC73F47F987E83F087467D2F4B +:1067B00084C66D45EA0321B7D9EE3B94F6B3BC29F4 +:1067C000E10FCC6D61FE4023CAF8A234BAE9366904 +:1067D0003AC60D083D1F4E58479266296DA7FC2109 +:1067E000FA1B6DAAED1E4778956A8BE78F27CC2E92 +:1067F00099402CCF619CF13C5F6BBCE3B988D7A971 +:106800000EBD2D4A67BCEE8F822E225E3742BC4FF2 +:10681000C46F7790E8071E8B9D2BF0BA79EAEC8A5B +:106820004CFD055E0B0D93DE571A0775DC9FD5797D +:10683000249222E85D8AD37B0EA49AE56BC93CAE14 +:106840002BFAFB35A11FDEA5F7DF54D26F52FDE511 +:10685000A08BA0476739A307D2310CED799C8A9DA4 +:106860009C1EDE30A3471EA703A9E378741117F21C +:1068700071709E9D2E2AA7433ECF43F63AF0AE722A +:106880007AA88EE717694C1F9E6F1C75AAC6E53D56 +:10689000400256BA10BD60D8B8FA20FF9EE77C735C +:1068A000C47C7E986FE247982FCB7B4EFA5FCEE98F +:1068B000D36130FA7454317A6857129A2FE9A427B9 +:1068C000FC3520FD42BC1212F4023391E6A7C51933 +:1068D000BE35F80FE936AED14E378D58EAC3D049F0 +:1068E000DCFB92B4E8B51AAEE7152FF56F69837C2F +:1068F00075A4570558B71413EA5F7F0A9349E0BDA2 +:10690000A2BFE452F8B7569124EE7F4565FB99FF8C +:10691000158F7A96FE5B0C76DF261B7EBA122CDF73 +:10692000617B4223A929D9DF0BAAF138E625E95179 +:10693000BD468679430D06B5A383D50C8FF9216337 +:106940003FDA23FFC8E58572B4E5BE95DAC0F629C3 +:106950002DCE4AB55E5D8EF8D0E24C6FAB91DAD7A2 +:10696000657C6ED8F1E81C273B9D2D7875677F6F9D +:10697000B425E66BBD3CC93A7EB21EED2CEDA49B5E +:10698000E6B36AD570BA45F8ABF542F48F6BD51112 +:106990003F2DFB6BEA593DB619DB7B905EA83FEAC1 +:1069A000D83A7387E44DD9D747FFC439A42C8D1743 +:1069B0000187937FFE56F0B399CBD37B0D845EA401 +:1069C000CCD66FCC3999A4D08F39AFBB93CA5FA511 +:1069D0004430CEA1CD03FD06FC75FFADCFD13C09FF +:1069E000D5D05DD67BC1BD1AF367C2F198DD4F9556 +:1069F0000DD79280B59DE507831CA534EA273CA2FC +:106A000061DEDA56B92FCAE584E61B6EFDE03F343D +:106A10001A0F5DA5527B92F877D9F4C78D9A92F13F +:106A2000BE3AC6EB24CBF950EC13A73CF13E945B85 +:106A3000716F430D119B1F5EF8C39D78E849101ECE +:106A40008723D4DEF821F7C7FBFB888EFCE3EFD366 +:106A500075E41F7F9F91CFEA917CACEFC7389E828F +:106A6000F1B310F573FE2861D0B22B5141787C8DC3 +:106A7000C7FFAAF9FDF128F7F7D7D3329988D1E7F4 +:106A80000F261A69B93711A7E5FD8955B47D4FA2C4 +:106A900089D61F49B4D0F2FB09933E3F98E8A4E59C +:106AA00043892EFAFC40620F2D0F250ED2E7DD89B7 +:106AB0006E5A7F2C91A4757F5F43BD8BC2EF3B83E1 +:106AC000766B2002EBB4F2FD4A2FF5DBFBB91FFF1A +:106AD000A9174F6988A76D91C5C3FAE92F3A6C973A +:106AE0009F899DF6FBA863EAF36DF5EAD345B67A74 +:106AF0005EB4CC56CFADBEC0365E4EC54C5BDD6BD2 +:106B00005C627BDF13AAB5D54BCDCFDBDEFF4CCB70 +:106B1000625BBDA4E93ADBFBE357ADB0B587E3ABFD +:106B20006DED55F782698EFC3F81C513A775DF6E49 +:106B30006BBFF0E0376CFDA77BD93E0F7C938FF1E4 +:106B4000412542E83921D0075C8FF9935526F51F7E +:106B5000437B08DBE179117F8FFA93C5FD5C788F69 +:106B6000FA95E53EEE773E7D37ED27CE1370BE9B5E +:106B7000EE45BDFE88DDBF25FC4855D272BA3FE028 +:106B8000FE48BFFFA1C9F4BD00CF3BA9E3708AFB5B +:106B9000542422D3F389681FD46F55EC1EB04AE405 +:106BA0003FA2FF11AF9BE3FDCFA949A85BF0306581 +:106BB0008FBD3EA9CB5E9F7D92F517F559C7ECEDD1 +:106BC00055FCFB364496691EAA7672223D0F127E52 +:106BD0000F54E5F9312BBD3C0E9CE89EFECAA4344F +:106BE000FC3EC0B76EB92F2842323E905B8C13F941 +:106BF000405EB15423B01E5A370A74DC2F4E5F71C9 +:106C00000CF3F4845D975301E35AE0540D3B9C3937 +:106C100015F6BAD37EBAD1EBC87B1BA51D3D5ABB76 +:106C200069B7F81E0ABFBF91C3E70E3777F5A27F99 +:106C30003DBC52A7F9CBCA342986FAB4A352AADFC5 +:106C4000877632D4B10CAF4D6E44FB257CB8F4107E +:106C5000DA0B979D4BD5A03E0E37E933D05E78D145 +:106C60006BF0EFFAC4C3E8270B1FDEE1AA85717E43 +:106C7000ED65F732C20D2C3ED4FA188BE73CF5E2F5 +:106C8000B53AEAF5770ACAA99E38FBB8278A7E8CFE +:106C9000B3F9EC3B0B671F9FF333E4FBDF278EE573 +:106CA0005BBF8771F687BF9AADC0F8670FFD6AB604 +:106CB0004CF39E93B6BCB6751F9E988DFB82594BC4 +:106CC0002AF07EDA065D25346F11D78B7BDB4A42D2 +:106CD000FDA3BB0BD50E1CBF709CB41D4B5F4EA912 +:106CE000ED3E05F07F29F5ABCABCDF3185F66B7D43 +:106CF000DA47C7BB7D127B7E7B5E213D07B4E61978 +:106D0000AD7EDC9B4AD9F9E3F62B4DCF046C7F7145 +:106D10005CC4847A9B0BF401B687098DC7BF5F4AB8 +:106D20002A4A417EE5F9FA7CD413033CEF409C5B90 +:106D3000BD3F4F9200D6651063E8D70AE71A93D695 +:106D4000BBE6637DCB3C56D77FA7F7A2397BA7D4A0 +:106D5000B4631995C178570D8CF7FE6C6906CA416A +:106D6000710ECB1B157184A32F7A18DC2F9650FB64 +:106D700039D0EF62F7653F00EC215F10262F0199B3 +:106D800098B93309D995A8A0F0C0F368011C5EC674 +:106D900016B0EF598C0DB17BED81A5603F58F52EF3 +:106DA000FCEF658DD383DA35915C7ABFA25432153E +:106DB00058EF61DC27617F4925343AEEFD099D9645 +:106DC0003F4984E8F37B13062D8F2422C3FA319DBB +:106DD000E516871DB37B1AAC02E6DBCDF342FE500D +:106DE0002999E51765EFBF37716C4CDD242EFC80C7 +:106DF000BFE266168FCDFAFE46D78D8B81BF3CB7BA +:106E0000C9B1FD4C5F86ADF71EDB9578180F8D0379 +:106E100077F7D4619C11E4CC85F21C965DB28E723A +:106E20001422DD286FE150970BE32CE2BE05B54B31 +:106E3000A0E1C7C5EF1ECD457EA924DD08965A19ED +:106E400027284F734BCA37A2BC9269F6E7875D12B9 +:106E5000CDFBC7F16AA1FC8637F606EA7939BFDABD +:106E6000FD4378FFDD1E8F8172BBEBC93FA9189FE0 +:106E70006E7F59D5D0BF163E7286E631B74BFD2ADC +:106E8000E6EBF87DEA02CC0F6857E353D165E5F7EE +:106E900075B5637D7730FE30B6E3CDEEA7E03055B3 +:106EA000E831FF09DB551F31EB8B617EC5FC32AE4B +:106EB000B78E48EDDA65B47D3CE653FDD9AB2EE8DC +:106EC0009C07EDC80B34DFE0C3B628D6F358DDBF0E +:106ED000F92F6D26F4F7F8989E207E267783751D8E +:106EE000EA19E2E9A21C7C4F66EFC1418496629DDB +:106EF000EB8EFEE967E331BFFD88AB1BFD4DE1235F +:106F00003B28BE513FA13E3A9C38A6B709BA5BEC7C +:106F1000F5B9F8BD24E8A7265D49FC0EC95CC2BEE0 +:106F20003B171E881A1B917E49258229134D396C07 +:106F30003F9CDB0FE358F4F95C997F47CFF11D329A +:106F4000FAC926A4DF56165708AFEC57D10F7FB801 +:106F5000DACC990ECFD72C2F9FB911E8F4928FED90 +:106F6000572DC4CCA943BF46818FDE471079136FDC +:106F70008A7306CF9B58CB2F702A9BD8FD8F35A5DF +:106F8000DD8533D1CFEF65F750D6E4F17A9EBD2E83 +:106F9000BE93755837F3F2A15C7F78C704BC07B184 +:106FA0009E74DD80F71EC8CFDD04F5D5EBBD73738D +:106FB0003F0BF575504755BFAE67C6E7711DEBB681 +:106FC0004A12A2A0D6C7F0B0BE07F8C98F720C0A49 +:106FD0000354CDE168D78532C6DBB71C59E0BD1438 +:106FE000F8BA2CAA4B40FBBD39FFDEAE95405DD50B +:106FF000A7921958FF25E5B335574AFCA30EBFFCED +:1070000069B49CDF7B28C2F1C7B5639E5E55A34679 +:10701000EDD0422946E340E4B844F52DB2C03CC06F +:10702000B73BAF8DC68BFEBB5DA2E76C0C5FE27D0C +:10703000882A991C93A1DCAD02FD302FAA43A6FD3E +:10704000E079A7928F74E96279959D4C3F5F7CC48B +:1070500043CFB5554DD15BA9BF409F47ED9C096417 +:10706000F08FE6DF7E86EBCB393AA991E1BD015F77 +:1070700029BB17DA78CD1AEC3771F9D267A2067EF0 +:107080001F8A7D6F89BCC0F607DF96D82ACCB376FD +:10709000FFCA1FD948F05E7BED85B7015D7ABC8CD5 +:1070A0007EEEBCF8965FA09F3FAF9CD0F6BCF8EF99 +:1070B000F19EC6C058CDC0F8435B3F9CBF73B13D45 +:1070C000A2231D2F45FD817833172E88A2FE53E39E +:1070D000B7A17CFEF3E685EDDA5C8AF7891AE0FD5C +:1070E00041DF428AF79E8DD1F1BAA53EE7CF601706 +:1070F000D0B8EFC2F628C8A39C77EF1A947768FF40 +:10710000299E8B7E9C4F385D587B5599A8839D5551 +:107110000D706CE4F28D8132D80FAA2CEFD781BCB0 +:107120002BB5ACFD9B301FC691D1EE6CC9C77581E4 +:107130009D8BEB9A2A27F7BBD87D33BCCF72B97BE6 +:10714000D917A6C173CF2412C1D0862F8FE9655FEE +:107150009E41F75BC0138DEF0F3CEB4F223E7C79D5 +:107160004D5D1E6C2F29A7E7C39C241B074BA47FF2 +:107170000EBFD7E7D217513BD45B61FF3E87B8F70C +:1071800047EB988F80761DDACF8EE70F96467B4BC4 +:10719000A07F4BFF22AA3F76FBB8DD56C2FCD27718 +:1071A000C6CC2BF0FC78C140772D9A1195E7FA9E5A +:1071B000C4723A79BB16D56744CB3B8AE53E1F6360 +:1071C000DA99FA8CF9541556771FA56135A33F8CCF +:1071D000FAEB6277B215CFCDB9F3BADD38CFB8EBA1 +:1071E000CBCF337E9BA2F9055BFD12FD7E58ABFF32 +:1071F00090BEDCD2FF8E1C9E57C4F589A2333E6E32 +:10720000215D35F83D10A03DFB8E0BD72F0A77800E +:10721000CA849DEF653DA2E3BDA99A4015B5E79EDE +:10722000E7F2EFEE9DBB10ED0F15F504BCBFD7CB19 +:10723000FCB20361D28DF68D1C8A12BADFF1FCC25A +:10724000663EAFD01798B7159D02E7CFAB26D3FCAB +:10725000C6C7AE2AAC457BFBDEF4F74D54F13D22A8 +:107260009ABF9E3AE1FA108C8E1FD54BE87E20DF44 +:1072700091A3A7C6A37CF729546FEDCC63F224D663 +:10728000BD92AFFB1087B75D61FAF0EE04BB8FA52E +:107290009ECB21C959C07F5CAF7BE22B299F7960CF +:1072A000CF334AD11F689A88578107AD582249AB1E +:1072B0009FF75C90F63FE463F388786BB6F8F39D34 +:1072C000393CCE3724BE6A50BC370FD2859D579AC1 +:1072D00003D171A8A77F5CCBE076F2C19B3E369EBE +:1072E0007ACE45E110CF0790DFD0EF22C7E9772CA7 +:1072F000D473326D17EB1D3CB70DB6B375BCA5B397 +:107300007BB46A88C9AB7AD84DED3E129207ACF7D0 +:107310005473D00E9F989633717F76E83A227D9809 +:107320009746CA999E1D2A8726B57FC43A3D86BDD9 +:10733000DD99CF3208F7B931B67508F94AAFA79091 +:10734000B6E37E42EFC7C9E43EF46BACE3F91AEB57 +:10735000DCC05700FFE603C918CEFF9638371C6122 +:10736000DF215DD7B383E78D1836BFD2FAC3B7D11B +:107370007C810DAFF84D09DE5F8F7A19F0B5790F7A +:107380001B277D5F39961A6FA4DF7F1E1520C0F77B +:10739000AEBE2A8CF6869FD3A7504AB9D9BDE43E2B +:1073A00037EA81765FEC77CCEE22511968D03EA89F +:1073B00057D576DC6777AB69BD8BF98ABB7DAC1E90 +:1073C000CD51DBDB2AE97E4FDFF7FBFEA91DEDACDB +:1073D00076AFA8EF6E37E761FFC851F4879A8F7BCD +:1073E0000CB447A07F14E5D5BCAE829E77DACB48BB +:1073F00011DA894F15B2EFEAB53FEED98FE7866F04 +:1074000078E31E9FE5DC7576ECAF27107FC6F14C64 +:10741000DB7813CE6F3C98BF07F12ADA9F2ABC8431 +:107420008E0FFD68AA0429EEBB01F7D1C2C73DD477 +:107430009FBB57B1CBBB28AFE5F2DC91D06DF72EE7 +:1074400055946FE433D244E5DA13CAB7C9B39073E5 +:10745000F5DC7892B4C4B59FE7FB7C9ABF26D0F6E2 +:10746000439CAE1D09638479CAB2CC73E108F34C26 +:10747000B7CD839A78F0BB66C3F8839DF7789C7A82 +:107480005194422FFE9C8F2F93F85773A0BEBABF22 +:10749000FB7214FB4579F52598EA5DC4EDEEEA83AD +:1074A0003B8E223B7EDD137B04E983F92CC8DF553C +:1074B0009ED88BD6FAF9CAC75ED4856333EA419663 +:1074C00047CCCFF1CD81C8E7B1DEBCAD4C378739B1 +:1074D000AF39F55CED107DC8F4DDC7379FDB46C7DB +:1074E000A1F3A9B43DBDAFC58935EF5ECCDF1C8EDD +:1074F0008E2376398FA29CCBA5420F1013F5C24E76 +:10750000D16EBED45E578C7675BA1DEDB3424FBABC +:107510003F7E1768A74FBCFF46E6F7731CEF9789BD +:10752000F7DFA3F69C131EA177B08EF69FFC67CF02 +:10753000A07D88F0ED901CE3E58BF148078E27ECE9 +:10754000FEE99B737E66CAC89F5D35B88F0F7C8548 +:1075500018FB09EEEB115FC4B2DF4DE77CAA9EF386 +:10756000DAF09CC6AF9F3E27213B3D9B5FBC62D8B3 +:107570007BD9FF95B0DFCBBE25DE4CEF894EE7F41B +:107580005B0527071C7FD55EB74D7EFF0EEFDF0A38 +:10759000BC53B3D833954CBEFFE6E00D6781B7F816 +:1075A0005385B7D3CBF47D172F17E84DBD780F6106 +:1075B00081E1A2F71117C0BB5E90D92BA0D4A05CCB +:1075C0002013D34FBFFB9F64EF431DFD1D0BFFFC3A +:1075D000D5573E47BF171292ACF14CB79FE5AF3A73 +:1075E000E16D0578315E7D0FC6AD3D43DB65EEDFB5 +:1075F000FFF698EDC47A6FA7DECFF0A715131AFF38 +:1076000073F6FB20C0E3D75A48B2E503F0BA88AB63 +:107610007F7478D693972DF35EC7E1518B49C6EFFF +:10762000F64C0EF2BC362D4EF3E63A428B87F5EF60 +:107630008F1E8E1B6C70ACF1B3752B59E038CEF1F8 +:10764000D2A99BF47CD8697C5C70D8F17117872330 +:107650001B3E5EE0EDE4DC67D8F993C70F3B0BE01F +:10766000BC9A819E220FAB53FB64E1DE39021DE51B +:10767000C0A743C70323D0D11470E89F2C1C8F8D63 +:1076800000C7C3829F42714A974F0A8E9F71BA64A6 +:1076900083639A80C3F864F1716A0438AEE170AC18 +:1076A000F5B33CD9CE0A9EC7CEF915C34997E56715 +:1076B000E77BD96F8F8BFBCAEDDFC925AF8C934673 +:1076C000932782FB00AE6B2439F93D7FEF758E87DF +:1076D000357BDD34FFF01683E5078F34DF2D4A5309 +:1076E000E170F9E8B8CF58E3DE23C1B3C9CFE25562 +:1076F0006B1F71DBD6BDFA408E23DFC664F875E0E0 +:1077000075081DFF3FC7E74E3FDBF747C2A79097BD +:107710004F0B8F23C967563C8658DED9C78DC7915A +:10772000E0F9D9A8F1B8A913FDFCEF81D9E62EFD47 +:107730003B3EB3BDBFF6EF7CF9B1E0F100E271145E +:10774000FAF2EF781C1E9EC7468DC74D1ADE9FFECB +:10775000BB7C7F3CF2ED3C277E5AF874CE9B0D1F1C +:10776000D9F0EA9C4F8C77CB08F33BF138121CA27E +:10777000AC1F2D3E1DE7DD4F0D9F8E79FF6A7CF219 +:10778000F1CE1B9F23C021CAEB46CD9F267DEF2063 +:10779000FF9EC194079A8F5F09FBFB89FA59B3E8F2 +:1077A00077D5E4E8B425D308D91664BFFF3585C77B +:1077B000FB9CF36D0BB273C1F1FAF9EB687E752C8B +:1077C00087DE193829457E5185793E8BDD341EE6EA +:1077D000EC779CE36B4D308FFBFBA3818BA1FFE229 +:1077E00067DD34CF31DBFA48BD655DF4DEA085BED0 +:1077F000EEA1F83E4E8C6D5518A769C80C87A0F312 +:10780000C9D8928FA6876299E99C8D4F464BEF911C +:10781000E0B92E58364A3A27297E0BC8E0EF595E68 +:10782000C0BE5F6C2818875B7CDA43EFD59DC247EA +:1078300073E9F796FE3108EF2FAE9FC17E8F4AE4C1 +:1078400057CA84E6A9AFD83E857E07882C5B42DF05 +:107850007F80FB7F86D049F017FF7DA971CB4CC597 +:10786000FA7B4EAF04457C385E82F0F4A8D10B7FE2 +:1078700000E31FBFCA1341BFA26749C39600F0CF00 +:10788000C9ABF35CD6EF361DE6FC367B19F38FF5FA +:107890003C1F5324CB39F6590E0FF4BFBE3F03FEF5 +:1078A0007A78FFABE32E9EA71F2D596CC9C3FA4F00 +:1078B00047BBB3FF4F8341DA7E32CB779952BC7F0F +:1078C000E3D2E1FB936563C4EFDC4DB0FE6E93132E +:1078D0007F8B82F1A783503EE78A3F7007F2718D5C +:1078E00046F998C89130C22DF0B040239DF8938698 +:1078F000824E0BC757EEC73C3F018F980F53813024 +:107900007FA42ACAF28AF2791EE89C4E6F7223CDB8 +:10791000B3EC12DF2F9E80FC01F3BF80FC906D7EE4 +:10792000316E814C522A8CEBF3442660BCD9B90EDF +:10793000F1DE893FCDFF02C2D7735CD237950E5D71 +:10794000BF532F4DDE63E79B3F71BE29E0DFCD21A2 +:1079500072BCA4D1D2FF0F412FED7FBEFC74106525 +:1079600018CAC9BBE28A01F35E23B3B8258E6FCD76 +:107970007FDCC7F9EB4DFE7E81DBF45D8071B45393 +:107980004CBF1CDCBFBA2493DC1EE7F797F6072B2D +:107990006C79BD4B1A66B4E34F1202BF84517DF57A +:1079A0001CBF84F6BF9ACF7F508D97CCF0E37A8CC2 +:1079B0007518D71CED3A04BEB3EA518E67941FF4D4 +:1079C000A357727EBD7A69AFB40ECA7D5C6ECF706C +:1079D000BD20FA2DCCE5F3A8F1566F8490F2DCEDD2 +:1079E0007777565039A771AFBADC7BEFC67C36D2B9 +:1079F000C6E69FBCF4ED668CABF6A82CEFF0D92F51 +:107A0000FA9298D002FC6AF3B3172C7D3F81796516 +:107A100063546332FB2E37D34FEF927845EED8B4E0 +:107A20009E1AA297DA96F0DFD331262FCE28479BF5 +:107A300038BC8C9F0E2617E7DE64A14F3C57B5D1AA +:107A4000E3B904F39F9D70F8CF963ECFFC62B00E71 +:107A50009A37F3EB4B4BF6E13A0A56BD9FC03CFB1D +:107A6000782ECB8B792F39F3615CAF58BF58E798EC +:107A7000FD174CC67C886B1BDD0EFDCCE4EDEA06E1 +:107A800087DEE6FD2BDCD135344EFB05967720C62C +:107A90002BA8077C4DC775C536054AD37816F8DC88 +:107AA000A946960FFE6E14C0BB62BF9FE6FD8E6DA9 +:107AB000EDBF03F9E85D7F2C37DFA2BFBECCE99AAA +:107AC000E657B6DFE17BB86F2D960D25D3FEB5A442 +:107AD000DE9D116ED563BC66D50343F48163BFD4CC +:107AE000A52E05E3E68DA4899627DD03B43CCDE9F8 +:107AF00021FA9F26A9C01CB42BEADD348FEB74D386 +:107B000092DC1596757CC3B18E5FF3FECEF996AD0F +:107B100062FB7636F958A6740722B0DEDF34BB6903 +:107B20009ED9F56BDDE6B5F0FEB2B52C4FE8FA262E +:107B3000FBBA0FAA4DC7AF44B8FE81C17502D8AADF +:107B40003A9FF231B53F5E4AE6CFC0DF8D3A8134CD +:107B5000423DBA38477CCF87FE8E619CFD93BC5076 +:107B60007FD34F31CFEE7FE5B2BCFD13F54B2EC76F +:107B7000D0D5CD7BC84FFA09DA59C3DB05F1BBEC90 +:107B800076C4E45D76FB7776A38BDD2B93532537A4 +:107B900058E4E5EDBC1C8AB76B96BA32C69D06F276 +:107BA000FCB4FDC45FDCAB32D9816A3ED38B57EFA6 +:107BB000CADC5FCD0FB0F63D99DB17F2F989DC4DD9 +:107BC000ED81AB1B33BFB75667FBE7E975FF753D2A +:107BD000E6099D94ECDFE3BA5167F4AFD1D93E7169 +:107BE00062FFEACBC388EFF52E1DEFC5EFCC8F9473 +:107BF000225F7D79ED191AB7BB84BF7F913FF6589C +:107C00002E945F797E454718E8D8B38C445C465A79 +:107C10006F38E17882CBBBD88760FF7B05F7BF0266 +:107C2000FC3D6AD46B7232F225B66433371FE96EBD +:107C3000AEA6DFB9DFEFD319DDC13E8697E3A7EC2F +:107C4000F6EED3B9767BCA49CF9B77E50C7B9E795C +:107C50008944A81D6E36E4E8A82F5EBACB9DFA1CB5 +:107C6000D45F68C8A1BF1B2AC61576EF898659EB79 +:107C700010AEF71A7224EB7D466799D5FE6D707FC2 +:107C800022E7F0130D8CCF5FBA6B566045867E7F7E +:107C9000C82D1D955FE3A5BB86979797B87E78950D +:107CA000AF4BF013DADF56BDF281832E8D2BEDF34F +:107CB0005EB32CC70E3F979393B1561FDA2FA007E0 +:107CC00026235F0B7BF8FF021C53D2540080000078 +:107CD0001F8B080000000000000BDD7D0B7854D5E1 +:107CE000B9E8DAB3F7BC924932339999BCC30C01B5 +:107CF0000C10601220848A30214442419CF00C2FE9 +:107D00001D10629010A2C59EF45C4E3310C0106D21 +:107D10008D9683D4A20E1195565B03CDE989CAC511 +:107D20000141E969FD1A5E9656D4A14511444D5BA7 +:107D300039E5F472F5ACFF5F6B65F6DE4908F4D8FF +:107D4000EF7EDFC5CF6F65EDBDF65AFFFADFFFBFEF +:107D50001E43368F256422215FC1BF29BD4B4236A9 +:107D600012329E90530652D35E40C8898AB9292B9D +:107D70000AE03951888790B912FDCB4B48929DFE9D +:107D8000E186F7639342F4FD078D84446F21E4C3D9 +:107D9000460B899A093969E87E7B828B90F0D38AF9 +:107DA000FF39DA7EE8F6E59B32B01BFFDBE3E8F350 +:107DB000D06FE5A2165ACBE0FDE8E1086D9049D4FA +:107DC000821F90AFE8FFD5DB1349343F5E27E7D32E +:107DD0000C00CF83BC0DD99C4A3BEBDDCF05800B5B +:107DE000E09935372564EB7FDE9FF0761739FC6B21 +:107DF00076C961733221F7CEA2E5E8DEE3E9BFBFC1 +:107E0000D758EFB15FA7FF9A5DDAF90C040F211183 +:107E1000A443ED4BB266DEF7EDD1E2C12593FA76CD +:107E2000DACF12A5DD3891D26149ED39B29A96FBCD +:107E3000532C88D7FD295E2C97101268473AFA8791 +:107E4000578EA2E3B72510691CA5CFEC84C8501F3C +:107E5000A5F79C5B7D6A781672BACCDFB9AF3CC3DC +:107E60000BFCE0DDE186F6DF96C973B497F7CEEC44 +:107E7000DFE2A6745C71DC002DC982AAD2A4F1B441 +:107E80005E7C4A2E9269FB797607C23F7FDE72A341 +:107E9000BADFAA95DAF9CC5F9AA8C1CB410E6FB9C7 +:107EA00085846D45C075DDE382A3E2F3ACDE5979CC +:107EB0007B061D677EED6313619CEAED878CC3E949 +:107EC000BC6EB7B3F94EB77B71DCA50A9FAF85CE08 +:107ED00037899077014880FF3B52E439F85B891974 +:107EE000E1B980EBAEFA0BE5015B9CEFC5F32D1C0D +:107EF0000FF5760396636CA1357637FE194E711235 +:107F0000F203437DA99B36F9328568E0FE8ACFC330 +:107F100064F63E4FE4F83C7AF058C7F0F8EE993931 +:107F20005BA0DE1F1EFF059E8EEFCD1F03E1F15407 +:107F30005B428080FC4D4E42FA76984818E67FFA04 +:107F40008ECCC8265F1CCE2F5318BE5CF3FEDA68B9 +:107F50001F1DE78377EFBFB00CE49AB6DB6C73327A +:107F6000F8015F4F390CD89EC4A83C14C7E52135F1 +:107F700085D2A7A0379CBFE77A412F3F67574BAD0B +:107F8000F2682C23A9C9BDDBF727178B2512043E05 +:107F9000D8FB80B9A6AD0FF9798FE3AB977E802926 +:107FA000D07A88FF5D3DAF722B9D0ED994983C1915 +:107FB000E6795637EE59124D9A00749A27FB814E96 +:107FC00067EB991E14EF3B7574E96F9E4B6B981E1F +:107FD000E96F3E4B8D91243FEDF7F7EBE58A082DD5 +:107FE00097D1F60B47E377E740EF2CABD7D2F934C4 +:107FF00009DE311EE09AC5E03A656ABDA398D2F960 +:10800000E477F38AC2F07EDE0F925650BC7471BEE4 +:108010003D09FC6C83E75AF8DFD2E9DD5EFAF64CE5 +:1080200082665C2117A782DA7EBA74FDE8F9728154 +:108030008E2FF79A8239A0274FEF5EBAEC41E0CF3E +:10804000DD09FEA1DEDE7879D921237E4F021FAB48 +:10805000F45487C9FF69870BF838DDBFC9DB9B7F04 +:108060004FCE6A4A580EFC3127B1260225FFFE0783 +:10807000A5F96D3205756F640EC2FFA683C12DF49C +:108080000AE1F64DF0C7BBDC1E087B7699EB97EA58 +:10809000EDE78C5EDAFE2ED02F36DED805FDA7EF99 +:1080A0006EA1F0C50CAC1E7E2029F29C2F3E9E983E +:1080B000D77FEAF86669AD165F03D9B9DF450C15BD +:1080C00011D5B8AB76FADA5AA4787DE97A5AF7C5B1 +:1080D000EDDEDE88019F5F6948C1F99F9AF323E4D2 +:1080E00097F777E415815ABA613B1831FC43EC20CD +:1080F000E0E77A7670ACC3774376F043422A901E6D +:10810000D7E6CE9E08F3FBE754F42F3EDCCEF8759D +:1081100008A7F7FBA6D828357C1F72B93DCBE7FB33 +:10812000610F7E83C9602745BB2C07D3FFEF7339EE +:1081300078BF412B07850E2D5DABB76BE7B9AC5E01 +:108140002B07931D766CFF7E435302E89F53C03785 +:10815000C0E7D532DAA753C132B4037BC10EA8F011 +:108160003C5937CE40F2B6580ADF07F427BB13EC70 +:10817000C08F2E202FD8D58F191DAF405B2A4216F5 +:10818000A7A14F3BD3A3D73ED6D21DFC0D351E9FD2 +:1081900002BBABD2034B6AB470916EEDF7270D4C66 +:1081A0008EC3B34DE81FDA4D0C4E7B5B823DECC3B2 +:1081B00026C5602F7BC6D77DBF588968C6BF17F814 +:1081C000E43AE30FE46FDDACBFF901F1AF45399F4D +:1081D000958878FD60831C9D42EBBF9B95B85BF64C +:1081E000F5E57F8E5D0BF4BD322BD10072D81F1CDC +:1081F000FFAFFCD00F368C45BBA16FFF18C7EB401B +:10820000F2F7C186EBE3571F1FF4674F9E74DC9CA7 +:108210003D7982EBFF935FCA68E74E0599FEEFB1A7 +:108220001BDCFF11FE4EEAEC5B2F12CAEA07F9389D +:10823000ABB657A27F7AD210DC9204F43C61B00353 +:108240003F169F6171CA2AEE870978BE4CD1CA9F3A +:10825000B03F03D94FBDFC9C9EFF50118C7B7AFE32 +:10826000428D7FBCE06A1689A6C6EBF3ABA400F88A +:10827000053DF26AD5D2FD1DBB09C77F47277FF3B5 +:10828000AFE6623FC2BEADDABE9CF9CDF58F65A800 +:10829000E7D3E6B0E0F7CF3AD8F73D7EB3C2FC664D +:1082A0007753ECC120FDFE0B5B30C5A9A2D3091D9D +:1082B0009D4E73FA423BE0BFF94AD0D8171F2E9863 +:1082C00027EBF413F3E7F4FA48B4FF03D7BBFA71D2 +:1082D000F4F8BCD1F1BE4AB10BBFFC2392471F5C3E +:1082E000D6FAB1FDF16FCFB8BAF6FA71630EAF8668 +:1082F0003FF4E33F0B71828A5FF5E3A43B195E8B89 +:10830000B733BA9F9C7D2BF2E1A9396F4C02BA7D3D +:10831000B0E12FA717829E59797412D8857467121D +:10832000B6FF804E291DF83D24A15FB870FBF22DE9 +:1083300019AC3DC6E1274FE5211F7B9C8C7F4F9AEE +:10834000FC1A3BA897CF47793CB32785D92942DA55 +:10835000738249378EAFDFF783AF9BB51B8F8AF1EE +:10836000AF8D1D05F6E0079C7EB4F71CA8F717F744 +:108370008B926284C5B165B6662905FCC7E083A00F +:1083800017BAE727D9DB282AE69B0333418F9F3EA4 +:1083900061306C647E14CB733010886FB6EFE111DE +:1083A000B4FDDCA01CB052502BA1CD444AD7A9B6D5 +:1083B00030F437EEE4AC1793207E5B64F6825E9F68 +:1083C0003F25F8A90C72B630D1BB89D68BBB061FEE +:1083D00072D1FA9C59921DFA3B42ED7A8CCEFF275E +:1083E00050F906610052DC9C12F570E5B66994EE16 +:1083F00023DC1D061BFDE2D9C72BB759A8FEDAB254 +:1084000031980E21F5DD8F8FDE66B98DD2D113E85C +:108410009AE2A7F879DC3FC39243E7F5A4F8BE706F +:108420005B601221AF19423E89BEEF7CBC6286427E +:10843000F1A348D30A0DF4FB579D4F6C83F60B163E +:10844000AC5DF56FF4FDBB8FAF9DA1D0FE8B978A1D +:10845000EF1F9851A65078691F2413EADFB642DD5A +:108460009518F41A0AE9FC1FCF9FA1C078CEC0FD71 +:1084700084D6AF3C9E8FF09484787BF22F33CA86EB +:10848000C4FBBB93BE0FD37A464319F92325554944 +:108490002C2C81BE7BA7B4BE4CA1E30F4F6DDC56E4 +:1084A000309C9009B34A13099DAF3F75C70C7321E7 +:1084B000D02950E8A56551EA0F11DEE2A5E111844B +:1084C000B63785776DABA0F36839B33B0871F5D348 +:1084D00012E31FABA53E6AA07FE636044908FDB74C +:1084E00056C637D9DE61C8B7A29E4FEBA354F574C8 +:1084F00056EFD844EE0EF6218FE753995FD491D012 +:10850000F7FB6D5C9EE87C515E53CE90C04BB43C53 +:108510009A403A2CD4DEDC6926E34A68FCFC80D31E +:10852000C6E5888F6B617089EF48F84E27C8C92C63 +:10853000E1CBD3F773285C0F717D90E7E776804439 +:1085400095B920F2B201E171CBD2DD95F4B9278162 +:1085500084F6D1D29D4AB03E8B90C03E5BBCDF5FBB +:10856000F36ECBF3827B80FFCBD3320A9B7CF17E10 +:1085700028BC9B015E9177A2702B00B75B9E53785D +:108580007F810AEE0206778793E1830EF322F83D9E +:108590001D5D2306431C729B53ABFF28FF1B09E4A0 +:1085A0001153B91C7BD9F7EE3282F6B97B9B35D2D9 +:1085B00006FE9E25E40FAAF2314FF279D75E1D4EDA +:1085C0002263E3CF6B95A809F447EDD5027CEE6EEC +:1085D000EA9B2E228F597BD541C263D5CFD9FCE2CD +:1085E000FDB8F07D7FF05080517FAD777004F27E52 +:1085F0001B088BFFD62705D29CD7F17B6AAF4AFDBB +:10860000C0AFE073DF201A43031EE9735210878F57 +:10861000E209EDDB7AD01A14A5EBF795A611355FC8 +:108620002B9C0E26367FC0B34105C72F39FEE600CE +:108630007F61FF04F3412B320B305EECF85BD9C84D +:108640004AEC6F13E36F85C54FC50AD387C55D4EEE +:108650007B588AF385E00741CF0E677D29E2AB5254 +:10866000B2B7F97ACFBB4BC84550C2F1D39686E476 +:10867000E52AFF41F0BD5E4EA84560FA9DF2FF324B +:10868000904B88EB002F7E2A0F496A3A32B84BE1B3 +:108690009BF1C8078C7E1936463F8E9FDEFC9035D5 +:1086A000003FE4E2FBE2AEC326C0772D8733ED4CFA +:1086B000347964019BC71A5A1E83A415E4FB9C8C71 +:1086C000AF3BDACBC6DE4AC7EF6836125049C593D6 +:1086D000847E3FFFCBA954FFA5F5D4A9BEF722BEE7 +:1086E000B9BEA4EE8125DEFEB5D4F333360F89E39F +:1086F000C70546DE1987F74E8ED74A98B71BF11784 +:10870000B63835724B4A8AE2FA45C8A9E84FF49365 +:1087100091CAF8C3C3CB1EFD4318BF517D83F942F4 +:10872000D26C8D0C95FE117A471A40EF5472BDC37E +:108730009E1FA56E2EB4F378BCC324EAB79D3856AD +:108740003614FCF807D265EF796A57E649A12D8403 +:10875000C239F78CB71A9EF7F85F141136EA4FCC7E +:10876000A70FBFA2EFE7752584E564B0E756AF4DCC +:10877000E597FDB955423E7B8086A00D45BDF9E3E6 +:108780008174138E73A2222F25A4868BE3FF4EC81B +:10879000F3E6F5964F51A770571B64D57B1BB33B8F +:1087A000ADC981B1A914FF7F944815FAC1D3DC1A71 +:1087B0007F66A1531B6F087FC69112F846EAF8DE68 +:1087C000EDFBF37FDC1056A2FCB27C50DAAC8408DF +:1087D000E02BAD9D70F98C1A6A818E32094B74FEC4 +:1087E0006FA7E6E0B827E6D397292ABF5F0A66E3BA +:1087F000BA81DBEC873C05A50BCEBF5CBEFF90D1F8 +:10880000057496FC4D74D4C5A90EEEA7758F437DF3 +:108810009FC8F8F0A89558ACB4FFB7688974E77A98 +:10882000E937B9C3995E3209BBC2F5E03516578BFB +:10883000F747A5CA6C3BAD1F75DF52D824617FC4D2 +:10884000AAE27FDA2F01787EF3E5B7CE4FA1F836A2 +:108850000E66FDB9E8F873547230A182CDBB86F381 +:108860007F4D6A2293E744D6DF511F6513186728AE +:108870009D0F958737134205F508D7F7183D29DF77 +:1088800003BD3C065A821C9858FD888BD1EB4A2ABE +:108890002BFF99D73DC9AC9D9E3EA75C7C1D4D62C8 +:1088A000F2DC7296FA35791ABF8690C1306E90006C +:1088B000BFB494D2F9F4D1CF7AEEA7503B86F3ED52 +:1088C0006D5798FEDB2C45BAC6D0B1361B19BFBD1B +:1088D0006E8FD821AED3B73725B27CBEB043C27FEE +:1088E000BFD25E99027AF1471C6F261E5F0A3836A6 +:1088F000F3FC45F2D5448C3F7770B894FCF348679D +:10890000A58476493F359260D8AEA2B3D16ED0F837 +:10891000FDC95793F1FBDAAB634924F57AFABA182B +:10892000DF533F4E13675C39BB10E1D4CF4B8FB799 +:10893000EF7378453D19E054C19542BA11CE9412B7 +:108940002D7CFDF91D9D9CEEB557658D9D89C36BF2 +:10895000D23CFF3E8DB7C2EAF13F66E3C7C7A50A26 +:108960004635EE86D4C02BA9285793EC1F8DA4055D +:10897000E5F7AF64B41FCC4ED172B78DD973D0CBAD +:10898000225E0139B68F21647A6AE921F8BEC7BE3A +:10899000F1EF841E493913F7E724FAED74EE474CE2 +:1089A000E776B6C7EF53987F2AE0FE1B6F27F44D9A +:1089B00085E58D31E755F39C9EEAC5EF8F093D476C +:1089C000BC39F03DE5D7B0DA6EEBF1F96E0F3EAD94 +:1089D0001A3E88E3D386CFBF2E3FB07852481E059B +:1089E000F9D20A890CA5C584694C4F88EF3E4F65C2 +:1089F0007EFCE75C5F087D22FC2CD1EE2FD0CE0DF3 +:108A000065A2C64EF467A7D5764292E3FAA98ED343 +:108A1000CF77E984C94BF135CAC5FC8E4477E06F46 +:108A2000A0FF9584E4D1A09F77FFDF32EF460A775D +:108A3000F7DB467F1B74D7C9E859BA687D93429F1C +:108A40001BDB25BB99C4E1B335EC1BB392CED7C871 +:108A5000F54FAD8BCDA3D615350DA1E366D6B2F19A +:108A6000B3DB0F498A4A6EB26B58BB649791D33B14 +:108A7000B2B17C1C3C0F282D94C44E784EE1021DEF +:108A80000DEF33DB25CC6B67D6D38953FA66FA59E1 +:108A9000BF367F44BAA7203EBF664365017CD3EC56 +:108AA00049F4835E0FBA43E92E80EB6C340AE899EF +:108AB00070B64B81B8AEDE1DC8708D8FCFCF2BDB6B +:108AC00033415F269E6570B53AB57C40C8C33CEE25 +:108AD0006A63765026C7C09F4219A7E37936E5A39B +:108AE0005D11ED3D4EAED73D24B41FFD1CD24C9020 +:108AF0004E04E7E1D9340CD757041DE37ECDF022B4 +:108B0000F06BF21E892A90477D75175B47D0F3E31F +:108B1000046E0FE83C8AD4F318C87E8B76C67EE2DA +:108B200050C1E7899C6F4A17B916C3FC6A37FF2208 +:108B3000D12C011D764B896807BE8FED04DE291C00 +:108B4000652E151F29CEBD52169DCFB75613BB4CAF +:108B5000FA87AFB6E1E76356AAE571B309F1BFDB67 +:108B6000A45D3F177EFA1217B303CFBA837360BCBC +:108B7000BACEC74C40CFD57BCE99427DE8E59EEF7B +:108B80006F103F520DF3FF6BAB2C11986FE922056C +:108B9000E9B566B32962F641FE7A5FD400FEEC06C1 +:108BA000E207B9AE6DDFF76626C54F566D603CE64D +:108BB000C528937515C4ED44666D5402BB9BD9BEA0 +:108BC000BC16F9373DD10FFC0B7E28F807974B6D8B +:108BD0006189EAD3CBC670BE97BEBFEC4BF0C3BA77 +:108BE000C59B5626E702BF6FED9B7E4CA2229BB42D +:108BF000DF1C85B2DE1D7A10F8BA65A3B714E8D37E +:108C0000524EECC037D4EF7800EAE54D3602FC7FD7 +:108C1000A3F3167AA287BF3630397801F404F23D07 +:108C20002902FDF2A82B89E91703D33B6F1A199C7F +:108C30000A87F34A6A6033F2230861467CFEFA71C0 +:108C4000557CD37233FC3BA1A2DDE4A570ADE1FA03 +:108C5000A374D11EE98F2ABAFFD0C5D67B335FDA61 +:108C60002D79917FF76C2C77617B62F6C27396FF4A +:108C70005843DFAF52E90D318F3EF44704F06C3BAF +:108C8000DB7584E98F28F29B8057D051D0EB259774 +:108C900017E1BC9D9A677C6EA274A5FDBD393801B1 +:108CA000FB13F2AC97BF975C2C3F9D59B54732142C +:108CB000303F33A8824FB44B744F6D77211EBA10EA +:108CC0000F6BAB14169773780E2FBC6B25D07FAD4E +:108CD0002BA310F8F520EF77FBBF1F477E5CDB2A44 +:108CE000B1F5E6D6E3A6F990BF0AFF5806BF6C2699 +:108CF000730DC88E7F3B8EF66166078BB7D776EC17 +:108D000053EEB1C5F9D477E9F05DC0C76BDBCDC4D4 +:108D10002A01FDD87CF5FC49F507CA0D099B70DDD9 +:108D200004E201D49724E483F85BE8D72BDCAF237B +:108D3000B6E03803E851CFA842D08BC739DCA2FF98 +:108D4000F204FF610BE8C7221617083B768AE39B03 +:108D5000F61F45FD4ABD5C8C8778FFBDEDC2C82279 +:108D6000A0C3356EAF287DCF02FFE9ED83E8DFF7C2 +:108D7000F41CE24D52D10DF0ADE2B74F5C6CDDE476 +:108D8000139782FD2953199E14139BBFB2C91281F8 +:108D9000FCC75B8E0A861FA705F173D4B0A216E844 +:108DA000743493F159B361537E3DB34B97019EC325 +:108DB0000B9309D3434CEF6CFF39B37FB5611BC6EE +:108DC0005BB5A1794867E2B2FA61DD90848E98E6DE +:108DD00027C5F9404F57EFFE432698C7CC76C6FF0C +:108DE000717C31FB23F895EA33A4F7159167A3F45E +:108DF000027C8AF838D5128B1ABDBDE53315E263C3 +:108E00006ADBE6417C0C79E012CB75E36231AEF8A7 +:108E10005EC4C56B1A7E9501E57DE9BFC452C88169 +:108E200088BF447BB79BD1EF4B6E07B3399FAC191A +:108E3000D78E7CBEE67C3DCA87AD82E909DB59ADA1 +:108E40007E13F117218FF078ADFD76C8B7973F23D9 +:108E5000D99B48FF7AE85E586702FD7E8D7ACB3455 +:108E60004EA8D5ADA315B819DF5ED84B118C76A0EE +:108E70001EFDE3CBBB245C77BDD1FE48F49404F423 +:108E80005BC37178F9A5B2891F42BCBC3705F7B93D +:108E90007CF2D2DCEF7C48E1BDBC678A1FECABAB57 +:108EA0002988FCD0EDB6FAC1FFA56AB002E2EF8DC9 +:108EB000ED6F24433EE9E28B638A40FF9571F82E03 +:108EC000FD5C6E007C6C7AE1E5C9F07E4D444A059C +:108ED000BFEEF2DE67BE047B56B3671DEE236B7AEE +:108EE000F17513AC331822BBD9F3BD29E8FF5D7CC3 +:108EF000F6B1C980E7A6F6267C7FE9D9DD583FFCAC +:108F0000C2CB07FF06FE4230D90FED2EFDFCB1EFBC +:108F1000FE0DF8765EB21FE6511B52D8BAA0E0579C +:108F2000BDFED97708E54EF0C74CF0FB80CFAB987B +:108F30001E11FC79A294AD9BCC99CAD6634ECCB0DD +:108F400056A19FCBE5AE6EB16337C89D81E22F9DE0 +:108F50007E3F6F966337ACABACE5F3AF2D60FCD0D2 +:108F60004CB905F20889055153166DB770E9BEC9B1 +:108F700080CFE6045262453E8524261D07858890F1 +:108F8000B9AD6FFD9744E9388AAAB38F683C457B39 +:108F9000DBF315F57FDF31B27C4133F7CF172E3D80 +:108FA00027B1F503C5FE919003F97AF64DC1FE4451 +:108FB000BB1E7F8DE3A199E74768FF686F8AD7F3EF +:108FC000BCA7B4A209D69B8F3E189D047CFBEAC7C0 +:108FD0000F24D416A8F99B7D9FD9C1E43EB3A6EB1C +:108FE0007698E737F3978F8561D6F2F51417E4D1B9 +:108FF000C0DE846D1AFDB685CB99C74E5CDF80FC60 +:109000008C425CB08FAF9CAA5E23E2E739ECDF6B49 +:10901000667E93F7F585CFC1FAD70E6328633CD8F7 +:109020009B666EA7F63078E9F776583FA7FDD9BF63 +:109030005184FD74199DF87D987D3F7D0F5B3F8BBA +:1090400070F8BB73C14E417FE36C6057C2556857DF +:10905000BC263FF0C32568821B82C3A3978D8ACFAD +:109060005B9F4F013D06EBD0CFBA4B9F76BBE3A58C +:10907000C8BFE8E9718EBFCFF5049E76031C7B5311 +:1090800007D8EFCCE87578E167A6181D77FB6BE78A +:10909000500FD501BFC3F8A1F31A7B2BF869C72B7A +:1090A000E790DFE77432FAD475FA8C10CF7CD218CF +:1090B000207FA40E661DE7EF1D52AC1AF789BC6233 +:1090C000B543BEEC33CEFF6B2ACE7D047A6B70675E +:1090D0008617E2ECCF5E617270D460407C1E6D1B1F +:1090E000B91BEC0BF56B9195EBEABD6D66C42FF3E4 +:1090F000F34B17AD7C0CE2AEB535C40FFAA1AEA3AD +:1091000032DB8B76C58CF8ADEB3C8EFC22FC5B6AC7 +:109110000F5742BF0E6A77AC10874D0B76203D5C2F +:1091200049D8DE312DF45839F2576131F0D7E18555 +:1091300007B75A60DC69C40EFDEFC809BC9285F31D +:109140009008EC8FD8616C9DAAD0EF77947BED14DA +:1091500083145F7BD2C1CE937C13B76B2BD16FAEE0 +:109160004B5FE2C7FD697A7DF1CA46F4AFEABC09FC +:1091700008CFCC4EE901E677D808835F42BE9C1940 +:10918000B93502F2FF29C79BC0DF67C6AEBB002F0F +:109190009FFD1B6540FA7EE634C6A78E69EDA86781 +:1091A000DE7A85FA35A3E3FC98F40BEADFD0BA53F4 +:1091B000B14B7E94B3B966353D5B8DCC4E39B8DD8D +:1091C000C9AB6074FDC4CDECD4276E032F4D5CBEDB +:1091D000791ED71E1E0D76F6534E77EC0EF43FEF38 +:1091E00077EDCA28CA51ED4BCC2F73990385DF5216 +:1091F000F1ADAB8CD949914F87FC3AE6D5217E7110 +:1092000041DCEC6D83FD44947E48DF6FBA6E290229 +:109210007C257B987C67E64B18E7517F0DF1E6597A +:10922000B447A92E60F9F8BEE244A787E709538343 +:10923000E324FA9D3B2D09FD18B75C6AB0821D2A14 +:1092400094FC6D5E5CF7C3B8B6DB9DE16FD3C835A7 +:10925000F3F73EF62431BA467EA3401E27D7E365D6 +:10926000FDEAFCB9DE71B2D50FF1CEACD6F068885C +:109270002FC43A809877646342955A8FA57B18FE75 +:1092800023C34915E805EAB7DB306F6CA7E3403C20 +:10929000DE76EBB32C1E6F6271A087ED0F28A7F36B +:1092A00003BFCC9D175CCFEC6B12CEC39D4756C05D +:1092B00077EEA674A9C9A7C6B31DF76D3DCBE92CFF +:1092C000FCF13A2A2FE8C7BDC6F8B10EFC385FFFA3 +:1092D000FA21CEDF4C3FCCEC6474AFEB64F64FC4A4 +:1092E000E7A0F7607F21E809DF98B85CD79962C3EF +:1092F000803F059FD74D8E0D03FCF4A71FCA132393 +:109300002877E5238761FE41F4F399D18BEB739FB6 +:10931000D1F812FD582E0F49AF32391074D1C73928 +:109320000017C48B423F07DDC10A0FC065886E85F8 +:109330007D02429FD6BDBA6D585FFBBD843EB52805 +:109340004C6F592289912615FFC05A57521196B871 +:109350001F2BB181E3E38C84F9E196FC533F6D410F +:10936000FBDF1E053EB36677DD06FA6BB187E5D3FA +:109370009E96187DC53ABF076213D01B6D89B8DF72 +:1093800056E46DF470DDC1F948E05FC41990978729 +:10939000F6DFF630FF62356FD7E89134765CF0B5D2 +:1093A000D7103A07FB0EFAB33FE2BBAF2B8F24C6B0 +:1093B0001176308EE78D9A7505984F6541FFED5A0D +:1093C0000F313D23F84EBC7F94FB55E59477A1DD2A +:1093D000CF447EB64A61797F2BD1ECC712FD89BAA2 +:1093E0003E7FAE2F53BE9439FC0102FD61BE81FE6B +:1093F0004B995CE187F93DC1F1A5FF4E21CA1731B8 +:10940000E157F954F0709F8C465964B2530D57449C +:1094100003973E5FDFE397E9FAE90FEE66DDBC9A5A +:10942000F30E12C853255A92B9FC5E43BF7F5BCF3F +:10943000F982B0BF12F51DCB770D348E1E5EABB72F +:109440006F786F941ECD867D35C0CF3F6BE4FBAE49 +:10945000B6DFD83C0FF279C23A047EB754D1ACA340 +:10946000D8FCDE8D903F9E72CD5B88FE35DFB799CC +:109470003499FC49A6FC9A5CD29A0FE749DC412D4D +:10948000FC6955099A7D6F1921A7A69E5593A96974 +:109490009F533F58F37E50C308CD7B5FB84853CFEE +:1094A0006BFE86A6FDD0D6A99AFA2D3BBFA9693FCF +:1094B0003C3247536FD9D85E05F23072EF62CD77F8 +:1094C0005394985C489F8F6A5FA1A5870E9F638025 +:1094D000AF419E2CB122B53CFD976730D26DCA5585 +:1094E0002D3E601D473DCECDF2C7984E1D7FE8BE94 +:1094F00017F29548187F241E68FE13AC7327EAE51F +:1095000088F73BDAC2E4A757BFFDC8C9A6C4BB149D +:10951000E0FF835051F9D3EF346ACFCD9457A5B013 +:10952000F5A4AB7306F0BB999C2C30B375C60589C6 +:10953000DAF34313D3985E284CE379A61BE4E733B0 +:109540009C9F4FF4C7CFD4CDF580BDA820188FDBEA +:109550002B36FE09F23A8B942829A4F2B39DCF67EB +:1095600007FF7E67A31DFB7BB2311DCB5D8D5E7C4B +:10957000FE74633E9691463F3E6F6B2CC1720FF5B1 +:1095800003A17CBEB1829DBF680C62BB9F34566153 +:10959000F95263089FF7A2DF5527DADB05F4CFC93C +:1095A000AAFD070BABE41BA2CF42F24897DCC739F8 +:1095B000A35EDFCB4BAFBB4FBBE16C61C511159F09 +:1095C00056A425B9709D71029980F1ED00DFFFB5B9 +:1095D000D15F7164E8C0FCADE71F72ED5B4383A30C +:1095E0007ABF5F000C9D49F5C9133B1F0E17C4F1EC +:1095F000D43F5FF58D9F80E5B34C08FA4783FD515A +:109600007D7F48C7BF01254513478BF2CD346627C0 +:109610004B39BF96EAF8F58534E6373CC4DBFDFFED +:10962000C6AF87AD49E8971F367AB3DD2AFA1FB671 +:1096300026E273924FBCF328FDA81767F751FE3D51 +:109640009DC6D60725884C307F3CC48E7912EB4DE1 +:10965000E653747894A85FE9A3FD952A4C7F49B03E +:109660003109FAF71BE2FA15F74BA8F6DFCBBDF983 +:1096700081F61336813FB622B618FCB9CB695E8DF0 +:10968000BE9DAAC8D7D5D75341DEFAC80BF6FAEE6D +:1096900026E5ED17206F89FF387913FC4EAEE50DF6 +:1096A00051EF8F13652997B7B54FBC81F226F87D2E +:1096B0002AF7E344BB0F39BF7FC8F5F361EEA7007B +:1096C0007F14F5E1AFBC97A6F5F36E16DFA584E92C +:1096D00045426299A0276EF67B2A390A7C576A496F +:1096E0000E278EBEF9EFFBC367AFEF3A5D37946F7D +:1096F000A29A460239AFE6D0555B6C61E027B2D33F +:109700007839A6E2E3CAE4E0D534DABED3483A6158 +:109710007D829A79AFDD837C8F78A5FF82165A2FE0 +:10972000E4F50961C96BA27C63A69506908FD89B6E +:10973000FF05FAA29097137809E9D674909B8224CA +:10974000DCEFEE1768E279D362519D465D1C8FD83D +:10975000BA08FD1269BD13C2985602EBEE2D92BFF6 +:1097600059A6E3C969BE26006A6C45A94C7029AFA9 +:1097700015CB49A4AB0996F626936E19DADF5A1178 +:109780006E023807916B76E4F3B4E7D77E05FB777A +:1097900020397903786BB0B075EABF5A59199E4ADF +:1097A000D8B9B9F7AD11889B6692D0A074DAEE9F54 +:1097B000E4C03218FFAF06BBFB10224BF9430CF399 +:1097C000BE12EA83A9B67155AB508ED973C4B72FB8 +:1097D000DE0EEB72EFFABF6E617988A66D8CDF9BAF +:1097E00036B2FAC474C6DFA3795996CEE4C24AC22F +:1097F0006182FD52CA79107F8C6EF914EFC58C0E10 +:109800008857DB31A44B026947BC6E9BBF23B4056C +:10981000DF2CC57D3E523448BE4A54F3CF8DF567E8 +:10982000B1B4062C948F12AADAA3C6EBF4A7707A0F +:109830002AF34CB83FF269293403F0485E92B0DF56 +:1098400004DEAF91D413C9A786E386E932E746E880 +:10985000629CEAEF0A50169C9F20E13E969BA5CFA2 +:109860001A606A779C950F6690DD904FA87191748D +:1098700042E5C764B3A09C6DCEF186E1BD6918C115 +:1098800073C42426A11C88798AFD7682FF283EEEC7 +:109890004BA7F43445A473801F537A3DC683448993 +:1098A0006541BB8312E3033DDFAE4F1779846CC67D +:1098B000EFE4FAF66FDF1D8E775D208CE17DB37EDD +:1098C0009D4EEBA58E252E3B21B7654C99A550F9F1 +:1098D000D8779CA030A6652CFC1EE8E77DF31D3FE1 +:1098E00072D3F6DFCBEC7EC408EF9749F83E39938C +:1098F000BEA7FCF96E2969873C52C413DA04F85FED +:10990000FC6BEF51386ABAEFCDFB72C1AEB8CAFC3E +:10991000313CAFB2C4EC85F5A776C86302A35CA363 +:10992000F050BA3F0B00CBAC3E85D61709F4F0F7E8 +:109930007BE06FCA37792B7D1BE19C0BD925D9C100 +:109940004F19B48BFA2DB47EE17B642CE48FFBD3EA +:109950005B13443D2CE1F9FCDB74EF855E1BB2F236 +:10996000FE0FFE05FAEF9271FF8654C5D67326F0FE +:10997000F2365E16F272D14AB6FE34A46A4204F29E +:109980007A1F19BD4D36E0C75104CF9B1285F1E710 +:109990003B398E089E97964813E4D1C2DB089EFFA0 +:1099A00003B982F54EFF4A4AEB71E0325A2290A782 +:1099B0003FD9D83E66B351A53F296D02C52CADC332 +:1099C000E02EC0386C1289FF837994C7E7857C76D6 +:1099D0003BAF4FAF6579397380EA55B06F3A7D6C14 +:1099E0002591740BEE2BF6E17E11793AB103BCB9E7 +:1099F00015D1C3B09E3B36508A7A753C09BDD1451E +:109A0000CB89817D582FB1449A608A5360BC3CB0A9 +:109A10009F5E05E858463D5CA85790562CBF49DA32 +:109A2000B19C45BAB09C4DBAB10C12BB11CAAE7410 +:109A30001FF2EF640BD5F383715D0EF3A0453BCDB0 +:109A4000982F9D53113279FBF04FAAC5394212CAA3 +:109A5000C53CB012CA5DA0F2373E5AB47019DCB7EB +:109A6000E13568F7C5BEC3F5662C9DF9173B24AEFA +:109A700047D68A7B3B423F5C45EB4B2A6EF1C3F9EC +:109A80006EFA1EF3C0E14516CCFFED307A73C0FFCD +:109A90004881C36F90B7ABDDF74F902C3A31E3DECE +:109AA0000C90D7EACD5B73200EA89EC5CFD328E1DA +:109AB0009CF92A39BFB09CC125F63B88E717393C91 +:109AC00029B06605EBC4147E5C2714F9BCC50ED41E +:109AD00033E5D471807DEB57F93C225C2F08F9A95E +:109AE000117CA0844D99F4BB057E9F1FF6CD2D8E71 +:109AF000B03C71B942A2E02FF7C05FB5FB4142F91B +:109B00006371CD21CCEBC7F729B1F5E9D2451DCB67 +:109B100060FCEA956662C6F5A2D6F7409E17D69815 +:109B2000BD50AF5ECAF2AAA4CA82FBF8AB77FAB600 +:109B3000809C2EDC10F0435E958E87F9D8DB2D6C6F +:109B40009DD242C78775BDE9357C5F48CD435DC076 +:109B50009FB45D00FCE5DB697B8596D984EDBB4B4A +:109B600008B37D4C09D3D83E26AFB9FE28DC0BE301 +:109B70005D47FC613AECC25DBB25B6FF98A03F355E +:109B800090BFF3D443D71C186F825F30089E86596C +:109B90003EB941F6C27E52A2D8B19FC5FC9C687303 +:109BA0004D13E6C3AF54D1C9D1F117B4FAD8B98572 +:109BB000234CCE175415C6204F65A960E7F3A04388 +:109BC000C82B5B4805CA7D2161F98F05FC7C803E6E +:109BD0006EB03498D8B824AA811FF419D8C5FEFCF9 +:109BE000B0FEE627F406E897EE3EE45DAA788BF92E +:109BF0006BBC04F907B92DB2F8E52403B05A5066DE +:109C0000E70CC284ED1BDDC0EC8AF579496DCF2DE0 +:109C1000AEF05DB015E7C291215B6C88B656A28E9E +:109C2000232C5383ABD4FBC8B7950697A9D78BA633 +:109C300067307EAFE025F9753817C69327337EFF6E +:109C4000DDDB04EF91F9F86D8A4F903FC9C2E473F0 +:109C500000BC0C38FF955C8FF332EE677A9B80BEB8 +:109C60004B3206233CE32A2A65583F1AFBD4D8AC72 +:109C70007F26BDE9D31FFEFBC397312DB03283F998 +:109C8000E5861BF1CBCBE5EC25B574DE7F5E6AC6BD +:109C9000F55761378B805820D75D2442651FEC074C +:109CA000DA958C666297BC902785BDF0BC1F60F387 +:109CB0002A0B51347952BBA69E5593AE699F53EF40 +:109CC000D5BC1FD490AF79EF0BFB35F5BCE6124D38 +:109CD000FBA1AD014DFD969D159AF6C323414D7D27 +:109CE000E4DE2A4DFB3FD32945E97CC69D96FD6104 +:109CF000A06F38D055501CB7E3A3DA439AEF27C4BE +:109D000096CF02FD35A6B346D30F394BFD365AAF79 +:109D1000A7FF31BAF865D023FE1A893CE90314B2D3 +:109D2000F7D89ED6FD67675C043DBEB8CA18F7F742 +:109D3000E02BF2C89F803E7E9D9FA88FABEF3D1623 +:109D40003E6AA3F0D51C6B3D0AF2F06C8636CE2E2F +:109D5000976D38AF3F9F9271FF4B0D70A82B4EC788 +:109D60003F434730EF4304F785E9E7DD1387CBBB7B +:109D70008C78DF0A9D076C5D37A76BE96DF56AE9A2 +:109D80009D98AFA577925F4BEF94122DBD1D81FC7E +:109D90003EF19B5AA1A5BBC06F09FD0FF0FB75E317 +:109DA000F35719FABCE024D4B35776723DDB5B0F4E +:109DB000CCB314C7F50055A911435E1C6FBDF482E6 +:109DC0008DC5333D7A6127D70B3BF57A21F04606E6 +:109DD000856F7CC88771E56F974DC8023D97490E26 +:109DE00088F311A1AF507F87859C9FCB8075C006FB +:109DF0007F2C0C76629719FDC97D4787613C7062A4 +:109E000028B90DC38A332CEE693131782F65D850CB +:109E1000EF3C2D052FC1F7E682201CDB20176E6377 +:109E20007CF15BD08774B2BF83381DCECEEBF408D3 +:109E3000D1E941BD3F2CF4CC84F0718C9B6FD66E80 +:109E40000C14B7172E65F644E8D709BC4E5684D1DA +:109E5000BF1776A6A924E483F3754596804C0CEAD7 +:109E6000383E8676670A09A31EBEB5C2FFA3F50475 +:109E7000FCAADF66815FD52B9E8FE33B2573BC6612 +:109E80009D578357FD3A6F5AA658E70DA665AAD687 +:109E900079F75BFDC85FA717B13865DCF1214D3656 +:109EA000FA9D67B50FFD98FD0EFF1B503FBD96C58F +:109EB0008DE34F0564D85F9557EFC37D76FB7DC179 +:109EC00032A89F7E90BD2F3E13C2FD57431AD8FB88 +:109ED000A24DF56FC039FEF9DF65EF5FFB742B9E75 +:109EE000FFA2468E7D5FDA5A06F5D35BD8FB096781 +:109EF000234D501FDECCC797DADF48063BF83D768E +:109F0000FF42AF7887C73753383D7AD193C70D9357 +:109F1000797B11DF4CA962745AD91DBC1DD94A47FF +:109F20002FBD5F5F4E42589F4EC258CE20112C6706 +:109F30009228BEBF83C4B07E2784F2B45E49BC467B +:109F4000A8DF93998F789F4B4363CC5794F82D7873 +:109F5000EFDEF9FFF80E498EAF9B0BFFA0D5195C21 +:109F60000BFE83AB2C88F783DC93C9FCDD78C9FC3E +:109F7000068F339CEBA7EF3FE6E7CDE2EBDFC5B8FA +:109F80006F830EF908F8BB0B33D97EDCE9A404F724 +:109F90000B4F2F61E7EEA6833F4CF1137D4271C05A +:109FA0007E3CBC0BA98FB8399E27D2E58F9530C671 +:109FB0001F45B2772408CB86CC71DF83387A3F08FF +:109FC000622621EB3227DF11CE467E45FF66A07662 +:109FD000A7F83E9FFD7C1D745ED06740FE2CD4FA2E +:109FE0004F1B3259DC2FCAE9A4AA2CE96B9C57D12C +:109FF000A630EEE79EDF66266C7F0EC9847D38D5DD +:10A00000A41EE9FAD1A830D255E89DF99CEFE67379 +:10A010007EFA68B719E970619514817C4EF5AEB788 +:10A02000CE00BFF5EB37150C457D338FF3E76F8F0F +:10A03000566F617A9DFB534F8C90BF1A19977BEA3C +:10A040002786E15EC3779731BD086EB7461FF6E3FA +:10A0500027BA795DC0911596D04EDCA83E7489FE72 +:10A06000B93ECC14FD0728EBD17A2E7F2BD5323C9C +:10A07000B8799955ABB72BA18D2007E9A455827A01 +:10A080000EE9C6D24BEC9BDC797024D36F807AB694 +:10A09000A5BE7216EDDF01FA0FE6BFEDF0388DFEBA +:10A0A000E3F966A3E5115C8F55486B00F208CA918D +:10A0B0009E3CDB2F403F7E5D79B6D733BDBC7DFD36 +:10A0C00004B6FFAA7E0C94E78DB666CC1FEBF32C8A +:10A0D000BDF232DAFCC56DADDC6EB40A7B114A8785 +:10A0E00079C3B64F8DDD98E8F74239450AA27E590B +:10A0F0009616EA02FD7D3BA9CF86F6064B4C063B41 +:10A10000D1C2CF19B50C13716CB713E3433BCBB776 +:10A110008FE1347EF900DB97F572BE05F7CD6FF560 +:10A1200098B642FE2E7E9E937FC7CFA78EE6F72479 +:10A130006C4DE0F8989D80F1486A221D8F7E972033 +:10A14000FB7D00D70F244AD53CD83FE21D06A54928 +:10A15000B6BB37B2FCE4854CC45BECC44CFAFDA939 +:10A1600057140271F9CBF6EE044701C0D3B6B78D90 +:10A17000C2F3C531669E5FDF2B87CD709F4CD7E55C +:10A18000C7A1FD982E239AE231D70C6CDFA0893C41 +:10A1900002FB7DE658648B42FD8F4FBECDF7DF2872 +:10A1A000FE42F5FE9CD5D94C5F9EE8277F38C85902 +:10A1B0009A9D05EF33FA3EF76BCA3268CE218A7B4F +:10A1C00091FEE2269A7D22839CB3B11F51375E75C2 +:10A1D0009050AABA1FC637462548E03CA4F1AA0B06 +:10A1E000DFA750FF15D611521C250AC45B5389FD09 +:10A1F0004880E2158E4A00227ADDBB3049E9EEF153 +:10A200001B07835D627E27E6777DB0FEA2F537C728 +:10A21000106D5D9FCF0D65333B62D4DDDB10CAF658 +:10A22000B2E73DF0B27B1BC4F9F10E25900879A08E +:10A23000153CBF44D203783EF2D149AEC216155E3A +:10A240001673FC75F07B26ECB43DDE5FA09BC76601 +:10A250002A3F3E4AEFD95992A6BDD05BCB84FC84FD +:10A260001D28C74BB9FCECCF66E7E097D9D9BA4BAC +:10A2700068DB87A837971F4F300112EF5E4A92477D +:10A28000D1FA39DB90F7F7D072C5EC92ADE04F50C0 +:10A290007EFDDD4A50660F27B2FBF1A6E617B37BC1 +:10A2A00007A6E13AAA14CE427D7BA3F6E2AED4E53E +:10A2B000966C0A474272C46BA7FD248CF818F7EF1E +:10A2C0004DCF2288C7849E7B3063C334F7E2A696C5 +:10A2D0005AB2C7E3FED8A813F651FE6F33A3F33189 +:10A2E00012007F6BDDC1E198F73A981D32413B7156 +:10A2F0005E961CE9C6FB3ACAC03FC9EB830F6C5F90 +:10A3000018809FF4FC0080831D1E882FCA006E3ABF +:10A310009F15C97DD317FFD17A99C581F772367021 +:10A320003A8B716F964F5D794CAF744B52A44D1AB6 +:10A33000183EB19FB847BE381F8B52E0497F7ECF91 +:10A34000C4F581299B9DDF3B981D44BC7E9EF3A7ED +:10A3500061460AC30AB12F7E80F93EFC3F9CEF8D17 +:10A36000D22194CDE9907063703D9DC5E6F78F864C +:10A37000CB2AE01A7D6370EDFF1FE22B40BADF7736 +:10A38000E40D0C17A5A715E849A675E3B9EF15CE9E +:10A390001B83EFB75F037CCE1B83EFCD2CB01D5129 +:10A3A00006DF02E237A6CB1C18D5791AFD391A71DF +:10A3B000BE660135DBE0D72698D8FA5AC21C89E57B +:10A3C00089FECEF3343D74F490A803F4E14133CB1D +:10A3D00033FABB87A9F7DDBDC7F173303BF007B097 +:10A3E000732B8671BD50A16DF7075D3B719F0639D8 +:10A3F000CBF677B7E40F6963FB8FD994ADD95EBC18 +:10A4000037F75296C4E37F71FF1C5B1FDC5AEC4D9B +:10A4100003FF2160B145656A1FB68EA8C987F59014 +:10A4200040FA7F9C61FBACA9DFAAA29380E352E3D0 +:10A4300031FB1063FF785823EF2FAEEF635DE51714 +:10A440009ED035B51D5FB3F797F621AABCCC28B8CE +:10A450008118E9D56D60F961BEEF26EDE6F0DE0CFE +:10A46000FB36C683FE0FA2FE17F6A2EED51F7BC1F8 +:10A470000E51BB4F609DA13B2901ED41D388927CD9 +:10A48000F53A506E8FDDD6DE8311B7D7FFB37B3040 +:10A49000E27E8C44C2A97DF5AFE073419780AD6F39 +:10A4A0007A88FDB5DF6F6CB79C1F0AF797E45BA154 +:10A4B0008C36FAB16C482D5D9A8DFB6BF93985604D +:10A4C000A7E5BC267F1BD5D43342C72CE735F9DB83 +:10A4D0002E4D5DECA735BAD87EDAC0380B9E3BCD49 +:10A4E000A93FA3E9A7D9C0EE591AD410D37C1F08FD +:10A4F000D8C20EF083C31F6BDAB76C647C9CD7DCC8 +:10A50000AD796E540204F6B30E6DBDAAE9E7969DCF +:10A51000C4AAAE0F8F58ACEAEF46EEB56BEAA3DAE9 +:10A52000D335ED8DF67C4D5DECF34EB6B07D3AA59E +:10A53000A450F3BE21B57229F81F2925ED1A387AE7 +:10A54000F6850FB0CF4699D48C794958D39C54D412 +:10A550007B7F78436A00FBD7F37FF8A1497C3D8974 +:10A56000C5D7821FC8387F3EBCEF8F2F367B02D500 +:10A57000D0DF8FF9BD259238079D4FBCFCFEBA3E57 +:10A58000CFD73C96CDFCC34F4C7DBF7F90BF37EA01 +:10A59000EE3389F32DBBCFE493A9E21E24EDFD73C6 +:10A5A000A27D13EF275566FBB306BA87CE783551E7 +:10A5B000730F5D7CBC647CFEC9E0EB8FF7D84D8FD8 +:10A5C00027F7333FD375EF6B6913F873F6FDFEE998 +:10A5D0001EFC6568E4BE0DE2014DFC928DEF8DBA64 +:10A5E0007B5FD4F10D3C1F28BEE9B907F06B8F6B80 +:10A5F00008DB277493FE7180F857C3FD3003F5FF25 +:10A600006E76C00F76E2EFB5BB09606333B09FB7DB +:10A6100040FF6D35B1F38C5483619E45C437441FB0 +:10A62000FFE4B3FD6FCBD2FF03FD8104C81950BB1B +:10A630009AF05D2BAE9BDC2DD94D80D7BB2CDDEF86 +:10A64000FDC80BF7ED47DFFB5F98E710714DA20CDB +:10A65000EB72370A674F9E85DFCB00796FB0DB6303 +:10A66000A68CC0F3358F42DC0630F073128F52187F +:10A6700032A8FE4831D8F01C548A89D5C7409E863E +:10A68000B6BB422E3B97A9F83E85AF87A41C502E3F +:10A69000A9F1FD2861F8D1AF8B7CD1F59704B09377 +:10A6A0009F676BD747AE9059BF1909F899C4F6B99F +:10A6B0008D7E655A9AFADE939EF52391EFE9277F06 +:10A6C0001CDF1FA3CDD388FCCC6D3799A7E9B94710 +:10A6D0004097A71928CF644C0BD97290BFB4792644 +:10A6E000D361D6AE7B37BB4753E49DC43C9D394C08 +:10A6F0007EFF941670C2F757B203A939B47EC2CA5E +:10A70000F23427664C4F81A97D41022910A7C27EF1 +:10A71000DF2C676F3E80BCCA6695FC9F70F4AD2F3E +:10A72000BC39CC0FB93B876039C713F0C1781F9B88 +:10A73000D8EF627C9CC0CB6496CF2DE869CFE02C2B +:10A74000E5E5C73CDFFBB19368EE6D16EDCAF8771F +:10A75000E71B2D96CD4355E33F61AE87F8CE9DC7ED +:10A76000CF6705187E3E7F85F9F52B5BCF99E01CFE +:10A77000D4EC9CD2BB011FD00EE6B1528999E05EA9 +:10A78000B6EFB84313E1799D9704F663BE2B669A42 +:10A790004BF1FC39F75B3E37B2BCD1E756560A782D +:10A7A00066E754DE0DF3FCFCB69809F7F588FAF875 +:10A7B00018CADFEC9C208EF7F9445DFD0E56277C0D +:10A7C000BF4680F31BDACD3EECA4DE2EEAEF255B1C +:10A7D00067E27947BD9EC84ED2E89165077E897CC5 +:10A7E0007B97856C8554D4DD07D24C105CD42487CC +:10A7F00087D935798FBF4F3F7C9ED385F36A29ED8A +:10A80000CE7D721CE631EC6D749CB50758DE7BADD5 +:10A81000985F87767E6B385D07BA974FEF670C2499 +:10A82000BFD201BE6F8D97E4E02FB3A0BF4907DF11 +:10A830004E8572AB548F7968D53EDB33AF517E9134 +:10A840000DDDA96AB915EB3D6F49315C97AB23ADBE +:10A8500048EFBA0E3AAF6428AD51C833934EEDBC01 +:10A8600056ABF75DD2EFEE23ED269F04F18431BEA7 +:10A870004E4CFFAF255DD8DFDA76ED73BDBD19888C +:10A880000FDEE7F227F8AA86E3A146E03DA2854F56 +:10A89000DC4B24EEFD9C49424F027F563A2C6179F5 +:10A8A0000CAC2B0596015CCB8917E9BA5C673FC5F8 +:10A8B0003D46F7D8E6211FDDD3AC873F600238570D +:10A8C000B55E7F5E827F0E72F837E478B15C9B30B4 +:10A8D000EB18CAC6B82E5C5FA2F0FD0CE44BC04773 +:10A8E0009400DE4F2EDA7F3ABEEBF9289D939C341C +:10A8F000CD02F6E1AED45007CC27E74CEC23093665 +:10A9000064DA02B8FEF459E7C577609F1D5E7E31B8 +:10A91000110688EDB895FE59D329DB212F50D3F9C4 +:10A9200006F26B7F78EB39974EBA055C87FA824B5B +:10A93000E4A3F5F2B33787E5672ABD8137E13BE34E +:10A94000E076BC27ABFB41762EDC25530BEB844530 +:10A95000C2B0942CC5EF7921FE8005F27D53CCEC7A +:10A960003E9AF7EC532D70EEDDE3300441FF6DB6F7 +:10A97000AF70C0F967710FB84732B07BFFC90A07E3 +:10A98000DC27B2CCCCEFADFC7662348FF2EBEB2659 +:10A99000763FA82B3184F71C743B641CBF74D1171D +:10A9A00063E15E82CC6BB622D8DFB62FC7AB3957D6 +:10A9B00030A5AC7B2CBBA793D1CD95C7EF63729B21 +:10A9C000B6DAA91DDB4CED0C942FF27982AE66EB62 +:10A9D00009113BDE09C7D721D65B187FD659038FF3 +:10A9E0004E857D02C7D9EF757D610FA4C07A80FEC8 +:10A9F0005E49E1CFF6776FF3FFE17AE41F752FA48C +:10AA0000C847D73914E252DDD72AE659C7EFABD190 +:10AA1000D35BBC7FED4BB94F7E48CF65F992FEE228 +:10AA20009D945C666FEAE09E6E953DAEA3F60BE0EA +:10AA3000AC837BBAAFE3EFBFC8F152077E7AAAFAC4 +:10AA400039939B783F2E7CFF133ECF9F1C3354B429 +:10AA5000F5016F492E9BCF08B71284F5909151767E +:10AA60001F667FEDC439EDFEE0EA981ABB0BE08665 +:10AA70007C6D5FE315E4B2762F827E80750167AC52 +:10AA80001AE5C11E7811E2FCCF5FB9C5A7BE5FB061 +:10AA90003587E1F3B319CC5E8B7B398B957A09F856 +:10AAA0004AD0637A6AF005D00F702F2FCBFB873521 +:10AAB00074003EF6A23FAE8DD704DC9BF97A9288F3 +:10AAC000D306BA07B50EEE29BF2EFE1576CF2A871C +:10AAD000A35CDE80FB252EB64AB8FFED2209356166 +:10AAE000FD1109F77D5E3CC1FC4688B0A562D0CF60 +:10AAF0004C1EAA9F9B9B1205A90FB1FDD5CBF7ACAD +:10AB0000C1FD4B50DF40F5C6F27476AE6BC5666D85 +:10AB10007CB3F211AD9E86756488DB6A4810ED53F4 +:10AB2000F5766DFB1AC2D65B6B74FB9E3CDCAEE81F +:10AB3000FDF655B9DC5F2F26C53773EEEA5112A832 +:10AB4000CD457D1B9441AF8EE7FB9E2FEEC94B5345 +:10AB5000FF9ECE619FA4396F7489CAF710FAFDE594 +:10AB6000463B968DB981F5D0CFA3B9A17FCA057FA9 +:10AB7000E538C79FD2CD7EAFA08AD933332423E9ED +:10AB80009FE62516F4C31F82FBBF281ECD666627ED +:10AB9000855F20CBDF9293E9FB891FAE74E03EFF17 +:10ABA00017A757C03E0EF78B8901C0774B69A010DD +:10ABB000F4684BA50DEF7DD86D60F7025ACCEC9E82 +:10ABC000A2C84F261E86B5F321ED8F4D85A5167BB5 +:10ABD0002C4A92BD9097DA88FB629A2713BCCF4D1E +:10ABE0008C57120BEE03B872E7D9FC00628B2F5022 +:10ABF0006857F54FB8DDAFE338FF51671EDECFFB76 +:10AC0000E703B7603982307E10E70A604CF06704D2 +:10AC1000BE2E37D2BAEA9CE68876296A4CC67BEE0D +:10AC200070FF45EDA6A86709D8A91F2BB83FC7F547 +:10AC30007AC6546F721C3EF19DB05F4B200E853575 +:10AC40001DEE9789730D4BAC249CA8DA8F53C5F980 +:10AC500076D1011657AD20FE5CF86EB185241B2815 +:10AC6000CE9694B58F477BB3C6E800BFF3A6F7A78F +:10AC70007079D2B7BB046730C0EEBD62C6F5A6BA24 +:10AC8000E793F03E9075866E1CFFA8D0BB22CF3DA7 +:10AC90008404603F53DDC15B703DCE0CF74D15A1C0 +:10ACA0007EB3005D8F823DA5F35EFD9A15EFB1EB9B +:10ACB000B9CFC54EC220B7EB0EA661BCECCA0B14CF +:10ACC0003E5000F787C47251EEA93E8394F7FBB95A +:10ACD000ABEF84FD307599D45FA175EB33DFBE1304 +:10ACE0007E57A46E70ACDA40EB85CF7C9FD547C40D +:10ACF0003E82FAADCFFC90D58B62D532AD2F78E68F +:10AD00000556870D6994B1EE79E66777C2F9954BE0 +:10AD10000EE13FC4F03E9FBA576F31B4A8E87EE71A +:10AD200020A62F2F5959BB4B3E768F37C98F697E8E +:10AD30000F60EC2003F77B98FF23E629BE23E97D13 +:10AD4000F7FF29B76FABF93D3C531249B395DD4B83 +:10AD50001E86FD5C470EDC82783991EBE4F88AE1CF +:10AD6000BE1BD18F9EBFC4B8F7F1DF35FA8CEF7BE5 +:10AD700012EFFFC6E946C7D98CE314040A61FF5BF2 +:10AD8000DD9CEC42A01BA597C2E9A5B0FB827733FE +:10AD9000F868BF0EF0F7ECDD63C1AE1CB9968DF715 +:10ADA0002D0AB8A95F6743FF8BC3AF0C62E3AC6E9B +:10ADB000E2F8A230CB08375BAF05FA82BD59C0F18B +:10ADC00076A7AA3DF6971DC3FB9D6F767E9E41FF39 +:10ADD00098F9A9E812807587239DC3912E0B7AE814 +:10ADE000FE98A69F4B1B75DF95105C8FAA73E6E15A +:10ADF000770FF17BE8C5BDC0F09D6F34F31F81FF75 +:10AE0000C5FD6A243008D7BD6AB97EE8B917AD9D83 +:10AE10009DD72043E8FC00AF73668DE3F3B3F3F9ED +:10AE2000D9D5F73DF7C8DDA9EEDC79AAFB9EC5F3BD +:10AE30001EBCF7F45750C4FBD3C86F5FFD01DDFBA8 +:10AE4000A347C5206677BE367A083875F8ECC1B3DB +:10AE50000E3E814F905BFCAE402B3F02CE5BB99C17 +:10AE6000F7925FDFDF391E5FD75BFB1D4A47D8FFD4 +:10AE7000EBD5F2F3DA0E9F017E774E7CD792DFA6F8 +:10AE8000FD3DA18EFBC390875877A012F79FAEFDC2 +:10AE9000F79FFE224CBFBFEFE57F4D2614DF1795CD +:10AEA000560FDCD354FBDC96E400E485947032E862 +:10AEB000CB8B11F63BAE7A7DFE14970BE10FD5716B +:10AEC000BB72E9270FCF067CFCE773463BD8CD75F4 +:10AED0007BCD5133C6EDABD12FA2F573ACFE10E69E +:10AEE00021D7756AFDA0FB5EF8578F17F9299C657D +:10AEF0004887329A456859B7C7E88F02BE4EC97E67 +:10AF00003A0C5947BAB7027CFAEF010EB852615DAC +:10AF1000BBBCDC94D2FB3DB54026F03FD6753C8CE3 +:10AF2000FED43ADDBEF09A7EFCA9470769F39F0282 +:10AF30002F24E2463FA6E9C72FFCEC550ADFC5DF08 +:10AF4000A715E2FD957B7E952CD1F797DBF3529602 +:10AF500063FCB649A37744F919F80166B53D65F479 +:10AF6000F4764A987B210758596B8C2643DC5CBBEE +:10AF7000DB88FE68ED4F9F7D1EF23EE47766BC479E +:10AF800061CD4F8FBEF30D5A5FB3CFE89AC5C0B6FF +:10AF9000499E385DD679993F22E870DFCF8FE27DF8 +:10AFA0005EF01CFC54418F35FB0E99C8A8DE782B4F +:10AFB0006B3F84F76BF6A24BFBB9DBF1FECD1FFFB5 +:10AFC000D504FC7CF1A044D27CBDBFAF79EE57C95B +:10AFD000D04ED0A5874EBDE8139DFDEA386C87F9A9 +:10AFE00081FEE8544FD518F2FDBFFF14F15EF37BEC +:10AFF000B31FE65DF3B36F2503FC17947AC6CF4FFA +:10B000006DF1C0F9B71A63187F47B2C6C89ED73C26 +:10B01000FD20F2D9BDC71FF4B0F35C810C4309CE0B +:10B020002F03E6B56AD77C9C573509219FD53C256F +:10B0300063DC7F85FF0E819E8E4E2FD34B17DACCBB +:10B04000F8FB2217604327852B7C82FDFE2921F720 +:10B0500013F53D1878036D71FCF7012FF6E80B62CC +:10B06000013F6D1D6FB56ECF43782FC3A59C401A6D +:10B07000E40D291EC21C5F129CEF928F97A731BA74 +:10B0800010AF52CCBF83F51C780EEDBB8C01EB6882 +:10B09000CD77FCDC311B5FE40528DC0990D7BCE0F0 +:10B0A000617961FAAF0BFD5BE6EB22DF80FF19F0FF +:10B0B00032B9EF91EB3DDB981C73B9FEE214938B30 +:10B0C000BA486505CA7B97319A06ED2287E649287A +:10B0D000EF66CDFD023D7CB0C7C8E555FB9EC2A51D +:10B0E000486A7C1E94F05C64F576339E6BFB6F7D42 +:10B0F000CC9D0F00800000001F8B080000000000A6 +:10B10000000BDD7C0D7854D5B5E83A73E62F6192DB +:10B110004CFE2008C433F98F8664F20701820C09C3 +:10B12000D1501398FC4083A20E8882909008B6A656 +:10B13000D57B331040E4D167DAD83E6CD16F40A59F +:10B14000F65EFB9A6AB47936D041B936DE224D01FB +:10B150001534F246F4A2D64002788B7EF55EEE5AA4 +:10B160006B9F9399332104BDDFFBBEBE862FAEECEF +:10B17000B3CFDE7BEDB5D65E7F7B1D01002EE36F86 +:10B1800073F7FF382F47230433F8B3807F2E3BE853 +:10B19000BF9B018A11C8CB633C3680D512FE3D0BA4 +:10B1A000FBE8675E10B60EE4571EB2AAE3F0374A1A +:10B1B000894A387323FE3113665E9611EE4E049869 +:10B1C0003C7A9C0601BC00F84AA3C9B7EFA709085E +:10B1D0004F5A9C5E05E12F4D6E5F0EC067CFBFF6E4 +:10B1E000F66D4508BB4C0955BC8ACB26CD00584F9F +:10B1F0007FE27BCDF8DB5A80EDEEFBAA201760CD15 +:10B200000BC5A04C17CF1F8EA3E78F9C97F1F96752 +:10B210003627003DEF319D0E84E05B8ECF0336C6AE +:10B22000638A2189A07F0A205C6F03A71FD75D7FF7 +:10B230005C762A442718DE66B78D1E4F787C81EB3A +:10B240003477C92BCC31A3FB0186CDEEE9A174364E +:10B250009E0E84D059A36B381D67101D2704E9F892 +:10B26000EF901333079B7FFEA775D77B7246D3F50C +:10B27000529BB3F2503AC0B936ECB3049F1FBD5E87 +:10B28000613E2A3DB8D024ECEB5521C07108A1A342 +:10B2900046BFF5CF3CCAF45AFBCF4DBC4EF37316F4 +:10B2A000BF05F15EEFABA9A47E6C7F20DA07EBA5AA +:10B2B000DC2BED574FC7F0FEAFAE07E6B7C677D32E +:10B2C00066F04621DF87F7CBBEBD88DA10E2B20D0B +:10B2D000E93EF4BCC3E745FA6C8D80BBDC88C790BF +:10B2E0007D383A0EE1D658D11E4E346F8398E0F384 +:10B2F000E10868E842FE0CB987A3636DC1FD17FD44 +:10B300004E8E56B01DF0416597ED4AF2D7CE7804C7 +:10B3100040F457C8B6E4565CFF42476A0192112ECA +:10B320005821B93581DAE9055EDEC526A6E7BF8179 +:10B33000FBED39846F64742EE1015E977132D2F3B4 +:10B340006EB15558F3467B3418B0DDBBAE0A905E43 +:10B35000AB76EAE970AFAD3EC68F7BBDF771535057 +:10B360001EF07735F8CC908AE377EB9FAF859D820E +:10B370002F61F2E321F9993C5A7EFE51939F7CC8DC +:10B38000E7730888CD44800D56C1EF0A39E73120B4 +:10B390003AF7C960A139E49C3FCEC17DFE3BB6655A +:10B3A00012786F22CBE53ACF278C8F26C79A9C0D57 +:10B3B000929C658E7DAE075F7A7FC643F84AE3CBE9 +:10B3C000EFE5FE0CE1E0CB27337E4BEDDFBC93FCD9 +:10B3D0001E8C7EBFFCC0977702AE3F74C0C2F80CD3 +:10B3E0001DF87DF243D47EC5E2247C87365B5C8405 +:10B3F000AFF740942F9DFAA721BF91EFEDFB2FE50A +:10B4000006E83CC016E6CB3F2966E6E785DEBF9E30 +:10B4100092886FBD1605904ECD07901838BEF995ED +:10B42000081FD0F8FD97667842E4E1BFBB9FF56640 +:10B43000F0B0FC4541C30B24AFB1E0A2FD34FF7670 +:10B44000D6D39B70FDA6EE83E6BBB1BFFC77FF9120 +:10B450004BFA66E8858366D247E74C81A70055D34F +:10B460004B4A658709E97D2E0A27BB0EA0C6F1A8C5 +:10B47000DB9B7325BA083A0C211D685F489735A4F9 +:10B4800027C7A2C7E1BF597A9CBF93D66FEC9D092D +:10B49000B223942E924B3C8FF25925DEBF787EE08A +:10B4A000522ED8C80E6CEAA77330DEBE3FFBBBDB62 +:10B4B000B7E4BF967D473ACC0CFFF6F62DE4BF43C8 +:10B4C00011F628FC1C8C96F3DF7C97DBFF3BCAC986 +:10B4D000F85EE3F9BFC1F177C6F71790EFD1E3F358 +:10B4E0007DE1DFECBEC7E3FB1B2ADFA3EC16D267CE +:10B4F000FBFF231942F63FDEBED7FC7FBAEF11FFF8 +:10B5000047765B5310BF9DE0EF57106E55FD90AD31 +:10B5100009E83CE07CDBA72A7B6589ED773FD96FA2 +:10B52000FE1BA7EC74483C7E2B182A892E72C25A47 +:10B53000F633E4841DEC27A0B9677CB62794EEDBD4 +:10B54000C1E3EF07F2F7BEA3FA0846C5E0B7E07B18 +:10B55000ED9B707D7CAF3DD1606F57F8F907F4DC4F +:10B5600042F34413FCD6A762DEC30DE4EF196D1855 +:10B570002784F819B6B0B821322DA48DBF11F0AAD6 +:10B58000DD887C88701AC127916B1A321EDFDFE8D4 +:10B59000B00BBD053EAFDDF68DE86225BA18C5DFFC +:10B5A000E00FA3CB08DD44F7B8743226ECE8A77DA2 +:10B5B0001BC1E855FD2CE9B2985B31CEA0E734649D +:10B5C00034DDD0B30AA7AF2B2257370FEF57A3FBB9 +:10B5D000083D557A7F5DBA86F3673C3AFF84E89C64 +:10B5E000389ACE41586AE7B82D02DF476275EE8778 +:10B5F0009F925F6BAA369B12709F4BDD9293C8B0EF +:10B6000014FACB26601B964BCE6779DFEEFE55D839 +:10B610007EBBA1336907B697608006050CFD0A4121 +:10B620007B5219E167923C3F2846FC6089C9F92C9E +:10B6300082F85EF8A99247E39D078D387EC9D2C98A +:10B640000534FE083D223DEF917CCF521C9A946553 +:10B6500024FED582907BFCA9EF433AD7A9FC0C3895 +:10B66000E218FFA551ABDEACC3FE45EDEE1637EE9A +:10B670006F8971F823D2074B4A274BED12E3B305CC +:10B68000F0D5D3AA7C2CA1C171849FDBD4C2F4581D +:10B69000603F83F4955C37C897275C2D5E35C219EF +:10B6A0008D0F72907E79E6E1818D88B7FD88ECDCA4 +:10B6B000ABD07E81FD72F80AC721BEB5EC6307E707 +:10B6C000A96E2DAC5A108FF1320939C5D9ABF66C81 +:10B6D0004D28E27D7AA3689F8D07B712DD47DA0F08 +:10B6E0007CA0EF7F58DAA66B6F71E8DB3BE76F0B4E +:10B6F0001D3FD67E6A2BF3250FFA9CF18F4B2EDF70 +:10B7000015E2230DBF3737C1328ABB20C1A5D490C3 +:10B710008F4A8B4DA67E03F78FA693A0CB32195A82 +:10B72000E8DC5697C10A1AAFF54F4A117C9844E3FA +:10B7300049FE08D959240E2E85E28CB1E63B2943F7 +:10B74000EB95E2B80C15CF93314A05E3691772F413 +:10B75000F6C2CC3D3B1C63EFFFED858E692938DFD7 +:10B76000D25E940694C7B2861526B22F4B57CD935E +:10B77000C8FE1CAD0E1808E6A520FE086FBBEC9CA9 +:10B780005C13B27EA98A7FE70F44FC193E7FB1DAD1 +:10B79000FFAE01D650FFBBD1CAB46539A1E3ADDC21 +:10B7A0005F9AA2303C1A25EC5C1E2A0E19CF4F7509 +:10B7B0008AA01BE420DDA707E9AEAD3B169D34B996 +:10B7C0005B0A42EEEE6C10FC25FC6B43F0FC964AE3 +:10B7D000B7CEAD62DDF0F91E50D7198BEE0FA87C05 +:10B7E000C4B899E9DD5925F9389E04978DE2E1D571 +:10B7F000EAB9ED44CEFA91C5756FC94EC41056979B +:10B80000AE663D0CBB455C6CC57F9753305CF51B49 +:10B81000C3F209FD469287BAB0B8B75A8D87ABC359 +:10B820009E87C7C177A5D88279944CC693F33A17FF +:10B830008ECB4E8AEFC7920B7B920CC6C260BC9B2C +:10B8400037DFE026FAFD71EEA55ADAE786EA14033F +:10B85000D99FCEAA0B712B7382740C9EEFD4AAB41D +:10B86000C260FBCD6A73838FF58C88C38FAA717811 +:10B87000676561C47C5B90CE9D9517E348DE46CE3C +:10B88000035CFD3C68EF8DADAF34FD84BA8DE85F9D +:10B8900069F16D4654EB9CCAFBEB44DB4EF9B6B242 +:10B8A000AA3DC924F71572CE93DFC7E76F56592812 +:10B8B0008D34A2C78E3DF17432E5519CCFADAE8080 +:10B8C0001C4A2B78B62692BEA9929C9CC790C04D6C +:10B8D000F271662AB07D8EF7C5EEF1E258B94A9C46 +:10B8E000C3F8DDB17B6E41FE3CA1EEB3BC4ABCD7D0 +:10B8F000D9A09797FB54BDBEBAF8E9236908D7567B +:10B90000AF2CA6F9F7D0F940FADE4772437CAFCAF4 +:10B91000DF4466684D43BE0429B44D577F4EC8F8D6 +:10B92000A5E0AC299482EFFF79D7D33F2172AEAE68 +:10B930005C51EC0F912B2DBFB9F6197DBE25BE4889 +:10B940009FAF59EDD3F72FC531B6385AE7EAF2F772 +:10B95000AB30F9D3D61B8B6F9ABC8DF8412AFD7B97 +:10B960004AE44AF283F3E25C1E77C8393CA5D2531D +:10B97000833DBD7F79771DD9CFDD1667BA42C638C2 +:10B9800076811D975AB6667E1199AB326BFE216A9D +:10B99000DFDE826DECEF4B31F1B83BEC1F54C4623B +:10B9A000FBAE24E975822B14C7CD7108DF53F5D2A5 +:10B9B000DD59F35FC7ED4295B3C6ECE13CD9CE0942 +:10B9C000B9748E701DF4B8495F790D71A3F7331FF8 +:10B9D0009D6F6308DDCAAD11600CA14F853D56D740 +:10B9E000BE2569B2EEFD858A43D77F6B56B6AEBFE2 +:10B9F000CA99AFEB9F982AFC9C23BB2FBDFB3DDC73 +:10BA0000E7915EB39D487884E89210A40BE2FB387E +:10BA1000E17B64D683C9F7205D3F4A31F2B88F4895 +:10BA2000968A83FAECED2A60F97C1B5A4E7D8FE4EE +:10BA3000B85AE8AFBA27334DE4078251E4FDEA4132 +:10BA40009CE77A55AFD5969AD8AFAB73EBE5A85A79 +:10BA5000CDFB555786E74D038709DFA525B29DFC31 +:10BA6000A07808D1830E9233A1EFC695B7272F5D3A +:10BA700047E7F43F53F4F9E35F49229FED45FD4B5F +:10BA8000FED758FA6244DF85C9D9C454215F1A44ED +:10BA90003D1143FA22CFAC7F4F832731BE32E23CC7 +:10BAA000EFB55919BEDF6667F87FDB92187ED0A626 +:10BAB00030FCB02D8BE1C4546147E25B919FF1C132 +:10BAC00079E2ABDCE6AB9D97703D772460E0737262 +:10BAD000E4A6EF443B6C6A5C80E3525263B9FFE337 +:10BAE000920F6D524E505E7B02A76D94E75E063E4C +:10BAF00013D9C9DBC16FA27CE71D10E0F65D808E13 +:10BB000034C215A030BC1B5C9C0FBD070220C9AA23 +:10BB1000BF7A1DC02F9EFEF10FBDB81EB2C8457A78 +:10BB2000105D89EDA1E761A54AB797525CCE54D26A +:10BB3000C7712DA7EA484FDE6402F2174992C82E5A +:10BB4000C4AB71CCC74FCE8C5879057BFC8F292BA9 +:10BB500067A71687D2C763A6F790BF0D6ABCC3F963 +:10BB600004536CD6DE50BF677EAAB04F871C2E17D9 +:10BB70008DFF05E574190F27FB351ABEA8E1A55AFC +:10BB8000D48BB7A5EAED599E19F525CE5FEDF49853 +:10BB9000ED08CB76E54704AE889F67516AA21E3F49 +:10BBA000A12F84BC8CC53F8DEF5F576E34F9F8B37D +:10BBB000C3753BEDCB68C0B81CD731C63524AD6426 +:10BBC0003FB09EF9BF5295AFB1E426B7E4C39D855F +:10BBD000149F14C94E52BFB93DFD36D20BC7280E73 +:10BBE000CA237BF8715921F2EB680F7A96C8AFA38C +:10BBF000B64015B53F9E25DB3763FB63497993CE8D +:10BC0000AF778F6C177191B3DF85ED7B2B630B766C +:10BC1000606BF15C13DBBB331EC75ECAFFEC56E9F9 +:10BC2000FB89EA1779D11FA1711F575F3AFE00F90E +:10BC3000514FC4C7492C07ABA367733BD52062584B +:10BC4000A789FDA15D32EB97E35537BFB50A82FAAC +:10BC5000EA8CAAAF34BDB45488139C016F22C57D11 +:10BC60004B557B58DFA0D73FB555FA764398FE89F0 +:10BC700027FD133D5A2F85EB9F1FA4EAF54EB8BF51 +:10BC8000F5892DE0673A554A4CA73A8C033D79E493 +:10BC90000FE49BCED8480E2496034D0FD555617CFA +:10BCA00058447045A115DF2FC77885F22875DD4E01 +:10BCB000D3BDB650395B61068A6376AD30D3FDDF04 +:10BCC0002187FB299243D39E7285F47467AFE063AA +:10BCD000DEEE77DEA5FD2FAE5EB96D32F1B31B054A +:10BCE0009EF8B97B6614F95DC77C1713202754DED4 +:10BCF0005BCC44B7B2DDE7AF23F90D3FEF40C6940C +:10BD0000E23C70275DD54F53DF1B4F7F79CB208BF3 +:10BD1000E2D14109FC12FAFF83F3279611BE83D3C7 +:10BD2000CC460133B85D2197BE6623BA9600DBDFAF +:10BD3000C1C92556D17F33DFD3FD31223A97F63B77 +:10BD4000771874F672DE17569DBD6C0C18F83E6FAE +:10BD50003EE8ED70B9556F872BEC8E303BADB7C325 +:10BD60008B02B60F483E06DF58CEF1FE42253FACAF +:10BD7000DFE02579BD356B966E9E1A10F7B78B11F3 +:10BD8000CE46B808E14D14F738E78F7A8FEE731777 +:10BD9000972CD4CDDB63862C928F6129D2B917E51D +:10BDA000B1C6EAD6EF0F037BA2E39658AB578EE1FC +:10BDB00036CCC6791A5BFFC27236A7F52BF6F3F3C1 +:10BDC000FD5DBA71857D3DBA759CFDF6720A7B0BEF +:10BDD0004E385F235814709753F832E39396D70880 +:10BDE000B65AC53DE0A508011F34C056CA433E28D7 +:10BDF0007BD690BDB864F06591FD889C72F3349257 +:10BE0000C79AD86D840EDC0A9ECF496FCDFADCD775 +:10BE10004EED795F75C9648FDA9F93BD9618E27312 +:10BE2000D5843729AFD925B13FDE6833701CF75967 +:10BE30005C57EEC610F9FFECBBE25E14925C492B36 +:10BE400012284F96C6F9147779944B46FA34BD9C64 +:10BE5000C9F9B23733E61BD350CEE4A80556615773 +:10BE60008DC323FE440AF5BB1E9E46F9B87299F5B0 +:10BE700009DC62E23C4CA4419928EE01857D31DF6A +:10BE800062E2B87A739AD0AB917F004542798B8C8D +:10BE9000F7C8D3691C3294CEF7C8F92C0117D9E53D +:10BEA000A969225FC089347CAF26F1F8F39477DB6F +:10BEB0009C16C5F3CC28711E3491636F37DA490F95 +:10BEC000479F70DBA7239EDD091F79691FDD27FAD5 +:10BED000E7D279DD9CA688FC41956BE37C5A6FBB69 +:10BEE00009C8AFEBB62F9840EF43568681F2711B1D +:10BEF000280F80CFA3972BEF507E06FAF03DDA850E +:10BF0000D1B58ED6DF71C38042EB479F009788CFB3 +:10BF10000249EE28B22F388C086E0C24DD1135FA58 +:10BF2000BC7EB8B33842C1FD74BA9C114E821D4824 +:10BF3000AFD94C1F0A7BE07F4A424F00241F5D802F +:10BF4000F33E47BEA2E8F703D27B8759EB0788C8C8 +:10BF5000E2F858ED4FAE5D90C3F906ADDF0B254812 +:10BF60005759EBBFBE96E60BCE2FE6D3E6BF292D81 +:10BF7000F9E8F61CA28FF083C1684FA4FDC0579763 +:10BF800025F22F1E50E3CE48D9994DFC8C37382727 +:10BF900013BC3ECE5391867CB11B940C92D3F818FF +:10BFA000D7A4B912DBED7DBB48CF2C30B1FE6ECEED +:10BFB000DAC9F76FDD66E7A7CF24D03D3C9E3B7C16 +:10BFC000DE6D744D2840BC9AED7FE1F3A4D9FB4EA1 +:10BFD000C3089E2E0CF1A13388B78BCE577C902ED0 +:10BFE000AE34ECDF1142272BB657AAEDD6676EAC04 +:10BFF000DD42FC5965E5F879A37A5677C441878C10 +:10C000007277316BF652B2AF1777A29DC535BAA9D8 +:10C0100093EC4C52A4EF595A33C19D4579AB23FDA3 +:10C02000C23FEC42FEBA68434A866EBE8BA51FDB58 +:10C03000A6D33C25C21BBA3B600685F48311FC16CF +:10C04000D423DD252BDB5313480E9538A2E3099A40 +:10C0500007E3BAF7335CEBD2388FAAE511BFFFB51F +:10C06000F288CDAA5E6A2ED994C375160B24B6EF5A +:10C0700003E942CE9B5B3F67BA82D1E3247E36B6AA +:10C080005E64FDA5B5073789F3DF6182BB6A1036B0 +:10C09000FEA77C17E5A950DF6D27FDD708AF9A37BB +:10C0A00084F85FD0757E44DFE519C6F7CF567AAACB +:10C0B00078BD1AC9BE84726BFF92BEA9D688F6AC51 +:10C0C00026C2BE44C2F68F9E6D14ED69F625066C3D +:10C0D000FF32ED5F457BB2FDC70627EA95674F8BC0 +:10C0E000B6C3FE16B55F7F466D4709FE763E3350F8 +:10C0F000EB653FD1C6F9F80B95113ECB55F276753D +:10C10000ADBFD5C509A3FA6549E8C306A167CE2E20 +:10C110009CCCFA0AD25CF906D287B5530BE8DC3F17 +:10C12000ABEAAF8948FB12FCFD173C9756A4575366 +:10C1300046FF9DD1A9E4673C7A5E8AA6F50EF07AA7 +:10C140008D545D84CFDFCFF2FC33F1FBA81438456A +:10C15000E7A5A9FA5806E9F5FA0CF5DCD987D388E2 +:10C160002FCBC0C371C432356E33A07092DF546FD1 +:10C170004BE3F831DC0FAB033FC719E1FE1884C66F +:10C180007D32D509F4DF69463C4C2A1D9AE21CE950 +:10C19000340EF13A40E7F8A8847862DB94D03F513E +:10C1A000F8DFCF2B129DE32C2BDFAF46DE7022D7BA +:10C1B00073057E77B5A11DC423F4425B0FC3FC0C4D +:10C1C000607D3DC918303B719EF5AA9EAC901B590D +:10C1D000CF5FE87140681EED844ACF981E916F448E +:10C1E000BA3A89AE09A9E037205F137EF3C6F3940B +:10C1F0008F3FA1EA7B8D8FF3264057445C90DEC8C9 +:10C200000727F141A33BD2B390EE090E7D75B89498 +:10C21000F858AFE2D51D29CEF9F04B113EB2FFE13F +:10C22000789E4BD3F2937A7CA5F46BC3534ABF3606 +:10C230003C25F59C8E85AF765E353A69E715543D11 +:10C24000B5ACC1B17787146CD75639387ED3F01CA2 +:10C250002D3FCF2857929FF1E466205DB30B426FCC +:10C260006874D4F0D3F44037DDB7E9F08BDDA3C7B1 +:10C270002F96CF5374EBFFE1717294919FD767258E +:10C28000EDA1F826BAFF345D62C1B4F4145E2FBA92 +:10C29000EB5320BF3ABAB597DF1FB59FB07D68FA60 +:10C2A000307C3F9A7E1CBD2F554FAA7A53D397738B +:10C2B0002992A1F1A48B25F27F3D3ABF6E3EDC1797 +:10C2C000E6F7DE1F969FFA9EEEFD5B9236E9FA17BF +:10C2D0002A8FEAFA6FCDFAA1AE5DED7C42F7FEE25D +:10C2E000923DBAFE1AEB73BA7669A09FFDCA236D20 +:10C2F000951CDFDEF4C930FB977E350E7E558D83AD +:10C300000F511C8CE7F3758A8311F6B539F9F9BF23 +:10C31000B695303CDCE662D8DFE666187EAE17BD27 +:10C32000F86D23F9E925FD1DECD74E49F5AC4D47D5 +:10C3300039586CF0B547213F660E083F1492841FB0 +:10C34000A5D9C7AD0767FD91FCA8F8C3324428639F +:10C35000EBDFE82F647085C87B7455005C280FD133 +:10C36000941FC1791719618B05F95B6333FA2711A3 +:10C37000BFD2855F48EA9AEE0F1BACC0F78E0D0D59 +:10C3800092B31DF8B997EEEB10FA3D058C8ADB3AB3 +:10C3900051BDC7C31F8B11BC349FEC92E126B2DCA8 +:10C3A00009F14608C9CB2DC1B5AFC771B7D9BA38A5 +:10C3B000BFB3AC6F73D30A7C0E5BBCC5EC1F697650 +:10C3C000DBFBAEE1F28D5FC36E933349F7CD92880C +:10C3D000F7BDB146CEAF85DBD38A7491FF59D4EE59 +:10C3E00095A3295EF913F03DE162D5AE223DB65B1F +:10C3F000E282E75093FF1ABBD19F194D76E787E59C +:10C4000034AEF1B8C2F408F713B47846937BD4F78E +:10C41000EDF4FE8513C07EDBCC415FA013D72B1952 +:10C42000EE28A73863F6175DAF111C2FEED1F0EFA1 +:10C430006D6B60B939D0E661E86F5BA3CA630BB777 +:10C440000FB5B572FBF5362FC3BEB6EDAA3C7670BC +:10C45000FFE1B65DDC3ED2E653E5F2397E3E40F4C4 +:10C4600043BEFF385DD40180753EDF778051C0A0A8 +:10C470003C285EB88A3C342609FD1C2E1763C9018E +:10C48000804FA1FB90DBD01E921EBB1DBCD3A96EBA +:10C49000A3617587698EF4CDE5A1DEF6B889EE2338 +:10C4A000C2F5DB525058EE46DB7B8FF35AECBDA64B +:10C4B000DF648CCBC84E59E4FB9D9427F8FAFE85C7 +:10C4C000A785F0187F3DC1175312FADE71944F7C97 +:10C4D0007B1FE5ADCF16BBFA5CD215E81016473EC0 +:10C4E0003C0D54BBF5F5F0D3F25BE3E1F79B0CD7C1 +:10C4F00049D2579A3D8BE4338FF03A1BD70D9B2DD1 +:10C500003EDF668AF77E1BC1E7116CAEE49A90FCB1 +:10C51000CC6955DFDC19EF3A9DCEF9FEC17D3FA312 +:10C52000F3D23D81F329E1F1D2E7FDE59342FDA588 +:10C53000707DDA6CBFC8E76E949D970C6CE79B0D1D +:10C54000E0A13AA1020B5825C4B535A3EC7C3AFB17 +:10C5500025A5FD2E5AD76EBCEA7D6473EB799E7FCC +:10C56000CC7E83A8476ADE5F6C5F199217C8CF90B4 +:10C57000D4FA0EA3FD8C3548BF6B95E7B9C30D3ACD +:10C58000FDF037673F5DBFD0F52F42B343F45DEC5C +:10C5900059C87CB88D22A2AF95D77779081E7278DA +:10C5A000323348FE29DB88FD675FFE6B1AF9D167DD +:10C5B0006F9A659F0FA3F5E1B5EA3F4DEF697A7079 +:10C5C0009B19D674E9F23609F994B7D1F8312B43A7 +:10C5D0005F5F117ECE86F2916188EFD04BA2DE6D57 +:10C5E000282AD22721CB5DBDBF3F41F545E0D4DBF2 +:10C5F0006F97D5C675A485CB9D6CC701ED38A9167C +:10C60000DCE960E8BC1546110781D1997547C8B9C6 +:10C610006957EB189E43F86BC43B6679C0A8849CAD +:10C620008B9A0C61E7E62F5B0064FF16D9D578C1C1 +:10C630000A09E437C357177396A0BD5D44FE01CACB +:10C64000736BBCAB96E8EC7DA43496EB8F28477AED +:10C650007D50EF54C855492BE87C2418F95C6AFAE0 +:10C66000A4DEF6915936507D8B93F91A4E1780C08F +:10C67000EB9D38CED523D929FF1E7E5E5D3D074F49 +:10C6800090FF3E9E1F3A9E1E0AD7131A7DC3E9D91A +:10C690001AEF6EC9480CEA91F0FD6AF9DF2608B07E +:10C6A0003CEE98BAD74DFB7A4A52C43D3074B8A6D6 +:10C6B000205FD7F7DC0F34BE401675A3C30B45DCF3 +:10C6C000137E8EB7A872D3A8EA858278B026113F70 +:10C6D0003DC07A72686136C71B3FCB8813761786D8 +:10C6E000336A43EA1235FF6550FDFEA2AE27C24B06 +:10C6F000F95D6DFEC73262795C9DF5739DBE5BDFAF +:10C70000FAA54E4FADCF1179BF8276A5F07E841B7E +:10C71000D5FBB81793DD3F227AACEDFAE1CB871554 +:10C720005A6FF777DF253EF7D984FE3D9CC8B419D0 +:10C7300092F4753575D6F3AA9DDFA3BBCF3956FDAC +:10C740000EC7B375DD13BC447F0D2F2D0ED6F472CA +:10C75000D3814F4F917D1E94CE9F7A88E8F79285C2 +:10C76000FDB046C23B9EE3E79F933CBED06760FAB4 +:10C77000362DB4F07D0D1895E9B55141BA0C7D7A8E +:10C78000E57A1F0D3F6D3D0DAF4149E423B4F7BA83 +:10C7900055FE9C57EDD73153FF39E2CBD9976F94B3 +:10C7A000288138F23CB63F37D616E4CBFF2B7FE822 +:10C7B00036107EF109C3A6EF98915E835D9D26CE6B +:10C7C0000F7F433F48C3B73D0A7C341FB840B14F89 +:10C7D000E4D49CA8E3C34D1A27527C26DA92EDF5E7 +:10C7E0002F495FCD5521078BD85FAAA2BD4D6A01A5 +:10C7F000C2CF0A1D0C77484E85E03CC96D14C59D1B +:10C800003EA6E7CDD032959EDF647526190D740FD4 +:10C8100028F2834B62B72F62364E846D742F6234D8 +:10C820007B4D1349FFD5C6A8758C824E5A5DE11A1F +:10C83000FC2D45BA18634131E2FB6BD03F37217DB7 +:10C84000EB572FFB410EBD6F2F653A6A7589348E09 +:10C85000E8B8F4704B35F935DF3EF8A3232E7CFEA3 +:10C86000695CC70CC2E7CFFD7B737F89EFAC3DD617 +:10C87000CBDF0535FAFB6F26F2AE8761B63B1AFDBA +:10C8800097433FC33B6198A107ECDCBF129C0C5758 +:10C89000819BE1BDD0C2F064F54F9AF6905E5CBC1E +:10C8A000DDF43904E9B02E76CB0C5AC75EB62B9D69 +:10C8B000F58D7AAF147E4F51136BE37B11EC177536 +:10C8C00097A7227CED0EBE97B06426D2FD85EB0EB5 +:10C8D00041DF963CF2CB8662CD20D1775789428FDB +:10C8E00078CF02E757874CEAF8F30AB78BCA0BD820 +:10C8F000AF814B0AFB5F73D47B434DCF16DD28EA33 +:10C9000078E1B2787FEEB0BEEEAB88929234FEAFA3 +:10C910000ADF3FCCFB22BC2E4CAF877F9C29EC4E1C +:10C9200051BCA125346FD19E3451E4FDD4B645B13C +:10C93000731EE3A64C71FE86A20D2C1FF8536F9D4B +:10C9400041780A7ECEE9FD832A8718504E0C7E2757 +:10C9500037C7E83F48CFD7AB7A1EB530DBA9529234 +:10C960004BA2538F5EEF43D28D7CAF3F5B45418B33 +:10C9700053259C6B791CC971BFCCF20AC30C5D6056 +:10C98000677B5E064E860BC0CD10E59A612574303C +:10C99000FC167431AC827E867083D35980EB1BAC5D +:10C9A0007E599CDB87ED7C0FBB70B581F2D045DFF3 +:10C9B000167598E3D1C5A3D2717CBAE0019E712DA2 +:10C9C00074F108FCC2E932358BCF8F46178D1E11EA +:10C9D000E04B223ACE85804C701E08FF663E1E4317 +:10C9E0006A97838BDB15E3D2C3DF4EF76F25018F88 +:10C9F00091F318E1F428177212AEC7EE53F76F20C7 +:10CA00005C13837A6767A6C2F2A2E91F3C677CDFEA +:10CA10001BAE97B4E74513CA2E2AA8C2FF21F3958F +:10CA20003A23DABBA2C2B28D549AB4F5E707457B2C +:10CA30004ED98B29D87E24F3B53ACA8317E59515CC +:10CA40009A9C009BA443750BB0FF1133D282E33C48 +:10CA5000C726CA235A1E02D6F3568B782EA78A38C9 +:10CA600010DFF3461404F1B35884DF96B35CD92881 +:10CA7000219D17267B36D139D6E6036B06D7A94F01 +:10CA800051FD959D996ADC9DE02824BCF724BB7775 +:10CA900066D2B98812F7A53B33051DC682DD99AE73 +:10CAA0001DF47EF8F3A17FC30571FC93999E0E5A85 +:10CAB000BF79C257196477CFE51FDB167004E543D1 +:10CAC00042222D477CDB5DAA9DD0EAD0C92F22BF30 +:10CAD000F61E3317A714B93DEDA462662E1F66BD7E +:10CAE00086F3FE8CD66D360792F371DCE375A7CC26 +:10CAF00082CF53059F55BDB0FFC01B0F4D114D3761 +:10CB000084C871F3812FFFF21ED2B5F982CD49AFEF +:10CB10000F458BFDCEE97D6223D7A5824D776E351B +:10CB2000B99FDD63E1EF71E6F466DF43EFCD3D369B +:10CB3000904AFB9A371068A734D2D0FE77A6083CFB +:10CB4000B47BA04BD237B19B5ADDC486B744DDC459 +:10CB500006329CD4FEB5C4F16D539F89EFED3F566C +:10CB6000F5B9563FB946DDDF59B22B327D477A37EA +:10CB7000D77B804FF8B10AFEA3F337F3845E9F366C +:10CB80007585E75F45BD59F8F7CAE1F51E7FC854C2 +:10CB9000EB3DA6C134C65FAD6F1C6BBF5A5DC7636A +:10CBA000E03A9AC97EA75B26B92B368ABC6085FC21 +:10CBB000B0D34EFB9C965320EA4245BDECEA08B147 +:10CBC000AF571DA26E66C3933250FDC386FD66FE4D +:10CBD0000E720FCA4409F9B7594FB1DFB05AC551A7 +:10CBE0003B27F76D97F81E0F76C7B36CE5EDB3B82A +:10CBF000887F79FB26B9883E7966E1E7EED967D967 +:10CC00004EEDF6AD915ED27FBF8A1DBE8EBE2F6EF9 +:10CC10008F50EBB2711DBA4FCB4B194E217B2A6559 +:10CC2000093BD2AEDA53ED3E51BB77DE1095318928 +:10CC3000F2E023FD01A3EE3BDC76D5BF2D22FCC83C +:10CC40005F6B31897BEB0881FFC13F2D9D40FEE684 +:10CC50004B46F704AA43B9703C2506AE724F57EC19 +:10CC600047265C254F50747C277FDF52B4CB28E8E1 +:10CC7000A1CADB2B6D2EF8D014A4B7867F85FC7C6F +:10CC8000B999EEE356819DE5F08DA7DBADD8DEF0D6 +:10CC90002857D823AA5931643F8AFB64FEEE647694 +:10CCA0009FA84B7A05DC317E6C5B920CA084C84B4C +:10CCB0008412094A48FC3E212B4ED78E725EA77B18 +:10CCC0003FA62445D7DFADD6B568F5BE9AFF18EB71 +:10CCD000BA41376E6EFFBD5C87195F59A07B0E9F0E +:10CCE0000BB92FC17F224E6C91E95CCD0900FCD4B9 +:10CCF00041DFCD3893488FCF1ED49F0F8B5AFF54FE +:10CD000012E80092EF88E3465D3DB0C576337F8739 +:10CD10006319A73E2A3F4B3D2F5361AAEEBBEC118E +:10CD20007AEBEBA56640DAFF2A2D22FA9AC087FD3E +:10CD3000176804F54F059F3784DEDAB97A05BAD84B +:10CD40006E26BAF5749FD4A0A7FB648F9EEE53D6CF +:10CD5000E8E93EAD454FF7EB5BF5F47578F5744DBA +:10CD6000DD3E5BF77E7A4799AE9DB9EB5BBAF7B3D0 +:10CD70007DB5BAF68DCFDDA67B7F7AD74A5D7F5E23 +:10CD8000CFDA6B92837CFF06DD7B9A1C14F67DFF65 +:10CD90008A72E0C57FAC0F41D4C79620DD29CF3918 +:10CDA00016FFDBA50E8896BE39FFEFCF52FFFF18A6 +:10CDB0001AFFAF515FDE437615F5CCA23E5147B561 +:10CDC000C866E57A2B94972CF20F2E40A493EECBF5 +:10CDD00035FBEE56F5CB629B91EDC4A20942FF688C +:10CDE0007556E1F19864EBFB92F2218B4BA4B0FCF9 +:10CDF0009ABE5E7BBCFB82E27EBFAE9D7F1C64B2AE +:10CE00008BC51F29ED51B84EE180B87F088FFF8A8E +:10CE1000029E7632BB3307D10C2B14070A7CB47BFD +:10CE20008AF0B8051EDFCBFB34ABE7263C5E7CD036 +:10CE300080FE442AD75FB13F79C9302A7E4C32B296 +:10CE40001FE961BFF2B1699E67B3500FFE7E24AE49 +:10CE50000CB40BE27401DD0F0DD1DFEC0C34D4BB4C +:10CE600072F87B4FAE63392A2DA9A7EFF45107DA88 +:10CE70000333447A857E7AB33CBFA2F94E4B228EAF +:10CE80005B51F2E1532F229EBFCE127C9CB4BC8B2F +:10CE9000F338ADF1AE17B28AC7AFBFD0F2565A1E03 +:10CEA000ABBBCDCF70428E93FDFDF07C52C020F223 +:10CEB00003DEEF8BEFF43E23A46605EB442F6C37C3 +:10CEC000717D05A871EF1D2A1FB4FCC072751FA7E4 +:10CED000718A35683FEFE8F93DF3635DD2A09A5758 +:10CEE00068715249E3DD536D5C4701AE42A7C81F2C +:10CEF00069F98229F2D7F17BC6DBFFBAA44F7579B5 +:10CF000026783EFE9AEA2983FB16F39F5E28ECFE04 +:10CF1000E98553B84E3138FF39CE5BDDD1F2279D1C +:10CF20007CDFD57A5227CF2BBC1FE8FA0309C32632 +:10CF3000CACB052AB31790DF807C3F477C0FBC3CEF +:10CF4000F9E6DB919E675FB2CCB896FAE775499F28 +:10CF5000F1FA036DFDCC576D7FA7DA4E703BD0160A +:10CF60006018BE3F2DAED7A0F955607DA0D5438E89 +:10CF7000AE4B7471BDCAF6EC14F55E8065171EDC0D +:10CF80006852EFF73DBB280F7D69E9847CCA9B0E90 +:10CF9000A8F5A7036AFDE9805A7F3AA0D69B0EA8A0 +:10CFA000F5A64326DB76CA0B0C4822FFDE34CD13F0 +:10CFB000934DFEF9DAE15C3A67CD79813BA95EBE1B +:10CFC00076A2272E1BD795D0AD9FCC1556DE0CF23E +:10CFD000FF3E317873A98EA8FA17FBEA293EFA249E +:10CFE000D27B8E3C8C8AECBDF5141F7D6216E76FF8 +:10CFF00049F6CE7AAA137ACB2003D57D7A5F914485 +:10D000007D972D60A6FB9DEF257A92697EAA83A26B +:10D01000BA767A4E72A9E511874CC28F1B52FDB9C0 +:10D02000F46C713F921106E76583F84E548515F252 +:10D03000CE0CFEBE9CBE8B72F0FA2EAA13F11EB06F +:10D04000707E22BC7EA8E07716BF1492872CC9762A +:10D05000F0B94F4815DF8927DC1AE1A3FA1208F46A +:10D0600027530DD408BEC7457DE559CACFD2F9A4D0 +:10D07000E2EE90FAA5926C119F36BD71FA14C5418B +:10D08000EF67794AB3138379CEA6E8839C175A9445 +:10D09000ADF07A8827E7EB2D326C61BE5803661A33 +:10D0A000375E7E79AC7D9FBDA7FF27390EAA3F5220 +:10D0B000D269BCB62EE2B188F0D0F6ABE1119CE7A4 +:10D0C000EAF2AFE54DB5F6B1EA4732E8DC14501D9F +:10D0D000D715ECE32A950E032608ABF352E9065A5E +:10D0E0009D570EEBA7B6EC2BD779DDAFD2A900ED9B +:10D0F0002BE5C72D9168DB0B82F3E2FB1EBAE758E4 +:10D10000DEE278F170027D27369DD22C237868F319 +:10D11000BE98EC5A971D724F83F226FE7F150B23A3 +:10D12000583E9A0E9C3C45FF3F81FB7E3EBD90E8F9 +:10D13000AB8D0BA72FD2751AD1F3A8C16F56EBCCCC +:10D140005A89AE2FF41DE53A2E8DBEDF949E43D34F +:10D15000FA392E1CDAF36532DDDB34A9F7444DDAF7 +:10D16000BD45B73E4F83F4F052DE60F47D05F0BD5F +:10D170008745B51B166DFC54A36E7C4DB4FB31A2E4 +:10D18000CBCBAA7EC0F77D06351F4C7666241FAC3C +:10D19000DAA16255254927441EB89820390639314D +:10D1A0006C978AB4F5102FE2DF36C9CBF65CCB1B47 +:10D1B000B5ABF65BBE7B23E7D34AA083A14576B02F +:10D1C0003DB4BC27F22823F9A0475FE7F8FCBF0075 +:10D1D00074C42079104D0000000000000000000021 +:10D1E0001F8B080000000000000BFB51CFC0F003B4 +:10D1F000096771A2F2CFA3F179D0F81B3850F9FF7B +:10D20000D950F993D0E4D1F11A26FCF284B0253339 +:10D2100003830310BB03B11F337EB56544D8F540CB +:10D220001242B702E99D40FC10889B0519189A84A8 +:10D230001918AE02E9C98294B9171D57F353D7BC28 +:10D24000514C1A6E9243E5D76832302CD762607821 +:10D25000A70DE15721C933EB3030D46A42D8BB95D2 +:10D260001918DA806A8AE4B09BBB0728DF0E94178E +:10D27000D681F00161AA21036803000000000000CC +:10D280001F8B080000000000000BCD7D0D7C14D525 +:10D29000B5F89DD999DDD9CD663349366103214C66 +:10D2A0004280800136218180513721D0A051C3872F +:10D2B0008A08BA41ACA8A011A9C696360B492044E9 +:10D2C000D040FD00AAB87C88D4A76DB4A8BCB6EA4B +:10D2D000225883A51A1595BE6A1BA81FAD4F7DD194 +:10D2E000D68FFFAB7DFCCF39F74E7666F385AFAFB7 +:10D2F000FFFF8BBFF672E7CEBDF7DC73CFF73D774C +:10D30000D6254F61EC3CC64EE31F94AF4B8CB1D297 +:10D3100078C9B4E042E6676CB9EE34DA7219BBC181 +:10D3200011EC344AE0F93039F89081CFC756311FFB +:10D33000630E7C3F8BB142FC3FE8D7E4958331EC30 +:10D34000F786A3CC61C4C74F2C972B8CE9C550B28C +:10D350004D5D0E188745D59E6E8DD1DFE93CC61A0E +:10D36000DEFE74E211B30EFF0BB064FFFB67C13F3A +:10D37000A6B169A71D8C7DE69D971263038FFF619F +:10D3800023CB51C630F66563CFC42363FAB6DFE022 +:10D3900060F51D855032F6AE2B0DD71B715E3E91A8 +:10D3A000B1290C26CD80BA1716313DBECE1BF64BE7 +:10D3B000394A411C9EE55EF9A4AB1FB8198BD8FA17 +:10D3C000C3F8311C3FB1FF80FD14F86F2A63D40409 +:10D3D000F8DB2985CBF0B9CBBF34321C1EDDF068F9 +:10D3E000050B17C6C747B86B27C6E719105EFF992C +:10D3F000C13B103ECDF73EF3AE5BCFA05F93CAE9D1 +:10D40000A139430EAE637DE9C1C47F93775D66D8D1 +:10D410003B30FE810E0C1DF1EFF072BA79B3A90C0E +:10D42000B697DDCCDC444F7DE018824E96209D24DB +:10D43000FDF3E9A4E17F1F9D7C1FF1F5BF854E1828 +:10D440006BE7728419CEDA646BBD9EF1BAF99EA5C2 +:10D45000CC0432E05332877FFDA78E49587A2228C8 +:10D460001F1C7EE5FD6ECB3E9BFD54270BE3FE3477 +:10D47000314E77F407202A81E01E945B7B9993DE7E +:10D4800053FC1A8DA3E8F58417C0D75E9AB7C68EF1 +:10D4900047C642049F9A5990C2F197D6EF7A7736E1 +:10D4A000D64F52544B5D650B110E401CAD53FD2EF3 +:10D4B0008BA603FCECEBF9C6BC89038F938837E09D +:10D4C000AB1361E0AB488633F8108BF353E2BA9E9E +:10D4D000EB5D97338278B2ACEBB9C1D6D5943C36CC +:10D4E000C54A17897034E3BAC6C4D7D1FB1CD7E745 +:10D4F0003DF3FD1FA8BD590D05EA60884872FFEB9A +:10D5000053717DF0ECDFC4FA54AF93F60DD6F56F8E +:10D51000FDAD4B61F52129B7EFBA145D23BC98F33B +:10D520002ADAAD93942971F83E603A1FBF77FE2046 +:10D5300043FE70E88CFA1D63E10F70FD40875D4487 +:10D5400087DE10E1D71980012663195A18017C364D +:10D550001F9ACE0A2792F8622BA0747AC3AC06DE1B +:10D560006BFEBB83D383BF84C637E138C5641B7EA3 +:10D570004C785C08473F78DD67E23D61FFF76D9FBF +:10D580001DB81AC797389E12F1D24B975298491975 +:10D5900071FA30E960DF7681AF6CBF0D3EB374691C +:10D5A000B7087CD9E960C3C8A9061F0706CA44BDED +:10D5B000CCFF2618EDEB24983749AC639BBFFAF2F9 +:10D5C0003AF8E73DFE003DD764639D07DA4E6AE115 +:10D5D00034C9325E20CC641C6F8358E72CC70AF72D +:10D5E00029A8DFBB302F6529D4A74952BFF4B4A3C3 +:10D5F00011D604FCD7D2A851F9E53BE3683D03D12D +:10D60000DDC6C6EE89567EDDB85CA98EC2FB1BF373 +:10D61000776F990D2868F1E71793EC09481C8F1272 +:10D620005FD778313FE0713CC2ED5C3E9BA1FE5379 +:10D63000FD1C9F1342F5211DCAF1AC3E26C1560FB9 +:10D64000DBCF823183F7552CF8092C9023AE49B4F7 +:10D65000FE62DC8FBCECF6E7011C96BB98C94E233A +:10D66000BEFE7B17CAB4CFAB968CDD8DBC61C2FB0E +:10D670001D89D30D2BE4FBC5946000F77120FEDB00 +:10D6800006F829243EEE9090AE47845914E978AB11 +:10D6900078FE19ABADC4F58C5811E6F8974CF90536 +:10D6A00010C3FA9B05DCDB967A089EE62C7D17C238 +:10D6B0007311C281723C0478CAEC97DE2EEA8FDEC9 +:10D6C0004684EB230ABC77911C9E87ED8E9A502AE4 +:10D6D000E231438AC59C40CFADE6FC11D685F367A5 +:10D6E00009FC9B749F1E347623DD5F8DFB01F3677D +:10D6F000D5AEBF5906B9E07D7BCE9F518F056A95A7 +:10D7000008EAADACEEBA1A06EBCC0E765438193DE9 +:10D710003F89784FF6B623A7B0F405BC7EAE1CBE99 +:10D720001AE148CB8EB159B4EA20F1E07D6A3DC3DD +:10D73000FD7495C742B5B01F3BAE9BCAEA2C74B5C9 +:10D740005AACDF91CD42516F7C9FB739381EEE59EC +:10D75000B0CE7DAD17DFF3D03E4C602521DD8BF4DC +:10D76000118C31A00F17D207233AB805E737C2C68C +:10D77000F3D86F7CB6FE3CF209D0FD30C41BC091DB +:10D7800085FDEEBBCEB990E689B0E388EF7459E031 +:10D79000C480FF004F2E512F97549A4FCBE4F8CA04 +:10D7A000F4B2A801F87204787D58904543B0BEF4F5 +:10D7B00004BCA50B7C39821D87707FB2B22315791A +:10D7C00006E16703E16761570CE9349DC5980C6B6E +:10D7D000DCA8D4FFE1FB30DEC64E47306258E8914A +:10D7E000013D4E8CE3C9930FFC66B5634C3D5FD899 +:10D7F000BFBCE96B3F70BA51BC5CBF997A02E87656 +:10D800003BD2ADA273BA3D537DA436388C77D37129 +:10D81000B37419F1E8D6F87EB5E4CF8BE0BE7C8E08 +:10D8200038467CB517D13E01CE483FE19F0C753597 +:10D830003F1445FA237938356EA7B80C99C52C7674 +:10D840008912F0D8EA6C6144C2F9BE239EA90D4E3C +:10D8500082C3EDE5FB02FA26CA245C278BB9D1EE20 +:10D8600002BD1703BCE1724F8FC6FAF7683EB37F63 +:10D87000AB51CCFAB3A715EC07EF207B9CCEEDDBC8 +:10D880006F60FC24CCB7C00EEF19F7F32AC6FB1665 +:10D890007B71E07E0A7BDFA40B40E2AB3880C50ED3 +:10D8A0005CAFB283520AE8F3C0AD11DC9FF58CEF98 +:10D8B000FB46513243B6C91D4740267EDE89CC83E4 +:10D8C000E3E4733BCBC966C7C8EEC93F33BB2B57F4 +:10D8D000D0D77656FB1ED2D7EE0CD66EB51F4C3B7A +:10D8E00093352FA0F7766FBC3526A1BDF25DBD083C +:10D8F000FD5C93AE7627E08DB175242F1E6C8CB243 +:10D900003FAA71BD316A4D2DED634E438F8475572B +:10D9100076B78475B3BD975E9B397DB7B4CE4B6146 +:10D92000D8AE1932CA85BCF6DC759A8D4E6BD90219 +:10D93000E09751605FE0BEDC01E56949D02BFA0554 +:10D940000D76BA34E9D01C7F487E8C840EE5C3FA8C +:10D950002E14747F21CA0DA4D712F5DD6E733FC952 +:10D960004F50E275D8DF8F6F87FF437BB6488A3E02 +:10D9700024F56DAF41393489CC97777BED7BA0DFFF +:10D9800071B224FC05AE8F6A44DBE127DF1A3B0548 +:10D99000407E39E8602EC4EE932F6E9A02E3BF32C8 +:10D9A0001DEA86803713C7E3F4F14A2E0B55617BDD +:10D9B000A9148DC0B835E51BC8AFB8B0CC417453BD +:10D9C00083F05BF0F2C9C1BF2888FF9BCAEDCFA7E7 +:10D9D000C8269D66F3F145DBCA62078DFF72894454 +:10D9E0007C7CE49D0FEE3C1BE03B562E0511BE9760 +:10D9F000837FF4E2BE99F3F5E2CB603AE22B719EAD +:10DA0000B8FCF3139DA7097C6780C265240FB8DDBD +:10DA1000952ED697A9D74BA8470365ED87B84CE25A +:10DA2000FB3D3CD451A1406D6BF2A2DF86092FCCA7 +:10DA300050A612F48C91CE5022625EE9B40BF5250B +:10DA40000BB9516FE273737F005F592B141B7CE994 +:10DA5000617B3DB9DA5E7758F73737BE1E939E92E9 +:10DA6000857DC8421103E5FB26297602542FDBD4BD +:10DA70003ABEA206F8CAD5CD980FF09956AB44A38A +:10DA8000F86E09D7170E5C373C4F379CD1188CEBDA +:10DA9000CD61AC0BF951E9D25821DA13605F58D649 +:10DAA000CF56A711DDA40BD836D7CC4BC57D30C7D8 +:10DAB00003B806B59F94A0F0AB82AD5DBC54C82FEF +:10DAC00076E961B2FFC0CE5921E33E95D8ED2053EF +:10DAD0006F99F30CC95767FA1E63050AACFF36E667 +:10DAE00009A27FD4507EF00440C24E49E135088738 +:10DAF0005A5E1FC1FD4F39B76114CA11DF381EB716 +:10DB0000587876397B1FCA803718791F9E6F472552 +:10DB10008EF6576C3A33004E47CF9564E738D85CA1 +:10DB20005E6AB554EE92B9BDB95594DB4D7E0C7169 +:10DB3000BBC3D47F60C76CC2F9F3427A25DA0F0EFB +:10DB4000AFDD9E4F5C4FBB186797CCFDAF3B463EA9 +:10DB500015203D9E1FB2F9FF9A14BE4F86F7B450B0 +:10DB60003884FBEAF07279D9DB2F19FAA13C0480E2 +:10DB7000902F7C672FD6701CA5DCF4F3C3F43EEC29 +:10DB8000D32E1C872DB4FB472E7F88F611FE3EC294 +:10DB9000799D62DE3B267E5BEBCF8F2891C33F965B +:10DBA0002D74EC0C0469FC6476BF8EF126C052FE25 +:10DBB000E9F4F87E8588D6C05E29D1A22EA0D7646C +:10DBC00037485F589C577A97E045FB0DEDC614EC3B +:10DBD0000270B43576917F82A45306A49B1CB4F0E6 +:10DBE00021EE6B9C5F055FB1E3F9B01ED335F47A8B +:10DBF000C35C1E0739FF69F01FCA9714A61F429421 +:10DC0000A794D9F9542F0892DC480D25F037F27407 +:10DC10001A9676797C1B9433E0F96CD8605C57EAED +:10DC20002C394A3E2B0BD58CC98CC3919A01F62D09 +:10DC3000B6BF01F621D4BF74FB26E1222DF09D4230 +:10DC4000F8D07C25F80ABB23329F5742FC009CA7E2 +:10DC5000ECF06CFA14F713E0B43D4778CE2DB6C162 +:10DC60007BCA0A6F83C6E7C5F7CAD3FAC6092395EC +:10DC7000ACA01E80FEA32CE2CA0A53501F7DCE3EEC +:10DC80000A55235D6CCB26F9E1D3057EB52E224ED5 +:10DC90009DE9248713E385B05F9F59F78B9589BA77 +:10DCA00001F295E3D9DECEB2896EA8EE60BD7ECFDB +:10DCB000D2328148665CF63B100DD775AAAC0DAB2D +:10DCC0005FC35B5391DEF9DFA93F72FD7B9DB0E33B +:10DCD00097B15A1FC2F73193AB91EF3E468A847DCC +:10DCE000F8D83B75CF5A4E2F1AD279B3C4E93FDD2D +:10DCF00021E247DEF5147F57582FBD49DC6EE0F175 +:10DD000010B0EB88EE224C5B4BFABD95EBAB08FCF8 +:10DD100087F56BDAEDFAEBDA6DF6FAB7D9BC4C940D +:10DD20005BDFBE5B6528CFAF4BD00F7F13FC7C2D34 +:10DD3000AB5F8F768D293796EA4C49877D5BF9F486 +:10DD40000353D1FF1AEEE07ED787E0BF1AAE38DE6C +:10DD5000AFF7479DA1C2F8FA4807C0FA9AA4E04578 +:10DD6000674B03AF6F83DA7511EAE9C86695CE3366 +:10DD700098D08FD41FA6520E38481F5AFA11BC579C +:10DD8000B7DAD737D4FA13D70B1295D67BFDFE3A04 +:10DD9000921F03ADC7B95F0A45FB9143450ED32ED1 +:10DDA0008AD038269D9B7C0674CDEDADDFBBA34D9C +:10DDB00030DF25689C92FEA89F46FBC9EA2763399D +:10DDC00054BFCBFF9BFD9660BFD26FDEAF6E807EEF +:10DDD000ADFE482DF29B69DFBBB430DF4485C7E35D +:10DDE0005A0343B46743BB6390F6FCC1FB03DF9D5A +:10DDF0003E0D7481B12C6E7F45B211AE538D184823 +:10DE000067AC53ADBD18FDB8CE371C0C3C27A8EB52 +:10DE1000EB03B8AE16C940BBBC6ED35C6AAF3BEE39 +:10DE2000F0CB9C0FC9EFEBCC9DB317FDC9E50E55A8 +:10DE3000C4F3BB15B41BEACA7267A3EEE85423D936 +:10DE4000A9307FF50FB8DF5151B67619F6BBC8B8C7 +:10DE50005C457DF2E2A34D8BB17EBDF12D05E5F071 +:10DE60002D629C8F1F797C2A03F83A1F4B6631B2D2 +:10DE70008FA24EB48FAE077A467ABAE1A7C964473B +:10DE80005DFFC4CA3D35308EF47432C153FDC4B554 +:10DE9000FB5C045F13A7CFA7E6A76C15EBD2003598 +:10DEA0009D6BCDF84C247B3E7459E96257A19D606F +:10DEB000E2C1A4CFA5AD45BF0A205CFB53299ED685 +:10DEC0004BD70ABC0FFDEBA09CD70F5D6F13FCFD79 +:10DED00051AE6B21C229ED3F7425ADAFE33215D7AA +:10DEE0002735A73ADF83F936E33AF97BB48EC88F3A +:10DEF000A5E81868FFE8C7125F57C7C45DEE5C9CD1 +:10DF00007F9773299D33ACA5F74D7897EE2F5A3F35 +:10DF10001CDE5BBA29354F8675CDFCE963BE6E7891 +:10DF20007ED37E470CED7328C94EBFBAD5417E948F +:10DF3000C9C7A8D125A0831B857CB9F1C04A92BF6F +:10DF40003776DC41FAE9A683AA4D3F019EE93CEB16 +:10DF500086B71C41F4456EF8D9C33EB4B73E0C3CBD +:10DF6000E2C3F812CC53E7043E283966D76B38FE7B +:10DF700057697DC763AC87CE6F6EEAD8C8E7635C2C +:10DF80008F9A72E543FC47565F3DF79CC37E1EF6B1 +:10DF9000393B3695EC9EFDE9FDFA7DA65E33E50B37 +:10DFA000F8433B2330EF474FFCFB4E8C7777FEFD69 +:10DFB0002F3BBF87787FC6AD237DDFF4C87B3BBF97 +:10DFC0008B7AE6A04B463AF9E49987F7ED80FA2779 +:10DFD000BF1D578C2CF55B21AF3EC9FD3213D7BF57 +:10DFE000FA9959C3901E573F397318EBC73E34CB8B +:10DFF0004F80AEA216BA32ED7AE3208C370CAABF5E +:10E000001465C2BE1C3EE0886148E8E3132EB2BB33 +:10E010006E82670D6027DC587F2DC5B9B0BE06F053 +:10E020007BE3A3DC0FEC8BE7C8089982B6B111E85B +:10E030007ADE7860FEC5E79460A9060D5C2FEB21BF +:10E040003D95D8EFA6E3B09F9307DEBFCFD9D74E5B +:10E05000C4FB4D68CF4CEABB7F1FE33FA6F7DDBF93 +:10E060002FFBECDF8A077760E381F47EFD0673FF08 +:10E07000563E79494A7F71222B7E636780DFE5C275 +:10E080005F7BC1117229194807FFB26F871FF7D74D +:10E0900015ACC1FD7EECF31C345AFFA4F65C89FC80 +:10E0A000D7F38C4BDF0D7DAE7FE62DD2639F3CF91D +:10E0B000AAD320790EA62FE8E74F58EF5F17EAEBB7 +:10E0C0001B459CF7A6BDC931F4AFCC7DBA313AB738 +:10E0D000DAF0D173F2BB6E8C72BABF317A6881D438 +:10E0E000CFBE9DA7E471391ACD20BCAC34BA9CBA1E +:10E0F000D7BE9F5219EEE3C9D9487703EDA3B97E85 +:10E100001DD73FCDB29F7B39BF0EC4979FEC7229BC +:10E1100018B732F7F71361C7DC1495DE62FDF0AB78 +:10E120001917628EC583EE53223D4C57ECF460F60E +:10E1300037D73D143F0FBD9E6F86AFF1E8F465F40D +:10E14000C5DBDA595C3EBF9CEB223FE155D5B8EF09 +:10E1500016A48FA32ADB0D5D2ECAFB403126F6855F +:10E16000F715B487C6C5EB1797492DE9D0EFE21034 +:10E17000E813234EA7667B6DB9831916783EAB5E14 +:10E180009D8D7C7638C0E8BCE548163FF778216B5A +:10E19000C5117CBE09C66730FEFA46B03B81FE5B06 +:10E1A0001B0354F69E03860A64B4B357A1DD8FF3B4 +:10E1B000ED7FE49147804ECFC70940451D0655D9F4 +:10E1C00061D15F2704BCAF356A64C75D5EF0B88279 +:10E1D000FA5B2A7C5C41BD7241F87105CFB18E4873 +:10E1E000E6399ED1E207FE39BF20B5B80DC67F41A2 +:10E1F0009C7B9C5FB34B596A19F70231CE0585BBF6 +:10E20000B251FEBE24CE1313F1F533859F4FAD1DE1 +:10E21000FF7036CEF7D2C8FBB2B93316A078648E41 +:10E2200088731F19F3F0FDAB008F9D055210E36456 +:10E230009D0DEBBC28873B8DF936FA3B34FE030974 +:10E24000C7C909EC52505EEF463901EBDB0BEB43DB +:10E2500079B10FF086F5FD80372C1F6934A87CB4A6 +:10E26000B180DA7FD218A47A476319D59F680C5120 +:10E27000FD406335D59F6AACA5FAC1C68554FEB290 +:10E2800071393DF7B5ED6F4EC378E604A903C9F5C2 +:10E29000D9C67A6A8F353650FB2D0A8F43E4B4B263 +:10E2A0005609E46C4303237B66B75ABBB0D602BF62 +:10E2B000F9DEC3022F1F2785A34A29D2C58252DC6B +:10E2C000FF9631974DC47DEC347E1846FBE2F37C1B +:10E2D0008DCE162814007C7174CC343ADFBC2E2508 +:10E2E000FCB062A1B3BC56278B4DC17D8C5665A294 +:10E2F000FEBB06EC3BC0E3F9D5BB944C18675E3817 +:10E30000D790693F3B9AD3D0AF9828DA6B8AD4CAAA +:10E31000C2A1F7F1BB02EE172BEAB391CF5E14F660 +:10E32000D6E561072BB0D821F3ABEDF56B146E3752 +:10E33000A5CDC9E7E7B9FEFEE3B9C94178CF66CFFD +:10E34000703E7205D24450843F771BC36DEF39F4A1 +:10E350003DB518271E483E397CD5DC4ED695F75181 +:10E36000BEC9E8EFCA717963C64B1731F32F44F584 +:10E37000AB7AEBE06199F635E0EB8AD07115EDF5FB +:10E380002BC10552A05CCA824EB4BBC1BFA5F2DB53 +:10E39000AC9E4A57764C25B9C7AA743C4F90426749 +:10E3A0003B4E270D1647B39F3BF49E0B09BE1F053E +:10E3B0008021BE0333B4B0D5EFFA40E0F7735102C9 +:10E3C0001DAD44FA19681E53BE9872E50B6FED7FC0 +:10E3D0002896FD31CB81FA27EE93098F9947903625 +:10E3E00067F58B23618B77B71B240F1BBA25B2DF30 +:10E3F00047BF9D4BE7C5784042E7826E21BF84FD51 +:10E40000DB80FF84F7D882A4E843A87F3A726DEFDF +:10E410000560DBBB109F4AB71BE5C7868653547E59 +:10E42000D690B7651C1B7ABD89F2F40B6F38558501 +:10E4300079EF1B35690BC6C7771E75503C7CA7DA90 +:10E440007D39C2D1F0B6CB5807F0FE4609A5A9190F +:10E4500024B70914937E1B36195B0A8C81F1B2BB79 +:10E46000356F503C26C2D54B8F03F0479C4EF87B4E +:10E47000E0A730AD98E83266008B7427A53CD5053F +:10E48000AD4B1A622AEEFF49257C16C27D058BAA88 +:10E49000488FA3B2F54C1422E7FA0C9E2F90F97E18 +:10E4A000160915A53BB7F69BE4FF30D6AF1EDF205B +:10E4B000F40E804371A01C11C791933ECA42BD71F6 +:10E4C0009E2AF59B27C11A948FAC795CA08B492FAB +:10E4D000C3BB741E5387130368757237C5DFAAF474 +:10E4E000B955A980A22BD7E40A7DCBE9E6CA35A9A4 +:10E4F000BBD05FCD57C3E7AB3C2E4071EE3AEF8403 +:10E500002AB4D7CE747D307B37DA812EC1EFE67A1C +:10E510004F6AE14B70DC3C3DB532D540FEE671E41C +:10E520005922DEF8999F913D3FD0F851CC0301C5A7 +:10E5300071B891E785A811D68EF6E2A3B0FFF8FC7A +:10E54000174097F87C27E82B2C9F067D85E57ED029 +:10E5500057D8BE1BF415D65F007D85F5E7404F29DF +:10E560003C4FE25AA463D5CFCF9B9B9C6C39E59B73 +:10E57000897C2F73FE7A95FB396679B3CAE960838B +:10E58000CAF11779C3C9F94EA91D41F9605022FE9D +:10E590008A7A8C9968CEF98EB0A804F09EEFDDA23D +:10E5A000607D52837E04F5F49DBFD21C880FDF048A +:10E5B00089CE23B61D6DC0CC25364966329DFF3D00 +:10E5C000CBCFFF7E36465230AEE2EB5C7F33DA9B38 +:10E5D000C52C742899E68B38F03CA578811EC43888 +:10E5E000E28E979D21DCAF1DCE88EC01B81E5FC482 +:10E5F00082688FED43271AFA3F3C4692699C6D6F03 +:10E600007E0FC7F1DDFFFEF7F17D5FC18F6EA17A4E +:10E61000FE8FBF43F5FC5FDC46F5CED8ED580EDB30 +:10E62000DBB3F035183F65C27517A0A394F2AFCAEB +:10E630001C2C03BF989D847E42E0F96D6E2CB3467E +:10E64000EE3E5A01EFBDA0E6129E7EFA4C664D10DA +:10E65000F36F6E96E91CF590924EF51FD5FBA91E3F +:10E66000541DB598FF70A09CE7EB98F8DEA13AA87E +:10E67000FF5E55C4311507D97B780E8AFCA61CE4D1 +:10E68000E735EA319E3FA6C678DE8753AFC7340828 +:10E69000CAFF233AAE96FACD93DBAFEA347E701709 +:10E6A00023FA7BE2841C5D0B1D9FEA5C9A8472F165 +:10E6B000A94ED981F6535071501EC85327B6BA934C +:10E6C000E1BDFB3B570DE372389C0496067B58E591 +:10E6D00079201D2AF19CA5FF67329693151E97C1DC +:10E6E000FE29B86EEC9F1BEFFF53EC0F701CC4FEAD +:10E6F000A5D6FEA7649C7F92657EB43BB28FDAE715 +:10E700007F5AF48FF5E9BF8AFA8F13FD13F9E939BF +:10E7100001778B14BE6322D2EF4A85C74957A79170 +:10E720005D39C52D648A78FF0F82EECFCF31F54871 +:10E730002809C73F702C2F65303F9F8C6A533E914C +:10E740005EF6C4E53CD5D312EAC313DECF4B689F17 +:10E7500090D05E6CAF2FE3F6FD24611737B0E8FD73 +:10E76000AB502F66CBFC1CFDD1025ADF24B13E53C7 +:10E770009F4E166334B0EE367ABF4661F4BED0A326 +:10E7800093851E7D29CB5C3F233C37B01E4F21F281 +:10E79000E91199BF1F1E4DEF8F15E3B1E8185E1701 +:10E7A000FD0F67A75D8029324F74727D19C767AD71 +:10E7B00086E33D29E9D41E9963DF8FA9623D897AFA +:10E7C0006F9D338DF6655FE7BC56DCC71F5629F495 +:10E7D000DE587FAA2305CA391DCC91CAF839C9CFA2 +:10E7E0000155935BB93CDAF7C25819517B3499A5AE +:10E7F000D700FC8F8F9483BB71E88FBAD7A15CAA36 +:10E80000581379F1FB50663B53894E766F530E6B6C +:10E81000167A38ACCC67E847A8DB1684304F821DE7 +:10E820006141B4EBC76EF73BAEB5D04351B64CF483 +:10E8300007CFB91CF0EF9DC1CF00436C51328EEF72 +:10E8400022F8956C99F2BB2CFC9BED44FE0DF6CFA3 +:10E85000BFE31C2CE240BCFF4EE67907D5E1A4B92A +:10E86000167FF3A983204F60DE49FFBAFAB3A3985D +:10E87000DFA6CF9882F266DF7627CFB31C11DC8348 +:10E880007C54E814F995313650BE5BA1B39F7CB738 +:10E8900051CCB8AB0AFA8FEAE4F9CBA30EF2738835 +:10E8A000A7BEEE96791CD94EF7C15F7A6C76B8DCBC +:10E8B0006AB7CB47318B5D9EDB0FDDBF7D56FCFD1C +:10E8C0003CB25329EF9D7D7D9ACEB18A455BDAD16A +:10E8D000A59E9005FF0F22BD008A7781FEC4F2A994 +:10E8E000C83CCD8075FCCA3F8FF68F4542DE8AA9B1 +:10E8F0003404FD4D15791F6A339B49F2A7953930D1 +:10E90000DEE63AC682217AA35B46F9BB4FEF4EC3DF +:10E9100038273BC1E31EE6792430808CF87125C48A +:10E920003DC78A3C9049097192B1E2FC6F6CE2F9F3 +:10E930005E425C64B1D37E3FE4CEEF3AE81C32F233 +:10E94000A683F8FAE1E92C827E23FEE179D4B6D9D8 +:10E95000DAAE369293DC3FF99918CB8C975CE7E4FA +:10E96000FED89177AEF574C33AEA314913F9E8FE5F +:10E970005B3DB8EE878FE5B9B13C3CC393D4CDFD88 +:10E980006D42924B8CB36E86E7D7D7C13C078ECAD7 +:10E9900064EB3C915D3942063C6DADD228CFCCB7DB +:10E9A000A76738FAAD3FDD25E2EA07387DB50A3CB6 +:10E9B000930F8F780DE86477DDEEE4FEC74EA9F67D +:10E9C00076A43759E3E713BED12787635CFD27B9E7 +:10E9D000128F2F0C31CE3AB12E18679DB3343E8E74 +:10E9E000C50E54397DC678FC400C93A379C9FE4806 +:10E9F000B427EB8E8F25FB0FECC2CD38DE55AC363D +:10EA000044FE19987934CE99DB856166B10B73FCAD +:10EA1000B932DA3D71FBB0761B8E6F64EBEBF09D83 +:10EA200033B50B77A23D08FBF96BB403D12E6CE034 +:10EA3000795D0F0A7B11ECBB3D88CFB87D175C88F0 +:10EA4000F928CF3AAF9AA94C47FBADA304EBFFE2FC +:10EA5000BCAA49433F51EEC942032CE60CCFD4A0D7 +:10EA6000DDD724914AFA57A84780947E2D737C47BE +:10EA7000F671FB1A7623AD1AE01CBFCC1FC478CF09 +:10EA800028B9E35831CAC3EBF93D2ADF5E6E3F2552 +:10EA9000C2FDA0880BF99A5257219DC49CDCBE8F01 +:10EAA00089FD33EB5728E167102FE846633E8179F3 +:10EAB0003E0CEBA1F3C518263640FB2127B767981B +:10EAC000D23E9C9FAF4199DCEFBE73FF62A87DDF11 +:10EAD000CBEF8FC0BE1F4BDCF7F4DC33DF779053F6 +:10EAE00024CA06F27B5C5F9D8597B27AEB9FB1F0FA +:10EAF000BFE17C6A36CFCFE9DD3719EC7258AF43FE +:10EB0000E4E9F91C73EB912F3E11F832CBF79CE24C +:10EB1000FCF4977DEECFBC8774E052C2220985CB0E +:10EB2000715F138CE3B5E057F85D263C57284B3FE7 +:10EB3000725AE2448877F4C7FEC3C437ABA73C23BC +:10EB4000A6D4537EEC7F1BDFD9BDF8FE4F816F82C8 +:10EB50003307FCB06FC267F1F357A35947F998C365 +:10EB60008288FB99DEB9B6BCD25352D8E5CA88DB9D +:10EB7000050D6F83FF3119E1EF56397E7A545C4FF2 +:10EB800065BA51220571F8B699C7CAA08ECC89170B +:10EB900090221B67A29EA94CE2F539AED9CD11ACEB +:10EBA000E3D9C20C6C7F68269E0F548EE6ED176287 +:10EBB0003BD42F56437E57864D2E44AD7241D54FE0 +:10EBC00056A05C007F71848BE48151895B92D3A055 +:10EBD000CB08FF37F517F70AF900743506E735FD5E +:10EBE000C6A1FCBD492E4E476639198D22ABBFF731 +:10EBF00063A7E0FFE8F079C9BCB4EEFFDE2C337FF9 +:10EC0000CDF0703B91F763CD6EEE270ABB3357D83A +:10EC10007589F2D8B43B73DD76BA49E9CD8B0BD157 +:10EC2000B8897464DA8BA3C5B3BAFD9CAE7CFFD5FA +:10EC300054B751C2B85B0FD1A52AE8AA4DE3EBDA6D +:10EC4000D5CAEF25A4DDCEF395F76E4AA37CBA575B +:10EC50009DA1F3ADFBB5D519AA7159F21312E5BA0E +:10EC600065FFE69FC9FEA95E77C4BA1F26FE8F091D +:10EC70003FFF6571FFA34BC8F7CF586831C2D3E49B +:10EC80003428EE1479C9417276203A18287E65EE50 +:10EC9000B7294FD6685CDEC64B2E4F8E89739EDC3B +:10ECA0003236434F898F7B9BA08B63EEFEF3E06E81 +:10ECB00075F1FEBEA65A92534CE437E6EEE57ADAD9 +:10ECC0007CAF418CC3982E0BB94DF6530DC205E3B2 +:10ECD000E695B172EBBCEB5D1CBE1A0F6F4F9CB793 +:10ECE000C59C57C84773DEBC4DF67937F4CE6B88A8 +:10ECF000798334EFF8E61ECA53CE5BC368BF8C4DF0 +:10ED0000B521DC9763452FE6FF10EDF78C02113734 +:10ED10000A318C736C13F0EC708602389F03F08418 +:10ED2000F7A772006E2C552F3B4972BC2142E76653 +:10ED300016FB7E1BD1D131D66F7EA589779FC2AAE3 +:10ED40005CC571B8FF26D667D6CD75D6045FAD4ACF +:10ED500007F8C6DEAD17A1F8BAA88CC74DF342D9A3 +:10ED600074AFC5A371FBEA91567E6E34C6157E0260 +:10ED7000FD82071F72D2FDD61D3F7086904F7638F8 +:10ED80008DB6025C67A54C7193CCF29BC9BDD97658 +:10ED9000CFFAC78F427912893683E293F4DEFD2BD6 +:10EDA000D2288E61D6B357F2B8C6F6FD5BE78C4524 +:10EDB00039D12A07C7607B39F7477AFD13178F6F60 +:10EDC000C45C22BEB19FFB3FBDF18D7211DF5823A1 +:10EDD000F4E0327E6FD382BF986B90F8C61117CFE4 +:10EDE000BBDA1EE572A7A9558E629ED86E6F1ED93A +:10EDF000B7BBBDF3C8765443323F676915F10DAF19 +:10EE0000199F303C185F38ECE2718263C8E01983C7 +:10EE1000F7A7F886D78C4FF0FEBF76F1F8C4F13330 +:10EE2000E84FF18D64FBFCAF8BFE6F63FFD2C1FA3C +:10EE30003F916AF53B7F27E07632A36D02C0B3674E +:10EE4000FB89209D0FB2F6F0F550DF27195BD16EDC +:10EE50008B64713B6D8F6497FF1F0A3AF3689C4F78 +:10EE60000EB76E95D14F18DF7A7725C6D56020F2A0 +:10EE700077F33696C8D679472FE3FE6EDEC67C4E12 +:10EE80004709FEAE4713FEEEB23EFEEE7FBA06F134 +:10EE9000773D1AC79F296FA06B15DEF335E735E97B +:10EEA0003B912FCC7BC4A6DDC8841E6A5FC8E501F8 +:10EEB000D8971E2D23FE7C583853F84DB5E4D7075C +:10EEC00046F0B8A2298F801F9BADFCB8524BE0479B +:10EED00021EF86E24753BEFEA3FC385FFB9FE1C7EC +:10EEE000028DE74D176B4EBE3FDF9C1F8BB5D28165 +:10EEF000F971AAC6EDC57F941F4B354ED7E76A431B +:10EF0000F143FFFC788EC6F969F619F4EF8F1F679D +:10EF100089FE176943F1B39D1F2FD4FE317E5C2C0F +:10EF2000E8DBD4CF875B4FF173ECD677D7BA300EDE +:10EF30001431F951B1F1A331043FAE417ECCE897D1 +:10EF40001F576883F0E31A813F530F43D7662B3F67 +:10EF5000AE19802F300155199C1FD7101D0DC18F80 +:10EF6000897E05F859210C390DE45F30F0DB908E75 +:10EF700013CFD9863A1FBE70EAED143FC8574377C6 +:10EF80006816BB6F8A1A6E27FC24C817F37E53DFFE +:10EF9000FBFF89F71B969F081BE4876CC3715C65B8 +:10EFA000B531FBFD866020887679AA796F95E343B9 +:10EFB000D5F9FD68DFD95F7737E17EEA53A760BFF7 +:10EFC000873411C74BB80760E21FF6F3219CC7DCFA +:10EFD000DFDE7B1C98086D817F7DD6A503DD0F7871 +:10EFE0004CB3F98183DF0F489BA3D07A57499E2009 +:10EFF000F25F53163B807E599364B71755F07F0D2F +:10F00000F07F7FA3E5D9E4F76DFEC8B7C09720FF76 +:10F010005FC86745B1E199FBFF4E397C08DBEF9C87 +:10F02000F1E1098C877EFCA4DB407EFDA4E433275C +:10F03000E62B60F882FC95DB3DE4773449DD75DC36 +:10F04000BF8BF1789649D74A3080F15317D20FCA57 +:10F05000BD6CA01F930EE8DC93DB134DC9EF67E195 +:10F06000BCDD82FEF12F1BECB7B080AB4EE17EEF32 +:10F0700055AC8BCAC57832329ACE53DF403817B1BF +:10F080001E8A1BAD4BF29D4BFED73F093ECB3D5335 +:10F09000CA1F14AF32FCF288F5DE648188779A7E4D +:10F0A000C9A8BB19E5338D8B28A4970A22EB6E966D +:10F0B0002751FE00B58FD9CCE89E19B493FC37FBDD +:10F0C0008F8B3A6DF9A4B9ADF6FA6811E71C23EEFF +:10F0D00071D2F35C3CD7E771D1D109CFCDBCAF9DE4 +:10F0E000F8A09FB849627C94B9EDF1D1A1F2CECCE1 +:10F0F00038E89D2CE4745BE4146BE071860D23A763 +:10F1000006FAEB6FE2D5A1F1BC11F39E85E94FB190 +:10F11000E3C29E9758FC8FE293FC7E77A65B32E3B6 +:10F120009C99EE0C0B1F26E465DD218545DC23CA86 +:10F13000EF29883C2D625919FD389E97D58479595D +:10F14000506AF9F5A47F5C25F5746FD39B0F0E0D03 +:10F150008C23056314E7F606BB02989FB37980FC05 +:10F160009C4BDD5CAFAC2DE5E7039BDF91C83FDD39 +:10F170003CF1D60023F9C3F3AD5433DF6AE4AD5A52 +:10F18000B7053F1BFCABE89EDA86EC7983E25D6D48 +:10F1900077509ED190EFB5F2F7066A77F9592BE6D2 +:10F1A000237E3932F222A2DA25F25B7AF343046D30 +:10F1B000A8C3EDE74B8979212D5AAD86F9482D007A +:10F1C0000FEB072FBDF37D25B1583AE573D4B83165 +:10F1D000DE587A293FFF29E86298E7975C02721FA0 +:10F1E00036C79B5D4FF7A9BD06A37CA9A1F03ECE13 +:10F1F000CDF5A41BC0B6E63DDD5111A671EEC86287 +:10F20000C10882EF4D685FCBE5A813D76DC1E370ED +:10F2100037B713BE2DC64556282B467ADD47F40A6C +:10F2200010E9C4278C9FAB5C877880F75F5042D78A +:10F23000727AB4B79BF41EA98CC71B309EB6FAC273 +:10F2400065A548876F0A3BD297CEF3CF4D385E77DE +:10F25000737BF275014F1BD06B745C3C1EE16B92AB +:10F2600062785ED033528EEECE457E2CA0E71BC274 +:10F270008F568F8679362C18A3E3FE7CA9465C68EE +:10F28000375C3252AE45BB6A73A567B9F59CBCC604 +:10F29000C7F3E53FF4551C42F883DE6E8AB7B090A1 +:10F2A0006220BD72D38FB1C93A1800981F82714590 +:10F2B0008A4B0635AEFF447E1548F06F925FF5131A +:10F2C000859F0B45BC8CECB5E46D125DD632E32B0B +:10F2D000F7FAE66D4578D48361CAA73A34D543F28C +:10F2E000F38B169E2F7A72C9D964DFBF262F7D104B +:10F2F000EDB79EDFBA18E6159FBCF0826A948727A7 +:10F30000975C713EB69F94C0A2E697647D98B7EA79 +:10F310001B6D3C7600F1D6E2A6F34A35F08BDA7726 +:10F32000E93B26219F5C06EFFF97E3574980CFDF3B +:10F330007B3FBB07CDC22578323E3A9EC7F3EDE452 +:10F34000F0C348BFCA151714A0FDB9D9A9E7A0BCDE +:10F35000D8BCDE558C723DF5531048E8605C92C411 +:10F36000E37B3D6093607ECCF7E73F648D9F5C99C3 +:10F37000C1F7436B6809E5C2449A11A42B86BED13C +:10F380009C0EBEF0869FC4F5576A454774E8BFA43B +:10F390009EE7DB98F937572CE7F53745FC31D12E3E +:10F3A0004BB4C39E1374A40478BEBBE2E5FA87E9AC +:10F3B0004AC2779CECF7CEACF4A04FB5D3832A5B5E +:10F3C000E82104F430D1460FD2E9B3CE9C1E362199 +:10F3D0001FC17A2F3D9BC77F2295E00022BFBCA6AC +:10F3E00012BF9879718974BF01CC5DB9B02F7F9835 +:10F3F000FCD056322FC320FA5F7515EDCB49C9C03A +:10F4000054167DDA1A1D9FBBEA9C943F62F285C9AF +:10F410000FE778F97D19E08B362F94616FF72CC9CF +:10F42000E8CB17A87FACF47F15F289DC974F16B1B3 +:10F43000E06578DEBB48619194B438BD2F2AE3F7CC +:10F44000511775AFA57BC48BD648EC9465DF4E9FF2 +:10F4500086BA66C39BDEFB1D05C799E3B76D8EB404 +:10F460001EEDC736B5E7856188D754CE774D6E69F6 +:10F470003FC6EDD727BFDF320CF0D39669505E410F +:10F4800062BC73FDD824A2EBB64B47905EBBA7D1FC +:10F490006061C0EFEFF1421C8EB72099E8FD8780D4 +:10F4A000F730BC7F5F6390DA818F933C1948A741A6 +:10F4B0001680F64B1D5DF587711F7E97C470FE2F79 +:10F4C0007E1E9E8CE7C09BA75E3F0AF5C717B787D5 +:10F4D00047E985D6754487F37CF3EEE132DD7D3470 +:10F4E00044FE3913CFC323F8F328950FC0FE9F8243 +:10F4F000ADFBF7A45CD37E13FDBAA95F9BAFCB4DE8 +:10F50000F0663A75FEBD81506929D4E79FE56778BA +:10F51000FEF68093DF434AC467B987EB83F98E76A2 +:10F5200003CFF7C6B5A5CFC2F33F4FEEAEF652A854 +:10F53000CB91F45973C6E37BDC8E6CF9FB94525487 +:10F540001E0F36EEAF7DD7F25DA1516B3A48CF2545 +:10F5500015D606F0BE4C8BC8E36D39E426BB21A955 +:10F5600066C95EBC9F34AAB047BAA610C75378FEDE +:10F57000FC1A18C762AF2D8225A41463FE4D3BE52B +:10F58000297BC6683ACA9F4505557F56FAA123FCD8 +:10F590003B65A18716D4A764E772BB64B56997641D +:10F5A000ACAF40FC78EA988472F6320FC7631E1243 +:10F5B00014CCF7D782AA41F53CE683475C3C1F3C5C +:10F5C000328EE783631DF3C1B1C47C702C311F1CE4 +:10F5D000DB311F1CEB980F8E75CC07C73AE68363AF +:10F5E0001DF3C1B18EF9E058FEBC314C25E68563B0 +:10F5F0003BE681631DF3C0B13EDFC5EFB5B382B01A +:10F60000A714F132215FC27DF5B43943785FE4710C +:10F61000B18F33372ED87C1CD6991452C84748BABC +:10F620005F497D83D7E9466F5280C721D6079E6028 +:10F63000F81D2D757632E595DFF98E97CAA4053F42 +:10F64000638617F3CB0D477A11D08D67CE2CCD8D05 +:10F65000FCC59AD28258BF64BD06F430A5E4D3EB52 +:10F660009F80FAB6B68B5A30D4746746F56B06D4D1 +:10F67000F7B4CDA5FAE8F28A6446E763735B8E407F +:10F68000791126910EA76DA2EF9B84C2123F0F83C2 +:10F69000BA960FE671E8008846C067DBA52D773380 +:10F6A0008C6F75442A53D1AF5BD0B2603CF55732B2 +:10F6B000751A7FD64429DE9EA1D598EDE2FC6D6EC9 +:10F6C0004B08C67BF56D99C66F84F7F10309C7F344 +:10F6D000F40BF193033DEFF07C9E379DC63AF2AFF9 +:10F6E000DA405E00BC17D7F2EF758CAE62BB58AE45 +:10F6F000202C3FDE17E7F187E2248EDF5471AF55EF +:10F7000006C988FE484ACDCF88885212EE937B0AFC +:10F710009584EF5BD8BFFF518CBA08E3BF798CBEEC +:10F72000C3D3335E8BA29E5F86F43C06F793F3DB74 +:10F73000C5B57B0CB4F7461768C5289C1FF718F4AD +:10F740001CFAC5103EB35FE27B38AE6C6937FBB183 +:10F75000AFFFA2A05C68D9CCE87EB5272F6AAC2A9F +:10F76000B48F2B970C3CAEE53DE6187C7E260D321F +:10F770008EC9571E672819E9B96722DF9705F33745 +:10F780009B7C2AA3BFEEF1D8EDC78F932A9B92D022 +:10F790009F15FBE1F17474E661FF73148A83B2FD77 +:10F7A000752F61FDD61D32C9BD4C05F619C6CB6C4F +:10F7B000D58B508EBC2AF824DDBF6C1E7D57639B11 +:10F7C000C2F07B517E1651F13E831F3D2303E9BDFC +:10F7D0007D16DD775025CAA32929BBF98212783E10 +:10F7E0006DD6E7C47FD39E9125B4533ABDDCFE2885 +:10F7F0009A9C5C8FFAF682C923A7205FDD91705F27 +:10F80000C62C2726713F6F2FB6C3FBD2CE13F564EB +:10F81000FF957A25D43F5F7CCAF544B7878F3BCEEE +:10F82000C9D7CF583BD9796B030ADD3392B378E956 +:10F8300054EB97221D381FD0E81EAEF3EFD334945B +:10F84000F34D5FB9AAB91CEC22FBCFE90EEB78AF00 +:10F85000366F8B4CE75E4DBA278ADF4C4A492EEE55 +:10F8600034506FCD5228FE9B728E42749F9A7C69F1 +:10F8700014E333771D72D3FB6AB21645F9BDB7EABC +:10F88000AFB555D0BEB75C213B7C6FEB825AE2230B +:10F890005DD6C790DE09FE06F96CEF1A1E8F4B91FC +:10F8A000582DC2F1E6A2B303753C5E45F7CDE9538E +:10F8B00024B2C53F064717E31833F4CA6A3C3F57E2 +:10F8C000532B359443A9B3AA34DECFFEDD96E62A46 +:10F8D0009E178BED57E33A9BD911FC4E8FC9BAA9FD +:10F8E000A95BA55C8C8B5DC39F35A7CD30EABC3886 +:10F8F000AFFD5E7BAE578BA13D9DA5F338A751C0F0 +:10F90000EDC75C11BF80E7943F9BD56CE76724355A +:10F91000B43747452C7CCD0B2FFA9123041CAA58F1 +:10F92000FFD97FB2F71F21BE5F3022E19EFC842405 +:10F93000C98C0BDAF094B8FE2CFF5E1DEDEBAC0821 +:10F94000CF6B4C5C57969FC76972750F5F9F9FAFD7 +:10F950002B711D33F45315A8F712D77136EB5A8B60 +:10F960007438B2C1FE3C11DE19557B6BD19E9D519E +:10F97000A0104ECE661D4DE8379BFBEEC9B3F3EFEA +:10F98000AB1E7EBE077C7C7D1294A35B655000F1AC +:10F99000F1C7B47B58C432DFB86D69B6FAF8E870C5 +:10F9A000DBFB67EDCFB3B54FEC98606B9F7CB0D8B5 +:10F9B000562F8ACDB0BD3FA5B3D2562FED3ADFF614 +:10F9C000FEB413F36CF5E9DD8B6CEF9FFDA7A5B6D4 +:10F9D000F6737AAEB7B59FF7D52A5BBD827DCFF6B9 +:10F9E000BEE9E7B040B02BE4C77C4C7F11CA2D13B1 +:10F9F0005F8B92ECE757897E4D629CDA97C4F13DAC +:10FA000094DFB45CD059E6823C16B63CF7D74CB0D4 +:10FA1000D5038B8B59D8A6C7EC7E54CBDFE72FE4F8 +:10FA2000DF35D5C8EE6ECEB894E2ADABC63B0DB4B3 +:10FA3000B3C8F50210E725A5D23A561D1D43F7A01D +:10FA4000AF4B09ADC2FDC7FB659174BC7FE7247D58 +:10FA5000E6F13AC90FF678EFE5F65FBEC63004E589 +:10FA60002988B2F044FC4E6B6B6D3EE8C7BB1A238D +:10FA7000542A05B511D42B8A9FC755F4821EAAEBD0 +:10FA8000E5BC3E2FC9A075EAE5F0BE655DAA0EE3B0 +:10FA900058D6F59ACCF33C7AC00FDF6DF1C313FD55 +:10FAA000EEB0AEEF3BC0E2FE37F8B5B1F3A85F129F +:10FAB000F5CB43C7A978603FBB9C7539B03C97F53F +:10FAC00050B997D5E7A13DFD8633E2180EFDAFDBB7 +:10FAD000FBEA7284637A8987EEE7815FBE3DC9E203 +:10FAE000979F4CD573505FEF70D66E3E8EF3DEAEAF +:10FAF00032D49B57CEBD50437970E57825C8438CEE +:10FB0000E050A37FBE3D2DC8F5BCD0230A73E7C3E8 +:10FB10007B97DC915F8CCF33957AD2B7998B75093F +:10FB2000F5E329416FE9FE12D20BE9ED4AD030101E +:10FB3000354625BEE76F6541FC0ED5BC3CD097A885 +:10FB4000DFEFE1F728F20AC61E413C8D5811935CA5 +:10FB50006837850C3ADFCC7BFB5B9D78BFA34D05F6 +:10FB600078509F3EA0083A7192DFB56ABB427ED7BB +:10FB7000AAA3AA3B1FEB1B952214243E8CA34E8103 +:10FB8000712AB83ECA7B606C14ED813B257D27F954 +:10FB9000392DAE20FA393F1274F000D205F8232730 +:10FBA00033D7AFD3A1FF78EF2ECAA33CCB7F681D1C +:10FBB0009613B34FCA182E999C2F35A541BDA83076 +:10FBC000D7916EA01D5BD1846569799DC30FE5B4A3 +:10FBD0002A09D3DD5857123F77B87CD9DC1368E780 +:10FBE0005478353A3FC89BF1A785288FD521EE0779 +:10FBF000AA99DBE8FB766C99FD7E60854F233AD7A6 +:10FC000091CE73A924BB535F9014453A073B5BC266 +:10FC1000F3914805EB40BB233B1493501F423F3AFE +:10FC2000D7D3636E09EFA78E08754940F36CC46A99 +:10FC300046E7B839A16E09EFDB66AFB0D3F917DE3E +:10FC4000F029B4977256B7DA9EFB30EE07F86D963E +:10FC5000B9FCF1A48593917E3C93F2D29A0C1EB725 +:10FC60009B5B18A79B9F0B7B64875716F74BB9FCD0 +:10FC700036EDD8C77BFDC33D5119E87A5F4FB86DAB +:10FC80003CCA8506F19D999E9883E245DF994BF425 +:10FC90009823E2538BFFDAD182F9F897B87A0EA74E +:10FCA00020C3DCC0EDADDD6EBBBF3ADDCBE55589D1 +:10FCB00097DB4F6A1B68FCC996EF13E21F8CFFF8B5 +:10FCC0001A6EAFABBFF7B6A6A630764CC03BE9972D +:10FCD0007A25C6797363FAF3541E13E51128457F1C +:10FCE000DC780415F932713F7735FB5FC2F7763166 +:10FCF000FD25DD52AA79FAF9787ECA7E25D37EB138 +:10FD00006C1642BB775773DA6E3A9F04BFC403F593 +:10FD10009CDBFD5487F7DB285EF3030F43BFC3680A +:10FD20005042EE7EF26047B15E7D2ED3778922BCD1 +:10FD3000AEB1D6B54847930FDABF935514B3D7A7E2 +:10FD400074DAEBA55DF6FAB413F6FA4302BFF8BD18 +:10FD5000D57C130FF07FA30C7EF46188EFA58E6A2B +:10FD6000E076445FBBC7EEDF3061075D25B6667A9B +:10FD7000B7DDEEB84AD83F5725D81327BDFAA57589 +:10FD80005086EE0E6F9D03780A37388212C0F087D6 +:10FD900007BE18C3EDA09E0C8C3B7DE13508DE2B21 +:10FDA0006FEF8D3746C659E28D77045FAB3F8C729B +:10FDB000EEB72E86FD67398E7536A25E1AA9905E63 +:10FDC000D2A7AD783009E3C9D80EF54B728D6174B6 +:10FDD0003FF0A84AFB627E17D8FC2E93193F9B2761 +:10FDE000E8EF22135F2C92C4E330B124B4CF271F75 +:10FDF00064AC30C11EE4ED212FB617C512DB43DE23 +:10FE00008ACCDE23430041227C970AFB13EB6B4034 +:10FE10009F941CB7DF1B18B6D05E0F76AA64A74E5E +:10FE200062B529289FD1F5C67126093C0713EE1744 +:10FE30004C12DF6B48BC779089CE19E03DB3C41BF0 +:10FE40008DE6F63D4FDB64D44BD8BE69317824F0A3 +:10FE5000EA0AAF385F2B6485B8EFB3F0F70C10CF28 +:10FE60006FF07B3CAE93E3DE42FB80BDEAA07B40BB +:10FE70001B728D2DA897F45FF3EFE8EA49ACA8C890 +:10FE80001B3F77BBF77410BFB9DE1BB7FC49239E3D +:10FE9000B1631C456328E79F68D4A97EA03140F573 +:10FEA000A71A0D2A0F361650F9F3C620B5FFB2B1C6 +:10FEB0008CEACF3686A81E6BACA6FA87BE8AB5DE62 +:10FEC000527BDCD31AFF8DC73D81EFCEA2B86718F5 +:10FED0008FA03F741BFCDEB819FF5CCEE3C2438FDA +:10FEE000C3E3C5183F55FB1B47C49757B6F278E9E3 +:10FEF000CAB256BA2FB3B284FB1DAD27ECDF6972CC +:10FF0000C2B8585F79E066FE5D76B5AB9EFCBF5225 +:10FF1000AFF0FF6E237FB0E97E8DADCB8DFB81A668 +:10FF2000FF97688F5BFC6A9B3CC78C60A40B8F2695 +:10FF300071BDC5ECDFE1CBF7F2F726E8AF3E9F0AD3 +:10FF4000A2FF0111072A0C7C5A497122519F64A417 +:10FF50001E4EB3B4070B8A66A65BEA05DAC9856B49 +:10FF6000316EE4A969C1B3D1FCE4E2E7D32D71A4F9 +:10FF7000E338218F138550FEFEFF8E23FDC6C3F7A5 +:10FF8000EF5F329E4EC33840E43185617ECD0B1960 +:10FF90004F0F473F14F50EC6D170AFB99C673CAF09 +:10FFA000B9807F4FB9572F18129D9F58F4C24B2428 +:10FFB0007F845EC849E5F754A37B5970AD31A87EB4 +:10FFC00070D0B9B8C10CE754711E2FC7DB01E4181B +:10FFD000FFAE1DD76FD48EF7B623327DE7CD320E3C +:10FFE000ED6B41D4B2CF0CFD2BBB9E98D861AFFF17 +:10FFF000B3F490495F9B952E3A87DDFC75FF743B07 +:020000021000EC +:10000000235912F4DA0BB77C7A5A1C1F9407948791 +:10001000256F07EE3984EB0C37ABB679AF6AB0D7F2 +:1000200017AFB6D717ADB0D72DF3097DF70DEB910C +:10003000D01B563DFB2EDE431B17D7B3CB58EE6CBF +:10004000B42FAE6141FAFECCD5AD49363FEF0DF38A +:10005000BE4D1BFFBEF052912FC1AA8ED33969EE5F +:100060001A83ECFBA0899F08D7BF1A60A0F7774DD1 +:100070002CF3E7CE9157F16FDFDBF578E277FE9650 +:10008000267C1FD34888276806FF9E73CE9AC4F843 +:100090006784C7FBE15FF87DC3BEF07CB379CDF127 +:1000A0004E81FC47BC99DFABEBA56FA55B0A021C38 +:1000B0004B1BF8F7EAAF5EC342BBC8CE3B8FF25C86 +:1000C0002E33BF131161A47F0DC12357097C25E294 +:1000D0007BE9E2D7AB11DF4B4B648A17B2863CE277 +:1000E00069A2C33CFAFE9B13DB7336492C5D62BDEB +:1000F000F70F2F1363A4A506E9FB70A79A19E9BDB2 +:10010000538BE767A25D6FEE37E0E314C707BF2F9D +:1001100098DB60D1CB0CE980EB73267E57E69A041E +:10012000BD6DEEFFD284FB827F433ECA40BDC27FDD +:100130001764259EC7A17E61FC7B60ADEF0EAE5FAC +:100140007C3383AD63D1CF4B950DF4F39A9729D5CA +:10015000BBECF138E7690C76E1BF33E3FCF60799B5 +:1001600055A1DFFFBA87917FF3FA77D377614ED33A +:100170009B0B676A481FAFA50627CA459C30B4721F +:10018000A8BB838F31A8BB363C3BBB7A64BCEE690D +:100190007B6F76F539D03FCD7800EBF724B3485527 +:1001A000398ECBEB1BB497671F1929E601B9FDF413 +:1001B000E6EEF5781FCDE477586A84D38B9DFF3E39 +:1001C0004CE6EB4DAA605B1C0EF22BB7944AF17E15 +:1001D00069D84F1AA4DF5CB645E9A79FD7EC073A68 +:1001E00066BD257E67C6E764018F757E05ED003D1F +:1001F0009C8C7EC39DB3141DFD977F148ECCA1D61D +:100200005DC7B6A8A3FBF603B0D79AF0CBFDC31F1A +:10021000C576EBFCEA20F0FF4FE363A8F19CA2FD5A +:100220001BC307AFAFCB3C83F5027CF8090666849D +:1002300093E5C1C6035B7F5DFFEB6D4F182F95E023 +:100240000B84370F0ADF00E3C17AB724AC37D5E956 +:10025000E83B1EF2670CD63752F067CA747E1F98CF +:100260004D54487F8C5498D759DCCFBCAB79DDC353 +:100270002251B403F5BAEE6DE8DFBF59A0A7A27C06 +:10028000BDEBD0748AF77B364A4114A91EB55DC216 +:10029000FCD4B265ED154E78BE6335EB40DCEE580C +:1002A0001D75E3BDB71DDD5137C6F5CB96EFDE8872 +:1002B000F2B2AC399964EF74D64E71E3D47314CAB8 +:1002C0005B483947A17387D4D4197B30EE92329DB5 +:1002D000E79F35EBE57BD0C86E76EA7349FFDDCA50 +:1002E000C85E1AB98CC7974636A894DF365211F506 +:1002F00035FC7BCC9EEFF44806C9AD1E09CF193CF6 +:1003000092548BFE5D7388C7973CDF67BB25E2176D +:100310007BDCDD23B5AFAD443C810046FF252B746B +:10032000E036C9C7F909E53BE113F1AD707B63BB6A +:10033000C0EF28D67508E3606C35EFC758973417BF +:10034000F38AC43985999F9CB5DA6EFF8CD4F9EF96 +:10035000E5282E7D0BD98FB729ECA17EF83FB13E61 +:10036000F2FB5DA9AC70E8F786AAE7E04F46A59DD1 +:10037000C17BC23F4D3C1F48D4D3897E3F137101DE +:10038000D2D3B04FA384DE2A2B6CA67BF5A3FAE868 +:1003900079FEFB69267DF4F1B3D6733FCAC582AD01 +:1003A0004ECA4B594C796AA6FFB6135F443A1929D5 +:1003B000EE2527F4971ADA6A49FF9E2BC6F1300D15 +:1003C000BF7FE4724199463F33A565215F002DE070 +:1003D000792AF3C964CFAF959882CFE3F375B3D38D +:1003E000941F077206DEDB902C33B4EBCDF841FC92 +:1003F0007E62AD8ECCD5A40735F47BCD7B89B788E2 +:10040000EF6D6F480E5E5681F0FE4625BA690AC050 +:100410007BA887938C250CFC942B7CE77D4B037D7C +:10042000F85A2523BFE4DA3BA76F8894631EE208DD +:1004300016B6E445BA947A86F8727D95637BFE3CE5 +:10044000F8D361CB77062BBD795508CF0FF0FB4D64 +:1004500080E7992CD88CFD666A0EDB3980EBAB2CDB +:10046000164EEF6FFC6CDBF3E7C18E0DBBCE64FC68 +:1004700024DBB982EBABD1038C3F36617CBDDFF16D +:10048000E3E3A6DBC66D5118FF5EEE429EB796E829 +:100490003FDCEBAB6CF265F43D87D990CDCF61E8E2 +:1004A0000FEAB3FDA974DFE01E1F8F8356D58C566B +:1004B000281E956D3F8F992DE8D7CC0FA8F227FE07 +:1004C000CE4590BE775CE94D7C6EB77FCB50C6942D +:1004D000F685574E2EE9E2BF93E53206BBE7FB7681 +:1004E00023A378F85BEEFA25180C3AE09BEB6A013F +:1004F0001DF216CA20B0937EE55BF12DBC97FCB6C9 +:10050000C8BB6FF13F3FA6AE1FFFCA2C172B4C296B +:100510002B1EA4DD191B83727FB1CCEF7D00954D9E +:100520009C67F99D89C5B0C032922B51DBBA96D435 +:100530004BB67398B7C57D7680A7B4AE9FF3732B87 +:100540003CE56983B4BB62A5040FFE8EE500F09420 +:10055000170F0DCF3B220ED8E27F6DCC60F02C51EF +:10056000F8FA066C7776117E96C866BCDA0ECF1262 +:10057000C6F13B243C225E0FF0940EB65F084FF9A3 +:1005800020FBB5C4D545F859227EE7B33F78CACFE2 +:1005900060BF36A8F561949B5B242E8FDC77DDBAB3 +:1005A00001EFB3FFA5665580F843F8655760073C37 +:1005B0000753383F2DCAD6E89E97392E7EAF22E4E6 +:1005C000E2F7D3B1DC0D7C1EA2EF6F06A8BE0FFCD4 +:1005D000BC10E55B1550F9486390DA1F6D2CA3BA87 +:1005E000394EE17289FCBD892B24F2F712D77D6E5A +:1005F0000AF7EFB664E9972F43395BE1E1E713CBE4 +:10060000CF66212DEECF31D6F13CC65F365FCA8A68 +:10061000D08F9EB09FC3EDAFCAA4BC084FD191AE9E +:1006200046A8BB2E510D8C1F032FD68ADF2BA4EFBB +:10063000C6D4C94276801CC03CD7EEC8ACBD283FAA +:10064000A6A7F038725D76E742B423EA84FF87D725 +:100650005D29FE733DF7E7C3CDF6EFCD2E1271DCB9 +:100660008C5A7BDC7711DBF469BA8FF5F137FDAC7E +:10067000E828E6F9F8EB5503769042D5A8BF32AAF0 +:100680009CD118C6BB4FBEA8A3FDCA8A14B29FB6A0 +:10069000B8F52CD447C017E467BAC4BDC6C5097EF7 +:1006A000E6A221BEE73BD0EF3926C691A7A4D8E346 +:1006B000C69FB3C2BBAAB07180DF6534E3C31FFB22 +:1006C00098F9BD817EEF979BF0D408F9B9B3314614 +:1006D000798A267C394AB7847A625443CC9677C8A3 +:1006E000F077512C76D940EBD8297D9435D877BD59 +:1006F00072445C1DEC68FADD561C06EDE8C4F5CFCB +:10070000EFB3FEF257F2597FFCC2E3E58B3A1D14BA +:100710000734F163E2E3FF35DFE0DD0A919FC29821 +:1007200025BEE6906B358C57E5F82B294F139F9F1C +:10073000B2D1893D4FD3F1FC9F25BC1FD1278FB487 +:10074000A14742F99198179A088F9927D77BEFC64E +:10075000CBEFD105982788FE42E2EF2EDC268749B1 +:100760004EDDE6E8D072317E1D0837A7C07ABE9410 +:100770003BF40AA87B338A97EF82D116377C2F5837 +:1007800085E7CEE9FDC71B4DFD7697C0C7DB6A6CD8 +:1007900024C6D517062AEF4AE9475F2F6EF8018D68 +:1007A00077AE90B389EDFB5278BCF34742EF5DB66C +:1007B000F2893FEFC37358A3B01869C753D055836C +:1007C000BFFBD5FACA68FA5D819D625E586809DA96 +:1007D00011EFFBC30F58E7D50C5DE1F7BC3AA663F8 +:1007E000FBB97F2B7CFC1518AFF502AF8EE7C47FF9 +:1007F00029719460AA43221C30CEBE148043FBAA08 +:100800008DE8D71CE75977F78F781EE78CEA1365D8 +:10081000504FED1E81DF3DF9C95D59D57EA0C367FC +:1008200033BA47607BF5DA0F361CC13AF21AE88119 +:100830002FEEFA6003DA17E79EFFD19EBBD06E1E43 +:10084000EBA47BA81B13EEF965E93C1F284BB7E32B +:10085000E1D88AC1F1F0ACC09B050FCF22FC8978AA +:100860003816083D87F801202F9E22D1FDA8E032DE +:10087000803134ACC33D05F63DCBE8F8F15D0CDDCD +:10088000E36805FE4E058CF322BEAF7DD54AF7D254 +:10089000CC712A02A14E7C7E6CC56B35F8BB6BEE29 +:1008A00063FC5C52CB6791241FF57BD9DA2F344C63 +:1008B00057F8EF5EF07D782983F34D692A974B69ED +:1008C000C22E6972B607E642A9E7DF7B8B0EFDD622 +:1008D000E7B62FEC8FEE5ED1B9DD992AEEF534EB59 +:1008E000BBB5A596F73E11F83891197A07E1708AE1 +:1008F000FCABB6328E37DFB1F462F297F259097E63 +:100900009FC29DCADF07B8DFA3F7A7B793D3EFCE87 +:10091000E7EB6D2BDC4A79C0EEC0DDBCCCEFA678EE +:10092000A09B7568B8DF7F4DF972437300D7112C17 +:10093000C07AC696B656CC1BDF853603D8972950A9 +:10094000C738DC4ED06BF87DEBC870FE1DD0C47587 +:100950007DAE737A3EE00FFD15E1E8832757F79EE1 +:10096000BBA0FFC6F14E8A9B9E2BB72F5C8AF47406 +:10097000BE97F4363C5F68BDF73356D0D1589DEB37 +:10098000D98DFF47A37613CFFF17E886A0E100803B +:10099000000000001F8B080000000000000BE57D38 +:1009A0000B7C54C5B9F89C3DFB4AB29B9C6CB2C908 +:1009B000E67DF2D22001372F0C9AE2092F03065868 +:1009C0000A482C281B1E129547F0D1AE8A65210FCC +:1009D00002861A115AAB2DFF0D3E2E7D07CBADB40A +:1009E00017B909A017356A542EA2560DEAB55A69EF +:1009F00049C196D5EAE5CEF7CD9CEC3927D910B49C +:100A0000F777FBFBFDE3AF1DE6CC9C99F9DEDF7CBD +:100A1000F3CD59A9E0FBB74BF1843C62220D5D0E8A +:100A2000427A573DF9F113E584C4CAC5A502A16510 +:100A3000515F6D5932216D2FE7978AB41E27D1A7D8 +:100A40006EFA0F0F29F73909F930D91F27D1FA7932 +:100A5000F8BB9A10BB2C99FD308E47714815846401 +:100A600010EF9C32FA4ADB06E25D6E214449E88AC7 +:100A700029CB25244DEEFAC9FD74183B09559B720C +:100A8000719C64E86F0FB7FD458C8F8C53ED51DC82 +:100A900030FEF33027FD5F45222D2B86D6CD1E126A +:100AA00014C7D332DCDAC74AFB491847248D4142C8 +:100AB000C737D7B4E3B8623816FB89E1F63EA89B86 +:100AC000253F81797609FE42989FEC11CC2405D60A +:100AD00045FF64DACFA1107F3121FB1246394F4127 +:100AE000EB85E6291D699EFF4E60704D9AE9F087FF +:100AF00068FF4926E2EF2A8EE0F755C98CEB78545F +:100B00003261D99ADB51E77344DAD5D29A68C2715F +:100B1000287A14A06BB3B4DBBE54D3EF4F4047FA2E +:100B2000FE8914A51AF06B15880FFA6DAD64F48E6A +:100B3000EF4D2A8575910252FECD7184642732BA39 +:100B4000533ACDC0FE133B08A1FD630A189DB616AB +:100B50006F2732D43D8F61195BD48FF0C4922E3B46 +:100B6000F1C27C2458E381F5D231D309A9EB686A3C +:100B70000B6612E212BD45D03EF6819D6DE689847A +:100B800074BA587B01AD07ABA2C3674B64F0C703CF +:100B90007C749E17CBC5A089AEFB2C19B75BA44B08 +:100BA0008DAF94CC4BE9F3251CCE0F93951B11EF21 +:100BB000A49F00DF7692811E1BE5F360A5E07D9C7B +:100BC000C2E90C76297680977490B9B47D25E7F355 +:100BD0005D741A42C70D5E42428FC3DACD1D04F028 +:100BE000B1CB4AD70EEFA75BF1794C4177915FB358 +:100BF000CEBFF3F72724FAD6C0BC9DA47F0CC98FC3 +:100C0000D0C308CFEDBC7F47AA72FB70FC3E69E6FB +:100C1000A947EFA7EB209758BD85B4D822903AEDAD +:100C200038DF9744ECFF7D0EAFEBEFF6C61085BFC3 +:100C3000C9DAE1994BFB495CCE27ADF9DDC74F8C92 +:100C400030CE83FCFDAD7C3DBDAB5EAD2D037DD0D4 +:100C50002B7A058A1F7B1109C6C5231F6C8575DA9F +:100C6000576D457E57322433C83195FBFB8695FB83 +:100C7000242AF7C2B072FF6014B9DF311C1EFE01D6 +:100C800072BE7B24F9BB4752E56F647CF703BE2B31 +:100C9000A06478FAAAF8EEE1EFEFE7781F01DFFB36 +:100CA000114F43F1FD5BC0D345E0BB07E93614DFCC +:100CB00087240DBD63D4F90B06E73F3A1CBDED3028 +:100CC0002F1BB7574B472587B60BC0D712B3174416 +:100CD0005E47E8B88F5CEB90B6D2E7FB9295BEFF1B +:100CE00025FABE03E346A3EF2490E72B09A9EC986D +:100CF000DB162CFE87CC776A247EFA09E727A3BE91 +:100D000030CAFF794E7F8A97B352C5503DD94948C2 +:100D10000DF0CDBE64FFE7081FE99F017A69D7DDBA +:100D20002E612BED9BA9740B8974BE4FB9FD58251C +:100D3000C9389EFADE2E73B76086FE8D9210147449 +:100D4000E399134718CFB80EBA3E5B6205E835C584 +:100D50000EE5ED12A39B8B220CC66BE27E44A7AB83 +:100D6000A301F4B69BEB6977A2C04B56FF66AA229B +:100D700025327B9204E39C2D17EF30E531BD0D78D1 +:100D800055F5B40A8FC91722FD60572A89027631BA +:100D9000A2EF6F785CD5F72B1CD0DFACEAFB4C18C8 +:100DA0003F3951E53F365EB4758EE5F6722CB77368 +:100DB0006A9DAEB390AFB308CA68EB34E269B4EB96 +:100DC0009D0FF61CC7574A13DDD1C7A39C83FD5462 +:100DD000BAC118248DCA6B3393D739BDF9E8AF4D2A +:100DE0004A54ED9DEF1B8057254E3A92040D448ADC +:100DF00085711FB152B8295D1F59B5BDDA4AD7D3E5 +:100E0000B95E2A01BF2EBD81D939795576A748E749 +:100E1000AEE17830F2E9E0FBD6AE3165C588975A8D +:100E200098E7EA2AE6372450BD01B381FC5321221A +:100E30002E5BD0E3A5EB6D13829EA5C0FF331CDEB5 +:100E4000C7A183633EAE7F881CF092904D3AFE2589 +:100E50008EF20BF4DF88FDA5B860A3EF62FADB82A7 +:100E6000E85F44F0985482E8B20F1C49A275CAEDBD +:100E7000255B697515E7074AA79548270705766238 +:100E800004AF43C767F4AAF6350A80E798223A15FB +:100E90007D1AE3A3CF29DE4C7207E907FFA880F291 +:100EA00047318C770CC78BACA3AC4CBF8E923258B9 +:100EB0004764FC56753D775DCC7AD47ED1F1C2FA99 +:100EC00005ECF1E30995BD7331AC0C4EA64D40BF66 +:100ED0007762424D943F0A3CFEAD8C5F1BAFF08DB4 +:100EE000C3F272567653E540F981B0BFABED0ED434 +:100EF0009BE40BF3A97E3B7B769ECA0FD596240319 +:100F00007C3DB258FA702CAD937EE17CDC45CDFF80 +:100F10007062C5D0F91707EEF14E2DA35848224B49 +:100F200086F31B17833F4D9F3FCEF9FBF796EE2CC0 +:100F3000D073759EC98F270EC3EF8B03DFC5F1E217 +:100F4000497F502C07F412F417813619A54C5EC165 +:100F50001FECE27A2D218A7FD7C5E552E5E7852D82 +:100F600093491E2D6D761274BA5899508AF2F4AFD7 +:100F700089D88FD955E5DA44B32044E051E153C70D +:100F80003DC4C71D5CAF95ED177E6F21757B1D0CB1 +:100F9000BE52CD7AD67AAA0F69E154E133AEF7E8B2 +:100FA0008680772AF5230E6DF06399149842DE4F00 +:100FB00062EB8C2945FA052DB43493BE1B6FA34B0D +:100FC000B09AFC2FC2BA575FF2F1F7BC143F7DF61E +:100FD000B28D268AAFB5B5F49DDCD1F3C557E58750 +:100FE000EF88D2EFFDB9113E689A5652970C9A28B5 +:100FF0009836A3B792D65FF49E70D0FA1F1E489B16 +:10100000E1A17AA1E9156F9D9B9A8674D7DFDADAA0 +:10101000A93C34CD1550DF92E00F63AAC18F9BC16C +:10102000EA7F492C9D11047B71BD807EC3DFE8FB04 +:1010300058EFD1FB7111F969C1F5962531BBD55433 +:101040002D44E9C7F4DBDF1379BF5923F76B74F143 +:101050007E37D07EC5D1FBCDE3F306604B027E67C1 +:10106000D884FAB64979EF0581D67BAA6C32D2A32F +:101070009C0E48FD95AB6338413E4DC4FA4B9C161F +:1010800054BEEC2E3ACEE16FD8D02E74CC8C0DC16C +:101090007B3D5FB8DA41CF772879A89E6C940F1C0E +:1010A000A5AC043EB650B916799DF373028CD39A61 +:1010B0002B9427E7A37E32037DA2F1D97385AF6716 +:1010C00083DF44F92915DE5B7D89D001FE569F3D03 +:1010D000BFDD4BE75DBB5FF4DAE411F86408DC6761 +:1010E0001C60878DF0BD5C29C6088EA178A0705F5A +:1010F00002F31ECC1CE8BD9C8EF352B5C9B489CE58 +:101100007778A26D4C3FDA3B5F11B42BAF31FB36E1 +:101110000A38BC5F0D0EEF093FC0F18595D94BBE73 +:10112000CED951E8253A3F75C0FA002EB02F148E63 +:101130004930AF98D59F097A435DFF68F5E30C17F6 +:10114000D32B1AFD38C355115D3F821FE0627EDC50 +:10115000A76B09F8C7CC3F8AA6B7AE77E9FD8B51DC +:10116000E8ADEBB5F38F566F69E850EFAAB8783A5F +:10117000504A239E2D1CEDB42A4BB43E09FE4DDF90 +:10118000A3D2D16FCB8FF0BD1026DDCE78C6FF760F +:101190004AB226BFDF9324461FBFC0E3BB0DD6650E +:1011A00049EE17FD17419F7B5D43ECD7BDAE11ECB7 +:1011B000D734F1545302D59767AA04845709539042 +:1011C00050DFD22D8B069E49F676DC0725509D69AF +:1011D0002EE27A99FE8FBAFBC46C8FD4936A245D99 +:1011E000DDEDF3E8FAA7D6C9BAF6347F91AE3DA398 +:1011F000C1ABAB673556EAFAE704145D3D3758A337 +:10120000EB9FDFE6D3D50B3BEA74FD2F7DC8AF6BB8 +:101210001F136AD0B58FDDD3A8AB8FEB0AE8FA5F56 +:10122000BE3FA86B2FE96ED3B5971DEDD0D52BFA35 +:101230001ED2F5BFE24448D73EB17F8FAEFDAA8FE4 +:10124000BA74F56F0CECD7F59F44CCC17E5617CE1F +:10125000A3A635C966954E265D3B394FF5F219CAEE +:101260009802A5AFAF44F0066502ECD55740EDED0E +:101270003CD685CCEBAFAF856019A9B57C00EF05F6 +:10128000E97F606F29163FD08E3389EA6701FC0E33 +:10129000AF25F21CD6F3FB191F93F138EF0783F645 +:1012A0009AF6AB267909329D77D251918468BDF6C2 +:1012B000027C35142EE10270116F37C0F59FA23702 +:1012C000080F834A5F414A74B814FA1FC035071AE1 +:1012D000E97BB3C324D42D0C0327876776A560066A +:1012E000B91B022F61FB7E23BC81DFFF65DC110D82 +:1012F000DDFEE872267F08F2EC25DEF322C89903B2 +:10130000D77BE618D52B243A1EAA8376B4ABD58AB0 +:101310001002BC9DDB3030EE48E130F07A48844F5B +:10132000285C31B25E0EE38AF472E8F47A46E6A3F2 +:10133000201911DF17C2AF4CFF637EDA8019F03B32 +:10134000A94A200FE746C7EF1CB32582BF8BC0AB6D +:101350003B89E2756C04AF7F255573CA28FE94392A +:10136000896688A31AF59C8A3FBA1FCA487247B794 +:101370003B454917ED2F17257D057F596BFF93BE20 +:1013800082DDA176A102E62566BF7C31FB1A2569C4 +:10139000885D509246B00B83FB9A2A160757ED18CA +:1013A0002910507E5A2792DD10AFAB4D62FBDF68EB +:1013B000FB9B5A3E6F647F73C6ACDDDF28B6D45802 +:1013C000D00BD44F980BEB51F73B67CB938E80CB70 +:1013D000FA098F0346E057E643BFD1C2BD246988AE +:1013E000BFB22469047FE5E04616AF38F8A2E8DD15 +:1013F0004D677D2659EC765378B793712188ADA857 +:10140000E72E357EC2E4D4FCC01ED8F4D1F5DF0C43 +:10141000E3D6C8D5C2CD103735AFC3321ABF7D3B36 +:10142000E9A2FD9C6F277D3D3FE7BB5F85DF46BF9F +:10143000CF6A3CE1A72035B530BC04DF8EC378E627 +:10144000E62D04F7259B37B27D5188D3E37BBC5C46 +:101450009CCCF8A73ABE12FDDA16C189FAB1E52490 +:10146000DB5FB45A84106171E49DB0FE23691312EE +:10147000C05F3DDBFB9AC3AFD9EFFC9EC37D9CC32D +:10148000FDF69D8370FF18F865F5B739DC75CBB6AE +:1014900055E8E0CE94504F837E1123F05AA52E02DA +:1014A0007C395D74209CCD05246443BBA4D44ED309 +:1014B000C4739B33995E8E03BD4CEB76D08BB07FAB +:1014C00095CDEF811E6BA3FFA17E06BD47E7B778E0 +:1014D000E8738D1E8E01BD47FBC711D65FD57B6AB1 +:1014E000FF18A2E93F8C3E7C2A89DB192B4965FA5B +:1014F000707DDB5884CBEFD1EEA78CFA50AD1FE99D +:10150000CF4FED1F467ED432A1F2A3FC029DBF3720 +:10151000A0AB27D584F30B74FE1E29D0D653EBEC79 +:1015200005DAFE697E4957CF68F0E8FA6735CABA2E +:10153000F69C4091AE3D37E8D5D5F3DB2A75FD0B1F +:101540003B145DFDD2876A74FDC7847CBAFAD83D2E +:1015500075BAFEE3BAFCBAF65FC23F60FF4FEC33E8 +:1015600015CA4FBFA47A10F6FBFF95649989E790DE +:1015700027177AE0BCB3C57D9D5DCB8FC6F2889BF3 +:10158000F16DB476556E0F6EF079A752FA746FA8AC +:10159000D3C9710DD76747363460FBB31B1AF1F915 +:1015A000975C8F98934D411B9C53EC379DB4C503BA +:1015B000FF3606813F7709FE2F416EC863FA730834 +:1015C000F088201E787598CEA781B79A5CEF9DAA07 +:1015D000C1C7147BBDAE7D9A74B3AEBD86E2E34A4B +:1015E000AAAFAFF1ACD33D9F21DFA57B6F63E6D2FD +:1015F00087408E367BAC04E46833617854F1BAD905 +:10160000CCF0ACE275F3FEA51EF04306F11F2C9E54 +:10161000A93822F877EF183313E2DFAD27AFF1C016 +:10162000BEF64822C5EF087C7C21FC1AF17A949F13 +:10163000C7D558F5E7ECD7707DA59610FF4FA6E506 +:101640008BBDE2A77E8476E43886717EE3BC545F6E +:1016500095C1787F2A7CFDA6ED64A89E9E922CA160 +:10166000DEAC31D18D15F5776A2C1D3518D7E6FB28 +:1016700051B3C070DEE29EEE8573FDEA6481EBF14A +:10168000BBB1FD4E952651F064A68AA45BA3878466 +:10169000DC0575A0876BDC568CD7D5F07C00E37B2E +:1016A000151C1F5F979FBE321F71FE50F948E58FD2 +:1016B00068FADD4C1AE1308F981D5676CE1739B78F +:1016C0005B960CF2F2732A2F1386CA8BD12E1AC79F +:1016D0000F4047F09B1CEC3C0F3B82DF7F3409FD41 +:1016E000A56878DFBC41CA345B22756A2991CE9B1C +:1016F00005663FA9C3EBF9A613C747BB483C0E1CC0 +:101700001FC085F30CAAEF8B203FE1BB9C0E8FBA64 +:1017100095BB808F089CB38E22AEFFA8DB1744B820 +:10172000CDFE22847394EF452F3B70FD74DDB2161D +:101730006FC9F4DF7DC0AFE60E3CEFD8E150EB415E +:10174000CC1BF115B0F38F1899B5ABE759A9FE1072 +:1017500081F392B8720227A2C404FDC0BF8AEB5382 +:101760004C2584FC6AC7C2999E31B4BDC0EF317963 +:10177000B1FEBCD90DE77AB40E6791C185CF1FC108 +:10178000F352E93281B6DB9BE73D7F340BF344B87B +:101790007E99F73CF04FA75A87C034E5C3CED8C135 +:1017A000BA62A77BAECEBCC17A10EABBF8B9F1AF82 +:1017B00076CC7BBE99C5017F0A78EF6D3605D13FA7 +:1017C00024CE10EC9BFFD1E7309DC54F1ECD03FF0B +:1017D000CB63F616CAE06710DD7BC793AD2CCF2430 +:1017E000C57F00E8EA5C3F80DBC1FB8A5D4EE0F329 +:1017F000081D42063A30BCFB8A42FC1C2A8474C98C +:10180000F17C1AACA6F3E55431719089B415EA72F3 +:10181000B349EAC6072EA493A9A851B0429E42310B +:1018200091405F35F173C1B82276DE29D9983FFC2B +:1018300032E7D3779259BEC43B5C4F257876B07CB3 +:10184000A11A13F64FE06504FE66DEDFACE3B75E77 +:101850008FFFCD64CD3E8392AFB688AEA3B3D9E5FA +:1018600082F3B1EA66D31D604FFE1FCF83A074FAE6 +:101870002DE0A5D79B14EB67743B392CDD385C1742 +:10188000A25B347AA9FE68B4F6EBAE177D009FC95F +:10189000EEDFB980CEBB7A7F528948F176BC4E2C00 +:1018A000EFA3F5354FA7E239EC671C5F6B4D0329B9 +:1018B000A0B7DA7EB4D107A56D5F7D304306BD25A4 +:1018C000EBD6B1F64035E6196C8A8BAF027A1BD79E +:1018D00071FC8BFF48063AD47E66F3A17E91D9FE57 +:1018E0007F090A1782750CF6FB37727B92E566FE5C +:1018F000FA316EB76E54FD5C2AB8DC6F15CE539783 +:101900007DBEAF7E16E06F699D48E0BC7849A49D1E +:10191000C511026CDF6FA7FF815FEC2789D3413CC3 +:10192000EB83FA78C00AE29DEEA6FD97B5199E7387 +:10193000BF788521AEB0B02E6257CEE2FF8770BD72 +:10194000F365A68FE77BE34290DFB0C0A7B747AF50 +:101950007F292EF151F88FC3BB74DDC7175FBA1B07 +:10196000FA19F1D1E066FC798CDBEF41FC10EC4B0D +:1019700096FA042BA45618F161847F106F063CD4AC +:101980009B4BA6BBE5A17830C24F3186F85D41F193 +:101990000BF918D1F0315DACB5C039DBB2B902DA60 +:1019A00049237E8C7850F7352A3CAFAA7012EFF1AC +:1019B000383ADFFBED1602F68B745F8DE7757378AE +:1019C0003F0D3CB87F91E87F2C0E243F9304EBA49D +:1019D000C8DC4AFBCD0B5A74FB9E157CDFB394F830 +:1019E00012200E47E17C2F0A9D75FB1FE3BA8D7014 +:1019F000CDE2F6C2B84F22E6EE62F0CB6E70F3F89D +:101A0000D1787DFC8894BB87D5BBC6FD92CA574B65 +:101A10000273757E8940FC837589FA65B77944F94C +:101A20008324D86F5A7682199C6B1F30A35C898BF4 +:101A300013401EE712BBECB0037F9808C4DFE62812 +:101A4000315857C73BD321D4805CDE46870BE07901 +:101A5000B282FEDB12D68596C11EC0DF6D1E2BCE74 +:101A600043F9EC532D9F45C3C3BD6EBE5F1C4FC6EB +:101A70005F0CFC9F83CF5181F18C6E88270F08F695 +:101A8000D06E2112D7A0FF0C5AA9AADC0E425B111E +:101A900059EFE0F908F5B7407F8E22CEB1DD3D4C1D +:101AA0009C433D2756F9F346BBA35B647C776A9061 +:101AB0003F74E7C47E02718CD6F45BBC806FD53E68 +:101AC000523FE7C76E38778C65710C55BFC782BF30 +:101AD00022423E86F9732D9F0EB1CF4796EFE9A4BF +:101AE000B8F03BCC04EC8A5FF8A085A05F396001B8 +:101AF000FE5A12B09CD1BEEF77522D520CEBB85269 +:101B00008272A9879D6F2F256CDF4482B4BF268E19 +:101B1000EB07B2D1E7FE98357B4CF9ACDF7A38E3BE +:101B20006DD38C9B1719D738DF10FB6418DF384E44 +:101B30002BCF776AB57AFB1488EB3D2F966C84C661 +:101B400022E64F3EED36E9E2A24BED4999E6A44884 +:101B5000FDBD34479DD63EABA5FA9E8AB7881FF6D9 +:101B6000179D1F769FE594DE0F23A7BE961FF6BE36 +:101B7000FB14FA61E7DEB6A1DE3F53131B02E65405 +:101B8000F314CCD46D4870A1DF1C84D21EC84078F9 +:101B9000D4BC8524D92B005E3F01654CD76F96D904 +:101BA000B95D92D92B78E9F3EDDC9FC13FCA07DB21 +:101BB0005D5227E8619B9D34C7B8E03D06B73ADF28 +:101BC000E0B8455E412A8E1E0F3CE7BEE878E0B9DA +:101BD000E1E4A4D7D4F8EEBDE0173E2F1288DBDE97 +:101BE000E0B90B9F5F175886E5F5819B99BCA6B0BD +:101BF000F9E87E534871839E7AED86EFC03E739F6D +:101C00000DE36FABBFFDF1F72A64C00FA537BCB77A +:101C100062D94E889B898526F4BFDBB2D8FE58DC9A +:101C200028E07E708B6CADD9077C945C7D398C4745 +:101C30003CF12690D733B14C5E5B93A7E2F3736F10 +:101C40006FF62CA5E3C47A62311F4CDC987B3FE42D +:101C5000BF91E7E87A09C825417BDC6A65656E0AB1 +:101C6000CBDBCB4D61784D4B617E509BC55FD4582B +:101C70000C79A540DC081EECE620911CF0DC8CCF32 +:101C8000454140FFA635D65F74A7067FEAB8F63017 +:101C900015DEB2E1DEB7E273800BDF77B1F5A8FDA8 +:101CA0002E4B61FEE7657C3DF6701CCED7EAA2EBB9 +:101CB0007268C78967CFB99C19E5E487EE29E3010B +:101CC0002FADC9CAE529282FFD16D093377A8E9EED +:101CD00010E247A3E758BCD6F985D09D037E77B5BF +:101CE00018DA44F93156906695C33EB4DA82790227 +:101CF0007D45C94E88BBBF62969C2E38D7E2F4F76B +:101D00004DA3FE27E367F77CA0CBB46513B6B26999 +:101D1000EC5A7BF34AF1937D9321AE1BB4E07E63D2 +:101D2000893D18827569FC1B7E6E47FDA609FC3D46 +:101D3000BACE25534525267E183FB0991CD1FA9777 +:101D4000544D1C8173C97778F5DDA96717C0F2FB84 +:101D500089649D2268FD4DBA1B99007E01FB5B12D0 +:101D6000D0FB4746FF6969B9F7D92419F0D1E5439B +:101D70007C8C33A35C8CD6AF24E401C4D37D537F29 +:101D80006D978B613FC5F48273EA6B0AE809EA0735 +:101D90002D28A77899335594BA69EFF68089801E6B +:101DA000DD566EC1FDC3B6A2FEE7AE06792C37CB79 +:101DB000180F28EA9B3F05DB2B24F08BFA608A344E +:101DC000ECCFE2E90E47A810EC77C57FDA9769F807 +:101DD000655BF97B63303EC1F98852D0316D4204B6 +:101DE0007F801F1995E8465CDF91BB63513FBDDBE7 +:101DF0002EF2B835753428BE9D1E268FD3785C7BB5 +:101E0000D94E01F37796551CAFB6D1FECB5A049448 +:101E1000CB25EBC593104F5C12D0FB65FE46EAAFB5 +:101E2000C98867BDBFC6FD393AB815F877B4FE9CBE +:101E3000D13F792085FB67A5A454EB9F44DB3FA9E4 +:101E4000FE493B511E62F2C3E65F6A66E751449960 +:101E500087F89D269E7AEE6A0ADF99F2BC3CC0C7DD +:101E60000ABEDFDC1678D30EFBDB6D5F8828E7BB8C +:101E7000ACD471817CE7F8AA4737D2F5F5DC7D59FF +:101E8000EAFBB4FD672956C4EB2E93FC832A9083AA +:101E9000E72DC847D1D6650F88A480CA7D4C40C0C5 +:101EA00052A58B331043CC1A7DE3E4F754DCE503F1 +:101EB000429E46BFFC96CB67E27AB66F76971325B3 +:101EC0000DF68372DE6EDC979A658C2BD9B3E452E3 +:101ED0009057B5FF2E81E5355BF7572B101BCAA134 +:101EE000EB80F964BA0EB073B98138ACE70592B0F3 +:101EF000CC0F24625910C8C0F6C2403E96970472B7 +:101F0000F1F9A581B1582F0A946139265082E5650F +:101F100081ABB01C4BED1CF42B0E5463392E702D8D +:101F20003E1F1F9887E5E581B9587A038BB0BD2421 +:101F3000B00CCBD2403D3E2F0BDC8AF5F2C0ED5801 +:101F4000AF08ACC37242E01E2CAF0834615919D8F7 +:101F500088FD2606EEC3FA958107B1BC2AF00096EB +:101F6000558147B05DF5375EE272353B71A9C4F229 +:101F70000EBC5EF0CF7645D1C361AEC757A628FD33 +:101F8000A08FD57E22CF0B37F6FB34457F8FCA64F6 +:101F9000EFB6E7E3FE3DBF14F6EFBBA81E48A3F47F +:101FA00059939BB71BF6C1A7397DEC96462543880C +:101FB000ECD713A7B2FB006BF6D763FC9154268DC8 +:101FC0002AFEF36E0A7B7F9739484C98BF4FF0FC8E +:101FD00029A6A04F80713A8B4D35A0D7EF2B3ED369 +:101FE00003723DAB42290737550E761DCD437D3533 +:101FF000A51CD659946A41BE9C90A29C07B873CA8E +:10200000DD33E7D1F69C66136E67652255435D9E0E +:102010004A50BFA9F195CE58BD3D9453557FAF7F2F +:1020200007F4DF955E50CAEC08BB3F20DE9387FBC8 +:10203000C75DD66EC10C7A8E6E6C1E57753FF46FFD +:102040005DFA04F851796DDE4376983FE82DC3F5CB +:10205000A6B238566E873C39862E28FF21E510A49B +:10206000BA1586FC936369FDD23DC143508EE90ADF +:102070004D8EA3E5D8FDDD87607B33AEBB7FB28399 +:10208000D62F3F4A0E035A4BFAE4294E5A2F3BA152 +:102090001C86706445BF7F4A3CD0C91A6A8AA7EB88 +:1020A000D9F50EF16EA4F5CA531D226C0B06E96F2B +:1020B000238D7B3574B1CB1D0AE03BF30E09E3346D +:1020C000BBCCFD3189C543E9D30970039C940F4013 +:1020D000EF672A034887CC72521A443A48338B90F0 +:1020E0000E8C5F6A5305950EDED40AC0AF540DED19 +:1020F00003D388B49BB6CF1E67427D6D6DC943BBC9 +:10210000A2F21DC5EF98B94E2D1DD838BB0C7E6AC2 +:1021100034FCD6FE93E0F72D6E57A3E117788FC5F8 +:102120004F4796E31B381F5239BE3ED51DBDDFA673 +:10213000549E9760C073A7891CA5B647732F86D29B +:102140009076BD37D5A4DED719155EBF93CAECC50E +:10215000FF355EE7A78E8C57744ED322F710A3E9A4 +:102160001B180FE01E4ECF118C53E6A29E6BE7FCAE +:10217000D7D6C6E293AA9EB3EDABEE8638A5AAE702 +:10218000EAF8BAA2EA2FAE67AC3C8E1189CB8E4337 +:10219000FBF7109FE7C364E5FB202FC4A38FAFB705 +:1021A0009BA46AA05F7012CB5F995DF98A22227DA1 +:1021B00064BCAF8C072780BFF8E210D02F97FA0BD2 +:1021C000664A77FACF6E28E38A2513DC1355F35A53 +:1021D0008854EFD1CA996ACF2372A8F2830BF78390 +:1021E000C0A7D0FF385F67641C81E535DC95DEB998 +:1021F00055A3FF3A1D99F89EDA3F1ADF7ECADB3BF2 +:102200009B9F44BB1157C5FC83846617F271C2546F +:102210003F581A0DFFFAADC0BF7DA9E245F1EFCBE3 +:10222000FF47FCFB782AC17973AAA41EC83FCAA144 +:10223000764706B9ACA2B88678BEC78AFA4F268C14 +:102240007E7215CBE3A3F8EA867867D0E40C815D53 +:10225000116D0353017E624B9460FFF361B2FF1D69 +:10226000D007D1E4408A934B8098A77F70EE5A47FD +:102270001AE4A54BB1503F45EBED106F70F5135EBE +:10228000BFCF91F6D5E313A753FFF642B303EF8F09 +:10229000FD2915F9D7771A4AE55209F3D7543EBEFE +:1022A00090FD57E531223F52892A3FF5C5A8FF3EF0 +:1022B0004B7547C68BE6CFECE37A2DD673217FC6EC +:1022C00085F244E59CC90FE7FFB68E91E55C5D6F32 +:1022D000F802F2BE65C69B41E8ADC64DED3C7EA25C +:1022E000AE33C6C3EE61C6D412DC973879FCD4CFC6 +:1022F000E3A7F602FB05E2A7215D1C4B8D9BAAF725 +:10230000C48D78CEF7E8EFED803E7AB238020FE167 +:10231000FBA9DBF99C1D9BBC0970BF20F8128B63E5 +:10232000A8F9E0B5F06F0AA7E015308ED4F15D266C +:1023300077B3324968135D77EDE70251E83A7A3FA7 +:1023400017B134C64D67D1F7C06FE815EC213BEDEE +:10235000DF53622370BED6EB34E1BEAEF7A48072C9 +:10236000D05B12877952474AAEC03C08637E945ACC +:102370002EF4D70F9B3766C4CFC21B9E71005D1E23 +:102380009126DB73715FCACE19557DACF69BE319BC +:102390003C679CE181FDCDF28166FA84344BEC9C74 +:1023A00051E5BF34C7BEE714FACFB455CCAF4C27C4 +:1023B000A18D9263285FF77AFCF3609C4722E7784F +:1023C000BD97D0F9DB647E8EB736BD2A8F0EF0C381 +:1023D000C1733CFF74E8AF247595001F3EE2FDF524 +:1023E0004FEEA7EDB536BA4F053D5CF676B20C71EF +:1023F000E78A67DC808F5986F5ABA51A3F33EE4735 +:10240000977906CF0B305E7EB67C1EEE7FA3C5CBE0 +:10241000D5B89EBA2F85B89D348C1E37E25B9D7F60 +:10242000B1C0F69FC422A01EEB85AE13514FDC094C +:10243000709266964FA0D804CC2778B1BC0CCF130D +:102440008837899F5376676ACF29D5F5D0E785C34A +:102450009D5F2E8E92CFD1EE617666B185C52B85BC +:1024600075CF2C86791797D804766F8BF1E91276A1 +:102470005646EEF1307F6A897733E6F11ACF23EEC4 +:10248000F1B07D69AFA53B53E2F14CEF30FC190D83 +:102490002F272C1D78EE75628548605FFEA2FF8AAB +:1024A0005432CCBAD5F24DE00F8AFF6F014EDC1AE0 +:1024B000BAC9C9C3D2FF04E4E158869EF70CB6D767 +:1024C000C7609CBB0EF0A559F7BF723C1DE3F0132B +:1024D0005BB008E2BC6D4B77DA09F553B7149CA9E1 +:1024E0000852BC6F210315BB413FAC7762DCA0AE44 +:1024F000FEAF151BC769F058C9F0B8E4F01609F82B +:10250000B52EB7D91DD4CC63C4E73188E3D0796345 +:10251000383FB71365BF67B8F847C17CC6178763F4 +:10252000BCDD747EFB7FE697821D57E31F300FD31F +:10253000D32C5E7B87C4D601BA46CBDF7581353A92 +:10254000BD11131648485B377760BC33266CC6E76D +:1025500046397AD820472ABEA3D14FC5B7F1B98AE8 +:10256000EF13F55B8A201ED7163BBC9F644BD3C785 +:10257000D38DE7DFEAB9AFF1BD3F703A9EF54F4426 +:10258000FEAAB3060B4723BF2A7E8E7FB15902797C +:10259000B1F37375F55CDF59E4C273FCE375229EF9 +:1025A0004BC4164A9D90DBD2CFED8C6AF7D4F3C1B1 +:1025B00068E77D4EC3B9614C11AD6BCE7F8C764F11 +:1025C000A563B47342239D84343D9D06CF07A3C801 +:1025D0008D2A2FBD9C1F2F94EFB0D0CAF2188DCF3B +:1025E000DFE0743DEBFFE1820974AADB2B4C12F0B3 +:1025F000E136FABF20C84DB905F39DDEF8C246C0EA +:10260000CF7356981E8538F789FA37E64F01BD50CB +:1026100061C173896E2AF7ABE87AB670F91F8CAB8B +:10262000B68BA14201F60F82EEDC36B6C0AEABCF60 +:10263000AAB0A07DDEB6A32404FB993AC2CEE9B6C7 +:10264000547C33A19BFEFB8D022B8E67DF22E0B909 +:1026500092FDCBCD3EA07777FD0FEA309E5A684DB4 +:1026600004FDA8F2035ED4803C3289CD71B870C2FB +:1026700075708FFBDD760BC1FC6321726E2C53FFEE +:102680006F596E790AF05D3FE403E2F93B8FF31274 +:10269000AE1F785C568D871BE3B3D1E2B2A38DC722 +:1026A000AAFC62E48BA969C39F1B47A3B3262E7BB8 +:1026B0006D9A7B18BD24CFD7E917551FA97AE14D34 +:1026C0000EFF1B05AD37C079D11B7E1BC7DFF75F3F +:1026D000DC500EF96166BCAF6AFFF25FA6013F9065 +:1026E0009B8561E3B1DB395F11389F2F8AE0F97A6E +:1026F0007F24EF10C47951833EEFD06817A2EBA975 +:1027000091F550421AF38F54BB01F6C1E560F6C152 +:10271000E48CF0FDD7B51375F52DDEE0382CF7C04D +:1027200038F6FC58FCEE8C51DE8D7A5E9DDFB8EEFB +:1027300098B04842495AF99499BD19D4F3566C1F80 +:10274000BC07F09E106AA2436D4E56DAD2605F90CD +:10275000AC6C01BAAF4C56B6A669C66FB2B07C4637 +:10276000D144FC7BD19FF6615EA3DABE378DADA765 +:10277000A59AF5EB714FF0FC172D9B4E96782C1017 +:10278000874F63E76E479C23E753DFCFF9E73ED0DF +:102790004785113F7E1BA727055F81F8488BC5E75A +:1027A000D1C6EF3AD21271FCF8894FF6419CB44978 +:1027B00032490205BD899850AF362B8E9A7DC5F0FF +:1027C0001E83BBC5A93C1EE4FED00227BCCFCE159C +:1027D000CD0EF3E75A79DBCBFD10152EE37AF7A681 +:1027E000313BB03559E9027CDD9EACEC05FC05CCF3 +:1027F000411BE03B601F7E9FF214C7D7663E3E211F +:102800000E3C17C479C5517D2FA11BE6F98E182403 +:10281000B0AF3E67F27E04F7E5477BBFE6056E6723 +:1028200035F76B5E48730FD33F721FF81338B7AE9E +:1028300096C9A7215824BFC7A4E679523FF755800F +:102840007F61CBF0F9939D441E314EE5E0E3D0FD6E +:10285000F51B696C7FFD561ADB5F37833E275E36BA +:102860004EFC05C6A178C273DC51E0EF23863F7FA2 +:102870003FEEDF2FF27B136739FD34F83B9B368C3C +:102880003CAAF83BF7F6A50970EEA87E27C3D84FFF +:102890003DAF57EB6D89FAF95B4B59FDBF39DD9AB6 +:1028A000DC6CDFEF4A67EBB01BBEE760AF65DF2192 +:1028B00051F31ED4715CE94EF69D35CF64577A050D +:1028C000DEE3C77C80D644FDF70A5E4AAB76A503FB +:1028D0005DF8F8AE74C6A79D79ECFCC0F8DDB3D7FF +:1028E000A17F05946C5CAAA4C6003EADA2382C1E44 +:1028F00053D399DCA8F7C4D4FB3ACBB689BAFB3AD8 +:10290000AAFD5CF63441FB0EE79E20B7D1F2D7FC5E +:1029100045D2B310B2F92B29B642DED6D7B5AB807B +:10292000CF38D750BB7A79FAF0F968D1F49AC6AEAD +:102930004E481FCEAE126F91569FAA76B5DF705EDD +:10294000A396B3385DDAF97E1BF424E865F81E120D +:10295000EA6733DB8F6E8F67F14AE03FF83EC2AC27 +:10296000747D9E8B9A57A3E6D3A8F9356A3ECDE0D5 +:1029700077410CF934FDD6FE96544AAF813104EF0D +:10298000DBA52E967A52210F61AA4C20EED49A4BE9 +:10299000E22BA1BDC4E485F87CE27CA9D542EB8999 +:1029A00032819BEE702F31E8A4E3DE9E9ECBE008DF +:1029B000CEEB815053822C4DF7D07E0975327EFFCD +:1029C000488D27F7366FC2EFAB0CE287C39F20B369 +:1029D00038AA5D66FBEB6A9285FE79A49F498D3724 +:1029E0002F677CC9E2CCF0990EDCAF7B63D13F9DB1 +:1029F0000D27FAA807BA30DFAD2375CA2DD05F9531 +:102A00001FF8BED45E4DFCD5983F747B3A93C768DF +:102A1000F943B18B993C1AE9B88DC3715FB212C00A +:102A2000F57D71FEBCA8B9BF40DF2370EE1693CCD4 +:102A3000F4698CCCCE8F8924605CC72EFBFDB09EE0 +:102A4000184FA5047AB2C9EA68132020BBDC4420E1 +:102A50000F760A1F47A923C28745982A4798BE3494 +:102A6000930F553E17395074DEC91C44EAB5B5C7FB +:102A7000D1F54F713CFF9900F1BB82C66A88FF3DDA +:102A8000B3848DB13D4A9C5BCDA31ACC1B230B5E56 +:102A90003C52A5C91B6B99F3A23E7F7FCE8B5F276B +:102AA0006FECA70FCF7911E2B2FF5B7963AA7E3A90 +:102AB00021FA4FDC43F1BB802A15D89F2DA0232E8D +:102AC000C6F824DB27CCE7780E7E4EF16C8FE0F958 +:102AD00084857D3762C181E7108F96C90CD596BB7E +:102AE00013D00EA9FBD1EBEC1DD3E0BCFBB4756099 +:102AF0003CCC7BFAE9D7B3C02F7CFBDEB34E483623 +:102B000078D73CE084E71FAD7FCD09F87A7BBD889C +:102B1000E7C43772BF7FC9862F27C0B9C70BE94CFE +:102B20006F14662887D235F68804DC685F6F0ED193 +:102B30009569FCE55BF7C4716663F5D55D49BABA82 +:102B40006A5757DB58FCF9D69FF75833E8FA6FDE1F +:102B50009388FBE28FF879CC47FBB23AD19FCA3019 +:102B6000F1F97DAF819E8375C1BEF8DD0336D28D4C +:102B70007AA9CF42D83EB95648617993F0675CD7BD +:102B8000B307E370DC153B993DA8A7B80D503CFA9C +:102B90000FDC8C7ADFB8EE156F773D9B4ED7B562B0 +:102BA0000BFB5E02F45F0FF9980116D732C265B4D1 +:102BB0000BCBBAE6E23E71E91DEC9C67E98FD8FDCC +:102BC00055A39D584EBC6D55B4CB8A0EFDF39507A9 +:102BD000EEC379561AEE831AEDC6DFD2F97E6C0287 +:102BE000B9E23CD5374D8EBC8491EE1F7EB481098D +:102BF000E31F37D8B13CB541C2F250BA8C78BE75EC +:102C00007FCFB31928CE7D13C0DECE7A6E8AFD5BEE +:102C10002412973077CEEB7E44067EE47155BE1FBA +:102C200059CCF16E212C0ED1027109DA2E4AC678E8 +:102C3000FC2BF3212F20E860DFDF51E3138B015ED3 +:102C40004D1EF3E20BC427DC191CEE2B28DC682F89 +:102C50008B5F96C985ED6534F8A3BDB75A64E72B41 +:102C6000C6E7AA5C1CE27A7AF963735B01854D4F73 +:102C7000FF211BBF27C4F3E6448E17919F5B88C4D6 +:102C800090271724C788866F8D7CB9123E7E0B76FD +:102C9000C4C1DEB313FB46BC27A0F2E3816D8837C5 +:102CA000955FE02690096230A4DB63AABCF03D0288 +:102CB000CA77BAFA9F2DFDD9A017561ABEBFF06782 +:102CC00061F8FDCAA51979A86F96CBCA74B04B2BD1 +:102CD00088AF5542F8D9BDAF8FCC1DCFDE03F2FCD3 +:102CE0009840408E563FF58BDF801EBAE5573BE398 +:102CF000410F7D6CEE4881F9563DDE120FF73F3FE4 +:102D00003207E3E1FD8F434C1F19E76BCA50F7F11F +:102D10008A43A07A720DFC1308BF3C381BE4EC6FA9 +:102D20008F5B24B0A36BF7D8BAE1FEEB9A7D0C8FD2 +:102D3000B47E92D53723BED6EED7CBDB2DFFB23390 +:102D40004566F7D33238FE324015AF79CC82F1D2E6 +:102D500035C744F86C19594B06103EE3FBB08E3072 +:102D6000A5DBDA2EB1DE9A30B49D7A2E5690A7B547 +:102D7000DC5F5C6BF00B1BA2C45B6ECBE07E21E7DB +:102D8000738A17BC671EA4EBC1B05088E9E1A69F07 +:102D9000D814380FFAF8CDD44E88879C7AEC857811 +:102DA000A138C2F7EAF7BF4E75E58FA81FFECCE544 +:102DB0006350CF737B22EFA70B8433D903AC5C65E0 +:102DC000E98EBF8AE26555A7C51BA48F57FD425403 +:102DD000606B46DEB0617CEDD65F3C73FC4ABA9E08 +:102DE0005BF75A926B19380ED0CF2ABDD6029F9747 +:102DF00046E873CBAF9FB1CAE3D873C87357E97481 +:102E0000EBDE1E2BC4CF8DF89CD2D563657266A015 +:102E100057D7C9E9607F9B7E72CE0AFCF0F14181F1 +:102E2000A4E60E7DBFE1F117E2A19F4AAF41FA0D82 +:102E3000A15BF7ECDF95633FCCD38C46BF79A03420 +:102E40002B90BF7FF93B3A6FC39B362FC0DDF0CB91 +:102E5000DBE361FD7F3037323EFF714B0AD8DB0682 +:102E60004B3045C2923D6FD87527F2DFCA57EEC48A +:102E70007C7ECADF6920BFF0813A806BC58F162047 +:102E80005C37113FF25FC38FD97DB1BF9A49CDDE68 +:102E900061E8F95906D34F7FD86D4367FE0F70186C +:102EA000077AF75531C4F2ADD6A19FA1DE03464D96 +:102EB0004CEB7FB533FABCCCED2EE17A6C2DEFB53F +:102EC000F6B1CDA8C7FE98A5A482BC533CE8F499FE +:102ED000F8CAB454AEFF30FF17DFA32A620A3C875A +:102EE000FE7D162566BCEE3D1E8F62F3DFC1E7A7AF +:102EF000EB8E152EA765CA609E421FAC638DC0DEA7 +:102F000001BE813CD74B33993E1894F7C7B630FACF +:102F10007079FFF418D3236B42736B500FF459BAD6 +:102F200053A15FA867BE807AC016B9E7AC95E3C726 +:102F30002C5C8EF5ED745D66418BCF8302FAFB3716 +:102F4000EDA0FD34FEC6DA7D4C1FAF857BD4BA3CC4 +:102F50006226876A7C7FA5E17C452D8D7AE0AC41B5 +:102F60000F0C9E0FFCC83D623C5EF5B75659424FB0 +:102F70003C0CF2FA860DFD9955BFB060BEF7273FB5 +:102F80003F7CFC5B94BF3FE952E554AF578D72DA4A +:102F9000F0E402329C9C7E92EC23C3CA297D3EACB5 +:102FA0009C26B3EF65FCC3F4EA20BEF572B9328A01 +:102FB0005ECDCA1CE23F245C45AB7FFCE9AD39A085 +:102FC0001F8D7855F169D48FFB21C9C13D543FD283 +:102FD000BF63448347157F2A7FDEF2B3D538CF2005 +:102FE000DFAAFCA9DAA941FE34C2ABC7A3B1FD3DFB +:102FF000AE8754BA5B36D17D31E4B53D2DE23DADAF +:10300000D3F2403CE4FDB7C4B038C06989D7135946 +:103010007DC06D6D057DA13E1F8861F73B4EFB06AF +:10302000E21335FBB39307C4788877F787D87EDA45 +:10303000C87F1029C57803DF6F4F131DD901D84F02 +:1030400075E4974204FF4CB385D70BD9EF08F03CE9 +:1030500092FF22BEE357C13AD57B5941C59C46F148 +:10306000B88C81481A9E6B8A8738CCB203B7E27756 +:10307000A796B7EBE1BFC9311FCF776FDAA1BF6762 +:10308000B89284ACE04735FC48FFFC16AECF6F31F8 +:10309000F08D9FC70F8D7CB33C93CB61092961FBF9 +:1030A0005C96FF711BD75BD3C4E2397514DFA78F21 +:1030B0008A78AE73E680485A01CE9F33FF9F045949 +:1030C000BEC01ACAB7DAB8E329E0AB4BA3DBE553BD +:1030D000FFFAF6847B689755BF796BFC23B43CF507 +:1030E0009B372EF937A83FF57AF65B6468FF29070E +:1030F0003FBB11F4D3E98336BCF779FAE07F64DF94 +:1031000003F5DFD9BCB0CED39BD8FE3678D089F694 +:10311000FA7416F3EF9A9E3E37BE1FF52DBB5F7D06 +:103120007F26CBFF3A73E0EFEFC0F741CF1CA050F2 +:10313000813DE5FBA9B5BF8BC1FDF1E9A7CF4DD01E +:10314000FEBEC1D785670D3F1F3CED2475906F73A0 +:103150003A91C59FD6FEDB44CCC75FBDAFC70AF727 +:1031600022A6FCFB97E341BF9C7E92F909D47FDD48 +:10317000052EF3C33FBAF27B168AE73F834F47F72A +:10318000F9653FBE7B369C8F0CC50BC3C3698A07AC +:10319000808BE2A501F462347CECCD64E738FF7CDF +:1031A000F8F8CB8D30FFAA0357E07DEB085E04856D +:1031B0003D7762DE10859F3D3F786E3CEC9B2F048F +:1031C000EFCBFF9FC1FBA77F5A7819BFDF99C9ECEE +:1031D0008D91EF87F2F553DFC6FA2F9D5E5CEF28E5 +:1031E000E5DD99F5CF0AFFFF0EBDC766FD73EBB7AE +:1031F000E8F47E8ED3DB29C17EEFF4D35F66938B38 +:10320000807BE63F2D9D47867BD0AF3179EDE5741D +:103210007D6F92D0826A01BD0DF4339A1C2C0FBDD4 +:103220006F7E2EFECE0FE1FB86D902B3CF7766B15B +:10323000FD827A8E3B3BF926F423662BDBF8BD3505 +:1032400013AEA72FB9F289ADC3EC93E62822FA6B2F +:103250002F6DA4F3533CBDE434494D323E47BF6D5E +:10326000819FF9770B946BD9F743938FD6C1FDCD2E +:103270003995FA7DC4B70CFB828575FAF6EBC86EFA +:1032800037C4E9AF6BB0909000F1617DFF05592C18 +:103290008F6E21696C61F1968BC60BEEEBF89D4049 +:1032A000B2DB8097A178E07864DD87E0CDE667FB4C +:1032B000421B317EBFF5361DFE8C78237C9F8859DA +:1032C0001DA6087E6D0ABB2FAA190FE11EC427C7D1 +:1032D000F7C5E2D5489F0BE1391005CF9152FF9D0C +:1032E00001C2FDC1D983FEA003E5E9E5C7048C3B1B +:1032F000BF5CB9ACBD04EA3F17D00FFB6B5519B1E9 +:1033000053B85FB290FD78CEA228B23481FD7E0022 +:10331000B40B95FF8171FE844A936E7F99A8C4EA2D +:10332000E04AAA71E9EA6E5FBAAE7F6A5D9EAE3D81 +:10333000CD7F99AE3DA3A15457CF6ABC52D73F274A +:10334000305957CF0DCED4F5CF6FFBA6AE5ED8F176 +:103350002D5DFF4B1F5AAA6B1F13BA45D73E76CF80 +:103360006DBAFAB8AEBB75FD2FDFBF49D75ED2BDCF +:1033700055D75E7674BBAE5ED1F7B0AEFF1527763B +:10338000EBDA27F6FF54D77ED5474FEAEADF18F885 +:103390009DAEFFD5E143BA7A357941D77F8AFD35B5 +:1033A0005D7D9AF496AEFF359EF775ED33E44F746C +:1033B000ED2AFDAF2D3AAB7B0E670CC109B03F6122 +:1033C0007FB3BC7FD78D63263E8C0F5BE13B66F9F4 +:1033D000D0BD03CB58D285A5839F434E1DEBFF2262 +:1033E0000BF685BB82ADC05C2F4D3C970D7AFDE599 +:1033F000AA79BA3C43F57B2E73E0F717E223E7FF87 +:10340000F161917497513E0C0B584AE138D29D44BA +:10341000F9301C83A52B9C84CF93C289582687330F +:10342000F0B93B9C86654A381FCBD4702E969EF02F +:10343000582CD3C263B04C0F97E17B19E1122C33A7 +:10344000C357E1F3ACF0442CB3C353F0794EB81A30 +:103450004B397C2D96B9E11958E685E761BFFCF040 +:103460005C2C0BC28BF07961F87A2C2F092FC3F2F8 +:10347000D2703D9645E15BB11C13BE19CBCBC2B7F0 +:10348000E37B63C3EBB02C0EDF83CFC785EFC27243 +:103490007CB809CBCBC31BB1F486EFC37E25E12DED +:1034A0005896861FC4E765E107B02C0F3F82CF2BEB +:1034B000C23FC47242F8512CAF0877625919FE1905 +:1034C0009613C33FC1F2CAF0AFF1BDABC27BB1AC42 +:1034D0000AFF1B3EFF46F8B7584E0A1FC6E757873C +:1034E0007BB054C22FE0F3EAF073584E0EBF86CF84 +:1034F000A7845FC1726AF82D7C3E2DFC0696D3C36B +:10350000EF63794DF8249635E14FB09C11FE18CB4E +:1035100099E1B3F8DEB5E1BF60591BFE3B3E9F1554 +:10352000FE0CCBC17D7D55D4EFAC98CEC3BED8E1A7 +:103530001AE5F7E21ED29D1BFD007E448CEAC539D8 +:10354000EBD93DF4D6EAB353D15F5D6793F9FD50F3 +:10355000835EFD027FB7013E33CBF2DD294FD2F609 +:103560001B38FFBE5C79D80D7E506B69FF2A886BD3 +:103570006CCBED5F0CE54DD92C2E7A4336B377CB6F +:10358000B3D9F9F2B7C6323DBF785D21C6C749F25B +:10359000E8E07882DB07B5FF9B79ECBB8CC4319007 +:1035A0008DBF3B33CA7146DBEF427948D766FBEFEC +:1035B000CA46FC1A7F7767D4EF6FCCAEF85AEF6F2C +:1035C0001969FECDC9DFF6D543D5AC9867517A2D80 +:1035D000E2F45AD4B812E363EAF7D1FBF9F7D16DFC +:1035E000ABF4F19A4554CF55D37916DDC1F25F8D16 +:1035F000EDFD0A413F67F32A96D7B328D384FD1621 +:1036000019CE5109E9C2EF6B2CE2DF1B37B62F8DC3 +:1036100012377C2C5B1F3754F97211EFB379958800 +:10362000E745678FB1DFB93AECB612F0AFFB57DB75 +:1036300090AF491B8B2BBEE5FE4D96AC399FA9A7D9 +:103640007A55A1727778F5773CC0D79B5BF65AE044 +:103650007CAC3F6B1D7E1C20C20721E4AFFE2C8298 +:10366000E7258B82EBF0FBF4A48864A23FC7F169E5 +:1036700031C95D8047926DC77B8FA2499F6F7D499D +:103680000E8BEFABE5BB2686B7E02616CFDE6C6D62 +:103690002C82F81F243A9826703A99605C36CE51F5 +:1036A0002BA3FBFB0FE4EE86FB4B1A3F2D16F0B766 +:1036B00088E8FDB657B313795C92E1FD7DFE5D5558 +:1036C000F813543EC847BEB0C27DC945C976F4FF61 +:1036D000E0BBB2662A1A8B3AE6DE0AFEE6BB83DF5F +:1036E000BDA0304DE0713AFA9E7F7D9C3286D2F9C2 +:1036F000752EDF8B8296A0962F2C025B2FD928F097 +:10370000F38FE02AA82F6AB7E5B17B9A7C1DD046DB +:10371000F5DA15396C9CF7058E972CC2DEE3F909B2 +:10372000B6F6C410F8C58B92CDB84E4B967223E412 +:10373000A52DCAF4E13A8979E0CE7AC83FCB94F05E +:10374000BB67B6E6750AE8A345ED1BD7019F0FC21C +:103750006526662BB5AFF584E529917681FD9E8BB4 +:10376000163E8A777FBB80F07DC9F5D6072D02E330 +:10377000F36D2CFF7C735623FE4E1931FB4EBCAE0D +:103780009957A5B71FE6A5EBF2773CF51D01FD6A39 +:103790009647EA87F9E93A96F0FB8046BCF929BDDD +:1037A00000BF45397CDE7B9D08FFD079BDD6B9E3EB +:1037B00022EB56F965D17A279EF7A870B708BEBAF2 +:1037C0007AC0E7361BC2B908D6333E8287D21C17AF +:1037D000CB63CD9A9EBD7498F560AC58C32F463E1E +:1037E000B398389DB3D9EFB1AA7CAFF24D6E0ED32A +:1037F000F76AA9703A6BBED787F94B4A8EFABB803D +:10380000EC7B65D710FD79D53599EBF0DEEDBB3C4F +:103810006F282B273407E28B4F67F3F7E4C622CCDF +:1038200067E5F3D33F05E508E849C75FE4B0233D0A +:10383000C771BC1AF162D4FFD2E03A89DF3A81E75E +:103840000BE4C173199FFBDB6DC8872A7DDF1BFC6E +:103850005EAC928D749138DE387FFF89CBC99FB200 +:10386000D9FBC04EF03DB7E00336E473951EC6FDAC +:1038700097AAC7DF817D251DFFFBF04863B7E6F0FF +:10388000751E164960B87C81151CEF3DD03ECCB941 +:10389000C10A8E0F85F327E4AF9D9F80FB58A28D50 +:1038A00097FB73F4DF239BEE34E179D6B53F183EE6 +:1038B0005FE361998D7BEDFD5D9FBE0AFCB1D08A0F +:1038C0007A71E746FDEF74F9F9FC4FF0FEA4CE756E +:1038D00081DF09E4F8088831E0477784FFF8B35FB7 +:1038E000417E9DCF8AFA3F86F4FFEC57702E3E9FB3 +:1038F000FD2EDCE184D3588FAFCDC3FBB4F03B5930 +:103900009067A5C882EE9ED28395A61A38DF3D9CAB +:1039100030276D396DDF31F73A61B9669D6E7302FC +:10392000E6FFF5D8E6A435F0F606DA7EF09B1F8EAA +:1039300005BB7278A1B41EF223EDB5EC3BB9AE48DD +:103940005E630CF487791B347872D5B2F69E79D316 +:10395000D356D0F73A6A374D84F776CCB5E2EF65A7 +:103960003D5813AC14357C49DB83B06FDE3C95E0E9 +:10397000FD9C98CCD2F5A01A63CC1B8EC23D51524F +:1039800045309FB0C7962368E3478D1C4EA580CD78 +:10399000B759D69F1F1D92993D0ACB2C2E7748947C +:1039A000BEC0FBB4734C787F7B8B20A781FC4C128C +:1039B000BDE5504ECB75B1FBC6F69C2AFCAE22B7D6 +:1039C00083EABD598B9DFD1EAB2522BFF6F35C8FAC +:1039D000833C5AB81CED50F57C1AD31B9AFE2ADFA3 +:1039E000A3BDB04CB5E681DEFF39E713F813D4F977 +:1039F000E87A2CF309EABB07D4F116A876C327802E +:103A00005D53F5BE653EB513B4DF835C8E08F1A54A +:103A1000CDD57C2FBC9B8FFF60A6EF7A1FDA614962 +:103A200080F6ED8224C0BD91A7787BE4BB03928031 +:103A30007E16EFA7DAE7B66FB0FBC56D83FA80ADEF +:103A4000D7CAE1A6768A407F6BAD09F587B58AD9DA +:103A50002FEBD420DA0BF5F7882D1E0D3E48048E8F +:103A60006339B988FF9D0BAC08EF03695288C5978D +:103A70007C691C5F26CC6B852D02C5CF0359D2F51E +:103A8000CC5E34E2EF686F57FD003341FC201A35FD +:103A900074B11458591C4861BF176EA90CA21DB10E +:103AA000CCFF0DEAB9ED113F42B1A6F07BC9940FEE +:103AB000AC3556D4AF6F727D649DFA1BB433463873 +:103AC000547B32483F03DD87E87D43FDFEB9D634A1 +:103AD000986F27A50BE8A79D42C743CB418FE69A75 +:103AE000F0FE775B2D8BBB6D2936A1BD24CD1EFC6E +:103AF000DE9993CFEDE47EEF3B059325F88EF28EB1 +:103B000022E2E52139FCBE59E4BB99A47D304E0682 +:103B1000EF95AFBB04E8D32CE7217CF7CFDA5E0347 +:103B2000F7541C2526D43B3B7CEFE1BDEB7FE776C9 +:103B3000EFCA8FFAA624D0F6A45A09EFEDABCF272F +:103B40007ED02DC273570D7B7ED52CF6DD67574D89 +:103B500010F1FD3F4EBD3028008000001F8B080093 +:103B600000000000000BB53C0B7854C5D573F7EE90 +:103B7000DDDD249B64F3244802BB796EE4E1120886 +:103B80000488BA84474321B881C82B4136200142BA +:103B90002031BE68B5662120D4628D105BDAF2DB7D +:103BA00015A9A56A6D50ACD8226EC4DAF8A846C52E +:103BB000D6B68A51011151A2A062A5F29F73662662 +:103BC0007BEF26BC6ABB7E32993B7367CE9CF79C29 +:103BD0009973EF1AFFD7B2D123198B1B62F63027E6 +:103BE00063F728A10D2AD4039733F62BC658FCC4DB +:103BF000906342326309E9260F54997762A87434BE +:103C0000D66F509902FDED1F278F3743FF714A028F +:103C1000B5B7E23F97E03F2CC06C8C356BB26EF3CA +:103C20002D2D86F7F0CFB18CA505E35A0276ACB7FF +:103C30005431188F655B1DBF7231168B3D1319D33C +:103C40009899CD8172BE99310B9419CE4CC652A071 +:103C5000DDCC42A602C64C3155697E78BF2CC9DF47 +:103C6000E083B214DE331750BB2D89FA2B8C15C2BA +:103C700043B5CA83FD186B646C146337DA08367673 +:103C8000067F5742FF67C6F7F70D01B8C7B3396D16 +:103C900050DA475A5848F681FFA38718EBB66C6391 +:103CA0005D4B37D66FC27901CE7D2A5B85E3DDA3FC +:103CB000F071E57CA39D266A97E5D316E70DB8FE63 +:103CC000A7A3635940C13A0C82F8FFC41C447C305E +:103CD000E6299E3934FC7ED069318C7F60D5FB7734 +:103CE000FE0EFAB7A43B4DAA33DCCF2BE0B0C29F47 +:103CF000FAF9655933C844F891F88B6C9F25F0D7D1 +:103D0000DCB48ABD9F137EAEE278D0BF70BFBF39EE +:103D10003619D7EF2CD0CF3B4DCCBB2ECB3BCD991A +:103D200042F4A6FE6C5FBEE21AAA1F9FCF9F68F7FF +:103D30007BBDD83E670663637AC3214BC6D650FF6E +:103D40000340EABED673B7C0A757AC979D86E7403D +:103D5000EF667C352BDC6FB9E827EB93634DBE2013 +:103D6000F49FFA53D6D0D7B8BF15EB997A57DBC971 +:103D7000D700CF6CB6C5F32B9493D54057BB7E5C70 +:103D8000DEEF51C977C8BCFDCFB59E00F59FA07688 +:103D90009D7021FF033D50DED6A76F62D53A389E55 +:103DA00014F0FE6810A312F839DEDF07BD64B9EA2B +:103DB000AD4F873EABE3C7DB9CF6E4C383E18FD115 +:103DC0006CF419F5FCEF7FD9D43DF459A0F760A746 +:103DD00098EF2DBB09E52611C784676F4DD9645351 +:103DE000000F273C00172CD58E020DF0DBBFA70675 +:103DF00003C4AFDE285F6C783CDB2995799340865D +:103E00004F295432A793F06373B63084C39216607F +:103E1000FE21617E8E8447D2AB1DDBFB807B9EE062 +:103E2000A3E5082F94A556FF1C1FF15381819FE63F +:103E3000097E8FC4FFD326B614C7FDE3B1F77E74A5 +:103E400019AC23A5C25180681A8D70EAF824A5C266 +:103E5000534C7AE4346051878FC95338FF44C2E52C +:103E60001FC4F9C02FE826E18AECB738027E397EFC +:103E70009CA0E1E431307E1FEF497E93EF1D383581 +:103E8000F624F2515C32872BAEA2A183EAD98CF4DE +:103E9000BA56C4BC38CE84418DB6E8219CCF6AEDB9 +:103EA000C857567A5FF2D7156ADF7230CBC5E9F092 +:103EB0008CEA38ADC2B881AB9803E5C06A1B74DAEE +:103EC0008C80BA591AC2BD8EF1F9CB5D7C5D9A6DBA +:103ED00063A71A47FA3CD0C5D76439837C022F996F +:103EE00046E173F8816A6F55B83CE9FA31EAC702D6 +:103EF00075A80F35A725F30EA8BF23D6BD41117AAB +:103F0000F27226F424B063AA180F0968EE66E5A0E1 +:103F10006FB40A60C861807F98CF8C76A5D8B79CB3 +:103F2000C5F1FE1ACC6F11F35B4AA11F3CEF10FAEA +:103F300077FD18165C03E3AE57585436CE5366F23D +:103F4000A07C32B3B7FF62B497C5A99E3B9CE171D8 +:103F50002D45302ECCA3A5E9E017B8603AB822D79A +:103F6000F79DF3D47FA8F8FAA3FE3A3C88F36302E6 +:103F700073F6A7F5817641394B31C77B91FFDAADF6 +:103F800057F5BF16ED58F92CE55ACEA76754585F80 +:103F90009280A17D760373C273EBB416E6857E89A9 +:103FA000D98CDE6B39BD397425D073F3B419D9B807 +:103FB000DEBD280FF03C6A9A49C1FE0EAFA318E59A +:103FC00053CEB7F75FD1FD6B74FCB1B7E4F0886BEB +:103FD000E1FD0D391687E2D4D1E5ABE8E0AFE0EFC3 +:103FE0000959B9FD9DBAFEC5828F3657F8BD0CC67A +:103FF000DFE04A5516EADAA7B8B8DCDC553EAB3F3D +:1040000083AECFC434917EB0323E2E5BABD0B8913C +:10401000FC79A978CF2AF0D15A668AB2E1FABC2598 +:10402000CAD221D81E45F3B698E3159CD7EAE5EB32 +:104030006F9FE99C8BFE4B7551D08AA0B75B0759E7 +:1040400096407BBE2B9AFAC73984FD625CCFDD3582 +:104050003EF53EE44339EF48316F8BD29D8674BA0A +:1040600047E37C0C76FBF96CE87F4F4A7601F2C996 +:104070005D97FF64CE42B497B70D257B29DF7B7C2B +:10408000A07F840BE679A764D6966BE1B99A993B39 +:1040900010D77D781097EBB71DCC8CFAF66D50B623 +:1040A000AB151CDFD7990DA576C517372E74D2FB3B +:1040B000E35C8586F7AF417E96EFDF31D07705B6BA +:1040C0006F9A328BFCA5CD15CEFE088705FC08271C +:1040D0002D2A9086F54D9358C11D2CBCAE2421BFCE +:1040E000535C5C2FDC557E7B1AC295E2728AF5FA2E +:1040F000041F3A141FC8D926D7ED690B01CE948945 +:104100005CDFA4083BDC5A6EF122DDEEBA3A779B05 +:10411000AA707A2EB4E3F87CFD2962FCCDDECFD202 +:104120001633E41F27F1BB9C47F27F025A5328E362 +:1041300091BE3AFEDECCE4CFB9A71BF930C3311CE7 +:10414000F1FD9CD0AB09155CEFB55BE3897EAD93C7 +:104150007C41D5C5E56431C1F705E1A57DB68FF891 +:104160003D45C8475429A737ABB004735C7A392959 +:10417000C921390139F0939C642AC8DF12DEC4D208 +:10418000AEC77E07FDDAF32C0E44CF152A5FCF852C +:10419000FA03EF90A431F67D97EF46A41BE89B61EC +:1041A000885F766B12D9B32A537B4E03C059B5266C +:1041B0004465E4FBA5E06B77227ECC9E54E47396C5 +:1041C000CEEDF7F542A79CD85818CF005E7F1CEFC4 +:1041D000A798FDA3B15EFACDA2D1165CEF3F62199C +:1041E000EAD3F9596CC10C78BE40E1F0CC6F9E5215 +:1041F000AA807EBBD3C5F5EF2B4D40E03CC65E6D7B +:10420000B2312F08E7EB4D0EAABFD19446F5BF356A +:1042100039A9FC7B939BCA83166E67E727B10564B7 +:104220009F99C382FA64B3D407625CC66E48034B9D +:1042300002F0BC5E68720009022FF8266530D6A530 +:10424000713FFA2AAF8AB6A647BFCEA988614CA7AC +:104250006FAB7DE30CEDCC3D225CCF646477901FA7 +:10426000176E48D876074C39775A92A1FFAC0D03E8 +:104270000CF5075D9C99CB4BB30CCFE7550D36D4AD +:10428000AB4F81E180A9982D9AF07D83F00F6007F4 +:104290006142FD7FBD83F73DD930BADFCD30FFC924 +:1042A00097346A8FA4C3410BE7BBC05F556ED7E05C +:1042B00039D2E5F3373318C25BFA0DECBB904E0FE1 +:1042C0005A490F2EDAA2B0002AF9EEC035F8DE0DF9 +:1042D000F7593DD8EFDA2D2AF3233CE8A4C17C47F7 +:1042E0005FCDD97607D135702FF6EB867EDBA0E95E +:1042F00088C6020E60CD455D621CA56000E2FF48E5 +:1043000002F326800BF561D45BB937039C1F97B588 +:10431000D498908FD597524CF0FEC78FAA0CE568C1 +:10432000D9756F8C72005E6B9F6BFB6B118C77B0D5 +:1043300045650E98EFA31DD6FB50DE814BFAA11DFB +:104340000EAF33380CF9F28101BE5791BF8FD604FE +:104350008739901F6E4D21FEEE8D0F583FDA13E422 +:104360004B18CF7F53AC4D01515EA4795287131F78 +:10437000F17D41808DECCF8AA0FF46AD14F53AC89F +:10438000CD745CE7C19624D31D04C7A3C4570BCDDD +:104390004E8B7EBE851B55B203400C0BC2C9EE5638 +:1043A000FDE02BC3AF858FBB41F1B37EBDE978FD46 +:1043B0007556A2D3F519D14144F13538471FFB9703 +:1043C0004F4076FCD670BDF62995FC3936D2795728 +:1043D00031AC6BFAF60985A8AF581A1FFF64A2E446 +:1043E0009BB534FF675E6842FA6F8F0DE2FEF0986E +:1043F000E9D10366A08366F67F8DF85B3A3D70AF26 +:104400000222717CCFFB3F1E07FD8EFE56F3E0F0CB +:104410001B99F7DFAE14BE2E94B3856661C756A50F +:10442000903C3373F0819FA39FF38F7E649F7AEB60 +:10443000A3D5DC1F95FD010C531116A15405F0E81E +:1044400077B2C90EC05B256B5B47F86441EAEF4465 +:1044500020017F8E3A28016FEF17C6DEC12E037A46 +:1044600099985FEFBFBF2FE4392993DB01A9F76665 +:1044700066723D00FDB9BDDFCBED3D10787F36E0C3 +:104480006729E3F8A9671B3F55411F6565F2B8C06E +:10449000D28625D3D0FFA21FE06139F01FD2BDC65E +:1044A00091704327D4EB76447982286F995C9E61A2 +:1044B0000C07CAE932F1CA0BEEEB2D385FEDE30AC7 +:1044C0004BC2F982DA41F4C36CA030506F1C057105 +:1044D0002D4AC4F1141ABFAE450906E1CF25AC3B05 +:1044E00084F192150F2B9E101FCA86745C2CC6ADEA +:1044F00035DFD98970D6BA9577AD08DF0E1857A782 +:104500008F56B4F179A41EA967E6703BC8D762E163 +:104510003F2F663D7EA17206E16BD102D8CFC66CFB +:10452000AB711C5F4C2CC1550B70595D7AF85576F8 +:10453000067059E30F3E379DF0A07882AC371C4BD4 +:10454000986F6202AE03DA43CEDE7045AEEB42E115 +:10455000ACF1B4139F44C2ABA383534F8725ACF394 +:1045600076E4A79A00A77FCD1EC0338C7FA8416355 +:104570009678E283CEEC51613E00B8A7A33E5CD2B0 +:10458000AAB2902BCC17921F96ED0C5AD04FF988F7 +:10459000B5C4D9416EEAB6EC9C3506DFDBFAAA0554 +:1045A000ED77556228C79480A81B7E776946983FAF +:1045B00097058DEB5FBEC358FF6FE10757611E255E +:1045C000DE03BC2CDEAED27E45D74FEE83389F078C +:1045D000982704EB5DBA5FF5606C6329D8B3A482B9 +:1045E0008B8757E2E97F0D77643CA2253396C7237A +:1045F0003CCC83F188CFD990F8D9D828FC9BB3C59F +:1046000023E4FA23EDEB5B1AF81340C793666F7C43 +:1046100022E9F1483D3DBA1FDA1BA99F6B84BDEC2E +:10462000D97FA39D84FAE12D8FC5A11F78A8F5B18C +:10463000542C97A01D1A12B643372D0A65A0DDBE73 +:10464000E989280FB2269B167AE37B50FF78A7CA28 +:10465000FAD29FDF1DE07F2413F5A7B0A72BD4FB70 +:10466000063AD07E0A7D7A3E3FF0DBAE7321AE7310 +:104670004478DC45629DEF6DE0EB7B7F235FEFB517 +:10468000BDD6097E04AEF37EAB0755F991A810D9CB +:10469000FB23B0CE669DBF20FD03B9BECF59CBBD75 +:1046A00021685FD1F8B70366E08765B99DC3501EE6 +:1046B000ABEEB6923FB0ECF1D82083FA51657C3F67 +:1046C000DA373C1B8A43FCD53ECAF11786A3C73FA5 +:1046D00078233345E71F5C20DE56321FC5FB56EEBC +:1046E000F9F39BE8AF2A5E7815E05D69B38788DF50 +:1046F000776BC7F47A4F71A20EC0FDA5C76643FA67 +:10470000A43327F9DBACCA817CAA303F3B13837505 +:10471000B3F730D0A206DF03F8BFC8F9F49A469287 +:1047200083EE5CB4AFF5D121AD1FFA553B15CF3602 +:1047300094B71BC6C78D67B8DF6F20784E08BBA63D +:1047400078BD6C5501C64D808230EF17420F2A4E5E +:1047500007AB427C6E85F963C370473E9F8EAC8188 +:1047600076D16EEA731F9C93C5E759A19AC8CFAE64 +:10477000B3707FFBB888AFA859DCDEAA597C7F14E0 +:1047800095E5A0F2386C8F91EEC7275983B8CFEC2E +:10479000B4B0DDE867BDAA79B7FC00E8B63DCB6FE1 +:1047A000CB827E3E937D3ECAFB9A98611AEACFB5D2 +:1047B000093583B0BC86756A48D7E945E54E33E0D4 +:1047C000E140AACDA3F2B88C0FF9B892713E7E59A0 +:1047D000B36FC0710F20EE605D95457FFE0AE974EE +:1047E00000E61F09F31FE86F0936C37B81A7ACE41D +:1047F0003FAC8F6681285C7F72BC19F97D9ED053D7 +:10480000F327C20E1E78A672E27A1F96305E8001F0 +:10481000BEAA6CDDEB86C33CAB4DDC4EAF4E6441B3 +:10482000E45BB6B6AB10F177195BEB403AC2EA77BE +:104830009D493A173F99D961C927B0AEBA1246E7E8 +:1048400016C46845845F43BDCEC2DBC7DD7F4F79A8 +:104850006B3AD471AF81FC30450D6E83F55C053346 +:10486000223DAF827191DF180ACD284E4FFCCD80DA +:10487000FF8B619D33CC2C604AA472831DCAAB8B25 +:1048800058281ED6177A9E29080F8A0EC2373B6415 +:104890000AE501DEAE3287DA117F6FAA6C1DFAA13C +:1048A00033984B6B047AD4ADB93078AFBE3F58DE45 +:1048B0005A0C759389C3FB3D2588FB826BCCEC5960 +:1048C00015E0A94F7406E8F9759CAFE1F986B802C6 +:1048D000ECAF105F558292407E46FA129F62E7511C +:1048E000613A417F5B343C9F99E522BEAC14F06E87 +:1048F000F19B52310EB042EC07AFB1B1B5B1F8BE89 +:10490000D913570E741A0E60EAE9546F91FBC6363C +:10491000CB0C90CFE520DF2EC0CB02C1CFCBA57C46 +:104920003F6C94EFD5594E6A57D09F047C568AF25B +:104930006CF2719B18EF36211FB5A28EF322FF2C6B +:10494000177AE56CF3ADB0B210E1EB292BD15DCE57 +:104950007B95286FCDCAA4F1241C92CF6B58830598 +:10496000F5440D33BF87E3998098683F97B6DC6FB5 +:1049700041242CDDAABDD7330FFDDB62413D55BB81 +:104980003DF2B9395C570D7ACC74064B4BF7B5083C +:104990009F72459407E5A2D2D246710405F59B3B70 +:1049A000ACDF22DFD35AF83E52DBC8FD31198FB39A +:1049B00082BF897ABE3ABD7B28EA05E9A7D708FA03 +:1049C0005B9973B202ED35E88FC5611DFC0E8CBF9B +:1049D0006EE1FEA759F8D78B5A8CFE49F5069D7FEC +:1049E000CA0B5B4F1C95C6351FD4FB1932CEFC8E0B +:1049F000A57BA8C31847267FE51D13873F902AE2B1 +:104A0000C5C9BCDD2CFC5129F777656982DE01E25E +:104A1000D7AB982F3EA4D3B3BE898C5D518071086B +:104A200025887C7095777C072F578794389447C6E4 +:104A300006909C7379BECAFB43F2B37CA54A20065C +:104A4000DBBDDA51FDBA5EC13FC6F4F6931ECF8AD4 +:104A5000EDF3DC861527F5690723FDA440097353A0 +:104A60009C08F572160D4BFE42A3F02726A9763757 +:104A7000EAE92A25DA83FB8555B6B8610CF4F267BA +:104A8000E067237F54BD1D45F6FACB28FEFCF8F8FD +:104A9000D88009CAB7447D7EFC4DD3D1BFAE8AB35E +:104AA00098B1BC59EDA279BE3475931DD81BB76A75 +:104AB00022AADDB71D99E4DFDD3E7EC416F0F9D8E9 +:104AC000DBF77F526ECBA0733A7E2E1C38F12A9E04 +:104AD000FF55E0791DD54F967B71BE3F755F63032F +:104AE000D37432EBF37233E0E7F83DDDF762DD9E1D +:104AF0007D86D7EFEC1E184575CB0CAAAF16E331B7 +:104B0000CB0C1CEFF8CF78FDBD2CCB8C00FAF9252F +:104B10005C35558D55C8BE1CCAE47A41C6D1AA4C35 +:104B2000CFF0B284854C23CFDF2F35DB7708FD3BF8 +:104B300035F6602CD26560AEF710FA2B875CFE8FDD +:104B4000D14ED6962B010BEC7BD9FE60AEB0DBB418 +:104B5000FF5E2FE2EB926E8732B99E91E53762DC01 +:104B6000AAEB72E2D1AEC2785F66A5FCE7E36D8C7A +:104B7000184FFA318B859CC3F86AF6B7185FEA0DB7 +:104B800039DEDC9C5EF0C77F9BF15F8D184FFAB772 +:104B9000721D43513681EF16E532EE470978E4F392 +:104BA000754A286536C6D39E57E9DC765DCA6133FF +:104BB0009EAFB28376EE3F47717928C8E67A7EDDF4 +:104BC0000F3CF1E8E707FEA2D279ECBAD5BE39D5A1 +:104BD00018CFFAEDE851C862D20FFDA8FDEF1627F5 +:104BE000AC63A538DFAC17E79B2B77B55B26C3F822 +:104BF000F5504ED0C53BEAE43938EB32CF880DC3CF +:104C000051906D12FA66F539CFB7BDD9D20EF17554 +:104C10000F13EB3BE5F68EC9D6D1413E6FD68CF72C +:104C20000E64B94E8CD32F9B19C6BB4CE1F4AB8AF2 +:104C3000E6F670D1A8589BF3B2F0397FCD56179D98 +:104C40005BD8334BBEA39F4FBE178E3B77F71D77C4 +:104C5000DEC3E3CE723E8F80B32AB1F30630F60096 +:104C6000D7904DA817A6FE54CA31A8081B9E9B4A90 +:104C70003D51326362318F7F627D6976F12694EB1C +:104C80008E68BE2F9A3F7A6834EAA12E578CC901EC +:104C9000FAA3D155BD0EE19C3FFAF2C9F87CBC35B0 +:104CA00036B79A9FE310FF35BA7CD5C897D81FE373 +:104CB000537E0BE713FF0BAA2700EBF40F8BF16376 +:104CC0005CB0C3C426A29D96F85B90CDE3D5EBB251 +:104CD00039BFC9F9E5BC8C3928DE74704D7F3A873D +:104CE000F8BE6BFCDAEC94F0BCDF77F9AFD3CF0BF6 +:104CF000CB1C86CFCF367F24FD560A7E592BE8E7A2 +:104D00002B06FED3D98D1913630CF58A6949CCABF8 +:104D10008F6F570C30D4E7546519FACFBB76B0A12A +:104D2000BDCCDA3952EF1F48BA5DE87E6C32C87DDF +:104D30003CE0A5B39D0DDD8572E88AA573D4E51B23 +:104D4000A650BC3CFE542595752D53E8B072C5A9FC +:104D500099545F792A86EA1DD19D93D16E77FC3EE6 +:104D600081F69FAFA8A1DC5FE038D65892E7B20188 +:104D7000F3D7A05FD1111D18723DC059F6BBEF9457 +:104D800022BD57EE5228AE5BA6B20E2511E5338A3E +:104D9000C62B535F1B791D3C9F3A81DBB332B4AD08 +:104DA000D0DE2CE29467939B87B3F9BE4AEBE270A6 +:104DB0004F3A554EE3C9F647B3330DF70BB494EDB4 +:104DC00066F26FC57AB42E85CAEF9E1A4C65FDAEA9 +:104DD00072339E1BBDE0BE3F19ED07F4B7937D977C +:104DE0007A49CA4DC3E878663F3B9EAD42FF54A264 +:104DF000FE817117BBBD1DC8F7D36FED32DBF09C90 +:104E0000C06E71E03E717AD1F0B41ADD38CDED7329 +:104E100019EA2F6B32B3A0BDAC8452AFAFFC425F36 +:104E200045CEF77284BE927A9CB5FE88CEB9AF119A +:104E3000F108C91F7FCC36DEB7E954B81D0E3CCE51 +:104E4000CF2F6E73FBDF45783BC7B3398F92FEE8F7 +:104E50001C88FEFF7F0B7EA0AF4DA1FD569717E784 +:104E60009D5EE434E139C8E19E75703E3DDF3A5EF7 +:104E700017FD5F11F7545EB9F2CA4E2F9EF3DD3273 +:104E80006204EA45E6E83E8D7C5ABF775C16C69D13 +:104E9000BFC8B688FB558CFC4EB91FA8DF1B43E783 +:104EA00037F57BADDB14E8571FD79D8BFAB630DFA3 +:104EB000FF05EA85579EFEEAC02DD0DF6B8FA5FB6C +:104EC00074F57BA39EC5FA15AA427BBFD46CEF97FD +:104ED000A44FCE02E785CA63249FF93770F9F30B1C +:104EE00039AC167CBB50C861B519EC22C0BDE025B9 +:104EF00095A17E5A78AB327417C6219CB19E1C9D39 +:104F00001C4A79D3902F47207F72BEAC3B9520E49A +:104F1000DB25C6E5725086FB5218A76C7002EDD3F4 +:104F2000579E4AA27E525EA59CFEC1EDCFCD01F8F0 +:104F3000CB9A41BE611EFF9AFE23515ECECF275F02 +:104F4000999D780FA458D1904FAC504ED0C9B7AFAF +:104F5000C72E3B26A7E279CC5A97497F0E3E38E709 +:104F6000E2F83D4DF45F680FE5A01FA9354479D6FE +:104F7000005C55294ED2638D3F840AA0A051F34DA9 +:104F800040BBDAF83385E289686FD1AF1EF566035E +:104F9000C5A5E5FC734F0D634EC0D3CC53D954DA8D +:104FA00033FD63100FD5A766093C0EEBF3DCF1640B +:104FB000C37A8AE39D0C5A3D8CE230C67861A1D752 +:104FC00043E790DA4B1ABBCF89713EBF8AF2712456 +:104FD0008339362B3C5E88F14319EF93E78932EE33 +:104FE000674D3619CE3F3F37B70C44FFBF57FC6FB4 +:104FF0003CB76BC7B66B64D7EADA5F1B65C2F314C4 +:105000009797E2800F0CF0CFC4F5D4CE083EA241B2 +:105010007DF99D8FC5617C5EE2B3CD1CCAC17D4A1E +:105020001BE011E3916D1BD5D220B7E331745E27ED +:10503000E3A5C2AF789E717F44F279EDA92CC28FAF +:10504000B437527F3FD194469B58A9C7CF67872476 +:105050007FAF30733BB602F81EE916294761FB3378 +:105060009CE48581BCA07C84ED0F978FB0FD11FC82 +:105070001F3F88F61B91FA5CDAA771BFC9DAF50702 +:1050800018A7F6A1F93EA4D39583411F003EEA1E5E +:10509000E5721029EFD25E4B7C48FCBC20EA596EC9 +:1050A000EF9D88F7F3CB4F14F9B9D64039233D0B68 +:1050B000A55ECF6A117EAD7CBE29C724E8726172FD +:1050C0001310FD25DC12CE4E0BF7AF24FC2F32EE71 +:1050D0007FC8796E73CFF84D4E21B71B38FF233947 +:1050E000DC4EFFB7D67536FBF148CFFA2ECC7EFCEE +:1050F00022627D721D725D2F89F55EA87DD997C3EE +:10510000EF0147DA17E877F88FF0DEF1A7F21DA874 +:10511000C754A5FB30DD63792ACA897878E5E92888 +:10512000EAEFB5C5D3FE7EC2D31F9CF88513F711F5 +:1051300033F7211EBD7BAC66A6F3F7245C12CEBF0D +:1051400008B8C10E75E4E8F601F2F9B7B54B522E76 +:1051500022E536525E23E573EA8FC04FC4753EA147 +:10516000D03D81B05FC8C84E756466D07999946FA0 +:105170009D9FC8EFF9B815BAE7D3DBFFFADB4827E4 +:10518000BC7F6264EC708CAFEE53DB368F55C2721D +:105190005CF2D0D78FFD83F5B67736B7FF6BB25789 +:1051A000427EA59C9E9F2F9FD4C85ED529E4D758E8 +:1051B000A1D4DB2BFF59E48DE55E9C9DFA24A7C7A3 +:1051C0009FE1FE58BC85FCB1F3F15D62EE7F9DEF7F +:1051D0001273757C7736FFBB5F2EDFB702DFF5CB2E +:1051E000FD16FECF39E84B7652F2DFD41739DFB027 +:1051F0002CBE5F013E22F83B2C19A4A72B859E9E56 +:105200007A8635209EFD62FF2FF9F87DB77F5CAE70 +:105210008EFEB83FC17DC785FAB595C90D740FCD17 +:105220000FA55E2FC9FBFC91F4F7E65E9CBE1D96B0 +:105230007B71FEACEF2C743F873F5B997B01FE2CAA +:1052400073441BE3040DD699C837274266BABA7473 +:10525000367AAA5B38BE7BF016324BBF2009FD02BE +:10526000E093AA6FC527CC9786F1F503F8279D9B9D +:105270007C3913E5719F2AEB3C3ED18EF54B405FA4 +:10528000E57EF9FA5A9D9DDA24E222F23E2DC6759A +:1052900076F6B59FCAE37CBDEFEBA30F611E4760B6 +:1052A0009085FCE97DF1FCBEE2FA1FCEA6FB8AB236 +:1052B0007FFB20CB2A7E9FB1296DB14E4EF60D4A61 +:1052C0003D8D71AA7DFD18DE5061FB6E19711AEFDC +:1052D0004306EA550F86850FAC7AFFA36AA8FFF351 +:1052E000D458BA97D863E7EAF8FD272DB92D76B1DF +:1052F0000EBE7DF5238A9DBAF57C2EF6FDFF4CBFD0 +:10530000C981719CF64137748E4778FB99095EEB31 +:1053100057550E6508E633F0FBE39B057F69B11F27 +:10532000537E4A733206F4F0B988B3A5CFB2E138A0 +:10533000CDC926A29B163BDF61D1ADC79B6CE67041 +:10534000B9984FAF0FAC797CDCC3B97C7F85F7D1BE +:10535000AB391C741F7DC1D7556F76A23E1E38CA6B +:1053600089E72653F3B2F8BD4A93A318FDD32B5413 +:10537000CF48A6B367734DC26EB9593AF2099D6B17 +:10538000E07AF03C61189D330444BCDE86E7089A5D +:10539000BC9714C7F5A5BCC74EEF990CFDE95CE2BC +:1053A000F15C17BF970C2227E2F0744F9D2E1BABC8 +:1053B00074DF9CFC1B946B0DCFA1936D740F5DDEAD +:1053C0002B07AD38119F6B0AE001F194C156CE2036 +:1053D0003E6FD3306EF44CAE22F8958F5B29E0A877 +:1053E00004FCE138956666B680BFBEA09F65D86EA6 +:1053F000A07F97DDE241F196CFE5FC95629E052AFC +:10540000D767D63ACD708F5DC2F35A6E8298CFF3CC +:10541000E6DF92D17F8A31D1FD355C8E1E0FB7C693 +:10542000D27D90AE816C25EA03AB986F9D3867B34F +:10543000DA7F7F339E97C8E75D6BC6D13DDC75325E +:105440003EB042DCFB02BC58705DF87726AECBE282 +:10545000CDC775C1FBAE613ABE88801769D843CF0E +:10546000ACDE7439DFBD7BE9D748FEB8368FF13C3E +:105470009441A9B7925CF5B311DFAFCF38FC10DED1 +:10548000F7D56E1BE7D1E741B5F74B2BC6FBC4ED53 +:10549000F549B776EBE4E49F75331D8B86E0FD613B +:1054A000FB52E4EF2BBE4EBF757C329E5B5D699074 +:1054B000CBBDB77D74E289642C63E95EFDDE7F8D30 +:1054C00075E2BE503575919E60FF8A267E9F103F23 +:1054D000274D7FBFFE1BC10F770CF49E46FDA7A68C +:1054E000821CD8C3FA4C4B1DE94779596FA7CC07EA +:1054F000B65EC49B9B15633ED3D43C6E4FA6E62993 +:10550000A27470BA9B9D03711C9927D23EC8BC4AF5 +:105510001FA71C20FA0F10EFB70FBAE9CD6A1DBE06 +:10552000DAAD4FFF6514E22BB5C243F7A351EF612B +:105530005CA129C683EB6CEF6723FAB7F7B304F1DC +:10554000DCB0BD5EE5E776F1B620BAF6F21EB7F63E +:105550005515E9C5A9794E437CA9BD5F32E1FD1916 +:10556000B5E14DAE176C64BFFF5997741AF595A657 +:10557000C53B904EEF98BA0B51FEA6E625727DA46E +:105580008058E8FCF17961BD40792DE7D00B94CFCC +:10559000A289FB8DE7D307A3F35C427E1A18CAEFFA +:1055A0007FAA0FF0A78DEA2DEF3DF22CDE9772DD7A +:1055B000F3FEFF484EE645C8C933485CC4FF7A8510 +:1055C000CE5BB594DDB1FA386695E093F698786EC7 +:1055D000CFEA934E235F58D756A732A7BE9FCAF58E +:1055E000A74DE6B95C49FC5B6D9FA5919F02FC78D5 +:1055F00035F063659E99E72B2670FF5133750FC513 +:10560000F53C3ED0EFCF8379DE137919E17C8A0433 +:1056100005EFB948F8A57D93F4FFA2A70E50EBEE75 +:10562000AFBCA788756530D24F95E9DE0FE9DEE99A +:10563000DAB467F5E7DEDA0F62791E51AB4AF78319 +:10564000E5F9F7FAE4C90E94F7F52D0AE549C06FBC +:1056500023DEA35B24DEAB19795D2E8EF7BB3C1EE7 +:105660004FF61F714C8E7322FE8EFC05F3B9ACDF32 +:10567000531DF8DED3DFA8744E73F9C9901A8FE773 +:10568000066B5D863C4CFF31F364B4AFD5CC41F77B +:1056900029DF895B55BA1AFA350B5BF19EE20BF9EB +:1056A000711D293CCF775CC6FE32CCEB1D774F0ACB +:1056B000F969CD37C6C6613CEA006BE84478031B44 +:1056C000559223F0CF27A2BF17501248FFBC9DBEB2 +:1056D00089F277DFCEB626D03ACDEC59CCCF6D111A +:1056E000F25F29EE49205E6C05E17C5EE04B764975 +:1056F00041385FB3C304925340FE25F1EF4FC4FB22 +:105700003598CF8BF742D43D85184FB76E31DE13F5 +:1057100068FE9992A65C067CD71AF15CEC23AA037A +:10572000C6E7951B8DF527853F71B17995BFC9B344 +:10573000271FC67B61179957F9A4900F995719F63F +:105740007B6F76505E65BA99E283EB1D9CCFD6AF36 +:1057500052E9DE77E4785D4D8CF22A7E80E3E9F64B +:10576000E1926F653E25F0EB1CF43BC379C6194A04 +:1057700080EC6A5B12C6D93BC4FA9FB6703F55E60F +:105780001BCBBCC80E94BF14CC8F2CA0FCC7BDA7EC +:105790000A8AF5F95AFBD4AE8746937EE6F9ABB098 +:1057A000C72E7DAC0F3C5C97AB1AE21FD23F96F23E +:1057B000B659C02DE91FF9FE21E1277745E423FB07 +:1057C000CF938FBC2EABE4EDBC425D5EF0BEB9CC96 +:1057D00045F93423681F7048ACDF9FCC26531E72F6 +:1057E0009A2F4DBFAFBA24DB78CEBDB9472F5CDC12 +:1057F000FEE0926CE3FEE06EB1FE1EB844DEA72A26 +:10580000E2B75578EE8879EE6E3EBFCC53AE8A0E85 +:10581000E5E0FD2E99AF5C6A650BCAEDFC1E73A333 +:105820000E6F2637C7D7D4BB78BFA9CDBCC471EEE5 +:10583000B387DBAB4AF87BB22ED729E1BB249BDFD1 +:105840000F94F77323E12F9BD076D2062EE120B779 +:10585000BDC20CF89C55C4C4F96D6CABD78C7119E2 +:10586000233E5EE9C14FDCFE8908D76616BE970667 +:10587000ED938AE37BCE7F914D65FF81EE98FD1B12 +:10588000C98FE17919CCDF65E6F734457D24D4630F +:1058900075F5A288FA56DE3FCEDCC5F4F90AB83FAA +:1058A00057E8DE9A1C2F20EC73F764BC0F3F7D97FE +:1058B000E240FF765EF1710BEAD3B2095DCF0D8055 +:1058C000F516B8532AECF9F01CE347006F893BA3A7 +:1058D00035902DDE4FA5F37EFA59DB142FE6CBD69B +:1058E0001529C14C576FBE2E711BE3888461E3FB01 +:1058F0000CF35F2EE67DE4237A3F93DE0F592F628F +:10590000FED9C53C5F2EB29F4FF61379F5343EE0C9 +:105910006E661B3F678DEC3F47F06DA7C9B40293DD +:10592000F7FCEEE1ADB6CB81BE8CF3C742B7A72240 +:10593000308483EB8D58EFB9E09DEC369EDBE1CFF0 +:10594000697C3F742E7C4DEBF5BEE08FA5467E89C9 +:1059500037FB9E3D0170C4272B0E3CB758E98BDA0C +:1059600088F6B06C82E4EF7115DE74585F1433DC96 +:105970005708F3777105F2F74A26DBAF68C5788ED2 +:10598000CFC40CDFC798B447E979DF0DF24257085E +:10599000E0FD5BDD97B7E2F731801ED44EF5EC7386 +:1059A000F07B5B44BD38423E047F937CE2FE01F015 +:1059B00093D3875DF9A9C0CFC7E2BB159D255C1FB6 +:1059C0007766F2F20937F7DB7E29F8E1D792CED17C +:1059D0003A3CA487E90CBF109E13E9D64D789A9BF8 +:1059E0002CD61DA8AC9806EBEA4C644315E0939DB9 +:1059F0003B66B7AE253EF199F1BE983930B7F52533 +:105A0000D02B73055E9ED8316F7F80C7791494B315 +:105A100015C40040F75D4A80F27090EE7DACABB9E2 +:105A200037DF0422DEF76AE778FF87BDDFF746BC81 +:105A3000CFB4E48B795FD0655A04DD4A23E8363170 +:105A4000A25E25EB4183FE927A6DE1EEBBD7A526DF +:105A500063FE8782EE18EA678B329CB197DC8B2B52 +:105A6000ECFD913F9DDA0050E99DEE25FB6DA0BF56 +:105A7000CA517F11BF2E257D3D13E59BEACB2AF04D +:105A80001EDEACA2867569D0FFAFEEDA561B749DA0 +:105A9000B7F66E8D41FD1FEEBA56338C3B77E4EFBF +:105AA0009EC3F1CCCACAFDD35CE7E0CF9688756C83 +:105AB0008DA80722FAB79E479FAF8D78FFD688F64C +:105AC0008D11F52D11F50DC6F7ABAF55482EAA81F6 +:105AD0007E88B8F3C9C931B78C9FB68DA47B8AEE96 +:105AE0005B5AD715919D25BEFE62C72D52BF29FA7C +:105AF0007BAB95C92C80F6403B8B7E3AD24B9F0BFB +:105B000078DD91F68BB74F8CF9F76378DFA8A6C5DF +:105B1000EAB0021F1E8CE2F9418137B8BF4EB9B11D +:105B2000B08E833B8707F1DCEA33E05BF4A79FBDCF +:105B30003B2F1EE158DCA132BCFFB9A2437DD74AFE +:105B4000DF45F0DACB747976CB5A9500E6ADD5BC5B +:105B5000C5C7A9D9A506F1130C3DF955AD0ABDB7C6 +:105B60002CA8BDA7F7AB295510FA2FD9A304F1FE35 +:105B7000EC922DC6F6156DC6BACC47AAD7DF5F7674 +:105B800085F30223FD6FF053C9FFBA24DF984F74E9 +:105B9000A17EF846E675E5137E23F223A59F630EEA +:105BA000A5CCC6B8E5F34994170FFEB0AD48770F02 +:105BB0004CC6D98F35F919031FFC93A6A554CAF713 +:105BC0008F2BED960118273FC4E8DEFCD85D3B7FA4 +:105BD00034CE89FD1B68B3FDC9B191145FFD04FC8F +:105BE00059BEF95E23F40397EBCB77B5AB03A0F670 +:105BF000C9EEF763E85E50EF3839C5414E1C3307F4 +:105C0000FB3ADFEFC94FFD7734B54B3C1EFD1EDF7D +:105C100037487F739C18AFFDA1A43D63916F62E28A +:105C20001D182F5E22CEFB8FEE50699C23B6F8071D +:105C300050BE8F6C9D998A1F695AAC755B30D1D468 +:105C4000F354791CDAB543D02F44F18FA08A7ED269 +:105C5000D8524671FCB1213373BAF0C8CD371DF963 +:105C600061CC6E9EA7F711C6EBB97C50BC7EF19358 +:105C70002AF9B712AE09454260043E6FC9E7F2F651 +:105C8000C1D6C7689C0FB76B0E84E793ED1AF15924 +:105C90002DF0255EF13E82F98B306FED7ED583A627 +:105CA000F9C31D5CAE6BDB9420EAAF15D7695ECA01 +:105CB000238CE0F309B21FF0AB55C7DFB5DEE0641B +:105CC0008A9F09FEB6C17F785F3C81B5DD8E798DF4 +:105CD000CB77FC677C1DC9CFD74B3E2E6005179351 +:105CE00017770CF681C877F27962DBF0F103585828 +:105CF0003FC87BE0CD1646F7BD03A6680FC663E438 +:105D00007D6F79BFFB6693E34FC82737837DC0B8AB +:105D1000DBBBF93C4EF5A5C93309EB60DBBC98074A +:105D2000363D60A5EF38A8134C0D7DDD0FFBB1A00B +:105D3000D3804B19BDFF603EDF3FC83C285902436A +:105D400067A0DC95C7247EEE842EBFC87FA902EF32 +:105D500071978F4BBC310BECFEFDF9AFD17EA27C6D +:105D600044E2E39950FFD56F3A79FDB2C4420DEA9F +:105D7000AB95D72B2642FD997CEFCFF20BC3F3C82E +:105D800071E1F9567CFED025FE5FA29CD75BEC1B2F +:105D9000304E705CE95E6952C3FD5F55D8813F2A81 +:105DA000E17A97C6067A86605DC2DF777934DFBB19 +:105DB00023BF8FE70BF1133880AF85019E27023F89 +:105DC0009F2D95E703209F2D9479231B8C7923CC5D +:105DD000C3F39B643E90CCEBC90FE72B6DBD987C61 +:105DE000A5E322CF2A328F4CD9C3F3AD9A03AC2B53 +:105DF0008AE860CCF3581103FC00786A7CFCED382B +:105E0000FC84C63285EB0D96C6CF4DE5F7D38E4D9B +:105E10000FE5A21C7FD0C492B3810F17ABFEBF2049 +:105E2000BE3B5C7F1E88FAEA83ADCD71A84F3E7EF3 +:105E300044F54C83FE75E25C819D56E93B1A1DAE2C +:105E40007CFA1EC1B19DEBD3F11EF41BF9DCEE1DF3 +:105E50007371BF939DDE37F016E8579A39A510F598 +:105E60002FE8EBBFF5A9AFB75F4DF04DB1837E864C +:105E7000F56DCFE0FB58AB99056279BC9461BE9299 +:105E800006A55A10D6AFD81E47B9F68BD2441C9639 +:105E9000F2D4249D24FE7BD1054408BF3367B23180 +:105EA0000DD799CFB63A300E24E93349B57B42A0DD +:105EB000471AC1FEA29A6D14F1C2C69D0A7D1F6BDE +:105EC000458746F6F203217F917AE863D64DF9CAF9 +:105ED0004BB72EE2F9EC42EF609A34F2C97487F9BD +:105EE000BFA26F944B85BE19CE865FA4DDB45D5A08 +:105EF000D89B0E93D42A277E47A731C55D60E5E77E +:105F000036C42F4BC4FD7A4997C6FFCBEAC7F5E9E3 +:105F100003B44F5D2260625B795ECBED2E95F2ECAF +:105F2000CB760F604E78B46CB742F7DEA6ED4EA28A +:105F30007ADCA9FE542FFB75BF12FE1D274ECFB28F +:105F40005FE751FDC3075E1C29BE57C4F35D1C4CBF +:105F5000E6BB101D3E9BC3F3E3CD81FC9F16A31F40 +:105F6000D6A1B1A093FA537E914F80E313F9443E3A +:105F70001699F7EC8CC7717CE03721FF322F8FA781 +:105F80003B451E9135CDC49C3A3C5F8D7E15D02398 +:105F9000CA19CD9CBAFB726F88BCA266A17F59C09A +:105FA000DB89F1E339820F62DC8986FE73EC35C44C +:105FB0000FB19E4B0CE3333F8F67F6F0073E4BE685 +:105FC000F94938FED5738C79545AF1A79497E3EBCD +:105FD000C9FF6E20FED78A8D71515FFAE40F195FF9 +:105FE000FFC173F1D177251FE5B37C1ECFEB857719 +:105FF0009287CFF67379006FE0A7F8DD8B5902EF37 +:106000009F312E1F9F7963483ED6097C487EF3E579 +:10601000B158FCE44B7C9111AF095E233E934A8D4D +:10602000F84AF119F1D46F4EA6A1BDBFFF5243FB50 +:1060300080A505867A46C35843FF41AB4A0C755785 +:10604000E0BB86FE591B6618EA392DF30CFDF3B64A +:106050002C34B4E7076B0DED8377341AEA43DBBECB +:106060006FE87FD9EE3586F6E1A13B0CED233A3699 +:1060700019EA859D3F37F41FFDE63643FB98AE07CE +:106080000DEDE38E3C6AA85FDEFD0743FF2B4F3D1D +:1060900063A88F672F1AFA4FB0BD6EA84F72FCD35A +:1060A000D0FF3B69EF1BDAA7383F32B44F759F3002 +:1060B000D4CB3C5F1BFADF94E1FF19EA9D39A68D32 +:1060C000FF1762C8E7CEBB507E67279BF977372E54 +:1060D000327E7F5F04DF7ECEECD79832CFFE7E8F9C +:1060E000FE433B5F887C3D8D61BCFEB33685F8FA8C +:1060F0006CF6361EFC58B36E1D095E1B33EBE04890 +:106100002A7518EA29BE3443FF7E739C86F6FE7E0C +:10611000B7A17DC0528FA19ED15064E83F6895D74A +:106120005077054A0DFDB336F80CF59C963986FE7E +:10613000795BFC86F6FCE05243FBE01D0D86FAD04D +:10614000B65586FE97ED0E18DA87873618DA47744B +:10615000B418EA859D5B0CFD47BF1934B48FE9DAAA +:1061600061681F77A4CD50BFBC7BB7A1FF95A74244 +:1061700086FA78F6BCA1FF04DBAB86FA24C7DF0DF4 +:10618000FDBF93F6AEA17D8AF343437BDD471ECA74 +:10619000F7657F54281F65AAFB53433BF8CD6EB4C7 +:1061A0008B2B58B407FDE648BF5BFA63659EAF0CC6 +:1061B000F3DC6C6AA0F8EACD2AF7D36C8333A53FF1 +:1061C0006EB3713DCBCFC14B197D8F2E1EF3B01333 +:1061D00079FC90E79727937D2513E9C47826F83357 +:1061E00071E8B7385D0E687294F2FCFC98B07F9944 +:1061F0007E46F7BD88F3F997A9283B187F18EC8FE6 +:10620000199C82FBAB9D9371DFB18C056E47FF77C4 +:10621000923A24BE0BECF0CB517D9FE74CB1011EAE +:1062200075F33D1FD5925E700EF99D623B46FD7B76 +:10623000C615DFC350609DFA738F1FC37EC80C5B09 +:10624000C29626903390D74D4D0EAAB736A551FD74 +:10625000274D4E2AB734B9A9FC799387DAB736159A +:1062600051FDDE262FD5834DA5546E6BF2D1F3ED93 +:106270004D73A8FE00ECF7B1DC01FB7D2C1F84FD03 +:106280003CB63F0CFB78AC3FD214A0B2AD69033DE5 +:106290007FB4A985EABB9AB650FDF74D412A7737FE +:1062A000EDA0F20F4D6DD4BEA76937D5F73685A89E +:1062B0001E6AEAA0FA334D9D547FB6E94DAA3FD736 +:1062C000D4456547D3112A5F68EAA6F6979A4E51DE +:1062D000FD9838B72B19AC88EFC5DAE9FB7BBE9285 +:1062E0003CDAB7C9E7DBB3FC25830BC3DF7990DF6A +:1062F0007388DC0F44D2E1A8185F2BE1DF6BD02E4E +:10630000C9DD86F721C3DF5B706EC33C8E32314F2F +:10631000CFF71B847FBD44F0A3FC9E833C2F5F22FC +:10632000E4A010F9D14DFCF8D2C5EC77E47EF790EB +:10633000CB3F1FD7559B610AD03EDFCEF34DED9981 +:106340007E3F3EAFB13758B87BEAA1E765561EE7FE +:10635000E97E5EF56C739E7DBE7A716FF8ACED7B65 +:106360003F4C47FB53FA8D4AF7405ED662E7603CEC +:10637000A351E0A171B0C950FE24D3771DC2F341EF +:106380004EC3E15FB8C2F9AD57E11619E4BD9C39BF +:10639000298F7A26F3FE093F8D7735387A589FCDBD +:1063A000025436BAFCDF47B99B0B1B04ACFBC75A3F +:1063B000E9BB9165562E179170AC1170AC11F3CBFF +:1063C000F2B14CDF1A1CE7608EF781EBA1CB87227C +:1063D000DF793AEBBE17E1F8E2A94F0F2B5961FCC8 +:1063E000CA78C2EDE3C5BD9CEB14F9FDD5C8FC72BB +:1063F0006AAFBA91C753E6C37E0BEF79C9FCF1CF00 +:106400001A34D28B987F8EF1D6CF1A6ECC43F823F4 +:10641000F563157E0FA300F3D86D7CBCB762294FDE +:1064200048DE23A8020F1CF775FFC894F18A2E7B63 +:106430000A87C78BF71416ECB1927E04BE08929EB1 +:106440001AA3521EF2CBA6602E7E376DBD89D33FB4 +:10645000F002CF0F363B7CF45ECDD684E174BF04EE +:10646000F804E3534704BE241FAC14F7D225FD8182 +:10647000BF1E467A7EF2E46837F241FDDE31745F7A +:10648000ABD924F28FC5F80817AE438D1F42DF2722 +:106490002B43E701F96F4C2CDDA7C5EF1CEFEC4354 +:1064A0005FBE26E8F7721AFFBE5DB39043D9FEE2E5 +:1064B000601E77797130DF67953DF33C7DAF68658D +:1064C00087E6C1B8301BD93544FF5DE61EBE5DF5D9 +:1064D00062FF6CDD3AEA77BFCBCFC159D79019B1D3 +:1064E0001C5CA4ABFCAEAF9C47C338061A9764F3A0 +:1064F000B19E7D4326E28951BBE43FD512EBBFCF6D +:10650000AE5F470FFFBF2AF91FFDFEE95667FC6C1F +:1065100000BD0B5088FB16FF2F1DF43D8C85CC432E +:10652000E5B5CC47E5126023E4775FE06E0B9E6F24 +:10653000D6B2367ABEB268D140ACD7B3EE896930F4 +:10654000DED51B56FF290D4099D972F7A4FE00F73E +:106550008C60F59FB02CDFAE1CC6F33C909FF770AB +:10656000FE2EA561DD2578AEF1F0F87503E0F97433 +:1065700011A700BEF3AA6847B33D5D01A0DFC1BB10 +:10658000F3290E7C44D0E1B14CEF117CBF6A0DE7DA +:1065900033791FBA477E8A96BF3300CFBCCCDDF477 +:1065A0005DC6FABDD644E4C35ADC61AA7A3F51DA2B +:1065B0006BEE272C073F01FBE1F7E6E8BB8D6F4749 +:1065C000D17DF3A30A10A2A0B77C48BFF36695C79C +:1065D000D5BE34C19254DC476F26BC2CB50587214B +:1065E0005EC04E2B43502FBEDF76FB708CE79504C8 +:1065F00007A2FFAA3D68F534BB0C7A9FBE7724E35F +:10660000743FD678DC2C12DE4838AC1616C0FB3D41 +:106610004AD1735FA19F017A82EB87031CFE9B55D1 +:106620007FDA2895FB2F14FF4BF751BC80A5DA3C8D +:10663000FCFB8CC6F9D78A793BFECDE3CFF2BE5581 +:10664000241C8A83CFD70B9E680E8FB43FBDE1E137 +:106650007490F05C3AC4C5E38703BDB4EED5A6D50B +:10666000E98D68CFC64615E091CE34B33F1FF1F7F0 +:106670006A148F8FC97898DCE7B2D3CDE9FC3C2946 +:1066800064F8AE0F8B882BF96C0E0DE9315DCA4FA3 +:106690009166909F9EB853B131EE348379C82EE451 +:1066A000B3B7249E28DEF4FFA3834318C061000023 +:1066B00000000000000000001F8B08000000000028 +:1066C000000BF3E66060F8518FC0AD687C74FC0A83 +:1066D0004D3E9B05BF7A42380DA83F118863803834 +:1066E0001C888380D817883D80D819880BD880767D +:1066F00000711A102702710C108703711010FBB281 +:1067000021CCD16367603065C76FD74A364CB1A7DB +:106710005C08B60D27657E19C5431FFFE16560F86B +:10672000CE87E037F2A3CAFFE545B0E38529B32B56 +:106730000FA81F00BDA23B7C8003000000000000EA +:106740001F8B080000000000000BDD7D0B7C54C592 +:10675000B9F89CC73EB39B9C249BB081044E4280F9 +:1067600050032E216050AA070898B6DCBA501F4883 +:10677000B976C1A080201151B9B7DEE6401E0449A8 +:106780006D446C23A25D282F5B6D03454B2B7A175C +:106790007C14ABADB14545AB2DB6BD95FA40AE8F7F +:1067A000CAEDB57FFFDFF7CD4CB2E764F3A8EDFD8E +:1067B000FD7FFF0BB5C39C336766BEC77CAFF96630 +:1067C000D6A74E66EA28C63EC13F173196AB31C602 +:1067D000A6F4963BFE455BD015827FB32863531920 +:1067E0001B15807F9A8C3DDE52F8BB7111C6BED35B +:1067F00056A6FAE0D108A63056C0D8CEF6BCF97538 +:10680000D5F0DC66316CB7A165ECF093F0FDCE52AB +:106810006BB841FD3095153256E6E7FD306633AC76 +:106820008F62BCFE9DB6F939AC12EA1DADFFA965B9 +:10683000F7CE4B96636C95A5FCD40FFB84E177FAF9 +:1068400007272B44BD94E1A7340FC68A79BFA2ED78 +:1068500013AF0DFBDD3898D7AE7695F958DF797C0C +:10686000A7C3396F390F9C9F35B5777E7FEB7C08C6 +:106870003E984F8C75AB0C716A5BCF47A1BFC94C7A +:10688000FCD16F52E361C6DA1A9317947B186B6FD1 +:10689000B4A96C696CBBA07C0C63B7357650D9D4B5 +:1068A000D849CFDB74DB8F780CC7A05DDAB8DE483F +:1068B0009BA39E5501DF55F4D6F550A7E33D4B95BC +:1068C000103D35017FC04C3ADAAF09CFF433186779 +:1068D000532363960FE7E367D63880C3505FF70111 +:1068E0005D5A3DB1681CF0333974CD5C06756F7626 +:1068F000FC840FF8A139EC353700DC138C397FC2EA +:10690000E73F2B9AE347FAB367F5DF215E2AE0EF12 +:106910002765D04E5F978770C4187FDE8B2FC62205 +:1069200030AF0B04BE83E569EFE1BF0B4CD5C6F178 +:1069300027B8BEBB20E45DACC273CF488BE6C5B6BA +:10694000A7BD87F12E302EBF4E990895B7E1B9BF8C +:10695000F7B9A4CF638D06C179A4B182CA3D50377F +:10696000B1FE57C9FF9C5FC282FFD74C5119037E0D +:10697000F966CADCC960FC2DC8FFB05E8E028DF0DE +:10698000B9FD104BEEE6F014D5035EBEF5CF85558C +:10699000B7C177B1051C7FDF528C3F50BB2BBD26A2 +:1069A000B6DBA327E6336CB7284FB5A1AB090B388C +:1069B000FEC62E52ED61D97DF9069EBF3E0EE0392E +:1069C000E261561CBEFBFABD2CB901BE9B5C0DF406 +:1069D00080E763CF1632131AFFCC73F15B3E9C67DE +:1069E000DC6BFA4A7BE960C15F84FF9B7ADDFB0ABE +:1069F0007C3FEE32AF69970E4E8F8BCEA6E10FE94A +:106A000001F3F34DCC408F38A7471F3A5C3A301D55 +:106A1000DC657B6392FD1EF8FFF6C628F15F4BA391 +:106A200049E546A4139406C0CCA6F55D976D2A5B94 +:106A3000D6057CD01664CB0E203F58D519DBC99201 +:106A4000B1F544BFDB917EE7D3B42C56C3584EACAE +:106A5000A79E0A96C3F8F87EB8780F22A64DE9A93A +:106A6000DB0CE0F1F6B6B7B3A0FDED015EFF0DDB88 +:106A70006ED9D37BEBA7EDAD8EBA7CDFE249306DEA +:106A8000126387D9555665C0D1BF85FDA7CFCF9F6B +:106A9000A1BF96006FAFACEFB06C98DFD79586289A +:106AA000CA9D8D4A771488CB1E87EF6A6BB05F5EF4 +:106AB000DFB365B1FDC4B4DE717E6D2FB66DE0F756 +:106AC000C52CFE24E2BFBA861501E7C3B8F1050C58 +:106AD000E6F50C7E0FE378A7F3719F619BAD26BDB1 +:106AE000172F2FDA2D368E2BE5BA26F8556BF6DAEE +:106AF00028CF37B4FC9969400A2D9F193E13A10095 +:106B0000E62B82C565580CE584A48766E87F4C5F58 +:106B1000F73D7C21DAF74F47DE0EE6FF1ACD3FC284 +:106B2000AEC4F93F89AF80BE33CFAF796E3A8CEFF8 +:106B3000EBF6C4707C5F8CAFD79C6A6F129770368F +:106B4000E2390FCA8F35767E15638F22D3433F39E2 +:106B500035C359327D3E7A43343EA1B75F18EFAD5D +:106B6000747C41FD9D81C6D7C5F8EEF1F418D401BF +:106B7000C49C623E1FF7B82D81D88238E0696661F7 +:106B8000CD258CFA19A3FA94DEEFBCD56377E277B2 +:106B90003185CB230FF69F068707C7C9437D01FDCB +:106BA000A6AD63D91FE085617FBE9EFEF83C643FC1 +:106BB000F27BD99FBB1FC6002FE181E87F0DA7FFA5 +:106BC000792EFA570F91FEFF43FDBEAF733E583B3F +:106BD000C59BB439BC0CE9E28657C2E7867BEDCF92 +:106BE0006F8CB232A227433C497AFE597C27C77783 +:106BF000D373A8E3CAEFFB8EFBAB8CE3BAE7DB876A +:106C00007F87B88E2267C7332B1F96B690B36AABC7 +:106C10009FE6FBF5052C89FAE4EBC766E7A09DB07B +:106C200055ED3E361DBAB47FE961BB61E8AD28770A +:106C3000516F2EE372B734BB3B3ABFB27FB9BB157D +:106C4000EC0CDB87F28A2D40B9BD07EA49A8479AC8 +:106C5000757B18E88B3D9D4B028BE1F9D73D8CF499 +:106C6000313C7F1DF5E2D8BBEBF9F3007F5E80ED90 +:106C7000E1F9DEEDA27D98F75780EDA19F71F7F263 +:106C8000F6057195D9697874CFABD0DB9D8887FA0A +:106C90003E6F5154C2CB41A18F1E14FAA8309858B0 +:106CA0008CEB253CD36BEE045C7DF3CA3D454BE099 +:106CB000FBA3CBE728BF83F1EE53B87DBC07F59962 +:106CC000A7B7BF48A7A5A09D79D093981906F9FA50 +:106CD0002F0AB31A804E91E3DD0B99017279FD61A1 +:106CE000E603FC4C8CF37A4DF613ECA75467247F33 +:106CF00077292F93FCADF6B39751AE54C3FA6D02CA +:106D0000FC57EB96D640F8CF4CE76DCFFB1724E14C +:106D10007DF5B2D6EE2FA13E6649A2837C3FA5DB6E +:106D2000C92F07114E1FC21BA57239F243DA7AA48C +:106D3000250FE386713D4EC4F53847F1C07CC22F64 +:106D4000B118DADBDB96CF6942FC44BA594C53FAEE +:106D5000CE271C77AECB6ADD09CF3F0A8EC5CCFAB1 +:106D6000B652D07F7F7DF548622FB6AF16723A12C9 +:106D70008F6B89D04070EFB9FB1A84FB4B1CEEFE81 +:106D8000FA77C37BA7C0278CF750A6F1FEA7F05176 +:106D90001D827E237F7FBF1157BF43C52F631DD444 +:106DA0000F98573AD71BB21E67A85F33DA85E9F20E +:106DB0003F027EE2442C83A407B408E0D5A18FF8FB +:106DC000775E2F4BA01C40DEC379D11F98A25E1CBA +:106DD000FBCE6DF0EC0DC54BEDF4A89FFA794D4D4F +:106DE000BCA1E03CE6321DFDA480F8C403FD2920CF +:106DF000F7BCC32B72126857862299EDCFC6CE79A5 +:106E00007ADA3A6F13724BE2CD5BC692F928B43F3F +:106E1000BEDA9C3FA1FF7EDCF86AF2C44E24D06F3C +:106E200028F0C676B3FEE151542F8DA347385F0298 +:106E30003C8A5AD0171EBF018204F4475378EC8075 +:106E4000F0340B78DC746F96700D71FEFDBD6FF63B +:106E500058D1C5A83FC299E1F2205C80F71295D3C2 +:106E6000C913E27ADF13B119CE1BE02B5133D04B9B +:106E7000F2911B3EDDF0135EE4F8BAFFBE797A7E34 +:106E8000EF3C3FA31A7C9C9E79C4A81FCD60F45DA3 +:106E9000B69AF80C8E07FCD74DFC17B2681EDE2898 +:106EA00074702E96D6021BF8B9F9C8345689DF855E +:106EB000626C2594DE5082CD8576CDE857E27C2247 +:106EC000D58E753246551D7872E3ADC8E5EF6CEB93 +:106ED000E12B27FDB72DF752BDB920F61DC4E52CD7 +:106EE000C10F6EFC00DE66A969FDEB06C7E7B6E5DB +:106EF000025FF599D77191FF1E07BE4AE79A1B748E +:106F000093BAB4707DD22BA8DF193A752201FFDC49 +:106F1000CCF8BC7DEA9963E867E60512F3117F615E +:106F2000A363BD1FDAE5CF4D3194732D1EAEAF675D +:106F30006BA100EACD0EAB2C07F5E83A5571F09D38 +:106F40002CEF013B41A7F8889F217F7EF4DA389A25 +:106F5000777F7CD6D6E877AECB957A5D12FD44F389 +:106F6000C0F37300D496487915C996A8C2F1A470ED +:106F7000385688F1EF5975B3E4B715387FC97F9259 +:106F8000CFCAAC846540BD94256CF4AB73DB582C40 +:106F90002570ADA7E1257F3AF79B010F37623F458A +:106FA000516326E22F5C9B4AA14928F1D061A94494 +:106FB000C735B3C7EE4CD79B07914F909E95799CF0 +:106FC0003FF518D979FDADBB2D80A7CA3158EF50D8 +:106FD000B05D511D4BE2FA6917CFA7A8F126E483F3 +:106FE000A2FAA482F0DC2DEC3019F76B16306CF9A4 +:106FF0007C90F35589B143033ADE2EE76101BE0A66 +:107000001D7C75BB9A26C7255F15D5817F0B703611 +:1070100079135B703C4F759781FE51B692B4BC0AF0 +:10702000FAA9625C9B75E3B811817FC9DF7915E627 +:107030004EE4EF9D2AB7A72235AD37609C21BF52A1 +:10704000A7B850E4E4628A47055FFD1CC54FE0F92C +:10705000EB88E7A278B74D2E6E857504F17B9337E8 +:10706000B113C7CF9BF684A5203D805E5E80E70EFE +:10707000F0BF312EE59D9EB4308E74CFAACBD9E2FD +:10708000347EFAA1589F1E30839295BD74BD53285B +:10709000A46F4CAF0A5C5B89ED8284973276A9E0DD +:1070A00087B885FCE015FC00743F80E387E676CC6A +:1070B000C0799546617E26F1FB30C4D31D1EA3081E +:1070C000E771C72AEF8224C7C771C46F8E2AF061A7 +:1070D000C25FC08F57D4FF4DF5D0BC10078827A3DF +:1070E0008225CD52B4FB397E243E3CCC5A8FFA2BFC +:1070F00047E2A922CE14F49B6A01078807B34C41EA +:107100007A007E9EA2F569751C417A856A13C4C611 +:107110006D7AC36FFF0DDAB71DD362364BE33F16AE +:10712000237F58E22960C23ACBE4BF89F683DB05AE +:1071300016433ED5435C7F497D007C7A02E7A51B60 +:107140009C4F87AA77BCEB34F30FB8F87483E278CE +:10715000BAB0115A8D2536E2EB4394A18017AD6386 +:10716000520A8D2F607BD243381115E9665849E4E5 +:107170003BD27F537BED0F7FB9CA5269707A8A8305 +:107180008E78305B006C07E3DD249E79D779691E29 +:107190003AE8031E5FE670C21BEA0787F86434D63C +:1071A000BF4AE3C8EFF4104B05805E9BCAAB484E64 +:1071B000F6C86BFC0EDAA07BC1E375CEEFFAC78B85 +:1071C0006BBC4B9DF31CF27721DDFC635A1CAFFFB7 +:1071D000EF74F6478927405E8ED85F90F4D9E86156 +:1071E0008714D09B4DC5ADC4561BF1FF80AEAD8C4E +:1071F000D39D99AA43BE68C53C8EFA9A6AF27EA2D4 +:10720000795CBFB0CB53B43E447D30BEC812FAF4B3 +:10721000352551AEA5E9C1F622D6916E1F48FB91E6 +:10722000555E4AEDDB27DD9CA2F55C664C225E10C4 +:107230007CD5EEC21F780434BF4D228EE98D369086 +:107240001C0C9427888E7EB3834A5FB12DEC07FE19 +:10725000BE875F2BB9FE6D8DCD273FDBEB4F917C59 +:107260000A751CA178472F9F26D8A561C40FDF8F10 +:10727000D80CE527925F617C9F1974F0A9E443D98B +:10728000FFE0EB51E88D577DB41E23BDEBF1F3DA3F +:107290009434BD21ED91F8A59C6EC72B082FBBC57A +:1072A0003E43DFFE397E3E82BEBB11BF7A2288EBB1 +:1072B00062CFD6254184774FE7FC9C747E77977721 +:1072C00083FE4A81A3B503F43F96F7341A54F6D8E7 +:1072D00007227EBF5DE815F9FCC71AD75BEB35E1E5 +:1072E00097FBE341DA9F7AFCCACF8F0794941FD7AC +:1072F00062C86B23EEE8CA1D68FCE295CEF5CFB4F8 +:107300004503CE77DDAB45F39E48DF67D1C2913FA1 +:107310009E03FF388F9D87EB62B0EF3F6A8CCE7B78 +:10732000C2F3F7E365BB88F7FE58DBBF1EE3BD2C55 +:107330007511C98D32B1BE8ADA1839A1E56B418F5A +:1073400060DB8F3FE1EF7BF6EDACD062A8934901A3 +:10735000F53D6D4B6E43395AF282C65490436350EB +:10736000BFA09FB895C7F9FDF017E50385B2A1DF6F +:10737000D1F52C998276A33B9CFB0945AC9DF6FD8B +:107380004A5CFB0945A8BF508FB3B4F6F0BC189413 +:10739000794DD5DF4F87EFFC3FA2C33D7A57C048F8 +:1073A000FB7E84C2E2C8AF2356FD415992C6AF8727 +:1073B000049FB27521F6FB3479BB5DE9CA4565B41B +:1073C00063A55A97243FA0EBE9B1E42F9DBCF036AA +:1073D000A8752EBEF9DD47D1AE2D387521EAF1270B +:1073E000B52CDE4F1D73C853390ED86D4FA21C94B7 +:1073F00076ED8EE6F9249FEEF9F8C62318CF19B37F +:1074000096C53610FDD971DC8F3205FD4D41EFDA9E +:10741000AD9CBE65ED3C3EC86C27FDCBEA6DC58BCF +:10742000FDAC6331FC76F43246F64AF92296B4009C +:10743000C49275CEFDBEF2AD4EFE1826EC98612EBC +:10744000FE30810FF2810FCA3B12B7E1F845C73514 +:107450006E33B8C61F63767D8EC6037E49927C4C20 +:10746000EB4743FE8A6D407AB8F97218F2E5C4BE64 +:10747000E3FEBD7CF71EF25D562FDF7DC88A17EE56 +:10748000836A69EB221517E33D2BF3F2D2FD19C98C +:10749000773AB3CE229D587C68F6CF90DBA58A550B +:1074A000DAE717B0CF58E30F62FC7CBB97FD0CF70F +:1074B000FBED173586FA66FB9AE0F0F4792585DC5A +:1074C0004F8A386CA12EEC739DDBA5519DFB4FDBE1 +:1074D000B3F9BE5CDFF137087B80C77FC69D0583AB +:1074E000273FBDEE75D575969A9C5ECF16750E47F3 +:1074F0007301F7D37760999647D012EE6006D95D95 +:10750000E5A497E4FEF7E3B973FC27D12F0F558963 +:107510007D7F534DDF1F6F0E950D6369746D16FBF4 +:107520008FFDE1B305F71FD19F1571F01D1E2B9A3A +:107530000B6573EE1C8A73EC0873BB61B2CEF590D9 +:1075400056CE289E7B7E73CE860DF0EFADCCAAD6AC +:10755000A7F0EF70BE9A51387C31A376E477B8C7B4 +:107560001BA507853FA8FFC5B9AF1A3248AE09FE73 +:1075700066A1A1D94523F4C4C538BE3D93919D634E +:107580004F64C9265CCF0D71D6B3BFC3DBCDD50B1D +:10759000A89D8D7E444FBB84337E07EDE6897696A9 +:1075A000A35DBC4FBBCBC5B8CC31AED567DC2F8B50 +:1075B000FEC85EEF6917EBD35F42F447767E4F3B20 +:1075C000B34F7F4B453BCBD1CEE8D36E859C9F63B9 +:1075D0005C57BCB2E7FD48AF7C4FFE514BC1E57E26 +:1075E000F25B4E9538F8CF4D87A3059C1F9F2898D6 +:1075F0005387FC72E3D31ECA5B3952E0E453D9BE11 +:10760000A991D5AC1C93560FEDA471323C37323F93 +:107610005FD24FFB25A23DCF4B69C33C105FFFFCFF +:10762000E3DE7777BFFF40C885A60AAEAFFAF42342 +:10763000E404D3E37C9FADC2BEA032C33ECDFF2F96 +:10764000F09E11F034555475CC04976F7FF3820D82 +:107650007EE087E6E8CC8E19507FC95EB0A1B6F413 +:107660007F2FBCCF355FEB80F711FBDAFFD5F0BE83 +:10767000D37CB303DE6FDB370F086F8BC2F5A5BB7E +:10768000DFB3BA2AFCE238C9FF96829BA3386F9910 +:107690006791ED396FC3FA10E6DD24FE1BE5D14694 +:1076A00068DB8DF69F6E929E1AEC3B6DBC1EC7F593 +:1076B000D71C55EBD2F5C99D421FC9722B06257107 +:1076C0005FA4482779C60ABCC931021EDCB738A0BE +:1076D0001B8EF5DAADF3B8B9AC9F76BD877FFC059C +:1076E000ED2703E11F9D413F09F97947AED0DFA2A5 +:1076F00094F36B0EDB2ADA678FB75C4E7250EA7137 +:1077000043E0F4F1D985017C7E8795598F8325422A +:10771000EDBDA2DE129ADF568AF1D59F7BA8BE1D71 +:10772000EC759E67C4F3C0A43D24FB3FD202FDE389 +:10773000F805858172F8EE3DB033B159ABD0F7ADA5 +:1077400042DFBBE9F98887CBBD0EE8DF1C87F94C27 +:107750007ECA2FDB06F504943BA18EE5FDE01F24D5 +:10776000E0FDE1C6289598EF84CF53301F2CEF6BD6 +:107770008CD1F3F6C61AAA77A27F01F56FA37F0119 +:10778000E5704BB590AE871AD93434BD7635FAA979 +:10779000DCD26850D9DA189D86F1F2EF359A546F31 +:1077A0006BACA0B2A93146CF1F6EACA17AAD327FCF +:1077B0008E87FCFEE47A6F04EDD172CA5F2BB3743E +:1077C0001EF7D4CD0DFEEADEE712CE5A65E617F0BD +:1077D000BBF1B52A6FE7EF9819CCDC2E8EEDA6D75A +:1077E000EA345F164A6939918CED2EC3769E1AD120 +:1077F0009F1127FB2143BB85D8CEAA11FD45986E6A +:1078000064EEEF2BD86EE4748E27163DB9DE97B97F +:107810005DBD07F836345DF4579CA2784B8676CB75 +:10782000B1BFE2BCC4E238F7BF14C4576EAD918754 +:10783000FE57717EE206FE3C36139F7B22FC7909DF +:10784000B627FE4C1EC5F1B36BC4736C4FCFBB356E +:107850003FE6014D17FD7879FFBB6773BBC2B08C63 +:107860009D7E60A94DB3095618CFDC81F5621F1FBC +:107870006F4C619C29B0DE00078A82F126A8ABB06C +:107880005E732386A242BDC4CBC7DF7DFE49A6C07E +:1078900073A306DAC1779BA0AEC277B935D00EEAE2 +:1078A000253E3E9F31179DA1765BC5FE7FE0227687 +:1078B00004F19163990A2E8D769107913B9DF73FD4 +:1078C000CDB2355CFA155E665D06F8DA7A03973F4D +:1078D00077787E3113F3C3CA2D5EFF77CF8859EBDB +:1078E000C1DE2D1ECEE36B5B3EF754D16218B77834 +:1078F000046BC07ADEE78F8DC77A09BE0FE1FEC345 +:107900002B45188F2FC1F72102DD36C0A4CDFBC255 +:10791000ABE3D3E3F4FD95EF3F3B8BE2EB250D2A80 +:10792000B306C8FF28883BF7B32B6BBB66223C7FAE +:10793000F67078DA053CDFF3BC42F0F86B79FDB500 +:1079400016DFACF5202A8B47F2F93685053CA3F803 +:107950007CB56C01CF480E6F53B68067148737240F +:10796000E0D172383CEFEBD63023035CEEF987634D +:10797000CEF9EE10FB073B665F63D543DD9B64E405 +:107980005FD4B66EDEB001F3F5E6315DC9A17C418E +:107990008A8B45FCAC0DC745FCE07EDB7621AF242D +:1079A0005D8AA35E3B3F433EB62C25BD8AA3FED72E +:1079B000B19DA457493468E74FECFF3B49C7926833 +:1079C000E8F5F4FEDDF0F5A5876DE9A05F735A4F89 +:1079D000AB7741FD9C5A26F222FF7BE60CBD2F7D42 +:1079E000EE98C4E1BD43C01B92F0027EF342987F43 +:1079F00023E015742B3E3108BC829EC52704BC824F +:107A00009E2527068157D0B9E48413DE473C5CCF1E +:107A10000E46D726014793D81F0CE983C06178072B +:107A20009C4F0F1C06C031310D0E233820FC3D70D9 +:107A300018A1D7D3FB1F2A1C1D08C7B9508AFCAC5C +:107A40005008E0A81A008E578708C7AB2E385E1D75 +:107A5000221CAF7E3A385AC53A6A15F488087AC8AB +:107A60007EDCEBE8CE7F72CAB7FC2F3AE5DB9D5F88 +:107A7000E4F260BB1C5FAC8FFC4BB83CE859B761CB +:107A8000910727F0D6DF781B4B9CE3F9463AC7DB1A +:107A90003832F378BE517CBC7F543C21DF9398E7A9 +:107AA00015F1042DDD6F6EB01C7E33B4BBDC2BE210 +:107AB000095ABA1F9EB01C7E38B4FBB2E8CF72B42C +:107AC0008BF7699710FD31C7B8569F71978A762951 +:107AD00035BDBF589FFE56C8F9A9E9FD997DFA5BEF +:107AE0002DDA598E76469F766BE5FC1CE332E7B8BB +:107AF0008CDD30A47DBD48BDD7B1FF9837D7590F75 +:107B0000553BEB5EB19F47F5D2DEF1647F3932FF22 +:107B100025D160E2BC6F0B274F60DEF816EFEC5901 +:107B200011787E5B2E97B35B5ABFD084FB085EB69C +:107B3000665412E00DD5E82C89FD4DE77147743F7E +:107B4000100FE14A3D99C27D7ECC7387F7E1EA3898 +:107B5000EBC9A72BE86D2FF356FBE327BD82EF0B94 +:107B6000EB156DDDBCD4693F9055F7C943F836E29B +:107B7000D7C7E28C8DEECD4390E30CC6B7436E07BA +:107B8000A68E0EF0DDC28231DC2736B5C4F7913FF8 +:107B9000D7D5AE63E842796B1BBED26CE2765D83CB +:107BA00082F17A6318CFE36257FB63982F6BCC9A0C +:107BB0001E453C341538FDC1DF78F97A3EEAD5A878 +:107BC00034B2F8FA647EBB685EDA7EFB075EEE874D +:107BD000C2FB1B903E5B875DF5781DCCDBC8E1EBFB +:107BE0009EC5A07D38437B8CA982DE7CB5F5A62698 +:107BF0001BDA19428EB2683FEDC57B371E5EF77AFD +:107C0000F8FBD1E2FBE27EE6378EF3CB291C0FDBDB +:107C100025C0EB4ACBE7CB0B245E407A15D575A780 +:107C2000106F5AC89917E41EF765D1EF075EE96730 +:107C300026A2AD11DCF7F0C7D06EFEAD7C1EB28B74 +:107C400068DD1950867BDB77CCFA9A82FD7F4E4D3A +:107C5000FC078ECBA2093D7D3EF973795E574FFF3D +:107C60009158B4B5BAB7FF0FBC263DEF9CD27077E0 +:107C70007329CAF375A5D81ECC44E23763D6228A8D +:107C800043E8B53CAF902D70E65FE94683CC27FA18 +:107C900000F9C59D4F345BB33EF4525CBCD8A07D67 +:107CA00002E6F493659ECC921AD12133AFF835C029 +:107CB000BFFC9887E1FCD8C7D03A2D5FE177BFE7DA +:107CC000791FCBC53E4A3D8B67E3CB77985A8774C3 +:107CD0007B87FD327B721A9E737D3CDF8EB579689F +:107CE0003FC486BFA8079676781CFB23D7763AEB6D +:107CF000D7B0F985B81EAED9EAA17D96E5AE7D1361 +:107D0000C5C7E304D7B28656238DBE4B0CA6E783C6 +:107D10004A59F5A37BA7A2FE89FA781CE24DF49B91 +:107D2000D3E2342B4249AF05EF7F7F70F2E578361E +:107D3000A9C5936C1D8E723697D17A72F3C9D56D31 +:107D4000CEF90D367FF77CE5FE447FF3D0F7295658 +:107D5000A678E6589FE2C85F5DE7CF9EC8407F7F68 +:107D600014E0654F9CF8370192FBB53E53EC833429 +:107D70009CC7F544C3B9580EF65D5D3FDF6D8A744C +:107D8000C4910F659E84DFDF40710E45E772775323 +:107D90007490F7C5F05E1BE07DF9C0DF03FF7DF254 +:107DA000C954C6CF5C52BC87E709B535F27DD126F0 +:107DB0004FFC1274E29A5ED018266835791A484F43 +:107DC000D825CCC47D265F397FEF3BAE45D452C168 +:107DD000C4506F2DAADB85F9A097F83C62DDC74837 +:107DE0005FFA42B665611CC69388E6025DBC5FE33C +:107DF00076D08C502281DF69D1051EDC97FCE90327 +:107E0000572FC0FA8AE81C1D49B4D0C7F7A9DEF97C +:107E1000EEFEA90CE6D7FA6098A528CE91F4621C74 +:107E200069C5418DE20FD7FD204CE3AF3870ED9E60 +:107E3000B9C8C73FFAACF947D25F4DF4FD8A87BF96 +:107E4000F49C2DE0C1BCC6A6F5329F2D16FD127C18 +:107E5000BACAC7BE82FEB9845FF289DFECA03CA338 +:107E600015FB7229FFB087BF74688F761B9499CE7B +:107E70004F7C4DAC8FB7C33C4F4CD977E42A9A5F07 +:107E8000D7151E844B296E60FF01E3DD28F004ED59 +:107E90002CE29BFB95E41878FFF6FD3BBC65137064 +:107EA000DC1DDE25646FACA776729EFE7D77D8B8A8 +:107EB000AEFCE546199278D60F1ECCC6F8D7EA7DFF +:107EC0005A0AF3EAA0A4FCBA80E9DA076556480129 +:107ED000BA5F4F2209CA83AB48EE5CDFB599F6F76B +:107EE000571F72AE37C06B2C05F3BEEE252D36172B +:107EF000EB3FDC9B6DC27CDEECDE9D8DF88771165E +:107F00007B81EF3D86735F16FB3F9BD7B73FC6CEA5 +:107F10007891CF56776DE2E3B9D6F39BF88FA2BE86 +:107F2000FBB1BB7CAE3C807DF943D2FFD73DF8E18D +:107F30007D368CF7F681B7EEC3BCDF95FFE7FDFB1E +:107F4000BE0AF0B0C70206CAA3D5DFFD8FFBFE153F +:107F5000F0F8CE219F8A7C71FAD1BD7BB641FDF449 +:107F6000CBE3AA14A83FEAE37AECF4FEFF2A34A19B +:107F70009FB58FCE1E8670AF7D689663DFD15D9E04 +:107F80006EE4E7647AE793A47ECC430A6E563376B8 +:107F900058942E7A3C7E50630198DF3B277CB44F87 +:107FA000BF1A9EADAB42FAACA27D7CACDF0A78BDB5 +:107FB000FE818DB4EFDD17BFF608358A656A04A629 +:107FC000885E7FF04B977CB61A4B0FEDEBAF666780 +:107FD00048AEBBBF5B7D1CE8786EFF74FB907DEC08 +:107FE000C57DEFD50F6CE2E3BAE8F60EFE635A5F8B +:107FF000BAFDDAE7DE475FF9ED6DF8F2607EC6FCA8 +:1080000026B98FBEEAA1CB06DCAF3FED5AA7FDE152 +:108010007799C823BBDF67BDE52B403EF8DE9E6D38 +:1080200011A4AF2F3617E9FDE08723F1B0C829CF9F +:1080300099AB70FD9D79D467E039A1158FBE44FAE4 +:10804000E3F443CF7B4D92DB2CA480FD719AF5FCC9 +:10805000E9467BE47A855756EF0AA77CD9BD74BA06 +:108060003E39AFCECCA6E764FF5E9FE4FC7E7DF296 +:10807000C8A54A06BA95F9CBB83E4A16105E56ED29 +:10808000FAB597859CF4546A908EAFCFC1E7FDD1C5 +:1080900051C26F20FCE7A5D173175FA7FDADC7D311 +:1080A0003B7CE4BF4AFA9E167903AB93CA4B2CC3C0 +:1080B0003AEDC90BF81BF32A4AFC4E7E90F00EB63F +:1080C0008E0787E36FC35318177B415F7CAD2FF298 +:1080D000D23EB396EDA5F5D7EA315FB2912F9EF669 +:1080E000B09D26C605A7323383FFD3DCC8F70F64E3 +:1080F0005D0FC569FF5B8F185598DFE33E9FE13147 +:108100005466A6CDC7F8AC1ACF943FC0583BCDF308 +:108110009B224FEE1BD3553AB76EB414529E823158 +:10812000F3ECB1D114278FF07C4741179D19F2BCB5 +:108130008E9AEEAFBAED956F96B0ED58DE5504E528 +:10814000B97DED970BFD894BFD19EC976F2AA25D68 +:108150002E4BEE56286FD71F0439759772E6D868F4 +:108160007C3E4F257B0F9EB705F3D2DA4FE3EDC17E +:10817000CF378DA93C5F95EFFFC0A34271CE12FFB0 +:108180007C2666A37DE3650D649FF8319F04CA20B9 +:10819000EBA272B5582F21588658CF61278D31D464 +:1081A000598AFCF102D16F813FC4EDFB4BF5B7D387 +:1081B000CFBB07D8768A97609AF62769E725E43916 +:1081C000A6C1BEC7A14654618DDF671191F346FF7A +:1081D000A250A45E135C0643384788B7C3D09AD236 +:1081E000703F08BCEDD1984F7792EAA3702A1A9D90 +:1081F0004F58CF785E8582780EB057C9BF506D5505 +:10820000F9E41CD73C0B7AE9E8F367DB5974D8949E +:10821000FBBB5EE1EF4A7AFB42FCDE8E5B54EBE592 +:1082200004F783BFE187EF6FD11227FF4DE9A5EB7C +:108230005661EF6F0D3BFDDD6D7EAE0765B93557BD +:10824000D0F332414F3DAEA4FBA53445F027EFF506 +:108250005F5D6B57F2F7D8BFFBB91C4F37781EBE76 +:10826000BF5AE4ED26003169E71B1EF0737B2A2F0D +:1082700010DF8DF32E32534C31D10FABCC3939C0D6 +:10828000FEC22671FE64636382CA1FE19A2BC0F3AB +:1082900055DD167E0F7EED7EEC0FC64B22DFE882A9 +:1082A0006E7F7BFF069D7741BAE07A9BA2261EC1B6 +:1082B00075E32F671D8877BFC9F3703591AFDCEA8E +:1082C000F29B9F147895A5CCD7F58D5C776A07E073 +:1082D000A563467412972371F2DF9FF2F7E463906F +:1082E000FF7C9722E25E8A5FAC2F661A85BDEB4B5E +:1082F000F35BE46C7A00502C7DC83F1AF25792CAA7 +:108300002C5C37C08F6F88751566277B9D53DCEF1B +:108310008A7A77A05DAF0382B43C2A53584A3EC1A3 +:10832000E79E3CBE9F9B0DE5EBFE3C1E0FC27A15FF +:10833000E231FE2AE2395AC1E32C30410DD749A17E +:10834000985FA15C670B9CEBAC871F739DF8FAA349 +:108350009FFB6F6F08BEC0F151CEF4BFAEFBC4816E +:10836000DEC5F9B8E34088417E2EAD95E205C6B979 +:10837000EC3F55BC8BC0B66B9F8D529C643FD69B27 +:10838000F4AFD5521C6732E7E78FDAD6D762DCC488 +:10839000384FC4596A9C71164F80E70DFC15F90FD0 +:1083A000E9369DC73DB2035C4EEB4603C53BFEEA92 +:1083B00017FBF4168F87F4D46B79FB9E7A257FFF29 +:1083C00029E219D981CCF18C9CC040F10C61A79AAB +:1083D0003D72CD19F79479A6B3B510C985E05A302E +:1083E0007F01CFA3623A9DA732631B6E5027A2FC88 +:1083F000E6FC54B29CD1B97A784FF691FC7E94EDAC +:1084000075F82BE17A677D784F1EB2333E3A5CE413 +:10841000210F6769715494A3C23EF18A78E960F62E +:10842000C9A480CB3E1962BEF12F15EBBC00C5A9D3 +:10843000785CB2D595DFE8B667068B1BB8F56DD3CF +:108440008C492722C07785E7EF24BED3F42E3C5A0F +:10845000C23AC3FC7CC691CBBC1447DFC6FC3CBF10 +:10846000D7B5FECF2EE7E7D5EE8BB0247F68D0FDE1 +:108470004959929E86B51EED5B29FF94C453FF8532 +:1084800076AA17E9ACA1FE4D129F497D9BCDCE5037 +:108490001958196378F4FEE8BA99B9E87F66B1F61D +:1084A0008CEB4FF2C57B6B79FEB1CECEC9C17A742D +:1084B000AD4E71A8A2443C2785F3B0ADEE68211DF6 +:1084C000F9A13FB916C6907BE9935FE7EF392384A2 +:1084D000F582B8E1A8978AF353C316441DDFB1664D +:1084E0006EBFE2F12CBE5F12277C445702CE4AFBDE +:1084F000E6B547451CAEA83E45727B4483D3BF8D8D +:108500008ABCE3A8EB3B373F7D3520FC5630039017 +:108510009F000FB15435E5A7D03974FDA48FF03218 +:108520001CF08278788F713E28590CEBA3B42F3E53 +:1085300024BFC1FFC82F1F09FDA4E0B92FEAC4530F +:10854000C074E229ABC289A770CC891F89B79C1A75 +:10855000D3D14EE24DDE0FD51F9E8A9775ADA7FB96 +:10856000C63E259E922E3C8D08013F30E4F394A236 +:1085700098749E96F8FC3EC1EF48407F9A9D25F185 +:10858000E2E6FBA265C0C7282F2220F291292BC367 +:1085900014478E0A7C2AEB249F67B633DDFCAE338A +:1085A000E077B4DFFCFC7C7616DA67C4EFBF67E9DE +:1085B000F69907EDB189587279A50321F17C9F3CAA +:1085C0003707723845F2E201C5758EBD81CEB1BB69 +:1085D000ED3C4D67261E7194F6ED38D11EED689680 +:1085E00006EF38D4A313517F713C29210E1FDB0EF7 +:1085F0007A356DBF5017FB2E43859B19228E87FA63 +:1086000035ABEFFA1E25ECCF516DDCCE346F3567FC +:10861000F2E1ACE3C8BFF23C4A7FE74F46DB293AC0 +:10862000DF58D6EEE49F916B9DE70E8A859C2F164E +:108630007A806987E7D139C15B55DAB72A769D43DD +:1086400029318D99980F55B28F8143017C752B3F4D +:108650009F36722D33EAD3FA1D91C836EAD3EE5312 +:1086600071F3E7072EBD70E3BC4B495E7DFB56E717 +:10867000390059EE698C1AF563F05C899FCA7067FE +:10868000F26800E6616EE778301730D50CF5F2ED50 +:10869000BD8D301F28F7351AD47EC70DD1B2BD0C61 +:1086A000E994D083A097C7DA8919A88E4C3BAEE233 +:1086B00078AA6E7982C81FE23E8771EB8A69FE63F1 +:1086C000D78DA4D2AD6F46FCF547748E7A549B1AB1 +:1086D000030F918D3AEBB3D09EA2580CDE03D36CFE +:1086E000AA78AE251AE476D58B81781EF66FDA86E5 +:1086F0004AF1E265FC7C687F78738F27CF75DDB324 +:10870000929FDF6E36228EF3783B058D2A83DC7EC6 +:1087100093E7EA643FAD6DF25C9D497985651DA5DF +:1087200094D7E63E57A7321EDFFC329EAB037A1F7A +:108730000D24CE21BC1869E73DCB7ACFD58D585595 +:108740001E44FCEDF4DB6A10E635E226CE17E39317 +:1087500000571ADFE1555935007259F3C91941B371 +:1087600017CE170389A9D87FB13F64D44F4EC38F6A +:1087700038A7354AF079C5AD8C9FB7E900C5598A4D +:1087800078B73760C8618E90FF3B85FC87F53177FD +:10879000719A7CDF99B0F2E85CB290C752FE8258C1 +:1087A000147ACB54D11E187FAB735D9409395BEEFC +:1087B00092B365423E97B99EBBE9383E6964A4AB6B +:1087C00084D3BD1E2E0F0A793D8C1561BEE8876CDF +:1087D000FAB0D9662F9FC8F35F6E3BC91DAF93FDFA +:1087E0004F4A39C797FD0C161752749BE2359E28E5 +:1087F00033F05C516781D00FAEF8428F3D538777DD +:1088000043201BF9932867A37313743E225AC7624F +:1088100026CEBF9EEF536FF2F2EF54BF4D7983FE29 +:10882000E2EECF22FFDE1C0CD1B8AFA9F19B715D47 +:10883000E6CFE5FB29F9422F0C24576DAD57AE0664 +:10884000838946E423295F4B534CF5A6C52FA47CAE +:1088500097F2DC2DBFB3DC727888F91E3E3D915A49 +:1088600062F6C50FDEAE99BEAFBFB144E88F62AE0F +:108870003FEF59A98B3CAE2FCEB6CA19DB7CD9FE8F +:10888000688141D349193550FF9C42EF0F07AF6D06 +:10889000413F68F33C5E3F125CCCEB572AE427FD76 +:1088A00042BC070C901CF0887CDF8F0ACA6C5C2FDE +:1088B0001B4D7ECFE7C6E281CFEF3535F2FC5AD9AA +:1088C0004ED36374FE56CA179F2B1F430F39F741CF +:1088D000F495FC9E072977F495DC0F692D3E7062B4 +:1088E00049359D3B47AF0FE44F039D4BF275DC408C +:1088F000E76DDCF2C72FE4CF4271AE17E4CF234817 +:1089000057CD709E3797F2672B3A40F07E5C750327 +:108910002515FACC06D584FE8FA29099D21B5792CA +:10892000F2FCA868EFD7E32C06ED3D750D0CF5863B +:108930006F2E8F97F8EAF879BDFCB9269DA3F198C0 +:108940008CF8D4CDC7CF22DF4E41BEB59E45BE7D4B +:108950002E28FC481653787CB081F47B30187F1E9B +:10896000DF9746D9511EDA1E1A3FD29FA9227E57A1 +:108970008AF05B6CA0F89DDBBEE8C3CF466448EB91 +:10898000FF76AF953B1BF7F57EE189617C7630BFC2 +:108990004AEA59A997A5BE95FABA20ABD4B55FDBD0 +:1089A000F534EAAF8FAA54CAF795E3B7D7B33A7E46 +:1089B0000F07E7639FF0993F2A5912F402AA23593F +:1089C0003C2F449E43957C19ECE75C91E467D95EAB +:1089D000F2B3BBDD90F9B86209ADA70FB7737A8C1B +:1089E000EBB881EC0F37FFCA7ED5BE7C1CC9423C78 +:1089F000F4A3479706AD822CC47F556C59A6FBD8CB +:108A00003C211EEFB867E5D600F2F7DD88AFB475FC +:108A10001FCC12EB7EFC1AC2D7F9025F7BB73BF189 +:108A2000151D045FB2FDDF8DAF84C0578CE3ABBF73 +:108A300073FC03E0EBFC81F0755B7C675B19E691EE +:108A400025D4D81880676B5C4D5D04F5BB97A90FE2 +:108A5000A0DD7A5B7C66600CD4F7C48E1E56E0FD08 +:108A6000A45098F8708F913A86EDEC72D5A4B89E18 +:108A7000D15187F3DC535CC5308ED5636F16F37329 +:108A80005B1B8B9704AF4EC3C39ECEA3D17439BA80 +:108A900047C99CAFF37196E2D89FD856CFE30545FE +:108AA0000996C4FDFDDA7ABE8E02111ED70958BCA4 +:108AB0003E2EC4CFA13F31A975861EC1BC04BEFDA8 +:108AC00026ED9C4E979D23E30DC1727E5F70670279 +:108AD0005438B4F37C96DB6159C23F80F7B47F1DF4 +:108AE000AC74FA039AB0677CDB5DCF85FDE371D986 +:108AF00039B2BD3688FF995B7B92E2613764093BEE +:108B00007F181B8576CDB6B84A7014011C289BDAF5 +:108B100097762828B78B3ED62CBEFE3BA20B27F4B7 +:108B2000DA379BB2F879CF7611B78CA58C597815C6 +:108B30004A4E8D41F1DB1EFD2AF0DD2EF29EABBBCD +:108B4000E3B3C203B51371D69A931DB3B233B4BB6A +:108B500058ACB7760F3F27D93EC69B5C0F70B62B3B +:108B60005C3EDA3FF7C87B5388AE7B961A3B907F1A +:108B70000E1C2BDB4C574D244CDAA73A6026D4B29E +:108B800050FF72F29F42DC3F185B17B3F8FEA4EC73 +:108B90002FF500BF8725155D04F85810E276D281C5 +:108BA00020C807C25362787A3CF4CF59AA034F0F0A +:108BB0009F5892857916D162330FF5575E7103C3C2 +:108BC000F30A72BC03C5623CDDDC3C01E15B9A0A3E +:108BD000A79FF790E33D1CCC2C8FCE6609FC087C48 +:108BE000FFE4D44EC778BE3AE778BE7A180FE7EDB7 +:108BF000EF583FB1BAFFF17ED2CF787F91F009BA3A +:108C00003D76F67759189F8F56C078C8FF385EA812 +:108C1000EF784567B728E1B4F5798518E7318947DA +:108C20003D317C7E9A1C7A4AF0C7DEF84EFFD5D0E3 +:108C3000EFA631AD01E4E33D4AD23F16F5DE2495BF +:108C4000EEFD6CDFFE5E0AEDDEBD16B76B726BECFF +:108C50001918BFF085F284DC9D49DF297AC77A5C58 +:108C60008F5A27A3FBA036621C2187F5B5A7855D27 +:108C700008FC7F04D7FDC8B98CF2DAA29D0D3F1B1A +:108C80008F72629D4A761C03B75E9FDA1BA7E9F4D8 +:108C900088FEC43E9BB42B8A847D3E807D11637226 +:108CA0001F8DEA7CDF4DC6715895C594D1BDFB1B65 +:108CB000325E29F735E47E460E4BCD48DF6F1BCD83 +:108CC0002C15DF8F61C9F5085CA965D27D5F633B18 +:108CD0001333E95EABB58CE20A9AD1C0F74946DF9F +:108CE0009BDB13DFBC80B145C89380FF7BB3E4F905 +:108CF000BAC470B41BBEE7AAFFD855D7135C0FE9FE +:108D0000F55CCEB1458AFBFE372D84769F8833C94A +:108D1000F8FD25A29FADF12D0194EB9B839617DB07 +:108D20001565F179805F9145F5B9CCC27B21B466B8 +:108D3000EE7F6A21A67E1AFA46A11DC9FD75BC1FE9 +:108D400037DDFAA3AFA4A3A4EBDF4ACF7CDCA2D12A +:108D5000685F50D891F680F663B17E86F653C17D88 +:108D600020BA96B338D175B8DF50919E65B5E6FA52 +:108D700000D215DC18F4F74A427CFFC1C74E0670DA +:108D8000DFB83FBAEA15824E711E3762893E74AA77 +:108D9000094DE94BA75E7DAE7629E6E07ABCB36269 +:108DA0004B00ED02D0E36417D8CB543ACF39047DA1 +:108DB0004E7ED5C79BF7B6E07E6A7BAE38270FF2B2 +:108DC0001FEFAFDF946512BF4C3FD33D2B274D6F94 +:108DD000B47B52D118B54F2D407FC7BE97CB89BD0C +:108DE00071B79C48FAAF86F258562ECFA72D9FF345 +:108DF000F4785CD7BA4D7E831CFFB9CD5A2BF97538 +:108E0000A114E511B6CF5B43F70449B9D2A75D9F22 +:108E1000FB439DFB4EEF3EFA5209E66DBDB6F4FDF5 +:108E200030E6E7FC563F13C6F99EBAF55761CC23EE +:108E30007CED568DCEC75E25E2755F69FCEB548CE8 +:108E40005FDD20E4E933216B39D285ADE3F925CB31 +:108E5000931A06B179FFF0DF75FBB25048F4D4578E +:108E600075E53BEA725EAB7C7C3FEFBA078E7847D4 +:108E7000005E96EFCBA538D6299DAF8B53074B7676 +:108E8000609C7E6F88CBFB6742F17FC171713E4869 +:108E9000A7DF1EF6897CC56E0FD797D65CDC6749C5 +:108EA00008FE71CFEBA9C7B2A8DFA5776964672D6B +:108EB000065CAF03119D58761DC583DCF35EFA5A3C +:108EC000D753C3615E4B372931DBE4ED6F05FF31CA +:108ED000B16E23C547DD702DB69D79305777CDA390 +:108EE00038FB92B50AE9F125DB155AE7EEBCDC7ACE +:108EF000666E9E5E9A213FF730CF1BBCD615777504 +:108F0000DB57DB43225E34959DC7E34595DFA834EC +:108F100007DF573B05763E26A9BED9E8A7F2ED4606 +:108F200083CAE521CED7D71D3AF214C910BD7B2ADA +:108F3000F2DD8163BFCF5A08AFD644B97D7FE18EA1 +:108F4000F79B1E66F8FB0CF19C14C92F8BE4CC2216 +:108F500081FF8B98DF0CC13C5B44FC70F259A8A7E1 +:108F6000C1F75E87427EDE1A58B19887B708E19D47 +:108F700088FD73BB7E11FEAEC800703F1272E62DF5 +:108F8000FEBD70F7F7DD2A8D9F27703F97EB61B923 +:108F9000B00F9B1EFDD61CE497D3772874CFFD8AB3 +:108FA0007DAF535EEAD2433E43E341C8E328DF246A +:108FB0007FBAF90FFC622FAEFB1E3E3BFC75C287E9 +:108FC000E403583751918715556B32F0DB20F9DEF9 +:108FD000A73D2747E23A77F3D3E97EFC96E742655F +:108FE000B4EEEA4D6B0EC66996B2782BFF3D1BEBD3 +:108FF000857F241CF2BECD2A1EF3C23C4DAB16D693 +:10900000E9818FB93FB4E1E0E83BD18E9EF48C4E0C +:1090100039D5550F8D988CF65ED5932152AA554FB0 +:10902000377F11D7F5453BC4FD47428F5E88FF343B +:10903000FBE2E9C29F4ED7CE1F02BEDC78BAF063D6 +:10904000DD9517D7F114E6BB56ED52C83EAB7AD684 +:10905000FDDEE672EE470F3E8CF276C5AFB7646375 +:109060009EF59FF48E42A4C383BB5AB2310FF29493 +:109070006E67235EFF94D4EA32E5A95D1C5644DC9A +:10908000C499CFCADA6C82FBCFBB3D06E68FACDE5B +:10909000E7E379924FAC203A409DE7471ECC9CCF46 +:1090A000BA62EF5D8526CF5F73E6B5EEF2D0FEE7DC +:1090B000F5E097E130FDE5F9F5E40D760D9CFFB89C +:1090C0005AF88FEE3C47993FEA5ED753C3CEFD2056 +:1090D000C00BF98936CC87F6BA445E63D3FD3E1BDC +:1090E000CF8BFFE995613B70DFFBED5DCF64E3B9AA +:1090F000EF9EFD4A91AFF776D7E801EFC73D2DE42B +:1091000081ACF797EFFAA08E39548CAD7CD947F635 +:10911000CDCAE7D5AC4A8C63ECF0D0BC1E3E71B42E +:109120007002D4AFDBEF89CCE5E0505EABA4574FC3 +:10913000BEB1A0CF8A1F3E49F9AF3D79C7824ED755 +:10914000ED3FE2453E71E37356D711EFC950067A01 +:1091500075BD3E07FD9BA6FB3FF2A2BCF9D3630A97 +:109160001B56DAF7FB65BB9FE179E5825EFDE7916F +:10917000A7BEF8936A6A67A05FD61FFD8621EF70CD +:10918000FEFEFE4F60DC65AFF8288F7DD9F76F24B7 +:109190003E7F436F203E5F796F4B21DA15CB3C76E3 +:1091A000A141257FBEECBE9B88FFAE7DFEA642712D +:1091B0002F681197077611C2B574FB6504D7352C5B +:1091C00041FCB7EC5E8DEEEFF8506775FB33D0F3E2 +:1091D0007098CBE33776FAD019616F607C16EDB5E5 +:1091E0005F6A3C6FCB9557439A07EA1F8A38D89D30 +:1091F0006171AF2F6AF5428497FF59BD6B239DB70C +:109200007BB3849F4B073CD8025F0AC6A7B4E767CD +:109210000FE3746126DAEBF41D88CE59F81CDB7776 +:109220007BACC044C77722CF978FBF568C0FF30E0D +:10923000E2BEC01B85FCFE15E6CA83BEFEE0F2B9A5 +:1092400098F7FCA680B367BDEF1279E362BD7F702B +:109250009CCB11CC93A6BCF66E4F6A98233FDAE7FD +:10926000889FF7E6FF7AC43A76BE877951FE720F7F +:109270003E1F53C8FEBD66ABCF11FF5B7D509C7394 +:10928000E873BED299CF7CAD58F76EFAB9E5C08FBE +:109290005C72806D2F1852DC7AA5274979E8B04EB0 +:1092A000C96E5BF9A087F27FDF7AE0F11717025FE2 +:1092B000BFD525D7A7539EF6AC4FC033E26DD981F9 +:1092C000292CD3FA7C0BEFB1CDB43EE179C6F51968 +:1092D0006224BFFE61F2B407CFCEF5786D3FF2F4A1 +:1092E00064B88F9D9483E7C7DEFCEE75A3284FCD4D +:1092F0008557293FDD72F1D6B0E9C8EBEE3D67C175 +:10930000ED1A8947893FC9972BBEB78AC6E9E1574D +:10931000C997523FF593B7EFC6A3FBFD1E217FDC33 +:109320007913F64C5681BF03D2E46515183FB1D5C9 +:10933000600CF9D5BD7F811144E4E75B8E32BADF62 +:10934000249E5D2AF3F1E81EB65B7ECA9F33718FBF +:10935000F5473FE3F5D82C35E37950235BDC5F9488 +:10936000CDE7352DDB24BE6FD6E222DFB38BF6814D +:109370009A14B18E72B3691D7984DF2DCF89C5B27D +:10938000D4F74DB085C664675FAC033D6393D51BCE +:109390004743BDFAF6A28B75A053EC02F5876550E2 +:1093A0009F7AFB70FEFE5C75B2077FD7CA1E717193 +:1093B0002DBCD755855541FFFA706F12C7DA0CEBFB +:1093C000D60F7CDD9CCDAC5CE0AF2C1FB30355BD4C +:1093D000F3CBF2423D8FE036317ED194EBA73CCE09 +:1093E000660FFF6EA8FDC97EAA7473169D5F2B07DA +:1093F000184B7BC7A9D239DC95212FE55F35E7F201 +:10940000F19A61BC266A27F136B452DE07A1657174 +:109410007A68396AC37E282D418719D9324F9FC790 +:1094200025DE7D74D84E1E473D33927ED7407BEFBC +:10943000375F85E767FE398BF6B75E0972BEB822E3 +:10944000A7DDF319A857F947DE884CF58AF2C04D1D +:10945000580ECF497C219BF797C2FE165EA5F1FE00 +:10946000420D61CCCF562C6E072B40BC45808F2619 +:109470008B99DED1B8449C79B39A56752645E3861C +:109480001DE3B262D03BB08EAE98C6D711F8B4A43B +:10949000875EAAE1F505C9B2A69326CDE3CBD90034 +:1094A000DF245FB204FDAE85BEE418CE5F4E3FFF01 +:1094B00034F67B2E9773786F6DB5589FD587B89D1E +:1094C0002EF3E556BF20F611BAB9FD2AF3F8701A4B +:1094D00008CF6A8411DAFDF06D1ED7A97AC2991FF0 +:1094E00031ED591E679BE6FE3D3C914774C120FE5D +:1094F000EBDA6C21E787B3E17F4B5E68B7627D955D +:10950000D383FF8ECA5C9D59E9BF5BB8460492DEE7 +:109510007BB62C07E3C17F1176B4CCB3F69A1AE57B +:10952000A11C74C939C9AF138E1B57239E261C6713 +:109530005FA1BC2AD9AFC1F1D89377798AE75D4E94 +:109540003A59F12DFCBD1ACF310F4B9ABDF986EF78 +:109550001DE7F986538FF173830FA3BF8CF1B1A878 +:10956000F39C4AC00C32330D2F5915798E7A734013 +:10957000D053E42DCADF45C4FB39D2FB996CF0DF30 +:1095800043CCA929737CEFFE3DCA2A31BF58C84F8E +:10959000F7134C3DEEA4EBF9C2EE3B2F6223A4ACD3 +:1095A000E655D7FB501DEDFF9C3FC8FE4F57B6D088 +:1095B0003F92BE7DF1E8C8DB9CC4267E0BAF20E85D +:1095C00083C7534E3C4A3E007C6A283F732D273E9A +:1095D000F3EB9CF82C883BF1396C81136F4509271C +:1095E000BE462CFB8CE37D494395A33E6ADDF98E94 +:1095F000F6A5A078D2EBA3DB3EEF683FA663BEA33F +:109600003EAE73A1A3FDF8E412C7FB73F6AD1812CA +:10961000FD2774AD71B493F43FF7D0BF3AFA93F4D9 +:1096200097E7D9AB18B74B6222CFB53FFA6B6AC345 +:109630002CCCE789A56C0DF5F8A7E583FF74F3C181 +:1096400010D77918E5FD149EAF8CF6D9BB9E501B40 +:10965000DAA3B9C01B2867DD7A3DF7F04F29BEEECB +:10966000CE4FB84533691FE223D59A86FC52C0BA63 +:1096700028AEDDAC8A7B4866FA491FDFAEAA5F4997 +:10968000DF770AE6707B3B9823F6DD41FFA1BE1B26 +:1096900091C56CD2832A73FC5E65B6B85F021CF478 +:1096A0008DF8BB91CDB9272BCC5C8CB343BDA457AF +:1096B000DE837E998C7E02C8F3821C806FA10AF241 +:1096C0001C86BAC2B0672B00DB083FB3F17C07E809 +:1096D000393A0F9DCB22CA9A4A746D7AF489F909F6 +:1096E00030C1E32BCEA17334EF2D1B4FF7FFBD1715 +:1096F000EAB91791F2FC581DCF0BB852F819EFD503 +:109700008FA6762F5F05AB0DF8E91738D522BC5729 +:1097100082FB1D83C5C796EDB8338C79322F57F085 +:10972000BC03F9FCBC1C2E5FCFCBE1F906ABEBB35D +:109730006C7E2ED343FBD1E817E1EFFB5D9FE4EB9A +:1097400017EB181FDA646C719EA73FD66063DC715B +:10975000F5E1798E7B52AE7889C7E1AEF86FE77D8F +:109760001C7372F839F63962DCCBA1C0FB812E077D +:109770003AE462F9D3E973703DC0F39402F54B8E7D +:1097800081C905789F9728F520127FC5622F3C0478 +:10979000539F97C3C7BF94C53D389F17AF5A15C68F +:1097A000763DFDC97E607268F7BC946B7B0A816F61 +:1097B000CE7C56213D0EE3F9F1797CD188160CA1BF +:1097C000CAF15E6489775E00BE9ACF62D4AFEC9F27 +:1097D0005941BA6751CAC135CBB352F9D0DF9A9714 +:1097E0007D14277E77FD99EFDF0CF3FAED8AFF7A7F +:1097F00008CF01B0C4C912D47357766AF43BB78955 +:1098000090B53007EDD59AA19DD79EF5DD00AD87C7 +:109810003577F1B8DA9AFBC7D139EB3561E73D9A74 +:10982000925F960B7E59B37B349DCB96BF4FE1EE92 +:10983000BFA591DF0FD184BF1F8CF7374678DEAE0E +:10984000CE120DC8D7CD46DE70A463691E4BD2FE82 +:1098500063F1107F0F05C6B7D11E627C1E3F177CD7 +:10986000BAE070FE64618FDD8AFDBFF2D8832528DF +:10987000BF7E367EEF18F267AA87860F26F4504C1B +:10988000C0097A88FC85775930E6CBE02FEC17F6D3 +:10989000D42DAA45F6FC2DC2AEFF48E5F6BBA6C600 +:1098A000A23AD4BB0E6B5988AF6C3496A55C001BF2 +:1098B0002E1B93E4E5EFD8823F738E901B77E6BCB6 +:1098C0007071338F7F38ED3411279276591CFEA2C8 +:1098D000DCFE901DD610FE719DCE78E3B4944A7ED6 +:1098E000E3A7B5C376E77C3AF9DCAD247E8074E863 +:1098F000AAE0F2B62B15E4E72B4015F13C2FA77D2B +:10990000E6EEE72121371EC9E172DE36789905F2CD +:109910002FCCCFC3D95A15D5291513CC37AB80D747 +:10992000ED1CFC7D5694B705780EE974851FE4ECB8 +:10993000BFE7BCB2B16D3A9D0FE4F72D421D7F2FFA +:1099400092F9B3B8DD21E5E0139FE1F7A58AFB6248 +:10995000AA45FCD93DBF6A586FA46CE57A15DFA70C +:109960009EFA0BDD0BF1609EF9DC0568CF3FADD1AF +:1099700039E6807ED29B9B01CE8751AE8EC3DFD568 +:10998000E17126FF2185EED7F09BDCDF0C18C624A1 +:109990008A5F275816C6BBDFD93F9AFCCD8342FFAA +:1099A0006487E32FE37A5FA5ED18698C26FBF7D770 +:1099B000B4FE5DF8ED4AF1DF0F9BA0B3363DAF1763 +:1099C000BF721EAB3B27D326F0F59DF9548E477F1F +:1099D0001E1EAD4E71384F1F6ACA9877BF7AD8994C +:1099E0003FE33D3BEC07FCF7EA261C9E7C2DCA4377 +:1099F00024319E4FFCEED973A8BFF7734AB9FDAC72 +:109A000033DD437E6552C57B7357FBB8FC3E7D5604 +:109A1000A376B2DF0987666806F06765AAE328FACD +:109A20008781C33EFA5DEEC02E7E1F7AE07080CE45 +:109A300055AD7EEC62EEC7E5B218DA230F06CFFC17 +:109A400046DC2B40BF3F1A303A581EC6D5BD5C5F7E +:109A50008E078AE1BDB4F2B91CEFFF0241CBEC6D79 +:109A6000008000001F8B080000000000000BB559AB +:109A70007B7054D519FFEE631FC92ED99B5D08E199 +:109A800061D83C480884B82C0984A075790818224C +:109A90002C449456A72C5001C96329B694A9CE78BA +:109AA00093A05271DA4C755A6CB173A1E26025CE65 +:109AB000521209CE86594284048149101118AB8193 +:109AC00076A845C2AEB482759CD2EF3BE75EF71133 +:109AD000A8FED364926FCF3DE77CE77BFCBEC7B99D +:109AE0009B16FE2D801DC05A003E0D699ADC02F7C0 +:109AF00022BD453FF701B43986018C0018AE00A3A2 +:109B0000ADE911D13E1C20361E60572EAE7FADA5AB +:109B10000B709C16B6B841408AEB04362ED6541C06 +:109B2000B79A63979FA2F59D1665971BA018621FB1 +:109B30004319F20A17B977D37EC507421951B7877F +:109B4000D61BE7A6E972054B410307C02F9B704F58 +:109B500025D08F0F2AF0797A7C6C9D80E7E4E1A70D +:109B6000D1F8A73AB6CE1D9B30C627B4DED83F51F8 +:109B7000716EDD720F802C832A79016C4887394918 +:109B80004F37D34F467E23BCDC0E9E129CB7F2F9B2 +:109B90006FD65B512C1ADBF93A8F437556A17E9E26 +:109BA00063A2A71959C0D7B700A60134D0C938FE9F +:109BB0008910B97C9F04F045A4ABD48D32D51D7BB0 +:109BC00027C78CB4560CFF6632CEBF610994297842 +:109BD000EE818F44C8403B5C79234DAB46BB4C388B +:109BE000B833CB671FCAEFF9734DBF1E83EBA207D3 +:109BF00005375A1CA2A6580EC9D910FEBBD98774C6 +:109C00007EC745F300D2534AE07B4A39404547E3DB +:109C10001CB2E30C686956904E122110421ACA46D3 +:109C20007EC8E7FA99C25D8D68778805C62D9D0CC0 +:109C3000B04E11981D0C3F849FC1B9228043CF586C +:109C400019359EA75215BAC600F26C37C10A3F9E5D +:109C5000DF04DD63C8EEED87BF9FEF46BE514D5E6A +:109C600040F89A74D6BA82E434F6AD524476DE2ACD +:109C7000FDDC9812584672D71EBE64CE40FD827F2E +:109C80000BE5002EE9137C8F909D0022B21F215915 +:109C90002D838FE921BB1DCE047EED0EE4531E1FE4 +:109CA00007BF44E3BB12C672CC4C76087E8A782F7D +:109CB00061FEDFE2407FBE79B663E24A3B931F1C40 +:109CC0006897F6F3164DCD65E3E5215CD7F8C18DB5 +:109CD000D2019CBFD1593B8EECF9806262E7603CB7 +:109CE000CC4EC7F5B17D180F286F4984C74309C60C +:109CF00003E1B984E2A18CC6C58C5FABB9AF8AEC35 +:109D00001E6B176197C0E281C507C683B21B683D11 +:109D1000C607DB5FE466EBFB441F8DD548BA369E71 +:109D20008D67D7D0B8B56FAE22D05844D37B297E8B +:109D3000235D8C4F08603CB956007FA824318E33D8 +:109D4000987DDB1CDCCEC71C3C9E6D9294142719B9 +:109D50009268C4151F370B6CFEA43267EBCB183723 +:109D6000A0D844C802D8A8703C42368E119F4F5AE2 +:109D7000D91ED8F86EE5E2BDA8DFC693129B9FE618 +:109D8000DB3007630A2A16B41C215AE90FCD319142 +:109D90007CDB2570A35FCA91FAA602DCB3BCEF8816 +:109DA0008987F324F26F5BD7039364C2F9790BA41C +:109DB000A1086D5FC53EFE13EAB7E910DA1586E229 +:109DC0000FC56578BB133EA3C240463ECABCBB6507 +:109DD000E902390DE36506D773578B7FAB5A0090C4 +:109DE0009FE9DB4DF8AA7406188DF67F9585B0853E +:109DF000F633973202E8EF36B36F92C228AC0BD934 +:109E000087F27F89F080FBCA2CB0C1882F19E51D2D +:109E1000DCEEDA49F135D826F9B2D0E64709EFE5AC +:109E200024AEAF2F1BEDF838371BAC6B932E5A4A7C +:109E300001D6F8009E463C3EDEBDBE1A68FCB2E983 +:109E4000D2C004BEE616ADC3BFCDE8EF42153C114B +:109E5000E4DF7046F2686E7A2E5F1AD07D702B9721 +:109E6000FE6F1009277561017E87E36087293E8FA9 +:109E70007F75F0E2E752295139CE1FD76DFE68D4C5 +:109E800092EE84F38E2AC3865FB6E1877CC8BF2535 +:109E9000313C782284DF0F24CF2E7C6C92A1C782C4 +:109EA000F2BC2972BB607E64F174F399EC25DD6825 +:109EB00092354EDF3B0ED4F71D1D6FADB379DE89B1 +:109EC000B50A1AC3FF1ECCE738AEFCD4BD13729995 +:109ED0005DCE644FE37A127E2A6560E7559EC9F72E +:109EE00090DF2BD03EA4D79AB0A069B87E1DD909C7 +:109EF000A10D1AD74FC6DF5B79C4AF45A275EB77CA +:109F000008E0C275B57B52F4DFDE7F7414D2FA50DC +:109F1000F2F3A06E97608A5DFE4C1F660CB5CF15FC +:109F2000B2CF24FC900339641F901E73105EA0070B +:109F30008D306A284E0CBB5078913D3EA3FC82EBDD +:109F40004FEBFCF1C7BE1271F1575D7F5326CF8FE7 +:109F50000DBADE759AC4F45EADE3035EE4F8B0E2D8 +:109F60002FE91D04BEAE7E87A0457287EAB76EAFAB +:109F700069A5997C019AD94FF97E4732BED6EBFA92 +:109F8000AF4FD1BF2120249D8F716A5F897E5AAD6A +:109F9000E3F74EF2D49AB8FF6A112FAAFBFF275FAE +:109FA000AA5FEECAD4FD32112626F96581EB3BF992 +:109FB000057CE92CAF6DB4723F5CEF9EE88092386F +:109FC0000E52F7CFC33C0698C7E66F17186DEBEB40 +:109FD000DA3A13F5F6764A4A35EE8FF6CDB64DA647 +:109FE0007C7642F6108B6878EA3615F3DCFE9E82AA +:109FF0001A37F2F5F68B2C0EA69EF46A69A88FF735 +:10A00000A4D7963F8C81C04576C07DAC7E464F1468 +:10A01000BC5F427C7AE69651D96E3CE1B551BDDF1A +:10A020008F9A118E8493FF3A45E74EED95A75970AC +:10A03000FEB96C89C5DBFC5756BE6E41BEE5991270 +:10A04000CB3F47FB363EC4FC704254E8F9B51322BF +:10A050005B57F7AAA489389EBFCFC4F24B10FD26E8 +:10A0600030794DECFC60E778D76A7BDCFFAB749C01 +:10A070007A33DD2F55535F37CAE6A13A36FF2E13E8 +:10A08000AB7B5747DBFE48FD4CA16FE73C05E5BCC9 +:10A09000FACE932C2F455B05C846C647B38FBCA5A7 +:10A0A000A27E57DFEE3703D2396DFD66AAB3AB8CC3 +:10A0B000B8DECAF161E0696D445C69BE1BF3695F9B +:10A0C0003A44901FC82D66F24B7DBF311E30537D40 +:10A0D000F6EB7D50C36B17D9787D87C0F45BFF9A90 +:10A0E000A0B9F1E391CE036692A361AF0023736937 +:10A0F0007EE73C5A570BA1E728CFA7E68BB5DB9349 +:10A10000C74FE8387CE25B70D890A9E7CF62282679 +:10A110001CDE98E57710EE6FF4A7DB4AF0FC1BBD60 +:10A1200012C3C3FFC023AB6B27A80F43875E8F8882 +:10A130003ED2DF5877EDC47533F589F3C29F33BB48 +:10A1400055870FCF257B3C08813AD2EFC1B04D89AE +:10A15000A0BED5033CEEAAC2164D13683EB485F4EA +:10A160008C1EB2B0E7EA5B02EB2F8CFCB356F7EB28 +:10A170005ADD0F6B31B1BA30A5D5F5F03A053B92F7 +:10A18000FDB27042B27DAA80E78BAA10CF1751535F +:10A190004826FB47270BD042E35136E60FF5203F18 +:10A1A000B781EC89E7D4ED4DE6D39052D7D4CC11EA +:10A1B0000CBFD7655EFFAE9F91CA28AFDCA9EEA7A2 +:10A1C000FA4333F282EE8FEA18CF4F557A1DED89AC +:10A1D0003495405EDC3EA9FEE871E73B0225773E00 +:10A1E000EF94DE2F1BE3C51828D48785146EFFDE9D +:10A1F000BE113BA9AF5B3F4352A91FB03A793F5014 +:10A20000F79F9AC55E34D955B16BD35E9CFF6C65E0 +:10A21000A890FC86F7830E52F9D8D8D52F4EC1FDF1 +:10A22000575A4D1ECA27E0DB59487DD2F3D92F5526 +:10A230007B294EF79A3C741FB85621A9943F83D8C6 +:10A240001F037B6ED1A8FF0876FC93DF0F08274819 +:10A25000FD61E17EC209F6DBDD9978FE122C35C383 +:10A26000D10E4B3AB0BE23FB25733F3753BEC4BE5D +:10A27000FB68E66DFAEEDE827CC72AA2B27BA4D32D +:10A280007EE7BEBBE14BDEE719CF1B303EC9AE0D0A +:10A290006181DD37E37DDE4881FABC68E7816E27A6 +:10A2A000CB0F9953286CBED0EB5F5B57DA377D47F5 +:10A2B0001EE92F6C6171D160D2B638F179C31B02EF +:10A2C000AB2F70109D341DF3E2E97466EF6B6F0BDA +:10A2D0009A851218F61594CFD77028C0B555A14BA2 +:10A2E000D42FDF68B5B27E722DFA6733E27B8D5EC4 +:10A2F000C768FC34F6358DD0C4EE354DB085D13508 +:10A30000F8F73DEFD07C70ADA3D94CB830FA10F619 +:10A310003C6F681EA9D7715E9F82EB549C5A9DC901 +:10A320007903F5D946F934DA2B29A44F5BD7BFFF5F +:10A33000309AEC81FD711EC5ADDE6FA09D98DFA344 +:10A34000FD768DEC7945C7E355BABF61A83756480D +:10A35000CC3EE20C4E271D3A90477E8E76DECC092D +:10A3600060FE7DF3D0818984135484F9B3760FAEF7 +:10A370004B90AB3E64A3A0FF668C72F13A7156F22B +:10A3800050BD41B90ACDC3E372B5CB03199EDBC4FE +:10A3900091207431FF89427752DF1E3C28F9B5C401 +:10A3A0007B4B57DA0ACA6FA3F53801399645F53069 +:10A3B000C7E966B8680C737F8B9D9CE2F90FB3FE0A +:10A3C00012C774FE90F9D96A1DCDDFC8B501C52149 +:10A3D0007CA956D378539E042FE078D3E9F54590B5 +:10A3E000703E08FC5E1B34C5B2D8BDB15F64F20597 +:10A3F000FBAF6715D829CFED9C4B756DA19E2F8EB5 +:10A40000E6D9D611AE553A77248099F4C3FDAFEB67 +:10A4100075373883EF6FD271D576BACA3699FCD5C5 +:10A4200039628A842A4DD2F15EE9F4973BCBE3F797 +:10A430008F3BF59309F71FB62F887A523CED3F67A3 +:10A44000D1AA05BAAFDE3CFB28E9DB8B7D07F26FB2 +:10A45000ECB4A80EF2D785348DEA3E040277535C43 +:10A460006F3AB4B688EA1F084DCC1F2F763C1EFD0C +:10A470003DEEAB3F6FA34C0EF59D1F64B13ADB5E22 +:10A48000FE12F52DD8A72CA4BE657FD8C4FA16EF0E +:10A49000C93286B7FD27CA5CF97471028F8DF8D670 +:10A4A000F7CA7EB2477D6FD97BD5D46F9C9CCDFA1D +:10A4B00016E164998BF2D054BAA752DFD25BC0C6C2 +:10A4C000863ED54E89E9133D9CC6DE170890C7F13C +:10A4D00002054978A96B7B97D5F7BA0EC997881BF7 +:10A4E000635FC029333E3F22BCA03D1B43828FE106 +:10A4F000611FA7751DFBB3488F5A5388F9B771AF19 +:10A5000089CFB7720AD0C2F6A91E91F9F33D7A84B9 +:10A510007EA8326B6301453CAEF7EFC7CF07C6514B +:10A520001E3C3E2B5044F4A233F93D8A0AB399DC19 +:10A53000202C657E1F6CE3FD54AA1F3F71F23C9AEC +:10A54000E18215FEDBCCF7E9715065E6EF71A80FEB +:10A550001B8579ED945EAF1761FE5230BFBCAAAF88 +:10A560007B1FB0DF1088F27B63886219FD55F38092 +:10A57000A035A2FF6B1E34B17E022A789FEDC75F23 +:10A58000CA5B45DBE5A4BC8533268ABB9A05C9F9BD +:10A590006C99DE072DFB963EE857463E2B8442DE43 +:10A5A0008FDB6DF49EF08B1E9322B1BE432B20FEF9 +:10A5B00077EA838E621E73631EEBC13C4614EBD2B6 +:10A5C0002BCEDBD4A5D4FD465D6A2CFE90BDBF39F1 +:10A5D0007EF8FC5B992C6FA6411E01F16B9406ED91 +:10A5E00057AFE8B2A6EC6F84A5CC6F4DF05012EED9 +:10A5F0000CFF0D52DF5D32D47FFB9CFABD0D62660D +:10A60000BC3BC32F26B4F889FE45E438B45A9FC634 +:10A61000C60EE330BC0428BE1B8B791F36783FAFD3 +:10A620005728678E2521BF0F8EE2FDD4A68705F639 +:10A630005EF570F187AC8ED747FACC947F0ADB5673 +:10A640003E4BF189403B43EF6716E9756EB195D7F4 +:10A65000B545C6FDCCD057C74B2338559E878733A9 +:10A660004AEBA9EE2DD2EBDCE28A647F1741DFBC16 +:10A670003128C7233E81F54B4B7CC9F34B974F796B +:10A6800097DCF25D7172D9E93F4D7E8CF65D7F9863 +:10A69000DE8736E8B8F614B93B06E8BDEA7BCA9413 +:10A6A00066B2932DA354419C5ED071FD5387FF3C4D +:10A6B000E5C7A876690DBD1FFC0475247B1B71E3FB +:10A6C0001909537F6C4FF40BDF67AC5BE754D8F884 +:10A6D000B8491B4B710F25AEDBDEEB52F36B63F118 +:10A6E000B152B2FBF1C3BDA5E604FF5CDD182862E0 +:10A6F000F5A1F34896DB9E881F51C78FCCA8202C6C +:10A70000D5EB5E329EAE129EC89FFB8E2C7A947063 +:10A71000D056335C7027D4C5F6F733C627F01D0C2E +:10A720004B6C3DDE770A970D4B94F35926E7608812 +:10A73000F34327ABEC9EF3F694692F70B3AB228DF5 +:10A740000B56BDFE02E11F9AD97A03976926D537C9 +:10A7500006F5B17460479817D73B6406C6473D6459 +:10A76000D176B37E9EE791E84585F5B300638170AD +:10A77000F7B68EAB712E8EFFE9987C087F332024CC +:10A7800011FEA7830C8FD158C6C0457A0F6812E519 +:10A79000D1E972E4B050CA9EAB32E2EE5E1860CFEF +:10A7A000EFA3573AB86F16B8651ACF01B5990AD218 +:10A7B000CC506421B5F1912C39F332E28C52CAEDC0 +:10A7C000FC16B78B0C970DDCE1626C56D87B6A43A4 +:10A7D000EE6902977BBA0FAC942717B8781C7B6C94 +:10A7E0005CCFD820B0F755865C33655820A1FCF7C4 +:10A7F000CA604DC7F5FBBA45169F8706DC1AE533DC +:10A800008F4BDFF70FDC97CB5A0F78CC1BD7B312E7 +:10A81000F7D17BB2E932DE70997D22B7D57726BDBC +:10A82000BCA2BE07623F247E73C216D6A7885655C7 +:10A83000A27E73968BFB8DBEC7C8403E952D029CB1 +:10A84000A3EF25F2B97E06FF4A4C390E2FADE77A09 +:10A85000D12BDE734EFEFD06ED0398AB907D844850 +:10A860009678CBF6DDED18CD022677C6EAD8B5A7E7 +:10A87000CAE2DFF378C2C7CE095887049F8FD51D7F +:10A880008FD51EA1BE17BD7E35B13F5EE65A55E39A +:10A89000429C086E85D90702E0A67C3E1276287499 +:10A8A0004F13699D8BBBE953F4D3233ABE2EA467A3 +:10A8B00094D2F7427BB4A56EC2F3F2E1560FD9DD14 +:10A8C0006BCD994AB81DED08D4B850CF0BC2DEF15C +:10A8D0008C89AC95FB87C5F16C035F05D919BB006A +:10A8E00086CFCD56CEEF661AA7364CC75694671B57 +:10A8F000E2DEEA24F980E156D5DF5FAA1FA769CD21 +:10A9000078DECF243F03DF4DD163257E90173837A3 +:10A910001DA93CDBE7DE60A7961BF5B0C5F5483DF9 +:10A9200087F4BAC7D04B8CEB35F41CD5343197CEB5 +:10A9300071370F084CBF9F93DDA658B4BBE87DC2AA +:10A940000F2CDA7892C3D00B0DCDBE3752747B1921 +:10A950007A2AE407AA033EF483E147B4D7B6F46445 +:10A960003D4DA0EBE3467F4C1EAA878187FF024343 +:10A97000C67A90401C0000000000000000000000AB +:10A980001F8B080000000000000BCBE46760F8514B +:10A990008FC0B3B850F9E8D88B1395EFC88D5F3DE1 +:10A9A000212CC3806037703030B43343B02B147F18 +:10A9B000616260B80FC52B982178170B420F3B3BA3 +:10A9C00003031F108B02B10C3B7EBBE45831C584DE +:10A9D000E51818362B22F8DE9240FB81F8812465B9 +:10A9E000FE1AC54303DF3542E53BE9A0F29DF518A9 +:10A9F00018D28C91F83AA4997F19A8F70A1003008D +:10AA0000102DC013680300000000000000000000CB +:10AA10001F8B080000000000000BC57D0B7854D58B +:10AA2000B5F03E67CE393399574EC2048618E024FC +:10AA300024126DC021040C0FDBE121A272BD235A48 +:10AA4000C547E91010A202064B256D6973482621FF +:10AA500021090E35DE52A53001D26295365A1FDC2F +:10AA60005B7B3B28B6D86BFBA7BDDE5BDA1FDBF058 +:10AA70002882AFC6D6AAFDEBE35F6BED7D32E74CD3 +:10AA800012C0F6FEDF1FBF76B3CF7EADBDD6DA6B48 +:10AA9000ADBDF6DA7BDCF234A64C60EC63FCFB0C5B +:10AAA000638D3263AC209332A618FD1E4C99F9F1E8 +:10AAB00044479E7DECBA90FC07939C7953F4FB6568 +:10AAC000C64633F64551067F51CC2F10190B1E2B6D +:10AAD00065118DA5CB33FD2C603C6FC812FB58C2AD +:10AAE000AFCE726B9C7A4F700ACB65ECBD1C9E9A00 +:10AAF000F3A0A80AD2DFE5A49A8A013A169FC8E11A +:10AB0000A9BB3C3699D2CB306D92D8D25EFF307063 +:10AB1000B046C6A64379436CDA2935F3DDA544D2A5 +:10AB2000D82F8BB0480F56F33305E7D32659D34BB4 +:10AB3000335708A00C45A66D3518AB047871DCEBD3 +:10AB4000E45825F687D38F0518BB9C19D4FFA1C004 +:10AB50008CA371A8FFA72A2DE2864FF706EE63ACFF +:10AB600084B18EA9FF1D8E5730E656EA980EF0B9D3 +:10AB7000FD2CDA5B81EDBFCAD80CC6FE82F83432F8 +:10AB800070CD65328D9381DF89A73EC6E9DCDE504A +:10AB90003E4D81F974AAC6FD73605CF3E72E3E0F4B +:10ABA000D6B7948570DCD1F256984B738331A7B435 +:10ABB0008CB16D0DC63405D266351D5E81F87C51B1 +:10ABC0008DF4C0B887A65E9CDB6FC3DB0C317EFBC7 +:10ABD00064EFD214C1198B6F86FE36F63F3E1BF12F +:10ABE000B060F28DF1CDD0DE75EC99D938CF192C4B +:10ABF00048F53B72049D0A58AAA798F0175E01ED2C +:10AC0000FC11BD12DBB9AACD2883FE9408D0C1E2A5 +:10AC10002F427B040A219D53674206FED6135E3203 +:10AC20007C16F58F85BCD7CAA6C6121FAA3AC79B49 +:10AC3000F7D8EAC508022BE778D2E1BF8F01EFBE53 +:10AC4000BFBA62C80F6EC3863FF89F6AC767310EEE +:10AC5000DDF1B66B0AA6CEEFBE0F7F10C3F97444C8 +:10AC6000EEF56E469E70DD9E1B87FE7C11F9B81BCB +:10AC7000C6F3C5A74C5B302A83B7FA63DDB30FDB9D +:10AC8000C6D9C802A1D39F62C82097137F8BF6D97B +:10AC9000FC69A5EF35A4661F56697EB27DFE23D5FB +:10ACA0006F6E000C4FCAE45B8AE361983ADBC2AE78 +:10ACB0008E2A80A216351E9600B54DA5574617411F +:10ACC0005E9D14094760FCA63CE8B490B1AF9B7749 +:10ACD000A64DA087DA5447DFB7E0D8B36CDFE7436F +:10ACE0007D489B72605D550C1DFF3F916840F72DBC +:10ACF000527A297365E401810D74F1847FF257095A +:10AD0000F0DA21C5EA8F237FE605893FA1BC55C94A +:10AD1000A774915689953D0ACE374790177209A5B9 +:10AD200092D2055A3ECEABEEE872E4AB3C3FF16BFB +:10AD3000CB582D1D847C6799D6ED2ACEC0F30293A3 +:10AD4000089E1695C3DBA93AE5C10FB01CD6E9F7FA +:10AD50008103306D09F072A63F10BE7EF230FD080F +:10AD60003C3D632E334D3F7E37389F43B184F09492 +:10AD7000699CCFA3C9F092C98E7233CF5EAE6F0FBC +:10AD80002F09A07883FE013F396146FC6EABCFE10D +:10AD9000484339E20168C5406EB7863A92CBE19FDD +:10ADA0004A88993EE037A5A885F854D1630CF9E8A4 +:10ADB0003A39FE02C9419D39F0A71951923BD9F2A7 +:10ADC0007A243ECA96D39E52C8DBD627D36D79EA41 +:10ADD000B7483FEDCBD41FD40FE65C1A4F11F48770 +:10ADE000911DE3B75CC106509E364DD58C46C0A17F +:10ADF000E2D7D2C81FF8373043F00D7E8FB4F4E1AC +:10AE0000774F2868FA70BEB83E71FE59EBF87CEBBC +:10AE1000297B3D9EC5F5E8CBACC7BFB0C50C451D31 +:10AE20008B856584D32FE4B052A599341EEBE8C31B +:10AE300074705D4E5B924BF22BAC1DA7723DC9EC5A +:10AE4000E36FC1F5E8862EA4D8BBC85FCD63B631E9 +:10AE500094FB4D821F511E5E1FC8D4EFC3C1A1DEFB +:10AE6000035834DD86C71D45F285D0AD296BFDC37F +:10AE700094A2C4476688F84119D4637C5DAA129FE6 +:10AE8000DF7889AF0396E4722628C6D170FC89C8A2 +:10AE90004729EACC07FA0FF3015647F9BF5457A6E2 +:10AEA0002503F5587F2BCA4577B5CCCCE2A170DDE0 +:10AEB000DFE0213C8C04F7FD5770BDE2F2D7B1BB57 +:10AEC0006DF8CB9582020FB7EB28372533CE3E467F +:10AED000F9C992E27B244C7ABEA19E9D043D96F373 +:10AEE000DCD5CC08201F45A251E84FC3F9E1DA09AF +:10AEF00057F1141911FED954A0EF413DA8167996C7 +:10AF00001B5330D5AF3788EF3653BF6AE9A5774872 +:10AF1000F4BD85F3198B4711458AC138FF65D6DB2F +:10AF20003409E1F038D79B6507B03030F7CC0C9C82 +:10AF300043ED10415F516FC4F538686F59F34E69A6 +:10AF4000DCCEB1F249C6F3563D5B0A74768BF5E769 +:10AF5000AEE0F2C25DE1257E764794D3FDF6F5239F +:10AF6000DA35318EB7413D32C8AFF01742F913D907 +:10AF7000BBB518E5EEC2F00AF87EB3A47138163BF3 +:10AF8000F160B5073CDD2C1520DEE284370B3F2D48 +:10AF9000632FCEC5F5C0FCF9C3CEBF05EC14451D2B +:10AFA0000E8E14B7DF0A596A14EAF90FA695933C7E +:10AFB0001DA19F6C3C36A991A371B24B34D23F2E98 +:10AFC0008B4F00AE1BA09FF512B7EB9410AC7BC06B +:10AFD0009706F4C6A509F3582F0D334F6B3E4D016C +:10AFE0006B3EC3D33381F329CBC03FF85DE8A59115 +:10AFF000DA65C33F5279428D8697A35E0D64CF8B8D +:10B00000D34DD539DD3AC5FC543F976B6A286EF1B4 +:10B0100073E7F0F38B117F65CF4FD13D841F6B7CBD +:10B02000C573F11C655A06CE87249DAFA74138220F +:10B03000D48F4B67D4EE6B52FC211CCF156AE923E9 +:10B040007BCB1F25F9A885A183CB308D2E3501AF91 +:10B050008943335905B6F347D81A48357F9C2D8666 +:10B060007A890F5D9C1F42550E7E7D50921DF8B56A +:10B07000E05987700C83DF3F8EC0DF7FFCD155C461 +:10B08000DF3F383F7FFF6038FEFEE38F26717C1D77 +:10B090002C70C067A5EB3C131DF862422EE78AFEB8 +:10B0A000C7C7FAE6AAB06EEFF77B7E1387B4937139 +:10B0B000F8DDB2FE22CA597F28FE1CE2AFF846B383 +:10B0C00005D778EE1C26E3786D623E57BA3A724E89 +:10B0D000003C3BE225B935909E11723E1B8E8741A4 +:10B0E0006F205F36819CC6F5F6DE2B1CEE91F8AC26 +:10B0F000BD419F89F507F36B944528BFDB2B9EF874 +:10B10000E542C05F73A8B492CC80B0C4F125F4CC02 +:10B110006F2549CC93E307F0F65BC49BC57F0FAF67 +:10B12000BD89D2F1D1785487FEC6B1B829417F6379 +:10B13000EB59246D709C2836FCE42E904DB4BB0175 +:10B140000F27110FB5E1BEB9402956BC923D87E3E8 +:10B150005B78D8119789AEF7DE71F11EBB7D58265A +:10B16000F37D0DABCA17FA01E47460E475B70DF016 +:10B1700054817A9FA525AC5754CD52C8B76DF81DA0 +:10B18000F0D123C5FE8C7014D50D68388FB7248B91 +:10B19000AFC2B47F4908B8B7CDF2123C8902BD1BDB +:10B1A000D7E8C7825F5954A2FDE630FCF531F69B23 +:10B1B000CD5F45D5F1289A2BAF2B71978CEBACBCAA +:10B1C0004F473B4F974CE62E463B5C8C6F826901A4 +:10B1D000E31766F43F8D1F340CD283A3644E97C2ED +:10B1E00068CB7A19E6935BA5986E480BFB972F66A0 +:10B1F00068771DBBFA2CE3DF699F53549B32B1ABD8 +:10B200000946EA900BE8F29C121F85E307E77645B2 +:10B21000F17B2E8BA7DDF08F6FAA718674D4E69830 +:10B22000D198A0EF721B5F95CA7CDE6A98455315D2 +:10B2300019FADEEFE2FCB27DC19F3CABFD58CF4B6B +:10B24000F08D67370ABE8845912F34E40B1247F121 +:10B250008938BE31C75C88E38F0BEB684E22DF8FE5 +:10B26000413EFEA69A1C8BFBEC6FAED596A6C81E7F +:10B27000622F239E83B2C08501FF017E34998FFB2C +:10B28000A6A4D2783857C453D8602903F01914F80B +:10B29000B1F01114F851596A33B2B6CB486F467CFD +:10B2A000A87AEF91121449735824CA083F97237C57 +:10B2B000DE783FE911CD9F8C6A50AF5DA9FBFD5749 +:10B2C000A15EFB1157C464363ECCB217FC15B0DE4C +:10B2D000ECF6B7252F44FDF3DB0D5105FB5BE0F1E8 +:10B2E00091BC7F5EC811E0D7AB65285FA0BF4DFC65 +:10B2F000CAFCA32EA83F57BDCB38350A89A5935D5C +:10B30000EA16B03515717BD8E561A68CFE802296D1 +:10B310004239E54A4AC2BF11613702DF6AA5B2630A +:10B320003FA184BC8EBCAB5EE3FD2F053673F8975E +:10B3300052B48E5C834C5C47FE1A0560DFCA284D10 +:10B34000E720CDC4BE1D7980FBBBBEE2F01FB495E3 +:10B3500056B2E1F6090AE3FB1AA4E5C7C543DB8D43 +:10B360008C97ACF16E74C27DC1EDFC8A71DAB6AF18 +:10B370001AB99DC24EDBF66726F2AD6DBF0076D2DC +:10B38000410984645318E429F0590B168D453F0098 +:10B39000A73B3364879C7185E5E3B8DEAF930DDE90 +:10B3A0004F11E72BCD134D5385A20BE333CB2EB6B4 +:10B3B000F4B84DDF2791EF3C42FF5E23C576E07A7B +:10B3C00068CBAB4DDBF1D3A4B15AE213E346AAD765 +:10B3D00056B6D0407961F1595B163E2D3F5E4B4326 +:10B3E0008AEC7F668438DCE108C161E9956CB82C91 +:10B3F000FE1D1CB714F816CB3D49F2C7E524B7472C +:10B40000917FD111C5FD67826F19E7DB7648B9BF1F +:10B410003245E38FC8BF029EF3E12DFBFBFB914851 +:10B420002EC2B1223C775629D807ABEAD7535A53DC +:10B43000DF3653817E4F777C2168E7DF57777C3199 +:10B4400088F37AB5552579F5EA0E29857AEED5D6B1 +:10B4500015F49D7DF0F1C72EE0E3D538A441FFA798 +:10B46000A1FEA8D929D17EE6D02B1BC7A3BFAF660A +:10B47000E796F5B8EFA9D9A146A3C3EC0B1252DDAC +:10B48000245C7CCD0D7D734E9565ECCBA3826F342F +:10B490006BBFA944695F7B508EFF1AE95CFF419343 +:10B4A0007B3CEEF38FB9238D50F5797FC9987E8070 +:10B4B0006BA3563749B7CD6363BE1627F9ECEF721D +:10B4C000E0ED3F6575587BCEEC61E54A08E58137D4 +:10B4D000B219E6BBC00FEA00FDADFD5204EDA12696 +:10B4E000C117D9F855EBDB098F8379B02B8D8ACC46 +:10B4F0007ED955CE53ABFC2DA17FDE965D04C7CF20 +:10B50000E5F8DB382F9443F5F9B87E3A66723BCE06 +:10B510004FFB546B5D5A706EBE82C3D92679238D62 +:10B520000067DB64CB2E10FB3625C9D05FD4A8F4AE +:10B530004663F07D4169322ADBE6B105E7A10E9D45 +:10B54000475BC3D29968AF7534C466F27D45D28338 +:10B550007EAB464FFA28EA475F11637B00DF9D0D03 +:10B5600071AAD756DAE5413BB051E7E3B4957F9D28 +:10B57000E70D2B2FCAA3225F05E590369A3CDFD456 +:10B5800050CBFBA9EAE2DFD9E3BC5EB5A8C79E10A9 +:10B5900079ABFCC945A8F7DBFC621C7650E4F938AE +:10B5A000E8A8C2756DC9F3467FEFA2A85F30A9ED88 +:10B5B0007B9B2EFA1F2C8F66957739CA9B1BEA0856 +:10B5C0004E6BFF3B582F24E018EC8749CEF2AEECCF +:10B5D00072D9511E76B66F0BF3FAEEFA6D447F8B7B +:10B5E0002EC01FD35D367ECD11FCD1C6D822E22FEE +:10B5F0009379BE5C89E6264B94C03E679E8BDB5FE9 +:10B60000F516FF1531A51ACA5DA54CF974BECD9F7C +:10B6100063300F7D2F671EC7773D7B1F3F3C1F9A0E +:10B62000DFE47CE8C1F502432E304C8672CEE2B3F3 +:10B6300091E4545B8349F86C6FA8263ECB61CEF54C +:10B6400061A537BA841D9B353ECC977D395FF8F3F1 +:10B6500050AE1ECB49F5A0BD148279E6F3F97EBA4F +:10B66000D2369F30CC339FCFD7F1BDC2394FEB7B61 +:10B67000226B7D28E5951E83E47E8AE4FE46D48F06 +:10B68000854037D70FE6A2DFD692475B501E41D1E7 +:10B69000F345208FCEE1374C34446795AAA867AABA +:10B6A00067E1B9892AD67D5351A58E72ACC9AFB076 +:10B6B00034C93D137506F3E875AB510EB98F01A679 +:10B6C000709F16AE4BE37AF4E878B081E70FDCDECA +:10B6D000F51851B6DA36AEC2C439D0070DC4B7CDAD +:10B6E0007EBE1494FA8524FF87C8B1F002FA9E3D0D +:10B6F000BF9FCBB104F29FB73E41726E447ED80E1D +:10B70000FC5065979F8CF4C79F803E68BFBBFCA62A +:10B710007B583BA97E3EF56B8DBBAFE98803AF1923 +:10B72000397FEF6AA4F7BDAFE430EC6F24FCAAF5D3 +:10B730005F98553A0AF5E66D940ED23B14217CBA17 +:10B7400074712E1762913283EBF3D55C5EB34D9525 +:10B75000D8FE3EDE3EBEC1810F0BAE9FCBD11E5741 +:10B76000C139F070801DF5A21E39E6D6715D3CFF2F +:10B77000CAE534DEBDC7F9BA00BC109EFE0478C22B +:10B780007D15BA11EB6D7CB9A56111F1455B439C48 +:10B79000F8C427F0E32E05F811CE0A017F2987DFD0 +:10B7A00053DE9B26FBB8941F150E9697F3F2E686A0 +:10B7B00018F5D3D1504BFDFA2A52345F3522F0618F +:10B7C000D58FF0FA5A95E82F92D55F1594336CDF38 +:10B7D000477CE62D05F86CEB07F4F37F209F0422ED +:10B7E000B58EEF4A7803E173247C1D3E3E29F75C59 +:10B7F000EB2589FA4845BF6F3DC98B76D45390DE5F +:10B800005F1C5F8AF23F21F4D116D42784372EAF14 +:10B8100065A598CB0F85EFC7DA99F5A7330FE43B01 +:10B82000185F0FDB552E47B48892DA538CEBB18E3C +:10B83000FCD2EDC2BFDB6E18A926A0E37671FEA88C +:10B8400095B2D41E89F743E71139BC9F769DFB055D +:10B85000DACB8D148AE0ED7971DAA7B6B3839E7BDB +:10B8600001DFDB8B455EE9A57C9E1627FDE6537B59 +:10B8700075CA7B793EBB5F5FDE133AEAA3BC7C519D +:10B880005F3AC8EB9738DB6FD778FF1D4A9A8FE78E +:10B89000E5F9ECFE3AF4E748BF6DCF17F3D119CDC7 +:10B8A000BB831DE1ED4A9CFD8C44177FC552C73E0A +:10B8B00052D5810E0EBD9122FC7B8A6A1DDFBDA58B +:10B8C000758EFCF3AF4C22FBCDEAF770FFC473F228 +:10B8D000C369C10783F99CF83296C7D8AD4A605E48 +:10B8E000620EE4D5F87809F27BBF3EB571D138B469 +:10B8F00077E7D2FA598D7281ECDE6B497FAEEEF8B4 +:10B900008286727DF50E298A76E26A5CF7681F9B53 +:10B91000AC08F5E9D58A97E0AF675C8EB17D6E3AE9 +:10B920006F5BE5E77A6655C8A94F57E95C9FAE0A99 +:10B930003BF5E9AA5675583DB3AA7EBE433EADEA33 +:10B940005841F0AC12FA7015CA695A37C6F8A560AA +:10B9500087CD4602023C277ABE311EEDF0B352720B +:10B96000D997D13F7BA797CE2DB3F1649D3F1CB4EF +:10B97000E236841EA839CF3EB206F500EDC78DF140 +:10B98000684F7ED2F166297CBCD596FE61C9F14B29 +:10B990000399F14F84F8F815C83C0897921C6FF78B +:10B9A00093D5C43738F1F209F15425FA9D8D704CC6 +:10B9B000BFF0F656F97D02CFB6F3914B10BEBF979C +:10B9C0008FBEA6782D7B8CF351AD97EC957F948F2D +:10B9D00006FD319F90AE07655DC84598D7641B9DF5 +:10B9E000B2E863B55B2EF0B949311CFB4B8B4ED9E5 +:10B9F000783A5BEB955D60879E3D7225F96F1ED2AC +:10BA000092CB504ED522FE6C783B0DFA2DA1DAE98F +:10BA1000F2859F54833CBA735F5EBE641BFFCE7D8C +:10BA2000DB1716024CAB76E655A23FAC769FC0F30F +:10BA30008EE5B31236F903F82E45BB709F80770868 +:10BA4000BE4B05BE2B9CF6E1AA726E1FAE8A5C1837 +:10BA5000BEEF147C03F34C7C9DE6B9F72CCAD1777A +:10BA60005A1FB804ED330B5F2BC27C9F7D02EDF4AF +:10BA70000A9CEFD299099BDC3AB9635A7039F47386 +:10BA800042E176FCC91DD379DE23F23BA11CDA9D8D +:10BA9000F0F3F627774E0F2E1F461E67D3654598A5 +:10BAA000DB2DB67300B237DE037B03CF21824AFC65 +:10BAB000C70ACA35FF77CFA21FFCA4FFDEDFA7A805 +:10BAC000DAF0FAD9EAB7B04E3961C747700EE46DC3 +:10BAD000F8CF2977966BCC962F76C0C3FC33B8DDB0 +:10BAE000CBFF52827F187BC376BEAFF6E7ADC0B8FE +:10BAF0009BB98699FE0CDA917ED9700F731E9C91CA +:10BB00003FC634C5E6C782694F1BD44F2EB4AB4B3A +:10BB1000CE790E91683838CB7E3EA8285186F1291F +:10BB2000961DADD4FFFB2CE4DBC3D0CF71926B8D9F +:10BB3000D6B9B1382F4D39FC0AAEFA9699F6F3987A +:10BB40009CC173AB3AC3EE8F6DCD318FA28ACE0B01 +:10BB5000D6375E3D13F2D6F95D69D7E0791BDA93EB +:10BB60005BA62FE8D93A8CDD4B2701E82F49779364 +:10BB70003F5B652913F7FBC1303FE7F0004EFB1038 +:10BB80005E25E9417B2F58CDFD576E3C0C42F80FE6 +:10BB9000F27827EB9CBEAD5ACEC375FB1EE8CE3EB5 +:10BBA0007FA61D43A3CE769ECFFA93AD13619CC0B2 +:10BBB0005C8561FC152B15E7D34ADD39CFA715430A +:10BBC000C43F18AD7D3C55C85F683B170DA9E48F95 +:10BBD000769E5F0C9E83975EE0F9F605D6FB7A436E +:10BBE00074DAA9B2CC3AD988EB04F0DCD5B088E29B +:10BBF000F946B33A09EDC1ED72FC6284AB7EF122E5 +:10BC000013979C6B71DDEF1390E68F31A6E2D1E4C0 +:10BC10009734968E5543DE673C8E3BB3DB5B2AE65A +:10BC2000FB01B5F968F4C3FE21A2563761DC53FE6F +:10BC300004E36D8C9B5AD5327D7E08E0CB9F68ACC7 +:10BC40004791DCB179C6FC4533F1FC84C591DF5ADC +:10BC5000811F11AE8E86F42C84E37295EF876722E4 +:10BC6000DD0A307EC924FFA207F812FD837E254D30 +:10BC7000797FFD4F669D42BE0BC32AB2F91BFCA122 +:10BC8000F8A711FEDA983E0FD79ECB6F9DEF259750 +:10BC9000D65465CE79AF840294677FAA30F6D8F780 +:10BCA0005977ABFCBC2FD17094FC752D0DFC9CCF4B +:10BCB0002A6F1FC77A919E56DEED6675C4C71111B3 +:10BCC000F728D63513E7145A489F8A7C1353651119 +:10BCD000F7188DA9E87F55CCDC4FA39D7184C71B55 +:10BCE0002A2C46F638FEE1790E9D7B953076872A20 +:10BCF000EC7B3D9E9C0BFD35EBF953D16FCF2AFABF +:10BD0000E70CAEFB12EC2FDE8AF458A67E7F9E8AEB +:10BD1000716B7E4E8F78F3138DB89FBB0303FD4884 +:10BD20002EC53CC85F6A98B133F9249FD26E8A1F32 +:10BD3000633B4A2DB924631C877C5C9D72FE734D66 +:10BD400025149963B773FD8621E3BA2A5184BE0591 +:10BD50003DEFD8979C799EA19FB353E023D150EB40 +:10BD600088279D2FC5EF53E97C93FBD7D5F89A69B7 +:10BD700048671FBB31378DF184C7AE3A82FED69635 +:10BD80008623C437ECD971B4AE7DBA6D018DCEC4B3 +:10BD9000397A8BF8F98657C4277A2B9477EDF23CE1 +:10BDA0003BBEA95975C63759F15113EABF32FB940E +:10BDB000CD9F206F1A90D07EB7E29AEE1772C62AF6 +:10BDC0009F50FF35AABFBBA17EF629D506AFD8A7E5 +:10BDD000F82C3ED9C4E12F167153D6FC9E7FE5BDE9 +:10BDE000436B316E32CEE85CB223C1F75DBE4B408F +:10BDF000001767FC5EDE38CCCF164F903DBF94C075 +:10BE0000F3BE8633B4BEBA7151507E80F23E20F844 +:10BE1000BF21FD0F3BF1D8B309E42A8CEF791976E5 +:10BE2000C80057E9572344576F87C067D638ECC816 +:10BE300079E8607C323A3C3D021D583DFCCD40B76C +:10BE400080A89BC58F163DAC3CECBB72FBCFA90F05 +:10BE5000DF9F85EB7B770398D29026F4460F3FFF58 +:10BE6000602937C96DCE87CDA1792C07F0D1AAB34F +:10BE70002882A38678B96AF038D6DD9B96B09C10EC +:10BE8000C61B4239E06BC2265E3E41B46F351B25AE +:10BE9000340F0C937F37C477F601CC6E4626DE3321 +:10BEA0006C443DC5E887A8E77E0A864580C75DA249 +:10BEB0005CC97B4742380A37F1710A8DA83E17EDFD +:10BEC000BF3AEEB7680EC93296179B1CCEC2D0732C +:10BED000D1B9B67E760ABC151BB118CA1316778E77 +:10BEE000F39028F71B032F4EAA222A46B8DAE0E582 +:10BEF0003B041CBA31F0CBAB70DC56DE5EDF742243 +:10BF00007D95AD5E52F45362306F39F6D3E1EC6744 +:10BF10009B289F88E5D84FC40987E5B730362F9016 +:10BF2000911EA5E8FF83B4BB6107AD27637382CE82 +:10BF3000A5120DAD94B7DAB58A7EF73424679F2A2F +:10BF4000CBAC3F25C1DB6BAD6C5ED4C60F018DEB76 +:10BF50001B2BC5F51006B958F65546FAA1A49CAF9F +:10BF60003764C54DF0DDDBCAD7DB10FE679007FEF6 +:10BF70001D0F7FC2AE94D03EB0F8CFDAFF1F3E7ED9 +:10BF8000B9831F593DF09FC5F72544C7D976B9CE6F +:10BF90006A3DB31DE571DD591E0D3BF3D586B37EB9 +:10BFA000A4DC9937228EFA161C9DC25FBBADA17E20 +:10BFB000E6025C070D4B79BE808D453F49B2809FFC +:10BFC000BFB4A23F57A5F302F2B3ED403F1EE477A2 +:10BFD000A2FF0DF20FA13FAF8CFBBD17E0B987F0B8 +:10BFE000C769F54D3331CE7BBA26E247E63087DDAF +:10BFF00003F6D0740DBE6BD5B1B48BF880DB41DB9A +:10C0000072D8AD38BEDFE863B20D6F8B34EEFFCF70 +:10C010009C9F717F9E96E4FA36534F769C13F82AC4 +:10C02000EA18EE3F581148D3D119BD74959647F4DC +:10C030007717A529DE02782F6C97D3A5C934D99339 +:10C04000F3A5E8228413F0722BEEF7C2A09635E038 +:10C05000DFC23506EDDB8AEAFAE6BA43B84F30288C +:10C060009E07FDAEE887D2C04EC6F95F540BF8B10B +:10C07000F18DB7B4D691DF96C7E76BF96703C28F2E +:10C08000FD0BD7BC9BB5E9687FF17D6D5360D5583A +:10C09000E4FF5F29B1DBF0FBA8EB5A693D7C098323 +:10C0A0007928EEA34F42A368D7A2C564478C5BEC06 +:10C0B000217B94DD3E04EF2BB1FDB80DDC5E1E5FED +:10C0C000CFCF7FAD7198121F8B7CFCAF52EC4EAC82 +:10C0D000C7CAC31EBBBD950DCFE35A740DE2C7821C +:10C0E000639F165DC7F3A23F06FD015DF3AFBDDDA3 +:10C0F00083F595C53C1E8E2D1D3E4ECC1667F7254B +:10C100006DFA70E7E575C4273D52FCAB388EFB989D +:10C110009BFA7317897822B1CFC81F950E4FB5F9D6 +:10C12000DB52822F3A6C716CB42F137134F487FB9D +:10C1300037CC97E0FE9E9F63C2EC4DDF65680F83AE +:10C14000618D726D0B8F4F1F13078685FC43CD1ACF +:10C15000D9936AEDE81518E7026B2D8D71E76AA295 +:10C1600085CE8935E177F5A0849C88FAB097523F57 +:10C17000DE488134C80628D5994EF6F81F97F7DFB8 +:10C1800087C82EF7C4BF89F35BE3894FC0D0A737B8 +:10C19000C7C5BF83B0EE463C035C2F29D187B1DC15 +:10C1A000567FB7A3BECAEB835996423CE6B26837C6 +:10C1B000D1738438745B1CE41B7E1BBD59A9ECA0B1 +:10C1C00013D0E5315AB768BFBA6C74B9C0B84CAC7B +:10C1D000E99F71AEFE0D714E9ED5BF68FF0DDF94D5 +:10C1E00020DA61CFB7BA286DA99F48E9EF64B6ADF0 +:10C1F0001AEDEB9FB9D8707E3C2BED47FD0F72EA2C +:10C20000A742FEFF42E3E32D57740DF7C5CBCDBF28 +:10C21000CEB2FB7F979BDC2F038CB810E9FDBBE609 +:10C22000B9EAD662FBBCF83E35BB5DC67FD43F8E13 +:10C23000F67783F1FE3CCEACA6DA428071F3FF06BE +:10C24000B8EF3CA2527C8E651F58F839717239DD07 +:10C25000D3B913E3A9205DC962412C7C93C9E44F93 +:10C260007993FD2A38CD26275FD378DC2A6CB8C9AC +:10C270008F61C27F28F7EF48AA0EBFC6EA1DCEFC29 +:10C280002AB66434EE135775C14E5B427F90D3CF0C +:10C29000F15BB19E57B3BA16DC8F358B7554A3335F +:10C2A0006514E8C9B5CF7C6B06CAD1B7055E5F835C +:10C2B0007D94618B67BFCB9FD2500F9F7C72DA4D0C +:10C2C000B319B64FB514D2FD1436ACDF7545AB13B8 +:10C2D000BEF3C19F0DAFE5C718090E653FA7EB1070 +:10C2E0003ED1ACF84BF382EED54DC4CB5C54DF7934 +:10C2F000AFEE7CED26B90DC11F9FACDDA7FECE765B +:10C30000978D00675B281943B933B8EE3C319287AB +:10C3100092C2D75D5BF83CE54550EE3A4779E9B902 +:10C32000DB63DC0DDEDF892248B41F4E5F447654A8 +:10C3300003BF17F2AC1AFB67DC073DFB5F2E8601DB +:10C3400095CFAAECB08EF3922403F7D151FD7A2A4F +:10C350008FBEEC0AC9C562D160FDB717EDC3753A4F +:10C36000C3AD0A7F7C9F0BFB8DBEA32FC0B8846733 +:10C37000D5F4457930FE9CAF71BFC4DC77D22B1069 +:10C380005F570C2C55519EFFF4B1E76FC37EEE1A38 +:10C3900058A8607EAEE8E7CDEF3E3E83413FCF1E1A +:10C3A00008B034F99F521AEE93EE7AD245E7D5776A +:10C3B0007F3F407AE1AE27D6EE5D0CE34BCF040819 +:10C3C0009E394FACFEB69BE06BA27EEE7AFA86DC1D +:10C3D000FBC5BC3C808F67375B71A8E98B30BE7EA4 +:10C3E000AD9B7D1EED020B0F83FB65FF5C250FE10E +:10C3F000DA9F47F6C6205F2B50BF02A318D9E797F4 +:10C400000CB3FF59E5E6EBF28DB735BA4722ED3FA5 +:10C41000B48CE6D77B33CD57028AFC01C6BBCDADC9 +:10C420005AF5681EE62352AA0CCADF7844E2F3EA02 +:10C430009DDC9D538CE3776B3524D7F8F98805EFA5 +:10C44000FCFD7313B8AEE7EB792548F2F9DF3F4006 +:10C45000F2F99EFDAE34EE7F20A57DD002BFCB79F0 +:10C460002F8945FD12F0C13A1289903EB996E4DE5B +:10C47000BADE76BA5F72CF41E77A073C47D200FF57 +:10C48000DDBF76451663FE07DF09E2BD96D7FA7A6F +:10C4900082480F1867B906EBE033EF3BFDB9D8FFD0 +:10C4A000FBF943FB636C80EE8BDCD3DBC6C7CB921E +:10C4B00027AFE13FC60EDDB776BAB3EF47BD348391 +:10C4C000EE91ED1F35AC3E1CBC1725E4CBDD07FE1D +:10C4D000B2CB8471DF78E2F55D18C7BFE6A33FEF0A +:10C4E000FA0AEE8FFE3D4747B978CF77FFB0EBCB26 +:10C4F00080CF370FBA65E493B77EF49D6F3F04F9A0 +:10C50000B77E33A95282FC77DC5C5EBDF5F85F47ED +:10C510001BD0CF861F5D3906E7BFE1A9F963D8704C +:10C52000F24DA46F015FA56C7C65F9798D83D0DF36 +:10C5300018C83E2BD22CBA3CFFE4F3E311BE378F70 +:10C54000BAE9DCFF1E839FF3AFEB5D4B71BE98C76A +:10C550007DD3BAC7B6D0BE7F289ECD8BE4305FE7CF +:10C5600018F2BDEEC91BFEF98A2A4CD58881FDB1AF +:10C5700001D22FD9EDEE7919E879D9C8F4FB0BFB7C +:10C580004043BCDFF3581B1F378B7E6FE23F660EC4 +:10C59000A5DF0B43E8B76637ED899F1C3ECED7A2D7 +:10C5A000DFDAA73E7BCE7B746F65ADDB91F05B2B52 +:10C5B000E23D1F7047FFCB8DEBEE099F1926FABABB +:10C5C000538BA1ECADE63F8F67C01767D48165B888 +:10C5D000FE067EE4D6F19C7EF98F7EADA11C7BEB3E +:10C5E000A95F6A06C973E697C06E7B8B0DFEF5A145 +:10C5F000DD4EF739107FFB0269F443ACDB544B741A +:10C600005A97BA7E9111A4EFE4CF5897E27CBF2EDF +:10C6100075E8466918BAF93DF95C8EA60A849D98BA +:10C62000A1A3548DF43BBE10F96D24FA59F3D671D1 +:10C63000DE97DBE868AAB44E475A8F6F75BB158C3E +:10C64000D3BD47F8912CFBFE9E94F46B36CC3A1D7B +:10C650003CBFF884F71C35CF08FE2731DFF3ADE38C +:10C66000F3CFE793E1EB5DA1E7B3F1B6B9D94D7232 +:10C67000F87753DD147F745C35BEB111D6E3C08BFF +:10C680002AC5312EAB7C553586B99FF1FB2C3BE892 +:10C69000F3F552CB1868F77993EB91EC739EF8267B +:10C6A00017336CF859E71EF81DDEDF653FCE6114C5 +:10C6B00097F6EF39B41FBA67574E0AF5DAF34FBD54 +:10C6C000F76DD4276FED7633AEE778DCE06AE11FD3 +:10C6D0007CF5A9F776FD0DE36EB1B181F5379EFECD +:10C6E00012F2F9C312C67AB13F3E913B05EF33DD3A +:10C6F0000D75F1DC72F58FBF721DF229E6F1FC7247 +:10C70000B52FBE0CE3C3563F3C46427BE61E6FFF8F +:10C710004728875EFFB75CA4007BF3A9F76620BDBE +:10C720005E7FFA992928FFC03E34ECE77677DADF9E +:10C730006BB0D9EF77F776D279CDDD58CEEB4B1FC2 +:10C740008B358376388E8F76C9DD0773A339531CFA +:10C75000F5A89F7BDC03F7E13D70A06FA14C367D0F +:10C76000BA10E97CF77EE7F8D77AB8FEBD471B58C8 +:10C77000C5EB270B393FF451BBA51E2EC7ADF2EC1C +:10C78000F656FD9B3C258E7A56FB75E25C62881D51 +:10C79000EDE1E71B77EFFF70D270E7BE43C7E1DF43 +:10C7A000BF28313A6F638FE7D07E778D96BE38BF52 +:10C7B00082BEC7D04EB1F285625CCCA33DF543B1D9 +:10C7C0003ED77879FE6911AFBE26087984D7D3FFAA +:10C7D0003DE49BB5CFE430B4CFD6FE18EC25C0EBDA +:10C7E000DAA77F3A1EE9B6F6C71B89EE6BDD69A2B0 +:10C7F000F7C0E36E86713C6F3CFE2295BFA1A6C7D1 +:10C80000E3B86B9FCD396EBF5767A56B7BDDC2B9AF +:10C81000EA9C4F139E3BA9E8E74A935FDE25CEC50D +:10C8200060471EE911F16A3CEE722CCD37DB9EDECB +:10C83000E7291ED6EE6EC6F30C74747A4CA6DBCED6 +:10C840007915C6E330FF4F16BF696A5CC77DA686BF +:10C850007844BF8F126F45FFAF1A0E4D453E6E09EB +:10C860002FA17B3B1D15FA545C977B3CDC6FE18666 +:10C87000FEC93E3EDC45E7B29E22E54F8E73EA5389 +:10C880007E8AF363A5B6EF25140A47DFFD15F0DDB8 +:10C890002EEF42B58EF724B2CFC97F28717C980164 +:10C8A00037C519C0BF5CB89E6FC91C5CD23EF53756 +:10C8B000D6B9A992E0E579567182978BF57F4F0D35 +:10C8C0005FDFD9F4BAE5D92D7D7885F99667C792EF +:10C8D000FFE416FFA43FA05CFF21CA56DCCFE7F1BE +:10C8E000F8A4CB9E8DDDF04F90FF5C6D19C9AB8A2B +:10C8F000DED8B593217F7BED44F2C3BD20F8FCB6B2 +:10C900006ED954815E8745FC9BF92589E0FF3CBACE +:10C9100014A0E17266687C739DA2FA2B586F80E7C1 +:10C920007B0BF07EACADBDCB8FEDD74B745E77EB60 +:10C930007FBD7C25E2F2B72F9FA090D3CFBFC43438 +:10C940001F8CBBFC49A385BB53447FCF427F72A69B +:10C95000BF0C1EC5BB068A87F092C19387F0F69B79 +:10C96000C1731493EE97DBF04CF1D5169E6F091C42 +:10C97000BD15F1734BE0E2C32C38149FD9F646364F +:10C980007EDFC122D067FFCB133DE981F2A73DD105 +:10C990005398AEF10C8C574AC88F7406F3EB5CF1D8 +:10C9A00009A32792DF695201F25DDFF0F66C663C65 +:10C9B000BECE7EC32261BE8FEBE0F310EF8DFC860E +:10C9C00071B9FE672C9A9981FF378ABF15E13BEA5E +:10C9D000FB9E8AF6DB6D2CAD62FBCFB17E15E99232 +:10C9E0004DB7152CAA61F91D2CDD82978200DE8FD0 +:10C9F0003C05197859511FC577B1972EEC9ED690FA +:10CA0000D4E3A1D8821AC6E1AEE97FBB01F1560397 +:10CA100060A03E44B2E07A3E65D1B58DF357CDB10A +:10CA2000B31FDAEB3166D923FC9C62B03F4F07DDC0 +:10CA3000E3B5D573E81BAA270DD70FE46D711F432B +:10CA4000F3FCBE4AF6F71A4F90DEC1C8EEEF533939 +:10CA5000963C83398C46BC5A7FBC9F47F3B9DC5E59 +:10CA6000A1C05200BA5D966338EC03F8DEAA5666A0 +:10CA7000EAD584985204F91521104D50FFC46395EE +:10CA8000BFB8D41819FF351D1FBB8D61F40E8B3252 +:10CA9000233483DFF722BFEC4F22A6DB95392FFF2B +:10CAA000A4FED47C16A134C462945A710F6196A47A +:10CAB000B490F5525A84FEF389E8471FA0D460BAB7 +:10CAC000CCF998AFA31216A17C298B517AA098DFDC +:10CAD00013382179237B86D117A0AF975C03E51B20 +:10CAE0007FE5A2F3FBE53925C3FA5F5C9E6BE72483 +:10CAF000ECF7AC1EF1D0FEFCC06683E2CBACEFCB12 +:10CB000073B87C5B9EC3ED88039BF9FDFC138F78A3 +:10CB1000227BA0B79301A6E5C1B8273B7F5D82E7E2 +:10CB20001D563D8B3EEF1F7FE6523C97989E13ADFE +:10CB3000C921BAA789DF2CBAAFF0F8B95FBE437D2F +:10CB4000C3AE3FD49CD85D58FFC8F7BC6477DEBB4A +:10CB50005D22BB931912AD9395824E8FE6F7BEE628 +:10CB6000C2F5B0CD6DE07A58D9E13E4EEF9424AFD6 +:10CB70008CDAFBFBB298074B7E83CE8F579E27BE85 +:10CB80006F252854E4BFEC7E181B9787F63AF940CE +:10CB90001CEB99FB5DAD77ADACEF1EC6EF71001BD2 +:10CBA000913CFF975B6E5ADE8CF1473D6ED2B36EBF +:10CBB000B10FDB2EF056B08DC5B1FD8332C7DF5902 +:10CBC000D15F478E8BFAB3EA6DB7E61365D97EF273 +:10CBD000ED88376DDFCDE25D197EBEF5A0965C8AEB +:10CBE000783CDBCCDF7399BCEFE6BB510E4E4EDCDC +:10CBF000771DA60F48A930EA7FB3DB1D413CCEBDAF +:10CC0000B4FA6DCCDF99D0284E6C72428B225E7BD9 +:10CC100071FD021CE537D536A2FECB9D632E43BFC6 +:10CC2000CBA47D5A04F30583F151BA978C8083FC21 +:10CC3000DD925A81C3EED4FCDC73F90750ED988E77 +:10CC4000B8332F331DF2263F2B5F9855BFC4517E5A +:10CC500011CC612CC8878BFC2C1D80F440A33917A4 +:10CC6000F5FBB61A46EB671C2A3EA0F3450A33F1E2 +:10CC7000FD223CE6F0425A0479DC7A42397389F2AB +:10CC80005C48F7CABD8B90F887051E7465E0C54403 +:10CC900031AEEB56A9CE6F9F7F32689FBF157701EB +:10CCA000FD30ECF76CA25247BB32A5B17B119EEE72 +:10CCB0001E37D1A522F1EE3294E793F75D7527D2A6 +:10CCC000657EFFFA9F8E03FC9E3118F93D42CC0C25 +:10CCD000E23D0E9690E9BCA1A29CA554A877000164 +:10CCE000C57A292D85F7D870A9E7E4536A06308DF7 +:10CCF000C5AEC1FE60FC28F2754579BA04E939F980 +:10CD0000D89D6FE2F77E319F4799A9A39CE94EB960 +:10CD100018D2FF9203DE3D28145F78C59DFE0CF407 +:10CD2000DFDDA9D1BEAB7B2AA338C22D6D5EBA4729 +:10CD30007CB9D7207EDCF261742CCA8FD29896968B +:10CD4000A1DF77FA8BEFBA83217CC9BAE7A0FDB6E1 +:10CD50004E2DB287E3C1F454129E59B012E3C3FAC8 +:10CD6000E724E8E03E3A76896D1FD9A5466FC17881 +:10CD7000A337723E5A80F15D5D39447276D1D67028 +:10CD800033C67F9D7D0A6436C68D5AE76BE5C9A020 +:10CD9000FD7DA8BFE4488EB8CBB3E27D2C569A0C3B +:10CDA00072BD950CD27B50AFB8097FDD4F79687E9C +:10CDB00067F74D2BC17D5D77E78EF148C708CE0F31 +:10CDC000FA39FBA1399EE69772A7F1BEF9035A9F83 +:10CDD0008CEBDB7C9A913D7F06EF5F820D78F69FAE +:10CDE0007E7B621F36F1E60DC665235C0FE0BEC494 +:10CDF0009F81A356E7E7C5212FF77FE67AB9DD1DAE +:10CE0000F08AF55D31647D07BCDC9F9D4E40954600 +:10CE1000DF75E4CF2EF08A734F0F8FFF1EA65DC81B +:10CE20008BE7678B6F4D639C9DD50EE3C96334FF21 +:10CE30006F2C437FDF994E0FF1D9999E3185C89FA2 +:10CE4000D6BCBB91AEFE0C5DAD794C56581ADF07CF +:10CE500063FE4809C65B7DCACBF16D95430F259FE4 +:10CE6000B5D1E353629E0F784579396F972917ED55 +:10CE700083E2BE71697639C7CF0BAF5C7E761FA7A0 +:10CE800017C1DBDDB9682CD2A9EB43BD90E04C7033 +:10CE90003851FF201D07DF5B28AA22795BE4610976 +:10CEA0004FE570F267B3B8671D223BCE920323DAD9 +:10CEB00071A2DE79EDBD3028741B3DDC09531B6B7C +:10CEC00064DE41F2876257215D8D527D1E7EBFD2A6 +:10CED000B598E237DC225E36BBDF071B4004C07A20 +:10CEE00079A0C1836FD4B0B6069DF2DB1AC294A6B6 +:10CEF0001A0CFA1E17F8F4CA5CAF6C15FAA44DA40C +:10CF0000377BB93EB152ABBE65F728E5FC3C5F29E3 +:10CF10006FE1F1A5A5D67B5A83E7E571E42B16678F +:10CF2000C3C797823D83FCD523C557E2FC8A457C65 +:10CF30004071829F9BEF167CF256D6FB6F6B041CF0 +:10CF40006B04BD4D61075AEF31B98B4CCEBFD63B58 +:10CF50004E4A7CFCB9DE0701FCF74B36FC67F01E3D +:10CF6000DF8870D526F3E6A17B31A794C7715AF804 +:10CF70001F89AE16DEF161109C5F6831BF476FD12B +:10CF8000A5AD214EE5DB1A6A294D35D451DA23C50A +:10CF90001288AF50ECDCF36F13EB7F9BC0C385CEE0 +:10CFA000D3CC8925BD625F617FE7EAFCFC7961F53E +:10CFB0004E607C2FCCE314C6F3969DFFFC6FE30319 +:10CFC0006BC83FBE5D8EEF43B8DEFBFA3526BA9FD5 +:10CFD00056744C25FE01BBB007BFD7E41AEFD20D43 +:10CFE0004C73E3952F41851AB7F134E697F6DE745A +:10CFF00025BE875833C6B80FE37CFFE0BDEDCA10ED +:10D00000E627307AFFF0AF5B5B9A31EE74BD37FAFA +:10D010003D2FD9976A1EBED360D96723CFC7F94E7B +:10D02000430837D39C4FE2F6750AFCF1C3E1F9C31C +:10D030004FF37C67314B9DEBFE24BE3FC3F9C02309 +:10D04000E81F7F01E73BAA94F3CBA8C5E7E6839FDF +:10D0500009FABF24D257BC22BE56F04150C43767EC +:10D060008FFBB2A8BF4DC83D9063AD767967C93FCD +:10D07000AF8BFBD10E5DFAD0ADA8CFDDFB2E2E41DC +:10D08000FDF7C8B86421DE9FCE1572E37EB52E8C05 +:10D09000E77B1545EF2EC3F7D82AAA59AA2C886931 +:10D0A000BAA478CA3F8EF7B9DED8AB9C7E5C5EFC32 +:10D0B0000FF4F736AD0305FA0BFCE3FD01BE480F94 +:10D0C000A0FDA609BB059F346391C8A5FF13FDFF12 +:10D0D000FF6A3F8AC5CD30D07B9415CFD4B199A1DA +:10D0E000FE013E2DF441BF395DDD26F2BD8F0DFC02 +:10D0F00004AF805AFCA94D00BEB1F15DA58FCBE90C +:10D100004A9F15C700BA0CF4C1C5F40F9EEF80FC0E +:10D1100024FC07C88349E23E4A394BD2BEF652D6B8 +:10D120004B6905EBA3740A1BA034C27417A6952C97 +:10D13000E212714A33305DE389EFC6AD50B9277E04 +:10D1400019C289714A920BED9A75B3703D55F9ACCD +:10D1500038F4B463BFC9C4F9C0F9F69FB92C5AEDCD +:10D16000A3F623BC9FC946BE77139931F4DECD27C1 +:10D17000B81771B56FFA30F7222E33DE96E986FACA +:10D18000D3241FF327198F633EF0C077483EE65F34 +:10D19000CEC82EFE5AFBBFBD80F2505D144D130C5D +:10D1A0000936ECBB5556AA8EE1F17189BC9B748A95 +:10D1B00093F3F0F32E45F86FAC7AB5E8742C18FAB7 +:10D1C0006ECBFFF438D9FD5F27C7EEF2115EB93D93 +:10D1D000F1359F33BECF1ABF29C47A5DA07F5C7939 +:10D1E000CCC4FB72D9F034FB96F502270CCEC31ADF +:10D1F000CFE5E7E3FD1D71825F43B886C60946AD02 +:10D2000038C1462A17FD29BA334E301B3F1D62FD37 +:10D21000CCF645B7603B5B7C5DBB6FFAB0F1751D2A +:10D22000F81DF8B493E367783E3DF4D213BF980538 +:10D2300072DD9BC7EDE4046E70F13CACDB45F79406 +:10D240005FD7A3BEC9C08FCA7D251113D7A9F08FA0 +:10D2500058F71F954BF725E741F996087F1F614B5B +:10D260005F8917F7057B5A5DFC5DB917582F9E93B0 +:10D270005A7E8C09C151346EFBE4D363C9EE7EDF64 +:10D2800045F162CF4D7E772CDA53BB5FECA5F7AE4C +:10D29000DF9DAC6918577338C0E31DDBBBC5FB5F6E +:10D2A0008CC3B7F5C158CF565B5CCDEAD012BAAF8C +:10D2B000F5C38042F5BFB561C9CD18375E1346018D +:10D2C000417877F1732D2B351DF96C7C07C57952A8 +:10D2D000F6F76D416E7735572BA4DF5756C929DC19 +:10D2E000FFAEDC29D1BD0463834CF136C6865F2DC9 +:10D2F000C272A36A9E8201F746784052E0FB4B3E21 +:10D300001EAF3361C33C8ACFA9494A543F7B9C97E7 +:10D310007CDC9F3361539FE847A658C809D00FEEC5 +:10D3200063CED7FEB08FBF7BD829EE436E55EB5A44 +:10D33000E623DEBE952799367E3D26E4F11EE89F62 +:10D34000C70DC5E8DD836F0DE6EB341C6FD72537BD +:10D35000CDC373D65D0F72B9E5DFF94BCF2CC8FB97 +:10D36000531CBB86D97F0BC2D95CAF119C5BA53A1D +:10D37000F287B74FD6AE45FA181D4007895282771B +:10D38000EB25EF4A77423AF130EBDD0EFCF1D98024 +:10D3900087E09DD801F65300E71B91F1FC7982A844 +:10D3A0009F3DBF2B82428F087E9C20E46959ABCC05 +:10D3B000E9B089B76B577BC3A36DEBA9218B9FB2F3 +:10D3C000FB3DE0E3FBCF5D2ACC07E0D62A3486EFB5 +:10D3D0004AC8E1D83CBCCF50D32547AE8271DADBD6 +:10D3E0000ED17BF2ED53B9D4DDFAA55561D45BEDD6 +:10D3F000D35921C27D46F0A5D9CACF89B2C78905C4 +:10D40000381FBDD625D33A39B1F9F458E48F5D0100 +:10D41000637CA802CB399F9C08F809CED7BA2A7B37 +:10D42000EBA1BFD7FC6B464B86BD1FCE27A572B2C2 +:10D4300010EFC51575682D8922C8E33A06FBF79AE7 +:10D4400060B005FD20671E7389774EFA72909ECFFB +:10D45000A5464D8BE03ADFA419B836774BEBAFC346 +:10D46000F5626E9629BEE74CDCF25345C84F95EA4B +:10D470006A0CA29CD85BA554229EDF0DD614F961DC +:10D48000DC9E8E515EFCDE969025FC5EDA59F93307 +:10D49000BC67513A3D9FEAD11B6F33F0DD614E9F6F +:10D4A0002DEFFF6007D9FF551ED623CE17504F5AD8 +:10D4B000F1ED41363016E55AB0D54DFBC040F2E8EB +:10D4C00057503F065ADD74AE0AF5FCB5F93C1D8D88 +:10D4D00069979C9E81E5E17FF902FAC57C7D727AAD +:10D4E0005510DF4F928FAF803428DE770F88F3928C +:10D4F00040B5ED1C82FE9FBFEF68C11728F752BBF5 +:10D50000D72DFA7558E7637C2EBBDB26A550EE2499 +:10D51000E4D40EBAC7378BC789029E0AD12FF5BA59 +:10D52000E54710F984F0D3E2FD7ECCFB8E0C2CC1D4 +:10D53000F9F83A4EDF8E29F45788719FBED6FFFE68 +:10D540000AC12FCE6B7C554E381F0B4617FA855DEE +:10D5500011C5FBA316BEBAF83B9A073673F85E5D99 +:10D56000CBDF9708E255C57CDB3CEAAC77FCF9BD24 +:10D57000BE8B10F7FC0DC52A5C3FD6FCDFE8755169 +:10D58000FD8757F27735DA9F628FE1F968409C0F8B +:10D590000DEA87CFF2773902152DEB894E59785D68 +:10D5A000E9E77EADD71F9B48EF9D59F7B2ADF18BF0 +:10D5B00070FC924CFE61C6E179FC70FEB515D0FF9F +:10D5C000CE352553D15FAC88FD0BFD019D42D80EB1 +:10D5D000CF4D744FF41280A75CACA3C7059E534790 +:10D5E000F4E750DF1CFAD9AD5E8CEFBB2C10A6F22D +:10D5F0001EB384FB5B193F57D2C578270C2348F133 +:10D600001B1B18AD737DA714C5FB61E3C242AF7449 +:10D6100048844F8BFE2B16E8447F3CCB9767A0B71E +:10D62000999151AD776C5E4FEF6C8289590DFD9CDD +:10D63000081B41F4FBBD5A2F539CC00A66C8647C8A +:10D640002B4C46FB6EC5261D7D2D6C57786033AE86 +:10D65000BB574DA6A3DF1301C37E8302BEA0E8170C +:10D66000F82788E73A251DA3A89D850FF49DD2FDD4 +:10D670004C93511CC8093DB20DE13CB553A2F7BC17 +:10D680004F1571B87BBEC852E83FBEA3D55C8F9DD5 +:10D69000AF0EF7BF88F27C758566F0F919DB10AE26 +:10D6A00071ADF9D47FB0EBE98DE8FFBDA302D26084 +:10D6B00066BE2B055C2B379804D7C9228EA79ECD5A +:10D6C0008CFCCADE71A924DEA35ABD09E643C43529 +:10D6D0007E86E318F5A30DC25B8CF30990C2FC189B +:10D6E000FAC95BE4E49BDCA8E688EF61D53CAFE0D7 +:10D6F0008BFA38AE80CB9A7F9980A70CE43DD2ADEF +:10D70000CCE4F3BB439C37CAD80EE65356CFE7B1FF +:10D71000B2CB395E47F9BE3E7A6F6D8366481CAF67 +:10D7200006CA2BBFC0ABBF82E3D5BF418C1BB1B5CE +:10D7300087F2932F3213FDCB52BE87E3612AF77F26 +:10D7400083F1BDEC4E5C775F77931FFED4873C4E30 +:10D7500075F7546D7FE330E7A6BE23DC0EBCA82E20 +:10D760006BFE0A5817367E00B917F5D03D59E3F520 +:10D77000D5D07FC094293E7F6CD6392AD6CB03E61C +:10D780000C6C1A3D0FD767D0CC9FA74DC9D85BD37F +:10D79000EDE3A36BFF25FE3EACEF482C9FE4E49144 +:10D7A0008796A0FF3A78387903E60BB2FB3F5247E1 +:10D7B000F131938313F9BDB5C390C3FA91D35FC51B +:10D7C000B445F80F7D38032EAF0F631AF033D357EB +:10D7D000497953AAC479296C017C3F30B78ECE15A4 +:10D7E00003973192FBA40F78BD34A6DBA688EF47E0 +:10D7F000E2F93AA586CE539DD296ACDF8BE914F5BB +:10D80000BF1190877DA73150FD91DBCE0789401F66 +:10D810009DB3986D6ED24B4DAAB1AB06F24D4FF948 +:10D82000D1E3CB1EC94B16E2FB3C3384FD678DC7A9 +:10D830008A6E24BB16435F241206FCFECDA581F23E +:10D840006EE4F7C9D13E793DC92F1EFFF7ADC3DCA9 +:10D850001E6E667D3915A83FC232C373BF57859DC2 +:10D86000DC527E1FC553A64AFDF496695180DF073E +:10D870007BEE128DEE27EE3D5442767A4A49D62150 +:10D88000BCBD500FD7F9DE7F8D4FC0F708F6BC60E6 +:10D890003C86FCB8E7C5B8E37DC66C7B17D02A0B85 +:10D8A0003B58C238AD6CFCF80A4E48F8CECA84FA30 +:10D8B00094897679B0BE9F7EEFC5A8062D7139EAAE +:10D8C000C93E13F3BE10D7AF4615FF6E548814EF50 +:10D8D000C38FC138A438ED5F2D3F7873684F3EDAAF +:10D8E0000B1DFB15A27155F70D9E7F4279D525E3DF +:10D8F0004BBEECC99465A700B7D3224CD1FC4F4571 +:10D90000E4790168B7FB655806506F77D7BC51A81A +:10D91000574692FBEBFC97F07DA0C1E55648C869DD +:10D920004B0FA474E6C538325F3DD3719FE113728B +:10D93000AC6CA724DE9BE27A224FC881BC7A2E5FB2 +:10D94000C03E6E44FAACDEA00B390CFA83E439A376 +:10D95000B8B1BC9D5C5E83FED84A7A05E5BFC4328F +:10D96000FAA395EB8F0942EEAFEE107252C8334B1B +:10D970002F3185CBE7920A213785FCCD15F0E81DC4 +:10D980001C9E5CD40F90EAAD5C1E538CD9E88C5E73 +:10D99000CAEDEA25B9F715BFC1CF232BB81C1BFB75 +:10D9A0004BA5B1DAC8D005EC15E35CEF4834EFECD9 +:10D9B000DE81F26665B946665DD9CEF58B303E6C88 +:10D9C00045BD4156C48AFA014906BC3E11709EA36A +:10D9D0005B76DD840A6E8F9F51A21ADACD672271C1 +:10D9E0008DF693022F2D0535DFC679FEABB0CF59EA +:10D9F0005D2DDDBF20F90E226642179B8774FB6206 +:10DA00009BDC88F66599D94B268C05E7BD81208F74 +:10DA10004BED1AD88CEB04EC7F1DC7355A972C9A26 +:10DA200044FB439919068E9F8E4EA2F199BED9C828 +:10DA3000B4BF2BE0A3F61336A5E81CBCA715F6313E +:10DA4000C5B86F4A338C1F981091232807E44D46C0 +:10DA50000BAE8716C97808E3A1CDC91AC977B0FB08 +:10DA600069DDA7C66A7B909F5808EC3DC0E7DFC41C +:10DA7000FE8AF603608F33FFFE85688F5BF3D30465 +:10DA80009DCAC230BF8ACCFC2664CDEFCF3E31BFE9 +:10DA90004DB1469A5FD785CDAF4C9497859EF0499E +:10DAA00086BD1FF33ADA57A65C3ADE2B365A9F8BB7 +:10DAB000123F423BC318CA072D889F026CCFF8F96A +:10DAC000E3103BFADC71408F8AF7CFCC294CC4EDD0 +:10DAD00065E93FE1E7F165E9998783C58E7820CB59 +:10DAE00005F0A8C2D7EBA3158C1E344F04B8DD8D0A +:10DAF000D7FD30DEC7F7986C8E81FEFC8F71FBD8A6 +:10DB0000D7AB98936C7199BEC8478E389FB7FD6CA0 +:10DB1000F8FDA4D847967571FA4E08AFFAB6CBE671 +:10DB2000CF5F11E0F7DA5604B8DF6942579CF681FF +:10DB3000BBAC77EE42728AEF1F791EF68FA9ABD08D +:10DB4000AE6EEB4ECEB3ED1FFF26FC4ED9FBC832B6 +:10DB5000BCE20D2848A54ED3FEDA84FD28DE7B49C1 +:10DB6000998D8577211F98B12AB4936B2ABE7DB415 +:10DB7000065393C39BC3A224D7ADF487627F6DC9BC +:10DB80007B26BE67D3D98AFF8C1C4A8CBA2E84F2BE +:10DB90003A44712873DE5642B110BE4BC0F3C7033E +:10DBA000FC3CD0D52FD37BF3AEB446FB33CBFFE5A3 +:10DBB0003AB625FBF78D8E0770FC379C7EB3C1DF2C +:10DBC0008D783046FBF632E13FE94DCBE4374885AE +:10DBD0006205767CE704B97F47ADD0E89E5CFB54D4 +:10DBE000E7EF59FD2DC0DF91FBAB804F4973F8B6CD +:10DBF000A27E05BDA85C3283E4A7DAC7BFAB5D8C0B +:10DC0000BFEF3132DCEF07902F3E70FA0B2DB801D9 +:10DC10004E2FD67B41D0DFF26B791FE4FCE24FB987 +:10DC2000E8DEFE96AE18E9B37695FBB75687845FBB +:10DC300061E7F5F3F0BD8671E857807E9BBF98766B +:10DC4000F8155A546319FAADDBA7737E4F15C8C493 +:10DC5000EFD9F204F146FE17180FFD4DCD2C15A398 +:10DC6000FD3CF482F2694F2BC767D9069667C767F8 +:10DC70004190DB47E3043EB3F9E1A300975FBB2685 +:10DC8000DFB41597CB2E84BFCAEE17E1F2B126C2DE +:10DC9000E1B7F8B8BDEDF837515FB45FA245B87F82 +:10DCA000BF7729CEAB65B3467AD2C23FAD38FB3BD6 +:10DCB0005445DC9E505A055FE1EFF7140F4B974F28 +:10DCC000051127EF0FCF4F29E1077EB2EF5739F14A +:10DCD0008A91ED51CBEECCB62BCFA2BE44BB560100 +:10DCE000C3A93263675AFAB2454AFE96DECDE9D13E +:10DCF0000CEE1F48115D5D17FB697E8F2ABDDE4A61 +:10DD00001256263F2F177C784AD879CAF6CBF9FBF2 +:10DD1000361BB87C52774AE7E3C3AB83E7E0C333F3 +:10DD2000965C7EBF984547919DCFE56D35DFF7073F +:10DD3000523C1FD8A4113F06DE2FA57AD9FE99F6D2 +:10DD40001CCE67816D1AC5EDE09FC33F23FC329660 +:10DD50001F66887F26CBFF32E897C9F2D7FCC37EC7 +:10DD600019E15703BC931F66F74C2382FBA08CBFBD +:10DD7000E5FFB93FA63EF877F8635896BF25DBBFAD +:10DD800092EDAFB1FC2BF867F7DB64E36B2CC69127 +:10DD9000BAD0DFF27C7036B43FB146A678F484F096 +:10DDA000037ECE5FB9D09C03FC9556083E6580FF8C +:10DDB0004E88DACFF77DD63A53987ADC2ECF87E1BA +:10DDC000C38782E790E3CF083E3CB059AC2B117F6C +:10DDD000FBE8634F78F01EF623422E0FEA6BD4D394 +:10DDE00036BDEC473D1DBC003D7D8171359DD58C18 +:10DDF000E69B2BE61D14F3CE15F30E8AF9768A778F +:10DE00000183739CFBEFCB0E66EDC745FC4FA72744 +:10DE10001ABA1ED7D71C99E2362F3FEAACB7A8F83A +:10DE200085D00D0062EE4C59DC6312EDFCACE0468F +:10DE3000A46FB5427EC3D9679CED32F08BFA3A8766 +:10DE4000EB33EF9FA75E88FBD7B2E19FEF710F0F17 +:10DE50007F385AF0D95006FEABC2CE7A4B97BF50EE +:10DE600070F370F017B1D14BAB32F05F5BEE3E3721 +:10DE70005C0687FF9FABCF53AF7478F86F583402BE +:10DE8000FCE57D8BF0BECACD4BCFD3AFA0EB6DB51B +:10DE9000E7AEF7F9FAEC71CC61E3F00F34C66A3102 +:10DEA0007E6CAAEBCFE125FEA1FDDC2FC9E21D8F20 +:10DEB00001668F53F4E6723D7AB2416751DBEFFCA5 +:10DEC00075764C5D88764F6E726E0BA62B3B46B115 +:10DED000E8307006DF9FC8A2D3ECE3A5B87E9AD9DC +:10DEE0004F4671F0FD8BA9FC648387FAC7F1713F3F +:10DEF00037B47FDF08FD8F3D4FFF45546E3FDFC6CF +:10DF0000386BEB7CDB95FBEC6BA8DF9B8B3403ED74 +:10DF10000B2BBE3B7B5DAA451A8FBF0E2D880EDEF4 +:10DF2000FB017BECE25CBE6F5431AE1ADF05DFEF24 +:10DF300032F96FF838EB35C956DC603C6CC7EF94AA +:10DF40005C6EC778520AFF3D22254EBFE369952FCC +:10DF500014FD374911FA5D5F739C46FCBBE50AA7C7 +:10DF6000FD788DA8372B57EC43C5EFA7A9FE9F1C62 +:10DF7000C57DB46AC5038414473CC035B831E7F1A8 +:10DF800004748FC6C2CB48F59BAE6024E79B0A5849 +:10DF90006A73F185F73F25D7A074F25E8D3B352E6D +:10DFA000D2E81EBC35DF2699F76BDECBF759451E4C +:10DFB0001ED703F64F94EE0D499E9475EE82F7C27C +:10DFC0002E12706E2963FBE4CB287EE5B09BEE4FEA +:10DFD000D485712F65166A14375F1AE6F1922DDB2E +:10DFE0009989BF7BD0D2EC37F17DA1964009FD5EC7 +:10DFF00049CB877CDC96CF19E46766D1A8111A9DBE +:10E00000B92F81EDF2B1DD54516FB94EF15F635913 +:10E010005F0EEA2DABFF21F1F3FA85FD7E4D499BA2 +:10E02000427113EF306F04F9AF29AFCE8DA1BDF56A +:10E03000C919E5CCF6BE14FE8E9FFD1DDCC408E7B1 +:10E04000EDD7E6737E7A24AF8EDE3D3F20AD5F6A6A +:10E05000BFF7F07B9DAFE7FFC8E5FA8C55C53C3CA8 +:10E060002E29F12B8C936AD16503FD432D7AA307EA +:10E07000EF5BB474C8BA0478D81B5EE2C17D9BD94B +:10E0800025EB65946FA4FA26D4473A1ED66BE8DEDA +:10E090005DA2439E86F74F01918BA75A7E28F8DB3D +:10E0A000DB2573FA96B35419E0AFA7ABB2107FE744 +:10E0B000EE627D09F90F0E77DE27A3DD017A8F8DE1 +:10E0C00091509FA74DA48FE2FA208ABA3A59255F52 +:10E0D0008FD747F60ABB68A16B4EE135507F5B4A8C +:10E0E0009171BC43DDA78FA8E8C7AE92E9CC3EAFE3 +:10E0F0009FBFF3F2FD5CBE0F57C4EF677576F1FD6D +:10E10000A777A646E77CFA02E77B06FE39CEF769D9 +:10E110000FCD9C41F57BBA35FA4D4B6FD6FDE89E8D +:10E120005B8CF1BAD8DCA76764DEEB3BD2F66B867A +:10E13000FE1685D9FA47BBA83C42EFB1B10E3FFDB0 +:10E140002EF37761DDE2F9C07E392AE37ECAFC1D39 +:10E15000BF1FB76F7B8BE377105E1AC5D7F7D60664 +:10E160005686F136E5C5728CCE89053EBC7E1E6FA3 +:10E170006DD1373B2D695B70EE77283D131DF76637 +:10E180002CFEF296F7C9F83E48CD93FA541FC00F03 +:10E19000543ED80F706E9B3B7E2A6E352C7EFBC999 +:10E1A000CCD33BF077B6EF3DE0273F6FEE316E57B3 +:10E1B000EB221E66DBA15B18DEABD7EB4365F81ED6 +:10E1C00057AE31BA0CDFE752CBF9EF6578EBB532D9 +:10E1D0007C9F74E1F72B1CEFBC67A7F737E865F865 +:10E1E0005E5A7B83A70CDF45BB5FEC8F3EF5FDC518 +:10E1F000F47B8356BD7E210F07E757EF8B246C7AA3 +:10E20000C29FC7F107FAC6F17BB83B04BEEE1FE11F +:10E2100077DCAD7256D57B14FD207B1FD474B4DF40 +:10E22000E74EAE223EE9ECD074E4C79ECEFF6EBD51 +:10E230001DE5D62F5DE40BEC797046E12ADBBC2CA2 +:10E240003E1E324FA16FF78F351F92286E74EFD5A7 +:10E250001817B53FC77C8847AA74F33C0A28DC47E7 +:10E26000B36F5F8DEF16EC47C15D08DBACDCB557D3 +:10E27000E3BE7A7F9E792BBE173BCAFD60DBE19936 +:10E28000902F337F8BE7ECD346B1F4025863FB8BBE +:10E2900079FD8B467DB485EA4FE67963D477AFC6C6 +:10E2A00038ABBD623EBE6E8DAFDFEE443EAED3F600 +:10E2B000C9A5E3F1778BFE2FB8D79FB5008000008A +:10E2C0001F8B080000000000000BED7D0B7854D57B +:10E2D000B9E8DA7BF6BC924998994C92C97B26241E +:10E2E0001030C1490869403C4E1E60784807440D13 +:10E2F0001675781A2090407D40C53240848001A375 +:10E300008D881CB413625AEAABA1B58A88ED086AFD +:10E31000638F9E13A945AD940E9143232A466B95B6 +:10E320009E63F5FEFFBFD6CEEC992480B7F77EDF63 +:10E33000FDEE77D2CF6ED67BAD7FFDEFF5AF35BD6D +:10E34000C5FD4E6665ECBDD695DDA634C6E225C694 +:10E35000D824F82FF0DD1A6F2163BD984E67CCD01A +:10E360003AAB2600E98AA2BC87E69732B6A347EF0C +:10E370003142D18EEEFC9B19A43F6F315819D4ED78 +:10E38000C80A3B7D50EF1BFCBB2AF2DDBEC199DF02 +:10E39000A267AC09BFF991FCF80267FE93058CFEF9 +:10E3A000BE81FFF4D6E874871476320F63D7C3F8C2 +:10E3B0000ACC6FA73EBC1BD353ADA3793A21EC9492 +:10E3C00060FE65D61C9E4EE6F3652C95E6BF338D48 +:10E3D000A7B35BED34FFD87974E83DE99EC24B9852 +:10E3E00087A8F7BFBB8EE1E070A9E3FF7FDCFE46A4 +:10E3F0008FE5E2ED1FB10272255FA01FF7A5F5F3CF +:10E40000CFE2E3FFB4FFBFDBFE7A6B2EEDF3C5F185 +:10E4100001FE6F02632364E6EF827D6FF1FCC2B4FC +:10E4200040C3777E9324533FE1118CBE8C75315FDE +:10E4300002F0B36DCF99FC50BF737D8FC9AB63AC55 +:10E4400039D8649F0EFC6B67B3CE23B9182B289A7A +:10E45000F3BB5C4837B5C95606E9A6AFDEEFCE750B +:10E46000C0B75CB66E82F40EEB2F287D4F8BEC416B +:10E47000D6D8E9906B8230EE3D8E39718B2C91F1BC +:10E480003BCB211FC769EB752ED5CC6BA7C46ABBEC +:10E4900020CDD633E6857EB667E6EEDBEE8E943F82 +:10E4A0009E24D1BA76EEF8457339CCA3C32AD39A09 +:10E4B0005F9E38B5FB2A9CA7557619A1FECBD6DE08 +:10E4C000E69138CF99B2C708F31A25D2F933150F60 +:10E4D00024D9686C04FD275A593004F53B9AAFAD36 +:10E4E00034437A4B0D704FA89058DEB506F9B6CD7F +:10E4F0006A613A5C488B9DB114C8377118BF54B833 +:10E50000B0FB2AA8DFE984F1A07C0BF36DC7FE0302 +:10E510006D32EB74519584E2321A82FEA6FE1C160F +:10E520008B72A19C05717ECA89691FB0718CAD493F +:10E530007213FC1DE105335922CCA365CEF491D0B2 +:10E54000A8A55C613AE827C9A7F4864D917DB5D5A9 +:10E55000405AB3CF163DF362BF962B0DC1007495A0 +:10E56000C834F5719C98B40A474BA1293F4FD3AFEB +:10E5700075B2352AAD30EF7FDCED26BC988E8B6806 +:10E580007A5066B80F1DAFB0C7D8E5B0EE2E85162D +:10E59000B7C361084AB0FE263D8767E07E25D809EB +:10E5A000E90F3778263701DEB2D687086ECBB16F18 +:10E5B000584FFDFE9EE93658E7CE5299EA6F6D92AC +:10E5C00083A3512EC27F76845F8225D8E9A60910E5 +:10E5D000BCEE497006B743D981A70C940EE45B8268 +:10E5E000F990DEC6BCB90CF0B3FBE9E5AD15D0CFB0 +:10E5F0009A3774246F9B764E7DE77182BFCF391BAB +:10E60000F079BFDE5380F2DB6B776D3383AC3B2058 +:10E610004B5C7E43162B87D5B51B843C3FFB5A755C +:10E620001E8CA7CA77F6D936948FB84C5ECEB657F3 +:10E63000C0161EA854D3E7A77927637F4CC853C6DA +:10E640006458E30183DAFE97D3EA3269BC193A1BB6 +:10E65000E0C703FA6D96B4C87816DBB4D702305E13 +:10E660009789DD4B706B6356849BDC16881F0769A6 +:10E67000638B3CFE6A5887312427CD443CDB2197CD +:10E6800021FCEEB18EAD26F84FEC29290478F4FE7A +:10E69000CA0253836F82A516E9A963BFAEE627308D +:10E6A000EFB32D255D6BA1DD594B7D0AD2ED138AA9 +:10E6B000A716E1F78465694A00C6B9294947740479 +:10E6C0001CC089749F27B7A6A39E50747F6B7313D9 +:10E6D000CC3B4FACA3F647BB9A03D8AFB56B16D271 +:10E6E000F58E4C990590CE1D6B4C7ADC9F02000094 +:10E6F000EC57B1AEA3C68DF89D2FB34D1A3EB6436D +:10E70000926A91FFE425DB098FF2EEB14B4C8387CF +:10E710006D7699E6D1E111F8E360843F4C81F940D0 +:10E720007FFAC7CA3C8877462B2BC175EB331BBDDC +:10E730005E0D1F51BF1D76CECF9813605B26581A11 +:10E74000CC33B9FCF85D48574D06DF1EC2B7EB4C21 +:10E750006C1FD2C5D38B24064D3EB4723C536E76EB +:10E7600011FDA4341B033AA8AFC86C06D6BF27938B +:10E770005937A2686D369ED28D23BE46F53BFD2CDF +:10E7800088EB4869914F19213F39FCE906A4E7D489 +:10E79000363964C074AD81B934F4947AE2837FE091 +:10E7A0003C5299261FDA3F99E89B6583C91A33C307 +:10E7B000CC5FC8F39D30FF7831FFF816396084765E +:10E7C0004F6DE4F3DCBA8E0571FE506E5A6BE7D5DF +:10E7D00019D437083ED3FB2BF624C2C9606AE9C1BD +:10E7E000750CC0F5360E5743F3D6D5B80E4321CC81 +:10E7F00043C3476E494AA17DC8645D121B0970611D +:10E80000ACA64BCC4781A22CDC1358FA475DBF372E +:10E810002FB4203C1B6B7DF0455D13C74F62BC5C81 +:10E82000DD8F061BD74762FBC916FDA8E94744BB2D +:10E83000032FDB6714C23C1FBD2DB758C708FE7EEF +:10E84000B51DF6EFC076302F87D5E41D03F34F4892 +:10E85000E2FD1F886BACF30D810F762127EE798DD9 +:10E86000052480C7814DAE150B107EBB64B60FBA70 +:10E870007AA98DEF636F29E7C7BD5E0EDF4EE0CF4B +:10E8800088079D059EDF13DDD5E779368A69046028 +:10E89000BE36FC0788E04E8F8FA13E657330AF19FE +:10E8A000E0DC99E9E3F0507A18F21D067B0C14CBFA +:10E8B0002CA2BEAD34B01AF1A3D3D463029102747A +:10E8C000E4998EF2A2739B64DD47C008F376022EB2 +:10E8D0005601174B396F676D96681CEC17F9296D57 +:10E8E0003D00CAE278F64E09CBDBF837C917BDAF59 +:10E8F000C48F10EF9703DE48283FA2F17207C207CA +:10E9000074807485D518A053C96EA2FA9D4B002E51 +:10E9100050DFE28DE92FAEA77619F6B7DDC8F60114 +:10E920007E66AD8DEE2FAD39B512F12E2306CF7F69 +:10E9300065B3D17EA575EF9923C33C772E66B20EE1 +:10E94000C765016F9D9DF6E70984C7D61499FA4DF6 +:10E9500077D82B0D89A837C824DFF48B0BF7A11CBF +:10E9600056F757EFF0B19242AC67AD1C05F59EB07B +:10E97000F3FD833D22F991DEDD7F3BD25B5A5DF4EE +:10E98000FC98765EBA8BA7F5A64460C8F08D59CF87 +:10E990005ABB5BF04F8E17287B905E41EE305F11C3 +:10E9A000D04782E77705389F318A07F50123C02CCD +:10E9B00013E6A87F520EA4427F46F822DFD07729C3 +:10E9C00081D18924EEBC087F7DE6D7462DBCF7FFB8 +:10E9D0006A72BA0BF9AF9E111FD5097D4E85C335FA +:10E9E0007603CDE31AC1FF2A9FCBACB2C0583BB32C +:10E9F00018E93D8C1D24FAB943CCBD490EEF8E4772 +:10EA00007EF04723437E50D21DB8F1DF209DE060A9 +:10EA1000565CFE56A5D164D3E863D04550765EFCC3 +:10EA2000ABEA0583F2774C2D40BEA6A6BB4225710A +:10EA3000A85FEA43B22A37BDC80E347239609A8C97 +:10EA400072D77A9902BC65E10365DBF4575E40CE6C +:10EA5000062E23395B9CA9A6474FF302303B4CD6C8 +:10EA6000CBAC4044F10F7CD36DCA82FE4A4539AB32 +:10EA70007A0DE547AC1C2ED2F58C3541FD5DD6C430 +:10EA80006DD557229D79E2502E5E74DD8A270EE9FE +:10EA9000B92364E7E3D9D934F3848B8F07F0EA42D2 +:10EAA000BAEBD8719CF87E42D0E00D0EC1C79C48ED +:10EAB0008FB0AFADF15EBB7DC2C5F1C129F0E1B849 +:10EAC0008DF3BF221D6BEC1AA2DF7176CE3F8B3A1D +:10EAD0000C8DA89F573E6721BAEFDD71FD63C80F0B +:10EAE0002B47173E1A8FFAF5BB37E8910F14DA154A +:10EAF0002EA79FF78FB61253F3A4237CD0BEA5F5A3 +:10EB0000FF6A3E541A0C1F3DAE6B88FC3CBB59D0CB +:10EB10008FE7C623A5340FB61D0A9FDA04FC7C08D4 +:10EB2000FFC89576C1CF3700C210B185C95EC94B09 +:10EB3000F67991C9263AFD01FC1A1C32F30E614F99 +:10EB400029E733983729926EB77A69BECAF96CCA39 +:10EB50004F547C57217CF73C5B3E0BD835DB23B30D +:10EB60003A943FA923BC157680D3E7CDA505C8C745 +:10EB700063E7A57E9B36B826A30E3C9016FB135B7D +:10EB8000EFB6111CEE7F4664412545F114E03A6270 +:10EB9000F1AFA49411DC148555235FF8B6F8AC7B73 +:10EBA00039EE14F2615D0BE733BA135B3F45B90FE1 +:10EBB000769582FCC0CC41C466C9FE5B707D8683BD +:10EBC000BE503CC05F67F1123EAA74AAD2D5771F2F +:10EBD000F8EFE60BF65B37A8DFE517EAF7806C5D28 +:10EBE00081426E61E0BF4C53B334FD86B8BE33D072 +:10EBF0006FE3A07E6FC77D1AB65FA19F2F7CE07C7C +:10EC0000736032EA4DA0A70C814FBFB571BD33963A +:10EC10004FEB914F9770FE9C9AC8F935CEC7887C10 +:10EC20007ADCF07CBA07150358AF12E27051703DE0 +:10EC3000F8C575407B83D547F21CE6BF13E1C232AD +:10EC40002505E5B8BA2E3447100F601F6B8343CCFF +:10EC5000D76233087A8EE15338258DFCF922D1FF33 +:10EC600030F66F74F07918337B845EC9F5FC7F56FB +:10EC7000CF2E137A5DA7D9B3BD12DA2597C9D60076 +:10EC80008BE8CD4F6DECA92139FEA0EC41BD66406B +:10EC90003F16FAB3AA8F2B329FC7CE36791FEAD719 +:10ECA0003B5BE4017D1BFDA4BD409E6698C78EE6DC +:10ECB000F1A487EDAC57C82E1FA4573B40DF86FE5A +:10ECC000ACE5B2D78CFAB73FBA1CF4EB17101E9D17 +:10ECD000856B4212F4736F39B7EF63F5DF58BD29C6 +:10ECE000564F8AD58362F59E8CC6E8F26FAF777077 +:10ECF000BDE152F50FFC1B4AEF203D08E564E0FD45 +:10ED000066B45FC96E80F4FA07DE277AE8D8312A44 +:10ED10001BF1A157EFBA19F5D75F08FFD233E2FB19 +:10ED200095E04F6AF9B3C20F757098F243A2FCB038 +:10ED3000F8C696FF5AB40B0DD3FE8868F7F230ED93 +:10ED40005F15EDBA8729FF9D287F7D98FEFF5DB492 +:10ED5000EB19A6FD31D1EEAD61DA1F17EDDE1954C6 +:10ED6000CEF9FB1F45F98998FE4F8AFA6191FFCDD4 +:10ED70000817E5771495A62F073C8C6FE7165B47BD +:10ED80007B931DE5906AC7E05ECAAADF4817A1BB66 +:10ED9000B53661DFC25F5359C43E50E939B19A05B7 +:10EDA000918E54BB43B50F76D9F8B8D6726EA7C012 +:10EDB0004E109E745C043EFF8D1DC0777F11F7C717 +:10EDC00021DE2CD1F225BB9EF8D1FE620E87C8BA97 +:10EDD00046C9EABA64C8370A3BED1BF433627D5B6F +:10EDE000A4BF459AFE3EB4737F44C745F0EA2F7630 +:10EDF00016556FB8FDFF52CCBFE322FBFC4D4C7F94 +:10EE0000C3E1EB8731F586A38BF763C61D0E7FFF49 +:10EE10001AD3DFD3A2BC4B7CDF13FAFCC5F0261655 +:10EE2000FF3AD00F07F2EFABFB366F43BF8DFEBC4E +:10EE30009B79C7630BCEFFF7D8797F7AC5C7AC54EF +:10EE40009E47E53D362BCD476768F5144A1CCFB485 +:10EE500076A8B585F35707F3907F40C52B3BB34A9F +:10EE60004C17C1AB61E5F860BD6355D210FAC1C55E +:10EE7000FC651DA01791FC9A6C223BCFA130671254 +:10EE8000C25237D3837EE41E2BC7A38BF94D2FE6E6 +:10EE900027BD987FF49EA404C799CB18FA3F3CC8BD +:10EEA000A7A7FEBCF0811A907B6BDED491DD75675D +:10EEB0006BC0B88C0D969F8A69E4E426D037EFDDED +:10EEC00000FDE747F4C4FB3640FFB0772D0AA7E703 +:10EED0008EC9CE76A4E7E7859FFEA59612D2537A17 +:10EEE0003D32F9397BBB3B4D28673F2F95698B0A33 +:10EEF000F42113FA8D7B0B650FFAE79A9B47EE2CF2 +:10EF0000473B3EA8901F3EA2A73AF3B57AEA286B8A +:10EF1000632596F77A2A4D884F4D5F5599900F6D6E +:10EF2000B5F69A5C85E8AFE67EFA9DE5C74CE8BF8A +:10EF3000EFF440BE2592BFA37468FF7DECBA7F69F1 +:10EF4000E5EBE810FEA0CB8EBE66AD82F92D6CB16C +:10EF5000179B5D1C7FD0FFF19E95EB65CA5A5DFE45 +:10EF600069C04B0BEA0F80470B415F477C56D61AAE +:10EF7000783E03F81544F6EBCF568E8F80820189D8 +:10EF8000989F3552AE1BBC9F6AFDD87D55F5F11692 +:10EF9000253087F491A0C23642FF2F39E6D4B8510C +:10EFA0000F11F0DFD9AD277FC3E78087E807C4F3EF +:10EFB00015FF10FA920AEF30D2F184C170DFAF0F63 +:10EFC000D0F9E091F63B9C6184FBF3FE1CEB10F062 +:10EFD00053BF3F10FDC032CD684701DCCC7239C849 +:10EFE0007974C2839C7F3B694373007476BD8BEB5D +:10EFF0007FAA5EA90F2AA4870DE8A7278C44A77AC9 +:10F00000879FE1BC15D04FF10B74D99B84FDAF6590 +:10F0100043EAA7AA7FFC745280CE8BF52FF3FD51F3 +:10F020005C9CDE557D59C1F190FE99DF2BB9910FA3 +:10F0300008BF6A649C4F90FE99458AE20B03FABCB4 +:10F04000F0BB4B8E8DDD38CEB07C65B0DDF1F7A422 +:10F0500021EC837FD64FFF2DEC13B36328BE26EC43 +:10F06000924F9336D1FEE0810297E75E8B04EDE389 +:10F0700006E0BC9AFC35B70B9C8C13E7425374FC3A +:10F08000FC68C49312F92BCD0185F6312EB0693599 +:10F09000FAD350BC22BEAEE89482E8DF877282BF0A +:10F0A000DADE5C6060210DFF73078D2CA4C1FB6567 +:10F0B000AC85D6B302F4CC90860F2EC373AA442C31 +:10F0C000D7B447FD53377F04EE6322E2C3C4C1784F +:10F0D000BAF644FB152F6BC6BBCC21F8E577D87781 +:10F0E00048DF15ED87C3F32F3704AF7819E8E62A18 +:10F0F000C95BECD09C6B33646AB03FDBF2BF18E3B2 +:10F100001F824E54B82E5A5BC5DE073EF1ACC15A81 +:10F11000A1A07DF7A844F6DDA26AD7C130743129D9 +:10F1200028911DB068DD8AF1C84F269EF618F07C44 +:10F1300074550FB7BB5375AB8BEF86EF8347D82D54 +:10F140003E915E8D7694C5EBC2F385053814B4FF0D +:10F1500048DF586C45797493C58BF6D482B9DE7755 +:10F160002580D782F9852684DB822EB397BE26A61A +:10F17000C4815DC9BE82D543FB2562B71728CC8404 +:10F18000F9A906A698E1FB5CDB6C830BE82C358EB5 +:10F1900099305DB609C6473897FB687E0B0EFFF4C1 +:10F1A0006FD8DFAD4AE82589E83B48FC60C1E1D76C +:10F1B000FE8E7EE2255E306490BFEE37705FB180D8 +:10F1C0007F515774FAF283D1E9E250747A7C7774F4 +:10F1D000FA0D544801AE2FFC43C7F0DCA7FF67F1DE +:10F1E000740EB102F4CF7FB1F369A0EDBCFC89A22B +:10F1F000763CAF7BF6EBEFFFF96E48F7BFA1233B00 +:10F20000F0D9B1209B117E4A301BE77776CFCF1E15 +:10F210007D18CFA71E4F45CF0E3BD2C7CF0357EC6B +:10F220003192DFF9DC06CFE46A908F552B0E67230D +:10F230005F3C77F0978F62F9874F1B990EC6FD50A0 +:10F24000F8675EFAE3A1337B70DCA7E38B912F7F35 +:10F25000F8D473A3104ECB9F78317B8105FB7FA23E +:10F260008CD28FFF6C1C7ECFFEECA7A31690FF2ADA +:10F27000988DF246ED67C593E6534900BFA5E72C8C +:10F280001624A658BCFAB6FDAE10E7172B9EDCDAA2 +:10F290009304FBB5627F4200BFCBF7DFFB29FF4A37 +:10F2A0006FF2EF462A5F0E902907389E49E0FAC0B8 +:10F2B0008AFDC628F88FDE1DBD1F6382D1E9A53007 +:10F2C000DE2F60BC8273F3A7BBA1BF337A2E879772 +:10F2D0001A98FF00F4D700F978EE7A4EC8DFD8F517 +:10F2E000051D5C2F6D38183DEE2165E8FA3F717001 +:10F2F000795E80274F1ABE906E1CDADFF8A4A8FF53 +:10F30000F8E303F575DCEE05324A41BEC3E9E905D1 +:10F31000F5FC9FB1DB32804E562072E446F2913FFD +:10F32000B1283BD83302E17D8383EB0D5FEA39BD21 +:10F330009EDDE01F7F1AF8C7990D8D63AA35FACEBE +:10F34000D2DDAB5F4D037CA93F905C82C3ABF9F586 +:10F350003F3B9A88FE8EB15D7AE29B67F71FDDB571 +:10F3600004F1B34BCF908F43790A967FD4F54AE2EC +:10F37000F7207FE95E5B099ECFABED6FDD7DFB98EB +:10F380006A2DBFFB96F4A7F2857A2B87C373E53D00 +:10F39000533380CE56EC963C586D45D775D75E8377 +:10F3A00034B857E7C987F23285F97425B88E5FBD46 +:10F3B0009A0EF90D2F4E28C3F5401773317FBBEC21 +:10F3C0009B51847CE951BDA793E777CB805F470AC7 +:10F3D0001E30F4C23AC20EEE4FDD7EBDA50EF538EA +:10F3E000E8EF6519DA253E267945FA1DACDF57D9D5 +:10F3F0009588FAFD077A4B33FAAB3F4868FC3DCE5F +:10F4000023F014EF9785F8BC9789F3FDBAC37A927D +:10F410004B0D9D9B13F1BCFCD9AF7592827CA05320 +:10F42000223E70EBEE68FCAA83BE9D30EED9F60456 +:10F43000EAFF6C72301BF59FB309C16C3B6F4FFC48 +:10F44000AF6EFF6FFF8EFC6E5930BA7D2C3E28C91F +:10F45000926A271768F16A30DE3045298B94D7AF5E +:10F460000539A0F10FD79F6E35A03F79D94CC30560 +:10F47000C703BC642E828799EC91156359B5AB84A0 +:10F480008A2513F47F16FF05F6D28A39AC46CDA73C +:10F490007808710EFAD713BFDDA903FC4EC7CD4320 +:10F4A0009FEECFE379FCC4C706921B67FB408180C7 +:10F4B00075AF728E9F5CAD99DF47078F26E2FC3EE9 +:10F4C000728512ED00AF4348D798B6F2F48ABEEDCC +:10F4D000E477DCD87534318CE9AE243A973BF49468 +:10F4E000649701CE1FF5FD249E0D41A7CBFBEC9543 +:10F4F000787E1DCB7F54B97A0AFF09F27E4CB23771 +:10F500002F19F5443466401EA7263516370ED19FB5 +:10F51000DAAE30D945DF05425F48D5ADA1FA3352A6 +:10F520007D97633FCECA1EAF0EE0E89CCE3C9BA108 +:10F53000CAFB3ACF1DD6912827FD06B22F9B9269B0 +:10F540009C5B19EC0BE42F52584801FC5C84F2766A +:10F550001CA5097E8BF64BC1CD3046428B31EA1C8F +:10F5600060691BA4B5EBD9AB2907F82F43799A48FA +:10F57000712A21F4B72D7F2CBAFE0A16A271EB9FD7 +:10F58000FCC6A8ED97B156A18F7B0DA81FFF4DC0FB +:10F590006746AAB706D7E510E7AFFD6FE8B9BC64C8 +:10F5A000BE7FC1F5AC10F27B89F1255A5FC3BA75F5 +:10F5B0006316831EF2C9DABBC62C4E12E7C648EFAB +:10F5C000BB258E57D52C9405F3BB51E8352B0E4B3C +:10F5D000A122482F8175A3FE30E94929907039A4F2 +:10F5E0004D2C908878F616DF977AB11EAC37A204BE +:10F5F000E117A0F11688FD58C67A685D200136A78C +:10F60000C078ABFA802740AAFBA5B21188377F05E6 +:10F61000FE8AF408FA0833DB07EF6F2C5CEBF6C6C2 +:10F62000C0590BC75C845FF4BEAC7A06E039049E17 +:10F630003D28F8FD49B03B701D117CDA48F07E7022 +:10F64000A3C4E54460F63CE4D3BBE69595E1F9D16B +:10F650007DE8874F171D95231F64EAB962C804E34C +:10F66000C48D1F485379D9269EDE90FC9BE9BB418F +:10F670002FDFA5F7A7A15F64D76CD077B9BE62462C +:10F680007D659DD3DF84FBB948E77B158F2A4F57F3 +:10F690007847115EAEE5707EA8A4714CE305F4D105 +:10F6A00054139D0DF2F9A1FE5464A1F3F8349C1398 +:10F6B000E42764F3FC847171C14D909F2A838137E4 +:10F6C00004BCD56FAA02E6B09DBE2C01BF183A75E6 +:10F6D00081FAAA9E988A4A12EA9B631B0F207EA594 +:10F6E000DE5C58B2D91D99E72E09E810F5E5BB2577 +:10F6F000E2EFF1870F8432A0DECA1A974CFEF71BA7 +:10F700004E1460FCC781642E3F4608FDF8618935C0 +:10F71000A1DDED047C974A307D7FDA1AC82F7D4643 +:10F72000227D7AE53315BA95165A3FD7A7E31BDB3E +:10F73000651CFF96021A1FF6E5963990FFACC0CB08 +:10F74000340BC757E7A6801BFB1971C4B7FA1582A3 +:10F750005B9C07E303109EB46E136B463DD9C9361C +:10F760004A586F4B32C78B2D0B582DEA43001E654C +:10F77000849D7FDFC1F8068535E939DC94389EDF4A +:10F7800084E33C98C8E7952CEB6E998D7A7F094FFE +:10F79000DBD74BDE7D448CF7F37D34B21A5C27E671 +:10F7A000E3BA601ADE03160D7CAB1A8B711EA92317 +:10F7B000F9F7F5B029A003BA7CDDA1EABF210BE27D +:10F7C000133B9826A3DCBC4DC8FB4FF4DED4F128D4 +:10F7D00047DED453FCA0233BA67E5E818C72E336C9 +:10F7E00021673FF7548D4026F1B9C53BC206DF8340 +:10F7F0007A6E27C4EEFB69B14F0DE7335850233FB3 +:10F800001A6ABF203BA1E17C7654FE471B6025A30A +:10F810003572B0EEC854ACB792F56C41BA58D9A560 +:10F8200063410DFD1E34F371BFFC9391F8D5F7B71A +:10F830008DDC87FA792CBD369CD7B100D0DE153A25 +:10F8400099EA37D41AC88FD7D0AC6BC7F39E86F32A +:10F85000065E9EC3FB6B389FC4021854A4B812E71F +:10F860001461BB4FB72CC1FD7F51A2F89D86F329CF +:10F87000BC9CB91251FF6B382F51BA57E172B0E1FD +:10F88000E097627D0ACF0FCA817CD8879920479183 +:10F89000CFF602A809CF0FEAC4395838713CFAD71D +:10F8A0000E8E24FEF7D10660A4A3A91EE9BFE7AC23 +:10F8B0006192ABE9789E8E69174FABEBC47284CF2F +:10F8C000B95A956F8414DC9F3D9E9714F4A3D57BA1 +:10F8D0005E9ACA34781281673C0B68E099B2B92706 +:10F8E00024DB50271E716FE11840B9232ABFB2DD17 +:10F8F000EB05FE94A293A3F857FCC0393067B30F11 +:10F90000CA3AC1FFECF7564FD6A679FD48FBA419B9 +:10F91000D5D05F69216F3F36C5F16F9B5086AAF243 +:10F920004CE9CFF62568D2A698B405D2459AB435ED +:10F93000A6DC1153EE8C4967F2FA378F084FD0815D +:10F940000D3921C5394301B9797346F876B0CC59E0 +:10F95000CBE6F419D5C0571795727EB4EAB0E4E14E +:10F960006E690EBF551E467AAAC51336E039427C31 +:10F97000A9E75519EAD51F94AC12D087A5EB40082A +:10F98000F94B3DB67369DA7571FDB6BEEB14B51B64 +:10F99000B6FF0299E87B7B412FD55BB9F66303EA9A +:10F9A0006BDBBEBADF877C7F96ECE27E4AE6F766C9 +:10F9B00000BEAF3A389BFC5A2A1F3D97E63D8AF3BA +:10F9C00009BC2859919E07E80EFBB544E842ADFFFB +:10F9D0005ED1E13F60DC41FC6D9F6E54A0FE9F56FE +:10F9E000FE65028EF71E5699887C393806C79D5FE2 +:10F9F000B7700CE6DFB432FF259CC2497DF8118C4C +:10FA0000C1FB7E8A6706DEEF389910CEC238CEDBA6 +:10FA10005326F17472F81184E7D9942B08BE27B3EA +:10FA2000C25932A47F90723B4FE7871FC1F4819483 +:10FA3000793C5D14CED241FB627623C1BFD3CAF9B3 +:10FA4000E07B317278790AE72B25F9DE2529B88E1B +:10FA50007A2E071F015BCB04FCF1E63DE1A73A617A +:10FA6000FD37FF209EE2533B3FBA76BA8FC3C7876C +:10FA70007A772A47798D3C54483F52E5A1BA0F095D +:10FA8000D93D2E921731F22A37D9FB614A72E45BD5 +:10FA9000EFE2DF0F535C02AE8DC52EE877FE7C8B64 +:10FAA000673BA7EF09887FF799F97AE2457C85459E +:10FAB000EC472085DB0D81146EA74E4D9EF221AEE2 +:10FAC0000BF4FB8009F771B681F4B0B6D9DEB43817 +:10FAD000077E53E440949F434FF64D5B31233ED85D +:10FAE000B6329FE20807F4FA1F71FB4085DF8DC82C +:10FAF00087347CB76D59551AF2AB36B7370DF98A92 +:10FB0000CA2799D2953CBB28C21731CDF9A1C4D3DD +:10FB10000CCA1322FD7C4FCF7CC8FFBED7CEF9DDC7 +:10FB200040BE04F98591F6979ADF66E3F351E561EB +:10FB3000EAE62E8AC74B7DC86D27BD01052BEA5F1B +:10FB4000F78FDE87705EE79C43FBD036FB27E685A8 +:10FB50008511FC5D98EF7D1CE179A3884752F10582 +:10FB6000FFD03FB7E847A9ED187FF0610AB7E34F30 +:10FB7000CBA05F815E7A9DD34BFBF021C83E3A87D4 +:10FB80004BE1E754F359F876A487FFD99FFF63FB55 +:10FB900073F29FD99F956BFF7269FC51D0E12E29BA +:10FBA000A44FE5FC91FB11207F0EC0E9D164FFA7B3 +:10FBB000299A73929BEF5A9946F12B623EF1773E58 +:10FBC000577303246F5E7E7680BF30D7607DFBE481 +:10FBD0001F4D2D18C772D2D04572E024D8951B91C5 +:10FBE0005F0A7FDF49B1EEB21FAC781DEDEBA9A92A +:10FBF0003AEEDF94383E0CE0D336CFDB770F8957EF +:10FC00003A6ED7BDA8233DBEAD38F8F0522CBFAE3A +:10FC100090CEDFCC027F00BF48CF617771BBBE2D95 +:10FC2000BF97E0D936911FADB6B97979DBBC51E405 +:10FC3000B707BC0A103F9C1747FDAAF7203EA9E56D +:10FC4000F72000CFF8B8CB64E29703E579B941DC3F +:10FC50009F08DEF527CED6E0CB27C28FF709EA4111 +:10FC60001AFFE627C26F00F23E714EC2A5E7AB78DD +:10FC700097B259C57B8E67A71F4825FF2FA823A3DE +:10FC800010EFC7A7727EAAF2DBEB9CFE71A91334BA +:10FC90007AB36AB7DF9745F8B93581E3F15E336B24 +:10FCA0003695607B57D4BDB6BD6067A07C01FBBABA +:10FCB00014FBB9059A1F84F42DA9FE5F8771DCB58A +:10FCC0002ADEFA0C88674B845DCFD647DBA1186724 +:10FCD0003390D60D4E2FF572BFF620BF01FBDA1818 +:10FCE000DD8EEB33F185FD7AC4EF87CCDC6E53E516 +:10FCF000D76E3C9783F5ED5E171F447A54EBFDF504 +:10FD0000A33819E3D267A7723AE97E7DFC08F47341 +:10FD1000ABF676ACFDBD0A9700FD36C0D8E8276E7D +:10FD20008873915FEE0A1DF79BF73F6F16F8E05D51 +:10FD30004071ED812C5714BE3C6CA4726C8FEB6A41 +:10FD4000C8636CB23D02FFDE67DC1CBF74EDCB50B4 +:10FD50006FE95F16C708FF987F19C585D6A6332CB3 +:10FD60006F880B67A3DEDAAB846FC678AAC0412325 +:10FD7000433A69400862BF817F6C40BF95AA6FA378 +:10FD80003F596BEF9F83FFEA4A227AB5AADF9F4370 +:10FD90007D5C9B8F28023CBF9E3765F5E23EC32AFF +:10FDA000F9D4A8351A3D9CA82885FCE74C7BAF0404 +:10FDB000E135B984BE2FEB683FC2653E0D1E0FD4FE +:10FDC000937BA9BFE1ECE655BBFF42F736563D13E6 +:10FDD0008D07F5117C91BE91707C0DFE68EC69D2A7 +:10FDE000CF91FEAB19DD5B4A10E9F89A9E20DA4903 +:10FDF0000DC29F937C243C15E928A1B48BA17DDD25 +:10FE0000D0C7E965D2E1F6A3687FDB6A7AE80A46E3 +:10FE100083F053AAF8A5CE73E2E1FB75685F1CF985 +:10FE200098E35565EF8279C88F5F884BAB443FD329 +:10FE30003AA7FF11A49701BF05EB22BEB3E821C981 +:10FE40008A7CE3053BF35A094EAE3C8453A5819F5F +:10FE50005FAC0DBB0B9768ECCA5FA0C301D6552DF4 +:10FE60007B1F4B453D779838D7AE542E272A4F9AA3 +:10FE7000FDA85F55C69989EFDDF7C0E87D46776438 +:10FE8000FCC5BBDC761CBF2B95EB93EB9CBEAE5444 +:10FE9000D2DF3C6548BF3F4EE571B29506571EE282 +:10FEA000DD0B71A99548CFD3D4F3AF40459E03F63F +:10FEB000BFD2C9613FCD640C25D0B958EB18E447D7 +:10FEC000B317C771FD8FCD243CA911F8B4C3CDF78A +:10FED00061C734EE2FFCBDD4E54079269B5A6FC331 +:10FEE000FCE979091EDC9F37255B16FA29D932BD5A +:10FEF000ED8C8942AAD8507812913F0A3BA3893BE6 +:10FF0000D821017FB7D397FC2EF00D607A571C0BD8 +:10FF100020FDEC8A33921E82E53C6EC1B517E5DA0E +:10FF20004C93D18AFEAC04F45FF1F65EF4ABCC34B2 +:10FF3000FDF61D5C37FAE3903F42B957ED9797B352 +:10FF40002EA413E6D17F3410EF02FCEE6133F7DF0D +:10FF500041BB00F24F681710ED427CDC4C1B9ECF7A +:10FF6000AAEBDBACEF2A26FA5E69F1207DEFAD0843 +:10FF700018B31DC897CDC5E89F7D2CC110B2C33CF6 +:10FF8000CE8A7D8679933DA7C6C5E5251A42782E8F +:10FF9000ADE29F62AE388BFBAAC263B319F607E5E8 +:10FFA000EC92380FCA459C87984F149C2270E17ED2 +:10FFB000F3993454042E80B7D5D6122D7C2C213CD5 +:10FFC000C78E85CB70F050D781F3B5270E86CB6EE8 +:10FFD000F9C00AE2DFE7E23CDC4F160327CC4A23F4 +:10FFE0007964702623BFF1937F77958979D1AFB477 +:10FFF000D4B89AFCAB75C26FCDD069077AC7397493 +:020000022000DC +:1000000022023CCF3D2E915CC073112D9FC4730E14 +:100010006DBA5EF5D3EE8FF1A70AF9B612FDBCF802 +:10002000ED8A6E079C9CE460C3C158BF75204A2EC0 +:1000300047FC589C2EF6EC7293BE1746604FC4CC1A +:100040004DB4CFE81FE3F2DE9B86FE985DCB724B8A +:10005000D05F12AF703D7149EB688AE745F98F7A3E +:1000600083EA5753E9799DB3B2D809FD64A45516C4 +:10007000E2979C3343C40FC4EA736A3DF4AB5DE876 +:100080009C610DF23FD06F263B5D94AE792D3F15FC +:10009000E5EA1AC995CAE5EAA8A8F4199D9FCE1900 +:1000A00054BFF832F4F3EB22705D2AFCE94B55FFA4 +:1000B00039EC932B669FB4E9E59A7D7269F7A99AAA +:1000C000851262F649DB6E15EC13B6C37DD2E6B33A +:1000D00036BEEE5B849C50F1D6B6BE5DC734FE865C +:1000E00011255EF73D28B75FD3937FF43F055EC2CD +:1000F0003E94A11E3823B5B20CE11D87764B21EA50 +:10010000EFAC0EF71BFDB173D06FB5C13F06E3CF67 +:10011000605FCBE60C2127B71F32D7219E2C71CA16 +:1001200051FA58A6534F69F2A3A39EB1CD28F456B5 +:100130005736F65396ABEA872E3A175F2CCE875781 +:100140005D6FF1637FBDC2CFBFDAC9EDEFD54E1E43 +:10015000E7AEA6D5F5A97110E827D6FA39EF1CA8A5 +:1001600077BFB84FE14F23FB421F342F217DCB6770 +:10017000407DEBB38F385E74772F227DE6B3DA389B +:100180008671061B059E2C16E7529F3197D0BF46FD +:10019000913EA6A607F4AC769DD0B31AFF7C37C07B +:1001A000BBEFF5240FE2FF809EF58141D5CB03A87C +:1001B00047F5758D117A95E4457EDAFF2B011FC650 +:1001C000EF6DF71DCE22BDFD0CC63B0028FB14FFD2 +:1001D000C34857812E7EBEDAA7EA51CBCF8E437932 +:1001E000DEC7381F0E1C36523C0B5302A43F9D192C +:1001F000D0D78319D76AF6EF90C4F971BD21340ABC +:10020000F5F53EA15FA969F5BC1ED378EFEB05C1FA +:10021000BFEBE3787AB5C9DF817CED5903B79BEA80 +:100220001321DF32143C383FE86B4EF5A0DC4278F6 +:1002300048E4AF4D88B253FA768F56ED14A1B74A11 +:10024000021EFD0578FED7D797427AEB273E03C5FD +:10025000F5F7097FAE0A874D1FFC2403F7A56F4011 +:100260007FE4EBDF25E6DDA677658F47FD09F536F0 +:100270003C876EE6716E0DC1F7E7A31ED750F7D528 +:10028000CD941F13E7F08914DE398AF8BB930ECBA7 +:1002900057597999BA6E159E0D420F658EFE94A13D +:1002A000F4C9860FB6F8282E8CF1F8D94982A50E2C +:1002B000AA17333ED94F655C8FA6F3C098B80AA63B +:1002C0004DEB06A7DF754A420E47E7BF877AD10498 +:1002D0009C47747FA7F581C44984AF32F18B956D3B +:1002E0000B96227E2D74F87B71BF0F3DB0B58CE567 +:1002F00046F074D28799649FB1567E0E7B5AEFBD4B +:1003000019E9D0561D322CD4C0E7EF823F2C320AB7 +:10031000FD1CF8A9969FA8E56595439F579C17EB90 +:10032000481071588C5D6B44B97F08FFE9D2D6E361 +:100330007AC7DF05FDE6F4717FF0A4BEFE97F0AE4C +:10034000657D5731C543E4AC0F11FD9FD6B310FA5C +:10035000894E3F2CF011FD99D0EFD272DEEF521D85 +:10036000D8959AF8ACE562DF961AC10E057EFBDCE3 +:10037000FE0A5D02C619ED953C18AF3A49F063B428 +:100380004F72503E88F89D3AD6B3250CFD2F6D6113 +:10039000A6728ADF0AEA3208CE8CCE2D12CB8314E5 +:1003A000C7A5C207E44A5322B45BEE0DD279456C6F +:1003B0007C04D3C63BE07EE0B9BC468F59D9BA8DE8 +:1003C000CEF907F480AED873FBAF8DD17813889245 +:1003D00093AA7CCC4D73113C55B9319CBC043D674C +:1003E000641ADF3F4EBF072482E74AD6C8CFE985AB +:1003F000BC8AD54BCEE8B87C5D6ABC9FBEE5696E11 +:100400001A6F390B8BF367AEA75C6CDFCBD3E4A814 +:10041000FDAEEF63A12BA1FF8962FE6ABDFAF52C48 +:10042000B4721CFFA23D0070E672DCC4E5387EE3C6 +:100430002E419EC7CAF158B91D2BAF530D5C3EAB80 +:10044000F8A13D1744BD65D2FAA00EF7F9D50D5EAF +:100450008A4F5A6B4A1C87F1665F9AF9378070455C +:10046000FE7FD24C7AE19D3ACFEE378124A66EE52D +:10047000F9ECCFF1E497DABC8DF3BBCD1BB9FCAC42 +:100480004FE374539BC6E5E10FD3387D1CC171F275 +:10049000F17E4D0D8D37D554AC205D4FB37E9AADB6 +:1004A000203E01DFB1009CAF16F8BECA18DA82E721 +:1004B0007147D356FED8C6E99F59A17C2AFE03F2A4 +:1004C0003FD6FB7F8A21F65398AB09EDED0293FFEF +:1004D00056C487AA51572BC83F36C5AF9A4CF1C4B2 +:1004E000CC5B9786E7C3CCBB2C8DF852A6F54CFCB1 +:1004F000603C54E757C5FAB3158CA3379DBA03FB8C +:1005000051E71B3BBFA36912B76F62E6556FF2FF5D +:1005100018AFC8C07CD6E17CD479569AFC87C32E2C +:100520009ACF0FC47CEEBAD07C14E6A7781DC59490 +:1005300010A0FB7B9178E57BB05FF66474BCB21AC7 +:10054000171D89E7E5DFA31FB35CB4C3593390637C +:100550000AC28BE3F1148BF114D2C5E6045680FA7B +:10056000F25116E7D904703CA26707911EA13BB275 +:10057000672551FF28E3741638C1FDD39289C7411E +:1005800031E67761DCE951B3D14B7CD9E58A8A1B2E +:1005900056E5EDD13F6591FE71C46CA4B846A84FF5 +:1005A000F947FE141FCC251B5813079C3B181F51FD +:1005B00085EC43BEB8A591EE7D38F17D0880D76FFC +:1005C00004FD32D623E1FC326F6324B759B9C7C4A6 +:1005D000CFF9B8BD5625D6113BBF2A9385E2C19904 +:1005E00025DA2E63AD0F79B5F03A82701C1181A720 +:1005F0000ABFD8790F5AFF6E807B9906EE266837BE +:100600008ECEFF59867D88F63176DD9729FEA3B818 +:10061000DF5FEAB99ED73FDB4472D25ED32FA13FA2 +:100620005AF523ABEB3C2A8695E32767621CE80961 +:10063000C1A762E7A5AE27769DB17050E77BB17583 +:10064000BEACF617BB5EEB30ED63D6F9BCC17712DA +:10065000E9E1240B17E1FE16A21EAB399754F9D439 +:100660006B488FF917E7578C357E87EF7FE3E5F806 +:100670009DFADD059F3BF08E5AA0E39AD741D64EF6 +:10068000BD7AC16D98F664DC758D05E4C4D42A8901 +:10069000CEA73F4FDBB413E3FCA7DEB0E0B664287F +:1006A0007F3F63D42C07967F4F12F7191B6661FCBE +:1006B000E5D45B2452AAD664427D0BDAAF7E3D9E20 +:1006C000AF5F0F048EFB01595EAD3FEAEB347E1F36 +:1006D000E86BB11FDF08394120417E5A2B89F7862C +:1006E000FCFA39346FBF1EE77DEC4AE04223B05F6D +:1006F0007F56AB46BF393ECD7893B790D7D39EEBAC +:10070000D8D339FF55EDE958BDC696CEF9B17ADE9A +:1007100088EDAF2BD296F3FBF5F6743E3F8B8BCB77 +:10072000379CD7DC22FED5EA9BC7E7554C4134BE47 +:10073000AEC0DD84BD3D6FF03BD327207FFC388108 +:10074000F436255C84EB40FA3B64A773E200EAD7F9 +:10075000011B3F6F9952E379EC4EF81ED7D3DB0FA4 +:10076000EC68A2B1BD09965029E6D9ADF223F86B29 +:1007700051F9AF9007F83E8DCA777FEB7E88F8FE7F +:1007800074BCB13112FD333DF49DC5FAE9EB6356FB +:100790003D7EE7300F7D3FA90897917D1DE1D797FA +:1007A000A723BFCEE2FCFAD5F89D249FDEC1F191CC +:1007B0007FB210E1FB001F89E18FC3F2119C5E4AFA +:1007C000E49C59E563921FF827D6DF12207E36821B +:1007D000F9AFC2F1335888D259C0CFC85E1DE0636B +:1007E000D1F432703E3446A2F39C87E213C98F796C +:1007F0006C8C447ECD17D477B08A7939FCE9F0BE91 +:1008000026C10F3AB9BA405A80F6C7D535A98BF040 +:10081000FB9080F3D5F3B7F4E0BCAE2E78F346CC72 +:10082000BF868515ACFF5DBCFA4BFA9195DEF59855 +:100830005D2815A37D55D2DD7F04DFF19859C8E30B +:10084000903DA1908CE9E905368A6B1EFF3A4F5F17 +:10085000536EA3F7748A9E096FC2F477BD9086FA2F +:10086000971FF64D49C6FE66DA3C586E9BEFA07B9B +:10087000126C2EC78F7737D411BDC7EEF734169898 +:100880007B0D7CBBDFCAD5237BAB4F1FC5F9853FF2 +:10089000EF60B814CF771AC8FE9BB8F87E1DD2253A +:1008A0000BFC4C87FCB156EC97CDCFE32F6AFDB320 +:1008B000F5789F0CF0E10E5C1FE04123EE838A1770 +:1008C0002A3E3C2BEE8907E608782AFCBC6CAE9FDA +:1008D000DB91F8373705DDEBEA9F95F47A953F1EFB +:1008E0009744FB05FC5D98B7DF0511067855ED735D +:1008F00057239C8911C0BCDFB9C94572B27AFE0D7D +:10090000D331BFDABFB507ED45663546EEBD205E93 +:100910009D3644A58F0A3C75CE95C8BFC3B4F76415 +:1009200074189FC6EF6F3B2D5C6EE3FD74ED3D1CAC +:10093000D4CFB5F5413FB92F9DF40885E2C30A44F1 +:100940007C186019ADA3D22205F13ED57326891912 +:10095000080E2C6872138984307EFB8AA06F36E201 +:1009600011A4BD3A8D3D738380BF3EBD468FFBFE13 +:10097000EE4446F7D85E905A6F22F8BC6B71097C42 +:100980002579F6B88833BBCCC94C39242FA500DAB9 +:10099000F3973D97CECFF79CFCBEC7D8351C6E733E +:1009A000E74BCC8AF8D31217CC77D3B8DF7CA3BE41 +:1009B000C305FB7BC37C6EEFCF5D5F1A44D3FFD9C9 +:1009C0001235BECDA547A63DC7E767213CB77632B5 +:1009D0000F9E83B2BA6C592BE7DE9A2B7B4D384FB2 +:1009E00066A27314793EC783E916A91DE9EEB8140F +:1009F0006CB2D33A0C84BFC7F5BE8A649C87C99F8A +:100A000085FEAFCAF3F12C343EC2D72A85BCC8029A +:100A10007CF1515CB6A4281A7E11CB67D0C181F35A +:100A2000491B4807189667E03F699C30C13941D59A +:100A30003F84FD9222EA5F11B62DA27DB170FACEFD +:100A4000826C3C977A2B3D97C715D6FEF61DCC9746 +:100A50005C1C4F8E7FCCCA709EC7A5A1CF57DE4DC0 +:100A6000E7F2EC953FDD9A85F6D9F1045F16F9338C +:100A7000517E407EDE5C634886F18EA7F929FFB87F +:100A8000B80F82F54F61DAE6CBB2517DAEC7617D1A +:100A9000F4831FCFF26769DFFF396E56DB8DCEC45A +:100AA0007647925D99E8D7FADDBC5409CF2DFA84D8 +:100AB000BCC82B3092BF5F6D9757BBB507C707FD0A +:100AC0009EBD8F3C31868FA35B22A16478FE7D059D +:100AD000FA4330AE13EC368CDFDC69F034EB509F18 +:100AE000AF0E0ABF67345F1E88B3FD28A047F931F7 +:100AF000CFE4A976D04D742637A744F8EFDB825EA9 +:100B00001F52F982E0D30FDD3A82FC1C6F2D88E181 +:100B1000E313B87E70B55FF06D1FE7DBF8A7E58BD8 +:100B200057CFDFDA83FB162BF7AAF24736E17AAF0D +:100B3000F6F37DAF663E2AAFF943D34C142FD7327C +:100B4000D7907251E57F9E10E7FBD30B39DF2EE97A +:100B5000F61CC5F4CC52958F733E3FA3C04D72E096 +:100B6000DD5BFF83D2AF5E215139F0D5AC8CE4A1BF +:100B7000F83F5FDFEC3C1BD123F09D6CACF7D080DD +:100B8000DC0F5D92DC95E6BFCAED9198FD8BD80D28 +:100B90005CCE46E42B8FBBCCB2C814E70C7AA234EF +:100BA000949C55F7F30F113D24DA9EB8443D6060E4 +:100BB0001E8CFBE33254F2649215EDC74CD1BECCCF +:100BC000C402F1A81FCC15F695B077403FA8CED04F +:100BD000D8394EB473D0FE2EF72CB7E9869F7773C1 +:100BE000AAB706E1394567F1205FFBEC2DFE3EE533 +:100BF00034EFBC29788E399DF9EFD1DEF31D0DFA63 +:100C0000BBA2910B638226B04123E9CBF65BA3D252 +:100C1000455DCEA8FA971F744595178350D1968FDE +:100C2000EFF644A527F49447D5FFCE3BDEA8F4C4E5 +:100C3000704D54FD2BFA7C51E9B1CC2FE3A2AFECFF +:100C4000AF8D6AF7190BDAE97DA880B7A72085EE8A +:100C500063D3DF55E7FD51ED8BC4BDD40AB62CAA92 +:100C60003D7B86DFD36F84FFE1FE8D8DB9973F4AD0 +:100C7000BC9B7AFD5C7DD47DFE51787F3511BFD160 +:100C8000F563EFA1AECF487090DD5FCA4A51DE0E2A +:100C9000DA1FC6EF7557ED67C1A01BD74375D9D8CA +:100CA00087F9BB80B1EB52EFA932DD930AD6FB9BEB +:100CB0004B62F8E485D119BD9F6657F47EC6174490 +:100CC000EF6782277A3F479447EFA7CD1BBD9F4927 +:100CD00035D1FB99EC8BDECFD4DAE8FD4CF347EF4E +:100CE00067465DF47E663546EF63CEDAE8FD72074F +:100CF000EAA2CA47363746E3A3D8CFFCD6B551EDB2 +:100D0000D4FD0CC0FF2EB49F5596FB65B4AB6B1E93 +:100D10008B7EB7E152F7F5B90C71BF58ECEBA5DE4D +:100D20002F06BEF722D26915F335D9B9FE1365EF48 +:100D3000FC4EC88BA369D754E3D319F81765FF8C11 +:100D4000D94AF68FAAEFA0398C7431838588CFC732 +:100D5000EAF1B391DFEB90EFF7672B905EA50B6D97 +:100D600041FDE18BB4374F4A3AE2D76FE27CEE881F +:100D7000BB9FDABF1AFF34F57FE4027C19CF0D2E3A +:100D8000950F0EF88F6635921F47F5E70CEBC7718C +:100D90006545F81B31CF00F1B7AAB5553EBC37FD0C +:100DA000A59EC75FF64FE3E75A55EB2A287FC04E52 +:100DB0003273F959657267A1BE58596394F0DCAD7E +:100DC000D2B29AFC2A55AFEBE97EE3B1765EFFD84A +:100DD00007B94467A0E792FFEDD9AF75DE00FA9935 +:100DE00093F939D1B162CF8946AC77DD688AB3AB6C +:100DF00012F1FC4754796EE3E31D4BD079715EC765 +:100E000024FE3EC331372F3FB6C0A5C6D971FFF5CA +:100E10004A16753E75A8D1CACFA772383CFA6F67DB +:100E20002E118747F6F3218B1A67778AE2DDFA27BE +:100E300032FE7E27E3718687DA6C64FF4C11EF2B5C +:100E40001C527CD5369C5721BF7F7E48C4DF1D17BE +:100E5000FB89FE6D8AB3683546BD7B7CA8A588F406 +:100E6000EA583947FE70846BAB59D843AE8D68B7EA +:100E70001D5AEFA27348424B8D1E7B88759D588387 +:100E8000F56BB95E7CCCD675FA0184C3BCB11ED8B3 +:100E9000C901BC786BDA4F3F38E642BB682B9D6FC7 +:100EA00055CFE5EF35D4582B4EFD02F2A55A8E37BB +:100EB0006D6EA955C7E3894665021EA48FE4FB54F5 +:100EC000E3EE3423BD5509BFF0EF06ECF7687A3A3C +:100ED0009A76F7DE3543D0D1805EC45AE9FB4FD015 +:100EE000CFC4CC09483FEDD45EF547039D4FC27C8B +:100EF000757D6FD9383E543F6F247C20BCD6E817EF +:100F0000C3D1910A97AA8F020A76F149025FBFCA3C +:100F100057BA93FDD33235E71035F6A0D94AFEA271 +:100F2000A1F58463C3C069109F99369AFC3C557340 +:100F30002B685D535880BED35850B930BF19D6EFD7 +:100F400072736694DF659C1EF90CC0E996CC098328 +:100F5000F98CAA870DC025D63EBA54FFCB807E758A +:100F600031BD7068784D15EF60BC6BE5EF60C04433 +:100F700066A6A5E0FAF9DFBBCD9C3EAA81EF201F53 +:100F80009921E4122BE4FA8207FE87F3FB1BB3F8E6 +:100F90004DE8B7CA8BD6232AC57B17D54CF35E9094 +:100FA0005B63378A77322A63CA63E1A1AE37564E54 +:100FB000A9F65D2A0B10DF1D6EFDF7670A79E66260 +:100FC000A3BF81729055A4A7F4FC41477EE85792D5 +:100FD0006F587C3FE0EFE81F8F257FCF2B29DFBBC9 +:100FE000ED4D4C3F3A8AEC8057D36E7D0CCB47FDDC +:100FF0002B2F57E5DDBF664A227E4F5A827EAE8296 +:10100000D2776F74C37C5E36B39B30ED64756DB37D +:10101000611C67616EC966E4070646F5665CBE72D0 +:10102000BCF69CF709D1CF0C112F9E854FCB96D0E3 +:101030005741BF439633A858A15F83B86797A1B0C3 +:1010400026237C0DCE568B15E11BC7FB7DBDF8ED2D +:1010500012ECB73A97A72FF3C49F1A89F391249AF9 +:10106000CF65055208DF7BAEB6F3F299253F4BC73B +:10107000F8C8EA4AB5FE351F60FD6AF10E6AA2D7CC +:10108000AF1F83F426FC1E4715BE1FAF649AC84EDF +:101090007DCE52A1C7F735AEF7713FD4ACF28D12B9 +:1010A000CA89EBFDDE52EDBDB59733F9FB6673CB14 +:1010B00079BDB9BE05FAC59AF55FEFEDA7F743AF65 +:1010C000AF3DA5207F793B868E67E33FE4081DFB9B +:1010D000F01FD0FF9B378D267BB06ABE9BE8F25A8B +:1010E000E6A5EF75CC4F7CAD96B552FA46D645DFF6 +:1010F000F9AC87D3EFA901FACD71E412FD1ED7D266 +:101100006F4FFC0FF59C6F44D3ED707C0CE8FC44F2 +:1011100066F2F074361CFFAEAA5DBD778D7B307F22 +:1011200052EDDC081FEF223EF46DFDC1EA7A607DCE +:101130009FE1FCC04E3A4C71DD2017D0FF0DF3FE4D +:10114000EB50FCE9C810FC49AB17FDD3FAD0307A5C +:10115000D005CE0BE3B3709E97785E187B1E3935B1 +:10116000D97B9F4B139FD7F08EC9E4BA1CD33E9610 +:101170008BE7F5C9153F7543FF0DC28F15DFC3BC63 +:10118000ED90FF88883FFF91DB45FD3A0D3CAE01B5 +:10119000DF7B2BB6E0B97D0FE929FDC9A0B7B822E6 +:1011A000E7ED8F2440BB126CC7E97AA0BD8935C535 +:1011B00069DA577E8FF3DF2F7618E89D962F6C1231 +:1011C000F9E1BE98672139DABBD3407162230D9CE7 +:1011D0001E1DEA7D12B685FA1B97C5FD4D4C3AE2FD +:1011E000442750806DA7AF1A5FD82BEE9B7D61F32B +:1011F000DC48FDEE4891B0DFC52DF9B370DCC52D9C +:10120000996EBEA9BCFEA82C176FE7F27EDA8DEBB3 +:101210009A6DF1707DCC5F8C7E3FA3AE74BA09E10C +:10122000A95BDFDF0DED576659ACF83E5B75CE89E3 +:10123000E3F89EDA07CFE8E90DCD659DD78E08610A +:1012400033C5EBF4150DB6179605F55176C98AFD31 +:10125000D1E9955DD1E98618F9102B07AEC91AE0DE +:10126000EF1EE4EF976AAF5C2979E7125EB120C503 +:101270004B2C17FB6F3436F6B5C3FA8DF715946C0B +:10128000447C673C0E26E547EE128A23C6E8716867 +:10129000979BE59B8FED8D3985E3D0DEAACC9949EC +:1012A000F705BE78D84CBF9BF28559E2FBFB22972D +:1012B0009F6DD9BCBC6D8FD12509793BA10CE35C36 +:1012C000385D35ECE6F212FE4CFC3D32AF09F7B367 +:1012D000CDE035A461BB1FF27B3775BB6F9D89766E +:1012E0005E3DEBA17B0BED62DF1A744F1A4CF04FA1 +:1012F000779377CC4698EF0A5F1CFDEE89F20FC515 +:10130000877884610F184F229BBC56FC9D8F9507F0 +:10131000F979C6DA2CEEFFDCF67AF47D23C333B319 +:1013200003489E57FDA39ADEDDBA75EDF7E87DA769 +:10133000817718C43D885BD7CDA3FCA30F7F998428 +:10134000FD9ED9215B110FCE3C52D183BF23736B1D +:101350008BC5857EF506D6E8E1E72FD1EB6E92F8D6 +:101360007B107FD9FB7622F2F9BFA8F168D6C6447C +:10137000A26F5763A2F6BE56C75E1DBD97D7D1B206 +:10138000E6DF27C2786D736E2CC5755E652B8DA365 +:10139000F7BC45B9AAFF2BF6F29F20DFB9EA1F3A46 +:1013A000A207FC3D048CD7ACBE6F26C52F76F8E2B1 +:1013B0006C487FAE967DE25EB17701E5EF3011BFFC +:1013C00072B3AE2DA87736B44CA5FDA96BA923F84E +:1013D0008FBC368EF4888EC309782ACB3AACE5717F +:1013E000D8BE83293543F999CBB37404E78A1CEE40 +:1013F00027E9788BBF6F385537793ACACD953B646A +:101400008AA37C79CE1F8F173822F4A4BE0F8E7F5B +:101410002180DB42155FC47C963DA6A3F7E82E46EB +:1014200057C69CC934BF58FAEA08F077D763E9ACCD +:10143000BBA5240EFDE1B1F4B6B02597DE7361CDF6 +:101440009CEE0E033D909E7AE97477342B7930DD63 +:10145000B1CC3951F1CB2A9DA96995BFABE7BE2626 +:101460000FF3765AE81D018A57EFCBE2F729FAB25B +:1014700078DCABF2F735FBDF403865F98F219DE66C +:10148000306F31E299ABDF5A89E6BF45C4E3B13C26 +:101490007E3F6D97DE27137E2AFE5FBE01F9FA9626 +:1014A000BAF148EFFF89FD2523BDFBDFC37E16AFF0 +:1014B000F77FFA1243BC1B4B74BFF8FC5C19CFE7F3 +:1014C0002C6DEA3D6A1FFDFE91DEE123BC54F976E6 +:1014D0003ECCB77D88F36C4336D78FF21D3EEAE7EA +:1014E0003FB3ADEA3B28F3D09E7D74B94CEFB9AB66 +:1014F0007A98FABB496E17A3F7F34CE51C1EEE72FF +:10150000397075228D43F996727EEF3ABE34C4B0BD +:10151000DF7C2C073C59E3D4B9F0DE8BDBC34E698A +:10152000EB41FB53589E5FC0DF219499C96531A1FF +:10153000FF50267C70B7F1B48A079FB54A44A76B69 +:101540008052D796F0B877929FA55C7EAE711A5CF8 +:10155000DA778032D22AA46C5C97D79BE72813EF06 +:10156000B2308C9370117C250F8F2F635BFA5F91E3 +:10157000DD91792E3605AB304E30166E8BC5FC569C +:10158000E3FC00552679205D30FCFC4E67B9A2E2F1 +:10159000ADD5F919565914A4E781FB45B7C974EEC6 +:1015A0006648775A043FA6F8A20CC6EFBF3CE2DCBF +:1015B0004F76506CFC86230EBEA057003B55101F83 +:1015C0000D32ABC67B0F77CA3ED26BEED4B5927D9F +:1015D000F2A5CCF5A3FC6CCE6733ADBE034B61BC6A +:1015E0000CDD017A174F317B4765137D44DF03899A +:1015F0005DBF62AEB88CEA89B828952FA46C66519D +:10160000F71A1786251EBFD23CC53B40F7B9F82E06 +:101610007FAB09E7717DB6D0234C61BA77B06B120E +:10162000B3A2FFC3C93CBB752323FBD520F64B3ABD +:101630002C897B4120A034FC48FD7DAA7811EFABBA +:101640008EBBB050091987181FFFB4F356EBC73F84 +:10165000DCE3C6790DD76EAF99DFBB615B3C2EAC86 +:10166000F7AECB3F0BF12A63F30217972F3D6E8441 +:10167000DB91346EC71F31BB32F15D50F5BECF70C8 +:10168000F77A62F5F755C22F07F22E60227D88C7E0 +:10169000A3AF8AF5CBBD285DD27DE9AAC3156968E1 +:1016A0009736F80C32EA070D07B97EB0AA490E9AB0 +:1016B000A4089C73043C5CC21F27ADE7F71DCE490C +:1016C000DE347A5F7FB681A1FFA9CDCDFD556D7760 +:1016D000BBC87F7785AEF7D1BB68DF2D64D732A555 +:1016E0002B84E78BED3556358E5CDC1FB0C6611C54 +:1016F00071E47EAB350EF5BB201EB8021EB78B77AA +:10170000730316FE2E70BBF0B331718F30A59CC3EE +:10171000AC7D204E9EF7A7E2E545F3059E08D36712 +:10172000E0FE6B42A1CF6D01496ACDDAF1EF711392 +:10173000BEC5FB1C8109ADF8FEC6F0EF73ACF761C6 +:10174000B909A5B42847705BF0F7B6C4EFA6207FAF +:10175000D99A10295740EF3235A9E9E9BE29790015 +:101760001F494D5F771FC64FDD676651E369E7A7E5 +:10177000C4F4AF77511C9298EFD659D8DF83256A0D +:10178000FAF44EFCFDB3FBF4D1FD11CA8BF6985070 +:10179000C77B3F98D3DA9219916720DF9E463EA01F +:1017A000CAB5AD7F9CD97AB90BE9F05A62B2FAF3A7 +:1017B0007389FFEB1DDCFE46DF719603EFADE6D2C9 +:1017C000EF0031C545F7A4CD692EBA7F74309BDB9D +:1017D0002DB3642E87F48E8A10EA817AE6D9F786D3 +:1017E0009BE4E0611C2F2567E6ABA89F44E4A04280 +:1017F000F64B3EC853D46F4D6D22FE58ECB751D016 +:1018000030EAA8BCDEF59D387E6A8EFFD56C0D5F90 +:10181000CE6F7319B03FF57759DA96E5CA92466EE6 +:10182000BE97CDF5D5FC02F55D9139246F155BF5BA +:101830000494B76ABD5C6B9E8CEBCFCD147210E440 +:101840002BEAA7B96D7E0A25C855FCF370DDB9B542 +:101850004B0DA89FBF97ADA3F5963607CD15B8974A +:101860007532C3F7018F229F4EC6DF855C4CFABBF1 +:10187000BED66441E4DDE3FB8919FBCF2FD8D78CBA +:10188000BFE7C6AC0ABD2798DFC6F50A65DD8D4106 +:10189000AD1F64BB55A1DF6F2CD3F957939C499AB8 +:1018A000E445FACAB24FAFF12472FEFF7D0BDEE7CA +:1018B0001FFADDE7E92EBE2F4D922FF05DE403C540 +:1018C0008CF8805A9E23DE71F92C9BEB2BAE80B5F1 +:1018D00012F9D6E4CF7D0497CFB2795CDCAF957076 +:1018E0003CEA7BF9CCBB7A21AED36771D1FD17E11D +:1018F00077776C7011BF3039C2F75E8EE51ED94321 +:10190000E14B429F3EF77C2ADD5FF8618EFF1BDCD6 +:10191000B7325DF847DFC5F5DCAB887B34E147EFD4 +:10192000827AD9D75A089FB639C23FAA61F49E0974 +:10193000D9D32D9E4D5E8C7FF935FE4E12E2296C77 +:101940009313DA5B2C5210EDD152A053E493CC29BF +:10195000911CB678FA7F8FFD4F77FDDE83F5ABD40F +:10196000FBAA317A0421957A6EC4707D0186F74C0A +:10197000015B9ABE498AE817539897FCEAAADEB140 +:101980000BAF1B43D35DB289ECEEF8422FDD4FB8AD +:10199000A5409A4CF373F4303CAFC86D95882FE79F +:1019A00016CCA1FB054B5A393D2D1478C814D0D361 +:1019B000818FE6E4C40B3F4413C19BE41BAEA7C573 +:1019C00040E70CB9CD6E83F6BD40F5FD9A85ADFCC0 +:1019D0001D2C83B89F955B2AE216D9BD543E36472D +:1019E00012FD6E12FAA1FABE101F57A5B306116FB1 +:1019F000C462E4B32A5F3FA9FB2C11F9C1C2C3BA88 +:101A000010EA791793CB7BF0E809F1EDB08EE44151 +:101A1000A49FFF4A447B6BB87E2A72B8FE7E64DEC8 +:101A200017F46EE29EC31DF4FEDBAED920A1493E41 +:101A300078E8DDC544C5373587D6E3D9390AC6D934 +:101A4000B35347FAEEC0FB69C58CCE5B6EC99B43AE +:101A5000EF96D94BC796E0BC9C0A3361DCCF8D6210 +:101A60009CD8F7D354F80EBC9F56C3E169AFF18AF6 +:101A7000F7D3FAA720DDF64FE3F749867B47ED164B +:101A8000C49309FF0FBDA306748EEFA835E6D8D422 +:101A900077E8F83B6A9EE8FBA7B1EFA76D17FAD08D +:101AA0001E16DC8DF7A20305062BC27566C1AB17A7 +:101AB000D48BBA93AF5D87FBF3C9C7671EBD87E1BF +:101AC0007B81B3E7D1BDBA220BA7F7C001CFB564C4 +:101AD0009F46EB4F917B8223E9FEDF3D82DEC8A764 +:101AE0009436FCFDC0BF9EF8AD158976E05CD166EA +:101AF00050DFEFA07B80960369E25C9185A85CDCF7 +:101B00000354DF39668A8FF88BE5403EBF4FA893B8 +:101B1000881F0FDC9F13F6BDE5C5548A3F6990C34B +:101B20004FA3EA60D1F377602CEDD1EF7A5824FE11 +:101B3000CE0C534256D467CE0DDC97F33AAFD5F8AE +:101B4000259A04DFAE17F701D576F5977E3FF0A70B +:101B500039C917B81F58AC0CC081E6BF232B38D445 +:101B6000BB142A9FB66C73139CDE2FE0BFA319D160 +:101B7000F74256ED7B26EABA17897B7EEAFA17F917 +:101B80000CF43B43B1EB57DB2D2A594C76D0A2E540 +:101B9000EB67E17738BB7F5173F43DAA23222EFE19 +:101BA0000B7305DD5FBAE381D9E4FF598AF79E46DE +:101BB0006AEE770B3F98AB59A1F5B9F64B4117DFA9 +:101BC0003F934C3AA855A677AE81CDEE41D61C0086 +:101BD000AEF01DC8966409F527177AD15361DADB98 +:101BE0009400CA97F677E2E9F775B73A5CF4BECE8F +:101BF000D62699EBEF2D5CCE40BFF4BB1E8126D9D3 +:101C00008BFDF4E6707FCD7FE508791AF3BB6B4D51 +:101C1000E29D4075BC8D4C0EE15796F8772BCAFBC0 +:101C200021EC36B5BF267DA309F591FE2C99FCC7A2 +:101C30005F18BCB5E4A7B58F62A88F34253436D7BA +:101C4000F072A2992FCCA11A2A2F96B9028B648424 +:101C5000FACBBB668A237D2787C70FC6C27B496B39 +:101C6000743AF65E5CEC3BC08B98FFE74EDDE077A4 +:101C70006BDFC9B10A79E6A1FD69D2BB8EE1EFD471 +:101C8000F66F53E87726376672B8C959FC9B6BAB81 +:101C9000A6DFC9653603C338D3FF055B0519F50018 +:101CA000800000001F8B080000000000000BE57D95 +:101CB0000B7C54D5B5F73EF3CA2499492621848478 +:101CC000403249480810C224C843411C12A0519117 +:101CD0000E0F051FD50920843C00A1B6B1C5669042 +:101CE000B7628D152B5AD40101B1050C169142B47F +:101CF00003F8A0556BBC6A2FDA969B8855810001CA +:101D0000B562AFBDDEF55F7B9FE49C0929F4DEEF91 +:101D10007E5FEFEF8BB5DBFD38FBB1D6DA6BAFD76B +:101D2000DE2344A45CA40891539CACDDAB09B13C18 +:101D300049CC687409316B758C104EC17FDFD0BF00 +:101D4000B73798F373D79BF3F3C2E67CF53673DEAF +:101D5000E2CD17A227F72F30DEF2355A38A471B53D +:101D60005F5C46E36D8F79EADE6C4ADDDE04912B21 +:101D7000C449ADBDC04AE5A1FBDDDE2DDCCE234468 +:101D8000AA10333DB2CF0CAF578861421CD37C5BA5 +:101D900023F49DE5811D6BF2D1CF7DD6121A5994A3 +:101DA0004D75F931CEBE13AE700C7D5F6915223DC5 +:101DB00099F2BE775F457DF4FAE8CF6B1B4EFDE3E9 +:101DC000BF2C94A6087F6C11FDB7B15D0EFEDF211C +:101DD0004481CA5BD12E30C83B0CB9F0201B8D3F2B +:101DE000E7449C0FEB78D8726CD76B946FDF15EBE0 +:101DF000DB44539DBFA47DABA0EF47A4044BBC04C0 +:101E000087B6BB3E98A0793BD77FE6C5FE1B01FF96 +:101E1000CB96C774F68FFF5B6BC863FCD5B488CBD9 +:101E2000295D672EAFDC10F59DF88F18E33C8568BF +:101E30006078FDD4111CE021FC3E16183E1CF3F91D +:101E4000A9BDA15C50FD5D69C17158C747E303AFEF +:101E50005AB2795AF981C142BCF4F5AC5C1BC1316C +:101E600074C4E9DB42E52FD95AE2930A85B066498A +:101E7000F8A73945282E5996A35FC73DE2B600A5BD +:101E8000DFE0EFAACEF4DB5E8DF11FF4FA8F67522C +:101E90002ABEA65911BCAD802D75E5743DE7B7D2B9 +:101EA00038A249F3E45132DF2B5AE72608E16AD21F +:101EB000FC19049F05FD2C618DC69FEFB2B48EA066 +:101EC000F23C9785E126FAD9C279285F2742730947 +:101ED0005F0EA73F9221B85D6804E52759E43CF501 +:101EE00079CCDF3B59045D3C8F3F631EF12901CB68 +:101EF000ED34AEBDD2C2B0B2DB8237A25FFB0C873D +:101F00000851BF97111D845D8C5FEE276F5DB04255 +:101F1000D63B5D568653C0127023EDE3F938BE13ED +:101F2000DE355EFFBD80E79F51902EC4B5BDFCF34A +:101F300081F72FDAE22CDA1021BEABE8F7F0BB53C1 +:101F4000135BA8FF2F4420D143703D7CE086C496EC +:101F5000C2CEFCC7D6E0F73CB41FE68A9003789A5D +:101F600027C29C8A753D980EE6D844C446F09F333C +:101F7000CDFFBE5624F765246A5F1AF335A2D981D6 +:101F8000FD25687F460CF453638B1CD008AEB54E1C +:101F9000118947DA68FE6EBE68E7EF16ECFD26266B +:101FA00062DA3792AE7A5917152F049CFCFE7E290F +:101FB0008457976C220A4127B46ECD27226EECA776 +:101FC00095EDAF307D5D62BBE3DE86540BAD77B53A +:101FD00026C79F6075F99D04FFDAFB2DBCAFA9A34E +:101FE00089C3A89F4A21E9688177C27141F34FA153 +:101FF0006D8AFDEFDC630DDF93CDED7D11CAD7BE99 +:10200000E8F6A169A5B772A228027CEC1FB618D623 +:102010005325764D008BF942BCE1C0FEA8DE66AECA +:10202000AF6D34E71708DB872D3A1C699CBA3F6E09 +:102030001CF5B2611FEEF4BA533E1EC473CBFE060C +:1020400070B7DE9218BCC0FED0D32FEBC3A35EB630 +:102050000B71A5E67F1EF44274E7C03EACB2097F67 +:102060006361D7F6EEBE1AC3FF90EBB31E41437D0A +:1020700069614878293FBCF4C2FBF190577E17DFB5 +:102080004CF44DED9CB69048327CDFDD776F782DB7 +:10209000723C87AC7FC01DEF071CD31C62B5B3A494 +:1020A000B35D9A452C77125DF6CA0AFC0EEB707A86 +:1020B000BD0ECCEF297B4858C04F7A0ADF165ADD97 +:1020C000E376118AA57619560BE335C3EADCB48CA6 +:1020D000A6F6F34CC92F2E4627F185ED76C033C303 +:1020E000BA8BE9AFAF458404F5E7B0105F45BFB4E4 +:1020F0002763695E1B624508F3A17AA151BAA6A7BE +:10210000ECC7816D5F82EF4544A3F4718C49EB3BD2 +:10211000E10DFC59F2757F11EF6F358FF98ACE3AD8 +:10212000E6B1578BB8133AE9359ED680734034C474 +:10213000305F6252E17C7A18E7D851E469DF5E9F34 +:102140001638C7FDDB64FDAC07FA6E02FF17753D5C +:10215000985FAC72137C0B79DE26B8EAFB6D8326A0 +:10216000E13BBCB499CFB9F6BB85D8A475B6CB52C8 +:1021700078FD46E1592FAF567C786CB65F64E31C5E +:102180007ADFE914893485CBE47E991F70493E4B90 +:10219000FB1FF39ABF448435FA647E8185FB5BD0D4 +:1021A0003718974DFDADFAC015B226829F6E5C9D23 +:1021B00003FE99121C0AB6948B72E26F397D830973 +:1021C000E87FF692E0D903605753061601FFC3BFBC +:1021D000295B592EE7EBD9842163C442235D0FC9E3 +:1021E00096F4A5A785D9E6F967A52878365A19BEC9 +:1021F000F1DE66BF8679EE96C2C470ABFF460D6D08 +:10220000AA93C5162FCAC716BF827C636C711EE5E0 +:1022100087FF61A2672CE5DB8A937D98EF8FB282FE +:10222000FD30CF4C6BCB3CF017F76591CC9F517FC5 +:10223000590197CFEAED4A7F3ADDF5227A05BC7A5B +:10224000DDEC0C835E757AF8A95D049DB99D74D9A7 +:1022500033DBCBF3CF52E748D69280B8DDD5997700 +:10226000A5483C51B905F0097AC7F7C47C7A66DB0A +:10227000F8BB456956EF474412D94E924A72BAEEFE +:10228000C76CDA59AE02F0218BF806200851DE2027 +:10229000AF9C6BD0CA01DF452440D59574CE47FF73 +:1022A0007E519A83FB8F3F6F63B8E6781C8C7FF773 +:1022B0006A0567C23FE03CBABDB92C91D6DB6F5DC1 +:1022C0006434E0128BB1D2314ACB7D43A83CA58760 +:1022D0006DF4BD54FE445DC94127E56D6B9AAF04B2 +:1022E0007CBD0D9ED25890F9DF6C01AC93FFA87EA7 +:1022F000F63A0FCB3BC2B6B0600AEDAF6A85E70590 +:102300007DFD53B1FED2F7EC3CFE5FEE97F2DBBAF7 +:10231000CC9AAC24FAEED8FB44975AF7FC33240E3F +:102320003AC5485AC7DA1C8728C43A3486AFE8470A +:102330000442F3B5DDFFC7909CDFBB7D319515D915 +:102340002EC61BBEB3A4D13E5CEE75007CD9EB84D7 +:1023500005F376AF9D6251C84FD7A83E6FF5348B19 +:1023600097F2790DB2DFE8F197A875FCFA6B6B393B +:10237000E4680B75D617E74EBFE48D2C2F101FC7EE +:10238000FA6BFBA7F0FAEF54746E6F18EB8FF576CB +:1023900095576A7757B0BC12CD7F74BEA3D3DDAF1B +:1023A000A95FACEBD7C2C972B54E7FCBED12DEA1EF +:1023B000BF5998FF6409798EE43EF0757A90F17107 +:1023C0000F8FA7CB3736BB77651A78D8D2963121D5 +:1023D0002A9DB536C932BF10FDF816713FF7BB0410 +:1023E000F7B336E76001F6C96A8FD0BCE86F6E16A6 +:1023F000F6A1F8438C00BDD8EE7759C0CF6D0FFA27 +:10240000512A6C49A9A59C7F98F2D47E7AB69DE7A3 +:102410007D5DB69CFF72AD5D63B946F88B71DE8D54 +:10242000CD0EAE071DC42BBE24EAE2C27934AEDB6A +:1024300026E56577DD073B9652FE0987A8C47A4AF0 +:102440001F289CC2F4B2C6A6C5D0F87F497A9BDB90 +:10245000FD6598D020C76D5670BE00BD6408C26B84 +:10246000CE8BD600F6A3CD2EE9DEB6266523BECBF5 +:10247000E9197C1AFCEECAE51116555FF27CF4509E +:10248000B9B72B3EBA3B0F9E53EB13FE10B75FA0BC +:10249000F391268DF988CF22828D52BE8CC53EB82D +:1024A00022539E3F75CE8422F0E52F63651A2A954C +:1024B000F30A1D8D0D2F63B973E108C089D221483D +:1024C00053E2A81DF1DD374E917C49ED236ADCAC67 +:1024D00072E247C40716621C82D36FB393B8FFFD44 +:1024E000C9C2EFA1F3C3161B3C0438D7B514A781AA +:1024F0005EF627A496420EA44565E2DCFBD02EF5DD +:10250000C168B8D962C71E065CDE50FA22C6CDA6E5 +:10251000F193EBCA02E027247FF13E6B9FEC086F3A +:10252000A2F926DF3596CBF76BE147E7601DD7BBF5 +:102530007CE0CFEB26FBD3E35290A65A40B77BFE5C +:10254000C3CAF86E274117E75959A53F1D7A41EFD5 +:1025500080C3023ED0BB7CE1BFDD4DDF27BF61F70A +:1025600039E9FB3382BE825C45FCCA49FA61A98223 +:102570006F698BD68A7558D3868E9E4DE3FE44F3E1 +:102580003E3A1BF43B4F8DEBB6303CD7DD4E840F0B +:10259000FE922DE1BBAED61B06DE47592D02F4DCC0 +:1025A0007E879C877E4E9FB9C513C6BE1D95D522DA +:1025B000A017B55F2ECFB18EFA19F9E17BF97B4DEB +:1025C000AEE34627AF1F9C59D6F7E67AE11CEF6FC2 +:1025D00031C8DF676C6A9F929E033DEB4CD812CAEC +:1025E000233C3E2EC203B02FCE0885FF4AB98F850B +:1025F000AD3162417FE55E1FF8AE18E973820EA827 +:102600001DF31D616B4F003DE9F8D2CBD725F9D3FF +:1026100093890E52975D58BEDB8E7D42F4B0A0A721 +:10262000DF9663A05B9DCEF797F42A859ED11DBDF2 +:10263000BF23E4B970454EC08DEFC7397DB31FA6E7 +:10264000A2431AD109F8CD44A9B7085B3088F5BC7C +:10265000D7BBA018F0889E87CE97F6ABEF0665082B +:1026600027F477DAAB219CEF03F70C64FED927C778 +:10267000A2F8176191F03F509D7D837A6D4C065D05 +:10268000741D373078CAE0EEC72BC8F1E7E60CEBD3 +:102690006CDFDD390374B2FCE868BC03EB68AF752E +:1026A000F980E7775145DF3D75434CC44A70396383 +:1026B00077ADC67E3C127FEBAB1039B73A83C5E8E5 +:1026C0007FC6F4AB5722AF1DECE15D44783853D19F +:1026D000321CF32D700687016E35CE60562A2DED23 +:1026E00054DF60FF44F0C5400F75DE0606072E3844 +:1026F0007F399F324D8EFF2B47700CC639A4B5B879 +:102700007DD81FB616FE4EB87A723F47D5BE3E60E2 +:10271000F78F3E4BF33FF06056F1329A4F59C2FBB0 +:10272000372FC0F9FC48AF62967F145C0EA975DDA7 +:102730006E09A446ACA6F95ECBF3F55464A5131D4F +:102740009FB2ABF9BAD47C6DBE3E7F6FBE909D98B0 +:10275000EEEFD698EEF98FF22F8492789FC45896B8 +:102760006DE47D54E1F4611F6E88A3AD4372CC5BD0 +:102770006A3EA43F08C8C154CE72F216E11B88BD60 +:102780009C1123F74BC62A8DF9E54CE163FD71B628 +:1027900008644254ACCC09CEC2BCFF2DFE3F8681FA +:1027A000E403656E1EB7E5FDB88DD8BA62B49CFF30 +:1027B000C5F02FC45A0BEC1853945D6ACA2907EB75 +:1027C00043B72BF9680A529ADF54E1B763FCEB4533 +:1027D000D08EFD3C5D8438BD518439BD5944B8FE6E +:1027E0003BA285F36FC717F5AD23F84F7EA47F1E7C +:1027F000EC510678DF05BC127DDC9622E9E3935E9E +:102800006C0FE87949F43A59D107EDCFA5E887F67E +:1028100067BFE21CC33E19D753E1AD655922C16FB2 +:10282000726A76F1BD94BDEA6B8997091F79183EEB +:102830000734E278259DF4418CC2954E70F896429B +:1028400061F339791E7DCB5F3D11FAF861FFD294B7 +:10285000149AE778AB8BF1D2ECB386714E6FD55AF0 +:102860006C58D76B4B83CB93A8FCB5019A6F197D3D +:102870007F75CAE4C408FA810645E336176ACC9727 +:1028800027AD97FA7D791F7BA7DE4DFF5ED3CF9CE6 +:102890009FE8B7B6C650BB8985667D7D92587BD6CA +:1028A0000ABBD045F4F62D394A6F1F2806B2FDEC5D +:1028B000D2F5F6ED3917D0DB05AC8AC49FBE1D2BCF +:1028C000F968F3E843A3CED07A3F6BCA6628E617CF +:1028D00048B9F1684E6037F072DADE320770F9B04D +:1028E0009E20DB5F888FEA9DC24F34FD71BD87F368 +:1028F0009FD6A7717AA2DECB695B7D01D79FAEF729 +:1029000071FE9B1C7F13FA59152BF1A08FBF58D174 +:10291000E9AABEC31F09D0F8ABDEB073BEB2B16185 +:1029200002CC578BFB7E784F3CC17BF1331ADB49DD +:10293000AA9BFC0E17CDF7F697832B71ACCC7DA329 +:102940006512D848ED794D04698B3C9A1FF82DD655 +:102950003BECBD8F52019F4FEA47F23C8ED7FB798B +:102960001E27EBCB39ED9D1B780BF3F137B5AE4C41 +:10297000A3FEAEDBDE6ACBA074BC5F6379788C5FAC +:1029800084C38487F576792EAC4F77FAB06FC70E83 +:102990009EF2F87705F872F07D8C737DF2ACF13D14 +:1029A0004007232B6C68379DE812799D6E2FBE5F20 +:1029B000251C6A154D9C7A4963F8BCB3DBCAF33811 +:1029C00077248EE58173BBF75773BE2DCE474A56E9 +:1029D00047BBA9CFE7F6823EB0E8F941BDA05F9CB6 +:1029E00024FC085AEF2A55FFC276AD117AF1F09D0A +:1029F0004999A0D393C98D477F00FED5D7C1766092 +:102A000052443F7E0CFCAD4F9A0FFBEAB4E2C32464 +:102A1000A1C5E3BC9EEFD0E5C1E020E44FC6C97379 +:102A20001AE378098EFB337BF3F95BA0D92CD0E74E +:102A3000F63F37D9873CF5CBE3EC794CF6BB75C74D +:102A4000A3E7F6F17861A6AB67763E9EF343CA3DF5 +:102A5000B36B4DDCCD82CF553192F8D2FE07E3FD4A +:102A600098E77EBBEF681DF8F0E32EB6CB3CFDE3A4 +:102A7000BB3EDC8BF4FEDA92BBC0C27293197EB30C +:102A80007F72E384746AB7758F28C6B6184430CF56 +:102A9000A07914AE3F7B309DC62B0A2795F5A67210 +:102AA000DFB6E243BD29FF8B17B408ECE8258D1B88 +:102AB0003769B0B57CFD546FC89569B95E933C3EEB +:102AC000A86FF9612BCB9DE673BC70DDD952F4B7CA +:102AD000A377E3A224DA0F03B5C6134BB341BFBFFC +:102AE0002F61BD48D9439E6F9AFA8E5C57281D729C +:102AF00067A8C2C1F66A2CDF4EF953BB73595ED882 +:102B00006309F179129AE9F4418E3A15083D0A3ABF +:102B1000AAA5F6903F6B8B430957403FFB533F1FDD +:102B2000518CE8FBC4B7CA019FF9BB1F9ED09BDA4A +:102B30009D1A2D7C1A4DBDF2F9CF26B07E4C5A2439 +:102B4000F49253BB97A5DE44DFDD57583A0CE76695 +:102B5000C0DAC8E38805729C47D439255A8AD88FD1 +:102B6000C1A448EDEEA362942737251DC8109DF837 +:102B70005AD0B4341BF2E56541A70F7AE3FAEC5062 +:102B80003AEC5BFAB947E7D715B9D42EDDA1FAF5CF +:102B90004C6579FD52CF2DDDEEA5F7F78843DAE1DC +:102BA00074FBD806873C67B710BF009DE9E72C8D02 +:102BB0007B4D6E4F837D8D0E83629A67C623316C89 +:102BC00007B9D4F175B96881D25B4AD57939A3C701 +:102BD000B2175B68BD6F398337607DB70BBFB457E1 +:102BE000DB7C5EF0D33D4EFFF45C968FDA33B106AA +:102BF0003A0F6F467EBE95E4A55C83BCE4BCB4F39B +:102C0000B0D5E9AFC03897DA3E9A8F2EFEC2228A3D +:102C1000890E163F1C13069F58A6F4B565EEE14ECB +:102C2000F007F1B2A5E6553A17AF945F76F4B7D83E +:102C30005DC2FC0367DD85E0F512EDF720F1950834 +:102C4000F1FD607F346A5E06FB8B9FFEE726BA19B2 +:102C5000739E143AC3B916FD3DE1A91E70192BE20B +:102C60004DEDFC2289EDB0C295FC5F5BAF9AF76831 +:102C700085B7D1E78EC4831F2EFEA284F96277EB5D +:102C80007951ADE7D7580FA55905810731BF2B3FC3 +:102C9000F7D8B08FC7D8AC2268387F69FE8FA0DE26 +:102CA000FF759C69FE1D747E89F3BF531321D89B69 +:102CB000C55907EB4D4D4ABF6F9A57C876923DD024 +:102CC00053A1574D71B0FCD9E426FD92DA37BDD936 +:102CD00093F7FF7EDD7E526195F5B1EAFB9E1E966D +:102CE000477AC7C87A717347FF7C8E34DDD89BFB67 +:102CF000DFAF45063D8BFE273BBBD377592F6C5F7B +:102D00001AC37AE2BAE285AF0F46FDD2413CBEAEAD +:102D1000BFF6B68657E780DFD45B95FE7AF066E8AB +:102D2000C5EBCE3A600424FD55EA75A4B7F27921CB +:102D30006C21F7E4C1D05345471E7A0FE9A5322F25 +:102D4000A89EE0F8BEC2D7119BD40F8F40EF1CD2D3 +:102D500069973F02BDB1B0F3FBE0A4781BE83BBA32 +:102D60005C87BB5EAEEB991FD8A55CB92EA9A127E5 +:102D7000FC591FE406DF065E6FBC7D4B6CD060F72C +:102D800048B005DEC13E3C367BCB33B0738AD952A6 +:102D9000FFFA40C133F495D48B473B5AAEBD81E076 +:102DA00030FAAF162DE4ED8A6FE8EDD21E6E917AFF +:102DB000B74DDA0B9E7CA3079F8B040F59EF76A8C3 +:102DC0007AA20FD4370E907ABD55F343BF6C7F3E85 +:102DD00086F5FEF22952FE3CB7C4B211F68748BD13 +:102DE0006FF4B83C6AAFEC78A12637E3FD4905B72C +:102DF000DB141F7B52F975438D76A9D7D822190BA6 +:102E0000304ED300D6D72342D1D5DE7855EF4D448E +:102E10007ED96F860AE83D67743EA249F9A0C611C3 +:102E2000C9073C9F54F0D5F3BD613F57F5F0DFEC87 +:102E300057F2444D9CCCDFE10C7E03B8EE5176B2E4 +:102E40009A042A775D084EC4F729FF645D0F69BFB5 +:102E5000203849FB87BBA31EEB79727D7FB37DA32E +:102E60005693F611115E938FEF9B7AF2FA4E2F393B +:102E7000367CBD97E154B41770D81DC372850E27F8 +:102E80001D6F4F76D0517B2CD39743DAA98E7A5A97 +:102E9000DC467FD4D1C0C76EF0973FD659238E84CD +:102EA000EEF7FD2DEB3FF91BF4AF5B028E56C8F930 +:102EB000B72CF9F0169CDFB7547E7D2B97D798FD81 +:102EC000FE57F6F367F71B6680C7718B6EEF91F1C3 +:102ED000039FF651F61E69BF693F1EA7E021ED2F43 +:102EE000FB76674BBAD2E1F168AC0E8F78ECBF4A43 +:102EF00012AAD3E9FCDC6793EBDCA7EC3AFA7C6717 +:102F0000A60487F623BADDD761B7094B39D046E767 +:102F100023C1A9BD5F7024EA75B941B71FB6D99B1B +:102F20005FB5609C2597766E55C735CDD7685F9D98 +:102F300068DAB20729C199F12B9E937CADCD134974 +:102F400000BCABA9684C32FCA0B4C792651E72628B +:102F5000743C07FE6CA9B21EE77375A3D51F9B8056 +:102F6000BCA3B31DF51BB448BA113BA57E5F251A5F +:102F700053975A592F728E24B89CDEFBCB04F081F4 +:102F80002A97CBB904724C547C45D5EE55CDB94542 +:102F90005DCBBBCE276AFFEFB29AEC766D29A93ADA +:102FA0001E153F8CB07DAC931F4612261BF8589B14 +:102FB000C2575B14BEDA3AF01431D9D7DA1A8F65EA +:102FC000E25C3DADEBD13EE907AC7E56FAF5562802 +:102FD0003E58DDA37138E0DCDB6AF67BE969B55366 +:102FE000D8461BFC7DD505C2093CE876B0EA80B026 +:102FF0005D916CA80F0B27F27B2CB4BF5D8C379BC7 +:10300000C21FF743ED197F554EE11C43F92AF4879F +:10301000D412CE04DEF479759947147C57F6937672 +:10302000B615EAFC0CB91D8A6FF9D200B7FEEB1D8C +:10303000A6F6A7DD8EDBFC349F016173B9DEFF4F7E +:10304000FA497DB7C088D7ECEEE1B25EB5FFF9CFA3 +:103050003BDA5B655C0B89D13A1D7AA55E63C7FCE0 +:10306000DE77E8F6A4EF6690FC550D5AC8E984D3E4 +:103070009EE2604632A5A72D922FEE49A27C21E464 +:103080004839BE9EEF807B145DDFF3BE83E1B0E77D +:103090004DFB46D8310E2AF834A9FE4FD407877E5F +:1030A0006487BEBE70C0ECBCCE75CC595FEC049D8D +:1030B000CCDD50EC9C69B0272CDB762801F01AE8B7 +:1030C000B2B0DDE2C4B6A11C9775C26511F11AEA6F +:1030D000873A51DFE63AF83B2F95CFD99054023D1D +:1030E00043FF7EEEFA3B07CC36C079D03633DC079F +:1030F000379AF343F69AF36FF4133CFF7FF4BBE285 +:1031000088393FF4B0392FDACD713E2F8C0C4CBD8D +:103110000EFE950D561F8A2A5D96500CED6F9B4B47 +:10312000EE5BB1DDCA7E9E4A8F8CE7F974CFAAE1CF +:10313000909BABFF34FB55E84773DF95F0898E3FDA +:10314000AB3CF2EA57D08309BF1AC72B6DD5F8BC48 +:10315000898E4BD3ED325DF9C752DD8E5C60A4A73A +:1031600068BC9F54F1373575D543E1CFD0E17F7905 +:10317000E3830E9C4FF3269AD75F6DB3892517E43E +:103180009F21295FBBFC5EC0A762A4AC6B5D36FDCE +:103190001A9C57ADD3CB8FC37F71455D9938369458 +:1031A0002AD6BE3D01F0A9B84F13E02715BFECFFAA +:1031B00032DACD52FAD15CE54FF28CF4EE6DA176A5 +:1031C000B787351FE63F332A9E6CF6DAA87944C5E7 +:1031D00091CDDD7BE02B8C1B1D4FA6C71D556DFED1 +:1031E00026C61C6726F5EF2B9A365AB1FEDBF5F999 +:1031F00086C608ACEB0AD9B4C33FF5113297231E3B +:103200002A909447EBBF629DFCAE56C838273DFE1E +:10321000684E0CC9E5C4A70EBB1D4C179FAD4F648B +:103220007BE167DC19A51BA43DB0B687CCD73EA5D2 +:10323000B1FE59ABCEE1DAA7A5DD770EF1FFC412DE +:10324000492F7EC3BC6BD47A401FC672D120F5577C +:103250003D1E0A71527E833FBD86D6752459C647EE +:1032600019BF33C64719CB0DF669D6A775FDFE49C0 +:103270007BF899AD344FEB8FE27C90638508C48175 +:103280002E89DF487D64B2E45F5DF585C5AC9FB4EF +:10329000BF69F7C1EFB4AE58AE7FDDBC3CD6377A1C +:1032A0008327E2BC7D2896BF9F4D62722CECF955B6 +:1032B000710C0FBBD2273EC090E9301B5B58CE5932 +:1032C00077A343F9C1A45CB3EEE16CD63F3AFC604E +:1032D0000FC698CED39BEEEFABCE537FBE93EB637E +:1032E0007D4639F1A69E5E5D9E56E76BB827CE09F6 +:1032F0005DAFB8C92E02E0AB376D94E7AB0E9F9B74 +:10330000342A9772504FE3F97AB1725DDFB82B2DF2 +:10331000F81DD0955EBF2E291C8BB844517969FEEB +:103320009C2D6AFEB41E96F33ED2643CE4ECB8C019 +:10333000BD57018E3FCDC9011C6BC1A47A22FEC6C8 +:103340009FEF31AC5FC7B7F0FBF3A1777EF4606C01 +:1033500009E0A0C7531D2D96E749FC6532EEE37BDB +:10336000AA9FEFE5594C695A9C8C57FA68BCF40B3C +:10337000B82F0B38202791EEC77141B31D81DF5E56 +:1033800069980F8DEB04FC42AA3F1D9E847F3FE4A9 +:1033900090D93F89917E635B3017F95B8E14F830CA +:1033A000AF8FD4F9A6D3831052FFBDE9AD9E25ECB3 +:1033B00057547CF1E274A9FB6DED4C274497ACFFA8 +:1033C000ACBB319FE932A9438F55F4F9805BF633EA +:1033D000BE341DF604F86CFE8AF6E33BFCAF4A4EA1 +:1033E00023BA711BE53689FF68BAEAA08728BABA02 +:1033F00054FAB904BADAF6F7E88ABE1F1670774FA6 +:1034000057B52FECD813823FE0D9871304B53B6E34 +:103410006B48F5411FDBB222C14FE9A7B65002FA53 +:103420003B1EB6965F28AEE4638557F85934833F58 +:10343000F6C4CFEF9BC4710E5BEC1EB0BE05DB6221 +:1034400022316CAF9CC7F18D946F95F955ECF7580C +:10345000B0372ADEF1E98753BD1CBF1ACA40FC0B06 +:10346000C9C11C0F317FB39DE325E7BF6BF5810C0C +:103470001688F695985FF4F798C779A2D3058DD68C +:103480000A4762D77AA2083E6F17ECBEEF2CECBB5E +:10349000D1F19295CA1F15ED7F792F4FF95F4688BC +:1034A0001190F3082EBE08E88FE69327D1CEF4BA28 +:1034B000EC99A777EEA3791EFFA057314C316D9B95 +:1034C0005F4FD00A3BFD31BA7FAAAD313731780169 +:1034D000B8EAE96965C7EFC49BE4D3DEBD34C15ED9 +:1034E0000271C99CD6D82309A368BC9A8D76E68F51 +:1034F000353B9EDAFA18E8F9FD181FE2CBAA77BC33 +:10350000F2FB2B20F7EFB2A74C94CB7169A99DF881 +:103510005AE095F6541D3F55BF7CC5E11D2CCB21CB +:1035200027E878AADE75C0210677856759E3014749 +:103530008BEB02F86A6C9DC0F6C467BE74601F1EF8 +:103540007F4913BDB2BB7E5FB9E5F504B4D3F1D5B5 +:1035500081BF2E788B4CDA7719B7F3800F7487BF51 +:103560003D40C630D0B75B203EABF28398F044E0DC +:10357000F5C78B99CE3FB12D9474FEF88A54C8AF2D +:1035800095F650AA8753595EF9C49D8AFEFCE91648 +:10359000968142E958CFED1BAEE7F5CC1141A6BBB1 +:1035A000CAC7657CCE17A497EDBA001E6FCE97FBF5 +:1035B000E3934D84445AD7272AFE37F42F56192F08 +:1035C00021EE6079E44EB5468E88A3FC174A2E2D75 +:1035D000CEB7E8F64EA751CF5EB0795533F071A261 +:1035E000AFBF17EC57B4FE90829386783BEBDBE3DA +:1035F0007B497CC8FB03FC1DC909652847FB663B6A +:10360000DF23307CC770D3C7FFAE1A9FE61D077D4E +:10361000FF9354A98F08B83E41379AFC66FE92CAC0 +:10362000895E82FF1AB5CE8E7DBE798DDCD76A9F0A +:103630007FFEAEE41FF3C393CB79FF37DB23BDD00E +:103640002E7C609AC6FB3F3AAE5BE17FB35DED5FD7 +:10365000733DCDCBA619E1F992D4E3E7AC33C48F27 +:10366000034ECAAFBA80E4E54881719DCA3FACFC05 +:10367000A773D57E8FC65FF4FEBF3E9FF63F1C92B8 +:103680006AFFEBDF8B0D17F6F375EEF710C3A78615 +:10369000E40C0FF6E9FB317CFED43C68E5F8C3632B +:1036A0006B0FA55E4E747DB251DF9F667EDAB13F2F +:1036B00097C8F8F0CAE7B668A0CFE8FD79B232AC97 +:1036C0005D707F52F905F767A5F83FCB4F3BE06D82 +:1036D000DE8F73BBE1A7F5F9667EFA85284C1C8561 +:1036E0004A4F4516DBD3A3E0AAC3339A2FF6CEF791 +:1036F000327CA3F9A240E88B018E3AFC74FA1422C2 +:10370000C8E374D0AD4E9FFAF9D4419FD1EB35C3D5 +:1037100031BA7E5CBEE0F9047E25E3456B9A3475D0 +:103720002F20F42ADF1B81BF845B37BC9A9162CCC7 +:1037300087A3F28D51EDFD51F94054FB60547EA1F9 +:10374000A97DCDDE430E19371A31B58BA9BB96F58D +:10375000A3AE724258FAFD769F758440177DDA3920 +:103760007ED57E8F08B92157BD28ED5967BCED097C +:10377000904756C44A39F08C47E59364BEBDA763B1 +:1037800025F89F5EDE1E2BEDC16702ED0949067B21 +:10379000436B933501F7035AC2D29ED5753ECB18C1 +:1037A000AE2DCADE35DEEACAACBB0CF1C4B97CBFB3 +:1037B000EADC72BBCAE79500DFBA9CF86711F8FD36 +:1037C00028CC334EDAAF45C86F435CC82C893251E0 +:1037D000F99B6509D0E76735C9B890D96BCDF89CDE +:1037E000E39A9618F182BF98E339E6425FCB855E93 +:1037F0006A2EAF52FBA02A6A1F04951D3E7A1FB4A1 +:10380000E8FBA058142BFB11FBB716293E3CDE5AEF +:10381000F8ED1904EF3387AD2286F2E79AAC622502 +:10382000D6B95D63FF1E2E2E607FE9FA9E0EAF367D +:10383000EC93FEDDCB176DCFFF6938FCEF357BFED7 +:1038400050F4334ADBF6BC9FBF1FF917FE35F30F68 +:10385000A26BFBB297BEBA15FCF6CC4B3102F47CDE +:10386000E6A5D7327F88FCBE18D6EBCFDC1323FD4C +:103870000B2FB9D95E72A6AF94E397BDF865510BD3 +:103880009F1FCBE5FD8EFE0EC6E3B9A67F3F0AFB68 +:10389000FEB9265A15E48297E279BF2CD817CB7A65 +:1038A000DF9917BF1C6E8C6FF9EFAE478F6338E35B +:1038B00016339E039D26497BFA82FD973F05FF7DC7 +:1038C000EDEE038E59545FF6EBBF15815F9E794E86 +:1038D000CA3BA7ED2D4FC0769AFA74DD43F6CB6153 +:1038E00047A4CE7A0BF1ECD37BA7625F74858B84FF +:1038F000C3198203D64570A9049FEF0E1E83018F62 +:1039000061FF8CF0387BABE45F2304FCFD9D70D13C +:10391000FCB2DC1D766ABC7E59FED29745E02F17BB +:103920005BEFB5FF9FAD77DE3FED7A25BD9F55E795 +:103930006734DD77A5EB17BEC7F99D6E1FCFF71271 +:10394000F7FB9A7FDAFDFE3F83EFA7FF69D77B3154 +:103950007CFF46E1DBED815DF3CC8B7FCB14FFC0B8 +:10396000BA5FFD5F4AE7BA7C5E6AF51D2EA6F6AF28 +:103970008BC6777DD92C6DB09CB14CF9015E4BCBD9 +:10398000DE24EFD74A3DA84CE94167FB6BBCEE65EE +:10399000C2C2FEB9326735CB99657DEE3F2BE3C7D6 +:1039A0002C3C9FD79C576EE538FB28BD6F5C1F6B86 +:1039B00004FE86434B697C6A77C86DF12C93E5ADB4 +:1039C000289FE093F2FD843ED7729C6999F3CD194C +:1039D000B0038F7399F5A26BA3F49CABBDE6FA72AA +:1039E000F15C0AEC6CE58576419A829880F606FDDA +:1039F000EFEDFE1E86C3D5A261B9C7F55F820BEB62 +:103A0000A9360597CC02A917EA70E90A07054721EC +:103A1000E59C68B8D95CF736732A484F95EB62FD90 +:103A200056D75375F845C34D28BDD7C64376C2D780 +:103A3000D647FA830DFDF1BA3BE0A9E0FD8FC23510 +:103A40001A3F1783F3E780F3B0AE70EE632BB661D5 +:103A50003F5DA9E4F171B62499EFD36C0D30FCC23F +:103A6000FC5DD9E73E1BE48EB1AE241BC74D79FB4C +:103A700026417E84E8F84D86101936118A815DDF73 +:103A8000D3F232F65DC543315EC0BB8F4DDD37B535 +:103A9000497B37EDD6505C09B7F73B92D16EAEC08B +:103AA000CDA88A0CE1D3647B9198CCE184C28AB81A +:103AB0003A4AF15D056468B4BBCFC6F798F98FE068 +:103AC0000D771DEC0CD4AFDF922CBF4F28E1EF43F4 +:103AD00016F9BD1FF7C2EDC293A9D164B3CA3CDF8A +:103AE0003B023D62452CFB0D26964A7D41DFF7AB3C +:103AF0000BA4FD434F33067879FD568B2F0D72EEE4 +:103B0000A4E503581FB1C6056A9F879F6E673CFBFB +:103B1000D72A567EE7BA6198DFCE1E3E90CB894900 +:103B2000BB384E7DE6F21BEF7C8FCA83DB62B9DCCB +:103B30003F201828A0FE4E68DE5B9FA78299D71F02 +:103B400072200E7852E3AED3B0DF4D9A16CF719546 +:103B50009344E3EF107F29A6C938A7D69D6E07606E +:103B6000715DE3591BF4ABEB466B606BA235D693EA +:103B70007907CDA742F96B6F51F46F8D13C1E75CE4 +:103B80009857DFFC1C2ABF0EF7DD2EA0DFDCAFB795 +:103B90002FD536C02F95A5EEC3E8EDD10FFA7D489D +:103BA000C1636E81F4EFEAF9AC32D97EF6EA98D6B9 +:103BB0005CE831ABED91FE947E35B0B41AEB9C9885 +:103BC0002326AC875FE02EABD8C4F315AFB27DFCE3 +:103BD000C16C2FF4B8A050F1176BB3D93ED53AD6CB +:103BE000E748A77CEB83D91EDCC398ED92789F1D34 +:103BF0007032DE5BC73646E04F687F5463FC1DF5CC +:103C0000C8FAA3AE02B66F64590FF4633F44B1F42F +:103C100043FC7640B01EF3A868A87803FB5C7C4D9B +:103C2000EB1E8EF859C1C46B4DA07D027AB6F91215 +:103C300070DE24D802CB0B380ED2F7E31134CE63FA +:103C40003FB60AD8FDB2AC321EF45881A4878988E9 +:103C50000F253A7BC2DE320FFD94E9E5C99EE12EC5 +:103C6000495F02E3B7DA3DF9585FEB8A580BFC7203 +:103C700013EF91F446F4EFB4D1F76B6C220EFEF71C +:103C800020BE2778DEB2D416D848F93E4E6173279D +:103C900003DFC5AC3F8F18149C8B797D7AB7B802CF +:103CA000FAE4ACB50FB21F44C797B0358FEB41E3D0 +:103CB0007CBA25BB0471383A7E470C2ADD5060C4BB +:103CC000D3348DF143EB7162FE5F0D9CB909F5545D +:103CD0007E00F89B581AE9B7A810FA5F8DF0E33C14 +:103CE0004D133E9CCBE78484F3B9D53686B3BEDF53 +:103CF000F57DADEF679A37EF5F7D3F46EFE3ADF5BA +:103D0000F26EE1B67A27A73FAFF7085B9E10DBEBB8 +:103D1000D338BFB3DECB69637D01973F57EFE3FC38 +:103D2000EEFA919CDF53EFE7FCDEFA724EF7D5070F +:103D3000B8FC56021FE23A687CE6373A9FC1FC2C79 +:103D4000259D7C40C79F7DF5580BF8B48E3FD277F8 +:103D5000F9BD8973C2CBEF4D742717FC4FCD9FF887 +:103D60005828B1A413AEC8C71AF824F2EEE4CEF571 +:103D700021347074B281CFD9E4FD7EF0C3D492CEE9 +:103D8000F5C31478BEA4132FF86E4C14DE40873AA6 +:103D90005CE8FB486A89112E6DF78F00DE2B2D3E03 +:103DA000B67788961D2F70DEC5FEDA4C87D80B7B60 +:103DB0006DCB8F5C02F651F0C918DCE3A9D484CD39 +:103DC000606FF8CEC25861339C5FB7D52599F22950 +:103DD0003F3AF20ACC67D7A5063F079D1FBDEBD43B +:103DE0009F9FA6FE9FBCFBE3C141A6C7B62D8F6077 +:103DF000DC25713EB64750DBE4CBD8FEC27E32FCF8 +:103E0000E1DEE34C75AECF0CC5B7C28EF684C3F3CA +:103E1000FBA761AF5D69F5808FCE5C2ECFE50F808B +:103E20004782FB1F151E45C3231C5756A1DBC557F0 +:103E30008FF777D8630868090372E4FD7565CF3999 +:103E4000FA838C1F739CDF0AAB4785DFF89DC3BBE9 +:103E50008EAF8F17DDDF87E982ED2624F58B3AC21E +:103E6000C387773B22B8E3FBA1E6E47706346F8A89 +:103E7000B885CA83AB5F3B827EB4BAC31C8F107413 +:103E8000BAF83E9D08D9DB8CFD6975AF723BD1D283 +:103E90002709F6623E97AF827FD5EFC03D6DF004F3 +:103EA000D0CDCC828302FC5534681EF86966ABF233 +:103EB000D9FAFD709B2F6D1AC9A77903ACBCDE0936 +:103EC00005F2FEFD23C025FB051AF8DCD5ED58B33D +:103ED000D76A7C7F7F7643B1638EE17C99A9CA67FC +:103EE000E1BD0443F930F44BFDF45E5D3C03FBAFF0 +:103EF000B77A4FA17741C90CF097DEAE0936C801F9 +:103F00007AFB21036CDC7E821AFF11302B9ACFBD25 +:103F100005520E9CE9BA61B39403BD0ED855F5F174 +:103F2000661694AC449CF0CCB578E580E4413B093E +:103F30003C2988472FDF02FE75F9009B5A9FECB79A +:103F4000469D77B43E07FC9F9F22C29CFDC0D29E37 +:103F500057B5F317EC5FABFA430C9FE35543E47995 +:103F60002B0AC3C3A74ABF8DC97E3EEE177F4A60A6 +:103F7000BFC76E2BDB792995F65DDD1EEC93F185CD +:103F8000D176DC9777FE21E18276F3DDD2EF7731CF +:103F9000BBB97EAF6CC1AFA4FD5787E302ED3CFB1C +:103FA0009B16BCB822F542F7B7E0AF011D46DBD146 +:103FB0002F66678FB62B560F30DBD72FF5BE989E36 +:103FC000AFAC2BCAFD6828EE8F05BF370070AF1B62 +:103FD0009E8BF8A2F97563388DBE4F56593788DB32 +:103FE00057D50DE5FA88926748E0E6FB88BA3DF3BD +:103FF0005C382F51FC9D792C584F93A5EFCFD9BC3D +:1040000089F0C7E9F784CF6CB7B2FE7066FBE04D6C +:10401000D897F39A1E7258A83C3240EA5FA7A2FCD8 +:1040200002F3B71F637F5DAD6866FC10DE84D3E8E2 +:104030001F427C608FEEE757FD0BF742D0EFBC4686 +:10404000CDBF05E791B391ED1FE7B67FC71E32E004 +:104050007383A2DFE8F93F0879D5E09FC77C319FE1 +:10406000EA98C6D31F60273C1BCFEF81105E7F0705 +:10407000FFEDC90D43394E795EE3AEF932EE2CDE29 +:1040800003BBCA89A878C86D6A1F6E1B20E5BE9362 +:10409000CA0F7672A795F92FE68B7D7C4233DF93AA +:1040A000DFA9BEDB3940E265DC00B9DFF4F6F31AC4 +:1040B0001F6479F0F4EE6BF3B0EFCFEC7D27A11F16 +:1040C00095EF55EB3BB33BBE1CF038B3FB6713F6E3 +:1040D000135D9F6A1C9B82FDA7F7FFCA00F97EC291 +:1040E000A926E9EF136119B7540B380F35CEB30782 +:1040F000BF63A07FA7C76B9DDCFDCB044B61271E70 +:1041000017381B567B733ADF9F88B5074310B4ED11 +:104110007BC7CAF7B4F029F5BFA6A021C0FA806A10 +:10412000E770FAF970D5DFD512FAFD3A755F84CEE3 +:104130002FF70A9AC7A2C1716C4FBF758877FACD65 +:10414000E0C3AFDB191F8B068808EC179FD5B93782 +:1041500002CF8BB27DEC67BD75A8E233692DC31029 +:10416000DF51B35A137EC495A565CAFB286AEFB721 +:1041700066FBDE5A05B9F34D2967D784AD22389422 +:10418000F9473EE2C9C5C8483EE2477A139DF8099F +:10419000446D0A8F471D324EB32647C6C967A978BA +:1041A000939A641957DFA6C7DD4F89E423CEA5E6AD +:1041B000B9748E7369D3E3E8A91CF3AC2991F1F4C7 +:1041C0003A7C6BAA0EE6839E6B66FABCA86FCDF6AE +:1041D0009CE678A2E7DDFC3E8FE505B78A4F8BDDD4 +:1041E0001423CF6FBE9F92B2355DBE873250EA195D +:1041F0008F75C4C5FBB3A7D23A1E5BE24AC0F99BD8 +:10420000A2DE8B98E768E079EAEDF4BCBE2EE4B15B +:10421000AE3645CFF3E2545ECD7F5E4203CFBBD5D1 +:104220002EE47D8767E4FD9313E9CD7B38EEF499A6 +:1042300001785981E61F9EB397EB49AEC77E0969A5 +:10424000CCCFAB7E1E13C1BA8E3F23EDEE55F57574 +:1042500093A08F57D1B6C7BD324ACB713FECB8BDE2 +:104260002113E31EEF49A90BF20EC94B4370AF6255 +:104270007D26EFEFCD311AF87515490A90F7CE89F2 +:10428000865B1F93E5D0D445D5E6188EE30F5239EF +:10429000EE370A928340373ABCA9DE14A7D89A6D4C +:1042A0007ED7C03B50EE3FEF4089F77E03A53DA08F +:1042B00036BEF1A739BC3EB94F083F2A6EBFB1E008 +:1042C000672988E3C8D3C01FAA1A635B2177546D9E +:1042D000B7471C454C27B2FD6427B79F470C0DFE1E +:1042E000E27942CA97E3ADDB391EECB36DB12558D4 +:1042F00017C197E753F5831F4AF8BCE0F6CBF735B3 +:10430000F8ED1F717C6B06C7874F44CC18D3C9608A +:10431000C6C3F1E48622E0B36AD5080BC78958A565 +:10432000DE45A95FE3387927F3D11AC5476B578D6E +:104330004A1C857DF5965540BEA99A5AF906C6FBDA +:10434000CC46FBE902FC3F1A6E0B064ABE5343FB08 +:1043500004F77A6BD5BDA6EAADF29DC6EA95D2AE5A +:10436000287EAEF17B408B632309186FF116AB0FEB +:1043700078AA7634E6F7A4716E52FD50FB20F892CD +:10438000DEDFE2D8C639E86FF18E58E6E7370D4C2C +:10439000617CB4353E940A39B76B7B39EFCE764FEA +:1043A0002518E377F4761DEB6994F6A4CF44F3F770 +:1043B000FE409F7CBE3D96E745F8E4FB62D1EB3DB5 +:1043C00069A7F9D0FC4FEE88E577FE3E213E18C282 +:1043D0007DE524FF031CE7F0B695DFB9C1BC701E74 +:1043E000CD0D9BBFAFEDE14B449C64ED5B65367C2E +:1043F0007FDB40C98F090FDF6638BD65E77BA1D140 +:10440000702F55ED3AF6DD8E78A6A393BD25FE4FAD +:10441000EEECCFE74A6B92BAF76B6FCC443CF3C932 +:104420001DFD8BF97E258422C27B9547E2FD6452F7 +:1044300063A6C750AFD31B2E18A5813EF04D2EE4C6 +:1044400004298F553BD7723C0BE29B8797701A89E2 +:10445000B9407C32D123EBEBBB07CAF31ECF6F828E +:10446000EF721C3DF3AD4607F87250C98F35DBA3E0 +:10447000E39B65FD3AB5FF30DB143DAE1AF1DC215C +:104480008DE362AA97DF310F745ABDF0C19B41E7FB +:10449000FAFCAB6DA21CFCA055B3F23C5A63C56D8F +:1044A00053C00F8DE3E4C8D493DAB9CE27D4789BF8 +:1044B000067A75F95634503F35CBB5B5DC7FB66E0C +:1044C0003790EBD1BF233038704EB48E55F5DDAC4C +:1044D000579F5FF47A75FCEE517CA635DBFBC06814 +:1044E000792EB1BDE6DCD7431393FF8E7E0DCDB59B +:1044F00023CE98F6FAA18142DAE314BFAAA6F961A5 +:104500009EF91BCCF1E5059BCDF981DBCDF9C2DD30 +:10451000E67C519339EF7BD99CFF05C61D26F57DBE +:10452000DC3787BE8F14FABE3746EAFBC843DF4745 +:104530000A7D1FE5D0F79187BE8F3CF47DE4757846 +:1045400043EF471E7A3FEABF5470DA877753AD7C5A +:104550008EB15F7D94D522F7C58D0E53BCF1BECAD6 +:104560003EFABD34BFBC87E552F7B0E47D29433C39 +:10457000A8BC776555EFBD46DDBB9A63695E999E21 +:10458000DDF5BED5CC94E0470387493A433FFB7243 +:10459000C28316F1F91EEB827DB065C5272BA116EB +:1045A0008D48091E1FD813F797DBB7CA7BC911E6E0 +:1045B0002F2D4BBD6F5DA5CB21D47F054115F42B6D +:1045C0002A93596EBAE8BBAE177DCFD54C1FBA1CE3 +:1045D000F7A4BD3D1D7CF2D833CEB598E7B1587530 +:1045E000FF6886332AAE41EA478BEED736E15C8A14 +:1045F0001924EFF39F3B4C50F93B7439EBFC509678 +:10460000AF3BF26B350BBF279196CAE78F2E8765BC +:104610006A248781EFD1FA713EF75F6F31CD7F4019 +:1046200038CE446783B62547DD33E96D6A3F646F52 +:104630004ED43D9381E67B0CD3961EC0B93C75EDFC +:104640005053BBD98151517053F354F2E86C250794 +:104650002EBEDBC974B4F83D2BCB2F95A8247E5811 +:1046600089BE088F959B55BC749DF99CADB489108B +:10467000DECD9AA5CE9F27F05D3ADF57F127D1F71F +:10468000A78A1BB6E2BDD279BF7967B807F7EDB448 +:10469000B1BD609488CD0F160F227C65DAFD1CAF8A +:1046A0005BB32B2F09EF97B51D7E85E3315909BD0B +:1046B0001CF59E38E073638394EB6117B32677E2B1 +:1046C0007B63438FB87EAECE7519E256580EFE0C52 +:1046D000712B20BBB15AC831A473FE8BD479A1EFE2 +:1046E000B38F94DC2FFAC97EBEABEA6B4A5E7B22A5 +:1046F0009950D76639F8975538978A1BF32390CF8E +:104700001EDB987A13C1E3A198E03558C7A237CBD6 +:10471000121047F7C5763BBF13F2E7754F3D81F89E +:10472000E6550D4F39A0FF57D9C20E8EEF7C66A318 +:1047300003F1CDDFDAB691CBE76CAB603D71AE58DB +:10474000C87AE2A7FAFB176A9F54966A1B3C34EFBB +:104750009D83A41C5C1927E5DDF1D6D1AFA4B05C24 +:10476000A5719CEFB4C0E4F13D219F3426F13B4597 +:10477000B355FB68BA3FF78655DA6FA7493C77F720 +:104780007ED2D4F3D94CE7D3CE0F62FDE9FAC8004C +:10479000A9AF169AF5D54A87F72DF075F15BA2738C +:1047A00061B01FF8EC2C17D712BFC2BDC6C068ABF2 +:1047B00059BE1A176FA2D319C240FF34F40D087204 +:1047C00031E4A74DCC35B59F3E6D50145D9774D63E +:1047D000333FB8C2743FB216257CDFA4B44BB9BCDA +:1047E00067798DE9FB5A31C5740F6FDE664DEA2992 +:1047F000BB93D8DF58A9DE8F9B1194E5F3F7CA72FB +:10480000314398F6575699EF5FE5B967677D4CF7E6 +:104810003BCCC07FE77685BB10711DF7FEF16E03C0 +:10482000EC06A6FBFECA6F8979B39CABEC48B505D4 +:10483000D28E541B6A76E05D0C82BBAD07E2331B5F +:1048400034C607B577F62891F9251C6F6D8E1B438A +:104850007F88B39C7FD85A817D125D4F7427E5DD38 +:104860007D32DE75EEFAE838CDB5EC379D0FBB90A2 +:10487000016FA7077999AF566DDBF56A6F82C3D4D4 +:1048800080A4CF9AC6C9F68AC2AEF44474CDEF3F75 +:10489000CF11445734DE1CDABF616FF7EB869808FE +:1048A0007D435FFF7CBFA4BFDEA0BFA2AE74571BD9 +:1048B0005AE8E0F74D3668E2A16CD91EF0E80D7AAF +:1048C0008C8207C32F0A0E3A7C3AE015551F0D97CC +:1048D0003941C1F43167AF160E6B5DD7D11DDCA233 +:1048E000F13A57343B70DF64EE6ECD87F7DD753FEC +:1048F0008E1819653F7A2397ED47F3030A2E3A1D68 +:1049000004249D4F392FED2137E07DD3A19D7431D3 +:104910006DA2793F5E7F3E95EBFF513AA1939FEDEB +:10492000AF974A1FFA3A743E0C3B21D3858A938E87 +:10493000DE1FD176C6F383545CF43031CC1417AD4E +:10494000F8677776C68EFB8669173E372A7E23CFB7 +:104950000D9D7F06D579105C614F15C6F3462F5724 +:1049600076B7457717F0BB1F994B7B70BB8A580F02 +:10497000C7F5572C95F1D615D4CE6B901F562ECF78 +:10498000CDC439F0E19AFE4F84F0BEE45D29A9233D +:1049900009CFC756D853F09EA3DEEEC315E33311FB +:1049A0002F72ECC19819FC6EEE8F9C02EF5DD4EE75 +:1049B000E925DF67B3BA5211A779EAB91EFC0E9157 +:1049C000B750CA93352B9E4FC03582EA15F2FCDDF5 +:1049D0009117CC2A64BFF3C6ADECB0F06C2C02FF8B +:1049E0002F02CCA9FDA7E8AB84CF213ED73F8DF5A0 +:1049F000DC807E3F7DC6EE831F96EAFDF0177D5773 +:104A00008B7C7C15BF2BA3A5C25ED3F69E95EF6170 +:104A1000CEB31E2842BF35F57B33611AA82CA1F313 +:104A200092F0FC4E4CB0A8B027E6F154263B9F56BE +:104A30006FE4F7F40D76DEA1A8AF859D97F2C1A5CE +:104A40007989F23DD60BDB7975B834AB77C2B6AA5B +:104A5000F31BF23952C8E788EB817C8E3CE473A4E7 +:104A600090CF51BE60BD598E2B507E57DDDE9B65C9 +:104A70003D5B0C7937542A0A16F279EB2A80DEB9AD +:104A8000588BF3415E5CACC97DBDF84FB1D2EF14D9 +:104A90004E37D143F47BA557B6D3996CA0DBABCE90 +:104AA0003B85F17EF2589164CA9739D34DEDC77BAF +:104AB000B24DF5DF4A1B60AABFDA5B6CCA5F5B7060 +:104AC000B9A9FD75BEB1A6FCB7475E6D6A3FD93F77 +:104AD000D9949F5A7EA3A9FDF5810A53FDF419F3D9 +:104AE0004CF53706EF30E56FAEBCCBD4FE3B0B97F1 +:104AF0009AEABF6F15FCCE5D13F4AA18BCEFE394DD +:104B00007A90C563837CB8F8CD3C17F03FBACCB23D +:104B1000F042F10A4B147DEF1AECFF3EE8B9AF7A90 +:104B2000BFA9AF7A87E9DE4289CF0C1191EFA18A44 +:104B3000E674D05174BBE8FAD1F1073FF3120E3F8F +:104B4000DC3EE3061BF1A3D1230E0ECDA57CC68E61 +:104B5000076EB0113F193DEAE02F73289FBBE36D4C +:104B6000991F72F033D46FDEB14EB69F2A58F418F5 +:104B70003278FC0D21CCFFAA9CB53E69FFE0F8100D +:104B800036440C37DC6371BA22B986F73B000FDC80 +:104B90008F073C9046888E911E243A46FA32D1F116 +:104BA0006CE25FAF121D233D4C7A26CA7F4B7A26FA +:104BB000D23748CF44FA3BD22F9136937E89F45FA7 +:104BC000EA6770FA6E7D90BFFB7D7D25A747EA17E7 +:104BD00072F907F5759CFEB13EC4E59B0B959D628D +:104BE000AFBDCDF82EABEEA7D4FD92CB168A96784A +:104BF000F081165BD2C7CE4E7F63F77ABD4D7C6CD9 +:104C000090BF1285FF59E02FFAF722E27282BBC1F2 +:104C10000FDECB9E9A8787D46F38BFF01584FEBC19 +:104C2000A7DE1388EEF75E450F6B06FB7F85FE3A25 +:104C3000DED1577EF40D76E92FD7FDE87A3C82EE7F +:104C400037E73F431C911EA770A553DED3D6E3067A +:104C5000F4B8A4F19F0BDEFF6356DBD8BFE6B6893C +:104C600008E20BF4B8A331E888F03E2645307FE82F +:104C700045E58E12F95EB395D2CD5F51FB22431C00 +:104C8000548C08C19ED94BF9E3A91DCF6FFCE741B5 +:104C90008E8B1AA3E22FFA3AE8E092EDD85FEB860A +:104CA0003E84EF7BB41C82FD2DE3DF0927D4EE7137 +:104CB0004DC60DE8F117681F2FDB47D06FBFBFD27D +:104CC000F8099DFB64C3D8E66CD81936DCE9F4C159 +:104CD0006EA6FF7E001B93082E53155F63E73AF222 +:104CE000EABC14DB7AB15DA854D5FF282778127886 +:104CF0000BC478FE14CFFB2AB72FE481C94A5EFEAD +:104D00003B786BC777D178D3F1A5E3C31047C2F8DE +:104D1000D0F1A7E3371A8F3AFEA2F1A5E3F17F2B7A +:104D2000DE2EB3C9F7F4626A9CFC4EDFC5F0785BF7 +:104D3000BB9890484D86E706EF059C2BCE7B5F45E0 +:104D40007E9618CBBFEFA1D75FD54D7DF0F3767B74 +:104D5000A201DF572A5E3EA79BF67A3BFD9D0BBD65 +:104D6000FFE5DDB45F3C5EDE072B7F4FDACF5F5798 +:104D7000E726FCE9C5C30D719A8573592E162E29B5 +:104D80005F7AE91FF0A5ABCEDB4CF266B9907C8A66 +:104D90000E661BE8AF3CCA5F7D8D9247AF89924794 +:104DA000A3E5CB7183951F3B5B64FF83EF9E5E3B66 +:104DB00098EDBC66F905F15EA0E75CAF95DF9DD18B +:104DC000DF39D5DFCD1DA7F6D138BC9B4BF31B2FA8 +:104DD000827C1E7E4B8438BD9AD683F45A11E1F34F +:104DE000F33A62BCC87F1B213E943F143FE916DCB6 +:104DF000CD2B1B5AD68FDFE5E87C17F0D6C1C3F860 +:104E00005DC07FF318DE053C38CECBFEC5834E79FE +:104E10001F18FBCD9EDCB99EDFD0B9D38FCE854362 +:104E2000742E217D85CEA57EB4BED7E85C42FE9A65 +:104E300082A502DF4DF09AE37CF4EFAFF594910286 +:104E4000D23DBCAE2DFA551FC0F3F5A4FEE3B0DE93 +:104E5000D793468C037E5F4FEA6591698C0369772F +:104E6000DFEB747F6DA1BC977AAD67028FF77F018E +:104E70009EAB81DF6878DE0B991571E8CE7712D290 +:104E800072E05793FC67D1F36F1659297F1C5323A7 +:104E9000B9614CDD289EE755759773FA49BD280422 +:104EA0005C6B9C125ED17628B1B997C518773C34FB +:104EB00026B81EF8ACB134255C41F59F6C786727A5 +:104EC000F40792A31FC7BC6AACDEB53ED8655E97F7 +:104ED00071A3E2EB439953DC5DE9516C9E6AD29376 +:104EE000747AAC71EA700C317CBF9DEBE77D2BD4FA +:104EF0007BA47A7C4B9F18F9AE82FE3E26E419BE55 +:104F0000DF1825370C8F937CAD4F8CE4D31DFCCA82 +:104F1000A1CE65EA6738F8E003F25D8ED5BDFCCF1F +:104F2000611DBA9DF65C9F787EEF644C645022F25E +:104F3000E5B00BD0540FAA38AC6F0D5AE8CA213C2B +:104F4000BCD53FD8C4FBCEFAB515FCF18D3C4DF471 +:104F5000D060D71DEA62BDF022FB377AFFBF3C5814 +:104F6000E99745A2C8743F4EE185E6C7F138E7DE10 +:104F7000B5725CDC1891FF08EC166587ED8898EE39 +:104F80008C974C937EC3F18765FC4FA71EDACEF356 +:104F90007CC5A389C7687D316916E135F0B1586FCA +:104FA0009CF01AE6135F906CCABB7DBD4DED1347B4 +:104FB000E698EA93FC034DF53DCA4B4CF99E812BD4 +:104FC0004CED7BCD2835E5D383D798DA67544E3145 +:104FD000E5FB2EBCC9D43EAB6EA6A93E3B5465AAE8 +:104FE000D7DF0315217F7341AAE4D3F8CB5DBDC899 +:104FF000D4AEDC3587EF43E635FCC0D49FF04A7B66 +:105000004388FE015D7D810BB7948E4F33DB21CA4F +:105010003C635F068A3254BC92103E2FCE81328FA1 +:10502000D92E91E12AE7B8F98C8BC433D98BD439C6 +:1050300070A974101C78613AA8917245341DBC02A5 +:10504000BE942BFD04C6F5C24F60840BFC04C63C25 +:10505000FC04C6F6F01318EBE12730D60F3D6CC602 +:10506000FFB06633FE471C29BD247C5DDE62A60BC3 +:105070001D5FA33E9D72417CCDA07FF89C16F29CE3 +:105080001F47708A88AE78D3F1A5E3EFBF8BB7D105 +:105090005178FB42AC1D86F7DDCF54487EDDDDF94B +:1050A0007DCAE92F2D223EF87D651789D6E7F5F8F0 +:1050B000CFE8DF21F9BEB5C58D73E24B4BCB60E085 +:1050C000335DC8DF8148480D4E427FBD104502FF69 +:1050D000DEBC1B8A716E9EE9DB7EF487F8FE2EB77C +:1050E000E4D3A4F2411E6CB9CBCDF12FFABC6ECD46 +:1050F00090F13FD38B94BCE0937140371549F9D9B7 +:10510000EDF3707C7845A150F19B22F3D6C106FEE9 +:10511000B9C4C6FCD3161BBCAD08F762D4EF5CE97A +:1051200071CEE2E2BF6F321BF3EF784F709EFE4EFE +:105130006624B63FF5FFD8BA64F37BA2B5A2E33D7F +:1051400051E41F5B92AFBF7F24EBF5DF1111E158F3 +:10515000F899FBAF1726F9E131F5FEEA63EA7DCC59 +:105160000161A7294EB8331E28CCEF640EDAE63170 +:10517000D50F6E4C33F53764AFD7545F1C2930D54B +:105180000F3DEC33E55B549CD0B0E691A6EFA07FD9 +:10519000405F1871C46F2ACFAA5E3409724A5F2536 +:1051A000B75FDE526EEA2FEB4C9C0571B91B8B7218 +:1051B000E4BB8C9F064CF57CC6131C6FFDBE7C9730 +:1051C00051D77F0CFA10EB410E217F97CA417A0C20 +:1051D000E84D8FE78E8EAFEFB807E3ECBC77638CBA +:1051E0007FD7F5978E38789BDFC2F1022ADEBB832A +:1051F000EED47BAAFAFB9F4FDCD5DB4497DB8AA475 +:105200009FE95881DC275B9C324E62D9DD2E81DF1D +:10521000BF11B69674E0E7D922694F88CBF3EF004F +:10522000FD1D2B907EFC27DD9FCE43FCC3AD43E4E8 +:1052300038B7582CB74D2E94EFBC3E67D017F729DE +:10524000BA7FD427FBB93551CE47FC50BEBFA4AFBF +:1052500023CD2196F3BB62B69601A0E7EFAC6DBCFF +:10526000BF3F55DDE268B0CBDF530ADB21FF4C2C9A +:105270002539AF1876BF6F1E765D8EDFE9B2B1DDDE +:10528000E640D1ACE9241976DC7BC9A2FF061E26D4 +:1052900002BE940EF2C978E83FE14C1966D85FA4CB +:1052A0002FAAFB11F2DDFC3A07F3791D8F063CB102 +:1052B000BEFA3F757F40A873A99F24AD0EB8E8F4ED +:1052C000A3C345BF7FE2BDC31ED8E4E27B2CE5D07B +:1052D0006375788FF149BCC60E9178453BF015BDDA +:1052E0001DEE49B4BA3ADBFDBFBA2FD101DF8BDC2A +:1052F0002FEBEE3E59F47EE23F83FDA0BB7B64FAC8 +:10530000FEEAD83FA2E54619FF20E11BEE67617F68 +:10531000B5FEBB853A1C460E91FCFA98CEC743A455 +:10532000DFA6CAFB4FF81B6FFDBA02F473BBDBE1CB +:10533000859D22A8CED531FEC04FE19798B9CE2EDB +:105340003652798557EAB748E1BFAA0899CFC7B95D +:1053500022901861FE2AE5CB65F76B9EC734FCCE20 +:10536000AFB9DDED42F633D7257F47E4F6E8F753D2 +:10537000949E3CF7227AF28021EA9C1D2286B07C22 +:10538000A4FCEC954E7D5D66F9E85C58FAA9705F67 +:10539000C52AF1C47157FAF9EB853FC560E7277854 +:1053A000C6E1F7D542CB6DFCAE54347D75C0B39BDE +:1053B000388036F57E45873F47D5B7853E6BE5FAA1 +:1053C000DDB1FC8EC4A9E2E622F82B747F4EB47FD7 +:1053D000E8DC12A7407CD9B9DD6EF69FC38F9248F6 +:1053E000783F61D9953A32BB733EC116ABC9BF1045 +:1053F0009DEEC80B4E1E42F30DDA05FB6D966DB7A0 +:10540000FA9652FF6B5C07F95DA82B35FFD421BCDF +:105410001EB3BE3691CE45AB413FD7FD1FD1EBEA5F +:10542000E04BA365FCFFB9907C8FEE5CB97CB78341 +:10543000F89A1FF07E4F04584E992C482ACBFDC78E +:10544000FD2853CF17339EA69D1FC5EB0DAEBE9C06 +:10545000F3F959210BE284C5CDF2DDD1E99BC58A70 +:10546000382FE282A60F83FEB57888E4E3F9EA7C60 +:10547000E9824FB54FF0F68591CF2E5AAA319F5D44 +:10548000A4093D7E87F9AC9EFFAC41E5C7CBFCE2A9 +:105490001532DFA27E5F61ABB263607D48B13EE84A +:1054A000DDDB959D03EB438AF5A11C7C0879F02197 +:1054B000E4C18790071F420A3E84F299229009C7EF +:1054C0001BFC3CE30CFB0B7E9E71867D023F8F3103 +:1054D0000F3F8FB13DFC3CC67AF8798CF5F0F3189C +:1054E000F3F0F318DBC3CF63CC8B915777E6E1770A +:1054F000F34F36E5A7925C3ECEB0AFE1E731F60F51 +:105500003F8FA9BFE01DA6EF6F1675A6EF73172E8C +:1055100035B5BFAD4E33F9816E53EFB3CE5ADF834D +:10552000E9A43227D038A427FFEED49D76E871D6BF +:10553000A679A0D345B5713E89E7867289778B90AD +:10554000786EE7DFA3FE6C89FC3DEA45E32F1CCFB4 +:105550000B3FCA38BBF4A320851F0529FC2848E16E +:1055600047C1BBF5F0A320851F05E5F0A320851FEB +:105570000529FC2848E147410A3F0A52F851F01D2D +:10558000FC2848E1474139FC2848E14741F951F8F6 +:10559000730CF75A20E7F633E977448726FDCE638C +:1055A000CA438E35B6871C6BAC871C6BAC871C6BF3 +:1055B000CC437E35B687DC6ACCFFA5C8CBFB0CF2AA +:1055C000AAF13BC8A7C6FCE086D02BB05D5DB7E171 +:1055D000F4CB48F3132B9ED388359C7DF6F3E9F08A +:1055E0007BE5C7579424D15EB56B7F9D3E8EF2411B +:1055F00015275724DA59AE0CAAFBB9C18894FB07CA +:105600007F95CEF505051E3D1E96F953F16EC1F24C +:10561000A5EE8FD5BFF7098F957FEF4BB5EFCC5F28 +:10562000B85DF4F87A3BE68F8679E08630F879F158 +:10563000125709E229FF13DF5AA5AF0080000000CE +:105640001F8B080000000000000BDD597F5454D769 +:105650009DFFBE37338F199881C7C80F01C119103C +:105660008371D4370366D368DA27118F7F10CFE0B8 +:105670006E142CC28C0C160D28527342D3641985FB +:105680002468B48B0D1A934D7560A34DF760CE60FE +:105690004C635ABA3B099AA43D49639393DD9C3508 +:1056A000870C92B5A66ECA48CE56B39BD6FD7EEF48 +:1056B0007D8F194649FB57FF583D9EEBBDEFDEEF4E +:1056C000CFCFF7C7BD7352141ABD5680937BA1711B +:1056D000BD0B60F1902A5AB2006ACFC86E8303F006 +:1056E0004FBBA7C606B050110196E33E6DFF4223A3 +:1056F000BC6DF200FF83FB7FFC37CEC1FD4E009BEB +:1057000022B07D65653240367D8C1ABD4B00EE8D32 +:10571000811AC2732B6317EECBC0FDBEE0AAE5442D +:10572000BF5A8246AF8BF1B9A706F72D0E0AEA20C1 +:10573000EEBB497FBE05904BF4B269FFF01BA9C4D4 +:10574000E7F83A7E2E959FFBF1F174C67F5D8F30AE +:105750006840FE2B87401DC0F30E4DDEC54311038C +:10576000F1F3F7707E3A5DFFF3459203F7F9A1FD7F +:1057700091B915C8BE428013C0F43A477A9595395D +:10578000185F7DFF42407DED003B48D43C807D6545 +:105790007D5E2841BEA283F191CC2A40317E3F5BE1 +:1057A000033EA47B6F45665516D11D01A51487FBEA +:1057B0002B7E33436F66B6BB185D1416E08EA010C7 +:1057C000494355D605F7EC25B3DD1FDC753E9BF646 +:1057D000BF008A93BEE3DA373D71F9EE5487C51CEA +:1057E0005C73C105D182265A0A303A4788CB0D1026 +:1057F000F93B40FE6EC504E4971AA36C92512E98B3 +:105800009B2302F2ED3073BE5506D77B4F229F2FAC +:10581000DE36400A934AFB2EF3EF1D8FDD187F1210 +:10582000E974BC6251680E9D66F6DD2F731D7C47DE +:105830009169399EEF318181ECFC4A4A0870C97F39 +:10584000D4008E39009F8BEFE46CC4736D25A122C8 +:1058500011EDB53D7F60A9DD0070AAD4B75E413976 +:10586000AF0647D7D5229DF19E9773C86E5FF43C73 +:105870009011619455AB1BF90434FB041E6DA926ED +:1058800025FD4BC212E0F94B5DB8E30E927F6546F1 +:1058900094F4EA335D8AA24EB5F8F726FAC1FFEE1A +:1058A0009C1CC0F5A65EBE4E7F6EE2BF6D3D26BF5E +:1058B000B40C47305E8A9669EB689F07E1C03543B8 +:1058C0003A8DC6F87E5CEFFC7860C5B9B2F8F9167F +:1058D000C59675390DFFA3807213E500437D862FB1 +:1058E00001AFC9E3F5AED08A7326C483A0EE549805 +:1058F0005F4212C5C37623A861867B10011DF95D46 +:105900000BD7D3FFEEE80384E7A9F6521190FF8589 +:10591000321E4FF57B0C0CE7300CA15281E6F7B13B +:1059200038AD7F4555043CF71EDA831CB8FE4601AE +:10593000F3C7075D0E367FE0C66200F44375D4C23C +:10594000D637DCC863E3C61B8BD8FA7AB21DFA37A8 +:10595000FA1A84F622BFA9600A9B4F8D4088F82767 +:10596000E3D40D7215E1FE4E55189D4338BDB1824A +:10597000D1ABBDE166F4EEADF03F9E4DB80F21EE28 +:105980001DB7E27E63BDB38AF458B456008A571D32 +:10599000F7BEE0EB0CAFEB10AFB47E7F708F2987C2 +:1059A000CE0D01D3CF87EE0E5BE3F84E8E878634A3 +:1059B00068A7EF608D2EA73CA2DBBF8184BC07FFE8 +:1059C00005EB6A55B4774306FE3F9F030CD0CF36F4 +:1059D00017FFFE4AB8AEB6C708B000776620BD0212 +:1059E0002304533C7C6EE17355B2F3B90DC779665D +:1059F000089AED2CE461258E85B82EDAD93EB0F0F8 +:105A0000739083A384EBA9382204E086879D830CDE +:105A1000ED1CC95F887C2CFC9C6AE4E722746E82D2 +:105A2000F227FAFD9829BA8DF05E2F8A2CEF5619CD +:105A30003EAECAA5783C98E9E1F1CAF173498B57AB +:105A40009FA7F2AC1BCF75EC2BCD85AFC16513FAC8 +:105A50008DE2B32123FA90A000BCAF80BAFA6E8029 +:105A60003AD0EC857200E27E9336FF4A79E4A35E79 +:105A700017B3339BFF5A09D40691FE3EEB0FBD24AA +:105A80005F3C0F7A550A8B34970A3ED7AD7A6C3E4D +:105A9000103E788783E8713FD64B7D265A47C098E1 +:105AA000282E9A5CBC4E8091E3F2D2BE575FDA2F6B +:105AB000C4E5BE64825AE667888D53DE3AB27EAE94 +:105AC0007BBF964F0957CF6D9F3740FB27F57A85EF +:105AD00071E140B0BCD86566E33F77C9E040C30DD3 +:105AE00075CD65F397304E680C7795B1F5D35D0AA7 +:105AF0009B9FE9BA9BCD7FDAA5B2F9D9AEB56CFC14 +:105B0000599797ADB73ABC9F29CB89699FD98BF537 +:105B100011CA62CF9E40FE0D5D12903C1365DC1EE3 +:105B2000C7B7A7AAA4C7F147249617C1185D44FBBD +:105B3000EBA50BE7CDCEB81D2E76FED0849E24B308 +:105B4000973A90CEA6768B4279DBE7F1FE81F2465A +:105B50009A4B9128CFF85C21C18176CD97793CCCC6 +:105B60002F89B91FC2F1AC9BF3AB2EE67571BE0154 +:105B7000CE01E2CA95A3FE91E4F4797C40B8D83214 +:105B8000E27EB3C041752A5322FF34E462DCB03CAC +:105B9000142B5A6F8BDB798E9BD7DDB354E3719C4A +:105BA00024BBB37DA1DE6294AF2E4B667647DCF654 +:105BB000A4D869BFC8F6119EC5045C4B6054C92FB8 +:105BC00052A714EA4692989D54C9C3E2050CF6B850 +:105BD0009D304E548A9FB87DE437C96E319BE418DE +:105BE000A47A625DB88670EFEF13EC940FAA0CD51F +:105BF0006F12DD8E43CEE214B45395262FD49A59FA +:105C00003C346BF5ADE370899447FBF60932CDABBC +:105C1000ED0E4627765090071D1457B8CF13D73B8B +:105C200070F41B2C2E02211CCB678F9F6F1F1A2D27 +:105C30007C8D70175125923720637A7025C4579F49 +:105C4000C0709C3C5FEE3670DC03AC263B6DDEED35 +:105C500094B65869FEB6A9C3457A3866F41DB82FC4 +:105C600042FBD0AFDC1E87506E27E7E749A0BF8517 +:105C7000E827F0D771F02DB78DD9D72F3BA43C275B +:105C80008D3293F3163B68F66F8A844C0AC96344DD +:105C9000BE38DF24874CC4674B8F5BA27CE23BC0DD +:105CA000F9F87A33A525D43F1965A910E7F5A93C81 +:105CB000FE50BE10F92B8076B15B890FF695D65B4E +:105CC000EDE3D7E40DF4654ACD33D60F9908DF75BF +:105CD0005ABEDFD2B34A12E9BC91EBDBA6F9D9A7D1 +:105CE000D9F33F7759F603E6F4BAFEB74A05C26521 +:105CF0007B9E5B403D1BDD3CFEDB347BEAF6A893DC +:105D0000FB983ED3F63C8CFA23C966D9CBE8231E18 +:105D1000821437817E4E3FD0EF975C386E35FAA4FF +:105D2000798CBF8DD19BE67BF4758DAF4521BE206C +:105D3000FB8A080F970F6F2C627AF43F6322BBD95E +:105D400014C71AEA3311070C973A1E1ACA79FCE9EC +:105D5000FA77B98D8C7E57523CE9F5488FABC0017C +:105D60003FA8C8B7692ED6C7DBC4951E4F7A7CD52D +:105D700041B48EEAF631C91B992BC4E31EEB61FBDB +:105D8000E9DBD489B39AFD36697E40BBB07CA27F43 +:105D90007F51F3433DD935E13CD123BAFDFAF7CA2F +:105DA00048E92E577CBFCEB7DECECF915F081FFDEE +:105DB0009ABEB4BF83ED1767C473D374BF3AF47847 +:105DC0000ED5BF6141A1FAD77170B4F0618AEF536B +:105DD000690A65A7ABAD2776E451713586981F74C3 +:105DE000B99AB13FA1B8DEAAD5BD40E4F6F1AD2E17 +:105DF000F29D7027C45FE0E9530B294FA2FE11CA40 +:105E0000131F9FFAF987F738E2F54AD7674BEF007F +:105E1000CB8B9B0F647A0C3C2FF6525E3CEBE6FD7D +:105E20005B530FF717A0BFA87FD3FDEAEF11587D92 +:105E300068EABC2B447DCF743FA0F933D98FBA7F79 +:105E4000753FEAF6C73A0490D02FEBF2BFAED9FD0A +:105E50009C16079B34DC6D6A59C5F2E2965E7F3969 +:105E600095DF3A6DBD2E30737DDAFEB26E7FD713AB +:105E700084E3A930B7FFD401138BFBA9211BEB17D7 +:105E8000AF76BCFAEB0DB8EF7747068AA8AE27DAF3 +:105E90009FFAC4AD5ABFF81DB43FF58BB7B1FF8769 +:105EA00054A7F4F9778E6BF62F0EFFFE67945F769A +:105EB000A52883C8B709FFDD8DF6B93AF4B4A90067 +:105EC000D7BFDD2C6492BC9FBA9D5CCFF080A998AF +:105ED000FAFF76B70CE9B4EEB82D9E715421C1BE1D +:105EE000540F047BBC5FD1F7533E1A463976EFB2AC +:105EF000A4C332A29B6997F13E62F58833EAAE2EC5 +:105F0000F7C42EFF0FE8BE3261E1F86EC5F3A7A912 +:105F10001F5AA51475B8E2FD1C648587C9FF0D3BA7 +:105F20005D1EAAF7C8FF6D01F53278386E162C8811 +:105F300086487EBDAF94303F99711C14B9FEC506EA +:105F40003EFE636A7851FBD7F47B0B5AA3D7481EF9 +:105F5000BD9FD5FBD8451E8E0BBD5FD5FBCFD9F2BB +:105F60008E042FF416A3BC521628DD8E384E753AD7 +:105F7000C9F947D7B3202DFC13C249C1CE3B3DD44C +:105F80000748A9D04B7ACCF7707C26EB39E1E4F6D0 +:105F90009C4D6E5DDE693B2018EFB6C7E5D7E5C1C5 +:105FA0001E5615A92FFBFE12D6174EEC518AC84E6D +:105FB000B3E937E1F4B1388DE581427576B6BC5A64 +:105FC00017108244D7D46963EF0E7A9C04B4BB23C4 +:105FD000C6494614E59FEA2BC9A0FC3F21605D211C +:105FE000BD765944860B4DBF93DABD8DFA531AA97D +:105FF0003FA5CB0DF5A7347F49BBC7517F4AEB5571 +:106000001E3BC305DED86CD4AFD5A76AF11FE1F5FE +:1060100077ACB384E9A9AFEBF5774C8EDAEC09796C +:10602000F7D376AD7E211D8A1FE82C8113C86AAC98 +:106030006FC226329C72F9F473BB4D9C3ED49843D8 +:10604000279CD4B7D4487E5CDFDCF98149C0D1AB52 +:10605000E1757E4958CD25FBD598658AD3AC74D5BA +:1060600049FCB2ECAA33B1FEA7796B25AA8F13CEF7 +:10607000C80299F6BB2DCCDE63DEDA357988AFB184 +:10608000A399F4F203BB0565AC93EE938FA728F4B4 +:106090003E532D42AFC0F011910AA87EEF11583E39 +:1060A000D0D77FB5C8D7E821390CC37FF80FA2FB42 +:1060B000789A42FD0D7C857C313FDE49443166A2F1 +:1060C000988E981D93DE4392DF3FE64B0EF63E120C +:1060D000FBA5010679FEFB779A37FFD204298EB81B +:1060E000DF5B34BF370FFC2D7B77081C35B03CD706 +:1060F0004CEF20383E471F31E53DD17F5F0EE12256 +:1061000070A8EA4810EB4791005ECA2F9F1AA3358A +:106110009407AE0CE4DAF750FFD4D6BD10F07B60E4 +:10612000E0C9221AAF0C586A293FAF966B56672216 +:10613000FFADCF67B2F7B98BADFC5D60FB6F4A195D +:106140000E9FD4FCD0FAA7D16332D6FB665C939144 +:10615000EE7F87D34241FCD4DA75B6C88031F37440 +:106160008A6F2FD9E9417164C337285F0BA19379F6 +:106170006CBF2357FE9A3C7299EE5388C7B6BFFF97 +:1061800088D1F95C7C675D1D9E6F6D7B399DE83C15 +:1061900078F883BB6491BDEFFCC0934D74074ECA81 +:1061A00094988F0E2C65EF8082DAE761F89DF90EE6 +:1061B00092CC67507B473CACDD3FAAEDDE0D7515F8 +:1061C000CC0FCC9FB3C9D77296BF47E9F3CDA10CD2 +:1061D00009A85F8D8024D32803EB43AF18A093F860 +:1061E000EAFD87BEFEA2968FAE64F415116EB79DD0 +:1061F0007CA688DE093FB3F179FDC98DBFA23CE5DD +:106200007B2185F7C34690143CD714E4FD2CB4D809 +:10621000D9FBA0CEFFB4278DE9B1ED68F98C7A47A0 +:106220000F24B4FE9911D686D97DED9A9BFAA48BE2 +:10623000C64833E1E022F69341E64F5E972EF61909 +:10624000D6D07A70B700D43F5CEC7BD9B6C01AEFD9 +:10625000B76C15E108E5A3B633D87F7028325CEE41 +:1062600090F57C645D43718E7D934CB8ED78EDFCC8 +:106270001AE0730061767B6ED7FAA5E9F999611689 +:10628000B7AD43BC5F680D0FBF999F45F749AD5F40 +:10629000D0FA9036AD0FD97186DBA5EDCCB8D49489 +:1062A000D8E797D99F28C08EEDC3D37B6B0FE356F9 +:1062B0003FF9ED1ECCA7C3DBEAF6601237B9F9BB94 +:1062C000011863AC8FDB5FF63EBBAFB6F568F4CA6E +:1062D000DE7FA298E95B3327B1DFF9378F899DD341 +:1062E000CFA33DD8B94E73FA52CA77D72D7C0C563E +:1062F000027B5F088E5942DD6867A3C5F729E1F28A +:10630000618377782B7BF76A5F46F84425187FFD19 +:10631000DD21D93E46CBAACF08E7235A1D8AB4A572 +:10632000F6527FA0EEB01A69EC6EB3B27E41DDF595 +:10633000BE85EEF723BF4F15857482486C54443EEA +:10634000E939BE2FE87C2E60741AA8DE4404EAD333 +:10635000277FF1DB72927BB2303606A88A49F87E3D +:10636000DD6AC4D5FF7AB4777557B49CE4CB7E83DD +:10637000E7F31F99A097EA2318BDB01ED72382A682 +:10638000DF9722CBD72342E49F88BE37C5DAEB44A0 +:106390007994728E736FB1572CC7F182DD50EA2168 +:1063A000BE266BAF80F629D4EE4152FE5C2BE15D38 +:1063B0005055E844FAA270BE8970F354CC0C74EFC7 +:1063C000EED6EC5998BF96D535C191453506DE70AD +:1063D00089C114E4FF149843B44F122D2AFB3EF2F6 +:1063E000D697028E05866BA319F8BDE06141E94698 +:1063F000511BA62EFFE83DA03C197293FEF7E7F86B +:1064000072CAD11F63536BC77DE8DFA7E4B059712F +:10641000712C9B11D795FCBF30F2BD2FD3ED68D7FF +:10642000CA58EA38D9753276F9D4AB15349AD9BB43 +:1064300061E5882192B2940E55A9D3EFBDC56C5089 +:10644000CD77C5E940DF3340F1B253AB033ABDD954 +:10645000CE4FCE7518999F62E68848FCAC6288EEF4 +:10646000619523A31F917E95666B84DE93C16CFAC0 +:10647000AFE9F764E27BA130F3F2625682E02636A0 +:106480001739DDDC7FDFCC98790FAC2CE7F79F4A1A +:10649000CD4FBA9D99F233EA158F735DEE29ABC4E7 +:1064A000DF6F5BF83BFCD408F61FB7C9AFFAF80101 +:1064B000F51FD8573C5FA25692BD75FFEBFED6F98B +:1064C000EA7ED5FD078F5C389FE1647E5BF20FC0EA +:1064D000FC55CDFCF5E5D03E8417E41BD4719FF349 +:1064E000FF9FBF92F3882F15C765B7E613CC23A98A +:1064F00077E0785DEC63F18CF9A59DECD3E86A1741 +:10650000F83B5F50F80BF3CB43746E05155BEA4321 +:106510006C227B5F01EA5F915F77676188EE0D2BEC +:10652000E63BF618E9FB63C0FB1DEDFDB4BB733120 +:10653000FF6E10F8F9EF194283DC2F41F63D981BEE +:10654000A27E91FA5BEA87BBE91CEE0B06D34227D9 +:1065500070BD3B24064B33D877D6F752AC323D5B47 +:10656000817D9FE6D3EE607C72BAF9F9D84312E3DD +:10657000E3CBE8584771EF9BE479EFB9F24C2DAFCC +:10658000479753FFFAD45E1B10DE74FFB2A779471A +:10659000DCBF06CDBFF92EEEDF7CAB1849213FB53D +:1065A000AC5613FD7401CB2BC5C9CFB1CF36937C4C +:1065B0003512CB7BFD356A1EFD6ED85F932352FFEB +:1065C000F3D33F7DF793C748BE774DAC6FEC77733D +:1065D00079FB7F51C2FAA33131F4EC563ABFC1AA1C +:1065E000503F7C44F0FD84FC67985BBE328075F0C0 +:1065F00039B1CF4C60E8B7894CEFFE6D561667FD98 +:106600004E6E87FE834B42416782BFB689DCDEC691 +:10661000583AFD8EBA62BED6AFE39CF447BF68F726 +:1066200077FC9EF0BBC5A4D6174C6AF69F5E075C4C +:106630004F38FFE7D67766FBFE95C5B5F6BD3F53ED +:10664000CDA33E27D9BE87F7B87B1792DF6DA24C4A +:106650007DF66C7E49DB281D3B91E00F2A5BA46729 +:106660005AF70AE67FDD3F47F4FA8378233F24FB9D +:106670000BE671FFEBF7EEF9C1F167D98F22105DE0 +:10668000447181F15446F7B431CA47CBE2F814544F +:106690008C417B1C8F7A5E4A8E4BA113F354FAED2A +:1066A000E232CCEAEC7531A2C7E504D907FE4571A8 +:1066B000D0BC7BD7853C1AFF82B8BC4275F37A8E7A +:1066C000EF2A9DCFD2F240BE21B488E88F89D0A2B4 +:1066D000FDBE27909D3FD1ECD78879660EC683A971 +:1066E00082BF1BC0A349F946B37783B6FF93CF316E +:1066F0006E96C5FDD5A8DD4B1A1E4D19A7BCD5F069 +:10670000A889C74367959A4487E55D9D0E38AE65B5 +:10671000933EFAB9C66DFF934D7DEDACE7A3F3321E +:10672000E9774E96F750DFD7246F4A05EA3B061308 +:106730004BC83EEFFCD1C07E0F18477B3B08272F8C +:10674000E4F27B5326A79151C1FBF73CB337BD025E +:10675000C777DCBF2DA5DF2FE0ABD17924C7B16CA3 +:106760006F26D1DBB7608AFDAE3196173311DDB1EC +:10677000BADF15925C8D9D6FB1BCDCA8E7E53F6385 +:10678000A764FBE8768BEB3B954D7DEB5FCB5E3AE8 +:106790004EFE0F3CE3FEEA60210000000000000016 +:1067A0000000004000000000000000000000004069 +:1067B00000000000000000000000002800000000B1 +:1067C00000000000000000100000000000000000B9 +:1067D0000000004000000000000000000000001069 +:1067E00000000000000000000000000800000000A1 +:1067F0000000000000000000000000000000000099 +:106800000000000000000000000000000000000088 +:106810000000000000000000000000000000000078 +:106820000000000000000000000000000000000068 +:106830000000000000000000000000000000000058 +:106840000000000000000000000000000000000048 +:106850000000000000000000000000000000000038 +:106860000000000000000000000000000000000028 +:106870000000000000000000000000000000000018 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F0000000000000000000000000000000000098 +:106900000000000000000000000033200010000024 +:106910000000000800003328001000000000000202 +:106920000000332000100000000000108000000074 +:1069300000000000000000008000000000000000D7 +:1069400000000000800000000000000000000000C7 +:10695000800000000000000000000000000033582C +:10696000000100040000000100003360000000008E +:106970000000000200003368000000000000000872 +:106980000000336C0000000000000002000039200D +:10699000000000000000000800003AF8004000007D +:1069A000000000400000393800800000000000486E +:1069B00000003A38004000000000000800003A489B +:1069C00000400000000000180000337000280000A4 +:1069D0000000002800003C2000080000000000012A +:1069E00000003C21000800000000000100003C22E3 +:1069F0000008000000000001000020080010000056 +:106A0000000000100000200000000000000000084E +:106A100080000000000000000000000000000000F6 +:106A20000000000000000000000000000000000066 +:106A30000000000000000000000000000000000056 +:106A40000000000000000000000000000000000046 +:106A50000000000000000000000000000000000036 +:106A60000000000000000000000000000000000026 +:106A70000000000000000000000000000000000016 +:106A80000000000000000000000000000000000006 +:106A900000000000000000000000000000000000F6 +:106AA00000000000000000000000000000000000E6 +:106AB00000000000000000000000000000000000D6 +:106AC00000000000000000000000000000000000C6 +:106AD00080000000000000000000000080000000B6 +:106AE0000000000000000000800000000000000026 +:106AF0000000000080000000000000000000000016 +:106B00008000000000000000000000008000000085 +:106B100000000000000000008000000000000000F5 +:106B200000000000800000000000000000000000E5 +:106B30008000000000000000000000008000000055 +:106B400000000000000000008000000000000000C5 +:106B500000000000800000000000000000000000B5 +:106B60000000000000000000000000000000000025 +:106B70000000000000000000000000000000000015 +:106B80000000000000000000000000000000000005 +:106B90000000000000000000000000008000000075 +:106BA0000000000000000000800000000000000065 +:106BB0000000000080000000000000000000000055 +:106BC0000000000000000000000000008000000045 +:106BD0000000000000000000800000000000000035 +:106BE0000000000080000000000000000000000025 +:106BF0000000000000000000000000000000000095 +:106C00000000000000000000000000000000000084 +:106C10000000000000000000000000000000000074 +:106C20000000000000000000000000000000000064 +:106C300000000000000000008000000000000000D4 +:106C40000000000000000000000000000000000044 +:106C5000000019C800000000000000080000200823 +:106C600000100000000000100000200000000000E4 +:106C7000000000080000487000080000000000014B +:106C80000000487100080000000000010000487288 +:106C90000008000000000001000040400038000033 +:106CA000000000388000000000000000000000002C +:106CB00080000000000000000000000080000000D4 +:106CC0000000000000000000800000000000000044 +:106CD0000000000080000000000000000000000034 +:106CE00080000000000000000000000080000000A4 +:106CF0000000000000000000800000000000000014 +:106D00000000000080000000000000000000000003 +:106D10008000000000000000000000008000000073 +:106D20000000000000000000000000000000000063 +:106D30000000000000000000000000000000000053 +:106D40000000000000000000000000000000000043 +:106D50000000000000000000000000000000000033 +:106D600000000000800000000000000000000000A3 +:106D70008000000000000000000000000000000093 +:106D80000000000000000000800000000000000083 +:106D90000000000080000000000000000000000073 +:106DA00080000000000000000000000080000000E3 +:106DB0000000000000000000800000000000000053 +:106DC0000000000080000000000000000000000043 +:106DD00000004000004000000000004000004800AB +:106DE00000400000000000400000482E004000006D +:106DF0000000000100004800004000020000000107 +:106E000000004801004000020000000000003000C7 +:106E10000040000000000040800000000000000072 +:106E200000000000000030000008004000000004E6 +:106E300000003004000800400000000400003B8017 +:106E4000002800000000002800003BD000100000D7 +:106E50000000001000003BDA0010000000000001FC +:106E600000003800008000000000008000003800B2 +:106E7000000800800000000200003900004000000F +:106E8000000000400000200800100000000000107A +:106E900000002000000000000000000800005198E1 +:106EA00000080000000000010000519900080000E7 +:106EB000000000010000519A0008000000000001DD +:106EC000000039800010000400000004000051A8F8 +:106ED0000030001800000010000051B00030001811 +:106EE0000000000280000000000000000000000020 +:106EF0008000000000000000000000008000000092 +:106F00000000000000000000800000000000000001 +:106F100000000000800000000000000000000000F1 +:106F20008000000000000000000000008000000061 +:106F30000000000000000000000000000000000051 +:106F40000000000000000000000000000000000041 +:106F50000000000000000000000000000000000031 +:106F600000000000000000008000000000000000A1 +:106F70000000000080000000000000000000000091 +:106F80000000000000000000000000008000000081 +:106F90000000000000000000800000000000000071 +:106FA0000000000080000000000000000000000061 +:106FB00080000000000000000000000080000000D1 +:106FC0000000000000000000000023E80080000036 +:106FD0000000008000000001000000000000000030 +:106FE0000000200800100000000000100000200039 +:106FF000000000000000000800002E7000080000E3 +:107000000000000100002E710008000000000001D7 +:1070100000002E720008000000000001000024E8BB +:10702000003800000000003800002DD000080000EB +:1070300000000008800000000000000000000000C8 +:107040008000000000000000000000008000000040 +:1070500000000000000000008000000000000000B0 +:1070600000000000800000000000000000000000A0 +:107070008000000000000000000000000000000090 +:107080000000000000000000000000000000000000 +:1070900000000000000000000000000000000000F0 +:1070A0000000000000000000000000008000000060 +:1070B0000000000000000000800000000000000050 +:1070C00000000000000000000000000000000000C0 +:1070D00080000000000000000000000080000000B0 +:1070E0000000000000000000800000000000000020 +:1070F0000000000080000000000000000000000010 +:1071000080000000000000000000000000002500DA +:1071100000400000000000080000250800400000BA +:1071200000000020800000000000000000000000BF +:10713000800000000000000000000000800000004F +:10714000000000000000000000003000000000000F +:1071500000001000000050A100000000000000012D +:10716000000050B80000000000000002000050C8FD +:1071700000900008000000088000000000000000EF +:10718000000000000000296000080000000000016D +:1071900000002961000800000000000100002970C3 +:1071A0000008000400000002000029780008000424 +:1071B000000000048000000000000000000000004B +:1071C00000002FB0000800000000000400002FB4F1 +:1071D000000800000000000400002FC000000000B4 +:1071E0000000000800002FC8000000000000000898 +:1071F00000003000000000000000001000005040BF +:10720000000100010000000100005000000000002B +:10721000000000200000080800100000000000042A +:107220000000080C0010000000000001000008B77A +:107230000000000000000001000008B6000000008F +:1072400000000001000010000040002000000004C9 +:10725000000010040040002000000004000010089E +:1072600000400020000000020000100A0040002042 +:10727000000000020000100C00400020000000018F +:107280000000100D00400020000000010000100E62 +:10729000004000200000000100001010004000200D +:1072A0000000000400001014004000200000000452 +:1072B0000000101800400020000000040000101C16 +:1072C00000400020000000040000300001000080A9 +:1072D00000080004000030040100008000080004E1 +:1072E0000000000A000000000000000000003068FC +:1072F00001000080000000010000306901000080F2 +:10730000000000010000306C01000080000000025D +:107310000000306E010000800000000200003070AC +:1073200001000080000000040000307401000080B3 +:107330000000000400003066010000800000000230 +:107340000000306401000080000000010000306097 +:107350000100008000000002000030620100008097 +:107360000000000200003050010000800000000416 +:10737000000030540100008000000004000030587C +:1073800001000080000000040000305C010000806B +:10739000000000040000307C0100008000000001BB +:1073A0000000307D010000800000000100001C187A +:1073B000001000000000000400001C30001000005D +:1073C0000000000400001C38001000000000000451 +:1073D00080000000000000000000000080000000AD +:1073E000000000000000000080000000000000001D +:1073F000000000008000000000000000000000000D +:1074000000004C10000800000000000200004C12B8 +:10741000000800000000000200004C1400080000FA +:107420000000000200004C160008000000000002EE +:1074300000004C20000800000000000800004C0084 +:10744000000800000000000200004C0200080000DC +:107450000000000100004C040008000000000002D1 +:1074600000004C30000800000000000800004C4004 +:10747000000800000000000400004C440008000068 +:107480000000000100004C50000800000000000255 +:1074900000004C54000800000000000200004C6096 +:1074A00000080000000000040000140000080000B4 +:1074B00000000002000014020008000000000001AB +:1074C0000000140400080000000000020000141076 +:1074D0000008000000000002000014140008000072 +:1074E0000000000200001416000800000000000266 +:1074F000000019B800080000000000080000142077 +:107500000008000000000002000014240008000031 +:1075100000000002000019C8000800000000000878 +:1075200000002C10000800000000000100002C11D9 +:10753000000800000000000100002C1200080000FC +:107540000000000100002C130008000000000001F2 +:1075500000002C00000800000000000200002C02C7 +:10756000000800000000000100002C0400080000DA +:107570000000000200002C300008000000000002A3 +:1075800000002C32000800000000000200002C3433 +:10759000000800000000000200002C20000800008D +:1075A0000000000100002C21000800000000000184 +:1075B00000002C22000800000000000100002C2325 +:1075C000000800000000000100002C24000800005A +:1075D0000000000100002C25000800000000000150 +:1075E00000002C26000800000000000100001480AC +:1075F00000080000000000020000148200080000E3 +:1076000000000001000014840008000000000002D7 +:107610000000149200C00018000000020000149046 +:1076200000C00018000000020000149C00C00018F8 +:10763000000000080000149400C0001800000008BA +:10764000000014A700C0001800000001000014A4EE +:1076500000C0001800000002000014A600C00018BE +:1076600000000001000016100008000000000008E3 +:10767000000016200008000000000008000016307E +:10768000000800000000000880000000000000006A +:10769000000000008000000000000000000000006A +:1076A00080000000000000000000000080000000DA +:1076B000000000000000000080000000000000004A +:1076C000000000008000000000000000000000003A +:1076D00080000000000000000000000080000000AA +:1076E000000000000000000080000000000000001A +:1076F000000000008000000000000000000000000A +:107700008000000000000000000000008000000079 +:1077100000000000000000008000000000000000E9 +:1077200000000000800000000000000000000000D9 +:107730008000000000000000000000008000000049 +:1077400000000000000000008000000000000000B9 +:1077500000000000800000000000000000000000A9 +:107760008000000000000000000000008000000019 +:107770000000000000000000800000000000000089 +:107780000000000080000000000000000000000079 +:1077900080000000000000000000000080000000E9 +:1077A0000000000000000000800000000000000059 +:1077B0000000000080000000000000000000000049 +:1077C00080000000000000000000000080000000B9 +:1077D0000000000000000000800000000000000029 +:1077E0000000000080000000000000000000000019 +:1077F0008000000000000000000000008000000089 +:1078000000000000000000008000000000000000F8 +:1078100000000000800000000000000000000000E8 +:107820008000000000000000000000008000000058 +:1078300000000000000000008000000000000000C8 +:1078400000000000800000000000000000000000B8 +:107850008000000000000000000000008000000028 +:107860000000000000000000800000000000000098 +:107870000000000080000000000000000000000088 +:1078800080000000000000000000000080000000F8 +:107890000000000000000000800000000000000068 +:1078A0000000000080000000000000000000000058 +:1078B00080000000000000000000000080000000C8 +:1078C0000000000000000000800000000000000038 +:1078D0000000000080000000000000000000000028 +:1078E0008000000000000000000000008000000098 +:1078F0000000000000000000800000000000000008 +:1079000000000000800000000000000000000000F7 +:107910008000000000000000000000008000000067 +:1079200000000000000000008000000000000000D7 +:1079300000000000800000000000000000000000C7 +:1079400000000000000000000000000080000000B7 +:107950000000000000000000000000000000000027 +:087960000702330000000000E3 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw.ihex @@ -0,0 +1,10626 @@ +:100000000000224800000068000005D8000022B867 +:10001000000036E4000028980000007000005F80B7 +:100020000000857C00005FF80000009C0000E5787F +:1000300000009B900000E61800000084000181B0E1 +:10004000000042E0000182380000008C0001C52061 +:100050000000C06C0001C5B0000011B8000286208D +:1000600000000004000297E0020600DC000000012E +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:10009000010600B800000000010600C800000000D2 +:1000A0000206016C00000000010600BC0000000018 +:1000B000010600CC000000000206017000000000F4 +:1000C000020D004400000032030D004C0004020346 +:1000D000040D005C00000004030D008C00110207F9 +:1000E000020D015C00000001030D01640002021812 +:1000F000020D020400000001030D020C0003021AAD +:10010000030D02200002021D040D028000000012F7 +:10011000030D03000018021F040D03600000000C13 +:10012000040D400000000A00030D0004000F023718 +:10013000020D01140000000D020D01180000002D39 +:10014000020D01140000001D020D01180000003D09 +:10015000020D01140000004D020D01180000006D99 +:10016000020D01140000005D020D01180000007D69 +:10017000031010000003024602101050000000019E +:10018000071011000010024908101140000000087B +:100190000710116000100259081011A0000000188B +:1001A000071018000200026904104C000000010052 +:1001B00002104028000000100210404400003FFFE1 +:1001C0000210405800280000021040840084924A27 +:1001D0000210405800000000030C200800030469CE +:1001E000030C201C0004046C030C20380011047064 +:1001F000040C207C0000004F030C21B80011048186 +:10020000040C21FC0000000F030C223800040492AF +:10021000010C224800000000010C224C00000000EC +:10022000010C225000000000010C225400000000CC +:10023000010C225800000000010C225C00000000AC +:10024000010C226000000000010C2264000000008C +:10025000010C226800000000010C226C000000006C +:10026000010C227000000000010C2274000000004C +:10027000010C227800000000010C227C000000002C +:100280000A00000100000001020C2000000003E849 +:100290000A00000100000002020C20000000000A19 +:1002A0000A00000100000004020C20000000000110 +:1002B000052004000084000006200780001004963A +:1002C000042200000000400004232400000000403D +:1002D00003221250001004980422B14000000020B4 +:1002E0000422C800000000060322C818000404A865 +:1002F0000422C8280000000C0322C858000404ACE3 +:100300000422C8680000000C0322C898000404B04E +:100310000422C8A80000000C0322C8D8000404B4BA +:100320000422C8E80000000C0322C918000404B825 +:100330000422C9280000000C0322C958000404BC90 +:100340000422C9680000000C0322C998000404C0FC +:100350000422C9A80000000C0322C9D8000404C468 +:100360000422C9E80000000C0322CA18000404C8D3 +:100370000422CA280000000C0322CA58000404CC3E +:100380000422CA680000000C0322CA98000404D0AA +:100390000422CAA80000000C0322CAD8000404D416 +:1003A0000422CAE80000000C0322CB18000404D881 +:1003B0000422CB280000000C0322CB58000404DCEC +:1003C0000422CB680000000C0322CB98000404E058 +:1003D0000422CBA80000000C0322CBD8000404E4C4 +:1003E0000422CBE80000000C0322CC18000404E82F +:1003F0000422CC280000000C0322CC58000404EC9A +:100400000422CC680000000C0322CC98000404F005 +:100410000422CCA80000000C0322CCD8000404F471 +:100420000422CCE80000000C0322CD18000404F8DC +:100430000422CD280000000C0322CD58000404FC47 +:100440000422CD680000000C0322CD9800040500B2 +:100450000422CDA80000000C0322CDD8000405041E +:100460000422CDE80000000C0322CE180004050889 +:100470000422CE280000000C0322CE580004050CF4 +:100480000422CE680000000C0322CE980004051060 +:100490000422CEA80000000C0322CED800040514CC +:1004A0000422CEE80000000C0322CF180004051837 +:1004B0000422CF280000000C0322CF580004051CA2 +:1004C0000422CF680000000C0322CF98000405200E +:1004D0000422CFA80000000C0322CFD8000405247A +:1004E0000422CFE800000006022380000000001074 +:1004F00002238040000000120223808000000030B0 +:10050000022380C00000000E022383800007A12088 +:10051000022383C0000001F402238BC0000000010D +:100520000A00000200000001022383000007A1204E +:1005300002238340000001F40A00000200000002D0 +:10054000022383000000138802238340000000057B +:100550000A000002000000040223830000000138AA +:1005600002238340000000000524000032E7000061 +:10057000052480000FF80CBA06249E006AA6052800 +:100580000A000001000000010223148000000001A5 +:100590000A00000100000002022314800000000194 +:1005A0000A00000100000004022314800000000083 +:1005B00001200000000000000120000400000000F5 +:1005C00001200008000000000120000C00000000D5 +:1005D00001200010000000000120001400000000B5 +:1005E00003200020001A052A032000A4000205446D +:1005F000022002240000000002200234000000005B +:100600000220024C00000000022002E40000FFFF74 +:100610000820200000000800042211080000000249 +:1006200004221290000000060422340000000002A0 +:10063000042260400000003004228C000000001002 +:100640000422111000000002042212A8000000067B +:10065000042234080000000204226100000000307F +:1006600004228C4000000010042211180000000237 +:10067000042212C000000006042234100000000210 +:10068000042261C00000003004228C8000000010B1 +:100690000422112000000002042212D800000006EB +:1006A000042234180000000204226280000000309E +:1006B00004228CC000000010042211280000000257 +:1006C000042212F000000006042234200000000280 +:1006D000042263400000003004228D00000000105E +:1006E000042211300000000204221308000000065A +:1006F00004223428000000020422640000000030BC +:1007000004228D4000000010042211380000000275 +:1007100004221320000000060422343000000002EE +:10072000042264C00000003004228D80000000100C +:1007300004221140000000020422133800000006C9 +:1007400004223438000000020422658000000030DA +:1007500004228DC00000001004102400000000E0FE +:100760000310201C00020546021020C000000002F9 +:1007700003102004000205480217000800000002D0 +:100780000217002C00000003031700380002054A7E +:10079000031700480005054C0317006000050551CC +:1007A0000317007800020556021700040000000F2E +:1007B0000210800000001080041080400000000241 +:1007C000021080AC00000000021080380000001011 +:1007D00002108100000000000410812000000002CF +:1007E00002108008000002B5021080100000000016 +:1007F000021081080001FFFF041082000000004A7F +:1008000004108140000000020210800000001A80E5 +:100810000410900000000024041091200000004A01 +:10082000041093700000004A041095C00000004AB4 +:1008300002108004000010800410804800000002B4 +:10084000021080B0000000010210803C0000001087 +:100850000210810400000000041081280000000242 +:100860000210800C000002B502108014000000008D +:100870000210810C0001FFFF041084000000004AF8 +:1008800004108148000000020210800400001A8059 +:100890000410909000000024041092480000004AC8 +:1008A000041094980000004A041096E80000004AE2 +:1008B0000210800000001080041080400000000240 +:1008C000021080AC0000000202108038000000100E +:1008D00002108100000000000410812000000002CE +:1008E00002108008000002B5021080100000000015 +:1008F000021081080001FFFF041082000000004A7E +:1009000004108140000000020210800000001A80E4 +:100910000410900000000024041091200000004A00 +:10092000041093700000004A041095C00000004AB3 +:1009300002108004000010800410804800000002B3 +:10094000021080B0000000030210803C0000001084 +:100950000210810400000000041081280000000241 +:100960000210800C000002B502108014000000008C +:100970000210810C0001FFFF041084000000004AF7 +:1009800004108148000000020210800400001A8058 +:100990000410909000000024041092480000004AC7 +:1009A000041094980000004A041096E80000004AE1 +:1009B000021080000000108004108040000000023F +:1009C000021080AC0000000402108038000000100B +:1009D00002108100000000000410812000000002CD +:1009E00002108008000002B5021080100000000014 +:1009F000021081080001FFFF041082000000004A7D +:100A000004108140000000020210800000001A80E3 +:100A10000410900000000024041091200000004AFF +:100A2000041093700000004A041095C00000004AB2 +:100A300002108004000010800410804800000002B2 +:100A4000021080B0000000050210803C0000001081 +:100A50000210810400000000041081280000000240 +:100A60000210800C000002B502108014000000008B +:100A70000210810C0001FFFF041084000000004AF6 +:100A800004108148000000020210800400001A8057 +:100A90000410909000000024041092480000004AC6 +:100AA000041094980000004A041096E80000004AE0 +:100AB000021080000000108004108040000000023E +:100AC000021080AC00000006021080380000001008 +:100AD00002108100000000000410812000000002CC +:100AE00002108008000002B5021080100000000013 +:100AF000021081080001FFFF041082000000004A7C +:100B000004108140000000020210800000001A80E2 +:100B10000410900000000024041091200000004AFE +:100B2000041093700000004A041095C00000004AB1 +:100B300002108004000010800410804800000002B1 +:100B4000021080B0000000070210803C000000107E +:100B5000021081040000000004108128000000023F +:100B60000210800C000002B502108014000000008A +:100B70000210810C0001FFFF041084000000004AF5 +:100B800004108148000000020210800400001A8056 +:100B90000410909000000024041092480000004AC5 +:100BA000041094980000004A041096E80000004ADF +:100BB0000200A468000B01C80300A29400040558B9 +:100BC0000A000001000000800200A5F800000000FB +:100BD0000A000001000001000200A5F80000000169 +:100BE0000200A270000000000200A27400000000D9 +:100BF0000200A270000000000200A27400000000C9 +:100C00000200A270000000000200A27400000000B8 +:100C10000200A270000000000200A27400000000A8 +:100C2000030100B40002055C020100DC00000001C9 +:100C3000030101000002055E0201007C003000009B +:100C400002010084000000280201008C0000000066 +:100C50000201013000000004020102440000001FF4 +:100C60000201025C000000010201032800000000F4 +:100C70000201055400000030020160580000FFFF2F +:100C800002016070000000070201608000000001A6 +:100C9000020100C400000001020100CC00000001BC +:100CA000020100F800000001020100F00000000154 +:100CB00002010080003000000201008800000028CE +:100CC0000201009000000000020101340000000455 +:100CD000020102480000001F020102DC00000001C6 +:100CE0000201032C00000000020105640000003036 +:100CF0000201605C0000FFFF020160740000000759 +:100D00000201608400000001020100C8000000012F +:100D1000020100D000000001020100FC00000001FF +:100D2000020100F40000000104010138000000117C +:100D30000401017C000000110401013800000011D1 +:100D40000401017C000000110401013800000011C1 +:100D50000401017C000000110401013800000011B1 +:100D60000401017C000000110214000000000001D9 +:100D70000214000C00000001031400400002056092 +:100D80000214000C0000000002140000000000002B +:100D90000214006C000000000214000400000001B6 +:100DA00002140030000000010214000400000000E2 +:100DB0000214005C000000000214000800000001A2 +:100DC00002140034000000010214000800000000BA +:100DD0000214006000000000030400040012056219 +:100DE00002040054000000430204005C00000006FE +:100DF000020400700000000403040078000405747D +:100E000004040088000000050304009C000305782A +:100E1000040400A800000004030400B80005057BDA +:100E2000040400CC00000004030400DC000405807E +:100E3000040400EC00000004010401240000000090 +:100E400001040128000000000104012C0000000042 +:100E50000104013000000000020401340000000F12 +:100E6000020401D000008906021205B00000000152 +:100E700003120490002205840312066C000205A6EA +:100E800002120388000000640212039000000008B0 +:100E90000312039C000305A8031203BC000305AB67 +:100EA000021203D0000000000212036C00000001D7 +:100EB000021203680000003F031201BC003C05AEB3 +:100EC000031202B0000205EA03120324000205EC3B +:100ED000021205B400000001021201B0000000017E +:100EE00007103800000505EE07103820000505F34F +:100EF00007103C00000505F803168030000805FDCA +:100F000002168054000000020316806000050605EA +:100F10000416807400000007031680900002060A81 +:100F20000316809C0005060C041680B00000000724 +:100F3000031680CC00080611021680F0000000079E +:100F4000041680F40000000C031681240004061926 +:100F5000041681340000000C031681640032061D63 +:100F6000031682340007064F041682500000000466 +:100F7000031682600002065604168268000000080C +:100F80000316828800080658041682A80000000A8A +:100F900002168804000000040316880C0010066086 +:100FA0000316E000001006700416E40C0000000CAC +:100FB0000316E43C000406800416E44C0000000C18 +:100FC0000316E47C002E06840416E53400000004B9 +:100FD0000316E544000206B20416E54C00000008C2 +:100FE0000316E56C000606B40316E6BC000806BA54 +:100FF000021680EC000000FF03040408001406C27F +:10100000020404CC0000000103050044000206D6DF +:1010100003050050000406D8040500600000000429 +:1010200003050090001306DC020501140000000116 +:101030000305011C000206EF020502040000000186 +:101040000305020C000206F10305021C000306F36F +:10105000040502400000000A03050280002006F695 +:101060000405400000000D000305000400100716F1 +:10107000020500E00000000E020500E40000002E62 +:10108000020500E00000001E020500E40000003E32 +:10109000020500E00000004E020500E40000006EC2 +:1010A000020500E00000005E020500E40000007E92 +:1010B00004164024000000020316403000030726F7 +:1010C0000216404400000020021640700000001C80 +:1010D0000216420800000001021642100000000142 +:1010E0000216422000000001021642280000000102 +:1010F00002164230000000010216423800000001D2 +:1011000002164260000000020A0000010000000117 +:101110000216401C0003D0900A00000100000002EB +:101120000216401C000009C40A000001000000046F +:101130000216401C0000009C021640000000000146 +:10114000021640D8000000010316400800030729DA +:101150000216424000000000021642480000000053 +:101160000816427000000002021642500000000003 +:1011700002164258000000000816428000000002DB +:10118000030420080004072C0304201C000407307B +:1011900002042038000000200404203C0000001F4E +:1011A000020420B800000001040420BC0000005F1D +:1011B0000304223800040734010422480000000020 +:1011C0000104224C00000000010422500000000035 +:1011D0000104225400000000010422580000000015 +:1011E0000104225C000000000104226000000000F5 +:1011F00001042264000000000104226800000000D5 +:101200000104226C000000000104227000000000B4 +:101210000104227400000000010422780000000094 +:101220000104227C000000000A000001000000010F +:1012300002042000000003E80A0000010000000290 +:10124000020420000000000A0A000001000000045F +:10125000020420000000000105180400006F0000D7 +:101260000618076000140738041A00000000400048 +:10127000041B240000000040031A1EC80002073AA5 +:10128000031A40400004073C041A405000000006C6 +:10129000031A406800020740031A52C000020742C6 +:1012A000031A800003F90744041A8FE400000007C2 +:1012B000031AA08000100B3D021B800000000034C8 +:1012C000021B804000000018021B80800000000C00 +:1012D000021B80C000000020021B83800007A120A9 +:1012E000021B83C0000001F4021B8BC00000000140 +:1012F0000A00000200000001021B83000007A12079 +:10130000021B8340000001F40A00000200000002FA +:10131000021B830000001388021B834000000005AD +:101320000A00000200000004021B830000000138D4 +:10133000021B834000000000051C00002F830000FA +:10134000051C800033740BE1051D0000228118BECE +:10135000061D505055F60B4D0A000001000000011B +:10136000021B1480000000010A00000100000002BE +:10137000021B1480000000010A00000100000004AC +:10138000021B148000000000011800000000000093 +:10139000011800040000000001180008000000000F +:1013A0000118000C000000000118001000000000EF +:1013B000011800140000000003180020001A0B4F51 +:1013C000031800A400020B690218022400000000A8 +:1013D00002180234000000000218024C0000000055 +:1013E000021802E4000000FF0818100000000400CA +:1013F000041A300000000010041A308000000010B1 +:10140000041A310000000010041A3180000000109E +:10141000041A330000000012041A33900000001276 +:10142000041A342000000070041A90000000000626 +:10143000041A304000000010041A30C000000010F0 +:10144000041A314000000010041A31C000000010DE +:10145000041A334800000012041A33D800000012A6 +:10146000041A35E000000070041A9018000000060D +:10147000031A400000020B6B041A50000000000227 +:10148000041A508000000012031A614000020B6D24 +:10149000041A903000000002041AA00000000002AC +:1014A000031A400800020B6F041A501000000002DB +:1014B000041A50C800000012031A614800020B71A0 +:1014C000041A903800000002041AA008000000026C +:1014D000031A401000020B73041A5020000000028F +:1014E000041A511000000012031A615000020B751B +:1014F000041A904000000002041AA010000000022C +:10150000031A401800020B77041A50300000000242 +:10151000041A515800000012031A615800020B7996 +:10152000041A904800000002041AA01800000002EB +:10153000031A402000020B7B041A504000000002F6 +:10154000041A51A000000012031A616000020B7D12 +:10155000041A905000000002041AA02000000002AB +:10156000031A402800020B7F041A505000000002AA +:10157000041A51E800000012031A616800020B818E +:10158000041A905800000002041AA028000000026B +:10159000031A403000020B83041A5060000000025E +:1015A000041A523000000012031A617000020B8509 +:1015B000041A906000000002041AA030000000022B +:1015C000031A403800020B87041A50700000000212 +:1015D000041A527800000012031A617800020B8985 +:1015E000041A906800000002041AA03800000002EB +:1015F000020E004C00000032030E005400040B8B5E +:10160000040E006400000004030E009400130B8F0E +:10161000020E014400000001030E014C00020BA267 +:10162000020E020400000001030E020C00020BA4D3 +:10163000030E021C00040BA6030E0280001B0BAA63 +:10164000040E02EC00000017040E20000000080049 +:10165000030E000400110BC5020E01100000000F64 +:10166000020E01140000002F020E01100000001FE6 +:10167000020E01140000003F020E01100000004F96 +:10168000020E01140000006F020E01100000005F46 +:10169000020E01140000007F020C10000000002860 +:1016A000030C400800040BD6030C401C00040BDAAA +:1016B000030C403800050BDE040C404C0000005BBE +:1016C000030C41B800050BE3040C41CC0000001BE7 +:1016D000030C423800040BE8010C424800000000F3 +:1016E000010C424C00000000010C425000000000C0 +:1016F000010C425400000000010C425800000000A0 +:10170000010C425C00000000010C4260000000007F +:10171000010C426400000000010C4268000000005F +:10172000010C426C00000000010C4270000000003F +:10173000010C427400000000010C4278000000001F +:10174000010C427C00000000010C428000000000FF +:101750000A00000100000001020C4000000003E844 +:101760000A00000100000002020C40000000000A14 +:101770000A00000100000004020C4000000000010B +:1017800005300400009C00000630076800130BECD5 +:101790000432000000004000043324000000004038 +:1017A00004323E800000001003323EC000020BEE07 +:1017B000033274C000080BF00332850000100BF8F0 +:1017C000023380000000001A023380400000004E07 +:1017D0000233808000000010023380C0000000202F +:1017E000023383800007A120023383C0000001F48C +:1017F00002338BC0000000010A000002000000015B +:10180000023383000007A12002338340000001F46B +:101810000A00000200000002023383000000138867 +:1018200002338340000000050A00000200000004AB +:1018300002338300000001380233834000000000BF +:1018400005340000366900000534800030BC0D9B73 +:1018500005350000346819CA063577D051060C08E2 +:101860000A000001000000010233148000000001A2 +:101870000A00000100000002023314800000000191 +:101880000A00000100000004023314800000000080 +:1018900001300000000000000130000400000000E2 +:1018A00001300008000000000130000C00000000C2 +:1018B00001300010000000000130001400000000A2 +:1018C00003300020001A0C0A033000A400020C248C +:1018D0000230022400000000023002340000000048 +:1018E0000230024C00000000023002E40000FFFF62 +:1018F000083020000000080004321000000001C081 +:1019000004321E000000003804323000000001C024 +:10191000043250000000002004325100000000207A +:101920000432520000000020043253000000002066 +:101930000432540000000020043255000000002052 +:10194000043256000000002004325700000000203E +:10195000043258000000002004325900000000202A +:1019600004325A000000002004325B000000002016 +:1019700004325C000000002004325D000000002002 +:1019800004325E000000002004325F0000000020EE +:1019900004328450000000020332846000040C26EC +:1019A00004321700000001C004321EE000000038BD +:1019B00004323700000001C00432508000000020D3 +:1019C00004325180000000200432528000000020C8 +:1019D00004325380000000200432548000000020B4 +:1019E00004325580000000200432568000000020A0 +:1019F000043257800000002004325880000000208C +:101A0000043259800000002004325A800000002077 +:101A100004325B800000002004325C800000002063 +:101A200004325D800000002004325E80000000204F +:101A300004325F800000002004328458000000025D +:101A40000332847000040C2A0432401000000002AB +:101A50000432841000000002043240200000000222 +:101A600004328418000000020432403000000002FA +:101A700004328420000000020432404000000002D2 +:101A800004328428000000020432405000000002AA +:101A90000432843000000002043240600000000282 +:101AA000043284380000000204324070000000025A +:101AB0000432844000000002043240800000000232 +:101AC0000432844800000002020200580000003284 +:101AD0000302006000040C2E0402007000000004E9 +:101AE000030200A0000E0C32030200DC00070C40D1 +:101AF000020200FC000000060202012000000000BB +:101B00000202013400000002020201B000000001E4 +:101B10000202020C000000010302021400020C4742 +:101B200002020404000000010302040C00020C493C +:101B30000302041C00040C4B0302048000200C4F21 +:101B400004020500000000120402800000002000D2 +:101B50000302000400140C6F02020108000000C818 +:101B60000202011800000002020201C4000000008D +:101B7000020201CC00000000020201D400000002B9 +:101B8000020201DC00000002020201E4000000FF8A +:101B9000020201EC000000FF0202010C000000C87C +:101BA0000202011C00000002020201C80000000045 +:101BB000020201D000000000020201D80000000271 +:101BC000020201E000000002020201E8000000FF42 +:101BD000020201F0000000FF02020108000000C83C +:101BE0000202011800000002020201C4000000000D +:101BF000020201CC00000000020201D40000000239 +:101C0000020201DC00000002020201E4000000FF09 +:101C1000020201EC000000FF0202010C000000C8FB +:101C20000202011C00000002020201C800000000C4 +:101C3000020201D000000000020201D800000002F0 +:101C4000020201E000000002020201E8000000FFC1 +:101C5000020201F0000000FF02020108000000C8BB +:101C60000202011800000002020201C4000000008C +:101C7000020201CC00000000020201D400000002B8 +:101C8000020201DC00000002020201E4000000FF89 +:101C9000020201EC000000FF0202010C000000C87B +:101CA0000202011C00000002020201C80000000044 +:101CB000020201D000000000020201D80000000270 +:101CC000020201E000000002020201E8000000FF41 +:101CD000020201F0000000FF02020108000000C83B +:101CE0000202011800000002020201C4000000000C +:101CF000020201CC00000000020201D40000000238 +:101D0000020201DC00000002020201E4000000FF08 +:101D1000020201EC000000FF0202010C000000C8FA +:101D20000202011C00000002020201C800000000C3 +:101D3000020201D000000000020201D800000002EF +:101D4000020201E000000002020201E8000000FFC0 +:101D5000020201F0000000FF02161000000000283F +:101D60000316600800030C830316601C00040C8635 +:101D700003166038000D0C8A0416606C0000001316 +:101D8000031660B800020C97041660C00000003E05 +:101D9000021661B800000001041661BC0000001FBB +:101DA0000316623800040C99011662480000000016 +:101DB0000116624C00000000011662500000000095 +:101DC0000116625400000000011662580000000075 +:101DD0000116625C00000000011662600000000055 +:101DE0000116626400000000011662680000000035 +:101DF0000116626C00000000011662700000000015 +:101E000001166274000000000116627800000000F4 +:101E10000116627C000000000A00000100000001C1 +:101E200002166000000003E80A0000010000000242 +:101E3000021660000000000A0A0000010000000411 +:101E4000021660000000000105280400008900005F +:101E50000628076800130C9D042A000000004000BB +:101E6000042B240000000040032A300000020C9FD5 +:101E7000032A400000100CA1032A840800080CB1BA +:101E8000032A93C800040CB9032A96F000020CBD83 +:101E9000042A96F800000006032A994000020CBFAD +:101EA000022A9A2800000001032AC0C000100CC1B9 +:101EB000022B800000000000022B80400000001870 +:101EC000022B80800000000C022B80C00000006606 +:101ED000022B83800007A120022B83C0000001F4A5 +:101EE000022B8BC0000000010A000002000000016C +:101EF000022B83000007A120022B8340000001F485 +:101F00000A00000200000002022B83000000138878 +:101F1000022B8340000000050A00000200000004BC +:101F2000022B830000000138022B834000000000D8 +:101F30000A00000100000020022A9A2C0000000084 +:101F4000052C0000388F0000052C80003A660E2416 +:101F5000052D000039AC1CBE052D800013C62B29B1 +:101F6000062DA7104B1E0CD10A0000010000000135 +:101F7000022B1480000000010A0000010000000292 +:101F8000022B1480000000010A0000010000000480 +:101F9000022B148000000000012800000000000057 +:101FA00001280004000000000128000800000000D3 +:101FB0000128000C000000000128001000000000B3 +:101FC000012800140000000003280020001A0CD390 +:101FD000032800A400020CED0228022400000000E7 +:101FE00002280234000000000228024C0000000019 +:101FF000022802E40000FFFF08282000000008007B +:10200000042A500000000002042A501000000002C0 +:10201000042A502000000002042A50300000000270 +:10202000042A93E000000020042A94E00000000E3F +:10203000032A951800020CEF042A95600000000E98 +:10204000032A959800020CF1042A95E00000000E86 +:10205000032A961800020CF3042A96600000000E72 +:10206000032A969800020CF5032A971000020CF739 +:10207000042A500800000002042A50180000000240 +:10208000042A502800000002042A503800000002F0 +:10209000042A946000000020042A95200000000E0D +:1020A000032A955800020CF9042A95A00000000E9E +:1020B000032A95D800020CFB042A96200000000E8B +:1020C000032A965800020CFD042A96A00000000E78 +:1020D000032A96D800020CFF032A971800020D016C +:1020E000042A50480000000E032A972000100D0318 +:1020F000042A995000000002042AC00000000002D7 +:10210000042A50800000000E032A976000100D136F +:10211000042A995800000002042AC00800000002A6 +:10212000042A50B80000000E032A97A000100D23C7 +:10213000042A996000000002042AC0100000000276 +:10214000042A50F00000000E032A97E000100D331F +:10215000042A996800000002042AC0180000000246 +:10216000042A51280000000E032A982000100D4375 +:10217000042A997000000002042AC0200000000216 +:10218000042A51600000000E032A986000100D53CD +:10219000042A997800000002042AC02800000002E6 +:1021A000042A51980000000E032A98A000100D6325 +:1021B000042A998000000002042AC03000000002B6 +:1021C000042A51D00000000E032A98E000100D737D +:1021D000042A998800000002042AC0380000000286 +:1021E0000400A0000000000C0400A0500000000249 +:1021F0000300A0EC00080D830300A18C00080D8BE8 +:102200000200A45C00000C000200A61C00000003F9 +:102210000300A06C00060D930400A08400000005DC +:102220000200A0980FE000000400A09C000000073E +:102230000300A0B8000D0D990400A22C00000004BA +:102240000300A10C00060DA60400A1240000000557 +:102250000200A1380FE000000400A13C00000007CC +:102260000300A158000D0DAC0400A23C00000004C6 +:102270000200A030000000000200A03400000000B6 +:102280000200A038000000000200A03C0000000096 +:102290000200A040000000000200A0440000000076 +:1022A0000200A048000000000200A04C0000000056 +:1022B000000000000000000000000000000000001E +:1022C000000000000000000000000000000000000E +:1022D00000000000000000000000000000000000FE +:1022E0000000000000000005000500080008000BC9 +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000000000000000000CD +:10231000000B001900000000000000000019001A66 +:10232000001A001B001B001C001C001D001D001ECD +:10233000001E001F001F0020002000210021002897 +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:1023600000000000000000000028002E0000000017 +:10237000000000000000000000000000000000005D +:10238000000000000000000000000000000000004D +:1023900000000000002E00490000000000000000C6 +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000000000000000001D +:1023C000004900B6000000000000000000B600BB9D +:1023D00000BB00C000C000C500C500CA00CA00CFD5 +:1023E00000CF00D400D400D900D900DE00000000E6 +:1023F00000000000000000000000000000000000DD +:1024000000000000000000000000000000000000CC +:10241000000000000000000000DE00E200000000FC +:1024200000000000000000000000000000000000AC +:10243000000000000000000000000000000000009C +:102440000000000000E200E90000000000000000C1 +:10245000000000000000000000000000000000007C +:10246000000000000000000000000000000000006C +:1024700000000000000000000000000000E900F97A +:1024800000F901090109011901190129012901397D +:102490000139014901490159015901690000000050 +:1024A000000000000000000000000000000000002C +:1024B000000000000000000000000000000000001C +:1024C00000000000000000000169016F0000000032 +:1024D00000000000016F0170017001710171017253 +:1024E0000172017301730174017401750175017644 +:1024F000017601770177017A017A018901890198D2 +:10250000019801990199019A019A019B019B019CF3 +:10251000019C019D019D019E019E019F019F01A0C3 +:1025200001A001A601A601AA01AA01AE00000000B7 +:10253000000000000000000000000000000000009B +:10254000000000000000000000000000000000008B +:10255000000000000000000000000000000000007B +:10256000000000000000000000000000000000006B +:10257000000000000000000001AE01C000000000EB +:10258000000000000000000000000000000000004B +:10259000000000000000000000000000000000003B +:1025A0000000000001C001CF00000000000000009A +:1025B000000000000000000000000000000000001B +:1025C000000000000000000000000000000000000B +:1025D00001CF01D200000000000000000000000058 +:1025E00000000000000000000000000000000000EB +:1025F00000000000000000000000000001D201F215 +:1026000000000000000000000000000000000000CA +:1026100000000000000000000000000000000000BA +:10262000000000000000000001F201F400000000C2 +:10263000000000000000000000000000000000009A +:10264000000000000000000000000000000000008A +:102650000000000001F40201000000000000000082 +:102660000201020202020203020302040204020542 +:102670000205020602060207020702080208020912 +:102680000209021D021D0220022002230000000098 +:10269000000000000000000000000000000000003A +:1026A0000000000000000000000000000223023EC5 +:1026B000000000000000000000000000000000001A +:1026C000000000000000000000000000000000000A +:1026D0000000000000000000023E02710271027959 +:1026E00002790281028102870287028D028D0293A4 +:1026F000029302990299029F029F02A502A502ABD2 +:1027000002AB02B102B102BE0000000000000000F6 +:1027100002BE02BF02BF02C002C002C102C102C2A9 +:1027200002C202C302C302C402C402C502C502C679 +:1027300002C602C700000000000000000000000008 +:102740000000000000000000000000000000000089 +:1027500000000000000000000000000002C702E3CB +:102760000000000000000000000000000000000069 +:102770000000000000000000000000000000000059 +:10278000000000000000000002E303120312032710 +:102790000327033C033C033E033E03400340034244 +:1027A0000342034403440346034603480348034AE1 +:1027B000034A034C034C035E0000000000000000CD +:1027C000035E03660366036E036E03760376037E81 +:1027D000037E03860386038E038E03960396039E71 +:1027E000039E039F000000000000000000000000A6 +:1027F00000000000000000000000000000000000D9 +:10280000000000000000000000000000039F03BC67 +:1028100000000000000000000000000000000000B8 +:1028200000000000000000000000000000000000A8 +:10283000000000000000000003BC03F303F30401E8 +:102840000401040F040F0413041304170417041BDA +:10285000041B041F041F0423042304270427042B40 +:10286000042B042F042F04350435043B043B04419E +:102870000441044204420443044304440444044520 +:1028800004450446044604470447044804480449F0 +:1028900000000000000000000000200000004000D8 +:1028A00000006000000080000000A0000000C000E8 +:1028B0000000E000000100000001200000014000D5 +:1028C00000016000000180000001A0000001C000C4 +:1028D0000001E000000200000002200000024000B1 +:1028E00000026000000280000002A0000002C000A0 +:1028F0000002E0000003000000032000000340008D +:1029000000036000000380000003A0000003C0007B +:102910000003E00000040000000420000004400068 +:1029200000046000000480000004A0000004C00057 +:102930000004E00000050000000520000005400044 +:1029400000056000000580000005A0000005C00033 +:102950000005E00000060000000620000006400020 +:1029600000066000000680000006A0000006C0000F +:102970000006E000000700000007200000074000FC +:1029800000076000000780000007A0000007C000EB +:102990000007E000000800000008200000084000D8 +:1029A00000086000000880000008A0000008C000C7 +:1029B0000008E000000900000009200000094000B4 +:1029C00000096000000980000009A0000009C000A3 +:1029D0000009E000000A0000000A2000000A400090 +:1029E000000A6000000A8000000AA000000AC0007F +:1029F000000AE000000B0000000B2000000B40006C +:102A0000000B6000000B8000000BA000000BC0005A +:102A1000000BE000000C0000000C2000000C400047 +:102A2000000C6000000C8000000CA000000CC00036 +:102A3000000CE000000D0000000D2000000D400023 +:102A4000000D6000000D8000000DA000000DC00012 +:102A5000000DE000000E0000000E2000000E4000FF +:102A6000000E6000000E8000000EA000000EC000EE +:102A7000000EE000000F0000000F2000000F4000DB +:102A8000000F6000000F8000000FA000000FC000CA +:102A9000000FE000001000000010200000104000B7 +:102AA00000106000001080000010A0000010C000A6 +:102AB0000010E00000110000001120000011400093 +:102AC00000116000001180000011A0000011C00082 +:102AD0000011E0000012000000122000001240006F +:102AE00000126000001280000012A0000012C0005E +:102AF0000012E0000013000000132000001340004B +:102B000000136000001380000013A0000013C00039 +:102B10000013E00000140000001420000014400026 +:102B200000146000001480000014A0000014C00015 +:102B30000014E00000150000001520000015400002 +:102B400000156000001580000015A0000015C000F1 +:102B50000015E000001600000016200000164000DE +:102B600000166000001680000016A0000016C000CD +:102B70000016E000001700000017200000174000BA +:102B800000176000001780000017A0000017C000A9 +:102B90000017E00000180000001820000018400096 +:102BA00000186000001880000018A0000018C00085 +:102BB0000018E00000190000001920000019400072 +:102BC00000196000001980000019A0000019C00061 +:102BD0000019E000001A0000001A2000001A40004E +:102BE000001A6000001A8000001AA000001AC0003D +:102BF000001AE000001B0000001B2000001B40002A +:102C0000001B6000001B8000001BA000001BC00018 +:102C1000001BE000001C0000001C2000001C400005 +:102C2000001C6000001C8000001CA000001CC000F4 +:102C3000001CE000001D0000001D2000001D4000E1 +:102C4000001D6000001D8000001DA000001DC000D0 +:102C5000001DE000001E0000001E2000001E4000BD +:102C6000001E6000001E8000001EA000001EC000AC +:102C7000001EE000001F0000001F2000001F400099 +:102C8000001F6000001F8000001FA000001FC00088 +:102C9000001FE00000200000002020000020400075 +:102CA00000206000002080000020A0000020C00064 +:102CB0000020E00000210000002120000021400051 +:102CC00000216000002180000021A0000021C00040 +:102CD0000021E0000022000000222000002240002D +:102CE00000226000002280000022A0000022C0001C +:102CF0000022E00000230000002320000023400009 +:102D000000236000002380000023A0000023C000F7 +:102D10000023E000002400000024200000244000E4 +:102D200000246000002480000024A0000024C000D3 +:102D30000024E000002500000025200000254000C0 +:102D400000256000002580000025A0000025C000AF +:102D50000025E0000026000000262000002640009C +:102D600000266000002680000026A0000026C0008B +:102D70000026E00000270000002720000027400078 +:102D800000276000002780000027A0000027C00067 +:102D90000027E00000280000002820000028400054 +:102DA00000286000002880000028A0000028C00043 +:102DB0000028E00000290000002920000029400030 +:102DC00000296000002980000029A0000029C0001F +:102DD0000029E000002A0000002A2000002A40000C +:102DE000002A6000002A8000002AA000002AC000FB +:102DF000002AE000002B0000002B2000002B4000E8 +:102E0000002B6000002B8000002BA000002BC000D6 +:102E1000002BE000002C0000002C2000002C4000C3 +:102E2000002C6000002C8000002CA000002CC000B2 +:102E3000002CE000002D0000002D2000002D40009F +:102E4000002D6000002D8000002DA000002DC0008E +:102E5000002DE000002E0000002E2000002E40007B +:102E6000002E6000002E8000002EA000002EC0006A +:102E7000002EE000002F0000002F2000002F400057 +:102E8000002F6000002F8000002FA000002FC00046 +:102E9000002FE00000300000003020000030400033 +:102EA00000306000003080000030A0000030C00022 +:102EB0000030E0000031000000312000003140000F +:102EC00000316000003180000031A0000031C000FE +:102ED0000031E000003200000032200000324000EB +:102EE00000326000003280000032A0000032C000DA +:102EF0000032E000003300000033200000334000C7 +:102F000000336000003380000033A0000033C000B5 +:102F10000033E000003400000034200000344000A2 +:102F200000346000003480000034A0000034C00091 +:102F30000034E0000035000000352000003540007E +:102F400000356000003580000035A0000035C0006D +:102F50000035E0000036000000362000003640005A +:102F600000366000003680000036A0000036C00049 +:102F70000036E00000370000003720000037400036 +:102F800000376000003780000037A0000037C00025 +:102F90000037E00000380000003820000038400012 +:102FA00000386000003880000038A0000038C00001 +:102FB0000038E000003900000039200000394000EE +:102FC00000396000003980000039A0000039C000DD +:102FD0000039E000003A0000003A2000003A4000CA +:102FE000003A6000003A8000003AA000003AC000B9 +:102FF000003AE000003B0000003B2000003B4000A6 +:10300000003B6000003B8000003BA000003BC00094 +:10301000003BE000003C0000003C2000003C400081 +:10302000003C6000003C8000003CA000003CC00070 +:10303000003CE000003D0000003D2000003D40005D +:10304000003D6000003D8000003DA000003DC0004C +:10305000003DE000003E0000003E2000003E400039 +:10306000003E6000003E8000003EA000003EC00028 +:10307000003EE000003F0000003F2000003F400015 +:10308000003F6000003F8000003FA000003FC00004 +:10309000003FE000003FE00100000000000001FFF1 +:1030A000000002000000000100000002000000001B +:1030B0000000000802150020021500200810000082 +:1030C00000000033000000020000000000000005C6 +:1030D00000000005000000000000000000000002E9 +:1030E00000000003000000020000000100000004D6 +:1030F00000000002000000020000000100000002C9 +:10310000000000200000004000000040000000031C +:103110000000001800002000000040C00000618096 +:10312000000082400000A3000000C3C00000E48053 +:103130000001054000012600000146C00001678033 +:10314000000188400001A9000001C9C00001EA8017 +:1031500000020B4000022C0000024CC000026D80F7 +:1031600000028E400002AF000002CFC00002F080DB +:1031700000001140000000010000000100000001FB +:10318000000000010000000100000001000000013B +:10319000000000010000000100000001000000012B +:1031A000000000010000000100000001000000011B +:1031B0000003D0000000003D00000001000D0000F1 +:1031C000000700D000028140000B8168000202204D +:1031D00000010240000F025000010340000C0000FB +:1031E000000800C000028140000B8168000202203C +:1031F0000001024000070250000202C0001000005F +:103200000008010000028180000B81A8000202601A +:1032100000018280000E82980008038000000000F8 +:10322000000000000002800000090028000200B831 +:10323000000100D8000000E8000000E8FFFFFFF3F5 +:1032400001AFFFFF000000000000000000000000D0 +:10325000000000000000000000000000FFFFFFF180 +:1032600000EFFFFF00000000000000000000000071 +:10327000000000000001000000000000FFFFFFF65A +:10328000005FFFFF000000000000000000000000E1 +:10329000000000000002000000000000FFFFF40634 +:1032A0001CBFFFFF0000000500000000000000142C +:1032B000000000000004000000000000FFFFFFF21B +:1032C000004FFFFF000000000000000000000000B1 +:1032D000000000000008000000000000FFFFFFFAEF +:1032E000002FFFFF000000000000000000000000B1 +:1032F000000000000010000000000000FFFFFFF7CA +:1033000001EFFFFF000000000000000000000000CF +:10331000000000000020000000000000FFFFFFF59B +:10332000002FFFFF00000000000000000000000070 +:10333000000000000040000000000000FFFFFFF35D +:10334000018FFFFF000000000000000000000000EF +:10335000000000000000000000000000FFFFFFF17F +:10336000010FFFFF0000000000000000000000004F +:10337000000000000001000000000000FFFFFFF659 +:10338000005FFFFF000000000000000000000000E0 +:10339000000000000002000000000000FFFFF40633 +:1033A0001CBFFFFF0000000500000000000000142B +:1033B000000000000004000000000000FFFFFFF21A +:1033C000004FFFFF000000000000000000000000B0 +:1033D000000000000008000000000000FFFFFFFAEE +:1033E000002FFFFF000000000000000000000000B0 +:1033F000000000000010000000000000FFFFFFF7C9 +:1034000000EFFFFF000000000000000000000000CF +:10341000000000000020000000000000FFFFFFF59A +:10342000004FFFFF0000000000000000000000004F +:10343000000000000040000000000000FFFFFFFF50 +:1034400000CFFFFF0000000000000000000000CCE3 +:10345000000000000000000000000000FFFFFFFF70 +:1034600000CFFFFF0000000000000000000000CCC3 +:10347000000000000001000000000000FFFFFFFF4F +:1034800000CFFFFF0000000000000000000000CCA3 +:10349000000000000002000000000000FFFFFFFF2E +:1034A00000CFFFFF0000000000000000000000CC83 +:1034B000000000000004000000000000FFFFFFFF0C +:1034C00000CFFFFF0000000000000000000000CC63 +:1034D000000000000008000000000000FFFFFFFFE8 +:1034E00000CFFFFF0000000000000000000000CC43 +:1034F000000000000010000000000000FFFFFFFFC0 +:1035000000CFFFFF0000000000000000000000CC22 +:10351000000000000020000000000000FFFFFFFF8F +:1035200000CFFFFF0000000000000000000000CC02 +:10353000000000000040000000000000FFFFFFF35B +:10354000020FFFFF0000000000000000000000006C +:10355000000000000000000000000000FFFFFFF17D +:10356000010FFFFF0000000000000000000000004D +:10357000000000000001000000000000FFFFFFF657 +:10358000005FFFFF000000000000000000000000DE +:10359000000000000002000000000000FFFFF40631 +:1035A0001CBFFFFF00000005000000000000001429 +:1035B000000000000004000000000000FFFFFFF218 +:1035C000004FFFFF000000000000000000000000AE +:1035D000000000000008000000000000FFFFFF8A5C +:1035E000042FFFFF000000000000000000000000AA +:1035F000000000000010000000000000FFFFFF9727 +:1036000005CFFFFF000000000000000000000000E8 +:10361000000000000020000000000000FFFFFFF598 +:10362000010FFFFF0000000000000000000000008C +:10363000000000000040000000000000FFFFFFF35A +:10364000000FFFFF0000000000000000000000006D +:10365000000000000000000000000000FFFFFFF17C +:10366000000FFFFF0000000000000000000000004D +:10367000000000000001000000000000FFFFFFF656 +:10368000005FFFFF000000000000000000000000DD +:10369000000000000002000000000000FFFFFF0625 +:1036A0001CBFFFFF0000000000000000000000142D +:1036B000000000000004000000000000FFFFFFF217 +:1036C000004FFFFF000000000000000000000000AD +:1036D000000000000008000000000000FFFFFFFAEB +:1036E000002FFFFF000000000000000000000000AD +:1036F000000000000010000000000000FFFFFFF7C6 +:10370000000FFFFF000000000000000000000000AC +:10371000000000000020000000000000FFFFFFFF8D +:1037200000CFFFFF0000000000000000000000CC00 +:10373000000000000040000000000000FFFFFFFF4D +:1037400000CFFFFF0000000000000000000000CCE0 +:10375000000000000000000000000000FFFFFFFF6D +:1037600000CFFFFF0000000000000000000000CCC0 +:10377000000000000001000000000000FFFFFFFF4C +:1037800000CFFFFF0000000000000000000000CCA0 +:10379000000000000002000000000000FFFFFFFF2B +:1037A00000CFFFFF0000000000000000000000CC80 +:1037B000000000000004000000000000FFFFFFFF09 +:1037C00000CFFFFF0000000000000000000000CC60 +:1037D000000000000008000000000000FFFFFFFFE5 +:1037E00000CFFFFF0000000000000000000000CC40 +:1037F000000000000010000000000000FFFFFFFFBD +:1038000000CFFFFF0000000000000000000000CC1F +:10381000000000000020000000000000FFFFFFFF8C +:1038200000CFFFFF0000000000000000000000CCFF +:10383000000000000040000000000000FFFFFFFF4C +:1038400000CFFFFF0000000000000000000000CCDF +:10385000000000000000000000000000FFFFFFFF6C +:1038600000CFFFFF0000000000000000000000CCBF +:10387000000000000001000000000000FFFFFFFF4B +:1038800000CFFFFF0000000000000000000000CC9F +:10389000000000000002000000000000FFFFFFFF2A +:1038A00000CFFFFF0000000000000000000000CC7F +:1038B000000000000004000000000000FFFFFFFF08 +:1038C00000CFFFFF0000000000000000000000CC5F +:1038D000000000000008000000000000FFFFFFFFE4 +:1038E00000CFFFFF0000000000000000000000CC3F +:1038F000000000000010000000000000FFFFFFFFBC +:1039000000CFFFFF0000000000000000000000CC1E +:10391000000000000020000000000000FFFFFFFF8B +:1039200000CFFFFF0000000000000000000000CCFE +:10393000000000000040000000000000FFFFFFFF4B +:1039400000CFFFFF0000000000000000000000CCDE +:10395000000000000000000000000000FFFFFFFF6B +:1039600000CFFFFF0000000000000000000000CCBE +:10397000000000000001000000000000FFFFFFFF4A +:1039800000CFFFFF0000000000000000000000CC9E +:10399000000000000002000000000000FFFFFFFF29 +:1039A00000CFFFFF0000000000000000000000CC7E +:1039B000000000000004000000000000FFFFFFFF07 +:1039C00000CFFFFF0000000000000000000000CC5E +:1039D000000000000008000000000000FFFFFFFFE3 +:1039E00000CFFFFF0000000000000000000000CC3E +:1039F000000000000010000000000000FFFFFFFFBB +:103A000000CFFFFF0000000000000000000000CC1D +:103A1000000000000020000000000000FFFFFFFF8A +:103A200000CFFFFF0000000000000000000000CCFD +:103A30000000000000400000000000000000021133 +:103A400000000200000002040000FFFF0000FFFF72 +:103A50000000FFFF0000FFFF000000200000002129 +:103A600000000022000000230000002400000025C8 +:103A700000000026000000270000002800000029A8 +:103A80000000002A0000002B0000002C0000002D88 +:103A90000000002E0000002F0000001000000001B8 +:103AA0000000000100000001000000010000000112 +:103AB0000000000100000001000000010000000102 +:103AC00000000001000000010000000100000001F2 +:103AD00000000001000000010000000100000001E2 +:103AE00007FFFFFF0000003F07FFFFFF0000000F80 +:103AF00000007FF800007FF80000FF0000000000D9 +:103B00000000FF00000000000000FF0000000000B7 +:103B10000000FF00000000000000FF0000000000A7 +:103B20000000FF00000000000000FF000000000097 +:103B30000000FF00000000000000FF1C0FFFFFFF5F +:103B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:103B50000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:103B60000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:103B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:103B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:103B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:103BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:103BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:103BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:103BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:103BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:103BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:103C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:103C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:103C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:103C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:103C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:103C50000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:103C60000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:103C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:103C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:103C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:103CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:103CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:103CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:103CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:103CE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF86 +:103CF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF76 +:103D00000000FF1C0FFFFFFF0000FF1C0FFFFFFF65 +:103D10000000FF1C0FFFFFFF0000FF1C0FFFFFFF55 +:103D20000000FF1C0FFFFFFF0000FF1C0FFFFFFF45 +:103D30000000FF1C0FFFFFFF00000316000015002E +:103D4000000000010000000200000003000000006D +:103D5000000000040000000100000000000000015D +:103D6000000000040000000000000001000000034B +:103D7000000000000000000100000004000000003E +:103D8000000000010000000300000000000000012E +:103D90000000000400000000000000040000000318 +:103DA000000000000000000000003FFF000003FFD3 +:103DB0000000000000000001000000010000000100 +:103DC000007C1004000000040000000200000090CD +:103DD0000000009000800090081000000000008AA1 +:103DE000000000800000008100000080000000064C +:103DF000000007D00000076C071D2911000000001B +:103E0000009C0424000000000000000100000001EC +:103E100000000001000000010000000100007FFF21 +:103E2000000000FF000000FF000000FF000000FF96 +:103E30000000007F000000FF000000FF000000FF06 +:103E40000000003E000000000000003F0000003FB6 +:103E50000000003F0000003F0000003F0000003F66 +:103E60000000003F0000000F0000000012170000DB +:103E70002217000032170000121500002215000062 +:103E800032150000021000000010000010100000A9 +:103E9000201000003010000000100000121400007C +:103EA000221400003214000000E38340FFFFFFFFF4 +:103EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +:103EC000FFFFFFFFFFFFFFFFFFFFFFFFF0005000BE +:103ED000F0001000FFFFFFFFFFFFFFFFFFFFFFFFEE +:103EE000FFFFFFFFFFFFFFFFFFFFFFFFFF809000CF +:103EF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +:103F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +:103F1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +:103F2000FFFFFFFFFFFFFFFFFFFFFFFF00003C1051 +:103F30000000000100000000000000080000000870 +:103F40000000000200000004000000050000000462 +:103F500000000040000018080000080300000803EB +:103F600000000040000000030000080300000803F8 +:103F7000000008030001000300000803000008031C +:103F80000000000300000003000000030000000325 +:103F90000000000300000003000000030000000315 +:103FA0000000000300000003000000030000000305 +:103FB00000000003000000030000000300002403D1 +:103FC0000000002F0000000900000019000001841B +:103FD0000000018300000306000000190000000635 +:103FE00000000306000003060000030600000C8624 +:103FF00000000306000003060000000600000006A3 +:104000000000000600000006000000060000000698 +:104010000000000600000006000000060000000688 +:104020000000000600000006000000060000000678 +:104030000000000600000306000000130000000658 +:1040400000001004000010040010644000106440E0 +:104050000000000000000000000000000000000060 +:104060000000200000000000000000000000000030 +:10407000000000000400200000000000000000001C +:104080000000000000000000000020000000007C94 +:104090000000003D0000003F0000009C0000000602 +:1040A000000000050000000A0000000500000140BB +:1040B000000001400000000000000000000000C0FF +:1040C0000000013F00007FFF0000004800000048A2 +:1040D0000000000000000000000000480000000494 +:1040E00000000004000000040000000400000004C0 +:1040F00000000004000000040000000400000004B0 +:10410000000000090000000B0000000A000000048D +:10411000000000090000000B0000000A0000000180 +:10412000000000010000000100000001000000018B +:10413000000000010000000100000001000000017B +:104140000000000100000001000000010000000468 +:10415000000000090000000B0000000A0000000140 +:10416000000000010000000100000001000000014B +:10417000000000010000000100000001000000013B +:104180000000000100000001000000010000000428 +:10419000000000090000000B0000000A0000000001 +:1041A000000000000000080000000200000001FF05 +:1041B0000000040000000000000000001E491E492D +:1041C0001E491E490E490E490E490E49FFFFFFFFC9 +:1041D00000000000000025E4000080000000001343 +:1041E0000FFF0FFF00000000000000000FFF0FFF97 +:1041F00010001000100010002000200020002000FF +:1042000080008000800080004000400040004000AE +:104210000000000000000001010101010120010176 +:104220002001010101011001010101010120010131 +:104230002001010101011001200101010101100112 +:104240000101010101200101200101010101100111 +:104250000101010101200101010101010120010110 +:1042600020010101010110010101010101200101F1 +:1042700020010101010110010101010101200101E1 +:1042800020010101010110010101010101200101D1 +:1042900020010101010110010000000400000009DB +:1042A0000000000B0000000A0000000400000009EC +:1042B0000000000B0000000A0000000100000001E7 +:1042C00000000001000000010000000100000001EA +:1042D00000000001000000010000000100000001DA +:1042E00000000001000000010000000400000009BF +:1042F0000000000B0000000A0000000100000001A7 +:1043000000000001000000010000000100000001A9 +:104310000000000100000001000000010000000199 +:10432000000000010000000100000004000000097E +:104330000000000B0000000A1E491E491E491E49CC +:104340000E490E490E490E49FFFFFFFF0000000015 +:104350000FFF0FFF00000000000000000FFF0FFF25 +:10436000100010001000100020002000200020008D +:10437000800080008000800040004000400040003D +:104380000000000000000002000000010000000327 +:104390000000000400000006000000050000000707 +:1043A000000001230000012300000123000001237D +:1043B000000001230000012300000123000001236D +:1043C000000001230000012300000123000001235D +:1043D000000001230000012300000123000001234D +:1043E000000001230000012300000123000001233D +:1043F000000000200000003200000007000000075D +:104400000000000000000008021500200215002036 +:1044100000000030081000000000003300000030F1 +:10442000000000310000000200000005000000064E +:104430000000000200000002000000000000000573 +:104440000000000200000002000000020000000165 +:104450000000000600000001000000020000004013 +:1044600000000040000000200000001300000020B9 +:1044700000010000000204C00003098000040E4097 +:1044800000051300000617C000071C80000821402B +:1044900000092600000A2AC0000B2F80000C3440BF +:1044A000000D3900000E3DC0000F42800010474053 +:1044B00000114C00001250C00013558000145A40E7 +:1044C00000155F00001663C00017688000186D407B +:1044D00000197200001A76C0001B7B80001C80400F +:1044E000001D8500001E89C0001F8E8000009340C3 +:1044F00000000001000000010000000100000001B8 +:1045000000000001000000010000000100000001A7 +:104510000000000100000001000000010000000197 +:104520000000000100000001000000010000000187 +:10453000000000080000000C000000100000000156 +:104540000000000100000001000002110000020054 +:1045500000000204000002190000FFFF0000FFFF3E +:104560000000FFFF0000FFFF07FFFFFF0000003F0C +:1045700007FFFFFF0000000F00007FF800007FF83A +:1045800000000000000000010020100100000000F9 +:104590000100900000000100000000010000000088 +:1045A00000000000140AFF0000009002000000005C +:1045B0000000000000000000000090040000000067 +:1045C0000000000000000000000090060000000055 +:1045D0000000000000000000000090080000000043 +:1045E00000000000000000000000900A0000000031 +:1045F00000000000000000000000900C000000001F +:1046000000000000000000000000900E000000000C +:1046100000000000000000000000901000000000FA +:1046200000000000000000000000901200000000E8 +:1046300000000000000000000000901400000000D6 +:1046400000000000000000000000901600000000C4 +:1046500000000000000000000000901800000000B2 +:1046600000000000000000000000901A00000000A0 +:1046700000000000000000000000901C000000008E +:1046800000000000000000000000901E000000007C +:10469000000000000000000000009020000000006A +:1046A0000000000000000000000090220000000058 +:1046B0000000000000000000000090240000000046 +:1046C0000000000000000000000090260000000034 +:1046D0000000000000000000000090280000000022 +:1046E00000000000000000000000902A0000000010 +:1046F00000000000000000000000902C00000000FE +:1047000000000000000000000000902E00000000EB +:1047100000000000000000000000903000000000D9 +:1047200000000000000000000000903200000000C7 +:1047300000000000000000000000903400000000B5 +:1047400000000000000000000000903600000000A3 +:104750000000000000000000000090380000000091 +:1047600000000000000000000000903A000000007F +:1047700000000000000000000000903C000000006D +:1047800000000000000000000000903E000000005B +:104790000000000000000000000090400000000049 +:1047A0000000000000000000000090420000000037 +:1047B0000000000000000000000090440000000025 +:1047C0000000000000000000000090460000000013 +:1047D0000000000000000000000090480000000001 +:1047E00000000000000000000000904A00000000EF +:1047F00000000000000000000000904C00000000DD +:1048000000000000000000000000904E00000000CA +:1048100000000000000000000000905000000000B8 +:1048200000000000000000000000905200000000A6 +:104830000000000000000000000090540000000094 +:104840000000000000000000000090560000000082 +:104850000000000000000000000090580000000070 +:1048600000000000000000000000905A000000005E +:1048700000000000000000000000905C000000004C +:1048800000000000000000000000905E000000003A +:104890000000000000000000000090600000000028 +:1048A0000000000000000000000090620000000016 +:1048B0000000000000000000000090640000000004 +:1048C00000000000000000000000906600000000F2 +:1048D00000000000000000000000906800000000E0 +:1048E00000000000000000000000906A00000000CE +:1048F00000000000000000000000906C00000000BC +:1049000000000000000000000000906E00000000A9 +:104910000000000000000000000090700000000097 +:104920000000000000000000000090720000000085 +:104930000000000000000000000090740000000073 +:104940000000000000000000000090760000000061 +:10495000000000000000000000009078000000004F +:1049600000000000000000000000907A000000003D +:1049700000000000000000000000907C000000002B +:1049800000000000000000000000907E0000000019 +:104990000000000000000000000090800000000007 +:1049A00000000000000000000000908200000000F5 +:1049B00000000000000000000000908400000000E3 +:1049C00000000000000000000000908600000000D1 +:1049D00000000000000000000000908800000000BF +:1049E00000000000000000000000908A00000000AD +:1049F00000000000000000000000908C000000009B +:104A000000000000000000000000908E0000000088 +:104A10000000000000000000000090900000000076 +:104A20000000000000000000000090920000000064 +:104A30000000000000000000000090940000000052 +:104A40000000000000000000000090960000000040 +:104A5000000000000000000000009098000000002E +:104A600000000000000000000000909A000000001C +:104A700000000000000000000000909C000000000A +:104A800000000000000000000000909E00000000F8 +:104A90000000000000000000000090A000000000E6 +:104AA0000000000000000000000090A200000000D4 +:104AB0000000000000000000000090A400000000C2 +:104AC0000000000000000000000090A600000000B0 +:104AD0000000000000000000000090A8000000009E +:104AE0000000000000000000000090AA000000008C +:104AF0000000000000000000000090AC000000007A +:104B00000000000000000000000090AE0000000067 +:104B10000000000000000000000090B00000000055 +:104B20000000000000000000000090B20000000043 +:104B30000000000000000000000090B40000000031 +:104B40000000000000000000000090B6000000001F +:104B50000000000000000000000090B8000000000D +:104B60000000000000000000000090BA00000000FB +:104B70000000000000000000000090BC00000000E9 +:104B80000000000000000000000090BE00000000D7 +:104B90000000000000000000000090C000000000C5 +:104BA0000000000000000000000090C200000000B3 +:104BB0000000000000000000000090C400000000A1 +:104BC0000000000000000000000090C6000000008F +:104BD0000000000000000000000090C8000000007D +:104BE0000000000000000000000090CA000000006B +:104BF0000000000000000000000090CC0000000059 +:104C00000000000000000000000090CE0000000046 +:104C10000000000000000000000090D00000000034 +:104C20000000000000000000000090D20000000022 +:104C30000000000000000000000090D40000000010 +:104C40000000000000000000000090D600000000FE +:104C50000000000000000000000090D800000000EC +:104C60000000000000000000000090DA00000000DA +:104C70000000000000000000000090DC00000000C8 +:104C80000000000000000000000090DE00000000B6 +:104C90000000000000000000000090E000000000A4 +:104CA0000000000000000000000090E20000000092 +:104CB0000000000000000000000090E40000000080 +:104CC0000000000000000000000090E6000000006E +:104CD0000000000000000000000090E8000000005C +:104CE0000000000000000000000090EA000000004A +:104CF0000000000000000000000090EC0000000038 +:104D00000000000000000000000090EE0000000025 +:104D10000000000000000000000090F00000000013 +:104D20000000000000000000000090F20000000001 +:104D30000000000000000000000090F400000000EF +:104D40000000000000000000000090F600000000DD +:104D50000000000000000000000090F800000000CB +:104D60000000000000000000000090FA00000000B9 +:104D70000000000000000000000090FC00000000A7 +:104D80000000000000000000000090FE0000000095 +:104D90000000000000000000000091000000000082 +:104DA0000000000000000000000091020000000070 +:104DB000000000000000000000009104000000005E +:104DC000000000000000000000009106000000004C +:104DD000000000000000000000009108000000003A +:104DE00000000000000000000000910A0000000028 +:104DF00000000000000000000000910C0000000016 +:104E000000000000000000000000910E0000000003 +:104E100000000000000000000000911000000000F1 +:104E200000000000000000000000911200000000DF +:104E300000000000000000000000911400000000CD +:104E400000000000000000000000911600000000BB +:104E500000000000000000000000911800000000A9 +:104E600000000000000000000000911A0000000097 +:104E700000000000000000000000911C0000000085 +:104E800000000000000000000000911E0000000073 +:104E90000000000000000000000091200000000061 +:104EA000000000000000000000009122000000004F +:104EB000000000000000000000009124000000003D +:104EC000000000000000000000009126000000002B +:104ED0000000000000000000000091280000000019 +:104EE00000000000000000000000912A0000000007 +:104EF00000000000000000000000912C00000000F5 +:104F000000000000000000000000912E00000000E2 +:104F100000000000000000000000913000000000D0 +:104F200000000000000000000000913200000000BE +:104F300000000000000000000000913400000000AC +:104F4000000000000000000000009136000000009A +:104F50000000000000000000000091380000000088 +:104F600000000000000000000000913A0000000076 +:104F700000000000000000000000913C0000000064 +:104F800000000000000000000000913E0000000052 +:104F90000000000000000000000091400000000040 +:104FA000000000000000000000009142000000002E +:104FB000000000000000000000009144000000001C +:104FC000000000000000000000009146000000000A +:104FD00000000000000000000000914800000000F8 +:104FE00000000000000000000000914A00000000E6 +:104FF00000000000000000000000914C00000000D4 +:1050000000000000000000000000914E00000000C1 +:1050100000000000000000000000915000000000AF +:10502000000000000000000000009152000000009D +:10503000000000000000000000009154000000008B +:105040000000000000000000000091560000000079 +:105050000000000000000000000091580000000067 +:1050600000000000000000000000915A0000000055 +:1050700000000000000000000000915C0000000043 +:1050800000000000000000000000915E0000000031 +:10509000000000000000000000009160000000001F +:1050A000000000000000000000009162000000000D +:1050B00000000000000000000000916400000000FB +:1050C00000000000000000000000916600000000E9 +:1050D00000000000000000000000916800000000D7 +:1050E00000000000000000000000916A00000000C5 +:1050F00000000000000000000000916C00000000B3 +:1051000000000000000000000000916E00000000A0 +:10511000000000000000000000009170000000008E +:10512000000000000000000000009172000000007C +:10513000000000000000000000009174000000006A +:105140000000000000000000000091760000000058 +:105150000000000000000000000091780000000046 +:1051600000000000000000000000917A0000000034 +:1051700000000000000000000000917C0000000022 +:1051800000000000000000000000917E0000000010 +:1051900000000000000000000000918000000000FE +:1051A00000000000000000000000918200000000EC +:1051B00000000000000000000000918400000000DA +:1051C00000000000000000000000918600000000C8 +:1051D00000000000000000000000918800000000B6 +:1051E00000000000000000000000918A00000000A4 +:1051F00000000000000000000000918C0000000092 +:1052000000000000000000000000918E000000007F +:10521000000000000000000000009190000000006D +:10522000000000000000000000009192000000005B +:105230000000000000000000000091940000000049 +:105240000000000000000000000091960000000037 +:105250000000000000000000000091980000000025 +:1052600000000000000000000000919A0000000013 +:1052700000000000000000000000919C0000000001 +:1052800000000000000000000000919E00000000EF +:105290000000000000000000000091A000000000DD +:1052A0000000000000000000000091A200000000CB +:1052B0000000000000000000000091A400000000B9 +:1052C0000000000000000000000091A600000000A7 +:1052D0000000000000000000000091A80000000095 +:1052E0000000000000000000000091AA0000000083 +:1052F0000000000000000000000091AC0000000071 +:105300000000000000000000000091AE000000005E +:105310000000000000000000000091B0000000004C +:105320000000000000000000000091B2000000003A +:105330000000000000000000000091B40000000028 +:105340000000000000000000000091B60000000016 +:105350000000000000000000000091B80000000004 +:105360000000000000000000000091BA00000000F2 +:105370000000000000000000000091BC00000000E0 +:105380000000000000000000000091BE00000000CE +:105390000000000000000000000091C000000000BC +:1053A0000000000000000000000091C200000000AA +:1053B0000000000000000000000091C40000000098 +:1053C0000000000000000000000091C60000000086 +:1053D0000000000000000000000091C80000000074 +:1053E0000000000000000000000091CA0000000062 +:1053F0000000000000000000000091CC0000000050 +:105400000000000000000000000091CE000000003D +:105410000000000000000000000091D0000000002B +:105420000000000000000000000091D20000000019 +:105430000000000000000000000091D40000000007 +:105440000000000000000000000091D600000000F5 +:105450000000000000000000000091D800000000E3 +:105460000000000000000000000091DA00000000D1 +:105470000000000000000000000091DC00000000BF +:105480000000000000000000000091DE00000000AD +:105490000000000000000000000091E0000000009B +:1054A0000000000000000000000091E20000000089 +:1054B0000000000000000000000091E40000000077 +:1054C0000000000000000000000091E60000000065 +:1054D0000000000000000000000091E80000000053 +:1054E0000000000000000000000091EA0000000041 +:1054F0000000000000000000000091EC000000002F +:105500000000000000000000000091EE000000001C +:105510000000000000000000000091F0000000000A +:105520000000000000000000000091F200000000F8 +:105530000000000000000000000091F400000000E6 +:105540000000000000000000000091F600000000D4 +:105550000000000000000000000091F800000000C2 +:105560000000000000000000000091FA00000000B0 +:105570000000000000000000000091FC000000009E +:105580000000000000000000000091FE0000FF008D +:10559000000000000000FF00000000000000FF000D +:1055A000000000000000FF00000000000000FF00FD +:1055B000000000000000FF00000000000000FF00ED +:1055C000000000000000FF0000000000000001A932 +:1055D00000001500000000010000000200000003B0 +:1055E00000000000000000040000000100000000B6 +:1055F00000000001000000040000000000000001A5 +:105600000000000300000000000000010000000492 +:105610000000000000000001000000030000000086 +:105620000000000100000004000000000000000471 +:1056300000000003000000000000000000003FFF29 +:10564000000003FF0000000300BEBC2000000000BB +:10565000000000050000000300BEBC2000000000A8 +:10566000000000050000000300BEBC200000000098 +:10567000000000050000000300BEBC200000000088 +:10568000000000050000000300BEBC200000000078 +:10569000000000050000000300BEBC200000000068 +:1056A000000000050000000300BEBC200000000058 +:1056B000000000050000000300BEBC200000000048 +:1056C000000000050000000D0000000C00000000BC +:1056D000000000100215002002150020000000301C +:1056E000081000000000003300000030000000310E +:1056F00000000002000000040000000000000002A2 +:10570000000000020000000000000002000000078E +:105710000000000200000002000000010000000381 +:1057200000000001000000020000004000000040F6 +:1057300000000004000000200000000F0000001B1B +:1057400000008000000103C00001878000020B40C0 +:1057500000028F00000312C00003968000041A406C +:1057600000049E00000521C00005A5800006294018 +:105770000006AD00000730C00007B48000083840C4 +:105780000008BC0000093FC00009C380000A474070 +:10579000000ACB00000B4EC0000BD280000C56401C +:1057A000000CDA00000D5DC0000061800000000107 +:1057B00000000001000000010000000100000001E5 +:1057C00000000001000000010000000100000001D5 +:1057D00000000001000000010000000100000001C5 +:1057E00000000001000000010000000100000001B5 +:1057F0000000101100001000000010040000102133 +:105800000000FFFF0000FFFF0000FFFF0000FFFFA0 +:105810000000004600000010000000000000000032 +:10582000000000180000000100000000000000005F +:10583000000000000000000107FFFFFF0000003F24 +:1058400007FFFFFF0000000F00007FF800007FF857 +:105850000000190000000000FFFFFFFFFFFFFFFF37 +:10586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +:10587000FFFFFFFFFFFFFFFF0000FF000000000031 +:105880000000FF00000000000000FF00000000001A +:105890000000FF00000000000000FF00000000000A +:1058A0000000FF00000000000000FF0000000000FA +:1058B0000000FF00000000000000014A0000350069 +:1058C00000000001000000020000000300000000D2 +:1058D00000000004000000010000000000000001C2 +:1058E00000000004000000000000000100000003B0 +:1058F00000000000000000010000000400000000A3 +:105900000000000100000003000000000000000192 +:10591000000000040000000000000004000000037C +:10592000000000000000000000003FFF000003FF37 +:10593000000000000393870000000000000000004A +:10594000000000000393870000000000000000003A +:105950000000000F00000007000000000000000E23 +:10596000031500200315002001000030081000007E +:105970000000003300000030000000310000000390 +:105980000000000600000003000000030000000209 +:1059900000000000000000020000000000000006FF +:1059A00000000004000000020000000200000001EE +:1059B00000000004000000010000000200000040A0 +:1059C0000000004000000004000000200000000271 +:1059D00000000020000010000000208000003100C6 +:1059E000000041800000520000006280000073004F +:1059F00000008380000094000000A4800000B50037 +:105A00000000C5800000D6000000E6800000F7001E +:105A10000001078000011800000128800001390002 +:105A20000001498000015A0000016A8000017B00EA +:105A300000018B8000019C000001AC800001BD00D2 +:105A40000001CD800001DE000001EE800001FF00BA +:105A500000000F80000000010000000100000001B4 +:105A60000000000100000001000000010000000132 +:105A70000000000100000001000000010000000122 +:105A80000000000100000001000000010000000112 +:105A90000000000100000001000000010000000102 +:105AA0000000000100001224000012100000121477 +:105AB0000000FFFF0000FFFF0000FFFF0000FFFFEE +:105AC0000000002000000020000000000000000096 +:105AD0000000002300000024000000250000002634 +:105AE00000000027000000290000002A0000002B11 +:105AF0000000002C000000010000000107FFFFFF74 +:105B00000000003F07FFFFFF0000000F00007FF8CC +:105B100000007FF80000000000000001CCCC020172 +:105B2000CCCCCCCCCCCC0201CCCCCCCCCCCC0201DF +:105B3000CCCCCCCCCCCC0201CCCCCCCCCCCC0201CF +:105B4000CCCCCCCCCCCC0201CCCCCCCCCCCC0201BF +:105B5000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFF4E +:105B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +:105B7000FFFFFFFFFFFFFFFFFFFFFFFF0000000031 +:105B80000001000100330207CCCCCCC5100000009E +:105B9000000028AD7058103C000000000000FF001D +:105BA000000000000000FF00000000000000FF00F7 +:105BB000000000000000FF00000000000000FF00E7 +:105BC000000000000000FF00000000000000FF00D7 +:105BD000000000000000FF0000000000000002665E +:105BE000000015000000000100000002000000039A +:105BF00000000000000000040000000100000000A0 +:105C0000000000010000000400000000000000018E +:105C1000000000030000000000000001000000047C +:105C20000000000000000001000000030000000070 +:105C3000000000010000000400000000000000045B +:105C400000000003000000000000000000003FFF13 +:105C5000000003FF002625A000000000002625A06C +:105C600000000000002625A000000000002625A05E +:105C700000000000000E0000011600D6002625A03E +:105C800000000000002625A000000000002625A03E +:105C900000000000002625A00000000000720000A7 +:105CA000012300F30000FFFF000000000000FFFFE1 +:105CB000000000000000FFFF000000000000FFFFE8 +:105CC000000000000000FFFF000000000000FFFFD8 +:105CD0000000000000000000000000000000FFFFC6 +:105CE000000000000000FFFF000000000000FFFFB8 +:105CF000000000000000FFFF000000000000FFFFA8 +:105D0000000000000000FFFF000000000000FFFF97 +:105D10000000000000000000000000000000FFFF85 +:105D2000000000000000FFFF000000000000FFFF77 +:105D3000000000000000FFFF000000000000FFFF67 +:105D4000000000000000FFFF000000000000FFFF57 +:105D50000000000000000000000000000000FFFF45 +:105D6000000000000000FFFF000000000000FFFF37 +:105D7000000000000000FFFF000000000000FFFF27 +:105D8000000000000000FFFF000000000000FFFF17 +:105D90000000000000000000000000000000FFFF05 +:105DA000000000000000FFFF000000000000FFFFF7 +:105DB000000000000000FFFF000000000000FFFFE7 +:105DC000000000000000FFFF000000000000FFFFD7 +:105DD0000000000000000000000000000000FFFFC5 +:105DE000000000000000FFFF000000000000FFFFB7 +:105DF000000000000000FFFF000000000000FFFFA7 +:105E0000000000000000FFFF000000000000FFFF96 +:105E10000000000000000000000000000000FFFF84 +:105E2000000000000000FFFF000000000000FFFF76 +:105E3000000000000000FFFF000000000000FFFF66 +:105E4000000000000000FFFF000000000000FFFF56 +:105E50000000000000000000000000000000FFFF44 +:105E6000000000000000FFFF000000000000FFFF36 +:105E7000000000000000FFFF000000000000FFFF26 +:105E8000000000000000FFFF000000000000FFFF16 +:105E90000000000000000000000000000000FFFF04 +:105EA000000000005554000055555555000055554B +:105EB000F00000005554000055555555000055554B +:105EC000F00000005554000055555555000055553B +:105ED000F00000000000000000010000000050146D +:105EE00000000000FF5C0000FFF55FFF0000FFFF07 +:105EF000F00003E0000000000000A000000004002B +:105F00000000000000000000000000000000100081 +:105F10000000000000000000000000000000400041 +:105F20000000000000000000000000000001000070 +:105F3000FF5C0000FFF55FFF0000FFFFF00003E0E3 +:105F4000000000000000A0000000080000000000A9 +:105F50000000000000000000000020000000000021 +:105F600000000000000000000000800000000000B1 +:105F7000000000000000000000020000000000001F +:105F80001F8B080000000000000BFB51CFC0F00386 +:105F9000096770A1F24FB3A2F2D1B1093B7E7942F9 +:105FA00098858132FDBC40034481D810886559F042 +:105FB000ABDDC18429E6248B607F966260F0978018 +:105FC000B05B242873D7281E1A385E13951FAB0EBA +:105FD000A16F6B40E80434F938A8BC800A844ED421 +:105FE000C46EAE20541E00937717096003000000B2 +:105FF00000000000000000001F8B080000000000EF +:10600000000BED7D0D7854D5B5E83E73CE9C393349 +:10601000999F9330840949F02404090A7208018287 +:106020008DB713FE8C2DB6C38F9ADEA20E146D04AD +:106030008168A1F27ADBCE81FC107EC4003E454A25 +:10604000DB31C5166FB58D365AFA9EED9D08EDA56C +:10605000AFBDEF45F0076FF136B6D6D6567C696F07 +:10606000ADF87DF5FAF65A7BEF99734E6612B0DA09 +:10607000DBF77D17FDD8EC73F6CFDA6BADBDD6DA62 +:106080006BAD7DC6E7994D4A2F21E45DF8F361427F +:106090001E960821E37325B93DE221A5846CD10841 +:1060A000FE79CB1FBE824408D9AAB1F2AE40B81720 +:1060B000CA5D29423253E1FDA4340913524448AD6C +:1060C00012851E01F3A12A28DBE62566603913CA72 +:1060D00012E261E3930AFDD52236F6BB32FCFD0FD6 +:1060E00084CCCDCD47CE269B607E99883FCD04FAE7 +:1060F000CB64CFEFE52B0851DA22E4F375B4AEABF5 +:1061000024C3FBBC0B7FC9AB22C9606E5DEE72EB92 +:10611000D9A6F489DA5CFBC92414453814A2201CE2 +:10612000BC3F211681F97DF04F63E4386FA5E2E9A9 +:1061300013DE91782A34AFC0537B4A23193A68673B +:106140004AC752AE20F17410D7197F7C3A2D616E88 +:106150008ABFEE1AA3B748B2C1E16770C4097D389F +:10616000079E271DF8EAAED8AFC5475937A9A178D1 +:1061700012EBAE1EB93E850EDD47E757283CBD74D5 +:106180001C451F1D8E6559385A897DFD170FC7673D +:106190001CFD03D30819041C28743E5A7A0CCB1A30 +:1061A0009A0E73323A2B06EF7781782FAAF5E4E640 +:1061B0008361830107BFA8D112C7FB917C69717EFF +:1061C000EDE1EB4DC88C9F453D43585DB4B395362A +:1061D000FE95A35DC8B7723460C96128955787ECF6 +:1061E0007CCBFBF92691641F5D773B3C2AE39D291C +:1061F0001D94A8F9B55D743F7D81A838AF52A159AF +:1062000030DE1629F9058463292521E58700EFE2B0 +:10621000D7DB08A986F16A2349C05FB08490F923CF +:10622000F1D399B2D28AD756F79216E00342D26CD4 +:106230009E52921E47E1257F5E682C0F151E274B4C +:106240005FBE8EF64AF34CB29ED6CA54F321FAB41E +:10625000D3BD9E0ABA1ECA42F7C37A687B25A68AB6 +:10626000F5DC8FF873ADC74BF12DD1F6EDA14BD90D +:106270007AA2F9E168E7EB11F0679F8B7515E8E703 +:1062800086BFD0FB8ECA786C3585DF0AB175C9929E +:10629000735DDE0A46A7EFF07579832AD2DB1BED2A +:1062A000212057E8FABE936F7D94AF908FB2EB0B2D +:1062B00046114E45677416F32B5A575A999D8333EE +:1062C0004374364F160E93C9499D60BF23249981AC +:1062D000F794FF0691FF827102E3AB31FA7E2694B8 +:1062E000F1168BD2B563603E990EFD8226B99D965C +:1062F0006A304996D2761DEFC81C6FF538BE80E330 +:106300007F72395E086FCB011E1B9E4F570ABE720B +:10631000D2FFF4B53EAC778C37BF06B87C91E3CDA5 +:106320008D1F8AB717EDE32B3AC3E7E96BA7327CE1 +:10633000358F77C09785436B77E08B8008A5FBB2DC +:1063400052F015C7DBBE4A86AF2F57D42EF0188403 +:106350005419A6094BDC5F71B4891664AF967C0DA5 +:10636000F849338804F3556E1E423CEEE17CB55883 +:106370006EF4FF829607965647D650B82292E4E014 +:106380003F513E40F500F0E74EAA07A07CEB250602 +:106390007F217EDB91228EFDB963ADD20CFA62477C +:1063A000C5FE654B28DE3AA3357528636212C31714 +:1063B000AC87C22FC1FC74BD0FDCF2598493E24F4D +:1063C00092E6E4F850F05B753C13D7E9FB2ACA4922 +:1063D000321D2FD64DCC0CC78D62C35365B3C7F2A7 +:1063E00085110F011867A2A97B543A8F9E1C8A83DE +:1063F0000E117838B0D483F4BC73F5A5BD404F01BD +:10640000F747250F939751C6D744316B13A1C2FBB1 +:10641000EF10C5D374DCC71909DA55B49234D067CC +:106420002F7FFE13929828D176156DA617D6734A42 +:1064300012FC1543BDD8C1E13EB42EC0F8AB527F6B +:1064400050A6FB728AC4ED8F38C557A983BFA648F2 +:1064500073727811FCF5454FB2169E071B32DB6054 +:10646000BD4AE310F1D1B2DD435A414E537007618A +:10647000BE728E77C1DF7ABDD10BFC3D9FF341F92F +:10648000A2AE3B3C14FE8931C5F2D1B27C68F55214 +:10649000B09768FD65C06BC5EDC344A6FD4367AF0B +:1064A000798DC0FB56B26C111D6A62FD10685AB23C +:1064B000C5939C0FEB9DD89AE1F44B235E0E7AA90D +:1064C00004A0F560E3603C11047A2F21AB6DFAF76C +:1064D000237CBD8AC9EC0C41D72FCB0CDEFDCDA7A8 +:1064E000FC9F0E42BB00C2594D16C561BC2AB03498 +:1064F000E83A829C1F28DDAF81F9C39BD39204FB4D +:10650000C32412C04BF97D02F0D741AF5506FD0EF2 +:10651000DEA2B6A4195E9E05FC863D1C2706FD8FF3 +:10652000E229E861F346252FC2254F65F81AA793A3 +:10653000B44117AA802EA6A226564FD2714AAF3078 +:10654000E02D9CC34B18F006F831D319302F95FA83 +:10655000CC36588A4E86334A15E2E926E4CFDA2152 +:106560009024948E0C5F3B94B69F7F818EBBE3A4F6 +:106570006C5AC4C68784F2E18C1CBEB40ABADFF23E +:10658000E865D17E2CBD01E205E8A204993E13FA2C +:1065900081F26B1BE04FD119BF0AF93ED678DA566B +:1065A000D97865362E04ED1D015BB7BEDD02BCBD9A +:1065B0000963D175CB3DB33280378A5BF321C6873F +:1065C0001989D6353D9EDE8576781AF785B047FC69 +:1065D0006017D9D6E9AD70DA45A4C592ECF695B648 +:1065E00055453814AA1FC8F4DC3AA9A640FB099601 +:1065F000F9EE64A83BED782548327E4ABF5DB5755B +:10660000C46E972B84D973B03DDEAD1AD9AF305E1E +:106610005CF3AD74C279C1FD828AF1AAE8533D5A98 +:106620003F85BC2AEC438ABC6FC0007372F4D9E189 +:1066300025C724AA47DB2BEEB380AF77C02B4AD700 +:106640002EC2E84E0C8F43CEC8151EDCEF5B6013E4 +:1066500001BFC4983DE223D767507EC42ECC3EF1E3 +:1066600046DB50AE07387F7D86249E02FEDA5D4908 +:106670007A1CF682CAEC4952BB12DBED9EF15963DB +:10668000F5F41C3FEDD688E37C43C8765C5F672A4F +:106690004D7E3985C2559144BA69069B2FCB8FB583 +:1066A0008C7FBBA72F8F809DAE697D28878A7A1E3D +:1066B000CB78A2763EB4C8CA19B03E6687EFA6E58D +:1066C000BB12E747D047B180C3FE167C26C61F0B1E +:1066D0000FD9BA16BF11F8BF35A61A2077D7CBA4A9 +:1066E0000DF4416BECD245202F849E973D65CCAED6 +:1066F0002DD1CC0C9DA2F539B941360ACFD34A0F22 +:10670000467A1D9C72F60C821D47D2DEE1211BDF0A +:10671000B8CF93E7247E9E9C47E601BFFC416F897A +:10672000644619FFB7A993BA3225779E74BF17EB59 +:10673000584FC82BBE1258A7A57E82E2B3C8A3E16A +:10674000FAC5FA9492EE52A0D3FAA33FD615FB797C +:1067500086CBADF50A3D6ED68D84DF8D4F3A4F0660 +:10676000E711FD86287C76B9E0EA9F1D57C83F6592 +:1067700084DDA67B28BEFD8BB65813291ED63FB2FA +:106780008CE92FBA0E90BB027E31AF5847767ED788 +:106790007A0AADE362E5F41F167576817DF7ACD712 +:1067A000A84C009F344F5D04FA58D8AD822ECB160A +:1067B0007796E6F32764F94B21860EF8A28633F22A +:1067C000D3F3ED0D2063AFF1F8F3DA7F63F1CF1C63 +:1067D0008F8B7F165DF781F04F02F807E418B79BA7 +:1067E000C5FADDF86E5DE47D19EC9582F8E6FD05ED +:1067F000FD46F05FA17E23F9E43ACFF83C7CC2C7A6 +:1068000017FC22E6F94BE11D8B3F2823A1DC9E08F3 +:10681000FF34C00ECE4804F51B3B3F9473B8274DA0 +:106820001F96E09C6D24F40560AE56B7984F4379EF +:10683000A8F85FCB561BD062910EFA438A8F93DE85 +:10684000BDFCC2F58C80A3BC4DF985DD4FA0B7D24D +:10685000BA6DBDE146E7FB20B1BDAFCA8D5322CE74 +:1068600087F45C63B7BBF77A875AE89191747A969C +:106870003445E9FBBDFEA13370A4ECDC794D533304 +:10688000AD8727097FCCB00672FE41381C017E1A05 +:106890009AD1BFA10B7FDDD0B05643F95F5DAC90BC +:1068A0005DB4C9C0904C545AEF8929691FC2D18C7C +:1068B000FA3DC2F58D18A767E8B406F6C4DD8D254C +:1068C000C58EF163AC7D488C6FB4DD3CB93E37FEBC +:1068D0005B94E707518F0D627F12AF4578C4F8775C +:1068E000377A48096D5F5CA6A4C13E0A0E0DE339F4 +:1068F000878AF36DCC5E8EC3BF295817761E511A56 +:10690000D8395E69E81E64A5C2F8AC7EC439E25B82 +:1069100020EF7CF41C01FC22CE11629E31F9EE4284 +:10692000DB819F95AEEF2E123041DF8D57E39297BA +:10693000D6B752BDBB9DAEFF9894FC27D84FDE95CD +:106940006D3777D2BA74FDD6A943148EAD1453A80F +:106950009F1B3DE98724CECFB4DF3D890968272AF4 +:10696000E32AC603BCF73432BBBE101C7B526476EC +:106970008D4DDEEC51321AE0758F59A7E5EB178C7F +:10698000A9B36BA85EBFA7D998A0BFA771973BC654 +:10699000353CC99F79C68F1C9F70FEF7504B0FF690 +:1069A0005120D88F7EB0C0887D61ABCB23EB0757D9 +:1069B000DF1A033C4427C46749743FDC24934CA28C +:1069C00081D68BE28FC17E59D9FED5A620A553D49E +:1069D000177F0CDEA79EFA6CD309A8C379E64ACAD2 +:1069E00007F2930316C737D85F3B5299F42B53E055 +:1069F000DC7F12CB373DEC3C7C9EF3BB4F6943FB05 +:106A000049ABA0ED6CFBDBAFF4E0F3400DED67D7D5 +:106A1000C331CAE5A584F1B081E7B377001F135BEA +:106A2000C880D700BE73FB27A6477E61D3635E593B +:106A300072D84F3BB85F42D47DDAF3935E1967A7F3 +:106A4000CB9949AF78A1DD10967B94C1389C3FACBF +:106A50004642808F76A67E83CF238D83386F446134 +:106A6000FE64D17F9ECCD62BCA3749508A835CD630 +:106A70008FA03C8DF0FDA36F8E90CF97409DF9F9CC +:106A80002371E54F76F9E6D697E532D59754AE0AED +:106A90007DE9DFFABB49683F723FBE9FE39F9CEDF3 +:106AA00065F38873BAFC6773CDF49CDE9CCDF1214D +:106AB000FA45089DB7D67E3E617599F38758971BB6 +:106AC0009E192E78C68A4788F9E7415B3A7F30EBFA +:106AD000FF1E42FF3769505E857985DF3B64523A7D +:106AE000D8F0A1550C39EA5BC0989D03FC42E961DE +:106AF00083EB60681DF2F3F9A1C963F89B320E7F46 +:106B000013F0A5399DF1A5DD0E14EF7772BED80301 +:106B10007C3105FAFF06CB0015BBD02F5073C601A0 +:106B200087802F640E399E6B154E78C3542C01B2AA +:106B3000F72656E1FE5556323F285945DCF2769548 +:106B40000CF6BCCECE27E106EE6795759CE7A03724 +:106B5000196BA3F59DC5949694C9767AAD96049E5B +:106B60005F8763CB6DF23EC3E99FED7715DBFF6472 +:106B70007A2C68DF673F27C97532D8292D5606F46D +:106B8000BC9857F4EBE278F602FC54FE4757AC424F +:106B9000B99585BFC569F764FB4BC92DF2F891FE25 +:106BA000B9ACBCAE11F2BA475B66F357ECACB9387E +:106BB000397D37D5E3207FEF09FEE1E464D8BFF5E6 +:106BC0001E93928BCAFBBA9306F87B4251F4278A34 +:106BD000F633B5055DB24D4E844C3A9E8D0F765E10 +:106BE000A43CCFCE1F75CFBFBCB92AFFFCF7C97834 +:106BF000DE26AF031D344E87AEB22E0DF0E486477D +:106C0000F45BEB497E55B6D9DF9AC1FCDE23F5DF94 +:106C1000B0039F17ABF7DC65482209907BEDC13AC2 +:106C20007D8D6DDFF7C9CC0FF85B5FBC4F9E3312D3 +:106C3000EE8BD58B85E6ED8C3AE73DC5F99ACEFB18 +:106C40004F30EF29402E2DEFA9F953E2168A4785E0 +:106C50009FE7F544D82ABA024A2A77C320C72DC431 +:106C600097F01308BBAAA3919EF7A7A31F0AED06EE +:106C7000A5514D5B6037F4484CCED2C770DED7F9D2 +:106C8000797F3C9CF7E9FB4FC1BE07F96AD8FC4C01 +:106C9000B0AFF979DF8D8F827138EE6F5DD3C03779 +:106CA00010316EF819A5E76D27BD641754FF4C5BD2 +:106CB000DBFC5CBFF825F3B3DE06FE435AAE258944 +:106CC00030BC3C473CCD00EF39722A3CDB86F76193 +:106CD00099C5D748B717ED6A8BFE0770DED2E3750A +:106CE000D8D99F3EE8ACDF4A9697823D76EBBD5EF1 +:106CF00092A628BFCD656F0C71F9F069D2D605FA5E +:106D00005CC4D9D6E8D4E4A2FA6EC377BF3C17FCC2 +:106D1000326F71FDF85BAA8F0D5F0EAE75C1B41AAC +:106D2000A7EF7FD93FFBFA0F11E89FEE9A08F1B564 +:106D300062E66771F3C3A7BA9DF08D05BF1B5EE1E4 +:106D4000072A04877254427FB27B5EAF2239FC630C +:106D500085F20644BEC01485F185B580A0DFD7FA60 +:106D6000B750BA1DF725CB1718ABFFB4BFB0FF0C57 +:106D7000E83FA770FF5DD17402E4B8F0D7F9B544DD +:106D80009C6189C9ED5DB131DED78CFEBE107CCB34 +:106D90008A358CCF0938A9BD7BA592679D6F79E2B2 +:106DA00037023FFB00DF58B2F320DABF948E9B948A +:106DB0006037E83D3FB783FD86F3BCB809FE01F2BA +:106DC000B096A4215FA3A8D6F9DE6D175F9BA56FCF +:106DD00006F75918B7202DB56006F55B83F27AB631 +:106DE000BDCDBF74678CCA997185E597874AE8A0C5 +:106DF00006F29DC90B89D7051C7FE8919A61BFDC1B +:106E00004945CBD63AFBB82A8E3B425EFC99BE9FE1 +:106E1000CBF31BF0DC6EC6809EDD29827917EDDE98 +:106E2000C4C761DDEDCFC9C482B872711BF1005EC9 +:106E30002B8901715D5F4D2202F10FDFB372D453D4 +:106E4000C5854914F44EF3113827DDAC78B91FC35A +:106E5000443FB82F68C521EFA18BDA1BC5144EF54E +:106E60008B2409F036059349E827C75ABC700EFEFB +:106E7000E7473ED502F575B1258A8FCEBB8E8F735D +:106E8000EE1F1F9B4B287C5D8F864806E56E5A05DA +:106E900039BBAE5F8EA7C17FF3ED10CEBFEEF14FD1 +:106EA0007F7D29E0E7BB5719AFA2BC6DC7FEEB9E03 +:106EB0005CF17F2CBE1E8DD2A37D1B8F8759666C23 +:106EC00005EDBAC1476E86F890587F4E2FF6A03E6A +:106ED0005C77B4D8A177D729B4FD74B0FFC8CDCB07 +:106EE000F3E8A5BD0A9353AF87D416804F3A3A70A2 +:106EF00013C2D7778317D62555B4915FD1F9DA61DC +:106F00007DAC1DEA0BEB61293D85BE7FFDE107D518 +:106F1000EA1930EF83EA1A8C236CC376024EEDE84F +:106F20003E0BE49B56A357C31169E1B71F0DC3F98C +:106F300075D3513903E76E5AE2F9DB6F785CF91BC0 +:106F4000F1A044E9BE91F3E5C6FE0D28FF37F6ED4A +:106F500046BDB6E99853EE51BCA2DF6EFD0BB2B947 +:106F600014EADFF946D8A0F0FC76F0A130E09FCE1D +:106F7000B35AA5FBC7AB3BF7058C7FBE64E47854DE +:106F800083A09F6A53DF4E365FFFB5BF06FFE6263C +:106F9000977CFD2DFCA36CE4F9E109C5757E383AB8 +:106FA000EE82FC01EB1F7DF32B169DF7F5C77FF7F3 +:106FB0001588E7DFFE1FFFFE957F807DFD03BF0E76 +:106FC000FA61D33FFEEA2B9FA3F83C77CCE701FEA2 +:106FD00078E3FBDFF8FA215A7FE3C5A975209AFE12 +:106FE000B7C2EC84371E7BBBD4A0E36CFEFEE20983 +:106FF000B0FECD4F2C9C404639BFBC41F929EDB3C2 +:10700000C393463A1AC7E8781368F5295EBAE8725E +:10701000BCFFF82480EFDC199F097B74137D06FB0D +:107020007A63DF068CEF411DCE811B1FD981E7C03B +:107030009178B6CA3D319443E510F2DDD8BFE2E362 +:1070400057D543E9350D188F0CA39E75F7DBF42C4B +:10705000A5E7CCC2F47B93FC590539B9E9919D6C45 +:10706000DE3E4ABFF048FA9D837FCCCFE3FF579CBA +:10707000FEDB37C9ED5F3D042FFBC7E5F53B8AF327 +:10708000DF8627AE1BF59CF8866BDF16C2732BF7E5 +:107090005FFF0F25FE0EE88BD71FFFE6D70F458158 +:1070A000CE3E7329D0FDD1372711CA1FBFF10EDFA5 +:1070B00004FB71F8FB3EBD17E4D0F75F40BDFEC690 +:1070C00013CFA806E633D1033AB5FBDE20D93F83C0 +:1070D00060076E643E23B2E94828E30BE7E8B53168 +:1070E000BDACD908E3738C6F6D4C33FEDF981E582E +:1070F00029E5A1DF1C6F35D32369E68FDD70E467D6 +:107100002A9E776D74951A809E2F2F81E785E82936 +:10711000D6AFC3FAE7D9E87A84EDDB42FBF38D07FB +:107120007D0AE845379DDF00BB0CE6494B2FE4A301 +:10713000BBB08B2E36CFD0F4BAF675FAC2FCD06352 +:10714000AFE7E2F075093887E68CC4DBB63215FD8F +:10715000397258457F6D97D778C102FEF8B197F420 +:10716000D22EEDE1B9C4C8E31FED00FB706AAEAEEC +:107170000413188756A27A1D98FCEE3C2C2F3D4E26 +:107180001836788EBF347502E4F7793D2C4ED93924 +:10719000309F805E80B20AF290B6CE36C1AF27FA39 +:1071A000CB31D302BDACC68CA67CE3AB5BE762FB04 +:1071B000EC39AFC1936679A83DADBDB4BE37566A10 +:1071C000C239A148FF566C80967B1B2EF6FC6CA141 +:1071D0003FB23BB85DABAECF9D5FBB8D82E7E78D25 +:1071E000DE51CECF7BE1DC370A1F159C3FEA9EBF04 +:1071F000E0F9F98B5E8A9F9D12E3EB11E72C3D8845 +:10720000FE88897C5FF778991EA824996D84D93D02 +:1072100009CD1EEF68191E00BFC797979D7D70B5F9 +:10722000017EB20E8C6F506BA0FEDDD9A3F1B3339B +:10723000BEE1E7F426268FB3485939C3E6E37EBAA8 +:107240005E2FB337293C8FADA1FF3C3C734882C908 +:107250002EA1537A297C552B8DED00CFE455830F59 +:10726000AF467E786FF1962CBF18825F2C6D998D9A +:10727000DFBB8D0FC62FF01D6FD62FF01D6F1EBF09 +:1072800040F745F247A179DD7E81A773F33E9D6FFC +:10729000DE11F6F405E6ABDCBF228C766AE4AC9432 +:1072A000063B70DF8A30C629422460825C0905599A +:1072B0009CE2AE6A6252494ABC2BAD7F867D7C4C13 +:1072C0004A3E077034FDDB8B31B0F3EEBEAAED12FF +:1072D000B03F22822EB5CE78C52E57BC6257ED073F +:1072E00013AFD8F5FEC52B7E6F970385E21572E8C4 +:1072F0005EC2FCD61717AF888E8BCF924C20C3FE90 +:10730000853FB5C52994AEB50B599C826030535367 +:10731000FF7BBB45E18A96C71F83F677771D581818 +:1073200085F793D9FB57E07D10ECFEB805FBBFD67F +:10733000C7F4852FA9BE0CFADC57C1FD9331320486 +:10734000F69C2DFE1052693B75557A1BECC7B04E6A +:10735000B64906C41D82785EFD4305417E2884C778 +:10736000FD3C1F12F2E4219EED6B263D30DF032928 +:107370001DEBDDA918BEDF938A6309F97F309FAF4B +:1073800082E5531DE4FE947695B442798AEBF16E62 +:1073900095C9B35CC9F2E18EBFF48D836B00AE601A +:1073A00000EDCF427075A56A4D98FFEE9469C2BC9E +:1073B0003DA906ACEF913206C4494DB5B45DA37A40 +:1073C0003C20F7C5A0DEA594B72F2AC33C37946FA5 +:1073D000B27185A9D8E4629DCAF69D5ACBF2C1D597 +:1073E000387B1F80387D9E7DDE906B8FF9BBAACEE7 +:1073F000DAEFE6F98EEEF61FE6EBDC35F036EAEB77 +:1074000048FD20D22B44F522F4DB35F02201FBEEBF +:1074100001EF6006F4685725317BE9FA7D5BA79B95 +:10742000CA3878FF63D4BF57F371820D43D83FBC8D +:10743000B51EDF3FE04F72FF39E179BC2CCFF1017F +:107440002FE179BC46EF765A5FC9E10EACA5AC1DC1 +:107450008143FBDF617FA5D6C2F8E91629B95285C1 +:10746000F3F361A73F5FC44BCBB9FFBCDC08C63167 +:10747000DFAFA67401D863E5B59761DCBFBC35B852 +:107480001A9F1BA59F8272BFD437B800FCC9C51EC6 +:10749000CCCB2E376A6FC176C6959F86F79F558BEA +:1074A000713D81CB9A6B316F6A92881FA735166741 +:1074B00069F6D8E3CDBBEAAB23A39D7B50E3097902 +:1074C00089FB31003E145BBDC4559FE86A5FED7ACD +:1074D0007F99EB7D9DA3BE95E39BD4AA4C3FE91316 +:1074E000D12F7B37F7CB92E1890C7E7E3F6320FC66 +:1074F000BFB497A7B3F217363ED933C6BA76AA6C93 +:10750000BF97533B8DD8EC57A20572F05423DE622F +:10751000E8F75016599054979513B523E4449238E0 +:10752000E5C4FEBF444E80FF82C9098DCB81E46172 +:10753000E0233A3DE6BDE5E481D90AF2EF84BA667C +:10754000A1321FE501C6650959D30EE79C808791DA +:10755000A457BD7E21C8436187EEE2765237DD270E +:10756000B00FA0CC67878662830E3B543CB7DB9F8D +:1075700068DF8C45A7AA3F692F075909F1598DE7A4 +:10758000EBDC33069D404E92A9209F34747215198E +:1075900081B87145CEAE2AA2FB05CE63A23DDC8345 +:1075A000B1D3F3874067C05BCC4657FC3B8D7EB2BE +:1075B0002C7DC922A71E70D197E22D02782BCDBC5D +:1075C00098F77CE0DB3A8DED7B8A3F903FA18A24DF +:1075D000FAC984FCF0EAFA83A0C7EF5DB1719B178A +:1075E000F2D9C795CC027CFE8CCB69D2E3940F62B2 +:1075F0005C2A3F7E067CE48FB6116616B078596926 +:10760000C64FE26007D790B41FF23ECC3449D2E7B0 +:10761000013D8DF24EA9A0AA1896C7E561765D5C82 +:10762000FE79341627CAC3B7AFE5E35BB7DEC9EA14 +:107630007B1F939FA284F8FBD0287684D07B029F87 +:10764000815A53CA679774811EA2ED0E08FDC6F5D4 +:10765000D181A7DF2655807F8EB748C530013C47D2 +:1076600014B30AF492D5D1B910F4D2013FEB976D5F +:107670002FE8E413FD287DF2CC5BC4D731CEC3FCE8 +:107680009AEEF7511F93F7CA529E27B394E7C95455 +:10769000507E81FC4483E93B7A5C73C76FA33E88CC +:1076A0007B92B6CC91AA9CFC17EB3BF0F4C3086725 +:1076B000A0A28D407CA482C3915B077F5F9B26AB19 +:1076C00079BBA6608E8FABB2F465FA4BE37AE842E1 +:1076D000F9BBD6C7E2367E85B5F31326EF5679E3BC +:1076E000D37C988763B13CE0C4E7593C4DE3F71382 +:1076F000B5B05504CEF18E11EBADF3C17815095438 +:107700002122FE3BF2FE983BBF27D184F93D516612 +:1077100037537BF94330BF962890DF933DC7307BCA +:10772000B91BEC6529672F5FEC79E642EDE58B3DEF +:10773000AF8C622FDFE09B33727CB7BDEC0F2E8ADB +:10774000DD4ADE83BD3C33FE7B0FD8CBE4E9853FC9 +:107750008D41DE4EFC31A807A34F2C6C067B78B61A +:10776000D0172717C27E88CE63FAA2D5F763B48FED +:10777000CF6BF1DB00BE2F81F1484B6F221EC7EBB0 +:107780002A1DF9E59528BD13583E4047F1F53AE624 +:1077900005B8F8651BE743C117221FE0FD1ADF3D5E +:1077A000EE1629D1EE9B93939F7FADF57CC11FDF31 +:1077B00007FC9B9DEFE2F325BE04707FF0F91217E2 +:1077C000EDEF79C4F7BEE64B5CB4BFE729464FAA9C +:1077D00039E712BC0383642CBE15F13A4ABEC40FCC +:1077E000ED70AB3157BEC45FD92FF2BC2F9BB7F001 +:1077F0003CC0F5D7F28BFC2A37EFAFF2CD5B282FD8 +:1078000021546526F0FE4D9987009EBA1ACD1EA818 +:1078100077557AD4ED55B9FB07629E49DA64E4FBEB +:107820008E98EA013F74C7C9C51867E9F2B6356397 +:107830005CB2D8A3F756E591B31A8BBBC95B8B66D4 +:107840001F19C5DF26AB4C4F77E8A710AEE09C6848 +:1078500031DC7F6B1FF86F27E19E9F122BAD02FB7F +:10786000E8328DDB591499BFB4C56D09A170D4E31A +:107870007D15B089E97C619C6F2CF8CE73FCC95BE7 +:10788000FDB38F8C12EF7DBFE11378F441700BE7ED +:107890000FE2FC02AF5E380C507A75980AC60FBD35 +:1078A000433E760FBBDE83F7F1841C514C713F27BA +:1078B00059ABC1BCF7BAEE210799BDF9EFDC2E90A8 +:1078C000FD6D98CF24EE1D84920AEAA96092E92BFF +:1078D000B15EC127412FCBF3F405158CEBAA9C2F89 +:1078E000E4AB061380D79E39351E383FDFA1317BCC +:1078F000AA07F2D568FB1D71BABE99B9F15769ECB8 +:107900003CBBE3E494FB57513C6C6EF2E02D0C1F42 +:10791000E9C8544A50061DF7867D800F38970CDD64 +:1079200081FB7A81C6E354D5A41AF8F8CEA63BC1F0 +:1079300002A4768FE5CB17D7182997881FD6213751 +:1079400079FC35C0F773985C828B7BA3C735B67121 +:1079500079CFE821E8A098EC5EA417EED9C0BDB9B4 +:1079600038A38BA047D6CEDFE3BE3760F07C7186AC +:107970007F3998403AFA88B273950D0F3EE05FB0B8 +:10798000FFCEDE41E8D19FACD1783CE63F69FD09EE +:10799000902900F7F169F7AF8AC2F5258FE93740E2 +:1079A000CE3AF93C186479E6829F7C43DB3270273B +:1079B000F7737F2BF0C72EF85E24C67F6189ECAF8A +:1079C0003B1CF7FD0C7EAF53F801429B09C6A12E6C +:1079D0006950F0DEB1D1B09DDD0385C6F47DE506CA +:1079E00082796797F03C7CD1FF124B75E403E8ADD8 +:1079F000CE7A39CF2BAE24B6E7749C729E1F56EE1A +:107A00007A2EE27CAA4B7E8BD21DE77B547B6FF9EA +:107A1000BFAD24FE1D6D4E0E9FED7504F745217C14 +:107A2000961A6D789F61023D37A11FA291DDD32D7B +:107A30002149F44B90069617A6F078B0E8FFB4C63B +:107A4000E4B38FFC11EFF9AA64C842F9E5A287A05C +:107A5000C38E1AE68F01FA95D1F7C57CDFE13D4769 +:107A60003A8FBF8CD1A198DF67268B38FE24220184 +:107A7000FF861B9DDF675139FE4BB87FC4EFC2B74D +:107A8000CAE9A0BA9EFF8AC37DB171D79F0B7A84E1 +:107A900048C8F17D173D3A6A3C3ECBB71739DF390C +:107AA00021578374BEC9EF61BE02ED46EE2727BDA4 +:107AB00096707A7567E9459602BD629C5EDDF56C4D +:107AC000DF087AC504BD920CCF1AFD0FE835A1C5B9 +:107AD00049AF0BA58FB8E77C4C4B84FC687F1A122A +:107AE000FA91D616A1FFCB97E5ABA706540AC7CEED +:107AF000E9C484A3C15D20F4C05F7DDB4974894E75 +:107B00009CB49DF963E18847FBA9DC6FB633B67C72 +:107B1000547FD8C114FBBECEDDF07D9DA985DB85E9 +:107B2000D46412FCD7656B07E3606754B6193C4E0A +:107B30004D1992CE378EC72197FA259EE7461CF73E +:107B40008B2BEA18DF77359134E8E9719B999EEA2F +:107B5000AA62F8B52A099E3BF4CD4AC64B9F8FAB6B +:107B60005DF21ADE1B55DA08D8CDE3924EFCEA6DC1 +:107B70003F6A81FC0862C727E553BD62F826A44F1F +:107B80005C75E4CB165AD785965D144FBFF03AF872 +:107B90004993599E1BE6CFFAEAE92917FC1FF57AAB +:107BA00029C8535FBD19C472A8A999D513BBE07D3C +:107BB0002BD00DFC256B99FC0D5738EF93BBF126AC +:107BC000F08BF73CE83A2280179B7D1271CB5D1752 +:107BD0003EDCF5F71B0FDD26A3EB9B54EF903C76C4 +:107BE000AD282BCF2B2403F65D634F37B4F7D57840 +:107BF00008D8F7BE4676DFE5D06D3F427F8B5AA1AD +:107C00004BF6EF5F6CF133BB5DE5DF7B228A21AD84 +:107C100008D9DFB3EF9E1CD3E29B61FF2C960F6B5C +:107C2000E0070C2A69CC170CD6AA98A7186C5559EE +:107C3000FFE0BD0E3911F57B1D7910593911234331 +:107C40001EDB3950E883BD5AB21DE611F785D41802 +:107C5000BB2F24FC94C21F7EE2255FD1906DDF1DF7 +:107C60004DF5A1DFFDB114F3C33F9E22660D180E42 +:107C70006BFDE8D79EC6E95D7782E8C0277527745B +:107C80001DF8A6EE8451C2EA6609D4FB8EB03CF220 +:107C90006F713FFED7799CEF108FF3ED4A1958763C +:107CA000A76AB1EC4A99F8FE58AA01CB27791CB013 +:107CB0003FD58CE5C154029FEF4FB51016A74B621C +:107CC000B937D58ACFF7A4DAB07E24B515EBBD2934 +:107CD0000BEBE95437965F49F5E0F3C3A983583EAF +:107CE000924AE3F37F4C1DC57ADD89A5CD12AE2300 +:107CF00080FECCD927E9BA6DFC3EF398330F71EAC8 +:107D000041E7F714CA5B4B1CF5A2DA898EF67EA315 +:107D1000DAF1DE17BBCCF17EFE509DA33EEFCC9591 +:107D20008EF673061738EA65C98F38DA8F6B5EEE08 +:107D3000A817C7FFDED13ED2B0C6F13E64AE73BC19 +:107D40009FB5DFF204C0CEB88298900F34A5E74EFD +:107D5000C7FBC9DD9F73F47FC9CFF4F5B41354D5C5 +:107D600043FEE411F67D1DF304E5667A8EF1662C80 +:107D7000B4F3E9FB18BCA7CF27F276E87F15DF97AD +:107D8000A0ED983FE904F72B9FDD817E65711EA071 +:107D9000E7B49750DF3CE2F453097FD02CCFEA647C +:107DA00082FB5797833ED2146C67F2FC927FE77098 +:107DB00066E335A682E70BF15EF0BD9661DFB1D0D8 +:107DC00008BB8F069F4B81EF185459CEFB69976C07 +:107DD00075D62BDB9CF5197DCEFAE5479DF5593C10 +:107DE000FE431405F352FDCF4EAE83FBAE84DF3B62 +:107DF000D6B87E8A0618DC5DA9F43CB86F25E0573A +:107E000029BE7588139F30A23AE091DF4F9D46D876 +:107E10007A54BA1F0D7C6F9640A91DA1EB82B8D190 +:107E2000D9AB4F4AB83E76FFC317A3E3DAE8A9D52A +:107E300038E154636976CEAA1DFD7E5E24F0DEEC47 +:107E4000E10BB683F87D0F388EE31F9EF78DE704B4 +:107E50006A7F792B95049CB3CD7A127F10E2074A92 +:107E600046BAC3E6AF9A126072F9F980816519D9F2 +:107E7000D784F69A922C83FB61F7F13844D966F6E1 +:107E8000FD98B28A890E7FDBB59C0E4F4F0AA0FE8B +:107E9000FFCC32667F0DC6D6F434D125849A09E62C +:107EA0001784A20A817CE6D0191FEA17526F601E60 +:107EB0000C84AC01D6DFA448DDDA2970DF42C3F2BE +:107EC000F5948EE5F1491F19F8306D746765D0801F +:107ED000F390F7126E9717AB38CF9F2A6FC53C19F6 +:107EE0005FAA2D067CFE462A86FD760C4C9320CE9A +:107EF000EF8B5F6E3AFD1071999E0D285C83188799 +:107F0000F31DF763DE5F48577BFD367DD5E14D9667 +:107F1000E177CE3EA1E239A2ACBE4782EF0AEDF393 +:107F2000B378D78E405B2DE4B9EFA826372FCBE38B +:107F3000FFBB2C20EC274D564BD1DEC73F66734F5D +:107F400053186CD1B504CF9BDE4EBAADF1FCA9F746 +:107F500041DCBE42EB69027BA462AD6EB41BD09ED5 +:107F6000A09F44D0C7EB2789C782D08ED1F17480FF +:107F7000F961CA123D12D0ADFD09163F3BF1D20D99 +:107F80003AE8AD3F446B50CF9C7BD21707FFD0B986 +:107F900012F6DDA6734FCEFB11C89BDFA54E96806F +:107FA0007C17709FFBD63373BD9420E71E7F66AEAF +:107FB000824C9476E8D50DEF9E9E0BFE186B01A9BE +:107FC000857B859B7415EF156E823DC0D685F6DFE7 +:107FD0007DA56A178C5F3AC1B3174A395885E38883 +:107FE0007B1ED4F0AE427FB5C2FB9DF462BFF61F8C +:107FF0000770BC3BA7F41D07BCDCB958372D03FC48 +:108000006D467B10ECCB2A76AEBBF31ACB3709DE7C +:10801000BF3401DF176BA7F1DEAB9A69C3F0EA3E0C +:10802000C93C0E295BD61482F910E2FCFF5615A953 +:10803000ADA2F2575998413FDE70C84320FF778FB9 +:10804000129743B4BEA79698746791F0D0701CC481 +:1080500087FE9BB69910A7BA4B6EDBB78A2E617C60 +:10806000B09AF9B1783C66DB4B774DB5DB0B85F602 +:10807000EB0FB89DF0744AC3F2584A37019E4C2A60 +:1080800086F5032903EB8752B558DF9D32995DC110 +:10809000EF998CE7FB791F8FB7961B9E38E4718FA1 +:1080A000578806F7A7CACFFE33DAD1E574C9116A3B +:1080B000A337C698DF003EF405FD1B7526FFAE8A88 +:1080C000323FD35531E65712F243C88BC63F52BBFD +:1080D000D0E11FA7F55ABE0EBAF1C7DFEE7CBFCFC5 +:1080E000DB87E719EB1A866777FF1087AF849A8DD5 +:1080F00072DDC8F1A87C70B4EF313C9677E6C5DB41 +:10810000B35F72D9B3F76DA0ABA57C741FCF13FA20 +:10811000D286B9913536FA1C86F636BE3F7CC7DC6E +:1081200008C457EFBB83187AC4360EEF7F3875B298 +:1081300074D114BE89617F6E66717BD1AEC262F765 +:108140003644BDA74D69EE45BD4BE5E80CBCEFC616 +:108150003EA6610517C72B705CAC9FDA357DB185F3 +:10816000F295EDDFB26055078AFE7AD22773B983A4 +:108170000CCDE53ADAB1146FFF142F59A4633C8497 +:10818000F401586A7D922CA0F37DB8A96E40417924 +:10819000E27CFE03C983F095C57AA405B4FC642093 +:1081A000F1CB00C4A54A1ADABF4DDBFFB1DF67C0CF +:1081B0007C879E7E1BF3DF3BDE5635D887654FBD3F +:1081C0008C79F11DD2908AF97445DB17433E0995ED +:1081D0008FD320AEAE14E95D0AD553F785930F1304 +:1081E000D441DB179FA087EE52DFD097A0FD7F041C +:1081F00088D5DC48E7F70E7D129C278BC8173BB566 +:1082000049F8BE1CF2EFFE14D8BEB89BE2E307A00B +:108210001330DEF8F94EC0CF0F8A595D29FA874E28 +:10822000B863FF6E807DE7910499DCC8D6755ACF9C +:108230009377917DAFB0F74463A558DF86E36FFF76 +:10824000A81CEE4B3C25F5412A4AD953FB2458671C +:10825000D9B17D9877702C7552EF10F41678A75B22 +:108260007F7E8C2A5E38DFA4A574B5844709FC1E86 +:108270004FD9F4B8B10DE896F69AE0876C0B32F955 +:108280003F7F888E63E3EFF90AFFBE5081EF10E174 +:10829000272C817E7B58BCE95883557405ADAF5FB0 +:1082A0005D53B78DD2E758FCDE26F8AE48C7F7AA73 +:1082B000F0DECA9922368F3BDFE67571EEE4F936BF +:1082C000B7FB59D5BB9DF1E9FAAABED23A5A76FA64 +:1082D000D93DA7F5C5BC5EECAC0B79734CB78A4BA6 +:1082E000687DE3B17D9340616F243D37C17D1AF213 +:1082F0005399C0BE7F6D607EE443B4BE81D6E16811 +:10830000BCA17FD647601D1BF6783C00E2878A98A7 +:108310009DB0B19FF25310CE2914601FACA7E77235 +:1083200085F281B5A77189FF2A42BE571DD73D94BA +:10833000F6878357776995B4AEEAD3C82CA87FAC8B +:108340000BF86EFD351EFE519A8FFD28AEF0FB3402 +:10835000B4FEA1DD073A218FA9BE4543FBB9D493F2 +:10836000C0F82039E5417D01AAB891E25D2EEEC04A +:1083700038E2FFEDF4A05D02616DB86753AF9093F2 +:108380000A2DEF53191DAD2E05FBD1E7DDDE12A03E +:108390004B4F1CEEC7916E26E7E63CE55B0DE7B957 +:1083A000FAB6F86DE8A7D01BD16E9E44B27F308F2D +:1083B000FB12C2E4EE3C9D3429B4DD6B454C0FD674 +:1083C000B75CBF1EFA4D5EBDF22771FABE414A5B33 +:1083D00018677C91E9B7C06EF69D55F999A0B98DE3 +:1083E0003EEEF72CB81CF47DBF9FD14F2E4EEEFE13 +:1083F0001788FF14D7107C5F9CFC1DDCFF191EAF93 +:10840000191097EA18F2583ED0BBC5A60E740C821C +:10841000FCC0FDF5D3C571906B6AF20ED89F078B37 +:108420007EDAA9CD47BC4F8690CAFDBB7FD20978C2 +:10843000EFDF162FD76DF579EF50690DFDAD9F7405 +:10844000C6E97E548AF7AF87FD4EDFFF10E244DFB6 +:108450002B11F28DBDAFAFE675B0DBA9BD256F1353 +:10846000FB9B581A95FFF5B6F68BE87EF72E60EF6A +:1084700037D3F9808E708ED95A02EBA2E72658D7EF +:108480003425DD2BB1FB8C704F6A89BCEAA333E83D +:1084900073DF14E6470B1433B91C2836D0BF47F1FD +:1084A000847E88E1E78269C047A0B8ADC707EF2B9B +:1084B0006BD08F509466E34009F42FE2F746257D98 +:1084C000199E6BFCB5CEEF0C897BA558873C1D7EB1 +:1084D0004E505CCFBF52151F80F8D3D6A1652847F8 +:1084E000EE29E2F67F258B53DC95B0AE067FC3659F +:1084F000C37D0BC00C9A7E7EF06928AF20BF5F0061 +:10850000E2D3D48A8F4379A888316D9D3E6B218A4E +:10851000C286BEE3E8063286CA408ECD91D3EDE036 +:108520005F8934F6C930CF841B6B2E32AE3F887121 +:10853000F5BB839EE634C69F9FD6EDDFCDDC12E40B +:10854000DF2BE5F2C4CBED87ADA407E50FA53DFB1E +:10855000BE1D972F5EEE18CF7E475B3775B88FD75D +:1085600014AA477BF4192EA7E481F91F8773810AA7 +:108570007282B63FEC67FEFAE132D207E76A25164F +:10858000272087453EEA663EAF901790EF179F4A37 +:10859000C8131FBB7401F8519EF858E90238E7ED83 +:1085A000CF7DA74915DF67C47B1099D3D2BB458423 +:1085B0007CB719C38AE46B4AFC8572D8DF835E946A +:1085C0005B078A9D7A7B2D5FF737B9BCA27A1BE5E2 +:1085D000217C1F06EEF9A9E78B489ADA7D4BB87C1F +:1085E000F725D7229FF9A8CE33AAE0FC6859805717 +:1085F0008107ADC243D2F673E3F930F6FF66118B03 +:10860000EB8A387CA1BC84BB829E02DF8B6F46BAAA +:108610006CCED285C9FFCDA1F80490D3DF5BC0E05A +:1086200076F3C1AFF8BCEA7909E110CF5F037E832E +:10863000E74A12E3B3EA7905DF8BF58A76B9F76C7E +:108640001D6FE81AFF8E32DBAFEA3199D99531659B +:10865000D87E0FBA08CE119373FB4CDCCF1EB90E37 +:1086600073308EF92B4CCE8EDC8716DA3F629D3E3E +:10867000C3F9DE9DE79485FBFC38C73AC4FECAAD5A +:10868000A714DF833EC17B970A7900FC011B781E8B +:10869000CF0699F215857FD7917402E67F439C7BC4 +:1086A0009E62DF69DBD0BF8FE713198EEF0A6D3C46 +:1086B000C6E2CD9B5E095A1EDA7E23C8658AAF5D8D +:1086C00007D938A2BD5F4B64CA8D5CFB6780D6F4C6 +:1086D00079D1D66FCE83FBDD7FD45BCBC0FE285231 +:1086E000989C232D1ADA07FBFCEC1C64BD3495C55D +:1086F000BBE8FFEC7B84AC5D9169F4829DBA8B9FF3 +:1087000047151817F22EFCF133CC5E23712506F9BC +:1087100031423E6FEF04FD7C9F4AB2F21AF263EFE2 +:108720000BB07A3CB8BDB383D90928BF95A2F22E0D +:10873000B0CF3AFDA25EDA65817DAB9AC7E11C6BD2 +:108740003DE933004EDA3F0EFBDCFAFB5A3CE7759D +:1087500054918980BF13C52ADA3B1D4FF87AE17C1A +:10876000FFC940F2DD800D7FE78A9F9F04FB39CF70 +:10877000789663BCCA8B1B8FCEDFEF99997B7FA263 +:1087800078EE7199F5433F03A9189CB49AD64B9F94 +:10879000F4615CE0B0D7292744790397035D29DDB4 +:1087A000710F5805B98071F8369407BE5889430E89 +:1087B00008F9A09E2F27695B9EC833601F38F6E139 +:1087C000247CFF4D4EB7AE9431C63CD505E6B97C4E +:1087D0008C79AE70CC03123CFB7DD851E20DEE7B60 +:1087E000646E792A4A214F7FC8F9FA4529F9992000 +:1087F0002DD70DF52D0171B1ACB8B912CED92545E3 +:10880000CC9FD17074DF71300F666A89878AC6B3D6 +:10881000FC28D817BFF5259E2F9A93AB5FECBE3A84 +:108820001C14EB1B213FD9BEE2FE8BCD21F323505C +:10883000DF7C77B56E8D120F71CBC70F8D90A34C77 +:108840004EBE7FF3C90E3A8E9C4FC5F7397D9864B2 +:10885000DF2B76E9D3CD6571CC0BB2EDF338EC7339 +:10886000F88634B7DB2C900B07C47BEBE6AE458D66 +:10887000608FE7DE835D57EACBF587EF501E0888EF +:10888000F6EBF2B72F72B5AF16EDB7742DAA180933 +:108890008F903B5007BB5179C797B52B01BE7D1E0A +:1088A000D77825623C0BC713E785A9BB77FFC85271 +:1088B000803F7B9A40FF0FDF420CB8F7F335C50CC1 +:1088C00098363D3995DB29EA79BF03CF39FC06F1AB +:1088D000398939E9B9F9A5AB47FD4EC0AF53CEEFA1 +:1088E000047C3AB919EF294FE57AA8959E3860FCC7 +:1088F000D6C3B263FFFE17BC7F2BF04E2B60074D33 +:1089000067FBFB6F0EDEB202F056FC55E1BD2DC0D9 +:10891000E4ED1DBC5CACB70DC03D97C58664C26F6D +:10892000BC2CA66DFD74CF5E4D4B8D968B156205EC +:10893000D17E49B3F6B40EFE928FBFF399573E8CA9 +:10894000DFB189A31CF3F3BC0839C8F2A177D62C98 +:108950001F35AEE2FEFD21F7FB221E77DA377323C7 +:1089600081FB626AD08A2DA7E37D3CC4F4D640D552 +:10897000AD782FF7FE997B63709EE9AABA3E067226 +:10898000B5737C17B19FBBB40AE6AF778FDF1FE2E8 +:10899000F180F357B3F392C8EB887A9AF37D474A94 +:1089A000E499EDD47AF09CF641AD6FFDFBB43E7FC7 +:1089B00058E2F05A980FDA6DBC5FF0DE84F0DE3FCB +:1089C000F326FCAE42D7F84BABC13EDBCEF129DA41 +:1089D0000F8CBF1EE1EE2CBB358679C465D73BBE3C +:1089E000B7EFE57907EE79EAC26CFD3BF5BF0EDC27 +:1089F00087C684FB56926F7EB500FC9F14F0C77843 +:108A00009EFC070CFFE3EF33FC3FE7FC776588D95A +:108A10007D3B0D27BF83B9F0772585F7CD58BF6F14 +:108A2000456A0CCF85FCAEC2EF52ECFB3263EDB36E +:108A3000D738FE7ECDF3AC6E7B44C678CAFA1A9660 +:108A40000735D67CEBBD7DA5A3E5EDDFFE88EC58B0 +:108A5000CF58F05C1762F1A8754764C7BA5B0F176F +:108A6000B9BE0B65B1FBDFC67E0DFC8C6FD67830CE +:108A7000674DE077041FBCCF781D8B2F0BE2D560CC +:108A8000BFBBF37EE3752C78AE0C31BD36165EDDD0 +:108A90007CFA41E3F1FF37FE5C0F78BC00FE14F472 +:108AA000F82F7ECCDF7EFB05F2E37FE17174780E58 +:108AB0005D201E85BC3CCAEF354FFDF2E653D75012 +:108AC000B979BA79F66CCC9755E23356CC80EF0B76 +:108AD000B0EFA54E053F6E9E7907B87E3ED5BC70BF +:108AE00003E657268A50EE3EEB31FFA51EFC76CBFF +:108AF00065F473BAFB9DE2F8FD6AB858DC1F08CD37 +:108B0000A1FD973F27D7ED1A852EA4D9860FBC2744 +:108B10001470E691BAF07D8A1877D7831F6D697E4D +:108B200038049D9F4DAC786F744EC81F089DC78256 +:108B3000676FF842F5621AE91725D9DF71B98CFD24 +:108B40009EA5E18538CBF2B33ECCDB7B0E1EB1DFB8 +:108B5000B1FA7198B65FDE3C8BFDEE1ACF8F220A18 +:108B6000C13CA2357BA7E2F740C8CA15D8FE99B030 +:108B7000D35ECAD249F017FF1DB509AB2CAF3DFE3D +:108B8000128B08BF7F5B25C0D1AFC62F7F948E7F2D +:108B9000EA633EF6BD92154B778728FF3CFB89625E +:108BA000C9FEFD96D739BFCD5DC5ECF4FE3349AFA4 +:108BB000C766AFFB23EC3DED7FE3501EFCFD86C393 +:108BC0007B7D52E279BAF14AFB77C24B787FF1DEC6 +:108BD000DDFFED7018FB3F5BE0FB2C7FE4F0B5B4EC +:108BE0008CDE9FAC1C277E9F6C92FDF7C9DCF8EBF6 +:108BF0000C27DF017ABC20B5BDB405F65393867C03 +:108C00004C1413F3D7041EE839B31B7EBA53D0E9D2 +:108C1000E3E5D3D12F2EE011F3418817E282F571FD +:108C2000162F2EE1F949F3BAFDE96D987BC87FF75D +:108C300054A1708570FE50647CE1F9C5B85185641B +:108C4000543A6EC0674E8238827B1DA2DDE9B717A9 +:108C50007E14E0EB3FE5D1B7578D5CBF5B2E5D7AAC +:108C6000D0C9373338DF44F9F77488D256D962A3B4 +:108C7000DFD408FB5D9E8BE5A7B3B08769BF4BEFE0 +:108C80006DF31A74DC1B149E6F40C7B7F3C773BC37 +:108C9000BD01414D84C30A5C067ECE17987C39DA4B +:108CA000FBB9CA7C71CA535C6E3C1FAE75EC97155C +:108CB0004B6775C24F6F527E2903F1D57FEACA4ACE +:108CC000D877D7F3DF5738AAB655CE023E578D0D69 +:108CD000E077BED075087C1794A31CCFFD67125EA9 +:108CE00038D74C5FC9F8F5BA95039E0D41F89D162B +:108CF000B66F5F86A6B671DA236CFF1C5593ED7EC6 +:108D000093C21D39BAA3BB16F739FA25B7461ED947 +:108D100001F16DD2C1BE8779E9CADF6F06BF77BFA7 +:108D2000CAF24A9EBB3680F72A28BF3AFC20D1956A +:108D30006FA5205F609C6A5CCABEE7CBE4D34F4856 +:108D40007215F09F905323E452C70AFEFB2EC6A56E +:108D5000CBF3EEA3ED1C5EC64F47D3CB239FB2F1FE +:108D6000D3BD11D511CF7A9ECBF9D3AEF3E3CA337D +:108D7000EC7C47D781F1D07FBDAAF2415847B4F5CA +:108D8000AD14E4E3DE1BE1BF7B91AE7B18D62BD69E +:108D90002FD639AEF7B24B21BE75438BEC92CF6C18 +:108DA000BF5DB7D425B779FF5A39BE1EFDE81F65F0 +:108DB0007121315EB499E2EB0A5857627BA82A8789 +:108DC0006781CF03AAB93AFB7B4614DE35BD41CC9F +:108DD000E71ADF3EB405F8E88FC144A4C4C6A7F77C +:108DE000449C725CE86768077A6BB96278F3E9AF14 +:108DF00015CD725EB8559FF1AA5D0E8C90072E7D41 +:108E0000A97B7ABC10D768216D583E2B0F637996E9 +:108E1000D343F43F4B32A17920879A658C079E6D2E +:108E20005BE1C87BFB966B1DFFCAFBBBE75BD5CA4A +:108E3000F476A1FDB1CADB1732E97A7FB659C67361 +:108E4000F88DB7CBD60DB4FDAADB59FCF7C636E7D3 +:108E5000BAE93E3D750DC0F54506D769CA560D986D +:108E600014CBEC8F9FA74B66419EF769A011D823C6 +:108E7000CB8BC4F7EEF0F73A93EC9FE4C5E64FFDD9 +:108E800010F2278E47581ECDE9E6154B20F478EBFB +:108E900041F283210276D6E87641F2F34E7BE0D2AE +:108EA0007B9DBFBF3717F412EC4F255379936DBFED +:108EB0004C2929627A71A594D7FF5503C16880E7D0 +:108EC0003FE4D67C76E095254CFE5C776FFEFE573E +:108ED0009684D8FB83F9DFB7171771BDD35709FA0A +:108EE000E0BA96FCEDD23AD39F6737FCFA4688E3A6 +:108EF0003EEB717E97E780CEE8BF45677AE274EF7C +:108F0000BA256580EF8D923EC580F88959057CF5BC +:108F1000C9DB5F46BFDF469DC13D3394780DE4CC8D +:108F20002D67D67495513AF6AF22A664E4E4861B09 +:108F30008EDFF3FD2EF410D57FAF80FE8BC2EFB035 +:108F4000815C53D2E627D892AD4809D0DD5A87F725 +:108F5000C77A033AA33BB58F69E3E40B4E7BF71D59 +:108F600017FFBAE979EBBD2E39E1E2EB9F1313ED60 +:108F7000F0FF07883E9EFC00800000001F8B080069 +:108F800000000000000BDD7D0B7854D5B5F03E33BA +:108F9000671E994C92996426EF843384478000932E +:108FA0000021548449423448C44920105E76A09878 +:108FB0000609215AB89756FF662080216A1B9152F4 +:108FC000B4548714952AADC1A62D0AC50141E93BC9 +:108FD000BC14956AB8220822A6566FB92DD5BBD706 +:108FE000DA7B67CE39494868EDF77FDFB55FBFCDE3 +:108FF0009EB31F6BAFF75AFB916059B4E3290F2161 +:10900000EFDE6F0C4F7511F26659F40E23AD7F0140 +:10901000FF4D25E4C30642C216424E948D5B41C605 +:1090200013F25959B4C12845BEEBCB8BD07E382101 +:10903000171AAC582EDB6D0C5AC610B2BC8C956456 +:10904000886220F984ACB612FC4FDF7FB9A92DD11C +:1090500061EF7BFCDADD4612CEE67D09C0352B2EB2 +:109060006007F8C7C52CE9A5DF70075D8C9B90BB36 +:1090700077D27ED648BF9AEDD19A71DEBD9F8DD34F +:10908000D7BCEFF275BD0FEBA2F8386920356D390A +:10909000B4F4CF8A5B921369E77550E44C88D4AB83 +:1090A000966AE19DB3305A03C789CF8D356D761826 +:1090B000A7D1B6D80EBF2AC3FCA309D905E3437DC7 +:1090C000FD384226F50D17216B713E01CFF1520696 +:1090D0000FFD4F268984CC926048420A395CC74B09 +:1090E000C7C504727AAEE784A1EBF71329FD834F5D +:1090F000C8DEA768FBA15B16AF4BC161BCBF1F4FA9 +:109100007F0FBC61CC6BA6B5DB75EB1365E07E2DE4 +:109110007EABB768F1ABA73B599F40484ACF71225D +:10912000FC767D7AFCFFE2B3BEE91042BCF4C7676F +:109130002E23A907BA2E90DB4C93281D16D49E250A +:10914000CB68793ECE8AFDCFC729582E20C4D7865A +:1091500074F48E28A7FC70A2D546242A7FC199B644 +:10916000D050CAD2272B6EF2A8E17990D3A572DB3A +:109170009E921405F841D9EA86F6FF61244FD15139 +:10918000FE74FA850D6E4AC725C70CD092CCA92A69 +:109190008C9940EBF9278D7946DABEC9E14439A9AB +:1091A0009CBDD8A41E57CFBF953AFEFD84C35B6219 +:1091B00025417B1E705DD778E05FB1CEEA6DE5B7E3 +:1091C000A4D0792A6B1F9904F3546F39681A41D7D8 +:1091D000F52D8715E7BBCFC1FA2F94F97AAD74BD91 +:1091E0003184BC0D4002FCDF94424FC1BFE54E13F9 +:1091F000FC2EE0BAB3FE4289CF1EE17BF1FB8BB0BF +:109200003A3AEE4E8701CBB13181271D6EFC6730B3 +:109210002E9E90470DF5856EDA24CF4134708FE392 +:1092200070982DCAD3C4185947371EEB181EDF3E5D +:109230005DB101EA7DE1714F1FF2D11F1E4FB6DA19 +:109240007C04E46F4A0CD2B7DD4C82B0FE53B7A762 +:1092500086D6792270E6019C7431AED97F6D708C10 +:1092600089F0C1DBF75C5804724DDBADB7C733F84A +:10927000015FC79C0C0F44A1F29018918784384A73 +:109280009F9C9E70BEC5E54A2F3F6796492DC6310B +:10929000588612627BB6EF4B2EE64BC40F7CB0EBC8 +:1092A0005E4B4D6B2FF2E374327AF5D00FB0040AA7 +:1092B0006F80FFBB7A76F946BA1CB22E3A760AACBA +:1092C000F38C6EDE33241C3311E834DBE8053A9D61 +:1092D000A9D7EAE5CB9C2FFA5BE7C21AAA3F62FB4B +:1092E0005ECF425328C64BC77D6B95B13444CB4506 +:1092F000B4FDDC31D8EF2CE89D45F55A3A9F22FEAB +:10930000DB27005C650CAE93E696DBF3299D4F7C72 +:109310003B2B2F08DF673F8A764B7632BE39C1F58B +:10932000FEA9D95AF8FFAE83BF87BE3D6DD3CCDB13 +:10933000977D12F30CD43EED32FB33404F9EDAB1F1 +:1093400070D16AE0CF1D36EF50A5275EDE731A118B +:10935000BE13C0C72A3DD56EF67ED4EE023E4EF651 +:10936000AE537AF2EF893266F7765544D784A0E49B +:10937000FD1F2DCC6E053F6357A802E1FF1BE713CD +:10938000A15708B76F823FDEE7F47C9BDB03C5C9BA +:10939000F4E9C2DAB32685F6BF13F48B9D3776C1A4 +:1093A000F8C93B9A297C9D06560F3E1E13023F4882 +:1093B000CC27D6355287AFEA2D5ABC2FACD5E24B1D +:1093C000CF4F6F860CA521D5BC776DF3B4364B918A +:1093D000FAC255B4EE89D8BD5D2103FEFED99A3894 +:1093E0005CFFC98A1F20BFBCB3352B0FD4D280EDE0 +:1093F00060C8F06FB183809FEBD9C1AF3B07E66FC8 +:10940000BD4F4829D2E3DAAC9993607DDF4A40FF33 +:10941000E2FD2D8C5FAB38DEDF31778E56C327E857 +:109420007C86FB2DEF77E3D71F0B7652B4BB03F49A +:109430001EF4E772F0CE1AAD1CDCE5D4CA939EAEE2 +:109440008BEAB574BDD7E9C0F6EFAC69B481FE39DB +:10945000097C037C5E6D44FB74D25F8C766017D808 +:1094600001159EEFD5CDD39FBCCD97827703FDC963 +:109470000E1BFAE52E600BB0ABD98C8E9F415B2A98 +:109480004293E30D9A717BE8B56C2DDDC1DF50E3AB +:10949000F118B777A2BEA0460B17F16AFB9F3030D8 +:1094A000390ECE34A37FE83033381DAD3647D08334 +:1094B0004DF2C15E76CFAFEB3F5F0E69E6FF01E78D +:1094C00093BEE6EFCFDFBA517FF35DE25D8172FEBE +:1094D0007F3CDE3902781D801FFA65C53B7FB841AD +:1094E0007BF25BEE2FEAE39E6EBBC1FD1FE1EF2432 +:1094F000CCBCE922A1ACFE099FE7AE2DE5E89F9E1A +:1095000030F837C4003D8F1B1CC08FF9A7599C72DF +:1095100017F7C3043C793ABB29EC4F7FF6532F3F32 +:10952000A72A1FC883794F55CED5F8C773AEA69129 +:109530007042A45E5925F9C02FE896D7282DDD6D1D +:109540004E33AEC3E6543470555ECDC471847DBBDA +:109550006BCB62E637D73F92A25ECFEBDCAEBDC1EC +:10956000FB77FBCD32F39BDD8D9DABFDB4FFA77682 +:109570007F5CBC8A4EE6782D1E4E71FA423BE0BFFE +:109580004AD96FEA8D0FE7CC36EAF413F3E7F4FA21 +:1095900048B44F8C3768F841CCA3C7E740E71BE7D6 +:1095A0007008BFFC3CC9A23FE468FDD8BEF8B77B99 +:1095B0005E5D7BFDBCAE782D1DF4F3BF114734FC1E +:1095C000AA9FA72C9EF165FE1646F713336F423E05 +:1095D0003C59F1CA64A0DBBBF7FFE5D45CD0334B48 +:1095E0008F4C06BB50161F83EDDFA54B4A067E0F3E +:1095F00048E817CEDDB278430A6B8F71F88993592A +:10960000C8C7B7F1F14F98BD1A3BA897CF57389C00 +:10961000A7E3989D22A42DC31F33707CBDD507BE40 +:109620006ED46EBC22E6BF366E34D883D7E218FD06 +:10963000E8E81950EF2BEE1725C5088B438BED4D4D +:10964000521CF88FFED5A017BA2A631CAD141595CD +:1096500016DF0CD0E3A78E1B0C6B991FC5F21C0CF8 +:1096600004E299E97970246D3FCB6FF4455150CBFA +:10967000A1CD244AD7227B10C61B7FA2ECB9188843 +:10968000DFE65914D0EB9553FD1F1941CEE6462B6A +:10969000EB683DBF63F04117AD579449102192C369 +:1096A000D4AE77D2F53F0B95AF100620C5CD49510A +:1096B0000F2EDF348DD27DA4BBDD60A73DDED8BC8C +:1096C0007C9395EAAF0D6BFDC910523FBAB9749304 +:1096D000F5662A1789BE8EA95E8A9FCDB74DB766FB +:1096E000D0753D2EFACFD8E44B27649F21E091E856 +:1096F000F7CB9B974C97297E64695AAE81F6BF12CF +:10970000BF6713B49F3367C55D3FA7DFE31E7D606E +:10971000BA4CC7CF5F28FA3F34BD7808857732FD51 +:10972000772AD45BA2A0EE8AF62B865C0AC7E6A253 +:10973000E932CC17EFBB87D0FA88478B109E8200A6 +:109740006F4FBE3FBD588E8CD7B8B9685390F64F57 +:1097500059534CDEA3A42AE80C4AA0EF5E2FAC2F8D +:1097600096E9FC8B121EDB944375DAC4B2C26842E0 +:10977000D7BB34A16DBA2517E8E4CB5568599DF0E5 +:109780003384377F617024A1EDCDC15F6C2AA5BF02 +:10979000379FDEE187B87AB5C4E42DCA5A1F36D0A8 +:1097A0007F66AEF19300FA6F2D8C4FD29561C8B7EA +:1097B000A29ECDF261DDF564566F5F47BEEAEF45CC +:1097C0001E535C4CFFB4DB7AFFFE2BAE07E97A51E7 +:1097D0005EE34E13DF6E5A1EB191762BB537775884 +:1097E000C8F8021A3F3F1D6FE77CCBE7B532B8449B +:1097F0003F12BC231EF45999F0E5E9F70A0AD73E57 +:109800003E7E9697DB01129667815E361A101EB770 +:1098100051FA6A39FD3DD146027B68E94E20582F46 +:1098200023C4B7C71E19F7777CD8922CFF4EE0FFF0 +:1098300092A494DC464F641C0AEF7A8057E49D287A +:10984000DC32C0ED3656E4DE93A3823B87C1DD1ED9 +:10985000CFF041A7790EFC9EF68E9183210EB94779 +:10986000A7FF28FF9B08ED6F7171B955587F7731BD +:1098700041FBDCB5292AD40AFE9E35E0F5ABF23176 +:109880007FE07AAAF6EA08121AA7F25FE4B019F4A8 +:1098900047EDD51CFCDDDDD83B5D441EB3F6AA9335 +:1098A00004C7A97F67EB8B8CE3C2EF7DC143C30A7A +:1098B000D45FAB9C1C817CDC3584C57FAB627C496A +:1098C000F1D7F3B7AE4A7DC02FE3EF9E4184740019 +:1098D0001EE9EF2427021F292845FBB60AB40645D6 +:1098E000E9AA3D854944CDD732A78399AD1FF06CD5 +:1098F00050C1F10F8EBF0AE02F1C9F603E68496A7D +:109900000EC68BED7F2B1E558EE3AD63FC2DB3F899 +:10991000295F66FA30BF23DE1194227C21F841D002 +:10992000B33DBEBE10F1552E395A3D3DD72D27709F +:10993000B9F04B387FD2C28071B1CA7F107CAF972B +:1099400013427EC8F43DE5FF45209710D7015EBC69 +:10995000541E62D4746470AF863E6EE40346BF1436 +:109960003BA31FC74F4F7E48EB871F32F17B7EC75B +:109970002133E0BB96C399743A1C3B2A87AD633907 +:109980002DFF01492B3AEF37E3195FB7B7158FBBAE +:1099900089CEDFDE6422A092F2270B7DFAF9AF8B2D +:1099A000A8FE4B1275D0F70AE29BEB4BEA1E582338 +:1099B000EDBB1EFD7CFAFA2111FCB8C0C8C747E018 +:1099C0006DE474DDC0D74DF117B4C66BE49614E4B2 +:1099D00045F48B9053319E18E7F60436CE6D9C4EBD +:1099E000DDFA87307EA3FA06F385A4292A3454FAD7 +:1099F00077E81DA91FBD53CEF50EFBFD087573A1B9 +:109A00005D62A2324CA27EDBF1A3C543C18FBF379A +:109A1000D9A89CA37665B614D840289CB34E2BD504 +:109A2000F07BB7FF451161A7FE4425FDF10BFA7DE0 +:109A300076872D688C057B1EA5D8D579E71609F9A0 +:109A4000EC5E1A82AEC9EBC91FF7269B719EE3A597 +:109A5000597101355C1CFF77409E37ABA77C8A3A71 +:109A600085BBDA60547DB733BB7338D6F7F5048A0B +:109A7000FFF72452857EF034B7C69F7950E7670B15 +:109A80007FA624CE579730A167FBBEFC1F3784A169 +:109A900028BF2C1F9454660B01BE92DA0897CFB0F2 +:109AA000A116E868244189AEDFE0CAC04EC72BE9A1 +:109AB000C7B8C878C7257F3AEE1BB82D5EC853508B +:109AC000BAE0FA4B8CF71C34B980CE92B791CEFA3B +:109AD0009D0427F71BBBC6A3BE8F667C78248A58DB +:109AE000A3E8F8AFD112E9CEF5D21F334730BD64F9 +:109AF000167685EBC16B2CAE16DF8F48E5E90E5A62 +:109B00003FE21E9EDB28E178244AC5FF745C02F028 +:109B1000FCF1F36F9C9B4AF16D1ACCC673D1F92B03 +:109B2000547230B194AD7B3B9783ED09D12C7F1FEC +:109B3000CDC63BE2A16C02F30CA5EBA1F2F0AA2D7D +:109B400090538F703DCCE849F91EE89568A025C870 +:109B50008199D5FFEE62E38DE4E51E17A35F622CC9 +:109B60006BA7A74FB49B7DFFB1C4E4B9F90CF56BAB +:109B7000B2347E0D2183615E3F017E692EA4EBE944 +:109B8000659C5D092C7F43ED18AEB7A75D61FA4F68 +:109B9000B69EC8043E7EF95AAB03F878BD89F1DD64 +:109BA000CB8E9003E23B7D3F7334CBEB0B7B24FCED +:109BB000F8CFDACAE3403F7670FD61E671A68067B0 +:109BC0003DCF7BC45E8DC638F4B71C3E39FB1CD23A +:109BD0005B2EA06A867635117FD0A1A2B7C961D06D +:109BE000F8FFB15763B17FEDD5712494703DBD9DF1 +:109BF0008FDF4972A926DEF8ECCC5C8453BF2E3D82 +:109C0000FEBEC3E115F558805305571CE94238E301 +:109C10000AB4F0F5E57F7C9420FC17A3C6DE44E08F +:109C2000356B7EFF0E8DBB82EAF93F60F347E6A5F8 +:109C30008A46356F5B82EF0ACA3F99EC383F8A1635 +:109C400094EFBF30A21D61F68A963BECCCAE837ECA +:109C500016710BC8B3632C21F72514FE37F4EFB649 +:109C600073BC9FD02771A7237E9D44FBDEC7F5D030 +:109C70007D206B1354FE9FCCFC5401F718BE6EA1DF +:109C8000774AADC5BE732ABADD97A0E0F7A342DFDD +:109C9000112503FA53BE0DAAEDB71E9F0E97C0679C +:109CA00094860F22F8B4E3EF5F963F983F39601C2B +:109CB0000D79D352890CA5C5C4694C5F887E435C7D +:109CC000CC9F1F42158BDAFF17FE966897CDDB6598 +:109CD000F376FDD96BB5BD908C113D55C7E9E7B959 +:109CE00074DCAC507C7DCDC5FC8F22B76FAC0BE42F +:109CF000CA163B06F4B46CCB0C11FA69C73F8A95BF +:109D0000B514FEAEDF9BBCAD30EC5E46D7C279AB7E +:109D10001A65FABBA94D725848044EFB1AC9B7948C +:109D2000E2EF268167175B4FAD2B6C1E42E74FAD0C +:109D30006570A4B71D946495FCA4D7B076D35C2657 +:109D40004EF7D0DA92F1F0BB4F6EA6A42EE5BFDF3E +:109D5000E262FA2DB54DC23C776A3D4500A573AA73 +:109D6000978D6BF786A4AFE544D6D96428CF013D23 +:109D7000DF9418ED053DFF803B3013D6597B261C40 +:109D800006344D3CD321439CF78CDB77876B4264D0 +:109D90007D8AD1910AFA33FA0C83AB255ECB0FD4BE +:109DA000A272385B99BE3492A3E05FA1ACD3F912E2 +:109DB000D765A39D11ED13E3B99E4F248117D0EF12 +:109DC000214D04E945701D89EB86E17E8BA067C4B7 +:109DD000CF1991077E4ED6436119F2AA2F6D67FB0A +:109DE0000A7ABE5CC1F14DD751A35E477FF65CB4E1 +:109DF00033F511970A7E8FE6FC5338CF351FD657BF +:109E0000BBFE17D11609E8B0438A46BBF01D6C278C +:109E1000F04EE1F826C0A1E727397E979446D7F5A2 +:109E20008D65C461247DC359BBC6E85BAAD677EBB8 +:109E3000CD48871D66EDBEBAF0DF37F3F8FA2DB7CF +:109E40007F13D0B76EEF2366A0EBB29D67CD815E26 +:109E5000F47477FF01E249AA6171416D953504EB15 +:109E60002E9C2723DD96AF37872C1EC887EF091B52 +:109E7000C0CFBD9F7841CE6BDBF6BC9A4AF19456B9 +:109E8000EB9B00F9B244CA6C1D3911BB915A1B9669 +:109E9000C01EA7B62DAE453E4E8EF6021F837F0A2A +:109EA0007EC3E5427B50A2FAF5B22998ADD0EF9778 +:109EB0003D362FEC67BC1AC5E45EE0F9B53DB71E30 +:109EC00095285E635EB084A17CC61DD80D786F5E58 +:109ED000AB14029D9A4B8803F887FA23F742BDA47E +:109EE000D14E400E06BA6EA137C4EF13EF67F2F001 +:109EF0000ED71BF4BF3CD037AFBA62987F62607A4E +:109F0000E855138353E6708E74F9F6215F8230A60C +:109F100044D6AF9F57C53F076F848F2796B6996188 +:109F20003F7539D72385F3764AEFA9E8DEE162FB76 +:109F3000C0A9BB77480AF2F1CEB5252E6C4F2C0A8A +:109F4000FCCEF222CBE9F7BB54FA43ACA3173DF2A7 +:109F500006F099FD4CC761A647C2C86F025E414733 +:109F600041AFF75CCC5EDD42CD35FE6EA674A5E355 +:109F7000BD3AD886E309B9D6CBE17B9CAF53AB762B +:109F80004A861CE67FFA55F0897645EEA20B2EC470 +:109F90004307E2614595CCE2750ECFA1B9772E0556 +:109FA000FAAF70A5E402BF7EE6627ED4965F1E43E0 +:109FB0007E5CD122B17DE89663E64AC86B057F6C72 +:109FC00004FF67067315C8D69F1F437B31A39DC549 +:109FD000E12BDAF7C85FB347F8D473E9D09DC0C767 +:109FE0002BDA2C244A02FA2938BE9E3FA91E41B919 +:109FF000214133EEA7409C807A93043C10970B3D9F +:10A000003B92AF9BD8FDE30DA04F1347E7827EB490 +:10A01000BA19DC62FC129BF79015F4641E8B17844E +:10A020005D8BE6DFE9F861D4B3D4FB05BF578CDF65 +:10A03000D33E8CCA033A8C73333D4AE99BE0EEC5AC +:10A040004E88F13D4F541025464537C0B78ADF068C +:10A05000BBCD38FF60B7CCFCE5228627D9CCD62F04 +:10A06000AFB386202FF29AB394E127DE8AF83962E3 +:10A0700058520B743A92CAF8ACC9B02EBB9ED9A7FD +:10A080002C80E7D0DC58C2F410D33B5B7EC6EC607A +:10A090006DD08E71586D6036D299B8A2BCB09F4811 +:10A0A0000287CD9531113ED0D35579E1A019D63133 +:10A0B000A38DF17F045F210DBF527D86F41E29F22E +:10A0C0006F945E804F113727583BC326A5A77C2687 +:10A0D00040DC4C6DDC6C889B213F5C60BD6EBC2C11 +:10A0E000E615FD45BCBC7CCD6F33CF517B7077F25C +:10A0F000AFB1147220E232D1BE8CC74113381D6754 +:10A10000B999DC2D1FDF867CBEFC5C3DCA87BD94FF +:10A11000E909FB19AD7E137119210F31FE8A6EBB5F +:10A1200005F2F0254F4A8E46D2B71EFA3AEC3F812F +:10A130007EBF46BD671ADFD4EAF6D7BEE666FC7C72 +:10A1400061174530DA817AF4972F6F97703F76A0C8 +:10A15000E391F04909E8B79CE3F0F2EEE249EF43FE +:10A160001CBD2B0ECFBF7CB87BD637DFA7F05EDEE1 +:10A1700039D50BF6D5D5E8477EE8724779C11FA6D9 +:10A180006AB014E2F2B56DAFC4429EE9E27363F3C4 +:10A1900040FF7D8BCBD5A59F19D7003ED63DF3FC64 +:10A1A00014F8BE3C2425807F7779D7939F833DABFD +:10A1B000D9B912CF97353EF7B219F61F0CA11DEC95 +:10A1C000F75D71E8075EFCD1235300CF8D6D8DF8EC +:10A1D000FDD28F7660FDD033CF1FF81BF80DFE58EF +:10A1E0002FB4BBF4B347BEFD37E0DBD9B15E5847AF +:10A1F0006D4066FB85825FF5FA67CF41943BC11FD6 +:10A2000033C0FF033EAF627A44F0E7F142B69F529B +:10A2100051C4F6698E4F8FAA42BF97CB5DDD7CE7B4 +:10A220000E903B03C55F32ED3FBBCCB903F65B76C6 +:10A23000F2F5D7E6307E68A2DC02F985E89CB039F9 +:10A240008DB69BBB70CF14C067938D1444219F4281 +:10A250007293CE834244F9ACE5B5FF91281D475374 +:10A2600075769EC65774B49D5F503E7DDDC4F2087E +:10A270004DDC5F9FBBF0ACC4F61564C7792107C6FF +:10A28000EBD93719C713EDBAFD368E87269E37A155 +:10A29000E3A3BDC95FC5F3A1D29246D8873EB23AC7 +:10A2A0003C19F8F6A50FEEB5D5E6A8F99BF54F6D6C +:10A2B00067729F5AD3710BACF3B6ECC5E3609A1585 +:10A2C0007C9FC505F935B03741BB46BFEDE77296B7 +:10A2D000E820AEAF40DE46262E38DF5742C849138D +:10A2E000E2E7291C5FB130BF497979EE53B02FB650 +:10A2F000D514489900F6A689DBA99D0C5EDADF012A +:10A30000FBEA743CC757F2709C0E533CF60FB2FE4A +:10A31000B7EE64FB6A210E7F5726D829186FBC1D43 +:10A32000EC4AB00AED8A62F6023F5C822678503829 +:10A330003866D1E8C8BAF57916D063B03FFD96BB50 +:10A34000F0947B42A41479193D3D9213E977BAEE5B +:10A35000CA441FB623BB12FA3907CDE87568EE155B +:10A3600073279D77CBBEB3A887EA80DF61FEC03933 +:10A370008DBD15FCB4F5C5B3C8EF157B197DEAF6A4 +:10A380007A4C10D77CD8E023EF5107B38EF3F75601 +:10A39000A9B31ACF8FBC18E5803CDA15CEFFCB4BA2 +:10A3A000CF9E07BD35786F8A0271F79517991C1CEF +:10A3B0003118109F475A47ED00FB42FD5A64E5BA39 +:10A3C0007AA5D582F865FE7EE1BCA58F40FCB5A2DA +:10A3D0008678413FD4B597A72B68572C88DFBABD44 +:10A3E000C7905F847F4BEDE15218D749ED4E14C4FE +:10A3F00063D3FCED480F570CB6774E0B3C5282FCF2 +:10A40000959B0FFC7568EE818D5698771A71C0F890 +:10A410005B337C2FA6E13A2402E726B69A5A8A6477 +:10A42000DA7F6B89E2A018A4F8DA990C769E649B17 +:10A43000B95D5B8A7E735DF2022F9E5BD3EB8B1757 +:10A44000D7A27F55A7D8109E197BA57B99DF6127DE +:10A450000C7E09F97246E8A610C8FF471C6F027F00 +:10A46000574C1D77025EAEFC9C3220FD3E631AE322 +:10A4700053E7B436D433AFBD48FD9A31117E8CF921 +:10A4800005F56F683D5E76485E94B35916353D5BC1 +:10A490004CCC4E39B9DDC92A65741D9CC8ECD4E09A +:10A4A00044032FCD5CBE797ED7111C0376F6234E74 +:10A4B000771C0EF43F1F77C5D230CA51ED6EE69778 +:10A4C000B92CBEDC6FA8F8D655CCECA4C8B343DEDB +:10A4D0001DF3ED10BFB8207E565AE19C11A51FD286 +:10A4E000F736D7F03CC057492293EFD46C09E33DCF +:10A4F000EAAF21DE12E7ED94AB73589EBEB77871D8 +:10A500007A22CF1F26F8C74BB49F3B2906FD18B708 +:10A51000B1D01005762857F2B62AB81F88F16D978A +:10A520003BC5DBAA916BE6EF7D9018C3E81AFAA34E +:10A530000C799DCA4405BFEBFDB99EF1729417E2F8 +:10A540009DB296E018882FC4FE80587768ADAD4A5A +:10A55000ADC7EEE0EB0C8D2055A017A8DF6EC77CD1 +:10A56000B283CE037179EB4D3F62717923B62B48EC +:10A5700064E7084AE8FAC02F7367F95731FB1A837A +:10A58000EB70679125D0CFDD982C357AD47876E0C2 +:10A5900079AEB7B89D11FE781D9517F4E3F6317EBC +:10A5A000AC033FCED3B77E88F037D30F33F632BA41 +:10A5B000D7ED65F64FC4E9A0F7E0DC21E809CFD874 +:10A5C000885CD7993B87017F0A3EAF9BD2390CF05C +:10A5D000D3977E28890EA1DC958C1A86790831CE16 +:10A5E000159382FB7657687C897E2C97879897987D +:10A5F0001C08BAE8E31C800BE245A19F1F70FB1BFF +:10A6000012215E378437C2F901A14FEB5EDA34AC18 +:10A61000B77360429F5A65A6B7ACA1E850A38A7F82 +:10A62000600F2C260F4B3CA715BD86E3E3B484F9DD +:10A63000E2E6EC933F6946FBDF16063E8B4AEFB835 +:10A6400019F4D723892CBFB65A62F415FBFF891081 +:10A650009B80DE688DC673B8227FA3876B3D9763AE +:10A66000817F116740BE1EDAFF84CB4588B7FB05AA +:10A67000E73B01B7E06BC510380BE711FAB23FA218 +:10A68000DF97954F12F3083B18C133A3B3D86F80FF +:10A69000F594E7F4DDAEE520D33382EFC4F757B984 +:10A6A000DF7B3FE55D287F2AF2B581116C1F208A90 +:10A6B00068CE6989F1445D9F4FD797719F1B39FC24 +:10A6C0003E02F281F906FA5FDC94522FACEF0F1CC8 +:10A6D0005FFA7E32913FED147E9547050FF7C9680A +:10A6E0009445A6C4ABE10A69E0D2E7EFBBFD32DDD9 +:10A6F000387DC1DDA45B5753D6010279AA686B2C63 +:10A7000097DF6BE8F76FEABE7710F496A3BE63F9A4 +:10A71000AEFEE6D1C31BA5F40EEF40E9D164D853D9 +:10A7200003FCFCD3067E1E6BFBC0D67980AFF33BE7 +:10A73000FC1C2A593A42B3AF62F72A6B218F3CF5D1 +:10A740009A928BFE353FCF193385FCD948F935B63F +:10A75000A0251BEE99B8FD5AF893AA6C9AF37029BC +:10A7600081784D3DAD2655D33EA37EB0E6FBA035A6 +:10A770002335DF3DC13C4D3DABE92B9AF6435B8A67 +:10A7800034F5E1DB6ED3B41F11AAD0D49BD7B655F4 +:10A79000813C8CDA355FD36FAADC69CCA5BF8F6EA4 +:10A7A0005BA2A5870E9F6381AF419EAC9D796A79BC +:10A7B000F2260D467A4CBDAAC507ECEB68CEFBDF4E +:10A7C000207F8CDDABE30F5D7F215FD184F147F407 +:10A7D000FEA63FC3FE77B45E8EF8B863AC4C7E7ABB +:10A7E0008CDB879CAC8BBE5306FE3F0015953FFD6E +:10A7F0007A83F63E4D49551CDB5FBA5AD18FDFCDC7 +:10A80000E4648E85ED3BCE89D6DE2BAA4F627AB802 +:10A810002689E79906C8CFA7393F1FEF8B9FA99BD1 +:10A820009B08F6A294603CEE285DFB67C8EBCC93D6 +:10A83000C32497CACF16BE9EADBCFFB606078EF7DF +:10A8400078433296DB1B14FCFD89866C2C430D5E2D +:10A85000FCBDB5A100CB9DD40F84F2E98652762FC2 +:10A86000A3C18FED9E6DA8C2727743007FEF41BFF9 +:10A87000ABF1686FE7D07F4E519D4B985B651C1024 +:10A880007DE692873A8CBDDC3FEAD1DFB8F0BAE7CB +:10A89000B7D79C290C1D56B56F488A719D07A69A9B +:10A8A0004826627CDB4FFFBF36F842874DFDF3B789 +:10A8B0009E7FC8B56F0CF58FEEF97D0ECC9D4AC812 +:10A8C000CCA4F6078339113CF5CD57BDE3C767BD6E +:10A8D000920A41FF18B03FAAFE0775FCEB93E334E0 +:10A8E00071B428FFC1F9B090F36BA18E5FDF4962AC +:10A8F00076EC4012BF37F77F8C5F0F45C5A05F7EB7 +:10A90000C8A4A4BB55F43F14155DC5CEAD13653680 +:10A91000A51FF5E21C1ECABFF664B61F284164825B +:10A92000F9E3210ECC9344DD603E45874789FA95D3 +:10A930001E3A5EA1CCF497040796607CAF21A25F1B +:10A94000F11C85EA5CBEB1273FD0718266F0C796E4 +:10A9500074CE077F2E2B59D1E8DB22D9785D7D5D3F +:10A9600004F2D64B5EB047BF1B94B78F40DE46FD66 +:10A97000FBE44DF03BB99635447D6E4E94855CDE2C +:10A980007626BD8BF226F8BD88FB71A25D7A32D3A4 +:10A99000CFE9C94C2E0E713F05F823AF177FC5953F +:10A9A000ACF5F36E14DF8584E945423A53414FDC40 +:10A9B000687F2A3932F42BB4C606A3C7DC78FFBE01 +:10A9C000F0D9A3DF5ED780F24D54D348307E35876F +:10A9D000AEDA6A0F023F916DA6CB9D2A3EDE10EBE8 +:10A9E0001F9B4CDBEF3591BDB03F41CDBCE24844ED +:10A9F000BE47BCD2FFFC565ACFE5F58941493153D9 +:10AA0000BEB1D0CA1A908FCE57FF07F4452E2F271C +:10AA1000F212D2ADC920373931780EDE2BD0C4F313 +:10AA2000A6F9A23A8DBA3889E248238C4BA455F195 +:10AA300010C6B410D87F6F96BC4D463A9F31C9D32B +:10AA400008408D2B2D34823C4D202D584E261D8DD7 +:10AA5000B0B537857419A1FD4DA5C146807310B9F5 +:10AA6000E640BB92F4F48A2FE03C0F24270780B71E +:10AA7000BF46B1FDEA355656FEA72DB615CABF46EC +:10AA8000B1FDEB601161F7EBDE89C1B893C66B5580 +:10AA900080BFBF1A7C8B001E3921DDCDF3BBFFD5F3 +:10AAA00089796009F543917D7CD55D28D7EC77C421 +:10AAB000BF27D20EEBC69EF5EF6D607989C64D8C2F +:10AAC000FF1BD7B2FABD9CDFBFCEE5E47E2E275137 +:10AAD000241824382EA56422E293D1319BD2219FE1 +:10AAE000D105F16C3F8A74B29136C4F3A6CAAD8128 +:10AAF0000DF865219E0392C27EF245B49A9F0636F8 +:10AB00009ED5DAE2B352BEB255B5854DD7194FE6A0 +:10AB1000F495679BF11CE56A29B02E19FCB0DD1293 +:10AB20008E6BE3E39A483D913C6A38FE693A3D0CEE +:10AB3000E3F747275391B7C34759B4D226E1799732 +:10AB40001BA5D7D3C0F41322AC7E2085EC807C43B8 +:10AB50008D8B24132A5F66BB15E5707D861284EF0A +:10AB6000E66104EF1F934E09E544AC5B9CD313FCF4 +:10AB700049F1F314C06F0E4967015FE6E47A8C1760 +:10AB800089DC9906ED0E488C2FF47CFD7CB2C8332D +:10AB9000A4337920D7B78F7B6E77BEED4261FD631A +:10ABA000D9EF0A68BDD0B900B6FCD63CB6B04CA609 +:10ABB000F2B3E7184161AD786CD5C3418ABF3D95CA +:10ABC000CE1FB869FBA38FC73C6C82EF8B24FC3E81 +:10ABD000FD71F6FDED42D20679A6371203BF0239A8 +:10ABE00099FF3BE5085C51DDF3EADD99807F57B1C1 +:10ABF000B713EFB92CB028B03FD506794E609C6BE7 +:10AC0000141ECA073F02508CAC3E95D6E709F4F0FB +:10AC1000EF3BE1DF948FB2967AD6C2FD18B25D7237 +:10AC2000801F33683BF56B68FDC2C3641CE497FB6F +:10AC3000D26B13453D28E1BDFE9B75DF85DE1BB25F +:10AC4000F49E77FF1F8CDF61C4F31D5215DBEF9973 +:10AC5000C8CB9B7999CBCB794BD9FED490AA8921CB +:10AC6000C8FB9D37298D76E0C7D104EFA91299F171 +:10AC7000E7EB19CE10E4692E48A411F26CC14D0423 +:10AC8000EF0D829CC17EA87729A5F5787029AD21AA +:10AC9000C8E39F6820BEF54355FA95D2C697CFD238 +:10ACA0003E0CEE1C8CD32693C87FB08E92C8BA900F +:10ACB000CF6EE1F55B6B59DECEE2A37A17EC9F4EC7 +:10ACC0005F479150B215CF237BF03C89F156E200EB +:10ACD00078334BC38760BF779CAF10F5EE041278D2 +:10ACE000A58396937C7BB05E600D35C212A7C27CB3 +:10ACF00059605F1519E8584C3D60A89792162C6F63 +:10AD0000236D5896910E2C67922E2CFDC461C2F3D0 +:10AD100057291E94A729566A0706E3BE1DE649F384 +:10AD2000B659309F5A511A302BBDF82FD5E2FE216B +:10AD30000964629E580E64CE51F923E7E7CD5D04A5 +:10AD4000EF742806ED795A670AD3A369294CAF6ED0 +:10AD500095B81E5921DEFB083C7617AD2F281DEE55 +:10AD6000857BE1F43BE68983F3AC981FDC6A5232C1 +:10AD7000C03FB90D2ECD411EBC76CF7F823E3A3EFC +:10AD8000FDEB2920AFD5EB3766409C505DC6EFE167 +:10AD9000C8C18C4A959C5F58CCE012E721C4EF43B0 +:10ADA000383CB7C19E16EC2353F8517F897CDF7C79 +:10ADB00027EA99125225C379F7717C1D21AE1784B9 +:10ADC000FCD4083E9083E654DA6F8ED7E385F375A2 +:10ADD000F3432C8F5C229330F8D3DDF057ED584DC0 +:10ADE000287FCCAF398879FFC83926B67F5D38AF68 +:10ADF0007D11CC5FBDD4422CB89FD4F22790E7B927 +:10AE0000351605EAD50B59DE955459F1FC7FF53618 +:10AE1000CF0690D3B9F7FBBC9077A5F361BEF616C9 +:10AE20002BDBC7B4D2F961DFEFD61A7E6EA4E681C0 +:10AE30000EE04FDACE07FEF42DB4BD4CCB74C2CE7B +:10AE4000E7D982EC9C936D1A3BE7A458EA8FC07B4C +:10AE500032CA4AE20DD269E76EDF21B173CB04E357 +:10AE60009EFEFCA11F3E70CD89FE31F80D83E0D718 +:10AE700020CB37AF312A70EE80C80E1C673EBF5F13 +:10AE8000DA54D388F9F2CFAAE8E2E8FC735A3CEC32 +:10AE9000BEC36126E773AA723B218F652D65F7FA61 +:10AEA0006040C83B5B4929CA7D2E61F99139FC5E3F +:10AEB000813EAEB0AE31B3794958033FE833B09329 +:10AEC0007DF9697DAD4FE80DD02F5DBDC8BB54FA4B +:10AED0001AF3E77809F20F729B67F51A630CC06AE0 +:10AEE0007E23BB9F1024EC9CE9FDCCAE443D2DA9F4 +:10AEF000EDBBD515BC138EF05C383C64831DD1D6F8 +:10AF000042D47186B5C87F97FAFCF9A642FF22F5B4 +:10AF10007ED23ACEEF8D29DC7EFD2E9809F319A75B +:10AF2000307E7FF3F704DF9FF9E0F7149F207F92D4 +:10AF300095C9673F78E977FD4BB91EE765C40F55A2 +:10AF40001A81BE5B5306233CE34BCB8DB0BF34EE7E +:10AF500087E3D2BE457AD2A72FFCF785AFC949BE99 +:10AF60002753D06FF01906E2B79718D317D4D275CC +:10AF70007FB2D082FBB3C26EE601B140AE3B4888DF +:10AF8000CA3ED80FB42B294DC42129904785B3F36D +:10AF90007C1C60F32A2B9135795487A69E5693AC7E +:10AFA000699F51AF68BE0F5A93ADF9EE097A35F536 +:10AFB000ACA6024DFBA12D3E4D7DF8B6524DFB11C6 +:10AFC00021BFA63E6A5795A6FD27744961BA9EF136 +:10AFD000A78CDE20D037E8EBC8C98FD8F1D16D013E +:10AFE0004DFF899D8BCB407F8DDD5BA319879CA195 +:10AFF0007E1BADD7D3FF31BA788DA047BC3512790F +:10B00000DC032864DFB13DAD7BCF4CBF087A7C7E8A +:10B010009529E2EF412FF2D09F813E5E9D9FA88F40 +:10B02000BBBF7E3478C44EE1AB39DA7204E4E19DF3 +:10B03000146DDEABC468C7757D72D288E7636A8021 +:10B04000435D113A7E0203C1BA0F123C37A65F7707 +:10B05000779C6EDC6EC2775AE83AE008BD25594B02 +:10B06000EF28454BEFE86C2DBD63BC5A7AC71568D5 +:10B07000E9EDF465F78ADF84522DDD057E0BE8FFEC +:10B0800000BF5F363ECDA9FABCE164D4B39F6DE347 +:10B090007AB6A71E986DCD8FE801AA524386AC08F8 +:10B0A000DE7AE8053B8B6FBAF5C236AE17B6E9F526 +:10B0B00082EF157451021E8C3BDF5834310DF45C65 +:10B0C0002AD92FEE5304BE40FD1D14729E9EEA86BF +:10B0D0007D496F6710ECC4760BFA937B8E0CC378B6 +:10B0E000E0F85072338615A7591CD46C66F00E4DEB +:10B0F00015FB93FEA1A9B4B4E4F8E19A07B9703343 +:10B10000E38B37401FD2C5BE09713CDCB9D7E911CA +:10B11000A2D3837A7F58E89989C1631857DFA8DDE5 +:10B12000E82FAECF5DC8EC89D0AF13799D2C09A272 +:10B130007F2FEC4C6341C003F7F2F2AC3E2331A801 +:10B14000E3FC4EB43B534910F5F04DA5DE1FAC2295 +:10B15000E057BD91067E558F783F82EFDB18BEBB6E +:10B16000F7813578D5EF035744F05C017816FBC0C2 +:10B170002F447991BF4ECD6371CAF863431AEDB481 +:10B180005FE2320FFA312F38BDAF40FDD40A1637D7 +:10B190004E38E933C2F9ABAC7A0F9EC37BC1E32FC3 +:10B1A00086FAA9D5EC7BFEE9009ECF1AB2867DCF48 +:10B1B0005B57FF0ADCFFAFFC36FBBEEFA38D786F59 +:10B1C0008C1A39D6BFB0A518EAA736B0EF13CF84D2 +:10B1D0001AA13EA289CF2FB5BD120B76F061F66E93 +:10B1E000438F7887C73753393D7AD093C70D53784B +:10B1F0007B11DF4CAD62745ADAE5BF05D94A472F9F +:10B20000BD5F5F420258BF9504B19C4E4258CE20AC +:10B2100061FC7E3BE9C4FA1D10DAD37A39514C50F7 +:10B220007F22359B9DD7A4A131E62F0ABC567CAF67 +:10B23000EFDC6FBE496223FBEAC23F6889F7AF00CB +:10B24000FFC155ECC777459E486579F14829F6C995 +:10B2500083995EFAFD037E3F2DB23F9E8FE73A68E9 +:10B260009387C0DFDD9CCADE3FB99514E079E25BCD +:10B270000BD87DBD5BC11FA6F8097F5F76C2793D03 +:10B280007C43A997B8399247D2E597E520C61F7944 +:10B2900046651408CB2F1F2F7F18E2E81740105384 +:10B2A0000979F6F105B707315863FE4D7FED4EF28F +:10B2B00073402FF07DD2D97E8F01F93357EB3FFDDC +:10B2C0003295F94FA2BC955415C77C89EBCA5B1720 +:10B2D000C4F3DE95AD16C2CEEF905438A7534DEAB5 +:10B2E00091AEE7470791AE42EF5472BEABE4FC74F7 +:10B2F0007E8705E970E12E2904F99DEAEDAF9D06F0 +:10B300007EEBD36FCA198AFA6636E7CF378E546F51 +:10B31000607A9DFB53DF1F69FC625444EEA99F18BD +:10B3200084F710DF5EC4F422B8DD1A7DD8879FE869 +:10B33000E67501475A50423B31507DE812E3737D78 +:10B34000982AC6F751D6A3F54CFE55AA657870F336 +:10B3500032AD566F57026B410E92498B04F50CD2F9 +:10B3600085A5421CEBDC597095D36B807ABAB5BECB +:10B37000BC8C8EEF04FD07EBDF7468BC5AFF997834 +:10B380003EDA647D08F76B65D2E2833C827CB83B91 +:10B39000EFF6E7D42F31EFF6F75405DBE9F36FD47E +:10B3A000D31A0B7270CE646FC23CB33EDFD2233F20 +:10B3B000A3CD63DCDCC2ED478BB01B8164583F1C1E +:10B3C0000FD5D88F495E05CAA9921FF5CC96A480E7 +:10B3D0003DCD0DF98EFA74686FB0761AC15E34F304 +:10B3E0007B49CDFC5E52F33011D776C563BCE8CB08 +:10B3F000467E19CB69FEFC7E768EEBF96C2B9EB3F4 +:10B40000DF9868DE08F9BCC87D50DE8FDF6F1DC392 +:10B41000DF5BD868E3789869C3F824219ACE4BFBA8 +:10B42000D98C5E0FC0F7A844A99C05E74D946150E4 +:10B430009A8D0EF75A0FE62B87A4613CD0797C06D3 +:10B44000ED7FF24599409CFEBCA3CBE6CC01785A37 +:10B4500077B552783E3DCACCF5CBBB8C410BBC4B8B +:10B46000D3717933B41FDB6142D33CF69A01F30CFC +:10B470001F9AC943703EA8C26AF4CB943F3EFC0FAA +:10B480007E5E47F6E6AACFF33C9DCEF206C7FBC828 +:10B4900027CE8A2F9C07701D4FE9FDFE70711AEBB5 +:10B4A000DFFD1E097F5FE92F6EA23957322B7E2602 +:10B4B0008E23EAA6AB4E1248508FA3B07BBCB29F3E +:10B4C000C07D4AD355177E8FA3FE2CEC3BC4390BAD +:10B4D0006488BF8A88E3B08FE215AE5600227ABC3A +:10B4E000DF3059EEEAF62307839D627E28E67B3D36 +:10B4F000B05FA3F53FC7126D5D9FDFFD613AB32BCF +:10B5000026DDFB0F3F4C677C1F8197BDFF20EEA11E +:10B51000B7CBBE68C80B2DE1F92692ECC37B95DF53 +:10B520009DECCA6D56E1E5FB1C7FEDFCBD0A076D85 +:10B530008FEF20E8D6B19ECA9187D2FBC134068F27 +:10B54000682FF4D82221474127CAF5422E471FA76A +:10B550003B71FC450EB64F13D8F43EEAD1C5C76C1B +:10B560006640E2571792D8D1B47ED63EE49D9DB492 +:10B570005C32B36023F817945FDF5C0ACAEDC168E0 +:10B58000F6CE5E51763E7BBF601AEEBB4AC134D424 +:10B59000BF03B51F9B131697A453B86DB121C541C6 +:10B5A000C7B18DFC00CFFBAD4F23089FADFB3DCD58 +:10B5B000CE616AFEDC9C5058923E01CFD386E3E117 +:10B5C000DCE5AF2C8CCE47890FFCAF950746601E9B +:10B5D000ECEFE981626827EEDB92C35DF8EE47315C +:10B5E000F82B59BDF081FD5303F0939E1F0070B0FE +:10B5F000CBFDF14510E0A6EB5912DB3B7DF13F5A44 +:10B600002FB63AF17DCF9F733A8B796F944F5D5986 +:10B610004CAF744952A855EA1F3E71FEB85BBE3864 +:10B620001F8B52E0497FDFAF38DDC0DBB1FB7E7F8F +:10B630004FF7235E3FCEF8F330138561893847DF3B +:10B64000CF7A8FFE8BEB1D281D7E98CEF867896D13 +:10B650006070BD9DC6D6F7EF86EB1601D79881C105 +:10B66000F5F1BF882F1FE97AC799D53F5C949EB743 +:10B67000003DC9B42EBC37BE247E60F0B9D2FF7540 +:10B68000F8E207069F11F4040933F8E610AF29D950 +:10B69000C88151DDBFD1DFBB11F771E650B30D7E1C +:10B6A000AECDCCF6DB6C1512CB1BFD93F76FBAE970 +:10B6B0009848C24ED087072C2CEFE8ED1AA63EA77B +:10B6C00097CAE5E6EFE9BE4100FF92615C2F946AFC +:10B6D000DB0DD2B513EF729033EC3C7873F69056D5 +:10B6E000765E992D392A5DC1F77787A74B9AF3CA01 +:10B6F00062BF7063BE9204FE83CF6A0F1BA97DD820 +:10B7000038B2261BF6477CC9BF39CDCE65533F56AC +:10B71000452701C7A586A38E21A6BEF1B0DCF8425D +:10B720007E7D2FFB2C1F250626A5ABECF8F25DBF16 +:10B73000760C51E58B46C34BC648AF2E03CB17F3AF +:10B74000733A493786F7653686F7CD097ED4FFC24E +:10B750005ED4BDF46305EC10B5FB04F61DBA626C53 +:10B76000680F1A471664ABF7851674DB6DED3B1A4C +:10B77000117BFDAFBDA311F16324124CE86D7C1960 +:10B780007F1774F1D97BA787388FFB9D8670C539E9 +:10B7900013BC7F52300BCA70830FCBDD09858FA598 +:10B7A000E3795C7EAFC17FB4E29C0ADF49551D9A04 +:10B7B0007A4AE074C539159C69359D9AEFE2FCAD73 +:10B7C000C9C5CEDFFAC65BF19E6A46FD079A7E4D7B +:10B7D00006F65ED3A0355D9ADF7D3E7BD0097E7094 +:10B7E000F0AA66DCE6B58C8FB39AC82CF5EF26D9A3 +:10B7F00047E0FCEBD016EB2CF538C3B73934F51124 +:10B80000A1644DBF51BB14CDF7D16DD9DA711D05BF +:10B810009AEFE25C78AC959DEB2924859AEFBB13F7 +:10B82000CA1F03798B2B086BD6D37D8EBC9F7339CF +:10B83000F2E426CC53C21EE7E4BC9EE7C97727F8A2 +:10B84000707C3DFF071F98CCF79758BC2DF8818C72 +:10B85000F766C3F7BEF8625FA2EF4730DE3BFCDD60 +:10B860001349DC9BCE260A7F07AFD7FB387FE07CED +:10B87000FFA1B9F7EF2F703D62D2BD8712E15BF6F1 +:10B880001ECA8745E23D25ED3B76A27D988F9360E9 +:10B8900064E7B9FA7BCFCE74355AF39E5D64BE5827 +:10B8A000FCFDC3C1D79F4FAC6BE0F319FB589FF968 +:10B8B000BAEFBDBC2BF017DFFBF7B7BBF197A29136 +:10B8C000FB777BC403E9F8DDA47B37461DDFC0EFBF +:10B8D000FDC537DDEF097EE9710DC175DCA87FEC90 +:10B8E00023DE65F0BE4C7FE32767F856B078F69FFD +:10B8F000B3BB36B0B129388E9C41C7D96866F71FF3 +:10B90000A906C3BC8B886F883EFEC966E7E516258D +:10B91000FF06FD011BE40EA85DB57D3B0AF751BE95 +:10B920002A39CC80D73BAD5D7FFA8102EFF687FFE5 +:10B93000741FE63D445C136D847DBA81C2D99D7746 +:10B94000E1EF38401E1CECF6D8A923F13ECE77215A +:10B950006E0318F8BD8AEF521852A8FE8833D8F14A +:10B96000DE549C99D5C742DE86B6FB8C5C8E5FA404 +:10B97000E2FB38BE3F12B75FBEA4C6F77709C38F9C +:10B980007E9FE4D38EBFD8C04EE66468F74B3E235B +:10B99000657F1C05F899CCCEC58D79715A92FA9DB8 +:10B9A00094EEFD2491FFE9239F1C392FA3CDD78866 +:10B9B0003CCDCD3798AFE97E774097AFE92FEF3494 +:10B9C0003929705BC675F24EE643ECF7AE1DEC5DAF +:10B9D0004E918712EBF5673039CF4EF6F9619CBC7A +:10B9E0000C5F3994C7A358BEE638CC3306F61B6EFD +:10B9F0008D83A57E4A7C7110B7C279E1B4F89E7C34 +:10BA0000017996F52A393FEEEC5D7F7C95CFFB44BA +:10BA100006C17253A22F00F37E60667F6FE3031BA3 +:10BA20002F6359BE777906D3374FF032C8CB0F78E2 +:10BA30003EF88378A2790F5AB45BC7E739D760F52F +:10BA4000AF57F979CAF72DF510EFB9B3F8FD2E1FEE +:10BA5000C3D3C72F323F7F69CB5933DCA37A38A3D6 +:10BA6000F009800BDAC13A96CA9D6678E7ADCD1D24 +:10BA70005803F258A710DF0BD05FE934CFA2F8FECD +:10BA800098FB311F9B581EE9E328560A781ECE28E2 +:10BA90007F02FA7D7C73A719E8DC5D9FD089F2F8FC +:10BAA00070861FE7FB7892AE7E3BAB137E9EC3C7CA +:10BAB000F90FED682F76536F27F5EF9CAD34F37CCB +:10BAC000A45E6FA4C768F4CAA2FDBF463EBED34AB7 +:10BAD00036426AEAABFB93CC106CD4C40687393487 +:10BAE00079907F4E5F7C9CD181EB6A2EECCA7C7C86 +:10BAF0003CE6351CAD749E15FB595E7C85585FBBDA +:10BB0000767DCF72BAF6F7DE9FDEEFE84F9EA5FD99 +:10BB1000FC5C1B2FC9815FA7C178930FFC3E01CA53 +:10BB20008D523DE6A955E7744FEFA3FC62347425AE +:10BB3000A8E558EC07BD2675E2BE5D1D69417AD7C0 +:10BB4000B5D375C5421915863C34D9AB5DD732F5EE +:10BB5000B94CDAEF6ED266F648105F9822FBC8F453 +:10BB6000FFB5A403C75BD1A6FD5D6F7FFAE3830C2D +:10BB700048CC4F88F0550DC7438DC07B480B9F784C +:10BB8000D748BC27AA18026F027F963BAD41E35805 +:10BB9000D877F22D02B8161305E9BA58674FC53B9E +:10BBA000485FB3CF463EFA5A931E7E9F19E0BCAB66 +:10BBB000E5FAEB12FCF30FAE3FF66530FAAFB09545 +:10BBC0001D45D918DF81FB4F14BE8F40BE047C4455 +:10BBD000F6E1BBE7A2FD47133A9E0ED3351963A6E3 +:10BBE00059C15E6C4E08FC05DA679CEE3C2FC181A2 +:10BBF0004DBB0FF7A7AEECBDF83A9CC3C3C73326C5 +:10BC0000C1049D5B6FA2FFACD96B74409EA066EF30 +:10BC10002BC8AF7DE1ADFB5E3BE9127091CC5EE0DD +:10BC200012F969BDFC5CC860F1F2638ACF04FD4C77 +:10BC300083DBF09DADAED5EC5EB9CB482D6E3C6C90 +:10BC40002206A55829F24E0CF1FAAC90FF9B6A61CE +:10BC5000EFD9FCC95164857BF3894E831FF4DF7AE9 +:10BC6000C71227DC9F16EF8B274A06F6F704C81287 +:10BC700027BC47B2C8C2DFC3FC8FE87016E5D79770 +:10BC8000CDECDD51577400DF49E8721A71FEC279BC +:10BC90009F8E83770D52AFD9F3E0FC5B17C7AF805F +:10BCA0007F6A71D738F6FE27A39B2B8BBFE7E4365C +:10BCB0006F74507BB69EDA1B282F65B0FCCA7A6E73 +:10BCC00077E0CC27DB670839F08D39BE3FB1CACAAF +:10BCD000F8B42ECAF7DD22384F708CFD3DB04F1DF1 +:10BCE000BE38D827D0BF5729FCDCBEDE85BE29531D +:10BCF000E2EF1BFE7BDE9B1479EA3AA74C5CAAF7C5 +:10BD000060C57AEBF8BB377ABA8BEFFB3E37F6CAE1 +:10BD1000175599EC7B5F71D01D7C5D75F00EB8CA2C +:10BD20004FAFA3760CE0AC8377C0AF13075CCA10AB +:10BD3000FD9D1A3FFF12D077827A1C177E7F96AF47 +:10BD4000F3D9A386D2D65EE05D93C9F878A45BF6FA +:10BD5000C33EC9A8307B67B3AF76E2BE775F70B5EC +:10BD60001775DE0970431EB7B7F96A33999DB8C4D9 +:10BD7000F5447B7C6735CA85C3F71CC4FF1FBF38F9 +:10BD8000DCA37EAFF08F5CCEAE4C67765BBCF799E0 +:10BD90002FD74BC057821EF725F8CF839E80777F21 +:10BDA000D97E00E36B4107E06705FD746D1C27E059 +:10BDB0005ECFF79944FCD6DFFBAA75F00EFA75F159 +:10BDC0002FB3F75B391C178F337F11226B291FF4B8 +:10BDD00030E3F7C53B97E3B9A512A31DFD9D8B2169 +:10BDE00009DFF5BB48D8398C8B2D2C4F58FDD43842 +:10BDF000FCFB6E4B02EC3CF6E264762F0CEAF74358 +:10BE0000B95E1BF788F93E230BCD6027973EA4D57A +:10BE1000DF3584EDC3C23E34C479178F33FFB57A62 +:10BE20008B769C9A9D332E007C35BA735389DCEE59 +:10BE3000E8FDFC5D99DCBFCF27F93772AFAB9AF80C +:10BE40009ECF64F94323E8DD09FCDCF4C59D594924 +:10BE5000EABFE3631F2C69F4D8252AF743A84EBA3A +:10BE6000DCE0C0F2954CDF2F619C8F8FB1F59FC84D +:10BE70000CEC6375B63E2277B1BF9750C5EC9E05BA +:10BE80009298F49F9605D6109CDB7D00DE19A3F8EE +:10BE9000B558983D15FE83D1F80D632CFD3EE9FDA4 +:10BEA000A54EBC2FF0DCADA5309EFBB9681FE0A706 +:10BEB000B9D0970BFAB6B9DC8EEF4BEC30B0F70780 +:10BEC000AD16F61E52E8D94987600F7E48DB234540 +:10BED000B045E3E80C935805F2596BF17C4DD3144F +:10BEE00082EFC689F90A3AFD7B00AECCD9762F8065 +:10BEF000D8ECF1E53A54E313EE1FD4719AFC606F6D +:10BF000016BE0BFCC9FEE1588E248C4FC4FD04986C +:10BF100013FC1E81B7CB0DB4AEBA0F3AB24D0A9BDB +:10BF200062F13D3D3CC751BB2E9CB800ECD98F65FA +:10BF30003CE7E37A39A548898DC027FA093BB70069 +:10BF4000E257D80BE2FE9BB81FB1208A04A355E745 +:10BF50007AAA38DFCFDBCFE2B125C49B09FDE65BCF +:10BF600049AC81E26C4171DB04B44BCB4D4EF04FD8 +:10BF70006FF89C0B97B71EFA096248B08F2F5A7062 +:10BF80009FAAEEE9187C7764A5A10BE78F1AC4F588 +:10BF9000AAC88F0F213E381755776038EEE359E075 +:10BFA0005DAB3CD47F56A0EB11B0BB74DDCBF64546 +:10BFB000E17B79DDEFC6384810E476E581248CB367 +:10BFC0005D59BEDC7B73E09D92CE4CD40B54DF41B7 +:10BFD000AA7CF0A007EF80BF6352974AFD1A5ABFB0 +:10BFE000FDC96DAC3EB8B3DA40EBAB9F6CBB03CE82 +:10BFF000DDD48DEC3C0FF58627F7B1EF799DD54662 +:10C000005A7FFCC95FB3EF70B08D32D6334F76DC08 +:10C0100001F75C2E39859FD189EF06D5BD34DCD080 +:10C02000ACA2FBA38398BEBC14C5DA5DF2B077C4A2 +:10C030004976A7E6EF11FC276F27FC24B14ED18F7C +:10C0400024F73E7EEE20A6AF97F1F77EA64693A694 +:10C0500028F62E7A10CE851DDE3F1CF1923888DF3F +:10C060004F7274E2F91D318E9EBFC4BC77F3BFAB33 +:10C0700074859F9F12DFA70C62FA80CEB31EE7C9BA +:10C08000F1E5C239BABA8AF45CA01BA597CCE925C0 +:10C09000B3778A7730F8E8B84EF00B1D5DE3C0EE59 +:10C0A0001CBE968EEF3A0AB8A9FF67473F8DC35F63 +:10C0B000CAF9635923C71785D98870B37D5EA02F4D +:10C0C000D8A3C739DE1E55B5C7F1D23BF15DE91BD8 +:10C0D0005DDF7C3ECE97BD3E155D7CB05F7178EF35 +:10C0E00008A4CBE3DD747F4433CEA5B5BA7E050446 +:10C0F000F7B1EAE2B3B0DF03FC1D7CF10E31F4F3DB +:10C100008C617E26F0BF78C78DF806E17E592DD769 +:10C110000FDDEFAFB5B17B1F64085D1FE0B5A26C0A +:10C120003C5F9F83AFCFA17E67BA5BEE4E7665CE54 +:10C1300056BD332D7EEFC67BF77839797C3C8DFC7C +:10C14000F6361ED0BD2F7A3CF465F39B805387CF23 +:10C150006E3CEBE013F804B9C57E395AF91170361C +:10C160007039EC21BF9E7F723EBE1FB8E29B948E59 +:10C17000708E58D1F2F38A768F01FEEE9DE8D79C3F +:10C18000DDAAFD7B46EDF704215FB1727F399E6326 +:10C190005DF1CB9FFC2248FBDFFDFCF76209C5F790 +:10C1A00045B92511DE83AA7D6A43AC0FF247723090 +:10C1B00016F4E5C510FB3BB27A7DFE5F5C2E843F32 +:10C1C00055C7EDCAA5671F9C09F8F8EFA74C0EB03C +:10C1D0009B2B7759C2168CEF97A19F45EB6759FDB2 +:10C1E00001CC5FAEDCABF58BEE7EE67B890AF253C9 +:10C1F00030CD900C65388DD0B26EA7C91B067C9DE2 +:10C20000347AE9346425E9DA08F0E9FB031CF074B8 +:10C21000C3CA36E362735CCFEFD40299C1FF58D929 +:10C22000FE20FA5F2BDBA75F003F62A5EE9C794DF5 +:10C230001FFED5C941DAFCA9C00F09B9D19F69FC1D +:10C24000F1333F7D89C279F1ADA45C7C2F73E76F38 +:10C250006325FAFD725B561CFBFBE9EB34FA47944D +:10C2600057C01FB0A8ED2AA3ABB257C25C0DD9CFFF +:10C27000CA5A533816E2ECDA1D26BCD754FB931F7A +:10C280003D0D7922F2A605DF6D58FE9323AF7F8521 +:10C29000D697EF31B9CA18D8762931429F950AF35B +:10C2A0004B043DEEFED9117C3F0C7E073F56D06516 +:10C2B000F99E836632BA27FE8ADB0EE27B9E3DE85A +:10C2C000D376F6167CEFF3C77F35035F5F3C209192 +:10C2D000244FCFFE354FFD3616DA09FA74D3AB077B +:10C2E0009DC2335FA2EBF85F96F4ACAD0080000016 +:10C2F0001F8B080000000000000BDD7C0B785455FC +:10C3000096EE3A75EA95A4122A0F4278249E3CC80C +:10C3100043435284048280561282A44DA0084103F4 +:10C32000A2160F21424222B46DA6F5BB290C60640F +:10C33000E89938F1F6B56DEC2E6864E87BD1CE68EB +:10C34000B0331AE8426D1AA601232020225360B7A9 +:10C35000A006131E8A8EF6E5AEB5F639A93A152069 +:10C36000E8FDE6FB9C095FBE9D7DF63E7BAFFDEFE1 +:10C37000B5D76BAF437DBB6C5FAF00D477FCFD05D9 +:10C38000398ACAB2B3402518CFF833817FAE26036D +:10C3900074DC827F0C05A8FBFD4B2FBF1E0750737A +:10C3A000C2E228C747352FAF8A823100678D0DF171 +:10C3B0008E6C80DA17D6C63B6DF8DCE489B773293A +:10C3C0009ED7FCEAD178251260E9BB8FC643368D33 +:10C3D000EA1C6E28A4D2331C12001EDA38671A3DFC +:10C3E0005F02EE75FCDE0BB2CB8BE5174698FE2F95 +:10C3F000F8FC2AFDDC1928E72A124001CEBBD9023D +:10C4000030044B330E8574790EC9DE17251AF711E7 +:10C4100080F1008F5A41FD59C9F52FA88EEBCD55FB +:10C420000CBC1EFCB1423CAD57FCD46F79AA5BCE6C +:10C4300001F834D139CC9ECD3878FC620CE92A8ED3 +:10C440002BBF5B3ACC6FE3BA621CAFBE970250427F +:10C45000CFA97FB7C91996A37B8FF1D3E6FFB13A75 +:10C460003FD21D2EE562190F35ED8C0774131D2B7D +:10C4700024F1CE8A8E87CB15DC8716759DF5DB2CD3 +:10C480003E0BD6576C79FA02D187F5D354BF7C4462 +:10C490009EEEC5F75778674D871C9EDF378CFA797B +:10C4A00077574954EFB4804FA383C6C5DFAF6268A6 +:10C4B0009DA605E62103DB912EA3148CE72EC9FB74 +:10C4C0006272803F963C8BFD3303FD03FC620E3CA1 +:10C4D000E7F53EC974833C7F881BF15A4AEB9A38D2 +:10C4E000701F1B4F1679DF0E1AAF4A898CFBF83686 +:10C4F000FC63024CB82A63B9113769F8C0F7B4126B +:10C5000029E47DAC3579B73E8FF4D6BE6F717810D3 +:10C51000DFDA974C2EC2E5B3ED6F1D9D978F65BB9B +:10C5200029AE9C6771DAA4F10207DA877AFC6DCC38 +:10C530001378137E35AF148032463C7F22869E3FAF +:10C54000C5787F667300F1797DA7E98C3F08AF124B +:10C550007C2EF8C133D29040A56F24F1F30A1B382A +:10C560007C38EF8A23B243219CA08FF93AF4FDFE78 +:10C57000FD6897D5FDD0B703F4995D63063F9F1A18 +:10C58000BEA178FE0FC2332280E717903D64125699 +:10C590003FFDDFCB6F71670FC4F74A93D3FBB6093A +:10C5A000E0F3266CB3049E27280AEFA7D289130D67 +:10C5B000C3B62EB504380241786A386A7CBAECFFFB +:10C5C000D4F13CFDFCABF1A9CABF013E0D5DB71E25 +:10C5D000CFD0F66202756860FF4D4F822712F7BF19 +:10C5E0006FA7ECDD8CA4F562FB3AC4BF777BB2D7B2 +:10C5F00083F8AC0D83075D4847AFBD2F2A06CBB546 +:10C60000D1A2DE37D4BC8EE487F6BC2F0CAADB7136 +:10C610009F7A5D7D51D1B6C0FAF3FF20472958F7C4 +:10C620007B617ABBED5A7CD8CC74F841B497CAB61A +:10C63000A4469CFF626B6A1EC20817AD90D41847CF +:10C64000F5D1791E5EC56AC6B3373C2A87E70F4F1E +:10C65000F2D2BEFE155C4727D15E7A9CC6E188EB1C +:10C6600022B164A8D9D71C0528B216752D2FA77E34 +:10C670008B37E8F15862DB62A6F62FE0092E973C73 +:10C680006B0AF007FE2E830DBC1F351B439E77DD22 +:10C69000CDFCB42C849FDC44C3F081FCB4573B9F99 +:10C6A00063612C9F4FC0D9506EAD54E55AA99CFDD3 +:10C6B0008F40B8EF95C14263C8D9EF4CC2757F81F6 +:10C6C0007599F6CC3394F974B9FB9C195203FCADFF +:10C6D000F15D0FF15DC6F5CF7BCF8E0FC73F8E5D4D +:10C6E0006A5FFB20E79758F6BCF67EFA1B54FFFD05 +:10C6F000B1A40F6060FF925D5F3F4072AC77978599 +:10C70000E9E9DDF5A7A4C7A9FEBAC541F4F63E697B +:10C710007112BD9E5D91DED1D49E88FB8F7CD0BC12 +:10C72000F34A8E9FE5F21ADEA7CB8A99CB8B5DDFA9 +:10C730009C92681FBB2C0A905CDC85870BDFAF7F67 +:10C740003DCC0BF4FECE2BE3DD41FCF1FFBB9E158F +:10C750006670333F4642F52BC4BFD1E0A4F5D4BF89 +:10C7600031F137AB71FEBA8EDDE645D85EF287BF98 +:10C77000E5901CEA7D65B799E4D4E726FFAF004554 +:10C78000D655A5AED584787F8EBA174600FC32F90F +:10C79000659727FB5AB8081C7A11075A17E25243CB +:10C7A000F2F37A78C4279B99DF7F78785C7880E60B +:10C7B000AFED9A007272302E92533C8FF45A255E80 +:10C7C000BF78BEEB4A0ED8483FAC66BD3FD8BA0B27 +:10C7D000927FA87CF07DD72DF96E66DD553FD8FDA0 +:10C7E00016FC7F82F4D3D081E760209FFFFE275C98 +:10C7F0007F39D2C1F4DEE4F9FFF17FB77D7F05F721 +:10C800003D6AF07D6FFBC1AE7BB07DDFA7EE7BA400 +:10C81000DD42F26CE7DF922068FD83ADFB95FFA25D +:10C82000EBEEB78764973505E9DB00BE6E7221D663 +:10C83000AA76C9DA3803DBF52DA394CDB2F035D84A +:10C84000EFE0BF71C80F93257E7F2D18A6132E72BF +:10C85000DC32B637E4B8F56C3FA0BA677A5AE22604 +:10C860006F5D7F0D3FCBA8187C16ECD7BC1AE7C7CD +:10C870007ECD430DF666859F9FA6E7161A278ACAC6 +:10C880001F7D22C6DD5F4DF69FD166D6F921B61019 +:10C890007F223CCDACF33BC2E04DBB11F721CC6114 +:10C8A00004AF44A66AD0FBD87F67B29DD7110E5E55 +:10C8B0008FDDF6BD7061BFD0A8FA63E1297A5CFA1A +:10C8C0007113CD83E2648C5BDF4DEB3602FA856237 +:10C8D0001DEC4F82EA471AF99581B8697E6310BE54 +:10C8E000EC5F068DC3EBD570EFC753C5FBBBE21AF7 +:10C8F000BA3F83E1EC279C0B06E21C2827DBD95EBC +:10C900000CC3FE0856DB4E789EEC5D5385D9148728 +:10C91000EBAC70490E82A102FA8ECCC63A54CB8E93 +:10C920001779DDAEEEC5583F90DF9640F18939E8C2 +:10C93000B8411E973E854A7B4231D167921CDD4E3D +:10C94000A40FE69A1C2F6211DB05CF2BB9F4BE634E +:10C95000B711DF9F73CFF03C7AFF20741747909C8C +:10C960009F2F713F48C834D2FE5582E07BFCA9DA84 +:10C970008B38CF56F7F3B694185E5735B8E68C432C +:10C98000026734BB1A5CB8BE99497D69D141F18810 +:10C99000DC94645EE71CA3CBF44836D3B70662068A +:10C9A0009EFB3934680CD1ED3235304E53ED1F23E8 +:10C9B000EE92F356F96AC48DFC5B237CACED8F1CC0 +:10C9C000C035D7DC777215AEC77E50766C56080737 +:10C9D000607B1DBEC5F7701D15544F0D8C13DBF821 +:10C9E000967B6A2CC03C958F61F1A6D258C21F0776 +:10C9F00024D3106A7797C6E607D57F7C5ADFFE847A +:10CA0000344D575F93ACAF6F289A16FCFEF5D653A2 +:10CA1000919F6C726387CA6725A7F71A7E94465F59 +:10CA2000DB6A984B78439C53994503C6E5F3FAE6D5 +:10CA3000A588B8CD409C042E736568A0F31C5B0CE0 +:10CA40000B5C41E32F4E117194C5F43EC52588F966 +:10CA500026129B3815F23FAE37DEFB3234D27855C2 +:10CA60005D10437CA5B5AF54E97C7F88BB94E9C4D5 +:10CA700063407AE1C0DC8C4D74DEAFB7FE03731700 +:10CA800024A660FF62D7BB4692DB158B679A481FCE +:10CA90001D9D75DA40F1AFDC1441F7BCAB4AE2AC46 +:10CAA00020FA5BD4751FFA99F04F43C75DADB69F6E +:10CAB00030400DB59F887227CED5BD6FE5F6961430 +:10CAC00085CBA391629C5C1424329EA758755EC8E6 +:10CAD00046BCC704F06E1904EF7E7E632108F04067 +:10CAE000BED8D779579D899541F3FF5CC5EBC85AED +:10CAF000A16F43C77B4B9D47C37B60BB787FF51419 +:10CB00000BCBE9A315E025BD1E5B7D17CB29F4B740 +:10CB100019FFA3D3252FFB9DE0B491FFBC543DDF4B +:10CB20004741C4632ADF93393EF48EC99D48EB5DCB +:10CB30005ABD94E315B051F8D356FC773505DD5B4B +:10CB40009F51E75F5742509DE6257F3A8A4AFDF3A1 +:10CB5000507FF9E5145B209E95C174321D178FC874 +:10CB60000ECB0DCE893D4106E3B8805F9C5B64E04F +:10CB700078E83B53AE54D23A5796A51A484F1D9ABF +:10CB80007E2966617600DFC0796F76A78D0BD4DBD6 +:10CB9000CA2CD55EA1B7D85F3FA2FAEB875C876D40 +:10CBA00045D901FC0FB82EC5707C563B1F70E3F3CE +:10CBB000A1F5BBBEFCD2E415CA3AECBABCDCE27DFE +:10CBC00012495DEE707CB89CE447B9C58E3DA03833 +:10CBD0007F4122D95FA5F2E4171EC5F51DDA6EA1CB +:10CBE000F0137CF68BC3A3147CEEC87F6C1A9D9364 +:10CBF000B1E0584B71D92592E38FC4A25020B1BE49 +:10CC0000D0E4DFD28D0B0ED23CB3B74B12D9C33D6B +:10CC1000EA7997B74BCC1FB1CF49DEBBA4001F7D8B +:10CC2000B649F0CB92ED828F4ACAFBE6D3F3B6ED5C +:10CC30001625988F96A97A61D976C12FCB2B5E39AC +:10CC40009846FA26FF198EB77C45E70AE7A9295BC3 +:10CC500034DE87CF6797BF6B24BB103CCEEEECA0D1 +:10CC6000F791EFFE6122CDFB92C9F1A412186FF586 +:10CC700094A5FCFCE84BC8170AC5C13DD362892EB8 +:10CC8000E2EF1CE2B3D63DC393E99CB9C7FB9269BE +:10CC9000DFC745D3F8CBB785C4CDD478EB12FCB54C +:10CCA000C5107DFAF69A2D2171A390B84F28FF9AEE +:10CCB00053F5FCAB8D7FBD7DD7F8B5DFDE52F7A510 +:10CCC000B350C4A973639CEE60B95C902AF6472BFD +:10CCD0003BBBBE3CB19CF474BEC5319AD087E8A979 +:10CCE000769C6A6E4D513EA9BF62EBD8B7A97E5FB4 +:10CCF00003D611A75B524DFCDEFDF6D3A5D1587FBC +:10CD00003041DA43E50225795A0C9679A942DE2DA5 +:10CD1000CA2CDA837040B96396D9CDF1B90D1139B7 +:10CD2000740E711EE23394831EC335F476111AF922 +:10CD3000C6203C4AAC61600CC2AFD41EADABDF95DF +:10CD4000305CD7BF4C49D6B5DF9D99A56B2F778C4A +:10CD5000D5B537A40ABBF560FE9579AB709D07BBCE +:10CD6000CC7682F020E11217C005E97D96E83D38C7 +:10CD7000F1D8A887703D93528DFCDE248AA9917E5C +:10CD8000338AF8E1C3FD7C07CCEF6DB324EF93B891 +:10CD9000CF0F972F61BE2B954FCE273BA2CD2BF8FF +:10CDA000AEA6E031E6E73640BB0AFB57FD426279AA +:10CDB000B974B289EDC94A700DF14903F968F59467 +:10CDC000B3E53CCE44D94E782ED9A86FAF2C9FC680 +:10CDD0007C5C15222F2B55391A2A5F43F9F0770511 +:10CDE0005746901CA84ED5DF0FFC4E1272DD8372A1 +:10CDF0009DECBAEBC9A17E391AC27F0DA942EE693A +:10CE000065A99C3D84E450AE59DF4F2BDF47FFCE30 +:10CE1000881BF0419395CB0F9BEC5CFE7B530297F4 +:10CE2000A79B142E3F6ACAE4B22155C8E5D846DC58 +:10CE3000E7D820F95CEE32DFE81C85CACF837E0399 +:10CE40009F9F8377AC8D4AB6A97E09BEF7446A34AA +:10CE5000EFF7B9C28F6C5276808F3BFD676C147709 +:10CE60009F0B5E13E9E5FBC067227BF07EF073FD4C +:10CE7000413CDA542E0085CB45E0E478EC43E007F2 +:10CE800049267B19385E68DEF2E6331E9C0FB7CE6A +:10CE9000C9F6029A04C1E7A44BC5CD96EA5C9F5A35 +:10CEA00040F8769F9C4D72F60E13905D4A9C48FAAE +:10CEB0002656F5A30E144C085B780DFD7F2065E126 +:10CEC000B3F47E001FB799FAE1FE56ABFE16C733E6 +:10CED0004CD1999BD72707FAFD52C5372AC5F97C53 +:10CEE0002A96E634C1FFB9310EB667347A518348C9 +:10CEF00095A8C73A52851DA8BD9F6B769BE91E6019 +:10CF000089A3C14CFE4BF1C6B161FE6BECFB8114F1 +:10CF1000F7B6D4A17AFA841C11FC72BDFDD3F6FDDC +:10CF2000BBF28DC61F13529C3B0817A301DC848300 +:10CF300031A63A8170017B15EF7F57AA7443FB2C11 +:10CF4000A7F0A30DE3484F961B1CA3713F723A1D37 +:10CF500061242F0EA97E584EF999FD69F9D44FB678 +:10CF60004BD8DE367D4218E9FF369B27897039277A +:10CF700039C27E4A72E745D9CE7E1308FDB8B43C6B +:10CF80003E85F661E69402961367CB93F3483E7FA5 +:10CF9000ADE2FB0975A573E912F787E7CA9E4AA2BD +:10CFA000710E140CCBA379669659F8DC9E3D92CA9B +:10CFB000FEDFD1FCA5735641406EDD4B7F63BFB3EE +:10CFC0005B641EE7ECF4648E4BDF4B720BE545D5DA +:10CFD0004699E59166F71D2807D6E3ABA71CB37108 +:10CFE000FF3213907D78CF7CBD1C9AEDD2D763378A +:10CFF0000AFDFA7DEDBB4F43E451A87DF7894DC48E +:10D00000172AD12F7523DE25D3934D1F937FD22866 +:10D01000315F6872A9B25CF8AB95D3178CB3E2BAF2 +:10D02000A3BC1324BA6F2A29574AC96FAD982E8D15 +:10D030000FB6172BA63FC2F19E8A8D8F98E95E3DF1 +:10D040002AC5F50DF1A7E9C51285EEA3DB703E6296 +:10D05000FE5CEFB113B4BE99152BF70C27F9DF81F5 +:10D060000781F6D99B1149FB7C68CBA538F63BFAC2 +:10D07000CF41AB99ECABE22D1746D0390895034070 +:10D08000CA97FC4C7025DCD02E54FB0D26D73CC52E +:10D090009049FE708F043E09FD909EA2F862A2B7EF +:10D0A00027D16C14657AB1D05393DFB211AE85C02D +:10D0B0007AAA6778A155B44FE3FBC4197EDB69DA1D +:10D0C000AF297DA0D3AF33FC060FF1C99D5F597521 +:10D0D0007AB6D66FE0FBC722D0EBEF77C2A2720818 +:10D0E000B712AB5E8F97DAF57A7C4644D466EA775E +:10D0F00057825E9FF7EC9BCF71893265ACEEF94C9D +:10D100006B9297E8BC3B73A26E9C5920EE9F6762BE +:10D11000793B96158EA201ED740F3DB3B04C375E8E +:10D12000A71932292ED327853B36235FCEB2BAF416 +:10D13000EB03984A785E0913F78BB5343E8E53DBC8 +:10D14000F825F3DDA4C66FD9BF18EB6BD7BD376EDA +:10D150006FA76E1E47B7BD84DCEFBCE38EB7A85C3B +:10D16000136DF5C8385EBEDF5582CB84F1E71ADE59 +:10D17000A2B2D12AE6792C1C711942F38AFBCCC7E2 +:10D1800064584B71D22B06770DE997F5066FFB02B9 +:10D19000A4F788641F4AA56270CF4E437951D8D74F +:10D1A0005A328468FCAAFD2D2A9BB7C91ECB10DA1F +:10D1B000F7F28803147F6D97D81FA8B519D8BFFC64 +:10D1C0002CA63D6755909CFEEC27E23E17129C0969 +:10D1D0000BE2289E97C6711F5749A453469CEA5EEE +:10D1E000CBE0B85E7646D1A234E43B3972AA55E86A +:10D1F0005F635FBFFD9B42EDCE3712299E5522E44F +:10D200000EDC6562F9156E50E2C57DA5D043E6BB24 +:10D210004C9B48FE9D4E13F237FCCFA0503E477802 +:10D22000AC5B1E43EFE186925FD2AF070AC149FAB9 +:10D23000FBF13435EF84027ED86FD6D023DB295E34 +:10D24000703A2D929F8F2F74EC36511CCC6EB49394 +:10D250009D1775DC651F837476C4FDC543EBE83804 +:10D26000DE3D85CEEFE93485FB0F2B77AE2AA2F9A0 +:10D270005A4C40F2BDC33E3582FA83D721EE652970 +:10D280002E41F264BE728CEC33D88BFD681546E7F4 +:10D29000729A7FFDAD27159A3FEA3830AE00FE0442 +:10D2A0005724E9217C8D0037FA13EE8F1C787E3FDE +:10D2B000DA501046F6589BD31146F93D6DAD88D72C +:10D2C000ED8C8F87E4F93F48426E80A7E2D0546C22 +:10D2D000DF6600ADDD0788F77AB3DA8E3F619964C7 +:10D2E0006FAAED9E8ACAA9368E8368ED1E28445C1B +:10D2F00065AD7D06B7F78FAF8EA78DFFC2968A43C7 +:10D300002D36C2C7AEE26C1F4AEB816FAF4A8487ED +:10D31000967F132E3BB2683F630D8EE154CE8E7123 +:10D320006F21BEB01B9474B287628738874D9158C5 +:10D33000BF6F7D8EE4CE5413CBF3FACC0D7C4FD867 +:10D3400061767CB2258EF207F0FCE1F30EA3332266 +:10D350000FE7ADB77FC9E74AB30BDA0CFD743A01AA +:10D36000E76E0BD0EDA473161BC0C59966A5F3112B +:10D37000C0C98AF5856AFD58DA7D956B687F165BB2 +:10D38000795F57A967767D0CB4CAC87797326FBFAB +:10D3900087F4F2A50DA84C708E0E6A24BD9D102E48 +:10D3A000F2A1E25C9914473BD82DECC876DC5F27EC +:10D3B0002DC8837C323E30DEA5C9676D63689C4210 +:10D3C00061352DF29B41213961049F05E54947E113 +:10D3D000C2E6D438E2432586703C4EE3A05F38397C +:10D3E000C3F96F691CEFD5E29A3FFD4E71CD7A55B6 +:10D3F0003ED517AECEE6FC90A912EBF749E982CFF5 +:10D40000EB1B2F33AE60743B683F6B1B2FB11CD3FB +:10D41000EA3DABC5F96F35C183B3B0ACFDBFF28354 +:10D42000143F43B9D74272B016DE34AF0CB2D3A06A +:10D43000FD42BFDCCB350C6EC72D7497F37CB32453 +:10D44000FB1C8AF5A56D6DAF34A27E9B15669F23EC +:10D4500061FDC2E88D9546B4C76625DAE718B06E5F +:10D460007BF16B511F6EFF9F0607CA95F498D9DCBC +:10D470003FD9FE1ED5478F56EB91627F2FA6D96606 +:10D480007BD89EB4F1BDC1C5E9611CDFBA1E3DB3B6 +:10D490001BDFD0F91303DA6549C8C36A2167CE9749 +:10D4A0000D67790569CEB106928795A3F2F85E62A1 +:10D4B000B4905FF1887D21FEFE11CFA515F1AA4B36 +:10D4C000EF7E208ACE45C7D317A4289A6F17CF576F +:10D4D0004BD951F8BC24CB1D3E9AE29192FF149D8A +:10D4E00097BA8AC3E9E437BE9AAE9E3B7B5F1AEDDA +:10D4F000CB5C70B3BF31578D33189039C98EAAB247 +:10D50000A599A87F5575887D063EF6472ACB43F33B +:10D510008182E21432E533743F60463A4C2A0E753C +:10D5200031C9A3E93DA42B51D0857462DD14D71D08 +:10D530002FECF4ED8A44E738D3CAF7C0E1B71ECF29 +:10D54000715F63BFDB9B501FE2117AA5A993CBD615 +:10D55000741072D6E8373B709C15AA9C2C956B59B9 +:10D56000CE5FEC4C8660BB6C828AE7904E1107451B +:10D570005C1D846B5C2AF80CB8AF71BFDFB7BD5976 +:10D58000A27E42DE6BFB786704B487C504F0C67DDB +:10D5900070D03E68B8239EE3C83E7CFBDBFD9369F8 +:10D5A0001F5F25BA504F75848B73DEB723CC4B7643 +:10D5B00040289D15A3853D1E4AAF5B7D3E189D6E9C +:10D5C000A2B360703ADDA47C0AAE4FAF765E359CA4 +:10D5D000B4F30AAA9C9A5B9DBC79BD14A857962700 +:10D5E000B39FA7D139907FB628D7E29FC1F8669242 +:10D5F000C69FAADCD070D4E8D3E44007DD0BEAE88C +:10D600008BDEA4A72F9ACF5354E3BFF27B72A49171 +:10D610009F5765266CA2B86354F719BA6C832746E6 +:10D62000A7F0F851EDE8116553FF2EEE3F603D2164 +:10D63000EBD0E461E87A34F938705DAA9C54E5A631 +:10D64000262FA7A000603947B258223BD8ADB3EFD0 +:10D650008AE0619DFD57627D2424BEF577BAFE778E +:10D6600025ACD6B597294FEBDAEFCE7C4657AF7095 +:10D67000FC42D77F66E1265DFB2CEB365D7DB2BFB9 +:10D680009BEDCA834DD3D90FBEE35C1FDB973ED51C +:10D690005F7E53F597DF267F19CFE71EF297B1DC47 +:10D6A000DBE4E0E7FFD654C8E5FE262797DD4D2EE4 +:10D6B0002E43CFF58C57EF35927D5AD8DDCAF6ED63 +:10D6C000A3A9EE7D2437661ABCCD91B81F134EB6C0 +:10D6D000CB9C1FE976E8F4EDDADD13DF213B2A76F7 +:10D6E000BF0C61CAF5E56FD457323883F83DAADC28 +:10D6F0000F94171D4571141C778611D658707F67DB +:10D70000D98CBE61B85F07470BBB90C435DD73563B +:10D710005B81EF47ABAB254733F0730FDD1F62E949 +:10D7200073E731292E6BBC7AAF883F162378683CAB +:10D73000D929C31DA4B9E3628DA4D7ABA811E99C74 +:10D740008373DF82EFCDB3B5731C68EEDE27EB1673 +:10D75000E07358E32960FB48D3DB9E1386ABB7DD4B +:10D76000BCDE3E385A9C9FB59288177AA28D1C87E2 +:10D770000BD5A75BD4F5CD68F6C851E4B7BC0B7CDC +:10D780006F3953D5AB88478B2526700E35FE9F65C4 +:10D7900037FA32A248EF3C5342EFD51E51188F5052 +:10D7A0003B41F36B34BE4779DF4CFD2F1E07B6DBE0 +:10D7B00026F478FD6DCA403F6330FF47A3BFABA995 +:10D7C0009AF96657939B4B5F538DCA8F0D5C7FBB55 +:10D7D000A991EB7B9A3C5CEE6D6A51F9B195DBF750 +:10D7E000373DC7F5834D5E952FB7F1F349AAFCB9D4 +:10D7F0003C5A954BD622BE6F01A32803FCA078E0CB +:10D8000006FC509B20E473285F5C8F0FD04150E8EA +:10D810009E641EEA439263F781670CE597542F6D6F +:10D820003571FEE9F7E4872ADBB3268A3F84CAB75D +:10D830007B4061BE1BA8EFDD8E9BD1F79A7C93D114 +:10D840002F233D65911F7150DCE0BBDB17EE06A274 +:10D8500063F0F9C4BE9812D0B78DA1B8E3D1AD3E44 +:10D8600024E17C8173AFF31AF7BBA17EE41B89A08E +:10D87000EAADEF461F7ADC26DAF7C1E88BCF7016E7 +:10D88000A61704F459389F792C47D838DFD96CF1A2 +:10D890007A9F247FEF8D3091EF607326CD0A8AD76F +:10D8A00014A58BFB967F8A7516A5B37DD0B3F5972B +:10D8B000745E3A2238BE12EA2F5DEE2E19166C2FD6 +:10D8C00085CAD37AFB253E7703F4BC64603D5F6F65 +:10D8D0000037E533E559C02A21ADC7D28B5D62DE42 +:10D8E000C99CBF71D16EBCE17D687DE3051EFFBAA6 +:10D8F000ED06913755BFB3C0BE30282ED09A2EEC1E +:10D900000772043FB606F0BB597E9ED257AD930F07 +:10D910003F38FDE9FCAD3E2E856A87F09DE92EE398 +:10D920007D98471ED1778AFF3BDD5446A5B8D7A521 +:10D93000F3FD9DDF46EDE75FFB268DECE8F3774CCA +:10D94000B417C1407978B3F24F937B9A1C5C675649 +:10D95000BF7FE98FDBC48DA5B88DB61FCFA5EBF3D4 +:10D960000F42CF59EF58DC30A4B77787C8CBEB8D87 +:10D970000CF74AB8E5CEAE3F1DA73C28F0E9F5B755 +:10D98000D36AE37CD771F31DACC701F53899AEB803 +:10D99000D29EE0714B8DC20F02A323F3FEA073D37E +:10D9A000ACE6576CC392BE4B1A32DF6F5482CF8500 +:10D9B0004A6FD1DCA940FA6F865DF517AC10477647 +:10D9C000337C7B297B0EEADB19641F203F6F8F7548 +:10D9D000FE0BE1EC796A7234C79129667A4B40EE0E +:10D9E00094CAE5090BE87CC419F95C6AF2A4CAF68A +:10D9F00017B36CA0B8B583F735141700FF9E367CBB +:10DA0000CFD929D9D7C3C0F3EAECDC7D9CECF7C1B0 +:10DA1000ECD0C1E450A89CD0F00DC5737BACEB1DDD +:10DA20003AEF9A1C095DAF160FAE033FF3E3FA51CC +:10DA30009B5DB4AE472545DC2343AB7324EEEB8AF4 +:10DA4000CE4780DECF93457E6B5F99F07B42CFF16E +:10DA500047EA3ED4AA72212F16AC09B49F6E6039F2 +:10DA6000D95B96C5FEC67FA4C7A8796A7DE99541B2 +:10DA7000F9939AFDD2A37E3732BB33CC43F1656D67 +:10DA8000FCCFD3A385FF66BDAC93772B1ABFD6C955 +:10DA9000A915D922EE97D7AC8CA3FCB055EABDDD11 +:10DAA0009524D705DAF765EDCFBCB65FA1F936FE50 +:10DAB000E404EDF35E9B90BFFB873236BD923EDF00 +:10DAC00067B6F582AAE737E9CEC5E18A63ECCFCE27 +:10DAD000EE88F010FE1A5D9A1FACC9E5BA5D9F9CF6 +:10DAE00022FDDC235D38F538E1B7C3C276582DD16D +:10DAF0001DCBFEB33903F7E995BD06C6B7AECCB270 +:10DB000099FC19302A632A2303B8F47E72ED3C2471 +:10DB10008D3E6D3E8DAE1E49C423B47EB11942FFC9 +:10DB2000B8D245FEE06153F7E7B42FE75FBB4DA2E3 +:10DB30000062FFF3E8EE9C685B605FFEB3ECA179E6 +:10DB400020ECE2E386D58F9A11AF9EF63613C78795 +:10DB5000BFA71DA4D1DB1C095E1A0F9CA0D8E33916 +:10DB60003427F20D7191C678F2CF445DB2EDF99A87 +:10DB7000E4D514B5646711DB27AB64AF931A389F03 +:10DB8000CF0AAD5CAE971C0A95774A2EA34842F5A2 +:10DB9000325ED3A061143DBFC3EA48301AE8BE50DC +:10DBA000C407E744B7CCE06D8C8775746F61347B34 +:10DBB0004CF124FF2A87A8F99602272DFFB1067F92 +:10DBC00027232EC668508CD8BF06ED7313E25BB5D1 +:10DBD00074EECFB2A9BF7D32E3A8E54FD27B84E3D8 +:10DBE0003DFB1B2AC8AEB977F73F1D74E2F34F62C5 +:10DBF0005AC7133D9F766FCE7909FB2C3BDCC5DFFE +:10DC000031D5FABAA711BC2BA08FF58E86FF7CE820 +:10DC1000E6F201E8E3D20D766E5F080E2E17838BD5 +:10DC2000CB25D0C0E5FB153FAFDB447271668BE9B5 +:10DC3000320470581EBD663CCD632F7E6E34CB1B04 +:10DC4000F59E49BB0F09BDAF98156DE37B0DEDDE69 +:10DC50004231B8976688FB29718F792AD2DBCCF7DD +:10DC600018CEFB09EFDE6833D07792BD43853CF1D7 +:10DC70009C078EB3F69AD4FE1714AEE797E489FC9E +:10DC8000D42B0ADB6193D4FB444DDEE6DF26F28E13 +:10DC9000E1AAE83FA54F9F77964FC1497AFF1B85C0 +:10DCA000EF21EEFCCA784379FC4586907BF9B1867A +:10DCB00086E0F8457342BC88FFA9758B62E778C699 +:10DCC000AFD473D81B65603EC19F2AEB78A253EC9A +:10DCD000EBA4AE3FABFC888E657CE03BBF4946DFE2 +:10DCE0006E7ABE4295F7288D595F4D26FE247EEC54 +:10DCF000D4CB7F48B88DF3006E5749D0FC5509C787 +:10DD00009A1F43FCDC2D33DF421F974EB0B35E2FCA +:10DD100006079753C1C525F23797D3A195CB1F416D +:10DD20003B97E5D0CD25DCEA70D045B4C1EA93C578 +:10DD3000F97DC2CEDF3F962D35503C3AFF5E911FF4 +:10DD40003A182E3E15C7C171C1833CFE6670710B37 +:10DD5000FA42711995C9E748C345C3230CBC09842D +:10DD6000E314F0CB54DE09C2CE29C2E3C8714E7071 +:10DD700072BD74503C7CCD746F5EE8771B399E1188 +:10DD80008A4789E0935079B64F5DFF43446B414029 +:10DD9000FEF464285CD7E4109E37BE070E954FDA78 +:10DDA000F3FC88E24B0A8AF20F333E9D4DF1F0FC02 +:10DDB00071C5AB28C5E9AFFF7C41D42715BF9A8256 +:10DDC000F5B31997381E9E9F5B3CCEE400582D5D3D +:10DDD0009E3D15DB9F322316ECEF25AFA678A2E51A +:10DDE0007160796FB588E772AAF007B19F272C2F71 +:10DDF000409FC522ECB7ECF9CA2A09717E3AC97D69 +:10DE00009ACEB3361E280E96AF2355BBA527C3AEB8 +:10DE1000E605278F23BAFF9AE4EA213DD81B29EEB5 +:10DE20003B7B28F76DE8F5CBB84CE7A7D43FF479F6 +:10DE3000EF5FCDFC7DFADF32DC7D347F7DC4B7E956 +:10DE4000A47F3F1F7B789D3F39C01F1282341FE99A +:10DE50006D76AAFA42CB9B27FB88ECDB87CC9CCC67 +:10DE600092EF723793889930BF8FE51B8EFB0DCDF3 +:10DE70005B6FF6278DC5F79E9D7DCA2CF67994D8E9 +:10DE800067552EECDCB5EFF191A2EA82203EAEDFC1 +:10DE9000F5F5971F20AEF5176D0EEADE1B25D63B74 +:10DEA000A9EB17AB480EA2E3A83BB71ADFDFDE6988 +:10DEB000E1EF872675653D44FDA61C3E994AEBBA05 +:10DEC000F3A4BF99C249BD3B8F8D147468F74157C5 +:10DED000A4EFA33FCFAA72FAAC55C8652DDF63E566 +:10DEE0004E89EF4756AAF95F2B29AF17DFAADB6BE4 +:10DEF000E27B7D2D6FB3465DE779F55EA166E32297 +:10DF000091EFEB1576AD82FFE81C4E386E0C89BFA1 +:10DF10008AEF65EBDA43E2AF1B4BAEF9FD75685E45 +:10DF2000C8984C352F241112793D6ADEE4F5D6AF3E +:10DF3000E5812C01677E26FBAB2E99F8B0C028E264 +:10DF400085A5F2130E3BAD33313B4FE4A58A3CDE91 +:10DF5000A561627D3635FF77E50B32D8181F33E7B0 +:10DF6000CB6C421E2924BB77DBAF99DF97AA6BD11C +:10DF7000CECDC32D12DFEFC1C658E6B5DCAD1627F6 +:10DF8000AD2F77EB3027E1946B16F6EFA6AD961622 +:10DF9000AA37AF0DF7903CFC5D74DF08FA5EBA3922 +:10DFA0004CE467919AA27BB6DC94BE14D2B38B3357 +:10DFB000855E6956F5AD76CFA8DD4737AB7A7665D5 +:10DFC00064FA308A93F7F7B38FD07D4FDCACDABFB9 +:10DFD000F94427D9737D23C43861621DBBDFBD2797 +:10DFE00082ECD11D465704E56F5D3C9232046E70A1 +:10DFF0008F57E0C3CDB8411C21FFC806FE4E27FF56 +:10E0000039A3C045E5C3D79B9CF0912980BBB68E50 +:10E0100052797B8999EEEB1603E73DAEDCF79B6600 +:10E020002BD6573ECD5F0420A9994348AF14EC95F9 +:10E03000F9FB99DBF78ABCA5D7D53C4A4B82019402 +:10E0400020FE0A53C24109E2A388CC185D3DD231BB +:10E0500042D77F48618AAEBD43CD5FD1F28E35FB9A +:10E0600032DA79ABEEBD29DD228F2A767A9EEE393F +:10E070005C16E7A010FF093FB241A6F336C90FF0C6 +:10E080007C327DFFD30A5158DEDEA33F2FB87F9C40 +:10E090000F6351F3A6C28E1875DF995B6CD338BF3E +:10E0A000DA32483ED5B399EAFF57300A46E9BE2F27 +:10E0B000EFC75B9F5F351ED2FED7E47CC2D7045EFC +:10E0C0006CBF486F50FB28F07A82F0D6CED7EBD0E9 +:10E0D000CEFA74A84B8FFBB06A3DEEC3DD7ADC4705 +:10E0E000D6E8714F6CD0E37E4BA31EDF648F1ED742 +:10E0F000D496DB75FD47B716EBEA19CFFD48D73F3D +:10E10000CB5BA9ABDFB66D9EAEFF98F685BAF6DCA9 +:10E11000CE6537C507637D2B75FD343E18B7F7A76D +:10E12000D7E4030FFE63F9A87E3F5188B8531C74EF +:10E13000B0FD2FF4B702C9BBEFCB07EF85F2C14D9D +:10E14000CACF3F92DE45B93363AFC8FB9A61B37261 +:10E150005E18F24D26D90F1721DC417A43D3FF2EEA +:10E1600055CECCB419596FCC88107248CBC70AF57C +:10E17000DB34FF6166A1141287D3E7850F76AF50B9 +:10E18000D0EDD3D5C71E0199F466C15F94E6489CD3 +:10E1900067DC49714F11EA27E6FBDDCDA4DE26F4EA +:10E1A000A09A56C86FDCFB35C571A6A8A576AF113D +:10E1B000EADF40F616FE8ED06CD7D621E46FA89F1A +:10E1C000F9982CEC8F2B0637DB9F16927F72C01EBE +:10E1D0006D2E12FEA6E6671E4C744764515CDED0BD +:10E1E000170B6C77FBC5BD19B403DD2BF512706CF2 +:10E1F0003CFC7D15DD7FF54603E7BFFC566AA9A20E +:10E20000FF870065A3DD3F5E8465E82725CB3D944D +:10E21000C63B2309FF6F41E147BF7A15E91D96050B +:10E22000E21E7E7E3BC77FB6C73A13B2860E9EB70C +:10E23000A1C5BBB4F85747938FCB886C07FB07A1E8 +:10E240007128BF41C4153C3F15DF957C46444D0CF9 +:10E25000D81D175B4C6C7780EA2FDFAFEE8B16571B +:10E2600098AFAEE30C0E5183FAF5FECE3FF1BE2C13 +:10E270004FE851E3110D0E4A8D5C34CAC6F917E020 +:10E280001CE71071272DCE3052FE2E76D260EB5F48 +:10E290009EF0892E3E85C0DD545E6660DD62FC33F3 +:10E2A00065C22E38533692F31B03E37FCEF1AEFBEB +:10E2B0001BDED5F1FB838DEFEBF87B81E7B4AEDDA0 +:10E2C0001FD767A2789E7F7AD654B22B70DFAB68D7 +:10E2D0003FFDAF0D9F761FE2797E8765FCCDE45749 +:10E2E0002F4FF88CE73FD9D4CDFBAAADEF54D371B3 +:10E2F000AEFB9BFC5C86AE4F8B0768A5F94D60F9C1 +:10E30000A0E5535E2F4EA09D9BDE2C71AFFF98ECD5 +:10E310003CA5E605B2FF7865A589FDC7936A1EEBAB +:10E3200049358FF5A49AC77A52CD5B3DA9E6ADF683 +:10E330009A6C2D1447382989B8FD7B23BEDC6AA668 +:10E340007869A2FB2759E47F14F77D6920F917E764 +:10E350004FA2F3F474BCFBEFE8B984EEC070CED0EA +:10E36000F2A4939D78CEE0C9A13CA48EAC1355E4F1 +:10E37000579D0BF77C4E16C8F6DFBE57457ED53944 +:10E38000B338875DBFFD4315E519BD878352FEA8ED +:10E39000E77549E487D9FC66BA1F6A1FEA5E4BE35A +:10E3A000531E157F0F88CF893FB53864AF49D87B9E +:10E3B000BDAADDB7214BD89D3FCB12F72C5AB955DA +:10E3C0003DAF5D54F23DCF8674FE8EBEDCC279D97E +:10E3D00038BF93F24C3CBB2C1CD708CD3FCAFB8303 +:10E3E000C52705C5317F9D952CFCAC54F13D7CDCE7 +:10E3F000DD611C8F017F7712E550F5D37B44E46724 +:10E400009EA7F82E9DD3C5A0CB7FFA7596B04BEB97 +:10E41000F69D3945FE534996FB375941F9427551EE +:10E42000BB39AEB4234BE1F9904E8EF75B64584391 +:10E43000FB5367F5F3F73183C5A7AFB7EEF30F755D +:10E44000FF3C3B99F29794D1F4BE362FD2B1837042 +:10E45000D7D6ABD11118E7C6E7408BBB6AF5C31519 +:10E460004FA5D3F9C9A33CB06BE8CD3F6709FFFEC8 +:10E47000A40942F2C454DC40CB13CB6639F571D603 +:10E48000B5F3C48E134E485F1EEA5D8AAF5BC2517E +:10E4900057E405C6C5FE6EBA2799DF90FCEA7EC434 +:10E4A00061D99631FC9D80468736EE9524E7A1AC74 +:10E4B000A07836F29BF87F39CAC2983FEA76BD7FD2 +:10E4C0008AFEDF8487FF79CC38C2577B2F145FC464 +:10E4D0003591F03C64F099D53CB57FCFE278F621D8 +:10E4E000CE03D3F0FDBE78F62676B31FD9BBE9EB99 +:10E4F00024BAF7A953EF99EAB47B8F0E7D7C07F11C +:10E50000F050BC61E07D07F0BD8945D51F16EDFDDB +:10E510005146DDFB6BA35C5F122EAFA97202FB7B41 +:10E520000D6A3C99F44D7F3C59D54705AA28928E37 +:10E530008B38720195A4E7B387B07ECAD7E643BA99 +:10E5400068FFD6491E8ED7F4EB7735AE2C2F5AC50F +:10E5500071B84268E5D22227B35EB47C20E22FFD79 +:10E5600071A4A7F7E8FCFAFF075995384950500005 +:10E5700000000000000000001F8B080000000000E9 +:10E58000000BFB51CFC0F003099773A3F2EFA0F18A +:10E5900067B2A3F265B950F97CACA8FC6C34FD8479 +:10E5A000F05F4ED2D4C7333330A403713E1097339B +:10E5B000E3577B9B89B0794532105A14487B02712E +:10E5C00031106F116660D826CAC0C021C2C0705415 +:10E5D0009834F711C2AB04A96BDE28260D2B29A2B3 +:10E5E000F2757580694A978161A51E842F89247F01 +:10E5F0000028A6A70361A7AB3130D801F9028AD859 +:10E60000CDCD00CADB03E52F42CD0100A5A0BBB0F4 +:10E6100068030000000000001F8B080000000000DD +:10E62000000BDD7D097854559AE8B9B7EEAD2D554C +:10E6300095CA4A0542B809010206A884244440BB91 +:10E64000128246C5B6585444844AA45D4123D2631D +:10E65000EC8E2F15520901C10E8C7683B21488807E +:10E660008E3A515169BFB6A7586C23D2765454B430 +:10E67000B53BA0A38EADBE48BBBD196DDEFFFFE765 +:10E68000DCAA7B8B2C38DB9BEFC5AFFB70EED9FF90 +:10E69000FDFFCF5236790AF38E62EC34FEFD88B16D +:10E6A0008B25C658792265AC53A49A35E836E67BAB +:10E6B000A5E0444CC38C6525A5D98C5918FFB364DB +:10E6C000B67F619984A9336CF160AA7CD86BE76549 +:10E6D000A759A29D9AC7425DC58CB5E2A71CD13847 +:10E6E0009331C5E77F706D3E63B9CC4AF5944C3BDE +:10E6F000F5A3781B5808EA6749A15C1A7736535886 +:10E700000563D4B586FF1760385F35BB2815EB313C +:10E71000573A63E726D6A9A7DB9A599BA21AF22A91 +:10E720005B80F3602C4AEB547FC6A219307FF6DD84 +:10E730003C6DEEC481FBD1537D3DAD23FDC74365E8 +:10E7400090CBB1FA1F82AF6DF17505D83C98570593 +:10E75000AEA71CD7670D237C6CDE106305B49E0A40 +:10E7600082EF00EB69758FE5EBC9EC7F1EAD623D72 +:10E77000FAFCE3DFF5750DD02E79FE0395474606CA +:10E780007C758097B09BAFCB2299F1A522BEE0DBD0 +:10E790001C812FD565257CC1BAE6F4872785350411 +:10E7A000A47CC3BA5C99343FC56B27B8E8E32A76EA +:10E7B0006B9B322531BFC5CCCBF1131FDFCF901E31 +:10E7C0002D5E46ED66B2D0622C07FAEB21FA730596 +:10E7D000885EAC3E289F8C69604118E01939702E24 +:10E7E0002BC6762E3F5B06A9D51562B3A15EE47BEE +:10E7F0008B805719F5AFCFE32A269BE0A3CF672C78 +:10E80000CEA31FB8EE19A9D393999EF76CBDC0771C +:10E810002D7CBF43D041325CF4F600B73B884E04F8 +:10E82000BDEB74B067AB80D7A64CD3FCF474ACDD01 +:10E8300022E065A683DD9B2B34DE0F74942D400708 +:10E84000E3A588F9DF9BC5085F9B33F71FC44F130F +:10E850007C510DE9F2BECCCA8312D4BBCB195A83CA +:10E86000EBB5FA3439E482F64BBD94EA7C33CBB293 +:10E87000CC7112D25F2E2848AD87EF8F33C934BEDA +:10E880009E6E6A86358D616C75B39DD26FDE1B47B7 +:10E89000EB1988EEDA9ABD11239FB68594DA28F435 +:10E8A000EFAB8BE45C877497A3955A904F7C1287EB +:10E8B000A3C4411EC5F1B3088E512EB7845CC8E4D1 +:10E8C000F03C27D019F0423A8175066440F5B04714 +:10E8D000993F26D0A518E093335F0EDB3CB4FE874A +:10E8E000B19FD185D183C866058BBCD5562DB1FEAD +:10E8F0005F2E9009CF2BAE19BB1379439FEFA7482A +:10E9000037387E31C71753FC3E9CC740FCB719E02F +:10E91000534C7CDC457276C4521645BC6CC4EF0087 +:10E92000AF1B59F0D7586FC4B20682FF6E49A733A8 +:10E930001F0A1716116BD87C9D93E613C9F1EEC020 +:10E94000F9BC20E89705004ED9FDD2DB0BFDD1DBE9 +:10E9500088A59D6105EA3D25875E22BE9A1D48E394 +:10E96000F22A16B3023DAFC5F15D34FD1E1C7FB81F +:10E9700080BF4EF7197E6D27D2FD3B821E8607DBD6 +:10E980006F93613DAE772FFA1706694E5009DB8011 +:10E990004F87F7D6CD6690E6FABB5AAC8CBE9F4047 +:10E9A000B8BB5DD12A8473C67CC843F98372E81D65 +:10E9B000EC27BD30C666217E80FF6DD0FFAFD44E00 +:10E9C000E685793866C4024198FFA6BA0A5667A060 +:10E9D000ABBF88F55B0A59205A9CC0F366A1B0EE24 +:10E9E0009BBFD1717D31D673D23CCF6165823E80B1 +:10E9F0002C803E1C823E800E3EC17EF297FA0F6252 +:10EA0000BB09855AB5AC11DD0F43B8FD4A6DC8C1CD +:10EA100079FCAACEBA80C609B36308EF0C59C0448A +:10EA200083FF004E0E99C3FF29A6D2BC9C791C5EC1 +:10EA3000D92E16D5603D44D348977E160D00E83296 +:10EA400092E09621E065F1771D40FC0C2FECACCAFA +:10EA5000D7083E7F23F82CE889211965B018936107 +:10EA60008D6D4AC39FEF82FEDBBA2DFEB066A047D4 +:10EA700006F4383101276B26F05B119FAA514FEB4A +:10EA8000F587D21F3ADD282EAEDF743D0174EB9579 +:10EA9000387D11DDEAF27EA8FED4468BF6410622CF +:10EAA000CB2B231C1D760EB7B6C2B96184CF57D8C5 +:10EAB00017C2ABB384F0043024FD847FC8D76A61E9 +:10EAC000208AF447F2B022619FD83499C50CF688A9 +:10EAD000E2739AF26C4158C2F17E2ABEA98D569A11 +:10EAE00087C3C5F104FA86448CE2623187076B580C +:10EAF000590CE086CB3D3D1AF33FA7F1F4F61D5AC1 +:10EB000029C37527AF53C17650474299917F66BBA1 +:10EB100081E19334DE7CF37CCFBA9D4BD13ED4DBD4 +:10EB2000140CD64E611FEA740140ACC50E0CF65FA2 +:10EB3000BBCAF64BA9A0CF7D7F1746FCB4338EF736 +:10EB40003522659A6C923B169F4CFC9C2569BC9FB4 +:10EB5000426E9F58D90531B27B0ACFCE5EC917F4F9 +:10EB600095C6828BA42CB2FB861BE1AC5AB97DC939 +:10EB700022F3A9DECE357F1793506FFCCC5B423C6D +:10EB800026E86A6712DC185B4572607B7394BDAF40 +:10EB900026F4C6A8A620E131AFB14FC2BC2DB757AD +:10EBA000C2BC5E1EA7D708A7EFB68EB9A90CCBEDE5 +:10EBB0009A8C72A1A0337F95DD44A741361FF8657A +:10EBC00014C827C4CBDD909E9604BDC2F8B6463368 +:10EBD0005DEA74A8F73F243F8603070A617D970A20 +:10EBE000BABF14E506D26B99FA41AF8ECF02C26F5D +:10EBF000220FF8FDEC4E0BC99F7089147D483AB383 +:10EC00007C36CAA14964BE7C10B7EB817EB74952FD +:10EC10005C0E205C678BB2434FBF35760A4CF9150A +:10EC2000BF85D910BA4FBFB86E0AF4FF877321AF02 +:10EC300089F9627D411F7FC867811A2C2F97A261D5 +:10EC4000E877F68CD5E44F5C5A6921BA998DF33791 +:10EC5000C0E5F3FD7F5510FEB7CE307F7F244EA771 +:10EC600035C457FA7C96975AA8FF57CA24E2E3C3E3 +:10EC7000EF7D74CF7498DFD119921FE7F78AFF7D7B +:10EC800017E24D1F2F0E2F8D79115EC9E3C4E16D80 +:10EC9000F72F40F97083D7AAA1DCB9D9E2EFD610DB +:10ECA000DFC364FF431A7E1F5B83F0D7E5E2EB52BC +:10ECB0000EF71B5CB23F86EDDEB054225D0E84D7AA +:10ECC0001B14C6BCA590B2753D6817B0A8DAD76B07 +:10ECD000E0DFC6775B22870DF2FB9F2477E687E7AC +:10ECE000C03FA6B2A988B753AEB9A9313670FF9F0D +:10ECF00034DB5BD0DEFAA6391C39AC9E597EB38575 +:10ED000035203FDDCCD807B6745C6FD87A15E88F14 +:10ED100077243B5FBF90EBFA3A6FDEEB68510C70E3 +:10ED2000BAC125935E4F9E771C7EA23DF41FC3FEA1 +:10ED300093DB0FD84E31DBD160CFFC19F58D2DB3AD +:10ED40003E3C1C3EDDFC681533FA19386FD47BFA63 +:10ED50003803CE37F3ECE63B141F9E72AD6A47BB17 +:10ED6000A955E5F410C992FDABD899F4A0C3BFD55D +:10ED7000B52ABB3F7DA1C31FE840F322FCC181211E +:10ED8000BA79B3B512759B4F76F4EBC70D45278A58 +:10ED9000FCDF4327A3E4FF7174522867FDCFA11362 +:10EDA0005B9364ED05BC3732F6BB6199F859625C40 +:10EDB0004FDCCE8CFA1DEB7B611D4B446E89C2EC9F +:10EDC000952017E4306F1F02C302F5CD92B08DF489 +:10EDD0004A1C2E629C03BD0FDE5701FDBF1BB6F817 +:10EDE00049FEFAAB490F2E11F6D5BB4D16B273DEB4 +:10EDF0006D04F90872AC97C5DC53511F1CB3901C0D +:10EE0000EB0DBFEF263B0E5421C2E77241BF279A9C +:10EE10001150200FC0BFC314A09D87F19377D4E891 +:10EE20003560AAC35F79D5317055DE01326500F0D7 +:10EE30008E55352DE1628C2A417E1A9831AB6AAA33 +:10EE4000C2D4EFBAF60B0DEBAB6F9202E8F781BAC2 +:10EE5000243BA243E2F3ACC77FC03C6DE05F230FCD +:10EE60002D96B95F9D250517CB06BF8F150220CFC4 +:10EE7000C2AEFA33CE7F5C223F450EDD80F451DF17 +:10EE80009466457D50DFF1858AEB5E237B053D4529 +:10EE90004762FFBDBA1FC4A223E718C773F079AE5B +:10EEA00091A57EF93279BCBAA62F5E1886FA6299CE +:10EEB000E41F83DDD9A323171BECF30E7402605DFE +:10EEC000E13A3E5E384722FF4F2FBF4BE67ED61A0F +:10EED00059F87BFFFE75AF46F89DB96EA6C701DDF8 +:10EEE00088F7771BE6A5723A08917ED5E9E7A51366 +:10EEF0002FAA48876C7E16D17D7DC462B263AEBEF8 +:10EF000021C5945FD4346FD038006BB425EA1BF967 +:10EF10008A65123DA40B3AC902079791FDCDE31C07 +:10EF20001982CFB3BD0D12CA5F5F65E701EE0344DE +:10EF3000B93F1AE8AA0295CA36BA17BE1DD2A84030 +:10EF4000532A30EE087FE4B32961C1CFD2691BFA9E +:10EF5000A72CE0403F15BFEB7C05FC317C9962B2E9 +:10EF60000732961AEC25F89FBBD65C6E31DA53F95E +:10EF700089F5E8EB758BB80C78AB1AC2799D143B18 +:10EF80008EFCB3CEBEA86A36F099A397310FD07D20 +:10EF90007A508946B16E19F7CF2CB86EA09F8C229B +:10EFA0006B3406DF5DE057F6A03C537AECAC18FDFD +:10EFB00077EECFEBEBC7F819E22D43CC6DFDECB942 +:10EFC00069886FBD3FA867F20F93E595E2E77E9EE3 +:10EFD000E2EFE8E129F7DB0D71CD57917F589939C0 +:10EFE000EE10E7CBB2B3F42BCFB61E63454A19C679 +:10EFF000D79C7E8C47A65AFDC743D0B4B1D8EA5FF0 +:10F0000005E3AA331AC288FFABA4D0FB38AFD4F310 +:10F010001B4721FD4AE7378EEB05F878C671BDB571 +:10F0200060FA0CF621A43E973FFC21DAEF160BC1E3 +:10F03000CB123B9769306F4BDFE240D085F09EC327 +:10F04000537B9052B785C77BFE26F84FB5087B38B7 +:10F05000C0FD7EDDFFBCCB19FA2B8E3F3AA05523B5 +:10F06000FD595C7A3CAD77F3F52867DD7692B3B352 +:10F070002CC5A9270D76C077B239AED626E2697ABB +:10F080005EB57B221F4CC179F038E9DDEEFD3ED242 +:10F09000678501537CBE99852C16D4378150808FAB +:10F0A000CFFD9A44BB677CE4D7A01D0FFCE499BE5A +:10F0B000C88EFD2833F4387C88EA037EDDD80F5BE8 +:10F0C00060D6ABB6CC00E19F61082C1BFD3AFE7701 +:10F0D000F7C4EBECFDF1F96639946531ACCBEAF39A +:10F0E000F3F9B02DDE0F5388150B4F6718F02CE2A3 +:10F0F0004DF595A263A65DF947C0F38DDD2A5B8BC4 +:10F10000D9EFC08AA9C0F9F3BF93EF73BFE74611E7 +:10F110003F59CA821E04C6674CAE4539FA198E00A3 +:10F1200070FFCC55F1600BF1232C05E61D117AE63A +:10F130005C8B88DBBBDAC9EE5612FC2F717F8DC762 +:10F14000A1C19F26791166F61692531DDC4F08C3A4 +:10F150007F98FF49A7D96FB87E93397F1D9B9B8D00 +:10F16000F47BDDBD2A43BEBE31494EE45BB8DEB957 +:10F170009E35B4A37E5FAD723D50EF654A0608C16F +:10F18000E5CF6EADC0B85740D0E127401F9A2D01A2 +:10F19000D79B32A3D64071627D8AC057ABE4FFF1A2 +:10F1A0007469E0F5AD567B7E8CFE5178BD4A74C91A +:10F1B000849CA4F63094B2CF4272D1D08EE67B6D9F +:10F1C00087797D43AD3F79BD209969BD37EDAD238A +:10F1D0007A18683DD6BD12C5F592E9EA4A8B24E457 +:10F1E0001CA79B6F1C9E492C15E4819DA777383D79 +:10F1F0003B31FDC6911745BA6846E70BF56B35E321 +:10F20000FEEF9FDCD156C26FC364C4EF50ED5BFFCD +:10F2100083ED5763FBAC7F7FFBBB8768DF91190EE3 +:10F22000223FEB71179B3D10E0D0E6FCDCE11BA216 +:10F230003C17CA2D8394170EDE1EF8F2F469A09BCA +:10F240003AFC447A3A9C8BF33A29ECC66E3578192D +:10F25000DA73DD6F58D0F465DD69DE761FAEA34D3D +:10F26000D2D00EAE5B372715E33775C72C9972BE27 +:10F27000606EAC9F7FD12EF4B7375A546197F52A50 +:10F28000A85FEA2AF32F08B8B0DF706E1AD047EDF6 +:10F29000FFE2F1A0AACA96A5D8EEC7DA552AC68F12 +:10F2A0005F7CB47511E66FD22E546C30EE56D1CF20 +:10F2B000678F3C51C1607EDD8FB9598CF468D48A68 +:10F2C0007AF426A077A4B79BFFD14DFAF6A627972C +:10F2D0003F381BFA919E75D37C6A9FBC7EB78DE642 +:10F2E000D7CAE9F79979A91BC5BAEC009AEE1611AD +:10F2F000B70F8773715F70B98D2D41FDA1C341A711 +:10F30000DFFA8E92DFF9705E7BD34A5176C7E95EF1 +:10F3100081FAD0BE0ED2B9FDD0FD41C1FF9FE6DB20 +:10F32000280E2DED3DB098D6D775A58AEB932269AE +:10F33000D67F86F19EC575F27AB48EF0C352740CF6 +:10F34000947FFAB0C4D7D5357187231FC7DF61AD6D +:10F35000A77DE016AAAFCFB77E6F49FB70A857BF55 +:10F360002EAD00E3E033FFF1310FDA7DB7EEB5C427 +:10F37000306E0229C54FAEEDB024F9210197047417 +:10F38000708B903FB7EC5B4EF2F996AEBBBF40F985 +:10F3900073EB7EF5A4512E009CC9CFBDF92D8B1FB8 +:10F3A0006344373FB5C7837AF8939E873C880F182C +:10F3B000A7CE0A7C50765431B5C3FEBF4D3FB33F54 +:10F3C000C6FAC8AFBBB56B0D1F6FDFA51F613CEB65 +:10F3D0005606ED0DF2E713FC47CE99FEF22716F024 +:10F3E00097412FE9FEF257EC6805E9BBBD19FDFA1C +:10F3F00079BA9FACCBA1CFF7FF755B18C6FFF4C9F4 +:10F40000BF6CC3FDC8EEEFFFBAEDE708FFE71D5E76 +:10F41000A4F35B1FF9E76D3F437DB4DF2623BD7C7A +:10F42000FEFC9EDDF743FEF3B7C795226B290AB7B2 +:10F430002B3ECFFF261BE1B0F2F959C3100E2B9FD4 +:10F440009E398CF51337D0D3CF81BEA206FAD2ED08 +:10F45000406D3FF4370CB2BF1169127E0EEDB3C49C +:10F46000D085FDECB82D8A747D2B7C6B047FF396E0 +:10F4700086EB691F02F34D00E75B1EE571BA33E1CD +:10F480001D1E21FB308D8DC0ADAA5BF6CDBBECBC43 +:10F49000324C55BF86EB657DA4CF92DBDD7A0CF054 +:10F4A0003A79603C7EC5BEB322DC6F65EBF8B80DDF +:10F4B000177E8474948CC7CFF01FE79E89C7D18ACA +:10F4C00039EEF1155BB6FD7E2CDC97D1AFBDA9E31B +:10F4D00071F9D397A7F6179F31C239761670BE41DE +:10F4E000D8F97D96C01405F9F0C97FD87D7F26E252 +:10F4F000D9E69F8D787FECAB3C3082D8C76ADF625B +:10F50000E4C7BEE76DDE9DD0E6A6E7DF22BDF7F9D2 +:10F51000D3AF5A353A8FC15C12E8F3CF59FCAF072D +:10F52000F5FB2D623FEED65DEE18DAE53ABE6E8948 +:10F53000CEA9D53CF49DECF55BA29C0F6E891E987C +:10F540002FF583BF654A0197ABD12C82CB72AD8773 +:10F55000E20B46BC4A9588CF131720FD0D844F7DE2 +:10F56000FD5E5CFF54035E7771FE1D884F3FDF61D7 +:10F5700053707F2119CF9F0BFBE7D6A8F4567F78F5 +:10F58000D7E3F8CCB268507C25D3C5758A99BFF50E +:10F59000F6FAFA87E2EFA1D7F5C3E076393A6DE5DE +:10F5A00067C2AF651697DBAFE4035FC2A75755ED9F +:10F5B00057B7239DBCA4B29DD0E4C7051F295A3F6D +:10F5C000FEDB1FD08E32F8FB97554A6D19D0EEB294 +:10F5D000401ADF4F4F3A3F109C61619A613EA76A23 +:10F5E00057E622DF1DF231DABF3D9CC3A288971790 +:10F5F00072961DC6EFEBA07F06FDB73783BD0A7C70 +:10F60000D0D1ECA3347E6E23308AE24D2BBC8CFB30 +:10F61000837B1F79E411C85F8C0380EA3A042AD403 +:10F6200018D7784DCCF778B39DECBF79454F28A813 +:10F63000D7A5E22714D43797D43EA1E0B983C3F10C +:10F64000384C58CD063EBAB828AD742DF4FF82D898 +:10F6500027BF78E90EA5DED0EF25A29F4B8A77E47D +:10F66000A23C3E22CE7F24C3AB57C8DB96F17B720F +:10F6700071BC23237F954B7E320BD23AF244DCE3FC +:10F68000F0983D5B56001CBB8B248AAB7537AE727D +:10F69000A15CEED6E699E8EFC0F88F24EC27CFB74F +:10F6A0004341F9BD53C45F7689B8D96E801BE6F734 +:10F6B00002DC307DA459A3F4D1E6222A7FBCD94FC5 +:10F6C000F9AEE64ACA3FD91CA0FCBEE65ACA3FD3EF +:10F6D0001CA4FCFEE60594FEA6F906FAEE59BB371B +:10F6E000928EF1A5095217C6977EDBDC40E5B1E6A4 +:10F6F000462A8F2ADC6EC8EB00FF00E46E6323DF2E +:10F700002FDFA90617040DF3D7EB1D53B87D6DF756 +:10F71000847E8FF2EB54EDFC72C47FDB982B2722A2 +:10F720001EBBB5BF0FA1DDF155A19D62DCE4120245 +:10F730005FBC34662A9D47B92F2D744C31C43D0AF5 +:10F740003AAC2C3605F1183D8C4770C29782DD0724 +:10F7500070BC38B4239209FD2CA8CDD764C267577A +:10F76000241DFD9189A27CE906B5BA78683CEE516A +:10F77000B85FFE6255432EF2D98B128F9FCDABB589 +:10F78000B02203FF5F1532E7378A76E917158A73CF +:10F7900058FDC773DD7EA867B273381FD97CE9C2F4 +:10F7A00039E6DF1DDA70533D8BF7D0F9E8B70F2447 +:10F7B0009F2C9E5A1E97F62A1FA27C031848A7E585 +:10F7C00084BCA18815D0E142A6FF0528BF249E076E +:10F7D000CF4CB7BB015E57078EA968C72F06D74924 +:10F7E000053BBC9EF9AD688F835F4CE975AC8152D7 +:10F7F0005B6E4CE5F1BD1A2FEEFF4A81E996D329E5 +:10F8000083C561CCFBC4FAFCD22F52282EB34272BE +:10F81000FA910E5A73D83EF45B5A05BFEAEDD56FE4 +:10F82000CF61DA143C0353608A87A999C10528E7A0 +:10F83000EEE895346CDFA18472D572BE30C5E0E786 +:10F84000AB99DCCFB84B0A69587ECFB44F8E5BD0F2 +:10F850008E7ADAA159401F7C5E76CA8AF4433E1143 +:10F86000D2CF9DCEE843F998EFADE3C19118C5C35F +:10F870006C024E785E67CE44F4635C14F760B9CADC +:10F88000A7C67DD37A2FF7C75BDD1FE6E0B83FC27E +:10F8900089F079B1DC6C8A8AD25F9DD2AB223C9729 +:10F8A000B01E4A17B12E4A036AA80CE7B9903590EA +:10F8B0003FB42AC5733EE2F9BF6A7EF17315420E6A +:10F8C000433F01A47FDF347BC8E83F5FA072FE9E08 +:10F8D0002F52E0EBE5C8CF03E15D97F7BA9C1F9E7E +:10F8E0001AFCB16AE0173D1DA87D32DFE8F3D1CFE5 +:10F8F000E1A55FB4F2C591008F9D9DFCBCD7CCFA09 +:10F900000E5B1E146D5FA795122C985D46B8E43906 +:10F91000747AE77E4A23E37064EF4A0447164EE1A7 +:10F92000F23A5E2F3811ED8B6D4DA71C28A74F358D +:10F9300015BC3A8E0DBDCE64BDF6AB519336E07E5C +:10F94000F2A86EBE9FB261D4DF0ED8209FD7CBF550 +:10F95000409EAB611CFA6B557FFA971C8C330E4F9F +:10F960000DDDAE1AF4EBB6BB1A46E1F8FFAA045659 +:10F97000AA04EF95369AA290338DEBB40D45DAC008 +:10F98000F0DAD95130287C93E71D971B03C8B104E6 +:10F990003FF37AE067327B29C98F9806A2AC3725FE +:10F9A000F5991E28BDA631A6225D001DAF477C5FDC +:10F9B000CDA22AF7EBBDD908D77AAF46EDB7657F60 +:10F9C0009843C25FE9CD0FFE90F3B48CF56B6FAD39 +:10F9D00016F6014C87E27C79224E27A77C9A83FA9F +:10F9E0007D876A8E93C6FB6D04FE30EC2380CD4488 +:10F9F000F6138C45E71CEA7060985A9DDC2B21BFFA +:10FA0000D578E7D4A401881637E50BBB88D3D3E2B9 +:10FA1000A6B41D186F6857438FAA247F1B289E5DCC +:10FA2000E79A5083F6F5D9AE0F46EF45BB5DE76721 +:10FA30007DBD773943CF221D8CF6E657A73194C39D +:10FA40003C3E3CCBE2A2B8CEA94C467ED840FDFF5E +:10FA5000139EAF54D16E6094AADFB14EB4CF5E0452 +:10FA6000FC631EED0A8C1B3F0F7605A63BC1AEC0A2 +:10FA7000741BD815981E02BB02D35F835D81F51FEE +:10FA800005BB02D3C7C1AE50F839C423383F359304 +:10FA90009FE76AB5B21BE81CB7380FA9CFE37581A1 +:10FAA000073D3DA6727AD8AD0AF9F69E959F2F5173 +:10FAB0001A46CC75F314E92335F7D58013B29E327C +:10FAC0001695F0DCDB970DE154685ABAD72FA543A1 +:10FAD0003AEE3BEF2127A44F9F070A07EC947B2ABD +:10FAE0004081033E5DB2F6C032C4E7341E3FDF7D85 +:10FAF0001EFC7B329E9BB5129EDB5E653B500FEC7D +:10FB0000390FA816BE7B66B7DF867EC3FD6F42390C +:10FB1000C0C7B3E9CD9F53DEDA773005E6F7D4707E +:10FB2000E6473BDAB3E5C3BBA8BCFBFEDBB1DC3385 +:10FB300063EF4F79FADC1DF8FD17E7CD6E41B2F2A5 +:10FB4000F4C4EEC4EF59EB422DC8F7C39AC22FE7B5 +:10FB500043DA99BBAAE45A287FEAA5F6B723907F37 +:10FB6000E670A46E1DE4371FBE7703965B7356766E +:10FB7000E7C378F737C8742EA9080F5702BC56E7B9 +:10FB8000AEA0EF0F3464D2F7D423DF7A67425A3243 +:10FB9000520EE27EE83333F879581DDEDFAB161ED5 +:10FBA00077B38A73F3B9FCFC2A6E9C225CF5FD19CD +:10FBB000F5183F9FAD1EE679ABB721404765A4908D +:10FBC000CD8A74592BF57B0E3DC5CAF7074A76706E +:10FBD000FCEDEB95A3182FDFDFB32A05EDE1FD3D2A +:10FBE00005169463A5B932EDD7EEEF4DCF7003DC67 +:10FBF000B7F4AC1846671C40005F09FD38ADFC9CAB +:10FC000065869578CFD03E9DDA97C4DB6F74A4E209 +:10FC1000FAB17D7EA27DBA683F02DB971BDBCB1673 +:10FC20004CFDD8BE98B7473B31F755F3F8C3B13D0B +:10FC3000EEBF9C31FE0A19D371A27D325F15887127 +:10FC4000DBA470CA24A4DFE58A8887FB49AF940B44 +:10FC5000BDA2D7AFB672BF2135BE0F17A2719E39B4 +:10FC60005690CA06DBEF44A1AACB29D2FBCE84BCB6 +:10FC7000A77C7A527E7852FD82A4F20949E5A54913 +:10FC8000F9549A7F89F8D6887601DA0B0DA9A45722 +:10FC90004B1C3A1D703D5B19AFE77D7919EAD7D946 +:10FCA0000A3FA720F46BA5A87FE8F7D739691F980A +:10FCB000F9E8BB2DDE2E7CF7786C775466043F7034 +:10FCC00087C9AE11ED9E95FC2F17A3FDFF123F6F64 +:10FCD00090805FD0CEFD2E0EEF32D1DFEA4DA52F02 +:10FCE000E311D5BFAF55FCD83E59DFE5E2E10DC4C5 +:10FCF0005BCFCE554EE8376DA25482EDC6EE6B90C9 +:10FD0000D1CDB7ED67AD1E6857B14BFB450DA4A52E +:10FD10003190AFC0D7A55B387F946C52888F4A7200 +:10FD2000F9396495055F1E0FF4586109ADA575FC9E +:10FD3000919FEF2AE92E35D9F9E336F173210F5857 +:10FD4000B93DAB223F62FB2DD34CFAFBDBDED18306 +:10FD5000EAEFDDCD41D339F83DA8FF5C09BC8D4BFE +:10FD6000A2BB07AC926EFF98F0985CEFE5AD73070D +:10FD7000A5C3DD228EF5B42031465B5B90DF248B7A +:10FD8000FC45965985A48FE9FC865EBE7A8BB9FC4A +:10FD900019BD7DF8D29918B77A669342F98DED971F +:10FDA000CE6C817F2A02BE20AF387C37E970E279C1 +:10FDB000837C7A80E4D37E66DA4F96EDFC9EC7940E +:10FDC0000F3A0FA769B8FFCBD873A588CFE04C7066 +:10FDD000335865549391A55E72771D44FC3F355EA0 +:10FDE000F2EF84EF555A552B9677BD71DDFDCB911F +:10FDF000EE84DCDD7FB4F008C6DF5ADEBB6309CADF +:10FE0000B93B4E4A1AC6570EF5CC6568BFA94715CF +:10FE1000924F6AA6DF122239556AB9DE00C729451A +:10FE2000AA903FD52913F1DC75E6AE697CEF35C0A9 +:10FE300016BA711C1B97CF456A3849FE3E6B45FFC9 +:10FE4000C1DFBFFCADB4B0B005E9ED7599DBB3B56A +:10FE500081943986FB04FB8E813E8071CBDF884C18 +:10FE60007905EA45BCD3A6A0DED8BDD9CAEFA18CDE +:10FE7000E0E7645E14FA01DC8981EE03BC88704E11 +:10FE8000BE0F308A017F40FB514A0AEDFB8F8AF199 +:10FE9000FD42F6DD6966940BC9F2ABC69562E20BD2 +:10FEA000B9C3EC0F8F62067F98E47C92FC7AF79CD2 +:10FEB00044FD02B48F6B5E4EA56082963609F05900 +:10FEC000952B6BB4EF1B0EB8AA601E978859ACC671 +:10FED000F812966F65748E7487900B51B08F30DD79 +:10FEE000D7C1F77DDB8E839D01E5BFCB94FD313C0F +:10FEF000377E8CDBF197E8E7658B558A2BDAE13F9B +:10FF00001C5F0D7B6722DF8C8B68AD288F4A0F1B2F +:10FF1000E28EF0BF0AB1CF5C95148FAC10F1CB8AA2 +:10FF2000A4EFC9F1C7AFADE6B8F43D3FB3D0BCC252 +:10FF30006F5AE8DCF033E7B2B004F6CB263974F739 +:10FF400072D26BFC7CEBD302467A3CD262E3FEDBDE +:10FF5000E1F76C0CFDEFDD3576B21B9DB838F8BECD +:10FF6000FB78BDAE8FC8FF3934CD99C2E5758019D5 +:10FF7000F5C1AA69CEBB918E57BF2493ADFAE4E1D7 +:10FF8000153E19F21B6BEC74FEDEF3607804C68735 +:10FF9000F6EF10FB5AFBC4392D9D1CB04F3AA7E574 +:10FFA00025BB39C3268BFB39C10C5B79827F3DA30E +:10FFB0006F1B8E7ED29E7C89C7F186E82737D14F92 +:10FFC000AEB11F831D2FFC9118F7FB443779E82F42 +:10FFD000A39D9EE40FD4BDCBCFF7815D3F0EFB5BAD +:10FFE000C282018A83E0092F3A2F7FD6767D881955 +:10FFF000ECFABCCC1219EDF8847D1F2CC5FEF3730E +:020000021000EC +:10000000B555888AB3B5EB917EB99DCEED7B35C2EF +:10001000EDFA97855D0F76F97936935DEE5F80474F +:100020007C16D81E9DA99C8B76775719E667D91E3A +:100030006DB5433E4FEECDC12B750B6D8FCDC4BC5E +:1000400007030FC08AF3201F9E01FDCA1CDEE14793 +:1000500098B0D3FB5EBD10E6396169A61FE3AA79AB +:1000600072D7D152B4B76FE2FACFB397DBBFC9F3FF +:10007000DE26E23CD0FF0AC4EF421BD74F0B057DC2 +:10008000EAF90E2574A58DF66F9982F77392E33A1B +:100090000B11A0E867DAE2E7EF86F3FBA890BAFB62 +:1000A000C53BF70F87C2FBDE38DEAF4BC67B46FE93 +:1000B000D9E3FD54ED7C125D03F9ADB66F81A90D56 +:1000C00071BE1B5968A58DEC027E8E2A8E3719FCF5 +:1000D00029482DE2FE82C732A701E1D621E0A5A77B +:1000E000CD3671BEE837679C6B6DC675D894903875 +:1000F000F4C3E5B7A715FA7119E02BFC667D3E1D28 +:100100004A7DBBCDE03723DCD19F5EA3C39B35D0B6 +:10011000FD35F0D3E85CD8BF1BDEB97178DF8BEB1F +:100120000778D33CF3441CEC6CE1AD9F87D0CF3F04 +:1001300084ABB58817E5641EF3230E66BAE698EE25 +:10014000DDE87641727F5749A1DDC67527EBFD3AA0 +:10015000D6AB7238F6A9B8EEEA0CAD4CA2F3ACEF10 +:10016000CC3CEA833CD225D93B6F937D539DC2F3AF +:100170001FADFEB7089E67ADC63D3FB48FC25FCED0 +:10018000C4FD86EAD1BCFC2FA2FC0935F014D17D58 +:10019000427E448DF243F59EA842BBE62E67E839C5 +:1001A0002E37FCD588BABC46ED07C50574B91115C4 +:1001B0007101A0BFC3242F1AB91C19CA9FFFBDA08B +:1001C000373D7D058597D19F6FB372BB44F10EA774 +:1001D0007BD3901AF9321E8F8B38783DE14F14880B +:1001E000FD936439ADFB13050E333D25FC818093EF +:1001F0007442127DE9FEC118F1ED508B35F62318DB +:10020000F7C14A3BED93D545C6529CC6D7FE31C5D2 +:10021000AF74FAFBCAC1D7A3CBFB5DF7161C2982CA +:10022000766917D1492776B32DF0B1AD3C81A7622D +:100230005BE09324BC8506C0DB17678337D5E5E018 +:100240007EB9C0830EF71E21F78F8A7BB3AFC4E55A +:100250007DE05FB1DF56AB46F1C7F011EE2F0D84A4 +:10026000FF81E2973A9E7579F39183E33791723D6E +:10027000DB23EA8DAE64D3BC930DF6A29DD7EB7160 +:10028000B07EF75D32ED5C5E795A8324C79838A75B +:100290003ABA83EB71BD5EB6E807F1C7DF1DD064E3 +:1002A000E4B7A0985761259BE14D4DD42FB473BDA1 +:1002B0001174F2F2E47147DBF9BC75F9A98F5B7830 +:1002C000AF79DC31F1710332D727411ABF605D1F6E +:1002D000DDEF2A6C62840FEDDE6000ED8B9E2ADB81 +:1002E000987BD1AECF2A1271C100437AAF10F3B917 +:1002F000DF1AF0E1787900278C335960DE98029F8D +:100300009D203E7385C90E34D8FD15761CFF28EB61 +:10031000F79CAC0E778FC26A6C06F9F50701573D62 +:10032000AFAF3318489B85A1DD49FBBC2528B666D5 +:10033000FB25E2BB09815C8A7FA50A7CEED8CBF75E +:100340006F27DA7A16DE0C7089AEE1E764EF5F653D +:100350000DF03858EF932FE33AEFB192BFB4EB6949 +:10036000D79A09906697DDD69201F5363DDDFEC439 +:10037000CB48FD76EE373DB277E7DA09507FCBB256 +:10038000748A57E9F9DCE53C7EB539B2F1A2B1488F +:10039000A77B653ADFFEC80CEEAFE8F3BFDCCEE327 +:1003A000574BEC227E15E17E603C7E3543C4AFC2E4 +:1003B000425F2E9593E3574BEC83C4AFAEB5F3F891 +:1003C000D5E6289743AD7BE5680B347CC4B5D3896B +:1003D000F6EF23AEB90C5335C0E33F8FECDDE8A058 +:1003E000F8954B8F3F459D183FAAB7F338D0CD38CD +:1003F00040B9B1FD4909D33C437B8A5FB9F4F81396 +:100400006F7F939DC79F6E3FA3FD99E353FCCA6D19 +:100410001E7F8568FF736C9F35D8F84FA65D6F907F +:10042000233F13F31EBF3F442EDA0401DF717B7BB1 +:10043000FC7C73366647386D7F6853E808C0AD7D35 +:100440000B8F833C2CF6CFB74B66FEBE5BD0DF0331 +:10045000827F0E6D01FF18FDE22DF30312DA854D48 +:100460008CF03C6EEB9792711EA396F2F8DEB8AD5D +:100470002B8F8CEFC73F7EC02EFCE3A572B27FFCB2 +:10048000807D10FFF854EDD283784C7862078F6F2F +:100490004EECE4EF904CDC17E6FCFBED14B2BF46EB +:1004A0007D5B429703F2BE9D4E79F5DB73293F6A6F +:1004B000131F6FAFB0BF26AD6BA77331EA267E4F17 +:1004C0007D54D81CDF497514F0F7281ACDF19C49EA +:1004D000FBC3A9E7C3BAC6775B88EE07D6C7C18856 +:1004E000F1FCF6F6F8BE068FEB8C16F130BD3C55EC +:1004F000C8E3E4B88E5E6FACC482D8FEE17B068FA1 +:10050000EB6C6BE6E70DF4FEC6DEC5E3C9F4978934 +:100510007A2B40E729B737D56FBC08F369356514E6 +:100520007F76F0F382C9F197B81E9042AF207E74B7 +:100530007CE9FE58AA83D3B9AE1F00A43518924BAC +:10054000AC4B36EDF71AE435CDA7730197D77A7E19 +:1005500058287B079EEF4F71E8FB938739DE6B5A73 +:100560004A90AE83811326FD3924DEBB38DE1F138B +:100570007857BBFAC7778A239DC7F11A7F58FC6E5C +:10058000283C6B49784E71F41FBFD3EB150B3C3FF1 +:10059000BE8ADF2F1E0ACF7A7FC503E2F960FA25F3 +:1005A000063CA738C439DA81F19CE2C83A13CFE09F +:1005B000BFA53A84FF663C7FAFFB6FBA1E073D16AE +:1005C00031EAB1BD8E243D26EC045D8F8D8FF2FBA8 +:1005D000DABA1E1B877A4C4AD8253B77F0F74B8A4C +:1005E0006C9D2B8EA01E5B6FA5FB95093D162E3DC5 +:1005F000827266A395F6733AB7D45721BD0CAB6CE3 +:10060000C9B909D2F17B9A480EF96EE7FB2F573929 +:10061000B83EDBB365057DD7F75FF66C01FD05F9E4 +:10062000110FA793DEDFBC4526FD95ACC72639F830 +:100630007D914A87D0635B7EB01EAB740CA2C76607 +:1006400038B83F36B01E137A600B97B303E9B1E9AF +:100650000EAE476A1C03E82143FBFEF4D84CD17E62 +:10066000B663003D6468DF9F1EBBC4C1F5D1FC3397 +:10067000DA278F6FD663F344BB49BBA207B1A995B4 +:1006800081FE1A9DD05F51B46B009EDB7FBD29FABD +:1006900032C0ED7129BAF162F44F72789C22598F01 +:1006A0002D15F4B752C8C3436111E7DD0B7A2C3323 +:1006B000A1C7263CDCBF1E9BF0B0E22CEA478FAD01 +:1006C000740CA8C7563A06D5635C9E15093D56249E +:1006D000F45851B4E7ECF458923C1BBF8EB71F4856 +:1006E000AE7D34801E1BBF8BEBB149A8C7D87F9E5F +:1006F0001EFB68083D16976FF79C9D7CD3FBDBDEE5 +:10070000C5F74313F22DB4DB2CDF965620DF7E2491 +:10071000F87310F9B6A73FF9F691E013DDDF00108A +:10072000478C7AECA3643D96F07706D563EFC7F566 +:1007300018B75F8AE27A6C836CD42B3FD47E19C8D9 +:100740006E79FFBF498FBD3F841E8BDB2BABCECEB6 +:100750005ED1FBDBBEC98CE749FB00CF52C25E997C +:10076000F434E099D669E9578F017EDF47FCEA78D7 +:10077000B5ED0F055234D25F1F09FDC5FA3B579600 +:100780001CDF3A553B3F80781A28CEA5BF97977C4F +:100790005E67A8F380732EB893E6D5AE06BE7618D2 +:1007A000E20DF7A9A17FEB5FBFEAFB3461E1C7EA85 +:1007B000E900F7217D5C3FDA2A8331711F527566AB +:1007C000F5771FD2EFF3631C28CDFC9E99EAE5EF85 +:1007D0009979A67FD7DB8A72CF5B3105FB49778A8F +:1007E00077CD92EE031AF82ADD69B00FE3F740F1F6 +:1007F000029D613DED39570C744F70B8D3149F1CA6 +:10080000FC9EA0C5CECF5586AB595183CBF01EDEE2 +:1008100031410F124BFCD1BE027FAF6A9C53D2F71D +:1008200015C639CB0DF34C3AB7BC460AF1F8AA2BE2 +:10083000CCCBC539668AFFC06422CDFCDCF27A716C +:100840006E5981F9D23DDC5CFEAE544A2606AAF010 +:100850001C7317F94D29C50D3E3CBFBA7A80F3AB26 +:10086000378A79B58CE4FB796BDF93289EB5764C9B +:1008700085CF781E59DF673FECAEB0F71AE4676B9F +:100880006E29ED9FB7BAE60E7A1EDED569A173B860 +:1008900043D6EBE0F5062AB7F85907EE535914BED4 +:1008A0005EDBBB368A2FD858438CFCC35E49BC83C1 +:1008B000C3E380FABC255703D19F1EFFD3CF05CCDD +:1008C0002CADB4E3F756BBDF8EE7775B7307971B5E +:1008D000B66F2516CBA073754B108F07C6EF26BDDC +:1008E000EED41AE81EAF2D17E807E09DE2F233D4EC +:1008F000F3295EA6213E86C243A593CB6BD52B9BE5 +:10090000CE09AFA90A513F6B7218BDB3E5298372B6 +:10091000039FAF11E78DAD421EEAFD9DE3E47AE34C +:100920004ED12F9214BEE760B1FF8EE81720EDA5DF +:10093000FD40EC070A9BF07014EE3728819F71FA96 +:10094000349727F89FDFE3192FF890B1DB4CEF4B7A +:100950008D17EF88E971486D13237A2A8AF0FDF824 +:10096000F19155B7C9934453281FBB8145C3BC9C23 +:10097000F6E5F5F645BBACA6FBFC05EBCCF942B1C0 +:10098000EF399619BE039F158A7DD242F12E95FE4E +:100990005DBF6FB11D3FF4B30F90BC5FBAC569DE98 +:1009A0002F1DEABE87BE3F6A65819D043FBCBC9493 +:1009B00003F47427F72392EBEBF06C4CC29B9E3E42 +:1009C000EA9492E46E72DA69D683E2FBB7272E1CB2 +:1009D00054DFBE03FA366238F7F147A16FDF99FFA3 +:1009E00090BBDE659C5F0BF5FFC7E6E3E77FA026C3 +:1009F000C6F11C7C5BCD7753FA02DE87B866593EA0 +:100A00001DE5B9A6E1806A6CBF68D9DBE77F60802D +:100A1000E742DF159108D19DF2AFB84F8DD16F7CC1 +:100A20002F2C80CC61D047FA789D30CF0FC02EB8E4 +:100A30007A19F7CFD6E558A32EC0E3BAEFF93B22D7 +:100A4000E113FCFCED3DCD0B22581F8FA720BCFF0E +:100A50008F93FB59EE659283C79F7AED3CFECAE502 +:100A60008145EC0BC4E126E48145EC071C2AB982E0 +:100A7000E44123F3D7E2393976CC42E790D61DF82A +:100A800035EBEFDECBEA667E9E2582F7274848737A +:100A9000BB45D5F71F847DA28AFED788FB158D2C18 +:100AA00068BFB62CD1FF869A53DDA3C9DE4F37DD70 +:100AB000CB6C53387E5A9BCDEF6954A7E8765057DC +:100AC0000CF7CD410677A11FE22EF6C7B2CB68FD29 +:100AD000F978C5C70278A9467D5616F3E1BDC07501 +:100AE000287FFAA1B763425E2C6AE0F734D7017C15 +:100AF00039BC0FA9F86E4CB89CF5BB0F302645A742 +:100B0000D3FFBFE03B3F45F727FE73E0CB52B81C55 +:100B10005602611BD265327F780351D5285F02727D +:100B200068624A16BDBF49F36B5743BE15902A95BC +:100B3000E10BD10EF0549AEB1BDA95A5949FD9AE38 +:100B40005DB7537CF3F9FB7601E02F63DCB112F85B +:100B5000C8309F841C58C5F9D3C7CF7527F3EF4021 +:100B600072AD559B6BD78AF15D4599EC6ACBC83263 +:100B70007BA161BE97A5F0B85F6B21B7BB23B973AA +:100B8000ED85C56796B715C9A6F3A87AFABF9D0A81 +:100B9000957F898776890F7A389ECA5800F1AD56BD +:100BA000CDED447C7756727C0F359FBA21E65337E2 +:100BB000C47C46A4F0F96868F4670D3D1F1D9E03D0 +:100BC000C9691D8E2F3983CB119FBABD39905E46FE +:100BD0001D8BFD3DE10CDE8EF5AFF9E9E559A80767 +:100BE00086A5897DF6DC4CC23B943FE4C94A9487D4 +:100BF000AB13FB7CB8BFBDF2D2A5E5485F6F8A732B +:100C0000C09E0C7E2F5B9F576F0AF7737B53B8BC57 +:100C1000580B7C131D97D807F4B44AB4EEBE9172FA +:100C200074673EEAC522FABE3AF468EDE8323C7FCA +:100C30005C88962EFB460DDBD08FB58973C7EBAB76 +:100C40009D3718E35D0D5E0E6F4F5AD52BC8077E9A +:100C5000572FED73B200705D367F6F12F97FB217B8 +:100C60002C3E3C778FFBAD14AFF1DBB9FD2FEE17B7 +:100C7000B110FB21F78B1E579805EF25875D5CDED1 +:100C8000B93749E407EBFB9ACF79E76E47F8AAFB3F +:100C900043747FE5408593EC98AFDBF87DC913D7AB +:100CA0004CA7F8E06B72FD76BCAFD1F7B68DE1FDD5 +:100CB000DA13975E528B76CD896BAEBE18CB4F4858 +:100CC000AC56E28F0C79F0DEA667B4F6D83E845BB2 +:100CD0009B83F6C554DFFBC24E0B78E44AA8FF376E +:100CE000CBEF52009E7F729DBA0FC5DA352C46E7D6 +:100CF00023F4FB116B5343FB705ECAD59714A17CA0 +:100D0000596FF5E6A1DDB8BEDD568AE7D4D2BE0044 +:100D10008703E9F1F2147EEEA60F781EF28BEF9AAC +:100D2000F79071DF727116E003F0606F6C0BE4C333 +:100D30004076CD4F4FAD7846733A189E1A3A88F8F0 +:100D4000A8B6971CF6A2FE6FE0F718F47B0D57DFEC +:100D5000C0F36F8AFDFE643F35D92F3DAACB451FF6 +:100D6000BFFFADB8781C937995A477CF72C91FD314 +:100D7000F164A4077CB7CC480F78C5284E0F01BF9B +:100D8000D0FF717A904E9F73F6F4B019C784F55E68 +:100D9000319DEFBB86ABFDAF12BFBCA612BFE8F71B +:100DA0009092E97E75A8C92E179FC91F3A3FAC2DB6 +:100DB0005BE1D55C48FF2B96D07D91139286EF24A2 +:100DC00078A72ECAC2EF97D759090F3A5FE8FCB04F +:100DD000C013E78BC7918F43AEDE599276265FA092 +:100DE0007F69A4FF25C827F2997CB290F9AFC4F3BC +:100DF000970B15164E4D4FD0FBC24AFE2ECFC2DECA +:100E0000167A87696193C44E9AF403E4ED26B879A3 +:100E1000E3EFBE5ACE1EBE6B2F92DAF1BCCD5AB5AF +:100E20008FDE290BA771BE6B75487BF17DF576F7D8 +:100E3000876D687FACCDD6E81DCDE47306ED6353B6 +:100E400088AED75E3182CE3BDCD7ACB110C0F74F55 +:100E50000AE3EF95CC7713BDFF3DC03D84F7AAC0F0 +:100E60008EC072E0639F2B0BE9D4CF7C507E85A5AA +:100E7000A7E110F2C71F53E8FCF8D7CF8526E37B24 +:100E8000CDEB2B6EA27B545FDF191AE52D36AE2316 +:100E90003A9CDFB7EE1D2ED39B419AB87FCDC4F7A5 +:100EA000D008FE3D4AE956C0FF49B4533DF9BA1F88 +:100EB00025DAF552BBB59E1E07CD37DBEAE5EFA379 +:100EC00006CACB213FEF9C4C86E7E2B65AF9FB1CE1 +:100ED000C9F0BCD2C5F9679EA553C3737765AEE16F +:100EE00017E0B93C67FE8ECE722F860C865F70913C +:100EF00003EBF17DEAB6EFA794A333B8BDB9FBFCD1 +:100F00000F0C71B7514D5D2C84F7318A8364C7B4DF +:100F10007D6F91ED28072782DDC3F8F716837D5694 +:100F2000E5E2F2BF4DD83B6D2D415FBA617E6DC2E7 +:100F30002F6D3BE0207B3D65F635BB1CF9C6797310 +:100F40007DD926DE2D1955DC27FD04EBB774016F22 +:100F500043FDD8AFC99F069D2D2F35E81FADA9DBF6 +:100F6000EC57C014534B71BC4EBA17EC1C63F7A27C +:100F7000BC5B5854F32F4A3F748B7F270DF4A7CFE7 +:100F80005F8F73ACD4EF5D67B557213E9C754C42C3 +:100F9000B9BEC2C5FD8A02246018EFCBA29A41E314 +:100FA0000478FF1A2C3DBA7F1D1EC7EF5F631EEF4A +:100FB00049618AF7AF31C5FBD7588EF7AF318FF74C +:100FC000AF318FF7AF318FF7AF318FF7AF318FF789 +:100FD000AF317DAE394429DEC3C672BC778D79BC92 +:100FE000778DF97936FEEE182B0A39CB112E130ABC +:100FF00025A423E75A6B00DF69382AF03773CDFC4C +:10100000F5C7306E145028C694B245497B83E74932 +:101010004FA7F8F8BE7FBBEF4986BF33A05EE0A6BE +:10102000F8CB3DEFB9284D99FF144379B553D52C32 +:10103000192530BF75575C601F8FFCCC5AD3FD90CB +:10104000775DBFDA0E2430A5EC8B9B9E84FC53AEFB +:1010500045ED1823BB27ABF6350DF2BF752D69C7DB +:10106000A31EA36754B9F97B8E4BDA0F43FA63BC16 +:101070000CA8DF0F8079074252FC3E80BD10CCFAED +:10108000C03E10C5E04FB896B6DFABE17E5C5718A6 +:101090002FB6A9E1BA76DCFB81F64AB697FABF60B3 +:1010A000A29428CFEAB8AA7DFE7863FF4BDA03D07A +:1010B000DFABEFCAD4FFFD503F8CFD17782FC5275B +:1010C000E2FADE93491FBF69D55691DFB916E413E2 +:1010D000CCF7B2A085E4CBE81AB68319E2EFDE22A2 +:1010E0001E8FBFD4CDF9324DBC3F258324C6384472 +:1010F000EAECA788885203E6F7FB9CC54AD2FBBFFF +:10110000E6F7912F75733D74AC80D13BE57DE3ED3F +:1011100051B42B96223DE3392E17B7F32E0B3EA880 +:10112000E13BE5A38BECA5A80C8EBA34BD5D0CE7C2 +:10113000A7B74BAE87FDCA8672BD1DFBEEAF0ACACC +:10114000A1B6F58CDE4173164435F4278CFDCA65D3 +:1011500003F76BA8C72C838FCFA441FAD1F9CA69D2 +:101160000DB8919EFB2672BCCC9FB75EE75319F772 +:10117000019D4EB3BD6AF7546F73031EB6B939BDF6 +:101180003B9D5DDD05D8FE3C85F66DD9DEBA239822 +:10119000FFBBFB6592B3D90AE019FACBEEF096A03B +:1011A0001CF954C8D78CCCA573E91DC44D0AC3F7EC +:1011B000F433C57B10994CF2C734A4F7CE59E81725 +:1011C00086551E7F2CABBCED9232F83E75D657C4C7 +:1011D0007F539F9725B48B3EF5F079944C7637A0DA +:1011E000DD7BC9E4915390AFEE4E7A9F424F6BDDA9 +:1011F000DCCFDF25EEE748DB8E3790BD59EE92500D +:10120000DF7DFD05D74BFF26E639CECAD70F9E06F8 +:10121000D9952D3E85DEF59073786A551BEA910EBF +:10122000AC5BEDF41E96F5FBA976D42BADDFDAC4EA +:10123000FD9F1EB237AD8E9017DFB72AD820533CE2 +:10124000A0D5EB8CE253DCA9EED26E0DF5E42CC5F3 +:101250003F06D6937A9E42749FE6BE228AFBB8BFB1 +:1012600038E0A0FAAADB1E4579BFABE6CB600D944F +:10127000EF9A01F204EAEFEA981F243EF2CADE3147 +:10128000A4E7FCBF473EDBD5E4F5237DA5E2FE0DD8 +:10129000CCE3CD85D37D757C7F80DE85A3A72365D8 +:1012A00043BC9D058AF09EFA346F752D9E7F55D301 +:1012B000AAED2887D266D5D8793BF33B9B911ABE1D +:1012C0009F8EE5D7E23A23EC30BE63AEB36E5ADAB6 +:1012D0004609E311EA4FF8B748FA34ADCE85E39AF0 +:1012E000DF9FCB77D963F43B135EBE2FA615717BCE +:1012F000355FDCEB80EF14C7CC8998F919490DED07 +:10130000DB5161F33B9E0C230BB0BE11621EAA5849 +:10131000FFF48FCDED4788B8E688A4F7EC66B9F501 +:10132000F88B194EC9EBCFC9DCE5457B3E27ACD025 +:101330006492D79593C9F7F5F2BD4EBEBE4CBEAED2 +:10134000E4754CF39EAC42BD97BC8EE9ACA705E9B1 +:101350007064A3F97BF27CA7D5EC0AA2FD3CAD48F2 +:1013600021984C675DAD1877D7F1EE2C30F3EFA7DD +:101370002EBEDF067CDC867C3CBA43060590E87F07 +:101380004CA793850DE38DDB946ECA8F8F0E37D5F6 +:101390003F676F81A97C62D70453F9E4FDA5A67C61 +:1013A000496C9AA9FE94EE6A53BEBCE76253FDA94C +:1013B000C7E79AF2E7F62E34D59FFE71BDA9FCBCB3 +:1013C000BE9B4CE53FFA7685295FC57E6EAAAFFBD2 +:1013D00055CCE7EF0964E27DACCC12945B3ABC7E5D +:1013E000EA36EF1727FB51C9FB849E140EEFA1FCD0 +:1013F000B4564167D9F30B58C8F03D73F60453DE79 +:10140000B7A894854C7ACCECB7B57D3F6F01FFDD72 +:10141000277E9F3A927505BDA7B162BC95CEC59354 +:10142000AB87EF4EBAD3489EAD78690CBD43765F6B +:101430005A603DE21FDF730967E0BE8B95F499D3D4 +:101440006525BFDBE9FA25B7FF0AED0CB7749D45AA +:1014500051DA878934779C5F0876F72F9AC3942AEC +:1014600045C130EA152593D1BB2FDEA23ECA7B676A +:10147000F0FC72B746EBF4CE80FA8675A85EE8C73A +:10148000B0CED7F03D56F2D76DA4AF74BF3FD9CFE1 +:101490000F79BDBBF7B184BF0F7E349D1BEF6B4B43 +:1014A000A17605E8A8950EECD7CF603D164CCF6726 +:1014B0007D94EE620D0568BFBF610D5BF0B7716E84 +:1014C000DCF5EA0D388F73CB9CF41E0EC601DC866A +:1014D00038C089346F1EEAEBFBADC1F5C770DC3B49 +:1014E00055867A73F19C4BED280F168F57FC7CCBF9 +:1014F000121C788C076C4EF7733D2FF488C21C8544 +:1015000050EFF2BB0B4BF17BB6D240FA367B9157D2 +:1015100042FDF8BDA0B78CCC32D20B199D8A5FD3A7 +:1015200010345A35D6CBEC60FE18D49B5B00FA120F +:10153000F5FB7DFCFE7B41D1D8C308A711CB62929D +:101540000DEDA68046E7410ADEBDB01BEFE7AF55C3 +:10155000613EA84FB72A824EACE4E7ADD8AC909F6D +:10156000B7E225D55188F9354A090A120FEECB02A8 +:101570005D78ABB83E2AD83A368AF6C03D92771BE2 +:10158000F9556D363FFA550F083AD88A740176D36B +:1015900089ECF655F8A4C478D70E19CFD59F937966 +:1015A0006015A613734FC8189E995C28B5E2FB001E +:1015B00025C5F9163C9F3CA5ACAA15D3F219759622 +:1015C0004C48A7D64878ED85FDC55D4070B86AE9FE +:1015D0009CE368E754795DF43E4CC1B48F17A03C9E +:1015E0001EFA3D9E4DF4FB1F6CA9F93D9EAA0C17F7 +:1015F000ED737A91CEF32925BBD33B3F258A740E38 +:1016000076B684FBF1E12AEEA7E5066212EA4368AA +:1016100027619CDD1B7348E8478D08F44840F36C54 +:10162000C44A46E7CEF202BD12EED7E42E33D3F918 +:10163000F0D4D0F76E5847DECA0ED3770FEE1B02F8 +:101640007C2332973FCEF4901BE9C739A920BD55C2 +:10165000E371C239C509BA7943D823BFF5C8E23D61 +:10166000272EBF753B56B757DBBE7F302A035DEF91 +:10167000EEE3F79EC38DE23DD8BE9885E2533F9DD1 +:1016800043F49827E2618BBEEC6AC3771B2EB7F553 +:101690001D4A4586B999DB5B3B1D66FF78BE87CB4B +:1016A000ABCB44AAAE058D3FD9F0FB2DF807FD3F2B +:1016B000D1C4ED75F54FAE8EB4541856CC77D26FB9 +:1016C000BCD5B8AF9D1FF31EA4F4A8480F432ADA77 +:1016D00023E271AAAC9F38F88E48E611ACB7837943 +:1016E0008F780DA95AE0BD18CF75B1DFC9842F9648 +:1016F000CBE85CF38E48FA4E3C4FC1C02FC1FBC40F +:10170000797766521EEAAFA5B8DDFF7232F43BB4BA +:101710004625E0E8673F71148BEB7399DE0F0EF3FB +:10172000BC9D75B4201D4DDE6FD0F70CF59A393F86 +:10173000A5DB9C2FEF31E7A71E37E75FF270BB14E4 +:10174000BC9163853A1CE0FF46C1FF1A817134B138 +:101750008F3BAA91DB1167DA3D66FF86093B6889FA +:1017600040CDB9BD66BB6389B07F9624D913275C91 +:10177000DE2BEA200DDC1BA2733AA1468B5F823977 +:10178000FC79EBD763B81DD4978571AEE14834304E +:10179000DFC577C6E39BE17186F8E6DDFED71A0E5A +:1017A00041FEADE3368AA1CDB21CED6E46BD74B9E3 +:1017B000AA11DF4D5DB63D05E3D76FDBE8B795DED7 +:1017C000D2B46164C776AB8497D5E2FC9FFE7EB24B +:1017D0001EAF5B2EE8EF461D5EB82146719F580A8A +:1017E000DAE793F733569C640FF2F2800BCB4B622F +:1017F000C9E501575576FC4928100512C1BB5CD8D4 +:101800009F986F027D5276CCFC6EE9B005E6BCBFB6 +:101810005B253B75120BA6A27C46D71BFB9924E0E7 +:10182000EC4FBA4F3C49ECB74F4AFA9ECDF8FE6CEC +:1018300076992B1ACD3F731F7D9DD620D1FEED22C8 +:10184000F048A0EA6A8F7807B1981523DE67E1EFC8 +:101850008D209CDFB0507CEFF213E3DEAA43BE7E06 +:1018600095EFDBADCED736A05EF2BECC7F67CC9BCA +:10187000C24A4A5C89FDF65F9EF633DCCFD6E3A40C +:101880008F373386F2BDABD9CE50BE3FD9ECA5FC25 +:10189000BE661FE59F69D628DDDF5C44E973CD7E17 +:1018A0002AFF4D7325E57FDB1CA07CACB996F29E28 +:1018B000B4AA873C00EC77A11EC66D9D25FBECB851 +:1018C0008F71F935162FD259321FDA6E9B97752515 +:1018D00088B69FDEFDDCAC2C80C75B2B2D145778BF +:1018E000E89EE766B5149AE3B5C6B875225E0BFCB0 +:1018F0007B0EC56B43765029DF88FDA478DCF606A5 +:101900001ECF1EBA1F1EE7C6B8AFDA5F3F222EBE3B +:10191000BC83C779975776D0BDFBE565DC7FE93896 +:101920006E7E77D90AFD627EF9BEDBF8EF5FAA3DD5 +:101930000DE44796BB841F7907F995AD5BEC6C55B8 +:101940007EC29FD4FDC864BBDEE09F9BF40246705C +:1019500090BE9C7689EB3F16F76388DE7EE4E1F566 +:1019600026785F3D885B5BFB319E04DF8B7D5F5497 +:10197000F37813CF4FD2D20EA51BCAFD45253333C2 +:101980000CF922FB89052D187F5A7715C5A30ADDAE +:10199000A507330CF1A86338208F3705508EFFBFA1 +:1019A0008E477D2CE228FF90F56C3AC613C28F2932 +:1019B0000CCF0FBF90F5EC70F467517F613C0E7156 +:1019C000CDF505E3F7218BF8EFD6C5F58B26D1BE13 +:1019D0008F41BF1CA1FD07A15FF2D2C2B213CAA3FF +:1019E000BB98BFA51FFA36E8190B9DABD19866AD21 +:1019F000C0EF8CFC4EBD1CACB0187FC79EEB492AD3 +:101A00001F8D7A40A677DD0DFD105E8BA2063C335C +:101A1000F4D3CCFA66629739FF5FA5CF74FA5AAF58 +:101A2000F4D079B0F5DFF54FB78B5375791E9FB7BA +:101A30007C7A6A021E749EB300535E0EDC7300D77C +:101A4000198AA8A67197349AF38B569AF30B979933 +:101A5000F386F184DEFC81F970E00DA3BEFE40BC8C +:101A60005BA1EBEBA52CFF02B4537EC2FCF46EEC41 +:101A7000B51DE67736DE409D4A7150FE3B6EF5E2BD +:101A800077DB58CD31DADFCD6FD2C84F98AFC3279F +:101A9000CCF5B81D2010FF9D15C3F8F917C92B22EE +:101AA0007C5D267B20F95DFFFAA4DF85D392E212EC +:101AB000768DFF6E5E5E53721C354CF8C4F1F0F704 +:101AC0000CCE9CCF0F1B57EFEF24E811849BFEFE3A +:101AD0007C9CBE955E09F72FEAF19D53845F130B42 +:101AE000EC207BF147744EEE4AFDDDA330233DAE82 +:101AF000091E6915F04A8677FDA2D76B11DEF565E0 +:101B000032C51D596301F134D16101BDE76EC5F2E3 +:101B1000BC7512CB9058FCDD942B451FE9697E7A89 +:101B2000EFFD64849F1F3CB9685E36FA073ABE0138 +:101B30001E27393CF83B24F98DE677477EC2B85D15 +:101B4000C0C4EF76FF2449FFEBF8AF6706FB02BE87 +:101B50008FC24770B250AFF0DF5F5E8EFB88A85F28 +:101B6000183F1AD7F1C1E0FAC533D3DF81F73AFB4A +:101B7000D2640DFDC5C852A5768739AE673D8D414B +:101B800033FC777682DFFE2CB31A8C1FBC8EE719EC +:101B9000A1FDEB3FCBD8814F50BCB960A61DE9E356 +:101BA000B534FF44B98413867D06E41DFEC718E4EE +:101BB0006DAB7B2EAC1D99C83BD77E43F9D7D3B50F +:101BC000AD98FF752A0BD7CCC07E797EB5BDF7C224 +:101BD000C3E78971406EFFF117A756877313FC8E18 +:101BE0004F07707A31F39F47BC5F9852C536E04F7C +:101BF000C0807FBAA15C4AB44BC776D220EDE6B074 +:101C00000D4A3FED5C7A3BD031ED8638A01EE7935C +:101C1000C57C8CE32B680778436EF43FEE99A5787A +:101C2000D10FFA8FCE237BA875D7B10DF83E6C7219 +:101C30003B98768B3E7FB9FFF947B1DC38BE3AC896 +:101C4000FCFFB3E131547F5651FE83E707D557655A +:101C50009FC57A617EF8141FD3426E79B0FEC067CB +:101C600058D5FF7A3B93FA4BA3F9F942EB079DDF76 +:101C700000FDC17A3718FBFBBFBD68D36800800048 +:101C8000000000001F8B080000000000000BE57D35 +:101C90000B7854D5B5F03E73CE3C92CC2427993CBA +:101CA000264F4E42A241034E428241239E40A05104 +:101CB000790C15246A90E1A5111122DA765AF166A1 +:101CC000300F02C23578F5D6279D2078B17FEB1F03 +:101CD0002DB7E55AA441D1A2461A5B8BE8D51AED7F +:101CE0004B7AB92545FDA1AD7EDEB5D6DE2733E7BB +:101CF000249304EDBD5FFFEF868F6F679FB3CFDE48 +:101D00006BADBDD6DA6BAFB5F64ED24296EA9019FE +:101D100063BEE076A992B17F9CADA85B0BA1EE6299 +:101D2000AC3793B17CF895153196329D3105DEB311 +:101D3000C94A648F04CF15E676543056C094F0003B +:101D4000B4753316FE1C9EB33B783D9185239FDB13 +:101D50001853970F3C689BC8D8B15235D50F8DEEFC +:101D60003D34FDB5CA7478BF45F22740F3447B97F4 +:101D7000E42F63AC7A5557AD039E3F7C07EB611AA5 +:101D80009691041D9E3F3C1049D0E0BBEAA65D5BE6 +:101D900018BCAF6EF3300DC699CEBA5A55789E7AFC +:101DA00099128840997299A233802F35F592C7E530 +:101DB0004284D7C1B07D9B5AF33883F66D0E7521EE +:101DC000D6C35F676C0FBCCF5FA52EAC83F6F9213D +:101DD000BBDFA6213EA2BE51F68711AEAF0D4A5A17 +:101DE00019223F282D9C0C75490AF440BD4D57A877 +:101DF000DFC4BBD82E09E9C498A64C632C1B7FB363 +:101E000061BBAE4D33914EAB611C28B2F57DDF90C6 +:101E10009219FF9926E889F45698E680FA4382BE23 +:101E20001358FF21673AD28F7FC758BFB4D00345FC +:101E30001B3B5C9C8974E63FD948DF52FEFBE7F010 +:101E40003F5FB5859D53A03BA7BA03E162DF501801 +:101E5000CE0F13F342EDE4E1F5FCBBFA5359D9D8A8 +:101E6000EDC6AA035C8A2B6D1CED0696CF65C948AA +:101E70006FE537B1F0AF605037DA013DA70FC4D43A +:101E800079E146BA4D204A43F9CE152718E05B5D4B +:101E9000D6360BE19F60F99EB12EC6AAA2FCC17492 +:101EA0004553E17B497CCF3A028C013F3A99BFD33D +:101EB00031111F36AABFBB90DEDB3E877227364446 +:101EC0003EC967C4E7D6EFA5D0D6008ECF66887E20 +:101ED0001299CB0572E074420974901CCC958D72F6 +:101EE00001BC60C3F948B64590DF36494CC1E7D123 +:101EF000F106188EE77425B5FDC60BF2A1FA5D0850 +:101F0000EF663B6BE8417E06C2F6E3FC28011585CF +:101F1000AB15DE97233ECC6F63C00FB7AB1CE7CD8C +:101F20001EFF925A84F7353BF14DAB0FDAC177C9EA +:101F300049DA5296CA588BBAB0DE054CF7F399F0DD +:101F4000F212C6EEE9BAAA339C07E39ECD65C1A999 +:101F50004033FCB91CEA4A33C3F19D670B4CCF9F59 +:101F60006F612C787EB43ED35D5487F0EC528118BB +:101F7000198CCD62FE36FC6E964B66C19879759EC3 +:101F8000CD6641EF48FDE7999E3FDFE26241E77889 +:101F9000FA4F6241576CFF13E3F47F9EA57F75C42F +:101FA000FEA3FD7A4DFDB62B8CF448B82189E6DFFF +:101FB000F8CE289F5567FE8B0AFC75CCC19A501F3E +:101FC000309FBF5F07FA6FCE4B2FDFAAF17E907F65 +:101FD000E6A4A7766F85EFFF4DB5111E7573272A0E +:101FE000A81F589E3238C4AF20F77304FFDA80234D +:101FF000907FEBD2ED16FEF72B010FC26D7D1E23F5 +:1020000047327215A371ACF0DA3C95FD08CF86A576 +:102010004ECD5938FCBD51BED3C266149730F6661A +:1020200042F352E667ECB8BAD2D55E0D75D44139A9 +:102030008CFD41FD87FA30E0FB8EC4F9B33DFDF91C +:1020400092E5EEF8FD352A4CA9AE18E5BDA3B7041C +:10205000F57EA38D057B88AF8393BFEA89790F084E +:1020600056935E89903C1BCF97364B338A63F8ECCE +:102070001D1BCC0387A76A79D9E8F0D4A48DF2DEC2 +:10208000D95B45F0C8AC391E3C351563C3F32ED27D +:10209000A70CE1F979C968F02C55387E71DF3BFA5D +:1020A000893E4B913E65C3E159CA387DC784C7C696 +:1020B000F914E0A91A6DBE109E9A51E66BA9B39F60 +:1020C000E8B314E913079E9AF1CC570B30D7F9A85F +:1020D000E79A83A83F13CBF7B92682BC2D5E2AABC3 +:1020E000921623CFB75D9DB10478BA3969FFEC0C25 +:1020F000E0DB37EF90497F31B67F762D2CC13B2452 +:10210000AECFAA766CEB44BEFC68EE061FC9D7A71B +:10211000F03DE8EBEBB129F47FBDC2E5F1BA3C57E5 +:1021200064530CFFEF04BDA6835E8880FEC1721766 +:10213000E8091DE0DADDE2A3FA132D1A957B5B4A6C +:10214000A9FC2EC08DEFBFD7524D75A39FB2264973 +:1021500047FB63F25A49EF1E61BED7A44A24973B5E +:10216000B2D56B57A19EAE4DF4EF413DD17429D34A +:102170005DA25D1102DBF37C22BCDF7E0D2BDF0A4A +:10218000B50BF672B8D3EB3223B284743ADCDF02BB +:1021900075E762BB26411D6439C0F994B96B01DF54 +:1021A000E536A17B408FA8D06E203C7B37EA9FD5D7 +:1021B000A9769A8FE579471AD00E598EEB30AC5F2D +:1021C0004E308F50CFB13512E9B9609BFD8358FD79 +:1021D000721DAEB3D03E23A0989FB36D7FF226133D +:1021E0009DC99E59E232545EF9CB55D05F7AB35DFA +:1021F0008B705544EB5F469D23D20BFD2F7EFFA7CE +:10220000AA0DC72B57C8FEDA91A066E37A0672C5FD +:102210004269040FE9814606E319FC5288E399EB11 +:102220008CDD4DF830B9312588FA1EF960FA70BAA4 +:1022300087DED9D4763886EF96A57AD271DD059BF4 +:10224000A10CF5E527ACECDE3A7C99974EC69BF5E0 +:10225000FB332DE1B6C340BAEC548E8CB12E5BDB60 +:1022600019F034A3FEAD42BE1A9CF19B92287C0566 +:10227000CA8084EBCC84103C8F8187A5EB8CC5D8B9 +:1022800075F1F0D8299DCC66A3C86D01CC873C853B +:10229000ECF0DFE13C613768875BF16F41FC9362F2 +:1022A000F1AFF959311B495EB41D75282F4764FF02 +:1022B000262D4A1F831EFFD372333995D3957EA6F0 +:1022C000097A81BCC877FB35E2DF4C1BF15341FA38 +:1022D000CC13CA14FEFE0313BFC4D4016FF9F91363 +:1022E0009206F6FC775A8ED03C19E3C1FC48ED65A6 +:1022F000D8EF8084FB94825E6807FA4D0B315B1B3C +:10230000D457613F38AF16FDA66D3C629AD73309AA +:10231000C953580AF4E366A5B85FF2B1443FEE47EB +:10232000422EFEFC1B89C9BBB03C93501041F9FA08 +:10233000861C0CE27EE08CADC75508EDF6E504FF87 +:102340003515FA4F4A3D1C40F0DB332F29453E6AD4 +:102350000CDD19A803BB4CF5B2658111F8C15847D3 +:102360007B05DDDEB1F7E6A7023E1FE6CCEC4D1D96 +:10237000C12E680CFD03F53743E873EBFB37453F8F +:102380008F88F575C9ADCF9C7802F049D4CA2A90E0 +:10239000C7124BFBE74E05D6E8FCD9C40A34F77FD9 +:1023A00026DA03C29568AF6CC80A1E8D1DD7A5A991 +:1023B0004A90F455CF747C3FE3AF654FFF0CFAEBC6 +:1023C000BCCAADCAC0671F55CA9536DB7038A09F1E +:1023D00037911EAEB35B89CF8D7E0E260C3C827684 +:1023E0000A63575F711CEC9483A903B912D4DF4BC5 +:1023F000ADB8221DF8F560C6402EBEAF97D896C383 +:102400005807DEC5F5E2FC34B6250CDFCFB8F2E4A0 +:10241000E3F7A27D7E9EC38FD3BA4532CBF7956991 +:1024200032E173659A44F36DD0A16FEDE87438958D +:10243000CADBC7D0E1D4487468CCD507F13900B9FC +:10244000602A7CD2D9C202AB00463DAB27612A4C40 +:102450007CB6D6F3E4BD0CB7E1915A5B21F5731657 +:10246000DBBBCE76FE494E8EF6F37A8EFE67A44F26 +:10247000DFDA9FCF9D0A7025F4C97E09E8E92A6654 +:10248000E1A464FAEE734E3FFE9D9EA52AB6C2E813 +:102490003C5CE7E3F275A397EBB93461FFB43ABA59 +:1024A0007C0BA1548BFFF97615BEEB28EC6A1889DA +:1024B000EF98D746DF8398EAF85D9BBACBB522A6A2 +:1024C000DD0441BFA66C3D390D4A87C4D7ADADD5FB +:1024D0009C6EC97DDE0ADA9715B3CAAF825C5EE2F4 +:1024E000E5ED01EECC3480C731BD8B9C0B09C51CDA +:1024F000DFAD65F731F40724F8EEE765F1000B0274 +:10250000FF26B01E17CE77C97D295BDAAA110F7F8F +:1025100029D6E7781FDFA2805EED46DB04EC581D6C +:10252000EAE11AD063B0FEA5A19D9FE3A0FD991535 +:10253000AFF3BC9C9FF52CBD04E1184627E7C0E330 +:10254000F7C2F75B2639FC61807F86ADAB6105F28F +:10255000D3956E5ADFE179432446AE96083A2C496A +:10256000B3D3F75BFEECA2F7563A8F97CF6AD286C9 +:10257000C95B4D5AD5887C76193E1FC6672971F90B +:102580006C76DAC87C3667243A58EB8A8F85514ED0 +:1025900095B31DFDBC74BD8FFD005B8519F4AFD4F0 +:1025A0006FA37EE5B389D44E3EBBAD1FEB8A1A64A0 +:1025B000384E8614BC06E1657B2505D747322F349B +:1025C000D4A73ACDF36F53C7394E71C758E3AC1C4B +:1025D0006D9C8BD2F83833AE7407719D9A21EC70E4 +:1025E00083BEB25721BCDF48E3FBBB78F271B197E1 +:1025F000BF8F271F05DE21F9D840FC3E867C2C10BA +:102600007C09F3F4ADD1E563379589A55C3E12856D +:102610007C147859B8DE87F07279D892F6E816F40F +:102620000718F2D2E87DCA242F8BA18EF2120FBFB9 +:102630006A811FAA16A4CF6B957218EDBE8FD8E4DD +:102640005D68B72657ABCA0A78DE9566C0ADDF4B2A +:102650007467030CF9B69B0D1E72A21C564B2437EF +:102660009E708FEE427C591743FFD783426E76A24D +:102670007D8BF6F3798CE495295D0CE96195E38413 +:10268000E25E5A2F87EC0C41AF9BBC81EFE0B8DDD6 +:102690006C6012DA39C67C58F1D92DC6D372F4DDDC +:1026A000D8DECADF63AD1B3F15EBC64F453F697FE0 +:1026B00075358F24E733D63D7BE28951FA392CBE3C +:1026C000FFB1A09BA1DF130DFD5E3AA4DF7F8C70EC +:1026D000BAD66EE5FA3D97EB7790FB0323CABD1798 +:1026E000E45E1A51EE0FC791FB1747A2C3DF40CE3D +:1026F0007F81E3C593BFEFA5F1F1C6A277AA97D377 +:102700003BD5FBE5E87D5AD0FB842847A1F709A219 +:10271000D3707AFFE11CE97D3A0EBD3F4A1B7D3D37 +:10272000FFF348F3EDC27179BF9FC5F6AB4F80F759 +:1027300012F2B52AEC68ED36B49B1F01BB0BF7878C +:10274000B0BE49DEFF9EF94DF18E32BF336CDC1E08 +:10275000BB396D0DD9637F83F1F2471BEF6DA1CFBC +:10276000C75AF7FD828F802EC5DE8CE17AB21B4CF2 +:102770004AE41B3D2B78A197EBB12B502FEDFC5673 +:102780009A8471933CBD5742BBBB448CF7589A4620 +:10279000FD19DFED547A2505DB37AB525832F5577A +:1027A000355A7F563800BE6A6C7F93579F8EE5EE90 +:1027B000348BFD26EC88EEB4AE26D4DB73849E9E6B +:1027C00023F4A151FF205BAFF5F2F5A40E4BB0C38B +:1027D000EFB01571BDCDED75AEA70D7C6C81081BFA +:1027E000C07505B673B82E46F5FDD23D86BE5FEDC9 +:1027F000C6F68AB0E3F47908DF6CAFCAED15D15F95 +:102800003C381B853DD928E6C1A8039CD70838AFC2 +:102810001D0D4E2B9DC60B6F7B14DE95DEAAF8FDB9 +:1028200001E7101EC6BC611FB83FEE6BE3F2BAA011 +:102830006F22D96BEB87ECD8C03AEC4F4F520F7B2D +:102840002988A02662BF8F08FFF1236BEFA3B8573A +:10285000F746B51CEDBA9C26BECE696B0BBA71DF8C +:10286000F84D315F563E1DFADED133696A19D1E564 +:102870002EA4CBE535DC6E4801BD81A3A1FCE3FEAF +:1028800032CD19F6E1BEB6530AFB5620FF5F017642 +:102890002A36702F1AD1FF3164DF0BFF86812F7328 +:1028A000578ED17E13B55793C2CD817369EF0C93C8 +:1028B0007D11A5A3B79CC8E51A3CECAD449F432A03 +:1028C000F9C51E137C0BF3F420C9BB3B9DFC260607 +:1028D0005D87F7CFE7AB36D02C219D134A6128786E +:1028E0009A1008A32F84D9B42E3680F65131F00700 +:1028F000FA35DD6F507F5138A64E35C3513E15E194 +:1029000088F6DF61C0F35DE29B71C263B48B4F1741 +:10291000DECEF027C4F31FECCB091E403A8431BE53 +:1029200083F3FA2B4FA495006EBE283019CB5EF2CC +:102930009B5097F073B9CB4DFA937DAA9C8C8D4335 +:1029400080D664B9E4BF1D8A4F499F279D131CAFF1 +:102950008D06C778FD17C785DCC4F82F8E7BAB4684 +:10296000682FFC17C96C202CA31F4865643FE290B8 +:10297000B9155C7ED13EFCB5E0979438F6DEAF85A4 +:102980007C19FCBDA47D262B42BFA28B853D69BC72 +:102990004CA920F9FAD04BEDF83AAB5F95AAA01FED +:1029A000D6C0C7C0CFE8F71381C710BC0EBE7F7872 +:1029B000C7CE1A9E7673FC2A62E1C9A9FD24164F80 +:1029C000033F2BBC475A42813A3BC6B582547A43F7 +:1029D000B300070E674205CD63D85E81E1E5FE1BBB +:1029E000360008774941960E70DF7ADE897FF4035E +:1029F0007DFA5D5337A11F76FD5CF2218F9B3FBEB0 +:102A0000285F58F9E18C4D7D2708E3B6CE2E6F483C +:102A1000470D159E7A651FD81EADAFF98FBBA19EDD +:102A20007BFFD42B7D2017ADAFFB1B3260C9989F75 +:102A3000AE6EDD06FAA375A1447A98857F90588B17 +:102A4000EBC615BC5E923EF74AB41F5AAF95C89EBE +:102A5000B800BEA7FAA178FEDA76BE1F4019047A44 +:102A6000B7D64AA3FA752F4AE7EB5EEBBCD1DBED94 +:102A700036DA2D951A46F2A719ED3667F07621DC85 +:102A8000AAE037676DA4875BF50F5E95A07EA886E8 +:102A9000C7E9D8E15AF20F5F9E2026A6AD96E6E977 +:102AA000A8981390B71A9CD7172E73D27AD1756550 +:102AB0006204BF3BF469DA36D4FF5D7A11499F1393 +:102AC000F8C15DC14BE4673BC8B92CEA82AF67A58A +:102AD000939D2355A6533C5C55505EE3F1DBCB251B +:102AE0006F16A03D057C7515E72BA90BEDB07ED7C1 +:102AF000C46D7E1877FD7ED9EFD4E2F3CB70BC4F66 +:102B0000BB717DB6E2F7B36A3941720FA703E07D6E +:102B10001D8E7B306FB00FE7E668ADCD76378CF752 +:102B2000C274E7A4015A07038DE9B8DEFE82AF7BC9 +:102B3000E3C06315B63F773CFCC78388C7A70EBECA +:102B40008E0A38E7C7992FD9F3B11BE143BC70DD7A +:102B5000013C36201E72FE401EEA0F03FEF1EAC958 +:102B6000BBD287F979EF4A1FC14E30F408CC7338D5 +:102B70009DDB4D1FAF67683773BB299EFEDA9E6EE3 +:102B8000B63BC6A1BFB6C78E3F5EFD15330F0F7CA7 +:102B9000117E829926BADB05D9A1AAA9509F81BFCF +:102BA0006B98E7C1069C13A37C2F9D65BD9E64CEE8 +:102BB000FF98AFD11A0CFABC72FCFEF7E5049E40F8 +:102BC000B8ECE90372F01CE6E7E9E1F3F3F468F32B +:102BD000335B3ED99A027AF2748D44F8EA67012594 +:102BE000D2BBB09589C167866B1BED8F52AA610E6F +:102BF00063E20EA9BA8B2931713A6FBD6AAA6704E4 +:102C00007CA6F6590D9AE97D76B0D4F43EB7C96F2B +:102C1000AAE737579BDA4F08E9A67A61B8DED47E77 +:102C20006267C0542FE96A30B53FFFC1A0E9FDA437 +:102C30004893E9FD857B9B4DF5C93D2153FB8BF600 +:102C4000874DEFCB7B3B4DEFA71EE932D5ABFA1F8B +:102C500034B5BFF878C4F47EFAC05ED3FB4B3FECCA +:102C600031D52F1BDC6F6A3F830DE5614994F70670 +:102C700096A462CC93CDF49EE250A7813131BF2E51 +:102C8000502E91BF18D8ABBF18F4C3D5BC09BB5A9E +:102C9000E447B1B976CAEB08C33F5C7703B1791E4C +:102CA00085D8AFAA60DE99EEB79BF2A86688BCA86B +:102CB00019967CA85A5694A2C1B8338EC82C02F536 +:102CC000B963F0D570BCA431F062FE5EC4EB973CF2 +:102CD0006F8E85F57ECC578B87970EFF10AF05F86A +:102CE00012BE9B7F96517C78189E029FF9D59282E6 +:102CF00072370C5FC6FD01567CAD71CF820C11F7A7 +:102D0000F4333FC6FF66CB6E82F7F41BA057587CA6 +:102D10003AD4865DB4AED6EA5204E966C43F87E190 +:102D2000EB63513E01BC1234B31C26959AE5D0E307 +:102D3000F78DCE4761362ABDC7A2AF06FFB8BD36B4 +:102D4000A8207D67D448ECE1C2F8F45DA098F38A2E +:102D5000C64BD72B32443C5DD0F51356B3602AD016 +:102D60004F5F90AAA07FD5AAE70CFAC13E69414601 +:102D700046FC75A731E39CEDE6C68C2F6037C7AEE5 +:102D8000FF195F60DD8175E1661C972941ED5CF6F6 +:102D90003777640CDBDFDC110BBF158FA1FD4D0D08 +:102DA000F78F1BEB182B96487E3AA6B35DE8C70B4E +:102DB000678CBECF096758F739A795D87D8EEECCC2 +:102DC0004A44BD0076423BC263EC7B3EAAF41E46F9 +:102DD00097E09DC23F18C55FEF44BA8D17EF7F1A89 +:102DE0008EF73F8D86F7C14DDC8F71F035D9BF0B63 +:102DF000467D315DEECD007CEF6393291FC688C709 +:102E0000D40719975365C75EDCFC01FC8F61BFF5E1 +:102E10005AAD74B31B9FDF46653C7EFBEEB9F3DB16 +:102E200077BF24BF3D93F105ECCD2FBEDF6A3E1E78 +:102E300084B2B59DEF87366FE1F9699B37F1FA2FC0 +:102E4000055FBC20E8B02393F3516D7235D9B7ED1F +:102E50009287F464FBFB7C9FD16197228CFB995F86 +:102E6000C1F93F9C3D2D05EDD68FFA7EE10EC6ECF3 +:102E70007BDE11F81F13F8BFFBB521FC7F4EF87FF6 +:102E80005DE0DFB0727B9509FF3C95F435EA1939B6 +:102E90008AB743EDA1BC8F39B29BF06B2B6611CA88 +:102EA0009961FADCD931FEDEB63CAE9F93503F43C8 +:102EB000DD25F29D40AB521E5327FC233D2DF29B96 +:102EC000ECBE98FC228671649E4F93C462F29E0A07 +:102ED000A3ED132CF94856BD78D2D08B0E96C5F5CC +:102EE000E2C6CE0B09AFA02F765F65D58B46FDF00D +:102EF000C0C4AC8111E4C82853AA5DADC531FA3A0B +:102F000055574D756FBDAF3536DF2E23A099DE675F +:102F100035949ADE6707FDA67A6E53B5A97D7EB318 +:102F20006EAA4F08D59BDA178603A6FAC4CE0653BD +:102F3000FB92AEA0E9FDF90F3699DE4F8A349BEA89 +:102F400017EE0D99DA4FEE099BDE3F85BF901FA06B +:102F5000E82A1DE8F414E6F7C1BE3FE79F275C8529 +:102F6000FED98EF797F8301EDA9E718D2B961FAD25 +:102F7000E5E10CCEB7F1DE1BF27BB02510A82B618A +:102F8000ACB7A5C124CFF542AF1D6E69A2F72FB52E +:102F900034D3F38A4C2E4F4ABAC8CBDF6F7BDF990C +:102FA0008CFCDB1C46FECC90821599A847779BE3EE +:102FB000146819A1BFF0F2B3305E0CBEB5ECDA4074 +:102FC0005D0C3D66B9969BDECF566F36BDAF077A76 +:102FD0005C027AFB2BBEDB4CCFAFD0BE69FA6E53DE +:102FE000DE8A07518E36FB1C947BB699713A1A74AF +:102FF000DDAC703A1B74DDBC7F05E5570ED19F7DBB +:10300000E52A3C9F61D0FFCACC3A41FFAFF8707F00 +:103010007B3815E83B0A1F8F455F2B5D8F88785DF5 +:10302000BDC31C87DF28F49551825E5A8AF47DADBA +:103030004FFE3848D88EEECFB08E6F1D17F4555323 +:1030400026F4FB9F256FDE781F1BAEAF43993CAE85 +:10305000566F830D16D83DF5F6AE7AF27B8B7DA9BF +:1030600022719AB767CCF163DCFFEB823F18FB1645 +:10307000BDFF9A312771E8A48022E98DD14352E146 +:10308000E206D4C3F5190EF2DFD58B7C01EB776B2A +:103090003279DCE4CBF2D317E623C11F061F19FCFB +:1030A000114FBF2BAC99CEC5286E078F0346E37A2C +:1030B0000F92BC7C0FE465DA7079B1AE8FD6FE4317 +:1030C0008CE7F333378FF75143B4FF8F78C96E8A9B +:1030D00047F7CD2DAAAEA0BDAF6A29742E43E47583 +:1030E00083C1EB8BCD7BFEEF6A67D48D7C436BFB9A +:1030F00010FE8AFE279F9BF04232F34348C152CC18 +:103100009B3822E4C1EFD39F43FAF97D819F101DC4 +:103110005DC152A41BD40F515D1DAABF807CCE7C23 +:1031200050C7B881AA8E2B3E01DFBD42DF2943FD87 +:10313000F451DDCDFB81FA511A277DA8DE4FF53C15 +:10314000DE7EBCE3C4F80F39DEFD32E52D7FACE84E +:10315000296940976B422BC90EBB367433959D2D60 +:103160006AED6F808E6FB704DADAA0BCE6DAA92ABE +:10317000E6C35CBB7A259546FFD7A3FCC0F78E4219 +:103180002580F11FB9D016D84DF2CBE35232983BCF +:103190009CAE6D54BF0E08BD11ECE5EB9B16B6B5A9 +:1031A000C5C8810BCF1D4DC4FD9FF297D8FD946E0D +:1031B000D3FF3333262E34169EC3F1039D04FCFA4D +:1031C000B1BB381226FE9DA98E145732F08CD7BFA2 +:1031D00081E7F071399E06BDAC7CB7A5B842C575D4 +:1031E0005429017B2B99FAE1F0795C429E78BBEB84 +:1031F000A0FF67903F15BF86FC799DD04B467CF4BD +:103200003A20D1C6B4E878BA2D909655359C8EE315 +:10321000A5533A8CD18FF3A474511CEF7EB7510F94 +:10322000533E54A098C7F51234FEDE80232B18615C +:1032300018074CAA642A3EB2613BDC1F24F5EBB6AA +:1032400072C62EFDF66357F926C1FBE2A0CFE6A7B2 +:10325000FAAB4A06C6ABA18E39DEE1C75E3D5C83A0 +:10326000FB28F502CC3775B53DF4EA91CB28FF4930 +:10327000D8250FBD8A7AAFDBA8638005F46777E2B3 +:10328000505D77C15EAABB68A81EC6FA4E910F7149 +:10329000E9B71F7AB58DFBB1A7217DFADA6C61DA47 +:1032A000DF304F84CE1BFE8DE38BDD65CF1C29C242 +:1032B000FD824FF19768681F33D3772BB21CD4EE91 +:1032C000255FB01EE1F16C1C2477C63D65691ED4F4 +:1032D000CFD1798858E681D33D501A11F1D508CD68 +:1032E000CB04DFC7E15A186F420D57E31A53B76298 +:1032F0005D6BB3A9BDF4208DE6C956DA2C3930FFD9 +:10330000A68CA9B8CEB68A787752298FE3AB4EBE89 +:103310009FBB3E8BAF736BB26451F2F535C5C80FDE +:10332000ADB751FB145146F16F13ED15937E69CC87 +:103330000DDE98151BEF66BD734B018EEEB6B434EF +:103340008CFBD6B6D9EE403BE83B22BF07E6697658 +:10335000167CD7E7F72606F9BCDD4A75EBBC09BC3D +:10336000C69AB778F365ECA3E2BDBFE65A99CEC121 +:10337000DA5CC10716C3B8B7EEF796635EF5B1061F +:10338000B9B21FEAEB9ECBA2FC827641AFF5B6C183 +:103390004C5C6F3B1FDD14C0D2B96F793857C3F551 +:1033A0005633C1B1FE402DE5CFDC9D945C83F36DB7 +:1033B00085E3D8A73F4DC77998FB6727E917744085 +:1033C000A1FF6A190917A1F506FAAB6E1076D09322 +:1033D000627EDE10F6D60DC6FE8C0D9D17953E87DB +:1033E000ADE6A2C0F27948BF150D32C33C8865D165 +:1033F000F7DC0F16E27E2B17FCC3FD5C90A5CE41D7 +:10340000F15C1E36FBB35633FF1C3C3FB4B2D3F223 +:103410005CECE7565BFC624B1AA2F6D0472CAADFA5 +:103420001669DC8E58E44F8A60DECEE280D98E7A4F +:10343000F333795900F03F86DF02DCC71ACFDF850E +:10344000EDACF4F8388BEFB3DF1076E7107D18B5EC +:10345000652B0292038F3E5AE961C57F886E163A4A +:103460002C57CAE76468C3E960C51F2846F45D0DA0 +:10347000F4C53CA378F49823CFB563BC78E54289C2 +:10348000EC3B2B7DAC7430F6E3063E3F37F064FE38 +:10349000634930DEAFB7D919DA5DACF7728A8F2D88 +:1034A00010ED62F0A17DB70AFFB81F537BD18B707E +:1034B0000231F17CE5D561BB69BFBE5AECD757B08C +:1034C000400AFA9101CF0FE2CCB369DF6E85DB8A47 +:1034D000D73CB15E58F7F74CE92D433BE64496F0F4 +:1034E0002B4F31FB3F5965C6887AD7BACF37F86A78 +:1034F0005968A1C99E965870A8AE823DB1C1276B8C +:10350000783EB8BFC1FE009A110B5D83FC1CA93840 +:103510005FB490B934B70BF9C346E77E16E8095497 +:1035200037FA3BDD25D5A35C6E80EE429417A1D31C +:10353000BE63196F0265F810D26F83CF41E3009F1D +:103540007D1CCB67F1E890E0137E8E296CCAB9E050 +:10355000DF91C548FE552FEBC578C8A0E48AEC92F0 +:10356000A27E3974653A405516F80A85BF5137C7AF +:10357000F7609F80FA731C7EBA02DF08F14823DFF0 +:10358000C1E0CF1B5CEE5E99F3DDC921FE30E53B67 +:103590000419FAE13A72D6F891DE1D89DCEF66ACC7 +:1035A0009360CF5E80E3742472FF9BA1E713D11E6A +:1035B0009431DF08ECC118BA0D5BA70FAFDADB0D51 +:1035C000FC1D742B6C2BB52A25F882AA01DFA01DE7 +:1035D000FB5916B29F8EED27E801AD5286705DA2B1 +:1035E00062B9C2C7F3365630BEFF6761681F1397D2 +:1035F00008E234E2734CAE8EE91FDB935DD619D33B +:103600007F11F54F7972C1ECC4084E8A75FC61EBED +:1036100097653C6B7F1D22CFAFC3E1EFD7D16FFD24 +:103620008A5CBE89D0E5FB95793E9B69DD59E1F264 +:10363000EA4ACC39EE0FB2DD0DB1EBB7511ADF1902 +:10364000F48CDA69D3FB62EDB47BEC957D47F263D1 +:10365000EC3456D9877E8E2F6AA7DDEEABECC373B0 +:103660006167DE75D2BA70BA9ED3C9C8C751C0AC03 +:103670004849A37D59184B572897F031F273BC9AEB +:103680005FC279BBD3A7F1FDAFC6E3D25EC54FF7EA +:1036900061DC679C2FC71F9887FBD2D46ED4D34EB2 +:1036A000176B4B48C3EF38DEC67843FD96FA25B555 +:1036B0002CBEBF7BB3EF9CE3FA9B4792A33E5BF328 +:1036C0007B77A1DDF88ACC302EB1D4F74D7A6EDD50 +:1036D00087EDF0F1F5EE2E29B8C357857AEC174B3C +:1036E000BF81FE937D4EF22BDFFAF513FF58A52123 +:1036F0007D60BEA7D2FEEC01F407CB2536B2CF3BEE +:10370000F3B9DF47DE24D17E628BE6A8DF877648F7 +:1037100066ED4F102E56AFD9909F4F27727E3E9682 +:103720005947CFCFBCBBD987E771127D8994072950 +:103730006F2ABC97EE637859A67B123A1219ADD75F +:103740001D0E5E3EEDE376E0D382AE4F8AB2D31E0D +:103750002C6D2EC37C6A9CDC281D5C4A98EE1B7085 +:103760009D55E8B92CEE07E9480C967E2D867E46DD +:10377000BFAEB320C45347FADE41CF112FFA3E8DBE +:10378000C363B47BD6C7F3529FF571BBCD75368941 +:10379000C6EB4803B8DCB1FD24F3E742CEAC72526D +:1037A000E29B7510E97F2C53FF898FF4EA801DF5A9 +:1037B000E80DBE23C7F15CF0D87A90C7233C9F4A3E +:1037C000BD13D02EAF95237717E27D27EABC4AF4CC +:1037D000AFD4DA290FA6BF34DD8371A5D715D58301 +:1037E000FBF27E31FF81D932EDAFE1276311CECB01 +:1037F000EC95D3B8BEE3F157633D7ABDEC99FE99E1 +:1038000078CE236CA7FDC83257388270C5D83F22C6 +:103810002ECDEF5DA1EF00CE6575B29E903C829DEE +:1038200028EE4F31EC4F50138731EEFE2B517DAF18 +:10383000EEA3C508FE00531DB3A4587B94DF3BB232 +:103840005AB45B1632DB4F56FB6A45A5FF25AF869F +:10385000F4E809103D262B2417E3B53B4152884F6D +:10386000EEA9FB810BEF9D7949E8054FDD2F74D45C +:103870001360272DC67B7316D4C96A2FB4DE16B227 +:1038800031D4A3DB2BEDB4BFD85E3AF0F2E5288F3C +:10389000958A46FBF2D2FE45B3E87D958A76533F82 +:1038A0000E914DED797CC8ED8E94E0FA5EF54BD724 +:1038B000CA187ED95EF9C1245CE7760A3E0235E873 +:1038C0009E3D2D4A3FA48F464A94EFE30F7F2B91F4 +:1038D000F4D37BDB64118F61743F89C7C7E571B690 +:1038E00088D7AC7C40A2FCB49555C76AF19E9B95E5 +:1038F000ED12C9E5B28DF2FBE8275F1632DB6DC130 +:1039000066B0E734A2B3D99E13F61E74EE40FE1DD6 +:10391000AFBD67B55F0AB385FD56C12A62ED9778E2 +:10392000FB2BC37E51985E9A9D111D7F85C2E3AD2E +:103930004CBF9AE83B5B3EF9F2E580DFE9CAA22280 +:10394000A4C7C3999CFFB787DE76E1FE77FBA73259 +:10395000C9F94E07183698E79F5CF338DE4B70E8DC +:103960005B1764FD1ADE5F9AED10E79DB46FD7A078 +:103970001CBC62273E8A07972B24B36290FB84907D +:1039800044A5312F9E50025362F48D479CCFCAA8A4 +:103990001C948A62F4CB15D97C3D48DDC8F7D51953 +:1039A000954CCFC6FDA256C4EF375234F297BAF207 +:1039B000B50A9457A37D86C4F3F91DFB6BF1462429 +:1039C0003601E0C0F1348003D7B9C25012D58B4222 +:1039D0005E2A278652A92C0EE5D2FB92D0442ACF2C +:1039E0000B15D2F3F3431752BD343495CA49A17273 +:1039F0002A2F085D4AE585B0CE61BBB2502D959364 +:103A00004357D1F329A1ABA9BC28B4904A7FE87AE7 +:103A10007A5F1E5A49654568393D9F1ABA85EA950D +:103A2000A1DBA95E15BA8DCA69A13BA9BC38D44AED +:103A300065756813B59B1EBA87EA9784FE89CA4BE1 +:103A4000433BA8AC093D42EF0D7BE3A890ABF9A93D +:103A50002B549E57E3F7E3FE60671C3DDC99CDF5E0 +:103A6000F8199FDE9C5D156D278BF310D6766DD906 +:103A7000E6F3B53657AF6B22EDEF2756E0FE7E2713 +:103A8000E8816C989F758545BB709FDC22E6C76511 +:103A90006FD673A5E87E3EB58E9F8359B77F39F9FF +:103AA000D559B5775CFEA1F5D91AE747254CF7390A +:103AB000EC6C6614574D28EE97B09FEE325B3DEAF2 +:103AC000F57BCA4ED3FD55F3AAF44AF43368E19E60 +:103AD0002345A4AF6655229CFBB3EDC28FA4DF8BB8 +:103AE000F233A132E3CAABE1FD84361B6D7735A614 +:103AF000D6625DAB63A4DF0CFF4B77A2793DECC9C6 +:103B000036ECBD81FBB1FDCE9CE20ABE8EF0733374 +:103B1000F29D45B4BFDCE9E895F0FC7D18363E7BAC +:103B20000CDD8FED3B563C81765451A7FF79178E03 +:103B30001FF64F45787B84DC157669331300A08926 +:103B40000FEACF632A674924383311EAE7EF0D3FC4 +:103B50008FE5A49EC8CC24282FDCDFFB3CAA8FC9AC +:103B6000BD0333DD50BFE8087B01C95ADEAFCDF29B +:103B7000407DEA71FD05746F570D046725E33C39FC +:103B800022ADC900CFCE5F31FF26A8579FEC9261CE +:103B90001B119D7F276B7E3A665E5C5A978EF4CE32 +:103BA000BB43253FCE4E652021B56CF8FC7423DE67 +:103BB000886788DF8390A70FD23CE455B28A30CD66 +:103BC000837A6529CD03E79777047FC03CF422FF11 +:103BD0007527AAB5F87E70365377C1FBF9936DA4AB +:103BE000AF1DED45B4AE187C07F49DB4D0133B0F68 +:103BF00092719ECA64A7C6A3EF3B7F27F4BD259BA5 +:103C0000CB433CFA22EF71FFEAE872FC9F51393E48 +:103C1000112BC7D67669395CFF5BE9DC6D634760C1 +:103C2000ED89390F0673084D3D39B673A2AB33E702 +:103C3000EF83AEBF117A221E5DC938CD8E9EBF8D37 +:103C4000A76FB03FC47B243DC7C88F59487A2E2F39 +:103C500087F35F6727F75F1A7ACEB9AFB617FD987B +:103C6000869EFB702CFD25F48C43F839A27EDBC9BF +:103C7000B4FE958AF9DB90A59F9743F131B3FF7DA0 +:103C80009B4DADC5F90BCFE0F959F3AB5FD7659A02 +:103C90001FAD825F83C7489E7626974570FE0AC196 +:103CA0005E5060DEE1D75E2C93CA541B9E8F36F2C5 +:103CB000B698BADC172B67C67A1E9543831FD26865 +:103CC0003F887C8AED6F147046FB9178BECE3773C7 +:103CD000E81E32E3BB6E771E7D67B48FC7B76D06F3 +:103CE000DFB63D43EB46520DB70F52DAD2888F5301 +:103CF000EA8268D9C4F06FD081FC1BCC91CF897F58 +:103D000097E5F0F8C2FF34FF56E19E1ED7A11AF5E1 +:103D100010E6D74D80754743B9AC015AA3BFDFE722 +:103D200020FDA7313E7F5A0DCF53057AF5A23F34CF +:103D30006CF3507C4E760ED621FECC99AAE2FE673B +:103D40004356705DCE2872A02669E5742FDFC397B5 +:103D5000CF7367E3B90B3511EB1BA1BE0DFD0D69E8 +:103D6000034CD4B7BBB3BFB87FA22567C66BE89F2F +:103D7000F8205BBF0BF9764356A005E1D2CF572957 +:103D80003FD3E0E3B1D67F431EA3F2A3961BF28399 +:103D9000F79B81FEDB82FD1AFDC5B367EA72B8BEF0 +:103DA0007C38672C7B268DE409E49CCB8F119FEC3B +:103DB0001A5DCE0D783B734697F72D57BC1DC6D6BE +:103DC000865FD525FC27069C093E7EFE38612EA322 +:103DD0007D8947F85783C2BFEA2A768DE15F8D98C7 +:103DE000F2090DBFAA713F8295CE3FC831E76DA29F +:103DF0003EA238EA50DC9BEFA76E176376DDED4FED +:103E0000C1F333E1A3DC8F619C77988BBF039E9253 +:103E10005F223F52D73F70B99B97C7227703DC736D +:103E2000FF22311DE0E8FB8B4CA5D5AF3A0FBE4316 +:103E3000BBA14F72455CD0FE50B99361FCADCF631E +:103E4000A37D5DDFFB12C9415F7912E5FF1D2EBF27 +:103E500098F27BAC797F46B924B87CC4BC482B7DF2 +:103E6000962C7DD18DF3F2883AD35548FB521E87AC +:103E700034F4B1D1EE3DB1CEBDE40BBE85FCE659C4 +:103E800035D8865798B5A93C0E69F05FB67BDFCB75 +:103E9000781F63F65A6E57E6B0C826D53D9CAF1B17 +:103EA0007383BFC67E1E89C6F9FACE83F13B3511F6 +:103EB000E75B9F5353041D3C3414E70B1E23F9F1B9 +:103EC000F694231F3EE2FFC193F7C2FBB94ED8A779 +:103ED000A21E9EFA6E3ADE17D558F56206D2639E90 +:103EE000057EA334FC67D6FDE8473943F104F2A709 +:103EF0007F547935ED7FE3F9D30DBF9EB12F45BFD8 +:103F00009D3A821EB7D2DB18BF51E2FB4F66E7F73E +:103F1000BFF561D3E9A427ECB928CF6D3C4F4677B4 +:103F20004A9427F35AE5548A3730BF57C4317BF39C +:103F300062E398063CF0BC64A4F866639C3CA5BCB4 +:103F40005CBECE34DAB9BF52BAEDC5461CB7B1DC9F +:103F500029F1F3899C4F97F1581A4B12ED97F937D5 +:103F6000539EBA355E9194CBF3B1FAECBD79AAF0C9 +:103F700067FA47E0CF7874396EEFA2B8D8F1D5323E +:103F8000C37DF96BC18BB346BB7FED6DE48F12C669 +:103F9000FE90CB88AF86E64D4B1F71FE8F637E99F6 +:103FA0007D783C68E8FDF204F2733758F235660B11 +:103FB000BC57899239C3A5E8E7ED5CF1808B4DC60B +:103FC0003C8DD35561A0FB163658B50BF5C3460F93 +:103FD000F90D1A967F52B569720C1DAB391D97BD4C +:103FE000B045457E6D286CCB08C78C63A5E72A8158 +:103FF0005782E067305FEA893FACFE8FE2459C2F35 +:104000005E48F0F7C2F8AE5F4EACC075DCF07FE002 +:10401000385C4F737FED1D22FE80BA2696BF1B428F +:10402000EB4C7A23E1ACC422B175A58BFC9D0967EA +:10403000157A6E95A30B72CD7264D03BDEFC19F439 +:10404000B63E37E87D7CF99652F4C775268E6C270C +:104050007D5BB433EAD6F8B81117B67EF78D5C6E87 +:10406000BF7E149C4EFCD5E008978C477E0DFA1C51 +:10407000FB74B38AF2E212717723EEEF294DA33875 +:10408000FFB10699E21289256A37E6BE34E7F27578 +:10409000D758F78CF861BC78A0C712574C28857A9E +:1040A0000C9DADEB9E318FF1E288D679DA6199A74C +:1040B000A1F8611CB931E4A511F9B16AEC7C88253D +:1040C000E23E49EBF39B87E8FED0E26930D4ED5540 +:1040D0003615F9703BFC0FA3DC54DA29AFE9AD4F7C +:1040E0009D0CED3C4F95ED71F4731F5FFED6A25908 +:1040F000A817AAEC1497E805B95F0B72BF45C8FF73 +:10410000905F759B1C299170FF2099E2BA89C52E9A +:10411000537D5E959DD6E7EDF79747703FD3C07806 +:10412000DC6E4BD557537AE1F7B78A1DD49F6B8B62 +:10413000447125D7679B0338DFBDCBBFDD40FED47C +:1041400012472AEA47831F8CB8A14BDC0BFD42C9FA +:10415000B46BF0FE82F7B6D919E5D54BD1B8B206EB +:10416000F6DFCAC2CA4CE4BB01CC73A5F8BCF0F3BD +:1041700032A11F845FD6F0875BFDB3F1FCB2E3F59B +:10418000C71AFC62E58B3772478E2BC79BE718BFB7 +:10419000ECBF8FA897B44526FD62E823432FBC2DC2 +:1041A000F07FABB86329C68BDE0A3A05FDFEF9B590 +:1041B000964ACAE7A3F3D8AECFFE6536DD5F7AB381 +:1041C00034A23FB648F015C3F87D6994CED706A354 +:1041D000F9B428CED73799F369ADEB427C3D35BAB7 +:1041E0001EFA4E2EB78F8C7503D78734375F1F6C3E +:1041F0009E28DF7FD975A26179BB3F3C99CABDD8A3 +:104200008F6B6222DDB7649577AB9E37C6B7C29DD0 +:10421000705666116FAC7C6A7CBD19D2F30E7A3F82 +:1042200074AEE50389CEB59CCED47D7980AF234BA7 +:10423000CFCE83F68F66EA3979317AB2D5CEF3657F +:10424000651B0B3E4DF674C094675B9BC7F9A0BD20 +:1042500096B73B9431CDF75B285BDF2FF7D9D10FB1 +:104260009FC7E376873DA39F13B857F0CF3DA88F34 +:104270004AA276FC76319F80BE8EFE91767BC01777 +:10428000EBBFD3F25269FCE4E9CFF4A39FB455B578 +:10429000D1FDC7ADAA42FED436B752BF9BBEE3786C +:1042A000B77BF43D61610F2DC67B49057C8ADB9CA1 +:1042B0006F5A8B39D61951BCACF0D6E6F17520296E +:1042C0004BD7915E3FCAD46B917E2125EC447A870F +:1042D0005C23EF53BE22E89525FA67CC4D71411A55 +:1042E000573EF77349FB72825FC571CFD8C20CF796 +:1042F000D9AD9E69E774CFE9D23CC97ABE7A69DE4E +:1043000008FC1573FEFD4E8C7BD66AECE308022D8B +:10431000CEED1979A160F7AE427A2C691F39DFB270 +:104320009B69A3FAADDCA21FD86FDF9257C5F300DB +:10433000F3F87EBB0DF53BF3F37E92C7E807E84444 +:1043400071DD71DCB77227F63FFCBC577000FB1FB4 +:104350002F1D3B86D3B163343A9E79F7FC148C470A +:104360001AF7C558DB19717CA3DE996A1EBFA382B8 +:10437000D777887153449C7D8FE02F97E53E13D704 +:104380005C7E2F8F910F61F4B327CFC3F7F93933D8 +:10439000F720BC1D85FC7E8E8E54F33D1DC1BCDA1A +:1043A0003D48A7EF88FEF708FEED2EE27105EB3DD4 +:1043B00080378BF637E7CDA412246D12F28943962D +:1043C00047A4E377853C19E7238DF3692BB7CBA688 +:1043D000F369C6BABAF23946EB3EC643519EE3E5ED +:1043E000BD054BD597D095F3092B7360BED7975D6C +:1043F0006F919E4969C3D7DBE7F386D65BFF39AE81 +:10440000B72FE7658CB0DE327F69AC9E35D6DB0115 +:104410004B1CC72807041F6C13FB70D49FA8AFF177 +:104420007E30D2DB0ADFA7DE97CCFD98C87F782FDD +:10443000C8409E39FFC5C8B731F26C8CBC1B23CF76 +:1044400066E85E1C4B9ECD8063A03D0BE66B701250 +:10445000A373A6598DEAA12CCC4FA8D318FAA33A7E +:104460000A597235BE2FB7F9D16F9FBA48EDB043E4 +:104470003D55637853209EC70D7BA05F477E21E1A9 +:10448000B92D7CF5A12C6897A2A9737CD02EA541EB +:10449000A3FBC00C3F735FDBDD74BF9081FF59430A +:1044A0000E34EE5F75697CDF5DCBF2C96E8FB61B93 +:1044B000BAF7EA0CA73BF73FE375A8B48FF727924A +:1044C000DD3A1F23FD748F4B0FE5C96939B33EC335 +:1044D000F686FCE07D6B4FC7F865AD79458EFCD163 +:1044E000F38A121BB93C5AE751CB17EB43969E94C3 +:1044F0008F72F3E9E79FCB31E775121BF9DF0F4AA3 +:1045000048E77A3541E37165A64AE4EF7169C12055 +:10451000C293E0AB56515FB63ADC9D123A6A57D966 +:1045200018E6CFCE12FDE80D4CFA5D29FF133A5C78 +:104530006F2AEC77063FCB02291877A64011ACB959 +:104540006D4900FF2CF72B7F96D0AF57DC5C8B7E3C +:10455000C11797F13EEE8BE3FF36F2ABA2F9643B55 +:104560008F9AF3C91E3A6ACE277BE8E897C927BB22 +:104570002CFFA1A3FF9DF964867E3A2E078FDF09E9 +:10458000F45D0C4A05F76D8BA1C746F25BFA886EA5 +:104590008B049DC37F013ABBA2743E6EE7F7A52C46 +:1045A0003EF032D1D13E9393DAFEAD94482BD9251B +:1045B00011EAFF1A57D76C8C839F720C4EC1714F52 +:1045C0003DF7663EDA8BEFDEF591079310DE53067A +:1045D0003DF8FCC38DBFF020BDDEDD2893BD7383A5 +:1045E000D80F2C6BF96C1AC6436E10FCF46FF9FAF5 +:1045F000E2FC18BB8E8532689DBD3922D396C7D0A8 +:1046000063B7EC4D12CCC6EBB7F6784D75637DBD44 +:10461000D5C9FDD2B77CEF902317E0BF796F2AEDA3 +:10462000973F14719A0FF7E577A35EBE3FDF26C66A +:104630000FDC989FC1E142FBE4BD034ED64B7AA943 +:10464000DFCEF8FE79AE94C9F32BF1C70AD74B073A +:1046500093A8DFD50FF0F560B9C6FFDE41F0C0CDFD +:10466000A4F7AD70AF7EB7E7A51C806BF5167E4F43 +:1046700008B6DF08F3130C717F97152FEBBAB0B2B1 +:10468000E73607CF0F2E9B837AEC934E89F498750B +:104690009DB8E9C03DD4DF2AE6EFAC01B8567759A2 +:1046A000DF5FF17B64EE9B2CE7A0ADEBC7D67CB15E +:1046B0008F9FC62EFE1CF44EABBB2865B473B71F8C +:1046C000B670A1FC438B8BCA932D2A958BF339DFEF +:1046D000DEB2FFD04BB924D6FDD370DD9DF7F22CAE +:1046E000D7752CEAB750BAAFEE7D4443BE147E575F +:1046F000B15F6914F4B733EEA76847BF05BC97559F +:10470000ABBFFEF54598371076F3FBA70CFF4523AA +:10471000D223260FBA710CFFC593F962DDBC18F0E5 +:10472000E67F4FE2671A1B7BDD8C877FBCEF6E8DC7 +:10473000733FBF211F8B85BE5EB57B6107863E5AE6 +:104740009FFB7D01DDA725F2EA64411759C435645A +:1047500066C9A30BB337580CFFDE8497404F1CCEBD +:10476000A706BF3037FFDEC55C9BE8BC81C19F0751 +:10477000B613FD0CBEC1134536D439ACD767AB1E9A +:10478000FB3C02F09FA9FE47FB4001EA899B2CF706 +:1047900090FC511A795FF3E3FC22EE1FD5F439B88F +:1047A0004EAD66810E95E8C0FF1ED8874AD74B777D +:1047B000A27CEF9618CAD5AD3FFAFE0F512FADF986 +:1047C000BF0F24A35E3AA17465E2786BF7B427E3C8 +:1047D000F9AD0F9570327E7F22C2F59375BCEC0265 +:1047E000C9C84F774BA037D7E1AFC800ABC2F35170 +:1047F0002FFEBF3D76FA3B7AEBF73A7BF1DCDCBA71 +:104800007D9C8E507F9FD73713BDD6EF37CBDD9A77 +:104810007F792053E3E75A7305FD725135AFDB6DA5 +:1048200027BFEABA3764BCC68FAD6783849FF57B28 +:1048300084E32CCCDBFA1E79B92365F87BB0641CC9 +:104840002857EB85FDB87E1F9FAFF5167BB1298EEB +:104850007FC65520E45DF03DD087EE5B08035CFC2D +:10486000CF6370FDDCFAA453C7F8D189B7B3BAD1CE +:104870007F7272F7ABC95259540E8CFBF04EF64C56 +:104880001C555FFC51C8CB90FE17EB8CB61F00C4C3 +:10489000B3040778B9D6DE9B7C29D0676DB7DD1FDE +:1048A00086C76BBF2FEBB875636F39C91F77CBF71E +:1048B0005F3C7609C073CBD3F6F4B91C1D37EA6DA3 +:1048C00063DED623BF5744E769CD0F5E74E0DF098E +:1048D000C1E7981F6FCCD72D4F1F72A0BFDD4AD7FD +:1048E000593D871C5CEE2CF3D6F3FE1C5C975B9F56 +:1048F0003CE340BE387150625985C3BF6FDAF36A3A +:1049000032B633E66D681E87CD5FEFFC672BA91DBD +:10491000E5758E358F1FE21F1CAC227E7FEA591889 +:10492000BFE96DA71FF16F7AEAF664C4E3F74A3373 +:10493000E7FBC7DA33713D6EB28733552AF9F3A628 +:104940009D5F237EBCE9F5AF65F2BF17A867A33C66 +:10495000039ED988DFEA4717137E37B220F163D36D +:1049600063FC1CDA270AAB7F7A8479DD21E4E6F761 +:10497000BB9C64ECFF1E8378A88F7FCECFBB3276C2 +:104980001BD921C6B978D2D050FFC4C5E7E9C60209 +:1049900023FF8BEBB7F5A2D5FADD9B49BFFD215F65 +:1049A000CF42F9073A98F49CFCFAEC2CA117296F36 +:1049B00098BE0395310B9F63FB7EBB9E30C5F49D73 +:1049C000F063F1F1EF10E303DC89D24550660EE5A8 +:1049D00037F4231CEB24FE0DF20FE6C7F61670BB6E +:1049E0007E48FE776FE1F324E4FFE337B85E5917A2 +:1049F00059584F7AA1DFDE9B85ED22871649A4170F +:104A00009CD173FFB172BDDB2EE4DAFC1EE052A430 +:104A1000587A1E94683FB07E1FD7DB37DE0FED63F8 +:104A2000E438CA2F8EE8F3C2A85C1AF1819B2CF1FE +:104A300019A3B4EA857B0ACCEBE1507CE1D18C511F +:104A4000FDF9865DB6D61E79E26194DFB79C64F706 +:104A5000ACFDBE9DF2C5FFE37B2F1CBB0EF8FD3FF6 +:104A60007A0CB935EB5BABDC363DB3988D24B7FFE0 +:104A7000911E6023CA2D3C1F516ED3F93D327F3306 +:104A80007D2BE6219E9CDE1447DFFED0A26FC1CEB7 +:104A900048B914AA7FF8EE2D13506F5AE96BD0D5A0 +:104AA000AA3717146823EA4DF87983C5D0D3A0A399 +:104AB000C1AF6BFECFAD34CE101F1BFC6AAC63439D +:104AC000FC6AC5DB4C4FEBFB6FE21F6ACA88CEBFA6 +:104AD000FD6ED847637EDC73329D073BA50D26E350 +:104AE000F981F604EE3738A58A7A2AAF0F66383A8C +:104AF000507F18CF0713F839915381C1E4D498FD42 +:104B0000DCFB07E464F49B0F44F8FEDBCA87A09942 +:104B100069FC01B13F9F2DBB0B42B8FFEA9A588157 +:104B20009180D36D76512FE17F8743E4A39C12E7F8 +:104B3000C04E89735FBF65816397923DA52BD940B5 +:104B4000CF951C55D6F4726B32DAE32B0FDC42F7AB +:104B5000B4ADDA66A6C38DEEDD64AF7FC23652799E +:104B6000E3FDE6F38D6B847E6F7AD4F2FCC055C40E +:104B7000476B2C7C14147E482B1F7D6EC867392B25 +:104B8000E7FB649E57B241E8B5D972D98206A0FF0F +:104B9000A92332C58B4E1F905907E2FD3D7EDF13DE +:104BA0000BF33C8475C0CFB1FECB93C867E70FA76A +:104BB000EBD0FB7F7D77DA9DD064ED0FFF7DCA23BC +:104BC000509EFCE15BE7FD18EB3F7AB3E0DFD9F0E4 +:104BD000F6B30EFEF906D45FA70E3AE9BCE9A98345 +:104BE0003F2DB813EBCF3AFD08E7A9BBF9FE387C9F +:104BF000D043EBFAA97C6E0FB63E7766CA00E96334 +:104C00007EAEFB82093C1E72FAC05F7F85F7EA9E8A +:104C10003E0058A13E14FBB1F5CF26D0FEFAD47366 +:104C200067A6C5FEBD902F8BCF3A11773CE5610D8D +:104C300098C7732A95FBAFD6FF783AE5F9DFBAEF4C +:104C40009003CF5BCCFAC9675350EF9C7A86DB1395 +:104C500060EFEE44D3BB6A42E7BD76A0F31FC5DF29 +:104C6000DD3C3AE1C8028CBB0CA70BA7C329A0030B +:104C7000E2057469427D198F1E73FF6EE9F1A71B6F +:104C800070FCB5072EA673DE51BA483A7FEEA17CC0 +:104C900024C09F3F3F78660AEEBBC7C277CD049E13 +:104CA00057F8BF05DFCEBF5B7C39BFAB133482CF73 +:104CB000CAF7C3F9FA475FA7FA531E3FC13B4E79C3 +:104CC000DFFBBF8CBF5FFAFF76BE5F16F3ED51715D +:104CD0005F78EAB9CF0AD839E0FDDBBFDB791E1D6A +:104CE000EF213BC7E67755027C6FB3C8E25A89AC27 +:104CF0000FB23B5ADD3CBFBD7F5121FDDD2C26F6B6 +:104D000015F325BE3EAB1ADF4FB4321BE5DDCC4FA9 +:104D1000BF91EC89F9FA76711ECE46F0F4A7573FA1 +:104D2000B175847DD4025D26FBEDE826181FE8747A +:104D3000D463535BA1DFFF02FAF6AB5000800000A2 +:104D40001F8B080000000000000BB57D097C54D5C6 +:104D5000D5F87DF3E6CD4CF6C906892430938D0451 +:104D6000020C214080A813364321306187049CB097 +:104D700004C440026EF89536036189166B80D0D268 +:104D800096FA1F90525ABB04C54A2BE244A80DD68E +:104D900025566C6D554C9522224A14975169F9CECF +:104DA00039F7DECC7B9320F0B7DFF083CBDDCF3D4E +:104DB000F76CF7DCE54D73ABFFB4C63236CB7BDF67 +:104DC00047EA6008DD93DF63104E4D6A9BAB40FA03 +:104DD000B4222B0BD818FD2EC3DFF9CCC202B922A6 +:104DE000EE646CCE5C63FE6CB637D95C08E1728D04 +:104DF000F915682FAC7C673F3B63C3A11EABDB6436 +:104E00008FC6541F63C98C692697AD10CAFF83F9FA +:104E1000679540D8C058690BE437449B184B62AC87 +:104E20007DA673AFAA503336D68B312BFF3FBBD153 +:104E3000A150FD06662A6DC9C714939BCA2715EDBC +:104E4000BF9F9769C7F25379711857F51406E39A13 +:104E5000EA7E80C66BF56E69A790997D1D1C4EE5B4 +:104E600032D55BC3D808C6EE12637B713DC007E341 +:104E70007A31C6646F705092C33C02EB6197802711 +:104E8000B71A403C5ADDAA3B22D6D01E8DBB0B9FE1 +:104E900002DFD78BD7F0F9B91A9E131D76C24B38B3 +:104EA0009E4361A5FDCC40182CF3B2CB518C8F02F0 +:104EB000F1847DC2F826A85009DA7F699FE2475C39 +:104EC000BF54B478EB508CFF4A7161FEA7C5C398FC +:104ED0000DC6FDA2C60E2B7150C7ED76D847607B7C +:104EE000BCBE52F4A72F148033AEC814820BFEC68A +:104EF000BB230DE34A2C4D30C4933D3718CAF79EAF +:104F00009B61C84FF50E30E4F7595E6088A7D78DD6 +:104F10003694EFB776AC21EEF47DCB503EB371BA48 +:104F2000219EDD34DF50BEFFAE4586FC3CFF0A43C8 +:104F3000FEC0036B0CF1412DFF63283FE4F00643F4 +:104F4000FED0C0FD86FC616DDB0DF1E1ED3F3694D6 +:104F50001FF9DA5E43FEA88E5F1AF2C79C7DD4105B +:104F6000BFB1F30F86F237079F31C44BD89F0DE5D1 +:104F7000C7D95E31C427D85F3794BF25E51D43FEEE +:104F800024C7FB867C39FF93732F1AD2814B990F6C +:104F9000E861054F6265AEAF0CED98990790CF8040 +:104FA0006AEB28B4B1260A23590B85D1C0B6185E26 +:104FB0001AE4FDA103E4057BC8B71989EBC5519F2D +:104FC000F7F50269BE543C23CE4B74ED6648B7D367 +:104FD000F0BF0E086DD13E15F9CFC67C11058CC50A +:104FE000065516180674185428B407A3582011E85B +:104FF00030184161423091D21383F1142605FB50E1 +:105000007A723095C25EC14C0A7B079D14A60407D4 +:1050100052981ACCA3F086E030AAD7273894C2B4AD +:10502000E0184A4F0F8EA2B06F701CA5F70B965078 +:10503000E8084EA6D0199C446146700695CB0C96A4 +:10504000539815ACA0F4ECE03C0A73828B29EC1F5A +:10505000ACA23037783B8579C1DB281C10BC83EAD1 +:105060000D0CAEA6303FF86D4A1F14BC97C2C1C1EB +:10507000060A8704D753E80A7E8FCA0D0DDE476102 +:10508000417007A50F0B6EA3B030F8134A1F1EFC2A +:10509000118523820F533832B887C2A2E023148EC1 +:1050A0000AFE82C2D1C1C7A8DE98E0410A8B834FB5 +:1050B00052FA8DC1DF537853F018A5DF1C6CA5D0D0 +:1050C0001DFC33A597044F503836F80AA58F0BBE48 +:1050D0004CE1F8E0EB943E21F8770A2706DFA1F0D7 +:1050E00096E03F292C0DBE4FE1A4E07B147E2B7887 +:1050F00091EA4D0E7E44E194E057945E16FC82C224 +:10510000CBF8BB1968A3583BDF258F33F0DF2EF9AE +:1051100067BA0C218B4E804185CA8787526E6E8B91 +:105120008A25B938751D978B3F8CFAF038C9C9515B +:105130005607D749BB881E2B05DD6FC27F52196BFE +:105140001DF56E5A07E8A7CD25EFBC7107E827DFEC +:105150006A2BFB192F1226772F457744F30C3BA4BB +:105160002F1074FD52D1B164600AB6B9A0A3C60372 +:10517000ED3CE0ECA8C4D0EC54489F7E25F4A0C9D7 +:1051800069A278C2602EFF2B5767C779512F265D21 +:10519000DBF84A1C5C3FCBF29BB2793B2CBAB3AF35 +:1051A00067D0B5B773ADE53E8F881DCC407EACB5FA +:1051B000F1F09EC8D8BD187E1ED1D78F7AFA8CC365 +:1051C0009BE204787C6319E1DD772AC6DF4078AE84 +:1051D0001B42F05C7B3BCEFF523B039CC9576F8761 +:1051E00099DDE63298BF0A317F6F689EB95550BE8F +:1051F00023DDE4DA004915BE6553508F4F502B79FB +:105200007A9AD945B6845A49726D11B6A9C39FB529 +:10521000467BBB43275F2B406E96809EAFB813EC56 +:1052200089C1DDF33BDC8CECA62D358ADF87E5D226 +:105230004C54AE8299DFEE907218D2D7031DE2383B +:105240005E5F0FF4EC0CF5E7ADB9E53D1CAF976D73 +:1052500025BBC38BF574F6C5DA37D66F3CAEEB6F62 +:10526000B2332609F9898D64232FAB21BAAE107DA4 +:105270006DA9515D0180E7E249D585F163C916A6A4 +:1052800040BC63A595FA658DC9C427AF27FF2EDD05 +:1052900001F4FA79BD6FE3718DB12A90DB6EE0EB1A +:1052A000632BEF4941BED8B2E9A0C662108FAB199B +:1052B00086217AF213DD76A4338B6310E277B599F9 +:1052C000E83E97A591BD28E64133395A02305ED6B3 +:1052D000D7E6FA19C45513F3A29D29DB7941F08F63 +:1052E0000CDF32713CFA3628FE9F019C5B2C75B9AD +:1052F00009F9A4C0986984985F13B6CBDB69B370D1 +:10530000BA78679B73EF06C560074622DE2A98D1FC +:105310002EBCD7192FECB116CD03E3794761735B2F +:1053200004FF2B927E32899E2CE5905F916423FBD3 +:10533000B214FA37038B553495DF8EF304702E9731 +:10534000F55480CBABF07ADE7551EE3C98BFEF3A66 +:10535000B97CA8F0693E3D9D680A8797C1FCFF8C27 +:10536000E8D85783F18AADD68CFB9D3A38300FE4EC +:10537000E629D1CE3B8AC04B3AE3F5CCBC1DEBD637 +:10538000783FDADD15496682534B772FF44423FDCD +:1053900079084E66EEBC0BE97D719A9DDD0FF8B77A +:1053A0006E5CED46B956B175FD6AE487AE719999A8 +:1053B000D902FABB8AD927A6207C5B15979097A1C2 +:1053C000F101DEBD5B151ADF3E21074F6F5238DD5C +:1053D0003FA0F8D15ED8925E3717FB6766CF6B7F30 +:1053E000D3F5DB45E7D82FD279D313F72864B73349 +:1053F00037AE23BCD83FC071ABCAEA10AFE178F337 +:10540000C27C217E5F12F838FD9D181A7FF77E5D01 +:1054100096F24121B825BD54AC8B71470C0E8D7BA3 +:105420009302F201F1F98095C65981F00C0EE1E189 +:10543000EFCE04EA674BFAC4BE8B7A8007699BE91A +:10544000E8259CCE349398E7BE8CE858D2BDA49B47 +:105450003641EF327C578C8B613B525EA8982EF41C +:1054600001C81FA4D75BF4F9D0EE2D69AB19F21D6A +:10547000F1CD68C68EEFB9E8F1417C8953E8154754 +:105480005D2ECA49D93FFCDCC447389FD07E45B465 +:105490008DE6F3A4E83F1C2FE17AE4892E3899D7F2 +:1054A0008274C1389D3EE17450BA77AB95E850CE16 +:1054B000EFDBC85FB44E74F7A579B10BBC09FA6E87 +:1054C0001674D48CF58763FF40FF28E7B75989CE5F +:1054D000E57C84AFEFA4DC3F85EB56687F2326E9AB +:1054E000E4F76702CE632A5B8BF9E1E388CE3051A3 +:1054F0007E2BE647F794CFEBBB057DB24B903E8207 +:10550000D6C934DF5D7A2283CF9F8C4F8C3179FCF2 +:10551000507EF20F818E7BE8775C266F77F2832DC9 +:105520009FFC05E9638E85E4E2CEF55C0E85DAE545 +:10553000789926CA337B02C9EBABE9F7536BD508E0 +:10554000D4674DC1738FFC16DA8FF05848FE47B010 +:105550008E477E0BF3CA6632EAEF58DC058AC74EE7 +:10556000C9285021DEE4CE501601BCEF897E65BB10 +:105570003B8A4CA5FE682C3F2D7509E43797CF5622 +:1055800096E8E04C36C7B971BCADD669A9CB45FEEB +:1055900072C83F3AFDCC40D42BC7E6D8D769008704 +:1055A0006D0AB3E3942738981BDBB339580496C7C8 +:1055B0007E97EBF0943085E7B7CE9898BA14EA3529 +:1055C0004DD9300AEB35975B22B200DE1DA5BE2215 +:1055D00055479790EFC375F996F14059308E88B4CE +:1055E0008275281A23CCF56D4EC46F3173653B105C +:1055F000BE7E8A570777AAC0AB3B8BF7B7C5C1FD04 +:105600001F32FFF64C4E1F7B322D848F6754FB25D3 +:10561000ECDF37CD6447BEB84F71A422FFDCA4BADB +:105620000A31FC3093CB0BABAD5F31CA1BA90735F8 +:10563000214335DBD6765C276921FEB55D16721CE9 +:10564000F951137CD42CE57C2A971BBAF292EE49CF +:105650005F68E32D1928F7676474F123E90D6A0781 +:10566000E0D166329277DB647BB3A4DEF028A8D762 +:10567000A4DCD766829E80723B041F31E649453E1A +:1056800095785826E861479A679E87F4B05DC1FC1B +:10569000ED8A5D49007C2D14F9F1C827245FEC0ADE +:1056A000D965A29CD4CF8D37323FEAE7C62E79C0A8 +:1056B000E1B58871839E6258DE32C544F2C352CC94 +:1056C000F59765BC8FF4C57D424F6B293A7CB0D00D +:1056D00038BE9DE1243876CEB2D078B7A5DAFDDCAD +:1056E0007FE54915F832A17EB5E21204F0B32DDD55 +:1056F0003E8FEB8B3A86F8D82EED003323FC101A40 +:1057000075F3A26559B89FC9DD41F2562BF2911E7F +:10571000D166FE8EE4DCF6901DE1B6E0B884BEB43E +:10572000945A48BEAE17F36419FF3BD233E1E390BD +:10573000FAA46BFEC2E6BD9BDC0F8B3F586E49C5D9 +:10574000FE76C2BC90FDB231E578562F32D9843D49 +:10575000DCB46B4921CA5913437B38C6534DF6F06C +:105760004EC5D79685F236DBC4502EC06F6B979F1F +:105770008DC7A3D988101DAF5FFD6E5906EAFB7275 +:10578000931DCBC414AECEC1F9D1D22692FDFA3D01 +:10579000B00BD14E1E949941E37DB06C7B29968F5E +:1057A0001E6A2239D4EC793B06F9F069A107479FBC +:1057B0006D1F1707F98953EC05C8D7327DD4E980EE +:1057C0008AE909A53C7D4C59132CB631EE23FC3FE8 +:1057D00058F2D7B29100776CBE99FC633B9540A319 +:1057E0008AE3B891D13A2F6E7CC03E0EEAC7A7F18A +:1057F0007EDDE303A523317EA7CA14281FFD415295 +:1058000009CA8D314A3C870BFFB98186E8435F4A5C +:105810008326E2BECAF2E56944DFA45F5B33166FFC +:1058200043FD1ACF9A2A91CE5896D58E7C8A78B6A7 +:1058300025D0BCB1B9102E00BA447BE6D98C0CA29D +:10584000CB18330B98408F99A22A5370FC6589DEE0 +:105850003AA4BF5224B902CAB7255279C1CF6AA56A +:105860008BFB5B8C7E51C99731CF28A958BFA98487 +:10587000D35D74A1C5E0EF89CC37C66D59C6B89623 +:10588000668CF7CB34EACB9D824F657F1D42CFC932 +:10589000F0698BE34E1CFFD39131CCA7609CF3B928 +:1058A000EF4333C92DC65CC5337472649290A3B2C2 +:1058B000FD536BDF7900F55393C761D2CB73A97F9A +:1058C00092843C09D77331A27F89BF6EFA50E06F92 +:1058D00073FD5AF64E7628DD22DA1B7ED2DB10935A +:1058E00084E37790DE93F99F8A7AAE1CF7A7197A42 +:1058F00079762C4F710ED2B7CFF542428AD7EDC6DA +:105900007CFBF4ABACBB3710BCD24E09CF1F9DC99A +:10591000C7E3BE8A9D9194797D76C6EC4C8EC7AB69 +:10592000D91949A25CC575DA19E3D48E8B4EA4FF50 +:105930007E26E2B72D69DB59950E8E45427F16A073 +:105940006CE7F41CE7ED69BE4418BEBEED9F196D0F +:105950005CDF5EA5BE5CBF9EC4FED0EE758D3121BE +:10596000DF24083FCF1B93B6DBD0AEBCE83291D327 +:105970003C1A191AE5D2BD2AADD701FD111EDDFA78 +:10598000D61654993B11E806D7C310FE22C341E353 +:10599000B0399A18C26149E172E84AF6A59CAF2B6A +:1059A000D997AAC84FCAE4F829B57AF9FAC55E6052 +:1059B000A02725CCBE94F89772F2C9F36F7F6F08C9 +:1059C0008C23792697931D08A7AE7CF24C5731C9DA +:1059D000914B80451D3E264EE2F4130E97B43BAD2D +:1059E0001946B8C2CBC58AF995F0CBF663854C99B8 +:1059F000380ADAEFA19EA43759EF5470F4274847CC +:105A0000B1491CAED899756D14CF6224D7B5226EFA +:105A10009F8DEBB7C61699CFE96C4534D29595DAD0 +:105A200091F47593DA331F5C167846FB4D25FB8D98 +:105A3000D9910FC04EBB847622D8692908F726A1D8 +:105A4000EFBE14E57BB0D72C647F75B7D7B85DC2C5 +:105A5000AE60A7392CB4AE6F14E36E14EB7FD05355 +:105A6000424E1AED36690749FBADCB4E13F610FED8 +:105A7000B41121BBC952CAC82E9176D6965160671F +:105A8000A1DF446111A4D7CB4C7C1D6F76933D1DE3 +:105A90005BDCCB85EB71D9AEA588DB7FFF6D7BE44A +:105AA0003E05EC2E98E30704DFC4336E2FC32F1599 +:105AB000F94CBF6ED0AF2B50FEA1DD952860689DDC +:105AC00053C71C906E9DD2C4DCA8FFD15EC775C3BE +:105AD000A51D819B713D30657A168EF728F203A4CF +:105AE000474C312958DEEEB6177BF343FD1DFD32DE +:105AF00032B55A471F47C79E19B604EA37665BECB2 +:105B00008A43372F5F44929D3C2E3327D5A12BFF2C +:105B10002F41EF3B667AC97FD2E8EC45EB2599FF30 +:105B2000B1909F0F96CF263BEC99A87A920F6447CD +:105B3000A1FCDDC8FD3DE1F4F98AA86715F8682EDF +:105B40003345D8685D3496D645AF644610DD349948 +:105B5000E314ECD7EAE6E36F9DE19887F64B551125 +:105B6000B9C5717D635906F97FC98CA4F662EDD27F +:105B70001EE772EEC1925E7BEED7F91BDF14F4D8FC +:105B8000A474A6E03CEDD4A4FDEA3A81EB9C9DC947 +:105B9000590548270FDEF883B98B505F7E7710E9EF +:105BA0004B59AFD2E97D2313FD756367EF5A02E9C4 +:105BB0006A464E5F1CF70342FEBE69676694B76F84 +:105BC00082B05DAF60FB9EF62C08B59B3EBB6B912F +:105BD00083EA9FCE4C36D45F88F42CEB0F747ADEC8 +:105BE000C5FCED936693BDB463A62315E1B0382CD4 +:105BF000C22CF5A5607CFB0456703F0B8DEB88989A +:105C0000A78F33793B0F966F4E41B88E663AC478B2 +:105C10003D820EF93A65BB7373CA228033793C9793 +:105C200037C9420FC37AD38DF3F6E0AC1CDA07C74D +:105C3000F9443FD011315F4785FCDAE1FE38652930 +:105C400043FA7110BDCB7E24FDC7A33685300EE725 +:105C50005747DF3B98FC398E74221DA6DB8722BE96 +:105C60006B85FC899F29D6C1D6389ABFE6091EBF2D +:105C7000EAE47CB294E0FB8CF0D23AC743F49E2C69 +:105C8000F823A294CF379B69F1673BF57C32369BB2 +:105C9000F804F8C04B7C92A1207D4B78134A3B1E40 +:105CA000437F406B7F8B1DD17393CAC773ADF6C022 +:105CB0005BC46960B26479FA66717FFC605A07AEB2 +:105CC0004B247D56696ACDAE03382B3704280CAFC0 +:105CD0005F0AB6763BF7DFF5423A6775A3497FDF87 +:105CE0002164CAC5ADC3E3D0FEF7C6F2728AD93BC0 +:105CF00012E3A5FF593CD282E3FD470C4379BA2059 +:105D000093DD3A1DD26F55383C0B1A2695E27A6B1B +:105D100044169FB797EA6182FB33F672BD8DB98155 +:105D2000395FA9B753FCD5FA148AFFADDE41E1DF34 +:105D3000EB73293C6DE17A764122BBD5C3D7B71608 +:105D40009427C5599CCE8AB3E4FAFBCE14D0240024 +:105D5000CF2BC34D769C827ED327C05AA443E376D3 +:105D6000F434B78ABAA64BBECE9D19457BB6325ED7 +:105D7000E51963C867B9C342715A1F7339B2A831B4 +:105D80007E2FAEFBE74D4934949FDDD8C7109F911D +:105D9000C589B9BC34D3903EBF72A0215E1504C53D +:105DA000310CC9B088F60FEE14F60163451CFF767E +:105DB0005EF693BA91BDEF81FE3F795EA3FCF07968 +:105DC000386DE174E7FBABCAF51AA4E3BC7CFA5A60 +:105DD0003A43784BFFA3D2FE03FB25F7EB2DDEA55C +:105DE000301F0AF94EDF42AC77E71EAB0BCB2DD943 +:105DF000A5322FC283461AF477EEE5ECBDF7D3BC8B +:105E0000FA1EC2729D506E2F649DD5980F49737112 +:105E100087684729E883F83F1BCFDCF16042BD1754 +:105E2000F146CE3D00E707654DD526A463F5F9643C +:105E300013D4FFE05195211FDDB6FAD51176C0EBE2 +:105E40008A675BFE5A04ED9D6E52991DFA7BFF80B6 +:105E5000750FF71BB87BA31E0E8DD33F18E9F2C652 +:105E6000BE9EFFC9027E3957ED1F4CE73CD6251375 +:105E70007D77C7078C1FF509D225B4E7BD3BC686E1 +:105E8000FBF68B3557AFA144477C5DE06385A9AC39 +:105E900008CA6FD54AFDE45F714FC5719E6E4A34E2 +:105EA000F1F3348F125D2D323B2CFAFE166D5549FD +:105EB0000FC064707FF736D50BB632FC9A78BB8D75 +:105EC0008A97F5EE3E8F77E0FE13B47F477A24F988 +:105ED000CD17621F3DAC5F3E04DEF15A43F1154F12 +:105EE000A964CFB142C783C5B81FBB6FDC7094579C +:105EF000CCCBDBFF2441D2CD46EAFF6337632938A0 +:105F0000FFFB62FCB83E3C6F7AF49419E661A8D9B5 +:105F1000BB0FE5C3F2A9BE871460890B47DEF9FE0B +:105F2000182877EED79A8BBB5FDCFB11BF382EE4C5 +:105F3000B34566A1C7D6F2FD2A66F6EFFF31DA391E +:105F4000FFE85DA0DF5708C993F5DCFE97E5010C7B +:105F5000531106815E0AE0D1EB6013EDF9E8AF6FF3 +:105F600011E774FC54DE814002FEEC351002DEDEE7 +:105F7000191E733F1B02F315B65FF58EE0E7235938 +:105F80005C0F4AB9F76F115F2CFDFE47C5FE8E8F7F +:105F90009D443FCC72C6F1532BF6F796D7F1FDC85E +:105FA00017B2B89FA4B6EE9677A57D87F3733BD062 +:105FB00021CE7FB53DFECE7688D71C8870F9A17EB4 +:105FC0005436E76B68CB8E78BF4D54792EF70E0BA5 +:105FD000F6BBE271852562BF7EED34DA6336C028F8 +:105FE000CA8F73C0B64509D89E42EDD734297E3C8E +:105FF000C7B48C7506D06FB2F2578A2BC09BA2F340 +:106000005E4B45BB2BCC0FD079AD15B90AED67B20D +:1060100003D0AE4E2EAD6CE1FD487952CBCCA7F546 +:106020007EFAA5C28E5ECABAEC437EDEAB89EFA7CC +:10603000D8986D3DB6E3898A21B85634F17DD110E8 +:10604000FC2ABB0C38ADF6FA9F9D4A78505C7ED690 +:106050001D8E65CC333E1EC701F9014777B8C2C714 +:1060600075AD7056BB5A895EC2E1D5CD83433F0FF3 +:10607000CB58FB66A4AB6A1FA783EA23806768FF3F +:106080005F751AB3C4113DB4678DE84E0F00FF541D +:10609000948FCB9A55167086E843D2C56D07FD16CE +:1060A000B45BDE674DB1D1C04735BB0ECE1E05F5E2 +:1060B00097ED7ED982FABC3221906D026323C9B775 +:1060C000797BE98D217ABDCD6FC4C3ED078CF1FFDB +:1060D000169E98389F47F5003F4BF7A9B47ED1959F +:1060E00033ECDB2CF731DA9F5E7E5275A1AF63395A +:1060F000E8B7C482EB8757E2EFFF1AEE70FFC4984F +:106100006CB1FFEE622EF44F7CCAF2E3E660A6B0FB +:1061100077AEE49FE83AAF10A66FDFD0C0BE8079BB +:10612000FCC4EC8EA3FDEE6E727B646FD43F525EB6 +:10613000570BFD29DB5F8A7A13E267763D168B7673 +:10614000E1BF9A1FEB85E132D44BF921BD74F7E230 +:10615000403AEAF1BB9F88702189B2298157EF85C7 +:10616000F8070755D6933C7D2BDD3B2F1BE5A9D0C7 +:10617000AF2BD53D7DEDA84F857CBD9A5DF84DC711 +:10618000B908C7392CD4EE6231CEB71BF9F8DED985 +:10619000CAC7BBA4DB38C1AEC0713E6C75A1683FF5 +:1061A0001B1120FD7F16C6D9A0B31FA4BD20C7F7C1 +:1061B000296B7A2800F92BD7FCED9419E8E1B69CFD +:1061C000F6C1C88F95DBAC641FDCF6788C9F41FC70 +:1061D0009C52D29BD611C703B188BF158F72FC8524 +:1061E000E0E8B2177CD9C93A7BE11AF1B64A9CD7EC +:1061F0005B75E44FAFA1FDAAB8A12AC0BBCA161DAA +:10620000207A3F6C3C5FA5385006E07AD365B3E155 +:10621000FCA431073F1F137EEED4EC3E0373518D77 +:10622000F500FECFB23F5AB886F8A03307F56D6D82 +:106230006440EB8D76D641C5B517F9EDCE92D812F4 +:1062400086EB7F7E6EF0A16C6EEF2A6E375B5B4053 +:10625000E7FE5824F4BB47C843C561679588CFDD86 +:10626000D07F4C08EEF0743C1F6C433D196DEA7111 +:106270005DDC2EFA59A99AC8EEAEB170FBFB82F034 +:10628000B7FC46E4FF269BDBE187B2F97EF70558B1 +:106290002EE3BC5F9860F5E3BAB3DDC2CF4BBEAC72 +:1062A000B9777D07E6CD93E37D0CE7C3638A5E8013 +:1062B000FCBE216AB086F273637C753F0C17B27620 +:1062C0000DE7756A51B9C30C7838D5CBE652B99F42 +:1062D000C6C3E47902079EC38C6EC4764F21EE607C +:1062E0005C15E2FCED29E81FCF2D9F4AB5F81BA0F5 +:1062F0009EEF292BD9135B22F9F948961467467E45 +:10630000982FE4D482F1B0A2079AA918BFC58321BF +:10631000B4E76380AF4A5BE7A6A1D0CF7A13D7D7A3 +:10632000EB13183FF7B4B16338E26F08DB68C77945 +:1063300084D11FBA9CF875F4646667249DC0B86A5E +:10634000F01CD568C609AD88F06B88D75878FE99DF +:10635000ECF7A73717431CD71E480F9354FF5E274F +:106360009EFB34D17C4E837691DE1832CD88D07975 +:10637000EFE9F0B718C639DDCC7CA6040A1BF1A8FA +:10638000DFAC22168883F1054E3005E1219F3FC026 +:106390003727600AF407BC4D33075A117FAFA96C49 +:1063A00013DAA5D399535B03F351B3E1DAE065390E +:1063B0009F4D6F4E83B8899F5FEFBC57F1E33A6101 +:1063C000A1991D57019EDA04878FD25773BA86F4BC +:1063D000C6D8022CAF105D558090407AC6F9253A98 +:1063E000C5C22342F304E56D9190FE1F5C54A3BF28 +:1063F0005CC0BBCB6BEA857E8195627DB8D0C6362A +:10640000C6607DB32B16F711870298FA79AAB5C832 +:1064100075648B653AF0E7EDC0DF4EC04B640EB794 +:106420001F6F97FCFD2B237FE7E708FE42FB12CF8F +:10643000EB88F04AFC9197C3F9232F87F347728EBC +:106440005CA7B6905D7DBB902B57EA6FA5950508BC +:106450005F4F5969DE65BFD344D83F87DBAD120E6D +:1064600049E7D5ACCE8272A25A9C5F33C164A2FECA +:106470005CDEF4B00591B07CB7F1DC1C18561694C4 +:10648000532BF685A7EBCEBFA9063946E747154B38 +:10649000E712844FB929C2857C51616921BF82828C +:1064A000F22D3724DFC2EB694D7C5DA96DE576994D +:1064B000F4CF59C1EE44395F95E64A41B960658E23 +:1064C000898A9375D9EFD5820EAC686FC07C55A3CD +:1064D0007D86FBC1689F21FE76717BD42CECEDC5D7 +:1064E0004D463BA5AA5167AFF2C0A63F1F60457B52 +:1064F00045676F48FF7383E64AB11BFDCB64B73431 +:10650000287C1CBE64E1474EE2F966619F4AFE1F8B +:1065100093A3F1F590D02BD398272EA093B79EF19B +:106520008CDD5480FE09C58FF430CD5DD2C6C3F535 +:1065300001BA3F0176599F047EDEBB98CAF17B11F8 +:106540009E52C51745F72BB473FA71BD84FF19D558 +:10655000DD5EAACA89E9713F871527F6A80FC3ED4A +:1065600025DF58964BFE2394CF99D42CD9156BBABE +:10657000CEF146E7A2BCAE54225DB87E90E74ADF7A +:1065800010E1C7607F23BD54BE1943EBDEF0F3A6D4 +:10659000174A627C260817C4DD3D15E7B332D66280 +:1065A000C6509E437D43849F9B3AA8FF5B59C7FB1F +:1065B000B86F744B527B0CA25F9EFBDD5C326C1794 +:1065C000D8846C6BCEC419B674DAD713FBCA935F48 +:1065D000C1FDC299B8BF47F12933DCD8EF1F3B1783 +:1065E000DA40753DBC7FCA0C33E0EDC2CECE8730B9 +:1065F000FEE4FED933CC80970B0F74F68DA0F80221 +:106600009EBF5EB4E75B3003FD7D177EC4E3DB20F5 +:106610001FF7A52BC772D155395A21FDD3847A793A +:1066200078C8EF56697A86876359C05478F5727FC7 +:10663000CCF134A1FDA7C69CA67DFB1772DD4DA849 +:106640003FBF9FE5DD9D03E18A72C5678175323BDF +:10665000E9CF117A9DD6EB5B843F5ECE675336F768 +:106660006BCAF0D7FD79BB126FD0DEFE6FD2DE9819 +:10667000B0F6A49DB354C80168FFD16FD2BE942B6D +:10668000B23D5B6E37F88F7E93F67D61ED49FB5727 +:106690008E6310F22CD09D690033C023D33729813B +:1066A000E439E87F3BA1D23EEFA6E43366DC8F6598 +:1066B0001EBE0F7A4704E7937F0A3DB3E93BAE382D +:1066C0005C07F85E5069FF76D37A7E5EFAFD5F8FD5 +:1066D0001C812426EDD4F75BFF6E71C0385689FD0E +:1066E000D05AB11FBAEA50AB6522B45F0BE1389DB6 +:1066F0007FA4A6EB1C5087797A4C088E7FE698849D +:106700001C5AFFB5FBE117BAF4141FF76031BE9FA6 +:106710000F749F45FCCA71CBF406CD784E41868537 +:10672000FDF9389FCD6186F686287CFE2A23B9BE06 +:106730005C3C22C6E618123A1750BDDB49FB1C8FA1 +:10674000678DFD2C478767592FE4A7EEECD94F7D65 +:1067500084FBA9657F2E01676542FB9D600CB0C27A +:106760009F37EC40B930F987522E8088B0E13EABBC +:106770008CFF78C6F862EE2FC578EF9FEFD8E183E3 +:106780007EDA22F9BA69C1C8419128973A9C51260C +:106790003BC88F3E595585FD8763FA8D1331BDC4C3 +:1067A0001A9353C5F77D88FEFA6479ECFD937979E5 +:1067B000F467792D9C4EBCCFA92E1F8CD33B38CAD1 +:1067C0008B7EC436131B8F7A5CE22FB63F9FAFC21D +:1067D000FE1C7FB27FD92F6376F24B9DDE904AFB81 +:1067E00016995925C3FA2787FACDCCF23A102ED93B +:1067F0002F0C7330A65FA9FFF0F94BEFCFED966138 +:10680000FD39BD7B8A81FE74FA74FAF828437CE670 +:106810009444E6D6FBC367F631C4E756661ACACF7E +:106820005F32D0905F666D2FD4DB0F72DEAE75BD28 +:106830003611F83E0EF0D2DECA061D423E74C6D0B6 +:10684000BEEBED8D93C8BF1E17ACA0B0A669126D4C +:106850006EAE0CCEA0F8AA6014C5DB22DB27A23EE8 +:106860006FFB5D3CAD4F5F5203393FC176AC31C425 +:10687000CF657D166C40FDD316E9CBBF03E02CFB42 +:10688000ED2DA538DFAB0E29E4072E53599B9280DE +:10689000FC1941ED95A97F295C0DE993C771BD569F +:1068A000863A17F21B845FF34A7C5321F846EBE0EB +:1068B000704F0896537B32BFAA3FB7FB645C4BDE38 +:1068C0006726FB578C47EB5028FC56702085B58710 +:1068D000CACDB8CFF45CEEC349A83FA07C34E97DB3 +:1068E000299724DFD48D8C63D157C6B355C89F0A2E +:1068F000713FA136CF7D0FD2D7D4751D661BEE2B0D +:10690000445BECB88E9C5A3434A55AD74E43EB3CCA +:1069100086F2CB9AC42CA87F2B20D4CB2BEF15CE9C +:10692000197D47D09F9457528E33F70F685F7CA133 +:10693000F05748FA5821CA77AD5F15AE877D8FF3BF +:10694000FD8EC63C6F13F2477B099BFB28C98FF66F +:10695000BEB83EF86FC10FF36B53683DD641F77177 +:10696000A71639E8BCE3CEAE71703ABDDA38368886 +:10697000F22F89732D2FDD7C73BB1BF705BF3D6C98 +:1069800018CA4566EFBC84745A7B744C26FAA77FFC +:10699000D6DF22CE6331B247E57AA1F66814EDF76F +:1069A000D41EB5EE4553B536B63307E5EDBF067ACE +:1069B0007F867878E9E92F4E7D1BCABBA363E8FC8C +:1069C0005DEDD188E318BF49A5E3996077B8F7E397 +:1069D000FC5E09CE6BE5C7703AF33672FEF30A3EF1 +:1069E000AC1274BB48F0619519F422C07DEBF32A18 +:1069F00043F9B4689D32E810FA291C31748E58F2BC +:106A0000A1E4370DE97218D227A7CB9A60BCE06FDA +:106A1000A76897F34119AE5BA19DB281F1B48E5F77 +:106A2000154CA472925F259F1ECFF3BE8AF8296B86 +:106A300000FEC673F41B520B915FAE4E275F98F1B8 +:106A40001E8E56AC6848275608C7E9F8DB133A9FF4 +:106A50003BB117EEDF6C749AF4FBE6FFE86FD4CF1E +:106A600057A3933F89F28BA203D968476A75112E09 +:106A70003CDF5B99EC2039B6E63E88000AD6689E7A +:106A800071A857D7FC48217F23EA5BB4B747BC56AF +:106A9000477E6BD9FFBCE060E6003CCD086651F84C +:106AA0007896F72CE2A12A385BE071708FFB949FF7 +:106AB000D46D213FDF277EAB8B919FC6E84F1CEE44 +:106AC00076D1BEA5F6BCC6F638D00FE855913FCEBC +:106AD000A633FB0E85FB13D1BF28FD8172FF51FA4F +:106AE00005AD4926C37EE9A7E6A6BE68FF77F30F8A +:106AF0009670BD767E9F467AADA6F52F234CB8EFF3 +:106B0000E274939FF0C6BE5E532EE06BC574FF6FB8 +:106B10003488DFFEC063B1E8BF97F86C3107B2710B +:106B2000FDD20278447F65CB5695CEDDC32FAA5C9B +:106B30007FCF4DD8152718B747249DAF0866127E22 +:106B4000A4BE91F2FB89FA145AE44A397E353D24F9 +:106B5000E97BA599EBB19540F7386FE17C14D23F02 +:106B600043895F18F00BF24748FF70FE08E91F41A8 +:106B7000FF71FD68BD112ECFA57E1AF38BCC437F2C +:106B80008076563CB2C083F374F3409007808F9AAE +:106B900047391F84F3BBD4D7121F123FCF89F8A007 +:106BA0003C7771EE35E98908B273ADBE7246721654 +:106BB00042BD9CD5C2EC5A995E927B7D7A6248AE0A +:106BC000713D21E16CB770FB4AC2FF67C6ED0FD97A +:106BD0004F63DEF4B9B9C95C6F60FF0B72B99EFEFA +:106BE0006F8DEB4AFA6341AEC9E03FB8DAF8BE15E3 +:106BF000363E390E39AEE7C578AF55BFACC9ED5951 +:106C0000BF40B9334F42BD0B4FE5D9518EA94AE77A +:106C1000193AF7F2548403F1F0D2D31154DE6D8B9C +:106C2000237FFDB8A7DFBDF81307AE2366AC413C58 +:106C3000BA8F58CD4C67EF49B8249C2F08B8410F44 +:106C4000DD93AB1B8F4CFFA67A49F24538DF86F304 +:106C50006B387F4EFE1ED88938CE27143A5710B2B3 +:106C60000B19E9A9B68C74DA4F93FCADB313F9B9DB +:106C7000A05C85CE0575B7BFFE56E880FA170B639A +:106C800086A27FE498DAB263B412E2E3B18F7CF5B6 +:106C9000D83F58777D9790E7FD25E253F2AFE4D3D4 +:106CA000ABD3E5EF35D257350AD9355608F5FACAD0 +:106CB0007B057EFBED75F2DB4F053DBE84F0A13D0B +:106CC0001667217BEC6A74D78A7497FC5FA5BB5664 +:106CD000A423497757B2BF9FCDE5EB5FA0BB677395 +:106CE000BF81FDF335F34B7A52D2DFE43F73BA61D3 +:106CF000997CBD027444F0B759D2494E5708393DCA +:106D0000F932BF97E915EB7F49C71FE479CF219C82 +:106D100072FE717D82EB8E6BB56B2B92EAE8DC9A8A +:106D20001742BD5C92F742C3E7FF42EEF5D9296FE7 +:106D3000E65E9F3D7BF90AF2E66BECD9C8BCE157F1 +:106D4000B767999BDB2DA1F9B0CE40BAB91830D303 +:106D500051A72BCDA7BA8BE3BB0B6F01B3B40B12BA +:106D6000D12E003A89CAFB06745236AEE5131B9841 +:106D7000AC7979DB66A2BF71369E95213FC4F66679 +:106D8000B719E50D93FB2DE4A7203EA2F88E93E3FF +:106D9000018EC93B58683F06F22714C775F9357054 +:106DA0000924CBE7E6359DDC4A70F3F349CCDB617F +:106DB000E6FB93225E08F1185DBC282CBE9B978FE2 +:106DC000357730FDB91DA43BA580D389E13D00D6C0 +:106DD0003911CF834C3DA4D8D13F31BFF88205FD96 +:106DE0003265E33A9EED03E32DCEFBF1CC6860D52E +:106DF000F9281701DE29797B9B7D6651BF17F9B110 +:106E0000E8676D51DC786EBCA648F1E315B3703CC1 +:106E10004EC933AEAFF06736D667780EEC7AEA2308 +:106E2000DF52FD0CAA1FB05E47FF738AF9B9D1F09B +:106E300072F3F304DF88FB25D43EE06E460BF71FA8 +:106E400084975F24DA6D379956E221D61579BF6BA6 +:106E500046BFD504C6E9A326EFF1993E4E87CC1D67 +:106E600036DEAF83D79367B427F0E730D60F7C1DAB +:106E7000BE6677AB2FE863B9915EE2CC9EE3170163 +:106E80008EB824C58EF6F82A4FC4565C77948D933D +:106E9000F41D98E92E86F14530831F2E44DFAD3373 +:106EA00091BE5731997FAC19F594C7C40CF7C4262D +:106EB0001C51BAEAE702FD906B0CEA6FCE7BA61973 +:106EC000FDF1301F944F71F3D7D07B4B58BC388CF9 +:106ED0003F047D137FA2BC06FC64F72037F6887957 +:106EE000FB40DCDF6A1FCBEDCAF60C1EB6E671FD77 +:106EF000F20B81C783226C8FD4E1212D34CF8828F7 +:106F00005CFFE8C64D789A9724C6EDEB9839250BBF +:106F1000EA27B0410AD0C993BF78A37923D189C7A2 +:106F20008CFB2066DFA9E6E741AECC137869FDC58E +:106F30005B277D24D741EAC1BCAF240280793FA4FE +:106F4000F8E81C1ACE7B0FE37AA03BDDF8C2EABB5F +:106F5000B5AFA9BFA37B7D77587DA6255D4F7D3159 +:106F60002F53C2E6AD346CDEC687C52B65DC6F904F +:106F70005F52AE2D3ABC6D532F3AFFA7D0DB5E2097 +:106F80009F2DCA50C6FE9A776E66F428A44F87D606 +:106F90000764FC3FF2CE9FB401ED96A3FC227AFD7C +:106FA000A0D90DF33003F99BE21FCEC4FDA5D9454E +:106FB000759B52A07C47DE85661B149DBF719B8626 +:106FC00077F04FE77DD46C86F99A57F8DB67B13DCF +:106FD000B372F1E414E56BE8B3296C1CBBC3E2BEE9 +:106FE000B0F2CD5791E71BC3EAAF0BCBDF1A16DF28 +:106FF00015166F34D6AF5AC2F743AB8AF87B1057D9 +:10700000E393CFF2A45DD85288FB6DFFC9633B3791 +:10701000419DC90D82CE7FC966E9E954EED356245D +:10702000311FEA03ED0AF2E9E36EF25CC09B1BAE8E +:10703000BF64BE2705D34F09FE60BE6767A19C39B8 +:10704000D6258738BFB5AA1CAE885F3EFBEA46DD71 +:107050003A71BBD89790F75F705FE5600FF27FE5FC +:1070600040BE5E3CF6157F17C0D7CF42FEAC6371C1 +:10707000FC7EC196FBE6D0FD0259BEB59F652DBFD3 +:107080007F509FB254A71F8EF5EB7509F7898EF5D7 +:10709000E6F7F98F7D7BD825BCBFE0AB555DD98C79 +:1070A000EE75BE8FEF47BC1E1C6DD7DFEBD46AF8C0 +:1070B00079652DA92566A90EBE63B5C38A1DBAF1EF +:1070C0007C2AFCEEAFA7DD6D477DDDDAEFCEF61250 +:1070D00084B7B799E0B57E516957F2F1FE21BFEF51 +:1070E000553080E35B8BF980EE933624E185394C93 +:1070F000E7726E53DA6C1BB6D390C4DF31D06216E0 +:10710000D82DBAF1B893CC1C2E27F3E8EDF1FD038E +:10711000387D6C1A10BAFF5FC5E1A0FB63B77E55DE +:10712000F95A3BF4A3F51DE1C0730DE70664F27B49 +:1071300010267B31FA87E4BB00725CF34C62DD18E9 +:10714000F63E8E15F7F98DEF21D2BB005DEF87C4B7 +:107150005ABADE7B31E9DE3F0C7F0F63E60027BFC2 +:10716000B7C760B5C7F7C7E95E195D0E52E97E186B +:10717000C97FB4AB353C2716F6AE0DAC4AC663BA30 +:10718000A6001E104FE96CD574A253FE4E4ED500DA +:10719000A54B5F77BD93630ABD3B23DFE9B8B5B765 +:1071A00065F06198FF8E688BCBC142E9B2FF0AD1CE +:1071B0008F7CE7C55AA3F5789F7FF500F94E8FEBDA +:1071C000B5BF25A1FF22CA44E7CD19BF97DF8507C8 +:1071D000F1AE4B475F50F1D1340EEA6F933807633D +:1071E0008DE6F7F3657AC78631746F6693F4CFAF97 +:1071F00094EFF0F07BFBF25D928A248B3B0FC70586 +:10720000F59D8375EB923078710EBBE633B3FBBC12 +:107210005CED9E9CF42B48FA50F18CC470A4FB5E8C +:10722000EB88AF7ADB88EEB7A49FA1F73AB4EF8E74 +:1072300071E1BAA58B4F7BA714E3FD9FD6DAC47525 +:107240009D3A3E79BD66867D713EDEF7895E8EF49D +:107250007DD35769EB4AA0FE5B969B0D7C79F4BB0E +:10726000EF5F7C2209C318BA0777F4CBD10EF4CBB9 +:10727000AAA60E9213ECCB48A2F771717353F4F7E0 +:10728000E17E2AE861A0D3FD930110AABD800FA280 +:1072900043F24CEB55E8457ED9124D3715D916B15E +:1072A000DFDBA018EF1F9F13FC7B4EB4776E807856 +:1072B000EFC6ECA0F7CFE4BDCED67EE6B57A3BF5BF +:1072C0000FA2FC1F44FDD67E77BF56A5C357ABF572 +:1072D000E9174620BE7ACD74D17D26947BE8D7AFDE +:1072E0008F72E1385B7BDB68FE5B7B5BFC78CEA753 +:1072F000B556E5E769E26CA42FE4BD2BED8B4A920D +:107300008BE706380CFB3BADBD9308EFCFA875AFFC +:1073100071B960A3F5F3EB358997505E695A9C1DEE +:10732000E7E92D53E770E4BF730312B83C51802D99 +:1073300074FEB0F921B940F750BF462E58C4BB4285 +:107340005EF14EC5D7CA83BF0A7920DF0DFAFF95DB +:1073500007F8D34674E7F72E7E16F5255F77D5FF3D +:107360003FE293F9617CF20C4E2EE27F0B7F2F4CB3 +:107370004B3E1CA3DF47FC4AD0496B541CD767B572 +:107380008997902EAC1BAB7A3187BE9CCAE5A74D7E +:10739000DE4BBD99E8B72A7AB6467E02A0C75940AF +:1073A0008F5F0E3053B986786E5F6BA6CE41389EE4 +:1073B0004AA7F732F2C1DBE21E65E8FE63BC82E752 +:1073C0005025FC52BFC9F9FFAC2BCEDFD990E74B5B +:1073D000E53B71D666952E7856A4B9E91D5AF9AEEB +:1073E000873C8FF6B6E26947F9E84BE7F7F0E5B975 +:1073F000B42D4913EDC8EF5B9AF8FBB14CBCEBB16F +:1074000058D4ABC6773BA0BDA90333683CDEB3F6C6 +:1074100089B10EC4DFD917F0FEB5F55E95DED379DC +:10742000FA3F2A9D93B8F113FE1E8777A3D3F06E1F +:1074300082F7BC7922EAD72A66A77B0F6FC5AE2DEB +:107440005D0FE51A92BBE00B780BE99C1AC1372659 +:10745000FD6419BEC331666732F9491AEE8A89C5DF +:1074600045D32956D78EF0FAB6AAC4470D1A1B8FFA +:10747000FE169F124FF2E7CDB4EDF4DEC69B59D64F +:1074800078B4EFAACDEC38BEA7316420D7D315E28B +:107490001C23E2C556107A7F03E892DD50107A5F14 +:1074A000A1CD049C5340FE1DA2DFE103B9FCA8C698 +:1074B000F737D08FA01E198EFBD9D65DC6F37B0D92 +:1074C0003F525294218C2D690E4B177EBC2A9F315E +:1074D000BD62AB313E57C079BDEF20940E8C4E3A61 +:1074E00083E7B6AFF31D84B9C81F3807AE703FE01D +:1074F0003D767A0721CD4CFB735BEC9C7FB6AC5597 +:10750000E99E56787B1DF58CEE41A689F6241D4B2D +:10751000BA95EF1FE03B5F687786DE0549577CA48C +:10752000575B12719F7B9918FFD3166EA7CAF7415C +:10753000E43B06CB06AAD4FE93E70BE8BD82A3C1C9 +:107540008262FDFDEA636AC72323493E733A07332B +:10755000BDF4B11EF060177C2CE194F6B1E4B71DC8 +:10756000026E39FFE1F5370EE4F2A223ECFD10EFD5 +:1075700055DE0F71E58C5D3770B8EE1D8F63F398A3 +:1075800093EEBF0E233FDC464167DE243691DE0DCD +:1075900049F1A4E8FD9A27728CFB263BBAE4C2F5B8 +:1075A000AD0F4EEC37AE0FB689F177C125DE6950CD +:1075B000C5FE69259EFB01BADF23E647BE2B5219A3 +:1075C00019C8C6F3D7F27D91522BBBB53C9ADF3375 +:1075D0005AA3C3DB1EB1AE98FC202F07EB270AB1DC +:1075E0009D3DD1A1FCCAB1BC9E8CCB714AF84EE442 +:1075F00088F7EAC4FD9970F8C747FDFB313C6F542A +:10760000DD64B55B01EED3E8B741F9F01497FB8078 +:107610000317BE3379FAD5612EF4CB7F0CE3457E98 +:107620003EBEAD7F1CAED796B6A90CCF85AE6CE33F +:10763000EF81A3A7B64C772FEFB666C587F7DBAA15 +:10764000DFE0FC507D48F5E313AFF21E16E453BDB6 +:10765000DBFCDADB7ABEA6AB85507E598BE2C773C2 +:10766000B5CB7619F3E5FDA4952D61E9E25E576D82 +:10767000D83B9F6FE17F52BBCB01A030A283E706CE +:107680001AEF1D5DAB3C3033F7CB03C91E08BB5767 +:1076900029F16D0E24CFC1F5D38944BA4F0F7C690F +:1076A0002BD29D0793FEF6F3F5C009FD19FBB07EC2 +:1076B0003985B2FE05A5D5D207FDE5FF6274BE7E11 +:1076C000F4A183DF1BE3C0F275A4F43F3C5F48EBF9 +:1076D000BC0F81AFB811B041D8277E0A6F3CD4AA45 +:1076E000F681D88787DF89A2F341DDFDE534DF1716 +:1076F000CF9BFD3DEDF377DD6BFD7724E54B3C9EA5 +:10770000BB97CB2F49F763447BAD8F241E198DF4B3 +:10771000131567C775EB32B1EF7FEE804AED9CB56C +:10772000C5ED9F02ED9CDD3DA3173EEEB454EBB4D6 +:10773000E00555D753E5B1B85FF12F2817203BCCB2 +:10774000AFA2FE1B5DCAC89F3F3A60660E276EBDA2 +:1077500079A6225D8C3ACCEFF3BD8F7E7BEE4F2075 +:10776000BFFDD2DFABC46712AE71451C2E89CFFCC2 +:107770007C2E2FDEDDFD18B5F3DE3ECD8EF07CB81D +:107780004F237A5B01F4895743CE1EE0FB7A2B8EA0 +:1077900028FE08C87F0FEF3F62FE49D56503FCAFA6 +:1077A0005CADB9E9DE6118BD8F3BC0FD252B5AF8F1 +:1077B000BBCA92CE57B8FD13C98E17746E833F783B +:1077C0009E3C9EB56CC67B90B71FF866F41D4ED7E5 +:1077D00059F9315CBF15B082EBB947771EF412D26C +:1077E0009F4C4F68195AD2875AF519CE8B375818C3 +:1077F0009D0BF799225D2827AEF6DEF03DAAFD8F9E +:10780000685FECCC77523B9F9B1C1AAE0F662475C9 +:107810008C27D3799CC98DF7C8588395E44E387C62 +:107820006E316F2FE3DC425899CFE59ABC3F254378 +:10783000D054E9C887E551099FE213D065F9D9B35F +:1078400071FFA57C4CC25D996019CDCA1F381BCF52 +:107850007B970F4B783C03E2737E95C7F387240C2C +:10786000D75CF87C6CFEECF1907F67BE7B72BEAE9D +:107870001FD92EA44FC5F49BD2BDE518D65AA21B22 +:10788000D17EB9A074AEC207B764F9971576EA49FC +:107890002514EFD0585F17CAFF2EF87B0E1FCA774A +:1078A000CFCF1FDE3D7D113EA5037859E4E3F74BB2 +:1078B000E0E7B1F50ABD17BF48DE37690C7B1FDC76 +:1078C000C5EF45C97B44F23E505EE89ED3EEEBB96E +:1078D000E77441DCCF0ABF7FA61CE1F7B41A7CAC89 +:1078E0002382E6C1783F646514D0C5100C811EA0C8 +:1078F000DC9AC7DF8C7540E7B7295C9E306F11AD0D +:1079000063EEB4F3F130EF689253F27DB677EB5942 +:107910005D16D2E7D4400EF2FD83AA773DE2E9BCC2 +:10792000F3895854D7EFEE7EE5373E989F1AE1FF72 +:107930006097547A9FA3CD9947EF1C9C3FB8250DC3 +:10794000CF4BDF27E8E8BC53BC9778E958DF6F439B +:10795000B9D28C49C3EFA7D1BABF974F3676983CBE +:10796000DF378BE09C140DF21BC67BB383EB5B58B7 +:10797000CFF962F8BA8EE1BD270D42B520247F31E0 +:107980003F96EEF02F4E11EB45BAEFD6F5CEBF98ED +:107990008F6EF304AC85EFD7996C4C43B99DC776D5 +:1079A000DB919FE57CBD2BF8EC5D1BE72FF99D8BF0 +:1079B000354FF17BDE6B14AEB7D7BCAAD239A39595 +:1079C0006D5A8FFAF90316A0FBCFCB772F263925F6 +:1079D000E5135EBF46FA996A375F9B5CDA3DEE9A23 +:1079E000E4D213522E0D6543AF53CF1EED695E26D0 +:1079F000A8950E7CAF674D726E81F8960AD1CD3294 +:107A0000712E5FCED39A9F66D2FD57B6FC20D1D996 +:107A100032013BDBCDEFC96C76AA748FBFEC701FCF +:107A2000E680A4DB0E2B745E6ECAE1448AC706535F +:107A3000295EF6F3DE63F97B027C7ECB7EDE9FE27D +:107A4000EFEDFF73A1781789DF9F11742CE7E5E351 +:107A5000B97C5ECCBEBC1F16A39DDBA631BF83CA1A +:107A6000D37D258F00C723EE277958F87D6A471C00 +:107A7000B6E3017B8BDEB376733F8043DC4BB2A66B +:107A8000989843371FB3DAF87BEA118E48E6D0E1C5 +:107A9000FF55714FA941C86BE673B7E3BA77AEA043 +:107AA00087A8DC0443F9B9D1FC3DCB18D70D86F685 +:107AB0009997AFC3BAE804D392F87D276C7FD65C60 +:107AC000E3BDAC2D115C1F68C51F91BCF7083AD20D +:107AD0008A8DEB398F78EFD21376CFBC9BDD364899 +:107AE000D86B792C4FFF4EBB0EEF44FF1F83BE4671 +:107AF0003305AC871FE2FB1AB305DE37C9FB4BF831 +:107B00006E339673C7D07B7592DEDA517F0DE1DF5D +:107B10007DD18F1BBFFBA2C70F7EF7451FC7EFBEEE +:107B2000E8CBE3775FF4F9F8DD177D3E7EF7451F7C +:107B3000C7EFBEE8CBE3775FF471FCEE8BBE3C7E13 +:107B4000F7451FC7EFBEE8CBE3775FF4F9F8DD1721 +:107B50007D3E7EF7451FC7EFBEE8CBE3775FF4F9C4 +:107B6000F8DD177D3E7EF7451FC7EFBEE8CBE37714 +:107B70005FF4F9F8DD177D3E7EF7451FC7EFBEE8DD +:107B8000CBE3775FF471FCEE8BBE3C7EF7451FC7FD +:107B9000EFBEE8CBE3775FF4F9F8DD177D3E7EEFCB +:107BA000451FDF24EC15FCCE8BBE5E3BDB988D7A47 +:107BB00027DEE12D1F341CDF1B3D6F467A7F6D01F0 +:107BC0007F17E4E3B61976E2FFEBF443CC0BA3E3B3 +:107BD0004F59F44253C695EB4BFABC09FB1A8E740D +:107BE0003E85DEF5FEB845213A0FD7CFD22E8B0366 +:107BF000F56AD6F51BEFB631B36EDC89A576433C4A +:107C0000D9936228DF7BAEC3909FEACD35E4F75964 +:107C1000EE32C4D3EB8A0CE5FBAD751BE24E5FA9D7 +:107C2000A17C66A3C710CF6E9A6B28DF7F97D79091 +:107C30009FE75F6EC81F78A0CE101FD4B2D6507ECB +:107C4000C8619F217F68A0D1903FACADC9101FDEF5 +:107C5000BECB507EE46B7E43FEA88E0386FC31676C +:107C60005B0CF11B3B0F1BCADF1C0C18E225EC84DC +:107C7000A1FC38DBCB86F804FBDF0DE56F49F9A7E3 +:107C8000217F92E33D437ECDFB2EBA57CC9E54E834 +:107C90005E8BB4CB26E77E6428A72581DD8EFBF9B9 +:107CA0002CD285E77FAF64AF4B7BAECCF585A1DFEF +:107CB0007B546E67070671FFE6E7266EEF35F83CEA +:107CC000E4FF4EC0052DF0491CDEFB4EE0E736F820 +:107CD0007DF6243A7F43AAD381E748C0EE814882EB +:107CE000C9E9C4F54454C81E4DBBAC7B97E26AF6A3 +:107CF000E88BE80B4AA6EF2B1D43BE5CD1727022C5 +:107D0000AE576E63BECD08C704353F0EBF57F36252 +:107D100044CF7EA94936C0A3AEBF13114D69055F9C +:107D2000C3BF936CE7A97C57BBE2DD0D05C6A7F77F +:107D3000DF7C1FD65166E0D3A67AE03358086FAFD8 +:107D4000B753BCB93E85E23FA87750B8AB3E97C267 +:107D50001FD7BB287F777D11C51FAA7753DC5F5FD4 +:107D60004AE1DE7A0FA5EFAB9F4BF1FDF55E0A0FFE +:107D7000D42FA7F097F57594FFABFAB514FF4DBD5E +:107D80008FC296FA464A7FB4BE89E287EA7751FCF1 +:107D900077F57E0A0FD71FA0F00FF52D947FA4FE74 +:107DA00030C58FD607281EA86FA3F833F5ED143F12 +:107DB0005EFF1AC59FADEFA0B0ADFE2C85CFD57785 +:107DC00052FEF3F5418A9F17FEC72F0789FD4D35F7 +:107DD0009ADEFDF38CED4FEFFEC9744F8EF7CB4169 +:107DE000C9A1F724E4BB11E1EB87F0793827DAD792 +:107DF000C6F27721B41B72F6E2B9CAD0BB0E8EBDB3 +:107E0000781F441BCCFBE97A2742D8DFCB041DCA7C +:107E10007723A4DF7F99A0FBE1488FB9448FCF5F20 +:107E2000CFFA48AE93BF9FE54D1E0CE18A74938F45 +:107E3000FC04D1FCDEEAE359DE144CAF8EAEB37025 +:107E400073D545E96556EE27EA3CA1BAF63AAEDCB1 +:107E50005FAD387F7CC5FCA3EFA5A1FE29FD8F4A4D +:107E6000FB592F6A3173D11F326030B783070C364C +:107E700019C2926C4FDE6008DFCDAE3BF31367E8AA +:107E80009EEC345C52035F973307BDDB3183B9FF4F +:107E9000889F7E9805861FC6E7301F857DB2BC058A +:107EA000389E79B070C0B877B495DEAB2CB372BE93 +:107EB000088763B4988FD1834D867061B66734C2EA +:107EC000713ADBBDFF0E28D22CDE3D99CA3A1F4223 +:107ED000383E7BEAA3334A6608BFD20FB1B944ECFF +:107EE0002FAE56E4BBAFE1F7D729BFF22EEE8F09D4 +:107EF000BFBF2EEF9F7F5CA7915CC47BEEE8A7F825 +:107F0000B8EEAE91B85FBD00D66FB8BF2DE5642561 +:107F1000BEBF5180F7E56DBCDD37A2E8DE51B8FC8D +:107F200094FB2495605FE27A709378DFE245CF4757 +:107F30001ABDCB9FC4FF5E18D587DE1D047AA92029 +:107F40007A19A5F27BCE76A0974178BF99D385EFB9 +:107F5000397EFFD86CF7B871FFA67A77FC50DA3F0C +:107F600003FA41BFD7C3028F923E568973EF922E18 +:107F700080EE96217E3FFCFDC85CA48FDAA3A36847 +:107F80003FBAC124EE378BF619BAB4A13F352E9F04 +:107F9000DE492B43A302E972540C9DD7C577970F96 +:107FA000F620471F10F3FA620A7F6FAF41F0A7CCAB +:107FB000DF2CE86DB3A0C3B2674ED07B49ABDA3497 +:107FC00017FA9D596147BEFE9DE82E7A5EFBF0DDF3 +:107FD000593A7AAF3DFC4FEEE7671DF9D36338B8E5 +:107FE00038DFF29D61D98F86FE10543649E6F35D85 +:107FF000EB8B0CC413A37C4997AA25C6BB275A3F19 +:108000000E8E47E08BAD922F705D30D5EA889B03D2 +:10801000A077000A717DE3FD7F767A8F631173513B +:10802000B88479285C06E4827CE0F16DB3E03CAF73 +:10803000602D94BEAA68715F8CD7B2CEF129D0DED4 +:10804000ACC6F57F4C015066346D9B900A704FF7BB +:1080500057FD11C3F27DCA199F83F8EAA7480F1D87 +:108060004ADDA61BA0BFF9BF2AD9D407D2A70AFFB1 +:1080700006D0A15B45BD9AE5EAF0C1FC9DDE9647BE +:10808000FEE587C53C2CCC763F8CF52B3730A2170C +:1080900079DEBA8BAF8A6E7FAB0F9E853177D23B8C +:1080A00091B547AD09B8AE5CC1B81E0FF977B8FEFF +:1080B000967C83EFDDD1FB91BFE6EF1B9C53600202 +:1080C0000A7A78F741D8A1921FC2BF33F6B949F8AE +:1080D000EBFA7A530A3243FAFA9CC93F223693F4F8 +:1080E000F951C4BF36D6BB7528AE977FA3B81A0026 +:1080F0009673F1FEBE75D106FD40EF2F49FFDFF705 +:1081000035EE8F0BB77FE538C2E1B45A980FF735DB +:10811000BBEC9EA267BF507A84D79B3242A5FDB1CB +:108120000E9443DA588FA32738368AFEDBFEAD1A49 +:10813000BE2B158E4FC5CEFBB992DFD41AC9E19282 +:108140007AEBCA78E4F3F5FE602E5F247C2040725F +:10815000EDD0BFD91C49EF7FBE1CC1FD6FD2AF2649 +:10816000D7C9F79ABDE7904E5E8EE07EB936E7BB81 +:1081700059A47F2F35A4F1738001C33B4453255F7D +:10818000156906BE62617E2D56DCB3DFD163B39301 +:10819000FC9BCE5CA45FF2D81B127F063FE4FF027B +:1081A0009D1539C8D07700000000000000000000D5 +:1081B0001F8B080000000000000B8BE16060F8518D +:1081C0008FC0D3D1F8E8F82F9A7C1E0B7EF584700F +:1081D00026507F0A10C70371141087027100107BAC +:1081E00003B11B1017B301ED00E24C204E01E27801 +:1081F000208E02E250200E60439863C5CEC0E0C4DA +:108200008EDFAE0D6C9862BFB910EC404ECAFC32E6 +:108210008A873E96E0636090E247F097F1A3CA4BED +:10822000F221D8938529B36B09503F0062526D0E3D +:1082300080030000000000001F8B08000000000009 +:10824000000BDD7D0B7854D5B5F03E8F79666672F4 +:10825000924CC2E47DF240428D38848751633D40A8 +:10826000A0B1E5D60151D19FDA0151038244C496F1 +:10827000FFD6DB1CC88380D1060B1611ED8088D891 +:108280004A6FA4F8F85BF50E8F5AB4B68D162B5AC8 +:108290006DA36D2DBE906AB9D8D65EFFB5D6DE2728 +:1082A00099736686A4B6F7FFBEFF42ED669FB3CF13 +:1082B000DE7BBDD75E7BED3D1E7912CBBF90B14F0B +:1082C000F00F94450A63AC70B8BCEF7F2BF3FBEB67 +:1082D000E1DFCC80878C55FAE09F3A63076F7BFA29 +:1082E0008FE32633B6A3B35AF640BD9449D47E7BC0 +:1082F0004FC30B2D61786EB2287EB5F6B6A29241BF +:10830000F87E7B9551A205F00993B19F2A2FEF8744 +:108310003193F7CB787D47E7DC5C06ED2AFBBAFFAB +:10832000A88486E76595634D9925BDD40FFB84E14C +:1083300077EA9F06EB44BD8A319A6A21FE5F336378 +:1083400053E1BD687BE8B51FD37C77F6C8CCA3A703 +:10835000CF63479F7DDED63C707EC6D4E1F9FDBD7C +:10836000F321F8603E13599FCC10A7A6F17C04FAC4 +:108370009B2CFA63EA8B522CC8D88676BDBFD6C533 +:1083800058473BEBAF1DCBD8BA762F95BDED1A3DC4 +:10839000EF6A8F507D839AF0221ED500B4AB1B1E6E +:1083A000D75BE6B5D58351F82E655E8CCD273C2B87 +:1083B000025E7738627B9F53A7DBEA2B83D3BD082D +:1083C000FFBA76A0FC381CDF4BE5444D7EDD3381DF +:1083D000B16E57341203644F0E5C3B9B41DD1D8A26 +:1083E0001DF500FE3A836E7D2DC03D5E9BF5163E69 +:1083F0007FB678967710F138A0BE3108FDD7C1DF7F +:108400004FAAA19D7A340FE198C8F8F3617C311628 +:1084100006FC34F17F025CF03E05AEA63AD9F400CA +:108420005F8C777CD714702F94613C578541F36241 +:10843000AB52BE83F19AB4CBAE97E03B76C2FEDC82 +:10844000A24FB25D638687B1DDED75546E82BA0EC0 +:10845000F0EEFE1BF07F0ADF0605FF0FD151E27D33 +:108460006D44FE9FC2D8832E04005EFF8825EEE790 +:10847000EF8A17437DF3A5450D1B749CF7C0B41814 +:10848000F0C16629F60EE2CBBCC2ADDF0FF3DFA46C +:108490001A73F0BBCDF3F265534AC743789E6C8ED6 +:1084A00081F9374189F887FAEBE3A06C9A0F70C322 +:1084B000F3F047454C2F00BA4D99FBA104FD6C5ACF +:1084C000E0D619F43B3106F482F77521F34AEC7FCC +:1084D000D3144E9FC993816E88C718D009CA67B755 +:1084E000CFF2A19C5A7432E02FE26713D2A93E9DCD +:1084F0004ED3986BB8CED2E99186FF0580FF09D99B +:10850000F1EF2C37B627D86F81DF6F6F8F10DF75D3 +:10851000B4EB54F6207DA0EC25CCA6CBE37A99B53C +:1085200022BDD6FB59EB5EA45BB421633BAB646C0C +:108530000DD1ED76A4DB79342D83353296DB3C54B6 +:108540004FFA6B617C7C5F22DE9741FFD2D07B9338 +:1085500001DC6AF3D07B3307DADFEEE3EF5F33EF62 +:1085600036CCA6E1FA7B6C936196A5BFEF701986B5 +:108570009AC7D80FCD2F19F53E5BFF06F69F3A3FFD +:108580006F86FE3A7C627CA98FEA3D523CC26A400B +:108590004E2533C234C60EC077CD11EC97D777E5A0 +:1085A0002F340F150F8FF30A5B689A80AF852C76F6 +:1085B00008F131A511B0568DE346E703F1D9B3F8C0 +:1085C0003DF4AB36F1719E3537181D2978799175D8 +:1085D000996693A01FEA19C1B74AAFDB5426A01DC4 +:1085E000F84F4305FE53C630CD832FA2F98C9D0B67 +:1085F00042153618F29D450F4553DF4C95F721BEC5 +:1086000010EDB3D391B783F9BF4AF30FB02B70FECF +:1086100087F0153C9F7E5EE3CF9B40E9BA075C5133 +:108620001CDFDDCCE5345777275074438867182268 +:10863000F4B1C2CE03967902851CFAC96D2C61890A +:10864000D4F9A8F108EA6BAB5F18EFED547C41FD5B +:10865000DDD38DEF12E33BC77335431DDEE7466084 +:108660003E55E9E376F862F363409FE9A1C68B19B2 +:10867000F53356F654119E5BB09FB3256E7F15EC13 +:108680002F7F78FE56BFAACEFB5503F67EADFE00C7 +:108690002F0CFB733BDA2B38CF86F47E9DFD300622 +:1086A0007839EB74F49F65A8D0AF5203F4D753E840 +:1086B000AF03FD03A3A0FF7F53BF1FAA8C8CF1AAB9 +:1086C0002A7702F52EF59F9F0EAF059F13EE553FBB +:1086D000BD3A029601E9C9104F163D4FE27785C3B6 +:1086E000E33BE939DA71ADEFD3C7ED88207F39C7B5 +:1086F00075CE378D7F472947851F8D67C624106D3E +:10870000D40F88CF9B02242FB7C558C203CF6E3B2E +:108710003C93FCA3CDF2C061E46BF30517BB1F864D +:10872000DE8C7A17ED48EB64FAAE2C772032B73E38 +:10873000BBDEDD0CFE8509FAFC3689919FB91BEA88 +:1087400009A817F6AAE618A0EFEEC474DF4218E7EE +:108750003617233B0CCF5F473B58B7BD993FF7F126 +:10876000E745A2FD833B45FB20EFAF48B41F7F3FA9 +:108770006F5F344F66660A3E9CF30ABB07E2B10C9A +:10878000F3ED94649AEF23688F4080B7A13D823265 +:10879000EC3716225E82D3DDFA0EC0CBA639BB8A37 +:1087A00017C13807E6CC92DE80F21E2197BB853DCB +:1087B0001B1A27614888BF475CE6DA20E8D7D51244 +:1087C00033DA40CF878F26AF400F749DF404F3C097 +:1087D00077E5315E6FBCFD20FBF114AC33D2D7F7E7 +:1087E000AD394AFA778A97BDDC04E34F01F9ED8091 +:1087F0005753D498D28676AF359CD1EE6D7DD13B60 +:108800003F01F04D69ED1EB884982761E3B3A94795 +:10881000805F52ECFA23C2EE6E1376B815F961CA86 +:10882000B03C06F19F40F720CA6388E45172213EB4 +:108830007EC548CF6D5D725907F279F8088B2A55CD +:10884000E9F309C6EC723945B5C3F3CF826321332E +:10885000EE95A664EF2FDD8EC47761FB2942FF857C +:108860006371251E381DDCBBEEBA16E1BE84C39DC4 +:10887000AD7F27BC77087CC278FB328DF7DF850F90 +:10888000B04F2FA3DCFEA3FD861DFD8E16BF8CF519 +:10889000093E4AAAB1606ABD8DF1BA99EE17A6EAFF +:1088A000FF30AC0F2760E927FC2B61C0AB6DBDC367 +:1088B000BF5310BF29F3F156B0B8F0E7499FA9653F +:1088C000D1FB36401B6FB597EA9D85D1FBF09BB776 +:1088D00024379FCF6CA6E23AD2273E79438EBF253C +:1088E000A5E875553359BC1EBFAFCBC59205C2195B +:1088F000F56B777B2C5F4D91FF6E1713EB6A8ECF74 +:10890000EE62962840FC7E7C75646E307B3F4E3C68 +:108910007694478FC651FF16BBA3F7C3D32EC6E18B +:1089200075C2A7C86E6AAF46B8DD04381439037C37 +:108930002EE8570239ED089EC1E10967B6171D02FE +:108940001E273F74587065F9CE39FF6CEF3BCB8D15 +:10895000C8425C1F05395C161D2DB85C0817CCB3E6 +:1089600052E6747205B81CBAC29C1E005FA55C98E2 +:108970000E1F6331867671083E816755F3125E865D +:10898000E8EABD2C5F2D189E67BDAC51E91A9A47E5 +:1089900094FA513446DF6972BC1EF1097C39407C7F +:1089A0001930681EEE08BC3F1B4B63BE0974EDDC3A +:1089B0007F2EABC7EF0251B60C4A7720CE6643BB81 +:1089C000CEBF89384B78B28D5FC7C9B20DBF4EBCE0 +:1089D000150BFB3C24AFE56C7E26FEDEBAC46DE3CE +:1089E000EF997256FE9E2967E0EFAD4B04BE166705 +:1089F00096EF62EF25367C31D463453424FDB9957A +:108A0000F1796E0A1C3B1AD719AB6A6107D005F2DF +:108A1000C9270EA3FF33CE179F87F82B6E1948AADC +:108A20003AEABF2443FDB74ED8FD994AC0F7068CF9 +:108A3000DF6754E7A27DFD5759CAC83F7780FF80A2 +:108A40007C89F10A15D626A75E1B47F3CEC6671DA3 +:108A5000EDDE3C6C37546F515B12D07F47A07A63D8 +:108A6000334CBE2B5CDB403A2722713C21BE617E39 +:108A7000CB64BEDEBFE3A2AF58FCB60CE76FF19F3C +:108A8000C567558669609C4307BCC840DABC4E1672 +:108A90004D0A9CA829F80937F1B806E0E166C283BF +:108AA000CEA6231E82CD49E6D287F1D067C8F4D185 +:108AB000CA9967EC403A5AF37E4CF009ABCFE7FC19 +:108AC000A946699D924DEEBE0978AAC7B51BEBA3D6 +:108AD000F853F16C9640BEEDC5E780BF73E45817BC +:108AE000CD6371424278EE922C7D15A1B85AA798B9 +:108AF000F737BFE8E77C55AE6D47FBDE67CDC300B7 +:108B00007C15D9F8AA8FF48DC08BC557C5B34DA677 +:108B1000007CDDEEF826E43BCFE47E8DFC5A296133 +:108B2000B8255A9F727E36D9008E5B2CB1E13F305A +:108B30006E419DBE03F5C0FD821EE17A95E223FEE3 +:108B4000572FA2B806D429FE51DCD87D23C68782D0 +:108B50007A628D0CE395C64CD38DA23CB890E25757 +:108B6000258BA31B67407DB53B7E3FCE235006FE81 +:108B7000198052BAAC8FE0DFE83219C641BC4D090A +:108B800003D76148F78529EB8B47116E9C3FB84BA3 +:108B900089FA61FA6E5238BF7CA369BAEFBA00B69F +:108BA000F3D33CABD82AC1176D4909F8C28B7CA11D +:108BB00013FD1F413C05627DFB89D5F4019C06F243 +:108BC000FD183E0FAD18BFDB78919BEC32E0E50855 +:108BD000E23957E6E3C07F3AE2C92BF339B4CB2E32 +:108BE0001ACF076DD00FD3EA5842077C95EA6D0C77 +:108BF000F19C8B78090DE32B17F101A527923089A1 +:108C00005FC32C6AA03C061A246C1F34FAF6BB75AD +:108C1000C2D3B388A792A6A4817C6AF17D87DAF6D5 +:108C20009B7F03BA741C56A2A63ECC8F4E3E5403C3 +:108C30002077367B6DD9FF285F4766F92EDD8F30B0 +:108C4000C85F5003DCAE597602F8F7359C9FAA71D5 +:108C5000FE1DAD3D75AF56F4DFA11E53358AF759A1 +:108C600073ECD61699C86F279117715DDC373149BF +:108C700041DC0823FB841391E1BD5B33121B884761 +:108C800013242796BFE2AD955932C5EF7395F96D60 +:108C90007163361FB4208C77B378E65EEDA679A8B1 +:108CA000602758FD309CF086FAC1213EA9C1FAD751 +:108CB000681CEB3B35C0923EA0DFFADA06D29F4338 +:108CC000F8C6EFA00D2E47789CD5FE5D76BC38C661 +:108CD0009B679FE7A8BF0BA8FA9BD637D5A7FB4E8B +:108CE000656F5A7802E4851181D67AA390F4E0E3A7 +:108CF00012D8D38EB26E139FAEC3FF03BA76334E33 +:108D000077A6CB36BDA394F1F8E71B28F4D84F849F +:108D1000FB251E765992E425323A3F2547D8594F14 +:108D2000599F0DAFAF4AF133952968DF39FFF756E8 +:108D3000B1BED47D8B213FAF7E1E7DDF3BB15B5F3B +:108D4000583FCC5FBD0E3CC24A82FB8362BDC8EA7D +:108D5000B9BD7547DAB83F21F873A8FF28DFA770BF +:108D60007B930CF542A06F3F536C7C1967F38288AC +:108D70000FBE4F712B949F58FC3905F595DFC697B0 +:108D800016DF59E38E2C7FC27EBCEA21F90B0FCB94 +:108D9000DFBF28A9F643D82F169BC7E9D4E223F8F2 +:108DA000EF17FB11E9FD733C9C82BE07085F713F22 +:108DB000CAC1AE4D8BFC08EFAE2D737353E9E02CA6 +:108DC000EF023B968485D876F003B0BCBB5DA3D29E +:108DD0007A7FB788EB6F1376CD7AFE84C2ED57A702 +:108DE000C2FD8B5DDE989FF6AD0E5EF1F9F18092CB +:108DF000DA234A1479AB74637FDEE9C62F5B66978A +:108E000077A62C38ED7C57BFFA7CDEA194F6372B81 +:108E1000C1F09B39F08F73D8392807237D7FAA7D55 +:108E200020EF90EB1FC7CB36A45F09E0A163EF1AD8 +:108E300013F19EBC90F444B590A7E21E4676A4764A +:108E400015D8116CFBF127FCFDD07E9E11580875DA +:108E50005A1A407D57CFA20DA837CB5F54980C7A91 +:108E600067ACB0B76C13DF2FF0C25FD407143A873A +:108E70007E6B16B34412DAD5F4A9B6FD8562D64BE3 +:108E8000FB81E52C65FFA00AF9EE22DA672A76EC71 +:108E90003F948173D9D8F08FD36117D2E1CCFFF71B +:108EA00074B85BEDF76929DF974A2C86FC5ABAFC47 +:108EB00077D2A2147EFDA1E053B63AC07E9BA25F9A +:108EC000B749FD79687CB62F93C99F65ACFF99338C +:108ED00068DD34F8D90D50DBB2F02BEF3F89FE6D21 +:108EE000E1B1CFA2FF7558C9E1FAB185D9F4A73530 +:108EF0000EF86F879514FF767BE75CD283777F7CD3 +:108F0000D37E17D06DEC2A165D4BF46747705F4C2B +:108F100017F4D705BD9B3771FA56F7B204C6999975 +:108F200069A77FF5625372633FAB5914BFAD6965A2 +:108F3000E4DFD52E60182963E5ABEDFB80B59BEC33 +:108F4000FC3146F82F631CFCA1031F14001FD4F64C +:108F5000C537E0F8C54714EE2338C61FABF75F44AA +:108F6000E301BF24483FA6F4A3207F45D7223D9CC0 +:108F70007C3906F97242FAB8FF28DF9D74F0DD49AA +:108F8000D674E56E404CD9BAA617CEA0563139D565 +:108F9000BFB7F84E65C65F15E487D8E8FC9D51B7AA +:108FA000639F237D6DEDA74F5BE9F5637C7D9B9B04 +:108FB0003D3B0ED7E9BF5418DA9B6D2BFD25A9EB7D +:108FC000AD84D0FB0911A72D5639BF8EC14517942A +:108FD000A52AF7DBB785586BAA1E1E1E7FADB0FF12 +:108FE000DC3F1CF711383805A975B7A3AEB2E4A46D +:108FF000D47A48D4391C9D857CBD7E9F28AD71BA3A +:10900000826D8CE7272C96C96F13FAEC60DE2C2F4B +:10901000EE4F75061A72B91F169753F7D13B03D559 +:1090200063580A5D3BC5FE64367C7689FDC92EB166 +:109030003F799FCB88E461FF79B328DE715F509B55 +:1090400088F23855E576482963A41C2F50F3D6AE34 +:10905000AD85F51633CE510BF977385F459B5AB283 +:1090600050A7764622037F55AB7E4EBF7AF52F83FD +:1090700029FA013C058DF84BF0370B8CCE0FAA5026 +:10908000E39FC7F1CDE92C89FBCCE60496E8407953 +:109090006E8BD9E276D0EE62D1CEC4F5CD50BB381E +:1090A0005FFFA5B49B27DA19B676B1B47657A853FB +:1090B000A81DB38D6BA48D7B95353F96DA5F34ADDB +:1090C000BFAB457FE4D70FB5D3D3FA6BB5E6676B7B +:1090D000A7A5B55B2EDA31DBB8CC3EEED0FB33DC96 +:1090E000890ED233315AEF74155EE6A5754A62BE19 +:1090F0008DFF9C743850C8F9F150E1AC16E4979B91 +:109100009E71318C37EF2FB4F3A9D5BEA39DF52CFA +:109110004B8D6F0476D038199E6B999FAFF5A2DE08 +:10912000CAF05C13CF292FA55BE48764E39F6EC16F +:10913000F7DD82EFD3ECA6D00B1D75DC5E39DFCBFB +:109140002EAE27981AA3B886B78EF5D7A7E8E1FF09 +:10915000DFE0FD50E8BD8EBA86BEE9B0C4DBA75E95 +:10916000B9D60BFCD2A94FD7B0FE12BB726D73D526 +:10917000FF5C785F5097D8E0FD215BF23F1ADE1369 +:10918000EA6A1BBCDF66AB4F0B6F97887B39FBFD30 +:10919000ABCAE34CEB5D31D2FF5D85774670DE5D97 +:1091A000E5DC4EE47535AE5D03F5B358FCBF50BF4A +:1091B000AD2FB4D64F3AD9A991BE53C6AB3194BFA7 +:1091C0004EDD2E87770A7B6495DFC2A00FC657AAB3 +:1091D000541EC42C7427C60A78E6823E7B44E5F10F +:1091E000720BBE5F38EA7F74D4E11F7F41FF4943B1 +:1091F000F86B32D8272B2F284FD86F2C53D6D99DF8 +:10920000C1848CF1B983B75DC6F3CD841DD7044EFC +:109210000FCE2CA2FCA68D46663B8EE11B6CEF1692 +:10922000F5AEC0DC9E2A8CB3FED445F57BC15FC78A +:10923000FDDE2E911F66F94356FFFB6FE3FD1F2CE9 +:109240002CF2D5C2771F809F89CD46E293A75C5C44 +:10925000EFF541FF986F763BF09D0E1F6E857A1CEF +:10926000CA9D50C7F2BBB03EC0F2C9F608955DED8D +:109270003A95FF01F389C37789F628D57BDB1BA9D3 +:10928000DC82EB8B71C3EB8B124326FFE0FFB4B3A0 +:109290005E74BD76B57BA9BCA35DEB5589DF235415 +:1092A000DFD3AE53BDA7BD8ECA8EF6283D7FACBDC1 +:1092B00091CA19D2DC8B5CE48F25D6B801CEB26F8F +:1092C000D436E07AA2D65079DC533564DFE4E1E7A6 +:1092D000169C33A4E95FC4EFCE6CE6F360DEFE03B8 +:1092E000FECCED2EC17617348BFE02033372C31908 +:1092F000DBCD77E17E4CA3CCDB6931F21F32B4FBCE +:1093000012B6BBB051F4173E71304B7F8BB09DDE6F +:1093100024FA8B30D99BB9DD75D82ED0A47238CA07 +:1093200092146FC9D06E19C251911F5F48F988AC71 +:109330005F427CE5356BF9D8AEA2207E237F1E9B71 +:109340008ECF5D61FEBC12DB13FF26A77BA1DF5031 +:10935000A3788EEDE9F960073ECF6D12FDB879FF75 +:109360000FCC6424879AA1EDF062DC5CD4F39AF50B +:10937000ED58AFF0F0F1C615C59804F2A98599240F +:10938000D5635C38C6E4B330CEAB4932D42BDD7C38 +:10939000FC07CE1B6412C8A5D608ED506F405D8651 +:1093A0007A5E23B4837AA587CF67DC8527A8DD267C +:1093B0009117E1BB90ED477CE41ABA84A2D12BF25D +:1093C00007F29A78FFE7197D8A0AFAEF4C37332EB5 +:1093D00005B9DA7423D73F9BBA7E3E1DF3D6CE3053 +:1093E00018E5371CE82A9BB106FCDD8A12BE5F7BBC +:1093F000C7456F1663DCACA294B5613DFFF3C7C6E9 +:1094000063BD12DF4379C7E7FF528CF1F84A7C5FF6 +:10941000CF5330357069F3BFF0F1F88519E42E4D64 +:109420005F3F3783E2EB95AB656664B03B565918F6 +:10943000B3E7D34C681E988EF0FCD9C5E1E915F06E +:109440007CAFEB57048F57E4050EBA7C1C9E0A3E96 +:10945000DF8EA080A792CF57090978C4FE744748D1 +:10946000C053C9E10D0878945C0ECF87AA3146CB72 +:10947000B05E72CE3F18B5CFF73EDC3F80EFEE9B7B +:1094800079ADB118E6EBDECDE7F739F76DB4BEE89C +:109490009AC35429174A1F8F8B85BDAC07C745FC5B +:1094A000E0BEDBB785BEB2E85211719B0513B2E393 +:1094B000D5A25745C4FB3AB6B3E85519F19B051937 +:1094C000F2BB87E01074AC8C045E4FEDDF095F3AAD +:1094D0003D4C034D4BBEFB84BC19E03BCBCAE3348F +:1094E0003F9E3E4D4DA7CFC6891CDE8D02DE800516 +:1094F0002FE0371FE6FD9805AFA05BC5ABEED3CEDE +:10950000DBA267C5AB006F68989E95AFFA4F8B27BB +:109510008BCE95AF065E4FEDFF2917B7B323D1B5BC +:1095200043C061EDBF07D411E0D0460987E6804310 +:109530001B251CDAA783A30FE1381B4A91BF15082E +:10954000001C0DA781637094700C3AE0181C251C58 +:10955000839F0E8E6E214756FC3F2CE861F5E39405 +:10956000A36FFE8B5DBF157CD1AEDFBEF945AE0F9C +:10957000BE6D8D2FE4A3E062AE0F86E436C8FDC653 +:10958000B0C05BB6F1D695DBC7F354D8C75B579133 +:10959000793C4F251FEF9F154F2872C5E7B9F93A5F +:1095A0003CA9A4AE9BDB0CDBBA19DA5DE116F10431 +:1095B00025751D1E376CEB70687795E8CFB0B58BBD +:1095C000A5B5BB5AF4C76CE31A69E3B65AF39353D3 +:1095D000FB8BA6F5B75CB4A37DD3E178425A7F2B11 +:1095E000C5B886AD9D96D6EEABD6FC6CE332C39182 +:1095F0001F75E3A8F6F18A5BDDB6786441CC6DDBBC +:109600007F0C4CB6D7BD2CA55E353C9ED55FAE9584 +:109610000713EFD3E9FC4A307114F314EFEA9E35D7 +:10962000230CCF37E4713D7B97FBE20EDA47C04A4B +:1096300011E957F2A74F4D9409AED0592AE5197B8D +:10964000994C79C7815A772281E33585C53E1DF74C +:10965000AF823ACF9B084EE6FB604E3EB2DA83E61D +:10966000A0784A367E53EBF83EB15AD733C04B9EB2 +:109670001FC026A7E52BEC42FC7B588C611EBD95D4 +:10968000AF608D33125F8FBA1D637598BFFC55E6CE +:109690008FE2BE719E9B499827BFBA8CC7D3C72A59 +:1096A000F1C7701EEEE6B62F77425D9AB57A1CAE12 +:1096B0003322AC4DC2F8BE3686E77FB1ABBD51CC8C +:1096C000BFD56634D1BAAEA3D0BE7E7CC7CDE5FF90 +:1096D000276E854A2D87CB3DF39AC57352F0C53C62 +:1096E0007CDD0AEF6F447A86EF5A74B005E8A9E58D +:1096F00072F96751681FCCD01E63B06067DFEAFE65 +:109700005A079E23D084FE64912CEDC57B275E8E84 +:10971000BB79BE825623BE2FCB32BF719CA5FE24DF +:10972000C66371E0AA94FCC071BEF8AF511EAD7C57 +:109730002225E0CC27AACF7D2365FC37DD922DCFF3 +:10974000AA13D64FA97941AAF76779B42FEAD14471 +:109750001CAA2DD23D19F751BC51F4C3DF758BE71C +:1097600001B398E458833238DCBE6FC6D7251CFF9E +:109770000B72EC8F6EDA878EABA9F31DEA371CB53E +:10978000F54B87D5E0F996296D777556A15D585D43 +:10979000857CE8C2F3783548EF0514FF509BBDB4D3 +:1097A0001E66F3EDF95CAAD666E52731CF94F4FC8A +:1097B000A416C5903CC487651AED3732FB7ADBCA24 +:1097C000BB59D4684D54BFFC57C09F4B0EBB18CD3E +:1097D000EF63689D92E7F0C66F79FEC812B11FB3C0 +:1097E00098C542F8F23D26B720DEDF632F8426A518 +:1097F000C86FB987E725B21E7E9EC884BF684FAE8A +:10980000E9B39F2FBA6E8BBD7E2D9B5B847273ED87 +:109810002617EDD72C71ECBF043D3CBE701D6BEBE1 +:10982000A67887B0C38B34A61680695AFED83D53FC +:10983000D1DED57A783CE36D5C7FA7ECBF2D0D249B +:10984000DC06BCFFEDBE49979DCFF0FB447709EAEB +:10985000EB3C4672E6E4DBAB7BECF31B69FECEF936 +:109860005AFB1CD9E6A1EE9632C6F71B3C922D4F4F +:10987000F6942F3481811FB0DACBCBAFFA433BB0E3 +:109880003CE5AB48203DE6223FA5C6A17F1D1471F3 +:10989000E8B6B3911F46FAFE32C18FD9BE5F1FEE04 +:1098A0008B215F5AF9165E6F1BE97B498D91FCADE8 +:1098B0008F8CF0BE0CDE2BA9EFC170EBD43FF1ED25 +:1098C000FA5AE7F7F6F7C08F9F7C329551EC855135 +:1098D0001C89E713F5B4F3FDD60E57EC625C1C76D9 +:1098E000BCA830CC3BECC86BA3BC3CB39CE9B87FB4 +:1098F000E5A98DE5E2FE82E7881296AB0453873135 +:109900003FB76527E6997DC9E312F21F253BEC09B5 +:10991000988681F11D579CF671DC5FE7FED3B44059 +:109920003C8EDF2991F92EDCEFFCF14357CFC7FACB +:10993000D2C82C1549D62AFA79EF3B0F4F6530BFB4 +:10994000EE3D4196A4F849C28DF1A9A5FB148A43C6 +:109950005CFFEF411A7FE9DEEB76CD867EA4C72E51 +:10996000D0DFA4384007D171E9A397FCDC14F0786C +:10997000010F1D6B44BE89198D5C029F2EF7B02F1D +:10998000E33ADD82DFE21BAFDE47F94A4B77E7516E +:109990007EE310BFA9D01EFD3C28339DDBE8F5F027 +:1099A000F8E3BB419E7F26EDDE7F15CDAFFF72173A +:1099B000C22595B5B1DFC3786B3C2EAB1DD975F3CD +:1099C00041293116DEBFFBE07677F55938EE76F7A0 +:1099D00022F263D6101EAC797A776F3451CEBCB5C3 +:1099E0005A359278C6BFEF09613C6FC56E258979FB +:1099F0007D50D2F9539FEED85F65464002BADF40F2 +:109A00002A0ACA7DCB490FDDD07F2BE50DAC78DC6F +:109A10002E7F80D76812E67DFD4B4A7436D6BFFF95 +:109A2000404887F9BC3D707F08F10FE32C7403DFD9 +:109A3000BB34FB7E2FF6FF517E7A7F8C9D70239F77 +:109A4000ADE85FCFC7DBF72F7FC07DEF150E397F05 +:109A50001BFF519CBEDFFB7D8F23CF6077C1A8FC2D +:109A600087EBF79CBCD78471DFDDFBCEBD985FBC74 +:109A7000ECBF3EBCF76B188F7DCAA7A19E5AF19D23 +:109A8000DFDFFBAF80CFF71EF7C8C81FC79F7C6022 +:109A9000D756A81F7F795C8304F5E7843D3DFEF02F +:109AA0009F8B74E867D59333C720FCAB1E9961DBAD +:109AB000D74CB3D3C04F094FEA7C12D48FFEB88481 +:109AC0009BE18C3D214A075D0EEE53980FE6F7DED1 +:109AD000510FE501AC8067AB1B904ECB294F00EBDB +:109AE000B7007E6F78681DEDABA7E3D92C9523589E +:109AF000264B3115F5867D975C7CC1642C5D9437CF +:109B0000B0829D207DEFFC6EC511A0E7D9D9E97721 +:109B1000927DECC62497150FADE7E3F603FD42E90D +:109B2000F47B0FFF716E3AFDDEF1D8F3754EB2652E +:109B3000DFDE8A2FF71564CCA3B2F6EB973F72E90C +:109B400069F3028E3BE4361B9E5B457EDAE31EE33F +:109B5000AF68E7DFDDFBDD5D5BC348674F7436D27E +:109B60007DCFC90A3CB472CC75E22A94C7134F7AF0 +:109B7000343CAFB4F4C997C8BE1C7FE479B74EEB50 +:109B80000F1690C02F39CE86FE0CA09F7283C42B77 +:109B90002B7606939ED030BD6E48CC69D143F49CA1 +:109BA000FCE81B129CFF6F48EC9F2765A0DF246F29 +:109BB00035B7578942C2CBF29DBF728B73F643749F +:109BC000951A919EAFCFC2E7D9E869C1AF21FCE7F2 +:109BD000A4D0752797DB6CF2797CBB87D6C94E3A47 +:109BE0001F177EE18A84F45226BA0FE521FC9D7985 +:109BF0001C13BC8E3C2E01F748723D323C7F1FBEC9 +:109C0000CA51F8A7A4E36D4DB19BF6B595909BE4BE +:109C1000B1DBA5BF64227F3CE3623B748C434E659D +:109C20007A863C72F48FF594FD313510A3FD7635BC +:109C3000AC3560FE82F35C884B93999E321FED0237 +:109C40003996C8605FE86437C07FA7C8CBFB4693EE +:109C50004CE7E7B5DB8A282F429BFED1E11A8ACB7D +:109C60008727F271385D5426FC67911733923F7451 +:109C70006739DB86E5E66228CF1EF66F2EF6C6AFA3 +:109C8000F59EC63FBA5312CFF3F8F97ED5CBBCFE92 +:109C9000063CCF7FE2700D3E9F23937F08CF7BFC75 +:109CA000F929EDCF15F7011886AE4DE579B1DC6FD6 +:109CB000814745E8CF8B3F9F899AE8FFB8C19F4114 +:109CC000FFC58B792C50FA593F956B84FC04402CCE +:109CD000B19ECB06B5B1D45992E20085A2DF426FA6 +:109CE00080AF07E6A9EFA69EB7F7B16D14A7C1F440 +:109CF000F04F6CE7354C5A9F8FF43D0E55DA80B526 +:109D000032967ABEC3BA1FA478082E8D219CA5E294 +:109D1000ED18F4B600AE925892CA72364865254ED8 +:109D200045C194EAF81AC6F33924C4B38FBD4AEB8F +:109D300011D994A54FCE74CC3385AE1E6FC8CC0913 +:109D40000DD38F89F5B45BACA79D74F704F8BD22E1 +:109D5000B0AEDE8174FEAA62BC1C87714FC9F1C12E +:109D60007F83F69BC43A6153D0BE7EDEE3E57EB6C8 +:109D7000556ECA1374BD54D0558D49A9EB5C9A2A0F +:109D8000AC4FFB7B9635D3FA54E570399F5BE3A962 +:109D9000B87F05C8F44DE6F93FB09E1D9452CE59E8 +:109DA000FC8797FB5DE37CB1C771DEC5B549A205B1 +:109DB000AE630733C891556E10E7607ADAE3543E1C +:109DC0008B3208DFFBB4014CABC375F221EF141AE0 +:109DD0002F81FCA30AFAFDFDFD6B8C9F07EBA37599 +:109DE000E53972FC67D8AFAF8EF5A19EF5D5F23C90 +:109DF00060C52DE28B2E3B7E8F7AB91F629556BED1 +:109E0000B0B7BAA76E07E0A56F5A44C87B8CE201D1 +:109E10002F0B3A005E69BDBD59127137C92BE48C16 +:109E2000E95AD1B09C295E8316A92E00144B0FF27B +:109E300091827C96A03207E507E4E92F42BE826C4E +:109E40007078511BA673F9DBD1FF5701414A3E954B +:109E5000492C2D3EC1E7AE7CBE9F1C82F24FDE7CBA +:109E6000AE97B0DE80EBECD8FB888F481D8FDBC04F +:109E7000041594972231BF224BDEE6DBE56D881F87 +:109E8000F3EC79CA7F1678FA8B97AF5F717CD43781 +:109E9000D9E57BC43893EA9B921E67428CF2F37239 +:109EA000DD1477D0CE667F94E9869C5B9B9F8B50B8 +:109EB0001CE661AC7774F634539C6812E7EF80AF10 +:109EC00097F85B3B47C4711AED719C121F9F773E58 +:109ED000062A90FF9A78DCA4C6C7F5B8AAB551BC8B +:109EE00024DF27F2040C1E4F19AA37F3F643F57A44 +:109EF000FEFE53C4456A7C99E322B5BED3C54584B2 +:109F00005F5B39A4EFEC71D84A91F73A5309909E00 +:109F1000F0B7F1BCD78AA84AE7BC2AA36BE93C9208 +:109F20005FF057D9129630F97B5ADF58DF57DC6261 +:109F30008FCB0617DBE3B825222FBACC11AF2D113A +:109F400079D125CE38AEF05F308D3BD3FAC2E9BF70 +:109F5000CCF27DBA3CF4E7256336E14F1FDD399E34 +:109F600091E20ED9EC71C7B48947C3C07F45E7EDD4 +:109F7000696E017814B51F8FB8B02D417E4E64FF15 +:109F8000A56E8A1F6F655E9E77ECD00B1F2DE1E7F3 +:109F9000E9EE0DB3047FA8D17D4F39165D35630D11 +:109FA000FAC3965E94E24FFF19FD5A37D25B41FB2C +:109FB0009C207EB3EC71889DA0D2B72CCAF0CA80D9 +:109FC00003ABA7E7E1FA3587F566944B8B3F3E5824 +:109FD000C5F9436567E6623DB24AA5B856713C963D +:109FE0009BC47998C640A4888E1ED19F3C0363D73A +:109FF000C3742A68F1B2D4F3548531CD56AF12E759 +:10A00000BAC6CC8FD8BE639DDCCFC563637C1F27E7 +:10A0100046F8882C039C55A5E7DB47445CAF787174 +:10A0200092F479699B7D7D1C11F9D011C7774EBEE2 +:10A03000DA68F115B809C8578087687232E5CDD063 +:10A04000F97975D043782901BC201E3E609CFEE55D +:10A050000BB99C38F161F11DFC8FD6F515D04F92EC +:10A06000E139363B9E7CBA1D4F3975763C05A376A7 +:10A07000FC5878CB6DD46DED2CBC59F75965C353A2 +:10A08000596BFF1A84E7D3E2E951079E4A03C00FD8 +:10A090000CF93C2949C0175BC579A87B05BF230192 +:10A0A000BD297E98851727DF17B7021FE3798A300D +:10A0B000D3F1C80BAB0F523C3A22F029ADB6F83CB5 +:10A0C000B31FEAE4779501BFA37FE78DD161911CAF +:10A0D000F4DF88DF7FCB52FD3717FA6B13B0E47AD9 +:10A0E0004B0542E27973EBFC1EE8E35FA23E660F8C +:10A0F000498E73E96D742EDDE9072A2AD3653AEBA0 +:10A100009824FD3B4EB4473F9BA5C03B0EEDEB04AE +:10A11000B4631C4F5280C3C7B681BD4DD9C754C567 +:10A120007ECF68E1669A8803A2DDCD4997EF4AE1C8 +:10A130009F56F670BF53BF459FCE87338E20FF5A80 +:10A14000E764B29D8BA93193740EB5BAD7CE3F1593 +:10A15000ABECE721CA84BE2F13F680294FD07D6275 +:10A16000276F01F7BA0A9FDBCFC794EB1AE5179563 +:10A17000EF66B0E000BEBA859F93AB58C5A28B5383 +:10A18000C6298D87A28B53EE8171F2A7DF6F8F5B9B +:10A19000DD34671EE9AB6FDFD2909FC94EEC6A8F4A +:10A1A0004417BBF0BC8B97CAE096C401CC17D3B759 +:10A1B000713CE8F399AC0786F9F69E7698CF58BCC7 +:10A1C0003F45A3F6F7DD7878E2033AD2295EE2074D +:10A1D0003E39C38C4FA323B6664CA67D11D528C546 +:10A1E000E7D63D14E35697D1FCCF585D41A5D3EE99 +:10A1F00094FEEDB1E76785913E72145692ACF2235E +:10A200008F817E16C56E00DEAA4E5DC6F33613FC46 +:10A21000DCDF7CD717ABF317E2789A4CF781B47286 +:10A22000FB960D6FCEF1ACF366772FDB4BE3766ACE +:10A23000B08EC5D7E23CE00ED1C774BF6C3B8F6ACD +:10A24000F5D3DD639DF7D3655CE757F755AD453A28 +:10A250003ACFFBC98CC747FF179EF7037A1FF5C596 +:10A26000A7115EB49473A7D5C3E7FD4A97D7FA1137 +:10A270007F3BBCA6EC877995DECCF9627C02E04A94 +:10A28000E533F8AF1140AEEE1C9CE6D787E17CD7F2 +:10A29000179F8DFD977903D1C50529F811E7C72CC4 +:10A2A0003FA9EE16C6CF01F531DAF7ADEC31D76232 +:10A2B000686296D0FF3B84FE07F998BD3045BFEF3A +:10A2C000881BF998B764E9634BFF825A14764B9761 +:10A2D000D11F187F8B5D2EAA859EAD75E8D96AA126 +:10A2E0009FAB1DCF9D741C9FD032D2D582D3290F36 +:10A2F000CB2C7918C38A318FF5246B1A33531FE6A0 +:10A3000013EB5C9AD35F72C6F7ACFE2726EDE35BD6 +:10A31000FD8CE44F49AA49711D57846978DE694B69 +:10A32000A1B00F8EF8C3903FD3827757201B7913CB +:10A33000A86723B3E3746E23D2C2A23ACE7F31DF83 +:10A340001F5FEFE6DFC95E93F219BD65031720FFBB +:10A35000F6FA0334EE1B72AC17F9A06036DFCF2992 +:10A360001076E1747AD55486F5AAEE8F6F46F9B26D +:10A37000F46B5592C9EE94F886A5DF2D7DEED4DFFF +:10A38000394E3D3CCA3C148F1A4F2ED2D3F103D321 +:10A39000D753CF59AD2B17F6A38CDBCFBB97A9E2D0 +:10A3A0005EBE2B661AB5B02ABAF4E148A146D3497D +:10A3B0006A8D50BF48A2F72FF85776E17AE8D63970 +:10A3C000BCFE927F19AF5F21D17AE977E23D542834 +:10A3D0000FD965E54914569B282FEB749C099465A9 +:10A3E000A73F57D8D1CEF37EAD76986C49E79A84D3 +:10A3F0007EF138F244D4807D1F455DC6EF97B4F4FA +:10A400008EBA8CE7477497ED3DBA68329D7FA7D529 +:10A410009FDBDB46F72178FA6EA473404EFDE3150F +:10A42000FAE74A71DE18F4CFF3C8178A663FF76E71 +:10A43000E99FEFE04208DE8F9BDC46C98E1EBD4DD2 +:10A44000D6A1FFA3A8640A87E34E963E3F2ADA7B93 +:10A45000D5188B427B574B1B43BBE199CDE3289E1C +:10A46000167E8EB060B64EE77B5C3A233E75F2F105 +:10A470001BC8B753906F8D37707EBFF75B71C4A850 +:10A48000C4E388FC3E22DD1FFB03F26555841DE01A +:10A49000A1F0D1F123FD992AE27B5508BFC14E17E7 +:10A4A000DF73FA1769FCAC854725FFB7BB8DBC99F4 +:10A4B000B82FF8335714E3B8D9D657967DB5ECB119 +:10A4C00065672D3B6DADBFEA73AAB2ECFBF63F8327 +:10A4D00076EC54839C9F9AFFDCBB98B5F0FB423826 +:10A4E0003F7BC41AFA54F922BF1B507E660ECF433D +:10A4F000B1CEC95AFCE9CF72EEC9E26BABBDC5D78C +:10A50000CE76A3E6E7BA45245727B771BA8CEBBBE2 +:10A5100091FC10271F5BFDCAE9FC7C660EFAA1596D +:10A52000ECE9D7FC463DBEBFBD21DA1ACB30CFB235 +:10A53000008F7FDCBD6C930FF9FC2EC4578AFCFBA7 +:10A540007384FC8F5F49F89A83F882F60F6CB3E34B +:10A550002B3202BEACF6FF30BEE2025F518EAF6C12 +:10A56000F70C9C065F73724EE37F6C88EDE8A9C61A +:10A570003CB7B81C1D0BF06C8AC9C90BA17E57AB48 +:10A58000FC10FAAF1B62D37D63A1BE2B7AE00909F0 +:10A59000DEB704829C7FB4E4616C67D6CA3AC5FD1D +:10A5A000B4BE169CE7AEB2068671AE21BFB38C9FD7 +:10A5B000675957B6C87F750A1E766D391049D5A7F9 +:10A5C000BB1CF70158654140B2ED676C5DCCE306FA +:10A5D000C57196C03C81E6C55C2E7C617E3FA2CFF2 +:10A5E000E0F571017E4EFED0C4EE69186F5B5FC668 +:10A5F000B7ED2C7F678BC3DFB1E20EFE5A7E1FD012 +:10A600009638987268E7BA80FB6339629D00EF293B +:10A610004EE4AFB7AF0B14E1D778B6399E0B3FC805 +:10A62000E5F077ACF6CA08EBD0BCE6418A8FF5E4DA +:10A6300088F5E8185689FECDD6984C7014031CA8EE +:10A64000A37AAFE9A37B0D8B3F560C2EFF7D912B98 +:10A65000CF1AF6731239FC3C6AAF886B4693DA0C5A +:10A66000BC9A25B791C7BD2DFCDE9BC3FDED5E9165 +:10A67000973D7920362378BA76220EDB38D83723F7 +:10A6800094A1DD5542DE7A5DFC1C67EF5877620DC0 +:10A69000C0D92B713D69FED465DDE34274DD758D53 +:10A6A000B61DF967EFE1EA5BE92A8CB84EFB5A7BED +:10A6B000F5B85C1DC8AE37170B3E39A3256AF07D8F +:10A6C0004DABBFE443FC5E98646401E60904B8DD69 +:10A6D000D9EB07FD40788A97A4C64783C3F325F8D2 +:10A6E0001F3DBA2807F33522657A3EDAB1FCB2364F +:10A6F00086E729ACF1F69689F154FDD6B310BE6B0E +:10A7000092C10D29F05BE33DEACFAC8F7203B20D2D +:10A71000DF3F38B6C3369EA7C53E9E67318C87F3B0 +:10A72000F6F6AD993039FB783FC8325E9E359EA073 +:10A73000DB531FBD9183F1FB481D8C87FC8FE30524 +:10A74000D2C72BFEE80E2998229F3704B8DFF99470 +:10A750008547355E3237450FBD96C3BF7F20B6C3F0 +:10A760007B35F4BB7E6CB70FF9789794F09E8176B9 +:10A770006CA24CF796F66EFB2089FEEF0306F76F8E +:10A78000F21ACD6918C7A808E40BBD3B9DBE93D44F +:10A79000BE3574DFEC1646F756ADC378422E4BF744 +:10A7A000AB857F08FCBF1FE5BE6236A37CB9C896A7 +:10A7B000B667C7A39E582D933FC76079AF4E1D8ED5 +:10A7C000D76C7189FEC47E9CE55F140B3FFD347E1F +:10A7D000469459FB6D54E7FB73563C8735184CAAD9 +:10A7E00019DEFFB0E296D6BE87B5DF91CB92D35289 +:10A7F000F7E56AF05C5C0DC629126B10B82A43A716 +:10A800007BC9CED8129F8E7C9DBF8A517C41D1DA04 +:10A81000F83E4ACD3D794371CEF319C36B63913E47 +:10A82000FB72ACBCC97809AED30EE458E7FF787D63 +:10A83000C05157E3DC0EA98BB99E630B24E73D752D +:10A8400025019EFF45F05AF1FC6BC5389B6277F8F5 +:10A8500050AF6FF71BE5D82E9AC3E701EB8BEA40A8 +:10A8600021DD7766E0BD154A275F872A01267F1A1A +:10A87000FA46A01DE9FDD5BC1F27DDB2D1D7A2A3A2 +:10A8800045D7BF979EB8C45614DA3714FEA4795A38 +:10A890003FB24C3D21D1FA8A4589AEB52C46742D84 +:10A8A000F16A32D2B3BA595FE343BAC27206D77DB6 +:10A8B000E560B7303FCEC3067DB8BF9C8DAE6A9DC4 +:10A8C000A093B8679EC5D3E87471263A0DDB73B9BF +:10A8D0005FD247B6E35BEAEEF0A15F00769CFC0234 +:10A8E000B355A6F3A6A3B0E7B4BE2A087C9FD657FB +:10A8F000BD79E21C3FE87FBC773F91A313BF349D35 +:10A90000E0E70C2DBBD1EB4A46A2F5D83E391FD764 +:10A910003DE63D5C4F3C1073EA8984F76A287F93DB +:10A9200093C7F3746B673D331EE55A3569FD608D3F +:10A93000FF664E6E37ADEF0249CA47EC9DB392EE0B +:10A9400031B2F44A5A3B479CF3FD275F2AC73CAF1C +:10A95000D7AEF93088793CBF514F04717EC76EF98C +:10A960004510F30F5FBB4569C17C8AAB449CEECBBD +:10A97000ED7F9B8A71AB6EA13F5F0F185F47BE678B +:10A98000AB79FEC9928482C16BCE6FF0DFF5BB73E9 +:10A9900050290CD597F717D8EAD63C967BF87EDE7F +:10A9A000F50FED7797021E96ECCEA3F8D53195CB37 +:10A9B000C1B17DE5DB313EFFA4D0EFAF0762B72325 +:10A9C000FD713E4897DF3CE111798E032E6E1F8D9D +:10A9D000D9B8BF1217FCE29CD7D34FE550BFD76C54 +:10A9E00056C8AF5A08B85D0D2A39DE7A3DC5819C3C +:10A9F000F3BEE6B5FEA74B605ED7AC97E8FE396CB8 +:10AA00007F0BAC1BE3ABD7515CD409D742D39E2755 +:10AA10007375FF8D6E6272A57ED6188C9FF648A462 +:10AA2000079CF9BDD73DC1F30A1733FDD6A6AA0C82 +:10AA3000F9BEAD5FA0FCBFEB1C7157A75FB5372017 +:10AA4000E24553D9393C5E54FF8D7A7DE4FDB56310 +:10AA5000E0DF6392EBDBED5E2ADF6DD7A8FC7A4086 +:10AA6000E779818FEF7F9A74873A3015F96DEFE1BE +:10AA7000DFE65C09AF5646B85FFFD9ED1F763C0AAA +:10AA8000AF27B1586E92F49641FA6581A0C385CC88 +:10AA9000AB07EAF03E591E3F9CF411D453E0FBA0F3 +:10AAA0004FA2F5DD4A9054CCDF5B80F89880FD73AF +:10AAB0007F7E01FE0ECA69E07E3EE0BCDFE61F83BA +:10AAC0003BDB77CB157E6EC1F9DC928BAF0B3EED95 +:10AAD00078F25BB3906F8E6F94A298E2BC74F7EB40 +:10AAE00094D77ACDE31E4DE141C823A8D72C3E650B +:10AAF000ACCD8DF2EDE4478B2F86F8EE89DB082F85 +:10AB0000163F801C4544DE56446ECCC07F23E49142 +:10AB10001F770D56A0DC3BF9EA789675CBEF033C26 +:10AB20009F61B16ECCC278CD352CD6CDEFB9315EF8 +:10AB3000FCEF80C7E2A3061E03C37C4FA319E47792 +:10AB4000EFC77C5DB4765FCD37D19F9EF8139572C9 +:10AB5000B41B1E299D847E5FC38F02645C1B9EE92B +:10AB6000FC22CAFB85DBC53D4DC29E7E16FFA9A710 +:10AB7000E3EBB33F6E52CE1B05DE9CF8FAECC7AA9E +:10AB8000239FAEEF69CC9B6DD829919FD6F09CF3A3 +:10AB9000BDC9F5DF637B1E453DBCF4577784306F3C +:10ABA000FB2DB5AF08E9B167675708F3288FA96691 +:10ABB00008F1FB5682EB63273DE24149C497EC79EB +:10ABC000B1ACC724B8FFF37E978679262B767B78C5 +:10ABD0009EE5A1A54407A8F3FCCA7D99F362973EC0 +:10ABE000B0B948E7796FF6FCD89D2EDA0FBD01D6D3 +:10ABF00067384CB6FCC0A17CC3FED3E74FAE10EB68 +:10AC0000C815873E9F31BFD9CA4375CAFBC541BB32 +:10AC1000BC037E68DD68C2BCF835D2DC2E753CE82A +:10AC200031F1DCFD5BAF8CD98EFBE1EFEEFC490826 +:10AC3000CFA90FED638A7CBF77FB6B4E7BAFEF71C3 +:10AC4000A127AC7AB6BCD93D60B770FF64D9CB1EE2 +:10AC5000F277963D2FE7D4635C63BB8BE6F5E8D1D2 +:10AC600003456741FDFA875DE1D91C1CCA8FB5E831 +:10AC70003694BF2CE8B4F4FB3FA23CDAA13C664119 +:10AC8000AFEB1FDEEF467E71E27546FF7E37BFAF4A +:10AC9000C241B7FED767E17AA7E3C1536ED4436FD1 +:10ACA0003D25B13155E9DFB7DEFF139EAF2EE896A3 +:10ACB0003D3F3DF9C51F4CA6761AAED346A2E3D957 +:10ACC000C84B5388DFBFF70318BFF5150FE5C9B7A9 +:10ACD0007EEF26E2FB3FA86DC4F7CBEEE92A42FFE8 +:10ACE000A3D565166954F2E7ADF7DE4CFC78DDF3C9 +:10ACF000371789FB4B8BB97E308B11BE6BB65D4A23 +:10AD0000F05DCBE2C48FADF72874EFC84995B53C30 +:10AD10009C81AE2F09B9F9C30E0F2E52D81F307E79 +:10AD20008B7EDC0B8AF89D257BFE0D5926A89F148F +:10AD3000F1B13D41D9CA83F2A23E59215AADD8B9E9 +:10AD40008ECE01BE5DCECFD3031E4C813709E356B4 +:10AD5000CAF333C770FA301DFD78FA0E54EA0C7C42 +:10AD60008EED075C866F82ED3B912FCCC75F25C6C9 +:10AD70008779FB71DFE00F45FC9E33E6C8ABBE610F +:10AD8000DF92D99847ED0E713887E47FA7C8531634 +:10AD9000F2FFA7235CAF60DE35D16DC0951C63CB9D +:10ADA000B7F6D8E2EBC379C42E21D7F6F7302FCA15 +:10ADB000871EC2E75312F9C52BF671BD7FED268FB2 +:10ADC0002D3EB862DF45222F3E250FA96A582EADD1 +:10ADD000FCA0EB841E70D2D1A9175E083AF28BB6A4 +:10ADE000158E2ABEBDCC95A0FC76905BF2F396ED55 +:10ADF00071513EF13B0F1DFCE595C0E7EFF45BF2AE +:10AE00006AD7B343F20AF846FCB5EE9DC232C9EBED +:10AE10003B78EF6E267985E719E535C0489FFDD36D +:10AE2000F4ACC0FF30BEEDF2795D163DFB71D07918 +:10AE30000EA13E17CFAFBDFD9DEB2B29BFCD815F8E +:10AE40004BAF3AF5E59D413DCB790EEE0759F8B48D +:10AE5000F068F1E9D2EF2EA77186F8D7E253CB7EE6 +:10AE6000653917E0C4A7F37D12F551617A9E8539E3 +:10AE70009DD5E1EF9D74B8591DC6594CD91F45FEAB +:10AE80001D299F6C45A84AE8836812F9FEAB071993 +:10AE9000DDDF82FE0BEE1F9D7A9AD1EFB5B9C2BA03 +:10AEA000926A67A233E48CE756278478BCEEC1101F +:10AEB0009FE7E5219DDF37A8C4441E693FED23D1FC +:10AEC0009E09CE332F4472E612EB75EB9C5A344741 +:10AED000FE5007DF6946A8FC732AD0293A49BEA96B +:10AEE00006EA736FAFFB9C0AF48E9E2F7FBF1AEAAF +:10AEF000F36E1FCFDF9F2D4F7201ABEE363FF3B9DC +:10AF000066A8ABB2C41AA07FB584DF2F772BC8B573 +:10AF100017F8BD33C48C3CE0BB1C0F337D0DC3F36D +:10AF2000CB71433D9FE0D631EED191E7A5FCD04EE9 +:10AF300017FF6EB4FD59FD34A8FA0C84CF530B30C3 +:10AF4000560D8FD3A072B8EB036ECADFEACCE3E3F1 +:10AF500075C2781DD48E11FE465B5AF75C28399C69 +:10AF60001E4AAEDCF630945785B89EFF72C8DAC729 +:10AF7000E3F18CF79F1CB383C75F4F54D0EF3628A3 +:10AF80001FFCFA6BF0FCC49772687FEC153FE793E7 +:10AF900057FC9C3F2ECFED757D069E37782B6E4279 +:10AFA000667B457AE8662C2FCC8D2F0D713B42F7DE +:10AFB000B65F7995C2FB0DB40531FF5B32B8FF2C4B +:10AFC000011117005E3A0CA6BB6B5074EC79B98A7C +:10AFD000D2702249E3076DE3B332B04F205F979FF1 +:10AFE000CBE50BD6C864AF5E6AE4756B7EF313D510 +:10AFF0001D833ACDE76B389F899E4439AEE3AEF4AA +:10B0000024C6727EB3E7AD1EC7FECFC612BE9FC078 +:10B01000F522DED33B59C8F1E4C7B9BF6FE523AED3 +:10B02000788FFBEBD6EF015AF981382D848F291FD9 +:10B0300017D17ED07332F9E90D87EC7917E78B3C95 +:10B04000A4739FE3F1BB731DFAEBFCC7BF407AED1D +:10B05000FC11D6C77786843E2B61257F4FFEE9CF52 +:10B0600025E39E10D19FFFBECC6C9519A9BFE3B814 +:10B070005204A83E78AE3A17E3CC4521BE8F60E576 +:10B0800077BB7585F25CF639F4A2C5CF671DD1AEEA +:10B09000C6F99F75847D99E353F4AB717C0EE57519 +:10B0A0001EE3799D1307EBBE45BFFF76D8C512FAA4 +:10B0B000703EE30747783EE3D4C3FC5CE3A3B81ECD +:10B0C000C7B85BC47E5EC6A7FB999E82979CBA7C7C +:10B0D0005BBDD3C7E96BE5454EE2AFE85E92D47E37 +:10B0E0002669FCF73A731BAB6DDFB3E7ECF98C0D07 +:10B0F0008CDFA7157D95FF2EC1D42376FA2A429FB7 +:10B100009E27FCC868D2243DD9F8AABDDD798116F6 +:10B11000DA5F3A6F84FDA55F84C4FAC0A2733A3E39 +:10B120006DF9A113D9846FE1150B69F83C66C7A7C7 +:10B13000C50F805705F56C9E61C76B418B1DAF85B0 +:10B14000313B5EC7CCB7E3AF386EC75B69EB676C6A +:10B15000EFCBDB1A6CF5CAD5E7D9DA5781C14AAD16 +:10B16000D7F47CDED67E6CDF5C5B7DDC962B6DEDF0 +:10B17000C72716D9DE9FB97BE9A8F8E0ACFE95B6E3 +:10B1800076161F9CFDF8BFDAFAB3F8C03A87DFC025 +:10B19000B85F1315F9B423F1C139611339FF53F3C3 +:10B1A0004138D7C107A394F73385DDC5BC68F4EFF8 +:10B1B0002CFBFFBE2BD083FE6D1EF008EAE36CFE75 +:10B1C00040DE133FA678BE33BFE194ACD3BEC726A2 +:10B1D0002546E7364A818432F051A7CCFDF8DB657D +:10B1E000F9CBA9FB5B1372B91E9990CBEDD0DD6052 +:10B1F0002FD13E96E63093ECA6CC867F4714F01E06 +:10B2000012F76630B6755D7313DAC3C13A3D0F5558 +:10B210000ED42F48B74B608F26E1FA03F4FE79B9BC +:10B22000A0DFAE9441EFC390976BE64C09602CF51C +:10B230003213CF9B807DA473DC792C2CADACC72559 +:10B24000D390FDD13F01A638B8F44C3AD7F341EB87 +:10B2500078BA0FF103806180EF1FF2DF3DD6A3942F +:10B2600087708558BF7CB0B886DABD7C15481FF062 +:10B27000D7CF70CAE06FBCECE67818292ED7BAFD9C +:10B280009B41CCCF79B98EE73958CF17087C2DC8B0 +:10B29000E5F90D2B16E798FCFCA88BF6BF71BD8570 +:10B2A000BF87784382CB33D6310EB55EBBC37E0FEA +:10B2B000C0E13613E39D2B9E98437967D63AE1F2BD +:10B2C0009778FCEFF2BFDAEF1BB93E979F4FBF3E76 +:10B2D00097E7A15C0605DE977419D0230FCB1F37C3 +:10B2E000CD42F980E74909EA171F06570DF03E27BE +:10B2F0005EE54224FE82455F7C04A6FE955C3EFE30 +:10B300003C1673E17C7E79D5F220B61BEACFEA07C2 +:10B310002687FED24B79A6AB08F4D6890B24B2FB64 +:10B32000309E179FC716947661E8D61AEF972CFEC9 +:10B33000DE8B201F735994FAB5FA67B87F93A21772 +:10B34000572EC94916407F2B5FF6D0FED3FB6B4EBC +:10B350007CEF2B30AFDF2CFDF32378FE80C507CBCD +:10B36000D1FE5DB145613AD0FDE680D19E8BFE4BAA +:10B37000E3E8CE97CFF88E8FE461E566EE0FAC7C04 +:10B38000701C9D0B5F191CE29731A9FCB244F0CBF5 +:10B39000CAFB6BE81CB9F5FB1CCEFEBBDAF93D1706 +:10B3A0001DE27796BBC23C5F5865F1CD38BF4EAD0C +:10B3B00081EE112F2BE0BF4BC4CA46F97B3030BE63 +:10B3C00089FE13E3F3F8A9E0D3F94F144C12FEDB26 +:10B3D00076ECFF95A7F694A33E7B76FC0363695D4C +:10B3E000347974F8B0F4CAC3C29F62C24E4505DC1A +:10B3F00060A7681DF23EF347D1EE67D3370F0B3FCE +:10B40000ECAB8A41FEFF293926CEA1C1F25121EDD4 +:10B41000F093F3D11FDF2F533C3284CAC8D21BE014 +:10B420000B863069DFFA3D60582F9D29F4CA0FBFA3 +:10B43000F1D6E73A797CD7EEDF89F894E5CFC5E01D +:10B440002FEAF7F385BF316E8B3DDE796E52A6F59C +:10B45000E9901FE7F4DF306E340AFFED67B99FD63D +:10B460007F8B1F453AF5D7717DDC9FF4F3731F6026 +:10B47000BAF83D5976BFCED9CFAF855EF91DFAD463 +:10B48000B82ED3B87DC801FD18E4E7F74CA581EAD2 +:10B4900094220A6E9F51C8EB666E03170FFCCE2DE7 +:10B4A0001DAFF3823E3EF68DE3EB7AF03EC75A8E37 +:10B4B00067ACE3EF6F825011DFAFB4F4E4A1CFF0DB +:10B4C000FB65C5BD3893451CDC39BFC9208FDC380E +:10B4D0000B7916DF279FFE0BDD77B1275FFF39D28F +:10B4E000FFC4330A9DC3F6A983EEBC0C703E8A7A72 +:10B4F00017E4E76C8DDB1BEFE312DD1BE2D5F93AB5 +:10B50000D6A76913298E1E673918777FEFE11A5A7B +:10B51000D7BE26F0F37F01A7F53147008000000079 +:10B520001F8B080000000000000B95590D50545768 +:10B53000963EEFA77FA0A17974236A74490B08A2F5 +:10B54000C0B4808A24D974D45187106D759238356F +:10B55000994DABA5380874C6CCBAA98A3569D0C94B +:10B56000B831B5C56E52B3ECACB3F57093A94C02CB +:10B5700099768448520DD5225130EA803119CDCECA +:10B58000A488D932D98CD01D67FCD9A9D43AE79CBC +:10B59000FB5EBA6970924DCABADCF7EE3DF79CEFDC +:10B5A0007CE7E7BE2ECAF4CBDA128026A5234F2B08 +:10B5B00000F88DE453690E1055FD9900752AF8C204 +:10B5C0001900E1687ED6561CCB5438A0BA003ECC98 +:10B5D00092006600DCA6FFEE0708B65702B8019A93 +:10B5E000DBDD3C96F4E27B7C148C2A3C4EF4EE735B +:10B5F000054A13EBBFDC37337EE3BF72F0B85F5907 +:10B60000BD2FE35016A9AC87721CF16F0B9EF3EAB5 +:10B61000AD452C6FAE360F60099FAFD273005DDE73 +:10B62000888B823678228C72276E29BCCE945BD6AA +:10B63000FB80A239014AA36D0380F2D322364F0862 +:10B6400045A4BD0420F13C4D075431D8BF06A42ABF +:10B6500080583678257CDF951EFF10701EEFB37979 +:10B660000EE3FB34AD0D5C28BFCB0A8FFB712C01C0 +:10B67000F0FD3A23F1DC3C2F2DF2AF00F8DC5E0840 +:10B680003E9DDEAB6D705F46E2FDEFB33219AFFB5E +:10B6900034603BBAD2A37206EA119F0F7098F54A44 +:10B6A000E8097CAEA967891E92E8FCF895A7735853 +:10B6B0002FEDB087F4107A42A4D8F332EDD77C6C2A +:10B6C000479AE6F1D2FA54BD82E5A04316C03FB5D1 +:10B6D000E29E1AC20F7C508DCFD31373FB023C271E +:10B6E0001FFFBA8BA6850756DD9B3C8710AD37F749 +:10B6F0006F6A2B3AB07F2E80AA4248A90070E0986A +:10B70000E9223B3D6CA78AF26654081CBC8893C3AF +:10B710002EDE7FB9DE8E6AD13C43ACF366855CB524 +:10B72000689FF794ECDD8722E08BDB004B914F7430 +:10B7300032CE7F2845AFDC8F2EBE1E1D28F7A04ECF +:10B740008DA7DECAB3E2B84B8EFCB40CDFF7DA0289 +:10B75000DFD3F0DC63BF93C189387CF6CB34BD0EF8 +:10B760007159F06647AE2F63AABC9F5C6CFD973998 +:10B77000E4F737250F220E314B3C8FF46C8E7C6240 +:10B78000F5E1B8A6F723EB188EB7B4403DC5437575 +:10B790006FCB4AC27139B4EDD3705C244380E3624D +:10B7A00016CA4339D72E141D6E41DC211EB89B7872 +:10B7B000F9CFDAE4F8883C83EF8A01FA9FB1F39875 +:10B7C0001A07E61882813980327B2C826FAD3038BF +:10B7D0008770EF39FE9D020FCA8DE9EA5AE2D7A2BF +:10B7E000F7ED8FFB92F8775093995707E95C1CE7C8 +:10B7F00064077E4478EC3A7ED9EA44FB82FF1DCE92 +:10B800000399E33B346D7CAB9EAC643E4F89EF946F +:10B81000F80AAA712BE110FC14F95ECAFEDF9F85BD +:10B82000FE7CEDFDDE855B32587FC8425C7A2ED906 +:10B83000748A3B9C6FA6386D79EF46F918BEBFD16C +:10B84000B7EB6EC273B766E173301E56A453DC1DAE +:10B85000C178F024E2B694E2165529A578A8A27919 +:10B8600009CBEBB28ED4729CF6C840718AF1C0F15C +:10B8700081F1A0511E29D5303E787F31C77DD78810 +:10B88000ECA379289AAECFE7F98A4D34EF1A59A57F +:10B8900071DCCB087D05C56F7480E58401E6936B90 +:10B8A00025F0874B93E3D8C9FAFEDEC0279E25E238 +:10B8B000D9A12893E2C4A9C8665C89F93E89DFDF73 +:10B8C0006C7BF4C08B7329DA2A65E2E36E4DF011CC +:10B8D0000238CF0578D2CE7B60F7DB35EB3BD1BEAB +:10B8E000DD67157EBFD4F7C44A8C29A85EDB76825B +:10B8F000C61A7F78A585F46B57C0837E5982A30F43 +:10B90000F3ECBD9B474E5844382F22FF760F7C6BDB +:10B91000914A3CBF64833454A1FBCFF10F5F45FBD8 +:10B92000F6F423AE30957FA82EF3ED4EFC8C4963E0 +:10B93000CE02D4F99C56BF564DC378592EEC7C47A5 +:10B94000DB7E20848AF9B37DE788770DAEC039E2CB +:10B95000596CF4CFB994CB7B2E5C7606D0DFDD56E4 +:10B96000DF228D47D819CE982A3F427CC07D55945E +:10B97000D78DF85251DFF1767707C5D778B7E2CB8C +:10B9800045CCE306DF21E41B9985B86D17B0C1CE25 +:10B990006EE5231BD68F1D3E80BDC8C7ED830D7598 +:10B9A000544F76BC68B93CB640ACB94DEBF0DF53B0 +:10B9B000E8EF220201E53787255DA7F855F6CA347E +:10B9C000BF1E91C02DD13AF5F298E193DBC89346A2 +:10B9D00078FE7305E5057B2D89E7F8AF71B0F613A6 +:10B9E0003AA791D62F48AC7FEA77A3D98349E7C617 +:10B9F000B5CC9C2B0EFCA3000A6E2BCC0B6F94785D +:10BA0000FC9EE23D4C354F85211BEAF59A2CF0C196 +:10BA10003CC97175F39991EC4184E6A72EDFC759B3 +:10BA200068F7C7C43B8A9B1522FFC4BB249DE3E093 +:10BA300015CCEB38AFF9D4D301F3189F0BB3960AAA +:10BA40007B894735AA585F1399C77154ED036F146A +:10BA5000EDDD7141F1EA840BE1E5A4F22AECC37259 +:10BA60000BB7F3495E9B42B8341C425C70DFAE57A3 +:10BA700026DB1F3470696C1F3D391BE74DE194F7DD +:10BA8000063EC1147C7E4D7F2C9F8AD38C6C03A70D +:10BA90003CC8239C40792C8BF8034308C6ECA9BC16 +:10BAA00031F1A170235CFE40F906D79F37E4E37FB4 +:10BAB000195B90271F1B382CCE16FC69F609FF373F +:10BAC000EA8AAEA33EDB0CBEC0F3822F76FC9FEC6D +:10BAD0004784AD6C7FB7043F93A6DAB7B3D3B2C542 +:10BAE0008A3E6930700078C24AF1B7F3D064DE351F +:10BAF000183834A4E0D01C9026E981F19BB105FDF3 +:10BB0000B6CDE0F59DF50A3F42FE6CE8B4C073CCBB +:10BB1000DF2F58CFEBDDC24FA97A9AFA99FAFE7F50 +:10BB2000F54CF553ADE9A785B070929FD6BABF9694 +:10BB30009FB0E273DEDB6D177EB936B8300B4A1367 +:10BB4000BC48DDBFBA5DF4936BDA457FD93D3270F6 +:10BB5000E01EB4BFA24FD1EA707F6C6485A38CF263 +:10BB6000DD19D54B226291CA8321B4EFE850E1265A +:10BB70000FCAAD1895393E2ACF56E869684FC5D926 +:10BB80000A47412693C2ED2FE37D5C5F63670ADFBE +:10BB90002D253943ABAA08D69633150EEA078EA297 +:10BBA00065C42BE9EC9FCED1B995C3EA521BBE7F89 +:10BBB0007696C271B5E6DFB6FCC28672B7662B6CAC +:10BBC000DFC991DDDF267F349D91357A3E7146E6EF +:10BBD000758D3F577419E76B8E5838FE8218FF1227 +:10BBE000EB6BE1F3837DF3DDDB32123CD86AF0B618 +:10BBF00022DBF3421DF57DB31DDC2FAFF91B0BD704 +:10BC0000C5AB7739FE93FA9D225FC76A0DF5BCFA82 +:10BC1000D6939CC7625D12CC42C127679D783D8454 +:10BC2000F65D7D63D44ACDF5CAEE512BD5E1AD6604 +:10BC3000BC1F103C3179551F95B758BF81F9762448 +:10BC40001DA2280FD4362BF9A569D49C8F59A97E43 +:10BC5000FB8D3EA9F9A58F78DE407D3FF1F12549A6 +:10BC6000F7E09F27FA8E311F9B3B2598398FDE77AF +:10BC7000ACA675BB20FC2CD581D43CF27D839FF50E +:10BC8000ED29CF0D3E7EFF2BF87888F88857066C9B +:10BC9000084A888F371EF0674571DD8DD1744729BA +:10BCA000EA716358615EFC155E72FD3B43FD1A3A12 +:10BCB000F65A54F6110EE6BA8933D7ACD44FAE8E8D +:10BCC0007CCEF8D5458EAF225C1E824023D9F95038 +:10BCD000C4A145D1EEBA3191576A2336AE2B0F413C +:10BCE000783FD91BEBB7F1F3D05B12F721665EAA60 +:10BCF00037FC5B6FF8A31E13AF1B535DE390A8677F +:10BD00007068B27F1E5C30199F5A10F9A3362CF26E +:10BD100047CC1256C90FB13209DA28BF10AE283706 +:10BD200036DBC1FE097589F31B3B27CB69269C9D39 +:10BD3000B47E72DD7B3D7B06E7CB6BAAA817D72EBE +:10BD4000285521CF9DFB8454BFFC26C52F7571E07B +:10BD5000BA574B7507E50C455B4B213F8153AA5FF2 +:10BD6000863C0559D3DD1FCDF19CD15F9BF3F518BF +:10BD700038D4B78535E187E191191D54EF1A962B18 +:10BD800021EA1FAA5D22FF37FEDFA6F51508DD5563 +:10BD900079604F27BEFFC3967011F90FEF139F9084 +:10BDA000C9A7E66E7B7E31EEFFACCBE2A5FC02BEFE +:10BDB0008E22CA973F99F5425D05C56DA7C54BF721 +:10BDC00087896A2544F93488FD34F0739B4EFD4A17 +:10BDD000B0F78FE23E417CC1D11F91BE497CC1FECC +:10BDE000FC8FD978FE062CF93988C3865EEC0350A7 +:10BDF000FC86559F5B297F629F7E3D7B9A3E7DB886 +:10BE0000B080EFE1C3AA67A62BE3CE7D7AF32DD1F4 +:10BE1000179ACF9B315E09D7E688C4F7D3445F38C1 +:10BE200053A2BE30D6776CD0C5F9227B31A5F3F989 +:10BE3000063EDD0369A2BFE891F47CE2ABB49FE368 +:10BE4000A3D922FCD78C798B78006FA29396619E40 +:10BE50003CFFEA7E9233F1AAE4B57138F92E509F87 +:10BE6000BB43500126B6862F537F7DA3CBCEFD6703 +:10BE70003DFAE729E4F90EA3BED17C2FF63F2DD081 +:10BE8000CAF7A056D8CFE30EFCF7B71553F3C24458 +:10BE9000EF3E2BF1C2EC57F839F2A8C9E07B6A7E7D +:10BEA0006932F8DD94C2EF54BE56BB8CBA66F0B569 +:10BEB000E57CFA41FE4E30AC6836EAA307FEF73F58 +:10BEC000EE225CB0AF665C8CBE04F162FFC7463305 +:10BED00074C2F533839757E9DE8780B4542B8C9373 +:10BEE000BC5C8C8BFA8FE593BF637D37F302989728 +:10BEF0005FEB3FB690F8820631FEBB5EC175497AB2 +:10BF000035851D9404BE9CA35EA27EBCAF30DEA826 +:10BF100057913527A1578F3AE6F44E134F9234C00C +:10BF20007E94A5C149FD7EF04DC5AF27C519DAF352 +:10BF300038E5BB5A830FA0C673A94EAE73799877C4 +:10BF40002D11E177B94F8C78FE23E2FB8985CF9FD5 +:10BF5000F27E45A891DEDF98E7008A47B815AAA3CC +:10BF6000F99E7C059EC3F99EF30DC590743E48E290 +:10BF70003E1CB4C473F9BE392AB37EC1D16BB985F6 +:10BF8000A41774ACA27AF7A091374EE63B7612BFA5 +:10BF90004374EE4C002BD987FBDF33EA7170B9D8BC +:10BFA000DF6AF0ABFB7CADA38CFCD53763B1822696 +:10BFB0006D36FAC206977FBB6B49E2DE72A7BE33CD +:10BFC000E9DE24E4A39D1457472FDAF43A89EEB949 +:10BFD00037DFFF2ED93B8CFD08CA6FE9B385B2C8A5 +:10BFE0005F1FA4E9D40F4020F00D8AEF3DFDF5C599 +:10BFF0005417416A657F3CDFBB3DF6EFB8AFE9926D +:10C0000083323B34F5BD97CBF5B767C90BD4CF600E +:10C01000FFF220F533472316EE672ACE5631DF8E26 +:10C020009EA97217D0850BBC0E92DB34ACFA098F37 +:10C03000A6E1AA77EAA80F39BB82FB19E96C959BA8 +:10C04000F25125DD6FA99F192EE4B969CF5E97C023 +:10C050002B763C8DBF3348902FF8028593F8D2D8C9 +:10C06000FD36D7FDC65EC597CC1B735F9B4B65390C +:10C070002F125F10CF96B0E4633E1C116363EFD1C3 +:10C080005CB2639725CCFE6DE9B488F75D62440924 +:10C09000BC2F846D22F9F31D7A847EA8B5EA730162 +:10C0A000553C6DF4F9A72F05EEA67C78FA81403156 +:10C0B0008D396EF11D24F15D6505EB0DD246F6FB61 +:10C0C00078B7E8B352FDE832F639DDF0B87F9AF779 +:10C0D000B25B667B6AADE2FB0FF567B331BF9D33A0 +:10C0E000EAF73ACC63F4DDF19C112FEF82DF82771F +:10C0F0003D1CC57D33BC40E4CD4D98375B70FDA63B +:10C10000872CDC5F40B5E8BFFDF83FE5AFE2767510 +:10C1100052DE7AF8CB7B85C7427EDDB476725E7BD9 +:10C12000D8E88F1EFE8AFE28EA32EA701114897E52 +:10C130003DC341DF19AF0F593485FB11BD90E2FBC0 +:10C140004EFDD149CC671ECC674398CF68C43A7581 +:10C15000DA354D9D4ADD6FD6A99692DFF2F79FD36F +:10C16000C72FBD9ECDF9330DF289905FA03688634D +:10C170009366E89AB2BF0536B2FF5AE1DB93F867DF +:10C18000FA719CFAF2D2A97EBCEC12FE6AA6FB1BE5 +:10C19000FAE11F17B4F969BC2C0B3EDAED7BB1E173 +:10C1A000C3788C6C008AF39612D19F8D7F53D2296D +:10C1B000CFA39E79B6A43C3F3E5BF4597B1E91F819 +:10C1C000BBECF192DF725D6F8A8E58290F15756F87 +:10C1D000F931C52912EE02DD6BD619756FBD5DD43C +:10C1E000B975E63DCEB4D7E04D0BB842221FE7F05B +:10C1F00048EBA90EAE33EADEFAEAC9FE2E8691D5E7 +:10C2000073508F477D12F74F1B7C9669F9B271F31B +:10C21000E2B7E99AF575F932DBED57DDF4DD66E456 +:10C22000DA23F45DB5D9E0B9B7D8D33B46DF67DF91 +:10C23000D116EF23BC1CCE720D799B69C4C3CFF01D +:10C24000D6E7A6FCE7C8D3A9BEC6F4CB3BE87BA3E0 +:10C250000B7B107A6FC693772654FE2023D94F228A +:10C260004ECC75ED2E8DE7A72DFA5CCA0750EA9EDD +:10C27000F61E989A775B4A4E95931F4E1F1F2EB756 +:10C2800026F9EBEAEE4031D78DBE13B99E8C643EA1 +:10C29000C9069F541E2569A3510F27F3EB2AF18B82 +:10C2A000FC7BE4C4BAEF122FBA37E5489EA47AD9D2 +:10C2B000F3AE737E92DCF188C2EBF17E54F47066CB +:10C2C000B29E3F663DC7C3421E3A3DC4F7A2371631 +:10C2D0002F7D4EC01F92695EB8F5177C8F877DBC9D +:10C2E000DEE4699A25E49B83F6D87AB163CC4FD813 +:10C2F0001DB602CB09F5DBF497B9EF07EED7621F45 +:10C3000069DCEF02CC05E2E11B06CF361AFE5A8645 +:10C310004D2EF1713984158A8765A0C26334573177 +:10C320009071BC177485F2EB32357A5C2AE7E7210D +:10C330001579781F8CF1F3FBE9D310EE7B003C2AD2 +:10C34000CD5742681F15AA7BC2D10729BD4473D5BA +:10C35000EC2BC8374A31D3F92D818B0A574CFEE1BB +:10C36000626C62F8BBB7A9F75249E8BDCC0776CA40 +:10C370009F4F1B71ED75083BE3E3C0DFBD4CBDEE85 +:10C380005161AD82FADFA7823D1DD71F1994395E36 +:10C39000FBC73C3AE537AFDBD8F73FB86F1EB72491 +:10C3A000F05845C2CE1ADC47DFDB96A97823667CBD +:10C3B000A2D3DADBEC16BF47A1A4BF23792B233627 +:10C3C000EE5F647B48A17EF4876EE137FA5DC48935 +:10C3D000726ADA24B848BF731408FB4CF9359882A6 +:10C3E000B22A68BDB08B3E195F7489DF4B9CFC3B61 +:10C3F000D72A8DF091A2B9F26DC7D7C731960BAC91 +:10C40000B7735B7CE2E9AAC4EF46DEC8A98B12C60B +:10C41000A7E4F3713DF2DA33A2D427A3D7AF26F70E +:10C42000CF07DC5B9FA53C207934C60702E0A1FC66 +:10C430003E130E69543F645A87587E90EE2CA7DF56 +:10C4400095C85D9FA2BF1E3578F641BAC803AFE814 +:10C450001B3DC4EBCD39762FE15F61CFAB24FEDE0F +:10C460009F1560F91F489DF35998AA2FF167267808 +:10C47000ED005F35E17D334DC8C76E81F9FA945DFB +:10C48000CCFF21DD79984607A66B3BEA7710E3C025 +:10C490004EDF49D3C4B914A3C4E790F17D34F461ED +:10C4A000A64E9FE06FCA7E262546974746F9B0778D +:10C4B000A587BE2F3F9B6DF752DCD9C83E47C23ED1 +:10C4C000F37CD3CED4F3C9EE7B4DBBE5C4F9A6FD16 +:10C4D00053CF0F59160A1C9EA4F588C3510387BF7A +:10C4E000E743419F4F3898F6A363F8772BCDC0D52B +:10C4F000C44123BF511DF1A1DF4CBF23AE07D305BB +:10C500000EA6FD784DB3B31C0FFAAF6CAA7D7F0168 +:10C510003164B4F9001E00000000000000000000BB +:10C520001F8B080000000000000BEBE66760F8516D +:10C530008FC03BB950F9E8D88713959FC88D5F3DF0 +:10C54000212CC3806037713030943243B021143FC6 +:10C550006462603803C533982178150B420F133B92 +:10C56000030317100B01B1143B7EBBF85831C56AA9 +:10C57000E51818149410FC7C4906866D402C204563 +:10C5800099BF46F1D0C09DC6A8FC133AA8FC377AE3 +:10C590000C0C622608FE491DD2CC6F03EA6D0762BF +:10C5A00000454552DC680300000000000000000068 +:10C5B0001F8B080000000000000BC57D0B7854D5D0 +:10C5C000B5F03E67CE9C39F3CC4998C024847012F4 +:10C5D00012081A74080183453B3C545AA91DD1DA4C +:10C5E00068BD380424411182454D5B7AE7901713EA +:10C5F0001230D6A0881407048B55DAE8456B6FF12A +:10C600007610B4D8EBED4D7B6DABB7EA0D681151E8 +:10C6100069EC43ECFDB5FE6BADBDCFCC992101FAC1 +:10C62000F8BF3F7E9F9B7DF66BEDB5D75EAFBDF645 +:10C630001E973C8D053FCBD8A7F807E932993156B4 +:10C64000984919538C410D53667E3A212BCF3E7584 +:10C650009C4BFEE349D97953F4FB75C64633768784 +:10C660002883BF08E6E7898C058F95B2B0CA52557A +:10C67000997EE6319E3764897D2AE1D7EC726B9C06 +:10C6800053EEC0052C8FB1168DA77779023B313D53 +:10C69000E52E4DB2005493621558CF9C03FFAE8532 +:10C6A000F40D7FB28DFA6BBE303A8531F8777DBFDD +:10C6B0006F1878582B63D3194BC4FBEF7DCB99F9D6 +:10C6C000AE95984C0E42711D0BEF3620F53105E703 +:10C6D00095C03E31CF064D0794ABC1F0B40D909F8D +:10C6E0000670633F3572741AA68886A81F9B1BF4D8 +:10C6F000FD405967A801E0FA7DAD1A76C1A7DBCBF2 +:10C700001E61AC9CB14D337F158A5533E651924C76 +:10C7100007F83C152C827032F64DC66630F6278D30 +:10C720008F67C13587C9848F0CFCD9F8FA2FC6D71B +:10C730007BE338E3EE59009FF91F8EF06E2A1DA8A7 +:10C7400067411C6FB4BC01E6B03E9E4A555432D6D8 +:10C750001167BD0AA4EB9D835B9660FD179D34DFD6 +:10C76000B6B8D6AB003E0ECC9C983708F05D84E39B +:10C770004ECF8CDBE6F7D427AB09BF31C4F75DE1C0 +:10C78000FEF3379431E62A3DCC102FA78E3CF119E9 +:10C790005CBE8B7071A0DD2628C3F1CD7C96DC4D8C +:10C7A000EBC2C70BD4E9351B089FAB69BE161DB998 +:10C7B000EB603DAC79613E38C8108479FE6B19C2DC +:10C7C000E3ACE88D3048A5D2E3A684E3032EC7404E +:10C7D0003DC79F1D340E2BB2C689F88AA05F2F1368 +:10C7E000EB36F0391A47D579DE1B8E2D6017C0BFA6 +:10C7F000AB018F30B60EFF7D0A7D69153C6F8DAFA2 +:10C80000B09E0F1C01C4B60DDF3027E5B5CFBD8348 +:10C81000ED1566AB0FDF1D9F4C8B225E36D5DDEE2E +:10C82000598770386ECC8BC1BA3AEAE4232EE8C738 +:10C83000110BF4CE1B95C1A7EFB5D9A943B6F9AE3C +:10C8400065FEE0312F21F022DA07A27D2EFD5AE9A4 +:10C85000A9782475C849F393EDFB71A4FA6D71C6EC +:10C86000529332F9F6B24808A6CE7ACC2B23CA4CA2 +:10C87000C83B2321290CF51EBE22321FF28E49A986 +:10C880005018C6EFC9874E8B19BB9FDD9A3201FF46 +:10C890008EB664280CE90667CEF7B951FADEE18658 +:10C8A0007D577DFAF8BF620EA2D30DD2603D73644E +:10C8B000F8864BAC934B7FE1CF12E0699314FE688E +:10C8C00010F7735180E812CA134A01A5F3D51AACC8 +:10C8D000AC29B89E9AD54E61ED4A0DA5F3D4029CC1 +:10C8E00057724B03D25D918FF6417BBE9A0A407F0F +:10C8F0001BCBD41D0E2903CF6126119DB63B399F5A +:10C90000D8E8CCE617CF6039C0BB8F39793D3F9F5F +:10C9100017D3DB4257FB87E907F1743163FBD96218 +:10C92000D3F4E177CE073641B184F094A99C3E233D +:10C930006668A13FABDCCCB797EBEB420BA7201BA3 +:10C9400084FE013F5A08FE3D21AB3E872305E58862 +:10C950008722A415A0D3FC65875348EF3ACBC24F7A +:10C960008D1C3B8CF3E8C85BD4DFC0327C2A978FE8 +:10C970008F4437B9FCDB65D8F2F8BF902D5F8EFF8E +:10C980002FD1898E598EDC3067D3784E66FDDD91CC +:10C99000357EFB256CC801EBD43353355A613F39E2 +:10C9A000C36A0AE901FF8670FFE23FF07B5DE78022 +:10C9B00004FB4FF5054C6F00FB837D0A7967280760 +:10C9C000AEB3EC9F969CFDF75ECEFEFB135B41FC85 +:10C9D0009AF5CEA7FD151070AAB5AA89E3A9AC6790 +:10C9E00000D3F43EFCCCC23C9019C067D423C437BA +:10C9F0004249661F3F81FB0F885896A27FC6756C1F +:10CA0000CBDB4EE58A6A929C60E7A95CEEB0C1D0B0 +:10CA1000D55332EDFE4BF0E12D585468C327EB653A +:10CA20005CEE844328EF3AE22DEC4DE0EB9EE79676 +:10CA300033630ACAA9E64804E844419A9A897451C2 +:10CA4000CB538591BC5446EB3B512E380D6DB181D3 +:10CA5000F833F4AB31656C1DF5EBAC3AEF6689BE8B +:10CA600077121F54582C22417DA58211DE153D4AB4 +:10CA7000F0037D154A0887964D77693AD383C89BA2 +:10CA8000316F44A70C435FD67C44BD11E9F0B47903 +:10CA90002755EC2F93EF653C6FE6E0C9243AB3E0ED +:10CAA000D2229D442F5AC463E2BCB479CAB1413B3F +:10CAB000DD88766DF84F80A7239FD17AB78FE3FC8E +:10CAC00001E7750DCCABA3F0F2D012C06F9DC4F599 +:10CAD00000B62077FE518207F05387F851F418E131 +:10CAE000CBC24B7BFEC43CD40398AF80D62577BE27 +:10CAF000ED20AF159B7E62F12998378DD756C092F5 +:10CB0000A370BD3E9E5685FC64A47E72F1D7362E7E +:10CB1000FC4A8CF8AB4AFCB143CC93FE60099460AC +:10CB2000F86194EBD7E0BCA0BE12E2F3B7E087F95E +:10CB30005C23150E375F3EAF36BF9857707878DAB2 +:10CB4000705E959979A4BF3B055F1BA15DEE3C46E5 +:10CB50002A6F1F17092D467EEAE7F3439E6F9F9FBA +:10CB600053E7F35B25E6E7F4A94407CE607A7EAB92 +:10CB7000869F1F5FCFF4FC7C418253D135C28F3535 +:10CB8000BEA2BD90524665E05C2BE97C9C341C61E2 +:10CB9000EAC7A173BCC6A4D85A1CCF11EC247EE20C +:10CBA000F04518F6AF22DE2FC434526F22BD1C9818 +:10CBB000C9AAB19D2FCC56E0FEF6C5D802A8D7FE73 +:10CBC0008943E0AD366BFFDC2565EB6F163C2B052A +:10CBD0003FC8C5DBEFC609FCE7D0C1EF9EBD82E8C8 +:10CBE0007CB3C0572E5EACF680B7CD388F5C3AFF71 +:10CBF000DDB39338BE9E291C767FAFD40E66E18BE1 +:10CC000009BD2020FAF70A7837F9B45763F0CF71DD +:10CC1000C1D46C64B7DD92FEA20965170663BB70D0 +:10CC2000DCA6A03E07BF07EA988CE375097ABACC68 +:10CC3000D1E33E0AF06C8995E73540FA5349CAC200 +:10CC40008B956E05FE8CFBAD23AE517AEA750EF71F +:10CC5000487406FA14D1713ADFA4CC47FDB8CDB7B9 +:10CC6000F39ECB017F1DC18A1A127F2189E34BE21B +:10CC7000A8DD2F49629E1C3F80B7FDC81F2CFADB40 +:10CC8000BAFC3A4AC745CC08DA07258017199776C7 +:10CC90000D0B937C67C8BB33F809CC934DD7058443 +:10CCA00087E7B19F2623351B6565D952D6EA303216 +:10CCB00078D81293695D6FBF79E24E4799CDEE91B6 +:10CCC000B97DC1AA059F56409EF847DE779B004F6D +:10CCD000D524C4FB25A4E3B1752C89FBA707BFA30A +:10CCE0005D21457F89EB3176C5908AF33869E92B60 +:10CCF0002C447A78BB20B14D177B089EF6429DF4F8 +:10CD0000B223825E594452ECFCDA465F4786A3AFF9 +:10CD1000B17526A993BF5162BFC572572DCB47B9D4 +:10CD20009D2F25532AF4DB25EC40007F00C7CF4B15 +:10CD3000DB739CCEFD15C64EA4F30F055DE4453AAA +:10CD400057CB309F404431516FCF1B5CBC0091EDFD +:10CD500046BD9F7F3F82F81E3B2BC564E8A7B462A7 +:10CD6000C8443CFBE729A4E7FF8B12FB10E1F094D9 +:10CD70000C92FE50DA62D27E7EC06992BDA7CDEAE7 +:10CD80008D44699DEF648B6DFA814BAC03D88A9119 +:10CD90006475669D37715D99DD33EFA8D6588DF5C2 +:10CDA0003C04E738B646D047730AED214DD007D092 +:10CDB000812A43B95167BE80532D317419E104FAB9 +:10CDC0001FC3E1E82DC2760F2C57B93D67B297110A +:10CDD000DF1E59E0C580FF905E653EEE7F4A4E82C1 +:10CDE000AB1B6904C60955B0A4011D7B049E2CBC75 +:10CDF00078049E5C6C88C9A8A755F4AFC32E5CA1CB +:10CE0000F06103E917ECEA8841F82946F8FC2CC5E3 +:10CE1000707DB4603282F4DAA634FFCF37613DDA38 +:10CE20000E3BC2A691A1C75C3A547CB0EFB2E47548 +:10CE3000B61E3452BBD3F5888882F5E7695EE2FFFF +:10CE40000719E73340BF5310BE79FA0744BFCC3708 +:10CE5000EA9CFA73B4388CB7908F293AE98B2EA1EB +:10CE60002FB695805E88F691C64CDCC78E1296343C +:10CE7000D15EEC95227C5F84D9B540C7AA2167E9D1 +:10CE8000AF4AD093658F3A5A54DE7F3D70BD2CFF78 +:10CE90004B92F695C3CA023D907E07B06F601C5F4F +:10CEA0006E62165C3F469AE0FEA06F64D9DF09A36C +:10CEB000860DA72F5B762E6E0FB47373DB8D8C9768 +:10CEC0009CF1AECD86FB9CDBF914E398D5A6FC4C17 +:10CED000ED1476CC66A72C45E29B9E599F4E277B8E +:10CEE00046CA83F508017F05FAEAC42258D7F562DD +:10CEF000DD992167F11D4748A67D5E839B07E9A563 +:10CF0000A480EAAB5A24458388FCD9E842F535333E +:10CF1000CEFA85DC0FB15ED23F855CAB96A2DF9086 +:10CF2000A15E57D1FC941D2F6D2A6B22FA30AEA55D +:10CF30007A5D9577A6D08E5447EB5391DF5874D61F +:10CF400095834FCBBFD5164F923D00FA03F11F4B8F +:10CF5000BE587ABBA567A4E9D6E0FBA6AD82DB315B +:10CF60000EAD97F895BBF79E08D22D7C137E254118 +:10CF7000AF6097205D7443CAFD78491A7744BA358B +:10CF8000CE6D5F0EF33D0FEDC2A6971C0CF9F49227 +:10CF9000D03B7D15D3186B6829DA8C6963CBD43EFE +:10CFA00005D2A33D130276797D347133E58F6DABE5 +:10CFB000A4F4E8B6AFDE84FBE2F81697413AE1C785 +:10CFC0009F7EEA003A6E10EB7DE00117C98363DFB4 +:10CFD00096922E18A73121995EB4EFF28D52E4D7C4 +:10CFE000C7BA1A4BD930FA40C36B20B8F2B0BCAC08 +:10CFF000940DB37F1A13EB57A31DD59874462236B0 +:10D00000BCA4F5F1FCE649B8793BE2555BD11F6958 +:10D01000E9ABCF23DD4D27BB97FB07B530F905669C +:10D02000BFF1B9D020E41F946387904FB51FB92298 +:10D0300084E31ECCBF9CF4DEDB5F7785D1A77297BB +:10D04000DA3C49B7C17357408D11BFF7F565ADC3E1 +:10D050008F65E7B07AA2B99B552941E42B9EF03A3F +:10D06000C0C73C5F3885F8F9FDA044FD5BF4953BF3 +:10D070005F67CB345A8F741EF455A39AF813CDC34F +:10D0800051C553ABFC3728CF60BC3764EE1FFAA103 +:10D090001C7B03F703F2B39602DC2FB57D5C3FF4F3 +:10D0A000E9C7CECFEC6F0BCE75977038BB254FB864 +:10D0B0001570D73DC5B293FAB9FDA9F433B48F5AB0 +:10D0C00095814814E09857DD9F427AB6E6D135C283 +:10D0D0003CBAE3AC8FDB29FD1AFA7B5A35DEBE2D54 +:10D0E000AED1F7EEEA7D5A03E45B75FEBD3BFCA4CE +:10D0F00086FA65AB61E5F7F17C44E47DA2DCB4F22D +:10D10000BCBC23AE537FADECE7FCBBFE24EF97FD28 +:10D1100042E4C538ECE5F94887DD41D10F7B85F263 +:10D12000E8F0413E60F1FFEEA018D737303FE21340 +:10D13000C46D2F0F3D99531EC929CF6EBF3E1E12DD +:10D140007830B3EB950838D3FD3029BB7C5F6EB9DE +:10D150009C556E64B7DF14FFE85EC2ABC1DB6DAAFD +:10D1600004B90EA9BB6506D113D04599C346A75E85 +:10D17000A48B69C87FD87CE4930E93695FAF81E587 +:10D18000AE63EDE5B01F2F70703DBBC5A2BB12288A +:10D1900082724705532E2DC8F403BC54A3EF554C9F +:10D1A000CBFAAEE7FA0586A73FF3014E7F0AEE13EE +:10D1B00009F58608936CF43512BF83FDDE8776C6C9 +:10D1C000FAF820CDDBC9B2F78595461C422FCE195F +:10D1D0001FE6CBBE5E40F3E3FEEFD7DCE43F740412 +:10D1E000619E057CBE97D6D8E613827916F0F96663 +:10D1F0007D2FC99E675AFEE4EC8B152874705F86FC +:10D20000166AB49F7D5C9E58FCA8FDC845215CAFA2 +:10D2100083FE19E45FB0F8D048F3EF8A1FEFC3F341 +:10D2200088EEF820A51EB1DFDBC2351AF6D7E10380 +:10D23000F98274A34450F630A5A2B911F9B7E335C9 +:10D240003729075A35E7474A05082483ECE948920D +:10D25000E45B2F6BB4F169B7C53F3F8E13FD6EF0F1 +:10D26000F12DE16E39D95731EA74B83CA1F748BEC7 +:10D27000DC1560B1E1D6E36A872AF854F476A44756 +:10D28000B5A5FA8CFCC9BC07E8A3D6CE47F97AFD50 +:10D290001ED6CB85EBE5335DC3EA5D2DEFDE8BF467 +:10D2A000DD8B7D4D473CCF0CE13948DB91BB1AB19A +:10D2B0007DDBEB1C0FE78A6F67CB58929720EF2935 +:10D2C0004DAF7F304CF875E861D21BA1EF70A5C15E +:10D2D000F58446CEB7D9DA1A6C5FCADBC74A362363 +:10D2E000DE46C2CF3F3BB83FEC877264B3A3F00C7D +:10D2F00078D9CB5EF1A07C79CDA5E3BE39F8FA45AB +:10D3000034FEED47F8BE013C11DE7E0F7843796CA8 +:10D31000D14766FF689B916EDAE243443F5E81AF7E +:10D32000F47CAA73E613E27C1FF6C745442F5679B6 +:10D330008897F7C43FEAABA0FDA86FC6D45B1DA3D6 +:10D34000F9FB4AC2C487D2F54BA03E247E03FA0BF8 +:10D35000D23EBB0867952E3778B9B7DA648D3EF4B4 +:10D36000C3029C36B90F72FB4748375A899EF5DDD8 +:10D3700013E2781D095F878E4CCA1B1C06DF1979E2 +:10D38000C5F9E786B841FC3A21E4D786B2583DCAD0 +:10D39000898D28B7605E770B79D32EF8FAEFD11913 +:10D3A00080EBA470BB2FC1AC3F9D6990EF627CBF46 +:10D3B000F4A0CD0FF3532B94E4CE32B4DF068938BA +:10D3C00012C29F9C986524DBE07B8F5BD48B30AAD4 +:10D3D00067C927C5CDFB49E8DC0F91081A4964D11C +:10D3E0003DF931B287132CA1DD0E78EE291379C5F2 +:10D3F000A4BC4F8D911CD49CA64E790FCFE7F6AB01 +:10D40000E5B7EA28377C05A2BE94E0F5CBB3DBF79D +:10D41000A8BCFF2EA5978FE7E1F9DCFEBAF46F9167 +:10D420001CEA2910F3D1F97CBAD816DEAE3CBB9FBA +:10D4300091D6C56DC03AD8D63950AB65E52DBD59EA +:10D440009F05EB62E3C34E3D9455EFE0EB93C60CB2 +:10D45000DAC6393438E18CF4704CD0413AEF8E2D75 +:10D4600062F98C7D5E71CE699F057967AC5482FC50 +:10D47000C3DF9ADC3A7F1C63CB5ADEA1FDD3887CE4 +:10D480006214EAD77FE0F99EAFAA068CD3B8452292 +:10D49000FEDA887C00CA9799AC04E5ED4CC563C9F7 +:10D4A000592E8776B992BB014FCB7C5C0E2D0B6653 +:10D4B000CBDB653A97B7CB42D9F27659C239AC1C6F +:10D4C0005AD6F26E169F5ED6B384E05926F8FA3229 +:10D4D000C1C761D14AEB413F3E1F1710E039BAFB8B +:10D4E000FE52D4FBDF917A177D1DFDC1CB3D74BE8A +:10D4F000928B27EBBCE341CB5E1472A2E12C766ADF +:10D5000003CA09B2F7C13E98F2D78F779EC2C76BA4 +:10D51000C479103DF796D6FB33E31F0DF2F14B9023 +:10D5200008687FF696DAFD720DC887A7FDED78AA28 +:10D53000C07EA723BE188F1B39C7F6E9728167DB4F +:10D5400079CC6484EF6FA5A3950AF76BA5E9A8C908 +:10D5500043FACCDF4B47697FCF5FB9AE0FCABAC081 +:10D560003BCC6B8A6D9D72D627AD1788755AA11872 +:10D5700059F694B54EB9787AA7C923A37FFF9DC306 +:10D5800097917F68ABDABB08F95413E2CF86B76393 +:10D5900020E7DA2BEDEBF2D517EA801F2DDF955F40 +:10D5A00020D9C65FBEEB9ECB8B01A665DBF26B502C +:10D5B000556BDA25F0BCC5BDB9DD860FC07705EA2D +:10D5C0008D7D02DED3F05D21F05D9DAD3F2EABE29F +:10D5D000FAE3B2F0B9E17BB9A01B9867FBB7689E8C +:10D5E0000FBF837CF48F897B27E339AE85AF25A1FC +:10D5F00022A283A3428F3F0672CB3EDF37B74C0B8C +:10D60000A09FF4A802E53ECC4FE7794DE4B741393D +:10D61000DAF73EDEFECD6DD3299FBBAEB9EBB22467 +:10D620002D6F39BCE69CF0F124C511B9C26D50F5DF +:10D630002F8E58BF82F665E0E226C4CF5D472503F2 +:10D64000F5B5AD81593F330C6C37BC9CCE5BA11C4A +:10D65000B5E3C35F979DF784B3F31A83BC2D8EC4E3 +:10D66000760EC27C33ECE7E549413F8CBD379A1F0B +:10D67000E3A29C720EE62F41BFEBECABEA16935E81 +:10D68000E9930D57D9C8F48D8498962B04B7D69B8F +:10D69000963B0E3CBF283FE3B9477B7CF03EBB5C2A +:10D6A00051403FC7B80F45EC0FA5E5D87D48BF876F +:10D6B000A09F23C4D75A2DFFAC389F4D66AD83A3DE +:10D6C000E502B2E3AC7987D2E764FD59E7101BDCD1 +:10D6D000C9575044E7079A5B3F5744F127FC5C2148 +:10D6E000D6973EDF437DB26BF6BCDD1B86993F9D2E +:10D6F0003CA0DE953A407E73174B31F42BF9415F25 +:10D700004B615BC0E900D91BBD1AEA8FFEDA66F2F5 +:10D710008F9D42BAA1F58892DFD32F70D7555B90C9 +:10D720008FF54E8DCB6EC72AAAB2EAB1C1DEF913CE +:10D73000002EFD3285FCB12C1614E7F0BD673C6766 +:10D7400051AA789C81529518E0293F5F50412FC71C +:10D7500090801A39A638C9279F7D5E923E7717E3DD +:10D760008C4C0782CECEB1DEB7E2498A97833FD296 +:10D77000CBEF024AC6F881BEF89E7BDFAA4496D85A +:10D780002C619C8A323F9C42DABC438E859C80EFA0 +:10D79000514897B5181F2691DF4DBAAA6512EA2D98 +:10D7A00005638CA97834BA5265A9681DE4BDC61317 +:10D7B00040222CAA4E9AEB83F52C4023A098B1F27C +:10D7C0008E9A368CA729186F7C80F14937A8E1B969 +:10D7D000412C9F60AC4616DD234D9D8BF14A969DF2 +:10D7E0009F00FA443837C68FDF87704D7672FBF999 +:10D7F0007C275F474D11E73040A76F01DDF99501A8 +:10D80000CAFB5B4EDE477ECA1060D1E6A7B830186F +:10D810000B239E9BA2FC7CD1E1B3CE177BEB316E38 +:10D82000C33A67BE0C0A709EBFAF3276DAF7DF22CA +:10D8300067F679637B9C9F33A6F78F76D50308C77D +:10D840008642D64FE7D02ED68C74DD1D0F6F45F87B +:10D8500001273C0E51C03357CC07D67F2EC2A52AD4 +:10D86000D1D43725B437B83FB75D31F32E45B80E64 +:10D87000F33840953553FC10FEE17912F9BDA18BC8 +:10D880007AA7D0FBF5883E1BEAAF0F154C25FAAC02 +:10D89000AADB9AE607E5D85F2481EB7275C79E394B +:10D8A0004EC07B3BD2F8C58C5DE37CBC15E3BEEA81 +:10D8B0009DBAD8DFCD1AEE6F5788B1E33514AF9516 +:10D8C000721550375B2A468BF81DE8CF15948F38B8 +:10D8D0002F38FBF9AA5A127DC0AE0FFB0D93EC3026 +:10D8E0004D11F63CC87FDC673D16DD1F3F4871884F +:10D8F000F9119DE6B1CEC9CFD3DAE387B3E23C2B71 +:10D90000A5D82D4E3A6FE5FE7D67ECA57B11FF1E75 +:10D91000766D5E0ACFB55EBBE230C61DED880F1195 +:10D920001DB1DE0524EF3DBAB5BF72E2D612FC7C14 +:10D93000C525E2055D55CA878336BD3D37CEE86B08 +:10D94000CEE1E3FCD496090FBC65D3AFE4508CE183 +:10D950003EB1E28BDA907E6D74A4B64CA4FA9D7150 +:10D96000E301A49334BCC28EF1087A61BD57123F23 +:10D970002A163059F33BF87AA3D903EBBE0DAA233C +:10D98000BD6E6BE27699671C30E8B2CC7E72E930EE +:10D990003F5B7C43EEFCFA043D3E1CD7EF47383634 +:10D9A000230C940FDD8FF0788019FC2BD2C19605E3 +:10D9B000048785C75D6077A7F09CEA6507F96F2645 +:10D9C00014A5C86E7785053E73C661DBCEB20E0224 +:10D9D000CE735D87EFE23A9C7FFA3AB016F89BC1AE +:10D9E00043BFE8EF63289D9191B7161EAC75B1F265 +:10D9F000609FE50D9E819E77C78DFB71DF77C6AB7B +:10DA000028DDDDB75043FAAFEC6349E4EB95411EE6 +:10DA100027FAC89685AD1AE0A5A38F45508F9BB80D +:10DA200085974F14E59DA1065EBE8597AB215EAE3E +:10DA30000A7A5613CD87CB284E590E23CCAE125EF0 +:10DA4000EE12ED437DF29CC9D02EA447177E0EFD49 +:10DA5000154DDC5FC150848C26E94C7FC57AB3A993 +:10DA6000717F4704FD23A57D87D64D3632F5B60B71 +:10DA70007C94E8B16F7D0EF547E16729D9B273DD7B +:10DA8000E76CFD6D13FD39F558A2CCE61FB1CAB79E +:10DA90008A720DCBB19F18EFC72ADF22C671879417 +:10DAA00075B331D5617ED84F38BB5EAFE8C7679597 +:10DAB000D7F171CA4B0EA566DBC6DB24EA950B7F56 +:10DAC000617B3C4CFBC7A95D49FBC9AA67F1954442 +:10DAD0003CF2C05BCECC3EDB19AFA3B443C41528E7 +:10DAE000E2BCBE2CA1CF213FB72AE2297252DC074B +:10DAF00021E08B15A8AB007C6E5817F4DFE13E45A2 +:10DB0000FF9AAB6204BA679007BA2D853FAEAF2586 +:10DB10002594EF963FC0A2BB43472E1A96FE980964 +:10DB200074678FCF6CA9CACE3787EF4FEB83986F9E +:10DB3000AACB2E8F45B2CB23F3B3F375D1EC7CB8CF +:10DB40003E2B6FC1B155F8791F8C1B7DF3089FDC0C +:10DB5000FFFB60A11942BB2751C8F5B9BBE38CFCA0 +:10DB60006F5DC2AFB711FD72E4AFD2E8FB16F4CF20 +:10DB700091DF3844A9ABE5FCBE79E8278D0FDE8B39 +:10DB8000FD4E5685BF7C16CBD28B405E4E56515E05 +:10DB9000AE88628C05B3F4A407DDFA0DE8C7C96F3F +:10DBA0008A31D9E64FB944E572DB65D97D0A9350D5 +:10DBB000EF7125B87CC9D4932DBB95CBA512D8099C +:10DBC00036FA01F12AA13D324BCDA77ABEB0D1AAD7 +:10DBD000A13E384F273B0DEA84B0BECFA2DF309381 +:10DBE000882F48914B54F44B14027C907757244D66 +:10DBF00099E2B20C6AE7AFE5F711424B793E6F56F6 +:10DC00003FC3731B17E8D3880FA70EF8B2F1BBA26E +:10DC1000989E957F309FCFDB2BEC7055D8F7FFE6B1 +:10DC200098B300F1B452E572BDCDBFAC08E1794EB6 +:10DC3000897C11E15989821CE959E8151BE62FE01E +:10DC4000727D018F8363379E86F77AECCF55C2CF02 +:10DC50009D3D55FCDCC0EA9F29B122D41B1E946275 +:10DC60008BB01EAB0A6976FD2B188D66D5B7E079AF +:10DC7000448D2CB6C3F3801A5962871B08B708D7A6 +:10DC8000B7E0CA1B89CF2A167CF5C3C7AFD9E2FF1C +:10DC900056AA85A79F93C31FEDBBF552EC762CD7F0 +:10DCA0005F73517F7A44C43989F8CC8251D1D05402 +:10DCB0001B1D6D16FBBFC39989AF23FBCDC132710C +:10DCC0004868E7611EF078B7CACF41010BA6F7425A +:10DCD000D4934101477EF6551E1F3E2606840BF95C +:10DCE000ADAB55D2339D4DA397D07D048DA5281E95 +:10DCF000BAB973B514C8E87D1A72C609B85EFD9446 +:10DD0000FAD800A5013644A9CE74D2DB7FB778F0EB +:10DD10004E44FA795A6C13E27585161B8F2159EF20 +:10DD20008F8B7D0761ED1378DEAF447A71FEB6FA12 +:10DD30007D984FD777F2FAA0A66DC67EF258E43EE2 +:10DD40005AD711E2C26DF199EFF96CEBCE2AE4DCFF +:10DD500038F61DB47FD10E73D8D6C5778E760ED423 +:10DD6000F4CD3853FF068FD7C8ED5FB4BFC71B5043 +:10DD7000511FBBDF1B7801F17F749D8BFC016FC8C5 +:10DD80003C4EC31AEFC03A5729F2E1C1AE49140F15 +:10DD900070B0CB15C0769D2D1302767FED60624288 +:10DDA000DE70F102E972D41780BF3D27F8CB8B2AD1 +:10DDB000876FB1A2AB686F2F36CBEEB7EBC78B4D39 +:10DDC000EEEF01C2BD1CE17BA363B6D36E075BF629 +:10DDD0006F6EBB8C5F6A701CBF1720F025E2E51ADE +:10DDE000EA2C84195FFE0DA07AF96127B763855E7E +:10DDF00064E1F3E89B3CFE6BB988075BCAA2012C87 +:10DE00007C9FC9E4A7799FFD2230CD86A7DFAA2297 +:10DE10009E34E124FF8709FFA1BCB8B9D779D42E7D +:10DE2000FF1AB764E797B185A3910F2FEB73822494 +:10DE3000443F93CD9F02F3FDA5D8FF8DACB913ED00 +:10DE40003A6BDF35E84C19057AE86D3FF8F60CE4DB +:10DE5000C7EF09BC9E007BCC7065E0BAC597543112 +:10DE60006EFECD7DD3AEFB0CC3F6C9CEE25ABAC767 +:10DE700034AC3F7749221BBEB3C19F0BAFE51F19DE +:10DE8000090E650F5FD7DC71FF57B5E248CD73BA55 +:10DE90002F578E426FFAC8F7E5CED67EA2CB6067C9 +:10DEA000BA6F77B6F6E7FD9DED2F380BFC89A01908 +:10DEB000453E96DEC75A24C2F92BE7E389D059CAFA +:10DEC0004BA0DC7186F28A33B7C77822BC8F13C1AE +:10DED0004F646FA7C6225C07E3FCDEC77E67F48B46 +:10DEE000685FEDFFA58361DCF2FE7C7608AF649885 +:10DEF0009264A09D1ED1AFCEC3F8AEC8CB8EA05CFD +:10DF0000263615D6FF60FE2EDCC7D35D4EE18F1E90 +:10DF10007060BF913FEAF350DFDCEF4C8DCD47FDE1 +:10DF2000E29F590CE97CF61F534B103F970CD53BF1 +:10DF3000913FFDE4F1835FC17E6E19BA5CC17CC480 +:10DF4000C5E37DDEFFEE133318F4B37FAF9FA54822 +:10DF5000BF49AA685FDFB2CF41FAECADDFF7939C0F +:10DF6000B9E5C9DB1E5E00E34B3FF0133CB39E6C8A +:10DF70007CC445F0B5113CB73C7D4DDEDD625E1AD8 +:10DF8000E063FF3A21E7CCD458BC27719B8BDD843A +:10DF90007A8685078B7EE7FA662B78EFE9963DF95E +:10DFA00014279DA67B05EA57637426BB69E130FA06 +:10DFB000ECCD2EBE6FDFFB80C7AF4A7B0E2CA2F9E3 +:10DFC000F57F99E62B819AF65B18EF06812FA8471B +:10DFD000F3301F95929550FEDEA3129F57FF941DBC +:10DFE000EE321C7F87DA407C8F9FCB58F0CEDD333A +:10DFF000BB1DF7FD5C3DBF1C977CEEF7F712FF5E83 +:10E00000B5C791423B0B52B2B7E6F91CD9F78E580F +:10E01000C427011DAC249609E9BEDB882FAEECEFC6 +:10E0200026BB74D533D9FC00F01C4E01FCB7FEDAD8 +:10E03000115E80F97FF94EC000784E0CEC0EE07A4C +:10E04000C0388B55D8079FFD48C96A87FD7F54703B +:10E050007A7F8C0DD1BD9855FD5D7CBC7D5F781BB2 +:10E06000F58355397CE704FEA3E874BB78A32BF74E +:10E070001ED44B33C818DE336A58399BBEFF24F8D0 +:10E08000D0AD7BFFB4DD84F1DF7BF2DDED786F6135 +:10E09000C55FFEB0FD1B68D7FD9B5B47FEB9EABBC1 +:10E0A000BFDDFE75C0EBFBCFB864A49793CF7EE7CE +:10E0B00091AD903FF9EAA41A09F2DF7171BE76F2D0 +:10E0C000893F8FC67B4C6B9EBD6C0CE261CD537358 +:10E0D000C79C495E9E04FA4ABAECF22E49EB693CB1 +:10E0E00023F18BA2FB459AB33E07F71D2C45F8DEC2 +:10E0F0007F85C74FAC826F2D781ED57F1BDD13C582 +:10E10000FC5AC0F3CAC7D7D3BDA1D3F16D8E9543D6 +:10E110007CBF6388FBCA7DD77CF1925A4C9D6164B9 +:10E120000FABD810C9A1DC76AB5E8675BD70E47507 +:10E13000FC13FB5845BCAF7ABC8B8FDB0FEB183858 +:10E140007D1DDFC77FCC3C7D1D5F386D1D573C4476 +:10E15000B6F6BEE1E399AD75BCEDA92F9DF1DEDC0D +:10E16000C99C7D3C129E9B447CEBBDAEC8AF5CB8A5 +:10E170005F9FF49A215A67577201949DECF84329E6 +:10E1800003FA38EE1C5A84FB71E85997BE13BE2F70 +:10E190007EF6D72AF2B5934FFD5C35E8BC80F924B2 +:10E1A000D00B4FB2F4DF00DA072B79502D5BB5CBE3 +:10E1B0009F42BFC6CAB54DB45E2B9357CF3702F40A +:10E1C0009DFC1D2B937C1FAC4C1EB8561A66FD029D +:10E1D0005A01D77F9285420FCDACA75487EB78E4E4 +:10E1E00072A4BB91D6D19AB78EF3BEC8B69EA69341 +:10E1F000F6ED48FBF3E40E9782F1C8ABC4FDC555BC +:10E200006BE7D3FA5A76C4AAA4F4EBE1D63B7D9E21 +:10E21000F257DE6FD4B411FC5D62DE67DBD7679F17 +:10E22000D75F87B753421FC8C5DFBA0E17F1E7376C +:10E23000A6BA283EEA88D3B8FF2ED89F432F3AD9F2 +:10E240004E68B2A8E66DA731CCB9C9FFE4E84F37F4 +:10E25000B5489D63A0DD4D26972FB9E74EB1B50EA9 +:10E2600066D8F0B3D235F406C6EDB11FBB19C5D1DF +:10E27000FD9B9BECAE55DBDD140F7CF0A9538FA00A +:10E280009C39F9908B71F9C7E31D1B75DEC7DB4F15 +:10E290009DDAFE7FA0FC6D6C6C60FDBB8E7D0DE990 +:10E2A000FD4189FC0DBF7B32EF0206FBFD56A88BBA +:10E2B000E7A88D3FFEC65548AF98C7F3D4466F6CAC +:10E2C00011CAFFC607C7481847B3CA33F817E44B4B +:10E2D000EFFE6B1EAE007BFFA9533370BDDE7DFAEF +:10E2E0000717203F04BDD2B09F232EB7BFDF60D3F6 +:10E2F000FB6FEDDF3880F47F2B96F3FAD2A762EF45 +:10E30000A0FE8EE3A3BE72EB337911F70559F5A891 +:10E310009F55AEA13BC3E49C308B65B20552C5B896 +:10E32000CEB7EEC91EFF0B1A97CBABD4A165BC7E4E +:10E330006F31A787016A7783266595E7B6B7EAD775 +:10E340006BE539FDF0F62BF15C64187ABF59F47B6C +:10E35000EB9E4F260D770E7DFA38FCFB1D12237FB6 +:10E360000A7BC24DF12A2BD4D4C4826AFA1E45FD21 +:10E37000C5CA178B71318F7AD68FC4FE5CE1E1F983 +:10E38000A7459CFE8A00E4115E6DF07B4837B7FD1F +:10E39000C04DF1EAB7FD18F428C0EB6D4FFF84E2E1 +:10E3A000C76FFBF15DB4EEB7B952B4DE434FB81896 +:10E3B000C615BDF7C48B54FE9E33558AE3DEB6DF27 +:10E3C0007DC47EAFD04A6FEB7709A3357B3E6D7875 +:10E3D000EE457E327EEEE510E77478E28CF323FFA3 +:10E3E00035E65F1B477E8491F4EDEF686584CFF4DA +:10E3F0003B1B42BFEEC0731474A86A26D36DE7CFEF +:10E400000AE3F1A3FF9B4377AA33A6A39DAA223E6A +:10E41000012F4E85FB7F9DA1E054A4E7CED0C2081A +:10E42000CEBFA75A9F8AFB73B7A01F17F44FFAF30A +:10E43000A13E3A2FD64A94DFDBF9867B691EC96379 +:10E440005661FB5ECEFD67E847F555C377DB7AABD7 +:10E4500041803B0B5FD9E7F63F4ADF4F331DB89F42 +:10E46000AF7733EB8FECDB57AD735CA59D97E75B24 +:10E47000C5EDBC5CECFF550D7C7F1F5C9C4778B400 +:10E48000F070FDFEF503E88FB97E7F11F969AEF7F4 +:10E490004DFA2DE2F547C85B314E289FC74B5DB85A +:10E4A0003F7ACD1720FF4F4D95C4AFAAFBA3574E1F +:10E4B00081FC8D4D13C8BFF7138DEB455FD9219BB0 +:10E4C0004EE8FF9088C733BF26D17ADE84AE0B6852 +:10E4D000B898192A37CA9384CF25ACDFCFF3FD85CE +:10E4E00018076F6BEFF061FBD5129D13DEF0CB9731 +:10E4F0002F431CFEF7CB473B30BDE925A67A61DCF4 +:10E50000C5FB8C4EEEB611FDED87FEE44C7F69FC39 +:10E51000291AE123831F8DF065E1074692A93C8308 +:10E520005F8A07B7F07BBDFF951B102F6D6EA0C3F0 +:10E530000B313FF110E647926F163CB9F8FD2316F8 +:10E54000813CFBB916F9AD06E5CF6891631AF9B3C2 +:10E55000864A9572F2579DC0FC4A476CFCE809E474 +:10E56000DF9A5488F43630BC7E9B198FEFB35799ED +:10E57000F9EC20F1CF1E3E1F711E65C1FD2AE3FCA0 +:10E58000FD0F5805FA7B3500F300B85E557C098411 +:10E59000F306D6EF44FABE910D50BA880D511A63B6 +:10E5A000BA8A69033EB83081FC279402BCCC4DF096 +:10E5B0000F921EFEE1E29FBF21E17ABE746EF7D298 +:10E5C0004E4B358D69A333F75E1A063F88237C0DC9 +:10E5D000403E280F7179701FBF2509FAEAE2F4D591 +:10E5E000F0DA3B9FD8EB3166E923FCBC24DD9FC603 +:10E5F000DF45B0D5CB9237544F1AAE1FC867C5A5BB +:10E60000E4E60D95FBA7B2BF3768FC1D88DCFEA6CB +:10E61000B8CBD2F132E668DC07D61FEFE7B102CE05 +:10E62000B79728B01560BDA6BA8DECF82085259C5B +:10E6300035997A0D41A694407E49105812D43FFA7C +:10E6400078CDCFCE3346C67F43CFA72E6318B9C34C +:10E6500022CC08CEE0F7DBC87FF042D87491BF34FB +:10E660004A7CEFAFF5DB16B030A54116A5D48AC3BE +:10E6700008B15E4A8B593FA5256C80D2523644A919 +:10E68000C17499FB29F83E2A6761CA57B028A57B57 +:10E69000CBF8BD86A392278CF2E96CFE9965EE72E9 +:10E6A000EB1D86859FC778A9FF724CE5EFFC70F9DA +:10E6B000918B1F87F6F003EDB6F3EEB64735B2E760 +:10E6C000F7AE33280ECEFABECCCDF9DE3237F7A343 +:10E6D000EF5DC7DF2F38FAA816DE09BDBFE9676A0C +:10E6E0003EC0F1E6C65F97635C9855CF5AB78F8EF0 +:10E6F000FCE03C8CE3BDC81D6974D33E48111D5A33 +:10E70000F4B044F3F173811EE77B7679E2724757E8 +:10E7100061FDC3DFF3903E7AFB3D12E9A3CC906824 +:10E72000FF2C15EBF75841FF098C233237B90CDC6D +:10E73000274B7B5C47D0CE60BD9745ECFDC5DD5CCB +:10E740004F61BDF7D339F6D2B3C4212E05018B74C6 +:10E7500099DB0F63E3F2D1AE239F49D63EE77E5C9F +:10E76000EBDD2BEBBB26EE8F0379119F2FBC6E4F99 +:10E7700029FA3F470BFB6CB3C057E11B3C9E7FB3AC +:10E78000F0679F10FDF4BA1DD4AF556FB3580FA0BA +:10E79000E35CFFFC66E453EAB5F5E2F09C9FAF6DE5 +:10E7A000567BEB117F273A5403EF674DD9F3E55BB6 +:10E7B000915EEE95C21FA0BE6DEE00BCE17E6DBF06 +:10E7C000F32A8A633B6F4F08BFDFB20BEC71AC9F3B +:10E7D0007445906FEE13FBB9EABAA6567EDED5BB40 +:10E7E0001DE31D27ED52C3743505E3B7480E99E4C8 +:10E7F000376148C7F06DB9C6E13BBE6BEE19FDED60 +:10E80000288E4C5B1C1CEE3C338BFF14E4E48B73B2 +:10E81000EA9767958F05D88A805F8CF5B1941FD2EF +:10E82000BDADE66C94F75DC0E0D1CE1D870211D678 +:10E8300077ACC24C7CB7088F573C0518EF0BDD1442 +:10E8400050397388F23C481F96FBE7E3A21F76F32A +:10E85000B81D5D197AB1BD0CF779426AF6D9E79F08 +:10E860000CF0C3443EFF32317FE88761BF27DA6B8B +:10E8700074C44F5265B7233CC71F75D17B3BD5C9C4 +:10E88000538B10FF53F65CB11CD3B983AB7F320EB0 +:10E89000D6E11D83D1FB6541D61B28453A4A3A187B +:10E8A000D25175154B3AA1DE5E0414EB25D524AD8B +:10E8B0002F64DD05949A7E4CA3D1CF637F307E0414 +:10E8C000E9B9BA2A558EFB63CA6BCBDFC7EFEF8A73 +:10E8D000757D8C993AF29DE3BBBEFA3FDF84FE263C +:10E8E00077B01A84FB94B3793CEA89CBF748443F6C +:10E8F000AE7646F72D67EF92E89E55F0710FEDCB9F +:10E9000060094B7D16F24D3D2AC5AF34ED9128BF0D +:10E910003CE1A1FCBC5DF9C5782EB3636A7308EDD8 +:10E92000D1EB3C06E171FD279122E43715513525E5 +:10E93000D37C4C17CEB3EBE70EE22F887FAD86D6A3 +:10E940008505207DB8B2FA969B19DE57ABDBDA4E0F +:10E95000F6F120DDCBB4E8689373B01EE3A54E75E5 +:10E96000A997619CDA2614A8173336CD53D5817147 +:10E970006C279E02DE0F7AC209EB3CB02A19B0BFA9 +:10E98000F7C33C52D63DD813E23D2D56910C70F999 +:10E99000970CE0784DAFFDBA1CF7D9893DD3CAD1A9 +:10E9A0002E3CE54CAA388FD97BF2659CE7F224BF58 +:10E9B000977A2A5F9F837ECC5BA2E43960C13DF7E2 +:10E9C000A8481F697C6C4C90DDF145C407ACC3F1CD +:10E9D0004F92A5848F3D2EC2C7BDEA808CFCC37CBC +:10E9E0009A911D71E20BFF7D7417EE27BCAF0AF6FA +:10E9F000C0244FBE38C74D96E23CEE457BC8978198 +:10EA0000BB49E7E7E2951EEE8F353C5CCF2F15F34F +:10EA100084B173F948A907F988164DB5439556EFA7 +:10EA200055740E37C923E2B1B524C5C10FD3AED298 +:10EA3000837EF90537A4DA8D4C3BC057A95DFE4CA7 +:10EA4000F8EEFA17BE69FC23F1954D3FD6FCA728D6 +:10EA50002C85EF96315FB81CEF8FCEF570FE6F9569 +:10EA600033162EFF920DAEB9023FF77A4479156F37 +:10EA7000972917ED03E25E78456E39C7EBA9D7EF0A +:10EA8000A27BCE65BB78BC65537ABF4C7D6717EC23 +:10EA9000A3E03E8DFC9CC1E43DE4EF3F956FAAE806 +:10EAA000EF5E9E9C2D617E5E54CF9A67EEFC509E79 +:10EAB00022BDDD67E9FDF5B524474A34D6AED50C55 +:10EAC000C757B95F9DD507495FB5F8DB88FAAAA893 +:10EAD0007756BD36048ACB0CAEAFE29FABDD548BCC +:10EAE0000CB237A9FD85C1E832A407A3429F83DF9A +:10EAF0002F732CA0F8182B9E23B7DFCD71B0E880C0 +:10EB00009EEF8D6BF8D612EB8AEB94DF140F519ABF +:10EB10008C1BF43D2ED601D04DF272839093D63BE0 +:10EB200023778A75B052ABBEA5DF29551ABD37A130 +:10EB30005475925F46A9E0EF85D9DE578A23DC60E1 +:10EB4000100C1FD70B7A1BD2F37A29D686FBA46C44 +:10EB500001EFAFAC9DC7213C24E8EB64CE7B76DDB2 +:10EB600062BF757B443C82D07759889F9FBB4AF82F +:10EB70003B25569E29B1D233C52703FE07251BFE30 +:10EB800033788FDD87F037F5E6CF4177AABB82C7B0 +:10EB9000CB5AF81F695D2DBCE3033038BFE002D6C5 +:10EBA0008BF3B2D6A52B1EA3F24DF1264A93F16644 +:10EBB0004AD74BD18771BC60F4CCF3DF23D661AF69 +:10EBC00048CF759E1DEEE8F73DC27E22FC87CE3110 +:10EBD000DEE01CEB1DC5B8EACA8C7EFD16C6533BB1 +:10EBE00047D6B3CD39919A17F9F927DD53B8438E3B +:10EBF0001D42F84E7DEB163A2F50125353E8760320 +:10EC00007DF779A48F863CE3439447CC5C7FD94B56 +:10EC100050D0E0329EC67C7DFFB2CBE6C302358C7D +:10EC200031EEC4B86AA7F75692570DE3B9BC2AEA89 +:10EC3000BEAF03E37B7B3D919F7948AF77E6E33B33 +:10EC40001C96DE39F2BCB2DFE1A845E701E11B28E2 +:10EC5000DA462F4027BF199E4E7CA44FFC7101233A +:10EC6000B93ED2389BD274A1510AFBE1B708E7A89C +:10EC70003AFEBEC6A80567A68713820EDE13E927F3 +:10EC80009E743C12D1835B1EFE7EEB1F457D6BBFE5 +:10EC9000033F4BD8F99EC507F31CDC6F78E0D2AD7B +:10ECA000377C1648C1B56B6239FA8D1F1DD75B8C56 +:10ECB000715A69FEE16C0EE1396775C9878BF0FD09 +:10ECC000BDEA0A96ACA434555E16F8FBF11EF34477 +:10ECD0005DDEE919BEF10FE82FDF4BE7D0D09FFFD3 +:10ECE000EFEF0FF045F200F55355E859F8941D0B7E +:10ECF00087CFFB47F4FFFFABFD28163343B0DEA3FD +:10ED0000449C98AB671D433904747A31AE87BB6F5E +:10ED1000878974EF65432F286519FA54C7F3F87F84 +:10ED2000ABDF855ECEAF177AA5F4BD2003E4C24405 +:10ED3000FA07CFF7407E12FE03F6FF24711FA88A60 +:10ED4000F5921D7F1EEBA7B49A0D507A011BA234D9 +:10ED5000CC7407C533B0B043C47FCDC07485167B77 +:10ED6000084DBDF3B4D817114E8CFF427F53AB77DB +:10ED7000E5C5B89FAEF50A3D2CC78E66E23CE46C53 +:10ED800076751E8BD413FD8CF44E281BF9DE53646C +:10ED9000987B4F7FC3BD945B715E23DE4BB9D0F887 +:10EDA00040467EC97E42FCB26092F104E6FDF73E29 +:10EDB0007319DE3329C0DBDEC50055F7BF3F8FFA7C +:10EDC000BC737E84FA65ED6CD877CBACD43986C73A +:10EDD00021B6E75FA7533CA2C6CFFD14E1BFB2EA5C +:10EDE0006D40A76BE1E9EFF5FCA3C7C9EDBF468E07 +:10EDF000F6703EC1F58CA4373B8ED21ABF2DC8FAEF +:10EE00001D208F1CF9FC7DC25C783ABC8BFA8132E4 +:10EE1000D2F3B0C6B3DE8BF81BE23193482FA7C7FD +:10EE2000637238613FEDA272D19FA267C763E6E2C9 +:10EE3000E77B623F7DC51B7914E76B8B63DCEB9D41 +:10EE40003E6C1CE3F7F03BD0EDF7397E86A7DB0381 +:10EE50002F3DF9B38BF1FE443ED7AFDBD1A0C7F312 +:10EE6000C01D0EBA37FEAE1EF14EC1FB0E7796F3F3 +:10EE7000F7CD841FC8BA8FAA9CB7AB770EDEC30943 +:10EE800093B466EB07CA3DA87FEF4C38E85DC1EE4E +:10EE9000E7593F9E17BB84DF66766014AD4FF79449 +:10EEA000634538DFF51F3928CEEEB9291F16A19E1C +:10EEB000F5D08BFDF4FEF787535415E38D8EF9B929 +:10EEC0001FA77B875A4F71828CC3B7617394EECBB7 +:10EED00059F9C6E0C2DDB87F5EF72B54FFDB6B1635 +:10EEE0007E79522DDE8B4586417877F0733D2B3548 +:10EEF000B3F2B9F80E88F3B4DCEFFD01CECF3AEAF5 +:10EF00001492F74B6B658A875FBA0DB00FF58D359C +:10EF100032C521196B7E311FCB8DDA398A04701A04 +:10EF2000A1214981EF27BDDC5E1ABF660ED9310DE4 +:10EF3000BD12D5CF1DE7A497C7D38E5F3B20FA91B2 +:10EF400029E6743CF48376DDD9DA1FF3F2F72C3628 +:10EF50008AFBA920AF3BE722DEBE9D2F992C53EF01 +:10EF60002F823FEF84FE793C5594EE2B7D3B9D6FC5 +:10EF7000263B72FBE4EBE6A0DF62FB664EEFBE6D64 +:10EF80003FD72E86BC2FC9B16B9883D7239C1D2DEC +:10EF90002AC1B9416AA67380EE29EA95B83E460FA8 +:10EFA000AC834429C1BB61F287D27248271C62FD41 +:10EFB000F7A0BE88170F01DE093DA04FF971BE61B1 +:10EFC00019FD1DE345FDDCF9DD14C8F64B8E17FB7A +:10EFD000B03221F37558CBDB753BFB43A36DFB6966 +:10EFE000470E3DE5F6FB9F627DB63B613E00B75A9A +:10EFF000AD327CE7430E45E7B8919EFAE4F0153058 +:10F000004E77D701BAB7D53D9573DD0D5F5B1642DC +:10F0100039D63D9D1523DCC7055D9A097E4E963B8A +:10F02000CEED7E0EFF893E99F6C9D175C78A903E16 +:10F03000B6FB8DD260359673388EFA7D04E789BEB3 +:10F040009AFE16E8EF846FC568C9B0F7C3E9A44219 +:10F05000EE2DC67B8997F68CE96C2F813CEEE38B15 +:10F06000F17C777C27F2FBE38F3BC4BB34036E5CFF +:10F07000CFE792A3A685719FAF55291EF82169F5A8 +:10F0800055B85FCC7532C53B1D8F597EB930F9E557 +:10F09000927DAD01E4130FD72AE4DF0AE5355CEA7F +:10F0A00003F877F78CF2E0F7AE7659C2EF151B6BD9 +:10F0B0007E5A05FD544C2FA07AF4A61FDE2B15EBCB +:10F0C000B3FEA37FD942E733B51ADB2D65E4A6F57D +:10F0D000EE7D800D15215F0B245C641FFA7B5FF9C8 +:10F0E00006CA4B7FC245E7CA50CFD754C0D3D19888 +:10F0F000F6C9A919581EBAEFAB78CEE31D9053CBD1 +:10F1000020EF2D918F2C813410E6F787FCE2BCC8EC +:10F110005F673B87A1FFF3F73D2DF8FC551E6AF7AB +:10F12000AEB57E3D2AAD1F13EF853CD43529897CD1 +:10F13000A75D4E6EA17B94178BDF5D50C2C578AE84 +:10F14000F86EFA5C91E7DB855F1ADF5BC0BCF7F015 +:10F15000D0429C8FB7E7D88D98427FC5182FEB4DD2 +:10F16000FCEA1B04BF38AFF2D666C3F9B340A4C9AA +:10F1700067D3270216BEFA647AEF73EF3A0EDFDB2D +:10F18000B7F1F73E027855B4C0368F66C6E7C1F8CE +:10F190007DCAB1887BFE56662DEE1F6BFEEFF53BF8 +:10F1A000A8FE834BF93B27DD4FB1C7F17CD02FCEB2 +:10F1B000C7D2F2E14B300E94FBAB3B57D33AE5E0BC +:10F1C000B5D3974F74F9EEE31302C8E7AD7BF2D6DF +:10F1D000F825387E7926FF20E3F03C71A8E04A7CD0 +:10F1E0000A73DB8A727A2F5091797C28FDC13A0527 +:10F1F000B11D9E1BE95A6432C0F3793FE75F4F08A7 +:10F200003C270FEBCFA1BC39F0D31B3CA8175DED19 +:10F210000FD13EDB6D9607ACCB2A78AEA68BF18E74 +:10F220001A4680E257D630DAE7FA362982F799C6CD +:10F2300085845CE991F87B3062FD97CCD369FD5100 +:10F24000F0CB33D0BBCE48C9D67BD6ADC67583A133 +:10F250005BEBA09FA3212380FEC7B75B648A935812 +:10F26000C20C99947185C9A8EF2D59ABA30F866D77 +:10F270000F0DADC37DF7B6C9748C1342C0B0DF80EB +:10F28000802F20FA05FA09E0B95679CF286A67E19C +:10F29000037DBA88C79B4D46713047F5F02684F34D +:10F2A000AD6D12C3F73ADF2AE170EFBE83919FFB89 +:10F2B000E684B91A3B6F0C0DBE88FCBCB15A35F818 +:10F2C000FC8C4D08D7B84401F51FE87BFA2EF47783 +:10F2D000DF5C0D692033DFA502AEA56B4C82EBCD60 +:10F2E000128EA7DDEBA0FF32BC8799ECAD42BCAD1E +:10F2F00085F9D0E21A3FC5718C96D106E12DCAE995 +:10F300000496C2FC14FAC99F9F4D377911352BBE64 +:10F3100089D5F1BC82BF1C80E30AB8ACF9570A78E2 +:10F320002A81DFE3BA559A7C7E378BF35619DBC10D +:10F330007C2A5BF83C96F6658FD753B56B00D7DF18 +:10F34000BB4635248E5703F9954FE0D557CDF1EAEA +:10F350005B23C60DDBDA43F99B2F3213FDE25281AA +:10F36000C6F13055A5B82B50BE172DC77DF72D1708 +:10F3700043FEF0D6273C7EF7A1A9EA9ED661CE8D4A +:10F38000BD87B91E38B63967FE0A6817367A00BEDF +:10F3900017D1E8F7248C771BA17FBF29D3BD86A2A4 +:10F3A0009C7364AC970FC4E95F3B7A0EEECF805933 +:10F3B0003047BD20A36F4DB78F8F47332FF17BFAB6 +:10F3C000DEC3D102E29387B72E94210D1CEABD065D +:10F3D000F385B9FD1F6EA6F8A02F0626D0FEF363B5 +:10F3E000B400D60F1FFB26A69DC2CFE0C519707EC4 +:10F3F0007D0853BF8F99DE1ACA9B520DCE4B61F325 +:10F40000E0FBDED9CD747EEABF9011DF2779C0EB37 +:10F41000A530DD7481F87E3856A0536AE83CD529C2 +:10F42000EDCCF9DD9C8DA2FE0FFDF2B0EF73FAEB8F +:10F43000FEE2B2D341BB7F80CE95CC2E17C9A53654 +:10F44000A7B11D7F8FA3ED291F7A82D9A3F9BDC56E +:10F45000F85E52BDD0FFACF158C9B5A4D762C88FD1 +:10F46000C4EF8DD33A9FE7AFDA81F43E253220AF67 +:10F4700026FEC5E31FBF7D88EBC31D6CC05D8DF20A +:10F480002324D3B9D4DB424FEEACBA93E24A9315AE +:10F490003E7ABBF6523F3FA7786EB2EAC17DF5F0E7 +:10F4A0008172D2D3934A6F33C2DB0FF5709F3FFC5A +:10F4B000C3D8781DF5EEE78DC7911E77BE18CB7ABD +:10F4C000473357DF05B4CA420F96304E2D173FDE43 +:10F4D000C2A312BE7B33BE2569A25E1E6819A4DFDB +:10F4E000B131F087822E4239396062DE2BEEE71AA5 +:10F4F000B5FCBB512D527C8F600CC65FA5B89D5BDF +:10F50000C2FDE31DC19D05A82FF4EC51688D6B77FA +:10F510005CA37D01F9559F6CA0FCD997B4F414A0AD +:10F5200076DA84499AFF5B61798E1FDA3DF432A363 +:10F53000F7AB1FEA9B330AE5CA487CBFD73799DB94 +:10F54000E506E75B41C1A72D3990D49907E3E8BCF4 +:10F550002D4C473BC32BF858E53689E41A6106E485 +:10F5600044BEE003F92D9CBF807EDC8AEBD3B84615 +:10F57000177C18E407F173467173F9DB38BF06F99D +:10F58000B181E40AF27F8965E44782CB8FF182EF93 +:10F5900037F6083E29F899259798C2F97379B5E0AE +:10F5A0009B82FFE60978F41E0E4F1ECA0748F50439 +:10F5B000E7C764908ECEC8A5BCBE7EE27BDFF6199D +:10F5C000FCBDAE6ACEC78A7EAEB4D6199975017DF0 +:10F5D000E58CBF73D1B16DC716E4374BAB5452EB1A +:10F5E0002AB7AD9E8F71714B5A0CD22296B40C493A +:10F5F000780FF5657FB65E6EE975E3ABB93E7E5C6C +:10F6000089A8A8371F0FC754B227055E3A0B1B1EE7 +:10F61000C179FE46E8B3ACB989EEA5107F07163371 +:10F62000BE8FCDC175BBA34B6E45FDB2D2EC271585 +:10F63000C682B3CF1FE0E7747D43EB709F80FEAFBF +:10F64000E3B84662E1FC49641FCACC3070FC5464E4 +:10F65000128DCFF47546A67D8FDF2BECAD249DFB7C +:10F66000EF4E801D538676137F6F657C580E231FE7 +:10F6700090D71A9DB81F3A25632BC6859B5354E239 +:10F68000EFA0F7D3BE4F16A93B919E5810F43DC092 +:10F69000E7381FE717640F803E5EEEFBE1E5E89F69 +:10F6A000B6E6A78A75AA0CC1FCAA33F31B9F33BF29 +:10F6B000425F80C7ABAF8DB6D2FCFACE6D7E95A20D +:10F6C000BC32F8A45732ECFD9857915D9974E878F4 +:10F6D000CE6C249E8B103D423BC3389D0EF608FC39 +:10F6E00014E29E2C1C4E8F3E731CD463E23D3AF311 +:10F6F00002EBF7AE72E49FF0F37873E4CCB381B21F +:10F70000B47FCDB4DD377E4CE1FBF5B16A96447C25 +:10F710005BBF7384D72A31DEC9FBB86C8E81FE7C57 +:10F720008F73FDD8DBAF98936C71A9DEF05FB2E206 +:10F730009C46A1023C9C3D29ECC8CA3EBEBEE343A8 +:10F74000CB1EB1FF1E53879FDBD91D7EEE5F1CDFF2 +:10F7500017233B70BBF5EE60504E72FB91E7C17E04 +:10F760004C5E817A75D78EDE3936FB711CEECFC2C6 +:10F77000D3ED487C62B41A50904C1E23FBDA047B14 +:10F7800014EF0325CDD6E25B900ECC682DEAC90DAF +:10F79000D58FBCD280A9C9E175B308F1752B7D5D09 +:10F7A000D8D716BF67E27BEE3A5B71AFE103EDA3FA +:10F7B000AE0A22BF0E529CEBAC0F946014F2ED3AED +:10F7C000CF3B02FC9CD031C87FC7C19152C93EB328 +:10F7D000FC5F8ED7F8BD13DBEFED3802B88EEF6516 +:10F7E000FBCDD2BF1BB2394A767BA5F09FF4A7644C +:10F7F000F21B2483D1423BBECF0F70FF8EB35AA5BC +:10F80000FB85DD53B37FB76B5C80BFEB3756C0A77A +:10F81000A4387C1B50BE825C5426F347329C03FC08 +:10F82000BBB38FF1F7544686BB388078FB38DB5F7B +:10F8300068C10D707AB0DEDB7E3DCBAFE5D9CCE997 +:10F84000C59774501CC7FABE28C9B36E27F76F3529 +:10F8500006855F61DBD573DC901F877E05E8BAE320 +:10F860008E54965FA1D3692C423F76F7744EEFC950 +:10F870004299E83D979F20DEC8FF02E3A1BFA9831C +:10F8800025A364CF432FC89F7626383E2BD7B07C64 +:10F890003B3E2F0A70FD689CC0672E3D1842DFD9A1 +:10F8A0003EE5BA0DB85DB623FCB576BF08E78F0D0F +:10F8B000610EBF45C7DD5D471E4079D13D590D73CF +:10F8C0007F7F7F3DCEAB739D4A72D2C23FED38BB86 +:10F8D0007FBC84EB134A42D015FE7E53D9B0EBF2C5 +:10F8E00005A2A78F86A7A7E784BF7FDFC02FDCB163 +:10F8F000EA91F5514BEF3C4DAFF4F379F815509C7C +:10F900006A327AA6252F3BA5DEFFBE14F5C5DDAA17 +:10F91000C1FD03495A57C7441FCDEF31A5DF5343FB +:10F92000CCCAE4EF62093A7C4BE879CA3D17919C56 +:10F9300077AEE1FCC9B94D3A1B1DDE7A263AF4F8E0 +:10F9400038FFF27F54C622A348CFE7FCB68EDBFD1A +:10F95000FE24CFFBD7F23823FF4715542FD73FD3D0 +:10F96000EDE674E6DFA4D2EF3DE05F967F46F865F2 +:10F970002C3FCC69FE991CFF4BDA2F93E3AFF9BB08 +:10F98000FD32C2AF0678273FCC43338D30DA4119C0 +:10F990007FCBFF737FCCD6C0DFE08F6139FE965CF2 +:10F9A000FF4AAEBFC6F2AFE09FDD6F938BAF228CF4 +:10F9B000A375A0BFE560E033D0FEE80A99E2F1DB71 +:10F9C000851F30EE9B7BB9390BE82BC57F1F46198D +:10F9D0005238FF1BE4769FB5CF14E63C62E7E7C3DD +:10F9E000D0E17E9AF7087CFC5571FEB8779DD85718 +:10F9F00022FEF8B1C79FD4307EF3DF853D9696D7BF +:10FA000028A76D72D987723A700E725AECC35C7E69 +:10FA100095ABB76EAC63FCF770C4BC0362DE796271 +:10FA2000DE0131DF8DE29DC6C0AC6CFBFBC26772AC +:10FA3000EC711117B4518B04AFC6FD354BA6F8D449 +:10FA40008B5EC9AE37BFECF9E0350062DE4C59DCA5 +:10FA5000E312ED7CACF05A5CDF3A85FC869F399E60 +:10FA6000DD2E03BFA8AF73B83EFBD159EA05B97FBD +:10FA70002D17FEB99A6B78F84391C22F0533F05FCA +:10FA800011CAAE57BFF8F9C22F0F077F091B5D5F80 +:10FA90009B81FFCA2AD799E13238FC5FAC3B4BBD52 +:10FAA0008AE1E1BF66FE08F0570DCCC77B3A5FAE36 +:10FAB0003F4BBF625DBFD274E67A37B5E48E630E0A +:10FAC0007B0F616F6BB409E3CEA63AFE105AE83B98 +:10FAD000BD9FBB2559DCCB19A2DF6FB0CAABF3B811 +:10FAE0005DF4665C6711DBEF996EEC997A39EA3D5B +:10FAF00079BDB33B315DDA338A45868133F0D10479 +:10FB00001699661F2FC9F9FDCC41528A031F4DA4D7 +:10FB1000F237E31AF58FE3A33D777AFFDE11FA2F70 +:10FB20003A4BFF25546E3FEFC67872EBBCDB91B7C2 +:10FB3000FF04CAF78E1295CEA5AD38F6DC7DE92C10 +:10FB400051799C79705E247DDF09F4B1F9795CCF3D +:10FB50007062FC38BEDBBEC741FB35B75E9B6CC52F +:10FB600021C64276FC46F3385FD1920AFF1D2A2552 +:10FB70009615DFDA24F0DF26855FC1A723CD71FC5F +:10FB8000772BD75F92AD3FAE1070DC98E710FA325A +:10FB9000FFFD3CA7EF8557D08E765AF10141252B0A +:10FBA0003E60051AE6543F45F7892CBC8C54BFEDE6 +:10FBB00012467CBEAD9025D7959D7BFFD13C83E05E +:10FBC0009BF2B0CA9D1A63557A1FC09A6F9BCCFBFB +:10FBD000356FE7765689C6E37C40FF89D0BD294959 +:10FBE0004B5AE72E781F6EAC80737D25DB255F486E +:10FBF000F12C875C747FA43984B69459ACD2FD8013 +:10FC00008A108FA3ECBC8799E550AFB3C367BA5095 +:10FC10009FF39727D14EEEFC848FDBF94F06F999BD +:10FC2000592462044767EE8B60BB026C3755D45B86 +:10FC3000ACD3BBEB456CC08D72CBEAFFB47B02FA50 +:10FC4000B9FD5E5179974271147F649E30D25F5B3B +:10FC50007EB30B43FE77093BACC5E721FFB4D50E5D +:10FC60007FA7D2FE5E6FFB08E7EE2B0BB81DF16895 +:10FC70007E33BD47BF575A5D6FBFE721E773BA3A7E +:10FC800029E88FD546351EAFD4FE0B8C9FEAD4658C +:10FC900003FD449D7AAB86F74B3A13B28E38D919DF +:10FCA0005AA8DD82EBD123EBF81EDCCE50EB2F30CF +:10FCB000EEDB84FAB89E87F406BA77D89E90A7D177 +:10FCC0005B812CB260AAE58FC2F63D32D7EFAA580D +:10FCD000B212FD7F3DE5C54B00BE897A0DF9110ECC +:10FCE00075DD29239E41FEB13112CAF59489EBA43A +:10FCF000383EA69F39EAAD95AFC66B343B855E7C36 +:10FD0000B9A3BA18E1DB9454648C9B3FB0E3D8618B +:10FD100027FA1B6B653ABBCF17BF93F68BBC326ECD +:10FD20005789DF93DED8C3ED50CF4C95CEFBF479E5 +:10FD3000D9EF3DF86665BF1BBC73476731F2134FBF +:10FD4000CEFDF003332716A3DF6EE7F5E1625D9C7D +:10FD5000F7A46664DE833CBCF13A8A775672DE1DF6 +:10FD6000AEAC1AE0EF98D4FAE89EF87FC0FEC5FD6D +:10FD7000B2478EC86857996FF07B82BB9CA6CBBEFA +:10FD80006EBF1BC5F7F986380BA37FB2AA4C8ED283 +:10FD900079B1D017419FA6F86F6B7D73D3F2AE791E +:10FDA000677C0754D10EA6DAA79D4E5F9EAA011963 +:10FDB000DF4F99B04F9FEA2DC3F36EE39941C4FB27 +:10FDC000ECD2A9683A59F4F6C2CC63F4BBE3B7EFBE +:10FDD000F591BF37EF35AE5FEB222E66D381EBE9AD +:10FDE000F772F5966018DF3FCB334687F1BD6E673B +:10FDF00015FFFD5E4F8B1AC6F7412FFF7E75D6FBB0 +:10FE0000FBB9E9DD713DCCDFA5D3C2F84EDDDD8263 +:10FE10001ECEFFFE02FADD49AB9E4397B2EE992952 +:10FE20002DDDBDF67B50BE7C8E3F903B59BF33FD30 +:10FE300023D1CEEAF7FF027BB2FE4700800000002C +:10FE40001F8B080000000000000BED7D0B7894D59F +:10FE500099F0F966BEB9662699994C92C97D12123D +:10FE60000898C024863420AD93102040D421200669 +:10FE7000A43811C4408004AA15B776192040C08068 +:10FE8000412302157792888BF5B2C1F58280FD4738 +:10FE9000401B2FED46516A5DEA0ED45244C478A946 +:10FEA000DADD56FFF77DCFF932DF4C12A0DBFF7FA2 +:10FEB0009EFFF99F8D4FFB71EEE7BCE7BD9FF79C5E +:10FEC000F9EE3BF8BB96B1EFC4F7B04D626C3C6302 +:10FED000ACB4E7BD4A27635DDBF4B6AD6EC62A8AD3 +:10FEE000F2D2969532B6AD556F334071F79693AD19 +:10FEF0000BA03CF09696E5637ADBC8B42596483FA4 +:10FF00005D12ABEB51A5956FAEE87F7F6A608FE421 +:10FF10008186ECB9E96FBA206D0AEC61980E3CC39A +:10FF2000D3508D4DC4F40BD3BD8590D6C1BFD3182B +:10FF3000CB6EFFC7E9014CDB03F33536C612373F02 +:10FF4000B6E5782AA4F303EF4B909E9BC84255E593 +:10FF500090CEE1F57FF040426B00E6B1BF88A72765 +:10FF60003F7098DA77E17A60FE719D7A9C04EBEA43 +:10FF70006C7130A8776FD19C343794EF2BEE7731CA +:10FF8000E8EF5BDBDA5E23F41FA7CC87D5577BA1B4 +:10FF9000DE3E89F737DAE6AFC6FE003E0F2D40F8A9 +:10FFA000F4E93C089F6DBD37CE6790FE12E0C56056 +:10FFB0002E5D9961976F08786C5DEBF2B401005B80 +:10FFC000F0AB8BE4C715B83C4F1A696AEC3BF89F5D +:10FFD000CE169DEE92C234BFBB617C19E6B75D17A9 +:10FFE000DE85F05BDA5E5E2D4F80B435EC4278CC76 +:10FFF0006BF7F0F2243E5F1628A0F96F4FE5E90A8F +:020000022000DC +:100000005B5E35C227761E5D3A779AA7F00AE62135 +:10001000EAFD77D7311C1CAE74FCFF8FDBCFF7589D +:100020002EDF3E24E869D87E72AEAC9FBF171FFF5B +:10003000A7FDFFDDF677DB72699F2F8F0FF07F4002 +:10004000EB091AE647FEDBE679C6585F18E9E74C8C +:10005000A286FAD18A7A8CF5309F15F8D983CF1B06 +:10006000FD50BFFB9E3EA357CB586BB0C53103F884 +:10007000D7F60E8D477233565054F27A2EA45BDABF +:1000800080EB42BAE52FBFEFCD05FED952AEB1AD40 +:1000900087F436DB3394DED8CAEB773B35D541188D +:1000A00077A3B3C4BC48C5F7BACB211FC7693BE3EC +:1000B0005AA29AD77694179066F730E6857EB66690 +:1000C000E4766DCD8994FF2A51A2F96EDFF24CF5EA +:1000D00068944B3658078C737CC2D4DE6B719E36A5 +:1000E0008DDB00F58FDBCEB48EC079D6683C062858 +:1000F0001F29D2236A640F24D9285C32B48FB7B188 +:100100006008F97247C95123946FAA06EE0915E2F7 +:10011000CB7B5623DFB6DB2C4C8B3CDE02C2A80C1B +:10012000F2058C5F2EBCB5F75A68DFED82F1A07C3A +:1001300013F36CC5FE036D1AB6CF4D55ACC56534CF +:1001400004FD4DFD17582CCA857216C4F9C9A7A61F +:100150007FC4C632F660620EADC719AEAF61F13032 +:100160008FD6921923A0515BB9CCB4D04FA24F3E89 +:100170001356EDABBD1AD20591B445C7BCD8AFE557 +:10018000FBFA6000BA8A67AAFA384E4C5A81A3A5D6 +:10019000D0E8C953F5639B648B4ACBCCFB6F3FC55A +:1001A000F6C699BB3FBC1AE6F50A7B942530F68467 +:1001B000CCE1D6ED84F160DD2D3A8F7926CAFFF1CE +:1001C0001A1BAEFBE3B5BEDD2DA808B43FC4583200 +:1001D00063CB706CC85FBEBF6F861DD6B7BD54437E +:1001E000ED37B7CBC15112E907940E6CD404499690 +:1001F00042FF0E58CF466B4610F7FDC0537A825B24 +:10020000C06A0CE643DAA46D37B2118CE5693CF79D +:100210005540BAF7E9317B1AA0FD6ABB99F6F98916 +:10022000A7CDD45F4B92BE539B83FA82A700E5E330 +:10023000A2FB8BB79840D61DD048427E03DC403FDE +:10024000E841B94FE9BFBC569507E30EE81BDAADAC +:10025000A86FF4C822CD1C5B2B207DA052499B6760 +:100260007827617F8CCB53F8D3C05A0FE895F6C737 +:10027000A73750B934536B67EC7147CA164B6A64A1 +:10028000BC713BE6BF1680BE7B8CEC5E5A7F1BB315 +:10029000E1FA356D81B8B19036B46AAE9E06DD18CC +:1002A000429AC41A84F7164D198EB1D136A68A8D9A +:1002B00083F484BE924280CBBEE72C2C00F9FBACC9 +:1002C000963AA4A7AEFDDAEAC7E07BBEB5A47929C9 +:1002D000949FB72C4F463A7C42F6D4211C9FB02CF9 +:1002E00049C67D0B246AB97EC7401FB1223CDBD3CF +:1002F000504FF0D9BB5A5B32202DD6F193C4FDADDF +:10030000A427D97AAE47BADF96A16101A473E76A40 +:10031000A30EF7A9000000702ED67657E76079BECD +:1003200086AD57F1B16D9244FA5F5E926306AE33CB +:100330006FA343622A3C7CC1A121FCEF429D0FF7D1 +:10034000D9C9041EC07C20AD7BB4CC837860B0B129 +:10035000125CB72EA3D9EB1D427F7A55F4C3804CB3 +:100360002D6582A5C13C93CA4FFE04E9AA45EFD989 +:10037000437877A311642174FFF4228941938F6D30 +:100380007C5C79A19BE827B9431FD0427D59C366A5 +:1003900062FD8D19CCB60E594E87FEB4762CF13520 +:1003A0008EFF7E16C47524B76A4E1BA07E52F8B32A +:1003B000B548CF296D9A901EBE49757AE656D16D23 +:1003C000CAA98FFE8AF34861AA7C68FFEB78DF2A0E +:1003D0003BEC832123CCFC853CDF05F38F13F38FAB +:1003E0006BD5040CD0DF53EBF83C37DFCD82387F80 +:1003F0002837AE71F0EAC897F482CFEC7B8E3D8946 +:1004000070D21BDBFA701D0370BD83C355DFB16969 +:1004100015AE435F08F350D1FBFAC464C2870CD613 +:1004200023217D7DCC58758F988F0C4599B827B0C6 +:10043000F40B3D274CB75A109ECD75A8C792AE0E4F +:10044000E327325EAEECC7FD76AE8FC4F69325FA95 +:1004500051D27B45BB03C71D330B01AE8FDC915BD3 +:10046000AC65047FBFD20EFB77623B9897D366F4EE +:100470008E86F97B1279FF07CCCD0D43E9D3E34596 +:10048000F9C6D7584002781C58EF6EAC47F86DD7C4 +:10049000B02EE8EA65E0D308977DA59C1FEFF372C4 +:1004A0003875037F463CE82EF09C20BA5B9EE759E6 +:1004B00027A61180F9DAF11F2082BB3D3E86FA940F +:1004C000DDC9BC26807377868FC343EE63B3809EFD +:1004D00018EC3152AC45D4B7970656217E741BFBFD +:1004E0008C2052808EDCC4E7BB1F64B62E02469877 +:1004F000B71370B109B858CA793B5B071F07FB45B2 +:10050000BE4A5B0F80B2389FBF4BC2F236FE4DF43D +:1005100045EF2BF123C4FB65803712CA8F68BCDC22 +:1005200086F001BE9E26B36A3D742A398C1CBF6FCB +:1005300003B8407D8B37A63F73DF7BC86F37EFD49E +:10054000B32EC0CFCC35D1FDA576245722DEA5C76A +:10055000E0F97B763BED476AEF9E5A0DCC73FB6268 +:10056000A6D1E2B82CE06D70D0FE3C81F27373B27C +:1005700086FA4D733A2AF5F1A8376848BEE916178E +:1005800076A11C56F657E7F4B19242AC67AB1C0952 +:10059000F59E70083C4F063C87F1D27AFBEF447A17 +:1005A0004B6D889E1F53CF4B7BF9B4CE180F0C199F +:1005B000BE31EBF999234730198E1768EB21BD0244 +:1005C00007653EB0315BACEEAD05389FD1B207E5B3 +:1005D000A20160960173D43DA909A4407F86273902 +:1005E0005DEB7AE4C0A878127B5E84BF2EE35B8368 +:1005F0001ADEFB9F2B243BB44BC7F522ADD0E7148A +:1006000038343BF4348F6607D7E72A5FC8986C818B +:10061000B1B6673292878C1D24FAF9B1987B8B268C +:10062000BC2B0EE5CDFB06B25D4B7A03F3DF80B445 +:10063000D5C96CB8FCCD72B3D1AED2C7A08BA0C661 +:1006400075F9AFA21F0CCADF32B500F99A92EE0914 +:10065000E59A31AD0B6914B9E94576A092CB01E377 +:100660002494BBB6AB64E02D1B1DD55B74999790A9 +:10067000B3ECFBD31B405E156728E909D3BD20C747 +:10068000BB8CB6AB6CD07EACC3FE9AF1FBD05FA93D +:10069000280FCC798DE47A8C1C2ED2F68D3102D1C4 +:1006A000ED6CCFDE52958974E636E33E5E76DDB2C0 +:1006B000DB8CF4DC1572F0F1EEB74F378DBFFC78B0 +:1006C00000AF1EE44B5D5B4E12DFB706F5DEE010B7 +:1006D0007CEC1AA447E8EF9938EF78C7F8CBE3C36E +:1006E00035021FFE6CE77A729196350FE57F99E52A +:1006F000E0FCB1A85BDF8CFA79E50B16A2FB7D5B11 +:10070000E63E8A745F396AC19E385843D76F6FD20C +:10071000217FBCC12153FDAE17FDA36CC497DD69D9 +:10072000081FB46F69FDCF2D2066170B1F1DAEABE0 +:100730007070FE348749E81FEEF9479D340F86FE3E +:10074000A5A7D6033F2F1C3C5FBF83AFA7652D2015 +:100750000C29EF61B257F2EC5E2F8E1BEFF405F01F +:10076000AB037BC03B843D257F93CEBC899174A7AE +:10077000CDCB5821E66751FEB75ADFAD08DF3DCF3C +:10078000975F0FEC9AEDD1B00684EF8404EF62CC52 +:10079000FFB2B5B400F978ECBC946FCBDA5008F531 +:1007A000DE81B46E68BFD743091CEE1ABB8DAF5F04 +:1007B000F614E03A62F1AFA49411DC649955215F1C +:1007C000F85BF1597BDC7C1AF9B016F507FC9EDA70 +:1007D000FC19CA7DB0AB64E40746C1AF4A34FEF5EC +:1007E000B83EFD415F280ED25A8B97F051A1538538 +:1007F000AE563BAC5B2ED96FC3A07EB75DAADF03BC +:100800001A5B230AB95B99C5343553D56F28A6DF27 +:10081000E641FDEE72245DA25FA19F6F7498B7045C +:1008200032506F023D65087C3A6FE7FC32964FEB21 +:10083000904F9770FE9C12CFF935CEC7807C7AEC32 +:10084000F07CFA0B540CA03F39C4F9BA8CEBC12FE1 +:10085000AE03DAEB6D3E92E730FF0308179621C92D +:1008600028C79575A139827800FB58171C62BEE332 +:10087000EC7A41CF317C0AA7A4923FAE04FF1184E9 +:100880008FC1C9E761C8E8137A25D7F3FF5E3D7BC6 +:100890009EE02BDD26F756F40B2795696C0116D1E7 +:1008A0009B9F5AD7574D727C9BC6837ACD807E2CF6 +:1008B000F467451F97919FA39C6AD374A17EBDBD29 +:1008C000553313E785FA3693B83E6682796CEB2888 +:1008D000213D6CFB7299ECF2417AB513F46DE8CFCF +:1008E00056AEF19A50FFF64797837EFD01C2BBBB1F +:1008F000707548827EEE2DE7F67DACFE1BAB37C5EA +:10090000EA49B17A50ACDE93DE1C5DFEB7EB1D5CAC +:100910006FB852FD03FF86D23B480F2239F9A75624 +:10092000E40B643740FA9F1C7F6A457AE8DA323775 +:100930000DF1619FCE47FEC067847FE959F1CDB6C6 +:10094000F1FD55CA9F177EA883C3941F12E547C4C3 +:1009500037B6FC17A25D6898F64745BBE3C3B47F82 +:1009600055B4EB1DA6FC7551FEE630FDFF5AB4EB05 +:100970001BA6FDDBA2DD3BC3B43F29DABD37A89C33 +:10098000F3F7F745F9A998FE3F10F5C3223FD7E6E4 +:10099000E6F27398F306C58EC1BDD4287E236D841C +:1009A000EE7E26F815FEB59445EC03859EE3AB5824 +:1009B00010E948B13B14FBE0453B1FD7562EEC072E +:1009C00016625C6EC3FA0A87874F161A7449745E02 +:1009D000427A06E2CD6D2ABE949BA8E3E5C51C0EC3 +:1009E00091758DD428EBD240FD31C25F972BFC8CE2 +:1009F000FBED91FE16A9FA8B17FE08655EC3E19523 +:100A000059CC4BA937DCFEA7613D557FC3ED736E12 +:100A10004C7FC3E16B7C4C7FC3D1853EA6BFE1F028 +:100A20003739A6BFA745798FF87E2BF4F9CBE14D76 +:100A30002CFE7529E763B607B7E0798EEE9B1CE6BE +:100A4000BD1A5B70FEFF92C34DE3EB641FB3517997 +:100A50001E957F81FA08E46BF5ED9E4289E399DAF1 +:100A60000EB5B56A087F9CCC43FE0105AF1C0C1681 +:100A7000A48DE0D5B0727CB0DEB1237108FDE072C8 +:100A8000FEB2AE52EEEF0C4C32929DE794992B11D0 +:100A9000915D5BE3413FF21768C5245DDE6F7A39F3 +:100AA0003FE9E5FCA3FB13ADCEB35731F47F78905B +:100AB0004F4FFD97C2FBAB615EABDFD292DD95D7A6 +:100AC000EEA573BFBBC2925B6DB70EE8A3C663A170 +:100AD0001680FBBD6B611C5D445FBC6F2D8C03FBFE +:100AE000D826076AC9FFD4E19090AE4F2572FFD691 +:100AF000CBCEDAEA1CF47B7BB85FBBAB779F11FDF2 +:100B0000085F966A68AB5A3B6A67A05FBC3B287B6C +:100B1000701B13343DC61139E8FFE7FA119E27A870 +:100B2000F5D491B6E64AACB7CF5369447DB8E52F0A +:100B3000938DC88736DBCE18D1CED826FCF4DBCB1C +:100B4000DF36A2FFBEDB03F99648FEB6D2A1FDF761 +:100B5000B1EB3D69137E3EF40741BBAB8EBD669B96 +:100B60000CF3CC6F75149B18C71FF47F7C2BEAC95C +:100B70006BB49E0F81462CA83F00FEE483BE8EF826 +:100B80002CAFD1F37C067053ED9746E023A0604074 +:100B900022E6678B946B07EFA7523F765F157D7C4B +:100BA00000FE4199ADCB89C07D3BC21DAA6DEFD53A +:100BB00011DFFD12F090E5F0F315FF10FA92026FCD +:100BC000ADA0E358B8EFD705E87CF068E78F5D612A +:100BD00084FB8BFE6CDB10F053BE7B13DC420E04F7 +:100BE0004C684701DC4C9A7290F3924474FF9F0F5B +:100BF000B4939CD7B9B9FEA7E895BAA04C701CD0A5 +:100C00004F4F19884E754E3FC379CBA09FE217E82E +:100C100052E7C4FED7B021F553C53F6EE8D841E78F +:100C2000C5B29BD3B9EE38D7F3147D59C6F190FE07 +:100C300099DF2BE5201F3070BF6A641C078D63911C +:100C4000A2F8C2803E2FFCEE791DF7F7E238C3F21E +:100C500095C17647867308FBE0EFF5D3FF0DF649A3 +:100C6000E190E30BBBC4D9F1406B6012ED9FF01F24 +:100C7000792D12B43733E56F15F96BEE14B86B1696 +:100C8000E74253B4FCFC28E14989FC95A6804CFB63 +:100C9000680EAC5F85FEB404AC0CF8D9B84FA273F3 +:100CA000192827F82BED4D057A1652E1794ED0C060 +:100CB000422AFEB894B5D17A1A41CF0CA9E86A2924 +:100CC0009E53C563B9AA3DEA9FDA0509B88FF1883A +:100CD0000F1306E3E99A5315A1E3AAF1AE770A7E52 +:100CE000F93DF63DD27745FBE1F0FCEBB5DED07186 +:100CF00020B11CC93B07E1A9E4B3725824ECCF969C +:100D0000FCAF46FB87A01305AE8BD64C66BF07FE33 +:100D1000FABCDE5621A3BC784422FB6E5195FB60E1 +:100D200018BA981894C80E5874F71B0FE0F9D684B7 +:100D30000F3D7A3C1F5DD9C7EDEE14EDAAE29FC2CC +:100D4000F7C1A3EC169F48AF423BCAE275E3F942F4 +:100D5000BDD8EF0BBAE6621BFAD37E68F1A23D550F +:100D60003FC7FB5B09E055BFA0D08870ABEF31797E +:100D7000E96B64B219EC4AF617583DB4BF4DEC76F6 +:100D8000BDCC8C989FA267B209BE2F74CCD2BB8118 +:100D9000CE52CCCC88E9B2F5303EC2B9DC47F3ABD9 +:100DA0003FF2CF7FC2FE6E97432F4B44DF41E207F5 +:100DB000F5475EFB33FA896FF3822103F5AEDAAFB4 +:100DC0001748C9E15FD4139D1E77303A5D1C8A4EE7 +:100DD0005FDD1B9DEE478514C639FC572DC3739FFD +:100DE000FEC7E3E81CA211F4CF1F38F834D0765EBA +:100DF000F64451E75680C3F3DFFEE83F7E0AE9FE82 +:100E00005F69C90E7C7E0CE898083F399885F33BF2 +:100E1000BFE7F1477643F9F99FA7A067871D3DF724 +:100E2000CCC830E45F5CEBDB5D05FC7272E3912CB7 +:100E3000E487170FFEEB2388D71F3F6D60789EF77E +:100E4000B1F0CBBCFCFEA1B37B70BCA7E38A911FC1 +:100E50007FFCD40B23113ECB9E7829ABDE82FD3E76 +:100E60005146E99F3F3E16BFE71FFFE791F5E48C2F +:100E70000F66A19C51FA697CD2743A11E0B604CF96 +:100E8000391307E3D3DFDA6FA338B7687C72735F77 +:100E900022EC53E37E6B00BFCBF6DFFB19FF4A6FFA +:100EA000F1EF3A2A5F06102907F82DB968B1201131 +:100EB00037EE3744C17DD4AEE87D386BE57AC2E8C1 +:100EC0006074FE1218F71918B7E0E2821939D0EFF2 +:100ED00059E11F5CA267FE0350BF09F2F1FCF5A2C5 +:100EE000388F895DE73127D74B9B0E468F7F481E91 +:100EF000BAFE6B4E2EA70BF0E449C517D20C43FB8C +:100F00001BFF4DD4FFF9CF07EA6BB9DD0B64948C5E +:100F10007C87D3D361E5FC9FB13BD2814E1A113956 +:100F20007223F9C89F988A3F7D618CEFB201DCFE85 +:100F3000C1C9F5E5AF759C5ECFAF0D3DF021F08FD7 +:100F4000B36BBDDE2A55FCC4925DAB5E4D05BC594A +:100F50007E20A9048757F2973F7E2C1EFD1D637AE1 +:100F600074C437CFEF3FB6F336C4CF1E1D433E0ED9 +:100F7000E5C9587EA1E795F89B217FC9C3F6123CCD +:100F80009F57DADFBE6B8AB74AC5EFFE56FA53F8B1 +:100F9000C2721B87C30BE57D53D381CE1A77491EDE +:100FA000ACD6D873E3ECEB90061FD67AF2A1BC4C1A +:100FB000663E6D09AEE3B957D320BFE9A5F165B828 +:100FC0001EE8620EE66FD5F86616215F7A44E7D90F +:100FD000C7F37B358067470BEED79F41799AC4FDF5 +:100FE000905BE75A1A508F83FE8E6BA05DFCA39234 +:100FF00057A4DFC3FAE72A7BE251BFFF486769C500 +:1010000073A28FACCD27701E81A778BF2CC4E7BD1B +:10101000549CF3371CD1915C6ADAB721BE02FD07FC +:10102000DF6A2519F9C03E89F8C0EDBBA2F1AB011A +:10103000FA76C1B8E73BADD4FFF9A46016EA3FE702 +:10104000ADC12C076F4FFCAF61FF2FFF8CFC6E69A9 +:1010500030BA7D2C3E8C12EB82BF02355EC5D64382 +:101060004E249745CA97AF0139A0A2FFE51FB6EB02 +:10107000D1BE5A5AA3BFE4788097CC4DF030913D51 +:10108000D2388655B94BA8583242FFE7F15F602F3E +:1010900035D6B26A259FE222C439E817A77EB95D2A +:1010A0000BF89D869B873EDD7F8923BFDCC79FE8C9 +:1010B000496E9C3F070A04AC7BA56BF6EE2AD5FC73 +:1010C0002E1C3C168FF3BBE00EC53BD05E167AF5A6 +:1010D000051B4F379EDB4A7EC7753DC7E291AF3691 +:1010E000F624D2B9DCA1A7248706E07CE1DC637199 +:1010F0006C083A5D76CE5189E7D7B17C4891ABA7B1 +:10110000F19F20EF6B92BCD39210CE2D89248F5388 +:10111000129B8B9B87E84F697743929BBEF5425F9A +:1011200048D1AEA6FA4D29BE5AECC755D9E7D5022B +:101130001C5D3398670354F9BDD6F363DB089493C1 +:101140007E3DD9972D4934CEED0CF605F217C92C0A +:1011500024037E2E42793B96D204BF45FBA5E006D0 +:1011600018C3DA66605E153D2EE930449D0BB087EA +:1011700055E500FFA5284FE3295E2584FEB6658F5F +:1011800046D76F64211A77F993DF19D4FD32D62E32 +:10119000F0CDAB47FDF84F023E4D29DEC62498B294 +:1011A000546BA479FDE829AEB739C5796CFF830982 +:1011B000741EDB28E4F86D8697699D4D77D77B1701 +:1011C000833EF2E99A45DEC589E2FC18E97E97C4C0 +:1011D000F1AB8A8532619EF3857ED378440A15414E +:1011E000FA36583FEA11139F9402D6719036B240F6 +:1011F0003CE2DB3B7C7F968B7561BD84128463800F +:10120000C6DB28F66529EBA3F5811CDB900CE3AD6A +:101210003C07BC0152BD2F972520FE7CC13C0948EC +:1012200097A097309363F03EC7C2B7E1E11878AB5F +:10123000E1998B708CDE9F95CF025C87C0B7070564 +:10124000DFFF00EC0F5C4704AFD611DC1F5C277199 +:10125000791198350FF9F5CE796565788E741FFA96 +:10126000E3D34447E5C80F9972BE1832C238E6ABE3 +:1012700007D2545EB69EA7BB93DE9AB10BECA79D36 +:101280003A7F2AFA4776CE02BD97EB2D26D45BF63D +:10129000BAFCFB715F17697DAFE291E58715DE91BE +:1012A000849F6B389C1F2A691EDD7C09BD3405C6EE +:1012B0008E7388F9A11E5564213C48C53941BE355D +:1012C0008BE75BC79A83EB213F450386DE10F05620 +:1012D000BE293298C50EFA322B7E3154EA12F5152A +:1012E0007D31059526D43BC7341F40FC4A595858D8 +:1012F000B2212732CF9D12D023EACD3F9588CFC7A8 +:101300001D39104A877A2BAADD1AF2C3DF74AA00AE +:10131000E340DE4DE27A4382D093774BAC05ED6F2C +:1013200017E0B95482E91DA9AB21BFF45989F4EA49 +:1013300015CF5668575868FD5CAF8E6BEED4E0F859 +:10134000B714D0F8B02FB7D442FEFB022F532D1C98 +:101350005F5DEB0339D84FC251DFAA57086E660FA5 +:10136000C609203C69DD46D68AFAB28BAD93B0DE61 +:10137000A6248E179BEA591DEA45001E39C1C1BF3C +:10138000EF619C83CC5A741C6EB299E7B7E0380FBA +:10139000C6F3792569B4B7CC42FDBF84A71DF748D1 +:1013A000DE2E22C61D7C1F0DAC1AD789F9B82E98E7 +:1013B00086F7804505DFC9CDC5388F9411FCFB66E3 +:1013C000D818D0025DBEE954F4E09085919EE3D335 +:1013D000A03CB843C8FD4F75DE94AB519EBCA5A39D +:1013E000384267564CFDBC025E5FC8DB2F3D93134D +:1013F00090497C69F126D8E17B50C7ED85D87D37CF +:10140000260BFDEE9B741654C991A6BAAFC85E6850 +:10141000FA262B2AFFC25A58C928953C6C383A152F +:10142000EBAD607D9B902E56F468595045BF074D3B +:101430007CDCAF7F67207EF5A32D23BA505F8FA59C +:10144000D7A66FB42C00B4778D5643F59BEA40CEF7 +:10145000A1FED2AAEDC4739FA66FF4BC3C9BF7D744 +:10146000F44D220BA0AF5476C7D71661BBCF36DD43 +:1014700086FBFF9244713C4DDF24F372E68E47FDFC +:10148000BBE91B89D267642E0F9B0E7E2DD627F3F6 +:10149000FCA026900FFB5003F214F9EC198CF443D6 +:1014A0003C3FA815E761E1F8AB217DE6E008E27F6B +:1014B00017D602231D45F5480FBE680B937C4DC31C +:1014C00073754CBB795A592796237C2ED6297C23D9 +:1014D00024E3FEECF1BC2CA33F6DB9E7E5A94C85F4 +:1014E000271178C6B1800A9EC91BFA421AE011552D +:1014F000C939F7169A60EB8E2AFC6AC4BD18779832 +:10150000ACD544F1AF38E53C987136FBA0462BF8DA +:101510005FDEBD5593D4695E3FD23E7F6615F0BB5A +:10152000D242DEFEFAE4916FAC4759AAC835B93F02 +:10153000CB6755A58D31690BA48B54695B4CB933CE +:10154000A6DC1593CEE0F5172684C76BC1969C9751 +:101550003C6626DE5358981EBE13EF85B46D289C5A +:101560005905E945A59C1FAD3C2279B87B9AC36F0C +:10157000A58791BE6AF184F5789E1057EA795503E4 +:10158000F5961F946C12D087A5E74008F9CB726CD2 +:10159000E756B5EBE17AEEF29ED3D46ED8FE0B346B +:1015A00044DF5B0BCE50BD156B3ED1A3DED6FA9760 +:1015B000753EE4FB251ACEA764E6F7A603BEAF3C52 +:1015C000388BFC5B0A1FBD98EA3D86F309BC2451A9 +:1015D0007CEC00DD61BF96085D28F5FFBDE8C8BB67 +:1015E000187F1077C767EB64A8FFBB157F1C8FE3DC +:1015F000FD3B5699807C39381AC75DD070EB68CCBA +:10160000FFE18AFC97710A1FE8C27B3116EFA1E463 +:101610004A82DF07D67026C673EE4EAEE1E9A4F02B +:101620005E84677CCA7533F15EC80799E14C0DA4EE +:101630001F49DECCCBF3C37B31FD6E72232F2F0A03 +:1016400067626C78315B4EF0DF67E37CF0DF63E468 +:10165000F0F664AE6F3F95EFDD928CFEACE55C0E6C +:10166000EE059BCB08FC71E19EF053FB60FD0BFF88 +:10167000218EC7A95E983DC3C7E1E343FD3B85A327 +:10168000BC4A1ECAE45750E4A1B20FD6AC3E37C9DB +:101690008B18793525C99B909214F9BEE7862FD413 +:1016A0004F48710BFF5A73B11BFA5DB0C0E2D9CA43 +:1016B000E97B3CE2DF7D26BE9E3811676111FBF1BC +:1016C000A8E0938F26737B7569D214EA0FF4FC00AF +:1016D000C6870766E9490FEB98E54D353BF19BACB2 +:1016E0000944F93B7464E7741433E2831D2BF22937 +:1016F0009E7040BF7F80DB090AFCE6231F52F1DDAC +:101700008EA59353915F75E4785391AF287C92C96D +:101710003D49B38A227C11D39C1F4A3CCDA0DC1AE0 +:10172000E9E7661DF321FFBBB993F3BB817C09F2A6 +:101730000B23EDAF34BFC3CEE7A3C8C3940D3D74F4 +:101740000E93F2508E83F40614ACA87FED18D58565 +:1017500070DEEBAA25B875CC7ACC746B61047F7F00 +:1017600097EFFD7532E4CF1771490ABEE01FFAE921 +:10177000163D90D289710809291CFE1F6A40BF02DC +:10178000BDF46E97B2AF8CF02121859F572D60E19B +:101790003B911EFE677FFE8FED8F06E9E8BFBB3FE2 +:1017A0002BD6FCF1CAF8A3A0C39D524897C2F923D7 +:1017B000F727407E2DC0E968923F2945E5F75DF89F +:1017C0009315A914C722E61377D70BD5374172E1D9 +:1017D000B2F303FC85B907EBDB1FBC6F6CC37896D3 +:1017E0000FF43D24073E00FB721DF24BE1FFFB406E +:1017F000ACBBEC1F1ADF443B7B590A3F8746BB9EBC +:10180000A9F1698BE7373F1D12AFB4DC9E7B494BD2 +:101810007A7C477170F7122CBFB1D01380714C02E3 +:101820007F00BF48CF613FE1F67D47FE198267C761 +:10183000047EC4DA91C3CB3BE68D24FF3DE05580A6 +:10184000F8E13C33F5CB847DFB699D2B88FB077861 +:10185000C6C75DAA217E39509E974BF7262278D7BE +:101860001F3F4B852F9F0A7FDEA7A80725A8F2857B +:10187000FF00E47D7CADF5CAF315BC4BDEA0E03D76 +:10188000C7B30FEF4F213F30A8232311EF6F4AE179 +:10189000FE3985DFDEEDF2D722BE0CE8CD8AFD7E73 +:1018A0005F26E1E7662BC7E3874DACD55882EDDDB7 +:1018B00051E7670F839D81F205ECEC3AECE716687F +:1018C0007E10D2B7A4F87F11C671D72878EBD32346 +:1018D0009EDD26EC7B764FB41D8AF1360369EDE080 +:1018E000F4122FF76F0FF21FB06F0DD1EDB83E134A +:1018F00057D8AF43FC7EC8C4ED36457EEDC2F33900 +:1019000058DFAEBBE382488F4ABD2F2E98351807AB +:101910007AA7585FEF9B5727A0DF5BB1B763EDEF66 +:1019200095B8045C378C8D7EE326B39BFC73D76837 +:10193000F9BD84FE174D021FBCF538DE9940A63B69 +:101940000A5F9E93089FB03DAEAB298FB1490EF25E +:101950005310FE9DDDA2ED3210FE742E45BDA57F15 +:10196000A999DFD161FEA5587EA62E8D617F4DE637 +:101970007016EAAD67E4F0428CAB0A1C3430A493D5 +:10198000268420F61BF8EB5AF45F29FA36FA95D52F +:10199000F6FE45F85F434944AF56F4FB8BA88FAB86 +:1019A000F31145C0DE59CE9BB2E5E25EC34ACDE9F4 +:1019B00091AB557A38515132F9D399FA7E09C26BFD +:1019C00052097D8F6B693FC2653E151E0FD4D39CB3 +:1019D000A1FE86B39B57EEFA23DDDF58F96C341E67 +:1019E0002C8FE08BF49D84E3ABF047654F937E8EA4 +:1019F000F45FC582F9E89F12E9B8EABE20DA494DE2 +:101A0000C29F9374343C15E9C85ADAC3D0BE6E3A0B +:101A1000C7E965E291CE63687FDBABFBE82A4693BA +:101A2000F0572AF8A5CC73C2911D5AB42F8E7EC2EE +:101A3000F1AAF24CFD3CE4C787CDA995E867DAEB43 +:101A4000F2BF8CF432E0B7603DB4EF8B1E926CC8ED +:101A5000370E3B98D7467072E7219C2A1DFC3CA3A9 +:101A6000C23CBAF00FF03D7A26A75007FD9F4CE12B +:101A7000F1C0A036F5229FBE384CBCEB3B424E5421 +:101A80007E60F2A37E55693611DFBBEFFE5184679D +:101A9000CAF88B77E63870FC7752B8FEB5D7E57B8D +:101AA0002785F4374F19D2EF3121EF2BF5EE3CC4E7 +:101AB000BBC3E6944AA4E7E9CA3958A022CF09FB80 +:101AC0005FE9E2B09F6E3484AC743ED63E1AF9D121 +:101AD000ACC566AEFFB11AC2936A814FDB72F83EA5 +:101AE0006C9BCEFD8627A41E27CA338DB1FD0ECC7C +:101AF0009F9167F5E0FEBC25D933D15FC996EAEC2A +:101B0000678D145AC586C29388FC91D95905DFB5F3 +:101B1000780F0AF8BB83BEE477816F00D33BCD2CEE +:101B200080F4B3D36C203D04CB79FC82FB61946BD1 +:101B3000354603DDBBB7A2FF8AB7F7A25FA5C6F89B +:101B4000CBF770DDE88F43FE08E55EA55F5ECE7AD9 +:101B5000904E9847776120EE05F8DD6E13F7DF4170 +:101B6000BB00F24F681710ED427CDC0C3B9ED32A81 +:101B7000EBDBA0EB2926FA5E61F1207D3F5C1130A2 +:101B80006439912F9B8AD14FFBA8551F72C03CE24C +:101B90005D4A7C9A9BECB933021FF2E2F5213C9F2F +:101BA00056F04F6FAA88772545E0B1C104FB8372D8 +:101BB000F636B307E522CE43CC270A4E11B870FFA4 +:101BC000790D0D15810BE06D95AD440D1F4B08CFC0 +:101BD000B363E1321C3C9475E07C1DF183E1B24BB0 +:101BE00073A091F8F745B387FBC962E08459A92433 +:101BF0008FC6B8D06E64FE1F60E14A23F3A25F690E +:101C0000896115F9571B84FF9AA1D30EF48E8BE8D6 +:101C10004404785EFCB9447201CF47D47C12CF3BB8 +:101C2000D4E9E58A9F767F8C3F55C8B715E8E7C5AC +:101C30006F4F743BE0E424079B0EC6FAAF07F853DE +:101C40008C1F8BD3C59E9D39A4EF8511D81330739B +:101C50003DED33FAC7B8BCF7A6A23F66E7D2DC1267 +:101C6000F497C4C95C4FBCAD7D14C5F5A2FC47BD5B +:101C700041F1AB29F4BCD7557923E2C1B5A9953E12 +:101C8000FC927366883882587D4EA9877EB54B9D3D +:101C900037AC46FE07FA8DDFE5A674F56BF9292807 +:101CA00057574BEE142E574746A5CF6AFD74DEA05A +:101CB000F8C597A2BF5F1B81EB12E14F5FA2F8CF7F +:101CC000619FDC31FBA44E2F53ED935BBD4F552C30 +:101CD000648DD92775BB95B04FD80EF7499DCF3A83 +:101CE000F8BA6F117242C15BFB3D9D5AA6F23724D0 +:101CF00094787336A2DC7E4D47FED13F08BC847DCC +:101D000028433DB029A5723EE2A719ED9642D4DFE3 +:101D10005903EE37FA636BD16FB59679311E0DF624 +:101D2000B5AC760839B9F590A901F1648BA0772597 +:101D3000DFEBE2F1A0E447473D638B41E8ADEE2CD9 +:101D4000ECA72C57D10FDD744EBE589C13AF9C6B83 +:101D5000F1637F67849FFF4117E7FF0FA203797C40 +:101D600024ADAC4F8987403FB1DACFF9339772EE9B +:101D7000C7FDB34CF6A7927DA10B9A6E237DCBA72E +:101D8000477DEBF30B1C2F7A7B17913EF3799D99DE +:101D9000E17D977D024F168BF3A9CF995BE85F2316 +:101DA000491F53D2037A56A756E859CDFFF1538005 +:101DB000F7B937133D88FF037AD6477A452F0FA02E +:101DC0001E75AE6734D7DBB59257223D4CC087F104 +:101DD00078C6734732496F3F8BF10F00CA73B27FE9 +:101DE00037D255A0879FB39E53F4A865E7C7A23C9E +:101DF0003FC7381F0E1C31505C0B9303A43F9D1D41 +:101E0000D0D783E9B355FB7748BCC3B25C1F1A89AE +:101E1000FAFA39A15F2969E5DC1ED378FFEBB0E05F +:101E2000DFCBCD3CFD23A3FF9748A7CFEBB9DDB4B3 +:101E30003C1EF22D43C183F38373AD291E945B08CE +:101E40000F89FCB5562A1FD0333B153D53127AAB90 +:101E500024E0D15F80E780E7CE2593DEFAA94F4FDB +:101E6000F1FDE7843F5781C3FA8F1E4BC77D393799 +:101E7000A03FF2F5EF14F3EED0B9B3AE46FD09F58D +:101E8000363C8F6EE5F16E4DC1DF2F403DAEA9E1CE +:101E90002F0B293F26DEE15329BC7D24F1777EDF1D +:101EA0007FA58D9729EB56E0D924F450E6EC4F1E20 +:101EB0004A9F6CFA68938FE2C3188FA39D2858EA53 +:101EC000A07A31E393FD54C6F5683A0F8C89AF6070 +:101ED000EAB47670FAAF0374109DFF1DEA45E37112 +:101EE0001ED1FD7DA80BC44F247CD510BF58D15105 +:101EF000BF04F16BA3D3AF4F85FA87EEDF5CC672E8 +:101F000023783AF1E30CB2CF583B3F8FFD50E75DA9 +:101F1000887468AF0AE96F55C1273395F387450682 +:101F2000A19F033F55F313A5BCAC72E8F38A8C5410 +:101F30004EF756118FC5D86C03CAFD43F84FB7BA98 +:101F40001ED72F3353DDD45FF639EE0F9E78AEFFE8 +:101F500065BC73B9BCA798E222B2EF0911FD7FA856 +:101F60006321F4137DB89BE3232E0BFB5D52CEFB64 +:101F70005DA205BB5215A7B54CECDB1203D8A1C07E +:101F80006F5FD85FA1B542BFCB1E963C26A83F51DC +:101F9000F063B44FB2513E88789E06D6B7290CFD47 +:101FA0002F6963C6728AE30A6AD309CE1403CBE2AF +:101FB000CB8314CFA5C007E44A4B3CB45BE60DD2FB +:101FC00079456C9C0453C73DE07EE0F9BC4A8F59CB +:101FD000D1BE85CEFB07F4809ED8F3FB6F0DD17880 +:101FE000138892938A7C9C8A704C8AC88DE1E42580 +:101FF000E839D352F9FE71FA3D20113C57B0667EA4 +:102000005E2FE455AC5E7256CBE5EB12C30EFA2E92 +:1020100048CDA1F196B1B0387FE67ACAE5F67D8168 +:10202000C01F65BF979F63A1EF43FF3F14F357EABB +:102030002DBF8785568CE55FB40700CE5C8E1BB93B +:102040001CC7AFF90AE479AC1C8F95DBB1F23A45B5 +:10205000CFE5B3821FEA7341D45B26DE13D4E23EA0 +:10206000BFBA36F8C087F98C7D6D8A1F8BF15F6B24 +:102070008CFC7B9739BE0BBF5F9BB282C8AF020856 +:102080006794071F58C94EF95AE3D9F5167CA76E15 +:10209000E6F8B3610BE77B1BD67139BA3395F38150 +:1020A0009F8AEF53824E8EE2783ABC6FB39FC69DF3 +:1020B0006A2C9691BE67DA3ECBC23B595AD073E286 +:1020C00080BF026F277AD71EB452DCC2D4F4EF87E8 +:1020D000709F8F59F56EADF03759605FA6B1C89FFC +:1020E0000DD253F11F30E434CBC83F207F9D2AF638 +:1020F0007DB9D1FF4F7885E5139DFF9F31447F8CDB +:10210000D1BF03F1670A73B7A0BD3E79EC349A875B +:10211000CCBCF7637E02F33E904A7C2CC376366ECD +:1021200030DE2AEB50E6ABAC036512EA9FDA2306F9 +:10213000BABF1E3B4FAD58D78617AD74BE7E2CF587 +:10214000579B10AF62E7AFC027761D30EFFD38AF69 +:10215000AF52DF5A88F8FB63734E0BD687793F9EE8 +:102160009A44F3FEF9A5E62D333FC503C9466B80BB +:10217000EE0746E2A19FC5F6ECC9E8786825EE3A7D +:10218000122FCCBFC73E61B968DFB3563CDB453880 +:10219000F2FA532C86D3486F1BACAC00E1708C99DB +:1021A0003DEB01BE4775EC20D239744776B224EA84 +:1021B0001F639C7E03A7ACE497948C3CCE0A3467E3 +:1021C00037C6B51E3319BCC4EFDDEEA8B864C55FD1 +:1021D00077EC77E9A4D71C3519287E11EB237F3DD6 +:1021E0002A1983B95204AF9953156F9C3B18CF51EC +:1021F000453D5712C1F71430D710BE9F227F188F6C +:10220000EF0984E8DE49A638AFCDB46868FF98B01E +:1022100007272BF08A99E764A385E2CE9925DAEEA9 +:1022200063ED0F79D5703B8AF04C88C0558163EC23 +:10223000BC07C16117C0BF4C057F23B41B4BF10520 +:102240002CDD3144FB18BB313DC5FF05EEFBD73A11 +:10225000AE47F6CF32921C7654F74BE8EF56FCD4DB +:10226000CA3A8F89613571933230EED49226ECEE02 +:10227000987929EB895D672C1C94F95E6E9DC79552 +:10228000FE62D76B1BA67DCC3A9FD6FBE2D3D01F54 +:10229000CFC245B88FBB504F569D7BC6F2C13704A5 +:1022A000FD5D293F64AC791CCA8DA937D47FE9A4B0 +:1022B000F703DFBCEE4D90E953A7D5DF81E9F53F89 +:1022C000EBBCCE02F268EA6489CEC1F3D39EDF8E06 +:1022D000F70AA6DE547F4712944FCC9873BD13CBF8 +:1022E0006F96C4FB789DD7E3FDC9A9B748A4BCBDD0 +:1022F0009D01F50BD14EF6EBF01C7F2E103CEE0B42 +:1023000074E155FBBDC6A5F1F38371699CDF7AD2F8 +:10231000DC9426D0A0CFAF8EC771817DA2ABA57310 +:1023200070BF0EE77DE2FBA0758DC37EFD99ED2A9F +:102330003DEAE475861F7A2DBC9EFAFC68729A14F9 +:1023400065B7C7EA4F95022F94734D6C7F6391BABE +:102350009CFBEF26E3FCA01F8B9BCB519CD79C22C0 +:10236000FE55EBB527E755BC8257C76EF400BF6337 +:10237000B89FFEE9B89FC7523FB1927E28878B7005 +:102380001D4887871C741E1D403D3E60E7E73A5399 +:10239000AA3D8FDE05DF933A7A6B821D8B3774B6C8 +:1023A000C012EE12F3EC55F813FCB529FC1AFADD55 +:1023B00011B73D6335C06D468681EEDDCCB0703817 +:1023C000BE912F29F44FEFE5287CBB86F5C9885FC5 +:1023D000D30A4711DFBE9EF553DAC76C3AFCD632FA +:1023E0000F7D3FAD0897917DAFC8A5CC01B9B4383A +:1023F0006D3CFA0783D4EED5B85F905CF9EDC0FC74 +:1024000042441703FC26869F0ECB6F707AC991F366 +:102410006E85DF498B05BFDD1420FE96C0FC77205A +:102420005C23FCAE4F22BBB9DC63E47113D174357D +:10243000704E355A22FEBD232E9EECAB99055217E5 +:10244000CABFC3BA9EE3C4DFA71BDC8477D014EFF6 +:102450008F127CA1936905523DC2E921146ED04FC1 +:102460006F318F539CE64E59847436AD1AE0181FB5 +:1024700059FFB4C59BFB902F4E2B786B3EB6BB8E9D +:102480008565ECE706BCA20CF39DC53C5330246C7B +:102490008ECF4EEF90D4164AF49ECF3B6B7B495EB5 +:1024A0008F3BE2DE80F9333D39C5183FED098534B5 +:1024B000F81EC98C023BC5635FFD264F5F576EA7B0 +:1024C0007645CF86D763FA06AF9DEA8F3B62AB2095 +:1024D0007FEE1CBB07CBED0B644E57797CFDB1F84A +:1024E00050FD6E4B0D82EDD1B49184E7137C129BAD +:1024F0000AED27CC911EC32399F5712B27D179645E +:10250000E0712DF2D79BC43EDA17F0F8909B16CC01 +:10251000D2E1BD37C0971FE3FA50FE237EC4E2CD5F +:10252000F3E23E7BE07A85BEF979DE6CDFA8E05607 +:1025300031AF396A39850716C911FE7A5212EDEBAF +:10254000F9FB35AFFF160C50E007936B72AA10CE63 +:10255000C440609DEFFCD04DFD4D2EB86906EECB1A +:1025600064DFE63E2AB7C4F0DF0F55F77520FD366D +:10257000EE1FF4E79A2391FF89A9EFF368317E8E6D +:10258000DF337755737CC47BF4EAFB42683FA8EBEA +:10259000839EF3CB34D247406B04781788F835C05C +:1025A0003E5AC73C9F14C47B5F2F2C96981EF7D7CA +:1025B000CF82C61C229D10C6995F13F4CD423C8287 +:1025C000B457ABB2B7660BFAD0A5ED6F7140BBDE66 +:1025D000098CE8FEB0145840F0F9ADC5BD4F25F7A1 +:1025E0007F2EE2E0AE72316336C95B2980FE86AB96 +:1025F0005E48E3E78F2E7E2F65CC6A0EB719351241 +:1026000043BD86B599E93D3918F7BBEF94F7C26031 +:102610007F67D7707FC48C7B4A83E89A78BE4489F1 +:10262000BF0BE890D9D7F9FC2C04FDCF74310F9E75 +:10263000D36A0A25D2776A9991F4CDD7E7E46E740C +:10264000E23CDFD37BF2093CBE2949503E678E8DC8 +:10265000FC43CC799D2666DFEBB8BFC69F497A9EC6 +:10266000D19F897EBACA6FE258E8EAC8BE550A7996 +:10267000839A85ACE2239980473E845F0C1F4247D2 +:102680000CC23375201D60589E8EFFC4751BC30499 +:102690006FABA2C7083B2B59D4BF266C5F44FBE34A +:1026A000E3749E52F7CBF7F06B4DCFE5F63654C38B +:1026B000F33409F105EA9DFC8495217F3839CC7B00 +:1026C000BFA9E9CAFD0CAEE7D4FA250FBA0A2BAAB6 +:1026D000D7C96857DEE49748FE7D6D0F1C4FE27C3A +:1026E00083AD8779CCACDEA1433BA96A717D269E80 +:1026F000839EB4FA32D1FE2C4D77537F79730C212F +:102700000D8E9FEAA7FC93E2DECBD7BFBBEB16A4EE +:10271000975AB73D07ED950AF7AA6CC48B998BEDD4 +:1027200039C8DF46A573F95C57CDC79DE99F45E3DE +:10273000DCB8B89EF6B9AAAE3303E7A58CF3BA3D70 +:10274000780AFD7627E6195033657935625C53F4D3 +:1027500078730B613C28AF28E4E3DD58C3C71B2F17 +:10276000C6ABAD83F1004E378A75CDABE994697D78 +:1027700005AB687DBF496ACE447FE1DB380EB4CB40 +:10278000AB36D0F9495EDDE63E1CEFE85A2FFB3D43 +:10279000FA6763E410BA77AC25C3CB9F6BD0AF84E4 +:1027A000F1B160FF621CEC76BDA7550B745C591546 +:1027B00014FEE368B93210AF7C2148F26F8ED1531A +:1027C000E5E4724CD39A1C911F8A5C7848EA79B38D +:1027D00004F1DECAFD950FCD4E20FEF7F66889FCA8 +:1027E0007C877582BF15733EADC89D69D52067E0B3 +:1027F000BB637602F1B7B9A512D1D15C0BAF7F6292 +:1028000002C8799447355C9EC7CA1FFC53F3FB8806 +:102810001CE2766515F3911C9FCE0273AE83F2DE47 +:10282000773E273B77A536B409CBC18EFB40C24526 +:102830001BB9BCFAF158A918E9B4A4B7FF28CA9D7E +:102840009A427ECF0724D5319267A5500EE9C21E69 +:102850003EBFEB6BECC42762E518C889A674C09B29 +:102860007766FF4725E6BF7A2D9783630FF27E7D5B +:10287000555C9E011F6D4E1F3F783FDF11743FB0C6 +:102880009FB1F41DB3BF03FA848FD323DBD44CFA7A +:10289000830BDFF323FBB34FC2F966DCC1C8AF3A49 +:1028A0009C3EA1ECFB1B117D2CDABEBA427D479900 +:1028B0000F712285EFF0EE6C68676788F66568BF78 +:1028C000E3BC0B153DA859D1837672B8F079BB7083 +:1028D000DEB05F1BCA3DCBECDAE1E7FD648A774FDF +:1028E0007A12DD97F5209FFEFC1D2DC98F99DE2DF4 +:1028F00055C81F6A5860A34DC59F46813D23ABE470 +:10290000DCE8A0116CF348FAAAFDB6A874518F2B2D +:10291000AAFEB883EEA8F2621092EAF2AB7B3D51B8 +:10292000E9F17DE551F5BFF79E372A3D215C1D5544 +:10293000FF9A73BEA8F418E6D7E0A2BFDF5F17D5F1 +:10294000EE731690F1DDD431FB402E1138BC7D05BD +:10295000C9741F9EFEAEFDC61FD54F91B8175CC14E +:102960009646F5C39EE5EF2434C37FB88F6362DEDD +:10297000451829DEADAD7B34FA3D8591787F381E50 +:10298000BFD1F563EF01FF5BBAB8075CCA4A518F4C +:1029900018B44F40BEB8DF37EE67C1A084EBA2BACF +:1029A0006CCC6EFE2E63ECBA947BC24CFBA68CF50D +:1029B000FE04F21B9F1C31B8A2F7D5E48EDED7B817 +:1029C00082E87DB57AA2F735A13C7A5FEDDEE87D3D +:1029D0004DAC8EDED7245FF4BEA6D445EF6BAA3F84 +:1029E0007A5FD31BA2F735B3397A3FB3D744EF5799 +:1029F0004EA021AA7C446B73345E8AFDCC6F5F13BA +:102A0000D54ED9CF00FC77A9FDBC714E850EFD0DCA +:102A1000B37DBAA87733AE745FCD19B0AF71917D35 +:102A2000BDD2FBDDC0FF6C1949113D07FFA2EDBF10 +:102A3000B17BEF807DAD46FBCF8D9901B26726FB60 +:102A40000DC40F8EA55E77DC2170412D07A6787628 +:102A5000C8F4CEA8D0EFD05D40F68E9FDB33338430 +:102A60009D186B1FCE66FD59F288C1F2E1C7E61CC6 +:102A70009DD0FF0B70BED5F8428116EDC35FD338F1 +:102A8000EF0CCC3F34C83EC4F39C2BE59703FCFB12 +:102A9000FA66E2DB97E5DFEECC081F24261B203E1A +:102AA0003879CD641FDE6BFF5AC7E362FBAF33900A +:102AB0007F7EF2DD15947F58E27A58E0575C5EAF76 +:102AC000FBDDF732F15E77658D4142793DD9281102 +:102AD000DD559ED3903D586929CE3497A23D62D0F2 +:102AE0006051A54522FFE5F3DF6ABD01F4FF27F140 +:102AF000F3BB1322AEF6843D87E8F55DABC16F846E +:102B0000F54D16F72D8EC6D83927AC3C7EF2C40A97 +:102B1000FE9EEE891CC2217662955BC441BE4DEBE0 +:102B2000EEBF93B9451C24F9150E591C3CCE313B20 +:102B30004CF186FD139477547B42A83F1DEAC8E10F +:102B4000E78F209CE9FC71C7C0792B8D77A82D9366 +:102B5000EC8129E21D8C433248649C979BBF137023 +:102B600048C4479E147290CE1F105EED26714FC46C +:102B7000BD0EFDAB87EE7173BD3E462E1E6201F2A7 +:102B80005B04EAF422AE3590773FD6AF1BC3EBB3BC +:102B9000687F00D42F7D1BEB3798A9FE097BA0F03E +:102BA0001984C3AC028A2355F0E3C475D332914E25 +:102BB000ABC0EEC37957CDE1EF6A54D976C8982FF0 +:102BC000D57139DA912FB563FE5E97FF1F33408EC2 +:102BD000A68D92A8DEF4FC7D26A4CB13C3FA5B7EFF +:102BE000F0BB3B86F0B7BC6DE57AD8B1D4A2166EC7 +:102BF0004F44D39BE22750F4AD6AD64EDF992C4464 +:102C0000DFC17E02A033ED507456AC63DC0FF320BD +:102C1000D2D90CE63F12E640257F14F08B9DB81EFA +:102C200065FDEFD87B8EC5C3BE5599242EF710FFE6 +:102C300055FACA70F4A6C06DBAED7416AEFBA8E9D9 +:102C4000EB2C35BFBA90E4DF97A13A479AEE089A89 +:102C50006C97D093DF18169EBF388578502BE059BB +:102C60006B71535CEF0913B77F62E138794E05F75A +:102C70005F097D770AC875AEBF06097E35C3F0AD22 +:102C80004BF8B37E81EB9809F0E3FEAC1FE8705E71 +:102C900000C7FF959134985FBD2BD671A57A672C3C +:102CA0001E0FF0B139D17EADE1FDF743C3B3779884 +:102CB000F30AC9CDFB9D2ADE4379DDC6ED05A85890 +:102CC00093AA8AEB7BBD95D339E005F1A16A211F58 +:102CD000010C240F3DF01FCEFF4FCCE2376A50CFDE +:102CE0008F967B95E2DD932AA6D273900F8A775256 +:102CF0002A63F29575C7CA45E51C63B8F57F96212E +:102D0000F421371BF51D94834C247DA8EF5D2D9D88 +:102D100003BC9274D3E21DB08E51FF3486EC8A5707 +:102D2000926FBEE32D4C3F3292EC9257536F7F145B +:102D3000CB47FE8C972B72F5BF32B87FB84A23DDA4 +:102D400086FEC382D2DFCECF81791F37B11F62DA10 +:102D5000C51A3A66C138AEC2DC920DD04F959E516D +:102D6000BD99E3565CAD3EC78FC36853A0B799E2E7 +:102D70003E40263E215C425F19FD3699AEA06CC3F1 +:102D8000B83E718F325D662D06F8EA5DED161BC206 +:102D9000CFCCFB7DB3F83725D86F552E4F5FE58933 +:102DA0003B3D02E72349349FAB0AA410BEEB5DE52F +:102DB000E0E535258FA761FC6B55A552FFBA8FB0B2 +:102DC0007E9578EF36DEEBD78D467F88F01BFD468B +:102DD000E6F8919F69A4F9BEB0A04287EFA8CCF5B0 +:102DE000713FDEF5E5EB24948373FDDE52F5BDC43F +:102DF000BC4C1DD59F53CEEBCDF1D5EB16ABD63FDA +:102E0000D7DB4FEFC4CEAD3B2D237F783786CE671F +:102E1000E13F3448E70B7F7827FA79AAB89E32471A +:102E2000D0F9DB48E72A7EE9C37FA07C5DC0F9DCEE +:102E3000AC6A4EE7735933D1671D6BA7EF7CD6435D +:102E4000DF05AC8FD3F7E901FACE463B5C45DF13D3 +:102E50003361FE37322FD5EB8B1BABE3F11AD17404 +:102E60003D1C1F043EE0CD1C3F3C1DBE3EAC5EF64B +:102E7000F4C3C8D7E6297A59DD8E57482FABE67AD6 +:102E8000D920BE563482CE0D869313C3F1B5E1F539 +:102E9000B14E59E863F371FE8A9F5E25276ECE1C02 +:102EA000C2AE3E31047F53EB67C3EA6535829F5D56 +:102EB0004E2F1B461FBBC4B9EF8F32FF8673DFD87E +:102EC00073E5A549DEFF72ABEE5534BD6734BAC772 +:102ED00061DAC7722D782FAEC2990BE54DC27F180B +:102EE000D7C7BC9D90BF57B99F90EBA67E5D7A1E59 +:102EF000F782EF02165B30AEA38FEECBF427815E34 +:102F0000E58EC463ECB5423BB4EB73397F19686F4F +:102F1000642D6655FBCA9B397FFE6A9B9EF8F3576A +:102F20007689FC415FCDB3905E7766BB9EE2084731 +:102F3000E8393D3B95FB466C13BF7F9E99C3CF0795 +:102F4000A5A32E746E05D856FA2AF1A767C47DC4CE +:102F5000AFEC9EF9D4EFB66409FB5DDC967F3D8E45 +:102F6000BBB82D23876F2AAFBF3D93CFF38CDBFB1C +:102F7000592FAE6B9685EE8131E62F467FAB415BD4 +:102F80003AC3A845B9724F7F2FB45F9169B1215EF2 +:102F900057659F3A89EF037FF4AC8EDE5A5DBA6FB6 +:102FA0007642089BC95E97AF68B05DB334182D4771 +:102FB0001AF747A757F444A79B62E448ACFC782E65 +:102FC00053D8556EE641F970A57655B6E43DC2F189 +:102FD0003F48F134CBC4FE1B0CCDE73A61FD86FBC4 +:102FE0000A4AD6119EF138A9E407724A505FBE53CF +:102FF000F0FBAD99BEE3D8DE905D3816F5CACAEC99 +:103000001ABA4FF2D56E13FDBECE57266E1F7CF551 +:103010001297AF1D59BCBC638FC12D11FD7B6BC6D0 +:1030200097611C14C7E7A65D5C9EC29F91BF5BE7DA +:1030300035E27E76E8BDFA546CF78FFC5E56C3AE7F +:10304000DB6B901F2E677D74AF252ECBCDEF8D6B84 +:103050009FD41BE19F392DDED1EB60BE8D3E33FD49 +:103060003E8EFC57D98778B419BB9C8071FB5E5BA0 +:103070000594AF38C8CF8FC299DCEFDCFA66F47DD7 +:1030800034FDB3B302489ED7FEB58ADE67BB7DCD63 +:1030900061BA4FE1D4F72756A0BDB04D43787FFB0E +:1030A000DD2F52BE545BDD87BF2F74769B857EEF8C +:1030B000E7D86E03ADFFEC4B5CFF38BB97C3E3F67C +:1030C0000C4BD0280D5E7F8B1412F14D7DF1B81F93 +:1030D0007FDC7B573CEEE31F95F8455B733CD1BB2F +:1030E000BB395E7DBFAFFB61ADF89DA4D5BF9E002F +:1030F000EBEAA89D5F8AEBBED65E6AC6771895722A +:10310000251E4376943F867CE8DABF6A893EF077D5 +:103110003430BEB7EABE1A8A77EDF699ED385F779C +:103120005B17DD438775D1BE756F33D2BA7258CF46 +:10313000268AEF6A9B4AFBD5D0D640FB3162B6990E +:10314000F492EE2356FAB5BE6E5BB919DB7733B94C +:103150007A287F7F30939F83576473FF4EF73BFC41 +:103160005DCCA9DA4933500EAFD8A6A1B8DBE3B5E0 +:10317000EF9F2C7046E84BAA2D4F0BF37807162AC9 +:10318000C3F7C105FE88F92C7D544BEF185E8ECE37 +:103190000CD993687EB1F4D61DF0D07BFDB174D705 +:1031A000DB5662467F7F2CFDDDDA964BEF00B15691 +:1031B000AEA78DCC92B8DE7BE57458949534980E0A +:1031C00059466D54BCBB42774A5AE1F7CAF9BDD1A2 +:1031D000C3BCFB2CF4EE04DD6FA8CDE2E7F7B559D4 +:1031E000FC5D70F9CFABF7FF0AE0F49B4CFFA42C19 +:1031F0008C8B63DE62C43777BFAD12D5158B88DF49 +:103200006479FC3EE34E9D4F43F828FBFFF5579051 +:10321000AF6B6BB81AE9FF06D1DFD64CFF14EC6731 +:10322000F13DFECF5E66887763880F2CFE668E06C2 +:10323000E31F2C1DCABD7B5FA5C949BFC74178A943 +:10324000F0F17C986FE7107109CD593C4E3CDFE9F5 +:10325000A37E6665DB947710E7E1F9CA23CB34F4EB +:103260003B008A5EA7FCDE568E9BD1BB8BC6720EDE +:103270008F9C724D605A3C8D43F996727E4F3FAEE3 +:1032800034C4B0DF7C2C073C59EDD2BA917E733C3C +:10329000ECB4BA1EB43F8DE5F905FCDD4A0D33BA36 +:1032A0002D46F47B6A081F723A785AC183CFDB251A +:1032B000A2D3D540A96B4AF83D0992A7A55C9EAE62 +:1032C00076E9DDEAF7A3AE4DAD6844F8817A95E77B +:1032D0002C13EFF8308C7BE1FC47F2F07844B6A970 +:1032E000FF154D4E649E8B8DC1C918571A0BB7C57B +:1032F000627EAB707E802A133D902E187E7ED7674B +:10330000B9A3E22095F9E9575A64A4E781FB6877ED +:1033100068E81C549FE6B208FE4C7163E98CDF97A5 +:10332000DAEBDA4F76931297E334C377DCE0B81C1C +:1033300060B332E2A55EC3AAF0BE8C12A7E334C329 +:1033400017C6BB4BEB23A5E86B4D3BD941F70BBE32 +:103350009E027611EA737B963E5F6C8371939A2C82 +:10336000C5A89FEB4DDE0738DD44DF278A858BDE5D +:1033700054B18BEA893838855F246F6051F7636FE9 +:103380000D4B3C4EA9758A77801FE4E2EF3CB41BDD +:10339000715EC7B284BE610C53FCE0CE89CC867EE0 +:1033A0001A17F3ECD28E88EC6393D847E98824EEA1 +:1033B00097812053F129E577CFE244DCB832EEADB6 +:1033C0008572C830C4F8F8A79EB7523F6E775F0E7B +:1033D000CE6BB8760F9BF8FD2DB6C9E3C67A537352 +:1033E000FC87110EE91BEADD42CEE420DC8EA672DA +:1033F000FFCB51933B03DF9955EE8D0D773F2CD6D4 +:103400000E5829FC884E3D8C477A13BFD7B07218EE +:103410003FE2B0F7A3376AC8FF06F22615EDDF26B4 +:103420009F5E437EC6239FE991EF361D3CAD47A7C3 +:10343000BE5BF8091578670BB874ACAB4C4522BA83 +:1034400028851FF9098EB7D4427EBAC1F7F06D66A0 +:103450008C938ADCC3B79931EE3C721F1ACA611C87 +:10346000E91E7E0FA713FD78E8F7BB87D1FC3B85EB +:10347000DF2F8807E3F0ED64DC9F18A866E29E0565 +:103480002339DB6929080A3B87EEA726977318764C +:103490000EDCBFE0E32A783A902FF043984803F718 +:1034A000A7AD85BE1C0B48D635992FFFDA3CFE6FC1 +:1034B00078DF25D0D87EC9F75D02CFF8F07D1723DD +:1034C0004A6D518EEA89057FB74DFCFE0EF29BCD09 +:1034D000D648B90C7A99B14549077C53F2001E923F +:1034E00092BEF73E8C47BBCFC4A2C653CF4F8EE9E6 +:1034F0005FE7A6F83231DFC3D7637F0F9628E9D4A0 +:10350000FBF03D9BFB74D1FD11AA8BF69850C6F3DE +:1035100075DED8DE362922DF40DEA5658F8FC8B97B +:10352000CDEFD7B48F7323FDCD26A6ABFB660EC9B6 +:10353000039D93DBF7180B9209FF6B72E776F13866 +:10354000666EA71B53DDA4FFE66573395CA2E172CA +:1035500049E7AC08A19EA8639EAE5FE5905C2CC0D5 +:10356000F192B36B5E457D25221765B26FF241BEC5 +:10357000A2FE6BEC10F1EB62BF0D82765187E5F590 +:10358000E6EEC373E30DD9FE926C95DCCFEF70EBE2 +:10359000B1BF6EE51ECBD25C8DA492A3D3B2B93E6F +:1035A0009B5FA0BC4B534BF257B6578D47F9ABD43A +:1035B000CBB5E56970FDB919422E82BC45BD38B75F +:1035C000C34F211EB9B27F1EAE3BB76E891EF5F701 +:1035D00069D95A5A6F696BD084FA2F6BD0307C67E7 +:1035E000729C90573ADB62D2137575460B22EF1E20 +:1035F000DF6326EC3FBFA0AB157FEF93D9647A97CA +:1036000032BF83EB19F2DDF3836A3FCB569B4CBF8D +:10361000035AA6F5AF22B99338D18B7A48A66346F0 +:10362000B507E8305D7BA0F847167C0F62E8F7C36A +:103630009F77737BB345F2056E407A2C660CE95593 +:1036400029CF16EF002DCCE6F7C6DC015B25F2ABE7 +:10365000495FFA082E0BB3656AFF0B391C87FA5FC6 +:103660003EF3AEBA15D7E9B3B889AE197F1FC2B918 +:10367000D64DE7064667F8DE7158EED188381E4E03 +:10368000F7175F4CA1FB2FE7B3FD8DB86F65DAF03C +:103690000337E07AEE95057FE0FC296BB685EE43B3 +:1036A0006E71861F409FE45E1DB7B7DB3CEBBD78B3 +:1036B0001EF10BFCBD2DC453D82617B4B758A42057 +:1036C000DAABA540A7C81F994B22B96CF1F49FC093 +:1036D000FE67B84F78B0FE64E5BE738C5E4148A5C6 +:1036E0009C73315C5F80E13D65C09696EF1223FAD2 +:1036F000C614E6A5B808450FD989D7D5A1E94E8DDE +:1037000091ECF2B8422FDD6FB9A5409A44F373F6FD +:10371000313C6FC96D97880FE716D4D2FD94DBDA80 +:10372000393DDD2AF090C91EFA3DA87BB3E3445C25 +:103730006F0B7D49AEE17ADAF4746E92DB9AA3578F +:10374000BF3BA9BC7F746B3B7F474D2FEEF7E596DF +:103750008A7854762F95EF1474A9D8F391F7A9F8C5 +:10376000B80A9D3589783016239715B9FA69C3E7E9 +:10377000F1C80F6E3DA20DA1DE773979BC0750CD9F +:1037800084F876444B7A73A49FFF8C47FB6BB87E1A +:103790009ECAE6F87A74DE57F4FEE69E23DDF47ED8 +:1037A000E0CE592099493E78E8FDCE6FB5BE67B2AC +:1037B000693D9EED23619C3DDBB5A4FF0EBCBF5768 +:1037C000CCE5D22D79B5F4EE9DA3744C09CECB2572 +:1037D0003323C65FBD2AE012FBFE9E02DF81F7F7AE +:1037E000AA393C1DD55EF1FE5EFF14A4DBFEE9FCA8 +:1037F0003ED270EFF0BD21F0E4FF9977F880CEF172 +:103800001DBE53D976E51D43FE0E9F27FAFE72ECCE +:10381000FB7B5B851EB4870577E1BDFA4081DE86C0 +:1038200070AD2978F592FAD085A4D97FC0FDF9F45E +:1038300093B38F6C64F8DEE4AC79742FB388EB1F1C +:103840002C70C0339BFC74D17A53E49EE908BA3FD4 +:10385000FA998023F99C5287BF5FFAC5A95FDA9075 +:103860006807EE55DAF5CAFB2F748FD47220559C89 +:103870007BB2107FCF839F6B2AEF6633D947FCC59D +:1038800072209FDF47D54AC48F95FB97009E7A6CC4 +:1038900067792985FCB44D9AF0D3A83AFC6F0D8D59 +:1038A0002E5B0080000000001F8B0800000000005D +:1038B000000BE57D0B7C94C5B5F87CFB7DFB4A765F +:1038C000934D08210F487613120209611324803C9E +:1038D000FC4800A3225DC007F8DC4080900741D07F +:1038E000DED862B3185E2AD65063458ABA28205AB9 +:1038F000A08B8D4821D2051469D51AAFDAA2ADDCB0 +:1039000044ACF20824C4AA78AFD5FF3967E6CBEE01 +:10391000B721057BEFFDFFEFFF77E32D73E7F1CDD7 +:103920009C39E7CC9973CE9C99B519992790C79883 +:103930006DB3C19715CBD877F87715E42528B73143 +:10394000C694A063A69DB1738C95623BA6A849B3AB +:103950008687DAAD94D86C2CAF3605B3E3F342DF3B +:1039600069F914335BA2E5E320BFDF08ED311FC521 +:10397000F3CB2CDE7ECE518CED31B10AEA2706CA9C +:10398000A17E9C6C602C81B1AE02C5FF8C84E332B9 +:103990001FE66D0F0FF23F08F971E98CD73F2051F8 +:1039A000BD34D3A262FED302E51933E44FE418829A +:1039B000A67CEC47BAD383F36041C78C30B86D6204 +:1039C000DEF3367CF677961F9AFF3C8FA95DCEEF2B +:1039D0003D7FEDBB7985E5D3580CA495CBA763AAB1 +:1039E0009547A6F3D69A19B330FAFB0EFE97EF84EB +:1039F0007FFA33F6A5759289C98CFDF067334C2C9C +:103A000093B1056C09A515AC9152F8B318921873CF +:103A1000AE55687ECEED92DFE9C262D5621883A909 +:103A2000C380E5552B19DB08F374FA98938D8662F1 +:103A3000C92031A877AE84FC0000FB01C59704EDD6 +:103A4000361F8BF64BD06E4D82D3C400A56B56C289 +:103A50003F5730E65B27F9B378BF491E989F6FA5A3 +:103A600041C57EA63B6582730134C714C0F6133C82 +:103A7000225D69641C9F62BC15CC10C4D420F17413 +:103A80008D4329F5DB7AE343EB6FA571896512D28B +:103A90006D90C1F10C74FAA5499D8DF3F9323E9BEE +:103AA000F9009E95F6256B4B793D7B8621BE82A55C +:103AB000545F60603E89E33319E0CFF8C0BA19F96A +:103AC00060B213E633AA37BEE737EAF30B37E8F301 +:103AD0008BFCFAFC3CE6FD55124CBD6ABBBE7CB2C9 +:103AE000D341FDCF656EA2CF4AA3F35F5D5720DFC0 +:103AF000290CE15F3190E3CD3088A71971936723DA +:103B00007E599C896511BC1CFE8C827809E15D1987 +:103B1000C7F9FF3F0B6F249C8B9DD91CBF717C5D47 +:103B2000AC847521F0A5223CF376989F7D10F03B84 +:103B3000CFEE8CC1799C91BA7264E48387EDCEADEF +:103B4000D40EE69908F374F03ED7389D34EF139203 +:103B50007B5B10BE333CB2F3816CECE721B91046BD +:103B60006625B36CB4DEF69DB6F971BD5500EE92D4 +:103B7000E321EF7EEF08D647CE0FFE9C4A11E211FB +:103B8000FE80647313986A8575C6C2DB65E0BFC0AA +:103B90002739220F7DAE4AF03CEEEC8F397FAE0222 +:103BA000E32F381DE5C6793C6638B1FB75A4C36EBA +:103BB000AB1BE9B07879D73606DFDF92E07D0AE506 +:103BC00049C7BD1F4E959CA1F977BE3284F8E58A9E +:103BD00095E650FFF8CFBAB03C8EBF16263116D20C +:103BE000267D79C5A688EFD8B7E67038196B247C96 +:103BF000FDDCE41DEA00FA6EF41415213C3F373673 +:103C000096E27A7F32C91BC0797C32C573C4C0D7B3 +:103C10005DB607E4D1816FE6652A8047DF318B7B93 +:103C20002B941F50DAA2512ED6A673FC2759982F39 +:103C30002A9E9763BFA6FBF9FA8B5C5FFB9D12B5CA +:103C40007FD3A9DE988EF8FA06A0027CCB885BE8C9 +:103C5000CA627B5195611CD62239B2885F58FB42FB +:103C6000905FB61617C9D5DA24E6467C2DB619DA68 +:103C700047437996CDA0A6221F3B0D7EE4E3C54DB8 +:103C8000CCB710E86531AAC15417B5F38D867CA175 +:103C9000C1497CA7C1B178EF0CE6B5111C33D20144 +:103CA0009EE8048F613EF46FAC3010AE8C8A770EC4 +:103CB000D2C338DB44EBFD0AE0033FC9673FC19F35 +:103CC000D5E42DE3F5169B4C78F218503E3136D0F2 +:103CD000F1697408DFC79CEA9788CFBF624132C0A0 +:103CE0003F40FD10F35F744419A4118CB539395C61 +:103CF00047DF9B15DB06FD7FC13CB10EC0EBD183D6 +:103D000037C5B6E585F29FCADE1F3A603D2C643E9A +:103D100092CB8B989F52D6D48FF86081C2820AE0F2 +:103D20007FC10DEA07523E5F97C18875199EAF6645 +:103D3000AD5C8EC3FA0C86F14FB5123C28015E6B68 +:103D40002C2C188D6940FFDD62D645DFD5EEFDCE07 +:103D50001CD4AD1BCE5703E4A5054B104FAA3A382F +:103D600001E86AE34DD886743E4FC9CD82765C4F38 +:103D7000ABBB5E23FEBACC76A79C8D890699F64F25 +:103D8000DA17D6BE22F9CD503E55B6A916C8D73C93 +:103D90006CA0F50D1D4E1B5584FB14E7A75AE7D404 +:103DA00053B8FF25C07245FEB1EC91FDF7BBA8BD2D +:103DB0003B08F99A57EC6E6C5AE1AC9886FBEB2203 +:103DC000BFF1E3B6B07955B2DD5351D47CC1DE34D6 +:103DD000E13AA9DAAEAFAF09E8F3B54CF9B84DC393 +:103DE000278C53F79749C157C3D663AACB9EF06976 +:103DF0002EC1E6FA0EF12FDF16EBBDC83AD1D2AFD5 +:103E0000EAD5E0AB46C6D22535C3C5E58B09D763F5 +:103E1000A5C254D40B22DBDF3388AFAFC3B6CFFBD0 +:103E200079C3EA8BF36003867C51F1C5D7A5DB2506 +:103E300011DEA35B81CFA19D45F1B1B8B0EFFBFAD4 +:103E40006EACCB40DF1D36F1FA47ECD12AE231C926 +:103E5000C4D65A0A43ED920C6CA505F8B321DD33A4 +:103E60000EE761713A4D08DFB3461F33A05CE9CF1E +:103E7000DC5B61764F1A99CF0AED526503D1355557 +:103E8000B63CD300A025A673F82EC52FD1795D4688 +:103E9000C467AABC9BF810B6671F83FE4C0690AFA0 +:103EA000D82FAC4D2BC0B5C9CA7C080FD43309D26A +:103EB0009DFD793F265CFE85F83D0B4A901EC4317E +:103EC000019F37BB3C335DA388BFF2699D0B381659 +:103ED0000B3EEB8163AF14B4C784F8361AE680FB5F +:103EE000016B34931E43AC42F9643FEE67C7310F58 +:103EF000EBF7DE24CF9D445F85D7CF7B64D033B80A +:103F00000FB0BA7E2437D6D801BF7904B70EAFDA26 +:103F1000BADB2471FC1615B7D27ED7751F63A86F64 +:103F20006AEDD2055DAB059DB5F23F0979BCCBA525 +:103F3000D6E0F81D1F582C0CF4CB2BAEE0EB65B18E +:103F4000C7E697508E821C40B8162F67A4A72DCEC7 +:103F500031507F7F1AE4FD17C4CB9A0F6D3E39169E +:103F6000E5EAE6B519284713BC23513C656239C818 +:103F7000B90707797F8CFD972FF79E3F88626BE624 +:103F8000B07CA47FD17725AB4B39BC0ED4A31250A3 +:103F90000F0FE3BB4D82BFB4F48908F8D313043E7E +:103FA0000332E137DAD9AA4A086733572A8A647597 +:103FB0008E846DAAE2D95627964F2A780DF3016BAD +:103FC0004116E48BFE3CCD817A5E4741BC1BE13D4E +:103FD0009DEE5D8F70A6C96D8B50CED9AF08A6FD42 +:103FE00002FA4BF7D8DCB2B337FF697C3700F8151B +:103FF000F135E0568B1FF955E3879F1B99D792192E +:10400000E2CBFB5DBC3C5DEC27E9CB3D6CBE2D9467 +:10401000B725703A41B901F1F3A673CAFD88DFFBF9 +:104020005D0A7DB73449767E022CE1B2807692D16A +:104030007B3DBA6065D972500E19D87788021FE4AB +:10404000C3F496EE4689ECA3A5A048D51586E0D129 +:10405000BE5F9A64A2FEA32F2884D70C8789E86FDD +:104060005F2BF00CF4473C8FEF6A2D8985F90E6EBB +:104070000A8E47BC5871AC641CA5EDA111509ED0AE +:104080004F19FF20943F555778C892807A7EEB04F1 +:10409000C4AFB3D1516C4536FFBBE2C179D21FD456 +:1040A00097373948EF61CA921CB4638E093AFF69A9 +:1040B000901A447A14BF6FA4F1BF7C98EB714D69DC +:1040C000D5E971F0DD890F802FA5BEE5A78F1DB260 +:1040D000A0BE9FB12EC3C4F2701E12E1970D06065A +:1040E00001789587FFE2E3F0BD370841E976D968AA +:1040F0005CFC0EED88792B9D26449FAB8919106ED0 +:10410000FBBA990641FC6409EAB3D6DE6070423E10 +:10411000AB91F71B39FE29175F5FBFFD462E457D2A +:10412000DA009D0DC27DC719BF59E6F622F14D4D4B +:1041300066C266D4173F167C6E6C9CA45A9DBDF572 +:10414000969AE632D25B22E58F267734BEFB2DF4B9 +:104150008BF3FA2DB3907EADF11FD845846FDFDF6E +:104160000D247FC03CA57D24F3916F92BD448FFB4D +:10417000095E4DCF518CCED54928C356B44DF4417C +:10418000E9BC757186C579D88F7B29F5F3B08D515F +:104190003FEB320EE5E03A59EB609213FB5B988EF1 +:1041A000EB90FDD9CC905F94876D0694E7CA7A15A1 +:1041B0004B991297584CF9C7200FED5F751909EE0E +:1041C0007DC88FA3D05EEF9248BF616A01EE77BBD6 +:1041D0005C5E63467F2E4F715C561745FA9E5DE12B +:1041E0007AB3BDEEC39D2B20FF94B0CF8B1FC99B2C +:1041F00049FCF28022A19EF065DC3BD4EECB514C11 +:10420000427D2E2EC3A0C36B18BFA432A06BC62B59 +:10421000B207D7A362E47CAF3C90B019BF9BD2DF5A +:104220009B9001F04D58192495F580E393474B9DE1 +:10423000BDE9D1D77E909EC1E7C7541FB5AFD5E485 +:10424000488B4472C46D60DE00D733ADB80E9E4B10 +:1042500063D4CF57D6987C94CB75169EFE4B54CC26 +:1042600033987E654DF3A37EE32BE670FA8EDB492F +:10427000FE30B66404E22D210ADA83FC7DF32CE8DB +:104280009BB19887F630CE0801477A29C827900B52 +:104290004B705CC0DBD88C382ADF1FCF5407EE9BF5 +:1042A000566F21E2BDAEAD2009F9677F4C6231EA5D +:1042B0008730C934DC073F167E92483C9AAC93465F +:1042C000E3776F0A3B12C777011CF175251E942F07 +:1042D000A08FD1BAEB9A61F23F037889BF7712952C +:1042E000EF97FC4F2CC079DC6873A3BC6E9AA126B3 +:1042F0004725609A68403EDEF3EDB27FBB0FBF7B7F +:10430000CBE8C6FD429A599A8CF6618AC76440B9D7 +:104310005052C1F923A54526399152CAF112EF65D1 +:104320007E0BE4E5A4594F94C3380CE49905ECC81E +:104330006281FF263BF73734CD07C687763F939CD3 +:104340004F94237F2F1270B8783F4D354E3FF201C6 +:10435000FA7D90BFBBEE629ADF87EA3B6F7308BFBE +:104360004F1B437BA96B2CDFD77AEA6767FB1FA43F +:10437000EF25EE179A63A1F9A3A4E6F529545FDCB3 +:1043800026B5239E3B15B15E07C37A85F24E3FF7F3 +:10439000FF30CB14B52D4C6FEF6482FE77F3763D82 +:1043A000E3550CA3FE3632F75A59C67681A001DBDD +:1043B00095329A1753BA62C2FD469DE83F037A359B +:1043C000C5A9C9E8174B6CB8B8DE979CC1FD198F19 +:1043D000F657EFCE08E3678DFFF7170E28463BA48C +:1043E000AF75F02EE3FBC50B199EFBF0FBC91677EA +:1043F000F963507458F8E9D8346ED730C5EBC579F5 +:10440000BC9F925380F38884439357FBC577B9A927 +:10441000CC82F63DAC611FEEFBC3F60CA37D659D1F +:1044200080175906FD07C3C49E983B60733CEEF3AA +:10443000BDC7F50C9F39BCEFF13664A88FD2BC45DF +:10444000FBBEF61F242BE995A6C05D388FAE1A9BE4 +:104450001BE9FD1E56C177CFDE640ECA4867A36D07 +:104460002DAECF63D1771C4155F4798B7733F63F6E +:10447000FBE66B56635E3AD4CFB914E8D059D656F2 +:1044800084F00EB378B7627DB5C59B9E08533B3B65 +:10449000C83B2416E5A5A79FD8873DC33D17859F38 +:1044A000C35322F1F17799BCBBB09FC3529BDD8D02 +:1044B000F688D246DF315B7FEAE7B858DF078DEA3E +:1044C000F8F300FFC1F5E9050D004F49CC07B7D659 +:1044D000E2BEFDF88002D28B045E0E8B79CD377878 +:1044E0001283B20EDEFD04AFA32C3D19F8F5AC51DA +:1044F000C06B13F02AEE81FF085E9269B80EEE934E +:10450000387F339E7FD91747FC6D36346CA6F5543F +:104510006671E37ADC14054B04F49BB7053C6057E5 +:1045200030D48FA19CF4E7ADCC3D0CD774AA99AFE1 +:1045300093D43592BFC115F29F95334F1AAA90C7F5 +:1045400032BCEFA21CFBB7E86F47E1D6EC29B1D330 +:10455000B86D1F44F1FD7B3C87FF52F4070E34A079 +:104560009F63A6F05BCD3C6B223B69BED09B66622D +:104570000AF0CD62AA11C7BF91798DB8FFDDCC7C5E +:1045800094CE617E4A6F6541AABF9DB551FE9DE8FC +:10459000FC417580FF198F0FC9427F5518BE4F210E +:1045A000DCC01F772670FEF86C00F90BFA5F16BFAF +:1045B000CE10FC01EBF33CF603EB73704146D83AA6 +:1045C00099DC5FD0ADAD2116F03723D155F02064D2 +:1045D000AFFA86D365EA270EC2CF4109245161881C +:1045E0003F4050D892010F570B12B676F3FDE96A9F +:1045F000B58AFCD547D515090900E714D946746971 +:1046000075CB64E76F3B0FFB1DB47B7D05A7D7EB34 +:104610006325DAE7AE4D5A3F195D894CB6D97D3036 +:10462000EE17AACC70DCE91BB8DD5F3AD018B2C730 +:10463000E17FD70ED6E7A7A972BB99F6B38082FCBB +:10464000372D4F6FCF4F67EBCEA39F7DFA25ECFA46 +:10465000C44C61D70F63C3C8CF76F976FDA04CAECA +:104660006FE9EC7A86DE4790533FB07279DA3AFE12 +:10467000F0B84E98F7E72D2EC2E673395CAFF464BC +:104680007AB2328114E78C6D0B90EE1FD7038687C8 +:1046900030F649BD85A9C0DB9FD63B287FB23E8955 +:1046A000D2D3F54E4A3BEA73A8FE5CBD9BF2CB32F7 +:1046B000D5E108C71A2BA78736FE32CDCF6AE57A37 +:1046C000C332EB3DC7CA008E6583B89FAC22D03899 +:1046D00015DD5D957B0347308572196C18B66C3D0E +:1046E000584600F7FC57BDAB519D59F866DB741472 +:1046F0002BA3DEFF2411F1527341625E583A494305 +:10470000D4F138EE67F563089E53F52AC173A6BE4F +:1047100094D29F667A2661BDDAD2BE3A09FABB7E90 +:1047200047BB920AE9145522BD79A2CAFC7EA0C7F4 +:104730000623DF2736245BDCB88E270D9FF9E4DDE6 +:104740000CE5B4F73AFCFEC6F87953FA41F9F431B6 +:10475000650AB6BB19F814F31A1F5F7AFD727CD490 +:1047600008DE387B40223C9D3D10477879B75926BA +:1047700078BA8F4591FED0DDBCBF8AF21D516E30F4 +:10478000CA7AB59FF552E600B423CE00BD18CC7BA3 +:10479000E94BB903D03E79798714403BBA68575C3E +:1047A0001AF2EF99F8C0F11FD1398389FCC7C0A76D +:1047B0009F6E44B93730C98DEBED9C90CFA0C145B9 +:1047C000E33EBED8A4E98FDE5CCC9F89E2FB378E46 +:1047D000E3047CAE1170EC4F4BA1FD3947520C68DD +:1047E00007EE7FF17695EB757CBC3D1B79FFDB76A0 +:1047F0003ED1BD8FC6F513BF3DBFEBC98C1F43EE45 +:10480000F9DD0F44DDCA68DF6563406EED5F1FAD03 +:1048100022BCFB8DEEE37528A79FB4913FE7B99FBB +:10482000DEFBF15E4C1FAE29BC17D2D599F1D44FF7 +:10483000F9CFE64C4D8676DBF6B0025C2EB94083AC +:104840005480236FC3F943C9305EBE3FAE2405CA0E +:10485000DDDB0B0EA740FE972F4B41F4C317063646 +:104860003F2321EB7DF36C0AEA9FEB329D3A3D3EFC +:104870007750E95199E6A1DFE7F39ACE17637F3BC2 +:1048800053024BE3503E4A81D32B802E6B06FDB181 +:1048900090EC29E14779A965D6BB7C5EBE64D44F14 +:1048A0007D6526F277E3F48D903FDB9C49FAC41EC8 +:1048B000838FF61BDF5C8B1BED9FB31EDF13C85786 +:1048C00035D01EF5D49A025FCC9568D77D34D80DCB +:1048D0001CC4063D757529E26771F3635353A0DD6F +:1048E000D9F1DC8F5DF1D2E753C9AE06EB13ED9938 +:1048F000B3CD0D89B7C0770FE5158FC27DD52307DE +:10490000681C56CBC7795CEC63AC2D9FCE418835D3 +:10491000A1DD43508CE5F12D71075359885EB52D0B +:104920002B5CA8875EE1B5B8D14FBDC1E54B46BF52 +:1049300098B62FC2FEB60BD747B249F4EB98457A2A +:10494000FDE5EE6B9ABF4CEBEF7113F7DF697EB5B7 +:104950004D26BE0F6F0539827CA6EDC330EE81CCAB +:10496000FE617E3910DA050067EAE3666EBF5CE639 +:10497000F89ADE542BEC9C62B19FCEEED7F04A1B26 +:10498000CCF71D8BF7F738BFF94CE5FE6EC5ED444B +:1049900039BBD7A2BE9149FA53571ACE01F6CBB70D +:1049A000119EC532E8539961FA94E5F2F6CB1316DD +:1049B000F57DFCFE72DB47CAD7655F185801CAD582 +:1049C000C7CC7E94170DC2DE6B10F65D83BDC88226 +:1049D000F281BD6AA83E02FBE704DE434FBFCBEC89 +:1049E00085243F1A18BB28DE0EC0FAF7829C09C244 +:1049F000BEE01D828D5A1BD07FA3C2FFD9817F26C6 +:104A00005E0003306CDF8BFC1EE8F537C4D724163C +:104A1000AD6BA7B238F2E3325BFC3F35EFF1826E4B +:104A20001AFCE3857D3ABEFB5834CAC7655F149211 +:104A30009CEC6B5EAF8879FD16E705A93FC7631E46 +:104A40000CE34CF89B43C1753D519199376C9F869F +:104A500079D8B15EFD264A378F1EBEBFCC79DC23E4 +:104A6000311FFAADD97913F9515A849FA065511EAF +:104A7000F95BF6A07D8B76D64C13E9AB2DF6256459 +:104A8000B7B6BCD59FE4C17ECD0F5326F37AABF801 +:104A9000BEBF83ECCB1433AF67B7F6F44FFB4BCB01 +:104AA0009C14EA7FBF14CCFD15F63FC3D2879D2C22 +:104AB000933DD9B5C24CF66553C192378663FD8AE2 +:104AC0005C1A5FB3835364FFDA0C943FF532EFC78F +:104AD0007EE8563C7F6B3A6F426722D8BDDC0E04FD +:104AE0007B979FA72B3E3BC6278C4B673D79B493A2 +:104AF00042F10B500F78FC40D0EB98C2EDC96368CF +:104B0000B78E08F9F78FF5C469F0EFBDD3A315E4AC +:104B1000F7C8F21EFE13E59A5DFAA191EBA14D7163 +:104B20008DFDF17CCC33D87BF560E0CF39F3B75AFB +:104B3000BD61FE936F65CF35587EA27CEBF3E82F05 +:104B400065E5DC5EFB50E0D3F735B797C79BDAAE7F +:104B5000BB09F030FEDF0D92CFD99BDE3D711EF711 +:104B600019B8BDAE003DA1FDD36FF6A37DB227CE2F +:104B7000C36E12F5C01F581F18CAFD01B2A4A23D92 +:104B8000DAF59299FC05A5788E85FAC172C366F4B0 +:104B90005304EB3D4F4CCE82F6C21FE86BB113DDE0 +:104BA0009F1678BB53C8B5A7C539B12F6014767E60 +:104BB00030B516C76919EA467F6B9009BEDA1B2D1E +:104BC000EA9DB1986FF8DD48867652A726572411E2 +:104BD000DF22E25F9E16F8FD1EF130F7E03AEA337D +:104BE0001EA6074FB00F40FEE9BA7EDCEF0178E267 +:104BF0007E137B4F3DCEE7E96A97C0D3E607B2F15B +:104C0000FB578C42DFE97A6B347EBF97E359F36739 +:104C1000019EB237201EF6DA49CFD0F0A4F9B76072 +:104C20003EF97B110FCD66AAEF89BBB9CFF00CDA44 +:104C3000135E13F7771D77B4D9C3CFB98E7B3EB51A +:104C4000A3BCF94B9D1C34FD83B899DB443CCE6D6D +:104C5000220EE7B6E51FDF8672FAB68A6FEEA0F283 +:104C60006A7D5CC14B83D527900F7BF073CAA0F996 +:104C70008D787CC2C9815ABC105FB7A7A2047EB8E8 +:104C8000BF665FB38BF399E6377AC2CABF67FE6827 +:104C90005C8F15A07C27C3FEBA4FE174DCE7D7C751 +:104CA00049AD4AF0FE12C7DF27FC3B4CF1737D5142 +:104CB00081FD13F05699E50D60BDA657687EC90EBB +:104CC00063EB11038EB3FCF2F6B5AAA896C512AC3D +:104CD000B3D32D5BF7600A78267AB317B99CEB70D3 +:104CE000046310DF555034311ECF5761CDC5F33CFE +:104CF000EA9191F122F8A724F27ADCBFAB02B26A02 +:104D00008DC1BC29D40EE969E07CC47671FF4025D1 +:104D10000B24AE90C99EB28C01BC9CDBFBEB1894BB +:104D20000B95369B6539EA3911F11B95CD6B5A33DA +:104D3000F37B97F78627421EEC96051D833128F7F3 +:104D4000427231487EB5B0B8AE18A493D172DD136B +:104D5000E8E7EC1074EA88A053470F7D823ABF5C05 +:104D600047E0441AEEB3E734FBDBCDCF15AB7EC58D +:104D7000CF0957097958D52F5084F84D91F5E76838 +:104D80005A5A6561CAF8B0F3C3AA1C6641FC6BFEAF +:104D9000B32A0F53AE8C0FABF7330BE6F718609DB9 +:104DA000DB885E8AA01BF503ED896E95166699086F +:104DB000F94AEC0F53833F0DE9A5C1D50B8E08BC12 +:104DC000FE7D30F7CFAD12FBA8CF6E12F2CB9D84E3 +:104DD000781BB2C1A46B7FCE6EBA53057886FAF504 +:104DE000E55AFFD62C6E1FE784D3D3D5375E6245D4 +:104DF000FB175EE8692FF3781950AF35FE73727BAD +:104E0000C788F07D60D2FC5077A7823E56853C90E3 +:104E100011C2D39E026F6A3CA4E70C5C3EEE89830C +:104E20007C1EEA977C7C2DDF83F7087EBEFF83051E +:104E3000A9180F323E8BE325521F5C612F1A80F5B3 +:104E40002D62BCD3F5C1473F3186E6F369BDAA9612 +:104E50006785F20B361458907F166E2AB0CC0DF38E +:104E60004B346C3F1C83781C6633901FE4F4F6913E +:104E7000140776DA6660D112D68FB4607D87EDD0E4 +:104E80001F9C50BE60535C21DA25DAF70B374C517A +:104E9000CBC3F09FBB5D4F8FE1017D7EC45E7D7E05 +:104EA0002A06F98CFAFEDF1504F5F99147F579D653 +:104EB000A58F2B7A798C67D6F5788EB349766351B6 +:104EC00085CDE033C37A576C7C1DB31D329D2755C9 +:104ED0003878FCD0C93D6B8A50BFAEFAA8FC08DA1E +:104EE000530BDFE3F8898C77AB3876E46BB4A3819E +:104EF000EE12C5476D9368BF898C83D3FC3BBDE53B +:104F0000C90ACD2F9D13CE6791FC7046C4FB54D7C0 +:104F1000BDF128CA0F0DFF6303EB4DB85F2D9AA6B4 +:104F20009F7F95A2B0E51795A73EAE87DB5427E299 +:104F3000A76C0CAF6B6FB8F95AE4ABF69B4B4FA163 +:104F40001FE0CABA1276622454AC7B672AE2A7EC4F +:104F50002189A19C29FBF5905729AE54D8530BC544 +:104F6000B995638C736F1BB49BEFE77E9FB911F10A +:104F70006BE5EB22E088885B5BB8F7E0D7386E64BE +:104F8000FC9A16E754B9E53BB33EAE8DDBEB57B662 +:104F90006C9671FEF305BC9A7EC07C1319CEEF4A65 +:104FA000FE09FB04FF198BF157DE7559A3427AC243 +:104FB000954DFCFB1AC6E3ABB4B8A70566D0DF413C +:104FC0008E1DB59B883F3EDF104B7EC8CFB11FCCF6 +:104FD0006F92484FAFE9C7F335CF727F648DD89F8A +:104FE0006B9EE3FEE405A0DFC41672BE51C3E0AFC2 +:104FF00016F3423E092F678DDCEED5E2B0303E4B12 +:105000000D3BBFAF86791D8BE77159E1DF85C76521 +:10501000859787F9BDC90ED7FC024F1BFDCF6F03E3 +:1050200038E59F44B951DF050D3A0AF913E411B789 +:105030005B6670F976A9F3B7A6023EFFA6455964F0 +:1050400097A4A0CCC47DF8512B7D5F0EEAB415CF98 +:10505000092AA3081F4661777C884326A33BDA40D0 +:10506000FA4FD31C13F9CD9A5C5CDF697ACC457694 +:105070004ACF39DB7AB3EE9CED969EF86A35DB4277 +:10508000F55677B83E794B7FA7A6778BFDD7DF1F04 +:10509000F711CDFEB845C455DF22E2A935FCDCD2BC +:1050A000134FEDEF1FBEFF5EAA5CB34B9E4CF21E8A +:1050B00043FED2EA9BE2FC568C87641597774EB488 +:1050C00055C00FF321FDEF1389C7619647791EBCC8 +:1050D0000AF1F8F38C0CC4E349B15F1515ABD98E16 +:1050E000B0F96BF466AA9A8DF6E927EBAD858807CF +:1050F0002D7EEB7801DF6FA2AFE07126E7B19FFE56 +:10510000981A746952148F8FFA640A3F6FB05FE186 +:1051100031A1FE043622C521959B3CBF9F10060F8E +:105120008C6B41FCFD87E84FC327D05F453DA5FC54 +:105130006766A23F53BC9998BFED588E1BE1FA44B5 +:10514000EC7F1A3F30C6EDE45BDEEE5FF820F1E560 +:105150000AED7CEF127C29737D6C9191F804F89232 +:10516000ECA4A639D9C497713DF6AEE0CF47ECBCAC +:105170009F29C5C9E877C0B3A07FC7F6537ACE7719 +:10518000851E077CA3D3EB38FD23F9AA871F22F8DD +:10519000EA72F9E732F82A33BB7FDF7C05DF8FF252 +:1051A000D8FBE6AB9A9777EEF1E1F9C2AF1E8B61BF +:1051B000D0EE94D298E846BB6DEBAA1815D2938A2C +:1051C0002F06FB3BE5974B2F16C732375B12FE1BB2 +:1051D000D526859DF39E7EE1A1E91457B1D5E8401F +:1051E000D157BBDD1C34939F7311C55342BE9DE75D +:1051F000D7D0394AEDDE88F8CAE71E4B7452DCACD2 +:105200002F15E36D404FA6F88BC55B8C149FB9F842 +:105210003DD98D6C50CBBA56237C91DF231C17806F +:105220004F6B03729929B6773D7004EDBBB5CD0F76 +:105230009D47BF706DF3359FE1FE1519A75921CE2B +:10524000BB22CF7566648B739DD16C34EA83801F5B +:105250007710F910E0CAE2E427BE6D78FEB95DFB75 +:1052600000DE531F0E2840D74DC7963762A4BCD02E +:10527000398F76FED511C88CF55E04BF5A7A4E9CE4 +:105280000784E8C7E5B5732F003880615C34A5D585 +:10529000C660CC3818AF7AB391E464F5CE67B76DC9 +:1052A00044BEFEC0ECC6B8B6AA9DAFFDF14AB40F2D +:1052B000761B13A6F1E9D8A4C410DD6A9DDC1FABF0 +:1052C000D1A9F2D7AF999CC37939EA0D1ABDAA7654 +:1052D0001F34B1E1BDF15A1238686AB35D846E8142 +:1052E000F6A9E4877CFE2B13AEC753072436C0D53E +:1052F000FBFB8AAD6FC4603B8D6E3D74EC45BFE037 +:10530000F47D57503B07CA834BD1B1209B11BE6A35 +:105310005EB6338C0FABF8D0EC9F86F4FDE932E239 +:10532000FBCF94259CEF9F5C95887A6D85D197E89B +:10533000A09497573C758FE0473599DF63F125E3DB +:10534000BCE66FBA91E6B58079890F2B9EE4F141F6 +:105350005F801DB7FB22F4FC40AC97CF9E0162C278 +:10536000FC3E13F1C7BE7F95FDFC1EC35DA49FDC10 +:1053700023E64A117990FF42E8ABBBB20D9ABFD445 +:10538000126E8FD76E59D38A74393D481D807E2F97 +:1053900098BF4FE04BC2783FF99D2903385DF83D37 +:1053A00006FA0EF486122CC7F6AD46BACF10F61DDB +:1053B000E14D1BFF6E313EC01D857E81CF12B9FDD0 +:1053C000027FAD08C762897FB37879C53427E0DFF3 +:1053D0003284EF433DEB7ECB037C9D8B75FFB7F7AB +:1053E000B83C59EC9F514AF2A0D5181C80EDFC073F +:1053F0006F90481E44C6970B3ED86214EB595F0F5E +:10540000702952383E0F707BBF569CD32E680A8B92 +:1054100067477C2D2F157C620A95BB42EB513BA759 +:105420005D28D67F241D23E5C1BB11F240FB9E6D94 +:10543000BAF8396268FDFB889ED5A07F3870DD7EA2 +:1054400060A67DA97ABD4C719027D61D4E1C0B7CA1 +:105450007E26A0AD57BD9CED59AFCB799C7AC58B0C +:105460005B25E4D3C8F57AA6C22F5D74BD42F94529 +:10547000D76B05FBAF95B3820E21BCEBD7E7C23EDD +:10548000E4ECB71178FD82E5C58EC34A47593AF975 +:10549000E523F0ABE135525E3E9EEDE4F7C122E438 +:1054A00025C3909B307C6A78D4F895312F8DD3C377 +:1054B000C71ABF6AFB570FBF46CE5B8FCFC8FA83B0 +:1054C000421E797EC3E357AB5B24714FC17704EF73 +:1054D000ADD4E2F90BB56E3C929A109EF747E40307 +:1054E00011EDD588BC27A2BD3722BF44D7BE7AEFC5 +:1054F00061138F630DEADA99EBAE233BAAB71EE185 +:10550000E7EBBCF9BCC987FC31B08BE2698DF7339E +:105510009F9DFCB5DC0FD6E9EC8A417D659595EB46 +:10552000899D0E918FE3F9AEFEA6D5280FB5F22E18 +:105530002BF72B777ABA62E2C2FC12ED2D720CDEE9 +:105540005768F3737F586F781A88CE6DC25F3645FF +:10555000B6A5D55D81F1CD9974EFAB7BA551E4B3D0 +:105560000A91DE9A1ED919C5FD289D51DC8FF2578C +:10557000E6F9E338A4874F55302E651E271DABF89A +:105580005D430CDAFFF35A785C4AF93A3D5D17D86F +:10559000B6D03DC52FD8724A1734E9E34A2AC53A36 +:1055A000A8D81451DE721DAD8BCA8875E115FEFDB9 +:1055B000C875513604D605065614B002E18FA2F321 +:1055C000B3A5424E4F91F37E301BF0DF79546666EF +:1055D000C877B7C86C35CE7B8744E78878B102D7E7 +:1055E0009B661F6AF8EBC07533A46F3DA4E3A58FDB +:1055F0008AF09CBF7ACF9FF37F0169C79E0FB2F7F5 +:1056000063FEE53FA5FD99F56E5F72E0EB3B501E32 +:10561000771E3033E4EFCE03AFA7FD18F3FBCCE4E5 +:105620000FE8BCDFCCCF2D0ED8C9CFD23988EBFD27 +:105630000DAF7C95DF46FBCB4AA2CFBA21FCFE65BD +:1056400077CB7F1CC77383EE169815CAF703D1B4C6 +:105650007E6AF759C94EEC7CE5ABA2F0F89AFFECF4 +:105660007CB4B8894E3B9BFD22F26D1CF7CBD7EE84 +:105670001FFB2CC609D4341F34CD83FA92DFFE3DC4 +:105680001FE568E78B5C2F3A676C7B0A7DB18F0F53 +:10569000F9CDA3C6B1E89784CE521873E77C3DCB11 +:1056A000977731BC703C74021E705E80970A94FF3D +:1056B0007DE163D7FF587C9CBF83CBB3D10CE30A59 +:1056C000427891545E6EA7785B983F2F3FF0553E2D +:1056D000CA9B4BCDF74D9CEFA8FF3DF33DFD3F9698 +:1056E000BE9CDF970E71F278D108BEEFCDD72FFFA9 +:1056F00090F2BBEC6E82F732D77B54CEFF2E7AE766 +:10570000FC8F9DEFA5E8FD3B416FBB03FDA09DAF66 +:10571000FC3D8D7D8F795FFDFFE9BC35BDBD5876C1 +:105720001F2D80F66FB0C07B6E17691FA477348879 +:10573000F383D7935CCFF07BC0DC4E2A1176D2D2B4 +:105740001C6E073630039DF79558AA48EF2C19F8C0 +:10575000F0791EA76620785EB74CD8F6207DAFB7EB +:105760000B270F9483784E7178058C0FED0EDB0DAF +:105770008E065EDE8EE553DD5CEF9F3AF03A8A7767 +:105780002DB1BC351BFDC6936D7ABBE9BA08FBE7AA +:105790001AA7BEBE94BD98807EB9D23C23030B826B +:1057A0004DC5F661F6E1CC1CFEBEC035AC71A5C39B +:1057B000F64FE185EC5845E0E5E908BCF4C683C046 +:1057C00023E37A4E24DE14DB83AD9432B063F9BC5C +:1057D000C8FED5EC580D7F917863C22E5668C8106C +:1057E0007E9581FC5C39AC3F9A770F3E05BEBF2F9A +:1057F0005E23E973293CDFD3079E072A050AAEA77B +:1058000009423F9FACC4F1FCC056D943F8F3D377AB +:10581000257F732BA89F4FB2C5291497E51C1487C9 +:105820007615AA8EDFA53296AA309F19CF011C6D7E +:10583000AFE2BA2B7BD4EC447C0F54C47D5885FB7B +:10584000C761B5FAA20AA9BD6A8AC7760B19DEDC60 +:105850002A4B656E89B767B1F114B6C8648CDF83D3 +:1058600014BF2BC3BB29D8EE2185EE59D31FE07B93 +:1058700030A619D4AF6A88E7DFC714D2F73E03FF1A +:105880005EC5FBEB46E6489300D8F412C70F8FA124 +:105890005DB1CA4AE70CD38AB9FDA0AD7BEB507E5F +:1058A0002EAAA54F0EE5EB5736B89350CF9DBE728A +:1058B00028D9277294A7E6253CDFDB154DE77265F2 +:1058C000AB6FBF7E14C2B7AB9F1BD9E5F4F4DD14F8 +:1058D0002F3F77E59C7BDE8772EF762B951F1AEAC8 +:1058E0007D2707F767C979C74B5030F7C6C3268CA9 +:1058F0003F9E1ED87D0EFD7CD36F88A6F8CDE92C87 +:10590000F0078CF36437F0F8A9F65D7613E2E2FA5B +:10591000C07905EDADEBC74B28D658BBD5917617AE +:10592000C05326CE7F3F12FC2F4731EF8B36846B5E +:10593000507606945F8FF7F12E62EFC40C15ED8B55 +:10594000A54D78BE952EEEE568EDB11FEC3741E030 +:10595000E3640EF71F69F9F412DEBE7CADB93D13A6 +:10596000ED99B5C6E0104897E71677E03CA765B01B +:10597000A9184FD375AF4CEF99B45BD911F2A7AF0B +:105980007739D1AEF33211C7B1CE45FEABF6496ED1 +:1059900013BE6FD2BEDEE5C0FB20E5364EF7728F38 +:1059A00085E8DE3E2910C4F387AE2724A2DF710705 +:1059B000AF3F6ECB21BF47BA7C70309D5B14F07354 +:1059C0008BEB8779D95080A3ACB1EC4D5CE7EC1B35 +:1059D000987711C6E932625E3906D609F2B3E28ED3 +:1059E000C1FDE65BD963C4F6CCE2FE29C6076DFCB7 +:1059F000A9CCD03F982EF3B8D372C10FD3300E1577 +:105A0000F8EC2963DB22ECE7D51C27E1635ABCA341 +:105A1000C8C6F98BE1F8ED464736CEAF7D95D58007 +:105A2000E778D3EEE7FC06FC6F51E0FB0714168520 +:105A3000E7F9ED39BCDFDB56289ECD901F68618AFF +:105A40003D1EE95D40F6F4BE5CEFC91CA83F791F1E +:105A5000BB12EDCC79EBD6D3B989462FA6B44EEE66 +:105A600007E39CDCEA2AC4781E8DBEFB728B070D0F +:105A70000DA7D30D12D107E66341F897E7CECDC449 +:105A80007A283F88F49B561C1CBC340FEDBF6AA6D5 +:105A9000E27E9AC4DCB82F77338EE7EEB50AE1597F +:105AA0005BEFDABAD6D633C04DEB575B8F91EB780C +:105AB0005B3DBFFBB8BDDE42E90BF50EA66431B617 +:105AC000A33E89F2BBEA9D9406EA73A8FCC57A3727 +:105AD000E59BEBC7507E4FBD4AF9BDF5A594EEABF3 +:105AE000F750F91D803E8C1381F149DE687206E1A2 +:105AF000331486E480463FE3DA490694D31AFDC0A6 +:105B0000DEA57731BA9993DEC5E84B2FF8EF821FF7 +:105B1000E4982FB6308457CC5BC3E424E6EDF1A1C2 +:105B2000F961C8E1F8F83039A7F0F707501E2616DA +:105B300086E68F2EC20B8521BAE0771323E8867C98 +:105B4000A8E105BE0F261686E3A5E3E1D148F70AD2 +:105B5000839BFC1FAC6DE7CB94B7D1F96E9A89EDAE +:105B6000A5F7467E6263E83F453969C6FB441512D6 +:105B700053C2FC0DB72FB132256CFFBAB32E4E972E +:105B80004FF8C9B1D7D09D7657A2F79EA100C7F1B3 +:105B90007BCFFEF539E8FFE9FB3E1DEE257EECD814 +:105BA000FA388EBB3CCA4DFE08681B7F05F963E8D6 +:105BB0005C0DFFF0DEE55CB1AFCFF545B7A35FED5F +:105BC0002993E38FCFA13F77B5EC40393A7725DFB2 +:105BD000973F443A02DEFF22E8982EFC37ACF17181 +:105BE0008A532BD3FCE76BA7A83DFE19405EE3D098 +:105BF0000C7ECF5EF8798EFF28F5A71857F8F42AA7 +:105C0000D921C27A544B516F38B47123FBFB3899B8 +:105C100091FF04B47F5607F4F8F83E5310EF227F4B +:105C20002C59E83D04C999C06E8372EFDAD78F61B1 +:105C30003F52DD518A67F05A6C74BF8FF98C1DE1B9 +:105C4000FD497547A81D6B1B1887FE1DDA9FAFC263 +:105C50007359D584F7C9513620FFCCCD3944EF486C +:105C6000B146C981E73AE5A2BC5CBBC7AEB8936E4A +:105C7000003DF5B9A132C9B5D77314FE1ECF502629 +:105C8000CE0F1A69FFD5FC5AE5EB247A67A0BCB1A8 +:105C9000C0B4206C9F992BCAE7E1BB0E61E52F0FC2 +:105CA000E5EF6CA5AC2D988DEB3045BCFB90925385 +:105CB00048EF47A5D8A62AA80F68ED770F55041C12 +:105CC0007CFC246412C83F98C3F5C1B9B69BB6707A +:105CD0007DD069427FAB36DEDC9CC2D518873C772D +:105CE0001DBEC6007AA191BFA3D6602FDD4AF1CEBA +:105CF00011FD568B7D0FE667C273D39318C94EE72B +:105D0000C7DCCF57B9EB97741E57F96733EDE795AA +:105D100023F8BECBF2FC45B3F8F98ECEBF3EF9971F +:105D20001FC5D0F948B34CFE5F48B9DF57F313BB2A +:105D300079BC62A47FF7D55D7F8EB9A85FBD999FBE +:105D4000135ECAAFAEDD73ABFD0DF70B6B78AC9590 +:105D50002ED0B954ED2BAB122F768F0CCF75900F40 +:105D600023FDEB97EB878FF4339E1B2AFC8C11E706 +:105D70001A7DC957CDFFAEE52BEAF2333F1989F7FB +:105D8000D9BC5F23C92BEB8A32314E6971DD444A9D +:105D900023EFB755D4E552FBCABA91543F69283F67 +:105DA0004702059CEE496AFECD6E7F562CFB0770BC +:105DB000D46E0060E1FB6EC5198BE777DAFDE5CEA6 +:105DC0001D32D9139D3B863F83EB7351CBA3260332 +:105DD000FAEF86713DEA6CC4B9C1E21D27E87CAFD9 +:105DE00086B5129D807ECC127E8E84F187FDFA8668 +:105DF000AFEA97F625C8C78B0292BA15F7274B80F2 +:105E0000FC21DD3B6E37FAC2E89A3E4CD1DD57D219 +:105E1000E04F18E6A4F96BE5082FC253650E9CFB12 +:105E20001057C4AFA2E9FD12A0EF1FF0DCF7CCA61B +:105E30009114EFBD28B07B318F5F8B76A09FE57406 +:105E400044BC65EE30BE6E7287713DF08C38373BD6 +:105E5000B34B26798CF0E27A3E2DE9EFF117083842 +:105E60000B04BE8E0879A2B55F14584FFAE1B9E66B +:105E7000EBB270FD77EE7D376630948F13DF7536A9 +:105E800047D3FB7A9DCDBF98BA1FF8FB6C605202D6 +:105E9000AE43ADFFD261FCBD87B32DFC7C90F97998 +:105EA000DC530DE27964389CFDE8DD05ED3B2DEE19 +:105EB000EB4CF3AF630C79213AD65A7C6BF1893DF8 +:105EC000EDBD0C8BD1EB43FF8271EFA420EA34B41B +:105ED000CEA1FFB5393E0FCA71AD9DC9A2D266AB46 +:105EE000BD07C6B47B7EE27E0AEC67F65500C7D2DA +:105EF000E151E45FBF6384F3E65B511EBF61247A26 +:105F00002C1DCA82E8CFF8BCCEBE19E9BCD4E5A6E8 +:105F100073D93B460A7993D4360AE343AAD74A4C4D +:105F2000C578BAEDD3F8FD172103DA5DEEB7D7A037 +:105F30001EFA16D7BBABFD32F38E2439928DF71FB4 +:105F4000D8986036C69FA4009FA880A25A41C7E394 +:105F5000261EF7599DC1E3F1D345BC4A753C8FDF3E +:105F6000EFD0E2FB6706B3314EA6FAC5648A93E927 +:105F7000D0E2F5A11CE1AC2EE471FB1A7EAB2B0F35 +:105F800065233F57CF753BB1BEDDE53847F1482F5C +:105F9000D9E93D21C3CB7611DF66A5387A147CA8F8 +:105FA000E7276C4BA67B710DC3B8DDB131F40EA7AA +:105FB0000BDFE1DCB8DC1683FB768278DF6291A927 +:105FC00091E0D4DA69796D5E98C77975087E5E14C0 +:105FD00025F202FE45318D0477BB91F17B15CFF39D +:105FE0007B2EA7935BF750FCEAF343E91DC6769737 +:105FF0007FC15EAAB7D23B888B7C12C9F5CA17CC89 +:10600000419CD7A9E7B91FBEB2BE8EDEC9AC84657C +:106010008FF7D9202DC57B69A78C8D6938EEA9FE35 +:1060200090DA50FF01FD6904DEDFD89046EB7B8BF0 +:106030005942B95D09AC85FA5F376BBC63232F47C2 +:10604000CB9D556E31D3FD002F94E3BD4A067A11E6 +:10605000F28D866FA8D7C53BB6BBF4EF2D3C3B8CC9 +:10606000CBC56705DD9F1BE6E0F13CD1819F67D082 +:10607000FCF83A01FA88FB00819C5F2460FC47969B +:1060800084F2A132606D47FDA3728791DE19D5F8C5 +:10609000641108323C4F5EC4B89E29FD647B369E75 +:1060A0004B27BC602D34933DC4E1A8FCD18F395EF1 +:1060B0005EB68BFBA1F446113BB52D95E2CEA761F0 +:1060C000AC19F1C770C2FF1479533EAD872DD106CC +:1060D000ECA772CD6803C597C8DC0E83549528FEE3 +:1060E000DE4272B45AC8D19A35E362C7E1BA7A5B2C +:1060F00066A8E754CEAA7813C7FD5C81F57411F940 +:106100001F89B76E2177AA619DE0BDE21A717FAA4F +:106110006A1B7F5FB26A35F733B217F87BA2CBAC4C +:10612000C1181C6FD956D98D74AA3205B2FBC33879 +:106130001F097909EDBDF45E96E86F9935B000FB53 +:106140005BB6D34AF2FCA36109345E47E0D144D484 +:106150007B7BB7E77087DA3D1B131EF7A3B5EB997E +:106160004F80FB973E67AD3FFC337CF2B71D5682F4 +:106170000BE849F7D222E77BC608F000FC67765AA5 +:10618000E97DC2CF400EFAF0DE749CFA08C545BC2A +:1061900023D3BB3C0817EE470BFDFAEF6BFAB9634C +:1061A00031CEB2E6ED1205BFFF58C863A0C30F0899 +:1061B0004F6F1BE93E6A24DE5F13ED7AD6DDCE68B1 +:1061C000E2BB33299C0FCEEC1A42FB4A7B9CB8778A +:1061D0006C0CA4615CF4999D430AF8BB3449A48F0C +:1061E000563A38DDCFC405D21C61F51ADFE145A669 +:1061F00024E40FFC2613F504AE975559D651FC0B39 +:10620000C6491715521A345F24CE19F892ECF7D10B +:10621000B942AFC0F112459C3EC9AD8009E5B25705 +:10622000E891D53B22E3A479FD805C498BC37126BC +:1062300068F1D91817EE93288EA66AE55D8B904F0A +:10624000AB96ACBF15F95C83BF4A61A5280FDA2570 +:1062500099E068B7B23B67A23C0C1F2783A78EC4A6 +:10626000D03C5D62BCAC5C27C15D8D3B1EF453BD70 +:10627000525A47FDBB343F029F8FF61DA0C184FBDD +:1062800044FB2451DFC77C35F822E7ABD1776C2E75 +:1062900097DFED2EE723E3F9BE44FE9BEE6F46C683 +:1062A000C6FF037B1B2DD99E386558EB53319603EF +:1062B000FA89CEE5FECC2A800FE1CCDEA48F53CF45 +:1062C000D9A2CF0FDBA1CFE735EBF3F92DFABCFB59 +:1062D000D5887A1C7714B7FFF1BE3BDAFF98A2FD90 +:1062E000EF3473FB1FF368FF638AF63F96A3FD8FBD +:1062F00079B4FF318FF63FE6357CA31F00F3E80742 +:10630000C0FA1FE57279BC0FDF7B95691FA373F696 +:1063100071B281AF8B39265DBCF2BE8A81DAFD375E +:1063200095DFEFB289FB5DFC1E56583C29BFCF2597 +:106330008B776A23EE732D30B4AE4E76F5BEC7B5BB +:106340002AC1BB307714E733EC675F863F7729EDCE +:10635000EF561BFA0BDB567DB61ACDA35B12BCD5EC +:10636000D8AED3D8B58DDF870E927C695BE17CFB1C +:106370002A4D0F81FECB00ABC8BFAC229EF4A64BCA +:10638000BE477BC97768F5FCA1E9714F1BBB9251F1 +:106390004E9E78DEB20EE13C6115F79B665B22E211 +:1063A0001CB89DB4F46189DECD7E30379E9F9B1E64 +:1063B00005ACFC03BE9C776124E9D73DF975928159 +:1063C000EE077855DA7F343D2C4D023D0CE51ECCAE +:1063D0001FF7E7211B0C3AF887FAA3747C96BB3DA4 +:1063E0003EE2BE4A8AAEFD88BD1911F75586E9EF37 +:1063F00043DCB0E220EECBB3D68DD4B52BF78C8B3B +:10640000C09B8053E8A3E5420F5C769F85F868D96E +:10641000FB32E92F155809F2B002FB023A566C1113 +:10642000F1D675FA7DB642613E7CD76B9ED87F9ED1 +:10643000C2EF92E9DE8B1A07DF9F2D68DC86EFAC96 +:106440002EFADDBB450EBCC7274D1A80CE89D5D9A3 +:10645000DE66E49B34A34AF1BED5BBB3E2F0BDB522 +:106460008EA3AF511C2719A363B1DE1185F4DCDCC8 +:10647000C8F57AF493C9F1217A6F6EEC1735D81606 +:106480009A57581C0BE9C19F631C0BB2DD24C967E6 +:106490001A11827FA9D82FB475F689D0FBD94ADEAC +:1064A000CFDDA2BEBAF0F5A7E281741D86435FAED0 +:1064B000C17DA920901D44FD6CE3E6C45B001F8FE5 +:1064C0009ABD6FE13C96BE551283F1765FEC30D2F7 +:1064D000FBAF7F6D7AF6298C8F5ED3F8AC09FD0097 +:1064E000958ADF44F1A0CF6F36617CF4D5DB37535A +:1064F000F982ED6564272E644BC84E3CA9BDBF21CF +:10650000D64945B1B4C9017017E671395A11C5F5BC +:10651000DD29F2F8D71260BCCFB74B141F7C83671C +:10652000C694FEA89F04E2E8FDA4CF84DC8DE4FBC2 +:10653000EE3765EECFBD81D3B9AF779D665D701143 +:106540009FDF702197ECA71B8343B9BD9AA7B7576C +:106550002B4CCEB751AEB3DF039FB3303F82DB4845 +:106560007A710DC82BBC2FE9192FEBF8B07672B4F5 +:106570008E4F67B330FE87A16FC2A097B0FC0DD3DA +:106580003275ED6FBE213782AF0B43F5240FAED4C9 +:10659000DDBBACC112BAAF52DCAB9CDFDFBC56F73F +:1065A0007D0D9BA9BBE7B7688BC4ED94E6383A7FB5 +:1065B000AC10EFDBCDF6F2F2C57B79399BCD74EBF5 +:1065C0002BBDC4FD27BEEF19C91ED3CE2166E3FF44 +:1065D0009FD91BEF8C45F5BC2F80EF45A0DF40F71E +:1065E000AE8038C744B849CF15FEA49A1CEE4FAA16 +:1065F000F1B59AF03D0EC0BBD20FE3381B25A207C0 +:10660000B4B7F42BE4F9E514A7AD8F23C3FE301E15 +:1066100073F151B90CD749643DF01DD777F7F1F804 +:10662000D8C5E80FA2FB6B11719DE81F42FF16FA57 +:1066300087C2E877779E93FBD1B6EF3E9202F89837 +:10664000E5E17C5A1D98612CCBEBCD57C0DFF47E81 +:10665000F50206FC05E32E8075EC77F63D7F5417B6 +:10666000D1FED0F0B058E57C98827C98DF9BFF6A21 +:106670007C4B4CF4BECA26893DEAE2ED112F29C8B5 +:10668000971178213C46E043C3530FDE22EA23F101 +:10669000B2C0CB884F16EC95FC784EABE12F723E22 +:1066A0007DE12F92CE0B59AB09EFAF2C6C96DCF845 +:1066B0004EBD76CEC3C644F893DECC247FD2628F23 +:1066C000C08FC6171ECEF7332F70FFC84DF83EEBB4 +:1066D000C8109FDC304DBF3E6FBC9048F5DF976F10 +:1066E000401320BFECF7E5176D3E9A7C46FF21F181 +:1066F0008988B38E5C3791FEC79FE409FFE3283693 +:106700004A17572DE46A5FFEC79EFB8CDE8BEF278E +:1067100065BFE3FB892657BD629FF0AE3226B2F01B +:106720007D482B17FEB8A5F7E5D0BB23692BFA519E +:10673000BB32AB83EE0794ADE0F1DA65D0CE19A69B +:1067400057AC5E999986FBC3C70F0C79CA87EF6275 +:10675000DE9B903806E87D629531C1E20CB5FB788E +:10676000D594348C2B39B1DE3C9BDEFFFD8985E16D +:106770007B1B357B06F0F7E4645B22C6739E7DB11C +:106780001FBD8BB42D8FEB99D5AB5E8AC1EB08553D +:10679000ABF8BE9C930D661D9D4F6FDE46071A8EAB +:1067A000CDF9B82F3423CEF1FC11FB2AA4FD89F6D4 +:1067B000FB9356C74DD8EFC9E78D6E3CAF857A1570 +:1067C000CF95EE96829F5E45EFDC4889E8C7E97871 +:1067D0005FA67B9E8BE483F9D86F75FDDE34BCEA3F +:1067E0005E5108FB28D0F93DB3B719C7AD5AF56C17 +:1067F0001A1D52ADDD4CBF0F10E6FFFD0DD6D7A020 +:10680000FF17F2DE1559B1FC5DD98BFB7F35BCCC8F +:1068100010E7DBDBC4BE8E7A3BA6A8B763FC0FEAA9 +:10682000ED9847BD1D53D4DBB1BC76835EBF7B5E64 +:106830009CCF6A7EE074F97C01EAC1BE6296B384A3 +:10684000F6615B0EDAA3CBA42837EA91CB24BECE47 +:10685000977D64E7BF43D17A0DDF7F053F44BEBB20 +:106860003AA10B74B030BEBDEA828585DF7F9EC43D +:10687000E274F9124BB2AEFD14874B577F75D250BC +:106880005DFD35CE025DFEBA9CB1BAF6D7BB27E9F5 +:10689000F23F18738DAEFD0C75862E3FAB748EAE35 +:1068A000FD8D9E325DFDCDB317E9EAE778EFD2E5C5 +:1068B0006FADB857D7FEF6252B74F5DA3BB42D68CB +:1068C0006F99F19D210BA5DABBB45F19C002827DDF +:1068D000737C89B8676DE6FBD1B2B7B26CE1FE108C +:1068E0007938D77FE6E4ABDFE6F5E7EF4721FF0E27 +:1068F00012EF43C50DE7744D65A0CD91BDDB9A8CB9 +:10690000FC14D92EB27E7CF4A1CFF1A751EA866F98 +:10691000BA490139327EF4A19199900F0EFF98E7A0 +:10692000C71DFA7506E48FEECCBA99F2230E7D8E60 +:10693000F5D3F23FBB490139367E1623D5E4BD9D20 +:106940006B6FC2B89AF15765AC7373FF08C593902B +:10695000A3A228EC5E8CC516C4F3796D5E8817BCC3 +:10696000878F78C13408FC8CE921E0674C5F057E95 +:106970002E07397604F819D3A3608762F9EFC10EA8 +:10698000C5F44DB04331FD03D89F98B682FD89E927 +:10699000BFD6CFA6F4BD7A2F7DF7C7FA0A4A8FD5A6 +:1069A0002FA1F20FEBEB28FD4BBD8FCA73870B3F76 +:1069B000C65E6347F8BBB1DA79A6767ED9B084B5F6 +:1069C00045A33C6853E23EB584CE25FBB6FB15F6E5 +:1069D00069987E16CBD4A2E1E42FD1FF0EC68F3288 +:1069E000BCE386835C78DF352B0B1F86BFE9C29240 +:1069F000D7F018F77DF17E4164BF71821FDCF9AAE0 +:106A00008ADF4DB0F07BDD132CFCDEF604A5B581EA +:106A1000CE07BF664E8C373928EE69373CA0D03D93 +:106A20006DE902A3FCC40446F986AFDBE89EF704D7 +:106A3000873B09F7292DAFDD07A6BFB038A5C917D9 +:106A40005A4B50DF98683339514EF4C451301E27E9 +:106A5000A19DE76F32F273FE83F64F4BD09F06F095 +:106A6000301C4F8B07D8F2350B1AF2437115132CDB +:106A70006D14AFA5C5394817DA64D49BB4782A0DD4 +:106A80002EBB02DF1586E2A434B80740DE54C8DF0F +:106A9000BD960BB17D3019E3C9262E31D13B833D24 +:106AA000715B66E6437FEB00113F00ED09EEC9170D +:106AB000BC142F3251C48B0C32C106CADBD1B9B21F +:106AC0001DED35FCBE5FDB619C4FEA7FC018D0EE48 +:106AD0004989C73968F122D83E9AB70FCA61EB736A +:106AE000F0BF03DCC0FF83E2030518DF3368B18D1C +:106AF000DE6364AA4AF89D25E42A738ABCD8AF599C +:106B00004231E58B45FDB90CEF0AA4BBC7ECF82870 +:106B10009AD673E620D44B66083DFE1FF0CBEAFF01 +:106B20001A7E5139FD0732F29FF5C5371A5F68F4B6 +:106B30008EE4238DEE61F13544778D7F22F9AC2F01 +:106B40007ED2F8688285BF0738B1DAE2BEDFF5BFD2 +:106B5000877FEEEC625363A1C90B99DE38942F65F1 +:106B6000179C47303F8F4DA2DF67D1EA7F8DF5A399 +:106B70007AD77BFFD6658C0DE3B309620FFBB08F2C +:106B8000F65A3BEDFD10ADFFAFFB18FF0DA127BC82 +:106B900021F6BD6553383F950ED57EDF4AB51514F5 +:106BA00085C5B3E62D24FB80D9B87EED84FFC88F60 +:106BB00026F4DEAB2E283ABDFB5AA18F97322EAFBA +:106BC0004B23CEF3AFCDBB9AF4F26B23F4F2483DE6 +:106BD000FBCC7071CFCEC55CDFF39DDA6EC453A4DD +:106BE0001E87F171C8F7994E99DEFDD1DEA5D5DE7D +:106BF0003B9E2CD6F3647CEF18E09FC2BC0A6E2A41 +:106C000057331FA5D7303FA5D7B120E909D7C3C651 +:106C100083F91F604814E40F474FBF0DEF38968C7F +:106C20002C194CEF9F84DE6B34E68FA2F71AFFCD50 +:106C300011F65EE3A1C94E3A7F3D64E1F7AC715DA8 +:106C40001AE343F3F91DECBB83615F3C0CFB32A6F6 +:106C5000AFC1BE3C18E6F73AECCB98BF366705C328 +:106C6000EFA63AF57151DAF7D7394AC020EB1B5F2E +:106C7000D7E5FF6620E2F38DB8219371BE6FC48D16 +:106C80009E8C7479236E8081A76613A67D7DAFAD3F +:106C900083EBF2F83DDFEB1C5369BCFF0BF81C9152 +:106CA000DFBF373EE3E8D15E8C677837262903CF14 +:106CB0001DB95CAD89E67275E94B6FE5CB503EB10D +:106CC0006E1CC17955DD584AAB2D1C4F9FD5331F23 +:106CD000E2F7144E011DD011FE3AA6141BC2E3B513 +:106CE0000BCD5E15E1A836B4C45C09F59F6D7A77CB +:106CF00017DA5360574CA172D9B9CE8D7AE41B3C98 +:106D0000DE967D73386DA6BD375FB22DB37476A362 +:106D1000C697D5160D9F3EFEBB45996A1CE76BFED4 +:106D20005EAC160F34D0CCDFAFD0DE2F45BD8EEE7B +:106D30008946E84F45515CAE0D3473B9ADD16F93C0 +:106D400089E7F17DF12294838FF0F74F760C506F35 +:106D5000C179801D42EF03760FB4D37E7348C4B56A +:106D60004D0CE6C6E27E508AFE1300F9F528FEEED1 +:106D7000F52111C7E6C9F1CE47BE7FDD796820DA7B +:106D80006357317E4E738D4D76079D975ECF91F29E +:106D9000A0265FD8DDF92C5F77BF50D007E0A4387C +:106DA000A6EEF7648A2B9CC8B21F47FF4EC9512339 +:106DB000469C87E24D93B89C9B7294C74D85ECF33B +:106DC0002E19E5E06B0E896D0478CD4906E60C932B +:106DD0006B5667147386C1139D13AFCBDBDD29BAE5 +:106DE000F6B1633274F571EA305D7DBFD2425DBEAB +:106DF000BFE74A5DFB01B38B75F964EFB5BAF6A93D +:106E0000153375F9414B6ED1B54FAF9BABAB77F9ED +:106E10002A75F5DA3B5DCCA7B6E62472798D7F99A9 +:106E20006B97EADA95DA16D0BDD2ACC61FE9FA63E1 +:106E30004EEE8FF1C17FC85F5FE0056648A724E989 +:106E4000FD34B2B0BB4A1C935E4552A58A78AF129E +:106E500087DE5F936A2BA57B07A99788FFDAF57D0C +:106E6000F9C03BECE27C50CDE8FC37920F5E433931 +:106E700095C9CF55C2E78BE72AE178C17395F03CFD +:106E80009EAB84B7C77395F07A3C5709AF1F79540E +:106E90004FFF51AD7AFA8F3E567C59F41ADBA6E7C4 +:106EA0000B8D5EE34ECEBC28BD66C37F482F586273 +:106EB000749F7E32E029C8FAA65B885E9C7EFF2C18 +:106EC000DDFE1A41B72FD8BA51F84E7F671997DF08 +:106ED0007DEDE79D16F50CCAA16F51568E0AF93962 +:106EE000B4F8DABE7E67468BA78DFCBD99AF0C6DFA +:106EF00076DC4F8E1B1AE9777B0A13BD5FA39CBA21 +:106F0000336F8984E7E549CCB37B810BEF87751D2F +:106F1000FF317E77AF9DCB6F3089510EB6DD6BA709 +:106F2000F8210DCE3B5279FC946184B05BDD3C8E40 +:106F3000CA3882FBC3EC6E07C5DB97E5311107CB7E +:106F4000D2EE181E3A27EC5ECEF57A93D51B3502A9 +:106F5000EF1989DF35D3E2C6D9A57FBF2616BFEB6F +:106F600079E77191F69E69D03A04FADFD814AF7FC1 +:106F7000F7B586F5BCFB8AF98DCBB3B5F7A778BD1D +:106F8000F63B31CC6FC573FA211B984EBFD828DE73 +:106F9000C9DD28DE311DEAB7E8E2AE43F1547E2BAD +:106FA000C685E56E77E8EA87079274FD8DD8EBD445 +:106FB000D517047374F5238FBA75F936116735AA9E +:106FC000758CEE3BB45BD08E187D4CD595A7572DB4 +:106FD0009D8EFBFF20A1CF8F6D2BD5F597DE196518 +:106FE000C0F8E6692332885EE34E7A74F5B4F7039D +:106FF0001EEFF89744C293664785D955644F991898 +:10700000FF1D32D35A85F64F2D3E3EF2BE42CFBD14 +:10701000224BE81E53F87D02CDAEE9B957A0801E81 +:1070200092198A9FEFE13BF1EEADF62EEB53F7A6F6 +:10703000E8F87296E0BFF2A17CDD6CB5F03893867B +:10704000FB6C0C7FDF88296DC9489F5B46707D63B0 +:1070500065963A7B04B5E7715B4FDB4F2EC2F57046 +:10706000C7083ECE6D06C39D33F2F87BBC2F86D990 +:10707000B5F3C5F7530A38FFDF11CBE1613FE6EF07 +:107080005F69F34832B195F4AE9BD23614F9F9F644 +:10709000758187F12AE36DA64623FFFD2CBF917E03 +:1070A000D7A218F4C002F48F16FFDC36167F974D76 +:1070B00021BF56F5AFF6DEEC1B1CBA47940EC5484F +:1070C0008769885F48FFE8E6F1DF6B716EFDC3D624 +:1070D00097B093BB1987ABBBCE44725FA363189D77 +:1070E000C8CEFDEFBA8FC1C43E3598B3560F5E7A55 +:1070F000EC718117ED3E8FF32EA3E7191BDD0B2AF0 +:1071000045FB56C3F72937A76BB39827B643B9A2F7 +:10711000B5C37B27EDB650BBFF57F74F7AF07B899D +:10712000FB7A7DDDCF8B5C4FF417E6AFE8EB5E9E1C +:10713000B6BE7AD60F6B9BC3E347387EFD830D74D2 +:10714000DEAFFD4EA586871323B85FE6A7829F6159 +:107150009FB51524F2FB64F83745FEA60CF967BE0F +:107160009DFB3FBC629F9DA87A7E8EE737739B8C08 +:107170006C33949739B9DD8B299EFB95F9F4FB2587 +:10718000ECE3A4272F649E583CEFBF8AB957E379FC +:10719000CDBCB5FA76F319EF67A18DFF3ECCFCC8E4 +:1071A000F769B473AF4BD8D1EF8D10FBEE08368280 +:1071B000F42511A75061D1E6A5D797BAFDFC5C0F65 +:1071C000EFFFC89C4E14B7A6EDC74E3C770A3B0FA5 +:1071D000017C46E1EFE9F9562AF49E57247FF5E059 +:1071E000B38F388A0EF11E48CFB997A8EFF07DDE35 +:1071F0004EF5CD567A97E36C416B3EDA11DAB9570A +:10720000E4395AF7720BC3F8BCEE663BC51FE07950 +:10721000532CD0FDB46177E21857081E6F9BAC3B2E +:1072200087894C73B2BDDFA01CF41A199D6F35EC31 +:1072300090DD2BA0FF076C87E81DAE7449FD760436 +:10724000F98DF576DC34D817917FFF0F308202A5D7 +:10725000008000001F8B080000000000000BDD5ABA +:107260007D7853559A7FEF4D729BB4499B86B6B497 +:1072700094B6494B4B0B01F2511CBE66E6829465F5 +:1072800076914D51A18552121A18BE8AA5E263C6A5 +:10729000C5694A8B1684D9B216AC8E4ADA15D45D0C +:1072A000D4567144AD6B8602323338A2AEBB3C83F8 +:1072B0004F4D6116515609F5D915F67164DFF79CEB +:1072C0007B9BA4B6F3F1CFFEB1E5292FE7DC73DE9B +:1072D000F37EBFBF7B2EB76EE1CF0F012ACB0480B8 +:1072E0004C00A8D28B9005E0D5E3BFAD00151A2362 +:1072F0004039C0D03C2194844B86821A800CA48BE8 +:107300008510D8000AB4202759003E02CF34284205 +:107310003E10CE207AA409F727013CD7A467F49F3A +:107320009ACC0093018E3665B3F18B4D56467B9A0D +:107330004AD9FC9D379C006E80BB6ECC051887E750 +:10734000B7CD66E39282A0988CE7C12AC17118C9B3 +:107350008A676057326E8D34AF98E945D1F21D5C73 +:10736000EE922468E8C1F12D451F95FECC21B2E7CD +:10737000FFEC0046557D1A9B511F94BF11B7B3F126 +:107380003E21148C1B7FD5AE8C2BF8F8DE5D7C1C67 +:10739000D119DB8434AEDFA462AE1F51D26F928E5E +:1073A000EB4763D28F28E947F32F3739D8F858D302 +:1073B0002C36FE4593CCC6C79B1633FA469387CD31 +:1073C000AF054FBE134DFCFD28C042F201FEDCC2EA +:1073D000DF1FDED0C3C2D2D8783EA4278C6FD7E798 +:1073E00024ACAF30DB129EFF557659C2F31F599D76 +:1073F00009E3BF299D9DB0FE0EC7FC8431CCFA5134 +:107400006C5C887FC99509E33BA12AC60FED74B770 +:10741000C797C07F45D5C6447EDE6D09FB57412026 +:10742000617F514373C2FA350101FCF16390258AF3 +:10743000B3BACE712C4ECE177A5639D0BF9FA47CEA +:107440007B9FAE90FCDCB791E2B4B13ED9C1FDDCCC +:10745000BE98FB5D04EEE76835F3F30E898F2B1CB5 +:10746000E3CDA3C44F1FFA7921FAE55FD0CF44C31F +:10747000E867A227D0CF444FA29F17A2FF4EA39F39 +:10748000899E413FD3FCAFD1CF44CFA29F89FE1646 +:10749000FD4CF41CFA99E8074D558CFE6B9397ED63 +:1074A000FBB7A60D8C9E6F6A60F3BF6B0A30FA7152 +:1074B0005390CD0FA01C7E5D4CAEC99D187F71F618 +:1074C0002D0B611CC6D967EA73E684F1B49EEC8487 +:1074D000F5338E5B139E3BC3A509CFDD671C09E323 +:1074E00099E76625ACFFDE793961DC35C3CAF26BFA +:1074F000766471C2BEB9573C09E369EDC1539F512F +:107500007C3DF9E549A22569BE97052C0D4F3AFE51 +:10751000BA4A9B83E3149F2B1D7355D7FCB7550BB9 +:10752000B104786FB8593D980E5191FCEDC5B5E4A2 +:10753000376F1842DD98ABD36EE6B0E7CF979A79F4 +:10754000FDA21FF4BBF31874ED11689ECBA5EE7776 +:10755000805943545D1F1B8FBE6EE4F9EA3A561FF3 +:10756000E3E400883ACD74EE0EA36B0FC6D311513D +:1075700058E3C1783AB213D62CB3A33F8ECAA20106 +:107580009F571D333B35565ADFE0AA3401BCAFD4B8 +:1075900027757D8916CEE85C313D9EFD9EAD9BF83A +:1075A0001D57EA5C4CCF88162B2ED5093984FBE693 +:1075B00045CFDD9E86EBBDC1F93389FF1209D67830 +:1075C000ECEC9C3995B86E6A5090BBE3E2FB04F199 +:1075D0009B49EB7B4F507D7DF6D052BE2F99EF7BC0 +:1075E000F6502A3B7F69ABD0ADC1F3E71D05B90B5F +:1075F000F7FF86E49D49FA8435749EAF959FA7F204 +:10760000F53D992F59719D0F1A1EC82E271B094051 +:10761000751BF53A497AA9F653D79760CAE8B07F47 +:107620006C2551D1956DA5410FD9D925F275925E82 +:1076300006C07CDE7ABC12A8DE7FBF3CBD2283F888 +:10764000F681A398E2A8FCFD04BD99D96E637C592C +:10765000FF9A1C14C229A8CAD260F34E32DB1DC1A6 +:107660006DA73269FD33E0B05959EB811FB862F262 +:107670004D917B456C7F608773A24120BF43FFB86B +:10768000B838C20A7017F9DDE9D001F9A5526BD6F6 +:1076900051DD00AF2C029EDB38DC37EDEF3D8CE78F +:1076A0007C7546436D0E7F94E766FEBCF1C11B837B +:1076B0000F533D7AD5E0A03104F4ECB9CFCC75F08E +:1076C000760AACAE7DD5AA030DD9F9D5A410E09405 +:1076D000AF5303568CC72FC4B3592B705F7D51280D +:1076E0005F447B6D9AD035DD827DA3B4C4FB070770 +:1076F000FAE76AB07F6915F2196C7D258BECF655B7 +:10770000EBAB12884C0EA313CFF12BF6F1EFD8B0F0 +:107710008494F44DF3A48591FF45AC33F264927FD9 +:107720005E5A84F46AD75D8CA04E55F887EAB4EFB0 +:10773000DD715980F3756D7C5ECDEBCDB0F7BA0687 +:10774000EDBCB155E793662005EDC5885A1FD04EB4 +:107750009B772CFE94CED94CF371753EF0F1FCF082 +:10776000C9B83A92E134655C4E014A40C72DD4074E +:10777000343569DE51EAB24ABF6E92C327B12E1684 +:107780000872AE732671094994179B1097F4B0F8EC +:10779000078667EE35707D7DEFF6DFCDF04B43B1A8 +:1077A00048F845C53D35CD1CD7402F848A051ADFE2 +:1077B000CEF2B5E655D921E0BEF7143CB3EC462E27 +:1077C000F3CB870A7EB9FBC654561F96440C6C7ED9 +:1077D000F98D1C4657DC2863F3CB8CBC4E445E8786 +:1077E000D04E1BE1A7248EA7FA80E1A791F1EA040D +:1077F0007305C5FF1459E81F47F14A7808F9551178 +:107800003E1A47F1EFDB9549F11FC2F8B77E37FE0C +:1078100057D4D82A488FB2C50250DEAAF1EF0DFE28 +:1078200092C5ED528C5B9ABF23D8ACCBA27D478129 +:10783000E9E745B7137E52E37C645ED4A6707C050D +:10784000C6C84CAA27AAFD6B49C839F81B7CA94AAF +:10785000467BD7223682093CE001FD6CB2F3E7BEDD +:10786000DE97AA5A2761CFC29569C82F570BC1244A +:10787000171F1BF858962C7C6C423A510F41BD855E +:10788000A53ECC439A87F3A285AD0303DF07594891 +:10789000259C4F468A2100375C6C1FA429FB48FEBB +:1078A0003C3CC7C0F7C95ABE2F4CFBFC65BC8E3EA2 +:1078B000AD8B6C04747D8D28B2FA5BA1F9B8623C83 +:1078C000C383E92E9EB73C7E2E2A796B742FF0BBC2 +:1078D00030CE1A77178F873F129775E837CAD3DAF9 +:1078E000B4C87D02F6B39F3A415E88D0B71A147BC4 +:1078F000A11C8071BF52193FE73C77BECDCEECCCC6 +:10790000C60F38DFA80AE2B8CDB8D343F2C5EAA162 +:1079100047A6B448B1CBE0B57F578FD57B7BF64DFA +:10792000B6123FBEBE466AD7D13C068C8EF2A2CEBE +:10793000CEFB0568795C5EDCFDDA8BD42755B92F68 +:10794000EAA08AF919A28354BF0E2ECB76EE51EA33 +:107950002AC5D5139B26B2BEFA73A7D2B7302FAC77 +:1079600093390E264A38D89AC471308D09071325E9 +:107970001C4CF38483694C3898C68483694C3898CE +:1079800028E1609A3F6FF51CE0F9DCAEF7609F8458 +:10799000D2E8E387F1FCDA2609481E7F19D7EFD039 +:1079A000A66499F438F480C4EA23682365B4BE461B +:1079B0003A774A6F8BD9E142E01F74BCFE858BADEC +:1079C000C8676583C141F5DBE8F674D3392976874A +:1079D0004475C66B0F0956B4EB0433CF8782A2A857 +:1079E000F33EA47E17E7B3A490F7C7020D9C048C66 +:1079F0002B4F96FCBC3393F8788F125DDBE73C9DF0 +:107A00006BA57E952E917F6AC763DEB03A14CD5F79 +:107A1000668AD9F96D27AF3B7ECC6DA2D7C8EE6CD4 +:107A20005DA8AD10E5ABCE3033BB63DCB6D2FBD581 +:107A3000DB8ABD299EC5B8B896402B935FA48014FD +:107A40006A4196589D64C9C5F2053496989D246A8A +:107A5000409678FB984F93DDA226C94AF8C5672C5B +:107A6000594471EF6B172C540F2A344B4E33FCBC26 +:107A7000DF5648F8F9BA33F1FD709DD2E71A0F14BA +:107A80004939B46E37A2381C2FB158199FE83EC14E +:107A9000DC6DA5BCC275AE98DEFECED92C2FFC21C4 +:107AA000A4EEB1F367D5FEFEBCD729EEC2B244F214 +:107AB000FACD581EEC71F9D52EB0381E391EA49798 +:107AC000278A7B84ED64A7D5DB6DD25A238DCFE85E +:107AD0001AEDA48735017FE0BA30AD43BF727BEC6D +:107AE00047B96DFC3C571CFFB5C43FEE7C350EAE6C +:107AF0003A4D0C0FF9CC5629C746D4CCE4FC8E1D68 +:107B000014FBD785433A07C9A3C57371BCD21CD2F5 +:107B1000D1396B5B9D12D513EF5E7E8EB72D5D9ACA +:107B200046384A6B96F2705C93CCF30FE56378D3DA +:107B30008F76B118E91CC497C6EFDAC7A7C8EB6FF8 +:107B40004F97D625CCEFD7517C572BF57E6DEB7C2C +:107B500049A4FD5AAE6F8E8BFBD9ABD8F33FB61953 +:107B6000F600D6F4EA8E778A058ACB861CA7807A3F +:107B7000A6B8783CE68CC88B6A733BD367D89E075F +:107B8000507F64B9CEEC61FC311E829437FE0ECE7C +:107B9000DFDFE193EC48D76BBDD24476BE89F11BA1 +:107BA0003EB7F397CAB906079D0B666F3EC5C3E59E +:107BB000032BF2991E1D8FE9C86E26877511E14DC2 +:107BC0008C0316976A3CD4BA79FEA9FA4F756939C5 +:107BD0007E75711CABE693DA8FD4BCF2EFF5818C25 +:107BE000E7D665637F1C25AFD47C52F3AB1A22D550 +:107BF000D4B79F963CE16C2196F7D80F1B5E1EA56B +:107C00004FF815FBAD54FC807661F5447D7E97E21C +:107C1000871AB26BDC7EE2477C65F5F98270F1363B +:107C20007B6CBD7A6E8D85EF23BF507CC8CA79B45A +:107C3000BE91AD1713F2B96E18B71EDD9545FDAFB5 +:107C4000577050FF6BDCD79F773FE5F70B297483A4 +:107C50000257B71CDE9A43CD551B627E50E55A870A +:107C6000F884F27ABDD2F7FCE1D1F3FB4499B792E4 +:107C7000FAE7B01D1E7DA184EA24EA1FA63AF1F1BD +:107C80000B6F7E34C71AEB57AA3E6BDBBA585D5CAC +:107C9000BD37DDA5E175B18DEAA25FD1BBAE95FB25 +:107CA0000BD05F84DF54BFFA5A05D61FEA02B785AE +:107CB00008F70CE301C59F23FDA8FA57F5A36A7FD7 +:107CC000EC430071B85995BF5E39BF41C983954AED +:107CD000DCADDC309FD5C5B56D3E37B5DF6A65BE1E +:107CE000DA9F383F6C7FB36A7FFB4314C7433DDCA8 +:107CF000FE437B75FCBEEDA889E1C5AB8DAFFD767B +:107D000039AEFBFC60573EF5F578FB134E5CAFE0F7 +:107D1000C51FA3FD092F8E62FF66575CFDFBF12195 +:107D2000C5FE853D5FBE41F5655B92A31BCFADC32C +:107D3000DF59689FAB471FD5E5E2FCAA75423AC9F7 +:107D4000DBEEB2713D7BBA7485F41ED0E034432A79 +:107D5000CD5B593E8D8C67A432C4D997FA81608976 +:107D6000E115753DD5A35E9463FB36432ACC20BE56 +:107D7000E91633BE2F1C57F254AD2FAADC97B6F983 +:107D80007E46EF13970C3CBEB7E0FE97F1F9A5F9DC +:107D90008EFC467B0CCF41464F2FF9BFF61E3B7B36 +:107DA0002FC7F3CF08A8D74B2EFEFE3B69522444C1 +:107DB000F2ABB852C2FAA447DA2D72FD0B359CFE25 +:107DC0003CB9A7ACE18FE0BD495B22D7491E15CF76 +:107DD000AA38F623252E54BCAAE2CFB1EA8E04CFEE +:107DE000B415A2BC5206385AACB13855F98CAC3F28 +:107DF000AA9EB9293DCF539CE4DE33C54538404A9D +:107E00008636D2E3374A7C8ED4F3928DDB732CB95D +:107E1000557987ED80C138CB12935F950731AC2C33 +:107E2000122EFBBB690C175E6A76E4939DC6D2EFF7 +:107E300092CDCBF2349A030EEAB363D5D56ABF1064 +:107E400024BEBA8089DD3FA879E257DE1D314FD2CA +:107E50002228FF507B511AD5FF4B02F615D26B9B9F +:107E6000416471A1E8F797DE435F7759585CE01BE6 +:107E70009B89F05A4DB292FF61DE7F0702454C4F5D +:107E8000755EEDBF03E688C91257777FDFA0F42F38 +:107E9000E443F9038122388C470DB45F32892C4EBC +:107EA000B97CEABEED3ACE1F2AF5A1C336C22D95A4 +:107EB000920FE757073ED40948BF51E2B5A0A84743 +:107EC0001E4FF6ABD49B294F3352651B9D97619192 +:107ED0006DF1FD3FC55325517FBC640B4FA27BA9BB +:107EE000A8D3C0EC3DE0A95A9483F135D0994E3720 +:107EF00040B05D700C04E87D725712BB5F5F224298 +:107F00009BC0E2232CE552FF6E16583D50E7EF98D8 +:107F1000E24D71931C9ADEFFFE1DF1DD95E2207C9F +:107F200003DFE0B9581FA71053CC99BD748745767D +:107F30001C712F32F21EA440B2B27B92E8AF34D053 +:107F4000CDEBDFBFD378DDAF7490648DF97D83E234 +:107F5000F7755D77B2FB077FA786D5B975741F8269 +:107F6000F4097A8825EFA18EDBB3282EFCFB2B0EBB +:107F700006B17FE40BE0A1FAF27B6DA492EAC09512 +:107F8000AEF19666C24FF52D2580CFFD5D0FE7134C +:107F9000BDD265A8A2FABCD05CB9301DCF5FFF642A +:107FA0003ABBA7BBB085DF0B6C7ABF98C5A1DBCD10 +:107FB000F369CBB7FD4F9BB1DFAFC33933F2FDAFF0 +:107FC0009E9450101F6D693A9EAFC19C7934C93B95 +:107FD000DD8DEB368B7DCB6753BD16424772D87A69 +:107FE000EBA8F7CC2ABD4CEF53188FF53F3DCFF8E7 +:107FF0007C219E5D5A8DFBB7D4BF924A7C361FF818 +:10800000F036B3C8EE79E610FFCF85AE23662ACCF2 +:108010009D5DD3A95F1608F23C37BBA74ABC071980 +:1080200079CE52278FA7F96EEEA72516CFF2EA7206 +:10803000E607E6CFB1E4DB709CDF4BA9E3D5A134C2 +:1080400009ECEC1E5432DBD9FD2CC3A1573410A02F +:108050007355FCA1CEDFE5E6E75E496BCFA7B8DD3F +:1080600078E4B17CBA2FFCCCC4C7354756FC9AEAF9 +:1080700094F799248E87B52039705F5D90E359D8C5 +:108080006061F784C378C89DC2F86DEC7427F43B37 +:10809000BA20A1F9CFB4B0B887BDAF5D77124EBAA0 +:1080A000A00DAFA338B8807832C8FCC9EBD885766C +:1080B000CD229A0F6E1780F0C385F6574C938C3102 +:1080C000BC652AEF09533DAA3F86F88387228BCBF4 +:1080D000AD66B51E1917519E236E3253DC36BE7E37 +:1080E0006A11F0318030B63D37297869787CAC97D9 +:1080F000E5ED96A31C2F6CE9E93D3D2183DE2715B4 +:10810000BCA0E0907A05876C3DC6ED527F6C50AA0A +:108110008BC7F9A596877211B135BF72BEEA002EE2 +:10812000F591DFE600F4F6BE5DDD8C3DA017DB3691 +:10813000CB4F6D94E1B83DA51FB0F7D5FA56855FDA +:10814000E9070F15327D2BC7C5E39D9D6E1DDBA78B +:10815000EE477BB07D5F1B52A753BD0BE839BD3F97 +:1081600039B59BE8D7867CD6772483773FC5657081 +:1081700001B07B87E08089BDAF7E2D7A7AD7B37B53 +:10818000302B9343BD7F186927C930FF20D59D3E12 +:10819000A51F85EB93DB0827C85B8D5AA22DF546FA +:1081A000861BE46D1F18E83DBFEFCB645148A55016 +:1081B00089F68BC8DF95E50DD1FEF18059AAA1BEE5 +:1081C000131608AF5F7BEB5337C97F2D2F3A00663C +:1081D000FAEEF07E357D7778CEADD8C71E71531E8E +:1081E000659EE075FD291DB4519F04AD0796E17CA5 +:1081F00058F95E18BC29B2BADD2784FF91F87B924A +:108200008C6D36946740A917E142CF4B74FE398BD1 +:10821000A6D845E72ADF11F394F7216942B691EC1D +:10822000D4A2D851906508E039A270AA8EE2E891F4 +:10823000A81EE83D3C6FC262D6DF5A14BB0AD60CBA +:10824000EA3970C22E0693508E4740CFBE6B4AA2C9 +:1082500041A67542DF3B3705A4B99AEBFD69F83CAE +:10826000F77EC1D18222D70E5D7EEA3DA0BA197297 +:10827000921DB665794F927C03438B07BDE8EF47AB +:10828000CC3D7A879DC7B61EE37C01FF27F4FDE451 +:1082900066AA05EDBB209A3C48F6BD16BDFCC26B34 +:1082A000E544F5EC1E71419F269C349D3655C8C3AC +:1082B000F7BF858CC8FADB627CA0FD31A0FCB94712 +:1082C000E90B2ABFB1F65FCBB66A99BFA2FAB048F4 +:1082D000E719C510BD972DE8EB3F4FFA2DD01BC312 +:1082E00074FF0C7ADD7F0EDF2FD3B9E7F2D22F4F68 +:1082F000652D096E21D8C86AE17EFC415AE27BE116 +:108300007537C799D795FAA4FA01AC32C4F72FD5BF +:10831000EE6AFEABF20F19257EAFBB81DFD30FF5FE +:10832000212E19A5EEAAF443C22588372C93E4EB3D +:108330006477351E46FA7FA49F557FC203E74EA59A +:10834000D9981FA7FD3D30FF7D43F93570F3E86EE6 +:108350000C3B98A09107BDB6FF7FFE53EB8C3719FD +:10836000E98CB1EB8D3719E9F451EB4DF2641BAB9D +:108370004785E599AC3E9CA2FAA0D6853FA30E4D59 +:10838000A67D73A939136E3189FCFB1FE15D3CA703 +:10839000259017A2F78CB905D6662D3D7F10383E83 +:1083A00052EE5B5B0253F9738DC0F7FF4413EAE6AC +:1083B0007E0AB2E7C1F121C2978487093FB7D03E58 +:1083C0005C170CA6840EE37C4B480C16A7B1E70C97 +:1083D00027532E33FDB6007B3E7C4E83959D93D56F +:1083E000C2F747EF93D839DEB4C6A56417EF355E00 +:1083F0001F9794A72B7D203293F0EE233B4D4071C5 +:10840000A8FA9B5DE55B63FED628FE9E60E7FE9EB4 +:108410006014C349E4B70D0BE578BFB510A644BEA0 +:108420006F222ED7937C9512AB8F1D95720E7D6FA8 +:10843000ECA8CC12092FFDE2DB7B3F7990E47B575F +:10844000C770668793CBDBF15611C3530362E8F123 +:10845000F5B47FB9D141F8F9A0E07D9EE248937D63 +:10846000E7E37EEC9B4F88ED7AF25B87492CE92CA1 +:1084700027BE7AF63DADC3C6EDD0B1D1CEF80CFB28 +:108480006B9F89DB5BB1D3B50D1666EFB9050ACEDC +:10849000D74653C90EE81FE5BD3F9A1AFFBDE39AC0 +:1084A0008227AE297E189E079C8FDBFFA7E61FCD93 +:1084B000F43696CF8C3DEF489773081F8DB4F38147 +:1084C00066675B09F9DF249A099F8FE59F9415D2AF +:1084D000D387E3FC42E14CFAA6B4CC6571A0FAE97B +:1084E000A0DAAF30EEC81F23FD0613791CA8EFEB0E +:1084F00005C1C1C7D9C7148894511FC47C2AA5F7E8 +:10850000BB01AA573362712A60990C5862F9A9C657 +:10851000A75AB7C6CA532180F52C75B43CED61F952 +:1085200038110F4E2962F9DA49F6D2888EEC24967A +:10853000A7E772489E3F235F9FA27D194ABDC81DD1 +:10854000EFEDE2635E1F2668426574CE80081B94DF +:10855000EF8502D9FF13C5AE6BB02E8DC3756F9634 +:10856000F3FE003B46D427C50FB5CAFA4FBEC0BCC8 +:108570009A11F3E31AE53DA77647D220D5B9DA1D63 +:108580003A9E2F810A79041F56A7553E60BD9E4929 +:108590007AA9FBD66CFC9F4CC2C963EE8F4C4CA7EA +:1085A000EFA6AC4EA2DE2F4A9EB748CF01B8C4FE5C +:1085B0005FD6D93F68D8F78541F48F358D687EC87E +:1085C0008A7C4E97F37E97ABF79E2A67756041C20F +:1085D000FBD959E7A7C5F45D04BEE99F48F29CC8E2 +:1085E000F49CA175BB270DB1EF250339511DF11F77 +:1085F000A8FE3C8FE45B137887D5F3356A3DFF1303 +:10860000F61A6927D57E31BD8732090FFF5FD9ED94 +:108610007F018C91E6F310270000000000000000AD +:1086200000000040000000000000000000000040CA +:108630000000000000000000000000280000000012 +:10864000000000000000001000000000000000001A +:1086500000000040000000000000000000000010CA +:108660000000000000000000000000080000000002 +:1086700000000000000000000000000000000000FA +:1086800000000000000000000000000000000000EA +:1086900000000000000000000000000000000000DA +:1086A00000000000000000000000000000000000CA +:1086B00000000000000000000000000000000000BA +:1086C00000000000000000000000000000000000AA +:1086D000000000000000000000000000000000009A +:1086E000000000000000000000000000000000008A +:1086F000000000000000000000000000000000007A +:108700000000000000000000000000000000000069 +:108710000000000000000000000000000000000059 +:108720000000000000000000000000000000000049 +:108730000000000000000000000000000000000039 +:108740000000000000000000000000000000000029 +:108750000000000000000000000000000000000019 +:108760000000000000000000000000000000000009 +:1087700000000000000000000000000000000000F9 +:108780000000000000000000000090000010000049 +:108790000000000800009008001000000000000227 +:1087A0000000900000100000000000108000000099 +:1087B0000000000000000000800000000000000039 +:1087C0000000000080000000000000000000000029 +:1087D000800000000000000000000000000093B8CE +:1087E0000001000400000001000093C00000000030 +:1087F00000000002000093C8000000000000000814 +:10880000000093CC0000000000000002000093D0A4 +:108810000000000000000008000097200040000059 +:1088200000000040000093E00080000000000048CD +:10883000000094E00040000000000008000094F0F8 +:1088400000400000000000180000A0000028000008 +:10885000000000280000C0C0000800000000000167 +:108860000000C0C100080000000000010000C0C2FC +:1088700000080000000000010000200800100000B7 +:1088800000000010000020000000000000000008B0 +:108890008000000000000000000000000000000058 +:1088A00000000000000000000000000000000000C8 +:1088B00000000000000000000000000000000000B8 +:1088C00000000000000000000000000000000000A8 +:1088D0000000000000000000000000000000000098 +:1088E0000000000000000000000000000000000088 +:1088F0000000000000000000000000000000000078 +:108900000000000000000000000000000000000067 +:108910000000000000000000000000000000000057 +:108920000000000000000000000000000000000047 +:108930000000000000000000000000000000000037 +:108940000000000000000000000000000000000027 +:108950008000000000000000000000008000000017 +:108960000000000000000000800000000000000087 +:108970000000000080000000000000000000000077 +:1089800080000000000000000000000080000000E7 +:108990000000000000000000800000000000000057 +:1089A0000000000080000000000000000000000047 +:1089B00080000000000000000000000080000000B7 +:1089C0000000000000000000800000000000000027 +:1089D0000000000080000000000000000000000017 +:1089E0000000000000000000000000000000000087 +:1089F0000000000000000000000000000000000077 +:108A00000000000000000000000000000000000066 +:108A100000000000000000000000000080000000D6 +:108A200000000000000000008000000000000000C6 +:108A300000000000800000000000000000000000B6 +:108A400000000000000000000000000080000000A6 +:108A50000000000000000000800000000000000096 +:108A60000000000080000000000000000000000086 +:108A700000000000000000000000000000000000F6 +:108A800000000000000000000000000000000000E6 +:108A900000000000000000000000000000000000D6 +:108AA00000000000000000000000000000000000C6 +:108AB0000000000000000000800000000000000036 +:108AC00000000000000000000000000000000000A6 +:108AD00000001EC800000000000000080000200880 +:108AE0000010000000000010000020000000000046 +:108AF000000000080000A080000800000000000145 +:108B00000000A08100080000000000010000A08219 +:108B10000008000000000001000090700038000014 +:108B20000000003800001ED8000000000000000215 +:108B300000001EDA000000000000000280000000BB +:108B400000000000000000008000000000000000A5 +:108B50000000000080000000000000000000000095 +:108B60008000000000000000000000008000000005 +:108B70000000000000000000800000000000000075 +:108B80000000000080000000000000000000000065 +:108B900080000000000000000000000080000000D5 +:108BA00000000000000000000000000000000000C5 +:108BB00000000000000000000000000000000000B5 +:108BC00000000000000000000000000000000000A5 +:108BD0000000000000000000000000000000000095 +:108BE0000000000080000000000000000000000005 +:108BF00080000000000000000000000000000000F5 +:108C000000000000000000008000000000000000E4 +:108C100000000000800000000000000000000000D4 +:108C20008000000000000000000000008000000044 +:108C300000000000000000008000000000000000B4 +:108C400000000000800000000000000000000000A4 +:108C50000000C00000400000000000400000C8000C +:108C600000400000000000400000C82E004000004E +:108C7000000000010000C8000040000200000001E8 +:108C80000000C80100400002000000000000800059 +:108C900000400000000000408000000000000000D4 +:108CA00000000000000080000008004000000004F8 +:108CB0000000800400080040000000040000B00034 +:108CC00000280000000000280000B1400010000053 +:108CD000000000100000B14A001000000000000178 +:108CE0000000880000800000000000800000880074 +:108CF000000800800000000200008C00004000001E +:108D000000000040000020080010000000000010DB +:108D100000002000000000000000000800001250C9 +:108D200000080000000000010000125100080000CF +:108D300000000001000012520008000000000001C5 +:108D400000008E00001000040000000400001290DB +:108D500000300018000000100000129800300018C9 +:108D60000000000280000000000000000000000081 +:108D700080000000000000000000000080000000F3 +:108D80000000000000000000800000000000000063 +:108D90000000000080000000000000000000000053 +:108DA00080000000000000000000000080000000C3 +:108DB00000000000000000000000000000000000B3 +:108DC00000000000000000000000000000000000A3 +:108DD0000000000000000000000000000000000093 +:108DE0000000000000000000800000000000000003 +:108DF00000000000800000000000000000000000F3 +:108E000000000000000000000000000080000000E2 +:108E100000000000000000008000000000000000D2 +:108E200000000000800000000000000000000000C2 +:108E30008000000000000000000000008000000032 +:108E40000000000000000000000083080080000017 +:108E50000000008000000001000000000000000091 +:108E6000000020080010000000000010000020009A +:108E7000000000000000000800008500000800005D +:108E80000000000100008501000800000000000152 +:108E900000008502000800000000000100006000E2 +:108EA00000380000000000388000000000000000D2 +:108EB00000000000000084540008000000000002D0 +:108EC00000008456000800000000000200008464D6 +:108ED00000100000000000048000000000000000FE +:108EE0000000000080000000000000000000000002 +:108EF00080000000000000000000000000000000F2 +:108F00000000000000000000000000000000000061 +:108F10000000000000000000000000000000000051 +:108F200000000000000000000000000080000000C1 +:108F300000000000000000008000000000000000B1 +:108F40000000000000000000000000000000000021 +:108F50008000000000000000000000008000000011 +:108F60000000000000000000800000000000000081 +:108F70000000000080000000000000000000000071 +:108F80008000000000000000000000000000300031 +:108F90000040000000000008000030080040000011 +:108FA000000000200000320000200000000000202F +:108FB000000037A80000000000000008800000004A +:108FC00000000000000000000000A0000000000001 +:108FD0000000200000003EC1000000000000000171 +:108FE00000003EE0000000000000000200001E0043 +:108FF00000E0000800000008800000000000000001 +:109000000000000000004000000800000000000117 +:109010000000400100080000000000010000404086 +:109020000008000400000002000040600008000486 +:1090300000000004800000000000000000000000AC +:109040000000400000080000000000040000400490 +:109050000008000000000004000040400000000084 +:109060000000000800004048000000000000000868 +:1090700000008000000000000000001000005040D0 +:10908000000100040000000100005000000000008A +:109090000000002000005008001000000000000444 +:1090A0000000500C0010000000000001000052C73A +:1090B0000000000000000001000052C60000000097 +:1090C000000000010000300000400020000000040B +:1090D00000003004004000200000000400003008C0 +:1090E00000400020000000020000300A0040002084 +:1090F000000000020000300C0040002000000001D1 +:109100000000300D00400020000000010000300E83 +:10911000004000200000000100003010004000204E +:109120000000000400003014004000200000000493 +:109130000000301800400020000000040000301C37 +:1091400000400020000000040000500001000080EA +:109150000008000400005004010000800008000422 +:109160000000000A0000000000000000000050683D +:109170000100008000000001000050690100008033 +:10918000000000010000506C01000080000000029F +:109190000000506E010000800000000200005070CE +:1091A00001000080000000040000507401000080F5 +:1091B0000000000400005066010000800000000272 +:1091C00000005064010000800000000100005060B9 +:1091D00001000080000000020000506201000080D9 +:1091E0000000000200005050010000800000000458 +:1091F000000050540100008000000004000050589E +:1092000001000080000000040000505C01000080AC +:10921000000000040000507C0100008000000001FC +:109220000000507D01000080000000010000401897 +:10923000001000000000000400004090001000003A +:10924000000000040000409800100000000000042E +:109250000000411000000000000000020000411268 +:1092600000000000000000020000411400000000A7 +:109270000000000200004116000000000000000293 +:109280000000604000080000000000020000604292 +:109290000008000000000002000060440008000018 +:1092A000000000020000604600080000000000020C +:1092B000000060800008000000000008000060005E +:1092C000000800000000000200006002000800002A +:1092D000000000010000600400080000000000021F +:1092E000000060C0000800000000000800006100ED +:1092F00000080000000000040000610400080000F5 +:1093000000000001000061400008000000000002B1 +:1093100000006144000800000000000200006180BD +:1093200000080000000000040000700000080000B9 +:1093300000000002000070020008000000000001B0 +:1093400000007004000800000000000200007040EF +:109350000008000000000002000070440008000047 +:10936000000000020000704600080000000000023B +:109370000000766000080000000000080000708017 +:1093800000080000000000020000708400080000D7 +:1093900000000002000076A00008000000000008A5 +:1093A0000000804000080000000000010000804133 +:1093B00000080000000000010000804200080000DA +:1093C00000000001000080430008000000000001D0 +:1093D0000000800000080000000000020000800281 +:1093E00000080000000000010000800400080000E8 +:1093F00000000002000080C0000800000000000221 +:10940000000080C20008000000000002000080C4CC +:10941000000800000000000200008080000800003A +:109420000000000100008081000800000000000131 +:10943000000080820008000000000001000080831E +:109440000008000000000001000080840008000007 +:1094500000000001000080850008000000000001FD +:10946000000080860008000000000001000060008D +:109470000008000000000002000060020008000078 +:10948000000000010000600400080000000000026D +:109490000000604200C000180000000200006040B0 +:1094A00000C00018000000020000604C00C000185E +:1094B000000000080000604400C000180000000820 +:1094C0000000605700C00018000000010000605458 +:1094D00000C00018000000020000605600C0001824 +:1094E00000000001000066400008000000000008C5 +:1094F000000066800008000000000008000066C050 +:1095000000080000000000088000000000000000CB +:1095100000000000800000000000000000000000CB +:10952000800000000000000000000000800000003B +:1095300000000000000000008000000000000000AB +:10954000000000008000000000000000000000009B +:10955000800000000000000000000000800000000B +:10956000000000000000000080000000000000007B +:10957000000000008000000000000000000000006B +:1095800080000000000000000000000080000000DB +:10959000000000000000000080000000000000004B +:1095A000000000008000000000000000000000003B +:1095B00080000000000000000000000080000000AB +:1095C000000000000000000080000000000000001B +:1095D000000000008000000000000000000000000B +:1095E000800000000000000000000000800000007B +:1095F00000000000000000008000000000000000EB +:1096000000000000800000000000000000000000DA +:10961000800000000000000000000000800000004A +:1096200000000000000000008000000000000000BA +:1096300000000000800000000000000000000000AA +:10964000800000000000000000000000800000001A +:10965000000000000000000080000000000000008A +:10966000000000008000000000000000000000007A +:1096700080000000000000000000000080000000EA +:10968000000000000000000080000000000000005A +:10969000000000008000000000000000000000004A +:1096A00080000000000000000000000080000000BA +:1096B000000000000000000080000000000000002A +:1096C000000000008000000000000000000000001A +:1096D000800000000000000000000000800000008A +:1096E00000000000000000008000000000000000FA +:1096F00000000000800000000000000000000000EA +:109700008000000000000000000000008000000059 +:1097100000000000000000008000000000000000C9 +:1097200000000000800000000000000000000000B9 +:109730008000000000000000000000008000000029 +:109740000000000000000000800000000000000099 +:109750000000000080000000000000000000000089 +:1097600080000000000000000000000080000000F9 +:109770000000000000000000800000000000000069 +:109780000000000080000000000000000000000059 +:1097900080000000000000000000000080000000C9 +:1097A0000000000000000000800000000000000039 +:1097B0000000000080000000000000000000000029 +:1097C0000000000000000000000000008000000019 +:1097D0000000000000000000000000000000000089 +:0897E000070233000000000045 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex @@ -0,0 +1,5804 @@ +:10000000080001180800000000004A68000000C84D +:1000100000000000000000000000000008004A6826 +:100020000000001400004B30080000A00800000091 +:100030000000569400004B44080058200000008443 +:100040000000A1D808005694000001580000A25CEE +:100050000800321008000000000072F00000A3B495 +:10006000000000000000000000000000080072F026 +:1000700000000024000116A40800049008000400F9 +:10008000000017D4000116C80000000000000000A6 +:100090000000000000000000000000000000000060 +:1000A000080000A80800000000003BFC00012E9C96 +:1000B0000000000000000000000000000000000040 +:1000C00000000000000000000A00004600000000E0 +:1000D000000000000000000D636F6D362E322E33DD +:1000E0000000000006020302000000000000000300 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C02080024424AA03C03080015 +:1002000024634B9CAC4000000043202B1480FFFD76 +:10021000244200043C1D080037BD7FFC03A0F021F0 +:100220003C100800261001183C1C0800279C4AA01E +:100230000E000168000000000000000D27470100CB +:1002400090E3000B2402001A94E5000814620028D1 +:10025000000020218CE200003C0308008C63004475 +:1002600094E60014000211C20002104030A4000203 +:10027000005A10212463000130A50004A446008028 +:100280003C010800AC23004410A000190004202BFE +:100290008F4202B804410008240400013C02080017 +:1002A0008C420060244200013C010800AC22006046 +:1002B00003E00008008010218CE2002094E3001687 +:1002C00000002021AF4202808CE20004A743028498 +:1002D000AF4202883C021000AF4202B83C02080064 +:1002E0008C42005C244200013C010800AC22005C0E +:1002F00003E00008008010212747010090E3000B75 +:100300002402000394E50008146200280000202164 +:100310008CE200003C0308008C63004494E6001467 +:10032000000211C20002104030A40002005A102145 +:100330002463000130A50004A44600803C010800AD +:10034000AC23004410A000190004202B8F4202B8F7 +:1003500004410008240400013C0208008C420060B3 +:10036000244200013C010800AC22006003E00008C8 +:10037000008010218CE2002094E300160000202170 +:10038000AF4202808CE20004A7430284AF4202889D +:100390003C021000AF4202B83C0208008C42005CF4 +:1003A000244200013C010800AC22005C03E000088C +:1003B000008010218F4301002402010050620003DD +:1003C000000311C20000000D000311C20002104022 +:1003D000005A1021A440008003E000080000102112 +:1003E0009362000003E00008AF80000003E0000813 +:1003F0000000102103E00008000010212402010089 +:1004000014820008000000003C0208008C4200FC3E +:10041000244200013C010800AC2200FC0A0000DD7F +:1004200030A200203C0208008C42008424420001DB +:100430003C010800AC22008430A2002010400008DB +:1004400030A300103C0208008C4201082442000145 +:100450003C010800AC22010803E000080000000095 +:1004600010600008000000003C0208008C420104FB +:10047000244200013C010800AC22010403E0000812 +:10048000000000003C0208008C42010024420001F0 +:100490003C010800AC22010003E00008000000005D +:1004A00027BDFFE8AFBF0010274401009483000878 +:1004B000306200041040001B306600028F4202B818 +:1004C00004410008240500013C0208008C42006041 +:1004D000244200013C010800AC2200600A0001290E +:1004E0008FBF00108C82002094830016000028210A +:1004F000AF4202808C820004A7430284AF4202888C +:100500003C021000AF4202B83C0208008C42005C82 +:10051000244200013C010800AC22005C0A000129D1 +:100520008FBF001010C00006006028218F4401001A +:100530000E0000CD000000000A0001282405000183 +:100540008F8200088F4301045043000700002821D8 +:100550008F4401000E0000CD000000008F42010416 +:10056000AF820008000028218FBF001000A01021DA +:1005700003E0000827BD001827BDFFE8AFBF001447 +:10058000AFB00010974201083043700024022000F1 +:100590001062000B286220011440002F000010217F +:1005A00024024000106200250000000024026000C8 +:1005B00010620026000010210A0001658FBF0014A0 +:1005C00027500100920200091040001A2403000184 +:1005D0003C0208008C420020104000160000182148 +:1005E0000E00049300000000960300083C0608007B +:1005F00094C64B5E8E0400188F8200209605000C76 +:1006000000031C0000661825AC440000AC45000443 +:1006100024040001AC400008AC40000CAC400010C9 +:10062000AC400014AC4000180E0004B8AC43001CF1 +:10063000000018210A000164006010210E0003254B +:10064000000000000A000164000010210E000EE905 +:1006500000000000000010218FBF00148FB00010B8 +:1006600003E0000827BD001827BDFFE0AFB2001867 +:100670003C036010AFBF001CAFB10014AFB000105E +:100680008C6450002402FF7F3C1A800000822024EA +:100690003484380C24020037AC6450003C1208004B +:1006A00026524AD8AF42000824020C80AF420024F0 +:1006B0003C1B80083C06080024C60324024010218D +:1006C0002404001D2484FFFFAC4600000481FFFDCC +:1006D000244200043C020800244204B03C0108000B +:1006E000AC224AE03C020800244202303C010800EF +:1006F000AC224AE43C020800244201743C03080096 +:100700002463032C3C040800248403D83C0508001F +:1007100024A538F03C010800AC224B403C02080004 +:10072000244202EC3C010800AC264B243C010800AA +:10073000AC254B343C010800AC234B3C3C01080089 +:10074000AC244B443C010800AC224B483C0108005F +:10075000AC234ADC3C010800AC204AE83C0108001C +:10076000AC204AEC3C010800AC204AF03C010800F7 +:10077000AC204AF43C010800AC204AF83C010800D7 +:10078000AC204AFC3C010800AC204B003C010800B6 +:10079000AC244B043C010800AC204B083C01080091 +:1007A000AC204B0C3C010800AC204B103C01080075 +:1007B000AC204B143C010800AC204B183C01080055 +:1007C000AC264B1C3C010800AC264B203C01080029 +:1007D000AC254B303C010800AC234B380E000623FF +:1007E000000000003C028000344200708C42000097 +:1007F000AF8200143C0308008C6300208F82000449 +:10080000104300043C0280000E00045BAF83000430 +:100810003C028000344600703C0308008C6300A05A +:100820003C0208008C4200A4104300048F84001492 +:100830003C010800AC2300A4A743009E8CCA000022 +:100840003C0308008C6300BC3C0208008C4200B8EA +:100850000144202300641821000040210064202B63 +:1008600000481021004410213C010800AC2300BCCA +:100870003C010800AC2200B88F5100003222000772 +:100880001040FFDCAF8A00148CC600003C05080055 +:100890008CA500BC3C0408008C8400B800CA30233E +:1008A00000A628210000102100A6302B0082202164 +:1008B00000862021322700013C010800AC2500BC45 +:1008C0003C010800AC2400B810E0001F32220002F6 +:1008D0008F420100AF4200208F420104AF4200A8C6 +:1008E0009342010B0E0000C6305000FF2E02001E86 +:1008F00054400004001010800E0000C90A000213CA +:1009000000000000005210218C4200000040F80955 +:1009100000000000104000053C0240008F4301042D +:100920003C026020AC4300143C024000AF4201385E +:100930003C0208008C420034244200013C010800C3 +:10094000AC220034322200021040000E3222000499 +:100950008F4201400E0000C6AF4200200E000295FB +:10096000000000003C024000AF4201783C02080059 +:100970008C420038244200013C010800AC220038BF +:10098000322200041040FF983C0280008F42018018 +:100990000E0000C6AF4200208F43018024020F00EA +:1009A00014620005000000008F420188A742009CED +:1009B0000A0002483C0240009362000024030050F9 +:1009C000304200FF144300083C0240000E00027B4E +:1009D00000000000544000043C0240000E000D7571 +:1009E000000000003C024000AF4201B83C02080099 +:1009F0008C42003C244200013C010800AC22003C37 +:100A00000A0001C83C0280003C0290003442000110 +:100A100000822025AF4400208F4200200440FFFECA +:100A20000000000003E00008000000003C0280001D +:100A3000344200010082202503E00008AF4400207A +:100A400027BDFFE0AFB10014AFB0001000808821D7 +:100A5000AFBF00180E00025030B000FF9362007D5F +:100A60000220202102028025A370007D8F70007477 +:100A70003C0280000E000259020280241600000988 +:100A80008FBF00188F4201F80440FFFE24020002CD +:100A9000AF5101C0A34201C43C021000AF4201F8B3 +:100AA0008FBF00188FB100148FB0001003E0000852 +:100AB00027BD002027BDFFE8AFBF0010974201848B +:100AC0008F440188304202001040000500002821B8 +:100AD0000E000FAA000000000A00028D240500018C +:100AE0003C02FF0004800005008218243C02040040 +:100AF000506200019362003E240500018FBF001088 +:100B000000A0102103E0000827BD0018A360002208 +:100B10008F4401400A00025E2405000127BDFFE862 +:100B2000AFBF0014AFB0001093620000304400FF6C +:100B300038830020388200300003182B0002102B6D +:100B40000062182410600003240200501482008008 +:100B50008FBF001493620005304200011040007CFA +:100B60008FBF0014934201482443FFFF2C6200050D +:100B7000104000788FB00010000310803C03080084 +:100B800024634A68004310218C42000000400008A2 +:100B9000000000000E0002508F4401408F70000CD6 +:100BA0008F4201441602000224020001AF62000CD1 +:100BB0000E0002598F4401408F420144145000043A +:100BC0008FBF00148FB000100A000F2027BD00183F +:100BD0008F62000C0A0003040000000097620010FE +:100BE0008F4301443042FFFF1462001A00000000EE +:100BF00024020001A76200108F4202380443001053 +:100C00008F4201403C02003F3446F0003C0560004A +:100C10003C04FFC08CA22BBC0044182400461024C6 +:100C20000002130200031D82106200390000000060 +:100C30008F4202380440FFF7000000008F4201405D +:100C4000AF4202003C021000AF4202380A00032209 +:100C50008FBF0014976200100A0003040000000018 +:100C60000E0002508F440140976200128F430144EE +:100C70003050FFFF1603000224020001A762001299 +:100C80000E0002598F4401408F42014416020004B5 +:100C90008FBF00148FB000100A00029127BD00180A +:100CA000976200120A00030400000000976200141B +:100CB0008F4301443042FFFF14620006240200010A +:100CC0008FBF00148FB00010A76200140A00124AF0 +:100CD00027BD0018976200141440001D8FBF001438 +:100CE0000A00031C00000000976200168F430144B5 +:100CF0003042FFFF1462000B240200018FBF00147A +:100D00008FB00010A76200160A000B1227BD001852 +:100D10009742007824420004A76200100A000322D0 +:100D20008FBF001497620016240300013042FFFFBA +:100D3000144300078FBF00143C0208008C4200706F +:100D4000244200013C010800AC2200708FBF001457 +:100D50008FB0001003E0000827BD001827BDFFE892 +:100D6000AFBF0014AFB000108F50010093620000BD +:100D700093430109304400FF2402001F106200A5C4 +:100D80002862002010400018240200382862000A5F +:100D90001040000C2402000B286200081040002CB8 +:100DA00000000000046000E52862000214400028F2 +:100DB00024020006106200268FBF00140A00041FE0 +:100DC0008FB000101062005E2862000B144000DC3F +:100DD0008FBF00142402000E106200738FB0001049 +:100DE0000A00041F00000000106200C028620039E1 +:100DF0001040000A2402008024020036106200CA5B +:100E000028620037104000B424020035106200C18F +:100E10008FBF00140A00041F8FB000101062002B57 +:100E20002862008110400006240200C82402003914 +:100E3000106200B48FBF00140A00041F8FB00010AE +:100E4000106200998FBF00140A00041F8FB00010B9 +:100E50003C0208008C420020104000B98FBF0014F3 +:100E60000E000493000000008F4201008F830020D9 +:100E70009745010C97460108AC6200008F420104BF +:100E80003C04080094844B5E00052C00AC62000416 +:100E90008F4201180006340000C43025AC620008FF +:100EA0008F42011C24040001AC62000C9342010A31 +:100EB00000A22825AC650010AC600014AC600018DE +:100EC000AC66001C0A0003F58FBF00143C0208004A +:100ED0008C4200201040009A8FBF00140E00049333 +:100EE00000000000974401083C03080094634B5E37 +:100EF0009745010C000422029746010E8F820020C4 +:100F0000000426000083202500052C003C030080FF +:100F100000A6282500832025AC400000AC4000043A +:100F2000AC400008AC40000CAC450010AC400014D4 +:100F3000AC400018AC44001C0A0003F42404000177 +:100F40009742010C14400015000000009362000558 +:100F50003042001014400011000000000E0002504A +:100F6000020020219362000502002021344200107B +:100F70000E000259A36200059362000024030020C2 +:100F8000304200FF1043006D020020218FBF00148B +:100F90008FB000100A000FC027BD00180000000D20 +:100FA0000A00041E8FBF00143C0208008C4200207F +:100FB000104000638FBF00140E0004930000000077 +:100FC0008F4201048F8300209744010C3C050800E8 +:100FD00094A54B5EAC6200009762002C00042400D4 +:100FE0003042FFFF008220253C02400E00A228254F +:100FF000AC640004AC600008AC60000CAC60001095 +:10100000AC600014AC600018AC65001C0A0003F46E +:10101000240400010E00025002002021A7600008F5 +:101020000E00025902002021020020210E00025E63 +:10103000240500013C0208008C42002010400040C2 +:101040008FBF00140E000493000000009742010CB3 +:101050008F8300203C05080094A54B5E000214001D +:10106000AC700000AC620004AC6000088F64004CFF +:101070003C02401F00A22825AC64000C8F62005087 +:1010800024040001AC6200108F620054AC620014B2 +:10109000AC600018AC65001C8FBF00148FB000104E +:1010A0000A0004B827BD0018240200205082002541 +:1010B0008FB000100E000F0A020020211040002007 +:1010C0008FBF0014020020218FB0001000002821E3 +:1010D0000A00025E27BD0018020020218FBF001405 +:1010E0008FB000100A00058027BD00189745010C3D +:1010F000020020218FBF00148FB000100A0005A04D +:1011000027BD0018020020218FB000100A0005C57D +:1011100027BD00189345010D020020218FB000105B +:101120000A00060F27BD0018020020218FBF0014FF +:101130008FB000100A0005EB27BD00188FBF001408 +:101140008FB0001003E0000827BD00188F4202781E +:101150000440FFFE2402000234840080AF440240B9 +:10116000A34202443C02100003E00008AF420278B0 +:101170003C04080094844B6A3C0208008C424B7487 +:101180003083FFFF000318C000431021AF42003C32 +:101190003C0208008C424B70AF4200383C020050C9 +:1011A00034420008AF4200300000000000000000A0 +:1011B000000000008F420000304200201040FFFD80 +:1011C000000000008F4204003C010800AC224B608C +:1011D0008F4204043C010800AC224B643C02002016 +:1011E000AF420030000000003C02080094424B680F +:1011F0003C03080094634B6C3C05080094A54B6EBF +:1012000024840001004310213083FFFF3C010800CB +:10121000A4224B683C010800A4244B6A1465000317 +:10122000000000003C010800A4204B6A03E0000815 +:10123000000000003C05000A27BDFFE80345282107 +:101240003C04080024844B50AFBF00100E00051D65 +:101250002406000A3C02080094424B523C0308005A +:1012600094634B6E3042000F244200030043180485 +:1012700024027FFF0043102B10400002AF83001CAC +:101280000000000D0E00042A000000003C020800CF +:1012900094424B5A8FBF001027BD001803E000088E +:1012A000A74200A23C02000A034210219443000618 +:1012B0003C02080094424B5A3C010800A4234B56C0 +:1012C000004310238F83001C00021400000214034B +:1012D0000043102B03E000083842000127BDFFE85F +:1012E000AFBF00103C02000A0342102194420006E6 +:1012F0003C010800A4224B560E00047700000000B9 +:101300005440FFF93C02000A8FBF001003E00008C0 +:1013100027BD001827BDFFE8AFBF00100E000477FF +:101320000000000010400003000000000E000485D3 +:10133000000000003C0208008C424B608FBF001090 +:1013400027430400AF4200383C0208008C424B6443 +:1013500027BD0018AF830020AF42003C3C020005CF +:10136000AF42003003E00008AF8000188F82001801 +:101370003C0300060002114000431025AF4200303C +:101380000000000000000000000000008F4200008C +:10139000304200101040FFFD27420400AF820020C1 +:1013A00003E00008AF8000183C0608008CC64B64C0 +:1013B0008F8500188F8300203C02080094424B5A0E +:1013C00027BDFFE024A50001246300202442000182 +:1013D00024C70020AFB10014AFB00010AFBF001899 +:1013E000AF850018AF8300203C010800A4224B5AAF +:1013F000309000FF3C010800AC274B6404C100089A +:101400000000882104E00006000000003C02080003 +:101410008C424B60244200013C010800AC224B602E +:101420003C02080094424B5A3C03080094634B680A +:101430000010202B004310262C42000100441025F0 +:10144000144000048F830018240200101462000F5F +:10145000000000000E0004A9241100013C03080054 +:1014600094634B5A3C02080094424B681462000398 +:10147000000000000E00042A000000001600000317 +:10148000000000000E000493000000003C03080070 +:1014900094634B5E3C02080094424B5C2463000161 +:1014A0003064FFFF3C010800A4234B5E148200035C +:1014B000000000003C010800A4204B5E1200000662 +:1014C000000000003C02080094424B5AA74200A2D0 +:1014D0000A00050B022010210E0004770000000016 +:1014E00010400004022010210E00048500000000BE +:1014F000022010218FBF00188FB100148FB0001090 +:1015000003E0000827BD00203084FFFF30A5FFFF67 +:101510000000182110800007000000003082000148 +:101520001040000200042042006518210A00051343 +:101530000005284003E000080060102110C00006EC +:1015400024C6FFFF8CA2000024A50004AC8200008A +:101550000A00051D2484000403E0000800000000C8 +:1015600010A0000824A3FFFFAC86000000000000CC +:10157000000000002402FFFF2463FFFF1462FFFA53 +:101580002484000403E0000800000000240200019D +:10159000AF62000CA7620010A7620012A7620014DD +:1015A00003E00008A76200163082007F034210218A +:1015B0003C08000E004818213C0208008C42002024 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF +:1015D000AFB10014AFB00010AFBF00200080802179 +:1015E00030B100FF0087202430D200FF1040002FD0 +:1015F00000009821AF44002C9062000024030050AA +:10160000304200FF1443000E000000003C020800BE +:101610008C4200E00202102100471024AF42002C4F +:101620003C0208008C4200E0020210213042007FA0 +:101630000342102100481021944200D43053FFFF90 +:101640000E000493000000003C02080094424B5E30 +:101650008F8300200011340000C2302500122C00BE +:101660003C02400000C2302534A50001AC700000EF +:101670008FBF0020AC6000048FB20018AC7300086C +:101680008FB10014AC60000C8FB3001CAC6500106F +:101690008FB00010AC60001424040001AC6000188E +:1016A00027BD00280A0004B8AC66001C8FBF0020CC +:1016B0008FB3001C8FB200188FB100148FB00010D0 +:1016C00003E0000827BD00289343010F2402001007 +:1016D0001062000E2865001110A0000724020012FD +:1016E000240200082405003A1062000600003021A0 +:1016F00003E0000800000000240500351462FFFC30 +:10170000000030210A000538000000008F420074FC +:1017100024420FA003E00008AF62000C27BDFFE8E1 +:10172000AFBF00100E00025E240500018FBF001045 +:1017300024020001A762001227BD00182402000144 +:1017400003E00008A360002227BDFFE0AFB1001452 +:10175000AFB00010AFBF001830B1FFFF0E00025055 +:10176000008080219362003F24030004304200FF88 +:101770001443000C02002021122000082402000A59 +:101780000E00053100000000936200052403FFFEF7 +:1017900000431024A362000524020012A362003F4C +:1017A000020020210E000259A360008116200003D0 +:1017B000020020210E0005950000000002002021FB +:1017C000322600FF8FBF00188FB100148FB00010B9 +:1017D000240500380A00053827BD002027BDFFE09A +:1017E000AFBF001CAFB20018AFB10014AFB0001013 +:1017F0000E000250008080210E0005310000000024 +:101800009362003F24120018305100FF123200038F +:101810000200202124020012A362003F936200050F +:101820002403FFFE004310240E000259A3620005AA +:10183000020020212405002016320007000030217C +:101840008FBF001C8FB200188FB100148FB0001032 +:101850000A00025E27BD00208FBF001C8FB2001857 +:101860008FB100148FB00010240500390A0005382C +:1018700027BD002027BDFFE8AFB00010AFBF0014A8 +:101880009742010C2405003600808021144000108E +:10189000304600FF0E00025000000000240200123B +:1018A000A362003F93620005344200100E00053130 +:1018B000A36200050E00025902002021020020212F +:1018C0000E00025E240500200A000604000000004D +:1018D0000E000538000000000E000250020020211A +:1018E000936200232403FF9F020020210043102461 +:1018F0008FBF00148FB00010A36200230A000259AA +:1019000027BD001827BDFFE0AFBF0018AFB100141E +:10191000AFB0001030B100FF0E00025000808021F7 +:10192000240200120E000531A362003F0E0002598E +:101930000200202102002021022030218FBF001848 +:101940008FB100148FB00010240500350A0005384F +:1019500027BD0020A380002C03E00008A380002DF9 +:101960008F4202780440FFFE8F820034AF42024073 +:1019700024020002A34202443C02100003E00008DB +:10198000AF4202783C0360008C6254003042000891 +:101990001440FFFD000000008C625408AF82000C70 +:1019A00024020052AC605408AC645430AC6254342D +:1019B0002402000803E00008AC6254003C0260000E +:1019C0008C42540030420008104000053C03600087 +:1019D0008C625400304200081440FFFD00000000FB +:1019E0008F83000C3C02600003E00008AC43540805 +:1019F00090A3000024020005008040213063003FD6 +:101A000000004821146200050000502190A2001C33 +:101A100094A3001E304900FF306AFFFFAD00000CA8 +:101A2000AD000010AD000024950200148D05001CCF +:101A30008D0400183042FFFF0049102300021100FE +:101A4000000237C3004038210086202300A2102B5B +:101A50000082202300A72823AD05001CAD04001838 +:101A6000A5090014A5090020A50A001603E0000836 +:101A7000A50A00228F4201F80440FFFE2402000262 +:101A8000AF4401C0A34201C43C02100003E00008BF +:101A9000AF4201F83C0208008C4200B427BDFFE8C9 +:101AA000AFBF001424420001AFB000103C01080099 +:101AB000AC2200B48F4300243C02001F30AA00FF78 +:101AC0003442FF8030D800FF006280240080F8217B +:101AD00030EF00FF1158003B01405821240CFF80DB +:101AE0003C19000A3163007F000310C00003194055 +:101AF000006218213C0208008C4200DC25680001CD +:101B0000310D007F03E21021004310213043007F9C +:101B100003431821004C102400794821AF420024CF +:101B20008D220024016C1824006C7026AD22000C5C +:101B30008D220024310800FFAD22001095220014F0 +:101B4000952300208D27001C3042FFFF3063FFFFEC +:101B50008D2600180043102300021100000227C345 +:101B60000040282100C4302300E2102B00C23023A3 +:101B700000E53823AD27001CAD2600189522002073 +:101B8000A522001495220022154B000AA52200165A +:101B90008D2300248D220008254600013145008058 +:101BA0001462000430C4007F108F000238AA008045 +:101BB00000C0502151AF000131C800FF1518FFC906 +:101BC000010058218F8400343082007F03421821A5 +:101BD0003C02000A006218212402FF8000822024B7 +:101BE000AF440024A06A0079A06A00838C62005090 +:101BF0008F840034AC6200708C6500743C027FFFFF +:101C00003442FFFF00A228240E00066BAC6500746E +:101C1000AF5000248FBF00148FB0001003E0000805 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 +:101C4000AFBF003CAFB60030AFB40028AFB3002444 +:101C50008F4500248F4600288F43002C3C02001F34 +:101C60003442FF800062182400C230240080A82182 +:101C7000AFA3001400A2F0240E00062FAFA60010A0 +:101C80003C0208008C4200E02410FF8003608821A1 +:101C900002A2102100501024AF4200243C02080090 +:101CA0008C4200E002A210213042007F0342182142 +:101CB0003C02000A00629021924200D293630084A9 +:101CC000305700FF306300FF24020001106200342F +:101CD000036020212402000214620036000000008C +:101CE0000E001216024028219223008392220083C4 +:101CF0003063007F3042007F000210C000031940B3 +:101D0000006218213C0208008C4200DC02A2102173 +:101D10000043382100F01024AF42002892250078BB +:101D20009224008330E2007F034218213C02000C21 +:101D300014850007006280212402FFFFA24200F107 +:101D40002402FFFFA64200F20A0007272402FFFF39 +:101D500096020020A24200F196020022A64200F262 +:101D60008E020024AE4200F492220083A24200F0D0 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863 +:101D80008E220050AE4201008E4200CCAE420104D1 +:101D9000922200853042003F0A0007823442004010 +:101DA0000E00123902402821922200850A00078283 +:101DB0003042003F936200852403FFDF3042003F42 +:101DC000A36200859362008500431024A36200850E +:101DD0009363008393620078307400FF304200FF09 +:101DE00010540036240AFF803C0C000C3283007F24 +:101DF000000310C000031940006218213C020800D3 +:101E00008C4200DC268800013109007F02A21021EB +:101E10000043382130E2007F0342182100EA1024F9 +:101E2000AF420028006C80218E020024028A182410 +:101E3000006A5826AE02000C8E020024310800FF12 +:101E4000AE02001096020014960300208E07001CBC +:101E50003042FFFF3063FFFF8E060018004310235F +:101E600000021100000227C30040282100C43023D3 +:101E700000E2102B00C2302300E53823AE07001C1F +:101E8000AE06001896020020A60200149602002258 +:101E9000A602001692220079304200FF105400077B +:101EA0000000000051370001316800FF92220078E5 +:101EB000304200FF1448FFCD0100A0219222008390 +:101EC000A22200798E2200500A0007E2AE220070A2 +:101ED000A22200858E22004C2405FF80AE42010C18 +:101EE0009222008534420020A2220085924200D135 +:101EF0003C0308008C6300DC305400FF3C02080007 +:101F00008C4200E400143140001420C002A31821C8 +:101F100000C4202102A210210064382100461021B3 +:101F20000045182400E52824AF450028AF43002CC5 +:101F30003042007F924400D030E3007F03422821EA +:101F4000034318213C02000C006280213C02000E79 +:101F5000309600FF00A298211296002A000000008F +:101F60008E02000C02002021026028211040002572 +:101F7000261000280E00064A000000009262000DA4 +:101F800026830001307400FF3042007FA262000D02 +:101F90002404FF801697FFF0267300203C020800FF +:101FA0008C4200DC0000A02102A210210044102479 +:101FB000AF4200283C0208008C4200E43C030800C9 +:101FC0008C6300DC02A2102100441024AF42002CDC +:101FD0003C0208008C4200E402A318213063007F19 +:101FE00002A210213042007F034220210343182126 +:101FF0003C02000C006280213C02000E0A0007A493 +:10200000008298218E4200D8AE2200508E4200D825 +:10201000AE22007092250083924600D19223008365 +:10202000924400D12402FF8000A228243063007F64 +:10203000308400FF00A628250064182A10600002E2 +:1020400030A500FF38A50080A2250083A2250079D5 +:102050000E00063D000000009222007E02A020211A +:10206000A222007A8E2300743C027FFF3442FFFFDD +:10207000006218240E00066BAE2300748FA20010BD +:10208000AF5E00248FBF003CAF4200288FBE0038F7 +:102090008FA200148FB700348FB600308FB5002C9C +:1020A0008FB400288FB300248FB200208FB1001CA2 +:1020B0008FB0001827BD004003E00008AF42002C9D +:1020C00090A2000024420001A0A200003C030800EE +:1020D0008C6300F4304200FF1443000F0080302175 +:1020E000A0A000003C0208008C4200E48F84003471 +:1020F000008220213082007F034218213C02000C24 +:10210000006218212402FF8000822024ACC300005A +:1021100003E00008AF4400288C8200002442002025 +:1021200003E00008AC82000094C200003C080800F4 +:10213000950800CA30E7FFFF008048210102102106 +:10214000A4C2000094C200003042FFFF00E2102B46 +:1021500054400001A4C7000094A200003C03080002 +:102160008C6300CC24420001A4A2000094A20000D1 +:102170003042FFFF544300078F8600280107102BD1 +:10218000A4A000005440000101003821A4C70000B1 +:102190008F8600288CC4001CAF44003C94A2000031 +:1021A0008F43003C3042FFFF000210C00062182144 +:1021B000AF43003C8F42003C008220231880000483 +:1021C000000000008CC200180A00084324420001ED +:1021D0008CC20018AF4200383C020050344200105C +:1021E000AF420030000000000000000000000000CE +:1021F0008F420000304200201040FFFD0000000030 +:102200008F420404AD2200048F420400AD2200007E +:102210003C020020AF42003003E000080000000054 +:1022200027BDFFE0AFB20018AFB10014AFB000108F +:10223000AFBF001C94C2000000C080213C12080007 +:10224000965200C624420001A60200009603000038 +:1022500094E2000000E03021144300058FB100300B +:102260000E000818024038210A000875000000001E +:102270008C8300048C820004244200400461000727 +:10228000AC8200048C8200040440000400000000C2 +:102290008C82000024420001AC8200009602000003 +:1022A0003042FFFF50520001A600000096220000BD +:1022B00024420001A62200008F82002896230000FD +:1022C00094420016144300048FBF001C2402000136 +:1022D000A62200008FBF001C8FB200188FB100141F +:1022E0008FB0001003E0000827BD00208F89002870 +:1022F00027BDFFE0AFBF00188D220028274804004B +:1023000030E700FFAF4200388D22002CAF8800304C +:10231000AF42003C3C020005AF420030000000002C +:1023200000000000000000000000000000000000AD +:10233000000000008C82000C8C82000CAD020000BA +:102340008C820010AD0200048C820018AD020008DF +:102350008C82001CAD02000C8CA20014AD02001097 +:102360008C820020AD02001490820005304200FFF4 +:1023700000021200AD0200188CA20018AD02001C71 +:102380008CA2000CAD0200208CA20010AD02002433 +:102390008CA2001CAD0200288CA20020AD02002CF3 +:1023A000AD060030AD000034978300263402FFFFF5 +:1023B00014620002006020213404FFFF10E00011CD +:1023C000AD04003895230036952400362402000120 +:1023D0003063FFFF000318C20069182190650040B8 +:1023E000308400070082100400451025A0620040E0 +:1023F0008F820028944200563042FFFF0A0008DC1A +:10240000AD02003C952300369524003624020001DD +:102410003063FFFF000318C2006918219065004077 +:1024200030840007008210040002102700451024A9 +:10243000A0620040AD00003C000000000000000071 +:10244000000000003C02000634420040AF42003071 +:102450000000000000000000000000008F420000AB +:10246000304200101040FFFD8F860028AF880030FA +:1024700024C2005624C7003C24C4002824C50032CE +:1024800024C600360E000856AFA200108FBF0018F9 +:1024900003E0000827BD00208F8300243C060800CD +:1024A0008CC600E88F82003430633FFF0003198040 +:1024B00000461021004310212403FF803046007F96 +:1024C00000431024AF420028034618213C02000CB0 +:1024D0000062302190C2000D30A500FF00003821BD +:1024E00034420010A0C2000D8F8900288F8A00247A +:1024F00095230036000A13823048000324020001AD +:10250000A4C3000E1102000B2902000210400005B6 +:10251000240200021100000C240300010A0009201B +:102520000000182111020006000000000A00092026 +:10253000000018218CC2002C0A000920244300014D +:102540008CC20014244300018CC200180043102BDD +:1025500050400009240700012402002714A20003B0 +:10256000000000000A00092C240700019522003E0B +:1025700024420001A522003E000A138230430003DA +:102580002C62000210400009008028211460000421 +:102590000000000094C200360A00093C3046FFFFEC +:1025A0008CC600380A00093C008028210000302138 +:1025B0003C04080024844B780A00088900000000CD +:1025C000274901008D22000C9523000601202021BF +:1025D000000216023046003F3063FFFF240200274E +:1025E00000C0282128C7002810C2000EAF83002495 +:1025F00010E00008240200312402002110C200096A +:102600002402002510C200079382002D0A00095BF6 +:102610000000000010C200059382002D0A00095B33 +:10262000000000000A0008F4000000000A0006266E +:102630000000000095230006912400058D25000C64 +:102640008D2600108D2700188D28001C8D29002054 +:10265000244200013C010800A4234B7E3C010800F9 +:10266000A0244B7D3C010800AC254B843C010800B4 +:10267000AC264B883C010800AC274B903C0108007D +:10268000AC284B943C010800AC294B9803E00008AF +:10269000A382002D8F87002827BDFFC0AFB3003471 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 +:1026B0003C0208008C4200D094E3003030B0FFFFB1 +:1026C000005010073045FFFF3063FFFF00C0982126 +:1026D000A7A200103C110800963100C614A3000602 +:1026E0003092FFFF8CE2002424420030AF42003CD5 +:1026F0000A0009948CE2002094E200323042FFFF8D +:1027000054A2000827A400188CE2002C24420030B8 +:10271000AF42003C8CE20028AF4200380A0009A218 +:102720008F84002827A5001027A60020022038212A +:102730000E000818A7A000208FA200182442003025 +:10274000AF4200388FA2001CAF42003C8F840028AB +:102750003C020005AF42003094820034274304005D +:102760003042FFFF0202102B14400007AF830030FD +:1027700094820054948300340202102100431023F9 +:102780000A0009B63043FFFF94830054948200345A +:102790000223182100501023006218233063FFFF2A +:1027A000948200163042FFFF144300030000000033 +:1027B0000A0009C424030001948200163042FFFF7E +:1027C0000043102B104000058F82003094820016C9 +:1027D000006210233043FFFF8F820030AC530000B3 +:1027E000AC400004AC520008AC43000C3C020006B4 +:1027F00034420010AF420030000000000000000032 +:10280000000000008F420000304200101040FFFD29 +:10281000001018C2006418219065004032040007BF +:10282000240200018FBF00388FB300348FB2003014 +:102830008FB1002C8FB000280082100400451025B5 +:1028400027BD004003E00008A062004027BDFFA8AC +:10285000AFB60050AFB5004CAFB40048AFB30044C2 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2 +:102870008C9000003C0208008C4200E88F860034F7 +:10288000960300022413FF8000C2302130633FFF13 +:102890000003198000C3382100F3102490B2000017 +:1028A000AF42002C9203000230E2007F034230214D +:1028B0003C02000E00C28821306300C024020040A8 +:1028C0000080A82100A0B021146200260000A021F1 +:1028D0008E3400388E2200181440000224020001B9 +:1028E000AE2200189202000D304200201440001564 +:1028F0008F8200343C0308008C6300DC001238C077 +:10290000001231400043102100C730210046382119 +:1029100030E300073C02008030E6007800C230253A +:102920000343182100F31024AF4208002463090078 +:10293000AF4608108E2200188C6300080043102157 +:10294000AE2200188E22002C8E2300182442000193 +:102950000062182B1060003D000000000A000A7899 +:1029600000000000920300022402FFC00043102474 +:10297000304200FF1440000524020001AE2200187E +:10298000962200360A000A613054FFFF8E2200149E +:1029900024420001AE22001892020000000216003C +:1029A0000002160304410029000000009602000204 +:1029B00027A4001000802821A7A20016960200027A +:1029C00024070001000030213042FFFFAF820024C5 +:1029D0000E000889AFA0001C960300023C0408000A +:1029E0008C8400E88F82003430633FFF000319803D +:1029F00000441021004310213043007F3C05000CAF +:102A00000053102403431821AF4200280065182109 +:102A10009062000D001221403042007FA062000D44 +:102A20003C0308008C6300E48F82003400431021D3 +:102A30000044382130E2007F03421021004510217C +:102A400000F31824AF430028AEA200009222000D2C +:102A5000304200101040001302A020218F83002874 +:102A60008EA40000028030219462003E2442FFFFC9 +:102A7000A462003E948400029625000E3084FFFF7D +:102A80000E00097330A5FFFF8F82002894430034A5 +:102A90009622000E1443000302A02021240200010C +:102AA000A382002C02C028210E0007FE00000000B7 +:102AB0008FBF00548FB600508FB5004C8FB40048C4 +:102AC0008FB300448FB200408FB1003C8FB000380C +:102AD00003E0000827BD00588F82002827BDFFD0E3 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA +:102AF000AFB1001CAFB00018904400D0904300D19B +:102B00000000A021309200FFA3A30010306300FF5B +:102B10008C5100D88C5300DC1072002B2402000171 +:102B20003C0308008C6300E493A400108F820034FF +:102B30002406FF800004214000431021004410219E +:102B40003043007F00461024AF4200280343182181 +:102B50003C02000C006218218C62000427A40014BF +:102B600027A50010022280210270102304400015C6 +:102B7000AFA300149062000D00C21024304200FF89 +:102B800014400007020088219062000D344200408A +:102B90000E0007FEA062000D0A000ABD93A20010FD +:102BA0000E0009E1241400018F830028AC7000D8C6 +:102BB00093A20010A06200D193A200101452FFD87B +:102BC0000000000024020001168200048FBF002CC8 +:102BD0000E000626000000008FBF002C8FB40028D6 +:102BE0008FB300248FB200208FB1001C8FB000186B +:102BF00003E0000827BD003027BDFFD8AFB3001C9D +:102C0000AFB20018AFB10014AFB00010AFBF0020DA +:102C10000080982100E0802130B1FFFF0E00049376 +:102C200030D200FF000000000000000000000000A3 +:102C30008F820020AC510000AC520004AC5300085D +:102C4000AC40000CAC400010AC400014AC4000188C +:102C50003C03080094634B5E02038025AC50001CCB +:102C6000000000000000000000000000240400013B +:102C70008FBF00208FB3001C8FB200188FB10014DB +:102C80008FB000100A0004B827BD002827BDFFE858 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B +:102CA0000080802124020C80AF420024000000003C +:102CB0000000000000000000000000000000000014 +:102CC0000E000ACC000000003C040800248400E050 +:102CD0008C8200002403FF808FBF001402021021A9 +:102CE00000431024AF4200248C8200003C03000A01 +:102CF000020280213210007F035010218FB000109B +:102D00000043102127BD001803E00008AF8200280F +:102D100027BDFFE8AFBF00108F4401403C0308000F +:102D20008C6300E02402FF80AF840034008318210C +:102D300000621024AF4200243C02000803424021FC +:102D4000950500023063007F3C02000A034318210E +:102D50000062182130A5FFFF3402FFFF0000302180 +:102D60003C07602010A20006AF8300282402FFFF6A +:102D7000A5020002946500D40E000AF130A5FFFF01 +:102D80008FBF001024020C8027BD001803E000084C +:102D9000AF4200243C020008034240219502000299 +:102DA0003C0A0800954A00C63046FFFF14C00007E1 +:102DB0003402FFFF8F8200288F8400343C0760209C +:102DC000944500D40A000B5A30A5FFFF10C200241E +:102DD0008F87002894E2005494E400163045FFFFEA +:102DE00000A6102300A6182B3089FFFF10600004F6 +:102DF0003044FFFF00C51023012210233044FFFFA1 +:102E0000008A102B1040000C012A1023240200011C +:102E1000A50200162402FFFFA502000294E500D4DB +:102E20008F8400340000302130A5FFFF3C07602074 +:102E30000A000AF1000000000044102A10400008B7 +:102E4000000000009502001630420001104000040E +:102E5000000000009742007E24420014A5020016E4 +:102E600003E00008000000008F84002827BDFFE079 +:102E7000AFBF0018948200349483003E1060001AA3 +:102E80003048FFFF9383002C2402000114620027C6 +:102E90008FBF00188F820028000818C23108000771 +:102EA000006218212447003A244900542444002099 +:102EB000244500302446003490620040304200FF38 +:102EC0000102100730420001104000168FBF0018A9 +:102ED0000E000856AFA900108F82002894420034DB +:102EE0000A000B733048FFFF94830036948200344D +:102EF0001043000E8FBF001894820036A482003465 +:102F000094820056A48200548C82002CAC8200244F +:102F100094820032A48200309482003CA482003A61 +:102F20008FBF00180A000B3327BD002003E0000804 +:102F300027BD002027BDFFE8AFBF00108F4A01006A +:102F40003C0508008CA500E03C02080090424B8440 +:102F50003C0C0800958C4B7E01452821304B003FEE +:102F600030A2007F03424021396900323C02000A4E +:102F70003963003F2C630001010240212D2900012B +:102F80002402FF8000A2282401234825AF8A0034B0 +:102F900000801821AF450024000030210080282146 +:102FA00024070001AF8800283C04080024844B78E3 +:102FB000AF8C002415200007A380002D24020020E0 +:102FC0005562000F006020213402FFFF5582000C83 +:102FD000006020212402002015620005000000008E +:102FE0008C6300142402FFFF106200070000000041 +:102FF0000E000889000000000A000BD0000000004D +:103000000E0008F4016028210E000B68000000008B +:103010008FBF001024020C8027BD001803E00008B9 +:10302000AF4200243C0208008C4200E027BDFFA014 +:10303000AFB1003C008210212411FF80AFBE0058C8 +:10304000AFB70054AFB20040AFB00038AFBF005CC4 +:10305000AFB60050AFB5004CAFB40048AFB30044BA +:10306000005110248F4800248F4900288F470028E2 +:10307000AF4200243C0208008C4200E00080902116 +:1030800024060006008210213042007F03421821EE +:103090003C02000A006280213C02001F3442FF8093 +:1030A00000E2382427A40010260500F00122F024B5 +:1030B0000102B8240E00051DAFA700308FA2001832 +:1030C000AE0200C48FA2001CAE0200C88FA2002472 +:1030D000AE0200CC93A40010920300D12402FF8022 +:1030E0000082102400431025304900FF3083007F08 +:1030F0003122007F0062102A10400004000310C03B +:1031000001311026304900FF000310C000031940B0 +:10311000006218213C0208008C4200DC920400D2BC +:10312000024210210043102100511024AF42002818 +:1031300093A300103063007F000310C00003194008 +:10314000006218213C0208008C4200DC024210217F +:10315000004310213042007F034218213C02000C42 +:10316000006240218FA300142402FFFF1062003090 +:10317000309500FF93A2001195030014304400FF26 +:103180003063FFFF0064182B1060000D000000008A +:10319000950400148D07001C8D0600183084FFFF75 +:1031A00000442023000421000000102100E4382105 +:1031B00000E4202B00C230210A000C4A00C4302158 +:1031C000950400148D07001C8D0600183084FFFF45 +:1031D000008220230004210000001021008018211B +:1031E00000C2302300E4202B00C4302300E3382346 +:1031F000AD07001CAD06001893A20011A502001433 +:1032000097A20012A50200168FA20014AD020010B2 +:103210008FA20014AD02000C93A20011A5020020A1 +:1032200097A20012A50200228FA20014AD02002472 +:103230002406FF80024610243256007FAF4200244D +:10324000035618213C02000A006280218E02004CC5 +:103250008FA200203124007F000428C0AE0200505D +:103260008FA200200004214000852821AE020070BA +:1032700093A2001001208821A202008393A20010D3 +:10328000A2020079920200853042003FA20200852E +:103290003C0208008C4200DC024210210045102153 +:1032A00000461024AF42002C3C0208008C4200E48F +:1032B0003C0308008C6300DC024210210044102112 +:1032C00000461024AF4200283C0208008C4200E473 +:1032D00002431821006518210242102100441021E8 +:1032E0003042007F3063007F93A50010034220210D +:1032F000034318213C02000E006240213C02000CF6 +:1033000010B1008C008248213233007F1660001912 +:103310002404FF803C0208008C4200DC02421021A1 +:1033200000441024AF42002C3C0208008C4200E410 +:103330003C0308008C6300DC02421021004410248E +:10334000AF4200283C0208008C4200E402431821EE +:103350003063007F024210213042007F034220216F +:10336000034318213C02000E006240213C02000C85 +:10337000008248219124000D2414FF8000001021B8 +:1033800000942025A124000D950400029505001449 +:103390008D07001C3084FFFF30A5FFFF8D0600184D +:1033A000008520230004210000E4382100C23021E0 +:1033B00000E4202B00C43021AD07001CAD0600182E +:1033C00095020002A5020014A50000168D02000857 +:1033D000AD0200108D020008AD02000C9502000243 +:1033E000A5020020A50000228D020008AD020024E5 +:1033F0009122000D30420040104000422622000180 +:103400003C0208008C4200E0A3B300283C10000AF4 +:103410000242102100541024AF4200243C02080054 +:103420008C4200E0A380002C27A4002C0242102133 +:103430003042007F03421821007018218C6200D8AE +:103440008D26000427A50028AFA9002C00461021D6 +:10345000AC6200D80E0009E1AF83002893A30028D6 +:103460008F8200280E000626A04300D10E000B68B4 +:103470000000000002541024AF4200243C02080067 +:103480008C4200DC00132940001320C000A420213E +:10349000024210210044102100541024AF42002C9D +:1034A0003C0208008C4200E43C0308008C6300DC12 +:1034B00003563021024210210045102100541024EF +:1034C000AF4200283C0208008C4200E4024318216D +:1034D0000064182102421021004510213042007F73 +:1034E0003063007F03422021034318213C02000E79 +:1034F000006240213C02000C00D080210082482163 +:10350000262200013043007F14750005304400FF7F +:103510002403FF800223102400431026304400FFC0 +:1035200093A2001000808821250800281444FF760B +:103530002529002093A400108FA300142402FFFF6C +:103540001062000A308900FF2482000124830001F8 +:103550003042007F14550005306900FF2403FF80CE +:103560000083102400431026304900FF92020078A7 +:10357000305300FF11330032012088213C02080043 +:103580008C4200DC3225007F000520C00005294068 +:1035900000A42021024210212406FF8000441021B3 +:1035A00000461024AF42002C3C0308008C6300DC72 +:1035B0003C0208008C4200E4024318210242102120 +:1035C0000045102100641821004610243063007F5C +:1035D000AF420028034318213C02000E0062402144 +:1035E0003C0208008C4200E48D06000C0100202102 +:1035F00002421021004510213042007F0342182171 +:103600003C02000C0062482110C0000D012028215E +:103610000E00064A000000002402FF800222182447 +:1036200026240001006228263082007F1455000203 +:10363000308300FF30A300FF1473FFD000608821A7 +:103640008E0300743C027FFF3442FFFF00621824A7 +:10365000AE0300740E00066B02402021AF57002419 +:103660008FA20030AF5E00288FBF005C8FBE005875 +:103670008FB700548FB600508FB5004C8FB4004800 +:103680008FB300448FB200408FB1003C8FB0003840 +:1036900027BD006003E00008AF42002C27BDFFD823 +:1036A000AFB1001CAFBF0020AFB000182751018898 +:1036B000922200032408FF803C03000A3047007F69 +:1036C000A3A700108F4601803C0208008C4200E056 +:1036D000AF86003400C2282100A81024AF42002485 +:1036E0009224000030A2007F0342102100431021E9 +:1036F000AF8200283084007F24020002148200255B +:10370000000719403C0208008C4200E400C210216E +:103710000043282130A2007F0342182100A8102472 +:10372000AF4200283C02000C006218219062000D9C +:10373000AFA3001400481025A062000D8FA3001451 +:103740009062000D304200405040006A8FBF002060 +:103750008F860028A380002C27A400148CC200D8D8 +:103760008C63000427A50010004310210E0009E11E +:10377000ACC200D893A300108F8200280E0006264A +:10378000A04300D10E000B68000000000A000E0BE1 +:103790008FBF00200E00062F00C020210E00063D26 +:1037A000000000003C020008034280219223000137 +:1037B0009202007B1443004F8FBF00209222000032 +:1037C0003044007F24020004108200172882000584 +:1037D00010400006240200052402000310820007A6 +:1037E0008FB1001C0A000E0C0000000010820012B5 +:1037F0008FBF00200A000E0C8FB1001C92050083C1 +:10380000920600788E0700748F84003430A500FF84 +:1038100000073E0230C600FF0E00067330E7007F4F +:103820000A000E0B8FBF00200E000BD78F840034D0 +:103830000A000E0B8FBF002024020C80AF42002430 +:103840009202003E30420040104000200000000084 +:103850009202003E00021600000216030441000618 +:10386000000000008F8400340E0005A024050093A2 +:103870000A000E0B8FBF00209202003F24030018A5 +:10388000304200FF1443000C8F84003424050039BB +:103890000E000538000030210E0002508F840034E5 +:1038A00024020012A202003F0E0002598F8400344D +:1038B0000A000E0B8FBF0020240500360E000538CD +:1038C000000030210A000E0B8FBF00200E000250B6 +:1038D0008F8400349202000534420020A2020005C9 +:1038E0000E0002598F8400340E000FC08F84003404 +:1038F0008FBF00208FB1001C8FB0001824020C80F5 +:1039000027BD002803E00008AF42002427BDFFE8E0 +:10391000AFB00010AFBF001427430100946200084D +:103920000002140000021403044100020000802180 +:103930002410000194620008304200801040001AF8 +:10394000020010219462000830422000104000164E +:10395000020010218C6300183C021C2D344219ED2A +:10396000240600061062000F3C0760213C0208009C +:103970008C4200D4104000078F8200288F830028DB +:10398000906200623042000F34420040A062006248 +:103990008F8200288F840034944500D40E000AF1F1 +:1039A00030A5FFFF020010218FBF00148FB0001060 +:1039B00003E0000827BD001827BDFFE0AFB10014E9 +:1039C000AFB00010A380002CAFBF00188F450100DE +:1039D0003C0308008C6300E02402FF80AF850034C4 +:1039E00000A318213064007F0344202100621824C2 +:1039F0003C02000A00822021AF430024275001002E +:103A00008E0200148C8300DCAF8400280043102356 +:103A100018400004000088218E0200140E000A8461 +:103A2000AC8200DC9202000B24030002304200FF53 +:103A30001443002F0000000096020008304300FFEE +:103A40002402008214620005240200840E00093E54 +:103A5000000000000A000E97000000001462000938 +:103A6000240200818F8200288F8400343C0760216B +:103A7000944500D49206000530A5FFFF0A000E868B +:103A800030C600FF14620027000000009202000A06 +:103A9000304300FF306200201040000430620040DC +:103AA0008F8400340A000E82240600401040000477 +:103AB000000316008F8400340A000E8224060041A1 +:103AC00000021603044100178F84003424060042CC +:103AD0008F8200283C076019944500D430A5FFFF71 +:103AE0000E000AF1000000000A000E97000000001E +:103AF0009202000B24030016304200FF1043000620 +:103B0000000000009202000B24030017304200FF67 +:103B100014430004000000000E000E11000000001D +:103B2000004088210E000B68000000009202000A8D +:103B3000304200081040000624020C808F850028C7 +:103B40003C0400080E0011EE0344202124020C80E6 +:103B5000AF4200248FBF0018022010218FB0001048 +:103B60008FB1001403E0000827BD002027BDFFE847 +:103B7000AFBF0014AFB000108F5000243C0308000A +:103B80008C6300E08F4501002402FF8000A3182110 +:103B90003064007F03442021006218243C02000AA4 +:103BA00000822021AF850034AF4300249082006260 +:103BB000AF8400283042000F34420050A0820062DF +:103BC0003C02001F3442FF800E00062602028024C1 +:103BD000AF5000248FBF00148FB0001003E0000826 +:103BE00027BD00183C0208008C4200201040001D38 +:103BF0002745010090A300093C0200080342202150 +:103C000024020018546200033C0200080A000ED887 +:103C10002402000803422021240200161462000539 +:103C20002402001724020012A082003F0A000EE2C4 +:103C300094A700085462000694A700089362000548 +:103C40002403FFFE00431024A362000594A700088C +:103C500090A6001B8CA4000094A500060A000ACCC4 +:103C600000073C0003E000080000000027440100BA +:103C700094820008304500FF38A3008238A20084F7 +:103C80002C6300012C420001006218251060000620 +:103C9000240200839382002D1040000D00000000DC +:103CA0000A000B9B0000000014A2000524A2FF8064 +:103CB0008F4301043C02602003E00008AC43001481 +:103CC000304200FF2C420002104000032402002278 +:103CD0000A000E3C0000000014A2000300000000D7 +:103CE0000A000EA9000000000A000EC70000000034 +:103CF0009363007E9362007A144300090000202140 +:103D00009362000024030050304200FF144300047B +:103D1000240400019362007E24420001A362007E1D +:103D200003E00008008010218F4201F80440FFFEEC +:103D300024020002AF4401C0A34201C43C021000AF +:103D400003E00008AF4201F827BDFFE8AFBF001055 +:103D50009362003F2403000A304200FF14430046F0 +:103D6000000000008F6300548F62004C1062007DE1 +:103D7000036030219362000024030050304200FFB2 +:103D80001443002F000000008F4401403C02080053 +:103D90008C4200E02403FF800082102100431024A5 +:103DA000AF4200243C0208008C4200E08F650054C2 +:103DB0003C03000A008220213084007F034410214C +:103DC00000431021AC4501089762003C8F63004C12 +:103DD0003042FFFF0002104000621821AF63005C18 +:103DE0008F6300548F64004C9762003C006418237A +:103DF0003042FFFF00031843000210400043102A26 +:103E000010400006000000008F6200548F63004CD9 +:103E1000004310230A000F58000210439762003C31 +:103E20003042FFFF00021040ACC2006424020001D7 +:103E3000A0C0007CA0C2008424020C80AF420024F9 +:103E40000E000F0A8F440140104000478FBF001042 +:103E50008F4301408F4201F80440FFFE240200021C +:103E6000AF4301C0A34201C43C021000AF4201F8BD +:103E70000A000FA88FBF00109362003F24030010B8 +:103E8000304200FF14430004000000008F44014052 +:103E90000A000F94000028219362003F24030016BB +:103EA000304200FF1443000424020014A362003FC8 +:103EB0000A000FA2000000008F62004C8F630050C8 +:103EC00000431023044100288FBF0010936200813B +:103ED00024420001A3620081936200812C4200040D +:103EE00014400010000000009362003F240300040F +:103EF000304200FF14430006000000008F440140E0 +:103F00008FBF0010240500930A0005A027BD0018EC +:103F10008F440140240500938FBF00100A00060F54 +:103F200027BD00188F4401400E0002500000000021 +:103F30008F6200542442FFFFAF6200548F62005032 +:103F40002442FFFFAF6200500E0002598F4401402F +:103F50008F4401408FBF0010240500040A00025E58 +:103F600027BD00188FBF001003E0000827BD001810 +:103F70008F4201889363007E00021402304400FFE8 +:103F8000306300FF1464000D0000000093620080A5 +:103F9000304200FF1044000900000000A3640080CC +:103FA0009362000024030050304200FF14430004D9 +:103FB000000000000A0006D78F440180A36400803F +:103FC00003E000080000000027BDFFE8AFB00010CC +:103FD000AFBF00149362000524030030304200306C +:103FE00014430089008080213C0208008C4200209C +:103FF00010400080020020210E0004930000000009 +:104000008F850020ACB000009362003E9363003FB8 +:10401000304200FF00021200306300FF0043102511 +:10402000ACA2000493620082000216000002160394 +:1040300004410005000000003C0308008C630048B8 +:104040000A000FE6000000009362003E304200408C +:10405000144000030000182193620081304300FFE8 +:104060009362008200031E00304200FF0002140031 +:1040700000621825ACA300088F620040ACA2000CBF +:104080008F620048ACA200108F62004CACA20014FA +:104090008F6200508F63004C0043102304410003E3 +:1040A000000000000A000FFA8F62004C8F6200507F +:1040B000ACA200183C02080094424B5E3C03C00BCB +:1040C00000002021004310250E0004B8ACA2001C03 +:1040D0008F6200548F840020AC8200008F620058F1 +:1040E000AC8200048F62005CAC8200088F620060CA +:1040F0008F43007400431021AC82000C8F62006477 +:10410000AC820010976300689762006A00031C008D +:104110003042FFFF00621825AC83001493620082D6 +:1041200024030080304200FF14430003000000001D +:104130000A00102EAC8000188F63000C24020001CE +:104140001062000E2402FFFF9362003E30420040E6 +:104150001440000A2402FFFF8F63000C8F4200749A +:10416000006218233C020800006210241440000280 +:10417000000028210060282100051043AC820018AF +:104180003C02080094424B5E3C03C00C000020211E +:10419000004310258F8300200E0004B8AC62001C81 +:1041A0008F6200188F8300203C05080094A54B5EA9 +:1041B00024040001AC620000AC6000048F66006C57 +:1041C0003C02400D00A22825AC6600088F6200DC8E +:1041D000AC62000CAC600010936200050002160097 +:1041E000AC620014AC6000180E0004B8AC65001C92 +:1041F000020020218FBF00148FB00010A3600005C3 +:104200000A00042127BD00188FBF00148FB00010D2 +:1042100003E0000827BD00189742007C30C600FF6D +:10422000A08600843047FFFF2402000514C2000B63 +:1042300024E3465090A201122C42000710400007D0 +:1042400024E30A0090A30112240200140062100467 +:1042500000E210210A0010663047FFFF3067FFFFC1 +:1042600003E00008A4870014AC87004C8CA201086E +:104270000080402100A0482100E2102330C600FF4A +:104280001840000393AA001324E2FFFCACA201082B +:1042900030C2000110400008000000008D020050F4 +:1042A00000E2102304410013240600058D0200548F +:1042B00010E20010000000008D02005414E2001A09 +:1042C000000000003C0208008C4200D83042002070 +:1042D0001040000A2402000191030078910200833B +:1042E000144300062402000101002021012028219E +:1042F000240600040A00105400000000A1000084FD +:1043000011400009A50200148F4301008F4201F8FB +:104310000440FFFE24020002AF4301C0A34201C4D7 +:104320003C021000AF4201F803E00008000000006A +:1043300027BDFFE88FA90028AFBF001000804021F3 +:1043400000E918231860007330C600FFA080007CCD +:10435000A08000818CA2010800E210230440004DDF +:10436000000000008C8200509483003C8C84006428 +:10437000004748233063FFFF012318210083202BCF +:1043800010800004000000008D0200640A0010B7D5 +:1043900000E210219502003C3042FFFF0122102173 +:1043A00000E21021AD02005C9502003C8D03005C30 +:1043B0003042FFFF0002104000E210210043102BAA +:1043C00010400003000000000A0010C68D02005CCF +:1043D0009502003C3042FFFF0002104000E2102135 +:1043E000AD02005CA1000084AD07004C8CA2010866 +:1043F00000E210231840000224E2FFFCACA20108F6 +:1044000030C200011040000A000000008D02005080 +:1044100000E2102304410004010020218D02005419 +:1044200014E20003000000000A0010E82406000562 +:104430008D02005414E200478FBF00103C020800B8 +:104440008C4200D8304200201040000A24020001B3 +:1044500091030078910200831443000624020001B6 +:1044600001002021240600048FBF00100A00105410 +:1044700027BD0018A1000084A50200148F4301008D +:104480008F4201F80440FFFE240200020A00110DD1 +:10449000000000008C82005C004910230043102BB8 +:1044A00054400001AC87005C9502003C3042FFFFA5 +:1044B0000062102B14400007240200029502003C09 +:1044C0008D03005C3042FFFF00621821AD03005CE9 +:1044D00024020002AD07004CA10200840E000F0A66 +:1044E0008F4401001040001B8FBF00108F4301005C +:1044F0008F4201F80440FFFE24020002AF4301C0D6 +:10450000A34201C43C021000AF4201F80A0011238B +:104510008FBF001030C200101040000E8FBF00107F +:104520008C83005C9482003C006918233042FFFFBA +:10453000006218213C023FFF3444FFFF0083102B30 +:10454000544000010080182101231021AD02005CBD +:104550008FBF001003E0000827BD001827BDFFE84B +:104560008FAA0028AFBF00100080402100EA482336 +:104570001920002130C600FF8C83005C8C8200640F +:10458000006A18230043102B5040001000691821C6 +:1045900094A2011001221021A4A2011094A20110E2 +:1045A0003042FFFF0043102B1440000A3C023FFF43 +:1045B00094A2011000431023A4A201109482003C95 +:1045C0003042FFFF0A00114200621821A4A001102E +:1045D0003C023FFF3444FFFF0083102B5440000196 +:1045E0000080182100671021AD02005CA100007C52 +:1045F0000A00118AA100008130C200101040003C66 +:10460000000000008C820050004A1023184000383F +:10461000000000009082007C24420001A082007C07 +:104620009082007C3C0308008C630024304200FF31 +:104630000043102B1440005C8FBF00108CA20108B7 +:1046400000E2102318400058000000008C83005442 +:104650009482003C006A18233042FFFF0003184395 +:10466000000210400043102A104000050000000026 +:104670008C820054004A10230A001171000210437A +:104680009482003C3042FFFF00021040AD02006403 +:104690009502003C8D0400649503003C3042FFFF0E +:1046A00000021040008220213063FFFF00831821A8 +:1046B00001431021AD02005C8D020054ACA2010840 +:1046C00024020002A10200840E000F0A8F440100A0 +:1046D000104000358FBF00108F4301008F4201F85A +:1046E0000440FFFE240200020A0011B30000000093 +:1046F000AD07004C8CA2010800E210231840000214 +:1047000024E2FFFCACA2010830C200011040000A04 +:10471000000000008D02005000E21023044100045C +:10472000010020218D02005414E20003000000006B +:104730000A0011AA240600058D02005414E2001A92 +:104740008FBF00103C0208008C4200D8304200208D +:104750001040000A240200019103007891020083B6 +:104760001443000624020001010020212406000455 +:104770008FBF00100A00105427BD0018A10000844C +:10478000A50200148F4301008F4201F80440FFFE90 +:1047900024020002AF4301C0A34201C43C02100046 +:1047A000AF4201F88FBF001003E0000827BD0018DA +:1047B0008FAA00108C8200500080402130C600FF7C +:1047C000004A102300A048211840000700E01821EB +:1047D00024020001A0800084A0A00112A482001481 +:1047E0000A001125AFAA0010A0800081AD07004C7F +:1047F0008CA2010800E210231840000224E2FFFC12 +:10480000ACA2010830C20001104000080000000006 +:104810008D0200500062102304410013240600059D +:104820008D02005410620010000000008D02005440 +:1048300014620011000000003C0208008C4200D805 +:10484000304200201040000A240200019103007849 +:10485000910200831443000624020001010020217C +:1048600001202821240600040A0010540000000042 +:10487000A1000084A502001403E00008000000006D +:1048800027BDFFE0AFBF0018274201009046000A95 +:104890008C4800148C8B004C9082008430C900FF3F +:1048A00001681823304A00FF1C60001A2D460006DC +:1048B000240200010142100410C00016304300031E +:1048C000012030210100382114600007304C000C19 +:1048D00015800009304200301440000B8FBF0018D3 +:1048E0000A001214000000000E001125AFAB0010EA +:1048F0000A0012148FBF00180E00109AAFAB001000 +:104900000A0012148FBF0018AFAB00100E0011BACE +:10491000AFAA00148FBF001803E0000827BD0020D5 +:1049200024020003A08200848C82005403E000086B +:10493000ACA201083C0200080342182190620081E9 +:10494000240600433C07601924420001A062008154 +:10495000906300813C0208008C4200C0306300FF7D +:10496000146200102403FF803C0208008C4200E027 +:104970000082102100431024AF4200243C020800B2 +:104980008C4200E03C03000A008210213042007F8C +:104990000342102100431021944500D40A000AF17B +:1049A00030A5FFFF03E000080000000027BDFFE086 +:1049B000AFBF0018AFB10014AFB000108F4201803C +:1049C0000080802100A088210E00121B00402021C1 +:1049D000A20000848E0200548FBF00188FB0001018 +:1049E000AE2201088FB1001403E0000827BD0020AB +:1049F00027BDFFE03C020008AFB00010AFBF0018B9 +:104A0000AFB10014034280218F5101409203008412 +:104A10008E0400508E02004C14820040306600FF6D +:104A20003C0208008C4200E02403FF800222102197 +:104A300000431024AF4200243C0208008C4200E0F6 +:104A40009744007C92050081022210213042007FB1 +:104A5000034218213C02000A0062182114A0000B36 +:104A60003084FFFF2402000554C20014248205DCB8 +:104A70009062011224420001A062011224020C8003 +:104A8000AF4200240A00127324020005A060011244 +:104A90002402000514C20009248205DC9202008170 +:104AA0002C4200075040000524820A009203008136 +:104AB0002402001400621004008210213044FFFF21 +:104AC000A60400140E00121B022020219602003CB6 +:104AD0008E03004C022020213042FFFF00021040D4 +:104AE000006218210E000250AE03005C9202007DAD +:104AF00002202021344200400E000259A202007D13 +:104B00008F4201F80440FFFE24020002AF5101C0B1 +:104B1000A34201C43C021000AF4201F88FBF00184D +:104B20008FB100148FB0001003E0000827BD0020F3 +:104B300008000ACC08000B1408000B9808000BE4CE +:104B400008000C200A0000280000000000000000FF +:104B50000000000D6370362E322E3300000000007E +:104B60000602030400000000000000000000000036 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000002005 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000001F4 +:104BC0000000002B000000000000000400030D4066 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000001000000300000000B2 +:104BF0000000000D0000000D3C020800244258A4F3 +:104C00003C03080024635F70AC4000000043202B8D +:104C10001480FFFD244200043C1D080037BD7FFCCA +:104C200003A0F0213C100800261000A03C1C080046 +:104C3000279C58A40E0001AC000000000000000DED +:104C400027BDFFE83C096018AFBF00108D2C500055 +:104C5000240DFF7F24080031018D5824356A380C5B +:104C600024070C003C1A8000AD2A50003C04800A46 +:104C7000AF4800083C1B8008AF4700240E00091510 +:104C8000AF8400100E0008D8000000000E000825B8 +:104C9000000000000E001252000000003C046016EC +:104CA0008C8500003C06FFFF3C02535300A61824ED +:104CB0001062004734867C0094C201F2A780002C69 +:104CC00010400003A78000CC38581E1EA798002C67 +:104CD00094C201F810400004978300CC38591E1E7E +:104CE000A79900CC978300CC2C7F006753E000018C +:104CF000240300669784002C2C82040114400002D7 +:104D000000602821240404003C0760008CE904387A +:104D10002403103C3128FFFF1103001F30B9FFFFAF +:104D200057200010A38000CE24020050A38200CEA2 +:104D3000939F00CE53E0000FA78500CCA78000CC46 +:104D4000978500CC8FBF0010A780002CA78000346F +:104D5000A78000E63C010800AC25008003E00008C5 +:104D600027BD0018939F00CE57E0FFF5A78000CC29 +:104D7000A78500CC978500CC8FBF0010A784002C9E +:104D8000A7800034A78000E63C010800AC25008025 +:104D900003E0000827BD0018A38000CE8CCB003CA8 +:104DA000316A00011140000E0000000030A7FFFF33 +:104DB00010E0FFDE240200508CCC00C831860001D8 +:104DC00014C0FFDC939F00CE0A00007A2402005139 +:104DD0008C8F00043C0E60000A00005D01EE302163 +:104DE0008CEF0808240D5708000F740211CD000441 +:104DF00030B8FFFF240500660A00007B240404008D +:104E00001700FFCC939F00CE0A00007A24020050C6 +:104E10008F8600103089FFFF000939408CC30010D5 +:104E20003C08005000E82025AF4300388CC5001432 +:104E300027420400AF82001CAF45003CAF44003065 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60008F4B0000316A00201140FFFD0000000060 +:104E700003E00008000000008F840010948A001AEC +:104E80008C8700243149FFFF000940C000E8302131 +:104E9000AF46003C8C8500248F43003C00A31023C8 +:104EA00018400029000000008C8B002025620001C2 +:104EB0003C0D005035AC0008AF420038AF4C00301C +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE0008F4F000031EE002011C0FFFD00000000D8 +:104EF0008F4A04003C080020AC8A00108F4904044B +:104F0000AC890014AF4800300000000094860018FF +:104F10009487001C00C71821A48300189485001AE8 +:104F200024A20001A482001A9498001A9499001EE9 +:104F3000133800030000000003E000080000000038 +:104F400003E00008A480001A8C8200200A0000DC24 +:104F50003C0D00500A0000CD000000003C0308009A +:104F60008C6300208F82001827BDFFE810620008C4 +:104F7000AFBF00100E000104AF8300183C0308000F +:104F80008C63002024040001106400048F89001049 +:104F90008FBF001003E0000827BD00188FBF00106E +:104FA0003C076012A520000A9528000A34E500108D +:104FB00027BD00183106FFFF03E00008ACA60090F3 +:104FC0003C0208008C42002027BDFFC8AFBF003460 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D +:104FE000AFB40020AFB3001CAFB20018AFB10014D3 +:104FF00010400050AFB000108F840010948600065F +:105000009483000A00C3282330B6FFFF12C0004A71 +:105010008FBF003494890018948A000A012A402323 +:105020003102FFFF02C2382B14E0000202C020212F +:10503000004020212C8C0005158000020080A0215A +:10504000241400040E0000B3028020218F8700107A +:1050500002809821AF80001494ED000A028088211C +:105060001280004E31B2FFFF3C1770003C1540002B +:105070003C1E60008F8F001C8DEE000001D71824AD +:10508000507500500220202102A3802B160000350D +:105090003C182000507800470220202124100001F5 +:1050A0008F83001414600039029158230230F823D2 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D +:1050C0008F8700103C110020AF510030000000001D +:1050D00094E6000A3C1E601237D5001002662821B3 +:1050E000A4E5000A94E2000A94F2000A94F400187D +:1050F0003057FFFF1292003BAEB700908CED0014CA +:105100008CE400100013714001AE4021000E5FC31B +:10511000010E502B008B4821012A1821ACE8001405 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE +:105130008F8400108FBF00348FBE00308FB7002CDB +:105140008FB600288FB500248FB400208FB3001CC9 +:105150008FB200188FB100148FB0001003E0000868 +:1051600027BD0038107E001B000000001477FFCC24 +:10517000241000010E00159B000000008F83001416 +:105180001060FFCB0230F823029158238F87001064 +:10519000017020210A0001973093FFFF8F830014D4 +:1051A0001460FFCB3C110020AF5100300A000163B6 +:1051B000000000000E00077D024028210A00015770 +:1051C000004080210E00033A024028210A000157C6 +:1051D000004080210E001463022020210A000157A4 +:1051E000004080210E0000CD000000000A0001797F +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 +:105200000E00003F000000003C028000345000709F +:105210000A0001BA8E0600008F4F000039EE00012F +:1052200031C20001104000248F8600A88E070000C4 +:105230003C0C08008D8C003C3C0908008D2900388E +:1052400000E66823018D28210000502100AD302B9D +:10525000012A4021010620213C010800AC25003C28 +:10526000AF8700A83C010800AC2400380E000106FE +:10527000000000003C0308008C6300701060FFE633 +:10528000006020213C0508008CA500683C06080051 +:105290008CC6006C0E00152A000000003C010800BE +:1052A000AC2000708F4F000039EE000131C20001C8 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 +:1052C0003C0508008CA5003C3C0408008C84003898 +:1052D000014B482300A938210082182100E9402B06 +:1052E000006810213C010800AC27003C3C0108008C +:1052F000AC2200388F5F01002419FF0024180C0035 +:1053000003F9202410980012AF840000AF4400205D +:10531000936D0000240C002031A600FF10CC001279 +:10532000240E005010CE00043C194000AF59013843 +:105330000A0001B3000000000E0011C800000000C8 +:105340003C194000AF5901380A0001B300000000C9 +:105350000E00011F000000003C194000AF59013849 +:105360000A0001B3000000008F58010000802821CE +:10537000330F00FF01E020210E0002F1AF8F000487 +:105380003C194000AF5901380A0001B30000000089 +:1053900000A4102B2403000110400009000030215C +:1053A0000005284000A4102B04A0000300031840AF +:1053B0005440FFFC000528405060000A0004182BF0 +:1053C0000085382B54E000040003184200C3302548 +:1053D00000852023000318421460FFF900052842CD +:1053E0000004182B03E0000800C310218F4201B80D +:1053F0000440FFFE00000000AF4401803C031000A9 +:1054000024040040AF450184A3440188A3460189D8 +:10541000A747018A03E00008AF4301B83084FFFFCB +:105420000080382130A5FFFF000020210A00022A59 +:10543000240600803087FFFF8CA40000240600387B +:105440000A00022A000028218F8300388F8600304E +:105450001066000B008040213C07080024E75A1822 +:10546000000328C000A710218C4400002463000121 +:10547000108800053063000F5466FFFA000328C04F +:1054800003E00008000010213C07080024E75A1C34 +:1054900000A7302103E000088CC200003C0390000C +:1054A0003462000100822025AF4400208F45002097 +:1054B00004A0FFFE0000000003E000080000000060 +:1054C0003C038000346200010082202503E00008D4 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3 +:1054E000AFB00010AFBF00181220001300A0802141 +:1054F0008CA2000024040002240601401040000F8A +:10550000004028210E000C5C00000000000010216B +:10551000AE000000022038218FBF00188FB10014A8 +:105520008FB0001000402021000028210000302111 +:105530000A00022A27BD00208CA200000220382188 +:105540008FBF00188FB100148FB0001000402021D1 +:1055500000002821000030210A00022A27BD002077 +:1055600000A010213087FFFF8CA500048C440000B0 +:105570000A00022A2406000627BDFFE0AFB0001093 +:10558000AFBF0018AFB100149363003E00808021CC +:105590000080282130620040000020211040000FD0 +:1055A0008E1100000E000851022020219367000098 +:1055B0002404005030E500FF50A400128E0F0000BC +:1055C000022020218FBF00188FB100148FB000106F +:1055D000A762013C0A00091127BD00200E000287C6 +:1055E000000000000E0008510220202193670000F7 +:1055F0002404005030E500FF14A4FFF20220202113 +:105600008E0F00003C1008008E1000503C0D000C66 +:10561000240BFF8001F05021314E007F01DA602120 +:10562000018D4021014B4824AF4900280220202150 +:105630008FBF00188FB100148FB00010A50200D6E4 +:1056400027BD00200A000911AF8800D027BDFFE068 +:10565000AFBF0018AFB10014AFB0001093660001E7 +:10566000008080210E00025630D1000493640005B2 +:10567000001029C2A765000034830040A363000521 +:105680000E00025F020020210E00091302002021FB +:1056900024020001AF62000C02002821A762001062 +:1056A00024040002A762001224060140A76200142D +:1056B0000E000C5CA76200161620000F8FBF0018AA +:1056C000978C00343C0B08008D6B00782588FFFF19 +:1056D0003109FFFF256A0001012A382B10E000067E +:1056E000A78800343C0F6006240E001635ED00102C +:1056F000ADAE00508FBF00188FB100148FB00010F6 +:1057000003E0000827BD002027BDFFE0AFB1001473 +:10571000AFBF0018AFB0001000A088211080000AB1 +:105720003C03600024020080108200120000000090 +:105730000000000D8FBF00188FB100148FB0001053 +:1057400003E0000827BD00208C682BF80500FFFE51 +:1057500000000000AC712BC08FBF00188FB1001487 +:105760008FB000103C09100027BD002003E00008A6 +:10577000AC692BF80E00025600A0202193650005AD +:10578000022020210E00025F30B000FF2403003E03 +:105790001603FFE7000000008F4401780480FFFE3D +:1057A000240700073C061000AF51014002202021D1 +:1057B000A34701448FBF00188FB100148FB00010B1 +:1057C000AF4601780A0002C227BD002027BDFFE8CE +:1057D000AFBF0014AFB000108F50002000000000D9 +:1057E0000E000913AF440020AF5000208FBF0014FB +:1057F0008FB0001003E0000827BD00183084FFFFC1 +:10580000008038212406003500A020210A00022A49 +:10581000000028213084FFFF008038212406003654 +:1058200000A020210A00022A0000282127BDFFD065 +:10583000AFB3001C3093FFFFAFB50024AFB2001828 +:10584000AFBF0028AFB40020AFB10014AFB000105C +:1058500030B5FFFF12600027000090218F90001CE0 +:105860008E0300003C0680002402004000033E023C +:1058700000032C0230E4007F006688241482001D9F +:1058800030A500FF8F8300282C68000A510000100B +:105890008F910014000358803C0C0800258C56940E +:1058A000016C50218D49000001200008000000001B +:1058B00002B210213045FFFF0E000236240400849E +:1058C000162000028F90001CAF8000288F910014DA +:1058D000260C002026430001018080213072FFFF4A +:1058E00016200004AF8C001C0253502B1540FFDC27 +:1058F00000000000024010218FBF00288FB5002457 +:105900008FB400208FB3001C8FB200188FB1001429 +:105910008FB0001003E0000827BD0030240E0034D3 +:1059200014AE00F9000000009203000E241F168040 +:105930003C07000CA36300219202000D0347C8211D +:105940003C066000A3620020961100123C0A7FFF13 +:10595000354CFFFFA771003C960B00102403000597 +:105960003168FFFFAF6800848E05001CAF5F002820 +:105970008F3800008CC4444803057826008F3021FE +:10598000AF66004C8F69004C24CE00013C057F00BF +:10599000AF6900508F740050AF740054AF66007050 +:1059A000AF6E00588F6D005824140050AF6D005C2E +:1059B000A3600023AF6C0064A36300378E02001461 +:1059C000AF6200488F710048AF7100248E0B001841 +:1059D000AF6B006C9208000CA3680036937F003E0A +:1059E00037F90020A379003E8F78007403058024E6 +:1059F000360F4000AF6F007493640000308900FFE1 +:105A0000513402452404FF803C04080024845A9841 +:105A10000E00028D000000003C1008008E105A9805 +:105A20000E00025602002021240600042407000173 +:105A3000A366007D020020210E00025FA36700051F +:105A40008F5F017807E0FFFE240B0002AF5001409A +:105A5000A34B01448F90001C3C081000AF48017814 +:105A60000A000362AF8000282CAD003751A0FF98D8 +:105A70008F9100140005A0803C180800271856BC20 +:105A8000029878218DEE000001C00008000000009F +:105A90002418000614B80011000000003C0808009B +:105AA0008D085A9824040005AF4800208E1F001866 +:105AB000AF7F00188F79004CAF79001C8F650050C4 +:105AC000122000C0AF6500700A000362AF84002896 +:105AD0002406000710A60083240300063C050800E6 +:105AE00024A55A980E000264240400818F90001CA3 +:105AF0000011102B0A000362AF8200282407000463 +:105B000014A7FFF6240500503C1808008F185A9877 +:105B1000AF5800208E0F0008AF6F00408E090008BC +:105B2000AF6900448E14000CAF7400488E0E001054 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D +:105B5000AF64005893630000306B00FF116501D8FB +:105B6000000000008F7400488F6900400289702394 +:105B700005C000042404008C1620FFDE240200036C +:105B8000240400823C05080024A55A980E000287D0 +:105B9000000000008F90001C000010210A0003622A +:105BA000AF820028240F000514AFFFCC240520008D +:105BB0003C0708008CE75A98AF4700208E06000487 +:105BC000AF66005C9208000824100008A36800215A +:105BD0008F9F001C93F90009A37900208F86001C79 +:105BE00090D8000A330400FF10900011000000005C +:105BF0002885000914A0006924020002240A00205C +:105C0000108A000B34058000288D002115A00008A3 +:105C100024054000240E0040108E00053C050001C4 +:105C200024140080109400023C050002240540006A +:105C30008F7800743C19FF00031980240205782531 +:105C4000AF6F007490C4000BA36400818F84001CAC +:105C50009489000C11200192000000009490000C27 +:105C60002406FFBF24050004A770003C908F000E9F +:105C7000A36F003E8F84001C9089000FA369003F32 +:105C80008F8B001C8D6E00108F54007401D468231C +:105C9000AF6D00608D6A0014AF6A0064956C0018E7 +:105CA000A76C00689563001AA763006A8D62001CE8 +:105CB000AF62006C9167000EA367003E9368003EE0 +:105CC0000106F8241220014BA37F003E8F90001C98 +:105CD0000A000362AF8500282407002214A7FF7F73 +:105CE000240300073C0B08008D6B5A981220000C0F +:105CF000AF4B00200A000362AF830028240C00335E +:105D000010AC0014240A00283C05080024A55A9869 +:105D10000E00023C240400810A0003EB8F90001C5B +:105D20003C04080024845A980E00028D00000000F4 +:105D30009363000024110050306200FF10510135C0 +:105D4000000000008F90001C000018210A00036270 +:105D5000AF8300283C0D08008DAD5A9824040081C3 +:105D6000AF4D00203C05080024A55A980E00023CC7 +:105D7000A36A00348F90001C240200090A00036209 +:105D8000AF82002802B288213225FFFF0E000236C2 +:105D9000240400840A0003628F90001C1082FFA478 +:105DA00024050400288B000311600170240C0004FA +:105DB000240300015483FF9E240540000A00043B95 +:105DC000240501003C04080024845A988F62004C8A +:105DD0000E00028D8F6300508F90001C0000202168 +:105DE0000A000362AF8400288E1000042404008A95 +:105DF000AF50002093790005333800021700015F8F +:105E0000020028219368002302002821311F00206E +:105E100017E0015A2404008D9367003F2406001206 +:105E200030E200FF10460155240400810E000256A6 +:105E30000200202193630023240500040200202196 +:105E4000346B0042A36B00230E00025FA365007D4C +:105E50008F4401780480FFFE240A0002AF50014005 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9 +:105E70000A0003EC0011102B8E1000042404008A89 +:105E8000AF500020936E000531CD000215A0001622 +:105E900002002821936F003F2414000402002821EF +:105EA00031E900FF11340010240400810E00025675 +:105EB000020020219362002324080012241FFFFE09 +:105EC00034460020A3660023A368003F93790005B1 +:105ED00002002021033FC0240E00025FA3780005CA +:105EE00002002821000020210E00033400000000E1 +:105EF0000A0003EB8F90001C8E1000043C03000886 +:105F00000343A021AF500020928B000024050050D5 +:105F1000316400FF10850161240700880200202100 +:105F2000000028210E00022A2406000E928D000097 +:105F3000240EFF800200282101AE8025A2900000DF +:105F4000240400040E000C5C240600300A0003EB5D +:105F50008F90001C8E0800043C14080026945A9868 +:105F60003C010800AC285A98AF480020921F00035B +:105F700033F9000413200002240200122402000658 +:105F8000A362003F920B001B2404FFC03165003F59 +:105F900000A43825A367003E9206000330C200012A +:105FA00014400132000000008E020008AE8200089A +:105FB0003C0208008C425AA010400131000249C244 +:105FC000A76900088E14000C240C0001240300149F +:105FD000AF74002C8E0E0010AF6E0030960D0016C0 +:105FE000A76D0038960A0014A76A003AAF6C000C3F +:105FF000A76C0010A76C0012A76C0014A76C001609 +:1060000012200136A3630034920F000331F0000226 +:106010002E1100018F90001C262200080A00036246 +:10602000AF8200288E0400043C0E0008034E30218D +:10603000AF4400208E05000890CD0000240C0050D5 +:1060400031AA00FF114C00862407008824060009AD +:106050000E00022A000000000A0003EB8F90001CD3 +:106060008E04001C0E00024100000000104000F4ED +:10607000004050218F89001C240700890140202105 +:106080008D25001C240600010E00022A00000000DD +:106090000A0003EB8F90001C960D00023C140800D0 +:1060A00026945A9831AA0004514000B83C10600070 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA +:1060C000920700102408001430E200FF144800D6A4 +:1060D00000000000960B00023163000114600165AE +:1060E000000000008E020004AE8200083C1408008C +:1060F0008E945AA01280015B000000008F7400741F +:106100003C0380002404000102835825AF6B007417 +:10611000A3600005AF64000C3C0708008CE75AA0A0 +:106120008F86001CA7640010000711C2A76400122C +:10613000A7640014A7640016A76200088CC80008B2 +:1061400024040002AF68002C8CC5000CAF65003041 +:1061500090DF0010A37F00348F99001C9330001152 +:10616000A37000358F98001C930F0012A36F0036A8 +:106170008F89001C912E0013A36E00378F90001C96 +:10618000960D0014A76D0038960A0016A76A003A0B +:106190008E0C0018AF6C00245620FDCCAF84002874 +:1061A0003C05080024A55A980E0002640000202136 +:1061B0008F90001C0A0004A7000020218E1000040C +:1061C00024070081AF500020936900233134001070 +:1061D000128000170000000002002021000028218A +:1061E0002406001F0E00022A000000000A0003EB34 +:1061F0008F90001C3C05080024A55A980E000287C9 +:10620000240400828F90001C000028210A000362F1 +:10621000AF8500283C0408008C845A980E0014E8CE +:10622000000000008F90001C0A000482000018216A +:106230000E00025602002021937800230200202144 +:10624000370F00100E00025FA36F002300003821FB +:1062500002002021000028210A0005A82406001FB2 +:10626000920F000C31E90001112000030000000032 +:106270009618000EA4D8002C921F000C33F90002CF +:1062800013200005000038218E0200149608001229 +:10629000ACC2001CA4C8001A0A0005432406000969 +:1062A0003C05080024A55A980E0002872404008BA0 +:1062B0008F90001C0011282B0A000362AF85002874 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3 +:1062D0008DAD0050240CFF803C02000C014D1821B4 +:1062E000006C2024AF4400288E070014306B007F20 +:1062F000017A282100A2C821AF2700D88E060014F9 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD +:106310000A000408AF3F01083C0508008CA55A9804 +:106320003C1908008F39005024CCFFFE00B9C02171 +:1063300003047824AF4F00283C1408008E945A9828 +:106340003C0908008D2900500289702131CD007F61 +:1063500001BA502101478021AE0600D8AF9000D08D +:10636000AE0000DC0A0003B1AE0C0108548CFE3014 +:10637000240540000A00043B240510000E00032EF3 +:10638000000000000A0003EB8F90001C8E0F442CCD +:106390003C186C62370979703C010800AC205A98AF +:1063A00015E9000824050140979F00349786002CCA +:1063B0000280282103E6C82B132000112404009238 +:1063C000240501400E000C7A240400023C01080060 +:1063D000AC225A98AF4200203C0508008CA55A9880 +:1063E00010A00005240400830E00084500000000F2 +:1063F00010400009240400833C05080024A55A9895 +:106400000E000264000000008F90001C0011202B81 +:106410000A000362AF8400280E0008490000000053 +:106420000A00055F8F90001C0E00084D0000000060 +:106430003C05080024A55A980A00062F2404008B66 +:10644000240400040E000C7A240500301440002AB5 +:10645000004050218F89001C240700830140202127 +:106460008D25001C0A000551240600018E04000839 +:106470000E000241000000000A00051BAE82000869 +:106480003C05080024A55A980E00023C240400870D +:106490008F90001C0A0005360011102B8F830038E6 +:1064A0008F8600301066FE9D000038213C070800F2 +:1064B00024E75A1C000320C0008728218CAC000070 +:1064C00011900061246A00013143000F5466FFFA05 +:1064D000000320C00A0004F6000038213C05080033 +:1064E00024A55A980E000287240400828F90001C75 +:1064F0000A000536000010213C0B0008034B202148 +:106500002403005024070001AF420020A0830000B4 +:10651000A08700018F82001C90480004A08800180A +:106520008F85001C90A60005A08600198F9F001C77 +:1065300093F90006A099001A8F90001C921800078A +:10654000A098001B8F94001C928F0008A08F001C45 +:106550008F89001C912E0009A08E001D8F8D001CBC +:1065600091AC000AA08C001E8F8B001C3C0C080014 +:10657000258C5A1C9163000B3C0B0800256B5A18A4 +:10658000A083001F8F87001C90E8000CA0880020CB +:106590008F82001C9045000D24024646A0850021F4 +:1065A0008F86001C90DF000EA09F00228F99001C98 +:1065B0009330000FA09000238F98001C93140010BC +:1065C000A09400248F8F001C91E90011A089002560 +:1065D0008F89001C8F8E00308F900038952D00140D +:1065E000000E18C025C80001A48D002895270016AC +:1065F000006C3021006BC821A487002A9525001863 +:106600003108000FA485002CA482002E8D3F001CB1 +:10661000ACCA0000AF88003011100006AF3F000088 +:10662000000038218D25001C014020210A00055161 +:1066300024060001250C00013184000F00003821E0 +:106640000A0006B8AF8400383C07080024E75A184F +:106650000087302100003821ACA000000A0004F6B9 +:10666000ACC000003C05080024A55A980A00062F7B +:10667000240400878E0400040E0002410000000084 +:106680000A00056AAE8200083084FFFF30C600FFB2 +:106690008F4201B80440FFFE00064400010430258B +:1066A0003C07200000C720253C031000AF400180BC +:1066B000AF450184AF44018803E00008AF4301B84F +:1066C00027BDFFE8AFB00010AFBF00143C0760006B +:1066D000240600021080000600A080210010102B6C +:1066E0008FBF00148FB0001003E0000827BD001812 +:1066F0003C09600EAD2000348CE5201C8F82001C0C +:106700002408FFFC00A81824ACE3201C0E0006D1CE +:106710008C45000C0010102B8FBF00148FB00010A0 +:1067200003E0000827BD00183C02600E344701005A +:1067300024090018274A040000000000000000009F +:10674000000000003C06005034C30200AF44003893 +:10675000AF45003CAF430030014018218F4B000093 +:10676000316800201100FFFD2406007F2408FFFF90 +:106770008C6C000024C6FFFF24630004ACEC000016 +:1067800014C8FFFB24E70004000000000000000024 +:10679000000000003C0F0020AF4F00300000000060 +:1067A00024AD020001A5702B2529FFFF008E2021BA +:1067B0001520FFE101A0282103E0000800000000EF +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D +:1067D0003C05600E8CA20034008088211440000625 +:1067E0003C0460008C87201C2408FFFC00E8302457 +:1067F00034C30001AC83201C8F8B001C24090001D2 +:10680000ACA90034956900028D6500148D70000CF0 +:106810002D2400818D6700048D660008108000071C +:106820008D6A00102D2C00041580000E30CE00075C +:10683000312D000311A0000B000000002404008B88 +:10684000020028210E0006D1240600030011102B9F +:106850008FBF00188FB100148FB0001003E0000844 +:1068600027BD002015C0FFF62404008B3C03002048 +:10687000AF4300300000000024020001AF8200148A +:106880000000000000000000000000003C1F01505C +:10689000013FC825253800033C0F600EAF47003884 +:1068A00000181882AF46003C35E8003CAF59003074 +:1068B000274704008F4400003086002010C0FFFDF1 +:1068C00000000000106000082466FFFF2403FFFFA3 +:1068D0008CEB000024C6FFFF24E70004AD0B000092 +:1068E00014C3FFFB250800043C08600EAD09003806 +:1068F0000000000000000000000000003C07002035 +:10690000AF470030000000000E0006F901402021D2 +:1069100002002821000020210E0006D124060003D9 +:106920000011102B8FBF00188FB100148FB0001012 +:1069300003E0000827BD002027BDFFE0AFB200182C +:106940003092FFFFAFB10014AFBF001CAFB000101A +:106950001640000D000088210A0007AA022010211D +:1069600024050001508500278CE5000C0000000D77 +:10697000262300013071FFFF24E200200232382B71 +:1069800010E00019AF82001C8F8200141440001622 +:106990008F87001C3C0670003C0320008CE5000043 +:1069A00000A62024148300108F84003C00054402BC +:1069B0003C09800000A980241480FFE9310600FF13 +:1069C0002CCA00095140FFEB262300010006688015 +:1069D0003C0E080025CE579801AE60218D8B00003B +:1069E0000160000800000000022010218FBF001C81 +:1069F0008FB200188FB100148FB0001003E00008B0 +:106A000027BD00200E0006D1240400841600FFD804 +:106A10008F87001C0A00078BAF80003C90EF0002BC +:106A200000002021240600090E0006D1000F2E00D0 +:106A30008F87001C0010102B0A00078BAF82003CD0 +:106A4000020028210E0006DF240400018F87001CAD +:106A50000A00078BAF82003C020028210E0006DFEF +:106A6000000020210A0007C38F87001C0E00071FAB +:106A7000020020210A0007C38F87001C30B0FFFFEF +:106A8000001019C08F5801B80700FFFE3C1F2004FA +:106A90003C191000AF430180AF400184AF5F018813 +:106AA000AF5901B80A00078C262300013082FFFF8E +:106AB00014400003000018210004240224030010E5 +:106AC000308500FF14A000053087000F2466000801 +:106AD0000004220230C300FF3087000F14E00005DD +:106AE000308900032468000400042102310300FF00 +:106AF0003089000315200005388B0001246A00024C +:106B000000042082314300FF388B00013164000112 +:106B100010800002246C0001318300FF03E00008B4 +:106B200000601021308BFFFF000B394230E600FF80 +:106B30003C09080025295998000640800109602178 +:106B40008D8700003164001F240A0001008A1804A8 +:106B500030A500FF00E3202514A000020003102749 +:106B600000E22024240F000100CF700401096821F5 +:106B7000000E282714800005ADA400008F86000CAD +:106B800000A6102403E00008AF82000C8F88000CE0 +:106B900001C8102503E00008AF82000C3C06001F6E +:106BA0003C0360003084FFFF34C5FF8024020020D6 +:106BB000AC602008AC60200CAC602010AC652014E8 +:106BC000AC642018AC62200000000000000000004F +:106BD00003E000080000000027BDFFE82402FFFFDB +:106BE000AFBF0010AF82000C000020213C0608005F +:106BF00024C659982405FFFF248900010004408021 +:106C00003124FFFF010618212C87002014E0FFFA31 +:106C1000AC6500000E0008160000202124020001CF +:106C20003C04600024050020AC822018AC852000C4 +:106C3000000000000000000000000000244A0001E5 +:106C40003142FFFF2C46040014C0FFF78FBF001035 +:106C500003E0000827BD00188F8300082C620400A1 +:106C600003E00008384200018F830008246200011D +:106C700003E00008AF8200088F8300082462FFFF52 +:106C800003E00008AF82000827BDFFE0AFB10014A9 +:106C9000AFBF0018AFB000108F6B00303C06600033 +:106CA00000808821ACCB20088F6A002C3C02800039 +:106CB00024030008ACCA200C9769003A9768003892 +:106CC00000092C003107FFFF00A72025ACC42010CD +:106CD000ACC22014ACC32000000000000000000083 +:106CE000000000003C0360008C6D200031AC000807 +:106CF0001580FFF9000000008C6E201405C00020F4 +:106D0000000000000E0007DA8F84000C00024080B3 +:106D10003C09080025295998010938218CE4000014 +:106D20000E0007DA00028140020220213090FFFFAE +:106D3000020020210E0007F8000028213C0C8000F2 +:106D4000022C58253210FFFF3C116000240A00205D +:106D5000AE2B2014AE302018AE2A20000000000018 +:106D60000000000000000000020010218FBF00188A +:106D70008FB100148FB0001003E0000827BD002081 +:106D80008C6620143C02001F3443FF803C1FFFE848 +:106D900000C3C02437F9080003198021001079C20C +:106DA0003C0C8000022C582531F0FFFF3C116000A4 +:106DB000240A0020AE2B2014AE302018AE2A20006A +:106DC0000000000000000000000000000200102190 +:106DD0008FBF00188FB100148FB0001003E00008BF +:106DE00027BD002027BDFFE8AFB000103402FFFF31 +:106DF0003090FFFFAFBF00141202000602002021F6 +:106E00000E00081600000000020020210E0007F806 +:106E1000240500018F8400088FBF00148FB000107C +:106E20002483FFFF27BD001803E00008AF8300089C +:106E3000000439C230E6003F00043B42000718401E +:106E4000240210002CC4002024C8FFE0AF42002C14 +:106E5000246300011480000330A900FF00071840DC +:106E6000310600FF0003608024080001019A5821C8 +:106E70003C0A000E00C82804016A382111200005D0 +:106E8000000530278CE900000125302503E00008CB +:106E9000ACE600008CEE000001C6682403E00008A8 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D +:106EB0003C0460008C8508083403F00030A2F00028 +:106EC00050430006240200018C8708083404E000C7 +:106ED00030E6F00010C4001E24020002AF82004021 +:106EE0003C1060003C0A0200AE0A0814240910009D +:106EF0003C08000E8E03440003482021AF49002CBB +:106F0000240501200E000CC0000030218F830040BA +:106F1000106000043C021691240B0001106B000E5F +:106F20003C023D2C344F0090AE0F44088FBF00143C +:106F30008FB000103C0C6000240E10003C0D0200CD +:106F400027BD0018AD8E442003E00008AD8D081069 +:106F50000A0008E7AF8000403C0218DA344F009086 +:106F6000AE0F44088FBF00148FB000103C0C6000BF +:106F7000240E10003C0D020027BD0018AD8E4420E9 +:106F800003E00008AD8D08100A0008BB24050001CD +:106F90000A0008BB000028213C08080025085DA461 +:106FA0002404FFFF010018212402001E2442FFFFD9 +:106FB000AC6400000441FFFD246300043C070800AA +:106FC00024E75E208CE5FFFC2404001C240600015D +:106FD000308A001F0146480424840001000910275C +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB +:106FF0003C05666634A4616E3C06080024C65EE06B +:10700000AF840058AF88009C2404FFFF00C0182103 +:107010002402001F2442FFFFAC6400000441FFFD76 +:10702000246300043C0766663C05080024A55EA0B6 +:10703000AF86004834E6616EAF8600982404FFFFF7 +:1070400000A018212402000F2442FFFFAC640000BE +:107050000441FFFD246300043C0B66663C06080007 +:1070600024C65E203568616EAF8500A4AF880070CD +:107070002404FFFF00C018212402001F2442FFFF48 +:10708000AC6400000441FFFD246300043C0D66660F +:107090003C0A0800254A5F6035AC616EAF860090FF +:1070A000AF8C005C2404FFFF014018212402000380 +:1070B0002442FFFFAC6400000441FFFD2463000490 +:1070C0003C09080025295F708D27FFFC2404000679 +:1070D000240500013099001F0325C0042484000109 +:1070E000001878272C8E002015C0FFFA00EF3824F6 +:1070F000AD27FFFC3C09666624030400240403DC7E +:1071000024050200240600663522616E3C08080052 +:1071100025085AA4AF820074AF830044AF83006C8B +:10712000AF830050AF830084AF8A008CAF840064CB +:10713000AF85004CAF860054AF840078AF85006007 +:10714000AF86008001001821240200022442FFFFC4 +:10715000AC6000000441FFFD24630004240400032C +:107160002403000C3C0A0800254A5AB0AF8A006884 +:107170000A00098E2405FFFF000418802484000102 +:10718000006858212C8700C014E0FFFBAD650000AB +:107190003C0E666635CD616E240C17A024081800DD +:1071A000AF8D0088AF8C009403E00008AF88007CAE +:1071B0002484007F000421C200004021000030210F +:1071C00000003821000028210A0009A5AF8400A092 +:1071D0001060000624E7000100C4302124A500014E +:1071E0002CC20BF51440FFFA2CA300663C090800E2 +:1071F00025295F6001201821240200032442FFFF9B +:10720000AC6000000441FFFD2463000410E0001A9C +:1072100024E3FFFF0003294210A0000A0000202100 +:107220002406FFFF3C03080024635F602484000100 +:107230000085502BAC660000250800011540FFFBBF +:107240002463000430E2001F10400008000868803A +:10725000240C0001004C38040008588001692821E2 +:1072600024E6FFFF03E00008ACA6000001A94021CE +:107270002409FFFFAD09000003E000080000000042 +:10728000AF4400283C04000C034420210005288260 +:107290000A000CC000003021000421803C03600083 +:1072A000AC6410080000000000052980AC65100CDB +:1072B0000000000003E000088C62100C27BDFFE80E +:1072C0000080282124040038AFBF00140E0009D527 +:1072D000AFB0001024040E00AF4400283C10000C96 +:1072E00003502021240500100E000CC000003021A6 +:1072F00003501021AC400000AC40000424040038CE +:107300008FBF00148FB0001024053FFF27BD001869 +:107310000A0009D58C430000000421803C03600072 +:10732000AC641008000000008C62100C03E0000840 +:107330000002118227BDFFC8AFB400208F940068FF +:10734000AFBE0030AFB7002CAFB600280000B821A8 +:107350000080B021241E00C0AFBF0034AFB50024B0 +:10736000AFB3001CAFB20018AFB10014AFB0001043 +:107370000A000A12AFA5003C504000018F9400683B +:1073800027DEFFFF13C00028269400048E92000021 +:107390003C03080024635DA01240FFF70283102B1A +:1073A0003C04080024845AA4028410230002A8C0CC +:1073B000000098210A000A212411000100118840D0 +:1073C000122000260000000002B380210251282470 +:1073D0000200202110A0FFF9267300010E0009DE33 +:1073E000000000000016684032EC000101AC2021D2 +:1073F0000E0009D5020028218F89009426F700018C +:107400008FA6003C3AEB0001316A00012528FFFFFE +:107410000011382702CAB021AF88009416E6FFE7B2 +:1074200002479024AE92000002E010218FBF00348A +:107430008FBE00308FB7002C8FB600288FB5002488 +:107440008FB400208FB3001C8FB200188FB10014CE +:107450008FB0001003E0000827BD00383C0E080084 +:1074600025CE5DA0028E102B0A000A0DAE92000000 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 +:10748000AFB3001CAFB2001800A0882110A0001FED +:10749000000480403C13080026735AA40A000A5ACC +:1074A0002412000112200019261000010E0009F517 +:1074B00002002021000231422444FFA0000618806F +:1074C0003045001F2C8217A1007318212631FFFFC1 +:1074D0001040FFF400B230048C690000020020214B +:1074E00024053FFF012640241500FFEE0126382524 +:1074F0000E0009D5AC6700008F8A009426100001A9 +:10750000254700011620FFE9AF8700948FBF0020B8 +:107510008FB3001C8FB200188FB100148FB0001011 +:1075200003E0000827BD00288F85009C00805821BB +:107530000000402100004821240A001F3C0C0800E4 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA +:1075500050C000140000402100AD1023000238C0CC +:10756000240300010A000A930000202115000003F3 +:1075700000E410212448202400004821252900018E +:10758000512B00132506DFDC106000062484000167 +:1075900000C3702415C0FFF5000318400A000A91CB +:1075A0000000402110AC002624A300040060282124 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5 +:1075C0002506DFDC0000402103E000080100102157 +:1075D0000006614230C5001F000C50803C070800C7 +:1075E00024E75DA424040001014730211120000F8D +:1075F00000A420043C05080024A55E20148000059A +:107600002529FFFF24C6000410C50011000000005A +:10761000240400018CCF00000004C0270004204097 +:1076200001F868241520FFF5ACCD00008F99007893 +:1076300001001021032B482303E00008AF890078E4 +:107640003C05080024A55DA40A000A9B0000402117 +:107650003C06080024C65DA40A000AB42404000104 +:10766000308800FF240200021102000A24030003F4 +:107670001103005C8F8900A4240400041104005F3E +:1076800024050005110500670000182103E000082B +:10769000006010218F8900483C0C0800258C5EE0BA +:1076A0003C04080024845F60240300201060000F65 +:1076B00000005821240D0002240E00033C0F080096 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E +:1076D000252900040124C02B53000001018048210A +:1076E0002463FFFF5460FFF88D270000016018211C +:1076F00003E0000800601021132000323C0500FF69 +:1077000030E200FF004030211040004200005021D4 +:1077100024050001000020210005C84000A6C02467 +:1077200017000003332500FF14A0FFFB2484000191 +:10773000012CC023001828C000AA6021008C502111 +:107740003144001F240C0001008C18040003102792 +:1077500000E23024110D0041AD260000110E004C56 +:10776000000A1840110D00368F87006C510E00562C +:107770008F8C0060240D0004110D005A8F8E008440 +:10778000240E0005150EFFDA01601821240B1430B9 +:1077900011400006000018218F8400A0246300011E +:1077A000006A402B1500FFFD016458218F8A00807C +:1077B000AF89008C016018212549FFFF0A000AEB00 +:1077C000AF89008000E52024000736021080FFD03A +:1077D000240A001800075402314600FF0A000AF389 +:1077E000240A00103C0C0800258C5EA03C04080014 +:1077F00024845EE00A000ADA240300103C0C08002E +:10780000258C5E203C04080024845EA00A000AD96E +:107810008F89009000071A02306600FF0A000AF301 +:10782000240A00088F89008C3C0C0800258C5F60BE +:107830003C04080024845F700A000ADA2403000470 +:10784000000A4080250B003024E6FFFF016018216C +:10785000AF8900480A000AEBAF86006C000AC982B3 +:10786000001978803C07080024E75EA001E720218A +:10787000000A18428C8F00003079001F032C380456 +:107880000007C02701F860240A000B08AC8C000038 +:10789000000331420006288000AF28213062001F1B +:1078A0008CB8000024630001004CC804000321428E +:1078B000001938270004108003073024004F2021CE +:1078C0000A000B4CACA60000000A68C025AB0032D1 +:1078D000258AFFFF01601821AF8900A40A000AEB86 +:1078E000AF8A0060254B1030AF89009001601821ED +:1078F00025C9FFFF0A000AEBAF8900843086000724 +:107900002CC2000610400014000000000006408059 +:107910003C030800246357BC010338218CE40000B9 +:1079200000800008000000002409000310A9000ED8 +:1079300000000000240A000510AA000B000000004F +:10794000240B000110AB0008000000008F8C00A089 +:1079500010AC00050000000003E00008000010214A +:107960000A000A7900A020210A000AC700C02021CD +:1079700027BDFFE8308400FF240300021083000BC2 +:10798000AFBF0010240600031086003A240800044C +:1079900010880068240E0005108E007F2CAF143074 +:1079A0008FBF001003E0000827BD00182CA2003094 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A +:1079C000000668803C07080024E75EE001A730213C +:1079D0008CC900000005288230AC001F240B000178 +:1079E000018B50048F840048012A4025ACC8000058 +:1079F0008C83000050600001AF8600488F98006CB7 +:107A000030AE000124A6FFFF270F000115C00002C1 +:107A1000AF8F006C24A600010006414200082080C0 +:107A2000008718218C79000030C2001F2406000155 +:107A30000046F804033F382410E0FFDA8FBF00103F +:107A40000005C182001870803C0F080025EF5EA081 +:107A500001CF48218D2B00000005684231A5001F91 +:107A600000A66004016C502527BD001803E0000843 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011 +:107A800030B900071723FFC724A8FFCE00086A02F9 +:107A9000000D60803C0B0800256B5EA0018B30213F +:107AA0008CC40000000828C230AA001F240800016E +:107AB000014848048F8200A400891825ACC3000047 +:107AC0008C5F000053E00001AF8600A40005704009 +:107AD000000E7942000F28803C04080024845EE0F8 +:107AE00000A418218C6B000025DF000131CD001FA0 +:107AF000001F514201A86004016C4825000A108053 +:107B0000AC690000004428218CA600008F9800601A +:107B100033F9001F8FBF00100328380400C77825F1 +:107B2000270E000127BD0018ACAF000003E00008DD +:107B3000AF8E006024A5EFD02CB804001300FF998D +:107B40008FBF001000053142000658803C0A080033 +:107B5000254A5E20016A30218CC4000030A3001F3A +:107B600024090001006910048F9900900082F82513 +:107B7000ACDF00008F27000050E00001AF860090CE +:107B80008F8D00848FBF001027BD001825AC000129 +:107B900003E00008AF8C008415E0FF828FBF001067 +:107BA0008F8600A0000610400046F821001F21002B +:107BB00003E4C8210019384024F8143000B8402BE1 +:107BC0001100FF788FBF001024A4EBD00E00021329 +:107BD00000C0282100027942000F70803C0D08008F +:107BE00025AD5F6001CD20218C8B0000304C001F43 +:107BF00024060001018618048F89008C016350253A +:107C0000AC8A00008D25000050A00001AF84008CDC +:107C10008F9800808FBF001027BD00182708000133 +:107C200003E00008AF88008030A5000724030003AC +:107C300010A3001028A2000414400008240700022A +:107C40002403000410A300152408000510A8000F49 +:107C50008F8500A003E000080000000014A7FFFDCE +:107C60000080282114C3FFFB240400020A000B8BB0 +:107C700000000000240900050080282110C9FFFB36 +:107C80002404000303E000080000000014C5FFF115 +:107C9000008028210A000B8B24040005240A00011F +:107CA0000080282110CAFFF12404000403E000082A +:107CB0000000000027BDFFE0AFB00010000581C24A +:107CC0002603FFD024C5003F2C6223D024C6007FAA +:107CD000AFB20018AFB10014AFBF001C309100FF6D +:107CE000000691C2000529820200202110400008F0 +:107CF0002403FFFF0E000A4B0000000002002021B9 +:107D0000022028210E000C390240302100001821E9 +:107D10008FBF001C8FB200188FB100148FB00010FD +:107D20000060102103E0000827BD002027BDFFD818 +:107D300024A2007FAFB3001CAFB20018000299C2AA +:107D4000309200FF24A3003F02402021026028213E +:107D5000AFB10014AFB00010AFBF00200E000B6E2B +:107D60000003898200408021004020210220282138 +:107D700014400009000018218FBF00208FB3001CA1 +:107D80008FB200188FB100148FB000100060102166 +:107D900003E0000827BD00280E0009FC00000000D9 +:107DA00000402821020020211051FFF3001019C0CB +:107DB0000E000A4B00000000020020210240282192 +:107DC0000E000C39026030218FBF00208FB3001CE1 +:107DD0008FB200188FB100148FB00010000018216E +:107DE0000060102103E0000827BD00283084FFFF59 +:107DF00030A5FFFF1080000700001821308200012D +:107E00001040000200042042006518211480FFFB8E +:107E10000005284003E000080060102110C00007A2 +:107E2000000000008CA2000024C6FFFF24A500046F +:107E3000AC82000014C0FFFB2484000403E00008AF +:107E40000000000010A0000824A3FFFFAC86000083 +:107E500000000000000000002402FFFF2463FFFF79 +:107E60001462FFFA2484000403E00008000000000C +:107E700030A5FFFF8F4201B80440FFFE3C076015AC +:107E800000A730253C031000AF440180AF400184BF +:107E9000AF46018803E00008AF4301B88F8500D0EA +:107EA0002C864000008018218CA700840087102BAE +:107EB00014400010000000008CA800842D06400033 +:107EC00050C0000F240340008CAA0084008A482B75 +:107ED000512000018CA3008400035A42000B208033 +:107EE0003C05080024A558200085182103E000085F +:107EF0008C62000014C0FFF4000000002403400066 +:107F000000035A42000B20803C05080024A558209D +:107F10000085182103E000088C6200008F8300D0E8 +:107F2000906600D024C50001A06500D08F8500D0E8 +:107F3000906400D090A200D210440017000000000E +:107F4000936C00788F8B00BC318A00FFA16A000C13 +:107F500025490001938700C4312200FF3048007F8B +:107F60001107000B00026827A36200788F4E01788A +:107F700005C0FFFE8F9900B0241800023C0F1000CE +:107F8000AF590140A358014403E00008AF4F017806 +:107F90000A000D0931A20080A0A000D00A000CFF49 +:107FA000000000008F8700D027BDFFC8AFBF0030A2 +:107FB000AFB7002CAFB60028AFB50024AFB4002097 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7 +:107FD00094E300E094E200E2104300D72405FFFFA1 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B +:107FF0003C16000E108A00D18FBF00308F9100B068 +:108000003C1808008F18005C001230C0001291402C +:108010000311702101D57824AF4F002C94EC00E2BD +:1080200031CD007F01BA5821318A7FFF0176482186 +:10803000000A804002091021945300003C08080007 +:108040008D0800580246C02132733FFF001319808B +:10805000010320210224282130BF007F03FAC82118 +:1080600000B5A024AF54002C0336A0218E87001049 +:108070008E8F003003785821256D008800EF702323 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5 +:10809000976A003C8E8400308F9100AC0E000CD6A5 +:1080A0003150FFFF00024B80020940253C02420094 +:1080B00001022025AE2400048E8300048F8D00ACC5 +:1080C0008E860000240E0008ADA3001CADA600188B +:1080D000ADA0000CADA00010929F000A33F900FF84 +:1080E000A5B90014968500083C1F000CA5A5001634 +:1080F0009298000A331100FFA5B100209690000865 +:1081000024180005A5B00022ADA00024928F000B1A +:108110002410C00031E700FFA5A70002A1AE0001B6 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B +:108130003C0A08008D4A005401444821013540247E +:10814000AF4800283C0208008C4200540044302113 +:1081500030C3007F007AC821033F282102458821CF +:10816000AF9100BCAF8500C0A23800008F8A00BC70 +:108170002403FFBF2418FFDF954F000201F03824CD +:1081800000F37025A54E0002914D000231AC003F76 +:10819000358B0040A14B00028F8600BC8F8900D038 +:1081A000ACC000048D28007C3C098000ACC80008ED +:1081B00090C4000D3082007FA0C2000D8F8500BCEE +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F +:1081D0009233000D02789024A232000D8E9000346C +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE +:1081F00000EF7023AD6E0014916D001831AC007F5C +:10820000A16C00188F9F00BC8E8A00308FE8001888 +:10821000015720240109302400C41025AFE20018C2 +:108220009283000AA3E3001C969900088F8500BC86 +:108230008F9800D0A4B9001E8E9000308E8400303C +:108240000E0002138F0500848F8500D0000291403C +:108250000002990090AF00BC0253882100403021F9 +:1082600031E7000210E0000302118021000290803B +:108270000212802190B900BC3327000410E00002F4 +:108280000006F880021F80218E9800308F8B00BC82 +:1082900024068000330F0003000F702331CD00034C +:1082A000020D6021AD6C000494A400E294AA00E2E7 +:1082B00094B000E231497FFF2522000130537FFF57 +:1082C0000206182400734025A4A800E294A400E24A +:1082D0003C1408008E94006030917FFF123400221D +:1082E000000000000E000CF6000000008F8700D098 +:1082F0000000282194F300E094F000E21213000F34 +:108300008FBF003090E900D090E800D1313200FFFB +:10831000310400FF0244302B14C0FF36264A00010E +:1083200090EE00D2264B000131CD00FF008D602180 +:10833000158BFF338F9100B08FBF00308FB7002CAB +:108340008FB600288FB500248FB400208FB3001C97 +:108350008FB200188FB100148FB0001000A0102150 +:1083600003E0000827BD003894A300E20066402423 +:10837000A4A800E290A400E290B900E2309100FFCE +:108380000011A1C20014F827001F39C03332007F4A +:10839000024730250A000DE8A0A600E23084FFFF66 +:1083A00030A5FFFFAF440018AF45001C03E00008F4 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF +:1083C0003084FFFFAFA40010AFBF0044AFBE004039 +:1083D000AFB7003CAFB60038AFB50034AFB4003033 +:1083E000AFB3002CAFB20028AFB10024A7A0001893 +:1083F000920600D1920500D030C400FF30A300FFE8 +:108400000064102B10400122AFA00014920900D08C +:108410008FB50010312800FF0088382324F4FFFFB7 +:108420000014882B0015982B02339024524001260B +:108430008FB40014961E0012961F00108FB7001004 +:1084400003DFC823001714000019C400000224032E +:108450000018140302E2B02A52C00001004020219B +:108460000284282B10A0000200801821028018210D +:1084700000033C0000071C033064FFFF2C8600094A +:1084800014C000020060B821241700088E0A0008FA +:10849000001769808E09000C31ABFFFF3C0C001007 +:1084A000016C402527520400AF4A0038AF9200B853 +:1084B000AF49003CAF480030000000000000000061 +:1084C00000000000000000000000000000000000AC +:1084D00000000000000000008F4F000031EE00207F +:1084E00011C0FFFD0017982A027110240A000E83A4 +:1084F0000000B02155E001019258000131130080C5 +:10850000126001CF012020219655001232A5FFFFF5 +:108510000E000CCBA7B500188F9000D00291A023BD +:1085200026CD00018F9100B8000DB4000016B403F1 +:108530002638004002D7582A0014882B2405000151 +:108540000300902101711024AF9800B8AFA500146A +:10855000104001BC8F8900B03C0C08008D8C005489 +:10856000240BFF80921E00D001895021014B28244A +:10857000921900D0AF4500288E4700103C08080033 +:108580008D0800583C1808008F18005430E33FFF56 +:108590000003218001043021012658212402FF809C +:1085A0000162F824920C00D0AF5F002C92480000CA +:1085B00033D100FF333500FF0309982100117140CA +:1085C000001578C0326D007F01CF382101BA282113 +:1085D000318300FF3164007F3C0A000C00AA88212F +:1085E0000367F02100033140009A10213108003F59 +:1085F0003C1F000E00D1C021005F982127D90088C0 +:108600002D150008AF9100C0AF9900ACAF9800BC29 +:10861000AF9300B412A0018A00008821240E00014B +:10862000010E4004310D005D11A0FFB2310F0002B8 +:108630008E4A00283C0300803C04FFEFAE6A000035 +:108640008E450024A260000A3488FFFFAE65000456 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4 +:108660008E62000C3C180040A267000B00433025CE +:1086700000C8C824033E88240238A825AE75000C23 +:108680008E490004AE6000183C0F00FFAE69001474 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 +:1086A000AE6C00108E470008A660000896450012C8 +:1086B000AE6700208E42000C30B03FFF00105180AA +:1086C000AE6200248E5E0014014B182130A400011C +:1086D000AE7E00288E590018000331C2000443808A +:1086E000AE79002C8E51001C00C8F821A67F001C1A +:1086F000AE710030965800028E550020A678001EFC +:10870000AE75003492490033313000045600000544 +:10871000925000008F8C00D08D8B007CAE6B0030AF +:10872000925000008F8F00BCA1F00000924E0033E9 +:1087300031CD000251A00007925E00018F8900BC7C +:108740002418FF80913100000311A825A1350000F5 +:10875000925E00018F9900BC2409FFBF240BFFDF4C +:10876000A33E00018F9500BC92B8000D3311007F2D +:10877000A2B1000D8F8E00BC91D0000D02097824AB +:10878000A1CF000D8F8800BC8E6D0014910A000DE2 +:108790002DAC0001000C2940014B382400E51825C0 +:1087A000A103000D964200128F8800BC8F8700D075 +:1087B000A50200028E45000490FF00BC30A4000317 +:1087C0000004302330DE000300BE102133F9000224 +:1087D00017200002244400342444003090E200BCFE +:1087E00000A2302430DF000417E0000224830004DC +:1087F000008018218F8F00AC24090002AD03000413 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7 +:108810008F9500AC924C003F8E440004A6AC000241 +:10882000976B003C0E000CD63170FFFF00025380A6 +:10883000020A38253C05420000E51825AEA30004D5 +:108840008F8600AC8E480038ACC800188E440034C7 +:10885000ACC4001CACC0000CACC00010A4C0001420 +:10886000A4C00016A4C00020A4C00022ACC00024F4 +:108870008E6400145080000124040001ACC4000880 +:108880000E000CF6241100010A000E768F9000D025 +:10889000920F00D2920E00D08FB5001031EB00FF86 +:1088A00031CD00FF008D6023016C50212554FFFF66 +:1088B0000014882B0015982B023390241640FEDDFF +:1088C000000000008FB400148FBF00448FBE004032 +:1088D0003A8200018FB7003C8FB600388FB5003464 +:1088E0008FB400308FB3002C8FB200288FB10024DA +:1088F0008FB0002003E0000827BD0048331100209E +:10890000122000EF24150001921E00BC241F00015C +:108910000000A82133D900011320000DAFBF001CB7 +:108920008E4400148E0800840088102B144000022E +:10893000008030218E0600848E03006400C3A82BC3 +:1089400016A0000200C020218E0400640080A8212F +:108950008E4700148E05006400E5302B14C0000221 +:1089600000E020218E0400640095F02313C0000471 +:108970008FAC001C240A0002AFAA001C8FAC001CA4 +:10898000028C582B156000A8000018218E4F00386B +:108990008E6D000C3C0E0080AE6F00008E4A0034DD +:1089A0003C10FF9F01AE5825AE6A00049246003F7E +:1089B000360CFFFF016C38243C0500203C03FFEF20 +:1089C000A266000B00E510253468FFFF8F8700B812 +:1089D0000048F8243C04000803E4C825AE79000CE4 +:1089E0008CF80014AE60001802BE7821AE78001436 +:1089F0008CF10018AE71001C8CE90008AE690024EF +:108A00008CEE000CAE6F002CAE600028AE6E002025 +:108A1000A6600038A660003A8CED001401B58023F2 +:108A2000021E902312400011AE72001090EA003D29 +:108A30008E6500048E640000000A310000A6C82183 +:108A4000000010210326402B0082F82103E8C021FA +:108A5000AE790004AE78000090F1003DA271000AEA +:108A60008F8900B895320006A67200088F9800AC76 +:108A70002419000202A02021A31900009769003CDC +:108A80008F9200AC0E000CD63131FFFF00027B80CC +:108A90008F8500B8022F68253C0E420001AE80256C +:108AA000AE5000048F8400AC8CAC0038AC8C001845 +:108AB0008CAB0034AC8B001CAC80000CAC80001084 +:108AC000A4800014A4800016A4800020A4800022AA +:108AD000AC80002490A7003FA487000212A00135BB +:108AE0002403000153C0000290A2003D90A2003E6A +:108AF00024480001A08800018F9F00ACAFF500085A +:108B00008F8300D024070034906600BC30C500027B +:108B100050A00001240700308F9200B88F8A00BC5B +:108B2000906D00BC924B00002412C00032A50003DF +:108B3000A14B00008F8600B88F8800BC240200047F +:108B400090C400010045182330790003A1040001FE +:108B50008F8A00BC8F9F00B800F53821955800021D +:108B600097E9001200F9382103128824312F3FFFC2 +:108B7000022F7025A54E00029150000231A800047A +:108B8000320C003F358B0040A14B000212A00002C6 +:108B90008F8500BC00E838218F8E00D0ACA7000480 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A +:108BB000ACAD000890B0000D00044140320C007FC5 +:108BC000A0AC000D8F8600BC90CA000D014B102494 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 +:108BF0008E380020ADB800108E290024ADA90014D5 +:108C00008E2F0028ADAF00188E2E002C0E000CF613 +:108C1000ADAE001C8FB0001C240C0002120C00EE44 +:108C20008F9000D08FA3001C006088211460000288 +:108C30000060A8210000A02156A0FE390291A023C7 +:108C40000014882B8FA90010960700103C1E0020EE +:108C50000136402302C750213112FFFFA60A00103F +:108C6000AFB20010AF5E0030000000009617001099 +:108C7000961300121277008F000000008E05000C82 +:108C80008E0B00080016698000AD7021000DC7C36F +:108C900001CDA82B0178782101F56021AE0E000CE2 +:108CA000AE0C00088FB300100013B82B02378024DD +:108CB0001200FF048F9000D00A000E3C000000005C +:108CC0008E4D0038A6600008240B0003AE6D000036 +:108CD0008E500034A260000A8F9800B8AE70000475 +:108CE0003C0500809311003FA26B000C8E6F000CBE +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 +:108D00003C03FFEF8F9200B8004C30243464FFFF27 +:108D100000C4F824AE7F000C8E590014964800124F +:108D20008F8A00B0AE7900108E490014AE60001832 +:108D3000AE600020AE690014AE6000248E470018BB +:108D400031093FFF0009F180AE6700288E4D000811 +:108D500003CA802131180001AE6D00308E4F000C27 +:108D60008F8C00AC001089C200185B80022B282178 +:108D7000240E0002A665001CA6600036AE6F002C13 +:108D8000A18E00009763003C8F8A00AC3C04420037 +:108D90003062FFFF00443025AD4600048F9F00B8CD +:108DA000240700012411C0008FF30038240600348A +:108DB000AD5300188FF90034AD59001CAD40000CC4 +:108DC000AD400010A5400014A5400016A5400020AD +:108DD000A5400022AD400024A5550002A147000196 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 +:108DF000910D0000A24D00008F9000B88F8B00BC39 +:108E000092180001A17800018F8400BC94850002B3 +:108E100000B1782401E97025A48E0002908C000234 +:108E20003183003FA08300028F8300D08F8400BC79 +:108E3000906200BC305300025260000124060030F2 +:108E4000AC8600048C6F007C2403FFBF02A0882145 +:108E5000AC8F0008908E000D31CC007FA08C000DEF +:108E60008F8600BC90C2000D00432024A0C4000DDA +:108E70008F8900BC913F000D37F90020A139000D0A +:108E80008F8800B88F9300BC8D070020AE6700105C +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 +:108EA0008D12002C0E000CF6AE72001C0A00103D54 +:108EB0008F9000D0960E00148E03000431CCFFFF7B +:108EC000000C10C000622021AF44003C8E1F000443 +:108ED0008F46003C03E6C8231B20003C0000000036 +:108EE0008E0F000025E200013C05001034B500089B +:108EF000AF420038AF550030000000000000000015 +:108F00000000000000000000000000000000000061 +:108F100000000000000000008F580000330B00200C +:108F20001160FFFD000000008F5304003C0D002085 +:108F3000AE1300088F570404AE17000CAF4D00307D +:108F4000000000003C0608008CC600442416000106 +:108F500010D600BD00000000961F00123C0508005E +:108F60008CA5004000BFC821A61900129609001464 +:108F700025270001A6070014960A00143144FFFFBC +:108F80005486FF498FB30010A60000140E000E1681 +:108F900030A5FFFF3C0408008C84002496030012D7 +:108FA0000044102300623023A60600120A00105964 +:108FB0008FB30010A08300018F8200AC2404000155 +:108FC000AC4400080A000FF08F8300D08E0200002E +:108FD0000A0010EA3C0500108F8200C08FA7001C19 +:108FE000921800D0920B00D0920E00D0331100FFE7 +:108FF000316900FF00117940000928C001E56021B6 +:1090000031C300FF036C50210003314000C2C8216E +:10901000255F0088AF9F00ACAF9900BCA1470088D6 +:109020009768003C03C020218F9100AC0E000CD645 +:109030003110FFFF00026B80020DC0253C0442008E +:109040008F8D00B803045825AE2B00048DA900387D +:109050008F8B00AC0000882100118100AD690018E1 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F +:1090700091AC003E8D65001C8D660018000C190037 +:10908000000C770200A33821020E102500E3F82B14 +:1090900000C2C821033F5021AD67001CAD6A001813 +:1090A000AD60000CAD60001091B8003E24050005D5 +:1090B00003C45024A578001495A9000403C02021FE +:1090C000A569001691AF003EA56F002095B1000480 +:1090D000A5710022AD60002491AE003FA56E000294 +:1090E00091B0003E91AC003D01901023244300015B +:1090F000A16300018F8600AC8F9F00BCACDE00082E +:10910000A3E500008F9000BC8F9900B82405FFBF35 +:1091100096070002973800120247782433093FFF70 +:1091200001E98825A6110002921200022418FFDF2F +:10913000324E003F35CD0040A20D00028F8600BCAC +:109140008F8C00D02412FFFFACC000048D8B007CFC +:109150003C0C8000ACCB000890C2000D3043007F77 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D +:10917000A0F9000D8F9100BC9229000D01387824D0 +:10918000A22F000D8F9000BCAE120010AE1500147F +:10919000920E00182415FF8002AE6825A20D00185B +:1091A0008F8500BC8F8300B88CAB0018016C102435 +:1091B000004A3025ACA600189068003EA0A8001C0C +:1091C0008F9F00B88F8700BC8F9800D097F900045C +:1091D000A4F9001E0E0002138F0500848F8600D0B4 +:1091E000000279400002490090D200BC01E98821C8 +:1091F000004028213255000212A0000303D1202193 +:109200000002A8800095202190CD00BC31B200045E +:109210001240000333DF0003000540800088202156 +:10922000240600048F9E00BC00DFC8233327000300 +:1092300000875021AFCA00040E000CF6A665003866 +:109240000A0010388F9000D0961E00123C080800CB +:109250008D080024011E9021A61200120A00105948 +:109260008FB3001027BDFFE03C1808008F18005096 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2 +:1092800093710074030478212410FF8031EE007F75 +:109290003225007F01F0582401DA68213C0C000AD5 +:1092A000A38500C401AC2821AF4B002494A9001071 +:1092B0009768000690A600620080382124020030E2 +:1092C0000109202330C300F0AF8500D010620019DF +:1092D0003090FFFF90AE0062240DFFF0240A005092 +:1092E00001AE6024318B00FF116A002F00000000E6 +:1092F00016000007241F0C00AF5F00248FB100147C +:109300008FBF00188FB0001003E0000827BD0020B9 +:109310000E000E1C02002021241F0C00AF5F002451 +:109320008FB100148FBF00188FB0001003E0000849 +:1093300027BD002094A200E094A400E290BF011396 +:10934000008218263079FFFF33E700C014E00009DF +:109350002F31000116000038000000005620FFE603 +:10936000241F0C000E000D18000000000A0011ED73 +:10937000241F0C001620FFDE000000000E000D1858 +:10938000000000001440FFDC241F0C001600002227 +:109390008F8300D0906901133122003FA062011336 +:1093A0000A0011ED241F0C0094AF00D48F8600D466 +:1093B00000E02821240400050E000C5C31F0FFFFC2 +:1093C0001440000524030003979100E600001821D3 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E +:1093E0003C196013AF400180241F0C00AF50018472 +:1093F000007938253C101000AF4701888FB1001468 +:10940000AF5001B8AF5F00248FB000108FBF0018BD +:1094100003E0000827BD00200E000E1C02002021E2 +:109420005040FFB5241F0C008F8300D090690113BA +:109430000A0012163122003F0E000E1C02002021ED +:109440001440FFAD241F0C00122000078F8300D0B2 +:10945000906801133106003F34C20040A06201133E +:109460000A0011ED241F0C000E000D180000000072 +:109470005040FFA1241F0C008F8300D0906801137F +:109480003106003F0A00124634C20040AF9B00C8BC +:1094900003E00008AF8000EC3089FFFF0009404284 +:1094A0002D020041000921801440000200095040B3 +:1094B00024080040000830C0000811400046582130 +:1094C000256701A800E2C821272F007F2418FF800C +:1094D00001F818240064302100CA702125CC00FF57 +:1094E000240DFF00018D202425650088240A0088B2 +:1094F0003C010800AC2A004C3C010800AC2500509F +:10950000AF8400D43C010800AC2900603C01080095 +:10951000AC2800643C010800AC2700543C01080062 +:10952000AC2300583C010800AC26005C03E00008B6 +:1095300000000000308300FF30C6FFFF30E400FF72 +:109540008F4201B80440FFFE00034C00012438257F +:109550003C08600000E820253C031000AF45018076 +:10956000AF460184AF44018803E00008AF4301B86F +:109570008F86001C3C096012352700108CCB00043C +:109580003C0C600E35850010316A00062D48000144 +:10959000ACE800C48CC40004ACA431808CC20008C8 +:1095A00094C30002ACA2318403E00008A78300E466 +:1095B0003C0308008C6300508F8400E88F86001CF9 +:1095C0002402FF800064C0210302C824AF59002890 +:1095D0008CCD00043305007F00BA78213C0E000CCE +:1095E00001EE2821ACAD00588CC80008AF8500D032 +:1095F0003C076012ACA8005C8CCC001034E8001072 +:10960000ACAC000C8CCB000CACAB000894AA0014E2 +:109610003C0208008C42004425490001A4A9001422 +:1096200094A400143083FFFF106200178F8400D0D1 +:109630003C0A08008D4A0040A4AA00128CCE0018F3 +:10964000AC8E00248CCD0014AC8D00208CC700188B +:10965000AC87002C8CCC001424060001AC8C0028B4 +:109660008D0B00BC5166001A8D0200B48D0200B84B +:10967000A482003A948F003AA48F003C948800D4CE +:1096800003E000083102FFFF3C0908008D29002497 +:10969000A4A000148F8400D0A4A900128CCE0018BE +:1096A000AC8E00248CCD0014AC8D00208CC700182B +:1096B000AC87002C8CCC001424060001AC8C002854 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 +:1096D000A482003A948F003AA48F003C948800D46E +:1096E00003E000083102FFFF8F86001C3C0C0800DD +:1096F0008D8C0050240BFF808CCD00083C03000CA7 +:10970000000D51C0018A4021010B4824AF8A00E8B6 +:10971000AF49002890C700073105007F00BA10212B +:109720000043282130E4000410800039AF8500D0C8 +:1097300090CF000731EE000811C000380000000093 +:109740008CD9000C8CC400140324C02B13000030EF +:10975000000000008CC2000CACA200648CCD00188C +:109760002402FFF8ACAD00688CCC0010ACAC0080DB +:109770008CCB000CACAB00848CCA001CACAA007C67 +:1097800090A900BC01224024A0A800BC90C30007FF +:109790003067000810E000048F8500D090AF00BC57 +:1097A00035EE0001A0AE00BC90D9000733380001AF +:1097B000130000088F8300D08F8700D0240400346A +:1097C00090E800BC35030002A0E300BC8F8300D00A +:1097D000AC6400C090C900073126000210C000052B +:1097E00000000000906A00BC35420004A06200BC8A +:1097F0008F8300D09065011330AD003FA06D011341 +:109800008F8C00D0958B00D403E000083162FFFFFD +:109810008CC200140A001305000000000A001306A1 +:10982000ACA0006427BDFFD8AFB000108F90001C23 +:10983000AFBF0024AFB40020AFB20018AFB1001426 +:10984000AFB3001C9613000E3C07600A3C14600680 +:109850003264FFFF369300100E00125534F40410EA +:109860008F8400D43C11600E0E00099B363100102D +:10987000920E00153C0708008CE700603C12601255 +:1098800031CD000FA38D00F08E0E00048E0D000868 +:1098900096080012961F00109619001A9618001EBE +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD +:1098C0003C010800AC2C00243C010800AC2A0044F8 +:1098D000AE293178AE26317C92020015960300162F +:1098E00036520010304400FF3065FFFF3C06080090 +:1098F0008CC60064AE243188AE4500B492080014D2 +:1099000096190018241F0001011FC004332FFFFF08 +:109910003C0508008CA50058AE5800B8AE4F00BCFE +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D +:10993000AE4B00C0920A0015AE670048AE66004C00 +:10994000314900FFAE4900C8AE65007C3C03080009 +:109950008C6300503C0408008C84004C3C080800D8 +:109960008D0800543C0208008C42005C8FBF00242C +:10997000AE6300808FB00010AE8300748FB3001C04 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F +:10999000AE24318CAE233190AE283194AE2531986F +:1099A000AE870050AE860054AE8500708FB10014B3 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B +:1099C000AE4800D4AE4500D88FB400208FB2001846 +:1099D00003E0000827BD002827BDFFE0AFB1001459 +:1099E000AFBF0018241100010E000845AFB00010F1 +:1099F00010510005978400E6978300CC0083102B5C +:109A0000144000088F8500D4240700028FBF00187F +:109A10008FB100148FB0001000E0102103E00008A7 +:109A200027BD00200E000C7A24040005AF8200E858 +:109A30001040FFF6240700020E0008498F90001C1A +:109A4000979F00E68F9900E88F8D00C827EF0001EF +:109A5000240E0050AF590020A78F00E6A1AE0000F1 +:109A60003C0C08008D8C00648F8600C8240A80009E +:109A7000000C5E00ACCB0074A4C0000694C9000AC0 +:109A8000241FFF803C0D000C012AC024A4D8000A2A +:109A900090C8000A24182000011F1825A0C3000A3E +:109AA0008F8700C8A0E000788F8500C800003821AB +:109AB000A0A000833C0208008C4200508F8400E884 +:109AC0000044782101FFC824AF590028960B0002FA +:109AD00031EE007F01DA6021018D3021A4CB00D46A +:109AE000960A0002AF8600D03C0E000425492401EE +:109AF000A4C900E68E080004ACC800048E03000868 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA +:109B10008F8500D02403FFBFA0A000D13C04080023 +:109B20008C8400648F8200D0A04400D28E1F000C71 +:109B30008F8A00D0978F00E4AD5F001C8E19001053 +:109B400024100030AD590018A5400030A551005434 +:109B5000A5510056A54F0016AD4E0068AD580080C7 +:109B6000AD580084914D006231AC000F358B001070 +:109B7000A14B00628F8600D090C900633128007F1E +:109B8000A0C800638F8400D02406FFFF9085006387 +:109B900000A31024A08200638F9100D000E0102168 +:109BA000923F00BC37F90001A23900BC8F8A00D077 +:109BB000938F00F0AD580064AD5000C0914E00D3BB +:109BC000000F690031CC000F018D5825A14B00D347 +:109BD0008F8500D08F8900DCACA900E88F8800D881 +:109BE0008FBF00188FB100148FB0001027BD002068 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB +:109C000003E000080000000027BDFFE0AFB0001037 +:109C10008F90001CAFB10014AFBF00188E19000464 +:109C20003C1808008F180050240FFF80001989C0CD +:109C30000238702131CD007F01CF602401BA50215C +:109C40003C0B000CAF4C0028014B4021950900D47F +:109C5000950400D68E0700043131FFFFAF8800D095 +:109C60000E000913000721C08E0600048F8300C870 +:109C7000000629C0AF4500209064003E30820040BD +:109C8000144000068F8400D0341FFFFF948300D659 +:109C90003062FFFF145F000400000000948400D6CF +:109CA0000E0008A83084FFFF8E050004022030213A +:109CB0008FBF00188FB100148FB000102404002251 +:109CC00000003821000529C00A00127C27BD0020B1 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F +:109CE000AFBF00181220001D000080218F86001CCD +:109CF0008CC500002403000600053F020005140285 +:109D000030E4000714830015304500FF2CA800063E +:109D10001100004D000558803C0C0800258C57D4DC +:109D2000016C50218D490000012000080000000056 +:109D30008F8E00EC240D000111CD005900000000B1 +:109D4000260B00013170FFFF24CA00200211202BD6 +:109D5000014030211480FFE6AF8A001C0200102170 +:109D60008FBF00188FB100148FB0001003E00008FF +:109D700027BD0020938700CE14E00038240400148F +:109D80000E001338000000008F86001C2402000122 +:109D90000A00147FAF8200EC8F8900EC24080002D7 +:109DA0001128003B2404001300002821000030216A +:109DB000240700010E00127C000000000A00147F3E +:109DC0008F86001C8F8700EC2405000214E5FFF647 +:109DD000240400120E0012E9000000008F8500E844 +:109DE00000403021240400120E00127C00003821B3 +:109DF0000A00147F8F86001C8F8300EC241F000351 +:109E0000147FFFD0260B00010E00129B0000000003 +:109E10008F8500E800403021240200022404001055 +:109E200000003821AF8200EC0E00127C0000000020 +:109E30000A00147F8F86001C8F8F00EC240600021E +:109E400011E6000B0000000024040010000028218F +:109E5000000030210A00149C240700010000282182 +:109E60000E00127C000030210A00147F8F86001C37 +:109E70000E0013A500000000144000128F99001C72 +:109E80008F86001C240200030A00147FAF8200ECBE +:109E90000E001431000000000A00147F8F86001CA1 +:109EA0000E00128B000000002402000224040014A3 +:109EB0000000282100003021000038210A0014B9D8 +:109EC000AF8200EC004038212404001097380002D3 +:109ED000000028210E00127C3306FFFF0A00147FC9 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D +:109EF0008C8500742402000100A61824AC83007431 +:109F000003E00008A082000510A000362CA200800B +:109F1000274A04003C0B000524090080104000077C +:109F20002408008030A6000F00C540212D030081C9 +:109F30001460000200A0482124080080AF4B0030CC +:109F400000000000000000000000000011000009F7 +:109F500000003821014030218C8D000024E70004EE +:109F600000E8602BACCD0000248400041580FFFACB +:109F700024C60004000000000000000000000000F3 +:109F80003C0E0006010E3825AF47003000000000EF +:109F900000000000000000008F4F000031E80010BA +:109FA0001100FFFD000000008F42003C8F43003C89 +:109FB0000049C8210323C02B130000040000000047 +:109FC0008F4C003825860001AF4600388F47003C93 +:109FD00000A9282300E96821AF4D003C14A0FFCE62 +:109FE0002CA2008003E000080000000027BDFFD085 +:109FF0003C020002AFB100143C11000CAF45003828 +:10A00000AFB3001CAF46003C00809821AF42003047 +:10A0100024050088AF44002803512021AFBF002849 +:10A02000AFB50024AFB40020AFB200180E0014F199 +:10A03000AFB000103C1F08008FFF004C3C18080018 +:10A040008F1800642410FF8003F3A82132B9007F29 +:10A0500002B078240018A0C0033A70210018914083 +:10A0600001D12021AF4F00280E0014F10254282105 +:10A070003C0D08008DAD00502405012001B358218E +:10A08000316C007F01705024019A48210131202158 +:10A090000E0014F1AF4A00283C0808008D08005457 +:10A0A0003C0508008CA500640113382130E6007FD0 +:10A0B00000F0182400DA202100912021AF4300286D +:10A0C0000E0014F1000529403C0208008C420058A3 +:10A0D0003C1008008E1000601200001C0053882104 +:10A0E0002415FF800A0015743C14000C3226007FF2 +:10A0F0000235182400DA202102402821AF4300282D +:10A10000009420210E0014F12610FFC01200000F51 +:10A11000023288212E05004110A0FFF42412100005 +:10A120003226007F001091800235182400DA2021A9 +:10A1300002402821AF430028009420210E0014F192 +:10A14000000080211600FFF3023288213C0B08003A +:10A150008D6B005C240AFF802405000201734021FE +:10A16000010A4824AF4900283C0408009484006296 +:10A170003110007F021A88213C07000C0E000CAA47 +:10A180000227982100402821026020218FBF00284B +:10A190008FB500248FB400208FB3001C8FB200183D +:10A1A0008FB100148FB000100A0014F127BD0030E9 +:10A1B0008F83001C8C62000410400003000000002C +:10A1C00003E00008000000008C6400108C650008AB +:10A1D0000A00152A8C66000C000000000000001B1D +:10A1E0000000000F0000000A000000080000000648 +:10A1F000000000050000000500000004000000044D +:10A200000000000300000003000000030000000342 +:10A210000000000300000002000000020000000235 +:10A220000000000200000002000000020000000226 +:10A230000000000200000002000000020000000216 +:10A240000000000200000002000000020000000206 +:10A2500000000001000000010000000108000F24C0 +:10A2600008000D6C08000FB80800106008000F4CC3 +:10A2700008000F8C0800119408000D88080011B820 +:10A2800008000DD8080015540800151C08000D889A +:10A2900008000D8808000D880800124008001240D0 +:10A2A00008000D8808000D88080014E008000D88DB +:10A2B00008000D8808000D8808000D88080013B4F8 +:10A2C00008000D8808000D8808000D8808000D881A +:10A2D00008000D8808000D8808000D8808000D880A +:10A2E00008000D8808000D8808000D8808000D88FA +:10A2F00008000D8808000D8808000FAC08000D88C4 +:10A3000008000D880800167808000D8808000D88E0 +:10A3100008000D8808000D8808000D8808000D88C9 +:10A3200008000D8808000D8808000D8808000D88B9 +:10A3300008000D8808000D8808000D8808000D88A9 +:10A3400008000D8808000D8808000D88080014100A +:10A3500008000D8808000D8808001334080012A4B6 +:10A3600008001E2C08001EFC08001F1408001F28EF +:10A3700008001F3808001E2C08001E2C08001E2C88 +:10A3800008001ED808002E1408002E1C08002DE41A +:10A3900008002DF008002DFC08002E08080052F4DB +:10A3A000080052B40800528008005254080052308D +:10A3B000080051EC0A000C840000000000000000BE +:10A3C0000000000D727870362E322E33000000002F +:10A3D000060203030000000000000001000000006E +:10A3E000000000000000000000000000000000006D +:10A3F000000000000000000000000000000000005D +:10A40000000000000000000000000000000000004C +:10A41000000000000000000000000000000000003C +:10A42000000000000000000000000000000000002C +:10A43000000000000000000000000000000000001C +:10A44000000000000000000000000000000000000C +:10A4500000000000000000000000000000000000FC +:10A4600000000000000000000000000000000000EC +:10A4700000000000000000000000000000000000DC +:10A4800000000000000000000000000000000000CC +:10A4900000000000000000000000000000000000BC +:10A4A00000000000000000000000000000000000AC +:10A4B000000000000000000000000000000000009C +:10A4C000000000000000000000000000000000008C +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A00000000000000000000000000000000000AB +:10A5B000000000000000000000000000000000009B +:10A5C000000000000000000000000000000000008B +:10A5D000000000000000000000000000000000007B +:10A5E000000000000000000000000000000000006B +:10A5F000000000000000000000000000000000005B +:10A60000000000000000000000000000000000004A +:10A61000000000000000000000000000000000003A +:10A62000000000000000000000000000000000002A +:10A63000000000000000000000000000000000001A +:10A64000000000000000000000000000000000000A +:10A6500000000000000000000000000000000000FA +:10A6600000000000000000000000000000000000EA +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:10A7E0000000000000000000000000000000000069 +:10A7F0000000000000000000000000000000000059 +:10A800000000000000000000000000000000000048 +:10A810000000000000000000000000000000000038 +:10A820000000000000000000000000000000000028 +:10A830000000000000000000000000000000000018 +:10A840000000000000000000000000000000000008 +:10A8500000000000000000000000000000000000F8 +:10A8600000000000000000000000000000000000E8 +:10A8700000000000000000000000000000000000D8 +:10A8800000000000000000000000000000000000C8 +:10A8900000000000000000000000000000000000B8 +:10A8A00000000000000000000000000000000000A8 +:10A8B0000000000000000000000000000000000098 +:10A8C0000000000000000000000000000000000088 +:10A8D0000000000000000000000000000000000078 +:10A8E0000000000000000000000000000000000068 +:10A8F0000000000000000000000000000000000058 +:10A900000000000000000000000000000000000047 +:10A910000000000000000000000000000000000037 +:10A920000000000000000000000000000000000027 +:10A930000000000000000000000000000000000017 +:10A940000000000000000000000000000000000007 +:10A9500000000000000000000000000000000000F7 +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA700000000000000000000000000000000000D6 +:10AA800000000000000000000000000000000000C6 +:10AA900000000000000000000000000000000000B6 +:10AAA00000000000000000000000000000000000A6 +:10AAB0000000000000000000000000000000000096 +:10AAC0000000000000000000000000000000000086 +:10AAD0000000000000000000000000000000000076 +:10AAE0000000000000000000000000000000000066 +:10AAF0000000000000000000000000000000000056 +:10AB00000000000000000000000000000000000045 +:10AB10000000000000000000000000000000000035 +:10AB20000000000000000000000000000000000025 +:10AB30000000000000000000000000000000000015 +:10AB40000000000000000000000000000000000005 +:10AB500000000000000000000000000000000000F5 +:10AB600000000000000000000000000000000000E5 +:10AB700000000000000000000000000000000000D5 +:10AB800000000000000000000000000000000000C5 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40000000000000000000000000000000000004 +:10AC500000000000000000000000000000000000F4 +:10AC600000000000000000000000000000000000E4 +:10AC700000000000000000000000000000000000D4 +:10AC800000000000000000000000000000000000C4 +:10AC900000000000000000000000000000000000B4 +:10ACA00000000000000000000000000000000000A4 +:10ACB0000000000000000000000000000000000094 +:10ACC0000000000000000000000000000000000084 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD00000000000000000000000000000000000043 +:10AD10000000000000000000000000000000000033 +:10AD20000000000000000000000000000000000023 +:10AD30000000000000000000000000000000000013 +:10AD40000000000000000000000000000000000003 +:10AD500000000000000000000000000000000000F3 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA00000000000000000000000000000000000A3 +:10ADB0000000000000000000000000000000000093 +:10ADC0000000000000000000000000000000000083 +:10ADD0000000000000000000000000000000000073 +:10ADE0000000000000000000000000000000000063 +:10ADF0000000000000000000000000000000000053 +:10AE00000000000000000000000000000000000042 +:10AE10000000000000000000000000000000000032 +:10AE20000000000000000000000000000000000022 +:10AE30000000000000000000000000000000000012 +:10AE40000000000000000000000000000000000002 +:10AE500000000000000000000000000000000000F2 +:10AE600000000000000000000000000000000000E2 +:10AE700000000000000000000000000000000000D2 +:10AE800000000000000000000000000000000000C2 +:10AE900000000000000000000000000000000000B2 +:10AEA00000000000000000000000000000000000A2 +:10AEB0000000000000000000000000000000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF00000000000000000000000000000000000041 +:10AF10000000000000000000000000000000000031 +:10AF20000000000000000000000000000000000021 +:10AF30000000000000000000000000000000000011 +:10AF40000000000000000000000000000000000001 +:10AF500000000000000000000000000000000000F1 +:10AF600000000000000000000000000000000000E1 +:10AF700000000000000000000000000000000000D1 +:10AF800000000000000000000000000000000000C1 +:10AF900000000000000000000000000000000000B1 +:10AFA00000000000000000000000000000000000A1 +:10AFB0000000000000000000000000000000000091 +:10AFC0000000000000000000000000000000000081 +:10AFD0000000000000000000000000000000000071 +:10AFE0000000000000000000000000000000000061 +:10AFF0000000000000000000000000000000000051 +:10B000000000000000000000000000000000000040 +:10B010000000000000000000000000000000000030 +:10B020000000000000000000000000000000000020 +:10B030000000000000000000000000000000000010 +:10B040000000000000000000000000000000000000 +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000008000000000000000000B +:10D5A000000000000000000000000000000000007B +:10D5B00000000000000000000000000A0000000061 +:10D5C0000000000000000000100000030000000048 +:10D5D0000000000D0000000D3C02080024427340D2 +:10D5E0003C030800246377CCAC4000000043202BB0 +:10D5F0001480FFFD244200043C1D080037BD7FFC61 +:10D6000003A0F0213C100800261032103C1C08003A +:10D61000279C73400E0010FE000000000000000D6B +:10D6200030A5FFFF30C600FF274301808F4201B8BD +:10D630000440FFFE24020002AC640000A465000860 +:10D64000A066000AA062000B3C021000AC67001844 +:10D6500003E00008AF4201B83C0360008C624FF861 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9 +:10D670003C02100003E00008AC624FF89482000CFA +:10D680002486001400A0382100021302000210803A +:10D690000082402100C8102B1040005700000000FD +:10D6A00090C300002C6200095040005190C200015C +:10D6B000000310803C030800246372F00043102133 +:10D6C0008C420000004000080000000090C30001F0 +:10D6D0002402000A1462003A000000000106102330 +:10D6E0002C42000A1440003624C600028CE20000DE +:10D6F00034420100ACE2000090C2000090C300017F +:10D7000090C4000290C5000300031C000002160034 +:10D710000043102500042200004410250045102578 +:10D7200024C60004ACE2000490C2000090C30001D3 +:10D7300090C4000290C500030002160000031C0004 +:10D740000043102500042200004410250045102548 +:10D7500024C600040A000CB8ACE2000890C3000123 +:10D76000240200041462001624C6000290C20000C5 +:10D7700090C400018CE30000000212000044102558 +:10D780003463000424C60002ACE2000C0A000CB8AA +:10D79000ACE3000090C300012402000314620008FF +:10D7A00024C600028CE2000090C3000024C60001E1 +:10D7B00034420008A0E300100A000CB8ACE20000FC +:10D7C00003E000082402000190C3000124020002CB +:10D7D0001062000224C40002010020210A000CB8DB +:10D7E000008030210A000CB824C6000190C200015C +:10D7F0000A000CB800C2302103E00008000010212C +:10D8000027BDFFE8AFBF0014AFB000100E00130239 +:10D8100000808021936200052403FFFE0200202186 +:10D82000004310248FBF00148FB00010A3620005C6 +:10D830000A00130B27BD001827BDFFE8AFB000108A +:10D84000AFBF00140E000F3C0080802193620000E7 +:10D8500024030050304200FF14430004240201005E +:10D86000AF4201800A000D3002002021AF4001804C +:10D87000020020218FBF00148FB000100A000FE7B4 +:10D8800027BD001827BDFF80AFBE0078AFB700747A +:10D89000AFB20060AFBF007CAFB60070AFB5006C38 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874 +:10D8B0008F5001283C0208008C4231A02403FF80D5 +:10D8C0009365003F0202102100431024AF42002460 +:10D8D0003C0208008C4231A09364000530B200FF86 +:10D8E000020210213042007F034218210004202749 +:10D8F0003C02000A0062182130840001AF8300144A +:10D900000000F0210000B82114800053AFA00050A7 +:10D9100093430116934401128F450104306300FFC5 +:10D920003C020001308400FF00A2282403431021A0 +:10D9300003441821245640002467400014A001CD60 +:10D940002402000193620000304300FF2402002003 +:10D950001062000524020050106200060000000062 +:10D960000A000D74000000000000000D0A000D7D8B +:10D97000AFA000303C1E080027DE738C0A000D7D2E +:10D98000AFA000303C0208008C4200DC24420001C1 +:10D990003C010800AC2200DC0E00139F00000000D8 +:10D9A0000A000F318FBF007C8F4201043C0300202E +:10D9B00092D3000D004310240002202B00042140CC +:10D9C000AFA400308F4301043C02004000621824E1 +:10D9D000146000023485004000802821326200205B +:10D9E000AFA500301440000234A6008000A0302112 +:10D9F00010C0000BAFA6003093C500088F67004C25 +:10DA00000200202100052B0034A5008130A5F08103 +:10DA10000E000C9B30C600FF0A000F2E0000000015 +:10DA20009362003E304200401040000F2402000488 +:10DA300056420007240200120200202100E02821A3 +:10DA40000E0013F702C030210A000F318FBF007C97 +:10DA500016420005000000000E000D2100002021EC +:10DA60000A000F318FBF007C9743011A96C4000E45 +:10DA700093620035326500043075FFFF00442004D6 +:10DA8000AFA400548ED1000410A000158ED400085D +:10DA90009362003E3042004010400007000000004A +:10DAA0000E0013E0022020211040000D00000000B5 +:10DAB0000A000F2E000000008F6200440222102393 +:10DAC0000440016A000000008F6200480222102317 +:10DAD00004410166240400160A000E218FC20004CE +:10DAE0008F6200480222102304400008000000005A +:10DAF0003C0208008C423100244200013C01080035 +:10DB0000AC2231000A000F23000000008F620040A9 +:10DB100002221023184000128F8400143C020800D7 +:10DB20008C423100327300FC0000A8212442000125 +:10DB30003C010800AC2231008F6300409482011C3C +:10DB4000022318233042FFFF0043102A50400010E8 +:10DB50002402000C8F6200400A000DF20222102302 +:10DB60009483011C9762003C0043102B1040000678 +:10DB7000000000009482011C00551023A482011CA7 +:10DB80000A000DF72402000CA480011C2402000CE2 +:10DB9000AFA200308F620040005120231880000D9A +:10DBA00002A4102A1440012600000000149500066B +:10DBB00002A410233A620001304200011440012007 +:10DBC0000000000002A41023022488210A000E098C +:10DBD0003055FFFF00002021326200021040001A81 +:10DBE000326200109362003E30420040504000110B +:10DBF0008FC200040E00130202002021240200182C +:10DC0000A362003F936200052403FFFE020020216F +:10DC1000004310240E00130BA362000524040039F6 +:10DC2000000028210E0013C9240600180A000F3036 +:10DC300024020001240400170040F809000000003D +:10DC40000A000F302402000110400108000000000B +:10DC50008F63004C8F620054028210231C4001032A +:10DC600002831023044200010060A021AFA4001829 +:10DC7000AFB10010AFB50014934201208F65004092 +:10DC80009763003C304200FF034210210044102102 +:10DC90008FA400543063FFFF244240000083182B00 +:10DCA0008FA40030AFA20020AFA50028008320255C +:10DCB000AFA40030AFA50024AFA0002CAFB4003457 +:10DCC0009362003E30420008504000118FC20000B5 +:10DCD00002C0202127A500380E000CB2AFA00038EA +:10DCE0005440000B8FC200008FA200383042010068 +:10DCF000504000078FC200008FA3003C8F6200607D +:10DD00000062102304430001AF6300608FC2000073 +:10DD10000040F80927A400108FA200303042000212 +:10DD200054400001327300FE9362003E30420040D6 +:10DD3000104000378FA200248F6200541682001A10 +:10DD40003262000124020014124200102A4200151F +:10DD500010400006240200162402000C12420007A4 +:10DD6000326200010A000E7D000000001242000530 +:10DD7000326200010A000E7D000000000A000E78E9 +:10DD80002417000E0A000E78241700100A000E7CDB +:10DD900024170012936200232403FFBD00431024C4 +:10DDA000A362002332620001104000198FA20024F8 +:10DDB0002402000C1242000E2A42000D1040000600 +:10DDC0002402000E2402000A124200078FA200243F +:10DDD0000A000E9524420001124200088FA200247E +:10DDE0000A000E95244200010A000E932417000831 +:10DDF0002402000E16E20002241700162417001059 +:10DE00008FA2002424420001AFA200248FA200248C +:10DE10008FA300148F76004000431021AF620040B2 +:10DE20008F8200149442011C104000090000000081 +:10DE30008F6200488F6400409763003C00441023C9 +:10DE40003063FFFF0043102A104000088FA20054E7 +:10DE5000936400368F6300403402FFFC008210049C +:10DE600000621821AF6300488FA200548FA60030D3 +:10DE70000282902130C200081040000E0000000015 +:10DE80008F6200581642000430C600FF9742011A04 +:10DE90005040000134C6001093C500088FA700341D +:10DEA0000200202100052B0034A500800E000C9BF1 +:10DEB00030A5F0808F620040005610231840001BF0 +:10DEC0008FA200183C0208008C42319830420010AA +:10DED0001040000D24020001976200681440000AFF +:10DEE000240200018F8200149442011C1440000699 +:10DEF00024020001A76200689742007A244200646D +:10DF00000A000EE9A7620012A76200120E001302B7 +:10DF1000020020219362007D2403000102002021E1 +:10DF2000344200010A000EE7AFA300501840000A77 +:10DF3000000000000E001302020020219362007D09 +:10DF40002403000102002021AFA30050344200044A +:10DF50000E00130BA362007D9362003E304200402E +:10DF60001440000C326200011040000A0000000062 +:10DF70008F6300408FC20004240400182463000152 +:10DF80000040F809AF6300408FA200300A000F3054 +:10DF9000304200048F620058105200100000000050 +:10DFA0008F620018022210231C4000082404000184 +:10DFB0008F62001816220009000000008F62001C0A +:10DFC000028210230440000500000000AF720058D8 +:10DFD000AFA40050AF710018AF74001C12E0000B2A +:10DFE0008FA200500E00130202002021A377003FF1 +:10DFF0000E00130B0200202102E030212404003720 +:10E000000E0013C9000028218FA200501040000309 +:10E01000000000000E000CA90200202112A0000543 +:10E02000000018218FA2003030420004504000113F +:10E0300000601021240300010A000F30006010214D +:10E040000E001302020020219362007D02002021B5 +:10E05000344200040E00130BA362007D0E000CA9D5 +:10E06000020020210A000F3024020001AF400044CA +:10E07000240200018FBF007C8FBE00788FB7007430 +:10E080008FB600708FB5006C8FB400688FB30064DA +:10E090008FB200608FB1005C8FB0005803E00008C1 +:10E0A00027BD00808F4201B80440FFFE2402080013 +:10E0B000AF4201B803E00008000000003C02000885 +:10E0C00003421021944200483084FFFF2484001250 +:10E0D0003045FFFF10A0001700A4102B10400016C1 +:10E0E00024020003934201202403001AA343018B5E +:10E0F000304200FF2446FFFE8F82000000A6182B4E +:10E100003863000100021382004310241040000510 +:10E110008F84000434820001A746019403E00008C4 +:10E12000AF8200042402FFFE0082102403E00008F6 +:10E13000AF8200042402000303E00008A342018B25 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 +:10E1600000000000AF440180AF4400200E000F42C9 +:10E17000020020218F8300008F840004A750019AA1 +:10E18000A750018EA74301908F8300083082800042 +:10E19000AF4301A8A75101881040000E8F820004F0 +:10E1A00093420116304200FC24420004005A102120 +:10E1B0008C4240003042FFFF144000068F82000472 +:10E1C0003C02FFFF34427FFF00821024AF82000434 +:10E1D0008F8200042403BFFF00431024A74201A63E +:10E1E0009743010C8F42010400031C003042FFFFE3 +:10E1F00000621825AF4301AC3C021000AF4201B8E9 +:10E200008FBF00188FB100148FB0001003E000081A +:10E2100027BD00208F470070934201128F830000BA +:10E2200027BDFFF0304200FF00022882306201006B +:10E23000000030211040004324A40003306240005D +:10E24000104000103062200000041080005A10219D +:10E250008C43400024A4000400041080AFA30000FD +:10E26000005A10218C424000AFA2000493420116D4 +:10E27000304200FC005A10218C4240000A000FC0BE +:10E28000AFA200081040002F0000302100041080D1 +:10E29000005A10218C43400024A400040004108084 +:10E2A000AFA30000005A10218C424000AFA000082C +:10E2B000AFA200048FA80008000030210000202138 +:10E2C000240A00083C0908002529010003A41021A4 +:10E2D000148A000300042A001100000A0000000054 +:10E2E00090420000248400012C83000C00A2102125 +:10E2F00000021080004910218C4200001460FFF3DE +:10E3000000C230263C0408008C8431048F42007027 +:10E310002C83002010600009004738233C030800CC +:10E32000246331080004108000431021248300017D +:10E33000AC4700003C010800AC233104AF86000864 +:10E340002406000100C0102103E0000827BD0010D2 +:10E350003C0208008C42003827BDFFD0AFB5002436 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 +:10E37000AFB20018AFB00010000088213C150800B3 +:10E3800026B50038144000022454FFFF0000A021ED +:10E390009742010E8F8400003042FFFF308340001F +:10E3A0001060000A245200043C0200200082102465 +:10E3B00050400007308280008F8200042403BFFF9A +:10E3C000008318240A0010103442100030828000AC +:10E3D0001040000A3C020020008210241040000778 +:10E3E0008F8200043C03FFFF34637FFF0083182407 +:10E3F00034428000AF820004AF8300000E000F980B +:10E400000000000014400007000000009743011EB8 +:10E410009742011C3063FFFF0002140000621825C0 +:10E42000AF8300089742010C8F4340003045FFFF47 +:10E430003402FFFF14620003000000000A001028ED +:10E44000241100208F42400030420100544000015E +:10E45000241100108F8400003082100050400014FE +:10E4600036310001308200201440000B3C021000C5 +:10E47000008210245040000E363100013C030E0093 +:10E480003C020DFF008318243442FFFF0043102B91 +:10E4900050400007363100013C0208008C42002C3D +:10E4A000244200013C010800AC22002C363100055A +:10E4B0003C0608008CC6003454C000238F85000041 +:10E4C0008F820004304240005440001F8F850000BE +:10E4D0003C021F01008210243C0310005443001A28 +:10E4E0008F85000030A20200144000178F850000C5 +:10E4F0003250FFFF363100028F4201B80440FFFE68 +:10E5000000000000AF400180020020210E000F42F9 +:10E51000AF4000208F8300042402BFFFA750019A60 +:10E52000006218248F820000A750018EA751018835 +:10E53000A74301A6A74201903C021000AF4201B8D8 +:10E540000A0010F5000010213C02100000A2102467 +:10E550001040003A0000000010C0000F0000000052 +:10E5600030A201001040000C3C0302003C020F00EE +:10E5700000A2102410430008000000008F82000851 +:10E58000005410240055102190420004244200043D +:10E590000A00109F000221C00000000000051602C2 +:10E5A0003050000F3A0300022E4203EF38420001C0 +:10E5B0002C6300010062182414600073240200011F +:10E5C0003C0308008C6300D02E06000C386200016A +:10E5D0002C4200010046102414400015001021C0F8 +:10E5E0002602FFFC2C4200045440001100002021B0 +:10E5F000386200022C420001004610241040000343 +:10E60000000512420A00109F000020210010182B64 +:10E610000043102450400006001021C000002021BB +:10E620003245FFFF0E000F633226FFFB001021C0B2 +:10E630003245FFFF0A0010F2362600028F424000EA +:10E640003C0308008C630024304201001040004667 +:10E6500030620001322200043070000D14400002CC +:10E660002413000424130002000512C238420001E2 +:10E670002E4303EF304200013863000100431025B0 +:10E68000104000033231FFFB2402FFFB0202802412 +:10E6900010C000183202000130A201001040001525 +:10E6A000320200013C020F0000A210243C030200D1 +:10E6B0001043000F8F8200082403FFFE0203802412 +:10E6C00000541024005510219042000402333025DC +:10E6D0002442000412000002000221C03226FFFF83 +:10E6E0000E000F633245FFFF1200002700001021CB +:10E6F000320200011040000D320200042402000129 +:10E7000012020002023330253226FFFF00002021D2 +:10E710000E000F633245FFFF2402FFFE0202802439 +:10E7200012000019000010213202000410400016EF +:10E7300024020001240200041202000202333025E8 +:10E740003226FFFF3245FFFF0E000F632404010055 +:10E750002402FFFB020280241200000B00001021A3 +:10E760000A0010F5240200011040000700001021EB +:10E770003245FFFF36260002000020210E000F6305 +:10E7800000000000000010218FBF00288FB500247A +:10E790008FB400208FB3001C8FB200188FB100140B +:10E7A0008FB0001003E0000827BD003027BDFFD068 +:10E7B000AFB000103C04600CAFBF002CAFB6002817 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC +:10E7E000004310243442380CAC8250002402000351 +:10E7F0003C106000AF4200088E0208083C1B8008F5 +:10E800003C010800AC2000203042FFF038420010EC +:10E810002C4200010E001B8DAF8200183C04FFFF4C +:10E820003C020400348308063442000CAE0219484E +:10E83000AE03194C3C0560168E0219808CA30000B3 +:10E840003442020000641824AE0219803C02535383 +:10E850001462000334A47C008CA200040050202128 +:10E860008C82007C8C830078AF820010AF83000C18 +:10E870008F55000032A200031040FFFD32A20001BC +:10E880001040013D32A200028F420128AF42002019 +:10E890008F4201048F430100AF8200000E000F3C45 +:10E8A000AF8300043C0208008C4200C01040000806 +:10E8B0008F8400003C0208008C4200C42442000106 +:10E8C0003C010800AC2200C40A00126900000000EC +:10E8D0003C020010008210241440010C8F830004BD +:10E8E0003C0208008C4200203C0308008C63003886 +:10E8F00000008821244200013C010800AC220020D5 +:10E900003C16080026D60038146000022474FFFF6D +:10E910000000A0219742010E308340003042FFFFEB +:10E920001060000A245200043C02002000821024DF +:10E9300050400007308280008F8200042403BFFF14 +:10E94000008318240A0011703442100030828000C5 +:10E950001040000A3C0200200082102410400007F2 +:10E960008F8200043C03FFFF34637FFF0083182481 +:10E9700034428000AF820004AF8300000E000F9885 +:10E980000000000014400007000000009743011E33 +:10E990009742011C3063FFFF00021400006218253B +:10E9A000AF8300089742010C8F4340003045FFFFC2 +:10E9B0003402FFFF14620003000000000A00118807 +:10E9C000241100208F4240003042010054400001D9 +:10E9D000241100108F840000308210005040001479 +:10E9E00036310001308200201440000B3C02100040 +:10E9F000008210245040000E363100013C030E000E +:10EA00003C020DFF008318243442FFFF0043102B0B +:10EA100050400007363100013C0208008C42002CB7 +:10EA2000244200013C010800AC22002C36310005D4 +:10EA30003C0608008CC6003454C000238F850000BB +:10EA40008F820004304240005440001F8F85000038 +:10EA50003C021F01008210243C0310005443001AA2 +:10EA60008F85000030A20200144000178F8500003F +:10EA70003250FFFF363100028F4201B80440FFFEE2 +:10EA800000000000AF400180020020210E000F4274 +:10EA9000AF4000208F8300042402BFFFA750019ADB +:10EAA000006218248F820000A750018EA7510188B0 +:10EAB000A74301A6A74201903C021000AF4201B853 +:10EAC0000A001267000010213C02100000A210246E +:10EAD0001040003A0000000010C0000F00000000CD +:10EAE00030A201001040000C3C0302003C020F0069 +:10EAF00000A2102410430008000000008F820008CC +:10EB000000541024005610219042000424420004B6 +:10EB10000A0011FF000221C00000000000051602DB +:10EB20003050000F3A0300022E4203EF384200013A +:10EB30002C63000100621824146000852402000187 +:10EB40003C0308008C6300D02E06000C38620001E4 +:10EB50002C4200010046102414400015001021C072 +:10EB60002602FFFC2C42000454400011000020212A +:10EB7000386200022C42000100461024504000037D +:10EB8000000512420A0011FF000020210010182B7E +:10EB90000043102450400006001021C00000202136 +:10EBA0003245FFFF0E000F633226FFFB001021C02D +:10EBB0003245FFFF0A001252362600028F42400003 +:10EBC0003C0308008C6300243042010010400046E2 +:10EBD00030620001322200043070000D1440000247 +:10EBE0002413000424130002000512C2384200015D +:10EBF0002E4303EF3042000138630001004310252B +:10EC0000104000033231FFFB2402FFFB020280248C +:10EC100010C000183202000130A20100104000159F +:10EC2000320200013C020F0000A210243C0302004B +:10EC30001043000F8F8200082403FFFE020380248C +:10EC40000054102400561021904200040233302555 +:10EC50002442000412000002000221C03226FFFFFD +:10EC60000E000F633245FFFF120000390000102133 +:10EC7000320200011040000D3202000424020001A3 +:10EC800012020002023330253226FFFF000020214D +:10EC90000E000F633245FFFF2402FFFE02028024B4 +:10ECA0001200002B00001021320200041040002846 +:10ECB0002402000124020004120200020233302563 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0 +:10ECD0002402FFFB020280241200001D000010210C +:10ECE0000A001267240200015040001900001021A0 +:10ECF0003245FFFF36260002000020210E000F6380 +:10ED0000000000000A001267000010212402BFFF6B +:10ED1000006210241040000800000000240287FF59 +:10ED200000621024144000083C020060008210249D +:10ED300010400005000000000E000D34000000002F +:10ED40000A001267000000000E0012C70000000059 +:10ED5000104000063C0240008F4301243C0260202A +:10ED6000AC430014000000003C024000AF420138F8 +:10ED70000000000032A200021040FEBD00000000B2 +:10ED80008F4201403C044000AF4200208F430148C5 +:10ED90003C02700000621824106400420000000071 +:10EDA0000083102B144000063C0260003C0220004F +:10EDB000106200073C0240000A0012C3000000007D +:10EDC0001062003C3C0240000A0012C30000000038 +:10EDD0008F4501408F4601448F42014800021402D2 +:10EDE000304300FF240200041462000A274401801B +:10EDF0008F4201B80440FFFE2402001CAC850000D5 +:10EE0000A082000B3C021000AF4201B80A0012C3FE +:10EE10003C0240002402000914620012000616029F +:10EE2000000229C0AF4500208F4201B80440FFFE18 +:10EE30002402000124030003AF450180A343018B9A +:10EE4000A740018EA740019AA7400190AF4001A8BA +:10EE5000A7420188A74201A6AF4001AC3C021000C6 +:10EE6000AF4201B88F4201B80440FFFE000000002D +:10EE7000AC8500008F42014800021402A482000801 +:10EE800024020002A082000B8F420148A4820010DD +:10EE90003C021000AC860024AF4201B80A0012C345 +:10EEA0003C0240000E001310000000000A0012C3D4 +:10EEB0003C0240000E001BC2000000003C0240006B +:10EEC000AF420178000000000A00112F000000008E +:10EED0008F4201003042003E144000112402000124 +:10EEE000AF4000488F420100304207C0104000058B +:10EEF00000000000AF40004CAF40005003E00008AD +:10EF000024020001AF400054AF4000408F42010096 +:10EF10003042380054400001AF4000442402000158 +:10EF200003E00008000000008F4201B80440FFFE2B +:10EF300024020001AF440180AF400184A74501884D +:10EF4000A342018A24020002A342018B9742014A94 +:10EF500014C00004A7420190AF4001A40A0012EFC0 +:10EF60003C0210008F420144AF4201A43C02100059 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA +:10EF80000440FFFE24020002AF440180AF4401842C +:10EF9000A7450188A342018AA342018B9742014AF7 +:10EFA000A7420190AF4001A48F420144AF4201A8A3 +:10EFB0003C02100003E00008AF4201B83C029000A0 +:10EFC0003442000100822025AF4400208F420020FF +:10EFD0000440FFFE0000000003E000080000000005 +:10EFE0003C028000344200010082202503E000083A +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 +:10F000008F50014093430149934201489344014882 +:10F01000306300FF304200FF00021200006228252A +:10F020002402001910620076308400802862001AE1 +:10F030001040001C24020020240200081062007707 +:10F04000286200091040000E2402000B2402000177 +:10F0500010620034286200025040000524020006BD +:10F0600050600034020020210A00139A00000000C2 +:10F0700010620030020020210A00139A00000000F4 +:10F080001062003B2862000C504000022402000E77 +:10F090002402000910620056020020210A00139A7F +:10F0A0000000000010620056286200211040000F8E +:10F0B000240200382402001C106200582862001D3F +:10F0C000104000062402001F2402001B1062004CA6 +:10F0D000000000000A00139A000000001062004ABD +:10F0E000020020210A00139A00000000106200456F +:10F0F0002862003910400007240200802462FFCB00 +:10F100002C42000210400045020020210A00139604 +:10F110000000302110620009000000000A00139A6C +:10F12000000000001480003D020020210A0013901E +:10F130008FBF00140A001396240600018F4201B805 +:10F140000440FFFE24020002A342018BA745018870 +:10F150009742014AA74201908F420144A74201927F +:10F160003C021000AF4201B80A00139C8FBF00148C +:10F170009742014A144000290000000093620005F4 +:10F180003042000414400025000000000E0013026D +:10F190000200202193620005020020213442000475 +:10F1A0000E00130BA36200059362000530420004B9 +:10F1B00014400002000000000000000D93620000F7 +:10F1C00024030020304200FF14430014000000001C +:10F1D0008F4201B80440FFFE24020005AF500180B9 +:10F1E000A342018B3C0210000A00139AAF4201B8FF +:10F1F0008FBF00148FB000100A0012F227BD001854 +:10F200000000000D02002021000030218FBF0014FB +:10F210008FB000100A0012DD27BD00180000000D9D +:10F220008FBF00148FB0001003E0000827BD001846 +:10F2300027BDFFE8AFBF00100E000F3C000000002C +:10F24000AF4001808FBF0010000020210A000FE7AF +:10F2500027BD00183084FFFF30A5FFFF00001821F4 +:10F260001080000700000000308200011040000202 +:10F2700000042042006518210A0013AB0005284055 +:10F2800003E000080060102110C0000624C6FFFF44 +:10F290008CA2000024A50004AC8200000A0013B573 +:10F2A0002484000403E000080000000010A000080F +:10F2B00024A3FFFFAC860000000000000000000057 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A +:10F2D00003E0000800000000308300FF30A500FFBD +:10F2E00030C600FF274701808F4201B80440FFFE6F +:10F2F000000000008F42012834634000ACE20000AF +:10F3000024020001ACE00004A4E30008A0E2000A2B +:10F3100024020002A0E2000B3C021000A4E5001051 +:10F32000ACE00024ACE00028A4E6001203E00008F2 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6 +:10F3400024030012304200FF1043000D00803021E2 +:10F350008F620044008210230440000A8FBF001017 +:10F360008F620048240400390000282100C21023C5 +:10F3700004410004240600120E0013C9000000001E +:10F380008FBF00102402000103E0000827BD001811 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 +:10F3A000AFB0002890C5000D0080902130A400105F +:10F3B0001080000B00C088218CC300088F620054AD +:10F3C0001062000730A20005144000B524040001BB +:10F3D0000E000D21000020210A0014BB0040202156 +:10F3E00030A200051040000930A30012108000ACCC +:10F3F000240400018E2300088F620054146200A9C7 +:10F400008FBF00340A00142C240400382402001298 +:10F41000146200A3240400010220202127A500106B +:10F420000E000CB2AFA000101040001102402021CD +:10F430008E220008AF620084AF6000400E0013020D +:10F44000000000009362007D024020213442002031 +:10F450000E00130BA362007D0E000CA902402021B8 +:10F46000240400382405008D0A0014B82406001274 +:10F470009362003E304200081040000F8FA200103F +:10F4800030420100104000078FA300148F6200601B +:10F490000062102304430008AF6300600A001441B7 +:10F4A00000000000AF6000609362003E2403FFF79D +:10F4B00000431024A362003E9362003E30420008E5 +:10F4C000144000022406000300003021936200343F +:10F4D000936300378F640084304200FF306300FF85 +:10F4E00000661821000318800043282100A4202B67 +:10F4F0001080000B000000009763003C8F620084C6 +:10F500003063FFFF004510230062182B14600004D5 +:10F51000000000008F6200840A00145D0045802313 +:10F520009762003C3050FFFF8FA300103062000450 +:10F5300010400004000628808FA2001C0A001465F9 +:10F540000202102B2E02021850400003240202185F +:10F550000A00146E020510233063000410600003DB +:10F56000004510238FA2001C00451023004080217D +:10F570002C42008054400001241000800E00130231 +:10F580000240202124020001AF62000C9362003E81 +:10F59000001020403042007FA362003E8E22000413 +:10F5A00024420001AF620040A770003C8F6200500F +:10F5B0009623000E00431021AF6200588F62005066 +:10F5C00000441021AF62005C8E220004AF6200187C +:10F5D0008E220008AF62001C8FA20010304200088B +:10F5E0005440000A93A20020A360003693620036C4 +:10F5F0002403FFDFA36200359362003E0043102422 +:10F60000A362003E0A0014988E220008A36200350F +:10F610008E220008AF62004C8F6200248F6300408E +:10F6200000431021AF6200489362000024030050A1 +:10F63000304200FF144300122403FF803C02080004 +:10F640008C4231A00242102100431024AF42002816 +:10F650003C0208008C4231A08E2400083C03000CC0 +:10F66000024210213042007F03421021004310214A +:10F67000AC4400D88E230008AF820014AC4300DCF9 +:10F680000E00130B02402021240400380000282122 +:10F690002406000A0E0013C9000000002404000123 +:10F6A0008FBF00348FB200308FB1002C8FB0002894 +:10F6B0000080102103E0000827BD003827BDFFF8B7 +:10F6C00027420180AFA20000308A00FF8F4201B8BC +:10F6D0000440FFFE000000008F4601283C020800A5 +:10F6E0008C4231A02403FF80AF86004800C2102165 +:10F6F00000431024AF4200243C0208008C4231A099 +:10F700008FA900008FA8000000C210213042007FA6 +:10F71000034218213C02000A00621821946400D4BC +:10F720008FA700008FA5000024020002AF83001401 +:10F73000A0A2000B8FA30000354260003084FFFFC1 +:10F74000A4E200083C021000AD260000AD04000455 +:10F75000AC60002427BD0008AF4201B803E00008F8 +:10F76000240200018F88003C938200288F830014BC +:10F770003C07080024E7779800481023304200FF38 +:10F78000304900FC246500888F860040304A000321 +:10F790001120000900002021248200048CA3000015 +:10F7A000304400FF0089102AACE3000024A50004C7 +:10F7B0001440FFF924E70004114000090000202153 +:10F7C0002482000190A30000304400FF008A102B27 +:10F7D000A0E3000024A500011440FFF924E7000184 +:10F7E00030C20003144000048F85003C3102000346 +:10F7F0001040000D0000000010A0000900002021B2 +:10F800002482000190C30000304400FF0085102BCB +:10F81000A0E3000024C600011440FFF924E7000122 +:10F8200003E00008000000001100FFFD000020219F +:10F83000248200048CC30000304400FF0088102B99 +:10F84000ACE3000024C600041440FFF924E70004E0 +:10F8500003E00008000000008F83003C9382002832 +:10F8600030C600FF30A500FF00431023304300FFE7 +:10F870008F820014008038210043102114C0000240 +:10F88000244800880083382130E20003144000053A +:10F8900030A2000314400003306200031040000D4A +:10F8A0000000000010A000090000202124820001B7 +:10F8B00090E30000304400FF0085102BA1030000FE +:10F8C00024E700011440FFF92508000103E00008C7 +:10F8D0000000000010A0FFFD000020212482000491 +:10F8E0008CE30000304400FF0085102BAD030000C6 +:10F8F00024E700041440FFF92508000403E0000891 +:10F90000000000000080482130AAFFFF30C600FF41 +:10F9100030E7FFFF274801808F4201B80440FFFE17 +:10F920008F820048AD0200008F420124AD02000426 +:10F930008D220020A5070008A102000A240200165B +:10F94000A102000B934301208D2200088D240004A6 +:10F95000306300FF004310219783003A00441021D8 +:10F960008D250024004310233C0308008C6331A044 +:10F970008F840014A502000C246300E82402FFFF1A +:10F98000A50A000EA5030010A5060012AD0500187B +:10F99000AD020024948201142403FFF73042FFFFDC +:10F9A000AD0200288C820118AD02002C3C02100030 +:10F9B000AD000030AF4201B88D220020004310247A +:10F9C00003E00008AD2200208F82001430E7FFFF23 +:10F9D00000804821904200D330A5FFFF30C600FFD1 +:10F9E0000002110030420F0000E238252748018054 +:10F9F0008F4201B80440FFFE8F820048AD02000034 +:10FA00008F420124AD0200048D220020A5070008CA +:10FA1000A102000A24020017A102000B9343012057 +:10FA20008D2200088D240004306300FF0043102164 +:10FA30009783003A004410218F8400140043102360 +:10FA40003C0308008C6331A0A502000CA505000E44 +:10FA5000246300E8A5030010A5060012AD00001401 +:10FA60008D220024AD0200188C82005CAD02001CC7 +:10FA70008C820058AD0200202402FFFFAD0200245A +:10FA8000948200E63042FFFFAD02002894820060BD +:10FA9000948300BE30427FFF3063FFFF00021200FC +:10FAA00000431021AD02002C3C021000AD000030DC +:10FAB000AF4201B8948200BE2403FFF700A21021D8 +:10FAC000A48200BE8D2200200043102403E0000821 +:10FAD000AD220020274301808F4201B80440FFFE81 +:10FAE0008F8200249442001C3042FFFF000211C0AC +:10FAF000AC62000024020019A062000B3C0210005E +:10FB0000AC60003003E00008AF4201B88F87002CE2 +:10FB100030C300FF8F4201B80440FFFE8F820048CF +:10FB200034636000ACA2000093820044A0A20005F0 +:10FB30008CE20010A4A20006A4A300088C8200207E +:10FB40002403FFF7A0A2000A24020002A0A2000BD7 +:10FB50008CE20000ACA200108CE20004ACA2001405 +:10FB60008CE2001CACA200248CE20020ACA2002895 +:10FB70008CE2002CACA2002C8C820024ACA20018D9 +:10FB80003C021000AF4201B88C82002000431024D8 +:10FB900003E00008AC8200208F86001427BDFFE838 +:10FBA000AFBF0014AFB0001090C20063304200201D +:10FBB0001040000830A500FF8CC2007C2403FFDF4A +:10FBC00024420001ACC2007C90C2006300431024B8 +:10FBD000A0C2006310A000238F830014275001806F +:10FBE000020028210E0015D6240600828F82001400 +:10FBF000904200633042004050400019A38000440E +:10FC00008F83002C8F4201B80440FFFE8F82004892 +:10FC1000AE02000024026082A60200082402000254 +:10FC2000A202000B8C620008AE0200108C62000C75 +:10FC3000AE0200148C620014AE0200188C62001830 +:10FC4000AE0200248C620024AE0200288C620028E0 +:10FC5000AE02002C3C021000AF4201B8A380004469 +:10FC60008F8300148FBF00148FB000109062006368 +:10FC700027BD00183042007FA06200639782003ADF +:10FC80008F86003C8F850014938300280046102344 +:10FC9000A782003AA4A000E490A400638F820040F1 +:10FCA000AF83003C2403FFBF0046102100832024C3 +:10FCB000AF820040A0A400638F820014A04000BD6A +:10FCC0008F82001403E00008A44000BE8F8A001455 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B +:10FCE000AFBF00189389001C954200E430D100FF9B +:10FCF0000109182B0080802130AC00FF3047FFFF46 +:10FD00000000582114600003310600FF012030215B +:10FD1000010958239783003A0068102B1440003CD7 +:10FD20000000000014680007240200018E02002079 +:10FD30002403FFFB34E7800000431024AE020020C0 +:10FD40002402000134E70880158200053165FFFFB9 +:10FD50000E001554020020210A00169102002021F5 +:10FD60000E001585020020218F8400482743018062 +:10FD70008F4201B80440FFFE24020018AC6400006A +:10FD8000A062000B8F840014948200E6A46200102D +:10FD90003C021000AC600030AF4201B894820060B9 +:10FDA00024420001A4820060948200603C030800A9 +:10FDB0008C63318830427FFF5443000F02002021C2 +:10FDC000948200602403800000431024A482006019 +:10FDD0009082006090830060304200FF000211C2F8 +:10FDE00000021027000211C03063007F0062182556 +:10FDF000A083006002002021022028218FBF00186C +:10FE00008FB100148FB000100A0015F927BD002033 +:10FE1000914200632403FF8000431025A142006348 +:10FE20009782003A3048FFFF110000209383001CA6 +:10FE30008F840014004B1023304600FF948300E4AD +:10FE40002402EFFF0168282B00621824A48300E439 +:10FE500014A000038E020020010058210000302170 +:10FE60002403FFFB34E7800000431024AE0200208F +:10FE700024020001158200053165FFFF0E001554B4 +:10FE8000020020210A0016B99783003A0E0015855A +:10FE9000020020219783003A8F82003CA780003A1D +:10FEA00000431023AF82003C9383001C8F82001418 +:10FEB0008FBF00188FB100148FB0001027BD002035 +:10FEC00003E00008A04300BD938200442403000126 +:10FED00027BDFFE8004330042C420020AFB00010E3 +:10FEE000AFBF00142410FFFE10400005274501801D +:10FEF0003C0208008C4231900A0016D600461024BD +:10FF00003C0208008C423194004610241440000743 +:10FF1000240600848F8300142410FFFF9062006287 +:10FF20003042000F34420040A06200620E0015D63D +:10FF300000000000020010218FBF00148FB00010DD +:10FF400003E0000827BD00188F83002427BDFFE0D1 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB +:10FF60009062000D00A0902130D100FF3042007F50 +:10FF7000A062000D8F8500148E4300180080802140 +:10FF80008CA2007C146200052402000E90A2006383 +:10FF9000344200200A0016FFA0A200630E0016C51E +:10FFA000A38200442403FFFF104300472404FFFF03 +:10FFB00052200045000020218E4300003C0200102A +:10FFC00000621024504000043C020008020020217E +:10FFD0000A00170E24020015006210245040000988 +:10FFE0008E45000002002021240200140E0016C5D8 +:10FFF000A38200442403FFFF104300332404FFFFC7 +:020000021000EC +:100000008E4500003C02000200A2102410400016A1 +:100010003C0200048F8600248CC200148CC30010A4 +:100020008CC40014004310230044102B50400005E2 +:10003000020020218E43002C8CC2001010620003AD +:10004000020020210A00173F240200123C02000493 +:1000500000A210245040001C00002021020020219A +:100060000A00173F2402001300A2102410400006CB +:100070008F8300248C620010504000130000202168 +:100080000A001739020020218C6200105040000441 +:100090008E42002C020020210A00173F240200118A +:1000A00050400009000020210200202124020017F6 +:1000B0000E0016C5A38200442403FFFF1043000274 +:1000C0002404FFFF000020218FBF001C8FB2001806 +:1000D0008FB100148FB000100080102103E00008E1 +:1000E00027BD00208F83001427BDFFD8AFB40020A8 +:1000F000AFB3001CAFB20018AFB10014AFB0001026 +:10010000AFBF0024906200638F91002C2412FFFF88 +:100110003442004092250000A06200638E2200104D +:100120000080982130B0003F105200060360A021EB +:100130002402000D0E0016C5A38200441052005484 +:100140002404FFFF8F8300148E2200188C63007C30 +:1001500010430007026020212402000E0E0016C585 +:10016000A38200442403FFFF104300492404FFFF3F +:1001700024040020120400048F83001490620063A2 +:1001800034420020A06200638F85003410A000205C +:1001900000000000560400048F8200140260202139 +:1001A0000A0017902402000A9683000A9442006015 +:1001B0003042FFFF144300048F8200202404FFFD1F +:1001C0000A0017B7AF82003C3C0208008C42318C19 +:1001D0000045102B14400006026020210000282159 +:1001E0000E001646240600010A0017B70000202161 +:1001F0002402002D0E0016C5A38200442403FFFF35 +:10020000104300232404FFFF0A0017B70000202139 +:10021000160400058F8400148E2300142402FFFFAF +:100220005062001802602021948200602442000184 +:10023000A4820060948200603C0308008C633188D3 +:1002400030427FFF5443000F0260202194820060FF +:100250002403800000431024A48200609082006088 +:1002600090830060304200FF000211C2000210279C +:10027000000211C03063007F00621825A083006077 +:10028000026020210E0015F9240500010000202144 +:100290008FBF00248FB400208FB3001C8FB20018D2 +:1002A0008FB100148FB000100080102103E000080F +:1002B00027BD00288F83001427BDFFE8AFB00010D2 +:1002C000AFBF0014906200638F87002C00808021F4 +:1002D000344200408CE60010A06200633C0308003A +:1002E0008C6331B030C23FFF0043102B1040004EF2 +:1002F0008F8500302402FF8090A3000D004310245E +:10030000304200FF504000490200202100061382C5 +:10031000304800032402000255020044020020215C +:1003200094A2001C8F85001424030023A4A20114AE +:100330008CE60000000616023042003F1043001019 +:100340003C0300838CE300188CA2007C1062000642 +:100350002402000E0E0016C5A38200442403FFFFF2 +:10036000104300382404FFFF8F8300149062006361 +:1003700034420020A06200630A0017FC8F8300242F +:1003800000C31024144300078F83002490A200624E +:100390003042000F34420020A0A20062A38800383F +:1003A0008F8300249062000D3042007FA062000D18 +:1003B0008F83003410600018020020218F840030E9 +:1003C0008C8200100043102B1040000924020018FA +:1003D000020020210E0016C5A38200442403FFFF63 +:1003E000104300182404FFFF0A00182400002021F5 +:1003F0008C820010240500010200202100431023FC +:100400008F830024240600010E001646AC62001003 +:100410000A001824000020210E0015F9240500010F +:100420000A00182400002021020020212402000DCF +:100430008FBF00148FB0001027BD00180A0016C52A +:10044000A38200448FBF00148FB0001000801021E1 +:1004500003E0000827BD001827BDFFC8AFB2002089 +:10046000AFBF0034AFB60030AFB5002CAFB400283A +:10047000AFB30024AFB1001CAFB000188F46012805 +:100480003C0308008C6331A02402FF80AF86004843 +:1004900000C318213065007F03452821006218241D +:1004A0003C02000AAF43002400A2282190A200626F +:1004B00000809021AF850014304200FF000211023D +:1004C000A382003890A200BC304200021440000217 +:1004D00024030034240300308F820014A3830028F7 +:1004E000938300388C4200C0A3800044AF82003C5C +:1004F000240200041062031C8F84003C8E4400041C +:10050000508003198F84003C8E4200103083FFFF1F +:10051000A784003A106002FFAF8200408F8400146D +:100520002403FF809082006300621024304200FFA9 +:10053000144002CF9785003A9383003824020002CA +:1005400030B6FFFF14620005000088219382002866 +:100550002403FFFD0A001B19AF82003C8F82003C80 +:1005600002C2102B144002A18F8400400E0014EC34 +:1005700000000000938300283C040800248477983E +:10058000240200341462002EAF84002C3C0A0800C0 +:100590008D4A77C82402FFFFAFA2001000803821E7 +:1005A0002405002F3C09080025297398240800FF22 +:1005B0002406FFFF90E2000024A3FFFF00062202B2 +:1005C00000C21026304200FF0002108000491021B6 +:1005D0008C420000306500FF24E7000114A8FFF5FD +:1005E0000082302600061027AFA20014AFA2001030 +:1005F0000000282127A7001027A6001400C51023FB +:100600009044000324A2000100A71821304500FFF8 +:100610002CA200041440FFF9A06400008FA2001077 +:100620001142000724020005024020210E0016C5D9 +:10063000A38200442403FFFF104300642404FFFF4F +:100640003C0208009042779C104000098F82001401 +:10065000024020212402000C0E0016C5A382004493 +:100660002403FFFF104300592404FFFF8F8200146E +:10067000A380001C3C0308008C63779C8C440080A2 +:100680003C0200FF3442FFFF006218240083202B4D +:1006900010800008AF83003402402021240200199A +:1006A0000E0016C5A38200442403FFFF1043004739 +:1006B0002404FFFF8F87003C9782003A8F85003427 +:1006C000AF8700200047202310A0003BA784003AFA +:1006D0008F86001430A200030002102390C300BCD8 +:1006E0003050000300B0282100031882307300014D +:1006F0000013108000A228213C0308008C6331A065 +:100700008F8200483084FFFF0085202B004310219A +:1007100010800011244200888F84002C1082000E6B +:100720003C033F013C0208008C42779800431024B0 +:100730003C0325001443000630E500FF8C820000D6 +:10074000ACC200888C8200100A0018E9ACC2009884 +:100750000E001529000030219382001C8F850014A3 +:100760008F830040020238218F82003CA387001C47 +:1007700094A400E4006218218F82003434841000B5 +:10078000AF83004000503021A4A400E41260000EAA +:10079000AF86003C24E20004A382001C94A200E483 +:1007A00024C30004AF83003C34422000A4A200E430 +:1007B0000A001906000020218F820040AF80003C13 +:1007C00000471021AF820040000020212414FFFFC9 +:1007D000109402112403FFFF3C0808008D0877A83D +:1007E0003C0208008C4231B03C03080090637798CB +:1007F00031043FFF0082102B1040001B3067003F88 +:100800003C0208008C4231A88F83004800042180FC +:1008100000621821006418213062007F0342282101 +:100820003C02000C00A228213C020080344200015E +:100830003066007800C230252402FF800062102458 +:10084000AF42002830640007AF4208048F820014D2 +:100850000344202124840940AF460814AF850024B6 +:10086000AF840030AC4301189383003824020003A6 +:10087000146201CF240200012402002610E201D1FB +:1008800028E2002710400013240200322402002234 +:1008900010E201CC28E200231040000824020024CA +:1008A0002402002010E201B82402002110E20147D6 +:1008B000024020210A001AFB2402000B10E201C1B1 +:1008C0002402002510E20010024020210A001AFB39 +:1008D0002402000B10E201AE28E2003310400006B3 +:1008E0002402003F2402003110E2009A024020213D +:1008F0000A001AFB2402000B10E201A5024020218D +:100900000A001AFB2402000B8F90002C3C03080005 +:100910008C6331B08F8500308E0400100000A82158 +:100920008CB3001430823FFF0043102B8CB10020A9 +:100930005040018F0240202190A3000D2402FF802F +:1009400000431024304200FF504001890240202122 +:10095000000413823042000314400185024020212C +:1009600094A3001C8F8200148E040028A443011459 +:100970008CA20010026218231064000302402021A0 +:100980000A00197C2402001F8F82003400621021AB +:100990000262102B104000088F83002402402021A7 +:1009A000240200180E0016C5A382004410540174DE +:1009B0002404FFFF8F8300248F8400348C62001096 +:1009C0000224882100441023AC6200108F8200149E +:1009D000AC7100208C4200680051102B10400009BF +:1009E0008F830030024020212402001D0E0016C516 +:1009F000A38200442403FFFF104301612404FFFF8E +:100A00008F8300308E0200248C6300241043000783 +:100A1000024020212402001C0E0016C5A3820044BF +:100A20002403FFFF104301562404FFFF8F8400249A +:100A30008C82002424420001AC8200241233000482 +:100A40008F8200148C4200685622000E8E02000035 +:100A50008E0200003C030080004310241440000D6F +:100A60002402001A024020210E0016C5A382004471 +:100A70002403FFFF104301422404FFFF0A0019BAB8 +:100A80008E0200143C0300800043102450400003F9 +:100A90008E020014AC8000208E0200142411FFFF8F +:100AA0001051000E3C0308003C0208008C423190BB +:100AB000004310242403001B14400007A3830044B8 +:100AC0000E0016C5024020211051012D2404FFFF05 +:100AD0000A0019CB8E030000A38000448E0300009F +:100AE0003C02000100621024104000123C02008011 +:100AF0000062102414400008024020212402001A41 +:100B00000E0016C5A38200442403FFFF1043011CFE +:100B10002404FFFF02402021020028210E0016E5D8 +:100B2000240600012403FFFF104301152404FFFFE6 +:100B3000241500018F83002402A0302102402021CF +:100B40009462003624050001244200010A001ADFE5 +:100B5000A46200368F90002C3C0308008C6331B0F7 +:100B60008E13001032623FFF0043102B10400089AB +:100B70008F8400302402FF809083000D00431024F6 +:100B8000304200FF104000842402000D0013138245 +:100B900030420003240300011443007F2402000DAF +:100BA0009082000D30420008544000048F820034CF +:100BB000024020210A001A102402002450400004A0 +:100BC0008E03000C024020210A001A102402002784 +:100BD0008C82002054620006024020218E0300080F +:100BE0008C820024506200098E02001402402021F1 +:100BF000240200200E0016C5A38200441054007188 +:100C00002403FFFF0A001A458F8400242411FFFFEC +:100C1000145100048F860014024020210A001A405B +:100C2000240200258E0300188CC2007C1062000391 +:100C30002402000E0A001A40024020218E030024E4 +:100C40008C82002810620003240200210A001A404E +:100C5000024020218E0500288C82002C10A2000367 +:100C60002402001F0A001A40024020218E03002C9B +:100C700014600003240200230A001A4002402021CD +:100C80008CC200680043102B104000032402002691 +:100C90000A001A40024020218C82001400651821AD +:100CA0000043102B104000088F84002402402021B4 +:100CB000240200220E0016C5A382004410510041F8 +:100CC0002403FFFF8F8400242403FFF79082000D8C +:100CD00000431024A082000D8F8600143C030800FE +:100CE0008C6331AC8F82004894C400E08F8500246F +:100CF0000043102130847FFF000420400044102175 +:100D00003043007F034320213C03000E0083202159 +:100D10002403FF8000431024AF42002CA493000062 +:100D20008CA2002824420001ACA200288CA2002C36 +:100D30008E03002C00431021ACA2002C8E02002C4C +:100D4000ACA200308E020014ACA2003494A2003A8F +:100D500024420001A4A2003A94C600E03C0208002C +:100D60008C4231B024C4000130837FFF1462000F35 +:100D700000803021240280000082302430C2FFFF36 +:100D8000000213C2304200FF000210270A001A7E40 +:100D9000000233C02402000D024020210E0016C5BF +:100DA000A38200440A001A84004018218F82001494 +:100DB00002402021240500010E0015F9A44600E0A0 +:100DC000000018210A001B16006088218F90002C5B +:100DD0003C0308008C6331B08E05001030A23FFF49 +:100DE0000043102B104000612402FF808F840030EC +:100DF0009083000D00431024304200FF5040005CFF +:100E0000024020218F8200341040000B0005138225 +:100E10008F8200149763000A944200603042FFFF03 +:100E200014430005000513828F8200202404FFFD77 +:100E30000A001AF3AF82003C304200031440000E57 +:100E40000000000092020002104000058E03002402 +:100E500050600015920300030A001AAF02402021DF +:100E60008C82002450620010920300030240202173 +:100E70000A001AB72402000F9082000D30420008C9 +:100E80005440000992030003024020212402001074 +:100E90000E0016C5A38200442403FFFF1043003850 +:100EA0002404FFFF92030003240200025462000C9A +:100EB000920200038F820034544000099202000322 +:100EC000024020212402002C0E0016C5A3820044FB +:100ED0002403FFFF1043002A2404FFFF92020003B3 +:100EE0000200282102402021384600102CC60001B3 +:100EF0002C4200010E0016E5004630252410FFFFAD +:100F00001050001F2404FFFF8F8300341060001373 +:100F1000024020213C0208008C42318C0043102BFF +:100F200014400007000000000000282124060001F2 +:100F30000E001646000000000A001AF300002021EF +:100F40002402002D0E0016C5A38200441050000C90 +:100F50002404FFFF0A001AF3000020210E0015F9F7 +:100F6000240500010A001AF300002021024020217C +:100F70002402000D0E0016C5A3820044004020216B +:100F80000A001B16008088211514000E00000000C6 +:100F90000E00174C024020210A001B160040882139 +:100FA0000E0016C5A38200440A001B1600408821CB +:100FB00014620017022018212402002314E2000505 +:100FC0002402000B0E0017C0024020210A001B164D +:100FD0000040882102402021A38200440E0016C553 +:100FE0002411FFFF0A001B170220182130A500FF63 +:100FF0000E001529240600019783003A8F82003CD9 +:10100000A780003A00431023AF82003C0220182141 +:101010001220003E9782003A2402FFFD5462003EF7 +:101020008E4300208E4200048F830014005610234C +:10103000AE420004906200633042007FA062006311 +:101040008E4200208F840014A780003A34420002B0 +:10105000AE420020A48000E4908200632403FFBF1E +:1010600000431024A08200630A001B598E43002015 +:101070009082006300621024304200FF1040002381 +:101080009782003A90820088908300BD2485008872 +:101090003042003F2444FFE02C820020A383001C48 +:1010A00010400019AF85002C2402000100821804B2 +:1010B000306200191440000C3C02800034420002EF +:1010C000006210241440000B306200201040000F1A +:1010D0009782003A90A600010240202124050001D9 +:1010E0000A001B5330C60001024020210A001B5297 +:1010F00024050001024020210000282124060001CF +:101100000E001646000000009782003A1440FD04CD +:101110008F8400148E4300203062000410400012BF +:101120008F84003C2402FFFB00621024AE420020AA +:10113000274301808F4201B80440FFFE8F820048A0 +:10114000AC6200008F420124AC6200042402608380 +:10115000A462000824020002A062000B3C021000FE +:10116000AF4201B88F84003C8F8300148FBF0034DE +:101170008FB600308FB5002C8FB400288FB30024B9 +:101180008FB200208FB1001C8FB000182402000124 +:1011900027BD003803E00008AC6400C030A500FFA4 +:1011A0002403000124A900010069102B1040000C49 +:1011B00000004021240A000100A31023004A380443 +:1011C00024630001308200010069302B10400002CE +:1011D000000420420107402554C0FFF800A310235B +:1011E00003E00008010010213C020800244260A432 +:1011F0003C010800AC22738C3C02080024425308D6 +:101200003C010800AC2273902402000627BDFFE0D9 +:101210003C010800A02273943C021EDCAFB200180F +:10122000AFB10014AFBF001CAFB0001034526F411B +:1012300000008821240500080E001B7A02202021CE +:10124000001180803C07080024E773980002160014 +:1012500002071821AC6200000000282124A200012E +:101260003045FFFF8C6200002CA6000804410002FC +:10127000000220400092202614C0FFF8AC64000059 +:10128000020780218E0400000E001B7A2405002036 +:10129000262300013071FFFF2E2301001460FFE5BB +:1012A000AE0200008FBF001C8FB200188FB1001477 +:1012B0008FB0001003E0000827BD002027BDFFD835 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425 +:1012D000AFB000108F5101408F48014800089402C0 +:1012E000324300FF311300FF8F4201B80440FFFE7C +:1012F00027500180AE1100008F420144AE0200046D +:1013000024020002A6120008A202000B240200140C +:10131000AE1300241062002528620015104000085A +:101320002402001524020010106200302402001272 +:10133000106200098FBF00200A001CB58FB3001C8B +:101340001062007024020022106200378FBF00205C +:101350000A001CB58FB3001C3C0208008C4231A06F +:101360002403FF800222102100431024AF420024F6 +:101370003C0208008C4231A0022210213042007F42 +:10138000034218213C02000A00621821166000BCCA +:10139000AF830014906200623042000F344200308C +:1013A000A06200620A001CB48FBF00203C046000F1 +:1013B0008C832C083C02F0033442FFFF00621824A7 +:1013C000AC832C083C0208008C4231A08C832C0892 +:1013D000244200740002108200021480006218256A +:1013E000AC832C080A001CB48FBF00203C0208000C +:1013F0008C4231A02403FF800222102100431024DC +:10140000AF4200243C0208008C4231A03C03000A99 +:10141000022210213042007F03421021004310219C +:101420000A001CB3AF8200143C0208008C4231A0B9 +:101430002405FF800222102100451024AF42002421 +:101440003C0208008C4231A0022210213042007F71 +:10145000034218213C02000A0062182190620063D6 +:1014600000A21024304200FF10400085AF8300141A +:1014700024620088944300123C0208008C4231A888 +:1014800030633FFF00031980022210210043102126 +:101490003043007F03432021004510243C03000C0F +:1014A00000832021AF4200289082000D00A210246A +:1014B000304200FF10400072AF8400249082000D83 +:1014C000304200101440006F8FBF00200E0015C87E +:1014D000000000008F4201B80440FFFE0000000041 +:1014E000AE1100008F420144AE020004240200024B +:1014F000A6120008A202000BAE1300240A001CB4BE +:101500008FBF00202406FF8002261024AF42002057 +:101510003C0208008C4231A031043FFF00042180CE +:101520000222102100461024AF4200243C03080090 +:101530008C6331A83C0208008C4231A03227007F26 +:101540000223182102221021006418213042007F5A +:101550003064007F034228213C02000A0066182400 +:1015600000A22821034420213C02000C00822021FB +:10157000AF4300283C020008034718210062902175 +:10158000AF850014AF8400240E0015C8010080212F +:101590008F4201B80440FFFE8F8200248F84001424 +:1015A000274501809042000DACB10000A4B00006B8 +:1015B000000216000002160300021027000237C2C4 +:1015C00014C00016248200889442001232033FFFA8 +:1015D00030423FFF14430012240260829083006374 +:1015E0002402FF8000431024304200FF5040000CD2 +:1015F00024026082908200623042000F3442004038 +:10160000A082006224026084A4A200082402000DCB +:10161000A0A200050A001C9E3C0227002402608252 +:10162000A4A20008A0A000053C02270000061C00A0 +:101630000062182524020002A0A2000BACA3001037 +:10164000ACA00014ACA00024ACA00028ACA0002CDE +:101650008E42004C8F840024ACA200189083000DB1 +:101660002402FF8000431024304200FF1040000598 +:101670008FBF00209082000D3042007FA082000DBD +:101680008FBF00208FB3001C8FB200188FB10014E1 +:101690008FB000103C02100027BD002803E00008B6 +:1016A000AF4201B80800343008003430080033A8D5 +:1016B000080033E0080034140800343808003438D7 +:1016C00008003438080033180A0001240000000024 +:1016D000000000000000000D747061362E322E33C1 +:1016E00000000000060203010000000000000000EE +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000001000000376 +:10176000000000000000000D0000000D3C02080019 +:1017700024421C003C03080024632094AC40000079 +:101780000043202B1480FFFD244200043C1D080070 +:1017900037BD2FFC03A0F0213C1008002610049058 +:1017A0003C1C0800279C1C000E00015C000000008F +:1017B0000000000D3084FFFF308200078F85001885 +:1017C00010400002248300073064FFF800853021B8 +:1017D00030C41FFF03441821247B4000AF85001C48 +:1017E000AF84001803E00008AF4400843084FFFF9A +:1017F000308200078F8500208F860028104000026D +:10180000248300073064FFF8008520210086182B10 +:1018100014600002AF8500240086202303442821A1 +:1018200034068000AF840020AF44008000A6202151 +:1018300003E00008AF84003827BDFFD8AFB3001C19 +:10184000AFB20018AFB00010AFBF0024AFB400209B +:10185000AFB100143C0860088D1450002418FF7FBD +:101860003C1A8000029898243672380CAD12500051 +:101870008F5100083C07601C3C08600036300001B6 +:10188000AF500008AF800018AF400080AF40008428 +:101890008CE600088D0F08083C0760168CEC0000F1 +:1018A00031EEFFF039CA00103C0DFFFF340B800011 +:1018B0003C030080034B48212D440001018D282466 +:1018C0003C0253533C010800AC230420AF8900388C +:1018D000AF860028AF840010275B400014A20003ED +:1018E00034E37C008CF90004032818218C7F007CF1 +:1018F0008C6500783C0280003C0B08008D6B048CEA +:101900003C0A08008D4A048834520070AF85003CC0 +:10191000AF9F00403C13080026731C440240A021E6 +:101920008E4800008F46000038C30001306400017B +:1019300010800017AF880034028048218D2F0000EE +:101940003C0508008CA5045C3C1808008F1804585E +:1019500001E8102300A280210000C8210202402BD0 +:1019600003198821022838213C010800AC30045CAE +:101970003C010800AC2704588F4E000039CD00010F +:1019800031AC00011580FFED01E04021AF8F003444 +:101990008E5100003C0708008CE7045C3C0D0800F9 +:1019A0008DAD04580228802300F0602100007021D2 +:1019B0000190302B01AE1821006620213C01080067 +:1019C000AC2C045C3C010800AC2404588F46010890 +:1019D0008F47010030C92000AF860000AF87000CA0 +:1019E0001120000A00C040213C1808008F18042C68 +:1019F000270800013C010800AC28042C3C184000DA +:101A0000AF5801380A000196000000009749010410 +:101A100000002821014550213122FFFF0162582199 +:101A20000162F82B015F502130D902003C0108000F +:101A3000AC2B048C3C010800AC2A0488172000154C +:101A400024040F0010E400130000000024080D001F +:101A500010E8023B30CD000611A0FFE93C18400021 +:101A6000936E00002409001031C400F01089027147 +:101A700024020070108202E58F880014250F0001F7 +:101A8000AF8F00143C184000AF5801380A0001968F +:101A900000000000974C01041180FFD93C18400061 +:101AA00030C34000146000A1000000008F460178A0 +:101AB00004C0FFFE8F87003824100800240F0008A0 +:101AC0008CE30008AF500178A74F0140A7400142C6 +:101AD000974E01048F86000031C9FFFF30CD000111 +:101AE00011A002E1012040212531FFFE241800024F +:101AF000A75801463228FFFFA75101483C190800AA +:101B00008F39043C172002D08F8C000C30DF00206E +:101B100017E00002240400092404000130C20C0074 +:101B2000240504005045000134840004A744014A00 +:101B30003C1108008E3104203C1800483C10000184 +:101B40000238182530CF00020070282511E000046B +:101B5000000018213C19010000B9282524030001C8 +:101B600030DF000453E00005AF8300083C0600109E +:101B700000A6282524030001AF830008AF4510000C +:101B80000000000000000000000000000000000055 +:101B90008F83000810600023000000008F451000B4 +:101BA00004A1FFFE000000001060001E0000000005 +:101BB0008F4410003C0C0020008C102410400019B1 +:101BC0008F8E000031CD000211A000160000000031 +:101BD000974F101415E000130000000097591008EB +:101BE0003338FFFF271100060011188200033080F0 +:101BF00000C7282132300001322300031200032CD9 +:101C00008CA200000000000D00C7F821AFE2000028 +:101C10003C0508008CA5043024A600013C01080006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E +:101C30008CEC0000118202A6000020218CED000037 +:101C400031AC01001180028A000000003C02080053 +:101C50008C4204743C0308008C63044C3C1F080055 +:101C60008FFF04703C1808008F1804480048382182 +:101C70000068802100E8282B03E430210208402B73 +:101C80000304882100C57021022878213C01080046 +:101C9000AC30044C3C010800AC2F04483C01080067 +:101CA000AC2704743C010800AC2E04708F8400182B +:101CB0000120302131290007249F000833F91FFF3C +:101CC00003594021AF84001CAF990018251B400028 +:101CD000AF590084112000038F83002024C2000725 +:101CE0003046FFF88F84002800C3282100A4302B41 +:101CF00014C00002AF83002400A428230345602100 +:101D0000340D8000018D10213C0F1000AF850020A4 +:101D1000AF820038AF450080AF4F01788F88001444 +:101D2000250F00010A0001EFAF8F00148F62000839 +:101D30008F670000240500300007760231C300F0F1 +:101D4000106500A7240F0040546FFF4C8F880014CB +:101D50008F4B01780560FFFE0000000030CA0200D2 +:101D600015400003000612820000000D00061282DA +:101D7000304D0003000D4900012D18210003808023 +:101D8000020D402100086080019380218E1F000019 +:101D900017E00002000000000000000D8F6E00043C +:101DA00005C202BD92070006920E000592020004D1 +:101DB0003C090001000E18800070F8218FED00181A +:101DC000277100082448000501A96021000830821D +:101DD000AFEC0018022020210E00059E26050014FD +:101DE000920A00068F7900043C0B7FFF000A2080D6 +:101DF000009178218DF800043566FFFF0326282422 +:101E000003053821ADE70004920E0005920D000491 +:101E1000960C0008000E10800051C8218F2300008E +:101E2000974901043C07FFFF006758243128FFFF52 +:101E3000010DF82103EC50233144FFFF01643025EC +:101E4000AF260000920300072418000110780275E5 +:101E5000240F0003106F0285000000008E050010A3 +:101E60002419000AA7590140A7450142921800040D +:101E70008F860000240F0001A7580144A7400146A7 +:101E80009747010430D100023C050041A7470148B3 +:101E900000001821A74F014A1220000330CB000494 +:101EA0003C0501412403000151600005AF83000897 +:101EB0003C06001000A6282524030001AF8300087B +:101EC000AF4510000000000000000000000000000E +:101ED000000000008F8A000811400004000000008C +:101EE0008F4410000481FFFE000000008F6B000093 +:101EF000920800043C1108008E310444AF8B0004AA +:101F000097590104311800FF3C0E08008DCE0440A3 +:101F10003325FFFF0305382102276021000010212F +:101F2000250F000A31E8FFFF0187482B01C2682115 +:101F300001A9F821311000073C010800AC2C044431 +:101F40003C010800AC3F0440120000038F8C0018D5 +:101F50002506000730C8FFF8010C682131BF1FFFBC +:101F6000AF8C001CAF9F0018AF5F00849744010442 +:101F7000035F80213084FFFF308A00071140000397 +:101F8000261B4000248900073124FFF88F8200209F +:101F90008F850028008220210085702B15C000024B +:101FA000AF820024008520233C0B08008D6B048C3D +:101FB0003C0A08008D4A04880344882134038000C9 +:101FC000022310213C0F1000AF840020AF820038A4 +:101FD000AF440080AF4F01780A0002968F8800144A +:101FE0008F5001780600FFFE30D10200162000035A +:101FF000000612820000000D00061282305F00030E +:10200000001F1900007F302100062080009FC8219A +:1020100000194880013380218E180000130000024F +:10202000000000000000000D8F6C000C058001FB1B +:102030008F870038240E0001AE0E00008CE30008EC +:10204000A20000078F65000400055402314D00FF17 +:1020500025A80005000830822CCB00411560000245 +:10206000A20A00040000000D8F7800043C03FFFF6B +:1020700000E02821330BFFFF256C000B000C1082C1 +:1020800000022080008748218D3F000026040014B4 +:10209000A618000803E3C8240E00059EAD39000011 +:1020A0008F4F01083C11100001F1382410E001AB02 +:1020B00000000000974D01049208000725AAFFECDC +:1020C000350600023144FFFFA2060007960600080D +:1020D0002CC7001354E0000592030007921100077B +:1020E000362F0001A20F00079203000724180001F9 +:1020F000107801C224090003106901D58F880038C7 +:1021000030CBFFFF257100020011788331E400FF1E +:1021100000042880A20F000500A848218D2D000092 +:10212000974A01043C0EFFFF01AEF8243143FFFF44 +:10213000006B1023244CFFFE03ECC825AD390000D2 +:10214000920600053C03FFF63462FFFF30D800FF23 +:102150000018388000F08821922F00143C04FF7F83 +:102160003487FFFF31EE000F01C65821316500FFB3 +:1021700000055080015068218DAC00200148F821F5 +:10218000A20B00060182C824AE0C000CAFF9000CB3 +:10219000920900068E11000C032778240009C080E4 +:1021A0000310702195C60026030828210227202449 +:1021B000AE04000CADCF0020ADC60024ACA60010CC +:1021C0008F8800003C0B08008D6B048C3C0A0800D3 +:1021D0008D4A0488241F001024190002A75F0140C3 +:1021E000A7400142A7400144A7590146974901046D +:1021F00024070001310600022538FFFEA7580148D8 +:102200003C050009A747014A10C00003000018213F +:102210003C05010924030001310C00045180000534 +:10222000AF8300083C08001000A828252403000103 +:10223000AF830008AF451000000000000000000060 +:1022400000000000000000009205000424AE00021F +:1022500031CD0007000D182330620007AE020010D8 +:102260008F90000812000004000000008F4F100043 +:1022700005E1FFFE000000008F7100008F8E001846 +:102280003C0308008C630444AF91000497450104AB +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC +:1022A000AF860018AF4600842449FFFE3C0C0800AE +:1022B0008D8C0440974D010401208021000947C303 +:1022C0000070C02131A9FFFF0310F82B0188C8213D +:1022D000033F202103463821313100073C0108002B +:1022E000AC3804443C010800AC2404401220000334 +:1022F00024FB40002527000730E9FFF88F860020E7 +:102300008F8400280126382100E4C02B170000022A +:10231000AF86002400E438230347202134198000CD +:10232000009910213C0F1000AF870020AF820038C9 +:10233000AF470080AF4F01780A0002968F880014E3 +:102340009747010410E0FDAE3C1840008F5801781B +:102350000700FFFE30C5400010A000033C1F00082E +:102360000000000D3C1F0008AF5F01402410080072 +:102370008F860000AF5001789744010430D90001E6 +:10238000132000ED3086FFFF24CCFFFE240D000259 +:10239000A74D0146A74C01488F9100182408000D55 +:1023A000A748014A8F630000262F000831E21FFF73 +:1023B0000342702130C90007AF830004AF91001CB5 +:1023C000AF82001800C03821AF4200841120000302 +:1023D00025DB400024D800073307FFF88F85002055 +:1023E0008F84002800E5302100C4382B14E000025F +:1023F000AF85002400C430238F8400140346F821E5 +:10240000340C8000AF86002003EC8021AF460080B2 +:10241000249900013C0610003C184000AF460178AA +:10242000AF900038AF990014AF5801380A000196F8 +:10243000000000008F630000975101043067FFFF28 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8 +:10245000000CF82333F0000724F9FFFE2404000ADF +:10246000A7440140A7500142A7590144A740014693 +:10247000A74801488F45010830B800201700000226 +:10248000240300092403000130CD0002A743014AC0 +:102490003C04004111A00003000018213C0401414C +:1024A0002403000130C9000451200005AF83000857 +:1024B0003C0600100086202524030001AF8300089D +:1024C000AF44100000000000000000000000000009 +:1024D000000000008F8E000811C000040000000002 +:1024E0008F4210000441FFFE000000008F7F0000BB +:1024F000276400088F91003CAF9F0004948500087A +:102500009490000A9499000C30AFFFFF0010C400B3 +:102510003323FFFF11F100A6030320253C0E080022 +:102520008DCE04443C0C08008D8C044000E88821CA +:102530002626FFFE01C628210000682100A6F82BF0 +:10254000018D2021009F80213C010800AC2504441E +:102550003C010800AC30044024E200083042FFFF98 +:102560003047000710E000038F830018244F000756 +:1025700031E2FFF83106FFFF30C800070043802139 +:1025800032191FFF0359C021AF83001CAF990018F7 +:10259000271B4000AF590084110000038F8C0020DE +:1025A00024C5000730A6FFF88F84002800CC28211E +:1025B00000A4F82B17E00002AF8C002400A428230D +:1025C000AF850020AF4500803C0408008C840434B3 +:1025D00003454821340E8000012E6821108000053B +:1025E000AF8D0038939100172406000E12260011BB +:1025F0002407043F3C021000AF4201788F8800148A +:10260000250F00010A0001EFAF8F00140E0005C472 +:1026100000E020218F8800143C0B08008D6B048C97 +:102620003C0A08008D4A0488250F00010A0001EFCA +:10263000AF8F00143C021000A7470148AF42017859 +:102640000A0004CE8F88001424040F001184003D7A +:1026500030CE002015C0000224030009240300012D +:102660000A00021AA743014A0A00020DA7400146C8 +:1026700094EF000894F1000A94F0000C8F8C003C59 +:10268000001174003207FFFF31EDFFFF11AC00377E +:1026900001C720253C1808008F1804443C0F08008F +:1026A0008DEF0440000080210308682101A8382B29 +:1026B00001F0702101C760213C010800AC2D0444E9 +:1026C0003C010800AC2C04400A00027A8F840018F8 +:1026D0003C0208008C42047C3C0308008C630454D8 +:1026E0003C1F08008FFF04783C1808008F18045026 +:1026F000004838210068802100E8282B03E43021BD +:102700000208402B0304882100C57021022878218B +:102710003C010800AC3004543C010800AC2F0450CC +:102720003C010800AC27047C3C010800AC2E047876 +:102730000A00027A8F840018A74001460A00043577 +:102740008F91001830CD002015A0FFC52403000D87 +:10275000240300050A00021AA743014A974E010408 +:1027600025C5FFF00A00038130A4FFFF8F980040C9 +:102770001498FFC8000010213C0508008CA5046CCB +:102780003C1F08008FFF046800A8C8210328302BD5 +:1027900003E22021008640213C010800AC39046C92 +:1027A0003C010800AC2804680A00027A8F840018F3 +:1027B0008F8C0040148CFF5900E8C8213C18080099 +:1027C0008F18046C3C1108008E3104682723FFFE2B +:1027D00003034821000010210123302B0222702125 +:1027E00001C668213C010800AC29046C3C010800CA +:1027F000AC2D04680A0004A524E200088F88003884 +:102800003C03FFFF8D02000C0043F82403E4C825BD +:10281000AD19000C0A00038F30CBFFFF0A0003C381 +:10282000AE000000974A0104920400048E26000CBA +:10283000014458212579FFF200C7C0243325FFFF4A +:1028400003053825AE27000C0A0002E68E050010AD +:102850003C0DFFFF8D0A0010014D582401646025D6 +:10286000AD0C00100A00038F30CBFFFF974301042B +:10287000920E00048E290010006E1021244DFFEEF0 +:102880000127602431A8FFFF0188F825AE3F001022 +:102890000A0002E68E0500108E0F000CAE0000004C +:1028A00000078880023028210A0002B8ACAF00205F +:1028B0001460000D3058FFFF3C04FFFF0044682403 +:1028C00001A47026000E602B000D102B004CF82484 +:1028D00013E00002000000000000000D8CAF0000BB +:1028E0000A00025001E410253B03FFFF0003882B80 +:1028F0000018802B0211202410800002000000002C +:102900000000000D8CB900000A0002503722FFFFC2 +:102910003084FFFF30A5FFFF108000070000182162 +:10292000308200011040000200042042006518219E +:102930001480FFFB0005284003E000080060102120 +:1029400010C00007000000008CA2000024C6FFFF9A +:1029500024A50004AC82000014C0FFFB2484000402 +:1029600003E000080000000010A0000824A3FFFFFF +:10297000AC86000000000000000000002402FFFF01 +:102980002463FFFF1462FFFA2484000403E00008BC +:1029900000000000308EFFFF30D8FFFF00057C00F4 +:1029A00001F8602539CDFFFF01AC5021014C582BB7 +:1029B000014B4821000944023127FFFF00E8302184 +:1029C0000006240230C5FFFF00A418213862FFFF73 +:1029D00003E000083042FFFF3C0C08008D8C0484AB +:1029E000240BFF8027BDFFD001845021014B4824D8 +:1029F000AF4900203C0808008D080484AFB20020D5 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 +:102A1000936600040104382130E4007F009A1021FD +:102A20003C0300080043902130C500200360802152 +:102A30003C080111277B000814A000022646007004 +:102A40002646006C9213000497510104920F000473 +:102A50003267000F322EFFFF31ED004001C72823FF +:102A600011A0000500004821925900BC3338000431 +:102A70001700009000000000924300BC307F00046B +:102A800013E0000F0000000010A0000D0000000087 +:102A9000960E0002240AFF8000A7602125CDFFFECC +:102AA000A74D1016920B0004014B2024308200FF2A +:102AB00010400085010C40253C0F0400010F40250B +:102AC0008F5301780660FFFE2404000AA7440140EA +:102AD000960D00022404000931AC0007000C5823B5 +:102AE000316A0007A74A0142960200022443FFFE12 +:102AF000A7430144A7400146975F0104A75F01482F +:102B00008F590108333800205300000124040001CC +:102B1000920F000431EE001015C000023483001043 +:102B200000801821A743014A0000000000000000B7 +:102B30000000000000000000AF481000000000008E +:102B40000000000000000000000000008F51100095 +:102B50000621FFFE3113FFFF12600003000000009A +:102B60008F481018ACC8000096030006307FFFFFA6 +:102B700027F900020019988200138880023B302157 +:102B80008CD800001520005700183402920300046E +:102B90002405FF8000A3F82433F100FF1220002C4D +:102BA00000000000924700BC30F2000212400028F2 +:102BB00000000000974B100C2562FFFEA742101684 +:102BC000000000003C0A040035490030AF49100005 +:102BD00000000000000000000000000000000000F5 +:102BE0008F4C10000581FFFE000000009749100C7B +:102BF0008F51101C00C020213127FFFF24F200302C +:102C0000001218820003288000BBF8213226FFFF43 +:102C1000AFF100000E0005B300112C020013C880B4 +:102C2000033B98218E78000000027400AFB80010BA +:102C30008FA80010310FFFFFAFAF00108FA400105E +:102C400001C46825AFAD00108FA60010AE6600006D +:102C500097730008976D000A9766000C8F8A003CF6 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF +:102C7000016C2025960600023C10100024D30008A9 +:102C80000E00013B3264FFFF974C01040E00014926 +:102C90003184FFFFAF5001788FBF00288FB300242D +:102CA0008FB200208FB1001C8FB0001803E0000825 +:102CB00027BD003010A0FF700000000024A5FFFC1D +:102CC0000A0005EC240900048CD10000AF51101853 +:102CD0008F5301780660FF7A2404000A0A00060177 +:102CE0000000000000A7C8218F8800388F4E101CFC +:102CF0000019C0820018788001E82021AC8E000005 +:102D0000000E2C0200C020210E0005B331C6FFFFCB +:102D1000023B28218CAD000000025400004030210D +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 +:102D30008FA2001001424825AFA900108FA70010F4 +:102D40000A000631ACA700008F8F0040148FFFC926 +:102D50000000000097420104960B00023C050800A9 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D +:102D70008E310468012A382124F2FFFE00B240217E +:102D80000012FFC30112C82B023FC02103192021EA +:102D90003C010800AC28046C3C010800AC24046829 +:102DA0000A00066B0000000000A4102B1040000970 +:102DB000240300010005284000A4102B04A00003F8 +:102DC000000318405440FFFC000528401060000735 +:102DD000000000000085302B14C0000200031842E0 +:102DE000008520231460FFFB0005284203E0000853 +:102DF000008010218F85002C27BDFFE800053027BB +:102E00002CC300012CA400020083102510400003F5 +:102E1000AFBF00102405007FAF85002C00052827D8 +:102E200030A5FFFF0E000592240426F58F830030A5 +:102E3000240402BD004030210083382B10E000093B +:102E400024050001000420400083102B04800003AF +:102E5000000528405440FFFC0004204010A000085A +:102E600000C350210064402B1500000200052842D9 +:102E70000064182314A0FFFB0004204200C350216B +:102E80008FBF0010000A4C02312200FF27BD00183E +:102E9000AF8A002C03E00008AF8900300A00002A46 +:102EA00000000000000000000000000D7478703683 +:102EB0002E322E3300000000060203000000000046 +:102EC000000001360000EA60000000000000000081 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000016BC +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F3000000000000000138800000000000005DC15 +:102F4000000000000000000010000003000000006E +:102F50000000000D0000000D3C02080024423C204F +:102F60003C03080024633DD4AC4000000043202B08 +:102F70001480FFFD244200043C1D080037BD7FFC87 +:102F800003A0F0213C100800261000A83C1C0800FB +:102F9000279C3C200E0002BA000000000000000D3B +:102FA0008F8300383C088000350700708CE50000F6 +:102FB000008330253C02900000C22025AF85003000 +:102FC000AF4400208F4900200520FFFE3C03800015 +:102FD000346200708C4500008F8600303C19080078 +:102FE0008F39007C3C0E08008DCE007800A620238F +:102FF00003245821000078210164682B01CF60214F +:10300000018D50213C010800AC2B007C3C010800E4 +:10301000AC2A007803E00008000000000A0000412C +:10302000240400018F8400383C05800034A2000194 +:103030000082182503E00008AF43002003E00008E9 +:10304000000010213084FFFF30A5FFFF1080000733 +:1030500000001821308200011040000200042042CC +:10306000006518211480FFFB0005284003E00008DC +:103070000060102110C00007000000008CA20000BA +:1030800024C6FFFF24A50004AC82000014C0FFFB8F +:103090002484000403E000080000000010A00008E1 +:1030A00024A3FFFFAC860000000000000000000029 +:1030B0002402FFFF2463FFFF1462FFFA248400044C +:1030C00003E0000800000000308AFFFF93A800130F +:1030D000A74A014497490E1630C600FF3C02100073 +:1030E000A7490146AF450148A3460152A748015AE6 +:1030F000AF4701608FA400188FA30014A7440158A4 +:10310000AF43015403E00008AF42017803E0000838 +:10311000000000003C038000346200708C49000015 +:103120008F8800002484000727BDFFF83084FFF853 +:10313000AF890030974D008A31ACFFFFAFAC000083 +:103140008FAB0000016850232547FFFF30E61FFFCB +:1031500000C4282B14A0FFF73C0C8000358B0070B6 +:103160008D6A00003C0708008CE700843C060800DC +:103170008CC6008000081082014918230002788064 +:1031800000E370210000202101C3C82B00C4C0212E +:1031900001FA4021031948212502400027BD0008FB +:1031A0003C010800AC2E00843C010800AC290080E2 +:1031B00003E00008000000008F8200002486000762 +:1031C00030C5FFF800A2182130641FFF03E000089B +:1031D000AF8400008F8700388F8A004027BDFFB87A +:1031E0008F860044AFB60040AFBF0044AFB5003C8F +:1031F000AFB40038AFB30034AFB20030AFB1002C81 +:10320000AFB000288F4501048D4900ACAF47008066 +:103210008CC8002000A938230000B021AF480E1050 +:103220008F440E1000004821AF440E148CC20024BD +:10323000AF420E188F430E18AF430E1C10E001254D +:103240002D230001936B0008116000D400000000E2 +:10325000976E001031CDFFFF00ED602B158000CF81 +:103260000000000097700010320FFFFFAF4F0E00FC +:103270008F520000325100081220FFFD00000000B4 +:1032800097540E088F460E043285FFFF30B30001BD +:1032900012600132000000000000000D30B8A040B4 +:1032A00024150040131500C030A9A0001120012DE5 +:1032B00000000000937F000813E0000800000000F9 +:1032C00097630010306BFFFF00CB402B1100000311 +:1032D00030AC00401180012300000000A785003CB5 +:1032E000AF8600349366000800E02821AFA70020D5 +:1032F00014C0012427B30020AF60000C9782003C6B +:103300003047400014E00002240300162403000E9E +:1033100024194007A363000AAF790014938A003E82 +:103320008F740014315800070018AA4002959025A8 +:10333000AF7200149784003C8F700014309100101D +:1033400002117825AF6F0014978E003C31CD000834 +:1033500011A00147000028218F6700143C021000D3 +:103360003C0C810000E22825AF65001497460E0A48 +:103370002408000E3405FFFC30C3FFFF006C582505 +:10338000AF6B0004A3680002937F000A27E90004E2 +:10339000A369000A9786003C9363000A30CC1F00A3 +:1033A000000C598301634021251F0028A37F0009D9 +:1033B00097490E0CA769001093790009272A00028B +:1033C000315800070018A82332B10007A371000B81 +:1033D00093740009976400108F910034978F003C1C +:1033E000329200FF024480210205702131ED00403D +:1033F00011A0000531C4FFFF0091282B3C12800072 +:1034000010A000140000A0210224382B14E0011B9E +:103410008FA500208F4D0E14AF4D0E108F420E1C45 +:10342000AF420E18AF440E008F4F000031EE00087F +:1034300011C0FFFD0000000097540E080080882195 +:1034400000009021A794003C8F500E04241400012A +:10345000AF900034976400103095FFFF8E68000035 +:103460000111F82317E00009AE7F00008F650014FA +:103470008F8B004434A60040AF6600148F4C0E10B2 +:10348000AD6C00208F430E18AD63002493670008D5 +:1034900014E000D2000000000E00009E2404001082 +:1034A0008F8900483C08320000402821312600FF67 +:1034B0000006FC0003E8502525390001AF990048BB +:1034C000AC4A0000937800099370000A330400FFAF +:1034D00000047400320F00FF01CF6825AC4D0004DA +:1034E0008F820048064000EAACA20008ACA0000CA5 +:1034F0009783003C306B0008156000022628000608 +:1035000026280002974E0E148F450E1C8F6700046C +:10351000936D000231C4FFFF31A200FFAFA2001083 +:103520008F6C0014AFA800180E00008BAFAC001415 +:10353000240400100E0000C7000000008E7200007E +:1035400016400005000000008F6400142405FFBF32 +:1035500000859824AF7300148F79000C033538214F +:10356000AF67000C9375000816A00008000000006B +:1035700012800006000000008F7F00143C0BEFFF5C +:103580003568FFFE03E84824AF690014A3740008FF +:103590008FA500200A00024602202021AF470E001E +:1035A0000A0000F5000000008F5901780720FFFE97 +:1035B000241F08008F840000AF5F0178974B008ABA +:1035C000316AFFFF014448232528FFFF31021FFF16 +:1035D0002C4300081460FFF9000000008F8E0048A3 +:1035E0008F8D003800C048210344202125C60001EA +:1035F000240C0F00AF86004800E9382324864000E1 +:1036000031CA00FF11AC0005240800019391003E6F +:103610003230000700107A4035E80001000AAC00A3 +:103620003C18010002B8A025AC9440008F930048DC +:1036300030B2003630A40008ACD3000410800097EC +:1036400001123025974E0E0A8F8D00003C0281003A +:1036500031CCFFFF25AB0008018240253C03100060 +:1036600031651FFF25390006241F000EAF48016099 +:1036700000C33025A75F015AAF850000A759015844 +:1036800014E0000A8F93003824120F0052720002D7 +:103690002416000134C600408F580E108F94004449 +:1036A000AE9800208F550E18AE9500248F450E144D +:1036B000AF4501448F590E1CAF590148A34A01522E +:1036C0003C0A1000AF460154AF4A017814E0FEDD19 +:1036D0002D2300010076A025128000178FBF004423 +:1036E0008F84003824160F0010960084000000001C +:1036F0008F45017804A0FFFE24150F001095006E81 +:10370000000000008F470E14240202403C1F1000EE +:10371000AF4701448F440E1CAF440148A3400152FF +:10372000A740015AAF400160A7400158AF42015481 +:10373000AF5F01788FBF00448FB600408FB5003C6B +:103740008FB400388FB300348FB200308FB1002CAB +:103750008FB0002803E0000827BD004814C0FED049 +:1037600030B8A0408F420E148F84004400004821DE +:10377000AC8200208F510E1CAC9100240A00020E76 +:103780002D2300018F910034978A003C3C12800069 +:103790000220A821315800401700FF300000A0216E +:1037A000976900108F9200343139FFFF13320035D2 +:1037B00000002021008048211480FEA000A03821B4 +:1037C0008F420E148F840044AC8200208F510E1C57 +:1037D000AC9100240A00020E2D230001936A000917 +:1037E0009378000B315000FF330F00FF020F702160 +:1037F00025C2000A3050FFFF0E00009E020020216B +:103800008F8600483C1F410024CD0001AF8D004849 +:10381000936C000930C600FF00064400318300FFAE +:10382000246B0002010B4825013FC825AC5900005C +:103830008F67000C97440E1400F22825AC45000455 +:103840008F450E1C8F670004936A00023084FFFFCF +:10385000315800FFAFB800108F6F0014AFB10018DF +:103860000E00008BAFAF00140A0001A60200202159 +:10387000AF6000040A00013EA36000020A00024695 +:1038800000002021000090210A0001702414000192 +:103890003C1280000A000195ACB2000C8F91000030 +:1038A00025240002A744015826300008320F1FFFCC +:1038B0000A0001F9AF8F0000AF40014C1120002C2D +:1038C000000000008F590E10AF5901448F430E18AD +:1038D000240200403C1F1000AF430148A3400152A6 +:1038E000A740015AAF400160A7400158AF420154C0 +:1038F000AF5F01780A0002278FBF00441120000645 +:103900000000000097460E0830CC004015800002F1 +:10391000000000000000000D8F4D017805A0FFFEA3 +:103920000000000097530E103C120500240E2000EA +:10393000326AFFFF0152C025AF58014C8F4F0E1461 +:103940003C021000AF4F01448F500E1CAF50014895 +:10395000A34001528F840038A740015AAF40016054 +:10396000A7400158AF4E01540A000215AF4201783A +:103970008F490E14AF4901448F430E1C0A00028E7A +:10398000240200403C0E20FF27BDFFE03C1A8000CF +:103990003C0F800835CDFFFDAFBF001CAFB2001853 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC +:1039B0000000000000000000000000000000000007 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC +:1039D0003C0660048CC95000240AFF7F3C11600043 +:1039E000012A40243507380CACC750008E24043817 +:1039F00024050009AF4500083083FFFF38622F71AE +:103A00002450C0B3AF8000480E000068AF800000B3 +:103A100052000001AE20442C0E0004353C11800001 +:103A20000E000ED9363000708F8A00403C1208001C +:103A300026523C88020088218E0800008F5F00001B +:103A40003BF900013338000113000017AF88003044 +:103A5000022048218D2700003C0F08008DEF006CEC +:103A60003C0C08008D8C006800E8C02301F8282178 +:103A70000000682100B8302B018D582101664021DB +:103A80003C010800AC25006C3C010800AC28006833 +:103A90008F44000038830001306200011440FFEDC4 +:103AA00000E04021AF8700308E0C00003C0508008C +:103AB0008CA5006C3C0408008C84006801883023CD +:103AC00000A638210000102100E6402B00821821BA +:103AD0000068F8213C010800AC27006C3C0108009C +:103AE000AC3F00688F49010025590088AF99004418 +:103AF000AF890038AF4900208E070000AF87003043 +:103B00008F4D017805A0FFFE000000008E0600002A +:103B10003C0B08008D6B00743C0408008C84007022 +:103B200000C728230165F8210000102103E5402B80 +:103B30000082382100E8C821240908003C0108005F +:103B4000AC3F00743C010800AC390070AF4901780B +:103B500093580108A398003E938F003E31EE000178 +:103B600015C000158F830038240E0D00106E00194B +:103B7000240F0F00106F001D00000000915900007D +:103B800024180050332900FF113800043C1F400066 +:103B9000AF5F01380A0002E7000000000E00090EC6 +:103BA000000000008F8A00403C1F4000AF5F0138DA +:103BB0000A0002E700000000938D003E31AC0006D1 +:103BC000000C51000E0000CE0152D8210A00034320 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A +:103BE000000000000A0003438F8A00403C1B0800CD +:103BF000277B3D280E0000CE000000000A00034392 +:103C00008F8A004090AA00018FAB00108CAC00108E +:103C10003C0300FF8D680004AD6C00208CAD0014E7 +:103C200000E060213462FFFFAD6D00248CA7001816 +:103C30003C09FF000109C024AD6700288CAE001CC0 +:103C40000182C82403197825AD6F0004AD6E002CE5 +:103C50008CAD0008314A00FFAD6D001C94A9000234 +:103C60003128FFFFAD68001090A70000A56000029A +:103C7000A1600004A167000090A30002306200FF71 +:103C80000002198210600005240500011065000E75 +:103C90000000000003E00008A16A00018CD80028A1 +:103CA000354A0080AD7800188CCF0014AD6F001439 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF +:103CC00003E00008AD64000C8CCD001CAD6D001845 +:103CD0008CC90014AD6900148CC80024AD680008BC +:103CE0008CC70020AD67000C8CC200148C8300646C +:103CF0000043C82B13200007000000008CC20014F2 +:103D0000144CFFE400000000354A008003E0000886 +:103D1000A16A00018C8200640A000399000000007F +:103D200090AA000027BDFFF88FA9001CA3AA0000DD +:103D30008FAE00003C0FFF808FA8001835E2FFFF18 +:103D40008CCD002C01C26024AFAC0000A120000487 +:103D500000E06021A7A000028FB800008D270004BA +:103D60000188182100A0582100C05021006D28268C +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E +:103D800034D9FFFF3C02FF0003193024000D1DC091 +:103D9000010EC82400E2C02400C370250319782551 +:103DA000AD2E0000AD2F00048D450024AFAE000005 +:103DB000AD2500088D4D00202405FFFFAD2D000C22 +:103DC000956800023107FFFFAD27001091660018CB +:103DD00030C200FF000219C2506000018D4500345E +:103DE000AD2500148D67000827BD0008AD27001C15 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA +:103E0000AD20001803E00008AD20002027BDFFE032 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC +:103E20009098000000C088213C0D00FF330F007FF8 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 +:103E4000A0CE000194A6001EA22000048CAB00149A +:103E50008E29000400A08021016C2824012A40241E +:103E60000080902101052025A6260002AE24000432 +:103E700026050020262400080E00007624060002F5 +:103E800092470000260500282624001400071E0083 +:103E90000003160324060004044000032403FFFF6C +:103EA000965900023323FFFF0E000076AE23001068 +:103EB000262400248FBF001C8FB200188FB100147D +:103EC0008FB0001024050003000030210A0000809C +:103ED00027BD002027BDFFD8AFB1001CAFB0001830 +:103EE000AFBF002090A80000240200018FB0003C6A +:103EF0003103003F00808821106200148FAA00382F +:103F0000240B0005506B0016AFAA001000A0202162 +:103F100000C028210E0003DC02003021922400BCE6 +:103F2000308300021060000326060030ACC00000A1 +:103F300024C600048FBF00208FB1001C8FB0001872 +:103F400000C0102103E0000827BD002801403821EF +:103F50000E00035AAFB000100A0004200000000059 +:103F60000E0003A1AFB000140A00042000000000FE +:103F70003C02000A034218213C04080024843D6CE2 +:103F80002405001A000030210A000080AF8300548D +:103F90003C038000346200708C48000000A058216F +:103FA00000C04821308A00FFAF8800308F4401787C +:103FB0000480FFFE3C0C8000358600708CC500003C +:103FC0003C0308008C6300743C1808008F180070D4 +:103FD00000A82023006468210000C82101A4782BD8 +:103FE0000319702101CF60213C010800AC2D007441 +:103FF0003C010800AC2C00708F480E14AF480144FF +:10400000AF47014CA34A0152A74B01589346010800 +:1040100030C5000854A0000135291000934B090059 +:1040200024070050316A00FF11470007000000001C +:104030008F450E1CAF450148AF4901543C091000A3 +:1040400003E00008AF490178934D010831A800084A +:104050001100001000000000934F010831EE001025 +:1040600051C00001352900083C04080090843DD06F +:10407000A34401508F4309A4AF4301488F4209A0D4 +:10408000AF420144AF4901543C09100003E000086D +:10409000AF4901783C1908008F393D8C333800084E +:1040A0005700FFF1352900080A00047300000000E2 +:1040B00024070040AF470814AF4008108F4209445E +:1040C0008F4309508F4409548F45095C8F46094C32 +:1040D000AF820064AF830050AF84004CAF85005CBA +:1040E00003E00008AF8600609346010930C5007FF9 +:1040F000000518C0000521400083102103E00008DE +:10410000244200883C09080091293D9124A800021E +:104110003C05110000093C0000E8302500C51825C9 +:1041200024820008AC83000003E00008AC80000497 +:104130009347010B8F4A002C974F09083C18000E3B +:104140000358482131EEFFFF000E41C0AF48002C5C +:1041500097430908952C001A008040212403000190 +:10416000318BFFFFAC8B00008D2D001C00A058216F +:1041700000C06021AC8D00048D24002030E7004099 +:10418000AD04000891220019304400031083004858 +:104190002885000214A00062240600021086005642 +:1041A00024190003109900660000000010E0003A96 +:1041B000000000003C07080094E73D8624E200016F +:1041C000934F0934934709219525002A31EE00FFCA +:1041D000000E488230ED00FF978700580009360036 +:1041E000000D1C003044FFFF00C310250044C02513 +:1041F00000A778213C19400003197025000F4C00DE +:10420000AD090004AD0E0000934D09203C030006EB +:1042100025090014000D360000C32025AD04000858 +:104220008F59092C24E5000130A27FFFAD19000C45 +:104230008F580930A782005825020028AD180010B9 +:104240008F4F0938AD0F0014AD2B00048F4E09407D +:10425000AD2E0008934D09373C05080090A53D9010 +:104260008F4409488F46094031A700FF00EC182110 +:10427000008678230003C7000005CC0003196025E1 +:1042800031E8FFFC01885825AD2B000CAD20001053 +:1042900003E00008AF4A002C3C0D080095AD3D86B8 +:1042A0003C0E080095CE3D800A0004C901AE1021E5 +:1042B0003C05080094A53D8A3C06080094C63D8054 +:1042C0003C18080097183D7C952E002400A6782104 +:1042D00001F86823000E240025A2FFF200821825B1 +:1042E00024190800AD03000CAD190014AD00001036 +:1042F0000A0004C4250800189526002495250028E6 +:104300000006C40000057C00370E810035ED080072 +:10431000AD0E000CAD0D00100A0004C425080014F9 +:104320001480FFA200000000952400240004140063 +:1043300034430800AD03000C0A0004C42508001033 +:104340003C03080094633D8A3C05080094A53D8029 +:104350003C06080094C63D7C953900249538002819 +:10436000006520210086782300196C000018740075 +:1043700025E2FFEE01C2202535A3810024190800A3 +:10438000AD03000CAD040010AD190018AD00001411 +:104390000A0004C42508001C03E00008240201F4FC +:1043A00027BDFFE8AFB00010AFBF00140E000060E3 +:1043B0000080802124050040AF4508148F83005001 +:1043C0008F84004C8F85005C0070182100641023DE +:1043D00018400004AF830050AF6300548F66005450 +:1043E000AF86004C1200000C000000008F440074E7 +:1043F000936800813409FA002D07000710E00005DA +:1044000000891021936C0081240B01F4018B50046E +:1044100001441021AF62000C8F4E095C01C5682376 +:1044200019A000048FBF00148F4F095CAF8F005C90 +:104430008FBF00148FB000100A00006227BD001863 +:104440008F8400648F8300508F82004CAF640044DF +:10445000AF63005003E00008AF6200543C038000EB +:10446000346200708C43000027BDFFF8308700FFE6 +:1044700030A900FF30C800FFAF8300308F440178BF +:104480000480FFFE3C028000345900708F38000029 +:10449000A3A700033C0708008CE700748FAC000062 +:1044A0003C0608008CC60070030378233C0E7FFF97 +:1044B00000EFC82135CDFFFF00005021018D2824D9 +:1044C00000CA1821000847C0032F202B00A8102580 +:1044D0000064C021AFA200003C010800AC390074A8 +:1044E0003C010800AC380070934F010AA3A0000201 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A +:1045000035CDFFFF018D4824000B5600012A4025C0 +:10451000240730002406FF803C05100027BD00085A +:10452000AF48014CAF470154A7400158A346015280 +:1045300003E00008AF45017827BDFFE8AFBF0014D6 +:10454000AFB000108F6500743C068000309000FF13 +:1045500000A620250E000060AF6400749363000580 +:10456000346200080E000062A362000502002021F0 +:104570008FBF00148FB00010240500052406000131 +:104580000A00057027BD001827BDFFE03C0380002E +:10459000AFB00010AFBF0018AFB1001434620070AC +:1045A0008C470000309000FF30A800FFAF8700303C +:1045B0008F4401780480FFFE3C18800037110070A2 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1 +:1045D0008D4A007001E7702301AE282100005821A8 +:1045E00000AE302B014B4821012638213C01080048 +:1045F000AC250074000088213C010800AC27007045 +:104600001100000F000000008F6200742619FFFFE8 +:104610003208007F0002FE0233E5007F150000062D +:10462000332200FF2407FF800207202624A3FFFF78 +:1046300000838025320200FF0040802124111008F1 +:104640000E000060000000008F49081831250004AA +:1046500014A0FFFD3218007F001878C000187140C8 +:1046600001CF682125AC0088AF4C0818274A098083 +:104670008D4B0020AF4B01448D460024AF460148CE +:10468000A35001500E000062A740015802201021E3 +:104690008FBF00188FB100148FB0001003E0000826 +:1046A00027BD002027BDFFE8308400FFAFBF00100A +:1046B0000E0005BB30A500FF8F8300508FBF001098 +:1046C000344500402404FF903C02100027BD001830 +:1046D000AF43014CA3440152AF45015403E000082D +:1046E000AF4201789343093E306200081040000D4C +:1046F0003C0901013528080AAC8800008F47007486 +:10470000AC8700043C06080090C63D9030C5001000 +:1047100050A00006AC8000088F6A0060AC8A0008D8 +:104720002484000C03E00008008010210A00062207 +:104730002484000C27BDFFE8AFBF0014AFB0001009 +:104740009346093F00A050210005288000853823AA +:1047500030C200FF240300063C09080095293D866D +:1047600024E8FFD824050004104300372406000283 +:104770009750093C3C0F020400063400320EFFFF44 +:1047800001CF6825AC8D0000934C093E318B002091 +:104790001160000800000000934309363C02010349 +:1047A000345F0300307900FF033FC0252405000873 +:1047B000AC98000493430934935909210005F88209 +:1047C000306200FF0002C082332F00FF00186E002D +:1047D000000F740001AE6025018920253C094000CE +:1047E00000898025ACF0FFD8934309378F4F0948E3 +:1047F0008F580940306200FF004AC821033F7021F2 +:1048000001F86023000E6F0001A650253185FFFCE2 +:10481000001F58800145482501683821AD09002056 +:104820000E00006024F00028240400040E00006242 +:10483000A364003F020010218FBF00148FB000104E +:1048400003E0000827BD00180A0006352406001200 +:1048500027BDFFD024090010AFB60028AFB5002453 +:10486000AFB40020AFB10014AFB000103C0108009D +:10487000A0293D90AFBF002CAFB3001CAFB2001811 +:1048800097480908309400FF3C02000E3107FFFFF3 +:10489000000731C0AF46002C974409089344010B30 +:1048A00030B500FF03428021308300300000B0218A +:1048B0001060012500008821240C00043C01080040 +:1048C000A02C3D90934B093E000B5600000A2E038E +:1048D00004A0016000000000AF400048934F010BAE +:1048E00031EE002011C00006000000009358093E80 +:1048F00000189E0000139603064001890000000086 +:104900009344010B30830040106000038F930050EC +:104910008F8200502453FFFF9347093E30E6000882 +:1049200014C0000224120003000090219619002CEC +:1049300093580934934F0937A7990058330C00FF57 +:1049400031EE00FF024E6821000D5880016C5021AD +:10495000015140213C010800A4283D869205001821 +:1049600030A900FF010918213C010800A4233D885B +:104970009211001816200002000000000000000D37 +:104980003C010800A4233D8A3C010800A4203D808E +:104990003C010800A4203D7C935F010B3063FFFFC6 +:1049A00033F00040120000022464000A2464000B6B +:1049B0003091FFFF0E00009E022020219358010B32 +:1049C0003C08080095083D8A0040202100185982C3 +:1049D000316700010E00049A01072821934C010B56 +:1049E0008F4B002C974E09083C0F000E034F4021BF +:1049F00031CDFFFF000D51C0AF4A002C974309088D +:104A00009505001A004038212404000130A9FFFF59 +:104A1000AC4900008D06001C00404821318A00404E +:104A2000AC4600048D020020ACE20008910300199E +:104A300030630003106400EC28790002172001188D +:104A4000241000021070010C241F0003107F011EAF +:104A500000000000114000DE000000003C090800DA +:104A600095293D8625220001935F0934934E092143 +:104A70009504002A33F900FF0019C08231CF00FFEE +:104A8000978E005800184600000F6C00010D80251D +:104A90003045FFFF02051025008E50213C034000E9 +:104AA00000433025000A6400ACEC0004ACE60000D2 +:104AB000935F09203C19000624EC0014001FC60077 +:104AC00003197825ACEF00088F48092C25CD00018B +:104AD00031A57FFFACE8000C8F500930A785005846 +:104AE00024E80028ACF000108F4409380100802130 +:104AF000ACE40014AD9300048F530940AD9300085B +:104B0000934A09373C19080093393D908F4309486F +:104B10008F460940314200FF0052F82100667023A1 +:104B2000001F7F000019C40001F8282531CDFFFCCB +:104B300000AD2025AD84000CAD800010AF4B002CE3 +:104B4000934B093E317300081260000D3C060101D1 +:104B500034CC080AACEC00288F530074AD13000469 +:104B60003C0B0800916B3D903167001050E0000352 +:104B7000AD0000088F6A0060AD0A00082510000C27 +:104B800012C0003D000000009343093F24160006B8 +:104B900024060004306200FF105600C924070002FA +:104BA0009758093C3C0F0204330DFFFF01AF40252D +:104BB000AE0800009345093E30A400201080000894 +:104BC00000000000935309363C0B0103357F0300BE +:104BD000327900FF033F7025AE0E00042406000862 +:104BE000934F093493480921312AFFFF31ED00FF2B +:104BF000000D1082310300FF0002B60000032C00FC +:104C000002C56025018A9825001220803C094000D9 +:104C10000204502302695825AD4BFFD8935F093732 +:104C20008F4F09488F58094033F900FF0332702134 +:104C30000006B08201D668210007440001F828234D +:104C4000000D1F000068302530A2FFFC2547FFD86B +:104C500000C260250016808002074821ACEC0020CD +:104C6000253000280E00006024120004A372003FCB +:104C70000E000062000000009347010B30F200407C +:104C8000124000053C1900FF8E180000372EFFFF70 +:104C9000030E3024AE0600000E0000C702202021C3 +:104CA0003C10080092103D90321100031220000FBA +:104CB00002A028218F89005025330001AF930050B6 +:104CC000AF7300508F6B00540173F8231BE0000298 +:104CD000026020218F640054AF6400548F4C007434 +:104CE000258401F4AF64000C02A028210280202159 +:104CF000A76000680E0005BB3C1410008F850050B3 +:104D000034550006AF45014C8F8A00488FBF002CF8 +:104D10008FB3001C25560001AF9600488FB20018D3 +:104D2000A34A01528FB60028AF5501548FB1001429 +:104D3000AF5401788FB500248FB400208FB00010DD +:104D400003E0000827BD00309358093E00189E007C +:104D500000139603064200362411000293440923EF +:104D6000308300021060FEDD8F8600608F8200506D +:104D700014C2FEDA000000000E0000600000000017 +:104D80009369003F24070016312800FF1107000C2B +:104D9000240500083C0C0800918C3D90358B0001E7 +:104DA0003C010800A02B3D90936A003F314300FF77 +:104DB00010650065240D000A106D005E2402000CD1 +:104DC0000E000062000000000A00069000000000D3 +:104DD0003C09080095293D863C0A0800954A3D801B +:104DE0000A0006F3012A10213C09080095293D8A92 +:104DF0003C04080094843D803C06080094C63D7C39 +:104E000095030024012410210046F8230003CC0060 +:104E100027F0FFF20330C025240F0800ACF8000C87 +:104E2000ACEF0014ACE000100A0006EE24E7001816 +:104E30003C010800A0313D90935F093E241600011B +:104E400033F900201720FEA5241100080A0006905F +:104E5000241100048F6E00848F4D094011A0FE9E26 +:104E6000AF8E0050240F00143C010800A02F3D908D +:104E70000A00068F00000000950E0024950D002802 +:104E8000000E6400000D2C003589810034A6080056 +:104E9000ACE9000CACE600100A0006EE24E70014B2 +:104EA0001460FEEC000000009502002400021C00CB +:104EB00034640800ACE4000C0A0006EE24E700109D +:104EC0000A000741240700123C02080094423D8A70 +:104ED0003C06080094C63D803C03080094633D7C7A +:104EE00095100024951900280046F82103E3C023FB +:104EF00000106C0000197400270FFFEE01CF282569 +:104F000035AC8100ACEC000CACE5001024070800C7 +:104F1000AD2700182527001C0A0006EEAD2000145E +:104F20008F7F004CAF7F00548F7900540A000699A0 +:104F3000AF790050A362003F0E0000620000000045 +:104F40000A00069000000000240200140A0008274E +:104F5000A362003F27BDFFE8308400FFAFBF001011 +:104F60000E0005BB30A500FF9378007E9379007F8B +:104F7000936E00809368007A332F00FF001866005C +:104F8000000F6C0031CB00FF018D4825000B520053 +:104F90008FBF0010012A3825310600FF344470000D +:104FA00000E628252402FF813C03100027BD0018DD +:104FB000AF45014CAF440154A342015203E0000845 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE +:104FD000AFB00010AFBF0020AFB3001C9342010977 +:104FE000308600FF30B000FF000618C23204000215 +:104FF0003071000114800005305200FF93670005F6 +:1050000030E5000810A0000D30C80010024020213B +:105010000E0005A702202821240400018FBF0020D4 +:105020008FB3001C8FB200188FB100148FB0001026 +:105030000080102103E0000827BD00281500003281 +:105040000000000093430109000028213062007F26 +:10505000000220C00002F94003E49821267900886C +:10506000033B98218E7800248E6F0008130F0046B2 +:10507000000000008F640084241800020004FD82F8 +:1050800033F900031338007C0000000093660083AE +:10509000934A0109514600043205007C10A00060CB +:1050A000000000003205007C14A0005302402021C3 +:1050B00016200006320400018E7F00248F5901045F +:1050C00017F9FFD600002021320400011080000AE9 +:1050D000024020218F4209408F9300641053000644 +:1050E000000000000E00066D022028218F430940B9 +:1050F000AF630044024020210E0006020220282156 +:105100000A000860240400013C0908008D2900649D +:10511000252600013C010800AC26006416000012A0 +:10512000000000008F6D00843C0E00C001AE6024C2 +:1051300015800005024020210E00082E02202821A3 +:105140000A00086024040001240500040E00057014 +:1051500024060001024020210E00082E02202821F2 +:105160000A000860240400010E000041240400012C +:10517000936B007D020B50250E000062A36A007D38 +:105180000A0008A38F6D00848F6600748F480104A5 +:105190008E67002400064E021507FFB63126007FF9 +:1051A000936B008326440001308A007F1146004340 +:1051B000316300FF5464FFB08F6400842645000112 +:1051C00030B1007F30A200FF122600042405000148 +:1051D000004090210A00087624110001240FFF806E +:1051E000024F702401CF9026324200FF00409021F0 +:1051F0000A000876241100010E00066D0220282105 +:10520000321800301300FFAA321000820240202121 +:105210000E0005A7022028210A00086024040001CE +:105220008F6E00743C0F80002405000301CF902591 +:10523000AF72007493710083240600010E000570A4 +:10524000322400FF0E00004124040001936D007D14 +:10525000020D60250E000062A36C007D3C0B08006F +:105260008D6B0054257000013C010800AC300054E7 +:105270000A000860240400018F6800743C09800063 +:105280002405000401093825AF6700749363008387 +:10529000240600010E000570306400FF0E0000417E +:1052A000240400019362007D020298250E00006232 +:1052B000A373007D0A00086024040001324D0080C1 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC +:1052D0002645000127BDFFC83C0A0008AFBF0030CB +:1052E000AFB5002CAFB40028AFB30024AFB200209C +:1052F000AFB1001CAFB00018034AD8212409004008 +:10530000AF490814AF4008108F4209448F43095039 +:105310008F4609548F47095C8F48094C9344010814 +:105320009345010BAF820064308400FF30A500FF7D +:10533000AF830050AF86004CAF87005C0E00084A78 +:10534000AF8800601440017D8FBF0030A760006807 +:10535000934D0900240B00503C15080026B53D482C +:1053600031AC00FF3C12080026523D58118B00035F +:10537000000000000000A8210000902193510109C5 +:105380008F9F005024040010322E007F000E68C052 +:10539000000E6140018D282124B40088AF54081804 +:1053A0008F4901048F4A09A43C0B000E034BC02116 +:1053B000012A10233C010800AC223D6C8F430958A0 +:1053C0003C010800A0243D9097470908007F302346 +:1053D0003C010800AC263D7030E8FFFF0008C9C062 +:1053E0003C010800AC3F3D94AF59002C974209089E +:1053F0009710002C8EB10000930F001803749821B1 +:10540000A7900058AF9300440220F80931F000FF44 +:10541000304E000215C001B2304F000111E0014FC3 +:10542000000000009343093E3066000814C00002EB +:10543000241400030000A0218F5809A424130001A4 +:105440003C010800AC383D98934F0934935109371B +:1054500031EC00FF322E00FF028E6821000D288003 +:1054600000AC5021015058213C010800A42B3D887C +:105470003C010800A42A3D8693490934312200FFEB +:1054800002022021249000103C010800A4303D8439 +:10549000240700068F9F00503C010800AC273D8C7C +:1054A0008F88005C8F59095800008021011F282334 +:1054B00004A00149033F20230480014700A4302BAE +:1054C00010C00149000000003C010800AC253D70FF +:1054D0008E4200000040F809000000003043000246 +:1054E000146000F80040882130440001548000100E +:1054F0008E4200043C0908008D293D743C0AC0001E +:10550000012A8025AF500E008F45000030AB000807 +:105510001160FFFD00000000974D0E0824100001EF +:10552000A78D003C8F4C0E04AF8C00348E420004DB +:105530000040F8090000000002228825322E0002F7 +:1055400015C00180000000003C09080095293D7C41 +:105550003C06080094C63D883C0A0800954A3D7EFA +:105560003C1908008F393D74012660213C18080061 +:105570008F183D983C03080094633D92018A2021D6 +:105580008F4E09400329F821248F000203E32821CC +:10559000031968213C010800A42C3D8AAF8E0064E9 +:1055A0003C010800AC2D3D983C010800A4253D803D +:1055B0000E00009E31E4FFFF8F870048004020214D +:1055C0003C010800A0273D918E42000824E800011C +:1055D000AF8800480040F809000000009344010B28 +:1055E0008F4C002C974A09083C0B000E034B4021BE +:1055F0003149FFFF000919C08F8B0050AF43002CC9 +:10560000974309089506001A00403821308A004067 +:1056100030DFFFFFAC5F00008D19001C0040482107 +:10562000AC5900048D180020AC580008910F0019E7 +:1056300031E30003107300F0000000002862000254 +:105640001440010924050002106500FD240D00032B +:10565000106D010D00000000114000D90000000095 +:105660003C0A0800954A3D8625420001934D0934C5 +:1056700093580921950E002A31A300FF00032082D0 +:10568000331F00FF9798005800047E00001FCC00D5 +:1056900001F940253049FFFF0109102501D83021CB +:1056A0003C0540000045502500066C00ACED0004B0 +:1056B000ACEA0000934309203C04000624ED0014EA +:1056C0000003FE0003E4C825ACF900088F49092C4B +:1056D000270F000131EE7FFFACE9000C8F48093045 +:1056E000A78E005824E90028ACE800108F4509383F +:1056F00001204021ACE50014ADAB00048F4209400D +:10570000ADA20008934B09373C1F080093FF3D9062 +:105710008F4309488F4A0940316600FF00D4202199 +:10572000006A78230004C700001FCC000319282555 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4 +:10574000AF4C002C934C093E318B00085160000F88 +:105750008E58000C3C06010134CA080AACEA002845 +:105760008F4B0074AD2B00043C0C0800918C3D90D5 +:105770003187001050E00003AD2000088F62006008 +:10578000AD2200082528000C8E58000C0300F809F3 +:10579000010020213C19080097393D8A3C1F080070 +:1057A00097FF3D7E033F782125E900020E0000C7E8 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 +:1057C0008D083D7401C828233C010800AC253D6CC0 +:1057D00014A00006000000003C0308008C633D8C10 +:1057E000346400403C010800AC243D8C1200007081 +:1057F0008F8C00448F470E108F900044AE0700201E +:105800008F4D0E18AE0D00243C10080096103D8000 +:105810000E0000600000000024020040AF420814A7 +:105820008F8600508F8A004C00D01821006A5823C0 +:1058300019600004AF830050AF6300548F650054BB +:10584000AF85004C1200000C000000008F44007473 +:10585000936800813409FA002D0E000711C000057D +:1058600000891821937F0081241901F403F9780439 +:1058700001E41821AF63000C8F44095C8F83005C46 +:105880000083C0231B000003000000008F50095C50 +:10589000AF90005C0E000062000000008F8C005092 +:1058A0008E4700103C010800AC2C3D9400E0F80944 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC +:1058C000240700068F450024975909088F8B006430 +:1058D0008F9400503C0F001F978200588F86005411 +:1058E0008F93004C3328FFFF35E9FF8000A9502437 +:1058F000000871C032320100AF4E0024A4C2002C57 +:10590000AF4A0024AF6B0044AF740050AF73005433 +:105910001640008032380010570000868EA4000424 +:10592000322300405460001B8EB100088EB0000C82 +:105930000200F809000000008FBF00308FB5002C76 +:105940008FB400288FB300248FB200208FB1001CC9 +:105950008FB0001803E0000827BD00389347010905 +:105960008F8800380007FE0003E8C825AF59008083 +:105970008F5809A08F5309A4AFB80010AF580E1468 +:105980008FB40010AF540E10AF530E1C0A00096202 +:10599000AF530E180220F809000000008EB0000C72 +:1059A0000200F809000000000A000AA88FBF0030BA +:1059B000A5800020A59300220A000A5BAD93002475 +:1059C0003C09080095293D863C06080094C63D80A8 +:1059D0000A0009F4012610213C010800AC203D70AA +:1059E0000A00098E8E4200003C010800AC243D7084 +:1059F0000A00098E8E4200003C03080094633D8A31 +:105A00003C04080094843D803C1F080097FF3D7CC7 +:105A1000951800240064C821033F782300186C0007 +:105A200025EEFFF201AE2825AC45000C240208004B +:105A3000ACE20014ACE000100A0009EF24E7001803 +:105A400095060024950900280006240000091C0082 +:105A5000349F810034790800ACFF000CACF90010D1 +:105A60000A0009EF24E700141460FEFB00000000A8 +:105A70009518002400187C0035EE0800ACEE000CF0 +:105A80000A0009EF24E700103C07080094E73D8076 +:105A90003C04080094843D8A3C03080094633D7CE8 +:105AA00095190024951800280087F82103E378232E +:105AB0002407080000192C0000186C0025EEFFEEEA +:105AC00001AE302534A28100AD2700182527001C27 +:105AD000AD22000CAD2600100A0009EFAD20001425 +:105AE00093520109000028210E000602324400FFF3 +:105AF0008FBF00308FB5002C8FB400288FB30024E7 +:105B00008FB200208FB1001C8FB0001803E0000896 +:105B100027BD0038935F010933E400FF0E00066DD6 +:105B200000002821323800105300FF7E322300404D +:105B30008EA400040080F809000000000A000AA2F8 +:105B4000322300401200FF5F000000008F540E144B +:105B50008F920044AE5400208F530E1C0A000A8A14 +:105B6000AE5300248F82001C008040213C040100C1 +:105B70009047008530E3002010600009000000001D +:105B80003C0708008CE73D948F83001800E3202336 +:105B9000048000089389000414E30003010020211D +:105BA00003E00008008010213C04010003E000082D +:105BB000008010211120000B006738238F8C0020FB +:105BC00024090034918B00BC316A0002514000016D +:105BD0002409003000E9682B15A0FFF10100202105 +:105BE00000E938232419FFFC00B9C02400F9782407 +:105BF00000F8702B15C0FFEA01E8202130C2000335 +:105C00000002182314C00012306900030000302184 +:105C100000A9702101C6682100ED602B1180FFE012 +:105C20003C0401002D2F00010006482B01053821FE +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E +:105C400000B9C0240308202103E0000800801021CF +:105C50008F8B002024060004916A00BC31440004AC +:105C60001480FFEC00A970210A000B5E00003021B7 +:105C700027BDFFE8AFBF00108F460100934A01091E +:105C80003C1F08008FFF00902407FF80314F00FF6A +:105C900031E8007F0008614003E6C821032CC021E1 +:105CA00027090120012770243C010800A02F3DD0C6 +:105CB000AF4E080C3C0D08008DAD00903C040080F8 +:105CC0003482000301A65821016C182124650120AB +:105CD00030AA007801424025AF48081C3C1F08004C +:105CE0008FFF00908F88004003E6C0213319000722 +:105CF00003074824033A7821AF49002825E909C061 +:105D0000952E00023C0D08008DAD008C3C0A080069 +:105D10008D4A009031CC3FFF01A61821000C59801C +:105D2000006B282100A72024AF44002C95220002FC +:105D30003C1F08008FFF008C9107008530593FFF02 +:105D400003E678210019C1800146702101F868211D +:105D500031CC007F31AB007F019A2821017A50219C +:105D60003C03000C3C04000E00A328210144102138 +:105D700030E6002027470980AF82002CAF88001C46 +:105D8000AF890024AF85002010C00006AF8700282F +:105D90008D0200508CA4010C0044302318C0007701 +:105DA00000000000910C0085240DFFDF018D3824D8 +:105DB000A10700858F8B001C8F8900248F87002806 +:105DC0008D65004CAF850018912F000D31EE00203D +:105DD00011C000170000000024090001A38900047D +:105DE000AF80000C8CE400248F85000C240A00088E +:105DF000AF800008AF8000103C010800A42A3D7E5F +:105E00003C010800A4203D920E000B32000030211E +:105E10008F8500248FBF0010AF82001490A8000D62 +:105E200027BD00180008394203E0000830E20001F5 +:105E3000913F00022418000133F900FF001921826C +:105E400010980039240800021088005B8F86002C0F +:105E50008CE5002414A0001B8F9F002091220000DD +:105E6000240A00053046003F10CA00472404000100 +:105E70008F860008A3840004AF860010AF86000C54 +:105E80008CE400248F85000C240A00083C010800E3 +:105E9000A42A3D7E3C010800A4203D920E000B3256 +:105EA000000000008F8500248FBF0010AF82001417 +:105EB00090A8000D27BD00180008394203E0000833 +:105EC00030E200018CF800088CF900248FEE00C449 +:105ED000A38000048CE40024AF8E000C8F85000C9E +:105EE0008F86000803197823240A0008AF8F00105A +:105EF0003C010800A42A3D7E3C010800A4203D92FC +:105F00000E000B32000000008F8500248FBF0010B0 +:105F1000AF82001490A8000D27BD00180008394278 +:105F200003E0000830E20001912300003062003FEE +:105F3000104400278F8500208CE400241480002169 +:105F4000000000008D2E00183C187FFF8F85002078 +:105F5000370FFFFF01CF1824AF8300088F9F000881 +:105F60008CA8008403E8C82B1720000203E020213E +:105F70008CA400840A000BEDAF8400088CA3010CF4 +:105F80000A000BCBAF8300188D2C00188F860008F9 +:105F90003C0D7FFF8F89002035A3FFFF018358242C +:105FA00024040001AF8B0010AD2000CCA3840004BA +:105FB0000A000BF9AF86000C8CCA00140A000BED26 +:105FC000AF8A00088CA300C80A000C30AF83000819 +:105FD0008F84002C8CAC00648C8D0014018D582BA8 +:105FE00011600004000000008CA200640A000C3064 +:105FF000AF8200088C8200140A000C30AF820008C7 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3 +:1060100014A00007AFB000108F86002424020005F2 +:1060200090C400003083003F106200B68F840020CF +:106030008F91000800A080218F8C00283C0508006B +:106040008CA53D708D8B000431663FFF00C5502B41 +:106050005540000100C02821938D000411A0007359 +:1060600000B0F82B8F98002024040034930F00BC5C +:1060700031EE000251C000012404003000A4C82BFE +:10608000172000D10000000000A4282300B0F82B46 +:106090003C010800A4243D7C17E000680200202198 +:1060A0003C0308008C633D6C0083102B54400001BE +:1060B000008018218F8800243C010800AC233D7427 +:1060C000000048219104000D308300205060000141 +:1060D0008F490E188F8300140123382B10E00059CC +:1060E000000000003C0408008C843D7400895821A5 +:1060F000006B502B114000560090602B006930233C +:1061000000C020213C010800AC263D7412000003B1 +:10611000241FFFFC1090008A32270003009FC82430 +:106120003C010800AC393D743C010800A4203D92BC +:106130008F84000C120400078F830020AF910008A9 +:10614000020020218C7100CCAF90000C26300001A1 +:10615000AC7000CC3C0208008C423D748F8A001069 +:10616000240700180082202301422823AF84000C5A +:1061700010800002AF850010240700108F86001CDD +:106180003C010800A0273D902407004090CC0085EA +:10619000318B00C0116700408F8D001414A00015D2 +:1061A00000002021934A01098F420974314500FF04 +:1061B0000002260224A300013090007F3071007F8E +:1061C0001230007A2407FF80A0C300833C09080036 +:1061D0008D293D8C8F880024240D0002352C000869 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 +:1061F00024040010910E000D31C6002010C00005CF +:1062000000801821240800013C010800AC283D74DE +:10621000348300018FBF00188FB100148FB00010BD +:106220000060102103E0000827BD00203C010800A9 +:10623000A4203D7C13E0FF9A020020210A000C817B +:1062400000A020213C0408008C843D740090602B49 +:106250001180FFAE000000003C0F080095EF3D7C70 +:1062600001E4702101C6682B11A000072C820004F4 +:106270003C1F60008FF954043338003F1700FFE5DE +:10628000240300422C8200041040FFA0240300429B +:106290000A000CDF8FBF0018152DFFC000000000A2 +:1062A0008CDF00743C0380002405FF8003E3C825D5 +:1062B000ACD9007490D80085240E0004240400108A +:1062C000330F003F01E54025A0C800858F880024DA +:1062D0003C010800A02E3DD1240300019106000DD1 +:1062E00030C9002015200003000000003C03080016 +:1062F0008C633D743C010800AC233D6C0A000CD655 +:10630000000000008F8700108C88008400E8282B94 +:1063100014A0000200E088218C910084240900016F +:10632000A38900048F440E18022028210E000B328E +:1063300002203021022080210A000C67AF82001465 +:1063400000071823306600033C010800A4263D9294 +:10635000122000058F8C0020918B00BC316A000454 +:106360001540001524CD00043C0F080095EF3D9228 +:1063700001E4702100AE302B50C0FF6E8F84000C02 +:106380002C85000514A0FFA32403004230980003CD +:1063900017000002009818232483FFFC3C0108002A +:1063A000AC233D740A000CA30000000000A7582491 +:1063B0000A000CCB016718263C010800A42D3D9271 +:1063C0000A000D33000000003C010800AC203D74C1 +:1063D0000A000CDE240300428F83001014600007C3 +:1063E000000010218F88002424050005910600007C +:1063F00030C400FF108500030000000003E0000827 +:1064000000000000910A0018314900FF000939C25C +:1064100014E0FFFA8F85001C3C04080094843D7C46 +:106420003C0308008C633D943C1908008F393D748F +:106430003C0F080095EF3D920064C0218CAD0054E4 +:106440000319702101CF6021018D58231960001DAF +:1064500000000000910E001C8F8C002C974B0E103A +:1064600031CD00FF8D850004016D30238D88000043 +:1064700030CEFFFF000E510000AAC82100003821D5 +:1064800001072021032A182B0083C021AD990004A5 +:10649000AD980000918F000A01CF6821A18D000AFC +:1064A0008F88002C974B0E12A50B0008950A003818 +:1064B00025490001A50900389107000D34E60008C0 +:1064C000A106000D03E000080000000027BDFFE06A +:1064D000938700048F8F00248FAD00143C0E7FFF44 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C +:1064F00001A8182491EA000D000717C03C1FBFFF38 +:10650000006258252D2E00018F90001837F9FFFFEB +:106510003C1808008F183D943C0F080095EF3D8A09 +:1065200001796824000E47803C07EFFF3C05F0FF2F +:1065300001A818253149002034E2FFFF34ACFFFFE9 +:106540000310582327A500102406000225EA0002A4 +:1065500000621824008080211520000200004021E4 +:106560008F480E1CA7AA0012056000372407000000 +:1065700030FF00FF001FCF008F8B001C00793825F3 +:10658000AFA70014916F00853C08080091083D9169 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A +:1065A0003C1F080097FF3D8400EA6824A3A800115F +:1065B0000003174001A248258FB90010AFA90014AD +:1065C0003C0A0800914A3D93A7BF00168FA800140B +:1065D000032CC0243C0B01003C0F0FFF030B1825BC +:1065E0003147000335EEFFFF010C68240007160059 +:1065F000006EF8243C09700001A2C82503E9582563 +:10660000AFB90014AFAB00100E000076A3A00015C8 +:106610008F8C0024260200089186000D30C40020D3 +:10662000108000068FBF001C3C05080094A53D802B +:1066300024B0FFFF3C010800A4303D808FB000185B +:1066400003E0000827BD00208F9800140118502B8C +:106650005540FFC7240700010A000DB630FF00FFB8 +:106660009382000427BDFFE0AFBF00181040000F69 +:10667000008050218F880024240B00058F8900089A +:10668000910700008F8400200100282130E3003FA3 +:106690008F86002C106B000800003821AFA9001075 +:1066A0000E00040EAFAA0014A38000048FBF0018D0 +:1066B00003E0000827BD00208D1900183C0F0800DA +:1066C0008DEF3D748F9800103C027FFF8D08001401 +:1066D000345FFFFF033F682401F8702101AE60239F +:1066E00001883821AFA900100E00040EAFAA0014D3 +:1066F0000A000E04A38000048F8700243C050800D4 +:1067000094A53D923C0208008C423D8C90E6000D21 +:106710000005240030C300201060002C00444025F8 +:106720008F85001C00006021240B000190A30085D0 +:1067300000004821240A00013C0F800035EE007063 +:106740008DC70000AF8700308F5801780700FFFE2B +:106750003C038000347900708F3800003C0508004D +:106760008CA500743C0D08008DAD007003077823E4 +:1067700000AF38210000102100EF302B01A22021B2 +:10678000008618213C010800AC2700743C01080079 +:10679000AC230070AF4B01483C1908008F393D9481 +:1067A000A7490144A74A0146AF59014C3C0B0800D8 +:1067B000916B3D91A34B0152AF4801543C0810002E +:1067C000A74C015803E00008AF4801788F4B0E1C1E +:1067D0003C0A08008D4A3D7497490E16974D0E14D9 +:1067E00001456021312AFFFF0A000E2731A9FFFF72 +:1067F0008F8300249064000D308200201040002917 +:10680000000000000000482100005021000040214D +:106810003C07800034EB00708D670000AF870030CC +:106820008F4C01780580FFFE3C0D800035AC007078 +:106830008D8B00003C0508008CA500743C0408000A +:106840008C8400700167302300A67821000010219D +:1068500001E6C82B0082C021031970213C01080009 +:10686000AC2F00743C010800AC2E0070AF49014809 +:106870003C0D08008DAD3D94A7480144240900401B +:10688000A74A01463C081000240AFF91AF4D014C75 +:10689000A34A0152AF490154A740015803E0000840 +:1068A000AF4801788F490E1897460E1297450E1083 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F +:1068C00027BDFFF89064000D308200201040003A90 +:1068D00000000000240B000100004821240A0001F0 +:1068E0003C088000350700708CE30000AF83003067 +:1068F0008F4C01780580FFFE3C0E80003C040800B0 +:1069000090843DD035C700708CEC00003C05080039 +:106910008CA50074A3A400033C1908008F390070F3 +:106920008FAD00000183302300A638210000102124 +:106930000322782100E6C02B01F8602101AE40253A +:10694000AFA800003C010800AC2700743C0108001F +:10695000AC2C00709346010A3C04080090843DD1A1 +:10696000A3A00002A3A600018FA300003C0580FFA6 +:106970003099007F34A2FFFF006278240019C6001E +:1069800001F87025240D3000AF4E014C27BD0008E2 +:10699000AF4D0154A7400158AF4B0148A7490144EE +:1069A000A74A01463C091000240AFF80A34A01526D +:1069B00003E00008AF4901788F4B0E1897460E127E +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 +:1069D0008F85001C2402008090A40085308300C0B5 +:1069E000106200058F8600208F8800088F87000CBA +:1069F000ACC800C8ACC700C403E000080000000039 +:106A00003C0A0800254A39543C09080025293A2047 +:106A10003C08080025082DD43C07080024E73B3437 +:106A20003C06080024C637C43C05080024A5353CB4 +:106A30003C040800248431643C0308002463385C6F +:106A40003C020800244236303C010800AC2A3D508C +:106A50003C010800AC293D4C3C010800AC283D48F5 +:106A60003C010800AC273D543C010800AC263D64C5 +:106A70003C010800AC253D5C3C010800AC243D58BD +:106A80003C010800AC233D683C010800AC223D609D +:086A900003E000080000000013 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000000E88000009500000000500000000CC :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F05060011000000080500FFFF4A :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -382,11 +381,3 @@ :1017C0000000000C2980000000000010001F000035 :0817D000000000188000FE3546 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-3.5.0.orig/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000001010000009C80000000500000000CA :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F03060011000000080500FFFF4C :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -155,8 +154,7 @@ :100990000000001091D40000000000080500005580 :1009A000000000188000FF360000000C29800001C4 :1009B0000000000C1F800001000000082A00000752 -:0809C000000000188000FEDEBB -:0809C80000000010B1800004E2 +:1009C000000000188000FEDE00000010B18000046E :1009D0000000001F0306001100000008050000FFD2 :1009E0000000001800020000000000002A000000C3 :1009F00000000010B1D400000000001091DE0000E3 @@ -415,11 +413,3 @@ :1019C00000000010001F00000000000C6BD7000199 :0819D000000000188000FE0475 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-3.5.0.orig/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex @@ -0,0 +1,6496 @@ +:10000000080001180800000000005594000000C816 +:1000100000000000000000000000000008005594EF +:10002000000000380000565C080000A00800000036 +:100030000000574400005694080059200000008436 +:100040000000ADD808005744000001C00000AE5CBD +:100050000800321008000000000092580000B01C98 +:10006000000000000000000000000000080092589E +:100070000000033C000142740800049008000400E2 +:10008000000012FC000145B000000000000000006C +:1000900000000000080016FC00000004000158AC3D +:1000A000080000A80800000000003D00000158B052 +:1000B00000000000000000000000000008003D00FB +:1000C00000000030000195B00A000046000000006A +:1000D000000000000000000D636F6D362E322E31DF +:1000E00062000000060201020000000000000003A0 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C020800244256083C030800A1 +:1002000024635754AC4000000043202B1480FFFDB2 +:10021000244200043C1D080037BD9FFC03A0F021D0 +:100220003C100800261001183C1C0800279C5608AA +:100230000E000256000000000000000D27BDFFB4B4 +:10024000AFA10000AFA20004AFA30008AFA4000C50 +:10025000AFA50010AFA60014AFA70018AFA8001CF0 +:10026000AFA90020AFAA0024AFAB0028AFAC002C90 +:10027000AFAD0030AFAE0034AFAF0038AFB8003C28 +:10028000AFB90040AFBC0044AFBF00480E001544FA +:10029000000000008FBF00488FBC00448FB90040B1 +:1002A0008FB8003C8FAF00388FAE00348FAD003078 +:1002B0008FAC002C8FAB00288FAA00248FA90020C0 +:1002C0008FA8001C8FA700188FA600148FA5001000 +:1002D0008FA4000C8FA300088FA200048FA1000040 +:1002E00027BD004C3C1B60108F7A5030377B502864 +:1002F00003400008AF7A00008F82002427BDFFE092 +:10030000AFB00010AFBF0018AFB100148C42000CAA +:100310003C1080008E110100104000348FBF001887 +:100320000E000D84000000008F85002024047FFF54 +:100330000091202BACB100008E030104960201084D +:1003400000031C003042FFFF00621825ACA300042C +:100350009202010A96030114304200FF3063FFFF4E +:100360000002140000431025ACA200089603010C03 +:100370009602010E00031C003042FFFF00621825A8 +:10038000ACA3000C960301109602011200031C009E +:100390003042FFFF00621825ACA300108E02011846 +:1003A000ACA200148E02011CACA20018148000083C +:1003B0008F820024978200003C0420050044182509 +:1003C00024420001ACA3001C0A0000C6A782000062 +:1003D0003C0340189442001E00431025ACA2001CB0 +:1003E0000E000DB8240400018FBF00188FB1001457 +:1003F0008FB000100000102103E0000827BD00208E +:100400003C0780008CE202B834E50100044100089A +:10041000240300013C0208008C42006024420001D9 +:100420003C010800AC22006003E0000800601021DD +:100430003C0208008C42005C8CA4002094A30016AF +:100440008CA6000494A5000E24420001ACE40280B6 +:100450002463FFFC3C010800AC22005C3C0210005D +:10046000A4E30284A4E5028600001821ACE6028819 +:10047000ACE202B803E000080060102127BDFFE0F5 +:100480003C028000AFB0001034420100AFBF001C3E +:10049000AFB20018AFB100148C43000094450008BF +:1004A0002462FE002C42038110400003000381C23D +:1004B0000A00010226100004240201001462000553 +:1004C0003C1180003C02800890420004305000FF44 +:1004D0003C11800036320100964300143202000FB6 +:1004E00000021500004310253C0308008C63004403 +:1004F00030A40004AE220080246300013C01080007 +:10050000AC2300441080000730A200028FBF001C03 +:100510008FB200188FB100148FB000100A0000CE07 +:1005200027BD00201040002D0000182130A20080BF +:1005300010400005362200708E44001C0E000C672F +:10054000240500A0362200708C4400008F82000C2D +:10055000008210232C43012C10600004AF82001095 +:10056000240300010A000145AF84000C8E42000400 +:100570003C036020AF84000CAC6200143C02080015 +:100580008C42005850400015000018218C62000475 +:10059000240301FE304203FF144300100000182121 +:1005A0002E020004104000032E0200080A00014041 +:1005B0000000802114400003000000000A000140F8 +:1005C0002610FFF90000000D2402000202021004B0 +:1005D0003C036000AC626914000018218FBF001C4E +:1005E0008FB200188FB100148FB00010006010217E +:1005F00003E0000827BD00203C0480008C8301003C +:1006000024020100506200033C0280080000000D3B +:100610003C02800890430004000010213063000F6A +:1006200000031D0003E00008AC8300800004188074 +:100630002782FF9C00621821000410C00044102390 +:100640008C640000000210C03C030800246356E4E0 +:10065000004310213C038000AC64009003E00008DC +:10066000AF8200243C0208008C42011410400019A3 +:100670003084400030A2007F000231C03C02020002 +:100680001080001400A218253C026020AC43001426 +:100690003C0408008C8456B83C0308008C630110AD +:1006A0003C02800024050900AC4500200086202182 +:1006B000246300013C028008AC4400643C01080053 +:1006C000AC2301103C010800AC2456B803E000083C +:1006D000000000003C02602003E00008AC4500146C +:1006E00003E000080000102103E0000800001021D2 +:1006F00030A2000810400008240201003C0208005B +:100700008C42010C244200013C010800AC22010C87 +:1007100003E0000800000000148200080000000050 +:100720003C0208008C4200FC244200013C0108000D +:10073000AC2200FC0A0001A330A200203C02080009 +:100740008C420084244200013C010800AC22008459 +:1007500030A200201040000830A200103C02080027 +:100760008C420108244200013C010800AC2201082F +:1007700003E0000800000000104000080000000036 +:100780003C0208008C420104244200013C010800A4 +:10079000AC22010403E00008000000003C02080055 +:1007A0008C420100244200013C010800AC220100FF +:1007B00003E000080000000027BDFFE0AFB1001417 +:1007C0003C118000AFB20018AFBF001CAFB00010EA +:1007D0003632010096500008320200041040000733 +:1007E000320300028FBF001C8FB200188FB10014BB +:1007F0008FB000100A0000CE27BD00201060000B53 +:10080000020028218E2401000E00018A0000000051 +:100810003202008010400003240500A10E000C6786 +:100820008E44001C0A0001E3240200018E2301040F +:100830008F82000810430006020028218E24010048 +:100840000E00018A000000008E220104AF82000821 +:10085000000010218FBF001C8FB200188FB1001450 +:100860008FB0001003E0000827BD00202C82000498 +:1008700014400002000018212483FFFD240200021E +:10088000006210043C03600003E00008AC626914DD +:1008900027BDFFE0AFBF001CAFB20018AFB100141E +:1008A000AFB000103C048000948201083043700017 +:1008B000240220001062000A2862200154400052E5 +:1008C0008FBF001C24024000106200482402600018 +:1008D0001062004A8FBF001C0A0002518FB200183C +:1008E00034820100904300098C5000189451000C90 +:1008F000240200091062001C0000902128620009F7 +:10090000144000218F8200242402000A5062001249 +:10091000323100FF2402000B1062000F00000000C3 +:100920002402000C146200188F8200243C0208008C +:100930008C4256B824030900AC83002000501021DB +:100940003C038008AC6200643C010800AC2256B84D +:100950000A0002508FBF001C0E0001E900102602A1 +:100960000A0002308F8200240E0001E900102602E6 +:100970003C0380089462001A8C72000C3042FFFF26 +:10098000020280258F8200248C42000C5040001E01 +:100990008FBF001C0E000D84000000003C02800090 +:1009A00034420100944300088F82002400031C009D +:1009B0009444001E8F82002000641825AC50000073 +:1009C00024040001AC510004AC520008AC40000CFF +:1009D000AC400010AC400014AC4000180E000DB844 +:1009E000AC43001C0A0002508FBF001C0E000440E4 +:1009F000000000000A0002508FBF001C0E000C9F78 +:100A0000000000008FBF001C8FB200188FB10014CF +:100A10008FB000100000102103E0000827BD002067 +:100A200027BDFFD8AFB400203C036010AFBF002447 +:100A3000AFB3001CAFB20018AFB10014AFB00010DC +:100A40008C6450002402FF7F3C1408002694563822 +:100A5000008220243484380CAC6450003C028000B6 +:100A6000240300370E0014B0AC4300083C07080014 +:100A700024E70618028010212404001D2484FFFFAF +:100A8000AC4700000481FFFD244200043C02080042 +:100A9000244207C83C010800AC2256403C02080032 +:100AA000244202303C030800246306203C04080072 +:100AB000248403B43C05080024A506F03C06080085 +:100AC00024C62C9C3C010800AC2256803C02080045 +:100AD000244205303C010800AC2756843C01080044 +:100AE000AC2656943C010800AC23569C3C010800FF +:100AF000AC2456A03C010800AC2556A43C010800DB +:100B0000AC2256A83C010800AC23563C3C0108002E +:100B1000AC2456443C010800AC2056603C0108005F +:100B2000AC2556643C010800AC2056703C0108001E +:100B3000AC27567C3C010800AC2656903C010800CE +:100B4000AC2356980E00056E00000000AF80000C2C +:100B50003C0280008C5300008F8300043C0208009C +:100B60008C420020106200213262000700008821C0 +:100B70002792FF9C3C100800261056E43C02080017 +:100B80008C42002024050001022518040043202483 +:100B90008F820004004310245044000C26310001D1 +:100BA00010800008AF9000248E4300003C028000BB +:100BB000AC4300900E000D4BAE05000C0A0002C1C4 +:100BC00026310001AE00000C263100012E22000269 +:100BD000261000381440FFE9265200043C020800A9 +:100BE0008C420020AF820004326200071040FFD91F +:100BF0003C028000326200011040002D326200028F +:100C00003C0580008CA2010000002021ACA2002045 +:100C10008CA301042C42078110400008ACA300A85B +:100C200094A2010824032000304270001443000302 +:100C30003C02800890420005304400FF0E0001593C +:100C4000000000003C0280009042010B304300FF96 +:100C50002C62001E54400004000310800E00018628 +:100C60000A0002EC00000000005410218C42000039 +:100C70000040F80900000000104000043C02800021 +:100C80008C4301043C026020AC4300143C02080089 +:100C90008C4200343C0440003C03800024420001AC +:100CA000AC6401383C010800AC220034326200021E +:100CB00010400010326200043C1080008E0201409F +:100CC000000020210E000159AE0200200E00038317 +:100CD000000000003C024000AE0201783C02080027 +:100CE0008C420038244200013C010800AC2200384C +:100CF000326200041040FF973C0280003C108000EC +:100D00008E020180000020210E000159AE02002059 +:100D10008E03018024020F00546200073C02800809 +:100D20008E0201883C0300E03042FFFF00431025A3 +:100D30000A000328AE020080344200809042000086 +:100D400024030050304200FF14430007000000005D +:100D50000E000362000000001440000300000000C9 +:100D60000E000971000000003C0208008C42003CAB +:100D70003C0440003C03800024420001AC6401B804 +:100D80003C010800AC22003C0A0002A33C028000A7 +:100D90003C02900034420001008220253C02800089 +:100DA000AC4400203C0380008C6200200440FFFE25 +:100DB0000000000003E00008000000003C0280008A +:100DC000344300010083202503E00008AC440020E8 +:100DD00027BDFFE0AFB10014AFB000100080882144 +:100DE000AFBF00180E00033230B000FF8F83FF94B6 +:100DF000022020219062002502028025A07000259B +:100E00008C7000183C0280000E00033D020280241A +:100E10001600000B8FBF00183C0480008C8201F884 +:100E20000440FFFE348201C024030002AC510000E4 +:100E3000A04300043C021000AC8201F88FBF0018F0 +:100E40008FB100148FB0001003E0000827BD002010 +:100E500027BDFFE83C028000AFBF00103442018094 +:100E6000944300048C4400083063020010600005C5 +:100E7000000028210E00100C000000000A0003787A +:100E8000240500013C02FF000480000700821824B2 +:100E90003C02040014620004240500018F82FF94C8 +:100EA00090420008240500018FBF001000A010210F +:100EB00003E0000827BD00188F82FF982405000179 +:100EC000A040001A3C028000344201400A00034264 +:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E +:100EE000AFB20018AFB10014AFB0001090A2000074 +:100EF000304400FF38830020388200300003182B74 +:100F00000002102B0062182410600003240200501D +:100F1000148200A88FBF001C90A20005304200017F +:100F2000104000A48FBF001C3C02800034420140EE +:100F3000904200082443FFFF2C6200051040009EF1 +:100F40008FB20018000310803C030800246355ACE6 +:100F5000004310218C420000004000080000000007 +:100F60003C028000345101400E0003328E24000008 +:100F70008F92FF948E2200048E50000C1602000205 +:100F800024020001AE42000C0E00033D8E2400003E +:100F90008E220004145000068FBF001C8FB2001870 +:100FA0008FB100148FB000100A000F7827BD002009 +:100FB0008E42000C0A000419000000003C0480006E +:100FC0003482014094A300108C4200043063FFFF80 +:100FD0001443001C0000000024020001A4A2001021 +:100FE0008C8202380441000F3C0380003C02003F29 +:100FF0003448F0003C0760003C06FFC08CE22BBC8C +:1010000000461824004810240002130200031D8229 +:10101000106200583C0280008C8202380440FFF7C6 +:101020003C038000346201408C44000034620200C2 +:10103000AC4400003C021000AC6202380A00043BE1 +:101040008FBF001C94A200100A00041900000000C9 +:10105000240200201482000F3C0280003C03800028 +:1010600094A20012346301408C6300043042FFFFFD +:10107000146200050000000024020001A4A2001276 +:101080000A0004028FBF001C94A200120A00041977 +:1010900000000000345101400E0003328E24000095 +:1010A0008F92FF948E230004964200123050FFFF6F +:1010B0001603000224020001A64200120E00033DA6 +:1010C0008E2400008E220004160200068FBF001C32 +:1010D0008FB200188FB100148FB000100A00037C8B +:1010E00027BD0020964200120A00041900000000EB +:1010F0003C03800094A20014346301408C6300041C +:101100003042FFFF14620008240200018FBF001C60 +:101110008FB200188FB100148FB00010A4A2001479 +:101120000A00146327BD002094A20014144000217B +:101130008FBF001C0A000435000000003C03800043 +:1011400094A20016346301408C6300043042FFFF18 +:101150001462000D240200018FBF001C8FB2001822 +:101160008FB100148FB00010A4A200160A000B1457 +:1011700027BD00209442007824420004A4A200105D +:101180000A00043B8FBF001C94A200162403000138 +:101190003042FFFF144300078FBF001C3C020800D1 +:1011A0008C420070244200013C010800AC22007017 +:1011B0008FBF001C8FB200188FB100148FB00010C9 +:1011C00003E0000827BD002027BDFFD8AFB20018FC +:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB +:1011E000AFB000103C028000345101008C5001006F +:1011F0009242000092230009304400FF2402001FA5 +:10120000106200AB28620020104000192402003850 +:101210002862000A1040000D2402000B286200081A +:101220001040002E8F820024046001042862000216 +:101230001440002A8F820024240200061062002637 +:101240008FBF00200A00055F8FB3001C1062006092 +:101250002862000B144000FA8FBF00202402000E09 +:10126000106200788F8200240A00055F8FB3001C93 +:10127000106200D2286200391040000A2402008067 +:1012800024020036106200E528620037104000C3D7 +:1012900024020035106200D98FBF00200A00055FCC +:1012A0008FB3001C1062002D2862008110400006E0 +:1012B000240200C824020039106200C98FBF002038 +:1012C0000A00055F8FB3001C106200A28FBF0020D0 +:1012D0000A00055F8FB3001C8F8200248C42000C33 +:1012E000104000D78FBF00200E000D8400000000CA +:1012F0003C038000346301008C6200008F85002075 +:10130000946700089466000CACA200008C64000492 +:101310008F82002400063400ACA400049448001E10 +:101320008C62001800073C0000E83825ACA20008D9 +:101330008C62001C24040001ACA2000C9062000A24 +:1013400000C23025ACA60010ACA00014ACA0001860 +:10135000ACA7001C0A00051D8FBF00208F8200244F +:101360008C42000C104000B68FBF00200E000D8490 +:10137000000000008F820024962400089625000CAF +:101380009443001E000422029626000E8F82002045 +:10139000000426000083202500052C003C0300806B +:1013A00000A6282500832025AC400000AC400004A6 +:1013B000AC400008AC40000CAC450010AC40001440 +:1013C000AC400018AC44001C0A00051C24040001B9 +:1013D0009622000C14400018000000009242000504 +:1013E0003042001014400014000000000E000332D0 +:1013F0000200202192420005020020213442001008 +:101400000E00033DA242000592420000240300208A +:10141000304200FF10430089020020218FBF0020CE +:101420008FB3001C8FB200188FB100148FB0001062 +:101430000A00107527BD00280000000D0A00055E97 +:101440008FBF00208C42000C1040007D8FBF002019 +:101450000E000D84000000008E2200048F84002006 +:101460009623000CAC8200003C0280089445002CBE +:101470008F82002400031C0030A5FFFF9446001E4D +:101480003C02400E0065182500C23025AC830004E4 +:10149000AC800008AC80000CAC800010AC80001464 +:1014A000AC800018AC86001C0A00051C2404000156 +:1014B0000E000332020020218F93FF9802002021AA +:1014C0000E00033DA660000C020020210E00034226 +:1014D000240500018F8200248C42000C104000582B +:1014E0008FBF00200E000D84000000009622000C2B +:1014F0008F83002000021400AC700000AC62000476 +:10150000AC6000088E4400388F820024AC64000C6C +:101510008E46003C9445001E3C02401FAC66001005 +:1015200000A228258E62000424040001AC6200148D +:10153000AC600018AC65001C8FBF00208FB3001C8E +:101540008FB200188FB100148FB000100A000DB8D0 +:1015500027BD0028240200201082003A8FB3001C0F +:101560000E000F5E00000000104000358FBF00200D +:101570003C0480008C8201F80440FFFE348201C0EC +:1015800024030002AC500000A04300043C02100001 +:10159000AC8201F80A00055E8FBF00200200202106 +:1015A0008FBF00208FB3001C8FB200188FB10014C2 +:1015B0008FB000100A000EA727BD00289625000C4A +:1015C000020020218FBF00208FB3001C8FB20018B3 +:1015D0008FB100148FB000100A000ECC27BD002878 +:1015E000020020218FB3001C8FB200188FB10014AD +:1015F0008FB000100A000EF727BD00289225000DBD +:10160000020020218FB3001C8FB200188FB100148C +:101610008FB000100A000F4827BD002802002021CB +:101620008FBF00208FB3001C8FB200188FB1001441 +:101630008FB000100A000F1F27BD00288FBF0020A9 +:101640008FB3001C8FB200188FB100148FB0001040 +:1016500003E0000827BD00283C0580008CA202782A +:101660000440FFFE34A2024024030002AC44000008 +:10167000A04300043C02100003E00008ACA2027882 +:10168000A380001803E00008A38000193C03800039 +:101690008C6202780440FFFE8F82001CAC62024024 +:1016A00024020002A06202443C02100003E0000891 +:1016B000AC6202783C02600003E000088C425404F3 +:1016C0009083003024020005008040213063003FF9 +:1016D0000000482114620005000050219082004C57 +:1016E0009483004E304900FF306AFFFFAD00000CCC +:1016F000AD000010AD000024950200148D05001C03 +:101700008D0400183042FFFF004910230002110031 +:10171000000237C3004038210086202300A2102B8E +:101720000082202300A72823AD05001CAD0400186B +:10173000A5090014A5090020A50A001603E0000869 +:10174000A50A002203E000080000000027BDFFD822 +:10175000AFB200183C128008AFB40020AFB3001C39 +:10176000AFB10014AFBF0024AFB00010365101007C +:101770003C0260008C4254049222000C3C1408008D +:10178000929400F7304300FF2402000110620032FF +:101790000080982124020002146200353650008037 +:1017A0000E00143D000000009202004C2403FF8054 +:1017B0003C0480003042007F000211C024420240FD +:1017C0000262102100431824AC8300949245000863 +:1017D0009204004C3042007F3C03800614850007D1 +:1017E000004380212402FFFFA22200112402FFFFF8 +:1017F000A62200120A0005D22402FFFF9602002052 +:10180000A222001196020022A62200128E020024BB +:101810003C048008AE2200143485008090A2004C65 +:1018200034830100A06200108CA2003CAC6200185E +:101830008C820068AC6200F48C820064AC6200F0C0 +:101840008C82006CAC6200F824020001A0A2006847 +:101850000A0005EE3C0480080E001456000000004B +:1018600036420080A04000680A0005EE3C04800873 +:10187000A2000068A20000690A0006293C02800854 +:10188000348300808C62003834850100AC62006CC7 +:1018900024020001A062006990A200D59083000894 +:1018A000305100FF3072007F12320019001111C058 +:1018B00024420240026210212403FF8000431824C6 +:1018C0003C048000AC8300943042007F3C038006DF +:1018D000004380218E02000C1040000D02002021E8 +:1018E0000E00057E0000000026220001305100FF9E +:1018F0009203003C023410260002102B0002102339 +:101900003063007F022288240A0005F8A203003C0D +:101910003C088008350401008C8200E03507008017 +:10192000ACE2003C8C8200E0AD02000090E5004C8F +:10193000908600D590E3004C908400D52402FF806F +:1019400000A228243063007F308400FF00A62825F1 +:101950000064182A1060000230A500FF38A500803E +:10196000A0E5004CA10500093C0280089043000E50 +:10197000344400803C058000A043000A8C8300189A +:101980003C027FFF3442FFFF00621824AC83001842 +:101990008CA201F80440FFFE00000000ACB301C0BF +:1019A0008FBF00248FB400208FB3001C8FB20018AB +:1019B0008FB100148FB0001024020002A0A201C455 +:1019C00027BD00283C02100003E00008ACA201F88B +:1019D00090A2000024420001A0A200003C030800E5 +:1019E0008C6300F4304200FF144300020080302179 +:1019F000A0A0000090A200008F84001C000211C073 +:101A00002442024024830040008220212402FF80DF +:101A1000008220243063007F3C02800A006218218B +:101A20003C028000AC44002403E00008ACC300008A +:101A300094820006908300058C85000C8C86001033 +:101A40008C8700188C88001C8C8400203C010800C6 +:101A5000A42256C63C010800A02356C53C0108003C +:101A6000AC2556CC3C010800AC2656D03C01080001 +:101A7000AC2756D83C010800AC2856DC3C010800D5 +:101A8000AC2456E003E00008000000003C0280089F +:101A9000344201008C4400343C038000346504006F +:101AA000AC6400388C420038AF850028AC62003C42 +:101AB0003C020005AC6200300000000000000000A5 +:101AC00003E00008000000003C020006308400FF34 +:101AD000008220253C028000AC4400300000000061 +:101AE00000000000000000003C0380008C62000049 +:101AF000304200101040FFFD3462040003E0000893 +:101B0000AF82002894C200003C080800950800CA73 +:101B100030E7FFFF0080482101021021A4C200002D +:101B200094C200003042FFFF00E2102B544000013D +:101B3000A4C7000094A200003C0308008C6300CC02 +:101B400024420001A4A2000094A200003042FFFF42 +:101B5000144300073C0280080107102BA4A00000DA +:101B60005440000101003821A4C700003C02800855 +:101B7000344601008CC3002894A200003C0480007D +:101B80003042FFFE000210C000621021AC82003C17 +:101B90008C82003C006218231860000400000000E2 +:101BA0008CC200240A0006BA244200018CC2002420 +:101BB000AC8200383C020050344200103C038000EC +:101BC000AC620030000000000000000000000000D7 +:101BD0008C620000304200201040FFFD0000000039 +:101BE00094A200003C04800030420001000210C0BA +:101BF000004410218C430400AD2300008C420404F7 +:101C0000AD2200043C02002003E00008AC8200305A +:101C100027BDFFE0AFB20018AFB10014AFB00010A5 +:101C2000AFBF001C94C2000000C080213C1208001D +:101C3000965200C624420001A6020000960300004E +:101C400094E2000000E03021144300058FB1003021 +:101C50000E00068F024038210A0006F10000000045 +:101C60008C8300048C82000424420040046100073D +:101C7000AC8200048C8200040440000400000000D8 +:101C80008C82000024420001AC8200009602000019 +:101C90003042FFFF50520001A600000096220000D3 +:101CA00024420001A62200003C02800834420100C8 +:101CB000962300009442003C144300048FBF001C94 +:101CC00024020001A62200008FBF001C8FB2001862 +:101CD0008FB100148FB0001003E0000827BD002072 +:101CE00027BDFFE03C028008AFBF0018344201006E +:101CF0008C4800343C03800034690400AC68003830 +:101D00008C42003830E700FFAF890028AC62003C0D +:101D10003C020005AC620030000000000000000042 +:101D200000000000000000000000000000000000B3 +:101D30008C82000C8C82000C97830016AD22000070 +:101D40008C82001000604021AD2200048C820018BB +:101D5000AD2200088C82001CAD22000C8CA2001465 +:101D6000AD2200108C820020AD220014908200056C +:101D7000304200FF00021200AD2200188CA20018B1 +:101D8000AD22001C8CA2000CAD2200208CA2001001 +:101D9000AD2200248CA2001CAD2200288CA20020C1 +:101DA000AD22002C3402FFFFAD260030AD20003400 +:101DB000506200013408FFFFAD28003850E00011E8 +:101DC0003C0280083C048008348401009482005066 +:101DD0003042FFFFAD22003C9483004494850044D0 +:101DE000240200013063FFFF000318C200641821C1 +:101DF0009064006430A5000700A210040A00075C8C +:101E00000044102534420100AD20003C94430044BE +:101E1000944400443063FFFF000318C2006218219D +:101E200030840007906500642402000100821004E1 +:101E30000002102700451024A0620064000000008A +:101E400000000000000000003C0200063442004098 +:101E50003C038000AC620030000000000000000085 +:101E6000000000008C620000304200101040FFFDB6 +:101E70003C06800834C201503463040034C7014A70 +:101E800034C4013434C5014034C60144AFA200104B +:101E90000E0006D2AF8300288FBF001803E00008B1 +:101EA00027BD00208F8300143C0608008CC600E884 +:101EB0008F82001C30633FFF000319800046102111 +:101EC000004310212403FF80004318243C068000B7 +:101ED000ACC300283042007F3C03800C004330211B +:101EE00090C2000D30A500FF0000382134420010E0 +:101EF000A0C2000D8F8900143C028008344201000A +:101F00009443004400091382304800032402000176 +:101F1000A4C3000E1102000B2902000210400005AC +:101F2000240200021100000C240300010A0007A48F +:101F30000000182111020006000000000A0007A49A +:101F4000000018218CC2002C0A0007A424430001C1 +:101F50008CC20014244300018CC200180043102BD3 +:101F60005040000A240700012402002714A20003A5 +:101F70003C0380080A0007B1240700013463010014 +:101F80009462004C24420001A462004C00091382B8 +:101F9000304300032C620002104000090080282119 +:101FA000146000040000000094C200340A0007C15D +:101FB0003046FFFF8CC600380A0007C10080282188 +:101FC000000030213C040800248456C00A000706A3 +:101FD0000000000027BDFF90AFB60068AFB50064F9 +:101FE000AFB40060AFB3005CAFB20058AFB1005403 +:101FF000AFBF006CAFB000508C9000000080B021EB +:102000003C0208008C4200E8960400328F83001CDA +:102010002414FF8030843FFF0062182100042180D7 +:1020200000641821007410243C13800000A090214B +:1020300090A50000AE620028920400323C02800CA1 +:102040003063007F00628821308400C02402004099 +:10205000148200320000A8218E3500388E2200182C +:102060001440000224020001AE2200189202003C3B +:10207000304200201440000E8F83001C000511C068 +:102080002442024000621821306400783C02008043 +:102090000082202500741824AE630800AE64081086 +:1020A0008E2200188E03000800431021AE22001873 +:1020B0008E22002C8E230018244200010062182B6F +:1020C0001060004300000000924200002442000122 +:1020D000A24200003C0308008C6300F4304200FF81 +:1020E00050430001A2400000924200008F84001C77 +:1020F000000211C024420240248300403063007F6C +:10210000008220213C02800A0094202400621821D1 +:10211000AE6400240A0008D2AEC30000920300326D +:102120002402FFC000431024304200FF1440000589 +:1021300024020001AE220018962200340A00084250 +:102140003055FFFF8E22001424420001AE220018F9 +:102150009202003000021600000216030441001C27 +:10216000000000009602003227A400100080282101 +:10217000A7A20016960200320000302124070001B9 +:102180003042FFFFAF8200140E000706AFA0001C14 +:10219000960200328F83001C3C0408008C8400E807 +:1021A00030423FFF000211800064182100621821B4 +:1021B00000741024AE62002C3063007F3C02800E5D +:1021C000006218219062000D3042007FA062000D75 +:1021D0009222000D304200105040007892420000E0 +:1021E0003C028008344401009482004C8EC30000FD +:1021F0003C130800967300C62442FFFFA482004CE3 +:10220000946200329623000E3054FFFF3070FFFFBF +:102210003C0308008C6300D000701807A7A30038A7 +:102220009482003E3063FFFF3042FFFF14620007DC +:10223000000000008C8200303C038000244200300B +:10224000AC62003C0A00086A8C82002C9482004038 +:102250003042FFFF5462000927A400408C820038FE +:102260003C03800024420030AC62003C8C8200348D +:10227000AC6200380A0008793C03800027A50038CA +:1022800027A60048026038210E00068FA7A000484C +:102290008FA300403C02800024630030AC43003830 +:1022A0008FA30044AC43003C3C0380003C0200058B +:1022B000AC6200303C028008344401009482004249 +:1022C000346304003042FFFF0202102B1440000769 +:1022D000AF8300289482004E9483004202021021B2 +:1022E000004310230A00088F3043FFFF9483004E01 +:1022F00094820042026318210050102300621823C8 +:102300003063FFFF3C028008344401009482003CAB +:102310003042FFFF14430003000000000A00089F42 +:10232000240300019482003C3042FFFF0062102B26 +:10233000144000058F8200289482003C0062102324 +:102340003043FFFF8F820028AC550000AC400004F2 +:10235000AC540008AC43000C3C02000634420010B0 +:102360003C038000AC620030000000000000000070 +:10237000000000008C620000304200101040FFFDA1 +:102380003C04800834840100001018C20064182145 +:102390009065006432020007240600010046100424 +:1023A00000451025A0620064948300429622000E2E +:1023B00050430001A386001892420000244200010D +:1023C000A24200003C0308008C6300F4304200FF8E +:1023D00050430001A2400000924200008F84001C84 +:1023E000000211C0244202402483004000822021C8 +:1023F0002402FF80008220243063007F3C02800A98 +:10240000006218213C028000AC440024AEC30000EE +:102410008FBF006C8FB600688FB500648FB400600A +:102420008FB3005C8FB200588FB100548FB0005052 +:1024300003E0000827BD007027BDFFD8AFB3001C24 +:10244000AFB20018AFB10014AFB00010AFBF0020A2 +:102450000080982100E0802130B1FFFF0E000D8444 +:1024600030D200FF0000000000000000000000006B +:102470008F8200208F830024AC510000AC520004F6 +:10248000AC530008AC40000CAC400010AC40001451 +:10249000AC4000189463001E02038025AC50001C61 +:1024A0000000000000000000000000002404000103 +:1024B0008FBF00208FB3001C8FB200188FB10014A3 +:1024C0008FB000100A000DB827BD002830A5FFFF0F +:1024D0000A0008DC30C600FF3C02800834430100DB +:1024E0009462000E3C080800950800C63046FFFFC5 +:1024F00014C000043402FFFF946500EA0A000929B1 +:102500008F84001C10C20027000000009462004E5F +:102510009464003C3045FFFF00A6102300A6182B52 +:102520003087FFFF106000043044FFFF00C5102318 +:1025300000E210233044FFFF0088102B1040000EF3 +:1025400000E810233C028008344401002403000109 +:1025500034420080A44300162402FFFFA482000E30 +:10256000948500EA8F84001C0000302130A5FFFF15 +:102570000A0009013C0760200044102A10400009AD +:102580003C0280083443008094620016304200010F +:10259000104000043C0280009442007E244200145B +:1025A000A462001603E000080000000027BDFFE061 +:1025B0003C028008AFBF001CAFB0001834420100DD +:1025C000944300429442004C104000193068FFFFD1 +:1025D0009383001824020001146200298FBF001C9D +:1025E0003C06800834D00100000810C200501021C1 +:1025F000904200643103000734C70148304200FFB5 +:10260000006210073042000134C9014E34C4012C6D +:1026100034C5013E1040001634C601420E0006D2F9 +:10262000AFA90010960200420A0009463048FFFF99 +:102630003C028008344401009483004494820042A8 +:102640001043000F8FBF001C94820044A4820042FC +:1026500094820050A482004E8C820038AC820030FC +:1026600094820040A482003E9482004AA4820048E2 +:102670008FBF001C8FB000180A00090427BD00207E +:102680008FB0001803E0000827BD002027BDFFA081 +:10269000AFB1004C3C118000AFBF0058AFB3005445 +:1026A000AFB20050AFB000483626018890C2000398 +:1026B0003044007FA3A400108E32018090C200003D +:1026C0003043007F240200031062003BAF92001CE5 +:1026D00028620004104000062402000424020002C4 +:1026E000106200098FBF00580A000B0F8FB300540F +:1026F0001062004D240200051062014E8FBF005889 +:102700000A000B0F8FB30054000411C002421021C5 +:102710002404FF8024420240004410242643004049 +:10272000AE2200243063007F3C02800A0062182140 +:102730009062003CAFA3003C00441025A062003C26 +:102740008FA3003C9062003C304200401040016C7E +:102750008FBF00583C108008A3800018361001007D +:102760008E0200E08C63003427A4003C27A50010F3 +:10277000004310210E0007C3AE0200E093A2001038 +:102780003C038000A20200D58C6202780440FFFE68 +:102790008F82001CAC62024024020002A06202444C +:1027A0003C021000AC6202780E0009390000000003 +:1027B0000A000B0E8FBF00583C05800890C3000133 +:1027C00090A2000B1443014E8FBF005834A4008028 +:1027D0008C8200189082004C90A200083C0260009D +:1027E0008C4254048C8300183C027FFF3442FFFF6C +:1027F000006218243C0208008C4200B4AC8300182C +:102800003C038000244200013C010800AC2200B4DB +:102810008C6201F80440FFFE8F82001CAC6201C094 +:102820000A000AD6240200023C10800890C300016E +:102830009202000B144301328FBF005827A40018E6 +:1028400036050110240600033C0260008C4254044B +:102850000E000E470000000027A40028360501F0F6 +:102860000E000E47240600038FA200283603010045 +:10287000AE0200648FA2002CAE0200688FA200306E +:10288000AE02006C93A40018906300D52402FF8070 +:102890000082102400431025304900FF3084007F5F +:1028A0003122007F0082102A544000013929008023 +:1028B000000411C0244202402403FF800242102180 +:1028C00000431024AE220094264200403042007F94 +:1028D0003C038006004340218FA3001C2402FFFF1D +:1028E000AFA800403C130800927300F71062003359 +:1028F00093A2001995030014304400FF3063FFFFDA +:102900000064182B106000100000000095040014F3 +:102910008D07001C8D0600183084FFFF0044202323 +:102920000004210000E438210000102100E4202BE5 +:1029300000C2302100C43021AD07001CAD060018D4 +:102940000A000A2F93A20019950400148D07001C99 +:102950008D0600183084FFFF008220230004210030 +:10296000000010210080182100C2302300E4202B39 +:1029700000C4302300E33823AD07001CAD06001867 +:1029800093A200198FA30040A462001497A2001A1A +:10299000A46200168FA2001CAC6200108FA2001C63 +:1029A000AC62000C93A20019A462002097A2001A46 +:1029B000A46200228FA2001CAC6200243C048008A8 +:1029C000348300808C6200388FA20020012088218F +:1029D000AC62003C8FA20020AC82000093A20018E1 +:1029E000A062004C93A20018A0820009A0600068B9 +:1029F00093A20018105100512407FF803229007F54 +:102A0000000911C024420240024210213046007FDA +:102A10003C03800000471024AC6200943C02800616 +:102A200000C2302190C2003CAFA60040000020212F +:102A300000471025A0C2003C8FA80040950200026C +:102A4000950300148D07001C3042FFFF3063FFFF29 +:102A50008D060018004310230002110000E2382107 +:102A600000E2102B00C4302100C23021AD07001C51 +:102A7000AD06001895020002A5020014A50000167C +:102A80008D020008AD0200108D020008AD02000C9E +:102A900095020002A5020020A50000228D02000878 +:102AA000AD0200249102003C304200401040001A68 +:102AB000262200013C108008A3A90038A38000183A +:102AC000361001008E0200E08D03003427A4004080 +:102AD00027A50038004310210E0007C3AE0200E016 +:102AE00093A200383C038000A20200D58C620278D9 +:102AF0000440FFFE8F82001CAC62024024020002F0 +:102B0000A06202443C021000AC6202780E00093957 +:102B100000000000262200013043007F14730004EF +:102B2000004020212403FF8002231024004320269C +:102B300093A200180A000A4B309100FF93A40018DA +:102B40008FA3001C2402FFFF1062000A308900FFDF +:102B500024820001248300013042007F14530005C9 +:102B6000306900FF2403FF800083102400431026F7 +:102B7000304900FF3C028008904200080120882173 +:102B8000305000FF123000193222007F000211C0C5 +:102B900002421021244202402403FF8000431824F3 +:102BA0003C048000AC8300943042007F3C038006EC +:102BB000004310218C43000C004020211060000BCA +:102BC000AFA200400E00057E000000002623000199 +:102BD0002405FF803062007F145300020225202468 +:102BE000008518260A000AAF307100FF3C048008F7 +:102BF000348400808C8300183C027FFF3442FFFF46 +:102C000000621824AC8300183C0380008C6201F839 +:102C10000440FFFE00000000AC7201C0240200026C +:102C2000A06201C43C021000AC6201F80A000B0E65 +:102C30008FBF00583C04800890C300019082000BB5 +:102C40001443002F8FBF0058349000809202000878 +:102C500030420040104000200000000092020008B6 +:102C60000002160000021603044100050240202164 +:102C70000E000ECC240500930A000B0E8FBF0058E7 +:102C80009202000924030018304200FF1443000D93 +:102C900002402021240500390E000E64000030217E +:102CA0000E0003328F84001C8F82FF9424030012D5 +:102CB000A04300090E00033D8F84001C0A000B0E88 +:102CC0008FBF0058240500360E000E64000030212E +:102CD0000A000B0E8FBF00580E0003320240202165 +:102CE000920200058F84001C344200200E00033D38 +:102CF000A20200050E0010758F84001C8FBF0058C3 +:102D00008FB300548FB200508FB1004C8FB0004889 +:102D100003E0000827BD00603C0280083445010044 +:102D20003C0280008C42014094A3000E0000302140 +:102D300000402021AF82001C3063FFFF3402FFFF00 +:102D4000106200063C0760202402FFFFA4A2000ED0 +:102D500094A500EA0A00090130A5FFFF03E000087E +:102D60000000000027BDFFC83C0280003C06800830 +:102D7000AFB5002CAFB1001CAFBF0030AFB400281E +:102D8000AFB30024AFB20020AFB00018345101003F +:102D900034C501008C4301008E2200148CA400E491 +:102DA0000000A821AF83001C0044102318400052EB +:102DB000A38000188E22001400005021ACA200E471 +:102DC00090C3000890A200D53073007FA3A200102A +:102DD0008CB200E08CB400E4304200FF1053003BA2 +:102DE00093A200108F83001C2407FF80000211C0F3 +:102DF0000062102124420240246300400047102456 +:102E00003063007F3C0980003C08800A006818217C +:102E1000AD2200248C62003427A4001427A50010E2 +:102E2000024280210290102304400028AFA3001426 +:102E30009062003C00E21024304200FF1440001970 +:102E4000020090219062003C34420040A062003CAD +:102E50008F86001C93A3001024C200403042007FE4 +:102E6000004828213C0208008C4200F42463000141 +:102E7000306400FF14820002A3A30010A3A000107E +:102E800093A20010AFA50014000211C0244202401A +:102E900000C2102100471024AD2200240A000B4577 +:102EA00093A200100E0007C3000000003C0280083F +:102EB00034420100AC5000E093A30010240A00014A +:102EC000A04300D50A000B4593A200102402000184 +:102ED000154200093C0380008C6202780440FFFE2A +:102EE0008F82001CAC62024024020002A0620244F5 +:102EF0003C021000AC6202789222000B2403000214 +:102F0000304200FF144300720000000096220008C7 +:102F1000304300FF24020082146200402402008437 +:102F20003C028000344901008D22000C95230006EC +:102F3000000216023063FFFF3045003F24020027E5 +:102F400010A2000FAF83001428A200281040000830 +:102F5000240200312402002110A2000924020025CD +:102F600010A20007938200190A000BBD00000000A8 +:102F700010A20007938200190A000BBD0000000098 +:102F80000E000777012020210A000C3D0000000000 +:102F90003C0380008C6202780440FFFE8F82001C9C +:102FA000AC62024024020002A06202443C02100013 +:102FB000AC6202780A000C3D000000009523000678 +:102FC000912400058D25000C8D2600108D270018FA +:102FD0008D28001C8D290020244200013C0108009E +:102FE000A42356C63C010800A02456C53C01080095 +:102FF000AC2556CC3C010800AC2656D03C0108005C +:10300000AC2756D83C010800AC2856DC3C0108002F +:10301000AC2956E00A000C3DA38200191462000A94 +:10302000240200813C02800834420100944500EAF9 +:10303000922600058F84001C30A5FFFF30C600FFDC +:103040000A000BFE3C0760211462005C00000000D7 +:103050009222000A304300FF306200201040000737 +:10306000306200403C02800834420100944500EA8E +:103070008F84001C0A000BFC24060040104000074F +:10308000000316003C02800834420100944500EA27 +:103090008F84001C0A000BFC24060041000216036A +:1030A000044100463C02800834420100944500EA95 +:1030B0008F84001C2406004230A5FFFF3C076019E6 +:1030C0000E000901000000000A000C3D0000000095 +:1030D0009222000B24040016304200FF1044000628 +:1030E0003C0680009222000B24030017304200FFB0 +:1030F000144300320000000034C5010090A2000B10 +:10310000304200FF1444000B000080218CA20020FC +:103110008CA400202403FF800043102400021140EF +:103120003084007F004410253C032000004310251C +:10313000ACC2083094A2000800021400000214037C +:10314000044200012410000194A2000830420080D3 +:103150005040001A0200A82194A20008304220002A +:10316000504000160200A8218CA300183C021C2D20 +:10317000344219ED106200110200A8213C0208003F +:103180008C4200D4104000053C0280082403000457 +:1031900034420100A04300FC3C028008344201009C +:1031A000944500EA8F84001C2406000630A5FFFF2A +:1031B0000E0009013C0760210200A8210E00093918 +:1031C000000000009222000A304200081040000473 +:1031D00002A010210E0013790000000002A01021AF +:1031E0008FBF00308FB5002C8FB400288FB3002420 +:1031F0008FB200208FB1001C8FB0001803E00008D0 +:1032000027BD00382402FF80008220243C02900069 +:1032100034420007008220253C028000AC4400209C +:103220003C0380008C6200200440FFFE0000000090 +:1032300003E00008000000003C0380002402FF803F +:10324000008220243462000700822025AC64002024 +:103250008C6200200440FFFE0000000003E0000834 +:103260000000000027BDFFD8AFB3001CAFB10014B1 +:10327000AFB00010AFBF0020AFB200183C1180000B +:103280003C0280088E32002034530100AE2400201E +:10329000966300EA000514003C074000004738250B +:1032A00000A08021000030210E0009013065FFFFE1 +:1032B000240200A1160200022402FFFFA2620009FC +:1032C000AE3200208FBF00208FB3001C8FB20018D9 +:1032D0008FB100148FB0001003E0000827BD002854 +:1032E0003C0280082403000527BDFFE834420100AA +:1032F000A04300FCAFBF00103C0280008C420100E4 +:10330000240500A1004020210E000C67AF82001CA4 +:103310003C0380008C6202780440FFFE8F82001C18 +:103320008FBF001027BD0018AC62024024020002CB +:10333000A06202443C021000AC62027803E0000884 +:103340000000000027BDFFE83C068000AFBF001072 +:1033500034C7010094E20008304400FF3883008243 +:10336000388200842C6300012C4200010062182581 +:103370001060002D24020083938200195040003B0E +:103380008FBF00103C020800904256CC8CC4010054 +:103390003C06080094C656C63045003F38A30032AC +:1033A00038A2003F2C6300012C4200010062182566 +:1033B000AF84001CAF860014A380001914600007BE +:1033C00000E020212402002014A2001200000000CE +:1033D0003402FFFF14C2000F00000000240200208E +:1033E00014A2000500E028218CE300142402FFFF52 +:1033F0005062000B8FBF00103C040800248456C0AC +:10340000000030210E000706240700010A000CD638 +:103410008FBF00100E000777000000008FBF001064 +:103420000A00093927BD001814820004240200850F +:103430008CC501040A000CE1000020211482000662 +:103440002482FF808CC50104240440008FBF00103B +:103450000A00016727BD0018304200FF2C4200021D +:1034600010400004240200228FBF00100A000B2726 +:1034700027BD0018148200048F8200248FBF001023 +:103480000A000C8627BD00188C42000C1040001E5C +:1034900000E0282190E300092402001814620003D0 +:1034A000240200160A000CFC240300081462000722 +:1034B00024020017240300123C02800834420080DA +:1034C000A04300090A000D0994A7000854620007F0 +:1034D00094A700088F82FF942404FFFE9043000508 +:1034E00000641824A043000594A7000890A6001BC0 +:1034F0008CA4000094A500068FBF001000073C00BC +:103500000A0008DC27BD00188FBF001003E0000888 +:1035100027BD00188F8500243C04800094A2002A57 +:103520008CA30034000230C02402FFF000C210243B +:1035300000621821AC83003C8CA200303C03800068 +:10354000AC8200383C02005034420010AC620030C3 +:103550000000000000000000000000008C6200007D +:10356000304200201040FFFD30C20008104000062D +:103570003C0280008C620408ACA200208C62040C27 +:103580000A000D34ACA200248C430400ACA300203C +:103590008C420404ACA200243C0300203C028000C6 +:1035A000AC4300303C0480008C8200300043102487 +:1035B0001440FFFD8F8600243C020040AC820030A6 +:1035C00094C3002A94C2002894C4002C94C5002EF1 +:1035D00024630001004410213064FFFFA4C20028CE +:1035E00014850002A4C3002AA4C0002A03E0000836 +:1035F000000000008F84002427BDFFE83C05800404 +:1036000024840010AFBF00100E000E472406000AED +:103610008F840024948200129483002E3042000F85 +:10362000244200030043180424027FFF0043102BB0 +:1036300010400002AC8300000000000D0E000D13CE +:10364000000000008F8300248FBF001027BD0018EA +:10365000946200149463001A3042000F00021500B7 +:10366000006218253C02800003E00008AC4300A083 +:103670008F8300243C028004944400069462001A64 +:103680008C650000A4640016004410233042FFFF44 +:103690000045102B03E00008384200018F8400240D +:1036A0003C0780049486001A8C85000094E2000692 +:1036B000A482001694E3000600C310233042FFFFEB +:1036C0000045102B384200011440FFF8A483001677 +:1036D00003E00008000000008F8400243C02800406 +:1036E000944200069483001A8C850000A482001680 +:1036F000006210233042FFFF0045102B38420001CA +:103700005040000D8F850024006030213C0780046C +:1037100094E20006A482001694E3000600C310237E +:103720003042FFFF0045102B384200011440FFF8E3 +:10373000A48300168F8500243C03800034620400BB +:103740008CA40020AF820020AC6400388CA200243E +:10375000AC62003C3C020005AC62003003E00008B3 +:10376000ACA000048F8400243C0300068C8200047B +:1037700000021140004310253C038000AC62003081 +:103780000000000000000000000000008C6200004B +:10379000304200101040FFFD34620400AC80000491 +:1037A00003E00008AF8200208F86002427BDFFE0E1 +:1037B000AFB10014AFB00010AFBF00188CC300044D +:1037C0008CC500248F820020309000FF94C4001A22 +:1037D00024630001244200202484000124A7002047 +:1037E000ACC30004AF820020A4C4001AACC70024FC +:1037F00004A100060000882104E2000594C2001A1A +:103800008CC2002024420001ACC2002094C2001AE5 +:1038100094C300282E040001004310262C4200010E +:10382000004410245040000594C2001A24020001F4 +:10383000ACC2000894C2001A94C300280010202BC8 +:10384000004310262C4200010044102514400007BC +:10385000000000008CC20008144000042402001084 +:103860008CC300041462000F8F8500240E000DA786 +:10387000241100018F820024944300289442001AEE +:1038800014430003000000000E000D1300000000B0 +:10389000160000048F8500240E000D840000000037 +:1038A0008F85002494A2001E94A4001C24420001D1 +:1038B0003043FFFF14640002A4A2001EA4A0001E57 +:1038C0001200000A3C02800494A2001494A3001A7F +:1038D0003042000F00021500006218253C028000F3 +:1038E000AC4300A00A000E1EACA0000894420006E3 +:1038F00094A3001A8CA40000A4A200160062102356 +:103900003042FFFF0044102B384200011040000DF0 +:1039100002201021006030213C07800494E2000660 +:10392000A4A2001694E3000600C310233042FFFF58 +:103930000044102B384200011440FFF8A4A30016E5 +:10394000022010218FBF00188FB100148FB000101B +:1039500003E0000827BD002003E00008000000008D +:103960008F82002C3C03000600021140004310250A +:103970003C038000AC62003000000000000000004A +:10398000000000008C620000304200101040FFFD7B +:1039900034620400AF82002803E00008AF80002CEE +:1039A00003E000080000102103E000080000000010 +:1039B0003084FFFF30A5FFFF0000182110800007B2 +:1039C000000000003082000110400002000420428C +:1039D000006518210A000E3D0005284003E000089C +:1039E0000060102110C0000624C6FFFF8CA200005A +:1039F00024A50004AC8200000A000E4724840004C1 +:103A000003E000080000000010A0000824A3FFFF4E +:103A1000AC86000000000000000000002402FFFF50 +:103A20002463FFFF1462FFFA2484000403E000080B +:103A3000000000003C0280083442008024030001A2 +:103A4000AC43000CA4430010A4430012A443001490 +:103A500003E00008A44300168F82002427BDFFD88E +:103A6000AFB3001CAFB20018AFB10014AFB000107C +:103A7000AFBF00208C47000C248200802409FF8007 +:103A80003C08800E3043007F008080213C0A80008B +:103A9000004920240068182130B100FF30D200FF17 +:103AA00010E000290000982126020100AD44002CFE +:103AB000004928243042007F004820219062000005 +:103AC00024030050304200FF1443000400000000B3 +:103AD000AD45002C948200EA3053FFFF0E000D84A8 +:103AE000000000008F8200248F83002000112C0032 +:103AF0009442001E001224003484000100A22825F4 +:103B00003C02400000A22825AC7000008FBF0020BE +:103B1000AC6000048FB20018AC7300088FB10014C1 +:103B2000AC60000C8FB3001CAC6400108FB00010B0 +:103B3000AC60001424040001AC60001827BD00280C +:103B40000A000DB8AC65001C8FBF00208FB3001CAD +:103B50008FB200188FB100148FB0001003E000087E +:103B600027BD00283C06800034C201009043000FAE +:103B7000240200101062000E2865001110A000073A +:103B800024020012240200082405003A10620006F4 +:103B90000000302103E0000800000000240500358B +:103BA0001462FFFC000030210A000E6400000000D7 +:103BB0008CC200748F83FF9424420FA003E000089E +:103BC000AC62000C27BDFFE8AFBF00100E0003423F +:103BD000240500013C0480088FBF0010240200016E +:103BE00034830080A462001227BD00182402000163 +:103BF00003E00008A080001A27BDFFE0AFB2001864 +:103C0000AFB10014AFB00010AFBF001C30B2FFFF67 +:103C10000E000332008088213C028008345000806E +:103C20009202000924030004304200FF1443000CF8 +:103C30003C028008124000082402000A0E000E5BBD +:103C400000000000920200052403FFFE0043102440 +:103C5000A202000524020012A20200093C02800810 +:103C600034420080022020210E00033DA0400027A6 +:103C700016400003022020210E000EBF00000000AD +:103C800002202021324600FF8FBF001C8FB2001897 +:103C90008FB100148FB00010240500380A000E64A4 +:103CA00027BD002027BDFFE0AFBF001CAFB200184A +:103CB000AFB10014AFB000100E00033200808021BD +:103CC0000E000E5B000000003C02800834450080BE +:103CD00090A2000924120018305100FF1232000394 +:103CE0000200202124020012A0A2000990A20005D7 +:103CF0002403FFFE004310240E00033DA0A2000594 +:103D00000200202124050020163200070000302187 +:103D10008FBF001C8FB200188FB100148FB000103D +:103D20000A00034227BD00208FBF001C8FB200187D +:103D30008FB100148FB00010240500390A000E6402 +:103D400027BD002027BDFFE83C028000AFB0001077 +:103D5000AFBF0014344201009442000C2405003629 +:103D60000080802114400012304600FF0E00033214 +:103D7000000000003C02800834420080240300124E +:103D8000A043000990430005346300100E000E5B51 +:103D9000A04300050E00033D020020210200202167 +:103DA0000E000342240500200A000F3C0000000022 +:103DB0000E000E64000000000E00033202002021FD +:103DC0003C0280089043001B2405FF9F0200202135 +:103DD000006518248FBF00148FB00010A043001B93 +:103DE0000A00033D27BD001827BDFFE0AFBF001844 +:103DF000AFB10014AFB0001030B100FF0E000332BD +:103E0000008080213C02800824030012344200809C +:103E10000E000E5BA04300090E00033D02002021AE +:103E200002002021022030218FBF00188FB1001422 +:103E30008FB00010240500350A000E6427BD002055 +:103E40003C0480089083000E9082000A1443000B0B +:103E5000000028218F82FF942403005024050001D4 +:103E600090420000304200FF1443000400000000B4 +:103E70009082000E24420001A082000E03E00008A0 +:103E800000A010213C0380008C6201F80440FFFE7A +:103E900024020002AC6401C0A06201C43C02100014 +:103EA00003E00008AC6201F827BDFFE0AFB20018E4 +:103EB0003C128008AFB10014AFBF001CAFB00010BF +:103EC00036510080922200092403000A304200FF8C +:103ED0001443003E000000008E4300048E22003890 +:103EE000506200808FBF001C92220000240300500B +:103EF000304200FF144300253C0280008C42014008 +:103F00008E4300043642010002202821AC43001CED +:103F10009622005C8E2300383042FFFF00021040E2 +:103F200000621821AE23001C8E4300048E2400384A +:103F30009622005C006418233042FFFF0003184300 +:103F4000000210400043102A10400006000000004C +:103F50008E4200048E230038004310230A000FAA6B +:103F6000000220439622005C3042FFFF0002204006 +:103F70003C0280083443010034420080ACA4002C91 +:103F8000A040002424020001A062000C0E000F5E7D +:103F900000000000104000538FBF001C3C02800056 +:103FA0008C4401403C0380008C6201F80440FFFE19 +:103FB00024020002AC6401C0A06201C43C021000F3 +:103FC000AC6201F80A0010078FBF001C92220009A2 +:103FD00024030010304200FF144300043C02800020 +:103FE0008C4401400A000FEE0000282192220009B3 +:103FF00024030016304200FF14430006240200147C +:10400000A22200093C0280008C4401400A001001F9 +:104010008FBF001C8E2200388E23003C00431023EB +:10402000044100308FBF001C92220027244200016F +:10403000A2220027922200272C42000414400016DE +:104040003C1080009222000924030004304200FF4B +:10405000144300093C0280008C4401408FBF001CC7 +:104060008FB200188FB100148FB000102405009398 +:104070000A000ECC27BD00208C440140240500938B +:104080008FBF001C8FB200188FB100148FB00010CA +:104090000A000F4827BD00208E0401400E000332A5 +:1040A000000000008E4200042442FFFFAE420004E4 +:1040B0008E22003C2442FFFFAE22003C0E00033D56 +:1040C0008E0401408E0401408FBF001C8FB2001887 +:1040D0008FB100148FB00010240500040A000342C1 +:1040E00027BD00208FB200188FB100148FB00010D0 +:1040F00003E0000827BD00203C0680008CC2018838 +:104100003C038008346500809063000E00021402B6 +:10411000304400FF306300FF1464000E3C0280084E +:1041200090A20026304200FF104400098F82FF94C5 +:10413000A0A400262403005090420000304200FF5B +:1041400014430006000000000A0005A18CC4018091 +:104150003C02800834420080A044002603E00008AE +:104160000000000027BDFFE030E700FFAFB20018FD +:10417000AFBF001CAFB10014AFB0001000809021A1 +:1041800014E0000630C600FF000000000000000D33 +:10419000000000000A001060240001163C038008A3 +:1041A0009062000E304200FF14460023346200800B +:1041B00090420026304200FF1446001F000000001D +:1041C0009062000F304200FF1446001B0000000008 +:1041D0009062000A304200FF144600038F90FF9463 +:1041E0000000000D8F90FF948F82FF983C1180009B +:1041F000AE05003CAC450000A066000A0E0003328C +:104200008E240100A20000240E00033D8E24010034 +:104210003C0380008C6201F80440FFFE240200028F +:10422000AC7201C0A06201C43C021000AC6201F893 +:104230000A0010618FBF001C000000000000000D8C +:10424000000000002400013F8FBF001C8FB2001847 +:104250008FB100148FB0001003E0000827BD0020CC +:104260008F83FF943C0280008C44010034420100A3 +:104270008C65003C9046001B0A00102724070001B3 +:104280003C0280089043000E9042000A0043102632 +:10429000304200FF03E000080002102B27BDFFE0C2 +:1042A0003C028008AFB10014AFB00010AFBF0018DF +:1042B0003450008092020005240300303042003068 +:1042C00014430085008088218F8200248C42000CDA +:1042D000104000828FBF00180E000D840000000007 +:1042E0008F860020ACD100009202000892030009E2 +:1042F000304200FF00021200306300FF004310252F +:10430000ACC200049202004D000216000002160327 +:1043100004410005000000003C0308008C630048D5 +:104320000A00109F3C1080089202000830420040B2 +:10433000144000030000182192020027304300FFC0 +:104340003C108008361100809222004D00031E00B0 +:10435000304200FF0002140000621825ACC30008C0 +:104360008E2400308F820024ACC4000C8E250034D3 +:104370009443001E3C02C00BACC50010006218251F +:104380008E22003800002021ACC200148E22003C96 +:10439000ACC200180E000DB8ACC3001C8E020004A5 +:1043A0008F8400203C058000AC8200008E2200201B +:1043B000AC8200048E22001CAC8200088E220058C1 +:1043C0008CA3007400431021AC82000C8E22002CC0 +:1043D000AC8200108E2200408E23004400021400A4 +:1043E00000431025AC8200149222004D240300806B +:1043F000304200FF1443000400000000AC800018AD +:104400000A0010E38F8200248E23000C2402000196 +:104410001062000E2402FFFF92220008304200408A +:104420001440000A2402FFFF8E23000C8CA20074AB +:10443000006218233C0208000062102414400002AD +:10444000000028210060282100051043AC820018DC +:104450008F820024000020219443001E3C02C00CE7 +:10446000006218258F8200200E000DB8AC43001C9E +:104470003C038008346201008C4200008F850020DC +:10448000346300808FBF0018ACA20000ACA0000411 +:104490008C6400488F8200248FB10014ACA4000803 +:1044A000ACA0000CACA00010906300059446001E68 +:1044B0003C02400D00031E0000C23025ACA30014D6 +:1044C0008FB00010ACA0001824040001ACA6001CA2 +:1044D0000A000DB827BD00208FBF00188FB100144F +:1044E0008FB0001003E0000827BD00203C028000D0 +:1044F0009443007C3C02800834460100308400FF75 +:104500003065FFFF2402000524A34650A0C4000C20 +:104510005482000C3065FFFF90C2000D2C42000752 +:104520001040000724A30A0090C3000D24020014C9 +:104530000062100400A210210A00111F3045FFFF85 +:104540003065FFFF3C0280083442008003E0000831 +:10455000A44500143C03800834680080AD05003891 +:10456000346701008CE2001C308400FF00A210239D +:104570001840000330C600FF24A2FFFCACE2001C80 +:1045800030820001504000083C0380088D02003C4E +:1045900000A2102304410012240400058C620004D0 +:1045A00010A2000F3C0380088C62000414A2001EBD +:1045B000000000003C0208008C4200D8304200207D +:1045C000104000093C0280083462008090630008BB +:1045D0009042004C144300043C0280082404000470 +:1045E0000A00110900000000344300803442010039 +:1045F000A040000C24020001A462001410C0000AB4 +:104600003C0280008C4401003C0380008C6201F875 +:104610000440FFFE24020002AC6401C0A06201C499 +:104620003C021000AC6201F803E00008000000004A +:1046300027BDFFE800A61823AFBF00101860008058 +:10464000308800FF3C02800834470080A0E000244E +:1046500034440100A0E000278C82001C00A210233B +:1046600004400056000000008CE2003C94E3005C33 +:104670008CE4002C004530233063FFFF00C3182179 +:104680000083202B1080000400E018218CE2002C15 +:104690000A00117800A2102194E2005C3042FFFF72 +:1046A00000C2102100A21021AC62001C3C02800854 +:1046B000344400809482005C8C83001C3042FFFFF5 +:1046C0000002104000A210210043102B10400004F3 +:1046D000000000008C82001C0A00118B3C06800840 +:1046E0009482005C3042FFFF0002104000A21021C3 +:1046F0003C06800834C3010034C70080AC82001C33 +:10470000A060000CACE500388C62001C00A21023F5 +:104710001840000224A2FFFCAC62001C3102000120 +:10472000104000083C0380088CE2003C00A21023EB +:1047300004410012240400058CC2000410A20010E1 +:104740008FBF00108C62000414A2004F8FBF0010B6 +:104750003C0208008C4200D8304200201040000A81 +:104760003C02800834620080906300089042004C54 +:10477000144300053C028008240400048FBF00108D +:104780000A00110927BD001834430080344201009B +:10479000A040000C24020001A46200143C0280002E +:1047A0008C4401003C0380008C6201F80440FFFE51 +:1047B000240200020A0011D8000000008CE2001C54 +:1047C000004610230043102B54400001ACE5001CB0 +:1047D00094E2005C3042FFFF0062102B144000079F +:1047E0002402000294E2005C8CE3001C3042FFFFD4 +:1047F00000621821ACE3001C24020002ACE5003882 +:104800000E000F5EA082000C1040001F8FBF001032 +:104810003C0280008C4401003C0380008C6201F863 +:104820000440FFFE24020002AC6401C0A06201C487 +:104830003C021000AC6201F80A0011F08FBF0010BA +:1048400031020010104000108FBF00103C028008A1 +:10485000344500808CA3001C94A2005C00661823E1 +:104860003042FFFF006218213C023FFF3444FFFF4B +:104870000083102B544000010080182100C3102138 +:10488000ACA2001C8FBF001003E0000827BD001879 +:1048900027BDFFE800C0402100A63023AFBF0010B5 +:1048A00018C00026308A00FF3C028008344900808E +:1048B0008D24001C8D23002C008820230064182BDD +:1048C0001060000F344701008CE2002000461021E8 +:1048D000ACE200208CE200200044102B1440000BBE +:1048E0003C023FFF8CE2002000441023ACE2002099 +:1048F0009522005C3042FFFF0A0012100082202146 +:10490000ACE00020008620213C023FFF3443FFFF43 +:104910000064102B54400001006020213C028008FC +:104920003442008000851821AC43001CA0400024C4 +:10493000A04000270A0012623C03800831420010A8 +:10494000104000433C0380083C06800834C40080CB +:104950008C82003C004810235840003E34660080A2 +:104960009082002424420001A0820024908200242E +:104970003C0308008C630024304200FF0043102BEE +:10498000144000688FBF001034C201008C42001C2C +:1049900000A2102318400063000000008CC3000434 +:1049A0009482005C006818233042FFFF0003184324 +:1049B000000210400043102A1040000500000000D3 +:1049C0008CC20004004810230A0012450002104364 +:1049D0009482005C3042FFFF000210403C068008D9 +:1049E000AC82002C34C5008094A2005C8CA4002C06 +:1049F00094A3005C3042FFFF00021040008220219F +:104A00003063FFFF0083202101041021ACA2001CB1 +:104A10008CC2000434C60100ACC2001C2402000297 +:104A20000E000F5EA0C2000C1040003E8FBF0010B1 +:104A30003C0280008C4401003C0380008C6201F841 +:104A40000440FFFE240200020A001292000000004F +:104A500034660080ACC50038346401008C82001CD0 +:104A600000A210231840000224A2FFFCAC82001C0C +:104A7000314200015040000A3C0380088CC2003CD7 +:104A800000A2102304430014240400058C620004D7 +:104A900014A200033C0380080A00128424040005C9 +:104AA0008C62000414A2001F8FBF00103C0208009B +:104AB0008C4200D8304200201040000A3C0280089E +:104AC00034620080906300089042004C144300055B +:104AD0003C028008240400048FBF00100A00110962 +:104AE00027BD00183443008034420100A040000C70 +:104AF00024020001A46200143C0280008C440100E6 +:104B00003C0380008C6201F80440FFFE2402000296 +:104B1000AC6401C0A06201C43C021000AC6201F8A8 +:104B20008FBF001003E0000827BD001827BDFFE875 +:104B30003C0A8008AFBF0010354900808D22003C40 +:104B400000C04021308400FF004610231840009D23 +:104B500030E700FF354701002402000100A63023A2 +:104B6000A0E0000CA0E0000DA522001418C0002455 +:104B7000308200108D23001C8D22002C0068182329 +:104B80000043102B1040000F000000008CE20020BA +:104B900000461021ACE200208CE200200043102BE4 +:104BA0001440000B3C023FFF8CE200200043102326 +:104BB000ACE200209522005C3042FFFF0A0012C1E7 +:104BC00000621821ACE00020006618213C023FFF83 +:104BD0003446FFFF00C3102B5440000100C01821D1 +:104BE0003C0280083442008000651821AC43001C60 +:104BF000A0400024A04000270A00130F3C038008B7 +:104C0000104000403C0380088D22003C00481023E7 +:104C10005840003D34670080912200242442000166 +:104C2000A1220024912200243C0308008C6300246C +:104C3000304200FF0043102B1440009A8FBF001039 +:104C40008CE2001C00A21023184000960000000017 +:104C50008D4300049522005C006818233042FFFF5A +:104C600000031843000210400043102A10400005C2 +:104C7000012020218D420004004810230A0012F276 +:104C8000000210439522005C3042FFFF00021040FA +:104C90003C068008AC82002C34C5008094A2005CE5 +:104CA0008CA4002C94A3005C3042FFFF0002104053 +:104CB000008220213063FFFF0083182101031021AF +:104CC000ACA2001C8CC2000434C60100ACC2001CA3 +:104CD000240200020E000F5EA0C2000C1040007102 +:104CE0008FBF00103C0280008C4401003C03800018 +:104CF0008C6201F80440FFFE240200020A0013390E +:104D00000000000034670080ACE500383466010024 +:104D10008CC2001C00A210231840000224A2FFFC39 +:104D2000ACC2001C30820001504000083C038008E7 +:104D30008CE2003C00A2102304430051240400052F +:104D40008C62000410A2003E3C0380088C620004C8 +:104D500054A200548FBF00103C0208008C4200D8BF +:104D600030420020104000063C028008346200807F +:104D7000906300089042004C104300403C028008C1 +:104D80003443008034420100A040000C24020001A2 +:104D9000A46200143C0280008C4401003C038000AB +:104DA0008C6201F80440FFFE24020002AC6401C0E2 +:104DB000A06201C43C021000AC6201F80A00137743 +:104DC0008FBF001024020005A120002714E2000A72 +:104DD0003C038008354301009062000D2C42000620 +:104DE000504000053C0380089062000D2442000101 +:104DF000A062000D3C03800834670080ACE50038F9 +:104E0000346601008CC2001C00A21023184000026E +:104E100024A2FFFCACC2001C308200015040000AFA +:104E20003C0380088CE2003C00A2102304410014E3 +:104E3000240400058C62000414A200033C038008D3 +:104E40000A00136E240400058C62000414A20015ED +:104E50008FBF00103C0208008C4200D83042002076 +:104E60001040000A3C028008346200809063000811 +:104E70009042004C144300053C02800824040004C6 +:104E80008FBF00100A00110927BD001834430080AD +:104E900034420100A040000C24020001A46200146E +:104EA0008FBF001003E0000827BD00183C0B8008EE +:104EB00027BDFFE83C028000AFBF00103442010074 +:104EC000356A00809044000A356901008C45001461 +:104ED0008D4800389123000C308400FF0105102319 +:104EE0001C4000B3306700FF2CE20006504000B1C8 +:104EF0008FBF00102402000100E2300430C2000322 +:104F00005440000800A8302330C2000C144000A117 +:104F100030C20030144000A38FBF00100A00143BC1 +:104F20000000000018C00024308200108D43001CD7 +:104F30008D42002C006818230043102B1040000FF6 +:104F4000000000008D22002000461021AD2200202C +:104F50008D2200200043102B1440000B3C023FFF29 +:104F60008D22002000431023AD2200209542005CDA +:104F70003042FFFF0A0013AF00621821AD2000206D +:104F8000006618213C023FFF3446FFFF00C3102B90 +:104F90005440000100C018213C02800834420080C7 +:104FA00000651821AC43001CA0400024A04000274D +:104FB0000A0013FD3C038008104000403C038008B9 +:104FC0008D42003C004810231840003D34670080AB +:104FD0009142002424420001A14200249142002475 +:104FE0003C0308008C630024304200FF0043102B78 +:104FF000144000708FBF00108D22001C00A21023EF +:105000001840006C000000008D6300049542005CB5 +:10501000006818233042FFFF0003184300021040CD +:105020000043102A10400005014020218D62000439 +:10503000004810230A0013E0000210439542005C70 +:105040003042FFFF000210403C068008AC82002C7A +:1050500034C5008094A2005C8CA4002C94A3005C56 +:105060003042FFFF00021040008220213063FFFF2A +:105070000083182101031021ACA2001C8CC2000483 +:1050800034C60100ACC2001C240200020E000F5EF8 +:10509000A0C2000C104000478FBF00103C028000EF +:1050A0008C4401003C0380008C6201F80440FFFE48 +:1050B000240200020A00142D000000003467008062 +:1050C000ACE50038346601008CC2001C00A210233D +:1050D0001840000224A2FFFCACC2001C3082000178 +:1050E0005040000A3C0380088CE2003C00A21023E0 +:1050F00004430014240400058C62000414A200037D +:105100003C0380080A00141F240400058C6200047C +:1051100014A200288FBF00103C0208008C4200D867 +:10512000304200201040000A3C02800834620080B7 +:10513000906300089042004C144300053C02800834 +:10514000240400048FBF00100A00110927BD0018B5 +:105150003443008034420100A040000C24020001CE +:10516000A46200143C0280008C4401003C038000D7 +:105170008C6201F80440FFFE24020002AC6401C00E +:10518000A06201C43C021000AC6201F80A00143BAA +:105190008FBF00108FBF0010010030210A00115A8C +:1051A00027BD0018010030210A00129927BD001800 +:1051B0008FBF001003E0000827BD00183C038008E3 +:1051C0003464010024020003A082000C8C620004FD +:1051D00003E00008AC82001C3C05800834A300807A +:1051E0009062002734A501002406004324420001F8 +:1051F000A0620027906300273C0208008C42004810 +:10520000306300FF146200043C07602194A500EAAB +:105210000A00090130A5FFFF03E0000800000000BC +:1052200027BDFFE8AFBF00103C0280000E00144411 +:105230008C4401803C02800834430100A060000CD3 +:105240008C4200048FBF001027BD001803E0000847 +:10525000AC62001C27BDFFE03C028008AFBF001815 +:10526000AFB10014AFB000103445008034460100E7 +:105270003C0880008D09014090C3000C8CA4003CC8 +:105280008CA200381482003B306700FF9502007C3E +:1052900090A30027146000093045FFFF2402000599 +:1052A00054E200083C04800890C2000D2442000132 +:1052B000A0C2000D0A00147F3C048008A0C0000DAD +:1052C0003C048008348201009042000C2403000555 +:1052D000304200FF1443000A24A205DC348300801E +:1052E000906200272C4200075040000524A20A00CB +:1052F00090630027240200140062100400A2102111 +:105300003C108008361000803045FFFF012020212E +:105310000E001444A60500149602005C8E030038AB +:105320003C1180003042FFFF000210400062182153 +:10533000AE03001C0E0003328E24014092020025B1 +:1053400034420040A20200250E00033D8E2401409D +:105350008E2401403C0380008C6201F80440FFFE73 +:1053600024020002AC6401C0A06201C43C0210002F +:10537000AC6201F88FBF00188FB100148FB000101D +:1053800003E0000827BD00203C0360103C02080039 +:1053900024420174AC62502C8C6250003C048000AA +:1053A00034420080AC6250003C0208002442547C2D +:1053B0003C010800AC2256003C020800244254384C +:1053C0003C010800AC2256043C020002AC840008F8 +:1053D000AC82000C03E000082402000100A0302190 +:1053E0003C1C0800279C56083C0200023C050400B7 +:1053F00000852826008220260004102B2CA5000101 +:105400002C840001000210803C0308002463560035 +:105410000085202500431821108000030000102182 +:10542000AC6600002402000103E000080000000058 +:105430003C1C0800279C56083C0200023C05040066 +:1054400000852826008220260004102B2CA50001B0 +:105450002C840001000210803C03080024635600E5 +:105460000085202500431821108000050000102130 +:105470003C02080024425438AC62000024020001BF +:1054800003E00008000000003C0200023C030400AE +:1054900000821026008318262C4200012C63000194 +:1054A000004310251040000B000028213C1C080080 +:1054B000279C56083C0380008C62000824050001EC +:1054C00000431025AC6200088C62000C00441025DB +:1054D000AC62000C03E0000800A010213C1C080096 +:1054E000279C56083C0580008CA3000C0004202754 +:1054F000240200010064182403E00008ACA3000C9F +:105500003C020002148200063C0560008CA208D018 +:105510002403FFFE0043102403E00008ACA208D0DF +:105520003C02040014820005000000008CA208D098 +:105530002403FFFD00431024ACA208D003E00008C0 +:10554000000000003C02601A344200108C430080CE +:1055500027BDFFF88C440084AFA3000093A3000094 +:10556000240200041462001AAFA4000493A20001F4 +:105570001040000797A300023062FFFC3C0380004C +:10558000004310218C4200000A001536AFA200042F +:105590003062FFFC3C03800000431021AC4400005B +:1055A000A3A000003C0560008CA208D02403FFFEED +:1055B0003C04601A00431024ACA208D08FA300045E +:1055C0008FA2000034840010AC830084AC82008081 +:1055D00003E0000827BD000827BDFFE8AFBF0010AB +:1055E0003C1C0800279C56083C0280008C43000CA1 +:1055F0008C420004004318243C0200021060001496 +:10560000006228243C0204003C04000210A00005B3 +:10561000006210243C0208008C4256000A00155B10 +:1056200000000000104000073C0404003C02080099 +:105630008C4256040040F809000000000A00156082 +:10564000000000000000000D3C1C0800279C5608CC +:105650008FBF001003E0000827BD0018800802403B +:1056600080080100800800808008000000000C8095 +:105670000000320008000E9808000EF408000F88A1 +:1056800008001028080010748008010080080080BD +:10569000800800000A000028000000000000000050 +:1056A0000000000D6370362E322E316200000000C3 +:1056B00006020104000000000000000000000000DD +:1056C000000000000000000038003C000000000066 +:1056D00000000000000000000000000000000020AA +:1056E00000000000000000000000000000000000BA +:1056F00000000000000000000000000000000000AA +:10570000000000000000000021003800000000013F +:105710000000002B000000000000000400030D400A +:105720000000000000000000000000000000000079 +:105730000000000000000000100000030000000056 +:105740000000000D0000000D3C020800244259AC8E +:105750003C03080024635BF4AC4000000043202BB2 +:105760001480FFFD244200043C1D080037BD9FFC4F +:1057700003A0F0213C100800261000A03C1C0800EB +:10578000279C59AC0E0002F6000000000000000D3E +:1057900027BDFFB4AFA10000AFA20004AFA3000873 +:1057A000AFA4000CAFA50010AFA60014AFA700185F +:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF +:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F +:1057D000AFB8003CAFB90040AFBC0044AFBF004819 +:1057E0000E000820000000008FBF00488FBC00445E +:1057F0008FB900408FB8003C8FAF00388FAE0034B7 +:105800008FAD00308FAC002C8FAB00288FAA002406 +:105810008FA900208FA8001C8FA700188FA6001446 +:105820008FA500108FA4000C8FA300088FA2000486 +:105830008FA1000027BD004C3C1B60188F7A5030B0 +:10584000377B502803400008AF7A000000A01821E1 +:1058500000801021008028213C0460003C0760008B +:105860002406000810600006348420788C42000072 +:10587000ACE220088C63000003E00008ACE3200CDD +:105880000A000F8100000000240300403C02600079 +:1058900003E00008AC4320003C0760008F86000452 +:1058A0008CE520740086102100A2182B14600007DC +:1058B000000028218F8AFDA024050001A1440013C7 +:1058C0008F89000401244021AF88000403E0000810 +:1058D00000A010218F84FDA08F8500049086001306 +:1058E00030C300FF00A31023AF82000403E00008D0 +:1058F000A08000138F84FDA027BDFFE8AFB000108B +:10590000AFBF001490890011908700112402002875 +:10591000312800FF3906002830E300FF2485002CE1 +:105920002CD00001106200162484001C0E00006EB2 +:10593000000000008F8FFDA03C05600024020204DF +:1059400095EE003E95ED003C000E5C0031ACFFFF93 +:10595000016C5025ACAA2010520000012402000462 +:10596000ACA22000000000000000000000000000C9 +:105970008FBF00148FB0001003E0000827BD00188F +:105980000A0000A6000028218F85FDA027BDFFD8B2 +:10599000AFBF0020AFB3001CAFB20018AFB100140E +:1059A000AFB000100080982190A4001124B0001C1A +:1059B00024B1002C308300FF386200280E000090D4 +:1059C0002C5200010E00009800000000020020216F +:1059D0001240000202202821000028210E00006E43 +:1059E000000000008F8DFDA03C0880003C05600099 +:1059F00095AC003E95AB003C02683025000C4C0095 +:105A0000316AFFFF012A3825ACA7201024020202C8 +:105A1000ACA6201452400001240200028FBF0020D7 +:105A20008FB3001C8FB200188FB100148FB000101C +:105A300027BD002803E00008ACA2200027BDFFE03E +:105A4000AFB20018AFB10014AFB00010AFBF001C70 +:105A50003C1160008E2320748F82000430D0FFFF41 +:105A600030F2FFFF1062000C2406008F0E00006E63 +:105A7000000000003C06801F0010440034C5FF00F9 +:105A80000112382524040002AE2720100000302126 +:105A9000AE252014AE2420008FBF001C8FB200184A +:105AA0008FB100148FB0001000C0102103E0000877 +:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2 +:105AC000AFBF0018AFB100140E00006E30F1FFFF41 +:105AD00000102400009180253C036000AC70201071 +:105AE0008FBF00188FB100148FB000102402000483 +:105AF000AC62200027BD002003E000080000102158 +:105B000027BDFFE03C046018AFBF0018AFB1001420 +:105B1000AFB000108C8850002403FF7F34028071E6 +:105B20000103382434E5380C241F00313C1980006F +:105B3000AC8550003C11800AAC8253BCAF3F0008DA +:105B40000E00054CAF9100400E00050A3C116000AC +:105B50000E00007D000000008E3008083C0F570941 +:105B60002418FFF00218602435EEE00035EDF00057 +:105B7000018E5026018D58262D4600012D69000109 +:105B8000AF86004C0E000D09AF8900503C06601630 +:105B90008CC700003C0860148D0500A03C03FFFF8B +:105BA00000E320243C02535300052FC2108200550D +:105BB00034D07C00960201F2A780006C10400003F4 +:105BC000A780007C384B1E1EA78B006C960201F844 +:105BD000104000048F8D0050384C1E1EA78C007C96 +:105BE0008F8D005011A000058F83004C240E0020E3 +:105BF000A78E007CA78E006C8F83004C1060000580 +:105C00009785007C240F0020A78F007CA78F006C55 +:105C10009785007C2CB8008153000001240500808A +:105C20009784006C2C91040152200001240404008C +:105C30001060000B3C0260008FBF00188FB1001491 +:105C40008FB0001027BD0020A784006CA785007CC2 +:105C5000A380007EA780007403E00008A780009264 +:105C60008C4704382419103C30FFFFFF13F9000360 +:105C700030A8FFFF1100004624030050A380007EDF +:105C80009386007E50C00024A785007CA780007CFE +:105C90009798007CA780006CA7800074A780009272 +:105CA0003C010800AC3800800E00078700000000AF +:105CB0003C0F60008DED0808240EFFF03C0B600ED9 +:105CC000260C0388356A00100000482100002821B6 +:105CD00001AE20243C105709AF8C0010AF8A004859 +:105CE000AF89001810900023AF8500148FBF0018F3 +:105CF0008FB100148FB0001027BD002003E0000812 +:105D0000AF80005400055080014648218D260004D4 +:105D10000A00014800D180219798007CA784006C7C +:105D2000A7800074A78000923C010800AC38008076 +:105D30000E000787000000003C0F60008DED080892 +:105D4000240EFFF03C0B600E260C0388356A001011 +:105D5000000048210000282101AE20243C105709F2 +:105D6000AF8C0010AF8A0048AF8900181490FFDF95 +:105D7000AF85001424110001AF9100548FBF0018AB +:105D80008FB100148FB0001003E0000827BD002081 +:105D90000A00017BA383007E3083FFFF8F880040D1 +:105DA0008F87003C000321403C0580003C020050EE +:105DB000008248253C0660003C0A010034AC040027 +:105DC0008CCD08E001AA58241160000500000000F5 +:105DD0008CCF08E024E7000101EA7025ACCE08E092 +:105DE0008D19001001805821ACB900388D180014AD +:105DF000ACB8003CACA9003000000000000000007E +:105E00000000000000000000000000000000000092 +:105E100000000000000000003C0380008C640000D3 +:105E2000308200201040FFFD3C0F60008DED08E047 +:105E30003C0E010001AE18241460FFE100000000D8 +:105E4000AF87003C03E00008AF8B00588F8500400F +:105E5000240BFFF03C06800094A7001A8CA90024B4 +:105E600030ECFFFF000C38C000EB5024012A402129 +:105E7000ACC8003C8CA400248CC3003C00831023DD +:105E800018400033000000008CAD002025A2000166 +:105E90003C0F0050ACC2003835EE00103C068000CC +:105EA000ACCE003000000000000000000000000048 +:105EB00000000000000000000000000000000000E2 +:105EC000000000003C0480008C9900003338002062 +:105ED0001300FFFD30E20008104000173C0980006D +:105EE0008C880408ACA800108C83040CACA30014AC +:105EF0003C1900203C188000AF19003094AE001807 +:105F000094AF001C01CF3021A4A6001894AD001A54 +:105F100025A70001A4A7001A94AB001A94AC001E98 +:105F2000118B00030000000003E0000800000000E7 +:105F300003E00008A4A0001A8D2A0400ACAA0010F7 +:105F40008D240404ACA400140A0002183C1900209B +:105F50008CA200200A0002003C0F00500A0001EE53 +:105F60000000000027BDFFE8AFBF00100E000232A6 +:105F7000000000008F8900408FBF00103C038000AC +:105F8000A520000A9528000A9527000427BD0018BF +:105F90003105FFFF30E6000F0006150000A22025A6 +:105FA00003E00008AC6400803C0508008CA50020DC +:105FB0008F83000C27BDFFE8AFB00010AFBF001407 +:105FC00010A300100000802124040001020430040A +:105FD00000A6202400C3102450440006261000010F +:105FE000001018802787FDA41480000A006718217C +:105FF000261000012E0900025520FFF38F83000CAC +:10600000AF85000C8FBF00148FB0001003E00008B4 +:1060100027BD00188C6800003C058000ACA8002457 +:106020000E000234261000013C0508008CA500205B +:106030000A0002592E0900022405000100851804F7 +:106040003C0408008C84002027BDFFC8AFBF00348B +:1060500000831024AFBE0030AFB7002CAFB60028CD +:10606000AFB50024AFB40020AFB3001CAFB200182E +:10607000AFB1001410400051AFB000108F84004049 +:10608000948700069488000A00E8302330D5FFFF8B +:1060900012A0004B8FBF0034948B0018948C000A20 +:1060A000016C50233142FFFF02A2482B1520000251 +:1060B00002A02021004020212C8F000515E00002C5 +:1060C00000809821241300040E0001C102602021E9 +:1060D0008F87004002609021AF80004494F4000A52 +:1060E000026080211260004E3291FFFF3C1670006A +:1060F0003C1440003C1E20003C1760008F99005863 +:106100008F380000031618241074004F0283F82BF8 +:1061100017E0003600000000107E00478F86004424 +:1061200014C0003A2403000102031023022320219B +:106130003050FFFF1600FFF13091FFFF8F870040C6 +:106140003C1100203C108000AE11003094EB000A9E +:106150003C178000024B5021A4EA000A94E9000A8F +:1061600094E800043123FFFF3106000F00062D00E4 +:106170000065F025AEFE008094F3000A94F6001846 +:1061800012D30036001221408CFF00148CF4001052 +:1061900003E468210000C02101A4782B029870213B +:1061A00001CF6021ACED0014ACEC001002B238233A +:1061B00030F5FFFF16A0FFB88F8400408FBF00347A +:1061C0008FBE00308FB7002C8FB600288FB500240B +:1061D0008FB400208FB3001C8FB200188FB1001451 +:1061E0008FB0001003E0000827BD00381477FFCC03 +:1061F0008F8600440E000EE202002021004018218C +:106200008F86004410C0FFC9020310230270702360 +:106210008F87004001C368210A0002E431B2FFFF0A +:106220008F86004414C0FFC93C1100203C10800040 +:106230000A0002AEAE1100300E00046602002021FA +:106240000A0002DB00401821020020210E0009395B +:10625000022028210A0002DB004018210E0001EE76 +:10626000000000000A0002C702B2382327BDFFC8A1 +:10627000AFB7002CAFB60028AFB50024AFB40020F4 +:10628000AFB3001CAFB20018AFB10014AFB0001034 +:10629000AFBF00300E00011B241300013C047FFF40 +:1062A0003C0380083C0220003C010800AC20007048 +:1062B0003496FFFF34770080345200033C1512C03F +:1062C000241400013C1080002411FF800E000245C0 +:1062D000000000008F8700488F8B00188F89001402 +:1062E0008CEA00EC8CE800E8014B302B01092823F4 +:1062F00000A6102314400006014B18231440000E82 +:106300003C05800002A3602B1180000B0000000000 +:106310003C0560008CEE00EC8CED00E88CA4180CC1 +:10632000AF8E001804800053AF8D00148F8F0010C3 +:10633000ADF400003C0580008CBF00003BF900017B +:10634000333800011700FFE13C0380008C6201003C +:1063500024060C0010460009000000008C680100B3 +:106360002D043080548000103C0480008C690100B2 +:106370002D2331811060000C3C0480008CAA0100A8 +:1063800011460004000020218CA6010024C5FF81D5 +:1063900030A400FF8E0B01000E000269AE0B00243A +:1063A0000A00034F3C0480008C8D01002DAC3300AB +:1063B00011800022000000003C0708008CE70098D4 +:1063C00024EE00013C010800AC2E00983C04800043 +:1063D0008C8201001440000300000000566000148D +:1063E0003C0440008C9F01008C9801000000982123 +:1063F00003F1C82400193940330F007F00EF7025E6 +:1064000001D26825AC8D08308C8C01008C85010090 +:10641000258B0100017130240006514030A3007F1C +:106420000143482501324025AC8808303C04400037 +:10643000AE0401380A00030E000000008C99010030 +:10644000240F0020AC99002092F80000330300FFD5 +:10645000106F000C241F0050547FFFDD3C048000AF +:106460008C8401000E00154E000000000A00034F4E +:106470003C04800000963824ACA7180C0A000327BF +:106480008F8F00108C8501000E0008F72404008017 +:106490000A00034F3C04800000A4102B24030001D9 +:1064A00010400009000030210005284000A4102BF6 +:1064B00004A00003000318405440FFFC00052840DE +:1064C0005060000A0004182B0085382B54E00004AB +:1064D0000003184200C33025008520230003184222 +:1064E0001460FFF9000528420004182B03E000089F +:1064F00000C310213084FFFF30C600FF3C0780003E +:106500008CE201B80440FFFE00064C000124302557 +:106510003C08200000C820253C031000ACE00180AE +:10652000ACE50184ACE4018803E00008ACE301B809 +:106530003C0660008CC5201C2402FFF03083020062 +:10654000308601001060000E00A2282434A500014E +:106550003087300010E0000530830C0034A50004C3 +:106560003C04600003E00008AC85201C1060FFFDC7 +:106570003C04600034A5000803E00008AC85201C42 +:1065800054C0FFF334A500020A0003B03087300086 +:1065900027BDFFE8AFB00010AFBF00143C0760009C +:1065A000240600021080001100A080218F83005873 +:1065B0000E0003A78C6400188F8200580000202171 +:1065C000240600018C45000C0E000398000000001A +:1065D0001600000224020003000010218FBF0014E7 +:1065E0008FB0001003E0000827BD00188CE8201CC5 +:1065F0002409FFF001092824ACE5201C8F870058EE +:106600000A0003CD8CE5000C3C02600E00804021A6 +:1066100034460100240900180000000000000000BA +:10662000000000003C0A00503C0380003547020097 +:10663000AC68003834640400AC65003CAC670030E2 +:106640008C6C0000318B00201160FFFD2407FFFFE0 +:106650002403007F8C8D00002463FFFF248400044A +:10666000ACCD00001467FFFB24C60004000000004E +:10667000000000000000000024A402000085282B78 +:106680003C0300203C0E80002529FFFF010540212E +:10669000ADC300301520FFE00080282103E0000892 +:1066A000000000008F82005827BDFFD8AFB3001C48 +:1066B000AFBF0020AFB20018AFB10014AFB00010F0 +:1066C00094460002008098218C5200182CC300814F +:1066D0008C4800048C4700088C51000C8C49001039 +:1066E000106000078C4A00142CC4000414800013AE +:1066F00030EB000730C5000310A0001000000000C0 +:106700002410008B02002021022028210E00039873 +:10671000240600031660000224020003000010217A +:106720008FBF00208FB3001C8FB200188FB10014F0 +:106730008FB0001003E0000827BD00281560FFF1AE +:106740002410008B3C0C80003C030020241F00011F +:10675000AD830030AF9F0044000000000000000047 +:10676000000000002419FFF024D8000F031978243A +:106770003C1000D0AD88003801F0702524CD000316 +:106780003C08600EAD87003C35850400AD8E0030BE +:10679000000D38823504003C3C0380008C6B000007 +:1067A000316200201040FFFD0000000010E00008F2 +:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2 +:1067C00024A50004AC8800001467FFFB24840004A7 +:1067D0003C05600EACA60038000000000000000080 +:1067E000000000008F8600543C0400203C0780001D +:1067F000ACE4003054C000060120202102402021DA +:106800000E0003A7000080210A00041D02002021C1 +:106810000E0003DD01402821024020210E0003A7C5 +:10682000000080210A00041D0200202127BDFFE096 +:10683000AFB200183092FFFFAFB10014AFBF001C21 +:10684000AFB000101640000D000088210A0004932C +:106850000220102124050003508500278CE5000C40 +:106860000000000D262800013111FFFF24E2002066 +:106870000232802B12000019AF8200588F82004430 +:10688000144000168F8700583C0670003C0320001F +:106890008CE5000000A62024148300108F84006083 +:1068A000000544023C09800000A980241480FFE90F +:1068B000310600FF2CCA000B5140FFEB26280001D7 +:1068C000000668803C0E080025CE575801AE6021B6 +:1068D0008D8B0000016000080000000002201021E4 +:1068E0008FBF001C8FB200188FB100148FB0001042 +:1068F00003E0000827BD00200E0003982404008454 +:106900001600FFD88F8700580A000474AF8000601B +:10691000020028210E0003BF240400018F870058C5 +:106920000A000474AF820060020028210E0003BF39 +:10693000000020210A0004A38F8700580E000404E1 +:10694000020020218F8700580A000474AF82006083 +:1069500030AFFFFF000F19C03C0480008C9001B8DD +:106960000600FFFE3C1920043C181000AC83018097 +:10697000AC800184AC990188AC9801B80A00047518 +:106980002628000190E2000390E30002000020218D +:106990000002FE0000033A0000FF2825240600083C +:1069A0000E000398000000001600FFDC2402000324 +:1069B0008F870058000010210A000474AF82006025 +:1069C00090E8000200002021240600090A0004C308 +:1069D00000082E0090E4000C240900FF308500FF21 +:1069E00010A900150000302190F9000290F8000372 +:1069F000308F00FF94EB000400196E000018740043 +:106A0000000F62000186202501AE5025014B28258C +:106A10003084FF8B0A0004C32406000A90E30002BE +:106A200090FF0004000020210003360000DF28252D +:106A30000A0004C32406000B0A0004D52406008BB8 +:106A4000000449C23127003F000443423C02800059 +:106A500000082040240316802CE60020AC43002CC4 +:106A600024EAFFE02482000114C0000330A900FFE3 +:106A700000801021314700FF000260803C0D800043 +:106A8000240A0001018D20213C0B000E00EA28049D +:106A9000008B302111200005000538278CCE000026 +:106AA00001C5382503E00008ACC700008CD8000001 +:106AB0000307782403E00008ACCF000027BDFFE007 +:106AC000AFB10014AFB00010AFBF00183C076000BA +:106AD0008CE408083402F0003C1160003083F000C0 +:106AE000240501C03C04800E000030211062000625 +:106AF000241000018CEA08083149F0003928E00030 +:106B00000008382B000780403C0D0200AE2D081411 +:106B1000240C16803C0B80008E2744000E000F8B47 +:106B2000AD6C002C120000043C02169124050001FB +:106B3000120500103C023D2C345800E0AE384408E9 +:106B40003C1108008E31007C8FBF00183C066000AD +:106B500000118540360F16808FB100148FB00010E1 +:106B60003C0E020027BD0020ACCF442003E000080B +:106B7000ACCE08103C0218DA345800E0AE384408B5 +:106B80003C1108008E31007C8FBF00183C0660006D +:106B900000118540360F16808FB100148FB00010A1 +:106BA0003C0E020027BD0020ACCF442003E00008CB +:106BB000ACCE08100A0004EB240500010A0004EB27 +:106BC0000000282124020400A7820024A780001CC2 +:106BD000000020213C06080024C65A582405FFFF67 +:106BE00024890001000440803124FFFF01061821A0 +:106BF0002C87002014E0FFFAAC6500002404040098 +:106C0000A7840026A780001E000020213C06080063 +:106C100024C65AD82405FFFF248D0001000460809B +:106C200031A4FFFF018658212C8A00201540FFFA6D +:106C3000AD650000A7800028A7800020A780002263 +:106C4000000020213C06080024C65B582405FFFFF5 +:106C5000249900010004C0803324FFFF030678213B +:106C60002C8E000415C0FFFAADE500003C05600065 +:106C70008CA73D002403E08F00E31024344601403C +:106C800003E00008ACA63D002487007F000731C266 +:106C900024C5FFFF000518C2246400013082FFFFF5 +:106CA000000238C0A78400303C010800AC27003047 +:106CB000AF80002C0000282100002021000030219E +:106CC0002489000100A728213124FFFF2CA81701E7 +:106CD000110000032C8300801460FFF924C600011A +:106CE00000C02821AF86002C10C0001DA786002AF6 +:106CF00024CAFFFF000A11423C08080025085B581F +:106D00001040000A00002021004030212407FFFF2E +:106D1000248E00010004688031C4FFFF01A86021B7 +:106D20000086582B1560FFFAAD87000030A2001FC7 +:106D30005040000800043080240300010043C804D0 +:106D400000041080004878212738FFFF03E0000886 +:106D5000ADF8000000C820212405FFFFAC8500002D +:106D600003E000080000000030A5FFFF30C6FFFF71 +:106D700030A8001F0080602130E700FF0005294295 +:106D80000000502110C0001D24090001240B000147 +:106D900025180001010B2004330800FF0126782686 +:106DA000390E00202DED00012DC2000101A2182591 +:106DB0001060000D014450250005C880032C4021BF +:106DC0000100182110E0000F000A20278D040000A8 +:106DD000008A1825AD03000024AD00010000402109 +:106DE0000000502131A5FFFF252E000131C9FFFF12 +:106DF00000C9102B1040FFE72518000103E0000830 +:106E0000000000008D0A0000014440240A0005D162 +:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC +:106E2000AFB00010AFBF001430E7FFFF00005021EB +:106E30003410FFFF0000602124AF001F00C0482174 +:106E4000241800012419002005E0001601E010219B +:106E50000002F943019F682A0009702B01AE40240B +:106E600011000017000C18800064102110E00005CC +:106E70008C4B000000F840040008382301675824B8 +:106E800000003821154000410000402155600016E7 +:106E90003169FFFF258B0001316CFFFF05E1FFEC3D +:106EA00001E0102124A2003E0002F943019F682A5C +:106EB0000009702B01AE40241500FFEB000C188078 +:106EC000154600053402FFFF020028210E0005B51B +:106ED00000003821020010218FBF00148FB0001075 +:106EE00003E0000827BD00181520000301601821E9 +:106EF000000B1C0224080010306A00FF154000053A +:106F0000306E000F250D000800031A0231A800FFA3 +:106F1000306E000F15C00005307F000325100004FF +:106F200000031902320800FF307F000317E000055C +:106F3000386900012502000200031882304800FF72 +:106F4000386900013123000110600004310300FFA3 +:106F5000250A0001314800FF310300FF000C6940A1 +:106F600001A34021240A000110CAFFD53110FFFF00 +:106F7000246E000131C800FF1119FFC638C9000195 +:106F80002D1F002053E0001C258B0001240D000163 +:106F90000A000648240E002051460017258B0001E8 +:106FA00025090001312800FF2D0900205120001281 +:106FB000258B000125430001010D5004014B1024D5 +:106FC000250900011440FFF4306AFFFF3127FFFF5D +:106FD00010EE000C2582FFFF304CFFFF0000502117 +:106FE0003410FFFF312800FF2D0900205520FFF24B +:106FF00025430001258B0001014648260A000602B0 +:10700000316CFFFF00003821000050210A000654B7 +:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6 +:10702000AFB10014001039423211FFE000071080A8 +:10703000AFB3001C00B1282330D3FFFFAFB200185C +:1070400030A5FFFF00809021026030210044202104 +:10705000AFBF00200E0005E03207001F022288218A +:107060003403FFFF0240202102002821026030216A +:1070700000003821104300093231FFFF02201021A7 +:107080008FBF00208FB3001C8FB200188FB1001487 +:107090008FB0001003E0000827BD00280E0005E0B7 +:1070A0000000000000408821022010218FBF002036 +:1070B0008FB3001C8FB200188FB100148FB0001076 +:1070C00003E0000827BD0028000424003C03600002 +:1070D000AC603D0810A00002348210063482101605 +:1070E00003E00008AC623D0427BDFFE0AFB0001034 +:1070F000309000FF2E020006AFBF001810400008BD +:10710000AFB10014001030803C03080024635784A2 +:1071100000C328218CA400000080000800000000AB +:10712000000020218FBF00188FB100148FB0001015 +:107130000080102103E0000827BD00209791002A5D +:1071400016200051000020213C020800904200332C +:107150000A0006BB00000000978D002615A0003134 +:10716000000020210A0006BB2402000897870024A3 +:1071700014E0001A00001821006020212402000100 +:107180001080FFE98FBF0018000429C2004530219C +:1071900000A6582B1160FFE43C0880003C0720004B +:1071A000000569C001A76025AD0C00203C038008E4 +:1071B0002402001F2442FFFFAC6000000441FFFDD9 +:1071C0002463000424A5000100A6702B15C0FFF560 +:1071D000000569C00A0006A58FBF00189787001C2C +:1071E0003C04080024845A58240504000E0006605C +:1071F00024060001978B002424440001308AFFFFFD +:107200002569FFFF2D48040000402821150000409B +:10721000A789002424AC3800000C19C00A0006B964 +:10722000A780001C9787001E3C04080024845AD8BD +:10723000240504000E00066024060001979900262C +:10724000244400013098FFFF272FFFFF2F0E04007A +:107250000040882115C0002CA78F0026A780001EA3 +:107260003A020003262401003084FFFF0E00068D41 +:107270002C4500010011F8C027F00100001021C0CA +:107280000A0006BB240200089785002E978700227B +:107290003C04080024845B580E00066024060001AC +:1072A0009787002A8F89002C2445000130A8FFFF12 +:1072B00024E3FFFF0109302B0040802114C0001897 +:1072C000A783002AA7800022978500300E000F7543 +:1072D00002002021244A05003144FFFF0E00068DE4 +:1072E000240500013C05080094A500320E000F752E +:1072F00002002021244521003C0208009042003376 +:107300000A0006BB000521C00A0006F3A784001E80 +:1073100024AC3800000C19C00A0006B9A784001C70 +:107320000A00070DA7850022308400FF27BDFFE873 +:107330002C820006AFBF0014AFB000101040001543 +:1073400000A03821000440803C0308002463579CBF +:10735000010328218CA40000008000080000000028 +:1073600024CC007F000751C2000C59C23170FFFFCE +:107370002547C40030E5FFFF2784001C02003021B0 +:107380000E0005B52407000197860028020620217B +:10739000A78400288FBF00148FB0001003E00008FE +:1073A00027BD00183C0508008CA50030000779C2F5 +:1073B0000E00038125E4DF003045FFFF3C04080098 +:1073C00024845B58240600010E0005B52407000143 +:1073D000978E002A8FBF00148FB0001025CD0001BA +:1073E00027BD001803E00008A78D002A0007C9C2C6 +:1073F0002738FF00001878C231F0FFFF3C04080076 +:1074000024845AD802002821240600010E0005B564 +:1074100024070001978D0026260E0100000E84002F +:1074200025AC00013C0B6000A78C0026AD603D0838 +:1074300036040006000030213C0760008CE23D0469 +:10744000305F000617E0FFFD24C9000100061B00A5 +:10745000312600FF006440252CC50004ACE83D0443 +:1074600014A0FFF68FBF00148FB0001003E00008D7 +:1074700027BD0018000751C22549C8002406000195 +:10748000240700013C04080024845A580E0005B566 +:107490003125FFFF978700248FBF00148FB00010A5 +:1074A00024E6000127BD001803E00008A786002499 +:1074B0003C0660183C090800252900FCACC9502C8A +:1074C0008CC850003C0580003C020002350700805B +:1074D000ACC750003C04080024841FE03C030800B3 +:1074E00024631F98ACA50008ACA2000C3C01080066 +:1074F000AC2459A43C010800AC2359A803E00008BF +:107500002402000100A030213C1C0800279C59AC3B +:107510003C0C04003C0B0002008B3826008C4026FB +:107520002CE200010007502B2D050001000A4880C5 +:107530003C030800246359A4004520250123182199 +:107540001080000300001021AC660000240200013E +:1075500003E00008000000003C1C0800279C59AC18 +:107560003C0B04003C0A0002008A3026008B3826BF +:107570002CC200010006482B2CE5000100094080C8 +:107580003C030800246359A4004520250103182169 +:1075900010800005000010213C0C0800258C1F986D +:1075A000AC6C00002402000103E0000800000000B1 +:1075B0003C0900023C080400008830260089382677 +:1075C0002CC30001008028212CE400010083102539 +:1075D0001040000B000030213C1C0800279C59ACD7 +:1075E0003C0A80008D4E00082406000101CA68256F +:1075F000AD4D00088D4C000C01855825AD4B000C9D +:1076000003E0000800C010213C1C0800279C59AC76 +:107610003C0580008CA6000C0004202724020001F9 +:1076200000C4182403E00008ACA3000C3C020002D4 +:107630001082000B3C0560003C070400108700032B +:107640000000000003E00008000000008CA908D042 +:10765000240AFFFD012A402403E00008ACA808D05A +:107660008CA408D02406FFFE0086182403E000083E +:10767000ACA308D03C05601A34A600108CC300806F +:1076800027BDFFF88CC50084AFA3000093A40000C1 +:107690002402001010820003AFA5000403E00008DC +:1076A00027BD000893A7000114E0001497AC000266 +:1076B00097B800023C0F8000330EFFFC01CF682119 +:1076C000ADA50000A3A000003C0660008CC708D058 +:1076D0002408FFFE3C04601A00E82824ACC508D04A +:1076E0008FA300048FA200003499001027BD00086A +:1076F000AF22008003E00008AF2300843C0B800031 +:10770000318AFFFC014B48218D2800000A00080C3B +:10771000AFA8000427BDFFE8AFBF00103C1C080065 +:10772000279C59AC3C0580008CA4000C8CA2000462 +:107730003C0300020044282410A0000A00A31824DF +:107740003C0604003C0400021460000900A610245A +:107750001440000F3C0404000000000D3C1C080015 +:10776000279C59AC8FBF001003E0000827BD00180C +:107770003C0208008C4259A40040F80900000000B7 +:107780003C1C0800279C59AC0A0008358FBF00102C +:107790003C0208008C4259A80040F8090000000093 +:1077A0000A00083B000000003C0880008D0201B880 +:1077B0000440FFFE35090180AD2400003C031000A9 +:1077C00024040040AD250004A1240008A1260009DE +:1077D000A527000A03E00008AD0301B83084FFFFCD +:1077E0000080382130A5FFFF000020210A00084555 +:1077F000240600803087FFFF8CA400002406003898 +:107800000A000845000028218F8300788F860070C9 +:107810001066000B008040213C07080024E75B68ED +:10782000000328C000A710218C440000246300013D +:10783000108800053063000F5466FFFA000328C06B +:1078400003E00008000010213C07080024E75B6CFF +:1078500000A7302103E000088CC200003C03900028 +:1078600034620001008220253C038000AC640020CB +:107870008C65002004A0FFFE0000000003E000086B +:10788000000000003C0280003443000100832025FA +:1078900003E00008AC44002027BDFFE0AFB10014B6 +:1078A0003091FFFFAFB00010AFBF001812200013DF +:1078B00000A080218CA20000240400022406020003 +:1078C0001040000F004028210E0007250000000096 +:1078D00000001021AE000000022038218FBF0018E8 +:1078E0008FB100148FB0001000402021000028212B +:1078F000000030210A00084527BD00208CA20000AE +:10790000022038218FBF00188FB100148FB00010F3 +:107910000040202100002821000030210A000845F5 +:1079200027BD002000A010213087FFFF8CA5000498 +:107930008C4400000A000845240600068F83FD9C45 +:1079400027BDFFE8AFBF0014AFB00010906700087C +:10795000008010210080282130E600400000202116 +:1079600010C000088C5000000E0000BD0200202155 +:10797000020020218FBF00148FB000100A000548BC +:1079800027BD00180E0008A4000000000E0000BD76 +:1079900002002021020020218FBF00148FB00010B0 +:1079A0000A00054827BD001827BDFFE0AFB0001052 +:1079B0008F90FD9CAFBF001CAFB20018AFB1001498 +:1079C00092060001008088210E00087230D2000467 +:1079D00092040005001129C2A6050000348300406E +:1079E000A20300050E00087C022020210E00054A9B +:1079F0000220202124020001AE02000C02202821D6 +:107A0000A602001024040002A602001224060200AE +:107A1000A60200140E000725A60200161640000F4D +:107A20008FBF001C978C00743C0B08008D6B007896 +:107A30002588FFFF3109FFFF256A0001012A382B45 +:107A400010E00006A78800743C0F6006240E0016A4 +:107A500035ED0010ADAE00508FBF001C8FB2001886 +:107A60008FB100148FB0001003E0000827BD002084 +:107A700027BDFFE0AFB10014AFBF0018AFB00010DA +:107A80001080000400A088212402008010820007DA +:107A9000000000000000000D8FBF00188FB100141F +:107AA0008FB0001003E0000827BD00200E00087210 +:107AB00000A020218F86FD9C0220202190C500057A +:107AC0000E00087C30B000FF2403003E1603FFF1D7 +:107AD0003C0680008CC401780480FFFE34C801405D +:107AE000240900073C071000AD11000002202021EE +:107AF000A10900048FBF00188FB100148FB00010CF +:107B0000ACC701780A0008C527BD002027BDFFE0EB +:107B1000AFB00010AFBF0018AFB100143C10800030 +:107B20008E110020000000000E00054AAE04002067 +:107B3000AE1100208FBF00188FB100148FB000105D +:107B400003E0000827BD00203084FFFF00803821BB +:107B50002406003500A020210A0008450000282145 +:107B60003084FFFF008038212406003600A0202149 +:107B70000A0008450000282127BDFFD0AFB500242A +:107B80003095FFFFAFB60028AFB40020AFBF002C88 +:107B9000AFB3001CAFB20018AFB10014AFB000100B +:107BA00030B6FFFF12A000270000A0218F920058DE +:107BB0008E4300003C0680002402004000033E0289 +:107BC00000032C0230E4007F006698241482001D1C +:107BD00030A500FF8F8300682C68000A1100001098 +:107BE0008F8D0044000358803C0C0800258C57B84A +:107BF000016C50218D4900000120000800000000A8 +:107C000002D4302130C5FFFF0E0008522404008446 +:107C1000166000028F920058AF8000688F8D00447C +:107C20002659002026980001032090213314FFFFDD +:107C300015A00004AF9900580295202B1480FFDC9A +:107C400000000000028010218FBF002C8FB600289A +:107C50008FB500248FB400208FB3001C8FB20018A2 +:107C60008FB100148FB0001003E0000827BD003072 +:107C70002407003414A70149000000009247000EB9 +:107C80008F9FFDA08F90FD9C24181600A3E700197C +:107C90009242000D3C0880003C07800CA3E20018D3 +:107CA000964A00123C0D60003C117FFFA60A005C62 +:107CB000964400103623FFFF240200053099FFFF91 +:107CC000AE1900548E46001CAD1800288CEF000041 +:107CD0008DAE444801E6482601C93021AE06003881 +:107CE0008E05003824CB00013C0E7F00AE05003C21 +:107CF0008E0C003CAFEC0004AE0B00208E13002075 +:107D0000AE13001CA3E0001BAE03002CA3E2001284 +:107D10008E4A001424130050AE0A00348E0400343E +:107D2000AFE400148E590018AE1900489258000CA8 +:107D3000A218004E920D000835AF0020A20F0008D7 +:107D40008E090018012E282434AC4000AE0C001817 +:107D5000920B0000317200FF1253027F2403FF8058 +:107D60003C04080024845BE80E0008AA0000000020 +:107D70003C1108008E315BE80E00087202202021C1 +:107D80002405000424080001A2050025022020216A +:107D90000E00087CA20800053C0580008CB001782C +:107DA0000600FFFE8F92005834AE0140240F0002FF +:107DB0003C091000ADD10000A1CF0004ACA90178AE +:107DC0000A000962AF8000682CAD003751A0FF9413 +:107DD0008F8D0044000580803C110800263157E05B +:107DE000021178218DEE000001C0000800000000A3 +:107DF0002411000414B1008C3C0780003C080800EA +:107E00008D085BE88F86FD9CACE800208E4500085D +:107E10008F99FDA0240D0050ACC500308E4C000899 +:107E2000ACCC00508E4B000CACCB00348E43001019 +:107E3000ACC300388E4A0010ACCA00548E42001405 +:107E4000ACC2003C8E5F0018AF3F00048E50001C97 +:107E5000ACD0002090C40000309800FF130D024AFF +:107E6000000000008CC400348CD00030009030231F +:107E700004C000F12404008C126000EE2402000310 +:107E80000A000962AF8200682419000514B900666F +:107E90003C0580003C0808008D085BE88F86FD9C4F +:107EA000ACA800208E4C00048F8AFDA0240720007F +:107EB000ACCC001C924B000824120008A14B001906 +:107EC0008F82005890430009A14300188F85005805 +:107ED00090BF000A33E400FF1092001028890009C7 +:107EE000152000BA240E0002240D0020108D000B76 +:107EF000340780002898002117000008240740005C +:107F000024100040109000053C0700012419008057 +:107F1000109900023C070002240740008CC20018A0 +:107F20003C03FF00004350240147F825ACDF001854 +:107F300090B2000BA0D200278F8300589464000CED +:107F4000108001FE000000009467000C3C1F8000C0 +:107F50002405FFBFA4C7005C9063000E2407000443 +:107F6000A0C300088F820058904A000FA0CA0009E1 +:107F70008F8900588D3200108FE400740244C823AA +:107F8000ACD900588D300014ACD0002C95380018B6 +:107F9000330DFFFFACCD00409531001A322FFFFFAB +:107FA000ACCF00448D2E001CACCE00489128000EB2 +:107FB000A0C8000890CC000801855824126001B6C2 +:107FC000A0CB00088F9200580A000962AF870068B2 +:107FD0002406000614A600143C0E80003C0F080086 +:107FE0008DEF5BE88F85FD98ADCF00208E4900189E +:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B +:1080000024040005ACA800048CCC003C1260008164 +:10801000AD6C00000A000962AF84006824110007FB +:1080200010B1004B240400063C05080024A55BE8C1 +:108030000E000881240400818F9200580013102B39 +:108040000A000962AF820068241F002314BFFFF6F4 +:108050003C0C80003C0508008CA55BE88F8BFDA0E4 +:10806000AD8500208F91FD9C8E4600042564002084 +:1080700026450014AE260028240600030E000F81BA +:10808000257000308F87005802002021240600034D +:108090000E000F8124E500083C04080024845BE8FE +:1080A0000E0008AA0000000092230000240A0050DD +:1080B000306200FF544AFFE18F9200580E000F6CAF +:1080C000000000000A000A6A8F920058240800335A +:1080D00014A800323C0380003C1108008E315BE89C +:1080E0008F8FFDA0AC7100208E420008240D002867 +:1080F0008F89FD9CADE200308E4A000C24060009F9 +:10810000ADEA00348E5F0010ADFF00388E440014DD +:10811000ADE400208E590018ADF900248E58001CE3 +:10812000ADF80028A1ED00118E4E00041260003160 +:10813000AD2E00288F9200580A000962AF860068B1 +:10814000240D002214ADFFB8000000002404000735 +:108150003C1008008E105BE83C188000AF10002037 +:108160005660FEAEAF8400683C04080024845BE8DF +:108170000E0008AA241300508F84FD9C90920000EA +:10818000325900FF1333014B000000008F9200585A +:10819000000020210A000962AF8400683C05080045 +:1081A00024A55BE80E000858240400810A000A6A2E +:1081B0008F92005802D498213265FFFF0E000852BA +:1081C000240400840A0009628F920058108EFF5325 +:1081D000240704002887000310E00179241100041B +:1081E000240F0001548FFF4D240740000A000A228B +:1081F000240701003C05080024A55BE80E0008A444 +:10820000240400828F920058000030210A00096285 +:10821000AF8600683C04080024845BE88CC2003808 +:108220000E0008AA8CC3003C8F9200580A000AC0B6 +:1082300000002021240400823C05080024A55BE8FE +:108240000E0008A4000000008F92005800001021CA +:108250000A000962AF8200688E5000048F91FD9C75 +:108260003C078000ACF00020922C00050200282181 +:10827000318B0002156001562404008A8F92FDA004 +:108280002404008D9245001B30A6002014C001502C +:1082900002002821922E00092408001231C900FF93 +:1082A0001128014B240400810E00087202002021D5 +:1082B0009258001B240F000402002021370D0042B9 +:1082C000A24D001B0E00087CA22F00253C0580005B +:1082D0008CA401780480FFFE34B90140241F000201 +:1082E000AF300000A33F00048F9200583C101000F4 +:1082F000ACB001780A000A6B0013102B8E500004FA +:108300008F91FD9C3C038000AC700020922A0005F8 +:108310000200282131420002144000172404008A80 +:10832000922C00092412000402002821318B00FF46 +:1083300011720011240400810E0008720200202135 +:108340008F89FDA0240800122405FFFE912F001B39 +:108350000200202135EE0020A12E001BA2280009DA +:108360009226000500C538240E00087CA2270005CF +:1083700002002821000020210E0009330000000027 +:108380000A000A6A8F9200588E4C00043C07800055 +:108390003C10080026105BE8ACEC00203C01080013 +:1083A000AC2C5BE8924B0003317100041220013BBE +:1083B0008F84FD9C24020006A0820009924F001BBE +:1083C000240EFFC031E9003F012E4025A08800089F +:1083D0009245000330A6000114C0013200000000E5 +:1083E0008E420008AE0200083C0208008C425BF09E +:1083F000104001318F90FDA0000219C28F8DFD9CAD +:10840000A603000C8E4A000C24180001240400145A +:10841000AE0A002C8E420010AE02001C965F0016C1 +:10842000A61F003C96590014A619003EADB8000CDA +:10843000A5B80010A5B80012A5B80014A5B800167C +:1084400012600144A2040011925100033232000272 +:108450002E5300018F920058266200080A0009621C +:10846000AF8200688E4400043C1980003C068008FE +:10847000AF2400208E45000890D80000240D005045 +:10848000331100FF122D009C2407008824060009E8 +:108490000E000845000000000A000A6A8F9200588A +:1084A0008E5000043C0980003C118008AD30002053 +:1084B0009228000024050050310400FF10850110AF +:1084C0002407008802002021000028210E00084512 +:1084D0002406000E922D00002418FF80020028219F +:1084E00001B8802524040004240600300E0007256E +:1084F000A23000000A000A6A8F9200588E500004D1 +:108500008F91FDA03C028000AC500020923F001BE8 +:1085100033F900101320006C240700810200202191 +:10852000000028212406001F0E000845000000005E +:108530000A000A6A8F9200588E44001C0E00085DE3 +:1085400000000000104000E3004048218F880058E0 +:1085500024070089012020218D05001C240600012C +:108560000E000845000000000A000A6A8F920058B9 +:10857000964900023C10080026105BE831280004F0 +:10858000110000973C0460008E4E001C3C0F8000E0 +:10859000ADEE00203C010800AC2E5BE896470002DF +:1085A00030E40001148000E6000000008E42000468 +:1085B000AE0200083C1008008E105BF0120000ECC8 +:1085C0003C0F80008F92FD9C241000018E4E0018FD +:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3 +:1085E000A2400005AE50000C3C0808008D085BF06E +:1085F0008F840058A6500010000839C2A6500012FF +:10860000A6500014A6500016A5A7000C8C8C0008DC +:108610008F8B00588F8A0058ADAC002C8D63000CF6 +:1086200024070002ADA3001C91460010A1A6001172 +:108630008F82005890450011A3E500088F990058DB +:1086400093380012A258004E8F910058922F0013B9 +:10865000A1AF00128F920058964E0014A5AE003CB8 +:1086600096490016A5A9003E8E480018ADA8001432 +:108670005660FD6AAF8700683C05080024A55BE8EA +:108680000E000881000020218F9200580000382140 +:108690000A000962AF8700683C05080024A55BE872 +:1086A0000E0008A4240400828F9200580A000A4D8C +:1086B000000038210E000F6C000000008F9200585F +:1086C0000A000AC0000020210E00087202002021CA +:1086D0009223001B02002021346A00100E00087C47 +:1086E000A22A001B000038210200202100002821BE +:1086F0000A000BA52406001F9242000C305F000107 +:1087000013E0000300000000964A000EA4CA002CEB +:10871000924B000C316300025060000600003821CB +:108720008E470014964C0012ACC7001CA4CC001A53 +:10873000000038210A000B7F240600093C050800D0 +:1087400024A55BE80E0008A42404008B8F92005837 +:108750000A000A4D0013382B3C0C08008D8C5BE896 +:1087600024DFFFFE25930100326B007F016790211B +:1087700002638824AD110028AE4600E0AE4000E45C +:108780000A0009B3AE5F001CACC000543C0D0800E9 +:108790008DAD5BE83C18800C37090100ACED00287A +:1087A0008E510014AD3100E08E4F0014AD2F00E467 +:1087B0008E4E001025C7FFFE0A0009F4AD27001CED +:1087C0005491FDD6240740000A000A222407100015 +:1087D0000E00092D000000000A000A6A8F9200585E +:1087E0008C83442C3C12DEAD3651BEEF3C010800B8 +:1087F000AC205BE810710062000000003C196C6264 +:1088000037387970147800082404000297850074C2 +:108810009782006C2404009200A2F82B13E0001948 +:1088200002002821240400020E00069524050200FF +:108830003C068000ACC200203C010800AC225BE892 +:108840001040000D8F8C0058240A002824040003D7 +:10885000918B0010316300FF546A00012404000171 +:108860000E0000810000000010400004240400837A +:108870000A000BC28F920058240400833C050800B4 +:1088800024A55BE80E000881000000008F920058CC +:108890000013382B0A000962AF8700680A000B49F1 +:1088A000240200128E4400080E00085D0000000043 +:1088B0000A000B55AE0200083C05080024A55BE841 +:1088C0000E000858240400878F9200580A000B728B +:1088D0000013102B240400040E000695240500301C +:1088E0001440002A004048218F8800582407008344 +:1088F000012020218D05001C0A000BB32406000175 +:108900008F8300788F8600701066FEEE000038219D +:108910003C07080024E75B6C000320C00087282187 +:108920008CAE000011D0005D246F000131E3000F18 +:108930005466FFFA000320C00A000B8C00003821A7 +:108940008E4400040E00085D000000000A000BC801 +:10895000AE0200083C05080024A55BE80E0008A450 +:10896000240400828F9200580A000B72000010212C +:108970003C05080024A55BE80A000C7C2404008761 +:108980008C83442C0A000C5B3C196C628F88005865 +:108990003C0780083C0C8000240B0050240A000196 +:1089A000AD820020A0EB0000A0EA000191030004CA +:1089B000A0E3001891040005A0E400199106000648 +:1089C0003C04080024845B6CA0E6001A91020007B6 +:1089D0003C06080024C65B68A0E2001B9105000865 +:1089E000A0E5001C911F0009A0FF001D9119000ABD +:1089F000A0F9001E9118000BA0F8001F9112000CA6 +:108A0000A0F200209111000DA0F100219110000EA4 +:108A1000A0F00022910F000FA0EF0023910E001094 +:108A2000A0EE0024910D0011A0ED0025950C00147E +:108A3000A4EC0028950B00168F8A00708F920078A6 +:108A4000A4EB002A95030018000A10C02545000178 +:108A5000A4E3002C8D1F001C0044C0210046C82147 +:108A600030A5000FAF3F0000AF09000010B20006B4 +:108A7000AF850070000038218D05001C01202021E9 +:108A80000A000BB32406000124AD000131A7000F3A +:108A9000AF8700780A000CF9000038213C06080076 +:108AA00024C65B680086902100003821ACA000003D +:108AB0000A000B8CAE4000003C0482013C036000C5 +:108AC00034820E02AC603D68AF80009803E000087D +:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7 +:108AE000001018422C620041AFBF00141440000275 +:108AF00024040080240300403C010800AC300060E6 +:108B00003C010800AC2300640E000F7500602821B2 +:108B1000244802BF2409FF8001092824001039805D +:108B2000001030408FBF00148FB0001000A720212C +:108B300000861821AF8300803C010800AC25005856 +:108B40003C010800AC24005C03E0000827BD0018CD +:108B5000308300FF30C6FFFF30E400FF3C08800098 +:108B60008D0201B80440FFFE000354000144382583 +:108B70003C09600000E920253C031000AD050180A0 +:108B8000AD060184AD04018803E00008AD0301B81F +:108B90008F8500583C0A6012354800108CAC0004E8 +:108BA0003C0D600E35A60010318B00062D690001CA +:108BB000AD0900C48CA70004ACC731808CA20008AA +:108BC00094A40002ACC231848CA3001C0460000396 +:108BD000A784009003E00008000000008CAF00189C +:108BE000ACCF31D08CAE001C03E00008ACCE31D449 +:108BF0008F8500588F87FF288F86FF308CAE00044A +:108C00003C0F601235E80010ACEE00788CAD000827 +:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0 +:108C2000ACCB004894CA00543C0208008C4200447B +:108C300025490001A4C9005494C400543083FFFFA7 +:108C400010620017000000003C0208008C42004047 +:108C5000A4C200528CA30018ACE300308CA2001414 +:108C6000ACE2002C8CB90018ACF900388CB80014B8 +:108C700024050001ACF800348D0600BC50C5001975 +:108C80008D0200B48D0200B8A4E2004894E40048CC +:108C9000A4E4004A94E800EA03E000083102FFFF80 +:108CA0003C0208008C420024A4C00054A4C200521C +:108CB0008CA30018ACE300308CA20014ACE2002CB2 +:108CC0008CB90018ACF900388CB8001424050001E8 +:108CD000ACF800348D0600BC54C5FFEB8D0200B823 +:108CE0008D0200B4A4E2004894E40048A4E4004AE1 +:108CF00094E800EA03E000083102FFFF8F86005885 +:108D00003C0480008CC900088CC80008000929C0F8 +:108D1000000839C0AC87002090C30007306200040F +:108D20001040003EAF85009490CB0007316A0008E8 +:108D30001140003D8F87FF2C8CCD000C8CCE001491 +:108D400001AE602B11800036000000008CC2000CC8 +:108D5000ACE200708CCB00188F85FF288F88FF3025 +:108D6000ACEB00748CCA00102402FFF8ACAA00D847 +:108D70008CC9000CAD0900608CC4001CACA400D0F0 +:108D800090E3007C0062C824A0F9007C90D8000722 +:108D9000330F000811E000040000000090ED007C9B +:108DA00035AC0001A0EC007C90CF000731EE000153 +:108DB00011C000060000000090E3007C241800347D +:108DC00034790002A0F9007CACB800DC90C2000746 +:108DD0003046000210C000040000000090E8007C53 +:108DE00035040004A0E4007C90ED007D3C0B600E97 +:108DF000356A001031AC003FA0EC007D8D4931D4C4 +:108E00003127000110E00002240E0001A0AE00098D +:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8 +:108E20000A000DAF8CC200140A000DB0ACE0007057 +:108E30008F8C005827BDFFD8AFB3001CAFB200180D +:108E4000AFB00010AFBF0020AFB10014918F00157C +:108E50003C13600E3673001031EB000FA38B009CA7 +:108E60008D8F00048D8B0008959F0012959900103E +:108E70009584001A9598001E958E001C33EDFFFF17 +:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1 +:108E90003C010800AC2D00243C010800AC29004432 +:108EA0003C010800AC2A0040AE683178AE67317CE6 +:108EB00091850015959100163C12601236520010F3 +:108EC00030A200FF3230FFFFAE623188AE5000B4F6 +:108ED00091830014959F0018240600010066C804C1 +:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5 +:108EF000AF8F00843C08600631CD00FFAE4D00C04E +:108F0000918A00159584000E3C07600A314900FFE4 +:108F1000AF8B00883084FFFFAE4900C835110010C8 +:108F20000E000D1034F004103C0208008C4200606A +:108F30003C0308008C6300643C0608008CC60058A3 +:108F40003C0508008CA5005C8F8400808FBF00204A +:108F5000AE23004CAE65319CAE030054AE4500DC40 +:108F6000AE6231A0AE6331A4AE663198AE22004845 +:108F70008FB3001CAE0200508FB10014AE4200E06F +:108F8000AE4300E4AE4600D88FB000108FB2001898 +:108F90000A00057D27BD0028978500929783007CF5 +:108FA00027BDFFE8AFB0001000A3102BAFBF001427 +:108FB000240400058F900058104000552409000239 +:108FC0000E0006958F850080AF8200942404000374 +:108FD0001040004F240900023C0680000E00008172 +:108FE000ACC2002024070001240820001040004DDE +:108FF00024040005978E00928F8AFF2C24090050CC +:1090000025C50001A7850092A14900003C0D08007C +:109010008DAD0064240380008F84FF28000D66005E +:10902000AD4C0018A5400006954B000A8F85FF3017 +:109030002402FF8001633024A546000A915F000AE4 +:109040000000482103E2C825A159000AA0A0000899 +:10905000A140004CA08000D5961800029783009094 +:109060003C020004A49800EA960F00022418FFBFF7 +:1090700025EE2401A48E00BE8E0D0004ACAD00448C +:109080008E0C0008ACAC0040A4A00050A4A000547A +:109090008E0B000C240C0030AC8B00288E060010C8 +:1090A000AC860024A480003EA487004EA487005014 +:1090B000A483003CAD420074AC8800D8ACA800602A +:1090C000A08700FC909F00D433F9007FA09900D4C2 +:1090D000909000D402187824A08F00D4914E007C88 +:1090E00035CD0001A14D007C938B009CAD480070F4 +:1090F000AC8C00DCA08B00D68F8800888F87008422 +:10910000AC8800C4AC8700C8A5400078A540007AB0 +:109110008FBF00148FB000100120102103E0000861 +:1091200027BD00188F8500940E0007258F860080CC +:109130000A000E9F2409000227BDFFE0AFB0001017 +:109140008F900058AFB10014AFBF00188E09000413 +:109150000E00054A000921C08E0800048F84FF28F4 +:109160008F82FF30000839C03C068000ACC7002069 +:10917000948500EA904300131460001C30B1FFFF97 +:109180008F8CFF2C918B0008316A00401540000B3A +:10919000000000008E0D0004022030218FBF001857 +:1091A0008FB100148FB00010240400220000382179 +:1091B000000D29C00A000D2F27BD00200E000098C9 +:1091C000000000008E0D0004022030218FBF001827 +:1091D0008FB100148FB00010240400220000382149 +:1091E000000D29C00A000D2F27BD00200E000090A1 +:1091F000000000008E0D0004022030218FBF0018F7 +:109200008FB100148FB00010240400220000382118 +:10921000000D29C00A000D2F27BD002027BDFFE04B +:10922000AFB200183092FFFFAFB00010AFBF001C0C +:10923000AFB100141240001E000080218F8600583C +:109240008CC500002403000600053F02000514023F +:1092500030E4000714830016304500FF2CA80006F8 +:1092600011000040000558803C0C0800258C58BCBB +:10927000016C50218D490000012000080000000011 +:109280008F8E0098240D000111CD005024020002A1 +:10929000AF820098260900013130FFFF24C800206A +:1092A0000212202B010030211480FFE5AF88005806 +:1092B000020010218FBF001C8FB200188FB1001464 +:1092C0008FB0001003E0000827BD00209387007EC8 +:1092D00054E00034000030210E000DE700000000D3 +:1092E0008F8600580A000EFF240200018F87009825 +:1092F0002405000210E50031240400130000282199 +:1093000000003021240700010E000D2F0000000096 +:109310000A000F008F8600588F83009824020002F5 +:109320001462FFF6240400120E000D9A00000000E3 +:109330008F85009400403021240400120E000D2F70 +:10934000000038210A000F008F8600588F83009894 +:109350002411000310710029241F0002107FFFCE8A +:1093600026090001240400100000282100003021FB +:109370000A000F1D240700018F91009824060002A7 +:109380001626FFF9240400100E000E410000000014 +:10939000144000238F9800588F8600580A000EFF53 +:1093A00024020003240400140E000D2F00002821C5 +:1093B0008F8600580A000EFF240200020E000EA93C +:1093C000000000000A000F008F8600580E000D3FBD +:1093D00000000000241900022404001400002821C9 +:1093E0000000302100003821AF9900980E000D2FA9 +:1093F000000000000A000F008F8600580E000D5775 +:10940000000000008F8500942419000200403021E4 +:1094100024040010000038210A000F56AF9900986C +:109420000040382124040010970F0002000028217A +:109430000E000D2F31E6FFFF8F8600580A000F0047 +:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D +:109450008C8500182402000100A61824AC83001893 +:1094600003E00008A08200053084FFFF30A5FFFF65 +:109470001080000700001821308200011040000217 +:1094800000042042006518211480FFFB00052840DD +:1094900003E000080060102110C000070000000079 +:1094A0008CA2000024C6FFFF24A50004AC820000AB +:1094B00014C0FFFB2484000403E000080000000047 +:1094C00010A0000824A3FFFFAC86000000000000ED +:1094D000000000002402FFFF2463FFFF1462FFFA74 +:1094E0002484000403E0000800000000000411C010 +:1094F00003E000082442024027BDFFE8AFB000109F +:1095000000808021AFBF00140E000F9600A0202124 +:1095100000504821240AFF808FBF00148FB0001034 +:10952000012A30243127007F3C08800A3C042100B6 +:1095300000E8102100C428253C03800027BD001846 +:10954000AC650024AF820038AC400000AC6500245C +:1095500003E00008AC4000403C0D08008DAD005811 +:1095600000056180240AFF8001A45821016C482174 +:10957000012A30243127007F3C08800C3C04210064 +:1095800000E8102100C428253C038000AC650028B9 +:10959000AF82003403E00008AC40002430A5FFFF98 +:1095A0003C0680008CC201B80440FFFE3C086015F8 +:1095B00000A838253C031000ACC40180ACC0018475 +:1095C000ACC7018803E00008ACC301B83C0D08003B +:1095D0008DAD005800056180240AFF8001A4582148 +:1095E000016C4021010A4824000931403107007F05 +:1095F00000C728253C04200000A418253C02800058 +:10960000AC43083003E00008AF80003427BDFFE81A +:10961000AFB0001000808021AFBF00140E000F9685 +:1096200000A0202100504821240BFF80012B502452 +:10963000000A39403128007F3C0620008FBF00140B +:109640008FB0001000E8282534C2000100A21825C0 +:109650003C04800027BD0018AC83083003E00008FC +:10966000AF8000383C0580088CA700603C0680086D +:109670000087102B144000112C8340008CA8006040 +:109680002D0340001060000F240340008CC90060CF +:109690000089282B14A00002008018218CC30060D0 +:1096A00000035A42000B30803C0A0800254A59202A +:1096B00000CA202103E000088C8200001460FFF340 +:1096C0002403400000035A42000B30803C0A08008B +:1096D000254A592000CA202103E000088C8200009E +:1096E0003C05800890A60008938400AB24C20001CA +:1096F000304200FF3043007F1064000C0002382726 +:10970000A0A200083C0480008C85017804A0FFFE24 +:109710008F8A00A0240900023C081000AC8A014096 +:10972000A089014403E00008AC8801780A00101BFE +:1097300030E2008027BDFFD8AFB200188F9200A49E +:10974000AFBF0020AFB3001CAFB00010AFB100142A +:109750008F9300348E5900283C1000803C0EFFEFA0 +:10976000AE7900008E580024A260000A35CDFFFFBC +:10977000AE7800049251002C3C0BFF9F356AFFFF2E +:10978000A271000C8E6F000C3C080040A271000B0F +:1097900001F06025018D4824012A382400E8302595 +:1097A000AE66000C8E450004AE6000183C0400FF5D +:1097B000AE6500148E43002C3482FFFFA6600008C3 +:1097C0000062F824AE7F00108E5900088F9000A030 +:1097D000964E0012AE7900208E51000C31D83FFF1A +:1097E00000187980AE7100248E4D001401F06021C4 +:1097F00031CB0001AE6D00288E4A0018000C41C22A +:10980000000B4B80AE6A002C8E46001C01093821EB +:10981000A667001CAE660030964500028E4400200C +:10982000A665001EAE64003492430033306200042B +:1098300054400006924700003C0280083443010077 +:109840008C7F00D0AE7F0030924700008F860038BA +:10985000A0C700309245003330A4000250800007BA +:10986000925100018F880038240BFF80910A00304C +:10987000014B4825A1090030925100018F9000381A +:10988000240CFFBF2404FFDFA21100318F8D0038AC +:109890003C1880083711008091AF003C31EE007F0A +:1098A000A1AE003C8F890038912B003C016C502404 +:1098B000A12A003C8F9F00388E68001493E6003C7C +:1098C0002D0700010007114000C4282400A218251C +:1098D000A3E3003C8F87003896590012A4F90032A8 +:1098E0008E450004922E007C30B0000300107823D7 +:1098F00031ED000300AD102131CC000215800002D3 +:1099000024460034244600303C0280083443008062 +:10991000907F007C00BFC824333800041700000289 +:1099200024C2000400C010218F98003824190002BE +:10993000ACE20034A3190000924F003F8F8E003834 +:109940003C0C8008358B0080A1CF00018F9100383E +:10995000924D003F8E440004A62D0002956A005CE3 +:109960000E000FF43150FFFF00024B800209382532 +:109970003C08420000E82825AE2500048E4400384B +:109980008F850038ACA400188E460034ACA6001CAD +:10999000ACA0000CACA00010A4A00014A4A0001661 +:1099A000A4A00020A4A00022ACA000248E62001479 +:1099B00050400001240200018FBF00208FB3001C23 +:1099C0008FB200188FB100148FB00010ACA2000845 +:1099D0000A00101327BD002827BDFFC83C058008DA +:1099E00034A40080AFBF0034AFBE0030AFB7002C4E +:1099F000AFB60028AFB50024AFB40020AFB3001C51 +:109A0000AFB20018AFB10014AFB00010948300786B +:109A10009482007A104300512405FFFF0080F0215A +:109A20000A0011230080B821108B004D8FBF003435 +:109A30008F8600A03C1808008F18005C2411FF805E +:109A40003C1680000306782101F18024AED0002C62 +:109A500096EE007A31EC007F3C0D800E31CB7FFF1B +:109A6000018D5021000B4840012AA82196A4000036 +:109A70003C0808008D0800582405FF8030953FFF02 +:109A800001061821001539800067C8210325F82434 +:109A90003C02010003E290253338007F3C11800C2A +:109AA000AED20028031190219250000D320F000415 +:109AB00011E0003702E0982196E3007A96E8007AF8 +:109AC00096E5007A2404800031077FFF24E300013B +:109AD00030627FFF00A4F82403E2C825A6F9007ACB +:109AE00096E6007A3C1408008E94006030D67FFF22 +:109AF00012D400C1000000008E5800188F8400A00E +:109B000002A028212713FFFF0E000FCEAE53002C1A +:109B100097D5007897D4007A12950010000028217C +:109B20003C098008352401003C0A8008914800085F +:109B3000908700D53114007F30E400FF0284302B81 +:109B400014C0FFB9268B0001938E00AB268C000158 +:109B5000008E682115ACFFB78F8600A08FBF003440 +:109B60008FBE00308FB7002C8FB600288FB5002431 +:109B70008FB400208FB3001C8FB200188FB1001477 +:109B80008FB0001000A0102103E0000827BD0038AE +:109B900000C020210E000F99028028218E4B00105A +:109BA0008E4C00308F84003824090002016C502351 +:109BB000AE4A0010A089000096E3005C8E4400309D +:109BC0008F9100380E000FF43070FFFF00024380C9 +:109BD000020838253C02420000E22825AE25000498 +:109BE0008E5F00048F8A00388E590000240B000815 +:109BF000AD5F001CAD590018AD40000CAD40001029 +:109C00009246000A240400052408C00030D000FF5A +:109C1000A550001496580008A55800169251000A45 +:109C20003C188008322F00FFA54F0020964E0008F8 +:109C300037110100A54E0022AD400024924D000BCB +:109C400031AC00FFA54C0002A14B00018E49003051 +:109C50008F830038240BFFBFAC690008A06400307C +:109C60008F9000382403FFDF9607003200E8282495 +:109C700000B51025A6020032921F003233F9003FD2 +:109C800037260040A20600328F8C0038AD800034A9 +:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F +:109CA00031CD007FA18D003C8F84003835EEFFFF61 +:109CB000908A003C014B4824A089003C8F850038E5 +:109CC00090A8003C01033824A0A7003C8E42003439 +:109CD0008F9100383C038008AE2200408E59002C42 +:109CE0008E5F0030033F3023AE26004492300048A0 +:109CF0003218007FA23800488F8800388E4D00301F +:109D00008D0C004801AE582401965024014B482583 +:109D1000AD0900489244000AA104004C964700088F +:109D20008F850038A4A7004E8E5000308E4400303E +:109D30000E0003818C65006092F9007C0002F940FE +:109D4000004028210002110003E2302133360002D6 +:109D500012C00003020680210005B0800216802197 +:109D6000926D007C31B30004126000020005708027 +:109D7000020E80218E4B00308F8800382405800031 +:109D8000316A0003000A4823312400030204182129 +:109D9000AD03003496E4007A96F0007A96F1007AEA +:109DA00032027FFF2447000130FF7FFF0225C824D5 +:109DB000033F3025A6E6007A96F8007A3C120800A8 +:109DC0008E520060330F7FFF11F200180000000078 +:109DD0008F8400A00E000FCE02A028218F8400A047 +:109DE0000E000FDE028028210E001013000000007C +:109DF0000A00111F0000000096F1007A022480245E +:109E0000A6F0007A92EF007A92EB007A31EE00FF32 +:109E1000000E69C2000D6027000C51C03169007F3F +:109E2000012A20250A001119A2E4007A96E6007A98 +:109E300000C5C024A6F8007A92EF007A92F3007A67 +:109E400031F200FF001271C2000E6827000DB1C090 +:109E5000326C007F01962825A2E5007A0A0011D015 +:109E60008F8400A03C0380003084FFFF30A5FFFFFB +:109E7000AC640018AC65001C03E000088C620014A0 +:109E800027BDFFA03C068008AFBF005CAFBE0058F6 +:109E9000AFB70054AFB60050AFB5004CAFB40048F8 +:109EA000AFB30044AFB20040AFB1003CAFB0003838 +:109EB00034C80100910500D590C700083084FFFF29 +:109EC00030A500FF30E2007F0045182AAFA4001043 +:109ED000A7A00018A7A0002610600055AFA000148E +:109EE00090CA00083149007F00A9302324D3FFFF26 +:109EF0000013802B8FB400100014902B02128824C2 +:109F0000522000888FB300143C03800894790052DB +:109F1000947E00508FB60010033EC0230018BC0092 +:109F2000001714030016FC0002C2A82A16A00002A3 +:109F3000001F2C030040282100133C0000072403CD +:109F400000A4102A5440000100A020212885000907 +:109F500014A000020080A021241400083C0C8008FA +:109F60008D860048001459808D88004C3C03800089 +:109F70003169FFFF3C0A0010012A202534710400DA +:109F8000AC660038AF9100A4AC68003CAC64003013 +:109F900000000000000000000000000000000000C1 +:109FA00000000000000000000000000000000000B1 +:109FB0008C6E000031CD002011A0FFFD0014782A26 +:109FC00001F01024104000390000A8213C16800840 +:109FD00092D700083C1280008E44010032F6007FC8 +:109FE0000E000F9902C028218E3900108E44010006 +:109FF0000000902133373FFF0E000FB102E028210F +:10A00000923800003302003F2C500008520000102C +:10A0100000008821000210803C030800246358E4FB +:10A020000043F8218FFE000003C00008000000007C +:10A0300090CF0008938C00AB31EE007F00AE682318 +:10A04000018D58210A0012172573FFFF0000882197 +:10A050003C1E80008FC401000E000FCE02E02821BC +:10A060008FC401000E000FDE02C028211220000F55 +:10A070000013802B8F8B00A426A400010004AC00E9 +:10A08000027298230015AC032578004002B4B02A70 +:10A090000013802B241700010300882102D0102414 +:10A0A000AF9800A41440FFC9AFB700143C07800864 +:10A0B00094E200508FAE00103C05800002A288217F +:10A0C0003C060020A4F10050ACA6003094F40050EF +:10A0D00094EF005201D51823306CFFFF11F4001EDD +:10A0E000AFAC00108CEF004C001561808CF500487F +:10A0F00001EC28210000202100AC582B02A4C02133 +:10A10000030BB021ACE5004CACF600488FB4001056 +:10A110000014902B021288241620FF7C3C03800838 +:10A120008FB300148FBF005C8FBE00583A620001ED +:10A130008FB700548FB600508FB5004C8FB40048D5 +:10A140008FB300448FB200408FB1003C8FB0003815 +:10A1500003E0000827BD006094FE00548CF2004428 +:10A1600033C9FFFE0009C8C00259F821ACBF003C4A +:10A170008CE800448CAD003C010D50231940003B9D +:10A18000000000008CF7004026E20001ACA200387D +:10A190003C05005034A700103C038000AC67003041 +:10A1A00000000000000000000000000000000000AF +:10A1B000000000000000000000000000000000009F +:10A1C0008C7800003316002012C0FFFD3C1180087F +:10A1D000962200543C1580003C068008304E000159 +:10A1E000000E18C0007578218DEC04003C070800B3 +:10A1F0008CE700443C040020ACCC00488DF40404FF +:10A20000240B0001ACD4004C10EB0260AEA4003073 +:10A21000963900523C0508008CA5004000B99021F9 +:10A22000A6320052963F005427ED0001A62D00549F +:10A230009626005430C4FFFF5487FF2F8FB40010C0 +:10A2400030A5FFFF0E0011F4A62000543C070800C3 +:10A250008CE70024963E00520047B82303D74823DA +:10A26000A62900520A0012198FB400108CE2004097 +:10A270000A0012BE00000000922400012407000121 +:10A280003085007F14A7001C97AD00268E2B00148C +:10A29000240CC000316A3FFF01AC48243C06080092 +:10A2A0008CC60060012A402531043FFF0086882BC0 +:10A2B00012200011A7A800263C0508008CA5005814 +:10A2C0008F9100A0000439802402FF8000B1182182 +:10A2D0000067F82103E2F02433F8007F3C1280008D +:10A2E0003C19800EAE5E002C0319702191D0000D38 +:10A2F000360F0004A1CF000D0E001028241200011B +:10A30000241100013C1E80008FC401000E000FCEFE +:10A3100002E028218FC401000E000FDE02C02821B8 +:10A320001620FF558F8B00A40A0012860013802B85 +:10A330008F8600A490C80001310400201080019194 +:10A34000241000013C048008348B0080916A007C5A +:10A350008F9E0034AFA0002C314900011120000F66 +:10A36000AFB000288CCD00148C8E006001AE602B45 +:10A370001580000201A038218C8700603C188008FD +:10A38000370300808C70007000F0782B15E000021D +:10A3900000E020218C640070AFA4002C3C028008F7 +:10A3A000344500808CD200148CBF0070025FC82B33 +:10A3B00017200002024020218CA400708FA7002CDF +:10A3C0000087182310600003AFA3003024050002AB +:10A3D000AFA500288FA400280264882B162000BA9D +:10A3E000000018218CD000388FCE000C3C0F00806C +:10A3F000AFD000008CCD00343C0CFF9F01CF58251E +:10A40000AFCD000490CA003F3586FFFF01662024CF +:10A410003C0900203C08FFEFA3CA000B0089382547 +:10A420003511FFFF00F118243C0500088F8700A4B8 +:10A430000065C825AFD9000C8CE20014AFC000182D +:10A440008FA60030AFC200148CF800188FB0002C1B +:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A +:10A4600003326824AFCF00248CEC000C020670216C +:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B +:10A48000AFCC0020AFC000288CEA00148FAB002CAA +:10A49000014B48230126402311000011AFC80010D2 +:10A4A00090EB003D8FC900048FC80000000B5100E5 +:10A4B000012A28210000102100AA882B010218215E +:10A4C0000071F821AFC50004AFDF000090F2003D3D +:10A4D000A3D2000A8F9900A497380006A7D80008D5 +:10A4E0008F910038240800023C038008A228000055 +:10A4F0003465008094BF005C8FA4002C33F0FFFF14 +:10A500000E000FF48F9200380002CB808F8500A4DC +:10A51000021978253C18420001F87025AE4E00045F +:10A520008F8400388CAD0038AC8D00188CAC0034B2 +:10A53000AC8C001CAC80000CAC800010A48000141B +:10A54000A4800016A4800020A4800022AC800024F7 +:10A5500090A6003F8FA7002CA486000250E0019235 +:10A56000240700018FA200305040000290A2003D5D +:10A5700090A2003E244A0001A08A00018F84003886 +:10A580008FA9002CAC8900083C128008364D008051 +:10A5900091AC007C3186000214C000022407003414 +:10A5A000240700308F8500A43C198008373F0080C5 +:10A5B00090B0000093F9007C240E0004A0900030BD +:10A5C0008F8F00A48FB8002C8F8D003891F200017E +:10A5D0003304000301C46023A1B200318F8E003820 +:10A5E0008F8600A42402C00095CA003294C90012CC +:10A5F0008FAB002C0142402431233FFF010388250B +:10A60000A5D1003291D000323185000300EBF82152 +:10A610003218003F370F0040A1CF00328FA4002C2A +:10A6200003E5382133280004108000028F850038AC +:10A6300000E838213C0A8008ACA700343549010005 +:10A640008D2800D08FA3002C2419FFBFACA80038A0 +:10A6500090B1003C2C640001240FFFDF3227007F03 +:10A66000A0A7003C8F98003800049140931F003C45 +:10A6700003F98024A310003C8F8C0038918E003C9D +:10A6800001CF682401B23025A186003C8F8900A447 +:10A690008F8800388D2B0020AD0B00408D220024C8 +:10A6A000AD0200448D2A0028AD0A00488D23002CFD +:10A6B0000E001013AD03004C8FB1002824070002D8 +:10A6C000122700118FA300280003282B00058023E8 +:10A6D0000270982400608021006090210A00126FAF +:10A6E0000010882B962900128F8400A00000902172 +:10A6F0003125FFFFA7A900180E000FC22411000189 +:10A700000A00131D3C1E80003C0B80003C12800898 +:10A710008D640100924900088F92FF340E000F995A +:10A720003125007F8F9900388FA700288FA4003033 +:10A73000A3270000965F005C33F0FFFF0E000FF4CC +:10A740008F91003800026B80020D80253C0842008A +:10A750008F8D00A402085025AE2A00048DA5003874 +:10A760008F8A003800007821000F1100AD450018D5 +:10A770008DB800343C047FFF3488FFFFAD58001CC7 +:10A7800091A6003E8D4C001C8D4900180006190052 +:10A79000000677020183C821004E58250323882B29 +:10A7A000012B382100F1F821AD59001CAD5F0018D4 +:10A7B000AD40000CAD40001091B0003E8FA40030C1 +:10A7C00024090005A550001495A500042419C00013 +:10A7D00000884024A545001691B8003EA5580020E9 +:10A7E00095AF0004A54F0022AD40002491AE003F7C +:10A7F000A54E000291A6003E91AC003D01861023BB +:10A80000244B0001A14B00018F9100388FA3003031 +:10A810003C028008344B0100AE230008A22900301E +:10A820008F8C00388F8700A4959F003294F000121F +:10A830002407FFBF033FC02432053FFF03057825EF +:10A84000A58F0032918E00322418FFDF31CD003FFA +:10A8500035A60040A18600328F910038240DFFFFFD +:10A86000240CFF80AE2000348D6A00D0AE2A003860 +:10A870009223003C3069007FA229003C8F90003871 +:10A880003C0380009219003C0327F824A21F003CDF +:10A890008F8E003891C5003C00B87824A1CF003CD1 +:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA +:10A8B000AD46004491420048004C5825A14B004849 +:10A8C0008F9000388F9900A48E09004801238824B6 +:10A8D00002283825AE070048933F003EA21F004CD7 +:10A8E0008F9800A48F8F003897050004A5E5004ECF +:10A8F0000E0003818DC500609246007C8FAC003055 +:10A9000000026940000291000040282130CB000283 +:10A9100001B21021156000AA018230213C0E80088E +:10A9200035C20080904C007C31830004106000032D +:10A930008FB900300005788000CF3021241F00043B +:10A940008F910038332D000303ED8023320800037C +:10A9500000C85021AE2A00343C188000A7C500383A +:10A960003C0680088F04010090DE00080E000FDE18 +:10A9700033C5007F0E001013000000000A00140D04 +:10A980008FA300288F9800348CC90038241F00033F +:10A99000A7000008AF0900008CC50034A300000A1E +:10A9A0008F9900A4AF0500043C080080932D003F60 +:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D +:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E +:10A9D00003D170243646FFFF01C61824AF03000CD4 +:10A9E0008F2C0014972900128F8400A0AF0C001048 +:10A9F0008F2F0014AF000018AF000020AF0F00141D +:10AA0000AF0000248F270018312F3FFF000F59801F +:10AA1000AF0700288F2500080164F821312D0001BF +:10AA2000AF0500308F31000C8F920038001F51C2EB +:10AA3000000D438001481021241E00023C068008BE +:10AA4000A702001CA7000034AF11002CA25E00007A +:10AA500034D20080964E005C8F9900383C0342004F +:10AA600031CCFFFF01833825AF2700048F8B00A472 +:10AA7000240500012402C0008D640038240700343E +:10AA8000AF2400188D690034AF29001CAF20000CE2 +:10AA9000AF200010A7200014A7200016A720002038 +:10AAA000A7200022AF200024A7300002A325000128 +:10AAB0008F8800388F9F00A4AD10000893ED000030 +:10AAC000A10D00308F8A00A48F98003891510001A9 +:10AAD000A31100318F8B0038957E003203C27024A1 +:10AAE00001CF6025A56C0032916300323064003FD5 +:10AAF000A16400329249007C3125000214A00002BA +:10AB00008F840038240700303C198008AC8700345B +:10AB1000373201008E5F00D0240AFFBF020090216F +:10AB2000AC9F0038908D003C31A8007FA088003C8D +:10AB30008F9E003893C2003C004A8824A3D1003C79 +:10AB40008F8300380010882B9066003C34CE0020A4 +:10AB5000A06E003C8F8400A48F9800388C8C00205D +:10AB6000AF0C00408C8F0024AF0F00448C8700286E +:10AB7000AF0700488C8B002CAF0B004C0E0010135D +:10AB80003C1E80000A0012700000000094C80052B1 +:10AB90003C0A08008D4A002401488821A4D10052B3 +:10ABA0000A0012198FB40010A08700018F840038AA +:10ABB000240B0001AC8B00080A0013BE3C12800875 +:10ABC000000520800A0014A200C4302127BDFFE048 +:10ABD0003C0D8008AFB20018AFB00010AFBF001C32 +:10ABE000AFB1001435B200808E4C001835A80100BA +:10ABF000964B000695A70050910900FC000C5602E8 +:10AC0000016728233143007F312600FF240200031F +:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC +:10AC2000910600FC2412000530C200FF10520033D0 +:10AC300000000000160000098FBF001C8FB2001832 +:10AC40008FB100148FB00010240D0C003C0C80005C +:10AC500027BD002003E00008AD8D00240E0011FB8D +:10AC6000020020218FBF001C8FB200188FB100148A +:10AC70008FB00010240D0C003C0C800027BD00207C +:10AC800003E00008AD8D0024965800789651007AB4 +:10AC9000924E007D0238782631E8FFFF31C400C0B3 +:10ACA000148000092D11000116000037000000007B +:10ACB0005620FFE28FBF001C0E0010D100000000E4 +:10ACC0000A00156A8FBF001C1620FFDA0000000082 +:10ACD0000E0010D1000000001440FFD88FBF001CF0 +:10ACE0001600002200000000925F007D33E2003F6A +:10ACF000A242007D0A00156A8FBF001C950900EA78 +:10AD00008F86008000802821240400050E0007257E +:10AD10003130FFFF978300923C0480002465FFFFE1 +:10AD2000A78500928C8A01B80540FFFE0000000054 +:10AD3000AC8001808FBF001CAC9001848FB20018E2 +:10AD40008FB100148FB000103C0760133C0B100053 +:10AD5000240D0C003C0C800027BD0020AC8701882E +:10AD6000AC8B01B803E00008AD8D00240E0011FB90 +:10AD7000020020215040FFB18FBF001C925F007D78 +:10AD80000A00159733E2003F0E0011FB020020215C +:10AD90001440FFAA8FBF001C122000070000000013 +:10ADA0009259007D3330003F36020040A242007DC0 +:10ADB0000A00156A8FBF001C0E0010D100000000B1 +:10ADC0005040FF9E8FBF001C9259007D3330003FE2 +:10ADD0000A0015C636020040000000000000001BFB +:10ADE0000000000F0000000A00000008000000063C +:10ADF0000000000500000005000000040000000441 +:10AE00000000000300000003000000030000000336 +:10AE10000000000300000002000000020000000229 +:10AE2000000000020000000200000002000000021A +:10AE3000000000020000000200000002000000020A +:10AE400000000002000000020000000200000002FA +:10AE50000000000100000001000000018008010066 +:10AE6000800800808008000000000C000000308096 +:10AE7000080011D00800127C08001294080012A8E3 +:10AE8000080012BC080011D0080011D0080012F010 +:10AE90000800132C080013400800138808001A8CBF +:10AEA00008001A8C08001AC408001AC408001AD82E +:10AEB00008001AA808001D0008001CCC08001D5836 +:10AEC00008001D5808001DE008001D108008024001 +:10AED000080027340800256C0800275C080027F4C8 +:10AEE0000800293C0800298808002AAC080029B479 +:10AEF00008002A38080025DC08002EDC08002EA4F3 +:10AF000008002588080025880800258808002B20CF +:10AF100008002B20080025880800258808002DD06F +:10AF2000080025880800258808002588080025884D +:10AF300008002E0C080025880800258808002588B0 +:10AF4000080025880800258808002588080025882D +:10AF5000080025880800258808002588080025881D +:10AF6000080025880800258808002588080029A8E9 +:10AF7000080025880800258808002E680800258814 +:10AF800008002588080025880800258808002588ED +:10AF900008002588080025880800258808002588DD +:10AFA00008002588080025880800258808002588CD +:10AFB00008002588080025880800258808002588BD +:10AFC00008002CF4080025880800258808002C6853 +:10AFD00008002BC408003CE408003CB808003C848E +:10AFE00008003C5808003C3808003BEC8008010091 +:10AFF00080080080800800008008008008004C6401 +:10B0000008004C9C08004BE408004C6408004C64A9 +:10B01000080049B808004C64080050500A000C842D +:10B0200000000000000000000000000D7278703683 +:10B030002E322E31620000000602010300000000E3 +:10B0400000000001000000000000000000000000FF +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000000000000000000000008B +:10D5A000000000000000000000000000000000007B +:10D5B000000000000000000000000000000000006B +:10D5C000000000000000000000000000000000005B +:10D5D000000000000000000000000000000000004B +:10D5E000000000000000000000000000000000003B +:10D5F000000000000000000000000000000000002B +:10D60000000000000000000000000000000000001A +:10D61000000000000000000000000000000000000A +:10D6200000000000000000000000000000000000FA +:10D6300000000000000000000000000000000000EA +:10D6400000000000000000000000000000000000DA +:10D6500000000000000000000000000000000000CA +:10D6600000000000000000000000000000000000BA +:10D6700000000000000000000000000000000000AA +:10D68000000000000000000000000000000000009A +:10D69000000000000000000000000000000000008A +:10D6A000000000000000000000000000000000007A +:10D6B000000000000000000000000000000000006A +:10D6C000000000000000000000000000000000005A +:10D6D000000000000000000000000000000000004A +:10D6E000000000000000000000000000000000003A +:10D6F000000000000000000000000000000000002A +:10D700000000000000000000000000000000000019 +:10D710000000000000000000000000000000000009 +:10D7200000000000000000000000000000000000F9 +:10D7300000000000000000000000000000000000E9 +:10D7400000000000000000000000000000000000D9 +:10D7500000000000000000000000000000000000C9 +:10D7600000000000000000000000000000000000B9 +:10D7700000000000000000000000000000000000A9 +:10D780000000000000000000000000000000000099 +:10D790000000000000000000000000000000000089 +:10D7A0000000000000000000000000000000000079 +:10D7B0000000000000000000000000000000000069 +:10D7C0000000000000000000000000000000000059 +:10D7D0000000000000000000000000000000000049 +:10D7E0000000000000000000000000000000000039 +:10D7F0000000000000000000000000000000000029 +:10D800000000000000000000000000000000000018 +:10D810000000000000000000000000000000000008 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000000000000E8 +:10D8400000000000000000000000000000000000D8 +:10D8500000000000000000000000000000000000C8 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D880000000000000000000000000000000000098 +:10D890000000000000000000000000000000000088 +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0000000000000000000000000000000000058 +:10D8D0000000000000000000000000000000000048 +:10D8E0000000000000000000000000000000000038 +:10D8F0000000000000000000000000000000000028 +:10D900000000000000000000000000000000000017 +:10D910000000000000000000000000000000000007 +:10D9200000000000000000000000000000000000F7 +:10D9300000000000000000000000000000000000E7 +:10D9400000000000000000000000000000000000D7 +:10D9500000000000000000000000000000000000C7 +:10D9600000000000000000000000000000000000B7 +:10D9700000000000000000000000000000000000A7 +:10D980000000000000000000000000000000000097 +:10D990000000000000000000000000000000000087 +:10D9A0000000000000000000000000000000000077 +:10D9B0000000000000000000000000000000000067 +:10D9C0000000000000000000000000000000000057 +:10D9D0000000000000000000000000000000000047 +:10D9E0000000000000000000000000000000000037 +:10D9F0000000000000000000000000000000000027 +:10DA00000000000000000000000000000000000016 +:10DA10000000000000000000000000000000000006 +:10DA200000000000000000000000000000000000F6 +:10DA300000000000000000000000000000000000E6 +:10DA400000000000000000000000000000000000D6 +:10DA500000000000000000000000000000000000C6 +:10DA600000000000000000000000000000000000B6 +:10DA700000000000000000000000000000000000A6 +:10DA80000000000000000000000000000000000096 +:10DA90000000000000000000000000000000000086 +:10DAA0000000000000000000000000000000000076 +:10DAB0000000000000000000000000000000000066 +:10DAC0000000000000000000000000000000000056 +:10DAD0000000000000000000000000000000000046 +:10DAE0000000000000000000000000000000000036 +:10DAF0000000000000000000000000000000000026 +:10DB00000000000000000000000000000000000015 +:10DB10000000000000000000000000000000000005 +:10DB200000000000000000000000000000000000F5 +:10DB300000000000000000000000000000000000E5 +:10DB400000000000000000000000000000000000D5 +:10DB500000000000000000000000000000000000C5 +:10DB600000000000000000000000000000000000B5 +:10DB700000000000000000000000000000000000A5 +:10DB80000000000000000000000000000000000095 +:10DB90000000000000000000000000000000000085 +:10DBA0000000000000000000000000000000000075 +:10DBB0000000000000000000000000000000000065 +:10DBC0000000000000000000000000000000000055 +:10DBD0000000000000000000000000000000000045 +:10DBE0000000000000000000000000000000000035 +:10DBF0000000000000000000000000000000000025 +:10DC00000000000000000000000000000000000014 +:10DC10000000000000000000000000000000000004 +:10DC200000000000000000000000000000000000F4 +:10DC300000000000000000000000000000000000E4 +:10DC400000000000000000000000000000000000D4 +:10DC500000000000000000000000000000000000C4 +:10DC600000000000000000000000000000000000B4 +:10DC700000000000000000000000000000000000A4 +:10DC80000000000000000000000000000000000094 +:10DC90000000000000000000000000000000000084 +:10DCA0000000000000000000000000000000000074 +:10DCB0000000000000000000000000000000000064 +:10DCC0000000000000000000000000000000000054 +:10DCD0000000000000000000000000000000000044 +:10DCE0000000000000000000000000000000000034 +:10DCF0000000000000000000000000000000000024 +:10DD00000000000000000000000000000000000013 +:10DD10000000000000000000000000000000000003 +:10DD200000000000000000000000000000000000F3 +:10DD300000000000000000000000000000000000E3 +:10DD400000000000000000000000000000000000D3 +:10DD500000000000000000000000000000000000C3 +:10DD600000000000000000000000000000000000B3 +:10DD700000000000000000000000000000000000A3 +:10DD80000000000000000000000000000000000093 +:10DD90000000000000000000000000000000000083 +:10DDA0000000000000000000000000000000000073 +:10DDB0000000000000000000000000000000000063 +:10DDC0000000000000000000000000000000000053 +:10DDD0000000000000000000000000000000000043 +:10DDE0000000000000000000000000000000000033 +:10DDF0000000000000000000000000000000000023 +:10DE00000000000000000000000000000000000012 +:10DE10000000000000000000000000000000000002 +:10DE200000000000000000000000000000000000F2 +:10DE300000000000000000000000000000000000E2 +:10DE400000000000000000000000000000000000D2 +:10DE500000000000000000000000000000000000C2 +:10DE600000000000000000000000000000000000B2 +:10DE700000000000000000000000000000000000A2 +:10DE80000000000000000000000000000000000092 +:10DE90000000000000000000000000000000000082 +:10DEA0000000000000000000000000000000000072 +:10DEB0000000000000000000000000000000000062 +:10DEC0000000000000000000000000000000000052 +:10DED0000000000000000000000000000000000042 +:10DEE0000000000000000000000000000000000032 +:10DEF0000000000000000000000000000000000022 +:10DF00000000000000000000000000000000000011 +:10DF10000000000000000000000000000000000001 +:10DF200000000000000000000000000000000000F1 +:10DF300000000000000000000000000000000000E1 +:10DF400000000000000000000000000000000000D1 +:10DF500000000000000000000000000000000000C1 +:10DF600000000000000000000000000000000000B1 +:10DF700000000000000000000000000000000000A1 +:10DF80000000000000000000000000000000000091 +:10DF90000000000000000000000000000000000081 +:10DFA0000000000000000000000000000000000071 +:10DFB0000000000000000000000000000000000061 +:10DFC0000000000000000000000000000000000051 +:10DFD0000000000000000000000000000000000041 +:10DFE0000000000000000000000000000000000031 +:10DFF0000000000000000000000000000000000021 +:10E000000000000000000000000000000000000010 +:10E010000000000000000000000000000000000000 +:10E0200000000000000000000000000000000000F0 +:10E0300000000000000000000000000000000000E0 +:10E0400000000000000000000000000000000000D0 +:10E0500000000000000000000000000000000000C0 +:10E0600000000000000000000000000000000000B0 +:10E0700000000000000000000000000000000000A0 +:10E080000000000000000000000000000000000090 +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000000000000000000000000000060 +:10E0C0000000000000000000000000000000000050 +:10E0D0000000000000000000000000000000000040 +:10E0E0000000000000000000000000000000000030 +:10E0F0000000000000000000000000000000000020 +:10E10000000000000000000000000000000000000F +:10E1100000000000000000000000000000000000FF +:10E1200000000000000000000000000000000000EF +:10E1300000000000000000000000000000000000DF +:10E1400000000000000000000000000000000000CF +:10E1500000000000000000000000000000000000BF +:10E1600000000000000000000000000000000000AF +:10E17000000000000000000000000000000000009F +:10E18000000000000000000000000000000000008F +:10E19000000000000000000000000000000000007F +:10E1A000000000000000000000000000000000006F +:10E1B000000000000000000000000000000000005F +:10E1C000000000000000000000000000000000004F +:10E1D000000000000000000000000000000000003F +:10E1E000000000000000000000000000000000002F +:10E1F000000000000000000000000000000000809F +:10E20000000000000000000000000000000000000E +:10E2100000000000000000000000000000000000FE +:10E220000000000A000000000000000000000000E4 +:10E2300010000003000000000000000D0000000DB1 +:10E240003C020801244295C03C030801246397FC6A +:10E25000AC4000000043202B1480FFFD244200044A +:10E260003C1D080037BD9FFC03A0F0213C100800B6 +:10E27000261032103C1C0801279C95C00E0012BECF +:10E28000000000000000000D3C02800030A5FFFFF0 +:10E2900030C600FF344301803C0880008D0901B87E +:10E2A0000520FFFE00000000AC6400002404000212 +:10E2B000A4650008A066000AA064000BAC67001803 +:10E2C0003C03100003E00008AD0301B83C0560000A +:10E2D0008CA24FF80440FFFE00000000ACA44FC029 +:10E2E0003C0310003C040200ACA44FC403E000084F +:10E2F000ACA34FF89486000C00A050212488001491 +:10E3000000062B0200051080004448210109182B4B +:10E310001060001100000000910300002C6400094F +:10E320005080000991190001000360803C0D080134 +:10E3300025AD9258018D58218D67000000E000083E +:10E340000000000091190001011940210109302B42 +:10E3500054C0FFF29103000003E000080000102108 +:10E360000A000CCC25080001910F0001240E000AC0 +:10E3700015EE00400128C8232F38000A1700003D81 +:10E38000250D00028D580000250F0006370E0100F4 +:10E39000AD4E0000910C000291AB000191A400026F +:10E3A00091A60003000C2E00000B3C0000A71025D6 +:10E3B00000041A000043C8250326C025AD580004F8 +:10E3C000910E000691ED000191E7000291E5000336 +:10E3D000000E5E00000D6400016C30250007220075 +:10E3E00000C41025004518252508000A0A000CCC99 +:10E3F000AD430008910F000125040002240800022B +:10E4000055E80001012020210A000CCC00804021A9 +:10E41000910C0001240B0003158B00160000000076 +:10E420008D580000910E000225080003370D0008EA +:10E43000A14E00100A000CCCAD4D00009119000156 +:10E44000240F0004172F000B0000000091070002AA +:10E45000910400038D43000000072A0000A410254A +:10E460003466000425080004AD42000C0A000CCC00 +:10E47000AD46000003E000082402000127BDFFE8CC +:10E48000AFBF0014AFB000100E00164E0080802108 +:10E490003C0480083485008090A600052403FFFE1C +:10E4A0000200202100C310248FBF00148FB0001081 +:10E4B000A0A200050A00165827BD001827BDFFE8D6 +:10E4C000AFB00010AFBF00140E000FD40080802149 +:10E4D0003C06800834C5008090A40000240200504F +:10E4E000308300FF106200073C09800002002021F9 +:10E4F0008FBF00148FB00010AD2001800A00108F74 +:10E5000027BD0018240801003C07800002002021DC +:10E510008FBF00148FB00010ACE801800A00108F8C +:10E5200027BD001827BDFF783C058008AFBE0080DE +:10E53000AFB7007CAFB3006CAFB10064AFBF008475 +:10E54000AFB60078AFB50074AFB40070AFB200687A +:10E55000AFB0006034A600803C0580008CB201287A +:10E5600090C400098CA701043C020001309100FF17 +:10E5700000E218240000B8210000F021106000071C +:10E58000000098213C0908008D2931F02413000176 +:10E59000252800013C010800AC2831F0ACA0008423 +:10E5A00090CC0005000C5827316A0001154000721C +:10E5B000AFA0005090CD00002406002031A400FF41 +:10E5C00010860018240E0050108E009300000000EA +:10E5D0003C1008008E1000DC260F00013C010800F2 +:10E5E000AC2F00DC0E0016C7000000000040182110 +:10E5F0008FBF00848FBE00808FB7007C8FB60078FD +:10E600008FB500748FB400708FB3006C8FB2006848 +:10E610008FB100648FB000600060102103E000083B +:10E6200027BD00880000000D3C1F8000AFA0003017 +:10E6300097E501168FE201043C04002030B9FFFF8A +:10E64000004438240007182B00033140AFA60030E7 +:10E650008FF5010437F80C003C1600400338802188 +:10E6600002B6A02434C40040128000479215000D69 +:10E6700032A800201500000234860080008030217E +:10E6800014C0009FAFA600303C0D800835A6008066 +:10E6900090CC0008318B0040516000063C06800899 +:10E6A000240E0004122E00A8240F0012122F003294 +:10E6B0003C06800834C401003C0280009447011AE3 +:10E6C0009619000E909F00088E18000830E3FFFF97 +:10E6D00003F9B00432B40004AFB6005CAFA3005835 +:10E6E0008E1600041280002EAFB8005434C3008090 +:10E6F000906800083105004014A0002500000000CB +:10E700008C70005002D090230640000500000000ED +:10E710008C71003402D1A82306A201678EE20008A2 +:10E72000126000063C1280003C1508008EB531F4E2 +:10E7300026B600013C010800AC3631F4AE4000447E +:10E74000240300018FBF00848FBE00808FB7007C40 +:10E750008FB600788FB500748FB400708FB3006CE3 +:10E760008FB200688FB100648FB00060006010212C +:10E7700003E0000827BD00880E000D2800002021BE +:10E780000A000D75004018210A000D9500C02021D7 +:10E790000E00171702C020211440FFE10000000006 +:10E7A0003C0B8008356400808C8A003402CA482300 +:10E7B0000520001D000000003C1E08008FDE310017 +:10E7C00027D700013C010800AC3731001260000679 +:10E7D000024020213C1408008E9431F42690000160 +:10E7E0003C010800AC3031F40E00164E3C1E80088F +:10E7F00037CD008091B700250240202136EE00047D +:10E800000E001658A1AE00250E000CAC02402021CF +:10E810000A000DCA240300013C17080126F796C020 +:10E820000A000D843C1F80008C86003002C66023E5 +:10E830001980000C2419000C908F004F3C14080024 +:10E840008E94310032B500FC35ED0001268E0001BA +:10E850003C010800AC2E3100A08D004FAFA0005845 +:10E860002419000CAFB900308C9800300316A02397 +:10E870001A80010B8FA300580074F82A17E0FFD309 +:10E88000000000001074002A8FA5005802D4B021A7 +:10E8900000B410233044FFFFAFA4005832A8000298 +:10E8A0001100002E32AB00103C15800836B00080FD +:10E8B0009216000832D30040526000FB8EE200083E +:10E8C0000E00164E02402021240A0018A20A000958 +:10E8D000921100052409FFFE024020210229902404 +:10E8E0000E001658A2120005240400390000282149 +:10E8F0000E0016F2240600180A000DCA24030001B7 +:10E9000092FE000C3C0A800835490080001EBB00C6 +:10E910008D27003836F10081024020213225F08118 +:10E920000E000C9B30C600FF0A000DC10000000065 +:10E930003AA7000130E300011460FFA402D4B02123 +:10E940000A000E1D00000000024020210E001734B6 +:10E95000020028210A000D75004018211160FF7087 +:10E960003C0F80083C0D800835EE00808DC40038D7 +:10E970008FA300548DA60004006660231D80FF68ED +:10E98000000000000064C02307020001AFA400548F +:10E990003C1F08008FFF31E433F9000113200015FC +:10E9A0008FAC00583C07800094E3011A10600012FD +:10E9B0003C0680080E00216A024020213C03080129 +:10E9C000906396F13064000214800145000000005D +:10E9D000306C0004118000078FAC0058306600FBDB +:10E9E0003C010801A02696F132B500FCAFA000580A +:10E9F0008FAC00583C06800834D30080AFB40018B8 +:10EA0000AFB60010AFAC00143C088000950B01209D +:10EA10008E6F0030966A005C8FA3005C8FBF003061 +:10EA20003169FFFF3144FFFF8FAE005401341021E4 +:10EA3000350540000064382B0045C82103E7C02598 +:10EA4000AFB90020AFAF0028AFB80030AFAF00249F +:10EA5000AFA0002CAFAE0034926D000831B40008B6 +:10EA6000168000BB020020218EE200040040F8095D +:10EA700027A400108FAF003031F300025660000170 +:10EA800032B500FE3C048008349F008093F90008F2 +:10EA900033380040530000138FA400248C850004F9 +:10EAA0008FA7005410A700D52404001432B0000131 +:10EAB0001200000C8FA400242414000C1234011A3C +:10EAC0002A2D000D11A001022413000E240E000AAD +:10EAD000522E0001241E00088FAF002425E40001FF +:10EAE000AFA400248FAA00143C0B80083565008079 +:10EAF000008A48218CB10030ACA9003090A4004EAF +:10EB00008CA700303408FFFF0088180400E3F821C8 +:10EB1000ACBF00348FA600308FB900548FB8005CB2 +:10EB200030C200081040000B033898218CAC002044 +:10EB3000119300D330C600FF92EE000C8FA7003473 +:10EB400002402021000E6B0035B400800E000C9BAB +:10EB50003285F0803C028008345000808E0F0030F7 +:10EB600001F1302318C00097264800803C070800B8 +:10EB70008CE731E42404FF80010418243118007F5D +:10EB80003C1F80003C19800430F10001AFE300908D +:10EB900012200006031928213C030801906396F116 +:10EBA00030690008152000C6306A00F73C10800864 +:10EBB00036040080908C004F318B000115600042BC +:10EBC000000000003C0608008CC6319830CE0010D2 +:10EBD00051C0004230F9000190AF006B55E0003F9A +:10EBE00030F9000124180001A0B8006B3C1180002E +:10EBF0009622007A24470064A48700123C0D800806 +:10EC000035A5008090B40008329000401600000442 +:10EC10003C03800832AE000115C0008B00000000EC +:10EC2000346400808C86002010D3000A3463010015 +:10EC30008C67000002C7782319E000978FBF00544B +:10EC4000AC93002024130001AC760000AFB3005059 +:10EC5000AC7F000417C0004E000000008FA90050D8 +:10EC60001520000B000000003C030801906396F1A2 +:10EC7000306A00011140002E8FAB0058306400FE56 +:10EC80003C010801A02496F10A000D75000018212E +:10EC90000E000CAC024020210A000F1300000000FF +:10ECA0000A000E200000A0210040F80924040017EB +:10ECB0000A000DCA240300010040F80924040016CC +:10ECC0000A000DCA240300019094004F240DFFFE9A +:10ECD000028D2824A085004F30F900011320000682 +:10ECE0003C0480083C030801906396F1307F0010DB +:10ECF00017E00051306800EF34900080240A0001D2 +:10ED0000024020210E00164EA60A00129203002592 +:10ED100024090001AFA90050346200010240202103 +:10ED20000E001658A20200250A000EF93C0D8008BC +:10ED30001160FE83000018218FA5003030AC000464 +:10ED40001180FE2C8FBF00840A000DCB240300012C +:10ED500027A500380E000CB6AFA000385440FF4382 +:10ED60008EE200048FB40038329001005200FF3F61 +:10ED70008EE200048FA3003C8E6E0058006E682364 +:10ED800005A3FF39AE6300580A000E948EE200041A +:10ED90000E00164E024020213C038008346800809B +:10EDA000024020210E001658A11E000903C0302188 +:10EDB000240400370E0016F2000028210A000F116B +:10EDC0008FA900508FAB00185960FF8D3C0D800853 +:10EDD0000E00164E02402021920C00252405000151 +:10EDE000AFA5005035820004024020210E001658C5 +:10EDF000A20200250A000EF93C0D800812240059D9 +:10EE00002A2300151060004D240900162408000C68 +:10EE10005628FF2732B000013C0A8008914C001BA5 +:10EE20002406FFBD241E000E01865824A14B001BA2 +:10EE30000A000EA532B000013C010801A02896F19D +:10EE40000A000EF93C0D80088CB500308EFE0008DB +:10EE50002404001826B6000103C0F809ACB600303F +:10EE60003C030801906396F13077000116E0FF81C2 +:10EE7000306A00018FB200300A000D753243000481 +:10EE80003C1080009605011A50A0FF2B34C60010DC +:10EE90000A000EC892EE000C8C6200001456FF6D42 +:10EEA000000000008C7800048FB9005403388823D8 +:10EEB0000621FF638FBF00540A000F0E0000000000 +:10EEC0003C010801A02A96F10A000F3030F9000138 +:10EED0001633FF028FAF00240A000EB0241E00106C +:10EEE0000E00164E024020213C0B80083568008041 +:10EEF00091090025240A0001AFAA0050353300040F +:10EF0000024020210E001658A11300253C050801DF +:10EF100090A596F130A200FD3C010801A02296F1D7 +:10EF20000A000E6D004018212411000E53D1FEEA94 +:10EF3000241E00100A000EAF241E00165629FEDC07 +:10EF400032B000013C0A8008914C001B2406FFBD32 +:10EF5000241E001001865824A14B001B0A000EA598 +:10EF600032B000010A000EA4241E00123C038000EF +:10EF70008C6201B80440FFFE24040800AC6401B8B0 +:10EF800003E000080000000030A5FFFF30C6FFFFCF +:10EF90003C0780008CE201B80440FFFE34EA0180A7 +:10EFA000AD440000ACE400203C0480089483004899 +:10EFB0003068FFFF11000016AF88000824AB001274 +:10EFC000010B482B512000133C04800034EF01005A +:10EFD00095EE00208F890000240D001A31CCFFFF30 +:10EFE00031274000A14D000B10E000362583FFFEC5 +:10EFF0000103C02B170000348F9900048F88000490 +:10F00000A5430014350700010A001003AF87000470 +:10F010003C04800024030003348201808F890000B7 +:10F020008F870004A043000B3C088000350C018052 +:10F03000A585000EA585001A8F85000C30EB800099 +:10F04000A5890010AD850028A58600081160000F75 +:10F050008F85001435190100972A00163158FFFCDE +:10F06000270F000401E870218DCD400031A6FFFF7D +:10F0700014C000072403BFFF3C02FFFF34487FFF9A +:10F0800000E83824AF8700048F8500142403BFFFF5 +:10F090003C04800000E3582434830180A46B0026E4 +:10F0A000AC69002C10A0000300054C02A465001000 +:10F0B000A46900263C071000AC8701B803E00008F3 +:10F0C000000000008F990004240AFFFE032A382460 +:10F0D0000A001003AF87000427BDFFE88FA20028B5 +:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99 +:10F0F000AF820014AF8000040E000FDBAF80000071 +:10F100008FBF001027BD001803E00008AF80001477 +:10F110003C06800034C4007034C701008C8A0000B3 +:10F1200090E500128F84000027BDFFF030A300FFA0 +:10F13000000318823082400010400037246500032D +:10F140000005C8800326C0218F0E4000246F0004F4 +:10F15000000F6880AFAE000001A660218D8B4000DB +:10F16000AFAB000494E900163128FFFC01063821FA +:10F170008CE64000AFA600088FA9000800003021EF +:10F18000000028213C07080024E701000A0010675E +:10F19000240800089059000024A500012CAC000CA4 +:10F1A0000079C0210018788001E770218DCD000022 +:10F1B0001180000600CD302603A5102114A8FFF50C +:10F1C00000051A005520FFF4905900003C0480000F +:10F1D000348700703C0508008CA531048CE30000E6 +:10F1E0002CA2002010400009006A38230005488046 +:10F1F0003C0B0800256B3108012B402124AA00019B +:10F20000AD0700003C010800AC2A310400C0102109 +:10F2100003E0000827BD0010308220001040000BE2 +:10F2200000055880016648218D24400024680004B0 +:10F2300000083880AFA4000000E618218C6540006B +:10F24000AFA000080A001057AFA500040000000D91 +:10F250000A0010588FA9000827BDFFE03C07800076 +:10F2600034E60100AFBF001CAFB20018AFB100140C +:10F27000AFB0001094C5000E8F87000030A4FFFFD0 +:10F280002483000430E2400010400010AF830028C7 +:10F290003C09002000E940241100000D30EC800002 +:10F2A0008F8A0004240BBFFF00EB38243543100085 +:10F2B000AF87000030F220001640000B3C1900041C +:10F2C000241FFFBF0A0010B7007F102430EC80001D +:10F2D000158000423C0E002030F220001240FFF862 +:10F2E0008F8300043C19000400F9C0241300FFF5CB +:10F2F000241FFFBF34620040AF82000430E20100EF +:10F300001040001130F010008F83002C10600006B8 +:10F310003C0F80003C05002000E52024148000C044 +:10F320003C0800043C0F800035EE010095CD001E26 +:10F3300095CC001C31AAFFFF000C5C00014B482556 +:10F34000AF89000C30F010001200000824110001F9 +:10F3500030F100201620008B3C18100000F890249B +:10F36000164000823C040C002411000130E801002A +:10F370001500000B3C0900018F85000430A94000F6 +:10F38000152000073C0900013C0C1F0100EC58242B +:10F390003C0A1000116A01183C1080003C09000171 +:10F3A00000E9302410C000173C0B10003C18080086 +:10F3B0008F1800243307000214E0014024030001E9 +:10F3C0008FBF001C8FB200188FB100148FB00010D7 +:10F3D0000060102103E0000827BD002000EE682433 +:10F3E00011A0FFBE30F220008F8F00043C11FFFF00 +:10F3F00036307FFF00F0382435E380000A0010A685 +:10F40000AF87000000EB102450400065AF8000245F +:10F410008F8C002C3C0D0F0000ED18241580008807 +:10F42000AF83001030E8010011000086938F0010B8 +:10F430003C0A0200106A00833C1280003650010032 +:10F44000920500139789002A3626000230AF00FF8C +:10F4500025EE0004000E19C03C0480008C9801B811 +:10F460000700FFFE34880180AD0300003C198008CE +:10F47000AC830020973100483225FFFF10A0015CCB +:10F48000AF8500082523001200A3F82B53E0015993 +:10F490008F850004348D010095AC00202402001AF1 +:10F4A00030E44000318BFFFFA102000B108001927D +:10F4B0002563FFFE00A3502B154001908F8F0004A1 +:10F4C000A50300148F88000435050001AF850004F2 +:10F4D0003C08800035190180A729000EA729001AD1 +:10F4E0008F89000C30B18000A7270010AF290028B9 +:10F4F000A72600081220000E3C04800035020100FF +:10F50000944C0016318BFFFC256400040088182100 +:10F510008C7F400033E6FFFF14C000053C048000F0 +:10F520003C0AFFFF354D7FFF00AD2824AF85000466 +:10F53000240EBFFF00AE402434850180A4A800261D +:10F54000ACA7002C3C071000AC8701B800001821C4 +:10F550008FBF001C8FB200188FB100148FB0001045 +:10F560000060102103E0000827BD00203C020BFFD3 +:10F5700000E41824345FFFFF03E3C82B5320FF7B14 +:10F58000241100013C0608008CC6002C24C5000193 +:10F590003C010800AC25002C0A0010D42411000501 +:10F5A0008F85002410A0002FAF80001090A30000D2 +:10F5B000146000792419000310A0002A30E601002D +:10F5C00010C000CC8F860010241F000210DF00C97D +:10F5D0008F8B000C3C0708008CE7003824E4FFFF09 +:10F5E00014E0000201641824000018213C0D0800FA +:10F5F00025AD0038006D1021904C00048F85002847 +:10F6000025830004000321C030A5FFFF3626000239 +:10F610000E000FDB000000000A00114D0000182151 +:10F6200000E8302414C0FF403C0F80000E00103D65 +:10F63000000000008F8700000A0010CAAF82000C93 +:10F64000938F00103C18080127189640000F90C0B7 +:10F6500002588021AF9000248F85002414A0FFD38E +:10F66000AF8F00103C0480008C86400030C5010044 +:10F6700010A000BC322300043C0C08008D8C002438 +:10F6800024120004106000C23190000D3C04800080 +:10F690008C8D40003402FFFF11A201003231FFFBCC +:10F6A0008C884000310A01005540000124110010EF +:10F6B00030EE080011C000BE2419FFFB8F9800280F +:10F6C0002F0F03EF51E000010219802430E90100FF +:10F6D00011200014320800018F87002C14E000FB79 +:10F6E0008F8C000C3C05800034AB0100917F00132F +:10F6F00033E300FF246A00042403FFFE0203802496 +:10F70000000A21C012000002023230253226FFFF1B +:10F710000E000FDB9785002A1200FF290000182138 +:10F72000320800011100000D32180004240E0001FF +:10F73000120E0002023230253226FFFF9785002A82 +:10F740000E000FDB00002021240FFFFE020F80249B +:10F750001200FF1B00001821321800045300FF188C +:10F760002403000102323025241200045612000145 +:10F770003226FFFF9785002A0E000FDB24040100CC +:10F780002419FFFB021988241220FF0D0000182104 +:10F790000A0010E9240300011079009C00003021C8 +:10F7A00090AD00012402000211A200BE30EA004028 +:10F7B00090B90001241800011338007F30E900409F +:10F7C0008CA600049785002A00C020210E000FDBC4 +:10F7D0003626000200004021010018218FBF001CC6 +:10F7E0008FB200188FB100148FB00010006010218C +:10F7F00003E0000827BD0020360F010095EE000C45 +:10F8000031CD020015A0FEE63C0900013C1880083D +:10F81000971200489789002A362600023248FFFFD7 +:10F82000AF8800083C0380008C7101B80620FFFE01 +:10F83000346A0180AD4000001100008E3C0F800052 +:10F84000253F0012011FC82B1320008B240E00033C +:10F85000346C0100958B00202402001A30E4400033 +:10F860003163FFFFA142000B108000A72463FFFE5D +:10F870000103682B15A000A52408FFFE34A5000194 +:10F88000A5430014AF8500043C0480002412BFFF90 +:10F8900000B2802434850180A4A9000EA4A9001A16 +:10F8A000A4A60008A4B00026A4A700103C071000DE +:10F8B000AC8701B80A00114D000018213C038000FC +:10F8C00034640100949F000E3C1908008F3900D861 +:10F8D0002404008033E5FFFF273100013C010800CC +:10F8E000AC3100D80E000FDB240600030A00114DD6 +:10F8F00000001821240A000210CA00598F85002830 +:10F900003C0308008C6300D0240E0001106E005EE2 +:10F910002CCF000C24D2FFFC2E5000041600002136 +:10F9200000002021241800021078001B2CD9000CA4 +:10F9300024DFFFF82FE900041520FF330000202109 +:10F9400030EB020051600004000621C054C00022C8 +:10F9500030A5FFFF000621C030A5FFFF0A00117D82 +:10F96000362600023C0908008D29002431300001B0 +:10F970005200FEF7000018219785002A3626000263 +:10F980000E000FDB000020210A00114D000018219D +:10F990000A00119C241200021320FFE624DFFFF866 +:10F9A0000000202130A5FFFF0A00117D362600024D +:10F9B0000A0011AC021980245120FF828CA6000499 +:10F9C0003C05080190A5964110A0FF7E2408000187 +:10F9D0000A0011F0010018210E000FDB3226000191 +:10F9E0008F8600108F8500280A00124F000621C064 +:10F9F0008F8500043C18800024120003371001801A +:10FA0000A212000B0A00112E3C08800090A30001F6 +:10FA1000241100011071FF70240800012409000264 +:10FA20005069000430E60040240800010A0011F08B +:10FA30000100182150C0FFFD240800013C0C80008B +:10FA4000358B01009563001094A40002307FFFFF06 +:10FA5000509FFF62010018210A001284240800014F +:10FA60002CA803EF1100FE56240300010A001239EE +:10FA700000000000240E000335EA0180A14E000BB7 +:10FA80000A00121C3C04800011E0FFA2000621C005 +:10FA900030A5FFFF0A00117D362600020A0011A5DD +:10FAA000241100201140FFC63C1280003650010096 +:10FAB000960F001094AE000231E80FFF15C8FFC08A +:10FAC000000000000A0011E690B900013C060800A1 +:10FAD0008CC6003824C4FFFF14C00002018418241F +:10FAE000000018213C0D080025AD0038006D1021E4 +:10FAF0000A0011B6904300048F8F0004240EFFFE0D +:10FB00000A00112C01EE28242408FFFE0A00121A14 +:10FB100000A8282427BDFFC8AFB00010AFBF003435 +:10FB20003C10600CAFBE0030AFB7002CAFB6002861 +:10FB3000AFB50024AFB40020AFB3001CAFB20018C3 +:10FB4000AFB100148E0E5000240FFF7F3C068000E2 +:10FB500001CF682435AC380C240B0003AE0C5000E8 +:10FB6000ACCB00083C010800AC2000200E001819A6 +:10FB7000000000003C0A0010354980513C06601628 +:10FB8000AE09537C8CC700003C0860148D0500A0B2 +:10FB90003C03FFFF00E320243C02535300051FC237 +:10FBA0001482000634C57C000003A08002869821E0 +:10FBB0008E7200043C116000025128218CBF007C31 +:10FBC0008CA200783C1E600037C420203C05080150 +:10FBD00024A59288AF820018AF9F001C0E0016DD8E +:10FBE0002406000A3C190001273996403C01080010 +:10FBF000AC3931DC0E0020DDAF8000148FD708084F +:10FC00002418FFF03C15570902F8B02412D502F56C +:10FC100024040001AF80002C3C1480003697018042 +:10FC20003C1E080127DE9644369301008E900000AA +:10FC30003205000310A0FFFD3207000110E000882C +:10FC4000320600028E7100283C048000AE91002034 +:10FC50008E6500048E66000000A0382100C040219F +:10FC60008C8301B80460FFFE3C0B0010240A0800DE +:10FC700000AB4824AC8A01B8552000E0240BBFFF3C +:10FC80009675000E3C1208008E52002030AC4000E9 +:10FC900032AFFFFF264E000125ED00043C010800B5 +:10FCA000AC2E0020118000E8AF8D00283C18002009 +:10FCB00000B8B02412C000E530B980002408BFFFAE +:10FCC00000A8382434C81000AF87000030E62000B8 +:10FCD00010C000E92409FFBF3C03000400E328240E +:10FCE00010A00002010910243502004030EA010092 +:10FCF00011400010AF8200048F8B002C11600007B0 +:10FD00003C0D002000ED6024118000043C0F000435 +:10FD100000EF702411C00239000000009668001E38 +:10FD20009678001C3115FFFF0018B40002B690252C +:10FD3000AF92000C30F910001320001324150001BD +:10FD400030FF002017E0000A3C04100000E41024FB +:10FD50001040000D3C0A0C003C090BFF00EA18247F +:10FD60003525FFFF00A3302B10C0000830ED010047 +:10FD70003C0C08008D8C002C24150005258B0001FF +:10FD80003C010800AC2B002C30ED010015A0000B4D +:10FD90003C0500018F85000430AE400055C00007CF +:10FDA0003C0500013C161F0100F690243C0F10009A +:10FDB000124F01CE000000003C05000100E5302498 +:10FDC00010C000AF3C0C10003C1F08008FFF002447 +:10FDD00033E90002152000712403000100601021A6 +:10FDE000104000083C0680003C08800035180100E7 +:10FDF0008F0F00243C056020ACAF00140000000011 +:10FE00003C0680003C194000ACD9013800000000DD +:10FE10005220001332060002262B0140262C0080BF +:10FE2000240EFF80016E2024018E6824000D1940ED +:10FE3000318A007F0004A9403172007F3C16200007 +:10FE400036C20002006A482502B2382500E2882541 +:10FE50000122F825ACDF0830ACD1083032060002B0 +:10FE600010C0FF723C188000370501408CA80000CC +:10FE700024100040AF08002090AF000831E300706C +:10FE8000107000D428790041532000082405006038 +:10FE9000241100201071000E3C0A40003C09800033 +:10FEA000AD2A01780A001304000000001465FFFB6E +:10FEB0003C0A40000E001FFA000000003C0A40000F +:10FEC0003C098000AD2A01780A00130400000000FC +:10FED00090A90009241F00048CA70000312800FF0E +:10FEE000111F01B22503FFFA2C7200061240001404 +:10FEF0003C0680008CA9000494A4000A310500FF90 +:10FF000000095E022D6A00083086FFFF15400002DE +:10FF10002567000424070003240C000910AC01FA33 +:10FF200028AD000A11A001DE2410000A240E0008EA +:10FF300010AE0028000731C000C038213C06800008 +:10FF40008CD501B806A0FFFE34D20180AE47000078 +:10FF500034CB0140916E0008240300023C0A4000AB +:10FF600031C400FF00046A0001A86025A64C000807 +:10FF7000A243000B9562000A3C0810003C09800077 +:10FF8000A64200108D670004AE470024ACC801B83B +:10FF9000AD2A01780A001304000000003C0A80002A +:10FFA000354401009483000E3C0208008C4200D8C6 +:10FFB000240400803065FFFF245500013C01080047 +:10FFC000AC3500D80E000FDB240600030A001370C6 +:10FFD000000018210009320230D900FF2418000166 +:10FFE0001738FFD5000731C08F910020262200016D +:10FFF000AF8200200A0013C800C0382100CB2024A3 +:020000021000EC +:10000000AF85000010800008AF860004240D87FF34 +:1000100000CD6024158000083C0E006000AE302446 +:1000200010C00005000000000E000D42000000009E +:100030000A001371000000000E0016050000000009 +:100040000A0013710000000030B980005320FF1F28 +:10005000AF8500003C02002000A2F82453E0FF1B03 +:10006000AF8500003C07FFFF34E47FFF00A4382485 +:100070000A00132B34C880000A001334010910242D +:1000800000EC58245160005AAF8000248F8D002C62 +:100090003C0E0F0000EE182415A00075AF83001071 +:1000A00030EF010011E00073939800103C12020041 +:1000B000107200703C06800034D9010093280013B0 +:1000C0009789002A36A60002311800FF271600047F +:1000D000001619C03C0480008C8501B804A0FFFE06 +:1000E00034880180AD0300003C158008AC830020FB +:1000F00096BF004833E5FFFF10A001BCAF850008A4 +:100100002523001200A3102B504001B98F85000455 +:10011000348D010095AC0020240B001A30E440001F +:10012000318AFFFFA10B000B108001BA2543FFFEAF +:1001300000A3702B15C001B88F9600048F8F0004A8 +:10014000A503001435E50001AF8500043C088000DC +:1001500035150180A6A9000EA6A9001A8F89000CEA +:1001600030BF8000A6A70010AEA90028A6A60008F0 +:1001700013E0000F3C0F8000350C0100958B00163A +:10018000316AFFFC25440004008818218C6240007D +:100190003046FFFF14C000072416BFFF3C0EFFFFD0 +:1001A00035CD7FFF00AD2824AF8500043C0F8000D3 +:1001B0002416BFFF00B6902435E50180A4B20026C6 +:1001C000ACA7002C3C071000ADE701B80A00137083 +:1001D000000018210E00165D000000003C0A4000DF +:1001E0003C098000AD2A01780A00130400000000D9 +:1001F0008F85002410A00027AF80001090A300007E +:10020000106000742409000310690101000030210E +:1002100090AE0001240D000211CD014230EF0040EC +:1002200090A90001241F0001113F000930E20040A5 +:100230008CA600049785002A00C020210E000FDB49 +:1002400036A60002000040210A00137001001821A8 +:100250005040FFF88CA600043C07080190E7964147 +:1002600010E0FFF4240800010A00137001001821B7 +:10027000939800103C1F080127FF96400018C8C043 +:10028000033F4021AF8800248F85002414A0FFDBAA +:10029000AF9800103C0480008C86400030C50100FF +:1002A00010A0008732AB00043C0C08008D8C0024A9 +:1002B00024160004156000033192000D241600027C +:1002C0003C0480008C8E4000340DFFFF11CD0113E3 +:1002D00032B5FFFB8C984000330F010055E0000160 +:1002E0002415001030E80800110000382409FFFB35 +:1002F0008F9F00282FF903EF53200001024990241B +:1003000030E2010010400014325F00018F87002CA2 +:1003100014E0010E8F8C000C3C0480003486010038 +:1003200090C5001330AA00FF25430004000321C03C +:100330002419FFFE025990241240000202B6302513 +:1003400032A6FFFF0E000FDB9785002A1240FEA3A6 +:1003500000001821325F000113E0000D3247000455 +:10036000240900011249000202B6302532A6FFFF1F +:100370009785002A0E000FDB000020212402FFFEDB +:10038000024290241240FE950000182132470004DA +:1003900050E0FE922403000102B63025241600042A +:1003A0005656000132A6FFFF9785002A0E000FDB8C +:1003B000240401002403FFFB0243A82412A0FE87AB +:1003C000000018210A001370240300010A0014B968 +:1003D0000249902410A0FFAF30E5010010A00017E3 +:1003E0008F8600102403000210C300148F84000CB9 +:1003F0003C0608008CC6003824CAFFFF14C0000267 +:10040000008A1024000010213C0E080025CE003880 +:10041000004E682191AC00048F850028258B0004D4 +:10042000000B21C030A5FFFF36A600020E000FDB37 +:10043000000000000A00137000001821240F0002C1 +:1004400010CF0088241600013C0308008C6300D004 +:100450001076008D8F85002824D9FFFC2F280004FA +:100460001500006300002021241F0002107F005DA2 +:100470002CC9000C24C3FFF82C6200041440FFE9CF +:100480000000202130EA020051400004000621C093 +:1004900054C0000530A5FFFF000621C030A5FFFFB6 +:1004A0000A00150436A600020E000FDB32A600017A +:1004B0008F8600108F8500280A001520000621C0B5 +:1004C0003C0A08008D4A0024315200015240FE438C +:1004D000000018219785002A36A600020E000FDBC7 +:1004E000000020210A001370000018219668000CFB +:1004F000311802005700FE313C0500013C1F800806 +:1005000097F900489789002A36A600023328FFFF92 +:10051000AF8800083C0380008C7501B806A0FFFE80 +:100520003C04800034820180AC400000110000B621 +:1005300024180003252A0012010A182B106000B2AB +:1005400000000000966F00203C0E8000240D001A71 +:1005500031ECFFFF35CA018030EB4000A14D000BAC +:10056000116000B02583FFFE0103902B164000AE02 +:100570002416FFFE34A50001A5430014AF85000436 +:100580002419BFFF00B94024A6E9000EA6E9001A0D +:10059000A6E60008A6E80026A6E700103C07100023 +:1005A000AE8701B80A001370000018213C048000D7 +:1005B0008C8201B80440FFFE349601802415001C93 +:1005C000AEC70000A2D5000B3C071000AC8701B8F5 +:1005D0003C0A40003C098000AD2A01780A0013045F +:1005E000000000005120FFA424C3FFF800002021D8 +:1005F00030A5FFFF0A00150436A600020E00103DCC +:10060000000000008F8700000A001346AF82000C34 +:1006100090A30001241500011075FF0B24080001B0 +:10062000240600021066000430E2004024080001A5 +:100630000A001370010018215040FFFD240800013A +:100640003C0C8000358B0100956A001094A40002D8 +:100650003143FFFF5083FDE1010018210A00158599 +:10066000240800018F8500282CB203EF1240FDDB27 +:10067000240300013C0308008C6300D02416000111 +:100680001476FF7624D9FFFC2CD8000C1300FF72DF +:10069000000621C030A5FFFF0A00150436A600029F +:1006A00010B00037240F000B14AFFE23000731C039 +:1006B000312600FF00065600000A4E0305220047BF +:1006C00030C6007F0006F8C03C16080126D69640CA +:1006D00003F68021A2000001A20000003C0F600090 +:1006E0008DF918202405000100C588040011302769 +:1006F0000326C024000731C000C03821ADF81820FF +:100700000A0013C8A60000028F850020000731C030 +:1007100024A2FFFF0A0013F6AF8200200A0014B2E1 +:100720002415002011E0FECC3C1980003728010080 +:100730009518001094B6000233120FFF16D2FEC6B1 +:10074000000000000A00148290A900013C0B080080 +:100750008D6B0038256DFFFF15600002018D1024A0 +:10076000000010213C080800250800380048C0217E +:10077000930F000425EE00040A0014C5000E21C0EA +:1007800000065202241F00FF115FFDEB000731C07D +:10079000000A20C03C0E080125CE9640008EA821FC +:1007A000009E602100095C02240D00013C076000EE +:1007B000A2AD0000AD860000A2AB00018CF21820B3 +:1007C00024030001014310040242B025ACF61820B6 +:1007D00000C038210A0013C8A6A900020A0015AA01 +:1007E000AF8000200A0012FFAF84002C8F85000428 +:1007F0003C1980002408000337380180A308000B4F +:100800000A00144D3C088000A2F8000B0A00155A9B +:100810002419BFFF8F9600042412FFFE0A00144B18 +:1008200002D228242416FFFE0A00155800B62824F8 +:100830003C038000346401008C85000030A2003E3F +:100840001440000800000000AC6000488C870000E5 +:1008500030E607C010C0000500000000AC60004C8E +:10086000AC60005003E0000824020001AC600054BA +:10087000AC6000408C880000310438001080FFF923 +:10088000000000002402000103E00008AC60004406 +:100890003C0380008C6201B80440FFFE3467018095 +:1008A000ACE4000024080001ACE00004A4E500086A +:1008B00024050002A0E8000A34640140A0E5000B12 +:1008C0009483000A14C00008A4E30010ACE00024E4 +:1008D0003C07800034E901803C041000AD20002872 +:1008E00003E00008ACE401B88C8600043C0410006E +:1008F000ACE600243C07800034E90180AD200028EC +:1009000003E00008ACE401B83C0680008CC201B8EA +:100910000440FFFE34C7018024090002ACE400005B +:10092000ACE40004A4E50008A0E9000A34C50140D5 +:10093000A0E9000B94A8000A3C041000A4E80010F1 +:10094000ACE000248CA30004ACE3002803E0000822 +:10095000ACC401B83C039000346200010082202541 +:100960003C038000AC6400208C65002004A0FFFEE6 +:100970000000000003E00008000000003C028000CE +:10098000344300010083202503E00008AC4400202C +:1009900027BDFFE03C098000AFBF0018AFB10014D5 +:1009A000AFB00010352801408D10000091040009FF +:1009B0009107000891050008308400FF30E600FF31 +:1009C00000061A002C820081008330251040002A86 +:1009D00030A50080000460803C0D080125AD92B078 +:1009E000018D58218D6A00000140000800000000C0 +:1009F0003C038000346201409445000A14A0001EAC +:100A00008F91FCC09227000530E6000414C0001A44 +:100A1000000000000E00164E02002021922A000560 +:100A200002002021354900040E001658A2290005B5 +:100A30009228000531040004148000020000000028 +:100A40000000000D922D0000240B002031AC00FFAF +:100A5000158B00093C0580008CAE01B805C0FFFE77 +:100A600034B10180AE3000003C0F100024100005AE +:100A7000A230000BACAF01B80000000D8FBF001812 +:100A80008FB100148FB0001003E0000827BD0020D4 +:100A90000200202100C028218FBF00188FB1001450 +:100AA0008FB00010240600010A00161D27BD00208B +:100AB0000000000D0200202100C028218FBF001877 +:100AC0008FB100148FB00010000030210A00161DF5 +:100AD00027BD002014A0FFE8000000000200202134 +:100AE0008FBF00188FB100148FB0001000C02821F4 +:100AF0000A00163B27BD00203C0780008CEE01B8A1 +:100B000005C0FFFE34F00180241F0002A21F000B6D +:100B100034F80140A60600089719000A3C0F10009F +:100B2000A61900108F110004A6110012ACEF01B835 +:100B30000A0016998FBF001827BDFFE8AFBF00104D +:100B40000E000FD4000000003C0280008FBF001098 +:100B500000002021AC4001800A00108F27BD001842 +:100B60003084FFFF30A5FFFF108000070000182130 +:100B7000308200011040000200042042006518216C +:100B80001480FFFB0005284003E0000800601021EE +:100B900010C00007000000008CA2000024C6FFFF68 +:100BA00024A50004AC82000014C0FFFB24840004D0 +:100BB00003E000080000000010A0000824A3FFFFCD +:100BC000AC86000000000000000000002402FFFFCF +:100BD0002463FFFF1462FFFA2484000403E000088A +:100BE000000000003C03800027BDFFF83462018054 +:100BF000AFA20000308C00FF30AD00FF30CE00FF10 +:100C00003C0B80008D6401B80480FFFE00000000F2 +:100C10008FA900008D6801288FAA00008FA700000F +:100C20008FA400002405000124020002A085000A10 +:100C30008FA30000359940003C051000A062000B16 +:100C40008FB800008FAC00008FA600008FAF0000AF +:100C500027BD0008AD280000AD400004AD80002491 +:100C6000ACC00028A4F90008A70D0010A5EE0012E2 +:100C700003E00008AD6501B83C06800827BDFFE829 +:100C800034C50080AFBF001090A7000924020012F5 +:100C900030E300FF1062000B008030218CA8005070 +:100CA00000882023048000088FBF00108CAA003425 +:100CB000240400390000282100CA4823052000052B +:100CC000240600128FBF00102402000103E0000878 +:100CD00027BD00180E0016F2000000008FBF0010A4 +:100CE0002402000103E0000827BD001827BDFFC84B +:100CF000AFB20030AFB00028AFBF0034AFB1002CAE +:100D000000A0802190A5000D30A6001010C000109A +:100D1000008090213C0280088C4400048E0300086F +:100D20001064000C30A7000530A6000510C0009329 +:100D3000240400018FBF00348FB200308FB1002C2B +:100D40008FB000280080102103E0000827BD003884 +:100D500030A7000510E0000F30AB001210C00006F5 +:100D6000240400013C0980088E0800088D25000439 +:100D70005105009C240400388FBF00348FB200302E +:100D80008FB1002C8FB000280080102103E00008F4 +:100D900027BD0038240A0012156AFFE6240400016A +:100DA0000200202127A500100E000CB6AFA00010F5 +:100DB0001440007C3C19800837240080909800087B +:100DC000331100081220000A8FA7001030FF010025 +:100DD00013E000A48FA300148C8600580066102333 +:100DE000044000043C0A8008AC8300588FA7001020 +:100DF0003C0A800835480080910900083124000829 +:100E00001480000224080003000040213C1F8008D9 +:100E100093F1001193F9001237E600808CCC005456 +:100E2000333800FF03087821322D00FF000F708057 +:100E300001AE282100AC582B1160006F00000000AB +:100E400094CA005C8CC900543144FFFF0125102373 +:100E50000082182B14600068000000008CCB005446 +:100E60000165182330EC00041180006C000830800C +:100E70008FA8001C0068102B1040006230ED0004A9 +:100E8000006610232C46008010C00002004088211C +:100E9000241100800E00164E024020213C0D8008D7 +:100EA00035A6008024070001ACC7000C90C80008DC +:100EB0000011484035A70100310C007FA0CC00088C +:100EC0008E05000424AB0001ACCB0030A4D1005C43 +:100ED0008CCA003C9602000E01422021ACC40020C6 +:100EE0008CC3003C0069F821ACDF001C8E190004A3 +:100EF000ACF900008E180008ACF800048FB10010A7 +:100F0000322F000855E0004793A60020A0C0004EF5 +:100F100090D8004E2411FFDFA0F8000890CF000801 +:100F200001F17024A0CE00088E0500083C0B80085B +:100F300035690080AD2500388D6A00148D2200309F +:100F40002419005001422021AD24003491230000D7 +:100F5000307F00FF13F90036264F01000E001658AF +:100F60000240202124040038000028210E0016F23F +:100F70002406000A0A001757240400010E000D2859 +:100F8000000020218FBF00348FB200308FB1002CC1 +:100F90008FB00028004020210080102103E00008CD +:100FA00027BD00388E0E00083C0F800835F0008009 +:100FB000AE0E005402402021AE0000300E00164E4E +:100FC00000000000920D00250240202135AC0020D9 +:100FD0000E001658A20C00250E000CAC0240202179 +:100FE000240400382405008D0E0016F22406001299 +:100FF0000A0017572404000194C5005C0A001792E8 +:1010000030A3FFFF2407021811A0FF9E00E6102363 +:101010008FAE001C0A00179A01C610230A0017970A +:101020002C620218A0E600080A0017C48E0500080A +:101030002406FF8001E6C0243C118000AE38002861 +:101040008E0D000831E7007F3C0E800C00EE602121 +:10105000AD8D00E08E080008AF8C00380A0017D074 +:10106000AD8800E4AC800058908500082403FFF7A9 +:1010700000A33824A08700080A0017758FA7001066 +:101080003C05080024A560A83C04080024846FF4F3 +:101090003C020800244260B0240300063C01080121 +:1010A000AC2596C03C010801AC2496C43C01080163 +:1010B000AC2296C83C010801A02396CC03E00008AE +:1010C0000000000003E00008240200013C02800050 +:1010D000308800FF344701803C0680008CC301B893 +:1010E0000460FFFE000000008CC501282418FF806A +:1010F0003C0D800A24AF010001F8702431EC007F20 +:10110000ACCE0024018D2021ACE50000948B00EAD8 +:101110003509600024080002316AFFFFACEA0004D0 +:1011200024020001A4E90008A0E8000BACE00024C0 +:101130003C071000ACC701B8AF84003803E00008DA +:10114000AF85006C938800488F8900608F820038DB +:1011500030C600FF0109382330E900FF01221821C1 +:1011600030A500FF2468008810C000020124382147 +:101170000080382130E400031480000330AA00030B +:101180001140000D312B000310A0000900001021B8 +:1011900090ED0000244E000131C200FF0045602B9D +:1011A000A10D000024E700011580FFF925080001CA +:1011B00003E00008000000001560FFF300000000DD +:1011C00010A0FFFB000010218CF80000245900043F +:1011D000332200FF0045782BAD18000024E70004FF +:1011E00015E0FFF92508000403E0000800000000F6 +:1011F00093850048938800588F8700600004320070 +:101200003103007F00E5102B30C47F001040000F39 +:10121000006428258F8400383C0980008C8A00EC0B +:10122000AD2A00A43C03800000A35825AC6B00A0AD +:101230008C6C00A00580FFFE000000008C6D00ACEF +:10124000AC8D00EC03E000088C6200A80A00188254 +:101250008F840038938800593C0280000080502120 +:10126000310300FEA383005930ABFFFF30CC00FFF9 +:1012700030E7FFFF344801803C0980008D2401B82D +:101280000480FFFE8F8D006C24180016AD0D000049 +:101290008D2201248F8D0038AD0200048D5900206D +:1012A000A5070008240201C4A119000AA118000B17 +:1012B000952F01208D4E00088D4700049783005C18 +:1012C0008D59002401CF302100C7282100A32023FD +:1012D0002418FFFFA504000CA50B000EA5020010AA +:1012E000A50C0012AD190018AD18002495AF00E848 +:1012F0003C0B10002407FFF731EEFFFFAD0E002876 +:101300008DAC0084AD0C002CAD2B01B88D460020B7 +:1013100000C7282403E00008AD4500208F8800386E +:101320000080582130E7FFFF910900D63C02800081 +:1013300030A5FFFF312400FF00041A00006750258C +:1013400030C600FF344701803C0980008D2C01B875 +:101350000580FFFE8F82006C240F0017ACE20000B6 +:101360008D390124ACF900048D780020A4EA00082E +:10137000241901C4A0F8000AA0EF000B9523012056 +:101380008D6E00088D6D00049784005C01C35021B0 +:10139000014D602101841023A4E2000CA4E5000E9D +:1013A000A4F90010A4E60012ACE000148D7800242B +:1013B000240DFFFFACF800188D0F007CACEF001C73 +:1013C0008D0E00783C0F1000ACEE0020ACED002438 +:1013D000950A00BE240DFFF73146FFFFACE600285A +:1013E000950C00809504008231837FFF0003CA00C2 +:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2 +:10140000950E00828D6A002000AE3021014D282407 +:10141000A506008203E00008AD6500203C028000C4 +:10142000344501803C0480008C8301B80460FFFED9 +:101430008F8A0044240600199549001C3128FFFFBB +:10144000000839C0ACA70000A0A6000B3C051000A6 +:1014500003E00008AC8501B88F87004C0080402174 +:1014600030C400FF3C0680008CC201B80440FFFE7F +:101470008F89006C9383006834996000ACA90000E8 +:10148000A0A300058CE20010240F00022403FFF744 +:10149000A4A20006A4B900088D180020A0B8000A74 +:1014A000A0AF000B8CEE0000ACAE00108CED000481 +:1014B000ACAD00148CEC001CACAC00248CEB002018 +:1014C000ACAB00288CEA002C3C071000ACAA002C26 +:1014D0008D090024ACA90018ACC701B88D05002007 +:1014E00000A3202403E00008AD0400208F8600380C +:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0 +:1015000090C300D430A500FF3062002010400008D6 +:10151000008088218CCB00D02409FFDF256A0001E0 +:10152000ACCA00D090C800D401093824A0C700D4A8 +:1015300014A000403C0C80008F840038908700D4B9 +:101540002418FFBF2406FFEF30E3007FA08300D400 +:10155000979F005C8F8200608F8D003803E2C82364 +:10156000A799005CA5A000BC91AF00D401F870243D +:10157000A1AE00D48F8C0038A18000D78F8A0038AC +:10158000A5400082AD4000EC914500D400A658244F +:10159000A14B00D48F9000348F8400609786005C4C +:1015A0000204282110C0000FAF850034A38000582A +:1015B0003C0780008E2C000894ED01208E2B000447 +:1015C000018D5021014B8021020620233086FFFF30 +:1015D00030C8000F3909000131310001162000091F +:1015E000A3880058938600488FBF00188FB100145D +:1015F0008FB0001027BD0020AF85006403E0000815 +:10160000AF86006000C870238FBF00189386004823 +:101610008FB100148FB0001034EF0C00010F28219F +:1016200027BD0020ACEE0084AF85006403E0000815 +:10163000AF86006035900180020028210E00190F4E +:10164000240600828F840038908600D430C5004084 +:1016500050A0FFBAA38000688F85004C3C06800034 +:101660008CCD01B805A0FFFE8F89006C2408608234 +:1016700024070002AE090000A6080008A207000B1C +:101680008CA300083C0E1000AE0300108CA2000CCE +:10169000AE0200148CBF0014AE1F00188CB90018E5 +:1016A000AE1900248CB80024AE1800288CAF002896 +:1016B000AE0F002CACCE01B80A001948A380006818 +:1016C0008F8A003827BDFFE0AFB10014AFB0001023 +:1016D0008F880060AFBF00189389003C954200BC22 +:1016E00030D100FF0109182B0080802130AC00FFB1 +:1016F0003047FFFF0000582114600003310600FF4F +:1017000001203021010958239783005C0068202BB9 +:101710001480002700000000106800562419000102 +:101720001199006334E708803165FFFF0E0018C08F +:10173000020020218F83006C3C07800034E601808A +:101740003C0580008CAB01B80560FFFE240A001840 +:101750008F840038ACC30000A0CA000B948900BE7F +:101760003C081000A4C90010ACC00030ACA801B8FF +:101770009482008024430001A4830080949F008011 +:101780003C0608008CC6318833EC7FFF1186005E72 +:101790000000000002002021022028218FBF001835 +:1017A0008FB100148FB000100A00193427BD00203B +:1017B000914400D42403FF8000838825A15100D4E4 +:1017C0009784005C3088FFFF51000023938C003C1D +:1017D0008F8500382402EFFF008B782394AE00BC85 +:1017E0000168502B31E900FF01C26824A4AD00BCA0 +:1017F00051400039010058213C1F800037E60100AC +:101800008CD800043C190001031940245500000144 +:1018100034E740008E0A00202403FFFB241100015E +:1018200001432024AE0400201191002D34E78000F4 +:1018300002002021012030210E0018C03165FFFF79 +:101840009787005C8F890060A780005C0127802358 +:10185000AF900060938C003C8F8B00388FBF0018D6 +:101860008FB100148FB0001027BD002003E00008E6 +:10187000A16C00D73C0D800035AA01008D48000402 +:101880003C0900010109282454A0000134E740006C +:101890008E0F00202418FFFB34E7800001F870242D +:1018A00024190001AE0E00201599FF9F34E708802F +:1018B000020020210E00188E3165FFFF020020215A +:1018C000022028218FBF00188FB100148FB00010A4 +:1018D0000A00193427BD00200A0019F7000048212A +:1018E00002002021012030210E00188E3165FFFFFB +:1018F0009787005C8F890060A780005C01278023A8 +:101900000A001A0EAF900060948C0080241F8000A3 +:10191000019F3024A4860080908B0080908F0080EF +:10192000316700FF0007C9C20019C027001871C045 +:1019300031ED007F01AE2825A08500800A0019DF67 +:1019400002002021938500682403000127BDFFE8E1 +:1019500000A330042CA20020AFB00010AFBF0014D1 +:1019600000C01821104000132410FFFE3C0708009F +:101970008CE7319000E610243C088000350501809A +:1019800014400005240600848F890038240A0004CE +:101990002410FFFFA12A00FC0E00190F0000000018 +:1019A000020010218FBF00148FB0001003E0000868 +:1019B00027BD00183C0608008CC631940A001A574F +:1019C00000C310248F87004427BDFFE0AFB200188A +:1019D000AFB10014AFB00010AFBF001C30D000FF9B +:1019E00090E6000D00A088210080902130C5007F86 +:1019F000A0E5000D8F8500388E2300188CA200D042 +:101A00001062002E240A000E0E001A4AA38A0068F3 +:101A10002409FFFF104900222404FFFF5200002088 +:101A2000000020218E2600003C0C001000CC582421 +:101A3000156000393C0E000800CE682455A0003F18 +:101A4000024020213C18000200D880241200001F10 +:101A50003C0A00048F8700448CE200148CE30010E1 +:101A60008CE500140043F82303E5C82B1320000580 +:101A7000024020218E24002C8CF1001010910031A6 +:101A80000240202124020012A38200680E001A4A9C +:101A90002412FFFF105200022404FFFF0000202147 +:101AA0008FBF001C8FB200188FB100148FB00010D0 +:101AB0000080102103E0000827BD002090A800D47A +:101AC000350400200A001A80A0A400D400CA4824CB +:101AD0001520000B8F8B00448F8D00448DAC0010BF +:101AE0001580000B024020218E2E002C51C0FFECEF +:101AF00000002021024020210A001A9B2402001726 +:101B00008D66001050C0FFE6000020210240202119 +:101B10000A001A9B24020011024020212402001511 +:101B20000E001A4AA3820068240FFFFF104FFFDC4B +:101B30002404FFFF0A001A8A8E2600000A001AC138 +:101B4000240200143C08000400C8382450E0FFD4EC +:101B500000002021024020210A001A9B24020013C9 +:101B60008F85003827BDFFD8AFB3001CAFB2001877 +:101B7000AFB10014AFB00010AFBF002090A700D4E9 +:101B80008F90004C2412FFFF34E2004092060000C8 +:101B9000A0A200D48E0300100080982110720006CD +:101BA00030D1003F2408000D0E001A4AA3880068B7 +:101BB000105200252404FFFF8F8A00388E09001878 +:101BC0008D4400D01124000702602021240C000E57 +:101BD0000E001A4AA38C0068240BFFFF104B001A5A +:101BE0002404FFFF24040020122400048F8D0038F9 +:101BF00091AF00D435EE0020A1AE00D48F85005403 +:101C000010A00019000000001224004A8F9800382C +:101C10008F92FCC0971000809651000A5230004805 +:101C20008F9300403C1F08008FFF318C03E5C82BC9 +:101C30001720001E02602021000028210E0019A993 +:101C400024060001000020218FBF00208FB3001C5C +:101C50008FB200188FB100148FB0001000801021D7 +:101C600003E0000827BD00285224002A8E05001436 +:101C70008F840038948A008025490001A48900805F +:101C8000948800803C0208008C42318831077FFF35 +:101C900010E2000E00000000026020210E00193446 +:101CA000240500010A001B0B000020212402002D46 +:101CB0000E001A4AA38200682403FFFF1443FFE1C9 +:101CC0002404FFFF0A001B0C8FBF002094990080A2 +:101CD000241F800024050001033FC024A498008035 +:101CE00090920080908E0080325100FF001181C2DE +:101CF00000107827000F69C031CC007F018D582576 +:101D0000A08B00800E001934026020210A001B0BFA +:101D1000000020212406FFFF54A6FFD68F84003840 +:101D2000026020210E001934240500010A001B0B5B +:101D300000002021026020210A001B252402000A45 +:101D40002404FFFD0A001B0BAF9300608F8800384E +:101D500027BDFFE8AFB00010AFBF0014910A00D458 +:101D60008F87004C00808021354900408CE60010B0 +:101D7000A10900D43C0208008C4231B030C53FFFBD +:101D800000A2182B106000078F850050240DFF80E3 +:101D900090AE000D01AE6024318B00FF156000088D +:101DA0000006C382020020212403000D8FBF00140F +:101DB0008FB0001027BD00180A001A4AA3830068DC +:101DC00033060003240F000254CFFFF70200202146 +:101DD00094A2001C8F85003824190023A4A200E8D7 +:101DE0008CE8000000081E02307F003F13F9003528 +:101DF0003C0A00838CE800188CA600D0110600086D +:101E0000000000002405000E0E001A4AA385006899 +:101E10002407FFFF104700182404FFFF8F850038B8 +:101E200090A900D435240020A0A400D48F8C0044B5 +:101E3000918E000D31CD007FA18D000D8F83005458 +:101E40001060001C020020218F8400508C9800102C +:101E50000303782B11E0000D241900180200202143 +:101E6000A39900680E001A4A2410FFFF10500002C8 +:101E70002404FFFF000020218FBF00148FB000104A +:101E80000080102103E0000827BD00188C86001098 +:101E90008F9F00440200202100C31023AFE20010F6 +:101EA000240500010E0019A9240600010A001B9751 +:101EB000000020210E001934240500010A001B97A0 +:101EC00000002021010A5824156AFFD98F8C004494 +:101ED000A0A600FC0A001B84A386005A30A500FFC0 +:101EE0002406000124A9000100C9102B1040000C99 +:101EF00000004021240A000100A61823308B0001B5 +:101F000024C60001006A3804000420421160000267 +:101F100000C9182B010740251460FFF800A61823FC +:101F200003E000080100102127BDFFD8AFB0001862 +:101F30008F90004CAFB1001CAFBF00202403FFFF07 +:101F40002411002FAFA30010920600002405000802 +:101F500026100001006620260E001BB0308400FF12 +:101F600000021E003C021EDC34466F410A001BD8F2 +:101F70000000102110A00009008018212445000154 +:101F800030A2FFFF2C4500080461FFFA0003204047 +:101F90000086202614A0FFF9008018210E001BB037 +:101FA000240500208FA300102629FFFF313100FFF8 +:101FB00000034202240700FF1627FFE20102182651 +:101FC00000035027AFAA0014AFAA00100000302170 +:101FD00027A8001027A7001400E6782391ED00033E +:101FE00024CE000100C8602131C600FF2CCB0004C4 +:101FF0001560FFF9A18D00008FA200108FBF002097 +:102000008FB1001C8FB0001803E0000827BD002826 +:1020100027BDFFD0AFB3001CAFB00010AFBF00288A +:10202000AFB50024AFB40020AFB20018AFB10014B8 +:102030003C0C80008D880128240FFF803C06800A1C +:1020400025100100250B0080020F68243205007F57 +:10205000016F7024AD8E009000A62821AD8D002464 +:1020600090A600FC3169007F3C0A8004012A1821F7 +:10207000A386005A9067007C00809821AF830030CF +:1020800030E20002AF88006CAF85003800A0182154 +:10209000144000022404003424040030A3840048C7 +:1020A0008C7200DC30D100FF24040004AF92006089 +:1020B00012240004A38000688E7400041680001EA1 +:1020C0003C0880009386005930C7000110E0000FE3 +:1020D0008F9300608CB000848CA800842404FF805F +:1020E000020410240002F940310A007F03EA482567 +:1020F0003C0C2000012C902530CD00FE3C038000DC +:10210000AC720830A38D00598F9300608FBF0028F8 +:102110008FB50024ACB300DC8FB400208FB3001C5B +:102120008FB200188FB100148FB00010240200018C +:1021300003E0000827BD00308E7F000895020120D3 +:102140008E67001003E2C8213326FFFF30D8000F4E +:1021500033150001AF87003416A00058A39800582B +:1021600035090C000309382100D81823AD03008479 +:10217000AF8700648E6A00043148FFFF1100007EC3 +:10218000A78A005C90AC00D42407FF8000EC3024C8 +:1021900030CB00FF1560004B9786005C938E005A91 +:1021A000240D000230D5FFFF11CD02A20000A021B6 +:1021B0008F85006002A5802B160000BC9388004824 +:1021C0003C11800096240120310400FF1485008812 +:1021D0008F8400648F9800343312000356400085CA +:1021E00030A500FF8F900064310C00FF24060034FE +:1021F00011860095AF90004C9204000414800118E1 +:102200008F8E0038A380003C8E0D00048DC800D84E +:102210003C0600FF34CCFFFF01AC30240106182B34 +:1022200014600120AF8600548F8700609798005C8F +:10223000AF8700400307402310C000C7A788005C99 +:102240008F91003030C3000300035823922A007C92 +:102250003171000302261021000A20823092000111 +:102260000012488000492821311FFFFF03E5C82BD9 +:10227000132001208F8800388F8500348F880064F8 +:102280001105025A3C0E3F018E0600003C0C250051 +:1022900000CE682411AC01638F84004C30E500FF50 +:1022A0000E00184A000030218F8800388F870060A8 +:1022B0008F8500340A001DB78F8600540A001C5613 +:1022C000AF87006490A400D400E48024320200FFB1 +:1022D000104000169386005990A6008890AE00D753 +:1022E00024A8008830D4003F2686FFE02CD10020AF +:1022F000A38E003C1220000CAF88004C240B000180 +:1023000000CB20043095001916A0012B3C0680005C +:1023100034CF0002008FC0241700022E3099002015 +:1023200017200234000000009386005930CB0001D2 +:102330001160000F9788005C8CBF00848CA900841A +:10234000240AFF8003EA6024000C19403132007F28 +:10235000007238253C0D200000EDC82530D800FE65 +:102360003C0F8000ADF90830A39800599788005CB5 +:102370001500FF84000000008E630020306200041E +:102380001040FF51938600592404FFFB0064802411 +:102390003C038000AE700020346601808C7301B86D +:1023A0000660FFFE8F98006C347501003C1400013C +:1023B000ACD800008C6B012424076085ACCB0004F2 +:1023C0008EAE000401D488245220000124076083CB +:1023D00024190002A4C700083C0F1000A0D9000B6C +:1023E0003C068000ACCF01B80A001C2B9386005934 +:1023F00030A500FF0E00184A240600018F88006CEB +:102400003C05800034A90900250201889388004812 +:10241000304A0007304B00783C0340802407FF809F +:102420000163C825014980210047F824310C00FFD1 +:1024300024060034ACBF0800AF90004CACB90810C3 +:102440005586FF6E920400048F8400388E11003090 +:10245000908E00D431CD001015A000108F83006045 +:102460002C6F000515E000E400000000909800D4F7 +:102470002465FFFC331200101640000830A400FF52 +:102480008F9F00648F99003413F90004388700018E +:1024900030E20001144001C8000000000E001BC320 +:1024A000000000000A001DF8000000008F84006496 +:1024B00030C500FF0E00184A24060001939800481A +:1024C000240B0034130B00A08F8500388F8600602A +:1024D0009783005C306EFFFF00CE8823AF910060D1 +:1024E000A780005C1280FF90028018212414FFFD59 +:1024F0005474FFA28E6300208E6A00042403FFBF81 +:102500002408FFEF0155F823AE7F000490AC00D4FF +:102510003189007FA0A900D48E7200208F8F0038EF +:10252000A780005C364D0002AE6D0020A5E000BC27 +:1025300091E500D400A3C824A1F900D48F950038F8 +:10254000AEA000EC92B800D403085824A2AB00D48B +:102550000A001CD78F8500388F910034AF8000604F +:1025600002275821AF8B0034000020212403FFFFF5 +:10257000108301B48F8500388E0C00103C0D0800CC +:102580008DAD31B09208000031843FFF008D802B6B +:1025900012000023310D003F3C1908008F3931A88B +:1025A0008F9F006C000479802408FF80033F202166 +:1025B000008FC821938500590328F8243C06008029 +:1025C0003C0F800034D80001001F91403331007F60 +:1025D0008F8600380251502535EE0940332B0078A4 +:1025E000333000073C0310003C02800C017890253A +:1025F000020E48210143C0250222382134AE0001D9 +:10260000ADFF0804AF890050ADF20814AF87004455 +:10261000ADFF0028ACD90084ADF80830A38E005976 +:102620009383005A24070003106700272407000142 +:102630001467FFAC8F8500382411002311B1008589 +:1026400000000000240E000B026020210E001A4A38 +:10265000A38E00680040A0210A001D328F8500383B +:1026600002602021240B000C0E001A4AA38B006884 +:10267000240AFFFF104AFFBD2404FFFF8F8E00389D +:10268000A380003C8E0D00048DC800D83C0600FFDE +:1026900034CCFFFF01AC30240106182B1060FEE2A1 +:1026A000AF86005402602021241200190E001A4A3D +:1026B000A3920068240FFFFF104FFFAC2404FFFF1C +:1026C0000A001C838F86005425A3FFE02C74002091 +:1026D0001280FFDD240E000B000328803C1108014E +:1026E000263194B400B148218D2D000001A00008CE +:1026F000000000008F85003400A710219385003C66 +:10270000AF82003402251821A383003C951F00BC32 +:102710000226282137F91000A51900BC5240FF926B +:10272000AF850060246A0004A38A003C950900BCC0 +:1027300024A40004AF84006035322000A51200BC40 +:102740000A001D54000020218F8600602CC800055F +:102750001500FF609783005C3065FFFF00C5C8234C +:102760002F2F000511E00003306400FF24CDFFFC93 +:1027700031A400FF8F8900648F920034113200046D +:10278000389F000133EC0001158001380000000083 +:102790008F840038908700D434E60010A08600D4DF +:1027A0008F8500388F8600609783005CACA000ECBA +:1027B0000A001D2F306EFFFF8CB500848CB400849E +:1027C0003C04100002A7302400068940328E007FAE +:1027D000022E8025020410253C08800024050001FB +:1027E00002602021240600010E0019A9AD02083064 +:1027F0000A001CC38F8500388C8200EC1222FE7EFA +:102800000260202124090005A38900680E001A4AED +:102810002411FFFF1451FE782404FFFF0A001D5508 +:102820002403FFFF8F8F004C8F8800388DF8000045 +:10283000AD1800888DE70010AD0700988F87006005 +:102840000A001DB78F8600542406FFFF118600057D +:10285000000000000E001B4C026020210A001D8FAA +:102860000040A0210E001AD1026020210A001D8F15 +:102870000040A0218F90004C3C0208008C4231B0F7 +:102880008E110010322C3FFF0182282B10A0000C6B +:10289000240BFF808F85005090A3000D01637024EE +:1028A00031CA00FF1140000702602021001143825D +:1028B000310600032418000110D8010600000000B2 +:1028C000026020212403000D0E001A4AA383006831 +:1028D000004020218F8500380A001D320080A02191 +:1028E0008F90004C3C0A08008D4A31B08F85005013 +:1028F0008E0400100000A0218CB1001430823FFF34 +:10290000004A602B8CB200205180FFEE0260202133 +:1029100090B8000D240BFF800178702431C300FFB4 +:102920005060FFE80260202100044382310600036A +:1029300014C0FFE40260202194BF001C8F9900386E +:102940008E060028A73F00E88CAF0010022F20233E +:1029500014C4013A026020218F83005400C368210F +:10296000022D382B14E00136240200188F8A00440F +:102970008F820030024390218D4B00100163702341 +:10298000AD4E0010AD5200208C4C00740192282BEB +:1029900014A0015F026020218F8400508E08002463 +:1029A0008C86002411060007026020212419001CD7 +:1029B0000E001A4AA3990068240FFFFF104FFFC5AD +:1029C0002404FFFF8F8400448C87002424FF00012F +:1029D000AC9F00241251012F8F8D00308DB10074F7 +:1029E0001232012C3C0B00808E0E000001CB5024D3 +:1029F00015400075000000008E0300142411FFFF35 +:102A0000107100073C0808003C0608008CC6319095 +:102A100000C8C0241300015202602021A380006876 +:102A20008E0300003C19000100792024108000135F +:102A30003C1F0080007FA02416800009020028218E +:102A4000026020212411001A0E001A4AA391006886 +:102A50002407FFFF1047FF9F2404FFFF02002821E7 +:102A6000026020210E001A6A240600012410FFFFD4 +:102A70001050FF982404FFFF241400018F8D0044A0 +:102A8000026020210280302195A900342405000134 +:102A9000253200010E0019A9A5B200340000202142 +:102AA0008F8500380A001D320080A0218F90004CD5 +:102AB0003C1408008E9431B08E07001030E53FFFC3 +:102AC00000B4C82B132000618F8600502412FF80B1 +:102AD00090C9000D0249682431A400FF5080005CB9 +:102AE000026020218F8C00541180000700078B8228 +:102AF0008F8500388F82FCC094BF0080944A000A02 +:102B0000515F00F78F8600403227000314E0006415 +:102B100000000000920E000211C000D8000000006A +:102B20008E0B0024156000D902602021920400035E +:102B300024190002308500FF14B90005308900FF18 +:102B40008F940054128000EA240D002C308900FF7D +:102B5000392C00102D8400012D3200010244302553 +:102B6000020028210E001A6A026020212410FFFFB3 +:102B7000105000BF8F8500388F830054106000D341 +:102B8000240500013C0A08008D4A318C0143F82BD2 +:102B900017E000B22402002D02602021000028214D +:102BA0000E0019A9240600018F85003800001821A5 +:102BB0000A001D320060A0210E0018750000000000 +:102BC0000A001DF800000000AC8000200A001E78FA +:102BD0008E03001400002821026020210E0019A994 +:102BE000240600010A001CC38F8500380A001DB7A7 +:102BF0008F8800388CAA00848CAC00843C031000C1 +:102C00000147F824001F91403189007F024968255F +:102C100001A32825ACC50830910700012405000157 +:102C2000026020210E0019A930E600010A001CC331 +:102C30008F850038938F00482403FFFD0A001D3460 +:102C4000AF8F00600A001D342403FFFF02602021C3 +:102C50002410000D0E001A4AA390006800401821AD +:102C60008F8500380A001D320060A0210E00187503 +:102C7000000000009783005C8F86006000402021E8 +:102C80003070FFFF00D010232C4A00051140FE11C8 +:102C90008F850038ACA400EC0A001D2F306EFFFFBA +:102CA00090CF000D31E300085460FFA192040003AF +:102CB00002602021240200100E001A4AA38200683C +:102CC0002403FFFF5443FF9A920400030A001F12DB +:102CD0008F85003890A4000D308F000811E000951A +:102CE0008F990054572000A6026020218E1F000CEF +:102CF0008CB4002057F40005026020218E0D0008DE +:102D00008CA7002411A7003A026020212402002091 +:102D1000A38200680E001A4A2412FFFF1052FEED33 +:102D20002404FFFF8F9F00442402FFF73C14800E11 +:102D300093EA000D2419FF803C03800001423824EF +:102D4000A3E7000D8F9F00303C0908008D2931ACAE +:102D50008F8C006C97F200788F870044012C302113 +:102D6000324D7FFF000D204000C4782131E5007F07 +:102D700000B4C02101F94024AC68002CA711000068 +:102D80008CEB0028256E0001ACEE00288CEA002CAC +:102D90008E02002C01426021ACEC002C8E09002C2C +:102DA000ACE900308E120014ACF2003494ED003A1D +:102DB00025A40001A4E4003A97E600783C1108003D +:102DC0008E3131B024C3000130707FFF1211005CDE +:102DD000006030218F8F0030026020212405000127 +:102DE0000E001934A5E600780A001EA1000020217B +:102DF0008E0900142412FFFF1132006B8F8A0038F5 +:102E00008E0200188D4C00D0144C00650260202109 +:102E10008E0B00248CAE0028116E005B2402002172 +:102E20000E001A4AA38200681452FFBE2404FFFF5A +:102E30008F8500380A001D320080A0212402001F67 +:102E40000E001A4AA38200682409FFFF1049FEA160 +:102E50002404FFFF0A001E548F83005402602021C7 +:102E60000E001A4AA38200681450FF508F85003864 +:102E70002403FFFF0A001D320060A0218CD800242B +:102E80008E0800241118FF29026020210A001F2744 +:102E90002402000F8E0900003C05008001259024CB +:102EA0001640FF492402001A026020210E001A4A2F +:102EB000A3820068240CFFFF144CFECF2404FFFF04 +:102EC0008F8500380A001D320080A0210E001934C1 +:102ED000026020218F8500380A001EE500001821BD +:102EE0002403FFFD0060A0210A001D32AF860060B0 +:102EF000026020210E001A4AA38D00682403FFFF00 +:102F00001043FF588F8500380A001ECC920400033E +:102F10002418001D0E001A4AA39800682403FFFF1E +:102F20001443FE9D2404FFFF8F8500380A001D32E4 +:102F30000080A021026020210A001F3D24020024FD +:102F4000240880000068C024330BFFFF000B73C20D +:102F500031D000FF001088270A001F6E001133C017 +:102F6000240F001B0E001A4AA38F00681451FEACF8 +:102F70002404FFFF8F8500380A001D320080A02145 +:102F80000A001F3D240200278E0600288CA3002C77 +:102F900010C30008026020210A001F812402001FC4 +:102FA0000A001F812402000E026020210A001F81F6 +:102FB000240200258E04002C1080000D8F8F00301D +:102FC0008DE800740104C02B5700000C0260202122 +:102FD0008CB900140086A0210334282B10A0FF52C6 +:102FE0008F9F0044026020210A001F8124020022DA +:102FF000026020210A001F81240200230A001F8191 +:103000002402002627BDFFD8AFB3001CAFB10014C7 +:10301000AFBF0020AFB20018AFB000103C0280007C +:103020008C5201408C4B01483C048000000B8C0208 +:10303000322300FF317300FF8C8501B804A0FFFE2E +:1030400034900180AE1200008C8701442464FFF0AC +:10305000240600022C830013AE070004A61100080A +:10306000A206000BAE1300241060004F8FBF00209B +:10307000000448803C0A0801254A9534012A402171 +:103080008D04000000800008000000003C030800E0 +:103090008C6331A831693FFF00099980007280215B +:1030A000021370212405FF80264D0100264C00806C +:1030B0003C02800031B1007F3198007F31CA007F2F +:1030C0003C1F800A3C1980043C0F800C01C5202461 +:1030D00001A5302401853824014F1821AC46002475 +:1030E000023F402103194821AC470090AC4400281E +:1030F000AF830044AF880038AF8900300E0019005C +:10310000016080213C0380008C6B01B80560FFFEEC +:103110008F8700448F8600383465018090E8000D69 +:10312000ACB20000A4B0000600082600000416039C +:1031300000029027001227C21080008124C200885C +:10314000241F6082A4BF0008A0A000052402000282 +:10315000A0A2000B8F8B0030000424003C08270045 +:1031600000889025ACB20010ACA00014ACA00024E4 +:10317000ACA00028ACA0002C8D6900382413FF807F +:10318000ACA9001890E3000D02638024320500FF13 +:1031900010A000058FBF002090ED000D31AC007F26 +:1031A000A0EC000D8FBF00208FB3001C8FB2001861 +:1031B0008FB100148FB000103C0A10003C0E80004C +:1031C00027BD002803E00008ADCA01B8265F010052 +:1031D0002405FF8033F8007F3C06800003E5782457 +:1031E0003C19800A03192021ACCF0024908E00D412 +:1031F00000AE682431AC00FF11800024AF84003899 +:10320000248E008895CD00123C0C08008D8C31A8CE +:1032100031AB3FFF01924821000B5180012A402130 +:1032200001052024ACC400283107007F3C06800C37 +:1032300000E620219083000D00A31024304500FFFC +:1032400010A0FFD8AF8400449098000D330F0010F9 +:1032500015E0FFD58FBF00200E0019000000000010 +:103260003C0380008C7901B80720FFFE00000000BD +:10327000AE1200008C7F0144AE1F0004A6110008AE +:1032800024110002A211000BAE1300243C1308010C +:10329000927396F0327000015200FFC38FBF00207E +:1032A0000E002146024020210A0020638FBF00202B +:1032B0003C1260008E452C083C03F0033462FFFF93 +:1032C00000A2F824AE5F2C088E582C083C1901C0CF +:1032D00003199825AE532C080A0020638FBF0020E5 +:1032E000264D010031AF007F3C10800A240EFF8084 +:1032F00001F0282101AE60243C0B8000AD6C00245D +:103300001660FFA8AF85003824110003A0B100FCAF +:103310000A0020638FBF002026480100310A007F89 +:103320003C0B800A2409FF80014B30210109202435 +:103330003C078000ACE400240A002062AF8600381D +:10334000944E0012320C3FFF31CD3FFF15ACFF7D94 +:10335000241F608290D900D42418FF800319782498 +:1033600031EA00FF1140FF7700000000240700044D +:10337000A0C700FC8F870044241160842406000D40 +:10338000A4B10008A0A600050A00204D24020002F6 +:103390003C040001248496DC24030014240200FE73 +:1033A0003C010800AC2431EC3C010800AC2331E8BE +:1033B0003C010801A42296F83C040801248496F8F4 +:1033C0000000182100643021A0C300042463000120 +:1033D0002C6500FF54A0FFFC006430213C0708006E +:1033E00024E7010003E00008AF87007800A058211F +:1033F000008048210000102114A00012000050217C +:103400000A002142000000003C010801A42096F8B7 +:103410003C05080194A596F88F8200783C0C0801C1 +:10342000258C96F800E2182100AC2021014B302BAE +:10343000A089000400001021A460000810C0003919 +:10344000010048218F8600780009384000E94021BA +:103450000008388000E6282190A8000B90B9000AE7 +:103460000008204000881021000218800066C0215A +:10347000A319000A8F85007800E5782191EE000AF3 +:1034800091E6000B000E684001AE6021000C208028 +:1034900000851021A046000B3C030801906396F2C2 +:1034A000106000222462FFFF8F8300383C01080176 +:1034B000A02296F2906C00FF118000040000000032 +:1034C000906E00FF25CDFFFFA06D00FF3C190801A5 +:1034D000973996F8272300013078FFFF2F0F00FF60 +:1034E00011E0FFC9254A00013C010801A42396F818 +:1034F0003C05080194A596F88F8200783C0C0801E1 +:10350000258C96F800E2182100AC2021014B302BCD +:10351000A089000400001021A460000814C0FFC9A5 +:103520000100482103E000080000000003E000085B +:103530002402000227BDFFE0248501002407FF804C +:10354000AFB00010AFBF0018AFB1001400A718242F +:103550003C10800030A4007F3C06800A00862821B1 +:103560008E110024AE03002490A200FF1440000836 +:10357000AF850038A0A000098FBF0018AE1100244D +:103580008FB100148FB0001003E0000827BD0020A9 +:1035900090A900FD90A800FF312400FF0E0020F448 +:1035A000310500FF8F8500388FBF0018A0A00009EB +:1035B000AE1100248FB100148FB0001003E000089A +:1035C00027BD002027BDFFD0AFB20020AFB1001C47 +:1035D000AFB00018AFBF002CAFB40028AFB30024C9 +:1035E0003C0980009533011635320C00952F011AE5 +:1035F0003271FFFF023280218E08000431EEFFFF9E +:10360000248B0100010E6821240CFF8025A5FFFFFB +:10361000016C50243166007F3C07800AAD2A0024EB +:1036200000C73021AF850074AF8800703C010801ED +:10363000A02096F190C300090200D02100809821BB +:10364000306300FF2862000510400048AF86003854 +:10365000286400021480008E24140001240D00054B +:103660003C010801A02D96D590CC00FD3C0108013D +:10367000A02096D63C010801A02096D790CB000A46 +:10368000240AFF80318500FF014B4824312700FFC9 +:1036900010E0000C000058213C12800836510080D8 +:1036A0008E2F00308CD0005C01F0702305C0018E9D +:1036B0008F87007090D4000A3284007FA0C4000A73 +:1036C0008F8600383C118008363000808E0F003025 +:1036D0008F87007000EF702319C000EE000000001B +:1036E00090D4000924120002328400FF1092024795 +:1036F000000000008CC2005800E2F82327F9FFFF09 +:103700001B2001300000000090C5000924080004BF +:1037100030A300FF10680057240A00013C01080193 +:10372000A02A96D590C900FF252700013C01080179 +:10373000A02796D43C030801906396D52406000583 +:103740001066006A2C780005130000C40000902168 +:103750000003F8803C0408012484958003E4C82118 +:103760008F25000000A0000800000000241800FFC2 +:103770001078005C0000000090CC000A90CA00099C +:103780003C080801910896F13187008000EA48253D +:103790003C010801A02996DC90C500FD3C140801FD +:1037A000929496F2311100013C010801A02596DDAA +:1037B00090DF00FE3C010801A03F96DE90D200FFA2 +:1037C0003C010801A03296DF8CD900543C0108016D +:1037D000AC3996E08CD000583C010801AC3096E43E +:1037E0008CC3005C3C010801AC3496EC3C01080140 +:1037F000AC2396E8162000088FBF002C8FB4002859 +:103800008FB300248FB200208FB1001C8FB000183E +:1038100003E0000827BD00303C1180009624010E13 +:103820000E000FD43094FFFF3C0B08018D6B96F413 +:103830000260382102802821AE2B01803C13080150 +:103840008E7396D401602021240600830E00102F71 +:10385000AFB300108FBF002C8FB400288FB30024AB +:103860008FB200208FB1001C8FB0001803E0000859 +:1038700027BD00303C1808008F1831FC270F0001CD +:103880003C010800AC2F31FC0A0021D700000000E9 +:103890001474FFB900000000A0C000FF3C05080040 +:1038A0008CA531E43C0308008C6331E03C02080045 +:1038B0008C4232048F99003834A80001241F000282 +:1038C0003C010801AC2396F43C010801A02896F0C5 +:1038D0003C010801A02296F3A33F00090A002190B1 +:1038E0008F8600380E002146000000000A0021D714 +:1038F0008F8600383C1F080193FF96D424190001DD +:1039000013F902298F8700703C100801921096D895 +:103910003C06080190C696D610C000050200A02102 +:103920003C040801908496D9109001E48F870078B8 +:10393000001088408F9F0078023048210009C8801D +:10394000033F702195D80008270F0001A5CF00087C +:103950003C040801908496D93C05080190A596D6B0 +:103960000E0020F4000000008F8700780230202134 +:103970000004308000C720218C8500048F820074F1 +:1039800000A2402305020006AC8200048C8A0000DD +:103990008F830070014310235C400001AC83000062 +:1039A0008F86003890CB00FF2D6C00025580002DD3 +:1039B000241400010230F821001F40800107282153 +:1039C00090B9000B8CAE00040019C0400319782197 +:1039D000000F1880006710218C4D000001AE882375 +:1039E0002630FFFF5E00001F241400018C440004F9 +:1039F0008CAA0000008A482319200019240E000414 +:103A00003C010801A02E96D590AD000B8CAB0004B4 +:103A1000000D8840022D80210010108000471021E9 +:103A20008C44000401646023058202009443000872 +:103A300090DF00FE90B9000B33E500FF54B900049D +:103A40000107A021A0D400FE8F8700780107A021E4 +:103A50009284000B0E0020F4240500018F860038AC +:103A600024140001125400962E500001160000424A +:103A70003C08FFFF241900021659FF3F0000000018 +:103A8000A0C000FF8F860038A0D200090A0021D70D +:103A90008F86003890C700092404000230E300FF3D +:103AA0001064016F24090004106901528F880074AA +:103AB0008CCE0054010E682325B10001062001754B +:103AC000241800043C010801A03896D53C010801E7 +:103AD000A02096D490D400FD90D200FF2E4F00027B +:103AE00015E0FF14328400FF000438408F8900780D +:103AF00090DF00FF00E41021000220800089C8212F +:103B00002FE500029324000B14A0FF0A24070002F3 +:103B100000041840006480210010588001692821A9 +:103B20008CAC0004010C50230540FF020000000093 +:103B30003C030801906396D614600005246F0001D1 +:103B40003C010801A02496D93C010801A02796D782 +:103B50003C010801A02F96D690CE00FF24E700017B +:103B600031CD00FF01A7882B1220FFE990A4000BA4 +:103B70000A0021C6000000003C0508018CA596D46F +:103B80003C12000400A8F82413F2000624020005E9 +:103B90003C090801912996D5152000022402000352 +:103BA000240200053C010801A02296F190C700FF05 +:103BB00014E0012024020002A0C200090A0021D75B +:103BC0008F86003890CC00FF1180FEDA240A0001B5 +:103BD0008F8C00748F890078240F00030180682186 +:103BE0001160001E240E0002000540400105A021C6 +:103BF00000142080008990218E51000401918023BF +:103C00000600FECC000000003C020801904296D65F +:103C100014400005245800013C010801A02A96D751 +:103C20003C010801A02596D93C010801A03896D690 +:103C300090DF00FF010510210002C88033E500FF7E +:103C4000254A00010329202100AA402B1500FEB9B6 +:103C50009085000B1560FFE50005404000054040E1 +:103C600001051821000310803C010801A02A96D408 +:103C70003C010801A02596D8004918218C64000455 +:103C800000E4F82327F9FFFF1F20FFE900000000F0 +:103C90008C63000000E358230560013A01A38823E8 +:103CA00010E301170184C0231B00FEA200000000E6 +:103CB0003C010801A02E96D50A002305240B000123 +:103CC000240E0004A0CE00093C0D08008DAD31F893 +:103CD0008F86003825A200013C010800AC2231F893 +:103CE0000A0021D7000000008CD9005C00F9C02335 +:103CF0001F00FE7B000000008CDF005C10FFFF65F2 +:103D00008F8400748CC3005C008340232502000173 +:103D10001C40FF60000000008CC9005C248700018B +:103D200000E9282B10A0FE943C0D80008DAB01040F +:103D30003C0C0001016C50241140FE8F2402001045 +:103D40003C010801A02296F10A0021D700000000E2 +:103D50008F9100748F86003826220001ACC2005C6F +:103D60000A002292241400018F8700382404FF8067 +:103D70000000882190E9000A241400010124302564 +:103D8000A0E6000A3C05080190A596D63C0408016F +:103D9000908496D90E0020F4000000008F86003831 +:103DA0008F85007890C800FD310700FF0007404074 +:103DB0000107F821001FC0800305C8219323000BD1 +:103DC000A0C300FD8F8500788F8600380305602131 +:103DD000918F000B000F704001CF6821000D808093 +:103DE000020510218C4B0000ACCB00548D840004E4 +:103DF0008F83007400645023194000022482000164 +:103E00002462000101074821ACC2005C0009308037 +:103E100000C5402100E02021240500010E0020F40F +:103E20009110000B8F86003890C500FF10A0FF0C8A +:103E3000001070408F85007801D06821000D10803F +:103E4000004558218D6400008F8C0074018450233C +:103E50002547000104E0FF02263100013C03080170 +:103E6000906396D62E2F0002247800013C010801B1 +:103E7000A03896D63C010801A03496D711E0FEF890 +:103E8000020038210A002365000740408F84003873 +:103E90008F8300748C85005800A340230502FE9A8E +:103EA000AC8300580A00223B000000003C070801D8 +:103EB00090E796F2240200FF10E200BE8F860038E1 +:103EC0003C110801963196FA3C030801246396F8E8 +:103ED000262500013230FFFF30ABFFFF02036021D7 +:103EE0002D6A00FF1540008D918700043C010801F8 +:103EF000A42096FA8F88003800074840012728211F +:103F0000911800FF000530802405000127140001EE +:103F1000A11400FF3C120801925296F28F8800789B +:103F20008F8E0070264F000100C820213C0108013F +:103F3000A02F96F2AC8E00008F8D0074A48500082F +:103F4000AC8D00043C030801906396D414600077A4 +:103F5000000090213C010801A02596D4A087000B09 +:103F60008F8C007800CC5021A147000A8F82003846 +:103F7000A04700FD8F840038A08700FE8F860038A0 +:103F80008F9F0070ACDF00548F990074ACD900583B +:103F90008F8D00780127C02100185880016DA02165 +:103FA000928F000A000F704001CF18210003888013 +:103FB000022D8021A207000B8F8600780166602108 +:103FC000918A000B000A1040004A2021000428803A +:103FD00000A64021A107000A3C07800834E90080C0 +:103FE0008D2200308F860038ACC2005C0A0022921D +:103FF0002414000190CA00FF1540FEAD8F880074A4 +:10400000A0C400090A0021D78F860038A0C000FD97 +:104010008F98003824060001A30000FE3C0108012F +:10402000A02696D53C010801A02096D40A0021C6FE +:104030000000000090CB00FF3C040801908496F340 +:10404000316C00FF0184502B1540000F2402000347 +:1040500024020004A0C200090A0021D78F8600387C +:1040600090C3000A2410FF8002035824316C00FF23 +:104070001180FDC1000000003C010801A02096D580 +:104080000A0021C600000000A0C200090A0021D7D2 +:104090008F86003890D4000A2412FF8002544824EE +:1040A000312800FF1500FFF4240200083C0108013C +:1040B000A02296F10A0021D70000000000108840DD +:1040C0008F8B0070023018210003688001A7202127 +:1040D000AC8B00008F8A0074240C0001A48C0008B3 +:1040E000AC8A00043C05080190A596D62402000184 +:1040F00010A2FE1E24A5FFFF0A0022519084000B8F +:104100000184A0231A80FD8B000000003C010801FF +:10411000A02E96D50A002305240B00013C010801BE +:10412000A42596FA0A0023B78F880038240B0001D3 +:10413000106B00228F9800388F85003890BF00FFE9 +:1041400033F900FF1079002B000000003C1F08012C +:1041500093FF96D8001FC840033FC0210018A080DD +:104160000288782191EE000AA08E000A8F8D0078D7 +:104170003C030801906396D800CD88210A0023DD16 +:10418000A223000B263000010600003101A4902379 +:104190000640002B240200033C010801A02F96D505 +:1041A0000A002305240B00018F8900380A00223BF6 +:1041B000AD2700540A00229124120001931400FD3F +:1041C000A094000B8F8800388F8F0078910E00FE2E +:1041D00000CF6821A1AE000A8F910038A22700FD10 +:1041E0008F8300708F900038AE0300540A0023DEE6 +:1041F0008F8D007890B000FEA090000A8F8B003861 +:104200008F8C0078916A00FD00CC1021A04A000B31 +:104210008F840038A08700FE8F8600748F85003859 +:10422000ACA600580A0023DE8F8D007894B80008F1 +:10423000ACA40004030378210A002285A4AF00087F +:104240003C010801A02296D50A0021C6000000000A +:1042500090CF0009240D000431EE00FF11CDFD8543 +:10426000240200013C010801A02296D50A0021C6C3 +:1042700000000000080033440800334408003420E4 +:10428000080033F4080033D8080033280800332826 +:10429000080033280800334C8008010080080080A3 +:1042A000800800005F865437E4AC62CC50103A4579 +:1042B00036621985BF14C0E81BC27A1E84F4B55655 +:1042C000094EA6FE7DDA01E7C04D748108005A74DC +:1042D00008005AB808005A5C08005A5C08005A5C8A +:1042E00008005A5C08005A7408005A5C08005A5CBE +:1042F00008005AC008005A5C080059D408005A5CEB +:1043000008005A5C08005AC008005A5C08005A5C51 +:1043100008005A5C08005A5C08005A5C08005A5CA5 +:1043200008005A5C08005A5C08005A5C08005A5C95 +:1043300008005A9408005A5C08005A9408005A5C15 +:1043400008005A5C08005A5C08005A9808005A9401 +:1043500008005A5C08005A5C08005A5C08005A5C65 +:1043600008005A5C08005A5C08005A5C08005A5C55 +:1043700008005A5C08005A5C08005A5C08005A5C45 +:1043800008005A5C08005A5C08005A5C08005A5C35 +:1043900008005A5C08005A5C08005A5C08005A5C25 +:1043A00008005A9808005A9808005A5C08005A9861 +:1043B00008005A5C08005A5C08005A5C08005A5C05 +:1043C00008005A5C08005A5C08005A5C08005A5CF5 +:1043D00008005A5C08005A5C08005A5C08005A5CE5 +:1043E00008005A5C08005A5C08005A5C08005A5CD5 +:1043F00008005A5C08005A5C08005A5C08005A5CC5 +:1044000008005A5C08005A5C08005A5C08005A5CB4 +:1044100008005A5C08005A5C08005A5C08005A5CA4 +:1044200008005A5C08005A5C08005A5C08005A5C94 +:1044300008005A5C08005A5C08005A5C08005A5C84 +:1044400008005A5C08005A5C08005A5C08005A5C74 +:1044500008005A5C08005A5C08005A5C08005A5C64 +:1044600008005A5C08005A5C08005A5C08005A5C54 +:1044700008005A5C08005A5C08005A5C08005A5C44 +:1044800008005A5C08005A5C08005A5C08005A5C34 +:1044900008005A5C08005A5C08005A5C08005A5C24 +:1044A00008005A5C08005A5C08005A5C08005A5C14 +:1044B00008005A5C08005A5C08005A5C08005A5C04 +:1044C00008005A5C08005A5C08005A5C08005ADC74 +:1044D0000800782C08007A900800783808007628C0 +:1044E00008007838080078C4080078380800762872 +:1044F0000800762808007628080076280800762824 +:104500000800762808007628080076280800762813 +:1045100008007628080078580800784808007628AF +:1045200008007628080076280800762808007628F3 +:1045300008007628080076280800762808007628E3 +:1045400008007628080076280800762808007848B1 +:10455000080082FC08008188080082C40800818865 +:104560000800829408008070080081880800818813 +:1045700008008188080081880800818808008188F7 +:1045800008008188080081880800818808008188E7 +:104590000800818808008188080081B008008D34F7 +:1045A00008008E9008008E70080088D808008D4C96 +:1045B0000A00012400000000000000000000000DBF +:1045C000747061362E322E31620000000602010145 +:1045D00000000000000000000000000000000000DB +:1045E00000000000000000000000000000000000CB +:1045F00000000000000000000000000000000000BB +:1046000000000000000000000000000000000000AA +:10461000000000000000000000000000000000009A +:10462000000000000000000000000000000000008A +:10463000000000000000000000000000000000007A +:104640000000000010000003000000000000000D4A +:104650000000000D3C020800244217203C03080023 +:1046600024632A10AC4000000043202B1480FFFD7F +:10467000244200043C1D080037BD2FFC03A0F0219C +:104680003C100800261004903C1C0800279C1720B2 +:104690000E000262000000000000000D2402FF80F6 +:1046A00027BDFFE000821024AFB00010AF42002011 +:1046B000AFBF0018AFB10014936500043084007FD1 +:1046C000034418213C0200080062182130A5002094 +:1046D000036080213C080111277B000814A0000220 +:1046E0002466005C2466005892020004974301048B +:1046F000920400043047000F3063FFFF3084004015 +:10470000006728231080000900004821920200055C +:1047100030420004104000050000000010A000031B +:104720000000000024A5FFFC2409000492020005FB +:1047300030420004104000120000000010A00010E1 +:10474000000000009602000200A72021010440257D +:104750002442FFFEA7421016920300042402FF80A9 +:1047600000431024304200FF104000033C020400CC +:104770000A000174010240258CC20000AF421018EB +:104780008F4201780440FFFE2402000AA742014044 +:1047900096020002240400093042000700021023A0 +:1047A00030420007A7420142960200022442FFFE67 +:1047B000A7420144A740014697420104A74201488D +:1047C0008F420108304200205040000124040001C3 +:1047D00092020004304200101440000234830010A2 +:1047E00000801821A743014A0000000000000000DB +:1047F0000000000000000000AF48100000000000B2 +:104800000000000000000000000000008F421000C7 +:104810000441FFFE3102FFFF1040000700000000CE +:1048200092020004304200401440000300000000E7 +:104830008F421018ACC20000960200063042FFFF03 +:10484000244200020002104300021040036288214B +:10485000962200001120000D3044FFFF00A7102118 +:104860008F8300388F45101C0002108200021080D8 +:1048700000431021AC45000030A6FFFF0E00058D5F +:1048800000052C0200402021A62200009203000413 +:104890002402FF8000431024304200FF1040001F1C +:1048A0000000000092020005304200021040001B90 +:1048B000000000009742100C2442FFFEA742101691 +:1048C000000000003C02040034420030AF421000FF +:1048D00000000000000000000000000000000000D8 +:1048E0008F4210000441FFFE000000009742100CB0 +:1048F0008F45101C3042FFFF24420030000210821E +:1049000000021080005B1021AC45000030A6FFFFC4 +:104910000E00058D00052C02A62200009604000260 +:10492000248400080E0001E93084FFFF974401044D +:104930000E0001F73084FFFF8FBF00188FB1001405 +:104940008FB000103C02100027BD002003E00008DB +:10495000AF4201783084FFFF308200078F8500244A +:1049600010400002248300073064FFF800A41021E7 +:1049700030421FFF03421821247B4000AF850028EE +:10498000AF82002403E00008AF4200843084FFFFC0 +:104990003082000F8F85002C8F860034104000027B +:1049A0002483000F3064FFF000A410210046182B70 +:1049B000AF8500300046202314600002AF82002C37 +:1049C000AF84002C8F82002C340480000342182115 +:1049D00000641821AF83003803E00008AF42008074 +:1049E0008F820014104000088F8200048F82FFDC49 +:1049F000144000058F8200043C02FFBF3442FFFFD9 +:104A0000008220248F82000430430006240200022A +:104A10001062000F3C0201012C62000350400005AF +:104A2000240200041060000F3C0200010A00023062 +:104A30000000000010620005240200061462000C51 +:104A40003C0201110A000229008210253C020011DB +:104A500000821025AF421000240200010A0002303B +:104A6000AF82000C00821025AF421000AF80000C16 +:104A700000000000000000000000000003E000084B +:104A8000000000008F82000C1040000400000000B5 +:104A90008F4210000441FFFE0000000003E0000808 +:104AA000000000008F8200102443F800000231C291 +:104AB00024C2FFF02C6303011060000300021042C7 +:104AC0000A000257AC8200008F85001800C5102B29 +:104AD0001440000B0000182100C5102324470001DA +:104AE0008F82001C00A210212442FFFF0046102BE1 +:104AF000544000042402FFFF0A000257AC87000064 +:104B00002402FFFF0A000260AC8200008C820000D9 +:104B10000002194000621821000318800062182169 +:104B2000000318803C0208002442175C0062182130 +:104B300003E000080060102127BDFFD8AFBF0020B0 +:104B4000AFB1001CAFB000183C0460088C8250006C +:104B50002403FF7F3C066000004310243442380CDD +:104B6000AC8250008CC24C1C3C1A80000002160221 +:104B70003042000F10400007AF82001C8CC34C1C59 +:104B80003C02001F3442FC0000621824000319C2DA +:104B9000AF8300188F420008275B400034420001B9 +:104BA000AF420008AF8000243C02601CAF40008090 +:104BB000AF4000848C4500088CC308083402800094 +:104BC000034220212402FFF0006218243C020080EE +:104BD0003C010800AC2204203C025709AF84003895 +:104BE00014620004AF850034240200010A0002921E +:104BF000AF820014AF8000148F42000038420001E1 +:104C0000304200011440FFFC8F8200141040001657 +:104C10000000000097420104104000058F8300004F +:104C2000146000072462FFFF0A0002A72C62000A3A +:104C30002C620010504000048F83000024620001A9 +:104C4000AF8200008F8300002C62000A1440000332 +:104C50002C6200070A0002AEAF80FFDC10400002A9 +:104C600024020001AF82FFDC8F4301088F44010062 +:104C700030622000AF83000410400008AF840010B1 +:104C80003C0208008C42042C244200013C01080034 +:104C9000AC22042C0A00058A3C0240003065020068 +:104CA00014A0000324020F001482026024020D00ED +:104CB00097420104104002C83C02400030624000AC +:104CC000144000AD8F8200388C4400088F42017878 +:104CD0000440FFFE24020800AF42017824020008CD +:104CE000A7420140A7400142974201048F8400047B +:104CF0003051FFFF30820001104000070220802168 +:104D00002623FFFE240200023070FFFFA742014667 +:104D10000A0002DBA7430148A74001463C02080005 +:104D20008C42043C1440000D8F8300103082002020 +:104D30001440000224030009240300010060202124 +:104D40008F830010240209005062000134840004A3 +:104D5000A744014A0A0002F60000000024020F00E6 +:104D60001462000530820020144000062403000D68 +:104D70000A0002F524030005144000022403000980 +:104D800024030001A743014A3C0208008C4204208E +:104D90003C0400480E00020C004420250E000235A1 +:104DA000000000008F82000C1040003E0000000058 +:104DB0008F4210003C0300200043102410400039B3 +:104DC0008F820004304200021040003600000000D4 +:104DD000974210141440003300000000974210085E +:104DE0008F8800383042FFFF2442000600021882FC +:104DF0000003388000E83021304300018CC40000FB +:104E000010600004304200030000000D0A00033768 +:104E100000E81021544000103084FFFF3C05FFFFE4 +:104E200000852024008518260003182B0004102B71 +:104E300000431024104000050000000000000000A6 +:104E40000000000D00000000240002228CC20000BF +:104E50000A000336004520253883FFFF0003182B86 +:104E60000004102B00431024104000050000000037 +:104E7000000000000000000D000000002400022BD4 +:104E80008CC200003444FFFF00E81021AC44000055 +:104E90003C0208008C420430244200013C0108001E +:104EA000AC2204308F6200008F840038AF8200088B +:104EB0008C8300003402FFFF1462000F00001021F9 +:104EC0003C0508008CA504543C0408008C84045064 +:104ED00000B0282100B0302B008220210086202144 +:104EE0003C010800AC2504543C010800AC240450EB +:104EF0000A000580240400088C8200003042010072 +:104F00001040000F000010213C0508008CA5044C47 +:104F10003C0408008C84044800B0282100B0302BE9 +:104F200000822021008620213C010800AC25044C91 +:104F30003C010800AC2404480A0005802404000851 +:104F40003C0508008CA504443C0408008C84044003 +:104F500000B0282100B0302B0082202100862021C3 +:104F60003C010800AC2504443C010800AC2404408A +:104F70000A000580240400088F6200088F62000088 +:104F800000021602304300F02402003010620005D7 +:104F900024020040106200E08F8200200A00058891 +:104FA0002442000114A000050000000000000000E1 +:104FB0000000000D00000000240002568F4201781E +:104FC0000440FFFE000000000E00023D27A4001078 +:104FD0001440000500408021000000000000000D8A +:104FE000000000002400025D8E0200001040000559 +:104FF00000000000000000000000000D00000000A4 +:10500000240002608F62000C0443000324020001AC +:105010000A00042EAE000000AE0200008F820038AD +:105020008C480008A20000078F65000C8F64000404 +:1050300030A3FFFF0004240200852023308200FFFC +:105040000043102124420005000230832CC200815D +:10505000A605000A14400005A20400040000000098 +:105060000000000D00000000240002788F85003849 +:105070000E0005AB260400148F6200048F43010864 +:10508000A60200083C02100000621824106000080C +:105090000000000097420104920300072442FFEC45 +:1050A000346300023045FFFF0A0003C3A203000778 +:1050B000974201042442FFF03045FFFF96060008A6 +:1050C0002CC200135440000592030007920200070F +:1050D00034420001A20200079203000724020001EB +:1050E00010620005240200031062000B8F8200385A +:1050F0000A0003E030C6FFFF8F8200383C04FFFF48 +:105100008C43000C0064182400651825AC43000C87 +:105110000A0003E030C6FFFF3C04FFFF8C43001091 +:105120000064182400651825AC43001030C6FFFF4A +:1051300024C2000200021083A20200058F830038FF +:10514000304200FF00021080004328218CA800009C +:105150008CA2000024030004000217021443001272 +:1051600000000000974201043C03FFFF01031824E4 +:105170003042FFFF004610232442FFFE006240251C +:10518000ACA8000092030005306200FF000210800E +:1051900000501021904200143042000F00431021B3 +:1051A0000A000415A20200068CA400049742010420 +:1051B0009603000A3088FFFF3042FFFF00461023AD +:1051C0002442FFD60002140001024025ACA80004CE +:1051D000920200079204000524630028000318834C +:1051E0000064182134420004A2030006A202000752 +:1051F0008F8200042403FFFB34420002004310248A +:10520000AF820004920300068F87003800031880E5 +:10521000007010218C4400203C02FFF63442FFFF56 +:105220000082402400671821AE04000CAC68000C1A +:10523000920500063C03FF7F8E02000C00052880CB +:1052400000B020213463FFFF01033024948800263E +:1052500000A7282100431024AE02000CAC860020D9 +:10526000AC880024ACA8001024020010A742014022 +:1052700024020002A7400142A7400144A742014680 +:10528000974201043C0400082442FFFEA742014863 +:10529000240200010E00020CA742014A9603000AF4 +:1052A0009202000400431021244200023042000711 +:1052B00000021023304200070E000235AE0200103B +:1052C0008F6200003C0308008C6304442404001037 +:1052D000AF820008974201043042FFFF2442FFFEE4 +:1052E00000403821000237C33C0208008C420440D1 +:1052F000006718210067282B004610210045102167 +:105300003C010800AC2304443C010800AC220440EA +:105310000A0005150000000014A0000500000000B0 +:10532000000000000000000D000000002400030A3F +:105330008F4201780440FFFE000000000E00023D95 +:1053400027A4001414400005004080210000000044 +:105350000000000D00000000240003118E02000078 +:105360005440000692020007000000000000000DFB +:10537000000000002400031C9202000730420004D9 +:10538000104000058F8200042403FFFB344200021A +:1053900000431024AF8200048F620004044300081D +:1053A00092020007920200068E03000CAE0000007D +:1053B0000002108000501021AC4300209202000730 +:1053C00030420004544000099602000A920200058F +:1053D0003C03000100021080005010218C46001890 +:1053E00000C33021AC4600189602000A9206000461 +:1053F000277100080220202100C2302124C60005A8 +:10540000260500140E0005AB00063082920400064B +:105410008F6500043C027FFF000420800091202162 +:105420008C8300043442FFFF00A228240065182169 +:10543000AC8300049202000792040005920300046A +:10544000304200041040001496070008308400FF2A +:1054500000042080009120218C86000497420104E2 +:105460009605000A306300FF3042FFFF0043102121 +:105470000045102130E3FFFF004310232442FFD8F2 +:1054800030C6FFFF0002140000C23025AC860004C5 +:105490000A0004C992030007308500FF0005288038 +:1054A00000B128218CA4000097420104306300FF62 +:1054B0003042FFFF00431021004710233C03FFFF51 +:1054C000008320243042FFFF00822025ACA400008E +:1054D0009203000724020001106200060000000091 +:1054E0002402000310620011000000000A0004EC16 +:1054F0008E03001097420104920300049605000AEF +:105500008E24000C00431021004510212442FFF29C +:105510003C03FFFF008320243042FFFF0082202550 +:10552000AE24000C0A0004EC8E0300109742010424 +:10553000920300049605000A8E24001000431021F7 +:10554000004510212442FFEE3C03FFFF008320248E +:105550003042FFFF00822025AE2400108E03001091 +:105560002402000AA7420140A74301429603000A11 +:10557000920200043C04004000431021A742014471 +:10558000A740014697420104A742014824020001B6 +:105590000E00020CA742014A0E0002350000000076 +:1055A0008F6200009203000400002021AF820008F7 +:1055B000974201049606000A3042FFFF006218215C +:1055C000006028213C0308008C6304443C0208006E +:1055D0008C42044000651821004410210065382BDE +:1055E000004710213C010800AC2304443C010800A2 +:1055F000AC22044092040004008620212484000A86 +:105600003084FFFF0E0001E9000000009744010410 +:105610003084FFFF0E0001F7000000003C02100084 +:10562000AF4201780A0005878F820020148200278C +:105630003062000697420104104000673C024000BF +:105640003062400010400005000000000000000033 +:105650000000000D00000000240004208F420178AB +:105660000440FFFE24020800AF4201782402000833 +:10567000A7420140A74001428F82000497430104E2 +:1056800030420001104000073070FFFF2603FFFE8C +:1056900024020002A7420146A74301480A00053F31 +:1056A0002402000DA74001462402000DA742014A32 +:1056B0008F62000024040008AF8200080E0001E998 +:1056C000000000000A0005190200202110400042DD +:1056D0003C02400093620000304300F024020010BE +:1056E0001062000524020070106200358F820020D5 +:1056F0000A000588244200018F62000097430104DC +:105700003050FFFF3071FFFF8F4201780440FFFEF1 +:105710003202000700021023304200072403000A6F +:105720002604FFFEA7430140A7420142A7440144CB +:10573000A7400146A75101488F420108304200208E +:10574000144000022403000924030001A743014A76 +:105750000E00020C3C0400400E0002350000000068 +:105760003C0708008CE70444021110212442FFFE8C +:105770003C0608008CC604400040182100E3382194 +:10578000000010218F65000000E3402B00C2302193 +:105790002604000800C830213084FFFFAF850008D0 +:1057A0003C010800AC2704443C010800AC2604403E +:1057B0000E0001E9000000000A0005190220202166 +:1057C0000E00013B000000008F82002024420001F7 +:1057D000AF8200203C024000AF4201380A00029232 +:1057E000000000003084FFFF30C6FFFF00052C00E2 +:1057F00000A628253882FFFF004510210045282BF0 +:105800000045102100021C023042FFFF004310211E +:1058100000021C023042FFFF004310213842FFFF0C +:1058200003E000083042FFFF3084FFFF30A5FFFF98 +:1058300000001821108000070000000030820001E5 +:105840001040000200042042006518210A0005A152 +:105850000005284003E000080060102110C0000689 +:1058600024C6FFFF8CA2000024A50004AC82000027 +:105870000A0005AB2484000403E0000800000000D7 +:1058800010A0000824A3FFFFAC8600000000000069 +:10589000000000002402FFFF2463FFFF1462FFFAF0 +:1058A0002484000403E00008000000000000000160 +:1058B0000A00002A00000000000000000000000DA7 +:1058C000747870362E322E3162000000060201001C +:1058D00000000000000001360000EA600000000047 +:1058E00000000000000000000000000000000000B8 +:1058F00000000000000000000000000000000000A8 +:105900000000000000000000000000000000000097 +:105910000000001600000000000000000000000071 +:105920000000000000000000000000000000000077 +:105930000000000000000000000000000000000067 +:1059400000000000000000000000138800000000BC +:10595000000005DC00000000000000001000000353 +:10596000000000000000000D0000000D3C020800D7 +:1059700024423D683C0308002463401CAC40000006 +:105980000043202B1480FFFD244200043C1D08002E +:1059900037BD7FFC03A0F0213C100800261000A8B2 +:1059A0003C1C0800279C3D680E00044E00000000CF +:1059B0000000000D27BDFFB4AFA10000AFA200049E +:1059C000AFA30008AFA4000CAFA50010AFA6001451 +:1059D000AFA70018AFA8001CAFA90020AFAA0024F1 +:1059E000AFAB0028AFAC002CAFAD0030AFAE003491 +:1059F000AFAF0038AFB8003CAFB90040AFBC004417 +:105A0000AFBF00480E000591000000008FBF0048A6 +:105A10008FBC00448FB900408FB8003C8FAF003876 +:105A20008FAE00348FAD00308FAC002C8FAB0028D0 +:105A30008FAA00248FA900208FA8001C8FA7001810 +:105A40008FA600148FA500108FA4000C8FA3000850 +:105A50008FA200048FA1000027BD004C3C1B6004F6 +:105A60008F7A5030377B502803400008AF7A00000F +:105A70008F86003C3C0390003C0280000086282575 +:105A800000A32025AC4400203C0380008C6700204C +:105A900004E0FFFE0000000003E00008000000003A +:105AA0000A000070240400018F85003C3C04800043 +:105AB0003483000100A3102503E00008AC8200201D +:105AC00003E00008000010213084FFFF30A5FFFF35 +:105AD00010800007000018213082000110400002F1 +:105AE00000042042006518211480FFFB00052840B7 +:105AF00003E000080060102110C000070000000053 +:105B00008CA2000024C6FFFF24A50004AC82000084 +:105B100014C0FFFB2484000403E000080000000020 +:105B200010A0000824A3FFFFAC86000000000000C6 +:105B3000000000002402FFFF2463FFFF1462FFFA4D +:105B40002484000403E000080000000090AA003153 +:105B50008FAB00108CAC00403C0300FF8D6800044C +:105B6000AD6C00208CAD004400E060213462FFFF8A +:105B7000AD6D00248CA700483C09FF000109C0243A +:105B8000AD6700288CAE004C0182C824031978252B +:105B9000AD6F0004AD6E002C8CAD0038314A00FFB3 +:105BA000AD6D001C94A900323128FFFFAD680010D4 +:105BB00090A70030A5600002A1600004A16700006A +:105BC00090A30032306200FF0002198210600005CD +:105BD000240500011065000E0000000003E000082D +:105BE000A16A00018CD80028354A0080AD780018E1 +:105BF0008CCF0014AD6F00148CCE0030AD6E000859 +:105C00008CC4002CA16A000103E00008AD64000C04 +:105C10008CCD001CAD6D00188CC90014AD6900144A +:105C20008CC80024AD6800088CC70020AD67000C4C +:105C30008CC200148C8300700043C82B1320000713 +:105C4000000000008CC20014144CFFE400000000AF +:105C5000354A008003E00008A16A00018C820070D0 +:105C60000A0000E6000000009089003027BDFFF820 +:105C70008FA8001CA3A900008FA300003C0DFF808B +:105C800035A2FFFF8CAC002C00625824AFAB0000A3 +:105C9000A100000400C05821A7A000028D06000446 +:105CA00000A048210167C8218FA500000080502175 +:105CB0003C18FF7F032C20263C0E00FF2C8C00019B +:105CC000370FFFFF35CDFFFF3C02FF0000AFC824B8 +:105CD00000EDC02400C27824000C1DC003236825F9 +:105CE00001F87025AD0D0000AD0E00048D240024D8 +:105CF000AFAD0000AD0400088D2C00202404FFFF90 +:105D0000AD0C000C9547003230E6FFFFAD060010E9 +:105D10009145004830A200FF000219C25060000106 +:105D20008D240034AD0400148D4700388FAA00186C +:105D300027BD0008AD0B0028AD0A0024AD07001CEC +:105D4000AD00002CAD00001803E00008AD000020FD +:105D500027BDFFE0AFB20018AFB10014AFB0001024 +:105D6000AFBF001C9098003000C088213C0D00FFA0 +:105D7000330F007FA0CF0000908E003135ACFFFFC5 +:105D80003C0AFF00A0CE000194A6001EA220000441 +:105D90008CAB00148E29000400A08021016C282403 +:105DA000012A40240080902101052025A62600021A +:105DB000AE24000426050020262400080E000092D0 +:105DC00024060002924700302605002826240014ED +:105DD00000071E000003160324060004044000030D +:105DE0002403FFFF965900323323FFFF0E00009279 +:105DF000AE230010262400248FBF001C8FB2001891 +:105E00008FB100148FB00010240500030000302172 +:105E10000A00009C27BD002027BDFFD8AFB1001CA1 +:105E2000AFB00018AFBF002090A9003024020001DD +:105E300000E050213123003F00A040218FB00040FE +:105E40000080882100C04821106200148FA700380C +:105E5000240B000500A0202100C02821106B001396 +:105E6000020030210E000128000000009225007C75 +:105E700030A400021080000326030030AE00003082 +:105E8000260300348FBF00208FB1001C8FB0001894 +:105E90000060102103E0000827BD00280E0000A7C5 +:105EA000AFB000100A00016F000000008FA3003C9B +:105EB000010020210120282101403021AFA3001042 +:105EC0000E0000EEAFB000140A00016F00000000E9 +:105ED0003C06800034C20E008C4400108F850044C4 +:105EE000ACA400208C43001803E00008ACA30024FD +:105EF0003C06800034C20E008C4400148F850044A0 +:105F0000ACA400208C43001C03E00008ACA30024D8 +:105F10009382000C1040001B2483000F2404FFF028 +:105F20000064382410E00019978B00109784000E4D +:105F30009389000D3C0A601C0A0001AC01644023F7 +:105F400001037021006428231126000231C2FFFFE3 +:105F500030A2FFFF0047302B50C0000E00E4482164 +:105F60008D4D000C31A3FFFF00036400000C2C03D7 +:105F700004A1FFF30000302130637FFF0A0001A479 +:105F80002406000103E00008000000009784000ED2 +:105F900000E448213123FFFF3168FFFF0068382B00 +:105FA00054E0FFF8A783000E938A000D114000050E +:105FB000240F0001006BC023A380000D03E0000844 +:105FC000A798000E006BC023A38F000D03E000080C +:105FD000A798000E03E000080000000027BDFFE8BE +:105FE000AFB000103C10800036030140308BFFFF43 +:105FF00093AA002BAFBF0014A46B000436040E005C +:106000009488001630C600FF8FA90030A4680006EF +:10601000AC650008A0660012A46A001AAC670020F4 +:106020008FA5002CA4690018012020210E000198E2 +:10603000AC6500143C021000AE0201788FBF001462 +:106040008FB0001003E0000827BD00188F85000006 +:106050002484000727BDFFF83084FFF83C06800049 +:1060600094CB008A316AFFFFAFAA00008FA900001D +:10607000012540232507FFFF30E31FFF0064102B9D +:106080001440FFF700056882000D288034CC4000E2 +:1060900000AC102103E0000827BD00088F8200003B +:1060A0002486000730C5FFF800A2182130641FFFC6 +:1060B00003E00008AF8400008F87003C8F84004419 +:1060C00027BDFFB0AFB70044AFB40038AFB1002C6C +:1060D000AFBF0048AFB60040AFB5003CAFB300342F +:1060E000AFB20030AFB000283C0B80008C8600249B +:1060F000AD6700808C8A002035670E00356901008D +:10610000ACEA00108C8800248D2500040000B82122 +:10611000ACE800188CE3001000A688230000A02142 +:10612000ACE300148CE20018ACE2001C122000FE6C +:1061300000E0B021936C0008118000F40000000022 +:10614000976F001031EEFFFF022E682B15A000EFB5 +:1061500000000000977200103250FFFFAED0000028 +:106160003C0380008C740000329300081260FFFD35 +:106170000000000096D800088EC700043305FFFF1A +:1061800030B5000112A000E4000000000000000D86 +:1061900030BFA0402419004013F9011B30B4A00007 +:1061A000128000DF000000009373000812600008F6 +:1061B00000000000976D001031ACFFFF00EC202BB9 +:1061C0001080000330AE004011C000D50000000078 +:1061D000A7850040AF87003893630008022028217C +:1061E000AFB10020146000F527B40020AF60000CB0 +:1061F000978F004031F14000162000022403001662 +:106200002403000E24054007A363000AAF650014B1 +:10621000938A00428F70001431550001001512401E +:1062200002024825AF690014979F00408F78001440 +:1062300033F9001003194025AF680014979200400D +:106240003247000810E0016E000000008F67001464 +:106250003C1210003C11800000F27825AF6F001452 +:1062600036230E00946E000A3C0D81002406000EB9 +:1062700031CCFFFF018D2025AF640004A36600022E +:106280009373000A3406FFFC266B0004A36B000A1C +:1062900097980040330820001100015F00000000C3 +:1062A0003C05800034A90E00979900409538000CF9 +:1062B00097870040001940423312C00031030003A9 +:1062C00000127B0330F11000006F6825001172038B +:1062D00001AE6025000C20C0A76400129793004017 +:1062E000936A000A001359823175003C02AA1021FA +:1062F0002450003CA3700009953F000C33F93FFF88 +:10630000A779001097700012936900090130F821F5 +:1063100027E5000230B900070019C0233308000741 +:10632000A368000B9371000997720012976F001019 +:10633000322700FF8F910038978D004000F218211E +:10634000006F702101C6602131A6004010C0000519 +:106350003185FFFF00B1102B3C1280001040001768 +:10636000000098210225A82B56A0013E8FA50020F1 +:106370003C048000348A0E008D5300143C068000DB +:10638000AD5300108D4B001CAD4B0018AD45000007 +:106390008CCD000031AC00081180FFFD34CE0E0022 +:1063A00095C3000800A0882100009021A783004029 +:1063B0008DC6000424130001AF860038976F0010CB +:1063C00031F5FFFF8E9F000003F1282310A0011F6D +:1063D000AE85000093620008144000DD000000005C +:1063E0000E0001E7240400108F900048004028218F +:1063F0003C023200320600FF000654000142F8253C +:1064000026090001AF890048ACBF0000937900095C +:1064100097780012936F000A332800FF3303FFFFC1 +:106420000103382100076C0031EE00FF01AE60254A +:10643000ACAC00048F840048978B0040316A200088 +:106440001140010AACA4000897640012308BFFFFD2 +:1064500006400108ACAB000C978E004031C5000827 +:1064600014A0000226280006262800023C1F8000F7 +:1064700037E70E0094F900148CE5001C8F670004C8 +:10648000937800023324FFFF330300FFAFA3001013 +:106490008F6F0014AFA800180E0001CBAFAF00142F +:1064A000240400100E0001FB000000008E9200008A +:1064B00016400005000000008F7800142403FFBF81 +:1064C0000303A024AF7400148F67000C00F5C821EB +:1064D000AF79000C9375000816A0000800000000BA +:1064E00012600006000000008F6800143C0AEFFFF5 +:1064F0003549FFFE0109F824AF7F0014A37300089B +:106500008FA500200A00034F02202021AED10000F9 +:106510000A00022D3C03800014E0FF1E30BFA040A3 +:106520000E0001900000A0212E9100010237B0253D +:1065300012C000188FBF00488F87003C24170F003F +:1065400010F700D43C0680008CD901780720FFFEAC +:10655000241F0F0010FF00F634CA0E008D560014E1 +:1065600034C7014024080240ACF600048D49001CE9 +:106570003C141000ACE90008A0E00012A4E0001AEE +:10658000ACE00020A4E00018ACE80014ACD4017822 +:106590008FBF00488FB700448FB600408FB5003CD6 +:1065A0008FB400388FB300348FB200308FB1002C1D +:1065B0008FB0002803E0000827BD00508F910038FD +:1065C000978800403C1280000220A821310700403B +:1065D00014E0FF7C00009821977900108F9200381A +:1065E0003338FFFF131200A8000020210080A021F3 +:1065F000108000F300A088211620FECE00000000CD +:106600000A00031F2E9100013C0380008C62017878 +:106610000440FFFE240808008F860000AC68017863 +:106620003C038000946D008A31ACFFFF0186582343 +:10663000256AFFFF31441FFF2C8900081520FFF950 +:10664000000000008F8F0048347040008F83003CB2 +:1066500000E0A021240E0F0025E70001AF870048CD +:1066600000D03021023488233C08800031F500FF3F +:10667000106E0005240700019398004233130001B7 +:106680000013924036470001001524003C0A010027 +:10669000008A4825ACC900008F82004830BF003610 +:1066A00030B90008ACC200041320009900FF9825FF +:1066B00035120E009650000A8F8700003C0F8100B3 +:1066C0003203FFFF24ED000835060140006F60250E +:1066D0003C0E100031AB1FFF269200062405000E71 +:1066E000ACCC0020026E9825A4C5001AAF8B000028 +:1066F000A4D20018162000083C1080008F89003CAE +:1067000024020F00512200022417000136730040BA +:106710000E0001883C10800036060E008CCB001461 +:10672000360A014002402021AD4B00048CC5001CFC +:10673000AD450008A1550012AD5300140E0001989C +:106740003C151000AE1501780A000352000000004D +:10675000936F0009976E0012936D000B31E500FFF7 +:1067600000AE202131AC00FF008C80212602000AFF +:106770003050FFFF0E0001E7020020218F86004805 +:106780003C0341003C05800024CB0001AF8B004856 +:10679000936A00099769001230C600FF315F00FF5D +:1067A0003128FFFF03E8382124F900020006C40065 +:1067B0000319782501E37025AC4E00008F6D000CA5 +:1067C00034A40E00948B001401B26025AC4C00047C +:1067D0008C85001C8F670004936A00023164FFFF00 +:1067E000314900FFAFA900108F680014AFB1001845 +:1067F0000E0001CBAFA800140A0002FD0200202108 +:10680000AF600004A36000029798004033082000A6 +:106810001500FEA300003021A760001297840040FD +:10682000936B000A3C10800030931F0000135183CB +:10683000014BA82126A20028A362000936090E00F8 +:10684000953F000C0A000295A77F00108F7000147E +:10685000360900400E000188AF6900140A0002C921 +:10686000000000000A00034F000020210641FEFA4C +:10687000ACA0000C8CAC000C3C0D8000018D902570 +:106880000A0002EAACB2000C000090210A0002C526 +:1068900024130001128000073C028000344B0E00DC +:1068A0009566000830D300401260004900000000E7 +:1068B0003C0680008CD001780600FFFE34C50E0037 +:1068C00094B500103C03050034CC014032B8FFFF02 +:1068D00003039025AD92000C8CAF0014240D200012 +:1068E0003C041000AD8F00048CAE001CAD8E00087F +:1068F000A1800012A580001AAD800020A58000189C +:10690000AD8D0014ACC401780A0003263C0680005B +:106910008F9F0000351801402692000227F90008D9 +:1069200033281FFFA71200180A000391AF88000048 +:106930003C02800034450140ACA0000C1280001BDA +:1069400034530E0034510E008E370010ACB70004E3 +:106950008E2400183C0B8000ACA400083570014068 +:1069600024040040A20000128FBF0048A600001AB5 +:106970008FB70044AE0000208FB60040A60000187C +:106980008FB5003CAE0400148FB400388FB30034D0 +:106990008FB200308FB1002C8FB000283C02100065 +:1069A00027BD005003E00008AD6201788E66001438 +:1069B000ACA600048E64001C0A00042A3C0B800074 +:1069C0000E0001902E9100010A0003200237B0252D +:1069D000000000000000000D00000000240003691A +:1069E0000A0004013C06800027BDFFD8AFBF00208D +:1069F0003C0980003C1F20FFAFB200183C0760003C +:106A000035320E002402001037F9FFFDACE23008E9 +:106A1000AFB3001CAFB10014AFB00010AE5900000E +:106A20000000000000000000000000000000000066 +:106A3000000000003C1800FF3713FFFDAE530000BC +:106A40003C0B60048D7050002411FF7F3C0E00024F +:106A50000211782435EC380C35CD0109ACED4C1819 +:106A6000240A0009AD6C50008CE80438AD2A0008F7 +:106A7000AD2000148CE54C1C3106FFFF38C42F718B +:106A800000051E023062000F2486C0B310400007CC +:106A9000AF8200088CE54C1C3C09001F3528FC0027 +:106AA00000A81824000321C2AF8400048CF1080858 +:106AB0003C0F57092412F0000232702435F0001008 +:106AC00001D0602601CF68262DAA00012D8B000180 +:106AD000014B382550E00009A380000C3C1F601CCE +:106AE0008FF8000824190001A399000C33137C00CF +:106AF000A7930010A780000EA380000DAF80004870 +:106B000014C00003AF8000003C066000ACC0442C01 +:106B10000E0005B93C1080000E000F1A361101005E +:106B20003C12080026523DD03C13080026733E500C +:106B30008E03000038640001308200011440FFFC25 +:106B40003C0B800A8E2600002407FF8024C90240E7 +:106B5000312A007F014B402101272824AE06002066 +:106B6000AF880044AE0500243C048000AF86003CA2 +:106B70008C8C01780580FFFE24180800922F0008F5 +:106B8000AC980178A38F0042938E004231CD000172 +:106B900011A0000F24050D0024DFF8002FF90301D8 +:106BA0001320001C000629C224A4FFF00004104298 +:106BB000000231400E00020200D2D8213C02400007 +:106BC0003C068000ACC201380A0004A000000000AE +:106BD00010C50023240D0F0010CD00273C1F800896 +:106BE00037F9008093380000240E0050330F00FF67 +:106BF00015EEFFF33C0240000E000A3600000000D4 +:106C00003C0240003C068000ACC201380A0004A0EF +:106C1000000000008F83000400A3402B1500000B30 +:106C20008F8B0008006B50212547FFFF00E5482BA4 +:106C30001520000600A36023000C19400E0002027C +:106C40000073D8210A0004C43C0240000000000D7B +:106C50000E000202000000000A0004C43C024000D2 +:106C60003C1B0800277B3F500E0002020000000082 +:106C70000A0004C43C0240003C1B0800277B3F7014 +:106C80000E000202000000000A0004C43C024000A2 +:106C90003C0660043C09080025290104ACC9502CBD +:106CA0008CC850003C0580003C0200023507008083 +:106CB000ACC750003C040800248415A43C03080021 +:106CC0002463155CACA50008ACA2000C3C010800D4 +:106CD000AC243D603C010800AC233D6403E00008A7 +:106CE0002402000100A030213C1C0800279C3D68C4 +:106CF0003C0C04003C0B0002008B3826008C402624 +:106D00002CE200010007502B2D050001000A4880ED +:106D10003C03080024633D60004520250123182121 +:106D20001080000300001021AC6600002402000166 +:106D300003E00008000000003C1C0800279C3D68A0 +:106D40003C0B04003C0A0002008A3026008B3826E7 +:106D50002CC200010006482B2CE5000100094080F0 +:106D60003C03080024633D600045202501031821F1 +:106D700010800005000010213C0C0800258C155CDB +:106D8000AC6C00002402000103E0000800000000D9 +:106D90003C0900023C08040000883026008938269F +:106DA0002CC30001008028212CE400010083102561 +:106DB0001040000B000030213C1C0800279C3D685F +:106DC0003C0A80008D4E00082406000101CA682597 +:106DD000AD4D00088D4C000C01855825AD4B000CC5 +:106DE00003E0000800C010213C1C0800279C3D68FF +:106DF0003C0580008CA6000C000420272402000122 +:106E000000C4182403E00008ACA3000C3C020002FC +:106E10001082000B3C0560003C0704001087000353 +:106E20000000000003E00008000000008CA908D06A +:106E3000240AFFFD012A402403E00008ACA808D082 +:106E40008CA408D02406FFFE0086182403E0000866 +:106E5000ACA308D03C05601A34A600108CC3008097 +:106E600027BDFFF88CC50084AFA3000093A40000E9 +:106E70002402000110820003AFA5000403E0000813 +:106E800027BD000893A7000114E0001497AC00028E +:106E900097B800023C0F8000330EFFFC01CF682141 +:106EA000ADA50000A3A000003C0660008CC708D080 +:106EB0002408FFFE3C04601A00E82824ACC508D072 +:106EC0008FA300048FA200003499001027BD000892 +:106ED000AF22008003E00008AF2300843C0B800059 +:106EE000318AFFFC014B48218D2800000A00057DF6 +:106EF000AFA8000427BDFFE8AFBF00103C1C08008E +:106F0000279C3D683C0580008CA4000C8CA20004EA +:106F10003C0300020044282410A0000A00A3182407 +:106F20003C0604003C0400021460000900A6102482 +:106F30001440000F3C0404000000000D3C1C08003D +:106F4000279C3D688FBF001003E0000827BD001894 +:106F50003C0208008C423D600040F809000000003F +:106F60003C1C0800279C3D680A0005A68FBF001046 +:106F70003C0208008C423D640040F809000000001B +:106F80000A0005AC00000000000411C003E0000886 +:106F9000244202403C04080024843FB42405001A23 +:106FA0000A00009C0000302127BDFFE0AFB00010B8 +:106FB0003C108000AFBF0018AFB1001436110100C3 +:106FC000922200090E0005B63044007F8E3F00007B +:106FD0008F89003C3C0F008003E26021258800403F +:106FE0000049F821240DFF80310E00783198007897 +:106FF00035F9000135F100020319382501D1482582 +:10700000010D302403ED5824018D2824240A00406A +:1070100024040080240300C0AE0B0024AE0008103E +:10702000AE0A0814AE040818AE03081CAE05080426 +:10703000AE070820AE060808AE0908243609090084 +:107040009539000C3605098033ED007F3338FFFF9A +:10705000001889C0AE110800AE0F0828952C000C4E +:107060008FBF00188FB10014318BFFFF000B51C090 +:10707000AE0A002C8CA400508FB000108CA3003CF2 +:107080008D2700048CA8001C8CA600383C0E800ABA +:1070900001AE102127BD0020AF820044AF84005014 +:1070A000AF830054AF87004CAF88005C03E000085A +:1070B000AF8600603C09080091293FD924A800024E +:1070C0003C05110000093C0000E8302500C51825EA +:1070D00024820008AC83000003E00008AC800004B8 +:1070E0003C098000352309009128010B906A0011AA +:1070F0002402002800804821314700FF00A07021B1 +:1071000000C068213108004010E20002340C86DD26 +:10711000240C08003C0A800035420A9A944700007B +:10712000354B0A9C35460AA030F9FFFFAD39000007 +:107130008D780000354B0A8024040001AD3800042E +:107140008CCF0000AD2F00089165001930A300031B +:107150001064009028640002148000AF240500022F +:107160001065009E240F0003106F00B435450AA47B +:10717000240A0800118A0048000000005100003D68 +:107180003C0B80003C0480003483090090670012AF +:1071900030E200FF004D7821000FC8802724000155 +:1071A0003C0A8000354F090091E50019354C0980F3 +:1071B0008D87002830A300FF0003150000475825E5 +:1071C0000004C4003C19600001793025370806FF2F +:1071D000AD260000AD2800048DEA002C25280028EB +:1071E000AD2A00088DEC0030AD2C000C8DE500348C +:1071F000AD2500108DE400383C05800034AC093C1E +:10720000AD2400148DE3001CAD2300188DE7002091 +:10721000AD27001C8DE20024AD2200208DF900284E +:1072200034A20100AD3900248D830000AD0E0004AE +:1072300034B90900AD0300008C47000C250200148E +:10724000AD070008932B00123C04080090843FD83F +:10725000AD000010317800FF030D302100064F0013 +:1072600000047C00012F702535CDFFFC03E00008F1 +:10727000AD0D000C35780900930600123C0508009E +:1072800094A53FC830C800FF010D5021000A60805E +:107290000A00063C018520211500005B000000006B +:1072A0003C08080095083FCE3C06080094C63FC83D +:1072B000010610213C0B800035790900933800113C +:1072C000932A001935660A80330800FF94CF002AFC +:1072D00000086082314500FF978A0058000C1E00AC +:1072E000000524003047FFFF006410250047C0253B +:1072F00001EA30213C0B4000030B402500066400EE +:10730000AD280000AD2C0004932500183C030006B6 +:107310002528001400053E0000E31025AD220008DA +:107320008F24002C3C05800034AC093CAD24000CBB +:107330008F38001C34A20100254F0001AD38001029 +:107340008D830000AD0E000431EB7FFFAD03000024 +:107350008C47000C34B90900A78B0058AD07000812 +:10736000932B00123C04080090843FD8250200149F +:10737000317800FF030D302100064F0000047C002F +:10738000012F702535CDFFFCAD00001003E0000893 +:10739000AD0D000C3C02080094423FD23C050800B1 +:1073A00094A53FC835440AA43C07080094E73FC4AD +:1073B000948B00000045C8210327C023000B1C004C +:1073C0002706FFF200665025AD2A000CAD20001004 +:1073D000AD2C00140A00063025290018354F0AA4E8 +:1073E00095E50000956400280005140000043C00A9 +:1073F0003459810000EC5825AD39000CAD2B00103C +:107400000A000630252900143C0C0800958C3FCE5C +:107410000A000681258200015460FF56240A0800F4 +:1074200035580AA49706000000061C00006C502581 +:10743000AD2A000C0A000630252900103C03080084 +:1074400094633FD23C07080094E73FC83C0F080014 +:1074500095EF3FC494A4000095790028006710219F +:10746000004F582300041C00001934002578FFEE5B +:1074700000D87825346A8100AD2A000CAD2F0010A9 +:10748000AD200014AD2C00180A0006302529001C80 +:1074900003E00008240207D027BDFFE0AFB20018C8 +:1074A000AFB10014AFB00010AFBF001C0E00007CE5 +:1074B000008088218F8800548F87004C3C0580080D +:1074C00034B20080011128213C1080002402008089 +:1074D000240300C000A72023AE0208183C06800841 +:1074E000AE03081C18800004AF850054ACC500042E +:1074F0008CC90004AF89004C1220000936040980B1 +:107500000E0006F800000000924C00278E0B00745D +:1075100001825004014B3021AE46000C3604098034 +:107520008C8E001C8F8F005C01CF682319A0000493 +:107530008FBF001C8C90001CAF90005C8FBF001CA4 +:107540008FB200188FB100148FB000100A00007EB7 +:1075500027BD00208F8600508F8300548F82004CFF +:107560003C05800834A40080AC860050AC83003C0D +:1075700003E00008ACA200043C0308008C63005444 +:1075800027BDFFF8308400FF2462000130A500FF12 +:107590003C010800AC22005430C600FF3C078000CC +:1075A0008CE801780500FFFE3C0C7FFFA3A40003DC +:1075B0008FAA0000358BFFFF014B4824000627C02F +:1075C00001244025AFA8000034E201009043000AE6 +:1075D000A3A000023C1980FFA3A300018FAF00000D +:1075E00030AE007F3738FFFF01F86024000E6E00D8 +:1075F0003C0A002034E50140018D58253549200022 +:107600002406FF803C04100027BD0008ACAB000C32 +:10761000ACA90014A4A00018A0A6001203E0000862 +:10762000ACE40178308800FF30A700FF3C03800005 +:107630008C6201780440FFFE3C0C8000358A0A0011 +:107640008D4B00203584014035850980AC8B0004CA +:107650008D4900240007302B00061540AC89000836 +:10766000A088001090A3004CA083002D03E0000828 +:10767000A480001827BDFFE8308400FFAFBF0010D2 +:107680000E00075D30A500FF8F8300548FBF0010F0 +:107690003C06800034C50140344700402404FF907C +:1076A0003C02100027BD0018ACA3000CA0A40012DF +:1076B000ACA7001403E00008ACC2017827BDFFE0CE +:1076C0003C088008AFBF001CAFB20018AFB1001477 +:1076D000AFB00010351000808E0600183C07800007 +:1076E000309200FF00C72025AE0400180E00007C79 +:1076F00030B100FF92030005346200080E00007EE6 +:10770000A2020005024020210E000771022028215C +:10771000024020218FBF001C8FB200188FB10014CF +:107720008FB0001024050005240600010A0007326E +:1077300027BD00203C05800034A309809066000826 +:1077400030C200081040000F3C0A01013549080A08 +:10775000AC8900008CA80074AC8800043C070800C9 +:1077600090E73FD830E5001050A00008AC8000083A +:107770003C0D800835AC00808D8B0058AC8B000828 +:107780002484000C03E00008008010210A0007B5E3 +:107790002484000C27BDFFE83C098000AFB0001036 +:1077A000AFBF00143526098090C8000924020006E6 +:1077B00000A05821310300FF3527090000808021F7 +:1077C000240500041062007B2408000294CF005CB2 +:1077D0003C0E020431EDFFFF01AE6025AE0C00004F +:1077E00090CA00083144002010800008000000000A +:1077F00090C2004E3C1F010337F90300305800FFD0 +:107800000319302524050008AE06000490F9001184 +:1078100090E6001290E40011333800FF00187082E7 +:1078200030CF00FF01CF5021014B6821308900FF8C +:1078300031AAFFFF39230028000A60801460002C61 +:10784000020C482390E400123C198000372F0100FD +:10785000308C00FF018B1821000310800045F821B7 +:10786000001F8400360706FFAD270004373F0900DC +:1078700093EC001193EE0012372609800005C082B8 +:107880008DE4000C8CC5003431CD00FF01AB10211C +:107890000058182100A4F8230008840000033F00CA +:1078A00000F0302533F9FFFF318F00FC00D970253F +:1078B0000158202101E9682100045080ADAE000C80 +:1078C0000E00007C012A80213C088008240B000463 +:1078D000350500800E00007EA0AB000902001021DB +:1078E0008FBF00148FB0001003E0000827BD001800 +:1078F00090EC001190E300193C18080097183FCE57 +:10790000318200FF0002F882307000FF001FCE00BD +:1079100000103C000327302500D870253C0F4000A4 +:1079200001CF68253C198000AD2D0000373F0900CC +:1079300093EC001193EE0012372F010037260980D7 +:107940000005C0828DE4000C8CC5003431CD00FFF1 +:1079500001AB10210058182100A4F823000884006E +:1079600000033F0000F0302533F9FFFF318F00FCAA +:1079700000D970250158202101E9682100045080B8 +:10798000ADAE000C0E00007C012A80213C0880086E +:10799000240B0004350500800E00007EA0AB00091A +:1079A000020010218FBF00148FB0001003E0000808 +:1079B00027BD00180A0007C72408001227BDFFD002 +:1079C0003C038000AFB60028AFB50024AFB4002060 +:1079D000AFB10014AFBF002CAFB3001CAFB20018A2 +:1079E000AFB000103467010090E6000B309400FF48 +:1079F00030B500FF30C200300000B02110400099C7 +:107A000000008821346409809088000800082E0056 +:107A100000051E03046000C0240400048F86005487 +:107A20003C010800A0243FD83C0C8000AD800048F9 +:107A30003C048000348E010091CD000B31A5002064 +:107A400010A000073C078000349309809272000860 +:107A50000012860000107E0305E000C43C1F800871 +:107A600034EC0100918A000B34EB09809169000825 +:107A7000314400400004402B3123000800C8982303 +:107A80001460000224120003000090213C108000CA +:107A900036180A8036040900970E002C90830011D6 +:107AA0009089001293050018307F00FF312800FFF5 +:107AB000024810210002C880930D0018033F78216E +:107AC00001F1302130B100FF00D11821A78E0058FC +:107AD0003C010800A4263FCE3C010800A4233FD06F +:107AE00015A00002000000000000000D920B010B29 +:107AF0003065FFFF3C010800A4233FD2316A0040FB +:107B00003C010800A4203FC83C010800A4203FC459 +:107B10001140000224A4000A24A4000B3091FFFFAE +:107B20000E0001E7022020219206010B3C0C080008 +:107B3000958C3FD2004020210006698231A70001C8 +:107B40000E00060101872821004020210260282123 +:107B50000E00060C024030210E0007A1004020213B +:107B600016C00069004020219212010B32560040DD +:107B700012C000053C0500FF8C93000034AEFFFFEF +:107B8000026E8024AC9000000E0001FB0220202138 +:107B90003C0F080091EF3FD831F10003122000168E +:107BA0003C1380088F8200543C09800835280080EF +:107BB000245F0001AD1F003C3C0580088CB9000427 +:107BC00003E02021033FC0231B000002AF9F0054AD +:107BD0008CA400040E0006F8ACA400043C0780004E +:107BE0008CEB00743C04800834830080004B5021EF +:107BF000AC6A000C3C1380083670008002802021A3 +:107C000002A02821A200006B0E00075D3C1480003A +:107C10008F920054368C0140AD92000C8F86004844 +:107C20003C151000344D000624D60001AF960048E4 +:107C30008FBF002CA18600128FB60028AD8D0014D6 +:107C40008FB3001CAE9501788FB200188FB5002459 +:107C50008FB400208FB100148FB0001003E0000833 +:107C600027BD003034640980908F0008000F760033 +:107C7000000E6E0305A00033347F090093F8001B4B +:107C8000241900103C010800A0393FD8331300022A +:107C90001260FF678F8600548F8200601446FF6574 +:107CA0003C0480000E00007C000000003C048008C2 +:107CB0003485008090A8000924060016310300FFD7 +:107CC0001066000D0000000090AB00093C070800A2 +:107CD00090E73FD824090008316400FF34EA00012E +:107CE0003C010800A02A3FD81089002F240C000A6C +:107CF000108C00282402000C0E00007E0000000002 +:107D00000A0008608F8600540E0007B9024028213F +:107D10000A0008AE004020213C0B8008356A008034 +:107D20008D4600548CE9000C1120FF3DAF860054B5 +:107D3000240700143C010800A0273FD80A00085F70 +:107D40003C0C800090910008241200023C010800C5 +:107D5000A0323FD8323000201200000B2416000160 +:107D60008F8600540A0008602411000837F800804C +:107D70008F020038AFE200048FF90004AF19003C15 +:107D80000A00086C3C0780008F8600540A000860D7 +:107D900024110004A0A200090E00007E00000000D3 +:107DA0000A0008608F860054240200140A00093A71 +:107DB000A0A2000927BDFFE8AFB000103C10800072 +:107DC000AFBF001436020100904400090E00075DA9 +:107DD000240500013C0480089099000E3483008043 +:107DE000909F000F906F00269089000A33F800FFE3 +:107DF00000196E000018740031EC00FF01AE502530 +:107E0000000C5A00014B3825312800FF3603014091 +:107E10003445600000E830252402FF813C04100056 +:107E2000AC66000C8FBF0014AC650014A062001299 +:107E3000AE0401788FB0001003E0000827BD0018E1 +:107E400027BDFFE8308400FFAFBF00100E00075DC4 +:107E500030A500FF3C05800034A4014034470040B9 +:107E60002406FF92AC870014A08600128F83005472 +:107E70008FBF00103C02100027BD0018AC83000C1F +:107E800003E00008ACA2017827BDFFD8AFB0001016 +:107E9000308400FF30B000FF3C058000AFB100141B +:107EA000AFBF0020AFB3001CAFB20018000410C277 +:107EB00034A60100320300023051000114600007B3 +:107EC00090D200093C098008353300809268000593 +:107ED0003107000810E0000C308A00100240202119 +:107EE0000E00078302202821240200018FBF0020FA +:107EF0008FB3001C8FB200188FB100148FB0001028 +:107F000003E0000827BD00281540003434A50A000E +:107F10008CB800248CAF0008130F004B00003821F0 +:107F20003C0D800835B30080926C00682406000286 +:107F3000318B00FF116600843C06800034C20100D2 +:107F40009263004C90590009307F00FF53F9000400 +:107F50003213007C10E00069000000003213007C46 +:107F60005660005C0240202116200009320D0001FD +:107F70003C0C800035840100358B0A008D6500249F +:107F80008C86000414A6FFD900001021320D0001D8 +:107F900011A0000E024020213C1880003710010083 +:107FA0008E0F000C8F8E005011EE000800000000B4 +:107FB0000E000843022028218E19000C3C1F800867 +:107FC00037F00080AE190050024020210E000771EA +:107FD000022028210A00098F240200013C05080024 +:107FE0008CA5006424A400013C010800AC240064BA +:107FF0001600000D00000000022028210E0007716D +:1080000002402021926E0068240C000231CD00FF56 +:1080100011AC0022024020210E00094100000000A6 +:108020000A00098F240200010E00007024040001E0 +:10803000926B0025020B30250E00007EA266002503 +:108040000A0009D3022028218E6200188CDF000468 +:108050008CB9002400021E0217F9FFB13065007FC1 +:108060009268004C264400013093007F1265004066 +:10807000310300FF1464FFAB3C0D8008264700016C +:1080800030F1007F30E200FF1225000B24070001D1 +:10809000004090210A00099C2411000124050004DD +:1080A0000E000732240600010E0009410000000006 +:1080B0000A00098F240200012405FF8002452024C4 +:1080C00000859026324200FF004090210A00099C62 +:1080D000241100010E00084302202821320700303D +:1080E00010E0FFA132100082024020210E00078321 +:1080F000022028210A00098F240200018E6900183D +:108100000240202102202821012640250E0009647A +:10811000AE6800189264004C240500032406000198 +:108120000E000732308400FF0E00007024040001AE +:1081300092710025021150250E00007EA26A0025D2 +:108140000A00098F240200018E6F00183C1880007D +:108150000240202101F87025022028210E0007711D +:10816000AE6E00189264004C0A000A1B240500043D +:10817000324A0080394900801469FF6A3C0D80084A +:108180000A0009F42647000127BDFFC0AFB0001860 +:108190003C108000AFBF0038AFB70034AFB600303E +:1081A000AFB5002CAFB40028AFB30024AFB20020AD +:1081B0000E0005BEAFB1001C360201009045000B59 +:1081C0000E00097690440008144000E78FBF003885 +:1081D0003C08800835070080A0E0006B3606098067 +:1081E00090C50000240300503C17080026F73F907C +:1081F00030A400FF3C13080026733FA01083000347 +:108200003C1080000000B82100009821241F0010BD +:108210003611010036120A00361509808E580024E6 +:108220008E3400048EAF00208F8C00543C01080077 +:10823000A03F3FD836190A80972B002C8EF60000FD +:10824000932A00180298702301EC68233C0108006F +:10825000AC2E3FB43C010800AC2D3FB83C010800F7 +:10826000AC2C3FDCA78B005802C0F809315400FF4A +:1082700030490002152000E930420001504000C49E +:108280009227000992A90008312800081500000271 +:10829000241500030000A8213C0A80003543090092 +:1082A00035440A008C8D00249072001190700012E9 +:1082B000907F0011325900FF321100FF02B11021EE +:1082C0000002C08033EF00FF0319B021028F70213C +:1082D00002D4602125CB00103C010800A4363FCE1B +:1082E0003C010800AC2D3FE03C010800A42C3FD02D +:1082F0003C010800A42B3FCC3556010035540980C1 +:1083000035510E008F8700548F89005C8E850020C8 +:1083100024080006012730233C010800AC283FD484 +:1083200000A7282304C000B50000902104A000B3DA +:1083300000C5502B114000B5000000003C010800B2 +:10834000AC263FB88E6200000040F8090000000033 +:108350003046000214C0007400408021304B000100 +:10836000556000118E6200043C0D08008DAD3FBCCD +:108370003C0EC0003C04800001AE6025AE2C000025 +:108380008C980000330F000811E0FFFD0000000092 +:10839000963F000824120001A79F00408E39000478 +:1083A000AF9900388E6200040040F8090000000018 +:1083B0000202802532030002146000B300000000B6 +:1083C0003C09080095293FC43C06080094C63FD0EC +:1083D0003C0A0800954A3FC63C0708008CE73FBCB2 +:1083E000012670213C0308008C633FE03C08080034 +:1083F00095083FDA01CA20218ED9000C00E9282116 +:10840000249F000200A878210067C02133E4FFFF09 +:10841000AF9900503C010800AC383FE03C01080037 +:10842000A42F3FC83C010800A42E3FD20E0001E754 +:10843000000000008F8D0048004020213C01080012 +:10844000A02D3FD98E62000825AC0001AF8C0048FA +:108450000040F809000000008F85005402A0302180 +:108460000E00060C004020210E0007A10040202134 +:108470008E6B000C0160F809004020213C0A0800C6 +:10848000954A3FD23C06080094C63FC601464821A3 +:10849000252800020E0001FB3104FFFF3C05080007 +:1084A0008CA53FB43C0708008CE73FBC00A7202305 +:1084B0003C010800AC243FB414800006000000001A +:1084C0003C0208008C423FD4344B00403C01080081 +:1084D000AC2B3FD4124000438F8E00448E2D0010F1 +:1084E0008F920044AE4D00208E2C0018AE4C00241C +:1084F0003C04080094843FC80E0006FA0000000007 +:108500008F9F00548E6700103C010800AC3F3FDC99 +:1085100000E0F809000000003C1908008F393FB462 +:108520001720FF798F870054979300583C11800ED5 +:10853000321601000E000729A633002C16C0004594 +:10854000320300105460004C8EE5000432080040F5 +:108550005500001D8EF000088EE4000C0080F80924 +:10856000000000008FBF00388FB700348FB6003096 +:108570008FB5002C8FB400288FB300248FB2002059 +:108580008FB1001C8FB0001803E0000827BD004029 +:108590008F86003C36110E0000072E0000A6202515 +:1085A000AE0400808E4300208E500024AFA3001044 +:1085B000AE2300148FB20010AE320010AE30001C9B +:1085C0000A000A75AE3000180200F8090000000029 +:1085D0008EE4000C0080F809000000000A000B2E59 +:1085E0008FBF003824180001240F0001A5C000200F +:1085F000A5D800220A000B10ADCF00243C010800D2 +:10860000AC203FB80A000AA68E6200003C010800B8 +:10861000AC253FB80A000AA68E6200009224000929 +:108620000E000771000028218FBF00388FB700347B +:108630008FB600308FB5002C8FB400288FB3002484 +:108640008FB200208FB1001C8FB0001803E000082B +:1086500027BD00403C1480009295010900002821AC +:108660000E00084332A400FF320300105060FFB830 +:10867000320800408EE5000400A0F8090000000068 +:108680000A000B28320800405240FFA89793005878 +:108690008E3400148F930044AE7400208E35001C7D +:1086A000AE7500240A000B1F979300588F820014A8 +:1086B0000004218003E00008008210213C078008AC +:1086C00034E200809043006900804021106000097E +:1086D0003C0401003C0708008CE73FDC8F8300303E +:1086E00000E32023048000089389001C14E30003A6 +:1086F0000100202103E00008008010213C0401005B +:1087000003E00008008010211120000B00673823CF +:108710003C0D800035AC0980918B007C316A0002F1 +:10872000114000202409003400E9702B15C0FFF12E +:108730000100202100E938232403FFFC00A3C82402 +:1087400000E3C02400F9782B15E0FFEA030820219C +:1087500030C400030004102314C000143049000387 +:108760000000302100A9782101E6702100EE682B7D +:1087700011A0FFE03C0401002D3800010006C82BC9 +:10878000010548210319382414E0FFDA2524FFFCF1 +:108790002402FFFC00A218240068202103E0000846 +:1087A000008010210A000B9E240900303C0C800040 +:1087B0003586098090CB007C316A00041540FFE9C2 +:1087C000240600040A000BAD000030213C03080021 +:1087D0008C63005C8F82001827BDFFE0AFBF0018DC +:1087E000AFB1001410620005AFB00010000329C043 +:1087F00024A40280AF840014AF8300183C108000D2 +:1088000036020A0094450032361101000E000B7F3B +:1088100030A43FFF8E240000241FFF803C11008005 +:108820000082C021031F60243309007F000CC9406F +:1088300003294025330E0078362F00033C0D10002D +:10884000010D502501CF5825AE0C002836080980AF +:10885000AE0C080CAE0B082CAE0A08309103006970 +:108860003C06800C0126382110600006AF870034DA +:108870008D09003C8D03006C0123382318E0008231 +:10888000000000003C0B8008356A00803C1080002E +:10889000A1400069360609808CC200383C06800081 +:1088A00034C50A0090A8003C310C00201180001A49 +:1088B000AF820030240D00013C0E800035D10A004B +:1088C000A38D001CAF8000248E2400248F850024FB +:1088D000240D0008AF800020AF8000283C01080074 +:1088E000A42D3FC63C010800A4203FDA0E000B83F4 +:1088F000000030219228003C8FBF00188FB1001477 +:108900008FB0001000086142AF82002C27BD00200C +:1089100003E000083182000190B80032240E00010B +:10892000330F00FF000F2182108E00412419000236 +:108930001099006434C40AC03C03800034640A0007 +:108940008C8F002415E0001E34660900909F0030D3 +:108950002418000533F9003F1338004E24030001AA +:108960008F860020A383001CAF860028AF860024DA +:108970003C0E800035D10A008E2400248F8500240F +:10898000240D00083C010800A42D3FC63C0108004E +:10899000A4203FDA0E000B83000000009228003C68 +:1089A0008FBF00188FB100148FB000100008614213 +:1089B000AF82002C27BD002003E0000831820001B7 +:1089C0008C8A00088C8B00248CD000643C0E8000C4 +:1089D00035D10A00014B2823AF900024A380001C4E +:1089E000AF8500288E2400248F8600208F850024E8 +:1089F000240D00083C010800A42D3FC63C010800DE +:108A0000A4203FDA0E000B83000000009228003CF7 +:108A10008FBF00188FB100148FB0001000086142A2 +:108A2000AF82002C27BD002003E000083182000146 +:108A300090A200303051003F5224002834C50AC0B3 +:108A40008CB000241600002234CB09008CA600480C +:108A50003C0A7FFF3545FFFF00C510243C0E800017 +:108A6000AF82002035C509008F8800208CAD0060E2 +:108A7000010D602B15800002010020218CA40060F4 +:108A80000A000C22AF8400208D02006C0A000BFC4F +:108A90003C0680008C8200488F8600203C097FFFC6 +:108AA0003527FFFF004788243C0480082403000189 +:108AB000AF910028AC80006CA383001C0A000C302E +:108AC000AF8600248C9F00140A000C22AF9F002068 +:108AD0008D6200680A000C6C3C0E800034C4098072 +:108AE0008C8900708CA300140123382B10E0000443 +:108AF000000000008C8200700A000C6C3C0E8000AC +:108B00008CA200140A000C6C3C0E80008F8500249F +:108B100027BDFFE0AFBF0018AFB1001414A00008DC +:108B2000AFB000103C04800034870A0090E60030AB +:108B30002402000530C3003F106200B934840900EC +:108B40008F91002000A080213C048000348E0A0018 +:108B50008DCD00043C0608008CC63FB831A73FFF0E +:108B600000E6602B5580000100E03021938F001C4F +:108B700011E0007800D0282B349F098093F9007C05 +:108B800033380002130000792403003400C3102B93 +:108B9000144000D90000000000C3302300D0282B6F +:108BA0003C010800A4233FC414A0006E0200182159 +:108BB0003C0408008C843FB40064402B5500000145 +:108BC000006020213C05800034A90A00912A003C65 +:108BD0003C010800AC243FBC31430020146000037A +:108BE0000000482134AB0E008D6900188F88002CDE +:108BF0000128202B1080005F000000003C050800C9 +:108C00008CA53FBC00A96821010D602B1180005C80 +:108C100000B0702B0109382300E028213C01080036 +:108C2000AC273FBC12000003240AFFFC10B0008DEB +:108C30003224000300AA18243C010800A4203FDAD3 +:108C40003C010800AC233FBC006028218F84002435 +:108C5000120400063C0B80088D6C006C0200202181 +:108C6000AF91002025900001AD70006C8F8D002821 +:108C700000858823AF91002401A52023AF8400281C +:108C80001220000224070018240700103C18800856 +:108C90003706008090CF00683C010800A0273FD82D +:108CA0002407000131EE00FF11C70047000000005B +:108CB00014800018000028213C06800034D109806F +:108CC00034CD010091A600098E2C001824C40001A7 +:108CD000000C86023205007F308B007F1165007F1B +:108CE0002407FF803C19800837290080A124004C0C +:108CF0003C0808008D083FD4241800023C010800FD +:108D0000A0384019350F00083C010800AC2F3FD4B3 +:108D1000240500103C02800034440A009083003C8B +:108D2000307F002013E0000500A02021240A00016C +:108D30003C010800AC2A3FBC34A400018FBF0018DE +:108D40008FB100148FB000100080102103E00008E4 +:108D500027BD00203C010800A4203FC410A0FF94C0 +:108D6000020018210A000CC000C018210A000CB72C +:108D7000240300303C0508008CA53FBC00B0702BDC +:108D800011C0FFA8000000003C19080097393FC43B +:108D90000325C0210307782B11E000072CAA00044B +:108DA0003C0360008C625404305F003F17E0FFE337 +:108DB000240400422CAA00041140FF9A240400421B +:108DC0000A000D248FBF00181528FFB9000000000D +:108DD0008CCA00183C1F800024020002015F182585 +:108DE000ACC3001837F90A00A0C200689329003C00 +:108DF0002404000400A01021312800203C010800B8 +:108E0000A0244019110000022405001024020001D2 +:108E10003C010800AC223FB40A000D1A3C0280005D +:108E20008F8800288C8900600109282B14A000027B +:108E3000010088218C9100603C048000348B0E007E +:108E40008D640018240A000102202821022030210C +:108E5000A38A001C0E000B83022080210A000CA6AE +:108E6000AF82002C00045823122000073164000355 +:108E70003C0E800035C7098090ED007C31AC0004C9 +:108E800015800019248F00043C010800A4243FDA57 +:108E90003C1F080097FF3FDA03E5C82100D9C02B2B +:108EA0001300FF6B8F8400242CA6000514C0FFA3C1 +:108EB0002404004230A200031440000200A2182340 +:108EC00024A3FFFC3C010800AC233FBC3C0108008C +:108ED000A4203FDA0A000CE70060282100C77024B4 +:108EE0000A000D0D01C720263C010800A42F3FDA1F +:108EF0000A000D78000000003C010800AC203FBCD7 +:108F00000A000D23240400428F8300283C058000C2 +:108F100034AA0A00146000060000102191470030B6 +:108F20002406000530E400FF108600030000000066 +:108F300003E0000800000000914B0048316900FF89 +:108F4000000941C21500FFFA3C0680083C040800F5 +:108F500094843FC43C0308008C633FDC3C19080048 +:108F60008F393FBC3C0F080095EF3FDA0064C02109 +:108F70008CCD00040319702101CF602134AB0E00A9 +:108F8000018D282318A0001D00000000914F004C07 +:108F90008F8C0034956D001031EE00FF8D89000438 +:108FA00001AE30238D8A000030CEFFFF000E290075 +:108FB0000125C82100003821014720210325182B55 +:108FC0000083C021AD990004AD980000918F000A84 +:108FD00001CF6821A18D000A956500128F8A0034A7 +:108FE000A5450008954B003825690001A5490038C2 +:108FF0009148000D35070008A147000D03E0000867 +:109000000000000027BDFFD8AFB000189388001CF7 +:109010008FB000143C0A80003C197FFF8F8700242A +:109020003738FFFFAFBF0020AFB1001C355F0A002B +:109030000218182493EB003C00087FC03C02BFFFDD +:10904000006F60252CF000013449FFFF3C1F080031 +:109050008FFF3FDC8F9900303C18080097183FD2F3 +:1090600001897824001047803C07EFFF3C05F0FFA2 +:1090700001E818253C1180003169002034E2FFFF2F +:1090800034ADFFFF362E098027A50010240600020C +:1090900003F96023270B0002354A0E0000621824F2 +:1090A0000080802115200002000040218D48001C16 +:1090B000A7AB0012058000392407000030E800FF4C +:1090C00000083F00006758253C028008AFAB001441 +:1090D000344F008091EA00683C08080091083FD9AD +:1090E0003C09DFFF352CFFFF000AF82B3C0208008B +:1090F00094423FCCA3A80011016CC024001FCF40B4 +:10910000031918258FA70010AFA300143C0C08000A +:10911000918C3FDBA7A200168FAB001400ED482412 +:109120003C0F01003C0A0FFF012FC82531980003B6 +:10913000355FFFFF016D40243C027000033F38247F +:1091400000181E0000E2482501037825AFAF001487 +:10915000AFA9001091CC007C0E000092A3AC0015CA +:10916000362D0A0091A6003C30C400201080000675 +:10917000260200083C11080096313FC8262EFFFF4A +:109180003C010800A42E3FC88FBF00208FB1001CF7 +:109190008FB0001803E0000827BD00288F8B002C3B +:1091A000010B502B5540FFC5240700010A000E0497 +:1091B00030E800FF9383001C3C02800027BDFFD8ED +:1091C00034480A0000805021AFBF002034460AC056 +:1091D000010028211060000E3444098091070030FE +:1091E000240B00058F89002030EC003F118B000B11 +:1091F00000003821AFA900103C0B80088D69006C7D +:10920000AFAA00180E00015AAFA90014A380001CD9 +:109210008FBF002003E0000827BD00288D1F0048F5 +:109220003C1808008F183FBC8F9900283C027FFF34 +:109230008D0800443443FFFFAFA900103C0B8008A9 +:109240008D69006C03E370240319782101CF682332 +:1092500001A83821AFAA00180E00015AAFA90014C6 +:109260000A000E58A380001C3C05800034A60A00AA +:1092700090C7003C3C06080094C63FDA3C02080058 +:109280008C423FD430E30020000624001060001E12 +:10929000004438253C0880083505008090A300680C +:1092A00000004821240800010000282124040001B6 +:1092B0003C0680008CCD017805A0FFFE34CF014034 +:1092C000ADE800083C0208008C423FDCA5E5000444 +:1092D000A5E40006ADE2000C3C04080090843FD9F0 +:1092E0003C03800834790080A1E40012ADE700144B +:1092F000A5E900189338004C3C0E1000A1F8002D91 +:1093000003E00008ACCE017834A90E008D28001CC3 +:109310003C0C08008D8C3FBC952B0016952A001440 +:10932000018648213164FFFF0A000E803145FFFFAE +:109330003C04800034830A009065003C30A2002089 +:109340001040001934870E00000040210000382131 +:10935000000020213C0680008CC901780520FFFE1A +:1093600034CA014034CF010091EB0009AD48000838 +:109370003C0E08008DCE3FDC240DFF91240C0040F4 +:109380003C081000A5440004A5470006AD4E000CA3 +:10939000A14D0012AD4C0014A5400018A14B002DAA +:1093A00003E00008ACC801788CE8001894E60012CD +:1093B00094E4001030C7FFFF0A000EA93084FFFFBD +:1093C0003C04800034830A009065003C30A20020F9 +:1093D0001040002727BDFFF82409000100003821B4 +:1093E000240800013C0680008CCA01780540FFFE7D +:1093F0003C0280FF34C40100908D00093C0C080041 +:10940000918C4019A3AD00038FAB00003185007F24 +:109410003459FFFF01665025AFAA00009083000A6F +:10942000A3A0000200057E00A3A300018FB80000E6 +:1094300034CB0140240C30000319702401CF68257F +:10944000AD6D000C27BD0008AD6C0014A5600018C0 +:10945000AD690008A56700042409FF80A56800061F +:109460003C081000A169001203E00008ACC80178B4 +:1094700034870E008CE9001894E6001294E4001082 +:1094800030C8FFFF0A000ECD3087FFFF27BDFFE089 +:10949000AFB100143C118000AFB00010AFBF001896 +:1094A00036380A00970F0032363001000E000B7F6D +:1094B00031E43FFF8E0E0000240DFF803C042000AD +:1094C00001C25821016D6024000C4940316A007FBF +:1094D000012A4025010438253C048008AE270830C5 +:1094E0003486008090C500682403000230A200FF8B +:1094F000104300048F9F00208F990024AC9F0068C8 +:10950000AC9900648FBF00188FB100148FB00010A9 +:1095100003E0000827BD00203C0A0800254A3A80E5 +:109520003C09080025293B103C08080025082F1C91 +:109530003C07080024E73BDC3C06080024C639044D +:109540003C05080024A536583C0408002484325CFD +:109550003C030800246339B83C0208002442375415 +:109560003C010800AC2A3F983C010800AC293F941C +:109570003C010800AC283F903C010800AC273F9C10 +:109580003C010800AC263FAC3C010800AC253FA4E0 +:109590003C010800AC243FA03C010800AC233FB0D4 +:1095A0003C010800AC223FA803E0000800000000D6 +:1095B00080000940800009008008010080080080C8 +:1095C00080080000800E00008008008080080000F5 +:1095D00080000A8080000A00800009808000090065 +:00000001FF --- linux-3.5.0.orig/security/device_cgroup.c +++ linux-3.5.0/security/device_cgroup.c @@ -7,12 +7,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include #define ACC_MKNOD 1 #define ACC_READ 2 @@ -493,6 +495,7 @@ return -EPERM; } +EXPORT_SYMBOL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { --- linux-3.5.0.orig/security/security.c +++ linux-3.5.0/security/security.c @@ -136,11 +136,19 @@ int security_ptrace_access_check(struct task_struct *child, unsigned int mode) { + int rc; + rc = yama_ptrace_access_check(child, mode); + if (rc) + return rc; return security_ops->ptrace_access_check(child, mode); } int security_ptrace_traceme(struct task_struct *parent) { + int rc; + rc = yama_ptrace_traceme(parent); + if (rc) + return rc; return security_ops->ptrace_traceme(parent); } @@ -384,6 +392,7 @@ return 0; return security_ops->path_rmdir(dir, dentry); } +EXPORT_SYMBOL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { @@ -400,14 +409,20 @@ return 0; return security_ops->path_symlink(dir, dentry, old_name); } +EXPORT_SYMBOL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { + int rc; if (unlikely(IS_PRIVATE(old_dentry->d_inode))) return 0; + rc = yama_path_link(old_dentry, new_dir, new_dentry); + if (rc) + return rc; return security_ops->path_link(old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) @@ -426,6 +441,7 @@ return 0; return security_ops->path_truncate(path); } +EXPORT_SYMBOL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { @@ -433,6 +449,7 @@ return 0; return security_ops->path_chmod(path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, uid_t uid, gid_t gid) { @@ -440,6 +457,7 @@ return 0; return security_ops->path_chown(path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(struct path *path) { @@ -516,11 +534,16 @@ return 0; return security_ops->inode_readlink(dentry); } +EXPORT_SYMBOL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) { + int rc; if (unlikely(IS_PRIVATE(dentry->d_inode))) return 0; + rc = yama_inode_follow_link(dentry, nd); + if (rc) + return rc; return security_ops->inode_follow_link(dentry, nd); } @@ -530,6 +553,7 @@ return 0; return security_ops->inode_permission(inode, mask); } +EXPORT_SYMBOL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -645,6 +669,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL(security_file_permission); int security_file_alloc(struct file *file) { @@ -705,6 +730,7 @@ return ret; return ima_file_mmap(file, prot); } +EXPORT_SYMBOL(security_mmap_file); int security_mmap_addr(unsigned long addr) { @@ -761,6 +787,7 @@ void security_task_free(struct task_struct *task) { + yama_task_free(task); security_ops->task_free(task); } @@ -876,6 +903,10 @@ int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) { + int rc; + rc = yama_task_prctl(option, arg2, arg3, arg4, arg5); + if (rc != -ENOSYS) + return rc; return security_ops->task_prctl(option, arg2, arg3, arg4, arg5); } --- linux-3.5.0.orig/security/commoncap.c +++ linux-3.5.0/security/commoncap.c @@ -979,9 +979,11 @@ } return ret; } +EXPORT_SYMBOL(cap_mmap_addr); int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) { return 0; } +EXPORT_SYMBOL(cap_mmap_file); --- linux-3.5.0.orig/security/integrity/evm/evm_crypto.c +++ linux-3.5.0/security/integrity/evm/evm_crypto.c @@ -205,9 +205,9 @@ rc = __vfs_setxattr_noperm(dentry, XATTR_NAME_EVM, &xattr_data, sizeof(xattr_data), 0); - } - else if (rc == -ENODATA) + } else if (rc == -ENODATA && inode->i_op->removexattr) { rc = inode->i_op->removexattr(dentry, XATTR_NAME_EVM); + } return rc; } --- linux-3.5.0.orig/security/selinux/hooks.c +++ linux-3.5.0/security/selinux/hooks.c @@ -2129,7 +2129,7 @@ int fd; j++; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; fdt = files_fdtable(files); if (i >= fdt->max_fds) break; @@ -2792,11 +2792,16 @@ /* We strip a nul only if it is at the end, otherwise the * context contains a nul and we should audit that */ - str = value; - if (str[size - 1] == '\0') - audit_size = size - 1; - else - audit_size = size; + if (value) { + str = value; + if (str[size - 1] == '\0') + audit_size = size - 1; + else + audit_size = size; + } else { + str = ""; + audit_size = 0; + } ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR); audit_log_format(ab, "op=setxattr invalid_context="); audit_log_n_untrustedstring(ab, value, audit_size); --- linux-3.5.0.orig/security/selinux/xfrm.c +++ linux-3.5.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-3.5.0.orig/security/selinux/netnode.c +++ linux-3.5.0/security/selinux/netnode.c @@ -174,7 +174,8 @@ if (sel_netnode_hash[idx].size == SEL_NETNODE_HASH_BKT_LIMIT) { struct sel_netnode *tail; tail = list_entry( - rcu_dereference(sel_netnode_hash[idx].list.prev), + rcu_dereference_protected(sel_netnode_hash[idx].list.prev, + lockdep_is_held(&sel_netnode_lock)), struct sel_netnode, list); list_del_rcu(&tail->list); kfree_rcu(tail, rcu); --- linux-3.5.0.orig/security/keys/compat.c +++ linux-3.5.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-3.5.0.orig/security/keys/process_keys.c +++ linux-3.5.0/security/keys/process_keys.c @@ -54,7 +54,7 @@ kenter("%p{%u}", user, user->uid); - if (user->uid_keyring) { + if (user->uid_keyring && user->session_keyring) { kleave(" = 0 [exist]"); return 0; } @@ -854,7 +854,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-3.5.0.orig/security/keys/keyctl.c +++ linux-3.5.0/security/keys/keyctl.c @@ -1112,12 +1112,12 @@ ret = rw_copy_check_uvector(WRITE, _payload_iov, ioc, 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-3.5.0.orig/security/yama/yama_lsm.c +++ linux-3.5.0/security/yama/yama_lsm.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -24,6 +25,8 @@ #define YAMA_SCOPE_NO_ATTACH 3 static int ptrace_scope = YAMA_SCOPE_RELATIONAL; +static int protected_sticky_symlinks = 1; +static int protected_nonaccess_hardlinks = 1; /* describe a ptrace relationship for potential exception */ struct ptrace_relation { @@ -100,7 +103,7 @@ * yama_task_free - check for task_pid to remove from exception list * @task: task being removed */ -static void yama_task_free(struct task_struct *task) +void yama_task_free(struct task_struct *task) { yama_ptracer_del(task, task); } @@ -116,7 +119,7 @@ * Return 0 on success, -ve on error. -ENOSYS is returned when Yama * does not handle the given option. */ -static int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, +int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) { int rc; @@ -143,7 +146,7 @@ if (arg2 == 0) { yama_ptracer_del(NULL, myself); rc = 0; - } else if (arg2 == PR_SET_PTRACER_ANY) { + } else if (arg2 == PR_SET_PTRACER_ANY || (int)arg2 == -1) { rc = yama_ptracer_add(NULL, myself); } else { struct task_struct *tracer; @@ -243,7 +246,7 @@ * * Returns 0 if following the ptrace is allowed, -ve on error. */ -static int yama_ptrace_access_check(struct task_struct *child, +int yama_ptrace_access_check(struct task_struct *child, unsigned int mode) { int rc; @@ -279,24 +282,163 @@ } if (rc) { - char name[sizeof(current->comm)]; printk_ratelimited(KERN_NOTICE "ptrace of pid %d was attempted by: %s (pid %d)\n", - child->pid, + child->pid, current->comm, current->pid); + } + + return rc; +} + +/** + * yama_ptrace_traceme - validate PTRACE_TRACEME calls + * @parent: task that will become the ptracer of the current task + * + * Returns 0 if following the ptrace is allowed, -ve on error. + */ +int yama_ptrace_traceme(struct task_struct *parent) +{ + int rc; + + /* If standard caps disallows it, so does Yama. We should + * only tighten restrictions further. + */ + rc = cap_ptrace_traceme(parent); + if (rc) + return rc; + + /* Only disallow PTRACE_TRACEME on more aggressive settings. */ + switch (ptrace_scope) { + case YAMA_SCOPE_CAPABILITY: + if (!ns_capable(task_user_ns(parent), CAP_SYS_PTRACE)) + rc = -EPERM; + break; + case YAMA_SCOPE_NO_ATTACH: + rc = -EPERM; + break; + } + + if (rc) { + printk_ratelimited(KERN_NOTICE + "ptraceme of pid %d was attempted by: %s (pid %d)\n", + current->pid, parent->comm, parent->pid); + } + + return rc; +} + +/** + * yama_inode_follow_link - check for symlinks in sticky world-writeable dirs + * @dentry: The inode/dentry of the symlink + * @nameidata: The path data of the symlink + * + * In the case of the protected_sticky_symlinks sysctl being enabled, + * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is + * in a sticky world-writable directory. This is to protect privileged + * processes from failing races against path names that may change out + * from under them by way of other users creating malicious symlinks. + * It will permit symlinks to only be followed when outside a sticky + * world-writable directory, or when the uid of the symlink and follower + * match, or when the directory owner matches the symlink's owner. + * + * Returns 0 if following the symlink is allowed, -ve on error. + */ +int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata) +{ + int rc = 0; + const struct inode *parent; + const struct inode *inode; + const struct cred *cred; + + if (!protected_sticky_symlinks) + return 0; + + /* if inode isn't a symlink, don't try to evaluate blocking it */ + inode = dentry->d_inode; + if (!S_ISLNK(inode->i_mode)) + return 0; + + /* owner and follower match? */ + cred = current_cred(); + if (cred->fsuid == inode->i_uid) + return 0; + + /* check parent directory mode and owner */ + spin_lock(&dentry->d_lock); + parent = dentry->d_parent->d_inode; + if ((parent->i_mode & (S_ISVTX|S_IWOTH)) == (S_ISVTX|S_IWOTH) && + parent->i_uid != inode->i_uid) { + rc = -EACCES; + } + spin_unlock(&dentry->d_lock); + + if (rc) { + char name[sizeof(current->comm)]; + printk_ratelimited(KERN_NOTICE "non-matching-uid symlink " + "following attempted in sticky world-writable " + "directory by %s (fsuid %d != %d)\n", get_task_comm(name, current), - current->pid); + cred->fsuid, inode->i_uid); } return rc; } -static struct security_operations yama_ops = { - .name = "yama", +static int yama_generic_permission(struct inode *inode, int mask) +{ + int retval; - .ptrace_access_check = yama_ptrace_access_check, - .task_prctl = yama_task_prctl, - .task_free = yama_task_free, -}; + if (inode->i_op->permission) + retval = inode->i_op->permission(inode, mask); + else + retval = generic_permission(inode, mask); + return retval; +} + +/** + * yama_path_link - verify that hardlinking is allowed + * @old_dentry: the source inode/dentry to hardlink from + * @new_dir: target directory + * @new_dentry: the target inode/dentry to hardlink to + * + * Block hardlink when all of: + * - fsuid does not match inode + * - not CAP_FOWNER + * - and at least one of: + * - inode is not a regular file + * - inode is setuid + * - inode is setgid and group-exec + * - access failure for read and write + * + * Returns 0 if successful, -ve on error. + */ +int yama_path_link(struct dentry *old_dentry, struct path *new_dir, + struct dentry *new_dentry) +{ + int rc = 0; + struct inode *inode = old_dentry->d_inode; + const int mode = inode->i_mode; + const struct cred *cred = current_cred(); + + if (!protected_nonaccess_hardlinks) + return 0; + + if (cred->fsuid != inode->i_uid && + (!S_ISREG(mode) || (mode & S_ISUID) || + ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) || + (yama_generic_permission(inode, MAY_READ | MAY_WRITE))) && + !capable(CAP_FOWNER)) { + char name[sizeof(current->comm)]; + printk_ratelimited(KERN_NOTICE "non-accessible hardlink" + " creation was attempted by: %s (fsuid %d)\n", + get_task_comm(name, current), + cred->fsuid); + rc = -EPERM; + } + + return rc; +} #ifdef CONFIG_SYSCTL static int yama_dointvec_minmax(struct ctl_table *table, int write, @@ -319,6 +461,7 @@ } static int zero; +static int one = 1; static int max_scope = YAMA_SCOPE_NO_ATTACH; struct ctl_path yama_sysctl_path[] = { @@ -329,6 +472,24 @@ static struct ctl_table yama_sysctl_table[] = { { + .procname = "protected_sticky_symlinks", + .data = &protected_sticky_symlinks, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &zero, + .extra2 = &one, + }, + { + .procname = "protected_nonaccess_hardlinks", + .data = &protected_nonaccess_hardlinks, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &zero, + .extra2 = &one, + }, + { .procname = "ptrace_scope", .data = &ptrace_scope, .maxlen = sizeof(int), @@ -343,14 +504,8 @@ static __init int yama_init(void) { - if (!security_module_enable(&yama_ops)) - return 0; - printk(KERN_INFO "Yama: becoming mindful.\n"); - if (register_security(&yama_ops)) - panic("Yama: kernel registration failed.\n"); - #ifdef CONFIG_SYSCTL if (!register_sysctl_paths(yama_sysctl_path, yama_sysctl_table)) panic("Yama: sysctl registration failed.\n"); --- linux-3.5.0.orig/security/yama/Kconfig +++ linux-3.5.0/security/yama/Kconfig @@ -7,7 +7,8 @@ help This selects Yama, which extends DAC support with additional system-wide security settings beyond regular Linux discretionary - access controls. Currently available is ptrace scope restriction. - Further information can be found in Documentation/security/Yama.txt. + access controls. Currently available are symlink, hardlink, and + ptrace scope restrictions. Further information can be found in + Documentation/security/Yama.txt. If you are unsure how to answer this question, answer N. --- linux-3.5.0.orig/security/apparmor/policy_unpack.c +++ linux-3.5.0/security/apparmor/policy_unpack.c @@ -193,6 +193,19 @@ return 0; } +static bool unpack_u16(struct aa_ext *e, u16 *data, const char *name) +{ + if (unpack_nameX(e, AA_U16, name)) { + if (!inbounds(e, sizeof(u16))) + return 0; + if (data) + *data = le16_to_cpu(get_unaligned((u16 *) e->pos)); + e->pos += sizeof(u16); + return 1; + } + return 0; +} + static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name) { if (unpack_nameX(e, AA_U32, name)) { @@ -471,6 +484,7 @@ { struct aa_profile *profile = NULL; const char *name = NULL; + size_t size = 0; int i, error = -EPROTO; kernel_cap_t tmpcap; u32 tmp; @@ -564,6 +578,38 @@ if (!unpack_rlimits(e, profile)) goto fail; + size = unpack_array(e, "net_allowed_af"); + if (size) { + + for (i = 0; i < size; i++) { + /* discard extraneous rules that this kernel will + * never request + */ + if (i >= AF_MAX) { + u16 tmp; + if (!unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL)) + goto fail; + continue; + } + if (!unpack_u16(e, &profile->net.allow[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.audit[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.quiet[i], NULL)) + goto fail; + } + if (!unpack_nameX(e, AA_ARRAYEND, NULL)) + goto fail; + } + /* + * allow unix domain and netlink sockets they are handled + * by IPC + */ + profile->net.allow[AF_UNIX] = 0xffff; + profile->net.allow[AF_NETLINK] = 0xffff; + if (unpack_nameX(e, AA_STRUCT, "policydb")) { /* generic policy dfa - optional and may be NULL */ profile->policy.dfa = unpack_dfa(e); --- linux-3.5.0.orig/security/apparmor/apparmorfs.c +++ linux-3.5.0/security/apparmor/apparmorfs.c @@ -182,6 +182,232 @@ .release = single_release, }; +/** + * __next_namespace - find the next namespace to list + * @root: root namespace to stop search at (NOT NULL) + * @ns: current ns position (NOT NULL) + * + * Find the next namespace from @ns under @root and handle all locking needed + * while switching current namespace. + * + * Returns: next namespace or NULL if at last namespace under @root + * NOTE: will not unlock root->lock + */ +static struct aa_namespace *__next_namespace(struct aa_namespace *root, + struct aa_namespace *ns) +{ + struct aa_namespace *parent; + + /* is next namespace a child */ + if (!list_empty(&ns->sub_ns)) { + struct aa_namespace *next; + next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list); + read_lock(&next->lock); + return next; + } + + /* check if the next ns is a sibling, parent, gp, .. */ + parent = ns->parent; + while (parent) { + read_unlock(&ns->lock); + list_for_each_entry_continue(ns, &parent->sub_ns, base.list) { + read_lock(&ns->lock); + return ns; + } + if (parent == root) + return NULL; + ns = parent; + parent = parent->parent; + } + + return NULL; +} + +/** + * __first_profile - find the first profile in a namespace + * @root: namespace that is root of profiles being displayed (NOT NULL) + * @ns: namespace to start in (NOT NULL) + * + * Returns: unrefcounted profile or NULL if no profile + */ +static struct aa_profile *__first_profile(struct aa_namespace *root, + struct aa_namespace *ns) +{ + for ( ; ns; ns = __next_namespace(root, ns)) { + if (!list_empty(&ns->base.profiles)) + return list_first_entry(&ns->base.profiles, + struct aa_profile, base.list); + } + return NULL; +} + +/** + * __next_profile - step to the next profile in a profile tree + * @profile: current profile in tree (NOT NULL) + * + * Perform a depth first taversal on the profile tree in a namespace + * + * Returns: next profile or NULL if done + * Requires: profile->ns.lock to be held + */ +static struct aa_profile *__next_profile(struct aa_profile *p) +{ + struct aa_profile *parent; + struct aa_namespace *ns = p->ns; + + /* is next profile a child */ + if (!list_empty(&p->base.profiles)) + return list_first_entry(&p->base.profiles, typeof(*p), + base.list); + + /* is next profile a sibling, parent sibling, gp, subling, .. */ + parent = p->parent; + while (parent) { + list_for_each_entry_continue(p, &parent->base.profiles, + base.list) + return p; + p = parent; + parent = parent->parent; + } + + /* is next another profile in the namespace */ + list_for_each_entry_continue(p, &ns->base.profiles, base.list) + return p; + + return NULL; +} + +/** + * next_profile - step to the next profile in where ever it may be + * @root: root namespace (NOT NULL) + * @profile: current profile (NOT NULL) + * + * Returns: next profile or NULL if there isn't one + */ +static struct aa_profile *next_profile(struct aa_namespace *root, + struct aa_profile *profile) +{ + struct aa_profile *next = __next_profile(profile); + if (next) + return next; + + /* finished all profiles in namespace move to next namespace */ + return __first_profile(root, __next_namespace(root, profile->ns)); +} + +/** + * p_start - start a depth first traversal of profile tree + * @f: seq_file to fill + * @pos: current position + * + * Returns: first profile under current namespace or NULL if none found + * + * acquires first ns->lock + */ +static void *p_start(struct seq_file *f, loff_t *pos) + __acquires(root->lock) +{ + struct aa_profile *profile = NULL; + struct aa_namespace *root = aa_current_profile()->ns; + loff_t l = *pos; + f->private = aa_get_namespace(root); + + + /* find the first profile */ + read_lock(&root->lock); + profile = __first_profile(root, root); + + /* skip to position */ + for (; profile && l > 0; l--) + profile = next_profile(root, profile); + + return profile; +} + +/** + * p_next - read the next profile entry + * @f: seq_file to fill + * @p: profile previously returned + * @pos: current position + * + * Returns: next profile after @p or NULL if none + * + * may acquire/release locks in namespace tree as necessary + */ +static void *p_next(struct seq_file *f, void *p, loff_t *pos) +{ + struct aa_profile *profile = p; + struct aa_namespace *root = f->private; + (*pos)++; + + return next_profile(root, profile); +} + +/** + * p_stop - stop depth first traversal + * @f: seq_file we are filling + * @p: the last profile writen + * + * Release all locking done by p_start/p_next on namespace tree + */ +static void p_stop(struct seq_file *f, void *p) + __releases(root->lock) +{ + struct aa_profile *profile = p; + struct aa_namespace *root = f->private, *ns; + + if (profile) { + for (ns = profile->ns; ns && ns != root; ns = ns->parent) + read_unlock(&ns->lock); + } + read_unlock(&root->lock); + aa_put_namespace(root); +} + +/** + * seq_show_profile - show a profile entry + * @f: seq_file to file + * @p: current position (profile) (NOT NULL) + * + * Returns: error on failure + */ +static int seq_show_profile(struct seq_file *f, void *p) +{ + struct aa_profile *profile = (struct aa_profile *)p; + struct aa_namespace *root = f->private; + + if (profile->ns != root) + seq_printf(f, ":%s://", aa_ns_name(root, profile->ns)); + seq_printf(f, "%s (%s)\n", profile->base.hname, + COMPLAIN_MODE(profile) ? "complain" : "enforce"); + + return 0; +} + +static const struct seq_operations aa_fs_profiles_op = { + .start = p_start, + .next = p_next, + .stop = p_stop, + .show = seq_show_profile, +}; + +static int profiles_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &aa_fs_profiles_op); +} + +static int profiles_release(struct inode *inode, struct file *file) +{ + return seq_release(inode, file); +} + +const struct file_operations aa_fs_profiles_fops = { + .open = profiles_open, + .read = seq_read, + .llseek = seq_lseek, + .release = profiles_release, +}; + /** Base file system setup **/ static struct aa_fs_entry aa_fs_entry_file[] = { @@ -198,9 +424,23 @@ { } }; +static struct aa_fs_entry aa_fs_entry_mount[] = { + AA_FS_FILE_STRING("mask", "mount umount"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_namespaces[] = { + AA_FS_FILE_BOOLEAN("profile", 1), + AA_FS_FILE_BOOLEAN("pivot_root", 1), + { } +}; + static struct aa_fs_entry aa_fs_entry_features[] = { AA_FS_DIR("domain", aa_fs_entry_domain), AA_FS_DIR("file", aa_fs_entry_file), + AA_FS_DIR("network", aa_fs_entry_network), + AA_FS_DIR("mount", aa_fs_entry_mount), + AA_FS_DIR("namespaces", aa_fs_entry_namespaces), AA_FS_FILE_U64("capability", VFS_CAP_FLAGS_MASK), AA_FS_DIR("rlimit", aa_fs_entry_rlimit), { } @@ -210,6 +450,7 @@ AA_FS_FILE_FOPS(".load", 0640, &aa_fs_profile_load), AA_FS_FILE_FOPS(".replace", 0640, &aa_fs_profile_replace), AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove), + AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops), AA_FS_DIR("features", aa_fs_entry_features), { } }; --- linux-3.5.0.orig/security/apparmor/mount.c +++ linux-3.5.0/security/apparmor/mount.c @@ -0,0 +1,620 @@ +/* + * AppArmor security module + * + * This file contains AppArmor mediation of files + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include +#include +#include + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/domain.h" +#include "include/file.h" +#include "include/match.h" +#include "include/mount.h" +#include "include/path.h" +#include "include/policy.h" + + +static void audit_mnt_flags(struct audit_buffer *ab, unsigned long flags) +{ + if (flags & MS_RDONLY) + audit_log_format(ab, "ro"); + else + audit_log_format(ab, "rw"); + if (flags & MS_NOSUID) + audit_log_format(ab, ", nosuid"); + if (flags & MS_NODEV) + audit_log_format(ab, ", nodev"); + if (flags & MS_NOEXEC) + audit_log_format(ab, ", noexec"); + if (flags & MS_SYNCHRONOUS) + audit_log_format(ab, ", sync"); + if (flags & MS_REMOUNT) + audit_log_format(ab, ", remount"); + if (flags & MS_MANDLOCK) + audit_log_format(ab, ", mand"); + if (flags & MS_DIRSYNC) + audit_log_format(ab, ", dirsync"); + if (flags & MS_NOATIME) + audit_log_format(ab, ", noatime"); + if (flags & MS_NODIRATIME) + audit_log_format(ab, ", nodiratime"); + if (flags & MS_BIND) + audit_log_format(ab, flags & MS_REC ? ", rbind" : ", bind"); + if (flags & MS_MOVE) + audit_log_format(ab, ", move"); + if (flags & MS_SILENT) + audit_log_format(ab, ", silent"); + if (flags & MS_POSIXACL) + audit_log_format(ab, ", acl"); + if (flags & MS_UNBINDABLE) + audit_log_format(ab, flags & MS_REC ? ", runbindable" : + ", unbindable"); + if (flags & MS_PRIVATE) + audit_log_format(ab, flags & MS_REC ? ", rprivate" : + ", private"); + if (flags & MS_SLAVE) + audit_log_format(ab, flags & MS_REC ? ", rslave" : + ", slave"); + if (flags & MS_SHARED) + audit_log_format(ab, flags & MS_REC ? ", rshared" : + ", shared"); + if (flags & MS_RELATIME) + audit_log_format(ab, ", relatime"); + if (flags & MS_I_VERSION) + audit_log_format(ab, ", iversion"); + if (flags & MS_STRICTATIME) + audit_log_format(ab, ", strictatime"); + if (flags & MS_NOUSER) + audit_log_format(ab, ", nouser"); +} + +/** + * audit_cb - call back for mount specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (sa->aad->mnt.type) { + audit_log_format(ab, " fstype="); + audit_log_untrustedstring(ab, sa->aad->mnt.type); + } + if (sa->aad->mnt.src_name) { + audit_log_format(ab, " srcname="); + audit_log_untrustedstring(ab, sa->aad->mnt.src_name); + } + if (sa->aad->mnt.trans) { + audit_log_format(ab, " trans="); + audit_log_untrustedstring(ab, sa->aad->mnt.trans); + } + if (sa->aad->mnt.flags || sa->aad->op == OP_MOUNT) { + audit_log_format(ab, " flags=\""); + audit_mnt_flags(ab, sa->aad->mnt.flags); + audit_log_format(ab, "\""); + } + if (sa->aad->mnt.data) { + audit_log_format(ab, " options="); + audit_log_untrustedstring(ab, sa->aad->mnt.data); + } +} + +/** + * audit_mount - handle the auditing of mount operations + * @profile: the profile being enforced (NOT NULL) + * @gfp: allocation flags + * @op: operation being mediated (NOT NULL) + * @name: name of object being mediated (MAYBE NULL) + * @src_name: src_name of object being mediated (MAYBE_NULL) + * @type: type of filesystem (MAYBE_NULL) + * @trans: name of trans (MAYBE NULL) + * @flags: filesystem idependent mount flags + * @data: filesystem mount flags + * @request: permissions requested + * @perms: the permissions computed for the request (NOT NULL) + * @info: extra information message (MAYBE NULL) + * @error: 0 if operation allowed else failure error code + * + * Returns: %0 or error on failure + */ +static int audit_mount(struct aa_profile *profile, gfp_t gfp, int op, + const char *name, const char *src_name, + const char *type, const char *trans, + unsigned long flags, const void *data, u32 request, + struct file_perms *perms, const char *info, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + struct common_audit_data sa; + struct apparmor_audit_data aad = { }; + + if (likely(!error)) { + u32 mask = perms->audit; + + if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) + mask = 0xffff; + + /* mask off perms that are not being force audited */ + request &= mask; + + if (likely(!request)) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + /* only report permissions that were denied */ + request = request & ~perms->allow; + + if (request & perms->kill) + audit_type = AUDIT_APPARMOR_KILL; + + /* quiet known rejects, assumes quiet and kill do not overlap */ + if ((request & perms->quiet) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + request &= ~perms->quiet; + + if (!request) + return COMPLAIN_MODE(profile) ? + complain_error(error) : error; + } + + sa.type = LSM_AUDIT_DATA_NONE; + sa.aad = &aad; + sa.aad->op = op; + sa.aad->name = name; + sa.aad->mnt.src_name = src_name; + sa.aad->mnt.type = type; + sa.aad->mnt.trans = trans; + sa.aad->mnt.flags = flags; + if (data && (perms->audit & AA_AUDIT_DATA)) + sa.aad->mnt.data = data; + sa.aad->info = info; + sa.aad->error = error; + + return aa_audit(audit_type, profile, gfp, &sa, audit_cb); +} + +/** + * match_mnt_flags - Do an ordered match on mount flags + * @dfa: dfa to match against + * @state: state to start in + * @flags: mount flags to match against + * + * Mount flags are encoded as an ordered match. This is done instead of + * checking against a simple bitmask, to allow for logical operations + * on the flags. + * + * Returns: next state after flags match + */ +static unsigned int match_mnt_flags(struct aa_dfa *dfa, unsigned int state, + unsigned long flags) +{ + unsigned int i; + + for (i = 0; i <= 31 ; ++i) { + if ((1 << i) & flags) + state = aa_dfa_next(dfa, state, i + 1); + } + + return state; +} + +/** + * compute_mnt_perms - compute mount permission associated with @state + * @dfa: dfa to match against (NOT NULL) + * @state: state match finished in + * + * Returns: mount permissions + */ +static struct file_perms compute_mnt_perms(struct aa_dfa *dfa, + unsigned int state) +{ + struct file_perms perms; + + perms.kill = 0; + perms.allow = dfa_user_allow(dfa, state); + perms.audit = dfa_user_audit(dfa, state); + perms.quiet = dfa_user_quiet(dfa, state); + perms.xindex = dfa_user_xindex(dfa, state); + + return perms; +} + +static const char const *mnt_info_table[] = { + "match succeeded", + "failed mntpnt match", + "failed srcname match", + "failed type match", + "failed flags match", + "failed data match" +}; + +/* + * Returns 0 on success else element that match failed in, this is the + * index into the mnt_info_table above + */ +static int do_match_mnt(struct aa_dfa *dfa, unsigned int start, + const char *mntpnt, const char *devname, + const char *type, unsigned long flags, + void *data, bool binary, struct file_perms *perms) +{ + unsigned int state; + + state = aa_dfa_match(dfa, start, mntpnt); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 1; + + if (devname) + state = aa_dfa_match(dfa, state, devname); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 2; + + if (type) + state = aa_dfa_match(dfa, state, type); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 3; + + state = match_mnt_flags(dfa, state, flags); + if (!state) + return 4; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + + /* only match data if not binary and the DFA flags data is expected */ + if (data && !binary && (perms->allow & AA_CONT_MATCH)) { + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 4; + + state = aa_dfa_match(dfa, state, data); + if (!state) + return 5; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + } + + /* failed at end of flags match */ + return 4; +} + +/** + * match_mnt - handle path matching for mount + * @profile: the confining profile + * @mntpnt: string for the mntpnt (NOT NULL) + * @devname: string for the devname/src_name (MAYBE NULL) + * @type: string for the dev type (MAYBE NULL) + * @flags: mount flags to match + * @data: fs mount data (MAYBE NULL) + * @binary: whether @data is binary + * @perms: Returns: permission found by the match + * @info: Returns: infomation string about the match for logging + * + * Returns: 0 on success else error + */ +static int match_mnt(struct aa_profile *profile, const char *mntpnt, + const char *devname, const char *type, + unsigned long flags, void *data, bool binary, + struct file_perms *perms, const char **info) +{ + int pos; + + if (!profile->policy.dfa) + return -EACCES; + + pos = do_match_mnt(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + mntpnt, devname, type, flags, data, binary, perms); + if (pos) { + *info = mnt_info_table[pos]; + return -EACCES; + } + + return 0; +} + +static int path_flags(struct aa_profile *profile, struct path *path) +{ + return profile->path_flags | + S_ISDIR(path->dentry->d_inode->i_mode) ? PATH_IS_DIR : 0; +} + +int aa_remount(struct aa_profile *profile, struct path *path, + unsigned long flags, void *data) +{ + struct file_perms perms = { }; + const char *name, *info = NULL; + char *buffer = NULL; + int binary, error; + + binary = path->dentry->d_sb->s_type->fs_flags & FS_BINARY_MOUNTDATA; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, NULL, NULL, flags, data, binary, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL, + NULL, flags, data, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + + return error; +} + +int aa_bind_mount(struct aa_profile *profile, struct path *path, + const char *dev_name, unsigned long flags) +{ + struct file_perms perms = { }; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!dev_name || !*dev_name) + return -EINVAL; + + flags &= MS_REC | MS_BIND; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = kern_path(dev_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path); + if (error) + goto audit; + + error = aa_path_name(&old_path, path_flags(profile, &old_path), + &old_buffer, &old_name, &info); + path_put(&old_path); + if (error) + goto audit; + + error = match_mnt(profile, name, old_name, NULL, flags, NULL, 0, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name, + NULL, NULL, flags, NULL, AA_MAY_MOUNT, &perms, + info, error); + kfree(buffer); + kfree(old_buffer); + + return error; +} + +int aa_mount_change_type(struct aa_profile *profile, struct path *path, + unsigned long flags) +{ + struct file_perms perms = { }; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + /* These are the flags allowed by do_change_type() */ + flags &= (MS_REC | MS_SILENT | MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE); + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, NULL, NULL, flags, NULL, 0, &perms, + &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL, + NULL, flags, NULL, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + + return error; +} + +int aa_move_mount(struct aa_profile *profile, struct path *path, + const char *orig_name) +{ + struct file_perms perms = { }; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!orig_name || !*orig_name) + return -EINVAL; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = kern_path(orig_name, LOOKUP_FOLLOW, &old_path); + if (error) + goto audit; + + error = aa_path_name(&old_path, path_flags(profile, &old_path), + &old_buffer, &old_name, &info); + path_put(&old_path); + if (error) + goto audit; + + error = match_mnt(profile, name, old_name, NULL, MS_MOVE, NULL, 0, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name, + NULL, NULL, MS_MOVE, NULL, AA_MAY_MOUNT, &perms, + info, error); + kfree(buffer); + kfree(old_buffer); + + return error; +} + +int aa_new_mount(struct aa_profile *profile, const char *orig_dev_name, + struct path *path, const char *type, unsigned long flags, + void *data) +{ + struct file_perms perms = { }; + char *buffer = NULL, *dev_buffer = NULL; + const char *name = NULL, *dev_name = NULL, *info = NULL; + int binary = 1; + int error; + + dev_name = orig_dev_name; + if (type) { + int requires_dev; + struct file_system_type *fstype = get_fs_type(type); + if (!fstype) + return -ENODEV; + + binary = fstype->fs_flags & FS_BINARY_MOUNTDATA; + requires_dev = fstype->fs_flags & FS_REQUIRES_DEV; + put_filesystem(fstype); + + if (requires_dev) { + struct path dev_path; + + if (!dev_name || !*dev_name) { + error = -ENOENT; + goto out; + } + + error = kern_path(dev_name, LOOKUP_FOLLOW, &dev_path); + if (error) + goto audit; + + error = aa_path_name(&dev_path, + path_flags(profile, &dev_path), + &dev_buffer, &dev_name, &info); + path_put(&dev_path); + if (error) + goto audit; + } + } + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, dev_name, type, flags, data, binary, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, dev_name, + type, NULL, flags, data, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + kfree(dev_buffer); + +out: + return error; + +} + +int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags) +{ + struct file_perms perms = { }; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + struct path path = { mnt, mnt->mnt_root }; + error = aa_path_name(&path, path_flags(profile, &path), &buffer, &name, + &info); + if (error) + goto audit; + + if (!error && profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + name); + perms = compute_mnt_perms(profile->policy.dfa, state); + } + + if (AA_MAY_UMOUNT & ~perms.allow) + error = -EACCES; + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_UMOUNT, name, NULL, NULL, + NULL, 0, NULL, AA_MAY_UMOUNT, &perms, info, error); + kfree(buffer); + + return error; +} + +int aa_pivotroot(struct aa_profile *profile, struct path *old_path, + struct path *new_path) +{ + struct file_perms perms = { }; + struct aa_profile *target = NULL; + char *old_buffer = NULL, *new_buffer = NULL; + const char *old_name, *new_name = NULL, *info = NULL; + int error; + + error = aa_path_name(old_path, path_flags(profile, old_path), + &old_buffer, &old_name, &info); + if (error) + goto audit; + + error = aa_path_name(new_path, path_flags(profile, new_path), + &new_buffer, &new_name, &info); + if (error) + goto audit; + + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + new_name); + state = aa_dfa_null_transition(profile->policy.dfa, state); + state = aa_dfa_match(profile->policy.dfa, state, old_name); + perms = compute_mnt_perms(profile->policy.dfa, state); + } + + if (AA_MAY_PIVOTROOT & perms.allow) { + if ((perms.xindex & AA_X_TYPE_MASK) == AA_X_TABLE) { + target = x_table_lookup(profile, perms.xindex); + if (!target) + error = -ENOENT; + else + error = aa_replace_current_profile(target); + } + } else + error = -EACCES; + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_PIVOTROOT, new_name, + old_name, NULL, target ? target->base.name : NULL, + 0, NULL, AA_MAY_PIVOTROOT, &perms, info, error); + aa_put_profile(target); + kfree(old_buffer); + kfree(new_buffer); + + return error; +} --- linux-3.5.0.orig/security/apparmor/Makefile +++ linux-3.5.0/security/apparmor/Makefile @@ -4,10 +4,9 @@ apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o \ path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \ - resource.o sid.o file.o - -clean-files := capability_names.h rlim_names.h + resource.o sid.o file.o mount.o net.o +clean-files := capability_names.h rlim_names.h net_names.h # Build a lower case string table of capability names # Transforms lines from @@ -20,6 +19,38 @@ -e 's/^\#define[ \t]+CAP_([A-Z0-9_]+)[ \t]+([0-9]+)/[\2] = "\L\1",/p';\ echo "};" >> $@ +# Build a lower case string table of address family names +# Transform lines from +# define AF_LOCAL 1 /* POSIX name for AF_UNIX */ +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# [1] = "local", +# [2] = "inet", +# +# and build the securityfs entries for the mapping. +# Transforms lines from +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# #define AA_FS_AF_MASK "local inet" +quiet_cmd_make-af = GEN $@ +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ;\ + sed $< >>$@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ ;\ + echo -n '\#define AA_FS_AF_MASK "' >> $@ ;\ + sed -r -n 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/\L\1/p'\ + $< | tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ + +# Build a lower case string table of sock type names +# Transform lines from +# SOCK_STREAM = 1, +# to +# [1] = "stream", +quiet_cmd_make-sock = GEN $@ +cmd_make-sock = echo "static const char *sock_type_names[] = {" >> $@ ;\ + sed $^ >>$@ -r -n \ + -e 's/^\tSOCK_([A-Z0-9_]+)[\t]+=[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ # Build a lower case string table of rlimit names. # Transforms lines from @@ -56,6 +87,7 @@ tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ $(obj)/capability.o : $(obj)/capability_names.h +$(obj)/net.o : $(obj)/net_names.h $(obj)/resource.o : $(obj)/rlim_names.h $(obj)/capability_names.h : $(srctree)/include/linux/capability.h \ $(src)/Makefile @@ -63,3 +95,8 @@ $(obj)/rlim_names.h : $(srctree)/include/asm-generic/resource.h \ $(src)/Makefile $(call cmd,make-rlim) +$(obj)/net_names.h : $(srctree)/include/linux/socket.h \ + $(srctree)/include/linux/net.h \ + $(src)/Makefile + $(call cmd,make-af) + $(call cmd,make-sock) --- linux-3.5.0.orig/security/apparmor/net.c +++ linux-3.5.0/security/apparmor/net.c @@ -0,0 +1,162 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/net.h" +#include "include/policy.h" + +#include "net_names.h" + +struct aa_fs_entry aa_fs_entry_network[] = { + AA_FS_FILE_STRING("af_mask", AA_FS_AF_MASK), + { } +}; + +/* audit callback for net specific fields */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + audit_log_format(ab, " family="); + if (address_family_names[sa->u.net->family]) { + audit_log_string(ab, address_family_names[sa->u.net->family]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->u.net->family); + } + audit_log_format(ab, " sock_type="); + if (sock_type_names[sa->aad->net.type]) { + audit_log_string(ab, sock_type_names[sa->aad->net.type]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->aad->net.type); + } + audit_log_format(ab, " protocol=%d", sa->aad->net.protocol); +} + +/** + * audit_net - audit network access + * @profile: profile being enforced (NOT NULL) + * @op: operation being checked + * @family: network family + * @type: network type + * @protocol: network protocol + * @sk: socket auditing is being applied to + * @error: error code for failure else 0 + * + * Returns: %0 or sa->error else other errorcode on failure + */ +static int audit_net(struct aa_profile *profile, int op, u16 family, int type, + int protocol, struct sock *sk, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + struct common_audit_data sa; + struct apparmor_audit_data aad = { }; + struct lsm_network_audit net = { }; + if (sk) { + sa.type = LSM_AUDIT_DATA_NET; + } else { + sa.type = LSM_AUDIT_DATA_NONE; + } + /* todo fill in socket addr info */ + sa.aad = &aad; + sa.u.net = &net; + sa.aad->op = op, + sa.u.net->family = family; + sa.u.net->sk = sk; + sa.aad->net.type = type; + sa.aad->net.protocol = protocol; + sa.aad->error = error; + + if (likely(!sa.aad->error)) { + u16 audit_mask = profile->net.audit[sa.u.net->family]; + if (likely((AUDIT_MODE(profile) != AUDIT_ALL) && + !(1 << sa.aad->net.type & audit_mask))) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + u16 quiet_mask = profile->net.quiet[sa.u.net->family]; + u16 kill_mask = 0; + u16 denied = (1 << sa.aad->net.type); + + if (denied & kill_mask) + audit_type = AUDIT_APPARMOR_KILL; + + if ((denied & quiet_mask) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + return COMPLAIN_MODE(profile) ? 0 : sa.aad->error; + } + + return aa_audit(audit_type, profile, GFP_KERNEL, &sa, audit_cb); +} + +/** + * aa_net_perm - very course network access check + * @op: operation being checked + * @profile: profile being enforced (NOT NULL) + * @family: network family + * @type: network type + * @protocol: network protocol + * + * Returns: %0 else error if permission denied + */ +int aa_net_perm(int op, struct aa_profile *profile, u16 family, int type, + int protocol, struct sock *sk) +{ + u16 family_mask; + int error; + + if ((family < 0) || (family >= AF_MAX)) + return -EINVAL; + + if ((type < 0) || (type >= SOCK_MAX)) + return -EINVAL; + + /* unix domain and netlink sockets are handled by ipc */ + if (family == AF_UNIX || family == AF_NETLINK) + return 0; + + family_mask = profile->net.allow[family]; + + error = (family_mask & (1 << type)) ? 0 : -EACCES; + + return audit_net(profile, op, family, type, protocol, sk, error); +} + +/** + * aa_revalidate_sk - Revalidate access to a sock + * @op: operation being checked + * @sk: sock being revalidated (NOT NULL) + * + * Returns: %0 else error if permission denied + */ +int aa_revalidate_sk(int op, struct sock *sk) +{ + struct aa_profile *profile; + int error = 0; + + /* aa_revalidate_sk should not be called from interrupt context + * don't mediate these calls as they are not task related + */ + if (in_interrupt()) + return 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_net_perm(op, profile, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); + + return error; +} --- linux-3.5.0.orig/security/apparmor/lsm.c +++ linux-3.5.0/security/apparmor/lsm.c @@ -32,9 +32,11 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/net.h" #include "include/path.h" #include "include/policy.h" #include "include/procattr.h" +#include "include/mount.h" /* Flag indicating whether initialization completed */ int apparmor_initialized __initdata; @@ -503,6 +505,60 @@ !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0); } +static int apparmor_sb_mount(char *dev_name, struct path *path, char *type, + unsigned long flags, void *data) +{ + struct aa_profile *profile; + int error = 0; + + /* Discard magic */ + if ((flags & MS_MGC_MSK) == MS_MGC_VAL) + flags &= ~MS_MGC_MSK; + + flags &= ~AA_MS_IGNORE_MASK; + + profile = __aa_current_profile(); + if (!unconfined(profile)) { + if (flags & MS_REMOUNT) + error = aa_remount(profile, path, flags, data); + else if (flags & MS_BIND) + error = aa_bind_mount(profile, path, dev_name, flags); + else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE)) + error = aa_mount_change_type(profile, path, flags); + else if (flags & MS_MOVE) + error = aa_move_mount(profile, path, dev_name); + else + error = aa_new_mount(profile, dev_name, path, type, + flags, data); + } + return error; +} + +static int apparmor_sb_umount(struct vfsmount *mnt, int flags) +{ + struct aa_profile *profile; + int error = 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_umount(profile, mnt, flags); + + return error; +} + +static int apparmor_sb_pivotroot(struct path *old_path, struct path *new_path) +{ + struct aa_profile *profile; + int error = 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_pivotroot(profile, old_path, new_path); + + return error; +} + static int apparmor_getprocattr(struct task_struct *task, char *name, char **value) { @@ -614,6 +670,104 @@ return error; } +static int apparmor_socket_create(int family, int type, int protocol, int kern) +{ + struct aa_profile *profile; + int error = 0; + + if (kern) + return 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_net_perm(OP_CREATE, profile, family, type, protocol, + NULL); + return error; +} + +static int apparmor_socket_bind(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_BIND, sk); +} + +static int apparmor_socket_connect(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_CONNECT, sk); +} + +static int apparmor_socket_listen(struct socket *sock, int backlog) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_LISTEN, sk); +} + +static int apparmor_socket_accept(struct socket *sock, struct socket *newsock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_ACCEPT, sk); +} + +static int apparmor_socket_sendmsg(struct socket *sock, + struct msghdr *msg, int size) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SENDMSG, sk); +} + +static int apparmor_socket_recvmsg(struct socket *sock, + struct msghdr *msg, int size, int flags) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_RECVMSG, sk); +} + +static int apparmor_socket_getsockname(struct socket *sock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETSOCKNAME, sk); +} + +static int apparmor_socket_getpeername(struct socket *sock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETPEERNAME, sk); +} + +static int apparmor_socket_getsockopt(struct socket *sock, int level, + int optname) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETSOCKOPT, sk); +} + +static int apparmor_socket_setsockopt(struct socket *sock, int level, + int optname) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SETSOCKOPT, sk); +} + +static int apparmor_socket_shutdown(struct socket *sock, int how) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk); +} + static struct security_operations apparmor_ops = { .name = "apparmor", @@ -622,6 +776,10 @@ .capget = apparmor_capget, .capable = apparmor_capable, + .sb_mount = apparmor_sb_mount, + .sb_umount = apparmor_sb_umount, + .sb_pivotroot = apparmor_sb_pivotroot, + .path_link = apparmor_path_link, .path_unlink = apparmor_path_unlink, .path_symlink = apparmor_path_symlink, @@ -646,6 +804,19 @@ .getprocattr = apparmor_getprocattr, .setprocattr = apparmor_setprocattr, + .socket_create = apparmor_socket_create, + .socket_bind = apparmor_socket_bind, + .socket_connect = apparmor_socket_connect, + .socket_listen = apparmor_socket_listen, + .socket_accept = apparmor_socket_accept, + .socket_sendmsg = apparmor_socket_sendmsg, + .socket_recvmsg = apparmor_socket_recvmsg, + .socket_getsockname = apparmor_socket_getsockname, + .socket_getpeername = apparmor_socket_getpeername, + .socket_getsockopt = apparmor_socket_getsockopt, + .socket_setsockopt = apparmor_socket_setsockopt, + .socket_shutdown = apparmor_socket_shutdown, + .cred_alloc_blank = apparmor_cred_alloc_blank, .cred_free = apparmor_cred_free, .cred_prepare = apparmor_cred_prepare, --- linux-3.5.0.orig/security/apparmor/policy.c +++ linux-3.5.0/security/apparmor/policy.c @@ -724,6 +724,8 @@ */ static void free_profile(struct aa_profile *profile) { + struct aa_profile *p; + AA_DEBUG("%s(%p)\n", __func__, profile); if (!profile) @@ -745,13 +747,34 @@ aa_free_file_rules(&profile->file); aa_free_cap_rules(&profile->caps); + aa_free_net_rules(&profile->net); aa_free_rlimit_rules(&profile->rlimits); aa_free_sid(profile->sid); aa_put_dfa(profile->xmatch); aa_put_dfa(profile->policy.dfa); - aa_put_profile(profile->replacedby); + /* put the profile reference, but not via put_profile/kref_put + * replacedby can form a long chain that can result in cascading + * frees that blows the stack lp#1056078. The long chain creation + * should be addressed in profile replacement. + * This just addresses recursion of free_profile causing the + * stack to blow. + */ + for (p = profile->replacedby; p; ) { + if (atomic_dec_and_test(&p->base.count.refcount)) { + /* no more refs on p, grab its replacedby */ + struct aa_profile *next = p->replacedby; + /* break the chain */ + p->replacedby = NULL; + /* now free p, chain is broken */ + free_profile(p); + + /* follow up with next profile in the chain */ + p = next; + } else + break; + } kzfree(profile); } --- linux-3.5.0.orig/security/apparmor/domain.c +++ linux-3.5.0/security/apparmor/domain.c @@ -242,7 +242,7 @@ * * Returns: refcounted profile, or NULL on failure (MAYBE NULL) */ -static struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) { struct aa_profile *new_profile = NULL; struct aa_namespace *ns = profile->ns; @@ -360,6 +360,10 @@ if (bprm->cred_prepared) return 0; + /* XXX: no_new_privs is not usable with AppArmor yet */ + if (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS) + return -EPERM; + cxt = bprm->cred->security; BUG_ON(!cxt); --- linux-3.5.0.orig/security/apparmor/audit.c +++ linux-3.5.0/security/apparmor/audit.c @@ -44,6 +44,10 @@ "file_mmap", "file_mprotect", + "pivotroot", + "mount", + "umount", + "create", "post_create", "bind", --- linux-3.5.0.orig/security/apparmor/include/mount.h +++ linux-3.5.0/security/apparmor/include/mount.h @@ -0,0 +1,54 @@ +/* + * AppArmor security module + * + * This file contains AppArmor file mediation function definitions. + * + * Copyright 2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_MOUNT_H +#define __AA_MOUNT_H + +#include +#include + +#include "domain.h" +#include "policy.h" + +/* mount perms */ +#define AA_MAY_PIVOTROOT 0x01 +#define AA_MAY_MOUNT 0x02 +#define AA_MAY_UMOUNT 0x04 +#define AA_AUDIT_DATA 0x40 +#define AA_CONT_MATCH 0x40 + +#define AA_MS_IGNORE_MASK (MS_KERNMOUNT | MS_NOSEC | MS_ACTIVE | MS_BORN) + +int aa_remount(struct aa_profile *profile, struct path *path, + unsigned long flags, void *data); + +int aa_bind_mount(struct aa_profile *profile, struct path *path, + const char *old_name, unsigned long flags); + + +int aa_mount_change_type(struct aa_profile *profile, struct path *path, + unsigned long flags); + +int aa_move_mount(struct aa_profile *profile, struct path *path, + const char *old_name); + +int aa_new_mount(struct aa_profile *profile, const char *dev_name, + struct path *path, const char *type, unsigned long flags, + void *data); + +int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags); + +int aa_pivotroot(struct aa_profile *profile, struct path *old_path, + struct path *new_path); + +#endif /* __AA_MOUNT_H */ --- linux-3.5.0.orig/security/apparmor/include/net.h +++ linux-3.5.0/security/apparmor/include/net.h @@ -0,0 +1,44 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation definitions. + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_NET_H +#define __AA_NET_H + +#include + +#include "apparmorfs.h" + +/* struct aa_net - network confinement data + * @allowed: basic network families permissions + * @audit_network: which network permissions to force audit + * @quiet_network: which network permissions to quiet rejects + */ +struct aa_net { + u16 allow[AF_MAX]; + u16 audit[AF_MAX]; + u16 quiet[AF_MAX]; +}; + +extern struct aa_fs_entry aa_fs_entry_network[]; + +extern int aa_net_perm(int op, struct aa_profile *profile, u16 family, + int type, int protocol, struct sock *sk); +extern int aa_revalidate_sk(int op, struct sock *sk); + +static inline void aa_free_net_rules(struct aa_net *new) +{ + /* NOP */ +} + +#endif /* __AA_NET_H */ --- linux-3.5.0.orig/security/apparmor/include/audit.h +++ linux-3.5.0/security/apparmor/include/audit.h @@ -73,6 +73,10 @@ OP_FMMAP, OP_FMPROT, + OP_PIVOTROOT, + OP_MOUNT, + OP_UMOUNT, + OP_CREATE, OP_POST_CREATE, OP_BIND, @@ -122,11 +126,22 @@ unsigned long max; } rlim; struct { + const char *src_name; + const char *type; + const char *trans; + const char *data; + unsigned long flags; + } mnt; + struct { const char *target; u32 request; u32 denied; uid_t ouid; } fs; + struct { + int type, protocol; + struct sock *sk; + } net; }; }; --- linux-3.5.0.orig/security/apparmor/include/domain.h +++ linux-3.5.0/security/apparmor/include/domain.h @@ -23,6 +23,8 @@ char **table; }; +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex); + int apparmor_bprm_set_creds(struct linux_binprm *bprm); int apparmor_bprm_secureexec(struct linux_binprm *bprm); void apparmor_bprm_committing_creds(struct linux_binprm *bprm); --- linux-3.5.0.orig/security/apparmor/include/policy.h +++ linux-3.5.0/security/apparmor/include/policy.h @@ -27,6 +27,7 @@ #include "capability.h" #include "domain.h" #include "file.h" +#include "net.h" #include "resource.h" extern const char *const profile_mode_names[]; @@ -157,6 +158,7 @@ * @policy: general match rules governing policy * @file: The set of rules governing basic file access and domain transitions * @caps: capabilities for the profile + * @net: network controls for the profile * @rlimits: rlimits for the profile * * The AppArmor profile contains the basic confinement data. Each profile @@ -194,6 +196,7 @@ struct aa_policydb policy; struct aa_file_rules file; struct aa_caps caps; + struct aa_net net; struct aa_rlimit rlimits; }; --- linux-3.5.0.orig/security/apparmor/include/apparmor.h +++ linux-3.5.0/security/apparmor/include/apparmor.h @@ -29,8 +29,9 @@ #define AA_CLASS_NET 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 +#define AA_CLASS_MOUNT 7 -#define AA_CLASS_LAST AA_CLASS_DOMAIN +#define AA_CLASS_LAST AA_CLASS_MOUNT /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; --- linux-3.5.0.orig/security/smack/smackfs.c +++ linux-3.5.0/security/smack/smackfs.c @@ -325,11 +325,11 @@ int datalen; int rc = -1; - /* - * This is probably inefficient, but safe. - */ + /* This is inefficient */ datalen = strlen(data); - subject = kzalloc(datalen, GFP_KERNEL); + + /* Our first element can be 64 + \0 with no spaces */ + subject = kzalloc(datalen + 1, GFP_KERNEL); if (subject == NULL) return -1; object = kzalloc(datalen, GFP_KERNEL); --- linux-3.5.0.orig/arch/m32r/include/asm/signal.h +++ linux-3.5.0/arch/m32r/include/asm/signal.h @@ -116,6 +116,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-3.5.0.orig/arch/m32r/kernel/process.c +++ linux-3.5.0/arch/m32r/kernel/process.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -82,6 +83,7 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void) = pm_idle; @@ -90,6 +92,7 @@ idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/m68k/include/asm/signal.h +++ linux-3.5.0/arch/m68k/include/asm/signal.h @@ -119,6 +119,7 @@ __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; @@ -156,7 +157,7 @@ static inline void sigaddset(sigset_t *set, int _sig) { asm ("bfset %0{%1,#1}" - : "+od" (*set) + : "+o" (*set) : "id" ((_sig - 1) ^ 31) : "cc"); } @@ -164,7 +165,7 @@ static inline void sigdelset(sigset_t *set, int _sig) { asm ("bfclr %0{%1,#1}" - : "+od" (*set) + : "+o" (*set) : "id" ((_sig - 1) ^ 31) : "cc"); } @@ -180,7 +181,7 @@ int ret; asm ("bfextu %1{%2,#1},%0" : "=d" (ret) - : "od" (*set), "id" ((_sig-1) ^ 31) + : "o" (*set), "id" ((_sig-1) ^ 31) : "cc"); return ret; } --- linux-3.5.0.orig/arch/m68k/kernel/sys_m68k.c +++ linux-3.5.0/arch/m68k/kernel/sys_m68k.c @@ -479,9 +479,13 @@ goto bad_access; } - mem_value = *mem; + /* + * No need to check for EFAULT; we know that the page is + * present and writable. + */ + __get_user(mem_value, mem); if (mem_value == oldval) - *mem = newval; + __put_user(newval, mem); pte_unmap_unlock(pte, ptl); up_read(&mm->mmap_sem); --- linux-3.5.0.orig/arch/m68k/kernel/process.c +++ linux-3.5.0/arch/m68k/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -75,8 +76,10 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/m68k/kernel/head.S +++ linux-3.5.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-3.5.0.orig/arch/cris/include/asm/io.h +++ linux-3.5.0/arch/cris/include/asm/io.h @@ -133,12 +133,39 @@ #define insb(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,1,count) : 0) #define insw(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,2,count) : 0) #define insl(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,4,count) : 0) -#define outb(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,1,1) -#define outw(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,2,1) -#define outl(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,4,1) -#define outsb(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,1,count) -#define outsw(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,2,count) -#define outsl(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,3,count) +static inline void outb(unsigned char data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 1, 1); +} +static inline void outw(unsigned short data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 2, 1); +} +static inline void outl(unsigned int data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 4, 1); +} +static inline void outsb(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 1, count); +} +static inline void outsw(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 2, count); +} +static inline void outsl(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 4, count); +} /* * Convert a physical pointer to a virtual kernel pointer for /dev/mem --- linux-3.5.0.orig/arch/cris/include/asm/signal.h +++ linux-3.5.0/arch/cris/include/asm/signal.h @@ -122,6 +122,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-3.5.0.orig/arch/cris/kernel/process.c +++ linux-3.5.0/arch/cris/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include //#define DEBUG @@ -74,6 +75,7 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void); /* @@ -86,6 +88,7 @@ idle = default_idle; idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/s390/include/asm/compat.h +++ linux-3.5.0/arch/s390/include/asm/compat.h @@ -20,7 +20,7 @@ #define PSW32_MASK_CC 0x00003000UL #define PSW32_MASK_PM 0x00000f00UL -#define PSW32_MASK_USER 0x00003F00UL +#define PSW32_MASK_USER 0x0000FF00UL #define PSW32_ADDR_AMODE 0x80000000UL #define PSW32_ADDR_INSN 0x7FFFFFFFUL --- linux-3.5.0.orig/arch/s390/include/asm/ptrace.h +++ linux-3.5.0/arch/s390/include/asm/ptrace.h @@ -240,7 +240,7 @@ #define PSW_MASK_EA 0x00000000UL #define PSW_MASK_BA 0x00000000UL -#define PSW_MASK_USER 0x00003F00UL +#define PSW_MASK_USER 0x0000FF00UL #define PSW_ADDR_AMODE 0x80000000UL #define PSW_ADDR_INSN 0x7FFFFFFFUL @@ -269,7 +269,7 @@ #define PSW_MASK_EA 0x0000000100000000UL #define PSW_MASK_BA 0x0000000080000000UL -#define PSW_MASK_USER 0x00003F0180000000UL +#define PSW_MASK_USER 0x0000FF0180000000UL #define PSW_ADDR_AMODE 0x0000000000000000UL #define PSW_ADDR_INSN 0xFFFFFFFFFFFFFFFFUL --- linux-3.5.0.orig/arch/s390/include/asm/pgtable.h +++ linux-3.5.0/arch/s390/include/asm/pgtable.h @@ -67,6 +67,10 @@ #define my_zero_pfn(addr) page_to_pfn(ZERO_PAGE(addr)) +/* 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-3.5.0.orig/arch/s390/include/asm/mmu_context.h +++ linux-3.5.0/arch/s390/include/asm/mmu_context.h @@ -13,7 +13,6 @@ #include #include #include -#include static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) @@ -93,4 +92,17 @@ switch_mm(prev, next, current); } +static inline void arch_dup_mmap(struct mm_struct *oldmm, + struct mm_struct *mm) +{ +#ifdef CONFIG_64BIT + if (oldmm->context.asce_limit < mm->context.asce_limit) + crst_table_downgrade(mm, oldmm->context.asce_limit); +#endif +} + +static inline void arch_exit_mmap(struct mm_struct *mm) +{ +} + #endif /* __S390_MMU_CONTEXT_H */ --- linux-3.5.0.orig/arch/s390/include/asm/signal.h +++ linux-3.5.0/arch/s390/include/asm/signal.h @@ -131,6 +131,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-3.5.0.orig/arch/s390/include/asm/timex.h +++ linux-3.5.0/arch/s390/include/asm/timex.h @@ -130,4 +130,32 @@ return get_clock_xt() - sched_clock_base_cc; } +/** + * tod_to_ns - convert a TOD format value to nanoseconds + * @todval: to be converted TOD format value + * Returns: number of nanoseconds that correspond to the TOD format value + * + * Converting a 64 Bit TOD format value to nanoseconds means that the value + * must be divided by 4.096. In order to achieve that we multiply with 125 + * and divide by 512: + * + * ns = (todval * 125) >> 9; + * + * In order to avoid an overflow with the multiplication we can rewrite this. + * With a split todval == 2^32 * th + tl (th upper 32 bits, tl lower 32 bits) + * we end up with + * + * ns = ((2^32 * th + tl) * 125 ) >> 9; + * -> ns = (2^23 * th * 125) + ((tl * 125) >> 9); + * + */ +static inline unsigned long long tod_to_ns(unsigned long long todval) +{ + unsigned long long ns; + + ns = ((todval >> 32) << 23) * 125; + ns += ((todval & 0xffffffff) * 125) >> 9; + return ns; +} + #endif --- linux-3.5.0.orig/arch/s390/include/asm/tlbflush.h +++ linux-3.5.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-3.5.0.orig/arch/s390/include/asm/processor.h +++ linux-3.5.0/arch/s390/include/asm/processor.h @@ -122,7 +122,9 @@ regs->psw.mask = psw_user_bits | PSW_MASK_BA; \ regs->psw.addr = new_psw | PSW_ADDR_AMODE; \ regs->gprs[15] = new_stackp; \ + __tlb_flush_mm(current->mm); \ crst_table_downgrade(current->mm, 1UL << 31); \ + update_mm(current->mm, current); \ } while (0) /* Forward declaration, a strange C thing */ --- linux-3.5.0.orig/arch/s390/kvm/interrupt.c +++ linux-3.5.0/arch/s390/kvm/interrupt.c @@ -390,7 +390,7 @@ return 0; } - sltime = ((vcpu->arch.sie_block->ckc - now)*125)>>9; + sltime = tod_to_ns(vcpu->arch.sie_block->ckc - now); hrtimer_start(&vcpu->arch.ckc_timer, ktime_set (0, sltime) , HRTIMER_MODE_REL); VCPU_EVENT(vcpu, 5, "enabled wait via clock comparator: %llx ns", sltime); --- linux-3.5.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-3.5.0/arch/s390/kvm/kvm-s390.c @@ -752,6 +752,14 @@ } else prefix = 0; + /* + * The guest FPRS and ACRS are in the host FPRS/ACRS due to the lazy + * copying in vcpu load/put. Lets update our copies before we save + * it into the save area + */ + save_fp_regs(&vcpu->arch.guest_fpregs); + save_access_regs(vcpu->run->s.regs.acrs); + if (__guestcopy(vcpu, addr + offsetof(struct save_area, fp_regs), vcpu->arch.guest_fpregs.fprs, 128, prefix)) return -EFAULT; @@ -981,7 +989,7 @@ } memcpy(facilities, S390_lowcore.stfle_fac_list, 16); facilities[0] &= 0xff00fff3f47c0000ULL; - facilities[1] &= 0x201c000000000000ULL; + facilities[1] &= 0x001c000000000000ULL; return 0; } --- linux-3.5.0.orig/arch/s390/boot/compressed/vmlinux.lds.S +++ linux-3.5.0/arch/s390/boot/compressed/vmlinux.lds.S @@ -5,7 +5,7 @@ OUTPUT_ARCH(s390:64-bit) #else OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") -OUTPUT_ARCH(s390) +OUTPUT_ARCH(s390:31-bit) #endif ENTRY(startup) --- linux-3.5.0.orig/arch/s390/oprofile/init.c +++ linux-3.5.0/arch/s390/oprofile/init.c @@ -171,7 +171,7 @@ if (*offset) return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val < oprofile_min_interval) oprofile_hw_interval = oprofile_min_interval; @@ -214,7 +214,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0) return -EINVAL; @@ -245,7 +245,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) @@ -280,7 +280,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) @@ -319,7 +319,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) --- linux-3.5.0.orig/arch/s390/mm/pgtable.c +++ linux-3.5.0/arch/s390/mm/pgtable.c @@ -85,7 +85,6 @@ crst_table_free(mm, table); if (mm->context.asce_limit < limit) goto repeat; - update_mm(mm, current); return 0; } @@ -93,9 +92,6 @@ { pgd_t *pgd; - if (mm->context.asce_limit <= limit) - return; - __tlb_flush_mm(mm); while (mm->context.asce_limit > limit) { pgd = mm->pgd; switch (pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) { @@ -118,7 +114,6 @@ mm->task_size = mm->context.asce_limit; crst_table_free(mm, (unsigned long *) pgd); } - update_mm(mm, current); } #endif --- linux-3.5.0.orig/arch/s390/mm/gup.c +++ linux-3.5.0/arch/s390/mm/gup.c @@ -183,7 +183,7 @@ addr = start; len = (unsigned long) nr_pages << PAGE_SHIFT; end = start + len; - if (end < start) + if ((end < start) || (end > TASK_SIZE)) goto slow_irqon; /* --- linux-3.5.0.orig/arch/s390/mm/mmap.c +++ linux-3.5.0/arch/s390/mm/mmap.c @@ -105,9 +105,15 @@ int s390_mmap_check(unsigned long addr, unsigned long len) { + int rc; + if (!is_compat_task() && - len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) - return crst_table_upgrade(current->mm, 1UL << 53); + len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) { + rc = crst_table_upgrade(current->mm, 1UL << 53); + if (rc) + return rc; + update_mm(current->mm, current); + } return 0; } @@ -127,6 +133,7 @@ rc = crst_table_upgrade(mm, 1UL << 53); if (rc) return (unsigned long) rc; + update_mm(mm, current); area = arch_get_unmapped_area(filp, addr, len, pgoff, flags); } return area; @@ -149,6 +156,7 @@ rc = crst_table_upgrade(mm, 1UL << 53); if (rc) return (unsigned long) rc; + update_mm(mm, current); area = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags); } --- linux-3.5.0.orig/arch/s390/mm/fault.c +++ linux-3.5.0/arch/s390/mm/fault.c @@ -443,6 +443,7 @@ struct pt_regs regs; int access, fault; + /* Emulate a uaccess fault from kernel mode. */ regs.psw.mask = psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK; if (!irqs_disabled()) regs.psw.mask |= PSW_MASK_IO | PSW_MASK_EXT; @@ -452,12 +453,12 @@ regs.int_parm_long = (uaddr & PAGE_MASK) | 2; access = write ? VM_WRITE : VM_READ; fault = do_exception(®s, access); - if (unlikely(fault)) { - if (fault & VM_FAULT_OOM) - return -EFAULT; - else if (fault & VM_FAULT_SIGBUS) - do_sigbus(®s); - } + /* + * Since the fault happened in kernel mode while performing a uaccess + * all we need to do now is emulating a fixup in case "fault" is not + * zero. + * For the calling uaccess functions this results always in -EFAULT. + */ return fault ? -EFAULT : 0; } --- linux-3.5.0.orig/arch/s390/kernel/compat_wrapper.S +++ linux-3.5.0/arch/s390/kernel/compat_wrapper.S @@ -1636,7 +1636,7 @@ llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_readv + jg compat_sys_process_vm_readv ENTRY(compat_sys_process_vm_writev_wrapper) lgfr %r2,%r2 # compat_pid_t @@ -1646,4 +1646,4 @@ llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_writev + jg compat_sys_process_vm_writev --- linux-3.5.0.orig/arch/s390/kernel/compat_signal.c +++ linux-3.5.0/arch/s390/kernel/compat_signal.c @@ -311,6 +311,10 @@ regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) | (__u64)(regs32.psw.mask & PSW32_MASK_USER) << 32 | (__u64)(regs32.psw.addr & PSW32_ADDR_AMODE); + /* Check for invalid user address space control. */ + if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC)) + regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__u64)(regs32.psw.addr & PSW32_ADDR_INSN); for (i = 0; i < NUM_GPRS; i++) regs->gprs[i] = (__u64) regs32.gprs[i]; @@ -483,7 +487,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (__force __u64) frame; - regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */ + /* Force 31 bit amode and default user address space control. */ + regs->psw.mask = PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__force __u64) ka->sa.sa_handler; regs->gprs[2] = map_signal(sig); @@ -551,7 +558,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (__force __u64) frame; - regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */ + /* Force 31 bit amode and default user address space control. */ + regs->psw.mask = PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__u64) ka->sa.sa_handler; regs->gprs[2] = map_signal(sig); --- linux-3.5.0.orig/arch/s390/kernel/signal.c +++ linux-3.5.0/arch/s390/kernel/signal.c @@ -138,6 +138,10 @@ /* Use regs->psw.mask instead of psw_user_bits to preserve PER bit. */ regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) | (user_sregs.regs.psw.mask & PSW_MASK_USER); + /* Check for invalid user address space control. */ + if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC)) + regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); /* Check for invalid amode */ if (regs->psw.mask & PSW_MASK_EA) regs->psw.mask |= PSW_MASK_BA; @@ -275,7 +279,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (unsigned long) frame; - regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */ + /* Force default amode and default user address space control. */ + regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; regs->gprs[2] = map_signal(sig); @@ -348,7 +355,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (unsigned long) frame; - regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */ + /* Force default amode and default user address space control. */ + regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; regs->gprs[2] = map_signal(sig); --- linux-3.5.0.orig/arch/s390/kernel/smp.c +++ linux-3.5.0/arch/s390/kernel/smp.c @@ -984,14 +984,11 @@ unsigned int cpu = (unsigned int)(long)hcpu; struct cpu *c = &pcpu_devices[cpu].cpu; struct device *s = &c->dev; - struct s390_idle_data *idle; int err = 0; switch (action) { case CPU_ONLINE: case CPU_ONLINE_FROZEN: - idle = &per_cpu(s390_idle, cpu); - memset(idle, 0, sizeof(struct s390_idle_data)); err = sysfs_create_group(&s->kobj, &cpu_online_attr_group); break; case CPU_DEAD: --- linux-3.5.0.orig/arch/s390/kernel/compat_linux.c +++ linux-3.5.0/arch/s390/kernel/compat_linux.c @@ -622,7 +622,6 @@ return -EFAULT; if (a.offset & ~PAGE_MASK) return -EINVAL; - a.addr = (unsigned long) compat_ptr(a.addr); return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); } @@ -633,7 +632,6 @@ if (copy_from_user(&a, arg, sizeof(a))) return -EFAULT; - a.addr = (unsigned long) compat_ptr(a.addr); return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); } --- linux-3.5.0.orig/arch/s390/kernel/time.c +++ linux-3.5.0/arch/s390/kernel/time.c @@ -64,7 +64,7 @@ */ unsigned long long notrace __kprobes sched_clock(void) { - return (get_clock_monotonic() * 125) >> 9; + return tod_to_ns(get_clock_monotonic()); } /* @@ -121,6 +121,9 @@ nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires)); do_div(nsecs, 125); S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9); + /* Program the maximum value if we have an overflow (== year 2042) */ + if (unlikely(S390_lowcore.clock_comparator < sched_clock_base_cc)) + S390_lowcore.clock_comparator = -1ULL; set_clock_comparator(S390_lowcore.clock_comparator); return 0; } --- linux-3.5.0.orig/arch/s390/kernel/entry.S +++ linux-3.5.0/arch/s390/kernel/entry.S @@ -670,7 +670,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-3.5.0.orig/arch/s390/kernel/entry64.S +++ linux-3.5.0/arch/s390/kernel/entry64.S @@ -697,8 +697,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-3.5.0.orig/arch/s390/kernel/processor.c +++ linux-3.5.0/arch/s390/kernel/processor.c @@ -26,12 +26,14 @@ void __cpuinit cpu_init(void) { struct cpuid *id = &per_cpu(cpu_id, smp_processor_id()); + struct s390_idle_data *idle = &__get_cpu_var(s390_idle); get_cpu_id(id); atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; BUG_ON(current->mm); enter_lazy_tlb(&init_mm, current); + memset(idle, 0, sizeof(*idle)); } /* --- linux-3.5.0.orig/arch/s390/kernel/vmlinux.lds.S +++ linux-3.5.0/arch/s390/kernel/vmlinux.lds.S @@ -8,7 +8,7 @@ #ifndef CONFIG_64BIT OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") -OUTPUT_ARCH(s390) +OUTPUT_ARCH(s390:31-bit) ENTRY(startup) jiffies = jiffies_64 + 4; #else --- linux-3.5.0.orig/arch/frv/kernel/process.c +++ linux-3.5.0/arch/frv/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -69,12 +70,14 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { check_pgt_cache(); if (!frv_dma_inprogress && idle) idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } --- linux-3.5.0.orig/arch/avr32/include/asm/signal.h +++ linux-3.5.0/arch/avr32/include/asm/signal.h @@ -121,6 +121,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-3.5.0.orig/arch/avr32/configs/merisc_defconfig +++ linux-3.5.0/arch/avr32/configs/merisc_defconfig @@ -102,7 +102,6 @@ CONFIG_LOGO=y CONFIG_MMC=y CONFIG_MMC_ATMELMCI=y -CONFIG_MMC_ATMELMCI_DMA=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_ATMEL_PWM=y --- linux-3.5.0.orig/arch/avr32/configs/favr-32_defconfig +++ linux-3.5.0/arch/avr32/configs/favr-32_defconfig @@ -122,7 +122,6 @@ CONFIG_USB_CDC_COMPOSITE=m CONFIG_MMC=y CONFIG_MMC_ATMELMCI=y -CONFIG_MMC_ATMELMCI_DMA=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_ATMEL_PWM=m --- linux-3.5.0.orig/arch/avr32/kernel/module.c +++ linux-3.5.0/arch/avr32/kernel/module.c @@ -264,7 +264,7 @@ break; case R_AVR32_GOT18SW: if ((relocation & 0xfffe0003) != 0 - && (relocation & 0xfffc0003) != 0xffff0000) + && (relocation & 0xfffc0000) != 0xfffc0000) return reloc_overflow(module, "R_AVR32_GOT18SW", relocation); relocation >>= 2; --- linux-3.5.0.orig/arch/h8300/include/asm/signal.h +++ linux-3.5.0/arch/h8300/include/asm/signal.h @@ -121,6 +121,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-3.5.0.orig/arch/h8300/kernel/process.c +++ linux-3.5.0/arch/h8300/kernel/process.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -78,8 +79,10 @@ void cpu_idle(void) { while (1) { + rcu_idle_enter(); while (!need_resched()) idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/x86/Makefile +++ linux-3.5.0/arch/x86/Makefile @@ -85,7 +85,7 @@ ifdef CONFIG_X86_X32 x32_ld_ok := $(call try-run,\ /bin/echo -e '1: .quad 1b' | \ - $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" - && \ + $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \ $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \ $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n) ifeq ($(x32_ld_ok),y) --- linux-3.5.0.orig/arch/x86/Kconfig +++ linux-3.5.0/arch/x86/Kconfig @@ -381,6 +381,12 @@ # Following is an alphabetically sorted list of 32 bit extended platforms # Please maintain the alphabetic order if and when there are additions +config X86_LPIA + bool "LPIA-compatible" + depends on X86_32 && X86_PC + help + Choose this option if your computer is an LPIA platform. + config X86_INTEL_CE bool "CE4100 TV platform" depends on PCI @@ -883,6 +889,14 @@ Additional support for intel specific MCE features such as the thermal monitor. +config X86_MCE_XEON75XX + tristate "Intel Xeon 7500 series corrected memory error driver" + depends on X86_MCE_INTEL && PCI + ---help--- + Add support for a Intel Xeon 7500 series specific memory error driver. + This allows to report the DIMM and physical address on a corrected + memory error machine check event. + config X86_MCE_AMD def_bool y prompt "AMD MCE features" @@ -1244,10 +1258,6 @@ Specify the maximum number of NUMA Nodes available on the target system. Increases memory reserved to accommodate various tables. -config HAVE_ARCH_ALLOC_REMAP - def_bool y - depends on X86_32 && NUMA - config ARCH_HAVE_MEMORY_PRESENT def_bool y depends on X86_32 && DISCONTIGMEM @@ -2154,6 +2164,7 @@ config IA32_EMULATION bool "IA32 Emulation" depends on X86_64 + select BINFMT_ELF select COMPAT_BINFMT_ELF ---help--- Include code to run legacy 32-bit programs under a @@ -2220,6 +2231,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-3.5.0.orig/arch/x86/realmode/rm/wakemain.c +++ linux-3.5.0/arch/x86/realmode/rm/wakemain.c @@ -61,6 +61,30 @@ } } +#define I8042_STATUS_REG 0x64 +#define I8042_DATA_REG 0x60 +#define I8042_SET_LED_BITS 0xed +#define I8042_STR_IBF 0x02 + +static void flash_keyboard_leds(void) +{ + int i; + unsigned char leds = 7; + + /* Flash keyboard LEDs 3 times */ + for (i = 0; i < 6; i++) { + while (inb(I8042_STATUS_REG) & I8042_STR_IBF) + ; + outb(I8042_SET_LED_BITS, I8042_DATA_REG); + while (inb(I8042_STATUS_REG) & I8042_STR_IBF) + ; + outb(leds, I8042_DATA_REG); + leds ^= 7; + udelay(500000); + } +} + + void main(void) { /* Kill machine if structures are wrong */ @@ -79,4 +103,7 @@ probe_cards(0); set_mode(wakeup_header.video_mode); } + + if (wakeup_header.realmode_flags & 8) + flash_keyboard_leds(); } --- linux-3.5.0.orig/arch/x86/include/asm/efi.h +++ linux-3.5.0/arch/x86/include/asm/efi.h @@ -94,10 +94,12 @@ #endif /* CONFIG_X86_32 */ extern int add_efi_memmap; +extern unsigned long x86_efi_facility; extern void efi_set_executable(efi_memory_desc_t *md, bool executable); extern int efi_memblock_x86_reserve_range(void); extern void efi_call_phys_prelog(void); extern void efi_call_phys_epilog(void); +extern void efi_unmap_memmap(void); #ifndef CONFIG_EFI /* --- linux-3.5.0.orig/arch/x86/include/asm/paravirt.h +++ linux-3.5.0/arch/x86/include/asm/paravirt.h @@ -741,7 +741,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-3.5.0.orig/arch/x86/include/asm/ptrace.h +++ linux-3.5.0/arch/x86/include/asm/ptrace.h @@ -205,21 +205,14 @@ } #endif -/* - * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode - * when it traps. The previous stack will be directly underneath the saved - * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. - * - * This is valid only for kernel mode traps. - */ -static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) -{ #ifdef CONFIG_X86_32 - return (unsigned long)(®s->sp); +extern unsigned long kernel_stack_pointer(struct pt_regs *regs); #else +static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) +{ return regs->sp; -#endif } +#endif #define GET_IP(regs) ((regs)->ip) #define GET_FP(regs) ((regs)->bp) --- linux-3.5.0.orig/arch/x86/include/asm/pgtable.h +++ linux-3.5.0/arch/x86/include/asm/pgtable.h @@ -142,12 +142,16 @@ return (pmd_val(pmd) & PTE_PFN_MASK) >> PAGE_SHIFT; } +static inline unsigned long pud_pfn(pud_t pud) +{ + return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT; +} + #define pte_page(pte) pfn_to_page(pte_pfn(pte)) static inline int pmd_large(pmd_t pte) { - return (pmd_flags(pte) & (_PAGE_PSE | _PAGE_PRESENT)) == - (_PAGE_PSE | _PAGE_PRESENT); + return pmd_flags(pte) & _PAGE_PSE; } #ifdef CONFIG_TRANSPARENT_HUGEPAGE @@ -415,7 +419,13 @@ static inline int pmd_present(pmd_t pmd) { - return pmd_flags(pmd) & _PAGE_PRESENT; + /* + * Checking for _PAGE_PSE is needed too because + * split_huge_page will temporarily clear the present bit (but + * the _PAGE_PSE flag will remain set at all times while the + * _PAGE_PRESENT bit is clear). + */ + return pmd_flags(pmd) & (_PAGE_PRESENT | _PAGE_PROTNONE | _PAGE_PSE); } static inline int pmd_none(pmd_t pmd) --- linux-3.5.0.orig/arch/x86/include/asm/processor-flags.h +++ linux-3.5.0/arch/x86/include/asm/processor-flags.h @@ -44,6 +44,7 @@ */ #define X86_CR3_PWT 0x00000008 /* Page Write Through */ #define X86_CR3_PCD 0x00000010 /* Page Cache Disable */ +#define X86_CR3_PCID_MASK 0x00000fff /* PCID Mask */ /* * Intel CPU features in CR4 @@ -61,6 +62,7 @@ #define X86_CR4_OSXMMEXCPT 0x00000400 /* enable unmasked SSE exceptions */ #define X86_CR4_VMXE 0x00002000 /* enable VMX virtualization */ #define X86_CR4_RDWRGSFS 0x00010000 /* enable RDWRGSFS support */ +#define X86_CR4_PCIDE 0x00020000 /* enable PCID support */ #define X86_CR4_OSXSAVE 0x00040000 /* enable xsave and xrestore */ #define X86_CR4_SMEP 0x00100000 /* enable SMEP support */ --- linux-3.5.0.orig/arch/x86/include/asm/signal.h +++ linux-3.5.0/arch/x86/include/asm/signal.h @@ -125,6 +125,8 @@ extern void do_notify_resume(struct pt_regs *, void *, __u32); # endif /* __KERNEL__ */ +#define __ARCH_HAS_SA_RESTORER + #ifdef __i386__ # ifdef __KERNEL__ struct old_sigaction { --- linux-3.5.0.orig/arch/x86/include/asm/kvm_host.h +++ linux-3.5.0/arch/x86/include/asm/kvm_host.h @@ -48,12 +48,13 @@ #define CR3_PAE_RESERVED_BITS ((X86_CR3_PWT | X86_CR3_PCD) - 1) #define CR3_NONPAE_RESERVED_BITS ((PAGE_SIZE-1) & ~(X86_CR3_PWT | X86_CR3_PCD)) +#define CR3_PCID_ENABLED_RESERVED_BITS 0xFFFFFF0000000000ULL #define CR3_L_MODE_RESERVED_BITS (CR3_NONPAE_RESERVED_BITS | \ 0xFFFFFF0000000000ULL) #define CR4_RESERVED_BITS \ (~(unsigned long)(X86_CR4_VME | X86_CR4_PVI | X86_CR4_TSD | X86_CR4_DE\ | X86_CR4_PSE | X86_CR4_PAE | X86_CR4_MCE \ - | X86_CR4_PGE | X86_CR4_PCE | X86_CR4_OSFXSR \ + | X86_CR4_PGE | X86_CR4_PCE | X86_CR4_OSFXSR | X86_CR4_PCIDE \ | X86_CR4_OSXSAVE | X86_CR4_SMEP | X86_CR4_RDWRGSFS \ | X86_CR4_OSXMMEXCPT | X86_CR4_VMXE)) @@ -410,8 +411,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; struct { u64 msr_val; @@ -661,6 +662,7 @@ u64 (*get_mt_mask)(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio); int (*get_lpage_level)(void); bool (*rdtscp_supported)(void); + bool (*invpcid_supported)(void); void (*adjust_tsc_offset)(struct kvm_vcpu *vcpu, s64 adjustment, bool host); void (*set_tdp_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3); --- linux-3.5.0.orig/arch/x86/include/asm/bootparam.h +++ linux-3.5.0/arch/x86/include/asm/bootparam.h @@ -66,6 +66,7 @@ __u64 setup_data; __u64 pref_address; __u32 init_size; + __u32 handover_offset; } __attribute__((packed)); struct sys_desc_table { --- linux-3.5.0.orig/arch/x86/include/asm/dma-mapping.h +++ linux-3.5.0/arch/x86/include/asm/dma-mapping.h @@ -162,8 +162,6 @@ { struct dma_map_ops *ops = get_dma_ops(dev); - WARN_ON(irqs_disabled()); /* for portability */ - if (dma_release_from_coherent(dev, get_order(size), vaddr)) return; --- linux-3.5.0.orig/arch/x86/include/asm/paravirt_types.h +++ linux-3.5.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 { @@ -680,6 +681,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-3.5.0.orig/arch/x86/include/asm/mmzone_32.h +++ linux-3.5.0/arch/x86/include/asm/mmzone_32.h @@ -14,12 +14,6 @@ #include -extern void resume_map_numa_kva(pgd_t *pgd); - -#else /* !CONFIG_NUMA */ - -static inline void resume_map_numa_kva(pgd_t *pgd) {} - #endif /* CONFIG_NUMA */ #ifdef CONFIG_DISCONTIGMEM --- linux-3.5.0.orig/arch/x86/include/asm/mce.h +++ linux-3.5.0/arch/x86/include/asm/mce.h @@ -77,6 +77,8 @@ __u32 socketid; /* CPU socket ID */ __u32 apicid; /* CPU initial apic ID */ __u64 mcgcap; /* MCGCAP MSR: machine check capabilities of CPU */ + __u64 aux0; /* model specific */ + __u64 aux1; /* model specific */ }; /* --- linux-3.5.0.orig/arch/x86/include/asm/fpu-internal.h +++ linux-3.5.0/arch/x86/include/asm/fpu-internal.h @@ -334,14 +334,17 @@ typedef struct { int preload; } fpu_switch_t; /* - * FIXME! We could do a totally lazy restore, but we need to - * add a per-cpu "this was the task that last touched the FPU - * on this CPU" variable, and the task needs to have a "I last - * touched the FPU on this CPU" and check them. + * Must be run with preemption disabled: this clears the fpu_owner_task, + * on this CPU. * - * We don't do that yet, so "fpu_lazy_restore()" always returns - * false, but some day.. + * This will disable any lazy FPU state restore of the current FPU state, + * but if the current thread owns the FPU, it will still be saved by. */ +static inline void __cpu_disable_lazy_restore(unsigned int cpu) +{ + per_cpu(fpu_owner_task, cpu) = NULL; +} + static inline int fpu_lazy_restore(struct task_struct *new, unsigned int cpu) { return new == this_cpu_read_stable(fpu_owner_task) && --- linux-3.5.0.orig/arch/x86/include/asm/syscall.h +++ linux-3.5.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-3.5.0.orig/arch/x86/include/asm/vmx.h +++ linux-3.5.0/arch/x86/include/asm/vmx.h @@ -60,6 +60,7 @@ #define SECONDARY_EXEC_WBINVD_EXITING 0x00000040 #define SECONDARY_EXEC_UNRESTRICTED_GUEST 0x00000080 #define SECONDARY_EXEC_PAUSE_LOOP_EXITING 0x00000400 +#define SECONDARY_EXEC_ENABLE_INVPCID 0x00001000 #define PIN_BASED_EXT_INTR_MASK 0x00000001 @@ -281,6 +282,7 @@ #define EXIT_REASON_EPT_MISCONFIG 49 #define EXIT_REASON_WBINVD 54 #define EXIT_REASON_XSETBV 55 +#define EXIT_REASON_INVPCID 58 /* * Interruption-information format @@ -404,6 +406,7 @@ #define VMX_EPTP_WB_BIT (1ull << 14) #define VMX_EPT_2MB_PAGE_BIT (1ull << 16) #define VMX_EPT_1GB_PAGE_BIT (1ull << 17) +#define VMX_EPT_AD_BIT (1ull << 21) #define VMX_EPT_EXTENT_INDIVIDUAL_BIT (1ull << 24) #define VMX_EPT_EXTENT_CONTEXT_BIT (1ull << 25) #define VMX_EPT_EXTENT_GLOBAL_BIT (1ull << 26) @@ -415,11 +418,14 @@ #define VMX_EPT_MAX_GAW 0x4 #define VMX_EPT_MT_EPTE_SHIFT 3 #define VMX_EPT_GAW_EPTP_SHIFT 3 +#define VMX_EPT_AD_ENABLE_BIT (1ull << 6) #define VMX_EPT_DEFAULT_MT 0x6ull #define VMX_EPT_READABLE_MASK 0x1ull #define VMX_EPT_WRITABLE_MASK 0x2ull #define VMX_EPT_EXECUTABLE_MASK 0x4ull #define VMX_EPT_IPAT_BIT (1ull << 6) +#define VMX_EPT_ACCESS_BIT (1ull << 8) +#define VMX_EPT_DIRTY_BIT (1ull << 9) #define VMX_EPT_IDENTITY_PAGETABLE_ADDR 0xfffbc000ul --- linux-3.5.0.orig/arch/x86/include/asm/xen/page.h +++ linux-3.5.0/arch/x86/include/asm/xen/page.h @@ -51,7 +51,8 @@ extern int m2p_add_override(unsigned long mfn, struct page *page, struct gnttab_map_grant_ref *kmap_op); -extern int m2p_remove_override(struct page *page, bool clear_pte); +extern int m2p_remove_override(struct page *page, + struct gnttab_map_grant_ref *kmap_op); extern struct page *m2p_find_override(unsigned long mfn); extern unsigned long m2p_find_override_pfn(unsigned long mfn, unsigned long pfn); --- linux-3.5.0.orig/arch/x86/xen/xen-asm_32.S +++ linux-3.5.0/arch/x86/xen/xen-asm_32.S @@ -89,11 +89,11 @@ */ #ifdef CONFIG_SMP GET_THREAD_INFO(%eax) - movl TI_cpu(%eax), %eax - movl __per_cpu_offset(,%eax,4), %eax - mov xen_vcpu(%eax), %eax + movl %ss:TI_cpu(%eax), %eax + movl %ss:__per_cpu_offset(,%eax,4), %eax + mov %ss:xen_vcpu(%eax), %eax #else - movl xen_vcpu, %eax + movl %ss:xen_vcpu, %eax #endif /* check IF state we're restoring */ @@ -106,11 +106,11 @@ * resuming the code, so we don't have to be worried about * being preempted to another CPU. */ - setz XEN_vcpu_info_mask(%eax) + setz %ss:XEN_vcpu_info_mask(%eax) xen_iret_start_crit: /* check for unmasked and pending */ - cmpw $0x0001, XEN_vcpu_info_pending(%eax) + cmpw $0x0001, %ss:XEN_vcpu_info_pending(%eax) /* * If there's something pending, mask events again so we can @@ -118,7 +118,7 @@ * touch XEN_vcpu_info_mask. */ jne 1f - movb $1, XEN_vcpu_info_mask(%eax) + movb $1, %ss:XEN_vcpu_info_mask(%eax) 1: popl %eax --- linux-3.5.0.orig/arch/x86/xen/spinlock.c +++ linux-3.5.0/arch/x86/xen/spinlock.c @@ -328,7 +328,6 @@ if (per_cpu(lock_spinners, cpu) == xl) { ADD_STATS(released_slow_kicked, 1); xen_send_IPI_one(cpu, XEN_SPIN_UNLOCK_VECTOR); - break; } } } --- linux-3.5.0.orig/arch/x86/xen/smp.c +++ linux-3.5.0/arch/x86/xen/smp.c @@ -669,6 +669,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-3.5.0.orig/arch/x86/xen/setup.c +++ linux-3.5.0/arch/x86/xen/setup.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -78,9 +79,16 @@ memblock_reserve(start, size); xen_max_p2m_pfn = PFN_DOWN(start + size); + for (pfn = PFN_DOWN(start); pfn < xen_max_p2m_pfn; pfn++) { + unsigned long mfn = pfn_to_mfn(pfn); + + if (WARN(mfn == pfn, "Trying to over-write 1-1 mapping (pfn: %lx)\n", pfn)) + continue; + WARN(mfn != INVALID_P2M_ENTRY, "Trying to remove %lx which has %lx mfn!\n", + pfn, mfn); - for (pfn = PFN_DOWN(start); pfn <= xen_max_p2m_pfn; pfn++) __set_phys_to_machine(pfn, INVALID_P2M_ENTRY); + } } static unsigned long __init xen_do_chunk(unsigned long start, @@ -542,4 +550,7 @@ disable_cpufreq(); WARN_ON(set_pm_idle_to_default()); fiddle_vdso(); +#ifdef CONFIG_NUMA + numa_off = 1; +#endif } --- linux-3.5.0.orig/arch/x86/xen/mmu.c +++ linux-3.5.0/arch/x86/xen/mmu.c @@ -1203,6 +1203,25 @@ return this_cpu_read(xen_vcpu_info.arch.cr2); } +void xen_flush_tlb_all(void) +{ + struct mmuext_op *op; + struct multicall_space mcs; + + trace_xen_mmu_flush_tlb_all(0); + + preempt_disable(); + + mcs = xen_mc_entry(sizeof(*op)); + + op = mcs.args; + op->cmd = MMUEXT_TLB_FLUSH_ALL; + MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); + + xen_mc_issue(PARAVIRT_LAZY_MMU); + + preempt_enable(); +} static void xen_flush_tlb(void) { struct mmuext_op *op; @@ -2033,6 +2052,7 @@ .lazy_mode = { .enter = paravirt_enter_lazy_mmu, .leave = xen_leave_lazy_mmu, + .flush = paravirt_flush_lazy_mmu, }, .set_fixmap = xen_set_fixmap, @@ -2339,7 +2359,7 @@ err = 0; out: - flush_tlb_all(); + xen_flush_tlb_all(); return err; } --- linux-3.5.0.orig/arch/x86/xen/time.c +++ linux-3.5.0/arch/x86/xen/time.c @@ -497,7 +497,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-3.5.0.orig/arch/x86/xen/enlighten.c +++ linux-3.5.0/arch/x86/xen/enlighten.c @@ -65,6 +65,7 @@ #include #include #include +#include #ifdef CONFIG_ACPI #include @@ -140,6 +141,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]; @@ -952,7 +968,16 @@ native_write_cr4(cr4); } - +#ifdef CONFIG_X86_64 +static inline unsigned long xen_read_cr8(void) +{ + return 0; +} +static inline void xen_write_cr8(unsigned long val) +{ + BUG_ON(val); +} +#endif static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) { int ret; @@ -1121,6 +1146,11 @@ .read_cr4_safe = native_read_cr4_safe, .write_cr4 = xen_write_cr4, +#ifdef CONFIG_X86_64 + .read_cr8 = xen_read_cr8, + .write_cr8 = xen_write_cr8, +#endif + .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, @@ -1131,6 +1161,8 @@ .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, + .read_tscp = native_read_tscp, + .iret = xen_iret, .irq_enable_sysexit = xen_sysexit, #ifdef CONFIG_X86_64 @@ -1352,6 +1384,14 @@ pgd = (pgd_t *)xen_start_info->pt_base; +#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]; @@ -1422,6 +1462,10 @@ pci_request_acs(); xen_acpi_sleep_register(); + + /* Avoid searching for BIOS MP tables */ + x86_init.mpparse.find_smp_config = x86_init_noop; + x86_init.mpparse.get_smp_config = x86_init_uint_noop; } #ifdef CONFIG_PCI /* PCI BIOS service won't work from a PV guest. */ @@ -1504,8 +1548,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-3.5.0.orig/arch/x86/xen/p2m.c +++ linux-3.5.0/arch/x86/xen/p2m.c @@ -194,6 +194,13 @@ * boundary violation will require three middle nodes. */ RESERVE_BRK(p2m_mid_identity, PAGE_SIZE * 2 * 3); +/* When we populate back during bootup, the amount of pages can vary. The + * max we have is seen is 395979, but that does not mean it can't be more. + * Some machines can have 3GB I/O holes even. With early_can_reuse_p2m_middle + * it can re-use Xen provided mfn_list array, so we only need to allocate at + * most three P2M top nodes. */ +RESERVE_BRK(p2m_populated, PAGE_SIZE * 3); + static inline unsigned p2m_top_index(unsigned long pfn) { BUG_ON(pfn >= MAX_P2M_PFN); @@ -570,12 +577,99 @@ } return true; } + +/* + * Skim over the P2M tree looking at pages that are either filled with + * INVALID_P2M_ENTRY or with 1:1 PFNs. If found, re-use that page and + * replace the P2M leaf with a p2m_missing or p2m_identity. + * Stick the old page in the new P2M tree location. + */ +bool __init early_can_reuse_p2m_middle(unsigned long set_pfn, unsigned long set_mfn) +{ + unsigned topidx; + unsigned mididx; + unsigned ident_pfns; + unsigned inv_pfns; + unsigned long *p2m; + unsigned long *mid_mfn_p; + unsigned idx; + unsigned long pfn; + + /* We only look when this entails a P2M middle layer */ + if (p2m_index(set_pfn)) + return false; + + for (pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_PER_PAGE) { + topidx = p2m_top_index(pfn); + + if (!p2m_top[topidx]) + continue; + + if (p2m_top[topidx] == p2m_mid_missing) + continue; + + mididx = p2m_mid_index(pfn); + p2m = p2m_top[topidx][mididx]; + if (!p2m) + continue; + + if ((p2m == p2m_missing) || (p2m == p2m_identity)) + continue; + + if ((unsigned long)p2m == INVALID_P2M_ENTRY) + continue; + + ident_pfns = 0; + inv_pfns = 0; + for (idx = 0; idx < P2M_PER_PAGE; idx++) { + /* IDENTITY_PFNs are 1:1 */ + if (p2m[idx] == IDENTITY_FRAME(pfn + idx)) + ident_pfns++; + else if (p2m[idx] == INVALID_P2M_ENTRY) + inv_pfns++; + else + break; + } + if ((ident_pfns == P2M_PER_PAGE) || (inv_pfns == P2M_PER_PAGE)) + goto found; + } + return false; +found: + /* Found one, replace old with p2m_identity or p2m_missing */ + p2m_top[topidx][mididx] = (ident_pfns ? p2m_identity : p2m_missing); + /* And the other for save/restore.. */ + mid_mfn_p = p2m_top_mfn_p[topidx]; + /* NOTE: Even if it is a p2m_identity it should still be point to + * a page filled with INVALID_P2M_ENTRY entries. */ + mid_mfn_p[mididx] = virt_to_mfn(p2m_missing); + + /* Reset where we want to stick the old page in. */ + topidx = p2m_top_index(set_pfn); + mididx = p2m_mid_index(set_pfn); + + /* This shouldn't happen */ + if (WARN_ON(p2m_top[topidx] == p2m_mid_missing)) + early_alloc_p2m(set_pfn); + + if (WARN_ON(p2m_top[topidx][mididx] != p2m_missing)) + return false; + + p2m_init(p2m); + p2m_top[topidx][mididx] = p2m; + mid_mfn_p = p2m_top_mfn_p[topidx]; + mid_mfn_p[mididx] = virt_to_mfn(p2m); + + return true; +} bool __init early_set_phys_to_machine(unsigned long pfn, unsigned long mfn) { if (unlikely(!__set_phys_to_machine(pfn, mfn))) { if (!early_alloc_p2m(pfn)) return false; + if (early_can_reuse_p2m_middle(pfn, mfn)) + return __set_phys_to_machine(pfn, mfn); + if (!early_alloc_p2m_middle(pfn, false /* boundary crossover OK!*/)) return false; @@ -734,9 +828,6 @@ xen_mc_issue(PARAVIRT_LAZY_MMU); } - /* let's use dev_bus_addr to record the old mfn instead */ - kmap_op->dev_bus_addr = page->index; - page->index = (unsigned long) kmap_op; } spin_lock_irqsave(&m2p_override_lock, flags); list_add(&page->lru, &m2p_overrides[mfn_hash(mfn)]); @@ -763,7 +854,8 @@ return 0; } EXPORT_SYMBOL_GPL(m2p_add_override); -int m2p_remove_override(struct page *page, bool clear_pte) +int m2p_remove_override(struct page *page, + struct gnttab_map_grant_ref *kmap_op) { unsigned long flags; unsigned long mfn; @@ -793,10 +885,8 @@ WARN_ON(!PagePrivate(page)); ClearPagePrivate(page); - if (clear_pte) { - struct gnttab_map_grant_ref *map_op = - (struct gnttab_map_grant_ref *) page->index; - set_phys_to_machine(pfn, map_op->dev_bus_addr); + set_phys_to_machine(pfn, page->index); + if (kmap_op != NULL) { if (!PageHighMem(page)) { struct multicall_space mcs; struct gnttab_unmap_grant_ref *unmap_op; @@ -808,13 +898,13 @@ * issued. In this case handle is going to -1 because * it hasn't been modified yet. */ - if (map_op->handle == -1) + if (kmap_op->handle == -1) xen_mc_flush(); /* - * Now if map_op->handle is negative it means that the + * Now if kmap_op->handle is negative it means that the * hypercall actually returned an error. */ - if (map_op->handle == GNTST_general_error) { + if (kmap_op->handle == GNTST_general_error) { printk(KERN_WARNING "m2p_remove_override: " "pfn %lx mfn %lx, failed to modify kernel mappings", pfn, mfn); @@ -824,8 +914,8 @@ mcs = xen_mc_entry( sizeof(struct gnttab_unmap_grant_ref)); unmap_op = mcs.args; - unmap_op->host_addr = map_op->host_addr; - unmap_op->handle = map_op->handle; + unmap_op->host_addr = kmap_op->host_addr; + unmap_op->handle = kmap_op->handle; unmap_op->dev_bus_addr = 0; MULTI_grant_table_op(mcs.mc, @@ -836,10 +926,9 @@ set_pte_at(&init_mm, address, ptep, pfn_pte(pfn, PAGE_KERNEL)); __flush_tlb_single(address); - map_op->host_addr = 0; + kmap_op->host_addr = 0; } - } else - set_phys_to_machine(pfn, page->index); + } /* p2m(m2p(mfn)) == FOREIGN_FRAME(mfn): the mfn is already present * somewhere in this domain, even before being added to the --- linux-3.5.0.orig/arch/x86/platform/efi/efi.c +++ linux-3.5.0/arch/x86/platform/efi/efi.c @@ -50,9 +50,6 @@ #define EFI_DEBUG 1 -int efi_enabled; -EXPORT_SYMBOL(efi_enabled); - struct efi __read_mostly efi = { .mps = EFI_INVALID_TABLE_ADDR, .acpi = EFI_INVALID_TABLE_ADDR, @@ -68,15 +65,29 @@ struct efi_memory_map memmap; -bool efi_64bit; -static bool efi_native; - static struct efi efi_phys __initdata; static efi_system_table_t efi_systab __initdata; +static inline bool efi_is_native(void) +{ + return IS_ENABLED(CONFIG_X86_64) == efi_enabled(EFI_64BIT); +} + +unsigned long x86_efi_facility; + +/* + * Returns 1 if 'facility' is enabled, 0 otherwise. + */ +int efi_enabled(int facility) +{ + return test_bit(facility, &x86_efi_facility) != 0; +} +EXPORT_SYMBOL(efi_enabled); + +static bool disable_runtime = false; static int __init setup_noefi(char *arg) { - efi_enabled = 0; + disable_runtime = true; return 0; } early_param("noefi", setup_noefi); @@ -419,10 +430,22 @@ } } -static void __init efi_free_boot_services(void) +void __init efi_unmap_memmap(void) +{ + clear_bit(EFI_MEMMAP, &x86_efi_facility); + if (memmap.map) { + early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); + memmap.map = NULL; + } +} + +void __init efi_free_boot_services(void) { void *p; + if (!efi_is_native()) + return; + for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { efi_memory_desc_t *md = p; unsigned long long start = md->phys_addr; @@ -438,11 +461,13 @@ free_bootmem_late(start, size); } + + efi_unmap_memmap(); } static int __init efi_systab_init(void *phys) { - if (efi_64bit) { + if (efi_enabled(EFI_64BIT)) { efi_system_table_64_t *systab64; u64 tmp = 0; @@ -534,7 +559,7 @@ void *config_tables, *tablep; int i, sz; - if (efi_64bit) + if (efi_enabled(EFI_64BIT)) sz = sizeof(efi_config_table_64_t); else sz = sizeof(efi_config_table_32_t); @@ -554,7 +579,7 @@ efi_guid_t guid; unsigned long table; - if (efi_64bit) { + if (efi_enabled(EFI_64BIT)) { u64 table64; guid = ((efi_config_table_64_t *)tablep)->guid; table64 = ((efi_config_table_64_t *)tablep)->table; @@ -666,22 +691,19 @@ if (boot_params.efi_info.efi_systab_hi || boot_params.efi_info.efi_memmap_hi) { pr_info("Table located above 4GB, disabling EFI.\n"); - efi_enabled = 0; return; } efi_phys.systab = (efi_system_table_t *)boot_params.efi_info.efi_systab; - efi_native = !efi_64bit; #else efi_phys.systab = (efi_system_table_t *) (boot_params.efi_info.efi_systab | ((__u64)boot_params.efi_info.efi_systab_hi<<32)); - efi_native = efi_64bit; #endif - if (efi_systab_init(efi_phys.systab)) { - efi_enabled = 0; + if (efi_systab_init(efi_phys.systab)) return; - } + + set_bit(EFI_SYSTEM_TABLES, &x86_efi_facility); /* * Show what we know for posterity @@ -699,29 +721,31 @@ efi.systab->hdr.revision >> 16, efi.systab->hdr.revision & 0xffff, vendor); - if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) { - efi_enabled = 0; + if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) return; - } + + set_bit(EFI_CONFIG_TABLES, &x86_efi_facility); /* * Note: We currently don't support runtime services on an EFI * that doesn't match the kernel 32/64-bit mode. */ - if (!efi_native) + if (!efi_is_native()) pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); - else if (efi_runtime_init()) { - efi_enabled = 0; - return; + else { + if (disable_runtime || efi_runtime_init()) + return; + set_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); } - if (efi_memmap_init()) { - efi_enabled = 0; + if (efi_memmap_init()) return; - } + + set_bit(EFI_MEMMAP, &x86_efi_facility); + #ifdef CONFIG_X86_32 - if (efi_native) { + if (efi_is_native()) { x86_platform.get_wallclock = efi_get_time; x86_platform.set_wallclock = efi_set_rtc_mmss; } @@ -787,8 +811,10 @@ * non-native EFI */ - if (!efi_native) - goto out; + if (!efi_is_native()) { + efi_unmap_memmap(); + return; + } /* Merge contiguous regions of the same type and attribute */ for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { @@ -878,18 +904,12 @@ } /* - * Thankfully, it does seem that no runtime services other than - * SetVirtualAddressMap() will touch boot services code, so we can - * get rid of it all at this point - */ - efi_free_boot_services(); - - /* * Now that EFI is in virtual mode, update the function * pointers in the runtime service table to the new virtual addresses. * * Call EFI services through wrapper functions. */ + efi.runtime_version = efi_systab.hdr.revision; efi.get_time = virt_efi_get_time; efi.set_time = virt_efi_set_time; efi.get_wakeup_time = virt_efi_get_wakeup_time; @@ -906,9 +926,6 @@ if (__supported_pte_mask & _PAGE_NX) runtime_code_page_mkexec(); -out: - early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); - memmap.map = NULL; kfree(new_memmap); } @@ -920,6 +937,9 @@ efi_memory_desc_t *md; void *p; + if (!efi_enabled(EFI_MEMMAP)) + return 0; + for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { md = p; if ((md->phys_addr <= phys_addr) && --- linux-3.5.0.orig/arch/x86/platform/efi/efi_64.c +++ linux-3.5.0/arch/x86/platform/efi/efi_64.c @@ -38,7 +38,7 @@ #include #include -static pgd_t save_pgd __initdata; +static pgd_t *save_pgd __initdata; static unsigned long efi_flags __initdata; static void __init early_code_mapping_set_exec(int executable) @@ -61,12 +61,20 @@ void __init efi_call_phys_prelog(void) { unsigned long vaddress; + int pgd; + int n_pgds; early_code_mapping_set_exec(1); local_irq_save(efi_flags); - vaddress = (unsigned long)__va(0x0UL); - save_pgd = *pgd_offset_k(0x0UL); - set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress)); + + n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE); + save_pgd = kmalloc(n_pgds * sizeof(pgd_t), GFP_KERNEL); + + for (pgd = 0; pgd < n_pgds; pgd++) { + save_pgd[pgd] = *pgd_offset_k(pgd * PGDIR_SIZE); + vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); + set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); + } __flush_tlb_all(); } @@ -75,7 +83,11 @@ /* * After the lock is released, the original page table is restored. */ - set_pgd(pgd_offset_k(0x0UL), save_pgd); + int pgd; + int n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE); + for (pgd = 0; pgd < n_pgds; pgd++) + set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); + kfree(save_pgd); __flush_tlb_all(); local_irq_restore(efi_flags); early_code_mapping_set_exec(0); --- linux-3.5.0.orig/arch/x86/lib/usercopy_64.c +++ linux-3.5.0/arch/x86/lib/usercopy_64.c @@ -72,10 +72,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-3.5.0.orig/arch/x86/ia32/ia32entry.S +++ linux-3.5.0/arch/x86/ia32/ia32entry.S @@ -204,7 +204,7 @@ testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) jnz ia32_ret_from_sys_call TRACE_IRQS_ON - sti + ENABLE_INTERRUPTS(CLBR_NONE) movl %eax,%esi /* second arg, syscall return value */ cmpl $-MAX_ERRNO,%eax /* is it an error ? */ jbe 1f @@ -214,7 +214,7 @@ call __audit_syscall_exit movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */ movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi - cli + DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF testl %edi,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) jz \exit --- linux-3.5.0.orig/arch/x86/syscalls/syscall_64.tbl +++ linux-3.5.0/arch/x86/syscalls/syscall_64.tbl @@ -60,8 +60,8 @@ 51 common getsockname sys_getsockname 52 common getpeername sys_getpeername 53 common socketpair sys_socketpair -54 common setsockopt sys_setsockopt -55 common getsockopt sys_getsockopt +54 64 setsockopt sys_setsockopt +55 64 getsockopt sys_getsockopt 56 common clone stub_clone 57 common fork stub_fork 58 common vfork stub_vfork @@ -318,7 +318,7 @@ 309 common getcpu sys_getcpu 310 64 process_vm_readv sys_process_vm_readv 311 64 process_vm_writev sys_process_vm_writev -312 64 kcmp sys_kcmp +312 common kcmp sys_kcmp # # x32-specific system call numbers start at 512 to avoid cache impact @@ -353,3 +353,5 @@ 538 x32 sendmmsg compat_sys_sendmmsg 539 x32 process_vm_readv compat_sys_process_vm_readv 540 x32 process_vm_writev compat_sys_process_vm_writev +541 x32 setsockopt compat_sys_setsockopt +542 x32 getsockopt compat_sys_getsockopt --- linux-3.5.0.orig/arch/x86/lguest/boot.c +++ linux-3.5.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-3.5.0.orig/arch/x86/kvm/svm.c +++ linux-3.5.0/arch/x86/kvm/svm.c @@ -4044,6 +4044,11 @@ return false; } +static bool svm_invpcid_supported(void) +{ + return false; +} + static bool svm_has_wbinvd_exit(void) { return true; @@ -4312,6 +4317,7 @@ .cpuid_update = svm_cpuid_update, .rdtscp_supported = svm_rdtscp_supported, + .invpcid_supported = svm_invpcid_supported, .set_supported_cpuid = svm_set_supported_cpuid, --- linux-3.5.0.orig/arch/x86/kvm/i8259.c +++ linux-3.5.0/arch/x86/kvm/i8259.c @@ -305,6 +305,11 @@ addr &= 1; if (addr == 0) { if (val & 0x10) { + u8 edge_irr = s->irr & ~s->elcr; + int i; + bool found; + struct kvm_vcpu *vcpu; + s->init4 = val & 1; s->last_irr = 0; s->irr &= s->elcr; @@ -322,6 +327,18 @@ if (val & 0x08) pr_pic_unimpl( "level sensitive irq not supported"); + + kvm_for_each_vcpu(i, vcpu, s->pics_state->kvm) + if (kvm_apic_accept_pic_intr(vcpu)) { + found = true; + break; + } + + + if (found) + for (irq = 0; irq < PIC_NUM_PINS/2; irq++) + if (edge_irr & (1 << irq)) + pic_clear_isr(s, irq); } else if (val & 0x08) { if (val & 0x04) s->poll = 1; --- linux-3.5.0.orig/arch/x86/kvm/mmu.c +++ linux-3.5.0/arch/x86/kvm/mmu.c @@ -90,7 +90,7 @@ #define PTE_PREFETCH_NUM 8 -#define PT_FIRST_AVAIL_BITS_SHIFT 9 +#define PT_FIRST_AVAIL_BITS_SHIFT 10 #define PT64_SECOND_AVAIL_BITS_SHIFT 52 #define PT64_LEVEL_BITS 9 @@ -1242,7 +1242,8 @@ int young = 0; /* - * Emulate the accessed bit for EPT, by checking if this page has + * In case of absence of EPT Access and Dirty Bits supports, + * emulate the accessed bit for EPT, by checking if this page has * an EPT mapping, and clearing it if it does. On the next access, * a new EPT mapping will be established. * This has some overhead, but not as much as the cost of swapping @@ -1253,11 +1254,12 @@ for (sptep = rmap_get_first(*rmapp, &iter); sptep; sptep = rmap_get_next(&iter)) { - BUG_ON(!(*sptep & PT_PRESENT_MASK)); + BUG_ON(!is_shadow_present_pte(*sptep)); - if (*sptep & PT_ACCESSED_MASK) { + if (*sptep & shadow_accessed_mask) { young = 1; - clear_bit(PT_ACCESSED_SHIFT, (unsigned long *)sptep); + clear_bit((ffs(shadow_accessed_mask) - 1), + (unsigned long *)sptep); } } @@ -1281,9 +1283,9 @@ for (sptep = rmap_get_first(*rmapp, &iter); sptep; sptep = rmap_get_next(&iter)) { - BUG_ON(!(*sptep & PT_PRESENT_MASK)); + BUG_ON(!is_shadow_present_pte(*sptep)); - if (*sptep & PT_ACCESSED_MASK) { + if (*sptep & shadow_accessed_mask) { young = 1; break; } --- linux-3.5.0.orig/arch/x86/kvm/cpuid.h +++ linux-3.5.0/arch/x86/kvm/cpuid.h @@ -23,6 +23,9 @@ { struct kvm_cpuid_entry2 *best; + if (!static_cpu_has(X86_FEATURE_XSAVE)) + return 0; + best = kvm_find_cpuid_entry(vcpu, 1, 0); return best && (best->ecx & bit(X86_FEATURE_XSAVE)); } @@ -51,4 +54,12 @@ return best && (best->ecx & bit(X86_FEATURE_OSVW)); } +static inline bool guest_cpuid_has_pcid(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 1, 0); + return best && (best->ecx & bit(X86_FEATURE_PCID)); +} + #endif --- linux-3.5.0.orig/arch/x86/kvm/cpuid.c +++ linux-3.5.0/arch/x86/kvm/cpuid.c @@ -201,6 +201,7 @@ unsigned f_lm = 0; #endif unsigned f_rdtscp = kvm_x86_ops->rdtscp_supported() ? F(RDTSCP) : 0; + unsigned f_invpcid = kvm_x86_ops->invpcid_supported() ? F(INVPCID) : 0; /* cpuid 1.edx */ const u32 kvm_supported_word0_x86_features = @@ -228,7 +229,7 @@ 0 /* DS-CPL, VMX, SMX, EST */ | 0 /* TM2 */ | F(SSSE3) | 0 /* CNXT-ID */ | 0 /* Reserved */ | F(FMA) | F(CX16) | 0 /* xTPR Update, PDCM */ | - 0 /* Reserved, DCA */ | F(XMM4_1) | + F(PCID) | 0 /* Reserved, DCA */ | F(XMM4_1) | F(XMM4_2) | F(X2APIC) | F(MOVBE) | F(POPCNT) | 0 /* Reserved*/ | F(AES) | F(XSAVE) | 0 /* OSXSAVE */ | F(AVX) | F(F16C) | F(RDRAND); @@ -248,7 +249,7 @@ /* cpuid 7.0.ebx */ const u32 kvm_supported_word9_x86_features = F(FSGSBASE) | F(BMI1) | F(HLE) | F(AVX2) | F(SMEP) | - F(BMI2) | F(ERMS) | F(RTM); + F(BMI2) | F(ERMS) | f_invpcid | F(RTM); /* all calls to cpuid_count() should be made on the same cpu */ get_cpu(); --- linux-3.5.0.orig/arch/x86/kvm/x86.c +++ linux-3.5.0/arch/x86/kvm/x86.c @@ -528,6 +528,9 @@ return 1; } + if (!(cr0 & X86_CR0_PG) && kvm_read_cr4_bits(vcpu, X86_CR4_PCIDE)) + return 1; + kvm_x86_ops->set_cr0(vcpu, cr0); if ((cr0 ^ old_cr0) & X86_CR0_PG) { @@ -555,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)) @@ -570,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; } @@ -604,10 +606,20 @@ kvm_read_cr3(vcpu))) return 1; + if ((cr4 & X86_CR4_PCIDE) && !(old_cr4 & X86_CR4_PCIDE)) { + if (!guest_cpuid_has_pcid(vcpu)) + return 1; + + /* PCID can not be enabled when cr3[11:0]!=000H or EFER.LMA=0 */ + if ((kvm_read_cr3(vcpu) & X86_CR3_PCID_MASK) || !is_long_mode(vcpu)) + return 1; + } + if (kvm_x86_ops->set_cr4(vcpu, cr4)) return 1; - if ((cr4 ^ old_cr4) & pdptr_bits) + if (((cr4 ^ old_cr4) & pdptr_bits) || + (!(cr4 & X86_CR4_PCIDE) && (old_cr4 & X86_CR4_PCIDE))) kvm_mmu_reset_context(vcpu); if ((cr4 ^ old_cr4) & X86_CR4_OSXSAVE) @@ -626,8 +638,12 @@ } if (is_long_mode(vcpu)) { - if (cr3 & CR3_L_MODE_RESERVED_BITS) - return 1; + if (kvm_read_cr4(vcpu) & X86_CR4_PCIDE) { + if (cr3 & CR3_PCID_ENABLED_RESERVED_BITS) + return 1; + } else + if (cr3 & CR3_L_MODE_RESERVED_BITS) + return 1; } else { if (is_pae(vcpu)) { if (cr3 & CR3_PAE_RESERVED_BITS) @@ -907,6 +923,10 @@ */ getboottime(&boot); + if (kvm->arch.kvmclock_offset) { + struct timespec ts = ns_to_timespec(kvm->arch.kvmclock_offset); + boot = timespec_sub(boot, ts); + } wc.sec = boot.tv_sec; wc.nsec = boot.tv_nsec; wc.version = version; @@ -1114,7 +1134,6 @@ { unsigned long flags; struct kvm_vcpu_arch *vcpu = &v->arch; - void *shared_kaddr; unsigned long this_tsc_khz; s64 kernel_ns, max_kernel_ns; u64 tsc_timestamp; @@ -1150,7 +1169,7 @@ local_irq_restore(flags); - if (!vcpu->time_page) + if (!vcpu->pv_time_enabled) return 0; /* @@ -1208,14 +1227,9 @@ */ vcpu->hv_clock.version += 2; - shared_kaddr = kmap_atomic(vcpu->time_page); - - 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; } @@ -1494,7 +1508,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); @@ -1504,10 +1519,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) @@ -1602,6 +1614,7 @@ break; case MSR_KVM_SYSTEM_TIME_NEW: case MSR_KVM_SYSTEM_TIME: { + u64 gpa_offset; kvmclock_reset(vcpu); vcpu->arch.time = data; @@ -1611,16 +1624,15 @@ if (!(data & 1)) break; - /* ...but clean it before doing the actual write */ - vcpu->arch.time_offset = data & ~(PAGE_MASK | 1); + gpa_offset = data & ~(PAGE_MASK | 1); - vcpu->arch.time_page = - gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT); + 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; - if (is_error_page(vcpu->arch.time_page)) { - kvm_release_page_clean(vcpu->arch.time_page); - vcpu->arch.time_page = NULL; - } break; } case MSR_KVM_ASYNC_PF_EN: @@ -1636,7 +1648,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; @@ -2607,7 +2620,7 @@ static int kvm_set_guest_paused(struct kvm_vcpu *vcpu) { struct pvclock_vcpu_time_info *src = &vcpu->arch.hv_clock; - if (!vcpu->arch.time_page) + if (!vcpu->arch.pv_time_enabled) return -EINVAL; src->flags |= PVCLOCK_GUEST_STOPPED; mark_page_dirty(vcpu->kvm, vcpu->arch.time >> PAGE_SHIFT); @@ -5737,6 +5750,9 @@ int pending_vec, max_bits, idx; struct desc_ptr dt; + if (!guest_cpuid_has_xsave(vcpu) && (sregs->cr4 & X86_CR4_OSXSAVE)) + return -EINVAL; + dt.size = sregs->idt.limit; dt.address = sregs->idt.base; kvm_x86_ops->set_idt(vcpu, &dt); @@ -6204,6 +6220,7 @@ if (!zalloc_cpumask_var(&vcpu->arch.wbinvd_dirty_mask, GFP_KERNEL)) goto fail_free_mce_banks; + vcpu->arch.pv_time_enabled = false; kvm_async_pf_hash_reset(vcpu); kvm_pmu_init(vcpu); --- linux-3.5.0.orig/arch/x86/kvm/vmx.c +++ linux-3.5.0/arch/x86/kvm/vmx.c @@ -71,6 +71,9 @@ module_param_named(unrestricted_guest, enable_unrestricted_guest, bool, S_IRUGO); +static bool __read_mostly enable_ept_ad_bits = 1; +module_param_named(eptad, enable_ept_ad_bits, bool, S_IRUGO); + static bool __read_mostly emulate_invalid_guest_state = 0; module_param(emulate_invalid_guest_state, bool, S_IRUGO); @@ -789,6 +792,11 @@ return vmx_capability.ept & VMX_EPT_PAGE_WALK_4_BIT; } +static inline bool cpu_has_vmx_ept_ad_bits(void) +{ + return vmx_capability.ept & VMX_EPT_AD_BIT; +} + static inline bool cpu_has_vmx_invept_individual_addr(void) { return vmx_capability.ept & VMX_EPT_EXTENT_INDIVIDUAL_BIT; @@ -849,6 +857,12 @@ SECONDARY_EXEC_RDTSCP; } +static inline bool cpu_has_vmx_invpcid(void) +{ + return vmcs_config.cpu_based_2nd_exec_ctrl & + SECONDARY_EXEC_ENABLE_INVPCID; +} + static inline bool cpu_has_virtual_nmis(void) { return vmcs_config.pin_based_exec_ctrl & PIN_BASED_VIRTUAL_NMIS; @@ -1470,13 +1484,6 @@ loadsegment(ds, vmx->host_state.ds_sel); loadsegment(es, vmx->host_state.es_sel); } -#else - /* - * The sysexit path does not restore ds/es, so we must set them to - * a reasonable value ourselves. - */ - loadsegment(ds, __USER_DS); - loadsegment(es, __USER_DS); #endif reload_tss(); #ifdef CONFIG_X86_64 @@ -1739,6 +1746,11 @@ return cpu_has_vmx_rdtscp(); } +static bool vmx_invpcid_supported(void) +{ + return cpu_has_vmx_invpcid() && enable_ept; +} + /* * Swap MSR entry in host/guest MSR entry array. */ @@ -2458,7 +2470,8 @@ SECONDARY_EXEC_ENABLE_EPT | SECONDARY_EXEC_UNRESTRICTED_GUEST | SECONDARY_EXEC_PAUSE_LOOP_EXITING | - SECONDARY_EXEC_RDTSCP; + SECONDARY_EXEC_RDTSCP | + SECONDARY_EXEC_ENABLE_INVPCID; if (adjust_vmx_controls(min2, opt2, MSR_IA32_VMX_PROCBASED_CTLS2, &_cpu_based_2nd_exec_control) < 0) @@ -2645,8 +2658,12 @@ !cpu_has_vmx_ept_4levels()) { enable_ept = 0; enable_unrestricted_guest = 0; + enable_ept_ad_bits = 0; } + if (!cpu_has_vmx_ept_ad_bits()) + enable_ept_ad_bits = 0; + if (!cpu_has_vmx_unrestricted_guest()) enable_unrestricted_guest = 0; @@ -3027,6 +3044,8 @@ /* TODO write the value reading from MSR */ eptp = VMX_EPT_DEFAULT_MT | VMX_EPT_DEFAULT_GAW << VMX_EPT_GAW_EPTP_SHIFT; + if (enable_ept_ad_bits) + eptp |= VMX_EPT_AD_ENABLE_BIT; eptp |= (root_hpa & PAGE_MASK); return eptp; @@ -3731,6 +3750,8 @@ if (!enable_ept) { exec_control &= ~SECONDARY_EXEC_ENABLE_EPT; enable_unrestricted_guest = 0; + /* Enable INVPCID for non-ept guests may cause performance regression. */ + exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID; } if (!enable_unrestricted_guest) exec_control &= ~SECONDARY_EXEC_UNRESTRICTED_GUEST; @@ -4927,6 +4948,12 @@ if (err != EMULATE_DONE) 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()) @@ -6273,6 +6300,19 @@ #endif ); +#ifndef CONFIG_X86_64 + /* + * The sysexit path does not restore ds/es, so we must set them to + * a reasonable value ourselves. + * + * We can't defer this to vmx_load_host_state() since that function + * may be executed in interrupt context, which saves and restore segments + * around it, nullifying its effect. + */ + loadsegment(ds, __USER_DS); + loadsegment(es, __USER_DS); +#endif + vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | (1 << VCPU_EXREG_RFLAGS) | (1 << VCPU_EXREG_CPL) @@ -6467,6 +6507,23 @@ } } } + + exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL); + /* Exposing INVPCID only when PCID is exposed */ + best = kvm_find_cpuid_entry(vcpu, 0x7, 0); + if (vmx_invpcid_supported() && + best && (best->ecx & bit(X86_FEATURE_INVPCID)) && + guest_cpuid_has_pcid(vcpu)) { + exec_control |= SECONDARY_EXEC_ENABLE_INVPCID; + vmcs_write32(SECONDARY_VM_EXEC_CONTROL, + exec_control); + } else { + exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID; + vmcs_write32(SECONDARY_VM_EXEC_CONTROL, + exec_control); + if (best) + best->ecx &= ~bit(X86_FEATURE_INVPCID); + } } static void vmx_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry) @@ -7201,6 +7258,7 @@ .cpuid_update = vmx_cpuid_update, .rdtscp_supported = vmx_rdtscp_supported, + .invpcid_supported = vmx_invpcid_supported, .set_supported_cpuid = vmx_set_supported_cpuid, @@ -7275,8 +7333,10 @@ vmx_disable_intercept_for_msr(MSR_IA32_SYSENTER_EIP, false); if (enable_ept) { - kvm_mmu_set_mask_ptes(0ull, 0ull, 0ull, 0ull, - VMX_EPT_EXECUTABLE_MASK); + kvm_mmu_set_mask_ptes(0ull, + (enable_ept_ad_bits) ? VMX_EPT_ACCESS_BIT : 0ull, + (enable_ept_ad_bits) ? VMX_EPT_DIRTY_BIT : 0ull, + 0ull, VMX_EPT_EXECUTABLE_MASK); ept_set_mmio_spte_mask(); kvm_enable_tdp(); } else --- linux-3.5.0.orig/arch/x86/kvm/emulate.c +++ linux-3.5.0/arch/x86/kvm/emulate.c @@ -4426,12 +4426,12 @@ break; case 0xb6 ... 0xb7: /* movzx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (u8) ctxt->src.val + ctxt->dst.val = (ctxt->src.bytes == 1) ? (u8) ctxt->src.val : (u16) ctxt->src.val; break; case 0xbe ... 0xbf: /* movsx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (s8) ctxt->src.val : + ctxt->dst.val = (ctxt->src.bytes == 1) ? (s8) ctxt->src.val : (s16) ctxt->src.val; break; case 0xc0 ... 0xc1: /* xadd */ --- linux-3.5.0.orig/arch/x86/boot/header.S +++ linux-3.5.0/arch/x86/boot/header.S @@ -283,7 +283,7 @@ # Part 2 of the header, from the old setup.S .ascii "HdrS" # header signature - .word 0x020a # header version number (>= 0x0105) + .word 0x020b # header version number (>= 0x0105) # or else old loadlin-1.5 will fail) .globl realmode_swtch realmode_swtch: .word 0, 0 # default_switch, SETUPSEG @@ -401,6 +401,8 @@ #define INIT_SIZE VO_INIT_SIZE #endif init_size: .long INIT_SIZE # kernel initialization size +handover_offset: .long 0x30 # offset to the handover + # protocol entry point # End of setup header ##################################################### --- linux-3.5.0.orig/arch/x86/boot/video.h +++ linux-3.5.0/arch/x86/boot/video.h @@ -80,7 +80,7 @@ u16 xmode_n; /* Size of unprobed mode range */ }; -#define __videocard struct card_info __attribute__((section(".videocards"))) +#define __videocard struct card_info __attribute__((used,section(".videocards"))) extern struct card_info video_cards[], video_cards_end[]; int mode_defined(u16 mode); /* video.c */ --- linux-3.5.0.orig/arch/x86/boot/compressed/head_64.S +++ linux-3.5.0/arch/x86/boot/compressed/head_64.S @@ -209,6 +209,16 @@ .org 0x210 mov %rcx, %rdi mov %rdx, %rsi + pushq %rdi + pushq %rsi + call make_boot_params + cmpq $0,%rax + je 1f + mov %rax, %rdx + popq %rsi + popq %rdi + + .org 0x230,0x90 call efi_main movq %rax,%rsi cmpq $0,%rax --- linux-3.5.0.orig/arch/x86/boot/compressed/Makefile +++ linux-3.5.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 @@ -28,6 +28,8 @@ $(obj)/string.o $(obj)/cmdline.o $(obj)/early_serial_console.o \ $(obj)/piggy.o +$(obj)/eboot.o: KBUILD_CFLAGS += -fshort-wchar -mno-red-zone + ifeq ($(CONFIG_EFI_STUB), y) VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o endif @@ -40,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-3.5.0.orig/arch/x86/boot/compressed/head_32.S +++ linux-3.5.0/arch/x86/boot/compressed/head_32.S @@ -42,6 +42,16 @@ */ add $0x4, %esp + call make_boot_params + cmpl $0, %eax + je 1f + movl 0x4(%esp), %esi + movl (%esp), %ecx + pushl %eax + pushl %esi + pushl %ecx + + .org 0x30,0x90 call efi_main cmpl $0, %eax movl %eax, %esi --- linux-3.5.0.orig/arch/x86/boot/compressed/eboot.c +++ linux-3.5.0/arch/x86/boot/compressed/eboot.c @@ -12,6 +12,8 @@ #include #include +#undef memcpy /* Use memcpy from misc.c */ + #include "eboot.h" static efi_system_table_t *sys_table; @@ -729,32 +731,68 @@ * need to create one ourselves (usually the bootloader would create * one for us). */ -static efi_status_t make_boot_params(struct boot_params *boot_params, - efi_loaded_image_t *image, - void *handle) +struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table) { - struct efi_info *efi = &boot_params->efi_info; - struct apm_bios_info *bi = &boot_params->apm_bios_info; - struct sys_desc_table *sdt = &boot_params->sys_desc_table; - struct e820entry *e820_map = &boot_params->e820_map[0]; - struct e820entry *prev = NULL; - struct setup_header *hdr = &boot_params->hdr; - unsigned long size, key, desc_size, _size; - efi_memory_desc_t *mem_map; - void *options = image->load_options; - u32 load_options_size = image->load_options_size / 2; /* ASCII */ + struct boot_params *boot_params; + struct sys_desc_table *sdt; + struct apm_bios_info *bi; + struct setup_header *hdr; + struct efi_info *efi; + efi_loaded_image_t *image; + void *options; + u32 load_options_size; + efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID; int options_size = 0; efi_status_t status; - __u32 desc_version; unsigned long cmdline; - u8 nr_entries; u16 *s2; u8 *s1; int i; + sys_table = _table; + + /* Check if we were booted by the EFI firmware */ + if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) + return NULL; + + status = efi_call_phys3(sys_table->boottime->handle_protocol, + handle, &proto, (void *)&image); + if (status != EFI_SUCCESS) { + efi_printk("Failed to get handle for LOADED_IMAGE_PROTOCOL\n"); + return NULL; + } + + status = low_alloc(0x4000, 1, (unsigned long *)&boot_params); + if (status != EFI_SUCCESS) { + efi_printk("Failed to alloc lowmem for boot params\n"); + return NULL; + } + + memset(boot_params, 0x0, 0x4000); + + hdr = &boot_params->hdr; + efi = &boot_params->efi_info; + bi = &boot_params->apm_bios_info; + sdt = &boot_params->sys_desc_table; + + /* Copy the second sector to boot_params */ + memcpy(&hdr->jump, image->image_base + 512, 512); + + /* + * Fill out some of the header fields ourselves because the + * EFI firmware loader doesn't load the first sector. + */ + hdr->root_flags = 1; + hdr->vid_mode = 0xffff; + hdr->boot_flag = 0xAA55; + + hdr->code32_start = (__u64)(unsigned long)image->image_base; + hdr->type_of_loader = 0x21; /* Convert unicode cmdline to ascii */ + options = image->load_options; + load_options_size = image->load_options_size / 2; /* ASCII */ cmdline = 0; s2 = (u16 *)options; @@ -791,18 +829,36 @@ hdr->ramdisk_image = 0; hdr->ramdisk_size = 0; - status = handle_ramdisks(image, hdr); - if (status != EFI_SUCCESS) - goto free_cmdline; - - setup_graphics(boot_params); - /* Clear APM BIOS info */ memset(bi, 0, sizeof(*bi)); memset(sdt, 0, sizeof(*sdt)); - memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32)); + status = handle_ramdisks(image, hdr); + if (status != EFI_SUCCESS) + goto fail2; + + return boot_params; +fail2: + if (options_size) + low_free(options_size, hdr->cmd_line_ptr); +fail: + low_free(0x4000, (unsigned long)boot_params); + return NULL; +} + +static efi_status_t exit_boot(struct boot_params *boot_params, + void *handle) +{ + struct efi_info *efi = &boot_params->efi_info; + struct e820entry *e820_map = &boot_params->e820_map[0]; + struct e820entry *prev = NULL; + unsigned long size, key, desc_size, _size; + efi_memory_desc_t *mem_map; + efi_status_t status; + __u32 desc_version; + u8 nr_entries; + int i; size = sizeof(*mem_map) * 32; @@ -811,7 +867,7 @@ _size = size; status = low_alloc(size, 1, (unsigned long *)&mem_map); if (status != EFI_SUCCESS) - goto free_cmdline; + return status; status = efi_call_phys5(sys_table->boottime->get_memory_map, &size, mem_map, &key, &desc_size, &desc_version); @@ -823,6 +879,7 @@ if (status != EFI_SUCCESS) goto free_mem_map; + memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32)); efi->efi_systab = (unsigned long)sys_table; efi->efi_memdesc_size = desc_size; efi->efi_memdesc_version = desc_version; @@ -906,61 +963,13 @@ free_mem_map: low_free(_size, (unsigned long)mem_map); -free_cmdline: - if (options_size) - low_free(options_size, hdr->cmd_line_ptr); -fail: return status; } -/* - * On success we return a pointer to a boot_params structure, and NULL - * on failure. - */ -struct boot_params *efi_main(void *handle, efi_system_table_t *_table) +static efi_status_t relocate_kernel(struct setup_header *hdr) { - struct boot_params *boot_params; unsigned long start, nr_pages; - struct desc_ptr *gdt, *idt; - efi_loaded_image_t *image; - struct setup_header *hdr; efi_status_t status; - efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID; - struct desc_struct *desc; - - sys_table = _table; - - /* Check if we were booted by the EFI firmware */ - if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) - goto fail; - - status = efi_call_phys3(sys_table->boottime->handle_protocol, - handle, &proto, (void *)&image); - if (status != EFI_SUCCESS) { - efi_printk("Failed to get handle for LOADED_IMAGE_PROTOCOL\n"); - goto fail; - } - - status = low_alloc(0x4000, 1, (unsigned long *)&boot_params); - if (status != EFI_SUCCESS) { - efi_printk("Failed to alloc lowmem for boot params\n"); - goto fail; - } - - memset(boot_params, 0x0, 0x4000); - - hdr = &boot_params->hdr; - - /* Copy the second sector to boot_params */ - memcpy(&hdr->jump, image->image_base + 512, 512); - - /* - * Fill out some of the header fields ourselves because the - * EFI firmware loader doesn't load the first sector. - */ - hdr->root_flags = 1; - hdr->vid_mode = 0xffff; - hdr->boot_flag = 0xAA55; /* * The EFI firmware loader could have placed the kernel image @@ -978,16 +987,40 @@ if (status != EFI_SUCCESS) { status = low_alloc(hdr->init_size, hdr->kernel_alignment, &start); - if (status != EFI_SUCCESS) { + if (status != EFI_SUCCESS) efi_printk("Failed to alloc mem for kernel\n"); - goto fail; - } } + if (status == EFI_SUCCESS) + memcpy((void *)start, (void *)(unsigned long)hdr->code32_start, + hdr->init_size); + + hdr->pref_address = hdr->code32_start; hdr->code32_start = (__u32)start; - hdr->pref_address = (__u64)(unsigned long)image->image_base; - memcpy((void *)start, image->image_base, image->image_size); + return status; +} + +/* + * On success we return a pointer to a boot_params structure, and NULL + * on failure. + */ +struct boot_params *efi_main(void *handle, efi_system_table_t *_table, + struct boot_params *boot_params) +{ + struct desc_ptr *gdt, *idt; + efi_loaded_image_t *image; + struct setup_header *hdr = &boot_params->hdr; + efi_status_t status; + struct desc_struct *desc; + + sys_table = _table; + + /* Check if we were booted by the EFI firmware */ + if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) + goto fail; + + setup_graphics(boot_params); status = efi_call_phys3(sys_table->boottime->allocate_pool, EFI_LOADER_DATA, sizeof(*gdt), @@ -1015,7 +1048,18 @@ idt->size = 0; idt->address = 0; - status = make_boot_params(boot_params, image, handle); + /* + * If the kernel isn't already loaded at the preferred load + * address, relocate it. + */ + if (hdr->pref_address != hdr->code32_start) { + status = relocate_kernel(hdr); + + if (status != EFI_SUCCESS) + goto fail; + } + + status = exit_boot(boot_params, handle); if (status != EFI_SUCCESS) goto fail; --- linux-3.5.0.orig/arch/x86/oprofile/nmi_int.c +++ linux-3.5.0/arch/x86/oprofile/nmi_int.c @@ -55,7 +55,7 @@ val |= counter_config->extra; event &= model->event_mask ? model->event_mask : 0xFF; val |= event & 0xFF; - val |= (event & 0x0F00) << 24; + val |= (u64)(event & 0x0F00) << 24; return val; } --- linux-3.5.0.orig/arch/x86/power/hibernate_32.c +++ linux-3.5.0/arch/x86/power/hibernate_32.c @@ -129,8 +129,6 @@ } } - resume_map_numa_kva(pgd_base); - return 0; } --- linux-3.5.0.orig/arch/x86/power/cpu.c +++ linux-3.5.0/arch/x86/power/cpu.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -227,6 +228,7 @@ do_fpu_end(); x86_platform.restore_sched_clock_state(); mtrr_bp_restore(); + perf_restore_debug_store(); } /* Needed by apm.c */ --- linux-3.5.0.orig/arch/x86/pci/common.c +++ linux-3.5.0/arch/x86/pci/common.c @@ -433,7 +433,8 @@ .callback = set_scan_all, .ident = "Stratus/NEC ftServer", .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ftServer"), + DMI_MATCH(DMI_SYS_VENDOR, "Stratus"), + DMI_MATCH(DMI_PRODUCT_NAME, "ftServer"), }, }, {} --- linux-3.5.0.orig/arch/x86/pci/xen.c +++ linux-3.5.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-3.5.0.orig/arch/x86/mm/hugetlbpage.c +++ linux-3.5.0/arch/x86/mm/hugetlbpage.c @@ -56,9 +56,16 @@ } /* - * search for a shareable pmd page for hugetlb. + * Search for a shareable pmd page for hugetlb. In any case calls pmd_alloc() + * and returns the corresponding pte. While this is not necessary for the + * !shared pmd case because we can allocate the pmd later as well, it makes the + * code much cleaner. pmd allocation is essential for the shared case because + * pud has to be populated inside the same i_mmap_mutex section - otherwise + * racing tasks could either miss the sharing (see huge_pte_offset) or select a + * bad pmd for sharing. */ -static void huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud) +static pte_t * +huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud) { struct vm_area_struct *vma = find_vma(mm, addr); struct address_space *mapping = vma->vm_file->f_mapping; @@ -68,9 +75,10 @@ struct vm_area_struct *svma; unsigned long saddr; pte_t *spte = NULL; + pte_t *pte; if (!vma_shareable(vma, addr)) - return; + return (pte_t *)pmd_alloc(mm, pud, addr); mutex_lock(&mapping->i_mmap_mutex); vma_prio_tree_foreach(svma, &iter, &mapping->i_mmap, idx, idx) { @@ -97,7 +105,9 @@ put_page(virt_to_page(spte)); spin_unlock(&mm->page_table_lock); out: + pte = (pte_t *)pmd_alloc(mm, pud, addr); mutex_unlock(&mapping->i_mmap_mutex); + return pte; } /* @@ -142,8 +152,9 @@ } else { BUG_ON(sz != PMD_SIZE); if (pud_none(*pud)) - huge_pmd_share(mm, addr, pud); - pte = (pte_t *) pmd_alloc(mm, pud, addr); + pte = huge_pmd_share(mm, addr, pud); + else + pte = (pte_t *)pmd_alloc(mm, pud, addr); } } BUG_ON(pte && !pte_none(*pte) && !pte_huge(*pte)); --- linux-3.5.0.orig/arch/x86/mm/numa_32.c +++ linux-3.5.0/arch/x86/mm/numa_32.c @@ -73,167 +73,6 @@ extern unsigned long highend_pfn, highstart_pfn; -#define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE) - -static void *node_remap_start_vaddr[MAX_NUMNODES]; -void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags); - -/* - * Remap memory allocator - */ -static unsigned long node_remap_start_pfn[MAX_NUMNODES]; -static void *node_remap_end_vaddr[MAX_NUMNODES]; -static void *node_remap_alloc_vaddr[MAX_NUMNODES]; - -/** - * alloc_remap - Allocate remapped memory - * @nid: NUMA node to allocate memory from - * @size: The size of allocation - * - * Allocate @size bytes from the remap area of NUMA node @nid. The - * size of the remap area is predetermined by init_alloc_remap() and - * only the callers considered there should call this function. For - * more info, please read the comment on top of init_alloc_remap(). - * - * The caller must be ready to handle allocation failure from this - * function and fall back to regular memory allocator in such cases. - * - * CONTEXT: - * Single CPU early boot context. - * - * RETURNS: - * Pointer to the allocated memory on success, %NULL on failure. - */ -void *alloc_remap(int nid, unsigned long size) -{ - void *allocation = node_remap_alloc_vaddr[nid]; - - size = ALIGN(size, L1_CACHE_BYTES); - - if (!allocation || (allocation + size) > node_remap_end_vaddr[nid]) - return NULL; - - node_remap_alloc_vaddr[nid] += size; - memset(allocation, 0, size); - - return allocation; -} - -#ifdef CONFIG_HIBERNATION -/** - * resume_map_numa_kva - add KVA mapping to the temporary page tables created - * during resume from hibernation - * @pgd_base - temporary resume page directory - */ -void resume_map_numa_kva(pgd_t *pgd_base) -{ - int node; - - for_each_online_node(node) { - unsigned long start_va, start_pfn, nr_pages, pfn; - - start_va = (unsigned long)node_remap_start_vaddr[node]; - start_pfn = node_remap_start_pfn[node]; - nr_pages = (node_remap_end_vaddr[node] - - node_remap_start_vaddr[node]) >> PAGE_SHIFT; - - printk(KERN_DEBUG "%s: node %d\n", __func__, node); - - for (pfn = 0; pfn < nr_pages; pfn += PTRS_PER_PTE) { - unsigned long vaddr = start_va + (pfn << PAGE_SHIFT); - pgd_t *pgd = pgd_base + pgd_index(vaddr); - pud_t *pud = pud_offset(pgd, vaddr); - pmd_t *pmd = pmd_offset(pud, vaddr); - - set_pmd(pmd, pfn_pmd(start_pfn + pfn, - PAGE_KERNEL_LARGE_EXEC)); - - printk(KERN_DEBUG "%s: %08lx -> pfn %08lx\n", - __func__, vaddr, start_pfn + pfn); - } - } -} -#endif - -/** - * init_alloc_remap - Initialize remap allocator for a NUMA node - * @nid: NUMA node to initizlie remap allocator for - * - * NUMA nodes may end up without any lowmem. As allocating pgdat and - * memmap on a different node with lowmem is inefficient, a special - * remap allocator is implemented which can be used by alloc_remap(). - * - * For each node, the amount of memory which will be necessary for - * pgdat and memmap is calculated and two memory areas of the size are - * allocated - one in the node and the other in lowmem; then, the area - * in the node is remapped to the lowmem area. - * - * As pgdat and memmap must be allocated in lowmem anyway, this - * doesn't waste lowmem address space; however, the actual lowmem - * which gets remapped over is wasted. The amount shouldn't be - * problematic on machines this feature will be used. - * - * Initialization failure isn't fatal. alloc_remap() is used - * opportunistically and the callers will fall back to other memory - * allocation mechanisms on failure. - */ -void __init init_alloc_remap(int nid, u64 start, u64 end) -{ - unsigned long start_pfn = start >> PAGE_SHIFT; - unsigned long end_pfn = end >> PAGE_SHIFT; - unsigned long size, pfn; - u64 node_pa, remap_pa; - void *remap_va; - - /* - * The acpi/srat node info can show hot-add memroy zones where - * memory could be added but not currently present. - */ - printk(KERN_DEBUG "node %d pfn: [%lx - %lx]\n", - nid, start_pfn, end_pfn); - - /* calculate the necessary space aligned to large page size */ - size = node_memmap_size_bytes(nid, start_pfn, end_pfn); - size += ALIGN(sizeof(pg_data_t), PAGE_SIZE); - size = ALIGN(size, LARGE_PAGE_BYTES); - - /* allocate node memory and the lowmem remap area */ - node_pa = memblock_find_in_range(start, end, size, LARGE_PAGE_BYTES); - if (!node_pa) { - pr_warning("remap_alloc: failed to allocate %lu bytes for node %d\n", - size, nid); - return; - } - memblock_reserve(node_pa, size); - - remap_pa = memblock_find_in_range(min_low_pfn << PAGE_SHIFT, - max_low_pfn << PAGE_SHIFT, - size, LARGE_PAGE_BYTES); - if (!remap_pa) { - pr_warning("remap_alloc: failed to allocate %lu bytes remap area for node %d\n", - size, nid); - memblock_free(node_pa, size); - return; - } - memblock_reserve(remap_pa, size); - remap_va = phys_to_virt(remap_pa); - - /* perform actual remap */ - for (pfn = 0; pfn < size >> PAGE_SHIFT; pfn += PTRS_PER_PTE) - set_pmd_pfn((unsigned long)remap_va + (pfn << PAGE_SHIFT), - (node_pa >> PAGE_SHIFT) + pfn, - PAGE_KERNEL_LARGE); - - /* initialize remap allocator parameters */ - node_remap_start_pfn[nid] = node_pa >> PAGE_SHIFT; - node_remap_start_vaddr[nid] = remap_va; - node_remap_end_vaddr[nid] = remap_va + size; - node_remap_alloc_vaddr[nid] = remap_va; - - printk(KERN_DEBUG "remap_alloc: node %d [%08llx-%08llx) -> [%p-%p)\n", - nid, node_pa, node_pa + size, remap_va, remap_va + size); -} - void __init initmem_init(void) { x86_numa_init(); --- linux-3.5.0.orig/arch/x86/mm/numa.c +++ linux-3.5.0/arch/x86/mm/numa.c @@ -193,7 +193,6 @@ static void __init setup_node_data(int nid, u64 start, u64 end) { const size_t nd_size = roundup(sizeof(pg_data_t), PAGE_SIZE); - bool remapped = false; u64 nd_pa; void *nd; int tnid; @@ -205,37 +204,28 @@ if (end && (end - start) < NODE_MIN_SIZE) return; - /* initialize remap allocator before aligning to ZONE_ALIGN */ - init_alloc_remap(nid, start, end); - start = roundup(start, ZONE_ALIGN); printk(KERN_INFO "Initmem setup node %d [mem %#010Lx-%#010Lx]\n", nid, start, end - 1); /* - * Allocate node data. Try remap allocator first, node-local - * memory and then any node. Never allocate in DMA zone. + * Allocate node data. Try node-local memory and then any node. + * Never allocate in DMA zone. */ - nd = alloc_remap(nid, nd_size); - if (nd) { - nd_pa = __pa(nd); - remapped = true; - } else { - nd_pa = memblock_alloc_nid(nd_size, SMP_CACHE_BYTES, nid); - if (!nd_pa) { - pr_err("Cannot find %zu bytes in node %d\n", - nd_size, nid); - return; - } - nd = __va(nd_pa); + nd_pa = memblock_alloc_nid(nd_size, SMP_CACHE_BYTES, nid); + if (!nd_pa) { + pr_err("Cannot find %zu bytes in node %d\n", + nd_size, nid); + return; } + nd = __va(nd_pa); /* report and initialize */ - printk(KERN_INFO " NODE_DATA [mem %#010Lx-%#010Lx]%s\n", - nd_pa, nd_pa + nd_size - 1, remapped ? " (remapped)" : ""); + printk(KERN_INFO " NODE_DATA [mem %#010Lx-%#010Lx]\n", + nd_pa, nd_pa + nd_size - 1); tnid = early_pfn_to_nid(nd_pa >> PAGE_SHIFT); - if (!remapped && tnid != nid) + if (tnid != nid) printk(KERN_INFO " NODE_DATA(%d) on node %d\n", nid, tnid); node_data[nid] = nd; --- linux-3.5.0.orig/arch/x86/mm/init.c +++ linux-3.5.0/arch/x86/mm/init.c @@ -35,41 +35,50 @@ unsigned page_size_mask; }; -static void __init find_early_table_space(struct map_range *mr, unsigned long end, - int use_pse, int use_gbpages) +/* + * First calculate space needed for kernel direct mapping page tables to cover + * mr[0].start to mr[nr_range - 1].end, while accounting for possible 2M and 1GB + * pages. Then find enough contiguous space for those page tables. + */ +static void __init find_early_table_space(struct map_range *mr, int nr_range) { - unsigned long puds, pmds, ptes, tables, start = 0, good_end = end; + int i; + unsigned long puds = 0, pmds = 0, ptes = 0, tables; + unsigned long start = 0, good_end; + unsigned long pgd_extra = 0; phys_addr_t base; - puds = (end + PUD_SIZE - 1) >> PUD_SHIFT; - tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); - - if (use_gbpages) { - unsigned long extra; + for (i = 0; i < nr_range; i++) { + unsigned long range, extra; - extra = end - ((end>>PUD_SHIFT) << PUD_SHIFT); - pmds = (extra + PMD_SIZE - 1) >> PMD_SHIFT; - } else - pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT; + if ((mr[i].end >> PGDIR_SHIFT) - (mr[i].start >> PGDIR_SHIFT)) + pgd_extra++; - tables += roundup(pmds * sizeof(pmd_t), PAGE_SIZE); + range = mr[i].end - mr[i].start; + puds += (range + PUD_SIZE - 1) >> PUD_SHIFT; - if (use_pse) { - unsigned long extra; + if (mr[i].page_size_mask & (1 << PG_LEVEL_1G)) { + extra = range - ((range >> PUD_SHIFT) << PUD_SHIFT); + pmds += (extra + PMD_SIZE - 1) >> PMD_SHIFT; + } else { + pmds += (range + PMD_SIZE - 1) >> PMD_SHIFT; + } - extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT); + if (mr[i].page_size_mask & (1 << PG_LEVEL_2M)) { + extra = range - ((range >> PMD_SHIFT) << PMD_SHIFT); #ifdef CONFIG_X86_32 - extra += PMD_SIZE; + extra += PMD_SIZE; #endif - /* The first 2/4M doesn't use large pages. */ - if (mr->start < PMD_SIZE) - extra += mr->end - mr->start; - - ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; - } else - ptes = (end + PAGE_SIZE - 1) >> PAGE_SHIFT; + ptes += (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; + } else { + ptes += (range + PAGE_SIZE - 1) >> PAGE_SHIFT; + } + } + tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); + tables += roundup(pmds * sizeof(pmd_t), PAGE_SIZE); tables += roundup(ptes * sizeof(pte_t), PAGE_SIZE); + tables += (pgd_extra * PAGE_SIZE); #ifdef CONFIG_X86_32 /* for fixmap */ @@ -86,7 +95,7 @@ pgt_buf_top = pgt_buf_start + (tables >> PAGE_SHIFT); printk(KERN_DEBUG "kernel direct mapping tables up to %#lx @ [mem %#010lx-%#010lx]\n", - end - 1, pgt_buf_start << PAGE_SHIFT, + mr[nr_range - 1].end - 1, pgt_buf_start << PAGE_SHIFT, (pgt_buf_top << PAGE_SHIFT) - 1); } @@ -267,7 +276,7 @@ * nodes are discovered. */ if (!after_bootmem) - find_early_table_space(&mr[0], end, use_pse, use_gbpages); + find_early_table_space(mr, nr_range); for (i = 0; i < nr_range; i++) ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, --- linux-3.5.0.orig/arch/x86/mm/fault.c +++ linux-3.5.0/arch/x86/mm/fault.c @@ -377,10 +377,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 @@ -747,13 +749,15 @@ return; } #endif + /* Kernel addresses are always protection faults: */ + if (address >= TASK_SIZE) + error_code |= PF_PROT; - if (unlikely(show_unhandled_signals)) + if (likely(show_unhandled_signals)) show_signal_msg(regs, error_code, address, tsk); - /* Kernel addresses are always protection faults: */ tsk->thread.cr2 = address; - tsk->thread.error_code = error_code | (address >= TASK_SIZE); + tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_PF; force_sig_info_fault(SIGSEGV, si_code, address, tsk, 0); --- linux-3.5.0.orig/arch/x86/mm/numa_internal.h +++ linux-3.5.0/arch/x86/mm/numa_internal.h @@ -21,12 +21,6 @@ void __init x86_numa_init(void); -#ifdef CONFIG_X86_64 -static inline void init_alloc_remap(int nid, u64 start, u64 end) { } -#else -void __init init_alloc_remap(int nid, u64 start, u64 end); -#endif - #ifdef CONFIG_NUMA_EMU void __init numa_emulation(struct numa_meminfo *numa_meminfo, int numa_dist_cnt); --- linux-3.5.0.orig/arch/x86/mm/init_64.c +++ linux-3.5.0/arch/x86/mm/init_64.c @@ -386,7 +386,8 @@ * these mappings are more intelligent. */ if (pte_val(*pte)) { - pages++; + if (!after_bootmem) + pages++; continue; } @@ -451,6 +452,8 @@ * attributes. */ if (page_size_mask & (1 << PG_LEVEL_2M)) { + if (!after_bootmem) + pages++; last_map_addr = next; continue; } @@ -526,6 +529,8 @@ * attributes. */ if (page_size_mask & (1 << PG_LEVEL_1G)) { + if (!after_bootmem) + pages++; last_map_addr = next; continue; } @@ -824,6 +829,9 @@ if (pud_none(*pud)) return 0; + if (pud_large(*pud)) + return pfn_valid(pud_pfn(*pud)); + pmd = pmd_offset(pud, addr); if (pmd_none(*pmd)) return 0; --- linux-3.5.0.orig/arch/x86/kernel/msr.c +++ linux-3.5.0/arch/x86/kernel/msr.c @@ -174,6 +174,9 @@ unsigned int cpu; struct cpuinfo_x86 *c; + if (!capable(CAP_SYS_RAWIO)) + return -EPERM; + cpu = iminor(file->f_path.dentry->d_inode); if (cpu >= nr_cpu_ids || !cpu_online(cpu)) return -ENXIO; /* No such CPU */ --- linux-3.5.0.orig/arch/x86/kernel/relocate_kernel_64.S +++ linux-3.5.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-3.5.0.orig/arch/x86/kernel/step.c +++ linux-3.5.0/arch/x86/kernel/step.c @@ -157,6 +157,33 @@ return 1; } +static void set_task_blockstep(struct task_struct *task, bool on) +{ + unsigned long debugctl; + + /* + * Ensure irq/preemption can't change debugctl in between. + * Note also that both TIF_BLOCKSTEP and debugctl should + * be changed atomically wrt preemption. + * FIXME: this means that set/clear TIF_BLOCKSTEP is simply + * wrong if task != current, SIGKILL can wakeup the stopped + * tracee and set/clear can play with the running task, this + * can confuse the next __switch_to_xtra(). + */ + local_irq_disable(); + debugctl = get_debugctlmsr(); + if (on) { + debugctl |= DEBUGCTLMSR_BTF; + set_tsk_thread_flag(task, TIF_BLOCKSTEP); + } else { + debugctl &= ~DEBUGCTLMSR_BTF; + clear_tsk_thread_flag(task, TIF_BLOCKSTEP); + } + if (task == current) + update_debugctlmsr(debugctl); + local_irq_enable(); +} + /* * Enable single or block step. */ @@ -169,19 +196,10 @@ * So no one should try to use debugger block stepping in a program * that uses user-mode single stepping itself. */ - if (enable_single_step(child) && block) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl |= DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - set_tsk_thread_flag(child, TIF_BLOCKSTEP); - } else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl &= ~DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - clear_tsk_thread_flag(child, TIF_BLOCKSTEP); - } + if (enable_single_step(child) && block) + set_task_blockstep(child, true); + else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) + set_task_blockstep(child, false); } void user_enable_single_step(struct task_struct *child) @@ -199,13 +217,8 @@ /* * Make sure block stepping (BTF) is disabled. */ - if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl &= ~DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - clear_tsk_thread_flag(child, TIF_BLOCKSTEP); - } + if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) + set_task_blockstep(child, false); /* Always clear TIF_SINGLESTEP... */ clear_tsk_thread_flag(child, TIF_SINGLESTEP); --- linux-3.5.0.orig/arch/x86/kernel/e820.c +++ linux-3.5.0/arch/x86/kernel/e820.c @@ -76,7 +76,7 @@ * Note: this function only works correct if the e820 table is sorted and * not-overlapping, which is the case */ -int __init e820_all_mapped(u64 start, u64 end, unsigned type) +int e820_all_mapped(u64 start, u64 end, unsigned type) { int i; @@ -103,6 +103,7 @@ } return 0; } +EXPORT_SYMBOL_GPL(e820_all_mapped); /* * Add a memory region to the kernel e820 map. @@ -1077,6 +1078,9 @@ memblock_add(ei->addr, ei->size); } + /* throw away partial pages */ + memblock_trim_memory(PAGE_SIZE); + memblock_dump_all(); } --- linux-3.5.0.orig/arch/x86/kernel/setup.c +++ linux-3.5.0/arch/x86/kernel/setup.c @@ -613,6 +613,83 @@ static unsigned reserve_low = CONFIG_X86_RESERVE_LOW << 10; +static bool __init snb_gfx_workaround_needed(void) +{ +#ifdef CONFIG_PCI + int i; + u16 vendor, devid; + static const __initconst u16 snb_ids[] = { + 0x0102, + 0x0112, + 0x0122, + 0x0106, + 0x0116, + 0x0126, + 0x010a, + }; + + /* Assume no if something weird is going on with PCI */ + if (!early_pci_allowed()) + return false; + + vendor = read_pci_config_16(0, 2, 0, PCI_VENDOR_ID); + if (vendor != 0x8086) + return false; + + devid = read_pci_config_16(0, 2, 0, PCI_DEVICE_ID); + for (i = 0; i < ARRAY_SIZE(snb_ids); i++) + if (devid == snb_ids[i]) + return true; +#endif + + return false; +} + +/* + * Sandy Bridge graphics has trouble with certain ranges, exclude + * them from allocation. + */ +static void __init trim_snb_memory(void) +{ + static const __initconst unsigned long bad_pages[] = { + 0x20050000, + 0x20110000, + 0x20130000, + 0x20138000, + 0x40004000, + }; + int i; + + if (!snb_gfx_workaround_needed()) + return; + + printk(KERN_DEBUG "reserving inaccessible SNB gfx pages\n"); + + /* + * Reserve all memory below the 1 MB mark that has not + * already been reserved. + */ + memblock_reserve(0, 1<<20); + + for (i = 0; i < ARRAY_SIZE(bad_pages); i++) { + if (memblock_reserve(bad_pages[i], PAGE_SIZE)) + printk(KERN_WARNING "failed to reserve 0x%08lx\n", + bad_pages[i]); + } +} + +/* + * Here we put platform-specific memory range workarounds, i.e. + * memory known to be corrupt or otherwise in need to be reserved on + * specific platforms. + * + * If this gets used more widely it could use a real dispatch mechanism. + */ +static void __init trim_platform_memory_ranges(void) +{ + trim_snb_memory(); +} + static void __init trim_bios_range(void) { /* @@ -633,6 +710,7 @@ * take them out. */ e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); + sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } @@ -732,15 +810,15 @@ #ifdef CONFIG_EFI if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, "EL32", 4)) { - efi_enabled = 1; - efi_64bit = false; + set_bit(EFI_BOOT, &x86_efi_facility); } else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, "EL64", 4)) { - efi_enabled = 1; - efi_64bit = true; + set_bit(EFI_BOOT, &x86_efi_facility); + set_bit(EFI_64BIT, &x86_efi_facility); } - if (efi_enabled && efi_memblock_x86_reserve_range()) - efi_enabled = 0; + + if (efi_enabled(EFI_BOOT)) + efi_memblock_x86_reserve_range(); #endif x86_init.oem.arch_setup(); @@ -813,7 +891,7 @@ finish_e820_parsing(); - if (efi_enabled) + if (efi_enabled(EFI_BOOT)) efi_init(); dmi_scan_machine(); @@ -896,7 +974,7 @@ * The EFI specification says that boot service code won't be called * after ExitBootServices(). This is, in fact, a lie. */ - if (efi_enabled) + if (efi_enabled(EFI_MEMMAP)) efi_reserve_boot_services(); /* preallocate 4k for mptable mpc */ @@ -911,6 +989,8 @@ setup_real_mode(); + trim_platform_memory_ranges(); + init_gbpages(); /* max_pfn_mapped is updated here */ @@ -919,8 +999,22 @@ #ifdef CONFIG_X86_64 if (max_pfn > max_low_pfn) { - max_pfn_mapped = init_memory_mapping(1UL<<32, - max_pfn< not a system call */ SAVE_ALL TRACE_IRQS_OFF @@ -1058,14 +1058,15 @@ 2: mov 8(%esp),%es 3: mov 12(%esp),%fs 4: mov 16(%esp),%gs + /* EAX == 0 => Category 1 (Bad segment) + EAX != 0 => Category 2 (Bad IRET) */ testl %eax,%eax popl_cfi %eax lea 16(%esp),%esp CFI_ADJUST_CFA_OFFSET -16 jz 5f - addl $16,%esp - jmp iret_exc # EAX != 0 => Category 2 (Bad IRET) -5: pushl_cfi $0 # EAX == 0 => Category 1 (Bad segment) + jmp iret_exc +5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL jmp ret_from_exception CFI_ENDPROC --- linux-3.5.0.orig/arch/x86/kernel/entry_64.S +++ linux-3.5.0/arch/x86/kernel/entry_64.S @@ -1381,7 +1381,7 @@ CFI_RESTORE r11 addq $0x30,%rsp CFI_ADJUST_CFA_OFFSET -0x30 - pushq_cfi $0 + pushq_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL jmp error_exit CFI_ENDPROC --- linux-3.5.0.orig/arch/x86/kernel/head.c +++ linux-3.5.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-3.5.0.orig/arch/x86/kernel/smpboot.c +++ linux-3.5.0/arch/x86/kernel/smpboot.c @@ -66,6 +66,8 @@ #include #include #include +#include +#include #include #include #include @@ -826,6 +828,9 @@ per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; + /* the FPU context is blank, nobody can own it */ + __cpu_disable_lazy_restore(cpu); + err = do_boot_cpu(apicid, cpu, tidle); if (err) { pr_debug("do_boot_cpu failed %d\n", err); --- linux-3.5.0.orig/arch/x86/kernel/reboot.c +++ linux-3.5.0/arch/x86/kernel/reboot.c @@ -435,6 +435,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"), }, }, + { /* Handle problems with rebooting on the Latitude E6220. */ + .callback = set_pci_reboot, + .ident = "Dell Latitude E6220", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6220"), + }, + }, { /* Handle problems with rebooting on the Latitude E6420. */ .callback = set_pci_reboot, .ident = "Dell Latitude E6420", @@ -459,6 +467,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"), + }, + }, { } }; @@ -598,7 +638,7 @@ break; case BOOT_EFI: - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) efi.reset_system(reboot_mode ? EFI_RESET_WARM : EFI_RESET_COLD, --- linux-3.5.0.orig/arch/x86/kernel/microcode_amd.c +++ linux-3.5.0/arch/x86/kernel/microcode_amd.c @@ -97,6 +97,7 @@ #define F1XH_MPB_MAX_SIZE 2048 #define F14H_MPB_MAX_SIZE 1824 #define F15H_MPB_MAX_SIZE 4096 +#define F16H_MPB_MAX_SIZE 3458 switch (c->x86) { case 0x14: @@ -105,6 +106,9 @@ case 0x15: max_size = F15H_MPB_MAX_SIZE; break; + case 0x16: + max_size = F16H_MPB_MAX_SIZE; + break; default: max_size = F1XH_MPB_MAX_SIZE; break; @@ -143,11 +147,12 @@ unsigned int *current_size) { struct microcode_header_amd *mc_hdr; - unsigned int actual_size; + unsigned int actual_size, patch_size; u16 equiv_cpu_id; /* size of the current patch we're staring at */ - *current_size = *(u32 *)(ucode_ptr + 4) + SECTION_HDR_SIZE; + patch_size = *(u32 *)(ucode_ptr + 4); + *current_size = patch_size + SECTION_HDR_SIZE; equiv_cpu_id = find_equiv_id(); if (!equiv_cpu_id) @@ -174,7 +179,7 @@ /* * now that the header looks sane, verify its size */ - actual_size = verify_ucode_size(cpu, *current_size, leftover_size); + actual_size = verify_ucode_size(cpu, patch_size, leftover_size); if (!actual_size) return 0; --- linux-3.5.0.orig/arch/x86/kernel/paravirt.c +++ linux-3.5.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, @@ -477,6 +477,7 @@ .lazy_mode = { .enter = paravirt_nop, .leave = paravirt_nop, + .flush = paravirt_nop, }, .set_fixmap = native_set_fixmap, --- linux-3.5.0.orig/arch/x86/kernel/hpet.c +++ linux-3.5.0/arch/x86/kernel/hpet.c @@ -434,7 +434,7 @@ /* unmask it */ cfg = hpet_readl(HPET_Tn_CFG(hdev->num)); - cfg |= HPET_TN_FSB; + cfg |= HPET_TN_ENABLE | HPET_TN_FSB; hpet_writel(cfg, HPET_Tn_CFG(hdev->num)); } @@ -445,7 +445,7 @@ /* mask it */ cfg = hpet_readl(HPET_Tn_CFG(hdev->num)); - cfg &= ~HPET_TN_FSB; + cfg &= ~(HPET_TN_ENABLE | HPET_TN_FSB); hpet_writel(cfg, HPET_Tn_CFG(hdev->num)); } --- linux-3.5.0.orig/arch/x86/kernel/alternative.c +++ linux-3.5.0/arch/x86/kernel/alternative.c @@ -160,7 +160,7 @@ #endif #ifdef P6_NOP1 -static const unsigned char __initconst_or_module p6nops[] = +static const unsigned char p6nops[] = { P6_NOP1, P6_NOP2, @@ -219,7 +219,7 @@ ideal_nops = intel_nops; #endif } - + break; default: #ifdef CONFIG_X86_64 ideal_nops = k8_nops; --- linux-3.5.0.orig/arch/x86/kernel/ptrace.c +++ linux-3.5.0/arch/x86/kernel/ptrace.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -165,6 +166,35 @@ #define FLAG_MASK FLAG_MASK_32 +/* + * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode + * when it traps. The previous stack will be directly underneath the saved + * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. + * + * Now, if the stack is empty, '®s->sp' is out of range. In this + * case we try to take the previous stack. To always return a non-null + * stack pointer we fall back to regs as stack if no previous stack + * exists. + * + * This is valid only for kernel mode traps. + */ +unsigned long kernel_stack_pointer(struct pt_regs *regs) +{ + unsigned long context = (unsigned long)regs & ~(THREAD_SIZE - 1); + unsigned long sp = (unsigned long)®s->sp; + struct thread_info *tinfo; + + if (context == (sp & ~(THREAD_SIZE - 1))) + return sp; + + tinfo = (struct thread_info *)context; + if (tinfo->previous_esp) + return tinfo->previous_esp; + + return (unsigned long)regs; +} +EXPORT_SYMBOL_GPL(kernel_stack_pointer); + static unsigned long *pt_regs_access(struct pt_regs *regs, unsigned long regno) { BUILD_BUG_ON(offsetof(struct pt_regs, bx) != 0); --- linux-3.5.0.orig/arch/x86/kernel/microcode_core.c +++ linux-3.5.0/arch/x86/kernel/microcode_core.c @@ -298,19 +298,31 @@ const char *buf, size_t size) { unsigned long val; - int cpu = dev->id; - ssize_t ret = 0; + int cpu; + ssize_t ret = 0, tmp_ret; + + /* allow reload only from the BSP */ + if (boot_cpu_data.cpu_index != dev->id) + return -EINVAL; ret = kstrtoul(buf, 0, &val); if (ret) return ret; - if (val == 1) { - get_online_cpus(); - if (cpu_online(cpu)) - ret = reload_for_cpu(cpu); - put_online_cpus(); + if (val != 1) + return size; + + get_online_cpus(); + for_each_online_cpu(cpu) { + tmp_ret = reload_for_cpu(cpu); + if (tmp_ret != 0) + pr_warn("Error reloading microcode on CPU %d\n", cpu); + + /* save retval of the first encountered reload error */ + if (!ret) + ret = tmp_ret; } + put_online_cpus(); if (!ret) ret = size; --- linux-3.5.0.orig/arch/x86/kernel/acpi/sleep.c +++ linux-3.5.0/arch/x86/kernel/acpi/sleep.c @@ -94,6 +94,8 @@ acpi_realmode_flags |= 2; if (strncmp(str, "s3_beep", 7) == 0) acpi_realmode_flags |= 4; + if (strncmp(str, "s3_leds", 7) == 0) + acpi_realmode_flags |= 8; #ifdef CONFIG_HIBERNATION if (strncmp(str, "s4_nohwsig", 10) == 0) acpi_no_s4_hw_signature(); --- linux-3.5.0.orig/arch/x86/kernel/cpu/perf_event_intel.c +++ linux-3.5.0/arch/x86/kernel/cpu/perf_event_intel.c @@ -126,8 +126,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 }; @@ -1920,7 +1926,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; --- linux-3.5.0.orig/arch/x86/kernel/cpu/amd.c +++ linux-3.5.0/arch/x86/kernel/cpu/amd.c @@ -598,6 +598,20 @@ } } + /* + * The way access filter has a performance penalty on some workloads. + * Disable it on the affected CPUs. + */ + if ((c->x86 == 0x15) && + (c->x86_model >= 0x02) && (c->x86_model < 0x20)) { + u64 val; + + if (!rdmsrl_safe(0xc0011021, &val) && !(val & 0x1E)) { + val |= 0x1E; + checking_wrmsrl(0xc0011021, val); + } + } + cpu_detect_cache_sizes(c); /* Multi core CPU? */ --- linux-3.5.0.orig/arch/x86/kernel/cpu/common.c +++ linux-3.5.0/arch/x86/kernel/cpu/common.c @@ -144,6 +144,8 @@ { setup_clear_cpu_cap(X86_FEATURE_XSAVE); setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); + setup_clear_cpu_cap(X86_FEATURE_AVX); + setup_clear_cpu_cap(X86_FEATURE_AVX2); return 1; } __setup("noxsave", x86_xsave_setup); --- linux-3.5.0.orig/arch/x86/kernel/cpu/perf_event_intel_lbr.c +++ linux-3.5.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-3.5.0.orig/arch/x86/kernel/cpu/perf_event_amd_ibs.c +++ linux-3.5.0/arch/x86/kernel/cpu/perf_event_amd_ibs.c @@ -207,6 +207,15 @@ return -EOPNOTSUPP; } +static const struct perf_event_attr ibs_notsupp = { + .exclude_user = 1, + .exclude_kernel = 1, + .exclude_hv = 1, + .exclude_idle = 1, + .exclude_host = 1, + .exclude_guest = 1, +}; + static int perf_ibs_init(struct perf_event *event) { struct hw_perf_event *hwc = &event->hw; @@ -227,6 +236,9 @@ if (event->pmu != &perf_ibs->pmu) return -ENOENT; + if (perf_flags(&event->attr) & perf_flags(&ibs_notsupp)) + return -EINVAL; + if (config & ~perf_ibs->config_mask) return -EINVAL; --- linux-3.5.0.orig/arch/x86/kernel/cpu/mshyperv.c +++ linux-3.5.0/arch/x86/kernel/cpu/mshyperv.c @@ -68,7 +68,8 @@ printk(KERN_INFO "HyperV: features 0x%x, hints 0x%x\n", ms_hyperv.features, ms_hyperv.hints); - clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100); + if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE) + clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100); } const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = { --- linux-3.5.0.orig/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ linux-3.5.0/arch/x86/kernel/cpu/perf_event_intel_ds.c @@ -714,3 +714,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-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce-xeon75xx.c +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce-xeon75xx.c @@ -0,0 +1,427 @@ +/* + * Xeon 7500 series specific machine check support code. + * Copyright 2009, 2010 Intel Corporation + * Author: Andi Kleen + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; version 2 + * of the License. + * + * Implement Xeon 7500 series specific code to retrieve the physical address + * and DIMM information for corrected memory errors. + * + * Interface: mce->aux0/aux1 is mapped to a struct pfa_dimm with pad + * redefined to DIMM valid bits. Consumers check CPUID and bank and + * then interpret aux0/aux1 + */ + +/* #define DEBUG 1 */ /* disable for production */ +#define pr_fmt(x) "MCE: " x + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mce-internal.h" + +#define PFA_SIG "$PFA" +#define PFA_SIG_LEN 4 + +/* DIMM description */ +struct aux_pfa_dimm { + u8 fbd_channel_id; + u8 ddr_channel_id; + u8 ddr_dimm_id; + u8 ddr_rank_id; + u8 ddr_dimm_bank_id; + u8 ddr_dimm_row_id; + u8 ddr_dimm_column_id; + u8 valid; +} __attribute__((packed)); + +struct pfa_dimm { + u8 fbd_channel_id; + u8 ddr_channel_id; + u8 ddr_dimm_id; + u8 ddr_rank_id; + u8 ddr_dimm_bank_id; + u32 ddr_dimm_row_id; + u32 ddr_dimm_column_id; +} __attribute__((packed)); + +/* Memory translation table in memory. */ +struct pfa_table { + u8 sig[PFA_SIG_LEN]; /* Signature: '$PFA' */ + u16 len; /* total length */ + u16 revision; /* 0x11 */ + u8 checksum; /* 8bit sum to zero */ + u8 db_value; /* mailbox port command value */ + u8 db_port; /* mailbox port */ + /* end of header; end of checksum */ + u8 command; /* input command */ + u32 valid; /* valid input/output bits */ + u16 status; /* output status */ + u8 socket_id; /* input socket id*/ + u8 bank_id; /* input MCE bank id */ + u32 pad1; + u64 mbox_address; + u64 physical_addr; /* physical address */ + struct pfa_dimm dimm[2]; + /* + * topology information follows: not used for now. + */ +} __attribute__((packed)); + +/* DIMM valid bits in valid: DIMM0: 8..12; DIMM1 16..20 */ +#define DIMM_VALID_BITS(val, num) (((val) >> (4 + (num) * 8)) & DIMM_VALID_ALL) +#define DIMM_SET_VALID(val, num) ((val) << (4 + (num) * 8)) + +enum { + MCE_BANK_MBOX0 = 8, + MCE_BANK_MBOX1 = 9, + + PFA_REVISION = 0x11, /* v1.1 */ + + /* Status bits for valid field */ + PFA_VALID_MA = (1 << 0), + PFA_VALID_SOCKETID = (1 << 1), + PFA_VALID_BANKID = (1 << 2), + PFA_VALID_PA = (1 << 3), + + /* DIMM valid bits in valid */ + /* use with DIMM_VALID_BITS/DIMM_SET_VALID for pfa->valid */ + DIMM_VALID_FBD_CHAN = (1 << 0), + DIMM_VALID_DDR_CHAN = (1 << 1), + DIMM_VALID_DDR_DIMM = (1 << 2), + DIMM_VALID_DDR_RANK = (1 << 3), + DIMM_VALID_DIMM_BANK = (1 << 4), + DIMM_VALID_DIMM_ROW = (1 << 5), + DIMM_VALID_DIMM_COLUMN = (1 << 6), + DIMM_VALID_ALL = 0x7f, + + PFA_DIMM_VALID_MASK = DIMM_SET_VALID(DIMM_VALID_ALL, 0) + | DIMM_SET_VALID(DIMM_VALID_ALL, 1), + + /* Values for status field */ + PFA_STATUS_SUCCESS = 0, + PFA_STATUS_SOCKET_INVALID = (1 << 1), + PFA_STATUS_MBOX_INVALID = (1 << 2), + PFA_STATUS_MA_INVALID = (1 << 3), + PFA_STATUS_PA_INVALID = (1 << 4), + + /* Values for command field */ + PFA_CMD_GET_MEM_CORR_ERR_PA = 0, + PFA_CMD_PA_TO_DIMM_ADDR = 1, + PFA_CMD_DIMM_TO_PA = 2, + PFA_CMD_GET_TOPOLOGY = 3, + + /* PCI device IDs and the base register */ + ICH_PFA_CFG = 0x8c, /* SCRATCH4 */ + PCI_DEVICE_ID_BXB_ICH_LEGACY0 = 0x3422, +}; + +static struct pfa_table *pfa_table __read_mostly; +static int memerr_max_conv_rate __read_mostly = 100; +static int memerr_min_interval __read_mostly = 500; +static int pfa_lost; /* for diagnosis */ + +enum { + RATE_LIMIT_PERIOD = USEC_PER_SEC, /* in us; period of rate limit */ +}; + +module_param(memerr_max_conv_rate, int, 0644); +MODULE_PARM_DESC(memerr_max_conv_rate, + "Maximum number of memory error conversions each second; 0 to disable"); +module_param(memerr_min_interval, int, 0644); +MODULE_PARM_DESC(memerr_min_interval, + "Minimum time delta between two memory conversions; in us; default 500"); + +static int notest; +static int nocsum; +module_param(notest, int, 0); +module_param(nocsum, int, 0); + +static u64 encode_dimm(struct pfa_dimm *d, u8 valid) +{ + union { + struct aux_pfa_dimm d; + u64 v; + } p; + + BUILD_BUG_ON(sizeof(struct aux_pfa_dimm) != sizeof(u64)); + p.d.fbd_channel_id = d->fbd_channel_id; + p.d.ddr_channel_id = d->ddr_channel_id; + p.d.ddr_dimm_id = d->ddr_dimm_id; + p.d.ddr_rank_id = d->ddr_rank_id; + p.d.ddr_dimm_bank_id = d->ddr_dimm_bank_id; + p.d.ddr_dimm_row_id = d->ddr_dimm_row_id; + if (p.d.ddr_dimm_row_id != d->ddr_dimm_row_id) /* truncated? */ + valid &= ~DIMM_VALID_DIMM_ROW; + p.d.ddr_dimm_column_id = d->ddr_dimm_column_id; + if (p.d.ddr_dimm_column_id != d->ddr_dimm_column_id) + valid &= ~DIMM_VALID_DIMM_COLUMN; + p.d.valid = valid; + pr_debug("PFA fbd_ch %u ddr_ch %u dimm %u rank %u bank %u valid %x\n", + d->fbd_channel_id, + d->ddr_channel_id, + d->ddr_dimm_id, + d->ddr_rank_id, + d->ddr_dimm_bank_id, + valid); + return p.v; +} + +static u8 csum(u8 *table, u16 len) +{ + u8 sum = 0; + int i; + for (i = 0; i < len; i++) + sum += *table++; + return sum; +} + +/* + * Execute a command through the mailbox interface. + */ +static int +pfa_command(unsigned bank, unsigned socketid, unsigned command, unsigned valid) +{ + pfa_table->bank_id = bank; + pfa_table->socket_id = socketid; + pfa_table->valid = valid | PFA_VALID_SOCKETID; + pfa_table->command = command; + + outb(pfa_table->db_value, pfa_table->db_port); + + mb(); /* Reread fields after they got changed */ + + if (pfa_table->status != PFA_STATUS_SUCCESS) { + pr_debug("Memory PFA command %d failed: socket:%d bank:%d status:%x\n", + command, socketid, bank, pfa_table->status); + return -pfa_table->status; + } + return 0; +} + +/* + * Retrieve physical address and DIMMs. + */ +static int translate_memory_error(struct mce *m) +{ + struct pfa_table *pfa = pfa_table; + u64 status; + int ret; + u32 valid; + int cpu = smp_processor_id(); + + /* Make sure our structures match the specification */ + BUILD_BUG_ON(offsetof(struct pfa_table, physical_addr) != 0x20); + BUILD_BUG_ON(offsetof(struct pfa_table, status) != 0x10); + BUILD_BUG_ON(offsetof(struct pfa_table, physical_addr) != 0x20); + BUILD_BUG_ON(offsetof(struct pfa_table, dimm[1].ddr_dimm_column_id) != + 0x3e); + + /* Ask for PA/DIMMs of last error */ + if (pfa_command(m->bank, m->socketid, + PFA_CMD_GET_MEM_CORR_ERR_PA, PFA_VALID_BANKID) < 0) + return -1; + + /* + * Recheck machine check bank. If the overflow bit was set + * there was a race. Don't use the information in this case. + */ + rdmsrl(MSR_IA32_MCx_STATUS(m->bank), status); + if (status & MCI_STATUS_OVER) { + pr_debug("%d: overflow race on bank %d\n", cpu, m->bank); + return -1; + } + + ret = -1; + valid = pfa->valid; + if (valid & PFA_VALID_PA) { + m->status |= MCI_STATUS_ADDRV; + m->addr = pfa_table->physical_addr; + pr_debug("%d: got physical address %llx valid %x\n", + cpu, m->addr, valid); + ret = 0; + } + + /* When DIMM information was supplied pass it out */ + if (valid & PFA_DIMM_VALID_MASK) { + m->aux0 = encode_dimm(&pfa->dimm[0], DIMM_VALID_BITS(valid, 0)); + m->aux1 = encode_dimm(&pfa->dimm[1], DIMM_VALID_BITS(valid, 1)); + ret = 0; + } + + return ret; +} + +/* + * Xeon 75xx specific mce poll method to retrieve the physical address + * and DIMM information. + */ +static void xeon75xx_mce_poll(struct mce *m) +{ + static DEFINE_SPINLOCK(convert_lock); /* Protect table and static */ + static unsigned long cperm; + static ktime_t last, last_int; + unsigned long flags; + ktime_t now; + s64 delta; + + /* Memory error? */ + if (m->bank != MCE_BANK_MBOX0 && m->bank != MCE_BANK_MBOX1) + return; + if (m->status & MCI_STATUS_OVER) + return; + if (memerr_max_conv_rate == 0) + return; + + spin_lock_irqsave(&convert_lock, flags); + /* + * Rate limit conversions. The conversion takes some time, + * but it's not good to use all the CPU time during a error + * flood. + * Enforce maximum number per second and minimum interval. + * The ktime call should use TSC on this machine and be fast. + */ + now = ktime_get(); + delta = ktime_us_delta(now, last); + if (delta >= RATE_LIMIT_PERIOD) { + cperm = 0; + last = now; + } + if (ktime_us_delta(now, last_int) >= memerr_min_interval && + ++cperm <= memerr_max_conv_rate) { + if (translate_memory_error(m) < 0) { + /* On error stop converting for the next second */ + cperm = memerr_max_conv_rate; + pr_debug("PFA translation failed\n"); + } + } else + pfa_lost++; + last_int = now; + spin_unlock_irqrestore(&convert_lock, flags); +} + +static struct pci_device_id bxb_mce_pciids[] = { + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_BXB_ICH_LEGACY0) }, + {} +}; + +static int __init xeon75xx_mce_init(void) +{ + u32 addr = 0; + struct pci_dev *dev; + + if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL || + boot_cpu_data.x86 != 6 || + boot_cpu_data.x86_model != 0x2e) + return -ENODEV; + + /* + * Get table address from register in IOH. + * This just looks up the device, because we don't want to "own" it. + */ + dev = NULL; + while ((dev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, dev)) + != NULL) { + if (!pci_match_id(bxb_mce_pciids, dev)) + continue; + pci_read_config_dword(dev, ICH_PFA_CFG, &addr); + if (addr) + break; + } + pci_dev_put(dev); + if (!addr) + return -ENODEV; + + if (!e820_all_mapped(addr, addr + PAGE_SIZE, E820_RESERVED)) { + pr_info("PFA table at %x not e820 reserved\n", addr); + return -ENODEV; + } + + pfa_table = (__force struct pfa_table *)ioremap_cache(addr, PAGE_SIZE); + if (!pfa_table) { + pr_err("Cannot map PFA table at %x\n", addr); + return -EIO; + } + + if (memcmp(&pfa_table->sig, PFA_SIG, PFA_SIG_LEN) || + pfa_table->len < sizeof(struct pfa_table) || + /* assume newer versions are compatible */ + pfa_table->revision < PFA_REVISION) { + pr_info("PFA table at %x invalid\n", addr); + goto error_unmap; + } + + if (!nocsum && csum((u8 *)pfa_table, + offsetof(struct pfa_table, command))) { + pr_info("PFA table at %x length %u has invalid checksum\n", + addr, pfa_table->len); + goto error_unmap; + } + + /* Not strictly needed today */ + if (pfa_table->len > PAGE_SIZE) { + unsigned len = roundup(pfa_table->len, PAGE_SIZE); + iounmap(pfa_table); + pfa_table = (__force void *)ioremap_cache(addr, len); + if (!pfa_table) { + pr_err("Cannot remap %u bytes PFA table at %x\n", + len, addr); + return -EIO; + } + } + + if (!notest) { + int status = pfa_command(0, 0, PFA_CMD_GET_TOPOLOGY, 0); + if (status < 0) { + pr_err("Test of PFA table failed: %x\n", -status); + goto error_unmap; + } + } + + pr_info("Found Xeon75xx PFA memory error translation table at %x\n", + addr); + mb(); + mce_cpu_specific_poll = xeon75xx_mce_poll; + return 0; + +error_unmap: + iounmap(pfa_table); + return -ENODEV; +} + +MODULE_DEVICE_TABLE(pci, bxb_mce_pciids); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Andi Kleen"); +MODULE_DESCRIPTION("Intel Xeon 75xx specific DIMM error reporting"); + +#ifdef CONFIG_MODULE +static void __exit xeon75xx_mce_exit(void) +{ + mce_cpu_specific_poll = NULL; + wmb(); + /* Wait for all machine checks to finish before really unloading */ + synchronize_rcu(); + iounmap(pfa_table); +} + +module_init(xeon75xx_mce_init); +module_exit(xeon75xx_mce_exit); +#else +/* When built-in run as soon as the PCI subsystem is up */ +fs_initcall(xeon75xx_mce_init); +#endif --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce-internal.h +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce-internal.h @@ -28,6 +28,8 @@ extern struct mce_bank *mce_banks; +extern void (*mce_cpu_specific_poll)(struct mce *); + #ifdef CONFIG_ACPI_APEI int apei_write_mce(struct mce *m); ssize_t apei_read_mce(struct mce *m, u64 *record_id); --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/Makefile +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_X86_ANCIENT_MCE) += winchip.o p5.o obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o +obj-$(CONFIG_X86_MCE_XEON75XX) += mce-xeon75xx.o obj-$(CONFIG_X86_MCE_AMD) += mce_amd.o obj-$(CONFIG_X86_MCE_THRESHOLD) += threshold.o obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce.c +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce.c @@ -95,6 +95,9 @@ static DEFINE_PER_CPU(struct mce, mces_seen); static int cpu_missing; +void (*mce_cpu_specific_poll)(struct mce *); +EXPORT_SYMBOL_GPL(mce_cpu_specific_poll); + /* MCA banks polled by the period polling timer for corrected events */ DEFINE_PER_CPU(mce_banks_t, mce_poll_banks) = { [0 ... BITS_TO_LONGS(MAX_NR_BANKS)-1] = ~0UL @@ -419,6 +422,11 @@ wrmsrl(msr, v); } +static int under_injection(void) +{ + return __get_cpu_var(injectm).finished; +} + /* * Collect all global (w.r.t. this processor) status about this machine * check into our "mce" struct so that we can use it later to assess @@ -623,6 +631,10 @@ if (!(flags & MCP_TIMESTAMP)) m.tsc = 0; + + if (mce_cpu_specific_poll && !under_injection() && !mce_dont_log_ce) + mce_cpu_specific_poll(&m); + /* * Don't get the IP here because it's unlikely to * have anything to do with the actual error location. @@ -1186,6 +1198,7 @@ { unsigned long pfn; struct mce_info *mi = mce_find_info(); + int flags = MF_ACTION_REQUIRED; if (!mi) mce_panic("Lost physical address for unconsumed uncorrectable error", NULL, NULL); @@ -1200,8 +1213,9 @@ * doomed. We still need to mark the page as poisoned and alert any * other users of the page. */ - if (memory_failure(pfn, MCE_VECTOR, MF_ACTION_REQUIRED) < 0 || - mi->restartable == 0) { + if (!mi->restartable) + flags |= MF_MUST_KILL; + if (memory_failure(pfn, MCE_VECTOR, flags) < 0) { pr_err("Memory error not recovered"); force_sig(SIGBUS, current); } --- linux-3.5.0.orig/arch/x86/kernel/apic/ipi.c +++ linux-3.5.0/arch/x86/kernel/apic/ipi.c @@ -106,7 +106,7 @@ unsigned long mask = cpumask_bits(cpumask)[0]; unsigned long flags; - if (WARN_ONCE(!mask, "empty IPI mask")) + if (!mask) return; local_irq_save(flags); --- linux-3.5.0.orig/arch/x86/kernel/apic/x2apic_phys.c +++ linux-3.5.0/arch/x86/kernel/apic/x2apic_phys.c @@ -20,18 +20,19 @@ } early_param("x2apic_phys", set_x2apic_phys_mode); -static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +static bool x2apic_fadt_phys(void) { - if (x2apic_phys) - return x2apic_enabled(); - else if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && - (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) && - x2apic_enabled()) { + if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && + (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) { printk(KERN_DEBUG "System requires x2apic physical mode\n"); - return 1; + return true; } - else - return 0; + return false; +} + +static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +{ + return x2apic_enabled() && (x2apic_phys || x2apic_fadt_phys()); } static void @@ -114,7 +115,7 @@ static int x2apic_phys_probe(void) { - if (x2apic_mode && x2apic_phys) + if (x2apic_mode && (x2apic_phys || x2apic_fadt_phys())) return 1; return apic == &apic_x2apic_phys; --- linux-3.5.0.orig/arch/xtensa/include/asm/signal.h +++ linux-3.5.0/arch/xtensa/include/asm/signal.h @@ -126,6 +126,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-3.5.0.orig/arch/xtensa/kernel/process.c +++ linux-3.5.0/arch/xtensa/kernel/process.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -110,8 +111,10 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) platform_idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/tile/Makefile +++ linux-3.5.0/arch/tile/Makefile @@ -26,6 +26,10 @@ endif endif +# The tile compiler may emit .eh_frame information for backtracing. +# In kernel modules, this causes load failures due to unsupported relocations. +KBUILD_CFLAGS += -fno-asynchronous-unwind-tables + ifneq ($(CONFIG_DEBUG_EXTRA_FLAGS),"") KBUILD_CFLAGS += $(CONFIG_DEBUG_EXTRA_FLAGS) endif --- linux-3.5.0.orig/arch/tile/Kconfig +++ linux-3.5.0/arch/tile/Kconfig @@ -339,11 +339,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. endmenu # Tilera-specific configuration --- linux-3.5.0.orig/arch/tile/include/hv/hypervisor.h +++ linux-3.5.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-3.5.0.orig/arch/tile/lib/exports.c +++ linux-3.5.0/arch/tile/lib/exports.c @@ -82,4 +82,6 @@ EXPORT_SYMBOL(__ashrdi3); uint64_t __ashldi3(uint64_t, unsigned int); EXPORT_SYMBOL(__ashldi3); +int __ffsdi2(uint64_t); +EXPORT_SYMBOL(__ffsdi2); #endif --- linux-3.5.0.orig/arch/tile/kernel/head_64.S +++ linux-3.5.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-3.5.0.orig/arch/tile/kernel/setup.c +++ linux-3.5.0/arch/tile/kernel/setup.c @@ -990,15 +990,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) { @@ -1012,9 +1005,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) { @@ -1024,10 +1017,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-3.5.0.orig/arch/tile/kernel/head_32.S +++ linux-3.5.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-3.5.0.orig/arch/score/kernel/process.c +++ linux-3.5.0/arch/score/kernel/process.c @@ -27,6 +27,7 @@ #include #include #include +#include void (*pm_power_off)(void); EXPORT_SYMBOL(pm_power_off); @@ -50,9 +51,10 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) barrier(); - + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/mn10300/Makefile +++ linux-3.5.0/arch/mn10300/Makefile @@ -26,7 +26,7 @@ PROCESSOR := unset UNIT := unset -KBUILD_CFLAGS += -mam33 -mmem-funcs -DCPU=AM33 +KBUILD_CFLAGS += -mam33 -DCPU=AM33 $(call cc-option,-mmem-funcs,) KBUILD_AFLAGS += -mam33 -DCPU=AM33 ifeq ($(CONFIG_MN10300_CURRENT_IN_E2),y) --- linux-3.5.0.orig/arch/mn10300/include/asm/signal.h +++ linux-3.5.0/arch/mn10300/include/asm/signal.h @@ -131,6 +131,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-3.5.0.orig/arch/mn10300/kernel/process.c +++ linux-3.5.0/arch/mn10300/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -107,6 +108,7 @@ { /* endless idle loop with no priority at all */ for (;;) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void); @@ -121,6 +123,7 @@ } idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } --- linux-3.5.0.orig/arch/sh/include/asm/elf.h +++ linux-3.5.0/arch/sh/include/asm/elf.h @@ -202,9 +202,9 @@ if (vdso_enabled) \ NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \ else \ - NEW_AUX_ENT(AT_IGNORE, 0); + NEW_AUX_ENT(AT_IGNORE, 0) #else -#define VSYSCALL_AUX_ENT +#define VSYSCALL_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0) #endif /* CONFIG_VSYSCALL */ #ifdef CONFIG_SH_FPU --- linux-3.5.0.orig/arch/sh/mm/fault.c +++ linux-3.5.0/arch/sh/mm/fault.c @@ -58,11 +58,15 @@ { pgd_t *pgd; - if (mm) + if (mm) { pgd = mm->pgd; - else + } else { pgd = get_TTB(); + if (unlikely(!pgd)) + pgd = swapper_pg_dir; + } + printk(KERN_ALERT "pgd = %p\n", pgd); pgd += pgd_index(addr); printk(KERN_ALERT "[%08lx] *pgd=%0*Lx", addr, --- linux-3.5.0.orig/arch/mips/Makefile +++ linux-3.5.0/arch/mips/Makefile @@ -225,7 +225,7 @@ LDFLAGS += -m $(ld-emul) ifdef CONFIG_MIPS -CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -xc /dev/null | \ +CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \ sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/") ifdef CONFIG_64BIT --- linux-3.5.0.orig/arch/mips/include/asm/mach-ath79/ar71xx_regs.h +++ linux-3.5.0/arch/mips/include/asm/mach-ath79/ar71xx_regs.h @@ -63,6 +63,8 @@ #define AR934X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000) #define AR934X_WMAC_SIZE 0x20000 +#define AR934X_SRIF_BASE (AR71XX_APB_BASE + 0x00116000) +#define AR934X_SRIF_SIZE 0x1000 /* * DDR_CTRL block @@ -398,4 +400,25 @@ #define AR933X_GPIO_COUNT 30 #define AR934X_GPIO_COUNT 23 +/* + * SRIF block + */ +#define AR934X_SRIF_CPU_DPLL1_REG 0x1c0 +#define AR934X_SRIF_CPU_DPLL2_REG 0x1c4 +#define AR934X_SRIF_CPU_DPLL3_REG 0x1c8 + +#define AR934X_SRIF_DDR_DPLL1_REG 0x240 +#define AR934X_SRIF_DDR_DPLL2_REG 0x244 +#define AR934X_SRIF_DDR_DPLL3_REG 0x248 + +#define AR934X_SRIF_DPLL1_REFDIV_SHIFT 27 +#define AR934X_SRIF_DPLL1_REFDIV_MASK 0x1f +#define AR934X_SRIF_DPLL1_NINT_SHIFT 18 +#define AR934X_SRIF_DPLL1_NINT_MASK 0x1ff +#define AR934X_SRIF_DPLL1_NFRAC_MASK 0x0003ffff + +#define AR934X_SRIF_DPLL2_LOCAL_PLL BIT(30) +#define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13 +#define AR934X_SRIF_DPLL2_OUTDIV_MASK 0x7 + #endif /* __ASM_MACH_AR71XX_REGS_H */ --- linux-3.5.0.orig/arch/mips/ath79/clock.c +++ linux-3.5.0/arch/mips/ath79/clock.c @@ -17,6 +17,8 @@ #include #include +#include + #include #include #include "common.h" @@ -166,11 +168,34 @@ ath79_uart_clk.rate = ath79_ref_clk.rate; } +static u32 __init ar934x_get_pll_freq(u32 ref, u32 ref_div, u32 nint, u32 nfrac, + u32 frac, u32 out_div) +{ + u64 t; + u32 ret; + + t = ath79_ref_clk.rate; + t *= nint; + do_div(t, ref_div); + ret = t; + + t = ath79_ref_clk.rate; + t *= nfrac; + do_div(t, ref_div * frac); + ret += t; + + ret /= (1 << out_div); + return ret; +} + static void __init ar934x_clocks_init(void) { - u32 pll, out_div, ref_div, nint, frac, clk_ctrl, postdiv; + u32 pll, out_div, ref_div, nint, nfrac, frac, clk_ctrl, postdiv; u32 cpu_pll, ddr_pll; u32 bootstrap; + void __iomem *dpll_base; + + dpll_base = ioremap(AR934X_SRIF_BASE, AR934X_SRIF_SIZE); bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP); if (bootstrap & AR934X_BOOTSTRAP_REF_CLK_40) @@ -178,33 +203,59 @@ else ath79_ref_clk.rate = 25 * 1000 * 1000; - pll = ath79_pll_rr(AR934X_PLL_CPU_CONFIG_REG); - out_div = (pll >> AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT) & - AR934X_PLL_CPU_CONFIG_OUTDIV_MASK; - ref_div = (pll >> AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT) & - AR934X_PLL_CPU_CONFIG_REFDIV_MASK; - nint = (pll >> AR934X_PLL_CPU_CONFIG_NINT_SHIFT) & - AR934X_PLL_CPU_CONFIG_NINT_MASK; - frac = (pll >> AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT) & - AR934X_PLL_CPU_CONFIG_NFRAC_MASK; - - cpu_pll = nint * ath79_ref_clk.rate / ref_div; - cpu_pll += frac * ath79_ref_clk.rate / (ref_div * (2 << 6)); - cpu_pll /= (1 << out_div); - - pll = ath79_pll_rr(AR934X_PLL_DDR_CONFIG_REG); - out_div = (pll >> AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT) & - AR934X_PLL_DDR_CONFIG_OUTDIV_MASK; - ref_div = (pll >> AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT) & - AR934X_PLL_DDR_CONFIG_REFDIV_MASK; - nint = (pll >> AR934X_PLL_DDR_CONFIG_NINT_SHIFT) & - AR934X_PLL_DDR_CONFIG_NINT_MASK; - frac = (pll >> AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT) & - AR934X_PLL_DDR_CONFIG_NFRAC_MASK; - - ddr_pll = nint * ath79_ref_clk.rate / ref_div; - ddr_pll += frac * ath79_ref_clk.rate / (ref_div * (2 << 10)); - ddr_pll /= (1 << out_div); + pll = __raw_readl(dpll_base + AR934X_SRIF_CPU_DPLL2_REG); + if (pll & AR934X_SRIF_DPLL2_LOCAL_PLL) { + out_div = (pll >> AR934X_SRIF_DPLL2_OUTDIV_SHIFT) & + AR934X_SRIF_DPLL2_OUTDIV_MASK; + pll = __raw_readl(dpll_base + AR934X_SRIF_CPU_DPLL1_REG); + nint = (pll >> AR934X_SRIF_DPLL1_NINT_SHIFT) & + AR934X_SRIF_DPLL1_NINT_MASK; + nfrac = pll & AR934X_SRIF_DPLL1_NFRAC_MASK; + ref_div = (pll >> AR934X_SRIF_DPLL1_REFDIV_SHIFT) & + AR934X_SRIF_DPLL1_REFDIV_MASK; + frac = 1 << 18; + } else { + pll = ath79_pll_rr(AR934X_PLL_CPU_CONFIG_REG); + out_div = (pll >> AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT) & + AR934X_PLL_CPU_CONFIG_OUTDIV_MASK; + ref_div = (pll >> AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT) & + AR934X_PLL_CPU_CONFIG_REFDIV_MASK; + nint = (pll >> AR934X_PLL_CPU_CONFIG_NINT_SHIFT) & + AR934X_PLL_CPU_CONFIG_NINT_MASK; + nfrac = (pll >> AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT) & + AR934X_PLL_CPU_CONFIG_NFRAC_MASK; + frac = 1 << 6; + } + + cpu_pll = ar934x_get_pll_freq(ath79_ref_clk.rate, ref_div, nint, + nfrac, frac, out_div); + + pll = __raw_readl(dpll_base + AR934X_SRIF_DDR_DPLL2_REG); + if (pll & AR934X_SRIF_DPLL2_LOCAL_PLL) { + out_div = (pll >> AR934X_SRIF_DPLL2_OUTDIV_SHIFT) & + AR934X_SRIF_DPLL2_OUTDIV_MASK; + pll = __raw_readl(dpll_base + AR934X_SRIF_DDR_DPLL1_REG); + nint = (pll >> AR934X_SRIF_DPLL1_NINT_SHIFT) & + AR934X_SRIF_DPLL1_NINT_MASK; + nfrac = pll & AR934X_SRIF_DPLL1_NFRAC_MASK; + ref_div = (pll >> AR934X_SRIF_DPLL1_REFDIV_SHIFT) & + AR934X_SRIF_DPLL1_REFDIV_MASK; + frac = 1 << 18; + } else { + pll = ath79_pll_rr(AR934X_PLL_DDR_CONFIG_REG); + out_div = (pll >> AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT) & + AR934X_PLL_DDR_CONFIG_OUTDIV_MASK; + ref_div = (pll >> AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT) & + AR934X_PLL_DDR_CONFIG_REFDIV_MASK; + nint = (pll >> AR934X_PLL_DDR_CONFIG_NINT_SHIFT) & + AR934X_PLL_DDR_CONFIG_NINT_MASK; + nfrac = (pll >> AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT) & + AR934X_PLL_DDR_CONFIG_NFRAC_MASK; + frac = 1 << 10; + } + + ddr_pll = ar934x_get_pll_freq(ath79_ref_clk.rate, ref_div, nint, + nfrac, frac, out_div); clk_ctrl = ath79_pll_rr(AR934X_PLL_CPU_DDR_CLK_CTRL_REG); @@ -240,6 +291,8 @@ ath79_wdt_clk.rate = ath79_ref_clk.rate; ath79_uart_clk.rate = ath79_ref_clk.rate; + + iounmap(dpll_base); } void __init ath79_clocks_init(void) --- linux-3.5.0.orig/arch/mips/pci/pci-ar724x.c +++ linux-3.5.0/arch/mips/pci/pci-ar724x.c @@ -23,9 +23,12 @@ #define AR724X_PCI_MEM_BASE 0x10000000 #define AR724X_PCI_MEM_SIZE 0x08000000 +#define AR724X_PCI_REG_RESET 0x18 #define AR724X_PCI_REG_INT_STATUS 0x4c #define AR724X_PCI_REG_INT_MASK 0x50 +#define AR724X_PCI_RESET_LINK_UP BIT(0) + #define AR724X_PCI_INT_DEV0 BIT(14) #define AR724X_PCI_IRQ_COUNT 1 @@ -38,6 +41,15 @@ static u32 ar724x_pci_bar0_value; static bool ar724x_pci_bar0_is_cached; +static bool ar724x_pci_link_up; + +static inline bool ar724x_pci_check_link(void) +{ + u32 reset; + + reset = __raw_readl(ar724x_pci_ctrl_base + AR724X_PCI_REG_RESET); + return reset & AR724X_PCI_RESET_LINK_UP; +} static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where, int size, uint32_t *value) @@ -46,6 +58,9 @@ void __iomem *base; u32 data; + if (!ar724x_pci_link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + if (devfn) return PCIBIOS_DEVICE_NOT_FOUND; @@ -96,6 +111,9 @@ u32 data; int s; + if (!ar724x_pci_link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + if (devfn) return PCIBIOS_DEVICE_NOT_FOUND; @@ -280,6 +298,10 @@ if (ar724x_pci_ctrl_base == NULL) goto err_unmap_devcfg; + ar724x_pci_link_up = ar724x_pci_check_link(); + if (!ar724x_pci_link_up) + pr_warn("ar724x: PCIe link is down\n"); + ar724x_pci_irq_init(irq); register_pci_controller(&ar724x_pci_controller); --- linux-3.5.0.orig/arch/mips/mm/gup.c +++ linux-3.5.0/arch/mips/mm/gup.c @@ -152,6 +152,8 @@ do { VM_BUG_ON(compound_head(page) != head); pages[*nr] = page; + if (PageTail(page)) + get_huge_page_tail(page); (*nr)++; page++; refs++; --- linux-3.5.0.orig/arch/mips/kernel/kspd.c +++ linux-3.5.0/arch/mips/kernel/kspd.c @@ -323,7 +323,7 @@ fdt = files_fdtable(files); for (;;) { unsigned long set; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; if (i >= fdt->max_fds) break; set = fdt->open_fds[j++]; --- linux-3.5.0.orig/arch/mips/kernel/process.c +++ linux-3.5.0/arch/mips/kernel/process.c @@ -72,9 +72,7 @@ } } #ifdef CONFIG_HOTPLUG_CPU - if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) && - (system_state == SYSTEM_RUNNING || - system_state == SYSTEM_BOOTING)) + if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map)) play_dead(); #endif rcu_idle_exit(); --- linux-3.5.0.orig/arch/mips/kernel/Makefile +++ linux-3.5.0/arch/mips/kernel/Makefile @@ -104,7 +104,7 @@ obj-$(CONFIG_OF) += prom.o -CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) +CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -x c /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT) += 8250-platform.o --- linux-3.5.0.orig/arch/mips/kernel/kgdb.c +++ linux-3.5.0/arch/mips/kernel/kgdb.c @@ -283,6 +283,15 @@ struct pt_regs *regs = args->regs; int trap = (regs->cp0_cause & 0x7c) >> 2; +#ifdef CONFIG_KPROBES + /* + * Return immediately if the kprobes fault notifier has set + * DIE_PAGE_FAULT. + */ + if (cmd == DIE_PAGE_FAULT) + return NOTIFY_DONE; +#endif /* CONFIG_KPROBES */ + /* Userspace events, ignore. */ if (user_mode(regs)) return NOTIFY_DONE; --- linux-3.5.0.orig/arch/alpha/include/asm/socket.h +++ linux-3.5.0/arch/alpha/include/asm/socket.h @@ -76,9 +76,11 @@ /* Instruct lower device to use last 4-bytes of skb data as FCS */ #define SO_NOFCS 43 +#ifdef __KERNEL__ /* O_NONBLOCK clashes with the bits used for socket types. Therefore we * have to define SOCK_NONBLOCK to a different value here. */ #define SOCK_NONBLOCK 0x40000000 +#endif /* __KERNEL__ */ #endif /* _ASM_SOCKET_H */ --- linux-3.5.0.orig/arch/alpha/include/asm/fpu.h +++ linux-3.5.0/arch/alpha/include/asm/fpu.h @@ -1,7 +1,9 @@ #ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H +#ifdef __KERNEL__ #include +#endif /* * Alpha floating-point control register defines: --- linux-3.5.0.orig/arch/alpha/include/asm/atomic.h +++ linux-3.5.0/arch/alpha/include/asm/atomic.h @@ -14,8 +14,8 @@ */ -#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) -#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) +#define ATOMIC_INIT(i) { (i) } +#define ATOMIC64_INIT(i) { (i) } #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) --- linux-3.5.0.orig/arch/alpha/kernel/process.c +++ linux-3.5.0/arch/alpha/kernel/process.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -54,8 +55,10 @@ /* FIXME -- EV6 and LCA45 know how to power down the CPU. */ + rcu_idle_enter(); while (!need_resched()) cpu_relax(); + rcu_idle_exit(); schedule(); } } --- linux-3.5.0.orig/arch/alpha/kernel/sys_nautilus.c +++ linux-3.5.0/arch/alpha/kernel/sys_nautilus.c @@ -188,6 +188,10 @@ extern void free_reserved_mem(void *, void *); extern void pcibios_claim_one_bus(struct pci_bus *); +static struct resource irongate_io = { + .name = "Irongate PCI IO", + .flags = IORESOURCE_IO, +}; static struct resource irongate_mem = { .name = "Irongate PCI MEM", .flags = IORESOURCE_MEM, @@ -209,6 +213,7 @@ irongate = pci_get_bus_and_slot(0, 0); bus->self = irongate; + bus->resource[0] = &irongate_io; bus->resource[1] = &irongate_mem; pci_bus_size_bridges(bus); --- linux-3.5.0.orig/arch/powerpc/Kconfig +++ linux-3.5.0/arch/powerpc/Kconfig @@ -264,6 +264,10 @@ depends on PPC_ADV_DEBUG_REGS && 44x default y +config PPC_EMULATE_SSTEP + bool + default y if KPROBES || UPROBES || XMON || HAVE_HW_BREAKPOINT + source "init/Kconfig" source "kernel/Kconfig.freezer" @@ -986,6 +990,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-3.5.0.orig/arch/powerpc/include/asm/ppc-opcode.h +++ linux-3.5.0/arch/powerpc/include/asm/ppc-opcode.h @@ -45,6 +45,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-3.5.0.orig/arch/powerpc/include/asm/exception-64s.h +++ linux-3.5.0/arch/powerpc/include/asm/exception-64s.h @@ -320,7 +320,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-3.5.0.orig/arch/powerpc/include/asm/signal.h +++ linux-3.5.0/arch/powerpc/include/asm/signal.h @@ -109,6 +109,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-3.5.0.orig/arch/powerpc/include/asm/reg.h +++ linux-3.5.0/arch/powerpc/include/asm/reg.h @@ -1024,7 +1024,8 @@ /* Macros for setting and retrieving special purpose registers */ #ifndef __ASSEMBLY__ #define mfmsr() ({unsigned long rval; \ - asm volatile("mfmsr %0" : "=r" (rval)); rval;}) + asm volatile("mfmsr %0" : "=r" (rval) : \ + : "memory"); rval;}) #ifdef CONFIG_PPC_BOOK3S_64 #define __mtmsrd(v, l) asm volatile("mtmsrd %0," __stringify(l) \ : : "r" (v) : "memory") --- linux-3.5.0.orig/arch/powerpc/include/asm/eeh.h +++ linux-3.5.0/arch/powerpc/include/asm/eeh.h @@ -130,6 +130,7 @@ void __init pci_addr_cache_build(void); void eeh_add_device_tree_early(struct device_node *); void eeh_add_device_tree_late(struct pci_bus *); +void eeh_add_sysfs_files(struct pci_bus *); void eeh_remove_bus_device(struct pci_dev *); /** @@ -183,7 +184,10 @@ static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } +static inline void eeh_add_sysfs_files(struct pci_bus *bus) { } + static inline void eeh_remove_bus_device(struct pci_dev *dev) { } + #define EEH_POSSIBLE_ERROR(val, type) (0) #define EEH_IO_ERROR_VALUE(size) (-1UL) #endif /* CONFIG_EEH */ --- linux-3.5.0.orig/arch/powerpc/include/asm/pci-bridge.h +++ linux-3.5.0/arch/powerpc/include/asm/pci-bridge.h @@ -181,6 +181,14 @@ #if defined(CONFIG_EEH) static inline struct eeh_dev *of_node_to_eeh_dev(struct device_node *dn) { + /* + * For those OF nodes whose parent isn't PCI bridge, they + * don't have PCI_DN actually. So we have to skip them for + * any EEH operations. + */ + if (!dn || !PCI_DN(dn)) + return NULL; + return PCI_DN(dn)->edev; } #endif --- linux-3.5.0.orig/arch/powerpc/include/asm/rtas.h +++ linux-3.5.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-3.5.0.orig/arch/powerpc/sysdev/xics/icp-hv.c +++ linux-3.5.0/arch/powerpc/sysdev/xics/icp-hv.c @@ -65,7 +65,11 @@ static inline void icp_hv_set_qirr(int n_cpu , u8 value) { int hw_cpu = get_hard_smp_processor_id(n_cpu); - long rc = plpar_hcall_norets(H_IPI, hw_cpu, value); + long rc; + + /* Make sure all previous accesses are ordered before IPI sending */ + mb(); + rc = plpar_hcall_norets(H_IPI, hw_cpu, value); if (rc != H_SUCCESS) { pr_err("%s: bad return code qirr cpu=%d hw_cpu=%d mfrr=0x%x " "returned %ld\n", __func__, n_cpu, hw_cpu, value, rc); --- linux-3.5.0.orig/arch/powerpc/lib/Makefile +++ linux-3.5.0/arch/powerpc/lib/Makefile @@ -18,9 +18,7 @@ memcpy_64.o usercopy_64.o mem_64.o string.o \ checksum_wrappers_64.o hweight_64.o \ copyuser_power7.o -obj-$(CONFIG_XMON) += sstep.o ldstfp.o -obj-$(CONFIG_KPROBES) += sstep.o ldstfp.o -obj-$(CONFIG_HAVE_HW_BREAKPOINT) += sstep.o ldstfp.o +obj-$(CONFIG_PPC_EMULATE_SSTEP) += sstep.o ldstfp.o ifeq ($(CONFIG_PPC64),y) obj-$(CONFIG_SMP) += locks.o --- linux-3.5.0.orig/arch/powerpc/platforms/85xx/p1022_ds.c +++ linux-3.5.0/arch/powerpc/platforms/85xx/p1022_ds.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "smp.h" #include "mpc85xx.h" @@ -142,17 +143,74 @@ { } +struct fsl_law { + u32 lawbar; + u32 reserved1; + u32 lawar; + u32 reserved[5]; +}; + +#define LAWBAR_MASK 0x00F00000 +#define LAWBAR_SHIFT 12 + +#define LAWAR_EN 0x80000000 +#define LAWAR_TGT_MASK 0x01F00000 +#define LAW_TRGT_IF_LBC (0x04 << 20) + +#define LAWAR_MASK (LAWAR_EN | LAWAR_TGT_MASK) +#define LAWAR_MATCH (LAWAR_EN | LAW_TRGT_IF_LBC) + +#define BR_BA 0xFFFF8000 + +/* + * Map a BRx value to a physical address + * + * The localbus BRx registers only store the lower 32 bits of the address. To + * obtain the upper four bits, we need to scan the LAW table. The entry which + * maps to the localbus will contain the upper four bits. + */ +static phys_addr_t lbc_br_to_phys(const void *ecm, unsigned int count, u32 br) +{ +#ifndef CONFIG_PHYS_64BIT + /* + * If we only have 32-bit addressing, then the BRx address *is* the + * physical address. + */ + return br & BR_BA; +#else + const struct fsl_law *law = ecm + 0xc08; + unsigned int i; + + for (i = 0; i < count; i++) { + u64 lawbar = in_be32(&law[i].lawbar); + u32 lawar = in_be32(&law[i].lawar); + + if ((lawar & LAWAR_MASK) == LAWAR_MATCH) + /* Extract the upper four bits */ + return (br & BR_BA) | ((lawbar & LAWBAR_MASK) << 12); + } + + return 0; +#endif +} + /** * p1022ds_set_monitor_port: switch the output to a different monitor port - * */ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) { struct device_node *guts_node; - struct device_node *indirect_node = NULL; + struct device_node *lbc_node = NULL; + struct device_node *law_node = NULL; struct ccsr_guts __iomem *guts; + struct fsl_lbc_regs *lbc = NULL; + void *ecm = NULL; u8 __iomem *lbc_lcs0_ba = NULL; u8 __iomem *lbc_lcs1_ba = NULL; + phys_addr_t cs0_addr, cs1_addr; + u32 br0, or0, br1, or1; + const __be32 *iprop; + unsigned int num_laws; u8 b; /* Map the global utilities registers. */ @@ -168,22 +226,99 @@ goto exit; } - indirect_node = of_find_compatible_node(NULL, NULL, - "fsl,p1022ds-indirect-pixis"); - if (!indirect_node) { - pr_err("p1022ds: missing pixis indirect mode node\n"); + lbc_node = of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); + if (!lbc_node) { + pr_err("p1022ds: missing localbus node\n"); goto exit; } - lbc_lcs0_ba = of_iomap(indirect_node, 0); - if (!lbc_lcs0_ba) { - pr_err("p1022ds: could not map localbus chip select 0\n"); + lbc = of_iomap(lbc_node, 0); + if (!lbc) { + pr_err("p1022ds: could not map localbus node\n"); + goto exit; + } + + law_node = of_find_compatible_node(NULL, NULL, "fsl,ecm-law"); + if (!law_node) { + pr_err("p1022ds: missing local access window node\n"); + goto exit; + } + + ecm = of_iomap(law_node, 0); + if (!ecm) { + pr_err("p1022ds: could not map local access window node\n"); + goto exit; + } + + iprop = of_get_property(law_node, "fsl,num-laws", 0); + if (!iprop) { + pr_err("p1022ds: LAW node is missing fsl,num-laws property\n"); goto exit; } + num_laws = be32_to_cpup(iprop); - lbc_lcs1_ba = of_iomap(indirect_node, 1); + /* + * Indirect mode requires both BR0 and BR1 to be set to "GPCM", + * otherwise writes to these addresses won't actually appear on the + * local bus, and so the PIXIS won't see them. + * + * In FCM mode, writes go to the NAND controller, which does not pass + * them to the localbus directly. So we force BR0 and BR1 into GPCM + * mode, since we don't care about what's behind the localbus any + * more. + */ + br0 = in_be32(&lbc->bank[0].br); + br1 = in_be32(&lbc->bank[1].br); + or0 = in_be32(&lbc->bank[0].or); + or1 = in_be32(&lbc->bank[1].or); + + /* Make sure CS0 and CS1 are programmed */ + if (!(br0 & BR_V) || !(br1 & BR_V)) { + pr_err("p1022ds: CS0 and/or CS1 is not programmed\n"); + goto exit; + } + + /* + * Use the existing BRx/ORx values if it's already GPCM. Otherwise, + * force the values to simple 32KB GPCM windows with the most + * conservative timing. + */ + if ((br0 & BR_MSEL) != BR_MS_GPCM) { + br0 = (br0 & BR_BA) | BR_V; + or0 = 0xFFFF8000 | 0xFF7; + out_be32(&lbc->bank[0].br, br0); + out_be32(&lbc->bank[0].or, or0); + } + if ((br1 & BR_MSEL) != BR_MS_GPCM) { + br1 = (br1 & BR_BA) | BR_V; + or1 = 0xFFFF8000 | 0xFF7; + out_be32(&lbc->bank[1].br, br1); + out_be32(&lbc->bank[1].or, or1); + } + + cs0_addr = lbc_br_to_phys(ecm, num_laws, br0); + if (!cs0_addr) { + pr_err("p1022ds: could not determine physical address for CS0" + " (BR0=%08x)\n", br0); + goto exit; + } + cs1_addr = lbc_br_to_phys(ecm, num_laws, br1); + if (!cs0_addr) { + pr_err("p1022ds: could not determine physical address for CS1" + " (BR1=%08x)\n", br1); + goto exit; + } + + lbc_lcs0_ba = ioremap(cs0_addr, 1); + if (!lbc_lcs0_ba) { + pr_err("p1022ds: could not ioremap CS0 address %llx\n", + (unsigned long long)cs0_addr); + goto exit; + } + lbc_lcs1_ba = ioremap(cs1_addr, 1); if (!lbc_lcs1_ba) { - pr_err("p1022ds: could not map localbus chip select 1\n"); + pr_err("p1022ds: could not ioremap CS1 address %llx\n", + (unsigned long long)cs1_addr); goto exit; } @@ -254,10 +389,15 @@ iounmap(lbc_lcs1_ba); if (lbc_lcs0_ba) iounmap(lbc_lcs0_ba); + if (lbc) + iounmap(lbc); + if (ecm) + iounmap(ecm); if (guts) iounmap(guts); - of_node_put(indirect_node); + of_node_put(law_node); + of_node_put(lbc_node); of_node_put(guts_node); } @@ -355,6 +495,8 @@ prom_update_property(np, new, old); else prom_add_property(np, new); + + pr_info("p1022ds: disabling %s node\n", np->full_name); } /* TRUE if there is a "video=fslfb" command-line parameter. */ @@ -419,28 +561,46 @@ diu_ops.valid_monitor_port = p1022ds_valid_monitor_port; /* - * Disable the NOR flash node if there is video=fslfb... command-line - * parameter. When the DIU is active, NOR flash is unavailable, so we - * have to disable the node before the MTD driver loads. + * Disable the NOR and NAND flash nodes if there is video=fslfb... + * command-line parameter. When the DIU is active, the localbus is + * unavailable, so we have to disable these nodes before the MTD + * driver loads. */ if (fslfb) { struct device_node *np = of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); if (np) { - np = of_find_compatible_node(np, NULL, "cfi-flash"); - if (np) { + struct device_node *np2; + + of_node_get(np); + np2 = of_find_compatible_node(np, NULL, "cfi-flash"); + if (np2) { static struct property nor_status = { .name = "status", .value = "disabled", .length = sizeof("disabled"), }; - pr_info("p1022ds: disabling %s node", - np->full_name); - disable_one_node(np, &nor_status); - of_node_put(np); + disable_one_node(np2, &nor_status); + of_node_put(np2); + } + + of_node_get(np); + np2 = of_find_compatible_node(np, NULL, + "fsl,elbc-fcm-nand"); + if (np2) { + static struct property nand_status = { + .name = "status", + .value = "disabled", + .length = sizeof("disabled"), + }; + + disable_one_node(np2, &nand_status); + of_node_put(np2); } + + of_node_put(np); } } --- linux-3.5.0.orig/arch/powerpc/platforms/cell/spufs/inode.c +++ linux-3.5.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-3.5.0.orig/arch/powerpc/platforms/40x/ppc40x_simple.c +++ linux-3.5.0/arch/powerpc/platforms/40x/ppc40x_simple.c @@ -57,7 +57,8 @@ "amcc,makalu", "apm,klondike", "est,hotfoot", - "plathome,obs600" + "plathome,obs600", + NULL }; static int __init ppc40x_probe(void) --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/eeh.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh.c @@ -1029,7 +1029,7 @@ { struct pci_controller *phb; - if (!dn || !of_node_to_eeh_dev(dn)) + if (!of_node_to_eeh_dev(dn)) return; phb = of_node_to_eeh_dev(dn)->phb; @@ -1088,7 +1088,6 @@ dev->dev.archdata.edev = edev; pci_addr_cache_insert_device(dev); - eeh_sysfs_add_device(dev); } /** @@ -1115,6 +1114,29 @@ EXPORT_SYMBOL_GPL(eeh_add_device_tree_late); /** + * eeh_add_sysfs_files - Add EEH sysfs files for the indicated PCI bus + * @bus: PCI bus + * + * This routine must be used to add EEH sysfs files for PCI + * devices which are attached to the indicated PCI bus. The PCI bus + * is added after system boot through hotplug or dlpar. + */ +void eeh_add_sysfs_files(struct pci_bus *bus) +{ + struct pci_dev *dev; + + list_for_each_entry(dev, &bus->devices, bus_list) { + eeh_sysfs_add_device(dev); + if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) { + struct pci_bus *subbus = dev->subordinate; + if (subbus) + eeh_add_sysfs_files(subbus); + } + } +} +EXPORT_SYMBOL_GPL(eeh_add_sysfs_files); + +/** * eeh_remove_device - Undo EEH setup for the indicated pci device * @dev: pci device to be removed * --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/suspend.c +++ linux-3.5.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-3.5.0.orig/arch/powerpc/platforms/pseries/eeh_driver.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh_driver.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -47,6 +48,41 @@ return ""; } +/** + * eeh_pcid_get - Get the PCI device driver + * @pdev: PCI device + * + * The function is used to retrieve the PCI device driver for + * the indicated PCI device. Besides, we will increase the reference + * of the PCI device driver to prevent that being unloaded on + * the fly. Otherwise, kernel crash would be seen. + */ +static inline struct pci_driver *eeh_pcid_get(struct pci_dev *pdev) +{ + if (!pdev || !pdev->driver) + return NULL; + + if (!try_module_get(pdev->driver->driver.owner)) + return NULL; + + return pdev->driver; +} + +/** + * eeh_pcid_put - Dereference on the PCI device driver + * @pdev: PCI device + * + * The function is called to do dereference on the PCI device + * driver of the indicated PCI device. + */ +static inline void eeh_pcid_put(struct pci_dev *pdev) +{ + if (!pdev || !pdev->driver) + return; + + module_put(pdev->driver->driver.owner); +} + #if 0 static void print_device_node_tree(struct pci_dn *pdn, int dent) { @@ -126,18 +162,20 @@ static int eeh_report_error(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_frozen; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_disable_irq(dev); if (!driver->err_handler || - !driver->err_handler->error_detected) + !driver->err_handler->error_detected) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->error_detected(dev, pci_channel_io_frozen); @@ -145,6 +183,7 @@ if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; if (*res == PCI_ERS_RESULT_NONE) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -160,12 +199,16 @@ static int eeh_report_mmio_enabled(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; - if (!driver || - !driver->err_handler || - !driver->err_handler->mmio_enabled) + driver = eeh_pcid_get(dev); + if (!driver) return 0; + + if (!driver->err_handler || + !driver->err_handler->mmio_enabled) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->mmio_enabled(dev); @@ -173,6 +216,7 @@ if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; if (*res == PCI_ERS_RESULT_NONE) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -189,18 +233,20 @@ static int eeh_report_reset(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; - - if (!driver) - return 0; + struct pci_driver *driver; dev->error_state = pci_channel_io_normal; + driver = eeh_pcid_get(dev); + if (!driver) return 0; + eeh_enable_irq(dev); if (!driver->err_handler || - !driver->err_handler->slot_reset) + !driver->err_handler->slot_reset) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->slot_reset(dev); if ((*res == PCI_ERS_RESULT_NONE) || @@ -208,6 +254,7 @@ if (*res == PCI_ERS_RESULT_DISCONNECT && rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -222,21 +269,24 @@ */ static int eeh_report_resume(struct pci_dev *dev, void *userdata) { - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_normal; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_enable_irq(dev); if (!driver->err_handler || - !driver->err_handler->resume) + !driver->err_handler->resume) { + eeh_pcid_put(dev); return 0; + } driver->err_handler->resume(dev); + eeh_pcid_put(dev); return 0; } @@ -250,21 +300,24 @@ */ static int eeh_report_failure(struct pci_dev *dev, void *userdata) { - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_perm_failure; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_disable_irq(dev); if (!driver->err_handler || - !driver->err_handler->error_detected) + !driver->err_handler->error_detected) { + eeh_pcid_put(dev); return 0; + } driver->err_handler->error_detected(dev, pci_channel_io_perm_failure); + eeh_pcid_put(dev); return 0; } --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/eeh_pseries.c +++ linux-3.5.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-3.5.0.orig/arch/powerpc/platforms/pseries/eeh_event.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh_event.c @@ -85,8 +85,10 @@ set_current_state(TASK_INTERRUPTIBLE); /* Don't add to load average */ edev = handle_eeh_events(event); - eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING); - pci_dev_put(edev->pdev); + if (edev) { + eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING); + pci_dev_put(edev->pdev); + } kfree(event); mutex_unlock(&eeh_event_mutex); --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/lpar.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/lpar.c @@ -187,7 +187,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-3.5.0.orig/arch/powerpc/kvm/e500_tlb.c +++ linux-3.5.0/arch/powerpc/kvm/e500_tlb.c @@ -1330,7 +1330,7 @@ if (!vcpu_e500->gtlb_priv[1]) goto err; - vcpu_e500->g2h_tlb1_map = kzalloc(sizeof(unsigned int) * + vcpu_e500->g2h_tlb1_map = kzalloc(sizeof(u64) * vcpu_e500->gtlb_params[1].entries, GFP_KERNEL); if (!vcpu_e500->g2h_tlb1_map) --- linux-3.5.0.orig/arch/powerpc/kvm/emulate.c +++ linux-3.5.0/arch/powerpc/kvm/emulate.c @@ -39,6 +39,7 @@ #define OP_31_XOP_TRAP 4 #define OP_31_XOP_LWZX 23 #define OP_31_XOP_TRAP_64 68 +#define OP_31_XOP_DCBF 86 #define OP_31_XOP_LBZX 87 #define OP_31_XOP_STWX 151 #define OP_31_XOP_STBX 215 @@ -351,6 +352,7 @@ kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS); break; + case OP_31_XOP_DCBF: case OP_31_XOP_DCBI: /* Do nothing. The guest is performing dcbi because * hardware DMA is not snooped by the dcache, but --- linux-3.5.0.orig/arch/powerpc/boot/dts/p1022ds.dtsi +++ linux-3.5.0/arch/powerpc/boot/dts/p1022ds.dtsi @@ -33,22 +33,6 @@ */ &board_lbc { - /* - * This node is used to access the pixis via "indirect" mode, - * which is done by writing the pixis register index to chip - * select 0 and the value to/from chip select 1. Indirect - * mode is the only way to access the pixis when DIU video - * is enabled. Note that this assumes that the first column - * of the 'ranges' property above is the chip select number. - */ - board-control@0,0 { - compatible = "fsl,p1022ds-indirect-pixis"; - reg = <0x0 0x0 1 /* CS0 */ - 0x1 0x0 1>; /* CS1 */ - interrupt-parent = <&mpic>; - interrupts = <8 0 0 0>; - }; - nor@0,0 { #address-cells = <1>; #size-cells = <1>; --- linux-3.5.0.orig/arch/powerpc/mm/numa.c +++ linux-3.5.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-3.5.0.orig/arch/powerpc/mm/hash_utils_64.c +++ linux-3.5.0/arch/powerpc/mm/hash_utils_64.c @@ -759,6 +759,8 @@ /* Initialize stab / SLB management */ if (mmu_has_feature(MMU_FTR_SLB)) slb_initialize(); + else + stab_initialize(get_paca()->stab_real); } #ifdef CONFIG_SMP --- linux-3.5.0.orig/arch/powerpc/kernel/head_64.S +++ linux-3.5.0/arch/powerpc/kernel/head_64.S @@ -422,7 +422,7 @@ tovirt(r6,r6) /* on booke, we already run at PAGE_OFFSET */ #endif -#ifdef CONFIG_CRASH_DUMP +#ifdef CONFIG_RELOCATABLE /* * Check if the kernel has to be running as relocatable kernel based on the * variable __run_at_load, if it is set the kernel is treated as relocatable @@ -489,6 +489,7 @@ sync addi r5,r5,8 addi r6,r6,8 + isync blr .align 8 --- linux-3.5.0.orig/arch/powerpc/kernel/exceptions-64s.S +++ linux-3.5.0/arch/powerpc/kernel/exceptions-64s.S @@ -489,7 +489,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) --- linux-3.5.0.orig/arch/powerpc/kernel/asm-offsets.c +++ linux-3.5.0/arch/powerpc/kernel/asm-offsets.c @@ -76,6 +76,7 @@ DEFINE(SIGSEGV, SIGSEGV); DEFINE(NMI_MASK, NMI_MASK); DEFINE(THREAD_DSCR, offsetof(struct thread_struct, dscr)); + DEFINE(THREAD_DSCR_INHERIT, offsetof(struct thread_struct, dscr_inherit)); #else DEFINE(THREAD_INFO, offsetof(struct task_struct, stack)); #endif /* CONFIG_PPC64 */ --- linux-3.5.0.orig/arch/powerpc/kernel/dbell.c +++ linux-3.5.0/arch/powerpc/kernel/dbell.c @@ -28,6 +28,8 @@ void doorbell_cause_ipi(int cpu, unsigned long data) { + /* Order previous accesses vs. msgsnd, which is treated as a store */ + mb(); ppc_msgsnd(PPC_DBELL, 0, data); } --- linux-3.5.0.orig/arch/powerpc/kernel/smp.c +++ linux-3.5.0/arch/powerpc/kernel/smp.c @@ -197,8 +197,15 @@ struct cpu_messages *info = &per_cpu(ipi_message, cpu); char *message = (char *)&info->messages; + /* + * Order previous accesses before accesses in the IPI handler. + */ + smp_mb(); message[msg] = 1; - mb(); + /* + * cause_ipi functions are required to include a full barrier + * before doing whatever causes the IPI. + */ smp_ops->cause_ipi(cpu, info->data); } @@ -210,7 +217,7 @@ mb(); /* order any irq clear */ do { - all = xchg_local(&info->messages, 0); + all = xchg(&info->messages, 0); #ifdef __BIG_ENDIAN if (all & (1 << (24 - 8 * PPC_MSG_CALL_FUNCTION))) --- linux-3.5.0.orig/arch/powerpc/kernel/machine_kexec_64.c +++ linux-3.5.0/arch/powerpc/kernel/machine_kexec_64.c @@ -162,6 +162,8 @@ static void kexec_smp_down(void *arg) { local_irq_disable(); + hard_irq_disable(); + mb(); /* make sure our irqs are disabled before we say they are */ get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF; while(kexec_all_irq_disabled == 0) @@ -244,6 +246,8 @@ wake_offline_cpus(); smp_call_function(kexec_smp_down, NULL, /* wait */0); local_irq_disable(); + hard_irq_disable(); + mb(); /* make sure IRQs are disabled before we say they are */ get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF; @@ -281,6 +285,7 @@ if (ppc_md.kexec_cpu_down) ppc_md.kexec_cpu_down(0, 0); local_irq_disable(); + hard_irq_disable(); } #endif /* SMP */ --- linux-3.5.0.orig/arch/powerpc/kernel/irq.c +++ linux-3.5.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-3.5.0.orig/arch/powerpc/kernel/process.c +++ linux-3.5.0/arch/powerpc/kernel/process.c @@ -802,16 +802,8 @@ #endif /* CONFIG_PPC_STD_MMU_64 */ #ifdef CONFIG_PPC64 if (cpu_has_feature(CPU_FTR_DSCR)) { - if (current->thread.dscr_inherit) { - p->thread.dscr_inherit = 1; - p->thread.dscr = current->thread.dscr; - } else if (0 != dscr_default) { - p->thread.dscr_inherit = 1; - p->thread.dscr = dscr_default; - } else { - p->thread.dscr_inherit = 0; - p->thread.dscr = 0; - } + p->thread.dscr_inherit = current->thread.dscr_inherit; + p->thread.dscr = current->thread.dscr; } #endif @@ -1229,7 +1221,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; @@ -1242,7 +1234,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-3.5.0.orig/arch/powerpc/kernel/of_platform.c +++ linux-3.5.0/arch/powerpc/kernel/of_platform.c @@ -95,6 +95,9 @@ /* Add probed PCI devices to the device model */ pci_bus_add_devices(phb->bus); + /* sysfs files should only be added after devices are added */ + eeh_add_sysfs_files(phb->bus); + return 0; } --- linux-3.5.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-3.5.0/arch/powerpc/kernel/pci-common.c @@ -1458,11 +1458,14 @@ pcibios_allocate_bus_resources(bus); pcibios_claim_one_bus(bus); + /* Fixup EEH */ + eeh_add_device_tree_late(bus); + /* Add new devices to global lists. Register in proc, sysfs. */ pci_bus_add_devices(bus); - /* Fixup EEH */ - eeh_add_device_tree_late(bus); + /* sysfs files should only be added after devices are added */ + eeh_add_sysfs_files(bus); } EXPORT_SYMBOL_GPL(pcibios_finish_adding_to_bus); --- linux-3.5.0.orig/arch/powerpc/kernel/time.c +++ linux-3.5.0/arch/powerpc/kernel/time.c @@ -750,13 +750,8 @@ void update_vsyscall_tz(void) { - /* Make userspace gettimeofday spin until we're done. */ - ++vdso_data->tb_update_count; - smp_mb(); vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; vdso_data->tz_dsttime = sys_tz.tz_dsttime; - smp_mb(); - ++vdso_data->tb_update_count; } static void __init clocksource_init(void) --- linux-3.5.0.orig/arch/powerpc/kernel/ftrace.c +++ linux-3.5.0/arch/powerpc/kernel/ftrace.c @@ -245,9 +245,9 @@ /* * On PPC32 the trampoline looks like: - * 0x3d, 0x60, 0x00, 0x00 lis r11,sym@ha - * 0x39, 0x6b, 0x00, 0x00 addi r11,r11,sym@l - * 0x7d, 0x69, 0x03, 0xa6 mtctr r11 + * 0x3d, 0x80, 0x00, 0x00 lis r12,sym@ha + * 0x39, 0x8c, 0x00, 0x00 addi r12,r12,sym@l + * 0x7d, 0x89, 0x03, 0xa6 mtctr r12 * 0x4e, 0x80, 0x04, 0x20 bctr */ @@ -262,9 +262,9 @@ pr_devel(" %08x %08x ", jmp[0], jmp[1]); /* verify that this is what we expect it to be */ - if (((jmp[0] & 0xffff0000) != 0x3d600000) || - ((jmp[1] & 0xffff0000) != 0x396b0000) || - (jmp[2] != 0x7d6903a6) || + if (((jmp[0] & 0xffff0000) != 0x3d800000) || + ((jmp[1] & 0xffff0000) != 0x398c0000) || + (jmp[2] != 0x7d8903a6) || (jmp[3] != 0x4e800420)) { printk(KERN_ERR "Not a trampoline\n"); return -EINVAL; --- linux-3.5.0.orig/arch/powerpc/kernel/entry_64.S +++ linux-3.5.0/arch/powerpc/kernel/entry_64.S @@ -369,6 +369,12 @@ li r3,0 b syscall_exit + .section ".toc","aw" +DSCR_DEFAULT: + .tc dscr_default[TC],dscr_default + + .section ".text" + /* * This routine switches between two different tasks. The process * state of one is saved on its kernel stack. Then the state @@ -508,9 +514,6 @@ mr r1,r8 /* start using new stack pointer */ std r7,PACAKSAVE(r13) - ld r6,_CCR(r1) - mtcrf 0xFF,r6 - #ifdef CONFIG_ALTIVEC BEGIN_FTR_SECTION ld r0,THREAD_VRSAVE(r4) @@ -519,14 +522,22 @@ #endif /* CONFIG_ALTIVEC */ #ifdef CONFIG_PPC64 BEGIN_FTR_SECTION + lwz r6,THREAD_DSCR_INHERIT(r4) + ld r7,DSCR_DEFAULT@toc(2) ld r0,THREAD_DSCR(r4) - cmpd r0,r25 - beq 1f + cmpwi r6,0 + bne 1f + ld r0,0(r7) +1: cmpd r0,r25 + beq 2f mtspr SPRN_DSCR,r0 -1: +2: END_FTR_SECTION_IFSET(CPU_FTR_DSCR) #endif + ld r6,_CCR(r1) + mtcrf 0xFF,r6 + /* r3-r13 are destroyed -- Cort */ REST_8GPRS(14, r1) REST_10GPRS(22, r1) @@ -605,6 +616,19 @@ ld r4,TI_FLAGS(r9) andi. r0,r4,_TIF_NEED_RESCHED bne 1b + + /* + * arch_local_irq_restore() from preempt_schedule_irq above may + * enable hard interrupt but we really should disable interrupts + * when we return from the interrupt, and so that we don't get + * interrupted after loading SRR0/1. + */ +#ifdef CONFIG_PPC_BOOK3E + wrteei 0 +#else + ld r10,PACAKMSR(r13) /* Get kernel MSR without EE */ + mtmsrd r10,1 /* Update machine state */ +#endif /* CONFIG_PPC_BOOK3E */ #endif /* CONFIG_PREEMPT */ .globl fast_exc_return_irq --- linux-3.5.0.orig/arch/powerpc/kernel/traps.c +++ linux-3.5.0/arch/powerpc/kernel/traps.c @@ -960,7 +960,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; @@ -968,12 +971,16 @@ 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; - mtspr(SPRN_DSCR, regs->gpr[rd]); + current->thread.dscr = regs->gpr[rd]; current->thread.dscr_inherit = 1; + mtspr(SPRN_DSCR, current->thread.dscr); return 0; } #endif @@ -1067,6 +1074,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-3.5.0.orig/arch/powerpc/kernel/cputable.c +++ linux-3.5.0/arch/powerpc/kernel/cputable.c @@ -269,7 +269,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-3.5.0.orig/arch/powerpc/kernel/rtas.c +++ linux-3.5.0/arch/powerpc/kernel/rtas.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -808,6 +809,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; @@ -815,6 +905,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; @@ -838,11 +930,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 @@ -858,6 +963,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-3.5.0.orig/arch/powerpc/kernel/sysfs.c +++ linux-3.5.0/arch/powerpc/kernel/sysfs.c @@ -194,6 +194,14 @@ return sprintf(buf, "%lx\n", dscr_default); } +static void update_dscr(void *dummy) +{ + if (!current->thread.dscr_inherit) { + current->thread.dscr = dscr_default; + mtspr(SPRN_DSCR, dscr_default); + } +} + static ssize_t __used store_dscr_default(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -206,6 +214,8 @@ return -EINVAL; dscr_default = val; + on_each_cpu(update_dscr, NULL, 1); + return count; } --- linux-3.5.0.orig/arch/ia64/include/asm/mca.h +++ linux-3.5.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-3.5.0.orig/arch/ia64/include/asm/futex.h +++ linux-3.5.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-3.5.0.orig/arch/ia64/include/asm/atomic.h +++ linux-3.5.0/arch/ia64/include/asm/atomic.h @@ -17,8 +17,8 @@ #include -#define ATOMIC_INIT(i) ((atomic_t) { (i) }) -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC_INIT(i) { (i) } +#define ATOMIC64_INIT(i) { (i) } #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) --- linux-3.5.0.orig/arch/ia64/kvm/vtlb.c +++ linux-3.5.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-3.5.0.orig/arch/ia64/kernel/irq.c +++ linux-3.5.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-3.5.0.orig/arch/ia64/kernel/process.c +++ linux-3.5.0/arch/ia64/kernel/process.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -279,6 +280,7 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); if (can_do_pal_halt) { current_thread_info()->status &= ~TS_POLLING; /* @@ -309,6 +311,7 @@ normal_xtp(); #endif } + rcu_idle_exit(); schedule_preempt_disabled(); check_pgt_cache(); if (cpu_is_offline(cpu)) --- linux-3.5.0.orig/arch/ia64/kernel/irq_ia64.c +++ linux-3.5.0/arch/ia64/kernel/irq_ia64.c @@ -23,7 +23,6 @@ #include #include #include -#include /* for rand_initialize_irq() */ #include #include #include --- linux-3.5.0.orig/arch/ia64/kernel/mca.c +++ linux-3.5.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-3.5.0.orig/arch/sparc/include/asm/signal.h +++ linux-3.5.0/arch/sparc/include/asm/signal.h @@ -192,6 +192,7 @@ unsigned long sa_flags; void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ }; +#define __ARCH_HAS_SA_RESTORER typedef struct sigaltstack { void __user *ss_sp; --- linux-3.5.0.orig/arch/sparc/include/asm/switch_to_64.h +++ linux-3.5.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-3.5.0.orig/arch/sparc/include/asm/pgtable_64.h +++ linux-3.5.0/arch/sparc/include/asm/pgtable_64.h @@ -776,6 +776,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-3.5.0.orig/arch/sparc/include/asm/tlbflush_64.h +++ linux-3.5.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-3.5.0.orig/arch/sparc/include/asm/hugetlb.h +++ linux-3.5.0/arch/sparc/include/asm/hugetlb.h @@ -58,14 +58,20 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - ptep_set_wrprotect(mm, addr, ptep); + pte_t old_pte = *ptep; + set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); } static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte, int dirty) { - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); + int changed = !pte_same(*ptep, pte); + if (changed) { + set_huge_pte_at(vma->vm_mm, addr, ptep, pte); + flush_tlb_page(vma, addr); + } + return changed; } static inline pte_t huge_ptep_get(pte_t *ptep) --- linux-3.5.0.orig/arch/sparc/mm/tlb.c +++ linux-3.5.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; +} + void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig, int fullmm) { @@ -90,6 +114,12 @@ nr = 0; } + if (!tb->active) { + global_flush_tlb_page(mm, vaddr); + flush_tsb_user_page(mm, vaddr); + goto out; + } + if (nr == 0) tb->mm = mm; @@ -98,5 +128,6 @@ if (nr >= TLB_BATCH_NR) flush_tlb_pending(); +out: put_cpu_var(tlb_batch); } --- linux-3.5.0.orig/arch/sparc/mm/ultra.S +++ linux-3.5.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 */ @@ -596,15 +664,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 @@ -613,8 +679,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 @@ -697,6 +761,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 @@ -728,12 +799,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-3.5.0.orig/arch/sparc/mm/tsb.c +++ linux-3.5.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); +} + #if defined(CONFIG_SPARC64_PAGE_SIZE_8KB) #define HV_PGSZ_IDX_BASE HV_PGSZ_IDX_8K #define HV_PGSZ_MASK_BASE HV_PGSZ_MASK_8K @@ -331,7 +358,7 @@ retry_tsb_alloc: gfp_flags = GFP_KERNEL; if (new_size > (PAGE_SIZE * 2)) - gfp_flags = __GFP_NOWARN | __GFP_NORETRY; + gfp_flags |= __GFP_NOWARN | __GFP_NORETRY; new_tsb = kmem_cache_alloc_node(tsb_caches[new_cache_index], gfp_flags, numa_node_id()); --- linux-3.5.0.orig/arch/sparc/mm/init_64.c +++ linux-3.5.0/arch/sparc/mm/init_64.c @@ -2020,6 +2020,9 @@ #ifdef CONFIG_SPARSEMEM_VMEMMAP unsigned long vmemmap_table[VMEMMAP_SIZE]; +static long __meminitdata addr_start, addr_end; +static int __meminitdata node_start; + int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node) { unsigned long vstart = (unsigned long) start; @@ -2050,15 +2053,30 @@ *vmem_pp = pte_base | __pa(block); - printk(KERN_INFO "[%p-%p] page_structs=%lu " - "node=%d entry=%lu/%lu\n", start, block, nr, - node, - addr >> VMEMMAP_CHUNK_SHIFT, - VMEMMAP_SIZE); + /* check to see if we have contiguous blocks */ + if (addr_end != addr || node_start != node) { + if (addr_start) + printk(KERN_DEBUG " [%lx-%lx] on node %d\n", + addr_start, addr_end-1, node_start); + addr_start = addr; + node_start = node; + } + addr_end = addr + VMEMMAP_CHUNK; } } return 0; } + +void __meminit vmemmap_populate_print_last(void) +{ + if (addr_start) { + printk(KERN_DEBUG " [%lx-%lx] on node %d\n", + addr_start, addr_end-1, node_start); + addr_start = 0; + addr_end = 0; + node_start = 0; + } +} #endif /* CONFIG_SPARSEMEM_VMEMMAP */ static void prot_init_common(unsigned long page_none, --- linux-3.5.0.orig/arch/sparc/kernel/sys_sparc_64.c +++ linux-3.5.0/arch/sparc/kernel/sys_sparc_64.c @@ -519,12 +519,12 @@ { int ret; - if (current->personality == PER_LINUX32 && - personality == PER_LINUX) - personality = PER_LINUX32; + if (personality(current->personality) == PER_LINUX32 && + personality(personality) == PER_LINUX) + personality |= PER_LINUX32; ret = sys_personality(personality); - if (ret == PER_LINUX32) - ret = PER_LINUX; + if (personality(ret) == PER_LINUX32) + ret &= ~PER_LINUX32; return ret; } --- linux-3.5.0.orig/arch/sparc/kernel/syscalls.S +++ linux-3.5.0/arch/sparc/kernel/syscalls.S @@ -212,24 +212,20 @@ 3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] ret_sys_call: ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %g3 - ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc sra %o0, 0, %o0 mov %ulo(TSTATE_XCARRY | TSTATE_ICARRY), %g2 sllx %g2, 32, %g2 - /* Check if force_successful_syscall_return() - * was invoked. - */ - ldub [%g6 + TI_SYS_NOERROR], %l2 - brnz,a,pn %l2, 80f - stb %g0, [%g6 + TI_SYS_NOERROR] - cmp %o0, -ERESTART_RESTARTBLOCK bgeu,pn %xcc, 1f - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 -80: + andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 + ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc + +2: + stb %g0, [%g6 + TI_SYS_NOERROR] /* System call success, clear Carry condition code. */ andn %g3, %g2, %g3 +3: stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] bne,pn %icc, linux_syscall_trace2 add %l1, 0x4, %l2 ! npc = npc+4 @@ -238,20 +234,20 @@ stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] 1: + /* Check if force_successful_syscall_return() + * was invoked. + */ + ldub [%g6 + TI_SYS_NOERROR], %l2 + brnz,pn %l2, 2b + ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc /* System call failure, set Carry condition code. * Also, get abs(errno) to return to the process. */ - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 sub %g0, %o0, %o0 - or %g3, %g2, %g3 stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] - stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] - bne,pn %icc, linux_syscall_trace2 - add %l1, 0x4, %l2 ! npc = npc+4 - stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC] + ba,pt %xcc, 3b + or %g3, %g2, %g3 - b,pt %xcc, rtrap - stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] linux_syscall_trace2: call syscall_trace_leave add %sp, PTREGS_OFF, %o0 --- linux-3.5.0.orig/arch/sparc/kernel/perf_event.c +++ linux-3.5.0/arch/sparc/kernel/perf_event.c @@ -557,11 +557,13 @@ static inline void sparc_pmu_enable_event(struct cpu_hw_events *cpuc, struct hw_perf_event *hwc, int idx) { - u64 val, mask = mask_for_index(idx); + u64 enc, val, mask = mask_for_index(idx); + + enc = perf_event_get_enc(cpuc->events[idx]); val = cpuc->pcr; val &= ~mask; - val |= hwc->config; + val |= event_encoding(enc, idx); cpuc->pcr = val; pcr_ops->write(cpuc->pcr); @@ -1426,8 +1428,6 @@ { unsigned long ufp; - perf_callchain_store(entry, regs->tpc); - ufp = regs->u_regs[UREG_I6] + STACK_BIAS; do { struct sparc_stackf *usf, sf; @@ -1448,8 +1448,6 @@ { unsigned long ufp; - perf_callchain_store(entry, regs->tpc); - ufp = regs->u_regs[UREG_I6] & 0xffffffffUL; do { struct sparc_stackf32 *usf, sf; @@ -1468,6 +1466,11 @@ void perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) { + perf_callchain_store(entry, regs->tpc); + + if (!current->mm) + return; + flushw_user(); if (test_thread_flag(TIF_32BIT)) perf_callchain_user_32(entry, regs); --- linux-3.5.0.orig/arch/sparc/kernel/signal_64.c +++ linux-3.5.0/arch/sparc/kernel/signal_64.c @@ -295,9 +295,7 @@ err |= restore_fpu_state(regs, fpu_save); err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); - err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf); - - if (err) + if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT) goto segv; err |= __get_user(rwin_save, &sf->rwin_save); --- linux-3.5.0.orig/arch/sparc/kernel/smp_64.c +++ linux-3.5.0/arch/sparc/kernel/smp_64.c @@ -852,7 +852,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_receive_signal; @@ -1066,22 +1066,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-3.5.0.orig/arch/parisc/include/asm/pgtable.h +++ linux-3.5.0/arch/parisc/include/asm/pgtable.h @@ -12,11 +12,10 @@ #include #include +#include #include #include -struct vm_area_struct; - /* * kern_addr_valid(ADDR) tests if ADDR is pointing to valid kernel * memory. For the return value to be meaningful, ADDR must be >= @@ -40,7 +39,14 @@ do{ \ *(pteptr) = (pteval); \ } while(0) -#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) + +extern void purge_tlb_entries(struct mm_struct *, unsigned long); + +#define set_pte_at(mm, addr, ptep, pteval) \ + do { \ + set_pte(ptep, pteval); \ + purge_tlb_entries(mm, addr); \ + } while (0) #endif /* !__ASSEMBLY__ */ @@ -466,6 +472,7 @@ old = pte_val(*ptep); new = pte_val(pte_wrprotect(__pte (old))); } while (cmpxchg((unsigned long *) ptep, old, new) != old); + purge_tlb_entries(mm, addr); #else pte_t old_pte = *ptep; set_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); --- linux-3.5.0.orig/arch/parisc/include/asm/atomic.h +++ linux-3.5.0/arch/parisc/include/asm/atomic.h @@ -141,7 +141,7 @@ #define atomic_sub_and_test(i,v) (atomic_sub_return((i),(v)) == 0) -#define ATOMIC_INIT(i) ((atomic_t) { (i) }) +#define ATOMIC_INIT(i) { (i) } #define smp_mb__before_atomic_dec() smp_mb() #define smp_mb__after_atomic_dec() smp_mb() @@ -150,7 +150,7 @@ #ifdef CONFIG_64BIT -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC64_INIT(i) { (i) } static __inline__ s64 __atomic64_add_return(s64 i, atomic64_t *v) --- linux-3.5.0.orig/arch/parisc/kernel/cache.c +++ linux-3.5.0/arch/parisc/kernel/cache.c @@ -420,6 +420,24 @@ EXPORT_SYMBOL(kunmap_parisc); #endif +void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) +{ + unsigned long flags; + + /* Note: purge_tlb_entries can be called at startup with + no context. */ + + /* Disable preemption while we play with %sr1. */ + preempt_disable(); + mtsp(mm->context, 1); + purge_tlb_start(flags); + pdtlb(addr); + pitlb(addr); + purge_tlb_end(flags); + preempt_enable(); +} +EXPORT_SYMBOL(purge_tlb_entries); + void __flush_tlb_range(unsigned long sid, unsigned long start, unsigned long end) { --- linux-3.5.0.orig/arch/parisc/kernel/process.c +++ linux-3.5.0/arch/parisc/kernel/process.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -69,8 +70,10 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) barrier(); + rcu_idle_exit(); schedule_preempt_disabled(); check_pgt_cache(); } --- linux-3.5.0.orig/arch/parisc/kernel/signal32.c +++ linux-3.5.0/arch/parisc/kernel/signal32.c @@ -65,7 +65,8 @@ { compat_sigset_t s; - if (sz != sizeof *set) panic("put_sigset32()"); + if (sz != sizeof *set) + return -EINVAL; sigset_64to32(&s, set); return copy_to_user(up, &s, sizeof s); @@ -77,7 +78,8 @@ compat_sigset_t s; int r; - if (sz != sizeof *set) panic("put_sigset32()"); + if (sz != sizeof *set) + return -EINVAL; if ((r = copy_from_user(&s, up, sz)) == 0) { sigset_32to64(set, &s); --- linux-3.5.0.orig/arch/parisc/kernel/sys_parisc.c +++ linux-3.5.0/arch/parisc/kernel/sys_parisc.c @@ -73,6 +73,8 @@ struct vm_area_struct *vma; int offset = mapping ? get_offset(mapping) : 0; + offset = (offset + (pgoff << PAGE_SHIFT)) & 0x3FF000; + addr = DCACHE_ALIGN(addr - offset) + offset; for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { --- linux-3.5.0.orig/arch/arm/Makefile +++ linux-3.5.0/arch/arm/Makefile @@ -279,10 +279,10 @@ zinstall uinstall install: vmlinux $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ -%.dtb: +%.dtb: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ -dtbs: +dtbs: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ # We use MRPROPER_FILES and CLEAN_FILES now --- linux-3.5.0.orig/arch/arm/Kconfig +++ linux-3.5.0/arch/arm/Kconfig @@ -349,6 +349,7 @@ select ARM_TIMER_SP804 select CACHE_L2X0 select CLKDEV_LOOKUP + select COMMON_CLK select CPU_V7 select GENERIC_CLOCKEVENTS select HAVE_ARM_SCU @@ -548,6 +549,7 @@ bool "Marvell Kirkwood" select CPU_FEROCEON select PCI + select PCI_QUIRKS select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select NEED_MACH_IO_H @@ -2083,6 +2085,7 @@ config CPU_FREQ_IMX tristate "CPUfreq driver for i.MX CPUs" depends on ARCH_MXC && CPU_FREQ + select CPU_FREQ_TABLE help This enables the CPUfreq driver for i.MX CPUs. @@ -2265,6 +2268,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/arm/Kconfig.debug" --- linux-3.5.0.orig/arch/arm/mach-at91/at91sam9263_devices.c +++ linux-3.5.0/arch/arm/mach-at91/at91sam9263_devices.c @@ -542,7 +542,7 @@ static struct platform_device at91sam9263_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; --- linux-3.5.0.orig/arch/arm/mach-at91/at91sam9rl_devices.c +++ linux-3.5.0/arch/arm/mach-at91/at91sam9rl_devices.c @@ -314,7 +314,7 @@ static struct platform_device at91sam9rl_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; --- linux-3.5.0.orig/arch/arm/mach-at91/at91sam9261_devices.c +++ linux-3.5.0/arch/arm/mach-at91/at91sam9261_devices.c @@ -285,7 +285,7 @@ static struct platform_device at91sam9261_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; --- linux-3.5.0.orig/arch/arm/mach-at91/setup.c +++ linux-3.5.0/arch/arm/mach-at91/setup.c @@ -104,6 +104,8 @@ switch (socid) { case ARCH_ID_AT91RM9200: at91_soc_initdata.type = AT91_SOC_RM9200; + if (at91_soc_initdata.subtype == AT91_SOC_SUBTYPE_NONE) + at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA; at91_boot_soc = at91rm9200_soc; break; @@ -151,7 +153,7 @@ } /* at91sam9g10 */ - if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) { + if ((socid & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) { at91_soc_initdata.type = AT91_SOC_SAM9G10; at91_boot_soc = at91sam9261_soc; } @@ -330,7 +332,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-3.5.0.orig/arch/arm/mach-at91/at91sam9260_devices.c +++ linux-3.5.0/arch/arm/mach-at91/at91sam9260_devices.c @@ -471,7 +471,7 @@ static struct platform_device at91sam9260_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; --- linux-3.5.0.orig/arch/arm/mach-at91/at91rm9200_devices.c +++ linux-3.5.0/arch/arm/mach-at91/at91rm9200_devices.c @@ -463,7 +463,7 @@ static struct platform_device at91rm9200_twi_device = { .name = "i2c-gpio", - .id = -1, + .id = 0, .dev.platform_data = &pdata, }; --- linux-3.5.0.orig/arch/arm/mach-omap2/clock3xxx_data.c +++ linux-3.5.0/arch/arm/mach-omap2/clock3xxx_data.c @@ -3390,16 +3390,16 @@ CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), - CLK("usbhs_omap", "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), - CLK("usbhs_omap", "utmi_p1_gfclk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "utmi_p2_gfclk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "xclk60mhsp1_ck", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "xclk60mhsp2_ck", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_host_hs_utmi_p1_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_host_hs_utmi_p2_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_tll_hs_usb_ch0_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_tll_hs_usb_ch1_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "init_60m_fclk", &dummy_ck, CK_3XXX), + CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), + CLK(NULL, "utmi_p1_gfclk", &dummy_ck, CK_3XXX), + CLK(NULL, "utmi_p2_gfclk", &dummy_ck, CK_3XXX), + CLK(NULL, "xclk60mhsp1_ck", &dummy_ck, CK_3XXX), + CLK(NULL, "xclk60mhsp2_ck", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_host_hs_utmi_p1_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_host_hs_utmi_p2_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_tll_hs_usb_ch0_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_tll_hs_usb_ch1_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "init_60m_fclk", &dummy_ck, CK_3XXX), CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2PLUS | CK_36XX), CLK(NULL, "gpt1_fck", &gpt1_fck, CK_3XXX), CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_3XXX), --- linux-3.5.0.orig/arch/arm/mach-omap2/board-devkit8000.c +++ linux-3.5.0/arch/arm/mach-omap2/board-devkit8000.c @@ -143,6 +143,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = 1, }; static struct omap_dss_device devkit8000_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-omap3stalker.c +++ linux-3.5.0/arch/arm/mach-omap2/board-omap3stalker.c @@ -121,6 +121,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = DSS_ENABLE_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device omap3_stalker_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-am3517evm.c +++ linux-3.5.0/arch/arm/mach-omap2/board-am3517evm.c @@ -209,6 +209,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device am3517_evm_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/timer.c +++ linux-3.5.0/arch/arm/mach-omap2/timer.c @@ -263,6 +263,7 @@ return 0; } +#ifdef CONFIG_OMAP_32K_TIMER /* Setup free-running counter for clocksource */ static int __init omap2_sync32k_clocksource_init(void) { @@ -302,6 +303,12 @@ return ret; } +#else +static inline int omap2_sync32k_clocksource_init(void) +{ + return -ENODEV; +} +#endif static void __init omap2_gptimer_clocksource_init(int gptimer_id, const char *fck_source) --- linux-3.5.0.orig/arch/arm/mach-omap2/board-cm-t35.c +++ linux-3.5.0/arch/arm/mach-omap2/board-cm-t35.c @@ -243,6 +243,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = CM_T35_DVI_EN_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device cm_t35_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/opp.c +++ linux-3.5.0/arch/arm/mach-omap2/opp.c @@ -53,7 +53,7 @@ omap_table_init = 1; /* Lets now register with OPP library */ - for (i = 0; i < opp_def_size; i++) { + for (i = 0; i < opp_def_size; i++, opp_def++) { struct omap_hwmod *oh; struct device *dev; @@ -86,7 +86,6 @@ __func__, opp_def->freq, opp_def->hwmod_name, i, r); } - opp_def++; } return 0; --- linux-3.5.0.orig/arch/arm/mach-omap2/cpuidle34xx.c +++ linux-3.5.0/arch/arm/mach-omap2/cpuidle34xx.c @@ -284,8 +284,9 @@ DEFINE_PER_CPU(struct cpuidle_device, omap3_idle_dev); struct cpuidle_driver omap3_idle_driver = { - .name = "omap3_idle", - .owner = THIS_MODULE, + .name = "omap3_idle", + .owner = THIS_MODULE, + .en_core_tk_irqen = 1, .states = { { .enter = omap3_enter_idle, --- linux-3.5.0.orig/arch/arm/mach-omap2/board-omap3evm.c +++ linux-3.5.0/arch/arm/mach-omap2/board-omap3evm.c @@ -221,6 +221,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = OMAP3EVM_DVI_PANEL_EN_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device omap3_evm_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-3430sdp.c +++ linux-3.5.0/arch/arm/mach-omap2/board-3430sdp.c @@ -159,6 +159,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device sdp3430_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-rx51-peripherals.c +++ linux-3.5.0/arch/arm/mach-omap2/board-rx51-peripherals.c @@ -67,11 +67,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-3.5.0.orig/arch/arm/mach-cns3xxx/core.c +++ linux-3.5.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-3.5.0.orig/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h +++ linux-3.5.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-3.5.0.orig/arch/arm/include/asm/pgtable.h +++ linux-3.5.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 @@ -195,6 +204,18 @@ #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) +#define pte_none(pte) (!pte_val(pte)) +#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) +#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) +#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) +#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) +#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) +#define pte_special(pte) (0) + +#define pte_present_user(pte) \ + ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ + (L_PTE_PRESENT | L_PTE_USER)) + #if __LINUX_ARM_ARCH__ < 6 static inline void __sync_icache_dcache(pte_t pteval) { @@ -206,25 +227,15 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval) { - if (addr >= TASK_SIZE) - set_pte_ext(ptep, pteval, 0); - else { + unsigned long ext = 0; + + if (addr < TASK_SIZE && pte_present_user(pteval)) { __sync_icache_dcache(pteval); - set_pte_ext(ptep, pteval, PTE_EXT_NG); + ext |= PTE_EXT_NG; } -} -#define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) -#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) -#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) -#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) -#define pte_special(pte) (0) - -#define pte_present_user(pte) \ - ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ - (L_PTE_PRESENT | L_PTE_USER)) + set_pte_ext(ptep, pteval, ext); +} #define PTE_BIT_FUNC(fn,op) \ static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } @@ -251,13 +262,13 @@ * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - * <--------------- offset --------------------> <- type --> 0 0 0 + * <--------------- offset ----------------------> < type -> 0 0 0 * - * This gives us up to 63 swap files and 32GB per swap file. Note that + * This gives us up to 31 swap files and 64GB per swap file. Note that * the offset field is always non-zero. */ #define __SWP_TYPE_SHIFT 3 -#define __SWP_TYPE_BITS 6 +#define __SWP_TYPE_BITS 5 #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) --- linux-3.5.0.orig/arch/arm/include/asm/vfpmacros.h +++ linux-3.5.0/arch/arm/include/asm/vfpmacros.h @@ -27,9 +27,9 @@ #if __LINUX_ARM_ARCH__ <= 6 ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] - tst \tmp, #HWCAP_VFPv3D16 - ldceq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field @@ -51,9 +51,9 @@ #if __LINUX_ARM_ARCH__ <= 6 ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] - tst \tmp, #HWCAP_VFPv3D16 - stceq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field --- linux-3.5.0.orig/arch/arm/include/asm/hwcap.h +++ linux-3.5.0/arch/arm/include/asm/hwcap.h @@ -18,11 +18,12 @@ #define HWCAP_THUMBEE (1 << 11) #define HWCAP_NEON (1 << 12) #define HWCAP_VFPv3 (1 << 13) -#define HWCAP_VFPv3D16 (1 << 14) +#define HWCAP_VFPv3D16 (1 << 14) /* also set for VFPv4-D16 */ #define HWCAP_TLS (1 << 15) #define HWCAP_VFPv4 (1 << 16) #define HWCAP_IDIVA (1 << 17) #define HWCAP_IDIVT (1 << 18) +#define HWCAP_VFPD32 (1 << 19) /* set if VFP has 32 regs (not 16) */ #define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) #if defined(__KERNEL__) --- linux-3.5.0.orig/arch/arm/include/asm/signal.h +++ linux-3.5.0/arch/arm/include/asm/signal.h @@ -127,6 +127,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-3.5.0.orig/arch/arm/include/asm/dma-mapping.h +++ linux-3.5.0/arch/arm/include/asm/dma-mapping.h @@ -13,6 +13,7 @@ #define DMA_ERROR_CODE (~0) extern struct dma_map_ops arm_dma_ops; +extern struct dma_map_ops arm_coherent_dma_ops; static inline struct dma_map_ops *get_dma_ops(struct device *dev) { --- linux-3.5.0.orig/arch/arm/include/asm/div64.h +++ linux-3.5.0/arch/arm/include/asm/div64.h @@ -73,6 +73,7 @@ #define do_div(n, base) \ ({ \ unsigned int __r, __b = (base); \ + asm("" : "+r" (__b)); \ if (!__builtin_constant_p(__b) || __b == 0 || \ (__LINUX_ARM_ARCH__ < 4 && (__b & (__b - 1)) != 0)) { \ /* non-constant divisor (or zero): slow path */ \ --- linux-3.5.0.orig/arch/arm/include/asm/cacheflush.h +++ linux-3.5.0/arch/arm/include/asm/cacheflush.h @@ -215,7 +215,9 @@ static inline void vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), vma->vm_flags); } @@ -223,7 +225,9 @@ static inline void vivt_flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { unsigned long addr = user_addr & PAGE_MASK; __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); } @@ -301,9 +305,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-3.5.0.orig/arch/arm/include/asm/assembler.h +++ linux-3.5.0/arch/arm/include/asm/assembler.h @@ -320,4 +320,12 @@ .size \name , . - \name .endm + .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req +#ifndef CONFIG_CPU_USE_DOMAINS + adds \tmp, \addr, #\size - 1 + sbcccs \tmp, \tmp, \limit + bcs \bad +#endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */ --- linux-3.5.0.orig/arch/arm/include/asm/syscall.h +++ linux-3.5.0/arch/arm/include/asm/syscall.h @@ -8,6 +8,7 @@ #define _ASM_ARM_SYSCALL_H #include +#include extern const unsigned long sys_call_table[]; --- linux-3.5.0.orig/arch/arm/include/asm/mutex.h +++ linux-3.5.0/arch/arm/include/asm/mutex.h @@ -7,121 +7,10 @@ */ #ifndef _ASM_MUTEX_H #define _ASM_MUTEX_H - -#if __LINUX_ARM_ARCH__ < 6 -/* On pre-ARMv6 hardware the swp based implementation is the most efficient. */ -# include -#else - /* - * Attempting to lock a mutex on ARMv6+ can be done with a bastardized - * atomic decrement (it is not a reliable atomic decrement but it satisfies - * the defined semantics for our purpose, while being smaller and faster - * than a real atomic decrement or atomic swap. The idea is to attempt - * decrementing the lock value only once. If once decremented it isn't zero, - * or if its store-back fails due to a dispute on the exclusive store, we - * simply bail out immediately through the slow path where the lock will be - * reattempted until it succeeds. + * On pre-ARMv6 hardware this results in a swp-based implementation, + * which is the most efficient. For ARMv6+, we emit a pair of exclusive + * accesses instead. */ -static inline void -__mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - fail_fn(count); -} - -static inline int -__mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - __res = fail_fn(count); - return __res; -} - -/* - * Same trick is used for the unlock fast path. However the original value, - * rather than the result, is used to test for success in order to have - * better generated assembly. - */ -static inline void -__mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - __asm__ ( - - "ldrex %0, [%3] \n\t" - "add %1, %0, #1 \n\t" - "strex %2, %1, [%3] " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __orig |= __ex_flag; - if (unlikely(__orig != 0)) - fail_fn(count); -} - -/* - * If the unlock was done on a contended lock, or if the unlock simply fails - * then the mutex remains locked. - */ -#define __mutex_slowpath_needs_to_unlock() 1 - -/* - * For __mutex_fastpath_trylock we use another construct which could be - * described as a "single value cmpxchg". - * - * This provides the needed trylock semantics like cmpxchg would, but it is - * lighter and less generic than a true cmpxchg implementation. - */ -static inline int -__mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - __asm__ ( - - "1: ldrex %0, [%3] \n\t" - "subs %1, %0, #1 \n\t" - "strexeq %2, %1, [%3] \n\t" - "movlt %0, #0 \n\t" - "cmpeq %2, #0 \n\t" - "bgt 1b " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&count->counter) - : "cc", "memory" ); - - return __orig; -} - -#endif +#include #endif --- linux-3.5.0.orig/arch/arm/include/asm/cmpxchg.h +++ linux-3.5.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-3.5.0.orig/arch/arm/include/asm/uaccess.h +++ linux-3.5.0/arch/arm/include/asm/uaccess.h @@ -101,28 +101,39 @@ extern int __get_user_2(void *); extern int __get_user_4(void *); -#define __get_user_x(__r2,__p,__e,__s,__i...) \ +#define __GUP_CLOBBER_1 "lr", "cc" +#ifdef CONFIG_CPU_USE_DOMAINS +#define __GUP_CLOBBER_2 "ip", "lr", "cc" +#else +#define __GUP_CLOBBER_2 "lr", "cc" +#endif +#define __GUP_CLOBBER_4 "lr", "cc" + +#define __get_user_x(__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%1", "r2") \ + __asmeq("%3", "r1") \ "bl __get_user_" #__s \ : "=&r" (__e), "=r" (__r2) \ - : "0" (__p) \ - : __i, "cc") + : "0" (__p), "r" (__l) \ + : __GUP_CLOBBER_##__s) #define get_user(x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ register unsigned long __r2 asm("r2"); \ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __get_user_x(__r2, __p, __e, 1, "lr"); \ - break; \ + __get_user_x(__r2, __p, __e, __l, 1); \ + break; \ case 2: \ - __get_user_x(__r2, __p, __e, 2, "r3", "lr"); \ + __get_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __get_user_x(__r2, __p, __e, 4, "lr"); \ + __get_user_x(__r2, __p, __e, __l, 4); \ break; \ default: __e = __get_user_bad(); break; \ } \ @@ -135,31 +146,34 @@ extern int __put_user_4(void *, unsigned int); extern int __put_user_8(void *, unsigned long long); -#define __put_user_x(__r2,__p,__e,__s) \ +#define __put_user_x(__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%2", "r2") \ + __asmeq("%3", "r1") \ "bl __put_user_" #__s \ : "=&r" (__e) \ - : "0" (__p), "r" (__r2) \ + : "0" (__p), "r" (__r2), "r" (__l) \ : "ip", "lr", "cc") #define put_user(x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __r2 asm("r2") = (x); \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __put_user_x(__r2, __p, __e, 1); \ + __put_user_x(__r2, __p, __e, __l, 1); \ break; \ case 2: \ - __put_user_x(__r2, __p, __e, 2); \ + __put_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __put_user_x(__r2, __p, __e, 4); \ + __put_user_x(__r2, __p, __e, __l, 4); \ break; \ case 8: \ - __put_user_x(__r2, __p, __e, 8); \ + __put_user_x(__r2, __p, __e, __l, 8); \ break; \ default: __e = __put_user_bad(); break; \ } \ --- linux-3.5.0.orig/arch/arm/include/asm/hardware/iop3xx.h +++ linux-3.5.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-3.5.0.orig/arch/arm/mach-s3c24xx/pm-h1940.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/pm-h1940.S @@ -30,4 +30,4 @@ h1940_pm_return: mov r0, #S3C2410_PA_GPIO - ldr pc, [ r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO ] + ldr pc, [r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO] --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2410.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/sleep-s3c2410.S @@ -45,9 +45,9 @@ ldr r4, =S3C2410_REFRESH ldr r5, =S3C24XX_MISCCR ldr r6, =S3C2410_CLKCON - ldr r7, [ r4 ] @ get REFRESH (and ensure in TLB) - ldr r8, [ r5 ] @ get MISCCR (and ensure in TLB) - ldr r9, [ r6 ] @ get CLKCON (and ensure in TLB) + ldr r7, [r4] @ get REFRESH (and ensure in TLB) + ldr r8, [r5] @ get MISCCR (and ensure in TLB) + ldr r9, [r6] @ get CLKCON (and ensure in TLB) orr r7, r7, #S3C2410_REFRESH_SELF @ SDRAM sleep command orr r8, r8, #S3C2410_MISCCR_SDSLEEP @ SDRAM power-down signals @@ -61,8 +61,8 @@ @@ align next bit of code to cache line .align 5 s3c2410_do_sleep: - streq r7, [ r4 ] @ SDRAM sleep command - streq r8, [ r5 ] @ SDRAM power-down config - streq r9, [ r6 ] @ CPU sleep + streq r7, [r4] @ SDRAM sleep command + streq r8, [r5] @ SDRAM power-down config + streq r9, [r6] @ CPU sleep 1: beq 1b mov pc, r14 --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2412.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/sleep-s3c2412.S @@ -57,12 +57,12 @@ * retry, as simply returning causes the system to lock. */ - ldrne r9, [ r1 ] - strne r9, [ r1 ] - ldrne r9, [ r2 ] - strne r9, [ r2 ] - ldrne r9, [ r3 ] - strne r9, [ r3 ] + ldrne r9, [r1] + strne r9, [r1] + ldrne r9, [r2] + strne r9, [r2] + ldrne r9, [r3] + strne r9, [r3] bne s3c2412_sleep_enter1 mov pc, r14 --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/dma.h +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/dma.h @@ -24,7 +24,8 @@ */ enum dma_ch { - DMACH_XD0, + DMACH_DT_PROP = -1, /* not yet supported, do not use */ + DMACH_XD0 = 0, DMACH_XD1, DMACH_SDI, DMACH_SPI0, --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/entry-macro.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/entry-macro.S @@ -31,10 +31,10 @@ @@ try the interrupt offset register, since it is there - ldr \irqstat, [ \base, #INTPND ] + ldr \irqstat, [\base, #INTPND ] teq \irqstat, #0 beq 1002f - ldr \irqnr, [ \base, #INTOFFSET ] + ldr \irqnr, [\base, #INTOFFSET ] mov \tmp, #1 tst \irqstat, \tmp, lsl \irqnr bne 1001f --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/debug-macro.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/debug-macro.S @@ -40,17 +40,17 @@ addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) bic \rd, \rd, #0xff000 - ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] + ldr \rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)] and \rd, \rd, #0x00ff0000 teq \rd, #0x00440000 @ is it 2440? 1004: - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] moveq \rd, \rd, lsr #SHIFT_2440TXF tst \rd, #S3C2410_UFSTAT_TXFULL .endm .macro fifo_full_s3c2410 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S3C2410_UFSTAT_TXFULL .endm @@ -68,18 +68,18 @@ addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) bic \rd, \rd, #0xff000 - ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] + ldr \rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)] and \rd, \rd, #0x00ff0000 teq \rd, #0x00440000 @ is it 2440? 10000: - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] andne \rd, \rd, #S3C2410_UFSTAT_TXMASK andeq \rd, \rd, #S3C2440_UFSTAT_TXMASK .endm .macro fifo_level_s3c2410 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S3C2410_UFSTAT_TXMASK .endm --- linux-3.5.0.orig/arch/arm/mach-u300/include/mach/u300-regs.h +++ linux-3.5.0/arch/arm/mach-u300/include/mach/u300-regs.h @@ -101,7 +101,7 @@ #ifdef CONFIG_MACH_U300_BS335 /* 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) #endif /* --- linux-3.5.0.orig/arch/arm/mach-imx/clk-imx31.c +++ linux-3.5.0/arch/arm/mach-imx/clk-imx31.c @@ -129,7 +129,7 @@ clk_register_clkdev(clk[nfc], NULL, "mxc_nand.0"); clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); - clk_register_clkdev(clk[kpp_gate], "kpp", NULL); + clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.0"); clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.0"); clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); --- linux-3.5.0.orig/arch/arm/mach-imx/headsmp.S +++ linux-3.5.0/arch/arm/mach-imx/headsmp.S @@ -0,0 +1,106 @@ +/* + * Copyright 2011 Freescale Semiconductor, Inc. + * Copyright 2011 Linaro Ltd. + * + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +#include +#include +#include +#include + + .section ".text.head", "ax" + +/* + * The secondary kernel init calls v7_flush_dcache_all before it enables + * the L1; however, the L1 comes out of reset in an undefined state, so + * the clean + invalidate performed by v7_flush_dcache_all causes a bunch + * of cache lines with uninitialized data and uninitialized tags to get + * written out to memory, which does really unpleasant things to the main + * processor. We fix this by performing an invalidate, rather than a + * clean + invalidate, before jumping into the kernel. + * + * This funciton is cloned from arch/arm/mach-tegra/headsmp.S, and needs + * to be called for both secondary cores startup and primary core resume + * procedures. Ideally, it should be moved into arch/arm/mm/cache-v7.S. + */ +ENTRY(v7_invalidate_l1) + mov r0, #0 + mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache + mcr p15, 2, r0, c0, c0, 0 + mrc p15, 1, r0, c0, c0, 0 + + ldr r1, =0x7fff + and r2, r1, r0, lsr #13 + + ldr r1, =0x3ff + + and r3, r1, r0, lsr #3 @ NumWays - 1 + add r2, r2, #1 @ NumSets + + and r0, r0, #0x7 + add r0, r0, #4 @ SetShift + + clz r1, r3 @ WayShift + add r4, r3, #1 @ NumWays +1: sub r2, r2, #1 @ NumSets-- + mov r3, r4 @ Temp = NumWays +2: subs r3, r3, #1 @ Temp-- + mov r5, r3, lsl r1 + mov r6, r2, lsl r0 + orr r5, r5, r6 @ Reg = (Temp< @@ -27,33 +28,39 @@ * Note also that it is intended that __get_user_bad is not global. */ #include +#include #include #include ENTRY(__get_user_1) + check_uaccess r0, 1, r1, r2, __get_user_bad 1: TUSER(ldrb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__get_user_1) ENTRY(__get_user_2) -#ifdef CONFIG_THUMB2_KERNEL -2: TUSER(ldrb) r2, [r0] -3: TUSER(ldrb) r3, [r0, #1] + check_uaccess r0, 2, r1, r2, __get_user_bad +#ifdef CONFIG_CPU_USE_DOMAINS +rb .req ip +2: ldrbt r2, [r0], #1 +3: ldrbt rb, [r0], #0 #else -2: TUSER(ldrb) r2, [r0], #1 -3: TUSER(ldrb) r3, [r0] +rb .req r0 +2: ldrb r2, [r0] +3: ldrb rb, [r0, #1] #endif #ifndef __ARMEB__ - orr r2, r2, r3, lsl #8 + orr r2, r2, rb, lsl #8 #else - orr r2, r3, r2, lsl #8 + orr r2, rb, r2, lsl #8 #endif mov r0, #0 mov pc, lr ENDPROC(__get_user_2) ENTRY(__get_user_4) + check_uaccess r0, 4, r1, r2, __get_user_bad 4: TUSER(ldr) r2, [r0] mov r0, #0 mov pc, lr --- linux-3.5.0.orig/arch/arm/lib/putuser.S +++ linux-3.5.0/arch/arm/lib/putuser.S @@ -16,6 +16,7 @@ * __put_user_X * * Inputs: r0 contains the address + * r1 contains the address limit, which must be preserved * r2, r3 contains the value * Outputs: r0 is the error code * lr corrupted @@ -27,16 +28,19 @@ * Note also that it is intended that __put_user_bad is not global. */ #include +#include #include #include ENTRY(__put_user_1) + check_uaccess r0, 1, r1, ip, __put_user_bad 1: TUSER(strb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_1) ENTRY(__put_user_2) + check_uaccess r0, 2, r1, ip, __put_user_bad mov ip, r2, lsr #8 #ifdef CONFIG_THUMB2_KERNEL #ifndef __ARMEB__ @@ -60,12 +64,14 @@ ENDPROC(__put_user_2) ENTRY(__put_user_4) + check_uaccess r0, 4, r1, ip, __put_user_bad 4: TUSER(str) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_4) ENTRY(__put_user_8) + check_uaccess r0, 8, r1, ip, __put_user_bad #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(str) r2, [r0] 6: TUSER(str) r3, [r0, #4] --- linux-3.5.0.orig/arch/arm/mach-pxa/pxa27x.c +++ linux-3.5.0/arch/arm/mach-pxa/pxa27x.c @@ -47,9 +47,9 @@ EXPORT_SYMBOL(pxa27x_clear_otgph); static unsigned long ac97_reset_config[] = { - GPIO113_GPIO, + GPIO113_AC97_nRESET_GPIO_HIGH, GPIO113_AC97_nRESET, - GPIO95_GPIO, + GPIO95_AC97_nRESET_GPIO_HIGH, GPIO95_AC97_nRESET, }; --- linux-3.5.0.orig/arch/arm/mach-pxa/raumfeld.c +++ linux-3.5.0/arch/arm/mach-pxa/raumfeld.c @@ -953,12 +953,12 @@ static struct eeti_ts_platform_data eeti_ts_pdata = { .irq_active_high = 1, + .irq_gpio = GPIO_TOUCH_IRQ, }; static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = { .type = "eeti_ts", .addr = 0x0a, - .irq = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ), .platform_data = &eeti_ts_pdata, }; --- linux-3.5.0.orig/arch/arm/mach-pxa/smemc.c +++ linux-3.5.0/arch/arm/mach-pxa/smemc.c @@ -40,6 +40,8 @@ __raw_writel(csadrcfg[1], CSADRCFG1); __raw_writel(csadrcfg[2], CSADRCFG2); __raw_writel(csadrcfg[3], CSADRCFG3); + /* CSMSADRCFG wakes up in its default state (0), so we need to set it */ + __raw_writel(0x2, CSMSADRCFG); } static struct syscore_ops smemc_syscore_ops = { @@ -49,8 +51,19 @@ static int __init smemc_init(void) { - if (cpu_is_pxa3xx()) + if (cpu_is_pxa3xx()) { + /* + * The only documentation we have on the + * Chip Select Configuration Register (CSMSADRCFG) is that + * it must be programmed to 0x2. + * Moreover, in the bit definitions, the second bit + * (CSMSADRCFG[1]) is called "SETALWAYS". + * Other bits are reserved in this register. + */ + __raw_writel(0x2, CSMSADRCFG); + register_syscore_ops(&smemc_syscore_ops); + } return 0; } --- linux-3.5.0.orig/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +++ linux-3.5.0/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h @@ -463,6 +463,9 @@ GPIO76_LCD_PCLK, \ GPIO77_LCD_BIAS +/* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */ +#define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT) +#define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT) extern int keypad_set_wake(unsigned int on); #endif /* __ASM_ARCH_MFP_PXA27X_H */ --- linux-3.5.0.orig/arch/arm/mach-pxa/include/mach/smemc.h +++ linux-3.5.0/arch/arm/mach-pxa/include/mach/smemc.h @@ -37,6 +37,7 @@ #define CSADRCFG1 (SMEMC_VIRT + 0x84) /* Address Configuration Register for CS1 */ #define CSADRCFG2 (SMEMC_VIRT + 0x88) /* Address Configuration Register for CS2 */ #define CSADRCFG3 (SMEMC_VIRT + 0x8C) /* Address Configuration Register for CS3 */ +#define CSMSADRCFG (SMEMC_VIRT + 0xA0) /* Chip Select Configuration Register */ /* * More handy macros for PCMCIA --- linux-3.5.0.orig/arch/arm/vfp/vfpmodule.c +++ linux-3.5.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; /* @@ -457,10 +457,16 @@ /* disable, just in case */ fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN); + } else if (vfp_current_hw_state[ti->cpu]) { +#ifndef CONFIG_SMP + fmxr(FPEXC, fpexc | FPEXC_EN); + vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc); + fmxr(FPEXC, fpexc); +#endif } /* clear any information we had about last context state */ - memset(vfp_current_hw_state, 0, sizeof(vfp_current_hw_state)); + vfp_current_hw_state[ti->cpu] = NULL; return 0; } @@ -695,11 +701,14 @@ elf_hwcap |= HWCAP_VFPv3; /* - * Check for VFPv3 D16. CPUs in this configuration - * only have 16 x 64bit registers. + * Check for VFPv3 D16 and VFPv4 D16. CPUs in + * this configuration only have 16 x 64bit + * registers. */ if (((fmrx(MVFR0) & MVFR0_A_SIMD_MASK)) == 1) - elf_hwcap |= HWCAP_VFPv3D16; + elf_hwcap |= HWCAP_VFPv3D16; /* also v4-D16 */ + else + elf_hwcap |= HWCAP_VFPD32; } #endif /* @@ -713,8 +722,10 @@ if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100) elf_hwcap |= HWCAP_NEON; #endif +#ifdef CONFIG_VFPv3 if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000) elf_hwcap |= HWCAP_VFPv4; +#endif } } return 0; --- linux-3.5.0.orig/arch/arm/vfp/entry.S +++ linux-3.5.0/arch/arm/vfp/entry.S @@ -7,20 +7,22 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * - * Basic entry code, called from the kernel's undefined instruction trap. - * r0 = faulted instruction - * r5 = faulted PC+4 - * r9 = successful return - * r10 = thread_info structure - * lr = failure return */ #include #include #include "../kernel/entry-header.S" +@ VFP entry point. +@ +@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) +@ r2 = PC value to resume execution after successful emulation +@ r9 = normal "successful" return address +@ r10 = this threads thread_info structure +@ lr = unrecognised instruction return address +@ IRQs disabled. +@ ENTRY(do_vfp) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT ldr r4, [r10, #TI_PREEMPT] @ get preempt count add r11, r4, #1 @ increment it str r11, [r10, #TI_PREEMPT] @@ -33,7 +35,7 @@ ENDPROC(do_vfp) ENTRY(vfp_null_entry) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it @@ -51,7 +53,7 @@ __INIT ENTRY(vfp_testing_entry) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it --- linux-3.5.0.orig/arch/arm/vfp/vfphw.S +++ linux-3.5.0/arch/arm/vfp/vfphw.S @@ -61,13 +61,13 @@ @ VFP hardware support entry point. @ -@ r0 = faulted instruction -@ r2 = faulted PC+4 -@ r9 = successful return +@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) +@ r2 = PC value to resume execution after successful emulation +@ r9 = normal "successful" return address @ r10 = vfp_state union @ r11 = CPU number -@ lr = failure return - +@ lr = unrecognised instruction return address +@ IRQs enabled. ENTRY(vfp_support_entry) DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10 @@ -161,10 +161,13 @@ @ exception before retrying branch @ out before setting an FPEXC that @ stops us reading stuff - VFPFMXR FPEXC, r1 @ restore FPEXC last - sub r2, r2, #4 - str r2, [sp, #S_PC] @ retry the instruction -#ifdef CONFIG_PREEMPT + VFPFMXR FPEXC, r1 @ Restore FPEXC last + sub r2, r2, #4 @ Retry current instruction - if Thumb + str r2, [sp, #S_PC] @ mode it's two 16-bit instructions, + @ else it's one 32-bit instruction, so + @ always subtract 4 from the following + @ instruction address. +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it @@ -188,7 +191,7 @@ @ not recognised by VFP DBGSTR "not VFP" -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it --- linux-3.5.0.orig/arch/arm/plat-omap/dmtimer.c +++ linux-3.5.0/arch/arm/plat-omap/dmtimer.c @@ -236,7 +236,7 @@ void omap_dm_timer_disable(struct omap_dm_timer *timer) { - pm_runtime_put(&timer->pdev->dev); + pm_runtime_put_sync(&timer->pdev->dev); } EXPORT_SYMBOL_GPL(omap_dm_timer_disable); --- linux-3.5.0.orig/arch/arm/plat-omap/counter_32k.c +++ linux-3.5.0/arch/arm/plat-omap/counter_32k.c @@ -52,22 +52,29 @@ * nsecs and adds to a monotonically increasing timespec. */ static struct timespec persistent_ts; -static cycles_t cycles, last_cycles; +static cycles_t cycles; static unsigned int persistent_mult, persistent_shift; +static DEFINE_SPINLOCK(read_persistent_clock_lock); + static void omap_read_persistent_clock(struct timespec *ts) { unsigned long long nsecs; - cycles_t delta; - struct timespec *tsp = &persistent_ts; + cycles_t last_cycles; + unsigned long flags; + + spin_lock_irqsave(&read_persistent_clock_lock, flags); last_cycles = cycles; cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; - delta = cycles - last_cycles; - nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); + nsecs = clocksource_cyc2ns(cycles - last_cycles, + persistent_mult, persistent_shift); + + timespec_add_ns(&persistent_ts, nsecs); + + *ts = persistent_ts; - timespec_add_ns(tsp, nsecs); - *ts = *tsp; + spin_unlock_irqrestore(&read_persistent_clock_lock, flags); } /** --- linux-3.5.0.orig/arch/arm/mach-kirkwood/ts219-setup.c +++ linux-3.5.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-3.5.0.orig/arch/arm/mach-kirkwood/pcie.c +++ linux-3.5.0/arch/arm/mach-kirkwood/pcie.c @@ -225,14 +225,19 @@ return 1; } +/* + * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it + * is operating as a root complex this needs to be switched to + * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on + * the device. Decoding setup is handled by the orion code. + */ static void __devinit rc_pci_fixup(struct pci_dev *dev) { - /* - * Prevent enumeration of root complex. - */ if (dev->bus->parent == NULL && dev->devfn == 0) { int i; + dev->class &= 0xff; + dev->class |= PCI_CLASS_BRIDGE_HOST << 8; for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { dev->resource[i].start = 0; dev->resource[i].end = 0; --- linux-3.5.0.orig/arch/arm/plat-s3c24xx/dma.c +++ linux-3.5.0/arch/arm/plat-s3c24xx/dma.c @@ -430,7 +430,7 @@ * when necessary. */ -int s3c2410_dma_enqueue(unsigned int channel, void *id, +int s3c2410_dma_enqueue(enum dma_ch channel, void *id, dma_addr_t data, int size) { struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); --- linux-3.5.0.orig/arch/arm/plat-samsung/include/plat/debug-macro.S +++ linux-3.5.0/arch/arm/plat-samsung/include/plat/debug-macro.S @@ -14,12 +14,12 @@ /* The S5PV210/S5PC110 implementations are as belows. */ .macro fifo_level_s5pv210 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S5PV210_UFSTAT_TXMASK .endm .macro fifo_full_s5pv210 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S5PV210_UFSTAT_TXFULL .endm @@ -27,7 +27,7 @@ * most widely re-used */ .macro fifo_level_s3c2440 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S3C2440_UFSTAT_TXMASK .endm @@ -36,7 +36,7 @@ #endif .macro fifo_full_s3c2440 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S3C2440_UFSTAT_TXFULL .endm @@ -45,11 +45,11 @@ #endif .macro senduart,rd,rx - strb \rd, [\rx, # S3C2410_UTXH ] + strb \rd, [\rx, # S3C2410_UTXH] .endm .macro busyuart, rd, rx - ldr \rd, [ \rx, # S3C2410_UFCON ] + ldr \rd, [\rx, # S3C2410_UFCON] tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? beq 1001f @ @ FIFO enabled... @@ -60,7 +60,7 @@ 1001: @ busy waiting for non fifo - ldr \rd, [ \rx, # S3C2410_UTRSTAT ] + ldr \rd, [\rx, # S3C2410_UTRSTAT] tst \rd, #S3C2410_UTRSTAT_TXFE beq 1001b @@ -68,7 +68,7 @@ .endm .macro waituart,rd,rx - ldr \rd, [ \rx, # S3C2410_UFCON ] + ldr \rd, [\rx, # S3C2410_UFCON] tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? beq 1001f @ @ FIFO enabled... @@ -79,7 +79,7 @@ b 1002f 1001: @ idle waiting for non fifo - ldr \rd, [ \rx, # S3C2410_UTRSTAT ] + ldr \rd, [\rx, # S3C2410_UTRSTAT] tst \rd, #S3C2410_UTRSTAT_TXFE beq 1001b --- linux-3.5.0.orig/arch/arm/configs/at91sam9g45_defconfig +++ linux-3.5.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-3.5.0.orig/arch/arm/configs/mxs_defconfig +++ linux-3.5.0/arch/arm/configs/mxs_defconfig @@ -33,7 +33,6 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT_VOLUNTARY=y CONFIG_AEABI=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 CONFIG_AUTO_ZRELADDR=y CONFIG_FPE_NWFPE=y CONFIG_NET=y --- linux-3.5.0.orig/arch/arm/boot/compressed/head-sa1100.S +++ linux-3.5.0/arch/arm/boot/compressed/head-sa1100.S @@ -11,6 +11,7 @@ #include .section ".start", "ax" + .arch armv4 __SA1100_start: --- linux-3.5.0.orig/arch/arm/boot/compressed/Makefile +++ linux-3.5.0/arch/arm/boot/compressed/Makefile @@ -126,7 +126,7 @@ endif ccflags-y := -fpic -fno-builtin -I$(obj) -asflags-y := -Wa,-march=all +asflags-y := # Supply kernel BSS size to the decompressor via a linker symbol. KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ --- linux-3.5.0.orig/arch/arm/boot/compressed/head-shark.S +++ linux-3.5.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-3.5.0.orig/arch/arm/boot/compressed/head.S +++ linux-3.5.0/arch/arm/boot/compressed/head.S @@ -10,6 +10,7 @@ */ #include + .arch armv7-a /* * Debugging stuff * @@ -653,16 +654,21 @@ mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs #endif mrc p15, 0, r0, c1, c0, 0 @ read control reg + bic r0, r0, #1 << 28 @ clear SCTLR.TRE orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement orr r0, r0, #0x003c @ write buffer #ifdef CONFIG_MMU #ifdef CONFIG_CPU_ENDIAN_BE8 orr r0, r0, #1 << 25 @ big-endian page tables #endif + mrcne p15, 0, r6, c2, c0, 2 @ read ttb control reg orrne r0, r0, #1 @ MMU enabled movne r1, #0xfffffffd @ domain 0 = client + bic r6, r6, #1 << 31 @ 32-bit translation system + bic r6, r6, #3 << 0 @ use only ttbr0 mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer mcrne p15, 0, r1, c3, c0, 0 @ load domain access control + mcrne p15, 0, r6, c2, c0, 2 @ load ttb control #endif mcr p15, 0, r0, c7, c5, 4 @ ISB mcr p15, 0, r0, c1, c0, 0 @ load control register --- linux-3.5.0.orig/arch/arm/boot/dts/tegra-trimslice.dts +++ linux-3.5.0/arch/arm/boot/dts/tegra-trimslice.dts @@ -276,9 +276,11 @@ usb@c5000000 { status = "okay"; + nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */ }; usb@c5004000 { + status = "okay"; nvidia,phy-reset-gpio = <&gpio 168 0>; /* gpio PV0 */ }; --- linux-3.5.0.orig/arch/arm/boot/dts/tegra30.dtsi +++ linux-3.5.0/arch/arm/boot/dts/tegra30.dtsi @@ -73,8 +73,8 @@ pinmux: pinmux { compatible = "nvidia,tegra30-pinmux"; - reg = <0x70000868 0xd0 /* Pad control registers */ - 0x70003000 0x3e0>; /* Mux registers */ + reg = <0x70000868 0xd4 /* Pad control registers */ + 0x70003000 0x3e4>; /* Mux registers */ }; serial@70006000 { --- linux-3.5.0.orig/arch/arm/boot/dts/highbank.dts +++ linux-3.5.0/arch/arm/boot/dts/highbank.dts @@ -1,5 +1,5 @@ /* - * Copyright 2011 Calxeda, Inc. + * Copyright 2011-2012 Calxeda, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -24,6 +24,7 @@ compatible = "calxeda,highbank"; #address-cells = <1>; #size-cells = <1>; + clock-ranges; cpus { #address-cells = <1>; @@ -33,24 +34,32 @@ compatible = "arm,cortex-a9"; reg = <0>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@1 { compatible = "arm,cortex-a9"; reg = <1>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@2 { compatible = "arm,cortex-a9"; reg = <2>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@3 { compatible = "arm,cortex-a9"; reg = <3>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; }; @@ -75,12 +84,14 @@ compatible = "arm,cortex-a9-twd-timer"; reg = <0xfff10600 0x20>; interrupts = <1 13 0xf01>; + clocks = <&a9periphclk>; }; watchdog@fff10620 { compatible = "arm,cortex-a9-twd-wdt"; reg = <0xfff10620 0x20>; interrupts = <1 14 0xf01>; + clocks = <&a9periphclk>; }; intc: interrupt-controller@fff11000 { @@ -110,18 +121,31 @@ compatible = "calxeda,hb-ahci"; reg = <0xffe08000 0x10000>; interrupts = <0 83 4>; + dma-coherent; + calxeda,port-phys = <&combophy5 0 &combophy0 0 + &combophy0 1 &combophy0 2 + &combophy0 3>; }; sdhci@ffe0e000 { compatible = "calxeda,hb-sdhci"; reg = <0xffe0e000 0x1000>; interrupts = <0 90 4>; + clocks = <&eclk>; + }; + + memory-controller@fff00000 { + compatible = "calxeda,hb-ddr-ctrl"; + reg = <0xfff00000 0x1000>; + interrupts = <0 91 4>; }; ipc@fff20000 { compatible = "arm,pl320", "arm,primecell"; reg = <0xfff20000 0x1000>; interrupts = <0 7 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpioe: gpio@fff30000 { @@ -130,6 +154,8 @@ gpio-controller; reg = <0xfff30000 0x1000>; interrupts = <0 14 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpiof: gpio@fff31000 { @@ -138,6 +164,8 @@ gpio-controller; reg = <0xfff31000 0x1000>; interrupts = <0 15 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpiog: gpio@fff32000 { @@ -146,6 +174,8 @@ gpio-controller; reg = <0xfff32000 0x1000>; interrupts = <0 16 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpioh: gpio@fff33000 { @@ -154,24 +184,32 @@ gpio-controller; reg = <0xfff33000 0x1000>; interrupts = <0 17 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; timer { compatible = "arm,sp804", "arm,primecell"; reg = <0xfff34000 0x1000>; interrupts = <0 18 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; rtc@fff35000 { compatible = "arm,pl031", "arm,primecell"; reg = <0xfff35000 0x1000>; interrupts = <0 19 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; serial@fff36000 { compatible = "arm,pl011", "arm,primecell"; reg = <0xfff36000 0x1000>; interrupts = <0 20 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; smic@fff3a000 { @@ -186,12 +224,79 @@ sregs@fff3c000 { compatible = "calxeda,hb-sregs"; reg = <0xfff3c000 0x1000>; + + clocks { + #address-cells = <1>; + #size-cells = <0>; + + osc: oscillator { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <33333000>; + }; + + ddrpll: ddrpll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x108>; + }; + + a9pll: a9pll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x100>; + }; + + a9periphclk: a9periphclk { + #clock-cells = <0>; + compatible = "calxeda,hb-a9periph-clock"; + clocks = <&a9pll>; + reg = <0x104>; + }; + + a9bclk: a9bclk { + #clock-cells = <0>; + compatible = "calxeda,hb-a9bus-clock"; + clocks = <&a9pll>; + reg = <0x104>; + }; + + emmcpll: emmcpll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x10C>; + }; + + eclk: eclk { + #clock-cells = <0>; + compatible = "calxeda,hb-emmc-clock"; + clocks = <&emmcpll>; + reg = <0x114>; + }; + + pclk: pclk { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <150000000>; + }; + }; + }; + + sregs@fff3c200 { + compatible = "calxeda,hb-sregs-l2-ecc"; + reg = <0xfff3c200 0x100>; + interrupts = <0 71 4 0 72 4>; }; dma@fff3d000 { compatible = "arm,pl330", "arm,primecell"; reg = <0xfff3d000 0x1000>; interrupts = <0 92 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; ethernet@fff50000 { @@ -205,5 +310,19 @@ reg = <0xfff51000 0x1000>; interrupts = <0 80 4 0 81 4 0 82 4>; }; + + combophy0: combo-phy@fff58000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff58000 0x1000>; + phydev = <5>; + }; + + combophy5: combo-phy@fff5d000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff5d000 0x1000>; + phydev = <31>; + }; }; }; --- linux-3.5.0.orig/arch/arm/boot/dts/imx53-ard.dts +++ linux-3.5.0/arch/arm/boot/dts/imx53-ard.dts @@ -66,10 +66,30 @@ interrupt-parent = <&gpio2>; interrupts = <31>; reg-io-width = <4>; + /* + * VDD33A and VDDVARIO of LAN9220 are supplied by + * SW4_3V3 of LTC3589. Before the regulator driver + * for this PMIC is available, we use a fixed dummy + * 3V3 regulator to get LAN9220 driver probing work. + */ + vdd33a-supply = <®_3p3v>; + vddvario-supply = <®_3p3v>; smsc,irq-push-pull; }; }; + regulators { + compatible = "simple-bus"; + + reg_3p3v: 3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + }; + gpio-keys { compatible = "gpio-keys"; --- linux-3.5.0.orig/arch/arm/mach-highbank/system.c +++ linux-3.5.0/arch/arm/mach-highbank/system.c @@ -28,6 +28,7 @@ hignbank_set_pwr_soft_reset(); scu_power_mode(scu_base_addr, SCU_PM_POWEROFF); - cpu_do_idle(); + while (1) + cpu_do_idle(); } --- linux-3.5.0.orig/arch/arm/mach-highbank/Makefile +++ linux-3.5.0/arch/arm/mach-highbank/Makefile @@ -1,4 +1,4 @@ -obj-y := clock.o highbank.o system.o smc.o +obj-y := highbank.o system.o smc.o plus_sec := $(call as-instr,.arch_extension sec,+sec) AFLAGS_smc.o :=-Wa,-march=armv7-a$(plus_sec) @@ -7,3 +7,5 @@ obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_PM_SLEEP) += pm.o + +obj-y += pl320-ipc.o --- linux-3.5.0.orig/arch/arm/mach-highbank/pl320-ipc.c +++ linux-3.5.0/arch/arm/mach-highbank/pl320-ipc.c @@ -0,0 +1,308 @@ +/* + * Copyright 2010 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define IPCMxSOURCE(m) ((m) * 0x40) +#define IPCMxDSET(m) (((m) * 0x40) + 0x004) +#define IPCMxDCLEAR(m) (((m) * 0x40) + 0x008) +#define IPCMxDSTATUS(m) (((m) * 0x40) + 0x00C) +#define IPCMxMODE(m) (((m) * 0x40) + 0x010) +#define IPCMxMSET(m) (((m) * 0x40) + 0x014) +#define IPCMxMCLEAR(m) (((m) * 0x40) + 0x018) +#define IPCMxMSTATUS(m) (((m) * 0x40) + 0x01C) +#define IPCMxSEND(m) (((m) * 0x40) + 0x020) +#define IPCMxDR(m, dr) (((m) * 0x40) + ((dr) * 4) + 0x024) + +#define IPCMMIS(irq) (((irq) * 8) + 0x800) +#define IPCMRIS(irq) (((irq) * 8) + 0x804) + +#define MBOX_MASK(n) (1 << (n)) +#define IPC_FAST_MBOX 0 +#define IPC_SLOW_MBOX 1 +#define IPC_RX_MBOX 2 + +#define CHAN_MASK(n) (1 << (n)) +#define A9_SOURCE 1 +#define M3_SOURCE 0 + +static void __iomem *ipc_base; +static int ipc_irq; +static DEFINE_SPINLOCK(ipc_m0_lock); +static DEFINE_MUTEX(ipc_m1_lock); +static DECLARE_COMPLETION(ipc_completion); +static ATOMIC_NOTIFIER_HEAD(ipc_notifier); + +static inline void set_destination(int source, int mbox) +{ + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDSET(mbox)); + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMSET(mbox)); +} + +static inline void clear_destination(int source, int mbox) +{ + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDCLEAR(mbox)); + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMCLEAR(mbox)); +} + +static void __ipc_send(int mbox, u32 *data) +{ + int i; + for (i = 0; i < 7; i++) + __raw_writel(data[i], ipc_base + IPCMxDR(mbox, i)); + __raw_writel(0x1, ipc_base + IPCMxSEND(mbox)); +} + +static u32 __ipc_rcv(int mbox, u32 *data) +{ + int i; + for (i = 0; i < 7; i++) + data[i] = __raw_readl(ipc_base + IPCMxDR(mbox, i)); + return data[1]; +} + +/* non-blocking implementation from the A9 side, interrupt safe in theory */ +int ipc_call_fast(u32 *data) +{ + int timeout, ret; + + spin_lock(&ipc_m0_lock); + + __ipc_send(IPC_FAST_MBOX, data); + + for (timeout = 5000; timeout > 0; timeout--) { + if (__raw_readl(ipc_base + IPCMxSEND(IPC_FAST_MBOX)) == 0x2) + break; + udelay(100); + } + if (timeout == 0) { + ret = -ETIMEDOUT; + goto out; + } + + ret = __ipc_rcv(IPC_FAST_MBOX, data); +out: + __raw_writel(0, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + spin_unlock(&ipc_m0_lock); + return ret; +} +EXPORT_SYMBOL(ipc_call_fast); + +/* blocking implmentation from the A9 side, not usuable in interrupts! */ +int ipc_call_slow(u32 *data) +{ + int ret; + + mutex_lock(&ipc_m1_lock); + + init_completion(&ipc_completion); + __ipc_send(IPC_SLOW_MBOX, data); + ret = wait_for_completion_timeout(&ipc_completion, + msecs_to_jiffies(1000)); + if (ret == 0) + goto out; + + ret = __ipc_rcv(IPC_SLOW_MBOX, data); +out: + mutex_unlock(&ipc_m1_lock); + return ret; +} +EXPORT_SYMBOL(ipc_call_slow); + +irqreturn_t ipc_handler(int irq, void *dev) +{ + u32 irq_stat; + u32 data[7]; + + irq_stat = __raw_readl(ipc_base + IPCMMIS(1)); + if (irq_stat & MBOX_MASK(IPC_SLOW_MBOX)) { + __raw_writel(0, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + complete(&ipc_completion); + } + if (irq_stat & MBOX_MASK(IPC_RX_MBOX)) { + __ipc_rcv(IPC_RX_MBOX, data); + atomic_notifier_call_chain(&ipc_notifier, data[0], data + 1); + __raw_writel(2, ipc_base + IPCMxSEND(IPC_RX_MBOX)); + } + + return IRQ_HANDLED; +} + +int pl320_ipc_register_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_register(&ipc_notifier, nb); +} + +int pl320_ipc_unregister_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_unregister(&ipc_notifier, nb); +} + +static int __devinit pl320_probe(struct amba_device *adev, const struct amba_id *id) +{ + int ret; + + ipc_base = ioremap(adev->res.start, resource_size(&adev->res)); + if (ipc_base == NULL) + return -ENOMEM; + + __raw_writel(0, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + __raw_writel(0, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + + ipc_irq = adev->irq[0]; + ret = request_irq(ipc_irq, ipc_handler, 0, dev_name(&adev->dev), NULL); + if (ret < 0) + goto err; + + /* Init fast mailbox */ + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxSOURCE(IPC_FAST_MBOX)); + set_destination(M3_SOURCE, IPC_FAST_MBOX); + + /* Init slow mailbox */ + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxSOURCE(IPC_SLOW_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE), ipc_base + IPCMxDSET(IPC_SLOW_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxMSET(IPC_SLOW_MBOX)); + + /* Init receive mailbox */ + __raw_writel(CHAN_MASK(M3_SOURCE), ipc_base + IPCMxSOURCE(IPC_RX_MBOX)); + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxDSET(IPC_RX_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxMSET(IPC_RX_MBOX)); + + return 0; +err: + iounmap(ipc_base); + return ret; +} + +static struct amba_id pl320_ids[] = { + { + .id = 0x00041320, + .mask = 0x000fffff, + }, + { 0, 0 }, +}; + +static struct amba_driver pl320_driver = { + .drv = { + .name = "pl320", + }, + .id_table = pl320_ids, + .probe = pl320_probe, +}; + +static int __init ipc_init(void) +{ + return amba_driver_register(&pl320_driver); +} +module_init(ipc_init); + +irqreturn_t ipc_test_handler(int irq, void *dev) +{ + u32 irq_stat; + + irq_stat = __raw_readl(ipc_base + IPCMMIS(irq - (ipc_irq - 1))); + if (irq_stat & MBOX_MASK(IPC_FAST_MBOX)) { + if ((__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 0)) == 0x900dbeef) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 1)) == 1) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 2)) == 2) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 3)) == 3) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 4)) == 4) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 5)) == 5) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 6)) == 6)) { + printk(KERN_ERR "ipc fast mbox message %X received\n", __raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 0))); + __raw_writel(0xBADBEEF, ipc_base + IPCMxDR(IPC_FAST_MBOX, 1)); + } + __raw_writel(0x2, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + } + if (irq_stat & MBOX_MASK(IPC_SLOW_MBOX)) { + if ((__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 0)) == 0x12345678) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 1)) == 6) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 2)) == 5) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 3)) == 4) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 4)) == 3) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 5)) == 2) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 6)) == 1)) { + printk("slow mbox message %X received\n", __raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 0))); + __raw_writel(0x87654321, ipc_base + IPCMxDR(IPC_SLOW_MBOX, 1)); + } + __raw_writel(0x2, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + } + if (irq_stat & MBOX_MASK(IPC_RX_MBOX)) { + __raw_writel(0, ipc_base + IPCMxSEND(IPC_RX_MBOX)); + // handle events + } + + return IRQ_HANDLED; +} + +static void __init ipc_test(void) +{ + int ret, i; + + printk("ipc test start\n"); + + for (i = 0; i < 8; i++) { + u32 data[7]; + int j; + if (i == 1) continue; + + if (request_irq(ipc_irq - 1 + i, ipc_test_handler, 0, "ipc", NULL) < 0) { + printk("ipc - request_irq failed - FAIL\n"); + return; + } + + set_destination(i, IPC_FAST_MBOX); + set_destination(i, IPC_SLOW_MBOX); + + for (j = 1; j < 7; j++) + data[j] = j; + data[0] = 0x900dbeef; + ret = ipc_call_fast(data); + if (ret == 0xbadbeef) + printk(KERN_ERR "ipc %d fast call - PASS\n", i); + else + printk(KERN_ERR "ipc %d fast call fail %d\n", i, ret); + for (j = 1; j < 7; j++) + data[j] = 7 - j; + data[0] = 0x12345678; + ret = ipc_call_slow(data); + if (ret == 0x87654321) + printk("ipc %d slow call - PASS\n", i); + + clear_destination(i, IPC_FAST_MBOX); + clear_destination(i, IPC_SLOW_MBOX); + + free_irq(ipc_irq - 1 + i, NULL); + } + set_destination(M3_SOURCE, IPC_FAST_MBOX); + set_destination(M3_SOURCE, IPC_SLOW_MBOX); +} +//late_initcall(ipc_test); + --- linux-3.5.0.orig/arch/arm/mach-highbank/highbank.c +++ linux-3.5.0/arch/arm/mach-highbank/highbank.c @@ -15,6 +15,8 @@ */ #include #include +#include +#include #include #include #include @@ -22,7 +24,9 @@ #include #include #include +#include #include +#include #include #include @@ -35,6 +39,7 @@ #include #include #include +#include #include "core.h" #include "sysregs.h" @@ -105,6 +110,11 @@ #endif } +static struct clk_lookup lookup = { + .dev_id = "sp804", + .con_id = NULL, +}; + static void __init highbank_timer_init(void) { int irq; @@ -122,6 +132,8 @@ irq = irq_of_parse_and_map(np, 0); highbank_clocks_init(); + lookup.clk = of_clk_get(np, 0); + clkdev_add(&lookup); sp804_clocksource_and_sched_clock_init(timer_base + 0x20, "timer1"); sp804_clockevents_init(timer_base, irq, "timer0"); @@ -142,9 +154,79 @@ cpu_do_idle(); } +static int hb_keys_notifier(struct notifier_block *nb, unsigned long event, void *data) +{ + u32 key = *(u32 *)data; + + if (event != 0x1000) + return 0; + + if (key == KEY_POWER) + orderly_poweroff(false); + else if (key == 0xffff) + ctrl_alt_del(); + + return 0; +} + +static struct notifier_block hb_keys_nb = { + .notifier_call = hb_keys_notifier, +}; + +static int highbank_platform_notifier(struct notifier_block *nb, + unsigned long event, void *__dev) +{ + struct resource *res; + int reg = -1; + struct device *dev = __dev; + + if (event != BUS_NOTIFY_ADD_DEVICE) + return NOTIFY_DONE; + + if (of_device_is_compatible(dev->of_node, "calxeda,hb-ahci")) + reg = 0xc; + else if (of_device_is_compatible(dev->of_node, "calxeda,hb-sdhci")) + reg = 0x18; + else if (of_device_is_compatible(dev->of_node, "arm,pl330")) + reg = 0x20; + else if (of_device_is_compatible(dev->of_node, "calxeda,hb-xgmac")) { + res = platform_get_resource(to_platform_device(dev), + IORESOURCE_MEM, 0); + if (res) { + if (res->start == 0xfff50000) + reg = 0; + else if (res->start == 0xfff51000) + reg = 4; + } + } + + if (reg < 0) + return NOTIFY_DONE; + + if (of_property_read_bool(dev->of_node, "dma-coherent")) { + writel(0xff31, sregs_base + reg); + set_dma_ops(dev, &arm_coherent_dma_ops); + } else + writel(0, sregs_base + reg); + + return NOTIFY_OK; +} + +static struct notifier_block highbank_amba_nb = { + .notifier_call = highbank_platform_notifier, +}; + +static struct notifier_block highbank_platform_nb = { + .notifier_call = highbank_platform_notifier, +}; + static void __init highbank_init(void) { pm_power_off = highbank_power_off; + pl320_ipc_register_notifier(&hb_keys_nb); + + bus_register_notifier(&platform_bus_type, &highbank_platform_nb); + bus_register_notifier(&amba_bustype, &highbank_amba_nb); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); } --- linux-3.5.0.orig/arch/arm/mach-highbank/include/mach/pl320-ipc.h +++ linux-3.5.0/arch/arm/mach-highbank/include/mach/pl320-ipc.h @@ -0,0 +1,20 @@ +/* + * Copyright 2010 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +int ipc_call_fast(u32 *data); +int ipc_call_slow(u32 *data); + +extern int pl320_ipc_register_notifier(struct notifier_block *nb); +extern int pl320_ipc_unregister_notifier(struct notifier_block *nb); --- linux-3.5.0.orig/arch/arm/mach-versatile/core.c +++ linux-3.5.0/arch/arm/mach-versatile/core.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -66,16 +67,28 @@ #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) +/* These PIC IRQs are valid in each configuration */ +#define PIC_VALID_ALL BIT(SIC_INT_KMI0) | BIT(SIC_INT_KMI1) | \ + BIT(SIC_INT_SCI3) | BIT(SIC_INT_UART3) | \ + BIT(SIC_INT_CLCD) | BIT(SIC_INT_TOUCH) | \ + BIT(SIC_INT_KEYPAD) | BIT(SIC_INT_DoC) | \ + BIT(SIC_INT_USB) | BIT(SIC_INT_PCI0) | \ + BIT(SIC_INT_PCI1) | BIT(SIC_INT_PCI2) | \ + BIT(SIC_INT_PCI3) #if 1 #define IRQ_MMCI0A IRQ_VICSOURCE22 #define IRQ_AACI IRQ_VICSOURCE24 #define IRQ_ETH IRQ_VICSOURCE25 #define PIC_MASK 0xFFD00000 +#define PIC_VALID PIC_VALID_ALL #else #define IRQ_MMCI0A IRQ_SIC_MMCI0A #define IRQ_AACI IRQ_SIC_AACI #define IRQ_ETH IRQ_SIC_ETH #define PIC_MASK 0 +#define PIC_VALID PIC_VALID_ALL | BIT(SIC_INT_MMCI0A) | \ + BIT(SIC_INT_MMCI1A) | BIT(SIC_INT_AACI) | \ + BIT(SIC_INT_ETH) #endif /* Lookup table for finding a DT node that represents the vic instance */ @@ -103,7 +116,7 @@ VERSATILE_SIC_BASE); fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START, - IRQ_VICSOURCE31, ~PIC_MASK, np); + IRQ_VICSOURCE31, PIC_VALID, np); /* * Interrupts on secondary controller from 0 to 8 are routed to --- linux-3.5.0.orig/arch/arm/mach-versatile/pci.c +++ linux-3.5.0/arch/arm/mach-versatile/pci.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -341,12 +342,12 @@ int irq; /* slot, pin, irq - * 24 1 27 - * 25 1 28 - * 26 1 29 - * 27 1 30 + * 24 1 IRQ_SIC_PCI0 + * 25 1 IRQ_SIC_PCI1 + * 26 1 IRQ_SIC_PCI2 + * 27 1 IRQ_SIC_PCI3 */ - irq = 27 + ((slot - 24 + pin - 1) & 3); + irq = IRQ_SIC_PCI0 + ((slot - 24 + pin - 1) & 3); return irq; } --- linux-3.5.0.orig/arch/arm/mach-dove/irq.c +++ linux-3.5.0/arch/arm/mach-dove/irq.c @@ -61,8 +61,20 @@ int pin = irq_to_pmu(d->irq); u32 u; + /* + * The PMU mask register is not RW0C: it is RW. This means that + * the bits take whatever value is written to them; if you write + * a '1', you will set the interrupt. + * + * Unfortunately this means there is NO race free way to clear + * these interrupts. + * + * So, let's structure the code so that the window is as small as + * possible. + */ u = ~(1 << (pin & 31)); - writel(u, PMU_INTERRUPT_CAUSE); + u &= readl_relaxed(PMU_INTERRUPT_CAUSE); + writel_relaxed(u, PMU_INTERRUPT_CAUSE); } static struct irq_chip pmu_irq_chip = { --- linux-3.5.0.orig/arch/arm/mach-dove/include/mach/pm.h +++ linux-3.5.0/arch/arm/mach-dove/include/mach/pm.h @@ -45,7 +45,7 @@ static inline int irq_to_pmu(int irq) { - if (IRQ_DOVE_PMU_START < irq && irq < NR_IRQS) + if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS) return irq - IRQ_DOVE_PMU_START; return -EINVAL; --- linux-3.5.0.orig/arch/arm/mm/proc-xsc3.S +++ linux-3.5.0/arch/arm/mm/proc-xsc3.S @@ -410,7 +410,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-3.5.0.orig/arch/arm/mm/mm.h +++ linux-3.5.0/arch/arm/mm/mm.h @@ -55,6 +55,9 @@ /* permanent static mappings from iotable_init() */ #define VM_ARM_STATIC_MAPPING 0x40000000 +/* empty mapping */ +#define VM_ARM_EMPTY_MAPPING 0x20000000 + /* mapping type (attributes) for permanent static mappings */ #define VM_ARM_MTYPE(mt) ((mt) << 20) #define VM_ARM_MTYPE_MASK (0x1f << 20) --- linux-3.5.0.orig/arch/arm/mm/flush.c +++ linux-3.5.0/arch/arm/mm/flush.c @@ -231,8 +231,6 @@ struct page *page; struct address_space *mapping; - if (!pte_present_user(pteval)) - return; if (cache_is_vipt_nonaliasing() && !pte_exec(pteval)) /* only flush non-aliasing VIPT caches for exec mappings */ return; @@ -301,6 +299,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-3.5.0.orig/arch/arm/mm/tlb-v7.S +++ linux-3.5.0/arch/arm/mm/tlb-v7.S @@ -39,10 +39,18 @@ mov r0, r0, lsr #PAGE_SHIFT @ align address mov r1, r1, lsr #PAGE_SHIFT asid r3, r3 @ mask ASID +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(W(mov) r3, #0 ) + ALT_UP(W(nop) ) +#endif orr r0, r3, r0, lsl #PAGE_SHIFT @ Create initial MVA mov r1, r1, lsl #PAGE_SHIFT 1: +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable) +#else ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable) +#endif ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA add r0, r0, #PAGE_SZ @@ -67,7 +75,11 @@ mov r0, r0, lsl #PAGE_SHIFT mov r1, r1, lsl #PAGE_SHIFT 1: +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable) +#else ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable) +#endif ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA add r0, r0, #PAGE_SZ cmp r0, r1 --- linux-3.5.0.orig/arch/arm/mm/proc-v6.S +++ linux-3.5.0/arch/arm/mm/proc-v6.S @@ -132,7 +132,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-3.5.0.orig/arch/arm/mm/mmu.c +++ linux-3.5.0/arch/arm/mm/mmu.c @@ -504,7 +504,7 @@ #endif for (i = 0; i < 16; i++) { - unsigned long v = pgprot_val(protection_map[i]); + pteval_t v = pgprot_val(protection_map[i]); protection_map[i] = __pgprot(v | user_pgprot); } @@ -813,7 +813,7 @@ vm = early_alloc_aligned(sizeof(*vm), __alignof__(*vm)); vm->addr = (void *)addr; vm->size = SECTION_SIZE; - vm->flags = VM_IOREMAP | VM_ARM_STATIC_MAPPING; + vm->flags = VM_IOREMAP | VM_ARM_EMPTY_MAPPING; vm->caller = pmd_empty_section_gap; vm_area_add_early(vm); } @@ -826,7 +826,7 @@ /* we're still single threaded hence no lock needed here */ for (vm = vmlist; vm; vm = vm->next) { - if (!(vm->flags & VM_ARM_STATIC_MAPPING)) + if (!(vm->flags & (VM_ARM_STATIC_MAPPING | VM_ARM_EMPTY_MAPPING))) continue; addr = (unsigned long)vm->addr; if (addr < next) --- linux-3.5.0.orig/arch/arm/mm/nommu.c +++ linux-3.5.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-3.5.0.orig/arch/arm/mm/proc-sa1100.S +++ linux-3.5.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-3.5.0.orig/arch/arm/mm/cache-feroceon-l2.c +++ linux-3.5.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-3.5.0.orig/arch/arm/mm/proc-xscale.S +++ linux-3.5.0/arch/arm/mm/proc-xscale.S @@ -524,7 +524,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-3.5.0.orig/arch/arm/mm/dma-mapping.c +++ linux-3.5.0/arch/arm/mm/dma-mapping.c @@ -72,11 +72,18 @@ unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_cpu_to_dev(page, offset, size, dir); return pfn_to_dma(dev, page_to_pfn(page)) + offset; } +static dma_addr_t arm_coherent_dma_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + return pfn_to_dma(dev, page_to_pfn(page)) + offset; +} + /** * arm_dma_unmap_page - unmap a buffer previously mapped through dma_map_page() * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices @@ -95,7 +102,7 @@ size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(pfn_to_page(dma_to_pfn(dev, handle)), handle & ~PAGE_MASK, size, dir); } @@ -105,8 +112,7 @@ { unsigned int offset = handle & (PAGE_SIZE - 1); struct page *page = pfn_to_page(dma_to_pfn(dev, handle-offset)); - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(page, offset, size, dir); + __dma_page_dev_to_cpu(page, offset, size, dir); } static void arm_dma_sync_single_for_device(struct device *dev, @@ -114,8 +120,7 @@ { unsigned int offset = handle & (PAGE_SIZE - 1); struct page *page = pfn_to_page(dma_to_pfn(dev, handle-offset)); - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(page, offset, size, dir); + __dma_page_cpu_to_dev(page, offset, size, dir); } static int arm_dma_set_mask(struct device *dev, u64 dma_mask); @@ -136,6 +141,21 @@ }; EXPORT_SYMBOL(arm_dma_ops); +static void *arm_coherent_dma_alloc(struct device *dev, size_t size, + dma_addr_t *handle, gfp_t gfp, struct dma_attrs *attrs); +static void arm_coherent_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs); + +struct dma_map_ops arm_coherent_dma_ops = { + .alloc = arm_coherent_dma_alloc, + .free = arm_coherent_dma_free, + .mmap = arm_dma_mmap, + .map_page = arm_coherent_dma_map_page, + .map_sg = arm_dma_map_sg, + .set_dma_mask = arm_dma_set_mask, +}; +EXPORT_SYMBOL(arm_coherent_dma_ops); + static u64 get_coherent_dma_mask(struct device *dev) { u64 mask = (u64)arm_dma_limit; @@ -667,7 +687,7 @@ static void *__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, - gfp_t gfp, pgprot_t prot, const void *caller) + gfp_t gfp, pgprot_t prot, bool is_coherent, const void *caller) { u64 mask = get_coherent_dma_mask(dev); struct page *page; @@ -700,7 +720,7 @@ *handle = DMA_ERROR_CODE; size = PAGE_ALIGN(size); - if (arch_is_coherent() || nommu()) + if (is_coherent || nommu()) addr = __alloc_simple_buffer(dev, size, gfp, &page); else if (!IS_ENABLED(CONFIG_CMA)) addr = __alloc_remap_buffer(dev, size, gfp, prot, &page, caller); @@ -728,7 +748,20 @@ if (dma_alloc_from_coherent(dev, size, handle, &memory)) return memory; - return __dma_alloc(dev, size, handle, gfp, prot, + return __dma_alloc(dev, size, handle, gfp, prot, false, + __builtin_return_address(0)); +} + +static void *arm_coherent_dma_alloc(struct device *dev, size_t size, + dma_addr_t *handle, gfp_t gfp, struct dma_attrs *attrs) +{ + pgprot_t prot = __get_dma_pgprot(attrs, pgprot_kernel); + void *memory; + + if (dma_alloc_from_coherent(dev, size, handle, &memory)) + return memory; + + return __dma_alloc(dev, size, handle, gfp, prot, true, __builtin_return_address(0)); } @@ -759,8 +792,9 @@ /* * Free a buffer as defined by the above mapping. */ -void arm_dma_free(struct device *dev, size_t size, void *cpu_addr, - dma_addr_t handle, struct dma_attrs *attrs) +static void __arm_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs, + bool is_coherent) { struct page *page = pfn_to_page(dma_to_pfn(dev, handle)); @@ -769,7 +803,7 @@ size = PAGE_ALIGN(size); - if (arch_is_coherent() || nommu()) { + if (is_coherent || nommu()) { __dma_free_buffer(page, size); } else if (!IS_ENABLED(CONFIG_CMA)) { __dma_free_remap(cpu_addr, size); @@ -785,29 +819,43 @@ } } +void arm_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs) +{ + __arm_dma_free(dev, size, cpu_addr, handle, attrs, false); +} + +static void arm_coherent_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs) +{ + __arm_dma_free(dev, size, cpu_addr, handle, attrs, true); +} + static void dma_cache_maint_page(struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, void (*op)(const void *, size_t, int)) { + unsigned long pfn; + size_t left = size; + + pfn = page_to_pfn(page) + offset / PAGE_SIZE; + offset %= PAGE_SIZE; + /* * A single sg entry may refer to multiple physically contiguous * pages. But we still need to process highmem pages individually. * If highmem is not configured then the bulk of this loop gets * optimized out. */ - size_t left = size; do { size_t len = left; void *vaddr; + page = pfn_to_page(pfn); + if (PageHighMem(page)) { - if (len + offset > PAGE_SIZE) { - if (offset >= PAGE_SIZE) { - page += offset / PAGE_SIZE; - offset %= PAGE_SIZE; - } + if (len + offset > PAGE_SIZE) len = PAGE_SIZE - offset; - } vaddr = kmap_high_get(page); if (vaddr) { vaddr += offset; @@ -824,7 +872,7 @@ op(vaddr, len, dir); } offset = 0; - page++; + pfn++; left -= len; } while (left); } @@ -1317,7 +1365,8 @@ */ static int __map_sg_chunk(struct device *dev, struct scatterlist *sg, size_t size, dma_addr_t *handle, - enum dma_data_direction dir) + enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct dma_iommu_mapping *mapping = dev->archdata.mapping; dma_addr_t iova, iova_base; @@ -1336,7 +1385,8 @@ phys_addr_t phys = page_to_phys(sg_page(s)); unsigned int len = PAGE_ALIGN(s->offset + s->length); - if (!arch_is_coherent()) + if (!is_coherent && + !dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); ret = iommu_map(mapping->domain, iova, phys, len, 0); @@ -1354,20 +1404,9 @@ return ret; } -/** - * arm_iommu_map_sg - map a set of SG buffers for streaming mode DMA - * @dev: valid struct device pointer - * @sg: list of buffers - * @nents: number of buffers to map - * @dir: DMA transfer direction - * - * Map a set of buffers described by scatterlist in streaming mode for DMA. - * The scatter gather list elements are merged together (if possible) and - * tagged with the appropriate dma address and length. They are obtained via - * sg_dma_{address,length}. - */ -int arm_iommu_map_sg(struct device *dev, struct scatterlist *sg, int nents, - enum dma_data_direction dir, struct dma_attrs *attrs) +static int __iommu_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct scatterlist *s = sg, *dma = sg, *start = sg; int i, count = 0; @@ -1383,7 +1422,7 @@ if (s->offset || (size & ~PAGE_MASK) || size + s->length > max) { if (__map_sg_chunk(dev, start, size, &dma->dma_address, - dir) < 0) + dir, attrs, is_coherent) < 0) goto bad_mapping; dma->dma_address += offset; @@ -1396,7 +1435,8 @@ } size += s->length; } - if (__map_sg_chunk(dev, start, size, &dma->dma_address, dir) < 0) + if (__map_sg_chunk(dev, start, size, &dma->dma_address, dir, attrs, + is_coherent) < 0) goto bad_mapping; dma->dma_address += offset; @@ -1411,17 +1451,44 @@ } /** - * arm_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * arm_coherent_iommu_map_sg - map a set of SG buffers for streaming mode DMA * @dev: valid struct device pointer * @sg: list of buffers - * @nents: number of buffers to unmap (same as was passed to dma_map_sg) - * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * @nents: number of buffers to map + * @dir: DMA transfer direction * - * Unmap a set of streaming mode DMA translations. Again, CPU access - * rules concerning calls here are the same as for dma_unmap_single(). + * Map a set of i/o coherent buffers described by scatterlist in streaming + * mode for DMA. The scatter gather list elements are merged together (if + * possible) and tagged with the appropriate dma address and length. They are + * obtained via sg_dma_{address,length}. */ -void arm_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, - enum dma_data_direction dir, struct dma_attrs *attrs) +int arm_coherent_iommu_map_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + return __iommu_map_sg(dev, sg, nents, dir, attrs, true); +} + +/** + * arm_iommu_map_sg - map a set of SG buffers for streaming mode DMA + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Map a set of buffers described by scatterlist in streaming mode for DMA. + * The scatter gather list elements are merged together (if possible) and + * tagged with the appropriate dma address and length. They are obtained via + * sg_dma_{address,length}. + */ +int arm_iommu_map_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + return __iommu_map_sg(dev, sg, nents, dir, attrs, false); +} + +static void __iommu_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct scatterlist *s; int i; @@ -1430,13 +1497,46 @@ if (sg_dma_len(s)) __iommu_remove_mapping(dev, sg_dma_address(s), sg_dma_len(s)); - if (!arch_is_coherent()) + if (!is_coherent && + !dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); } } /** + * arm_coherent_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to unmap (same as was passed to dma_map_sg) + * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * + * Unmap a set of streaming mode DMA translations. Again, CPU access + * rules concerning calls here are the same as for dma_unmap_single(). + */ +void arm_coherent_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + __iommu_unmap_sg(dev, sg, nents, dir, attrs, true); +} + +/** + * arm_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to unmap (same as was passed to dma_map_sg) + * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * + * Unmap a set of streaming mode DMA translations. Again, CPU access + * rules concerning calls here are the same as for dma_unmap_single(). + */ +void arm_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir, struct dma_attrs *attrs) +{ + __iommu_unmap_sg(dev, sg, nents, dir, attrs, false); +} + +/** * arm_iommu_sync_sg_for_cpu * @dev: valid struct device pointer * @sg: list of buffers @@ -1450,8 +1550,7 @@ int i; for_each_sg(sg, s, nents, i) - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); + __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); } @@ -1469,22 +1568,21 @@ int i; for_each_sg(sg, s, nents, i) - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); + __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); } /** - * arm_iommu_map_page + * arm_coherent_iommu_map_page * @dev: valid struct device pointer * @page: page that buffer resides in * @offset: offset into page for start of buffer * @size: size of buffer to map * @dir: DMA transfer direction * - * IOMMU aware version of arm_dma_map_page() + * Coherent IOMMU aware version of arm_dma_map_page() */ -static dma_addr_t arm_iommu_map_page(struct device *dev, struct page *page, +static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { @@ -1492,9 +1590,6 @@ dma_addr_t dma_addr; int ret, len = PAGE_ALIGN(size + offset); - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(page, offset, size, dir); - dma_addr = __alloc_iova(mapping, len); if (dma_addr == DMA_ERROR_CODE) return dma_addr; @@ -1510,6 +1605,52 @@ } /** + * arm_iommu_map_page + * @dev: valid struct device pointer + * @page: page that buffer resides in + * @offset: offset into page for start of buffer + * @size: size of buffer to map + * @dir: DMA transfer direction + * + * IOMMU aware version of arm_dma_map_page() + */ +static dma_addr_t arm_iommu_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) + __dma_page_cpu_to_dev(page, offset, size, dir); + + return arm_coherent_iommu_map_page(dev, page, offset, size, dir, attrs); +} + +/** + * arm_coherent_iommu_unmap_page + * @dev: valid struct device pointer + * @handle: DMA address of buffer + * @size: size of buffer (same as passed to dma_map_page) + * @dir: DMA transfer direction (same as passed to dma_map_page) + * + * Coherent IOMMU aware version of arm_dma_unmap_page() + */ +static void arm_coherent_iommu_unmap_page(struct device *dev, dma_addr_t handle, + size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + struct dma_iommu_mapping *mapping = dev->archdata.mapping; + dma_addr_t iova = handle & PAGE_MASK; + struct page *page = phys_to_page(iommu_iova_to_phys(mapping->domain, iova)); + int offset = handle & ~PAGE_MASK; + int len = PAGE_ALIGN(size + offset); + + if (!iova) + return; + + iommu_unmap(mapping->domain, iova, len); + __free_iova(mapping, iova, len); +} + +/** * arm_iommu_unmap_page * @dev: valid struct device pointer * @handle: DMA address of buffer @@ -1531,7 +1672,7 @@ if (!iova) return; - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(page, offset, size, dir); iommu_unmap(mapping->domain, iova, len); @@ -1549,8 +1690,7 @@ if (!iova) return; - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(page, offset, size, dir); + __dma_page_dev_to_cpu(page, offset, size, dir); } static void arm_iommu_sync_single_for_device(struct device *dev, @@ -1583,6 +1723,19 @@ .sync_sg_for_device = arm_iommu_sync_sg_for_device, }; +struct dma_map_ops iommu_coherent_ops = { + .alloc = arm_iommu_alloc_attrs, + .free = arm_iommu_free_attrs, + .mmap = arm_iommu_mmap_attrs, + .get_sgtable = arm_iommu_get_sgtable, + + .map_page = arm_coherent_iommu_map_page, + .unmap_page = arm_coherent_iommu_unmap_page, + + .map_sg = arm_coherent_iommu_map_sg, + .unmap_sg = arm_coherent_iommu_unmap_sg, +}; + /** * arm_iommu_create_mapping * @bus: pointer to the bus holding the client device (for IOMMU calls) --- linux-3.5.0.orig/arch/arm/mm/proc-mohawk.S +++ linux-3.5.0/arch/arm/mm/proc-mohawk.S @@ -347,7 +347,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-3.5.0.orig/arch/arm/mm/proc-arm926.S +++ linux-3.5.0/arch/arm/mm/proc-arm926.S @@ -399,7 +399,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-3.5.0.orig/arch/arm/mm/alignment.c +++ linux-3.5.0/arch/arm/mm/alignment.c @@ -750,7 +750,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; @@ -761,16 +760,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 { @@ -779,8 +777,7 @@ } } } else - fault = __get_user(instr, (u32 *)instrptr); - set_fs(fs); + fault = probe_kernel_address(instrptr, instr); if (fault) { type = TYPE_FAULT; --- linux-3.5.0.orig/arch/arm/mm/proc-arm920.S +++ linux-3.5.0/arch/arm/mm/proc-arm920.S @@ -384,7 +384,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-3.5.0.orig/arch/arm/kernel/perf_event.c +++ linux-3.5.0/arch/arm/kernel/perf_event.c @@ -319,7 +319,10 @@ struct hw_perf_event fake_event = event->hw; struct pmu *leader_pmu = event->group_leader->pmu; - if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) + 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, &fake_event) >= 0; --- linux-3.5.0.orig/arch/arm/kernel/smp.c +++ linux-3.5.0/arch/arm/kernel/smp.c @@ -222,18 +222,24 @@ asmlinkage void __cpuinit secondary_start_kernel(void) { struct mm_struct *mm = &init_mm; - unsigned int cpu = smp_processor_id(); + unsigned int cpu; + + /* + * The identity mapping is uncached (strongly ordered), so + * switch away from it before attempting any exclusive accesses. + */ + cpu_switch_mm(mm->pgd, mm); + enter_lazy_tlb(mm, current); + local_flush_tlb_all(); /* * All kernel threads share the same mm context; grab a * reference and switch to it. */ + cpu = smp_processor_id(); atomic_inc(&mm->mm_count); current->active_mm = mm; cpumask_set_cpu(cpu, mm_cpumask(mm)); - cpu_switch_mm(mm->pgd, mm); - enter_lazy_tlb(mm, current); - local_flush_tlb_all(); printk("CPU%u: Booted secondary processor\n", cpu); @@ -563,7 +569,8 @@ cpumask_copy(&mask, cpu_online_mask); cpumask_clear_cpu(smp_processor_id(), &mask); - smp_cross_call(&mask, IPI_CPU_STOP); + if (!cpumask_empty(&mask)) + smp_cross_call(&mask, IPI_CPU_STOP); /* Wait up to one second for other CPUs to stop */ timeout = USEC_PER_SEC; --- linux-3.5.0.orig/arch/arm/kernel/swp_emulate.c +++ linux-3.5.0/arch/arm/kernel/swp_emulate.c @@ -109,10 +109,12 @@ { siginfo_t info; + down_read(¤t->mm->mmap_sem); if (find_vma(current->mm, addr) == NULL) info.si_code = SEGV_MAPERR; else info.si_code = SEGV_ACCERR; + up_read(¤t->mm->mmap_sem); info.si_signo = SIGSEGV; info.si_errno = 0; --- linux-3.5.0.orig/arch/arm/kernel/sched_clock.c +++ linux-3.5.0/arch/arm/kernel/sched_clock.c @@ -39,12 +39,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; @@ -84,11 +84,11 @@ * detectable in cyc_to_fixed_sched_clock(). */ raw_local_irq_save(flags); - cd.epoch_cyc = cyc; + cd.epoch_cyc_copy = cyc; smp_wmb(); cd.epoch_ns = ns; smp_wmb(); - cd.epoch_cyc_copy = cyc; + cd.epoch_cyc = cyc; raw_local_irq_restore(flags); } --- linux-3.5.0.orig/arch/arm/kernel/process.c +++ linux-3.5.0/arch/arm/kernel/process.c @@ -247,6 +247,7 @@ void machine_halt(void) { machine_shutdown(); + local_irq_disable(); while (1); } @@ -268,6 +269,7 @@ /* Whoops - the platform was unable to reboot. Tell the user! */ printk("Reboot failed -- System halted\n"); + local_irq_disable(); while (1); } --- linux-3.5.0.orig/arch/arm/kernel/topology.c +++ linux-3.5.0/arch/arm/kernel/topology.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -42,6 +43,7 @@ #define MPIDR_LEVEL2_SHIFT 16 struct cputopo_arm cpu_topology[NR_CPUS]; +EXPORT_SYMBOL_GPL(cpu_topology); const struct cpumask *cpu_coregroup_mask(int cpu) { --- linux-3.5.0.orig/arch/arm/kernel/traps.c +++ linux-3.5.0/arch/arm/kernel/traps.c @@ -370,18 +370,10 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) { - unsigned int correction = thumb_mode(regs) ? 2 : 4; unsigned int instr; siginfo_t info; void __user *pc; - /* - * According to the ARM ARM, PC is 2 or 4 bytes ahead, - * depending whether we're in Thumb mode or not. - * Correct this offset. - */ - regs->ARM_pc -= correction; - pc = (void __user *)instruction_pointer(regs); if (processor_mode(regs) == SVC_MODE) { @@ -396,20 +388,23 @@ #endif instr = *(u32 *) pc; } else if (thumb_mode(regs)) { - get_user(instr, (u16 __user *)pc); + if (get_user(instr, (u16 __user *)pc)) + goto die_sig; if (is_wide_instruction(instr)) { unsigned int instr2; - get_user(instr2, (u16 __user *)pc+1); + if (get_user(instr2, (u16 __user *)pc+1)) + goto die_sig; instr <<= 16; instr |= instr2; } - } else { - get_user(instr, (u32 __user *)pc); + } else if (get_user(instr, (u32 __user *)pc)) { + goto die_sig; } if (call_undef_hook(regs, instr) == 0) return; +die_sig: #ifdef CONFIG_DEBUG_USER if (user_debug & UDBG_UNDEFINED) { printk(KERN_INFO "%s (%d): undefined instruction: pc=%p\n", --- linux-3.5.0.orig/arch/arm/kernel/smp_twd.c +++ linux-3.5.0/arch/arm/kernel/smp_twd.c @@ -313,6 +313,7 @@ { .compatible = "arm,cortex-a9-twd-timer", }, { .compatible = "arm,cortex-a5-twd-timer", }, { .compatible = "arm,arm11mp-twd-timer", }, + { .compatible = "arm,smp-twd", }, { }, }; --- linux-3.5.0.orig/arch/arm/kernel/entry-armv.S +++ linux-3.5.0/arch/arm/kernel/entry-armv.S @@ -244,6 +244,19 @@ b 1b #endif +__und_fault: + @ Correct the PC such that it is pointing at the instruction + @ which caused the fault. If the faulting instruction was ARM + @ the PC will be pointing at the next instruction, and have to + @ subtract 4. Otherwise, it is Thumb, and the PC will be + @ pointing at the second half of the Thumb instruction. We + @ have to subtract 2. + ldr r2, [r0, #S_PC] + sub r2, r2, r1 + str r2, [r0, #S_PC] + b do_undefinstr +ENDPROC(__und_fault) + .align 5 __und_svc: #ifdef CONFIG_KPROBES @@ -261,25 +274,32 @@ @ @ r0 - instruction @ -#ifndef CONFIG_THUMB2_KERNEL +#ifndef CONFIG_THUMB2_KERNEL ldr r0, [r4, #-4] #else + mov r1, #2 ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2 cmp r0, #0xe800 @ 32-bit instruction if xx >= 0 - ldrhhs r9, [r4] @ bottom 16 bits - orrhs r0, r9, r0, lsl #16 + blo __und_svc_fault + ldrh r9, [r4] @ bottom 16 bits + add r4, r4, #2 + str r4, [sp, #S_PC] + orr r0, r9, r0, lsl #16 #endif - adr r9, BSYM(1f) + adr r9, BSYM(__und_svc_finish) mov r2, r4 bl call_fpe + mov r1, #4 @ PC correction to apply +__und_svc_fault: mov r0, sp @ struct pt_regs *regs - bl do_undefinstr + bl __und_fault @ @ IRQs off again before pulling preserved data off the stack @ -1: disable_irq_notrace +__und_svc_finish: + disable_irq_notrace @ @ restore SPSR and restart the instruction @@ -423,25 +443,33 @@ mov r2, r4 mov r3, r5 + @ r2 = regs->ARM_pc, which is either 2 or 4 bytes ahead of the + @ faulting instruction depending on Thumb mode. + @ r3 = regs->ARM_cpsr @ - @ fall through to the emulation code, which returns using r9 if - @ it has emulated the instruction, or the more conventional lr - @ if we are to treat this as a real undefined instruction - @ - @ r0 - instruction + @ The emulation code returns using r9 if it has emulated the + @ instruction, or the more conventional lr if we are to treat + @ this as a real undefined instruction @ adr r9, BSYM(ret_from_exception) - adr lr, BSYM(__und_usr_unknown) + tst r3, #PSR_T_BIT @ Thumb mode? - itet eq @ explicit IT needed for the 1f label - subeq r4, r2, #4 @ ARM instr at LR - 4 - subne r4, r2, #2 @ Thumb instr at LR - 2 -1: ldreqt r0, [r4] + bne __und_usr_thumb + sub r4, r2, #4 @ ARM instr at LR - 4 +1: ldrt r0, [r4] #ifdef CONFIG_CPU_ENDIAN_BE8 - reveq r0, r0 @ little endian instruction + rev r0, r0 @ little endian instruction #endif - beq call_fpe + @ r0 = 32-bit ARM instruction which caused the exception + @ r2 = PC value for the following instruction (:= regs->ARM_pc) + @ r4 = PC value for the faulting instruction + @ lr = 32-bit undefined instruction function + adr lr, BSYM(__und_usr_fault_32) + b call_fpe + +__und_usr_thumb: @ Thumb instruction + sub r4, r2, #2 @ First half of thumb instr at LR - 2 #if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7 /* * Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms @@ -455,7 +483,7 @@ ldr r5, .LCcpu_architecture ldr r5, [r5] cmp r5, #CPU_ARCH_ARMv7 - blo __und_usr_unknown + blo __und_usr_fault_16 @ 16bit undefined instruction /* * The following code won't get run unless the running CPU really is v7, so * coding round the lack of ldrht on older arches is pointless. Temporarily @@ -463,15 +491,18 @@ */ .arch armv6t2 #endif -2: - ARM( ldrht r5, [r4], #2 ) - THUMB( ldrht r5, [r4] ) - THUMB( add r4, r4, #2 ) +2: ldrht r5, [r4] cmp r5, #0xe800 @ 32bit instruction if xx != 0 - blo __und_usr_unknown -3: ldrht r0, [r4] + blo __und_usr_fault_16 @ 16bit undefined instruction +3: ldrht r0, [r2] add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 + str r2, [sp, #S_PC] @ it's a 2x16bit instr, update orr r0, r0, r5, lsl #16 + adr lr, BSYM(__und_usr_fault_32) + @ r0 = the two 16-bit Thumb instructions which caused the exception + @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc) + @ r4 = PC value for the first 16-bit Thumb instruction + @ lr = 32bit undefined instruction function #if __LINUX_ARM_ARCH__ < 7 /* If the target arch was overridden, change it back: */ @@ -482,17 +513,13 @@ #endif #endif /* __LINUX_ARM_ARCH__ < 7 */ #else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */ - b __und_usr_unknown + b __und_usr_fault_16 #endif - UNWIND(.fnend ) + UNWIND(.fnend) ENDPROC(__und_usr) - @ - @ fallthrough to call_fpe - @ - /* - * The out of line fixup for the ldrt above. + * The out of line fixup for the ldrt instructions above. */ .pushsection .fixup, "ax" .align 2 @@ -524,11 +551,12 @@ * NEON handler code. * * Emulators may wish to make use of the following registers: - * r0 = instruction opcode. - * r2 = PC+4 + * r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) + * r2 = PC value to resume execution after successful emulation * r9 = normal "successful" return address - * r10 = this threads thread_info structure. + * r10 = this threads thread_info structure * lr = unrecognised instruction return address + * IRQs disabled, FIQs enabled. */ @ @ Fall-through from Thumb-2 __und_usr @@ -659,12 +687,17 @@ mov pc, lr ENDPROC(no_fp) -__und_usr_unknown: - enable_irq +__und_usr_fault_32: + mov r1, #4 + b 1f +__und_usr_fault_16: + mov r1, #2 +1: enable_irq mov r0, sp adr lr, BSYM(ret_from_exception) - b do_undefinstr -ENDPROC(__und_usr_unknown) + b __und_fault +ENDPROC(__und_usr_fault_32) +ENDPROC(__und_usr_fault_16) .align 5 __pabt_usr: --- linux-3.5.0.orig/arch/arm/kernel/perf_event_v7.c +++ linux-3.5.0/arch/arm/kernel/perf_event_v7.c @@ -775,7 +775,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-3.5.0.orig/arch/arm/kernel/hw_breakpoint.c +++ linux-3.5.0/arch/arm/kernel/hw_breakpoint.c @@ -159,6 +159,12 @@ arch >= ARM_DEBUG_ARCH_V7_1; } +/* Can we determine the watchpoint access type from the fsr? */ +static int debug_exception_updates_fsr(void) +{ + return 0; +} + /* Determine number of WRP registers available. */ static int get_num_wrp_resources(void) { @@ -619,18 +625,35 @@ info->address &= ~alignment_mask; info->ctrl.len <<= offset; - /* - * Currently we rely on an overflow handler to take - * care of single-stepping the breakpoint when it fires. - * In the case of userspace breakpoints on a core with V7 debug, - * we can use the mismatch feature as a poor-man's hardware - * single-step, but this only works for per-task breakpoints. - */ - if (!bp->overflow_handler && (arch_check_bp_in_kernelspace(bp) || - !core_has_mismatch_brps() || !bp->hw.bp_target)) { - pr_warning("overflow handler required but none found\n"); - ret = -EINVAL; + if (!bp->overflow_handler) { + /* + * Mismatch breakpoints are required for single-stepping + * breakpoints. + */ + if (!core_has_mismatch_brps()) + return -EINVAL; + + /* We don't allow mismatch breakpoints in kernel space. */ + if (arch_check_bp_in_kernelspace(bp)) + return -EPERM; + + /* + * Per-cpu breakpoints are not supported by our stepping + * mechanism. + */ + if (!bp->hw.bp_target) + return -EINVAL; + + /* + * We only support specific access types if the fsr + * reports them. + */ + if (!debug_exception_updates_fsr() && + (info->ctrl.type == ARM_BREAKPOINT_LOAD || + info->ctrl.type == ARM_BREAKPOINT_STORE)) + return -EINVAL; } + out: return ret; } @@ -706,10 +729,12 @@ goto unlock; /* Check that the access type matches. */ - access = (fsr & ARM_FSR_ACCESS_MASK) ? HW_BREAKPOINT_W : - HW_BREAKPOINT_R; - if (!(access & hw_breakpoint_type(wp))) - goto unlock; + if (debug_exception_updates_fsr()) { + access = (fsr & ARM_FSR_ACCESS_MASK) ? + HW_BREAKPOINT_W : HW_BREAKPOINT_R; + if (!(access & hw_breakpoint_type(wp))) + goto unlock; + } /* We have a winner. */ info->trigger = addr; --- linux-3.5.0.orig/arch/arm/kernel/head.S +++ linux-3.5.0/arch/arm/kernel/head.S @@ -188,13 +188,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 @@ -254,6 +263,7 @@ /* * Then map boot params address in r2 or the first 1MB (2MB with LPAE) * of ram if boot params address is not specified. + * We map 2 sections in case the ATAGs/DTB crosses a section boundary. */ mov r0, r2, lsr #SECTION_SHIFT movs r0, r0, lsl #SECTION_SHIFT @@ -262,8 +272,15 @@ add r3, r3, #PAGE_OFFSET add r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) orr r6, r7, r0 + str r6, [r3], #1 << PMD_ORDER + add r6, r6, #1 << SECTION_SHIFT str r6, [r3] +#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) /* @@ -282,13 +299,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-3.5.0.orig/arch/arm/mach-exynos/pmu.c +++ linux-3.5.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-3.5.0.orig/arch/arm/mach-exynos/include/mach/regs-pmu.h +++ linux-3.5.0/arch/arm/mach-exynos/include/mach/regs-pmu.h @@ -337,6 +337,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-3.5.0.orig/sound/usb/endpoint.h +++ linux-3.5.0/sound/usb/endpoint.h @@ -13,7 +13,7 @@ struct audioformat *fmt, struct snd_usb_endpoint *sync_ep); -int snd_usb_endpoint_start(struct snd_usb_endpoint *ep); +int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep); void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, int force, int can_sleep, int wait); int snd_usb_endpoint_activate(struct snd_usb_endpoint *ep); @@ -21,6 +21,7 @@ void snd_usb_endpoint_free(struct list_head *head); int snd_usb_endpoint_implict_feedback_sink(struct snd_usb_endpoint *ep); +int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep); void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep, struct snd_usb_endpoint *sender, --- linux-3.5.0.orig/sound/usb/endpoint.c +++ linux-3.5.0/sound/usb/endpoint.c @@ -141,7 +141,7 @@ * * For implicit feedback, next_packet_size() is unused. */ -static int next_packet_size(struct snd_usb_endpoint *ep) +int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep) { unsigned long flags; int ret; @@ -177,15 +177,6 @@ ep->retire_data_urb(ep->data_subs, urb); } -static void prepare_outbound_urb_sizes(struct snd_usb_endpoint *ep, - struct snd_urb_ctx *ctx) -{ - int i; - - for (i = 0; i < ctx->packets; ++i) - ctx->packet_size[i] = next_packet_size(ep); -} - /* * Prepare a PLAYBACK urb for submission to the bus. */ @@ -206,7 +197,13 @@ /* no data provider, so send silence */ unsigned int offs = 0; for (i = 0; i < ctx->packets; ++i) { - int counts = ctx->packet_size[i]; + int counts; + + if (ctx->packet_size[i]) + counts = ctx->packet_size[i]; + else + counts = snd_usb_endpoint_next_packet_size(ep); + urb->iso_frame_desc[i].offset = offs * ep->stride; urb->iso_frame_desc[i].length = counts * ep->stride; offs += counts; @@ -370,7 +367,6 @@ goto exit_clear; } - prepare_outbound_urb_sizes(ep, ctx); prepare_outbound_urb(ep, ctx); } else { retire_inbound_urb(ep, ctx); @@ -799,7 +795,9 @@ /** * snd_usb_endpoint_start: start an snd_usb_endpoint * - * @ep: the endpoint to start + * @ep: the endpoint to start + * @can_sleep: flag indicating whether the operation is executed in + * non-atomic context * * A call to this function will increment the use count of the endpoint. * In case it is not already running, the URBs for this endpoint will be @@ -809,7 +807,7 @@ * * Returns an error if the URB submission failed, 0 in all other cases. */ -int snd_usb_endpoint_start(struct snd_usb_endpoint *ep) +int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep) { int err; unsigned int i; @@ -822,8 +820,9 @@ return 0; /* just to be sure */ - deactivate_urbs(ep, 0, 1); - wait_clear_urbs(ep); + deactivate_urbs(ep, 0, can_sleep); + if (can_sleep) + wait_clear_urbs(ep); ep->active_mask = 0; ep->unlink_mask = 0; @@ -854,7 +853,6 @@ goto __error; if (usb_pipeout(ep->pipe)) { - prepare_outbound_urb_sizes(ep, urb->context); prepare_outbound_urb(ep, urb->context); } else { prepare_inbound_urb(ep, urb->context); --- linux-3.5.0.orig/sound/usb/pcm.c +++ linux-3.5.0/sound/usb/pcm.c @@ -71,6 +71,8 @@ unsigned int hwptr_done; subs = (struct snd_usb_substream *)substream->runtime->private_data; + if (subs->stream->chip->shutdown) + return SNDRV_PCM_POS_XRUN; spin_lock(&subs->lock); hwptr_done = subs->hwptr_done; substream->runtime->delay = snd_usb_pcm_delay(subs, @@ -212,7 +214,7 @@ } } -static int start_endpoints(struct snd_usb_substream *subs) +static int start_endpoints(struct snd_usb_substream *subs, int can_sleep) { int err; @@ -225,7 +227,7 @@ snd_printdd(KERN_DEBUG "Starting data EP @%p\n", ep); ep->data_subs = subs; - err = snd_usb_endpoint_start(ep); + err = snd_usb_endpoint_start(ep, can_sleep); if (err < 0) { clear_bit(SUBSTREAM_FLAG_DATA_EP_STARTED, &subs->flags); return err; @@ -236,10 +238,25 @@ !test_and_set_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags)) { struct snd_usb_endpoint *ep = subs->sync_endpoint; + if (subs->data_endpoint->iface != subs->sync_endpoint->iface || + subs->data_endpoint->alt_idx != subs->sync_endpoint->alt_idx) { + err = usb_set_interface(subs->dev, + subs->sync_endpoint->iface, + subs->sync_endpoint->alt_idx); + if (err < 0) { + snd_printk(KERN_ERR + "%d:%d:%d: cannot set interface (%d)\n", + subs->dev->devnum, + subs->sync_endpoint->iface, + subs->sync_endpoint->alt_idx, err); + return -EIO; + } + } + snd_printdd(KERN_DEBUG "Starting sync EP @%p\n", ep); ep->sync_slave = subs->data_endpoint; - err = snd_usb_endpoint_start(ep); + err = snd_usb_endpoint_start(ep, can_sleep); if (err < 0) { clear_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags); return err; @@ -456,8 +473,14 @@ changed = subs->cur_audiofmt != fmt || subs->period_bytes != params_period_bytes(hw_params) || subs->cur_rate != rate; + + down_read(&subs->stream->chip->shutdown_rwsem); + if (subs->stream->chip->shutdown) { + ret = -ENODEV; + goto unlock; + } if ((ret = set_format(subs, fmt)) < 0) - return ret; + goto unlock; if (subs->cur_rate != rate) { struct usb_host_interface *alts; @@ -466,12 +489,11 @@ alts = &iface->altsetting[fmt->altset_idx]; ret = snd_usb_init_sample_rate(subs->stream->chip, fmt->iface, alts, fmt, rate); if (ret < 0) - return ret; + goto unlock; subs->cur_rate = rate; } if (changed) { - mutex_lock(&subs->stream->chip->shutdown_mutex); /* format changed */ stop_endpoints(subs, 0, 0, 0); ret = snd_usb_endpoint_set_params(subs->data_endpoint, hw_params, fmt, @@ -482,8 +504,6 @@ if (subs->sync_endpoint) ret = snd_usb_endpoint_set_params(subs->sync_endpoint, hw_params, fmt, NULL); -unlock: - mutex_unlock(&subs->stream->chip->shutdown_mutex); } if (ret == 0) { @@ -491,6 +511,8 @@ subs->altset_idx = fmt->altset_idx; } +unlock: + up_read(&subs->stream->chip->shutdown_rwsem); return ret; } @@ -506,10 +528,12 @@ subs->cur_audiofmt = NULL; subs->cur_rate = 0; subs->period_bytes = 0; - mutex_lock(&subs->stream->chip->shutdown_mutex); - stop_endpoints(subs, 0, 1, 1); - deactivate_endpoints(subs); - mutex_unlock(&subs->stream->chip->shutdown_mutex); + down_read(&subs->stream->chip->shutdown_rwsem); + if (!subs->stream->chip->shutdown) { + stop_endpoints(subs, 0, 1, 1); + deactivate_endpoints(subs); + } + up_read(&subs->stream->chip->shutdown_rwsem); return snd_pcm_lib_free_vmalloc_buffer(substream); } @@ -522,14 +546,22 @@ { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_usb_substream *subs = runtime->private_data; + int ret = 0; if (! subs->cur_audiofmt) { snd_printk(KERN_ERR "usbaudio: no format is specified!\n"); return -ENXIO; } - if (snd_BUG_ON(!subs->data_endpoint)) - return -EIO; + down_read(&subs->stream->chip->shutdown_rwsem); + if (subs->stream->chip->shutdown) { + ret = -ENODEV; + goto unlock; + } + if (snd_BUG_ON(!subs->data_endpoint)) { + ret = -EIO; + goto unlock; + } /* some unit conversions in runtime */ subs->data_endpoint->maxframesize = @@ -547,9 +579,11 @@ /* for playback, submit the URBs now; otherwise, the first hwptr_done * updates for all URBs would happen at the same time when starting */ if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) - return start_endpoints(subs); + ret = start_endpoints(subs, 1); - return 0; + unlock: + up_read(&subs->stream->chip->shutdown_rwsem); + return ret; } static struct snd_pcm_hardware snd_usb_hardware = @@ -602,7 +636,7 @@ return 0; } /* check whether the period time is >= the data packet interval */ - if (snd_usb_get_speed(subs->dev) != USB_SPEED_FULL) { + if (subs->speed != USB_SPEED_FULL) { ptime = 125 * (1 << fp->datainterval); if (ptime > pt->max || (ptime == pt->max && pt->openmax)) { hwc_debug(" > check: ptime %u > max %u\n", ptime, pt->max); @@ -880,7 +914,7 @@ return err; param_period_time_if_needed = SNDRV_PCM_HW_PARAM_PERIOD_TIME; - if (snd_usb_get_speed(subs->dev) == USB_SPEED_FULL) + if (subs->speed == USB_SPEED_FULL) /* full speed devices have fixed data packet interval */ ptmin = 1000; if (ptmin == 1000) @@ -980,7 +1014,7 @@ stride = runtime->frame_bits >> 3; for (i = 0; i < urb->number_of_packets; i++) { - cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset; + cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset + subs->pkt_offset_adj; if (urb->iso_frame_desc[i].status && printk_ratelimit()) { snd_printdd(KERN_ERR "frame %d active: %d\n", i, urb->iso_frame_desc[i].status); // continue; @@ -1029,6 +1063,7 @@ struct urb *urb) { struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; + struct snd_usb_endpoint *ep = subs->data_endpoint; struct snd_urb_ctx *ctx = urb->context; unsigned int counts, frames, bytes; int i, stride, period_elapsed = 0; @@ -1040,7 +1075,11 @@ urb->number_of_packets = 0; spin_lock_irqsave(&subs->lock, flags); for (i = 0; i < ctx->packets; i++) { - counts = ctx->packet_size[i]; + if (ctx->packet_size[i]) + counts = ctx->packet_size[i]; + else + counts = snd_usb_endpoint_next_packet_size(ep); + /* set up descriptor */ urb->iso_frame_desc[i].offset = frames * stride; urb->iso_frame_desc[i].length = counts * stride; @@ -1091,7 +1130,16 @@ subs->hwptr_done += bytes; if (subs->hwptr_done >= runtime->buffer_size * stride) subs->hwptr_done -= runtime->buffer_size * stride; + + /* update delay with exact number of samples queued */ + runtime->delay = subs->last_delay; runtime->delay += frames; + subs->last_delay = runtime->delay; + + /* realign last_frame_number */ + subs->last_frame_number = usb_get_current_frame_number(subs->dev); + subs->last_frame_number &= 0xFF; /* keep 8 LSBs */ + spin_unlock_irqrestore(&subs->lock, flags); urb->transfer_buffer_length = bytes; if (period_elapsed) @@ -1109,12 +1157,32 @@ struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; int stride = runtime->frame_bits >> 3; int processed = urb->transfer_buffer_length / stride; + int est_delay; + + /* ignore the delay accounting when procssed=0 is given, i.e. + * silent payloads are procssed before handling the actual data + */ + if (!processed) + return; spin_lock_irqsave(&subs->lock, flags); - if (processed > runtime->delay) - runtime->delay = 0; + est_delay = snd_usb_pcm_delay(subs, runtime->rate); + /* update delay with exact number of samples played */ + if (processed > subs->last_delay) + subs->last_delay = 0; else - runtime->delay -= processed; + subs->last_delay -= processed; + runtime->delay = subs->last_delay; + + /* + * Report when delay estimate is off by more than 2ms. + * The error should be lower than 2ms since the estimate relies + * on two reads of a counter updated every ms. + */ + if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2) + snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n", + est_delay, subs->last_delay); + spin_unlock_irqrestore(&subs->lock, flags); } @@ -1172,7 +1240,7 @@ switch (cmd) { case SNDRV_PCM_TRIGGER_START: - err = start_endpoints(subs); + err = start_endpoints(subs, 0); if (err < 0) return err; --- linux-3.5.0.orig/sound/usb/card.h +++ linux-3.5.0/sound/usb/card.h @@ -110,6 +110,7 @@ unsigned int altset_idx; /* USB data format: index of alternate setting */ unsigned int txfr_quirk:1; /* allow sub-frame alignment */ unsigned int fmt_type; /* USB audio format type (1-3) */ + unsigned int pkt_offset_adj; /* Bytes to drop from beginning of packets (for non-compliant devices) */ unsigned int running: 1; /* running status */ @@ -123,6 +124,7 @@ struct snd_usb_endpoint *data_endpoint; struct snd_usb_endpoint *sync_endpoint; unsigned long flags; + unsigned int speed; /* USB_SPEED_XXX */ u64 formats; /* format bitmasks (all or'ed) */ unsigned int num_formats; /* number of supported audio formats (list) */ --- linux-3.5.0.orig/sound/usb/quirks-table.h +++ linux-3.5.0/sound/usb/quirks-table.h @@ -157,7 +157,13 @@ .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL }, { - USB_DEVICE(0x046d, 0x0990), + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | + USB_DEVICE_ID_MATCH_INT_CLASS | + USB_DEVICE_ID_MATCH_INT_SUBCLASS, + .idVendor = 0x046d, + .idProduct = 0x0990, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL, .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { .vendor_name = "Logitech, Inc.", .product_name = "QuickCam Pro 9000", @@ -1622,7 +1628,11 @@ USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108), .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { .ifnum = 0, - .type = QUIRK_MIDI_STANDARD_INTERFACE + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = & (const struct snd_usb_midi_endpoint_info) { + .out_cables = 0x0007, + .in_cables = 0x0007 + } } }, { @@ -1658,7 +1668,7 @@ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { /* .vendor_name = "Roland", */ /* .product_name = "A-PRO", */ - .ifnum = 1, + .ifnum = 0, .type = QUIRK_MIDI_FIXED_ENDPOINT, .data = & (const struct snd_usb_midi_endpoint_info) { .out_cables = 0x0003, @@ -2781,6 +2791,59 @@ } }, +/* Microsoft XboxLive Headset/Xbox Communicator */ +{ + USB_DEVICE(0x045e, 0x0283), + .bInterfaceClass = USB_CLASS_PER_INTERFACE, + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "Microsoft", + .product_name = "XboxLive Headset/Xbox Communicator", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = &(const struct snd_usb_audio_quirk[]) { + { + /* playback */ + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 1, + .iface = 0, + .altsetting = 0, + .altset_idx = 0, + .attributes = 0, + .endpoint = 0x04, + .ep_attr = 0x05, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 22050, + .rate_max = 22050 + } + }, + { + /* capture */ + .ifnum = 1, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 1, + .iface = 1, + .altsetting = 0, + .altset_idx = 0, + .attributes = 0, + .endpoint = 0x85, + .ep_attr = 0x05, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 16000, + .rate_max = 16000 + } + }, + { + .ifnum = -1 + } + } + } +}, + { /* * Some USB MIDI devices don't have an audio control interface, --- linux-3.5.0.orig/sound/usb/clock.c +++ linux-3.5.0/sound/usb/clock.c @@ -111,7 +111,8 @@ return 0; /* If a clock source can't tell us whether it's valid, we assume it is */ - if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID)) + if (!uac2_control_is_readable(cs_desc->bmControls, + UAC2_CS_CONTROL_CLOCK_VALID - 1)) return 1; err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR, --- linux-3.5.0.orig/sound/usb/mixer.c +++ linux-3.5.0/sound/usb/mixer.c @@ -287,25 +287,32 @@ unsigned char buf[2]; int val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1; int timeout = 10; - int err; + int idx = 0, err; err = snd_usb_autoresume(cval->mixer->chip); if (err < 0) return -EIO; + down_read(&chip->shutdown_rwsem); while (timeout-- > 0) { + if (chip->shutdown) + break; + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); if (snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), request, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, val_len) >= val_len) { + validx, idx, buf, val_len) >= val_len) { *value_ret = convert_signed_value(cval, snd_usb_combine_bytes(buf, val_len)); - snd_usb_autosuspend(cval->mixer->chip); - return 0; + err = 0; + goto out; } } - snd_usb_autosuspend(cval->mixer->chip); snd_printdd(KERN_ERR "cannot get ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type); - return -EINVAL; + request, validx, idx, cval->val_type); + err = -EINVAL; + + out: + up_read(&chip->shutdown_rwsem); + snd_usb_autosuspend(cval->mixer->chip); + return err; } static int get_ctl_value_v2(struct usb_mixer_elem_info *cval, int request, int validx, int *value_ret) @@ -313,7 +320,7 @@ struct snd_usb_audio *chip = cval->mixer->chip; unsigned char buf[2 + 3*sizeof(__u16)]; /* enough space for one range */ unsigned char *val; - int ret, size; + int idx = 0, ret, size; __u8 bRequest; if (request == UAC_GET_CUR) { @@ -330,16 +337,22 @@ if (ret) goto error; - ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest, + down_read(&chip->shutdown_rwsem); + if (chip->shutdown) + ret = -ENODEV; + else { + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); + ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, size); + validx, idx, buf, size); + } + up_read(&chip->shutdown_rwsem); snd_usb_autosuspend(chip); if (ret < 0) { error: snd_printk(KERN_ERR "cannot get ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type); + request, validx, idx, cval->val_type); return ret; } @@ -417,7 +430,7 @@ { struct snd_usb_audio *chip = cval->mixer->chip; unsigned char buf[2]; - int val_len, err, timeout = 10; + int idx = 0, val_len, err, timeout = 10; if (cval->mixer->protocol == UAC_VERSION_1) { val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1; @@ -440,19 +453,27 @@ err = snd_usb_autoresume(chip); if (err < 0) return -EIO; - while (timeout-- > 0) + down_read(&chip->shutdown_rwsem); + while (timeout-- > 0) { + if (chip->shutdown) + break; + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); if (snd_usb_ctl_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0), request, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, val_len) >= 0) { - snd_usb_autosuspend(chip); - return 0; + validx, idx, buf, val_len) >= 0) { + err = 0; + goto out; } - snd_usb_autosuspend(chip); + } snd_printdd(KERN_ERR "cannot set ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d, data = %#x/%#x\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type, buf[0], buf[1]); - return -EINVAL; + request, validx, idx, cval->val_type, buf[0], buf[1]); + err = -EINVAL; + + out: + up_read(&chip->shutdown_rwsem); + snd_usb_autosuspend(chip); + return err; } static int set_cur_ctl_value(struct usb_mixer_elem_info *cval, int validx, int value) @@ -690,8 +711,9 @@ case UAC2_CLOCK_SELECTOR: { struct uac_selector_unit_descriptor *d = p1; /* call recursively to retrieve the channel info */ - if (check_input_term(state, d->baSourceID[0], term) < 0) - return -ENODEV; + err = check_input_term(state, d->baSourceID[0], term); + if (err < 0) + return err; term->type = d->bDescriptorSubtype << 16; /* virtual type */ term->id = id; term->name = uac_selector_unit_iSelector(d); @@ -819,7 +841,9 @@ case USB_ID(0x046d, 0x0808): case USB_ID(0x046d, 0x0809): + case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */ case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */ + case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */ case USB_ID(0x046d, 0x0991): /* Most audio usb devices lie about volume resolution. * Most Logitech webcams have res = 384. @@ -1238,16 +1262,23 @@ } channels = (hdr->bLength - 7) / csize - 1; bmaControls = hdr->bmaControls; + if (hdr->bLength < 7 + csize) { + snd_printk(KERN_ERR "usbaudio: unit %u: " + "invalid UAC_FEATURE_UNIT descriptor\n", + unitid); + return -EINVAL; + } } else { struct uac2_feature_unit_descriptor *ftr = _ftr; csize = 4; channels = (hdr->bLength - 6) / 4 - 1; bmaControls = ftr->bmaControls; - } - - if (hdr->bLength < 7 || !csize || hdr->bLength < 7 + csize) { - snd_printk(KERN_ERR "usbaudio: unit %u: invalid UAC_FEATURE_UNIT descriptor\n", unitid); - return -EINVAL; + if (hdr->bLength < 6 + csize) { + snd_printk(KERN_ERR "usbaudio: unit %u: " + "invalid UAC_FEATURE_UNIT descriptor\n", + unitid); + return -EINVAL; + } } /* parse the source unit */ @@ -1255,8 +1286,9 @@ return err; /* determine the input source type and name */ - if (check_input_term(state, hdr->bSourceID, &iterm) < 0) - return -EINVAL; + err = check_input_term(state, hdr->bSourceID, &iterm); + if (err < 0) + return err; master_bits = snd_usb_combine_bytes(bmaControls, csize); /* master configuration quirks */ @@ -1267,6 +1299,13 @@ /* disable non-functional volume control */ master_bits &= ~UAC_CONTROL_BIT(UAC_FU_VOLUME); break; + case USB_ID(0x1130, 0xf211): + snd_printk(KERN_INFO + "usbmixer: volume control quirk for Tenx TP6911 Audio Headset\n"); + /* disable non-functional volume control */ + channels = 0; + break; + } if (channels > 0) first_ch_bits = snd_usb_combine_bytes(bmaControls + csize, csize); @@ -2010,7 +2049,7 @@ state.oterm.type = le16_to_cpu(desc->wTerminalType); state.oterm.name = desc->iTerminal; err = parse_audio_unit(&state, desc->bSourceID); - if (err < 0) + if (err < 0 && err != -EINVAL) return err; } else { /* UAC_VERSION_2 */ struct uac2_output_terminal_descriptor *desc = p; @@ -2022,12 +2061,12 @@ state.oterm.type = le16_to_cpu(desc->wTerminalType); state.oterm.name = desc->iTerminal; err = parse_audio_unit(&state, desc->bSourceID); - if (err < 0) + if (err < 0 && err != -EINVAL) return err; /* for UAC2, use the same approach to also add the clock selectors */ err = parse_audio_unit(&state, desc->bCSourceID); - if (err < 0) + if (err < 0 && err != -EINVAL) return err; } } --- linux-3.5.0.orig/sound/usb/card.c +++ linux-3.5.0/sound/usb/card.c @@ -150,14 +150,32 @@ return -EINVAL; } + alts = &iface->altsetting[0]; + altsd = get_iface_desc(alts); + + /* + * Android with both accessory and audio interfaces enabled gets the + * interface numbers wrong. + */ + if ((chip->usb_id == USB_ID(0x18d1, 0x2d04) || + chip->usb_id == USB_ID(0x18d1, 0x2d05)) && + interface == 0 && + altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC && + altsd->bInterfaceSubClass == USB_SUBCLASS_VENDOR_SPEC) { + interface = 2; + iface = usb_ifnum_to_if(dev, interface); + if (!iface) + return -EINVAL; + alts = &iface->altsetting[0]; + altsd = get_iface_desc(alts); + } + if (usb_interface_claimed(iface)) { snd_printdd(KERN_INFO "%d:%d:%d: skipping, already claimed\n", dev->devnum, ctrlif, interface); return -EINVAL; } - alts = &iface->altsetting[0]; - altsd = get_iface_desc(alts); if ((altsd->bInterfaceClass == USB_CLASS_AUDIO || altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC) && altsd->bInterfaceSubClass == USB_SUBCLASS_MIDISTREAMING) { @@ -339,7 +357,7 @@ } mutex_init(&chip->mutex); - mutex_init(&chip->shutdown_mutex); + init_rwsem(&chip->shutdown_rwsem); chip->index = idx; chip->dev = dev; chip->card = card; @@ -553,15 +571,17 @@ struct snd_usb_audio *chip) { struct snd_card *card; - struct list_head *p; + struct list_head *p, *n; if (chip == (void *)-1L) return; card = chip->card; - mutex_lock(®ister_mutex); - mutex_lock(&chip->shutdown_mutex); + down_write(&chip->shutdown_rwsem); chip->shutdown = 1; + up_write(&chip->shutdown_rwsem); + + mutex_lock(®ister_mutex); chip->num_interfaces--; if (chip->num_interfaces <= 0) { snd_card_disconnect(card); @@ -570,7 +590,7 @@ snd_usb_stream_disconnect(p); } /* release the endpoint resources */ - list_for_each(p, &chip->ep_list) { + list_for_each_safe(p, n, &chip->ep_list) { snd_usb_endpoint_free(p); } /* release the midi resources */ @@ -582,11 +602,9 @@ snd_usb_mixer_disconnect(p); } usb_chip[chip->index] = NULL; - mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); snd_card_free_when_closed(card); } else { - mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); } } @@ -618,16 +636,22 @@ { int err = -ENODEV; - if (!chip->shutdown && !chip->probing) + down_read(&chip->shutdown_rwsem); + if (chip->probing) + err = 0; + else if (!chip->shutdown) err = usb_autopm_get_interface(chip->pm_intf); + up_read(&chip->shutdown_rwsem); return err; } void snd_usb_autosuspend(struct snd_usb_audio *chip) { + down_read(&chip->shutdown_rwsem); if (!chip->shutdown && !chip->probing) usb_autopm_put_interface(chip->pm_intf); + up_read(&chip->shutdown_rwsem); } static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message) --- linux-3.5.0.orig/sound/usb/midi.c +++ linux-3.5.0/sound/usb/midi.c @@ -116,6 +116,7 @@ struct list_head list; struct timer_list error_timer; spinlock_t disc_lock; + struct rw_semaphore disc_rwsem; struct mutex mutex; u32 usb_id; int next_midi_device; @@ -125,8 +126,9 @@ struct snd_usb_midi_in_endpoint *in; } endpoints[MIDI_MAX_ENDPOINTS]; unsigned long input_triggered; - unsigned int opened; + unsigned int opened[2]; unsigned char disconnected; + unsigned char input_running; struct snd_kcontrol *roland_load_ctl; }; @@ -1032,29 +1034,48 @@ snd_usbmidi_input_start(&umidi->list); } -static void substream_open(struct snd_rawmidi_substream *substream, int open) +static int substream_open(struct snd_rawmidi_substream *substream, int dir, + int open) { struct snd_usb_midi* umidi = substream->rmidi->private_data; struct snd_kcontrol *ctl; + down_read(&umidi->disc_rwsem); + if (umidi->disconnected) { + up_read(&umidi->disc_rwsem); + return open ? -ENODEV : 0; + } + mutex_lock(&umidi->mutex); if (open) { - if (umidi->opened++ == 0 && umidi->roland_load_ctl) { - ctl = umidi->roland_load_ctl; - ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; - snd_ctl_notify(umidi->card, + if (!umidi->opened[0] && !umidi->opened[1]) { + if (umidi->roland_load_ctl) { + ctl = umidi->roland_load_ctl; + ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; + snd_ctl_notify(umidi->card, SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); - update_roland_altsetting(umidi); + update_roland_altsetting(umidi); + } } + umidi->opened[dir]++; + if (umidi->opened[1]) + snd_usbmidi_input_start(&umidi->list); } else { - if (--umidi->opened == 0 && umidi->roland_load_ctl) { - ctl = umidi->roland_load_ctl; - ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; - snd_ctl_notify(umidi->card, + umidi->opened[dir]--; + if (!umidi->opened[1]) + snd_usbmidi_input_stop(&umidi->list); + if (!umidi->opened[0] && !umidi->opened[1]) { + if (umidi->roland_load_ctl) { + ctl = umidi->roland_load_ctl; + ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; + snd_ctl_notify(umidi->card, SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); + } } } mutex_unlock(&umidi->mutex); + up_read(&umidi->disc_rwsem); + return 0; } static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) @@ -1062,7 +1083,6 @@ struct snd_usb_midi* umidi = substream->rmidi->private_data; struct usbmidi_out_port* port = NULL; int i, j; - int err; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) if (umidi->endpoints[i].out) @@ -1075,22 +1095,15 @@ snd_BUG(); return -ENXIO; } - err = usb_autopm_get_interface(umidi->iface); - if (err < 0) - return -EIO; + substream->runtime->private_data = port; port->state = STATE_UNKNOWN; - substream_open(substream, 1); - return 0; + return substream_open(substream, 0, 1); } static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream) { - struct snd_usb_midi* umidi = substream->rmidi->private_data; - - substream_open(substream, 0); - usb_autopm_put_interface(umidi->iface); - return 0; + return substream_open(substream, 0, 0); } static void snd_usbmidi_output_trigger(struct snd_rawmidi_substream *substream, int up) @@ -1143,14 +1156,12 @@ static int snd_usbmidi_input_open(struct snd_rawmidi_substream *substream) { - substream_open(substream, 1); - return 0; + return substream_open(substream, 1, 1); } static int snd_usbmidi_input_close(struct snd_rawmidi_substream *substream) { - substream_open(substream, 0); - return 0; + return substream_open(substream, 1, 0); } static void snd_usbmidi_input_trigger(struct snd_rawmidi_substream *substream, int up) @@ -1399,9 +1410,12 @@ * a timer may submit an URB. To reliably break the cycle * a flag under lock must be used */ + down_write(&umidi->disc_rwsem); spin_lock_irq(&umidi->disc_lock); umidi->disconnected = 1; spin_unlock_irq(&umidi->disc_lock); + up_write(&umidi->disc_rwsem); + for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; if (ep->out) @@ -2056,12 +2070,15 @@ unsigned int i, j; umidi = list_entry(p, struct snd_usb_midi, list); + if (!umidi->input_running) + return; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; if (ep->in) for (j = 0; j < INPUT_URBS; ++j) usb_kill_urb(ep->in->urbs[j]); } + umidi->input_running = 0; } static void snd_usbmidi_input_start_ep(struct snd_usb_midi_in_endpoint* ep) @@ -2086,8 +2103,11 @@ int i; umidi = list_entry(p, struct snd_usb_midi, list); + if (umidi->input_running || !umidi->opened[1]) + return; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) snd_usbmidi_input_start_ep(umidi->endpoints[i].in); + umidi->input_running = 1; } /* @@ -2113,6 +2133,7 @@ umidi->usb_protocol_ops = &snd_usbmidi_standard_ops; init_timer(&umidi->error_timer); spin_lock_init(&umidi->disc_lock); + init_rwsem(&umidi->disc_rwsem); mutex_init(&umidi->mutex); umidi->usb_id = USB_ID(le16_to_cpu(umidi->dev->descriptor.idVendor), le16_to_cpu(umidi->dev->descriptor.idProduct)); @@ -2224,10 +2245,9 @@ return err; } - list_add_tail(&umidi->list, midi_list); + usb_autopm_get_interface_no_resume(umidi->iface); - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) - snd_usbmidi_input_start_ep(umidi->endpoints[i].in); + list_add_tail(&umidi->list, midi_list); return 0; } --- linux-3.5.0.orig/sound/usb/stream.c +++ linux-3.5.0/sound/usb/stream.c @@ -90,6 +90,8 @@ subs->direction = stream; subs->dev = as->chip->dev; subs->txfr_quirk = as->chip->txfr_quirk; + subs->speed = snd_usb_get_speed(subs->dev); + subs->pkt_offset_adj = 0; snd_usb_set_pcm_ops(as->pcm, stream); @@ -192,6 +194,14 @@ if (!csep && altsd->bNumEndpoints >= 2) csep = snd_usb_find_desc(alts->endpoint[1].extra, alts->endpoint[1].extralen, NULL, USB_DT_CS_ENDPOINT); + /* + * If we can't locate the USB_DT_CS_ENDPOINT descriptor in the extra + * bytes after the first endpoint, go search the entire interface. + * Some devices have it directly *before* the standard endpoint. + */ + if (!csep) + csep = snd_usb_find_desc(alts->extra, alts->extralen, NULL, USB_DT_CS_ENDPOINT); + if (!csep || csep->bLength < 7 || csep->bDescriptorSubtype != UAC_EP_GENERAL) { snd_printk(KERN_WARNING "%d:%u:%d : no or invalid" --- linux-3.5.0.orig/sound/usb/quirks.c +++ linux-3.5.0/sound/usb/quirks.c @@ -387,11 +387,13 @@ * rules */ err = usb_driver_set_configuration(dev, 2); - if (err < 0) { + if (err < 0) snd_printdd("error usb_driver_set_configuration: %d\n", err); - return -ENODEV; - } + /* Always return an error, so that we stop creating a device + that will just be destroyed and recreated with a new + configuration */ + return -ENODEV; } else snd_printk(KERN_INFO "usb-audio: Fast Track Pro config OK\n"); @@ -484,7 +486,7 @@ { int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 0xaf, USB_TYPE_VENDOR | USB_RECIP_DEVICE, - cpu_to_le16(1), 0, NULL, 0, 1000); + 1, 0, NULL, 0, 1000); if (ret < 0) return ret; @@ -746,6 +748,7 @@ break; } snd_emuusb_set_samplerate(subs->stream->chip, emu_samplerate_id); + subs->pkt_offset_adj = (emu_samplerate_id >= EMU_QUIRK_SR_176400HZ) ? 4 : 0; } void snd_usb_set_format_quirk(struct snd_usb_substream *subs, --- linux-3.5.0.orig/sound/usb/proc.c +++ linux-3.5.0/sound/usb/proc.c @@ -108,7 +108,7 @@ } snd_iprintf(buffer, "\n"); } - if (snd_usb_get_speed(subs->dev) != USB_SPEED_FULL) + if (subs->speed != USB_SPEED_FULL) snd_iprintf(buffer, " Data packet interval: %d us\n", 125 * (1 << fp->datainterval)); // snd_iprintf(buffer, " Max Packet Size = %d\n", fp->maxpacksize); @@ -124,7 +124,7 @@ return; snd_iprintf(buffer, " Packet Size = %d\n", ep->curpacksize); snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n", - snd_usb_get_speed(subs->dev) == USB_SPEED_FULL + subs->speed == USB_SPEED_FULL ? get_full_speed_hz(ep->freqm) : get_high_speed_hz(ep->freqm), ep->freqm >> 16, ep->freqm & 0xffff); --- linux-3.5.0.orig/sound/usb/mixer_quirks.c +++ linux-3.5.0/sound/usb/mixer_quirks.c @@ -257,6 +257,11 @@ if (value > 1) return -EINVAL; changed = value != mixer->audigy2nx_leds[index]; + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) { + err = -ENODEV; + goto out; + } if (mixer->chip->usb_id == USB_ID(0x041e, 0x3042)) err = snd_usb_ctl_msg(mixer->chip->dev, usb_sndctrlpipe(mixer->chip->dev, 0), 0x24, @@ -273,6 +278,8 @@ usb_sndctrlpipe(mixer->chip->dev, 0), 0x24, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, value, index + 2, NULL, 0); + out: + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; mixer->audigy2nx_leds[index] = value; @@ -366,11 +373,16 @@ for (i = 0; jacks[i].name; ++i) { snd_iprintf(buffer, "%s: ", jacks[i].name); - err = snd_usb_ctl_msg(mixer->chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = 0; + else + err = snd_usb_ctl_msg(mixer->chip->dev, usb_rcvctrlpipe(mixer->chip->dev, 0), UAC_GET_MEM, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, jacks[i].unitid << 8, buf, 3); + up_read(&mixer->chip->shutdown_rwsem); if (err == 3 && (buf[0] == 3 || buf[0] == 6)) snd_iprintf(buffer, "%02x %02x\n", buf[1], buf[2]); else @@ -400,10 +412,15 @@ else new_status = old_status & ~0x02; changed = new_status != old_status; - err = snd_usb_ctl_msg(mixer->chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(mixer->chip->dev, usb_sndctrlpipe(mixer->chip->dev, 0), 0x08, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, 50, 0, &new_status, 1); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; mixer->xonar_u1_status = new_status; @@ -442,11 +459,17 @@ u8 bRequest = (kcontrol->private_value >> 16) & 0xff; u16 wIndex = kcontrol->private_value & 0xffff; u8 tmp; + int ret; - int ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + ret = -ENODEV; + else + ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, - 0, cpu_to_le16(wIndex), + 0, wIndex, &tmp, sizeof(tmp), 1000); + up_read(&mixer->chip->shutdown_rwsem); if (ret < 0) { snd_printk(KERN_ERR @@ -467,11 +490,17 @@ u8 bRequest = (kcontrol->private_value >> 16) & 0xff; u16 wIndex = kcontrol->private_value & 0xffff; u16 wValue = ucontrol->value.integer.value[0]; + int ret; - int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + ret = -ENODEV; + else + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, - cpu_to_le16(wValue), cpu_to_le16(wIndex), + wValue, wIndex, NULL, 0, 1000); + up_read(&mixer->chip->shutdown_rwsem); if (ret < 0) { snd_printk(KERN_ERR @@ -630,11 +659,16 @@ return -EINVAL; - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), UAC_GET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; @@ -677,11 +711,16 @@ if (!pval->is_cached) { /* Read current value */ - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), UAC_GET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; @@ -693,11 +732,16 @@ if (cur_val != new_val) { value[0] = new_val; value[1] = 0; - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0), UAC_SET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; --- linux-3.5.0.orig/sound/usb/usbaudio.h +++ linux-3.5.0/sound/usb/usbaudio.h @@ -37,7 +37,7 @@ struct usb_interface *pm_intf; u32 usb_id; struct mutex mutex; - struct mutex shutdown_mutex; + struct rw_semaphore shutdown_rwsem; unsigned int shutdown:1; unsigned int probing:1; unsigned int autosuspended:1; --- linux-3.5.0.orig/sound/core/pcm_native.c +++ linux-3.5.0/sound/core/pcm_native.c @@ -369,6 +369,14 @@ return usecs; } +static void snd_pcm_set_state(struct snd_pcm_substream *substream, int state) +{ + snd_pcm_stream_lock_irq(substream); + if (substream->runtime->status->state != SNDRV_PCM_STATE_DISCONNECTED) + substream->runtime->status->state = state; + snd_pcm_stream_unlock_irq(substream); +} + static int snd_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { @@ -452,7 +460,7 @@ runtime->boundary *= 2; snd_pcm_timer_resolution_change(substream); - runtime->status->state = SNDRV_PCM_STATE_SETUP; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_SETUP); if (pm_qos_request_active(&substream->latency_pm_qos_req)) pm_qos_remove_request(&substream->latency_pm_qos_req); @@ -464,7 +472,7 @@ /* hardware might be unusable from this time, so we force application to retry to set the correct hardware parameter settings */ - runtime->status->state = SNDRV_PCM_STATE_OPEN; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_OPEN); if (substream->ops->hw_free != NULL) substream->ops->hw_free(substream); return err; @@ -512,7 +520,7 @@ return -EBADFD; if (substream->ops->hw_free) result = substream->ops->hw_free(substream); - runtime->status->state = SNDRV_PCM_STATE_OPEN; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_OPEN); pm_qos_remove_request(&substream->latency_pm_qos_req); return result; } @@ -1320,7 +1328,7 @@ { struct snd_pcm_runtime *runtime = substream->runtime; runtime->control->appl_ptr = runtime->status->hw_ptr; - runtime->status->state = SNDRV_PCM_STATE_PREPARED; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_PREPARED); } static struct action_ops snd_pcm_action_prepare = { @@ -1510,6 +1518,10 @@ down_read(&snd_pcm_link_rwsem); snd_pcm_stream_lock_irq(substream); remove_wait_queue(&to_check->sleep, &wait); + if (card->shutdown) { + result = -ENODEV; + break; + } if (tout == 0) { if (substream->runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) result = -ESTRPIPE; @@ -1621,6 +1633,7 @@ } if (!snd_pcm_stream_linked(substream)) { substream->group = group; + group = NULL; spin_lock_init(&substream->group->lock); INIT_LIST_HEAD(&substream->group->substreams); list_add_tail(&substream->link_list, &substream->group->substreams); @@ -1633,9 +1646,9 @@ write_unlock_irq(&snd_pcm_link_rwlock); up_write(&snd_pcm_link_rwsem); _nolock: + snd_card_unref(substream1->pcm->card); fput(file); - if (res < 0) - kfree(group); + kfree(group); return res; } @@ -2107,7 +2120,10 @@ return err; pcm = snd_lookup_minor_data(iminor(inode), SNDRV_DEVICE_TYPE_PCM_PLAYBACK); - return snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_PLAYBACK); + err = snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_PLAYBACK); + if (pcm) + snd_card_unref(pcm->card); + return err; } static int snd_pcm_capture_open(struct inode *inode, struct file *file) @@ -2118,7 +2134,10 @@ return err; pcm = snd_lookup_minor_data(iminor(inode), SNDRV_DEVICE_TYPE_PCM_CAPTURE); - return snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_CAPTURE); + err = snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_CAPTURE); + if (pcm) + snd_card_unref(pcm->card); + return err; } static int snd_pcm_open(struct file *file, struct snd_pcm *pcm, int stream) @@ -2155,6 +2174,10 @@ mutex_unlock(&pcm->open_mutex); schedule(); mutex_lock(&pcm->open_mutex); + if (pcm->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -3196,18 +3219,10 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_struct *area) { - long size; - unsigned long offset; + struct snd_pcm_runtime *runtime = substream->runtime;; area->vm_page_prot = pgprot_noncached(area->vm_page_prot); - area->vm_flags |= VM_IO; - size = area->vm_end - area->vm_start; - offset = area->vm_pgoff << PAGE_SHIFT; - if (io_remap_pfn_range(area, area->vm_start, - (substream->runtime->dma_addr + offset) >> PAGE_SHIFT, - size, area->vm_page_prot)) - return -EAGAIN; - return 0; + return vm_iomap_memory(area, runtime->dma_addr, runtime->dma_bytes); } EXPORT_SYMBOL(snd_pcm_lib_mmap_iomem); --- linux-3.5.0.orig/sound/core/hwdep.c +++ linux-3.5.0/sound/core/hwdep.c @@ -100,8 +100,10 @@ if (hw == NULL) return -ENODEV; - if (!try_module_get(hw->card->module)) + if (!try_module_get(hw->card->module)) { + snd_card_unref(hw->card); return -EFAULT; + } init_waitqueue_entry(&wait, current); add_wait_queue(&hw->open_wait, &wait); @@ -129,6 +131,10 @@ mutex_unlock(&hw->open_mutex); schedule(); mutex_lock(&hw->open_mutex); + if (hw->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -148,6 +154,7 @@ mutex_unlock(&hw->open_mutex); if (err < 0) module_put(hw->card->module); + snd_card_unref(hw->card); return err; } @@ -459,12 +466,15 @@ mutex_unlock(®ister_mutex); return -EINVAL; } + mutex_lock(&hwdep->open_mutex); + wake_up(&hwdep->open_wait); #ifdef CONFIG_SND_OSSEMUL if (hwdep->ossreg) snd_unregister_oss_device(hwdep->oss_type, hwdep->card, hwdep->device); #endif snd_unregister_device(SNDRV_DEVICE_TYPE_HWDEP, hwdep->card, hwdep->device); list_del_init(&hwdep->list); + mutex_unlock(&hwdep->open_mutex); mutex_unlock(®ister_mutex); return 0; } --- linux-3.5.0.orig/sound/core/pcm.c +++ linux-3.5.0/sound/core/pcm.c @@ -1086,11 +1086,19 @@ if (list_empty(&pcm->list)) goto unlock; + mutex_lock(&pcm->open_mutex); + wake_up(&pcm->open_wait); list_del_init(&pcm->list); for (cidx = 0; cidx < 2; cidx++) - for (substream = pcm->streams[cidx].substream; substream; substream = substream->next) - if (substream->runtime) + for (substream = pcm->streams[cidx].substream; substream; substream = substream->next) { + snd_pcm_stream_lock_irq(substream); + if (substream->runtime) { substream->runtime->status->state = SNDRV_PCM_STATE_DISCONNECTED; + wake_up(&substream->runtime->sleep); + wake_up(&substream->runtime->tsleep); + } + snd_pcm_stream_unlock_irq(substream); + } list_for_each_entry(notify, &snd_pcm_notify_list, list) { notify->n_disconnect(pcm); } @@ -1106,6 +1114,7 @@ } snd_unregister_device(devtype, pcm->card, pcm->device); } + mutex_unlock(&pcm->open_mutex); unlock: mutex_unlock(®ister_mutex); return 0; --- linux-3.5.0.orig/sound/core/compress_offload.c +++ linux-3.5.0/sound/core/compress_offload.c @@ -102,12 +102,15 @@ if (dirn != compr->direction) { pr_err("this device doesn't support this direction\n"); + snd_card_unref(compr->card); return -EINVAL; } data = kzalloc(sizeof(*data), GFP_KERNEL); - if (!data) + if (!data) { + snd_card_unref(compr->card); return -ENOMEM; + } data->stream.ops = compr->ops; data->stream.direction = dirn; data->stream.private_data = compr->private_data; @@ -115,6 +118,7 @@ runtime = kzalloc(sizeof(*runtime), GFP_KERNEL); if (!runtime) { kfree(data); + snd_card_unref(compr->card); return -ENOMEM; } runtime->state = SNDRV_PCM_STATE_OPEN; @@ -128,7 +132,8 @@ kfree(runtime); kfree(data); } - return ret; + snd_card_unref(compr->card); + return 0; } static int snd_compr_free(struct inode *inode, struct file *f) --- linux-3.5.0.orig/sound/core/sound_oss.c +++ linux-3.5.0/sound/core/sound_oss.c @@ -40,6 +40,9 @@ static struct snd_minor *snd_oss_minors[SNDRV_OSS_MINORS]; static DEFINE_MUTEX(sound_oss_mutex); +/* NOTE: This function increments the refcount of the associated card like + * snd_lookup_minor_data(); the caller must call snd_card_unref() appropriately + */ void *snd_lookup_oss_minor_data(unsigned int minor, int type) { struct snd_minor *mreg; @@ -49,9 +52,11 @@ return NULL; mutex_lock(&sound_oss_mutex); mreg = snd_oss_minors[minor]; - if (mreg && mreg->type == type) + if (mreg && mreg->type == type) { private_data = mreg->private_data; - else + if (private_data && mreg->card_ptr) + atomic_inc(&mreg->card_ptr->refcount); + } else private_data = NULL; mutex_unlock(&sound_oss_mutex); return private_data; @@ -123,6 +128,7 @@ preg->device = dev; preg->f_ops = f_ops; preg->private_data = private_data; + preg->card_ptr = card; mutex_lock(&sound_oss_mutex); snd_oss_minors[minor] = preg; minor_unit = SNDRV_MINOR_OSS_DEVICE(minor); --- linux-3.5.0.orig/sound/core/init.c +++ linux-3.5.0/sound/core/init.c @@ -213,6 +213,7 @@ spin_lock_init(&card->files_lock); INIT_LIST_HEAD(&card->files_list); init_waitqueue_head(&card->shutdown_sleep); + atomic_set(&card->refcount, 0); #ifdef CONFIG_PM mutex_init(&card->power_lock); init_waitqueue_head(&card->power_sleep); @@ -446,21 +447,36 @@ return 0; } +/** + * snd_card_unref - release the reference counter + * @card: the card instance + * + * Decrements the reference counter. When it reaches to zero, wake up + * the sleeper and call the destructor if needed. + */ +void snd_card_unref(struct snd_card *card) +{ + if (atomic_dec_and_test(&card->refcount)) { + wake_up(&card->shutdown_sleep); + if (card->free_on_last_close) + snd_card_do_free(card); + } +} +EXPORT_SYMBOL(snd_card_unref); + int snd_card_free_when_closed(struct snd_card *card) { - int free_now = 0; - int ret = snd_card_disconnect(card); - if (ret) - return ret; + int ret; - spin_lock(&card->files_lock); - if (list_empty(&card->files_list)) - free_now = 1; - else - card->free_on_last_close = 1; - spin_unlock(&card->files_lock); + atomic_inc(&card->refcount); + ret = snd_card_disconnect(card); + if (ret) { + atomic_dec(&card->refcount); + return ret; + } - if (free_now) + card->free_on_last_close = 1; + if (atomic_dec_and_test(&card->refcount)) snd_card_do_free(card); return 0; } @@ -474,7 +490,7 @@ return ret; /* wait, until all devices are ready for the free operation */ - wait_event(card->shutdown_sleep, list_empty(&card->files_list)); + wait_event(card->shutdown_sleep, !atomic_read(&card->refcount)); snd_card_do_free(card); return 0; } @@ -886,6 +902,7 @@ return -ENODEV; } list_add(&mfile->list, &card->files_list); + atomic_inc(&card->refcount); spin_unlock(&card->files_lock); return 0; } @@ -908,7 +925,6 @@ int snd_card_file_remove(struct snd_card *card, struct file *file) { struct snd_monitor_file *mfile, *found = NULL; - int last_close = 0; spin_lock(&card->files_lock); list_for_each_entry(mfile, &card->files_list, list) { @@ -923,19 +939,13 @@ break; } } - if (list_empty(&card->files_list)) - last_close = 1; spin_unlock(&card->files_lock); - if (last_close) { - wake_up(&card->shutdown_sleep); - if (card->free_on_last_close) - snd_card_do_free(card); - } if (!found) { snd_printk(KERN_ERR "ALSA card file remove problem (%p)\n", file); return -ENOENT; } kfree(found); + snd_card_unref(card); return 0; } --- linux-3.5.0.orig/sound/core/sound.c +++ linux-3.5.0/sound/core/sound.c @@ -99,6 +99,10 @@ * * Checks that a minor device with the specified type is registered, and returns * its user data pointer. + * + * This function increments the reference counter of the card instance + * if an associated instance with the given minor number and type is found. + * The caller must call snd_card_unref() appropriately later. */ void *snd_lookup_minor_data(unsigned int minor, int type) { @@ -109,9 +113,11 @@ return NULL; mutex_lock(&sound_mutex); mreg = snd_minors[minor]; - if (mreg && mreg->type == type) + if (mreg && mreg->type == type) { private_data = mreg->private_data; - else + if (private_data && mreg->card_ptr) + atomic_inc(&mreg->card_ptr->refcount); + } else private_data = NULL; mutex_unlock(&sound_mutex); return private_data; @@ -276,6 +282,7 @@ preg->device = dev; preg->f_ops = f_ops; preg->private_data = private_data; + preg->card_ptr = card; mutex_lock(&sound_mutex); #ifdef CONFIG_SND_DYNAMIC_MINORS minor = snd_find_free_minor(type); --- linux-3.5.0.orig/sound/core/control.c +++ linux-3.5.0/sound/core/control.c @@ -86,6 +86,7 @@ write_lock_irqsave(&card->ctl_files_rwlock, flags); list_add_tail(&ctl->list, &card->ctl_files); write_unlock_irqrestore(&card->ctl_files_rwlock, flags); + snd_card_unref(card); return 0; __error: @@ -93,6 +94,8 @@ __error2: snd_card_file_remove(card, file); __error1: + if (card) + snd_card_unref(card); return err; } @@ -1433,6 +1436,8 @@ spin_unlock_irq(&ctl->read_lock); schedule(); remove_wait_queue(&ctl->change_sleep, &wait); + if (ctl->card->shutdown) + return -ENODEV; if (signal_pending(current)) return -ERESTARTSYS; spin_lock_irq(&ctl->read_lock); --- linux-3.5.0.orig/sound/core/vmaster.c +++ linux-3.5.0/sound/core/vmaster.c @@ -213,7 +213,10 @@ } if (!changed) return 0; - return slave_put_val(slave, ucontrol); + err = slave_put_val(slave, ucontrol); + if (err < 0) + return err; + return 1; } static int slave_tlv_cmd(struct snd_kcontrol *kcontrol, --- linux-3.5.0.orig/sound/core/rawmidi.c +++ linux-3.5.0/sound/core/rawmidi.c @@ -379,8 +379,10 @@ if (rmidi == NULL) return -ENODEV; - if (!try_module_get(rmidi->card->module)) + if (!try_module_get(rmidi->card->module)) { + snd_card_unref(rmidi->card); return -ENXIO; + } mutex_lock(&rmidi->open_mutex); card = rmidi->card; @@ -422,6 +424,10 @@ mutex_unlock(&rmidi->open_mutex); schedule(); mutex_lock(&rmidi->open_mutex); + if (rmidi->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -440,6 +446,7 @@ #endif file->private_data = rawmidi_file; mutex_unlock(&rmidi->open_mutex); + snd_card_unref(rmidi->card); return 0; __error: @@ -447,6 +454,7 @@ __error_card: mutex_unlock(&rmidi->open_mutex); module_put(rmidi->card->module); + snd_card_unref(rmidi->card); return err; } @@ -991,6 +999,8 @@ spin_unlock_irq(&runtime->lock); schedule(); remove_wait_queue(&runtime->sleep, &wait); + if (rfile->rmidi->card->shutdown) + return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; if (!runtime->avail) @@ -1234,6 +1244,8 @@ spin_unlock_irq(&runtime->lock); timeout = schedule_timeout(30 * HZ); remove_wait_queue(&runtime->sleep, &wait); + if (rfile->rmidi->card->shutdown) + return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; if (!runtime->avail && !timeout) @@ -1609,9 +1621,20 @@ static int snd_rawmidi_dev_disconnect(struct snd_device *device) { struct snd_rawmidi *rmidi = device->device_data; + int dir; mutex_lock(®ister_mutex); + mutex_lock(&rmidi->open_mutex); + wake_up(&rmidi->open_wait); list_del_init(&rmidi->list); + for (dir = 0; dir < 2; dir++) { + struct snd_rawmidi_substream *s; + list_for_each_entry(s, &rmidi->streams[dir].substreams, list) { + if (s->runtime) + wake_up(&s->runtime->sleep); + } + } + #ifdef CONFIG_SND_OSSEMUL if (rmidi->ossreg) { if ((int)rmidi->device == midi_map[rmidi->card->number]) { @@ -1626,6 +1649,7 @@ } #endif /* CONFIG_SND_OSSEMUL */ snd_unregister_device(SNDRV_DEVICE_TYPE_RAWMIDI, rmidi->card, rmidi->device); + mutex_unlock(&rmidi->open_mutex); mutex_unlock(®ister_mutex); return 0; } --- linux-3.5.0.orig/sound/core/oss/mixer_oss.c +++ linux-3.5.0/sound/core/oss/mixer_oss.c @@ -52,14 +52,19 @@ SNDRV_OSS_DEVICE_TYPE_MIXER); if (card == NULL) return -ENODEV; - if (card->mixer_oss == NULL) + if (card->mixer_oss == NULL) { + snd_card_unref(card); return -ENODEV; + } err = snd_card_file_add(card, file); - if (err < 0) + if (err < 0) { + snd_card_unref(card); return err; + } fmixer = kzalloc(sizeof(*fmixer), GFP_KERNEL); if (fmixer == NULL) { snd_card_file_remove(card, file); + snd_card_unref(card); return -ENOMEM; } fmixer->card = card; @@ -68,8 +73,10 @@ if (!try_module_get(card->module)) { kfree(fmixer); snd_card_file_remove(card, file); + snd_card_unref(card); return -EFAULT; } + snd_card_unref(card); return 0; } --- linux-3.5.0.orig/sound/core/oss/pcm_oss.c +++ linux-3.5.0/sound/core/oss/pcm_oss.c @@ -2441,6 +2441,10 @@ mutex_unlock(&pcm->open_mutex); schedule(); mutex_lock(&pcm->open_mutex); + if (pcm->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -2450,6 +2454,7 @@ mutex_unlock(&pcm->open_mutex); if (err < 0) goto __error; + snd_card_unref(pcm->card); return err; __error: @@ -2457,6 +2462,8 @@ __error2: snd_card_file_remove(pcm->card, file); __error1: + if (pcm) + snd_card_unref(pcm->card); return err; } --- linux-3.5.0.orig/sound/core/seq/seq_timer.c +++ linux-3.5.0/sound/core/seq/seq_timer.c @@ -290,10 +290,10 @@ tid.device = SNDRV_TIMER_GLOBAL_SYSTEM; err = snd_timer_open(&t, str, &tid, q->queue); } - if (err < 0) { - snd_printk(KERN_ERR "seq fatal error: cannot create timer (%i)\n", err); - return err; - } + } + if (err < 0) { + snd_printk(KERN_ERR "seq fatal error: cannot create timer (%i)\n", err); + return err; } t->callback = snd_seq_timer_interrupt; t->callback_data = q; --- linux-3.5.0.orig/sound/soc/soc-core.c +++ linux-3.5.0/sound/soc/soc-core.c @@ -2692,8 +2692,9 @@ val = (ucontrol->value.integer.value[0] + min) & mask; val = val << shift; - if (snd_soc_update_bits_locked(codec, reg, val_mask, val)) - return err; + err = snd_soc_update_bits_locked(codec, reg, val_mask, val); + if (err < 0) + return err; if (snd_soc_volsw_is_stereo(mc)) { val_mask = mask << rshift; --- linux-3.5.0.orig/sound/soc/soc-dapm.c +++ linux-3.5.0/sound/soc/soc-dapm.c @@ -1570,7 +1570,15 @@ } list_for_each_entry(w, &card->widgets, list) { - list_del_init(&w->dirty); + switch (w->id) { + case snd_soc_dapm_pre: + case snd_soc_dapm_post: + /* These widgets always need to be powered */ + break; + default: + list_del_init(&w->dirty); + break; + } if (w->power) { d = w->dapm; @@ -3538,10 +3546,13 @@ static void soc_dapm_shutdown_codec(struct snd_soc_dapm_context *dapm) { + struct snd_soc_card *card = dapm->card; struct snd_soc_dapm_widget *w; LIST_HEAD(down_list); int powerdown = 0; + mutex_lock(&card->dapm_mutex); + list_for_each_entry(w, &dapm->card->widgets, list) { if (w->dapm != dapm) continue; @@ -3564,6 +3575,8 @@ snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_STANDBY); } + + mutex_unlock(&card->dapm_mutex); } /* @@ -3573,7 +3586,7 @@ { struct snd_soc_codec *codec; - list_for_each_entry(codec, &card->codec_dev_list, list) { + list_for_each_entry(codec, &card->codec_dev_list, card_list) { soc_dapm_shutdown_codec(&codec->dapm); if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) snd_soc_dapm_set_bias_level(&codec->dapm, --- linux-3.5.0.orig/sound/soc/Makefile +++ linux-3.5.0/sound/soc/Makefile @@ -1,8 +1,9 @@ snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o soc-cache.o soc-utils.o snd-soc-core-objs += soc-pcm.o soc-io.o -snd-soc-dmaengine-pcm-objs := soc-dmaengine-pcm.o -obj-$(CONFIG_SND_SOC_DMAENGINE_PCM) += snd-soc-dmaengine-pcm.o +ifneq ($(CONFIG_SND_SOC_DMAENGINE_PCM),) +snd-soc-core-objs += soc-dmaengine-pcm.o +endif obj-$(CONFIG_SND_SOC) += snd-soc-core.o obj-$(CONFIG_SND_SOC) += codecs/ --- linux-3.5.0.orig/sound/soc/soc-pcm.c +++ linux-3.5.0/sound/soc/soc-pcm.c @@ -1240,6 +1240,7 @@ if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_PARAMS) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PREPARE) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_FREE) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP)) continue; --- linux-3.5.0.orig/sound/soc/codecs/wm8903.c +++ linux-3.5.0/sound/soc/codecs/wm8903.c @@ -1082,6 +1082,8 @@ { "ROP", NULL, "Right Speaker PGA" }, { "RON", NULL, "Right Speaker PGA" }, + { "Charge Pump", NULL, "CLK_DSP" }, + { "Left Headphone Output PGA", NULL, "Charge Pump" }, { "Right Headphone Output PGA", NULL, "Charge Pump" }, { "Left Line Output PGA", NULL, "Charge Pump" }, --- linux-3.5.0.orig/sound/soc/codecs/wm5100.c +++ linux-3.5.0/sound/soc/codecs/wm5100.c @@ -1279,15 +1279,9 @@ case SND_SOC_DAIFMT_DSP_A: mask = 0; break; - case SND_SOC_DAIFMT_DSP_B: - mask = 1; - break; case SND_SOC_DAIFMT_I2S: mask = 2; break; - case SND_SOC_DAIFMT_LEFT_J: - mask = 3; - break; default: dev_err(codec->dev, "Unsupported DAI format %d\n", fmt & SND_SOC_DAIFMT_FORMAT_MASK); --- linux-3.5.0.orig/sound/soc/codecs/wm2000.c +++ linux-3.5.0/sound/soc/codecs/wm2000.c @@ -188,9 +188,9 @@ ret = wm2000_read(i2c, WM2000_REG_SPEECH_CLARITY); if (wm2000->speech_clarity) - ret &= ~WM2000_SPEECH_CLARITY; - else ret |= WM2000_SPEECH_CLARITY; + else + ret &= ~WM2000_SPEECH_CLARITY; wm2000_write(i2c, WM2000_REG_SPEECH_CLARITY, ret); wm2000_write(i2c, WM2000_REG_SYS_START0, 0x33); @@ -675,7 +675,7 @@ #endif static const struct regmap_config wm2000_regmap = { - .reg_bits = 8, + .reg_bits = 16, .val_bits = 8, }; --- linux-3.5.0.orig/sound/soc/codecs/cs42l52.c +++ linux-3.5.0/sound/soc/codecs/cs42l52.c @@ -88,7 +88,7 @@ { CS42L52_BEEP_VOL, 0x00 }, /* r1D Beep Volume off Time */ { CS42L52_BEEP_TONE_CTL, 0x00 }, /* r1E Beep Tone Cfg. */ { CS42L52_TONE_CTL, 0x00 }, /* r1F Tone Ctl */ - { CS42L52_MASTERA_VOL, 0x88 }, /* r20 Master A Volume */ + { CS42L52_MASTERA_VOL, 0x00 }, /* r20 Master A Volume */ { CS42L52_MASTERB_VOL, 0x00 }, /* r21 Master B Volume */ { CS42L52_HPA_VOL, 0x00 }, /* r22 Headphone A Volume */ { CS42L52_HPB_VOL, 0x00 }, /* r23 Headphone B Volume */ @@ -775,7 +775,6 @@ { struct snd_soc_codec *codec = codec_dai->codec; struct cs42l52_private *cs42l52 = snd_soc_codec_get_drvdata(codec); - int ret = 0; u8 iface = 0; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -824,7 +823,7 @@ case SND_SOC_DAIFMT_NB_IF: break; default: - ret = -EINVAL; + return -EINVAL; } cs42l52->config.format = iface; snd_soc_write(codec, CS42L52_IFACE_CTL1, cs42l52->config.format); --- linux-3.5.0.orig/sound/soc/codecs/sigmadsp.c +++ linux-3.5.0/sound/soc/codecs/sigmadsp.c @@ -225,7 +225,7 @@ static int sigma_action_write_regmap(void *control_data, const struct sigma_action *sa, size_t len) { - return regmap_raw_write(control_data, le16_to_cpu(sa->addr), + return regmap_raw_write(control_data, be16_to_cpu(sa->addr), sa->payload, len - 2); } --- linux-3.5.0.orig/sound/soc/codecs/wm8978.c +++ linux-3.5.0/sound/soc/codecs/wm8978.c @@ -782,7 +782,7 @@ wm8978->mclk_idx = -1; f_sel = wm8978->f_mclk; } else { - if (!wm8978->f_pllout) { + if (!wm8978->f_opclk) { /* We only enter here, if OPCLK is not used */ int ret = wm8978_configure_pll(codec); if (ret < 0) --- linux-3.5.0.orig/sound/soc/codecs/wm2200.c +++ linux-3.5.0/sound/soc/codecs/wm2200.c @@ -897,8 +897,6 @@ "EQR", "LHPF1", "LHPF2", - "LHPF3", - "LHPF4", "DSP1.1", "DSP1.2", "DSP1.3", @@ -931,7 +929,6 @@ 0x25, 0x50, /* EQ */ 0x51, - 0x52, 0x60, /* LHPF1 */ 0x61, /* LHPF2 */ 0x68, /* DSP1 */ @@ -993,9 +990,9 @@ SOC_DOUBLE_R("IN1 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, WM2200_ADC_DIGITAL_VOLUME_1R, WM2200_IN1L_MUTE_SHIFT, 1, 1), -SOC_DOUBLE_R("IN2 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, +SOC_DOUBLE_R("IN2 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_2L, WM2200_ADC_DIGITAL_VOLUME_2R, WM2200_IN2L_MUTE_SHIFT, 1, 1), -SOC_DOUBLE_R("IN3 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, +SOC_DOUBLE_R("IN3 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_3L, WM2200_ADC_DIGITAL_VOLUME_3R, WM2200_IN3L_MUTE_SHIFT, 1, 1), SOC_DOUBLE_R_TLV("IN1 Digital Volume", WM2200_ADC_DIGITAL_VOLUME_1L, @@ -1028,7 +1025,7 @@ WM2200_DAC_DIGITAL_VOLUME_2R, WM2200_OUT2L_VOL_SHIFT, 0x9f, 0, digital_tlv), SOC_DOUBLE("OUT2 Switch", WM2200_PDM_1, WM2200_SPK1L_MUTE_SHIFT, - WM2200_SPK1R_MUTE_SHIFT, 1, 0), + WM2200_SPK1R_MUTE_SHIFT, 1, 1), }; WM2200_MIXER_ENUMS(OUT1L, WM2200_OUT1LMIX_INPUT_1_SOURCE); @@ -1380,15 +1377,9 @@ case SND_SOC_DAIFMT_DSP_A: fmt_val = 0; break; - case SND_SOC_DAIFMT_DSP_B: - fmt_val = 1; - break; case SND_SOC_DAIFMT_I2S: fmt_val = 2; break; - case SND_SOC_DAIFMT_LEFT_J: - fmt_val = 3; - break; default: dev_err(codec->dev, "Unsupported DAI format %d\n", fmt & SND_SOC_DAIFMT_FORMAT_MASK); @@ -1440,7 +1431,7 @@ WM2200_AIF1TX_LRCLK_MSTR | WM2200_AIF1TX_LRCLK_INV, lrclk); snd_soc_update_bits(codec, WM2200_AUDIO_IF_1_5, - WM2200_AIF1_FMT_MASK << 1, fmt_val << 1); + WM2200_AIF1_FMT_MASK, fmt_val); return 0; } @@ -2091,6 +2082,7 @@ switch (wm2200->rev) { case 0: + case 1: ret = regmap_register_patch(wm2200->regmap, wm2200_reva_patch, ARRAY_SIZE(wm2200_reva_patch)); if (ret != 0) { --- linux-3.5.0.orig/sound/soc/codecs/max98088.c +++ linux-3.5.0/sound/soc/codecs/max98088.c @@ -2006,7 +2006,7 @@ ret); goto err_access; } - dev_info(codec->dev, "revision %c\n", ret + 'A'); + dev_info(codec->dev, "revision %c\n", ret - 0x40 + 'A'); snd_soc_write(codec, M98088_REG_51_PWR_SYS, M98088_PWRSV); --- linux-3.5.0.orig/sound/soc/codecs/wm8962.c +++ linux-3.5.0/sound/soc/codecs/wm8962.c @@ -2501,6 +2501,9 @@ /* VMID 2*250k */ snd_soc_update_bits(codec, WM8962_PWR_MGMT_1, WM8962_VMID_SEL_MASK, 0x100); + + if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) + msleep(100); break; case SND_SOC_BIAS_OFF: @@ -3722,6 +3725,9 @@ } regcache_cache_only(wm8962->regmap, false); + + wm8962_reset(wm8962); + regcache_sync(wm8962->regmap); regmap_update_bits(wm8962->regmap, WM8962_ANTI_POP, --- linux-3.5.0.orig/sound/soc/codecs/wm8994.c +++ linux-3.5.0/sound/soc/codecs/wm8994.c @@ -2649,7 +2649,7 @@ return -EINVAL; } - bclk_rate = params_rate(params) * 2; + bclk_rate = params_rate(params) * 4; switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: bclk_rate *= 16; @@ -2778,6 +2778,7 @@ default: return 0; } + break; default: return 0; } @@ -3783,17 +3784,8 @@ wm8994->hubs.no_cache_dac_hp_direct = true; wm8994->fll_byp = true; - switch (wm8994->revision) { - case 0: - case 1: - case 2: - case 3: - wm8994->hubs.dcs_codes_l = -9; - wm8994->hubs.dcs_codes_r = -7; - break; - default: - break; - } + wm8994->hubs.dcs_codes_l = -9; + wm8994->hubs.dcs_codes_r = -7; snd_soc_update_bits(codec, WM8994_ANALOGUE_HP_1, WM1811_HPOUT1_ATTN, WM1811_HPOUT1_ATTN); --- linux-3.5.0.orig/sound/soc/codecs/wm9712.c +++ linux-3.5.0/sound/soc/codecs/wm9712.c @@ -146,7 +146,7 @@ SOC_SINGLE("Bass Volume", AC97_MASTER_TONE, 8, 15, 1), SOC_SINGLE("Treble Volume", AC97_MASTER_TONE, 0, 15, 1), -SOC_SINGLE("Capture ADC Switch", AC97_REC_GAIN, 15, 1, 1), +SOC_SINGLE("Capture Switch", AC97_REC_GAIN, 15, 1, 1), SOC_ENUM("Capture Volume Steps", wm9712_enum[6]), SOC_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1), SOC_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0), @@ -272,7 +272,7 @@ /* Mic select */ static const struct snd_kcontrol_new wm9712_mic_src_controls = -SOC_DAPM_ENUM("Route", wm9712_enum[7]); +SOC_DAPM_ENUM("Mic Source Select", wm9712_enum[7]); /* diff select */ static const struct snd_kcontrol_new wm9712_diff_sel_controls = @@ -291,7 +291,9 @@ &wm9712_capture_selectl_controls), SND_SOC_DAPM_MUX("Right Capture Select", SND_SOC_NOPM, 0, 0, &wm9712_capture_selectr_controls), -SND_SOC_DAPM_MUX("Mic Select Source", SND_SOC_NOPM, 0, 0, +SND_SOC_DAPM_MUX("Left Mic Select Source", SND_SOC_NOPM, 0, 0, + &wm9712_mic_src_controls), +SND_SOC_DAPM_MUX("Right Mic Select Source", SND_SOC_NOPM, 0, 0, &wm9712_mic_src_controls), SND_SOC_DAPM_MUX("Differential Source", SND_SOC_NOPM, 0, 0, &wm9712_diff_sel_controls), @@ -319,6 +321,7 @@ SND_SOC_DAPM_PGA("Line PGA", AC97_INT_PAGING, 2, 1, NULL, 0), SND_SOC_DAPM_PGA("Phone PGA", AC97_INT_PAGING, 1, 1, NULL, 0), SND_SOC_DAPM_PGA("Mic PGA", AC97_INT_PAGING, 0, 1, NULL, 0), +SND_SOC_DAPM_PGA("Differential Mic", SND_SOC_NOPM, 0, 0, NULL, 0), SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_INT_PAGING, 10, 1), SND_SOC_DAPM_OUTPUT("MONOOUT"), SND_SOC_DAPM_OUTPUT("HPOUTL"), @@ -379,6 +382,18 @@ {"Mic PGA", NULL, "MIC1"}, {"Mic PGA", NULL, "MIC2"}, + /* microphones */ + {"Differential Mic", NULL, "MIC1"}, + {"Differential Mic", NULL, "MIC2"}, + {"Left Mic Select Source", "Mic 1", "MIC1"}, + {"Left Mic Select Source", "Mic 2", "MIC2"}, + {"Left Mic Select Source", "Stereo", "MIC1"}, + {"Left Mic Select Source", "Differential", "Differential Mic"}, + {"Right Mic Select Source", "Mic 1", "MIC1"}, + {"Right Mic Select Source", "Mic 2", "MIC2"}, + {"Right Mic Select Source", "Stereo", "MIC2"}, + {"Right Mic Select Source", "Differential", "Differential Mic"}, + /* left capture selector */ {"Left Capture Select", "Mic", "MIC1"}, {"Left Capture Select", "Speaker Mixer", "Speaker Mixer"}, --- linux-3.5.0.orig/sound/soc/codecs/wm_hubs.c +++ linux-3.5.0/sound/soc/codecs/wm_hubs.c @@ -634,6 +634,11 @@ snd_soc_update_bits(codec, WM8993_CLASS_W_0, WM8993_CP_DYN_V | WM8993_CP_DYN_FREQ, enable); + + snd_soc_write(codec, WM8993_LEFT_OUTPUT_VOLUME, + snd_soc_read(codec, WM8993_LEFT_OUTPUT_VOLUME)); + snd_soc_write(codec, WM8993_RIGHT_OUTPUT_VOLUME, + snd_soc_read(codec, WM8993_RIGHT_OUTPUT_VOLUME)); } EXPORT_SYMBOL_GPL(wm_hubs_update_class_w); --- linux-3.5.0.orig/sound/soc/tegra/tegra_alc5632.c +++ linux-3.5.0/sound/soc/tegra/tegra_alc5632.c @@ -92,7 +92,6 @@ .name = "Headset detection", .report = SND_JACK_HEADSET, .debounce_time = 150, - .invert = 1, }; static const struct snd_soc_dapm_widget tegra_alc5632_dapm_widgets[] = { --- linux-3.5.0.orig/sound/soc/samsung/dma.c +++ linux-3.5.0/sound/soc/samsung/dma.c @@ -34,9 +34,7 @@ .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP | - SNDRV_PCM_INFO_MMAP_VALID | - SNDRV_PCM_INFO_PAUSE | - SNDRV_PCM_INFO_RESUME, + SNDRV_PCM_INFO_MMAP_VALID, .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U8 | @@ -246,15 +244,11 @@ switch (cmd) { case SNDRV_PCM_TRIGGER_START: - case SNDRV_PCM_TRIGGER_RESUME: - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: prtd->state |= ST_RUNNING; prtd->params->ops->trigger(prtd->params->ch); break; case SNDRV_PCM_TRIGGER_STOP: - case SNDRV_PCM_TRIGGER_SUSPEND: - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: prtd->state &= ~ST_RUNNING; prtd->params->ops->stop(prtd->params->ch); break; --- linux-3.5.0.orig/sound/soc/sh/dma-sh7760.c +++ linux-3.5.0/sound/soc/sh/dma-sh7760.c @@ -342,8 +342,8 @@ return 0; } -static struct snd_soc_platform sh7760_soc_platform = { - .pcm_ops = &camelot_pcm_ops, +static struct snd_soc_platform_driver sh7760_soc_platform = { + .ops = &camelot_pcm_ops, .pcm_new = camelot_pcm_new, .pcm_free = camelot_pcm_free, }; --- linux-3.5.0.orig/sound/soc/sh/fsi.c +++ linux-3.5.0/sound/soc/sh/fsi.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -223,7 +224,7 @@ */ struct dma_chan *chan; struct sh_dmae_slave slave; /* see fsi_handler_init() */ - struct tasklet_struct tasklet; + struct work_struct work; dma_addr_t dma; }; @@ -1085,9 +1086,9 @@ snd_pcm_period_elapsed(io->substream); } -static void fsi_dma_do_tasklet(unsigned long data) +static void fsi_dma_do_work(struct work_struct *work) { - struct fsi_stream *io = (struct fsi_stream *)data; + struct fsi_stream *io = container_of(work, struct fsi_stream, work); struct fsi_priv *fsi = fsi_stream_to_priv(io); struct dma_chan *chan; struct snd_soc_dai *dai; @@ -1140,7 +1141,7 @@ * FIXME * * In DMAEngine case, codec and FSI cannot be started simultaneously - * since FSI is using tasklet. + * since FSI is using the scheduler work queue. * Therefore, in capture case, probably FSI FIFO will have got * overflow error in this point. * in that case, DMA cannot start transfer until error was cleared. @@ -1164,7 +1165,7 @@ static int fsi_dma_transfer(struct fsi_priv *fsi, struct fsi_stream *io) { - tasklet_schedule(&io->tasklet); + schedule_work(&io->work); return 0; } @@ -1195,14 +1196,14 @@ if (!io->chan) return -EIO; - tasklet_init(&io->tasklet, fsi_dma_do_tasklet, (unsigned long)io); + INIT_WORK(&io->work, fsi_dma_do_work); return 0; } static int fsi_dma_remove(struct fsi_priv *fsi, struct fsi_stream *io) { - tasklet_kill(&io->tasklet); + cancel_work_sync(&io->work); fsi_stream_stop(fsi, io); --- linux-3.5.0.orig/sound/soc/omap/mcbsp.c +++ linux-3.5.0/sound/soc/omap/mcbsp.c @@ -745,7 +745,7 @@ { const char *signal, *src; - if (mcbsp->pdata->mux_signal) + if (!mcbsp->pdata->mux_signal) return -EINVAL; switch (mux) { --- linux-3.5.0.orig/sound/soc/fsl/imx-ssi.c +++ linux-3.5.0/sound/soc/fsl/imx-ssi.c @@ -497,6 +497,8 @@ if (imx_ssi->ac97_reset) imx_ssi->ac97_reset(ac97); + /* First read sometimes fails, do a dummy read */ + imx_ssi_ac97_read(ac97, 0); } static void imx_ssi_ac97_warm_reset(struct snd_ac97 *ac97) @@ -505,6 +507,9 @@ if (imx_ssi->ac97_warm_reset) imx_ssi->ac97_warm_reset(ac97); + + /* First read sometimes fails, do a dummy read */ + imx_ssi_ac97_read(ac97, 0); } struct snd_ac97_bus_ops soc_ac97_ops = { --- linux-3.5.0.orig/sound/aoa/codecs/tas.c +++ linux-3.5.0/sound/aoa/codecs/tas.c @@ -883,43 +883,10 @@ } -static int tas_create(struct i2c_adapter *adapter, - struct device_node *node, - int addr) -{ - struct i2c_board_info info; - struct i2c_client *client; - - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "aoa_codec_tas", I2C_NAME_SIZE); - info.addr = addr; - info.platform_data = node; - - client = i2c_new_device(adapter, &info); - if (!client) - return -ENODEV; - /* - * We know the driver is already loaded, so the device should be - * already bound. If not it means binding failed, and then there - * is no point in keeping the device instantiated. - */ - if (!client->driver) { - i2c_unregister_device(client); - return -ENODEV; - } - - /* - * Let i2c-core delete that device on driver removal. - * This is safe because i2c-core holds the core_lock mutex for us. - */ - list_add_tail(&client->detected, &client->driver->clients); - return 0; -} - static int tas_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct device_node *node = client->dev.platform_data; + struct device_node *node = client->dev.of_node; struct tas *tas; tas = kzalloc(sizeof(struct tas), GFP_KERNEL); @@ -953,47 +920,6 @@ return -EINVAL; } -static int tas_i2c_attach(struct i2c_adapter *adapter) -{ - struct device_node *busnode, *dev = NULL; - struct pmac_i2c_bus *bus; - - bus = pmac_i2c_adapter_to_bus(adapter); - if (bus == NULL) - return -ENODEV; - busnode = pmac_i2c_get_bus_node(bus); - - while ((dev = of_get_next_child(busnode, dev)) != NULL) { - if (of_device_is_compatible(dev, "tas3004")) { - const u32 *addr; - printk(KERN_DEBUG PFX "found tas3004\n"); - addr = of_get_property(dev, "reg", NULL); - if (!addr) - continue; - return tas_create(adapter, dev, ((*addr) >> 1) & 0x7f); - } - /* older machines have no 'codec' node with a 'compatible' - * property that says 'tas3004', they just have a 'deq' - * node without any such property... */ - if (strcmp(dev->name, "deq") == 0) { - const u32 *_addr; - u32 addr; - printk(KERN_DEBUG PFX "found 'deq' node\n"); - _addr = of_get_property(dev, "i2c-address", NULL); - if (!_addr) - continue; - addr = ((*_addr) >> 1) & 0x7f; - /* now, if the address doesn't match any of the two - * that a tas3004 can have, we cannot handle this. - * I doubt it ever happens but hey. */ - if (addr != 0x34 && addr != 0x35) - continue; - return tas_create(adapter, dev, addr); - } - } - return -ENODEV; -} - static int tas_i2c_remove(struct i2c_client *client) { struct tas *tas = i2c_get_clientdata(client); @@ -1011,16 +937,16 @@ } static const struct i2c_device_id tas_i2c_id[] = { - { "aoa_codec_tas", 0 }, + { "MAC,tas3004", 0 }, { } }; +MODULE_DEVICE_TABLE(i2c,tas_i2c_id); static struct i2c_driver tas_driver = { .driver = { .name = "aoa_codec_tas", .owner = THIS_MODULE, }, - .attach_adapter = tas_i2c_attach, .probe = tas_i2c_probe, .remove = tas_i2c_remove, .id_table = tas_i2c_id, --- linux-3.5.0.orig/sound/aoa/codecs/onyx.c +++ linux-3.5.0/sound/aoa/codecs/onyx.c @@ -997,45 +997,10 @@ onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx); } -static int onyx_create(struct i2c_adapter *adapter, - struct device_node *node, - int addr) -{ - struct i2c_board_info info; - struct i2c_client *client; - - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "aoa_codec_onyx", I2C_NAME_SIZE); - info.addr = addr; - info.platform_data = node; - client = i2c_new_device(adapter, &info); - if (!client) - return -ENODEV; - - /* - * We know the driver is already loaded, so the device should be - * already bound. If not it means binding failed, which suggests - * the device doesn't really exist and should be deleted. - * Ideally this would be replaced by better checks _before_ - * instantiating the device. - */ - if (!client->driver) { - i2c_unregister_device(client); - return -ENODEV; - } - - /* - * Let i2c-core delete that device on driver removal. - * This is safe because i2c-core holds the core_lock mutex for us. - */ - list_add_tail(&client->detected, &client->driver->clients); - return 0; -} - static int onyx_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct device_node *node = client->dev.platform_data; + struct device_node *node = client->dev.of_node; struct onyx *onyx; u8 dummy; @@ -1071,40 +1036,6 @@ return -ENODEV; } -static int onyx_i2c_attach(struct i2c_adapter *adapter) -{ - struct device_node *busnode, *dev = NULL; - struct pmac_i2c_bus *bus; - - bus = pmac_i2c_adapter_to_bus(adapter); - if (bus == NULL) - return -ENODEV; - busnode = pmac_i2c_get_bus_node(bus); - - while ((dev = of_get_next_child(busnode, dev)) != NULL) { - if (of_device_is_compatible(dev, "pcm3052")) { - const u32 *addr; - printk(KERN_DEBUG PFX "found pcm3052\n"); - addr = of_get_property(dev, "reg", NULL); - if (!addr) - return -ENODEV; - return onyx_create(adapter, dev, (*addr)>>1); - } - } - - /* if that didn't work, try desperate mode for older - * machines that have stuff missing from the device tree */ - - if (!of_device_is_compatible(busnode, "k2-i2c")) - return -ENODEV; - - printk(KERN_DEBUG PFX "found k2-i2c, checking if onyx chip is on it\n"); - /* probe both possible addresses for the onyx chip */ - if (onyx_create(adapter, NULL, 0x46) == 0) - return 0; - return onyx_create(adapter, NULL, 0x47); -} - static int onyx_i2c_remove(struct i2c_client *client) { struct onyx *onyx = i2c_get_clientdata(client); @@ -1117,16 +1048,16 @@ } static const struct i2c_device_id onyx_i2c_id[] = { - { "aoa_codec_onyx", 0 }, + { "MAC,pcm3052", 0 }, { } }; +MODULE_DEVICE_TABLE(i2c,onyx_i2c_id); static struct i2c_driver onyx_driver = { .driver = { .name = "aoa_codec_onyx", .owner = THIS_MODULE, }, - .attach_adapter = onyx_i2c_attach, .probe = onyx_i2c_probe, .remove = onyx_i2c_remove, .id_table = onyx_i2c_id, --- linux-3.5.0.orig/sound/drivers/aloop.c +++ linux-3.5.0/sound/drivers/aloop.c @@ -120,6 +120,7 @@ unsigned int last_drift; unsigned long last_jiffies; struct timer_list timer; + spinlock_t timer_lock; }; static struct platform_device *devices[SNDRV_CARDS]; @@ -170,6 +171,7 @@ unsigned long tick; unsigned int rate_shift = get_rate_shift(dpcm); + spin_lock(&dpcm->timer_lock); if (rate_shift != dpcm->pcm_rate_shift) { dpcm->pcm_rate_shift = rate_shift; dpcm->period_size_frac = frac_pos(dpcm, dpcm->pcm_period_size); @@ -182,12 +184,15 @@ tick = (tick + dpcm->pcm_bps - 1) / dpcm->pcm_bps; dpcm->timer.expires = jiffies + tick; add_timer(&dpcm->timer); + spin_unlock(&dpcm->timer_lock); } static inline void loopback_timer_stop(struct loopback_pcm *dpcm) { + spin_lock(&dpcm->timer_lock); del_timer(&dpcm->timer); dpcm->timer.expires = 0; + spin_unlock(&dpcm->timer_lock); } #define CABLE_VALID_PLAYBACK (1 << SNDRV_PCM_STREAM_PLAYBACK) @@ -284,12 +289,14 @@ loopback_active_notify(dpcm); break; case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + case SNDRV_PCM_TRIGGER_SUSPEND: spin_lock(&cable->lock); cable->pause |= stream; spin_unlock(&cable->lock); loopback_timer_stop(dpcm); break; case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + case SNDRV_PCM_TRIGGER_RESUME: spin_lock(&cable->lock); dpcm->last_jiffies = jiffies; cable->pause &= ~stream; @@ -555,7 +562,8 @@ static struct snd_pcm_hardware loopback_pcm_hardware = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | - SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE), + SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE | + SNDRV_PCM_INFO_RESUME), .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE | SNDRV_PCM_FMTBIT_FLOAT_LE | SNDRV_PCM_FMTBIT_FLOAT_BE), @@ -667,6 +675,7 @@ dpcm->substream = substream; setup_timer(&dpcm->timer, loopback_timer_function, (unsigned long)dpcm); + spin_lock_init(&dpcm->timer_lock); cable = loopback->cables[substream->number][dev]; if (!cable) { --- linux-3.5.0.orig/sound/drivers/mpu401/mpu401_uart.c +++ linux-3.5.0/sound/drivers/mpu401/mpu401_uart.c @@ -554,6 +554,7 @@ spin_lock_init(&mpu->output_lock); spin_lock_init(&mpu->timer_lock); mpu->hardware = hardware; + mpu->irq = -1; if (! (info_flags & MPU401_INFO_INTEGRATED)) { int res_size = hardware == MPU401_HW_PC98II ? 4 : 2; mpu->res = request_region(port, res_size, "MPU401 UART"); --- linux-3.5.0.orig/sound/pci/bt87x.c +++ linux-3.5.0/sound/pci/bt87x.c @@ -836,6 +836,8 @@ {0x7063, 0x2000}, /* pcHDTV HD-2000 TV */ }; +static struct pci_driver driver; + /* return the id of the card, or a negative value if it's blacklisted */ static int __devinit snd_bt87x_detect_card(struct pci_dev *pci) { @@ -962,11 +964,24 @@ { } }; -static struct pci_driver bt87x_driver = { +static struct pci_driver driver = { .name = KBUILD_MODNAME, .id_table = snd_bt87x_ids, .probe = snd_bt87x_probe, .remove = __devexit_p(snd_bt87x_remove), }; -module_pci_driver(bt87x_driver); +static int __init alsa_card_bt87x_init(void) +{ + if (load_all) + driver.id_table = snd_bt87x_default_ids; + return pci_register_driver(&driver); +} + +static void __exit alsa_card_bt87x_exit(void) +{ + pci_unregister_driver(&driver); +} + +module_init(alsa_card_bt87x_init) +module_exit(alsa_card_bt87x_exit) --- linux-3.5.0.orig/sound/pci/rme32.c +++ linux-3.5.0/sound/pci/rme32.c @@ -1017,7 +1017,7 @@ spin_lock_irq(&rme32->lock); rme32->capture_substream = NULL; rme32->capture_periodsize = 0; - spin_unlock(&rme32->lock); + spin_unlock_irq(&rme32->lock); return 0; } --- linux-3.5.0.orig/sound/pci/ali5451/ali5451.c +++ linux-3.5.0/sound/pci/ali5451/ali5451.c @@ -1435,7 +1435,7 @@ spin_lock(&codec->reg_lock); if (!pvoice->running) { - spin_unlock_irq(&codec->reg_lock); + spin_unlock(&codec->reg_lock); return 0; } outb(pvoice->number, ALI_REG(codec, ALI_GC_CIR)); --- linux-3.5.0.orig/sound/pci/hda/hda_intel.c +++ linux-3.5.0/sound/pci/hda/hda_intel.c @@ -151,6 +151,8 @@ "{Intel, CPT}," "{Intel, PPT}," "{Intel, LPT}," + "{Intel, LPT_LP}," + "{Intel, HPT}," "{Intel, PBG}," "{Intel, SCH}," "{ATI, SB450}," @@ -485,6 +487,7 @@ /* VGA-switcheroo setup */ unsigned int use_vga_switcheroo:1; + unsigned int vga_switcheroo_registered:1; unsigned int init_failed:1; /* delayed init failed */ unsigned int disabled:1; /* disabled by VGA-switcher */ @@ -616,29 +619,43 @@ #define get_azx_dev(substream) (substream->runtime->private_data) #ifdef CONFIG_X86 -static void __mark_pages_wc(struct azx *chip, void *addr, size_t size, bool on) +static void __mark_pages_wc(struct azx *chip, struct snd_dma_buffer *dmab, bool on) { + int pages; + if (azx_snoop(chip)) return; - if (addr && size) { - int pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; + if (!dmab || !dmab->area || !dmab->bytes) + return; + +#ifdef CONFIG_SND_DMA_SGBUF + if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_SG) { + struct snd_sg_buf *sgbuf = dmab->private_data; if (on) - set_memory_wc((unsigned long)addr, pages); + set_pages_array_wc(sgbuf->page_table, sgbuf->pages); else - set_memory_wb((unsigned long)addr, pages); + set_pages_array_wb(sgbuf->page_table, sgbuf->pages); + return; } +#endif + + pages = (dmab->bytes + PAGE_SIZE - 1) >> PAGE_SHIFT; + if (on) + set_memory_wc((unsigned long)dmab->area, pages); + else + set_memory_wb((unsigned long)dmab->area, pages); } static inline void mark_pages_wc(struct azx *chip, struct snd_dma_buffer *buf, bool on) { - __mark_pages_wc(chip, buf->area, buf->bytes, on); + __mark_pages_wc(chip, buf, on); } static inline void mark_runtime_wc(struct azx *chip, struct azx_dev *azx_dev, - struct snd_pcm_runtime *runtime, bool on) + struct snd_pcm_substream *substream, bool on) { if (azx_dev->wc_marked != on) { - __mark_pages_wc(chip, runtime->dma_area, runtime->dma_bytes, on); + __mark_pages_wc(chip, substream->runtime->dma_buffer_p, on); azx_dev->wc_marked = on; } } @@ -649,7 +666,7 @@ { } static inline void mark_runtime_wc(struct azx *chip, struct azx_dev *azx_dev, - struct snd_pcm_runtime *runtime, bool on) + struct snd_pcm_substream *substream, bool on) { } #endif @@ -1822,11 +1839,10 @@ { struct azx_pcm *apcm = snd_pcm_substream_chip(substream); struct azx *chip = apcm->chip; - struct snd_pcm_runtime *runtime = substream->runtime; struct azx_dev *azx_dev = get_azx_dev(substream); int ret; - mark_runtime_wc(chip, azx_dev, runtime, false); + mark_runtime_wc(chip, azx_dev, substream, false); azx_dev->bufsize = 0; azx_dev->period_bytes = 0; azx_dev->format_val = 0; @@ -1834,7 +1850,7 @@ params_buffer_bytes(hw_params)); if (ret < 0) return ret; - mark_runtime_wc(chip, azx_dev, runtime, true); + mark_runtime_wc(chip, azx_dev, substream, true); return ret; } @@ -1843,7 +1859,6 @@ struct azx_pcm *apcm = snd_pcm_substream_chip(substream); struct azx_dev *azx_dev = get_azx_dev(substream); struct azx *chip = apcm->chip; - struct snd_pcm_runtime *runtime = substream->runtime; struct hda_pcm_stream *hinfo = apcm->hinfo[substream->stream]; /* reset BDL address */ @@ -1856,7 +1871,7 @@ snd_hda_codec_cleanup(apcm->codec, hinfo, substream); - mark_runtime_wc(chip, azx_dev, runtime, false); + mark_runtime_wc(chip, azx_dev, substream, false); return snd_pcm_lib_free_pages(substream); } @@ -2523,7 +2538,9 @@ if (disabled) { azx_suspend(pci, PMSG_FREEZE); chip->disabled = true; - snd_hda_lock_devices(chip->bus); + if (snd_hda_lock_devices(chip->bus)) + snd_printk(KERN_WARNING SFX + "Cannot lock devices!\n"); } else { snd_hda_unlock_devices(chip->bus); chip->disabled = false; @@ -2566,14 +2583,20 @@ static int __devinit register_vga_switcheroo(struct azx *chip) { + int err; + if (!chip->use_vga_switcheroo) return 0; /* FIXME: currently only handling DIS controller * is there any machine with two switchable HDMI audio controllers? */ - return vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops, + err = vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops, VGA_SWITCHEROO_DIS, chip->bus != NULL); + if (err < 0) + return err; + chip->vga_switcheroo_registered = 1; + return 0; } #else #define init_vga_switcheroo(chip) /* NOP */ @@ -2593,7 +2616,8 @@ if (use_vga_switcheroo(chip)) { if (chip->disabled && chip->bus) snd_hda_unlock_devices(chip->bus); - vga_switcheroo_unregister_client(chip->pci); + if (chip->vga_switcheroo_registered) + vga_switcheroo_unregister_client(chip->pci); } if (chip->initialized) { @@ -2935,14 +2959,6 @@ } ok: - err = register_vga_switcheroo(chip); - if (err < 0) { - snd_printk(KERN_ERR SFX - "Error registering VGA-switcheroo client\n"); - azx_free(chip); - return err; - } - err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); if (err < 0) { snd_printk(KERN_ERR SFX "Error creating device [card]!\n"); @@ -3169,6 +3185,13 @@ pci_set_drvdata(pci, card); + err = register_vga_switcheroo(chip); + if (err < 0) { + snd_printk(KERN_ERR SFX + "Error registering VGA-switcheroo client\n"); + goto out_free; + } + dev++; return 0; @@ -3256,6 +3279,21 @@ { PCI_DEVICE(0x8086, 0x8c20), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE}, + /* Lynx Point-LP */ + { PCI_DEVICE(0x8086, 0x9c20), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + /* Lynx Point-LP */ + { PCI_DEVICE(0x8086, 0x9c21), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + /* Haswell */ + { PCI_DEVICE(0x8086, 0x0c0c), + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + { PCI_DEVICE(0x8086, 0x0d0c), + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, /* SCH */ { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | --- linux-3.5.0.orig/sound/pci/hda/hda_codec.c +++ linux-3.5.0/sound/pci/hda/hda_codec.c @@ -165,7 +165,7 @@ "Line Out", "Speaker", "HP Out", "CD", "SPDIF Out", "Digital Out", "Modem Line", "Modem Hand", "Line In", "Aux", "Mic", "Telephony", - "SPDIF In", "Digitial In", "Reserved", "Other" + "SPDIF In", "Digital In", "Reserved", "Other" }; return jack_types[(cfg & AC_DEFCFG_DEVICE) @@ -609,6 +609,9 @@ struct hda_bus_unsolicited *unsol; unsigned int wp; + if (!bus || !bus->workq) + return 0; + trace_hda_unsol_event(bus, res, res_ex); unsol = bus->unsol; if (!unsol) @@ -2325,6 +2328,7 @@ } if (codec->patch_ops.free) codec->patch_ops.free(codec); + memset(&codec->patch_ops, 0, sizeof(codec->patch_ops)); snd_hda_jack_tbl_clear(codec); codec->proc_widget_hook = NULL; codec->spec = NULL; @@ -2340,7 +2344,6 @@ codec->num_pcms = 0; codec->pcm_info = NULL; codec->preset = NULL; - memset(&codec->patch_ops, 0, sizeof(codec->patch_ops)); codec->slave_dig_outs = NULL; codec->spdif_status_reset = 0; module_put(codec->owner); @@ -2961,7 +2964,7 @@ if (val & AC_DIG1_PROFESSIONAL) sbits |= IEC958_AES0_PROFESSIONAL; if (sbits & IEC958_AES0_PROFESSIONAL) { - if (sbits & AC_DIG1_EMPHASIS) + if (val & AC_DIG1_EMPHASIS) sbits |= IEC958_AES0_PRO_EMPHASIS_5015; } else { if (val & AC_DIG1_EMPHASIS) @@ -3542,7 +3545,7 @@ /* * call suspend and power-down; used both from PM and power-save */ -static void hda_call_codec_suspend(struct hda_codec *codec) +static void hda_call_codec_suspend(struct hda_codec *codec, bool in_wq) { if (codec->patch_ops.suspend) codec->patch_ops.suspend(codec, PMSG_SUSPEND); @@ -3551,7 +3554,9 @@ codec->afg ? codec->afg : codec->mfg, AC_PWRST_D3); #ifdef CONFIG_SND_HDA_POWER_SAVE - cancel_delayed_work(&codec->power_work); + /* Cancel delayed work if we aren't currently running from it. */ + if (!in_wq) + cancel_delayed_work_sync(&codec->power_work); spin_lock(&codec->power_lock); snd_hda_update_power_acct(codec); trace_hda_power_down(codec); @@ -4372,7 +4377,7 @@ } spin_unlock(&codec->power_lock); - hda_call_codec_suspend(codec); + hda_call_codec_suspend(codec, true); if (bus->ops.pm_notify) bus->ops.pm_notify(bus); } @@ -4418,6 +4423,15 @@ cancel_delayed_work_sync(&codec->power_work); spin_lock(&codec->power_lock); + /* If the power down delayed work was cancelled above before starting, + * then there is no need to go through power up here. + */ + if (codec->power_on) { + if (codec->power_transition < 0) + codec->power_transition = 0; + spin_unlock(&codec->power_lock); + return; + } trace_hda_power_up(codec); snd_hda_update_power_acct(codec); codec->power_on = 1; @@ -5029,7 +5043,7 @@ list_for_each_entry(codec, &bus->codec_list, list) { if (hda_codec_is_power_on(codec)) - hda_call_codec_suspend(codec); + hda_call_codec_suspend(codec, false); } return 0; } --- linux-3.5.0.orig/sound/pci/hda/hda_jack.c +++ linux-3.5.0/sound/pci/hda/hda_jack.c @@ -127,10 +127,15 @@ static void jack_detect_update(struct hda_codec *codec, struct hda_jack_tbl *jack) { - if (jack->jack_dirty || !jack->jack_detect) { + if (!jack->jack_dirty) + return; + + if (jack->phantom_jack) + jack->pin_sense = AC_PINSENSE_PRESENCE; + else jack->pin_sense = read_pin_sense(codec, jack->nid); - jack->jack_dirty = 0; - } + + jack->jack_dirty = 0; } /** @@ -264,8 +269,8 @@ * This assigns a jack-detection kctl to the given pin. The kcontrol * will have the given name and index. */ -int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, - const char *name, int idx) +static int __snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, + const char *name, int idx, bool phantom_jack) { struct hda_jack_tbl *jack; struct snd_kcontrol *kctl; @@ -283,19 +288,30 @@ if (err < 0) return err; jack->kctl = kctl; + jack->phantom_jack = !!phantom_jack; + state = snd_hda_jack_detect(codec, nid); snd_kctl_jack_report(codec->bus->card, kctl, state); #ifdef CONFIG_SND_HDA_INPUT_JACK - jack->type = get_input_jack_type(codec, nid); - err = snd_jack_new(codec->bus->card, name, jack->type, &jack->jack); - if (err < 0) - return err; - jack->jack->private_data = jack; - jack->jack->private_free = hda_free_jack_priv; - snd_jack_report(jack->jack, state ? jack->type : 0); + if (!phantom_jack) { + jack->type = get_input_jack_type(codec, nid); + err = snd_jack_new(codec->bus->card, name, jack->type, + &jack->jack); + if (err < 0) + return err; + jack->jack->private_data = jack; + jack->jack->private_free = hda_free_jack_priv; + snd_jack_report(jack->jack, state ? jack->type : 0); + } #endif return 0; } + +int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, + const char *name, int idx) +{ + return __snd_hda_jack_add_kctl(codec, nid, name, idx, false); +} EXPORT_SYMBOL_HDA(snd_hda_jack_add_kctl); static int add_jack_kctl(struct hda_codec *codec, hda_nid_t nid, @@ -305,25 +321,32 @@ unsigned int def_conf, conn; char name[44]; int idx, err; + bool phantom_jack; if (!nid) return 0; - if (!is_jack_detectable(codec, nid)) - return 0; def_conf = snd_hda_codec_get_pincfg(codec, nid); conn = get_defcfg_connect(def_conf); - if (conn != AC_JACK_PORT_COMPLEX) + if (conn == AC_JACK_PORT_NONE) return 0; + phantom_jack = (conn != AC_JACK_PORT_COMPLEX) || + !is_jack_detectable(codec, nid); snd_hda_get_pin_label(codec, nid, cfg, name, sizeof(name), &idx); + if (phantom_jack) + /* Example final name: "Internal Mic Phantom Jack" */ + strncat(name, " Phantom", sizeof(name) - strlen(name) - 1); if (!strcmp(name, lastname) && idx == *lastidx) idx++; - strncpy(lastname, name, 44); + strncpy(lastname, name, sizeof(name)); *lastidx = idx; - err = snd_hda_jack_add_kctl(codec, nid, name, idx); + err = __snd_hda_jack_add_kctl(codec, nid, name, idx, phantom_jack); if (err < 0) return err; - return snd_hda_jack_detect_enable(codec, nid, 0); + + if (!phantom_jack) + return snd_hda_jack_detect_enable(codec, nid, 0); + return 0; } /** --- linux-3.5.0.orig/sound/pci/hda/hda_eld.c +++ linux-3.5.0/sound/pci/hda/hda_eld.c @@ -322,7 +322,7 @@ struct hda_codec *codec, hda_nid_t nid) { int i; - int ret; + int ret = 0; int size; unsigned char *buf; --- linux-3.5.0.orig/sound/pci/hda/patch_hdmi.c +++ linux-3.5.0/sound/pci/hda/patch_hdmi.c @@ -425,9 +425,11 @@ if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP) snd_hda_codec_write(codec, pin_nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); - /* Disable pin out until stream is active*/ + /* Enable pin out: some machines with GM965 gets broken output when + * the pin is disabled or changed while using with HDMI + */ snd_hda_codec_write(codec, pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, 0); + AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); } static int hdmi_get_channel_count(struct hda_codec *codec, hda_nid_t cvt_nid) @@ -876,7 +878,6 @@ struct hdmi_spec_per_pin *per_pin; struct hdmi_eld *eld; struct hdmi_spec_per_cvt *per_cvt = NULL; - int pinctl; /* Validate hinfo */ pin_idx = hinfo_to_pin_index(spec, hinfo); @@ -912,11 +913,6 @@ snd_hda_codec_write(codec, per_pin->pin_nid, 0, AC_VERB_SET_CONNECT_SEL, mux_idx); - pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0, - AC_VERB_GET_PIN_WIDGET_CONTROL, 0); - snd_hda_codec_write(codec, per_pin->pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, - pinctl | PIN_OUT); snd_hda_spdif_ctls_assign(codec, pin_idx, per_cvt->cvt_nid); /* Initially set the converter's capabilities */ @@ -930,8 +926,12 @@ if (!static_hdmi_pcm && eld->eld_valid) { snd_hdmi_eld_update_pcm_info(eld, hinfo); if (hinfo->channels_min > hinfo->channels_max || - !hinfo->rates || !hinfo->formats) + !hinfo->rates || !hinfo->formats) { + per_cvt->assigned = 0; + hinfo->nid = 0; + snd_hda_spdif_ctls_unassign(codec, pin_idx); return -ENODEV; + } } /* Store the updated parameters */ @@ -995,6 +995,7 @@ "HDMI status: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n", codec->addr, pin_nid, eld->monitor_present, eld_valid); + eld->eld_valid = false; if (eld_valid) { if (!snd_hdmi_get_eld(eld, codec, pin_nid)) snd_hdmi_show_eld(eld); @@ -1169,7 +1170,6 @@ int cvt_idx, pin_idx; struct hdmi_spec_per_cvt *per_cvt; struct hdmi_spec_per_pin *per_pin; - int pinctl; snd_hda_codec_cleanup_stream(codec, hinfo->nid); @@ -1188,11 +1188,6 @@ return -EINVAL; per_pin = &spec->pins[pin_idx]; - pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0, - AC_VERB_GET_PIN_WIDGET_CONTROL, 0); - snd_hda_codec_write(codec, per_pin->pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, - pinctl & ~PIN_OUT); snd_hda_spdif_ctls_unassign(codec, pin_idx); } @@ -1323,6 +1318,30 @@ .unsol_event = hdmi_unsol_event, }; +static void intel_haswell_fixup_connect_list(struct hda_codec *codec) +{ + unsigned int vendor_param; + hda_nid_t list[3] = {0x2, 0x3, 0x4}; + + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); + if (vendor_param == -1 || vendor_param & 0x02) + return; + + /* enable DP1.2 mode */ + vendor_param |= 0x02; + snd_hda_codec_read(codec, 0x08, 0, 0x781, vendor_param); + + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); + if (vendor_param == -1 || !(vendor_param & 0x02)) + return; + + /* override 3 pins connection list */ + snd_hda_override_conn_list(codec, 0x05, 3, list); + snd_hda_override_conn_list(codec, 0x06, 3, list); + snd_hda_override_conn_list(codec, 0x07, 3, list); +} + + static int patch_generic_hdmi(struct hda_codec *codec) { struct hdmi_spec *spec; @@ -1332,6 +1351,10 @@ return -ENOMEM; codec->spec = spec; + + if (codec->vendor_id == 0x80862807) + intel_haswell_fixup_connect_list(codec); + if (hdmi_parse_codec(codec) < 0) { codec->spec = NULL; kfree(spec); @@ -1911,6 +1934,7 @@ { .id = 0x80862804, .name = "IbexPeak HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862805, .name = "CougarPoint HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862806, .name = "PantherPoint HDMI", .patch = patch_generic_hdmi }, +{ .id = 0x80862807, .name = "Haswell HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862880, .name = "CedarTrail HDMI", .patch = patch_generic_hdmi }, { .id = 0x808629fb, .name = "Crestline HDMI", .patch = patch_generic_hdmi }, {} /* terminator */ @@ -1958,6 +1982,7 @@ MODULE_ALIAS("snd-hda-codec-id:80862804"); MODULE_ALIAS("snd-hda-codec-id:80862805"); MODULE_ALIAS("snd-hda-codec-id:80862806"); +MODULE_ALIAS("snd-hda-codec-id:80862807"); MODULE_ALIAS("snd-hda-codec-id:80862880"); MODULE_ALIAS("snd-hda-codec-id:808629fb"); --- linux-3.5.0.orig/sound/pci/hda/patch_ca0132.c +++ linux-3.5.0/sound/pci/hda/patch_ca0132.c @@ -275,6 +275,10 @@ int type = dir ? HDA_INPUT : HDA_OUTPUT; struct snd_kcontrol_new knew = HDA_CODEC_MUTE_MONO(namestr, nid, chan, 0, type); + if ((query_amp_caps(codec, nid, type) & AC_AMPCAP_MUTE) == 0) { + snd_printdd("Skipping '%s %s Switch' (no mute on node 0x%x)\n", pfx, dirstr[dir], nid); + return 0; + } sprintf(namestr, "%s %s Switch", pfx, dirstr[dir]); return snd_hda_ctl_add(codec, nid, snd_ctl_new1(&knew, codec)); } @@ -286,6 +290,10 @@ int type = dir ? HDA_INPUT : HDA_OUTPUT; struct snd_kcontrol_new knew = HDA_CODEC_VOLUME_MONO(namestr, nid, chan, 0, type); + if ((query_amp_caps(codec, nid, type) & AC_AMPCAP_NUM_STEPS) == 0) { + snd_printdd("Skipping '%s %s Volume' (no amp on node 0x%x)\n", pfx, dirstr[dir], nid); + return 0; + } sprintf(namestr, "%s %s Volume", pfx, dirstr[dir]); return snd_hda_ctl_add(codec, nid, snd_ctl_new1(&knew, codec)); } --- linux-3.5.0.orig/sound/pci/hda/patch_sigmatel.c +++ linux-3.5.0/sound/pci/hda/patch_sigmatel.c @@ -101,6 +101,8 @@ STAC_92HD83XXX_HP_cNB11_INTQUAD, STAC_HP_DV7_4000, STAC_HP_ZEPHYR, + STAC_92HD83XXX_HP_LED, + STAC_92HD83XXX_HP_INV_LED, STAC_92HD83XXX_MODELS }; @@ -1073,7 +1075,7 @@ static const char * const slave_pfxs[] = { "Front", "Surround", "Center", "LFE", "Side", - "Headphone", "Speaker", "IEC958", + "Headphone", "Speaker", "IEC958", "PCM", NULL }; @@ -1675,6 +1677,8 @@ [STAC_92HD83XXX_HP_cNB11_INTQUAD] = "hp_cNB11_intquad", [STAC_HP_DV7_4000] = "hp-dv7-4000", [STAC_HP_ZEPHYR] = "hp-zephyr", + [STAC_92HD83XXX_HP_LED] = "hp-led", + [STAC_92HD83XXX_HP_INV_LED] = "hp-inv-led", }; static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { @@ -1694,7 +1698,7 @@ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1658, "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1659, - "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), + "HP Pavilion dv7", STAC_HP_DV7_4000), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165A, "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165B, @@ -1729,6 +1733,8 @@ "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3561, "HP", STAC_HP_ZEPHYR), + SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3660, + "HP Mini", STAC_92HD83XXX_HP_LED), {} /* terminator */ }; @@ -3220,9 +3226,12 @@ idx = i; break; case AUTO_PIN_SPEAKER_OUT: - name = "Speaker"; - idx = i; - break; + if (num_outs <= 1) { + name = "Speaker"; + idx = i; + break; + } + /* Fall through in case of multi speaker outs */ default: name = chname[i]; idx = 0; @@ -4266,7 +4275,8 @@ unsigned int gpio; int i; - snd_hda_sequence_write(codec, spec->init); + if (spec->init) + snd_hda_sequence_write(codec, spec->init); /* power down adcs initially */ if (spec->powerdown_adcs) @@ -4414,7 +4424,12 @@ snd_hda_jack_report_sync(codec); /* sync mute LED */ - snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + if (spec->gpio_led) { + if (spec->vmaster_mute.hook) + snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + else /* the very first init call doesn't have vmaster yet */ + stac92xx_update_led_status(codec, false); + } /* sync the power-map */ if (spec->num_pwrs) @@ -4531,6 +4546,9 @@ struct auto_pin_cfg *cfg = &spec->autocfg; int i; + if (cfg->speaker_outs == 0) + return; + for (i = 0; i < cfg->line_outs; i++) { if (presence) break; @@ -5507,6 +5525,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) { struct sigmatel_spec *spec; + int default_polarity = -1; /* no default cfg */ int err; spec = kzalloc(sizeof(*spec), GFP_KERNEL); @@ -5555,9 +5574,15 @@ case STAC_HP_ZEPHYR: spec->init = stac92hd83xxx_hp_zephyr_init; break; + case STAC_92HD83XXX_HP_LED: + default_polarity = 0; + break; + case STAC_92HD83XXX_HP_INV_LED: + default_polarity = 1; + break; } - if (find_mute_led_cfg(codec, -1/*no default cfg*/)) + if (find_mute_led_cfg(codec, default_polarity)) snd_printd("mute LED gpio %d polarity %d\n", spec->gpio_led, spec->gpio_led_polarity); @@ -5730,7 +5755,6 @@ /* fallthru */ case 0x111d76b4: /* 6 Port without Analog Mixer */ case 0x111d76b5: - spec->init = stac92hd71bxx_core_init; codec->slave_dig_outs = stac92hd71bxx_slave_dig_outs; spec->num_dmics = stac92xx_connected_ports(codec, stac92hd71bxx_dmic_nids, @@ -5755,7 +5779,6 @@ spec->stream_delay = 40; /* 40 milliseconds */ /* disable VSW */ - spec->init = stac92hd71bxx_core_init; unmute_init++; snd_hda_codec_set_pincfg(codec, 0x0f, 0x40f000f0); snd_hda_codec_set_pincfg(codec, 0x19, 0x40f000f3); @@ -5770,7 +5793,6 @@ /* fallthru */ default: - spec->init = stac92hd71bxx_core_init; codec->slave_dig_outs = stac92hd71bxx_slave_dig_outs; spec->num_dmics = stac92xx_connected_ports(codec, stac92hd71bxx_dmic_nids, @@ -5778,6 +5800,9 @@ break; } + if (get_wcaps_type(get_wcaps(codec, 0x28)) == AC_WID_VOL_KNB) + spec->init = stac92hd71bxx_core_init; + if (get_wcaps(codec, 0xa) & AC_WCAP_IN_AMP) snd_hda_sequence_write_cache(codec, unmute_init); --- linux-3.5.0.orig/sound/pci/hda/patch_conexant.c +++ linux-3.5.0/sound/pci/hda/patch_conexant.c @@ -553,24 +553,12 @@ return 0; } -#ifdef CONFIG_SND_HDA_POWER_SAVE -static int conexant_suspend(struct hda_codec *codec, pm_message_t state) -{ - snd_hda_shutup_pins(codec); - return 0; -} -#endif - static const struct hda_codec_ops conexant_patch_ops = { .build_controls = conexant_build_controls, .build_pcms = conexant_build_pcms, .init = conexant_init, .free = conexant_free, .set_power_state = conexant_set_power, -#ifdef CONFIG_SND_HDA_POWER_SAVE - .suspend = conexant_suspend, -#endif - .reboot_notify = snd_hda_shutup_pins, }; #ifdef CONFIG_SND_HDA_INPUT_BEEP @@ -1182,7 +1170,7 @@ } if (spec->beep_amp) - snd_hda_attach_beep_device(codec, spec->beep_amp); + snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp)); return 0; } @@ -1961,7 +1949,7 @@ } if (spec->beep_amp) - snd_hda_attach_beep_device(codec, spec->beep_amp); + snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp)); return 0; } @@ -2972,7 +2960,6 @@ SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), - SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), @@ -3149,7 +3136,7 @@ } if (spec->beep_amp) - snd_hda_attach_beep_device(codec, spec->beep_amp); + snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp)); return 0; } @@ -3546,8 +3533,9 @@ hda_nid_t pin, hda_nid_t *srcp, bool do_select, int depth) { + struct conexant_spec *spec = codec->spec; hda_nid_t conn[HDA_MAX_NUM_INPUTS]; - int i, nums; + int startidx, i, nums; switch (get_wcaps_type(get_wcaps(codec, mux))) { case AC_WID_AUD_IN: @@ -3571,14 +3559,25 @@ depth++; if (depth == 2) return -1; + + /* Try to rotate around connections to avoid one boost controlling + another input path as well */ + startidx = 0; + for (i = 0; i < spec->private_imux.num_items; i++) + if (spec->imux_info[i].pin == pin) { + startidx = i; + break; + } + for (i = 0; i < nums; i++) { - int ret = __select_input_connection(codec, conn[i], pin, srcp, + int j = (i + startidx) % nums; + int ret = __select_input_connection(codec, conn[j], pin, srcp, do_select, depth); if (ret >= 0) { if (do_select) snd_hda_codec_write(codec, mux, 0, - AC_VERB_SET_CONNECT_SEL, i); - return i; + AC_VERB_SET_CONNECT_SEL, j); + return j; } } return -1; @@ -4268,7 +4267,7 @@ if (get_wcaps(codec, mux) & AC_WCAP_OUT_AMP) { spec->imux_info[idx].boost = mux; - return cx_auto_add_volume(codec, label, " Boost", 0, + return cx_auto_add_volume(codec, label, " Boost", cidx, mux, HDA_OUTPUT); } return 0; @@ -4402,10 +4401,6 @@ .init = cx_auto_init, .free = conexant_free, .unsol_event = cx_auto_unsol_event, -#ifdef CONFIG_SND_HDA_POWER_SAVE - .suspend = conexant_suspend, -#endif - .reboot_notify = snd_hda_shutup_pins, }; /* @@ -4462,12 +4457,14 @@ }; static const struct snd_pci_quirk cxt5066_fixups[] = { + SND_PCI_QUIRK(0x1025, 0x0543, "Acer Aspire One 522", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo T410", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x215f, "Lenovo T510", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x21ce, "Lenovo T420", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), + SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC), {} }; @@ -4543,7 +4540,7 @@ spec->capture_stream = &cx_auto_pcm_analog_capture; codec->patch_ops = cx_auto_patch_ops; if (spec->beep_amp) - snd_hda_attach_beep_device(codec, spec->beep_amp); + snd_hda_attach_beep_device(codec, get_amp_nid_(spec->beep_amp)); /* Some laptops with Conexant chips show stalls in S3 resume, * which falls into the single-cmd mode. @@ -4603,6 +4600,12 @@ .patch = patch_conexant_auto }, { .id = 0x14f15111, .name = "CX20753/4", .patch = patch_conexant_auto }, + { .id = 0x14f15113, .name = "CX20755", + .patch = patch_conexant_auto }, + { .id = 0x14f15114, .name = "CX20756", + .patch = patch_conexant_auto }, + { .id = 0x14f15115, .name = "CX20757", + .patch = patch_conexant_auto }, {} /* terminator */ }; @@ -4626,6 +4629,9 @@ MODULE_ALIAS("snd-hda-codec-id:14f1510f"); MODULE_ALIAS("snd-hda-codec-id:14f15110"); MODULE_ALIAS("snd-hda-codec-id:14f15111"); +MODULE_ALIAS("snd-hda-codec-id:14f15113"); +MODULE_ALIAS("snd-hda-codec-id:14f15114"); +MODULE_ALIAS("snd-hda-codec-id:14f15115"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Conexant HD-audio codec"); --- linux-3.5.0.orig/sound/pci/hda/patch_via.c +++ linux-3.5.0/sound/pci/hda/patch_via.c @@ -118,6 +118,8 @@ }; struct via_spec { + struct hda_gen_spec gen; + /* codec parameterization */ const struct snd_kcontrol_new *mixers[6]; unsigned int num_mixers; @@ -246,6 +248,7 @@ /* VT1708BCE & VT1708S are almost same */ if (spec->codec_type == VT1708BCE) spec->codec_type = VT1708S; + snd_hda_gen_init(&spec->gen); return spec; } @@ -1628,6 +1631,7 @@ vt1708_stop_hp_work(spec); kfree(spec->bind_cap_vol); kfree(spec->bind_cap_sw); + snd_hda_gen_free(&spec->gen); kfree(spec); } @@ -1672,7 +1676,8 @@ struct via_spec *spec = codec->spec; if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0] && - (spec->codec_type != VT1708 || spec->vt1708_jack_detect)) + (spec->codec_type != VT1708 || spec->vt1708_jack_detect) && + is_jack_detectable(codec, spec->autocfg.hp_pins[0])) present = snd_hda_jack_detect(codec, spec->autocfg.hp_pins[0]); if (spec->smart51_enabled) @@ -1752,6 +1757,14 @@ { struct via_spec *spec = codec->spec; vt1708_stop_hp_work(spec); + + if (spec->codec_type == VT1802) { + /* Fix pop noise on headphones */ + int i; + for (i = 0; i < spec->autocfg.hp_outs; i++) + snd_hda_set_pin_ctl(codec, spec->autocfg.hp_pins[i], 0); + } + return 0; } #endif @@ -1862,11 +1875,11 @@ { struct via_spec *spec = codec->spec; const struct auto_pin_cfg *cfg = &spec->autocfg; - int i, dac_num; + int i; hda_nid_t nid; + spec->multiout.num_dacs = 0; spec->multiout.dac_nids = spec->private_dac_nids; - dac_num = 0; for (i = 0; i < cfg->line_outs; i++) { hda_nid_t dac = 0; nid = cfg->line_out_pins[i]; @@ -1877,16 +1890,13 @@ if (!i && parse_output_path(codec, nid, dac, 1, &spec->out_mix_path)) dac = spec->out_mix_path.path[0]; - if (dac) { - spec->private_dac_nids[i] = dac; - dac_num++; - } + if (dac) + spec->private_dac_nids[spec->multiout.num_dacs++] = dac; } if (!spec->out_path[0].depth && spec->out_mix_path.depth) { spec->out_path[0] = spec->out_mix_path; spec->out_mix_path.depth = 0; } - spec->multiout.num_dacs = dac_num; return 0; } @@ -3226,7 +3236,7 @@ { struct via_spec *spec = codec->spec; int imux_is_smixer; - unsigned int parm; + unsigned int parm, parm2; /* MUX6 (1eh) = stereo mixer */ imux_is_smixer = snd_hda_codec_read(codec, 0x1e, 0, AC_VERB_GET_CONNECT_SEL, 0x00) == 5; @@ -3249,7 +3259,7 @@ parm = AC_PWRST_D3; set_pin_power_state(codec, 0x27, &parm); update_power_state(codec, 0x1a, parm); - update_power_state(codec, 0xb, parm); + parm2 = parm; /* for pin 0x0b */ /* PW2 (26h), AOW2 (ah) */ parm = AC_PWRST_D3; @@ -3264,6 +3274,9 @@ if (!spec->hp_independent_mode) /* check for redirected HP */ set_pin_power_state(codec, 0x28, &parm); update_power_state(codec, 0x8, parm); + if (!spec->hp_independent_mode && parm2 != AC_PWRST_D3) + parm = parm2; + update_power_state(codec, 0xb, parm); /* MW9 (21h), Mw2 (1ah), AOW0 (8h) */ update_power_state(codec, 0x21, imux_is_smixer ? AC_PWRST_D0 : parm); @@ -3658,6 +3671,44 @@ update_power_state(codec, 0x21, AC_PWRST_D3); } +/* + * pin fix-up + */ +enum { + VIA_FIXUP_INTMIC_BOOST, +}; + +static void via_fixup_intmic_boost(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + override_mic_boost(codec, 0x30, 0, 2, 40); +} + +static const struct hda_fixup via_fixups[] = { + [VIA_FIXUP_INTMIC_BOOST] = { + .type = HDA_FIXUP_FUNC, + .v.func = via_fixup_intmic_boost, + }, +}; + +static const struct snd_pci_quirk vt2002p_fixups[] = { + SND_PCI_QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_INTMIC_BOOST), + {} +}; + +/* NIDs 0x24 and 0x33 on VT1802 have connections to non-existing NID 0x3e + * Replace this with mixer NID 0x1c + */ +static void fix_vt1802_connections(struct hda_codec *codec) +{ + static hda_nid_t conn_24[] = { 0x14, 0x1c }; + static hda_nid_t conn_33[] = { 0x1c }; + + snd_hda_override_conn_list(codec, 0x24, ARRAY_SIZE(conn_24), conn_24); + snd_hda_override_conn_list(codec, 0x33, ARRAY_SIZE(conn_33), conn_33); +} + /* patch for vt2002P */ static int patch_vt2002P(struct hda_codec *codec) { @@ -3672,8 +3723,13 @@ spec->aa_mix_nid = 0x21; override_mic_boost(codec, 0x2b, 0, 3, 40); override_mic_boost(codec, 0x29, 0, 3, 40); + if (spec->codec_type == VT1802) + fix_vt1802_connections(codec); add_secret_dac_path(codec); + snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups); + snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); + /* automatic parse from the BIOS config */ err = via_parse_auto_config(codec); if (err < 0) { --- linux-3.5.0.orig/sound/pci/hda/patch_cirrus.c +++ linux-3.5.0/sound/pci/hda/patch_cirrus.c @@ -96,8 +96,8 @@ #define CS420X_VENDOR_NID 0x11 #define CS_DIG_OUT1_PIN_NID 0x10 #define CS_DIG_OUT2_PIN_NID 0x15 -#define CS_DMIC1_PIN_NID 0x12 -#define CS_DMIC2_PIN_NID 0x0e +#define CS_DMIC1_PIN_NID 0x0e +#define CS_DMIC2_PIN_NID 0x12 /* coef indices */ #define IDX_SPDIF_STAT 0x0000 @@ -461,6 +461,7 @@ memcpy(cfg->speaker_pins, cfg->line_out_pins, sizeof(cfg->speaker_pins)); cfg->line_outs = 0; + memset(cfg->line_out_pins, 0, sizeof(cfg->line_out_pins)); } return 0; @@ -1074,14 +1075,18 @@ cs_automic(codec); coef = 0x000a; /* ADC1/2 - Digital and Analog Soft Ramp */ + cs_vendor_coef_set(codec, IDX_ADC_CFG, coef); + + coef = cs_vendor_coef_get(codec, IDX_BEEP_CFG); if (is_active_pin(codec, CS_DMIC2_PIN_NID)) - coef |= 0x0500; /* DMIC2 2 chan on, GPIO1 off */ + coef |= 1 << 4; /* DMIC2 2 chan on, GPIO1 off */ if (is_active_pin(codec, CS_DMIC1_PIN_NID)) - coef |= 0x1800; /* DMIC1 2 chan on, GPIO0 off + coef |= 1 << 3; /* DMIC1 2 chan on, GPIO0 off * No effect if SPDIF_OUT2 is * selected in IDX_SPDIF_CTL. */ - cs_vendor_coef_set(codec, IDX_ADC_CFG, coef); + + cs_vendor_coef_set(codec, IDX_BEEP_CFG, coef); } else { if (spec->mic_detect) cs_automic(codec); @@ -1102,7 +1107,7 @@ | 0x0400 /* Disable Coefficient Auto increment */ )}, /* Beep */ - {0x11, AC_VERB_SET_COEF_INDEX, IDX_DAC_CFG}, + {0x11, AC_VERB_SET_COEF_INDEX, IDX_BEEP_CFG}, {0x11, AC_VERB_SET_PROC_COEF, 0x0007}, /* Enable Beep thru DAC1/2/3 */ {} /* terminator */ @@ -1417,7 +1422,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } @@ -1974,7 +1979,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } @@ -1999,7 +2004,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } --- linux-3.5.0.orig/sound/pci/hda/patch_realtek.c +++ linux-3.5.0/sound/pci/hda/patch_realtek.c @@ -170,10 +170,10 @@ hda_nid_t imux_pins[HDA_MAX_NUM_INPUTS]; unsigned int dyn_adc_idx[HDA_MAX_NUM_INPUTS]; int int_mic_idx, ext_mic_idx, dock_mic_idx; /* for auto-mic */ + hda_nid_t inv_dmic_pin; /* hooks */ void (*init_hook)(struct hda_codec *codec); - void (*unsol_event)(struct hda_codec *codec, unsigned int res); #ifdef CONFIG_SND_HDA_POWER_SAVE void (*power_hook)(struct hda_codec *codec); #endif @@ -201,6 +201,9 @@ unsigned int vol_in_capsrc:1; /* use capsrc volume (ADC has no vol) */ unsigned int parse_flags; /* passed to snd_hda_parse_pin_defcfg() */ unsigned int shared_mic_hp:1; /* HP/Mic-in sharing */ + unsigned int no_primary_hp:1; /* Don't prefer HP pins to speaker pins */ + unsigned int inv_dmic_fixup:1; /* has inverted digital-mic workaround */ + unsigned int inv_dmic_muted:1; /* R-ch of inv d-mic is muted? */ /* auto-mute control */ int automute_mode; @@ -298,6 +301,39 @@ } static void call_update_outputs(struct hda_codec *codec); +static void alc_inv_dmic_sync(struct hda_codec *codec, bool force); + +/* for shared I/O, change the pin-control accordingly */ +static void update_shared_mic_hp(struct hda_codec *codec, bool set_as_mic) +{ + struct alc_spec *spec = codec->spec; + unsigned int val; + hda_nid_t pin = spec->autocfg.inputs[1].pin; + /* NOTE: this assumes that there are only two inputs, the + * first is the real internal mic and the second is HP/mic jack. + */ + + val = snd_hda_get_default_vref(codec, pin); + + /* This pin does not have vref caps - let's enable vref on pin 0x18 + instead, as suggested by Realtek */ + if (val == AC_PINCTL_VREF_HIZ) { + const hda_nid_t vref_pin = 0x18; + /* Sanity check pin 0x18 */ + if (get_wcaps_type(get_wcaps(codec, vref_pin)) == AC_WID_PIN && + get_defcfg_connect(snd_hda_codec_get_pincfg(codec, vref_pin)) == AC_JACK_PORT_NONE) { + unsigned int vref_val = snd_hda_get_default_vref(codec, vref_pin); + if (vref_val != AC_PINCTL_VREF_HIZ) + snd_hda_set_pin_ctl(codec, vref_pin, PIN_IN | (set_as_mic ? vref_val : 0)); + } + } + + val = set_as_mic ? val | PIN_IN : PIN_HP; + snd_hda_set_pin_ctl(codec, pin, val); + + spec->automute_speaker = !set_as_mic; + call_update_outputs(codec); +} /* select the given imux item; either unmute exclusively or select the route */ static int alc_mux_select(struct hda_codec *codec, unsigned int adc_idx, @@ -325,21 +361,8 @@ return 0; spec->cur_mux[adc_idx] = idx; - /* for shared I/O, change the pin-control accordingly */ - if (spec->shared_mic_hp) { - unsigned int val; - hda_nid_t pin = spec->autocfg.inputs[1].pin; - /* NOTE: this assumes that there are only two inputs, the - * first is the real internal mic and the second is HP jack. - */ - if (spec->cur_mux[adc_idx]) - val = snd_hda_get_default_vref(codec, pin) | PIN_IN; - else - val = PIN_HP; - snd_hda_set_pin_ctl(codec, pin, val); - spec->automute_speaker = !spec->cur_mux[adc_idx]; - call_update_outputs(codec); - } + if (spec->shared_mic_hp) + update_shared_mic_hp(codec, spec->cur_mux[adc_idx]); if (spec->dyn_adc_switch) { alc_dyn_adc_pcm_resetup(codec, idx); @@ -368,6 +391,7 @@ AC_VERB_SET_CONNECT_SEL, imux->items[idx].index); } + alc_inv_dmic_sync(codec, true); return 1; } @@ -587,6 +611,8 @@ { struct alc_spec *spec = codec->spec; + if (spec->autocfg.line_out_type == AUTO_PIN_SPEAKER_OUT) + return; /* check LO jack only when it's different from HP */ if (spec->autocfg.line_out_pins[0] == spec->autocfg.hp_pins[0]) return; @@ -664,7 +690,7 @@ } /* unsolicited event for HP jack sensing */ -static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) +static void alc_unsol_event(struct hda_codec *codec, unsigned int res) { int action; @@ -1000,11 +1026,9 @@ spec->automute_lo = spec->automute_lo_possible; spec->automute_speaker = spec->automute_speaker_possible; - if (spec->automute_speaker_possible || spec->automute_lo_possible) { + if (spec->automute_speaker_possible || spec->automute_lo_possible) /* create a control for automute mode */ alc_add_automute_mode_enum(codec); - spec->unsol_event = alc_sku_unsol_event; - } } /* return the position of NID in the list, or -1 if not found */ @@ -1167,7 +1191,6 @@ snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x/0x%x\n", ext, fixed, dock); - spec->unsol_event = alc_sku_unsol_event; } /* check the availabilities of auto-mute and auto-mic switches */ @@ -1556,14 +1579,14 @@ static int alc_cap_getput_caller(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol, - getput_call_t func, bool check_adc_switch) + getput_call_t func, bool is_put) { struct hda_codec *codec = snd_kcontrol_chip(kcontrol); struct alc_spec *spec = codec->spec; int i, err = 0; mutex_lock(&codec->control_mutex); - if (check_adc_switch && spec->dyn_adc_switch) { + if (is_put && spec->dyn_adc_switch) { for (i = 0; i < spec->num_adc_nids; i++) { kcontrol->private_value = HDA_COMPOSE_AMP_VAL(spec->adc_nids[i], @@ -1584,6 +1607,8 @@ 3, 0, HDA_INPUT); err = func(kcontrol, ucontrol); } + if (err >= 0 && is_put) + alc_inv_dmic_sync(codec, false); error: mutex_unlock(&codec->control_mutex); return err; @@ -1676,6 +1701,108 @@ DEFINE_CAPMIX_NOSRC(3); /* + * Inverted digital-mic handling + * + * First off, it's a bit tricky. The "Inverted Internal Mic Capture Switch" + * gives the additional mute only to the right channel of the digital mic + * capture stream. This is a workaround for avoiding the almost silence + * by summing the stereo stream from some (known to be ForteMedia) + * digital mic unit. + * + * The logic is to call alc_inv_dmic_sync() after each action (possibly) + * modifying ADC amp. When the mute flag is set, it mutes the R-channel + * without caching so that the cache can still keep the original value. + * The cached value is then restored when the flag is set off or any other + * than d-mic is used as the current input source. + */ +static void alc_inv_dmic_sync(struct hda_codec *codec, bool force) +{ + struct alc_spec *spec = codec->spec; + int i; + + if (!spec->inv_dmic_fixup) + return; + if (!spec->inv_dmic_muted && !force) + return; + for (i = 0; i < spec->num_adc_nids; i++) { + int src = spec->dyn_adc_switch ? 0 : i; + bool dmic_fixup = false; + hda_nid_t nid; + int parm, dir, v; + + if (spec->inv_dmic_muted && + spec->imux_pins[spec->cur_mux[src]] == spec->inv_dmic_pin) + dmic_fixup = true; + if (!dmic_fixup && !force) + continue; + if (spec->vol_in_capsrc) { + nid = spec->capsrc_nids[i]; + parm = AC_AMP_SET_RIGHT | AC_AMP_SET_OUTPUT; + dir = HDA_OUTPUT; + } else { + nid = spec->adc_nids[i]; + parm = AC_AMP_SET_RIGHT | AC_AMP_SET_INPUT; + dir = HDA_INPUT; + } + /* we care only right channel */ + v = snd_hda_codec_amp_read(codec, nid, 1, dir, 0); + if (v & 0x80) /* if already muted, we don't need to touch */ + continue; + if (dmic_fixup) /* add mute for d-mic */ + v |= 0x80; + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, + parm | v); + } +} + +static int alc_inv_dmic_sw_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct hda_codec *codec = snd_kcontrol_chip(kcontrol); + struct alc_spec *spec = codec->spec; + + ucontrol->value.integer.value[0] = !spec->inv_dmic_muted; + return 0; +} + +static int alc_inv_dmic_sw_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct hda_codec *codec = snd_kcontrol_chip(kcontrol); + struct alc_spec *spec = codec->spec; + unsigned int val = !ucontrol->value.integer.value[0]; + + if (val == spec->inv_dmic_muted) + return 0; + spec->inv_dmic_muted = val; + alc_inv_dmic_sync(codec, true); + return 0; +} + +static const struct snd_kcontrol_new alc_inv_dmic_sw = { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .info = snd_ctl_boolean_mono_info, + .get = alc_inv_dmic_sw_get, + .put = alc_inv_dmic_sw_put, +}; + +static int alc_add_inv_dmic_mixer(struct hda_codec *codec, hda_nid_t nid) +{ + struct alc_spec *spec = codec->spec; + struct snd_kcontrol_new *knew = alc_kcontrol_new(spec); + if (!knew) + return -ENOMEM; + *knew = alc_inv_dmic_sw; + knew->name = kstrdup("Inverted Internal Mic Capture Switch", GFP_KERNEL); + if (!knew->name) + return -ENOMEM; + spec->inv_dmic_fixup = 1; + spec->inv_dmic_muted = 0; + spec->inv_dmic_pin = nid; + return 0; +} + +/* * virtual master controls */ @@ -1865,13 +1992,31 @@ return 0; } -static int alc_build_controls(struct hda_codec *codec) +static int alc_build_jacks(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; + + if (spec->shared_mic_hp) { + int err; + int nid = spec->autocfg.inputs[1].pin; + err = snd_hda_jack_add_kctl(codec, nid, "Headphone Mic", 0); + if (err < 0) + return err; + err = snd_hda_jack_detect_enable(codec, nid, 0); + if (err < 0) + return err; + } + + return snd_hda_jack_add_kctls(codec, &spec->autocfg); +} + +static int alc_build_controls(struct hda_codec *codec) +{ int err = __alc_build_controls(codec); if (err < 0) return err; - err = snd_hda_jack_add_kctls(codec, &spec->autocfg); + + err = alc_build_jacks(codec); if (err < 0) return err; alc_apply_fixup(codec, ALC_FIXUP_ACT_BUILD); @@ -1908,14 +2053,6 @@ return 0; } -static void alc_unsol_event(struct hda_codec *codec, unsigned int res) -{ - struct alc_spec *spec = codec->spec; - - if (spec->unsol_event) - spec->unsol_event(codec, res); -} - #ifdef CONFIG_SND_HDA_POWER_SAVE static int alc_check_power_status(struct hda_codec *codec, hda_nid_t nid) { @@ -2317,6 +2454,7 @@ codec->patch_ops.init(codec); snd_hda_codec_resume_amp(codec); snd_hda_codec_resume_cache(codec); + alc_inv_dmic_sync(codec, true); hda_call_check_power_status(codec, 0x01); return 0; } @@ -2483,8 +2621,10 @@ return "PCM"; break; } - if (snd_BUG_ON(ch >= ARRAY_SIZE(channel_name))) + if (ch >= ARRAY_SIZE(channel_name)) { + snd_BUG(); return "PCM"; + } return channel_name[ch]; } @@ -4116,14 +4256,12 @@ */ static void alc_auto_init_std(struct hda_codec *codec) { - struct alc_spec *spec = codec->spec; alc_auto_init_multi_out(codec); alc_auto_init_extra_out(codec); alc_auto_init_analog_input(codec); alc_auto_init_input_src(codec); alc_auto_init_digital(codec); - if (spec->unsol_event) - alc_inithook(codec); + alc_inithook(codec); } /* @@ -4182,7 +4320,8 @@ return 0; /* can't find valid BIOS pin config */ } - if (cfg->line_out_type == AUTO_PIN_SPEAKER_OUT && + if (!spec->no_primary_hp && + cfg->line_out_type == AUTO_PIN_SPEAKER_OUT && cfg->line_outs <= cfg->hp_outs) { /* use HP as primary out */ cfg->speaker_outs = cfg->line_outs; @@ -4571,6 +4710,7 @@ SND_PCI_QUIRK(0x1584, 0x9077, "Uniwill P53", ALC880_FIXUP_VOL_KNOB), SND_PCI_QUIRK(0x161f, 0x203d, "W810", ALC880_FIXUP_W810), SND_PCI_QUIRK(0x161f, 0x205d, "Medion Rim 2150", ALC880_FIXUP_MEDION_RIM), + SND_PCI_QUIRK(0x1631, 0xe011, "PB 13201056", ALC880_FIXUP_6ST), SND_PCI_QUIRK(0x1734, 0x107c, "FSC F1734", ALC880_FIXUP_F1734), SND_PCI_QUIRK(0x1734, 0x1094, "FSC Amilo M1451G", ALC880_FIXUP_FUJITSU), SND_PCI_QUIRK(0x1734, 0x10ac, "FSC AMILO Xi 1526", ALC880_FIXUP_F1734), @@ -4724,7 +4864,6 @@ spec->automute_speaker = 1; spec->autocfg.hp_pins[0] = 0x0f; /* copy it for automute */ snd_hda_jack_detect_enable(codec, 0x0f, ALC_HP_EVENT); - spec->unsol_event = alc_sku_unsol_event; snd_hda_gen_add_verbs(&spec->gen, alc_gpio1_init_verbs); } } @@ -4909,6 +5048,7 @@ ALC889_FIXUP_DAC_ROUTE, ALC889_FIXUP_MBP_VREF, ALC889_FIXUP_IMAC91_VREF, + ALC882_FIXUP_NO_PRIMARY_HP, }; static void alc889_fixup_coef(struct hda_codec *codec, @@ -5030,6 +5170,17 @@ spec->keep_vref_in_automute = 1; } +/* Don't take HP output as primary + * strangely, the speaker output doesn't work on VAIO Z through DAC 0x05 + */ +static void alc882_fixup_no_primary_hp(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + if (action == ALC_FIXUP_ACT_PRE_PROBE) + spec->no_primary_hp = 1; +} + static const struct alc_fixup alc882_fixups[] = { [ALC882_FIXUP_ABIT_AW9D_MAX] = { .type = ALC_FIXUP_PINS, @@ -5212,6 +5363,10 @@ .chained = true, .chain_id = ALC882_FIXUP_GPIO1, }, + [ALC882_FIXUP_NO_PRIMARY_HP] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc882_fixup_no_primary_hp, + }, }; static const struct snd_pci_quirk alc882_fixup_tbl[] = { @@ -5246,6 +5401,8 @@ SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC), SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601), SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), + SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP), + SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP), /* All Apple entries are in codec SSIDs */ SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF), @@ -5266,6 +5423,7 @@ SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO), + SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF), @@ -5286,6 +5444,7 @@ {.id = ALC882_FIXUP_ACER_ASPIRE_4930G, .name = "acer-aspire-4930g"}, {.id = ALC882_FIXUP_ACER_ASPIRE_8930G, .name = "acer-aspire-8930g"}, {.id = ALC883_FIXUP_ACER_EAPD, .name = "acer-aspire"}, + {.id = ALC882_FIXUP_NO_PRIMARY_HP, .name = "no-primary-hp"}, {} }; @@ -5522,6 +5681,33 @@ { } }; +enum { + ALC268_FIXUP_HP_EAPD, +}; + +static const struct alc_fixup alc268_fixups[] = { + [ALC268_FIXUP_HP_EAPD] = { + .type = ALC_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + {0x15, AC_VERB_SET_EAPD_BTLENABLE, 0}, + {} + } + }, +}; + +static const struct alc_model_fixup alc268_fixup_models[] = { + {.id = ALC268_FIXUP_HP_EAPD, .name = "hp-eapd"}, + {} +}; + +static const struct snd_pci_quirk alc268_fixup_tbl[] = { + /* below is codec SSID since multiple Toshiba laptops have the + * same PCI SSID 1179:ff00 + */ + SND_PCI_QUIRK(0x1179, 0xff06, "Toshiba P200", ALC268_FIXUP_HP_EAPD), + {} +}; + /* * BIOS auto configuration */ @@ -5553,6 +5739,9 @@ spec = codec->spec; + alc_pick_fixup(codec, alc268_fixup_models, alc268_fixup_tbl, alc268_fixups); + alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); + /* automatic parse from the BIOS config */ err = alc268_parse_auto_config(codec); if (err < 0) @@ -5582,6 +5771,8 @@ codec->patch_ops = alc_patch_ops; spec->shutup = alc_eapd_shutup; + alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE); + return 0; error: @@ -5649,7 +5840,7 @@ return alc_parse_auto_config(codec, alc269_ignore, ssids); } -static void alc269_toggle_power_output(struct hda_codec *codec, int power_up) +static void alc269vb_toggle_power_output(struct hda_codec *codec, int power_up) { int val = alc_read_coef_idx(codec, 0x04); if (power_up) @@ -5666,10 +5857,10 @@ if (spec->codec_variant != ALC269_TYPE_ALC269VB) return; - if ((alc_get_coef0(codec) & 0x00ff) == 0x017) - alc269_toggle_power_output(codec, 0); - if ((alc_get_coef0(codec) & 0x00ff) == 0x018) { - alc269_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && + (alc_get_coef0(codec) & 0x00ff) == 0x018) { msleep(150); } } @@ -5679,24 +5870,22 @@ { struct alc_spec *spec = codec->spec; - if (spec->codec_variant == ALC269_TYPE_ALC269VB || + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && (alc_get_coef0(codec) & 0x00ff) == 0x018) { - alc269_toggle_power_output(codec, 0); msleep(150); } codec->patch_ops.init(codec); - if (spec->codec_variant == ALC269_TYPE_ALC269VB || + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 1); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && (alc_get_coef0(codec) & 0x00ff) == 0x017) { - alc269_toggle_power_output(codec, 1); msleep(200); } - if (spec->codec_variant == ALC269_TYPE_ALC269VB || - (alc_get_coef0(codec) & 0x00ff) == 0x018) - alc269_toggle_power_output(codec, 1); - snd_hda_codec_resume_amp(codec); snd_hda_codec_resume_cache(codec); hda_call_check_power_status(codec, 0x01); @@ -5704,6 +5893,15 @@ } #endif /* CONFIG_PM */ +static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + if (action == ALC_FIXUP_ACT_PRE_PROBE) + spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; +} + static void alc269_fixup_hweq(struct hda_codec *codec, const struct alc_fixup *fix, int action) { @@ -5787,6 +5985,30 @@ spec->automute_hook = alc269_quanta_automute; } +/* update mute-LED according to the speaker mute state via mic1 VREF pin */ +static void alc269_fixup_mic1_mute_hook(void *private_data, int enabled) +{ + struct hda_codec *codec = private_data; + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ? + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80); + snd_hda_set_pin_ctl_cache(codec, 0x18, pinval); +} + +static void alc269_fixup_mic1_mute(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + switch (action) { + case ALC_FIXUP_ACT_BUILD: + spec->vmaster_mute.hook = alc269_fixup_mic1_mute_hook; + snd_hda_add_vmaster_hook(codec, &spec->vmaster_mute, true); + /* fallthru */ + case ALC_FIXUP_ACT_INIT: + snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + break; + } +} + /* update mute-LED according to the speaker mute state via mic2 VREF pin */ static void alc269_fixup_mic2_mute_hook(void *private_data, int enabled) { @@ -5810,6 +6032,14 @@ } } +static void alc269_fixup_inv_dmic(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + if (action == ALC_FIXUP_ACT_PROBE) + alc_add_inv_dmic_mixer(codec, 0x12); +} + + enum { ALC269_FIXUP_SONY_VAIO, ALC275_FIXUP_SONY_VAIO_GPIO2, @@ -5827,7 +6057,11 @@ ALC269_FIXUP_DMIC, ALC269VB_FIXUP_AMIC, ALC269VB_FIXUP_DMIC, + ALC269_FIXUP_MIC1_MUTE_LED, ALC269_FIXUP_MIC2_MUTE_LED, + ALC269_FIXUP_LENOVO_DOCK, + ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, + ALC269_FIXUP_INV_DMIC, }; static const struct alc_fixup alc269_fixups[] = { @@ -5889,6 +6123,8 @@ [ALC269_FIXUP_PCM_44K] = { .type = ALC_FIXUP_FUNC, .v.func = alc269_fixup_pcm_44k, + .chained = true, + .chain_id = ALC269_FIXUP_QUANTA_MUTE }, [ALC269_FIXUP_STEREO_DMIC] = { .type = ALC_FIXUP_FUNC, @@ -5948,16 +6184,43 @@ { } }, }, + [ALC269_FIXUP_MIC1_MUTE_LED] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_mic1_mute, + }, [ALC269_FIXUP_MIC2_MUTE_LED] = { .type = ALC_FIXUP_FUNC, .v.func = alc269_fixup_mic2_mute, }, + [ALC269_FIXUP_LENOVO_DOCK] = { + .type = ALC_FIXUP_PINS, + .v.pins = (const struct alc_pincfg[]) { + { 0x19, 0x23a11040 }, /* dock mic */ + { 0x1b, 0x2121103f }, /* dock headphone */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT + }, + [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_pincfg_no_hp_to_lineout, + }, + [ALC269_FIXUP_INV_DMIC] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_inv_dmic, + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1025, 0x029b, "Acer 1810TZ", ALC269_FIXUP_INV_DMIC), + SND_PCI_QUIRK(0x1025, 0x0349, "Acer AOD260", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_MIC2_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x1972, "HP Pavilion 17", ALC269_FIXUP_MIC1_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x1977, "HP Pavilion 14", ALC269_FIXUP_MIC1_MUTE_LED), SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_DMIC), SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), + SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), @@ -5975,8 +6238,12 @@ SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), - SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE), - SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K), + SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21f3, "Thinkpad T430", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), #if 0 @@ -6033,6 +6300,7 @@ static const struct alc_model_fixup alc269_fixup_models[] = { {.id = ALC269_FIXUP_AMIC, .name = "laptop-amic"}, {.id = ALC269_FIXUP_DMIC, .name = "laptop-dmic"}, + {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"}, {} }; @@ -6094,6 +6362,12 @@ spec = codec->spec; + alc_pick_fixup(codec, alc269_fixup_models, + alc269_fixup_tbl, alc269_fixups); + alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); + + alc_auto_parse_customize_define(codec); + if (codec->vendor_id == 0x10ec0269) { spec->codec_variant = ALC269_TYPE_ALC269VA; switch (alc_get_coef0(codec) & 0x00f0) { @@ -6121,12 +6395,6 @@ alc269_fill_coef(codec); } - alc_pick_fixup(codec, alc269_fixup_models, - alc269_fixup_tbl, alc269_fixups); - alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); - - alc_auto_parse_customize_define(codec); - /* automatic parse from the BIOS config */ err = alc269_parse_auto_config(codec); if (err < 0) @@ -6300,8 +6568,8 @@ const struct alc_fixup *fix, int action) { if (action == ALC_FIXUP_ACT_PRE_PROBE) { - snd_hda_override_pin_caps(codec, 0x18, 0x00001714); - snd_hda_override_pin_caps(codec, 0x19, 0x0000171c); + snd_hda_override_pin_caps(codec, 0x18, 0x00000734); + snd_hda_override_pin_caps(codec, 0x19, 0x0000073c); } } @@ -6405,7 +6673,8 @@ const hda_nid_t *ssids; if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 || - codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670) + codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 || + codec->vendor_id == 0x10ec0671) ssids = alc663_ssids; else ssids = alc662_ssids; @@ -6426,6 +6695,8 @@ "hda_codec: failed to override amp caps for NID 0x2\n"); } +#define alc662_fixup_inv_dmic alc269_fixup_inv_dmic + enum { ALC662_FIXUP_ASPIRE, ALC662_FIXUP_IDEAPAD, @@ -6443,6 +6714,7 @@ ALC662_FIXUP_ASUS_MODE8, ALC662_FIXUP_NO_JACK_DETECT, ALC662_FIXUP_ZOTAC_Z68, + ALC662_FIXUP_INV_DMIC, }; static const struct alc_fixup alc662_fixups[] = { @@ -6599,12 +6871,17 @@ { } } }, + [ALC662_FIXUP_INV_DMIC] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc662_fixup_inv_dmic, + }, }; static const struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_FIXUP_ASUS_MODE2), SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), + SND_PCI_QUIRK(0x1025, 0x0349, "eMachines eM250", ALC662_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT), @@ -6831,6 +7108,10 @@ { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 }, { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 }, { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 }, + { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 }, + { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 }, + { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 }, + { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 }, { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", .patch = patch_alc861 }, { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd }, @@ -6844,7 +7125,9 @@ .patch = patch_alc662 }, { .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 }, { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 }, + { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 }, { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 }, + { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 }, { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 }, { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 }, { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 }, @@ -6861,6 +7144,7 @@ { .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc882 }, { .id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662 }, { .id = 0x10ec0899, .name = "ALC898", .patch = patch_alc882 }, + { .id = 0x10ec0900, .name = "ALC1150", .patch = patch_alc882 }, {} /* terminator */ }; --- linux-3.5.0.orig/sound/pci/hda/patch_analog.c +++ linux-3.5.0/sound/pci/hda/patch_analog.c @@ -545,6 +545,7 @@ if (spec->multiout.dig_out_nid) { info++; codec->num_pcms++; + codec->spdif_status_reset = 1; info->name = "AD198x Digital"; info->pcm_type = HDA_PCM_TYPE_SPDIF; info->stream[SNDRV_PCM_STREAM_PLAYBACK] = ad198x_pcm_digital_playback; --- linux-3.5.0.orig/sound/pci/hda/hda_jack.h +++ linux-3.5.0/sound/pci/hda/hda_jack.h @@ -23,6 +23,7 @@ unsigned int pin_sense; /* cached pin-sense value */ unsigned int jack_detect:1; /* capable of jack-detection? */ unsigned int jack_dirty:1; /* needs to update? */ + unsigned int phantom_jack:1; /* a fixed, always present port? */ struct snd_kcontrol *kctl; /* assigned kctl for jack-detection */ #ifdef CONFIG_SND_HDA_INPUT_JACK int type; --- linux-3.5.0.orig/sound/pci/hda/hda_proc.c +++ linux-3.5.0/sound/pci/hda/hda_proc.c @@ -412,7 +412,7 @@ if (digi1 & AC_DIG1_EMPHASIS) snd_iprintf(buffer, " Preemphasis"); if (digi1 & AC_DIG1_COPYRIGHT) - snd_iprintf(buffer, " Copyright"); + snd_iprintf(buffer, " Non-Copyright"); if (digi1 & AC_DIG1_NONAUDIO) snd_iprintf(buffer, " Non-Audio"); if (digi1 & AC_DIG1_PROFESSIONAL) --- linux-3.5.0.orig/sound/pci/ice1712/ice1712.c +++ linux-3.5.0/sound/pci/ice1712/ice1712.c @@ -2595,6 +2595,8 @@ snd_ice1712_proc_init(ice); synchronize_irq(pci->irq); + card->private_data = ice; + err = pci_request_regions(pci, "ICE1712"); if (err < 0) { kfree(ice); --- linux-3.5.0.orig/sound/pci/ice1712/prodigy_hifi.c +++ linux-3.5.0/sound/pci/ice1712/prodigy_hifi.c @@ -297,6 +297,7 @@ } static const DECLARE_TLV_DB_SCALE(db_scale_wm_dac, -12700, 100, 1); +static const DECLARE_TLV_DB_LINEAR(ak4396_db_scale, TLV_DB_GAIN_MUTE, 0); static struct snd_kcontrol_new prodigy_hd2_controls[] __devinitdata = { { @@ -307,7 +308,7 @@ .info = ak4396_dac_vol_info, .get = ak4396_dac_vol_get, .put = ak4396_dac_vol_put, - .tlv = { .p = db_scale_wm_dac }, + .tlv = { .p = ak4396_db_scale }, }, }; --- linux-3.5.0.orig/sound/arm/pxa2xx-ac97-lib.c +++ linux-3.5.0/sound/arm/pxa2xx-ac97-lib.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -148,6 +149,8 @@ static inline void pxa_ac97_cold_pxa27x(void) { + unsigned int timeout; + GCR &= GCR_COLD_RST; /* clear everything but nCRST */ GCR &= ~GCR_COLD_RST; /* then assert nCRST */ @@ -157,8 +160,10 @@ clk_enable(ac97conf_clk); udelay(5); clk_disable(ac97conf_clk); - GCR = GCR_COLD_RST; - udelay(50); + GCR = GCR_COLD_RST | GCR_WARM_RST; + timeout = 100; /* wait for the codec-ready bit to be set */ + while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--) + mdelay(1); } #endif @@ -340,8 +345,21 @@ } if (cpu_is_pxa27x()) { - /* Use GPIO 113 as AC97 Reset on Bulverde */ + /* + * This gpio is needed for a work-around to a bug in the ac97 + * controller during warm reset. The direction and level is set + * here so that it is an output driven high when switching from + * AC97_nRESET alt function to generic gpio. + */ + ret = gpio_request_one(reset_gpio, GPIOF_OUT_INIT_HIGH, + "pxa27x ac97 reset"); + if (ret < 0) { + pr_err("%s: gpio_request_one() failed: %d\n", + __func__, ret); + goto err_conf; + } pxa27x_assert_ac97reset(reset_gpio, 0); + ac97conf_clk = clk_get(&dev->dev, "AC97CONFCLK"); if (IS_ERR(ac97conf_clk)) { ret = PTR_ERR(ac97conf_clk); @@ -384,6 +402,8 @@ void pxa2xx_ac97_hw_remove(struct platform_device *dev) { + if (cpu_is_pxa27x()) + gpio_free(reset_gpio); GCR |= GCR_ACLINK_OFF; free_irq(IRQ_AC97, NULL); if (ac97conf_clk) { --- linux-3.5.0.orig/block/blk-exec.c +++ linux-3.5.0/block/blk-exec.c @@ -49,8 +49,16 @@ rq_end_io_fn *done) { int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK; + bool is_pm_resume; WARN_ON(irqs_disabled()); + + /* + * need to check this before __blk_run_queue(), because rq can + * be freed before that returns. + */ + is_pm_resume = rq->cmd_type == REQ_TYPE_PM_RESUME; + spin_lock_irq(q->queue_lock); if (unlikely(blk_queue_dead(q))) { @@ -66,7 +74,7 @@ __elv_add_request(q, rq, where); __blk_run_queue(q); /* the queue is stopped so it won't be run */ - if (rq->cmd_type == REQ_TYPE_PM_RESUME) + if (is_pm_resume) q->request_fn(q); spin_unlock_irq(q->queue_lock); } --- linux-3.5.0.orig/block/blk-ioc.c +++ linux-3.5.0/block/blk-ioc.c @@ -244,6 +244,7 @@ /* initialize */ atomic_long_set(&ioc->refcount, 1); + atomic_set(&ioc->nr_tasks, 1); atomic_set(&ioc->active_ref, 1); spin_lock_init(&ioc->lock); INIT_RADIX_TREE(&ioc->icq_tree, GFP_ATOMIC | __GFP_HIGH); --- linux-3.5.0.orig/block/blk-core.c +++ linux-3.5.0/block/blk-core.c @@ -598,8 +598,8 @@ /* * A queue starts its life with bypass turned on to avoid * unnecessary bypass on/off overhead and nasty surprises during - * init. The initial bypass will be finished at the end of - * blk_init_allocated_queue(). + * init. The initial bypass will be finished when the queue is + * registered by blk_register_queue(). */ q->bypass_depth = 1; __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags); @@ -686,7 +686,7 @@ q->request_fn = rfn; q->prep_rq_fn = NULL; q->unprep_rq_fn = NULL; - q->queue_flags = QUEUE_FLAG_DEFAULT; + q->queue_flags |= QUEUE_FLAG_DEFAULT; /* Override internal queue lock with supplied lock pointer */ if (lock) @@ -702,11 +702,6 @@ /* init elevator */ if (elevator_init(q, NULL)) return NULL; - - blk_queue_congestion_threshold(q); - - /* all done, end the initial bypass */ - blk_queue_bypass_end(q); return q; } EXPORT_SYMBOL(blk_init_allocated_queue); --- linux-3.5.0.orig/block/genhd.c +++ linux-3.5.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. @@ -420,17 +420,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; } @@ -644,7 +645,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; @@ -662,6 +662,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-3.5.0.orig/block/blk-sysfs.c +++ linux-3.5.0/block/blk-sysfs.c @@ -201,6 +201,8 @@ unsigned long val; \ ssize_t ret; \ ret = queue_var_store(&val, page, count); \ + if (ret < 0) \ + return ret; \ if (neg) \ val = !val; \ \ @@ -523,6 +525,12 @@ if (WARN_ON(!q)) return -ENXIO; + /* + * Initialization must be complete by now. Finish the initial + * bypass from queue allocation. + */ + blk_queue_bypass_end(q); + ret = blk_trace_init_sysfs(dev); if (ret) return ret; --- linux-3.5.0.orig/block/scsi_ioctl.c +++ linux-3.5.0/block/scsi_ioctl.c @@ -27,6 +27,9 @@ #include #include #include +#include +#include +#include #include #include @@ -710,8 +713,17 @@ case SG_GET_RESERVED_SIZE: case SG_SET_RESERVED_SIZE: case SG_EMULATED_HOST: + case BLKFLSBUF: + case BLKROSET: return 0; case CDROM_GET_CAPABILITY: + case CDROM_DRIVE_STATUS: + case FDGETPRM: + case RAID_VERSION: + case MTIOCGET: +#ifdef CONFIG_COMPAT + case 0x801c6d02: /* MTIOCGET32 */ +#endif /* Keep this until we remove the printk below. udev sends it * and we do not want to spam dmesg about it. CD-ROMs do * not have partitions, so we get here only for disks. --- linux-3.5.0.orig/block/partition-generic.c +++ linux-3.5.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); } --- linux-3.5.0.orig/drivers/misc/hpilo.c +++ linux-3.5.0/drivers/misc/hpilo.c @@ -735,7 +735,14 @@ free_irq(pdev->irq, ilo_hw); ilo_unmap_device(pdev, ilo_hw); pci_release_regions(pdev); - pci_disable_device(pdev); + /* + * pci_disable_device(pdev) used to be here. But this PCI device has + * two functions with interrupt lines connected to a single pin. The + * other one is a USB host controller. So when we disable the PIN here + * e.g. by rmmod hpilo, the controller stops working. It is because + * the interrupt link is disabled in ACPI since it is not refcounted + * yet. See acpi_pci_link_free_irq called from acpi_pci_irq_disable. + */ kfree(ilo_hw); ilo_hwdev[(minor / MAX_CCB)] = 0; } @@ -820,7 +827,7 @@ free_regions: pci_release_regions(pdev); disable: - pci_disable_device(pdev); +/* pci_disable_device(pdev); see comment in ilo_remove */ free: kfree(ilo_hw); out: --- linux-3.5.0.orig/drivers/misc/mei/mei_dev.h +++ linux-3.5.0/drivers/misc/mei/mei_dev.h @@ -167,7 +167,10 @@ struct mei_cl_cb mei_cb; }; -/* MEI private device struct */ +/** + * struct mei_deive - MEI private device struct + * @hbuf_depth - depth of host(write) buffer + */ struct mei_device { struct pci_dev *pdev; /* pointer to pci device struct */ /* @@ -205,6 +208,7 @@ */ u32 host_hw_state; u32 me_hw_state; + u8 hbuf_depth; /* * waiting queue for receive message from FW */ @@ -237,15 +241,14 @@ bool mei_host_buffer_is_empty; struct mei_cl wd_cl; + bool wd_interface_reg; bool wd_pending; bool wd_stopped; bool wd_bypass; /* if false, don't refresh watchdog ME client */ u16 wd_timeout; /* seconds ((wd_data[1] << 8) + wd_data[0]) */ - u16 wd_due_counter; unsigned char wd_data[MEI_START_WD_DATA_SIZE]; - struct file *iamthif_file_object; struct mei_cl iamthif_cl; struct mei_cl_cb *iamthif_current_cb; @@ -259,8 +262,6 @@ bool iamthif_flow_control_pending; bool iamthif_ioctl; bool iamthif_canceled; - - bool wd_interface_reg; }; @@ -361,7 +362,8 @@ * * returns register value (u32) */ -static inline u32 mei_reg_read(struct mei_device *dev, unsigned long offset) +static inline u32 mei_reg_read(const struct mei_device *dev, + unsigned long offset) { return ioread32(dev->mem_addr + offset); } @@ -373,8 +375,8 @@ * @offset: offset from which to write the data * @value: register value to write (u32) */ -static inline void mei_reg_write(struct mei_device *dev, - unsigned long offset, u32 value) +static inline void mei_reg_write(const struct mei_device *dev, + unsigned long offset, u32 value) { iowrite32(value, dev->mem_addr + offset); } @@ -386,7 +388,7 @@ * * returns the byte read. */ -static inline u32 mei_hcsr_read(struct mei_device *dev) +static inline u32 mei_hcsr_read(const struct mei_device *dev) { return mei_reg_read(dev, H_CSR); } @@ -398,7 +400,7 @@ * * returns ME_CSR_HA register value (u32) */ -static inline u32 mei_mecsr_read(struct mei_device *dev) +static inline u32 mei_mecsr_read(const struct mei_device *dev) { return mei_reg_read(dev, ME_CSR_HA); } @@ -410,7 +412,7 @@ * * returns ME_CB_RW register value (u32) */ -static inline u32 mei_mecbrw_read(struct mei_device *dev) +static inline u32 mei_mecbrw_read(const struct mei_device *dev) { return mei_reg_read(dev, ME_CB_RW); } --- linux-3.5.0.orig/drivers/misc/mei/wd.c +++ linux-3.5.0/drivers/misc/mei/wd.c @@ -53,11 +53,12 @@ } /** - * host_init_wd - mei initialization wd. + * mei_wd_host_init - connect to the watchdog client * * @dev: the device structure * returns -ENENT if wd client cannot be found * -EIO if write has failed + * 0 on success */ int mei_wd_host_init(struct mei_device *dev) { @@ -137,7 +138,6 @@ return 0; dev->wd_timeout = 0; - dev->wd_due_counter = 0; memcpy(dev->wd_data, mei_stop_wd_params, MEI_WD_PARAMS_SIZE); dev->stop = true; @@ -357,8 +357,6 @@ { dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n", dev->wd_timeout); - dev->wd_due_counter = !!dev->wd_timeout; - if (watchdog_register_device(&amt_wd_dev)) { dev_err(&dev->pdev->dev, "wd: unable to register watchdog device.\n"); --- linux-3.5.0.orig/drivers/misc/mei/interrupt.c +++ linux-3.5.0/drivers/misc/mei/interrupt.c @@ -267,8 +267,7 @@ + sizeof(struct hbm_flow_control))) { return -EMSGSIZE; } - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_flow_control) + 3) / 4; + *slots -= mei_data2slots(sizeof(struct hbm_flow_control)); if (mei_send_flow_control(dev, &dev->iamthif_cl)) { dev_dbg(&dev->pdev->dev, "iamthif flow control failed\n"); return -EIO; @@ -280,7 +279,7 @@ dev->iamthif_msg_buf_index = 0; dev->iamthif_msg_buf_size = 0; dev->iamthif_stall_timer = IAMTHIF_STALL_TIMER; - dev->mei_host_buffer_is_empty = mei_host_buffer_is_empty(dev); + dev->mei_host_buffer_is_empty = mei_hbuf_is_empty(dev); return 0; } @@ -300,28 +299,25 @@ struct mei_cl *cl, struct mei_io_list *cmpl_list) { - if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_disconnect_request))) { - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_disconnect_request) + 3) / 4; + if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) + + sizeof(struct hbm_client_disconnect_request))) + return -EBADMSG; - if (mei_disconnect(dev, cl)) { - cl->status = 0; - cb_pos->information = 0; - list_move_tail(&cb_pos->cb_list, - &cmpl_list->mei_cb.cb_list); - return -EMSGSIZE; - } else { - cl->state = MEI_FILE_DISCONNECTING; - cl->status = 0; - cb_pos->information = 0; - list_move_tail(&cb_pos->cb_list, - &dev->ctrl_rd_list.mei_cb.cb_list); - cl->timer_count = MEI_CONNECT_TIMEOUT; - } + *slots -= mei_data2slots(sizeof(struct hbm_client_disconnect_request)); + + if (mei_disconnect(dev, cl)) { + cl->status = 0; + cb_pos->information = 0; + list_move_tail(&cb_pos->cb_list, + &cmpl_list->mei_cb.cb_list); + return -EMSGSIZE; } else { - /* return the cancel routine */ - return -EBADMSG; + cl->state = MEI_FILE_DISCONNECTING; + cl->status = 0; + cb_pos->information = 0; + list_move_tail(&cb_pos->cb_list, + &dev->ctrl_rd_list.mei_cb.cb_list); + cl->timer_count = MEI_CONNECT_TIMEOUT; } return 0; @@ -575,10 +571,9 @@ disconnect_req->me_addr); cl_pos->state = MEI_FILE_DISCONNECTED; cl_pos->timer_count = 0; - if (cl_pos == &dev->wd_cl) { - dev->wd_due_counter = 0; + if (cl_pos == &dev->wd_cl) dev->wd_pending = false; - } else if (cl_pos == &dev->iamthif_cl) + else if (cl_pos == &dev->iamthif_cl) dev->iamthif_timer = 0; /* prepare disconnect response */ @@ -842,8 +837,8 @@ return -EBADMSG; } - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_flow_control) + 3) / 4; + *slots -= mei_data2slots(sizeof(struct hbm_flow_control)); + if (mei_send_flow_control(dev, cl)) { cl->status = -ENODEV; cb_pos->information = 0; @@ -872,27 +867,25 @@ struct mei_cl *cl, struct mei_io_list *cmpl_list) { - if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) + + if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) + sizeof(struct hbm_client_connect_request))) { - cl->state = MEI_FILE_CONNECTING; - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_connect_request) + 3) / 4; - if (mei_connect(dev, cl)) { - cl->status = -ENODEV; - cb_pos->information = 0; - list_del(&cb_pos->cb_list); - return -ENODEV; - } else { - list_move_tail(&cb_pos->cb_list, - &dev->ctrl_rd_list.mei_cb.cb_list); - cl->timer_count = MEI_CONNECT_TIMEOUT; - } - } else { /* return the cancel routine */ list_del(&cb_pos->cb_list); return -EBADMSG; } + cl->state = MEI_FILE_CONNECTING; + *slots -= mei_data2slots(sizeof(struct hbm_client_connect_request)); + if (mei_connect(dev, cl)) { + cl->status = -ENODEV; + cb_pos->information = 0; + list_del(&cb_pos->cb_list); + return -ENODEV; + } else { + list_move_tail(&cb_pos->cb_list, + &dev->ctrl_rd_list.mei_cb.cb_list); + cl->timer_count = MEI_CONNECT_TIMEOUT; + } return 0; } @@ -932,8 +925,7 @@ cb_pos->information); dev_dbg(&dev->pdev->dev, "mei_hdr->length =%d\n", mei_hdr->length); - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (unsigned char *) (cb_pos->request_buffer.data + @@ -951,7 +943,7 @@ list_move_tail(&cb_pos->cb_list, &dev->write_waiting_list.mei_cb.cb_list); } - } else if (*slots == ((dev->host_hw_state & H_CBD) >> 24)) { + } else if (*slots == dev->hbuf_depth) { /* buffer is still empty */ mei_hdr = (struct mei_msg_hdr *) &dev->wr_msg_buf[0]; mei_hdr->host_addr = cl->host_client_id; @@ -960,9 +952,7 @@ (*slots * sizeof(u32)) - sizeof(struct mei_msg_hdr); mei_hdr->msg_complete = 0; mei_hdr->reserved = 0; - - (*slots) -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (unsigned char *) (cb_pos->request_buffer.data + @@ -1021,8 +1011,7 @@ mei_hdr->msg_complete = 1; mei_hdr->reserved = 0; - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (dev->iamthif_msg_buf + @@ -1046,8 +1035,8 @@ &dev->write_waiting_list.mei_cb.cb_list); } - } else if (*slots == ((dev->host_hw_state & H_CBD) >> 24)) { - /* buffer is still empty */ + } else if (*slots == dev->hbuf_depth) { + /* buffer is still empty */ mei_hdr = (struct mei_msg_hdr *) &dev->wr_msg_buf[0]; mei_hdr->host_addr = cl->host_client_id; mei_hdr->me_addr = cl->me_client_id; @@ -1056,8 +1045,7 @@ mei_hdr->msg_complete = 0; mei_hdr->reserved = 0; - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (dev->iamthif_msg_buf + @@ -1199,17 +1187,19 @@ struct mei_io_list *list; int ret; - if (!mei_host_buffer_is_empty(dev)) { + if (!mei_hbuf_is_empty(dev)) { dev_dbg(&dev->pdev->dev, "host buffer is not empty.\n"); return 0; } - *slots = mei_count_empty_write_slots(dev); + *slots = mei_hbuf_empty_slots(dev); + if (*slots <= 0) + return -EMSGSIZE; + /* complete all waiting for write CB */ dev_dbg(&dev->pdev->dev, "complete all waiting for write cb.\n"); list = &dev->write_waiting_list; - list_for_each_entry_safe(pos, next, - &list->mei_cb.cb_list, cb_list) { + list_for_each_entry_safe(pos, next, &list->mei_cb.cb_list, cb_list) { cl = (struct mei_cl *)pos->file_private; if (cl == NULL) continue; @@ -1219,17 +1209,15 @@ if (MEI_WRITING == cl->writing_state && (pos->major_file_operations == MEI_WRITE) && (cl != &dev->iamthif_cl)) { - dev_dbg(&dev->pdev->dev, - "MEI WRITE COMPLETE\n"); + dev_dbg(&dev->pdev->dev, "MEI WRITE COMPLETE\n"); cl->writing_state = MEI_WRITE_COMPLETE; list_add_tail(&pos->cb_list, - &cmpl_list->mei_cb.cb_list); + &cmpl_list->mei_cb.cb_list); } if (cl == &dev->iamthif_cl) { dev_dbg(&dev->pdev->dev, "check iamthif flow control.\n"); if (dev->iamthif_flow_control_pending) { - ret = _mei_irq_thread_iamthif_read( - dev, slots); + ret = _mei_irq_thread_iamthif_read(dev, slots); if (ret) return ret; } @@ -1254,25 +1242,18 @@ } if (dev->mei_state == MEI_ENABLED) { if (dev->wd_pending && - mei_flow_ctrl_creds(dev, &dev->wd_cl) > 0) { + mei_flow_ctrl_creds(dev, &dev->wd_cl) > 0) { if (mei_wd_send(dev)) dev_dbg(&dev->pdev->dev, "wd send failed.\n"); - else - if (mei_flow_ctrl_reduce(dev, &dev->wd_cl)) - return -ENODEV; + else if (mei_flow_ctrl_reduce(dev, &dev->wd_cl)) + return -ENODEV; dev->wd_pending = false; - if (dev->wd_timeout) { - *slots -= (sizeof(struct mei_msg_hdr) + - MEI_START_WD_DATA_SIZE + 3) / 4; - dev->wd_due_counter = 2; - } else { - *slots -= (sizeof(struct mei_msg_hdr) + - MEI_WD_PARAMS_SIZE + 3) / 4; - dev->wd_due_counter = 0; - } - + if (dev->wd_timeout) + *slots -= mei_data2slots(MEI_START_WD_DATA_SIZE); + else + *slots -= mei_data2slots(MEI_WD_PARAMS_SIZE); } } if (dev->stop) @@ -1320,42 +1301,34 @@ /* complete write list CB */ dev_dbg(&dev->pdev->dev, "complete write list cb.\n"); list_for_each_entry_safe(pos, next, - &dev->write_list.mei_cb.cb_list, cb_list) { + &dev->write_list.mei_cb.cb_list, cb_list) { cl = (struct mei_cl *)pos->file_private; if (cl == NULL) continue; if (cl != &dev->iamthif_cl) { - if (!mei_flow_ctrl_creds(dev, cl)) { + if (mei_flow_ctrl_creds(dev, cl) <= 0) { dev_dbg(&dev->pdev->dev, - "No flow control" - " credentials for client" - " %d, not sending.\n", - cl->host_client_id); + "No flow control credentials for client %d, not sending.\n", + cl->host_client_id); continue; } - ret = _mei_irq_thread_cmpl(dev, slots, - pos, - cl, cmpl_list); + ret = _mei_irq_thread_cmpl(dev, slots, pos, + cl, cmpl_list); if (ret) return ret; } else if (cl == &dev->iamthif_cl) { /* IAMTHIF IOCTL */ dev_dbg(&dev->pdev->dev, "complete amthi write cb.\n"); - if (!mei_flow_ctrl_creds(dev, cl)) { + if (mei_flow_ctrl_creds(dev, cl) <= 0) { dev_dbg(&dev->pdev->dev, - "No flow control" - " credentials for amthi" - " client %d.\n", - cl->host_client_id); + "No flow control credentials for amthi client %d.\n", + cl->host_client_id); continue; } - ret = _mei_irq_thread_cmpl_iamthif(dev, - slots, - pos, - cl, - cmpl_list); + ret = _mei_irq_thread_cmpl_iamthif(dev, slots, pos, + cl, cmpl_list); if (ret) return ret; @@ -1555,7 +1528,7 @@ end: dev_dbg(&dev->pdev->dev, "end of bottom half function.\n"); dev->host_hw_state = mei_hcsr_read(dev); - dev->mei_host_buffer_is_empty = mei_host_buffer_is_empty(dev); + dev->mei_host_buffer_is_empty = mei_hbuf_is_empty(dev); bus_message_received = false; if (dev->recvd_msg && waitqueue_active(&dev->wait_recvd_msg)) { --- linux-3.5.0.orig/drivers/misc/mei/main.c +++ linux-3.5.0/drivers/misc/mei/main.c @@ -714,13 +714,8 @@ if (rets && dev->mei_host_buffer_is_empty) { rets = 0; dev->mei_host_buffer_is_empty = false; - if (length > ((((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - sizeof(struct mei_msg_hdr))) { - - mei_hdr.length = - (((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - - sizeof(struct mei_msg_hdr); + if (length > mei_hbuf_max_data(dev)) { + mei_hdr.length = mei_hbuf_max_data(dev); mei_hdr.msg_complete = 0; } else { mei_hdr.length = length; @@ -930,6 +925,27 @@ }; /** + * mei_quirk_probe - probe for devices that doesn't valid ME interface + * @pdev: PCI device structure + * @ent: entry into pci_device_table + * + * returns true if ME Interface is valid, false otherwise + */ +static bool __devinit mei_quirk_probe(struct pci_dev *pdev, + const struct pci_device_id *ent) +{ + u32 reg; + if (ent->device == MEI_DEV_ID_PBG_1) { + pci_read_config_dword(pdev, 0x48, ®); + /* make sure that bit 9 is up and bit 10 is down */ + if ((reg & 0x600) == 0x200) { + dev_info(&pdev->dev, "Device doesn't have valid ME Interface\n"); + return false; + } + } + return true; +} +/** * mei_probe - Device Initialization Routine * * @pdev: PCI device structure @@ -944,6 +960,12 @@ int err; mutex_lock(&mei_mutex); + + if (!mei_quirk_probe(pdev, ent)) { + err = -ENODEV; + goto end; + } + if (mei_device) { err = -EEXIST; goto end; @@ -1187,44 +1209,7 @@ .driver.pm = MEI_PM_OPS, }; -/** - * mei_init_module - Driver Registration Routine - * - * mei_init_module is the first routine called when the driver is - * loaded. All it does is to register with the PCI subsystem. - * - * returns 0 on success, <0 on failure. - */ -static int __init mei_init_module(void) -{ - int ret; - - pr_debug("loading.\n"); - /* init pci module */ - ret = pci_register_driver(&mei_driver); - if (ret < 0) - pr_err("error registering driver.\n"); - - return ret; -} - -module_init(mei_init_module); - -/** - * mei_exit_module - Driver Exit Cleanup Routine - * - * mei_exit_module is called just before the driver is removed - * from memory. - */ -static void __exit mei_exit_module(void) -{ - pci_unregister_driver(&mei_driver); - - pr_debug("unloaded successfully.\n"); -} - -module_exit(mei_exit_module); - +module_pci_driver(mei_driver); MODULE_AUTHOR("Intel Corporation"); MODULE_DESCRIPTION("Intel(R) Management Engine Interface"); --- linux-3.5.0.orig/drivers/misc/mei/interface.h +++ linux-3.5.0/drivers/misc/mei/interface.h @@ -41,14 +41,28 @@ unsigned char *write_buffer, unsigned long write_length); -int mei_host_buffer_is_empty(struct mei_device *dev); +bool mei_hbuf_is_empty(struct mei_device *dev); + +int mei_hbuf_empty_slots(struct mei_device *dev); + +static inline size_t mei_hbuf_max_data(const struct mei_device *dev) +{ + return dev->hbuf_depth * sizeof(u32) - sizeof(struct mei_msg_hdr); +} + +/* get slots (dwords) from a message length + header (bytes) */ +static inline unsigned char mei_data2slots(size_t length) +{ + return DIV_ROUND_UP(sizeof(struct mei_msg_hdr) + length, 4); +} int mei_count_full_read_slots(struct mei_device *dev); -int mei_count_empty_write_slots(struct mei_device *dev); int mei_flow_ctrl_creds(struct mei_device *dev, struct mei_cl *cl); + + int mei_wd_send(struct mei_device *dev); int mei_wd_stop(struct mei_device *dev, bool preserve); int mei_wd_host_init(struct mei_device *dev); --- linux-3.5.0.orig/drivers/misc/mei/init.c +++ linux-3.5.0/drivers/misc/mei/init.c @@ -162,6 +162,9 @@ if ((dev->host_hw_state & H_IS) == H_IS) mei_reg_write(dev, H_CSR, dev->host_hw_state); + /* Doesn't change in runtime */ + dev->hbuf_depth = (dev->host_hw_state & H_CBD) >> 24; + dev->recvd_msg = false; dev_dbg(&dev->pdev->dev, "reset in start the mei device.\n"); @@ -303,7 +306,6 @@ dev->iamthif_cl.host_client_id); mei_reset_iamthif_params(dev); - dev->wd_due_counter = 0; dev->extra_write_index = 0; } --- linux-3.5.0.orig/drivers/misc/mei/interface.c +++ linux-3.5.0/drivers/misc/mei/interface.c @@ -58,16 +58,18 @@ } /** - * _host_get_filled_slots - gets number of device filled buffer slots + * mei_hbuf_filled_slots - gets number of device filled buffer slots * * @device: the device structure * * returns number of filled slots */ -static unsigned char _host_get_filled_slots(const struct mei_device *dev) +static unsigned char mei_hbuf_filled_slots(struct mei_device *dev) { char read_ptr, write_ptr; + dev->host_hw_state = mei_hcsr_read(dev); + read_ptr = (char) ((dev->host_hw_state & H_CBRP) >> 8); write_ptr = (char) ((dev->host_hw_state & H_CBWP) >> 16); @@ -75,43 +77,33 @@ } /** - * mei_host_buffer_is_empty - checks if host buffer is empty. + * mei_hbuf_is_empty - checks if host buffer is empty. * * @dev: the device structure * - * returns 1 if empty, 0 - otherwise. + * returns true if empty, false - otherwise. */ -int mei_host_buffer_is_empty(struct mei_device *dev) +bool mei_hbuf_is_empty(struct mei_device *dev) { - unsigned char filled_slots; - - dev->host_hw_state = mei_hcsr_read(dev); - filled_slots = _host_get_filled_slots(dev); - - if (filled_slots == 0) - return 1; - - return 0; + return mei_hbuf_filled_slots(dev) == 0; } /** - * mei_count_empty_write_slots - counts write empty slots. + * mei_hbuf_empty_slots - counts write empty slots. * * @dev: the device structure * * returns -1(ESLOTS_OVERFLOW) if overflow, otherwise empty slots count */ -int mei_count_empty_write_slots(struct mei_device *dev) +int mei_hbuf_empty_slots(struct mei_device *dev) { - unsigned char buffer_depth, filled_slots, empty_slots; + unsigned char filled_slots, empty_slots; - dev->host_hw_state = mei_hcsr_read(dev); - buffer_depth = (unsigned char) ((dev->host_hw_state & H_CBD) >> 24); - filled_slots = _host_get_filled_slots(dev); - empty_slots = buffer_depth - filled_slots; + filled_slots = mei_hbuf_filled_slots(dev); + empty_slots = dev->hbuf_depth - filled_slots; /* check for overflow */ - if (filled_slots > buffer_depth) + if (filled_slots > dev->hbuf_depth) return -EOVERFLOW; return empty_slots; @@ -127,52 +119,39 @@ * * This function returns -EIO if write has failed */ -int mei_write_message(struct mei_device *dev, - struct mei_msg_hdr *header, - unsigned char *write_buffer, - unsigned long write_length) +int mei_write_message(struct mei_device *dev, struct mei_msg_hdr *header, + unsigned char *buf, unsigned long length) { - u32 temp_msg = 0; - unsigned long bytes_written = 0; - unsigned char buffer_depth, filled_slots, empty_slots; - unsigned long dw_to_write; + unsigned long rem, dw_cnt; + u32 *reg_buf = (u32 *)buf; + int i; + int empty_slots; - dev->host_hw_state = mei_hcsr_read(dev); - - dev_dbg(&dev->pdev->dev, - "host_hw_state = 0x%08x.\n", - dev->host_hw_state); dev_dbg(&dev->pdev->dev, "mei_write_message header=%08x.\n", *((u32 *) header)); - buffer_depth = (unsigned char) ((dev->host_hw_state & H_CBD) >> 24); - filled_slots = _host_get_filled_slots(dev); - empty_slots = buffer_depth - filled_slots; - dev_dbg(&dev->pdev->dev, - "filled = %hu, empty = %hu.\n", - filled_slots, empty_slots); + empty_slots = mei_hbuf_empty_slots(dev); + dev_dbg(&dev->pdev->dev, "empty slots = %hu.\n", empty_slots); - dw_to_write = ((write_length + 3) / 4); - - if (dw_to_write > empty_slots) + dw_cnt = mei_data2slots(length); + if (empty_slots < 0 || dw_cnt > empty_slots) return -EIO; mei_reg_write(dev, H_CB_WW, *((u32 *) header)); - while (write_length >= 4) { - mei_reg_write(dev, H_CB_WW, - *(u32 *) (write_buffer + bytes_written)); - bytes_written += 4; - write_length -= 4; - } + for (i = 0; i < length / 4; i++) + mei_reg_write(dev, H_CB_WW, reg_buf[i]); - if (write_length > 0) { - memcpy(&temp_msg, &write_buffer[bytes_written], write_length); - mei_reg_write(dev, H_CB_WW, temp_msg); + rem = length & 0x3; + if (rem > 0) { + u32 reg = 0; + memcpy(®, &buf[length - rem], rem); + mei_reg_write(dev, H_CB_WW, reg); } + dev->host_hw_state = mei_hcsr_read(dev); dev->host_hw_state |= H_IG; mei_hcsr_set(dev); dev->me_hw_state = mei_mecsr_read(dev); --- linux-3.5.0.orig/drivers/misc/mei/iorw.c +++ linux-3.5.0/drivers/misc/mei/iorw.c @@ -481,12 +481,8 @@ if (ret && dev->mei_host_buffer_is_empty) { ret = 0; dev->mei_host_buffer_is_empty = false; - if (cb->request_buffer.size > - (((dev->host_hw_state & H_CBD) >> 24) * sizeof(u32)) - -sizeof(struct mei_msg_hdr)) { - mei_hdr.length = - (((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - sizeof(struct mei_msg_hdr); + if (cb->request_buffer.size > mei_hbuf_max_data(dev)) { + mei_hdr.length = mei_hbuf_max_data(dev); mei_hdr.msg_complete = 0; } else { mei_hdr.length = cb->request_buffer.size; --- linux-3.5.0.orig/drivers/misc/sgi-xp/xpc_uv.c +++ linux-3.5.0/drivers/misc/sgi-xp/xpc_uv.c @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include #include @@ -59,6 +61,8 @@ XPC_NOTIFY_MSG_SIZE_UV) #define XPC_NOTIFY_IRQ_NAME "xpc_notify" +static int xpc_mq_node = -1; + static struct xpc_gru_mq_uv *xpc_activate_mq_uv; static struct xpc_gru_mq_uv *xpc_notify_mq_uv; @@ -109,11 +113,8 @@ #if defined CONFIG_X86_64 mq->irq = uv_setup_irq(irq_name, cpu, mq->mmr_blade, mq->mmr_offset, UV_AFFINITY_CPU); - if (mq->irq < 0) { - dev_err(xpc_part, "uv_setup_irq() returned error=%d\n", - -mq->irq); + if (mq->irq < 0) return mq->irq; - } mq->mmr_value = uv_read_global_mmr64(mmr_pnode, mq->mmr_offset); @@ -238,8 +239,9 @@ mq->mmr_blade = uv_cpu_to_blade_id(cpu); nid = cpu_to_node(cpu); - page = alloc_pages_exact_node(nid, GFP_KERNEL | __GFP_ZERO | GFP_THISNODE, - pg_order); + page = alloc_pages_exact_node(nid, + GFP_KERNEL | __GFP_ZERO | GFP_THISNODE, + pg_order); if (page == NULL) { dev_err(xpc_part, "xpc_create_gru_mq_uv() failed to alloc %d " "bytes of memory on nid=%d for GRU mq\n", mq_size, nid); @@ -1731,9 +1733,50 @@ .notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_uv, }; +static int +xpc_init_mq_node(int nid) +{ + int cpu; + + get_online_cpus(); + + for_each_cpu(cpu, cpumask_of_node(nid)) { + xpc_activate_mq_uv = + xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, nid, + XPC_ACTIVATE_IRQ_NAME, + xpc_handle_activate_IRQ_uv); + if (!IS_ERR(xpc_activate_mq_uv)) + break; + } + if (IS_ERR(xpc_activate_mq_uv)) { + put_online_cpus(); + return PTR_ERR(xpc_activate_mq_uv); + } + + for_each_cpu(cpu, cpumask_of_node(nid)) { + xpc_notify_mq_uv = + xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, nid, + XPC_NOTIFY_IRQ_NAME, + xpc_handle_notify_IRQ_uv); + if (!IS_ERR(xpc_notify_mq_uv)) + break; + } + if (IS_ERR(xpc_notify_mq_uv)) { + xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); + put_online_cpus(); + return PTR_ERR(xpc_notify_mq_uv); + } + + put_online_cpus(); + return 0; +} + int xpc_init_uv(void) { + int nid; + int ret = 0; + xpc_arch_ops = xpc_arch_ops_uv; if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) { @@ -1742,21 +1785,21 @@ return -E2BIG; } - xpc_activate_mq_uv = xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, 0, - XPC_ACTIVATE_IRQ_NAME, - xpc_handle_activate_IRQ_uv); - if (IS_ERR(xpc_activate_mq_uv)) - return PTR_ERR(xpc_activate_mq_uv); + if (xpc_mq_node < 0) + for_each_online_node(nid) { + ret = xpc_init_mq_node(nid); - xpc_notify_mq_uv = xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, 0, - XPC_NOTIFY_IRQ_NAME, - xpc_handle_notify_IRQ_uv); - if (IS_ERR(xpc_notify_mq_uv)) { - xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); - return PTR_ERR(xpc_notify_mq_uv); - } + if (!ret) + break; + } + else + ret = xpc_init_mq_node(xpc_mq_node); - return 0; + if (ret < 0) + dev_err(xpc_part, "xpc_init_mq_node() returned error=%d\n", + -ret); + + return ret; } void @@ -1765,3 +1808,6 @@ xpc_destroy_gru_mq_uv(xpc_notify_mq_uv); xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); } + +module_param(xpc_mq_node, int, 0); +MODULE_PARM_DESC(xpc_mq_node, "Node number on which to allocate message queues."); --- linux-3.5.0.orig/drivers/misc/sgi-xp/xpc_main.c +++ linux-3.5.0/drivers/misc/sgi-xp/xpc_main.c @@ -53,6 +53,10 @@ #include #include "xpc.h" +#ifdef CONFIG_X86_64 +#include +#endif + /* define two XPC debug device structures to be used with dev_dbg() et al */ struct device_driver xpc_dbg_name = { @@ -1079,6 +1083,9 @@ return NOTIFY_DONE; } +/* Used to only allow one cpu to complete disconnect */ +static unsigned int xpc_die_disconnecting; + /* * Notify other partitions to deactivate from us by first disengaging from all * references to our memory. @@ -1092,6 +1099,9 @@ long keep_waiting; long wait_to_print; + if (cmpxchg(&xpc_die_disconnecting, 0, 1)) + return; + /* keep xpc_hb_checker thread from doing anything (just in case) */ xpc_exiting = 1; @@ -1159,7 +1169,7 @@ * about the lack of a heartbeat. */ static int -xpc_system_die(struct notifier_block *nb, unsigned long event, void *unused) +xpc_system_die(struct notifier_block *nb, unsigned long event, void *_die_args) { #ifdef CONFIG_IA64 /* !!! temporary kludge */ switch (event) { @@ -1191,7 +1201,27 @@ break; } #else - xpc_die_deactivate(); + struct die_args *die_args = _die_args; + + switch (event) { + case DIE_TRAP: + if (die_args->trapnr == X86_TRAP_DF) + xpc_die_deactivate(); + + if (((die_args->trapnr == X86_TRAP_MF) || + (die_args->trapnr == X86_TRAP_XF)) && + !user_mode_vm(die_args->regs)) + xpc_die_deactivate(); + + break; + case DIE_INT3: + case DIE_DEBUG: + break; + case DIE_OOPS: + case DIE_GPF: + default: + xpc_die_deactivate(); + } #endif return NOTIFY_DONE; --- linux-3.5.0.orig/drivers/cpufreq/powernow-k8.c +++ linux-3.5.0/drivers/cpufreq/powernow-k8.c @@ -35,7 +35,6 @@ #include #include #include -#include /* for current / set_cpus_allowed() */ #include #include @@ -1139,16 +1138,23 @@ return res; } -/* Driver entry point to switch to the target frequency */ -static int powernowk8_target(struct cpufreq_policy *pol, - unsigned targfreq, unsigned relation) +struct powernowk8_target_arg { + struct cpufreq_policy *pol; + unsigned targfreq; + unsigned relation; +}; + +static long powernowk8_target_fn(void *arg) { - cpumask_var_t oldmask; + struct powernowk8_target_arg *pta = arg; + struct cpufreq_policy *pol = pta->pol; + unsigned targfreq = pta->targfreq; + unsigned relation = pta->relation; struct powernow_k8_data *data = per_cpu(powernow_data, pol->cpu); u32 checkfid; u32 checkvid; unsigned int newstate; - int ret = -EIO; + int ret; if (!data) return -EINVAL; @@ -1156,29 +1162,16 @@ checkfid = data->currfid; checkvid = data->currvid; - /* only run on specific CPU from here on. */ - /* This is poor form: use a workqueue or smp_call_function_single */ - if (!alloc_cpumask_var(&oldmask, GFP_KERNEL)) - return -ENOMEM; - - cpumask_copy(oldmask, tsk_cpus_allowed(current)); - set_cpus_allowed_ptr(current, cpumask_of(pol->cpu)); - - if (smp_processor_id() != pol->cpu) { - printk(KERN_ERR PFX "limiting to cpu %u failed\n", pol->cpu); - goto err_out; - } - if (pending_bit_stuck()) { printk(KERN_ERR PFX "failing targ, change pending bit set\n"); - goto err_out; + return -EIO; } pr_debug("targ: cpu %d, %d kHz, min %d, max %d, relation %d\n", pol->cpu, targfreq, pol->min, pol->max, relation); if (query_current_values_with_pending_wait(data)) - goto err_out; + return -EIO; if (cpu_family != CPU_HW_PSTATE) { pr_debug("targ: curr fid 0x%x, vid 0x%x\n", @@ -1196,7 +1189,7 @@ if (cpufreq_frequency_table_target(pol, data->powernow_table, targfreq, relation, &newstate)) - goto err_out; + return -EIO; mutex_lock(&fidvid_mutex); @@ -1209,9 +1202,8 @@ ret = transition_frequency_fidvid(data, newstate); if (ret) { printk(KERN_ERR PFX "transition frequency failed\n"); - ret = 1; mutex_unlock(&fidvid_mutex); - goto err_out; + return 1; } mutex_unlock(&fidvid_mutex); @@ -1220,12 +1212,18 @@ data->powernow_table[newstate].index); else pol->cur = find_khz_freq_from_fid(data->currfid); - ret = 0; -err_out: - set_cpus_allowed_ptr(current, oldmask); - free_cpumask_var(oldmask); - return ret; + return 0; +} + +/* Driver entry point to switch to the target frequency */ +static int powernowk8_target(struct cpufreq_policy *pol, + unsigned targfreq, unsigned relation) +{ + struct powernowk8_target_arg pta = { .pol = pol, .targfreq = targfreq, + .relation = relation }; + + return work_on_cpu(pol->cpu, powernowk8_target_fn, &pta); } /* Driver entry point to verify the policy and range of frequencies */ --- linux-3.5.0.orig/drivers/cpufreq/cpufreq.c +++ linux-3.5.0/drivers/cpufreq/cpufreq.c @@ -1817,6 +1817,20 @@ * REGISTER / UNREGISTER CPUFREQ DRIVER * *********************************************************************/ +static char cpufreq_driver_name[CPUFREQ_NAME_LEN]; + +static int __init cpufreq_driver_setup(char *str) +{ + strlcpy(cpufreq_driver_name, str, CPUFREQ_NAME_LEN); + return 1; +} + +/* + * Set this name to only allow one specific cpu freq driver, e.g., + * cpufreq_driver=powernow-k8 + */ +__setup("cpufreq_driver=", cpufreq_driver_setup); + /** * cpufreq_register_driver - register a CPU Frequency driver * @driver_data: A struct cpufreq_driver containing the values# @@ -1839,7 +1853,13 @@ ((!driver_data->setpolicy) && (!driver_data->target))) return -EINVAL; - pr_debug("trying to register driver %s\n", driver_data->name); + pr_debug("trying to register driver %s, cpufreq_driver=%s\n", + driver_data->name, cpufreq_driver_name); + + if (cpufreq_driver_name[0]) + if (!driver_data->name || + strcmp(cpufreq_driver_name, driver_data->name)) + return -EINVAL; if (driver_data->setpolicy) driver_data->flags |= CPUFREQ_CONST_LOOPS; --- linux-3.5.0.orig/drivers/cpufreq/exynos-cpufreq.c +++ linux-3.5.0/drivers/cpufreq/exynos-cpufreq.c @@ -210,8 +210,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; @@ -275,6 +273,8 @@ goto err_vdd_arm; } + locking_frequency = exynos_getspeed(0); + register_pm_notifier(&exynos_cpufreq_nb); if (cpufreq_register_driver(&exynos_driver)) { --- linux-3.5.0.orig/drivers/cpufreq/longhaul.c +++ linux-3.5.0/drivers/cpufreq/longhaul.c @@ -77,7 +77,7 @@ static int scale_voltage; static int disable_acpi_c3; static int revid_errata; - +static int enable; /* Clock ratios multiplied by 10 */ static int mults[32]; @@ -965,6 +965,10 @@ if (!x86_match_cpu(longhaul_id)) return -ENODEV; + if (!enable) { + printk(KERN_ERR PFX "Option \"enable\" not set. Aborting.\n"); + return -ENODEV; + } #ifdef CONFIG_SMP if (num_online_cpus() > 1) { printk(KERN_ERR PFX "More than 1 CPU detected, " @@ -1021,6 +1025,10 @@ * such. */ module_param(revid_errata, int, 0644); MODULE_PARM_DESC(revid_errata, "Ignore CPU Revision ID"); +/* By default driver is disabled to prevent incompatible + * system freeze. */ +module_param(enable, int, 0644); +MODULE_PARM_DESC(enable, "Enable driver"); MODULE_AUTHOR("Dave Jones "); MODULE_DESCRIPTION("Longhaul driver for VIA Cyrix processors."); --- linux-3.5.0.orig/drivers/cpufreq/cpufreq_stats.c +++ linux-3.5.0/drivers/cpufreq/cpufreq_stats.c @@ -328,6 +328,7 @@ cpufreq_update_policy(cpu); break; case CPU_DOWN_PREPARE: + case CPU_DOWN_PREPARE_FROZEN: cpufreq_stats_free_sysfs(cpu); break; case CPU_DEAD: --- linux-3.5.0.orig/drivers/media/rc/rc-main.c +++ linux-3.5.0/drivers/media/rc/rc-main.c @@ -775,11 +775,13 @@ if (dev->driver_type == RC_DRIVER_SCANCODE) { enabled = dev->rc_map.rc_type; allowed = dev->allowed_protos; - } else { + } else if (dev->raw) { enabled = dev->raw->enabled_protocols; allowed = ir_raw_get_allowed_protocols(); + } else { + mutex_unlock(&dev->lock); + return -ENODEV; } - IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", (long long)allowed, (long long)enabled); --- linux-3.5.0.orig/drivers/media/rc/ene_ir.c +++ linux-3.5.0/drivers/media/rc/ene_ir.c @@ -1018,6 +1018,8 @@ spin_lock_init(&dev->hw_lock); + dev->hw_io = pnp_port_start(pnp_dev, 0); + pnp_set_drvdata(pnp_dev, dev); dev->pnp_dev = pnp_dev; @@ -1072,7 +1074,6 @@ /* claim the resources */ error = -EBUSY; - dev->hw_io = pnp_port_start(pnp_dev, 0); if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) { dev->hw_io = -1; dev->irq = -1; --- linux-3.5.0.orig/drivers/media/rc/ite-cir.c +++ linux-3.5.0/drivers/media/rc/ite-cir.c @@ -1473,6 +1473,7 @@ rdev = rc_allocate_device(); if (!rdev) goto failure; + itdev->rdev = rdev; ret = -ENODEV; @@ -1604,7 +1605,6 @@ if (ret) goto failure3; - itdev->rdev = rdev; ite_pr(KERN_NOTICE, "driver has been successfully loaded\n"); return 0; --- linux-3.5.0.orig/drivers/media/video/v4l2-device.c +++ linux-3.5.0/drivers/media/video/v4l2-device.c @@ -159,31 +159,21 @@ sd->v4l2_dev = v4l2_dev; if (sd->internal_ops && sd->internal_ops->registered) { err = sd->internal_ops->registered(sd); - if (err) { - module_put(sd->owner); - return err; - } + if (err) + goto error_module; } /* This just returns 0 if either of the two args is NULL */ err = v4l2_ctrl_add_handler(v4l2_dev->ctrl_handler, sd->ctrl_handler); - if (err) { - if (sd->internal_ops && sd->internal_ops->unregistered) - sd->internal_ops->unregistered(sd); - module_put(sd->owner); - return err; - } + if (err) + goto error_unregister; #if defined(CONFIG_MEDIA_CONTROLLER) /* Register the entity. */ if (v4l2_dev->mdev) { err = media_device_register_entity(v4l2_dev->mdev, entity); - if (err < 0) { - if (sd->internal_ops && sd->internal_ops->unregistered) - sd->internal_ops->unregistered(sd); - module_put(sd->owner); - return err; - } + if (err < 0) + goto error_unregister; } #endif @@ -192,6 +182,14 @@ spin_unlock(&v4l2_dev->lock); return 0; + +error_unregister: + if (sd->internal_ops && sd->internal_ops->unregistered) + sd->internal_ops->unregistered(sd); +error_module: + module_put(sd->owner); + sd->v4l2_dev = NULL; + return err; } EXPORT_SYMBOL_GPL(v4l2_device_register_subdev); --- linux-3.5.0.orig/drivers/media/video/s2255drv.c +++ linux-3.5.0/drivers/media/video/s2255drv.c @@ -2686,3 +2686,4 @@ MODULE_AUTHOR("Dean Anderson (Sensoray Company Inc.)"); MODULE_LICENSE("GPL"); MODULE_VERSION(S2255_VERSION); +MODULE_FIRMWARE(FIRMWARE_FILE_NAME); --- linux-3.5.0.orig/drivers/media/video/videobuf-dma-contig.c +++ linux-3.5.0/drivers/media/video/videobuf-dma-contig.c @@ -359,32 +359,43 @@ size = vma->vm_end - vma->vm_start; size = (size < mem->size) ? size : mem->size; - if (!mem->cached) + if (!mem->cached) { vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - - pos = (unsigned long)mem->vaddr; - - while (size > 0) { - page = virt_to_page((void *)pos); - if (NULL == page) { - dev_err(q->dev, "mmap: virt_to_page failed\n"); - __videobuf_dc_free(q->dev, mem); - goto error; - } - retval = vm_insert_page(vma, start, page); + retval = remap_pfn_range(vma, vma->vm_start, + mem->dma_handle >> PAGE_SHIFT, + size, vma->vm_page_prot); if (retval) { - dev_err(q->dev, "mmap: insert failed with error %d\n", - retval); - __videobuf_dc_free(q->dev, mem); + dev_err(q->dev, "mmap: remap failed with error %d. ", + retval); + dma_free_coherent(q->dev, mem->size, + mem->vaddr, mem->dma_handle); goto error; } - start += PAGE_SIZE; - pos += PAGE_SIZE; + } else { + pos = (unsigned long)mem->vaddr; + + while (size > 0) { + page = virt_to_page((void *)pos); + if (NULL == page) { + dev_err(q->dev, "mmap: virt_to_page failed\n"); + __videobuf_dc_free(q->dev, mem); + goto error; + } + retval = vm_insert_page(vma, start, page); + if (retval) { + dev_err(q->dev, "mmap: insert failed with error %d\n", + retval); + __videobuf_dc_free(q->dev, mem); + goto error; + } + start += PAGE_SIZE; + pos += PAGE_SIZE; - if (size > PAGE_SIZE) - size -= PAGE_SIZE; - else - size = 0; + if (size > PAGE_SIZE) + size -= PAGE_SIZE; + else + size = 0; + } } vma->vm_ops = &videobuf_vm_ops; --- linux-3.5.0.orig/drivers/media/video/s5p-fimc/fimc-lite.c +++ linux-3.5.0/drivers/media/video/s5p-fimc/fimc-lite.c @@ -487,8 +487,7 @@ struct fimc_lite *fimc = video_drvdata(file); int ret; - if (mutex_lock_interruptible(&fimc->lock)) - return -ERESTARTSYS; + mutex_lock(&fimc->lock); if (--fimc->ref_count == 0 && fimc->out_path == FIMC_IO_DMA) { clear_bit(ST_FLITE_IN_USE, &fimc->state); --- linux-3.5.0.orig/drivers/media/video/ivtv/ivtv-firmware.c +++ linux-3.5.0/drivers/media/video/ivtv/ivtv-firmware.c @@ -396,3 +396,7 @@ return res; } + +MODULE_FIRMWARE(CX2341X_FIRM_ENC_FILENAME); +MODULE_FIRMWARE(CX2341X_FIRM_DEC_FILENAME); +MODULE_FIRMWARE(IVTV_DECODE_INIT_MPEG_FILENAME); --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-av-firmware.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-av-firmware.c @@ -221,3 +221,5 @@ release_firmware(fw); return 0; } + +MODULE_FIRMWARE(FWFILE); --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-firmware.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-firmware.c @@ -376,6 +376,9 @@ cx18_write_reg(cx, 0x00000101, CX18_WMB_CLIENT14); /* AVO */ } +#define CX18_CPU_FIRMWARE "v4l-cx23418-cpu.fw" +#define CX18_APU_FIRMWARE "v4l-cx23418-apu.fw" + int cx18_firmware_init(struct cx18 *cx) { u32 fw_entry_addr; @@ -400,7 +403,7 @@ cx18_sw1_irq_enable(cx, IRQ_CPU_TO_EPU | IRQ_APU_TO_EPU); cx18_sw2_irq_enable(cx, IRQ_CPU_TO_EPU_ACK | IRQ_APU_TO_EPU_ACK); - sz = load_cpu_fw_direct("v4l-cx23418-cpu.fw", cx->enc_mem, cx); + sz = load_cpu_fw_direct(CX18_CPU_FIRMWARE, cx->enc_mem, cx); if (sz <= 0) return sz; @@ -408,7 +411,7 @@ cx18_init_scb(cx); fw_entry_addr = 0; - sz = load_apu_fw_direct("v4l-cx23418-apu.fw", cx->enc_mem, cx, + sz = load_apu_fw_direct(CX18_APU_FIRMWARE, cx->enc_mem, cx, &fw_entry_addr); if (sz <= 0) return sz; @@ -451,3 +454,6 @@ cx18_write_reg_expect(cx, 0x14001400, 0xc78110, 0x00001400, 0x14001400); return 0; } + +MODULE_FIRMWARE(CX18_CPU_FIRMWARE); +MODULE_FIRMWARE(CX18_APU_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-driver.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-driver.c @@ -1357,3 +1357,4 @@ module_init(module_start); module_exit(module_cleanup); +MODULE_FIRMWARE(XC2028_DEFAULT_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/m5mols/m5mols_controls.c +++ linux-3.5.0/drivers/media/video/m5mols/m5mols_controls.c @@ -527,8 +527,8 @@ /* Supported manual ISO values */ static const s64 iso_qmenu[] = { - /* AE_ISO: 0x01...0x07 */ - 50, 100, 200, 400, 800, 1600, 3200 + /* AE_ISO: 0x01...0x07 (ISO: 50...3200) */ + 50000, 100000, 200000, 400000, 800000, 1600000, 3200000 }; /* Supported Exposure Bias values, -2.0EV...+2.0EV */ --- linux-3.5.0.orig/drivers/media/video/tlg2300/pd-main.c +++ linux-3.5.0/drivers/media/video/tlg2300/pd-main.c @@ -53,7 +53,8 @@ module_param(debug_mode, int, 0644); MODULE_PARM_DESC(debug_mode, "0 = disable, 1 = enable, 2 = verbose"); -static const char *firmware_name = "tlg2300_firmware.bin"; +#define TLG2300_FIRMWARE "tlg2300_firmware.bin" +static const char *firmware_name = TLG2300_FIRMWARE; static struct usb_driver poseidon_driver; static LIST_HEAD(pd_device_list); @@ -532,3 +533,4 @@ MODULE_DESCRIPTION("For tlg2300-based USB device "); MODULE_LICENSE("GPL"); MODULE_VERSION("0.0.2"); +MODULE_FIRMWARE(TLG2300_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/uvc/uvc_video.c +++ linux-3.5.0/drivers/media/video/uvc/uvc_video.c @@ -1188,7 +1188,11 @@ u8 *mem; int len, ret; - if (urb->actual_length == 0) + /* + * Ignore ZLPs if they're not part of a frame, otherwise process them + * to trigger the end of payload detection. + */ + if (urb->actual_length == 0 && stream->bulk.header_size == 0) return; mem = urb->transfer_buffer; @@ -1594,7 +1598,7 @@ psize = le16_to_cpu(ep->desc.wMaxPacketSize); psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); if (psize >= bandwidth && psize <= best_psize) { - altsetting = i; + altsetting = alts->desc.bAlternateSetting; best_psize = psize; best_ep = ep; } --- linux-3.5.0.orig/drivers/media/video/uvc/uvc_queue.c +++ linux-3.5.0/drivers/media/video/uvc/uvc_queue.c @@ -338,6 +338,7 @@ if ((queue->flags & UVC_QUEUE_DROP_CORRUPTED) && buf->error) { buf->error = 0; buf->state = UVC_BUF_STATE_QUEUED; + buf->bytesused = 0; vb2_set_plane_payload(&buf->buf, 0, 0); return buf; } --- linux-3.5.0.orig/drivers/media/video/cpia2/cpia2_core.c +++ linux-3.5.0/drivers/media/video/cpia2/cpia2_core.c @@ -31,11 +31,15 @@ #include "cpia2.h" +#include #include #include #include #include +#define FIRMWARE "cpia2/stv0672_vp4.bin" +MODULE_FIRMWARE(FIRMWARE); + /* #define _CPIA2_DEBUG_ */ #ifdef _CPIA2_DEBUG_ @@ -898,7 +902,7 @@ static int apply_vp_patch(struct camera_data *cam) { const struct firmware *fw; - const char fw_name[] = "cpia2/stv0672_vp4.bin"; + const char fw_name[] = FIRMWARE; int i, ret; struct cpia2_command cmd; --- linux-3.5.0.orig/drivers/media/video/cx231xx/cx231xx-417.c +++ linux-3.5.0/drivers/media/video/cx231xx/cx231xx-417.c @@ -2193,3 +2193,5 @@ return 0; } + +MODULE_FIRMWARE(CX231xx_FIRM_IMAGE_NAME); --- linux-3.5.0.orig/drivers/media/video/omap/omap_vout.c +++ linux-3.5.0/drivers/media/video/omap/omap_vout.c @@ -206,19 +206,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-3.5.0.orig/drivers/media/video/em28xx/em28xx-cards.c +++ linux-3.5.0/drivers/media/video/em28xx/em28xx-cards.c @@ -2880,12 +2880,20 @@ } -#if defined(CONFIG_MODULES) && defined(MODULE) static void request_module_async(struct work_struct *work) { struct em28xx *dev = container_of(work, struct em28xx, request_module_wk); + /* + * The em28xx extensions can be modules or builtin. If the + * modules are already loaded or are built in, those extensions + * can be initialised right now. Otherwise, the module init + * code will do it. + */ + em28xx_init_extension(dev); + +#if defined(CONFIG_MODULES) && defined(MODULE) if (dev->has_audio_class) request_module("snd-usb-audio"); else if (dev->has_alsa_audio) @@ -2895,6 +2903,7 @@ request_module("em28xx-dvb"); if (dev->board.ir_codes && !disable_ir) request_module("em28xx-rc"); +#endif /* CONFIG_MODULES */ } static void request_modules(struct em28xx *dev) @@ -2907,10 +2916,6 @@ { flush_work_sync(&dev->request_module_wk); } -#else -#define request_modules(dev) -#define flush_request_modules(dev) -#endif /* CONFIG_MODULES */ /* * em28xx_release_resources() @@ -3329,13 +3334,6 @@ */ mutex_unlock(&dev->lock); - /* - * These extensions can be modules. If the modules are already - * loaded then we can initialise the device now, otherwise we - * will initialise it when the modules load instead. - */ - em28xx_init_extension(dev); - return 0; unlock_and_free: --- linux-3.5.0.orig/drivers/media/video/au0828/au0828-video.c +++ linux-3.5.0/drivers/media/video/au0828/au0828-video.c @@ -1692,14 +1692,18 @@ (AUVI_INPUT(i).audio_setup)(dev, 0); } - videobuf_streamoff(&fh->vb_vidq); - res_free(fh, AU0828_RESOURCE_VIDEO); + if (res_check(fh, AU0828_RESOURCE_VIDEO)) { + videobuf_streamoff(&fh->vb_vidq); + res_free(fh, AU0828_RESOURCE_VIDEO); + } } else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { dev->vbi_timeout_running = 0; del_timer_sync(&dev->vbi_timeout); - videobuf_streamoff(&fh->vb_vbiq); - res_free(fh, AU0828_RESOURCE_VBI); + if (res_check(fh, AU0828_RESOURCE_VBI)) { + videobuf_streamoff(&fh->vb_vbiq); + res_free(fh, AU0828_RESOURCE_VBI); + } } return 0; --- linux-3.5.0.orig/drivers/media/video/cx25840/cx25840-firmware.c +++ linux-3.5.0/drivers/media/video/cx25840/cx25840-firmware.c @@ -61,6 +61,10 @@ cx25840_write(client, 0x803, 0x03); } +#define CX2388x_FIRMWARE "v4l-cx23885-avcore-01.fw" +#define CX231xx_FIRMWARE "v4l-cx231xx-avcore-01.fw" +#define CX25840_FIRMWARE "v4l-cx25840.fw" + static const char *get_fw_name(struct i2c_client *client) { struct cx25840_state *state = to_state(i2c_get_clientdata(client)); @@ -68,10 +72,10 @@ if (firmware[0]) return firmware; if (is_cx2388x(state)) - return "v4l-cx23885-avcore-01.fw"; + return CX2388x_FIRMWARE; if (is_cx231xx(state)) - return "v4l-cx231xx-avcore-01.fw"; - return "v4l-cx25840.fw"; + return CX231xx_FIRMWARE; + return CX25840_FIRMWARE; } static int check_fw_load(struct i2c_client *client, int size) @@ -164,3 +168,8 @@ return check_fw_load(client, size); } + +MODULE_FIRMWARE(CX2388x_FIRMWARE); +MODULE_FIRMWARE(CX231xx_FIRMWARE); +MODULE_FIRMWARE(CX25840_FIRMWARE); + --- linux-3.5.0.orig/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ linux-3.5.0/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -54,8 +54,9 @@ { .module_id = PVR2_CLIENT_ID_DEMOD }, }; +#define PVR2_FIRMWARE_29xxx "v4l-pvrusb2-29xxx-01.fw" static const char *pvr2_fw1_names_29xxx[] = { - "v4l-pvrusb2-29xxx-01.fw", + PVR2_FIRMWARE_29xxx, }; static const struct pvr2_device_desc pvr2_device_29xxx = { @@ -87,8 +88,9 @@ { .module_id = PVR2_CLIENT_ID_DEMOD }, }; +#define PVR2_FIRMWARE_24xxx "v4l-pvrusb2-24xxx-01.fw" static const char *pvr2_fw1_names_24xxx[] = { - "v4l-pvrusb2-24xxx-01.fw", + PVR2_FIRMWARE_24xxx, }; static const struct pvr2_device_desc pvr2_device_24xxx = { @@ -369,8 +371,9 @@ .i2c_address_list = "\x42"}, }; +#define PVR2_FIRMWARE_73xxx "v4l-pvrusb2-73xxx-01.fw" static const char *pvr2_fw1_names_73xxx[] = { - "v4l-pvrusb2-73xxx-01.fw", + PVR2_FIRMWARE_73xxx, }; static const struct pvr2_device_desc pvr2_device_73xxx = { @@ -475,8 +478,9 @@ }; #endif +#define PVR2_FIRMWARE_75xxx "v4l-pvrusb2-73xxx-01.fw" static const char *pvr2_fw1_names_75xxx[] = { - "v4l-pvrusb2-73xxx-01.fw", + PVR2_FIRMWARE_75xxx, }; static const struct pvr2_device_desc pvr2_device_750xx = { @@ -556,7 +560,10 @@ }; MODULE_DEVICE_TABLE(usb, pvr2_device_table); - +MODULE_FIRMWARE(PVR2_FIRMWARE_29xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_24xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_73xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_75xxx); /* Stuff for Emacs to see, in order to encourage consistent editing style: --- linux-3.5.0.orig/drivers/media/video/cx23885/cx23885-417.c +++ linux-3.5.0/drivers/media/video/cx23885/cx23885-417.c @@ -1786,3 +1786,5 @@ return 0; } + +MODULE_FIRMWARE(CX23885_FIRM_IMAGE_NAME); --- linux-3.5.0.orig/drivers/media/video/gspca/kinect.c +++ linux-3.5.0/drivers/media/video/gspca/kinect.c @@ -390,6 +390,7 @@ /* -- module initialisation -- */ static const struct usb_device_id device_table[] = { {USB_DEVICE(0x045e, 0x02ae)}, + {USB_DEVICE(0x045e, 0x02bf)}, {} }; --- linux-3.5.0.orig/drivers/media/video/gspca/spca506.c +++ linux-3.5.0/drivers/media/video/gspca/spca506.c @@ -685,7 +685,7 @@ }; /* -- module initialisation -- */ -static const struct usb_device_id device_table[] __devinitconst = { +static const struct usb_device_id device_table[] = { {USB_DEVICE(0x06e1, 0xa190)}, /*fixme: may be IntelPCCameraPro BRIDGE_SPCA505 {USB_DEVICE(0x0733, 0x0430)}, */ --- linux-3.5.0.orig/drivers/media/video/gspca/pac7302.c +++ linux-3.5.0/drivers/media/video/gspca/pac7302.c @@ -978,6 +978,7 @@ {USB_DEVICE(0x093a, 0x262a)}, {USB_DEVICE(0x093a, 0x262c)}, {USB_DEVICE(0x145f, 0x013c)}, + {USB_DEVICE(0x1ae7, 0x2001)}, /* SpeedLink Snappy Mic SL-6825-SBK */ {} }; MODULE_DEVICE_TABLE(usb, device_table); --- linux-3.5.0.orig/drivers/media/video/gspca/jl2005bcd.c +++ linux-3.5.0/drivers/media/video/gspca/jl2005bcd.c @@ -514,7 +514,7 @@ }; /* -- module initialisation -- */ -static const __devinitdata struct usb_device_id device_table[] = { +static const struct usb_device_id device_table[] = { {USB_DEVICE(0x0979, 0x0227)}, {} }; --- linux-3.5.0.orig/drivers/media/common/tuners/xc5000.c +++ linux-3.5.0/drivers/media/common/tuners/xc5000.c @@ -210,13 +210,15 @@ u16 size; }; +#define XC5000A_FIRMWARE "dvb-fe-xc5000-1.6.114.fw" static const struct xc5000_fw_cfg xc5000a_1_6_114 = { - .name = "dvb-fe-xc5000-1.6.114.fw", + .name = XC5000A_FIRMWARE, .size = 12401, }; +#define XC5000C_FIRMWARE "dvb-fe-xc5000c-41.024.5.fw" static const struct xc5000_fw_cfg xc5000c_41_024_5 = { - .name = "dvb-fe-xc5000c-41.024.5.fw", + .name = XC5000C_FIRMWARE, .size = 16497, }; @@ -1253,3 +1255,5 @@ MODULE_AUTHOR("Steven Toth"); MODULE_DESCRIPTION("Xceive xc5000 silicon tuner driver"); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(XC5000A_FIRMWARE); +MODULE_FIRMWARE(XC5000C_FIRMWARE); --- linux-3.5.0.orig/drivers/media/dvb/frontends/lgs8gxx.c +++ linux-3.5.0/drivers/media/dvb/frontends/lgs8gxx.c @@ -40,6 +40,8 @@ static int debug; static int fake_signal_str = 1; +#define LGS8GXX_FIRMWARE "lgs8g75.fw" + module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off)."); @@ -592,7 +594,7 @@ int rc; int i; - rc = request_firmware(&fw, "lgs8g75.fw", &priv->i2c->dev); + rc = request_firmware(&fw, LGS8GXX_FIRMWARE, &priv->i2c->dev); if (rc) return rc; @@ -1070,3 +1072,4 @@ MODULE_DESCRIPTION("Legend Silicon LGS8913/LGS8GXX DMB-TH demodulator driver"); MODULE_AUTHOR("David T. L. Wong "); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(LGS8GXX_FIRMWARE); --- linux-3.5.0.orig/drivers/media/dvb/siano/smsusb.c +++ linux-3.5.0/drivers/media/dvb/siano/smsusb.c @@ -481,7 +481,7 @@ return 0; } -static const struct usb_device_id smsusb_id_table[] __devinitconst = { +static const struct usb_device_id smsusb_id_table[] = { { USB_DEVICE(0x187f, 0x0010), .driver_info = SMS1XXX_BOARD_SIANO_STELLAR }, { USB_DEVICE(0x187f, 0x0100), --- linux-3.5.0.orig/drivers/media/dvb/mantis/mantis_dvb.c +++ linux-3.5.0/drivers/media/dvb/mantis/mantis_dvb.c @@ -248,8 +248,10 @@ err5: tasklet_kill(&mantis->tasklet); dvb_net_release(&mantis->dvbnet); - dvb_unregister_frontend(mantis->fe); - dvb_frontend_detach(mantis->fe); + if (mantis->fe) { + dvb_unregister_frontend(mantis->fe); + dvb_frontend_detach(mantis->fe); + } err4: mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_mem); --- linux-3.5.0.orig/drivers/usb/misc/appledisplay.c +++ linux-3.5.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-3.5.0.orig/drivers/usb/misc/emi62.c +++ linux-3.5.0/drivers/usb/misc/emi62.c @@ -232,7 +232,7 @@ return err; } -static const struct usb_device_id id_table[] __devinitconst = { +static const struct usb_device_id id_table[] = { { USB_DEVICE(EMI62_VENDOR_ID, EMI62_PRODUCT_ID) }, { } /* Terminating entry */ }; --- linux-3.5.0.orig/drivers/usb/host/xhci-pci.c +++ linux-3.5.0/drivers/usb/host/xhci-pci.c @@ -29,6 +29,7 @@ /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 +#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400 #define PCI_VENDOR_ID_ETRON 0x1b6f #define PCI_DEVICE_ID_ASROCK_P67 0x7023 @@ -58,8 +59,10 @@ /* Look for vendor-specific quirks */ if (pdev->vendor == PCI_VENDOR_ID_FRESCO_LOGIC && - pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK) { - if (pdev->revision == 0x0) { + (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK || + pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_FL1400)) { + if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK && + pdev->revision == 0x0) { xhci->quirks |= XHCI_RESET_EP_QUIRK; xhci_dbg(xhci, "QUIRK: Fresco Logic xHC needs configure" " endpoint cmd after reset endpoint\n"); @@ -94,11 +97,22 @@ xhci->quirks |= XHCI_EP_LIMIT_QUIRK; xhci->limit_active_eps = 64; xhci->quirks |= XHCI_SW_BW_CHECKING; + /* + * PPT desktop boards DH77EB and DH77DF will power back on after + * a few seconds of being shutdown. The fix for this is to + * switch the ports from xHCI to EHCI on shutdown. We can't use + * DMI information to find those particular boards (since each + * vendor will change the board name), so we have to key off all + * PPT chipsets. + */ + xhci->quirks |= XHCI_SPURIOUS_REBOOT; + xhci->quirks |= XHCI_AVOID_BEI; } if (pdev->vendor == PCI_VENDOR_ID_ETRON && pdev->device == PCI_DEVICE_ID_ASROCK_P67) { xhci->quirks |= XHCI_RESET_ON_RESUME; xhci_dbg(xhci, "QUIRK: Resetting on resume\n"); + xhci->quirks |= XHCI_TRUST_TX_LENGTH; } if (pdev->vendor == PCI_VENDOR_ID_VIA) xhci->quirks |= XHCI_RESET_ON_RESUME; --- linux-3.5.0.orig/drivers/usb/host/pci-quirks.h +++ linux-3.5.0/drivers/usb/host/pci-quirks.h @@ -10,10 +10,12 @@ void usb_amd_quirk_pll_enable(void); bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); #else static inline void usb_amd_quirk_pll_disable(void) {} static inline void usb_amd_quirk_pll_enable(void) {} static inline void usb_amd_dev_put(void) {} +static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {} #endif /* CONFIG_PCI */ #endif /* __LINUX_USB_PCI_QUIRKS_H */ --- linux-3.5.0.orig/drivers/usb/host/uhci-hub.c +++ linux-3.5.0/drivers/usb/host/uhci-hub.c @@ -222,7 +222,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-3.5.0.orig/drivers/usb/host/xhci-hub.c +++ linux-3.5.0/drivers/usb/host/xhci-hub.c @@ -493,11 +493,48 @@ * when this bit is set. */ pls |= USB_PORT_STAT_CONNECTION; + } else { + /* + * If CAS bit isn't set but the Port is already at + * Compliance Mode, fake a connection so the USB core + * notices the Compliance state and resets the port. + * This resolves an issue generated by the SN65LVPE502CP + * in which sometimes the port enters compliance mode + * caused by a delay on the host-device negotiation. + */ + if (pls == USB_SS_PORT_LS_COMP_MOD) + pls |= USB_PORT_STAT_CONNECTION; } + /* update status field */ *status |= pls; } +/* + * Function for Compliance Mode Quirk. + * + * This Function verifies if all xhc USB3 ports have entered U0, if so, + * the compliance mode timer is deleted. A port won't enter + * compliance mode if it has previously entered U0. + */ +void xhci_del_comp_mod_timer(struct xhci_hcd *xhci, u32 status, u16 wIndex) +{ + u32 all_ports_seen_u0 = ((1 << xhci->num_usb3_ports)-1); + bool port_in_u0 = ((status & PORT_PLS_MASK) == XDEV_U0); + + if (!(xhci->quirks & XHCI_COMP_MODE_QUIRK)) + return; + + if ((xhci->port_status_u0 != all_ports_seen_u0) && port_in_u0) { + xhci->port_status_u0 |= 1 << wIndex; + if (xhci->port_status_u0 == all_ports_seen_u0) { + del_timer_sync(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "All USB3 ports have entered U0 already!\n"); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Deleted.\n"); + } + } +} + int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex, char *buf, u16 wLength) { @@ -544,12 +581,18 @@ if (hcd->speed != HCD_USB3) goto error; + /* Set the U1 and U2 exit latencies. */ memcpy(buf, &usb_bos_descriptor, USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE); temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); buf[12] = HCS_U1_LATENCY(temp); put_unaligned_le16(HCS_U2_LATENCY(temp), &buf[13]); + /* Indicate whether the host has LTM support. */ + temp = xhci_readl(xhci, &xhci->cap_regs->hcc_params); + if (HCC_LTC(temp)) + buf[8] |= USB_LTM_SUPPORT; + spin_unlock_irqrestore(&xhci->lock, flags); return USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE; case GetPortStatus: @@ -645,6 +688,11 @@ /* Update Port Link State for super speed ports*/ if (hcd->speed == HCD_USB3) { xhci_hub_report_link_state(&status, temp); + /* + * Verify if all USB3 Ports Have entered U0 already. + * Delete Compliance Mode Timer if so. + */ + xhci_del_comp_mod_timer(xhci, temp, wIndex); } if (bus_state->port_c_suspend & (1 << wIndex)) status |= 1 << USB_PORT_FEAT_C_SUSPEND; @@ -714,12 +762,39 @@ break; case USB_PORT_FEAT_LINK_STATE: temp = xhci_readl(xhci, port_array[wIndex]); + + /* Disable port */ + if (link_state == USB_SS_PORT_LS_SS_DISABLED) { + xhci_dbg(xhci, "Disable port %d\n", wIndex); + temp = xhci_port_state_to_neutral(temp); + /* + * Clear all change bits, so that we get a new + * connection event. + */ + temp |= PORT_CSC | PORT_PEC | PORT_WRC | + PORT_OCC | PORT_RC | PORT_PLC | + PORT_CEC; + xhci_writel(xhci, temp | PORT_PE, + port_array[wIndex]); + temp = xhci_readl(xhci, port_array[wIndex]); + break; + } + + /* Put link in RxDetect (enable port) */ + if (link_state == USB_SS_PORT_LS_RX_DETECT) { + xhci_dbg(xhci, "Enable port %d\n", wIndex); + xhci_set_link_state(xhci, port_array, wIndex, + link_state); + temp = xhci_readl(xhci, port_array[wIndex]); + break; + } + /* Software should not attempt to set - * port link state above '5' (Rx.Detect) and the port + * port link state above '3' (U3) and the port * must be enabled. */ if ((temp & PORT_PE) == 0 || - (link_state > USB_SS_PORT_LS_RX_DETECT)) { + (link_state > USB_SS_PORT_LS_U3)) { xhci_warn(xhci, "Cannot set link state.\n"); goto error; } @@ -890,6 +965,7 @@ int max_ports; __le32 __iomem **port_array; struct xhci_bus_state *bus_state; + bool reset_change = false; max_ports = xhci_get_ports(hcd, &port_array); bus_state = &xhci->bus_state[hcd_index(hcd)]; @@ -921,6 +997,12 @@ buf[(i + 1) / 8] |= 1 << (i + 1) % 8; status = 1; } + if ((temp & PORT_RC)) + reset_change = true; + } + if (!status && !reset_change) { + xhci_dbg(xhci, "%s: stopping port polling.\n", __func__); + clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); } spin_unlock_irqrestore(&xhci->lock, flags); return status ? retval : 0; --- linux-3.5.0.orig/drivers/usb/host/ohci-q.c +++ linux-3.5.0/drivers/usb/host/ohci-q.c @@ -1128,6 +1128,25 @@ while (td) { struct td *td_next = td->next_dl_td; + struct ed *ed = td->ed; + + /* + * Some OHCI controllers (NVIDIA for sure, maybe others) + * occasionally forget to add TDs to the done queue. Since + * TDs for a given endpoint are always processed in order, + * if we find a TD on the donelist then all of its + * predecessors must be finished as well. + */ + for (;;) { + struct td *td2; + + td2 = list_first_entry(&ed->td_list, struct td, + td_list); + if (td2 == td) + break; + takeback_td(ohci, td2); + } + takeback_td(ohci, td); td = td_next; } --- linux-3.5.0.orig/drivers/usb/host/uhci-hcd.c +++ linux-3.5.0/drivers/usb/host/uhci-hcd.c @@ -447,6 +447,10 @@ return IRQ_NONE; uhci_writew(uhci, status, USBSTS); /* Clear it */ + spin_lock(&uhci->lock); + if (unlikely(!uhci->is_initialized)) /* not yet configured */ + goto done; + if (status & ~(USBSTS_USBINT | USBSTS_ERROR | USBSTS_RD)) { if (status & USBSTS_HSE) dev_err(uhci_dev(uhci), "host system error, " @@ -455,7 +459,6 @@ dev_err(uhci_dev(uhci), "host controller process " "error, something bad happened!\n"); if (status & USBSTS_HCH) { - spin_lock(&uhci->lock); if (uhci->rh_state >= UHCI_RH_RUNNING) { dev_err(uhci_dev(uhci), "host controller halted, " @@ -473,15 +476,15 @@ * pending unlinks */ mod_timer(&hcd->rh_timer, jiffies); } - spin_unlock(&uhci->lock); } } - if (status & USBSTS_RD) + if (status & USBSTS_RD) { + spin_unlock(&uhci->lock); usb_hcd_poll_rh_status(hcd); - else { - spin_lock(&uhci->lock); + } else { uhci_scan_schedule(uhci); + done: spin_unlock(&uhci->lock); } @@ -662,9 +665,9 @@ */ mb(); + spin_lock_irq(&uhci->lock); configure_hc(uhci); uhci->is_initialized = 1; - spin_lock_irq(&uhci->lock); start_rh(uhci); spin_unlock_irq(&uhci->lock); return 0; --- linux-3.5.0.orig/drivers/usb/host/ehci-hub.c +++ linux-3.5.0/drivers/usb/host/ehci-hub.c @@ -613,7 +613,11 @@ status = STS_PCD; } } - /* FIXME autosuspend idle root hubs */ + + /* If a resume is in progress, make sure it can finish */ + if (ehci->resuming_ports) + mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(25)); + spin_unlock_irqrestore (&ehci->lock, flags); return status ? retval : 0; } --- linux-3.5.0.orig/drivers/usb/host/ehci-omap.c +++ linux-3.5.0/drivers/usb/host/ehci-omap.c @@ -43,7 +43,6 @@ #include #include #include -#include /* EHCI Register Set */ #define EHCI_INSNREG04 (0xA0) @@ -56,15 +55,6 @@ #define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8 #define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0 -/* Errata i693 */ -static struct clk *utmi_p1_fck; -static struct clk *utmi_p2_fck; -static struct clk *xclk60mhsp1_ck; -static struct clk *xclk60mhsp2_ck; -static struct clk *usbhost_p1_fck; -static struct clk *usbhost_p2_fck; -static struct clk *init_60m_fclk; - /*-------------------------------------------------------------------------*/ static const struct hc_driver ehci_omap_hc_driver; @@ -80,41 +70,6 @@ return __raw_readl(base + reg); } -/* Erratum i693 workaround sequence */ -static void omap_ehci_erratum_i693(struct ehci_hcd *ehci) -{ - int ret = 0; - - /* Switch to the internal 60 MHz clock */ - ret = clk_set_parent(utmi_p1_fck, init_60m_fclk); - if (ret != 0) - ehci_err(ehci, "init_60m_fclk set parent" - "failed error:%d\n", ret); - - ret = clk_set_parent(utmi_p2_fck, init_60m_fclk); - if (ret != 0) - ehci_err(ehci, "init_60m_fclk set parent" - "failed error:%d\n", ret); - - clk_enable(usbhost_p1_fck); - clk_enable(usbhost_p2_fck); - - /* Wait 1ms and switch back to the external clock */ - mdelay(1); - ret = clk_set_parent(utmi_p1_fck, xclk60mhsp1_ck); - if (ret != 0) - ehci_err(ehci, "xclk60mhsp1_ck set parent" - "failed error:%d\n", ret); - - ret = clk_set_parent(utmi_p2_fck, xclk60mhsp2_ck); - if (ret != 0) - ehci_err(ehci, "xclk60mhsp2_ck set parent" - "failed error:%d\n", ret); - - clk_disable(usbhost_p1_fck); - clk_disable(usbhost_p2_fck); -} - static void omap_ehci_soft_phy_reset(struct platform_device *pdev, u8 port) { struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev); @@ -145,50 +100,6 @@ } } -static int omap_ehci_hub_control( - struct usb_hcd *hcd, - u16 typeReq, - u16 wValue, - u16 wIndex, - char *buf, - u16 wLength -) -{ - struct ehci_hcd *ehci = hcd_to_ehci(hcd); - u32 __iomem *status_reg = &ehci->regs->port_status[ - (wIndex & 0xff) - 1]; - u32 temp; - unsigned long flags; - int retval = 0; - - spin_lock_irqsave(&ehci->lock, flags); - - if (typeReq == SetPortFeature && wValue == USB_PORT_FEAT_SUSPEND) { - temp = ehci_readl(ehci, status_reg); - if ((temp & PORT_PE) == 0 || (temp & PORT_RESET) != 0) { - retval = -EPIPE; - goto done; - } - - temp &= ~PORT_WKCONN_E; - temp |= PORT_WKDISC_E | PORT_WKOC_E; - ehci_writel(ehci, temp | PORT_SUSPEND, status_reg); - - omap_ehci_erratum_i693(ehci); - - set_bit((wIndex & 0xff) - 1, &ehci->suspended_ports); - goto done; - } - - spin_unlock_irqrestore(&ehci->lock, flags); - - /* Handle the hub control events here */ - return ehci_hub_control(hcd, typeReq, wValue, wIndex, buf, wLength); -done: - spin_unlock_irqrestore(&ehci->lock, flags); - return retval; -} - static void disable_put_regulator( struct ehci_hcd_omap_platform_data *pdata) { @@ -351,76 +262,8 @@ /* root ports should always stay powered */ ehci_port_power(omap_ehci, 1); - /* get clocks */ - utmi_p1_fck = clk_get(dev, "utmi_p1_gfclk"); - if (IS_ERR(utmi_p1_fck)) { - ret = PTR_ERR(utmi_p1_fck); - dev_err(dev, "utmi_p1_gfclk failed error:%d\n", ret); - goto err_add_hcd; - } - - xclk60mhsp1_ck = clk_get(dev, "xclk60mhsp1_ck"); - if (IS_ERR(xclk60mhsp1_ck)) { - ret = PTR_ERR(xclk60mhsp1_ck); - dev_err(dev, "xclk60mhsp1_ck failed error:%d\n", ret); - goto err_utmi_p1_fck; - } - - utmi_p2_fck = clk_get(dev, "utmi_p2_gfclk"); - if (IS_ERR(utmi_p2_fck)) { - ret = PTR_ERR(utmi_p2_fck); - dev_err(dev, "utmi_p2_gfclk failed error:%d\n", ret); - goto err_xclk60mhsp1_ck; - } - - xclk60mhsp2_ck = clk_get(dev, "xclk60mhsp2_ck"); - if (IS_ERR(xclk60mhsp2_ck)) { - ret = PTR_ERR(xclk60mhsp2_ck); - dev_err(dev, "xclk60mhsp2_ck failed error:%d\n", ret); - goto err_utmi_p2_fck; - } - - usbhost_p1_fck = clk_get(dev, "usb_host_hs_utmi_p1_clk"); - if (IS_ERR(usbhost_p1_fck)) { - ret = PTR_ERR(usbhost_p1_fck); - dev_err(dev, "usbhost_p1_fck failed error:%d\n", ret); - goto err_xclk60mhsp2_ck; - } - - usbhost_p2_fck = clk_get(dev, "usb_host_hs_utmi_p2_clk"); - if (IS_ERR(usbhost_p2_fck)) { - ret = PTR_ERR(usbhost_p2_fck); - dev_err(dev, "usbhost_p2_fck failed error:%d\n", ret); - goto err_usbhost_p1_fck; - } - - init_60m_fclk = clk_get(dev, "init_60m_fclk"); - if (IS_ERR(init_60m_fclk)) { - ret = PTR_ERR(init_60m_fclk); - dev_err(dev, "init_60m_fclk failed error:%d\n", ret); - goto err_usbhost_p2_fck; - } - return 0; -err_usbhost_p2_fck: - clk_put(usbhost_p2_fck); - -err_usbhost_p1_fck: - clk_put(usbhost_p1_fck); - -err_xclk60mhsp2_ck: - clk_put(xclk60mhsp2_ck); - -err_utmi_p2_fck: - clk_put(utmi_p2_fck); - -err_xclk60mhsp1_ck: - clk_put(xclk60mhsp1_ck); - -err_utmi_p1_fck: - clk_put(utmi_p1_fck); - err_add_hcd: disable_put_regulator(pdata); pm_runtime_put_sync(dev); @@ -443,31 +286,14 @@ { struct device *dev = &pdev->dev; struct usb_hcd *hcd = dev_get_drvdata(dev); - struct ehci_hcd_omap_platform_data *pdata = dev->platform_data; usb_remove_hcd(hcd); disable_put_regulator(dev->platform_data); iounmap(hcd->regs); usb_put_hcd(hcd); - - clk_put(utmi_p1_fck); - clk_put(utmi_p2_fck); - clk_put(xclk60mhsp1_ck); - clk_put(xclk60mhsp2_ck); - clk_put(usbhost_p1_fck); - clk_put(usbhost_p2_fck); - clk_put(init_60m_fclk); - pm_runtime_put_sync(dev); pm_runtime_disable(dev); - if (pdata->phy_reset) { - if (gpio_is_valid(pdata->reset_gpio_port[0])) - gpio_free(pdata->reset_gpio_port[0]); - - if (gpio_is_valid(pdata->reset_gpio_port[1])) - gpio_free(pdata->reset_gpio_port[1]); - } return 0; } @@ -528,14 +354,14 @@ * root hub support */ .hub_status_data = ehci_hub_status_data, - .hub_control = omap_ehci_hub_control, + .hub_control = ehci_hub_control, .bus_suspend = ehci_bus_suspend, .bus_resume = ehci_bus_resume, .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, }; -MODULE_ALIAS("platform:omap-ehci"); +MODULE_ALIAS("platform:ehci-omap"); MODULE_AUTHOR("Texas Instruments, Inc."); MODULE_AUTHOR("Felipe Balbi "); --- linux-3.5.0.orig/drivers/usb/host/pci-quirks.c +++ linux-3.5.0/drivers/usb/host/pci-quirks.c @@ -75,7 +75,9 @@ #define NB_PIF0_PWRDOWN_1 0x01100013 #define USB_INTEL_XUSB2PR 0xD0 +#define USB_INTEL_USB2PRM 0xD4 #define USB_INTEL_USB3_PSSEN 0xD8 +#define USB_INTEL_USB3PRM 0xDC static struct amd_chipset_info { struct pci_dev *nb_dev; @@ -543,7 +545,14 @@ /* Pegatron Lucid (Ordissimo AIRIS) */ .matches = { DMI_MATCH(DMI_BOARD_NAME, "M11JB"), - DMI_MATCH(DMI_BIOS_VERSION, "Lucid-GE-133"), + DMI_MATCH(DMI_BIOS_VERSION, "Lucid-"), + }, + }, + { + /* Pegatron Lucid (Ordissimo) */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Ordissimo"), + DMI_MATCH(DMI_BIOS_VERSION, "Lucid-"), }, }, { } @@ -714,6 +723,7 @@ } #define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31 +#define PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI 0x9C31 bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) { @@ -727,7 +737,8 @@ { return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && pdev->vendor == PCI_VENDOR_ID_INTEL && - pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI; + (pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI || + pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI); } bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) @@ -769,13 +780,22 @@ "defaulting to EHCI.\n"); dev_warn(&xhci_pdev->dev, "USB 3.0 devices will work at USB 2.0 speeds.\n"); + usb_disable_xhci_ports(xhci_pdev); return; } - ports_available = 0xffffffff; + /* Read USB3PRM, the USB 3.0 Port Routing Mask Register + * Indicate the ports that can be changed from OS. + */ + pci_read_config_dword(xhci_pdev, USB_INTEL_USB3PRM, + &ports_available); + + dev_dbg(&xhci_pdev->dev, "Configurable ports to enable SuperSpeed: 0x%x\n", + ports_available); + /* Write USB3_PSSEN, the USB 3.0 Port SuperSpeed Enable - * Register, to turn on SuperSpeed terminations for all - * available ports. + * Register, to turn on SuperSpeed terminations for the + * switchable ports. */ pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, cpu_to_le32(ports_available)); @@ -785,7 +805,16 @@ dev_dbg(&xhci_pdev->dev, "USB 3.0 ports that are now enabled " "under xHCI: 0x%x\n", ports_available); - ports_available = 0xffffffff; + /* Read XUSB2PRM, xHCI USB 2.0 Port Routing Mask Register + * Indicate the USB 2.0 ports to be controlled by the xHCI host. + */ + + pci_read_config_dword(xhci_pdev, USB_INTEL_USB2PRM, + &ports_available); + + dev_dbg(&xhci_pdev->dev, "Configurable USB 2.0 ports to hand over to xCHI: 0x%x\n", + ports_available); + /* Write XUSB2PR, the xHC USB 2.0 Port Routing Register, to * switch the USB 2.0 power and data lines over to the xHCI * host. @@ -800,6 +829,13 @@ } EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) +{ + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); +} +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); + /** * PCI Quirks for xHCI. * @@ -815,12 +851,12 @@ void __iomem *op_reg_base; u32 val; int timeout; + int len = pci_resource_len(pdev, 0); if (!mmio_resource_enabled(pdev, 0)) return; - base = ioremap_nocache(pci_resource_start(pdev, 0), - pci_resource_len(pdev, 0)); + base = ioremap_nocache(pci_resource_start(pdev, 0), len); if (base == NULL) return; @@ -830,9 +866,17 @@ */ ext_cap_offset = xhci_find_next_cap_offset(base, XHCI_HCC_PARAMS_OFFSET); do { + if ((ext_cap_offset + sizeof(val)) > len) { + /* We're reading garbage from the controller */ + dev_warn(&pdev->dev, + "xHCI controller failing to respond"); + return; + } + if (!ext_cap_offset) /* We've reached the end of the extended capabilities */ goto hc_init; + val = readl(base + ext_cap_offset); if (XHCI_EXT_CAPS_ID(val) == XHCI_EXT_CAPS_LEGACY) break; @@ -863,9 +907,10 @@ /* Disable any BIOS SMIs and clear all SMI events*/ writel(val, base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET); +hc_init: if (usb_is_intel_switchable_xhci(pdev)) usb_enable_xhci_ports(pdev); -hc_init: + op_reg_base = base + XHCI_HC_LENGTH(readl(base)); /* Wait for the host controller to be ready before writing any --- linux-3.5.0.orig/drivers/usb/host/xhci-mem.c +++ linux-3.5.0/drivers/usb/host/xhci-mem.c @@ -205,7 +205,12 @@ next = xhci_segment_alloc(xhci, cycle_state, flags); if (!next) { - xhci_free_segments_for_ring(xhci, *first); + prev = *first; + while (prev) { + next = prev->next; + xhci_segment_free(xhci, prev); + prev = next; + } return -ENOMEM; } xhci_link_segments(xhci, prev, next, type); @@ -258,7 +263,7 @@ return ring; fail: - xhci_ring_free(xhci, ring); + kfree(ring); return NULL; } @@ -1245,6 +1250,8 @@ static unsigned int xhci_parse_microframe_interval(struct usb_device *udev, struct usb_host_endpoint *ep) { + if (ep->desc.bInterval == 0) + return 0; return xhci_microframes_to_exponent(udev, ep, ep->desc.bInterval, 0, 15); } @@ -1436,15 +1443,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) */ @@ -1452,17 +1461,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)); @@ -1772,6 +1780,7 @@ { struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); struct dev_info *dev_info, *next; + struct xhci_cd *cur_cd, *next_cd; unsigned long flags; int size; int i, j, num_ports; @@ -1795,6 +1804,11 @@ xhci_ring_free(xhci, xhci->cmd_ring); xhci->cmd_ring = NULL; xhci_dbg(xhci, "Freed command ring\n"); + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + } for (i = 1; i < MAX_HC_SLOTS; ++i) xhci_free_virt_device(xhci, i); @@ -1833,6 +1847,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; @@ -1851,6 +1868,7 @@ } } +no_bw: xhci->num_usb2_ports = 0; xhci->num_usb3_ports = 0; xhci->num_active_eps = 0; @@ -2262,6 +2280,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++) { @@ -2450,8 +2471,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-3.5.0.orig/drivers/usb/host/xhci.h +++ linux-3.5.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) @@ -1256,6 +1260,16 @@ union xhci_trb *last_trb; }; +/* xHCI command default timeout value */ +#define XHCI_CMD_DEFAULT_TIMEOUT (5 * HZ) + +/* command descriptor */ +struct xhci_cd { + struct list_head cancel_cmd_list; + struct xhci_command *command; + union xhci_trb *cmd_trb; +}; + struct xhci_dequeue_state { struct xhci_segment *new_deq_seg; union xhci_trb *new_deq_ptr; @@ -1421,6 +1435,11 @@ /* data structures */ struct xhci_device_context_array *dcbaa; struct xhci_ring *cmd_ring; + unsigned int cmd_ring_state; +#define CMD_RING_STATE_RUNNING (1 << 0) +#define CMD_RING_STATE_ABORTED (1 << 1) +#define CMD_RING_STATE_STOPPED (1 << 2) + struct list_head cancel_cmd_list; unsigned int cmd_ring_reserved_trbs; struct xhci_ring *event_ring; struct xhci_erst erst; @@ -1494,6 +1513,9 @@ #define XHCI_TRUST_TX_LENGTH (1 << 10) #define XHCI_LPM_SUPPORT (1 << 11) #define XHCI_INTEL_HOST (1 << 12) +#define XHCI_SPURIOUS_REBOOT (1 << 13) +#define XHCI_COMP_MODE_QUIRK (1 << 14) +#define XHCI_AVOID_BEI (1 << 15) unsigned int num_active_eps; unsigned int limit_active_eps; /* There are two roothubs to keep track of bus suspend info for */ @@ -1510,6 +1532,11 @@ unsigned sw_lpm_support:1; /* support xHCI 1.0 spec USB2 hardware LPM */ unsigned hw_lpm_support:1; + /* Compliance Mode Recovery Data */ + struct timer_list comp_mode_recovery_timer; + u32 port_status_u0; +/* Compliance Mode Timer Triggered every 2 seconds */ +#define COMP_MODE_RCVRY_MSECS 2000 }; /* convert between an HCD pointer and the corresponding EHCI_HCD */ @@ -1537,6 +1564,8 @@ dev_err(xhci_to_hcd(xhci)->self.controller , fmt , ## args) #define xhci_warn(xhci, fmt, args...) \ dev_warn(xhci_to_hcd(xhci)->self.controller , fmt , ## args) +#define xhci_warn_ratelimited(xhci, fmt, args...) \ + dev_warn_ratelimited(xhci_to_hcd(xhci)->self.controller , fmt , ## args) /* TODO: copied from ehci.h - can be refactored? */ /* xHCI spec says all registers are little endian */ @@ -1695,6 +1724,8 @@ /* xHCI host controller glue */ typedef void (*xhci_get_quirks_t)(struct device *, struct xhci_hcd *); +int handshake(struct xhci_hcd *xhci, void __iomem *ptr, + u32 mask, u32 done, int usec); void xhci_quiesce(struct xhci_hcd *xhci); int xhci_halt(struct xhci_hcd *xhci); int xhci_reset(struct xhci_hcd *xhci); @@ -1785,6 +1816,8 @@ unsigned int slot_id, unsigned int ep_index, struct xhci_dequeue_state *deq_state); void xhci_stop_endpoint_command_watchdog(unsigned long arg); +int xhci_cancel_cmd(struct xhci_hcd *xhci, struct xhci_command *command, + union xhci_trb *cmd_trb); void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id, unsigned int ep_index, unsigned int stream_id); --- linux-3.5.0.orig/drivers/usb/host/ehci-pci.c +++ linux-3.5.0/drivers/usb/host/ehci-pci.c @@ -362,7 +362,8 @@ pdev->vendor == PCI_VENDOR_ID_INTEL && (pdev->device == 0x1E26 || pdev->device == 0x8C2D || - pdev->device == 0x8C26); + pdev->device == 0x8C26 || + pdev->device == 0x9C26); } static void ehci_enable_xhci_companion(void) --- linux-3.5.0.orig/drivers/usb/host/xhci-ring.c +++ linux-3.5.0/drivers/usb/host/xhci-ring.c @@ -145,29 +145,37 @@ */ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) { - union xhci_trb *next; unsigned long long addr; ring->deq_updates++; - /* If this is not event ring, there is one more usable TRB */ + /* + * If this is not event ring, and the dequeue pointer + * is not on a link TRB, there is one more usable TRB + */ if (ring->type != TYPE_EVENT && !last_trb(xhci, ring, ring->deq_seg, ring->dequeue)) ring->num_trbs_free++; - next = ++(ring->dequeue); - /* Update the dequeue pointer further if that was a link TRB or we're at - * the end of an event ring segment (which doesn't have link TRBS) - */ - while (last_trb(xhci, ring, ring->deq_seg, next)) { - if (ring->type == TYPE_EVENT && last_trb_on_last_seg(xhci, - ring, ring->deq_seg, next)) { - ring->cycle_state = (ring->cycle_state ? 0 : 1); - } - ring->deq_seg = ring->deq_seg->next; - ring->dequeue = ring->deq_seg->trbs; - next = ring->dequeue; - } + do { + /* + * Update the dequeue pointer further if that was a link TRB or + * we're at the end of an event ring segment (which doesn't have + * link TRBS) + */ + if (last_trb(xhci, ring, ring->deq_seg, ring->dequeue)) { + if (ring->type == TYPE_EVENT && + last_trb_on_last_seg(xhci, ring, + ring->deq_seg, ring->dequeue)) { + ring->cycle_state = (ring->cycle_state ? 0 : 1); + } + ring->deq_seg = ring->deq_seg->next; + ring->dequeue = ring->deq_seg->trbs; + } else { + ring->dequeue++; + } + } while (last_trb(xhci, ring, ring->deq_seg, ring->dequeue)); + addr = (unsigned long long) xhci_trb_virt_to_dma(ring->deq_seg, ring->dequeue); } @@ -272,12 +280,123 @@ /* Ring the host controller doorbell after placing a command on the ring */ void xhci_ring_cmd_db(struct xhci_hcd *xhci) { + if (!(xhci->cmd_ring_state & CMD_RING_STATE_RUNNING)) + return; + xhci_dbg(xhci, "// Ding dong!\n"); xhci_writel(xhci, DB_VALUE_HOST, &xhci->dba->doorbell[0]); /* Flush PCI posted writes */ xhci_readl(xhci, &xhci->dba->doorbell[0]); } +static int xhci_abort_cmd_ring(struct xhci_hcd *xhci) +{ + u64 temp_64; + int ret; + + xhci_dbg(xhci, "Abort command ring\n"); + + if (!(xhci->cmd_ring_state & CMD_RING_STATE_RUNNING)) { + xhci_dbg(xhci, "The command ring isn't running, " + "Have the command ring been stopped?\n"); + return 0; + } + + temp_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + if (!(temp_64 & CMD_RING_RUNNING)) { + xhci_dbg(xhci, "Command ring had been stopped\n"); + return 0; + } + xhci->cmd_ring_state = CMD_RING_STATE_ABORTED; + xhci_write_64(xhci, temp_64 | CMD_RING_ABORT, + &xhci->op_regs->cmd_ring); + + /* Section 4.6.1.2 of xHCI 1.0 spec says software should + * time the completion od all xHCI commands, including + * the Command Abort operation. If software doesn't see + * CRR negated in a timely manner (e.g. longer than 5 + * seconds), then it should assume that the there are + * larger problems with the xHC and assert HCRST. + */ + ret = handshake(xhci, &xhci->op_regs->cmd_ring, + CMD_RING_RUNNING, 0, 5 * 1000 * 1000); + if (ret < 0) { + xhci_err(xhci, "Stopped the command ring failed, " + "maybe the host is dead\n"); + xhci->xhc_state |= XHCI_STATE_DYING; + xhci_quiesce(xhci); + xhci_halt(xhci); + return -ESHUTDOWN; + } + + return 0; +} + +static int xhci_queue_cd(struct xhci_hcd *xhci, + struct xhci_command *command, + union xhci_trb *cmd_trb) +{ + struct xhci_cd *cd; + cd = kzalloc(sizeof(struct xhci_cd), GFP_ATOMIC); + if (!cd) + return -ENOMEM; + INIT_LIST_HEAD(&cd->cancel_cmd_list); + + cd->command = command; + cd->cmd_trb = cmd_trb; + list_add_tail(&cd->cancel_cmd_list, &xhci->cancel_cmd_list); + + return 0; +} + +/* + * Cancel the command which has issue. + * + * Some commands may hang due to waiting for acknowledgement from + * usb device. It is outside of the xHC's ability to control and + * will cause the command ring is blocked. When it occurs software + * should intervene to recover the command ring. + * See Section 4.6.1.1 and 4.6.1.2 + */ +int xhci_cancel_cmd(struct xhci_hcd *xhci, struct xhci_command *command, + union xhci_trb *cmd_trb) +{ + int retval = 0; + unsigned long flags; + + spin_lock_irqsave(&xhci->lock, flags); + + if (xhci->xhc_state & XHCI_STATE_DYING) { + xhci_warn(xhci, "Abort the command ring," + " but the xHCI is dead.\n"); + retval = -ESHUTDOWN; + goto fail; + } + + /* queue the cmd desriptor to cancel_cmd_list */ + retval = xhci_queue_cd(xhci, command, cmd_trb); + if (retval) { + xhci_warn(xhci, "Queuing command descriptor failed.\n"); + goto fail; + } + + /* abort command ring */ + retval = xhci_abort_cmd_ring(xhci); + if (retval) { + xhci_err(xhci, "Abort command ring failed\n"); + if (unlikely(retval == -ESHUTDOWN)) { + spin_unlock_irqrestore(&xhci->lock, flags); + usb_hc_died(xhci_to_hcd(xhci)->primary_hcd); + xhci_dbg(xhci, "xHCI host controller is dead.\n"); + return retval; + } + } + +fail: + spin_unlock_irqrestore(&xhci->lock, flags); + return retval; +} + void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id, unsigned int ep_index, @@ -1051,6 +1170,20 @@ } } +/* Complete the command and detele it from the devcie's command queue. + */ +static void xhci_complete_cmd_in_cmd_wait_list(struct xhci_hcd *xhci, + struct xhci_command *command, u32 status) +{ + command->status = status; + list_del(&command->cmd_list); + if (command->completion) + complete(command->completion); + else + xhci_free_command(xhci, command); +} + + /* Check to see if a command in the device's command queue matches this one. * Signal the completion or free the command, and return 1. Return 0 if the * completed command isn't at the head of the command list. @@ -1069,15 +1202,155 @@ if (xhci->cmd_ring->dequeue != command->command_trb) return 0; - command->status = GET_COMP_CODE(le32_to_cpu(event->status)); - list_del(&command->cmd_list); - if (command->completion) - complete(command->completion); - else - xhci_free_command(xhci, command); + xhci_complete_cmd_in_cmd_wait_list(xhci, command, + GET_COMP_CODE(le32_to_cpu(event->status))); return 1; } +/* + * Finding the command trb need to be cancelled and modifying it to + * NO OP command. And if the command is in device's command wait + * list, finishing and freeing it. + * + * If we can't find the command trb, we think it had already been + * executed. + */ +static void xhci_cmd_to_noop(struct xhci_hcd *xhci, struct xhci_cd *cur_cd) +{ + struct xhci_segment *cur_seg; + union xhci_trb *cmd_trb; + u32 cycle_state; + + if (xhci->cmd_ring->dequeue == xhci->cmd_ring->enqueue) + return; + + /* find the current segment of command ring */ + cur_seg = find_trb_seg(xhci->cmd_ring->first_seg, + xhci->cmd_ring->dequeue, &cycle_state); + + if (!cur_seg) { + xhci_warn(xhci, "Command ring mismatch, dequeue = %p %llx (dma)\n", + xhci->cmd_ring->dequeue, + (unsigned long long) + xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg, + xhci->cmd_ring->dequeue)); + xhci_debug_ring(xhci, xhci->cmd_ring); + xhci_dbg_ring_ptrs(xhci, xhci->cmd_ring); + return; + } + + /* find the command trb matched by cd from command ring */ + for (cmd_trb = xhci->cmd_ring->dequeue; + cmd_trb != xhci->cmd_ring->enqueue; + next_trb(xhci, xhci->cmd_ring, &cur_seg, &cmd_trb)) { + /* If the trb is link trb, continue */ + if (TRB_TYPE_LINK_LE32(cmd_trb->generic.field[3])) + continue; + + if (cur_cd->cmd_trb == cmd_trb) { + + /* If the command in device's command list, we should + * finish it and free the command structure. + */ + if (cur_cd->command) + xhci_complete_cmd_in_cmd_wait_list(xhci, + cur_cd->command, COMP_CMD_STOP); + + /* get cycle state from the origin command trb */ + cycle_state = le32_to_cpu(cmd_trb->generic.field[3]) + & TRB_CYCLE; + + /* modify the command trb to NO OP command */ + cmd_trb->generic.field[0] = 0; + cmd_trb->generic.field[1] = 0; + cmd_trb->generic.field[2] = 0; + cmd_trb->generic.field[3] = cpu_to_le32( + TRB_TYPE(TRB_CMD_NOOP) | cycle_state); + break; + } + } +} + +static void xhci_cancel_cmd_in_cd_list(struct xhci_hcd *xhci) +{ + struct xhci_cd *cur_cd, *next_cd; + + if (list_empty(&xhci->cancel_cmd_list)) + return; + + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + xhci_cmd_to_noop(xhci, cur_cd); + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + } +} + +/* + * traversing the cancel_cmd_list. If the command descriptor according + * to cmd_trb is found, the function free it and return 1, otherwise + * return 0. + */ +static int xhci_search_cmd_trb_in_cd_list(struct xhci_hcd *xhci, + union xhci_trb *cmd_trb) +{ + struct xhci_cd *cur_cd, *next_cd; + + if (list_empty(&xhci->cancel_cmd_list)) + return 0; + + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + if (cur_cd->cmd_trb == cmd_trb) { + if (cur_cd->command) + xhci_complete_cmd_in_cmd_wait_list(xhci, + cur_cd->command, COMP_CMD_STOP); + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + return 1; + } + } + + return 0; +} + +/* + * If the cmd_trb_comp_code is COMP_CMD_ABORT, we just check whether the + * trb pointed by the command ring dequeue pointer is the trb we want to + * cancel or not. And if the cmd_trb_comp_code is COMP_CMD_STOP, we will + * traverse the cancel_cmd_list to trun the all of the commands according + * to command descriptor to NO-OP trb. + */ +static int handle_stopped_cmd_ring(struct xhci_hcd *xhci, + int cmd_trb_comp_code) +{ + int cur_trb_is_good = 0; + + /* Searching the cmd trb pointed by the command ring dequeue + * pointer in command descriptor list. If it is found, free it. + */ + cur_trb_is_good = xhci_search_cmd_trb_in_cd_list(xhci, + xhci->cmd_ring->dequeue); + + if (cmd_trb_comp_code == COMP_CMD_ABORT) + xhci->cmd_ring_state = CMD_RING_STATE_STOPPED; + else if (cmd_trb_comp_code == COMP_CMD_STOP) { + /* traversing the cancel_cmd_list and canceling + * the command according to command descriptor + */ + xhci_cancel_cmd_in_cd_list(xhci); + + xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; + /* + * ring command ring doorbell again to restart the + * command ring + */ + if (xhci->cmd_ring->dequeue != xhci->cmd_ring->enqueue) + xhci_ring_cmd_db(xhci); + } + return cur_trb_is_good; +} + static void handle_cmd_completion(struct xhci_hcd *xhci, struct xhci_event_cmd *event) { @@ -1103,6 +1376,22 @@ xhci->error_bitmask |= 1 << 5; return; } + + if ((GET_COMP_CODE(le32_to_cpu(event->status)) == COMP_CMD_ABORT) || + (GET_COMP_CODE(le32_to_cpu(event->status)) == COMP_CMD_STOP)) { + /* If the return value is 0, we think the trb pointed by + * command ring dequeue pointer is a good trb. The good + * trb means we don't want to cancel the trb, but it have + * been stopped by host. So we should handle it normally. + * Otherwise, driver should invoke inc_deq() and return. + */ + if (handle_stopped_cmd_ring(xhci, + GET_COMP_CODE(le32_to_cpu(event->status)))) { + inc_deq(xhci, xhci->cmd_ring); + return; + } + } + switch (le32_to_cpu(xhci->cmd_ring->dequeue->generic.field[3]) & TRB_TYPE_BITMASK) { case TRB_TYPE(TRB_ENABLE_SLOT): @@ -1409,7 +1698,7 @@ faked_port_index + 1); if (slot_id && xhci->devs[slot_id]) xhci_ring_device(xhci, slot_id); - if (bus_state->port_remote_wakeup && (1 << faked_port_index)) { + if (bus_state->port_remote_wakeup & (1 << faked_port_index)) { bus_state->port_remote_wakeup &= ~(1 << faked_port_index); xhci_test_and_clear_bit(xhci, port_array, @@ -1436,6 +1725,15 @@ if (bogus_port_status) return; + /* + * xHCI port-status-change events occur when the "or" of all the + * status-change bits in the portsc register changes from 0 to 1. + * New status changes won't cause an event if any other change + * bits are still set. When an event occurs, switch over to + * polling to avoid losing status changes. + */ + xhci_dbg(xhci, "%s: starting port polling.\n", __func__); + set_bit(HCD_FLAG_POLL_RH, &hcd->flags); spin_unlock(&xhci->lock); /* Pass this up to the core */ usb_hcd_poll_rh_status(hcd); @@ -1729,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; @@ -1762,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; @@ -1798,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; } @@ -1843,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; @@ -1901,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) @@ -1929,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; @@ -1982,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); @@ -2068,13 +2366,13 @@ * 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; else - xhci_warn(xhci, "WARN Successful completion on short TX: " - "needs XHCI_TRUST_TX_LENGTH quirk?\n"); + xhci_warn_ratelimited(xhci, + "WARN Successful completion on short TX: needs XHCI_TRUST_TX_LENGTH quirk?\n"); case COMP_SHORT_TX: break; case COMP_STOP: @@ -2161,14 +2459,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 " @@ -2289,6 +2594,8 @@ (trb_comp_code != COMP_STALL && trb_comp_code != COMP_BABBLE)) xhci_urb_free_priv(xhci, urb_priv); + else + kfree(urb_priv); usb_hcd_unlink_urb_from_ep(bus_to_hcd(urb->dev->bus), urb); if ((urb->actual_length != urb->transfer_buffer_length && @@ -2780,11 +3087,11 @@ } /* - * For xHCI 1.0 host controllers, TD size is the number of packets remaining in - * the TD (*not* including this TRB). + * For xHCI 1.0 host controllers, TD size is the number of max packet sized + * packets remaining in the TD (*not* including this TRB). * * Total TD packet count = total_packet_count = - * roundup(TD size in bytes / wMaxPacketSize) + * DIV_ROUND_UP(TD size in bytes / wMaxPacketSize) * * Packets transferred up to and including this TRB = packets_transferred = * rounddown(total bytes transferred including this TRB / wMaxPacketSize) @@ -2792,24 +3099,27 @@ * TD size = total_packet_count - packets_transferred * * It must fit in bits 21:17, so it can't be bigger than 31. + * The last TRB in a TD must have the TD size set to zero. */ - static u32 xhci_v1_0_td_remainder(int running_total, int trb_buff_len, - unsigned int total_packet_count, struct urb *urb) + unsigned int total_packet_count, struct urb *urb, + unsigned int num_trbs_left) { int packets_transferred; /* One TRB with a zero-length data packet. */ - if (running_total == 0 && trb_buff_len == 0) + if (num_trbs_left == 0 || (running_total == 0 && trb_buff_len == 0)) return 0; /* All the TRB queueing functions don't count the current TRB in * running_total. */ packets_transferred = (running_total + trb_buff_len) / - usb_endpoint_maxp(&urb->ep->desc); + GET_MAX_PACKET(usb_endpoint_maxp(&urb->ep->desc)); - return xhci_td_remainder(total_packet_count - packets_transferred); + if ((total_packet_count - packets_transferred) > 31) + return 31 << 17; + return (total_packet_count - packets_transferred) << 17; } static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags, @@ -2836,7 +3146,7 @@ num_trbs = count_sg_trbs_needed(xhci, urb); num_sgs = urb->num_mapped_sgs; - total_packet_count = roundup(urb->transfer_buffer_length, + total_packet_count = DIV_ROUND_UP(urb->transfer_buffer_length, usb_endpoint_maxp(&urb->ep->desc)); trb_buff_len = prepare_transfer(xhci, xhci->devs[slot_id], @@ -2919,7 +3229,8 @@ running_total); } else { remainder = xhci_v1_0_td_remainder(running_total, - trb_buff_len, total_packet_count, urb); + trb_buff_len, total_packet_count, urb, + num_trbs - 1); } length_field = TRB_LEN(trb_buff_len) | remainder | @@ -3027,7 +3338,7 @@ start_cycle = ep_ring->cycle_state; running_total = 0; - total_packet_count = roundup(urb->transfer_buffer_length, + total_packet_count = DIV_ROUND_UP(urb->transfer_buffer_length, usb_endpoint_maxp(&urb->ep->desc)); /* How much data is in the first TRB? */ addr = (u64) urb->transfer_dma; @@ -3073,7 +3384,8 @@ running_total); } else { remainder = xhci_v1_0_td_remainder(running_total, - trb_buff_len, total_packet_count, urb); + trb_buff_len, total_packet_count, urb, + num_trbs - 1); } length_field = TRB_LEN(trb_buff_len) | remainder | @@ -3336,8 +3648,9 @@ addr = start_addr + urb->iso_frame_desc[i].offset; td_len = urb->iso_frame_desc[i].length; td_remain_len = td_len; - total_packet_count = roundup(td_len, - usb_endpoint_maxp(&urb->ep->desc)); + total_packet_count = DIV_ROUND_UP(td_len, + GET_MAX_PACKET( + usb_endpoint_maxp(&urb->ep->desc))); /* A zero-length transfer still involves at least one packet. */ if (total_packet_count == 0) total_packet_count++; @@ -3359,9 +3672,11 @@ td = urb_priv->td[i]; for (j = 0; j < trbs_per_td; j++) { u32 remainder = 0; - field = TRB_TBC(burst_count) | TRB_TLBPC(residue); + field = 0; if (first_trb) { + field = TRB_TBC(burst_count) | + TRB_TLBPC(residue); /* Queue the isoc TRB */ field |= TRB_TYPE(TRB_ISOC); /* Assume URB_ISO_ASAP is set */ @@ -3392,7 +3707,9 @@ } else { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; - if (xhci->hci_version == 0x100) { + if (xhci->hci_version == 0x100 && + !(xhci->quirks & + XHCI_AVOID_BEI)) { /* Set BEI bit except for the last td */ if (i < num_tds - 1) field |= TRB_BEI; @@ -3413,7 +3730,8 @@ } else { remainder = xhci_v1_0_td_remainder( running_total, trb_buff_len, - total_packet_count, urb); + total_packet_count, urb, + (trbs_per_td - j - 1)); } length_field = TRB_LEN(trb_buff_len) | remainder | --- linux-3.5.0.orig/drivers/usb/host/ohci-at91.c +++ linux-3.5.0/drivers/usb/host/ohci-at91.c @@ -467,7 +467,8 @@ /* From the GPIO notifying the over-current situation, find * out the corresponding port */ at91_for_each_port(port) { - if (gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { + if (gpio_is_valid(pdata->overcurrent_pin[port]) && + gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { gpio = pdata->overcurrent_pin[port]; break; } @@ -570,6 +571,16 @@ if (pdata) { at91_for_each_port(i) { + /* + * do not configure PIO if not in relation with + * real USB port on board + */ + if (i >= pdata->ports) { + pdata->vbus_pin[i] = -EINVAL; + pdata->overcurrent_pin[i] = -EINVAL; + break; + } + if (!gpio_is_valid(pdata->vbus_pin[i])) continue; gpio = pdata->vbus_pin[i]; --- linux-3.5.0.orig/drivers/usb/host/ehci-q.c +++ linux-3.5.0/drivers/usb/host/ehci-q.c @@ -128,9 +128,17 @@ else { qtd = list_entry (qh->qtd_list.next, struct ehci_qtd, qtd_list); - /* first qtd may already be partially processed */ - if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) + /* + * first qtd may already be partially processed. + * If we come here during unlink, the QH overlay region + * might have reference to the just unlinked qtd. The + * qtd is updated in qh_completions(). Update the QH + * overlay here. + */ + if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) { + qh->hw->hw_qtd_next = qtd->hw_next; qtd = NULL; + } } if (qtd) --- linux-3.5.0.orig/drivers/usb/host/xhci.c +++ linux-3.5.0/drivers/usb/host/xhci.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "xhci.h" @@ -51,7 +52,7 @@ * handshake done). There are two failure modes: "usec" have passed (major * hardware flakeout), or the register reads as all-ones (hardware removed). */ -static int handshake(struct xhci_hcd *xhci, void __iomem *ptr, +int handshake(struct xhci_hcd *xhci, void __iomem *ptr, u32 mask, u32 done, int usec) { u32 result; @@ -104,9 +105,10 @@ ret = handshake(xhci, &xhci->op_regs->status, STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC); - if (!ret) + if (!ret) { xhci->xhc_state |= XHCI_STATE_HALTED; - else + xhci->cmd_ring_state = CMD_RING_STATE_STOPPED; + } else xhci_warn(xhci, "Host not halted after %u microseconds.\n", XHCI_MAX_HALT_USEC); return ret; @@ -166,7 +168,7 @@ xhci_writel(xhci, command, &xhci->op_regs->command); ret = handshake(xhci, &xhci->op_regs->command, - CMD_RESET, 0, 250 * 1000); + CMD_RESET, 0, 10 * 1000 * 1000); if (ret) return ret; @@ -175,7 +177,8 @@ * xHCI cannot write to any doorbells or operational registers other * than status until the "Controller Not Ready" flag is cleared. */ - ret = handshake(xhci, &xhci->op_regs->status, STS_CNR, 0, 250 * 1000); + ret = handshake(xhci, &xhci->op_regs->status, + STS_CNR, 0, 10 * 1000 * 1000); for (i = 0; i < 2; ++i) { xhci->bus_state[i].port_c_suspend = 0; @@ -347,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) @@ -368,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); @@ -397,6 +401,98 @@ #endif +static void compliance_mode_recovery(unsigned long arg) +{ + struct xhci_hcd *xhci; + struct usb_hcd *hcd; + u32 temp; + int i; + + xhci = (struct xhci_hcd *)arg; + + for (i = 0; i < xhci->num_usb3_ports; i++) { + temp = xhci_readl(xhci, xhci->usb3_ports[i]); + if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) { + /* + * Compliance Mode Detected. Letting USB Core + * handle the Warm Reset + */ + xhci_dbg(xhci, "Compliance Mode Detected->Port %d!\n", + i + 1); + xhci_dbg(xhci, "Attempting Recovery routine!\n"); + hcd = xhci->shared_hcd; + + if (hcd->state == HC_STATE_SUSPENDED) + usb_hcd_resume_root_hub(hcd); + + usb_hcd_poll_rh_status(hcd); + } + } + + if (xhci->port_status_u0 != ((1 << xhci->num_usb3_ports)-1)) + mod_timer(&xhci->comp_mode_recovery_timer, + jiffies + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS)); +} + +/* + * Quirk to work around issue generated by the SN65LVPE502CP USB3.0 re-driver + * that causes ports behind that hardware to enter compliance mode sometimes. + * The quirk creates a timer that polls every 2 seconds the link state of + * each host controller's port and recovers it by issuing a Warm reset + * if Compliance mode is detected, otherwise the port will become "dead" (no + * device connections or disconnections will be detected anymore). Becasue no + * status event is generated when entering compliance mode (per xhci spec), + * this quirk is needed on systems that have the failing hardware installed. + */ +static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci) +{ + xhci->port_status_u0 = 0; + init_timer(&xhci->comp_mode_recovery_timer); + + xhci->comp_mode_recovery_timer.data = (unsigned long) xhci; + xhci->comp_mode_recovery_timer.function = compliance_mode_recovery; + xhci->comp_mode_recovery_timer.expires = jiffies + + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS); + + set_timer_slack(&xhci->comp_mode_recovery_timer, + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS)); + add_timer(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Initialized.\n"); +} + +/* + * This function identifies the systems that have installed the SN65LVPE502CP + * USB3.0 re-driver and that need the Compliance Mode Quirk. + * Systems: + * Vendor: Hewlett-Packard -> System Models: Z420, Z620 and Z820 + */ +static bool compliance_mode_recovery_timer_quirk_check(void) +{ + const char *dmi_product_name, *dmi_sys_vendor; + + dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME); + dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR); + if (!dmi_product_name || !dmi_sys_vendor) + return false; + + if (!(strstr(dmi_sys_vendor, "Hewlett-Packard"))) + return false; + + if (strstr(dmi_product_name, "Z420") || + strstr(dmi_product_name, "Z620") || + strstr(dmi_product_name, "Z820") || + strstr(dmi_product_name, "Z1 Workstation")) + return true; + + return false; +} + +static int xhci_all_ports_seen_u0(struct xhci_hcd *xhci) +{ + return (xhci->port_status_u0 == ((1 << xhci->num_usb3_ports)-1)); +} + + /* * Initialize memory for HCD and xHC (one-time init). * @@ -420,6 +516,12 @@ retval = xhci_mem_init(xhci, GFP_KERNEL); xhci_dbg(xhci, "Finished xhci_init\n"); + /* Initializing Compliance Mode Recovery Data If Needed */ + if (compliance_mode_recovery_timer_quirk_check()) { + xhci->quirks |= XHCI_COMP_MODE_QUIRK; + compliance_mode_recovery_timer_init(xhci); + } + return retval; } @@ -484,6 +586,7 @@ return -ENODEV; } xhci->shared_hcd->state = HC_STATE_RUNNING; + xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; if (xhci->quirks & XHCI_NEC_HOST) xhci_ring_cmd_db(xhci); @@ -628,6 +731,11 @@ del_timer_sync(&xhci->event_ring_timer); #endif + /* Deleting Compliance Mode Recovery Timer */ + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && + (!(xhci_all_ports_seen_u0(xhci)))) + del_timer_sync(&xhci->comp_mode_recovery_timer); + if (xhci->quirks & XHCI_AMD_PLL_FIX) usb_amd_dev_put(); @@ -658,6 +766,9 @@ { struct xhci_hcd *xhci = hcd_to_xhci(hcd); + if (xhci->quirks & XHCI_SPURIOUS_REBOOT) + usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); + spin_lock_irq(&xhci->lock); xhci_halt(xhci); spin_unlock_irq(&xhci->lock); @@ -770,6 +881,11 @@ struct usb_hcd *hcd = xhci_to_hcd(xhci); u32 command; + /* Don't poll the roothubs on bus suspend. */ + xhci_dbg(xhci, "%s: stopping port polling.\n", __func__); + clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); + del_timer_sync(&hcd->rh_timer); + spin_lock_irq(&xhci->lock); clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); clear_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags); @@ -781,7 +897,7 @@ command &= ~CMD_RUN; xhci_writel(xhci, command, &xhci->op_regs->command); if (handshake(xhci, &xhci->op_regs->status, - STS_HALT, STS_HALT, 100*100)) { + STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC)) { xhci_warn(xhci, "WARN: xHC CMD_RUN timeout\n"); spin_unlock_irq(&xhci->lock); return -ETIMEDOUT; @@ -802,6 +918,16 @@ } spin_unlock_irq(&xhci->lock); + /* + * Deleting Compliance Mode Recovery Timer because the xHCI Host + * is about to be suspended. + */ + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && + (!(xhci_all_ports_seen_u0(xhci)))) { + del_timer_sync(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Deleted!\n"); + } + /* step 5: remove core well power */ /* synchronize irq when using MSI-X */ xhci_msix_sync_irqs(xhci); @@ -821,6 +947,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. @@ -858,6 +985,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); @@ -900,6 +1034,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) { @@ -934,6 +1070,21 @@ usb_hcd_resume_root_hub(hcd); usb_hcd_resume_root_hub(xhci->shared_hcd); } + + /* + * If system is subject to the Quirk, Compliance Mode Timer needs to + * be re-initialized Always after a system resume. Ports are subject + * to suffer the Compliance Mode issue again. It doesn't matter if + * ports have entered previously to U0 before system's suspension. + */ + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running) + compliance_mode_recovery_timer_init(xhci); + + /* Re-enable port polling. */ + xhci_dbg(xhci, "%s: starting port polling.\n", __func__); + set_bit(HCD_FLAG_POLL_RH, &hcd->flags); + usb_hcd_poll_rh_status(hcd); + return retval; } #endif /* CONFIG_PM */ @@ -2123,7 +2274,7 @@ static bool xhci_is_sync_in_ep(unsigned int ep_type) { - return (ep_type == ISOC_IN_EP || ep_type != INT_IN_EP); + return (ep_type == ISOC_IN_EP || ep_type == INT_IN_EP); } static unsigned int xhci_get_ss_bw_consumed(struct xhci_bw_info *ep_bw) @@ -2396,6 +2547,7 @@ struct completion *cmd_completion; u32 *cmd_status; struct xhci_virt_device *virt_dev; + union xhci_trb *cmd_trb; spin_lock_irqsave(&xhci->lock, flags); virt_dev = xhci->devs[udev->slot_id]; @@ -2441,6 +2593,7 @@ } init_completion(cmd_completion); + cmd_trb = xhci->cmd_ring->dequeue; if (!ctx_change) ret = xhci_queue_configure_endpoint(xhci, in_ctx->dma, udev->slot_id, must_succeed); @@ -2462,14 +2615,17 @@ /* Wait for the configure endpoint command to complete */ timeleft = wait_for_completion_interruptible_timeout( cmd_completion, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for %s command\n", timeleft == 0 ? "Timeout" : "Signal", ctx_change == 0 ? "configure endpoint" : "evaluate context"); - /* FIXME cancel the configure endpoint command */ + /* cancel the configure endpoint command */ + ret = xhci_cancel_cmd(xhci, command, cmd_trb); + if (ret < 0) + return ret; return -ETIME; } @@ -3418,8 +3574,10 @@ unsigned long flags; int timeleft; int ret; + union xhci_trb *cmd_trb; spin_lock_irqsave(&xhci->lock, flags); + cmd_trb = xhci->cmd_ring->dequeue; ret = xhci_queue_slot_control(xhci, TRB_ENABLE_SLOT, 0); if (ret) { spin_unlock_irqrestore(&xhci->lock, flags); @@ -3431,12 +3589,12 @@ /* XXX: how much time for xHC slot assignment? */ timeleft = wait_for_completion_interruptible_timeout(&xhci->addr_dev, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for a slot\n", timeleft == 0 ? "Timeout" : "Signal"); - /* FIXME cancel the enable slot request */ - return 0; + /* cancel the enable slot request */ + return xhci_cancel_cmd(xhci, NULL, cmd_trb); } if (!xhci->slot_id) { @@ -3497,6 +3655,7 @@ struct xhci_slot_ctx *slot_ctx; struct xhci_input_control_ctx *ctrl_ctx; u64 temp_64; + union xhci_trb *cmd_trb; if (!udev->slot_id) { xhci_dbg(xhci, "Bad Slot ID %d\n", udev->slot_id); @@ -3535,6 +3694,7 @@ xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2); spin_lock_irqsave(&xhci->lock, flags); + cmd_trb = xhci->cmd_ring->dequeue; ret = xhci_queue_address_device(xhci, virt_dev->in_ctx->dma, udev->slot_id); if (ret) { @@ -3547,7 +3707,7 @@ /* ctrl tx can take up to 5 sec; XXX: need more time for xHC? */ timeleft = wait_for_completion_interruptible_timeout(&xhci->addr_dev, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); /* FIXME: From section 4.3.4: "Software shall be responsible for timing * the SetAddress() "recovery interval" required by USB and aborting the * command on a timeout. @@ -3555,7 +3715,10 @@ if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for address device command\n", timeleft == 0 ? "Timeout" : "Signal"); - /* FIXME cancel the address device command */ + /* cancel the address device command */ + ret = xhci_cancel_cmd(xhci, NULL, cmd_trb); + if (ret < 0) + return ret; return -ETIME; } @@ -3878,7 +4041,7 @@ static unsigned long long xhci_service_interval_to_ns( struct usb_endpoint_descriptor *desc) { - return (1 << (desc->bInterval - 1)) * 125 * 1000; + return (1ULL << (desc->bInterval - 1)) * 125 * 1000; } static u16 xhci_get_timeout_no_hub_lpm(struct usb_device *udev, @@ -3999,7 +4162,7 @@ (xhci_service_interval_to_ns(desc) > timeout_ns)) timeout_ns = xhci_service_interval_to_ns(desc); - u2_del_ns = udev->bos->ss_cap->bU2DevExitLat * 1000; + u2_del_ns = le16_to_cpu(udev->bos->ss_cap->bU2DevExitLat) * 1000ULL; if (u2_del_ns > timeout_ns) timeout_ns = u2_del_ns; --- linux-3.5.0.orig/drivers/usb/host/xhci-plat.c +++ linux-3.5.0/drivers/usb/host/xhci-plat.c @@ -118,7 +118,7 @@ goto put_hcd; } - hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); + hcd->regs = ioremap_nocache(hcd->rsrc_start, hcd->rsrc_len); if (!hcd->regs) { dev_dbg(&pdev->dev, "error mapping memory\n"); ret = -EFAULT; --- linux-3.5.0.orig/drivers/usb/core/hcd-pci.c +++ linux-3.5.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-3.5.0.orig/drivers/usb/core/devices.c +++ linux-3.5.0/drivers/usb/core/devices.c @@ -624,7 +624,7 @@ /* print devices for all busses */ list_for_each_entry(bus, &usb_bus_list, bus_list) { /* recurse through all children of the root hub */ - if (!bus->root_hub) + if (!bus_to_hcd(bus)->rh_registered) continue; usb_lock_device(bus->root_hub); ret = usb_device_dump(&buf, &nbytes, &skip_bytes, ppos, --- linux-3.5.0.orig/drivers/usb/core/hcd.c +++ linux-3.5.0/drivers/usb/core/hcd.c @@ -1011,10 +1011,7 @@ if (retval) { dev_err (parent_dev, "can't register root hub for %s, %d\n", dev_name(&usb_dev->dev), retval); - } - mutex_unlock(&usb_bus_list_lock); - - if (retval == 0) { + } else { spin_lock_irq (&hcd_root_hub_lock); hcd->rh_registered = 1; spin_unlock_irq (&hcd_root_hub_lock); @@ -1023,6 +1020,7 @@ if (HCD_DEAD(hcd)) usb_hc_died (hcd); /* This time clean up */ } + mutex_unlock(&usb_bus_list_lock); return retval; } --- linux-3.5.0.orig/drivers/usb/core/message.c +++ linux-3.5.0/drivers/usb/core/message.c @@ -1174,6 +1174,8 @@ put_device(&dev->actconfig->interface[i]->dev); dev->actconfig->interface[i] = NULL; } + usb_unlocked_disable_lpm(dev); + usb_disable_ltm(dev); dev->actconfig = NULL; if (dev->state == USB_STATE_CONFIGURED) usb_set_device_state(dev, USB_STATE_ADDRESS); @@ -1791,42 +1793,22 @@ * installed, so that the xHCI driver can recalculate the U1/U2 * timeouts. */ - if (usb_disable_lpm(dev)) { + if (dev->actconfig && usb_disable_lpm(dev)) { dev_err(&dev->dev, "%s Failed to disable LPM\n.", __func__); mutex_unlock(hcd->bandwidth_mutex); return -ENOMEM; } ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL); if (ret < 0) { - usb_enable_lpm(dev); - mutex_unlock(hcd->bandwidth_mutex); - usb_autosuspend_device(dev); - goto free_interfaces; - } - - ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), - USB_REQ_SET_CONFIGURATION, 0, configuration, 0, - NULL, 0, USB_CTRL_SET_TIMEOUT); - if (ret < 0) { - /* All the old state is gone, so what else can we do? - * The device is probably useless now anyway. - */ - cp = NULL; - } - - dev->actconfig = cp; - if (!cp) { - usb_set_device_state(dev, USB_STATE_ADDRESS); - usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); - usb_enable_lpm(dev); + if (dev->actconfig) + usb_enable_lpm(dev); mutex_unlock(hcd->bandwidth_mutex); usb_autosuspend_device(dev); goto free_interfaces; } - mutex_unlock(hcd->bandwidth_mutex); - usb_set_device_state(dev, USB_STATE_CONFIGURED); - /* Initialize the new interface structures and the + /* + * Initialize the new interface structures and the * hc/hcd/usbcore interface/endpoint state. */ for (i = 0; i < nintf; ++i) { @@ -1870,12 +1852,43 @@ } kfree(new_interfaces); + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_CONFIGURATION, 0, configuration, 0, + NULL, 0, USB_CTRL_SET_TIMEOUT); + if (ret < 0 && cp) { + /* + * All the old state is gone, so what else can we do? + * The device is probably useless now anyway. + */ + usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); + for (i = 0; i < nintf; ++i) { + usb_disable_interface(dev, cp->interface[i], true); + put_device(&cp->interface[i]->dev); + cp->interface[i] = NULL; + } + cp = NULL; + } + + dev->actconfig = cp; + mutex_unlock(hcd->bandwidth_mutex); + + if (!cp) { + usb_set_device_state(dev, USB_STATE_ADDRESS); + + /* Leave LPM disabled while the device is unconfigured. */ + usb_autosuspend_device(dev); + return ret; + } + usb_set_device_state(dev, USB_STATE_CONFIGURED); + if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); /* Now that the interfaces are installed, re-enable LPM. */ usb_unlocked_enable_lpm(dev); + /* Enable LTM if it was turned off by usb_disable_device. */ + usb_enable_ltm(dev); /* Now that all the interfaces are set up, register them * to trigger binding of drivers to interfaces. probe() --- linux-3.5.0.orig/drivers/usb/core/hub.c +++ linux-3.5.0/drivers/usb/core/hub.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -81,7 +83,7 @@ u8 indicator[USB_MAXCHILDREN]; struct delayed_work leds; struct delayed_work init_work; - void **port_owners; + struct dev_state **port_owners; }; static inline int hub_is_superspeed(struct usb_device *hdev) @@ -728,13 +730,16 @@ int limit = 100; spin_lock_irqsave (&hub->tt.lock, flags); - while (--limit && !list_empty (&hub->tt.clear_list)) { + while (!list_empty(&hub->tt.clear_list)) { struct list_head *next; struct usb_tt_clear *clear; struct usb_device *hdev = hub->hdev; const struct hc_driver *drv; int status; + if (!hub->quiescing && --limit < 0) + break; + next = hub->tt.clear_list.next; clear = list_entry (next, struct usb_tt_clear, clear_list); list_del (&clear->clear_list); @@ -862,6 +867,60 @@ return ret; } +static int hub_set_port_link_state(struct usb_hub *hub, int port1, + unsigned int link_status) +{ + return set_port_feature(hub->hdev, + port1 | (link_status << 3), + USB_PORT_FEAT_LINK_STATE); +} + +/* + * If USB 3.0 ports are placed into the Disabled state, they will no longer + * detect any device connects or disconnects. This is generally not what the + * USB core wants, since it expects a disabled port to produce a port status + * change event when a new device connects. + * + * Instead, set the link state to Disabled, wait for the link to settle into + * that state, clear any change bits, and then put the port into the RxDetect + * state. + */ +static int hub_usb3_port_disable(struct usb_hub *hub, int port1) +{ + int ret; + int total_time; + u16 portchange, portstatus; + + if (!hub_is_superspeed(hub->hdev)) + return -EINVAL; + + ret = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_SS_DISABLED); + if (ret) { + dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n", + port1, ret); + return ret; + } + + /* Wait for the link to enter the disabled state. */ + for (total_time = 0; ; total_time += HUB_DEBOUNCE_STEP) { + ret = hub_port_status(hub, port1, &portstatus, &portchange); + if (ret < 0) + return ret; + + if ((portstatus & USB_PORT_STAT_LINK_STATE) == + USB_SS_PORT_LS_SS_DISABLED) + break; + if (total_time >= HUB_DEBOUNCE_TIMEOUT) + break; + msleep(HUB_DEBOUNCE_STEP); + } + if (total_time >= HUB_DEBOUNCE_TIMEOUT) + dev_warn(hub->intfdev, "Could not disable port %d after %d ms\n", + port1, total_time); + + return hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_RX_DETECT); +} + static int hub_port_disable(struct usb_hub *hub, int port1, int set_state) { struct usb_device *hdev = hub->hdev; @@ -870,8 +929,13 @@ if (hdev->children[port1-1] && set_state) usb_set_device_state(hdev->children[port1-1], USB_STATE_NOTATTACHED); - if (!hub->error && !hub_is_superspeed(hub->hdev)) - ret = clear_port_feature(hdev, port1, USB_PORT_FEAT_ENABLE); + if (!hub->error) { + if (hub_is_superspeed(hub->hdev)) + ret = hub_usb3_port_disable(hub, port1); + else + ret = clear_port_feature(hdev, port1, + USB_PORT_FEAT_ENABLE); + } if (ret) dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n", port1, ret); @@ -1199,7 +1263,7 @@ if (hub->has_indicators) cancel_delayed_work_sync(&hub->leds); if (hub->tt.hub) - cancel_work_sync(&hub->tt.clear_work); + flush_work_sync(&hub->tt.clear_work); } /* caller has locked the hub device */ @@ -1271,7 +1335,8 @@ hdev->children = kzalloc(hdev->maxchild * sizeof(struct usb_device *), GFP_KERNEL); - hub->port_owners = kzalloc(hdev->maxchild * sizeof(void *), GFP_KERNEL); + hub->port_owners = kzalloc(hdev->maxchild * sizeof(struct dev_state *), + GFP_KERNEL); if (!hdev->children || !hub->port_owners) { ret = -ENOMEM; goto fail; @@ -1649,7 +1714,7 @@ * to one of these "claimed" ports, the program will "own" the device. */ static int find_port_owner(struct usb_device *hdev, unsigned port1, - void ***ppowner) + struct dev_state ***ppowner) { if (hdev->state == USB_STATE_NOTATTACHED) return -ENODEV; @@ -1664,10 +1729,11 @@ } /* In the following three functions, the caller must hold hdev's lock */ -int usb_hub_claim_port(struct usb_device *hdev, unsigned port1, void *owner) +int usb_hub_claim_port(struct usb_device *hdev, unsigned port1, + struct dev_state *owner) { int rc; - void **powner; + struct dev_state **powner; rc = find_port_owner(hdev, port1, &powner); if (rc) @@ -1678,10 +1744,11 @@ return rc; } -int usb_hub_release_port(struct usb_device *hdev, unsigned port1, void *owner) +int usb_hub_release_port(struct usb_device *hdev, unsigned port1, + struct dev_state *owner) { int rc; - void **powner; + struct dev_state **powner; rc = find_port_owner(hdev, port1, &powner); if (rc) @@ -1692,10 +1759,10 @@ return rc; } -void usb_hub_release_all_ports(struct usb_device *hdev, void *owner) +void usb_hub_release_all_ports(struct usb_device *hdev, struct dev_state *owner) { int n; - void **powner; + struct dev_state **powner; n = find_port_owner(hdev, 1, &powner); if (n == 0) { @@ -2173,6 +2240,14 @@ /* Tell the world! */ announce_device(udev); + if (udev->serial) + add_device_randomness(udev->serial, strlen(udev->serial)); + if (udev->product) + add_device_randomness(udev->product, strlen(udev->product)); + if (udev->manufacturer) + add_device_randomness(udev->manufacturer, + strlen(udev->manufacturer)); + device_enable_async_suspend(&udev->dev); /* @@ -2218,6 +2293,10 @@ */ int usb_deauthorize_device(struct usb_device *usb_dev) { + char *product = NULL; + char *manufacturer = NULL; + char *serial = NULL; + usb_lock_device(usb_dev); if (usb_dev->authorized == 0) goto out_unauthorized; @@ -2225,11 +2304,12 @@ usb_dev->authorized = 0; usb_set_configuration(usb_dev, -1); - kfree(usb_dev->product); + product = usb_dev->product; + manufacturer = usb_dev->manufacturer; + serial = usb_dev->serial; + usb_dev->product = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->manufacturer); usb_dev->manufacturer = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->serial); usb_dev->serial = kstrdup("n/a (unauthorized)", GFP_KERNEL); usb_destroy_configuration(usb_dev); @@ -2237,6 +2317,12 @@ out_unauthorized: usb_unlock_device(usb_dev); + if (product || manufacturer || serial) { + synchronize_rcu(); + kfree(product); + kfree(manufacturer); + kfree(serial); + } return 0; } @@ -2244,6 +2330,9 @@ int usb_authorize_device(struct usb_device *usb_dev) { int result = 0, c; + char *product = NULL; + char *manufacturer = NULL; + char *serial = NULL; usb_lock_device(usb_dev); if (usb_dev->authorized == 1) @@ -2262,11 +2351,12 @@ goto error_device_descriptor; } - kfree(usb_dev->product); + product = usb_dev->product; + manufacturer = usb_dev->manufacturer; + serial = usb_dev->serial; + usb_dev->product = NULL; - kfree(usb_dev->manufacturer); usb_dev->manufacturer = NULL; - kfree(usb_dev->serial); usb_dev->serial = NULL; usb_dev->authorized = 1; @@ -2294,6 +2384,12 @@ error_autoresume: out_authorized: usb_unlock_device(usb_dev); // complements locktree + if (product || manufacturer || serial) { + synchronize_rcu(); + kfree(product); + kfree(manufacturer); + kfree(serial); + } return result; } @@ -2319,7 +2415,7 @@ #define HUB_SHORT_RESET_TIME 10 #define HUB_BH_RESET_TIME 50 #define HUB_LONG_RESET_TIME 200 -#define HUB_RESET_TIMEOUT 500 +#define HUB_RESET_TIMEOUT 800 static int hub_port_reset(struct usb_hub *hub, int port1, struct usb_device *udev, unsigned int delay, bool warm); @@ -2354,73 +2450,43 @@ if (ret < 0) return ret; - /* - * Some buggy devices require a warm reset to be issued even - * when the port appears not to be connected. + /* The port state is unknown until the reset completes. */ + if ((portstatus & USB_PORT_STAT_RESET)) + goto delay; + + 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 (!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 (!hub_is_superspeed(hub->hdev) && + (portchange & USB_PORT_STAT_C_CONNECTION)) + return -ENOTCONN; - /* if we`ve finished resetting, then break out of - * the loop - */ - if (!(portstatus & USB_PORT_STAT_RESET) && - (portstatus & USB_PORT_STAT_ENABLE)) { - if (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 (portchange & USB_PORT_STAT_C_BH_RESET) + if ((portstatus & USB_PORT_STAT_ENABLE)) { + 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; } +delay: /* switch to the long delay after two short delay failures */ if (delay_time >= 2 * HUB_SHORT_RESET_TIME) delay = HUB_LONG_RESET_TIME; @@ -2434,41 +2500,39 @@ } 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); - if (hcd->driver->reset_device) { - *status = hcd->driver->reset_device(hcd, udev); - if (*status < 0) { - dev_err(&udev->dev, "Cannot reset " - "HCD device state\n"); - break; - } - } + /* The xHC may think the device is already reset, + * so ignore the status. + */ + if (hcd->driver->reset_device) + hcd->driver->reset_device(hcd, udev); } /* FALL THROUGH */ case -ENOTCONN: case -ENODEV: clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_RESET); - /* FIXME need disconnect() for NOTATTACHED device */ - if (warm) { + if (hub_is_superspeed(hub->hdev)) { clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_BH_PORT_RESET); clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_PORT_LINK_STATE); - } else { + clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_CONNECTION); + } + if (udev) usb_set_device_state(udev, *status ? USB_STATE_NOTATTACHED : USB_STATE_DEFAULT); - } break; } } @@ -2478,18 +2542,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 */ @@ -2510,10 +2586,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, @@ -2527,7 +2626,7 @@ port1); done: - if (!warm) + if (!hub_is_superspeed(hub->hdev)) up_read(&ehci_cf_port_reset_rwsem); return status; @@ -2611,7 +2710,75 @@ return status; } +static bool usb_device_supports_ltm(struct usb_device *udev) +{ + if (udev->speed != USB_SPEED_SUPER || !udev->bos || !udev->bos->ss_cap) + return false; + return udev->bos->ss_cap->bmAttributes & USB_LTM_SUPPORT; +} + +int usb_disable_ltm(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + /* Check if the roothub and device supports LTM. */ + if (!usb_device_supports_ltm(hcd->self.root_hub) || + !usb_device_supports_ltm(udev)) + return 0; + + /* Clear Feature LTM Enable can only be sent if the device is + * configured. + */ + if (!udev->actconfig) + return 0; + + return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, + USB_DEVICE_LTM_ENABLE, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} +EXPORT_SYMBOL_GPL(usb_disable_ltm); + +void usb_enable_ltm(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + /* Check if the roothub and device supports LTM. */ + if (!usb_device_supports_ltm(hcd->self.root_hub) || + !usb_device_supports_ltm(udev)) + return; + + /* Set Feature LTM Enable can only be sent if the device is + * configured. + */ + if (!udev->actconfig) + return; + + usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_SET_FEATURE, USB_RECIP_DEVICE, + USB_DEVICE_LTM_ENABLE, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} +EXPORT_SYMBOL_GPL(usb_enable_ltm); + #ifdef CONFIG_USB_SUSPEND +/* + * usb_disable_function_remotewakeup - disable usb3.0 + * device's function remote wakeup + * @udev: target device + * + * Assume there's only one function on the USB 3.0 + * device and disable remote wake for the first + * interface. FIXME if the interface association + * descriptor shows there's more than one function. + */ +static int usb_disable_function_remotewakeup(struct usb_device *udev) +{ + return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_INTERFACE, + USB_INTRF_FUNC_SUSPEND, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} /* * usb_port_suspend - suspend a usb device's upstream port @@ -2706,6 +2873,11 @@ if (udev->usb2_hw_lpm_enabled == 1) usb_set_usb2_hardware_lpm(udev, 0); + if (usb_disable_ltm(udev)) { + dev_err(&udev->dev, "%s Failed to disable LTM before suspend\n.", + __func__); + return -ENOMEM; + } if (usb_unlocked_disable_lpm(udev)) { dev_err(&udev->dev, "%s Failed to disable LPM before suspend\n.", __func__); @@ -2724,18 +2896,26 @@ dev_dbg(hub->intfdev, "can't suspend port %d, status %d\n", port1, status); /* paranoia: "should not happen" */ - if (udev->do_remote_wakeup) - (void) usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, - USB_DEVICE_REMOTE_WAKEUP, 0, - NULL, 0, - USB_CTRL_SET_TIMEOUT); + if (udev->do_remote_wakeup) { + if (!hub_is_superspeed(hub->hdev)) { + (void) usb_control_msg(udev, + usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, + USB_RECIP_DEVICE, + USB_DEVICE_REMOTE_WAKEUP, 0, + NULL, 0, + USB_CTRL_SET_TIMEOUT); + } else + (void) usb_disable_function_remotewakeup(udev); + + } /* Try to enable USB2 hardware LPM again */ if (udev->usb2_hw_lpm_capable == 1) usb_set_usb2_hardware_lpm(udev, 1); - /* Try to enable USB3 LPM again */ + /* Try to enable USB3 LTM and LPM again */ + usb_enable_ltm(udev); usb_unlocked_enable_lpm(udev); /* System sleep transitions should never fail */ @@ -2767,7 +2947,7 @@ static int finish_port_resume(struct usb_device *udev) { int status = 0; - u16 devstatus; + u16 devstatus = 0; /* caller owns the udev device lock */ dev_dbg(&udev->dev, "%s\n", @@ -2812,21 +2992,37 @@ if (status) { dev_dbg(&udev->dev, "gone after usb resume? status %d\n", status); - } else if (udev->actconfig) { - le16_to_cpus(&devstatus); - if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { - status = usb_control_msg(udev, - usb_sndctrlpipe(udev, 0), - USB_REQ_CLEAR_FEATURE, + /* + * There are a few quirky devices which violate the standard + * by claiming to have remote wakeup enabled after a reset, + * which crash if the feature is cleared, hence check for + * udev->reset_resume + */ + } else if (udev->actconfig && !udev->reset_resume) { + if (!hub_is_superspeed(udev->parent)) { + le16_to_cpus(&devstatus); + if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) + status = usb_control_msg(udev, + usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, - USB_DEVICE_REMOTE_WAKEUP, 0, - NULL, 0, - USB_CTRL_SET_TIMEOUT); - if (status) - dev_dbg(&udev->dev, - "disable remote wakeup, status %d\n", - status); + USB_DEVICE_REMOTE_WAKEUP, 0, + NULL, 0, + USB_CTRL_SET_TIMEOUT); + } else { + status = usb_get_status(udev, USB_RECIP_INTERFACE, 0, + &devstatus); + le16_to_cpus(&devstatus); + if (!status && devstatus & (USB_INTRF_STAT_FUNC_RW_CAP + | USB_INTRF_STAT_FUNC_RW)) + status = + usb_disable_function_remotewakeup(udev); } + + if (status) + dev_dbg(&udev->dev, + "disable remote wakeup, status %d\n", + status); status = 0; } return status; @@ -2936,7 +3132,8 @@ if (udev->usb2_hw_lpm_capable == 1) usb_set_usb2_hardware_lpm(udev, 1); - /* Try to enable USB3 LPM */ + /* Try to enable USB3 LTM and LPM */ + usb_enable_ltm(udev); usb_unlocked_enable_lpm(udev); } @@ -3190,16 +3387,6 @@ if (enable) { /* - * First, let the device know about the exit latencies - * associated with the link state we're about to enable. - */ - ret = usb_req_set_sel(udev, state); - if (ret < 0) { - dev_warn(&udev->dev, "Set SEL for device-initiated " - "%s failed.\n", usb3_lpm_names[state]); - return -EBUSY; - } - /* * Now send the control transfer to enable device-initiated LPM * for either U1 or U2. */ @@ -3284,7 +3471,28 @@ static void usb_enable_link_state(struct usb_hcd *hcd, struct usb_device *udev, enum usb3_link_state state) { - int timeout; + int timeout, ret; + __u8 u1_mel = udev->bos->ss_cap->bU1devExitLat; + __le16 u2_mel = udev->bos->ss_cap->bU2DevExitLat; + + /* If the device says it doesn't have *any* exit latency to come out of + * U1 or U2, it's probably lying. Assume it doesn't implement that link + * state. + */ + if ((state == USB3_LPM_U1 && u1_mel == 0) || + (state == USB3_LPM_U2 && u2_mel == 0)) + return; + + /* + * First, let the device know about the exit latencies + * associated with the link state we're about to enable. + */ + ret = usb_req_set_sel(udev, state); + if (ret < 0) { + dev_warn(&udev->dev, "Set SEL for device-initiated %s failed.\n", + usb3_lpm_names[state]); + return; + } /* We allow the host controller to set the U1/U2 timeout internally * first, so that it can change its schedule to account for the @@ -3489,6 +3697,15 @@ void usb_unlocked_enable_lpm(struct usb_device *udev) { } EXPORT_SYMBOL_GPL(usb_unlocked_enable_lpm); + +int usb_disable_ltm(struct usb_device *udev) +{ + return 0; +} +EXPORT_SYMBOL_GPL(usb_disable_ltm); + +void usb_enable_ltm(struct usb_device *udev) { } +EXPORT_SYMBOL_GPL(usb_enable_ltm); #endif @@ -4413,9 +4630,23 @@ * SS.Inactive state. */ if (hub_port_warm_reset_required(hub, portstatus)) { + int status; + struct usb_device *udev = + hub->hdev->children[i - 1]; + dev_dbg(hub_dev, "warm reset port %d\n", i); - hub_port_reset(hub, i, NULL, - HUB_BH_RESET_TIME, true); + 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; } if (connect_change) @@ -4672,6 +4903,23 @@ } parent_hub = hdev_to_hub(parent_hdev); + /* Disable LPM and LTM while we reset the device and reinstall the alt + * settings. Device-initiated LPM settings, and system exit latency + * settings are cleared when the device is reset, so we have to set + * them up again. + */ + ret = usb_unlocked_disable_lpm(udev); + if (ret) { + dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__); + goto re_enumerate; + } + ret = usb_disable_ltm(udev); + if (ret) { + dev_err(&udev->dev, "%s Failed to disable LTM\n.", + __func__); + goto re_enumerate; + } + set_bit(port1, parent_hub->busy_bits); for (i = 0; i < SET_CONFIG_TRIES; ++i) { @@ -4699,22 +4947,11 @@ goto done; mutex_lock(hcd->bandwidth_mutex); - /* Disable LPM while we reset the device and reinstall the alt settings. - * Device-initiated LPM settings, and system exit latency settings are - * cleared when the device is reset, so we have to set them up again. - */ - ret = usb_disable_lpm(udev); - if (ret) { - dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__); - mutex_unlock(hcd->bandwidth_mutex); - goto done; - } ret = usb_hcd_alloc_bandwidth(udev, udev->actconfig, NULL, NULL); if (ret < 0) { dev_warn(&udev->dev, "Busted HC? Not enough HCD resources for " "old configuration.\n"); - usb_enable_lpm(udev); mutex_unlock(hcd->bandwidth_mutex); goto re_enumerate; } @@ -4726,7 +4963,6 @@ dev_err(&udev->dev, "can't restore configuration #%d (error=%d)\n", udev->actconfig->desc.bConfigurationValue, ret); - usb_enable_lpm(udev); mutex_unlock(hcd->bandwidth_mutex); goto re_enumerate; } @@ -4765,17 +5001,18 @@ desc->bInterfaceNumber, desc->bAlternateSetting, ret); - usb_unlocked_enable_lpm(udev); goto re_enumerate; } } - /* Now that the alt settings are re-installed, enable LPM. */ - usb_unlocked_enable_lpm(udev); done: + /* Now that the alt settings are re-installed, enable LTM and LPM. */ + usb_unlocked_enable_lpm(udev); + usb_enable_ltm(udev); return 0; re_enumerate: + /* LPM state doesn't matter when we're about to destroy the device. */ hub_port_logical_disconnect(parent_hub, port1); return -ENODEV; } --- linux-3.5.0.orig/drivers/usb/core/usb.c +++ linux-3.5.0/drivers/usb/core/usb.c @@ -396,6 +396,7 @@ dev->dev.dma_mask = bus->controller->dma_mask; set_dev_node(&dev->dev, dev_to_node(bus->controller)); dev->state = USB_STATE_ATTACHED; + dev->lpm_disable_count = 1; atomic_set(&dev->urbnum, 0); INIT_LIST_HEAD(&dev->ep0.urb_list); --- linux-3.5.0.orig/drivers/usb/core/driver.c +++ linux-3.5.0/drivers/usb/core/driver.c @@ -371,6 +371,10 @@ intf->condition = USB_INTERFACE_UNBOUND; usb_cancel_queued_reset(intf); + /* If the LPM disable succeeded, balance the ref counts. */ + if (!lpm_disable_error) + usb_unlocked_enable_lpm(udev); + /* Unbound interfaces are always runtime-PM-disabled and -suspended */ if (driver->supports_autosuspend) pm_runtime_disable(dev); --- linux-3.5.0.orig/drivers/usb/core/quirks.c +++ linux-3.5.0/drivers/usb/core/quirks.c @@ -38,6 +38,9 @@ /* Creative SB Audigy 2 NX */ { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Microsoft LifeCam-VX700 v2.0 */ + { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Logitech Webcam C200 */ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -96,6 +99,10 @@ { USB_DEVICE(0x04b4, 0x0526), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Microchip Joss Optical infrared touchboard device */ + { USB_DEVICE(0x04d8, 0x000c), .driver_info = + USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Samsung Android phone modem - ID conflict with SPH-I500 */ { USB_DEVICE(0x04e8, 0x6601), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, @@ -106,6 +113,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-3.5.0.orig/drivers/usb/core/sysfs.c +++ linux-3.5.0/drivers/usb/core/sysfs.c @@ -85,9 +85,9 @@ int retval; \ \ udev = to_usb_device(dev); \ - usb_lock_device(udev); \ - retval = sprintf(buf, "%s\n", udev->name); \ - usb_unlock_device(udev); \ + rcu_read_lock(); \ + retval = sprintf(buf, "%s\n", rcu_dereference(udev->name)); \ + rcu_read_unlock(); \ return retval; \ } \ static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL); --- linux-3.5.0.orig/drivers/usb/core/devio.c +++ linux-3.5.0/drivers/usb/core/devio.c @@ -681,6 +681,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); @@ -1604,10 +1606,14 @@ void __user *addr = as->userurb; unsigned int i; - if (as->userbuffer && urb->actual_length) - if (copy_to_user(as->userbuffer, urb->transfer_buffer, - urb->actual_length)) + if (as->userbuffer && urb->actual_length) { + if (urb->number_of_packets > 0) /* Isochronous */ + i = urb->transfer_buffer_length; + else /* Non-Isoc */ + i = urb->actual_length; + if (copy_to_user(as->userbuffer, urb->transfer_buffer, i)) return -EFAULT; + } if (put_user(as->status, &userurb->status)) return -EFAULT; if (put_user(urb->actual_length, &userurb->actual_length)) --- linux-3.5.0.orig/drivers/usb/core/usb.h +++ linux-3.5.0/drivers/usb/core/usb.h @@ -1,5 +1,7 @@ #include +struct dev_state; + /* Functions local to drivers/usb/core/ */ extern int usb_create_sysfs_dev_files(struct usb_device *dev); @@ -41,10 +43,11 @@ extern void usb_rebind_intf(struct usb_interface *intf); extern int usb_hub_claim_port(struct usb_device *hdev, unsigned port, - void *owner); + struct dev_state *owner); extern int usb_hub_release_port(struct usb_device *hdev, unsigned port, - void *owner); -extern void usb_hub_release_all_ports(struct usb_device *hdev, void *owner); + struct dev_state *owner); +extern void usb_hub_release_all_ports(struct usb_device *hdev, + struct dev_state *owner); extern bool usb_device_is_owned(struct usb_device *udev); extern int usb_hub_init(void); --- linux-3.5.0.orig/drivers/usb/storage/uas.c +++ linux-3.5.0/drivers/usb/storage/uas.c @@ -58,9 +58,6 @@ SUBMIT_DATA_OUT_URB = (1 << 5), ALLOC_CMD_URB = (1 << 6), SUBMIT_CMD_URB = (1 << 7), - COMPLETED_DATA_IN = (1 << 8), - COMPLETED_DATA_OUT = (1 << 9), - DATA_COMPLETES_CMD = (1 << 10), }; /* Overrides scsi_pointer */ @@ -114,7 +111,6 @@ { struct sense_iu *sense_iu = urb->transfer_buffer; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; if (urb->actual_length > 16) { unsigned len = be16_to_cpup(&sense_iu->len); @@ -132,15 +128,13 @@ } cmnd->result = sense_iu->status; - if (!(cmdinfo->state & DATA_COMPLETES_CMD)) - cmnd->scsi_done(cmnd); + cmnd->scsi_done(cmnd); } static void uas_sense_old(struct urb *urb, struct scsi_cmnd *cmnd) { struct sense_iu_old *sense_iu = urb->transfer_buffer; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; if (urb->actual_length > 8) { unsigned len = be16_to_cpup(&sense_iu->len) - 2; @@ -158,8 +152,7 @@ } cmnd->result = sense_iu->status; - if (!(cmdinfo->state & DATA_COMPLETES_CMD)) - cmnd->scsi_done(cmnd); + cmnd->scsi_done(cmnd); } static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, @@ -184,7 +177,6 @@ struct Scsi_Host *shost = urb->context; struct uas_dev_info *devinfo = (void *)shost->hostdata[0]; struct scsi_cmnd *cmnd; - struct uas_cmd_info *cmdinfo; u16 tag; int ret; @@ -210,32 +202,12 @@ dev_err(&urb->dev->dev, "failed submit status urb\n"); return; } - cmdinfo = (void *)&cmnd->SCp; switch (iu->iu_id) { case IU_ID_STATUS: if (devinfo->cmnd == cmnd) devinfo->cmnd = NULL; - if (!(cmdinfo->state & COMPLETED_DATA_IN) && - cmdinfo->data_in_urb) { - if (devinfo->use_streams) { - cmdinfo->state |= DATA_COMPLETES_CMD; - usb_unlink_urb(cmdinfo->data_in_urb); - } else { - usb_free_urb(cmdinfo->data_in_urb); - } - } - if (!(cmdinfo->state & COMPLETED_DATA_OUT) && - cmdinfo->data_out_urb) { - if (devinfo->use_streams) { - cmdinfo->state |= DATA_COMPLETES_CMD; - usb_unlink_urb(cmdinfo->data_in_urb); - } else { - usb_free_urb(cmdinfo->data_out_urb); - } - } - if (urb->actual_length < 16) devinfo->uas_sense_old = 1; if (devinfo->uas_sense_old) @@ -264,59 +236,27 @@ dev_err(&urb->dev->dev, "failed submit status urb\n"); } -static void uas_data_out_cmplt(struct urb *urb) -{ - struct scsi_cmnd *cmnd = urb->context; - struct scsi_data_buffer *sdb = scsi_out(cmnd); - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; - - cmdinfo->state |= COMPLETED_DATA_OUT; - - sdb->resid = sdb->length - urb->actual_length; - usb_free_urb(urb); - - if (cmdinfo->state & DATA_COMPLETES_CMD) - cmnd->scsi_done(cmnd); -} - -static void uas_data_in_cmplt(struct urb *urb) +static void uas_data_cmplt(struct urb *urb) { - struct scsi_cmnd *cmnd = urb->context; - struct scsi_data_buffer *sdb = scsi_in(cmnd); - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; - - cmdinfo->state |= COMPLETED_DATA_IN; - + struct scsi_data_buffer *sdb = urb->context; sdb->resid = sdb->length - urb->actual_length; usb_free_urb(urb); - - if (cmdinfo->state & DATA_COMPLETES_CMD) - cmnd->scsi_done(cmnd); } static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp, - unsigned int pipe, struct scsi_cmnd *cmnd, - enum dma_data_direction dir) + unsigned int pipe, u16 stream_id, + struct scsi_data_buffer *sdb, + enum dma_data_direction dir) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; struct usb_device *udev = devinfo->udev; struct urb *urb = usb_alloc_urb(0, gfp); - struct scsi_data_buffer *sdb; - usb_complete_t complete_fn; - u16 stream_id = cmdinfo->stream; if (!urb) goto out; - if (dir == DMA_FROM_DEVICE) { - sdb = scsi_in(cmnd); - complete_fn = uas_data_in_cmplt; - } else { - sdb = scsi_out(cmnd); - complete_fn = uas_data_out_cmplt; - } - usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length, - complete_fn, cmnd); - urb->stream_id = stream_id; + usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length, uas_data_cmplt, + sdb); + if (devinfo->use_streams) + urb->stream_id = stream_id; urb->num_sgs = udev->bus->sg_tablesize ? sdb->table.nents : 0; urb->sg = sdb->table.sgl; out: @@ -418,8 +358,8 @@ if (cmdinfo->state & ALLOC_DATA_IN_URB) { cmdinfo->data_in_urb = uas_alloc_data_urb(devinfo, gfp, - devinfo->data_in_pipe, cmnd, - DMA_FROM_DEVICE); + devinfo->data_in_pipe, cmdinfo->stream, + scsi_in(cmnd), DMA_FROM_DEVICE); if (!cmdinfo->data_in_urb) return SCSI_MLQUEUE_DEVICE_BUSY; cmdinfo->state &= ~ALLOC_DATA_IN_URB; @@ -436,8 +376,8 @@ if (cmdinfo->state & ALLOC_DATA_OUT_URB) { cmdinfo->data_out_urb = uas_alloc_data_urb(devinfo, gfp, - devinfo->data_out_pipe, cmnd, - DMA_TO_DEVICE); + devinfo->data_out_pipe, cmdinfo->stream, + scsi_out(cmnd), DMA_TO_DEVICE); if (!cmdinfo->data_out_urb) return SCSI_MLQUEUE_DEVICE_BUSY; cmdinfo->state &= ~ALLOC_DATA_OUT_URB; --- linux-3.5.0.orig/drivers/usb/storage/Kconfig +++ linux-3.5.0/drivers/usb/storage/Kconfig @@ -203,7 +203,7 @@ config USB_UAS tristate "USB Attached SCSI" - depends on USB && SCSI + depends on USB && SCSI && BROKEN help The USB Attached SCSI protocol is supported by some USB storage devices. It permits higher performance by supporting --- linux-3.5.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-3.5.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. @@ -1004,6 +1011,12 @@ USB_SC_8070, USB_PR_CB, NULL, US_FL_NEED_OVERRIDE | US_FL_FIX_INQUIRY ), +/* Submitted by Oleksandr Chumachenko */ +UNUSUAL_DEV( 0x07cf, 0x1167, 0x0100, 0x0100, + "Casio", + "EX-N1 DigitalCamera", + USB_SC_8070, USB_PR_DEVICE, NULL, 0), + /* Submitted by Hartmut Wahl */ UNUSUAL_DEV( 0x0839, 0x000a, 0x0001, 0x0001, "Samsung", @@ -1163,6 +1176,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, 0), +/* Reported by Timo Aaltonen */ +UNUSUAL_DEV( 0x0af0, 0x7011, 0x0000, 0x9999, + "Option", + "Mass Storage", + USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, + 0 ), + /* Reported by F. Aben * This device (wrongly) has a vendor-specific device descriptor. * The entry is needed so usb-storage can bind to it's mass-storage --- linux-3.5.0.orig/drivers/usb/storage/usb.c +++ linux-3.5.0/drivers/usb/storage/usb.c @@ -120,6 +120,17 @@ .useTransport = use_transport, \ } +#define UNUSUAL_VENDOR_INTF(idVendor, cl, sc, pr, \ + vendor_name, product_name, use_protocol, use_transport, \ + init_function, Flags) \ +{ \ + .vendorName = vendor_name, \ + .productName = product_name, \ + .useProtocol = use_protocol, \ + .useTransport = use_transport, \ + .initFunction = init_function, \ +} + static struct us_unusual_dev us_unusual_dev_list[] = { # include "unusual_devs.h" { } /* Terminating entry */ @@ -131,6 +142,7 @@ #undef UNUSUAL_DEV #undef COMPLIANT_DEV #undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF #ifdef CONFIG_LOCKDEP --- linux-3.5.0.orig/drivers/usb/storage/ene_ub6250.c +++ linux-3.5.0/drivers/usb/storage/ene_ub6250.c @@ -29,9 +29,21 @@ #include "protocol.h" #include "debug.h" +#define SD_INIT1_FIRMWARE "ene-ub6250/sd_init1.bin" +#define SD_INIT2_FIRMWARE "ene-ub6250/sd_init2.bin" +#define SD_RW_FIRMWARE "ene-ub6250/sd_rdwr.bin" +#define MS_INIT_FIRMWARE "ene-ub6250/ms_init.bin" +#define MSP_RW_FIRMWARE "ene-ub6250/msp_rdwr.bin" +#define MS_RW_FIRMWARE "ene-ub6250/ms_rdwr.bin" + MODULE_DESCRIPTION("Driver for ENE UB6250 reader"); MODULE_LICENSE("GPL"); - +MODULE_FIRMWARE(SD_INIT1_FIRMWARE); +MODULE_FIRMWARE(SD_INIT2_FIRMWARE); +MODULE_FIRMWARE(SD_RW_FIRMWARE); +MODULE_FIRMWARE(MS_INIT_FIRMWARE); +MODULE_FIRMWARE(MSP_RW_FIRMWARE); +MODULE_FIRMWARE(MS_RW_FIRMWARE); /* * The table of devices @@ -1883,28 +1895,28 @@ /* For SD */ case SD_INIT1_PATTERN: US_DEBUGP("SD_INIT1_PATTERN\n"); - fw_name = "ene-ub6250/sd_init1.bin"; + fw_name = SD_INIT1_FIRMWARE; break; case SD_INIT2_PATTERN: US_DEBUGP("SD_INIT2_PATTERN\n"); - fw_name = "ene-ub6250/sd_init2.bin"; + fw_name = SD_INIT2_FIRMWARE; break; case SD_RW_PATTERN: US_DEBUGP("SD_RDWR_PATTERN\n"); - fw_name = "ene-ub6250/sd_rdwr.bin"; + fw_name = SD_RW_FIRMWARE; break; /* For MS */ case MS_INIT_PATTERN: US_DEBUGP("MS_INIT_PATTERN\n"); - fw_name = "ene-ub6250/ms_init.bin"; + fw_name = MS_INIT_FIRMWARE; break; case MSP_RW_PATTERN: US_DEBUGP("MSP_RW_PATTERN\n"); - fw_name = "ene-ub6250/msp_rdwr.bin"; + fw_name = MSP_RW_FIRMWARE; break; case MS_RW_PATTERN: US_DEBUGP("MS_RW_PATTERN\n"); - fw_name = "ene-ub6250/ms_rdwr.bin"; + fw_name = MS_RW_FIRMWARE; break; default: US_DEBUGP("----------- Unknown PATTERN ----------\n"); --- linux-3.5.0.orig/drivers/usb/storage/unusual_cypress.h +++ linux-3.5.0/drivers/usb/storage/unusual_cypress.h @@ -31,7 +31,7 @@ "Cypress ISD-300LP", USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), -UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x9999, +UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x0219, "Super Top", "USB 2.0 SATA BRIDGE", USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), --- linux-3.5.0.orig/drivers/usb/storage/usual-tables.c +++ linux-3.5.0/drivers/usb/storage/usual-tables.c @@ -46,6 +46,20 @@ { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, useProto, useTrans), \ .driver_info = ((useType)<<24) } +/* Define the device is matched with Vendor ID and interface descriptors */ +#define UNUSUAL_VENDOR_INTF(id_vendor, cl, sc, pr, \ + vendorName, productName, useProtocol, useTransport, \ + initFunction, flags) \ +{ \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (id_vendor), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr), \ + .driver_info = (flags) \ +} + struct usb_device_id usb_storage_usb_ids[] = { # include "unusual_devs.h" { } /* Terminating entry */ @@ -57,6 +71,7 @@ #undef UNUSUAL_DEV #undef COMPLIANT_DEV #undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF /* --- linux-3.5.0.orig/drivers/usb/storage/cypress_atacb.c +++ linux-3.5.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-3.5.0.orig/drivers/usb/musb/cppi_dma.c +++ linux-3.5.0/drivers/usb/musb/cppi_dma.c @@ -1314,6 +1314,7 @@ return IRQ_HANDLED; } +EXPORT_SYMBOL_GPL(cppi_interrupt); /* Instantiate a software object representing a DMA controller. */ struct dma_controller *__init --- linux-3.5.0.orig/drivers/usb/musb/musb_core.c +++ linux-3.5.0/drivers/usb/musb/musb_core.c @@ -2402,10 +2402,7 @@ if (usb_disabled()) return 0; - pr_info("%s: version " MUSB_VERSION ", " - "?dma?" - ", " - "otg (peripheral+host)", + pr_info("%s: version " MUSB_VERSION ", ?dma?, otg (peripheral+host)\n", musb_driver_name); return platform_driver_register(&musb_driver); } --- linux-3.5.0.orig/drivers/usb/musb/am35x.c +++ linux-3.5.0/drivers/usb/musb/am35x.c @@ -311,6 +311,12 @@ ret = IRQ_HANDLED; } + /* Drop spurious RX and TX if device is disconnected */ + if (musb->int_usb & MUSB_INTR_DISCONNECT) { + musb->int_tx = 0; + musb->int_rx = 0; + } + if (musb->int_tx || musb->int_rx || musb->int_usb) ret |= musb_interrupt(musb); --- linux-3.5.0.orig/drivers/usb/atm/cxacru.c +++ linux-3.5.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-3.5.0.orig/drivers/usb/atm/ueagle-atm.c +++ linux-3.5.0/drivers/usb/atm/ueagle-atm.c @@ -307,6 +307,34 @@ #define FW_GET_BYTE(p) (*((__u8 *) (p))) #define FW_DIR "ueagle-atm/" +#define EAGLE_FIRMWARE FW_DIR "eagle.fw" +#define ADI930_FIRMWARE FW_DIR "adi930.fw" +#define EAGLE_I_FIRMWARE FW_DIR "eagleI.fw" +#define EAGLE_II_FIRMWARE FW_DIR "eagleII.fw" +#define EAGLE_III_FIRMWARE FW_DIR "eagleIII.fw" +#define EAGLE_IV_FIRMWARE FW_DIR "eagleIV.fw" + +#define DSP4I_FIRMWARE FW_DIR "DSP4i.bin" +#define DSP4P_FIRMWARE FW_DIR "DSP4p.bin" +#define DSP9I_FIRMWARE FW_DIR "DSP9i.bin" +#define DSP9P_FIRMWARE FW_DIR "DSP9p.bin" +#define DSPEI_FIRMWARE FW_DIR "DSPei.bin" +#define DSPEP_FIRMWARE FW_DIR "DSPep.bin" +#define FPGA930_FIRMWARE FW_DIR "930-fpga.bin" + +#define CMV4P_FIRMWARE FW_DIR "CMV4p.bin" +#define CMV4PV2_FIRMWARE FW_DIR "CMV4p.bin.v2" +#define CMV4I_FIRMWARE FW_DIR "CMV4i.bin" +#define CMV4IV2_FIRMWARE FW_DIR "CMV4i.bin.v2" +#define CMV9P_FIRMWARE FW_DIR "CMV9p.bin" +#define CMV9PV2_FIRMWARE FW_DIR "CMV9p.bin.v2" +#define CMV9I_FIRMWARE FW_DIR "CMV9i.bin" +#define CMV9IV2_FIRMWARE FW_DIR "CMV9i.bin.v2" +#define CMVEP_FIRMWARE FW_DIR "CMVep.bin" +#define CMVEPV2_FIRMWARE FW_DIR "CMVep.bin.v2" +#define CMVEI_FIRMWARE FW_DIR "CMVei.bin" +#define CMVEIV2_FIRMWARE FW_DIR "CMVei.bin.v2" + #define UEA_FW_NAME_MAX 30 #define NB_MODEM 4 @@ -694,26 +722,26 @@ static int uea_load_firmware(struct usb_device *usb, unsigned int ver) { int ret; - char *fw_name = FW_DIR "eagle.fw"; + char *fw_name = EAGLE_FIRMWARE; uea_enters(usb); uea_info(usb, "pre-firmware device, uploading firmware\n"); switch (ver) { case ADI930: - fw_name = FW_DIR "adi930.fw"; + fw_name = ADI930_FIRMWARE; break; case EAGLE_I: - fw_name = FW_DIR "eagleI.fw"; + fw_name = EAGLE_I_FIRMWARE; break; case EAGLE_II: - fw_name = FW_DIR "eagleII.fw"; + fw_name = EAGLE_II_FIRMWARE; break; case EAGLE_III: - fw_name = FW_DIR "eagleIII.fw"; + fw_name = EAGLE_III_FIRMWARE; break; case EAGLE_IV: - fw_name = FW_DIR "eagleIV.fw"; + fw_name = EAGLE_IV_FIRMWARE; break; } @@ -869,19 +897,19 @@ if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSP4i.bin"; + dsp_name = DSP4I_FIRMWARE; else - dsp_name = FW_DIR "DSP4p.bin"; + dsp_name = DSP4P_FIRMWARE; } else if (UEA_CHIP_VERSION(sc) == ADI930) { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSP9i.bin"; + dsp_name = DSP9I_FIRMWARE; else - dsp_name = FW_DIR "DSP9p.bin"; + dsp_name = DSP9P_FIRMWARE; } else { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSPei.bin"; + dsp_name = DSPEI_FIRMWARE; else - dsp_name = FW_DIR "DSPep.bin"; + dsp_name = DSPEP_FIRMWARE; } ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); @@ -1925,7 +1953,7 @@ int ret, size, u, ln; const u8 *pfw; u8 value; - char *fw_name = FW_DIR "930-fpga.bin"; + char *fw_name = FPGA930_FIRMWARE; uea_enters(INS_TO_USBDEV(sc)); @@ -2753,3 +2781,28 @@ MODULE_AUTHOR("Damien Bergamini/Matthieu Castet/Stanislaw W. Gruszka"); MODULE_DESCRIPTION("ADI 930/Eagle USB ADSL Modem driver"); MODULE_LICENSE("Dual BSD/GPL"); +MODULE_FIRMWARE(EAGLE_FIRMWARE); +MODULE_FIRMWARE(ADI930_FIRMWARE); +MODULE_FIRMWARE(EAGLE_I_FIRMWARE); +MODULE_FIRMWARE(EAGLE_II_FIRMWARE); +MODULE_FIRMWARE(EAGLE_III_FIRMWARE); +MODULE_FIRMWARE(EAGLE_IV_FIRMWARE); +MODULE_FIRMWARE(DSP4I_FIRMWARE); +MODULE_FIRMWARE(DSP4P_FIRMWARE); +MODULE_FIRMWARE(DSP9I_FIRMWARE); +MODULE_FIRMWARE(DSP9P_FIRMWARE); +MODULE_FIRMWARE(DSPEI_FIRMWARE); +MODULE_FIRMWARE(DSPEP_FIRMWARE); +MODULE_FIRMWARE(FPGA930_FIRMWARE); +MODULE_FIRMWARE(CMV4P_FIRMWARE); +MODULE_FIRMWARE(CMV4PV2_FIRMWARE); +MODULE_FIRMWARE(CMV4I_FIRMWARE); +MODULE_FIRMWARE(CMV4IV2_FIRMWARE); +MODULE_FIRMWARE(CMV9P_FIRMWARE); +MODULE_FIRMWARE(CMV9PV2_FIRMWARE); +MODULE_FIRMWARE(CMV9I_FIRMWARE); +MODULE_FIRMWARE(CMV9IV2_FIRMWARE); +MODULE_FIRMWARE(CMVEP_FIRMWARE); +MODULE_FIRMWARE(CMVEPV2_FIRMWARE); +MODULE_FIRMWARE(CMVEI_FIRMWARE); +MODULE_FIRMWARE(CMVEIV2_FIRMWARE); --- linux-3.5.0.orig/drivers/usb/dwc3/core.c +++ linux-3.5.0/drivers/usb/dwc3/core.c @@ -429,16 +429,21 @@ dev_err(dev, "missing IRQ\n"); return -ENODEV; } - dwc->xhci_resources[1] = *res; + dwc->xhci_resources[1].start = res->start; + dwc->xhci_resources[1].end = res->end; + dwc->xhci_resources[1].flags = res->flags; + dwc->xhci_resources[1].name = res->name; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(dev, "missing memory resource\n"); return -ENODEV; } - dwc->xhci_resources[0] = *res; + dwc->xhci_resources[0].start = res->start; dwc->xhci_resources[0].end = dwc->xhci_resources[0].start + DWC3_XHCI_REGS_END; + dwc->xhci_resources[0].flags = res->flags; + dwc->xhci_resources[0].name = res->name; /* * Request memory region but exclude xHCI regs, --- linux-3.5.0.orig/drivers/usb/dwc3/gadget.c +++ linux-3.5.0/drivers/usb/dwc3/gadget.c @@ -231,6 +231,7 @@ if (((dep->busy_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) dep->busy_slot++; + req->queued = false; } list_del(&req->list); req->trb = NULL; @@ -238,8 +239,11 @@ if (req->request.status == -EINPROGRESS) req->request.status = status; - usb_gadget_unmap_request(&dwc->gadget, &req->request, - req->direction); + if (dwc->ep0_bounced && dep->number == 0) + dwc->ep0_bounced = false; + else + usb_gadget_unmap_request(&dwc->gadget, &req->request, + req->direction); dev_dbg(dwc->dev, "request %p from %s completed %d/%d ===> %d\n", req, dep->name, req->request.actual, @@ -707,21 +711,18 @@ struct dwc3 *dwc = dep->dwc; struct dwc3_trb *trb; - unsigned int cur_slot; - dev_vdbg(dwc->dev, "%s: req %p dma %08llx length %d%s%s\n", dep->name, req, (unsigned long long) dma, length, last ? " last" : "", chain ? " chain" : ""); - trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; - cur_slot = dep->free_slot; - dep->free_slot++; - /* Skip the LINK-TRB on ISOC */ - if (((cur_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && + if (((dep->free_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) - return; + dep->free_slot++; + + trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; + dep->free_slot++; if (!req->trb) { dwc3_gadget_move_request_queued(req); @@ -741,8 +742,7 @@ case USB_ENDPOINT_XFER_ISOC: trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST; - /* IOC every DWC3_TRB_NUM / 4 so we can refill */ - if (!(cur_slot % (DWC3_TRB_NUM / 4))) + if (!req->request.no_interrupt) trb->ctrl |= DWC3_TRB_CTRL_IOC; break; @@ -1505,6 +1505,7 @@ if (epnum == 0 || epnum == 1) { dep->endpoint.maxpacket = 512; + dep->endpoint.maxburst = 1; dep->endpoint.ops = &dwc3_gadget_ep0_ops; if (!epnum) dwc->gadget.ep0 = &dep->endpoint; @@ -1536,10 +1537,19 @@ 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); } @@ -1829,6 +1839,7 @@ ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, cmd, ¶ms); WARN_ON_ONCE(ret); dep->res_trans_idx = 0; + dep->flags &= ~DWC3_EP_BUSY; } } --- linux-3.5.0.orig/drivers/usb/dwc3/ep0.c +++ linux-3.5.0/drivers/usb/dwc3/ep0.c @@ -702,7 +702,6 @@ transferred = min_t(u32, ur->length, transfer_size - length); memcpy(ur->buf, dwc->ep0_bounce, transferred); - dwc->ep0_bounced = false; } else { transferred = ur->length - length; } --- linux-3.5.0.orig/drivers/usb/chipidea/udc.h +++ linux-3.5.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-3.5.0.orig/drivers/usb/chipidea/udc.c +++ linux-3.5.0/drivers/usb/chipidea/udc.c @@ -77,8 +77,7 @@ } /** - * hw_device_state: enables/disables interrupts & starts/stops device (execute - * without interruption) + * hw_device_state: enables/disables interrupts (execute without interruption) * @dma: 0 => disable, !0 => enable and set dma engine * * This function returns an error code @@ -92,7 +91,6 @@ USBi_UI|USBi_UEI|USBi_PCI|USBi_URI|USBi_SLI); hw_write(udc, OP_USBCMD, USBCMD_RS, USBCMD_RS); } else { - hw_write(udc, OP_USBCMD, USBCMD_RS, 0); hw_write(udc, OP_USBINTR, ~0, 0); } return 0; @@ -441,6 +439,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); @@ -541,6 +541,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; @@ -773,10 +779,7 @@ { struct ci13xxx_req *mReq, *mReqTemp; struct ci13xxx_ep *mEpTemp = mEp; - int uninitialized_var(retval); - - if (list_empty(&mEp->qh.queue)) - return -EINVAL; + int retval = 0; list_for_each_entry_safe(mReq, mReqTemp, &mEp->qh.queue, queue) { @@ -1419,6 +1422,21 @@ return -ENOTSUPP; } +/* Change Data+ pullup status + * this func is used by usb_gadget_connect/disconnet + */ +static int ci13xxx_pullup(struct usb_gadget *_gadget, int is_on) +{ + struct ci13xxx *ci = container_of(_gadget, struct ci13xxx, gadget); + + if (is_on) + hw_write(ci, OP_USBCMD, USBCMD_RS, USBCMD_RS); + else + hw_write(ci, OP_USBCMD, USBCMD_RS, 0); + + return 0; +} + static int ci13xxx_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver); static int ci13xxx_stop(struct usb_gadget *gadget, @@ -1431,6 +1449,7 @@ static const struct usb_gadget_ops usb_gadget_ops = { .vbus_session = ci13xxx_vbus_session, .wakeup = ci13xxx_wakeup, + .pullup = ci13xxx_pullup, .vbus_draw = ci13xxx_vbus_draw, .udc_start = ci13xxx_start, .udc_stop = ci13xxx_stop, @@ -1454,7 +1473,12 @@ mEp->ep.name = mEp->name; mEp->ep.ops = &usb_ep_ops; - mEp->ep.maxpacket = CTRL_PAYLOAD_MAX; + /* + * for ep0: maxP defined in desc, for other + * eps, maxP is set by epautoconfig() called + * by gadget layer + */ + mEp->ep.maxpacket = (unsigned short)~0; INIT_LIST_HEAD(&mEp->qh.queue); mEp->qh.ptr = dma_pool_alloc(udc->qh_pool, GFP_KERNEL, @@ -1474,6 +1498,7 @@ else udc->ep0in = mEp; + mEp->ep.maxpacket = CTRL_PAYLOAD_MAX; continue; } @@ -1483,6 +1508,17 @@ return retval; } +static void destroy_eps(struct ci13xxx *udc) +{ + int i; + + for (i = 0; i < udc->hw_ep_max; i++) { + struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i]; + + dma_pool_free(udc->qh_pool, mEp->qh.ptr, mEp->qh.dma); + } +} + /** * ci13xxx_start: register a gadget driver * @gadget: our gadget @@ -1692,7 +1728,7 @@ if (udc->udc_driver->flags & CI13XXX_REQUIRE_TRANSCEIVER) { if (udc->transceiver == NULL) { retval = -ENODEV; - goto free_pools; + goto destroy_eps; } } @@ -1730,7 +1766,7 @@ remove_trans: if (udc->transceiver) { - otg_set_peripheral(udc->transceiver->otg, &udc->gadget); + otg_set_peripheral(udc->transceiver->otg, NULL); usb_put_transceiver(udc->transceiver); } @@ -1742,6 +1778,8 @@ put_transceiver: if (udc->transceiver) usb_put_transceiver(udc->transceiver); +destroy_eps: + destroy_eps(udc); free_pools: dma_pool_destroy(udc->td_pool); free_qh_pool: @@ -1756,18 +1794,12 @@ */ static void udc_stop(struct ci13xxx *udc) { - int i; - if (udc == NULL) return; usb_del_gadget_udc(&udc->gadget); - for (i = 0; i < udc->hw_ep_max; i++) { - struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i]; - - dma_pool_free(udc->qh_pool, mEp->qh.ptr, mEp->qh.dma); - } + destroy_eps(udc); dma_pool_destroy(udc->td_pool); dma_pool_destroy(udc->qh_pool); --- linux-3.5.0.orig/drivers/usb/chipidea/host.c +++ linux-3.5.0/drivers/usb/chipidea/host.c @@ -128,6 +128,9 @@ else ci->hcd = hcd; + if (ci->udc_driver->flags & CI13XXX_DISABLE_STREAMING) + hw_write(ci, OP_USBMODE, USBMODE_CI_SDIS, USBMODE_CI_SDIS); + return ret; } --- linux-3.5.0.orig/drivers/usb/serial/opticon.c +++ linux-3.5.0/drivers/usb/serial/opticon.c @@ -158,7 +158,11 @@ { struct usb_serial *serial = port->serial; int retval; - u8 buffer[2]; + u8 *buffer; + + buffer = kzalloc(1, GFP_KERNEL); + if (!buffer) + return -ENOMEM; buffer[0] = val; /* Send the message to the vendor control endpoint @@ -167,6 +171,7 @@ requesttype, USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE, 0, 0, buffer, 1, 0); + kfree(buffer); return retval; } @@ -284,7 +289,7 @@ if (!dr) { dev_err(&port->dev, "out of memory\n"); count = -ENOMEM; - goto error; + goto error_no_dr; } dr->bRequestType = USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT; @@ -314,6 +319,8 @@ return count; error: + kfree(dr); +error_no_dr: usb_free_urb(urb); error_no_urb: kfree(buffer); --- linux-3.5.0.orig/drivers/usb/serial/iuu_phoenix.c +++ linux-3.5.0/drivers/usb/serial/iuu_phoenix.c @@ -308,7 +308,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) dbg("%s - error = %2x", __func__, status); @@ -328,7 +328,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) dbg("%s - error = %2x", __func__, status); --- linux-3.5.0.orig/drivers/usb/serial/f81232.c +++ linux-3.5.0/drivers/usb/serial/f81232.c @@ -49,7 +49,6 @@ struct f81232_private { spinlock_t lock; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; }; @@ -114,7 +113,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; @@ -262,11 +261,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); @@ -329,7 +331,6 @@ if (!priv) goto cleanup; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); usb_set_serial_port_data(serial->port[i], priv); } return 0; --- linux-3.5.0.orig/drivers/usb/serial/usb_wwan.c +++ linux-3.5.0/drivers/usb/serial/usb_wwan.c @@ -41,7 +41,6 @@ void usb_wwan_dtr_rts(struct usb_serial_port *port, int on) { - struct usb_serial *serial = port->serial; struct usb_wwan_port_private *portdata; struct usb_wwan_intf_private *intfdata; @@ -51,12 +50,11 @@ return; portdata = usb_get_serial_port_data(port); - mutex_lock(&serial->disc_mutex); + /* FIXME: locking */ portdata->rts_state = on; portdata->dtr_state = on; - if (serial->dev) - intfdata->send_setup(port); - mutex_unlock(&serial->disc_mutex); + + intfdata->send_setup(port); } EXPORT_SYMBOL(usb_wwan_dtr_rts); @@ -453,9 +451,6 @@ { struct urb *urb; - if (endpoint == -1) - return NULL; /* endpoint not needed */ - urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */ if (urb == NULL) { dbg("%s: alloc for endpoint %d failed.", __func__, endpoint); @@ -483,6 +478,9 @@ /* Do indat endpoints first */ for (j = 0; j < N_IN_URB; ++j) { + if (!port->bulk_in_size) + break; + portdata->in_urbs[j] = usb_wwan_setup_urb(serial, port-> bulk_in_endpointAddress, @@ -496,6 +494,9 @@ /* outdat endpoints */ for (j = 0; j < N_OUT_URB; ++j) { + if (!port->bulk_out_size) + break; + portdata->out_urbs[j] = usb_wwan_setup_urb(serial, port-> bulk_out_endpointAddress, @@ -529,6 +530,9 @@ init_usb_anchor(&portdata->delayed); for (j = 0; j < N_IN_URB; j++) { + if (!port->bulk_in_size) + break; + buffer = (u8 *) __get_free_page(GFP_KERNEL); if (!buffer) goto bail_out_error; @@ -536,6 +540,9 @@ } for (j = 0; j < N_OUT_URB; j++) { + if (!port->bulk_out_size) + break; + buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL); if (!buffer) goto bail_out_error2; --- linux-3.5.0.orig/drivers/usb/serial/cypress_m8.h +++ linux-3.5.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-3.5.0.orig/drivers/usb/serial/metro-usb.c +++ linux-3.5.0/drivers/usb/serial/metro-usb.c @@ -188,16 +188,13 @@ { dev_dbg(&port->dev, "%s\n", __func__); - if (port->serial->dev) { - /* Shutdown any interrupt in urbs. */ - if (port->interrupt_in_urb) { - usb_unlink_urb(port->interrupt_in_urb); - usb_kill_urb(port->interrupt_in_urb); - } + usb_unlink_urb(port->interrupt_in_urb); + usb_kill_urb(port->interrupt_in_urb); - /* Send deactivate cmd to device */ + mutex_lock(&port->serial->disc_mutex); + if (!port->serial->disconnected) metrousb_send_unidirectional_cmd(UNI_CMD_CLOSE, port); - } + mutex_unlock(&port->serial->disc_mutex); } static int metrousb_open(struct tty_struct *tty, struct usb_serial_port *port) --- linux-3.5.0.orig/drivers/usb/serial/pl2303.c +++ linux-3.5.0/drivers/usb/serial/pl2303.c @@ -137,7 +137,6 @@ struct pl2303_private { spinlock_t lock; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; enum pl2303_type type; @@ -193,7 +192,6 @@ if (!priv) goto cleanup; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); priv->type = type; usb_set_serial_port_data(serial->port[i], priv); } @@ -260,7 +258,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; @@ -269,7 +267,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; } @@ -409,7 +408,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; @@ -468,7 +467,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_private *priv = usb_get_serial_port_data(port); int result; @@ -484,7 +482,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) { @@ -582,11 +580,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); @@ -705,7 +706,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) @@ -770,7 +771,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-3.5.0.orig/drivers/usb/serial/whiteheat.c +++ linux-3.5.0/drivers/usb/serial/whiteheat.c @@ -405,6 +405,7 @@ "%s: please contact support@connecttech.com\n", serial->type->description); kfree(result); + kfree(command); return -ENODEV; no_command_private: @@ -726,7 +727,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-3.5.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-3.5.0/drivers/usb/serial/ftdi_sio_ids.h @@ -74,6 +74,10 @@ #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+ */ /* * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com) @@ -144,6 +148,11 @@ #define XSENS_CONVERTER_6_PID 0xD38E #define XSENS_CONVERTER_7_PID 0xD38F +/** + * Zolix (www.zolix.com.cb) product ids + */ +#define FTDI_OMNI1509 0xD491 /* Omni1509 embedded USB-serial */ + /* * NDI (www.ndigital.com) product ids */ @@ -201,7 +210,7 @@ /* * ELV USB devices submitted by Christian Abt of ELV (www.elv.de). - * All of these devices use FTDI's vendor ID (0x0403). + * Almost all of these devices use FTDI's vendor ID (0x0403). * Further IDs taken from ELV Windows .inf file. * * The previously included PID for the UO 100 module was incorrect. @@ -209,6 +218,8 @@ * * Armin Laeuger originally sent the PID for the UM 100 module. */ +#define FTDI_ELV_VID 0x1B1F /* ELV AG */ +#define FTDI_ELV_WS300_PID 0xC006 /* eQ3 WS 300 PC II */ #define FTDI_ELV_USR_PID 0xE000 /* ELV Universal-Sound-Recorder */ #define FTDI_ELV_MSM1_PID 0xE001 /* ELV Mini-Sound-Modul */ #define FTDI_ELV_KL100_PID 0xE002 /* ELV Kfz-Leistungsmesser KL 100 */ @@ -514,6 +525,11 @@ */ #define FTDI_TAVIR_STK500_PID 0xFA33 /* STK500 AVR programmer */ +/* + * TIAO product ids (FTDI_VID) + * http://www.tiaowiki.com/w/Main_Page + */ +#define FTDI_TIAO_UMPA_PID 0x8a98 /* TIAO/DIYGADGET USB Multi-Protocol Adapter */ /********************************/ @@ -539,7 +555,10 @@ /* * Microchip Technology, Inc. * - * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are also used by: + * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are + * used by single function CDC ACM class based firmware demo + * applications. The VID/PID has also been used in firmware + * emulating FTDI serial chips by: * Hornby Elite - Digital Command Control Console * http://www.hornby.com/hornby-dcc/controllers/ */ @@ -566,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 */ @@ -741,6 +767,14 @@ #define TTI_VID 0x103E /* Vendor Id */ #define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */ +/* + * Newport Cooperation (www.newport.com) + */ +#define NEWPORT_VID 0x104D +#define NEWPORT_AGILIS_PID 0x3000 +#define NEWPORT_CONEX_CC_PID 0x3002 +#define NEWPORT_CONEX_AGP_PID 0x3006 + /* Interbiometrics USB I/O Board */ /* Developed for Interbiometrics by Rudolf Gugler */ #define INTERBIOMETRICS_VID 0x1209 @@ -791,8 +825,34 @@ * Physik Instrumente * http://www.physikinstrumente.com/en/products/ */ +/* These two devices use the VID of FTDI */ +#define PI_C865_PID 0xe0a0 /* PI C-865 Piezomotor Controller */ +#define PI_C857_PID 0xe0a1 /* PI Encoder Trigger Box */ + #define PI_VID 0x1a72 /* Vendor ID */ -#define PI_E861_PID 0x1008 /* E-861 piezo controller USB connection */ +#define PI_C866_PID 0x1000 /* PI C-866 Piezomotor Controller */ +#define PI_C663_PID 0x1001 /* PI C-663 Mercury-Step */ +#define PI_C725_PID 0x1002 /* PI C-725 Piezomotor Controller */ +#define PI_E517_PID 0x1005 /* PI E-517 Digital Piezo Controller Operation Module */ +#define PI_C863_PID 0x1007 /* PI C-863 */ +#define PI_E861_PID 0x1008 /* PI E-861 Piezomotor Controller */ +#define PI_C867_PID 0x1009 /* PI C-867 Piezomotor Controller */ +#define PI_E609_PID 0x100D /* PI E-609 Digital Piezo Controller */ +#define PI_E709_PID 0x100E /* PI E-709 Digital Piezo Controller */ +#define PI_100F_PID 0x100F /* PI Digital Piezo Controller */ +#define PI_1011_PID 0x1011 /* PI Digital Piezo Controller */ +#define PI_1012_PID 0x1012 /* PI Motion Controller */ +#define PI_1013_PID 0x1013 /* PI Motion Controller */ +#define PI_1014_PID 0x1014 /* PI Device */ +#define PI_1015_PID 0x1015 /* PI Device */ +#define PI_1016_PID 0x1016 /* PI Digital Servo Module */ + +/* + * Kondo Kagaku Co.Ltd. + * http://www.kondo-robot.com/EN + */ +#define KONDO_VID 0x165c +#define KONDO_USB_SERIAL_PID 0x0002 /* * Bayer Ascensia Contour blood glucose meter USB-converter cable. @@ -1093,7 +1153,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/) @@ -1216,3 +1277,9 @@ * ATI command output: Cinterion MC55i */ #define FTDI_CINTERION_MC55I_PID 0xA951 + +/* + * Product: Comet Caller ID decoder + * Manufacturer: Crucible Technologies + */ +#define FTDI_CT_COMET_PID 0x8e08 --- linux-3.5.0.orig/drivers/usb/serial/qcserial.c +++ linux-3.5.0/drivers/usb/serial/qcserial.c @@ -55,6 +55,7 @@ {DEVICE_G1K(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ {DEVICE_G1K(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ {DEVICE_G1K(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */ + {DEVICE_G1K(0x1bc7, 0x900e)}, /* Telit Gobi QDL device */ /* Gobi 2000 devices */ {USB_DEVICE(0x1410, 0xa010)}, /* Novatel Gobi 2000 QDL device */ @@ -114,6 +115,8 @@ {USB_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */ {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */ {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */ + {USB_DEVICE(0x0AF0, 0x8120)}, /* Option GTM681W */ + { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-3.5.0.orig/drivers/usb/serial/mos7840.c +++ linux-3.5.0/drivers/usb/serial/mos7840.c @@ -219,14 +219,11 @@ int port_num; /*Actual port number in the device(1,2,etc) */ struct urb *write_urb; /* write URB for this port */ struct urb *read_urb; /* read URB for this port */ - struct urb *int_urb; __u8 shadowLCR; /* last LCR value received */ __u8 shadowMCR; /* last MCR value received */ char open; char open_ports; - char zombie; wait_queue_head_t wait_chase; /* for handling sleeping while waiting for chase to finish */ - wait_queue_head_t delta_msr_wait; /* for handling sleeping while waiting for msr change to happen */ int delta_msr_cond; struct async_icount icount; struct usb_serial_port *port; /* loop back to the owner of this object */ @@ -444,6 +441,9 @@ icount->rng++; smp_wmb(); } + + mos7840_port->delta_msr_cond = 1; + wake_up_interruptible(&port->port->delta_msr_wait); } } @@ -494,7 +494,6 @@ unsigned char *data; struct moschip_port *mos7840_port; __u8 regval = 0x0; - int result = 0; int status = urb->status; mos7840_port = urb->context; @@ -513,7 +512,7 @@ default: dbg("%s - nonzero urb status received: %d", __func__, status); - goto exit; + return; } dbg("%s urb buffer size is %d", __func__, urb->actual_length); @@ -526,17 +525,6 @@ mos7840_handle_new_msr(mos7840_port, regval); else if (mos7840_port->MsrLsr == 1) mos7840_handle_new_lsr(mos7840_port, regval); - -exit: - spin_lock(&mos7840_port->pool_lock); - if (!mos7840_port->zombie) - result = usb_submit_urb(mos7840_port->int_urb, GFP_ATOMIC); - spin_unlock(&mos7840_port->pool_lock); - if (result) { - dev_err(&urb->dev->dev, - "%s - Error %d submitting interrupt urb\n", - __func__, result); - } } static int mos7840_get_reg(struct moschip_port *mcs, __u16 Wval, __u16 reg, @@ -705,14 +693,7 @@ wreg = MODEM_STATUS_REGISTER; break; } - spin_lock(&mos7840_port->pool_lock); - if (!mos7840_port->zombie) { - rv = mos7840_get_reg(mos7840_port, wval, wreg, &Data); - } else { - spin_unlock(&mos7840_port->pool_lock); - return; - } - spin_unlock(&mos7840_port->pool_lock); + rv = mos7840_get_reg(mos7840_port, wval, wreg, &Data); } } } @@ -1184,7 +1165,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)); @@ -1232,9 +1212,12 @@ return 0; spin_lock_irqsave(&mos7840_port->pool_lock, flags); - for (i = 0; i < NUM_URBS; ++i) - if (mos7840_port->busy[i]) - chars += URB_TRANSFER_BUFFER_SIZE; + for (i = 0; i < NUM_URBS; ++i) { + if (mos7840_port->busy[i]) { + struct urb *urb = mos7840_port->write_urb_pool[i]; + chars += urb->transfer_buffer_length; + } + } spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); dbg("%s - returns %d", __func__, chars); return chars; @@ -2114,8 +2097,6 @@ mos7840_port->read_urb_busy = false; } } - wake_up(&mos7840_port->delta_msr_wait); - mos7840_port->delta_msr_cond = 1; dbg("mos7840_change_port_settings mos7840_port->shadowLCR is End %x", mos7840_port->shadowLCR); } @@ -2324,13 +2305,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 && @@ -2356,13 +2342,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 */ @@ -2372,9 +2366,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) @@ -2388,6 +2385,8 @@ MCS_WR_RTYPE, 0x0300 | mcr_data, MODEM_CONTROL_REGISTER, NULL, 0, MOS_WDR_TIMEOUT); + kfree(buf); + if (pass_count == 16) return 1; @@ -2397,11 +2396,17 @@ static int mos7840_calc_num_ports(struct usb_serial *serial) { __u16 data = 0x00; + u8 *buf; int mos7840_num_ports; - 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); + buf = kzalloc(VENDOR_READ_LENGTH, GFP_KERNEL); + if (buf) { + 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); + data = *buf; + kfree(buf); + } if (serial->dev->descriptor.idProduct == MOSCHIP_DEVICE_ID_7810 || serial->dev->descriptor.idProduct == MOSCHIP_DEVICE_ID_7820) { @@ -2682,7 +2687,6 @@ kfree(mos7840_port->ctrl_buf); usb_free_urb(mos7840_port->control_urb); kfree(mos7840_port); - serial->port[i] = NULL; } return status; } @@ -2695,7 +2699,6 @@ static void mos7840_disconnect(struct usb_serial *serial) { int i; - unsigned long flags; struct moschip_port *mos7840_port; if (!serial) { @@ -2712,9 +2715,6 @@ mos7840_port = mos7840_get_port_private(serial->port[i]); dbg ("mos7840_port %d = %p", i, mos7840_port); if (mos7840_port) { - spin_lock_irqsave(&mos7840_port->pool_lock, flags); - mos7840_port->zombie = 1; - spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); usb_kill_urb(mos7840_port->control_urb); } } @@ -2752,6 +2752,7 @@ del_timer_sync(&mos7840_port->led_timer1); del_timer_sync(&mos7840_port->led_timer2); } + usb_free_urb(mos7840_port->control_urb); kfree(mos7840_port->ctrl_buf); kfree(mos7840_port->dr); kfree(mos7840_port); --- linux-3.5.0.orig/drivers/usb/serial/ti_usb_3410_5052.h +++ linux-3.5.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-3.5.0.orig/drivers/usb/serial/mos7720.c +++ linux-3.5.0/drivers/usb/serial/mos7720.c @@ -44,7 +44,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 @@ -234,11 +234,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; } @@ -1684,7 +1695,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); @@ -2088,7 +2099,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); @@ -2133,7 +2144,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-3.5.0.orig/drivers/usb/serial/qcaux.c +++ linux-3.5.0/drivers/usb/serial/qcaux.c @@ -36,8 +36,6 @@ #define UTSTARCOM_PRODUCT_UM175_V1 0x3712 #define UTSTARCOM_PRODUCT_UM175_V2 0x3714 #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715 -#define PANTECH_PRODUCT_UML190_VZW 0x3716 -#define PANTECH_PRODUCT_UML290_VZW 0x3718 /* CMOTECH devices */ #define CMOTECH_VENDOR_ID 0x16d8 @@ -68,11 +66,10 @@ { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xfe, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfd, 0xff) }, /* NMEA */ - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfe, 0xff) }, /* WMC */ - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, /* DIAG */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfd, 0xff) }, /* NMEA */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfe, 0xff) }, /* WMC */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xff, 0xff) }, /* DIAG */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1fac, 0x0151, 0xff, 0xff, 0xff) }, { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-3.5.0.orig/drivers/usb/serial/mct_u232.c +++ linux-3.5.0/drivers/usb/serial/mct_u232.c @@ -118,8 +118,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 @@ -399,7 +397,6 @@ if (!priv) return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->msr_wait); usb_set_serial_port_data(serial->port[0], priv); init_waitqueue_head(&serial->port[0]->write_wait); @@ -416,7 +413,6 @@ return 0; } /* mct_u232_startup */ - static void mct_u232_release(struct usb_serial *serial) { struct mct_u232_private *priv; @@ -502,29 +498,27 @@ unsigned int control_state; struct mct_u232_private *priv = usb_get_serial_port_data(port); - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* drop DTR and RTS */ - spin_lock_irq(&priv->lock); - if (on) - priv->control_state |= TIOCM_DTR | TIOCM_RTS; - else - priv->control_state &= ~(TIOCM_DTR | TIOCM_RTS); - control_state = priv->control_state; - spin_unlock_irq(&priv->lock); - mct_u232_set_modem_ctrl(port->serial, control_state); - } - mutex_unlock(&port->serial->disc_mutex); + spin_lock_irq(&priv->lock); + if (on) + priv->control_state |= TIOCM_DTR | TIOCM_RTS; + else + priv->control_state &= ~(TIOCM_DTR | TIOCM_RTS); + control_state = priv->control_state; + spin_unlock_irq(&priv->lock); + + mct_u232_set_modem_ctrl(port, control_state); } static void mct_u232_close(struct usb_serial_port *port) { - if (port->serial->dev) { - /* shutdown our urbs */ - usb_kill_urb(port->write_urb); - usb_kill_urb(port->read_urb); - usb_kill_urb(port->interrupt_in_urb); - } + /* + * Must kill the read urb as it is actually an interrupt urb, which + * generic close thus fails to kill. + */ + usb_kill_urb(port->read_urb); + usb_kill_urb(port->interrupt_in_urb); + + usb_serial_generic_close(port); } /* mct_u232_close */ @@ -618,7 +612,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); @@ -829,13 +823,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-3.5.0.orig/drivers/usb/serial/ch341.c +++ linux-3.5.0/drivers/usb/serial/ch341.c @@ -82,7 +82,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 */ @@ -253,7 +252,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; @@ -289,7 +287,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) @@ -482,7 +480,7 @@ tty_kref_put(tty); } - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } exit: @@ -508,11 +506,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-3.5.0.orig/drivers/usb/serial/ark3116.c +++ linux-3.5.0/drivers/usb/serial/ark3116.c @@ -49,7 +49,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) }, @@ -68,7 +68,6 @@ } struct ark3116_private { - wait_queue_head_t delta_msr_wait; struct async_icount icount; int irda; /* 1 for irda device */ @@ -148,7 +147,6 @@ if (!priv) return -ENOMEM; - init_waitqueue_head(&priv->delta_msr_wait); mutex_init(&priv->hw_lock); spin_lock_init(&priv->status_lock); @@ -461,10 +459,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) && @@ -585,7 +587,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-3.5.0.orig/drivers/usb/serial/sierra.c +++ linux-3.5.0/drivers/usb/serial/sierra.c @@ -162,7 +162,6 @@ { int result = 0; struct usb_device *udev; - struct sierra_intf_private *data; u8 ifnum; udev = serial->dev; @@ -189,11 +188,6 @@ return -ENODEV; } - data = serial->private = kzalloc(sizeof(struct sierra_intf_private), GFP_KERNEL); - if (!data) - return -ENOMEM; - spin_lock_init(&data->susp_lock); - return result; } @@ -872,29 +866,32 @@ static void sierra_dtr_rts(struct usb_serial_port *port, int on) { - struct usb_serial *serial = port->serial; struct sierra_port_private *portdata; portdata = usb_get_serial_port_data(port); portdata->rts_state = on; portdata->dtr_state = on; - if (serial->dev) { - mutex_lock(&serial->disc_mutex); - if (!serial->disconnected) - sierra_send_setup(port); - mutex_unlock(&serial->disc_mutex); - } + sierra_send_setup(port); } static int sierra_startup(struct usb_serial *serial) { struct usb_serial_port *port; + struct sierra_intf_private *intfdata; struct sierra_port_private *portdata; struct sierra_iface_info *himemoryp = NULL; int i; u8 ifnum; + intfdata = kzalloc(sizeof(*intfdata), GFP_KERNEL); + if (!intfdata) + return -ENOMEM; + + spin_lock_init(&intfdata->susp_lock); + + usb_set_serial_data(serial, intfdata); + /* Set Device mode to D0 */ sierra_set_power_state(serial->dev, 0x0000); @@ -910,7 +907,7 @@ dev_dbg(&port->dev, "%s: kmalloc for " "sierra_port_private (%d) failed!\n", __func__, i); - return -ENOMEM; + goto err; } spin_lock_init(&portdata->lock); init_usb_anchor(&portdata->active); @@ -947,6 +944,14 @@ } return 0; +err: + for (--i; i >= 0; --i) { + portdata = usb_get_serial_port_data(serial->port[i]); + kfree(portdata); + } + kfree(intfdata); + + return -ENOMEM; } static void sierra_release(struct usb_serial *serial) @@ -964,6 +969,7 @@ continue; kfree(portdata); } + kfree(serial->private); } #ifdef CONFIG_PM --- linux-3.5.0.orig/drivers/usb/serial/garmin_gps.c +++ linux-3.5.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-3.5.0.orig/drivers/usb/serial/cp210x.c +++ linux-3.5.0/drivers/usb/serial/cp210x.c @@ -91,6 +91,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 */ @@ -120,6 +121,7 @@ { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */ { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */ { USB_DEVICE(0x10C4, 0x85EB) }, /* AC-Services CIS-IBUS */ + { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ @@ -155,6 +157,25 @@ { 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-3.5.0.orig/drivers/usb/serial/cypress_m8.c +++ linux-3.5.0/drivers/usb/serial/cypress_m8.c @@ -70,6 +70,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 */ }; @@ -83,6 +84,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 */ }; @@ -116,7 +118,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 */ @@ -236,6 +237,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) { @@ -245,6 +252,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 @@ -452,9 +463,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; @@ -872,12 +886,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 */ @@ -1193,7 +1211,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-3.5.0.orig/drivers/usb/serial/option.c +++ linux-3.5.0/drivers/usb/serial/option.c @@ -80,85 +80,10 @@ #define OPTION_PRODUCT_GTM380_MODEM 0x7201 #define HUAWEI_VENDOR_ID 0x12D1 -#define HUAWEI_PRODUCT_E600 0x1001 -#define HUAWEI_PRODUCT_E220 0x1003 -#define HUAWEI_PRODUCT_E220BIS 0x1004 -#define HUAWEI_PRODUCT_E1401 0x1401 -#define HUAWEI_PRODUCT_E1402 0x1402 -#define HUAWEI_PRODUCT_E1403 0x1403 -#define HUAWEI_PRODUCT_E1404 0x1404 -#define HUAWEI_PRODUCT_E1405 0x1405 -#define HUAWEI_PRODUCT_E1406 0x1406 -#define HUAWEI_PRODUCT_E1407 0x1407 -#define HUAWEI_PRODUCT_E1408 0x1408 -#define HUAWEI_PRODUCT_E1409 0x1409 -#define HUAWEI_PRODUCT_E140A 0x140A -#define HUAWEI_PRODUCT_E140B 0x140B -#define HUAWEI_PRODUCT_E140C 0x140C -#define HUAWEI_PRODUCT_E140D 0x140D -#define HUAWEI_PRODUCT_E140E 0x140E -#define HUAWEI_PRODUCT_E140F 0x140F -#define HUAWEI_PRODUCT_E1410 0x1410 -#define HUAWEI_PRODUCT_E1411 0x1411 -#define HUAWEI_PRODUCT_E1412 0x1412 -#define HUAWEI_PRODUCT_E1413 0x1413 -#define HUAWEI_PRODUCT_E1414 0x1414 -#define HUAWEI_PRODUCT_E1415 0x1415 -#define HUAWEI_PRODUCT_E1416 0x1416 -#define HUAWEI_PRODUCT_E1417 0x1417 -#define HUAWEI_PRODUCT_E1418 0x1418 -#define HUAWEI_PRODUCT_E1419 0x1419 -#define HUAWEI_PRODUCT_E141A 0x141A -#define HUAWEI_PRODUCT_E141B 0x141B -#define HUAWEI_PRODUCT_E141C 0x141C -#define HUAWEI_PRODUCT_E141D 0x141D -#define HUAWEI_PRODUCT_E141E 0x141E -#define HUAWEI_PRODUCT_E141F 0x141F -#define HUAWEI_PRODUCT_E1420 0x1420 -#define HUAWEI_PRODUCT_E1421 0x1421 -#define HUAWEI_PRODUCT_E1422 0x1422 -#define HUAWEI_PRODUCT_E1423 0x1423 -#define HUAWEI_PRODUCT_E1424 0x1424 -#define HUAWEI_PRODUCT_E1425 0x1425 -#define HUAWEI_PRODUCT_E1426 0x1426 -#define HUAWEI_PRODUCT_E1427 0x1427 -#define HUAWEI_PRODUCT_E1428 0x1428 -#define HUAWEI_PRODUCT_E1429 0x1429 -#define HUAWEI_PRODUCT_E142A 0x142A -#define HUAWEI_PRODUCT_E142B 0x142B -#define HUAWEI_PRODUCT_E142C 0x142C -#define HUAWEI_PRODUCT_E142D 0x142D -#define HUAWEI_PRODUCT_E142E 0x142E -#define HUAWEI_PRODUCT_E142F 0x142F -#define HUAWEI_PRODUCT_E1430 0x1430 -#define HUAWEI_PRODUCT_E1431 0x1431 -#define HUAWEI_PRODUCT_E1432 0x1432 -#define HUAWEI_PRODUCT_E1433 0x1433 -#define HUAWEI_PRODUCT_E1434 0x1434 -#define HUAWEI_PRODUCT_E1435 0x1435 -#define HUAWEI_PRODUCT_E1436 0x1436 -#define HUAWEI_PRODUCT_E1437 0x1437 -#define HUAWEI_PRODUCT_E1438 0x1438 -#define HUAWEI_PRODUCT_E1439 0x1439 -#define HUAWEI_PRODUCT_E143A 0x143A -#define HUAWEI_PRODUCT_E143B 0x143B -#define HUAWEI_PRODUCT_E143C 0x143C -#define HUAWEI_PRODUCT_E143D 0x143D -#define HUAWEI_PRODUCT_E143E 0x143E -#define HUAWEI_PRODUCT_E143F 0x143F +#define HUAWEI_PRODUCT_E173 0x140C #define HUAWEI_PRODUCT_K4505 0x1464 #define HUAWEI_PRODUCT_K3765 0x1465 -#define HUAWEI_PRODUCT_E14AC 0x14AC -#define HUAWEI_PRODUCT_K3806 0x14AE #define HUAWEI_PRODUCT_K4605 0x14C6 -#define HUAWEI_PRODUCT_K5005 0x14C8 -#define HUAWEI_PRODUCT_K3770 0x14C9 -#define HUAWEI_PRODUCT_K3771 0x14CA -#define HUAWEI_PRODUCT_K4510 0x14CB -#define HUAWEI_PRODUCT_K4511 0x14CC -#define HUAWEI_PRODUCT_ETS1220 0x1803 -#define HUAWEI_PRODUCT_E353 0x1506 -#define HUAWEI_PRODUCT_E173S 0x1C05 #define QUANTA_VENDOR_ID 0x0408 #define QUANTA_PRODUCT_Q101 0xEA02 @@ -233,6 +158,7 @@ #define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0x8001 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0x9000 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0x9001 +#define NOVATELWIRELESS_PRODUCT_E362 0x9010 #define NOVATELWIRELESS_PRODUCT_G1 0xA001 #define NOVATELWIRELESS_PRODUCT_G1_M 0xA002 #define NOVATELWIRELESS_PRODUCT_G2 0xA010 @@ -268,6 +194,10 @@ #define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181 #define DELL_PRODUCT_5730_MINICARD_VZW 0x8182 +#define DELL_PRODUCT_5800_MINICARD_VZW 0x8195 /* Novatel E362 */ +#define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */ +#define DELL_PRODUCT_5804_MINICARD_ATT 0x819b /* Novatel E371 */ + #define KYOCERA_VENDOR_ID 0x0c88 #define KYOCERA_PRODUCT_KPC650 0x17da #define KYOCERA_PRODUCT_KPC680 0x180a @@ -313,6 +243,7 @@ #define TELIT_PRODUCT_CC864_DUAL 0x1005 #define TELIT_PRODUCT_CC864_SINGLE 0x1006 #define TELIT_PRODUCT_DE910_DUAL 0x1010 +#define TELIT_PRODUCT_LE920 0x1200 /* ZTE PRODUCTS */ #define ZTE_VENDOR_ID 0x19d2 @@ -358,6 +289,8 @@ /* ALCATEL PRODUCTS */ #define ALCATEL_VENDOR_ID 0x1bbb #define ALCATEL_PRODUCT_X060S_X200 0x0000 +#define ALCATEL_PRODUCT_X220_X500D 0x0017 +#define ALCATEL_PRODUCT_L100V 0x011e #define PIRELLI_VENDOR_ID 0x1266 #define PIRELLI_PRODUCT_C100_1 0x1002 @@ -409,10 +342,13 @@ #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 /* Celot products */ #define CELOT_VENDOR_ID 0x211f @@ -499,9 +435,12 @@ #define MEDIATEK_VENDOR_ID 0x0e8d #define MEDIATEK_PRODUCT_DC_1COM 0x00a0 #define MEDIATEK_PRODUCT_DC_4COM 0x00a5 +#define MEDIATEK_PRODUCT_DC_4COM2 0x00a7 #define MEDIATEK_PRODUCT_DC_5COM 0x00a4 #define MEDIATEK_PRODUCT_7208_1COM 0x7101 #define MEDIATEK_PRODUCT_7208_2COM 0x7102 +#define MEDIATEK_PRODUCT_7103_2COM 0x7103 +#define MEDIATEK_PRODUCT_7106_2COM 0x7106 #define MEDIATEK_PRODUCT_FP_1COM 0x0003 #define MEDIATEK_PRODUCT_FP_2COM 0x0023 #define MEDIATEK_PRODUCT_FPDC_1COM 0x0043 @@ -511,6 +450,18 @@ #define CELLIENT_VENDOR_ID 0x2692 #define CELLIENT_PRODUCT_MEN200 0x9005 +/* Hyundai Petatel Inc. products */ +#define PETATEL_VENDOR_ID 0x1ff4 +#define PETATEL_PRODUCT_NP10T 0x600e + +/* TP-LINK Incorporated products */ +#define TPLINK_VENDOR_ID 0x2357 +#define TPLINK_PRODUCT_MA180 0x0201 + +/* Changhong products */ +#define CHANGHONG_VENDOR_ID 0x2077 +#define CHANGHONG_PRODUCT_CH690 0x7001 + /* some devices interfaces need special handling due to a number of reasons */ enum option_blacklist_reason { OPTION_BLACKLIST_NONE = 0, @@ -532,6 +483,7 @@ static const struct option_blacklist_info alcatel_x200_blacklist = { .sendsetup = BIT(0) | BIT(1), + .reserved = BIT(4), }; static const struct option_blacklist_info zte_0037_blacklist = { @@ -579,11 +531,24 @@ .reserved = BIT(5), }; +static const struct option_blacklist_info net_intf6_blacklist = { + .reserved = BIT(6), +}; + static const struct option_blacklist_info zte_mf626_blacklist = { .sendsetup = BIT(0) | BIT(1), .reserved = BIT(4), }; +static const struct option_blacklist_info zte_1255_blacklist = { + .reserved = BIT(3) | BIT(4), +}; + +static const struct option_blacklist_info telit_le920_blacklist = { + .sendsetup = BIT(0), + .reserved = BIT(1) | BIT(5), +}; + static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, @@ -615,104 +580,134 @@ { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLX) }, { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GKE) }, { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLE) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1402, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1404, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1407, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1420, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1421, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1422, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1423, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1424, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1425, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1426, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1427, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1428, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1429, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1430, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1431, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1432, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1433, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1434, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1435, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1436, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1437, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1438, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1439, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E173S, 0xff, 0xff, 0xff) }, + { USB_DEVICE(QUANTA_VENDOR_ID, 0xea42), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x1c05, USB_CLASS_COMM, 0x02, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 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, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 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_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x33) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x02) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x03) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x10) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x12) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x13) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x01) }, /* E398 3G Modem */ - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x02) }, /* E398 3G PC UI Interface */ - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x03) }, /* E398 3G Application Interface */ + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0xff, 0xff) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x02) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x03) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x04) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x05) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x06) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x10) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x12) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x13) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x14) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x15) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x17) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x18) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x19) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x31) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x32) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x33) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x34) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x35) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x36) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x48) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x49) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x61) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x62) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x63) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x64) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x65) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x66) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x78) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x79) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x02) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x03) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x04) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x05) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x06) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x10) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x12) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x13) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x14) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x15) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x17) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x18) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x19) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x31) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x32) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x33) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x34) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x35) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x36) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x48) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x49) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x61) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x62) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x63) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x64) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x65) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x66) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x78) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x79) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7C) }, + + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, @@ -754,6 +749,7 @@ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) }, /* Novatel Ovation MC551 a.k.a. Verizon USB551L */ { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E362, 0xff, 0xff, 0xff) }, { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, @@ -776,6 +772,9 @@ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ + { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_MINICARD_VZW, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_V2_MINICARD_VZW, 0xff, 0xff, 0xff) }, + { USB_DEVICE_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) }, @@ -810,6 +809,8 @@ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), + .driver_info = (kernel_ulong_t)&telit_le920_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, @@ -910,14 +911,24 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0117, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0118, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0121, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0118, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0121, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0122, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0123, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0124, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0125, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0126, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0123, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0124, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0125, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0126, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0128, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0135, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0136, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0137, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0139, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0142, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0143, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0144, 0xff, 0xff, 0xff) }, @@ -927,8 +938,10 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0159, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) }, @@ -936,11 +949,40 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0167, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0189, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0191, 0xff, 0xff, 0xff), /* ZTE EuFi890 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0196, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0197, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0199, 0xff, 0xff, 0xff), /* ZTE MF820S */ + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0200, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0201, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0254, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0257, 0xff, 0xff, 0xff), /* ZTE MF821 */ + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0265, 0xff, 0xff, 0xff), /* ONDA MT8205 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff), /* ZTE MF880 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0317, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0326, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0330, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0395, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 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), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1018, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1021, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1057, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1058, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1059, 0xff, 0xff, 0xff) }, @@ -1056,18 +1098,24 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1169, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1170, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1244, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1245, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1245, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1246, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1247, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1247, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1248, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1249, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1250, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1251, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1252, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1252, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1253, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1254, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1255, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1256, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1254, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1255, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&zte_1255_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1256, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1257, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1258, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1259, 0xff, 0xff, 0xff) }, @@ -1112,8 +1160,20 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1301, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1302, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1303, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1333, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1401, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1424, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1425, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff), /* ZTE MF91 */ + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) }, @@ -1125,15 +1185,21 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0147, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, @@ -1145,6 +1211,10 @@ .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist }, + { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) }, + { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) }, + { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */ @@ -1162,6 +1232,16 @@ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x0052), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x00b6), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x00b7), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), @@ -1190,6 +1270,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) }, @@ -1198,6 +1281,7 @@ { 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(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.*/ @@ -1266,7 +1350,21 @@ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_2COM, 0x0a, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7103_2COM, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) }, { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) }, + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) }, + { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) }, + { 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) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); --- linux-3.5.0.orig/drivers/usb/serial/quatech2.c +++ linux-3.5.0/drivers/usb/serial/quatech2.c @@ -132,7 +132,6 @@ u8 shadowLSR; u8 shadowMSR; - wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */ struct async_icount icount; struct usb_serial_port *port; @@ -434,6 +433,12 @@ port_priv->urb_in_use = false; spin_unlock_irqrestore(&port_priv->urb_lock, flags); + mutex_lock(&port->serial->disc_mutex); + if (port->serial->disconnected) { + mutex_unlock(&port->serial->disc_mutex); + return; + } + /* flush the port transmit buffer */ i = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), @@ -465,6 +470,7 @@ dev_err(&port->dev, "%s - close port failed %i\n", __func__, i); + mutex_unlock(&port->serial->disc_mutex); } static void qt2_disconnect(struct usb_serial *serial) @@ -521,8 +527,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))); @@ -530,6 +537,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); @@ -829,6 +839,7 @@ if (status != 0) { dev_err(&serial->dev->dev, "%s - submit read urb failed %i\n", __func__, status); + usb_free_urb(serial_priv->read_urb); return status; } @@ -873,7 +884,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 = serial->port[pcount]; @@ -968,19 +978,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) @@ -1009,7 +1017,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-3.5.0.orig/drivers/usb/serial/io_edgeport.c +++ linux-3.5.0/drivers/usb/serial/io_edgeport.c @@ -114,7 +114,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 */ @@ -1701,13 +1699,17 @@ dbg("%s (%d) TIOCMIWAIT", __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) @@ -2088,7 +2090,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-3.5.0.orig/drivers/usb/serial/ti_usb_3410_5052.c +++ linux-3.5.0/drivers/usb/serial/ti_usb_3410_5052.c @@ -75,7 +75,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) }, }; @@ -421,7 +421,6 @@ tport->tp_uart_base_addr = (i == 0 ? TI_UART1_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)) { @@ -800,9 +799,13 @@ dbg("%s - (%d) TIOCMIWAIT", __func__, port->number); 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) @@ -1414,7 +1417,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); } --- linux-3.5.0.orig/drivers/usb/serial/usb-serial.c +++ linux-3.5.0/drivers/usb/serial/usb-serial.c @@ -157,6 +157,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 = { @@ -888,6 +899,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); @@ -1426,9 +1438,10 @@ /* we only set the reset_resume field if the serial_driver has one */ for (sd = serial_drivers; *sd; ++sd) { - if ((*sd)->reset_resume) + if ((*sd)->reset_resume) { udriver->reset_resume = usb_serial_reset_resume; break; + } } rc = usb_register(udriver); --- linux-3.5.0.orig/drivers/usb/serial/ssu100.c +++ linux-3.5.0/drivers/usb/serial/ssu100.c @@ -65,7 +65,6 @@ spinlock_t status_lock; u8 shadowLSR; u8 shadowMSR; - wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */ struct async_icount icount; }; @@ -366,8 +365,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))); @@ -375,6 +375,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); @@ -455,7 +458,6 @@ } spin_lock_init(&priv->status_lock); - init_waitqueue_head(&priv->delta_msr_wait); usb_set_serial_port_data(port, priv); return ssu100_initdevice(serial->dev); @@ -505,19 +507,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) @@ -539,7 +538,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-3.5.0.orig/drivers/usb/serial/oti6858.c +++ linux-3.5.0/drivers/usb/serial/oti6858.c @@ -191,7 +191,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 */ }; @@ -345,7 +344,6 @@ break; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->intr_wait); /* INIT_WORK(&priv->setup_work, setup_line, serial->port[i]); */ /* INIT_WORK(&priv->write_work, send_data, serial->port[i]); */ priv->port = port; @@ -672,11 +670,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); @@ -783,7 +785,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-3.5.0.orig/drivers/usb/serial/io_ti.c +++ linux-3.5.0/drivers/usb/serial/io_ti.c @@ -91,9 +91,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. */ @@ -543,6 +540,9 @@ wait_queue_t wait; unsigned long flags; + if (!tty) + return; + if (!timeout) timeout = (HZ * EDGE_CLOSING_WAIT)/100; @@ -1539,7 +1539,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 */ @@ -1857,7 +1857,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); @@ -2549,10 +2548,14 @@ dbg("%s - (%d) TIOCMIWAIT", __func__, port->number); 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) @@ -2769,6 +2772,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-3.5.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-3.5.0/drivers/usb/serial/ftdi_sio.c @@ -74,9 +74,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 */ struct usb_serial_port *port; __u16 interface; /* FT2232C, FT2232H or FT4232H port interface @@ -197,6 +195,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) }, @@ -584,9 +586,12 @@ { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TAVIR_STK500_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_TIAO_UMPA_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, /* * ELV devices: */ + { USB_DEVICE(FTDI_ELV_VID, FTDI_ELV_WS300_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_USR_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_MSM1_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_KL100_PID) }, @@ -644,6 +649,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) }, @@ -673,6 +679,7 @@ { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_5_PID) }, { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_6_PID) }, { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_OMNI1509) }, { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_MHAM_KW_PID) }, @@ -704,6 +711,7 @@ { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_NZR_SEM_USB_PID) }, { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) }, { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) }, { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) }, @@ -804,13 +812,33 @@ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, - { USB_DEVICE(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID) }, + { USB_DEVICE_AND_INTERFACE_INFO(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID, + USB_CLASS_VENDOR_SPEC, + USB_SUBCLASS_VENDOR_SPEC, 0x00) }, { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) }, { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) }, { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) }, + { USB_DEVICE(FTDI_VID, PI_C865_PID) }, + { USB_DEVICE(FTDI_VID, PI_C857_PID) }, + { USB_DEVICE(PI_VID, PI_C866_PID) }, + { USB_DEVICE(PI_VID, PI_C663_PID) }, + { USB_DEVICE(PI_VID, PI_C725_PID) }, + { USB_DEVICE(PI_VID, PI_E517_PID) }, + { USB_DEVICE(PI_VID, PI_C863_PID) }, { USB_DEVICE(PI_VID, PI_E861_PID) }, + { USB_DEVICE(PI_VID, PI_C867_PID) }, + { USB_DEVICE(PI_VID, PI_E609_PID) }, + { USB_DEVICE(PI_VID, PI_E709_PID) }, + { USB_DEVICE(PI_VID, PI_100F_PID) }, + { USB_DEVICE(PI_VID, PI_1011_PID) }, + { USB_DEVICE(PI_VID, PI_1012_PID) }, + { USB_DEVICE(PI_VID, PI_1013_PID) }, + { USB_DEVICE(PI_VID, PI_1014_PID) }, + { USB_DEVICE(PI_VID, PI_1015_PID) }, + { USB_DEVICE(PI_VID, PI_1016_PID) }, + { USB_DEVICE(KONDO_VID, KONDO_USB_SERIAL_PID) }, { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) }, { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, @@ -851,12 +879,16 @@ { 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), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) }, + /* Crucible Devices */ + { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) }, { }, /* Optional parameter entry */ { } /* Terminating entry */ }; @@ -1666,10 +1698,8 @@ kref_init(&priv->kref); mutex_init(&priv->cfg_lock); memset(&priv->icount, 0x00, sizeof(priv->icount)); - 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); @@ -1764,27 +1794,31 @@ struct usb_device *udev = serial->dev; if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) || - (udev->product && !strcmp(udev->product, "BeagleBone/XDS100"))) + (udev->product && !strcmp(udev->product, "BeagleBone/XDS100V2"))) return ftdi_jtag_probe(serial); return 0; } /* - * 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; } /* @@ -1816,8 +1850,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); @@ -1862,24 +1895,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); } /* @@ -1968,7 +1999,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; } @@ -2106,7 +2137,7 @@ cflag = termios->c_cflag; - if (old_termios == 0) + if (!old_termios) goto no_skip; if (old_termios->c_cflag == termios->c_cflag @@ -2367,11 +2398,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)) || @@ -2381,8 +2416,6 @@ } cprev = cnow; } - return -EIO; - break; case TIOCSERGETLSR: return get_lsr_info(port, (struct serial_struct __user *)arg); break; --- linux-3.5.0.orig/drivers/usb/serial/keyspan.c +++ linux-3.5.0/drivers/usb/serial/keyspan.c @@ -1670,7 +1670,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; dbg("%s - endpoint %d", __func__, usb_pipeendpoint(this_urb->pipe)); --- linux-3.5.0.orig/drivers/usb/serial/visor.c +++ linux-3.5.0/drivers/usb/serial/visor.c @@ -570,10 +570,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-3.5.0.orig/drivers/usb/serial/spcp8x5.c +++ linux-3.5.0/drivers/usb/serial/spcp8x5.c @@ -154,7 +154,6 @@ struct spcp8x5_private { spinlock_t lock; enum spcp8x5_type type; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; }; @@ -188,7 +187,6 @@ goto cleanup; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); priv->type = type; usb_set_serial_port_data(serial->port[i] , priv); } @@ -331,7 +329,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; @@ -340,15 +337,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) { @@ -438,7 +435,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; @@ -459,7 +455,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); @@ -491,7 +487,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; @@ -541,12 +537,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-3.5.0.orig/drivers/usb/gadget/f_subset.c +++ linux-3.5.0/drivers/usb/gadget/f_subset.c @@ -370,9 +370,9 @@ usb_free_descriptors(f->hs_descriptors); /* we might as well release our claims on endpoints */ - if (geth->port.out_ep->desc) + if (geth->port.out_ep) geth->port.out_ep->driver_data = NULL; - if (geth->port.in_ep->desc) + if (geth->port.in_ep) geth->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/dummy_hcd.c +++ linux-3.5.0/drivers/usb/gadget/dummy_hcd.c @@ -126,10 +126,7 @@ static const char *const ep_name[] = { ep0name, /* everyone has ep0 */ - /* act like a net2280: high speed, six configurable endpoints */ - "ep-a", "ep-b", "ep-c", "ep-d", "ep-e", "ep-f", - - /* or like pxa250: fifteen fixed function endpoints */ + /* act like a pxa250: fifteen fixed function endpoints */ "ep1in-bulk", "ep2out-bulk", "ep3in-iso", "ep4out-iso", "ep5in-int", "ep6in-bulk", "ep7out-bulk", "ep8in-iso", "ep9out-iso", "ep10in-int", "ep11in-bulk", "ep12out-bulk", "ep13in-iso", "ep14out-iso", @@ -137,6 +134,10 @@ /* or like sa1100: two fixed function endpoints */ "ep1out-bulk", "ep2in-bulk", + + /* and now some generic EPs so we have enough in multi config */ + "ep3out", "ep4in", "ep5out", "ep6out", "ep7in", "ep8out", "ep9in", + "ep10out", "ep11out", "ep12in", "ep13out", "ep14in", "ep15out", }; #define DUMMY_ENDPOINTS ARRAY_SIZE(ep_name) @@ -1916,6 +1917,27 @@ return retval; } +/* usb 3.0 root hub device descriptor */ +struct { + struct usb_bos_descriptor bos; + struct usb_ss_cap_descriptor ss_cap; +} __packed usb3_bos_desc = { + + .bos = { + .bLength = USB_DT_BOS_SIZE, + .bDescriptorType = USB_DT_BOS, + .wTotalLength = cpu_to_le16(sizeof(usb3_bos_desc)), + .bNumDeviceCaps = 1, + }, + .ss_cap = { + .bLength = USB_DT_USB_SS_CAP_SIZE, + .bDescriptorType = USB_DT_DEVICE_CAPABILITY, + .bDevCapabilityType = USB_SS_CAP_TYPE, + .wSpeedSupported = cpu_to_le16(USB_5GBPS_OPERATION), + .bFunctionalitySupport = ilog2(USB_5GBPS_OPERATION), + }, +}; + static inline void ss_hub_descriptor(struct usb_hub_descriptor *desc) { @@ -2006,6 +2028,18 @@ else hub_descriptor((struct usb_hub_descriptor *) buf); break; + + case DeviceRequest | USB_REQ_GET_DESCRIPTOR: + if (hcd->speed != HCD_USB3) + goto error; + + if ((wValue >> 8) != USB_DT_BOS) + goto error; + + memcpy(buf, &usb3_bos_desc, sizeof(usb3_bos_desc)); + retval = sizeof(usb3_bos_desc); + break; + case GetHubStatus: *(__le32 *) buf = cpu_to_le32(0); break; @@ -2503,10 +2537,8 @@ hs_hcd->has_tt = 1; retval = usb_add_hcd(hs_hcd, 0, 0); - if (retval != 0) { - usb_put_hcd(hs_hcd); - return retval; - } + if (retval) + goto put_usb2_hcd; if (mod_data.is_super_speed) { ss_hcd = usb_create_shared_hcd(&dummy_hcd, &pdev->dev, @@ -2525,6 +2557,8 @@ put_usb3_hcd: usb_put_hcd(ss_hcd); dealloc_usb2_hcd: + usb_remove_hcd(hs_hcd); +put_usb2_hcd: usb_put_hcd(hs_hcd); the_controller.hs_hcd = the_controller.ss_hcd = NULL; return retval; --- linux-3.5.0.orig/drivers/usb/gadget/f_midi.c +++ linux-3.5.0/drivers/usb/gadget/f_midi.c @@ -416,6 +416,7 @@ midi->id = NULL; usb_free_descriptors(f->descriptors); + usb_free_descriptors(f->hs_descriptors); kfree(midi); } --- linux-3.5.0.orig/drivers/usb/gadget/f_ecm.c +++ linux-3.5.0/drivers/usb/gadget/f_ecm.c @@ -808,9 +808,9 @@ /* we might as well release our claims on endpoints */ if (ecm->notify) ecm->notify->driver_data = NULL; - if (ecm->port.out_ep->desc) + if (ecm->port.out_ep) ecm->port.out_ep->driver_data = NULL; - if (ecm->port.in_ep->desc) + if (ecm->port.in_ep) ecm->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_rndis.c +++ linux-3.5.0/drivers/usb/gadget/f_rndis.c @@ -803,9 +803,9 @@ /* we might as well release our claims on endpoints */ if (rndis->notify) rndis->notify->driver_data = NULL; - if (rndis->port.out_ep->desc) + if (rndis->port.out_ep) rndis->port.out_ep->driver_data = NULL; - if (rndis->port.in_ep->desc) + if (rndis->port.in_ep) rndis->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_ncm.c +++ linux-3.5.0/drivers/usb/gadget/f_ncm.c @@ -1259,9 +1259,9 @@ /* we might as well release our claims on endpoints */ if (ncm->notify) ncm->notify->driver_data = NULL; - if (ncm->port.out_ep->desc) + if (ncm->port.out_ep) ncm->port.out_ep->driver_data = NULL; - if (ncm->port.in_ep->desc) + if (ncm->port.in_ep) ncm->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_uvc.c +++ linux-3.5.0/drivers/usb/gadget/f_uvc.c @@ -335,7 +335,6 @@ return -ENOMEM; video->parent = &cdev->gadget->dev; - video->minor = -1; video->fops = &uvc_v4l2_fops; video->release = video_device_release; strncpy(video->name, cdev->gadget->name, sizeof(video->name)); @@ -462,23 +461,12 @@ INFO(cdev, "uvc_function_unbind\n"); - if (uvc->vdev) { - if (uvc->vdev->minor == -1) - video_device_release(uvc->vdev); - else - video_unregister_device(uvc->vdev); - uvc->vdev = NULL; - } - - if (uvc->control_ep) - uvc->control_ep->driver_data = NULL; - if (uvc->video.ep) - uvc->video.ep->driver_data = NULL; + video_unregister_device(uvc->vdev); + uvc->control_ep->driver_data = NULL; + uvc->video.ep->driver_data = NULL; - if (uvc->control_req) { - usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); - kfree(uvc->control_buf); - } + usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); + kfree(uvc->control_buf); kfree(f->descriptors); kfree(f->hs_descriptors); @@ -563,7 +551,22 @@ return 0; error: - uvc_function_unbind(c, f); + if (uvc->vdev) + video_device_release(uvc->vdev); + + if (uvc->control_ep) + uvc->control_ep->driver_data = NULL; + if (uvc->video.ep) + uvc->video.ep->driver_data = NULL; + + if (uvc->control_req) { + usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); + kfree(uvc->control_buf); + } + + kfree(f->descriptors); + kfree(f->hs_descriptors); + kfree(f->ss_descriptors); return ret; } --- linux-3.5.0.orig/drivers/usb/gadget/tcm_usb_gadget.c +++ linux-3.5.0/drivers/usb/gadget/tcm_usb_gadget.c @@ -1983,7 +1983,6 @@ .bInterfaceClass = USB_CLASS_MASS_STORAGE, .bInterfaceSubClass = USB_SC_SCSI, .bInterfaceProtocol = USB_PR_BULK, - .iInterface = USB_G_STR_INT_UAS, }; static struct usb_interface_descriptor uasp_intf_desc = { @@ -1994,7 +1993,6 @@ .bInterfaceClass = USB_CLASS_MASS_STORAGE, .bInterfaceSubClass = USB_SC_SCSI, .bInterfaceProtocol = USB_PR_UAS, - .iInterface = USB_G_STR_INT_BBB, }; static struct usb_endpoint_descriptor uasp_bi_desc = { @@ -2163,6 +2161,7 @@ (struct usb_descriptor_header *) &uasp_status_pipe_desc, (struct usb_descriptor_header *) &uasp_fs_cmd_desc, (struct usb_descriptor_header *) &uasp_cmd_pipe_desc, + NULL, }; static struct usb_descriptor_header *uasp_hs_function_desc[] = { @@ -2215,20 +2214,16 @@ .bDeviceClass = USB_CLASS_PER_INTERFACE, .idVendor = cpu_to_le16(UAS_VENDOR_ID), .idProduct = cpu_to_le16(UAS_PRODUCT_ID), - .iManufacturer = USB_G_STR_MANUFACTOR, - .iProduct = USB_G_STR_PRODUCT, - .iSerialNumber = USB_G_STR_SERIAL, - .bNumConfigurations = 1, }; static struct usb_string usbg_us_strings[] = { - { USB_G_STR_MANUFACTOR, "Target Manufactor"}, - { USB_G_STR_PRODUCT, "Target Product"}, - { USB_G_STR_SERIAL, "000000000001"}, - { USB_G_STR_CONFIG, "default config"}, - { USB_G_STR_INT_UAS, "USB Attached SCSI"}, - { USB_G_STR_INT_BBB, "Bulk Only Transport"}, + [USB_G_STR_MANUFACTOR].s = "Target Manufactor", + [USB_G_STR_PRODUCT].s = "Target Product", + [USB_G_STR_SERIAL].s = "000000000001", + [USB_G_STR_CONFIG].s = "default config", + [USB_G_STR_INT_UAS].s = "USB Attached SCSI", + [USB_G_STR_INT_BBB].s = "Bulk Only Transport", { }, }; @@ -2250,7 +2245,6 @@ static struct usb_configuration usbg_config_driver = { .label = "Linux Target", .bConfigurationValue = 1, - .iConfiguration = USB_G_STR_CONFIG, .bmAttributes = USB_CONFIG_ATT_SELFPOWER, }; @@ -2423,6 +2417,9 @@ fu->function.disable = usbg_disable; fu->tpg = the_only_tpg_I_currently_have; + bot_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_BBB].id; + uasp_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_UAS].id; + ret = usb_add_function(c, &fu->function); if (ret) goto err; @@ -2437,6 +2434,17 @@ { int ret; + ret = usb_string_ids_tab(cdev, usbg_us_strings); + if (ret) + return ret; + + usbg_device_desc.iManufacturer = + usbg_us_strings[USB_G_STR_MANUFACTOR].id; + usbg_device_desc.iProduct = usbg_us_strings[USB_G_STR_PRODUCT].id; + usbg_device_desc.iSerialNumber = usbg_us_strings[USB_G_STR_SERIAL].id; + usbg_config_driver.iConfiguration = + usbg_us_strings[USB_G_STR_CONFIG].id; + ret = usb_add_config(cdev, &usbg_config_driver, usbg_cfg_bind); return 0; --- linux-3.5.0.orig/drivers/usb/gadget/f_phonet.c +++ linux-3.5.0/drivers/usb/gadget/f_phonet.c @@ -531,7 +531,7 @@ req = usb_ep_alloc_request(fp->out_ep, GFP_KERNEL); if (!req) - goto err; + goto err_req; req->complete = pn_rx_complete; fp->out_reqv[i] = req; @@ -540,14 +540,18 @@ /* Outgoing USB requests */ fp->in_req = usb_ep_alloc_request(fp->in_ep, GFP_KERNEL); if (!fp->in_req) - goto err; + goto err_req; INFO(cdev, "USB CDC Phonet function\n"); INFO(cdev, "using %s, OUT %s, IN %s\n", cdev->gadget->name, fp->out_ep->name, fp->in_ep->name); return 0; +err_req: + for (i = 0; i < phonet_rxq_size && fp->out_reqv[i]; i++) + usb_ep_free_request(fp->out_ep, fp->out_reqv[i]); err: + if (fp->out_ep) fp->out_ep->driver_data = NULL; if (fp->in_ep) --- linux-3.5.0.orig/drivers/usb/gadget/printer.c +++ linux-3.5.0/drivers/usb/gadget/printer.c @@ -141,18 +141,14 @@ * descriptors are built on demand. */ -#define STRING_MANUFACTURER 1 -#define STRING_PRODUCT 2 -#define STRING_SERIALNUM 3 +#define STRING_MANUFACTURER 0 +#define STRING_PRODUCT 1 +#define STRING_SERIALNUM 2 /* holds our biggest descriptor */ #define USB_DESC_BUFSIZE 256 #define USB_BUFSIZE 8192 -/* This device advertises one configuration. */ -#define DEV_CONFIG_VALUE 1 -#define PRINTER_INTERFACE 0 - static struct usb_device_descriptor device_desc = { .bLength = sizeof device_desc, .bDescriptorType = USB_DT_DEVICE, @@ -162,16 +158,12 @@ .bDeviceProtocol = 0, .idVendor = cpu_to_le16(PRINTER_VENDOR_NUM), .idProduct = cpu_to_le16(PRINTER_PRODUCT_NUM), - .iManufacturer = STRING_MANUFACTURER, - .iProduct = STRING_PRODUCT, - .iSerialNumber = STRING_SERIALNUM, .bNumConfigurations = 1 }; static struct usb_interface_descriptor intf_desc = { .bLength = sizeof intf_desc, .bDescriptorType = USB_DT_INTERFACE, - .bInterfaceNumber = PRINTER_INTERFACE, .bNumEndpoints = 2, .bInterfaceClass = USB_CLASS_PRINTER, .bInterfaceSubClass = 1, /* Printer Sub-Class */ @@ -260,9 +252,9 @@ /* static strings, in UTF-8 */ static struct usb_string strings [] = { - { STRING_MANUFACTURER, manufacturer, }, - { STRING_PRODUCT, product_desc, }, - { STRING_SERIALNUM, serial_num, }, + [STRING_MANUFACTURER].s = manufacturer, + [STRING_PRODUCT].s = product_desc, + [STRING_SERIALNUM].s = serial_num, { } /* end of list */ }; @@ -871,25 +863,13 @@ int result = 0; /* Free the current interface */ - switch (dev->interface) { - case PRINTER_INTERFACE: - printer_reset_interface(dev); - break; - } + printer_reset_interface(dev); - switch (number) { - case PRINTER_INTERFACE: - result = set_printer_interface(dev); - if (result) { - printer_reset_interface(dev); - } else { - dev->interface = PRINTER_INTERFACE; - } - break; - default: - result = -EINVAL; - /* FALL THROUGH */ - } + result = set_printer_interface(dev); + if (result) + printer_reset_interface(dev); + else + dev->interface = number; if (!result) INFO(dev, "Using interface %x\n", number); @@ -972,7 +952,7 @@ switch (ctrl->bRequest) { case 0: /* Get the IEEE-1284 PNP String */ /* Only one printer interface is supported. */ - if ((wIndex>>8) != PRINTER_INTERFACE) + if ((wIndex>>8) != dev->interface) break; value = (pnp_string[0]<<8)|pnp_string[1]; @@ -983,7 +963,7 @@ case 1: /* Get Port Status */ /* Only one printer interface is supported. */ - if (wIndex != PRINTER_INTERFACE) + if (wIndex != dev->interface) break; *(u8 *)req->buf = dev->printer_status; @@ -992,7 +972,7 @@ case 2: /* Soft Reset */ /* Only one printer interface is supported. */ - if (wIndex != PRINTER_INTERFACE) + if (wIndex != dev->interface) break; printer_soft_reset(dev); @@ -1020,6 +1000,37 @@ static int __init printer_func_bind(struct usb_configuration *c, struct usb_function *f) { + struct printer_dev *dev = container_of(f, struct printer_dev, function); + struct usb_composite_dev *cdev = c->cdev; + struct usb_ep *in_ep, *out_ep; + int id; + + id = usb_interface_id(c, f); + if (id < 0) + return id; + intf_desc.bInterfaceNumber = id; + + /* all we really need is bulk IN/OUT */ + in_ep = usb_ep_autoconfig(cdev->gadget, &fs_ep_in_desc); + if (!in_ep) { +autoconf_fail: + dev_err(&cdev->gadget->dev, "can't autoconfigure on %s\n", + cdev->gadget->name); + return -ENODEV; + } + in_ep->driver_data = in_ep; /* claim */ + + out_ep = usb_ep_autoconfig(cdev->gadget, &fs_ep_out_desc); + if (!out_ep) + goto autoconf_fail; + out_ep->driver_data = out_ep; /* claim */ + + /* assumes that all endpoints are dual-speed */ + hs_ep_in_desc.bEndpointAddress = fs_ep_in_desc.bEndpointAddress; + hs_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress; + + dev->in_ep = in_ep; + dev->out_ep = out_ep; return 0; } @@ -1035,7 +1046,8 @@ int ret = -ENOTSUPP; if (!alt) - ret = set_interface(dev, PRINTER_INTERFACE); + ret = set_interface(dev, intf); + return ret; } @@ -1107,13 +1119,14 @@ { struct usb_gadget *gadget = c->cdev->gadget; struct printer_dev *dev; - struct usb_ep *in_ep, *out_ep; int status = -ENOMEM; int gcnum; size_t len; u32 i; struct usb_request *req; + usb_ep_autoconfig_reset(gadget); + dev = &usb_printer_gadget; dev->function.name = shortname; @@ -1125,6 +1138,10 @@ dev->function.set_alt = printer_func_set_alt; dev->function.disable = printer_func_disable; + status = usb_add_function(c, &dev->function); + if (status) + return status; + /* Setup the sysfs files for the printer gadget. */ dev->pdev = device_create(usb_gadget_class, NULL, g_printer_devno, NULL, "g_printer"); @@ -1169,26 +1186,6 @@ pnp_string[0] = (len >> 8) & 0xFF; pnp_string[1] = len & 0xFF; - /* all we really need is bulk IN/OUT */ - usb_ep_autoconfig_reset(gadget); - in_ep = usb_ep_autoconfig(gadget, &fs_ep_in_desc); - if (!in_ep) { -autoconf_fail: - dev_err(&gadget->dev, "can't autoconfigure on %s\n", - gadget->name); - return -ENODEV; - } - in_ep->driver_data = in_ep; /* claim */ - - out_ep = usb_ep_autoconfig(gadget, &fs_ep_out_desc); - if (!out_ep) - goto autoconf_fail; - out_ep->driver_data = out_ep; /* claim */ - - /* assumes that all endpoints are dual-speed */ - hs_ep_in_desc.bEndpointAddress = fs_ep_in_desc.bEndpointAddress; - hs_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress; - usb_gadget_set_selfpowered(gadget); if (gadget->is_otg) { @@ -1215,9 +1212,6 @@ dev->current_rx_bytes = 0; dev->current_rx_buf = NULL; - dev->in_ep = in_ep; - dev->out_ep = out_ep; - for (i = 0; i < QLEN; i++) { req = printer_req_alloc(dev->in_ep, USB_BUFSIZE, GFP_KERNEL); if (!req) { @@ -1250,8 +1244,6 @@ dev->gadget = gadget; INFO(dev, "%s, version: " DRIVER_VERSION "\n", driver_desc); - INFO(dev, "using %s, OUT %s IN %s\n", gadget->name, out_ep->name, - in_ep->name); return 0; fail: @@ -1266,7 +1258,17 @@ static int __init printer_bind(struct usb_composite_dev *cdev) { - return usb_add_config(cdev, &printer_cfg_driver, printer_bind_config); + int ret; + + ret = usb_string_ids_tab(cdev, strings); + if (ret < 0) + return ret; + device_desc.iManufacturer = strings[STRING_MANUFACTURER].id; + device_desc.iProduct = strings[STRING_PRODUCT].id; + device_desc.iSerialNumber = strings[STRING_SERIALNUM].id; + + ret = usb_add_config(cdev, &printer_cfg_driver, printer_bind_config); + return ret; } static struct usb_composite_driver printer_driver = { --- linux-3.5.0.orig/drivers/usb/gadget/tcm_usb_gadget.h +++ linux-3.5.0/drivers/usb/gadget/tcm_usb_gadget.h @@ -16,12 +16,14 @@ #define UASP_SS_EP_COMP_LOG_STREAMS 4 #define UASP_SS_EP_COMP_NUM_STREAMS (1 << UASP_SS_EP_COMP_LOG_STREAMS) -#define USB_G_STR_MANUFACTOR 1 -#define USB_G_STR_PRODUCT 2 -#define USB_G_STR_SERIAL 3 -#define USB_G_STR_CONFIG 4 -#define USB_G_STR_INT_UAS 5 -#define USB_G_STR_INT_BBB 6 +enum { + USB_G_STR_MANUFACTOR, + USB_G_STR_PRODUCT, + USB_G_STR_SERIAL, + USB_G_STR_CONFIG, + USB_G_STR_INT_UAS, + USB_G_STR_INT_BBB, +}; #define USB_G_ALT_INT_BBB 0 #define USB_G_ALT_INT_UAS 1 --- linux-3.5.0.orig/drivers/usb/gadget/u_ether.c +++ linux-3.5.0/drivers/usb/gadget/u_ether.c @@ -669,6 +669,8 @@ spin_lock_irqsave(&dev->lock, flags); if (dev->port_usb) { struct gether *link = dev->port_usb; + const struct usb_endpoint_descriptor *in; + const struct usb_endpoint_descriptor *out; if (link->close) link->close(link); @@ -682,10 +684,14 @@ * their own pace; the network stack can handle old packets. * For the moment we leave this here, since it works. */ + in = link->in_ep->desc; + out = link->out_ep->desc; usb_ep_disable(link->in_ep); usb_ep_disable(link->out_ep); if (netif_carrier_ok(net)) { DBG(dev, "host still using in/out endpoints\n"); + link->in_ep->desc = in; + link->out_ep->desc = out; usb_ep_enable(link->in_ep); usb_ep_enable(link->out_ep); } @@ -798,12 +804,6 @@ SET_ETHTOOL_OPS(net, &ops); - /* two kinds of host-initiated state changes: - * - iff DATA transfer is active, carrier is "on" - * - tx queueing enabled if open *and* carrier is "on" - */ - netif_carrier_off(net); - dev->gadget = g; SET_NETDEV_DEV(net, &g->dev); SET_NETDEV_DEVTYPE(net, &gadget_type); @@ -817,6 +817,12 @@ INFO(dev, "HOST MAC %pM\n", dev->host_mac); the_dev = dev; + + /* two kinds of host-initiated state changes: + * - iff DATA transfer is active, carrier is "on" + * - tx queueing enabled if open *and* carrier is "on" + */ + netif_carrier_off(net); } return status; --- linux-3.5.0.orig/drivers/usb/gadget/udc-core.c +++ linux-3.5.0/drivers/usb/gadget/udc-core.c @@ -265,7 +265,7 @@ udc->driver->disconnect(udc->gadget); usb_gadget_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-3.5.0.orig/drivers/usb/gadget/g_ffs.c +++ linux-3.5.0/drivers/usb/gadget/g_ffs.c @@ -358,7 +358,7 @@ if (unlikely(ret < 0)) goto error; - 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-3.5.0.orig/drivers/usb/gadget/at91_udc.c +++ linux-3.5.0/drivers/usb/gadget/at91_udc.c @@ -475,8 +475,7 @@ unsigned long flags; if (!_ep || !ep - || !desc || ep->ep.desc - || _ep->name == ep0name + || !desc || _ep->name == ep0name || desc->bDescriptorType != USB_DT_ENDPOINT || (maxpacket = usb_endpoint_maxp(desc)) == 0 || maxpacket > ep->maxpacket) { @@ -530,7 +529,6 @@ tmp |= AT91_UDP_EPEDS; __raw_writel(tmp, ep->creg); - ep->ep.desc = desc; ep->ep.maxpacket = maxpacket; /* @@ -1634,7 +1632,6 @@ udc = container_of(gadget, struct at91_udc, gadget); udc->driver = driver; udc->gadget.dev.driver = &driver->driver; - dev_set_drvdata(&udc->gadget.dev, &driver->driver); udc->enabled = 1; udc->selfpowered = 1; @@ -1655,7 +1652,6 @@ spin_unlock_irqrestore(&udc->lock, flags); udc->gadget.dev.driver = NULL; - dev_set_drvdata(&udc->gadget.dev, NULL); udc->driver = NULL; DBG("unbound from %s\n", driver->driver.name); @@ -1702,7 +1698,7 @@ int retval; struct resource *res; - if (!dev->platform_data) { + if (!dev->platform_data && !pdev->dev.of_node) { /* small (so we copy it) but critical! */ DBG("missing platform_data\n"); return -ENODEV; --- linux-3.5.0.orig/drivers/usb/gadget/f_eem.c +++ linux-3.5.0/drivers/usb/gadget/f_eem.c @@ -319,10 +319,9 @@ if (f->hs_descriptors) usb_free_descriptors(f->hs_descriptors); - /* we might as well release our claims on endpoints */ - if (eem->port.out_ep->desc) + if (eem->port.out_ep) eem->port.out_ep->driver_data = NULL; - if (eem->port.in_ep->desc) + if (eem->port.in_ep) eem->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/class/cdc-wdm.c +++ linux-3.5.0/drivers/usb/class/cdc-wdm.c @@ -81,6 +81,7 @@ #define WDM_RESPONDING 7 #define WDM_SUSPENDING 8 #define WDM_RESETTING 9 +#define WDM_OVERFLOW 10 #define WDM_MAX 16 @@ -134,12 +135,14 @@ /* return intfdata if we own the interface, else look up intf in the list */ static struct wdm_device *wdm_find_device(struct usb_interface *intf) { - struct wdm_device *desc = NULL; + struct wdm_device *desc; spin_lock(&wdm_device_list_lock); list_for_each_entry(desc, &wdm_device_list, device_list) if (desc->intf == intf) - break; + goto found; + desc = NULL; +found: spin_unlock(&wdm_device_list_lock); return desc; @@ -147,12 +150,14 @@ static struct wdm_device *wdm_find_device_by_minor(int minor) { - struct wdm_device *desc = NULL; + struct wdm_device *desc; spin_lock(&wdm_device_list_lock); list_for_each_entry(desc, &wdm_device_list, device_list) if (desc->intf->minor == minor) - break; + goto found; + desc = NULL; +found: spin_unlock(&wdm_device_list_lock); return desc; @@ -176,6 +181,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); @@ -206,9 +212,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); @@ -456,6 +470,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)) { @@ -499,6 +518,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); @@ -1025,6 +1045,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-3.5.0.orig/drivers/usb/class/cdc-acm.c +++ linux-3.5.0/drivers/usb/class/cdc-acm.c @@ -601,7 +601,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); @@ -788,6 +787,10 @@ tmp.flags = ASYNC_LOW_LATENCY; tmp.xmit_fifo_size = acm->writesize; tmp.baud_base = le32_to_cpu(acm->line.dwDTERate); + tmp.close_delay = acm->port.close_delay / 10; + tmp.closing_wait = acm->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : + acm->port.closing_wait / 10; if (copy_to_user(info, &tmp, sizeof(tmp))) return -EFAULT; @@ -795,6 +798,37 @@ return 0; } +static int set_serial_info(struct acm *acm, + struct serial_struct __user *newinfo) +{ + struct serial_struct new_serial; + unsigned int closing_wait, close_delay; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + close_delay = new_serial.close_delay * 10; + closing_wait = new_serial.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : new_serial.closing_wait * 10; + + mutex_lock(&acm->port.mutex); + + if (!capable(CAP_SYS_ADMIN)) { + if ((close_delay != acm->port.close_delay) || + (closing_wait != acm->port.closing_wait)) + retval = -EPERM; + else + retval = -EOPNOTSUPP; + } else { + acm->port.close_delay = close_delay; + acm->port.closing_wait = closing_wait; + } + + mutex_unlock(&acm->port.mutex); + return retval; +} + static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { @@ -805,6 +839,9 @@ case TIOCGSERIAL: /* gets serial port data */ rv = get_serial_info(acm, (struct serial_struct __user *) arg); break; + case TIOCSSERIAL: + rv = set_serial_info(acm, (struct serial_struct __user *) arg); + break; } return rv; @@ -818,10 +855,6 @@ 2500000, 3000000, 3500000, 4000000 }; -static const __u8 acm_tty_size[] = { - 5, 6, 7, 8 -}; - static void acm_tty_set_termios(struct tty_struct *tty, struct ktermios *termios_old) { @@ -835,7 +868,21 @@ newline.bParityType = termios->c_cflag & PARENB ? (termios->c_cflag & PARODD ? 1 : 2) + (termios->c_cflag & CMSPAR ? 2 : 0) : 0; - newline.bDataBits = acm_tty_size[(termios->c_cflag & CSIZE) >> 4]; + switch (termios->c_cflag & CSIZE) { + case CS5: + newline.bDataBits = 5; + break; + case CS6: + newline.bDataBits = 6; + break; + case CS7: + newline.bDataBits = 7; + break; + case CS8: + default: + newline.bDataBits = 8; + break; + } /* FIXME: Needs to clear unsupported bits in the termios */ acm->clocal = ((termios->c_cflag & CLOCAL) != 0); @@ -1104,7 +1151,8 @@ } - if (data_interface->cur_altsetting->desc.bNumEndpoints < 2) + if (data_interface->cur_altsetting->desc.bNumEndpoints < 2 || + control_interface->cur_altsetting->desc.bNumEndpoints == 0) return -EINVAL; epctrl = &control_interface->cur_altsetting->endpoint[0].desc; @@ -1233,7 +1281,7 @@ if (usb_endpoint_xfer_int(epwrite)) usb_fill_int_urb(snd->urb, usb_dev, - usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), + usb_sndintpipe(usb_dev, epwrite->bEndpointAddress), NULL, acm->writesize, acm_write_bulk, snd, epwrite->bInterval); else usb_fill_bulk_urb(snd->urb, usb_dev, @@ -1369,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); @@ -1550,6 +1600,12 @@ Maybe we should define a new quirk for this. */ }, + { USB_DEVICE(0x0572, 0x1340), /* Conexant CX93010-2x UCMxx */ + .driver_info = NO_UNION_NORMAL, + }, + { USB_DEVICE(0x05f9, 0x4002), /* PSC Scanning, Magellan 800i */ + .driver_info = NO_UNION_NORMAL, + }, { USB_DEVICE(0x1bbb, 0x0003), /* Alcatel OT-I650 */ .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ }, --- linux-3.5.0.orig/drivers/usb/early/ehci-dbgp.c +++ linux-3.5.0/drivers/usb/early/ehci-dbgp.c @@ -450,7 +450,7 @@ writel(FLAG_CF, &ehci_regs->configured_flag); /* Wait until the controller is no longer halted */ - loop = 10; + loop = 1000; do { status = readl(&ehci_regs->status); if (!(status & STS_HALT)) --- linux-3.5.0.orig/drivers/vhost/net.c +++ linux-3.5.0/drivers/vhost/net.c @@ -235,7 +235,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 = len; ubuf->callback = vhost_zerocopy_callback; @@ -379,7 +380,8 @@ .hdr.gso_type = VIRTIO_NET_HDR_GSO_NONE }; size_t total_len = 0; - int err, headcount, mergeable; + int err, mergeable; + s16 headcount; size_t vhost_hlen, sock_hlen; size_t vhost_len, sock_len; /* TODO: check that we are running from vhost_worker? */ --- linux-3.5.0.orig/drivers/vhost/vhost.c +++ linux-3.5.0/drivers/vhost/vhost.c @@ -1077,7 +1077,7 @@ } _iov = iov + ret; size = reg->memory_size - addr + reg->guest_phys_addr; - _iov->iov_len = min((u64)len, size); + _iov->iov_len = min((u64)len - s, size); _iov->iov_base = (void __user *)(unsigned long) (reg->userspace_addr + addr - reg->guest_phys_addr); s += size; --- linux-3.5.0.orig/drivers/idle/intel_idle.c +++ linux-3.5.0/drivers/idle/intel_idle.c @@ -169,6 +169,38 @@ .enter = &intel_idle }, }; +static struct cpuidle_state ivb_cstates[MWAIT_MAX_NUM_CSTATES] = { + { /* MWAIT C0 */ }, + { /* MWAIT C1 */ + .name = "C1-IVB", + .desc = "MWAIT 0x00", + .flags = CPUIDLE_FLAG_TIME_VALID, + .exit_latency = 1, + .target_residency = 1, + .enter = &intel_idle }, + { /* MWAIT C2 */ + .name = "C3-IVB", + .desc = "MWAIT 0x10", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 59, + .target_residency = 156, + .enter = &intel_idle }, + { /* MWAIT C3 */ + .name = "C6-IVB", + .desc = "MWAIT 0x20", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 80, + .target_residency = 300, + .enter = &intel_idle }, + { /* MWAIT C4 */ + .name = "C7-IVB", + .desc = "MWAIT 0x30", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 87, + .target_residency = 300, + .enter = &intel_idle }, +}; + static struct cpuidle_state atom_cstates[MWAIT_MAX_NUM_CSTATES] = { { /* MWAIT C0 */ }, { /* MWAIT C1 */ @@ -347,6 +379,10 @@ .state_table = snb_cstates, }; +static const struct idle_cpu idle_cpu_ivb = { + .state_table = ivb_cstates, +}; + #define ICPU(model, cpu) \ { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu } @@ -362,6 +398,7 @@ ICPU(0x2f, idle_cpu_nehalem), ICPU(0x2a, idle_cpu_snb), ICPU(0x2d, idle_cpu_snb), + ICPU(0x3a, idle_cpu_ivb), {} }; MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); @@ -405,10 +442,8 @@ if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */ lapic_timer_reliable_states = LAPIC_TIMER_ALWAYS_RELIABLE; - else { + else on_each_cpu(__setup_broadcast_timer, (void *)true, 1); - register_cpu_notifier(&setup_broadcast_notifier); - } pr_debug(PREFIX "v" INTEL_IDLE_VERSION " model 0x%X\n", boot_cpu_data.x86_model); @@ -573,6 +608,9 @@ } } + if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE) + register_cpu_notifier(&setup_broadcast_notifier); + return 0; } --- linux-3.5.0.orig/drivers/target/target_core_tpg.c +++ linux-3.5.0/drivers/target/target_core_tpg.c @@ -114,16 +114,10 @@ struct se_node_acl *acl; spin_lock_irq(&tpg->acl_node_lock); - list_for_each_entry(acl, &tpg->acl_node_list, acl_list) { - if (!strcmp(acl->initiatorname, initiatorname) && - !acl->dynamic_node_acl) { - spin_unlock_irq(&tpg->acl_node_lock); - return acl; - } - } + acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname); spin_unlock_irq(&tpg->acl_node_lock); - return NULL; + return acl; } /* core_tpg_add_node_to_devs(): --- linux-3.5.0.orig/drivers/target/target_core_file.c +++ linux-3.5.0/drivers/target/target_core_file.c @@ -138,6 +138,19 @@ * of pure timestamp updates. */ flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC; + /* + * Optionally allow fd_buffered_io=1 to be enabled for people + * who want use the fs buffer cache as an WriteCache mechanism. + * + * This means that in event of a hard failure, there is a risk + * of silent data-loss if the SCSI client has *not* performed a + * forced unit access (FUA) write, or issued SYNCHRONIZE_CACHE + * to write-out the entire device cache. + */ + if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) { + pr_debug("FILEIO: Disabling O_DSYNC, using buffered FILEIO\n"); + flags &= ~O_DSYNC; + } file = filp_open(dev_p, flags, 0600); if (IS_ERR(file)) { @@ -205,6 +218,12 @@ if (!dev) goto fail; + if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) { + pr_debug("FILEIO: Forcing setting of emulate_write_cache=1" + " with FDBD_HAS_BUFFERED_IO_WCE\n"); + dev->se_sub_dev->se_dev_attrib.emulate_write_cache = 1; + } + fd_dev->fd_dev_id = fd_host->fd_host_dev_id_count++; fd_dev->fd_queue_depth = dev->queue_depth; @@ -260,7 +279,7 @@ for_each_sg(sgl, sg, sgl_nents, i) { iov[i].iov_len = sg->length; - iov[i].iov_base = sg_virt(sg); + iov[i].iov_base = kmap(sg_page(sg)) + sg->offset; } old_fs = get_fs(); @@ -268,6 +287,8 @@ ret = vfs_readv(fd, &iov[0], sgl_nents, &pos); set_fs(old_fs); + for_each_sg(sgl, sg, sgl_nents, i) + kunmap(sg_page(sg)); kfree(iov); /* * Return zeros and GOOD status even if the READ did not return @@ -313,7 +334,7 @@ for_each_sg(sgl, sg, sgl_nents, i) { iov[i].iov_len = sg->length; - iov[i].iov_base = sg_virt(sg); + iov[i].iov_base = kmap(sg_page(sg)) + sg->offset; } old_fs = get_fs(); @@ -321,6 +342,9 @@ ret = vfs_writev(fd, &iov[0], sgl_nents, &pos); set_fs(old_fs); + for_each_sg(sgl, sg, sgl_nents, i) + kunmap(sg_page(sg)); + kfree(iov); if (ret < 0 || ret != cmd->data_length) { @@ -422,6 +446,7 @@ static match_table_t tokens = { {Opt_fd_dev_name, "fd_dev_name=%s"}, {Opt_fd_dev_size, "fd_dev_size=%s"}, + {Opt_fd_buffered_io, "fd_buffered_io=%d"}, {Opt_err, NULL} }; @@ -433,7 +458,7 @@ struct fd_dev *fd_dev = se_dev->se_dev_su_ptr; char *orig, *ptr, *arg_p, *opts; substring_t args[MAX_OPT_ARGS]; - int ret = 0, token; + int ret = 0, arg, token; opts = kstrdup(page, GFP_KERNEL); if (!opts) @@ -477,6 +502,19 @@ " bytes\n", fd_dev->fd_dev_size); fd_dev->fbd_flags |= FBDF_HAS_SIZE; break; + case Opt_fd_buffered_io: + match_int(args, &arg); + if (arg != 1) { + pr_err("bogus fd_buffered_io=%d value\n", arg); + ret = -EINVAL; + goto out; + } + + pr_debug("FILEIO: Using buffered I/O" + " operations for struct fd_dev\n"); + + fd_dev->fbd_flags |= FDBD_HAS_BUFFERED_IO_WCE; + break; default: break; } @@ -508,8 +546,10 @@ ssize_t bl = 0; bl = sprintf(b + bl, "TCM FILEIO ID: %u", fd_dev->fd_dev_id); - bl += sprintf(b + bl, " File: %s Size: %llu Mode: O_DSYNC\n", - fd_dev->fd_dev_name, fd_dev->fd_dev_size); + bl += sprintf(b + bl, " File: %s Size: %llu Mode: %s\n", + fd_dev->fd_dev_name, fd_dev->fd_dev_size, + (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) ? + "Buffered-WCE" : "O_DSYNC"); return bl; } --- linux-3.5.0.orig/drivers/target/target_core_device.c +++ linux-3.5.0/drivers/target/target_core_device.c @@ -824,20 +824,20 @@ u32 se_dev_align_max_sectors(u32 max_sectors, u32 block_size) { - u32 tmp, aligned_max_sectors; + u32 aligned_max_sectors; + u32 alignment; /* * Limit max_sectors to a PAGE_SIZE aligned value for modern * transport_allocate_data_tasks() operation. */ - tmp = rounddown((max_sectors * block_size), PAGE_SIZE); - aligned_max_sectors = (tmp / block_size); - if (max_sectors != aligned_max_sectors) { - printk(KERN_INFO "Rounding down aligned max_sectors from %u" - " to %u\n", max_sectors, aligned_max_sectors); - return aligned_max_sectors; - } + alignment = max(1ul, PAGE_SIZE / block_size); + aligned_max_sectors = rounddown(max_sectors, alignment); + + if (max_sectors != aligned_max_sectors) + pr_info("Rounding down aligned max_sectors from %u to %u\n", + max_sectors, aligned_max_sectors); - return max_sectors; + return aligned_max_sectors; } void se_dev_set_default_attribs( @@ -1167,6 +1167,8 @@ int se_dev_set_fabric_max_sectors(struct se_device *dev, u32 fabric_max_sectors) { + int block_size = dev->se_sub_dev->se_dev_attrib.block_size; + if (atomic_read(&dev->dev_export_obj.obj_access_count)) { pr_err("dev[%p]: Unable to change SE Device" " fabric_max_sectors while dev_export_obj: %d count exists\n", @@ -1204,8 +1206,12 @@ /* * Align max_sectors down to PAGE_SIZE to follow transport_allocate_data_tasks() */ + if (!block_size) { + block_size = 512; + pr_warn("Defaulting to 512 for zero block_size\n"); + } fabric_max_sectors = se_dev_align_max_sectors(fabric_max_sectors, - dev->se_sub_dev->se_dev_attrib.block_size); + block_size); dev->se_sub_dev->se_dev_attrib.fabric_max_sectors = fabric_max_sectors; pr_debug("dev[%p]: SE Device max_sectors changed to %u\n", @@ -1409,24 +1415,18 @@ struct se_lun_acl *core_dev_init_initiator_node_lun_acl( struct se_portal_group *tpg, + struct se_node_acl *nacl, u32 mapped_lun, - char *initiatorname, int *ret) { struct se_lun_acl *lacl; - struct se_node_acl *nacl; - if (strlen(initiatorname) >= TRANSPORT_IQN_LEN) { + if (strlen(nacl->initiatorname) >= TRANSPORT_IQN_LEN) { pr_err("%s InitiatorName exceeds maximum size.\n", tpg->se_tpg_tfo->get_fabric_name()); *ret = -EOVERFLOW; return NULL; } - nacl = core_tpg_get_initiator_node_acl(tpg, initiatorname); - if (!nacl) { - *ret = -EINVAL; - return NULL; - } lacl = kzalloc(sizeof(struct se_lun_acl), GFP_KERNEL); if (!lacl) { pr_err("Unable to allocate memory for struct se_lun_acl.\n"); @@ -1437,7 +1437,8 @@ INIT_LIST_HEAD(&lacl->lacl_list); lacl->mapped_lun = mapped_lun; lacl->se_lun_nacl = nacl; - snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname); + snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", + nacl->initiatorname); return lacl; } --- linux-3.5.0.orig/drivers/target/target_core_cdb.c +++ linux-3.5.0/drivers/target/target_core_cdb.c @@ -605,29 +605,12 @@ { struct se_device *dev = cmd->se_dev; struct se_portal_group *tpg = cmd->se_lun->lun_sep->sep_tpg; - unsigned char *buf, *map_buf; + unsigned char *rbuf; unsigned char *cdb = cmd->t_task_cdb; + unsigned char buf[SE_INQUIRY_BUF]; int p, ret; - map_buf = transport_kmap_data_sg(cmd); - /* - * If SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC is not set, then we - * know we actually allocated a full page. Otherwise, if the - * data buffer is too small, allocate a temporary buffer so we - * don't have to worry about overruns in all our INQUIRY - * emulation handling. - */ - if (cmd->data_length < SE_INQUIRY_BUF && - (cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC)) { - buf = kzalloc(SE_INQUIRY_BUF, GFP_KERNEL); - if (!buf) { - transport_kunmap_data_sg(cmd); - cmd->scsi_sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; - return -ENOMEM; - } - } else { - buf = map_buf; - } + memset(buf, 0, SE_INQUIRY_BUF); if (dev == tpg->tpg_virt_lun0.lun_se_dev) buf[0] = 0x3f; /* Not connected */ @@ -660,11 +643,11 @@ ret = -EINVAL; out: - if (buf != map_buf) { - memcpy(map_buf, buf, cmd->data_length); - kfree(buf); + rbuf = transport_kmap_data_sg(cmd); + if (rbuf) { + memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); + transport_kunmap_data_sg(cmd); } - transport_kunmap_data_sg(cmd); if (!ret) target_complete_cmd(cmd, GOOD); @@ -875,7 +858,7 @@ unsigned char *rbuf; int type = dev->transport->get_device_type(dev); int ten = (cmd->t_task_cdb[0] == MODE_SENSE_10); - int offset = ten ? 8 : 4; + u32 offset = ten ? 8 : 4; int length = 0; unsigned char buf[SE_MODE_PAGE_BUF]; @@ -908,6 +891,7 @@ offset -= 2; buf[0] = (offset >> 8) & 0xff; buf[1] = offset & 0xff; + offset += 2; if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || (cmd->se_deve && @@ -917,13 +901,10 @@ if ((dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0) && (dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0)) target_modesense_dpofua(&buf[3], type); - - if ((offset + 2) > cmd->data_length) - offset = cmd->data_length; - } else { offset -= 1; buf[0] = offset & 0xff; + offset += 1; if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || (cmd->se_deve && @@ -933,14 +914,13 @@ if ((dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0) && (dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0)) target_modesense_dpofua(&buf[2], type); - - if ((offset + 1) > cmd->data_length) - offset = cmd->data_length; } rbuf = transport_kmap_data_sg(cmd); - memcpy(rbuf, buf, offset); - transport_kunmap_data_sg(cmd); + if (rbuf) { + memcpy(rbuf, buf, min(offset, cmd->data_length)); + transport_kunmap_data_sg(cmd); + } target_complete_cmd(cmd, GOOD); return 0; @@ -1013,11 +993,11 @@ { struct se_device *dev = cmd->se_dev; unsigned char *buf, *ptr = NULL; - unsigned char *cdb = &cmd->t_task_cdb[0]; sector_t lba; - unsigned int size = cmd->data_length, range; - int ret = 0, offset; - unsigned short dl, bd_dl; + int size = cmd->data_length; + u32 range; + int ret = 0; + int dl, bd_dl; if (!dev->transport->do_discard) { pr_err("UNMAP emulation not supported for: %s\n", @@ -1026,24 +1006,41 @@ return -ENOSYS; } - /* First UNMAP block descriptor starts at 8 byte offset */ - offset = 8; - size -= 8; - dl = get_unaligned_be16(&cdb[0]); - bd_dl = get_unaligned_be16(&cdb[2]); - buf = transport_kmap_data_sg(cmd); - ptr = &buf[offset]; - pr_debug("UNMAP: Sub: %s Using dl: %hu bd_dl: %hu size: %hu" + dl = get_unaligned_be16(&buf[0]); + bd_dl = get_unaligned_be16(&buf[2]); + + size = min(size - 8, bd_dl); + if (size / 16 > dev->se_sub_dev->se_dev_attrib.max_unmap_block_desc_count) { + cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST; + ret = -EINVAL; + goto err; + } + + /* First UNMAP block descriptor starts at 8 byte offset */ + ptr = &buf[8]; + pr_debug("UNMAP: Sub: %s Using dl: %u bd_dl: %u size: %u" " ptr: %p\n", dev->transport->name, dl, bd_dl, size, ptr); - while (size) { + while (size >= 16) { lba = get_unaligned_be64(&ptr[0]); range = get_unaligned_be32(&ptr[8]); pr_debug("UNMAP: Using lba: %llu and range: %u\n", (unsigned long long)lba, range); + if (range > dev->se_sub_dev->se_dev_attrib.max_unmap_lba_count) { + cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST; + ret = -EINVAL; + goto err; + } + + if (lba + range > dev->transport->get_blocks(dev) + 1) { + cmd->scsi_sense_reason = TCM_ADDRESS_OUT_OF_RANGE; + ret = -EINVAL; + goto err; + } + ret = dev->transport->do_discard(dev, lba, range); if (ret < 0) { pr_err("blkdev_issue_discard() failed: %d\n", --- linux-3.5.0.orig/drivers/target/target_core_configfs.c +++ linux-3.5.0/drivers/target/target_core_configfs.c @@ -3132,6 +3132,7 @@ GFP_KERNEL); if (!target_cg->default_groups) { pr_err("Unable to allocate target_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3147,6 +3148,7 @@ GFP_KERNEL); if (!hba_cg->default_groups) { pr_err("Unable to allocate hba_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } config_group_init_type_name(&alua_group, @@ -3162,6 +3164,7 @@ GFP_KERNEL); if (!alua_cg->default_groups) { pr_err("Unable to allocate alua_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3173,14 +3176,17 @@ * Add core/alua/lu_gps/default_lu_gp */ lu_gp = core_alua_allocate_lu_gp("default_lu_gp", 1); - if (IS_ERR(lu_gp)) + if (IS_ERR(lu_gp)) { + ret = -ENOMEM; goto out_global; + } lu_gp_cg = &alua_lu_gps_group; lu_gp_cg->default_groups = kzalloc(sizeof(struct config_group) * 2, GFP_KERNEL); if (!lu_gp_cg->default_groups) { pr_err("Unable to allocate lu_gp_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3208,7 +3214,8 @@ if (ret < 0) goto out; - if (core_dev_setup_virtual_lun0() < 0) + ret = core_dev_setup_virtual_lun0(); + if (ret < 0) goto out; return 0; --- linux-3.5.0.orig/drivers/target/target_core_tmr.c +++ linux-3.5.0/drivers/target/target_core_tmr.c @@ -140,15 +140,15 @@ printk("ABORT_TASK: Found referenced %s task_tag: %u\n", se_cmd->se_tfo->get_fabric_name(), ref_tag); - spin_lock_irq(&se_cmd->t_state_lock); + spin_lock(&se_cmd->t_state_lock); if (se_cmd->transport_state & CMD_T_COMPLETE) { printk("ABORT_TASK: ref_tag: %u already complete, skipping\n", ref_tag); - spin_unlock_irq(&se_cmd->t_state_lock); + spin_unlock(&se_cmd->t_state_lock); spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); goto out; } se_cmd->transport_state |= CMD_T_ABORTED; - spin_unlock_irq(&se_cmd->t_state_lock); + spin_unlock(&se_cmd->t_state_lock); list_del_init(&se_cmd->se_cmd_list); kref_get(&se_cmd->cmd_kref); --- linux-3.5.0.orig/drivers/target/target_core_pscsi.c +++ linux-3.5.0/drivers/target/target_core_pscsi.c @@ -1000,7 +1000,6 @@ bio = NULL; } - page++; len -= bytes; data_len -= bytes; off = 0; --- linux-3.5.0.orig/drivers/target/target_core_fabric_configfs.c +++ linux-3.5.0/drivers/target/target_core_fabric_configfs.c @@ -350,9 +350,25 @@ 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; + } + if (mapped_lun > (TRANSPORT_MAX_LUNS_PER_TPG-1)) { + pr_err("Mapped LUN: %lu exceeds TRANSPORT_MAX_LUNS_PER_TPG" + "-1: %u for Target Portal Group: %u\n", mapped_lun, + TRANSPORT_MAX_LUNS_PER_TPG-1, + se_tpg->se_tpg_tfo->tpg_get_tag(se_tpg)); + ret = -EINVAL; + goto out; + } - lacl = core_dev_init_initiator_node_lun_acl(se_tpg, mapped_lun, - config_item_name(acl_ci), &ret); + lacl = core_dev_init_initiator_node_lun_acl(se_tpg, se_nacl, + mapped_lun, &ret); if (!lacl) { ret = -EINVAL; goto out; --- linux-3.5.0.orig/drivers/target/target_core_transport.c +++ linux-3.5.0/drivers/target/target_core_transport.c @@ -586,9 +586,6 @@ void transport_cmd_finish_abort(struct se_cmd *cmd, int remove) { - if (!(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) - transport_lun_remove_cmd(cmd); - if (transport_cmd_check_stop_to_fabric(cmd)) return; if (remove) { @@ -1617,7 +1614,8 @@ se_cmd->se_tmr_req->response = TMR_LUN_DOES_NOT_EXIST; se_cmd->se_tfo->queue_tm_rsp(se_cmd); - transport_generic_free_cmd(se_cmd, 0); + + transport_cmd_check_stop_to_fabric(se_cmd); } /** @@ -1797,6 +1795,7 @@ case TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE: case TCM_UNKNOWN_MODE_PAGE: case TCM_WRITE_PROTECTED: + case TCM_ADDRESS_OUT_OF_RANGE: case TCM_CHECK_CONDITION_ABORT_CMD: case TCM_CHECK_CONDITION_UNIT_ATTENTION: case TCM_CHECK_CONDITION_NOT_READY: @@ -2260,7 +2259,7 @@ /* * Used to obtain Sense Data from underlying Linux/SCSI struct scsi_cmnd */ -static int transport_get_sense_data(struct se_cmd *cmd) +static void transport_get_sense_data(struct se_cmd *cmd) { unsigned char *buffer = cmd->sense_buffer, *sense_buffer = NULL; struct se_device *dev = cmd->se_dev; @@ -2270,30 +2269,15 @@ WARN_ON(!cmd->se_lun); if (!dev) - return 0; + return; spin_lock_irqsave(&cmd->t_state_lock, flags); if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) { spin_unlock_irqrestore(&cmd->t_state_lock, flags); - return 0; - } - - if (!(cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE)) - goto out; - - if (!dev->transport->get_sense_buffer) { - pr_err("dev->transport->get_sense_buffer is NULL\n"); - goto out; + return; } sense_buffer = dev->transport->get_sense_buffer(cmd); - if (!sense_buffer) { - pr_err("ITT 0x%08x cmd %p: Unable to locate" - " sense buffer for task with sense\n", - cmd->se_tfo->get_task_tag(cmd), cmd); - goto out; - } - spin_unlock_irqrestore(&cmd->t_state_lock, flags); offset = cmd->se_tfo->set_fabric_sense_len(cmd, TRANSPORT_SENSE_BUFFER); @@ -2305,11 +2289,6 @@ pr_debug("HBA_[%u]_PLUG[%s]: Set SAM STATUS: 0x%02x and sense\n", dev->se_hba->hba_id, dev->transport->name, cmd->scsi_status); - return 0; - -out: - spin_unlock_irqrestore(&cmd->t_state_lock, flags); - return -1; } static inline long long transport_dev_end_lba(struct se_device *dev) @@ -2999,15 +2978,20 @@ /* Returns CHECK_CONDITION + INVALID_CDB_FIELD */ goto out_invalid_cdb_field; } - + /* + * For the overflow case keep the existing fabric provided + * ->data_length. Otherwise for the underflow case, reset + * ->data_length to the smaller SCSI expected data transfer + * length. + */ if (size > cmd->data_length) { cmd->se_cmd_flags |= SCF_OVERFLOW_BIT; cmd->residual_count = (size - cmd->data_length); } else { cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; cmd->residual_count = (cmd->data_length - size); + cmd->data_length = size; } - cmd->data_length = size; } if (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) { @@ -3165,7 +3149,7 @@ static void target_complete_ok_work(struct work_struct *work) { struct se_cmd *cmd = container_of(work, struct se_cmd, work); - int reason = 0, ret; + int ret; /* * Check if we need to move delayed/dormant tasks from cmds on the @@ -3186,19 +3170,16 @@ * the struct se_cmd in question. */ if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) { - if (transport_get_sense_data(cmd) < 0) - reason = TCM_NON_EXISTENT_LUN; - - if (cmd->scsi_status) { - ret = transport_send_check_condition_and_sense( - cmd, reason, 1); - if (ret == -EAGAIN || ret == -ENOMEM) - goto queue_full; + WARN_ON(!cmd->scsi_status); + transport_get_sense_data(cmd); + ret = transport_send_check_condition_and_sense( + cmd, 0, 1); + if (ret == -EAGAIN || ret == -ENOMEM) + goto queue_full; - transport_lun_remove_cmd(cmd); - transport_cmd_check_stop_to_fabric(cmd); - return; - } + transport_lun_remove_cmd(cmd); + transport_cmd_check_stop_to_fabric(cmd); + return; } /* * Check for a callback, used by amongst other things @@ -3476,9 +3457,9 @@ return 0; out: - while (i >= 0) { - __free_page(sg_page(&cmd->t_data_sg[i])); + while (i > 0) { i--; + __free_page(sg_page(&cmd->t_data_sg[i])); } kfree(cmd->t_data_sg); cmd->t_data_sg = NULL; @@ -4212,6 +4193,15 @@ /* WRITE PROTECTED */ buffer[offset+SPC_ASC_KEY_OFFSET] = 0x27; break; + case TCM_ADDRESS_OUT_OF_RANGE: + /* CURRENT ERROR */ + buffer[offset] = 0x70; + buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; + /* ILLEGAL REQUEST */ + buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; + /* LOGICAL BLOCK ADDRESS OUT OF RANGE */ + buffer[offset+SPC_ASC_KEY_OFFSET] = 0x21; + break; case TCM_CHECK_CONDITION_UNIT_ATTENTION: /* CURRENT ERROR */ buffer[offset] = 0x70; @@ -4240,7 +4230,7 @@ /* ILLEGAL REQUEST */ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; /* LOGICAL UNIT COMMUNICATION FAILURE */ - buffer[offset+SPC_ASC_KEY_OFFSET] = 0x80; + buffer[offset+SPC_ASC_KEY_OFFSET] = 0x08; break; } /* @@ -4305,6 +4295,8 @@ } cmd->scsi_status = SAM_STAT_TASK_ABORTED; + transport_lun_remove_cmd(cmd); + pr_debug("Setting SAM_STAT_TASK_ABORTED status for CDB: 0x%02x," " ITT: 0x%08x\n", cmd->t_task_cdb[0], cmd->se_tfo->get_task_tag(cmd)); --- linux-3.5.0.orig/drivers/target/target_core_alua.c +++ linux-3.5.0/drivers/target/target_core_alua.c @@ -413,6 +413,7 @@ case REPORT_LUNS: case RECEIVE_DIAGNOSTIC: case SEND_DIAGNOSTIC: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: @@ -455,6 +456,7 @@ switch (cdb[0]) { case INQUIRY: case REPORT_LUNS: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: @@ -495,6 +497,7 @@ switch (cdb[0]) { case INQUIRY: case REPORT_LUNS: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: --- linux-3.5.0.orig/drivers/target/target_core_internal.h +++ linux-3.5.0/drivers/target/target_core_internal.h @@ -61,7 +61,7 @@ int core_dev_del_lun(struct se_portal_group *, u32); struct se_lun *core_get_lun_from_tpg(struct se_portal_group *, u32); struct se_lun_acl *core_dev_init_initiator_node_lun_acl(struct se_portal_group *, - u32, char *, int *); + struct se_node_acl *, u32, int *); int core_dev_add_initiator_node_lun_acl(struct se_portal_group *, struct se_lun_acl *, u32, u32); int core_dev_del_initiator_node_lun_acl(struct se_portal_group *, --- linux-3.5.0.orig/drivers/target/target_core_file.h +++ linux-3.5.0/drivers/target/target_core_file.h @@ -7,13 +7,14 @@ #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 #define FBDF_HAS_PATH 0x01 #define FBDF_HAS_SIZE 0x02 +#define FDBD_HAS_BUFFERED_IO_WCE 0x04 struct fd_dev { u32 fbd_flags; --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_util.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_util.c @@ -488,7 +488,7 @@ atomic_set(&conn->check_immediate_queue, 1); spin_unlock_bh(&conn->immed_queue_lock); - wake_up_process(conn->thread_set->tx_thread); + wake_up(&conn->queues_wq); } struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsi_conn *conn) @@ -562,7 +562,7 @@ atomic_inc(&cmd->response_queue_count); spin_unlock_bh(&conn->response_queue_lock); - wake_up_process(conn->thread_set->tx_thread); + wake_up(&conn->queues_wq); } struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsi_conn *conn) @@ -616,6 +616,24 @@ } } +bool iscsit_conn_all_queues_empty(struct iscsi_conn *conn) +{ + bool empty; + + spin_lock_bh(&conn->immed_queue_lock); + empty = list_empty(&conn->immed_queue_list); + spin_unlock_bh(&conn->immed_queue_lock); + + if (!empty) + return empty; + + spin_lock_bh(&conn->response_queue_lock); + empty = list_empty(&conn->response_queue_list); + spin_unlock_bh(&conn->response_queue_lock); + + return empty; +} + void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *conn) { struct iscsi_queue_req *qr, *qr_tmp; --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_util.h +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_util.h @@ -25,6 +25,7 @@ extern void iscsit_add_cmd_to_response_queue(struct iscsi_cmd *, struct iscsi_conn *, u8); extern struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsi_conn *); extern void iscsit_remove_cmd_from_tx_queues(struct iscsi_cmd *, struct iscsi_conn *); +extern bool iscsit_conn_all_queues_empty(struct iscsi_conn *); extern void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *); extern void iscsit_release_cmd(struct iscsi_cmd *); extern void iscsit_free_cmd(struct iscsi_cmd *); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_parameters.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_parameters.c @@ -713,9 +713,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); @@ -1554,8 +1554,6 @@ if (phase & PHASE_SECURITY) { if (iscsi_check_for_auth_key(key) > 0) { - char *tmpptr = key + strlen(key); - *tmpptr = '='; kfree(tmpbuf); return 1; } --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_erl0.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_erl0.c @@ -834,11 +834,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-3.5.0.orig/drivers/target/iscsi/iscsi_target_erl2.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_erl2.c @@ -374,7 +374,7 @@ * made generic here. */ if (!(cmd->cmd_flags & ICF_OOO_CMDSN) && !cmd->immediate_cmd && - (cmd->cmd_sn >= conn->sess->exp_cmd_sn)) { + iscsi_sna_gte(cmd->cmd_sn, conn->sess->exp_cmd_sn)) { list_del(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_core.h +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_core.h @@ -25,10 +25,10 @@ #define NA_DATAOUT_TIMEOUT_RETRIES 5 #define NA_DATAOUT_TIMEOUT_RETRIES_MAX 15 #define NA_DATAOUT_TIMEOUT_RETRIES_MIN 1 -#define NA_NOPIN_TIMEOUT 5 +#define NA_NOPIN_TIMEOUT 15 #define NA_NOPIN_TIMEOUT_MAX 60 #define NA_NOPIN_TIMEOUT_MIN 3 -#define NA_NOPIN_RESPONSE_TIMEOUT 5 +#define NA_NOPIN_RESPONSE_TIMEOUT 30 #define NA_NOPIN_RESPONSE_TIMEOUT_MAX 60 #define NA_NOPIN_RESPONSE_TIMEOUT_MIN 3 #define NA_RANDOM_DATAIN_PDU_OFFSETS 0 @@ -224,7 +224,6 @@ /* Used for struct iscsi_np->np_flags */ enum np_flags_table { NPF_IP_NETWORK = 0x00, - NPF_SCTP_STRUCT_FILE = 0x01 /* Bugfix */ }; /* Used for struct iscsi_np->np_thread_state */ @@ -486,6 +485,7 @@ }; struct iscsi_conn { + wait_queue_head_t queues_wq; /* Authentication Successful for this connection */ u8 auth_complete; /* State connection is currently in */ @@ -503,7 +503,6 @@ u16 local_port; int net_size; u32 auth_id; -#define CONNFLAG_SCTP_STRUCT_FILE 0x01 u32 conn_flags; /* Used for iscsi_tx_login_rsp() */ u32 login_itt; --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target.c @@ -429,19 +429,8 @@ int iscsit_del_np_comm(struct iscsi_np *np) { - if (!np->np_socket) - return 0; - - /* - * Some network transports allocate their own struct sock->file, - * see if we need to free any additional allocated resources. - */ - if (np->np_flags & NPF_SCTP_STRUCT_FILE) { - kfree(np->np_socket->file); - np->np_socket->file = NULL; - } - - sock_release(np->np_socket); + if (np->np_socket) + sock_release(np->np_socket); return 0; } @@ -746,7 +735,7 @@ list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { spin_lock(&cmd->istate_lock); if ((cmd->i_state == ISTATE_SENT_STATUS) && - (cmd->stat_sn < exp_statsn)) { + iscsi_sna_lt(cmd->stat_sn, exp_statsn)) { cmd->i_state = ISTATE_REMOVE; spin_unlock(&cmd->istate_lock); iscsit_add_cmd_to_immediate_queue(cmd, conn, @@ -2393,7 +2382,7 @@ if (!conn_p) return; - cmd = iscsit_allocate_cmd(conn_p, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn_p, GFP_ATOMIC); if (!cmd) { iscsit_dec_conn_usage_count(conn_p); return; @@ -3280,7 +3269,6 @@ len += 1; if ((len + payload_len) > buffer_len) { - spin_unlock(&tiqn->tiqn_tpg_lock); end_of_buf = 1; goto eob; } @@ -3433,6 +3421,7 @@ hdr->opcode = ISCSI_OP_REJECT; hdr->flags |= ISCSI_FLAG_CMD_FINAL; hton24(hdr->dlength, ISCSI_HDR_LEN); + hdr->ffffffff = 0xffffffff; cmd->stat_sn = conn->stat_sn++; hdr->statsn = cpu_to_be32(cmd->stat_sn); hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); @@ -3619,6 +3608,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, @@ -3708,7 +3701,7 @@ } if (atomic_read(&conn->check_immediate_queue)) - break; + return 1; } return 0; @@ -3744,18 +3737,23 @@ */ iscsit_thread_check_cpumask(conn, current, 1); - schedule_timeout_interruptible(MAX_SCHEDULE_TIMEOUT); + wait_event_interruptible(conn->queues_wq, + !iscsit_conn_all_queues_empty(conn) || + ts->status == ISCSI_THREAD_SET_RESET); if ((ts->status == ISCSI_THREAD_SET_RESET) || signal_pending(current)) 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; @@ -4077,13 +4075,8 @@ kfree(conn->conn_ops); conn->conn_ops = NULL; - if (conn->sock) { - if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) { - kfree(conn->sock->file); - conn->sock->file = NULL; - } + if (conn->sock) sock_release(conn->sock); - } conn->thread_set = NULL; pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_erl1.c +++ linux-3.5.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-3.5.0.orig/drivers/target/iscsi/iscsi_target_nego.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_nego.c @@ -628,8 +628,11 @@ login->req_buf, payload_length, conn->param_list); - if (ret < 0) + if (ret < 0) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_INIT_ERR); return -1; + } if (login->first_request) if (iscsi_target_check_first_request(conn, login) < 0) @@ -644,8 +647,11 @@ login->rsp_buf, &login->rsp_length, conn->param_list); - if (ret < 0) + if (ret < 0) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_INIT_ERR); return -1; + } if (!login->auth_complete && ISCSI_TPG_ATTRIB(ISCSI_TPG_C(conn))->authentication) { --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_tmr.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_tmr.c @@ -49,8 +49,8 @@ if (!ref_cmd) { pr_err("Unable to locate RefTaskTag: 0x%08x on CID:" " %hu.\n", hdr->rtt, conn->cid); - return ((hdr->refcmdsn >= conn->sess->exp_cmd_sn) && - (hdr->refcmdsn <= conn->sess->max_cmd_sn)) ? + return (iscsi_sna_gte(hdr->refcmdsn, conn->sess->exp_cmd_sn) && + iscsi_sna_lte(hdr->refcmdsn, conn->sess->max_cmd_sn)) ? ISCSI_TMF_RSP_COMPLETE : ISCSI_TMF_RSP_NO_TASK; } if (ref_cmd->cmd_sn != hdr->refcmdsn) { --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_parameters.h +++ linux-3.5.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-3.5.0.orig/drivers/target/iscsi/iscsi_target_tpg.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_tpg.c @@ -672,6 +672,12 @@ pr_debug("iSCSI_TPG[%hu] - Generate Initiator Portal Group ACLs: %s\n", tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled"); + if (flag == 1 && a->cache_dynamic_acls == 0) { + pr_debug("Explicitly setting cache_dynamic_acls=1 when " + "generate_node_acls=1\n"); + a->cache_dynamic_acls = 1; + } + return 0; } @@ -711,6 +717,12 @@ return -EINVAL; } + if (a->generate_node_acls == 1 && flag == 0) { + pr_debug("Skipping cache_dynamic_acls=0 when" + " generate_node_acls=1\n"); + return 0; + } + a->cache_dynamic_acls = flag; pr_debug("iSCSI_TPG[%hu] - Cache Dynamic Initiator Portal Group" " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ? --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_auth.c +++ linux-3.5.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-3.5.0.orig/drivers/target/iscsi/iscsi_target_login.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_login.c @@ -45,6 +45,7 @@ static int iscsi_login_init_conn(struct iscsi_conn *conn) { + init_waitqueue_head(&conn->queues_wq); INIT_LIST_HEAD(&conn->conn_list); INIT_LIST_HEAD(&conn->conn_cmd_list); INIT_LIST_HEAD(&conn->immed_queue_list); @@ -130,13 +131,13 @@ initiatorname_param = iscsi_find_param_from_key( INITIATORNAME, conn->param_list); - if (!initiatorname_param) - return -1; - sessiontype_param = iscsi_find_param_from_key( SESSIONTYPE, conn->param_list); - if (!sessiontype_param) + if (!initiatorname_param || !sessiontype_param) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_MISSING_FIELDS); return -1; + } sessiontype = (strncmp(sessiontype_param->value, NORMAL, 6)) ? 1 : 0; @@ -795,22 +796,6 @@ } np->np_socket = sock; /* - * The SCTP stack needs struct socket->file. - */ - if ((np->np_network_transport == ISCSI_SCTP_TCP) || - (np->np_network_transport == ISCSI_SCTP_UDP)) { - if (!sock->file) { - sock->file = kzalloc(sizeof(struct file), GFP_KERNEL); - if (!sock->file) { - pr_err("Unable to allocate struct" - " file for SCTP\n"); - ret = -ENOMEM; - goto fail; - } - np->np_flags |= NPF_SCTP_STRUCT_FILE; - } - } - /* * Setup the np->np_sockaddr from the passed sockaddr setup * in iscsi_target_configfs.c code.. */ @@ -869,21 +854,15 @@ fail: np->np_socket = NULL; - if (sock) { - if (np->np_flags & NPF_SCTP_STRUCT_FILE) { - kfree(sock->file); - sock->file = NULL; - } - + if (sock) sock_release(sock); - } return ret; } static int __iscsi_target_login_thread(struct iscsi_np *np) { u8 buffer[ISCSI_HDR_LEN], iscsi_opcode, zero_tsih = 0; - int err, ret = 0, set_sctp_conn_flag, stop; + int err, ret = 0, stop; struct iscsi_conn *conn = NULL; struct iscsi_login *login; struct iscsi_portal_group *tpg = NULL; @@ -894,7 +873,6 @@ struct sockaddr_in6 sock_in6; flush_signals(current); - set_sctp_conn_flag = 0; sock = np->np_socket; spin_lock_bh(&np->np_thread_lock); @@ -917,35 +895,12 @@ spin_unlock_bh(&np->np_thread_lock); goto out; } - /* - * The SCTP stack needs struct socket->file. - */ - if ((np->np_network_transport == ISCSI_SCTP_TCP) || - (np->np_network_transport == ISCSI_SCTP_UDP)) { - if (!new_sock->file) { - new_sock->file = kzalloc( - sizeof(struct file), GFP_KERNEL); - if (!new_sock->file) { - pr_err("Unable to allocate struct" - " file for SCTP\n"); - sock_release(new_sock); - /* Get another socket */ - return 1; - } - set_sctp_conn_flag = 1; - } - } - iscsi_start_login_thread_timer(np); conn = kzalloc(sizeof(struct iscsi_conn), GFP_KERNEL); if (!conn) { pr_err("Could not allocate memory for" " new connection\n"); - if (set_sctp_conn_flag) { - kfree(new_sock->file); - new_sock->file = NULL; - } sock_release(new_sock); /* Get another socket */ return 1; @@ -955,9 +910,6 @@ conn->conn_state = TARG_CONN_STATE_FREE; conn->sock = new_sock; - if (set_sctp_conn_flag) - conn->conn_flags |= CONNFLAG_SCTP_STRUCT_FILE; - pr_debug("Moving to TARG_CONN_STATE_XPT_UP.\n"); conn->conn_state = TARG_CONN_STATE_XPT_UP; @@ -1205,13 +1157,8 @@ iscsi_release_param_list(conn->param_list); conn->param_list = NULL; } - if (conn->sock) { - if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) { - kfree(conn->sock->file); - conn->sock->file = NULL; - } + if (conn->sock) sock_release(conn->sock); - } kfree(conn); if (tpg) { --- linux-3.5.0.orig/drivers/target/sbp/sbp_target.c +++ linux-3.5.0/drivers/target/sbp/sbp_target.c @@ -2221,20 +2221,23 @@ tport->mgt_agt = sbp_management_agent_register(tport); if (IS_ERR(tport->mgt_agt)) { ret = PTR_ERR(tport->mgt_agt); - kfree(tpg); - return ERR_PTR(ret); + goto out_free_tpg; } ret = core_tpg_register(&sbp_fabric_configfs->tf_ops, wwn, &tpg->se_tpg, (void *)tpg, TRANSPORT_TPG_TYPE_NORMAL); - if (ret < 0) { - sbp_management_agent_unregister(tport->mgt_agt); - kfree(tpg); - return ERR_PTR(ret); - } + if (ret < 0) + goto out_unreg_mgt_agt; return &tpg->se_tpg; + +out_unreg_mgt_agt: + sbp_management_agent_unregister(tport->mgt_agt); +out_free_tpg: + tport->tpg = NULL; + kfree(tpg); + return ERR_PTR(ret); } static void sbp_drop_tpg(struct se_portal_group *se_tpg) --- linux-3.5.0.orig/drivers/target/tcm_fc/tfc_sess.c +++ linux-3.5.0/drivers/target/tcm_fc/tfc_sess.c @@ -356,11 +356,11 @@ tport = ft_tport_create(rdata->local_port); if (!tport) - return 0; /* not a target for this local port */ + goto not_target; /* not a target for this local port */ acl = ft_acl_get(tport->tpg, rdata); if (!acl) - return 0; + goto not_target; /* no target for this remote */ if (!rspp) goto fill; @@ -397,12 +397,18 @@ /* * OR in our service parameters with other provider (initiator), if any. - * TBD XXX - indicate RETRY capability? */ fill: fcp_parm = ntohl(spp->spp_params); + fcp_parm &= ~FCP_SPPF_RETRY; spp->spp_params = htonl(fcp_parm | FCP_SPPF_TARG_FCN); return FC_SPP_RESP_ACK; + +not_target: + fcp_parm = ntohl(spp->spp_params); + fcp_parm &= ~FCP_SPPF_TARG_FCN; + spp->spp_params = htonl(fcp_parm); + return 0; } /** @@ -431,7 +437,6 @@ { struct ft_sess *sess = container_of(rcu, struct ft_sess, rcu); - transport_deregister_session(sess->se_sess); kfree(sess); } @@ -439,6 +444,7 @@ { struct ft_sess *sess = container_of(kref, struct ft_sess, kref); + transport_deregister_session(sess->se_sess); call_rcu(&sess->rcu, ft_sess_rcu_free); } --- linux-3.5.0.orig/drivers/gpu/vga/vga_switcheroo.c +++ linux-3.5.0/drivers/gpu/vga/vga_switcheroo.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -70,27 +71,12 @@ .clients = LIST_HEAD_INIT(vgasr_priv.clients), }; -int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) -{ - mutex_lock(&vgasr_mutex); - if (vgasr_priv.handler) { - mutex_unlock(&vgasr_mutex); - return -EINVAL; - } - - vgasr_priv.handler = handler; - mutex_unlock(&vgasr_mutex); - return 0; -} -EXPORT_SYMBOL(vga_switcheroo_register_handler); - -void vga_switcheroo_unregister_handler(void) +static bool vga_switcheroo_ready(void) { - mutex_lock(&vgasr_mutex); - vgasr_priv.handler = NULL; - mutex_unlock(&vgasr_mutex); + /* we're ready if we get two clients + handler */ + return !vgasr_priv.active && + vgasr_priv.registered_clients == 2 && vgasr_priv.handler; } -EXPORT_SYMBOL(vga_switcheroo_unregister_handler); static void vga_switcheroo_enable(void) { @@ -98,7 +84,8 @@ struct vga_switcheroo_client *client; /* call the handler to init */ - vgasr_priv.handler->init(); + if (vgasr_priv.handler->init) + vgasr_priv.handler->init(); list_for_each_entry(client, &vgasr_priv.clients, list) { if (client->id != -1) @@ -113,6 +100,37 @@ vgasr_priv.active = true; } +int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) +{ + mutex_lock(&vgasr_mutex); + if (vgasr_priv.handler) { + mutex_unlock(&vgasr_mutex); + return -EINVAL; + } + + vgasr_priv.handler = handler; + if (vga_switcheroo_ready()) { + printk(KERN_INFO "vga_switcheroo: enabled\n"); + vga_switcheroo_enable(); + } + mutex_unlock(&vgasr_mutex); + return 0; +} +EXPORT_SYMBOL(vga_switcheroo_register_handler); + +void vga_switcheroo_unregister_handler(void) +{ + mutex_lock(&vgasr_mutex); + vgasr_priv.handler = NULL; + if (vgasr_priv.active) { + pr_info("vga_switcheroo: disabled\n"); + vga_switcheroo_debugfs_fini(&vgasr_priv); + vgasr_priv.active = false; + } + mutex_unlock(&vgasr_mutex); +} +EXPORT_SYMBOL(vga_switcheroo_unregister_handler); + static int register_client(struct pci_dev *pdev, const struct vga_switcheroo_client_ops *ops, int id, bool active) @@ -134,9 +152,7 @@ if (client_is_vga(client)) vgasr_priv.registered_clients++; - /* if we get two clients + handler */ - if (!vgasr_priv.active && - vgasr_priv.registered_clients == 2 && vgasr_priv.handler) { + if (vga_switcheroo_ready()) { printk(KERN_INFO "vga_switcheroo: enabled\n"); vga_switcheroo_enable(); } @@ -323,8 +339,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-3.5.0.orig/drivers/gpu/drm/drm_irq.c +++ linux-3.5.0/drivers/gpu/drm/drm_irq.c @@ -981,7 +981,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; /* @@ -1003,6 +1003,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-3.5.0.orig/drivers/gpu/drm/drm_stub.c +++ linux-3.5.0/drivers/gpu/drm/drm_stub.c @@ -356,7 +356,7 @@ new_minor->index = minor_id; INIT_LIST_HEAD(&new_minor->master_list); - idr_replace(&drm_minors_idr, new_minor, minor_id); + idr_replace(&drm_minors_idr, ERR_PTR(-EAGAIN), minor_id); if (type == DRM_MINOR_LEGACY) { ret = drm_proc_init(new_minor, minor_id, drm_proc_root); --- linux-3.5.0.orig/drivers/gpu/drm/drm_crtc_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_crtc_helper.c @@ -39,6 +39,24 @@ #include "drm_fb_helper.h" #include "drm_edid.h" +void drm_helper_move_panel_connectors_to_head(struct drm_device *dev) +{ + struct drm_connector *connector, *tmp; + struct list_head panel_list; + + INIT_LIST_HEAD(&panel_list); + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || + connector->connector_type == DRM_MODE_CONNECTOR_eDP) + list_move_tail(&connector->head, &panel_list); + } + + list_splice(&panel_list, &dev->mode_config.connector_list); +} +EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head); + static bool drm_kms_helper_poll = true; module_param_named(poll, drm_kms_helper_poll, bool, 0600); @@ -328,8 +346,8 @@ * drm_crtc_set_mode - set a mode * @crtc: CRTC to program * @mode: mode to use - * @x: width of mode - * @y: height of mode + * @x: horizontal offset into the surface + * @y: vertical offset into the surface * * LOCKING: * Caller must hold mode config lock. --- linux-3.5.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-3.5.0/drivers/gpu/drm/drm_crtc.c @@ -1034,15 +1034,15 @@ fb->funcs->destroy(fb); } - list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { - crtc->funcs->destroy(crtc); - } - list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, head) { plane->funcs->destroy(plane); } + list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { + crtc->funcs->destroy(crtc); + } + idr_remove_all(&dev->mode_config.crtc_idr); idr_destroy(&dev->mode_config.crtc_idr); } @@ -1981,7 +1981,7 @@ if (!drm_core_check_feature(dev, DRIVER_MODESET)) return -EINVAL; - if (!req->flags) + if (!req->flags || (~DRM_MODE_CURSOR_FLAGS & req->flags)) return -EINVAL; mutex_lock(&dev->mode_config.mutex); @@ -2023,7 +2023,7 @@ switch (bpp) { case 8: - fmt = DRM_FORMAT_RGB332; + fmt = DRM_FORMAT_C8; break; case 16: if (depth == 15) @@ -3633,6 +3633,7 @@ int *bpp) { switch (format) { + case DRM_FORMAT_C8: case DRM_FORMAT_RGB332: case DRM_FORMAT_BGR233: *depth = 8; --- linux-3.5.0.orig/drivers/gpu/drm/drm_edid.c +++ linux-3.5.0/drivers/gpu/drm/drm_edid.c @@ -373,13 +373,14 @@ * \param adapter : i2c device adaptor * \return 1 on success */ -static bool +bool drm_probe_ddc(struct i2c_adapter *adapter) { unsigned char out; return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); } +EXPORT_SYMBOL(drm_probe_ddc); /** * drm_get_edid - get EDID data, if available @@ -399,10 +400,7 @@ if (drm_probe_ddc(adapter)) edid = (struct edid *)drm_do_get_edid(connector, adapter); - connector->display_info.raw_edid = (char *)edid; - return edid; - } EXPORT_SYMBOL(drm_get_edid); @@ -876,7 +874,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 */ @@ -957,6 +955,7 @@ } mode->type = DRM_MODE_TYPE_DRIVER; + mode->vrefresh = drm_mode_vrefresh(mode); drm_mode_set_name(mode); return mode; @@ -1921,7 +1920,8 @@ num_modes += add_cvt_modes(connector, edid); num_modes += add_standard_modes(connector, edid); num_modes += add_established_modes(connector, edid); - num_modes += add_inferred_modes(connector, edid); + if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) + num_modes += add_inferred_modes(connector, edid); num_modes += add_cea_modes(connector, edid); if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) --- linux-3.5.0.orig/drivers/gpu/drm/drm_pci.c +++ linux-3.5.0/drivers/gpu/drm/drm_pci.c @@ -367,6 +367,10 @@ list_add_tail(&dev->driver_item, &driver->device_list); + if (drm_core_check_feature(dev, DRIVER_MODESET)) + idr_replace(&drm_minors_idr, dev->control, dev->control->index); + idr_replace(&drm_minors_idr, dev->primary, dev->primary->index); + DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n", driver->name, driver->major, driver->minor, driver->patchlevel, driver->date, pci_name(pdev), dev->primary->index); --- linux-3.5.0.orig/drivers/gpu/drm/drm_prime.c +++ linux-3.5.0/drivers/gpu/drm/drm_prime.c @@ -61,6 +61,7 @@ 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); int drm_gem_prime_handle_to_fd(struct drm_device *dev, struct drm_file *file_priv, uint32_t handle, uint32_t flags, @@ -68,7 +69,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,43 +79,44 @@ 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); @@ -130,7 +133,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 +152,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 +310,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 +318,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 +337,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-3.5.0.orig/drivers/gpu/drm/drm_platform.c +++ linux-3.5.0/drivers/gpu/drm/drm_platform.c @@ -90,6 +90,10 @@ list_add_tail(&dev->driver_item, &driver->device_list); + if (drm_core_check_feature(dev, DRIVER_MODESET)) + idr_replace(&drm_minors_idr, dev->control, dev->control->index); + idr_replace(&drm_minors_idr, dev->primary, dev->primary->index); + mutex_unlock(&drm_global_mutex); DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", --- linux-3.5.0.orig/drivers/gpu/drm/Makefile +++ linux-3.5.0/drivers/gpu/drm/Makefile @@ -10,7 +10,7 @@ drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ drm_platform.o drm_sysfs.o drm_hashtab.o drm_mm.o \ - drm_crtc.o drm_modes.o drm_edid.o \ + drm_mm_hsw.o drm_crtc.o drm_modes.o drm_edid.o \ drm_info.o drm_debugfs.o drm_encoder_slave.o \ drm_trace_points.o drm_global.o drm_prime.o --- linux-3.5.0.orig/drivers/gpu/drm/drm_edid_load.c +++ linux-3.5.0/drivers/gpu/drm/drm_edid_load.c @@ -114,12 +114,12 @@ }, }; -static int edid_load(struct drm_connector *connector, char *name, - char *connector_name) +static u8 *edid_load(struct drm_connector *connector, char *name, + char *connector_name) { const struct firmware *fw; struct platform_device *pdev; - u8 *fwdata = NULL, *edid; + u8 *fwdata = NULL, *edid, *new_edid; int fwsize, expected; int builtin = 0, err = 0; int i, valid_extensions = 0; @@ -195,15 +195,16 @@ "\"%s\" for connector \"%s\"\n", valid_extensions, edid[0x7e], name, connector_name); edid[0x7e] = valid_extensions; - edid = krealloc(edid, (valid_extensions + 1) * EDID_LENGTH, + new_edid = krealloc(edid, (valid_extensions + 1) * EDID_LENGTH, GFP_KERNEL); - if (edid == NULL) { + if (new_edid == NULL) { err = -ENOMEM; + kfree(edid); goto relfw_out; } + edid = new_edid; } - connector->display_info.raw_edid = edid; DRM_INFO("Got %s EDID base block and %d extension%s from " "\"%s\" for connector \"%s\"\n", builtin ? "built-in" : "external", valid_extensions, valid_extensions == 1 ? "" : "s", @@ -213,7 +214,10 @@ release_firmware(fw); out: - return err; + if (err) + return ERR_PTR(err); + + return edid; } int drm_load_edid_firmware(struct drm_connector *connector) @@ -221,6 +225,7 @@ char *connector_name = drm_get_connector_name(connector); char *edidname = edid_firmware, *last, *colon; int ret; + struct edid *edid; if (*edidname == '\0') return 0; @@ -238,13 +243,13 @@ if (*last == '\n') *last = '\0'; - ret = edid_load(connector, edidname, connector_name); - if (ret) + edid = (struct edid *) edid_load(connector, edidname, connector_name); + if (IS_ERR_OR_NULL(edid)) return 0; - drm_mode_connector_update_edid_property(connector, - (struct edid *) connector->display_info.raw_edid); + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + kfree(edid); - return drm_add_edid_modes(connector, (struct edid *) - connector->display_info.raw_edid); + return ret; } --- linux-3.5.0.orig/drivers/gpu/drm/drm_dp_i2c_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_dp_i2c_helper.c @@ -206,3 +206,124 @@ return error; } EXPORT_SYMBOL(i2c_dp_aux_add_bus); + +/* Helpers for DP link training */ +static u8 dp_link_status(u8 link_status[DP_LINK_STATUS_SIZE], int r) +{ + return link_status[r - DP_LANE0_1_STATUS]; +} + +static u8 dp_get_lane_status(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_LANE0_1_STATUS + (lane >> 1); + int s = (lane & 1) * 4; + u8 l = dp_link_status(link_status, i); + return (l >> s) & 0xf; + +} + +bool drm_dp_channel_eq_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count) +{ + u8 lane_align; + u8 lane_status; + int lane; + + lane_align = dp_link_status(link_status, + DP_LANE_ALIGN_STATUS_UPDATED); + if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0) + return false; + for (lane = 0; lane < lane_count; lane++) { + lane_status = dp_get_lane_status(link_status, lane); + if ((lane_status & DP_CHANNEL_EQ_BITS) != DP_CHANNEL_EQ_BITS) + return false; + } + return true; +} +EXPORT_SYMBOL(drm_dp_channel_eq_ok); + +bool drm_dp_clock_recovery_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count) +{ + int lane; + u8 lane_status; + + for (lane = 0; lane < lane_count; lane++) { + lane_status = dp_get_lane_status(link_status, lane); + if ((lane_status & DP_LANE_CR_DONE) == 0) + return false; + } + return true; +} +EXPORT_SYMBOL(drm_dp_clock_recovery_ok); + +u8 drm_dp_get_adjust_request_voltage(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_ADJUST_REQUEST_LANE0_1 + (lane >> 1); + int s = ((lane & 1) ? + DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT : + DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT); + u8 l = dp_link_status(link_status, i); + + return ((l >> s) & 0x3) << DP_TRAIN_VOLTAGE_SWING_SHIFT; +} +EXPORT_SYMBOL(drm_dp_get_adjust_request_voltage); + +u8 drm_dp_get_adjust_request_pre_emphasis(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_ADJUST_REQUEST_LANE0_1 + (lane >> 1); + int s = ((lane & 1) ? + DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT : + DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT); + u8 l = dp_link_status(link_status, i); + + return ((l >> s) & 0x3) << DP_TRAIN_PRE_EMPHASIS_SHIFT; +} +EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis); + +void drm_dp_link_train_clock_recovery_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]) { + if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) + udelay(100); + else + mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); +} +EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay); + +void drm_dp_link_train_channel_eq_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]) { + if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) + udelay(400); + else + mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); +} +EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay); + +u8 drm_dp_link_rate_to_bw_code(int link_rate) +{ + switch (link_rate) { + case 162000: + default: + return DP_LINK_BW_1_62; + case 270000: + return DP_LINK_BW_2_7; + case 540000: + return DP_LINK_BW_5_4; + } +} +EXPORT_SYMBOL(drm_dp_link_rate_to_bw_code); + +int drm_dp_bw_code_to_link_rate(u8 link_bw) +{ + switch (link_bw) { + case DP_LINK_BW_1_62: + default: + return 162000; + case DP_LINK_BW_2_7: + return 270000; + case DP_LINK_BW_5_4: + return 540000; + } +} +EXPORT_SYMBOL(drm_dp_bw_code_to_link_rate); --- linux-3.5.0.orig/drivers/gpu/drm/drm_usb.c +++ linux-3.5.0/drivers/gpu/drm/drm_usb.c @@ -18,7 +18,7 @@ usbdev = interface_to_usbdev(interface); dev->usbdev = usbdev; - dev->dev = &usbdev->dev; + dev->dev = &interface->dev; mutex_lock(&drm_global_mutex); --- linux-3.5.0.orig/drivers/gpu/drm/drm_fops.c +++ linux-3.5.0/drivers/gpu/drm/drm_fops.c @@ -129,7 +129,8 @@ minor = idr_find(&drm_minors_idr, minor_id); if (!minor) return -ENODEV; - + if (IS_ERR(minor)) + return PTR_ERR(minor); if (!(dev = minor->dev)) return -ENODEV; @@ -139,8 +140,11 @@ retcode = drm_open_helper(inode, filp, dev); if (!retcode) { atomic_inc(&dev->counts[_DRM_STAT_OPENS]); - if (!dev->open_count++) + if (!dev->open_count++) { retcode = drm_setup(dev); + if (retcode) + dev->open_count--; + } } if (!retcode) { mutex_lock(&dev->struct_mutex); @@ -180,7 +184,10 @@ minor = idr_find(&drm_minors_idr, minor_id); if (!minor) goto out; - + if (IS_ERR(minor)) { + err = PTR_ERR(minor); + goto out; + } if (!(dev = minor->dev)) goto out; --- linux-3.5.0.orig/drivers/gpu/drm/drm_gem.c +++ linux-3.5.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-3.5.0.orig/drivers/gpu/drm/drm_cache.c +++ linux-3.5.0/drivers/gpu/drm/drm_cache.c @@ -100,6 +100,31 @@ EXPORT_SYMBOL(drm_clflush_pages); void +drm_clflush_sg(struct sg_table *st) +{ +#if defined(CONFIG_X86) + if (cpu_has_clflush) { + struct scatterlist *sg; + int i; + + mb(); + for_each_sg(st->sgl, sg, st->nents, i) + drm_clflush_page(sg_page(sg)); + mb(); + + return; + } + + if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) + printk(KERN_ERR "Timed out waiting for cache flush.\n"); +#else + printk(KERN_ERR "Architecture has no drm_cache.c support\n"); + WARN_ON_ONCE(1); +#endif +} +EXPORT_SYMBOL(drm_clflush_sg); + +void drm_clflush_virt_range(char *addr, unsigned long length) { #if defined(CONFIG_X86) --- linux-3.5.0.orig/drivers/gpu/drm/drm_mm_hsw.c +++ linux-3.5.0/drivers/gpu/drm/drm_mm_hsw.c @@ -0,0 +1,762 @@ +/************************************************************************** + * + * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * + **************************************************************************/ + +/* + * Generic simple memory manager implementation. Intended to be used as a base + * class implementation for more advanced memory managers. + * + * Note that the algorithm used is quite simple and there might be substantial + * performance gains if a smarter free list is implemented. Currently it is just an + * unordered stack of free regions. This could easily be improved if an RB-tree + * is used instead. At least if we expect heavy fragmentation. + * + * Aligned allocations can also see improvement. + * + * Authors: + * Thomas Hellström + */ + +#include +#include +#include +#include +#include + +#define MM_UNUSED_TARGET 4 + +static struct drm_mm_node_hsw *drm_mm_kmalloc_hsw(struct drm_mm_hsw *mm, int atomic) +{ + struct drm_mm_node_hsw *child; + + if (atomic) + child = kzalloc(sizeof(*child), GFP_ATOMIC); + else + child = kzalloc(sizeof(*child), GFP_KERNEL); + + if (unlikely(child == NULL)) { + spin_lock(&mm->unused_lock); + if (list_empty(&mm->unused_nodes)) + child = NULL; + else { + child = + list_entry(mm->unused_nodes.next, + struct drm_mm_node_hsw, node_list); + list_del(&child->node_list); + --mm->num_unused; + } + spin_unlock(&mm->unused_lock); + } + return child; +} + +/* drm_mm_pre_get_hsw() - pre allocate drm_mm_node_hsw structure + * drm_mm_hsw: memory manager struct we are pre-allocating for + * + * Returns 0 on success or -ENOMEM if allocation fails. + */ +int drm_mm_pre_get_hsw(struct drm_mm_hsw *mm) +{ + struct drm_mm_node_hsw *node; + + spin_lock(&mm->unused_lock); + while (mm->num_unused < MM_UNUSED_TARGET) { + spin_unlock(&mm->unused_lock); + node = kzalloc(sizeof(*node), GFP_KERNEL); + spin_lock(&mm->unused_lock); + + if (unlikely(node == NULL)) { + int ret = (mm->num_unused < 2) ? -ENOMEM : 0; + spin_unlock(&mm->unused_lock); + return ret; + } + ++mm->num_unused; + list_add_tail(&node->node_list, &mm->unused_nodes); + } + spin_unlock(&mm->unused_lock); + return 0; +} +EXPORT_SYMBOL(drm_mm_pre_get_hsw); + +static inline unsigned long drm_mm_hole_node_start_hsw(struct drm_mm_node_hsw *hole_node) +{ + return hole_node->start + hole_node->size; +} + +static inline unsigned long drm_mm_hole_node_end_hsw(struct drm_mm_node_hsw *hole_node) +{ + struct drm_mm_node_hsw *next_node = + list_entry(hole_node->node_list.next, struct drm_mm_node_hsw, + node_list); + + return next_node->start; +} + +static void drm_mm_insert_helper_hsw(struct drm_mm_node_hsw *hole_node, + struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long color) +{ + struct drm_mm_hsw *mm = hole_node->mm; + unsigned long hole_start = drm_mm_hole_node_start_hsw(hole_node); + unsigned long hole_end = drm_mm_hole_node_end_hsw(hole_node); + unsigned long adj_start = hole_start; + unsigned long adj_end = hole_end; + + BUG_ON(!hole_node->hole_follows || node->allocated); + + if (mm->color_adjust) + mm->color_adjust(hole_node, color, &adj_start, &adj_end); + + if (alignment) { + unsigned tmp = adj_start % alignment; + if (tmp) + adj_start += alignment - tmp; + } + + if (adj_start == hole_start) { + hole_node->hole_follows = 0; + list_del(&hole_node->hole_stack); + } + + node->start = adj_start; + node->size = size; + node->mm = mm; + node->color = color; + node->allocated = 1; + + INIT_LIST_HEAD(&node->hole_stack); + list_add(&node->node_list, &hole_node->node_list); + + BUG_ON(node->start + node->size > adj_end); + + node->hole_follows = 0; + if (node->start + node->size < hole_end) { + list_add(&node->hole_stack, &mm->hole_stack); + node->hole_follows = 1; + } +} + +struct drm_mm_node_hsw *drm_mm_get_block_generic_hsw(struct drm_mm_node_hsw *hole_node, + unsigned long size, + unsigned alignment, + unsigned long color, + int atomic) +{ + struct drm_mm_node_hsw *node; + + node = drm_mm_kmalloc_hsw(hole_node->mm, atomic); + if (unlikely(node == NULL)) + return NULL; + + drm_mm_insert_helper_hsw(hole_node, node, size, alignment, color); + + return node; +} +EXPORT_SYMBOL(drm_mm_get_block_generic_hsw); + +/** + * Search for free space and insert a preallocated memory node. Returns + * -ENOSPC if no suitable free area is available. The preallocated memory node + * must be cleared. + */ +int drm_mm_insert_node_generic_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long color) +{ + struct drm_mm_node_hsw *hole_node; + + hole_node = drm_mm_search_free_generic_hsw(mm, size, alignment, + color, 0); + if (!hole_node) + return -ENOSPC; + + drm_mm_insert_helper_hsw(hole_node, node, size, alignment, color); + return 0; +} +EXPORT_SYMBOL(drm_mm_insert_node_generic_hsw); + +int drm_mm_insert_node_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment) +{ + return drm_mm_insert_node_generic_hsw(mm, node, size, alignment, 0); +} +EXPORT_SYMBOL(drm_mm_insert_node_hsw); + +static void drm_mm_insert_helper_range_hsw(struct drm_mm_node_hsw *hole_node, + struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long color, + unsigned long start, unsigned long end) +{ + struct drm_mm_hsw *mm = hole_node->mm; + unsigned long hole_start = drm_mm_hole_node_start_hsw(hole_node); + unsigned long hole_end = drm_mm_hole_node_end_hsw(hole_node); + unsigned long adj_start = hole_start; + unsigned long adj_end = hole_end; + + BUG_ON(!hole_node->hole_follows || node->allocated); + + if (adj_start < start) + adj_start = start; + if (adj_end > end) + adj_end = end; + + if (mm->color_adjust) + mm->color_adjust(hole_node, color, &adj_start, &adj_end); + + if (alignment) { + unsigned tmp = adj_start % alignment; + if (tmp) + adj_start += alignment - tmp; + } + + if (adj_start == hole_start) { + hole_node->hole_follows = 0; + list_del(&hole_node->hole_stack); + } + + node->start = adj_start; + node->size = size; + node->mm = mm; + node->color = color; + node->allocated = 1; + + INIT_LIST_HEAD(&node->hole_stack); + list_add(&node->node_list, &hole_node->node_list); + + BUG_ON(node->start + node->size > adj_end); + BUG_ON(node->start + node->size > end); + + node->hole_follows = 0; + if (node->start + node->size < hole_end) { + list_add(&node->hole_stack, &mm->hole_stack); + node->hole_follows = 1; + } +} + +struct drm_mm_node_hsw *drm_mm_get_block_range_generic_hsw(struct drm_mm_node_hsw *hole_node, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + int atomic) +{ + struct drm_mm_node_hsw *node; + + node = drm_mm_kmalloc_hsw(hole_node->mm, atomic); + if (unlikely(node == NULL)) + return NULL; + + drm_mm_insert_helper_range_hsw(hole_node, node, size, alignment, color, + start, end); + + return node; +} +EXPORT_SYMBOL(drm_mm_get_block_range_generic_hsw); + +/** + * Search for free space and insert a preallocated memory node. Returns + * -ENOSPC if no suitable free area is available. This is for range + * restricted allocations. The preallocated memory node must be cleared. + */ +int drm_mm_insert_node_in_range_generic_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, unsigned long color, + unsigned long start, unsigned long end) +{ + struct drm_mm_node_hsw *hole_node; + + hole_node = drm_mm_search_free_in_range_generic_hsw(mm, + size, alignment, color, + start, end, 0); + if (!hole_node) + return -ENOSPC; + + drm_mm_insert_helper_range_hsw(hole_node, node, + size, alignment, color, + start, end); + return 0; +} +EXPORT_SYMBOL(drm_mm_insert_node_in_range_generic_hsw); + +int drm_mm_insert_node_in_range_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long start, unsigned long end) +{ + return drm_mm_insert_node_in_range_generic_hsw(mm, node, size, alignment, 0, start, end); +} +EXPORT_SYMBOL(drm_mm_insert_node_in_range_hsw); + +/** + * Remove a memory node from the allocator. + */ +void drm_mm_remove_node_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + + BUG_ON(node->scanned_block || node->scanned_prev_free + || node->scanned_next_free); + + prev_node = + list_entry(node->node_list.prev, struct drm_mm_node_hsw, node_list); + + if (node->hole_follows) { + BUG_ON(drm_mm_hole_node_start_hsw(node) + == drm_mm_hole_node_end_hsw(node)); + list_del(&node->hole_stack); + } else + BUG_ON(drm_mm_hole_node_start_hsw(node) + != drm_mm_hole_node_end_hsw(node)); + + if (!prev_node->hole_follows) { + prev_node->hole_follows = 1; + list_add(&prev_node->hole_stack, &mm->hole_stack); + } else + list_move(&prev_node->hole_stack, &mm->hole_stack); + + list_del(&node->node_list); + node->allocated = 0; +} +EXPORT_SYMBOL(drm_mm_remove_node_hsw); + +/* + * Remove a memory node from the allocator and free the allocated struct + * drm_mm_node_hsw. Only to be used on a struct drm_mm_node_hsw obtained by one of the + * drm_mm_get_block_hsw functions. + */ +void drm_mm_put_block_hsw(struct drm_mm_node_hsw *node) +{ + + struct drm_mm_hsw *mm = node->mm; + + drm_mm_remove_node_hsw(node); + + spin_lock(&mm->unused_lock); + if (mm->num_unused < MM_UNUSED_TARGET) { + list_add(&node->node_list, &mm->unused_nodes); + ++mm->num_unused; + } else + kfree(node); + spin_unlock(&mm->unused_lock); +} +EXPORT_SYMBOL(drm_mm_put_block_hsw); + +static int check_free_hole_hsw(unsigned long start, unsigned long end, + unsigned long size, unsigned alignment) +{ + if (end - start < size) + return 0; + + if (alignment) { + unsigned tmp = start % alignment; + if (tmp) + start += alignment - tmp; + } + + return end >= start + size; +} + +struct drm_mm_node_hsw *drm_mm_search_free_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match) +{ + struct drm_mm_node_hsw *entry; + struct drm_mm_node_hsw *best; + unsigned long best_size; + + BUG_ON(mm->scanned_blocks); + + best = NULL; + best_size = ~0UL; + + list_for_each_entry(entry, &mm->hole_stack, hole_stack) { + unsigned long adj_start = drm_mm_hole_node_start_hsw(entry); + unsigned long adj_end = drm_mm_hole_node_end_hsw(entry); + + if (mm->color_adjust) { + mm->color_adjust(entry, color, &adj_start, &adj_end); + if (adj_end <= adj_start) + continue; + } + + BUG_ON(!entry->hole_follows); + if (!check_free_hole_hsw(adj_start, adj_end, size, alignment)) + continue; + + if (!best_match) + return entry; + + if (entry->size < best_size) { + best = entry; + best_size = entry->size; + } + } + + return best; +} +EXPORT_SYMBOL(drm_mm_search_free_generic_hsw); + +struct drm_mm_node_hsw *drm_mm_search_free_in_range_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match) +{ + struct drm_mm_node_hsw *entry; + struct drm_mm_node_hsw *best; + unsigned long best_size; + + BUG_ON(mm->scanned_blocks); + + best = NULL; + best_size = ~0UL; + + list_for_each_entry(entry, &mm->hole_stack, hole_stack) { + unsigned long adj_start = drm_mm_hole_node_start_hsw(entry) < start ? + start : drm_mm_hole_node_start_hsw(entry); + unsigned long adj_end = drm_mm_hole_node_end_hsw(entry) > end ? + end : drm_mm_hole_node_end_hsw(entry); + + BUG_ON(!entry->hole_follows); + + if (mm->color_adjust) { + mm->color_adjust(entry, color, &adj_start, &adj_end); + if (adj_end <= adj_start) + continue; + } + + if (!check_free_hole_hsw(adj_start, adj_end, size, alignment)) + continue; + + if (!best_match) + return entry; + + if (entry->size < best_size) { + best = entry; + best_size = entry->size; + } + } + + return best; +} +EXPORT_SYMBOL(drm_mm_search_free_in_range_generic_hsw); + +/** + * Moves an allocation. To be used with embedded struct drm_mm_node_hsw. + */ +void drm_mm_replace_node_hsw(struct drm_mm_node_hsw *old, struct drm_mm_node_hsw *new) +{ + list_replace(&old->node_list, &new->node_list); + list_replace(&old->hole_stack, &new->hole_stack); + new->hole_follows = old->hole_follows; + new->mm = old->mm; + new->start = old->start; + new->size = old->size; + new->color = old->color; + + old->allocated = 0; + new->allocated = 1; +} +EXPORT_SYMBOL(drm_mm_replace_node_hsw); + +/** + * Initializa lru scanning. + * + * This simply sets up the scanning routines with the parameters for the desired + * hole. + * + * Warning: As long as the scan list is non-empty, no other operations than + * adding/removing nodes to/from the scan list are allowed. + */ +void drm_mm_init_scan_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color) +{ + mm->scan_color = color; + mm->scan_alignment = alignment; + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; + mm->scan_hit_end = 0; + mm->scan_check_range = 0; + mm->prev_scanned_node = NULL; +} +EXPORT_SYMBOL(drm_mm_init_scan_hsw); + +/** + * Initializa lru scanning. + * + * This simply sets up the scanning routines with the parameters for the desired + * hole. This version is for range-restricted scans. + * + * Warning: As long as the scan list is non-empty, no other operations than + * adding/removing nodes to/from the scan list are allowed. + */ +void drm_mm_init_scan_with_range_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end) +{ + mm->scan_color = color; + mm->scan_alignment = alignment; + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; + mm->scan_hit_end = 0; + mm->scan_start = start; + mm->scan_end = end; + mm->scan_check_range = 1; + mm->prev_scanned_node = NULL; +} +EXPORT_SYMBOL(drm_mm_init_scan_with_range_hsw); + +/** + * Add a node to the scan list that might be freed to make space for the desired + * hole. + * + * Returns non-zero, if a hole has been found, zero otherwise. + */ +int drm_mm_scan_add_block_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + unsigned long hole_start, hole_end; + unsigned long adj_start, adj_end; + + mm->scanned_blocks++; + + BUG_ON(node->scanned_block); + node->scanned_block = 1; + + prev_node = list_entry(node->node_list.prev, struct drm_mm_node_hsw, + node_list); + + node->scanned_preceeds_hole = prev_node->hole_follows; + prev_node->hole_follows = 1; + list_del(&node->node_list); + node->node_list.prev = &prev_node->node_list; + node->node_list.next = &mm->prev_scanned_node->node_list; + mm->prev_scanned_node = node; + + adj_start = hole_start = drm_mm_hole_node_start_hsw(prev_node); + adj_end = hole_end = drm_mm_hole_node_end_hsw(prev_node); + + if (mm->scan_check_range) { + if (adj_start < mm->scan_start) + adj_start = mm->scan_start; + if (adj_end > mm->scan_end) + adj_end = mm->scan_end; + } + + if (mm->color_adjust) + mm->color_adjust(prev_node, mm->scan_color, + &adj_start, &adj_end); + + if (check_free_hole_hsw(adj_start, adj_end, + mm->scan_size, mm->scan_alignment)) { + mm->scan_hit_start = hole_start; + mm->scan_hit_end = hole_end; + return 1; + } + + return 0; +} +EXPORT_SYMBOL(drm_mm_scan_add_block_hsw); + +/** + * Remove a node from the scan list. + * + * Nodes _must_ be removed in the exact same order from the scan list as they + * have been added, otherwise the internal state of the memory manager will be + * corrupted. + * + * When the scan list is empty, the selected memory nodes can be freed. An + * immediately following drm_mm_search_free_hsw with best_match = 0 will then return + * the just freed block (because its at the top of the free_stack list). + * + * Returns one if this block should be evicted, zero otherwise. Will always + * return zero when no hole has been found. + */ +int drm_mm_scan_remove_block_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + + mm->scanned_blocks--; + + BUG_ON(!node->scanned_block); + node->scanned_block = 0; + + prev_node = list_entry(node->node_list.prev, struct drm_mm_node_hsw, + node_list); + + prev_node->hole_follows = node->scanned_preceeds_hole; + list_add(&node->node_list, &prev_node->node_list); + + return (drm_mm_hole_node_end_hsw(node) > mm->scan_hit_start && + node->start < mm->scan_hit_end); +} +EXPORT_SYMBOL(drm_mm_scan_remove_block_hsw); + +int drm_mm_clean_hsw(struct drm_mm_hsw * mm) +{ + struct list_head *head = &mm->head_node.node_list; + + return (head->next->next == head); +} +EXPORT_SYMBOL(drm_mm_clean_hsw); + +int drm_mm_init_hsw(struct drm_mm_hsw * mm, unsigned long start, unsigned long size) +{ + INIT_LIST_HEAD(&mm->hole_stack); + INIT_LIST_HEAD(&mm->unused_nodes); + mm->num_unused = 0; + mm->scanned_blocks = 0; + spin_lock_init(&mm->unused_lock); + + /* Clever trick to avoid a special case in the free hole tracking. */ + INIT_LIST_HEAD(&mm->head_node.node_list); + INIT_LIST_HEAD(&mm->head_node.hole_stack); + mm->head_node.hole_follows = 1; + mm->head_node.scanned_block = 0; + mm->head_node.scanned_prev_free = 0; + mm->head_node.scanned_next_free = 0; + mm->head_node.mm = mm; + mm->head_node.start = start + size; + mm->head_node.size = start - mm->head_node.start; + list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack); + + mm->color_adjust = NULL; + + return 0; +} +EXPORT_SYMBOL(drm_mm_init_hsw); + +void drm_mm_takedown_hsw(struct drm_mm_hsw * mm) +{ + struct drm_mm_node_hsw *entry, *next; + + if (!list_empty(&mm->head_node.node_list)) { + DRM_ERROR("Memory manager not clean. Delaying takedown\n"); + return; + } + + spin_lock(&mm->unused_lock); + list_for_each_entry_safe(entry, next, &mm->unused_nodes, node_list) { + list_del(&entry->node_list); + kfree(entry); + --mm->num_unused; + } + spin_unlock(&mm->unused_lock); + + BUG_ON(mm->num_unused != 0); +} +EXPORT_SYMBOL(drm_mm_takedown_hsw); + +void drm_mm_debug_table_hsw(struct drm_mm_hsw *mm, const char *prefix) +{ + struct drm_mm_node_hsw *entry; + unsigned long total_used = 0, total_free = 0, total = 0; + unsigned long hole_start, hole_end, hole_size; + + hole_start = drm_mm_hole_node_start_hsw(&mm->head_node); + hole_end = drm_mm_hole_node_end_hsw(&mm->head_node); + hole_size = hole_end - hole_start; + if (hole_size) + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", + prefix, hole_start, hole_end, + hole_size); + total_free += hole_size; + + drm_mm_hsw_for_each_node(entry, mm) { + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n", + prefix, entry->start, entry->start + entry->size, + entry->size); + total_used += entry->size; + + if (entry->hole_follows) { + hole_start = drm_mm_hole_node_start_hsw(entry); + hole_end = drm_mm_hole_node_end_hsw(entry); + hole_size = hole_end - hole_start; + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", + prefix, hole_start, hole_end, + hole_size); + total_free += hole_size; + } + } + total = total_free + total_used; + + printk(KERN_DEBUG "%s total: %lu, used %lu free %lu\n", prefix, total, + total_used, total_free); +} +EXPORT_SYMBOL(drm_mm_debug_table_hsw); + +#if defined(CONFIG_DEBUG_FS) +int drm_mm_dump_table_hsw(struct seq_file *m, struct drm_mm_hsw *mm) +{ + struct drm_mm_node_hsw *entry; + unsigned long total_used = 0, total_free = 0, total = 0; + unsigned long hole_start, hole_end, hole_size; + + hole_start = drm_mm_hole_node_start_hsw(&mm->head_node); + hole_end = drm_mm_hole_node_end_hsw(&mm->head_node); + hole_size = hole_end - hole_start; + if (hole_size) + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", + hole_start, hole_end, hole_size); + total_free += hole_size; + + drm_mm_hsw_for_each_node(entry, mm) { + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: used\n", + entry->start, entry->start + entry->size, + entry->size); + total_used += entry->size; + if (entry->hole_follows) { + hole_start = drm_mm_hole_node_start_hsw(entry); + hole_end = drm_mm_hole_node_end_hsw(entry); + hole_size = hole_end - hole_start; + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", + hole_start, hole_end, hole_size); + total_free += hole_size; + } + } + total = total_free + total_used; + + seq_printf(m, "total: %lu, used %lu free %lu\n", total, total_used, total_free); + return 0; +} +EXPORT_SYMBOL(drm_mm_dump_table_hsw); +#endif --- linux-3.5.0.orig/drivers/gpu/drm/drm_fb_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_fb_helper.c @@ -228,7 +228,7 @@ int i, ret; for (i = 0; i < fb_helper->crtc_count; i++) { struct drm_mode_set *mode_set = &fb_helper->crtc_info[i].mode_set; - ret = drm_crtc_helper_set_config(mode_set); + ret = mode_set->crtc->funcs->set_config(mode_set); if (ret) error = true; } @@ -330,7 +330,7 @@ /* Walk the connectors & encoders on this fb turning them on/off */ for (j = 0; j < fb_helper->connector_count; j++) { connector = fb_helper->connector_info[j]->connector; - drm_helper_connector_dpms(connector, dpms_mode); + connector->funcs->dpms(connector, dpms_mode); drm_connector_property_set_value(connector, dev->mode_config.dpms_property, dpms_mode); } @@ -1230,7 +1230,6 @@ struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_crtc **crtcs; struct drm_display_mode **modes; - struct drm_encoder *encoder; struct drm_mode_set *modeset; bool *enabled; int width, height; @@ -1241,11 +1240,6 @@ width = dev->mode_config.max_width; height = dev->mode_config.max_height; - /* clean out all the encoder/crtc combos */ - list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { - encoder->crtc = NULL; - } - crtcs = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_crtc *), GFP_KERNEL); modes = kcalloc(dev->mode_config.num_connector, @@ -1353,7 +1347,7 @@ struct drm_device *dev = fb_helper->dev; int count = 0; u32 max_width, max_height, bpp_sel; - bool bound = false, crtcs_bound = false; + int bound = 0, crtcs_bound = 0; struct drm_crtc *crtc; if (!fb_helper->fb) @@ -1362,12 +1356,12 @@ mutex_lock(&dev->mode_config.mutex); list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { if (crtc->fb) - crtcs_bound = true; + crtcs_bound++; if (crtc->fb == fb_helper->fb) - bound = true; + bound++; } - if (!bound && crtcs_bound) { + if (bound < crtcs_bound) { fb_helper->delayed_hotplug = true; mutex_unlock(&dev->mode_config.mutex); return 0; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv50_gpio.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv50_gpio.c @@ -115,6 +115,9 @@ { struct drm_nouveau_private *dev_priv = dev->dev_private; + /* initialise gpios and routing to vbios defaults */ + nouveau_gpio_reset(dev); + /* disable, and ack any pending gpio interrupts */ nv_wr32(dev, 0xe050, 0x00000000); nv_wr32(dev, 0xe054, 0xffffffff); --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_state.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_state.c @@ -50,6 +50,7 @@ { struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_engine *engine = &dev_priv->engine; + u32 pclass = dev->pdev->class >> 8; switch (dev_priv->chipset & 0xf0) { case 0x00: @@ -428,7 +429,8 @@ } /* headless mode */ - if (nouveau_modeset == 2) { + if (nouveau_modeset == 2 || + (nouveau_modeset < 0 && pclass != PCI_CLASS_DISPLAY_VGA)) { engine->display.early_init = nouveau_stub_init; engine->display.late_takedown = nouveau_stub_takedown; engine->display.create = nouveau_stub_init; @@ -737,9 +739,11 @@ } break; case NV_C0: - nvc0_copy_create(dev, 1); + if (!(nv_rd32(dev, 0x022500) & 0x00000200)) + nvc0_copy_create(dev, 1); case NV_D0: - nvc0_copy_create(dev, 0); + if (!(nv_rd32(dev, 0x022500) & 0x00000100)) + nvc0_copy_create(dev, 0); break; default: break; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_dfp.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_dfp.c @@ -476,9 +476,9 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), - nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), + nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } static void nv04_dfp_update_backlight(struct drm_encoder *encoder, int mode) @@ -504,7 +504,7 @@ static inline bool is_powersaving_dpms(int mode) { - return (mode != DRM_MODE_DPMS_ON); + return mode != DRM_MODE_DPMS_ON && mode != NV_DPMS_CLEARED; } static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode) @@ -519,8 +519,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", + mode, nv_encoder->dcb->index); if (was_powersaving && is_powersaving_dpms(mode)) return; @@ -564,8 +564,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", + mode, nv_encoder->dcb->index); nv04_dfp_update_backlight(encoder, mode); nv04_dfp_update_fp_control(encoder, mode); --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nva3_copy.fuc +++ linux-3.5.0/drivers/gpu/drm/nouveau/nva3_copy.fuc @@ -119,9 +119,9 @@ // mthd 0x030c-0x0340, various stuff .b16 0xc3 14 .b32 #ctx_src_address_high ~0x000000ff -.b32 #ctx_src_address_low ~0xfffffff0 +.b32 #ctx_src_address_low ~0xffffffff .b32 #ctx_dst_address_high ~0x000000ff -.b32 #ctx_dst_address_low ~0xfffffff0 +.b32 #ctx_dst_address_low ~0xffffffff .b32 #ctx_src_pitch ~0x0007ffff .b32 #ctx_dst_pitch ~0x0007ffff .b32 #ctx_xcnt ~0x0000ffff --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv10_fence.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv10_fence.c @@ -155,6 +155,10 @@ static int nv10_fence_init(struct drm_device *dev, int engine) { + struct nv10_fence_priv *priv = nv_engine(dev, engine); + + if (priv->bo) + nouveau_bo_wr32(priv->bo, 0, priv->sequence); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv84_fifo.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv84_fifo.c @@ -117,17 +117,22 @@ struct drm_device *dev = chan->dev; struct drm_nouveau_private *dev_priv = dev->dev_private; unsigned long flags; + u32 save; /* remove channel from playlist, will context switch if active */ spin_lock_irqsave(&dev_priv->context_switch_lock, flags); nv_mask(dev, 0x002600 + (chan->id * 4), 0x80000000, 0x00000000); nv50_fifo_playlist_update(dev); + save = nv_mask(dev, 0x002520, 0x0000003f, 0x15); + /* tell any engines on this channel to unload their contexts */ nv_wr32(dev, 0x0032fc, chan->ramin->vinst >> 12); if (!nv_wait_ne(dev, 0x0032fc, 0xffffffff, 0xffffffff)) NV_INFO(dev, "PFIFO: channel %d unload timeout\n", chan->id); + nv_wr32(dev, 0x002520, save); + nv_wr32(dev, 0x002600 + (chan->id * 4), 0x00000000); spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags); @@ -184,10 +189,13 @@ struct drm_nouveau_private *dev_priv = dev->dev_private; struct nv84_fifo_priv *priv = nv_engine(dev, engine); int i; + u32 save; /* set playlist length to zero, fifo will unload context */ nv_wr32(dev, 0x0032ec, 0); + save = nv_mask(dev, 0x002520, 0x0000003f, 0x15); + /* tell all connected engines to unload their contexts */ for (i = 0; i < priv->base.channels; i++) { struct nouveau_channel *chan = dev_priv->channels.ptr[i]; @@ -199,6 +207,7 @@ } } + nv_wr32(dev, 0x002520, save); nv_wr32(dev, 0x002140, 0); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_software.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_software.h @@ -38,6 +38,7 @@ nouveau_software_context_new(struct nouveau_software_chan *pch) { INIT_LIST_HEAD(&pch->flip); + INIT_LIST_HEAD(&pch->vblank.list); } static inline void --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nva3_copy.fuc.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nva3_copy.fuc.h @@ -1,37 +1,72 @@ -uint32_t nva3_pcopy_data[] = { +u32 nva3_pcopy_data[] = { +/* 0x0000: ctx_object */ 0x00000000, +/* 0x0004: ctx_dma */ +/* 0x0004: ctx_dma_query */ 0x00000000, +/* 0x0008: ctx_dma_src */ 0x00000000, +/* 0x000c: ctx_dma_dst */ 0x00000000, +/* 0x0010: ctx_query_address_high */ 0x00000000, +/* 0x0014: ctx_query_address_low */ 0x00000000, +/* 0x0018: ctx_query_counter */ 0x00000000, +/* 0x001c: ctx_src_address_high */ 0x00000000, +/* 0x0020: ctx_src_address_low */ 0x00000000, +/* 0x0024: ctx_src_pitch */ 0x00000000, +/* 0x0028: ctx_src_tile_mode */ 0x00000000, +/* 0x002c: ctx_src_xsize */ 0x00000000, +/* 0x0030: ctx_src_ysize */ 0x00000000, +/* 0x0034: ctx_src_zsize */ 0x00000000, +/* 0x0038: ctx_src_zoff */ 0x00000000, +/* 0x003c: ctx_src_xoff */ 0x00000000, +/* 0x0040: ctx_src_yoff */ 0x00000000, +/* 0x0044: ctx_src_cpp */ 0x00000000, +/* 0x0048: ctx_dst_address_high */ 0x00000000, +/* 0x004c: ctx_dst_address_low */ 0x00000000, +/* 0x0050: ctx_dst_pitch */ 0x00000000, +/* 0x0054: ctx_dst_tile_mode */ 0x00000000, +/* 0x0058: ctx_dst_xsize */ 0x00000000, +/* 0x005c: ctx_dst_ysize */ 0x00000000, +/* 0x0060: ctx_dst_zsize */ 0x00000000, +/* 0x0064: ctx_dst_zoff */ 0x00000000, +/* 0x0068: ctx_dst_xoff */ 0x00000000, +/* 0x006c: ctx_dst_yoff */ 0x00000000, +/* 0x0070: ctx_dst_cpp */ 0x00000000, +/* 0x0074: ctx_format */ 0x00000000, +/* 0x0078: ctx_swz_const0 */ 0x00000000, +/* 0x007c: ctx_swz_const1 */ 0x00000000, +/* 0x0080: ctx_xcnt */ 0x00000000, +/* 0x0084: ctx_ycnt */ 0x00000000, 0x00000000, 0x00000000, @@ -63,6 +98,7 @@ 0x00000000, 0x00000000, 0x00000000, +/* 0x0100: dispatch_table */ 0x00010000, 0x00000000, 0x00000000, @@ -73,6 +109,7 @@ 0x00010162, 0x00000000, 0x00030060, +/* 0x0128: dispatch_dma */ 0x00010170, 0x00000000, 0x00010170, @@ -118,11 +155,11 @@ 0x0000001c, 0xffffff00, 0x00000020, - 0x0000000f, + 0x00000000, 0x00000048, 0xffffff00, 0x0000004c, - 0x0000000f, + 0x00000000, 0x00000024, 0xfff80000, 0x00000050, @@ -146,7 +183,8 @@ 0x00000800, }; -uint32_t nva3_pcopy_code[] = { +u32 nva3_pcopy_code[] = { +/* 0x0000: main */ 0x04fe04bd, 0x3517f000, 0xf10010fe, @@ -158,23 +196,31 @@ 0x17f11031, 0x27f01200, 0x0012d003, +/* 0x002f: spin */ 0xf40031f4, 0x0ef40028, +/* 0x0035: ih */ 0x8001cffd, 0xf40812c4, 0x21f4060b, +/* 0x0041: ih_no_chsw */ 0x0412c472, 0xf4060bf4, +/* 0x004a: ih_no_cmd */ 0x11c4c321, 0x4001d00c, +/* 0x0052: swctx */ 0x47f101f8, 0x4bfe7700, 0x0007fe00, 0xf00204b9, 0x01f40643, 0x0604fa09, +/* 0x006b: swctx_load */ 0xfa060ef4, +/* 0x006e: swctx_done */ 0x03f80504, +/* 0x0072: chsw */ 0x27f100f8, 0x23cf1400, 0x1e3fc800, @@ -183,18 +229,22 @@ 0x1e3af052, 0xf00023d0, 0x24d00147, +/* 0x0093: chsw_no_unload */ 0xcf00f880, 0x3dc84023, 0x220bf41e, 0xf40131f4, 0x57f05221, 0x0367f004, +/* 0x00a8: chsw_load_ctx_dma */ 0xa07856bc, 0xb6018068, 0x87d00884, 0x0162b600, +/* 0x00bb: chsw_finish_load */ 0xf0f018f4, 0x23d00237, +/* 0x00c3: dispatch */ 0xf100f880, 0xcf190037, 0x33cf4032, @@ -202,6 +252,7 @@ 0x1024b607, 0x010057f1, 0x74bd64bd, +/* 0x00dc: dispatch_loop */ 0x58005658, 0x50b60157, 0x0446b804, @@ -211,6 +262,7 @@ 0xb60276bb, 0x57bb0374, 0xdf0ef400, +/* 0x0100: dispatch_valid_mthd */ 0xb60246bb, 0x45bb0344, 0x01459800, @@ -220,31 +272,41 @@ 0xb0014658, 0x1bf40064, 0x00538009, +/* 0x0127: dispatch_cmd */ 0xf4300ef4, 0x55f90132, 0xf40c01f4, +/* 0x0132: dispatch_invalid_bitfield */ 0x25f0250e, +/* 0x0135: dispatch_illegal_mthd */ 0x0125f002, +/* 0x0138: dispatch_error */ 0x100047f1, 0xd00042d0, 0x27f04043, 0x0002d040, +/* 0x0148: hostirq_wait */ 0xf08002cf, 0x24b04024, 0xf71bf400, +/* 0x0154: dispatch_done */ 0x1d0027f1, 0xd00137f0, 0x00f80023, +/* 0x0160: cmd_nop */ +/* 0x0162: cmd_pm_trigger */ 0x27f100f8, 0x34bd2200, 0xd00233f0, 0x00f80023, +/* 0x0170: cmd_dma */ 0x012842b7, 0xf00145b6, 0x43801e39, 0x0040b701, 0x0644b606, 0xf80043d0, +/* 0x0189: cmd_exec_set_format */ 0xf030f400, 0xb00001b0, 0x01b00101, @@ -256,20 +318,26 @@ 0x70b63847, 0x0232f401, 0x94bd84bd, +/* 0x01b4: ncomp_loop */ 0xb60f4ac4, 0xb4bd0445, +/* 0x01bc: bpc_loop */ 0xf404a430, 0xa5ff0f18, 0x00cbbbc0, 0xf40231f4, +/* 0x01ce: cmp_c0 */ 0x1bf4220e, 0x10c7f00c, 0xf400cbbb, +/* 0x01da: cmp_c1 */ 0xa430160e, 0x0c18f406, 0xbb14c7f0, 0x0ef400cb, +/* 0x01e9: cmp_zero */ 0x80c7f107, +/* 0x01ed: bpc_next */ 0x01c83800, 0xb60180b6, 0xb5b801b0, @@ -280,6 +348,7 @@ 0x98110680, 0x68fd2008, 0x0502f400, +/* 0x0216: dst_xcnt */ 0x75fd64bd, 0x1c078000, 0xf10078fd, @@ -304,6 +373,7 @@ 0x980056d0, 0x56d01f06, 0x1030f440, +/* 0x0276: cmd_exec_set_surface_tiled */ 0x579800f8, 0x6879c70a, 0xb66478c7, @@ -311,9 +381,11 @@ 0x0e76b060, 0xf0091bf4, 0x0ef40477, +/* 0x0291: xtile64 */ 0x027cf00f, 0xfd1170b6, 0x77f00947, +/* 0x029d: xtileok */ 0x0f5a9806, 0xfd115b98, 0xb7f000ab, @@ -371,6 +443,7 @@ 0x67d00600, 0x0060b700, 0x0068d004, +/* 0x0382: cmd_exec_set_surface_linear */ 0x6cf000f8, 0x0260b702, 0x0864b602, @@ -381,13 +454,16 @@ 0xb70067d0, 0x98040060, 0x67d00957, +/* 0x03ab: cmd_exec_wait */ 0xf900f800, 0xf110f900, 0xb6080007, +/* 0x03b6: loop */ 0x01cf0604, 0x0114f000, 0xfcfa1bf4, 0xf800fc10, +/* 0x03c5: cmd_exec_query */ 0x0d34c800, 0xf5701bf4, 0xf103ab21, @@ -417,6 +493,7 @@ 0x47f10153, 0x44b60800, 0x0045d006, +/* 0x0438: query_counter */ 0x03ab21f5, 0x080c47f1, 0x980644b6, @@ -439,11 +516,13 @@ 0x47f10153, 0x44b60800, 0x0045d006, +/* 0x0492: cmd_exec */ 0x21f500f8, 0x3fc803ab, 0x0e0bf400, 0x018921f5, 0x020047f1, +/* 0x04a7: cmd_exec_no_format */ 0xf11e0ef4, 0xb6081067, 0x77f00664, @@ -451,19 +530,24 @@ 0x981c0780, 0x67d02007, 0x4067d000, +/* 0x04c2: cmd_exec_init_src_surface */ 0x32f444bd, 0xc854bd02, 0x0bf4043f, 0x8221f50a, 0x0a0ef403, +/* 0x04d4: src_tiled */ 0x027621f5, +/* 0x04db: cmd_exec_init_dst_surface */ 0xf40749f0, 0x57f00231, 0x083fc82c, 0xf50a0bf4, 0xf4038221, +/* 0x04ee: dst_tiled */ 0x21f50a0e, 0x49f00276, +/* 0x04f5: cmd_exec_kick */ 0x0057f108, 0x0654b608, 0xd0210698, @@ -473,6 +557,8 @@ 0xc80054d0, 0x0bf40c3f, 0xc521f507, +/* 0x0519: cmd_exec_done */ +/* 0x051b: cmd_wrcache_flush */ 0xf100f803, 0xbd220027, 0x0133f034, --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_bo.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -1179,7 +1179,7 @@ if (dev_priv->gart_info.type == NOUVEAU_GART_AGP) { mem->bus.offset = mem->start << PAGE_SHIFT; mem->bus.base = dev_priv->gart_info.aper_base; - mem->bus.is_iomem = true; + mem->bus.is_iomem = !dev->agp->cant_use_aperture; } #endif break; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_prime.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -199,6 +199,7 @@ if (nvbo->gem) { if (nvbo->gem->dev == dev) { drm_gem_object_reference(nvbo->gem); + dma_buf_put(dma_buf); return nvbo->gem; } } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvd0_display.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvd0_display.c @@ -790,7 +790,7 @@ struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); int ch = EVO_CURS(nv_crtc->index); - evo_piow(crtc->dev, ch, 0x0084, (y << 16) | x); + evo_piow(crtc->dev, ch, 0x0084, (y << 16) | (x & 0xffff)); evo_piow(crtc->dev, ch, 0x0080, 0x00000000); return 0; } @@ -1508,10 +1508,10 @@ case OUTPUT_DP: if (nv_connector->base.display_info.bpc == 6) { nv_encoder->dp.datarate = mode->clock * 18 / 8; - syncs |= 0x00000140; + syncs |= 0x00000002 << 6; } else { nv_encoder->dp.datarate = mode->clock * 24 / 8; - syncs |= 0x00000180; + syncs |= 0x00000005 << 6; } if (nv_encoder->dcb->sorconf.link & 1) --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h @@ -1,34 +1,65 @@ -uint32_t nvc0_pcopy_data[] = { +u32 nvc0_pcopy_data[] = { +/* 0x0000: ctx_object */ 0x00000000, +/* 0x0004: ctx_query_address_high */ 0x00000000, +/* 0x0008: ctx_query_address_low */ 0x00000000, +/* 0x000c: ctx_query_counter */ 0x00000000, +/* 0x0010: ctx_src_address_high */ 0x00000000, +/* 0x0014: ctx_src_address_low */ 0x00000000, +/* 0x0018: ctx_src_pitch */ 0x00000000, +/* 0x001c: ctx_src_tile_mode */ 0x00000000, +/* 0x0020: ctx_src_xsize */ 0x00000000, +/* 0x0024: ctx_src_ysize */ 0x00000000, +/* 0x0028: ctx_src_zsize */ 0x00000000, +/* 0x002c: ctx_src_zoff */ 0x00000000, +/* 0x0030: ctx_src_xoff */ 0x00000000, +/* 0x0034: ctx_src_yoff */ 0x00000000, +/* 0x0038: ctx_src_cpp */ 0x00000000, +/* 0x003c: ctx_dst_address_high */ 0x00000000, +/* 0x0040: ctx_dst_address_low */ 0x00000000, +/* 0x0044: ctx_dst_pitch */ 0x00000000, +/* 0x0048: ctx_dst_tile_mode */ 0x00000000, +/* 0x004c: ctx_dst_xsize */ 0x00000000, +/* 0x0050: ctx_dst_ysize */ 0x00000000, +/* 0x0054: ctx_dst_zsize */ 0x00000000, +/* 0x0058: ctx_dst_zoff */ 0x00000000, +/* 0x005c: ctx_dst_xoff */ 0x00000000, +/* 0x0060: ctx_dst_yoff */ 0x00000000, +/* 0x0064: ctx_dst_cpp */ 0x00000000, +/* 0x0068: ctx_format */ 0x00000000, +/* 0x006c: ctx_swz_const0 */ 0x00000000, +/* 0x0070: ctx_swz_const1 */ 0x00000000, +/* 0x0074: ctx_xcnt */ 0x00000000, +/* 0x0078: ctx_ycnt */ 0x00000000, 0x00000000, 0x00000000, @@ -63,6 +94,7 @@ 0x00000000, 0x00000000, 0x00000000, +/* 0x0100: dispatch_table */ 0x00010000, 0x00000000, 0x00000000, @@ -111,11 +143,11 @@ 0x00000010, 0xffffff00, 0x00000014, - 0x0000000f, + 0x00000000, 0x0000003c, 0xffffff00, 0x00000040, - 0x0000000f, + 0x00000000, 0x00000018, 0xfff80000, 0x00000044, @@ -139,7 +171,8 @@ 0x00000800, }; -uint32_t nvc0_pcopy_code[] = { +u32 nvc0_pcopy_code[] = { +/* 0x0000: main */ 0x04fe04bd, 0x3517f000, 0xf10010fe, @@ -151,15 +184,20 @@ 0x17f11031, 0x27f01200, 0x0012d003, +/* 0x002f: spin */ 0xf40031f4, 0x0ef40028, +/* 0x0035: ih */ 0x8001cffd, 0xf40812c4, 0x21f4060b, +/* 0x0041: ih_no_chsw */ 0x0412c4ca, 0xf5070bf4, +/* 0x004b: ih_no_cmd */ 0xc4010221, 0x01d00c11, +/* 0x0053: swctx */ 0xf101f840, 0xfe770047, 0x47f1004b, @@ -188,8 +226,11 @@ 0xf00204b9, 0x01f40643, 0x0604fa09, +/* 0x00c3: swctx_load */ 0xfa060ef4, +/* 0x00c6: swctx_done */ 0x03f80504, +/* 0x00ca: chsw */ 0x27f100f8, 0x23cf1400, 0x1e3fc800, @@ -198,18 +239,22 @@ 0x1e3af053, 0xf00023d0, 0x24d00147, +/* 0x00eb: chsw_no_unload */ 0xcf00f880, 0x3dc84023, 0x090bf41e, 0xf40131f4, +/* 0x00fa: chsw_finish_load */ 0x37f05321, 0x8023d002, +/* 0x0102: dispatch */ 0x37f100f8, 0x32cf1900, 0x0033cf40, 0x07ff24e4, 0xf11024b6, 0xbd010057, +/* 0x011b: dispatch_loop */ 0x5874bd64, 0x57580056, 0x0450b601, @@ -219,6 +264,7 @@ 0xbb0f08f4, 0x74b60276, 0x0057bb03, +/* 0x013f: dispatch_valid_mthd */ 0xbbdf0ef4, 0x44b60246, 0x0045bb03, @@ -229,24 +275,33 @@ 0x64b00146, 0x091bf400, 0xf4005380, +/* 0x0166: dispatch_cmd */ 0x32f4300e, 0xf455f901, 0x0ef40c01, +/* 0x0171: dispatch_invalid_bitfield */ 0x0225f025, +/* 0x0174: dispatch_illegal_mthd */ +/* 0x0177: dispatch_error */ 0xf10125f0, 0xd0100047, 0x43d00042, 0x4027f040, +/* 0x0187: hostirq_wait */ 0xcf0002d0, 0x24f08002, 0x0024b040, +/* 0x0193: dispatch_done */ 0xf1f71bf4, 0xf01d0027, 0x23d00137, +/* 0x019f: cmd_nop */ 0xf800f800, +/* 0x01a1: cmd_pm_trigger */ 0x0027f100, 0xf034bd22, 0x23d00233, +/* 0x01af: cmd_exec_set_format */ 0xf400f800, 0x01b0f030, 0x0101b000, @@ -258,20 +313,26 @@ 0x3847c701, 0xf40170b6, 0x84bd0232, +/* 0x01da: ncomp_loop */ 0x4ac494bd, 0x0445b60f, +/* 0x01e2: bpc_loop */ 0xa430b4bd, 0x0f18f404, 0xbbc0a5ff, 0x31f400cb, 0x220ef402, +/* 0x01f4: cmp_c0 */ 0xf00c1bf4, 0xcbbb10c7, 0x160ef400, +/* 0x0200: cmp_c1 */ 0xf406a430, 0xc7f00c18, 0x00cbbb14, +/* 0x020f: cmp_zero */ 0xf1070ef4, +/* 0x0213: bpc_next */ 0x380080c7, 0x80b601c8, 0x01b0b601, @@ -283,6 +344,7 @@ 0x1d08980e, 0xf40068fd, 0x64bd0502, +/* 0x023c: dst_xcnt */ 0x800075fd, 0x78fd1907, 0x1057f100, @@ -307,15 +369,18 @@ 0x1c069800, 0xf44056d0, 0x00f81030, +/* 0x029c: cmd_exec_set_surface_tiled */ 0xc7075798, 0x78c76879, 0x0380b664, 0xb06077c7, 0x1bf40e76, 0x0477f009, +/* 0x02b7: xtile64 */ 0xf00f0ef4, 0x70b6027c, 0x0947fd11, +/* 0x02c3: xtileok */ 0x980677f0, 0x5b980c5a, 0x00abfd0e, @@ -374,6 +439,7 @@ 0xb70067d0, 0xd0040060, 0x00f80068, +/* 0x03a8: cmd_exec_set_surface_linear */ 0xb7026cf0, 0xb6020260, 0x57980864, @@ -384,12 +450,15 @@ 0x0060b700, 0x06579804, 0xf80067d0, +/* 0x03d1: cmd_exec_wait */ 0xf900f900, 0x0007f110, 0x0604b608, +/* 0x03dc: loop */ 0xf00001cf, 0x1bf40114, 0xfc10fcfa, +/* 0x03eb: cmd_exec_query */ 0xc800f800, 0x1bf40d34, 0xd121f570, @@ -419,6 +488,7 @@ 0x0153f026, 0x080047f1, 0xd00644b6, +/* 0x045e: query_counter */ 0x21f50045, 0x47f103d1, 0x44b6080c, @@ -442,11 +512,13 @@ 0x080047f1, 0xd00644b6, 0x00f80045, +/* 0x04b8: cmd_exec */ 0x03d121f5, 0xf4003fc8, 0x21f50e0b, 0x47f101af, 0x0ef40200, +/* 0x04cd: cmd_exec_no_format */ 0x1067f11e, 0x0664b608, 0x800177f0, @@ -454,18 +526,23 @@ 0x1d079819, 0xd00067d0, 0x44bd4067, +/* 0x04e8: cmd_exec_init_src_surface */ 0xbd0232f4, 0x043fc854, 0xf50a0bf4, 0xf403a821, +/* 0x04fa: src_tiled */ 0x21f50a0e, 0x49f0029c, +/* 0x0501: cmd_exec_init_dst_surface */ 0x0231f407, 0xc82c57f0, 0x0bf4083f, 0xa821f50a, 0x0a0ef403, +/* 0x0514: dst_tiled */ 0x029c21f5, +/* 0x051b: cmd_exec_kick */ 0xf10849f0, 0xb6080057, 0x06980654, @@ -475,7 +552,9 @@ 0x54d00546, 0x0c3fc800, 0xf5070bf4, +/* 0x053f: cmd_exec_done */ 0xf803eb21, +/* 0x0541: cmd_wrcache_flush */ 0x0027f100, 0xf034bd22, 0x23d00133, --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_tv.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_tv.c @@ -69,8 +69,8 @@ struct nv04_mode_state *state = &dev_priv->mode_reg; uint8_t crtc1A; - NV_INFO(dev, "Setting dpms mode %d on TV encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on TV encoder (output %d)\n", + mode, nv_encoder->dcb->index); state->pllsel &= ~(PLLSEL_TV_CRTC1_MASK | PLLSEL_TV_CRTC2_MASK); @@ -162,9 +162,8 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index, - '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } static void nv04_tv_destroy(struct drm_encoder *encoder) --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_pm.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_pm.c @@ -557,7 +557,7 @@ nouveau_mem_exec(&exec, info->perflvl); if (dev_priv->chipset < 0xd0) - nv_wr32(dev, 0x611200, 0x00003300); + nv_wr32(dev, 0x611200, 0x00003330); else nv_wr32(dev, 0x62c000, 0x03030300); } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_irq.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_irq.c @@ -41,12 +41,8 @@ void nouveau_irq_preinstall(struct drm_device *dev) { - struct drm_nouveau_private *dev_priv = dev->dev_private; - /* Master disable */ nv_wr32(dev, NV03_PMC_INTR_EN_0, 0); - - INIT_LIST_HEAD(&dev_priv->vbl_waiting); } int --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_acpi.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_acpi.c @@ -211,11 +211,6 @@ return nouveau_dsm_set_discrete_state(nouveau_dsm_priv.dhandle, state); } -static int nouveau_dsm_init(void) -{ - return 0; -} - static int nouveau_dsm_get_client_id(struct pci_dev *pdev) { /* easy option one - intel vendor ID means Integrated */ @@ -232,7 +227,6 @@ static struct vga_switcheroo_handler nouveau_dsm_handler = { .switchto = nouveau_dsm_switchto, .power_state = nouveau_dsm_power_state, - .init = nouveau_dsm_init, .get_client_id = nouveau_dsm_get_client_id, }; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_dac.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_dac.c @@ -210,7 +210,7 @@ NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode); if (blue == 0x18) { - NV_INFO(dev, "Load detected on head A\n"); + NV_DEBUG(dev, "Load detected on head A\n"); return connector_status_connected; } @@ -323,8 +323,8 @@ if (nv17_dac_sample_load(encoder) & NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) { - NV_INFO(dev, "Load detected on output %c\n", - '@' + ffs(dcb->or)); + NV_DEBUG(dev, "Load detected on output %c\n", + '@' + ffs(dcb->or)); return connector_status_connected; } else { return connector_status_disconnected; @@ -398,9 +398,9 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), - nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), + nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } void nv04_dac_update_dacclk(struct drm_encoder *encoder, bool enable) @@ -447,8 +447,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on vga encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on vga encoder (output %d)\n", + mode, nv_encoder->dcb->index); nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON); } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_display.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_display.c @@ -598,7 +598,7 @@ args->size = args->pitch * args->height; args->size = roundup(args->size, PAGE_SIZE); - ret = nouveau_gem_new(dev, args->size, 0, TTM_PL_FLAG_VRAM, 0, 0, &bo); + ret = nouveau_gem_new(dev, args->size, 0, NOUVEAU_GEM_DOMAIN_VRAM, 0, 0, &bo); if (ret) return ret; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_fence.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_fence.c @@ -32,6 +32,7 @@ struct nvc0_fence_priv { struct nouveau_fence_priv base; struct nouveau_bo *bo; + u32 *suspend; }; struct nvc0_fence_chan { @@ -125,12 +126,36 @@ static int nvc0_fence_fini(struct drm_device *dev, int engine, bool suspend) { + struct nouveau_fifo_priv *pfifo = nv_engine(dev, NVOBJ_ENGINE_FIFO); + struct nvc0_fence_priv *priv = nv_engine(dev, engine); + int i; + + if (suspend) { + priv->suspend = vmalloc(pfifo->channels * sizeof(u32)); + if (!priv->suspend) + return -ENOMEM; + + for (i = 0; i < pfifo->channels; i++) + priv->suspend[i] = nouveau_bo_rd32(priv->bo, i); + } + return 0; } static int nvc0_fence_init(struct drm_device *dev, int engine) { + struct nouveau_fifo_priv *pfifo = nv_engine(dev, NVOBJ_ENGINE_FIFO); + struct nvc0_fence_priv *priv = nv_engine(dev, engine); + int i; + + if (priv->suspend) { + for (i = 0; i < pfifo->channels; i++) + nouveau_bo_wr32(priv->bo, i, priv->suspend[i]); + vfree(priv->suspend); + priv->suspend = NULL; + } + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_drv.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -689,8 +689,6 @@ void (*irq_handler[32])(struct drm_device *); bool msi_enabled; - struct list_head vbl_waiting; - struct { struct drm_global_reference mem_global_ref; struct ttm_bo_global_ref bo_global_ref; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_drv.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_drv.c @@ -187,11 +187,13 @@ if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) return 0; - NV_INFO(dev, "Disabling display...\n"); - nouveau_display_fini(dev); + if (dev->mode_config.num_crtc) { + NV_INFO(dev, "Disabling display...\n"); + nouveau_display_fini(dev); - NV_INFO(dev, "Disabling fbcon...\n"); - nouveau_fbcon_set_suspend(dev, 1); + NV_INFO(dev, "Disabling fbcon...\n"); + nouveau_fbcon_set_suspend(dev, 1); + } NV_INFO(dev, "Unpinning framebuffer(s)...\n"); list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { @@ -358,10 +360,12 @@ NV_ERROR(dev, "Could not pin/map cursor.\n"); } - nouveau_fbcon_set_suspend(dev, 0); - nouveau_fbcon_zfill_all(dev); + if (dev->mode_config.num_crtc) { + nouveau_fbcon_set_suspend(dev, 0); + nouveau_fbcon_zfill_all(dev); - nouveau_display_init(dev); + nouveau_display_init(dev); + } /* Force CLUT to get re-loaded during modeset */ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { @@ -469,9 +473,7 @@ #ifdef CONFIG_VGA_CONSOLE if (vgacon_text_force()) nouveau_modeset = 0; - else #endif - nouveau_modeset = 1; } if (!nouveau_modeset) --- linux-3.5.0.orig/drivers/gpu/drm/mgag200/mgag200_mode.c +++ linux-3.5.0/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -190,12 +190,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); @@ -205,7 +205,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); @@ -213,7 +213,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); @@ -237,13 +237,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); @@ -254,7 +254,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); @@ -319,7 +319,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; @@ -327,12 +327,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); @@ -343,7 +343,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); @@ -351,11 +351,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); @@ -364,7 +364,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; } @@ -383,19 +383,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) @@ -405,11 +405,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; } } } @@ -417,7 +417,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; @@ -426,7 +426,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); @@ -440,13 +440,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); @@ -468,10 +468,11 @@ { unsigned int vcomax, vcomin, pllreffreq; unsigned int delta, tmpdelta; - unsigned int testr, testn, testm, testo; + int testr, testn, testm, testo; unsigned int p, m, n; - unsigned int computed; + unsigned int computed, vco; int tmp; + const unsigned int m_div_val[] = { 1, 2, 4, 8 }; m = n = p = 0; vcomax = 1488000; @@ -490,12 +491,13 @@ if (delta == 0) break; for (testo = 5; testo < 33; testo++) { - computed = pllreffreq * (testn + 1) / + vco = pllreffreq * (testn + 1) / (testr + 1); - if (computed < vcomin) + if (vco < vcomin) continue; - if (computed > vcomax) + if (vco > vcomax) continue; + computed = vco / (m_div_val[testm] * (testo + 1)); if (computed > clock) tmpdelta = computed - clock; else @@ -514,12 +516,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; @@ -529,7 +531,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); @@ -656,12 +658,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)); @@ -669,10 +685,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); } @@ -750,8 +773,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[] = { @@ -802,7 +823,6 @@ option2 = 0x0000b000; break; case G200_ER: - dac_index90 = 0; break; } @@ -851,10 +871,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); @@ -951,8 +969,6 @@ if (mdev->type == G200_WB) ext_vga[1] |= 0x88; - ext_vga_index24 = 0x05; - /* Set pixel clocks */ misc = 0x2d; WREG8(MGA_MISC_OUT, misc); @@ -964,7 +980,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); @@ -1026,13 +1042,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; @@ -1397,7 +1414,6 @@ if (edid) { drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; kfree(edid); } return ret; --- linux-3.5.0.orig/drivers/gpu/drm/mgag200/mgag200_drv.h +++ linux-3.5.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-3.5.0.orig/drivers/gpu/drm/mgag200/mgag200_ttm.c +++ linux-3.5.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; --- linux-3.5.0.orig/drivers/gpu/drm/mgag200/mgag200_fb.c +++ linux-3.5.0/drivers/gpu/drm/mgag200/mgag200_fb.c @@ -29,16 +29,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) { @@ -48,10 +84,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) @@ -270,6 +306,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-3.5.0.orig/drivers/gpu/drm/udl/udl_drv.h +++ linux-3.5.0/drivers/gpu/drm/udl/udl_drv.h @@ -75,6 +75,8 @@ struct drm_framebuffer base; struct udl_gem_object *obj; bool active_16; /* active on the 16-bit channel */ + int x1, y1, x2, y2; /* dirty rect */ + spinlock_t dirty_lock; }; #define to_udl_fb(x) container_of(x, struct udl_framebuffer, base) @@ -104,7 +106,7 @@ int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, const char *front, char **urb_buf_ptr, - u32 byte_offset, u32 byte_width, + u32 byte_offset, u32 device_byte_offset, u32 byte_width, int *ident_ptr, int *sent_ptr); int udl_dumb_create(struct drm_file *file_priv, --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_connector.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_connector.c @@ -22,13 +22,17 @@ static u8 *udl_get_edid(struct udl_device *udl) { u8 *block; - char rbuf[3]; + char *rbuf; int ret, i; block = kmalloc(EDID_LENGTH, GFP_KERNEL); if (block == NULL) return NULL; + rbuf = kmalloc(2, GFP_KERNEL); + if (rbuf == NULL) + goto error; + for (i = 0; i < EDID_LENGTH; i++) { ret = usb_control_msg(udl->ddev->usbdev, usb_rcvctrlpipe(udl->ddev->usbdev, 0), (0x02), @@ -36,16 +40,17 @@ HZ); if (ret < 1) { DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret); - i--; goto error; } block[i] = rbuf[1]; } + kfree(rbuf); return block; error: kfree(block); + kfree(rbuf); return NULL; } @@ -56,12 +61,21 @@ int ret; edid = (struct edid *)udl_get_edid(udl); + if (!edid) { + drm_mode_connector_update_edid_property(connector, NULL); + return 0; + } - connector->display_info.raw_edid = (char *)edid; + /* + * We only read the main block, but if the monitor reports extension + * blocks then the drm edid code expects them to be present, so patch + * the extension count to 0. + */ + edid->checksum += edid->extensions; + edid->extensions = 0; drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; kfree(edid); return ret; } @@ -69,6 +83,13 @@ static int udl_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) { + struct udl_device *udl = connector->dev->dev_private; + if (!udl->sku_pixel_limit) + return 0; + + if (mode->vdisplay * mode->hdisplay > udl->sku_pixel_limit) + return MODE_VIRTUAL_Y; + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_fb.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_fb.c @@ -22,9 +22,9 @@ #include "drm_fb_helper.h" -#define DL_DEFIO_WRITE_DELAY 5 /* fb_deferred_io.delay in jiffies */ +#define DL_DEFIO_WRITE_DELAY (HZ/20) /* fb_deferred_io.delay in jiffies */ -static int fb_defio = 1; /* Optionally enable experimental fb_defio mmap support */ +static int fb_defio = 0; /* Optionally enable experimental fb_defio mmap support */ static int fb_bpp = 16; module_param(fb_bpp, int, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP); @@ -114,9 +114,10 @@ list_for_each_entry(cur, &fbdefio->pagelist, lru) { if (udl_render_hline(dev, (ufbdev->ufb.base.bits_per_pixel / 8), - &urb, (char *) info->fix.smem_start, - &cmd, cur->index << PAGE_SHIFT, - PAGE_SIZE, &bytes_identical, &bytes_sent)) + &urb, (char *) info->fix.smem_start, + &cmd, cur->index << PAGE_SHIFT, + cur->index << PAGE_SHIFT, + PAGE_SIZE, &bytes_identical, &bytes_sent)) goto error; bytes_rendered += PAGE_SIZE; } @@ -152,6 +153,9 @@ struct urb *urb; int aligned_x; int bpp = (fb->base.bits_per_pixel / 8); + int x2, y2; + bool store_for_later = false; + unsigned long flags; if (!fb->active_16) return 0; @@ -168,8 +172,6 @@ } } - start_cycles = get_cycles(); - aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long)); width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long)); x = aligned_x; @@ -179,18 +181,53 @@ (y + height > fb->base.height)) return -EINVAL; + /* if we are in atomic just store the info + can't test inside spin lock */ + if (in_atomic()) + store_for_later = true; + + x2 = x + width - 1; + y2 = y + height - 1; + + spin_lock_irqsave(&fb->dirty_lock, flags); + + if (fb->y1 < y) + y = fb->y1; + if (fb->y2 > y2) + y2 = fb->y2; + if (fb->x1 < x) + x = fb->x1; + if (fb->x2 > x2) + x2 = fb->x2; + + if (store_for_later) { + fb->x1 = x; + fb->x2 = x2; + fb->y1 = y; + fb->y2 = y2; + spin_unlock_irqrestore(&fb->dirty_lock, flags); + return 0; + } + + fb->x1 = fb->y1 = INT_MAX; + fb->x2 = fb->y2 = 0; + + spin_unlock_irqrestore(&fb->dirty_lock, flags); + start_cycles = get_cycles(); + urb = udl_get_urb(dev); if (!urb) return 0; cmd = urb->transfer_buffer; - for (i = y; i < y + height ; i++) { + for (i = y; i <= y2 ; i++) { const int line_offset = fb->base.pitches[0] * i; const int byte_offset = line_offset + (x * bpp); - + const int dev_byte_offset = (fb->base.width * bpp * i) + (x * bpp); if (udl_render_hline(dev, bpp, &urb, (char *) fb->obj->vmapping, - &cmd, byte_offset, width * bpp, + &cmd, byte_offset, dev_byte_offset, + (x2 - x + 1) * bpp, &bytes_identical, &bytes_sent)) goto error; } @@ -415,6 +452,7 @@ { int ret; + spin_lock_init(&ufb->dirty_lock); ufb->obj = obj; ret = drm_framebuffer_init(dev, &ufb->base, &udlfb_funcs); drm_helper_mode_fill_fb_struct(&ufb->base, mode_cmd); --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_transfer.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_transfer.c @@ -213,11 +213,12 @@ */ int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, const char *front, char **urb_buf_ptr, - u32 byte_offset, u32 byte_width, + u32 byte_offset, u32 device_byte_offset, + u32 byte_width, int *ident_ptr, int *sent_ptr) { const u8 *line_start, *line_end, *next_pixel; - u32 base16 = 0 + (byte_offset / bpp) * 2; + u32 base16 = 0 + (device_byte_offset / bpp) * 2; struct urb *urb = *urb_ptr; u8 *cmd = *urb_buf_ptr; u8 *cmd_end = (u8 *) urb->transfer_buffer + urb->transfer_buffer_length; --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_opregion.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_opregion.c @@ -427,6 +427,25 @@ goto end; } +static void intel_setup_cadls(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + int i = 0; + u32 disp_id; + + /* Initialize the CADL field by duplicating the DIDL values. + * Technically, this is not always correct as display outputs may exist, + * but not active. This initialization is necessary for some Clevo + * laptops that check this field before processing the brightness and + * display switching hotkeys. Just like DIDL, CADL is NULL-terminated if + * there are less than eight devices. */ + do { + disp_id = ioread32(&opregion->acpi->didl[i]); + iowrite32(disp_id, &opregion->acpi->cadl[i]); + } while (++i < 8 && disp_id != 0); +} + void intel_opregion_init(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -436,8 +455,10 @@ return; if (opregion->acpi) { - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (drm_core_check_feature(dev, DRIVER_MODESET)) { intel_didl_outputs(dev); + intel_setup_cadls(dev); + } /* Notify BIOS we are ready to handle ACPI video ext notifs. * Right now, all the events are handled by the ACPI video module. --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_sysfs.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_sysfs.c @@ -29,8 +29,10 @@ #include #include #include +#include "intel_drv.h" #include "i915_drv.h" +#ifdef CONFIG_PM static u32 calc_residency(struct drm_device *dev, const u32 reg) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -92,20 +94,147 @@ .attrs = rc6_attrs }; +static int l3_access_valid(struct drm_device *dev, loff_t offset) +{ + if (!IS_IVYBRIDGE(dev)) + return -EPERM; + + if (offset % 4 != 0) + return -EINVAL; + + if (offset >= GEN7_L3LOG_SIZE) + return -ENXIO; + + return 0; +} + +static ssize_t +i915_l3_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + uint32_t misccpctl; + int i, ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + + for (i = offset; count >= 4 && i < GEN7_L3LOG_SIZE; i += 4, count -= 4) + *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + i); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + mutex_unlock(&drm_dev->struct_mutex); + + return i - offset; +} + +static ssize_t +i915_l3_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + u32 *temp = NULL; /* Just here to make handling failures easy */ + int ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + if (!dev_priv->mm.l3_remap_info) { + temp = kzalloc(GEN7_L3LOG_SIZE, GFP_KERNEL); + if (!temp) { + mutex_unlock(&drm_dev->struct_mutex); + return -ENOMEM; + } + } + + ret = i915_gpu_idle(drm_dev); + if (ret) { + kfree(temp); + mutex_unlock(&drm_dev->struct_mutex); + return ret; + } + + /* TODO: Ideally we really want a GPU reset here to make sure errors + * aren't propagated. Since I cannot find a stable way to reset the GPU + * at this point it is left as a TODO. + */ + if (temp) + dev_priv->mm.l3_remap_info = temp; + + memcpy(dev_priv->mm.l3_remap_info + (offset/4), + buf + (offset/4), + count); + + i915_gem_l3_remap(drm_dev); + + mutex_unlock(&drm_dev->struct_mutex); + + return count; +} + +static struct bin_attribute dpf_attrs = { + .attr = {.name = "l3_parity", .mode = (S_IRUSR | S_IWUSR)}, + .size = GEN7_L3LOG_SIZE, + .read = i915_l3_read, + .write = i915_l3_write, + .mmap = NULL +}; + void i915_setup_sysfs(struct drm_device *dev) { int ret; - /* ILK doesn't have any residency information */ + /* ILK and below don't yet have relevant sysfs files */ if (INTEL_INFO(dev)->gen < 6) return; ret = sysfs_merge_group(&dev->primary->kdev.kobj, &rc6_attr_group); if (ret) - DRM_ERROR("sysfs setup failed\n"); + DRM_ERROR("RC6 residency sysfs setup failed\n"); + + if (!IS_IVYBRIDGE(dev)) + return; + + ret = device_create_bin_file(&dev->primary->kdev, &dpf_attrs); + if (ret) + DRM_ERROR("l3 parity sysfs setup failed\n"); } void i915_teardown_sysfs(struct drm_device *dev) { + device_remove_bin_file(&dev->primary->kdev, &dpf_attrs); sysfs_unmerge_group(&dev->primary->kdev.kobj, &rc6_attr_group); } +#else +void i915_setup_sysfs(struct drm_device *dev) +{ + return; +} + +void i915_teardown_sysfs(struct drm_device *dev) +{ + return; +} +#endif /* CONFIG_PM */ --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "drmP.h" #include "drm.h" #include "intel_drv.h" @@ -121,7 +122,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%s%s%s", + seq_printf(m, "%pK: %s%s %8zdKiB %04x %04x %d %d%s%s%s", &obj->base, get_pin_flag(obj), get_tiling_flag(obj), @@ -324,7 +325,7 @@ seq_printf(m, "No flip due on pipe %c (plane %c)\n", pipe, plane); } else { - if (!work->pending) { + if (atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { seq_printf(m, "Flip queued on pipe %c (plane %c)\n", pipe, plane); } else { @@ -335,7 +336,7 @@ seq_printf(m, "Stall check enabled, "); else seq_printf(m, "Stall check waiting for page flip ioctl, "); - seq_printf(m, "%d prepares\n", work->pending); + seq_printf(m, "%d prepares\n", atomic_read(&work->pending)); if (work->old_fb_obj) { struct drm_i915_gem_object *obj = work->old_fb_obj; @@ -709,6 +710,7 @@ seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, error->time.tv_usec); + seq_printf(m, "Kernel: " UTS_RELEASE "\n"); seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device); seq_printf(m, "EIR: 0x%08x\n", error->eir); seq_printf(m, "IER: 0x%08x\n", error->ier); @@ -892,7 +894,7 @@ u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS); u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); - u32 rpstat; + u32 rpstat, cagf; u32 rpupei, rpcurup, rpprevup; u32 rpdownei, rpcurdown, rpprevdown; int max_freq; @@ -911,6 +913,11 @@ rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI); rpcurdown = I915_READ(GEN6_RP_CUR_DOWN); rpprevdown = I915_READ(GEN6_RP_PREV_DOWN); + if (IS_HASWELL(dev)) + cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT; + else + cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT; + cagf *= 50; gen6_gt_force_wake_put(dev_priv); mutex_unlock(&dev->struct_mutex); @@ -923,8 +930,7 @@ gt_perf_status & 0xff); seq_printf(m, "Render p-state limit: %d\n", rp_state_limits & 0xff); - seq_printf(m, "CAGF: %dMHz\n", ((rpstat & GEN6_CAGF_MASK) >> - GEN6_CAGF_SHIFT) * 50); + seq_printf(m, "CAGF: %dMHz\n", cagf); seq_printf(m, "RP CUR UP EI: %dus\n", rpupei & GEN6_CURICONT_MASK); seq_printf(m, "RP CUR UP: %dus\n", rpcurup & --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_modes.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_modes.c @@ -61,6 +61,24 @@ } /** + * intel_connector_update_modes - update connector from edid + * @connector: DRM connector device to use + * @edid: previously read EDID information + */ +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid) +{ + int ret; + + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + drm_edid_to_eld(connector, edid); + kfree(edid); + + return ret; +} + +/** * intel_ddc_get_modes - get modelist from monitor * @connector: DRM connector device to use * @adapter: i2c adapter @@ -71,18 +89,12 @@ struct i2c_adapter *adapter) { struct edid *edid; - int ret = 0; edid = drm_get_edid(connector, adapter); - if (edid) { - drm_mode_connector_update_edid_property(connector, edid); - ret = drm_add_edid_modes(connector, edid); - drm_edid_to_eld(connector, edid); - connector->display_info.raw_edid = NULL; - kfree(edid); - } + if (!edid) + return 0; - return ret; + return intel_connector_update_modes(connector, edid); } static const struct drm_prop_enum_list force_audio_names[] = { --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_gtt.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -72,7 +72,7 @@ /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024 * entries. For aliasing ppgtt support we just steal them at the end for * now. */ - first_pd_entry_in_global_pt = 512*1024 - I915_PPGTT_PD_ENTRIES; + first_pd_entry_in_global_pt = dev_priv->mm.gtt->gtt_total_entries - I915_PPGTT_PD_ENTRIES; ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL); if (!ppgtt) @@ -261,7 +261,10 @@ pte_flags |= GEN6_PTE_CACHE_LLC; break; case I915_CACHE_NONE: - pte_flags |= GEN6_PTE_UNCACHED; + if (IS_HASWELL(dev)) + pte_flags |= HSW_PTE_UNCACHED; + else + pte_flags |= GEN6_PTE_UNCACHED; break; default: BUG(); --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_irq.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_irq.c @@ -375,6 +375,86 @@ mutex_unlock(&dev_priv->dev->struct_mutex); } + +/** + * ivybridge_parity_work - Workqueue called when a parity error interrupt + * occurred. + * @work: workqueue struct + * + * Doesn't actually do anything except notify userspace. As a consequence of + * this event, userspace should try to remap the bad rows since statistically + * it is likely the same row is more likely to go bad again. + */ +static void ivybridge_parity_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + parity_error_work); + u32 error_status, row, bank, subbank; + char *parity_event[5]; + uint32_t misccpctl; + unsigned long flags; + + /* We must turn off DOP level clock gating to access the L3 registers. + * In order to prevent a get/put style interface, acquire struct mutex + * any time we access those registers. + */ + mutex_lock(&dev_priv->dev->struct_mutex); + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + error_status = I915_READ(GEN7_L3CDERRST1); + row = GEN7_PARITY_ERROR_ROW(error_status); + bank = GEN7_PARITY_ERROR_BANK(error_status); + subbank = GEN7_PARITY_ERROR_SUBBANK(error_status); + + I915_WRITE(GEN7_L3CDERRST1, GEN7_PARITY_ERROR_VALID | + GEN7_L3CDERRST1_ENABLE); + POSTING_READ(GEN7_L3CDERRST1); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask &= ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + mutex_unlock(&dev_priv->dev->struct_mutex); + + parity_event[0] = "L3_PARITY_ERROR=1"; + parity_event[1] = kasprintf(GFP_KERNEL, "ROW=%d", row); + parity_event[2] = kasprintf(GFP_KERNEL, "BANK=%d", bank); + parity_event[3] = kasprintf(GFP_KERNEL, "SUBBANK=%d", subbank); + parity_event[4] = NULL; + + kobject_uevent_env(&dev_priv->dev->primary->kdev.kobj, + KOBJ_CHANGE, parity_event); + + DRM_DEBUG("Parity error: Row = %d, Bank = %d, Sub bank = %d.\n", + row, bank, subbank); + + kfree(parity_event[3]); + kfree(parity_event[2]); + kfree(parity_event[1]); +} + +static void ivybridge_handle_parity_error(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long flags; + + if (!IS_IVYBRIDGE(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask |= GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + queue_work(dev_priv->wq, &dev_priv->parity_error_work); +} + static void snb_gt_irq_handler(struct drm_device *dev, struct drm_i915_private *dev_priv, u32 gt_iir) @@ -394,6 +474,9 @@ DRM_ERROR("GT error interrupt 0x%08x\n", gt_iir); i915_handle_error(dev, false); } + + if (gt_iir & GT_GEN7_L3_PARITY_ERROR_INTERRUPT) + ivybridge_handle_parity_error(dev); } static void gen6_queue_rps_work(struct drm_i915_private *dev_priv, @@ -605,12 +688,12 @@ intel_opregion_gse_intr(dev); for (i = 0; i < 3; i++) { + if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) + drm_handle_vblank(dev, i); if (de_iir & (DE_PLANEA_FLIP_DONE_IVB << (5 * i))) { intel_prepare_page_flip(dev, i); intel_finish_page_flip_plane(dev, i); } - if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) - drm_handle_vblank(dev, i); } /* check event from PCH */ @@ -692,6 +775,12 @@ if (de_iir & DE_GSE) intel_opregion_gse_intr(dev); + if (de_iir & DE_PIPEA_VBLANK) + drm_handle_vblank(dev, 0); + + if (de_iir & DE_PIPEB_VBLANK) + drm_handle_vblank(dev, 1); + if (de_iir & DE_PLANEA_FLIP_DONE) { intel_prepare_page_flip(dev, 0); intel_finish_page_flip_plane(dev, 0); @@ -702,12 +791,6 @@ intel_finish_page_flip_plane(dev, 1); } - if (de_iir & DE_PIPEA_VBLANK) - drm_handle_vblank(dev, 0); - - if (de_iir & DE_PIPEB_VBLANK) - drm_handle_vblank(dev, 1); - /* check event from PCH */ if (de_iir & DE_PCH_EVENT) { if (pch_iir & hotplug_mask) @@ -1336,7 +1419,9 @@ spin_lock_irqsave(&dev->event_lock, flags); work = intel_crtc->unpin_work; - if (work == NULL || work->pending || !work->enable_stall_check) { + if (work == NULL || + atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE || + !work->enable_stall_check) { /* Either the pending flip IRQ arrived, or we're too early. Don't check */ spin_unlock_irqrestore(&dev->event_lock, flags); return; @@ -1648,7 +1733,6 @@ atomic_set(&dev_priv->irq_received, 0); - I915_WRITE(HWSTAM, 0xeffe); /* XXX hotplug from PCH */ @@ -1811,13 +1895,13 @@ DE_PIPEA_VBLANK_IVB); POSTING_READ(DEIER); - dev_priv->gt_irq_mask = ~0; + dev_priv->gt_irq_mask = ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; I915_WRITE(GTIIR, I915_READ(GTIIR)); I915_WRITE(GTIMR, dev_priv->gt_irq_mask); render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | - GEN6_BLITTER_USER_INTERRUPT; + GEN6_BLITTER_USER_INTERRUPT | GT_GEN7_L3_PARITY_ERROR_INTERRUPT; I915_WRITE(GTIER, render_irqs); POSTING_READ(GTIER); @@ -2575,6 +2659,7 @@ INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); INIT_WORK(&dev_priv->error_work, i915_error_work_func); INIT_WORK(&dev_priv->rps_work, gen6_pm_rps_work); + INIT_WORK(&dev_priv->parity_error_work, ivybridge_parity_work); dev->driver->get_vblank_counter = i915_get_vblank_counter; dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ @@ -2626,9 +2711,6 @@ dev->driver->irq_handler = i8xx_irq_handler; dev->driver->irq_uninstall = i8xx_irq_uninstall; } else if (INTEL_INFO(dev)->gen == 3) { - /* IIR "flip pending" means done if this bit is set */ - I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); - dev->driver->irq_preinstall = i915_irq_preinstall; dev->driver->irq_postinstall = i915_irq_postinstall; dev->driver->irq_uninstall = i915_irq_uninstall; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_drv.c @@ -351,13 +351,9 @@ INTEL_VGA_DEVICE(0x0162, &intel_ivybridge_d_info), /* GT2 desktop */ INTEL_VGA_DEVICE(0x015a, &intel_ivybridge_d_info), /* GT1 server */ INTEL_VGA_DEVICE(0x016a, &intel_ivybridge_d_info), /* GT2 server */ - INTEL_VGA_DEVICE(0x0402, &intel_haswell_d_info), /* GT1 desktop */ - INTEL_VGA_DEVICE(0x0412, &intel_haswell_d_info), /* GT2 desktop */ - INTEL_VGA_DEVICE(0x040a, &intel_haswell_d_info), /* GT1 server */ - INTEL_VGA_DEVICE(0x041a, &intel_haswell_d_info), /* GT2 server */ - INTEL_VGA_DEVICE(0x0406, &intel_haswell_m_info), /* GT1 mobile */ - INTEL_VGA_DEVICE(0x0416, &intel_haswell_m_info), /* GT2 mobile */ - INTEL_VGA_DEVICE(0x0c16, &intel_haswell_d_info), /* SDV */ + INTEL_VGA_DEVICE(0x0f30, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0157, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0155, &intel_valleyview_d_info), {0, 0, 0} }; @@ -429,36 +425,68 @@ return 1; } +static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv) +{ + u32 gt_thread_status_mask; + + if (IS_HASWELL(dev_priv->dev)) + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK_HSW; + else + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK; + + /* w/a for a sporadic read returning 0 by waiting for the GT + * thread to wake up. + */ + if (wait_for_atomic_us((I915_READ_NOTRACE(GEN6_GT_THREAD_STATUS_REG) & gt_thread_status_mask) == 0, 500)) + DRM_ERROR("GT thread status wait timed out\n"); +} + void __gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) { int count; + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_ACK; count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1)) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1)) udelay(10); I915_WRITE_NOTRACE(FORCEWAKE, 1); POSTING_READ(FORCEWAKE); count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1) == 0) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv) { int count; + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_MT_ACK; count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1)) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1)) udelay(10); I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_ENABLE(1)); POSTING_READ(FORCEWAKE_MT); count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1) == 0) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } /* @@ -549,6 +577,8 @@ count = 0; while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } void vlv_force_wake_put(struct drm_i915_private *dev_priv) @@ -925,10 +955,12 @@ return 0; } - static int __devinit i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { + struct intel_device_info *intel_info = + (struct intel_device_info *) ent->driver_data; + /* Only bind to function 0 of the device. Early generations * used function 1 as a placeholder for multi-head. This causes * us confusion instead, especially on the systems where both @@ -937,6 +969,18 @@ if (PCI_FUNC(pdev->devfn)) return -ENODEV; + /* We've managed to ship a kms-enabled ddx that shipped with an XvMC + * implementation for gen3 (and only gen3) that used legacy drm maps + * (gasp!) to share buffers between X and the client. Hence we need to + * keep around the fake agp stuff for gen3, even when kms is enabled. */ + if (intel_info->gen != 3) { + driver.driver_features &= + ~(DRIVER_USE_AGP | DRIVER_REQUIRE_AGP); + } else if (!intel_agp_enabled) { + DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); + return -ENODEV; + } + return drm_get_pci_dev(pdev, ent, &driver); } @@ -1097,11 +1141,6 @@ static int __init i915_init(void) { - if (!intel_agp_enabled) { - DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); - return -ENODEV; - } - driver.num_ioctls = i915_max_ioctl; /* --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_drv.h +++ linux-3.5.0/drivers/gpu/drm/i915/intel_drv.h @@ -176,6 +176,8 @@ struct intel_unpin_work *unpin_work; int fdi_lanes; + atomic_t unpin_work_count; + struct drm_i915_gem_object *cursor_bo; uint32_t cursor_addr; int16_t cursor_x, cursor_y; @@ -319,11 +321,14 @@ struct intel_unpin_work { struct work_struct work; - struct drm_device *dev; + struct drm_crtc *crtc; struct drm_i915_gem_object *old_fb_obj; struct drm_i915_gem_object *pending_flip_obj; struct drm_pending_vblank_event *event; - int pending; + atomic_t pending; +#define INTEL_FLIP_INACTIVE 0 +#define INTEL_FLIP_PENDING 1 +#define INTEL_FLIP_COMPLETE 2 bool enable_stall_check; }; @@ -334,6 +339,8 @@ int interval; }; +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid); int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); extern bool intel_ddc_probe(struct intel_encoder *intel_encoder, int ddc_bus); --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_dma.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_dma.c @@ -1082,8 +1082,8 @@ ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12); - dev_priv->dri1.gfx_hws_cpu_addr = ioremap_wc(dev->agp->base + hws->addr, - 4096); + dev_priv->dri1.gfx_hws_cpu_addr = + ioremap_wc(dev_priv->mm.gtt_base_addr + hws->addr, 4096); if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { i915_dma_cleanup(dev); ring->status_page.gfx_addr = 0; @@ -1411,7 +1411,7 @@ if (!ap) return; - ap->ranges[0].base = dev_priv->dev->agp->base; + ap->ranges[0].base = dev_priv->mm.gtt->gma_bus_addr; ap->ranges[0].size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; primary = @@ -1501,16 +1501,26 @@ goto put_bridge; } + ret = intel_gmch_probe(dev_priv->bridge_dev, dev->pdev, NULL); + if (!ret) { + DRM_ERROR("failed to set up gmch\n"); + ret = -EIO; + goto out_rmmap; + } + aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + dev_priv->mm.gtt_base_addr = dev_priv->mm.gtt->gma_bus_addr; dev_priv->mm.gtt_mapping = - io_mapping_create_wc(dev->agp->base, aperture_size); + io_mapping_create_wc(dev_priv->mm.gtt_base_addr, + aperture_size); if (dev_priv->mm.gtt_mapping == NULL) { ret = -EIO; - goto out_rmmap; + goto put_gmch; } - i915_mtrr_setup(dev_priv, dev->agp->base, aperture_size); + i915_mtrr_setup(dev_priv, dev_priv->mm.gtt_base_addr, + aperture_size); /* The i915 workqueue is primarily used for batched retirement of * requests (and thus managing bo) once the task has been completed @@ -1622,11 +1632,14 @@ destroy_workqueue(dev_priv->wq); out_mtrrfree: if (dev_priv->mm.gtt_mtrr >= 0) { - mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, - dev->agp->agp_info.aper_size * 1024 * 1024); + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + aperture_size); dev_priv->mm.gtt_mtrr = -1; } io_mapping_free(dev_priv->mm.gtt_mapping); +put_gmch: + intel_gmch_remove(); out_rmmap: pci_iounmap(dev->pdev, dev_priv->regs); put_bridge: @@ -1660,8 +1673,9 @@ io_mapping_free(dev_priv->mm.gtt_mapping); if (dev_priv->mm.gtt_mtrr >= 0) { - mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, - dev->agp->agp_info.aper_size * 1024 * 1024); + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + dev_priv->mm.gtt->gtt_mappable_entries * PAGE_SIZE); dev_priv->mm.gtt_mtrr = -1; } --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_sdvo.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_sdvo.c @@ -882,6 +882,45 @@ } #endif +static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, + unsigned if_index, uint8_t tx_rate, + uint8_t *data, unsigned length) +{ + uint8_t set_buf_index[2] = { if_index, 0 }; + uint8_t hbuf_size, tmp[8]; + int i; + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, + &hbuf_size, 1)) + return false; + + /* Buffer size is 0 based, hooray! */ + hbuf_size++; + + DRM_DEBUG_KMS("writing sdvo hbuf: %i, hbuf_size %i, hbuf_size: %i\n", + if_index, length, hbuf_size); + + for (i = 0; i < hbuf_size; i += 8) { + memset(tmp, 0, 8); + if (i < length) + memcpy(tmp, data + i, min_t(unsigned, 8, length - i)); + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_DATA, + tmp, 8)) + return false; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_TXRATE, + &tx_rate, 1); +} + static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo) { struct dip_infoframe avi_if = { @@ -889,11 +928,7 @@ .ver = DIP_VERSION_AVI, .len = DIP_LEN_AVI, }; - uint8_t tx_rate = SDVO_HBUF_TX_VSYNC; - uint8_t set_buf_index[2] = { 1, 0 }; uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)]; - uint64_t *data = (uint64_t *)sdvo_data; - unsigned i; intel_dip_infoframe_csum(&avi_if); @@ -903,22 +938,9 @@ sdvo_data[3] = avi_if.checksum; memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi)); - if (!intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_INDEX, - set_buf_index, 2)) - return false; - - for (i = 0; i < sizeof(sdvo_data); i += 8) { - if (!intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_DATA, - data, 8)) - return false; - data++; - } - - return intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_TXRATE, - &tx_rate, 1); + return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, + SDVO_HBUF_TX_VSYNC, + sdvo_data, sizeof(sdvo_data)); } static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo) @@ -1337,7 +1359,6 @@ } } else status = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -1411,7 +1432,6 @@ else ret = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } else ret = connector_status_connected; @@ -1457,7 +1477,6 @@ drm_add_edid_modes(connector, edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } } @@ -1573,11 +1592,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); @@ -1589,7 +1611,6 @@ } } -end: list_for_each_entry(newmode, &connector->probed_modes, head) { if (newmode->type & DRM_MODE_TYPE_PREFERRED) { intel_sdvo->sdvo_lvds_fixed_mode = @@ -2256,6 +2277,18 @@ return true; } +static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector, *tmp; + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (intel_attached_encoder(connector) == &intel_sdvo->base) + intel_sdvo_destroy(connector); + } +} + static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector, int type) @@ -2552,42 +2585,40 @@ } } - if (intel_sdvo->is_sdvob) - dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; - else - dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; - drm_encoder_helper_add(&intel_encoder->base, &intel_sdvo_helper_funcs); /* In default case sdvo lvds is false */ if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) goto err; - /* Set up hotplug command - note paranoia about contents of reply. - * We assume that the hardware is in a sane state, and only touch - * the bits we think we understand. - */ - intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ACTIVE_HOT_PLUG, - &intel_sdvo->hotplug_active, 2); - intel_sdvo->hotplug_active[0] &= ~0x3; - if (intel_sdvo_output_setup(intel_sdvo, intel_sdvo->caps.output_flags) != true) { DRM_DEBUG_KMS("SDVO output failed to setup on %s\n", SDVO_NAME(intel_sdvo)); - goto err; + /* Output_setup can leave behind connectors! */ + goto err_output; + } + + /* Only enable the hotplug irq if we need it, to work around noisy + * hotplug lines. + */ + if (intel_sdvo->hotplug_active[0]) { + if (intel_sdvo->is_sdvob) + dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; + else + dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; } intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo, sdvo_reg); /* Set the input timing to the screen. Assume always input 0. */ if (!intel_sdvo_set_target_input(intel_sdvo)) - goto err; + goto err_output; if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, &intel_sdvo->pixel_clock_min, &intel_sdvo->pixel_clock_max)) - goto err; + goto err_output; DRM_DEBUG_KMS("%s device VID/DID: %02X:%02X.%02X, " "clock range %dMHz - %dMHz, " @@ -2607,6 +2638,9 @@ (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); return true; +err_output: + intel_sdvo_output_cleanup(intel_sdvo); + err: drm_encoder_cleanup(&intel_encoder->base); i2c_del_adapter(&intel_sdvo->ddc); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.h +++ linux-3.5.0/drivers/gpu/drm/i915/intel_ringbuffer.h @@ -175,6 +175,8 @@ * The area from dword 0x20 to 0x3ff is available for driver usage. */ #define I915_GEM_HWS_INDEX 0x20 +#define I915_GEM_HWS_SCRATCH_INDEX 0x30 +#define I915_GEM_HWS_SCRATCH_ADDR (I915_GEM_HWS_SCRATCH_INDEX << MI_STORE_DWORD_INDEX_SHIFT) void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring); --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_debug.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_debug.c @@ -132,7 +132,8 @@ __func__, obj, obj->gtt_offset, handle, obj->size / 1024); - gtt_mapping = ioremap(dev->agp->base + obj->gtt_offset, obj->base.size); + gtt_mapping = ioremap(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + obj->base.size); if (gtt_mapping == NULL) { DRM_ERROR("failed to map GTT space\n"); return; --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_hdmi.c @@ -141,16 +141,22 @@ I915_WRITE(VIDEO_DIP_CTL, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(VIDEO_DIP_DATA, *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VIDEO_DIP_DATA, 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(VIDEO_DIP_CTL, val); + POSTING_READ(VIDEO_DIP_CTL); } static void ibx_write_infoframe(struct drm_encoder *encoder, @@ -190,16 +196,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void cpt_write_infoframe(struct drm_encoder *encoder, @@ -229,16 +241,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void vlv_write_infoframe(struct drm_encoder *encoder, @@ -262,16 +280,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void hsw_write_infoframe(struct drm_encoder *encoder, @@ -294,13 +318,19 @@ val &= ~hsw_infoframe_enable(frame); I915_WRITE(ctl_reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(data_reg + i, *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(data_reg + i, 0); + mmiowb(); val |= hsw_infoframe_enable(frame); I915_WRITE(ctl_reg, val); + POSTING_READ(ctl_reg); } static void intel_set_infoframe(struct drm_encoder *encoder, @@ -400,7 +430,7 @@ u32 temp; u32 enable_bits = SDVO_ENABLE; - if (intel_hdmi->has_audio) + if (intel_hdmi->has_audio || mode != DRM_MODE_DPMS_ON) enable_bits |= SDVO_AUDIO_ENABLE; temp = I915_READ(intel_hdmi->sdvox_reg); @@ -474,7 +504,6 @@ drm_detect_hdmi_monitor(edid); intel_hdmi->has_audio = drm_detect_monitor_audio(edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -515,8 +544,6 @@ if (edid) { if (edid->input & DRM_EDID_INPUT_DIGITAL) has_audio = drm_detect_monitor_audio(edid); - - connector->display_info.raw_edid = NULL; kfree(edid); } --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_lvds.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_lvds.c @@ -541,6 +541,7 @@ mutex_lock(&dev->mode_config.mutex); drm_helper_resume_force_mode(dev); + i915_redisable_vga(dev); mutex_unlock(&dev->mode_config.mutex); return NOTIFY_OK; @@ -558,8 +559,6 @@ struct drm_device *dev = connector->dev; struct drm_i915_private *dev_priv = dev->dev_private; - intel_panel_destroy_backlight(dev); - if (dev_priv->lid_notifier.notifier_call) acpi_lid_notifier_unregister(&dev_priv->lid_notifier); drm_sysfs_connector_remove(connector); @@ -747,10 +746,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"), }, }, { @@ -777,6 +776,30 @@ DMI_MATCH(DMI_BOARD_NAME, "MS-7469"), }, }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Gigabyte GA-D525TUD", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Supermicro X7SPA-H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), + DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), + }, + }, + { + .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-3.5.0.orig/drivers/gpu/drm/i915/intel_fb.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_fb.c @@ -140,7 +140,9 @@ info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset; info->fix.smem_len = size; - info->screen_base = ioremap_wc(dev->agp->base + obj->gtt_offset, size); + info->screen_base = + ioremap_wc(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + size); if (!info->screen_base) { ret = -ENOSPC; goto out_unpin; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem.c @@ -1122,7 +1122,7 @@ obj->fault_mappable = true; - pfn = ((dev->agp->base + obj->gtt_offset) >> PAGE_SHIFT) + + pfn = ((dev_priv->mm.gtt_base_addr + obj->gtt_offset) >> PAGE_SHIFT) + page_offset; /* Finally, remap it using the new GTT offset */ @@ -1144,6 +1144,11 @@ case 0: case -ERESTARTSYS: case -EINTR: + case -EBUSY: + /* + * EBUSY is ok: this just means that another thread + * already did the job. + */ return VM_FAULT_NOPAGE; case -ENOMEM: return VM_FAULT_OOM; @@ -2327,17 +2332,35 @@ return fence - dev_priv->fence_regs; } +static void i915_gem_write_fence__ipi(void *data) +{ + wbinvd(); +} + static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, struct drm_i915_fence_reg *fence, bool enable) { - struct drm_i915_private *dev_priv = obj->base.dev->dev_private; - int reg = fence_number(dev_priv, fence); + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int fence_reg = fence_number(dev_priv, fence); - i915_gem_write_fence(obj->base.dev, reg, enable ? obj : NULL); + /* In order to fully serialize access to the fenced region and + * the update to the fence register we need to take extreme + * measures on SNB+. In theory, the write to the fence register + * flushes all memory transactions before, and coupled with the + * mb() placed around the register write we serialise all memory + * operations with respect to the changes in the tiler. Yet, on + * SNB+ we need to take a step further and emit an explicit wbinvd() + * on each processor in order to manually flush all memory + * transactions before updating the fence register. + */ + if (HAS_LLC(obj->base.dev)) + on_each_cpu(i915_gem_write_fence__ipi, NULL, 1); + i915_gem_write_fence(dev, fence_reg, enable ? obj : NULL); if (enable) { - obj->fence_reg = reg; + obj->fence_reg = fence_reg; fence->obj = obj; list_move_tail(&fence->lru_list, &dev_priv->mm.fence_list); } else { @@ -3044,7 +3067,8 @@ { int ret; - BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); + if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) + return -EBUSY; if (obj->gtt_space != NULL) { if ((alignment && obj->gtt_offset & (alignment - 1)) || @@ -3119,14 +3143,15 @@ goto out; } - obj->user_pin_count++; - obj->pin_filp = file; - if (obj->user_pin_count == 1) { + if (obj->user_pin_count == 0) { ret = i915_gem_object_pin(obj, args->alignment, true); if (ret) goto out; } + obj->user_pin_count++; + obj->pin_filp = file; + /* XXX - flush the CPU caches for pinned objects * as the X server doesn't manage domains yet */ @@ -3435,6 +3460,38 @@ return 0; } +void i915_gem_l3_remap(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 misccpctl; + int i; + + if (!IS_IVYBRIDGE(dev)) + return; + + if (!dev_priv->mm.l3_remap_info) + return; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) { + u32 remap = I915_READ(GEN7_L3LOG_BASE + i); + if (remap && remap != dev_priv->mm.l3_remap_info[i/4]) + DRM_DEBUG("0x%x was already programmed to %x\n", + GEN7_L3LOG_BASE + i, remap); + if (remap && !dev_priv->mm.l3_remap_info[i/4]) + DRM_DEBUG_DRIVER("Clearing remapped register\n"); + I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->mm.l3_remap_info[i/4]); + } + + /* Make sure all the writes land before disabling dop clock gating */ + POSTING_READ(GEN7_L3LOG_BASE); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); +} + void i915_gem_init_swizzling(struct drm_device *dev) { drm_i915_private_t *dev_priv = dev->dev_private; @@ -3524,6 +3581,8 @@ drm_i915_private_t *dev_priv = dev->dev_private; int ret; + i915_gem_l3_remap(dev); + i915_gem_init_swizzling(dev); ret = intel_init_render_ring_buffer(dev); @@ -3657,7 +3716,6 @@ BUG_ON(!list_empty(&dev_priv->mm.active_list)); BUG_ON(!list_empty(&dev_priv->mm.flushing_list)); - BUG_ON(!list_empty(&dev_priv->mm.inactive_list)); mutex_unlock(&dev->struct_mutex); ret = drm_irq_install(dev); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_panel.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_panel.c @@ -361,6 +361,9 @@ intel_panel_init_backlight(dev); + if (WARN_ON(dev_priv->backlight)) + return -ENODEV; + if (dev_priv->int_lvds_connector) connector = dev_priv->int_lvds_connector; else if (dev_priv->int_edp_connector) @@ -389,8 +392,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_device *dev) --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_crt.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_crt.c @@ -284,6 +284,36 @@ return ret; } +static struct edid *intel_crt_get_edid(struct drm_connector *connector, + struct i2c_adapter *i2c) +{ + struct edid *edid; + + edid = drm_get_edid(connector, i2c); + + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { + DRM_DEBUG_KMS("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n"); + intel_gmbus_force_bit(i2c, true); + edid = drm_get_edid(connector, i2c); + intel_gmbus_force_bit(i2c, false); + } + + return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + + edid = intel_crt_get_edid(connector, adapter); + if (!edid) + return 0; + + return intel_connector_update_modes(connector, edid); +} + static bool intel_crt_detect_ddc(struct drm_connector *connector) { struct intel_crt *crt = intel_attached_crt(connector); @@ -299,7 +329,7 @@ struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - edid = drm_get_edid(connector, i2c); + edid = intel_crt_get_edid(connector, i2c); /* * This may be a DVI-I connector with a shared DDC * link between analog and digital outputs, so we @@ -309,7 +339,6 @@ */ if (edid != NULL) { is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -498,13 +527,13 @@ struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - ret = intel_ddc_get_modes(connector, i2c); + ret = intel_crt_ddc_get_modes(connector, i2c); if (ret || !IS_G4X(dev)) return ret; /* Try to probe digital port for output in DVI-I -> VGA mode. */ i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); - return intel_ddc_get_modes(connector, i2c); + return intel_crt_ddc_get_modes(connector, i2c); } static int intel_crt_set_property(struct drm_connector *connector, --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_dp.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_dp.c @@ -726,8 +726,8 @@ bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24; mode_rate = intel_dp_link_required(mode->clock, bpp); - for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { - for (clock = 0; clock <= max_clock; clock++) { + for (clock = 0; clock <= max_clock; clock++) { + for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count); if (mode_rate <= link_avail) { @@ -1171,10 +1171,14 @@ WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); pp = ironlake_get_pp_control(dev_priv); - pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE); + /* We need to switch off panel power _and_ force vdd, for otherwise some + * panels get very unhappy and cease to work. */ + pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); I915_WRITE(PCH_PP_CONTROL, pp); POSTING_READ(PCH_PP_CONTROL); + intel_dp->want_panel_vdd = false; + ironlake_wait_panel_off(intel_dp); } @@ -1284,11 +1288,9 @@ * ensure that we have vdd while we switch off the panel. */ ironlake_edp_panel_vdd_on(intel_dp); ironlake_edp_backlight_off(intel_dp); - ironlake_edp_panel_off(intel_dp); - intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + ironlake_edp_panel_off(intel_dp); intel_dp_link_down(intel_dp); - ironlake_edp_panel_vdd_off(intel_dp, false); } static void intel_dp_commit(struct drm_encoder *encoder) @@ -1323,11 +1325,9 @@ /* Switching the panel off requires vdd. */ ironlake_edp_panel_vdd_on(intel_dp); ironlake_edp_backlight_off(intel_dp); - ironlake_edp_panel_off(intel_dp); - intel_dp_sink_dpms(intel_dp, mode); + ironlake_edp_panel_off(intel_dp); intel_dp_link_down(intel_dp); - ironlake_edp_panel_vdd_off(intel_dp, false); if (is_cpu_edp(intel_dp)) ironlake_edp_pll_off(encoder); @@ -1768,7 +1768,7 @@ for (i = 0; i < intel_dp->lane_count; i++) if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) break; - if (i == intel_dp->lane_count) { + if (i == intel_dp->lane_count && voltage_tries == 5) { ++loop_tries; if (loop_tries == 5) { DRM_DEBUG_KMS("too many full retries, give up\n"); @@ -1922,7 +1922,7 @@ DP |= DP_LINK_TRAIN_OFF; } - if (!HAS_PCH_CPT(dev) && + if (HAS_PCH_IBX(dev) && I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) { struct drm_crtc *crtc = intel_dp->base.base.crtc; @@ -2159,7 +2159,6 @@ ret = drm_add_edid_modes(connector, intel_dp->edid); drm_edid_to_eld(connector, intel_dp->edid); - connector->display_info.raw_edid = NULL; return intel_dp->edid_mode_count; } @@ -2205,7 +2204,6 @@ edid = intel_dp_get_edid(connector, &intel_dp->adapter); if (edid) { intel_dp->has_audio = drm_detect_monitor_audio(edid); - connector->display_info.raw_edid = NULL; kfree(edid); } } @@ -2270,8 +2268,6 @@ edid = intel_dp_get_edid(connector, &intel_dp->adapter); if (edid) { has_audio = drm_detect_monitor_audio(edid); - - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -2336,11 +2332,6 @@ static void intel_dp_destroy(struct drm_connector *connector) { - struct drm_device *dev = connector->dev; - - if (intel_dpd_is_edp(dev)) - intel_panel_destroy_backlight(dev); - drm_sysfs_connector_remove(connector); drm_connector_cleanup(connector); kfree(connector); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_dvo.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_dvo.c @@ -370,6 +370,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 @@ -389,7 +390,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-3.5.0.orig/drivers/gpu/drm/i915/intel_display.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_display.c @@ -141,8 +141,8 @@ .vco = { .min = 1400000, .max = 2800000 }, .n = { .min = 1, .max = 6 }, .m = { .min = 70, .max = 120 }, - .m1 = { .min = 10, .max = 22 }, - .m2 = { .min = 5, .max = 9 }, + .m1 = { .min = 8, .max = 18 }, + .m2 = { .min = 3, .max = 7 }, .p = { .min = 5, .max = 80 }, .p1 = { .min = 1, .max = 8 }, .p2 = { .dot_limit = 200000, @@ -434,7 +434,7 @@ * register is uninitialized. */ val = I915_READ(reg); - if (!(val & ~LVDS_DETECTED)) + if (!(val & ~(LVDS_PIPE_MASK | LVDS_DETECTED))) val = dev_priv->bios_lvds_val; dev_priv->lvds_val = val; } @@ -1238,7 +1238,7 @@ enum pipe pipe, int reg) { u32 val = I915_READ(reg); - WARN(hdmi_pipe_enabled(dev_priv, val, pipe), + WARN(hdmi_pipe_enabled(dev_priv, pipe, val), "PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n", reg, pipe_name(pipe)); } @@ -1255,13 +1255,13 @@ reg = PCH_ADPA; val = I915_READ(reg); - WARN(adpa_pipe_enabled(dev_priv, val, pipe), + WARN(adpa_pipe_enabled(dev_priv, pipe, val), "PCH VGA enabled on transcoder %c, should be disabled\n", pipe_name(pipe)); reg = PCH_LVDS; val = I915_READ(reg); - WARN(lvds_pipe_enabled(dev_priv, val, pipe), + WARN(lvds_pipe_enabled(dev_priv, pipe, val), "PCH LVDS enabled on transcoder %c, should be disabled\n", pipe_name(pipe)); @@ -1723,7 +1723,7 @@ enum pipe pipe, int reg) { u32 val = I915_READ(reg); - if (hdmi_pipe_enabled(dev_priv, val, pipe)) { + if (hdmi_pipe_enabled(dev_priv, pipe, val)) { DRM_DEBUG_KMS("Disabling pch HDMI %x on pipe %d\n", reg, pipe); I915_WRITE(reg, val & ~PORT_ENABLE); @@ -1745,12 +1745,12 @@ reg = PCH_ADPA; val = I915_READ(reg); - if (adpa_pipe_enabled(dev_priv, val, pipe)) + if (adpa_pipe_enabled(dev_priv, pipe, val)) I915_WRITE(reg, val & ~ADPA_DAC_ENABLE); reg = PCH_LVDS; val = I915_READ(reg); - if (lvds_pipe_enabled(dev_priv, val, pipe)) { + if (lvds_pipe_enabled(dev_priv, pipe, val)) { DRM_DEBUG_KMS("disable lvds on pipe %d val 0x%08x\n", pipe, val); I915_WRITE(reg, val & ~LVDS_PORT_EN); POSTING_READ(reg); @@ -2165,18 +2165,6 @@ FDI_FE_ERRC_ENABLE); } -static void cpt_phase_pointer_enable(struct drm_device *dev, int pipe) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - u32 flags = I915_READ(SOUTH_CHICKEN1); - - flags |= FDI_PHASE_SYNC_OVR(pipe); - I915_WRITE(SOUTH_CHICKEN1, flags); /* once to unlock... */ - flags |= FDI_PHASE_SYNC_EN(pipe); - I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to enable */ - POSTING_READ(SOUTH_CHICKEN1); -} - /* The FDI link training functions for ILK/Ibexpeak. */ static void ironlake_fdi_link_train(struct drm_crtc *crtc) { @@ -2327,9 +2315,6 @@ POSTING_READ(reg); udelay(150); - if (HAS_PCH_CPT(dev)) - cpt_phase_pointer_enable(dev, pipe); - for (i = 0; i < 4; i++) { reg = FDI_TX_CTL(pipe); temp = I915_READ(reg); @@ -2456,9 +2441,6 @@ POSTING_READ(reg); udelay(150); - if (HAS_PCH_CPT(dev)) - cpt_phase_pointer_enable(dev, pipe); - for (i = 0; i < 4; i++) { reg = FDI_TX_CTL(pipe); temp = I915_READ(reg); @@ -2572,17 +2554,6 @@ } } -static void cpt_phase_pointer_disable(struct drm_device *dev, int pipe) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - u32 flags = I915_READ(SOUTH_CHICKEN1); - - flags &= ~(FDI_PHASE_SYNC_EN(pipe)); - I915_WRITE(SOUTH_CHICKEN1, flags); /* once to disable... */ - flags &= ~(FDI_PHASE_SYNC_OVR(pipe)); - I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to lock */ - POSTING_READ(SOUTH_CHICKEN1); -} static void ironlake_fdi_disable(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; @@ -2609,11 +2580,6 @@ /* Ironlake workaround, disable clock pointer after downing FDI */ if (HAS_PCH_IBX(dev)) { I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); - I915_WRITE(FDI_RX_CHICKEN(pipe), - I915_READ(FDI_RX_CHICKEN(pipe) & - ~FDI_RX_PHASE_SYNC_POINTER_EN)); - } else if (HAS_PCH_CPT(dev)) { - cpt_phase_pointer_disable(dev, pipe); } /* still set train pattern 1 */ @@ -2641,13 +2607,34 @@ udelay(100); } +static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long flags; + bool pending; + + if (atomic_read(&dev_priv->mm.wedged)) + return false; + + spin_lock_irqsave(&dev->event_lock, flags); + pending = to_intel_crtc(crtc)->unpin_work != NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + return pending; +} + static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; if (crtc->fb == NULL) return; + wait_event(dev_priv->pending_flip_queue, + !intel_crtc_has_pending_flip(crtc)); + mutex_lock(&dev->struct_mutex); intel_finish_fb(crtc->fb); mutex_unlock(&dev->struct_mutex); @@ -3033,7 +3020,11 @@ * as some pre-programmed values are broken, * e.g. x201. */ - I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); + if (IS_IVYBRIDGE(dev)) + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + else + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); } @@ -3235,6 +3226,7 @@ struct intel_crtc *intel_crtc = to_intel_crtc(crtc); int pipe = intel_crtc->pipe; int plane = intel_crtc->plane; + u32 pctl; if (!intel_crtc->active) return; @@ -3250,6 +3242,13 @@ intel_disable_plane(dev_priv, plane, pipe); intel_disable_pipe(dev_priv, pipe); + + /* Disable pannel fitter if it is on this pipe. */ + pctl = I915_READ(PFIT_CONTROL); + if ((pctl & PFIT_ENABLE) && + ((pctl & PFIT_PIPE_MASK) >> PFIT_PIPE_SHIFT) == pipe) + I915_WRITE(PFIT_CONTROL, 0); + intel_disable_pll(dev_priv, pipe); intel_crtc->active = false; @@ -3581,17 +3580,6 @@ continue; } - if (intel_encoder->type == INTEL_OUTPUT_EDP) { - /* Use VBT settings if we have an eDP panel */ - unsigned int edp_bpc = dev_priv->edp.bpp / 3; - - if (edp_bpc < display_bpc) { - DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); - display_bpc = edp_bpc; - } - continue; - } - /* Not one of the known troublemakers, check the EDID */ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { @@ -3606,6 +3594,17 @@ } } + if (intel_encoder->type == INTEL_OUTPUT_EDP) { + /* Use VBT settings if we have an eDP panel */ + unsigned int edp_bpc = dev_priv->edp.bpp / 3; + + if (edp_bpc && edp_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); + display_bpc = edp_bpc; + } + continue; + } + /* * HDMI is either 12 or 8, so if the display lets 10bpc sneak * through, clamp it down. (Note: >12bpc will be caught below.) @@ -3937,12 +3936,6 @@ POSTING_READ(DPLL(pipe)); udelay(150); - I915_WRITE(DPLL(pipe), dpll); - - /* Wait for the clocks to stabilize. */ - POSTING_READ(DPLL(pipe)); - udelay(150); - /* The LVDS pin pair needs to be on before the DPLLs are enabled. * This is an exception to the general rule that mode_set doesn't turn * things on. @@ -3950,6 +3943,12 @@ if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) intel_update_lvds(crtc, clock, adjusted_mode); + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + /* The pixel multiplier can only be updated once the * DPLL is enabled and the clocks are stable. * @@ -4077,7 +4076,7 @@ /* default to 8bpc */ pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN); if (is_dp) { - if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { pipeconf |= PIPECONF_BPP_6 | PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP; @@ -4454,7 +4453,7 @@ /* determine panel color depth */ temp = I915_READ(PIPECONF(pipe)); temp &= ~PIPE_BPC_MASK; - dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp, mode); + dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp, adjusted_mode); switch (pipe_bpp) { case 18: temp |= PIPE_6BPC; @@ -5851,14 +5850,19 @@ { struct intel_unpin_work *work = container_of(__work, struct intel_unpin_work, work); + struct drm_device *dev = work->crtc->dev; - mutex_lock(&work->dev->struct_mutex); + mutex_lock(&dev->struct_mutex); intel_unpin_fb_obj(work->old_fb_obj); drm_gem_object_unreference(&work->pending_flip_obj->base); drm_gem_object_unreference(&work->old_fb_obj->base); - intel_update_fbc(work->dev); - mutex_unlock(&work->dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + BUG_ON(atomic_read(&to_intel_crtc(work->crtc)->unpin_work_count) == 0); + atomic_dec(&to_intel_crtc(work->crtc)->unpin_work_count); + kfree(work); } @@ -5881,11 +5885,18 @@ spin_lock_irqsave(&dev->event_lock, flags); work = intel_crtc->unpin_work; - if (work == NULL || !work->pending) { + + /* Ensure we don't miss a work->pending update ... */ + smp_rmb(); + + if (work == NULL || atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { spin_unlock_irqrestore(&dev->event_lock, flags); return; } + /* and that the unpin work is consistent wrt ->pending. */ + smp_rmb(); + intel_crtc->unpin_work = NULL; if (work->event) { @@ -5927,10 +5938,9 @@ atomic_clear_mask(1 << intel_crtc->plane, &obj->pending_flip.counter); - if (atomic_read(&obj->pending_flip) == 0) - wake_up(&dev_priv->pending_flip_queue); + wake_up(&dev_priv->pending_flip_queue); - schedule_work(&work->work); + queue_work(dev_priv->wq, &work->work); trace_i915_flip_complete(intel_crtc->plane, work->pending_flip_obj); } @@ -5958,16 +5968,25 @@ to_intel_crtc(dev_priv->plane_to_crtc_mapping[plane]); unsigned long flags; + /* NB: An MMIO update of the plane base pointer will also + * generate a page-flip completion irq, i.e. every modeset + * is also accompanied by a spurious intel_prepare_page_flip(). + */ spin_lock_irqsave(&dev->event_lock, flags); - if (intel_crtc->unpin_work) { - if ((++intel_crtc->unpin_work->pending) > 1) - DRM_ERROR("Prepared flip multiple times\n"); - } else { - DRM_DEBUG_DRIVER("preparing flip with no unpin work?\n"); - } + if (intel_crtc->unpin_work) + atomic_inc_not_zero(&intel_crtc->unpin_work->pending); spin_unlock_irqrestore(&dev->event_lock, flags); } +inline static void intel_mark_page_flip_active(struct intel_crtc *intel_crtc) +{ + /* Ensure that the work item is consistent when activating it ... */ + smp_wmb(); + atomic_set(&intel_crtc->unpin_work->pending, INTEL_FLIP_PENDING); + /* and that it is marked active as soon as the irq could fire. */ + smp_wmb(); +} + static int intel_gen2_queue_flip(struct drm_device *dev, struct drm_crtc *crtc, struct drm_framebuffer *fb, @@ -6005,6 +6024,8 @@ intel_ring_emit(ring, fb->pitches[0]); intel_ring_emit(ring, obj->gtt_offset + offset); intel_ring_emit(ring, 0); /* aux display base address, unused */ + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6049,6 +6070,7 @@ intel_ring_emit(ring, obj->gtt_offset + offset); intel_ring_emit(ring, MI_NOOP); + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6093,6 +6115,8 @@ pf = 0; pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6135,6 +6159,8 @@ pf = 0; pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6178,7 +6204,7 @@ default: WARN_ONCE(1, "unknown plane in flip command\n"); ret = -ENODEV; - goto err; + goto err_unpin; } ret = intel_ring_begin(ring, 4); @@ -6189,6 +6215,8 @@ intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); intel_ring_emit(ring, (obj->gtt_offset)); intel_ring_emit(ring, (MI_NOOP)); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6212,8 +6240,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; @@ -6224,9 +6252,8 @@ return -ENOMEM; work->event = event; - work->dev = crtc->dev; - intel_fb = to_intel_framebuffer(crtc->fb); - work->old_fb_obj = intel_fb->obj; + work->crtc = crtc; + 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); @@ -6246,8 +6273,8 @@ 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); mutex_lock(&dev->struct_mutex); @@ -6265,6 +6292,7 @@ * the flip occurs and the object is no longer visible. */ atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_inc(&intel_crtc->unpin_work_count); ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); if (ret) @@ -6279,7 +6307,9 @@ return 0; cleanup_pending: + atomic_dec(&intel_crtc->unpin_work_count); atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + crtc->fb = old_fb; drm_gem_object_unreference(&work->old_fb_obj->base); drm_gem_object_unreference(&obj->base); mutex_unlock(&dev->struct_mutex); @@ -6844,6 +6874,13 @@ DRM_INFO("applying inverted panel brightness quirk\n"); } +static void quirk_rc6_force_disable(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_RC6_DISABLE; + DRM_INFO("applying RC6 disable quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -6851,6 +6888,34 @@ void (*hook)(struct drm_device *dev); }; +/* For systems that don't have a meaningful PCI subdevice/subvendor ID */ +struct intel_dmi_quirk { + void (*hook)(struct drm_device *dev); + const struct dmi_system_id (*dmi_id_list)[]; +}; + +static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +{ + DRM_INFO("Backlight polarity reversed on %s\n", id->ident); + return 1; +} + +static const struct intel_dmi_quirk intel_dmi_quirks[] = { + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = intel_dmi_reverse_brightness, + .ident = "NCR Corporation", + .matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, ""), + }, + }, + { } /* terminating entry */ + }, + .hook = quirk_invert_brightness, + }, +}; + static struct intel_quirk intel_quirks[] = { /* HP Mini needs pipe A force quirk (LP: #322104) */ { 0x27ae, 0x103c, 0x361a, quirk_pipea_force }, @@ -6879,6 +6944,24 @@ /* Acer Aspire 5734Z must invert backlight brightness */ { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness }, + + /* Asus ET2012E may fail to resume from S3 if RC6 is enabled */ + { 0x0102, 0x1043, 0x844d, quirk_rc6_force_disable }, + + /* Lenovo ThinkCentre S510 may hang after idle for a long time */ + { 0x0102, 0x17aa, 0x307b, quirk_rc6_force_disable }, + + /* Acer Aspire 4736Z */ + { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, + + /* 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 }, }; static void intel_init_quirks(struct drm_device *dev) @@ -6896,6 +6979,10 @@ q->subsystem_device == PCI_ANY_ID)) q->hook(dev); } + for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) { + if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0) + intel_dmi_quirks[i].hook(dev); + } } /* Disable the VGA plane that we never use */ @@ -6925,6 +7012,8 @@ { struct drm_i915_private *dev_priv = dev->dev_private; + intel_prepare_ddi(dev); + intel_init_clock_gating(dev); if (IS_IRONLAKE_M(dev)) { @@ -6939,6 +7028,23 @@ } } +void i915_redisable_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 vga_reg; + + if (HAS_PCH_SPLIT(dev)) + vga_reg = CPU_VGACNTRL; + else + vga_reg = VGACNTRL; + + if (I915_READ(vga_reg) != VGA_DISP_DISABLE) { + DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); + I915_WRITE(vga_reg, VGA_DISP_DISABLE); + POSTING_READ(vga_reg); + } +} + void intel_modeset_init(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -6958,8 +7064,6 @@ intel_init_pm(dev); - intel_prepare_ddi(dev); - intel_init_display(dev); if (IS_GEN2(dev)) { @@ -6972,7 +7076,7 @@ dev->mode_config.max_width = 8192; dev->mode_config.max_height = 8192; } - dev->mode_config.fb_base = dev->agp->base; + dev->mode_config.fb_base = dev_priv->mm.gtt_base_addr; DRM_DEBUG_KMS("%d display pipe%s available.\n", dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : ""); @@ -7055,6 +7159,9 @@ del_timer_sync(&dev_priv->idle_timer); cancel_work_sync(&dev_priv->idle_work); + /* destroy backlight, if any, before the connectors */ + intel_panel_destroy_backlight(dev); + drm_mode_config_cleanup(dev); } --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_dmabuf.c @@ -169,8 +169,7 @@ { struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); - return dma_buf_export(obj, &i915_dmabuf_ops, - obj->base.size, 0600); + return dma_buf_export(obj, &i915_dmabuf_ops, obj->base.size, flags); } struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, @@ -188,7 +187,12 @@ obj = dma_buf->priv; /* is it from our device? */ if (obj->base.dev == dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(&obj->base); + dma_buf_put(dma_buf); return &obj->base; } } --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_reg.h +++ linux-3.5.0/drivers/gpu/drm/i915/i915_reg.h @@ -115,6 +115,7 @@ #define GEN6_PTE_VALID (1 << 0) #define GEN6_PTE_UNCACHED (1 << 1) +#define HSW_PTE_UNCACHED (0) #define GEN6_PTE_CACHE_LLC (2 << 1) #define GEN6_PTE_CACHE_LLC_MLC (3 << 1) #define GEN6_PTE_CACHE_BITS (3 << 1) @@ -237,8 +238,12 @@ */ #define MI_LOAD_REGISTER_IMM(x) MI_INSTR(0x22, 2*x-1) #define MI_FLUSH_DW MI_INSTR(0x26, 1) /* for GEN6 */ -#define MI_INVALIDATE_TLB (1<<18) -#define MI_INVALIDATE_BSD (1<<7) +#define MI_FLUSH_DW_STORE_INDEX (1<<21) +#define MI_INVALIDATE_TLB (1<<18) +#define MI_FLUSH_DW_OP_STOREDW (1<<14) +#define MI_INVALIDATE_BSD (1<<7) +#define MI_FLUSH_DW_USE_GTT (1<<2) +#define MI_FLUSH_DW_USE_PPGTT (0<<2) #define MI_BATCH_BUFFER MI_INSTR(0x30, 1) #define MI_BATCH_NON_SECURE (1) #define MI_BATCH_NON_SECURE_I965 (1<<8) @@ -299,6 +304,7 @@ #define DISPLAY_PLANE_B (1<<20) #define GFX_OP_PIPE_CONTROL(len) ((0x3<<29)|(0x3<<27)|(0x2<<24)|(len-2)) #define PIPE_CONTROL_CS_STALL (1<<20) +#define PIPE_CONTROL_TLB_INVALIDATE (1<<18) #define PIPE_CONTROL_QW_WRITE (1<<14) #define PIPE_CONTROL_DEPTH_STALL (1<<13) #define PIPE_CONTROL_WRITE_FLUSH (1<<12) @@ -501,6 +507,7 @@ * the enables for writing to the corresponding low bit. */ #define _3D_CHICKEN 0x02084 +#define _3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB (1 << 10) #define _3D_CHICKEN2 0x0208c /* Disables pipelining of read flushes past the SF-WIZ interface. * Required on all Ironlake steppings according to the B-Spec, but the @@ -508,11 +515,15 @@ */ # define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14) #define _3D_CHICKEN3 0x02090 -#define _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL (1 << 5) +#define _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL (1 << 5) #define MI_MODE 0x0209c # define VS_TIMER_DISPATCH (1 << 6) # define MI_FLUSH_ENABLE (1 << 12) +# define ASYNC_FLIP_PERF_DISABLE (1 << 14) + +#define GEN6_GT_MODE 0x20d0 +#define GEN6_GT_MODE_HI (1 << 9) #define GFX_MODE 0x02520 #define GFX_MODE_GEN7 0x0229c @@ -1453,6 +1464,10 @@ #define DDRMPLL1 0X12c20 #define PEG_BAND_GAP_DATA 0x14d68 +#define GEN6_GT_THREAD_STATUS_REG 0x13805c +#define GEN6_GT_THREAD_STATUS_CORE_MASK 0x7 +#define GEN6_GT_THREAD_STATUS_CORE_MASK_HSW (0x7 | (0x07 << 16)) + #define GEN6_GT_PERF_STATUS 0x145948 #define GEN6_RP_STATE_LIMITS 0x145994 #define GEN6_RP_STATE_CAP 0x145998 @@ -1704,6 +1719,10 @@ /* Video Data Island Packet control */ #define VIDEO_DIP_DATA 0x61178 +/* Read the description of VIDEO_DIP_DATA (before Haswel) or VIDEO_DIP_ECC + * (Haswell and newer) to see which VIDEO_DIP_DATA byte corresponds to each byte + * of the infoframe structure specified by CEA-861. */ +#define VIDEO_DIP_DATA_SIZE 32 #define VIDEO_DIP_CTL 0x61170 /* Pre HSW: */ #define VIDEO_DIP_ENABLE (1 << 31) @@ -3179,6 +3198,8 @@ #define _PFA_CTL_1 0x68080 #define _PFB_CTL_1 0x68880 #define PF_ENABLE (1<<31) +#define PF_PIPE_SEL_MASK_IVB (3<<29) +#define PF_PIPE_SEL_IVB(pipe) ((pipe)<<29) #define PF_FILTER_MASK (3<<23) #define PF_FILTER_PROGRAMMED (0<<23) #define PF_FILTER_MED_3x3 (1<<23) @@ -3992,6 +4013,7 @@ #define FORCEWAKE 0xA18C #define FORCEWAKE_VLV 0x1300b0 #define FORCEWAKE_ACK_VLV 0x1300b4 +#define FORCEWAKE_ACK_HSW 0x130044 #define FORCEWAKE_ACK 0x130090 #define FORCEWAKE_MT 0xa188 /* multi-threaded */ #define FORCEWAKE_MT_ACK 0x130040 @@ -4034,7 +4056,9 @@ #define GEN6_RP_INTERRUPT_LIMITS 0xA014 #define GEN6_RPSTAT1 0xA01C #define GEN6_CAGF_SHIFT 8 +#define HSW_CAGF_SHIFT 7 #define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT) +#define HSW_CAGF_MASK (0x7f << HSW_CAGF_SHIFT) #define GEN6_RP_CONTROL 0xA024 #define GEN6_RP_MEDIA_TURBO (1<<11) #define GEN6_RP_MEDIA_MODE_MASK (3<<9) @@ -4047,6 +4071,7 @@ #define GEN6_RP_UP_IDLE_MIN (0x1<<3) #define GEN6_RP_UP_BUSY_AVG (0x2<<3) #define GEN6_RP_UP_BUSY_CONT (0x4<<3) +#define GEN7_RP_DOWN_IDLE_AVG (0x2<<0) #define GEN6_RP_DOWN_IDLE_CONT (0x1<<0) #define GEN6_RP_UP_THRESHOLD 0xA02C #define GEN6_RP_DOWN_THRESHOLD 0xA030 @@ -4111,6 +4136,26 @@ #define GEN6_RC6 3 #define GEN6_RC7 4 +#define GEN7_MISCCPCTL (0x9424) +#define GEN7_DOP_CLOCK_GATE_ENABLE (1<<0) + +/* IVYBRIDGE DPF */ +#define GEN7_L3CDERRST1 0xB008 /* L3CD Error Status 1 */ +#define GEN7_L3CDERRST1_ROW_MASK (0x7ff<<14) +#define GEN7_PARITY_ERROR_VALID (1<<13) +#define GEN7_L3CDERRST1_BANK_MASK (3<<11) +#define GEN7_L3CDERRST1_SUBBANK_MASK (7<<8) +#define GEN7_PARITY_ERROR_ROW(reg) \ + ((reg & GEN7_L3CDERRST1_ROW_MASK) >> 14) +#define GEN7_PARITY_ERROR_BANK(reg) \ + ((reg & GEN7_L3CDERRST1_BANK_MASK) >> 11) +#define GEN7_PARITY_ERROR_SUBBANK(reg) \ + ((reg & GEN7_L3CDERRST1_SUBBANK_MASK) >> 8) +#define GEN7_L3CDERRST1_ENABLE (1<<7) + +#define GEN7_L3LOG_BASE 0xB070 +#define GEN7_L3LOG_SIZE 0x80 + #define G4X_AUD_VID_DID 0x62020 #define INTEL_AUDIO_DEVCL 0x808629FB #define INTEL_AUDIO_DEVBLC 0x80862801 @@ -4177,7 +4222,7 @@ PIPE_DDI_FUNC_CTL_B) #define PIPE_DDI_FUNC_ENABLE (1<<31) /* Those bits are ignored by pipe EDP since it can only connect to DDI A */ -#define PIPE_DDI_PORT_MASK (0xf<<28) +#define PIPE_DDI_PORT_MASK (7<<28) #define PIPE_DDI_SELECT_PORT(x) ((x)<<28) #define PIPE_DDI_MODE_SELECT_HDMI (0<<24) #define PIPE_DDI_MODE_SELECT_DVI (1<<24) @@ -4347,4 +4392,9 @@ #define SFUSE_STRAP_DDIC_DETECTED (1<<1) #define SFUSE_STRAP_DDID_DETECTED (1<<0) +#define WM_DBG 0x45280 +#define WM_DBG_DISALLOW_MULTIPLE_LP (1<<0) +#define WM_DBG_DISALLOW_MAXFIFO (1<<1) +#define WM_DBG_DISALLOW_SPRITE (1<<2) + #endif /* _I915_REG_H_ */ --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_stolen.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -43,56 +43,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) @@ -117,7 +111,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; @@ -130,7 +124,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; } @@ -149,7 +143,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: @@ -181,6 +175,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-3.5.0.orig/drivers/gpu/drm/i915/intel_bios.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_bios.c @@ -500,12 +500,8 @@ edp = find_section(bdb, BDB_EDP); if (!edp) { - if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) { - DRM_DEBUG_KMS("No eDP BDB found but eDP panel " - "supported, assume %dbpp panel color " - "depth.\n", - dev_priv->edp.bpp); - } + if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) + DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n"); return; } @@ -658,9 +654,6 @@ dev_priv->lvds_use_ssc = 1; dev_priv->lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1); DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->lvds_ssc_freq); - - /* eDP data */ - dev_priv->edp.bpp = 18; } static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id) --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_overlay.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_overlay.c @@ -431,9 +431,17 @@ intel_ring_emit(ring, flip_addr); intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); /* turn overlay off */ - intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); - intel_ring_emit(ring, flip_addr); - intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + if (IS_I830(dev)) { + /* Workaround: Don't disable the overlay fully, since otherwise + * it dies on the next OVERLAY_ON cmd. */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + } else { + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + } intel_ring_advance(ring); return intel_overlay_do_wait_request(overlay, request, --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_sdvo_regs.h +++ linux-3.5.0/drivers/gpu/drm/i915/intel_sdvo_regs.h @@ -708,6 +708,8 @@ #define SDVO_CMD_SET_AUDIO_STAT 0x91 #define SDVO_CMD_GET_AUDIO_STAT 0x92 #define SDVO_CMD_SET_HBUF_INDEX 0x93 + #define SDVO_HBUF_INDEX_ELD 0 + #define SDVO_HBUF_INDEX_AVI_IF 1 #define SDVO_CMD_GET_HBUF_INDEX 0x94 #define SDVO_CMD_GET_HBUF_INFO 0x95 #define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96 --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -269,6 +269,7 @@ static inline int use_cpu_reloc(struct drm_i915_gem_object *obj) { return (obj->base.write_domain == I915_GEM_DOMAIN_CPU || + !obj->map_and_fenceable || obj->cache_level != I915_CACHE_NONE); } @@ -748,6 +749,8 @@ total = 0; for (i = 0; i < count; i++) { struct drm_i915_gem_relocation_entry __user *user_relocs; + u64 invalid_offset = (u64)-1; + int j; user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr; @@ -758,6 +761,25 @@ goto err; } + /* As we do not update the known relocation offsets after + * relocating (due to the complexities in lock handling), + * we need to mark them as invalid now so that we force the + * relocation processing next time. Just in case the target + * object is evicted and then rebound into its old + * presumed_offset before the next execbuffer - if that + * happened we would make the mistake of assuming that the + * relocations were valid. + */ + for (j = 0; j < exec[i].relocation_count; j++) { + if (copy_to_user(&user_relocs[j].presumed_offset, + &invalid_offset, + sizeof(invalid_offset))) { + ret = -EFAULT; + mutex_lock(&dev->struct_mutex); + goto err; + } + } + reloc_offset[i] = total; total += exec[i].relocation_count; } @@ -919,15 +941,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-3.5.0.orig/drivers/gpu/drm/i915/intel_pm.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_pm.c @@ -2320,21 +2320,28 @@ int intel_enable_rc6(const struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; + /* * Respect the kernel parameter if it is set */ if (i915_enable_rc6 >= 0) return i915_enable_rc6; + if (dev_priv->quirks & QUIRK_RC6_DISABLE) + return 0; + /* * Disable RC6 on Ironlake */ if (INTEL_INFO(dev)->gen == 5) return 0; - /* Sorry Haswell, no RC6 for you for now. */ + /* On Haswell, only RC6 is available. So let's enable it by default to + * provide better testing and coverage since the beginning. + */ if (IS_HASWELL(dev)) - return 0; + return INTEL_RC6_ENABLE; /* * Disable rc6 on Sandybridge @@ -2397,23 +2404,27 @@ 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 */ rc6_mode = intel_enable_rc6(dev_priv->dev); if (rc6_mode & INTEL_RC6_ENABLE) rc6_mask |= GEN6_RC_CTL_RC6_ENABLE; - if (rc6_mode & INTEL_RC6p_ENABLE) - rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; + /* We don't use those on Haswell */ + if (!IS_HASWELL(dev_priv->dev)) { + if (rc6_mode & INTEL_RC6p_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; - if (rc6_mode & INTEL_RC6pp_ENABLE) - rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + if (rc6_mode & INTEL_RC6pp_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + } DRM_INFO("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n", - (rc6_mode & INTEL_RC6_ENABLE) ? "on" : "off", - (rc6_mode & INTEL_RC6p_ENABLE) ? "on" : "off", - (rc6_mode & INTEL_RC6pp_ENABLE) ? "on" : "off"); + (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off"); I915_WRITE(GEN6_RC_CONTROL, rc6_mask | @@ -2431,10 +2442,19 @@ I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, dev_priv->max_delay << 24 | dev_priv->min_delay << 16); - I915_WRITE(GEN6_RP_UP_THRESHOLD, 10000); - I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 1000000); - I915_WRITE(GEN6_RP_UP_EI, 100000); - I915_WRITE(GEN6_RP_DOWN_EI, 5000000); + + if (IS_HASWELL(dev_priv->dev)) { + I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000); + I915_WRITE(GEN6_RP_UP_EI, 66000); + I915_WRITE(GEN6_RP_DOWN_EI, 350000); + } else { + I915_WRITE(GEN6_RP_UP_THRESHOLD, 10000); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 1000000); + I915_WRITE(GEN6_RP_UP_EI, 100000); + I915_WRITE(GEN6_RP_DOWN_EI, 5000000); + } + I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); I915_WRITE(GEN6_RP_CONTROL, GEN6_RP_MEDIA_TURBO | @@ -2442,7 +2462,7 @@ GEN6_RP_MEDIA_IS_GFX | GEN6_RP_ENABLE | GEN6_RP_UP_BUSY_AVG | - GEN6_RP_DOWN_IDLE_CONT); + (IS_HASWELL(dev_priv->dev) ? GEN7_RP_DOWN_IDLE_AVG : GEN6_RP_DOWN_IDLE_CONT)); if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, 500)) @@ -3307,6 +3327,10 @@ I915_READ(ILK_DISPLAY_CHICKEN2) | ILK_ELPIN_409_SELECT); + /* WaDisableHiZPlanesWhenMSAAEnabled */ + I915_WRITE(_3D_CHICKEN, + _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); + I915_WRITE(WM3_LP_ILK, 0); I915_WRITE(WM2_LP_ILK, 0); I915_WRITE(WM1_LP_ILK, 0); @@ -3334,8 +3358,8 @@ GEN6_RCCUNIT_CLOCK_GATE_DISABLE); /* Bspec says we need to always set all mask bits. */ - I915_WRITE(_3D_CHICKEN, (0xFFFF << 16) | - _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL); + I915_WRITE(_3D_CHICKEN3, (0xFFFF << 16) | + _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL); /* * According to the spec the following bits should be @@ -3363,6 +3387,11 @@ DISPPLANE_TRICKLE_FEED_DISABLE); intel_flush_display_plane(dev_priv, pipe); } + + /* The default value should be 0x200 according to docs, but the two + * platforms I checked have a 0 for this. (Maybe BIOS overrides?) */ + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_ENABLE(GEN6_GT_MODE_HI)); } static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) @@ -3377,6 +3406,68 @@ I915_WRITE(GEN7_FF_THREAD_MODE, reg); } +static void haswell_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE; + + I915_WRITE(PCH_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE); + + I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE); + + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* XXX: This is a workaround for early silicon revisions and should be + * removed later. + */ + I915_WRITE(WM_DBG, + I915_READ(WM_DBG) | + WM_DBG_DISALLOW_MULTIPLE_LP | + WM_DBG_DISALLOW_SPRITE | + WM_DBG_DISALLOW_MAXFIFO); + +} + static void ivybridge_init_clock_gating(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -3528,6 +3619,9 @@ if (IS_PINEVIEW(dev)) I915_WRITE(ECOSKPD, _MASKED_BIT_ENABLE(ECO_GATING_CX_ONLY)); + + /* IIR "flip pending" means done if this bit is set */ + I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); } static void i85x_init_clock_gating(struct drm_device *dev) @@ -3756,7 +3850,7 @@ "Disable CxSR\n"); dev_priv->display.update_wm = NULL; } - dev_priv->display.init_clock_gating = ivybridge_init_clock_gating; + dev_priv->display.init_clock_gating = haswell_init_clock_gating; dev_priv->display.sanitize_pm = gen6_sanitize_pm; } else dev_priv->display.update_wm = NULL; --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -219,30 +219,44 @@ int ret; /* Force SNB workarounds for PIPE_CONTROL flushes */ - intel_emit_post_sync_nonzero_flush(ring); + ret = intel_emit_post_sync_nonzero_flush(ring); + if (ret) + return ret; /* Just flush everything. Experiments have shown that reducing the * number of bits based on the write domains has little performance * impact. */ - flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; - flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; - flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; - flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; - flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; - flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; - flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + if (flush_domains) { + flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; + flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + /* + * Ensure that any following seqno writes only happen + * when the render cache is indeed flushed. + */ + flags |= PIPE_CONTROL_CS_STALL; + } + if (invalidate_domains) { + flags |= PIPE_CONTROL_TLB_INVALIDATE; + flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + /* + * TLB invalidate requires a post-sync write. + */ + flags |= PIPE_CONTROL_QW_WRITE | PIPE_CONTROL_CS_STALL; + } - ret = intel_ring_begin(ring, 6); + ret = intel_ring_begin(ring, 4); if (ret) return ret; - intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(5)); + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); intel_ring_emit(ring, flags); intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); - intel_ring_emit(ring, 0); /* lower dword */ - intel_ring_emit(ring, 0); /* uppwer dword */ - intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, 0); intel_ring_advance(ring); return 0; @@ -411,13 +425,20 @@ struct drm_i915_private *dev_priv = dev->dev_private; int ret = init_ring_common(ring); - if (INTEL_INFO(dev)->gen > 3) { + if (INTEL_INFO(dev)->gen > 3) I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH)); - if (IS_GEN7(dev)) - I915_WRITE(GFX_MODE_GEN7, - _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | - _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); - } + + /* We need to disable the AsyncFlip performance optimisations in order + * to use MI_WAIT_FOR_EVENT within the CS. It should already be + * programmed to '1' on all products. + */ + if (INTEL_INFO(dev)->gen >= 6) + I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(ASYNC_FLIP_PERF_DISABLE)); + + if (IS_GEN7(dev)) + I915_WRITE(GFX_MODE_GEN7, + _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | + _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); if (INTEL_INFO(dev)->gen >= 5) { ret = init_pipe_control(ring); @@ -438,6 +459,9 @@ if (INTEL_INFO(dev)->gen >= 6) I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); + if (IS_IVYBRIDGE(dev)) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + return ret; } @@ -825,7 +849,11 @@ spin_lock_irqsave(&dev_priv->irq_lock, flags); if (ring->irq_refcount++ == 0) { - I915_WRITE_IMR(ring, ~ring->irq_enable_mask); + if (IS_IVYBRIDGE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~(ring->irq_enable_mask | + GEN6_RENDER_L3_PARITY_ERROR)); + else + I915_WRITE_IMR(ring, ~ring->irq_enable_mask); dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; I915_WRITE(GTIMR, dev_priv->gt_irq_mask); POSTING_READ(GTIMR); @@ -844,7 +872,10 @@ spin_lock_irqsave(&dev_priv->irq_lock, flags); if (--ring->irq_refcount == 0) { - I915_WRITE_IMR(ring, ~0); + if (IS_IVYBRIDGE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + else + I915_WRITE_IMR(ring, ~0); dev_priv->gt_irq_mask |= ring->irq_enable_mask; I915_WRITE(GTIMR, dev_priv->gt_irq_mask); POSTING_READ(GTIMR); @@ -969,6 +1000,7 @@ struct intel_ring_buffer *ring) { struct drm_i915_gem_object *obj; + struct drm_i915_private *dev_priv = dev->dev_private; int ret; ring->dev = dev; @@ -1002,8 +1034,9 @@ if (ret) goto err_unpin; - ring->virtual_start = ioremap_wc(dev->agp->base + obj->gtt_offset, - ring->size); + ring->virtual_start = + ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset, + ring->size); if (ring->virtual_start == NULL) { DRM_ERROR("Failed to map ringbuffer.\n"); ret = -EINVAL; @@ -1277,10 +1310,17 @@ return ret; cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.5 - video engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ if (invalidate & I915_GEM_GPU_DOMAINS) - cmd |= MI_INVALIDATE_TLB | MI_INVALIDATE_BSD; + cmd |= MI_INVALIDATE_TLB | MI_INVALIDATE_BSD | + MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW; intel_ring_emit(ring, cmd); - intel_ring_emit(ring, 0); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); intel_ring_emit(ring, 0); intel_ring_emit(ring, MI_NOOP); intel_ring_advance(ring); @@ -1318,10 +1358,17 @@ return ret; cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.3 - blitter engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ if (invalidate & I915_GEM_DOMAIN_RENDER) - cmd |= MI_INVALIDATE_TLB; + cmd |= MI_INVALIDATE_TLB | MI_FLUSH_DW_STORE_INDEX | + MI_FLUSH_DW_OP_STOREDW | MI_FLUSH_DW_OP_STOREDW; intel_ring_emit(ring, cmd); - intel_ring_emit(ring, 0); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); intel_ring_emit(ring, 0); intel_ring_emit(ring, MI_NOOP); intel_ring_advance(ring); --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-3.5.0/drivers/gpu/drm/i915/i915_drv.h @@ -329,6 +329,7 @@ #define QUIRK_PIPEA_FORCE (1<<0) #define QUIRK_LVDS_SSC_DISABLE (1<<1) #define QUIRK_INVERT_BRIGHTNESS (1<<2) +#define QUIRK_RC6_DISABLE (1<<3) struct intel_fbdev; struct intel_fbc_work; @@ -650,13 +651,17 @@ 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; int gtt_mtrr; /** PPGTT used for aliasing the PPGTT with the GTT */ struct i915_hw_ppgtt *aliasing_ppgtt; + u32 *l3_remap_info; + struct shrinker inactive_shrinker; /** @@ -817,6 +822,8 @@ struct drm_property *broadcast_rgb_property; struct drm_property *force_audio_property; + + struct work_struct parity_error_work; } drm_i915_private_t; /* Iterate over initialised rings */ @@ -1315,6 +1322,7 @@ int __must_check i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj); int __must_check i915_gem_init(struct drm_device *dev); int __must_check i915_gem_init_hw(struct drm_device *dev); +void i915_gem_l3_remap(struct drm_device *dev); void i915_gem_init_swizzling(struct drm_device *dev); void i915_gem_init_ppgtt(struct drm_device *dev); void i915_gem_cleanup_ringbuffer(struct drm_device *dev); @@ -1467,6 +1475,7 @@ /* modesetting */ extern void intel_modeset_init_hw(struct drm_device *dev); +extern void i915_redisable_vga(struct drm_device *dev); extern void intel_modeset_init(struct drm_device *dev); extern void intel_modeset_gem_init(struct drm_device *dev); extern void intel_modeset_cleanup(struct drm_device *dev); --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -182,6 +182,7 @@ {0x15ad, 0x0405, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VMWGFX_CHIP_SVGAII}, {0, 0, 0} }; +MODULE_DEVICE_TABLE(pci, vmw_pci_id_list); static int enable_fbdev; @@ -1101,6 +1102,11 @@ struct drm_device *dev = pci_get_drvdata(pdev); struct vmw_private *dev_priv = vmw_priv(dev); + mutex_lock(&dev_priv->hw_mutex); + vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2); + (void) vmw_read(dev_priv, SVGA_REG_ID); + mutex_unlock(&dev_priv->hw_mutex); + /** * Reclaim 3d reference held by fbdev and potentially * start fifo. @@ -1158,6 +1164,11 @@ .open = vmw_driver_open, .preclose = vmw_preclose, .postclose = vmw_postclose, + + .dumb_create = vmw_dumb_create, + .dumb_map_offset = vmw_dumb_map_offset, + .dumb_destroy = vmw_dumb_destroy, + .fops = &vmwgfx_driver_fops, .name = VMWGFX_DRIVER_NAME, .desc = VMWGFX_DRIVER_DESC, --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -645,6 +645,16 @@ int vmw_kms_update_layout_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); +int vmw_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args); + +int vmw_dumb_map_offset(struct drm_file *file_priv, + struct drm_device *dev, uint32_t handle, + uint64_t *offset); +int vmw_dumb_destroy(struct drm_file *file_priv, + struct drm_device *dev, + uint32_t handle); /** * Overlay control - vmwgfx_overlay.c */ --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c @@ -1018,7 +1018,7 @@ } - event = kzalloc(sizeof(event->event), GFP_KERNEL); + event = kzalloc(sizeof(*event), GFP_KERNEL); if (unlikely(event == NULL)) { DRM_ERROR("Failed to allocate an event.\n"); ret = -ENOMEM; --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c @@ -1917,3 +1917,76 @@ vmw_resource_unreference(&res); return ret; } + + +int vmw_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ + struct vmw_private *dev_priv = vmw_priv(dev); + struct vmw_master *vmaster = vmw_master(file_priv->master); + struct vmw_user_dma_buffer *vmw_user_bo; + struct ttm_buffer_object *tmp; + int ret; + + args->pitch = args->width * ((args->bpp + 7) / 8); + args->size = args->pitch * args->height; + + vmw_user_bo = kzalloc(sizeof(*vmw_user_bo), GFP_KERNEL); + if (vmw_user_bo == NULL) + return -ENOMEM; + + ret = ttm_read_lock(&vmaster->lock, true); + if (ret != 0) { + kfree(vmw_user_bo); + return ret; + } + + ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, args->size, + &vmw_vram_sys_placement, true, + &vmw_user_dmabuf_destroy); + if (ret != 0) + goto out_no_dmabuf; + + tmp = ttm_bo_reference(&vmw_user_bo->dma.base); + ret = ttm_base_object_init(vmw_fpriv(file_priv)->tfile, + &vmw_user_bo->base, + false, + ttm_buffer_type, + &vmw_user_dmabuf_release, NULL); + if (unlikely(ret != 0)) + goto out_no_base_object; + + args->handle = vmw_user_bo->base.hash.key; + +out_no_base_object: + ttm_bo_unref(&tmp); +out_no_dmabuf: + ttm_read_unlock(&vmaster->lock); + return ret; +} + +int vmw_dumb_map_offset(struct drm_file *file_priv, + struct drm_device *dev, uint32_t handle, + uint64_t *offset) +{ + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + struct vmw_dma_buffer *out_buf; + int ret; + + ret = vmw_user_dmabuf_lookup(tfile, handle, &out_buf); + if (ret != 0) + return -EINVAL; + + *offset = out_buf->base.addr_space_offset; + vmw_dmabuf_unreference(&out_buf); + return 0; +} + +int vmw_dumb_destroy(struct drm_file *file_priv, + struct drm_device *dev, + uint32_t handle) +{ + return ttm_ref_object_base_unref(vmw_fpriv(file_priv)->tfile, + handle, TTM_REF_USAGE); +} --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -1688,15 +1688,19 @@ struct vmw_private *dev_priv = vmw_priv(crtc->dev); struct drm_framebuffer *old_fb = crtc->fb; struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(fb); - struct drm_file *file_priv = event->base.file_priv; + struct drm_file *file_priv ; struct vmw_fence_obj *fence = NULL; struct drm_clip_rect clips; int ret; + if (event == NULL) + return -EINVAL; + /* require ScreenObject support for page flipping */ if (!dev_priv->sou_priv) return -ENOSYS; + file_priv = event->base.file_priv; if (!vmw_kms_screen_object_flippable(dev_priv, crtc)) return -EINVAL; --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c @@ -306,7 +306,7 @@ BUG_ON(!atomic_read(&bo->reserved)); BUG_ON(old_mem_type != TTM_PL_VRAM && - old_mem_type != VMW_PL_FLAG_GMR); + old_mem_type != VMW_PL_GMR); pl_flags = TTM_PL_FLAG_VRAM | VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED; if (pin) --- linux-3.5.0.orig/drivers/gpu/drm/cirrus/cirrus_drv.h +++ linux-3.5.0/drivers/gpu/drm/cirrus/cirrus_drv.h @@ -155,6 +155,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-3.5.0.orig/drivers/gpu/drm/cirrus/cirrus_ttm.c +++ linux-3.5.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; } --- linux-3.5.0.orig/drivers/gpu/drm/cirrus/cirrus_fbdev.c +++ linux-3.5.0/drivers/gpu/drm/cirrus/cirrus_fbdev.c @@ -27,16 +27,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) { @@ -283,6 +318,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-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c @@ -199,7 +199,12 @@ /* is it from our device? */ if (obj->dev == drm_dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(obj); + dma_buf_put(dma_buf); return obj; } } --- linux-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_connector.c @@ -147,9 +147,7 @@ drm_mode_connector_update_edid_property(connector, edid); count = drm_add_edid_modes(connector, edid); - - kfree(connector->display_info.raw_edid); - connector->display_info.raw_edid = edid; + kfree(edid); } else { struct drm_display_mode *mode = drm_mode_create(connector->dev); struct exynos_drm_panel_info *panel; --- linux-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -104,7 +104,6 @@ u8 *edid, int len) { struct vidi_context *ctx = get_vidi_context(dev); - struct edid *raw_edid; DRM_DEBUG_KMS("%s\n", __FILE__); @@ -117,18 +116,6 @@ return -EFAULT; } - raw_edid = kzalloc(len, GFP_KERNEL); - if (!raw_edid) { - DRM_DEBUG_KMS("failed to allocate raw_edid.\n"); - return -ENOMEM; - } - - memcpy(raw_edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) - * EDID_LENGTH, len)); - - /* attach the edid data to connector. */ - connector->display_info.raw_edid = (char *)raw_edid; - memcpy(edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) * EDID_LENGTH, len)); --- linux-3.5.0.orig/drivers/gpu/drm/ast/ast_drv.h +++ linux-3.5.0/drivers/gpu/drm/ast/ast_drv.h @@ -240,6 +240,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-3.5.0.orig/drivers/gpu/drm/ast/ast_fb.c +++ linux-3.5.0/drivers/gpu/drm/ast/ast_fb.c @@ -53,16 +53,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) { @@ -72,10 +108,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) @@ -306,6 +342,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-3.5.0.orig/drivers/gpu/drm/ast/ast_ttm.c +++ linux-3.5.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; } --- linux-3.5.0.orig/drivers/gpu/drm/savage/savage_bci.c +++ linux-3.5.0/drivers/gpu/drm/savage/savage_bci.c @@ -547,6 +547,8 @@ dev_priv->chipset = (enum savage_family)chipset; + pci_set_master(dev->pdev); + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ linux-3.5.0/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -749,7 +749,10 @@ /* clear the pages coming from the pool if requested */ if (flags & TTM_PAGE_FLAG_ZERO_ALLOC) { list_for_each_entry(p, &plist, lru) { - clear_page(page_address(p)); + if (PageHighMem(p)) + clear_highpage(p); + else + clear_page(page_address(p)); } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_ttm.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_ttm.c @@ -753,7 +753,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_atombios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_atombios.c @@ -452,7 +452,7 @@ } /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ - if ((dev->pdev->device == 0x9802) && + if (((dev->pdev->device == 0x9802) || (dev->pdev->device == 0x9806)) && (dev->pdev->subsystem_vendor == 0x1734) && (dev->pdev->subsystem_device == 0x11bd)) { if (*connector_type == DRM_MODE_CONNECTOR_VGA) { @@ -1254,6 +1254,10 @@ if (rdev->clock.max_pixel_clock == 0) rdev->clock.max_pixel_clock = 40000; + /* not technically a clock, but... */ + rdev->mode_info.firmware_flags = + le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); + return true; } @@ -1998,6 +2002,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; @@ -2396,6 +2402,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) @@ -2478,6 +2486,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)) @@ -2494,15 +2503,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) * @@ -2514,9 +2525,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, @@ -2538,6 +2546,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++) { @@ -2584,7 +2593,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-3.5.0.orig/drivers/gpu/drm/radeon/rs690.c +++ linux-3.5.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 */ @@ -756,9 +762,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-3.5.0.orig/drivers/gpu/drm/radeon/evergreend.h +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreend.h @@ -45,6 +45,8 @@ #define TURKS_GB_ADDR_CONFIG_GOLDEN 0x02010002 #define CEDAR_GB_ADDR_CONFIG_GOLDEN 0x02010001 #define CAICOS_GB_ADDR_CONFIG_GOLDEN 0x02010001 +#define SUMO_GB_ADDR_CONFIG_GOLDEN 0x02010002 +#define SUMO2_GB_ADDR_CONFIG_GOLDEN 0x02010002 /* Registers */ @@ -87,6 +89,14 @@ #define CONFIG_MEMSIZE 0x5428 +#define BIF_FB_EN 0x5490 +#define FB_READ_EN (1 << 0) +#define FB_WRITE_EN (1 << 1) + +#define CP_STRMOUT_CNTL 0x84FC + +#define CP_COHER_CNTL 0x85F0 +#define CP_COHER_SIZE 0x85F4 #define CP_COHER_BASE 0x85F8 #define CP_ME_CNTL 0x86D8 #define CP_ME_HALT (1 << 28) @@ -426,6 +436,9 @@ #define NOOFCHAN_MASK 0x00003000 #define MC_SHARED_CHREMAP 0x2008 +#define MC_SHARED_BLACKOUT_CNTL 0x20ac +#define BLACKOUT_MODE_MASK 0x00000007 + #define MC_ARB_RAMCFG 0x2760 #define NOOFBANK_SHIFT 0 #define NOOFBANK_MASK 0x00000003 @@ -636,6 +649,7 @@ #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) #define VM_CONTEXT1_CNTL 0x1414 +#define VM_CONTEXT1_CNTL2 0x1434 #define VM_CONTEXT0_PAGE_TABLE_BASE_ADDR 0x153C #define VM_CONTEXT0_PAGE_TABLE_END_ADDR 0x157C #define VM_CONTEXT0_PAGE_TABLE_START_ADDR 0x155C @@ -657,6 +671,8 @@ #define CACHE_UPDATE_MODE(x) ((x) << 6) #define VM_L2_STATUS 0x140C #define L2_BUSY (1 << 0) +#define VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x14FC +#define VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x14DC #define WAIT_UNTIL 0x8040 @@ -1273,6 +1289,8 @@ #define S_028044_FORMAT(x) (((x) & 0x1) << 0) #define G_028044_FORMAT(x) (((x) >> 0) & 0x1) #define C_028044_FORMAT 0xFFFFFFFE +#define V_028044_STENCIL_INVALID 0 +#define V_028044_STENCIL_8 1 #define G_028044_TILE_SPLIT(x) (((x) >> 8) & 0x7) #define DB_Z_READ_BASE 0x28048 #define DB_STENCIL_READ_BASE 0x2804c --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_crtc.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_crtc.c @@ -258,9 +258,6 @@ radeon_crtc->enabled = true; /* adjust pm to dpms changes BEFORE enabling crtcs */ radeon_pm_compute_clocks(rdev); - /* disable crtc pair power gating before programming */ - if (ASIC_IS_DCE6(rdev)) - atombios_powergate_crtc(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_ENABLE); if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev)) atombios_enable_crtc_memreq(crtc, ATOM_ENABLE); @@ -278,25 +275,6 @@ atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_DISABLE); radeon_crtc->enabled = false; - /* power gating is per-pair */ - if (ASIC_IS_DCE6(rdev)) { - struct drm_crtc *other_crtc; - struct radeon_crtc *other_radeon_crtc; - list_for_each_entry(other_crtc, &rdev->ddev->mode_config.crtc_list, head) { - other_radeon_crtc = to_radeon_crtc(other_crtc); - if (((radeon_crtc->crtc_id == 0) && (other_radeon_crtc->crtc_id == 1)) || - ((radeon_crtc->crtc_id == 1) && (other_radeon_crtc->crtc_id == 0)) || - ((radeon_crtc->crtc_id == 2) && (other_radeon_crtc->crtc_id == 3)) || - ((radeon_crtc->crtc_id == 3) && (other_radeon_crtc->crtc_id == 2)) || - ((radeon_crtc->crtc_id == 4) && (other_radeon_crtc->crtc_id == 5)) || - ((radeon_crtc->crtc_id == 5) && (other_radeon_crtc->crtc_id == 4))) { - /* if both crtcs in the pair are off, enable power gating */ - if (other_radeon_crtc->enabled == false) - atombios_powergate_crtc(crtc, ATOM_ENABLE); - break; - } - } - } /* adjust pm to dpms changes AFTER disabling crtcs */ radeon_pm_compute_clocks(rdev); break; @@ -444,11 +422,28 @@ static void atombios_crtc_program_ss(struct radeon_device *rdev, int enable, int pll_id, + int crtc_id, struct radeon_atom_ss *ss) { + unsigned i; int index = GetIndexIntoMasterTable(COMMAND, EnableSpreadSpectrumOnPPLL); union atom_enable_ss args; + if (!enable) { + for (i = 0; i < rdev->num_crtc; i++) { + if (rdev->mode_info.crtcs[i] && + rdev->mode_info.crtcs[i]->enabled && + i != crtc_id && + pll_id == rdev->mode_info.crtcs[i]->pll_id) { + /* one other crtc is using this pll don't turn + * off spread spectrum as it might turn off + * display on active crtc + */ + return; + } + } + } + memset(&args, 0, sizeof(args)); if (ASIC_IS_DCE5(rdev)) { @@ -578,6 +573,11 @@ /* use frac fb div on APUs */ if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV; + /* use frac fb div on RS780/RS880 */ + if ((rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS880)) + pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV; + if (ASIC_IS_DCE32(rdev) && mode->clock > 165000) + pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV; } else { pll->flags |= RADEON_PLL_LEGACY; @@ -1036,7 +1036,7 @@ radeon_compute_pll_legacy(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, &ref_div, &post_div); - atombios_crtc_program_ss(rdev, ATOM_DISABLE, radeon_crtc->pll_id, &ss); + atombios_crtc_program_ss(rdev, ATOM_DISABLE, radeon_crtc->pll_id, radeon_crtc->crtc_id, &ss); atombios_crtc_program_pll(crtc, radeon_crtc->crtc_id, radeon_crtc->pll_id, encoder_mode, radeon_encoder->encoder_id, mode->clock, @@ -1059,7 +1059,7 @@ ss.step = step_size; } - atombios_crtc_program_ss(rdev, ATOM_ENABLE, radeon_crtc->pll_id, &ss); + atombios_crtc_program_ss(rdev, ATOM_ENABLE, radeon_crtc->pll_id, radeon_crtc->crtc_id, &ss); } } @@ -1576,11 +1576,11 @@ ASIC_INTERNAL_SS_ON_DCPLL, rdev->clock.default_dispclk); if (ss_enabled) - atombios_crtc_program_ss(rdev, ATOM_DISABLE, ATOM_DCPLL, &ss); + atombios_crtc_program_ss(rdev, ATOM_DISABLE, ATOM_DCPLL, -1, &ss); /* XXX: DCE5, make sure voltage, dispclk is high enough */ atombios_crtc_set_disp_eng_pll(rdev, rdev->clock.default_dispclk); if (ss_enabled) - atombios_crtc_program_ss(rdev, ATOM_ENABLE, ATOM_DCPLL, &ss); + atombios_crtc_program_ss(rdev, ATOM_ENABLE, ATOM_DCPLL, -1, &ss); } } @@ -1639,18 +1639,28 @@ static void atombios_crtc_prepare(struct drm_crtc *crtc) { struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); + struct drm_device *dev = crtc->dev; + struct radeon_device *rdev = dev->dev_private; + radeon_crtc->in_mode_set = true; /* pick pll */ radeon_crtc->pll_id = radeon_atom_pick_pll(crtc); + /* disable crtc pair power gating before programming */ + if (ASIC_IS_DCE6(rdev)) + atombios_powergate_crtc(crtc, ATOM_DISABLE); + atombios_lock_crtc(crtc, ATOM_ENABLE); atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); } static void atombios_crtc_commit(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); + atombios_crtc_dpms(crtc, DRM_MODE_DPMS_ON); atombios_lock_crtc(crtc, ATOM_DISABLE); + radeon_crtc->in_mode_set = false; } static void atombios_crtc_disable(struct drm_crtc *crtc) @@ -1659,8 +1669,23 @@ struct drm_device *dev = crtc->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_atom_ss ss; + int i; atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); + if (ASIC_IS_DCE6(rdev)) + atombios_powergate_crtc(crtc, ATOM_ENABLE); + + for (i = 0; i < rdev->num_crtc; i++) { + if (rdev->mode_info.crtcs[i] && + rdev->mode_info.crtcs[i]->enabled && + i != radeon_crtc->crtc_id && + radeon_crtc->pll_id == rdev->mode_info.crtcs[i]->pll_id) { + /* one other crtc is using this pll don't turn + * off the pll + */ + goto done; + } + } switch (radeon_crtc->pll_id) { case ATOM_PPLL1: @@ -1678,6 +1703,7 @@ default: break; } +done: radeon_crtc->pll_id = -1; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/rv515.c +++ linux-3.5.0/drivers/gpu/drm/radeon/rv515.c @@ -281,12 +281,8 @@ void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save) { - save->d1vga_control = RREG32(R_000330_D1VGA_CONTROL); - save->d2vga_control = RREG32(R_000338_D2VGA_CONTROL); save->vga_render_control = RREG32(R_000300_VGA_RENDER_CONTROL); save->vga_hdp_control = RREG32(R_000328_VGA_HDP_CONTROL); - save->d1crtc_control = RREG32(R_006080_D1CRTC_CONTROL); - save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL); /* Stop all video */ WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); @@ -311,15 +307,6 @@ /* Unlock host access */ WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control); mdelay(1); - /* Restore video state */ - WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control); - WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control); - WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1); - WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1); - WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control); - WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control); - WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0); - WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control); } @@ -399,6 +386,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 */ @@ -531,9 +524,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_encoders.c @@ -29,6 +29,14 @@ #include "radeon.h" #include "atom.h" +extern void +radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector); +extern void +radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector); + + static uint32_t radeon_encoder_clones(struct drm_encoder *encoder) { struct drm_device *dev = encoder->dev; @@ -153,6 +161,7 @@ void radeon_link_encoder_connector(struct drm_device *dev) { + struct radeon_device *rdev = dev->dev_private; struct drm_connector *connector; struct radeon_connector *radeon_connector; struct drm_encoder *encoder; @@ -163,8 +172,15 @@ radeon_connector = to_radeon_connector(connector); list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { radeon_encoder = to_radeon_encoder(encoder); - if (radeon_encoder->devices & radeon_connector->devices) + if (radeon_encoder->devices & radeon_connector->devices) { drm_mode_connector_attach_encoder(connector, encoder); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + if (rdev->is_atom_bios) + radeon_atom_backlight_init(radeon_encoder, connector); + else + radeon_legacy_backlight_init(radeon_encoder, connector); + } + } } } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/nid.h +++ linux-3.5.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) @@ -80,7 +84,18 @@ #define VM_CONTEXT0_CNTL 0x1410 #define ENABLE_CONTEXT (1 << 0) #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) +#define RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 3) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 6) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 7) +#define PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 9) +#define PDE0_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 10) +#define VALID_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 12) +#define VALID_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 13) +#define READ_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 15) +#define READ_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 16) +#define WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 18) +#define WRITE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 19) #define VM_CONTEXT1_CNTL 0x1414 #define VM_CONTEXT0_CNTL2 0x1430 #define VM_CONTEXT1_CNTL2 0x1434 --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_mode.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_mode.h @@ -210,7 +210,8 @@ CT_RN50_POWER, CT_MAC_X800, CT_MAC_G5_9600, - CT_SAM440EP + CT_SAM440EP, + CT_MAC_G4_SILVER }; enum radeon_dvo_chip { @@ -252,8 +253,21 @@ /* pointer to fbdev info structure */ struct radeon_fbdev *rfbdev; + /* firmware flags */ + u16 firmware_flags; }; +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) + +#define RADEON_MAX_BL_LEVEL 0xFF + +struct radeon_backlight_privdata { + struct radeon_encoder *encoder; + uint8_t negative; +}; + +#endif + #define MAX_H_CODE_TIMING_LEN 32 #define MAX_V_CODE_TIMING_LEN 32 @@ -275,6 +289,7 @@ u16 lut_r[256], lut_g[256], lut_b[256]; bool enabled; bool can_tile; + bool in_mode_set; uint32_t crtc_offset; struct drm_gem_object *cursor_bo; uint64_t cursor_addr; @@ -533,7 +548,7 @@ u8 val); extern void radeon_router_select_ddc_port(struct radeon_connector *radeon_connector); extern void radeon_router_select_cd_port(struct radeon_connector *radeon_connector); -extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector); +extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux); extern int radeon_ddc_get_modes(struct radeon_connector *radeon_connector); extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector); @@ -684,6 +699,8 @@ struct drm_display_mode *adjusted_mode); void atom_rv515_force_tv_scaler(struct radeon_device *rdev, struct radeon_crtc *radeon_crtc); +void atombios_set_panel_brightness(struct radeon_encoder *radeon_encoder); + /* legacy tv */ void radeon_legacy_tv_adjust_crtc_reg(struct drm_encoder *encoder, uint32_t *h_total_disp, uint32_t *h_sync_strt_wid, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atom.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atom.c @@ -1389,10 +1389,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_asic.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_asic.h @@ -256,13 +256,10 @@ * rv515 */ struct rv515_mc_save { - u32 d1vga_control; - u32 d2vga_control; u32 vga_render_control; u32 vga_hdp_control; - u32 d1crtc_control; - u32 d2crtc_control; }; + int rv515_init(struct radeon_device *rdev); void rv515_fini(struct radeon_device *rdev); uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg); @@ -389,11 +386,11 @@ * evergreen */ struct evergreen_mc_save { - u32 vga_control[6]; u32 vga_render_control; u32 vga_hdp_control; - u32 crtc_control[6]; + bool crtc_enabled[RADEON_MAX_CRTCS]; }; + void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev); int evergreen_init(struct radeon_device *rdev); void evergreen_fini(struct radeon_device *rdev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_device.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_device.c @@ -359,22 +359,22 @@ { uint32_t reg; - if (efi_enabled && rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) + if (efi_enabled(EFI_BOOT) && + rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) return false; /* first check CRTCs */ - 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)) { @@ -774,7 +774,7 @@ if (rdev->flags & RADEON_IS_AGP) rdev->need_dma32 = true; if ((rdev->flags & RADEON_IS_PCI) && - (rdev->family < CHIP_RS400)) + (rdev->family <= CHIP_RS740)) rdev->need_dma32 = true; dma_bits = rdev->need_dma32 ? 32 : 40; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/rv770.c +++ linux-3.5.0/drivers/gpu/drm/radeon/rv770.c @@ -931,6 +931,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); @@ -1062,10 +1068,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_agp.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_agp.c @@ -70,9 +70,12 @@ /* Intel 82830 830 Chipset Host Bridge / Mobility M6 LY Needs AGPMode 2 (fdo #17360)*/ { PCI_VENDOR_ID_INTEL, 0x3575, PCI_VENDOR_ID_ATI, 0x4c59, PCI_VENDOR_ID_DELL, 0x00e3, 2}, - /* Intel 82852/82855 host bridge / Mobility FireGL 9000 R250 Needs AGPMode 1 (lp #296617) */ + /* Intel 82852/82855 host bridge / Mobility FireGL 9000 RV250 Needs AGPMode 1 (lp #296617) */ { PCI_VENDOR_ID_INTEL, 0x3580, PCI_VENDOR_ID_ATI, 0x4c66, PCI_VENDOR_ID_DELL, 0x0149, 1}, + /* Intel 82855PM host bridge / Mobility FireGL 9000 RV250 Needs AGPMode 1 for suspend/resume */ + { PCI_VENDOR_ID_INTEL, 0x3340, PCI_VENDOR_ID_ATI, 0x4c66, + PCI_VENDOR_ID_IBM, 0x0531, 1}, /* Intel 82852/82855 host bridge / Mobility 9600 M10 RV350 Needs AGPMode 1 (deb #467460) */ { PCI_VENDOR_ID_INTEL, 0x3580, PCI_VENDOR_ID_ATI, 0x4e50, 0x1025, 0x0061, 1}, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon.h @@ -143,21 +143,6 @@ /* * BIOS. */ -#define ATRM_BIOS_PAGE 4096 - -#if defined(CONFIG_VGA_SWITCHEROO) -bool radeon_atrm_supported(struct pci_dev *pdev); -int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len); -#else -static inline bool radeon_atrm_supported(struct pci_dev *pdev) -{ - return false; -} - -static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len){ - return -EINVAL; -} -#endif bool radeon_get_bios(struct radeon_device *rdev); @@ -323,6 +308,7 @@ uint64_t soffset; uint64_t eoffset; uint32_t flags; + struct radeon_fence *fence; bool valid; }; @@ -1456,6 +1442,45 @@ u64 gpu_addr; }; +/* + * ACPI + */ +struct radeon_atif_notification_cfg { + bool enabled; + int command_code; +}; + +struct radeon_atif_notifications { + bool display_switch; + bool expansion_mode_change; + bool thermal_state; + bool forced_power_state; + bool system_power_state; + bool display_conf_change; + bool px_gfx_switch; + bool brightness_change; + bool dgpu_display_event; +}; + +struct radeon_atif_functions { + bool system_params; + bool sbios_requests; + bool select_active_disp; + bool lid_state; + bool get_tv_standard; + bool set_tv_standard; + bool get_panel_expansion_mode; + bool set_panel_expansion_mode; + bool temperature_change; + bool graphics_device_types; +}; + +struct radeon_atif { + struct radeon_atif_notifications notifications; + struct radeon_atif_functions functions; + struct radeon_atif_notification_cfg notification_cfg; + struct radeon_encoder *backlight_ctl; +}; /* * Core structure, functions and helpers. @@ -1548,6 +1573,9 @@ unsigned debugfs_count; /* virtual memory */ struct radeon_vm_manager vm_manager; + struct mutex gpu_clock_mutex; + /* ACPI interface */ + struct radeon_atif atif; }; int radeon_device_init(struct radeon_device *rdev, @@ -1862,12 +1890,14 @@ extern int ni_init_microcode(struct radeon_device *rdev); extern int ni_mc_load_microcode(struct radeon_device *rdev); -/* radeon_acpi.c */ -#if defined(CONFIG_ACPI) -extern int radeon_acpi_init(struct radeon_device *rdev); -#else -static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; } -#endif +/* radeon_acpi.c */ +#if defined(CONFIG_ACPI) +extern int radeon_acpi_init(struct radeon_device *rdev); +extern void radeon_acpi_fini(struct radeon_device *rdev); +#else +static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; } +static inline void radeon_acpi_fini(struct radeon_device *rdev) { } +#endif #include "radeon_object.h" --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_i2c.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_i2c.c @@ -39,7 +39,7 @@ * radeon_ddc_probe * */ -bool radeon_ddc_probe(struct radeon_connector *radeon_connector) +bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux) { u8 out = 0x0; u8 buf[8]; @@ -63,7 +63,13 @@ if (radeon_connector->router.ddc_valid) radeon_router_select_ddc_port(radeon_connector); - ret = i2c_transfer(&radeon_connector->ddc_bus->adapter, msgs, 2); + if (use_aux) { + struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; + ret = i2c_transfer(&dig->dp_i2c_bus->adapter, msgs, 2); + } else { + ret = i2c_transfer(&radeon_connector->ddc_bus->adapter, msgs, 2); + } + if (ret != 2) /* Couldn't find an accessible DDC on this connector */ return false; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/rs600.c +++ linux-3.5.0/drivers/gpu/drm/radeon/rs600.c @@ -899,6 +899,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 */ @@ -1026,9 +1032,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -149,6 +149,16 @@ (rdev->pdev->subsystem_device == 0x01fd)) return true; + /* Gateway RS690 only seems to work with MSIs. */ + if ((rdev->pdev->device == 0x791f) && + (rdev->pdev->subsystem_vendor == 0x107b) && + (rdev->pdev->subsystem_device == 0x0185)) + return true; + + /* try and enable MSIs by default on all RS690s */ + if (rdev->family == CHIP_RS690) + return true; + /* RV515 seems to have MSI issues where it loses * MSI rearms occasionally. This leads to lockups and freezes. * disable it by default. --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreen_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen_cs.c @@ -961,13 +961,15 @@ if (track->db_dirty) { /* Check stencil buffer */ - if (G_028800_STENCIL_ENABLE(track->db_depth_control)) { + if (G_028044_FORMAT(track->db_s_info) != V_028044_STENCIL_INVALID && + G_028800_STENCIL_ENABLE(track->db_depth_control)) { r = evergreen_cs_track_validate_stencil(p); if (r) return r; } /* Check depth buffer */ - if (G_028800_Z_ENABLE(track->db_depth_control)) { + if (G_028040_FORMAT(track->db_z_info) != V_028040_Z_INVALID && + G_028800_Z_ENABLE(track->db_depth_control)) { r = evergreen_cs_track_validate_depth(p); if (r) return r; @@ -2670,7 +2672,11 @@ /* check config regs */ switch (reg) { + case WAIT_UNTIL: case GRBM_GFX_INDEX: + case CP_STRMOUT_CNTL: + case CP_COHER_CNTL: + case CP_COHER_SIZE: case VGT_VTX_VECT_EJECT_REG: case VGT_CACHE_INVALIDATION: case VGT_GS_VERTEX_REUSE: @@ -2775,6 +2781,7 @@ case CAYMAN_SQ_EX_ALLOC_TABLE_SLOTS: return true; default: + DRM_ERROR("Invalid register 0x%x in CS\n", reg); return false; } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/ni.c +++ linux-3.5.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; @@ -574,10 +585,18 @@ if (rdev->flags & RADEON_IS_IGP) rdev->config.cayman.tile_config |= 1 << 4; else { - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.cayman.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.cayman.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.cayman.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.cayman.tile_config |= 2 << 4; + break; + } } rdev->config.cayman.tile_config |= ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; @@ -602,13 +621,26 @@ 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); - 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; @@ -772,10 +804,20 @@ /* enable context1-7 */ WREG32(VM_CONTEXT1_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(rdev->dummy_page.addr >> 12)); - WREG32(VM_CONTEXT1_CNTL2, 0); - WREG32(VM_CONTEXT1_CNTL, 0); + WREG32(VM_CONTEXT1_CNTL2, 4); WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | - RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); + RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + RANGE_PROTECTION_FAULT_ENABLE_DEFAULT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT | + PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT | + PDE0_PROTECTION_FAULT_ENABLE_DEFAULT | + VALID_PROTECTION_FAULT_ENABLE_INTERRUPT | + VALID_PROTECTION_FAULT_ENABLE_DEFAULT | + READ_PROTECTION_FAULT_ENABLE_INTERRUPT | + READ_PROTECTION_FAULT_ENABLE_DEFAULT | + WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT | + WRITE_PROTECTION_FAULT_ENABLE_DEFAULT); cayman_pcie_gart_tlb_flush(rdev); DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", @@ -1271,6 +1313,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); @@ -1399,10 +1447,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-3.5.0.orig/drivers/gpu/drm/radeon/r420.c +++ linux-3.5.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 */ @@ -414,10 +420,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_ring.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_ring.c @@ -219,8 +219,18 @@ { int r; + /* make sure we aren't trying to allocate more space than there is on the ring */ + if (ndw > (ring->ring_size / 4)) + return -ENOMEM; /* Align requested size with padding so unlock_commit can * pad safely */ + 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); @@ -394,6 +404,7 @@ if (radeon_debugfs_ring_init(rdev, ring)) { DRM_ERROR("Failed to register debugfs file for rings !\n"); } + radeon_ring_lockup_update(ring); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r520.c +++ linux-3.5.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 */ @@ -299,9 +305,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-3.5.0.orig/drivers/gpu/drm/radeon/r600_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600_cs.c @@ -764,8 +764,10 @@ } /* Check depth buffer */ - if (track->db_dirty && (G_028800_STENCIL_ENABLE(track->db_depth_control) || - G_028800_Z_ENABLE(track->db_depth_control))) { + if (track->db_dirty && + G_028010_FORMAT(track->db_depth_info) != V_028010_DEPTH_INVALID && + (G_028800_STENCIL_ENABLE(track->db_depth_control) || + G_028800_Z_ENABLE(track->db_depth_control))) { r = r600_cs_track_validate_db(p); if (r) return r; @@ -2328,8 +2330,10 @@ kfree(parser->relocs); for (i = 0; i < parser->nchunks; i++) { kfree(parser->chunks[i].kdata); - kfree(parser->chunks[i].kpage[0]); - kfree(parser->chunks[i].kpage[1]); + if (parser->rdev && (parser->rdev->flags & RADEON_IS_AGP)) { + kfree(parser->chunks[i].kpage[0]); + kfree(parser->chunks[i].kpage[1]); + } } kfree(parser->chunks); kfree(parser->chunks_array); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_gem.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_gem.c @@ -134,25 +134,16 @@ struct radeon_device *rdev = rbo->rdev; struct radeon_fpriv *fpriv = file_priv->driver_priv; struct radeon_vm *vm = &fpriv->vm; - struct radeon_bo_va *bo_va, *tmp; if (rdev->family < CHIP_CAYMAN) { return; } if (radeon_bo_reserve(rbo, false)) { + dev_err(rdev->dev, "leaking bo va because we fail to reserve bo\n"); return; } - list_for_each_entry_safe(bo_va, tmp, &rbo->va, bo_list) { - if (bo_va->vm == vm) { - /* remove from this vm address space */ - mutex_lock(&vm->mutex); - list_del(&bo_va->vm_list); - mutex_unlock(&vm->mutex); - list_del(&bo_va->bo_list); - kfree(bo_va); - } - } + radeon_vm_bo_rmv(rdev, vm, rbo); radeon_bo_unreserve(rbo); } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_legacy_crtc.c @@ -1025,9 +1025,11 @@ static void radeon_crtc_prepare(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); struct drm_device *dev = crtc->dev; struct drm_crtc *crtci; + radeon_crtc->in_mode_set = true; /* * The hardware wedges sometimes if you reconfigure one CRTC * whilst another is running (see fdo bug #24611). @@ -1038,6 +1040,7 @@ static void radeon_crtc_commit(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); struct drm_device *dev = crtc->dev; struct drm_crtc *crtci; @@ -1048,6 +1051,7 @@ if (crtci->enabled) radeon_crtc_dpms(crtci, DRM_MODE_DPMS_ON); } + radeon_crtc->in_mode_set = false; } static const struct drm_crtc_helper_funcs legacy_helper_funcs = { --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_prime.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_prime.c @@ -195,6 +195,7 @@ bo = dma_buf->priv; if (bo->gem_base.dev == dev) { drm_gem_object_reference(&bo->gem_base); + dma_buf_put(dma_buf); return &bo->gem_base; } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/sid.h +++ linux-3.5.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 CC_SYS_RB_BACKEND_DISABLE 0xe80 @@ -91,7 +93,18 @@ #define VM_CONTEXT0_CNTL 0x1410 #define ENABLE_CONTEXT (1 << 0) #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) +#define RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 3) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 6) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 7) +#define PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 9) +#define PDE0_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 10) +#define VALID_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 12) +#define VALID_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 13) +#define READ_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 15) +#define READ_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 16) +#define WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 18) +#define WRITE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 19) #define VM_CONTEXT1_CNTL 0x1414 #define VM_CONTEXT0_CNTL2 0x1430 #define VM_CONTEXT1_CNTL2 0x1434 @@ -104,6 +117,9 @@ #define VM_CONTEXT14_PAGE_TABLE_BASE_ADDR 0x1450 #define VM_CONTEXT15_PAGE_TABLE_BASE_ADDR 0x1454 +#define VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x14FC +#define VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x14DC + #define VM_INVALIDATE_REQUEST 0x1478 #define VM_INVALIDATE_RESPONSE 0x147c @@ -424,6 +440,7 @@ # define RDERR_INT_ENABLE (1 << 0) # define GUI_IDLE_INT_ENABLE (1 << 19) +#define CP_STRMOUT_CNTL 0x84FC #define SCRATCH_REG0 0x8500 #define SCRATCH_REG1 0x8504 #define SCRATCH_REG2 0x8508 --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_object.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_object.c @@ -52,11 +52,7 @@ list_for_each_entry_safe(bo_va, tmp, &bo->va, bo_list) { /* remove from all vm address space */ - mutex_lock(&bo_va->vm->mutex); - list_del(&bo_va->vm_list); - mutex_unlock(&bo_va->vm->mutex); - list_del(&bo_va->bo_list); - kfree(bo_va); + radeon_vm_bo_rmv(bo->rdev, bo_va->vm, bo); } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_dp.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_dp.c @@ -22,6 +22,7 @@ * * Authors: Dave Airlie * Alex Deucher + * Jerome Glisse */ #include "drmP.h" #include "radeon_drm.h" @@ -654,7 +655,6 @@ ret = radeon_dp_aux_native_read(radeon_connector, DP_LANE0_1_STATUS, link_status, DP_LINK_STATUS_SIZE, 100); if (ret <= 0) { - DRM_ERROR("displayport link status failed\n"); return false; } @@ -833,8 +833,10 @@ else mdelay(dp_info->rd_interval * 4); - if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) + if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) { + DRM_ERROR("displayport link status failed\n"); break; + } if (dp_clock_recovery_ok(dp_info->link_status, dp_info->dp_lane_count)) { clock_recovery = true; @@ -896,8 +898,10 @@ else mdelay(dp_info->rd_interval * 4); - if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) + if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) { + DRM_ERROR("displayport link status failed\n"); break; + } if (dp_channel_eq_ok(dp_info->link_status, dp_info->dp_lane_count)) { channel_eq = true; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_legacy_encoders.c @@ -271,13 +271,6 @@ #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) -#define MAX_RADEON_LEVEL 0xFF - -struct radeon_backlight_privdata { - struct radeon_encoder *encoder; - uint8_t negative; -}; - static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd) { struct radeon_backlight_privdata *pdata = bl_get_data(bd); @@ -286,13 +279,13 @@ /* Convert brightness to hardware level */ if (bd->props.brightness < 0) level = 0; - else if (bd->props.brightness > MAX_RADEON_LEVEL) - level = MAX_RADEON_LEVEL; + else if (bd->props.brightness > RADEON_MAX_BL_LEVEL) + level = RADEON_MAX_BL_LEVEL; else level = bd->props.brightness; if (pdata->negative) - level = MAX_RADEON_LEVEL - level; + level = RADEON_MAX_BL_LEVEL - level; return level; } @@ -336,7 +329,7 @@ backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >> RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff; - return pdata->negative ? MAX_RADEON_LEVEL - backlight_level : backlight_level; + return pdata->negative ? RADEON_MAX_BL_LEVEL - backlight_level : backlight_level; } static const struct backlight_ops radeon_backlight_ops = { @@ -370,7 +363,7 @@ } memset(&props, 0, sizeof(props)); - props.max_brightness = MAX_RADEON_LEVEL; + props.max_brightness = RADEON_MAX_BL_LEVEL; props.type = BACKLIGHT_RAW; bd = backlight_device_register("radeon_bl", &drm_connector->kdev, pdata, &radeon_backlight_ops, &props); @@ -449,7 +442,7 @@ } if (bd) { - struct radeon_legacy_backlight_privdata *pdata; + struct radeon_backlight_privdata *pdata; pdata = bl_get_data(bd); backlight_device_unregister(bd); @@ -618,6 +611,14 @@ enum drm_connector_status found = connector_status_disconnected; bool color = true; + /* just don't bother on RN50 those chip are often connected to remoting + * console hw and often we get failure to load detect those. So to make + * everyone happy report the encoder as always connected. + */ + if (ASIC_IS_RN50(rdev)) { + return connector_status_connected; + } + /* save the regs we need */ vclk_ecp_cntl = RREG32_PLL(RADEON_VCLK_ECP_CNTL); crtc_ext_cntl = RREG32(RADEON_CRTC_EXT_CNTL); @@ -651,6 +652,7 @@ tmp |= RADEON_DAC_RANGE_CNTL_PS2 | RADEON_DAC_CMP_EN; WREG32(RADEON_DAC_CNTL, tmp); + tmp = dac_macro_cntl; tmp &= ~(RADEON_DAC_PDWN_R | RADEON_DAC_PDWN_G | RADEON_DAC_PDWN_B); @@ -974,11 +976,7 @@ static void radeon_ext_tmds_enc_destroy(struct drm_encoder *encoder) { struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); - struct radeon_encoder_ext_tmds *tmds = radeon_encoder->enc_priv; - if (tmds) { - if (tmds->i2c_bus) - radeon_i2c_destroy(tmds->i2c_bus); - } + /* don't destroy the i2c bus record here, this will be done in radeon_i2c_fini */ kfree(radeon_encoder->enc_priv); drm_encoder_cleanup(encoder); kfree(radeon_encoder); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_kms.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_kms.c @@ -39,8 +39,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; @@ -78,11 +83,6 @@ goto out; } - /* Call ACPI methods */ - acpi_status = radeon_acpi_init(rdev); - if (acpi_status) - dev_dbg(&dev->pdev->dev, "Error during ACPI methods call\n"); - /* Again modeset_init should fail only on fatal error * otherwise it should provide enough functionalities * for shadowfb to run @@ -90,6 +90,17 @@ r = radeon_modeset_init(rdev); if (r) dev_err(&dev->pdev->dev, "Fatal error during modeset init\n"); + + /* Call ACPI methods: require modeset init + * but failure is not fatal + */ + if (!r) { + acpi_status = radeon_acpi_init(rdev); + if (acpi_status) + dev_dbg(&dev->pdev->dev, + "Error during ACPI methods call\n"); + } + out: if (r) radeon_driver_unload_kms(dev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r100.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r100.c @@ -3896,6 +3896,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 */ @@ -4054,9 +4060,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-3.5.0.orig/drivers/gpu/drm/radeon/r300_cmdbuf.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r300_cmdbuf.c @@ -74,7 +74,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_combios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_combios.c @@ -958,6 +958,15 @@ found = 1; } + /* quirks */ + /* Radeon 9100 (R200) */ + if ((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); @@ -1536,6 +1545,9 @@ of_machine_is_compatible("PowerBook6,7")) { /* ibook */ rdev->mode_info.connector_table = CT_IBOOK; + } else if (of_machine_is_compatible("PowerMac3,5")) { + /* PowerMac G4 Silver radeon 7500 */ + rdev->mode_info.connector_table = CT_MAC_G4_SILVER; } else if (of_machine_is_compatible("PowerMac4,4")) { /* emac */ rdev->mode_info.connector_table = CT_EMAC; @@ -2200,6 +2212,54 @@ CONNECTOR_OBJECT_ID_SVIDEO, &hpd); break; + case CT_MAC_G4_SILVER: + DRM_INFO("Connector Table: %d (mac g4 silver)\n", + rdev->mode_info.connector_table); + /* DVI-I - tv dac, int tmds */ + ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); + hpd.hpd = RADEON_HPD_1; /* ??? */ + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_DFP1_SUPPORT, + 0), + ATOM_DEVICE_DFP1_SUPPORT); + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_CRT2_SUPPORT, + 2), + ATOM_DEVICE_CRT2_SUPPORT); + radeon_add_legacy_connector(dev, 0, + ATOM_DEVICE_DFP1_SUPPORT | + ATOM_DEVICE_CRT2_SUPPORT, + DRM_MODE_CONNECTOR_DVII, &ddc_i2c, + CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I, + &hpd); + /* VGA - primary dac */ + ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); + hpd.hpd = RADEON_HPD_NONE; + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_CRT1_SUPPORT, + 1), + ATOM_DEVICE_CRT1_SUPPORT); + radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT1_SUPPORT, + DRM_MODE_CONNECTOR_VGA, &ddc_i2c, + CONNECTOR_OBJECT_ID_VGA, + &hpd); + /* TV - TV DAC */ + ddc_i2c.valid = false; + hpd.hpd = RADEON_HPD_NONE; + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_TV1_SUPPORT, + 2), + ATOM_DEVICE_TV1_SUPPORT); + radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, + DRM_MODE_CONNECTOR_SVIDEO, + &ddc_i2c, + CONNECTOR_OBJECT_ID_SVIDEO, + &hpd); + break; default: DRM_INFO("Connector table: %d (invalid)\n", rdev->mode_info.connector_table); @@ -2404,6 +2464,14 @@ 1), ATOM_DEVICE_CRT1_SUPPORT); } + /* RV100 board with external TDMS bit mis-set. + * Actually uses internal TMDS, clear the bit. + */ + if (dev->pdev->device == 0x5159 && + dev->pdev->subsystem_vendor == 0x1014 && + dev->pdev->subsystem_device == 0x029A) { + tmp &= ~(1 << 4); + } if ((tmp >> 4) & 0x1) { devices |= ATOM_DEVICE_DFP2_SUPPORT; radeon_add_legacy_encoder(dev, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r300.c +++ linux-3.5.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 */ @@ -1519,9 +1525,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_benchmark.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_benchmark.c @@ -141,13 +141,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-3.5.0.orig/drivers/gpu/drm/radeon/rs400.c +++ linux-3.5.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 */ @@ -538,9 +544,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-3.5.0.orig/drivers/gpu/drm/radeon/r600.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600.c @@ -1383,12 +1383,15 @@ u32 disabled_rb_mask) { u32 rendering_pipe_num, rb_num_width, req_rb_num; - u32 pipe_rb_ratio, pipe_rb_remain; + u32 pipe_rb_ratio, pipe_rb_remain, tmp; u32 data = 0, mask = 1 << (max_rb_num - 1); unsigned i, j; /* mask out the RBs that don't exist on that asic */ - disabled_rb_mask |= (0xff << max_rb_num) & 0xff; + tmp = disabled_rb_mask | ((0xff << max_rb_num) & 0xff); + /* make sure at least one RB is available */ + if ((tmp & 0xff) != 0xff) + disabled_rb_mask = tmp; rendering_pipe_num = 1 << tiling_pipe_num; req_rb_num = total_max_rb_num - r600_count_pipe_bits(disabled_rb_mask); @@ -2398,6 +2401,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); @@ -2545,10 +2554,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_drv.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_drv.c @@ -59,9 +59,10 @@ * 2.15.0 - add max_pipes query * 2.16.0 - fix evergreen 2D tiled surface calculation * 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx + * 2.18.0 - r600-eg: allow "invalid" DB formats */ #define KMS_DRIVER_MAJOR 2 -#define KMS_DRIVER_MINOR 17 +#define KMS_DRIVER_MINOR 18 #define KMS_DRIVER_PATCHLEVEL 0 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); int radeon_driver_unload_kms(struct drm_device *dev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreen_reg.h +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen_reg.h @@ -218,11 +218,15 @@ #define EVERGREEN_CRTC_CONTROL 0x6e70 # define EVERGREEN_CRTC_MASTER_EN (1 << 0) # define EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE (1 << 24) +#define EVERGREEN_CRTC_BLANK_CONTROL 0x6e74 +# define EVERGREEN_CRTC_BLANK_DATA_EN (1 << 8) #define EVERGREEN_CRTC_STATUS 0x6e8c # define EVERGREEN_CRTC_V_BLANK (1 << 0) #define EVERGREEN_CRTC_STATUS_POSITION 0x6e90 #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-3.5.0.orig/drivers/gpu/drm/radeon/evergreen.c +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen.c @@ -37,6 +37,16 @@ #define EVERGREEN_PFP_UCODE_SIZE 1120 #define EVERGREEN_PM4_UCODE_SIZE 1376 +static const u32 crtc_offsets[6] = +{ + EVERGREEN_CRTC0_REGISTER_OFFSET, + EVERGREEN_CRTC1_REGISTER_OFFSET, + EVERGREEN_CRTC2_REGISTER_OFFSET, + EVERGREEN_CRTC3_REGISTER_OFFSET, + EVERGREEN_CRTC4_REGISTER_OFFSET, + EVERGREEN_CRTC5_REGISTER_OFFSET +}; + static void evergreen_gpu_init(struct radeon_device *rdev); void evergreen_fini(struct radeon_device *rdev); void evergreen_pcie_gen2_enable(struct radeon_device *rdev); @@ -101,17 +111,19 @@ void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc) { - struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc]; int i; - if (RREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_MASTER_EN) { + if (crtc >= rdev->num_crtc) + return; + + if (RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[crtc]) & EVERGREEN_CRTC_MASTER_EN) { for (i = 0; i < rdev->usec_timeout; i++) { - if (!(RREG32(EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_V_BLANK)) + if (!(RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK)) break; udelay(1); } for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_V_BLANK) + if (RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK) break; udelay(1); } @@ -433,6 +445,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); @@ -1117,175 +1139,168 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save) { - save->vga_control[0] = RREG32(D1VGA_CONTROL); - save->vga_control[1] = RREG32(D2VGA_CONTROL); + u32 crtc_enabled, tmp, frame_count, blackout; + int i, j; + save->vga_render_control = RREG32(VGA_RENDER_CONTROL); save->vga_hdp_control = RREG32(VGA_HDP_CONTROL); - save->crtc_control[0] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET); - save->crtc_control[1] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET); - if (rdev->num_crtc >= 4) { - save->vga_control[2] = RREG32(EVERGREEN_D3VGA_CONTROL); - save->vga_control[3] = RREG32(EVERGREEN_D4VGA_CONTROL); - save->crtc_control[2] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET); - save->crtc_control[3] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET); - } - if (rdev->num_crtc >= 6) { - save->vga_control[4] = RREG32(EVERGREEN_D5VGA_CONTROL); - save->vga_control[5] = RREG32(EVERGREEN_D6VGA_CONTROL); - save->crtc_control[4] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET); - save->crtc_control[5] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET); - } - /* Stop all video */ + /* disable VGA render */ WREG32(VGA_RENDER_CONTROL, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1); - } - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); + /* blank the display controllers */ + for (i = 0; i < rdev->num_crtc; i++) { + crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) & EVERGREEN_CRTC_MASTER_EN; + if (crtc_enabled) { + save->crtc_enabled[i] = true; + if (ASIC_IS_DCE6(rdev)) { + tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); + if (!(tmp & EVERGREEN_CRTC_BLANK_DATA_EN)) { + radeon_wait_for_vblank(rdev, i); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; + WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); + } + } else { + tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); + if (!(tmp & EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE)) { + radeon_wait_for_vblank(rdev, i); + 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); + } + } + /* wait for the next frame */ + frame_count = radeon_get_vblank_counter(rdev, i); + for (j = 0; j < rdev->usec_timeout; j++) { + if (radeon_get_vblank_counter(rdev, i) != frame_count) + break; + udelay(1); + } + + /* 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; + } } - WREG32(D1VGA_CONTROL, 0); - WREG32(D2VGA_CONTROL, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_D3VGA_CONTROL, 0); - WREG32(EVERGREEN_D4VGA_CONTROL, 0); + radeon_mc_wait_for_idle(rdev); + + blackout = RREG32(MC_SHARED_BLACKOUT_CNTL); + if ((blackout & BLACKOUT_MODE_MASK) != 1) { + /* Block CPU access */ + WREG32(BIF_FB_EN, 0); + /* blackout the MC */ + blackout &= ~BLACKOUT_MODE_MASK; + WREG32(MC_SHARED_BLACKOUT_CNTL, blackout | 1); } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_D5VGA_CONTROL, 0); - WREG32(EVERGREEN_D6VGA_CONTROL, 0); + /* 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) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC0_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC0_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC0_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC0_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC1_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC1_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC1_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC1_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC2_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC2_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC2_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC2_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); + u32 tmp, frame_count; + int i, j; - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC3_REGISTER_OFFSET, + /* update crtc base addresses */ + for (i = 0; i < rdev->num_crtc; i++) { + WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i], upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC3_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i], upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC3_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + crtc_offsets[i], (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC3_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + crtc_offsets[i], (u32)rdev->mc.vram_start); } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC4_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC4_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC4_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC4_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); + 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); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC5_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC5_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC5_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC5_REGISTER_OFFSET, - (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); + } + } } - WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS_HIGH, upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS, (u32)rdev->mc.vram_start); - /* Unlock host access */ + /* unblackout the MC */ + tmp = RREG32(MC_SHARED_BLACKOUT_CNTL); + tmp &= ~BLACKOUT_MODE_MASK; + WREG32(MC_SHARED_BLACKOUT_CNTL, tmp); + /* allow CPU access */ + WREG32(BIF_FB_EN, FB_READ_EN | FB_WRITE_EN); + + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + if (ASIC_IS_DCE6(rdev)) { + tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); + tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + } else { + tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); + tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + } + /* wait for the next frame */ + frame_count = radeon_get_vblank_counter(rdev, i); + for (j = 0; j < rdev->usec_timeout; j++) { + if (radeon_get_vblank_counter(rdev, i) != frame_count) + break; + udelay(1); + } + } + } + /* Unlock vga access */ WREG32(VGA_HDP_CONTROL, save->vga_hdp_control); mdelay(1); - /* Restore video state */ - WREG32(D1VGA_CONTROL, save->vga_control[0]); - WREG32(D2VGA_CONTROL, save->vga_control[1]); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_D3VGA_CONTROL, save->vga_control[2]); - WREG32(EVERGREEN_D4VGA_CONTROL, save->vga_control[3]); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_D5VGA_CONTROL, save->vga_control[4]); - WREG32(EVERGREEN_D6VGA_CONTROL, save->vga_control[5]); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1); - } - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, save->crtc_control[0]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, save->crtc_control[1]); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, save->crtc_control[2]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, save->crtc_control[3]); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, save->crtc_control[4]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, save->crtc_control[5]); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); - } WREG32(VGA_RENDER_CONTROL, save->vga_render_control); } @@ -1695,7 +1710,7 @@ case CHIP_SUMO: rdev->config.evergreen.num_ses = 1; rdev->config.evergreen.max_pipes = 4; - rdev->config.evergreen.max_tile_pipes = 2; + rdev->config.evergreen.max_tile_pipes = 4; if (rdev->pdev->device == 0x9648) rdev->config.evergreen.max_simds = 3; else if ((rdev->pdev->device == 0x9647) || @@ -1718,7 +1733,7 @@ rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; - gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; + gb_addr_config = SUMO_GB_ADDR_CONFIG_GOLDEN; break; case CHIP_SUMO2: rdev->config.evergreen.num_ses = 1; @@ -1740,7 +1755,7 @@ rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; - gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; + gb_addr_config = SUMO2_GB_ADDR_CONFIG_GOLDEN; break; case CHIP_BARTS: rdev->config.evergreen.num_ses = 2; @@ -1788,7 +1803,7 @@ break; case CHIP_CAICOS: rdev->config.evergreen.num_ses = 1; - rdev->config.evergreen.max_pipes = 4; + rdev->config.evergreen.max_pipes = 2; rdev->config.evergreen.max_tile_pipes = 2; rdev->config.evergreen.max_simds = 2; rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses; @@ -1858,10 +1873,18 @@ if (rdev->flags & RADEON_IS_IGP) rdev->config.evergreen.tile_config |= 1 << 4; else { - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.evergreen.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.evergreen.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.evergreen.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.evergreen.tile_config |= 2 << 4; + break; + } } rdev->config.evergreen.tile_config |= 0 << 8; rdev->config.evergreen.tile_config |= @@ -1901,9 +1924,20 @@ WREG32(DMIF_ADDR_CONFIG, gb_addr_config); WREG32(HDP_ADDR_CONFIG, gb_addr_config); - tmp = gb_addr_config & NUM_PIPES_MASK; - tmp = r6xx_remap_render_backend(rdev, tmp, rdev->config.evergreen.max_backends, - EVERGREEN_MAX_BACKENDS, disabled_rb_mask); + if ((rdev->config.evergreen.max_backends == 1) && + (rdev->flags & RADEON_IS_IGP)) { + if ((disabled_rb_mask & 3) == 1) { + /* RB0 disabled, RB1 enabled */ + tmp = 0x11111111; + } else { + /* RB1 disabled, RB0 enabled */ + tmp = 0x00000000; + } + } else { + tmp = gb_addr_config & NUM_PIPES_MASK; + tmp = r6xx_remap_render_backend(rdev, tmp, rdev->config.evergreen.max_backends, + EVERGREEN_MAX_BACKENDS, disabled_rb_mask); + } WREG32(GB_BACKEND_MAP, tmp); WREG32(CGTS_SYS_TCC_DISABLE, 0); @@ -2142,8 +2176,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); @@ -2961,6 +2995,16 @@ break; } break; + case 146: + case 147: + dev_err(rdev->dev, "GPU fault detected: %d 0x%08x\n", src_id, src_data); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_ADDR)); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS)); + /* reset addr and status */ + WREG32_P(VM_CONTEXT1_CNTL2, 1, ~1); + break; case 176: /* CP_INT in ring buffer */ case 177: /* CP_INT in IB1 */ case 178: /* CP_INT in IB2 */ @@ -3076,6 +3120,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); @@ -3220,10 +3270,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_fence.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_fence.c @@ -75,7 +75,7 @@ void radeon_fence_process(struct radeon_device *rdev, int ring) { - uint64_t seq, last_seq; + uint64_t seq, last_seq, last_emitted; unsigned count_loop = 0; bool wake = false; @@ -102,13 +102,15 @@ */ last_seq = atomic64_read(&rdev->fence_drv[ring].last_seq); do { + last_emitted = rdev->fence_drv[ring].seq; seq = radeon_fence_read(rdev, ring); seq |= last_seq & 0xffffffff00000000LL; if (seq < last_seq) { - seq += 0x100000000LL; + seq &= 0xffffffff; + seq |= last_emitted & 0xffffffff00000000LL; } - if (seq == last_seq) { + if (seq <= last_seq || seq > last_emitted) { break; } /* If we loop over we don't want to return without --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_connectors.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_connectors.c @@ -40,10 +40,6 @@ struct drm_encoder *encoder, bool connected); -extern void -radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, - struct drm_connector *drm_connector); - void radeon_connector_hotplug(struct drm_connector *connector) { struct drm_device *dev = connector->dev; @@ -64,14 +60,33 @@ /* just deal with DP (not eDP) here. */ if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { - int saved_dpms = connector->dpms; + struct radeon_connector_atom_dig *dig_connector = + radeon_connector->con_priv; + + /* if existing sink type was not DP no need to retrain */ + if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT) + return; - /* Only turn off the display it it's physically disconnected */ - if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) - drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); - else if (radeon_dp_needs_link_train(radeon_connector)) - drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); - connector->dpms = saved_dpms; + /* first get sink type as it may be reset after (un)plug */ + dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); + /* don't do anything if sink is not display port, i.e., + * passive dp->(dvi|hdmi) adaptor + */ + if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { + int saved_dpms = connector->dpms; + /* Only turn off the display if it's physically disconnected */ + if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { + drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); + } else if (radeon_dp_needs_link_train(radeon_connector)) { + /* set it to OFF so that drm_helper_connector_dpms() + * won't return immediately since the current state + * is ON at this point. + */ + connector->dpms = DRM_MODE_DPMS_OFF; + drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); + } + connector->dpms = saved_dpms; + } } } @@ -726,7 +741,7 @@ ret = connector_status_disconnected; if (radeon_connector->ddc_bus) - dret = radeon_ddc_probe(radeon_connector); + dret = radeon_ddc_probe(radeon_connector, false); if (dret) { radeon_connector->detected_by_load = false; if (radeon_connector->edid) { @@ -932,7 +947,7 @@ return connector->status; if (radeon_connector->ddc_bus) - dret = radeon_ddc_probe(radeon_connector); + dret = radeon_ddc_probe(radeon_connector, false); if (dret) { radeon_connector->detected_by_load = false; if (radeon_connector->edid) { @@ -1372,7 +1387,8 @@ if (encoder) { /* setup ddc on the bridge */ radeon_atom_ext_encoder_setup_ddc(encoder); - if (radeon_ddc_probe(radeon_connector)) /* try DDC */ + /* bridge chips are always aux */ + if (radeon_ddc_probe(radeon_connector, true)) /* try DDC */ ret = connector_status_connected; else if (radeon_connector->dac_load_detect) { /* try load detection */ struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; @@ -1390,7 +1406,8 @@ if (radeon_dp_getdpcd(radeon_connector)) ret = connector_status_connected; } else { - if (radeon_ddc_probe(radeon_connector)) + /* try non-aux ddc (DP to DVI/HMDI/etc. adapter) */ + if (radeon_ddc_probe(radeon_connector, false)) ret = connector_status_connected; } } @@ -1989,15 +2006,4 @@ connector->polled = DRM_CONNECTOR_POLL_HPD; connector->display_info.subpixel_order = subpixel_order; drm_sysfs_connector_add(connector); - if (connector_type == DRM_MODE_CONNECTOR_LVDS) { - struct drm_encoder *drm_encoder; - - list_for_each_entry(drm_encoder, &dev->mode_config.encoder_list, head) { - struct radeon_encoder *radeon_encoder; - - radeon_encoder = to_radeon_encoder(drm_encoder); - if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_LVDS) - radeon_legacy_backlight_init(radeon_encoder, connector); - } - } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_acpi.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_acpi.h @@ -0,0 +1,445 @@ +/* + * Copyright 2012 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef RADEON_ACPI_H +#define RADEON_ACPI_H + +struct radeon_device; +struct acpi_bus_event; + +int radeon_atif_handler(struct radeon_device *rdev, + struct acpi_bus_event *event); + +/* AMD hw uses four ACPI control methods: + * 1. ATIF + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATIF provides an entry point for the gfx driver to interact with the sbios. + * The AMD ACPI notification mechanism uses Notify (VGA, 0x81) or a custom + * notification. Which notification is used as indicated by the ATIF Control + * Method GET_SYSTEM_PARAMETERS. When the driver receives Notify (VGA, 0x81) or + * a custom notification it invokes ATIF Control Method GET_SYSTEM_BIOS_REQUESTS + * to identify pending System BIOS requests and associated parameters. For + * example, if one of the pending requests is DISPLAY_SWITCH_REQUEST, the driver + * will perform display device detection and invoke ATIF Control Method + * SELECT_ACTIVE_DISPLAYS. + * + * 2. ATPX + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATPX methods are used on PowerXpress systems to handle mux switching and + * discrete GPU power control. + * + * 3. ATRM + * ARG0: (ACPI_INTEGER) offset of vbios rom data + * ARG1: (ACPI_BUFFER) size of the buffer to fill (up to 4K). + * OUTPUT: (ACPI_BUFFER) output buffer + * ATRM provides an interfacess to access the discrete GPU vbios image on + * PowerXpress systems with multiple GPUs. + * + * 4. ATCS + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATCS provides an interface to AMD chipset specific functionality. + * + */ +/* ATIF */ +#define ATIF_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATIF_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported notifications mask + * DWORD - supported functions bit vector + */ +/* Notifications mask */ +# define ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED (1 << 0) +# define ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED (1 << 1) +# define ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED (1 << 2) +# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED (1 << 3) +# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED (1 << 4) +# define ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED (1 << 5) +# define ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED (1 << 6) +# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED (1 << 7) +# define ATIF_DGPU_DISPLAY_EVENT_SUPPORTED (1 << 8) +/* supported functions vector */ +# define ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED (1 << 0) +# define ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED (1 << 1) +# define ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED (1 << 2) +# define ATIF_GET_LID_STATE_SUPPORTED (1 << 3) +# define ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED (1 << 4) +# define ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED (1 << 5) +# define ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED (1 << 6) +# define ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED (1 << 7) +# define ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED (1 << 12) +# define ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED (1 << 14) +#define ATIF_FUNCTION_GET_SYSTEM_PARAMETERS 0x1 +/* ARG0: ATIF_FUNCTION_GET_SYSTEM_PARAMETERS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + * + * OR + * + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + * BYTE - notify command code + * + * flags + * bits 1:0: + * 0 - Notify(VGA, 0x81) is not used for notification + * 1 - Notify(VGA, 0x81) is used for notification + * 2 - Notify(VGA, n) is used for notification where + * n (0xd0-0xd9) is specified in notify command code. + * bit 2: + * 1 - lid changes not reported though int10 + */ +#define ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS 0x2 +/* ARG0: ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - pending sbios requests + * BYTE - panel expansion mode + * BYTE - thermal state: target gfx controller + * BYTE - thermal state: state id (0: exit state, non-0: state) + * BYTE - forced power state: target gfx controller + * BYTE - forced power state: state id + * BYTE - system power source + * BYTE - panel backlight level (0-255) + */ +/* pending sbios requests */ +# define ATIF_DISPLAY_SWITCH_REQUEST (1 << 0) +# define ATIF_EXPANSION_MODE_CHANGE_REQUEST (1 << 1) +# define ATIF_THERMAL_STATE_CHANGE_REQUEST (1 << 2) +# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST (1 << 3) +# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST (1 << 4) +# define ATIF_DISPLAY_CONF_CHANGE_REQUEST (1 << 5) +# define ATIF_PX_GFX_SWITCH_REQUEST (1 << 6) +# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST (1 << 7) +# define ATIF_DGPU_DISPLAY_EVENT (1 << 8) +/* panel expansion mode */ +# define ATIF_PANEL_EXPANSION_DISABLE 0 +# define ATIF_PANEL_EXPANSION_FULL 1 +# define ATIF_PANEL_EXPANSION_ASPECT 2 +/* target gfx controller */ +# define ATIF_TARGET_GFX_SINGLE 0 +# define ATIF_TARGET_GFX_PX_IGPU 1 +# define ATIF_TARGET_GFX_PX_DGPU 2 +/* system power source */ +# define ATIF_POWER_SOURCE_AC 1 +# define ATIF_POWER_SOURCE_DC 2 +# define ATIF_POWER_SOURCE_RESTRICTED_AC_1 3 +# define ATIF_POWER_SOURCE_RESTRICTED_AC_2 4 +#define ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS 0x3 +/* ARG0: ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - selected displays + * WORD - connected displays + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - selected displays + */ +# define ATIF_LCD1 (1 << 0) +# define ATIF_CRT1 (1 << 1) +# define ATIF_TV (1 << 2) +# define ATIF_DFP1 (1 << 3) +# define ATIF_CRT2 (1 << 4) +# define ATIF_LCD2 (1 << 5) +# define ATIF_DFP2 (1 << 7) +# define ATIF_CV (1 << 8) +# define ATIF_DFP3 (1 << 9) +# define ATIF_DFP4 (1 << 10) +# define ATIF_DFP5 (1 << 11) +# define ATIF_DFP6 (1 << 12) +#define ATIF_FUNCTION_GET_LID_STATE 0x4 +/* ARG0: ATIF_FUNCTION_GET_LID_STATE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - lid state (0: open, 1: closed) + * + * GET_LID_STATE only works at boot and resume, for general lid + * status, use the kernel provided status + */ +#define ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS 0x5 +/* ARG0: ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - 0 + * BYTE - TV standard + */ +# define ATIF_TV_STD_NTSC 0 +# define ATIF_TV_STD_PAL 1 +# define ATIF_TV_STD_PALM 2 +# define ATIF_TV_STD_PAL60 3 +# define ATIF_TV_STD_NTSCJ 4 +# define ATIF_TV_STD_PALCN 5 +# define ATIF_TV_STD_PALN 6 +# define ATIF_TV_STD_SCART_RGB 9 +#define ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS 0x6 +/* ARG0: ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - 0 + * BYTE - TV standard + * OUTPUT: none + */ +#define ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS 0x7 +/* ARG0: ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - panel expansion mode + */ +#define ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS 0x8 +/* ARG0: ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - panel expansion mode + * OUTPUT: none + */ +#define ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION 0xD +/* ARG0: ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - gfx controller id + * BYTE - current temperature (degress Celsius) + * OUTPUT: none + */ +#define ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES 0xF +/* ARG0: ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES + * ARG1: none + * OUTPUT: + * WORD - number of gfx devices + * WORD - device structure size in bytes (excludes device size field) + * DWORD - flags \ + * WORD - bus number } repeated structure + * WORD - device number / + */ +/* flags */ +# define ATIF_PX_REMOVABLE_GRAPHICS_DEVICE (1 << 0) +# define ATIF_XGP_PORT (1 << 1) +# define ATIF_VGA_ENABLED_GRAPHICS_DEVICE (1 << 2) +# define ATIF_XGP_PORT_IN_DOCK (1 << 3) + +/* ATPX */ +#define ATPX_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATPX_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported functions bit vector + */ +/* supported functions vector */ +# define ATPX_GET_PX_PARAMETERS_SUPPORTED (1 << 0) +# define ATPX_POWER_CONTROL_SUPPORTED (1 << 1) +# define ATPX_DISPLAY_MUX_CONTROL_SUPPORTED (1 << 2) +# define ATPX_I2C_MUX_CONTROL_SUPPORTED (1 << 3) +# define ATPX_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION_SUPPORTED (1 << 4) +# define ATPX_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION_SUPPORTED (1 << 5) +# define ATPX_GET_DISPLAY_CONNECTORS_MAPPING_SUPPORTED (1 << 7) +# define ATPX_GET_DISPLAY_DETECTION_PORTS_SUPPORTED (1 << 8) +#define ATPX_FUNCTION_GET_PX_PARAMETERS 0x1 +/* ARG0: ATPX_FUNCTION_GET_PX_PARAMETERS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + */ +/* flags */ +# define ATPX_LVDS_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 0) +# define ATPX_CRT1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 1) +# define ATPX_DVI1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 2) +# define ATPX_CRT1_RGB_SIGNAL_MUXED (1 << 3) +# define ATPX_TV_SIGNAL_MUXED (1 << 4) +# define ATPX_DFP_SIGNAL_MUXED (1 << 5) +# define ATPX_SEPARATE_MUX_FOR_I2C (1 << 6) +# define ATPX_DYNAMIC_PX_SUPPORTED (1 << 7) +# define ATPX_ACF_NOT_SUPPORTED (1 << 8) +# define ATPX_FIXED_NOT_SUPPORTED (1 << 9) +# define ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED (1 << 10) +# define ATPX_DGPU_REQ_POWER_FOR_DISPLAYS (1 << 11) +#define ATPX_FUNCTION_POWER_CONTROL 0x2 +/* ARG0: ATPX_FUNCTION_POWER_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - dGPU power state (0: power off, 1: power on) + * OUTPUT: none + */ +#define ATPX_FUNCTION_DISPLAY_MUX_CONTROL 0x3 +/* ARG0: ATPX_FUNCTION_DISPLAY_MUX_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - display mux control (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +# define ATPX_INTEGRATED_GPU 0 +# define ATPX_DISCRETE_GPU 1 +#define ATPX_FUNCTION_I2C_MUX_CONTROL 0x4 +/* ARG0: ATPX_FUNCTION_I2C_MUX_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - i2c/aux/hpd mux control (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION 0x5 +/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - target gpu (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION 0x6 +/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - target gpu (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING 0x8 +/* ARG0: ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING + * ARG1: none + * OUTPUT: + * WORD - number of display connectors + * WORD - connector structure size in bytes (excludes connector size field) + * BYTE - flags \ + * BYTE - ATIF display vector bit position } repeated + * BYTE - adapter id (0: iGPU, 1-n: dGPU ordered by pcie bus number) } structure + * WORD - connector ACPI id / + */ +/* flags */ +# define ATPX_DISPLAY_OUTPUT_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 0) +# define ATPX_DISPLAY_HPD_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 1) +# define ATPX_DISPLAY_I2C_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 2) +#define ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS 0x9 +/* ARG0: ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS + * ARG1: none + * OUTPUT: + * WORD - number of HPD/DDC ports + * WORD - port structure size in bytes (excludes port size field) + * BYTE - ATIF display vector bit position \ + * BYTE - hpd id } reapeated structure + * BYTE - ddc id / + * + * available on A+A systems only + */ +/* hpd id */ +# define ATPX_HPD_NONE 0 +# define ATPX_HPD1 1 +# define ATPX_HPD2 2 +# define ATPX_HPD3 3 +# define ATPX_HPD4 4 +# define ATPX_HPD5 5 +# define ATPX_HPD6 6 +/* ddc id */ +# define ATPX_DDC_NONE 0 +# define ATPX_DDC1 1 +# define ATPX_DDC2 2 +# define ATPX_DDC3 3 +# define ATPX_DDC4 4 +# define ATPX_DDC5 5 +# define ATPX_DDC6 6 +# define ATPX_DDC7 7 +# define ATPX_DDC8 8 + +/* ATCS */ +#define ATCS_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATCS_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported functions bit vector + */ +/* supported functions vector */ +# define ATCS_GET_EXTERNAL_STATE_SUPPORTED (1 << 0) +# define ATCS_PCIE_PERFORMANCE_REQUEST_SUPPORTED (1 << 1) +# define ATCS_PCIE_DEVICE_READY_NOTIFICATION_SUPPORTED (1 << 2) +# define ATCS_SET_PCIE_BUS_WIDTH_SUPPORTED (1 << 3) +#define ATCS_FUNCTION_GET_EXTERNAL_STATE 0x1 +/* ARG0: ATCS_FUNCTION_GET_EXTERNAL_STATE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags (0: undocked, 1: docked) + */ +/* flags */ +# define ATCS_DOCKED (1 << 0) +#define ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST 0x2 +/* ARG0: ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) + * WORD - valid flags mask + * WORD - flags + * BYTE - request type + * BYTE - performance request + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - return value + */ +/* flags */ +# define ATCS_ADVERTISE_CAPS (1 << 0) +# define ATCS_WAIT_FOR_COMPLETION (1 << 1) +/* request type */ +# define ATCS_PCIE_LINK_SPEED 1 +/* performance request */ +# define ATCS_REMOVE 0 +# define ATCS_FORCE_LOW_POWER 1 +# define ATCS_PERF_LEVEL_1 2 /* PCIE Gen 1 */ +# define ATCS_PERF_LEVEL_2 3 /* PCIE Gen 2 */ +# define ATCS_PERF_LEVEL_3 4 /* PCIE Gen 3 */ +/* return value */ +# define ATCS_REQUEST_REFUSED 1 +# define ATCS_REQUEST_COMPLETE 2 +# define ATCS_REQUEST_IN_PROGRESS 3 +#define ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION 0x3 +/* ARG0: ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION + * ARG1: none + * OUTPUT: none + */ +#define ATCS_FUNCTION_SET_PCIE_BUS_WIDTH 0x4 +/* ARG0: ATCS_FUNCTION_SET_PCIE_BUS_WIDTH + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) + * BYTE - number of active lanes + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - number of active lanes + */ + +#endif --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_bios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_bios.c @@ -32,6 +32,7 @@ #include #include +#include /* * BIOS. */ @@ -98,16 +99,81 @@ return true; } +#ifdef CONFIG_ACPI /* ATRM is used to get the BIOS on the discrete cards in * dual-gpu systems. */ +/* retrieve the ROM in 4k blocks */ +#define ATRM_BIOS_PAGE 4096 +/** + * radeon_atrm_call - fetch a chunk of the vbios + * + * @atrm_handle: acpi ATRM handle + * @bios: vbios image pointer + * @offset: offset of vbios image data to fetch + * @len: length of vbios image data to fetch + * + * Executes ATRM to fetch a chunk of the discrete + * vbios image on PX systems (all asics). + * Returns the length of the buffer fetched. + */ +static int radeon_atrm_call(acpi_handle atrm_handle, uint8_t *bios, + int offset, int len) +{ + acpi_status status; + union acpi_object atrm_arg_elements[2], *obj; + struct acpi_object_list atrm_arg; + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; + + atrm_arg.count = 2; + atrm_arg.pointer = &atrm_arg_elements[0]; + + atrm_arg_elements[0].type = ACPI_TYPE_INTEGER; + atrm_arg_elements[0].integer.value = offset; + + atrm_arg_elements[1].type = ACPI_TYPE_INTEGER; + atrm_arg_elements[1].integer.value = len; + + status = acpi_evaluate_object(atrm_handle, NULL, &atrm_arg, &buffer); + if (ACPI_FAILURE(status)) { + printk("failed to evaluate ATRM got %s\n", acpi_format_exception(status)); + return -ENODEV; + } + + obj = (union acpi_object *)buffer.pointer; + memcpy(bios+offset, obj->buffer.pointer, obj->buffer.length); + len = obj->buffer.length; + kfree(buffer.pointer); + return len; +} + static bool radeon_atrm_get_bios(struct radeon_device *rdev) { int ret; int size = 256 * 1024; int i; + struct pci_dev *pdev = NULL; + acpi_handle dhandle, atrm_handle; + acpi_status status; + bool found = false; - if (!radeon_atrm_supported(rdev->pdev)) + /* ATRM is for the discrete card only */ + if (rdev->flags & RADEON_IS_IGP) + return false; + + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) { + dhandle = DEVICE_ACPI_HANDLE(&pdev->dev); + if (!dhandle) + continue; + + status = acpi_get_handle(dhandle, "ATRM", &atrm_handle); + if (!ACPI_FAILURE(status)) { + found = true; + break; + } + } + + if (!found) return false; rdev->bios = kmalloc(size, GFP_KERNEL); @@ -117,9 +183,10 @@ } for (i = 0; i < size / ATRM_BIOS_PAGE; i++) { - ret = radeon_atrm_get_bios_chunk(rdev->bios, - (i * ATRM_BIOS_PAGE), - ATRM_BIOS_PAGE); + ret = radeon_atrm_call(atrm_handle, + rdev->bios, + (i * ATRM_BIOS_PAGE), + ATRM_BIOS_PAGE); if (ret < ATRM_BIOS_PAGE) break; } @@ -130,6 +197,12 @@ } return true; } +#else +static inline bool radeon_atrm_get_bios(struct radeon_device *rdev) +{ + return false; +} +#endif static bool ni_read_disabled_bios(struct radeon_device *rdev) { @@ -476,6 +549,61 @@ return legacy_read_disabled_bios(rdev); } +#ifdef CONFIG_ACPI +static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) +{ + bool ret = false; + struct acpi_table_header *hdr; + acpi_size tbl_size; + UEFI_ACPI_VFCT *vfct; + GOP_VBIOS_CONTENT *vbios; + VFCT_IMAGE_HEADER *vhdr; + + if (!ACPI_SUCCESS(acpi_get_table_with_size("VFCT", 1, &hdr, &tbl_size))) + return false; + if (tbl_size < sizeof(UEFI_ACPI_VFCT)) { + DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n"); + goto out_unmap; + } + + vfct = (UEFI_ACPI_VFCT *)hdr; + if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) > tbl_size) { + DRM_ERROR("ACPI VFCT table present but broken (too short #2)\n"); + goto out_unmap; + } + + vbios = (GOP_VBIOS_CONTENT *)((char *)hdr + vfct->VBIOSImageOffset); + vhdr = &vbios->VbiosHeader; + DRM_INFO("ACPI VFCT contains a BIOS for %02x:%02x.%d %04x:%04x, size %d\n", + vhdr->PCIBus, vhdr->PCIDevice, vhdr->PCIFunction, + vhdr->VendorID, vhdr->DeviceID, vhdr->ImageLength); + + if (vhdr->PCIBus != rdev->pdev->bus->number || + vhdr->PCIDevice != PCI_SLOT(rdev->pdev->devfn) || + vhdr->PCIFunction != PCI_FUNC(rdev->pdev->devfn) || + vhdr->VendorID != rdev->pdev->vendor || + vhdr->DeviceID != rdev->pdev->device) { + DRM_INFO("ACPI VFCT table is not for this card\n"); + goto out_unmap; + }; + + if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) + vhdr->ImageLength > tbl_size) { + DRM_ERROR("ACPI VFCT image truncated\n"); + goto out_unmap; + } + + rdev->bios = kmemdup(&vbios->VbiosContent, vhdr->ImageLength, GFP_KERNEL); + ret = !!rdev->bios; + +out_unmap: + return ret; +} +#else +static inline bool radeon_acpi_vfct_bios(struct radeon_device *rdev) +{ + return false; +} +#endif bool radeon_get_bios(struct radeon_device *rdev) { @@ -484,6 +612,8 @@ r = radeon_atrm_get_bios(rdev); if (r == false) + r = radeon_acpi_vfct_bios(rdev); + if (r == false) r = igp_read_bios_from_vram(rdev); if (r == false) r = radeon_read_bios(rdev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_acpi.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_acpi.c @@ -1,35 +1,104 @@ +/* + * Copyright 2012 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + #include #include #include +#include #include #include +#include #include "drmP.h" #include "drm.h" #include "drm_sarea.h" #include "drm_crtc_helper.h" #include "radeon.h" +#include "radeon_acpi.h" +#include "atom.h" #include +#define ACPI_AC_CLASS "ac_adapter" + +extern void radeon_pm_acpi_event_handler(struct radeon_device *rdev); + +struct atif_verify_interface { + u16 size; /* structure size in bytes (includes size field) */ + u16 version; /* version */ + u32 notification_mask; /* supported notifications mask */ + u32 function_bits; /* supported functions bit vector */ +} __packed; + +struct atif_system_params { + u16 size; /* structure size in bytes (includes size field) */ + u32 valid_mask; /* valid flags mask */ + u32 flags; /* flags */ + u8 command_code; /* notify command code */ +} __packed; + +struct atif_sbios_requests { + u16 size; /* structure size in bytes (includes size field) */ + u32 pending; /* pending sbios requests */ + u8 panel_exp_mode; /* panel expansion mode */ + u8 thermal_gfx; /* thermal state: target gfx controller */ + u8 thermal_state; /* thermal state: state id (0: exit state, non-0: state) */ + u8 forced_power_gfx; /* forced power state: target gfx controller */ + u8 forced_power_state; /* forced power state: state id */ + u8 system_power_src; /* system power source */ + u8 backlight_level; /* panel backlight level (0-255) */ +} __packed; + +#define ATIF_NOTIFY_MASK 0x3 +#define ATIF_NOTIFY_NONE 0 +#define ATIF_NOTIFY_81 1 +#define ATIF_NOTIFY_N 2 + /* Call the ATIF method - * - * Note: currently we discard the output */ -static int radeon_atif_call(acpi_handle handle) +static union acpi_object *radeon_atif_call(acpi_handle handle, int function, + struct acpi_buffer *params) { acpi_status status; union acpi_object atif_arg_elements[2]; struct acpi_object_list atif_arg; - struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; atif_arg.count = 2; atif_arg.pointer = &atif_arg_elements[0]; atif_arg_elements[0].type = ACPI_TYPE_INTEGER; - atif_arg_elements[0].integer.value = 0; - atif_arg_elements[1].type = ACPI_TYPE_INTEGER; - atif_arg_elements[1].integer.value = 0; + atif_arg_elements[0].integer.value = function; + + if (params) { + atif_arg_elements[1].type = ACPI_TYPE_BUFFER; + atif_arg_elements[1].buffer.length = params->length; + atif_arg_elements[1].buffer.pointer = params->pointer; + } else { + /* We need a second fake parameter */ + atif_arg_elements[1].type = ACPI_TYPE_INTEGER; + atif_arg_elements[1].integer.value = 0; + } status = acpi_evaluate_object(handle, "ATIF", &atif_arg, &buffer); @@ -38,17 +107,233 @@ DRM_DEBUG_DRIVER("failed to evaluate ATIF got %s\n", acpi_format_exception(status)); kfree(buffer.pointer); - return 1; + return NULL; } - kfree(buffer.pointer); - return 0; + return buffer.pointer; +} + +static void radeon_atif_parse_notification(struct radeon_atif_notifications *n, u32 mask) +{ + n->display_switch = mask & ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED; + n->expansion_mode_change = mask & ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED; + n->thermal_state = mask & ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED; + n->forced_power_state = mask & ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED; + n->system_power_state = mask & ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED; + n->display_conf_change = mask & ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED; + n->px_gfx_switch = mask & ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED; + n->brightness_change = mask & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED; + n->dgpu_display_event = mask & ATIF_DGPU_DISPLAY_EVENT_SUPPORTED; +} + +static void radeon_atif_parse_functions(struct radeon_atif_functions *f, u32 mask) +{ + f->system_params = mask & ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED; + f->sbios_requests = mask & ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED; + f->select_active_disp = mask & ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED; + f->lid_state = mask & ATIF_GET_LID_STATE_SUPPORTED; + f->get_tv_standard = mask & ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED; + f->set_tv_standard = mask & ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED; + f->get_panel_expansion_mode = mask & ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED; + f->set_panel_expansion_mode = mask & ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED; + f->temperature_change = mask & ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED; + f->graphics_device_types = mask & ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED; +} + +static int radeon_atif_verify_interface(acpi_handle handle, + struct radeon_atif *atif) +{ + union acpi_object *info; + struct atif_verify_interface output; + size_t size; + int err = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_VERIFY_INTERFACE, NULL); + if (!info) + return -EIO; + + memset(&output, 0, sizeof(output)); + + size = *(u16 *) info->buffer.pointer; + if (size < 12) { + DRM_INFO("ATIF buffer is too small: %lu\n", size); + err = -EINVAL; + goto out; + } + size = min(sizeof(output), size); + + memcpy(&output, info->buffer.pointer, size); + + /* TODO: check version? */ + DRM_DEBUG_DRIVER("ATIF version %u\n", output.version); + + radeon_atif_parse_notification(&atif->notifications, output.notification_mask); + radeon_atif_parse_functions(&atif->functions, output.function_bits); + +out: + kfree(info); + return err; +} + +static int radeon_atif_get_notification_params(acpi_handle handle, + struct radeon_atif_notification_cfg *n) +{ + union acpi_object *info; + struct atif_system_params params; + size_t size; + int err = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_GET_SYSTEM_PARAMETERS, NULL); + if (!info) { + err = -EIO; + goto out; + } + + size = *(u16 *) info->buffer.pointer; + if (size < 10) { + err = -EINVAL; + goto out; + } + + memset(¶ms, 0, sizeof(params)); + size = min(sizeof(params), size); + memcpy(¶ms, info->buffer.pointer, size); + + DRM_DEBUG_DRIVER("SYSTEM_PARAMS: mask = %#x, flags = %#x\n", + params.flags, params.valid_mask); + params.flags = params.flags & params.valid_mask; + + if ((params.flags & ATIF_NOTIFY_MASK) == ATIF_NOTIFY_NONE) { + n->enabled = false; + n->command_code = 0; + } else if ((params.flags & ATIF_NOTIFY_MASK) == ATIF_NOTIFY_81) { + n->enabled = true; + n->command_code = 0x81; + } else { + if (size < 11) { + err = -EINVAL; + goto out; + } + n->enabled = true; + n->command_code = params.command_code; + } + +out: + DRM_DEBUG_DRIVER("Notification %s, command code = %#x\n", + (n->enabled ? "enabled" : "disabled"), + n->command_code); + kfree(info); + return err; +} + +static int radeon_atif_get_sbios_requests(acpi_handle handle, + struct atif_sbios_requests *req) +{ + union acpi_object *info; + size_t size; + int count = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS, NULL); + if (!info) + return -EIO; + + size = *(u16 *)info->buffer.pointer; + if (size < 0xd) { + count = -EINVAL; + goto out; + } + memset(req, 0, sizeof(*req)); + + size = min(sizeof(*req), size); + memcpy(req, info->buffer.pointer, size); + DRM_DEBUG_DRIVER("SBIOS pending requests: %#x\n", req->pending); + + count = hweight32(req->pending); + +out: + kfree(info); + return count; +} + +int radeon_atif_handler(struct radeon_device *rdev, + struct acpi_bus_event *event) +{ + struct radeon_atif *atif = &rdev->atif; + struct atif_sbios_requests req; + acpi_handle handle; + int count; + + DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n", + event->device_class, event->type); + + if (strcmp(event->device_class, ACPI_VIDEO_CLASS) != 0) + return NOTIFY_DONE; + + if (!atif->notification_cfg.enabled || + event->type != atif->notification_cfg.command_code) + /* Not our event */ + return NOTIFY_DONE; + + /* Check pending SBIOS requests */ + handle = DEVICE_ACPI_HANDLE(&rdev->pdev->dev); + count = radeon_atif_get_sbios_requests(handle, &req); + + if (count <= 0) + return NOTIFY_DONE; + + DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count); + + if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) { + struct radeon_encoder *enc = atif->backlight_ctl; + + if (enc) { + struct radeon_encoder_atom_dig *dig = enc->enc_priv; + dig->backlight_level = req.backlight_level; + + DRM_DEBUG_DRIVER("Changing brightness to %d\n", + req.backlight_level); + + atombios_set_panel_brightness(enc); + + backlight_force_update(dig->bl_dev, + BACKLIGHT_UPDATE_HOTKEY); + } + } + /* TODO: check other events */ + + /* We've handled the event, stop the notifier chain. The ACPI interface + * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to + * userspace if the event was generated only to signal a SBIOS + * request. + */ + return NOTIFY_BAD; +} + +static int radeon_acpi_event(struct notifier_block *nb, + unsigned long val, + void *data) +{ + struct radeon_device *rdev = container_of(nb, struct radeon_device, acpi_nb); + struct acpi_bus_event *entry = (struct acpi_bus_event *)data; + + if (strcmp(entry->device_class, ACPI_AC_CLASS) == 0) { + if (power_supply_is_system_supplied() > 0) + DRM_DEBUG_DRIVER("pm: AC\n"); + else + DRM_DEBUG_DRIVER("pm: DC\n"); + + radeon_pm_acpi_event_handler(rdev); + } + + /* Check for pending SBIOS requests */ + return radeon_atif_handler(rdev, entry); } /* Call all ACPI methods here */ int radeon_acpi_init(struct radeon_device *rdev) { acpi_handle handle; + struct radeon_atif *atif = &rdev->atif; int ret; /* Get the device handle */ @@ -59,10 +344,66 @@ return 0; /* Call the ATIF method */ - ret = radeon_atif_call(handle); - if (ret) - return ret; + ret = radeon_atif_verify_interface(handle, atif); + if (ret) { + DRM_DEBUG_DRIVER("Call to verify_interface failed: %d\n", ret); + goto out; + } - return 0; + if (atif->notifications.brightness_change) { + struct drm_encoder *tmp; + struct radeon_encoder *target = NULL; + + /* Find the encoder controlling the brightness */ + list_for_each_entry(tmp, &rdev->ddev->mode_config.encoder_list, + head) { + struct radeon_encoder *enc = to_radeon_encoder(tmp); + struct radeon_encoder_atom_dig *dig = enc->enc_priv; + + if ((enc->devices & (ATOM_DEVICE_LCD_SUPPORT)) && + dig->bl_dev != NULL) { + target = enc; + break; + } + } + + atif->backlight_ctl = target; + if (!target) { + /* Brightness change notification is enabled, but we + * didn't find a backlight controller, this should + * never happen. + */ + DRM_ERROR("Cannot find a backlight controller\n"); + } + } + + if (atif->functions.sbios_requests && !atif->functions.system_params) { + /* XXX check this workraround, if sbios request function is + * present we have to see how it's configured in the system + * params + */ + atif->functions.system_params = true; + } + + if (atif->functions.system_params) { + ret = radeon_atif_get_notification_params(handle, + &atif->notification_cfg); + if (ret) { + DRM_DEBUG_DRIVER("Call to GET_SYSTEM_PARAMS failed: %d\n", + ret); + /* Disable notification */ + atif->notification_cfg.enabled = false; + } + } + +out: + rdev->acpi_nb.notifier_call = radeon_acpi_event; + register_acpi_notifier(&rdev->acpi_nb); + + return ret; } +void radeon_acpi_fini(struct radeon_device *rdev) +{ + unregister_acpi_notifier(&rdev->acpi_nb); +} --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_atpx_handler.c @@ -12,75 +12,15 @@ #include #include -#define ATPX_VERSION 0 -#define ATPX_GPU_PWR 2 -#define ATPX_MUX_SELECT 3 -#define ATPX_I2C_MUX_SELECT 4 -#define ATPX_SWITCH_START 5 -#define ATPX_SWITCH_END 6 - -#define ATPX_INTEGRATED 0 -#define ATPX_DISCRETE 1 - -#define ATPX_MUX_IGD 0 -#define ATPX_MUX_DISCRETE 1 +#include "radeon_acpi.h" static struct radeon_atpx_priv { bool atpx_detected; /* handle for device - and atpx */ acpi_handle dhandle; acpi_handle atpx_handle; - acpi_handle atrm_handle; } radeon_atpx_priv; -/* retrieve the ROM in 4k blocks */ -static int radeon_atrm_call(acpi_handle atrm_handle, uint8_t *bios, - int offset, int len) -{ - acpi_status status; - union acpi_object atrm_arg_elements[2], *obj; - struct acpi_object_list atrm_arg; - struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; - - atrm_arg.count = 2; - atrm_arg.pointer = &atrm_arg_elements[0]; - - atrm_arg_elements[0].type = ACPI_TYPE_INTEGER; - atrm_arg_elements[0].integer.value = offset; - - atrm_arg_elements[1].type = ACPI_TYPE_INTEGER; - atrm_arg_elements[1].integer.value = len; - - status = acpi_evaluate_object(atrm_handle, NULL, &atrm_arg, &buffer); - if (ACPI_FAILURE(status)) { - printk("failed to evaluate ATRM got %s\n", acpi_format_exception(status)); - return -ENODEV; - } - - obj = (union acpi_object *)buffer.pointer; - memcpy(bios+offset, obj->buffer.pointer, obj->buffer.length); - len = obj->buffer.length; - kfree(buffer.pointer); - return len; -} - -bool radeon_atrm_supported(struct pci_dev *pdev) -{ - /* get the discrete ROM only via ATRM */ - if (!radeon_atpx_priv.atpx_detected) - return false; - - if (radeon_atpx_priv.dhandle == DEVICE_ACPI_HANDLE(&pdev->dev)) - return false; - return true; -} - - -int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) -{ - return radeon_atrm_call(radeon_atpx_priv.atrm_handle, bios, offset, len); -} - static int radeon_atpx_get_version(acpi_handle handle) { acpi_status status; @@ -92,10 +32,10 @@ atpx_arg.pointer = &atpx_arg_elements[0]; atpx_arg_elements[0].type = ACPI_TYPE_INTEGER; - atpx_arg_elements[0].integer.value = ATPX_VERSION; + atpx_arg_elements[0].integer.value = ATPX_FUNCTION_VERIFY_INTERFACE; atpx_arg_elements[1].type = ACPI_TYPE_INTEGER; - atpx_arg_elements[1].integer.value = ATPX_VERSION; + atpx_arg_elements[1].integer.value = 0; status = acpi_evaluate_object(handle, NULL, &atpx_arg, &buffer); if (ACPI_FAILURE(status)) { @@ -145,27 +85,31 @@ static int radeon_atpx_set_discrete_state(acpi_handle handle, int state) { - return radeon_atpx_execute(handle, ATPX_GPU_PWR, state); + return radeon_atpx_execute(handle, ATPX_FUNCTION_POWER_CONTROL, state); } static int radeon_atpx_switch_mux(acpi_handle handle, int mux_id) { - return radeon_atpx_execute(handle, ATPX_MUX_SELECT, mux_id); + return radeon_atpx_execute(handle, ATPX_FUNCTION_DISPLAY_MUX_CONTROL, mux_id); } static int radeon_atpx_switch_i2c_mux(acpi_handle handle, int mux_id) { - return radeon_atpx_execute(handle, ATPX_I2C_MUX_SELECT, mux_id); + return radeon_atpx_execute(handle, ATPX_FUNCTION_I2C_MUX_CONTROL, mux_id); } static int radeon_atpx_switch_start(acpi_handle handle, int gpu_id) { - return radeon_atpx_execute(handle, ATPX_SWITCH_START, gpu_id); + return radeon_atpx_execute(handle, + ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION, + gpu_id); } static int radeon_atpx_switch_end(acpi_handle handle, int gpu_id) { - return radeon_atpx_execute(handle, ATPX_SWITCH_END, gpu_id); + return radeon_atpx_execute(handle, + ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION, + gpu_id); } static int radeon_atpx_switchto(enum vga_switcheroo_client_id id) @@ -173,9 +117,9 @@ int gpu_id; if (id == VGA_SWITCHEROO_IGD) - gpu_id = ATPX_INTEGRATED; + gpu_id = ATPX_INTEGRATED_GPU; else - gpu_id = ATPX_DISCRETE; + gpu_id = ATPX_DISCRETE_GPU; radeon_atpx_switch_start(radeon_atpx_priv.atpx_handle, gpu_id); radeon_atpx_switch_mux(radeon_atpx_priv.atpx_handle, gpu_id); @@ -198,7 +142,7 @@ static bool radeon_atpx_pci_probe_handle(struct pci_dev *pdev) { - acpi_handle dhandle, atpx_handle, atrm_handle; + acpi_handle dhandle, atpx_handle; acpi_status status; dhandle = DEVICE_ACPI_HANDLE(&pdev->dev); @@ -209,13 +153,8 @@ if (ACPI_FAILURE(status)) return false; - status = acpi_get_handle(dhandle, "ATRM", &atrm_handle); - if (ACPI_FAILURE(status)) - return false; - radeon_atpx_priv.dhandle = dhandle; radeon_atpx_priv.atpx_handle = atpx_handle; - radeon_atpx_priv.atrm_handle = atrm_handle; return true; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_encoders.c @@ -28,9 +28,238 @@ #include "radeon_drm.h" #include "radeon.h" #include "atom.h" +#include extern int atom_debug; +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) + +static u8 +radeon_atom_get_backlight_level_from_reg(struct radeon_device *rdev) +{ + u8 backlight_level; + u32 bios_2_scratch; + + if (rdev->family >= CHIP_R600) + bios_2_scratch = RREG32(R600_BIOS_2_SCRATCH); + else + bios_2_scratch = RREG32(RADEON_BIOS_2_SCRATCH); + + backlight_level = ((bios_2_scratch & ATOM_S2_CURRENT_BL_LEVEL_MASK) >> + ATOM_S2_CURRENT_BL_LEVEL_SHIFT); + + return backlight_level; +} + +static void +radeon_atom_set_backlight_level_to_reg(struct radeon_device *rdev, + u8 backlight_level) +{ + u32 bios_2_scratch; + + if (rdev->family >= CHIP_R600) + bios_2_scratch = RREG32(R600_BIOS_2_SCRATCH); + else + bios_2_scratch = RREG32(RADEON_BIOS_2_SCRATCH); + + bios_2_scratch &= ~ATOM_S2_CURRENT_BL_LEVEL_MASK; + bios_2_scratch |= ((backlight_level << ATOM_S2_CURRENT_BL_LEVEL_SHIFT) & + ATOM_S2_CURRENT_BL_LEVEL_MASK); + + if (rdev->family >= CHIP_R600) + WREG32(R600_BIOS_2_SCRATCH, bios_2_scratch); + else + WREG32(RADEON_BIOS_2_SCRATCH, bios_2_scratch); +} + +void +atombios_set_panel_brightness(struct radeon_encoder *radeon_encoder) +{ + struct drm_encoder *encoder = &radeon_encoder->base; + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct radeon_encoder_atom_dig *dig; + DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args; + int index; + + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + dig = radeon_encoder->enc_priv; + radeon_atom_set_backlight_level_to_reg(rdev, dig->backlight_level); + + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_LVDS: + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + index = GetIndexIntoMasterTable(COMMAND, LCD1OutputControl); + if (dig->backlight_level == 0) { + args.ucAction = ATOM_LCD_BLOFF; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + } else { + args.ucAction = ATOM_LCD_BL_BRIGHTNESS_CONTROL; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + args.ucAction = ATOM_LCD_BLON; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + } + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + if (dig->backlight_level == 0) + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0); + else { + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); + } + break; + default: + break; + } + } +} + +static u8 radeon_atom_bl_level(struct backlight_device *bd) +{ + u8 level; + + /* Convert brightness to hardware level */ + if (bd->props.brightness < 0) + level = 0; + else if (bd->props.brightness > RADEON_MAX_BL_LEVEL) + level = RADEON_MAX_BL_LEVEL; + else + level = bd->props.brightness; + + return level; +} + +static int radeon_atom_backlight_update_status(struct backlight_device *bd) +{ + struct radeon_backlight_privdata *pdata = bl_get_data(bd); + struct radeon_encoder *radeon_encoder = pdata->encoder; + + if (radeon_encoder->enc_priv) { + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; + dig->backlight_level = radeon_atom_bl_level(bd); + atombios_set_panel_brightness(radeon_encoder); + } + + return 0; +} + +static int radeon_atom_backlight_get_brightness(struct backlight_device *bd) +{ + struct radeon_backlight_privdata *pdata = bl_get_data(bd); + struct radeon_encoder *radeon_encoder = pdata->encoder; + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + + return radeon_atom_get_backlight_level_from_reg(rdev); +} + +static const struct backlight_ops radeon_atom_backlight_ops = { + .get_brightness = radeon_atom_backlight_get_brightness, + .update_status = radeon_atom_backlight_update_status, +}; + +void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector) +{ + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct backlight_device *bd; + struct backlight_properties props; + struct radeon_backlight_privdata *pdata; + struct radeon_encoder_atom_dig *dig; + u8 backlight_level; + + if (!radeon_encoder->enc_priv) + return; + + if (!rdev->is_atom_bios) + return; + + if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) + return; + + pdata = kmalloc(sizeof(struct radeon_backlight_privdata), GFP_KERNEL); + if (!pdata) { + DRM_ERROR("Memory allocation failed\n"); + goto error; + } + + memset(&props, 0, sizeof(props)); + props.max_brightness = RADEON_MAX_BL_LEVEL; + props.type = BACKLIGHT_RAW; + bd = backlight_device_register("radeon_bl", &drm_connector->kdev, + pdata, &radeon_atom_backlight_ops, &props); + if (IS_ERR(bd)) { + DRM_ERROR("Backlight registration failed\n"); + goto error; + } + + pdata->encoder = radeon_encoder; + + backlight_level = radeon_atom_get_backlight_level_from_reg(rdev); + + dig = radeon_encoder->enc_priv; + dig->bl_dev = bd; + + bd->props.brightness = radeon_atom_backlight_get_brightness(bd); + bd->props.power = FB_BLANK_UNBLANK; + backlight_update_status(bd); + + DRM_INFO("radeon atom DIG backlight initialized\n"); + + return; + +error: + kfree(pdata); + return; +} + +static void radeon_atom_backlight_exit(struct radeon_encoder *radeon_encoder) +{ + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct backlight_device *bd = NULL; + struct radeon_encoder_atom_dig *dig; + + if (!radeon_encoder->enc_priv) + return; + + if (!rdev->is_atom_bios) + return; + + if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) + return; + + dig = radeon_encoder->enc_priv; + bd = dig->bl_dev; + dig->bl_dev = NULL; + + if (bd) { + struct radeon_legacy_backlight_privdata *pdata; + + pdata = bl_get_data(bd); + backlight_device_unregister(bd); + kfree(pdata); + + DRM_INFO("radeon atom LVDS backlight unloaded\n"); + } +} + +#else /* !CONFIG_BACKLIGHT_CLASS_DEVICE */ + +void radeon_atom_backlight_init(struct radeon_encoder *encoder) +{ +} + +static void radeon_atom_backlight_exit(struct radeon_encoder *encoder) +{ +} + +#endif + /* evil but including atombios.h is much worse */ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index, struct drm_display_mode *mode); @@ -95,7 +324,7 @@ ((radeon_encoder->active_device & (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) || (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE))) { struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); - radeon_dp_set_link_config(connector, mode); + radeon_dp_set_link_config(connector, adjusted_mode); } return true; @@ -396,6 +625,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; @@ -421,7 +652,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; @@ -432,7 +664,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; @@ -446,7 +679,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; @@ -1379,6 +1613,8 @@ struct drm_device *dev = encoder->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); + struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder); + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); struct radeon_connector *radeon_connector = NULL; struct radeon_connector_atom_dig *radeon_dig_connector = NULL; @@ -1390,12 +1626,38 @@ switch (mode) { case DRM_MODE_DPMS_ON: - /* some early dce3.2 boards have a bug in their transmitter control table */ - if ((rdev->family == CHIP_RV710) || (rdev->family == CHIP_RV730) || - ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { + if (!connector) + dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; + else + dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector); + + /* setup and enable the encoder */ + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); + atombios_dig_encoder_setup(encoder, + ATOM_ENCODER_CMD_SETUP_PANEL_MODE, + dig->panel_mode); + if (ext_encoder) { + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) + atombios_external_encoder_setup(encoder, ext_encoder, + EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP); + } + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); + } else if (ASIC_IS_DCE4(rdev)) { + /* setup and enable the encoder */ + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); + /* enable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - else atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); + } else { + /* setup and enable the encoder and transmitter */ + atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); + /* some early dce3.2 boards have a bug in their transmitter control table */ + if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730)) + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); + } if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { atombios_set_edp_panel_power(connector, @@ -1412,10 +1674,19 @@ case DRM_MODE_DPMS_STANDBY: case DRM_MODE_DPMS_SUSPEND: case DRM_MODE_DPMS_OFF: - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { + /* disable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - else + } else if (ASIC_IS_DCE4(rdev)) { + /* disable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); + } else { + /* disable the encoder and transmitter */ + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); + atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); + } if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { if (ASIC_IS_DCE4(rdev)) atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0); @@ -1732,13 +2003,34 @@ struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc); struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct drm_encoder *test_encoder; - struct radeon_encoder_atom_dig *dig; + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; uint32_t dig_enc_in_use = 0; - /* DCE4/5 */ - if (ASIC_IS_DCE4(rdev)) { - dig = radeon_encoder->enc_priv; - if (ASIC_IS_DCE41(rdev)) { + if (ASIC_IS_DCE6(rdev)) { + /* DCE6 */ + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: + if (dig->linkb) + return 1; + else + return 0; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: + if (dig->linkb) + return 3; + else + return 2; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + if (dig->linkb) + return 5; + else + return 4; + break; + } + } else if (ASIC_IS_DCE4(rdev)) { + /* DCE4/5 */ + if (ASIC_IS_DCE41(rdev) && !ASIC_IS_DCE61(rdev)) { /* ontario follows DCE4 */ if (rdev->family == CHIP_PALM) { if (dig->linkb) @@ -1840,10 +2132,12 @@ struct drm_device *dev = encoder->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); - struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder); radeon_encoder->pixel_clock = adjusted_mode->clock; + /* need to call this here rather than in prepare() since we need some crtc info */ + radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); + if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE4(rdev)) { if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT | ATOM_DEVICE_TV_SUPPORT)) atombios_yuv_setup(encoder, true); @@ -1862,38 +2156,7 @@ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { - struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); - struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; - - if (!connector) - dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; - else - dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector); - - /* setup and enable the encoder */ - atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); - atombios_dig_encoder_setup(encoder, - ATOM_ENCODER_CMD_SETUP_PANEL_MODE, - dig->panel_mode); - } else if (ASIC_IS_DCE4(rdev)) { - /* disable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - /* setup and enable the encoder */ - atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); - - /* enable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - } else { - /* disable the encoder and transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); - - /* setup and enable the encoder and transmitter */ - atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0); - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0); - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - } + /* handled in dpms */ break; case ENCODER_OBJECT_ID_INTERNAL_DDI: case ENCODER_OBJECT_ID_INTERNAL_DVO1: @@ -1914,14 +2177,6 @@ break; } - if (ext_encoder) { - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) - atombios_external_encoder_setup(encoder, ext_encoder, - EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP); - else - atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); - } - atombios_apply_encoder_quirks(encoder, adjusted_mode); if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) { @@ -2108,7 +2363,6 @@ } radeon_atom_output_lock(encoder, true); - radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); if (connector) { struct radeon_connector *radeon_connector = to_radeon_connector(connector); @@ -2129,6 +2383,7 @@ static void radeon_atom_encoder_commit(struct drm_encoder *encoder) { + /* need to call this here as we need the crtc set up */ radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_ON); radeon_atom_output_lock(encoder, false); } @@ -2169,14 +2424,7 @@ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: - if (ASIC_IS_DCE4(rdev)) - /* disable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - else { - /* disable the encoder and transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); - } + /* handled in dpms */ break; case ENCODER_OBJECT_ID_INTERNAL_DDI: case ENCODER_OBJECT_ID_INTERNAL_DVO1: @@ -2272,6 +2520,8 @@ void radeon_enc_destroy(struct drm_encoder *encoder) { struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) + radeon_atom_backlight_exit(radeon_encoder); kfree(radeon_encoder->enc_priv); drm_encoder_cleanup(encoder); kfree(radeon_encoder); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_pm.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_pm.c @@ -24,9 +24,6 @@ #include "radeon.h" #include "avivod.h" #include "atom.h" -#ifdef CONFIG_ACPI -#include -#endif #include #include #include @@ -51,8 +48,6 @@ static void radeon_pm_update_profile(struct radeon_device *rdev); static void radeon_pm_set_clocks(struct radeon_device *rdev); -#define ACPI_AC_CLASS "ac_adapter" - int radeon_pm_get_type_index(struct radeon_device *rdev, enum radeon_pm_state_type ps_type, int instance) @@ -71,33 +66,17 @@ return rdev->pm.default_power_state_index; } -#ifdef CONFIG_ACPI -static int radeon_acpi_event(struct notifier_block *nb, - unsigned long val, - void *data) -{ - struct radeon_device *rdev = container_of(nb, struct radeon_device, acpi_nb); - struct acpi_bus_event *entry = (struct acpi_bus_event *)data; - - if (strcmp(entry->device_class, ACPI_AC_CLASS) == 0) { - if (power_supply_is_system_supplied() > 0) - DRM_DEBUG_DRIVER("pm: AC\n"); - else - DRM_DEBUG_DRIVER("pm: DC\n"); - - if (rdev->pm.pm_method == PM_METHOD_PROFILE) { - if (rdev->pm.profile == PM_PROFILE_AUTO) { - mutex_lock(&rdev->pm.mutex); - radeon_pm_update_profile(rdev); - radeon_pm_set_clocks(rdev); - mutex_unlock(&rdev->pm.mutex); - } +void radeon_pm_acpi_event_handler(struct radeon_device *rdev) +{ + if (rdev->pm.pm_method == PM_METHOD_PROFILE) { + if (rdev->pm.profile == PM_PROFILE_AUTO) { + mutex_lock(&rdev->pm.mutex); + radeon_pm_update_profile(rdev); + radeon_pm_set_clocks(rdev); + mutex_unlock(&rdev->pm.mutex); } } - - return NOTIFY_OK; } -#endif static void radeon_pm_update_profile(struct radeon_device *rdev) { @@ -555,7 +534,9 @@ void radeon_pm_resume(struct radeon_device *rdev) { /* set up the default clocks if the MC ucode is loaded */ - if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { + if ((rdev->family >= CHIP_BARTS) && + (rdev->family <= CHIP_CAYMAN) && + rdev->mc_fw) { if (rdev->pm.default_vddc) radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, SET_VOLTAGE_TYPE_ASIC_VDDC); @@ -610,7 +591,9 @@ radeon_pm_print_states(rdev); radeon_pm_init_profile(rdev); /* set up the default clocks if the MC ucode is loaded */ - if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { + if ((rdev->family >= CHIP_BARTS) && + (rdev->family <= CHIP_CAYMAN) && + rdev->mc_fw) { if (rdev->pm.default_vddc) radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, SET_VOLTAGE_TYPE_ASIC_VDDC); @@ -640,10 +623,6 @@ if (ret) DRM_ERROR("failed to create device file for power method\n"); -#ifdef CONFIG_ACPI - rdev->acpi_nb.notifier_call = radeon_acpi_event; - register_acpi_notifier(&rdev->acpi_nb); -#endif if (radeon_debugfs_pm_init(rdev)) { DRM_ERROR("Failed to register debugfs file for PM!\n"); } @@ -674,9 +653,6 @@ device_remove_file(rdev->dev, &dev_attr_power_profile); device_remove_file(rdev->dev, &dev_attr_power_method); -#ifdef CONFIG_ACPI - unregister_acpi_notifier(&rdev->acpi_nb); -#endif } if (rdev->pm.power_state) @@ -860,7 +836,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-3.5.0.orig/drivers/gpu/drm/radeon/r600_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600_hdmi.c @@ -489,7 +489,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: @@ -545,7 +545,6 @@ /* Called for ATOM_ENCODER_MODE_HDMI only */ if (!dig || !dig->afmt) { - WARN_ON(1); return; } if (!dig->afmt->enabled) @@ -560,7 +559,7 @@ radeon_irq_set(rdev); /* 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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_cs.c @@ -274,13 +274,15 @@ p->chunks[p->chunk_ib_idx].length_dw); return -EINVAL; } - if ((p->rdev->flags & RADEON_IS_AGP)) { + if (p->rdev && (p->rdev->flags & RADEON_IS_AGP)) { p->chunks[p->chunk_ib_idx].kpage[0] = kmalloc(PAGE_SIZE, GFP_KERNEL); p->chunks[p->chunk_ib_idx].kpage[1] = kmalloc(PAGE_SIZE, GFP_KERNEL); if (p->chunks[p->chunk_ib_idx].kpage[0] == NULL || p->chunks[p->chunk_ib_idx].kpage[1] == NULL) { - kfree(p->chunks[i].kpage[0]); - kfree(p->chunks[i].kpage[1]); + kfree(p->chunks[p->chunk_ib_idx].kpage[0]); + kfree(p->chunks[p->chunk_ib_idx].kpage[1]); + p->chunks[p->chunk_ib_idx].kpage[0] = NULL; + p->chunks[p->chunk_ib_idx].kpage[1] = NULL; return -ENOMEM; } } @@ -294,6 +296,28 @@ return 0; } +static void radeon_bo_vm_fence_va(struct radeon_cs_parser *parser, + struct radeon_fence *fence) +{ + struct radeon_fpriv *fpriv = parser->filp->driver_priv; + struct radeon_vm *vm = &fpriv->vm; + struct radeon_bo_list *lobj; + + if (parser->chunk_ib_idx == -1) + return; + if ((parser->cs_flags & RADEON_CS_USE_VM) == 0) + return; + + list_for_each_entry(lobj, &parser->validated, tv.head) { + struct radeon_bo_va *bo_va; + struct radeon_bo *rbo = lobj->bo; + + bo_va = radeon_bo_va(rbo, vm); + radeon_fence_unref(&bo_va->fence); + bo_va->fence = radeon_fence_ref(fence); + } +} + /** * cs_parser_fini() - clean parser states * @parser: parser structure holding parsing context. @@ -306,11 +330,14 @@ { unsigned i; - if (!error) + if (!error) { + /* fence all bo va before ttm_eu_fence_buffer_objects so bo are still reserved */ + radeon_bo_vm_fence_va(parser, parser->ib.fence); ttm_eu_fence_buffer_objects(&parser->validated, parser->ib.fence); - else + } else { ttm_eu_backoff_reservation(&parser->validated); + } if (parser->relocs != NULL) { for (i = 0; i < parser->nrelocs; i++) { @@ -377,7 +404,7 @@ if (r) { DRM_ERROR("Failed to schedule IB !\n"); } - return 0; + return r; } static int radeon_bo_vm_update_pte(struct radeon_cs_parser *parser, @@ -407,7 +434,6 @@ if (parser->chunk_ib_idx == -1) return 0; - if ((parser->cs_flags & RADEON_CS_USE_VM) == 0) return 0; @@ -589,7 +615,8 @@ struct radeon_cs_chunk *ibc = &p->chunks[p->chunk_ib_idx]; int i; int size = PAGE_SIZE; - bool copy1 = (p->rdev->flags & RADEON_IS_AGP) ? false : true; + bool copy1 = (p->rdev && (p->rdev->flags & RADEON_IS_AGP)) ? + false : true; for (i = ibc->last_copied_page + 1; i < pg_idx; i++) { if (DRM_COPY_FROM_USER(p->ib.ptr + (i * (PAGE_SIZE/4)), --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_display.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_display.c @@ -695,10 +695,15 @@ if (radeon_connector->router.ddc_valid) radeon_router_select_ddc_port(radeon_connector); - if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || - (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) || - (radeon_connector_encoder_get_dp_bridge_encoder_id(&radeon_connector->base) != - ENCODER_OBJECT_ID_NONE)) { + if (radeon_connector_encoder_get_dp_bridge_encoder_id(&radeon_connector->base) != + ENCODER_OBJECT_ID_NONE) { + struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; + + if (dig->dp_i2c_bus) + radeon_connector->edid = drm_get_edid(&radeon_connector->base, + &dig->dp_i2c_bus->adapter); + } else if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || + (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || @@ -1106,14 +1111,16 @@ } radeon_fb = kzalloc(sizeof(*radeon_fb), GFP_KERNEL); - if (radeon_fb == NULL) + if (radeon_fb == NULL) { + drm_gem_object_unreference_unlocked(obj); return ERR_PTR(-ENOMEM); + } ret = radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj); if (ret) { kfree(radeon_fb); drm_gem_object_unreference_unlocked(obj); - return NULL; + return ERR_PTR(ret); } return &radeon_fb->base; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_cursor.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_cursor.c @@ -238,7 +238,8 @@ y = 0; } - if (ASIC_IS_AVIVO(rdev)) { + /* fixed on DCE6 and newer */ + if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE6(rdev)) { int i = 0; struct drm_crtc *crtc_p; @@ -262,8 +263,14 @@ if (!(cursor_end & 0x7f)) w--; } - if (w <= 0) + if (w <= 0) { w = 1; + cursor_end = x - xorigin + w; + if (!(cursor_end & 0x7f)) { + x--; + WARN_ON_ONCE(x < 0); + } + } } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/si.c +++ linux-3.5.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; @@ -1640,10 +1640,18 @@ rdev->config.si.tile_config |= (3 << 0); break; } - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.si.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.si.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.si.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.si.tile_config |= 2 << 4; + break; + } rdev->config.si.tile_config |= ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; rdev->config.si.tile_config |= @@ -1651,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); si_tiling_mode_table_init(rdev); @@ -2301,8 +2310,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); @@ -2383,9 +2392,20 @@ /* enable context1-15 */ WREG32(VM_CONTEXT1_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(rdev->dummy_page.addr >> 12)); - WREG32(VM_CONTEXT1_CNTL2, 0); + WREG32(VM_CONTEXT1_CNTL2, 4); WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | - RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); + RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + RANGE_PROTECTION_FAULT_ENABLE_DEFAULT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT | + PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT | + PDE0_PROTECTION_FAULT_ENABLE_DEFAULT | + VALID_PROTECTION_FAULT_ENABLE_INTERRUPT | + VALID_PROTECTION_FAULT_ENABLE_DEFAULT | + READ_PROTECTION_FAULT_ENABLE_INTERRUPT | + READ_PROTECTION_FAULT_ENABLE_DEFAULT | + WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT | + WRITE_PROTECTION_FAULT_ENABLE_DEFAULT); si_pcie_gart_tlb_flush(rdev); DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", @@ -2431,6 +2451,7 @@ /* check config regs */ switch (reg) { case GRBM_GFX_INDEX: + case CP_STRMOUT_CNTL: case VGT_VTX_VECT_EJECT_REG: case VGT_CACHE_INVALIDATION: case VGT_ESGS_RING_SIZE: @@ -3595,6 +3616,16 @@ break; } break; + case 146: + case 147: + dev_err(rdev->dev, "GPU fault detected: %d 0x%08x\n", src_id, src_data); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_ADDR)); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS)); + /* reset addr and status */ + WREG32_P(VM_CONTEXT1_CNTL2, 1, ~1); + break; case 176: /* RINGID0 CP_INT */ radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX); break; @@ -3716,6 +3747,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); @@ -3880,10 +3917,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-3.5.0.orig/drivers/gpu/drm/radeon/radeon_gart.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_gart.c @@ -564,7 +564,7 @@ return -EINVAL; } - if (bo_va->valid) + if (bo_va->valid && mem) return 0; ngpu_pages = radeon_bo_ngpu_pages(bo); @@ -597,11 +597,27 @@ struct radeon_bo *bo) { struct radeon_bo_va *bo_va; + int r; bo_va = radeon_bo_va(bo, vm); if (bo_va == NULL) return 0; + /* wait for va use to end */ + while (bo_va->fence) { + r = radeon_fence_wait(bo_va->fence, false); + if (r) { + DRM_ERROR("error while waiting for fence: %d\n", r); + } + if (r == -EDEADLK) { + r = radeon_gpu_reset(rdev); + if (!r) + continue; + } + break; + } + radeon_fence_unref(&bo_va->fence); + radeon_mutex_lock(&rdev->cs_mutex); mutex_lock(&vm->mutex); radeon_vm_bo_update_pte(rdev, vm, bo, NULL); @@ -661,12 +677,15 @@ radeon_vm_unbind_locked(rdev, vm); radeon_mutex_unlock(&rdev->cs_mutex); - /* remove all bo */ + /* remove all bo at this point non are busy any more because unbind + * waited for the last vm fence to signal + */ r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); if (!r) { bo_va = radeon_bo_va(rdev->ring_tmp_bo.bo, vm); list_del_init(&bo_va->bo_list); list_del_init(&bo_va->vm_list); + radeon_fence_unref(&bo_va->fence); radeon_bo_unreserve(rdev->ring_tmp_bo.bo); kfree(bo_va); } @@ -678,6 +697,7 @@ r = radeon_bo_reserve(bo_va->bo, false); if (!r) { list_del_init(&bo_va->bo_list); + radeon_fence_unref(&bo_va->fence); radeon_bo_unreserve(bo_va->bo); kfree(bo_va); } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/reg_srcs/cayman +++ linux-3.5.0/drivers/gpu/drm/radeon/reg_srcs/cayman @@ -1,5 +1,6 @@ cayman 0x9400 0x0000802C GRBM_GFX_INDEX +0x00008040 WAIT_UNTIL 0x000084FC CP_STRMOUT_CNTL 0x000085F0 CP_COHER_CNTL 0x000085F4 CP_COHER_SIZE --- linux-3.5.0.orig/drivers/gpu/drm/gma500/cdv_intel_display.c +++ linux-3.5.0/drivers/gpu/drm/gma500/cdv_intel_display.c @@ -1600,6 +1600,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, @@ -1607,6 +1620,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-3.5.0.orig/drivers/gpu/drm/gma500/psb_intel_sdvo.c +++ linux-3.5.0/drivers/gpu/drm/gma500/psb_intel_sdvo.c @@ -1343,7 +1343,6 @@ } } else status = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -1404,7 +1403,6 @@ ret = connector_status_disconnected; else ret = connector_status_connected; - connector->display_info.raw_edid = NULL; kfree(edid); } else ret = connector_status_connected; @@ -1453,7 +1451,6 @@ drm_add_edid_modes(connector, edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } } --- linux-3.5.0.orig/drivers/gpu/drm/gma500/oaktrail_device.c +++ linux-3.5.0/drivers/gpu/drm/gma500/oaktrail_device.c @@ -476,6 +476,7 @@ .pos = DSPAPOS, .surf = DSPASURF, .addr = MRST_DSPABASE, + .base = MRST_DSPABASE, .status = PIPEASTAT, .linoff = DSPALINOFF, .tileoff = DSPATILEOFF, @@ -499,6 +500,7 @@ .pos = DSPBPOS, .surf = DSPBSURF, .addr = DSPBBASE, + .base = DSPBBASE, .status = PIPEBSTAT, .linoff = DSPBLINOFF, .tileoff = DSPBTILEOFF, --- linux-3.5.0.orig/drivers/gpu/drm/gma500/psb_intel_display.c +++ linux-3.5.0/drivers/gpu/drm/gma500/psb_intel_display.c @@ -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 = { @@ -1362,6 +1376,9 @@ (struct drm_connector **) (psb_intel_crtc + 1); psb_intel_crtc->mode_set.num_connectors = 0; psb_intel_cursor_init(dev, psb_intel_crtc); + + /* Set to true so that the pipe is forced off on initial config. */ + psb_intel_crtc->active = true; } int psb_intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, --- linux-3.5.0.orig/drivers/gpu/drm/gma500/oaktrail_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/gma500/oaktrail_hdmi.c @@ -252,7 +252,6 @@ if (edid) { drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; } /* --- linux-3.5.0.orig/drivers/gpu/drm/gma500/psb_irq.c +++ linux-3.5.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-3.5.0.orig/drivers/gpu/drm/gma500/framebuffer.c +++ linux-3.5.0/drivers/gpu/drm/gma500/framebuffer.c @@ -793,8 +793,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-3.5.0.orig/drivers/gpu/drm/gma500/cdv_intel_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/gma500/cdv_intel_hdmi.c @@ -157,8 +157,6 @@ hdmi_priv->has_hdmi_audio = drm_detect_monitor_audio(edid); } - - psb_intel_connector->base.display_info.raw_edid = NULL; kfree(edid); } return status; --- linux-3.5.0.orig/drivers/firewire/net.c +++ linux-3.5.0/drivers/firewire/net.c @@ -861,8 +861,8 @@ if (specifier_id == IANA_SPECIFIER_ID && ver == RFC2734_SW_VERSION) { buf_ptr += 2; length -= IEEE1394_GASP_HDR_SIZE; - fwnet_incoming_packet(dev, buf_ptr, length, - source_node_id, -1, true); + fwnet_incoming_packet(dev, buf_ptr, length, source_node_id, + context->card->generation, true); } packet.payload_length = dev->rcv_buffer_size; @@ -958,7 +958,12 @@ break; } - skb_pull(skb, ptask->max_payload); + if (ptask->dest_node == IEEE1394_ALL_NODES) { + skb_pull(skb, + ptask->max_payload + IEEE1394_GASP_HDR_SIZE); + } else { + skb_pull(skb, ptask->max_payload); + } if (ptask->outstanding_pkts > 1) { fwnet_make_sf_hdr(&ptask->hdr, RFC2374_HDR_INTFRAG, dg_size, fg_off, datagram_label); @@ -1062,7 +1067,7 @@ smp_rmb(); node_id = dev->card->node_id; - p = skb_push(ptask->skb, 8); + p = skb_push(ptask->skb, IEEE1394_GASP_HDR_SIZE); put_unaligned_be32(node_id << 16 | IANA_SPECIFIER_ID >> 8, p); put_unaligned_be32((IANA_SPECIFIER_ID & 0xff) << 24 | RFC2734_SW_VERSION, &p[4]); --- linux-3.5.0.orig/drivers/firewire/core-device.c +++ linux-3.5.0/drivers/firewire/core-device.c @@ -1010,6 +1010,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-3.5.0.orig/drivers/firewire/core-cdev.c +++ linux-3.5.0/drivers/firewire/core-cdev.c @@ -473,8 +473,8 @@ client->bus_reset_closure = a->bus_reset_closure; if (a->bus_reset != 0) { fill_bus_reset_event(&bus_reset, client); - ret = copy_to_user(u64_to_uptr(a->bus_reset), - &bus_reset, sizeof(bus_reset)); + /* unaligned size of bus_reset is 36 bytes */ + ret = copy_to_user(u64_to_uptr(a->bus_reset), &bus_reset, 36); } if (ret == 0 && list_empty(&client->link)) list_add_tail(&client->link, &client->device->client_list); --- linux-3.5.0.orig/drivers/firewire/ohci.c +++ linux-3.5.0/drivers/firewire/ohci.c @@ -320,6 +320,8 @@ {PCI_VENDOR_ID_VIA, PCI_ANY_ID, PCI_ANY_ID, QUIRK_CYCLE_TIMER | QUIRK_NO_MSI}, + {PCI_VENDOR_ID_O2, PCI_ANY_ID, PCI_ANY_ID, + QUIRK_NO_MSI}, }; /* This overrides anything that was found in ohci_quirks[]. */ --- linux-3.5.0.orig/drivers/virtio/virtio_ring.c +++ linux-3.5.0/drivers/virtio/virtio_ring.c @@ -132,6 +132,13 @@ unsigned head; int i; + /* + * We require lowmem mappings for the descriptors because + * otherwise virt_to_phys will give us bogus addresses in the + * virtqueue. + */ + gfp &= ~(__GFP_HIGHMEM | __GFP_HIGH); + desc = kmalloc((out + in) * sizeof(struct vring_desc), gfp); if (!desc) return -ENOMEM; --- linux-3.5.0.orig/drivers/virtio/virtio.c +++ linux-3.5.0/drivers/virtio/virtio.c @@ -222,8 +222,10 @@ void unregister_virtio_device(struct virtio_device *dev) { + int index = dev->index; /* save for after device release */ + device_unregister(&dev->dev); - ida_simple_remove(&virtio_index_ida, dev->index); + ida_simple_remove(&virtio_index_ida, index); } EXPORT_SYMBOL_GPL(unregister_virtio_device); --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_cfdc.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_cfdc.c @@ -293,7 +293,7 @@ } read_unlock_irqrestore(&adapter->port_list_lock, flags); - shost_for_each_device(sdev, port->adapter->scsi_host) { + shost_for_each_device(sdev, adapter->scsi_host) { zfcp_sdev = sdev_to_zfcp(sdev); status = atomic_read(&zfcp_sdev->status); if ((status & ZFCP_STATUS_COMMON_ACCESS_DENIED) || --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_dbf.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_dbf.h @@ -154,6 +154,7 @@ ZFCP_DBF_HBA_RES = 1, ZFCP_DBF_HBA_USS = 2, ZFCP_DBF_HBA_BIT = 3, + ZFCP_DBF_HBA_BASIC = 4, }; /** --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_qdio.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_qdio.c @@ -102,18 +102,22 @@ { struct zfcp_qdio *qdio = (struct zfcp_qdio *) parm; struct zfcp_adapter *adapter = qdio->adapter; - struct qdio_buffer_element *sbale; int sbal_no, sbal_idx; - void *pl[ZFCP_QDIO_MAX_SBALS_PER_REQ + 1]; - u64 req_id; - u8 scount; if (unlikely(qdio_err)) { - memset(pl, 0, ZFCP_QDIO_MAX_SBALS_PER_REQ * sizeof(void *)); if (zfcp_adapter_multi_buffer_active(adapter)) { + void *pl[ZFCP_QDIO_MAX_SBALS_PER_REQ + 1]; + struct qdio_buffer_element *sbale; + u64 req_id; + u8 scount; + + memset(pl, 0, + ZFCP_QDIO_MAX_SBALS_PER_REQ * sizeof(void *)); sbale = qdio->res_q[idx]->element; req_id = (u64) sbale->addr; - scount = sbale->scount + 1; /* incl. signaling SBAL */ + scount = min(sbale->scount + 1, + ZFCP_QDIO_MAX_SBALS_PER_REQ + 1); + /* incl. signaling SBAL */ for (sbal_no = 0; sbal_no < scount; sbal_no++) { sbal_idx = (idx + sbal_no) % --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_fsf.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_fsf.c @@ -219,7 +219,7 @@ return; } - zfcp_dbf_hba_fsf_uss("fssrh_2", req); + zfcp_dbf_hba_fsf_uss("fssrh_4", req); switch (sr_buf->status_type) { case FSF_STATUS_READ_PORT_CLOSED: @@ -437,6 +437,34 @@ } } +#define ZFCP_FSF_PORTSPEED_1GBIT (1 << 0) +#define ZFCP_FSF_PORTSPEED_2GBIT (1 << 1) +#define ZFCP_FSF_PORTSPEED_4GBIT (1 << 2) +#define ZFCP_FSF_PORTSPEED_10GBIT (1 << 3) +#define ZFCP_FSF_PORTSPEED_8GBIT (1 << 4) +#define ZFCP_FSF_PORTSPEED_16GBIT (1 << 5) +#define ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED (1 << 15) + +static u32 zfcp_fsf_convert_portspeed(u32 fsf_speed) +{ + u32 fdmi_speed = 0; + if (fsf_speed & ZFCP_FSF_PORTSPEED_1GBIT) + fdmi_speed |= FC_PORTSPEED_1GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_2GBIT) + fdmi_speed |= FC_PORTSPEED_2GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_4GBIT) + fdmi_speed |= FC_PORTSPEED_4GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_10GBIT) + fdmi_speed |= FC_PORTSPEED_10GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_8GBIT) + fdmi_speed |= FC_PORTSPEED_8GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_16GBIT) + fdmi_speed |= FC_PORTSPEED_16GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED) + fdmi_speed |= FC_PORTSPEED_NOT_NEGOTIATED; + return fdmi_speed; +} + static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req) { struct fsf_qtcb_bottom_config *bottom = &req->qtcb->bottom.config; @@ -456,7 +484,8 @@ fc_host_port_name(shost) = nsp->fl_wwpn; fc_host_node_name(shost) = nsp->fl_wwnn; fc_host_port_id(shost) = ntoh24(bottom->s_id); - fc_host_speed(shost) = bottom->fc_link_speed; + fc_host_speed(shost) = + zfcp_fsf_convert_portspeed(bottom->fc_link_speed); fc_host_supported_classes(shost) = FC_COS_CLASS2 | FC_COS_CLASS3; adapter->hydra_version = bottom->adapter_type; @@ -580,7 +609,8 @@ } else fc_host_permanent_port_name(shost) = fc_host_port_name(shost); fc_host_maxframe_size(shost) = bottom->maximum_frame_size; - fc_host_supported_speeds(shost) = bottom->supported_speed; + fc_host_supported_speeds(shost) = + zfcp_fsf_convert_portspeed(bottom->supported_speed); memcpy(fc_host_supported_fc4s(shost), bottom->supported_fc4_types, FC_FC4_LIST_SIZE); memcpy(fc_host_active_fc4s(shost), bottom->active_fc4_types, @@ -771,12 +801,14 @@ static void zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *req) { struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; union fsf_status_qual *fsq = &req->qtcb->header.fsf_status_qual; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (req->qtcb->header.fsf_status) { case FSF_PORT_HANDLE_NOT_VALID: if (fsq->word[0] == fsq->word[1]) { @@ -885,7 +917,7 @@ switch (header->fsf_status) { case FSF_GOOD: - zfcp_dbf_san_res("fsscth1", req); + zfcp_dbf_san_res("fsscth2", req); ct->status = 0; break; case FSF_SERVICE_CLASS_NOT_SUPPORTED: @@ -1739,13 +1771,15 @@ { struct zfcp_adapter *adapter = req->adapter; struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; struct fsf_qtcb_header *header = &req->qtcb->header; struct fsf_qtcb_bottom_support *bottom = &req->qtcb->bottom.support; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + atomic_clear_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED | ZFCP_STATUS_COMMON_ACCESS_BOXED | ZFCP_STATUS_LUN_SHARED | @@ -1856,11 +1890,13 @@ static void zfcp_fsf_close_lun_handler(struct zfcp_fsf_req *req) { struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (req->qtcb->header.fsf_status) { case FSF_PORT_HANDLE_NOT_VALID: zfcp_erp_adapter_reopen(zfcp_sdev->port->adapter, 0, "fscuh_1"); @@ -1950,7 +1986,7 @@ { struct fsf_qual_latency_info *lat_in; struct latency_cont *lat = NULL; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(scsi->device); + struct zfcp_scsi_dev *zfcp_sdev; struct zfcp_blk_drv_data blktrc; int ticks = req->adapter->timer_ticks; @@ -1965,6 +2001,7 @@ if (req->adapter->adapter_features & FSF_FEATURE_MEASUREMENT_DATA && !(req->status & ZFCP_STATUS_FSFREQ_ERROR)) { + zfcp_sdev = sdev_to_zfcp(scsi->device); blktrc.flags |= ZFCP_BLK_LAT_VALID; blktrc.channel_lat = lat_in->channel_lat * ticks; blktrc.fabric_lat = lat_in->fabric_lat * ticks; @@ -2002,12 +2039,14 @@ { struct scsi_cmnd *scmnd = req->data; struct scsi_device *sdev = scmnd->device; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; struct fsf_qtcb_header *header = &req->qtcb->header; if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ERROR)) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (header->fsf_status) { case FSF_HANDLE_MISMATCH: case FSF_PORT_HANDLE_NOT_VALID: --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_dbf.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_dbf.c @@ -191,7 +191,7 @@ length = min((u16)sizeof(struct qdio_buffer), (u16)ZFCP_DBF_PAY_MAX_REC); - while ((char *)pl[payload->counter] && payload->counter < scount) { + while (payload->counter < scount && (char *)pl[payload->counter]) { memcpy(payload->data, (char *)pl[payload->counter], length); debug_event(dbf->pay, 1, payload, zfcp_dbf_plen(length)); payload->counter++; @@ -200,6 +200,26 @@ spin_unlock_irqrestore(&dbf->pay_lock, flags); } +/** + * zfcp_dbf_hba_basic - trace event for basic adapter events + * @adapter: pointer to struct zfcp_adapter + */ +void zfcp_dbf_hba_basic(char *tag, struct zfcp_adapter *adapter) +{ + struct zfcp_dbf *dbf = adapter->dbf; + struct zfcp_dbf_hba *rec = &dbf->hba_buf; + unsigned long flags; + + spin_lock_irqsave(&dbf->hba_lock, flags); + memset(rec, 0, sizeof(*rec)); + + memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); + rec->id = ZFCP_DBF_HBA_BASIC; + + debug_event(dbf->hba, 1, rec, sizeof(*rec)); + spin_unlock_irqrestore(&dbf->hba_lock, flags); +} + static void zfcp_dbf_set_common(struct zfcp_dbf_rec *rec, struct zfcp_adapter *adapter, struct zfcp_port *port, --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_def.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_def.h @@ -77,6 +77,7 @@ #define ZFCP_STATUS_ADAPTER_SIOSL_ISSUED 0x00000004 #define ZFCP_STATUS_ADAPTER_XCONFIG_OK 0x00000008 #define ZFCP_STATUS_ADAPTER_HOST_CON_INIT 0x00000010 +#define ZFCP_STATUS_ADAPTER_SUSPENDED 0x00000040 #define ZFCP_STATUS_ADAPTER_ERP_PENDING 0x00000100 #define ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED 0x00000200 #define ZFCP_STATUS_ADAPTER_DATA_DIV_ENABLED 0x00000400 @@ -204,6 +205,7 @@ struct zfcp_adapter *adapter; /* adapter used to access port */ struct list_head unit_list; /* head of logical unit list */ rwlock_t unit_list_lock; /* unit list lock */ + atomic_t units; /* zfcp_unit count */ atomic_t status; /* status of this remote port */ u64 wwnn; /* WWNN if known */ u64 wwpn; /* WWPN */ --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_ccw.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_ccw.c @@ -39,17 +39,23 @@ spin_unlock_irqrestore(&zfcp_ccw_adapter_ref_lock, flags); } -static int zfcp_ccw_activate(struct ccw_device *cdev) - +/** + * zfcp_ccw_activate - activate adapter and wait for it to finish + * @cdev: pointer to belonging ccw device + * @clear: Status flags to clear. + * @tag: s390dbf trace record tag + */ +static int zfcp_ccw_activate(struct ccw_device *cdev, int clear, char *tag) { struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev); if (!adapter) return 0; + zfcp_erp_clear_adapter_status(adapter, clear); zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING); zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, - "ccresu2"); + tag); zfcp_erp_wait(adapter); flush_work(&adapter->scan_work); @@ -164,26 +170,29 @@ BUG_ON(!zfcp_reqlist_isempty(adapter->req_list)); adapter->req_no = 0; - zfcp_ccw_activate(cdev); + zfcp_ccw_activate(cdev, 0, "ccsonl1"); zfcp_ccw_adapter_put(adapter); return 0; } /** - * zfcp_ccw_set_offline - set_offline function of zfcp driver + * zfcp_ccw_offline_sync - shut down adapter and wait for it to finish * @cdev: pointer to belonging ccw device + * @set: Status flags to set. + * @tag: s390dbf trace record tag * * This function gets called by the common i/o layer and sets an adapter * into state offline. */ -static int zfcp_ccw_set_offline(struct ccw_device *cdev) +static int zfcp_ccw_offline_sync(struct ccw_device *cdev, int set, char *tag) { struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev); if (!adapter) return 0; - zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1"); + zfcp_erp_set_adapter_status(adapter, set); + zfcp_erp_adapter_shutdown(adapter, 0, tag); zfcp_erp_wait(adapter); zfcp_ccw_adapter_put(adapter); @@ -191,6 +200,18 @@ } /** + * zfcp_ccw_set_offline - set_offline function of zfcp driver + * @cdev: pointer to belonging ccw device + * + * This function gets called by the common i/o layer and sets an adapter + * into state offline. + */ +static int zfcp_ccw_set_offline(struct ccw_device *cdev) +{ + return zfcp_ccw_offline_sync(cdev, 0, "ccsoff1"); +} + +/** * zfcp_ccw_notify - ccw notify function * @cdev: pointer to belonging ccw device * @event: indicates if adapter was detached or attached @@ -207,6 +228,11 @@ switch (event) { case CIO_GONE: + if (atomic_read(&adapter->status) & + ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */ + zfcp_dbf_hba_basic("ccnigo1", adapter); + break; + } dev_warn(&cdev->dev, "The FCP device has been detached\n"); zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1"); break; @@ -216,6 +242,11 @@ zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2"); break; case CIO_OPER: + if (atomic_read(&adapter->status) & + ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */ + zfcp_dbf_hba_basic("ccniop1", adapter); + break; + } dev_info(&cdev->dev, "The FCP device is operational again\n"); zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING); @@ -251,6 +282,28 @@ zfcp_ccw_adapter_put(adapter); } +static int zfcp_ccw_suspend(struct ccw_device *cdev) +{ + zfcp_ccw_offline_sync(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccsusp1"); + return 0; +} + +static int zfcp_ccw_thaw(struct ccw_device *cdev) +{ + /* trace records for thaw and final shutdown during suspend + can only be found in system dump until the end of suspend + but not after resume because it's based on the memory image + right after the very first suspend (freeze) callback */ + zfcp_ccw_activate(cdev, 0, "ccthaw1"); + return 0; +} + +static int zfcp_ccw_resume(struct ccw_device *cdev) +{ + zfcp_ccw_activate(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccresu1"); + return 0; +} + struct ccw_driver zfcp_ccw_driver = { .driver = { .owner = THIS_MODULE, @@ -263,7 +316,7 @@ .set_offline = zfcp_ccw_set_offline, .notify = zfcp_ccw_notify, .shutdown = zfcp_ccw_shutdown, - .freeze = zfcp_ccw_set_offline, - .thaw = zfcp_ccw_activate, - .restore = zfcp_ccw_activate, + .freeze = zfcp_ccw_suspend, + .thaw = zfcp_ccw_thaw, + .restore = zfcp_ccw_resume, }; --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_sysfs.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_sysfs.c @@ -227,6 +227,8 @@ static ZFCP_DEV_ATTR(adapter, port_rescan, S_IWUSR, NULL, zfcp_sysfs_port_rescan_store); +DEFINE_MUTEX(zfcp_sysfs_port_units_mutex); + static ssize_t zfcp_sysfs_port_remove_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -249,6 +251,16 @@ else retval = 0; + mutex_lock(&zfcp_sysfs_port_units_mutex); + if (atomic_read(&port->units) > 0) { + retval = -EBUSY; + mutex_unlock(&zfcp_sysfs_port_units_mutex); + goto out; + } + /* port is about to be removed, so no more unit_add */ + atomic_set(&port->units, -1); + mutex_unlock(&zfcp_sysfs_port_units_mutex); + write_lock_irq(&adapter->port_list_lock); list_del(&port->list); write_unlock_irq(&adapter->port_list_lock); @@ -289,12 +301,14 @@ { struct zfcp_port *port = container_of(dev, struct zfcp_port, dev); u64 fcp_lun; + int retval; if (strict_strtoull(buf, 0, (unsigned long long *) &fcp_lun)) return -EINVAL; - if (zfcp_unit_add(port, fcp_lun)) - return -EINVAL; + retval = zfcp_unit_add(port, fcp_lun); + if (retval) + return retval; return count; } --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_unit.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_unit.c @@ -104,7 +104,7 @@ { struct zfcp_unit *unit = container_of(dev, struct zfcp_unit, dev); - put_device(&unit->port->dev); + atomic_dec(&unit->port->units); kfree(unit); } @@ -119,16 +119,27 @@ int zfcp_unit_add(struct zfcp_port *port, u64 fcp_lun) { struct zfcp_unit *unit; + int retval = 0; + + mutex_lock(&zfcp_sysfs_port_units_mutex); + if (atomic_read(&port->units) == -1) { + /* port is already gone */ + retval = -ENODEV; + goto out; + } unit = zfcp_unit_find(port, fcp_lun); if (unit) { put_device(&unit->dev); - return -EEXIST; + retval = -EEXIST; + goto out; } unit = kzalloc(sizeof(struct zfcp_unit), GFP_KERNEL); - if (!unit) - return -ENOMEM; + if (!unit) { + retval = -ENOMEM; + goto out; + } unit->port = port; unit->fcp_lun = fcp_lun; @@ -139,28 +150,33 @@ if (dev_set_name(&unit->dev, "0x%016llx", (unsigned long long) fcp_lun)) { kfree(unit); - return -ENOMEM; + retval = -ENOMEM; + goto out; } - get_device(&port->dev); - if (device_register(&unit->dev)) { put_device(&unit->dev); - return -ENOMEM; + retval = -ENOMEM; + goto out; } if (sysfs_create_group(&unit->dev.kobj, &zfcp_sysfs_unit_attrs)) { device_unregister(&unit->dev); - return -EINVAL; + retval = -EINVAL; + goto out; } + atomic_inc(&port->units); /* under zfcp_sysfs_port_units_mutex ! */ + write_lock_irq(&port->unit_list_lock); list_add_tail(&unit->list, &port->unit_list); write_unlock_irq(&port->unit_list_lock); zfcp_unit_scsi_scan(unit); - return 0; +out: + mutex_unlock(&zfcp_sysfs_port_units_mutex); + return retval; } /** --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_ext.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_ext.h @@ -54,6 +54,7 @@ extern void zfcp_dbf_hba_bit_err(char *, struct zfcp_fsf_req *); extern void zfcp_dbf_hba_berr(struct zfcp_dbf *, struct zfcp_fsf_req *); extern void zfcp_dbf_hba_def_err(struct zfcp_adapter *, u64, u16, void **); +extern void zfcp_dbf_hba_basic(char *, struct zfcp_adapter *); extern void zfcp_dbf_san_req(char *, struct zfcp_fsf_req *, u32); extern void zfcp_dbf_san_res(char *, struct zfcp_fsf_req *); extern void zfcp_dbf_san_in_els(char *, struct zfcp_fsf_req *); @@ -158,6 +159,7 @@ extern struct attribute_group zfcp_sysfs_unit_attrs; extern struct attribute_group zfcp_sysfs_adapter_attrs; extern struct attribute_group zfcp_sysfs_port_attrs; +extern struct mutex zfcp_sysfs_port_units_mutex; extern struct device_attribute *zfcp_sysfs_sdev_attrs[]; extern struct device_attribute *zfcp_sysfs_shost_attrs[]; --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_aux.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_aux.c @@ -519,6 +519,7 @@ rwlock_init(&port->unit_list_lock); INIT_LIST_HEAD(&port->unit_list); + atomic_set(&port->units, 0); INIT_WORK(&port->gid_pn_work, zfcp_fc_port_did_lookup); INIT_WORK(&port->test_link_work, zfcp_fc_link_test_work); --- linux-3.5.0.orig/drivers/s390/cio/device_pgid.c +++ linux-3.5.0/drivers/s390/cio/device_pgid.c @@ -234,7 +234,7 @@ * Determine pathgroup state from PGID data. */ static void pgid_analyze(struct ccw_device *cdev, struct pgid **p, - int *mismatch, int *reserved, u8 *reset) + int *mismatch, u8 *reserved, u8 *reset) { struct pgid *pgid = &cdev->private->pgid[0]; struct pgid *first = NULL; @@ -248,7 +248,7 @@ if ((cdev->private->pgid_valid_mask & lpm) == 0) continue; if (pgid->inf.ps.state2 == SNID_STATE2_RESVD_ELSE) - *reserved = 1; + *reserved |= lpm; if (pgid_is_reset(pgid)) { *reset |= lpm; continue; @@ -316,14 +316,14 @@ struct subchannel *sch = to_subchannel(cdev->dev.parent); struct pgid *pgid; int mismatch = 0; - int reserved = 0; + u8 reserved = 0; u8 reset = 0; u8 donepm; if (rc) goto out; pgid_analyze(cdev, &pgid, &mismatch, &reserved, &reset); - if (reserved) + if (reserved == cdev->private->pgid_valid_mask) rc = -EUSERS; else if (mismatch) rc = -EOPNOTSUPP; @@ -336,7 +336,7 @@ } out: CIO_MSG_EVENT(2, "snid: device 0.%x.%04x: rc=%d pvm=%02x vpm=%02x " - "todo=%02x mism=%d rsvd=%d reset=%02x\n", id->ssid, + "todo=%02x mism=%d rsvd=%02x reset=%02x\n", id->ssid, id->devno, rc, cdev->private->pgid_valid_mask, sch->vpm, cdev->private->pgid_todo_mask, mismatch, reserved, reset); switch (rc) { --- linux-3.5.0.orig/drivers/s390/kvm/kvm_virtio.c +++ linux-3.5.0/drivers/s390/kvm/kvm_virtio.c @@ -418,6 +418,26 @@ } /* + * For s390-virtio, we expect a page above main storage containing + * the virtio configuration. Try to actually load from this area + * in order to figure out if the host provides this page. + */ +static int __init test_devices_support(unsigned long addr) +{ + int ret = -EIO; + + asm volatile( + "0: lura 0,%1\n" + "1: xgr %0,%0\n" + "2:\n" + EX_TABLE(0b,2b) + EX_TABLE(1b,2b) + : "+d" (ret) + : "a" (addr) + : "0", "cc"); + return ret; +} +/* * Init function for virtio * devices are in a single page above top of "normal" mem */ @@ -428,21 +448,23 @@ if (!MACHINE_IS_KVM) return -ENODEV; + if (test_devices_support(real_memory_size) < 0) + return -ENODEV; + + rc = vmem_add_mapping(real_memory_size, PAGE_SIZE); + if (rc) + return rc; + + kvm_devices = (void *) real_memory_size; + kvm_root = root_device_register("kvm_s390"); if (IS_ERR(kvm_root)) { rc = PTR_ERR(kvm_root); printk(KERN_ERR "Could not register kvm_s390 root device"); + vmem_remove_mapping(real_memory_size, PAGE_SIZE); return rc; } - rc = vmem_add_mapping(real_memory_size, PAGE_SIZE); - if (rc) { - root_device_unregister(kvm_root); - return rc; - } - - kvm_devices = (void *) real_memory_size; - INIT_WORK(&hotplug_work, hotplug_devices); service_subclass_irq_register(); --- linux-3.5.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-3.5.0/drivers/s390/net/qeth_l3_main.c @@ -1760,6 +1760,8 @@ QETH_CARD_TEXT(card, 4, "frvaddr4"); netdev = __vlan_find_dev_deep(card->dev, vid); + if (!netdev) + return; in_dev = in_dev_get(netdev); if (!in_dev) return; @@ -1788,6 +1790,8 @@ QETH_CARD_TEXT(card, 4, "frvaddr6"); netdev = __vlan_find_dev_deep(card->dev, vid); + if (!netdev) + return; in6_dev = in6_dev_get(netdev); if (!in6_dev) return; --- linux-3.5.0.orig/drivers/s390/char/sclp_cmd.c +++ linux-3.5.0/drivers/s390/char/sclp_cmd.c @@ -529,6 +529,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; @@ -541,7 +543,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-3.5.0.orig/drivers/rtc/rtc-at91rm9200.c +++ linux-3.5.0/drivers/rtc/rtc-at91rm9200.c @@ -297,7 +297,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 @@ -309,13 +309,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; } /* @@ -332,6 +339,7 @@ free_irq(irq, pdev); rtc_device_unregister(rtc); + iounmap(at91_rtc_regs); platform_set_drvdata(pdev, NULL); return 0; --- linux-3.5.0.orig/drivers/rtc/rtc-rs5c348.c +++ linux-3.5.0/drivers/rtc/rtc-rs5c348.c @@ -122,9 +122,12 @@ tm->tm_min = bcd2bin(rxbuf[RS5C348_REG_MINS] & RS5C348_MINS_MASK); tm->tm_hour = bcd2bin(rxbuf[RS5C348_REG_HOURS] & RS5C348_HOURS_MASK); if (!pdata->rtc_24h) { - tm->tm_hour %= 12; - if (rxbuf[RS5C348_REG_HOURS] & RS5C348_BIT_PM) + if (rxbuf[RS5C348_REG_HOURS] & RS5C348_BIT_PM) { + tm->tm_hour -= 20; + tm->tm_hour %= 12; tm->tm_hour += 12; + } else + tm->tm_hour %= 12; } tm->tm_wday = bcd2bin(rxbuf[RS5C348_REG_WDAY] & RS5C348_WDAY_MASK); tm->tm_mday = bcd2bin(rxbuf[RS5C348_REG_DAY] & RS5C348_DAY_MASK); --- linux-3.5.0.orig/drivers/rtc/rtc-pl031.c +++ linux-3.5.0/drivers/rtc/rtc-pl031.c @@ -44,6 +44,7 @@ #define RTC_YMR 0x34 /* Year match register */ #define RTC_YLR 0x38 /* Year data load register */ +#define RTC_CR_EN (1 << 0) /* counter enable bit */ #define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */ #define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */ @@ -304,7 +305,7 @@ int ret; struct pl031_local *ldata; struct rtc_class_ops *ops = id->data; - unsigned long time; + unsigned long time, data; ret = amba_request_regions(adev, NULL); if (ret) @@ -331,10 +332,13 @@ dev_dbg(&adev->dev, "designer ID = 0x%02x\n", ldata->hw_designer); dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision); + data = readl(ldata->base + RTC_CR); /* Enable the clockwatch on ST Variants */ if (ldata->hw_designer == AMBA_VENDOR_ST) - writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, - ldata->base + RTC_CR); + data |= RTC_CR_CWEN; + else + data |= RTC_CR_EN; + writel(data, ldata->base + RTC_CR); /* * On ST PL031 variants, the RTC reset value does not provide correct --- linux-3.5.0.orig/drivers/rtc/rtc-vt8500.c +++ linux-3.5.0/drivers/rtc/rtc-vt8500.c @@ -69,7 +69,7 @@ | ALARM_SEC_BIT) #define VT8500_RTC_CR_ENABLE (1 << 0) /* Enable RTC */ -#define VT8500_RTC_CR_24H (1 << 1) /* 24h time format */ +#define VT8500_RTC_CR_12H (1 << 1) /* 12h time format */ #define VT8500_RTC_CR_SM_ENABLE (1 << 2) /* Enable periodic irqs */ #define VT8500_RTC_CR_SM_SEC (1 << 3) /* 0: 1Hz/60, 1: 1Hz */ #define VT8500_RTC_CR_CALIB (1 << 4) /* Enable calibration */ @@ -118,7 +118,7 @@ tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S); tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S); tm->tm_mday = bcd2bin(date & DATE_DAY_MASK); - tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S); + tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S) - 1; tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S) + ((date >> DATE_CENTURY_S) & 1 ? 200 : 100); tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S; @@ -137,8 +137,9 @@ } writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) - | (bin2bcd(tm->tm_mon) << DATE_MONTH_S) - | (bin2bcd(tm->tm_mday)), + | (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) + | (bin2bcd(tm->tm_mday)) + | ((tm->tm_year >= 200) << DATE_CENTURY_S), vt8500_rtc->regbase + VT8500_RTC_DS); writel((bin2bcd(tm->tm_wday) << TIME_DOW_S) | (bin2bcd(tm->tm_hour) << TIME_HOUR_S) @@ -248,7 +249,7 @@ } /* Enable RTC and set it to 24-hour mode */ - writel(VT8500_RTC_CR_ENABLE | VT8500_RTC_CR_24H, + writel(VT8500_RTC_CR_ENABLE, vt8500_rtc->regbase + VT8500_RTC_CR); vt8500_rtc->rtc = rtc_device_register("vt8500-rtc", &pdev->dev, --- linux-3.5.0.orig/drivers/rtc/rtc-pcf2123.c +++ linux-3.5.0/drivers/rtc/rtc-pcf2123.c @@ -264,6 +264,7 @@ if (!(rxbuf[0] & 0x20)) { dev_err(&spi->dev, "chip not found\n"); + ret = -ENODEV; goto kfree_exit; } --- linux-3.5.0.orig/drivers/rtc/rtc-wm831x.c +++ linux-3.5.0/drivers/rtc/rtc-wm831x.c @@ -24,7 +24,7 @@ #include #include #include - +#include /* * R16416 (0x4020) - RTC Write Counter @@ -96,6 +96,26 @@ unsigned int alarm_enabled:1; }; +static void wm831x_rtc_add_randomness(struct wm831x *wm831x) +{ + int ret; + u16 reg; + + /* + * The write counter contains a pseudo-random number which is + * regenerated every time we set the RTC so it should be a + * useful per-system source of entropy. + */ + ret = wm831x_reg_read(wm831x, WM831X_RTC_WRITE_COUNTER); + if (ret >= 0) { + reg = ret; + add_device_randomness(®, sizeof(reg)); + } else { + dev_warn(wm831x->dev, "Failed to read RTC write counter: %d\n", + ret); + } +} + /* * Read current time and date in RTC */ @@ -431,6 +451,8 @@ alm_irq, ret); } + wm831x_rtc_add_randomness(wm831x); + return 0; err: --- linux-3.5.0.orig/drivers/rtc/rtc-twl.c +++ linux-3.5.0/drivers/rtc/rtc-twl.c @@ -495,6 +495,11 @@ if (ret < 0) goto out1; + /* ensure interrupts are disabled, bootloaders can be strange */ + ret = twl_rtc_write_u8(0, REG_RTC_INTERRUPTS_REG); + if (ret < 0) + dev_warn(&pdev->dev, "unable to disable interrupt\n"); + /* init cached IRQ enable bits */ ret = twl_rtc_read_u8(&rtc_irq_bits, REG_RTC_INTERRUPTS_REG); if (ret < 0) @@ -518,6 +523,7 @@ } platform_set_drvdata(pdev, rtc); + device_init_wakeup(&pdev->dev, 1); return 0; out2: --- linux-3.5.0.orig/drivers/rtc/rtc-imxdi.c +++ linux-3.5.0/drivers/rtc/rtc-imxdi.c @@ -392,6 +392,8 @@ if (imxdi->ioaddr == NULL) return -ENOMEM; + spin_lock_init(&imxdi->irq_lock); + imxdi->irq = platform_get_irq(pdev, 0); if (imxdi->irq < 0) return imxdi->irq; --- linux-3.5.0.orig/drivers/rtc/rtc-isl1208.c +++ linux-3.5.0/drivers/rtc/rtc-isl1208.c @@ -494,6 +494,7 @@ { unsigned long timeout = jiffies + msecs_to_jiffies(1000); struct i2c_client *client = data; + struct rtc_device *rtc = i2c_get_clientdata(client); int handled = 0, sr, err; /* @@ -516,6 +517,8 @@ if (sr & ISL1208_REG_SR_ALM) { dev_dbg(&client->dev, "alarm!\n"); + rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF); + /* Clear the alarm */ sr &= ~ISL1208_REG_SR_ALM; sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr); --- linux-3.5.0.orig/drivers/rtc/rtc-cmos.c +++ linux-3.5.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-3.5.0.orig/drivers/xen/events.c +++ linux-3.5.0/drivers/xen/events.c @@ -1267,7 +1267,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); @@ -1275,6 +1275,8 @@ do { unsigned long pending_words; + unsigned long pending_bits; + struct irq_desc *desc; vcpu_info->evtchn_upcall_pending = 0; @@ -1285,6 +1287,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); @@ -1293,7 +1306,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); @@ -1322,8 +1334,7 @@ do { unsigned long bits; - int port, irq; - struct irq_desc *desc; + int port; bits = MASK_LSBS(pending_bits, bit_idx); @@ -1374,8 +1385,8 @@ { struct pt_regs *old_regs = set_irq_regs(regs); - exit_idle(); irq_enter(); + exit_idle(); __xen_evtchn_do_upcall(); --- linux-3.5.0.orig/drivers/xen/platform-pci.c +++ linux-3.5.0/drivers/xen/platform-pci.c @@ -109,6 +109,9 @@ long mmio_addr, mmio_len; unsigned int max_nr_gframes; + if (!xen_domain()) + return -ENODEV; + i = pci_enable_device(pdev); if (i) return i; --- linux-3.5.0.orig/drivers/xen/grant-table.c +++ linux-3.5.0/drivers/xen/grant-table.c @@ -54,10 +54,6 @@ /* External tools reserve first few grant table entries. */ #define NR_RESERVED_ENTRIES 8 #define GNTTAB_LIST_END 0xffffffff -#define GREFS_PER_GRANT_FRAME \ -(grant_table_version == 1 ? \ -(PAGE_SIZE / sizeof(struct grant_entry_v1)) : \ -(PAGE_SIZE / sizeof(union grant_entry_v2))) static grant_ref_t **gnttab_list; static unsigned int nr_grant_frames; @@ -152,6 +148,7 @@ static grant_status_t *grstatus; static int grant_table_version; +static int grefs_per_grant_frame; static struct gnttab_free_callback *gnttab_free_callback_list; @@ -766,12 +763,14 @@ unsigned int new_nr_grant_frames, extra_entries, i; unsigned int nr_glist_frames, new_nr_glist_frames; + BUG_ON(grefs_per_grant_frame == 0); + new_nr_grant_frames = nr_grant_frames + more_frames; - extra_entries = more_frames * GREFS_PER_GRANT_FRAME; + extra_entries = more_frames * grefs_per_grant_frame; - nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + nr_glist_frames = (nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; new_nr_glist_frames = - (new_nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + (new_nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; for (i = nr_glist_frames; i < new_nr_glist_frames; i++) { gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_ATOMIC); if (!gnttab_list[i]) @@ -779,12 +778,12 @@ } - for (i = GREFS_PER_GRANT_FRAME * nr_grant_frames; - i < GREFS_PER_GRANT_FRAME * new_nr_grant_frames - 1; i++) + for (i = grefs_per_grant_frame * nr_grant_frames; + i < grefs_per_grant_frame * new_nr_grant_frames - 1; i++) gnttab_entry(i) = i + 1; gnttab_entry(i) = gnttab_free_head; - gnttab_free_head = GREFS_PER_GRANT_FRAME * nr_grant_frames; + gnttab_free_head = grefs_per_grant_frame * nr_grant_frames; gnttab_free_count += extra_entries; nr_grant_frames = new_nr_grant_frames; @@ -870,7 +869,8 @@ EXPORT_SYMBOL_GPL(gnttab_map_refs); int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, - struct page **pages, unsigned int count, bool clear_pte) + struct gnttab_map_grant_ref *kmap_ops, + struct page **pages, unsigned int count) { int i, ret; bool lazy = false; @@ -888,7 +888,8 @@ } for (i = 0; i < count; i++) { - ret = m2p_remove_override(pages[i], clear_pte); + ret = m2p_remove_override(pages[i], kmap_ops ? + &kmap_ops[i] : NULL); if (ret) return ret; } @@ -902,7 +903,8 @@ static unsigned nr_status_frames(unsigned nr_grant_frames) { - return (nr_grant_frames * GREFS_PER_GRANT_FRAME + SPP - 1) / SPP; + BUG_ON(grefs_per_grant_frame == 0); + return (nr_grant_frames * grefs_per_grant_frame + SPP - 1) / SPP; } static int gnttab_map_frames_v1(unsigned long *frames, unsigned int nr_gframes) @@ -1060,6 +1062,7 @@ rc = HYPERVISOR_grant_table_op(GNTTABOP_set_version, &gsv, 1); if (rc == 0 && gsv.version == 2) { grant_table_version = 2; + grefs_per_grant_frame = PAGE_SIZE / sizeof(union grant_entry_v2); gnttab_interface = &gnttab_v2_ops; } else if (grant_table_version == 2) { /* @@ -1072,17 +1075,17 @@ panic("we need grant tables version 2, but only version 1 is available"); } else { grant_table_version = 1; + grefs_per_grant_frame = PAGE_SIZE / sizeof(struct grant_entry_v1); gnttab_interface = &gnttab_v1_ops; } printk(KERN_INFO "Grant tables using version %d layout.\n", grant_table_version); } -int gnttab_resume(void) +static int gnttab_setup(void) { unsigned int max_nr_gframes; - gnttab_request_version(); max_nr_gframes = gnttab_max_grant_frames(); if (max_nr_gframes < nr_grant_frames) return -ENOSYS; @@ -1105,6 +1108,12 @@ return 0; } +int gnttab_resume(void) +{ + gnttab_request_version(); + return gnttab_setup(); +} + int gnttab_suspend(void) { gnttab_interface->unmap_frames(); @@ -1116,9 +1125,10 @@ int rc; unsigned int cur, extra; + BUG_ON(grefs_per_grant_frame == 0); cur = nr_grant_frames; - extra = ((req_entries + (GREFS_PER_GRANT_FRAME-1)) / - GREFS_PER_GRANT_FRAME); + extra = ((req_entries + (grefs_per_grant_frame-1)) / + grefs_per_grant_frame); if (cur + extra > gnttab_max_grant_frames()) return -ENOSPC; @@ -1136,21 +1146,23 @@ unsigned int nr_init_grefs; int ret; + gnttab_request_version(); nr_grant_frames = 1; boot_max_nr_grant_frames = __max_nr_grant_frames(); /* Determine the maximum number of frames required for the * grant reference free list on the current hypervisor. */ + BUG_ON(grefs_per_grant_frame == 0); max_nr_glist_frames = (boot_max_nr_grant_frames * - GREFS_PER_GRANT_FRAME / RPP); + grefs_per_grant_frame / RPP); gnttab_list = kmalloc(max_nr_glist_frames * sizeof(grant_ref_t *), GFP_KERNEL); if (gnttab_list == NULL) return -ENOMEM; - nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + nr_glist_frames = (nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; for (i = 0; i < nr_glist_frames; i++) { gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_KERNEL); if (gnttab_list[i] == NULL) { @@ -1159,12 +1171,12 @@ } } - if (gnttab_resume() < 0) { + if (gnttab_setup() < 0) { ret = -ENODEV; goto ini_nomem; } - nr_init_grefs = nr_grant_frames * GREFS_PER_GRANT_FRAME; + nr_init_grefs = nr_grant_frames * grefs_per_grant_frame; for (i = NR_RESERVED_ENTRIES; i < nr_init_grefs - 1; i++) gnttab_entry(i) = i + 1; --- linux-3.5.0.orig/drivers/xen/evtchn.c +++ linux-3.5.0/drivers/xen/evtchn.c @@ -269,6 +269,14 @@ u->name, (void *)(unsigned long)port); if (rc >= 0) rc = evtchn_make_refcounted(port); + else { + /* bind failed, should close the port now */ + struct evtchn_close close; + close.port = port; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0) + BUG(); + set_port_user(port, NULL); + } return rc; } @@ -277,6 +285,8 @@ { int irq = irq_from_evtchn(port); + BUG_ON(irq < 0); + unbind_from_irqhandler(irq, (void *)(unsigned long)port); set_port_user(port, NULL); --- linux-3.5.0.orig/drivers/xen/gntdev.c +++ linux-3.5.0/drivers/xen/gntdev.c @@ -105,6 +105,21 @@ #endif } +static void gntdev_free_map(struct grant_map *map) +{ + if (map == NULL) + return; + + if (map->pages) + free_xenballooned_pages(map->count, map->pages); + kfree(map->pages); + kfree(map->grants); + kfree(map->map_ops); + kfree(map->unmap_ops); + kfree(map->kmap_ops); + kfree(map); +} + static struct grant_map *gntdev_alloc_map(struct gntdev_priv *priv, int count) { struct grant_map *add; @@ -142,12 +157,7 @@ return add; err: - kfree(add->pages); - kfree(add->grants); - kfree(add->map_ops); - kfree(add->unmap_ops); - kfree(add->kmap_ops); - kfree(add); + gntdev_free_map(add); return NULL; } @@ -198,17 +208,9 @@ evtchn_put(map->notify.event); } - if (map->pages) { - if (!use_ptemod) - unmap_grant_pages(map, 0, map->count); - - free_xenballooned_pages(map->count, map->pages); - } - kfree(map->pages); - kfree(map->grants); - kfree(map->map_ops); - kfree(map->unmap_ops); - kfree(map); + if (map->pages && !use_ptemod) + unmap_grant_pages(map, 0, map->count); + gntdev_free_map(map); } /* ------------------------------------------------------------------ */ @@ -314,8 +316,9 @@ } } - err = gnttab_unmap_refs(map->unmap_ops + offset, map->pages + offset, - pages, true); + err = gnttab_unmap_refs(map->unmap_ops + offset, + use_ptemod ? map->kmap_ops + offset : NULL, map->pages + offset, + pages); if (err) return err; --- linux-3.5.0.orig/drivers/xen/swiotlb-xen.c +++ linux-3.5.0/drivers/xen/swiotlb-xen.c @@ -232,7 +232,7 @@ return ret; if (hwdev && hwdev->coherent_dma_mask) - dma_mask = hwdev->coherent_dma_mask; + dma_mask = dma_alloc_coherent_mask(hwdev, flags); phys = virt_to_phys(ret); dev_addr = xen_phys_to_bus(phys); --- linux-3.5.0.orig/drivers/xen/xen-pciback/pci_stub.c +++ linux-3.5.0/drivers/xen/xen-pciback/pci_stub.c @@ -353,16 +353,17 @@ if (err) goto config_release; - dev_dbg(&dev->dev, "reseting (FLR, D3, etc) the device\n"); - __pci_reset_function_locked(dev); - /* We need the device active to save the state. */ dev_dbg(&dev->dev, "save state of device\n"); pci_save_state(dev); dev_data->pci_saved_state = pci_store_saved_state(dev); if (!dev_data->pci_saved_state) dev_err(&dev->dev, "Could not store PCI conf saved state!\n"); - + else { + dev_dbg(&dev->dev, "reseting (FLR, D3, etc) the device\n"); + __pci_reset_function_locked(dev); + pci_restore_state(dev); + } /* Now disable the device (this also ensures some private device * data is setup before we export) */ --- linux-3.5.0.orig/drivers/xen/xen-pciback/pciback_ops.c +++ linux-3.5.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); @@ -135,7 +136,6 @@ struct pci_dev *dev, struct xen_pci_op *op) { struct xen_pcibk_dev_data *dev_data; - int otherend = pdev->xdev->otherend_id; int status; if (unlikely(verbose_request)) @@ -144,8 +144,9 @@ status = pci_enable_msi(dev); if (status) { - printk(KERN_ERR "error enable msi for guest %x status %x\n", - otherend, status); + pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI for guest %u: err %d\n", + pci_name(dev), pdev->xdev->otherend_id, + status); op->value = 0; return XEN_PCI_ERR_op_failed; } @@ -223,10 +224,10 @@ pci_name(dev), i, op->msix_entries[i].vector); } - } else { - printk(KERN_WARNING DRV_NAME ": %s: failed to enable MSI-X: err %d!\n", - pci_name(dev), result); - } + } else + pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI-X for guest %u: err %d!\n", + pci_name(dev), pdev->xdev->otherend_id, + result); kfree(entries); op->value = result; --- linux-3.5.0.orig/drivers/xen/xenbus/xenbus_client.c +++ linux-3.5.0/drivers/xen/xenbus/xenbus_client.c @@ -30,6 +30,7 @@ * IN THE SOFTWARE. */ +#include #include #include #include --- linux-3.5.0.orig/drivers/clk/clkdev.c +++ linux-3.5.0/drivers/clk/clkdev.c @@ -19,10 +19,82 @@ #include #include #include +#include static LIST_HEAD(clocks); static DEFINE_MUTEX(clocks_mutex); +#ifdef CONFIG_ARCH_HIGHBANK +#ifdef CONFIG_OF +struct clk *of_clk_get(struct device_node *np, int index) +{ + struct of_phandle_args clkspec; + struct clk *clk; + int rc; + + if (index < 0) + return ERR_PTR(-EINVAL); + + rc = of_parse_phandle_with_args(np, "clocks", "#clock-cells", index, + &clkspec); + if (rc) + return ERR_PTR(rc); + + clk = of_clk_get_from_provider(&clkspec); + of_node_put(clkspec.np); + return clk; +} +EXPORT_SYMBOL(of_clk_get); + +/** + * of_clk_get_by_name() - Parse and lookup a clock referenced by a device node + * @np: pointer to clock consumer node + * @name: name of consumer's clock input, or NULL for the first clock reference + * + * This function parses the clocks and clock-names properties, + * and uses them to look up the struct clk from the registered list of clock + * providers. + */ +struct clk *of_clk_get_by_name(struct device_node *np, const char *name) +{ + struct clk *clk = ERR_PTR(-ENOENT); + + /* Walk up the tree of devices looking for a clock that matches */ + while (np) { + int index = 0; + + /* + * For named clocks, first look up the name in the + * "clock-names" property. If it cannot be found, then + * index will be an error code, and of_clk_get() will fail. + */ + if (name) + index = of_property_match_string(np, "clock-names", name); + clk = of_clk_get(np, index); + if (!IS_ERR(clk)) + break; + else if (name && index >= 0) { + pr_err("ERROR: could not get clock %s:%s(%i)\n", + np->full_name, name ? name : "", index); + return clk; + } + + /* + * No matching clock found on this node. If the parent node + * has a "clock-ranges" property, then we can try one of its + * clocks. + */ + np = np->parent; + if (np && !of_get_property(np, "clock-ranges", NULL)) + break; + } + + return clk; +} +EXPORT_SYMBOL(of_clk_get_by_name); +#endif +#endif + /* * Find the correct struct clk for the device and connection ID. * We do slightly fuzzy matching here: @@ -83,6 +155,15 @@ struct clk *clk_get(struct device *dev, const char *con_id) { const char *dev_id = dev ? dev_name(dev) : NULL; +#ifdef CONFIG_ARCH_HIGHBANK + struct clk *clk; + + if (dev) { + clk = of_clk_get_by_name(dev->of_node, con_id); + if (clk && __clk_get(clk)) + return clk; + } +#endif return clk_get_sys(dev_id, con_id); } --- linux-3.5.0.orig/drivers/clk/clk.c +++ linux-3.5.0/drivers/clk/clk.c @@ -16,6 +16,7 @@ #include #include #include +#include static DEFINE_SPINLOCK(enable_lock); static DEFINE_MUTEX(prepare_lock); @@ -1538,6 +1539,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); } @@ -1550,3 +1552,143 @@ return ret; } EXPORT_SYMBOL_GPL(clk_notifier_unregister); + +#ifdef CONFIG_OF +/** + * struct of_clk_provider - Clock provider registration structure + * @link: Entry in global list of clock providers + * @node: Pointer to device tree node of clock provider + * @get: Get clock callback. Returns NULL or a struct clk for the + * given clock specifier + * @data: context pointer to be passed into @get callback + */ +struct of_clk_provider { + struct list_head link; + + struct device_node *node; + struct clk *(*get)(struct of_phandle_args *clkspec, void *data); + void *data; +}; + +static LIST_HEAD(of_clk_providers); +static DEFINE_MUTEX(of_clk_lock); + +struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, + void *data) +{ + return data; +} +EXPORT_SYMBOL_GPL(of_clk_src_simple_get); + +/** + * of_clk_add_provider() - Register a clock provider for a node + * @np: Device node pointer associated with clock provider + * @clk_src_get: callback for decoding clock + * @data: context pointer for @clk_src_get callback. + */ +int of_clk_add_provider(struct device_node *np, + struct clk *(*clk_src_get)(struct of_phandle_args *clkspec, + void *data), + void *data) +{ + struct of_clk_provider *cp; + + cp = kzalloc(sizeof(struct of_clk_provider), GFP_KERNEL); + if (!cp) + return -ENOMEM; + + cp->node = of_node_get(np); + cp->data = data; + cp->get = clk_src_get; + + mutex_lock(&of_clk_lock); + list_add(&cp->link, &of_clk_providers); + mutex_unlock(&of_clk_lock); + pr_debug("Added clock from %s\n", np->full_name); + + return 0; +} +EXPORT_SYMBOL_GPL(of_clk_add_provider); + +/** + * of_clk_del_provider() - Remove a previously registered clock provider + * @np: Device node pointer associated with clock provider + */ +void of_clk_del_provider(struct device_node *np) +{ + struct of_clk_provider *cp; + + mutex_lock(&of_clk_lock); + list_for_each_entry(cp, &of_clk_providers, link) { + if (cp->node == np) { + list_del(&cp->link); + of_node_put(cp->node); + kfree(cp); + break; + } + } + mutex_unlock(&of_clk_lock); +} +EXPORT_SYMBOL_GPL(of_clk_del_provider); + +struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec) +{ + struct of_clk_provider *provider; + struct clk *clk = ERR_PTR(-ENOENT); + + /* Check if we have such a provider in our array */ + mutex_lock(&of_clk_lock); + list_for_each_entry(provider, &of_clk_providers, link) { + if (provider->node == clkspec->np) + clk = provider->get(clkspec, provider->data); + if (!IS_ERR(clk)) + break; + } + mutex_unlock(&of_clk_lock); + + return clk; +} +EXPORT_SYMBOL_GPL(of_clk_get_from_provider); + +const char *of_clk_get_parent_name(struct device_node *np, int index) +{ + struct of_phandle_args clkspec; + const char *clk_name; + int rc; + + if (index < 0) + return NULL; + + rc = of_parse_phandle_with_args(np, "clocks", "#clock-cells", index, + &clkspec); + if (rc) + return NULL; + + if (of_property_read_string_index(clkspec.np, "clock-output-names", + clkspec.args_count ? clkspec.args[0] : 0, + &clk_name) < 0) + clk_name = clkspec.np->name; + + of_node_put(clkspec.np); + return clk_name; +} +EXPORT_SYMBOL_GPL(of_clk_get_parent_name); + +/** + * of_clk_init() - Scan and init clock providers from the DT + * @matches: array of compatible values and init functions for providers. + * + * This function scans the device tree for matching clock providers and + * calls their initialization functions + */ +void __init of_clk_init(const struct of_device_id *matches) +{ + struct device_node *np; + + for_each_matching_node(np, matches) { + const struct of_device_id *match = of_match_node(matches, np); + of_clk_init_cb_t clk_init_cb = match->data; + clk_init_cb(np); + } +} +#endif --- linux-3.5.0.orig/drivers/clk/clk-highbank.c +++ linux-3.5.0/drivers/clk/clk-highbank.c @@ -0,0 +1,346 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +extern void __iomem *sregs_base; + +#define HB_PLL_LOCK_500 0x20000000 +#define HB_PLL_LOCK 0x10000000 +#define HB_PLL_DIVF_SHIFT 20 +#define HB_PLL_DIVF_MASK 0x0ff00000 +#define HB_PLL_DIVQ_SHIFT 16 +#define HB_PLL_DIVQ_MASK 0x00070000 +#define HB_PLL_DIVR_SHIFT 8 +#define HB_PLL_DIVR_MASK 0x00001f00 +#define HB_PLL_RANGE_SHIFT 4 +#define HB_PLL_RANGE_MASK 0x00000070 +#define HB_PLL_BYPASS 0x00000008 +#define HB_PLL_RESET 0x00000004 +#define HB_PLL_EXT_BYPASS 0x00000002 +#define HB_PLL_EXT_ENA 0x00000001 + +#define HB_PLL_VCO_MIN_FREQ 2133000000 +#define HB_PLL_MAX_FREQ HB_PLL_VCO_MIN_FREQ +#define HB_PLL_MIN_FREQ (HB_PLL_VCO_MIN_FREQ / 64) + +#define HB_A9_BCLK_DIV_MASK 0x00000006 +#define HB_A9_BCLK_DIV_SHIFT 1 +#define HB_A9_PCLK_DIV 0x00000001 + +struct hb_clk { + struct clk_hw hw; + void __iomem *reg; + char *parent_name; +}; +#define to_hb_clk(p) container_of(p, struct hb_clk, hw) + +static int clk_pll_prepare(struct clk_hw *hwclk) + { + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg &= ~HB_PLL_RESET; + writel(reg, hbclk->reg); + + while ((readl(hbclk->reg) & HB_PLL_LOCK) == 0) + ; + while ((readl(hbclk->reg) & HB_PLL_LOCK_500) == 0) + ; + + return 0; +} + +static void clk_pll_unprepare(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg |= HB_PLL_RESET; + writel(reg, hbclk->reg); +} + +static int clk_pll_enable(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg |= HB_PLL_EXT_ENA; + writel(reg, hbclk->reg); + + return 0; +} + +static void clk_pll_disable(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg &= ~HB_PLL_EXT_ENA; + writel(reg, hbclk->reg); +} + +static unsigned long clk_pll_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + unsigned long divf, divq, vco_freq, reg; + + reg = readl(hbclk->reg); + if (reg & HB_PLL_EXT_BYPASS) + return parent_rate; + + divf = (reg & HB_PLL_DIVF_MASK) >> HB_PLL_DIVF_SHIFT; + divq = (reg & HB_PLL_DIVQ_MASK) >> HB_PLL_DIVQ_SHIFT; + vco_freq = parent_rate * (divf + 1); + + return vco_freq / (1 << divq); +} + +static void clk_pll_calc(unsigned long rate, unsigned long ref_freq, + u32 *pdivq, u32 *pdivf) +{ + u32 divq, divf; + unsigned long vco_freq; + + if (rate < HB_PLL_MIN_FREQ) + rate = HB_PLL_MIN_FREQ; + if (rate > HB_PLL_MAX_FREQ) + rate = HB_PLL_MAX_FREQ; + + for (divq = 1; divq <= 6; divq++) { + if ((rate * (1 << divq)) >= HB_PLL_VCO_MIN_FREQ) + break; + } + + vco_freq = rate * (1 << divq); + divf = (vco_freq + (ref_freq / 2)) / ref_freq; + divf--; + + *pdivq = divq; + *pdivf = divf; +} + +static long clk_pll_round_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long *parent_rate) +{ + u32 divq, divf; + unsigned long ref_freq = *parent_rate; + + clk_pll_calc(rate, ref_freq, &divq, &divf); + + return (ref_freq * (divf + 1)) / (1 << divq); +} + +static int clk_pll_set_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 divq, divf; + u32 reg; + + clk_pll_calc(rate, parent_rate, &divq, &divf); + + reg = readl(hbclk->reg); + if (divf != ((reg & HB_PLL_DIVF_MASK) >> HB_PLL_DIVF_SHIFT)) { + /* Need to re-lock PLL, so put it into bypass mode */ + reg |= HB_PLL_EXT_BYPASS; + writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg); + + writel(reg | HB_PLL_RESET, hbclk->reg); + reg &= ~(HB_PLL_DIVF_MASK | HB_PLL_DIVQ_MASK); + reg |= (divf << HB_PLL_DIVF_SHIFT) | (divq << HB_PLL_DIVQ_SHIFT); + writel(reg | HB_PLL_RESET, hbclk->reg); + writel(reg, hbclk->reg); + + while ((readl(hbclk->reg) & HB_PLL_LOCK) == 0) + ; + while ((readl(hbclk->reg) & HB_PLL_LOCK_500) == 0) + ; + reg |= HB_PLL_EXT_ENA; + reg &= ~HB_PLL_EXT_BYPASS; + } else { + reg &= ~HB_PLL_DIVQ_MASK; + reg |= divq << HB_PLL_DIVQ_SHIFT; + } + writel(reg, hbclk->reg); + + return 0; +} + +static const struct clk_ops clk_pll_ops = { + .prepare = clk_pll_prepare, + .unprepare = clk_pll_unprepare, + .enable = clk_pll_enable, + .disable = clk_pll_disable, + .recalc_rate = clk_pll_recalc_rate, + .round_rate = clk_pll_round_rate, + .set_rate = clk_pll_set_rate, +}; + +static unsigned long clk_cpu_periphclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div = (readl(hbclk->reg) & HB_A9_PCLK_DIV) ? 8 : 4; + return parent_rate / div; +} + +static const struct clk_ops a9periphclk_ops = { + .recalc_rate = clk_cpu_periphclk_recalc_rate, +}; + +static unsigned long clk_cpu_a9bclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div = (readl(hbclk->reg) & HB_A9_BCLK_DIV_MASK) >> HB_A9_BCLK_DIV_SHIFT; + + return parent_rate / (div + 2); +} + +static const struct clk_ops a9bclk_ops = { + .recalc_rate = clk_cpu_a9bclk_recalc_rate, +}; + +static unsigned long clk_periclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div; + + div = readl(hbclk->reg) & 0x1f; + div++; + div *= 2; + + return parent_rate / div; +} + +static long clk_periclk_round_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long *parent_rate) +{ + u32 div; + + div = *parent_rate / rate; + div++; + div &= ~0x1; + + return *parent_rate / div; +} + +static int clk_periclk_set_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div; + + div = parent_rate / rate; + if (div & 0x1) + return -EINVAL; + + writel(div >> 1, hbclk->reg); + return 0; +} + +static const struct clk_ops periclk_ops = { + .recalc_rate = clk_periclk_recalc_rate, + .round_rate = clk_periclk_round_rate, + .set_rate = clk_periclk_set_rate, +}; + +static __init struct clk *hb_clk_init(struct device_node *node, const struct clk_ops *ops) +{ + u32 reg; + struct clk *clk; + struct hb_clk *hb_clk; + const char *clk_name = node->name; + const char *parent_name; + struct clk_init_data init; + int rc; + + rc = of_property_read_u32(node, "reg", ®); + if (WARN_ON(rc)) + return NULL; + + hb_clk = kzalloc(sizeof(*hb_clk), GFP_KERNEL); + if (WARN_ON(!hb_clk)) + return NULL; + + hb_clk->reg = sregs_base + reg; + + of_property_read_string(node, "clock-output-names", &clk_name); + + init.name = clk_name; + init.ops = ops; + init.flags = 0; + parent_name = of_clk_get_parent_name(node, 0); + init.parent_names = &parent_name; + init.num_parents = 1; + + hb_clk->hw.init = &init; + + clk = clk_register(NULL, &hb_clk->hw); + if (WARN_ON(IS_ERR(clk))) { + kfree(hb_clk); + return NULL; + } + rc = of_clk_add_provider(node, of_clk_src_simple_get, clk); + return clk; +} + +static void __init hb_pll_init(struct device_node *node) +{ + hb_clk_init(node, &clk_pll_ops); +} + +static void __init hb_a9periph_init(struct device_node *node) +{ + hb_clk_init(node, &a9periphclk_ops); +} + +static void __init hb_a9bus_init(struct device_node *node) +{ + struct clk *clk = hb_clk_init(node, &a9bclk_ops); + clk_prepare_enable(clk); +} + +static void __init hb_emmc_init(struct device_node *node) +{ + hb_clk_init(node, &periclk_ops); +} + +static const __initconst struct of_device_id clk_match[] = { + { .compatible = "fixed-clock", .data = of_fixed_clk_setup, }, + { .compatible = "calxeda,hb-pll-clock", .data = hb_pll_init, }, + { .compatible = "calxeda,hb-a9periph-clock", .data = hb_a9periph_init, }, + { .compatible = "calxeda,hb-a9bus-clock", .data = hb_a9bus_init, }, + { .compatible = "calxeda,hb-emmc-clock", .data = hb_emmc_init, }, + {} +}; + +void __init highbank_clocks_init(void) +{ + of_clk_init(clk_match); +} --- linux-3.5.0.orig/drivers/clk/Makefile +++ linux-3.5.0/drivers/clk/Makefile @@ -3,5 +3,6 @@ obj-$(CONFIG_COMMON_CLK) += clk.o clk-fixed-rate.o clk-gate.o \ clk-mux.o clk-divider.o clk-fixed-factor.o # SoCs specific +obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o obj-$(CONFIG_ARCH_MXS) += mxs/ obj-$(CONFIG_PLAT_SPEAR) += spear/ --- linux-3.5.0.orig/drivers/clk/clk-fixed-rate.c +++ linux-3.5.0/drivers/clk/clk-fixed-rate.c @@ -14,6 +14,7 @@ #include #include #include +#include /* * DOC: basic fixed-rate clock that cannot gate @@ -79,3 +80,25 @@ return clk; } + +#ifdef CONFIG_OF +/** + * of_fixed_clk_setup() - Setup function for simple fixed rate clock + */ +void __init of_fixed_clk_setup(struct device_node *node) +{ + struct clk *clk; + const char *clk_name = node->name; + u32 rate; + + if (of_property_read_u32(node, "clock-frequency", &rate)) + return; + + of_property_read_string(node, "clock-output-names", &clk_name); + + clk = clk_register_fixed_rate(NULL, clk_name, NULL, CLK_IS_ROOT, rate); + if (clk) + of_clk_add_provider(node, of_clk_src_simple_get, clk); +} +EXPORT_SYMBOL_GPL(of_fixed_clk_setup); +#endif --- linux-3.5.0.orig/drivers/platform/x86/ibm_rtl.c +++ linux-3.5.0/drivers/platform/x86/ibm_rtl.c @@ -244,7 +244,7 @@ if (force) pr_warn("module loaded by force\n"); /* first ensure that we are running on IBM HW */ - else if (efi_enabled || !dmi_check_system(ibm_rtl_dmi_table)) + else if (efi_enabled(EFI_BOOT) || !dmi_check_system(ibm_rtl_dmi_table)) return -ENODEV; /* Get the address for the Extended BIOS Data Area */ --- linux-3.5.0.orig/drivers/platform/x86/asus-nb-wmi.c +++ linux-3.5.0/drivers/platform/x86/asus-nb-wmi.c @@ -94,6 +94,10 @@ { KE_KEY, 0x8A, { KEY_PROG1 } }, { KE_KEY, 0x95, { KEY_MEDIA } }, { KE_KEY, 0x99, { KEY_PHONE } }, + { KE_KEY, 0xA0, { KEY_SWITCHVIDEOMODE } }, /* SDSP HDMI only */ + { KE_KEY, 0xA1, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + HDMI */ + { KE_KEY, 0xA2, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + HDMI */ + { KE_KEY, 0xA3, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + HDMI */ { KE_KEY, 0xb5, { KEY_CALC } }, { KE_KEY, 0xc4, { KEY_KBDILLUMUP } }, { KE_KEY, 0xc5, { KEY_KBDILLUMDOWN } }, --- linux-3.5.0.orig/drivers/platform/x86/asus-wmi.c +++ linux-3.5.0/drivers/platform/x86/asus-wmi.c @@ -1467,14 +1467,9 @@ */ if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS, 0, 0, NULL)) asus->dsts_id = ASUS_WMI_METHODID_DSTS; - else if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS2, 0, 0, NULL)) + else asus->dsts_id = ASUS_WMI_METHODID_DSTS2; - if (!asus->dsts_id) { - pr_err("Can't find DSTS"); - return -ENODEV; - } - /* CWAP allow to define the behavior of the Fn+F2 key, * this method doesn't seems to be present on Eee PCs */ if (asus->driver->quirks->wapf >= 0) --- linux-3.5.0.orig/drivers/platform/x86/acer-wmi.c +++ linux-3.5.0/drivers/platform/x86/acer-wmi.c @@ -95,6 +95,7 @@ enum acer_wmi_event_ids { WMID_HOTKEY_EVENT = 0x1, + WMID_ACCEL_EVENT = 0x5, }; static const struct key_entry acer_wmi_keymap[] = { @@ -130,6 +131,7 @@ }; static struct input_dev *acer_wmi_input_dev; +static struct input_dev *acer_wmi_accel_dev; struct event_return_value { u8 function; @@ -200,6 +202,7 @@ #define ACER_CAP_BLUETOOTH (1<<2) #define ACER_CAP_BRIGHTNESS (1<<3) #define ACER_CAP_THREEG (1<<4) +#define ACER_CAP_ACCEL (1<<5) #define ACER_CAP_ANY (0xFFFFFFFF) /* @@ -1399,6 +1402,60 @@ } /* + * Accelerometer device + */ +static acpi_handle gsensor_handle; + +static int acer_gsensor_init(void) +{ + acpi_status status; + struct acpi_buffer output; + union acpi_object out_obj; + + output.length = sizeof(out_obj); + output.pointer = &out_obj; + status = acpi_evaluate_object(gsensor_handle, "_INI", NULL, &output); + if (ACPI_FAILURE(status)) + return -1; + + return 0; +} + +static int acer_gsensor_open(struct input_dev *input) +{ + return acer_gsensor_init(); +} + +static int acer_gsensor_event(void) +{ + acpi_status status; + struct acpi_buffer output; + union acpi_object out_obj[5]; + + if (!has_cap(ACER_CAP_ACCEL)) + return -1; + + output.length = sizeof(out_obj); + output.pointer = out_obj; + + status = acpi_evaluate_object(gsensor_handle, "RDVL", NULL, &output); + if (ACPI_FAILURE(status)) + return -1; + + if (out_obj->package.count != 4) + return -1; + + input_report_abs(acer_wmi_accel_dev, ABS_X, + (s16)out_obj->package.elements[0].integer.value); + input_report_abs(acer_wmi_accel_dev, ABS_Y, + (s16)out_obj->package.elements[1].integer.value); + input_report_abs(acer_wmi_accel_dev, ABS_Z, + (s16)out_obj->package.elements[2].integer.value); + input_sync(acer_wmi_accel_dev); + return 0; +} + +/* * Rfkill devices */ static void acer_rfkill_update(struct work_struct *ignored); @@ -1673,6 +1730,9 @@ 1, true); } break; + case WMID_ACCEL_EVENT: + acer_gsensor_event(); + break; default: pr_warn("Unknown function number - %d - %d\n", return_value.function, return_value.key_num); @@ -1758,6 +1818,73 @@ return status; } +static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level, + void *ctx, void **retval) +{ + *(acpi_handle *)retval = ah; + return AE_OK; +} + +static int __init acer_wmi_get_handle(const char *name, const char *prop, + acpi_handle *ah) +{ + acpi_status status; + acpi_handle handle; + + BUG_ON(!name || !ah); + + handle = 0; + status = acpi_get_devices(prop, acer_wmi_get_handle_cb, + (void *)name, &handle); + + if (ACPI_SUCCESS(status)) { + *ah = handle; + return 0; + } else { + return -ENODEV; + } +} + +static int __init acer_wmi_accel_setup(void) +{ + int err; + + err = acer_wmi_get_handle("SENR", "BST0001", &gsensor_handle); + if (err) + return err; + + interface->capability |= ACER_CAP_ACCEL; + + acer_wmi_accel_dev = input_allocate_device(); + if (!acer_wmi_accel_dev) + return -ENOMEM; + + acer_wmi_accel_dev->open = acer_gsensor_open; + + acer_wmi_accel_dev->name = "Acer BMA150 accelerometer"; + acer_wmi_accel_dev->phys = "wmi/input1"; + acer_wmi_accel_dev->id.bustype = BUS_HOST; + acer_wmi_accel_dev->evbit[0] = BIT_MASK(EV_ABS); + input_set_abs_params(acer_wmi_accel_dev, ABS_X, -16384, 16384, 0, 0); + input_set_abs_params(acer_wmi_accel_dev, ABS_Y, -16384, 16384, 0, 0); + input_set_abs_params(acer_wmi_accel_dev, ABS_Z, -16384, 16384, 0, 0); + + err = input_register_device(acer_wmi_accel_dev); + if (err) + goto err_free_dev; + + return 0; + +err_free_dev: + input_free_device(acer_wmi_accel_dev); + return err; +} + +static void acer_wmi_accel_destroy(void) +{ + input_unregister_device(acer_wmi_accel_dev); +} + static int __init acer_wmi_input_setup(void) { acpi_status status; @@ -1913,6 +2040,9 @@ if (has_cap(ACER_CAP_BRIGHTNESS)) set_u32(data->brightness, ACER_CAP_BRIGHTNESS); + if (has_cap(ACER_CAP_ACCEL)) + acer_gsensor_init(); + return 0; } @@ -2090,6 +2220,8 @@ return err; } + acer_wmi_accel_setup(); + err = platform_driver_register(&acer_platform_driver); if (err) { pr_err("Unable to register platform driver\n"); @@ -2133,6 +2265,8 @@ error_platform_register: if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); + if (has_cap(ACER_CAP_ACCEL)) + acer_wmi_accel_destroy(); return err; } @@ -2142,6 +2276,9 @@ if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); + if (has_cap(ACER_CAP_ACCEL)) + acer_wmi_accel_destroy(); + remove_sysfs(acer_platform_device); remove_debugfs(); platform_device_unregister(acer_platform_device); --- linux-3.5.0.orig/drivers/platform/x86/hp_accel.c +++ linux-3.5.0/drivers/platform/x86/hp_accel.c @@ -362,7 +362,8 @@ static int lis3lv02d_resume(struct acpi_device *device) { - return lis3lv02d_poweron(&lis3_dev); + lis3lv02d_poweron(&lis3_dev); + return 0; } #else #define lis3lv02d_suspend NULL --- linux-3.5.0.orig/drivers/platform/x86/asus-laptop.c +++ linux-3.5.0/drivers/platform/x86/asus-laptop.c @@ -860,12 +860,14 @@ /* * The HWRS method return informations about the hardware. * 0x80 bit is for WLAN, 0x100 for Bluetooth. + * 0x40 for WWAN, 0x10 for WIMAX. * The significance of others is yet to be found. - * If we don't find the method, we assume the device are present. + * We don't currently use this for device detection, and it + * takes several seconds to run on some systems. */ - rv = acpi_evaluate_integer(asus->handle, "HRWS", NULL, &temp); + rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp); if (!ACPI_FAILURE(rv)) - len += sprintf(page + len, "HRWS value : %#x\n", + len += sprintf(page + len, "HWRS value : %#x\n", (uint) temp); /* * Another value for userspace: the ASYM method returns 0x02 for @@ -1682,7 +1684,7 @@ { struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; union acpi_object *model = NULL; - unsigned long long bsts_result, hwrs_result; + unsigned long long bsts_result; char *string = NULL; acpi_status status; @@ -1744,17 +1746,6 @@ if (*string) pr_notice(" %s model detected\n", string); - /* - * The HWRS method return informations about the hardware. - * 0x80 bit is for WLAN, 0x100 for Bluetooth, - * 0x40 for WWAN, 0x10 for WIMAX. - * The significance of others is yet to be found. - */ - status = - acpi_evaluate_integer(asus->handle, "HRWS", NULL, &hwrs_result); - if (!ACPI_FAILURE(status)) - pr_notice(" HRWS returned %x", (int)hwrs_result); - if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL)) asus->have_rsts = true; --- linux-3.5.0.orig/drivers/platform/x86/dell-wmi.c +++ linux-3.5.0/drivers/platform/x86/dell-wmi.c @@ -165,7 +165,7 @@ u16 *buffer_entry = (u16 *)obj->buffer.pointer; if (dell_new_hk_type && (buffer_entry[1] != 0x10)) { - pr_info("Received unknown WMI event (0x%x)\n", + pr_debug("Received unknown WMI event (0x%x)\n", buffer_entry[1]); kfree(obj); return; --- linux-3.5.0.orig/drivers/platform/x86/Kconfig +++ linux-3.5.0/drivers/platform/x86/Kconfig @@ -758,8 +758,11 @@ config APPLE_GMUX tristate "Apple Gmux Driver" + depends on ACPI depends on PNP - select BACKLIGHT_CLASS_DEVICE + depends on BACKLIGHT_CLASS_DEVICE + depends on BACKLIGHT_APPLE=n || BACKLIGHT_APPLE + depends on ACPI_VIDEO=n || ACPI_VIDEO ---help--- This driver provides support for the gmux device found on many Apple laptops, which controls the display mux for the hybrid --- linux-3.5.0.orig/drivers/platform/x86/sony-laptop.c +++ linux-3.5.0/drivers/platform/x86/sony-laptop.c @@ -784,28 +784,29 @@ static int sony_nc_buffer_call(acpi_handle handle, char *name, u64 *value, void *buffer, size_t buflen) { + int ret = 0; size_t len = len; union acpi_object *object = __call_snc_method(handle, name, value); if (!object) return -EINVAL; - if (object->type == ACPI_TYPE_BUFFER) + if (object->type == ACPI_TYPE_BUFFER) { len = MIN(buflen, object->buffer.length); + memcpy(buffer, object->buffer.pointer, len); - else if (object->type == ACPI_TYPE_INTEGER) + } else if (object->type == ACPI_TYPE_INTEGER) { len = MIN(buflen, sizeof(object->integer.value)); + memcpy(buffer, &object->integer.value, len); - else { + } else { pr_warn("Invalid acpi_object: expected 0x%x got 0x%x\n", ACPI_TYPE_BUFFER, object->type); - kfree(object); - return -EINVAL; + ret = -EINVAL; } - memcpy(buffer, object->buffer.pointer, len); kfree(object); - return 0; + return ret; } struct sony_nc_handles { @@ -1527,7 +1528,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); } @@ -2802,6 +2803,10 @@ struct sonypi_event *events; }; +struct sony_pic_quirk_entry { + u8 set_wwan_power; +}; + struct sony_pic_dev { struct acpi_device *acpi_dev; struct sony_pic_irq *cur_irq; @@ -2812,6 +2817,7 @@ struct sonypi_eventtypes *event_types; int (*handle_irq)(const u8, const u8); int model; + struct sony_pic_quirk_entry *quirks; u16 evport_offset; u8 camera_power; u8 bluetooth_power; @@ -4246,6 +4252,12 @@ if (result) goto err_remove_pf; + if (spic_dev.quirks && spic_dev.quirks->set_wwan_power) { + /* + * Power isn't enabled by default. + */ + __sony_pic_set_wwanpower(1); + } return 0; err_remove_pf: @@ -4316,6 +4328,16 @@ }, }; +static struct sony_pic_quirk_entry sony_pic_vaio_vgn = { + .set_wwan_power = 1, +}; + +static int dmi_matched(const struct dmi_system_id *dmi) +{ + spic_dev.quirks = dmi->driver_data; + return 0; +} + static struct dmi_system_id __initdata sonypi_dmi_table[] = { { .ident = "Sony Vaio", @@ -4330,6 +4352,8 @@ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), DMI_MATCH(DMI_PRODUCT_NAME, "VGN-"), }, + .callback = dmi_matched, + .driver_data = &sony_pic_vaio_vgn, }, { } }; --- linux-3.5.0.orig/drivers/platform/x86/msi-wmi.c +++ linux-3.5.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-3.5.0.orig/drivers/platform/x86/intel_ips.c +++ linux-3.5.0/drivers/platform/x86/intel_ips.c @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include "intel_ips.h" @@ -250,6 +251,8 @@ static const int IPS_ADJUST_PERIOD = 5000; /* ms */ static bool late_i915_load = false; +int i915_hsw_enabled = 0; +EXPORT_SYMBOL(i915_hsw_enabled); /* For initial average collection */ static const int IPS_SAMPLE_PERIOD = 200; /* ms */ @@ -1423,32 +1426,62 @@ */ static bool ips_get_i915_syms(struct ips_driver *ips) { - ips->read_mch_val = symbol_get(i915_read_mch_val); - if (!ips->read_mch_val) - goto out_err; - ips->gpu_raise = symbol_get(i915_gpu_raise); - if (!ips->gpu_raise) - goto out_put_mch; - ips->gpu_lower = symbol_get(i915_gpu_lower); - if (!ips->gpu_lower) - goto out_put_raise; - ips->gpu_busy = symbol_get(i915_gpu_busy); - if (!ips->gpu_busy) - goto out_put_lower; - ips->gpu_turbo_disable = symbol_get(i915_gpu_turbo_disable); - if (!ips->gpu_turbo_disable) - goto out_put_busy; + if (i915_hsw_enabled) { + ips->read_mch_val = symbol_get(i915_hsw_read_mch_val); + if (!ips->read_mch_val) + goto out_err; + ips->gpu_raise = symbol_get(i915_hsw_gpu_raise); + if (!ips->gpu_raise) + goto out_put_mch; + ips->gpu_lower = symbol_get(i915_hsw_gpu_lower); + if (!ips->gpu_lower) + goto out_put_raise; + ips->gpu_busy = symbol_get(i915_hsw_gpu_busy); + if (!ips->gpu_busy) + goto out_put_lower; + ips->gpu_turbo_disable = symbol_get(i915_hsw_gpu_turbo_disable); + if (!ips->gpu_turbo_disable) + goto out_put_busy; + } else { + ips->read_mch_val = symbol_get(i915_read_mch_val); + if (!ips->read_mch_val) + goto out_err; + ips->gpu_raise = symbol_get(i915_gpu_raise); + if (!ips->gpu_raise) + goto out_put_mch; + ips->gpu_lower = symbol_get(i915_gpu_lower); + if (!ips->gpu_lower) + goto out_put_raise; + ips->gpu_busy = symbol_get(i915_gpu_busy); + if (!ips->gpu_busy) + goto out_put_lower; + ips->gpu_turbo_disable = symbol_get(i915_gpu_turbo_disable); + if (!ips->gpu_turbo_disable) + goto out_put_busy; + } return true; out_put_busy: - symbol_put(i915_gpu_busy); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_busy); + else + symbol_put(i915_gpu_busy); out_put_lower: - symbol_put(i915_gpu_lower); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_lower); + else + symbol_put(i915_gpu_lower); out_put_raise: - symbol_put(i915_gpu_raise); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_raise); + else + symbol_put(i915_gpu_raise); out_put_mch: - symbol_put(i915_read_mch_val); + if (i915_hsw_enabled) + symbol_put(i915_hsw_read_mch_val); + else + symbol_put(i915_read_mch_val); out_err: return false; } --- linux-3.5.0.orig/drivers/platform/x86/thinkpad_acpi.c +++ linux-3.5.0/drivers/platform/x86/thinkpad_acpi.c @@ -8662,6 +8662,13 @@ tp->model_str = kstrdup(s, GFP_KERNEL); if (!tp->model_str) return -ENOMEM; + } else { + s = dmi_get_system_info(DMI_BIOS_VENDOR); + if (s && !(strnicmp(s, "Lenovo", 6))) { + tp->model_str = kstrdup(s, GFP_KERNEL); + if (!tp->model_str) + return -ENOMEM; + } } s = dmi_get_system_info(DMI_PRODUCT_NAME); --- linux-3.5.0.orig/drivers/platform/x86/apple-gmux.c +++ linux-3.5.0/drivers/platform/x86/apple-gmux.c @@ -2,6 +2,7 @@ * Gmux driver for Apple laptops * * Copyright (C) Canonical Ltd. + * Copyright (C) 2010-2012 Andreas Heider * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -18,16 +19,30 @@ #include #include #include +#include +#include +#include #include #include struct apple_gmux_data { unsigned long iostart; unsigned long iolen; + bool indexed; + struct mutex index_lock; struct backlight_device *bdev; + + /* switcheroo data */ + acpi_handle dhandle; + int gpe; + enum vga_switcheroo_client_id resume_client_id; + enum vga_switcheroo_state power_state; + struct completion powerchange_done; }; +static struct apple_gmux_data *apple_gmux_data; + /* * gmux port offsets. Many of these are not yet used, but may be in the * future, and it's useful to have them documented here anyhow. @@ -45,6 +60,9 @@ #define GMUX_PORT_DISCRETE_POWER 0x50 #define GMUX_PORT_MAX_BRIGHTNESS 0x70 #define GMUX_PORT_BRIGHTNESS 0x74 +#define GMUX_PORT_VALUE 0xc2 +#define GMUX_PORT_READ 0xd0 +#define GMUX_PORT_WRITE 0xd4 #define GMUX_MIN_IO_LEN (GMUX_PORT_BRIGHTNESS + 4) @@ -59,22 +77,174 @@ #define GMUX_BRIGHTNESS_MASK 0x00ffffff #define GMUX_MAX_BRIGHTNESS GMUX_BRIGHTNESS_MASK -static inline u8 gmux_read8(struct apple_gmux_data *gmux_data, int port) +static u8 gmux_pio_read8(struct apple_gmux_data *gmux_data, int port) { return inb(gmux_data->iostart + port); } -static inline void gmux_write8(struct apple_gmux_data *gmux_data, int port, +static void gmux_pio_write8(struct apple_gmux_data *gmux_data, int port, u8 val) { outb(val, gmux_data->iostart + port); } -static inline u32 gmux_read32(struct apple_gmux_data *gmux_data, int port) +static u32 gmux_pio_read32(struct apple_gmux_data *gmux_data, int port) { return inl(gmux_data->iostart + port); } +static void gmux_pio_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + int i; + u8 tmpval; + + for (i = 0; i < 4; i++) { + tmpval = (val >> (i * 8)) & 0xff; + outb(tmpval, gmux_data->iostart + port + i); + } +} + +static int gmux_index_wait_ready(struct apple_gmux_data *gmux_data) +{ + int i = 200; + u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + + while (i && (gwr & 0x01)) { + inb(gmux_data->iostart + GMUX_PORT_READ); + gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + udelay(100); + i--; + } + + return !!i; +} + +static int gmux_index_wait_complete(struct apple_gmux_data *gmux_data) +{ + int i = 200; + u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + + while (i && !(gwr & 0x01)) { + gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + udelay(100); + i--; + } + + if (gwr & 0x01) + inb(gmux_data->iostart + GMUX_PORT_READ); + + return !!i; +} + +static u8 gmux_index_read8(struct apple_gmux_data *gmux_data, int port) +{ + u8 val; + + mutex_lock(&gmux_data->index_lock); + gmux_index_wait_ready(gmux_data); + outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); + gmux_index_wait_complete(gmux_data); + val = inb(gmux_data->iostart + GMUX_PORT_VALUE); + mutex_unlock(&gmux_data->index_lock); + + return val; +} + +static void gmux_index_write8(struct apple_gmux_data *gmux_data, int port, + u8 val) +{ + mutex_lock(&gmux_data->index_lock); + outb(val, gmux_data->iostart + GMUX_PORT_VALUE); + gmux_index_wait_ready(gmux_data); + outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); + gmux_index_wait_complete(gmux_data); + mutex_unlock(&gmux_data->index_lock); +} + +static u32 gmux_index_read32(struct apple_gmux_data *gmux_data, int port) +{ + u32 val; + + mutex_lock(&gmux_data->index_lock); + gmux_index_wait_ready(gmux_data); + outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); + gmux_index_wait_complete(gmux_data); + val = inl(gmux_data->iostart + GMUX_PORT_VALUE); + mutex_unlock(&gmux_data->index_lock); + + return val; +} + +static void gmux_index_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + int i; + u8 tmpval; + + mutex_lock(&gmux_data->index_lock); + + for (i = 0; i < 4; i++) { + tmpval = (val >> (i * 8)) & 0xff; + outb(tmpval, gmux_data->iostart + GMUX_PORT_VALUE + i); + } + + gmux_index_wait_ready(gmux_data); + outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); + gmux_index_wait_complete(gmux_data); + mutex_unlock(&gmux_data->index_lock); +} + +static u8 gmux_read8(struct apple_gmux_data *gmux_data, int port) +{ + if (gmux_data->indexed) + return gmux_index_read8(gmux_data, port); + else + return gmux_pio_read8(gmux_data, port); +} + +static void gmux_write8(struct apple_gmux_data *gmux_data, int port, u8 val) +{ + if (gmux_data->indexed) + gmux_index_write8(gmux_data, port, val); + else + gmux_pio_write8(gmux_data, port, val); +} + +static u32 gmux_read32(struct apple_gmux_data *gmux_data, int port) +{ + if (gmux_data->indexed) + return gmux_index_read32(gmux_data, port); + else + return gmux_pio_read32(gmux_data, port); +} + +static void gmux_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + if (gmux_data->indexed) + gmux_index_write32(gmux_data, port, val); + else + gmux_pio_write32(gmux_data, port, val); +} + +static bool gmux_is_indexed(struct apple_gmux_data *gmux_data) +{ + u16 val; + + outb(0xaa, gmux_data->iostart + 0xcc); + outb(0x55, gmux_data->iostart + 0xcd); + outb(0x00, gmux_data->iostart + 0xce); + + val = inb(gmux_data->iostart + 0xcc) | + (inb(gmux_data->iostart + 0xcd) << 8); + + if (val == 0x55aa) + return true; + + return false; +} + static int gmux_get_brightness(struct backlight_device *bd) { struct apple_gmux_data *gmux_data = bl_get_data(bd); @@ -90,16 +260,7 @@ if (bd->props.state & BL_CORE_SUSPENDED) return 0; - /* - * Older gmux versions require writing out lower bytes first then - * setting the upper byte to 0 to flush the values. Newer versions - * accept a single u32 write, but the old method also works, so we - * just use the old method for all gmux versions. - */ - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS, brightness); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 1, brightness >> 8); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 2, brightness >> 16); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 3, 0); + gmux_write32(gmux_data, GMUX_PORT_BRIGHTNESS, brightness); return 0; } @@ -110,6 +271,146 @@ .update_status = gmux_update_status, }; +static int gmux_switchto(enum vga_switcheroo_client_id id) +{ + if (id == VGA_SWITCHEROO_IGD) { + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DDC, 1); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DISPLAY, 2); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 2); + } else { + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DDC, 2); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DISPLAY, 3); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 3); + } + + return 0; +} + +static int gmux_set_discrete_state(struct apple_gmux_data *gmux_data, + enum vga_switcheroo_state state) +{ + INIT_COMPLETION(gmux_data->powerchange_done); + + if (state == VGA_SWITCHEROO_ON) { + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 3); + pr_debug("Discrete card powered up\n"); + } else { + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 0); + pr_debug("Discrete card powered down\n"); + } + + gmux_data->power_state = state; + + if (gmux_data->gpe >= 0 && + !wait_for_completion_interruptible_timeout(&gmux_data->powerchange_done, + msecs_to_jiffies(200))) + pr_warn("Timeout waiting for gmux switch to complete\n"); + + return 0; +} + +static int gmux_set_power_state(enum vga_switcheroo_client_id id, + enum vga_switcheroo_state state) +{ + if (id == VGA_SWITCHEROO_IGD) + return 0; + + return gmux_set_discrete_state(apple_gmux_data, state); +} + +static int gmux_get_client_id(struct pci_dev *pdev) +{ + /* + * Early Macbook Pros with switchable graphics use nvidia + * integrated graphics. Hardcode that the 9400M is integrated. + */ + if (pdev->vendor == PCI_VENDOR_ID_INTEL) + return VGA_SWITCHEROO_IGD; + else if (pdev->vendor == PCI_VENDOR_ID_NVIDIA && + pdev->device == 0x0863) + return VGA_SWITCHEROO_IGD; + else + return VGA_SWITCHEROO_DIS; +} + +static enum vga_switcheroo_client_id +gmux_active_client(struct apple_gmux_data *gmux_data) +{ + if (gmux_read8(gmux_data, GMUX_PORT_SWITCH_DISPLAY) == 2) + return VGA_SWITCHEROO_IGD; + + return VGA_SWITCHEROO_DIS; +} + +static struct vga_switcheroo_handler gmux_handler = { + .switchto = gmux_switchto, + .power_state = gmux_set_power_state, + .get_client_id = gmux_get_client_id, +}; + +static inline void gmux_disable_interrupts(struct apple_gmux_data *gmux_data) +{ + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, + GMUX_INTERRUPT_DISABLE); +} + +static inline void gmux_enable_interrupts(struct apple_gmux_data *gmux_data) +{ + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, + GMUX_INTERRUPT_ENABLE); +} + +static inline u8 gmux_interrupt_get_status(struct apple_gmux_data *gmux_data) +{ + return gmux_read8(gmux_data, GMUX_PORT_INTERRUPT_STATUS); +} + +static void gmux_clear_interrupts(struct apple_gmux_data *gmux_data) +{ + u8 status; + + /* to clear interrupts write back current status */ + status = gmux_interrupt_get_status(gmux_data); + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_STATUS, status); +} + +static void gmux_notify_handler(acpi_handle device, u32 value, void *context) +{ + u8 status; + struct pnp_dev *pnp = (struct pnp_dev *)context; + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + + status = gmux_interrupt_get_status(gmux_data); + gmux_disable_interrupts(gmux_data); + pr_debug("Notify handler called: status %d\n", status); + + gmux_clear_interrupts(gmux_data); + gmux_enable_interrupts(gmux_data); + + if (status & GMUX_INTERRUPT_STATUS_POWER) + complete(&gmux_data->powerchange_done); +} + +static int gmux_suspend(struct pnp_dev *pnp, pm_message_t state) +{ + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + gmux_data->resume_client_id = gmux_active_client(gmux_data); + gmux_disable_interrupts(gmux_data); + return 0; +} + +static int gmux_resume(struct pnp_dev *pnp) +{ + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + gmux_enable_interrupts(gmux_data); + gmux_switchto(gmux_data->resume_client_id); + if (gmux_data->power_state == VGA_SWITCHEROO_OFF) + gmux_set_discrete_state(gmux_data, gmux_data->power_state); + return 0; +} + static int __devinit gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { @@ -119,6 +420,11 @@ struct backlight_device *bdev; u8 ver_major, ver_minor, ver_release; int ret = -ENXIO; + acpi_status status; + unsigned long long gpe; + + if (apple_gmux_data) + return -EBUSY; gmux_data = kzalloc(sizeof(*gmux_data), GFP_KERNEL); if (!gmux_data) @@ -147,22 +453,29 @@ } /* - * On some machines the gmux is in ACPI even thought the machine - * doesn't really have a gmux. Check for invalid version information - * to detect this. + * Invalid version information may indicate either that the gmux + * device isn't present or that it's a new one that uses indexed + * io */ + ver_major = gmux_read8(gmux_data, GMUX_PORT_VERSION_MAJOR); ver_minor = gmux_read8(gmux_data, GMUX_PORT_VERSION_MINOR); ver_release = gmux_read8(gmux_data, GMUX_PORT_VERSION_RELEASE); if (ver_major == 0xff && ver_minor == 0xff && ver_release == 0xff) { - pr_info("gmux device not present\n"); - ret = -ENODEV; - goto err_release; + if (gmux_is_indexed(gmux_data)) { + mutex_init(&gmux_data->index_lock); + gmux_data->indexed = true; + } else { + pr_info("gmux device not present\n"); + ret = -ENODEV; + goto err_release; + } + pr_info("Found indexed gmux\n"); + } else { + pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor, + ver_release); } - pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor, - ver_release); - memset(&props, 0, sizeof(props)); props.type = BACKLIGHT_PLATFORM; props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS); @@ -193,11 +506,67 @@ * backlight control and supports more levels than other options. * Disable the other backlight choices. */ +#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE) acpi_video_unregister(); +#endif apple_bl_unregister(); + gmux_data->power_state = VGA_SWITCHEROO_ON; + + gmux_data->dhandle = DEVICE_ACPI_HANDLE(&pnp->dev); + if (!gmux_data->dhandle) { + pr_err("Cannot find acpi handle for pnp device %s\n", + dev_name(&pnp->dev)); + ret = -ENODEV; + goto err_notify; + } + + status = acpi_evaluate_integer(gmux_data->dhandle, "GMGP", NULL, &gpe); + if (ACPI_SUCCESS(status)) { + gmux_data->gpe = (int)gpe; + + status = acpi_install_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler, pnp); + if (ACPI_FAILURE(status)) { + pr_err("Install notify handler failed: %s\n", + acpi_format_exception(status)); + ret = -ENODEV; + goto err_notify; + } + + status = acpi_enable_gpe(NULL, gmux_data->gpe); + if (ACPI_FAILURE(status)) { + pr_err("Cannot enable gpe: %s\n", + acpi_format_exception(status)); + goto err_enable_gpe; + } + } else { + pr_warn("No GPE found for gmux\n"); + gmux_data->gpe = -1; + } + + if (vga_switcheroo_register_handler(&gmux_handler)) { + ret = -ENODEV; + goto err_register_handler; + } + + init_completion(&gmux_data->powerchange_done); + apple_gmux_data = gmux_data; + gmux_enable_interrupts(gmux_data); + return 0; +err_register_handler: + if (gmux_data->gpe >= 0) + acpi_disable_gpe(NULL, gmux_data->gpe); +err_enable_gpe: + if (gmux_data->gpe >= 0) + acpi_remove_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler); +err_notify: + backlight_device_unregister(bdev); err_release: release_region(gmux_data->iostart, gmux_data->iolen); err_free: @@ -209,11 +578,24 @@ { struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + vga_switcheroo_unregister_handler(); + gmux_disable_interrupts(gmux_data); + if (gmux_data->gpe >= 0) { + acpi_disable_gpe(NULL, gmux_data->gpe); + acpi_remove_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler); + } + backlight_device_unregister(gmux_data->bdev); + release_region(gmux_data->iostart, gmux_data->iolen); + apple_gmux_data = NULL; kfree(gmux_data); +#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE) acpi_video_register(); +#endif apple_bl_register(); } @@ -227,6 +609,8 @@ .probe = gmux_probe, .remove = __devexit_p(gmux_remove), .id_table = gmux_device_ids, + .suspend = gmux_suspend, + .resume = gmux_resume }; static int __init apple_gmux_init(void) --- linux-3.5.0.orig/drivers/platform/x86/samsung-laptop.c +++ linux-3.5.0/drivers/platform/x86/samsung-laptop.c @@ -26,6 +26,7 @@ #include #include #include +#include #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) #include #endif @@ -1506,6 +1507,26 @@ }, .driver_data = &samsung_broken_acpi_video, }, + { + .callback = samsung_dmi_matched, + .ident = "N250P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), + DMI_MATCH(DMI_BOARD_NAME, "N250P"), + }, + .driver_data = &samsung_broken_acpi_video, + }, + { + .callback = samsung_dmi_matched, + .ident = "N250P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), + DMI_MATCH(DMI_BOARD_NAME, "N250P"), + }, + .driver_data = &samsung_broken_acpi_video, + }, { }, }; MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); @@ -1517,6 +1538,9 @@ struct samsung_laptop *samsung; int ret; + if (efi_enabled(EFI_BOOT)) + return -ENODEV; + quirks = &samsung_unknown; if (!force && !dmi_check_system(samsung_dmi_table)) return -ENODEV; --- linux-3.5.0.orig/drivers/nfc/pn533.c +++ linux-3.5.0/drivers/nfc/pn533.c @@ -1288,11 +1288,14 @@ static int pn533_in_dep_link_up_complete(struct pn533 *dev, void *arg, u8 *params, int params_len) { - struct pn533_cmd_jump_dep *cmd; struct pn533_cmd_jump_dep_response *resp; struct nfc_target nfc_target; u8 target_gt_len; int rc; + struct pn533_cmd_jump_dep *cmd = (struct pn533_cmd_jump_dep *)arg; + u8 active = cmd->active; + + kfree(arg); if (params_len == -ENOENT) { nfc_dev_dbg(&dev->interface->dev, ""); @@ -1314,7 +1317,6 @@ } resp = (struct pn533_cmd_jump_dep_response *) params; - cmd = (struct pn533_cmd_jump_dep *) arg; rc = resp->status & PN533_CMD_RET_MASK; if (rc != PN533_CMD_RET_SUCCESS) { nfc_dev_err(&dev->interface->dev, @@ -1344,7 +1346,7 @@ if (rc == 0) rc = nfc_dep_link_is_up(dev->nfc_dev, dev->nfc_dev->targets[0].idx, - !cmd->active, NFC_RF_INITIATOR); + !active, NFC_RF_INITIATOR); return 0; } @@ -1395,12 +1397,8 @@ rc = pn533_send_cmd_frame_async(dev, dev->out_frame, dev->in_frame, dev->in_maxlen, pn533_in_dep_link_up_complete, cmd, GFP_KERNEL); - if (rc) - goto out; - - -out: - kfree(cmd); + if (rc < 0) + kfree(cmd); return rc; } --- linux-3.5.0.orig/drivers/acpi/video.c +++ linux-3.5.0/drivers/acpi/video.c @@ -73,6 +73,14 @@ module_param(brightness_switch_enabled, bool, 0644); /* + * The Default is to let the OS handle brightness autoswitching due to + * AC/battery status changes. On some laptops (MSI Wind) this doesn't + * work so we need a workaround. + */ +static int brightness_autoswitch_via_bios = 0; +module_param(brightness_autoswitch_via_bios, bool, 0644); + +/* * By default, we don't allow duplicate ACPI video bus devices * under the same VGA controller */ @@ -389,6 +397,12 @@ return 0; } +static int video_ignore_initial_backlight(const struct dmi_system_id *d) +{ + use_bios_initial_backlight = 0; + return 0; +} + static struct dmi_system_id video_dmi_table[] __initdata = { /* * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121 @@ -433,6 +447,46 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7720"), }, }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP Folio 13-2000", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13 - 2000 Notebook PC"), + }, + }, + { + .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"), + }, + }, {} }; @@ -1345,12 +1399,15 @@ acpi_video_bus_get_devices(struct acpi_video_bus *video, struct acpi_device *device) { - int status; + int status = 0; struct acpi_device *dev; - status = acpi_video_device_enumerate(video); - if (status) - return status; + /* + * There are systems where video module known to work fine regardless + * of broken _DOD and ignoring returned value here doesn't cause + * any issues later. + */ + acpi_video_device_enumerate(video); list_for_each_entry(dev, &device->children, node) { @@ -1425,7 +1482,7 @@ static int acpi_video_bus_start_devices(struct acpi_video_bus *video) { - return acpi_video_bus_DOS(video, 0, 0); + return acpi_video_bus_DOS(video, 0, !brightness_autoswitch_via_bios); } static int acpi_video_bus_stop_devices(struct acpi_video_bus *video) @@ -1448,8 +1505,7 @@ case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch, * most likely via hotkey. */ acpi_bus_generate_proc_event(device, event, 0); - if (!acpi_notifier_call_chain(device, event, 0)) - keycode = KEY_SWITCHVIDEOMODE; + keycode = KEY_SWITCHVIDEOMODE; break; case ACPI_VIDEO_NOTIFY_PROBE: /* User plugged in or removed a video @@ -1479,8 +1535,9 @@ break; } - if (event != ACPI_VIDEO_NOTIFY_SWITCH) - acpi_notifier_call_chain(device, event, 0); + if (acpi_notifier_call_chain(device, event, 0)) + /* Something vetoed the keypress. */ + keycode = 0; if (keycode) { input_report_key(input, keycode, 1); --- linux-3.5.0.orig/drivers/acpi/ac.c +++ linux-3.5.0/drivers/acpi/ac.c @@ -292,7 +292,9 @@ ac->charger.properties = ac_props; ac->charger.num_properties = ARRAY_SIZE(ac_props); ac->charger.get_property = get_ac_property; - power_supply_register(&ac->device->dev, &ac->charger); + result = power_supply_register(&ac->device->dev, &ac->charger); + if (result) + goto end; printk(KERN_INFO PREFIX "%s [%s] (%s)\n", acpi_device_name(device), acpi_device_bid(device), --- linux-3.5.0.orig/drivers/acpi/sleep.c +++ linux-3.5.0/drivers/acpi/sleep.c @@ -137,6 +137,188 @@ old_suspend_ordering = true; } +static int __init init_old_suspend_ordering(const struct dmi_system_id *d) +{ + acpi_old_suspend_ordering(); + return 0; +} + +static int __init init_nvs_nosave(const struct dmi_system_id *d) +{ + acpi_nvs_nosave(); + return 0; +} + +static struct dmi_system_id __initdata acpisleep_dmi_table[] = { + { + .callback = init_old_suspend_ordering, + .ident = "Abit KN9 (nForce4 variant)", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"), + DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "HP xw4600 Workstation", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "M2N8L"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Panasonic CF51-2L", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, + "Matsushita Electric Industrial Co.,Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW41E_H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW41E_H"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW21E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB17FX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-SR11M", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Everex StepNote Series", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB1Z1E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-NW130D", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCCW29FX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Averatec AV1020-ED2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus A8N-SLI DELUXE", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus A8N-SLI Premium", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-SR26GN_P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB1S1E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1S1E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW520F", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Asus K54C", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "K54C"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Asus K54HR", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"), + }, + }, + {}, +}; + +static void acpi_sleep_dmi_check(void) +{ + dmi_check_system(acpisleep_dmi_table); +} + /** * acpi_pm_freeze - Disable the GPEs and suspend EC transactions. */ @@ -252,6 +434,7 @@ } #else /* !CONFIG_ACPI_SLEEP */ #define acpi_target_sleep_state ACPI_STATE_S0 +static inline void acpi_sleep_dmi_check(void) {} #endif /* CONFIG_ACPI_SLEEP */ #ifdef CONFIG_SUSPEND @@ -410,167 +593,6 @@ .end = acpi_pm_end, .recover = acpi_pm_finish, }; - -static int __init init_old_suspend_ordering(const struct dmi_system_id *d) -{ - old_suspend_ordering = true; - return 0; -} - -static int __init init_nvs_nosave(const struct dmi_system_id *d) -{ - acpi_nvs_nosave(); - return 0; -} - -static struct dmi_system_id __initdata acpisleep_dmi_table[] = { - { - .callback = init_old_suspend_ordering, - .ident = "Abit KN9 (nForce4 variant)", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"), - DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "HP xw4600 Workstation", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), - DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "M2N8L"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Panasonic CF51-2L", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, - "Matsushita Electric Industrial Co.,Ltd."), - DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-FW21E", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCEB17FX", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-SR11M", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Everex StepNote Series", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCEB1Z1E", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-NW130D", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCCW29FX", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Averatec AV1020-ED2", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"), - DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus A8N-SLI DELUXE", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus A8N-SLI Premium", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-SR26GN_P", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-FW520F", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Asus K54C", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "K54C"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Asus K54HR", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"), - }, - }, - {}, -}; #endif /* CONFIG_SUSPEND */ #ifdef CONFIG_HIBERNATION @@ -911,13 +933,13 @@ u8 type_a, type_b; #ifdef CONFIG_SUSPEND int i = 0; - - dmi_check_system(acpisleep_dmi_table); #endif if (acpi_disabled) return 0; + acpi_sleep_dmi_check(); + sleep_states[ACPI_STATE_S0] = 1; printk(KERN_INFO PREFIX "(supports S0"); --- linux-3.5.0.orig/drivers/acpi/pci_root.c +++ linux-3.5.0/drivers/acpi/pci_root.c @@ -247,8 +247,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); --- linux-3.5.0.orig/drivers/acpi/scan.c +++ linux-3.5.0/drivers/acpi/scan.c @@ -789,8 +789,8 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device) { struct acpi_device_id button_device_ids[] = { - {"PNP0C0D", 0}, {"PNP0C0C", 0}, + {"PNP0C0D", 0}, {"PNP0C0E", 0}, {"", 0}, }; @@ -802,6 +802,11 @@ /* Power button, Lid switch always enable wakeup */ if (!acpi_match_device_ids(device, button_device_ids)) { device->wakeup.flags.run_wake = 1; + if (!acpi_match_device_ids(device, &button_device_ids[1])) { + /* Do not use Lid/sleep button for S5 wakeup */ + if (device->wakeup.sleep_state == ACPI_STATE_S5) + device->wakeup.sleep_state = ACPI_STATE_S4; + } device_set_wakeup_capable(&device->dev, true); return; } @@ -1157,7 +1162,7 @@ acpi_add_id(device, ACPI_DOCK_HID); else if (!acpi_ibm_smbus_match(device)) acpi_add_id(device, ACPI_SMBUS_IBM_HID); - else if (!acpi_device_hid(device) && + else if (list_empty(&device->pnp.ids) && ACPI_IS_ROOT_DEVICE(device->parent)) { acpi_add_id(device, ACPI_BUS_HID); /* \_SB, LNXSYBUS */ strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME); --- linux-3.5.0.orig/drivers/acpi/ec.c +++ linux-3.5.0/drivers/acpi/ec.c @@ -71,9 +71,6 @@ #define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */ #define ACPI_EC_MSI_UDELAY 550 /* Wait 550us for MSI EC */ -#define ACPI_EC_STORM_THRESHOLD 8 /* number of false interrupts - per one transaction */ - enum { EC_FLAGS_QUERY_PENDING, /* Query is pending */ EC_FLAGS_GPE_STORM, /* GPE storm detected */ @@ -87,6 +84,15 @@ module_param(ec_delay, uint, 0644); MODULE_PARM_DESC(ec_delay, "Timeout(ms) waited until an EC command completes"); +/* + * If the number of false interrupts per one transaction exceeds + * this threshold, will think there is a GPE storm happened and + * will disable the GPE for normal transaction. + */ +static unsigned int ec_storm_threshold __read_mostly = 8; +module_param(ec_storm_threshold, uint, 0644); +MODULE_PARM_DESC(ec_storm_threshold, "Maxim false GPE numbers not considered as GPE storm"); + /* If we find an EC via the ECDT, we need to keep a ptr to its context */ /* External interfaces use first EC only, so remember */ typedef int (*acpi_ec_query_func) (void *data); @@ -211,7 +217,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); @@ -229,8 +235,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->curr_lock, flags); start_transaction(ec); @@ -319,7 +323,7 @@ msleep(1); /* It is safe to enable the GPE outside of the transaction. */ acpi_enable_gpe(NULL, ec->gpe); - } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) { + } else if (t->irq_count > ec_storm_threshold) { pr_info(PREFIX "GPE storm detected, " "transactions will use polling mode\n"); set_bit(EC_FLAGS_GPE_STORM, &ec->flags); @@ -924,6 +928,17 @@ return 0; } +/* + * Clevo M720 notebook actually works ok with IRQ mode, if we lifted + * the GPE storm threshold back to 20 + */ +static int ec_enlarge_storm_threshold(const struct dmi_system_id *id) +{ + pr_debug("Setting the EC GPE storm threshold to 20\n"); + ec_storm_threshold = 20; + return 0; +} + static struct dmi_system_id __initdata ec_dmi_table[] = { { ec_skip_dsdt_scan, "Compal JFL92", { @@ -955,10 +970,13 @@ { ec_validate_ecdt, "ASUS hardware", { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc.") }, NULL}, + { + ec_enlarge_storm_threshold, "CLEVO hardware", { + DMI_MATCH(DMI_SYS_VENDOR, "CLEVO Co."), + DMI_MATCH(DMI_PRODUCT_NAME, "M720T/M730T"),}, NULL}, {}, }; - int __init acpi_ec_ecdt_probe(void) { acpi_status status; --- linux-3.5.0.orig/drivers/acpi/bus.c +++ linux-3.5.0/drivers/acpi/bus.c @@ -237,6 +237,16 @@ } else if (result == ACPI_STATE_D3_HOT) { result = ACPI_STATE_D3; } + + /* + * If we were unsure about the device parent's power state up to this + * point, the fact that the device is in D0 implies that the parent has + * to be in D0 too. + */ + if (device->parent && device->parent->power.state == ACPI_STATE_UNKNOWN + && result == ACPI_STATE_D0) + device->parent->power.state = ACPI_STATE_D0; + *state = result; out: @@ -980,8 +990,6 @@ status = acpi_ec_ecdt_probe(); /* Ignore result. Not having an ECDT is not fatal. */ - acpi_bus_osc_support(); - status = acpi_initialize_objects(ACPI_FULL_INITIALIZATION); if (ACPI_FAILURE(status)) { printk(KERN_ERR PREFIX "Unable to initialize ACPI objects\n"); @@ -989,6 +997,12 @@ } /* + * _OSC method may exist in module level code, + * so it must be run after ACPI_FULL_INITIALIZATION + */ + acpi_bus_osc_support(); + + /* * _PDC control method may load dynamic SSDT tables, * and we need to install the table handler before that. */ --- linux-3.5.0.orig/drivers/acpi/osl.c +++ linux-3.5.0/drivers/acpi/osl.c @@ -250,7 +250,7 @@ return acpi_rsdp; #endif - if (efi_enabled) { + if (efi_enabled(EFI_CONFIG_TABLES)) { if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) return efi.acpi20; else if (efi.acpi != EFI_INVALID_TABLE_ADDR) --- linux-3.5.0.orig/drivers/acpi/processor_idle.c +++ linux-3.5.0/drivers/acpi/processor_idle.c @@ -1046,6 +1046,9 @@ return -EINVAL; } + if (!dev) + return -EINVAL; + dev->cpu = pr->id; if (max_cstate == 0) @@ -1233,6 +1236,7 @@ } /* Populate Updated C-state information */ + acpi_processor_get_power_info(pr); acpi_processor_setup_cpuidle_states(pr); /* Enable all cpuidle devices */ --- linux-3.5.0.orig/drivers/acpi/processor_driver.c +++ linux-3.5.0/drivers/acpi/processor_driver.c @@ -407,6 +407,7 @@ acpi_bus_generate_proc_event(device, event, 0); acpi_bus_generate_netlink_event(device->pnp.device_class, dev_name(&device->dev), event, 0); + break; default: ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Unsupported event [0x%x]\n", event)); @@ -442,7 +443,7 @@ /* Normal CPU soft online event */ } else { acpi_processor_ppc_has_changed(pr, 0); - acpi_processor_cst_has_changed(pr); + acpi_processor_hotplug(pr); acpi_processor_reevaluate_tstate(pr, action); acpi_processor_tstate_has_changed(pr); } --- linux-3.5.0.orig/drivers/acpi/battery.c +++ linux-3.5.0/drivers/acpi/battery.c @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef CONFIG_ACPI_PROCFS_POWER #include @@ -95,6 +96,18 @@ ACPI_BATTERY_ALARM_PRESENT, ACPI_BATTERY_XINFO_PRESENT, ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, + /* On Lenovo Thinkpad models from 2010 and 2011, the power unit + switches between mWh and mAh depending on whether the system + is running on battery or not. When mAh is the unit, most + reported values are incorrect and need to be adjusted by + 10000/design_voltage. Verified on x201, t410, t410s, and x220. + Pre-2010 and 2012 models appear to always report in mWh and + are thus unaffected (tested with t42, t61, t500, x200, x300, + and x230). Also, in mid-2012 Lenovo issued a BIOS update for + the 2011 models that fixes the issue (tested on x220 with a + post-1.29 BIOS), but as of Nov. 2012, no such update is + available for the 2010 models. */ + ACPI_BATTERY_QUIRK_THINKPAD_MAH, }; struct acpi_battery { @@ -429,6 +442,21 @@ kfree(buffer.pointer); if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags)) battery->full_charge_capacity = battery->design_capacity; + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags) && + battery->power_unit && battery->design_voltage) { + battery->design_capacity = battery->design_capacity * + 10000 / battery->design_voltage; + battery->full_charge_capacity = battery->full_charge_capacity * + 10000 / battery->design_voltage; + battery->design_capacity_warning = + battery->design_capacity_warning * + 10000 / battery->design_voltage; + /* Curiously, design_capacity_low, unlike the rest of them, + is correct. */ + /* capacity_granularity_* equal 1 on the systems tested, so + it's impossible to tell if they would need an adjustment + or not if their values were higher. */ + } return result; } @@ -477,6 +505,11 @@ && battery->capacity_now >= 0 && battery->capacity_now <= 100) battery->capacity_now = (battery->capacity_now * battery->full_charge_capacity) / 100; + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags) && + battery->power_unit && battery->design_voltage) { + battery->capacity_now = battery->capacity_now * + 10000 / battery->design_voltage; + } return result; } @@ -586,6 +619,24 @@ mutex_unlock(&battery->sysfs_lock); } +static void find_battery(const struct dmi_header *dm, void *private) +{ + struct acpi_battery *battery = (struct acpi_battery *)private; + /* Note: the hardcoded offsets below have been extracted from + the source code of dmidecode. */ + if (dm->type == DMI_ENTRY_PORTABLE_BATTERY && dm->length >= 8) { + const u8 *dmi_data = (const u8 *)(dm + 1); + int dmi_capacity = get_unaligned((const u16 *)(dmi_data + 6)); + if (dm->length >= 18) + dmi_capacity *= dmi_data[17]; + if (battery->design_capacity * battery->design_voltage / 1000 + != dmi_capacity && + battery->design_capacity * 10 == dmi_capacity) + set_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, + &battery->flags); + } +} + /* * According to the ACPI spec, some kinds of primary batteries can * report percentage battery remaining capacity directly to OS. @@ -611,6 +662,32 @@ battery->capacity_now = (battery->capacity_now * battery->full_charge_capacity) / 100; } + + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags)) + return ; + + if (battery->power_unit && dmi_name_in_vendors("LENOVO")) { + const char *s; + s = dmi_get_system_info(DMI_PRODUCT_VERSION); + if (s && !strnicmp(s, "ThinkPad", 8)) { + dmi_walk(find_battery, battery); + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, + &battery->flags) && + battery->design_voltage) { + battery->design_capacity = + battery->design_capacity * + 10000 / battery->design_voltage; + battery->full_charge_capacity = + battery->full_charge_capacity * + 10000 / battery->design_voltage; + battery->design_capacity_warning = + battery->design_capacity_warning * + 10000 / battery->design_voltage; + battery->capacity_now = battery->capacity_now * + 10000 / battery->design_voltage; + } + } + } } static int acpi_battery_update(struct acpi_battery *battery) @@ -976,6 +1053,18 @@ return 0; } +static LIST_HEAD(acpi_battery_domain); + +static void acpi_battery_update_async(struct acpi_device *device, async_cookie_t cookie) +{ + struct acpi_battery *battery = acpi_driver_data(device); + + acpi_battery_update(battery); + printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n", + ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device), + device->status.battery_present ? "present" : "absent"); +} + static int acpi_battery_add(struct acpi_device *device) { int result = 0; @@ -995,13 +1084,16 @@ if (ACPI_SUCCESS(acpi_get_handle(battery->device->handle, "_BIX", &handle))) set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags); - result = acpi_battery_update(battery); - if (result) - goto fail; + + /* Mark the battery for update at first access. */ + battery->update_time = 0; #ifdef CONFIG_ACPI_PROCFS_POWER result = acpi_battery_add_fs(device); #endif - if (result) { + if (!result) { + async_schedule_domain(acpi_battery_update_async, device, &acpi_battery_domain); + + } else { #ifdef CONFIG_ACPI_PROCFS_POWER acpi_battery_remove_fs(device); #endif @@ -1031,6 +1123,10 @@ if (!device || !acpi_driver_data(device)) return -EINVAL; + + /* Ensure all async updates are complete before freeing the battery. */ + async_synchronize_full_domain(&acpi_battery_domain); + battery = acpi_driver_data(device); unregister_pm_notifier(&battery->pm_nb); #ifdef CONFIG_ACPI_PROCFS_POWER @@ -1068,27 +1164,21 @@ }, }; -static void __init acpi_battery_init_async(void *unused, async_cookie_t cookie) +static int __init acpi_battery_init(void) { if (acpi_disabled) return; #ifdef CONFIG_ACPI_PROCFS_POWER acpi_battery_dir = acpi_lock_battery_dir(); if (!acpi_battery_dir) - return; + return -1; #endif if (acpi_bus_register_driver(&acpi_battery_driver) < 0) { #ifdef CONFIG_ACPI_PROCFS_POWER acpi_unlock_battery_dir(acpi_battery_dir); #endif - return; + return -1; } - return; -} - -static int __init acpi_battery_init(void) -{ - async_schedule(acpi_battery_init_async, NULL); return 0; } --- linux-3.5.0.orig/drivers/acpi/power.c +++ linux-3.5.0/drivers/acpi/power.c @@ -103,6 +103,7 @@ /* List of devices relying on this power resource */ struct acpi_power_resource_device *devices; + struct mutex devices_lock; }; static struct list_head acpi_power_resource_list; @@ -221,7 +222,6 @@ static int __acpi_power_on(struct acpi_power_resource *resource) { - struct acpi_power_resource_device *device_list = resource->devices; acpi_status status = AE_OK; status = acpi_evaluate_object(resource->device->handle, "_ON", NULL, NULL); @@ -234,19 +234,15 @@ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Power resource [%s] turned on\n", resource->name)); - while (device_list) { - acpi_power_on_device(device_list->device); - - device_list = device_list->next; - } - return 0; } static int acpi_power_on(acpi_handle handle) { int result = 0; + bool resume_device = false; struct acpi_power_resource *resource = NULL; + struct acpi_power_resource_device *device_list; result = acpi_power_get_context(handle, &resource); if (result) @@ -262,10 +258,25 @@ result = __acpi_power_on(resource); if (result) resource->ref_count--; + else + resume_device = true; } mutex_unlock(&resource->resource_lock); + if (!resume_device) + return result; + + mutex_lock(&resource->devices_lock); + + device_list = resource->devices; + while (device_list) { + acpi_power_on_device(device_list->device); + device_list = device_list->next; + } + + mutex_unlock(&resource->devices_lock); + return result; } @@ -351,7 +362,7 @@ if (acpi_power_get_context(res_handle, &resource)) return; - mutex_lock(&resource->resource_lock); + mutex_lock(&resource->devices_lock); prev = NULL; curr = resource->devices; while (curr) { @@ -368,7 +379,7 @@ prev = curr; curr = curr->next; } - mutex_unlock(&resource->resource_lock); + mutex_unlock(&resource->devices_lock); } /* Unlink dev from all power resources in _PR0 */ @@ -409,10 +420,10 @@ power_resource_device->device = powered_device; - mutex_lock(&resource->resource_lock); + mutex_lock(&resource->devices_lock); power_resource_device->next = resource->devices; resource->devices = power_resource_device; - mutex_unlock(&resource->resource_lock); + mutex_unlock(&resource->devices_lock); return 0; } @@ -457,7 +468,7 @@ return ret; no_power_resource: - printk(KERN_WARNING PREFIX "Invalid Power Resource to register!"); + printk(KERN_DEBUG PREFIX "Invalid Power Resource to register!"); return -ENODEV; } @@ -715,6 +726,7 @@ resource->device = device; mutex_init(&resource->resource_lock); + mutex_init(&resource->devices_lock); strcpy(resource->name, device->pnp.bus_id); strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_POWER_CLASS); --- linux-3.5.0.orig/drivers/acpi/video_detect.c +++ linux-3.5.0/drivers/acpi/video_detect.c @@ -132,6 +132,49 @@ return AE_OK; } +/* Force to use vendor driver when the ACPI device is known to be + * buggy */ +static int video_detect_force_vendor(const struct dmi_system_id *d) +{ + acpi_video_support |= ACPI_VIDEO_BACKLIGHT_DMI_VENDOR; + return 0; +} + +static struct dmi_system_id video_detect_dmi_table[] = { + /* On Samsung X360, the BIOS will set a flag (VDRV) if generic + * ACPI backlight device is used. This flag will definitively break + * the backlight interface (even the vendor interface) untill next + * reboot. It's why we should prevent video.ko from being used here + * and we can't rely on a later call to acpi_video_unregister(). + */ + { + .callback = video_detect_force_vendor, + .ident = "X360", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "X360"), + DMI_MATCH(DMI_BOARD_NAME, "X360"), + }, + }, + { + .callback = video_detect_force_vendor, + .ident = "Asus UL30VT", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + 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"), + }, + }, + { }, +}; + /* * Returns the video capabilities of a specific ACPI graphics device * @@ -164,6 +207,8 @@ * ACPI_VIDEO_BACKLIGHT_DMI_VENDOR; *} */ + + dmi_check_system(video_detect_dmi_table); } else { status = acpi_bus_get_device(graphics_handle, &tmp_dev); if (ACPI_FAILURE(status)) { --- linux-3.5.0.orig/drivers/acpi/acpica/exfldio.c +++ linux-3.5.0/drivers/acpi/acpica/exfldio.c @@ -722,7 +722,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-3.5.0.orig/drivers/acpi/acpica/tbxface.c +++ linux-3.5.0/drivers/acpi/acpica/tbxface.c @@ -436,6 +436,7 @@ return (AE_NOT_FOUND); } +ACPI_EXPORT_SYMBOL(acpi_get_table_with_size) acpi_status acpi_get_table(char *signature, --- linux-3.5.0.orig/drivers/acpi/apei/apei-base.c +++ linux-3.5.0/drivers/acpi/apei/apei-base.c @@ -586,6 +586,11 @@ } *access_bit_width = 1UL << (access_size_code + 2); + /* Fixup common BIOS bug */ + if (bit_width == 32 && bit_offset == 0 && (*paddr & 0x03) == 0 && + *access_bit_width < 32) + *access_bit_width = 32; + if ((bit_width + bit_offset) > *access_bit_width) { pr_warning(FW_BUG APEI_PFX "Invalid bit width + offset in GAR [0x%llx/%u/%u/%u/%u]\n", --- linux-3.5.0.orig/drivers/atm/iphase.h +++ linux-3.5.0/drivers/atm/iphase.h @@ -636,82 +636,82 @@ #define SEG_BASE IPHASE5575_FRAG_CONTROL_REG_BASE #define REASS_BASE IPHASE5575_REASS_CONTROL_REG_BASE -typedef volatile u_int freg_t; +typedef volatile u_int ffreg_t; typedef u_int rreg_t; typedef struct _ffredn_t { - freg_t idlehead_high; /* Idle cell header (high) */ - freg_t idlehead_low; /* Idle cell header (low) */ - freg_t maxrate; /* Maximum rate */ - freg_t stparms; /* Traffic Management Parameters */ - freg_t abrubr_abr; /* ABRUBR Priority Byte 1, TCR Byte 0 */ - freg_t rm_type; /* */ - u_int filler5[0x17 - 0x06]; - freg_t cmd_reg; /* Command register */ - u_int filler18[0x20 - 0x18]; - freg_t cbr_base; /* CBR Pointer Base */ - freg_t vbr_base; /* VBR Pointer Base */ - freg_t abr_base; /* ABR Pointer Base */ - freg_t ubr_base; /* UBR Pointer Base */ - u_int filler24; - freg_t vbrwq_base; /* VBR Wait Queue Base */ - freg_t abrwq_base; /* ABR Wait Queue Base */ - freg_t ubrwq_base; /* UBR Wait Queue Base */ - freg_t vct_base; /* Main VC Table Base */ - freg_t vcte_base; /* Extended Main VC Table Base */ - u_int filler2a[0x2C - 0x2A]; - freg_t cbr_tab_beg; /* CBR Table Begin */ - freg_t cbr_tab_end; /* CBR Table End */ - freg_t cbr_pointer; /* CBR Pointer */ - u_int filler2f[0x30 - 0x2F]; - freg_t prq_st_adr; /* Packet Ready Queue Start Address */ - freg_t prq_ed_adr; /* Packet Ready Queue End Address */ - freg_t prq_rd_ptr; /* Packet Ready Queue read pointer */ - freg_t prq_wr_ptr; /* Packet Ready Queue write pointer */ - freg_t tcq_st_adr; /* Transmit Complete Queue Start Address*/ - freg_t tcq_ed_adr; /* Transmit Complete Queue End Address */ - freg_t tcq_rd_ptr; /* Transmit Complete Queue read pointer */ - freg_t tcq_wr_ptr; /* Transmit Complete Queue write pointer*/ - u_int filler38[0x40 - 0x38]; - freg_t queue_base; /* Base address for PRQ and TCQ */ - freg_t desc_base; /* Base address of descriptor table */ - u_int filler42[0x45 - 0x42]; - freg_t mode_reg_0; /* Mode register 0 */ - freg_t mode_reg_1; /* Mode register 1 */ - freg_t intr_status_reg;/* Interrupt Status register */ - freg_t mask_reg; /* Mask Register */ - freg_t cell_ctr_high1; /* Total cell transfer count (high) */ - freg_t cell_ctr_lo1; /* Total cell transfer count (low) */ - freg_t state_reg; /* Status register */ - u_int filler4c[0x58 - 0x4c]; - freg_t curr_desc_num; /* Contains the current descriptor num */ - freg_t next_desc; /* Next descriptor */ - freg_t next_vc; /* Next VC */ - u_int filler5b[0x5d - 0x5b]; - freg_t present_slot_cnt;/* Present slot count */ - u_int filler5e[0x6a - 0x5e]; - freg_t new_desc_num; /* New descriptor number */ - freg_t new_vc; /* New VC */ - freg_t sched_tbl_ptr; /* Schedule table pointer */ - freg_t vbrwq_wptr; /* VBR wait queue write pointer */ - freg_t vbrwq_rptr; /* VBR wait queue read pointer */ - freg_t abrwq_wptr; /* ABR wait queue write pointer */ - freg_t abrwq_rptr; /* ABR wait queue read pointer */ - freg_t ubrwq_wptr; /* UBR wait queue write pointer */ - freg_t ubrwq_rptr; /* UBR wait queue read pointer */ - freg_t cbr_vc; /* CBR VC */ - freg_t vbr_sb_vc; /* VBR SB VC */ - freg_t abr_sb_vc; /* ABR SB VC */ - freg_t ubr_sb_vc; /* UBR SB VC */ - freg_t vbr_next_link; /* VBR next link */ - freg_t abr_next_link; /* ABR next link */ - freg_t ubr_next_link; /* UBR next link */ - u_int filler7a[0x7c-0x7a]; - freg_t out_rate_head; /* Out of rate head */ - u_int filler7d[0xca-0x7d]; /* pad out to full address space */ - freg_t cell_ctr_high1_nc;/* Total cell transfer count (high) */ - freg_t cell_ctr_lo1_nc;/* Total cell transfer count (low) */ - u_int fillercc[0x100-0xcc]; /* pad out to full address space */ + ffreg_t idlehead_high; /* Idle cell header (high) */ + ffreg_t idlehead_low; /* Idle cell header (low) */ + ffreg_t maxrate; /* Maximum rate */ + ffreg_t stparms; /* Traffic Management Parameters */ + ffreg_t abrubr_abr; /* ABRUBR Priority Byte 1, TCR Byte 0 */ + ffreg_t rm_type; /* */ + u_int filler5[0x17 - 0x06]; + ffreg_t cmd_reg; /* Command register */ + u_int filler18[0x20 - 0x18]; + ffreg_t cbr_base; /* CBR Pointer Base */ + ffreg_t vbr_base; /* VBR Pointer Base */ + ffreg_t abr_base; /* ABR Pointer Base */ + ffreg_t ubr_base; /* UBR Pointer Base */ + u_int filler24; + ffreg_t vbrwq_base; /* VBR Wait Queue Base */ + ffreg_t abrwq_base; /* ABR Wait Queue Base */ + ffreg_t ubrwq_base; /* UBR Wait Queue Base */ + ffreg_t vct_base; /* Main VC Table Base */ + ffreg_t vcte_base; /* Extended Main VC Table Base */ + u_int filler2a[0x2C - 0x2A]; + ffreg_t cbr_tab_beg; /* CBR Table Begin */ + ffreg_t cbr_tab_end; /* CBR Table End */ + ffreg_t cbr_pointer; /* CBR Pointer */ + u_int filler2f[0x30 - 0x2F]; + ffreg_t prq_st_adr; /* Packet Ready Queue Start Address */ + ffreg_t prq_ed_adr; /* Packet Ready Queue End Address */ + ffreg_t prq_rd_ptr; /* Packet Ready Queue read pointer */ + ffreg_t prq_wr_ptr; /* Packet Ready Queue write pointer */ + ffreg_t tcq_st_adr; /* Transmit Complete Queue Start Address*/ + ffreg_t tcq_ed_adr; /* Transmit Complete Queue End Address */ + ffreg_t tcq_rd_ptr; /* Transmit Complete Queue read pointer */ + ffreg_t tcq_wr_ptr; /* Transmit Complete Queue write pointer*/ + u_int filler38[0x40 - 0x38]; + ffreg_t queue_base; /* Base address for PRQ and TCQ */ + ffreg_t desc_base; /* Base address of descriptor table */ + u_int filler42[0x45 - 0x42]; + ffreg_t mode_reg_0; /* Mode register 0 */ + ffreg_t mode_reg_1; /* Mode register 1 */ + ffreg_t intr_status_reg;/* Interrupt Status register */ + ffreg_t mask_reg; /* Mask Register */ + ffreg_t cell_ctr_high1; /* Total cell transfer count (high) */ + ffreg_t cell_ctr_lo1; /* Total cell transfer count (low) */ + ffreg_t state_reg; /* Status register */ + u_int filler4c[0x58 - 0x4c]; + ffreg_t curr_desc_num; /* Contains the current descriptor num */ + ffreg_t next_desc; /* Next descriptor */ + ffreg_t next_vc; /* Next VC */ + u_int filler5b[0x5d - 0x5b]; + ffreg_t present_slot_cnt;/* Present slot count */ + u_int filler5e[0x6a - 0x5e]; + ffreg_t new_desc_num; /* New descriptor number */ + ffreg_t new_vc; /* New VC */ + ffreg_t sched_tbl_ptr; /* Schedule table pointer */ + ffreg_t vbrwq_wptr; /* VBR wait queue write pointer */ + ffreg_t vbrwq_rptr; /* VBR wait queue read pointer */ + ffreg_t abrwq_wptr; /* ABR wait queue write pointer */ + ffreg_t abrwq_rptr; /* ABR wait queue read pointer */ + ffreg_t ubrwq_wptr; /* UBR wait queue write pointer */ + ffreg_t ubrwq_rptr; /* UBR wait queue read pointer */ + ffreg_t cbr_vc; /* CBR VC */ + ffreg_t vbr_sb_vc; /* VBR SB VC */ + ffreg_t abr_sb_vc; /* ABR SB VC */ + ffreg_t ubr_sb_vc; /* UBR SB VC */ + ffreg_t vbr_next_link; /* VBR next link */ + ffreg_t abr_next_link; /* ABR next link */ + ffreg_t ubr_next_link; /* UBR next link */ + u_int filler7a[0x7c-0x7a]; + ffreg_t out_rate_head; /* Out of rate head */ + u_int filler7d[0xca-0x7d]; /* pad out to full address space */ + ffreg_t cell_ctr_high1_nc;/* Total cell transfer count (high) */ + ffreg_t cell_ctr_lo1_nc;/* Total cell transfer count (low) */ + u_int fillercc[0x100-0xcc]; /* pad out to full address space */ } ffredn_t; typedef struct _rfredn_t { --- linux-3.5.0.orig/drivers/atm/solos-pci.c +++ linux-3.5.0/drivers/atm/solos-pci.c @@ -967,10 +967,11 @@ for (port = 0; tx_pending; tx_pending >>= 1, port++) { if (tx_pending & 1) { struct sk_buff *oldskb = card->tx_skb[port]; - if (oldskb) + if (oldskb) { pci_unmap_single(card->dev, SKB_CB(oldskb)->dma_addr, oldskb->len, PCI_DMA_TODEVICE); - + card->tx_skb[port] = NULL; + } spin_lock(&card->tx_queue_lock); skb = skb_dequeue(&card->tx_queue[port]); if (!skb) --- linux-3.5.0.orig/drivers/cpuidle/cpuidle.c +++ linux-3.5.0/drivers/cpuidle/cpuidle.c @@ -72,7 +72,7 @@ int i, dead_state = -1; int power_usage = -1; - if (!drv) + if (!drv || !dev) return -ENODEV; /* Find lowest-power state that supports long-term idle */ --- linux-3.5.0.orig/drivers/mtd/mtdchar.c +++ linux-3.5.0/drivers/mtd/mtdchar.c @@ -1132,32 +1132,17 @@ struct mtd_file_info *mfi = file->private_data; struct mtd_info *mtd = mfi->mtd; struct map_info *map = mtd->priv; - unsigned long start; - unsigned long off; - u32 len; - - if (mtd->type == MTD_RAM || mtd->type == MTD_ROM) { - off = vma->vm_pgoff << PAGE_SHIFT; - start = map->phys; - len = PAGE_ALIGN((start & ~PAGE_MASK) + map->size); - start &= PAGE_MASK; - if ((vma->vm_end - vma->vm_start + off) > len) - return -EINVAL; - - off += start; - vma->vm_pgoff = off >> PAGE_SHIFT; - vma->vm_flags |= VM_IO | VM_RESERVED; + /* 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*/) { #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-3.5.0.orig/drivers/mtd/mtdpart.c +++ linux-3.5.0/drivers/mtd/mtdpart.c @@ -711,6 +711,8 @@ * partition parsers, specified in @types. However, if @types is %NULL, then * the default list of parsers is used. The default list contains only the * "cmdlinepart" and "ofpart" parsers ATM. + * Note: If there are more then one parser in @types, the kernel only takes the + * partitions parsed out by the first parser. * * This function may return: * o a negative error code in case of failure @@ -735,11 +737,12 @@ if (!parser) continue; ret = (*parser->parse_fn)(master, pparts, data); + put_partition_parser(parser); if (ret > 0) { printk(KERN_NOTICE "%d %s partitions found on MTD device %s\n", ret, parser->name, master->name); + break; } - put_partition_parser(parser); } return ret; } --- linux-3.5.0.orig/drivers/mtd/ofpart.c +++ linux-3.5.0/drivers/mtd/ofpart.c @@ -121,7 +121,7 @@ nr_parts = plen / sizeof(part[0]); *pparts = kzalloc(nr_parts * sizeof(*(*pparts)), GFP_KERNEL); - if (!pparts) + if (!*pparts) return -ENOMEM; names = of_get_property(dp, "partition-names", &plen); --- linux-3.5.0.orig/drivers/mtd/maps/autcpu12-nvram.c +++ linux-3.5.0/drivers/mtd/maps/autcpu12-nvram.c @@ -43,7 +43,8 @@ static int __init init_autcpu12_sram (void) { - int err, save0, save1; + map_word tmp, save0, save1; + int err; autcpu12_sram_map.virt = ioremap(0x12000000, SZ_128K); if (!autcpu12_sram_map.virt) { @@ -51,7 +52,7 @@ err = -EIO; goto out; } - simple_map_init(&autcpu_sram_map); + simple_map_init(&autcpu12_sram_map); /* * Check for 32K/128K @@ -61,20 +62,22 @@ * Read and check result on ofs 0x0 * Restore contents */ - save0 = map_read32(&autcpu12_sram_map,0); - save1 = map_read32(&autcpu12_sram_map,0x10000); - map_write32(&autcpu12_sram_map,~save0,0x10000); + save0 = map_read(&autcpu12_sram_map, 0); + save1 = map_read(&autcpu12_sram_map, 0x10000); + tmp.x[0] = ~save0.x[0]; + map_write(&autcpu12_sram_map, tmp, 0x10000); /* if we find this pattern on 0x0, we have 32K size * restore contents and exit */ - if ( map_read32(&autcpu12_sram_map,0) != save0) { - map_write32(&autcpu12_sram_map,save0,0x0); + tmp = map_read(&autcpu12_sram_map, 0); + if (!map_word_equal(&autcpu12_sram_map, tmp, save0)) { + map_write(&autcpu12_sram_map, save0, 0x0); goto map; } /* We have a 128K found, restore 0x10000 and set size * to 128K */ - map_write32(&autcpu12_sram_map,save1,0x10000); + map_write(&autcpu12_sram_map, save1, 0x10000); autcpu12_sram_map.size = SZ_128K; map: --- linux-3.5.0.orig/drivers/mtd/devices/slram.c +++ linux-3.5.0/drivers/mtd/devices/slram.c @@ -240,7 +240,7 @@ if (*(szlength) != '+') { devlength = simple_strtoul(szlength, &buffer, 0); - devlength = handle_unit(devlength, buffer) - devstart; + devlength = handle_unit(devlength, buffer); if (devlength < devstart) goto err_out; --- linux-3.5.0.orig/drivers/mtd/nand/omap2.c +++ linux-3.5.0/drivers/mtd/nand/omap2.c @@ -1382,7 +1382,8 @@ /* Release NAND device, its internal structures and partitions */ nand_release(&info->mtd); iounmap(info->nand.IO_ADDR_R); - kfree(&info->mtd); + release_mem_region(info->phys_base, NAND_IO_SIZE); + kfree(info); return 0; } --- linux-3.5.0.orig/drivers/mtd/nand/nandsim.c +++ linux-3.5.0/drivers/mtd/nand/nandsim.c @@ -2333,6 +2333,7 @@ uint64_t new_size = (uint64_t)nsmtd->erasesize << overridesize; if (new_size >> overridesize != nsmtd->erasesize) { NS_ERR("overridesize is too big\n"); + retval = -EINVAL; goto err_exit; } /* N.B. This relies on nand_scan not doing anything with the size before we change it */ --- linux-3.5.0.orig/drivers/mtd/nand/cs553x_nand.c +++ linux-3.5.0/drivers/mtd/nand/cs553x_nand.c @@ -237,6 +237,7 @@ this->ecc.hwctl = cs_enable_hwecc; this->ecc.calculate = cs_calculate_ecc; this->ecc.correct = nand_correct_data; + this->ecc.strength = 1; /* Enable the following for a flash based bad block table */ this->bbt_options = NAND_BBT_USE_FLASH; @@ -247,8 +248,6 @@ goto out_ior; } - this->ecc.strength = 1; - new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs); cs553x_mtd[cs] = new_mtd; --- linux-3.5.0.orig/drivers/mtd/nand/nand_bbt.c +++ linux-3.5.0/drivers/mtd/nand/nand_bbt.c @@ -390,7 +390,7 @@ /* Read the mirror version, if available */ if (md && (md->options & NAND_BBT_VERSION)) { scan_read_raw(mtd, buf, (loff_t)md->pages[0] << this->page_shift, - mtd->writesize, td); + mtd->writesize, md); md->version[0] = buf[bbt_get_ver_offs(mtd, md)]; pr_info("Bad block table at page %d, version 0x%02X\n", md->pages[0], md->version[0]); --- linux-3.5.0.orig/drivers/mtd/nand/nand_base.c +++ linux-3.5.0/drivers/mtd/nand/nand_base.c @@ -2914,8 +2914,7 @@ if (le16_to_cpu(p->features) & 1) *busw = NAND_BUSWIDTH_16; - chip->options &= ~NAND_CHIPOPTIONS_MSK; - chip->options |= NAND_NO_READRDY & NAND_CHIPOPTIONS_MSK; + chip->options |= NAND_NO_READRDY; pr_info("ONFI flash detected\n"); return 1; @@ -3080,9 +3079,8 @@ mtd->erasesize <<= ((id_data[3] & 0x03) << 1); } } - /* Get chip options, preserve non chip based options */ - chip->options &= ~NAND_CHIPOPTIONS_MSK; - chip->options |= type->options & NAND_CHIPOPTIONS_MSK; + /* Get chip options */ + chip->options |= type->options; /* * Check if chip is not a Samsung device. Do not clear the --- linux-3.5.0.orig/drivers/mtd/nand/gpmi-nand/gpmi-lib.c +++ linux-3.5.0/drivers/mtd/nand/gpmi-nand/gpmi-lib.c @@ -136,6 +136,15 @@ if (ret) goto err_out; + /* + * Reset BCH here, too. We got failures otherwise :( + * See later BCH reset for explanation of MX23 handling + */ + ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this)); + if (ret) + goto err_out; + + /* Choose NAND mode. */ writel(BM_GPMI_CTRL1_GPMI_MODE, r->gpmi_regs + HW_GPMI_CTRL1_CLR); --- linux-3.5.0.orig/drivers/mtd/ubi/vtbl.c +++ linux-3.5.0/drivers/mtd/ubi/vtbl.c @@ -340,7 +340,7 @@ * of this LEB as it will be deleted and freed in 'ubi_add_to_av()'. */ err = ubi_add_to_av(ubi, ai, new_aeb->pnum, new_aeb->ec, vid_hdr, 0); - kfree(new_aeb); + kmem_cache_free(ai->aeb_slab_cache, new_aeb); ubi_free_vid_hdr(ubi, vid_hdr); return err; @@ -353,7 +353,7 @@ list_add(&new_aeb->u.list, &ai->erase); goto retry; } - kfree(new_aeb); + kmem_cache_free(ai->aeb_slab_cache, new_aeb); out_free: ubi_free_vid_hdr(ubi, vid_hdr); return err; --- linux-3.5.0.orig/drivers/mtd/ubi/build.c +++ linux-3.5.0/drivers/mtd/ubi/build.c @@ -759,6 +759,11 @@ struct ubi_volume *vol = ubi->volumes[vol_id]; int err, old_reserved_pebs = vol->reserved_pebs; + if (ubi->ro_mode) { + ubi_warn("skip auto-resize because of R/O mode"); + return 0; + } + /* * Clear the auto-resize flag in the volume in-memory copy of the * volume table, and 'ubi_resize_volume()' will propagate this change --- linux-3.5.0.orig/drivers/mtd/ubi/attach.c +++ linux-3.5.0/drivers/mtd/ubi/attach.c @@ -975,7 +975,7 @@ return err; goto adjust_mean_ec; case UBI_IO_FF: - if (ec_err) + if (ec_err || bitflips) err = add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, ec, 1, &ai->erase); else --- linux-3.5.0.orig/drivers/edac/i82975x_edac.c +++ linux-3.5.0/drivers/edac/i82975x_edac.c @@ -370,10 +370,6 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, void __iomem *mch_window) { - static const char *labels[4] = { - "DIMM A1", "DIMM A2", - "DIMM B1", "DIMM B2" - }; struct csrow_info *csrow; unsigned long last_cumul_size; u8 value; @@ -424,9 +420,10 @@ dimm = mci->csrows[index].channels[chan].dimm; dimm->nr_pages = nr_pages / csrow->nr_channels; - strncpy(csrow->channels[chan].dimm->label, - labels[(index >> 1) + (chan * 2)], - EDAC_MC_LABEL_LEN); + + snprintf(csrow->channels[chan].dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d", + (chan == 0) ? 'A' : 'B', + index); dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ dimm->dtype = i82975x_dram_type(mch_window, index); dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */ --- linux-3.5.0.orig/drivers/edac/highbank_l2_edac.c +++ linux-3.5.0/drivers/edac/highbank_l2_edac.c @@ -0,0 +1,149 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include + +#include "edac_core.h" +#include "edac_module.h" + +#define SR_CLR_SB_ECC_INTR 0x0 +#define SR_CLR_DB_ECC_INTR 0x4 + +struct hb_l2_drvdata { + void __iomem *base; + int sb_irq; + int db_irq; +}; + +static irqreturn_t highbank_l2_err_handler(int irq, void *dev_id) +{ + struct edac_device_ctl_info *dci = dev_id; + struct hb_l2_drvdata *drvdata = dci->pvt_info; + + if (irq == drvdata->sb_irq) { + writel(1, drvdata->base + SR_CLR_SB_ECC_INTR); + edac_device_handle_ce(dci, 0, 0, dci->ctl_name); + } + if (irq == drvdata->db_irq) { + writel(1, drvdata->base + SR_CLR_DB_ECC_INTR); + edac_device_handle_ue(dci, 0, 0, dci->ctl_name); + } + + return IRQ_HANDLED; +} + +static int __devinit highbank_l2_err_probe(struct platform_device *pdev) +{ + struct edac_device_ctl_info *dci; + struct hb_l2_drvdata *drvdata; + struct resource *r; + int res = 0; + + dci = edac_device_alloc_ctl_info(sizeof(*drvdata), "cpu", + 1, "L", 1, 2, NULL, 0, 0); + if (!dci) + return -ENOMEM; + + drvdata = dci->pvt_info; + dci->dev = &pdev->dev; + platform_set_drvdata(pdev, dci); + + if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) + return -ENOMEM; + + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!r) { + dev_err(&pdev->dev, "Unable to get mem resource\n"); + res = -ENODEV; + goto err; + } + + if (!devm_request_mem_region(&pdev->dev, r->start, + resource_size(r), dev_name(&pdev->dev))) { + dev_err(&pdev->dev, "Error while requesting mem region\n"); + res = -EBUSY; + goto err; + } + + drvdata->base = devm_ioremap(&pdev->dev, r->start, resource_size(r)); + if (!drvdata->base) { + dev_err(&pdev->dev, "Unable to map regs\n"); + res = -ENOMEM; + goto err; + } + + drvdata->db_irq = platform_get_irq(pdev, 0); + res = devm_request_irq(&pdev->dev, drvdata->db_irq, + highbank_l2_err_handler, + 0, dev_name(&pdev->dev), dci); + if (res < 0) + goto err; + + drvdata->sb_irq = platform_get_irq(pdev, 1); + res = devm_request_irq(&pdev->dev, drvdata->sb_irq, + highbank_l2_err_handler, + 0, dev_name(&pdev->dev), dci); + if (res < 0) + goto err; + + dci->mod_name = dev_name(&pdev->dev); + dci->dev_name = dev_name(&pdev->dev); + + if (edac_device_add_device(dci)) + goto err; + + devres_close_group(&pdev->dev, NULL); + return 0; +err: + devres_release_group(&pdev->dev, NULL); + edac_device_free_ctl_info(dci); + return res; +} + +static int highbank_l2_err_remove(struct platform_device *pdev) +{ + struct edac_device_ctl_info *dci = platform_get_drvdata(pdev); + + edac_device_del_device(&pdev->dev); + edac_device_free_ctl_info(dci); + return 0; +} + +static const struct of_device_id hb_l2_err_of_match[] = { + { .compatible = "calxeda,hb-sregs-l2-ecc", }, + {}, +}; +MODULE_DEVICE_TABLE(of, hb_l2_err_of_match); + +static struct platform_driver highbank_l2_edac_driver = { + .probe = highbank_l2_err_probe, + .remove = highbank_l2_err_remove, + .driver = { + .name = "hb_l2_edac", + .of_match_table = hb_l2_err_of_match, + }, +}; + +module_platform_driver(highbank_l2_edac_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Calxeda, Inc."); +MODULE_DESCRIPTION("EDAC Driver for Calxeda Highbank L2 Cache"); --- linux-3.5.0.orig/drivers/edac/Makefile +++ linux-3.5.0/drivers/edac/Makefile @@ -55,3 +55,6 @@ obj-$(CONFIG_EDAC_AMD8131) += amd8131_edac.o obj-$(CONFIG_EDAC_TILE) += tile_edac.o + +obj-$(CONFIG_EDAC_HIGHBANK_MC) += highbank_mc_edac.o +obj-$(CONFIG_EDAC_HIGHBANK_L2) += highbank_l2_edac.o --- linux-3.5.0.orig/drivers/edac/Kconfig +++ linux-3.5.0/drivers/edac/Kconfig @@ -7,7 +7,7 @@ menuconfig EDAC bool "EDAC (Error Detection And Correction) reporting" depends on HAS_IOMEM - depends on X86 || PPC || TILE + depends on X86 || PPC || TILE || ARM help EDAC is designed to report errors in the core system. These are low-level errors that are reported in the CPU or @@ -294,4 +294,18 @@ Support for error detection and correction on the Tilera memory controller. +config EDAC_HIGHBANK_MC + tristate "Highbank Memory Controller" + depends on EDAC_MM_EDAC && ARCH_HIGHBANK + help + Support for error detection and correction on the + Calxeda Highbank memory controller. + +config EDAC_HIGHBANK_L2 + tristate "Highbank L2 Cache" + depends on EDAC_MM_EDAC && ARCH_HIGHBANK + help + Support for error detection and correction on the + Calxeda Highbank memory controller. + endif # EDAC --- linux-3.5.0.orig/drivers/edac/i7300_edac.c +++ linux-3.5.0/drivers/edac/i7300_edac.c @@ -215,8 +215,8 @@ [0] = "Memory Write error on non-redundant retry or " "FBD configuration Write error on retry", }; -#define GET_FBD_FAT_IDX(fbderr) (fbderr & (3 << 28)) -#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) +#define GET_FBD_FAT_IDX(fbderr) (((fbderr) >> 28) & 3) +#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 22)) #define FERR_NF_FBD 0xa0 static const char *ferr_nf_fbd_name[] = { @@ -243,7 +243,7 @@ [1] = "Aliased Uncorrectable Non-Mirrored Demand Data ECC", [0] = "Uncorrectable Data ECC on Replay", }; -#define GET_FBD_NF_IDX(fbderr) (fbderr & (3 << 28)) +#define GET_FBD_NF_IDX(fbderr) (((fbderr) >> 28) & 3) #define FERR_NF_FBD_ERR_MASK ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) |\ (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15) |\ (1 << 14) | (1 << 13) | (1 << 11) | (1 << 10) |\ @@ -482,7 +482,7 @@ errnum = find_first_bit(&errors, ARRAY_SIZE(ferr_nf_fbd_name)); specific = GET_ERR_FROM_TABLE(ferr_nf_fbd_name, errnum); - branch = (GET_FBD_FAT_IDX(error_reg) == 2) ? 1 : 0; + branch = (GET_FBD_NF_IDX(error_reg) == 2) ? 1 : 0; pci_read_config_dword(pvt->pci_dev_16_1_fsb_addr_map, REDMEMA, &syndrome); --- linux-3.5.0.orig/drivers/edac/amd64_edac.c +++ linux-3.5.0/drivers/edac/amd64_edac.c @@ -170,8 +170,11 @@ * memory controller and apply to register. Search for the first * bandwidth entry that is greater or equal than the setting requested * and program that. If at last entry, turn off DRAM scrubbing. + * + * If no suitable bandwidth is found, turn off DRAM scrubbing entirely + * by falling back to the last element in scrubrates[]. */ - for (i = 0; i < ARRAY_SIZE(scrubrates); i++) { + for (i = 0; i < ARRAY_SIZE(scrubrates) - 1; i++) { /* * skip scrub rates which aren't recommended * (see F10 BKDG, F3x58) @@ -181,12 +184,6 @@ if (scrubrates[i].bandwidth <= new_bw) break; - - /* - * if no suitable bandwidth found, turn off DRAM scrubbing - * entirely by falling back to the last element in the - * scrubrates array. - */ } scrubval = scrubrates[i].scrubval; --- linux-3.5.0.orig/drivers/edac/highbank_mc_edac.c +++ linux-3.5.0/drivers/edac/highbank_mc_edac.c @@ -0,0 +1,238 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include + +#include "edac_core.h" +#include "edac_module.h" + +/* DDR Ctrlr Error Registers */ +#define HB_DDR_ECC_OPT 0x128 +#define HB_DDR_ECC_U_ERR_ADDR 0x130 +#define HB_DDR_ECC_U_ERR_STAT 0x134 +#define HB_DDR_ECC_U_ERR_DATAL 0x138 +#define HB_DDR_ECC_U_ERR_DATAH 0x13c +#define HB_DDR_ECC_C_ERR_ADDR 0x140 +#define HB_DDR_ECC_C_ERR_STAT 0x144 +#define HB_DDR_ECC_C_ERR_DATAL 0x148 +#define HB_DDR_ECC_C_ERR_DATAH 0x14c +#define HB_DDR_ECC_INT_STATUS 0x180 +#define HB_DDR_ECC_INT_ACK 0x184 +#define HB_DDR_ECC_U_ERR_ID 0x424 +#define HB_DDR_ECC_C_ERR_ID 0x428 + +#define HB_DDR_ECC_INT_STAT_CE 0x8 +#define HB_DDR_ECC_INT_STAT_DOUBLE_CE 0x10 +#define HB_DDR_ECC_INT_STAT_UE 0x20 +#define HB_DDR_ECC_INT_STAT_DOUBLE_UE 0x40 + +struct hb_mc_drvdata { + void __iomem *mc_vbase; +}; + +static irqreturn_t highbank_mc_err_handler(int irq, void *dev_id) +{ + struct mem_ctl_info *mci = dev_id; + struct hb_mc_drvdata *drvdata = mci->pvt_info; + u32 status, err_addr; + + /* Read the interrupt status register */ + status = readl(drvdata->mc_vbase + HB_DDR_ECC_INT_STATUS); + + if (status & HB_DDR_ECC_INT_STAT_UE) { + err_addr = readl(drvdata->mc_vbase + HB_DDR_ECC_U_ERR_ADDR); + edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, + err_addr >> PAGE_SHIFT, + err_addr & ~PAGE_MASK, 0, + 0, 0, -1, + mci->ctl_name, "", NULL); + } + if (status & HB_DDR_ECC_INT_STAT_CE) { + u32 syndrome = readl(drvdata->mc_vbase + HB_DDR_ECC_C_ERR_STAT); + syndrome = (syndrome >> 8) & 0xff; + err_addr = readl(drvdata->mc_vbase + HB_DDR_ECC_C_ERR_ADDR); + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, + err_addr >> PAGE_SHIFT, + err_addr & ~PAGE_MASK, syndrome, + 0, 0, -1, + mci->ctl_name, "", NULL); + } + + /* clear the error, clears the interrupt */ + writel(status, drvdata->mc_vbase + HB_DDR_ECC_INT_ACK); + return IRQ_HANDLED; +} + +static ssize_t highbank_mc_inject_ctrl_store(struct mem_ctl_info *mci, + const char *data, size_t count) +{ + struct hb_mc_drvdata *pdata = mci->pvt_info; + u32 reg; + u8 synd; + if (!isdigit(*data)) + return 0; + + reg = readl(pdata->mc_vbase + HB_DDR_ECC_OPT) & 0x3; + if (!kstrtou8(data, 16, &synd)) { + reg |= synd << 16; + reg |= 0x100; + writel(reg, pdata->mc_vbase + HB_DDR_ECC_OPT); + } + return count; +} + +static struct mcidev_sysfs_attribute highbank_mc_sysfs_attributes[] = { + { + .attr = { + .name = "inject_ctrl", + .mode = (S_IRUGO | S_IWUSR) + }, + .store = highbank_mc_inject_ctrl_store, + }, + { + .attr = {.name = NULL} /* End of list */ + } +}; + +static int __devinit highbank_mc_probe(struct platform_device *pdev) +{ + struct edac_mc_layer layers[2]; + struct mem_ctl_info *mci; + struct hb_mc_drvdata *drvdata; + struct dimm_info *dimm; + struct resource *r; + u32 control; + int irq; + int res = 0; + + layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; + layers[0].size = 1; + layers[0].is_virt_csrow = true; + layers[1].type = EDAC_MC_LAYER_CHANNEL; + layers[1].size = 1; + layers[1].is_virt_csrow = false; + mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, + sizeof(struct hb_mc_drvdata)); + if (!mci) + return -ENOMEM; + + drvdata = mci->pvt_info; + mci->dev = &pdev->dev; + platform_set_drvdata(pdev, mci); + + if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) + return -ENOMEM; + + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!r) { + dev_err(&pdev->dev, "Unable to get mem resource\n"); + res = -ENODEV; + goto err; + } + + if (!devm_request_mem_region(&pdev->dev, r->start, + resource_size(r), dev_name(&pdev->dev))) { + dev_err(&pdev->dev, "Error while requesting mem region\n"); + res = -EBUSY; + goto err; + } + + drvdata->mc_vbase = devm_ioremap(&pdev->dev, + r->start, resource_size(r)); + if (!drvdata->mc_vbase) { + dev_err(&pdev->dev, "Unable to map regs\n"); + res = -ENOMEM; + goto err; + } + + control = readl(drvdata->mc_vbase + HB_DDR_ECC_OPT) & 0x3; + if (!control || (control == 0x2)) { + dev_err(&pdev->dev, "No ECC present, or ECC disabled\n"); + res = -ENODEV; + goto err; + } + + irq = platform_get_irq(pdev, 0); + res = devm_request_irq(&pdev->dev, irq, highbank_mc_err_handler, + 0, dev_name(&pdev->dev), mci); + if (res < 0) { + dev_err(&pdev->dev, "Unable to request irq %d\n", irq); + goto err; + } + + mci->mtype_cap = MEM_FLAG_DDR3; + mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; + mci->edac_cap = EDAC_FLAG_SECDED; + mci->mod_name = dev_name(&pdev->dev); + mci->mod_ver = "1"; + mci->ctl_name = dev_name(&pdev->dev); + mci->scrub_mode = SCRUB_SW_SRC; + mci->mc_driver_sysfs_attributes = highbank_mc_sysfs_attributes; + + /* Only a single 4GB DIMM is supported */ + dimm = mci->dimms; + dimm->nr_pages = (~0UL >> PAGE_SHIFT) + 1; + dimm->grain = 8; + dimm->dtype = DEV_X8; + dimm->mtype = MEM_DDR3; + dimm->edac_mode = EDAC_SECDED; + + res = edac_mc_add_mc(mci); + if (res < 0) + goto err; + + devres_close_group(&pdev->dev, NULL); + return 0; +err: + devres_release_group(&pdev->dev, NULL); + edac_mc_free(mci); + return res; +} + +static int highbank_mc_remove(struct platform_device *pdev) +{ + struct mem_ctl_info *mci = platform_get_drvdata(pdev); + + edac_mc_del_mc(&pdev->dev); + edac_mc_free(mci); + return 0; +} + +static const struct of_device_id hb_ddr_ctrl_of_match[] = { + { .compatible = "calxeda,hb-ddr-ctrl", }, + {}, +}; +MODULE_DEVICE_TABLE(of, hb_ddr_ctrl_of_match); + +static struct platform_driver highbank_mc_edac_driver = { + .probe = highbank_mc_probe, + .remove = highbank_mc_remove, + .driver = { + .name = "hb_mc_edac", + .of_match_table = hb_ddr_ctrl_of_match, + }, +}; + +module_platform_driver(highbank_mc_edac_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Calxeda, Inc."); +MODULE_DESCRIPTION("EDAC Driver for Highbank"); --- linux-3.5.0.orig/drivers/edac/edac_pci_sysfs.c +++ linux-3.5.0/drivers/edac/edac_pci_sysfs.c @@ -257,7 +257,7 @@ struct edac_pci_dev_attribute *edac_pci_dev; edac_pci_dev = (struct edac_pci_dev_attribute *)attr; - if (edac_pci_dev->show) + if (edac_pci_dev->store) return edac_pci_dev->store(edac_pci_dev->value, buffer, count); return -EIO; } --- linux-3.5.0.orig/drivers/bcma/driver_mips.c +++ linux-3.5.0/drivers/bcma/driver_mips.c @@ -115,7 +115,7 @@ bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) & ~(1 << irqflag)); else - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq), 0); + bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0); /* assign the new one */ if (irq == 0) { --- linux-3.5.0.orig/drivers/bcma/main.c +++ linux-3.5.0/drivers/bcma/main.c @@ -131,9 +131,10 @@ static void bcma_unregister_cores(struct bcma_bus *bus) { - struct bcma_device *core; + struct bcma_device *core, *tmp; - list_for_each_entry(core, &bus->cores, list) { + list_for_each_entry_safe(core, tmp, &bus->cores, list) { + list_del(&core->list); if (core->dev_registered) device_unregister(&core->dev); } --- linux-3.5.0.orig/drivers/pnp/pnpacpi/core.c +++ linux-3.5.0/drivers/pnp/pnpacpi/core.c @@ -58,7 +58,7 @@ if (!(('0' <= (c) && (c) <= '9') || ('A' <= (c) && (c) <= 'F'))) \ return 0 #define TEST_ALPHA(c) \ - if (!('@' <= (c) || (c) <= 'Z')) \ + if (!('A' <= (c) && (c) <= 'Z')) \ return 0 static int __init ispnpidacpi(const char *id) { @@ -95,6 +95,9 @@ return -ENODEV; } + if (WARN_ON_ONCE(acpi_dev != dev->data)) + dev->data = acpi_dev; + ret = pnpacpi_build_resource_template(dev, &buffer); if (ret) return ret; --- linux-3.5.0.orig/drivers/pnp/isapnp/core.c +++ linux-3.5.0/drivers/pnp/isapnp/core.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include "../base.h" @@ -1001,7 +1002,7 @@ .disable = isapnp_disable_resources, }; -static int __init isapnp_init(void) +static int __init real_isapnp_init(void) { int cards; struct pnp_card *card; @@ -1095,6 +1096,15 @@ return 0; } +static void __init async_isapnp_init(void *unused, async_cookie_t cookie) +{ + (void)real_isapnp_init(); +} + +static int __init isapnp_init(void) +{ + async_schedule(async_isapnp_init, NULL); +} device_initcall(isapnp_init); /* format is: noisapnp */ --- linux-3.5.0.orig/drivers/scsi/scsi_lib.c +++ linux-3.5.0/drivers/scsi/scsi_lib.c @@ -406,10 +406,6 @@ LIST_HEAD(starved_list); unsigned long flags; - /* if the device is dead, sdev will be NULL, so no queue to run */ - if (!sdev) - return; - shost = sdev->host; if (scsi_target(sdev)->single_lun) scsi_single_lun_run(sdev); @@ -483,15 +479,26 @@ */ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) { + struct scsi_device *sdev = cmd->device; struct request *req = cmd->request; unsigned long flags; + /* + * We need to hold a reference on the device to avoid the queue being + * killed after the unlock and before scsi_run_queue is invoked which + * may happen because scsi_unprep_request() puts the command which + * releases its reference on the device. + */ + get_device(&sdev->sdev_gendev); + spin_lock_irqsave(q->queue_lock, flags); scsi_unprep_request(req); blk_requeue_request(q, req); spin_unlock_irqrestore(q->queue_lock, flags); scsi_run_queue(q); + + put_device(&sdev->sdev_gendev); } void scsi_next_command(struct scsi_cmnd *cmd) @@ -753,7 +760,6 @@ } if (req->cmd_type == REQ_TYPE_BLOCK_PC) { /* SG_IO ioctl from block level */ - req->errors = result; if (result) { if (sense_valid && req->sense) { /* @@ -769,6 +775,10 @@ if (!sense_deferred) error = __scsi_error_from_host_byte(cmd, result); } + /* + * __scsi_error_from_host_byte may have reset the host_byte + */ + req->errors = cmd->result; req->resid_len = scsi_get_resid(cmd); @@ -1370,16 +1380,16 @@ * may be changed after request stacking drivers call the function, * regardless of taking lock or not. * - * When scsi can't dispatch I/Os anymore and needs to kill I/Os - * (e.g. !sdev), scsi needs to return 'not busy'. - * Otherwise, request stacking drivers may hold requests forever. + * When scsi can't dispatch I/Os anymore and needs to kill I/Os scsi + * needs to return 'not busy'. Otherwise, request stacking drivers + * may hold requests forever. */ static int scsi_lld_busy(struct request_queue *q) { struct scsi_device *sdev = q->queuedata; struct Scsi_Host *shost; - if (!sdev) + if (blk_queue_dead(q)) return 0; shost = sdev->host; @@ -1490,12 +1500,6 @@ struct scsi_cmnd *cmd; struct request *req; - if (!sdev) { - while ((req = blk_peek_request(q)) != NULL) - scsi_kill_request(req, q); - return; - } - if(!get_device(&sdev->sdev_gendev)) /* We must be tearing the block queue down already */ return; @@ -1697,20 +1701,6 @@ return q; } -void scsi_free_queue(struct request_queue *q) -{ - unsigned long flags; - - WARN_ON(q->queuedata); - - /* cause scsi_request_fn() to kill all non-finished requests */ - spin_lock_irqsave(q->queue_lock, flags); - q->request_fn(q); - spin_unlock_irqrestore(q->queue_lock, flags); - - blk_cleanup_queue(q); -} - /* * Function: scsi_block_requests() * --- linux-3.5.0.orig/drivers/scsi/scsi_error.c +++ linux-3.5.0/drivers/scsi/scsi_error.c @@ -42,6 +42,8 @@ #include +static void scsi_eh_done(struct scsi_cmnd *scmd); + #define SENSE_TIMEOUT (10*HZ) /* @@ -241,6 +243,14 @@ if (! scsi_command_normalize_sense(scmd, &sshdr)) return FAILED; /* no valid sense data */ + if (scmd->cmnd[0] == TEST_UNIT_READY && scmd->scsi_done != scsi_eh_done) + /* + * nasty: for mid-layer issued TURs, we need to return the + * actual sense data without any recovery attempt. For eh + * issued ones, we need to try to recover and interpret + */ + return SUCCESS; + if (scsi_sense_is_deferred(&sshdr)) return NEEDS_RETRY; @@ -1687,6 +1697,20 @@ * requests are started. */ scsi_run_host_queues(shost); + + /* + * if eh is active and host_eh_scheduled is pending we need to re-run + * recovery. we do this check after scsi_run_host_queues() to allow + * everything pent up since the last eh run a chance to make forward + * progress before we sync again. Either we'll immediately re-run + * recovery or scsi_device_unbusy() will wake us again when these + * pending commands complete. + */ + spin_lock_irqsave(shost->host_lock, flags); + if (shost->host_eh_scheduled) + if (scsi_host_set_state(shost, SHOST_RECOVERY)) + WARN_ON(scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY)); + spin_unlock_irqrestore(shost->host_lock, flags); } /** --- linux-3.5.0.orig/drivers/scsi/scsi_priv.h +++ linux-3.5.0/drivers/scsi/scsi_priv.h @@ -84,7 +84,6 @@ extern void scsi_io_completion(struct scsi_cmnd *, unsigned int); extern void scsi_run_host_queues(struct Scsi_Host *shost); extern struct request_queue *scsi_alloc_queue(struct scsi_device *sdev); -extern void scsi_free_queue(struct request_queue *q); extern int scsi_init_queue(void); extern void scsi_exit_queue(void); struct request_queue; --- linux-3.5.0.orig/drivers/scsi/scsi_debug.c +++ linux-3.5.0/drivers/scsi/scsi_debug.c @@ -2054,7 +2054,7 @@ block = lba + alignment; rem = do_div(block, granularity); - if (rem == 0 && lba + granularity <= end && block < map_size) { + if (rem == 0 && lba + granularity < end && block < map_size) { clear_bit(block, map_storep); if (scsi_debug_lbprz) memset(fake_storep + --- linux-3.5.0.orig/drivers/scsi/storvsc_drv.c +++ linux-3.5.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) @@ -1221,7 +1222,12 @@ /* * At this point, all outstanding requests in the adapter * should have been flushed out and return to us + * There is a potential race here where the host may be in + * the process of responding when we return from here. + * Just wait for all in-transit packets to be accounted for + * before we return from here. */ + storvsc_wait_to_drain(stor_device); return SUCCESS; } --- linux-3.5.0.orig/drivers/scsi/sd.h +++ linux-3.5.0/drivers/scsi/sd.h @@ -67,6 +67,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 */ --- linux-3.5.0.orig/drivers/scsi/virtio_scsi.c +++ linux-3.5.0/drivers/scsi/virtio_scsi.c @@ -198,7 +198,7 @@ int i; for_each_sg(table->sgl, sg_elem, table->nents, i) - sg_set_buf(&sg[idx++], sg_virt(sg_elem), sg_elem->length); + sg[idx++] = *sg_elem; *p_idx = idx; } --- linux-3.5.0.orig/drivers/scsi/scsi_scan.c +++ linux-3.5.0/drivers/scsi/scsi_scan.c @@ -779,6 +779,16 @@ sdev->model = (char *) (sdev->inquiry + 16); sdev->rev = (char *) (sdev->inquiry + 32); + if (strncmp(sdev->vendor, "ATA ", 8) == 0) { + /* + * sata emulation layer device. This is a hack to work around + * the SATL power management specifications which state that + * when the SATL detects the device has gone into standby + * mode, it shall respond with NOT READY. + */ + sdev->allow_restart = 1; + } + if (*bflags & BLIST_ISROM) { sdev->type = TYPE_ROM; sdev->removable = 1; @@ -1717,6 +1727,9 @@ { struct scsi_device *sdev; shost_for_each_device(sdev, shost) { + /* target removed before the device could be added */ + if (sdev->sdev_state == SDEV_DEL) + continue; if (!scsi_host_scan_allowed(shost) || scsi_sysfs_add_sdev(sdev) != 0) __scsi_remove_device(sdev); --- linux-3.5.0.orig/drivers/scsi/dc395x.c +++ linux-3.5.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-3.5.0.orig/drivers/scsi/scsi_sysfs.c +++ linux-3.5.0/drivers/scsi/scsi_sysfs.c @@ -246,11 +246,11 @@ static DEVICE_ATTR(active_mode, S_IRUGO | S_IWUSR, show_shost_active_mode, NULL); -static int check_reset_type(char *str) +static int check_reset_type(const char *str) { - if (strncmp(str, "adapter", 10) == 0) + if (sysfs_streq(str, "adapter")) return SCSI_ADAPTER_RESET; - else if (strncmp(str, "firmware", 10) == 0) + else if (sysfs_streq(str, "firmware")) return SCSI_FIRMWARE_RESET; else return 0; @@ -263,12 +263,9 @@ struct Scsi_Host *shost = class_to_shost(dev); struct scsi_host_template *sht = shost->hostt; int ret = -EINVAL; - char str[10]; int type; - sscanf(buf, "%s", str); - type = check_reset_type(str); - + type = check_reset_type(buf); if (!type) goto exit_store_host_reset; @@ -971,11 +968,8 @@ sdev->host->hostt->slave_destroy(sdev); transport_destroy_device(dev); - /* cause the request function to reject all I/O requests */ - sdev->request_queue->queuedata = NULL; - /* Freeing the queue signals to block that we're done */ - scsi_free_queue(sdev->request_queue); + blk_cleanup_queue(sdev->request_queue); put_device(dev); } @@ -1000,7 +994,6 @@ struct scsi_device *sdev; spin_lock_irqsave(shost->host_lock, flags); - starget->reap_ref++; restart: list_for_each_entry(sdev, &shost->__devices, siblings) { if (sdev->channel != starget->channel || @@ -1014,14 +1007,6 @@ goto restart; } spin_unlock_irqrestore(shost->host_lock, flags); - scsi_target_reap(starget); -} - -static int __remove_child (struct device * dev, void * data) -{ - if (scsi_is_target_device(dev)) - __scsi_remove_target(to_scsi_target(dev)); - return 0; } /** @@ -1034,14 +1019,32 @@ */ void scsi_remove_target(struct device *dev) { - if (scsi_is_target_device(dev)) { - __scsi_remove_target(to_scsi_target(dev)); - return; + struct Scsi_Host *shost = dev_to_shost(dev->parent); + struct scsi_target *starget, *last = NULL; + unsigned long flags; + + /* remove targets being careful to lookup next entry before + * deleting the last + */ + spin_lock_irqsave(shost->host_lock, flags); + list_for_each_entry(starget, &shost->__targets, siblings) { + if (starget->state == STARGET_DEL) + continue; + if (starget->dev.parent == dev || &starget->dev == dev) { + /* assuming new targets arrive at the end */ + starget->reap_ref++; + spin_unlock_irqrestore(shost->host_lock, flags); + if (last) + scsi_target_reap(last); + last = starget; + __scsi_remove_target(starget); + spin_lock_irqsave(shost->host_lock, flags); + } } + spin_unlock_irqrestore(shost->host_lock, flags); - get_device(dev); - device_for_each_child(dev, NULL, __remove_child); - put_device(dev); + if (last) + scsi_target_reap(last); } EXPORT_SYMBOL(scsi_remove_target); --- linux-3.5.0.orig/drivers/scsi/atp870u.c +++ linux-3.5.0/drivers/scsi/atp870u.c @@ -1173,7 +1173,16 @@ outw(val, tmport); outb(2, 0x80); TCM_SYNC: - udelay(0x800); + /* + * The funny division into multiple delays is to accomodate + * arches like ARM where udelay() multiplies its argument by + * a large number to initialize a loop counter. To avoid + * overflow, the maximum supported udelay is 2000 microseconds. + * + * XXX it would be more polite to find a way to use msleep() + */ + mdelay(2); + udelay(48); if ((inb(tmport) & 0x80) == 0x00) { /* bsy ? */ outw(0, tmport--); outb(0, tmport); --- linux-3.5.0.orig/drivers/scsi/sd.c +++ linux-3.5.0/drivers/scsi/sd.c @@ -141,6 +141,7 @@ char *buffer_data; struct scsi_mode_data data; struct scsi_sense_hdr sshdr; + const char *temp = "temporary "; int len; if (sdp->type != TYPE_DISK) @@ -149,6 +150,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 && @@ -161,6 +169,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; @@ -2127,6 +2142,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) @@ -2608,6 +2627,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; @@ -2920,10 +2940,6 @@ if (err) goto err_out; - err = scsi_register_driver(&sd_template.gendrv); - if (err) - goto err_out_class; - sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE, 0, 0, NULL); if (!sd_cdb_cache) { @@ -2937,8 +2953,15 @@ goto err_out_cache; } + err = scsi_register_driver(&sd_template.gendrv); + if (err) + goto err_out_driver; + return 0; +err_out_driver: + mempool_destroy(sd_cdb_pool); + err_out_cache: kmem_cache_destroy(sd_cdb_cache); @@ -2961,10 +2984,10 @@ SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n")); + scsi_unregister_driver(&sd_template.gendrv); mempool_destroy(sd_cdb_pool); kmem_cache_destroy(sd_cdb_cache); - scsi_unregister_driver(&sd_template.gendrv); class_unregister(&sd_disk_class); for (i = 0; i < SD_MAJORS; i++) --- linux-3.5.0.orig/drivers/scsi/hpsa.c +++ linux-3.5.0/drivers/scsi/hpsa.c @@ -99,6 +99,15 @@ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3354}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3355}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3356}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1920}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1921}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1922}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1923}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1924}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1925}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1926}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1928}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x334d}, {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0}, {0,} @@ -118,13 +127,22 @@ {0x3249103C, "Smart Array P812", &SA5_access}, {0x324a103C, "Smart Array P712m", &SA5_access}, {0x324b103C, "Smart Array P711m", &SA5_access}, - {0x3350103C, "Smart Array", &SA5_access}, - {0x3351103C, "Smart Array", &SA5_access}, - {0x3352103C, "Smart Array", &SA5_access}, - {0x3353103C, "Smart Array", &SA5_access}, - {0x3354103C, "Smart Array", &SA5_access}, - {0x3355103C, "Smart Array", &SA5_access}, - {0x3356103C, "Smart Array", &SA5_access}, + {0x3350103C, "Smart Array P222", &SA5_access}, + {0x3351103C, "Smart Array P420", &SA5_access}, + {0x3352103C, "Smart Array P421", &SA5_access}, + {0x3353103C, "Smart Array P822", &SA5_access}, + {0x3354103C, "Smart Array P420i", &SA5_access}, + {0x3355103C, "Smart Array P220i", &SA5_access}, + {0x3356103C, "Smart Array P721m", &SA5_access}, + {0x1920103C, "Smart Array", &SA5_access}, + {0x1921103C, "Smart Array", &SA5_access}, + {0x1922103C, "Smart Array", &SA5_access}, + {0x1923103C, "Smart Array", &SA5_access}, + {0x1924103C, "Smart Array", &SA5_access}, + {0x1925103C, "Smart Array", &SA5_access}, + {0x1926103C, "Smart Array", &SA5_access}, + {0x1928103C, "Smart Array", &SA5_access}, + {0x334d103C, "Smart Array P822se", &SA5_access}, {0xFFFF103C, "Unknown Smart Array", &SA5_access}, }; @@ -1315,8 +1333,9 @@ } break; case CMD_PROTOCOL_ERR: + cmd->result = DID_ERROR << 16; dev_warn(&h->pdev->dev, "cp %p has " - "protocol error \n", cp); + "protocol error\n", cp); break; case CMD_HARDWARE_ERR: cmd->result = DID_ERROR << 16; @@ -3265,7 +3284,7 @@ c->Request.Timeout = 0; /* Don't time out */ memset(&c->Request.CDB[0], 0, sizeof(c->Request.CDB)); c->Request.CDB[0] = cmd; - c->Request.CDB[1] = 0x03; /* Reset target above */ + c->Request.CDB[1] = HPSA_RESET_TYPE_LUN; /* If bytes 4-7 are zero, it means reset the */ /* LunID device */ c->Request.CDB[4] = 0x00; --- linux-3.5.0.orig/drivers/scsi/hosts.c +++ linux-3.5.0/drivers/scsi/hosts.c @@ -290,6 +290,7 @@ struct Scsi_Host *shost = dev_to_shost(dev); struct device *parent = dev->parent; struct request_queue *q; + void *queuedata; scsi_proc_hostdir_rm(shost->hostt); @@ -299,9 +300,9 @@ destroy_workqueue(shost->work_q); q = shost->uspace_req_q; if (q) { - kfree(q->queuedata); - q->queuedata = NULL; - scsi_free_queue(q); + queuedata = q->queuedata; + blk_cleanup_queue(q); + kfree(queuedata); } scsi_destroy_command_freelist(shost); --- linux-3.5.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-3.5.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -4066,7 +4066,6 @@ spin_lock_init(&instance->cmd_pool_lock); spin_lock_init(&instance->hba_lock); spin_lock_init(&instance->completion_lock); - spin_lock_init(&poll_aen_lock); mutex_init(&instance->aen_mutex); mutex_init(&instance->reset_mutex); @@ -5392,6 +5391,8 @@ printk(KERN_INFO "megasas: %s %s\n", MEGASAS_VERSION, MEGASAS_EXT_VERSION); + spin_lock_init(&poll_aen_lock); + support_poll_for_event = 2; support_device_change = 1; --- linux-3.5.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-3.5.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -702,8 +702,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; } @@ -1482,6 +1486,78 @@ return 0; } +static void tcm_qla2xxx_update_sess(struct qla_tgt_sess *sess, port_id_t s_id, + uint16_t loop_id, bool conf_compl_supported) +{ + struct qla_tgt *tgt = sess->tgt; + struct qla_hw_data *ha = tgt->ha; + struct tcm_qla2xxx_lport *lport = ha->tgt.target_lport_ptr; + struct se_node_acl *se_nacl = sess->se_sess->se_node_acl; + struct tcm_qla2xxx_nacl *nacl = container_of(se_nacl, + struct tcm_qla2xxx_nacl, se_node_acl); + u32 key; + + + if (sess->loop_id != loop_id || sess->s_id.b24 != s_id.b24) + pr_info("Updating session %p from port %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x loop_id %d -> %d s_id %x:%x:%x -> %x:%x:%x\n", + sess, + sess->port_name[0], sess->port_name[1], + sess->port_name[2], sess->port_name[3], + sess->port_name[4], sess->port_name[5], + sess->port_name[6], sess->port_name[7], + sess->loop_id, loop_id, + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa, + s_id.b.domain, s_id.b.area, s_id.b.al_pa); + + if (sess->loop_id != loop_id) { + /* + * Because we can shuffle loop IDs around and we + * update different sessions non-atomically, we might + * have overwritten this session's old loop ID + * already, and we might end up overwriting some other + * session that will be updated later. So we have to + * be extra careful and we can't warn about those things... + */ + if (lport->lport_loopid_map[sess->loop_id].se_nacl == se_nacl) + lport->lport_loopid_map[sess->loop_id].se_nacl = NULL; + + lport->lport_loopid_map[loop_id].se_nacl = se_nacl; + + sess->loop_id = loop_id; + } + + if (sess->s_id.b24 != s_id.b24) { + key = (((u32) sess->s_id.b.domain << 16) | + ((u32) sess->s_id.b.area << 8) | + ((u32) sess->s_id.b.al_pa)); + + if (btree_lookup32(&lport->lport_fcport_map, key)) + WARN(btree_remove32(&lport->lport_fcport_map, key) != se_nacl, + "Found wrong se_nacl when updating s_id %x:%x:%x\n", + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa); + else + WARN(1, "No lport_fcport_map entry for s_id %x:%x:%x\n", + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa); + + key = (((u32) s_id.b.domain << 16) | + ((u32) s_id.b.area << 8) | + ((u32) s_id.b.al_pa)); + + if (btree_lookup32(&lport->lport_fcport_map, key)) { + WARN(1, "Already have lport_fcport_map entry for s_id %x:%x:%x\n", + s_id.b.domain, s_id.b.area, s_id.b.al_pa); + btree_update32(&lport->lport_fcport_map, key, se_nacl); + } else { + btree_insert32(&lport->lport_fcport_map, key, se_nacl, GFP_ATOMIC); + } + + sess->s_id = s_id; + nacl->nport_id = key; + } + + sess->conf_compl_supported = conf_compl_supported; +} + /* * Calls into tcm_qla2xxx used by qla2xxx LLD I/O path. */ @@ -1492,6 +1568,7 @@ .free_cmd = tcm_qla2xxx_free_cmd, .free_mcmd = tcm_qla2xxx_free_mcmd, .free_session = tcm_qla2xxx_free_session, + .update_sess = tcm_qla2xxx_update_sess, .check_initiator_node_acl = tcm_qla2xxx_check_initiator_node_acl, .find_sess_by_s_id = tcm_qla2xxx_find_sess_by_s_id, .find_sess_by_loop_id = tcm_qla2xxx_find_sess_by_loop_id, --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_target.h +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_target.h @@ -648,6 +648,7 @@ int (*check_initiator_node_acl)(struct scsi_qla_host *, unsigned char *, void *, uint8_t *, uint16_t); + void (*update_sess)(struct qla_tgt_sess *, port_id_t, uint16_t, bool); struct qla_tgt_sess *(*find_sess_by_loop_id)(struct scsi_qla_host *, const uint16_t); struct qla_tgt_sess *(*find_sess_by_s_id)(struct scsi_qla_host *, --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_target.c +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_target.c @@ -557,6 +557,7 @@ int pmap_len; fc_port_t *fcport; int global_resets; + unsigned long flags; retry: global_resets = atomic_read(&ha->tgt.qla_tgt->tgt_global_resets_count); @@ -625,10 +626,10 @@ sess->s_id.b.area, sess->loop_id, fcport->d_id.b.domain, fcport->d_id.b.al_pa, fcport->d_id.b.area, fcport->loop_id); - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + spin_lock_irqsave(&ha->hardware_lock, flags); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); + spin_unlock_irqrestore(&ha->hardware_lock, flags); res = true; @@ -740,10 +741,9 @@ qlt_undelete_sess(sess); kref_get(&sess->se_sess->sess_kref); - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); + if (sess->local && !local) sess->local = 0; spin_unlock_irqrestore(&ha->hardware_lock, flags); @@ -796,8 +796,7 @@ */ kref_get(&sess->se_sess->sess_kref); - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + sess->conf_compl_supported = (fcport->flags & FCF_CONF_COMP_SUPPORTED); BUILD_BUG_ON(sizeof(sess->port_name) != sizeof(fcport->port_name)); memcpy(sess->port_name, fcport->port_name, sizeof(sess->port_name)); @@ -869,10 +868,8 @@ ql_dbg(ql_dbg_tgt_mgt, vha, 0xf007, "Reappeared sess %p\n", sess); } - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); } if (sess && sess->local) { @@ -1267,8 +1264,27 @@ struct abts_recv_from_24xx *abts, struct qla_tgt_sess *sess) { struct qla_hw_data *ha = vha->hw; + struct se_session *se_sess = sess->se_sess; struct qla_tgt_mgmt_cmd *mcmd; + struct se_cmd *se_cmd; + u32 lun = 0; int rc; + bool found_lun = false; + + spin_lock(&se_sess->sess_cmd_lock); + list_for_each_entry(se_cmd, &se_sess->sess_cmd_list, se_cmd_list) { + struct qla_tgt_cmd *cmd = + container_of(se_cmd, struct qla_tgt_cmd, se_cmd); + if (cmd->tag == abts->exchange_addr_to_abort) { + lun = cmd->unpacked_lun; + found_lun = true; + break; + } + } + spin_unlock(&se_sess->sess_cmd_lock); + + if (!found_lun) + return -ENOENT; ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00f, "qla_target(%d): task abort (tag=%d)\n", @@ -1286,7 +1302,7 @@ mcmd->sess = sess; memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); - rc = ha->tgt.tgt_ops->handle_tmr(mcmd, 0, TMR_ABORT_TASK, + rc = ha->tgt.tgt_ops->handle_tmr(mcmd, lun, TMR_ABORT_TASK, abts->exchange_addr_to_abort); if (rc != 0) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf052, @@ -1403,7 +1419,7 @@ ctio->u.status1.scsi_status = __constant_cpu_to_le16(SS_RESPONSE_INFO_LEN_VALID); ctio->u.status1.response_len = __constant_cpu_to_le16(8); - ((uint32_t *)ctio->u.status1.sense_data)[0] = cpu_to_be32(resp_code); + ctio->u.status1.sense_data[0] = resp_code; qla2x00_start_iocbs(ha, ha->req); } --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_os.c +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_os.c @@ -3801,9 +3801,9 @@ "ISP abort end.\n"); } - if (test_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags)) { + if (test_and_clear_bit(FCPORT_UPDATE_NEEDED, + &base_vha->dpc_flags)) { qla2x00_update_fcports(base_vha); - clear_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags); } if (test_bit(SCR_PENDING, &base_vha->dpc_flags)) { --- linux-3.5.0.orig/drivers/scsi/ibmvscsi/ibmvscsi.c +++ linux-3.5.0/drivers/scsi/ibmvscsi/ibmvscsi.c @@ -1541,6 +1541,9 @@ host_config = &evt_struct->iu.mad.host_config; + /* The transport length field is only 16-bit */ + length = min(0xffff, length); + /* Set up a lun reset SRP command */ memset(host_config, 0x00, sizeof(*host_config)); host_config->common.type = VIOSRP_HOST_CONFIG_TYPE; --- linux-3.5.0.orig/drivers/scsi/bnx2i/bnx2i_hwi.c +++ linux-3.5.0/drivers/scsi/bnx2i/bnx2i_hwi.c @@ -1264,6 +1264,9 @@ int rc = 0; u64 mask64; + memset(&iscsi_init, 0x00, sizeof(struct iscsi_kwqe_init1)); + memset(&iscsi_init2, 0x00, sizeof(struct iscsi_kwqe_init2)); + bnx2i_adjust_qp_size(hba); iscsi_init.flags = --- linux-3.5.0.orig/drivers/scsi/libsas/sas_expander.c +++ linux-3.5.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); @@ -868,7 +880,7 @@ } /* See if this phy is part of a wide port */ -static int sas_ex_join_wide_port(struct domain_device *parent, int phy_id) +static bool sas_ex_join_wide_port(struct domain_device *parent, int phy_id) { struct ex_phy *phy = &parent->ex_dev.ex_phy[phy_id]; int i; @@ -884,11 +896,11 @@ sas_port_add_phy(ephy->port, phy->phy); phy->port = ephy->port; phy->phy_state = PHY_DEVICE_DISCOVERED; - return 0; + return true; } } - return -ENODEV; + return false; } static struct domain_device *sas_ex_discover_expander( @@ -1030,8 +1042,7 @@ return res; } - res = sas_ex_join_wide_port(dev, phy_id); - if (!res) { + if (sas_ex_join_wide_port(dev, phy_id)) { SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n", phy_id, SAS_ADDR(ex_phy->attached_sas_addr)); return res; @@ -1077,8 +1088,7 @@ if (SAS_ADDR(ex->ex_phy[i].attached_sas_addr) == SAS_ADDR(child->sas_addr)) { ex->ex_phy[i].phy_state= PHY_DEVICE_DISCOVERED; - res = sas_ex_join_wide_port(dev, i); - if (!res) + if (sas_ex_join_wide_port(dev, i)) SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n", i, SAS_ADDR(ex->ex_phy[i].attached_sas_addr)); @@ -1943,32 +1953,20 @@ { struct ex_phy *ex_phy = &dev->ex_dev.ex_phy[phy_id]; struct domain_device *child; - bool found = false; - int res, i; + int res; SAS_DPRINTK("ex %016llx phy%d new device attached\n", SAS_ADDR(dev->sas_addr), phy_id); res = sas_ex_phy_discover(dev, phy_id); if (res) - goto out; - /* to support the wide port inserted */ - for (i = 0; i < dev->ex_dev.num_phys; i++) { - struct ex_phy *ex_phy_temp = &dev->ex_dev.ex_phy[i]; - if (i == phy_id) - continue; - if (SAS_ADDR(ex_phy_temp->attached_sas_addr) == - SAS_ADDR(ex_phy->attached_sas_addr)) { - found = true; - break; - } - } - if (found) { - sas_ex_join_wide_port(dev, phy_id); + return res; + + if (sas_ex_join_wide_port(dev, phy_id)) return 0; - } + res = sas_ex_discover_devices(dev, phy_id); - if (!res) - goto out; + if (res) + return res; list_for_each_entry(child, &dev->ex_dev.children, siblings) { if (SAS_ADDR(child->sas_addr) == SAS_ADDR(ex_phy->attached_sas_addr)) { @@ -1978,7 +1976,6 @@ break; } } -out: return res; } @@ -2109,9 +2106,7 @@ struct domain_device *dev = NULL; res = sas_find_bcast_dev(port_dev, &dev); - if (res) - goto out; - if (dev) { + while (res == 0 && dev) { struct expander_device *ex = &dev->ex_dev; int i = 0, phy_id; @@ -2123,8 +2118,10 @@ res = sas_rediscover(dev, phy_id); i = phy_id + 1; } while (i < ex->num_phys); + + dev = NULL; + res = sas_find_bcast_dev(port_dev, &dev); } -out: return res; } --- linux-3.5.0.orig/drivers/scsi/lpfc/Makefile +++ linux-3.5.0/drivers/scsi/lpfc/Makefile @@ -22,7 +22,9 @@ ccflags-$(GCOV) := -fprofile-arcs -ftest-coverage ccflags-$(GCOV) += -O0 +ifdef WARNINGS_BECOME_ERRORS ccflags-y += -Werror +endif obj-$(CONFIG_SCSI_LPFC) := lpfc.o --- linux-3.5.0.orig/drivers/scsi/mpt2sas/mpt2sas_base.c +++ linux-3.5.0/drivers/scsi/mpt2sas/mpt2sas_base.c @@ -1209,6 +1209,13 @@ u16 message_control; + /* Check whether controller SAS2008 B0 controller, + if it is SAS2008 B0 controller use IO-APIC instead of MSIX */ + if (ioc->pdev->device == MPI2_MFGPAGE_DEVID_SAS2008 && + ioc->pdev->revision == 0x01) { + return -EINVAL; + } + base = pci_find_capability(ioc->pdev, PCI_CAP_ID_MSIX); if (!base) { dfailprintk(ioc, printk(MPT2SAS_INFO_FMT "msix not " @@ -2424,10 +2431,13 @@ } /* command line tunables for max controller queue depth */ - if (max_queue_depth != -1) - max_request_credit = (max_queue_depth < facts->RequestCredit) - ? max_queue_depth : facts->RequestCredit; - else + if (max_queue_depth != -1 && max_queue_depth != 0) { + max_request_credit = min_t(u16, max_queue_depth + + ioc->hi_priority_depth + ioc->internal_depth, + facts->RequestCredit); + if (max_request_credit > MAX_HBA_QUEUE_DEPTH) + max_request_credit = MAX_HBA_QUEUE_DEPTH; + } else max_request_credit = min_t(u16, facts->RequestCredit, MAX_HBA_QUEUE_DEPTH); @@ -2502,7 +2512,7 @@ /* set the scsi host can_queue depth * with some internal commands that could be outstanding */ - ioc->shost->can_queue = ioc->scsiio_depth - (2); + ioc->shost->can_queue = ioc->scsiio_depth; dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "scsi host: " "can_queue depth (%d)\n", ioc->name, ioc->shost->can_queue)); --- linux-3.5.0.orig/drivers/scsi/isci/request.c +++ linux-3.5.0/drivers/scsi/isci/request.c @@ -1972,7 +1972,7 @@ frame_index, (void **)&frame_buffer); - sci_controller_copy_sata_response(&ireq->stp.req, + sci_controller_copy_sata_response(&ireq->stp.rsp, frame_header, frame_buffer); --- linux-3.5.0.orig/drivers/scsi/isci/init.c +++ linux-3.5.0/drivers/scsi/isci/init.c @@ -630,7 +630,7 @@ return -ENOMEM; pci_set_drvdata(pdev, pci_info); - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) orom = isci_get_efi_var(pdev); if (!orom) @@ -641,7 +641,6 @@ orom->hdr.version)) { dev_warn(&pdev->dev, "[%d]: invalid oem parameters detected, falling back to firmware\n", i); - devm_kfree(&pdev->dev, orom); orom = NULL; break; } --- linux-3.5.0.orig/drivers/scsi/isci/probe_roms.c +++ linux-3.5.0/drivers/scsi/isci/probe_roms.c @@ -104,7 +104,6 @@ if (i >= len) { dev_err(&pdev->dev, "oprom parse error\n"); - devm_kfree(&pdev->dev, rom); rom = NULL; } pci_unmap_biosrom(oprom); --- linux-3.5.0.orig/drivers/scsi/device_handler/scsi_dh_alua.c +++ linux-3.5.0/drivers/scsi/device_handler/scsi_dh_alua.c @@ -590,8 +590,7 @@ h->state = TPGS_STATE_STANDBY; break; case TPGS_STATE_OFFLINE: - case TPGS_STATE_UNAVAILABLE: - /* Path unusable for unavailable/offline */ + /* Path unusable */ err = SCSI_DH_DEV_OFFLINED; break; default: --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_94xx.h +++ linux-3.5.0/drivers/scsi/mvsas/mv_94xx.h @@ -258,21 +258,11 @@ #define SPI_ADDR_VLD_94XX (1U << 1) #define SPI_CTRL_SpiStart_94XX (1U << 0) -#define mv_ffc(x) ffz(x) - static inline int mv_ffc64(u64 v) { - int i; - i = mv_ffc((u32)v); - if (i >= 0) - return i; - i = mv_ffc((u32)(v>>32)); - - if (i != 0) - return 32 + i; - - return -1; + u64 x = ~v; + return x ? __ffs64(x) : -1; } #define r_reg_set_enable(i) \ --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_sas.c +++ linux-3.5.0/drivers/scsi/mvsas/mv_sas.c @@ -1630,7 +1630,7 @@ mv_dprintk("mvs_abort_task() mvi=%p task=%p " "slot=%p slot_idx=x%x\n", mvi, task, slot, slot_idx); - mvs_tmf_timedout((unsigned long)task); + task->task_state_flags |= SAS_TASK_STATE_ABORTED; mvs_slot_task_free(mvi, task, slot, slot_idx); rc = TMF_RESP_FUNC_COMPLETE; goto out; --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_sas.h +++ linux-3.5.0/drivers/scsi/mvsas/mv_sas.h @@ -69,7 +69,7 @@ #define DEV_IS_EXPANDER(type) \ ((type == EDGE_DEV) || (type == FANOUT_DEV)) -#define bit(n) ((u32)1 << n) +#define bit(n) ((u64)1 << n) #define for_each_phy(__lseq_mask, __mc, __lseq) \ for ((__mc) = (__lseq_mask), (__lseq) = 0; \ --- linux-3.5.0.orig/drivers/video/fsl-diu-fb.c +++ linux-3.5.0/drivers/video/fsl-diu-fb.c @@ -922,7 +922,7 @@ #define PF_COMP_0_MASK 0x0000000F #define PF_COMP_0_SHIFT 0 -#define MAKE_PF(alpha, red, blue, green, size, c0, c1, c2, c3) \ +#define MAKE_PF(alpha, red, green, blue, size, c0, c1, c2, c3) \ cpu_to_le32(PF_BYTE_F | (alpha << PF_ALPHA_C_SHIFT) | \ (blue << PF_BLUE_C_SHIFT) | (green << PF_GREEN_C_SHIFT) | \ (red << PF_RED_C_SHIFT) | (c3 << PF_COMP_3_SHIFT) | \ @@ -932,10 +932,10 @@ switch (bits_per_pixel) { case 32: /* 0x88883316 */ - return MAKE_PF(3, 2, 0, 1, 3, 8, 8, 8, 8); + return MAKE_PF(3, 2, 1, 0, 3, 8, 8, 8, 8); case 24: /* 0x88082219 */ - return MAKE_PF(4, 0, 1, 2, 2, 0, 8, 8, 8); + return MAKE_PF(4, 0, 1, 2, 2, 8, 8, 8, 0); case 16: /* 0x65053118 */ return MAKE_PF(4, 2, 1, 0, 1, 5, 6, 5, 0); --- linux-3.5.0.orig/drivers/video/atmel_lcdfb.c +++ linux-3.5.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-3.5.0.orig/drivers/video/fbmem.c +++ linux-3.5.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,33 +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; - /* This is an IO map - tell maydump to skip this VMA */ - vma->vm_flags |= VM_IO | VM_RESERVED; + 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 @@ -1651,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; } @@ -1667,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) @@ -1683,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); @@ -1854,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-3.5.0.orig/drivers/video/udlfb.c +++ linux-3.5.0/drivers/video/udlfb.c @@ -647,7 +647,7 @@ result = fb_sys_write(info, buf, count, ppos); if (result > 0) { - int start = max((int)(offset / info->fix.line_length) - 1, 0); + int start = max((int)(offset / info->fix.line_length), 0); int lines = min((u32)((result / info->fix.line_length) + 1), (u32)info->var.yres); --- linux-3.5.0.orig/drivers/video/fbsysfs.c +++ linux-3.5.0/drivers/video/fbsysfs.c @@ -177,6 +177,8 @@ if (i * sizeof(struct fb_videomode) != count) return -EINVAL; + if (!lock_fb_info(fb_info)) + return -ENODEV; console_lock(); list_splice(&fb_info->modelist, &old_list); fb_videomode_to_modelist((const struct fb_videomode *)buf, i, @@ -188,6 +190,7 @@ fb_destroy_modelist(&old_list); console_unlock(); + unlock_fb_info(fb_info); return 0; } --- linux-3.5.0.orig/drivers/video/mxsfb.c +++ linux-3.5.0/drivers/video/mxsfb.c @@ -367,7 +367,8 @@ loop--; } - writel(VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4 + REG_CLR); + reg = readl(host->base + LCDC_VDCTRL4); + writel(reg & ~VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4); clk_disable_unprepare(host->clk); --- linux-3.5.0.orig/drivers/video/Kconfig +++ linux-3.5.0/drivers/video/Kconfig @@ -753,8 +753,8 @@ If unsure, say N. config FB_VESA - bool "VESA VGA graphics support" - depends on (FB = y) && X86 + tristate "VESA VGA graphics support" + depends on FB && X86 select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT --- linux-3.5.0.orig/drivers/video/smscufx.c +++ linux-3.5.0/drivers/video/smscufx.c @@ -904,7 +904,7 @@ result = fb_sys_write(info, buf, count, ppos); if (result > 0) { - int start = max((int)(offset / info->fix.line_length) - 1, 0); + int start = max((int)(offset / info->fix.line_length), 0); int lines = min((u32)((result / info->fix.line_length) + 1), (u32)info->var.yres); --- linux-3.5.0.orig/drivers/video/vesafb.c +++ linux-3.5.0/drivers/video/vesafb.c @@ -27,6 +27,12 @@ #define dac_reg (0x3c8) #define dac_val (0x3c9) +struct vesafb_info +{ + u32 pseudo_palette[256]; + int mtrr_hdl; +}; + /* --------------------------------------------------------------------- */ static struct fb_var_screeninfo vesafb_defined __initdata = { @@ -40,22 +46,43 @@ .vmode = FB_VMODE_NONINTERLACED, }; -static struct fb_fix_screeninfo vesafb_fix __initdata = { +static struct fb_fix_screeninfo vesafb_fix = { .id = "VESA VGA", .type = FB_TYPE_PACKED_PIXELS, .accel = FB_ACCEL_NONE, }; +#ifndef MODULE static int inverse __read_mostly; -static int mtrr __read_mostly; /* disable mtrr */ +#endif +static int mtrr __read_mostly = 3; /* disable mtrr */ static int vram_remap __initdata; /* Set amount of memory to be used */ static int vram_total __initdata; /* Set total amount of memory */ static int pmi_setpal __read_mostly = 1; /* pmi for palette changes ??? */ +static int redraw __read_mostly; static int ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */ +static int ywrap __read_mostly; static void (*pmi_start)(void) __read_mostly; static void (*pmi_pal) (void) __read_mostly; static int depth __read_mostly; static int vga_compat __read_mostly; + +module_param(redraw, bool, 0); +module_param(ypan, bool, 0); +module_param(ywrap, bool, 0); +module_param_named(vgapal, pmi_setpal, invbool, 0); +MODULE_PARM_DESC(vgapal, "Use VGA for setting palette (default)"); +module_param_named(pmipal, pmi_setpal, bool, 0); +MODULE_PARM_DESC(pmipal, "Use PMI for setting palette"); +module_param(mtrr, uint, 0); +MODULE_PARM_DESC(mtrr, "Enable MTRR support (default)"); +module_param_named(nomtrr, mtrr, invbool, 0); +MODULE_PARM_DESC(nomtrr, "Disable MTRR support"); +module_param(vram_remap, int, 0); +MODULE_PARM_DESC(vram_remap, "Set total amount of memory to be used"); +module_param(vram_total, int, 0); +MODULE_PARM_DESC(vram_total, "Total amount of memory"); + /* --------------------------------------------------------------------- */ static int vesafb_pan_display(struct fb_var_screeninfo *var, @@ -192,6 +219,7 @@ .fb_imageblit = cfb_imageblit, }; +#ifndef MODULE static int __init vesafb_setup(char *options) { char *this_opt; @@ -225,10 +253,12 @@ } return 0; } +#endif static int __init vesafb_probe(struct platform_device *dev) { struct fb_info *info; + struct vesafb_info *vfb_info; int i, err; unsigned int size_vmode; unsigned int size_remap; @@ -287,13 +317,14 @@ spaces our resource handlers simply don't know about */ } - info = framebuffer_alloc(sizeof(u32) * 256, &dev->dev); + info = framebuffer_alloc(sizeof(struct vesafb_info), &dev->dev); if (!info) { release_mem_region(vesafb_fix.smem_start, size_total); return -ENOMEM; } - info->pseudo_palette = info->par; - info->par = NULL; + vfb_info = (struct vesafb_info *) info->par; + vfb_info->mtrr_hdl = -1; + info->pseudo_palette = vfb_info->pseudo_palette; /* set vesafb aperture size for generic probing */ info->apertures = alloc_apertures(1); @@ -423,17 +454,15 @@ } if (type) { - int rc; - /* Find the largest power-of-two */ temp_size = roundup_pow_of_two(temp_size); /* Try and find a power of two to add */ do { - rc = mtrr_add(vesafb_fix.smem_start, temp_size, + vfb_info->mtrr_hdl = mtrr_add(vesafb_fix.smem_start, temp_size, type, 1); temp_size >>= 1; - } while (temp_size >= PAGE_SIZE && rc == -EINVAL); + } while (temp_size >= PAGE_SIZE && vfb_info->mtrr_hdl == -EINVAL); } } #endif @@ -495,7 +524,27 @@ return err; } +static int __exit vesafb_remove(struct platform_device *device) +{ + struct fb_info *info = dev_get_drvdata(&device->dev); + + unregister_framebuffer(info); +#ifdef CONFIG_MTRR + { + struct vesafb_info *vfb_info = (struct vesafb_info *) info->par; + if (vfb_info->mtrr_hdl >= 0) + mtrr_del(vfb_info->mtrr_hdl, 0, 0); + } +#endif + iounmap(info->screen_base); + framebuffer_release(info); + release_mem_region(vesafb_fix.smem_start, vesafb_fix.smem_len); + + return 0; +} + static struct platform_driver vesafb_driver = { + .remove = vesafb_remove, .driver = { .name = "vesafb", }, @@ -506,11 +555,18 @@ static int __init vesafb_init(void) { int ret; +#ifndef MODULE char *option = NULL; /* ignore error return of fb_get_options */ fb_get_options("vesafb", &option); vesafb_setup(option); +#else + if (redraw) + ypan = 0; + if (ywrap) + ypan = 2; +#endif vesafb_device = platform_device_alloc("vesafb", 0); if (!vesafb_device) @@ -530,6 +586,14 @@ return ret; } + +static void __exit vesafb_exit(void) +{ + platform_device_unregister(vesafb_device); + platform_driver_unregister(&vesafb_driver); +} + module_init(vesafb_init); +module_exit(vesafb_exit); MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/drivers/video/console/fbcon.c +++ linux-3.5.0/drivers/video/console/fbcon.c @@ -372,8 +372,15 @@ struct vc_data *vc = NULL; int c; int mode; + int ret; + + /* FIXME: we should sort out the unbind locking instead */ + /* instead we just fail to flash the cursor if we can't get + * the lock instead of blocking fbcon deinit */ + ret = console_trylock(); + if (ret == 0) + return; - console_lock(); if (ops && ops->currcon != -1) vc = vc_cons[ops->currcon].d; @@ -522,6 +529,33 @@ return retval; } +static int do_fbcon_takeover(int show_logo) +{ + int err, i; + + if (!num_registered_fb) + return -ENODEV; + + if (!show_logo) + logo_shown = FBCON_LOGO_DONTSHOW; + + for (i = first_fb_vc; i <= last_fb_vc; i++) + con2fb_map[i] = info_idx; + + err = do_take_over_console(&fb_con, first_fb_vc, last_fb_vc, + fbcon_is_default); + + if (err) { + for (i = first_fb_vc; i <= last_fb_vc; i++) + con2fb_map[i] = -1; + info_idx = -1; + } else { + fbcon_has_console_bind = 1; + } + + return err; +} + static int fbcon_takeover(int show_logo) { int err, i; @@ -808,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) { @@ -825,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) @@ -833,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); @@ -860,7 +895,6 @@ if (!search_fb_in_map(info_idx)) info_idx = newidx; - console_unlock(); return err; } @@ -983,7 +1017,7 @@ } /* Setup default font */ - if (!p->fontdata) { + if (!p->fontdata && !vc->vc_font.data) { if (!fontname[0] || !(font = find_font(fontname))) font = get_default_font(info->var.xres, info->var.yres, @@ -993,6 +1027,8 @@ vc->vc_font.height = font->height; vc->vc_font.data = (void *)(p->fontdata = font->data); vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */ + } else { + p->fontdata = vc->vc_font.data; } cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres); @@ -1152,9 +1188,9 @@ ops->p = &fb_display[fg_console]; } -static void fbcon_free_font(struct display *p) +static void fbcon_free_font(struct display *p, bool freefont) { - if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) + if (freefont && p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int)); p->fontdata = NULL; p->userfont = 0; @@ -1166,8 +1202,8 @@ struct fb_info *info; struct fbcon_ops *ops; int idx; + bool free_font = true; - fbcon_free_font(p); idx = con2fb_map[vc->vc_num]; if (idx == -1) @@ -1178,6 +1214,8 @@ if (!info) goto finished; + if (info->flags & FBINFO_MISC_FIRMWARE) + free_font = false; ops = info->fbcon_par; if (!ops) @@ -1189,6 +1227,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(); @@ -2970,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) @@ -2985,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; @@ -3011,6 +3054,7 @@ return ret; } +/* called with console_lock held */ static int fbcon_fb_unregistered(struct fb_info *info) { int i, idx; @@ -3043,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; @@ -3092,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; @@ -3108,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) @@ -3244,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-3.5.0.orig/drivers/video/console/vgacon.c +++ linux-3.5.0/drivers/video/console/vgacon.c @@ -1064,7 +1064,7 @@ unsigned short video_port_status = vga_video_port_reg + 6; int font_select = 0x00, beg, i; char *charmap; - + bool clear_attribs = false; if (vga_video_type != VIDEO_TYPE_EGAM) { charmap = (char *) VGA_MAP_MEM(colourmap, 0); beg = 0x0e; @@ -1169,12 +1169,6 @@ /* if 512 char mode is already enabled don't re-enable it. */ if ((set) && (ch512 != vga_512_chars)) { - /* attribute controller */ - for (i = 0; i < MAX_NR_CONSOLES; i++) { - struct vc_data *c = vc_cons[i].d; - if (c && c->vc_sw == &vga_con) - c->vc_hi_font_mask = ch512 ? 0x0800 : 0; - } vga_512_chars = ch512; /* 256-char: enable intensity bit 512-char: disable intensity bit */ @@ -1185,8 +1179,22 @@ it means, but it works, and it appears necessary */ inb_p(video_port_status); vga_wattr(state->vgabase, VGA_AR_ENABLE_DISPLAY, 0); + clear_attribs = true; } raw_spin_unlock_irq(&vga_lock); + + if (clear_attribs) { + for (i = 0; i < MAX_NR_CONSOLES; i++) { + struct vc_data *c = vc_cons[i].d; + if (c && c->vc_sw == &vga_con) { + /* force hi font mask to 0, so we always clear + the bit on either transition */ + c->vc_hi_font_mask = 0x00; + clear_buffer_attributes(c); + c->vc_hi_font_mask = ch512 ? 0x0800 : 0; + } + } + } return 0; } --- linux-3.5.0.orig/drivers/video/omap2/omapfb/omapfb-main.c +++ linux-3.5.0/drivers/video/omap2/omapfb/omapfb-main.c @@ -1188,7 +1188,7 @@ break; if (regno < 16) { - u16 pal; + u32 pal; pal = ((red >> (16 - var->red.length)) << var->red.offset) | ((green >> (16 - var->green.length)) << --- linux-3.5.0.orig/drivers/video/via/via_clock.c +++ linux-3.5.0/drivers/video/via/via_clock.c @@ -25,6 +25,7 @@ #include #include +#include #include "via_clock.h" #include "global.h" #include "debug.h" @@ -289,6 +290,10 @@ printk(KERN_INFO "Using undocumented set PLL.\n%s", via_slap); } +static void noop_set_clock_state(u8 state) +{ +} + void via_clock_init(struct via_clock *clock, int gfx_chip) { switch (gfx_chip) { @@ -346,4 +351,18 @@ break; } + + if (machine_is_olpc()) { + /* The OLPC XO-1.5 cannot suspend/resume reliably if the + * IGA1/IGA2 clocks are set as on or off (memory rot + * occasionally happens during suspend under such + * configurations). + * + * The only known stable scenario is to leave this bits as-is, + * which in their default states are documented to enable the + * clock only when it is needed. + */ + clock->set_primary_clock_state = noop_set_clock_state; + clock->set_secondary_clock_state = noop_set_clock_state; + } } --- linux-3.5.0.orig/drivers/video/backlight/adp8860_bl.c +++ linux-3.5.0/drivers/video/backlight/adp8860_bl.c @@ -783,7 +783,7 @@ static int adp8860_i2c_resume(struct i2c_client *client) { - adp8860_set_bits(client, ADP8860_MDCR, NSTBY); + adp8860_set_bits(client, ADP8860_MDCR, NSTBY | BLEN); return 0; } --- linux-3.5.0.orig/drivers/video/backlight/adp8870_bl.c +++ linux-3.5.0/drivers/video/backlight/adp8870_bl.c @@ -957,7 +957,7 @@ static int adp8870_i2c_resume(struct i2c_client *client) { - adp8870_set_bits(client, ADP8870_MDCR, NSTBY); + adp8870_set_bits(client, ADP8870_MDCR, NSTBY | BLEN); return 0; } --- linux-3.5.0.orig/drivers/mfd/adp5520.c +++ linux-3.5.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-3.5.0.orig/drivers/mfd/rts5227.c +++ linux-3.5.0/drivers/mfd/rts5227.c @@ -0,0 +1,234 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + * + * Roger Tseng + * No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static int rts5227_extra_init_hw(struct rtsx_pcr *pcr) +{ + u16 cap; + + rtsx_pci_init_cmd(pcr); + + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02); + /* Switch LDO3318 source from DV33 to card_3v3 */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x01); + /* LED shine disabled, set initial shine cycle period */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OLT_LED_CTL, 0x0F, 0x02); + /* Configure LTR */ + /*pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &cap);*/ cap=0; /*backport*/ + if (cap & PCI_EXP_LTR_EN) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LTR_CTL, 0xFF, 0xA3); + /* Configure OBFF */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OBFF_CFG, 0x03, 0x03); + /* Configure force_clock_req + * Maybe We should define 0xFF03 as some name + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, 0xFF03, 0x08, 0x08); + /* Correct driving */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_CLK_DRIVE_SEL, 0xFF, 0x96); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_CMD_DRIVE_SEL, 0xFF, 0x96); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_DAT_DRIVE_SEL, 0xFF, 0x96); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5227_optimize_phy(struct rtsx_pcr *pcr) +{ + /* Optimize RX sensitivity */ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42); +} + +static int rts5227_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02); +} + +static int rts5227_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); +} + +static int rts5227_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08); +} + +static int rts5227_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00); +} + +static int rts5227_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_PARTIAL_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x02); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x06); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5227_card_power_off(struct rtsx_pcr *pcr, int card) +{ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK | PMOS_STRG_MASK, + SD_POWER_OFF | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X00); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5227_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + u8 drive_sel; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + drive_sel = 0x96; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_phy_register(pcr, 0x11, 0x3C02); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C80 | 0x24); + if (err < 0) + return err; + drive_sel = 0xB3; + } else { + return -EINVAL; + } + + /* set pad drive */ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CLK_DRIVE_SEL, + 0xFF, drive_sel); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CMD_DRIVE_SEL, + 0xFF, drive_sel); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DAT_DRIVE_SEL, + 0xFF, drive_sel); + return rtsx_pci_send_cmd(pcr, 100); +} + +static const struct pcr_ops rts5227_pcr_ops = { + .extra_init_hw = rts5227_extra_init_hw, + .optimize_phy = rts5227_optimize_phy, + .turn_on_led = rts5227_turn_on_led, + .turn_off_led = rts5227_turn_off_led, + .enable_auto_blink = rts5227_enable_auto_blink, + .disable_auto_blink = rts5227_disable_auto_blink, + .card_power_on = rts5227_card_power_on, + .card_power_off = rts5227_card_power_off, + .switch_output_voltage = rts5227_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5227_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5227_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5227_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5227_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5227_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rts5227_pcr_ops; + + pcr->sd_pull_ctl_enable_tbl = rts5227_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = rts5227_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = rts5227_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5227_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/mfd/mfd-core.c +++ linux-3.5.0/drivers/mfd/mfd-core.c @@ -19,6 +19,10 @@ #include #include +static struct device_type mfd_dev_type = { + .name = "mfd_device", +}; + int mfd_cell_enable(struct platform_device *pdev) { const struct mfd_cell *cell = mfd_get_cell(pdev); @@ -88,6 +92,7 @@ goto fail_device; pdev->dev.parent = parent; + pdev->dev.type = &mfd_dev_type; if (cell->pdata_size) { ret = platform_device_add_data(pdev, @@ -183,10 +188,16 @@ static int mfd_remove_devices_fn(struct device *dev, void *c) { - struct platform_device *pdev = to_platform_device(dev); - const struct mfd_cell *cell = mfd_get_cell(pdev); + struct platform_device *pdev; + const struct mfd_cell *cell; atomic_t **usage_count = c; + if (dev->type != &mfd_dev_type) + return 0; + + pdev = to_platform_device(dev); + cell = mfd_get_cell(pdev); + /* find the base address of usage_count pointers (for freeing) */ if (!*usage_count || (cell->usage_count < *usage_count)) *usage_count = cell->usage_count; --- linux-3.5.0.orig/drivers/mfd/Makefile +++ linux-3.5.0/drivers/mfd/Makefile @@ -7,6 +7,9 @@ obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o +rtsx_pci-objs := rtsx_pcr.o rts5209.o rts5229.o rtl8411.o rts5227.o +obj-$(CONFIG_MFD_RTSX_PCI) += rtsx_pci.o + obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o obj-$(CONFIG_HTC_I2CPLD) += htc-i2cpld.o --- linux-3.5.0.orig/drivers/mfd/Kconfig +++ linux-3.5.0/drivers/mfd/Kconfig @@ -38,6 +38,15 @@ lines on the SM501. The platform data is used to supply the base number for the first GPIO line to register. +config MFD_RTSX_PCI + tristate "Support for Realtek PCI-E card reader" + depends on PCI + help + This supports for Realtek PCI-Express card reader including rts5209, + rts5229, rtl8411, etc. Realtek card reader supports access to many + types of memory cards, such as Memory Stick, Memory Stick Pro, + Secure Digital and MultiMediaCard. + config MFD_ASIC3 bool "Support for Compaq ASIC3" depends on GENERIC_HARDIRQS && GPIOLIB && ARM --- linux-3.5.0.orig/drivers/mfd/ezx-pcap.c +++ linux-3.5.0/drivers/mfd/ezx-pcap.c @@ -202,7 +202,7 @@ } local_irq_enable(); ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr); - } while (gpio_get_value(irq_to_gpio(pcap->spi->irq))); + } while (gpio_get_value(pdata->gpio)); } static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc) --- linux-3.5.0.orig/drivers/mfd/rts5209.c +++ linux-3.5.0/drivers/mfd/rts5209.c @@ -0,0 +1,252 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rts5209_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + val = rtsx_pci_readb(pcr, 0x1C); + return val & 0x0F; +} + +static void rts5209_init_vendor_cfg(struct rtsx_pcr *pcr) +{ + u32 val; + + rtsx_pci_read_config_dword(pcr, 0x724, &val); + dev_dbg(&(pcr->pci->dev), "Cfg 0x724: 0x%x\n", val); + + if (!(val & 0x80)) { + if (val & 0x08) + pcr->ms_pmos = false; + else + pcr->ms_pmos = true; + } +} + +static int rts5209_extra_init_hw(struct rtsx_pcr *pcr) +{ + rtsx_pci_init_cmd(pcr); + + /* Turn off LED */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO, 0xFF, 0x03); + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO_DIR, 0xFF, 0x03); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5209_optimize_phy(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xB966); +} + +static int rts5209_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); +} + +static int rts5209_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); +} + +static int rts5209_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); +} + +static int rts5209_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); +} + +static int rts5209_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + u8 pwr_mask, partial_pwr_on, pwr_on; + + pwr_mask = SD_POWER_MASK; + partial_pwr_on = SD_PARTIAL_POWER_ON; + pwr_on = SD_POWER_ON; + + if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + pwr_mask = MS_POWER_MASK; + partial_pwr_on = MS_PARTIAL_POWER_ON; + pwr_on = MS_POWER_ON; + } + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + pwr_mask, partial_pwr_on); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x04); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, pwr_mask, pwr_on); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x00); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5209_card_power_off(struct rtsx_pcr *pcr, int card) +{ + u8 pwr_mask, pwr_off; + + pwr_mask = SD_POWER_MASK; + pwr_off = SD_POWER_OFF; + + if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + pwr_mask = MS_POWER_MASK; + pwr_off = MS_POWER_OFF; + } + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + pwr_mask | PMOS_STRG_MASK, pwr_off | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X06); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5209_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static const struct pcr_ops rts5209_pcr_ops = { + .extra_init_hw = rts5209_extra_init_hw, + .optimize_phy = rts5209_optimize_phy, + .turn_on_led = rts5209_turn_on_led, + .turn_off_led = rts5209_turn_off_led, + .enable_auto_blink = rts5209_enable_auto_blink, + .disable_auto_blink = rts5209_disable_auto_blink, + .card_power_on = rts5209_card_power_on, + .card_power_off = rts5209_card_power_off, + .switch_output_voltage = rts5209_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5209_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5209_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5209_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5209_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5209_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | + EXTRA_CAPS_SD_SDR104 | EXTRA_CAPS_MMC_8BIT; + pcr->num_slots = 2; + pcr->ops = &rts5209_pcr_ops; + + rts5209_init_vendor_cfg(pcr); + + pcr->ic_version = rts5209_get_ic_version(pcr); + pcr->sd_pull_ctl_enable_tbl = rts5209_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = rts5209_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = rts5209_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5209_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/mfd/max8925-core.c +++ linux-3.5.0/drivers/mfd/max8925-core.c @@ -18,12 +18,19 @@ #include #include +static struct resource io_parent = { + .start = 0, + .end = 0xffffffff, + .flags = IORESOURCE_IO, +}; + static struct resource backlight_resources[] = { { .name = "max8925-backlight", .start = MAX8925_WLED_MODE_CNTL, .end = MAX8925_WLED_CNTL, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -42,6 +49,7 @@ .start = MAX8925_TSC_IRQ, .end = MAX8925_ADC_RES_END, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -60,6 +68,7 @@ .start = MAX8925_CHG_IRQ1, .end = MAX8925_CHG_IRQ1_MASK, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -118,6 +127,7 @@ .start = MAX8925_##_start, \ .end = MAX8925_##_end, \ .flags = IORESOURCE_IO, \ + .parent = &io_parent, \ } static struct resource regulator_resources[] = { --- linux-3.5.0.orig/drivers/mfd/wm831x-otp.c +++ linux-3.5.0/drivers/mfd/wm831x-otp.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -66,6 +67,7 @@ int wm831x_otp_init(struct wm831x *wm831x) { + char uuid[WM831X_UNIQUE_ID_LEN]; int ret; ret = device_create_file(wm831x->dev, &dev_attr_unique_id); @@ -73,6 +75,12 @@ dev_err(wm831x->dev, "Unique ID attribute not created: %d\n", ret); + ret = wm831x_unique_id_read(wm831x, uuid); + if (ret == 0) + add_device_randomness(uuid, sizeof(uuid)); + else + dev_err(wm831x->dev, "Failed to read UUID: %d\n", ret); + return ret; } --- linux-3.5.0.orig/drivers/mfd/rtl8411.c +++ linux-3.5.0/drivers/mfd/rtl8411.c @@ -0,0 +1,290 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rtl8411_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + rtsx_pci_read_register(pcr, SYS_VER, &val); + return val & 0x0F; +} + +static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK | CD_AUTO_DISABLE, CD_ENABLE); +} + +static int rtl8411_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); +} + +static int rtl8411_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); +} + +static int rtl8411_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); +} + +static int rtl8411_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); +} + +static int rtl8411_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_CTL, + BPP_LDO_POWB, BPP_LDO_SUSPEND); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_10_PERCENT_ON); + if (err < 0) + return err; + + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_15_PERCENT_ON); + if (err < 0) + return err; + + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_ON); + if (err < 0) + return err; + + return rtsx_pci_write_register(pcr, LDO_CTL, BPP_LDO_POWB, BPP_LDO_ON); +} + +static int rtl8411_card_power_off(struct rtsx_pcr *pcr, int card) +{ + int err; + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_OFF); + if (err < 0) + return err; + + return rtsx_pci_write_register(pcr, LDO_CTL, + BPP_LDO_POWB, BPP_LDO_SUSPEND); +} + +static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + u8 mask, val; + int err; + + mask = (BPP_REG_TUNED18 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_MASK; + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + val = (BPP_ASIC_3V3 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_3V3; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + val = (BPP_ASIC_1V8 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_1V8; + } else { + return -EINVAL; + } + + return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); +} + +static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr) +{ + unsigned int card_exist; + + card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); + card_exist &= CARD_EXIST; + if (!card_exist) { + /* Enable card CD */ + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, CD_ENABLE); + /* Enable card interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x00); + return 0; + } + + if (hweight32(card_exist) > 1) { + rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON); + msleep(100); + + card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); + if (card_exist & MS_EXIST) + card_exist = MS_EXIST; + else if (card_exist & SD_EXIST) + card_exist = SD_EXIST; + else + card_exist = 0; + + rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_OFF); + + dev_dbg(&(pcr->pci->dev), + "After CD deglitch, card_exist = 0x%x\n", + card_exist); + } + + if (card_exist & MS_EXIST) { + /* Disable SD interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x40); + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, MS_CD_EN_ONLY); + } else if (card_exist & SD_EXIST) { + /* Disable MS interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x80); + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, SD_CD_EN_ONLY); + } + + return card_exist; +} + +static int rtl8411_conv_clk_and_div_n(int input, int dir) +{ + int output; + + if (dir == CLK_TO_DIV_N) + output = input * 4 / 5 - 2; + else + output = (input + 2) * 5 / 4; + + return output; +} + +static const struct pcr_ops rtl8411_pcr_ops = { + .extra_init_hw = rtl8411_extra_init_hw, + .optimize_phy = NULL, + .turn_on_led = rtl8411_turn_on_led, + .turn_off_led = rtl8411_turn_off_led, + .enable_auto_blink = rtl8411_enable_auto_blink, + .disable_auto_blink = rtl8411_disable_auto_blink, + .card_power_on = rtl8411_card_power_on, + .card_power_off = rtl8411_card_power_off, + .switch_output_voltage = rtl8411_switch_output_voltage, + .cd_deglitch = rtl8411_cd_deglitch, + .conv_clk_and_div_n = rtl8411_conv_clk_and_div_n, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rtl8411_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xA9), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rtl8411_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rtl8411_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rtl8411_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +void rtl8411_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rtl8411_pcr_ops; + + pcr->ic_version = rtl8411_get_ic_version(pcr); + pcr->sd_pull_ctl_enable_tbl = rtl8411_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = rtl8411_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = rtl8411_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rtl8411_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/mfd/wm8994-core.c +++ linux-3.5.0/drivers/mfd/wm8994-core.c @@ -542,6 +542,7 @@ case 1: case 2: case 3: + case 4: regmap_patch = wm1811_reva_patch; patch_regs = ARRAY_SIZE(wm1811_reva_patch); break; --- linux-3.5.0.orig/drivers/mfd/rtsx_pcr.c +++ linux-3.5.0/drivers/mfd/rtsx_pcr.c @@ -0,0 +1,1313 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rtsx_pcr.h" + +static bool msi_en = true; +module_param(msi_en, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(msi_en, "Enable MSI"); + +static DEFINE_IDR(rtsx_pci_idr); +static DEFINE_SPINLOCK(rtsx_pci_lock); + +static struct mfd_cell rtsx_pcr_cells[] = { + [RTSX_SD_CARD] = { + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, + [RTSX_MS_CARD] = { + .name = DRV_NAME_RTSX_PCI_MS, + }, +}; + +static DEFINE_PCI_DEVICE_TABLE(rtsx_pci_ids) = { + { PCI_DEVICE(0x10EC, 0x5209), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5229), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5289), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5227), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { 0, } +}; + +MODULE_DEVICE_TABLE(pci, rtsx_pci_ids); + +void rtsx_pci_start_run(struct rtsx_pcr *pcr) +{ + /* If pci device removed, don't queue idle work any more */ + if (pcr->remove_pci) + return; + + if (pcr->state != PDEV_STAT_RUN) { + pcr->state = PDEV_STAT_RUN; + if (pcr->ops->enable_auto_blink) + pcr->ops->enable_auto_blink(pcr); + } + + cancel_delayed_work(&pcr->idle_work); + queue_delayed_work(system_wq, &pcr->idle_work, msecs_to_jiffies(200)); +} +EXPORT_SYMBOL_GPL(rtsx_pci_start_run); + +int rtsx_pci_write_register(struct rtsx_pcr *pcr, u16 addr, u8 mask, u8 data) +{ + int i; + u32 val = HAIMR_WRITE_START; + + val |= (u32)(addr & 0x3FFF) << 16; + val |= (u32)mask << 8; + val |= (u32)data; + + rtsx_pci_writel(pcr, RTSX_HAIMR, val); + + for (i = 0; i < MAX_RW_REG_CNT; i++) { + val = rtsx_pci_readl(pcr, RTSX_HAIMR); + if ((val & HAIMR_TRANS_END) == 0) { + if (data != (u8)val) + return -EIO; + return 0; + } + } + + return -ETIMEDOUT; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_register); + +int rtsx_pci_read_register(struct rtsx_pcr *pcr, u16 addr, u8 *data) +{ + u32 val = HAIMR_READ_START; + int i; + + val |= (u32)(addr & 0x3FFF) << 16; + rtsx_pci_writel(pcr, RTSX_HAIMR, val); + + for (i = 0; i < MAX_RW_REG_CNT; i++) { + val = rtsx_pci_readl(pcr, RTSX_HAIMR); + if ((val & HAIMR_TRANS_END) == 0) + break; + } + + if (i >= MAX_RW_REG_CNT) + return -ETIMEDOUT; + + if (data) + *data = (u8)(val & 0xFF); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_register); + +int rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val) +{ + int err, i, finished = 0; + u8 tmp; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYDATA0, 0xFF, (u8)val); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYDATA1, 0xFF, (u8)(val >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYADDR, 0xFF, addr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYRWCTL, 0xFF, 0x81); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + for (i = 0; i < 100000; i++) { + err = rtsx_pci_read_register(pcr, PHYRWCTL, &tmp); + if (err < 0) + return err; + + if (!(tmp & 0x80)) { + finished = 1; + break; + } + } + + if (!finished) + return -ETIMEDOUT; + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_phy_register); + +int rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val) +{ + int err, i, finished = 0; + u16 data; + u8 *ptr, tmp; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYADDR, 0xFF, addr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYRWCTL, 0xFF, 0x80); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + for (i = 0; i < 100000; i++) { + err = rtsx_pci_read_register(pcr, PHYRWCTL, &tmp); + if (err < 0) + return err; + + if (!(tmp & 0x80)) { + finished = 1; + break; + } + } + + if (!finished) + return -ETIMEDOUT; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PHYDATA0, 0, 0); + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PHYDATA1, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + ptr = rtsx_pci_get_cmd_data(pcr); + data = ((u16)ptr[1] << 8) | ptr[0]; + + if (val) + *val = data; + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_phy_register); + +void rtsx_pci_stop_cmd(struct rtsx_pcr *pcr) +{ + rtsx_pci_writel(pcr, RTSX_HCBCTLR, STOP_CMD); + rtsx_pci_writel(pcr, RTSX_HDBCTLR, STOP_DMA); + + rtsx_pci_write_register(pcr, DMACTL, 0x80, 0x80); + rtsx_pci_write_register(pcr, RBCTL, 0x80, 0x80); +} +EXPORT_SYMBOL_GPL(rtsx_pci_stop_cmd); + +void rtsx_pci_add_cmd(struct rtsx_pcr *pcr, + u8 cmd_type, u16 reg_addr, u8 mask, u8 data) +{ + unsigned long flags; + u32 val = 0; + u32 *ptr = (u32 *)(pcr->host_cmds_ptr); + + val |= (u32)(cmd_type & 0x03) << 30; + val |= (u32)(reg_addr & 0x3FFF) << 16; + val |= (u32)mask << 8; + val |= (u32)data; + + spin_lock_irqsave(&pcr->lock, flags); + ptr += pcr->ci; + if (pcr->ci < (HOST_CMDS_BUF_LEN / 4)) { + put_unaligned_le32(val, ptr); + ptr++; + pcr->ci++; + } + spin_unlock_irqrestore(&pcr->lock, flags); +} +EXPORT_SYMBOL_GPL(rtsx_pci_add_cmd); + +void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr) +{ + u32 val = 1 << 31; + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + val |= (u32)(pcr->ci * 4) & 0x00FFFFFF; + /* Hardware Auto Response */ + val |= 0x40000000; + rtsx_pci_writel(pcr, RTSX_HCBCTLR, val); +} +EXPORT_SYMBOL_GPL(rtsx_pci_send_cmd_no_wait); + +int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout) +{ + struct completion trans_done; + u32 val = 1 << 31; + long timeleft; + unsigned long flags; + int err = 0; + + spin_lock_irqsave(&pcr->lock, flags); + + /* set up data structures for the wakeup system */ + pcr->done = &trans_done; + pcr->trans_result = TRANS_NOT_READY; + init_completion(&trans_done); + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + val |= (u32)(pcr->ci * 4) & 0x00FFFFFF; + /* Hardware Auto Response */ + val |= 0x40000000; + rtsx_pci_writel(pcr, RTSX_HCBCTLR, val); + + spin_unlock_irqrestore(&pcr->lock, flags); + + /* Wait for TRANS_OK_INT */ + timeleft = wait_for_completion_interruptible_timeout( + &trans_done, msecs_to_jiffies(timeout)); + if (timeleft <= 0) { + dev_dbg(&(pcr->pci->dev), "Timeout (%s %d)\n", + __func__, __LINE__); + err = -ETIMEDOUT; + goto finish_send_cmd; + } + + spin_lock_irqsave(&pcr->lock, flags); + if (pcr->trans_result == TRANS_RESULT_FAIL) + err = -EINVAL; + else if (pcr->trans_result == TRANS_RESULT_OK) + err = 0; + else if (pcr->trans_result == TRANS_NO_DEVICE) + err = -ENODEV; + spin_unlock_irqrestore(&pcr->lock, flags); + +finish_send_cmd: + spin_lock_irqsave(&pcr->lock, flags); + pcr->done = NULL; + spin_unlock_irqrestore(&pcr->lock, flags); + + if ((err < 0) && (err != -ENODEV)) + rtsx_pci_stop_cmd(pcr); + + if (pcr->finish_me) + complete(pcr->finish_me); + + return err; +} +EXPORT_SYMBOL_GPL(rtsx_pci_send_cmd); + +static void rtsx_pci_add_sg_tbl(struct rtsx_pcr *pcr, + dma_addr_t addr, unsigned int len, int end) +{ + u64 *ptr = (u64 *)(pcr->host_sg_tbl_ptr) + pcr->sgi; + u64 val; + u8 option = SG_VALID | SG_TRANS_DATA; + + dev_dbg(&(pcr->pci->dev), "DMA addr: 0x%x, Len: 0x%x\n", + (unsigned int)addr, len); + + if (end) + option |= SG_END; + val = ((u64)addr << 32) | ((u64)len << 12) | option; + + put_unaligned_le64(val, ptr); + ptr++; + pcr->sgi++; +} + +int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, + int num_sg, bool read, int timeout) +{ + struct completion trans_done; + u8 dir; + int err = 0, i, count; + long timeleft; + unsigned long flags; + struct scatterlist *sg; + enum dma_data_direction dma_dir; + u32 val; + dma_addr_t addr; + unsigned int len; + + dev_dbg(&(pcr->pci->dev), "--> %s: num_sg = %d\n", __func__, num_sg); + + /* don't transfer data during abort processing */ + if (pcr->remove_pci) + return -EINVAL; + + if ((sglist == NULL) || (num_sg <= 0)) + return -EINVAL; + + if (read) { + dir = DEVICE_TO_HOST; + dma_dir = DMA_FROM_DEVICE; + } else { + dir = HOST_TO_DEVICE; + dma_dir = DMA_TO_DEVICE; + } + + count = dma_map_sg(&(pcr->pci->dev), sglist, num_sg, dma_dir); + if (count < 1) { + dev_err(&(pcr->pci->dev), "scatterlist map failed\n"); + return -EINVAL; + } + dev_dbg(&(pcr->pci->dev), "DMA mapping count: %d\n", count); + + val = ((u32)(dir & 0x01) << 29) | TRIG_DMA | ADMA_MODE; + pcr->sgi = 0; + for_each_sg(sglist, sg, count, i) { + addr = sg_dma_address(sg); + len = sg_dma_len(sg); + rtsx_pci_add_sg_tbl(pcr, addr, len, i == count - 1); + } + + spin_lock_irqsave(&pcr->lock, flags); + + pcr->done = &trans_done; + pcr->trans_result = TRANS_NOT_READY; + init_completion(&trans_done); + rtsx_pci_writel(pcr, RTSX_HDBAR, pcr->host_sg_tbl_addr); + rtsx_pci_writel(pcr, RTSX_HDBCTLR, val); + + spin_unlock_irqrestore(&pcr->lock, flags); + + timeleft = wait_for_completion_interruptible_timeout( + &trans_done, msecs_to_jiffies(timeout)); + if (timeleft <= 0) { + dev_dbg(&(pcr->pci->dev), "Timeout (%s %d)\n", + __func__, __LINE__); + err = -ETIMEDOUT; + goto out; + } + + spin_lock_irqsave(&pcr->lock, flags); + + if (pcr->trans_result == TRANS_RESULT_FAIL) + err = -EINVAL; + else if (pcr->trans_result == TRANS_NO_DEVICE) + err = -ENODEV; + + spin_unlock_irqrestore(&pcr->lock, flags); + +out: + spin_lock_irqsave(&pcr->lock, flags); + pcr->done = NULL; + spin_unlock_irqrestore(&pcr->lock, flags); + + dma_unmap_sg(&(pcr->pci->dev), sglist, num_sg, dma_dir); + + if ((err < 0) && (err != -ENODEV)) + rtsx_pci_stop_cmd(pcr); + + if (pcr->finish_me) + complete(pcr->finish_me); + + return err; +} +EXPORT_SYMBOL_GPL(rtsx_pci_transfer_data); + +int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len) +{ + int err; + int i, j; + u16 reg; + u8 *ptr; + + if (buf_len > 512) + buf_len = 512; + + ptr = buf; + reg = PPBUF_BASE2; + for (i = 0; i < buf_len / 256; i++) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < 256; j++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, reg++, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + + memcpy(ptr, rtsx_pci_get_cmd_data(pcr), 256); + ptr += 256; + } + + if (buf_len % 256) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < buf_len % 256; j++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, reg++, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + memcpy(ptr, rtsx_pci_get_cmd_data(pcr), buf_len % 256); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_ppbuf); + +int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len) +{ + int err; + int i, j; + u16 reg; + u8 *ptr; + + if (buf_len > 512) + buf_len = 512; + + ptr = buf; + reg = PPBUF_BASE2; + for (i = 0; i < buf_len / 256; i++) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < 256; j++) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + reg++, 0xFF, *ptr); + ptr++; + } + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + if (buf_len % 256) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < buf_len % 256; j++) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + reg++, 0xFF, *ptr); + ptr++; + } + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_ppbuf); + +static int rtsx_pci_set_pull_ctl(struct rtsx_pcr *pcr, const u32 *tbl) +{ + int err; + + rtsx_pci_init_cmd(pcr); + + while (*tbl & 0xFFFF0000) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + (u16)(*tbl >> 16), 0xFF, (u8)(*tbl)); + tbl++; + } + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card) +{ + const u32 *tbl; + + if (card == RTSX_SD_CARD) + tbl = pcr->sd_pull_ctl_enable_tbl; + else if (card == RTSX_MS_CARD) + tbl = pcr->ms_pull_ctl_enable_tbl; + else + return -EINVAL; + + return rtsx_pci_set_pull_ctl(pcr, tbl); +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_pull_ctl_enable); + +int rtsx_pci_card_pull_ctl_disable(struct rtsx_pcr *pcr, int card) +{ + const u32 *tbl; + + if (card == RTSX_SD_CARD) + tbl = pcr->sd_pull_ctl_disable_tbl; + else if (card == RTSX_MS_CARD) + tbl = pcr->ms_pull_ctl_disable_tbl; + else + return -EINVAL; + + + return rtsx_pci_set_pull_ctl(pcr, tbl); +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_pull_ctl_disable); + +static void rtsx_pci_enable_bus_int(struct rtsx_pcr *pcr) +{ + pcr->bier = TRANS_OK_INT_EN | TRANS_FAIL_INT_EN | SD_INT_EN; + + if (pcr->num_slots > 1) + pcr->bier |= MS_INT_EN; + + /* Enable Bus Interrupt */ + rtsx_pci_writel(pcr, RTSX_BIER, pcr->bier); + + dev_dbg(&(pcr->pci->dev), "RTSX_BIER: 0x%08x\n", pcr->bier); +} + +static inline u8 double_ssc_depth(u8 depth) +{ + return ((depth > 1) ? (depth - 1) : depth); +} + +static u8 revise_ssc_depth(u8 ssc_depth, u8 div) +{ + if (div > CLK_DIV_1) { + if (ssc_depth > (div - 1)) + ssc_depth -= (div - 1); + else + ssc_depth = SSC_DEPTH_4M; + } + + return ssc_depth; +} + +int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, + u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk) +{ + int err, clk; + u8 N, min_N, max_N, clk_divider; + u8 mcu_cnt, div, max_div; + u8 depth[] = { + [RTSX_SSC_DEPTH_4M] = SSC_DEPTH_4M, + [RTSX_SSC_DEPTH_2M] = SSC_DEPTH_2M, + [RTSX_SSC_DEPTH_1M] = SSC_DEPTH_1M, + [RTSX_SSC_DEPTH_500K] = SSC_DEPTH_500K, + [RTSX_SSC_DEPTH_250K] = SSC_DEPTH_250K, + }; + + if (initial_mode) { + /* We use 250k(around) here, in initial stage */ + clk_divider = SD_CLK_DIVIDE_128; + card_clock = 30000000; + } else { + clk_divider = SD_CLK_DIVIDE_0; + } + err = rtsx_pci_write_register(pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, clk_divider); + if (err < 0) + return err; + + card_clock /= 1000000; + dev_dbg(&(pcr->pci->dev), "Switch card clock to %dMHz\n", card_clock); + + min_N = 80; + max_N = 208; + max_div = CLK_DIV_8; + + clk = card_clock; + if (!initial_mode && double_clk) + clk = card_clock * 2; + dev_dbg(&(pcr->pci->dev), + "Internal SSC clock: %dMHz (cur_clock = %d)\n", + clk, pcr->cur_clock); + + if (clk == pcr->cur_clock) + return 0; + + if (pcr->ops->conv_clk_and_div_n) + N = (u8)pcr->ops->conv_clk_and_div_n(clk, CLK_TO_DIV_N); + else + N = (u8)(clk - 2); + if ((clk <= 2) || (N > max_N)) + return -EINVAL; + + mcu_cnt = (u8)(125/clk + 3); + if (mcu_cnt > 15) + mcu_cnt = 15; + + /* Make sure that the SSC clock div_n is equal or greater than min_N */ + div = CLK_DIV_1; + while ((N < min_N) && (div < max_div)) { + if (pcr->ops->conv_clk_and_div_n) { + int dbl_clk = pcr->ops->conv_clk_and_div_n(N, + DIV_N_TO_CLK) * 2; + N = (u8)pcr->ops->conv_clk_and_div_n(dbl_clk, + CLK_TO_DIV_N); + } else { + N = (N + 2) * 2 - 2; + } + div++; + } + dev_dbg(&(pcr->pci->dev), "N = %d, div = %d\n", N, div); + + ssc_depth = depth[ssc_depth]; + if (double_clk) + ssc_depth = double_ssc_depth(ssc_depth); + + ssc_depth = revise_ssc_depth(ssc_depth, div); + dev_dbg(&(pcr->pci->dev), "ssc_depth = %d\n", ssc_depth); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_DIV, + 0xFF, (div << 4) | mcu_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, SSC_RSTB, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL2, + SSC_DEPTH_MASK, ssc_depth); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_DIV_N_0, 0xFF, N); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, SSC_RSTB, SSC_RSTB); + if (vpclk) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, PHASE_NOT_RESET); + } + + err = rtsx_pci_send_cmd(pcr, 2000); + if (err < 0) + return err; + + /* Wait SSC clock stable */ + udelay(10); + err = rtsx_pci_write_register(pcr, CLK_CTL, CLK_LOW_FREQ, 0); + if (err < 0) + return err; + + pcr->cur_clock = clk; + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_switch_clock); + +int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card) +{ + if (pcr->ops->card_power_on) + return pcr->ops->card_power_on(pcr, card); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_power_on); + +int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card) +{ + if (pcr->ops->card_power_off) + return pcr->ops->card_power_off(pcr, card); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_power_off); + +int rtsx_pci_card_exclusive_check(struct rtsx_pcr *pcr, int card) +{ + unsigned int cd_mask[] = { + [RTSX_SD_CARD] = SD_EXIST, + [RTSX_MS_CARD] = MS_EXIST + }; + + if (!pcr->ms_pmos) { + /* When using single PMOS, accessing card is not permitted + * if the existing card is not the designated one. + */ + if (pcr->card_exist & (~cd_mask[card])) + return -EIO; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_exclusive_check); + +int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + if (pcr->ops->switch_output_voltage) + return pcr->ops->switch_output_voltage(pcr, voltage); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_switch_output_voltage); + +unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr) +{ + unsigned int val; + + val = rtsx_pci_readl(pcr, RTSX_BIPR); + if (pcr->ops->cd_deglitch) + val = pcr->ops->cd_deglitch(pcr); + + return val; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_exist); + +void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr) +{ + struct completion finish; + + pcr->finish_me = &finish; + init_completion(&finish); + + if (pcr->done) + complete(pcr->done); + + if (!pcr->remove_pci) + rtsx_pci_stop_cmd(pcr); + + wait_for_completion_interruptible_timeout(&finish, + msecs_to_jiffies(2)); + pcr->finish_me = NULL; +} +EXPORT_SYMBOL_GPL(rtsx_pci_complete_unfinished_transfer); + +static void rtsx_pci_card_detect(struct work_struct *work) +{ + struct delayed_work *dwork; + struct rtsx_pcr *pcr; + unsigned long flags; + unsigned int card_detect = 0, card_inserted, card_removed; + u32 irq_status; + + dwork = to_delayed_work(work); + pcr = container_of(dwork, struct rtsx_pcr, carddet_work); + + dev_dbg(&(pcr->pci->dev), "--> %s\n", __func__); + + mutex_lock(&pcr->pcr_mutex); + spin_lock_irqsave(&pcr->lock, flags); + + irq_status = rtsx_pci_readl(pcr, RTSX_BIPR); + dev_dbg(&(pcr->pci->dev), "irq_status: 0x%08x\n", irq_status); + + irq_status &= CARD_EXIST; + card_inserted = pcr->card_inserted & irq_status; + card_removed = pcr->card_removed; + pcr->card_inserted = 0; + pcr->card_removed = 0; + + spin_unlock_irqrestore(&pcr->lock, flags); + + if (card_inserted || card_removed) { + dev_dbg(&(pcr->pci->dev), + "card_inserted: 0x%x, card_removed: 0x%x\n", + card_inserted, card_removed); + + if (pcr->ops->cd_deglitch) + card_inserted = pcr->ops->cd_deglitch(pcr); + + card_detect = card_inserted | card_removed; + + pcr->card_exist |= card_inserted; + pcr->card_exist &= ~card_removed; + } + + mutex_unlock(&pcr->pcr_mutex); + + if ((card_detect & SD_EXIST) && pcr->slots[RTSX_SD_CARD].card_event) + pcr->slots[RTSX_SD_CARD].card_event( + pcr->slots[RTSX_SD_CARD].p_dev); + if ((card_detect & MS_EXIST) && pcr->slots[RTSX_MS_CARD].card_event) + pcr->slots[RTSX_MS_CARD].card_event( + pcr->slots[RTSX_MS_CARD].p_dev); +} + +static irqreturn_t rtsx_pci_isr(int irq, void *dev_id) +{ + struct rtsx_pcr *pcr = dev_id; + u32 int_reg; + + if (!pcr) + return IRQ_NONE; + + spin_lock(&pcr->lock); + + int_reg = rtsx_pci_readl(pcr, RTSX_BIPR); + /* Clear interrupt flag */ + rtsx_pci_writel(pcr, RTSX_BIPR, int_reg); + if ((int_reg & pcr->bier) == 0) { + spin_unlock(&pcr->lock); + return IRQ_NONE; + } + if (int_reg == 0xFFFFFFFF) { + spin_unlock(&pcr->lock); + return IRQ_HANDLED; + } + + int_reg &= (pcr->bier | 0x7FFFFF); + + if (int_reg & SD_INT) { + if (int_reg & SD_EXIST) { + pcr->card_inserted |= SD_EXIST; + } else { + pcr->card_removed |= SD_EXIST; + pcr->card_inserted &= ~SD_EXIST; + } + } + + if (int_reg & MS_INT) { + if (int_reg & MS_EXIST) { + pcr->card_inserted |= MS_EXIST; + } else { + pcr->card_removed |= MS_EXIST; + pcr->card_inserted &= ~MS_EXIST; + } + } + + if (int_reg & (NEED_COMPLETE_INT | DELINK_INT)) { + if (int_reg & (TRANS_FAIL_INT | DELINK_INT)) { + pcr->trans_result = TRANS_RESULT_FAIL; + if (pcr->done) + complete(pcr->done); + } else if (int_reg & TRANS_OK_INT) { + pcr->trans_result = TRANS_RESULT_OK; + if (pcr->done) + complete(pcr->done); + } + } + + if (pcr->card_inserted || pcr->card_removed) + schedule_delayed_work(&pcr->carddet_work, + msecs_to_jiffies(200)); + + spin_unlock(&pcr->lock); + return IRQ_HANDLED; +} + +static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr) +{ + dev_info(&(pcr->pci->dev), "%s: pcr->msi_en = %d, pci->irq = %d\n", + __func__, pcr->msi_en, pcr->pci->irq); + + if (request_irq(pcr->pci->irq, rtsx_pci_isr, + pcr->msi_en ? 0 : IRQF_SHARED, + DRV_NAME_RTSX_PCI, pcr)) { + dev_err(&(pcr->pci->dev), + "rtsx_sdmmc: unable to grab IRQ %d, disabling device\n", + pcr->pci->irq); + return -1; + } + + pcr->irq = pcr->pci->irq; + pci_intx(pcr->pci, !pcr->msi_en); + + return 0; +} + +static void rtsx_pci_idle_work(struct work_struct *work) +{ + struct delayed_work *dwork = to_delayed_work(work); + struct rtsx_pcr *pcr = container_of(dwork, struct rtsx_pcr, idle_work); + + dev_dbg(&(pcr->pci->dev), "--> %s\n", __func__); + + mutex_lock(&pcr->pcr_mutex); + + pcr->state = PDEV_STAT_IDLE; + + if (pcr->ops->disable_auto_blink) + pcr->ops->disable_auto_blink(pcr); + if (pcr->ops->turn_off_led) + pcr->ops->turn_off_led(pcr); + + mutex_unlock(&pcr->pcr_mutex); +} + +static int rtsx_pci_init_hw(struct rtsx_pcr *pcr) +{ + int err; + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + rtsx_pci_enable_bus_int(pcr); + + /* Power on SSC */ + err = rtsx_pci_write_register(pcr, FPDCTL, SSC_POWER_DOWN, 0); + if (err < 0) + return err; + + /* Wait SSC power stable */ + udelay(200); + + if (pcr->ops->optimize_phy) { + err = pcr->ops->optimize_phy(pcr); + if (err < 0) + return err; + } + + rtsx_pci_init_cmd(pcr); + + /* Set mcu_cnt to 7 to ensure data can be sampled properly */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_DIV, 0x07, 0x07); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, HOST_SLEEP_STATE, 0x03, 0x00); + /* Disable card clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, 0x1E, 0); + /* Reset ASPM state to default value */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, ASPM_FORCE_CTL, 0x3F, 0); + /* Reset delink mode */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CHANGE_LINK_STATE, 0x0A, 0); + /* Card driving select */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0x07, DRIVER_TYPE_D); + /* Enable SSC Clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, + 0xFF, SSC_8X_EN | SSC_SEL_4M); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL2, 0xFF, 0x12); + /* Disable cd_pwr_save */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CHANGE_LINK_STATE, 0x16, 0x10); + /* Clear Link Ready Interrupt */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + LINK_RDY_INT, LINK_RDY_INT); + /* Enlarge the estimation window of PERST# glitch + * to reduce the chance of invalid card interrupt + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PERST_GLITCH_WIDTH, 0xFF, 0x80); + /* Update RC oscillator to 400k + * bit[0] F_HIGH: for RC oscillator, Rst_value is 1'b1 + * 1: 2M 0: 400k + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, RCCTL, 0x01, 0x00); + /* Set interrupt write clear + * bit 1: U_elbi_if_rd_clr_en + * 1: Enable ELBI interrupt[31:22] & [7:0] flag read clear + * 0: ELBI interrupt flag[31:22] & [7:0] only can be write clear + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, NFTS_TX_CTRL, 0x02, 0); + /* Force CLKREQ# PIN to drive 0 to request clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0x08, 0x08); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* Enable clk_request_n to enable clock power management */ + rtsx_pci_write_config_byte(pcr, 0x81, 1); + /* Enter L1 when host tx idle */ + rtsx_pci_write_config_byte(pcr, 0x70F, 0x5B); + + if (pcr->ops->extra_init_hw) { + err = pcr->ops->extra_init_hw(pcr); + if (err < 0) + return err; + } + + /* No CD interrupt if probing driver with card inserted. + * So we need to initialize pcr->card_exist here. + */ + if (pcr->ops->cd_deglitch) + pcr->card_exist = pcr->ops->cd_deglitch(pcr); + else + pcr->card_exist = rtsx_pci_readl(pcr, RTSX_BIPR) & CARD_EXIST; + + return 0; +} + +static int rtsx_pci_init_chip(struct rtsx_pcr *pcr) +{ + int err; + + spin_lock_init(&pcr->lock); + mutex_init(&pcr->pcr_mutex); + + switch (PCI_PID(pcr)) { + default: + case 0x5209: + rts5209_init_params(pcr); + break; + + case 0x5229: + rts5229_init_params(pcr); + break; + + case 0x5289: + rtl8411_init_params(pcr); + break; + + case 0x5227: + rts5227_init_params(pcr); + break; + } + + dev_dbg(&(pcr->pci->dev), "PID: 0x%04x, IC version: 0x%02x\n", + PCI_PID(pcr), pcr->ic_version); + + pcr->slots = kcalloc(pcr->num_slots, sizeof(struct rtsx_slot), + GFP_KERNEL); + if (!pcr->slots) + return -ENOMEM; + + pcr->state = PDEV_STAT_IDLE; + err = rtsx_pci_init_hw(pcr); + if (err < 0) { + kfree(pcr->slots); + return err; + } + + return 0; +} + +static int __devinit rtsx_pci_probe(struct pci_dev *pcidev, + const struct pci_device_id *id) +{ + struct rtsx_pcr *pcr; + struct pcr_handle *handle; + u32 base, len; + int ret, i; + + dev_dbg(&(pcidev->dev), + ": Realtek PCI-E Card Reader found at %s [%04x:%04x] (rev %x)\n", + pci_name(pcidev), (int)pcidev->vendor, (int)pcidev->device, + (int)pcidev->revision); + + ret = pci_enable_device(pcidev); + if (ret) + return ret; + + ret = pci_request_regions(pcidev, DRV_NAME_RTSX_PCI); + if (ret) + goto disable; + + pcr = kzalloc(sizeof(*pcr), GFP_KERNEL); + if (!pcr) { + ret = -ENOMEM; + goto release_pci; + } + + handle = kzalloc(sizeof(*handle), GFP_KERNEL); + if (!handle) { + ret = -ENOMEM; + goto free_pcr; + } + handle->pcr = pcr; + + if (!idr_pre_get(&rtsx_pci_idr, GFP_KERNEL)) { + ret = -ENOMEM; + goto free_handle; + } + + spin_lock(&rtsx_pci_lock); + ret = idr_get_new(&rtsx_pci_idr, pcr, &pcr->id); + spin_unlock(&rtsx_pci_lock); + if (ret) + goto free_handle; + + pcr->pci = pcidev; + dev_set_drvdata(&pcidev->dev, handle); + + len = pci_resource_len(pcidev, 0); + base = pci_resource_start(pcidev, 0); + pcr->remap_addr = ioremap_nocache(base, len); + if (!pcr->remap_addr) { + ret = -ENOMEM; + goto free_host; + } + + pcr->rtsx_resv_buf = dma_alloc_coherent(&(pcidev->dev), + RTSX_RESV_BUF_LEN, &(pcr->rtsx_resv_buf_addr), + GFP_KERNEL); + if (pcr->rtsx_resv_buf == NULL) { + ret = -ENXIO; + goto unmap; + } + pcr->host_cmds_ptr = pcr->rtsx_resv_buf; + pcr->host_cmds_addr = pcr->rtsx_resv_buf_addr; + pcr->host_sg_tbl_ptr = pcr->rtsx_resv_buf + HOST_CMDS_BUF_LEN; + pcr->host_sg_tbl_addr = pcr->rtsx_resv_buf_addr + HOST_CMDS_BUF_LEN; + + pcr->card_inserted = 0; + pcr->card_removed = 0; + INIT_DELAYED_WORK(&pcr->carddet_work, rtsx_pci_card_detect); + INIT_DELAYED_WORK(&pcr->idle_work, rtsx_pci_idle_work); + + pcr->msi_en = msi_en; + if (pcr->msi_en) { + ret = pci_enable_msi(pcidev); + if (ret < 0) + pcr->msi_en = false; + } + + ret = rtsx_pci_acquire_irq(pcr); + if (ret < 0) + goto free_dma; + + pci_set_master(pcidev); + synchronize_irq(pcr->irq); + + ret = rtsx_pci_init_chip(pcr); + if (ret < 0) + goto disable_irq; + + for (i = 0; i < ARRAY_SIZE(rtsx_pcr_cells); i++) { + rtsx_pcr_cells[i].platform_data = handle; + rtsx_pcr_cells[i].pdata_size = sizeof(*handle); + } + ret = mfd_add_devices(&pcidev->dev, pcr->id, rtsx_pcr_cells, + ARRAY_SIZE(rtsx_pcr_cells), NULL, 0); + if (ret < 0) + goto disable_irq; + + schedule_delayed_work(&pcr->idle_work, msecs_to_jiffies(200)); + + return 0; + +disable_irq: + free_irq(pcr->irq, (void *)pcr); +free_dma: + dma_free_coherent(&(pcr->pci->dev), RTSX_RESV_BUF_LEN, + pcr->rtsx_resv_buf, pcr->rtsx_resv_buf_addr); +unmap: + iounmap(pcr->remap_addr); +free_host: + dev_set_drvdata(&pcidev->dev, NULL); +free_handle: + kfree(handle); +free_pcr: + kfree(pcr); +release_pci: + pci_release_regions(pcidev); +disable: + pci_disable_device(pcidev); + + return ret; +} + +static void __devexit rtsx_pci_remove(struct pci_dev *pcidev) +{ + struct pcr_handle *handle = pci_get_drvdata(pcidev); + struct rtsx_pcr *pcr = handle->pcr; + + pcr->remove_pci = true; + + cancel_delayed_work(&pcr->carddet_work); + cancel_delayed_work(&pcr->idle_work); + + mfd_remove_devices(&pcidev->dev); + + dma_free_coherent(&(pcr->pci->dev), RTSX_RESV_BUF_LEN, + pcr->rtsx_resv_buf, pcr->rtsx_resv_buf_addr); + free_irq(pcr->irq, (void *)pcr); + if (pcr->msi_en) + pci_disable_msi(pcr->pci); + iounmap(pcr->remap_addr); + + dev_set_drvdata(&pcidev->dev, NULL); + pci_release_regions(pcidev); + pci_disable_device(pcidev); + + spin_lock(&rtsx_pci_lock); + idr_remove(&rtsx_pci_idr, pcr->id); + spin_unlock(&rtsx_pci_lock); + + kfree(pcr->slots); + kfree(pcr); + kfree(handle); + + dev_dbg(&(pcidev->dev), + ": Realtek PCI-E Card Reader at %s [%04x:%04x] has been removed\n", + pci_name(pcidev), (int)pcidev->vendor, (int)pcidev->device); +} + +#ifdef CONFIG_PM + +static int rtsx_pci_suspend(struct pci_dev *pcidev, pm_message_t state) +{ + struct pcr_handle *handle; + struct rtsx_pcr *pcr; + int ret = 0; + + dev_dbg(&(pcidev->dev), "--> %s\n", __func__); + + handle = pci_get_drvdata(pcidev); + pcr = handle->pcr; + + cancel_delayed_work(&pcr->carddet_work); + cancel_delayed_work(&pcr->idle_work); + + mutex_lock(&pcr->pcr_mutex); + + if (pcr->ops->turn_off_led) + pcr->ops->turn_off_led(pcr); + + rtsx_pci_writel(pcr, RTSX_BIER, 0); + pcr->bier = 0; + + rtsx_pci_write_register(pcr, PETXCFG, 0x08, 0x08); + rtsx_pci_write_register(pcr, HOST_SLEEP_STATE, 0x03, 0x02); + + pci_save_state(pcidev); + pci_enable_wake(pcidev, pci_choose_state(pcidev, state), 0); + pci_disable_device(pcidev); + pci_set_power_state(pcidev, pci_choose_state(pcidev, state)); + + mutex_unlock(&pcr->pcr_mutex); + return ret; +} + +static int rtsx_pci_resume(struct pci_dev *pcidev) +{ + struct pcr_handle *handle; + struct rtsx_pcr *pcr; + int ret = 0; + + dev_dbg(&(pcidev->dev), "--> %s\n", __func__); + + handle = pci_get_drvdata(pcidev); + pcr = handle->pcr; + + mutex_lock(&pcr->pcr_mutex); + + pci_set_power_state(pcidev, PCI_D0); + pci_restore_state(pcidev); + ret = pci_enable_device(pcidev); + if (ret) + goto out; + pci_set_master(pcidev); + + ret = rtsx_pci_write_register(pcr, HOST_SLEEP_STATE, 0x03, 0x00); + if (ret) + goto out; + + ret = rtsx_pci_init_hw(pcr); + if (ret) + goto out; + + schedule_delayed_work(&pcr->idle_work, msecs_to_jiffies(200)); + +out: + mutex_unlock(&pcr->pcr_mutex); + return ret; +} + +#else /* CONFIG_PM */ + +#define rtsx_pci_suspend NULL +#define rtsx_pci_resume NULL + +#endif /* CONFIG_PM */ + +static struct pci_driver rtsx_pci_driver = { + .name = DRV_NAME_RTSX_PCI, + .id_table = rtsx_pci_ids, + .probe = rtsx_pci_probe, + .remove = __devexit_p(rtsx_pci_remove), + .suspend = rtsx_pci_suspend, + .resume = rtsx_pci_resume, +}; +module_pci_driver(rtsx_pci_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E Card Reader Driver"); --- linux-3.5.0.orig/drivers/mfd/88pm860x-core.c +++ linux-3.5.0/drivers/mfd/88pm860x-core.c @@ -21,40 +21,73 @@ #define INT_STATUS_NUM 3 +static struct resource io_parent = { + .start = 0, + .end = 0xffffffff, + .flags = IORESOURCE_IO, +}; + static struct resource bk_resources[] __devinitdata = { - {PM8606_BACKLIGHT1, PM8606_BACKLIGHT1, "backlight-0", IORESOURCE_IO,}, - {PM8606_BACKLIGHT2, PM8606_BACKLIGHT2, "backlight-1", IORESOURCE_IO,}, - {PM8606_BACKLIGHT3, PM8606_BACKLIGHT3, "backlight-2", IORESOURCE_IO,}, + {PM8606_BACKLIGHT1, PM8606_BACKLIGHT1, "backlight-0", IORESOURCE_IO, + &io_parent,}, + {PM8606_BACKLIGHT2, PM8606_BACKLIGHT2, "backlight-1", IORESOURCE_IO, + &io_parent,}, + {PM8606_BACKLIGHT3, PM8606_BACKLIGHT3, "backlight-2", IORESOURCE_IO, + &io_parent,}, }; static struct resource led_resources[] __devinitdata = { - {PM8606_LED1_RED, PM8606_LED1_RED, "led0-red", IORESOURCE_IO,}, - {PM8606_LED1_GREEN, PM8606_LED1_GREEN, "led0-green", IORESOURCE_IO,}, - {PM8606_LED1_BLUE, PM8606_LED1_BLUE, "led0-blue", IORESOURCE_IO,}, - {PM8606_LED2_RED, PM8606_LED2_RED, "led1-red", IORESOURCE_IO,}, - {PM8606_LED2_GREEN, PM8606_LED2_GREEN, "led1-green", IORESOURCE_IO,}, - {PM8606_LED2_BLUE, PM8606_LED2_BLUE, "led1-blue", IORESOURCE_IO,}, + {PM8606_LED1_RED, PM8606_LED1_RED, "led0-red", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED1_GREEN, PM8606_LED1_GREEN, "led0-green", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED1_BLUE, PM8606_LED1_BLUE, "led0-blue", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_RED, PM8606_LED2_RED, "led1-red", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_GREEN, PM8606_LED2_GREEN, "led1-green", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_BLUE, PM8606_LED2_BLUE, "led1-blue", IORESOURCE_IO, + &io_parent,}, }; static struct resource regulator_resources[] __devinitdata = { - {PM8607_ID_BUCK1, PM8607_ID_BUCK1, "buck-1", IORESOURCE_IO,}, - {PM8607_ID_BUCK2, PM8607_ID_BUCK2, "buck-2", IORESOURCE_IO,}, - {PM8607_ID_BUCK3, PM8607_ID_BUCK3, "buck-3", IORESOURCE_IO,}, - {PM8607_ID_LDO1, PM8607_ID_LDO1, "ldo-01", IORESOURCE_IO,}, - {PM8607_ID_LDO2, PM8607_ID_LDO2, "ldo-02", IORESOURCE_IO,}, - {PM8607_ID_LDO3, PM8607_ID_LDO3, "ldo-03", IORESOURCE_IO,}, - {PM8607_ID_LDO4, PM8607_ID_LDO4, "ldo-04", IORESOURCE_IO,}, - {PM8607_ID_LDO5, PM8607_ID_LDO5, "ldo-05", IORESOURCE_IO,}, - {PM8607_ID_LDO6, PM8607_ID_LDO6, "ldo-06", IORESOURCE_IO,}, - {PM8607_ID_LDO7, PM8607_ID_LDO7, "ldo-07", IORESOURCE_IO,}, - {PM8607_ID_LDO8, PM8607_ID_LDO8, "ldo-08", IORESOURCE_IO,}, - {PM8607_ID_LDO9, PM8607_ID_LDO9, "ldo-09", IORESOURCE_IO,}, - {PM8607_ID_LDO10, PM8607_ID_LDO10, "ldo-10", IORESOURCE_IO,}, - {PM8607_ID_LDO11, PM8607_ID_LDO11, "ldo-11", IORESOURCE_IO,}, - {PM8607_ID_LDO12, PM8607_ID_LDO12, "ldo-12", IORESOURCE_IO,}, - {PM8607_ID_LDO13, PM8607_ID_LDO13, "ldo-13", IORESOURCE_IO,}, - {PM8607_ID_LDO14, PM8607_ID_LDO14, "ldo-14", IORESOURCE_IO,}, - {PM8607_ID_LDO15, PM8607_ID_LDO15, "ldo-15", IORESOURCE_IO,}, + {PM8607_ID_BUCK1, PM8607_ID_BUCK1, "buck-1", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_BUCK2, PM8607_ID_BUCK2, "buck-2", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_BUCK3, PM8607_ID_BUCK3, "buck-3", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO1, PM8607_ID_LDO1, "ldo-01", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO2, PM8607_ID_LDO2, "ldo-02", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO3, PM8607_ID_LDO3, "ldo-03", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO4, PM8607_ID_LDO4, "ldo-04", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO5, PM8607_ID_LDO5, "ldo-05", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO6, PM8607_ID_LDO6, "ldo-06", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO7, PM8607_ID_LDO7, "ldo-07", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO8, PM8607_ID_LDO8, "ldo-08", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO9, PM8607_ID_LDO9, "ldo-09", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO10, PM8607_ID_LDO10, "ldo-10", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO11, PM8607_ID_LDO11, "ldo-11", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO12, PM8607_ID_LDO12, "ldo-12", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO13, PM8607_ID_LDO13, "ldo-13", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO14, PM8607_ID_LDO14, "ldo-14", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO15, PM8607_ID_LDO15, "ldo-15", IORESOURCE_IO, + &io_parent,}, }; static struct resource touch_resources[] __devinitdata = { @@ -91,7 +124,7 @@ }; static struct resource rtc_resources[] __devinitdata = { - {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ,}, + {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ, &io_parent,}, }; static struct mfd_cell bk_devs[] = { --- linux-3.5.0.orig/drivers/mfd/rtsx_pcr.h +++ linux-3.5.0/drivers/mfd/rtsx_pcr.h @@ -0,0 +1,36 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_PCR_H +#define __RTSX_PCR_H + +#include + +#define MIN_DIV_N_PCR 80 +#define MAX_DIV_N_PCR 208 + +void rts5209_init_params(struct rtsx_pcr *pcr); +void rts5229_init_params(struct rtsx_pcr *pcr); +void rtl8411_init_params(struct rtsx_pcr *pcr); +void rts5227_init_params(struct rtsx_pcr *pcr); + +#endif --- linux-3.5.0.orig/drivers/mfd/ab3100-core.c +++ linux-3.5.0/drivers/mfd/ab3100-core.c @@ -409,8 +409,6 @@ u32 fatevent; int err; - add_interrupt_randomness(irq); - err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1, event_regs, 3); if (err) @@ -933,9 +931,6 @@ err = request_threaded_irq(client->irq, NULL, ab3100_irq_handler, IRQF_ONESHOT, "ab3100-core", ab3100); - /* This real unpredictable IRQ is of course sampled for entropy */ - rand_initialize_irq(client->irq); - if (err) goto exit_no_irq; --- linux-3.5.0.orig/drivers/mfd/rts5229.c +++ linux-3.5.0/drivers/mfd/rts5229.c @@ -0,0 +1,234 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rts5229_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + rtsx_pci_read_register(pcr, DUMMY_REG_RESET_0, &val); + return val & 0x0F; +} + +static int rts5229_extra_init_hw(struct rtsx_pcr *pcr) +{ + rtsx_pci_init_cmd(pcr); + + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02); + /* Switch LDO3318 source from DV33 to card_3v3 */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x01); + /* LED shine disabled, set initial shine cycle period */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OLT_LED_CTL, 0x0F, 0x02); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5229_optimize_phy(struct rtsx_pcr *pcr) +{ + /* Optimize RX sensitivity */ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42); +} + +static int rts5229_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02); +} + +static int rts5229_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); +} + +static int rts5229_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08); +} + +static int rts5229_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00); +} + +static int rts5229_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_PARTIAL_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x02); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x06); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5229_card_power_off(struct rtsx_pcr *pcr, int card) +{ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK | PMOS_STRG_MASK, + SD_POWER_OFF | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X00); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5229_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static const struct pcr_ops rts5229_pcr_ops = { + .extra_init_hw = rts5229_extra_init_hw, + .optimize_phy = rts5229_optimize_phy, + .turn_on_led = rts5229_turn_on_led, + .turn_off_led = rts5229_turn_off_led, + .enable_auto_blink = rts5229_enable_auto_blink, + .disable_auto_blink = rts5229_disable_auto_blink, + .card_power_on = rts5229_card_power_on, + .card_power_off = rts5229_card_power_off, + .switch_output_voltage = rts5229_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5229_sd_pull_ctl_enable_tbl1[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* For RTS5229 version C */ +static const u32 rts5229_sd_pull_ctl_enable_tbl2[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5229_sd_pull_ctl_disable_tbl1[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* For RTS5229 version C */ +static const u32 rts5229_sd_pull_ctl_disable_tbl2[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5229_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5229_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5229_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rts5229_pcr_ops; + + pcr->ic_version = rts5229_get_ic_version(pcr); + if (pcr->ic_version == IC_VER_C) { + pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl2; + pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl2; + } else { + pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl1; + pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl1; + } + pcr->ms_pull_ctl_enable_tbl = rts5229_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5229_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/remoteproc/Kconfig +++ linux-3.5.0/drivers/remoteproc/Kconfig @@ -4,7 +4,8 @@ config REMOTEPROC tristate depends on EXPERIMENTAL - select FW_CONFIG + select FW_LOADER + select VIRTIO config OMAP_REMOTEPROC tristate "OMAP remoteproc support" --- linux-3.5.0.orig/drivers/remoteproc/remoteproc_core.c +++ linux-3.5.0/drivers/remoteproc/remoteproc_core.c @@ -440,10 +440,12 @@ /* it is now safe to add the virtio device */ ret = rproc_add_virtio_dev(rvdev, rsc->id); if (ret) - goto free_vrings; + goto remove_rvdev; return 0; +remove_rvdev: + list_del(&rvdev->node); free_vrings: __rproc_free_vrings(rvdev, i); kfree(rvdev); @@ -643,17 +645,10 @@ dev_dbg(dev, "carveout rsc: da %x, pa %x, len %x, flags %x\n", rsc->da, rsc->pa, rsc->len, rsc->flags); - mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); - if (!mapping) { - dev_err(dev, "kzalloc mapping failed\n"); - return -ENOMEM; - } - carveout = kzalloc(sizeof(*carveout), GFP_KERNEL); if (!carveout) { dev_err(dev, "kzalloc carveout failed\n"); - ret = -ENOMEM; - goto free_mapping; + return -ENOMEM; } va = dma_alloc_coherent(dev, rsc->len, &dma, GFP_KERNEL); @@ -683,11 +678,18 @@ * physical address in this case. */ if (rproc->domain) { + mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); + if (!mapping) { + dev_err(dev, "kzalloc mapping failed\n"); + ret = -ENOMEM; + goto dma_free; + } + ret = iommu_map(rproc->domain, rsc->da, dma, rsc->len, rsc->flags); if (ret) { dev_err(dev, "iommu_map failed: %d\n", ret); - goto dma_free; + goto free_mapping; } /* @@ -728,12 +730,12 @@ return 0; +free_mapping: + kfree(mapping); dma_free: dma_free_coherent(dev, rsc->len, va, dma); free_carv: kfree(carveout); -free_mapping: - kfree(mapping); return ret; } --- linux-3.5.0.orig/drivers/ssb/driver_chipcommon_pmu.c +++ linux-3.5.0/drivers/ssb/driver_chipcommon_pmu.c @@ -645,3 +645,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-3.5.0.orig/drivers/infiniband/core/netlink.c +++ linux-3.5.0/drivers/infiniband/core/netlink.c @@ -152,6 +152,7 @@ { struct netlink_dump_control c = { .dump = client->cb_table[op].dump, + .module = client->cb_table[op].module, }; return netlink_dump_start(nls, skb, nlh, &c); } --- linux-3.5.0.orig/drivers/infiniband/core/cma.c +++ linux-3.5.0/drivers/infiniband/core/cma.c @@ -3457,7 +3457,8 @@ } static const struct ibnl_client_cbs cma_cb_table[] = { - [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats }, + [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats, + .module = THIS_MODULE }, }; static int __init cma_init(void) --- linux-3.5.0.orig/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ linux-3.5.0/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -755,9 +755,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-3.5.0.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ linux-3.5.0/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -190,7 +190,9 @@ mcast->mcmember = *mcmember; - /* Set the cached Q_Key before we attach if it's the broadcast group */ + /* Set the multicast MTU and cached Q_Key before we attach if it's + * the broadcast group. + */ if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4, sizeof (union ib_gid))) { spin_lock_irq(&priv->lock); @@ -198,10 +200,17 @@ spin_unlock_irq(&priv->lock); return -EAGAIN; } + priv->mcast_mtu = IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey); spin_unlock_irq(&priv->lock); priv->tx_wr.wr.ud.remote_qkey = priv->qkey; set_qkey = 1; + + if (!ipoib_cm_admin_enabled(dev)) { + rtnl_lock(); + dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); + rtnl_unlock(); + } } if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { @@ -589,14 +598,6 @@ return; } - priv->mcast_mtu = IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); - - if (!ipoib_cm_admin_enabled(dev)) { - rtnl_lock(); - dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); - rtnl_unlock(); - } - ipoib_dbg_mcast(priv, "successfully joined all multicast groups\n"); clear_bit(IPOIB_MCAST_RUN, &priv->flags); --- linux-3.5.0.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ linux-3.5.0/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -148,7 +148,7 @@ netif_stop_queue(dev); - ipoib_ib_dev_down(dev, 0); + ipoib_ib_dev_down(dev, 1); ipoib_ib_dev_stop(dev, 0); if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { --- linux-3.5.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-3.5.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -586,24 +586,62 @@ scmnd->sc_data_direction); } -static void srp_remove_req(struct srp_target_port *target, - struct srp_request *req, s32 req_lim_delta) +/** + * srp_claim_req - Take ownership of the scmnd associated with a request. + * @target: SRP target port. + * @req: SRP request. + * @scmnd: If NULL, take ownership of @req->scmnd. If not NULL, only take + * ownership of @req->scmnd if it equals @scmnd. + * + * Return value: + * Either NULL or a pointer to the SCSI command the caller became owner of. + */ +static struct scsi_cmnd *srp_claim_req(struct srp_target_port *target, + struct srp_request *req, + struct scsi_cmnd *scmnd) { unsigned long flags; - srp_unmap_data(req->scmnd, target, req); + spin_lock_irqsave(&target->lock, flags); + if (!scmnd) { + scmnd = req->scmnd; + req->scmnd = NULL; + } else if (req->scmnd == scmnd) { + req->scmnd = NULL; + } else { + scmnd = NULL; + } + spin_unlock_irqrestore(&target->lock, flags); + + return scmnd; +} + +/** + * srp_free_req() - Unmap data and add request to the free request list. + */ +static void srp_free_req(struct srp_target_port *target, + struct srp_request *req, struct scsi_cmnd *scmnd, + s32 req_lim_delta) +{ + unsigned long flags; + + srp_unmap_data(scmnd, target, req); + spin_lock_irqsave(&target->lock, flags); target->req_lim += req_lim_delta; - req->scmnd = NULL; list_add_tail(&req->list, &target->free_reqs); spin_unlock_irqrestore(&target->lock, flags); } static void srp_reset_req(struct srp_target_port *target, struct srp_request *req) { - req->scmnd->result = DID_RESET << 16; - req->scmnd->scsi_done(req->scmnd); - srp_remove_req(target, req, 0); + struct scsi_cmnd *scmnd = srp_claim_req(target, req, NULL); + + if (scmnd) { + srp_free_req(target, req, scmnd, 0); + scmnd->result = DID_RESET << 16; + scmnd->scsi_done(scmnd); + } } static int srp_reconnect_target(struct srp_target_port *target) @@ -1073,11 +1111,18 @@ complete(&target->tsk_mgmt_done); } else { req = &target->req_ring[rsp->tag]; - scmnd = req->scmnd; - if (!scmnd) + scmnd = srp_claim_req(target, req, NULL); + if (!scmnd) { shost_printk(KERN_ERR, target->scsi_host, "Null scmnd for RSP w/tag %016llx\n", (unsigned long long) rsp->tag); + + spin_lock_irqsave(&target->lock, flags); + target->req_lim += be32_to_cpu(rsp->req_lim_delta); + spin_unlock_irqrestore(&target->lock, flags); + + return; + } scmnd->result = rsp->status; if (rsp->flags & SRP_RSP_FLAG_SNSVALID) { @@ -1092,7 +1137,9 @@ else if (rsp->flags & (SRP_RSP_FLAG_DIOVER | SRP_RSP_FLAG_DIUNDER)) scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); - srp_remove_req(target, req, be32_to_cpu(rsp->req_lim_delta)); + srp_free_req(target, req, scmnd, + be32_to_cpu(rsp->req_lim_delta)); + scmnd->host_scribble = NULL; scmnd->scsi_done(scmnd); } @@ -1631,25 +1678,18 @@ { struct srp_target_port *target = host_to_target(scmnd->device->host); struct srp_request *req = (struct srp_request *) scmnd->host_scribble; - int ret = SUCCESS; shost_printk(KERN_ERR, target->scsi_host, "SRP abort called\n"); - if (!req || target->qp_in_error) - return FAILED; - if (srp_send_tsk_mgmt(target, req->index, scmnd->device->lun, - SRP_TSK_ABORT_TASK)) + if (!req || target->qp_in_error || !srp_claim_req(target, req, scmnd)) return FAILED; + srp_send_tsk_mgmt(target, req->index, scmnd->device->lun, + SRP_TSK_ABORT_TASK); + srp_free_req(target, req, scmnd, 0); + scmnd->result = DID_ABORT << 16; + scmnd->scsi_done(scmnd); - if (req->scmnd) { - if (!target->tsk_mgmt_status) { - srp_remove_req(target, req, 0); - scmnd->result = DID_ABORT << 16; - } else - ret = FAILED; - } - - return ret; + return SUCCESS; } static int srp_reset_device(struct scsi_cmnd *scmnd) --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes_verbs.c +++ linux-3.5.0/drivers/infiniband/hw/nes/nes_verbs.c @@ -1404,6 +1404,9 @@ } nesqp->sig_all = (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR); + init_timer(&nesqp->terminate_timer); + nesqp->terminate_timer.function = nes_terminate_timeout; + nesqp->terminate_timer.data = (unsigned long)nesqp; /* update the QP table */ nesdev->nesadapter->qp_table[nesqp->hwqp.qp_id-NES_FIRST_QPN] = nesqp; @@ -1413,7 +1416,6 @@ return &nesqp->ibqp; } - /** * nes_clean_cq */ @@ -2559,6 +2561,11 @@ return ibmr; case IWNES_MEMREG_TYPE_QP: case IWNES_MEMREG_TYPE_CQ: + if (!region->length) { + nes_debug(NES_DBG_MR, "Unable to register zero length region for CQ\n"); + ib_umem_release(region); + return ERR_PTR(-EINVAL); + } nespbl = kzalloc(sizeof(*nespbl), GFP_KERNEL); if (!nespbl) { nes_debug(NES_DBG_MR, "Unable to allocate PBL\n"); --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes_hw.c +++ linux-3.5.0/drivers/infiniband/hw/nes/nes_hw.c @@ -75,7 +75,6 @@ static void process_critical_error(struct nes_device *nesdev); static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number); static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode); -static void nes_terminate_timeout(unsigned long context); static void nes_terminate_start_timer(struct nes_qp *nesqp); #ifdef CONFIG_INFINIBAND_NES_DEBUG @@ -3522,7 +3521,7 @@ } /* Timeout routine in case terminate fails to complete */ -static void nes_terminate_timeout(unsigned long context) +void nes_terminate_timeout(unsigned long context) { struct nes_qp *nesqp = (struct nes_qp *)(unsigned long)context; @@ -3532,11 +3531,7 @@ /* Set a timer in case hw cannot complete the terminate sequence */ static void nes_terminate_start_timer(struct nes_qp *nesqp) { - init_timer(&nesqp->terminate_timer); - nesqp->terminate_timer.function = nes_terminate_timeout; - nesqp->terminate_timer.expires = jiffies + HZ; - nesqp->terminate_timer.data = (unsigned long)nesqp; - add_timer(&nesqp->terminate_timer); + mod_timer(&nesqp->terminate_timer, (jiffies + HZ)); } /** --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes.h +++ linux-3.5.0/drivers/infiniband/hw/nes/nes.h @@ -524,6 +524,7 @@ int nes_destroy_cqp(struct nes_device *); int nes_nic_cm_xmit(struct sk_buff *, struct net_device *); void nes_recheck_link_status(struct work_struct *work); +void nes_terminate_timeout(unsigned long context); /* nes_nic.c */ struct net_device *nes_netdev_init(struct nes_device *, void __iomem *); --- linux-3.5.0.orig/drivers/memstick/host/Makefile +++ linux-3.5.0/drivers/memstick/host/Makefile @@ -5,3 +5,4 @@ obj-$(CONFIG_MEMSTICK_TIFM_MS) += tifm_ms.o obj-$(CONFIG_MEMSTICK_JMICRON_38X) += jmb38x_ms.o obj-$(CONFIG_MEMSTICK_R592) += r592.o +obj-$(CONFIG_MEMSTICK_REALTEK_PCI) += rtsx_pci_ms.o --- linux-3.5.0.orig/drivers/memstick/host/Kconfig +++ linux-3.5.0/drivers/memstick/host/Kconfig @@ -42,3 +42,13 @@ To compile this driver as a module, choose M here: the module will be called r592. + +config MEMSTICK_REALTEK_PCI + tristate "Realtek PCI-E Memstick Card Interface Driver" + depends on MFD_RTSX_PCI + help + Say Y here to include driver code to support Memstick card interface + of Realtek PCI-E card reader + + To compile this driver as a module, choose M here: the module will + be called rtsx_pci_ms. --- linux-3.5.0.orig/drivers/memstick/host/rtsx_pci_ms.c +++ linux-3.5.0/drivers/memstick/host/rtsx_pci_ms.c @@ -0,0 +1,648 @@ +/* Realtek PCI-Express Memstick Card Interface driver + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include + +struct realtek_pci_ms { + struct platform_device *pdev; + struct rtsx_pcr *pcr; + struct memstick_host *msh; + struct memstick_request *req; + + struct mutex host_mutex; + struct work_struct handle_req; + + u8 ssc_depth; + unsigned int clock; + unsigned char ifmode; + bool eject; +}; + +static inline struct device *ms_dev(struct realtek_pci_ms *host) +{ + return &(host->pdev->dev); +} + +static inline void ms_clear_error(struct realtek_pci_ms *host) +{ + rtsx_pci_write_register(host->pcr, CARD_STOP, + MS_STOP | MS_CLR_ERR, MS_STOP | MS_CLR_ERR); +} + +#ifdef DEBUG + +static void ms_print_debug_regs(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + u16 i; + u8 *ptr; + + /* Print MS host internal registers */ + rtsx_pci_init_cmd(pcr); + for (i = 0xFD40; i <= 0xFD44; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + for (i = 0xFD52; i <= 0xFD69; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + rtsx_pci_send_cmd(pcr, 100); + + ptr = rtsx_pci_get_cmd_data(pcr); + for (i = 0xFD40; i <= 0xFD44; i++) + dev_dbg(ms_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); + for (i = 0xFD52; i <= 0xFD69; i++) + dev_dbg(ms_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); +} + +#else + +#define ms_print_debug_regs(host) + +#endif + +static int ms_power_on(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, MS_MOD_SEL); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_MS); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, + MS_CLK_EN, MS_CLK_EN); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_pull_ctl_enable(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + err = rtsx_pci_card_power_on(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + /* Wait ms power stable */ + msleep(150); + + err = rtsx_pci_write_register(pcr, CARD_OE, + MS_OUTPUT_EN, MS_OUTPUT_EN); + if (err < 0) + return err; + + return 0; +} + +static int ms_power_off(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, MS_CLK_EN, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_OE, MS_OUTPUT_EN, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_power_off(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + return rtsx_pci_card_pull_ctl_disable(pcr, RTSX_MS_CARD); +} + +static int ms_transfer_data(struct realtek_pci_ms *host, unsigned char data_dir, + u8 tpc, u8 cfg, struct scatterlist *sg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + unsigned int length = sg->length; + u16 sec_cnt = (u16)(length / 512); + u8 val, trans_mode, dma_dir; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x, data_dir = %s, length = %d\n", + __func__, tpc, (data_dir == READ) ? "READ" : "WRITE", + length); + + if (data_dir == READ) { + dma_dir = DMA_DIR_FROM_CARD; + trans_mode = MS_TM_AUTO_READ; + } else { + dma_dir = DMA_DIR_TO_CARD; + trans_mode = MS_TM_AUTO_WRITE; + } + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_SECTOR_CNT_H, + 0xFF, (u8)(sec_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_SECTOR_CNT_L, + 0xFF, (u8)sec_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + DMA_DONE_INT, DMA_DONE_INT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, 0xFF, (u8)(length >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, 0xFF, (u8)(length >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, 0xFF, (u8)(length >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)length); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, dma_dir | DMA_EN | DMA_512); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, RING_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | trans_mode); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + + rtsx_pci_send_cmd_no_wait(pcr); + + err = rtsx_pci_transfer_data(pcr, sg, 1, data_dir == READ, 10000); + if (err < 0) { + ms_clear_error(host); + return err; + } + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + if (val & (MS_INT_CMDNK | MS_INT_ERR | MS_CRC16_ERR | MS_RDY_TIMEOUT)) + return -EIO; + + return 0; +} + +static int ms_write_bytes(struct realtek_pci_ms *host, u8 tpc, + u8 cfg, u8 cnt, u8 *data, u8 *int_reg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x\n", __func__, tpc); + + if (!data) + return -EINVAL; + + rtsx_pci_init_cmd(pcr); + + for (i = 0; i < cnt; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + PPBUF_BASE2 + i, 0xFF, data[i]); + if (cnt % 2) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + PPBUF_BASE2 + i, 0xFF, 0xFF); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_BYTE_CNT, 0xFF, cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | MS_TM_WRITE_BYTES); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + if (int_reg) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, MS_TRANS_CFG, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 5000); + if (err < 0) { + u8 val; + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + dev_dbg(ms_dev(host), "MS_TRANS_CFG: 0x%02x\n", val); + + if (int_reg) + *int_reg = val & 0x0F; + + ms_print_debug_regs(host); + + ms_clear_error(host); + + if (!(tpc & 0x08)) { + if (val & MS_CRC16_ERR) + return -EIO; + } else { + if (!(val & 0x80)) { + if (val & (MS_INT_ERR | MS_INT_CMDNK)) + return -EIO; + } + } + + return -ETIMEDOUT; + } + + if (int_reg) { + u8 *ptr = rtsx_pci_get_cmd_data(pcr) + 1; + *int_reg = *ptr & 0x0F; + } + + return 0; +} + +static int ms_read_bytes(struct realtek_pci_ms *host, u8 tpc, + u8 cfg, u8 cnt, u8 *data, u8 *int_reg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 *ptr; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x\n", __func__, tpc); + + if (!data) + return -EINVAL; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_BYTE_CNT, 0xFF, cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | MS_TM_READ_BYTES); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + for (i = 0; i < cnt - 1; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PPBUF_BASE2 + i, 0, 0); + if (cnt % 2) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PPBUF_BASE2 + cnt, 0, 0); + else + rtsx_pci_add_cmd(pcr, READ_REG_CMD, + PPBUF_BASE2 + cnt - 1, 0, 0); + if (int_reg) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, MS_TRANS_CFG, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 5000); + if (err < 0) { + u8 val; + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + dev_dbg(ms_dev(host), "MS_TRANS_CFG: 0x%02x\n", val); + + if (int_reg) + *int_reg = val & 0x0F; + + ms_print_debug_regs(host); + + ms_clear_error(host); + + if (!(tpc & 0x08)) { + if (val & MS_CRC16_ERR) + return -EIO; + } else { + if (!(val & 0x80)) { + if (val & (MS_INT_ERR | MS_INT_CMDNK)) + return -EIO; + } + } + + return -ETIMEDOUT; + } + + ptr = rtsx_pci_get_cmd_data(pcr) + 1; + for (i = 0; i < cnt; i++) + data[i] = *ptr++; + + if (int_reg) + *int_reg = *ptr & 0x0F; + + return 0; +} + +static int rtsx_pci_ms_issue_cmd(struct realtek_pci_ms *host) +{ + struct memstick_request *req = host->req; + int err = 0; + u8 cfg = 0, int_reg; + + dev_dbg(ms_dev(host), "%s\n", __func__); + + if (req->need_card_int) { + if (host->ifmode != MEMSTICK_SERIAL) + cfg = WAIT_INT; + } + + if (req->long_data) { + err = ms_transfer_data(host, req->data_dir, + req->tpc, cfg, &(req->sg)); + } else { + if (req->data_dir == READ) { + err = ms_read_bytes(host, req->tpc, cfg, + req->data_len, req->data, &int_reg); + } else { + err = ms_write_bytes(host, req->tpc, cfg, + req->data_len, req->data, &int_reg); + } + } + if (err < 0) + return err; + + if (req->need_card_int && (host->ifmode == MEMSTICK_SERIAL)) { + err = ms_read_bytes(host, MS_TPC_GET_INT, + NO_WAIT_INT, 1, &int_reg, NULL); + if (err < 0) + return err; + } + + if (req->need_card_int) { + dev_dbg(ms_dev(host), "int_reg: 0x%02x\n", int_reg); + + if (int_reg & MS_INT_CMDNK) + req->int_reg |= MEMSTICK_INT_CMDNAK; + if (int_reg & MS_INT_BREQ) + req->int_reg |= MEMSTICK_INT_BREQ; + if (int_reg & MS_INT_ERR) + req->int_reg |= MEMSTICK_INT_ERR; + if (int_reg & MS_INT_CED) + req->int_reg |= MEMSTICK_INT_CED; + } + + return 0; +} + +static void rtsx_pci_ms_handle_req(struct work_struct *work) +{ + struct realtek_pci_ms *host = container_of(work, + struct realtek_pci_ms, handle_req); + struct rtsx_pcr *pcr = host->pcr; + struct memstick_host *msh = host->msh; + int rc; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + rtsx_pci_switch_clock(host->pcr, host->clock, host->ssc_depth, + false, true, false); + rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, MS_MOD_SEL); + rtsx_pci_write_register(pcr, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_MS); + + if (!host->req) { + do { + rc = memstick_next_req(msh, &host->req); + dev_dbg(ms_dev(host), "next req %d\n", rc); + + if (!rc) + host->req->error = rtsx_pci_ms_issue_cmd(host); + } while (!rc); + } + + mutex_unlock(&pcr->pcr_mutex); +} + +static void rtsx_pci_ms_request(struct memstick_host *msh) +{ + struct realtek_pci_ms *host = memstick_priv(msh); + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_MS_CARD)) + return; + + schedule_work(&host->handle_req); +} + +static int rtsx_pci_ms_set_param(struct memstick_host *msh, + enum memstick_param param, int value) +{ + struct realtek_pci_ms *host = memstick_priv(msh); + struct rtsx_pcr *pcr = host->pcr; + unsigned int clock = 0; + u8 ssc_depth = 0; + int err; + + dev_dbg(ms_dev(host), "%s: param = %d, value = %d\n", + __func__, param, value); + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_MS_CARD); + if (err) + return err; + + switch (param) { + case MEMSTICK_POWER: + if (value == MEMSTICK_POWER_ON) + err = ms_power_on(host); + else if (value == MEMSTICK_POWER_OFF) + err = ms_power_off(host); + else + return -EINVAL; + break; + + case MEMSTICK_INTERFACE: + if (value == MEMSTICK_SERIAL) { + clock = 19000000; + ssc_depth = RTSX_SSC_DEPTH_500K; + + err = rtsx_pci_write_register(pcr, MS_CFG, + 0x18, MS_BUS_WIDTH_1); + if (err < 0) + return err; + } else if (value == MEMSTICK_PAR4) { + clock = 39000000; + ssc_depth = RTSX_SSC_DEPTH_1M; + + err = rtsx_pci_write_register(pcr, MS_CFG, + 0x58, MS_BUS_WIDTH_4 | PUSH_TIME_ODD); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + err = rtsx_pci_switch_clock(pcr, clock, + ssc_depth, false, true, false); + if (err < 0) + return err; + + host->ssc_depth = ssc_depth; + host->clock = clock; + host->ifmode = value; + break; + } + + return 0; +} + +#ifdef CONFIG_PM + +static int rtsx_pci_ms_suspend(struct platform_device *pdev, pm_message_t state) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct memstick_host *msh = host->msh; + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + memstick_suspend_host(msh); + return 0; +} + +static int rtsx_pci_ms_resume(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct memstick_host *msh = host->msh; + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + memstick_resume_host(msh); + return 0; +} + +#else /* CONFIG_PM */ + +#define rtsx_pci_ms_suspend NULL +#define rtsx_pci_ms_resume NULL + +#endif /* CONFIG_PM */ + +static void rtsx_pci_ms_card_event(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + + memstick_detect_change(host->msh); +} + +static int rtsx_pci_ms_drv_probe(struct platform_device *pdev) +{ + struct memstick_host *msh; + struct realtek_pci_ms *host; + struct rtsx_pcr *pcr; + struct pcr_handle *handle = pdev->dev.platform_data; + int rc; + + if (!handle) + return -ENXIO; + + pcr = handle->pcr; + if (!pcr) + return -ENXIO; + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E Memstick controller found\n"); + + msh = memstick_alloc_host(sizeof(*host), &pdev->dev); + if (!msh) + return -ENOMEM; + + host = memstick_priv(msh); + host->pcr = pcr; + host->msh = msh; + host->pdev = pdev; + platform_set_drvdata(pdev, host); + pcr->slots[RTSX_MS_CARD].p_dev = pdev; + pcr->slots[RTSX_MS_CARD].card_event = rtsx_pci_ms_card_event; + + mutex_init(&host->host_mutex); + + INIT_WORK(&host->handle_req, rtsx_pci_ms_handle_req); + msh->request = rtsx_pci_ms_request; + msh->set_param = rtsx_pci_ms_set_param; + msh->caps = MEMSTICK_CAP_PAR4; + + rc = memstick_add_host(msh); + if (rc) { + memstick_free_host(msh); + return rc; + } + + return 0; +} + +static int rtsx_pci_ms_drv_remove(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct rtsx_pcr *pcr; + struct memstick_host *msh; + int rc; + + if (!host) + return 0; + + pcr = host->pcr; + pcr->slots[RTSX_MS_CARD].p_dev = NULL; + pcr->slots[RTSX_MS_CARD].card_event = NULL; + msh = host->msh; + host->eject = true; + + mutex_lock(&host->host_mutex); + if (host->req) { + dev_dbg(&(pdev->dev), + "%s: Controller removed during transfer\n", + dev_name(&msh->dev)); + + rtsx_pci_complete_unfinished_transfer(pcr); + + host->req->error = -ENOMEDIUM; + do { + rc = memstick_next_req(msh, &host->req); + if (!rc) + host->req->error = -ENOMEDIUM; + } while (!rc); + } + mutex_unlock(&host->host_mutex); + + memstick_remove_host(msh); + memstick_free_host(msh); + + platform_set_drvdata(pdev, NULL); + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E Memstick controller has been removed\n"); + + return 0; +} + +static struct platform_device_id rtsx_pci_ms_ids[] = { + { + .name = DRV_NAME_RTSX_PCI_MS, + }, { + /* sentinel */ + } +}; +MODULE_DEVICE_TABLE(platform, rtsx_pci_ms_ids); + +static struct platform_driver rtsx_pci_ms_driver = { + .probe = rtsx_pci_ms_drv_probe, + .remove = rtsx_pci_ms_drv_remove, + .id_table = rtsx_pci_ms_ids, + .suspend = rtsx_pci_ms_suspend, + .resume = rtsx_pci_ms_resume, + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME_RTSX_PCI_MS, + }, +}; +module_platform_driver(rtsx_pci_ms_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E Memstick Card Host Driver"); --- linux-3.5.0.orig/drivers/ata/sata_highbank.c +++ linux-3.5.0/drivers/ata/sata_highbank.c @@ -0,0 +1,450 @@ +/* + * Calxeda Highbank AHCI SATA platform driver + * Copyright 2012 Calxeda, Inc. + * + * based on the AHCI SATA platform driver by Jeff Garzik and Anton Vorontsov + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ahci.h" + +#define CPHY_MAP(dev, addr) ((((dev) & 0x1f) << 7) | (((addr) >> 9) & 0x7f)) +#define CPHY_ADDR(addr) (((addr) & 0x1ff) << 2) +#define SERDES_CR_CTL 0x80a0 +#define SERDES_CR_ADDR 0x80a1 +#define SERDES_CR_DATA 0x80a2 +#define CR_BUSY 0x0001 +#define CR_START 0x0001 +#define CR_WR_RDN 0x0002 +#define CPHY_RX_INPUT_STS 0x2002 +#define CPHY_SATA_OVERRIDE 0x4000 +#define CPHY_OVERRIDE 0x2005 +#define SPHY_LANE 0x100 +#define SPHY_HALF_RATE 0x0001 +#define CPHY_SATA_DPLL_MODE 0x0700 +#define CPHY_SATA_DPLL_SHIFT 8 +#define CPHY_SATA_DPLL_RESET (1 << 11) +#define CPHY_PHY_COUNT 6 +#define CPHY_LANE_COUNT 4 +#define CPHY_PORT_COUNT (CPHY_PHY_COUNT * CPHY_LANE_COUNT) + +static DEFINE_SPINLOCK(cphy_lock); +/* Each of the 6 phys can have up to 4 sata ports attached to i. Map 0-based + * sata ports to their phys and then to their lanes within the phys + */ +struct phy_lane_info { + void __iomem *phy_base; + u8 lane_mapping; + u8 phy_devs; +}; +static struct phy_lane_info port_data[CPHY_PORT_COUNT]; + +static u32 __combo_phy_reg_read(u8 sata_port, u32 addr) +{ + u32 data; + u8 dev = port_data[sata_port].phy_devs; + spin_lock(&cphy_lock); + writel(CPHY_MAP(dev, addr), port_data[sata_port].phy_base + 0x800); + data = readl(port_data[sata_port].phy_base + CPHY_ADDR(addr)); + spin_unlock(&cphy_lock); + return data; +} + +static void __combo_phy_reg_write(u8 sata_port, u32 addr, u32 data) +{ + u8 dev = port_data[sata_port].phy_devs; + spin_lock(&cphy_lock); + writel(CPHY_MAP(dev, addr), port_data[sata_port].phy_base + 0x800); + writel(data, port_data[sata_port].phy_base + CPHY_ADDR(addr)); + spin_unlock(&cphy_lock); +} + +static void combo_phy_wait_for_ready(u8 sata_port) +{ + while (__combo_phy_reg_read(sata_port, SERDES_CR_CTL) & CR_BUSY) + udelay(5); +} + +static u32 combo_phy_read(u8 sata_port, u32 addr) +{ + combo_phy_wait_for_ready(sata_port); + __combo_phy_reg_write(sata_port, SERDES_CR_ADDR, addr); + __combo_phy_reg_write(sata_port, SERDES_CR_CTL, CR_START); + combo_phy_wait_for_ready(sata_port); + return __combo_phy_reg_read(sata_port, SERDES_CR_DATA); +} + +static void combo_phy_write(u8 sata_port, u32 addr, u32 data) +{ + combo_phy_wait_for_ready(sata_port); + __combo_phy_reg_write(sata_port, SERDES_CR_ADDR, addr); + __combo_phy_reg_write(sata_port, SERDES_CR_DATA, data); + __combo_phy_reg_write(sata_port, SERDES_CR_CTL, CR_WR_RDN | CR_START); +} + +static void highbank_cphy_disable_overrides(u8 sata_port) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp; + if (unlikely(port_data[sata_port].phy_base == NULL)) + return; + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + lane * SPHY_LANE); + tmp &= ~CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); +} + +static void cphy_override_rx_mode(u8 sata_port, u32 val) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp; + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + lane * SPHY_LANE); + tmp &= ~CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp |= CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp &= ~CPHY_SATA_DPLL_MODE; + tmp |= val << CPHY_SATA_DPLL_SHIFT; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp |= CPHY_SATA_DPLL_RESET; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp &= ~CPHY_SATA_DPLL_RESET; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + msleep(15); +} + +static void highbank_cphy_override_lane(u8 sata_port) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp, k = 0; + + if (unlikely(port_data[sata_port].phy_base == NULL)) + return; + do { + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + + lane * SPHY_LANE); + } while ((tmp & SPHY_HALF_RATE) && (k++ < 1000)); + cphy_override_rx_mode(sata_port, 3); +} + +static int highbank_initialize_phys(struct device *dev, void __iomem *addr) +{ + struct device_node *sata_node = dev->of_node; + int phy_count = 0, phy, port = 0; + void __iomem *cphy_base[CPHY_PHY_COUNT]; + struct device_node *phy_nodes[CPHY_PHY_COUNT]; + memset(port_data, 0, sizeof(struct phy_lane_info) * CPHY_PORT_COUNT); + memset(phy_nodes, 0, sizeof(struct device_node*) * CPHY_PHY_COUNT); + + do { + u32 tmp; + struct of_phandle_args phy_data; + if (of_parse_phandle_with_args(sata_node, + "calxeda,port-phys", "#phy-cells", + port, &phy_data)) + break; + for (phy = 0; phy < phy_count; phy++) { + if (phy_nodes[phy] == phy_data.np) + break; + } + if (phy_nodes[phy] == NULL) { + phy_nodes[phy] = phy_data.np; + cphy_base[phy] = of_iomap(phy_nodes[phy], 0); + if (cphy_base[phy] == NULL) { + return 0; + } + phy_count += 1; + } + port_data[port].lane_mapping = phy_data.args[0]; + of_property_read_u32(phy_nodes[phy], "phydev", &tmp); + port_data[port].phy_devs = tmp; + port_data[port].phy_base = cphy_base[phy]; + of_node_put(phy_data.np); + port += 1; + } while (port < CPHY_PORT_COUNT); + return 0; +} + +static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, + unsigned long deadline) +{ + const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); + struct ata_port *ap = link->ap; + struct ahci_port_priv *pp = ap->private_data; + u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; + struct ata_taskfile tf; + bool online; + u32 sstatus; + int rc; + int retry = 10; + + ahci_stop_engine(ap); + + /* clear D2H reception area to properly wait for D2H FIS */ + ata_tf_init(link->device, &tf); + tf.command = 0x80; + ata_tf_to_fis(&tf, 0, 0, d2h_fis); + + do { + highbank_cphy_disable_overrides(link->ap->port_no); + rc = sata_link_hardreset(link, timing, deadline, &online, NULL); + highbank_cphy_override_lane(link->ap->port_no); + + /* If the status is 1, we are connected, but the link did not + * come up. So retry resetting the link again. + */ + if (sata_scr_read(link, SCR_STATUS, &sstatus)) + break; + if (!(sstatus & 0x3)) + break; + } while (!online && retry--); + + ahci_start_engine(ap); + + if (online) + *class = ahci_dev_classify(ap); + + return rc; +} + +static struct ata_port_operations ahci_highbank_ops = { + .inherits = &ahci_ops, + .hardreset = ahci_highbank_hardreset, +}; + +static const struct ata_port_info ahci_highbank_port_info = { + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_highbank_ops, +}; + +static struct scsi_host_template ahci_highbank_platform_sht = { + AHCI_SHT("highbank-ahci"), +}; + +static const struct of_device_id ahci_of_match[] = { + { .compatible = "calxeda,hb-ahci" }, + {}, +}; +MODULE_DEVICE_TABLE(of, ahci_of_match); + +static int __init ahci_highbank_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ahci_host_priv *hpriv; + struct ata_host *host; + struct resource *mem; + int irq; + int n_ports; + int i; + int rc; + struct ata_port_info pi = ahci_highbank_port_info; + const struct ata_port_info *ppi[] = { &pi, NULL }; + + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!mem) { + dev_err(dev, "no mmio space\n"); + return -EINVAL; + } + + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + dev_err(dev, "no irq\n"); + return -EINVAL; + } + + hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL); + if (!hpriv) { + dev_err(dev, "can't alloc ahci_host_priv\n"); + return -ENOMEM; + } + + hpriv->flags |= (unsigned long)pi.private_data; + + hpriv->mmio = devm_ioremap(dev, mem->start, resource_size(mem)); + if (!hpriv->mmio) { + dev_err(dev, "can't map %pR\n", mem); + return -ENOMEM; + } + + rc = highbank_initialize_phys(dev, hpriv->mmio); + if (rc) + return rc; + + + ahci_save_initial_config(dev, hpriv, 0, 0); + + /* prepare host */ + if (hpriv->cap & HOST_CAP_NCQ) + pi.flags |= ATA_FLAG_NCQ; + + if (hpriv->cap & HOST_CAP_PMP) + pi.flags |= ATA_FLAG_PMP; + + ahci_set_em_messages(hpriv, &pi); + + /* CAP.NP sometimes indicate the index of the last enabled + * port, at other times, that of the last possible port, so + * determining the maximum port number requires looking at + * both CAP.NP and port_map. + */ + n_ports = max(ahci_nr_ports(hpriv->cap), fls(hpriv->port_map)); + + host = ata_host_alloc_pinfo(dev, ppi, n_ports); + if (!host) { + rc = -ENOMEM; + goto err0; + } + + host->private_data = hpriv; + + if (!(hpriv->cap & HOST_CAP_SSS) || ahci_ignore_sss) + host->flags |= ATA_HOST_PARALLEL_SCAN; + + if (pi.flags & ATA_FLAG_EM) + ahci_reset_em(host); + + for (i = 0; i < host->n_ports; i++) { + struct ata_port *ap = host->ports[i]; + + ata_port_desc(ap, "mmio %pR", mem); + ata_port_desc(ap, "port 0x%x", 0x100 + ap->port_no * 0x80); + + /* set enclosure management message type */ + if (ap->flags & ATA_FLAG_EM) + ap->em_message_type = hpriv->em_msg_type; + + /* disabled/not-implemented port */ + if (!(hpriv->port_map & (1 << i))) + ap->ops = &ata_dummy_port_ops; + } + + rc = ahci_reset_controller(host); + if (rc) + goto err0; + + ahci_init_controller(host); + ahci_print_info(host, "platform"); + + rc = ata_host_activate(host, irq, ahci_interrupt, 0, + &ahci_highbank_platform_sht); + if (rc) + goto err0; + + return 0; +err0: + return rc; +} + +static int __devexit ahci_highbank_remove(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ata_host *host = dev_get_drvdata(dev); + + ata_host_detach(host); + + return 0; +} + +#ifdef CONFIG_PM +static int ahci_highbank_suspend(struct device *dev) +{ + struct ata_host *host = dev_get_drvdata(dev); + struct ahci_host_priv *hpriv = host->private_data; + void __iomem *mmio = hpriv->mmio; + u32 ctl; + int rc; + + if (hpriv->flags & AHCI_HFLAG_NO_SUSPEND) { + dev_err(dev, "firmware update required for suspend/resume\n"); + return -EIO; + } + + /* + * AHCI spec rev1.1 section 8.3.3: + * Software must disable interrupts prior to requesting a + * transition of the HBA to D3 state. + */ + ctl = readl(mmio + HOST_CTL); + ctl &= ~HOST_IRQ_EN; + writel(ctl, mmio + HOST_CTL); + readl(mmio + HOST_CTL); /* flush */ + + rc = ata_host_suspend(host, PMSG_SUSPEND); + if (rc) + return rc; + + return 0; +} + +static int ahci_highbank_resume(struct device *dev) +{ + struct ata_host *host = dev_get_drvdata(dev); + int rc; + + if (dev->power.power_state.event == PM_EVENT_SUSPEND) { + rc = ahci_reset_controller(host); + if (rc) + return rc; + + ahci_init_controller(host); + } + + ata_host_resume(host); + + return 0; +} +#endif + +SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops, + ahci_highbank_suspend, ahci_highbank_resume); + +static struct platform_driver ahci_highbank_driver = { + .remove = __devexit_p(ahci_highbank_remove), + .driver = { + .name = "highbank-ahci", + .owner = THIS_MODULE, + .of_match_table = ahci_of_match, + .pm = &ahci_highbank_pm_ops, + }, + .probe = ahci_highbank_probe, +}; + +module_platform_driver(ahci_highbank_driver); + +MODULE_DESCRIPTION("Calxeda Highbank AHCI SATA platform driver"); +MODULE_AUTHOR("Mark Langsdorf "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("sata:highbank"); --- linux-3.5.0.orig/drivers/ata/ata_piix.c +++ linux-3.5.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 { @@ -326,11 +328,39 @@ /* 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) */ + { 0x8086, 0x9c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Lynx Point-LP) */ + { 0x8086, 0x9c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Lynx Point-LP) */ + { 0x8086, 0x9c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (Lynx Point-LP) */ + { 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 }, + /* 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 }, + { } /* terminate list */ }; @@ -494,6 +524,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 ata_port_info piix_port_info[] = { @@ -635,6 +667,24 @@ .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, + }, }; static struct pci_bits piix_enable_bits[] = { @@ -1577,12 +1627,31 @@ }, { } /* terminate list */ }; - const struct dmi_system_id *dmi = dmi_first_match(ignore_hyperv); + static const struct dmi_system_id allow_virtual_pc[] = { + { + /* In MS Virtual PC guests the DMI ident is nearly + * identical to a Hyper-V guest. One difference is the + * product version which is used here to identify + * a Virtual PC guest. This entry allows ata_piix to + * drive the emulated hardware. + */ + .ident = "MS Virtual PC 2007", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, + "Microsoft Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"), + DMI_MATCH(DMI_PRODUCT_VERSION, "VS2005R2"), + }, + }, + { } /* terminate list */ + }; + const struct dmi_system_id *ignore = dmi_first_match(ignore_hyperv); + const struct dmi_system_id *allow = dmi_first_match(allow_virtual_pc); - if (dmi && prefer_ms_hyperv) { + if (ignore && !allow && prefer_ms_hyperv) { host->flags |= ATA_HOST_IGNORE_ATA; dev_info(host->dev, "%s detected, ATA device ignore set\n", - dmi->ident); + ignore->ident); } #endif } @@ -1719,10 +1788,16 @@ ata_pci_remove_one(pdev); } +static bool disable_driver = 0; static int __init piix_init(void) { int rc; + if (disable_driver) { + printk(KERN_WARNING "ata_piix: driver disabled completely\n"); + return 0; + } + DPRINTK("pci_register_driver\n"); rc = pci_register_driver(&piix_pci_driver); if (rc) @@ -1739,5 +1814,6 @@ pci_unregister_driver(&piix_pci_driver); } +module_param(disable_driver, bool, 0); module_init(piix_init); module_exit(piix_exit); --- linux-3.5.0.orig/drivers/ata/sata_svw.c +++ linux-3.5.0/drivers/ata/sata_svw.c @@ -142,6 +142,39 @@ return 0; } +static int k2_sata_softreset(struct ata_link *link, + unsigned int *class, unsigned long deadline) +{ + u8 dmactl; + void __iomem *mmio = link->ap->ioaddr.bmdma_addr; + + dmactl = readb(mmio + ATA_DMA_CMD); + + /* Clear the start bit */ + if (dmactl & ATA_DMA_START) { + dmactl &= ~ATA_DMA_START; + writeb(dmactl, mmio + ATA_DMA_CMD); + } + + return ata_sff_softreset(link, class, deadline); +} + +static int k2_sata_hardreset(struct ata_link *link, + unsigned int *class, unsigned long deadline) +{ + u8 dmactl; + void __iomem *mmio = link->ap->ioaddr.bmdma_addr; + + dmactl = readb(mmio + ATA_DMA_CMD); + + /* Clear the start bit */ + if (dmactl & ATA_DMA_START) { + dmactl &= ~ATA_DMA_START; + writeb(dmactl, mmio + ATA_DMA_CMD); + } + + return sata_sff_hardreset(link, class, deadline); +} static void k2_sata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) { @@ -346,6 +379,8 @@ static struct ata_port_operations k2_sata_ops = { .inherits = &ata_bmdma_port_ops, + .softreset = k2_sata_softreset, + .hardreset = k2_sata_hardreset, .sff_tf_load = k2_sata_tf_load, .sff_tf_read = k2_sata_tf_read, .sff_check_status = k2_stat_check_status, --- linux-3.5.0.orig/drivers/ata/ahci.c +++ linux-3.5.0/drivers/ata/ahci.c @@ -53,6 +53,7 @@ enum { AHCI_PCI_BAR_STA2X11 = 0, + AHCI_PCI_BAR_ENMOTUS = 2, AHCI_PCI_BAR_STANDARD = 5, }; @@ -267,6 +268,38 @@ { PCI_VDEVICE(INTEL, 0x8c07), board_ahci }, /* Lynx Point RAID */ { PCI_VDEVICE(INTEL, 0x8c0e), board_ahci }, /* Lynx Point RAID */ { PCI_VDEVICE(INTEL, 0x8c0f), board_ahci }, /* Lynx Point RAID */ + { PCI_VDEVICE(INTEL, 0x9c02), board_ahci }, /* Lynx Point-LP AHCI */ + { PCI_VDEVICE(INTEL, 0x9c03), board_ahci }, /* Lynx Point-LP AHCI */ + { PCI_VDEVICE(INTEL, 0x9c04), board_ahci }, /* Lynx Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x9c05), board_ahci }, /* Lynx Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x9c06), board_ahci }, /* Lynx Point-LP RAID */ + { 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 */ /* 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, @@ -396,6 +429,8 @@ .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ { PCI_DEVICE(0x1b4b, 0x917a), .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ + { PCI_DEVICE(0x1b4b, 0x9192), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */ { PCI_DEVICE(0x1b4b, 0x91a3), .driver_data = board_ahci_yes_fbs }, @@ -403,7 +438,13 @@ { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ /* Asmedia */ - { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + + /* Enmotus */ + { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, /* Generic, PCI class code for AHCI */ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -1077,9 +1118,11 @@ dev_info(&pdev->dev, "PDC42819 can only drive SATA devices with this driver\n"); - /* The Connext uses non-standard BAR */ + /* Both Connext and Enmotus devices use non-standard BARs */ if (pdev->vendor == PCI_VENDOR_ID_STMICRO && pdev->device == 0xCC06) ahci_pci_bar = AHCI_PCI_BAR_STA2X11; + else if (pdev->vendor == 0x1c44 && pdev->device == 0x8000) + ahci_pci_bar = AHCI_PCI_BAR_ENMOTUS; /* acquire resources */ rc = pcim_enable_device(pdev); --- linux-3.5.0.orig/drivers/ata/libata-scsi.c +++ linux-3.5.0/drivers/ata/libata-scsi.c @@ -309,7 +309,8 @@ struct ata_port *ap = ata_shost_to_port(sdev->host); struct ata_device *atadev = ata_scsi_find_dev(ap, sdev); - if (ap->ops->sw_activity_show && (ap->flags & ATA_FLAG_SW_ACTIVITY)) + if (atadev && ap->ops->sw_activity_show && + (ap->flags & ATA_FLAG_SW_ACTIVITY)) return ap->ops->sw_activity_show(atadev, buf); return -EINVAL; } @@ -324,7 +325,8 @@ enum sw_activity val; int rc; - if (ap->ops->sw_activity_store && (ap->flags & ATA_FLAG_SW_ACTIVITY)) { + if (atadev && ap->ops->sw_activity_store && + (ap->flags & ATA_FLAG_SW_ACTIVITY)) { val = simple_strtoul(buf, NULL, 0); switch (val) { case OFF: case BLINK_ON: case BLINK_OFF: --- linux-3.5.0.orig/drivers/ata/libata-core.c +++ linux-3.5.0/drivers/ata/libata-core.c @@ -1599,6 +1599,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) { @@ -2408,6 +2414,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); @@ -2536,6 +2545,7 @@ * bus as we may be talking too fast. */ dev->pio_mode = XFER_PIO_0; + dev->dma_mode = 0xff; /* If the controller has a pio mode setup function * then use it to set the chipset to rights. Don't @@ -4064,6 +4074,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 */ @@ -4126,6 +4137,7 @@ /* Devices which aren't very happy with higher link speeds */ { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, }, + { "Seagate FreeAgent GoFlex", NULL, ATA_HORKAGE_1_5_GBPS, }, /* * Devices which choke on SETXFER. Applies only if both the --- linux-3.5.0.orig/drivers/ata/libata-eh.c +++ linux-3.5.0/drivers/ata/libata-eh.c @@ -2057,7 +2057,7 @@ */ static inline int ata_eh_worth_retry(struct ata_queued_cmd *qc) { - if (qc->flags & AC_ERR_MEDIA) + if (qc->err_mask & AC_ERR_MEDIA) return 0; /* don't retry media errors */ if (qc->flags & ATA_QCFLAG_IO) return 1; /* otherwise retry anything from fs stack */ @@ -2618,6 +2618,7 @@ * bus as we may be talking too fast. */ dev->pio_mode = XFER_PIO_0; + dev->dma_mode = 0xff; /* If the controller has a pio mode setup function * then use it to set the chipset to rights. Don't --- linux-3.5.0.orig/drivers/ata/Makefile +++ linux-3.5.0/drivers/ata/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o obj-$(CONFIG_SATA_SIL24) += sata_sil24.o obj-$(CONFIG_SATA_DWC) += sata_dwc_460ex.o +obj-$(CONFIG_SATA_HIGHBANK) += sata_highbank.o libahci.o # SFF w/ custom DMA obj-$(CONFIG_PDC_ADMA) += pdc_adma.o --- linux-3.5.0.orig/drivers/ata/Kconfig +++ linux-3.5.0/drivers/ata/Kconfig @@ -214,6 +214,15 @@ help This option enables the taskfile dumping and NCQ debugging. +config SATA_HIGHBANK + tristate "Calxeda Highbank SATA support" + depends on ARCH_HIGHBANK + help + This option enables support for the Calxeda Highbank SoC's + onboard SATA. + + If unsure, say N. + config SATA_MV tristate "Marvell SATA support" help --- linux-3.5.0.orig/drivers/ata/sata_promise.c +++ linux-3.5.0/drivers/ata/sata_promise.c @@ -147,6 +147,10 @@ dma_addr_t pkt_dma; }; +struct pdc_host_priv { + spinlock_t hard_reset_lock; +}; + static int pdc_sata_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val); static int pdc_sata_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val); static int pdc_ata_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); @@ -801,9 +805,10 @@ void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; void __iomem *pcictl_b1_mmio = host_mmio + PDC_PCI_CTL + 1; unsigned int ata_no = pdc_ata_port_to_ata_no(ap); + struct pdc_host_priv *hpriv = ap->host->private_data; u8 tmp; - spin_lock(&ap->host->lock); + spin_lock(&hpriv->hard_reset_lock); tmp = readb(pcictl_b1_mmio); tmp &= ~(0x10 << ata_no); @@ -814,7 +819,7 @@ writeb(tmp, pcictl_b1_mmio); readb(pcictl_b1_mmio); /* flush */ - spin_unlock(&ap->host->lock); + spin_unlock(&hpriv->hard_reset_lock); } static int pdc_sata_hardreset(struct ata_link *link, unsigned int *class, @@ -1182,6 +1187,7 @@ const struct ata_port_info *pi = &pdc_port_info[ent->driver_data]; const struct ata_port_info *ppi[PDC_MAX_PORTS]; struct ata_host *host; + struct pdc_host_priv *hpriv; void __iomem *host_mmio; int n_ports, i, rc; int is_sataii_tx4; @@ -1218,6 +1224,11 @@ dev_err(&pdev->dev, "failed to allocate host\n"); return -ENOMEM; } + hpriv = devm_kzalloc(&pdev->dev, sizeof *hpriv, GFP_KERNEL); + if (!hpriv) + return -ENOMEM; + spin_lock_init(&hpriv->hard_reset_lock); + host->private_data = hpriv; host->iomap = pcim_iomap_table(pdev); is_sataii_tx4 = pdc_is_sataii_tx4(pi->flags); --- linux-3.5.0.orig/drivers/ata/ahci_platform.c +++ linux-3.5.0/drivers/ata/ahci_platform.c @@ -279,7 +279,6 @@ #endif static const struct of_device_id ahci_of_match[] = { - { .compatible = "calxeda,hb-ahci", }, { .compatible = "snps,spear-ahci", }, {}, }; --- linux-3.5.0.orig/drivers/ata/libahci.c +++ linux-3.5.0/drivers/ata/libahci.c @@ -1139,7 +1139,7 @@ } } -static unsigned int ahci_dev_classify(struct ata_port *ap) +unsigned int ahci_dev_classify(struct ata_port *ap) { void __iomem *port_mmio = ahci_port_base(ap); struct ata_taskfile tf; @@ -1153,6 +1153,7 @@ return ata_dev_classify(&tf); } +EXPORT_SYMBOL_GPL(ahci_dev_classify); void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts) --- linux-3.5.0.orig/drivers/ata/ahci.h +++ linux-3.5.0/drivers/ata/ahci.h @@ -320,6 +320,7 @@ extern struct ata_port_operations ahci_ops; extern struct ata_port_operations ahci_pmp_retry_srst_ops; +unsigned int ahci_dev_classify(struct ata_port *ap); void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts); void ahci_save_initial_config(struct device *dev, --- linux-3.5.0.orig/drivers/hwspinlock/hwspinlock_core.c +++ linux-3.5.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-3.5.0.orig/drivers/dma/imx-dma.c +++ linux-3.5.0/drivers/dma/imx-dma.c @@ -172,7 +172,8 @@ struct device_dma_parameters dma_parms; struct dma_device dma_device; void __iomem *base; - struct clk *dma_clk; + struct clk *dma_ahb; + struct clk *dma_ipg; spinlock_t lock; struct imx_dma_2d_config slots_2d[IMX_DMA_2D_SLOTS]; struct imxdma_channel channel[IMX_DMA_CHANNELS]; @@ -473,8 +474,10 @@ slot = i; break; } - if (slot < 0) + if (slot < 0) { + spin_unlock_irqrestore(&imxdma->lock, flags); return -EBUSY; + } imxdma->slots_2d[slot].xsr = d->x; imxdma->slots_2d[slot].ysr = d->y; @@ -976,10 +979,20 @@ return 0; } - imxdma->dma_clk = clk_get(NULL, "dma"); - if (IS_ERR(imxdma->dma_clk)) - return PTR_ERR(imxdma->dma_clk); - clk_enable(imxdma->dma_clk); + imxdma->dma_ipg = devm_clk_get(&pdev->dev, "ipg"); + if (IS_ERR(imxdma->dma_ipg)) { + ret = PTR_ERR(imxdma->dma_ipg); + goto err_clk; + } + + imxdma->dma_ahb = devm_clk_get(&pdev->dev, "ahb"); + if (IS_ERR(imxdma->dma_ahb)) { + ret = PTR_ERR(imxdma->dma_ahb); + goto err_clk; + } + + clk_prepare_enable(imxdma->dma_ipg); + clk_prepare_enable(imxdma->dma_ahb); /* reset DMA module */ imx_dmav1_writel(imxdma, DCR_DRST, DMA_DCR); @@ -988,16 +1001,14 @@ ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", imxdma); if (ret) { dev_warn(imxdma->dev, "Can't register IRQ for DMA\n"); - kfree(imxdma); - return ret; + goto err_enable; } ret = request_irq(MX1_DMA_ERR, imxdma_err_handler, 0, "DMA", imxdma); if (ret) { dev_warn(imxdma->dev, "Can't register ERRIRQ for DMA\n"); free_irq(MX1_DMA_INT, NULL); - kfree(imxdma); - return ret; + goto err_enable; } } @@ -1094,7 +1105,10 @@ free_irq(MX1_DMA_INT, NULL); free_irq(MX1_DMA_ERR, NULL); } - +err_enable: + clk_disable_unprepare(imxdma->dma_ipg); + clk_disable_unprepare(imxdma->dma_ahb); +err_clk: kfree(imxdma); return ret; } @@ -1114,7 +1128,9 @@ free_irq(MX1_DMA_ERR, NULL); } - kfree(imxdma); + clk_disable_unprepare(imxdma->dma_ipg); + clk_disable_unprepare(imxdma->dma_ahb); + kfree(imxdma); return 0; } --- linux-3.5.0.orig/drivers/dma/pl330.c +++ linux-3.5.0/drivers/dma/pl330.c @@ -1567,17 +1567,19 @@ goto xfer_exit; } - /* Prefer Secure Channel */ - if (!_manager_ns(thrd)) - r->cfg->nonsecure = 0; - else - r->cfg->nonsecure = 1; /* Use last settings, if not provided */ - if (r->cfg) + if (r->cfg) { + /* Prefer Secure Channel */ + if (!_manager_ns(thrd)) + r->cfg->nonsecure = 0; + else + r->cfg->nonsecure = 1; + ccr = _prepare_ccr(r->cfg); - else + } else { ccr = readl(regs + CC(thrd->id)); + } /* If this req doesn't have valid xfer settings */ if (!_is_valid(ccr)) { @@ -2928,6 +2930,11 @@ num_chan = max_t(int, pi->pcfg.num_peri, pi->pcfg.num_chan); pdmac->peripherals = kzalloc(num_chan * sizeof(*pch), GFP_KERNEL); + if (!pdmac->peripherals) { + ret = -ENOMEM; + dev_err(&adev->dev, "unable to allocate pdmac->peripherals\n"); + goto probe_err5; + } for (i = 0; i < num_chan; i++) { pch = &pdmac->peripherals[i]; --- linux-3.5.0.orig/drivers/dma/dmaengine.c +++ linux-3.5.0/drivers/dma/dmaengine.c @@ -578,7 +578,7 @@ list_del_rcu(&device->global_node); break; } else if (err) - pr_err("%s: failed to get %s: (%d)\n", + pr_debug("%s: failed to get %s: (%d)\n", __func__, dma_chan_name(chan), err); } } --- linux-3.5.0.orig/drivers/dma/pch_dma.c +++ linux-3.5.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-3.5.0.orig/drivers/dma/sirf-dma.c +++ linux-3.5.0/drivers/dma/sirf-dma.c @@ -109,7 +109,7 @@ sdesc = list_first_entry(&schan->queued, struct sirfsoc_dma_desc, node); /* Move the first queued descriptor to active list */ - list_move_tail(&schan->queued, &schan->active); + list_move_tail(&sdesc->node, &schan->active); /* Start the DMA transfer */ writel_relaxed(sdesc->width, sdma->base + SIRFSOC_DMA_WIDTH_0 + @@ -428,7 +428,7 @@ unsigned long iflags; int ret; - if ((xt->dir != DMA_MEM_TO_DEV) || (xt->dir != DMA_DEV_TO_MEM)) { + if ((xt->dir != DMA_MEM_TO_DEV) && (xt->dir != DMA_DEV_TO_MEM)) { ret = -EINVAL; goto err_dir; } --- linux-3.5.0.orig/drivers/dma/ste_dma40.c +++ linux-3.5.0/drivers/dma/ste_dma40.c @@ -1393,10 +1393,13 @@ 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++; --- linux-3.5.0.orig/drivers/dma/at_hdmac.c +++ linux-3.5.0/drivers/dma/at_hdmac.c @@ -662,7 +662,7 @@ flags); if (unlikely(!atslave || !sg_len)) { - dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n"); + dev_dbg(chan2dev(chan), "prep_slave_sg: sg length is zero!\n"); return NULL; } @@ -690,6 +690,11 @@ mem = sg_dma_address(sg); len = sg_dma_len(sg); + if (unlikely(!len)) { + dev_dbg(chan2dev(chan), + "prep_slave_sg: sg(%d) data length is zero\n", i); + goto err; + } mem_width = 2; if (unlikely(mem & 3 || len & 3)) mem_width = 0; @@ -725,6 +730,11 @@ mem = sg_dma_address(sg); len = sg_dma_len(sg); + if (unlikely(!len)) { + dev_dbg(chan2dev(chan), + "prep_slave_sg: sg(%d) data length is zero\n", i); + goto err; + } mem_width = 2; if (unlikely(mem & 3 || len & 3)) mem_width = 0; @@ -758,6 +768,7 @@ err_desc_get: dev_err(chan2dev(chan), "not enough descriptors available\n"); +err: atc_desc_put(atchan, first); return NULL; } --- linux-3.5.0.orig/drivers/dma/ioat/dma_v3.c +++ linux-3.5.0/drivers/dma/ioat/dma_v3.c @@ -951,7 +951,7 @@ goto free_resources; } } - dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_TO_DEVICE); + dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE); /* skip validate if the capability is not present */ if (!dma_has_cap(DMA_XOR_VAL, dma_chan->device->cap_mask)) --- linux-3.5.0.orig/drivers/i2c/busses/Makefile +++ linux-3.5.0/drivers/i2c/busses/Makefile @@ -33,10 +33,11 @@ obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o obj-$(CONFIG_I2C_CPM) += i2c-cpm.o obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o +obj-$(CONFIG_I2C_DESIGNWARE_CORE) += i2c-designware-core.o obj-$(CONFIG_I2C_DESIGNWARE_PLATFORM) += i2c-designware-platform.o -i2c-designware-platform-objs := i2c-designware-platdrv.o i2c-designware-core.o +i2c-designware-platform-objs := i2c-designware-platdrv.o obj-$(CONFIG_I2C_DESIGNWARE_PCI) += i2c-designware-pci.o -i2c-designware-pci-objs := i2c-designware-pcidrv.o i2c-designware-core.o +i2c-designware-pci-objs := i2c-designware-pcidrv.o obj-$(CONFIG_I2C_EG20T) += i2c-eg20t.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o --- linux-3.5.0.orig/drivers/i2c/busses/Kconfig +++ linux-3.5.0/drivers/i2c/busses/Kconfig @@ -104,6 +104,7 @@ DH89xxCC (PCH) Panther Point (PCH) Lynx Point (PCH) + Lynx Point-LP (PCH) This driver can also be built as a module. If so, the module will be called i2c-i801. @@ -350,9 +351,13 @@ devices such as DaVinci NIC. For details please see http://www.ti.com/davinci +config I2C_DESIGNWARE_CORE + tristate + config I2C_DESIGNWARE_PLATFORM tristate "Synopsys DesignWare Platform" depends on HAVE_CLK + select I2C_DESIGNWARE_CORE help If you say yes to this option, support will be included for the Synopsys DesignWare I2C adapter. Only master mode is supported. @@ -363,6 +368,7 @@ config I2C_DESIGNWARE_PCI tristate "Synopsys DesignWare PCI" depends on PCI + select I2C_DESIGNWARE_CORE help If you say yes to this option, support will be included for the Synopsys DesignWare I2C adapter. Only master mode is supported. --- linux-3.5.0.orig/drivers/i2c/busses/i2c-mxs.c +++ linux-3.5.0/drivers/i2c/busses/i2c-mxs.c @@ -110,7 +110,7 @@ struct device *dev; void __iomem *regs; struct completion cmd_complete; - u32 cmd_err; + int cmd_err; struct i2c_adapter adapter; }; --- linux-3.5.0.orig/drivers/i2c/busses/i2c-i801.c +++ linux-3.5.0/drivers/i2c/busses/i2c-i801.c @@ -52,6 +52,7 @@ DH89xxCC (PCH) 0x2330 32 hard yes yes yes Panther Point (PCH) 0x1e22 32 hard yes yes yes Lynx Point (PCH) 0x8c22 32 hard yes yes yes + Lynx Point-LP (PCH) 0x9c22 32 hard yes yes yes Features supported by this driver: Software PEC no @@ -147,6 +148,7 @@ #define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS 0x2330 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS 0x3b30 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS 0x8c22 +#define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS 0x9c22 struct i801_priv { struct i2c_adapter adapter; @@ -636,6 +638,7 @@ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS) }, { 0, } }; --- linux-3.5.0.orig/drivers/i2c/busses/i2c-tegra.c +++ linux-3.5.0/drivers/i2c/busses/i2c-tegra.c @@ -341,7 +341,11 @@ u32 val; int err = 0; - clk_enable(i2c_dev->clk); + err = clk_enable(i2c_dev->clk); + if (err < 0) { + dev_err(i2c_dev->dev, "Clock enable failed %d\n", err); + return err; + } tegra_periph_reset_assert(i2c_dev->clk); udelay(2); @@ -546,7 +550,12 @@ if (i2c_dev->is_suspended) return -EBUSY; - clk_enable(i2c_dev->clk); + ret = clk_enable(i2c_dev->clk); + if (ret < 0) { + dev_err(i2c_dev->dev, "Clock enable failed %d\n", ret); + return ret; + } + for (i = 0; i < num; i++) { int stop = (i == (num - 1)) ? 1 : 0; ret = tegra_i2c_xfer_msg(i2c_dev, &msgs[i], stop); --- linux-3.5.0.orig/drivers/i2c/busses/i2c-designware-core.h +++ linux-3.5.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-3.5.0.orig/drivers/i2c/busses/i2c-powermac.c +++ linux-3.5.0/drivers/i2c/busses/i2c-powermac.c @@ -227,28 +227,138 @@ return 0; } +static u32 __devinit i2c_powermac_get_addr(struct i2c_adapter *adap, + struct pmac_i2c_bus *bus, + struct device_node *node) +{ + const __be32 *prop; + int len; + + /* First check for valid "reg" */ + prop = of_get_property(node, "reg", &len); + if (prop && (len >= sizeof(int))) + return (be32_to_cpup(prop) & 0xff) >> 1; + + /* Then check old-style "i2c-address" */ + prop = of_get_property(node, "i2c-address", &len); + if (prop && (len >= sizeof(int))) + return (be32_to_cpup(prop) & 0xff) >> 1; + + /* Now handle some devices with missing "reg" properties */ + if (!strcmp(node->name, "cereal")) + return 0x60; + else if (!strcmp(node->name, "deq")) + return 0x34; + + dev_warn(&adap->dev, "No i2c address for %s\n", node->full_name); + + return 0xffffffff; +} + +static void __devinit i2c_powermac_create_one(struct i2c_adapter *adap, + const char *type, + u32 addr) +{ + struct i2c_board_info info = {}; + struct i2c_client *newdev; + + strncpy(info.type, type, sizeof(info.type)); + info.addr = addr; + newdev = i2c_new_device(adap, &info); + if (!newdev) + dev_err(&adap->dev, + "i2c-powermac: Failure to register missing %s\n", + type); +} + +static void __devinit i2c_powermac_add_missing(struct i2c_adapter *adap, + struct pmac_i2c_bus *bus, + bool found_onyx) +{ + struct device_node *busnode = pmac_i2c_get_bus_node(bus); + int rc; + + /* Check for the onyx audio codec */ +#define ONYX_REG_CONTROL 67 + if (of_device_is_compatible(busnode, "k2-i2c") && !found_onyx) { + union i2c_smbus_data data; + + rc = i2c_smbus_xfer(adap, 0x46, 0, I2C_SMBUS_READ, + ONYX_REG_CONTROL, I2C_SMBUS_BYTE_DATA, + &data); + if (rc >= 0) + i2c_powermac_create_one(adap, "MAC,pcm3052", 0x46); + + rc = i2c_smbus_xfer(adap, 0x47, 0, I2C_SMBUS_READ, + ONYX_REG_CONTROL, I2C_SMBUS_BYTE_DATA, + &data); + if (rc >= 0) + i2c_powermac_create_one(adap, "MAC,pcm3052", 0x47); + } +} + +static bool __devinit i2c_powermac_get_type(struct i2c_adapter *adap, + struct device_node *node, + u32 addr, char *type, int type_size) +{ + char tmp[16]; + + /* Note: we to _NOT_ want the standard + * i2c drivers to match with any of our powermac stuff + * unless they have been specifically modified to handle + * it on a case by case basis. For example, for thermal + * control, things like lm75 etc... shall match with their + * corresponding windfarm drivers, _NOT_ the generic ones, + * so we force a prefix of AAPL, onto the modalias to + * make that happen + */ + + /* First try proper modalias */ + if (of_modalias_node(node, tmp, sizeof(tmp)) >= 0) { + snprintf(type, type_size, "MAC,%s", tmp); + return true; + } + + /* Now look for known workarounds */ + if (!strcmp(node->name, "deq")) { + /* Apple uses address 0x34 for TAS3001 and 0x35 for TAS3004 */ + if (addr == 0x34) { + snprintf(type, type_size, "MAC,tas3001"); + return true; + } else if (addr == 0x35) { + snprintf(type, type_size, "MAC,tas3004"); + return true; + } + } + + dev_err(&adap->dev, "i2c-powermac: modalias failure" + " on %s\n", node->full_name); + return false; +} + static void __devinit i2c_powermac_register_devices(struct i2c_adapter *adap, struct pmac_i2c_bus *bus) { struct i2c_client *newdev; struct device_node *node; + bool found_onyx = 0; + + /* + * In some cases we end up with the via-pmu node itself, in this + * case we skip this function completely as the device-tree will + * not contain anything useful. + */ + if (!strcmp(adap->dev.of_node->name, "via-pmu")) + return; for_each_child_of_node(adap->dev.of_node, node) { struct i2c_board_info info = {}; - struct dev_archdata dev_ad = {}; - const __be32 *reg; - char tmp[16]; u32 addr; - int len; /* Get address & channel */ - reg = of_get_property(node, "reg", &len); - if (!reg || (len < sizeof(int))) { - dev_err(&adap->dev, "i2c-powermac: invalid reg on %s\n", - node->full_name); + addr = i2c_powermac_get_addr(adap, bus, node); + if (addr == 0xffffffff) continue; - } - addr = be32_to_cpup(reg); /* Multibus setup, check channel */ if (!pmac_i2c_match_adapter(node, adap)) @@ -257,27 +367,23 @@ dev_dbg(&adap->dev, "i2c-powermac: register %s\n", node->full_name); - /* Make up a modalias. Note: we to _NOT_ want the standard - * i2c drivers to match with any of our powermac stuff - * unless they have been specifically modified to handle - * it on a case by case basis. For example, for thermal - * control, things like lm75 etc... shall match with their - * corresponding windfarm drivers, _NOT_ the generic ones, - * so we force a prefix of AAPL, onto the modalias to - * make that happen + /* + * Keep track of some device existence to handle + * workarounds later. */ - if (of_modalias_node(node, tmp, sizeof(tmp)) < 0) { - dev_err(&adap->dev, "i2c-powermac: modalias failure" - " on %s\n", node->full_name); + if (of_device_is_compatible(node, "pcm3052")) + found_onyx = true; + + /* Make up a modalias */ + if (!i2c_powermac_get_type(adap, node, addr, + info.type, sizeof(info.type))) { continue; } - snprintf(info.type, sizeof(info.type), "MAC,%s", tmp); /* Fill out the rest of the info structure */ - info.addr = (addr & 0xff) >> 1; + info.addr = addr; info.irq = irq_of_parse_and_map(node, 0); info.of_node = of_node_get(node); - info.archdata = &dev_ad; newdev = i2c_new_device(adap, &info); if (!newdev) { @@ -292,6 +398,9 @@ continue; } } + + /* Additional workarounds */ + i2c_powermac_add_missing(adap, bus, found_onyx); } static int __devinit i2c_powermac_probe(struct platform_device *dev) --- linux-3.5.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-3.5.0/drivers/i2c/busses/i2c-designware-core.c @@ -25,6 +25,7 @@ * ---------------------------------------------------------------------------- * */ +#include #include #include #include @@ -316,6 +317,7 @@ dw_writel(dev, dev->master_cfg , DW_IC_CON); return 0; } +EXPORT_SYMBOL_GPL(i2c_dw_init); /* * Waiting for bus not busy @@ -358,7 +360,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); } @@ -411,8 +414,14 @@ while (buf_len > 0 && tx_limit > 0 && rx_limit > 0) { if (msgs[dev->msg_write_idx].flags & I2C_M_RD) { + + /* avoid rx buffer overrun */ + if (rx_limit - dev->rx_outstanding <= 0) + break; + dw_writel(dev, 0x100, DW_IC_DATA_CMD); rx_limit--; + dev->rx_outstanding++; } else dw_writel(dev, *buf++, DW_IC_DATA_CMD); tx_limit--; buf_len--; @@ -465,8 +474,10 @@ rx_valid = dw_readl(dev, DW_IC_RXFLR); - for (; len > 0 && rx_valid > 0; len--, rx_valid--) + for (; len > 0 && rx_valid > 0; len--, rx_valid--) { *buf++ = dw_readl(dev, DW_IC_DATA_CMD); + dev->rx_outstanding--; + } if (len > 0) { dev->status |= STATUS_READ_IN_PROGRESS; @@ -524,6 +535,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) @@ -568,12 +580,14 @@ return ret; } +EXPORT_SYMBOL_GPL(i2c_dw_xfer); u32 i2c_dw_func(struct i2c_adapter *adap) { struct dw_i2c_dev *dev = i2c_get_adapdata(adap); return dev->functionality; } +EXPORT_SYMBOL_GPL(i2c_dw_func); static u32 i2c_dw_read_clear_intrbits(struct dw_i2c_dev *dev) { @@ -678,17 +692,20 @@ return IRQ_HANDLED; } +EXPORT_SYMBOL_GPL(i2c_dw_isr); void i2c_dw_enable(struct dw_i2c_dev *dev) { /* Enable the adapter */ dw_writel(dev, 1, DW_IC_ENABLE); } +EXPORT_SYMBOL_GPL(i2c_dw_enable); u32 i2c_dw_is_enabled(struct dw_i2c_dev *dev) { return dw_readl(dev, DW_IC_ENABLE); } +EXPORT_SYMBOL_GPL(i2c_dw_is_enabled); void i2c_dw_disable(struct dw_i2c_dev *dev) { @@ -699,18 +716,22 @@ dw_writel(dev, 0, DW_IC_INTR_MASK); dw_readl(dev, DW_IC_CLR_INTR); } +EXPORT_SYMBOL_GPL(i2c_dw_disable); void i2c_dw_clear_int(struct dw_i2c_dev *dev) { dw_readl(dev, DW_IC_CLR_INTR); } +EXPORT_SYMBOL_GPL(i2c_dw_clear_int); void i2c_dw_disable_int(struct dw_i2c_dev *dev) { dw_writel(dev, 0, DW_IC_INTR_MASK); } +EXPORT_SYMBOL_GPL(i2c_dw_disable_int); u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev) { return dw_readl(dev, DW_IC_COMP_PARAM_1); } +EXPORT_SYMBOL_GPL(i2c_dw_read_comp_param); --- linux-3.5.0.orig/drivers/i2c/busses/i2c-xiic.c +++ linux-3.5.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-3.5.0.orig/drivers/i2c/muxes/i2c-mux-pinctrl.c +++ linux-3.5.0/drivers/i2c/muxes/i2c-mux-pinctrl.c @@ -169,7 +169,7 @@ mux->busses = devm_kzalloc(&pdev->dev, sizeof(mux->busses) * mux->pdata->bus_count, GFP_KERNEL); - if (!mux->states) { + if (!mux->busses) { dev_err(&pdev->dev, "Cannot allocate busses\n"); ret = -ENOMEM; goto err; --- linux-3.5.0.orig/drivers/pps/pps.c +++ linux-3.5.0/drivers/pps/pps.c @@ -247,12 +247,15 @@ struct pps_device *pps = container_of(inode->i_cdev, struct pps_device, cdev); file->private_data = pps; - + kobject_get(&pps->dev->kobj); return 0; } static int pps_cdev_release(struct inode *inode, struct file *file) { + struct pps_device *pps = container_of(inode->i_cdev, + struct pps_device, cdev); + kobject_put(&pps->dev->kobj); return 0; } @@ -274,8 +277,10 @@ { struct pps_device *pps = dev_get_drvdata(dev); - /* release id here to protect others from using it while it's - * still in use */ + cdev_del(&pps->cdev); + + /* Now we can release the ID for re-use */ + pr_debug("deallocating pps%d\n", pps->id); mutex_lock(&pps_idr_lock); idr_remove(&pps_idr, pps->id); mutex_unlock(&pps_idr_lock); @@ -330,6 +335,7 @@ if (IS_ERR(pps->dev)) goto del_cdev; + /* Override the release function with our own */ pps->dev->release = pps_device_destruct; pr_debug("source %s got cdev (%d:%d)\n", pps->info.name, @@ -350,11 +356,44 @@ void pps_unregister_cdev(struct pps_device *pps) { + pr_debug("unregistering pps%d\n", pps->id); + pps->lookup_cookie = NULL; device_destroy(pps_class, pps->dev->devt); - cdev_del(&pps->cdev); } /* + * Look up a pps device by magic cookie. + * The cookie is usually a pointer to some enclosing device, but this + * code doesn't care; you should never be dereferencing it. + * + * This is a bit of a kludge that is currently used only by the PPS + * serial line discipline. It may need to be tweaked when a second user + * is found. + * + * There is no function interface for setting the lookup_cookie field. + * It's initialized to NULL when the pps device is created, and if a + * client wants to use it, just fill it in afterward. + * + * The cookie is automatically set to NULL in pps_unregister_source() + * so that it will not be used again, even if the pps device cannot + * be removed from the idr due to pending references holding the minor + * number in use. + */ +struct pps_device *pps_lookup_dev(void const *cookie) +{ + struct pps_device *pps; + unsigned id; + + rcu_read_lock(); + idr_for_each_entry(&pps_idr, pps, id) + if (cookie == pps->lookup_cookie) + break; + rcu_read_unlock(); + return pps; +} +EXPORT_SYMBOL(pps_lookup_dev); + +/* * Module stuff */ --- linux-3.5.0.orig/drivers/pps/clients/pps-ldisc.c +++ linux-3.5.0/drivers/pps/clients/pps-ldisc.c @@ -31,7 +31,7 @@ static void pps_tty_dcd_change(struct tty_struct *tty, unsigned int status, struct pps_event_time *ts) { - struct pps_device *pps = (struct pps_device *)tty->disc_data; + struct pps_device *pps = pps_lookup_dev(tty); BUG_ON(pps == NULL); @@ -67,9 +67,9 @@ pr_err("cannot register PPS source \"%s\"\n", info.path); return -ENOMEM; } - tty->disc_data = pps; + pps->lookup_cookie = tty; - /* Should open N_TTY ldisc too */ + /* Now open the base class N_TTY ldisc */ ret = alias_n_tty_open(tty); if (ret < 0) { pr_err("cannot open tty ldisc \"%s\"\n", info.path); @@ -81,7 +81,6 @@ return 0; err_unregister: - tty->disc_data = NULL; pps_unregister_source(pps); return ret; } @@ -90,11 +89,10 @@ static void pps_tty_close(struct tty_struct *tty) { - struct pps_device *pps = (struct pps_device *)tty->disc_data; + struct pps_device *pps = pps_lookup_dev(tty); alias_n_tty_close(tty); - tty->disc_data = NULL; dev_info(pps->dev, "removed\n"); pps_unregister_source(pps); } --- linux-3.5.0.orig/drivers/hv/channel.c +++ linux-3.5.0/drivers/hv/channel.c @@ -146,14 +146,14 @@ if (ret != 0) { err = ret; - goto errorout; + goto error0; } ret = hv_ringbuffer_init( &newchannel->inbound, in, recv_ringbuffer_size); if (ret != 0) { err = ret; - goto errorout; + goto error0; } @@ -168,7 +168,7 @@ if (ret != 0) { err = ret; - goto errorout; + goto error0; } /* Create and init the channel open message */ @@ -177,7 +177,7 @@ GFP_KERNEL); if (!open_info) { err = -ENOMEM; - goto errorout; + goto error0; } init_completion(&open_info->waitevent); @@ -193,7 +193,7 @@ if (userdatalen > MAX_USER_DEFINED_BYTES) { err = -EINVAL; - goto errorout; + goto error0; } if (userdatalen) @@ -208,19 +208,18 @@ sizeof(struct vmbus_channel_open_channel)); if (ret != 0) - goto cleanup; + goto error1; t = wait_for_completion_timeout(&open_info->waitevent, 5*HZ); if (t == 0) { err = -ETIMEDOUT; - goto errorout; + goto error1; } if (open_info->response.open_result.status) err = open_info->response.open_result.status; -cleanup: spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); list_del(&open_info->msglistentry); spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); @@ -228,9 +227,12 @@ kfree(open_info); return err; -errorout: - hv_ringbuffer_cleanup(&newchannel->outbound); - hv_ringbuffer_cleanup(&newchannel->inbound); +error1: + spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); + list_del(&open_info->msglistentry); + spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); + +error0: free_pages((unsigned long)out, get_order(send_ringbuffer_size + recv_ringbuffer_size)); kfree(open_info); --- linux-3.5.0.orig/drivers/rapidio/devices/tsi721.c +++ linux-3.5.0/drivers/rapidio/devices/tsi721.c @@ -435,6 +435,9 @@ " info %4.4x\n", DBELL_SID(idb.bytes), DBELL_TID(idb.bytes), DBELL_INF(idb.bytes)); } + + wr_ptr = ioread32(priv->regs + + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; } iowrite32(rd_ptr & (IDB_QSIZE - 1), @@ -445,6 +448,10 @@ regval |= TSI721_SR_CHINT_IDBQRCV; iowrite32(regval, priv->regs + TSI721_SR_CHINTE(IDB_QUEUE)); + + wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; + if (wr_ptr != rd_ptr) + schedule_work(&priv->idb_work); } /** @@ -464,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; @@ -553,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; } @@ -2212,7 +2231,7 @@ const struct pci_device_id *id) { struct tsi721_device *priv; - int i, cap; + int cap; int err; u32 regval; @@ -2232,12 +2251,15 @@ priv->pdev = pdev; #ifdef DEBUG + { + int i; for (i = 0; i <= PCI_STD_RESOURCE_END; i++) { dev_dbg(&pdev->dev, "res[%d] @ 0x%llx (0x%lx, 0x%lx)\n", i, (unsigned long long)pci_resource_start(pdev, i), (unsigned long)pci_resource_len(pdev, i), pci_resource_flags(pdev, i)); } + } #endif /* * Verify BAR configuration --- linux-3.5.0.orig/drivers/hwmon/ad7314.c +++ linux-3.5.0/drivers/hwmon/ad7314.c @@ -87,10 +87,18 @@ } } +static ssize_t ad7314_show_name(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + return sprintf(buf, "%s\n", to_spi_device(dev)->modalias); +} + +static DEVICE_ATTR(name, S_IRUGO, ad7314_show_name, NULL); static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ad7314_show_temperature, NULL, 0); static struct attribute *ad7314_attributes[] = { + &dev_attr_name.attr, &sensor_dev_attr_temp1_input.dev_attr.attr, NULL, }; --- linux-3.5.0.orig/drivers/hwmon/abituguru.c +++ linux-3.5.0/drivers/hwmon/abituguru.c @@ -1410,14 +1410,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-3.5.0.orig/drivers/hwmon/sht15.c +++ linux-3.5.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); + goto err_free_data; + } + /* * Setup a notifier block to update this if another device * causes the voltage to change --- linux-3.5.0.orig/drivers/hwmon/ina2xx.c +++ linux-3.5.0/drivers/hwmon/ina2xx.c @@ -69,22 +69,6 @@ u16 regs[INA2XX_MAX_REGISTERS]; }; -int ina2xx_read_word(struct i2c_client *client, int reg) -{ - int val = i2c_smbus_read_word_data(client, reg); - if (unlikely(val < 0)) { - dev_dbg(&client->dev, - "Failed to read register: %d\n", reg); - return val; - } - return be16_to_cpu(val); -} - -void ina2xx_write_word(struct i2c_client *client, int reg, int data) -{ - i2c_smbus_write_word_data(client, reg, cpu_to_be16(data)); -} - static struct ina2xx_data *ina2xx_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); @@ -102,7 +86,7 @@ /* Read all registers */ for (i = 0; i < data->registers; i++) { - int rv = ina2xx_read_word(client, i); + int rv = i2c_smbus_read_word_swapped(client, i); if (rv < 0) { ret = ERR_PTR(rv); goto abort; @@ -279,22 +263,26 @@ switch (data->kind) { case ina219: /* device configuration */ - ina2xx_write_word(client, INA2XX_CONFIG, INA219_CONFIG_DEFAULT); + i2c_smbus_write_word_swapped(client, INA2XX_CONFIG, + INA219_CONFIG_DEFAULT); /* set current LSB to 1mA, shunt is in uOhms */ /* (equation 13 in datasheet) */ - ina2xx_write_word(client, INA2XX_CALIBRATION, 40960000 / shunt); + i2c_smbus_write_word_swapped(client, INA2XX_CALIBRATION, + 40960000 / shunt); dev_info(&client->dev, "power monitor INA219 (Rshunt = %li uOhm)\n", shunt); data->registers = INA219_REGISTERS; break; case ina226: /* device configuration */ - ina2xx_write_word(client, INA2XX_CONFIG, INA226_CONFIG_DEFAULT); + i2c_smbus_write_word_swapped(client, INA2XX_CONFIG, + INA226_CONFIG_DEFAULT); /* set current LSB to 1mA, shunt is in uOhms */ /* (equation 1 in datasheet)*/ - ina2xx_write_word(client, INA2XX_CALIBRATION, 5120000 / shunt); + i2c_smbus_write_word_swapped(client, INA2XX_CALIBRATION, + 5120000 / shunt); dev_info(&client->dev, "power monitor INA226 (Rshunt = %li uOhm)\n", shunt); data->registers = INA226_REGISTERS; --- linux-3.5.0.orig/drivers/hwmon/ads7871.c +++ linux-3.5.0/drivers/hwmon/ads7871.c @@ -139,6 +139,12 @@ } } +static ssize_t ads7871_show_name(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + return sprintf(buf, "%s\n", to_spi_device(dev)->modalias); +} + static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_voltage, NULL, 0); static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_voltage, NULL, 1); static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_voltage, NULL, 2); @@ -148,6 +154,8 @@ static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, show_voltage, NULL, 6); static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, show_voltage, NULL, 7); +static DEVICE_ATTR(name, S_IRUGO, ads7871_show_name, NULL); + static struct attribute *ads7871_attributes[] = { &sensor_dev_attr_in0_input.dev_attr.attr, &sensor_dev_attr_in1_input.dev_attr.attr, @@ -157,6 +165,7 @@ &sensor_dev_attr_in5_input.dev_attr.attr, &sensor_dev_attr_in6_input.dev_attr.attr, &sensor_dev_attr_in7_input.dev_attr.attr, + &dev_attr_name.attr, NULL }; --- linux-3.5.0.orig/drivers/hwmon/fam15h_power.c +++ linux-3.5.0/drivers/hwmon/fam15h_power.c @@ -31,6 +31,9 @@ MODULE_AUTHOR("Andreas Herrmann "); MODULE_LICENSE("GPL"); +/* Family 16h Northbridge's function 4 PCI ID */ +#define PCI_DEVICE_ID_AMD_16H_NB_F4 0x1534 + /* D18F3 */ #define REG_NORTHBRIDGE_CAP 0xe8 @@ -128,12 +131,12 @@ * counter saturations resulting in bogus power readings. * We correct this value ourselves to cope with older BIOSes. */ -static DEFINE_PCI_DEVICE_TABLE(affected_device) = { +static const struct pci_device_id affected_device[] = { { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) }, { 0 } }; -static void __devinit tweak_runavg_range(struct pci_dev *pdev) +static void tweak_runavg_range(struct pci_dev *pdev) { u32 val; @@ -157,6 +160,16 @@ REG_TDP_RUNNING_AVERAGE, val); } +#ifdef CONFIG_PM +static int fam15h_power_resume(struct pci_dev *pdev) +{ + tweak_runavg_range(pdev); + return 0; +} +#else +#define fam15h_power_resume NULL +#endif + static void __devinit fam15h_power_init_data(struct pci_dev *f4, struct fam15h_power_data *data) { @@ -246,6 +259,7 @@ static DEFINE_PCI_DEVICE_TABLE(fam15h_power_id_table) = { { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F4) }, {} }; MODULE_DEVICE_TABLE(pci, fam15h_power_id_table); @@ -255,6 +269,7 @@ .id_table = fam15h_power_id_table, .probe = fam15h_power_probe, .remove = __devexit_p(fam15h_power_remove), + .resume = fam15h_power_resume, }; module_pci_driver(fam15h_power_driver); --- linux-3.5.0.orig/drivers/hwmon/w83627ehf.c +++ linux-3.5.0/drivers/hwmon/w83627ehf.c @@ -2082,6 +2082,7 @@ mutex_init(&data->lock); mutex_init(&data->update_lock); data->name = w83627ehf_device_names[sio_data->kind]; + data->bank = 0xff; /* Force initial bank selection */ platform_set_drvdata(pdev, data); /* 627EHG and 627EHF have 10 voltage inputs; 627DHG and 667HG have 9 */ --- linux-3.5.0.orig/drivers/hwmon/lineage-pem.c +++ linux-3.5.0/drivers/hwmon/lineage-pem.c @@ -421,6 +421,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 = { @@ -431,6 +432,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-3.5.0.orig/drivers/hwmon/coretemp.c +++ linux-3.5.0/drivers/hwmon/coretemp.c @@ -205,8 +205,11 @@ { "CPU N455", 100000 }, { "CPU N470", 100000 }, { "CPU N475", 100000 }, - { "CPU 230", 100000 }, - { "CPU 330", 125000 }, + { "CPU 230", 100000 }, /* Model 0x1c, stepping 2 */ + { "CPU 330", 125000 }, /* Model 0x1c, stepping 2 */ + { "CPU CE4110", 110000 }, /* Model 0x1c, stepping 10 */ + { "CPU CE4150", 110000 }, /* Model 0x1c, stepping 10 */ + { "CPU CE4170", 110000 }, /* Model 0x1c, stepping 10 */ }; static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id, --- linux-3.5.0.orig/drivers/hwmon/asus_atk0110.c +++ linux-3.5.0/drivers/hwmon/asus_atk0110.c @@ -34,6 +34,12 @@ .matches = { DMI_MATCH(DMI_BOARD_NAME, "SABERTOOTH X58") } + }, { + /* Old interface reads the same sensor for fan0 and fan1 */ + .ident = "Asus M5A78L", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "M5A78L") + } }, { } }; --- linux-3.5.0.orig/drivers/hwmon/lm73.c +++ linux-3.5.0/drivers/hwmon/lm73.c @@ -49,6 +49,7 @@ struct i2c_client *client = to_i2c_client(dev); long temp; short value; + s32 err; int status = kstrtol(buf, 10, &temp); if (status < 0) @@ -57,8 +58,8 @@ /* Write value */ value = (short) SENSORS_LIMIT(temp/250, (LM73_TEMP_MIN*4), (LM73_TEMP_MAX*4)) << 5; - i2c_smbus_write_word_swapped(client, attr->index, value); - return count; + err = i2c_smbus_write_word_swapped(client, attr->index, value); + return (err < 0) ? err : count; } static ssize_t show_temp(struct device *dev, struct device_attribute *da, @@ -66,11 +67,16 @@ { struct sensor_device_attribute *attr = to_sensor_dev_attr(da); struct i2c_client *client = to_i2c_client(dev); + int temp; + + s32 err = i2c_smbus_read_word_swapped(client, attr->index); + if (err < 0) + return err; + /* use integer division instead of equivalent right shift to guarantee arithmetic shift and preserve the sign */ - int temp = ((s16) (i2c_smbus_read_word_swapped(client, - attr->index))*250) / 32; - return sprintf(buf, "%d\n", temp); + temp = (((s16) err) * 250) / 32; + return scnprintf(buf, PAGE_SIZE, "%d\n", temp); } --- linux-3.5.0.orig/drivers/hwmon/twl4030-madc-hwmon.c +++ linux-3.5.0/drivers/hwmon/twl4030-madc-hwmon.c @@ -44,12 +44,13 @@ struct device_attribute *devattr, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct twl4030_madc_request req; + struct twl4030_madc_request req = { + .channels = 1 << attr->index, + .method = TWL4030_MADC_SW2, + .type = TWL4030_MADC_WAIT, + }; long val; - req.channels = (1 << attr->index); - req.method = TWL4030_MADC_SW2; - req.func_cb = NULL; val = twl4030_madc_conversion(&req); if (val < 0) return val; --- linux-3.5.0.orig/drivers/hwmon/applesmc.c +++ linux-3.5.0/drivers/hwmon/applesmc.c @@ -54,10 +54,10 @@ #define APPLESMC_MAX_DATA_LENGTH 32 /* wait up to 32 ms for a status change. */ -#define APPLESMC_MIN_WAIT 0x0040 +#define APPLESMC_MIN_WAIT 0x0010 +#define APPLESMC_RETRY_WAIT 0x0100 #define APPLESMC_MAX_WAIT 0x8000 -#define APPLESMC_STATUS_MASK 0x0f #define APPLESMC_READ_CMD 0x10 #define APPLESMC_WRITE_CMD 0x11 #define APPLESMC_GET_KEY_BY_INDEX_CMD 0x12 @@ -162,51 +162,68 @@ static struct workqueue_struct *applesmc_led_wq; /* - * __wait_status - Wait up to 32ms for the status port to get a certain value - * (masked with 0x0f), returning zero if the value is obtained. Callers must + * wait_read - Wait for a byte to appear on SMC port. Callers must * hold applesmc_lock. */ -static int __wait_status(u8 val) +static int wait_read(void) { + u8 status; int us; - - val = val & APPLESMC_STATUS_MASK; - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { udelay(us); - if ((inb(APPLESMC_CMD_PORT) & APPLESMC_STATUS_MASK) == val) + status = inb(APPLESMC_CMD_PORT); + /* read: wait for smc to settle */ + if (status & 0x01) return 0; } + pr_warn("wait_read() fail: 0x%02x\n", status); return -EIO; } /* - * special treatment of command port - on newer macbooks, it seems necessary - * to resend the command byte before polling the status again. Callers must - * hold applesmc_lock. + * send_byte - Write to SMC port, retrying when necessary. Callers + * must hold applesmc_lock. */ -static int send_command(u8 cmd) +static int send_byte(u8 cmd, u16 port) { + u8 status; int us; + + outb(cmd, port); for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - outb(cmd, APPLESMC_CMD_PORT); udelay(us); - if ((inb(APPLESMC_CMD_PORT) & APPLESMC_STATUS_MASK) == 0x0c) + status = inb(APPLESMC_CMD_PORT); + /* write: wait for smc to settle */ + if (status & 0x02) + continue; + /* ready: cmd accepted, return */ + if (status & 0x04) return 0; + /* timeout: give up */ + if (us << 1 == APPLESMC_MAX_WAIT) + break; + /* busy: long wait and resend */ + udelay(APPLESMC_RETRY_WAIT); + outb(cmd, port); } + + pr_warn("send_byte(0x%02x, 0x%04x) fail: 0x%02x\n", cmd, port, status); return -EIO; } +static int send_command(u8 cmd) +{ + return send_byte(cmd, APPLESMC_CMD_PORT); +} + static int send_argument(const char *key) { int i; - for (i = 0; i < 4; i++) { - outb(key[i], APPLESMC_DATA_PORT); - if (__wait_status(0x04)) + for (i = 0; i < 4; i++) + if (send_byte(key[i], APPLESMC_DATA_PORT)) return -EIO; - } return 0; } @@ -219,11 +236,14 @@ return -EIO; } - outb(len, APPLESMC_DATA_PORT); + if (send_byte(len, APPLESMC_DATA_PORT)) { + pr_warn("%.4s: read len fail\n", key); + return -EIO; + } for (i = 0; i < len; i++) { - if (__wait_status(0x05)) { - pr_warn("%.4s: read data fail\n", key); + if (wait_read()) { + pr_warn("%.4s: read data[%d] fail\n", key, i); return -EIO; } buffer[i] = inb(APPLESMC_DATA_PORT); @@ -241,14 +261,16 @@ return -EIO; } - outb(len, APPLESMC_DATA_PORT); + if (send_byte(len, APPLESMC_DATA_PORT)) { + pr_warn("%.4s: write len fail\n", key); + return -EIO; + } for (i = 0; i < len; i++) { - if (__wait_status(0x04)) { + if (send_byte(buffer[i], APPLESMC_DATA_PORT)) { pr_warn("%s: write data fail\n", key); return -EIO; } - outb(buffer[i], APPLESMC_DATA_PORT); } return 0; --- linux-3.5.0.orig/drivers/hwmon/adm1021.c +++ linux-3.5.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-3.5.0.orig/drivers/hwmon/pmbus/ltc2978.c +++ linux-3.5.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-3.5.0.orig/drivers/base/core.c +++ linux-3.5.0/drivers/base/core.c @@ -1848,6 +1848,7 @@ struct va_format *vaf) { char dict[128]; + const char *level_extra = ""; size_t dictlen = 0; const char *subsys; @@ -1894,10 +1895,14 @@ "DEVICE=+%s:%s", subsys, dev_name(dev)); } skip: + if (level[3]) + level_extra = &level[3]; /* skip past "" */ + return printk_emit(0, level[1] - '0', dictlen ? dict : NULL, dictlen, - "%s %s: %pV", - dev_driver_string(dev), dev_name(dev), vaf); + "%s %s: %s%pV", + dev_driver_string(dev), dev_name(dev), + level_extra, vaf); } EXPORT_SYMBOL(__dev_printk); --- linux-3.5.0.orig/drivers/base/Kconfig +++ linux-3.5.0/drivers/base/Kconfig @@ -281,4 +281,12 @@ endif +config SR_REPORT_TIME_LIMIT + int "Default low threshold" + depends on PM + default 100 + help + Print suspend/resume information for driver/device for time greater + then default msec, ie 100 msec. + endmenu --- linux-3.5.0.orig/drivers/base/dd.c +++ linux-3.5.0/drivers/base/dd.c @@ -161,6 +161,8 @@ driver_deferred_probe_enable = true; driver_deferred_probe_trigger(); + /* Sort as many dependencies as possible before exiting initcalls */ + flush_workqueue(deferred_wq); return 0; } late_initcall(deferred_probe_initcall); --- linux-3.5.0.orig/drivers/base/bus.c +++ linux-3.5.0/drivers/base/bus.c @@ -293,7 +293,7 @@ struct device *dev; int error = 0; - if (!bus) + if (!bus || !bus->p) return -EINVAL; klist_iter_init_node(&bus->p->klist_devices, &i, @@ -327,7 +327,7 @@ struct klist_iter i; struct device *dev; - if (!bus) + if (!bus || !bus->p) return NULL; klist_iter_init_node(&bus->p->klist_devices, &i, --- linux-3.5.0.orig/drivers/base/regmap/regmap-debugfs.c +++ linux-3.5.0/drivers/base/regmap/regmap-debugfs.c @@ -90,7 +90,7 @@ /* If we're in the region the user is trying to read */ if (p >= *ppos) { /* ...but not beyond it */ - if (buf_pos >= count - 1 - tot_len) + if (buf_pos + 1 + tot_len >= count) break; /* Format the register */ --- linux-3.5.0.orig/drivers/base/regmap/regcache-rbtree.c +++ linux-3.5.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-3.5.0.orig/drivers/base/power/qos.c +++ linux-3.5.0/drivers/base/power/qos.c @@ -451,7 +451,7 @@ if (ancestor) error = dev_pm_qos_add_request(ancestor, req, value); - if (error) + if (error < 0) req->dev = NULL; return error; --- linux-3.5.0.orig/drivers/base/power/runtime.c +++ linux-3.5.0/drivers/base/power/runtime.c @@ -147,6 +147,8 @@ || (dev->power.request_pending && dev->power.request == RPM_REQ_RESUME)) retval = -EAGAIN; + else if (__dev_pm_qos_read_value(dev) < 0) + retval = -EPERM; else if (dev->power.runtime_status == RPM_SUSPENDED) retval = 1; @@ -388,7 +390,6 @@ goto repeat; } - dev->power.deferred_resume = false; if (dev->power.no_callbacks) goto no_callback; /* Assume success. */ @@ -403,12 +404,6 @@ goto out; } - if (__dev_pm_qos_read_value(dev) < 0) { - /* Negative PM QoS constraint means "never suspend". */ - retval = -EPERM; - goto out; - } - __update_runtime_status(dev, RPM_SUSPENDING); if (dev->pm_domain) @@ -440,6 +435,7 @@ wake_up_all(&dev->power.wait_queue); if (dev->power.deferred_resume) { + dev->power.deferred_resume = false; rpm_resume(dev, 0); retval = -EAGAIN; goto out; @@ -584,6 +580,7 @@ || dev->parent->power.runtime_status == RPM_ACTIVE) { atomic_inc(&dev->parent->power.child_count); spin_unlock(&dev->parent->power.lock); + retval = 1; goto no_callback; /* Assume success. */ } spin_unlock(&dev->parent->power.lock); @@ -664,7 +661,7 @@ } wake_up_all(&dev->power.wait_queue); - if (!retval) + if (retval >= 0) rpm_idle(dev, RPM_ASYNC); out: --- linux-3.5.0.orig/drivers/base/power/main.c +++ linux-3.5.0/drivers/base/power/main.c @@ -352,6 +352,24 @@ dev_name(dev), pm_verb(state.event), info, error); } +static void device_show_time(struct device *dev, ktime_t starttime, pm_message_t state, char *info) +{ + ktime_t calltime; + s64 usecs64; + int usecs; + + calltime = ktime_get(); + usecs64 = ktime_to_ns(ktime_sub(calltime, starttime)); + do_div(usecs64, NSEC_PER_USEC); + usecs = usecs64; + if (usecs == 0) + usecs = 1; + if ((usecs / USEC_PER_MSEC) > CONFIG_SR_REPORT_TIME_LIMIT) + pr_info("PM: %s%s%s of drv:%s dev:%s complete after %ld.%03ld msecs\n", info ?: "", info ? " " : "", pm_verb(state.event), + dev_driver_string(dev), dev_name(dev), usecs / USEC_PER_MSEC, + usecs % USEC_PER_MSEC); +} + static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) { ktime_t calltime; @@ -404,6 +422,7 @@ pm_callback_t callback = NULL; char *info = NULL; int error = 0; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -411,6 +430,7 @@ if (dev->pm_domain) { info = "noirq power domain "; callback = pm_noirq_op(&dev->pm_domain->ops, state); + device_show_time(dev, starttime, state, "early"); } else if (dev->type && dev->type->pm) { info = "noirq type "; callback = pm_noirq_op(dev->type->pm, state); @@ -507,6 +527,8 @@ error = dpm_run_callback(callback, dev, state, info); TRACE_RESUME(error); + + pm_runtime_enable(dev); return error; } @@ -565,6 +587,7 @@ char *info = NULL; int error = 0; bool put = false; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -581,7 +604,6 @@ if (!dev->power.is_suspended) goto Unlock; - pm_runtime_enable(dev); put = true; if (dev->pm_domain) { @@ -625,6 +647,7 @@ callback = pm_op(dev->driver->pm, state); } + device_show_time(dev, starttime, state, NULL); End: error = dpm_run_callback(callback, dev, state, info); dev->power.is_suspended = false; @@ -832,6 +855,7 @@ { pm_callback_t callback = NULL; char *info = NULL; + ktime_t starttime = ktime_get(); if (dev->pm_domain) { info = "noirq power domain "; @@ -845,6 +869,7 @@ } else if (dev->bus && dev->bus->pm) { info = "noirq bus "; callback = pm_noirq_op(dev->bus->pm, state); + device_show_time(dev, starttime, state, "late"); } if (!callback && dev->driver && dev->driver->pm) { @@ -915,6 +940,8 @@ pm_callback_t callback = NULL; char *info = NULL; + __pm_runtime_disable(dev, false); + if (dev->pm_domain) { info = "late power domain "; callback = pm_late_early_op(&dev->pm_domain->ops, state); @@ -989,8 +1016,16 @@ int dpm_suspend_end(pm_message_t state) { int error = dpm_suspend_late(state); + if (error) + return error; - return error ? : dpm_suspend_noirq(state); + error = dpm_suspend_noirq(state); + if (error) { + dpm_resume_early(resume_event(state)); + return error; + } + + return 0; } EXPORT_SYMBOL_GPL(dpm_suspend_end); @@ -1027,6 +1062,7 @@ pm_callback_t callback = NULL; char *info = NULL; int error = 0; + ktime_t starttime = ktime_get(); dpm_wait_for_children(dev, async); @@ -1088,6 +1124,7 @@ error = dpm_run_callback(callback, dev, state, info); + device_show_time(dev, starttime, state, NULL); End: if (!error) { dev->power.is_suspended = true; @@ -1100,12 +1137,9 @@ Complete: complete_all(&dev->power.completion); - if (error) { pm_runtime_put_sync(dev); async_error = error; - } else if (dev->power.is_suspended) { - __pm_runtime_disable(dev, false); } return error; --- linux-3.5.0.orig/drivers/staging/Makefile +++ linux-3.5.0/drivers/staging/Makefile @@ -27,7 +27,7 @@ obj-$(CONFIG_USB_SERIAL_QUATECH2) += serqt_usb2/ obj-$(CONFIG_OCTEON_ETHERNET) += octeon/ obj-$(CONFIG_VT6655) += vt6655/ -obj-$(CONFIG_VT6656) += vt6656/ +#obj-$(CONFIG_VT6656) += vt6656/ obj-$(CONFIG_VME_BUS) += vme/ obj-$(CONFIG_IPACK_BUS) += ipack/ obj-$(CONFIG_DX_SEP) += sep/ --- linux-3.5.0.orig/drivers/staging/media/lirc/lirc_sir.c +++ linux-3.5.0/drivers/staging/media/lirc/lirc_sir.c @@ -52,6 +52,7 @@ #include #include #include +#include #ifdef LIRC_ON_SA1100 #include #ifdef CONFIG_SA1100_COLLIE @@ -487,9 +488,11 @@ .owner = THIS_MODULE, }; +static struct platform_device *lirc_sir_dev; static int init_chrdev(void) { + driver.dev = &lirc_sir_dev->dev; driver.minor = lirc_register_driver(&driver); if (driver.minor < 0) { printk(KERN_ERR LIRC_DRIVER_NAME ": init_chrdev() failed.\n"); @@ -1215,20 +1218,71 @@ return 0; } +static int __devinit lirc_sir_probe(struct platform_device *dev) +{ + return 0; +} + +static int __devexit lirc_sir_remove(struct platform_device *dev) +{ + return 0; +} + +static struct platform_driver lirc_sir_driver = { + .probe = lirc_sir_probe, + .remove = __devexit_p(lirc_sir_remove), + .driver = { + .name = "lirc_sir", + .owner = THIS_MODULE, + }, +}; static int __init lirc_sir_init(void) { int retval; + retval = platform_driver_register(&lirc_sir_driver); + if (retval) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform driver register " + "failed!\n"); + return -ENODEV; + } + + lirc_sir_dev = platform_device_alloc("lirc_dev", 0); + if (!lirc_sir_dev) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device alloc " + "failed!\n"); + retval = -ENOMEM; + goto pdev_alloc_fail; + } + + retval = platform_device_add(lirc_sir_dev); + if (retval) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device add " + "failed!\n"); + retval = -ENODEV; + goto pdev_add_fail; + } + retval = init_chrdev(); if (retval < 0) - return retval; + goto fail; + retval = init_lirc_sir(); if (retval) { drop_chrdev(); - return retval; + goto fail; } + return 0; + +fail: + platform_device_del(lirc_sir_dev); +pdev_add_fail: + platform_device_put(lirc_sir_dev); +pdev_alloc_fail: + platform_driver_unregister(&lirc_sir_driver); + return retval; } static void __exit lirc_sir_exit(void) @@ -1236,6 +1290,8 @@ drop_hardware(); drop_chrdev(); drop_port(); + platform_device_unregister(lirc_sir_dev); + platform_driver_unregister(&lirc_sir_driver); printk(KERN_INFO LIRC_DRIVER_NAME ": Uninstalled.\n"); } --- linux-3.5.0.orig/drivers/staging/zram/zram_drv.c +++ linux-3.5.0/drivers/staging/zram/zram_drv.c @@ -235,7 +235,7 @@ if (is_partial_io(bvec)) { /* Use a temporary buffer to decompress the page */ - uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL); + uncmem = kmalloc(PAGE_SIZE, GFP_NOIO); if (!uncmem) { pr_info("Error allocating temp memory!\n"); return -ENOMEM; @@ -330,7 +330,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; --- linux-3.5.0.orig/drivers/staging/android/binder.c +++ linux-3.5.0/drivers/staging/android/binder.c @@ -655,7 +655,7 @@ page = &proc->pages[(page_addr - proc->buffer) / PAGE_SIZE]; BUG_ON(*page); - *page = alloc_page(GFP_KERNEL | __GFP_ZERO); + *page = alloc_page(GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO); if (*page == NULL) { printk(KERN_ERR "binder: %d: binder_alloc_buf failed " "for page at %p\n", proc->pid, page_addr); @@ -2507,14 +2507,38 @@ struct binder_transaction *t; t = container_of(w, struct binder_transaction, work); - if (t->buffer->target_node && !(t->flags & TF_ONE_WAY)) + if (t->buffer->target_node && + !(t->flags & TF_ONE_WAY)) { binder_send_failed_reply(t, BR_DEAD_REPLY); + } else { + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered transaction %d\n", + t->debug_id); + t->buffer->transaction = NULL; + kfree(t); + binder_stats_deleted(BINDER_STAT_TRANSACTION); + } } break; case BINDER_WORK_TRANSACTION_COMPLETE: { + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered TRANSACTION_COMPLETE\n"); kfree(w); binder_stats_deleted(BINDER_STAT_TRANSACTION_COMPLETE); } break; + case BINDER_WORK_DEAD_BINDER_AND_CLEAR: + case BINDER_WORK_CLEAR_DEATH_NOTIFICATION: { + struct binder_ref_death *death; + + death = container_of(w, struct binder_ref_death, work); + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered death notification, %p\n", + death->cookie); + kfree(death); + binder_stats_deleted(BINDER_STAT_DEATH); + } break; default: + pr_err("binder: unexpected work type, %d, not freed\n", + w->type); break; } } @@ -2984,6 +3008,7 @@ nodes++; rb_erase(&node->rb_node, &proc->nodes); list_del_init(&node->work.entry); + binder_release_work(&node->async_todo); if (hlist_empty(&node->refs)) { kfree(node); binder_stats_deleted(BINDER_STAT_NODE); @@ -3022,6 +3047,7 @@ binder_delete_ref(ref); } binder_release_work(&proc->todo); + binder_release_work(&proc->delivered_death); buffers = 0; while ((n = rb_first(&proc->allocated_buffers))) { --- linux-3.5.0.orig/drivers/staging/telephony/ixj.c +++ linux-3.5.0/drivers/staging/telephony/ixj.c @@ -3190,12 +3190,12 @@ ixj_fsk_alloc(j); - strcpy(sdmf1, j->cid_send.month); - strcat(sdmf1, j->cid_send.day); - strcat(sdmf1, j->cid_send.hour); - strcat(sdmf1, j->cid_send.min); - strcpy(sdmf2, j->cid_send.number); - strcpy(sdmf3, j->cid_send.name); + strlcpy(sdmf1, j->cid_send.month, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.day, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.hour, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.min, sizeof(sdmf1)); + strlcpy(sdmf2, j->cid_send.number, sizeof(sdmf2)); + strlcpy(sdmf3, j->cid_send.name, sizeof(sdmf3)); len1 = strlen(sdmf1); len2 = strlen(sdmf2); @@ -3340,12 +3340,12 @@ ixj_pre_cid(j); } j->flags.cidcw_ack = 0; - strcpy(sdmf1, j->cid_send.month); - strcat(sdmf1, j->cid_send.day); - strcat(sdmf1, j->cid_send.hour); - strcat(sdmf1, j->cid_send.min); - strcpy(sdmf2, j->cid_send.number); - strcpy(sdmf3, j->cid_send.name); + strlcpy(sdmf1, j->cid_send.month, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.day, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.hour, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.min, sizeof(sdmf1)); + strlcpy(sdmf2, j->cid_send.number, sizeof(sdmf2)); + strlcpy(sdmf3, j->cid_send.name, sizeof(sdmf3)); len1 = strlen(sdmf1); len2 = strlen(sdmf2); --- linux-3.5.0.orig/drivers/staging/vt6656/wpa2.h +++ linux-3.5.0/drivers/staging/vt6656/wpa2.h @@ -45,8 +45,8 @@ } PMKIDInfo, *PPMKIDInfo; typedef struct tagSPMKIDCache { - unsigned long BSSIDInfoCount; - PMKIDInfo BSSIDInfo[MAX_PMKID_CACHE]; + u32 BSSIDInfoCount; + PMKIDInfo BSSIDInfo[MAX_PMKID_CACHE]; } SPMKIDCache, *PSPMKIDCache; --- linux-3.5.0.orig/drivers/staging/vt6656/bssdb.h +++ linux-3.5.0/drivers/staging/vt6656/bssdb.h @@ -92,7 +92,6 @@ } SRSNCapObject, *PSRSNCapObject; // BSS info(AP) -#pragma pack(1) typedef struct tagKnownBSS { // BSS info BOOL bActive; --- linux-3.5.0.orig/drivers/staging/vt6656/usbpipe.c +++ linux-3.5.0/drivers/staging/vt6656/usbpipe.c @@ -168,6 +168,11 @@ if (pDevice->Flags & fMP_CONTROL_WRITES) return STATUS_FAILURE; + if (pDevice->Flags & fMP_CONTROL_READS) + return STATUS_FAILURE; + + MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES); + pDevice->sUsbCtlRequest.bRequestType = 0x40; pDevice->sUsbCtlRequest.bRequest = byRequest; pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue); @@ -182,12 +187,13 @@ ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC); if (ntStatus != 0) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control send request submission failed: %d\n", ntStatus); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "control send request submission failed: %d\n", + ntStatus); + MP_CLEAR_FLAG(pDevice, fMP_CONTROL_WRITES); return STATUS_FAILURE; } - else { - MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES); - } + spin_unlock_irq(&pDevice->lock); for (ii = 0; ii <= USB_CTL_WAIT; ii ++) { @@ -227,6 +233,11 @@ if (pDevice->Flags & fMP_CONTROL_READS) return STATUS_FAILURE; + if (pDevice->Flags & fMP_CONTROL_WRITES) + return STATUS_FAILURE; + + MP_SET_FLAG(pDevice, fMP_CONTROL_READS); + pDevice->sUsbCtlRequest.bRequestType = 0xC0; pDevice->sUsbCtlRequest.bRequest = byRequest; pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue); @@ -240,10 +251,11 @@ ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC); if (ntStatus != 0) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control request submission failed: %d\n", ntStatus); - }else { - MP_SET_FLAG(pDevice, fMP_CONTROL_READS); - } + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "control request submission failed: %d\n", ntStatus); + MP_CLEAR_FLAG(pDevice, fMP_CONTROL_READS); + return STATUS_FAILURE; + } spin_unlock_irq(&pDevice->lock); for (ii = 0; ii <= USB_CTL_WAIT; ii ++) { --- linux-3.5.0.orig/drivers/staging/vt6656/hostap.c +++ linux-3.5.0/drivers/staging/vt6656/hostap.c @@ -153,7 +153,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-3.5.0.orig/drivers/staging/vt6656/mac.c +++ linux-3.5.0/drivers/staging/vt6656/mac.c @@ -260,7 +260,8 @@ dwData1 <<= 16; dwData1 |= MAKEWORD(*(pbyAddr+4), *(pbyAddr+5)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"1. wOffset: %d, Data: %lX, KeyCtl:%X\n", wOffset, dwData1, wKeyCtl); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"1. wOffset: %d, Data: %X,"\ + " KeyCtl:%X\n", wOffset, dwData1, wKeyCtl); //VNSvOutPortW(dwIoBase + MAC_REG_MISCFFNDEX, wOffset); //VNSvOutPortD(dwIoBase + MAC_REG_MISCFFDATA, dwData); @@ -277,7 +278,8 @@ dwData2 <<= 8; dwData2 |= *(pbyAddr+0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"2. wOffset: %d, Data: %lX\n", wOffset, dwData2); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"2. wOffset: %d, Data: %X\n", + wOffset, dwData2); //VNSvOutPortW(dwIoBase + MAC_REG_MISCFFNDEX, wOffset); //VNSvOutPortD(dwIoBase + MAC_REG_MISCFFDATA, dwData); --- linux-3.5.0.orig/drivers/staging/vt6656/rxtx.c +++ linux-3.5.0/drivers/staging/vt6656/rxtx.c @@ -377,7 +377,8 @@ *(pbyIVHead+3) = (BYTE)(((pDevice->byKeyIndex << 6) & 0xc0) | 0x20); // 0x20 is ExtIV // Append IV&ExtIV after Mac Header *pdwExtIV = cpu_to_le32(pTransmitKey->dwTSC47_16); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"vFillTxKey()---- pdwExtIV: %lx\n", *pdwExtIV); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"vFillTxKey()---- pdwExtIV: %x\n", + *pdwExtIV); } else if (pTransmitKey->byCipherSuite == KEY_CTL_CCMP) { pTransmitKey->wTSC15_0++; @@ -1701,7 +1702,7 @@ // 802.1H if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) { if (pDevice->dwDiagRefCount == 0) { - if ((psEthHeader->wType == cpu_to_le16(ETH_P_IPX)) || + if ((psEthHeader->wType == cpu_to_be16(ETH_P_IPX)) || (psEthHeader->wType == cpu_to_le16(0xF380))) { memcpy((PBYTE) (pbyPayloadHead), abySNAP_Bridgetunnel, 6); @@ -1753,7 +1754,8 @@ MIC_vAppend((PBYTE)&(psEthHeader->abyDstAddr[0]), 12); dwMIC_Priority = 0; MIC_vAppend((PBYTE)&dwMIC_Priority, 4); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC KEY: %lX, %lX\n", dwMICKey0, dwMICKey1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC KEY: %X, %X\n", + dwMICKey0, dwMICKey1); /////////////////////////////////////////////////////////////////// @@ -2635,7 +2637,8 @@ MIC_vAppend((PBYTE)&(sEthHeader.abyDstAddr[0]), 12); dwMIC_Priority = 0; MIC_vAppend((PBYTE)&dwMIC_Priority, 4); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"DMA0_tx_8021:MIC KEY: %lX, %lX\n", dwMICKey0, dwMICKey1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"DMA0_tx_8021:MIC KEY:"\ + " %X, %X\n", dwMICKey0, dwMICKey1); uLength = cbHeaderSize + cbMacHdLen + uPadding + cbIVlen; @@ -2655,7 +2658,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"uLength: %d, %d\n", uLength, cbFrameBodySize); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"cbReqCount:%d, %d, %d, %d\n", cbReqCount, cbHeaderSize, uPadding, cbIVlen); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC:%lx, %lx\n", *pdwMIC_L, *pdwMIC_R); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC:%x, %x\n", + *pdwMIC_L, *pdwMIC_R); } @@ -2840,10 +2844,10 @@ Packet_Type = skb->data[ETH_HLEN+1]; Descriptor_type = skb->data[ETH_HLEN+1+1+2]; Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]); - if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { - /* 802.1x OR eapol-key challenge frame transfer */ - if (((Protocol_Version == 1) || (Protocol_Version == 2)) && - (Packet_Type == 3)) { + if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { + /* 802.1x OR eapol-key challenge frame transfer */ + if (((Protocol_Version == 1) || (Protocol_Version == 2)) && + (Packet_Type == 3)) { bTxeapol_key = TRUE; if(!(Key_info & BIT3) && //WPA or RSN group-key challenge (Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key @@ -2989,19 +2993,19 @@ } } - if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { - if (pDevice->byBBType != BB_TYPE_11A) { - pDevice->wCurrentRate = RATE_1M; - pDevice->byACKRate = RATE_1M; - pDevice->byTopCCKBasicRate = RATE_1M; - pDevice->byTopOFDMBasicRate = RATE_6M; - } else { - pDevice->wCurrentRate = RATE_6M; - pDevice->byACKRate = RATE_6M; - pDevice->byTopCCKBasicRate = RATE_1M; - pDevice->byTopOFDMBasicRate = RATE_6M; - } - } + if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { + if (pDevice->byBBType != BB_TYPE_11A) { + pDevice->wCurrentRate = RATE_1M; + pDevice->byACKRate = RATE_1M; + pDevice->byTopCCKBasicRate = RATE_1M; + pDevice->byTopOFDMBasicRate = RATE_6M; + } else { + pDevice->wCurrentRate = RATE_6M; + pDevice->byACKRate = RATE_6M; + pDevice->byTopCCKBasicRate = RATE_1M; + pDevice->byTopOFDMBasicRate = RATE_6M; + } + } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n", @@ -3017,7 +3021,7 @@ if (bNeedEncryption == TRUE) { DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType)); - if ((pDevice->sTxEthHeader.wType) == cpu_to_le16(ETH_P_PAE)) { + if ((pDevice->sTxEthHeader.wType) == cpu_to_be16(ETH_P_PAE)) { bNeedEncryption = FALSE; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType)); if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { @@ -3029,7 +3033,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"error: KEY is GTK!!~~\n"); } else { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%lX]\n", pTransmitKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%X]\n", + pTransmitKey->dwKeyIndex); bNeedEncryption = TRUE; } } @@ -3043,7 +3048,8 @@ if (pDevice->bEnableHostWEP) { if ((uNodeIndex != 0) && (pMgmt->sNodeDBTable[uNodeIndex].dwKeyIndex & PAIRWISE_KEY)) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%lX]\n", pTransmitKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%X]\n", + pTransmitKey->dwKeyIndex); bNeedEncryption = TRUE; } } --- linux-3.5.0.orig/drivers/staging/vt6656/wcmd.c +++ linux-3.5.0/drivers/staging/vt6656/wcmd.c @@ -316,17 +316,19 @@ return pTxPacket; } -void vCommandTimerWait(void *hDeviceContext, unsigned int MSecond) +void vCommandTimerWait(void *hDeviceContext, unsigned long MSecond) { - PSDevice pDevice = (PSDevice)hDeviceContext; + PSDevice pDevice = (PSDevice)hDeviceContext; - init_timer(&pDevice->sTimerCommand); - pDevice->sTimerCommand.data = (unsigned long)pDevice; - pDevice->sTimerCommand.function = (TimerFunction)vRunCommand; - // RUN_AT :1 msec ~= (HZ/1024) - pDevice->sTimerCommand.expires = (unsigned int)RUN_AT((MSecond * HZ) >> 10); - add_timer(&pDevice->sTimerCommand); - return; + init_timer(&pDevice->sTimerCommand); + + pDevice->sTimerCommand.data = (unsigned long)pDevice; + pDevice->sTimerCommand.function = (TimerFunction)vRunCommand; + pDevice->sTimerCommand.expires = RUN_AT((MSecond * HZ) / 1000); + + add_timer(&pDevice->sTimerCommand); + + return; } void vRunCommand(void *hDeviceContext) --- linux-3.5.0.orig/drivers/staging/vt6656/iocmd.h +++ linux-3.5.0/drivers/staging/vt6656/iocmd.h @@ -95,13 +95,12 @@ // Ioctl interface structure // Command structure // -#pragma pack(1) typedef struct tagSCmdRequest { u8 name[16]; void *data; u16 wResult; u16 wCmdCode; -} SCmdRequest, *PSCmdRequest; +} __packed SCmdRequest, *PSCmdRequest; // // Scan @@ -111,7 +110,7 @@ u8 ssid[SSID_MAXLEN + 2]; -} SCmdScan, *PSCmdScan; +} __packed SCmdScan, *PSCmdScan; // // BSS Join @@ -126,7 +125,7 @@ BOOL bPSEnable; BOOL bShareKeyAuth; -} SCmdBSSJoin, *PSCmdBSSJoin; +} __packed SCmdBSSJoin, *PSCmdBSSJoin; // // Zonetype Setting @@ -137,7 +136,7 @@ BOOL bWrite; WZONETYPE ZoneType; -} SCmdZoneTypeSet, *PSCmdZoneTypeSet; +} __packed SCmdZoneTypeSet, *PSCmdZoneTypeSet; typedef struct tagSWPAResult { char ifname[100]; @@ -145,7 +144,7 @@ u8 key_mgmt; u8 eap_type; BOOL authenticated; -} SWPAResult, *PSWPAResult; +} __packed SWPAResult, *PSWPAResult; typedef struct tagSCmdStartAP { @@ -157,7 +156,7 @@ BOOL bShareKeyAuth; u8 byBasicRate; -} SCmdStartAP, *PSCmdStartAP; +} __packed SCmdStartAP, *PSCmdStartAP; typedef struct tagSCmdSetWEP { @@ -167,7 +166,7 @@ BOOL bWepKeyAvailable[WEP_NKEYS]; u32 auWepKeyLength[WEP_NKEYS]; -} SCmdSetWEP, *PSCmdSetWEP; +} __packed SCmdSetWEP, *PSCmdSetWEP; typedef struct tagSBSSIDItem { @@ -180,14 +179,14 @@ BOOL bWEPOn; u32 uRSSI; -} SBSSIDItem; +} __packed SBSSIDItem; typedef struct tagSBSSIDList { u32 uItem; SBSSIDItem sBSSIDList[0]; -} SBSSIDList, *PSBSSIDList; +} __packed SBSSIDList, *PSBSSIDList; typedef struct tagSNodeItem { @@ -208,7 +207,7 @@ u32 uTxAttempts; u16 wFailureRatio; -} SNodeItem; +} __packed SNodeItem; typedef struct tagSNodeList { @@ -216,7 +215,7 @@ u32 uItem; SNodeItem sNodeList[0]; -} SNodeList, *PSNodeList; +} __packed SNodeList, *PSNodeList; typedef struct tagSCmdLinkStatus { @@ -229,7 +228,7 @@ u32 uChannel; u32 uLinkRate; -} SCmdLinkStatus, *PSCmdLinkStatus; +} __packed SCmdLinkStatus, *PSCmdLinkStatus; // // 802.11 counter @@ -247,7 +246,7 @@ u32 ReceivedFragmentCount; u32 MulticastReceivedFrameCount; u32 FCSErrorCount; -} SDot11MIBCount, *PSDot11MIBCount; +} __packed SDot11MIBCount, *PSDot11MIBCount; @@ -355,13 +354,13 @@ u32 ullTxBroadcastBytes[2]; u32 ullTxMulticastBytes[2]; u32 ullTxDirectedBytes[2]; -} SStatMIBCount, *PSStatMIBCount; +} __packed SStatMIBCount, *PSStatMIBCount; typedef struct tagSCmdValue { u32 dwValue; -} SCmdValue, *PSCmdValue; +} __packed SCmdValue, *PSCmdValue; // // hostapd & viawget ioctl related @@ -431,7 +430,7 @@ u8 ssid[32]; } scan_req; } u; -}; +} __packed; /*--------------------- Export Classes ----------------------------*/ --- linux-3.5.0.orig/drivers/staging/vt6656/ttype.h +++ linux-3.5.0/drivers/staging/vt6656/ttype.h @@ -29,6 +29,8 @@ #ifndef __TTYPE_H__ #define __TTYPE_H__ +#include + /******* Common definitions and typedefs ***********************************/ typedef int BOOL; @@ -42,17 +44,17 @@ /****** Simple typedefs ***************************************************/ -typedef unsigned char BYTE; // 8-bit -typedef unsigned short WORD; // 16-bit -typedef unsigned long DWORD; // 32-bit +typedef u8 BYTE; +typedef u16 WORD; +typedef u32 DWORD; // QWORD is for those situation that we want // an 8-byte-aligned 8 byte long structure // which is NOT really a floating point number. typedef union tagUQuadWord { struct { - DWORD dwLowDword; - DWORD dwHighDword; + u32 dwLowDword; + u32 dwHighDword; } u; double DoNotUseThisField; } UQuadWord; @@ -60,8 +62,8 @@ /****** Common pointer types ***********************************************/ -typedef unsigned long ULONG_PTR; // 32-bit -typedef unsigned long DWORD_PTR; // 32-bit +typedef u32 ULONG_PTR; +typedef u32 DWORD_PTR; // boolean pointer --- linux-3.5.0.orig/drivers/staging/vt6656/dpc.c +++ linux-3.5.0/drivers/staging/vt6656/dpc.c @@ -200,7 +200,7 @@ } else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) { cbHeaderSize += 6; pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); - if ((*pwType == cpu_to_le16(ETH_P_IPX)) || + if ((*pwType == cpu_to_be16(ETH_P_IPX)) || (*pwType == cpu_to_le16(0xF380))) { cbHeaderSize -= 8; pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); @@ -1238,7 +1238,7 @@ PayloadLen -= (WLAN_HDR_ADDR3_LEN + 8 + 4); // 24 is 802.11 header, 8 is IV&ExtIV, 4 is crc *pdwRxTSC47_16 = cpu_to_le32(*(PDWORD)(pbyIV + 4)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %lx\n",*pdwRxTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %x\n", *pdwRxTSC47_16); if (byDecMode == KEY_CTL_TKIP) { *pwRxTSC15_0 = cpu_to_le16(MAKEWORD(*(pbyIV+2), *pbyIV)); } else { @@ -1349,7 +1349,7 @@ PayloadLen -= (WLAN_HDR_ADDR3_LEN + 8 + 4); // 24 is 802.11 header, 8 is IV&ExtIV, 4 is crc *pdwRxTSC47_16 = cpu_to_le32(*(PDWORD)(pbyIV + 4)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %lx\n",*pdwRxTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %x\n", *pdwRxTSC47_16); if (byDecMode == KEY_CTL_TKIP) { *pwRxTSC15_0 = cpu_to_le16(MAKEWORD(*(pbyIV+2), *pbyIV)); --- linux-3.5.0.orig/drivers/staging/vt6656/rf.c +++ linux-3.5.0/drivers/staging/vt6656/rf.c @@ -769,6 +769,9 @@ return TRUE; } + if (uCH == 0) + return -EINVAL; + switch (uRATE) { case RATE_1M: case RATE_2M: --- linux-3.5.0.orig/drivers/staging/vt6656/main_usb.c +++ linux-3.5.0/drivers/staging/vt6656/main_usb.c @@ -222,7 +222,7 @@ // Static vars definitions // -static struct usb_device_id vt6656_table[] __devinitdata = { +static struct usb_device_id vt6656_table[] = { {USB_DEVICE(VNT_USB_VENDOR_ID, VNT_USB_PRODUCT_ID)}, {} }; @@ -718,8 +718,6 @@ if (device->flags & DEVICE_FLAGS_OPENED) device_close(device->dev); - usb_put_dev(interface_to_usbdev(intf)); - return 0; } @@ -730,8 +728,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-3.5.0.orig/drivers/staging/vt6656/key.h +++ linux-3.5.0/drivers/staging/vt6656/key.h @@ -58,7 +58,7 @@ typedef struct tagSKeyItem { BOOL bKeyValid; - unsigned long uKeyLength; + u32 uKeyLength; BYTE abyKey[MAX_KEY_LEN]; QWORD KeyRSC; DWORD dwTSC47_16; @@ -107,7 +107,7 @@ PSKeyManagement pTable, PBYTE pbyBSSID, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -146,7 +146,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -156,7 +156,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode --- linux-3.5.0.orig/drivers/staging/vt6656/key.c +++ linux-3.5.0/drivers/staging/vt6656/key.c @@ -223,7 +223,7 @@ PSKeyManagement pTable, PBYTE pbyBSSID, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -235,7 +235,8 @@ PSKeyItem pKey; unsigned int uKeyIdx; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetKey: %lX\n", dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Enter KeybSetKey: %X\n", dwKeyIndex); j = (MAX_KEY_TABLE-1); for (i=0;i<(MAX_KEY_TABLE-1);i++) { @@ -261,7 +262,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[i].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[i].dwGTKeyIndex, i); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[i].dwGTKeyIndex, i); } pTable->KeyTable[i].wKeyCtl &= 0xFF0F; // clear group key control filed pTable->KeyTable[i].wKeyCtl |= (byKeyDecMode << 4); @@ -302,9 +305,12 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n ", pKey->dwTSC47_16); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n ", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n ", + pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", + pKey->wTSC15_0); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n ", + pKey->dwKeyIndex); return (TRUE); } @@ -326,7 +332,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[j].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(N)[%lX]: %d\n", pTable->KeyTable[j].dwGTKeyIndex, j); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(N)[%X]: %d\n", + pTable->KeyTable[j].dwGTKeyIndex, j); } pTable->KeyTable[j].wKeyCtl &= 0xFF0F; // clear group key control filed pTable->KeyTable[j].wKeyCtl |= (byKeyDecMode << 4); @@ -367,9 +375,11 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n ", pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n ", + pKey->dwTSC47_16); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n ", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n ", + pKey->dwKeyIndex); return (TRUE); } @@ -597,7 +607,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"%x ", pTable->KeyTable[i].abyBSSID[ii]); } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"dwGTKeyIndex: %lX\n", pTable->KeyTable[i].dwGTKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"dwGTKeyIndex: %X\n", + pTable->KeyTable[i].dwGTKeyIndex); return (TRUE); } @@ -664,7 +675,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -696,7 +707,10 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex, MAX_KEY_TABLE-1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex, + MAX_KEY_TABLE-1); } pTable->KeyTable[MAX_KEY_TABLE-1].wKeyCtl &= 0x7F00; // clear all key control filed @@ -747,9 +761,11 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n", pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n", + pKey->dwTSC47_16); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n", + pKey->dwKeyIndex); return (TRUE); } @@ -775,7 +791,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -787,7 +803,8 @@ PSKeyItem pKey; unsigned int uKeyIdx; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetAllGroupKey: %lX\n", dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetAllGroupKey: %X\n", + dwKeyIndex); if ((dwKeyIndex & PAIRWISE_KEY) != 0) { // Pairwise key @@ -804,7 +821,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[i].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[i].dwGTKeyIndex, i); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[i].dwGTKeyIndex, i); } pTable->KeyTable[i].wKeyCtl &= 0xFF0F; // clear group key control filed --- linux-3.5.0.orig/drivers/staging/vt6656/iowpa.h +++ linux-3.5.0/drivers/staging/vt6656/iowpa.h @@ -67,12 +67,11 @@ -#pragma pack(1) typedef struct viawget_wpa_header { u8 type; u16 req_ie_len; u16 resp_ie_len; -} viawget_wpa_header; +} __packed viawget_wpa_header; struct viawget_wpa_param { u32 cmd; @@ -113,9 +112,8 @@ u8 *buf; } scan_results; } u; -}; +} __packed; -#pragma pack(1) struct viawget_scan_result { u8 bssid[6]; u8 ssid[32]; @@ -130,7 +128,7 @@ int noise; int level; int maxrate; -}; +} __packed; /*--------------------- Export Classes ----------------------------*/ --- linux-3.5.0.orig/drivers/staging/vt6656/int.h +++ linux-3.5.0/drivers/staging/vt6656/int.h @@ -34,7 +34,6 @@ #include "device.h" /*--------------------- Export Definitions -------------------------*/ -#pragma pack(1) typedef struct tagSINTData { BYTE byTSR0; BYTE byPkt0; --- linux-3.5.0.orig/drivers/staging/comedi/drivers.c +++ linux-3.5.0/drivers/staging/comedi/drivers.c @@ -144,7 +144,7 @@ dev->board_ptr = comedi_recognize(driv, it->board_name); if (dev->board_ptr) break; - } else if (strcmp(driv->driver_name, it->board_name)) + } else if (strcmp(driv->driver_name, it->board_name) == 0) break; module_put(driv->module); } --- linux-3.5.0.orig/drivers/staging/comedi/Kconfig +++ linux-3.5.0/drivers/staging/comedi/Kconfig @@ -447,6 +447,7 @@ config COMEDI_NI_AT_A2150 tristate "NI AT-A2150 ISA card support" + select COMEDI_FC depends on COMEDI_NI_COMMON depends on VIRT_TO_BUS ---help--- --- linux-3.5.0.orig/drivers/staging/comedi/comedi_fops.c +++ linux-3.5.0/drivers/staging/comedi/comedi_fops.c @@ -425,8 +425,16 @@ /* Device config is special, because it must work on * an unconfigured device. */ if (cmd == COMEDI_DEVCONFIG) { + if (minor >= COMEDI_NUM_BOARD_MINORS) { + /* Device config not appropriate on non-board minors. */ + rc = -ENOTTY; + goto done; + } rc = do_devconfig_ioctl(dev, (struct comedi_devconfig __user *)arg); + if (rc == 0) + /* Evade comedi_auto_unconfig(). */ + dev_file_info->hardware_device = NULL; goto done; } @@ -1132,7 +1140,7 @@ ret = -EAGAIN; break; } - ret = s->async->inttrig(dev, s, insn->data[0]); + ret = s->async->inttrig(dev, s, data[0]); if (ret >= 0) ret = 1; break; @@ -1377,7 +1385,6 @@ goto cleanup; } - kfree(async->cmd.chanlist); async->cmd = user_cmd; async->cmd.data = NULL; /* load channel/gain list */ @@ -1859,7 +1866,7 @@ mask = 0; read_subdev = comedi_get_read_subdevice(dev_file_info); - if (read_subdev) { + if (read_subdev && read_subdev->async) { poll_wait(file, &read_subdev->async->wait_head, wait); if (!read_subdev->busy || comedi_buf_read_n_available(read_subdev->async) > 0 @@ -1869,7 +1876,7 @@ } } write_subdev = comedi_get_write_subdevice(dev_file_info); - if (write_subdev) { + if (write_subdev && write_subdev->async) { poll_wait(file, &write_subdev->async->wait_head, wait); comedi_buf_write_alloc(write_subdev->async, write_subdev->async->prealloc_bufsz); @@ -1911,7 +1918,7 @@ } s = comedi_get_write_subdevice(dev_file_info); - if (s == NULL) { + if (!s || !s->async) { retval = -EIO; goto done; } @@ -2022,7 +2029,7 @@ } s = comedi_get_read_subdevice(dev_file_info); - if (s == NULL) { + if (!s || !s->async) { retval = -EIO; goto done; } @@ -2122,6 +2129,8 @@ if (async) { comedi_reset_async_buf(async); async->inttrig = NULL; + kfree(async->cmd.chanlist); + async->cmd.chanlist = NULL; } else { printk(KERN_ERR "BUG: (?) do_become_nonbusy called with async=0\n"); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/das08.c +++ linux-3.5.0/drivers/staging/comedi/drivers/das08.c @@ -403,7 +403,7 @@ .ai = das08_ai_rinsn, .ai_nbits = 16, .ai_pg = das08_pg_none, - .ai_encoding = das08_encode12, + .ai_encoding = das08_encode16, .ao = das08jr_ao_winsn, .ao_nbits = 16, .di = das08jr_di_rbits, @@ -678,7 +678,7 @@ int chan; lsb = data[0] & 0xff; - msb = (data[0] >> 8) & 0xf; + msb = (data[0] >> 8) & 0xff; chan = CR_CHAN(insn->chanspec); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/amplc_pc236.c +++ linux-3.5.0/drivers/staging/comedi/drivers/amplc_pc236.c @@ -479,7 +479,7 @@ static void pc236_detach(struct comedi_device *dev) { - if (devpriv) + if (dev->iobase) pc236_intr_disable(dev); if (dev->irq) free_irq(dev->irq, dev); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbduxfast.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbduxfast.c @@ -53,6 +53,7 @@ #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com" #define DRIVER_DESC "USB-DUXfast, BerndPorr@f2s.com" #define BOARDNAME "usbduxfast" +#define FIRMWARE "usbduxfast_firmware.bin" /* * timeout for the USB-transfer @@ -1578,7 +1579,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbduxfast_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxfastsub + index, @@ -1804,3 +1805,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/ni_labpc.c +++ linux-3.5.0/drivers/staging/comedi/drivers/ni_labpc.c @@ -1259,7 +1259,9 @@ else channel = CR_CHAN(cmd->chanlist[0]); /* munge channel bits for differential / scan disabled mode */ - if (labpc_ai_scan_mode(cmd) != MODE_SINGLE_CHAN && aref == AREF_DIFF) + if ((labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN || + labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN_INTERVAL) && + aref == AREF_DIFF) channel *= 2; devpriv->command1_bits |= ADC_CHAN_BITS(channel); devpriv->command1_bits |= thisboard->ai_range_code[range]; @@ -1275,21 +1277,6 @@ devpriv->write_byte(devpriv->command1_bits, dev->iobase + COMMAND1_REG); } - /* setup any external triggering/pacing (command4 register) */ - devpriv->command4_bits = 0; - if (cmd->convert_src != TRIG_EXT) - devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; - /* XXX should discard first scan when using interval scanning - * since manual says it is not synced with scan clock */ - if (labpc_use_continuous_mode(cmd) == 0) { - devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; - if (cmd->scan_begin_src == TRIG_EXT) - devpriv->command4_bits |= EXT_SCAN_EN_BIT; - } - /* single-ended/differential */ - if (aref == AREF_DIFF) - devpriv->command4_bits |= ADC_DIFF_BIT; - devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); devpriv->write_byte(cmd->chanlist_len, dev->iobase + INTERVAL_COUNT_REG); @@ -1369,6 +1356,22 @@ devpriv->command3_bits &= ~ADC_FNE_INTR_EN_BIT; devpriv->write_byte(devpriv->command3_bits, dev->iobase + COMMAND3_REG); + /* setup any external triggering/pacing (command4 register) */ + devpriv->command4_bits = 0; + if (cmd->convert_src != TRIG_EXT) + devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; + /* XXX should discard first scan when using interval scanning + * since manual says it is not synced with scan clock */ + if (labpc_use_continuous_mode(cmd) == 0) { + devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; + if (cmd->scan_begin_src == TRIG_EXT) + devpriv->command4_bits |= EXT_SCAN_EN_BIT; + } + /* single-ended/differential */ + if (aref == AREF_DIFF) + devpriv->command4_bits |= ADC_DIFF_BIT; + devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); + /* startup acquisition */ /* command2 reg */ --- linux-3.5.0.orig/drivers/staging/comedi/drivers/amplc_pci224.c +++ linux-3.5.0/drivers/staging/comedi/drivers/amplc_pci224.c @@ -1519,6 +1519,13 @@ dev->minor, DRIVER_NAME); return -EINVAL; } + /* + * Need to 'get' the PCI device to match the 'put' in pci224_detach(). + * TODO: Remove the pci_dev_get() and matching pci_dev_put() once + * support for manual attachment of PCI devices via pci224_attach() + * has been removed. + */ + pci_dev_get(pci_dev); return pci224_attach_common(dev, pci_dev, NULL); } --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbdux.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbdux.c @@ -102,6 +102,7 @@ #include "../comedidev.h" #define BOARDNAME "usbdux" +#define FIRMWARE "usbdux_firmware.bin" /* timeout for the USB-transfer in ms*/ #define BULK_TIMEOUT 1000 @@ -2577,7 +2578,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbdux_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxsub + index, @@ -2887,3 +2888,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/s626.c +++ linux-3.5.0/drivers/staging/comedi/drivers/s626.c @@ -1823,7 +1823,7 @@ case TRIG_NONE: /* continous acquisition */ devpriv->ai_continous = 1; - devpriv->ai_sample_count = 0; + devpriv->ai_sample_count = 1; break; } @@ -2311,7 +2311,7 @@ /* (data==NULL) ? (Preloadvalue=0) : (Preloadvalue=data[0]); */ k->SetMode(dev, k, Setup, TRUE); - Preload(dev, k, *(insn->data)); + Preload(dev, k, data[0]); k->PulseIndex(dev, k); SetLatchSource(dev, k, valueSrclatch); k->SetEnable(dev, k, (uint16_t) (enab != 0)); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/jr3_pci.c +++ linux-3.5.0/drivers/staging/comedi/drivers/jr3_pci.c @@ -883,7 +883,7 @@ } /* Reset DSP card */ - devpriv->iobase->channel[0].reset = 0; + writel(0, &devpriv->iobase->channel[0].reset); result = comedi_load_firmware(dev, "jr3pci.idm", jr3_download_firmware); dev_dbg(dev->hw_dev, "Firmare load %d\n", result); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/comedi_test.c +++ linux-3.5.0/drivers/staging/comedi/drivers/comedi_test.c @@ -398,7 +398,7 @@ struct comedi_subdevice *s) { devpriv->timer_running = 0; - del_timer(&devpriv->timer); + del_timer_sync(&devpriv->timer); return 0; } --- linux-3.5.0.orig/drivers/staging/comedi/drivers/ni_pcimio.c +++ linux-3.5.0/drivers/staging/comedi/drivers/ni_pcimio.c @@ -963,7 +963,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -982,7 +982,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1001,7 +1001,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1037,7 +1037,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, @@ -1056,7 +1056,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, @@ -1092,7 +1092,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1111,7 +1111,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1147,7 +1147,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbduxsigma.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbduxsigma.c @@ -63,6 +63,7 @@ #include "../comedidev.h" #define BOARDNAME "usbduxsigma" +#define FIRMWARE "usbduxsigma_firmware.bin" /* timeout for the USB-transfer in ms*/ #define BULK_TIMEOUT 1000 @@ -2588,7 +2589,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbduxsigma_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxsub + index, @@ -2865,3 +2866,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/speakup/synth.c +++ linux-3.5.0/drivers/staging/speakup/synth.c @@ -342,7 +342,7 @@ mutex_lock(&spk_mutex); /* First, check if we already have it loaded. */ - for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++) + for (i = 0; i < MAXSYNTHS && synths[i] != NULL; i++) if (strcmp(synths[i]->name, synth_name) == 0) synth = synths[i]; @@ -423,7 +423,7 @@ int i; int status = 0; mutex_lock(&spk_mutex); - for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++) + for (i = 0; i < MAXSYNTHS && synths[i] != NULL; i++) /* synth_remove() is responsible for rotating the array down */ if (in_synth == synths[i]) { mutex_unlock(&spk_mutex); --- linux-3.5.0.orig/drivers/staging/speakup/main.c +++ linux-3.5.0/drivers/staging/speakup/main.c @@ -1854,7 +1854,7 @@ static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key) { - static u_char *goto_buf = "\0\0\0\0\0\0"; + static u_char goto_buf[8]; static int num; int maxlen, go_pos; char *cp; --- linux-3.5.0.orig/drivers/staging/speakup/speakup_soft.c +++ linux-3.5.0/drivers/staging/speakup/speakup_soft.c @@ -40,7 +40,7 @@ static unsigned char get_index(void); static struct miscdevice synth_device; -static int initialized; +static int init_pos; static int misc_registered; static struct var_t vars[] = { @@ -194,7 +194,7 @@ unsigned long flags; spk_lock(flags); synth_soft.alive = 0; - initialized = 0; + init_pos = 0; spk_unlock(flags); /* Make sure we let applications go before leaving */ speakup_start_ttys(); @@ -239,13 +239,8 @@ ch = '\x18'; } else if (synth_buffer_empty()) { break; - } else if (!initialized) { - if (*init) { - ch = *init; - init++; - } else { - initialized = 1; - } + } else if (init[init_pos]) { + ch = init[init_pos++]; } else { ch = synth_buffer_getc(); } --- linux-3.5.0.orig/drivers/staging/iio/light/tsl2x7x_core.c +++ linux-3.5.0/drivers/staging/iio/light/tsl2x7x_core.c @@ -1924,6 +1924,7 @@ dev_info(&chip->client->dev, "%s: i2c device found does not match expected id\n", __func__); + ret = -EINVAL; goto fail1; } @@ -1962,7 +1963,7 @@ if (ret) { dev_err(&clientp->dev, "%s: irq request failed", __func__); - goto fail2; + goto fail1; } } @@ -1975,17 +1976,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-3.5.0.orig/drivers/staging/winbond/wbusb.c +++ linux-3.5.0/drivers/staging/winbond/wbusb.c @@ -25,7 +25,7 @@ MODULE_LICENSE("GPL"); MODULE_VERSION("0.1"); -static const struct usb_device_id wb35_table[] __devinitconst = { +static const struct usb_device_id wb35_table[] = { { USB_DEVICE(0x0416, 0x0035) }, { USB_DEVICE(0x18E8, 0x6201) }, { USB_DEVICE(0x18E8, 0x6206) }, --- linux-3.5.0.orig/drivers/staging/omapdrm/omap_gem_dmabuf.c +++ linux-3.5.0/drivers/staging/omapdrm/omap_gem_dmabuf.c @@ -207,7 +207,12 @@ obj = buffer->priv; /* is it from our device? */ if (obj->dev == dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(obj); + dma_buf_put(buffer); return obj; } } --- linux-3.5.0.orig/drivers/staging/omapdrm/omap_connector.c +++ linux-3.5.0/drivers/staging/omapdrm/omap_connector.c @@ -177,14 +177,11 @@ drm_mode_connector_update_edid_property( connector, edid); n = drm_add_edid_modes(connector, edid); - kfree(connector->display_info.raw_edid); - connector->display_info.raw_edid = edid; } else { drm_mode_connector_update_edid_property( connector, NULL); - connector->display_info.raw_edid = NULL; - kfree(edid); } + kfree(edid); } else { struct drm_display_mode *mode = drm_mode_create(dev); struct omap_video_timings timings; --- linux-3.5.0.orig/drivers/staging/bcm/InterfaceInit.h +++ linux-3.5.0/drivers/staging/bcm/InterfaceInit.h @@ -8,10 +8,10 @@ #define BCM_USB_PRODUCT_ID_T3 0x0300 #define BCM_USB_PRODUCT_ID_T3B 0x0210 #define BCM_USB_PRODUCT_ID_T3L 0x0220 -#define BCM_USB_PRODUCT_ID_SM250 0xbccd #define BCM_USB_PRODUCT_ID_SYM 0x15E #define BCM_USB_PRODUCT_ID_1901 0xe017 #define BCM_USB_PRODUCT_ID_226 0x0132 +#define BCM_USB_PRODUCT_ID_ZTE_326 0x173 /* ZTE AX326 */ #define BCM_USB_PRODUCT_ID_ZTE_TU25 0x0007 #define BCM_USB_MINOR_BASE 192 --- linux-3.5.0.orig/drivers/staging/bcm/InterfaceInit.c +++ linux-3.5.0/drivers/staging/bcm/InterfaceInit.c @@ -4,10 +4,11 @@ { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3) }, { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3B) }, { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3L) }, - { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SM250) }, + { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SYM) }, { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_226) }, { USB_DEVICE(BCM_USB_VENDOR_ID_FOXCONN, BCM_USB_PRODUCT_ID_1901) }, { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_TU25) }, + { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_326) }, { } }; MODULE_DEVICE_TABLE(usb, InterfaceUsbtable); --- linux-3.5.0.orig/drivers/staging/zsmalloc/zsmalloc-main.c +++ linux-3.5.0/drivers/staging/zsmalloc/zsmalloc-main.c @@ -425,12 +425,6 @@ } -/* - * If this becomes a separate module, register zs_init() with - * module_init(), zs_exit with module_exit(), and remove zs_initialized -*/ -static int zs_initialized; - static int zs_cpu_notifier(struct notifier_block *nb, unsigned long action, void *pcpu) { @@ -489,7 +483,7 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) { - int i, error, ovhd_size; + int i, ovhd_size; struct zs_pool *pool; if (!name) @@ -516,28 +510,9 @@ } - /* - * If this becomes a separate module, register zs_init with - * module_init, and remove this block - */ - if (!zs_initialized) { - error = zs_init(); - if (error) - goto cleanup; - zs_initialized = 1; - } - pool->flags = flags; pool->name = name; - error = 0; /* Success */ - -cleanup: - if (error) { - zs_destroy_pool(pool); - pool = NULL; - } - return pool; } EXPORT_SYMBOL_GPL(zs_create_pool); @@ -753,3 +728,9 @@ return npages << PAGE_SHIFT; } EXPORT_SYMBOL_GPL(zs_get_total_size_bytes); + +module_init(zs_init); +module_exit(zs_exit); + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Nitin Gupta "); --- linux-3.5.0.orig/drivers/staging/zcache/zcache-main.c +++ linux-3.5.0/drivers/staging/zcache/zcache-main.c @@ -1259,13 +1259,12 @@ void *pampd, struct tmem_pool *pool, struct tmem_oid *oid, uint32_t index) { - int ret = 0; - BUG_ON(!is_ephemeral(pool)); - zbud_decompress((struct page *)(data), pampd); + if (zbud_decompress((struct page *)(data), pampd) < 0) + return -EINVAL; zbud_free_and_delist((struct zbud_hdr *)pampd); atomic_dec(&zcache_curr_eph_pampd_count); - return ret; + return 0; } /* --- linux-3.5.0.orig/drivers/staging/rtl8712/recv_linux.c +++ linux-3.5.0/drivers/staging/rtl8712/recv_linux.c @@ -117,13 +117,8 @@ if (skb == NULL) goto _recv_indicatepkt_drop; skb->data = precv_frame->u.hdr.rx_data; -#ifdef NET_SKBUFF_DATA_USES_OFFSET - skb->tail = (sk_buff_data_t)(precv_frame->u.hdr.rx_tail - - precv_frame->u.hdr.rx_head); -#else - skb->tail = (sk_buff_data_t)precv_frame->u.hdr.rx_tail; -#endif skb->len = precv_frame->u.hdr.len; + skb_set_tail_pointer(skb, skb->len); if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) skb->ip_summed = CHECKSUM_UNNECESSARY; else --- linux-3.5.0.orig/drivers/staging/rtl8712/rtl8712_recv.c +++ linux-3.5.0/drivers/staging/rtl8712/rtl8712_recv.c @@ -1127,6 +1127,9 @@ recvbuf2recvframe(padapter, pskb); skb_reset_tail_pointer(pskb); pskb->len = 0; - skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + if (!skb_cloned(pskb)) + skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + else + consume_skb(pskb); } } --- linux-3.5.0.orig/drivers/staging/rtl8712/usb_intf.c +++ linux-3.5.0/drivers/staging/rtl8712/usb_intf.c @@ -66,6 +66,8 @@ {USB_DEVICE(0x0B05, 0x1791)}, /* 11n mode disable */ /* Belkin */ {USB_DEVICE(0x050D, 0x945A)}, + /* ISY IWL - Belkin clone */ + {USB_DEVICE(0x050D, 0x11F1)}, /* Corega */ {USB_DEVICE(0x07AA, 0x0047)}, /* D-Link */ --- linux-3.5.0.orig/drivers/staging/wlan-ng/prism2mgmt.c +++ linux-3.5.0/drivers/staging/wlan-ng/prism2mgmt.c @@ -406,7 +406,7 @@ /* SSID */ req->ssid.status = P80211ENUM_msgitem_status_data_ok; req->ssid.data.len = le16_to_cpu(item->ssid.len); - req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_BSSID_LEN); + req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_SSID_MAXLEN); memcpy(req->ssid.data.data, item->ssid.data, req->ssid.data.len); /* supported rates */ --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h @@ -23,6 +23,10 @@ #define GET_COMMAND_PACKET_FRAG_THRESHOLD(v) (4*(v/4) - 8) +#define RTL8192E_BOOT_IMG_FW "RTL8192E/boot.img" +#define RTL8192E_MAIN_IMG_FW "RTL8192E/main.img" +#define RTL8192E_DATA_IMG_FW "RTL8192E/data.img" + enum firmware_init_step { FW_INIT_STEP0_BOOT = 0, FW_INIT_STEP1_MAIN = 1, --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c @@ -265,10 +265,11 @@ case FW_SOURCE_IMG_FILE: { if (pfirmware->firmware_buf_size[init_step] == 0) { - const char *fw_name[3] = { "RTL8192E/boot.img", - "RTL8192E/main.img", - "RTL8192E/data.img" - }; + const char *fw_name[3] = { + RTL8192E_BOOT_IMG_FW, + RTL8192E_MAIN_IMG_FW, + RTL8192E_DATA_IMG_FW + }; const struct firmware *fw_entry; int rc; rc = request_firmware(&fw_entry, --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/rtl_core.c +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/rtl_core.c @@ -3125,6 +3125,9 @@ MODULE_AUTHOR(DRV_COPYRIGHT " " DRV_AUTHOR); MODULE_VERSION(DRV_VERSION); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(RTL8192E_BOOT_IMG_FW); +MODULE_FIRMWARE(RTL8192E_MAIN_IMG_FW); +MODULE_FIRMWARE(RTL8192E_DATA_IMG_FW); module_param(ifname, charp, S_IRUGO|S_IWUSR); module_param(hwwep, int, S_IRUGO|S_IWUSR); --- linux-3.5.0.orig/drivers/extcon/extcon_class.c +++ linux-3.5.0/drivers/extcon/extcon_class.c @@ -575,6 +575,10 @@ kfree(edev->cables); } +#if defined(CONFIG_ANDROID) + if (switch_class) + class_compat_remove_link(switch_class, edev->dev, NULL); +#endif device_unregister(edev->dev); put_device(edev->dev); } @@ -821,6 +825,9 @@ static void __exit extcon_class_exit(void) { +#if defined(CONFIG_ANDROID) + class_compat_unregister(switch_class); +#endif class_destroy(extcon_class); } module_exit(extcon_class_exit); --- linux-3.5.0.orig/drivers/firmware/efivars.c +++ linux-3.5.0/drivers/firmware/efivars.c @@ -80,6 +80,10 @@ #include #include +#include +#include +#include + #include #define EFIVARS_VERSION "0.08" @@ -91,6 +95,12 @@ MODULE_VERSION(EFIVARS_VERSION); #define DUMP_NAME_LEN 52 +#define GUID_LEN 37 + +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 @@ -108,7 +118,6 @@ __u32 Attributes; } __attribute__((packed)); - struct efivar_entry { struct efivars *efivars; struct efi_variable var; @@ -122,6 +131,9 @@ ssize_t (*store)(struct efivar_entry *entry, const char *buf, size_t count); }; +static struct efivars __efivars; +static struct efivar_operations ops; + #define PSTORE_EFI_ATTRIBUTES \ (EFI_VARIABLE_NON_VOLATILE | \ EFI_VARIABLE_BOOTSERVICE_ACCESS | \ @@ -435,12 +447,23 @@ if (status != EFI_SUCCESS) return -EIO; - if (var->Attributes & 0x1) + if (var->Attributes & EFI_VARIABLE_NON_VOLATILE) str += sprintf(str, "EFI_VARIABLE_NON_VOLATILE\n"); - if (var->Attributes & 0x2) + if (var->Attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS) str += sprintf(str, "EFI_VARIABLE_BOOTSERVICE_ACCESS\n"); - if (var->Attributes & 0x4) + if (var->Attributes & EFI_VARIABLE_RUNTIME_ACCESS) str += sprintf(str, "EFI_VARIABLE_RUNTIME_ACCESS\n"); + if (var->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) + str += sprintf(str, "EFI_VARIABLE_HARDWARE_ERROR_RECORD\n"); + if (var->Attributes & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) + str += sprintf(str, + "EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS\n"); + if (var->Attributes & + EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) + str += sprintf(str, + "EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS\n"); + if (var->Attributes & EFI_VARIABLE_APPEND_WRITE) + str += sprintf(str, "EFI_VARIABLE_APPEND_WRITE\n"); return str - buf; } @@ -618,15 +641,440 @@ .default_attrs = def_attrs, }; -static struct pstore_info efi_pstore_info; - static inline void efivar_unregister(struct efivar_entry *var) { kobject_put(&var->kobj); } -#ifdef CONFIG_PSTORE +static int efivarfs_file_open(struct inode *inode, struct file *file) +{ + file->private_data = inode->i_private; + return 0; +} + +static ssize_t efivarfs_file_write(struct file *file, + const char __user *userbuf, size_t count, loff_t *ppos) +{ + struct efivar_entry *var = file->private_data; + struct efivars *efivars; + efi_status_t status; + void *data; + u32 attributes; + struct inode *inode = file->f_mapping->host; + int datasize = count - sizeof(attributes); + unsigned long newdatasize; + + if (count < sizeof(attributes)) + return -EINVAL; + + data = kmalloc(datasize, GFP_KERNEL); + + if (!data) + return -ENOMEM; + + efivars = var->efivars; + + if (copy_from_user(&attributes, userbuf, sizeof(attributes))) { + count = -EFAULT; + goto out; + } + + if (attributes & ~(EFI_VARIABLE_MASK)) { + count = -EINVAL; + goto out; + } + + if (copy_from_user(data, userbuf + sizeof(attributes), datasize)) { + count = -EFAULT; + goto out; + } + + if (validate_var(&var->var, data, datasize) == false) { + count = -EINVAL; + goto out; + } + + /* + * The lock here protects the get_variable call, the conditional + * set_variable call, and removal of the variable from the efivars + * list (in the case of an authenticated delete). + */ + spin_lock(&efivars->lock); + + status = efivars->ops->set_variable(var->var.VariableName, + &var->var.VendorGuid, + attributes, datasize, + data); + + if (status != EFI_SUCCESS) { + spin_unlock(&efivars->lock); + kfree(data); + + switch (status) { + case EFI_INVALID_PARAMETER: + count = -EINVAL; + break; + case EFI_OUT_OF_RESOURCES: + count = -ENOSPC; + break; + case EFI_DEVICE_ERROR: + count = -EIO; + break; + case EFI_WRITE_PROTECTED: + count = -EROFS; + break; + case EFI_SECURITY_VIOLATION: + count = -EACCES; + break; + case EFI_NOT_FOUND: + count = -ENOENT; + break; + default: + count = -EINVAL; + } + return count; + } + + /* + * Writing to the variable may have caused a change in size (which + * could either be an append or an overwrite), or the variable to be + * deleted. Perform a GetVariable() so we can tell what actually + * happened. + */ + newdatasize = 0; + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + NULL, &newdatasize, + NULL); + + if (status == EFI_BUFFER_TOO_SMALL) { + spin_unlock(&efivars->lock); + mutex_lock(&inode->i_mutex); + i_size_write(inode, newdatasize + sizeof(attributes)); + mutex_unlock(&inode->i_mutex); + + } else if (status == EFI_NOT_FOUND) { + list_del(&var->list); + spin_unlock(&efivars->lock); + efivar_unregister(var); + drop_nlink(inode); + dput(file->f_dentry); + + } else { + spin_unlock(&efivars->lock); + pr_warn("efivarfs: inconsistent EFI variable implementation? " + "status = %lx\n", status); + } + +out: + kfree(data); + + return count; +} + +static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, + size_t count, loff_t *ppos) +{ + struct efivar_entry *var = file->private_data; + struct efivars *efivars = var->efivars; + efi_status_t status; + unsigned long datasize = 0; + u32 attributes; + void *data; + ssize_t size = 0; + + spin_lock(&efivars->lock); + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + &attributes, &datasize, NULL); + spin_unlock(&efivars->lock); + + if (status != EFI_BUFFER_TOO_SMALL) + return 0; + + data = kmalloc(datasize + 4, GFP_KERNEL); + + if (!data) + return 0; + + spin_lock(&efivars->lock); + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + &attributes, &datasize, + (data + 4)); + spin_unlock(&efivars->lock); + + if (status != EFI_SUCCESS) + goto out_free; + + memcpy(data, &attributes, 4); + size = simple_read_from_buffer(userbuf, count, ppos, + data, datasize + 4); +out_free: + kfree(data); + + return size; +} + +static void efivarfs_evict_inode(struct inode *inode) +{ + clear_inode(inode); +} + +static const struct super_operations efivarfs_ops = { + .statfs = simple_statfs, + .drop_inode = generic_delete_inode, + .evict_inode = efivarfs_evict_inode, + .show_options = generic_show_options, +}; + +static struct super_block *efivarfs_sb; + +static const struct inode_operations efivarfs_dir_inode_operations; + +static const struct file_operations efivarfs_file_operations = { + .open = efivarfs_file_open, + .read = efivarfs_file_read, + .write = efivarfs_file_write, + .llseek = default_llseek, +}; + +static struct inode *efivarfs_get_inode(struct super_block *sb, + const struct inode *dir, int mode, dev_t dev) +{ + struct inode *inode = new_inode(sb); + + if (inode) { + inode->i_ino = get_next_ino(); + inode->i_uid = inode->i_gid = 0; + inode->i_mode = mode; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + switch (mode & S_IFMT) { + case S_IFREG: + inode->i_fop = &efivarfs_file_operations; + break; + case S_IFDIR: + inode->i_op = &efivarfs_dir_inode_operations; + inode->i_fop = &simple_dir_operations; + inc_nlink(inode); + break; + } + } + return inode; +} + +static void efivarfs_hex_to_guid(const char *str, efi_guid_t *guid) +{ + guid->b[0] = hex_to_bin(str[6]) << 4 | hex_to_bin(str[7]); + guid->b[1] = hex_to_bin(str[4]) << 4 | hex_to_bin(str[5]); + guid->b[2] = hex_to_bin(str[2]) << 4 | hex_to_bin(str[3]); + guid->b[3] = hex_to_bin(str[0]) << 4 | hex_to_bin(str[1]); + guid->b[4] = hex_to_bin(str[11]) << 4 | hex_to_bin(str[12]); + guid->b[5] = hex_to_bin(str[9]) << 4 | hex_to_bin(str[10]); + guid->b[6] = hex_to_bin(str[16]) << 4 | hex_to_bin(str[17]); + guid->b[7] = hex_to_bin(str[14]) << 4 | hex_to_bin(str[15]); + guid->b[8] = hex_to_bin(str[19]) << 4 | hex_to_bin(str[20]); + guid->b[9] = hex_to_bin(str[21]) << 4 | hex_to_bin(str[22]); + guid->b[10] = hex_to_bin(str[24]) << 4 | hex_to_bin(str[25]); + guid->b[11] = hex_to_bin(str[26]) << 4 | hex_to_bin(str[27]); + guid->b[12] = hex_to_bin(str[28]) << 4 | hex_to_bin(str[29]); + guid->b[13] = hex_to_bin(str[30]) << 4 | hex_to_bin(str[31]); + guid->b[14] = hex_to_bin(str[32]) << 4 | hex_to_bin(str[33]); + guid->b[15] = hex_to_bin(str[34]) << 4 | hex_to_bin(str[35]); +} + +static int efivarfs_create(struct inode *dir, struct dentry *dentry, + umode_t mode, struct nameidata *nd) +{ + struct inode *inode; + struct efivars *efivars = &__efivars; + struct efivar_entry *var; + int namelen, i = 0, err = 0; + + if (dentry->d_name.len < 38) + return -EINVAL; + + inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); + if (!inode) + return -ENOSPC; + + var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); + if (!var) { + err = -ENOMEM; + goto out; + } + + namelen = dentry->d_name.len - GUID_LEN; + + efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1, + &var->var.VendorGuid); + + for (i = 0; i < namelen; i++) + var->var.VariableName[i] = dentry->d_name.name[i]; + + var->var.VariableName[i] = '\0'; + + inode->i_private = var; + var->efivars = efivars; + var->kobj.kset = efivars->kset; + + err = kobject_init_and_add(&var->kobj, &efivar_ktype, NULL, "%s", + dentry->d_name.name); + if (err) + goto out; + + kobject_uevent(&var->kobj, KOBJ_ADD); + spin_lock(&efivars->lock); + list_add(&var->list, &efivars->list); + spin_unlock(&efivars->lock); + d_instantiate(dentry, inode); + dget(dentry); +out: + if (err) { + kfree(var); + iput(inode); + } + return err; +} + +static int efivarfs_unlink(struct inode *dir, struct dentry *dentry) +{ + struct efivar_entry *var = dentry->d_inode->i_private; + struct efivars *efivars = var->efivars; + efi_status_t status; + + spin_lock(&efivars->lock); + + status = efivars->ops->set_variable(var->var.VariableName, + &var->var.VendorGuid, + 0, 0, NULL); + + if (status == EFI_SUCCESS || status == EFI_NOT_FOUND) { + list_del(&var->list); + spin_unlock(&efivars->lock); + efivar_unregister(var); + drop_nlink(dir); + dput(dentry); + return 0; + } + + spin_unlock(&efivars->lock); + return -EINVAL; +}; + +int efivarfs_fill_super(struct super_block *sb, void *data, int silent) +{ + struct inode *inode = NULL; + struct dentry *root; + struct efivar_entry *entry, *n; + struct efivars *efivars = &__efivars; + char *name; + + efivarfs_sb = sb; + + sb->s_maxbytes = MAX_LFS_FILESIZE; + sb->s_blocksize = PAGE_CACHE_SIZE; + sb->s_blocksize_bits = PAGE_CACHE_SHIFT; + sb->s_magic = PSTOREFS_MAGIC; + sb->s_op = &efivarfs_ops; + sb->s_time_gran = 1; + + inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); + if (!inode) + return -ENOMEM; + inode->i_op = &efivarfs_dir_inode_operations; + + root = d_make_root(inode); + sb->s_root = root; + if (!root) + return -ENOMEM; + + list_for_each_entry_safe(entry, n, &efivars->list, list) { + struct dentry *dentry, *root = efivarfs_sb->s_root; + unsigned long size = 0; + int len, i; + + inode = NULL; + + len = utf16_strlen(entry->var.VariableName); + + /* GUID plus trailing NULL */ + name = kmalloc(len + 38, GFP_ATOMIC); + if (!name) + goto fail; + + for (i = 0; i < len; i++) + name[i] = entry->var.VariableName[i] & 0xFF; + + name[len] = '-'; + + efi_guid_unparse(&entry->var.VendorGuid, name + len + 1); + + name[len+GUID_LEN] = '\0'; + + inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, + S_IFREG | 0644, 0); + if (!inode) + goto fail_name; + + dentry = d_alloc_name(root, name); + if (!dentry) + goto fail_inode; + + /* copied by the above to local storage in the dentry. */ + kfree(name); + + spin_lock(&efivars->lock); + efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + &entry->var.Attributes, + &size, + NULL); + spin_unlock(&efivars->lock); + + mutex_lock(&inode->i_mutex); + inode->i_private = entry; + i_size_write(inode, size+4); + mutex_unlock(&inode->i_mutex); + d_add(dentry, inode); + } + + return 0; + +fail_inode: + iput(inode); +fail_name: + kfree(name); +fail: + return -ENOMEM; +} + +static struct dentry *efivarfs_mount(struct file_system_type *fs_type, + int flags, const char *dev_name, void *data) +{ + return mount_single(fs_type, flags, data, efivarfs_fill_super); +} + +static void efivarfs_kill_sb(struct super_block *sb) +{ + kill_litter_super(sb); + efivarfs_sb = NULL; +} + +static struct file_system_type efivarfs_type = { + .name = "efivarfs", + .mount = efivarfs_mount, + .kill_sb = efivarfs_kill_sb, +}; + +static const struct inode_operations efivarfs_dir_inode_operations = { + .lookup = simple_lookup, + .unlink = efivarfs_unlink, + .create = efivarfs_create, +}; + +#ifdef CONFIG_EFI_VARS_PSTORE static int efi_pstore_open(struct pstore_info *psi) { @@ -760,37 +1208,6 @@ 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, - 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, size_t size, struct pstore_info *psi) -{ - return 0; -} - -static int efi_pstore_erase(enum pstore_type_id type, u64 id, - struct pstore_info *psi) -{ - return 0; -} -#endif static struct pstore_info efi_pstore_info = { .owner = THIS_MODULE, @@ -802,6 +1219,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) @@ -1114,6 +1549,7 @@ sysfs_remove_bin_file(&efivars->kset->kobj, efivars->del_var); kfree(efivars->new_var); kfree(efivars->del_var); + kobject_put(efivars->kobject); kset_unregister(efivars->kset); } EXPORT_SYMBOL_GPL(unregister_efivars); @@ -1145,6 +1581,13 @@ goto out; } + efivars->kobject = kobject_create_and_add("efivars", parent_kobj); + if (!efivars->kobject) { + pr_err("efivars: Subsystem registration failed.\n"); + error = -ENOMEM; + goto err_unreg_vars; + } + /* * Per EFI spec, the maximum storage allocated for both * the variable name and variable data is 1024 bytes. @@ -1177,15 +1620,13 @@ if (error) unregister_efivars(efivars); - efivars->efi_pstore_info = efi_pstore_info; + if (!efivars_pstore_disable) + efivar_pstore_register(efivars); - 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); - } + register_filesystem(&efivarfs_type); + +err_unreg_vars: + kset_unregister(efivars->kset); out: kfree(variable_name); @@ -1194,9 +1635,6 @@ } EXPORT_SYMBOL_GPL(register_efivars); -static struct efivars __efivars; -static struct efivar_operations ops; - /* * For now we register the efi subsystem with the firmware subsystem * and the vars subsystem with the efi subsystem. In the future, it @@ -1213,7 +1651,7 @@ printk(KERN_INFO "EFI Variables Facility v%s %s\n", EFIVARS_VERSION, EFIVARS_DATE); - if (!efi_enabled) + if (!efi_enabled(EFI_RUNTIME_SERVICES)) return 0; /* For now we'll register the efi directory at /sys/firmware/efi */ @@ -1251,7 +1689,7 @@ static void __exit efivars_exit(void) { - if (efi_enabled) { + if (efi_enabled(EFI_RUNTIME_SERVICES)) { unregister_efivars(&__efivars); kobject_put(efi_kobj); } --- linux-3.5.0.orig/drivers/firmware/dmi_scan.c +++ linux-3.5.0/drivers/firmware/dmi_scan.c @@ -6,6 +6,7 @@ #include #include #include +#include #include /* @@ -15,6 +16,7 @@ */ static char dmi_empty_string[] = " "; +static u16 __initdata dmi_ver; /* * Catch too early calls to dmi_check_system(): */ @@ -111,16 +113,18 @@ dmi_table(buf, dmi_len, dmi_num, decode, NULL); + add_device_randomness(buf, dmi_len); + dmi_iounmap(buf, dmi_len); return 0; } -static int __init dmi_checksum(const u8 *buf) +static int __init dmi_checksum(const u8 *buf, u8 len) { u8 sum = 0; int a; - for (a = 0; a < 15; a++) + for (a = 0; a < len; a++) sum += buf[a]; return sum == 0; @@ -158,8 +162,10 @@ return; for (i = 0; i < 16 && (is_ff || is_00); i++) { - if(d[i] != 0x00) is_ff = 0; - if(d[i] != 0xFF) is_00 = 0; + if (d[i] != 0x00) + is_00 = 0; + if (d[i] != 0xFF) + is_ff = 0; } if (is_ff || is_00) @@ -169,7 +175,15 @@ if (!s) return; - sprintf(s, "%pUB", d); + /* + * As of version 2.6 of the SMBIOS specification, the first 3 fields of + * the UUID are supposed to be little-endian encoded. The specification + * says that this is the defacto standard. + */ + if (dmi_ver >= 0x0206) + sprintf(s, "%pUL", d); + else + sprintf(s, "%pUB", d); dmi_ident[slot] = s; } @@ -401,26 +415,53 @@ u8 buf[15]; memcpy_fromio(buf, p, 15); - if ((memcmp(buf, "_DMI_", 5) == 0) && dmi_checksum(buf)) { + if (dmi_checksum(buf, 15)) { dmi_num = (buf[13] << 8) | buf[12]; dmi_len = (buf[7] << 8) | buf[6]; dmi_base = (buf[11] << 24) | (buf[10] << 16) | (buf[9] << 8) | buf[8]; - /* - * DMI version 0.0 means that the real version is taken from - * the SMBIOS version, which we don't know at this point. - */ - if (buf[14] != 0) - printk(KERN_INFO "DMI %d.%d present.\n", - buf[14] >> 4, buf[14] & 0xF); - else - printk(KERN_INFO "DMI present.\n"); if (dmi_walk_early(dmi_decode) == 0) { + if (dmi_ver) + pr_info("SMBIOS %d.%d present.\n", + dmi_ver >> 8, dmi_ver & 0xFF); + else { + dmi_ver = (buf[14] & 0xF0) << 4 | + (buf[14] & 0x0F); + pr_info("Legacy DMI %d.%d present.\n", + dmi_ver >> 8, dmi_ver & 0xFF); + } dmi_dump_ids(); return 0; } } + dmi_ver = 0; + return 1; +} + +static int __init smbios_present(const char __iomem *p) +{ + u8 buf[32]; + + memcpy_fromio(buf, p, 32); + if ((buf[5] < 32) && dmi_checksum(buf, buf[5])) { + dmi_ver = (buf[6] << 8) + buf[7]; + + /* Some BIOS report weird SMBIOS version, fix that up */ + switch (dmi_ver) { + case 0x021F: + case 0x0221: + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n", + dmi_ver & 0xFF, 3); + dmi_ver = 0x0203; + break; + case 0x0233: + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n", 51, 6); + dmi_ver = 0x0206; + break; + } + return memcmp(p + 16, "_DMI_", 5) || dmi_present(p + 16); + } return 1; } @@ -429,7 +470,7 @@ char __iomem *p, *q; int rc; - if (efi_enabled) { + if (efi_enabled(EFI_CONFIG_TABLES)) { if (efi.smbios == EFI_INVALID_TABLE_ADDR) goto error; @@ -441,7 +482,7 @@ if (p == NULL) goto error; - rc = dmi_present(p + 0x10); /* offset of _DMI_ string */ + rc = smbios_present(p); dmi_iounmap(p, 32); if (!rc) { dmi_available = 1; @@ -459,7 +500,12 @@ goto error; for (q = p; q < p + 0x10000; q += 16) { - rc = dmi_present(q); + if (memcmp(q, "_SM_", 4) == 0 && q - p <= 0xFFE0) + rc = smbios_present(q); + else if (memcmp(q, "_DMI_", 5) == 0) + rc = dmi_present(q); + else + continue; if (!rc) { dmi_available = 1; dmi_iounmap(p, 0x10000); --- linux-3.5.0.orig/drivers/firmware/Kconfig +++ linux-3.5.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-3.5.0.orig/drivers/firmware/iscsi_ibft_find.c +++ linux-3.5.0/drivers/firmware/iscsi_ibft_find.c @@ -99,7 +99,7 @@ /* iBFT 1.03 section 1.4.3.1 mandates that UEFI machines will * only use ACPI for this */ - if (!efi_enabled) + if (!efi_enabled(EFI_BOOT)) find_ibft_in_mem(); if (ibft_addr) { --- linux-3.5.0.orig/drivers/firmware/pcdp.c +++ linux-3.5.0/drivers/firmware/pcdp.c @@ -95,7 +95,7 @@ if (efi.hcdp == EFI_INVALID_TABLE_ADDR) return -ENODEV; - pcdp = ioremap(efi.hcdp, 4096); + pcdp = early_ioremap(efi.hcdp, 4096); printk(KERN_INFO "PCDP: v%d at 0x%lx\n", pcdp->rev, efi.hcdp); if (strstr(cmdline, "console=hcdp")) { @@ -131,6 +131,6 @@ } out: - iounmap(pcdp); + early_iounmap(pcdp, 4096); return rc; } --- linux-3.5.0.orig/drivers/leds/leds-ot200.c +++ linux-3.5.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-3.5.0.orig/drivers/dca/dca-core.c +++ linux-3.5.0/drivers/dca/dca-core.c @@ -420,6 +420,11 @@ raw_spin_lock_irqsave(&dca_lock, flags); + if (list_empty(&dca_domains)) { + raw_spin_unlock_irqrestore(&dca_lock, flags); + return; + } + list_del(&dca->node); pci_rc = dca_pci_rc_from_dev(dev); --- linux-3.5.0.orig/drivers/w1/w1.c +++ linux-3.5.0/drivers/w1/w1.c @@ -928,7 +928,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()) { dev_dbg(&dev->dev, "Abort w1_search\n"); return; } --- linux-3.5.0.orig/drivers/bluetooth/btmrvl_main.c +++ linux-3.5.0/drivers/bluetooth/btmrvl_main.c @@ -496,6 +496,10 @@ add_wait_queue(&thread->wait_q, &wait); set_current_state(TASK_INTERRUPTIBLE); + if (kthread_should_stop()) { + BT_DBG("main_thread: break from main thread"); + break; + } if (adapter->wakeup_tries || ((!adapter->int_count) && @@ -511,11 +515,6 @@ BT_DBG("main_thread woke up"); - if (kthread_should_stop()) { - BT_DBG("main_thread: break from main thread"); - break; - } - spin_lock_irqsave(&priv->driver_lock, flags); if (adapter->int_count) { adapter->int_count = 0; --- linux-3.5.0.orig/drivers/bluetooth/btusb.c +++ linux-3.5.0/drivers/bluetooth/btusb.c @@ -31,6 +31,8 @@ #include #include +#include +#include #include #include @@ -55,11 +57,15 @@ #define BTUSB_BROKEN_ISOC 0x20 #define BTUSB_WRONG_SCO_MTU 0x40 #define BTUSB_ATH3012 0x80 +#define BTUSB_BCM_PATCHRAM 0x100 static struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, + /* Apple-specific (Broadcom) devices */ + { USB_VENDOR_AND_INTERFACE_INFO(0x05ac, 0xff, 0x01, 0x01) }, + /* Broadcom SoftSailing reporting vendor specific */ { USB_DEVICE(0x0a5c, 0x21e1) }, @@ -101,15 +107,23 @@ { USB_DEVICE(0x0c10, 0x0000) }, /* Broadcom BCM20702A0 */ + { USB_DEVICE(0x0b05, 0x17b5) }, + { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x0a5c, 0x21e3) }, - { USB_DEVICE(0x0a5c, 0x21e6) }, - { USB_DEVICE(0x0a5c, 0x21e8) }, - { USB_DEVICE(0x0a5c, 0x21f3) }, - { USB_DEVICE(0x413c, 0x8197) }, + { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM }, + { 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_DEVICE(0x0489, 0xe033) }, + { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, + + /*Broadcom devices with vendor specific id */ + { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, { } /* Terminating entry */ }; @@ -129,24 +143,36 @@ { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE }, { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE }, + { USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE }, /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, /* Atheros 3012 with sflash firmware */ + { USB_DEVICE(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 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe036), .driver_info = BTUSB_ATH3012 }, /* Broadcom BCM2035 */ { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, @@ -208,12 +234,14 @@ #define BTUSB_ISOC_RUNNING 2 #define BTUSB_SUSPENDING 3 #define BTUSB_DID_ISO_RESUME 4 +#define BTUSB_FIRMWARE_DONE 5 struct btusb_data { struct hci_dev *hdev; struct usb_device *udev; struct usb_interface *intf; struct usb_interface *isoc; + const struct usb_device_id *id; spinlock_t lock; @@ -918,6 +946,70 @@ usb_autopm_put_interface(data->intf); } +#define PATCHRAM_TIMEOUT 1000 +#define PATCHRAM_NAME_LEN 20 + +static void btusb_load_firmware(struct hci_dev *hdev) +{ + struct btusb_data *data = hci_get_drvdata(hdev); + struct usb_device *udev = data->udev; + const struct usb_device_id *id = data->id; + size_t pos = 0; + int err = 0; + char filename[PATCHRAM_NAME_LEN]; + const struct firmware *fw; + + unsigned char reset_cmd[] = { 0x03, 0x0c, 0x00 }; + unsigned char download_cmd[] = { 0x2e, 0xfc, 0x00 }; + + if (!(id->driver_info & BTUSB_BCM_PATCHRAM)) + return; + if (test_and_set_bit(BTUSB_FIRMWARE_DONE, &data->flags)) + return; + + snprintf(filename, PATCHRAM_NAME_LEN, "fw-%04x_%04x.hcd", + le16_to_cpu(udev->descriptor.idVendor), + le16_to_cpu(udev->descriptor.idProduct)); + if (request_firmware(&fw, (const char *) filename, &udev->dev) < 0) { + BT_INFO("can't load firmware, may not work correctly"); + return; + } + + if (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + reset_cmd, sizeof(reset_cmd), PATCHRAM_TIMEOUT) < 0) { + err = -1; + goto out; + } + msleep(300); + + if (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + download_cmd, sizeof(download_cmd), PATCHRAM_TIMEOUT) < 0) { + err = -1; + goto out; + } + msleep(300); + + while (pos < fw->size) { + size_t len; + len = fw->data[pos + 2] + 3; + if ((pos + len > fw->size) || + (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, + USB_TYPE_CLASS, 0, 0, (void *)fw->data + pos, len, + PATCHRAM_TIMEOUT) < 0)) { + err = -1; + goto out; + } + pos += len; + } + + err = (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + reset_cmd, sizeof(reset_cmd), PATCHRAM_TIMEOUT) < 0); +out: + if (err) + BT_INFO("fail to load firmware, may not work correctly"); + release_firmware(fw); +} + static int btusb_probe(struct usb_interface *intf, const struct usb_device_id *id) { @@ -1005,6 +1097,8 @@ init_usb_anchor(&data->isoc_anchor); init_usb_anchor(&data->deferred); + data->id = id; + hdev = hci_alloc_dev(); if (!hdev) { kfree(data); @@ -1023,6 +1117,7 @@ hdev->flush = btusb_flush; hdev->send = btusb_send_frame; hdev->notify = btusb_notify; + hdev->load_firmware = btusb_load_firmware; /* Interface numbers are hardcoded in the specification */ data->isoc = usb_ifnum_to_if(data->udev, 1); --- linux-3.5.0.orig/drivers/bluetooth/ath3k.c +++ linux-3.5.0/drivers/bluetooth/ath3k.c @@ -67,24 +67,36 @@ { USB_DEVICE(0x13d3, 0x3304) }, { USB_DEVICE(0x0930, 0x0215) }, { USB_DEVICE(0x0489, 0xE03D) }, + { USB_DEVICE(0x0489, 0xE027) }, /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03F0, 0x311D) }, /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(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) }, { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0930, 0x0219) }, + { USB_DEVICE(0x0489, 0xe057) }, + { USB_DEVICE(0x13d3, 0x3393) }, + { USB_DEVICE(0x0489, 0xe04e) }, + { USB_DEVICE(0x0489, 0xe056) }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xE02C) }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C) }, + { USB_DEVICE(0x0489, 0xE036) }, { } /* Terminating entry */ }; @@ -97,16 +109,27 @@ 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 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xE036), .driver_info = BTUSB_ATH3012 }, { } /* Terminating entry */ }; --- linux-3.5.0.orig/drivers/spi/spi-mpc512x-psc.c +++ linux-3.5.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-3.5.0.orig/drivers/spi/spi-pl022.c +++ linux-3.5.0/drivers/spi/spi-pl022.c @@ -489,6 +489,11 @@ pl022->cur_transfer = NULL; pl022->cur_chip = NULL; spi_finalize_current_message(pl022->master); + + /* disable the SPI/SSP operation */ + writew((readw(SSP_CR1(pl022->virtbase)) & + (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase)); + } /** --- linux-3.5.0.orig/drivers/spi/spi-s3c64xx.c +++ linux-3.5.0/drivers/spi/spi-s3c64xx.c @@ -889,25 +889,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; } @@ -931,9 +936,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-3.5.0.orig/drivers/mmc/host/sdhci-s3c.c +++ linux-3.5.0/drivers/mmc/host/sdhci-s3c.c @@ -656,7 +656,7 @@ pm_runtime_disable(&pdev->dev); - for (ptr = 0; ptr < 3; ptr++) { + for (ptr = 0; ptr < MAX_BUS_CLK; ptr++) { if (sc->clk_bus[ptr]) { clk_disable(sc->clk_bus[ptr]); clk_put(sc->clk_bus[ptr]); --- linux-3.5.0.orig/drivers/mmc/host/sdhci-esdhc-imx.c +++ linux-3.5.0/drivers/mmc/host/sdhci-esdhc-imx.c @@ -237,15 +237,18 @@ static u16 esdhc_readw_le(struct sdhci_host *host, int reg) { + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = pltfm_host->priv; + if (unlikely(reg == SDHCI_HOST_VERSION)) { - u16 val = readw(host->ioaddr + (reg ^ 2)); - /* - * uSDHC supports SDHCI v3.0, but it's encoded as value - * 0x3 in host controller version register, which violates - * SDHCI_SPEC_300 definition. Work it around here. - */ - if ((val & SDHCI_SPEC_VER_MASK) == 3) - return --val; + reg ^= 2; + if (is_imx6q_usdhc(imx_data)) { + /* + * The usdhc register returns a wrong host version. + * Correct it here. + */ + return SDHCI_SPEC_300; + } } return readw(host->ioaddr + reg); --- linux-3.5.0.orig/drivers/mmc/host/omap_hsmmc.c +++ linux-3.5.0/drivers/mmc/host/omap_hsmmc.c @@ -1850,7 +1850,7 @@ host->slot_id = 0; host->mapbase = res->start + pdata->reg_offset; host->base = ioremap(host->mapbase, SZ_4K); - host->power_mode = MMC_POWER_OFF; + host->power_mode = -1; host->next_data.cookie = 1; platform_set_drvdata(pdev, host); @@ -2102,8 +2102,7 @@ if (ret) { host->suspended = 0; if (host->pdata->resume) { - ret = host->pdata->resume(dev, host->slot_id); - if (ret) + if (host->pdata->resume(dev, host->slot_id)) dev_dbg(dev, "Unmask interrupt failed\n"); } goto err; --- linux-3.5.0.orig/drivers/mmc/host/sdhci-esdhc.h +++ linux-3.5.0/drivers/mmc/host/sdhci-esdhc.h @@ -48,14 +48,14 @@ int div = 1; u32 temp; + if (clock == 0) + goto out; + temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL); temp &= ~(ESDHC_CLOCK_IPGEN | ESDHC_CLOCK_HCKEN | ESDHC_CLOCK_PEREN | ESDHC_CLOCK_MASK); sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); - if (clock == 0) - goto out; - while (host->max_clk / pre_div / 16 > clock && pre_div < 256) pre_div *= 2; --- linux-3.5.0.orig/drivers/mmc/host/sh_mmcif.c +++ linux-3.5.0/drivers/mmc/host/sh_mmcif.c @@ -1066,7 +1066,6 @@ { struct sh_mmcif_host *host = dev_id; struct mmc_request *mrq = host->mrq; - struct mmc_data *data = mrq->data; cancel_delayed_work_sync(&host->timeout_work); @@ -1114,13 +1113,14 @@ case MMCIF_WAIT_FOR_READ_END: case MMCIF_WAIT_FOR_WRITE_END: if (host->sd_error) - data->error = sh_mmcif_error_manage(host); + mrq->data->error = sh_mmcif_error_manage(host); break; default: BUG(); } if (host->wait_for != MMCIF_WAIT_FOR_STOP) { + struct mmc_data *data = mrq->data; if (!mrq->cmd->error && data && !data->error) data->bytes_xfered = data->blocks * data->blksz; --- linux-3.5.0.orig/drivers/mmc/host/sdhci-pci.c +++ linux-3.5.0/drivers/mmc/host/sdhci-pci.c @@ -157,6 +157,7 @@ static const struct sdhci_pci_fixes sdhci_cafe = { .quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER | SDHCI_QUIRK_NO_BUSY_IRQ | + SDHCI_QUIRK_BROKEN_CARD_DETECTION | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL, }; --- linux-3.5.0.orig/drivers/mmc/host/Makefile +++ linux-3.5.0/drivers/mmc/host/Makefile @@ -45,6 +45,8 @@ obj-$(CONFIG_MMC_VUB300) += vub300.o obj-$(CONFIG_MMC_USHC) += ushc.o +obj-$(CONFIG_MMC_REALTEK_PCI) += rtsx_pci_sdmmc.o + obj-$(CONFIG_MMC_SDHCI_PLTFM) += sdhci-pltfm.o obj-$(CONFIG_MMC_SDHCI_CNS3XXX) += sdhci-cns3xxx.o obj-$(CONFIG_MMC_SDHCI_ESDHC_IMX) += sdhci-esdhc-imx.o --- linux-3.5.0.orig/drivers/mmc/host/Kconfig +++ linux-3.5.0/drivers/mmc/host/Kconfig @@ -300,16 +300,6 @@ endchoice -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 @@ -612,3 +602,10 @@ Note: These controllers only support SDIO cards and do not support MMC or SD memory cards. + +config MMC_REALTEK_PCI + tristate "Realtek PCI-E SD/MMC Card Interface Driver" + depends on MFD_RTSX_PCI + help + Say Y here to include driver code to support SD/MMC card interface + of Realtek PCI-E card reader --- linux-3.5.0.orig/drivers/mmc/host/atmel-mci.c +++ linux-3.5.0/drivers/mmc/host/atmel-mci.c @@ -81,6 +81,7 @@ bool has_bad_data_ordering; bool need_reset_after_xfer; bool need_blksz_mul_4; + bool need_notbusy_for_read_ops; }; struct atmel_mci_dma { @@ -174,6 +175,7 @@ void __iomem *regs; struct scatterlist *sg; + unsigned int sg_len; unsigned int pio_offset; unsigned int *buffer; unsigned int buf_size; @@ -818,6 +820,7 @@ data->error = -EINPROGRESS; host->sg = data->sg; + host->sg_len = data->sg_len; host->data = data; host->data_chan = NULL; @@ -1619,7 +1622,8 @@ __func__); atmci_set_completed(host, EVENT_XFER_COMPLETE); - if (host->data->flags & MMC_DATA_WRITE) { + if (host->caps.need_notbusy_for_read_ops || + (host->data->flags & MMC_DATA_WRITE)) { atmci_writel(host, ATMCI_IER, ATMCI_NOTBUSY); state = STATE_WAITING_NOTBUSY; } else if (host->mrq->stop) { @@ -1749,7 +1753,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; @@ -1762,7 +1767,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; @@ -1813,7 +1819,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; @@ -1827,7 +1834,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; } @@ -2212,6 +2220,7 @@ host->caps.has_bad_data_ordering = 1; host->caps.need_reset_after_xfer = 1; host->caps.need_blksz_mul_4 = 1; + host->caps.need_notbusy_for_read_ops = 0; /* keep only major version number */ switch (version & 0xf00) { @@ -2232,6 +2241,7 @@ case 0x200: host->caps.has_rwproof = 1; host->caps.need_blksz_mul_4 = 0; + host->caps.need_notbusy_for_read_ops = 1; case 0x100: host->caps.has_bad_data_ordering = 0; host->caps.need_reset_after_xfer = 0; @@ -2397,10 +2407,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-3.5.0.orig/drivers/mmc/host/sdhci.c +++ linux-3.5.0/drivers/mmc/host/sdhci.c @@ -27,6 +27,7 @@ #include #include +#include #include "sdhci.h" @@ -1245,6 +1246,7 @@ struct sdhci_host *host; bool present; unsigned long flags; + u32 tuning_opcode; host = mmc_priv(mmc); @@ -1292,12 +1294,19 @@ */ if ((host->flags & SDHCI_NEEDS_RETUNING) && !(present_state & (SDHCI_DOING_WRITE | SDHCI_DOING_READ))) { - spin_unlock_irqrestore(&host->lock, flags); - sdhci_execute_tuning(mmc, mrq->cmd->opcode); - spin_lock_irqsave(&host->lock, flags); + if (mmc->card) { + /* eMMC uses cmd21 but sd and sdio use cmd19 */ + tuning_opcode = + mmc->card->type == MMC_TYPE_MMC ? + MMC_SEND_TUNING_BLOCK_HS200 : + MMC_SEND_TUNING_BLOCK; + spin_unlock_irqrestore(&host->lock, flags); + sdhci_execute_tuning(mmc, tuning_opcode); + spin_lock_irqsave(&host->lock, flags); - /* Restore original mmc_request structure */ - host->mrq = mrq; + /* Restore original mmc_request structure */ + host->mrq = mrq; + } } if (mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23)) --- linux-3.5.0.orig/drivers/mmc/host/rtsx_pci_sdmmc.c +++ linux-3.5.0/drivers/mmc/host/rtsx_pci_sdmmc.c @@ -0,0 +1,1339 @@ +/* Realtek PCI-Express SD/MMC Card Interface driver + * + * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + * + * Author: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* SD Tuning Data Structure + * Record continuous timing phase path + */ +struct timing_phase_path { + int start; + int end; + int mid; + int len; +}; + +struct realtek_pci_sdmmc { + struct platform_device *pdev; + struct rtsx_pcr *pcr; + struct mmc_host *mmc; + struct mmc_request *mrq; + + struct mutex host_mutex; + + u8 ssc_depth; + unsigned int clock; + bool vpclk; + bool double_clk; + bool eject; + bool initial_mode; + bool ddr_mode; +}; + +static inline struct device *sdmmc_dev(struct realtek_pci_sdmmc *host) +{ + return &(host->pdev->dev); +} + +static inline void sd_clear_error(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, CARD_STOP, + SD_STOP | SD_CLR_ERR, SD_STOP | SD_CLR_ERR); +} + +#ifdef DEBUG +static void sd_print_debug_regs(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + u16 i; + u8 *ptr; + + /* Print SD host internal registers */ + rtsx_pci_init_cmd(pcr); + for (i = 0xFDA0; i <= 0xFDAE; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + for (i = 0xFD52; i <= 0xFD69; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + rtsx_pci_send_cmd(pcr, 100); + + ptr = rtsx_pci_get_cmd_data(pcr); + for (i = 0xFDA0; i <= 0xFDAE; i++) + dev_dbg(sdmmc_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); + for (i = 0xFD52; i <= 0xFD69; i++) + dev_dbg(sdmmc_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); +} +#else +#define sd_print_debug_regs(host) +#endif /* DEBUG */ + +static int sd_read_data(struct realtek_pci_sdmmc *host, u8 *cmd, u16 byte_cnt, + u8 *buf, int buf_len, int timeout) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 trans_mode; + + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD%d\n", __func__, cmd[0] - 0x40); + + if (!buf) + buf_len = 0; + + if ((cmd[0] & 0x3F) == MMC_SEND_TUNING_BLOCK) + trans_mode = SD_TM_AUTO_TUNING; + else + trans_mode = SD_TM_NORMAL_READ; + + rtsx_pci_init_cmd(pcr); + + for (i = 0; i < 5; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD0 + i, 0xFF, cmd[i]); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, (u8)byte_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, + 0xFF, (u8)(byte_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, 0xFF, 1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, 0xFF, 0); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, + SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_6); + if (trans_mode != SD_TM_AUTO_TUNING) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + CARD_DATA_SOURCE, 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, + 0xFF, trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd fail (err = %d)\n", err); + return err; + } + + if (buf && buf_len) { + err = rtsx_pci_read_ppbuf(pcr, buf, buf_len); + if (err < 0) { + dev_dbg(sdmmc_dev(host), + "rtsx_pci_read_ppbuf fail (err = %d)\n", err); + return err; + } + } + + return 0; +} + +static int sd_write_data(struct realtek_pci_sdmmc *host, u8 *cmd, u16 byte_cnt, + u8 *buf, int buf_len, int timeout) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 trans_mode; + + if (!buf) + buf_len = 0; + + if (buf && buf_len) { + err = rtsx_pci_write_ppbuf(pcr, buf, buf_len); + if (err < 0) { + dev_dbg(sdmmc_dev(host), + "rtsx_pci_write_ppbuf fail (err = %d)\n", err); + return err; + } + } + + trans_mode = cmd ? SD_TM_AUTO_WRITE_2 : SD_TM_AUTO_WRITE_3; + rtsx_pci_init_cmd(pcr); + + if (cmd) { + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d\n", __func__, + cmd[0] - 0x40); + + for (i = 0; i < 5; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_CMD0 + i, 0xFF, cmd[i]); + } + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, (u8)byte_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, + 0xFF, (u8)(byte_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, 0xFF, 1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, 0xFF, 0); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, + SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_6); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, + trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd fail (err = %d)\n", err); + return err; + } + + return 0; +} + +static void sd_send_cmd_get_rsp(struct realtek_pci_sdmmc *host, + struct mmc_command *cmd) +{ + struct rtsx_pcr *pcr = host->pcr; + u8 cmd_idx = (u8)cmd->opcode; + u32 arg = cmd->arg; + int err = 0; + int timeout = 100; + int i; + u8 *ptr; + int stat_idx = 0; + u8 rsp_type; + int rsp_len = 5; + + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", + __func__, cmd_idx, arg); + + /* Response type: + * R0 + * R1, R5, R6, R7 + * R1b + * R2 + * R3, R4 + */ + switch (mmc_resp_type(cmd)) { + case MMC_RSP_NONE: + rsp_type = SD_RSP_TYPE_R0; + rsp_len = 0; + break; + case MMC_RSP_R1: + rsp_type = SD_RSP_TYPE_R1; + break; + case MMC_RSP_R1B: + rsp_type = SD_RSP_TYPE_R1b; + break; + case MMC_RSP_R2: + rsp_type = SD_RSP_TYPE_R2; + rsp_len = 16; + break; + case MMC_RSP_R3: + rsp_type = SD_RSP_TYPE_R3; + break; + default: + dev_dbg(sdmmc_dev(host), "cmd->flag is not valid\n"); + err = -EINVAL; + goto out; + } + + if (rsp_type == SD_RSP_TYPE_R1b) + timeout = 3000; + + if (cmd->opcode == SD_SWITCH_VOLTAGE) { + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + 0xFF, SD_CLK_TOGGLE_EN); + if (err < 0) + goto out; + } + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD0, 0xFF, 0x40 | cmd_idx); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD1, 0xFF, (u8)(arg >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD2, 0xFF, (u8)(arg >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD3, 0xFF, (u8)(arg >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD4, 0xFF, (u8)arg); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, rsp_type); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, + 0xFF, SD_TM_CMD_RSP | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END | SD_STAT_IDLE, + SD_TRANSFER_END | SD_STAT_IDLE); + + if (rsp_type == SD_RSP_TYPE_R2) { + /* Read data from ping-pong buffer */ + for (i = PPBUF_BASE2; i < PPBUF_BASE2 + 16; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); + stat_idx = 16; + } else if (rsp_type != SD_RSP_TYPE_R0) { + /* Read data from SD_CMDx registers */ + for (i = SD_CMD0; i <= SD_CMD4; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); + stat_idx = 5; + } + + rtsx_pci_add_cmd(pcr, READ_REG_CMD, SD_STAT1, 0, 0); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + sd_clear_error(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd error (err = %d)\n", err); + goto out; + } + + if (rsp_type == SD_RSP_TYPE_R0) { + err = 0; + goto out; + } + + /* Eliminate returned value of CHECK_REG_CMD */ + ptr = rtsx_pci_get_cmd_data(pcr) + 1; + + /* Check (Start,Transmission) bit of Response */ + if ((ptr[0] & 0xC0) != 0) { + err = -EILSEQ; + dev_dbg(sdmmc_dev(host), "Invalid response bit\n"); + goto out; + } + + /* Check CRC7 */ + if (!(rsp_type & SD_NO_CHECK_CRC7)) { + if (ptr[stat_idx] & SD_CRC7_ERR) { + err = -EILSEQ; + dev_dbg(sdmmc_dev(host), "CRC7 error\n"); + goto out; + } + } + + if (rsp_type == SD_RSP_TYPE_R2) { + for (i = 0; i < 4; i++) { + cmd->resp[i] = get_unaligned_be32(ptr + 1 + i * 4); + dev_dbg(sdmmc_dev(host), "cmd->resp[%d] = 0x%08x\n", + i, cmd->resp[i]); + } + } else { + cmd->resp[0] = get_unaligned_be32(ptr + 1); + dev_dbg(sdmmc_dev(host), "cmd->resp[0] = 0x%08x\n", + cmd->resp[0]); + } + +out: + cmd->error = err; +} + +static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq) +{ + struct rtsx_pcr *pcr = host->pcr; + struct mmc_host *mmc = host->mmc; + struct mmc_card *card = mmc->card; + struct mmc_data *data = mrq->data; + int uhs = mmc_sd_card_uhs(card); + int read = (data->flags & MMC_DATA_READ) ? 1 : 0; + u8 cfg2, trans_mode; + int err; + size_t data_len = data->blksz * data->blocks; + + if (read) { + cfg2 = SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_0; + trans_mode = SD_TM_AUTO_READ_3; + } else { + cfg2 = SD_NO_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_NO_CHECK_CRC7 | SD_RSP_LEN_0; + trans_mode = SD_TM_AUTO_WRITE_3; + } + + if (!uhs) + cfg2 |= SD_NO_CHECK_WAIT_CRC_TO; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, 0xFF, 0x02); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, + 0xFF, (u8)data->blocks); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, + 0xFF, (u8)(data->blocks >> 8)); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + DMA_DONE_INT, DMA_DONE_INT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, + 0xFF, (u8)(data_len >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, + 0xFF, (u8)(data_len >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, + 0xFF, (u8)(data_len >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)data_len); + if (read) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, + DMA_DIR_FROM_CARD | DMA_EN | DMA_512); + } else { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, + DMA_DIR_TO_CARD | DMA_EN | DMA_512); + } + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, RING_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, cfg2); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, + trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + rtsx_pci_send_cmd_no_wait(pcr); + + err = rtsx_pci_transfer_data(pcr, data->sg, data->sg_len, read, 10000); + if (err < 0) { + sd_clear_error(host); + return err; + } + + return 0; +} + +static inline void sd_enable_initial_mode(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, SD_CLK_DIVIDE_128); +} + +static inline void sd_disable_initial_mode(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, SD_CLK_DIVIDE_0); +} + +static void sd_normal_rw(struct realtek_pci_sdmmc *host, + struct mmc_request *mrq) +{ + struct mmc_command *cmd = mrq->cmd; + struct mmc_data *data = mrq->data; + u8 _cmd[5], *buf; + + _cmd[0] = 0x40 | (u8)cmd->opcode; + put_unaligned_be32(cmd->arg, (u32 *)(&_cmd[1])); + + buf = kzalloc(data->blksz, GFP_NOIO); + if (!buf) { + cmd->error = -ENOMEM; + return; + } + + if (data->flags & MMC_DATA_READ) { + if (host->initial_mode) + sd_disable_initial_mode(host); + + cmd->error = sd_read_data(host, _cmd, (u16)data->blksz, buf, + data->blksz, 200); + + if (host->initial_mode) + sd_enable_initial_mode(host); + + sg_copy_from_buffer(data->sg, data->sg_len, buf, data->blksz); + } else { + sg_copy_to_buffer(data->sg, data->sg_len, buf, data->blksz); + + cmd->error = sd_write_data(host, _cmd, (u16)data->blksz, buf, + data->blksz, 200); + } + + kfree(buf); +} + +static int sd_change_phase(struct realtek_pci_sdmmc *host, u8 sample_point) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + dev_dbg(sdmmc_dev(host), "%s: sample_point = %d\n", + __func__, sample_point); + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, CHANGE_CLK); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPRX_CTL, 0x1F, sample_point); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, PHASE_NOT_RESET, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, PHASE_NOT_RESET); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, SD_ASYNC_FIFO_NOT_RST, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static u8 sd_search_final_phase(struct realtek_pci_sdmmc *host, u32 phase_map) +{ + struct timing_phase_path path[MAX_PHASE + 1]; + int i, j, cont_path_cnt; + int new_block, max_len, final_path_idx; + u8 final_phase = 0xFF; + + /* Parse phase_map, take it as a bit-ring */ + cont_path_cnt = 0; + new_block = 1; + j = 0; + for (i = 0; i < MAX_PHASE + 1; i++) { + if (phase_map & (1 << i)) { + if (new_block) { + new_block = 0; + j = cont_path_cnt++; + path[j].start = i; + path[j].end = i; + } else { + path[j].end = i; + } + } else { + new_block = 1; + if (cont_path_cnt) { + /* Calculate path length and middle point */ + int idx = cont_path_cnt - 1; + path[idx].len = + path[idx].end - path[idx].start + 1; + path[idx].mid = + path[idx].start + path[idx].len / 2; + } + } + } + + if (cont_path_cnt == 0) { + dev_dbg(sdmmc_dev(host), "No continuous phase path\n"); + goto finish; + } else { + /* Calculate last continuous path length and middle point */ + int idx = cont_path_cnt - 1; + path[idx].len = path[idx].end - path[idx].start + 1; + path[idx].mid = path[idx].start + path[idx].len / 2; + } + + /* Connect the first and last continuous paths if they are adjacent */ + if (!path[0].start && (path[cont_path_cnt - 1].end == MAX_PHASE)) { + /* Using negative index */ + path[0].start = path[cont_path_cnt - 1].start - MAX_PHASE - 1; + path[0].len += path[cont_path_cnt - 1].len; + path[0].mid = path[0].start + path[0].len / 2; + /* Convert negative middle point index to positive one */ + if (path[0].mid < 0) + path[0].mid += MAX_PHASE + 1; + cont_path_cnt--; + } + + /* Choose the longest continuous phase path */ + max_len = 0; + final_phase = 0; + final_path_idx = 0; + for (i = 0; i < cont_path_cnt; i++) { + if (path[i].len > max_len) { + max_len = path[i].len; + final_phase = (u8)path[i].mid; + final_path_idx = i; + } + + dev_dbg(sdmmc_dev(host), "path[%d].start = %d\n", + i, path[i].start); + dev_dbg(sdmmc_dev(host), "path[%d].end = %d\n", + i, path[i].end); + dev_dbg(sdmmc_dev(host), "path[%d].len = %d\n", + i, path[i].len); + dev_dbg(sdmmc_dev(host), "path[%d].mid = %d\n", + i, path[i].mid); + } + +finish: + dev_dbg(sdmmc_dev(host), "Final chosen phase: %d\n", final_phase); + return final_phase; +} + +static void sd_wait_data_idle(struct realtek_pci_sdmmc *host) +{ + int err, i; + u8 val = 0; + + for (i = 0; i < 100; i++) { + err = rtsx_pci_read_register(host->pcr, SD_DATA_STATE, &val); + if (val & SD_DATA_IDLE) + return; + + udelay(100); + } +} + +static int sd_tuning_rx_cmd(struct realtek_pci_sdmmc *host, + u8 opcode, u8 sample_point) +{ + int err; + u8 cmd[5] = {0}; + + err = sd_change_phase(host, sample_point); + if (err < 0) + return err; + + cmd[0] = 0x40 | opcode; + err = sd_read_data(host, cmd, 0x40, NULL, 0, 100); + if (err < 0) { + /* Wait till SD DATA IDLE */ + sd_wait_data_idle(host); + sd_clear_error(host); + return err; + } + + return 0; +} + +static int sd_tuning_phase(struct realtek_pci_sdmmc *host, + u8 opcode, u32 *phase_map) +{ + int err, i; + u32 raw_phase_map = 0; + + for (i = MAX_PHASE; i >= 0; i--) { + err = sd_tuning_rx_cmd(host, opcode, (u8)i); + if (err == 0) + raw_phase_map |= 1 << i; + } + + if (phase_map) + *phase_map = raw_phase_map; + + return 0; +} + +static int sd_tuning_rx(struct realtek_pci_sdmmc *host, u8 opcode) +{ + int err, i; + u32 raw_phase_map[RX_TUNING_CNT] = {0}, phase_map; + u8 final_phase; + + for (i = 0; i < RX_TUNING_CNT; i++) { + err = sd_tuning_phase(host, opcode, &(raw_phase_map[i])); + if (err < 0) + return err; + + if (raw_phase_map[i] == 0) + break; + } + + phase_map = 0xFFFFFFFF; + for (i = 0; i < RX_TUNING_CNT; i++) { + dev_dbg(sdmmc_dev(host), "RX raw_phase_map[%d] = 0x%08x\n", + i, raw_phase_map[i]); + phase_map &= raw_phase_map[i]; + } + dev_dbg(sdmmc_dev(host), "RX phase_map = 0x%08x\n", phase_map); + + if (phase_map) { + final_phase = sd_search_final_phase(host, phase_map); + if (final_phase == 0xFF) + return -EINVAL; + + err = sd_change_phase(host, final_phase); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static void sdmmc_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + struct mmc_command *cmd = mrq->cmd; + struct mmc_data *data = mrq->data; + unsigned int data_size = 0; + int err; + + if (host->eject) { + cmd->error = -ENOMEDIUM; + goto finish; + } + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) { + cmd->error = err; + goto finish; + } + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + rtsx_pci_switch_clock(pcr, host->clock, host->ssc_depth, + host->initial_mode, host->double_clk, host->vpclk); + rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, SD_MOD_SEL); + rtsx_pci_write_register(pcr, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_SD); + + mutex_lock(&host->host_mutex); + host->mrq = mrq; + mutex_unlock(&host->host_mutex); + + if (mrq->data) + data_size = data->blocks * data->blksz; + + if (!data_size || mmc_op_multi(cmd->opcode) || + (cmd->opcode == MMC_READ_SINGLE_BLOCK) || + (cmd->opcode == MMC_WRITE_BLOCK)) { + sd_send_cmd_get_rsp(host, cmd); + + if (!cmd->error && data_size) { + sd_rw_multi(host, mrq); + + if (mmc_op_multi(cmd->opcode) && mrq->stop) + sd_send_cmd_get_rsp(host, mrq->stop); + } + } else { + sd_normal_rw(host, mrq); + } + + if (mrq->data) { + if (cmd->error || data->error) + data->bytes_xfered = 0; + else + data->bytes_xfered = data->blocks * data->blksz; + } + + mutex_unlock(&pcr->pcr_mutex); + +finish: + if (cmd->error) + dev_dbg(sdmmc_dev(host), "cmd->error = %d\n", cmd->error); + + mutex_lock(&host->host_mutex); + host->mrq = NULL; + mutex_unlock(&host->host_mutex); + + mmc_request_done(mmc, mrq); +} + +static int sd_set_bus_width(struct realtek_pci_sdmmc *host, + unsigned char bus_width) +{ + int err = 0; + u8 width[] = { + [MMC_BUS_WIDTH_1] = SD_BUS_WIDTH_1BIT, + [MMC_BUS_WIDTH_4] = SD_BUS_WIDTH_4BIT, + [MMC_BUS_WIDTH_8] = SD_BUS_WIDTH_8BIT, + }; + + if (bus_width <= MMC_BUS_WIDTH_8) + err = rtsx_pci_write_register(host->pcr, SD_CFG1, + 0x03, width[bus_width]); + + return err; +} + +static int sd_power_on(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, SD_MOD_SEL); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_SD); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, + SD_CLK_EN, SD_CLK_EN); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_pull_ctl_enable(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + err = rtsx_pci_card_power_on(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + err = rtsx_pci_write_register(pcr, CARD_OE, SD_OUTPUT_EN, SD_OUTPUT_EN); + if (err < 0) + return err; + + return 0; +} + +static int sd_power_off(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, SD_CLK_EN, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_OE, SD_OUTPUT_EN, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_power_off(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + return rtsx_pci_card_pull_ctl_disable(pcr, RTSX_SD_CARD); +} + +static int sd_set_power_mode(struct realtek_pci_sdmmc *host, + unsigned char power_mode) +{ + int err; + + if (power_mode == MMC_POWER_OFF) + err = sd_power_off(host); + else + err = sd_power_on(host); + + return err; +} + +static int sd_set_timing(struct realtek_pci_sdmmc *host, + unsigned char timing, bool *ddr_mode) +{ + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + + *ddr_mode = false; + + rtsx_pci_init_cmd(pcr); + + switch (timing) { + case MMC_TIMING_UHS_SDR104: + case MMC_TIMING_UHS_SDR50: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C | SD_ASYNC_FIFO_NOT_RST, + SD_30_MODE | SD_ASYNC_FIFO_NOT_RST); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_VAR_CLK0 | SD30_FIX_CLK | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + break; + + case MMC_TIMING_UHS_DDR50: + *ddr_mode = true; + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C | SD_ASYNC_FIFO_NOT_RST, + SD_DDR_MODE | SD_ASYNC_FIFO_NOT_RST); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_VAR_CLK0 | SD30_FIX_CLK | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, + DDR_VAR_TX_CMD_DAT, DDR_VAR_TX_CMD_DAT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + DDR_VAR_RX_DAT | DDR_VAR_RX_CMD, + DDR_VAR_RX_DAT | DDR_VAR_RX_CMD); + break; + + case MMC_TIMING_MMC_HS: + case MMC_TIMING_SD_HS: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C, SD_20_MODE); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_FIX_CLK | SD30_VAR_CLK0 | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, + SD20_TX_SEL_MASK, SD20_TX_14_AHEAD); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + SD20_RX_SEL_MASK, SD20_RX_14_DELAY); + break; + + default: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_CFG1, 0x0C, SD_20_MODE); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_FIX_CLK | SD30_VAR_CLK0 | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_PUSH_POINT_CTL, 0xFF, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + SD20_RX_SEL_MASK, SD20_RX_POS_EDGE); + break; + } + + err = rtsx_pci_send_cmd(pcr, 100); + + return err; +} + +static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + + if (host->eject) + return; + + if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD)) + return; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + sd_set_bus_width(host, ios->bus_width); + sd_set_power_mode(host, ios->power_mode); + sd_set_timing(host, ios->timing, &host->ddr_mode); + + host->vpclk = false; + host->double_clk = true; + + switch (ios->timing) { + case MMC_TIMING_UHS_SDR104: + case MMC_TIMING_UHS_SDR50: + host->ssc_depth = RTSX_SSC_DEPTH_2M; + host->vpclk = true; + host->double_clk = false; + break; + case MMC_TIMING_UHS_DDR50: + case MMC_TIMING_UHS_SDR25: + host->ssc_depth = RTSX_SSC_DEPTH_1M; + break; + default: + host->ssc_depth = RTSX_SSC_DEPTH_500K; + break; + } + + host->initial_mode = (ios->clock <= 1000000) ? true : false; + + host->clock = ios->clock; + rtsx_pci_switch_clock(pcr, ios->clock, host->ssc_depth, + host->initial_mode, host->double_clk, host->vpclk); + + mutex_unlock(&pcr->pcr_mutex); +} + +static int sdmmc_get_ro(struct mmc_host *mmc) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int ro = 0; + u32 val; + + if (host->eject) + return -ENOMEDIUM; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + /* Check SD mechanical write-protect switch */ + val = rtsx_pci_readl(pcr, RTSX_BIPR); + dev_dbg(sdmmc_dev(host), "%s: RTSX_BIPR = 0x%08x\n", __func__, val); + if (val & SD_WRITE_PROTECT) + ro = 1; + + mutex_unlock(&pcr->pcr_mutex); + + return ro; +} + +static int sdmmc_get_cd(struct mmc_host *mmc) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int cd = 0; + u32 val; + + if (host->eject) + return -ENOMEDIUM; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + /* Check SD card detect */ + val = rtsx_pci_card_exist(pcr); + dev_dbg(sdmmc_dev(host), "%s: RTSX_BIPR = 0x%08x\n", __func__, val); + if (val & SD_EXIST) + cd = 1; + + mutex_unlock(&pcr->pcr_mutex); + + return cd; +} + +static int sd_wait_voltage_stable_1(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + u8 stat; + + /* Reference to Signal Voltage Switch Sequence in SD spec. + * Wait for a period of time so that the card can drive SD_CMD and + * SD_DAT[3:0] to low after sending back CMD11 response. + */ + mdelay(1); + + /* SD_CMD, SD_DAT[3:0] should be driven to low by card; + * If either one of SD_CMD,SD_DAT[3:0] is not low, + * abort the voltage switch sequence; + */ + err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); + if (err < 0) + return err; + + if (stat & (SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS)) + return -EINVAL; + + /* Stop toggle SD clock */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + 0xFF, SD_CLK_FORCE_STOP); + if (err < 0) + return err; + + return 0; +} + +static int sd_wait_voltage_stable_2(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + u8 stat, mask, val; + + /* Wait 1.8V output of voltage regulator in card stable */ + msleep(50); + + /* Toggle SD clock again */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, 0xFF, SD_CLK_TOGGLE_EN); + if (err < 0) + return err; + + /* Wait for a period of time so that the card can drive + * SD_DAT[3:0] to high at 1.8V + */ + msleep(20); + + /* SD_CMD, SD_DAT[3:0] should be pulled high by host */ + err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); + if (err < 0) + return err; + + mask = SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS; + val = SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS; + if ((stat & mask) != val) { + dev_dbg(sdmmc_dev(host), + "%s: SD_BUS_STAT = 0x%x\n", __func__, stat); + rtsx_pci_write_register(pcr, SD_BUS_STAT, + SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0); + rtsx_pci_write_register(pcr, CARD_CLK_EN, 0xFF, 0); + return -EINVAL; + } + + return 0; +} + +static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + u8 voltage; + + dev_dbg(sdmmc_dev(host), "%s: signal_voltage = %d\n", + __func__, ios->signal_voltage); + + if (host->eject) + return -ENOMEDIUM; + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) + return err; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) + voltage = OUTPUT_3V3; + else + voltage = OUTPUT_1V8; + + if (voltage == OUTPUT_1V8) { + err = sd_wait_voltage_stable_1(host); + if (err < 0) + goto out; + } + + err = rtsx_pci_switch_output_voltage(pcr, voltage); + if (err < 0) + goto out; + + if (voltage == OUTPUT_1V8) { + err = sd_wait_voltage_stable_2(host); + if (err < 0) + goto out; + } + + /* Stop toggle SD clock in idle */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0); + +out: + mutex_unlock(&pcr->pcr_mutex); + + return err; +} + +static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + + if (host->eject) + return -ENOMEDIUM; + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) + return err; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + if (!host->ddr_mode) + err = sd_tuning_rx(host, MMC_SEND_TUNING_BLOCK); + + mutex_unlock(&pcr->pcr_mutex); + + return err; +} + +static const struct mmc_host_ops realtek_pci_sdmmc_ops = { + .request = sdmmc_request, + .set_ios = sdmmc_set_ios, + .get_ro = sdmmc_get_ro, + .get_cd = sdmmc_get_cd, + .start_signal_voltage_switch = sdmmc_switch_voltage, + .execute_tuning = sdmmc_execute_tuning, +}; + +#ifdef CONFIG_PM +static int rtsx_pci_sdmmc_suspend(struct platform_device *pdev, + pm_message_t state) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->mmc; + int err; + + dev_dbg(sdmmc_dev(host), "--> %s\n", __func__); + + err = mmc_suspend_host(mmc); + if (err) + return err; + + return 0; +} + +static int rtsx_pci_sdmmc_resume(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->mmc; + + dev_dbg(sdmmc_dev(host), "--> %s\n", __func__); + + return mmc_resume_host(mmc); +} +#else /* CONFIG_PM */ +#define rtsx_pci_sdmmc_suspend NULL +#define rtsx_pci_sdmmc_resume NULL +#endif /* CONFIG_PM */ + +static void init_extra_caps(struct realtek_pci_sdmmc *host) +{ + struct mmc_host *mmc = host->mmc; + struct rtsx_pcr *pcr = host->pcr; + + dev_dbg(sdmmc_dev(host), "pcr->extra_caps = 0x%x\n", pcr->extra_caps); + + if (pcr->extra_caps & EXTRA_CAPS_SD_SDR50) + mmc->caps |= MMC_CAP_UHS_SDR50; + if (pcr->extra_caps & EXTRA_CAPS_SD_SDR104) + mmc->caps |= MMC_CAP_UHS_SDR104; + if (pcr->extra_caps & EXTRA_CAPS_SD_DDR50) + mmc->caps |= MMC_CAP_UHS_DDR50; + if (pcr->extra_caps & EXTRA_CAPS_MMC_HSDDR) + mmc->caps |= MMC_CAP_1_8V_DDR; + if (pcr->extra_caps & EXTRA_CAPS_MMC_8BIT) + mmc->caps |= MMC_CAP_8_BIT_DATA; +} + +static void realtek_init_host(struct realtek_pci_sdmmc *host) +{ + struct mmc_host *mmc = host->mmc; + + mmc->f_min = 250000; + mmc->f_max = 208000000; + mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195; + mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED | + MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST | + MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_MAX_CURRENT_800; + mmc->ops = &realtek_pci_sdmmc_ops; + + init_extra_caps(host); + + mmc->max_segs = 256; + mmc->max_seg_size = 65536; + mmc->max_blk_size = 512; + mmc->max_blk_count = 65535; + mmc->max_req_size = 524288; +} + +static void rtsx_pci_sdmmc_card_event(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + + mmc_detect_change(host->mmc, 0); +} + +static int rtsx_pci_sdmmc_drv_probe(struct platform_device *pdev) +{ + struct mmc_host *mmc; + struct realtek_pci_sdmmc *host; + struct rtsx_pcr *pcr; + struct pcr_handle *handle = pdev->dev.platform_data; + + if (!handle) + return -ENXIO; + + pcr = handle->pcr; + if (!pcr) + return -ENXIO; + + dev_dbg(&(pdev->dev), ": Realtek PCI-E SDMMC controller found\n"); + + mmc = mmc_alloc_host(sizeof(*host), &pdev->dev); + if (!mmc) + return -ENOMEM; + + host = mmc_priv(mmc); + host->pcr = pcr; + host->mmc = mmc; + host->pdev = pdev; + platform_set_drvdata(pdev, host); + pcr->slots[RTSX_SD_CARD].p_dev = pdev; + pcr->slots[RTSX_SD_CARD].card_event = rtsx_pci_sdmmc_card_event; + + mutex_init(&host->host_mutex); + + realtek_init_host(host); + + mmc_add_host(mmc); + + return 0; +} + +static int rtsx_pci_sdmmc_drv_remove(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct rtsx_pcr *pcr; + struct mmc_host *mmc; + + if (!host) + return 0; + + pcr = host->pcr; + pcr->slots[RTSX_SD_CARD].p_dev = NULL; + pcr->slots[RTSX_SD_CARD].card_event = NULL; + mmc = host->mmc; + host->eject = true; + + mutex_lock(&host->host_mutex); + if (host->mrq) { + dev_dbg(&(pdev->dev), + "%s: Controller removed during transfer\n", + mmc_hostname(mmc)); + + rtsx_pci_complete_unfinished_transfer(pcr); + + host->mrq->cmd->error = -ENOMEDIUM; + if (host->mrq->stop) + host->mrq->stop->error = -ENOMEDIUM; + mmc_request_done(mmc, host->mrq); + } + mutex_unlock(&host->host_mutex); + + mmc_remove_host(mmc); + mmc_free_host(mmc); + + platform_set_drvdata(pdev, NULL); + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E SDMMC controller has been removed\n"); + + return 0; +} + +static struct platform_device_id rtsx_pci_sdmmc_ids[] = { + { + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, { + /* sentinel */ + } +}; +MODULE_DEVICE_TABLE(platform, rtsx_pci_sdmmc_ids); + +static struct platform_driver rtsx_pci_sdmmc_driver = { + .probe = rtsx_pci_sdmmc_drv_probe, + .remove = rtsx_pci_sdmmc_drv_remove, + .id_table = rtsx_pci_sdmmc_ids, + .suspend = rtsx_pci_sdmmc_suspend, + .resume = rtsx_pci_sdmmc_resume, + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, +}; +module_platform_driver(rtsx_pci_sdmmc_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E SD/MMC Card Host Driver"); --- linux-3.5.0.orig/drivers/mmc/host/mxs-mmc.c +++ linux-3.5.0/drivers/mmc/host/mxs-mmc.c @@ -278,11 +278,11 @@ writel(stat & MXS_MMC_IRQ_BITS, host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_CLR); + spin_unlock(&host->lock); + if ((stat & BM_SSP_CTRL1_SDIO_IRQ) && (stat & BM_SSP_CTRL1_SDIO_IRQ_EN)) mmc_signal_sdio_irq(host->mmc); - spin_unlock(&host->lock); - if (stat & BM_SSP_CTRL1_RESP_TIMEOUT_IRQ) cmd->error = -ETIMEDOUT; else if (stat & BM_SSP_CTRL1_RESP_ERR_IRQ) @@ -637,11 +637,6 @@ host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); writel(BM_SSP_CTRL1_SDIO_IRQ_EN, host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_SET); - - if (readl(host->base + HW_SSP_STATUS(host)) & - BM_SSP_STATUS_SDIO_IRQ) - mmc_signal_sdio_irq(host->mmc); - } else { writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); @@ -650,6 +645,11 @@ } spin_unlock_irqrestore(&host->lock, flags); + + if (enable && readl(host->base + HW_SSP_STATUS(host)) & + BM_SSP_STATUS_SDIO_IRQ) + mmc_signal_sdio_irq(host->mmc); + } static const struct mmc_host_ops mxs_mmc_ops = { --- linux-3.5.0.orig/drivers/mmc/core/mmc.c +++ linux-3.5.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 = --- linux-3.5.0.orig/drivers/mmc/core/host.c +++ linux-3.5.0/drivers/mmc/core/host.c @@ -430,3 +430,4 @@ } EXPORT_SYMBOL(mmc_free_host); + --- linux-3.5.0.orig/drivers/mmc/card/block.c +++ linux-3.5.0/drivers/mmc/card/block.c @@ -1429,7 +1429,8 @@ /* complete ongoing async transfer before issuing discard */ if (card->host->areq) mmc_blk_issue_rw_rq(mq, NULL); - if (req->cmd_flags & REQ_SECURE) + if (req->cmd_flags & REQ_SECURE && + !(card->quirks & MMC_QUIRK_SEC_ERASE_TRIM_BROKEN)) ret = mmc_blk_issue_secdiscard_rq(mq, req); else ret = mmc_blk_issue_discard_rq(mq, req); @@ -1734,6 +1735,7 @@ #define CID_MANFID_SANDISK 0x2 #define CID_MANFID_TOSHIBA 0x11 #define CID_MANFID_MICRON 0x13 +#define CID_MANFID_SAMSUNG 0x15 static const struct mmc_fixup blk_fixups[] = { @@ -1770,6 +1772,28 @@ MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc, MMC_QUIRK_LONG_READ_TIME), + /* + * On these Samsung MoviNAND parts, performing secure erase or + * secure trim can result in unrecoverable corruption due to a + * firmware bug. + */ + MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + END_FIXUP }; --- linux-3.5.0.orig/drivers/md/raid1.c +++ linux-3.5.0/drivers/md/raid1.c @@ -413,7 +413,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, @@ -802,17 +812,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. */ @@ -820,7 +830,7 @@ conf->barrier++; conf->nr_waiting++; wait_event_lock_irq(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); @@ -1419,8 +1429,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); @@ -1468,11 +1478,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); @@ -2089,7 +2099,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); @@ -2428,7 +2438,10 @@ /* There is nowhere to write, so all non-sync * drives must be failed - so we are finished */ - sector_t rv = max_sector - sector_nr; + sector_t rv; + if (min_bad > 0) + max_sector = sector_nr + min_bad; + rv = max_sector - sector_nr; *skipped = 1; put_buf(r1_bio); return rv; @@ -2560,7 +2573,7 @@ || disk_idx < 0) continue; if (test_bit(Replacement, &rdev->flags)) - disk = conf->mirrors + conf->raid_disks + disk_idx; + disk = conf->mirrors + mddev->raid_disks + disk_idx; else disk = conf->mirrors + disk_idx; @@ -2849,7 +2862,7 @@ return -ENOMEM; } - raise_barrier(conf); + freeze_array(conf, 0); /* ok, everything is stopped */ oldpool = conf->r1bio_pool; @@ -2881,7 +2894,7 @@ mddev->delta_disks = 0; conf->last_used = 0; /* just make sure it is in-range */ - lower_barrier(conf); + unfreeze_array(conf); set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); md_wakeup_thread(mddev->thread); --- linux-3.5.0.orig/drivers/md/dm-table.c +++ linux-3.5.0/drivers/md/dm-table.c @@ -1351,17 +1351,25 @@ return q && blk_queue_nonrot(q); } -static bool dm_table_is_nonrot(struct dm_table *t) +static int device_is_not_random(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) +{ + struct request_queue *q = bdev_get_queue(dev->bdev); + + return q && !blk_queue_add_random(q); +} + +static bool dm_table_all_devices_attribute(struct dm_table *t, + iterate_devices_callout_fn func) { struct dm_target *ti; unsigned i = 0; - /* Ensure that all underlying device are non-rotational. */ while (i < dm_table_get_num_targets(t)) { ti = dm_table_get_target(t, i++); if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, device_is_nonrot, NULL)) + !ti->type->iterate_devices(ti, func, NULL)) return 0; } @@ -1393,7 +1401,8 @@ if (!dm_table_discard_zeroes_data(t)) q->limits.discard_zeroes_data = 0; - if (dm_table_is_nonrot(t)) + /* Ensure that all underlying devices are non-rotational. */ + if (dm_table_all_devices_attribute(t, device_is_nonrot)) queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); else queue_flag_clear_unlocked(QUEUE_FLAG_NONROT, q); @@ -1401,6 +1410,15 @@ dm_table_set_integrity(t); /* + * Determine whether or not this queue's I/O timings contribute + * to the entropy pool, Only request-based targets use this. + * Clear QUEUE_FLAG_ADD_RANDOM if any underlying device does not + * have it set. + */ + if (blk_queue_add_random(q) && dm_table_all_devices_attribute(t, device_is_not_random)) + queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, q); + + /* * QUEUE_FLAG_STACKABLE must be set after all queue settings are * visible to other CPUs because, once the flag is set, incoming bios * are processed by request-based dm, which refers to the queue --- linux-3.5.0.orig/drivers/md/dm-thin.c +++ linux-3.5.0/drivers/md/dm-thin.c @@ -19,7 +19,7 @@ /* * Tunable constants */ -#define ENDIO_HOOK_POOL_SIZE 10240 +#define ENDIO_HOOK_POOL_SIZE 1024 #define DEFERRED_SET_SIZE 64 #define MAPPING_POOL_SIZE 1024 #define PRISON_CELLS 1024 @@ -859,7 +859,7 @@ if (m->err) { cell_error(m->cell); - return; + goto out; } /* @@ -871,7 +871,7 @@ if (r) { DMERR("dm_thin_insert_block() failed"); cell_error(m->cell); - return; + goto out; } /* @@ -886,6 +886,7 @@ } else cell_defer(tc, m->cell, m->data_block); +out: list_del(&m->list); mempool_free(m, tc->pool->mapping_pool); } @@ -2034,6 +2035,7 @@ * thin devices' discard limits consistent). */ ti->discards_supported = 1; + ti->discard_zeroes_data_unsupported = 1; } ti->private = pt; @@ -2495,7 +2497,6 @@ * bios that overlap 2 blocks. */ limits->discard_granularity = pool->sectors_per_block << SECTOR_SHIFT; - limits->discard_zeroes_data = pool->pf.zero_new_blocks; } static void pool_io_hints(struct dm_target *ti, struct queue_limits *limits) @@ -2513,7 +2514,7 @@ .name = "thin-pool", .features = DM_TARGET_SINGLETON | DM_TARGET_ALWAYS_WRITEABLE | DM_TARGET_IMMUTABLE, - .version = {1, 2, 0}, + .version = {1, 2, 1}, .module = THIS_MODULE, .ctr = pool_ctr, .dtr = pool_dtr, @@ -2786,7 +2787,7 @@ static struct target_type thin_target = { .name = "thin", - .version = {1, 1, 0}, + .version = {1, 1, 1}, .module = THIS_MODULE, .ctr = thin_ctr, .dtr = thin_dtr, --- linux-3.5.0.orig/drivers/md/raid10.h +++ linux-3.5.0/drivers/md/raid10.h @@ -110,7 +110,7 @@ * We choose the number when they are allocated. * We sometimes need an extra bio to write to the replacement. */ - struct { + struct r10dev { struct bio *bio; union { struct bio *repl_bio; /* used for resync and --- linux-3.5.0.orig/drivers/md/dm-ioctl.c +++ linux-3.5.0/drivers/md/dm-ioctl.c @@ -1563,6 +1563,14 @@ if (copy_from_user(dmi, user, tmp.data_size)) goto bad; + /* + * Abort if something changed the ioctl data while it was being copied. + */ + if (dmi->data_size != tmp.data_size) { + DMERR("rejecting ioctl: data size modified while processing parameters"); + goto bad; + } + /* Wipe the user buffer so we do not return it to userspace */ if (secure_data && clear_user(user, tmp.data_size)) goto bad; --- linux-3.5.0.orig/drivers/md/dm-snap.c +++ linux-3.5.0/drivers/md/dm-snap.c @@ -1117,6 +1117,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; } @@ -2327,3 +2328,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-3.5.0.orig/drivers/md/raid0.c +++ linux-3.5.0/drivers/md/raid0.c @@ -280,7 +280,7 @@ kfree(conf->strip_zone); kfree(conf->devlist); kfree(conf); - *private_conf = NULL; + *private_conf = ERR_PTR(err); return err; } @@ -402,7 +402,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-3.5.0.orig/drivers/md/raid5.c +++ linux-3.5.0/drivers/md/raid5.c @@ -380,6 +380,8 @@ degraded = 0; for (i = 0; i < conf->previous_raid_disks; i++) { struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); + if (rdev && test_bit(Faulty, &rdev->flags)) + rdev = rcu_dereference(conf->disks[i].replacement); if (!rdev || test_bit(Faulty, &rdev->flags)) degraded++; else if (test_bit(In_sync, &rdev->flags)) @@ -404,6 +406,8 @@ degraded2 = 0; for (i = 0; i < conf->raid_disks; i++) { struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); + if (rdev && test_bit(Faulty, &rdev->flags)) + rdev = rcu_dereference(conf->disks[i].replacement); if (!rdev || test_bit(Faulty, &rdev->flags)) degraded2++; else if (test_bit(In_sync, &rdev->flags)) --- linux-3.5.0.orig/drivers/md/dm-verity.c +++ linux-3.5.0/drivers/md/dm-verity.c @@ -95,6 +95,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); @@ -428,15 +435,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 = *(volatile unsigned *)&dm_verity_prefetch_cluster; @@ -456,6 +466,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); } /* @@ -504,7 +533,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); @@ -718,8 +747,8 @@ v->hash_dev_block_bits = ffs(num) - 1; if (sscanf(argv[5], "%llu%c", &num_ll, &dummy) != 1 || - num_ll << (v->data_dev_block_bits - SECTOR_SHIFT) != - (sector_t)num_ll << (v->data_dev_block_bits - SECTOR_SHIFT)) { + (sector_t)(num_ll << (v->data_dev_block_bits - SECTOR_SHIFT)) + >> (v->data_dev_block_bits - SECTOR_SHIFT) != num_ll) { ti->error = "Invalid data blocks"; r = -EINVAL; goto bad; @@ -733,8 +762,8 @@ } if (sscanf(argv[6], "%llu%c", &num_ll, &dummy) != 1 || - num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT) != - (sector_t)num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT)) { + (sector_t)(num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT)) + >> (v->hash_dev_block_bits - SECTOR_SHIFT) != num_ll) { ti->error = "Invalid hash start"; r = -EINVAL; goto bad; @@ -875,7 +904,7 @@ static struct target_type verity_target = { .name = "verity", - .version = {1, 0, 0}, + .version = {1, 0, 1}, .module = THIS_MODULE, .ctr = verity_ctr, .dtr = verity_dtr, --- linux-3.5.0.orig/drivers/md/dm-mpath.c +++ linux-3.5.0/drivers/md/dm-mpath.c @@ -1520,6 +1520,7 @@ unsigned long arg) { struct multipath *m = ti->private; + struct pgpath *pgpath; struct block_device *bdev; fmode_t mode; unsigned long flags; @@ -1535,12 +1536,14 @@ if (!m->current_pgpath) __choose_pgpath(m, 0); - if (m->current_pgpath) { - bdev = m->current_pgpath->path.dev->bdev; - mode = m->current_pgpath->path.dev->mode; + pgpath = m->current_pgpath; + + if (pgpath) { + bdev = pgpath->path.dev->bdev; + mode = pgpath->path.dev->mode; } - if (m->queue_io) + if ((pgpath && m->queue_io) || (!pgpath && m->queue_if_no_path)) r = -EAGAIN; else if (!bdev) r = -EIO; --- linux-3.5.0.orig/drivers/md/dm-bufio.c +++ linux-3.5.0/drivers/md/dm-bufio.c @@ -321,6 +321,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); @@ -334,7 +337,28 @@ } *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 = current->flags & PF_MEMALLOC; + current->flags |= PF_MEMALLOC; + } + + ptr = __vmalloc(c->block_size, gfp_mask, PAGE_KERNEL); + + if (gfp_mask & __GFP_NORETRY) + current->flags = (current->flags & ~PF_MEMALLOC) | noio_flag; + + return ptr; } /* @@ -1029,6 +1053,8 @@ { struct blk_plug plug; + BUG_ON(dm_bufio_in_request()); + blk_start_plug(&plug); dm_bufio_lock(c); --- linux-3.5.0.orig/drivers/md/dm.c +++ linux-3.5.0/drivers/md/dm.c @@ -754,8 +754,14 @@ if (!md_in_flight(md)) wake_up(&md->wait); + /* + * Run this off this callpath, as drivers could invoke end_io while + * inside their request_fn (and holding the queue lock). Calling + * back into ->request_fn() could deadlock attempting to grab the + * queue lock again. + */ if (run_queue) - blk_run_queue(md->queue); + blk_run_queue_async(md->queue); /* * dm_put() must be at the end of this function. See the comment above @@ -865,10 +871,14 @@ { int r = error; struct dm_rq_target_io *tio = clone->end_io_data; - dm_request_endio_fn rq_end_io = tio->ti->type->rq_end_io; + dm_request_endio_fn rq_end_io = NULL; - if (mapped && rq_end_io) - r = rq_end_io(tio->ti, clone, error, &tio->info); + if (tio->ti) { + rq_end_io = tio->ti->type->rq_end_io; + + if (mapped && rq_end_io) + r = rq_end_io(tio->ti, clone, error, &tio->info); + } if (r <= 0) /* The target wants to complete the I/O */ @@ -1566,15 +1576,6 @@ int r, requeued = 0; struct dm_rq_target_io *tio = clone->end_io_data; - /* - * Hold the md reference here for the in-flight I/O. - * We can't rely on the reference count by device opener, - * because the device may be closed during the request completion - * when all bios are completed. - * See the comment in rq_completed() too. - */ - dm_get(md); - tio->ti = ti; r = ti->type->map_rq(ti, clone, &tio->info); switch (r) { @@ -1606,6 +1607,26 @@ return requeued; } +static struct request *dm_start_request(struct mapped_device *md, struct request *orig) +{ + struct request *clone; + + blk_start_request(orig); + clone = orig->special; + atomic_inc(&md->pending[rq_data_dir(clone)]); + + /* + * Hold the md reference here for the in-flight I/O. + * We can't rely on the reference count by device opener, + * because the device may be closed during the request completion + * when all bios are completed. + * See the comment in rq_completed() too. + */ + dm_get(md); + + return clone; +} + /* * q->request_fn for request-based dm. * Called with the queue lock held. @@ -1635,14 +1656,21 @@ pos = blk_rq_pos(rq); ti = dm_table_find_target(map, pos); - BUG_ON(!dm_target_is_valid(ti)); + if (!dm_target_is_valid(ti)) { + /* + * Must perform setup, that dm_done() requires, + * before calling dm_kill_unmapped_request + */ + DMERR_LIMIT("request attempted access beyond the end of device"); + clone = dm_start_request(md, rq); + dm_kill_unmapped_request(clone, -EIO); + continue; + } if (ti->type->busy && ti->type->busy(ti)) goto delay_and_out; - blk_start_request(rq); - clone = rq->special; - atomic_inc(&md->pending[rq_data_dir(clone)]); + clone = dm_start_request(md, rq); spin_unlock(q->queue_lock); if (map_request(ti, clone, md)) @@ -1662,8 +1690,6 @@ blk_delay_queue(q, HZ / 10); out: dm_table_put(map); - - return; } int dm_underlying_device_busy(struct request_queue *q) @@ -2653,6 +2679,7 @@ { return md->disk; } +EXPORT_SYMBOL_GPL(dm_disk); struct kobject *dm_kobject(struct mapped_device *md) { --- linux-3.5.0.orig/drivers/md/raid10.c +++ linux-3.5.0/drivers/md/raid10.c @@ -461,7 +461,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, @@ -485,7 +495,7 @@ */ one_write_done(r10_bio); if (dec_rdev) - rdev_dec_pending(conf->mirrors[dev].rdev, conf->mddev); + rdev_dec_pending(rdev, conf->mddev); } /* @@ -645,7 +655,11 @@ max = biovec->bv_len; if (mddev->merge_check_needed) { - struct r10bio r10_bio; + struct { + struct r10bio r10_bio; + struct r10dev devs[conf->copies]; + } on_stack; + struct r10bio *r10_bio = &on_stack.r10_bio; int s; if (conf->reshape_progress != MaxSector) { /* Cannot give any guidance during reshape */ @@ -653,18 +667,18 @@ return biovec->bv_len; return 0; } - r10_bio.sector = sector; - raid10_find_phys(conf, &r10_bio); + r10_bio->sector = sector; + raid10_find_phys(conf, r10_bio); rcu_read_lock(); for (s = 0; s < conf->copies; s++) { - int disk = r10_bio.devs[s].devnum; + int disk = r10_bio->devs[s].devnum; struct md_rdev *rdev = rcu_dereference( conf->mirrors[disk].rdev); if (rdev && !test_bit(Faulty, &rdev->flags)) { struct request_queue *q = bdev_get_queue(rdev->bdev); if (q->merge_bvec_fn) { - bvm->bi_sector = r10_bio.devs[s].addr + bvm->bi_sector = r10_bio->devs[s].addr + rdev->data_offset; bvm->bi_bdev = rdev->bdev; max = min(max, q->merge_bvec_fn( @@ -676,7 +690,7 @@ struct request_queue *q = bdev_get_queue(rdev->bdev); if (q->merge_bvec_fn) { - bvm->bi_sector = r10_bio.devs[s].addr + bvm->bi_sector = r10_bio->devs[s].addr + rdev->data_offset; bvm->bi_bdev = rdev->bdev; max = min(max, q->merge_bvec_fn( @@ -981,17 +995,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. */ @@ -999,7 +1013,7 @@ conf->barrier++; conf->nr_waiting++; wait_event_lock_irq(conf->wait_barrier, - conf->nr_pending == conf->nr_queued+1, + conf->nr_pending == conf->nr_queued+extra, conf->resync_lock, flush_pending_writes(conf)); @@ -1263,18 +1277,21 @@ blocked_rdev = rrdev; break; } + if (rdev && (test_bit(Faulty, &rdev->flags) + || test_bit(Unmerged, &rdev->flags))) + rdev = NULL; if (rrdev && (test_bit(Faulty, &rrdev->flags) || test_bit(Unmerged, &rrdev->flags))) rrdev = NULL; r10_bio->devs[i].bio = NULL; r10_bio->devs[i].repl_bio = NULL; - if (!rdev || test_bit(Faulty, &rdev->flags) || - test_bit(Unmerged, &rdev->flags)) { + + if (!rdev && !rrdev) { set_bit(R10BIO_Degraded, &r10_bio->state); continue; } - if (test_bit(WriteErrorSeen, &rdev->flags)) { + if (rdev && test_bit(WriteErrorSeen, &rdev->flags)) { sector_t first_bad; sector_t dev_sector = r10_bio->devs[i].addr; int bad_sectors; @@ -1316,8 +1333,10 @@ max_sectors = good_sectors; } } - r10_bio->devs[i].bio = bio; - atomic_inc(&rdev->nr_pending); + if (rdev) { + r10_bio->devs[i].bio = bio; + atomic_inc(&rdev->nr_pending); + } if (rrdev) { r10_bio->devs[i].repl_bio = bio; atomic_inc(&rrdev->nr_pending); @@ -1373,58 +1392,58 @@ for (i = 0; i < conf->copies; i++) { struct bio *mbio; int d = r10_bio->devs[i].devnum; - if (!r10_bio->devs[i].bio) - continue; - - mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); - md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].bio = mbio; - - mbio->bi_sector = (r10_bio->devs[i].addr+ - choose_data_offset(r10_bio, - conf->mirrors[d].rdev)); - mbio->bi_bdev = conf->mirrors[d].rdev->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; - - atomic_inc(&r10_bio->remaining); - spin_lock_irqsave(&conf->device_lock, flags); - bio_list_add(&conf->pending_bio_list, mbio); - conf->pending_count++; - spin_unlock_irqrestore(&conf->device_lock, flags); - if (!mddev_check_plugged(mddev)) - md_wakeup_thread(mddev->thread); - - if (!r10_bio->devs[i].repl_bio) - continue; + if (r10_bio->devs[i].bio) { + struct md_rdev *rdev = conf->mirrors[d].rdev; + mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); + md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr+ + choose_data_offset(r10_bio, + rdev)); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw = WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; - mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); - md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].repl_bio = mbio; + atomic_inc(&r10_bio->remaining); + spin_lock_irqsave(&conf->device_lock, flags); + bio_list_add(&conf->pending_bio_list, mbio); + conf->pending_count++; + spin_unlock_irqrestore(&conf->device_lock, flags); + if (!mddev_check_plugged(mddev)) + md_wakeup_thread(mddev->thread); + } - /* We are actively writing to the original device - * so it cannot disappear, so the replacement cannot - * become NULL here - */ - mbio->bi_sector = (r10_bio->devs[i].addr + - choose_data_offset( - r10_bio, - conf->mirrors[d].replacement)); - mbio->bi_bdev = conf->mirrors[d].replacement->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; + if (r10_bio->devs[i].repl_bio) { + struct md_rdev *rdev = conf->mirrors[d].replacement; + if (rdev == NULL) { + /* Replacement just got moved to main 'rdev' */ + smp_mb(); + rdev = conf->mirrors[d].rdev; + } + mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); + md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].repl_bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr + + choose_data_offset( + r10_bio, rdev)); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw = WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; - atomic_inc(&r10_bio->remaining); - spin_lock_irqsave(&conf->device_lock, flags); - bio_list_add(&conf->pending_bio_list, mbio); - conf->pending_count++; - spin_unlock_irqrestore(&conf->device_lock, flags); - if (!mddev_check_plugged(mddev)) - md_wakeup_thread(mddev->thread); + atomic_inc(&r10_bio->remaining); + spin_lock_irqsave(&conf->device_lock, flags); + bio_list_add(&conf->pending_bio_list, mbio); + conf->pending_count++; + spin_unlock_irqrestore(&conf->device_lock, flags); + if (!mddev_check_plugged(mddev)) + md_wakeup_thread(mddev->thread); + } } /* Don't remove the bias on 'remaining' (one_write_done) until @@ -1488,14 +1507,16 @@ do { int n = conf->copies; int cnt = 0; + int this = first; while (n--) { - if (conf->mirrors[first].rdev && - first != ignore) + if (conf->mirrors[this].rdev && + this != ignore) cnt++; - first = (first+1) % geo->raid_disks; + this = (this+1) % geo->raid_disks; } if (cnt == 0) return 0; + first = (first + geo->near_copies) % geo->raid_disks; } while (first != 0); return 1; } @@ -1694,8 +1715,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); @@ -2488,7 +2509,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 @@ -3133,7 +3154,7 @@ else { bad_sectors -= (sector - first_bad); if (max_sync > bad_sectors) - max_sync = max_sync; + max_sync = bad_sectors; continue; } } @@ -4389,14 +4410,18 @@ { /* Use sync reads to get the blocks from somewhere else */ int sectors = r10_bio->sectors; - struct r10bio r10b; struct r10conf *conf = mddev->private; + struct { + struct r10bio r10_bio; + struct r10dev devs[conf->copies]; + } on_stack; + struct r10bio *r10b = &on_stack.r10_bio; int slot = 0; int idx = 0; struct bio_vec *bvec = r10_bio->master_bio->bi_io_vec; - r10b.sector = r10_bio->sector; - __raid10_find_phys(&conf->prev, &r10b); + r10b->sector = r10_bio->sector; + __raid10_find_phys(&conf->prev, r10b); while (sectors) { int s = sectors; @@ -4407,7 +4432,7 @@ s = PAGE_SIZE >> 9; while (!success) { - int d = r10b.devs[slot].devnum; + int d = r10b->devs[slot].devnum; struct md_rdev *rdev = conf->mirrors[d].rdev; sector_t addr; if (rdev == NULL || @@ -4415,7 +4440,7 @@ !test_bit(In_sync, &rdev->flags)) goto failed; - addr = r10b.devs[slot].addr + idx * PAGE_SIZE; + addr = r10b->devs[slot].addr + idx * PAGE_SIZE; success = sync_page_io(rdev, addr, s << 9, --- linux-3.5.0.orig/drivers/md/md.c +++ linux-3.5.0/drivers/md/md.c @@ -344,6 +344,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) { @@ -1157,8 +1161,11 @@ ret = 0; } rdev->sectors = rdev->sb_start; - /* Limit to 4TB as metadata cannot record more than that */ - if (rdev->sectors >= (2ULL << 32)) + /* Limit to 4TB as metadata cannot record more than that. + * (not needed for Linear and RAID0 as metadata doesn't + * record this size) + */ + if (rdev->sectors >= (2ULL << 32) && sb->level >= 1) rdev->sectors = (2ULL << 32) - 2; if (rdev->sectors < ((sector_t)sb->size) * 2 && sb->level >= 1) @@ -1449,7 +1456,7 @@ /* Limit to 4TB as metadata cannot record more than that. * 4TB == 2^32 KB, or 2*2^32 sectors. */ - if (num_sectors >= (2ULL << 32)) + if (num_sectors >= (2ULL << 32) && rdev->mddev->level >= 1) num_sectors = (2ULL << 32) - 2; md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size, rdev->sb_page); @@ -1622,8 +1629,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; @@ -1878,10 +1885,10 @@ memset(bbp, 0xff, PAGE_SIZE); for (i = 0 ; i < bb->count ; i++) { - u64 internal_bb = *p++; + u64 internal_bb = p[i]; u64 store_bb = ((BB_OFFSET(internal_bb) << 10) | BB_LEN(internal_bb)); - *bbp++ = cpu_to_le64(store_bb); + bbp[i] = cpu_to_le64(store_bb); } bb->changed = 0; if (read_seqretry(&bb->lock, seq)) @@ -3050,6 +3057,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 */ @@ -3270,7 +3280,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) @@ -3342,9 +3352,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; @@ -7669,6 +7676,8 @@ } } } + if (removed) + set_bit(MD_CHANGE_DEVS, &mddev->flags); return spares; } @@ -7682,9 +7691,11 @@ !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { /* success...*/ /* activate any spares */ - if (mddev->pers->spare_active(mddev)) + if (mddev->pers->spare_active(mddev)) { sysfs_notify(&mddev->kobj, NULL, "degraded"); + set_bit(MD_CHANGE_DEVS, &mddev->flags); + } } if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && mddev->pers->finish_reshape) @@ -7953,9 +7964,9 @@ sector_t *first_bad, int *bad_sectors) { int hi; - int lo = 0; + int lo; u64 *p = bb->page; - int rv = 0; + int rv; sector_t target = s + sectors; unsigned seq; @@ -7970,7 +7981,8 @@ retry: seq = read_seqbegin(&bb->lock); - + lo = 0; + rv = 0; hi = bb->count; /* Binary search between lo and hi for 'target' --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-internal.h +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-internal.h @@ -36,13 +36,13 @@ __le32 padding; } __packed; -struct node { +struct btree_node { struct node_header header; __le64 keys[0]; } __packed; -void inc_children(struct dm_transaction_manager *tm, struct node *n, +void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt); int new_block(struct dm_btree_info *info, struct dm_block **result); @@ -64,7 +64,7 @@ void init_ro_spine(struct ro_spine *s, struct dm_btree_info *info); int exit_ro_spine(struct ro_spine *s); int ro_step(struct ro_spine *s, dm_block_t new_child); -struct node *ro_node(struct ro_spine *s); +struct btree_node *ro_node(struct ro_spine *s); struct shadow_spine { struct dm_btree_info *info; @@ -98,17 +98,17 @@ /* * Some inlines. */ -static inline __le64 *key_ptr(struct node *n, uint32_t index) +static inline __le64 *key_ptr(struct btree_node *n, uint32_t index) { return n->keys + index; } -static inline void *value_base(struct node *n) +static inline void *value_base(struct btree_node *n) { return &n->keys[le32_to_cpu(n->header.max_entries)]; } -static inline void *value_ptr(struct node *n, uint32_t index) +static inline void *value_ptr(struct btree_node *n, uint32_t index) { uint32_t value_size = le32_to_cpu(n->header.value_size); return value_base(n) + (value_size * index); @@ -117,7 +117,7 @@ /* * Assumes the values are suitably-aligned and converts to core format. */ -static inline uint64_t value64(struct node *n, uint32_t index) +static inline uint64_t value64(struct btree_node *n, uint32_t index) { __le64 *values_le = value_base(n); @@ -127,7 +127,7 @@ /* * Searching for a key within a single node. */ -int lower_bound(struct node *n, uint64_t key); +int lower_bound(struct btree_node *n, uint64_t key); extern struct dm_block_validator btree_node_validator; --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree.c @@ -38,7 +38,7 @@ /*----------------------------------------------------------------*/ /* makes the assumption that no two keys are the same. */ -static int bsearch(struct node *n, uint64_t key, int want_hi) +static int bsearch(struct btree_node *n, uint64_t key, int want_hi) { int lo = -1, hi = le32_to_cpu(n->header.nr_entries); @@ -58,12 +58,12 @@ return want_hi ? hi : lo; } -int lower_bound(struct node *n, uint64_t key) +int lower_bound(struct btree_node *n, uint64_t key) { return bsearch(n, key, 0); } -void inc_children(struct dm_transaction_manager *tm, struct node *n, +void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt) { unsigned i; @@ -77,7 +77,7 @@ vt->inc(vt->context, value_ptr(n, i)); } -static int insert_at(size_t value_size, struct node *node, unsigned index, +static int insert_at(size_t value_size, struct btree_node *node, unsigned index, uint64_t key, void *value) __dm_written_to_disk(value) { @@ -122,7 +122,7 @@ { int r; struct dm_block *b; - struct node *n; + struct btree_node *n; size_t block_size; uint32_t max_entries; @@ -154,7 +154,7 @@ #define MAX_SPINE_DEPTH 64 struct frame { struct dm_block *b; - struct node *n; + struct btree_node *n; unsigned level; unsigned nr_children; unsigned current_child; @@ -295,7 +295,7 @@ /*----------------------------------------------------------------*/ static int btree_lookup_raw(struct ro_spine *s, dm_block_t block, uint64_t key, - int (*search_fn)(struct node *, uint64_t), + int (*search_fn)(struct btree_node *, uint64_t), uint64_t *result_key, void *v, size_t value_size) { int i, r; @@ -406,7 +406,7 @@ size_t size; unsigned nr_left, nr_right; struct dm_block *left, *right, *parent; - struct node *ln, *rn, *pn; + struct btree_node *ln, *rn, *pn; __le64 location; left = shadow_current(s); @@ -491,7 +491,7 @@ size_t size; unsigned nr_left, nr_right; struct dm_block *left, *right, *new_parent; - struct node *pn, *ln, *rn; + struct btree_node *pn, *ln, *rn; __le64 val; new_parent = shadow_current(s); @@ -576,7 +576,7 @@ uint64_t key, unsigned *index) { int r, i = *index, top = 1; - struct node *node; + struct btree_node *node; for (;;) { r = shadow_step(s, root, vt); @@ -643,7 +643,7 @@ unsigned level, index = -1, last_level = info->levels - 1; dm_block_t block = root; struct shadow_spine spine; - struct node *n; + struct btree_node *n; struct dm_btree_value_type le64_type; le64_type.context = NULL; --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-remove.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-remove.c @@ -53,7 +53,7 @@ /* * Some little utilities for moving node data around. */ -static void node_shift(struct node *n, int shift) +static void node_shift(struct btree_node *n, int shift) { uint32_t nr_entries = le32_to_cpu(n->header.nr_entries); uint32_t value_size = le32_to_cpu(n->header.value_size); @@ -79,7 +79,7 @@ } } -static void node_copy(struct node *left, struct node *right, int shift) +static void node_copy(struct btree_node *left, struct btree_node *right, int shift) { uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t value_size = le32_to_cpu(left->header.value_size); @@ -108,7 +108,7 @@ /* * Delete a specific entry from a leaf node. */ -static void delete_at(struct node *n, unsigned index) +static void delete_at(struct btree_node *n, unsigned index) { unsigned nr_entries = le32_to_cpu(n->header.nr_entries); unsigned nr_to_copy = nr_entries - (index + 1); @@ -128,7 +128,7 @@ n->header.nr_entries = cpu_to_le32(nr_entries - 1); } -static unsigned merge_threshold(struct node *n) +static unsigned merge_threshold(struct btree_node *n) { return le32_to_cpu(n->header.max_entries) / 3; } @@ -136,18 +136,11 @@ struct child { unsigned index; struct dm_block *block; - struct node *n; + 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 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)); @@ -177,7 +170,7 @@ return dm_tm_unlock(info->tm, c->block); } -static void shift(struct node *left, struct node *right, int count) +static void shift(struct btree_node *left, struct btree_node *right, int count) { uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_right = le32_to_cpu(right->header.nr_entries); @@ -203,11 +196,11 @@ right->header.nr_entries = cpu_to_le32(nr_right + count); } -static void __rebalance2(struct dm_btree_info *info, struct node *parent, +static void __rebalance2(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *r) { - struct node *left = l->n; - struct node *right = r->n; + struct btree_node *left = l->n; + struct btree_node *right = r->n; uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_right = le32_to_cpu(right->header.nr_entries); unsigned threshold = 2 * merge_threshold(left) + 1; @@ -236,19 +229,19 @@ } 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 node *parent; + struct btree_node *parent; struct child left, right; 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; @@ -270,9 +263,9 @@ * in right, then rebalance2. This wastes some cpu, but I want something * simple atm. */ -static void delete_center_node(struct dm_btree_info *info, struct node *parent, +static void delete_center_node(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r, - struct node *left, struct node *center, struct node *right, + struct btree_node *left, struct btree_node *center, struct btree_node *right, uint32_t nr_left, uint32_t nr_center, uint32_t nr_right) { uint32_t max_entries = le32_to_cpu(left->header.max_entries); @@ -301,9 +294,9 @@ /* * Redistributes entries among 3 sibling nodes. */ -static void redistribute3(struct dm_btree_info *info, struct node *parent, +static void redistribute3(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r, - struct node *left, struct node *center, struct node *right, + struct btree_node *left, struct btree_node *center, struct btree_node *right, uint32_t nr_left, uint32_t nr_center, uint32_t nr_right) { int s; @@ -343,12 +336,12 @@ *key_ptr(parent, r->index) = right->keys[0]; } -static void __rebalance3(struct dm_btree_info *info, struct node *parent, +static void __rebalance3(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r) { - struct node *left = l->n; - struct node *center = c->n; - struct node *right = r->n; + struct btree_node *left = l->n; + struct btree_node *center = c->n; + struct btree_node *right = r->n; uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_center = le32_to_cpu(center->header.nr_entries); @@ -368,26 +361,26 @@ } 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 node *parent = dm_block_data(shadow_current(s)); + struct btree_node *parent = dm_block_data(shadow_current(s)); struct child left, center, right; /* * 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); @@ -421,7 +414,7 @@ { int r; struct dm_block *block; - struct node *n; + struct btree_node *n; r = dm_tm_read_lock(tm, b, &btree_node_validator, &block); if (r) @@ -434,11 +427,12 @@ } 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; - struct node *n; + struct btree_node *n; n = dm_block_data(shadow_current(s)); @@ -472,18 +466,18 @@ 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; } -static int do_leaf(struct node *n, uint64_t key, unsigned *index) +static int do_leaf(struct btree_node *n, uint64_t key, unsigned *index) { int i = lower_bound(n, key); @@ -506,7 +500,7 @@ uint64_t key, unsigned *index) { int i = *index, r; - struct node *n; + struct btree_node *n; for (;;) { r = shadow_step(s, root, vt); @@ -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,13 +544,21 @@ 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) { unsigned level, last_level = info->levels - 1; int index = 0, r = 0; struct shadow_spine spine; - struct node *n; + struct btree_node *n; init_shadow_spine(&spine, info); for (level = 0; level < info->levels; level++) { --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-spine.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-spine.c @@ -23,7 +23,7 @@ struct dm_block *b, size_t block_size) { - struct node *n = dm_block_data(b); + struct btree_node *n = dm_block_data(b); struct node_header *h = &n->header; h->blocknr = cpu_to_le64(dm_block_location(b)); @@ -38,7 +38,7 @@ struct dm_block *b, size_t block_size) { - struct node *n = dm_block_data(b); + struct btree_node *n = dm_block_data(b); struct node_header *h = &n->header; size_t value_size; __le32 csum_disk; @@ -164,7 +164,7 @@ return r; } -struct node *ro_node(struct ro_spine *s) +struct btree_node *ro_node(struct ro_spine *s) { struct dm_block *block; --- linux-3.5.0.orig/drivers/watchdog/hpwdt.c +++ linux-3.5.0/drivers/watchdog/hpwdt.c @@ -814,6 +814,9 @@ hpwdt_timer_reg = pci_mem_addr + 0x70; hpwdt_timer_con = pci_mem_addr + 0x72; + /* Make sure that timer is disabled until /dev/watchdog is opened */ + hpwdt_stop(); + /* Make sure that we have a valid soft_margin */ if (hpwdt_change_timer(soft_margin)) hpwdt_change_timer(DEFAULT_MARGIN); --- linux-3.5.0.orig/drivers/watchdog/watchdog_dev.c +++ linux-3.5.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-3.5.0.orig/drivers/isdn/isdnloop/isdnloop.c +++ linux-3.5.0/drivers/isdn/isdnloop/isdnloop.c @@ -16,7 +16,6 @@ #include #include "isdnloop.h" -static char *revision = "$Revision: 1.11.6.7 $"; static char *isdnloop_id = "loop0"; MODULE_DESCRIPTION("ISDN4Linux: Pseudo Driver that simulates an ISDN card"); @@ -1494,17 +1493,6 @@ static int __init isdnloop_init(void) { - char *p; - char rev[10]; - - if ((p = strchr(revision, ':'))) { - strcpy(rev, p + 1); - p = strchr(rev, '$'); - *p = 0; - } else - strcpy(rev, " ??? "); - printk(KERN_NOTICE "isdnloop-ISDN-driver Rev%s\n", rev); - if (isdnloop_id) return (isdnloop_addcard(isdnloop_id)); --- linux-3.5.0.orig/drivers/isdn/gigaset/bas-gigaset.c +++ linux-3.5.0/drivers/isdn/gigaset/bas-gigaset.c @@ -617,7 +617,13 @@ if (rc == 0) /* success, resubmit interrupt read URB */ rc = usb_submit_urb(urb, GFP_ATOMIC); - if (rc != 0 && rc != -ENODEV) { + + switch (rc) { + case 0: /* success */ + case -ENODEV: /* device gone */ + case -EINVAL: /* URB already resubmitted, or terminal badness */ + break; + default: /* failure: try to recover by resetting the device */ dev_err(cs->dev, "clear halt failed: %s\n", get_usb_rcmsg(rc)); rc = usb_lock_device_for_reset(ucs->udev, ucs->interface); if (rc == 0) { @@ -2442,7 +2448,9 @@ } /* gigaset_suspend - * This function is called before the USB connection is suspended. + * This function is called before the USB connection is suspended + * or before the USB device is reset. + * In the latter case, message == PMSG_ON. */ static int gigaset_suspend(struct usb_interface *intf, pm_message_t message) { @@ -2498,7 +2506,12 @@ del_timer_sync(&ucs->timer_atrdy); del_timer_sync(&ucs->timer_cmd_in); del_timer_sync(&ucs->timer_int_in); - cancel_work_sync(&ucs->int_in_wq); + + /* don't try to cancel int_in_wq from within reset as it + * might be the one requesting the reset + */ + if (message.event != PM_EVENT_ON) + cancel_work_sync(&ucs->int_in_wq); gig_dbg(DEBUG_SUSPEND, "suspend complete"); return 0; --- linux-3.5.0.orig/drivers/isdn/gigaset/capi.c +++ linux-3.5.0/drivers/isdn/gigaset/capi.c @@ -248,6 +248,8 @@ CAPIMSG_APPID(data), CAPIMSG_MSGID(data), l, CAPIMSG_CONTROL(data)); l -= 12; + if (l <= 0) + return; dbgline = kmalloc(3 * l, GFP_ATOMIC); if (!dbgline) return; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/mISDNisar.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/mISDNisar.c @@ -1588,8 +1588,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(ich->is->hwlock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); modeisar(ich, ISDN_P_NONE); spin_unlock_irqrestore(ich->is->hwlock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/netjet.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/netjet.c @@ -812,8 +812,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&card->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); mode_tiger(bc, ISDN_P_NONE); spin_unlock_irqrestore(&card->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/mISDNipac.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/mISDNipac.c @@ -1406,8 +1406,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(hx->ip->hwlock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); hscx_mode(hx, ISDN_P_NONE); spin_unlock_irqrestore(hx->ip->hwlock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/w6692.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/w6692.c @@ -1054,8 +1054,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&card->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); w6692_mode(bc, ISDN_P_NONE); spin_unlock_irqrestore(&card->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/avmfritz.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/avmfritz.c @@ -449,7 +449,8 @@ { struct fritzcard *fc = bch->hw; struct hdlc_hw *hdlc; - int count, fs, cnt = 0, idx, fillempty = 0; + int count, fs, cnt = 0, idx; + bool fillempty = false; u8 *p; u32 *ptr, val, addr; @@ -462,7 +463,7 @@ return; count = fs; p = bch->fill; - fillempty = 1; + fillempty = true; } else { count = bch->tx_skb->len - bch->tx_idx; if (count <= 0) @@ -477,7 +478,7 @@ hdlc->ctrl.sr.cmd |= HDLC_CMD_XME; } ptr = (u32 *)p; - if (fillempty) { + if (!fillempty) { pr_debug("%s.B%d: %d/%d/%d", fc->name, bch->nr, count, bch->tx_idx, bch->tx_skb->len); bch->tx_idx += count; @@ -856,8 +857,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&fc->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); modehdlc(bch, ISDN_P_NONE); spin_unlock_irqrestore(&fc->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/mISDN/layer2.c +++ linux-3.5.0/drivers/isdn/mISDN/layer2.c @@ -2222,7 +2222,7 @@ InitWin(l2); l2->l2m.fsm = &l2fsm; if (test_bit(FLG_LAPB, &l2->flag) || - test_bit(FLG_PTP, &l2->flag) || + test_bit(FLG_FIXED_TEI, &l2->flag) || test_bit(FLG_LAPD_NET, &l2->flag)) l2->l2m.state = ST_L2_4; else --- linux-3.5.0.orig/drivers/isdn/mISDN/hwchannel.c +++ linux-3.5.0/drivers/isdn/mISDN/hwchannel.c @@ -148,17 +148,16 @@ ch->next_minlen = ch->init_minlen; ch->maxlen = ch->init_maxlen; ch->next_maxlen = ch->init_maxlen; + skb_queue_purge(&ch->rqueue); + ch->rcount = 0; } EXPORT_SYMBOL(mISDN_clear_bchannel); -int +void mISDN_freebchannel(struct bchannel *ch) { + cancel_work_sync(&ch->workq); mISDN_clear_bchannel(ch); - skb_queue_purge(&ch->rqueue); - ch->rcount = 0; - flush_work_sync(&ch->workq); - return 0; } EXPORT_SYMBOL(mISDN_freebchannel); --- linux-3.5.0.orig/drivers/eisa/pci_eisa.c +++ linux-3.5.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-3.5.0.orig/drivers/pinctrl/core.c +++ linux-3.5.0/drivers/pinctrl/core.c @@ -1069,8 +1069,10 @@ seq_printf(s, "group: %s\n", gname); for (i = 0; i < num_pins; i++) { pname = pin_get_name(pctldev, pins[i]); - if (WARN_ON(!pname)) + if (WARN_ON(!pname)) { + mutex_unlock(&pinctrl_mutex); return -EINVAL; + } seq_printf(s, "pin %d (%s)\n", pins[i], pname); } seq_puts(s, "\n"); --- linux-3.5.0.orig/drivers/pinctrl/pinctrl-tegra30.c +++ linux-3.5.0/drivers/pinctrl/pinctrl-tegra30.c @@ -3345,10 +3345,10 @@ FUNCTION(vi_alt3), }; -#define MUXCTL_REG_A 0x3000 -#define PINGROUP_REG_A 0x868 +#define DRV_PINGROUP_REG_A 0x868 /* bank 0 */ +#define PINGROUP_REG_A 0x3000 /* bank 1 */ -#define PINGROUP_REG_Y(r) ((r) - MUXCTL_REG_A) +#define PINGROUP_REG_Y(r) ((r) - PINGROUP_REG_A) #define PINGROUP_REG_N(r) -1 #define PINGROUP(pg_name, f0, f1, f2, f3, f_safe, r, od, ior) \ @@ -3364,25 +3364,25 @@ }, \ .func_safe = TEGRA_MUX_ ## f_safe, \ .mux_reg = PINGROUP_REG_Y(r), \ - .mux_bank = 0, \ + .mux_bank = 1, \ .mux_bit = 0, \ .pupd_reg = PINGROUP_REG_Y(r), \ - .pupd_bank = 0, \ + .pupd_bank = 1, \ .pupd_bit = 2, \ .tri_reg = PINGROUP_REG_Y(r), \ - .tri_bank = 0, \ + .tri_bank = 1, \ .tri_bit = 4, \ .einput_reg = PINGROUP_REG_Y(r), \ - .einput_bank = 0, \ + .einput_bank = 1, \ .einput_bit = 5, \ .odrain_reg = PINGROUP_REG_##od(r), \ - .odrain_bank = 0, \ + .odrain_bank = 1, \ .odrain_bit = 6, \ .lock_reg = PINGROUP_REG_Y(r), \ - .lock_bank = 0, \ + .lock_bank = 1, \ .lock_bit = 7, \ .ioreset_reg = PINGROUP_REG_##ior(r), \ - .ioreset_bank = 0, \ + .ioreset_bank = 1, \ .ioreset_bit = 8, \ .drv_reg = -1, \ } @@ -3401,8 +3401,8 @@ .odrain_reg = -1, \ .lock_reg = -1, \ .ioreset_reg = -1, \ - .drv_reg = ((r) - PINGROUP_REG_A), \ - .drv_bank = 1, \ + .drv_reg = ((r) - DRV_PINGROUP_REG_A), \ + .drv_bank = 0, \ .hsm_bit = hsm_b, \ .schmitt_bit = schmitt_b, \ .lpmd_bit = lpmd_b, \ --- linux-3.5.0.orig/drivers/pinctrl/pinctrl-tegra.c +++ linux-3.5.0/drivers/pinctrl/pinctrl-tegra.c @@ -466,7 +466,7 @@ *bank = g->drv_bank; *reg = g->drv_reg; *bit = g->lpmd_bit; - *width = 1; + *width = 2; break; case TEGRA_PINCONF_PARAM_DRIVE_DOWN_STRENGTH: *bank = g->drv_bank; --- linux-3.5.0.orig/drivers/pinctrl/pinconf.c +++ linux-3.5.0/drivers/pinctrl/pinconf.c @@ -537,8 +537,6 @@ seq_puts(s, "Pin config settings per pin group\n"); seq_puts(s, "Format: group (name): configs\n"); - mutex_lock(&pinctrl_mutex); - while (selector < ngroups) { const char *gname = pctlops->get_group_name(pctldev, selector); @@ -549,8 +547,6 @@ selector++; } - mutex_unlock(&pinctrl_mutex); - return 0; } --- linux-3.5.0.orig/drivers/regulator/max8998.c +++ linux-3.5.0/drivers/regulator/max8998.c @@ -51,39 +51,39 @@ int step; }; -/* Voltage maps */ +/* Voltage maps in uV*/ static const struct voltage_map_desc ldo23_voltage_map_desc = { - .min = 800, .step = 50, .max = 1300, + .min = 800000, .step = 50000, .max = 1300000, }; static const struct voltage_map_desc ldo456711_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc ldo8_voltage_map_desc = { - .min = 3000, .step = 100, .max = 3600, + .min = 3000000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc ldo9_voltage_map_desc = { - .min = 2800, .step = 100, .max = 3100, + .min = 2800000, .step = 100000, .max = 3100000, }; static const struct voltage_map_desc ldo10_voltage_map_desc = { - .min = 950, .step = 50, .max = 1300, + .min = 950000, .step = 50000, .max = 1300000, }; static const struct voltage_map_desc ldo1213_voltage_map_desc = { - .min = 800, .step = 100, .max = 3300, + .min = 800000, .step = 100000, .max = 3300000, }; static const struct voltage_map_desc ldo1415_voltage_map_desc = { - .min = 1200, .step = 100, .max = 3300, + .min = 1200000, .step = 100000, .max = 3300000, }; static const struct voltage_map_desc ldo1617_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc buck12_voltage_map_desc = { - .min = 750, .step = 25, .max = 1525, + .min = 750000, .step = 25000, .max = 1525000, }; static const struct voltage_map_desc buck3_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc buck4_voltage_map_desc = { - .min = 800, .step = 100, .max = 2300, + .min = 800000, .step = 100000, .max = 2300000, }; static const struct voltage_map_desc *ldo_voltage_map[] = { @@ -111,27 +111,6 @@ &buck4_voltage_map_desc, /* BUCK4 */ }; -static int max8998_list_voltage(struct regulator_dev *rdev, - unsigned int selector) -{ - const struct voltage_map_desc *desc; - int ldo = rdev_get_id(rdev); - int val; - - if (ldo >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[ldo]; - if (desc == NULL) - return -EINVAL; - - val = desc->min + desc->step * selector; - if (val > desc->max) - return -EINVAL; - - return val * 1000; -} - static int max8998_get_enable_register(struct regulator_dev *rdev, int *reg, int *shift) { @@ -297,41 +276,18 @@ return val; } -static int max8998_set_voltage_ldo(struct regulator_dev *rdev, - int min_uV, int max_uV, unsigned *selector) +static int max8998_set_voltage_ldo_sel(struct regulator_dev *rdev, + unsigned selector) { struct max8998_data *max8998 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8998->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; - const struct voltage_map_desc *desc; - int ldo = rdev_get_id(rdev); - int reg, shift = 0, mask, ret, i; - - if (ldo >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[ldo]; - if (desc == NULL) - return -EINVAL; - - if (max_vol < desc->min || min_vol > desc->max) - return -EINVAL; - - if (min_vol < desc->min) - min_vol = desc->min; - - i = DIV_ROUND_UP(min_vol - desc->min, desc->step); - - if (desc->min + desc->step*i > max_vol) - return -EINVAL; - - *selector = i; + int reg, shift = 0, mask, ret; ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; - ret = max8998_update_reg(i2c, reg, i<iodev->dev); struct i2c_client *i2c = max8998->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; - const struct voltage_map_desc *desc; int buck = rdev_get_id(rdev); int reg, shift = 0, mask, ret; - int i, j, previous_sel; + int j, previous_sel; static u8 buck1_last_val; - if (buck >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[buck]; - - if (desc == NULL) - return -EINVAL; - - if (max_vol < desc->min || min_vol > desc->max) - return -EINVAL; - - if (min_vol < desc->min) - min_vol = desc->min; - - i = DIV_ROUND_UP(min_vol - desc->min, desc->step); - - if (desc->min + desc->step*i > max_vol) - return -EINVAL; - - *selector = i; - ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; @@ -390,19 +323,19 @@ /* Check if voltage needs to be changed */ /* if previous_voltage equal new voltage, return */ - if (previous_sel == i) { + if (previous_sel == selector) { dev_dbg(max8998->dev, "No voltage change, old:%d, new:%d\n", - max8998_list_voltage(rdev, previous_sel), - max8998_list_voltage(rdev, i)); + regulator_list_voltage_linear(rdev, previous_sel), + regulator_list_voltage_linear(rdev, selector)); return ret; } switch (buck) { case MAX8998_BUCK1: dev_dbg(max8998->dev, - "BUCK1, i:%d, buck1_vol1:%d, buck1_vol2:%d\n" + "BUCK1, selector:%d, buck1_vol1:%d, buck1_vol2:%d\n" "buck1_vol3:%d, buck1_vol4:%d\n", - i, max8998->buck1_vol[0], max8998->buck1_vol[1], + selector, max8998->buck1_vol[0], max8998->buck1_vol[1], max8998->buck1_vol[2], max8998->buck1_vol[3]); if (gpio_is_valid(pdata->buck1_set1) && @@ -411,7 +344,7 @@ /* check if requested voltage */ /* value is already defined */ for (j = 0; j < ARRAY_SIZE(max8998->buck1_vol); j++) { - if (max8998->buck1_vol[j] == i) { + if (max8998->buck1_vol[j] == selector) { max8998->buck1_idx = j; buck1_gpio_set(pdata->buck1_set1, pdata->buck1_set2, j); @@ -426,11 +359,11 @@ max8998->buck1_idx = (buck1_last_val % 2) + 2; dev_dbg(max8998->dev, "max8998->buck1_idx:%d\n", max8998->buck1_idx); - max8998->buck1_vol[max8998->buck1_idx] = i; + max8998->buck1_vol[max8998->buck1_idx] = selector; ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); buck1_gpio_set(pdata->buck1_set1, pdata->buck1_set2, max8998->buck1_idx); buck1_last_val++; @@ -440,20 +373,20 @@ gpio_get_value(pdata->buck1_set2)); break; } else { - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); } break; case MAX8998_BUCK2: dev_dbg(max8998->dev, - "BUCK2, i:%d buck2_vol1:%d, buck2_vol2:%d\n" - , i, max8998->buck2_vol[0], max8998->buck2_vol[1]); + "BUCK2, selector:%d buck2_vol1:%d, buck2_vol2:%d\n", + selector, max8998->buck2_vol[0], max8998->buck2_vol[1]); if (gpio_is_valid(pdata->buck2_set3)) { /* check if requested voltage */ /* value is already defined */ for (j = 0; j < ARRAY_SIZE(max8998->buck2_vol); j++) { - if (max8998->buck2_vol[j] == i) { + if (max8998->buck2_vol[j] == selector) { max8998->buck2_idx = j; buck2_gpio_set(pdata->buck2_set3, j); goto buck2_exit; @@ -465,20 +398,21 @@ max8998_get_voltage_register(rdev, ®, &shift, &mask); - ret = max8998_write_reg(i2c, reg, i); - max8998->buck2_vol[max8998->buck2_idx] = i; + ret = max8998_write_reg(i2c, reg, selector); + max8998->buck2_vol[max8998->buck2_idx] = selector; buck2_gpio_set(pdata->buck2_set3, max8998->buck2_idx); buck2_exit: dev_dbg(max8998->dev, "%s: SET3:%d\n", i2c->name, gpio_get_value(pdata->buck2_set3)); } else { - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); } break; case MAX8998_BUCK3: case MAX8998_BUCK4: - ret = max8998_update_reg(i2c, reg, i<iodev->type == TYPE_MAX8998 && !(val & MAX8998_ENRAMP)) return 0; - difference = (new_selector - old_selector) * desc->step; + difference = (new_selector - old_selector) * desc->step / 1000; if (difference > 0) - return difference / ((val & 0x0f) + 1); + return DIV_ROUND_UP(difference, (val & 0x0f) + 1); return 0; } static struct regulator_ops max8998_ldo_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_ldo, + .set_voltage_sel = max8998_set_voltage_ldo_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable, }; static struct regulator_ops max8998_buck_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_buck, + .set_voltage_sel = max8998_set_voltage_buck_sel, .set_voltage_time_sel = max8998_set_voltage_buck_time_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable, @@ -772,7 +708,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage1 / 1000)) + < pdata->buck1_voltage1) i++; max8998->buck1_vol[0] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE1, i); @@ -783,7 +719,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage2 / 1000)) + < pdata->buck1_voltage2) i++; max8998->buck1_vol[1] = i; @@ -795,7 +731,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage3 / 1000)) + < pdata->buck1_voltage3) i++; max8998->buck1_vol[2] = i; @@ -807,7 +743,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage4 / 1000)) + < pdata->buck1_voltage4) i++; max8998->buck1_vol[3] = i; @@ -833,7 +769,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck2_voltage1 / 1000)) + < pdata->buck2_voltage1) i++; max8998->buck2_vol[0] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE1, i); @@ -844,7 +780,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck2_voltage2 / 1000)) + < pdata->buck2_voltage2) i++; max8998->buck2_vol[1] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE2, i); @@ -860,7 +796,10 @@ desc = ldo_voltage_map[id]; if (desc && regulators[index].ops != &max8998_others_ops) { int count = (desc->max - desc->min) / desc->step + 1; + regulators[index].n_voltages = count; + regulators[index].min_uV = desc->min; + regulators[index].uV_step = desc->step; } config.dev = max8998->dev; --- linux-3.5.0.orig/drivers/regulator/core.c +++ linux-3.5.0/drivers/regulator/core.c @@ -2769,9 +2769,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-3.5.0.orig/drivers/regulator/twl-regulator.c +++ linux-3.5.0/drivers/regulator/twl-regulator.c @@ -1065,7 +1065,7 @@ TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300); TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300); TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300); -TWL4030_FIXED_LDO(VINTANA2, 0x3f, 1500, 11, 100, 0x08); +TWL4030_FIXED_LDO(VINTANA1, 0x3f, 1500, 11, 100, 0x08); TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08); @@ -1146,7 +1146,7 @@ TWL6025_OF_MATCH("ti,twl6025-ldo6", LDO6), TWL6025_OF_MATCH("ti,twl6025-ldoln", LDOLN), TWL6025_OF_MATCH("ti,twl6025-ldousb", LDOUSB), - TWLFIXED_OF_MATCH("ti,twl4030-vintana2", VINTANA2), + TWLFIXED_OF_MATCH("ti,twl4030-vintana1", VINTANA1), TWLFIXED_OF_MATCH("ti,twl4030-vintdig", VINTDIG), TWLFIXED_OF_MATCH("ti,twl4030-vusb1v5", VUSB1V5), TWLFIXED_OF_MATCH("ti,twl4030-vusb1v8", VUSB1V8), --- linux-3.5.0.orig/drivers/regulator/wm831x-dcdc.c +++ linux-3.5.0/drivers/regulator/wm831x-dcdc.c @@ -296,7 +296,7 @@ if (vsel > dcdc->dvs_vsel) { ret = wm831x_set_bits(wm831x, dvs_reg, WM831X_DC1_DVS_VSEL_MASK, - dcdc->dvs_vsel); + vsel); if (ret == 0) dcdc->dvs_vsel = vsel; else --- linux-3.5.0.orig/drivers/regulator/palmas-regulator.c +++ linux-3.5.0/drivers/regulator/palmas-regulator.c @@ -675,7 +675,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; } --- linux-3.5.0.orig/drivers/regulator/max8997.c +++ linux-3.5.0/drivers/regulator/max8997.c @@ -69,26 +69,26 @@ int step; }; -/* Voltage maps in mV */ +/* Voltage maps in uV */ static const struct voltage_map_desc ldo_voltage_map_desc = { - .min = 800, .max = 3950, .step = 50, + .min = 800000, .max = 3950000, .step = 50000, }; /* LDO1 ~ 18, 21 all */ static const struct voltage_map_desc buck1245_voltage_map_desc = { - .min = 650, .max = 2225, .step = 25, + .min = 650000, .max = 2225000, .step = 25000, }; /* Buck1, 2, 4, 5 */ static const struct voltage_map_desc buck37_voltage_map_desc = { - .min = 750, .max = 3900, .step = 50, + .min = 750000, .max = 3900000, .step = 50000, }; /* Buck3, 7 */ -/* current map in mA */ +/* current map in uA */ static const struct voltage_map_desc charger_current_map_desc = { - .min = 200, .max = 950, .step = 50, + .min = 200000, .max = 950000, .step = 50000, }; static const struct voltage_map_desc topoff_current_map_desc = { - .min = 50, .max = 200, .step = 10, + .min = 50000, .max = 200000, .step = 10000, }; static const struct voltage_map_desc *reg_voltage_map[] = { @@ -192,7 +192,7 @@ if (val > desc->max) return -EINVAL; - return val * 1000; + return val; } static int max8997_get_enable_register(struct regulator_dev *rdev, @@ -483,7 +483,6 @@ { struct max8997_data *max8997 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8997->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; const struct voltage_map_desc *desc; int rid = rdev_get_id(rdev); int i, reg, shift, mask, ret; @@ -507,7 +506,7 @@ desc = reg_voltage_map[rid]; - i = max8997_get_voltage_proper_val(desc, min_vol, max_vol); + i = max8997_get_voltage_proper_val(desc, min_uV, max_uV); if (i < 0) return i; @@ -555,7 +554,7 @@ case MAX8997_BUCK4: case MAX8997_BUCK5: return DIV_ROUND_UP(desc->step * (new_selector - old_selector), - max8997->ramp_delay); + max8997->ramp_delay * 1000); } return 0; @@ -654,7 +653,6 @@ const struct voltage_map_desc *desc; int new_val, new_idx, damage, tmp_val, tmp_idx, tmp_dmg; bool gpio_dvs_mode = false; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; if (rid < MAX8997_BUCK1 || rid > MAX8997_BUCK7) return -EINVAL; @@ -679,7 +677,7 @@ selector); desc = reg_voltage_map[rid]; - new_val = max8997_get_voltage_proper_val(desc, min_vol, max_vol); + new_val = max8997_get_voltage_proper_val(desc, min_uV, max_uV); if (new_val < 0) return new_val; @@ -977,8 +975,8 @@ max8997->buck1_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck1_voltage[i] / 1000, - pdata->buck1_voltage[i] / 1000 + + pdata->buck1_voltage[i], + pdata->buck1_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; @@ -986,8 +984,8 @@ max8997->buck2_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck2_voltage[i] / 1000, - pdata->buck2_voltage[i] / 1000 + + pdata->buck2_voltage[i], + pdata->buck2_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; @@ -995,8 +993,8 @@ max8997->buck5_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck5_voltage[i] / 1000, - pdata->buck5_voltage[i] / 1000 + + pdata->buck5_voltage[i], + pdata->buck5_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; --- linux-3.5.0.orig/drivers/block/brd.c +++ linux-3.5.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-3.5.0.orig/drivers/block/floppy.c +++ linux-3.5.0/drivers/block/floppy.c @@ -4138,6 +4138,10 @@ raw_cmd = NULL; + floppy_wq = alloc_ordered_workqueue("floppy", 0); + if (!floppy_wq) + return -ENOMEM; + for (dr = 0; dr < N_DRIVE; dr++) { disks[dr] = alloc_disk(1); if (!disks[dr]) { @@ -4145,16 +4149,11 @@ goto out_put_disk; } - floppy_wq = alloc_ordered_workqueue("floppy", 0); - if (!floppy_wq) { - err = -ENOMEM; - goto out_put_disk; - } - disks[dr]->queue = blk_init_queue(do_fd_request, &floppy_lock); if (!disks[dr]->queue) { + put_disk(disks[dr]); err = -ENOMEM; - goto out_destroy_workq; + goto out_put_disk; } blk_queue_max_hw_sectors(disks[dr]->queue, 64); @@ -4294,7 +4293,7 @@ err = platform_device_register(&floppy_device[drive]); if (err) - goto out_release_dma; + goto out_remove_drives; err = device_create_file(&floppy_device[drive].dev, &dev_attr_cmos); @@ -4312,17 +4311,25 @@ out_unreg_platform_dev: platform_device_unregister(&floppy_device[drive]); +out_remove_drives: + while (drive--) { + if ((allowed_drive_mask & (1 << drive)) && + fdc_state[FDC(drive)].version != FDC_NONE) { + del_gendisk(disks[drive]); + device_remove_file(&floppy_device[drive].dev, &dev_attr_cmos); + platform_device_unregister(&floppy_device[drive]); + } + } out_release_dma: if (atomic_read(&usage_count)) floppy_release_irq_and_dma(); out_unreg_region: blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); platform_driver_unregister(&floppy_driver); -out_destroy_workq: - destroy_workqueue(floppy_wq); out_unreg_blkdev: unregister_blkdev(FLOPPY_MAJOR, "fd"); out_put_disk: + destroy_workqueue(floppy_wq); while (dr--) { del_timer_sync(&motor_off_timer[dr]); if (disks[dr]->queue) { @@ -4531,6 +4538,8 @@ unregister_blkdev(FLOPPY_MAJOR, "fd"); platform_driver_unregister(&floppy_driver); + destroy_workqueue(floppy_wq); + for (drive = 0; drive < N_DRIVE; drive++) { del_timer_sync(&motor_off_timer[drive]); @@ -4555,7 +4564,6 @@ cancel_delayed_work_sync(&fd_timeout); cancel_delayed_work_sync(&fd_timer); - destroy_workqueue(floppy_wq); if (atomic_read(&usage_count)) floppy_release_irq_and_dma(); --- linux-3.5.0.orig/drivers/block/cciss.c +++ linux-3.5.0/drivers/block/cciss.c @@ -161,8 +161,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, @@ -1140,16 +1138,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, @@ -1176,7 +1164,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); @@ -1216,7 +1204,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 |= @@ -1258,7 +1246,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 |= @@ -1308,11 +1296,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; @@ -1353,12 +1344,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; @@ -1395,10 +1389,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; @@ -1407,10 +1404,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-3.5.0.orig/drivers/block/sunvdc.c +++ linux-3.5.0/drivers/block/sunvdc.c @@ -461,7 +461,7 @@ int op_len, err; void *req_buf; - if (!(((u64)1 << ((u64)op - 1)) & port->operations)) + if (!(((u64)1 << (u64)op) & port->operations)) return -EOPNOTSUPP; switch (op) { --- linux-3.5.0.orig/drivers/block/loop.c +++ linux-3.5.0/drivers/block/loop.c @@ -908,6 +908,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: @@ -1004,8 +1009,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) { @@ -1263,11 +1270,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; @@ -1835,11 +1840,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. @@ -1857,8 +1866,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); @@ -1871,6 +1882,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-3.5.0.orig/drivers/block/virtio_blk.c +++ linux-3.5.0/drivers/block/virtio_blk.c @@ -21,8 +21,6 @@ struct virtio_blk { - spinlock_t lock; - struct virtio_device *vdev; struct virtqueue *vq; @@ -65,7 +63,7 @@ unsigned int len; unsigned long flags; - spin_lock_irqsave(&vblk->lock, flags); + spin_lock_irqsave(vblk->disk->queue->queue_lock, flags); while ((vbr = virtqueue_get_buf(vblk->vq, &len)) != NULL) { int error; @@ -99,7 +97,7 @@ } /* In case queue is stopped waiting for more buffers. */ blk_start_queue(vblk->disk->queue); - spin_unlock_irqrestore(&vblk->lock, flags); + spin_unlock_irqrestore(vblk->disk->queue->queue_lock, flags); } static bool do_req(struct request_queue *q, struct virtio_blk *vblk, @@ -431,7 +429,6 @@ goto out_free_index; } - spin_lock_init(&vblk->lock); vblk->vdev = vdev; vblk->sg_elems = sg_elems; sg_init_table(vblk->sg, vblk->sg_elems); @@ -456,7 +453,7 @@ goto out_mempool; } - q = vblk->disk->queue = blk_init_queue(do_virtblk_request, &vblk->lock); + q = vblk->disk->queue = blk_init_queue(do_virtblk_request, NULL); if (!q) { err = -ENOMEM; goto out_put_disk; @@ -576,35 +573,30 @@ { struct virtio_blk *vblk = vdev->priv; int index = vblk->index; - struct virtblk_req *vbr; - unsigned long flags; + int refc; /* Prevent config work handler from accessing the device. */ mutex_lock(&vblk->config_lock); vblk->config_enable = false; mutex_unlock(&vblk->config_lock); + del_gendisk(vblk->disk); + blk_cleanup_queue(vblk->disk->queue); + /* Stop all the virtqueues. */ vdev->config->reset(vdev); flush_work(&vblk->config_work); - del_gendisk(vblk->disk); - - /* Abort requests dispatched to driver. */ - spin_lock_irqsave(&vblk->lock, flags); - while ((vbr = virtqueue_detach_unused_buf(vblk->vq))) { - __blk_end_request_all(vbr->req, -EIO); - mempool_free(vbr, vblk->pool); - } - spin_unlock_irqrestore(&vblk->lock, flags); - - blk_cleanup_queue(vblk->disk->queue); + refc = atomic_read(&disk_to_dev(vblk->disk)->kobj.kref.refcount); put_disk(vblk->disk); mempool_destroy(vblk->pool); vdev->config->del_vqs(vdev); kfree(vblk); - ida_simple_remove(&vd_index_ida, index); + + /* Only free device id if we don't have any users */ + if (refc == 1) + ida_simple_remove(&vd_index_ida, index); } #ifdef CONFIG_PM --- linux-3.5.0.orig/drivers/block/cciss_scsi.c +++ linux-3.5.0/drivers/block/cciss_scsi.c @@ -763,16 +763,7 @@ { case CMD_TARGET_STATUS: /* Pass it up to the upper layers... */ - if( ei->ScsiStatus) - { -#if 0 - printk(KERN_WARNING "cciss: cmd %p " - "has SCSI Status = %x\n", - c, ei->ScsiStatus); -#endif - cmd->result |= (ei->ScsiStatus << 1); - } - else { /* scsi status is zero??? How??? */ + if (!ei->ScsiStatus) { /* Ordinarily, this case should never happen, but there is a bug in some released firmware revisions that allows it to happen @@ -804,6 +795,7 @@ } break; case CMD_PROTOCOL_ERR: + cmd->result = DID_ERROR << 16; dev_warn(&h->pdev->dev, "%p has protocol error\n", c); break; --- linux-3.5.0.orig/drivers/block/nbd.c +++ linux-3.5.0/drivers/block/nbd.c @@ -57,7 +57,7 @@ static unsigned int nbds_max = 16; static struct nbd_device *nbd_dev; -static int max_part; +static int max_part = 15; /* * Use just one lock (or at most 1 per NIC). Two arguments for this: @@ -445,6 +445,14 @@ req->errors++; nbd_end_request(req); } + + while (!list_empty(&nbd->waiting_queue)) { + req = list_entry(nbd->waiting_queue.next, struct request, + queuelist); + list_del_init(&req->queuelist); + req->errors++; + nbd_end_request(req); + } } @@ -576,12 +584,20 @@ 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_send_req(nbd, &sreq); return 0; } @@ -594,6 +610,8 @@ nbd->file = NULL; 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; @@ -674,6 +692,7 @@ nbd->file = NULL; nbd_clear_que(nbd); dev_warn(disk_to_dev(nbd->disk), "queue cleared\n"); + kill_bdev(bdev); if (file) fput(file); nbd->bytesize = 0; --- linux-3.5.0.orig/drivers/block/xen-blkback/common.h +++ linux-3.5.0/drivers/block/xen-blkback/common.h @@ -76,11 +76,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__)); @@ -112,11 +119,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__)); @@ -262,6 +277,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; } } @@ -293,6 +313,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-3.5.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-3.5.0/drivers/block/xen-blkback/blkback.c @@ -337,7 +337,7 @@ invcount++; } - ret = gnttab_unmap_refs(unmap, pages, invcount, false); + ret = gnttab_unmap_refs(unmap, NULL, pages, invcount); BUG_ON(ret); } @@ -422,6 +422,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); @@ -543,17 +553,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; } @@ -720,13 +743,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++) @@ -754,6 +771,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-3.5.0.orig/drivers/block/xen-blkback/xenbus.c +++ linux-3.5.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-3.5.0.orig/drivers/block/mtip32xx/mtip32xx.h +++ linux-3.5.0/drivers/block/mtip32xx/mtip32xx.h @@ -33,6 +33,9 @@ /* offset of Device Control register in PCIe extended capabilites space */ #define PCIE_CONFIG_EXT_DEVICE_CONTROL_OFFSET 0x48 +/* check for erase mode support during secure erase */ +#define MTIP_SEC_ERASE_MODE 0x2 + /* # of times to retry timed out/failed IOs */ #define MTIP_MAX_RETRIES 2 @@ -76,7 +79,13 @@ /* Micron Vendor ID & P320x SSD Device ID */ #define PCI_VENDOR_ID_MICRON 0x1344 -#define P320_DEVICE_ID 0x5150 +#define P320H_DEVICE_ID 0x5150 +#define P320M_DEVICE_ID 0x5151 +#define P320S_DEVICE_ID 0x5152 +#define P325M_DEVICE_ID 0x5153 +#define P420H_DEVICE_ID 0x5160 +#define P420M_DEVICE_ID 0x5161 +#define P425M_DEVICE_ID 0x5163 /* Driver name and version strings */ #define MTIP_DRV_NAME "mtip32xx" @@ -131,10 +140,12 @@ MTIP_PF_SVC_THD_STOP_BIT = 8, /* below are bit numbers in 'dd_flag' defined in driver_data */ + MTIP_DDF_SEC_LOCK_BIT = 0, MTIP_DDF_REMOVE_PENDING_BIT = 1, MTIP_DDF_OVER_TEMP_BIT = 2, MTIP_DDF_WRITE_PROTECT_BIT = 3, MTIP_DDF_STOP_IO = ((1 << MTIP_DDF_REMOVE_PENDING_BIT) | \ + (1 << MTIP_DDF_SEC_LOCK_BIT) | \ (1 << MTIP_DDF_OVER_TEMP_BIT) | \ (1 << MTIP_DDF_WRITE_PROTECT_BIT)), @@ -144,14 +155,14 @@ MTIP_DDF_REBUILD_FAILED_BIT = 8, }; -__packed struct smart_attr{ +struct smart_attr { u8 attr_id; u16 flags; u8 cur; u8 worst; u32 data; u8 res[3]; -}; +} __packed; /* Register Frame Information Structure (FIS), host to device. */ struct host_to_dev_fis { --- linux-3.5.0.orig/drivers/block/mtip32xx/mtip32xx.c +++ linux-3.5.0/drivers/block/mtip32xx/mtip32xx.c @@ -559,7 +559,7 @@ struct mtip_cmd *command; int tag, cmdto_cnt = 0; unsigned int bit, group; - unsigned int num_command_slots = port->dd->slot_groups * 32; + unsigned int num_command_slots; unsigned long to, tagaccum[SLOTBITS_IN_LONGS]; if (unlikely(!port)) @@ -572,6 +572,7 @@ } /* clear the tag accumulator */ memset(tagaccum, 0, SLOTBITS_IN_LONGS * sizeof(long)); + num_command_slots = port->dd->slot_groups * 32; for (tag = 0; tag < num_command_slots; tag++) { /* @@ -1148,11 +1149,15 @@ reply = port->rxfis + RX_FIS_D2H_REG; task_file_data = readl(port->mmio+PORT_TFDATA); - if ((task_file_data & 1) || (fis->command == ATA_CMD_SEC_ERASE_UNIT)) + if (fis->command == ATA_CMD_SEC_ERASE_UNIT) + clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag); + + if ((task_file_data & 1)) return false; if (fis->command == ATA_CMD_SEC_ERASE_PREP) { set_bit(MTIP_PF_SE_ACTIVE_BIT, &port->flags); + set_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag); port->ic_pause_timer = jiffies; return true; } else if ((fis->command == ATA_CMD_DOWNLOAD_MICRO) && @@ -1900,7 +1905,7 @@ int rv = 0, xfer_sz = command[3]; if (xfer_sz) { - if (user_buffer) + if (!user_buffer) return -EFAULT; buf = dmam_alloc_coherent(&port->dd->pdev->dev, @@ -2031,8 +2036,9 @@ } return rv; } - -static void mtip_set_timeout(struct host_to_dev_fis *fis, unsigned int *timeout) +static void mtip_set_timeout(struct driver_data *dd, + struct host_to_dev_fis *fis, + unsigned int *timeout, u8 erasemode) { switch (fis->command) { case ATA_CMD_DOWNLOAD_MICRO: @@ -2040,10 +2046,13 @@ break; case ATA_CMD_SEC_ERASE_UNIT: case 0xFC: - *timeout = 240000; /* 4 minutes */ + if (erasemode) + *timeout = ((*(dd->port->identify + 90) * 2) * 60000); + else + *timeout = ((*(dd->port->identify + 89) * 2) * 60000); break; case ATA_CMD_STANDBYNOW1: - *timeout = 10000; /* 10 seconds */ + *timeout = 120000; /* 2 minutes */ break; case 0xF7: case 0xFA: @@ -2083,6 +2092,7 @@ unsigned int transfer_size; unsigned long task_file_data; int intotal = outtotal + req_task->out_size; + int erasemode = 0; taskout = req_task->out_size; taskin = req_task->in_size; @@ -2208,7 +2218,13 @@ fis.lba_hi, fis.device); - mtip_set_timeout(&fis, &timeout); + /* check for erase mode support during secure erase.*/ + if ((fis.command == ATA_CMD_SEC_ERASE_UNIT) && outbuf && + (outbuf[0] & MTIP_SEC_ERASE_MODE)) { + erasemode = 1; + } + + mtip_set_timeout(dd, &fis, &timeout, erasemode); /* Determine the correct transfer size.*/ if (force_single_sector) @@ -2424,7 +2440,7 @@ * return value * None */ -static void mtip_hw_submit_io(struct driver_data *dd, sector_t start, +static void mtip_hw_submit_io(struct driver_data *dd, sector_t sector, int nsect, int nents, int tag, void *callback, void *data, int dir) { @@ -2432,6 +2448,7 @@ struct mtip_port *port = dd->port; struct mtip_cmd *command = &port->commands[tag]; int dma_dir = (dir == READ) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; + u64 start = sector; /* Map the scatter list for DMA access */ nents = dma_map_sg(&dd->pdev->dev, command->sg, nents, dma_dir); @@ -2450,8 +2467,12 @@ fis->opts = 1 << 7; fis->command = (dir == READ ? ATA_CMD_FPDMA_READ : ATA_CMD_FPDMA_WRITE); - *((unsigned int *) &fis->lba_low) = (start & 0xFFFFFF); - *((unsigned int *) &fis->lba_low_ex) = ((start >> 24) & 0xFFFFFF); + fis->lba_low = start & 0xFF; + fis->lba_mid = (start >> 8) & 0xFF; + fis->lba_hi = (start >> 16) & 0xFF; + fis->lba_low_ex = (start >> 24) & 0xFF; + fis->lba_mid_ex = (start >> 32) & 0xFF; + fis->lba_hi_ex = (start >> 40) & 0xFF; fis->device = 1 << 6; fis->features = nsect & 0xFF; fis->features_ex = (nsect >> 8) & 0xFF; @@ -2588,9 +2609,6 @@ if (!len || size) return 0; - if (size < 0) - return -EINVAL; - size += sprintf(&buf[size], "H/ S ACTive : [ 0x"); for (n = dd->slot_groups-1; n >= 0; n--) @@ -2660,9 +2678,6 @@ if (!len || size) return 0; - if (size < 0) - return -EINVAL; - size += sprintf(&buf[size], "Flag-port : [ %08lX ]\n", dd->port->flags); size += sprintf(&buf[size], "Flag-dd : [ %08lX ]\n", @@ -3214,8 +3229,8 @@ "Unable to check write protect progress\n"); else dev_info(&dd->pdev->dev, - "Write protect progress: %d%% (%d blocks)\n", - attr242.cur, attr242.data); + "Write protect progress: %u%% (%u blocks)\n", + attr242.cur, le32_to_cpu(attr242.data)); return rv; out3: @@ -3619,6 +3634,10 @@ bio_endio(bio, -ENODATA); return; } + if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag))) { + bio_endio(bio, -ENODATA); + return; + } } if (unlikely(!bio_has_data(bio))) { @@ -4168,7 +4187,13 @@ /* Table of device ids supported by this driver. */ static DEFINE_PCI_DEVICE_TABLE(mtip_pci_tbl) = { - { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320H_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320S_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P325M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P420H_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P420M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P425M_DEVICE_ID) }, { 0 } }; @@ -4199,12 +4224,12 @@ { int error; - printk(KERN_INFO MTIP_DRV_NAME " Version " MTIP_DRV_VERSION "\n"); + pr_info(MTIP_DRV_NAME " Version " MTIP_DRV_VERSION "\n"); /* Allocate a major block device number to use with this driver. */ error = register_blkdev(0, MTIP_DRV_NAME); if (error <= 0) { - printk(KERN_ERR "Unable to register block device (%d)\n", + pr_err("Unable to register block device (%d)\n", error); return -EBUSY; } @@ -4213,7 +4238,7 @@ if (!dfs_parent) { dfs_parent = debugfs_create_dir("rssd", NULL); if (IS_ERR_OR_NULL(dfs_parent)) { - printk(KERN_WARNING "Error creating debugfs parent\n"); + pr_warn("Error creating debugfs parent\n"); dfs_parent = NULL; } } --- linux-3.5.0.orig/drivers/block/aoe/aoe.h +++ linux-3.5.0/drivers/block/aoe/aoe.h @@ -1,5 +1,5 @@ /* Copyright (c) 2007 Coraid, Inc. See COPYING for GPL terms. */ -#define VERSION "47" +#define VERSION "47q" #define AOE_MAJOR 152 #define DEVICE_NAME "aoe" --- linux-3.5.0.orig/drivers/block/aoe/aoecmd.c +++ linux-3.5.0/drivers/block/aoe/aoecmd.c @@ -30,11 +30,13 @@ { 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); + skb_checksum_none_assert(skb); } return skb; } --- linux-3.5.0.orig/drivers/block/aoe/aoeblk.c +++ linux-3.5.0/drivers/block/aoe/aoeblk.c @@ -276,8 +276,6 @@ goto err_mempool; blk_queue_make_request(d->blkq, aoeblk_make_request); d->blkq->backing_dev_info.name = "aoe"; - if (bdi_init(&d->blkq->backing_dev_info)) - goto err_blkq; spin_lock_irqsave(&d->lock, flags); gd->major = AOE_MAJOR; gd->first_minor = d->sysminor * AOE_PARTITIONS; @@ -298,9 +296,6 @@ aoedisk_add_sysfs(d); return; -err_blkq: - blk_cleanup_queue(d->blkq); - d->blkq = NULL; err_mempool: mempool_destroy(d->bufpool); err_disk: --- linux-3.5.0.orig/drivers/block/drbd/drbd_receiver.c +++ linux-3.5.0/drivers/block/drbd/drbd_receiver.c @@ -2260,7 +2260,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. */ --- linux-3.5.0.orig/drivers/pcmcia/pxa2xx_sharpsl.c +++ linux-3.5.0/drivers/pcmcia/pxa2xx_sharpsl.c @@ -194,7 +194,7 @@ sharpsl_pcmcia_init_reset(skt); } -static struct pcmcia_low_level sharpsl_pcmcia_ops __initdata = { +static struct pcmcia_low_level sharpsl_pcmcia_ops = { .owner = THIS_MODULE, .hw_init = sharpsl_pcmcia_hw_init, .socket_state = sharpsl_pcmcia_socket_state, --- linux-3.5.0.orig/drivers/pcmcia/vrc4171_card.c +++ linux-3.5.0/drivers/pcmcia/vrc4171_card.c @@ -246,6 +246,7 @@ socket = &vrc4171_sockets[slot]; socket->csc_irq = search_nonuse_irq(); socket->io_irq = search_nonuse_irq(); + spin_lock_init(&socket->lock); return 0; } --- linux-3.5.0.orig/drivers/connector/cn_proc.c +++ linux-3.5.0/drivers/connector/cn_proc.c @@ -303,7 +303,13 @@ if (msg->len != sizeof(*mc_op)) return; - mc_op = (enum proc_cn_mcast_op*)msg->data; + /* 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: atomic_inc(&proc_event_num_listeners); @@ -315,6 +321,8 @@ err = EINVAL; break; } + +out: cn_proc_ack(err, msg->seq, msg->ack); } --- linux-3.5.0.orig/drivers/tty/tty_io.c +++ linux-3.5.0/drivers/tty/tty_io.c @@ -939,6 +939,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 @@ -975,8 +983,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; } @@ -1079,7 +1089,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-3.5.0.orig/drivers/tty/pty.c +++ linux-3.5.0/drivers/tty/pty.c @@ -49,7 +49,6 @@ tty->packet = 0; 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); @@ -617,6 +616,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-3.5.0.orig/drivers/tty/tty_ioctl.c +++ linux-3.5.0/drivers/tty/tty_ioctl.c @@ -617,7 +617,7 @@ if (opt & TERMIOS_WAIT) { tty_wait_until_sent(tty, 0); if (signal_pending(current)) - return -EINTR; + return -ERESTARTSYS; } tty_set_termios(tty, &tmp_termios); @@ -684,7 +684,7 @@ if (opt & TERMIOS_WAIT) { tty_wait_until_sent(tty, 0); if (signal_pending(current)) - return -EINTR; + return -ERESTARTSYS; } mutex_lock(&tty->termios_mutex); --- linux-3.5.0.orig/drivers/tty/n_tty.c +++ linux-3.5.0/drivers/tty/n_tty.c @@ -1529,6 +1529,14 @@ tty->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); @@ -1728,7 +1736,8 @@ do_it_again: - BUG_ON(!tty->read_buf); + if (WARN_ON(!tty->read_buf)) + return -EAGAIN; c = job_control(tty, file); if (c < 0) --- linux-3.5.0.orig/drivers/tty/n_gsm.c +++ linux-3.5.0/drivers/tty/n_gsm.c @@ -875,7 +875,7 @@ /* dlci->skb is locked by tx_lock */ if (dlci->skb == NULL) { - dlci->skb = skb_dequeue(&dlci->skb_list); + dlci->skb = skb_dequeue_tail(&dlci->skb_list); if (dlci->skb == NULL) return 0; first = 1; @@ -899,8 +899,11 @@ /* FIXME: need a timer or something to kick this so it can't get stuck with no work outstanding and no buffer free */ - if (msg == NULL) + if (msg == NULL) { + skb_queue_tail(&dlci->skb_list, dlci->skb); + dlci->skb = NULL; return -ENOMEM; + } dp = msg->data; if (dlci->adaption == 4) { /* Interruptible framed (Packetised Data) */ @@ -971,16 +974,19 @@ static void gsm_dlci_data_kick(struct gsm_dlci *dlci) { unsigned long flags; + int sweep; spin_lock_irqsave(&dlci->gsm->tx_lock, flags); /* If we have nothing running then we need to fire up */ + sweep = (dlci->gsm->tx_bytes < TX_THRESH_LO); if (dlci->gsm->tx_bytes == 0) { if (dlci->net) gsm_dlci_data_output_framed(dlci->gsm, dlci); else gsm_dlci_data_output(dlci->gsm, dlci); - } else if (dlci->gsm->tx_bytes < TX_THRESH_LO) - gsm_dlci_data_sweep(dlci->gsm); + } + if (sweep) + gsm_dlci_data_sweep(dlci->gsm); spin_unlock_irqrestore(&dlci->gsm->tx_lock, flags); } @@ -1190,6 +1196,8 @@ u8 *data, int clen) { u8 buf[1]; + unsigned long flags; + switch (command) { case CMD_CLD: { struct gsm_dlci *dlci = gsm->dlci[0]; @@ -1215,7 +1223,9 @@ gsm->constipated = 0; gsm_control_reply(gsm, CMD_FCOFF, NULL, 0); /* Kick the link in case it is idling */ + spin_lock_irqsave(&gsm->tx_lock, flags); gsm_data_kick(gsm); + spin_unlock_irqrestore(&gsm->tx_lock, flags); break; case CMD_MSC: /* Out of band modem line change indicator for a DLCI */ @@ -1682,6 +1692,8 @@ kref_put(&dlci->ref, gsm_dlci_free); } +static void gsm_destroy_network(struct gsm_dlci *dlci); + /** * gsm_dlci_release - release DLCI * @dlci: DLCI to destroy @@ -1695,9 +1707,19 @@ { struct tty_struct *tty = tty_port_tty_get(&dlci->port); if (tty) { + mutex_lock(&dlci->mutex); + gsm_destroy_network(dlci); + mutex_unlock(&dlci->mutex); + + /* tty_vhangup needs the tty_lock, so unlock and + relock after doing the hangup. */ + tty_unlock(); tty_vhangup(tty); + tty_lock(); + tty_port_tty_set(&dlci->port, NULL); tty_kref_put(tty); } + dlci->state = DLCI_CLOSED; dlci_put(dlci); } @@ -2377,12 +2399,12 @@ /* Queue poll */ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); + spin_lock_irqsave(&gsm->tx_lock, flags); gsm_data_kick(gsm); if (gsm->tx_bytes < TX_THRESH_LO) { - spin_lock_irqsave(&gsm->tx_lock, flags); gsm_dlci_data_sweep(gsm); - spin_unlock_irqrestore(&gsm->tx_lock, flags); } + spin_unlock_irqrestore(&gsm->tx_lock, flags); } /** @@ -2889,6 +2911,10 @@ gsm = gsm_mux[mux]; if (gsm->dead) return -EL2HLT; + /* If DLCI 0 is not yet fully open return an error. This is ok from a locking + perspective as we don't have to worry about this if DLCI0 is lost */ + if (gsm->dlci[0] && gsm->dlci[0]->state != DLCI_OPEN) + return -EL2NSYNC; dlci = gsm->dlci[line]; if (dlci == NULL) dlci = gsm_dlci_alloc(gsm, line); @@ -2919,6 +2945,8 @@ if (dlci == NULL) return; + if (dlci->state == DLCI_CLOSED) + return; mutex_lock(&dlci->mutex); gsm_destroy_network(dlci); mutex_unlock(&dlci->mutex); @@ -2937,6 +2965,8 @@ static void gsmtty_hangup(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; tty_port_hangup(&dlci->port); gsm_dlci_begin_close(dlci); } @@ -2944,9 +2974,12 @@ static int gsmtty_write(struct tty_struct *tty, const unsigned char *buf, int len) { + int sent; struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; /* Stuff the bytes into the fifo queue */ - int sent = kfifo_in_locked(dlci->fifo, buf, len, &dlci->lock); + sent = kfifo_in_locked(dlci->fifo, buf, len, &dlci->lock); /* Need to kick the channel */ gsm_dlci_data_kick(dlci); return sent; @@ -2955,18 +2988,24 @@ static int gsmtty_write_room(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return TX_SIZE - kfifo_len(dlci->fifo); } static int gsmtty_chars_in_buffer(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return kfifo_len(dlci->fifo); } static void gsmtty_flush_buffer(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; /* Caution needed: If we implement reliable transport classes then the data being transmitted can't simply be junked once it has first hit the stack. Until then we can just blow it @@ -2985,6 +3024,8 @@ static int gsmtty_tiocmget(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return dlci->modem_rx; } @@ -2994,6 +3035,8 @@ struct gsm_dlci *dlci = tty->driver_data; unsigned int modem_tx = dlci->modem_tx; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; modem_tx &= ~clear; modem_tx |= set; @@ -3012,6 +3055,8 @@ struct gsm_netconfig nc; int index; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; switch (cmd) { case GSMIOC_ENABLE_NET: if (copy_from_user(&nc, (void __user *)arg, sizeof(nc))) @@ -3038,6 +3083,9 @@ static void gsmtty_set_termios(struct tty_struct *tty, struct ktermios *old) { + struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; /* For the moment its fixed. In actual fact the speed information for the virtual channel can be propogated in both directions by the RPN control message. This however rapidly gets nasty as we @@ -3049,6 +3097,8 @@ static void gsmtty_throttle(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; if (tty->termios->c_cflag & CRTSCTS) dlci->modem_tx &= ~TIOCM_DTR; dlci->throttled = 1; @@ -3059,6 +3109,8 @@ static void gsmtty_unthrottle(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; if (tty->termios->c_cflag & CRTSCTS) dlci->modem_tx |= TIOCM_DTR; dlci->throttled = 0; @@ -3070,6 +3122,8 @@ { struct gsm_dlci *dlci = tty->driver_data; int encode = 0; /* Off */ + if (dlci->state == DLCI_CLOSED) + return -EINVAL; if (state == -1) /* "On indefinitely" - we can't encode this properly */ --- linux-3.5.0.orig/drivers/tty/serial/sunsu.c +++ linux-3.5.0/drivers/tty/serial/sunsu.c @@ -968,6 +968,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 @@ -1337,13 +1338,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; /* @@ -1408,7 +1404,6 @@ static int __devinit 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; @@ -1418,16 +1413,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); @@ -1461,6 +1456,8 @@ } dev_set_drvdata(&op->dev, up); + nr_inst++; + return 0; } @@ -1488,7 +1485,7 @@ dev_set_drvdata(&op->dev, up); - inst++; + nr_inst++; return 0; --- linux-3.5.0.orig/drivers/tty/serial/of_serial.c +++ linux-3.5.0/drivers/tty/serial/of_serial.c @@ -208,6 +208,12 @@ { .compatible = "ns16750", .data = (void *)PORT_16750, }, { .compatible = "ns16850", .data = (void *)PORT_16850, }, { .compatible = "nvidia,tegra20-uart", .data = (void *)PORT_TEGRA, }, + { .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-3.5.0.orig/drivers/tty/serial/imx.c +++ linux-3.5.0/drivers/tty/serial/imx.c @@ -132,6 +132,7 @@ #define UCR4_OREN (1<<1) /* Receiver overrun interrupt enable */ #define UCR4_DREN (1<<0) /* Recv data ready interrupt enable */ #define UFCR_RXTL_SHF 0 /* Receiver trigger level shift */ +#define UFCR_DCEDTE (1<<6) /* DCE/DTE mode select */ #define UFCR_RFDIV (7<<7) /* Reference freq divider mask */ #define UFCR_RFDIV_REG(x) (((x) < 7 ? 6 - (x) : 6) << 7) #define UFCR_TXTL_SHF 10 /* Transmitter trigger level shift */ @@ -668,22 +669,11 @@ static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode) { unsigned int val; - unsigned int ufcr_rfdiv; - - /* set receiver / transmitter trigger level. - * RFDIV is set such way to satisfy requested uartclk value - */ - val = TXTL << 10 | RXTL; - ufcr_rfdiv = (clk_get_rate(sport->clk_per) + sport->port.uartclk / 2) - / sport->port.uartclk; - - if(!ufcr_rfdiv) - ufcr_rfdiv = 1; - - val |= UFCR_RFDIV_REG(ufcr_rfdiv); + /* set receiver / transmitter trigger level */ + val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE); + val |= TXTL << UFCR_TXTL_SHF | RXTL; writel(val, sport->port.membase + UFCR); - return 0; } @@ -758,6 +748,7 @@ } } + spin_lock_irqsave(&sport->port.lock, flags); /* * Finally, clear and enable interrupts */ @@ -811,7 +802,6 @@ /* * Enable modem status interrupts */ - spin_lock_irqsave(&sport->port.lock,flags); imx_enable_ms(&sport->port); spin_unlock_irqrestore(&sport->port.lock,flags); @@ -841,10 +831,13 @@ { struct imx_port *sport = (struct imx_port *)port; unsigned long temp; + unsigned long flags; + spin_lock_irqsave(&sport->port.lock, flags); temp = readl(sport->port.membase + UCR2); temp &= ~(UCR2_TXEN); writel(temp, sport->port.membase + UCR2); + spin_unlock_irqrestore(&sport->port.lock, flags); if (USE_IRDA(sport)) { struct imxuart_platform_data *pdata; @@ -873,12 +866,14 @@ * Disable all interrupts, port and break condition. */ + spin_lock_irqsave(&sport->port.lock, flags); temp = readl(sport->port.membase + UCR1); temp &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); if (USE_IRDA(sport)) temp &= ~(UCR1_IREN); writel(temp, sport->port.membase + UCR1); + spin_unlock_irqrestore(&sport->port.lock, flags); } static void @@ -1221,6 +1216,15 @@ struct imx_port *sport = imx_ports[co->index]; struct imx_port_ucrs old_ucr; unsigned int ucr1; + unsigned long flags; + int locked = 1; + + if (sport->port.sysrq) + locked = 0; + else if (oops_in_progress) + locked = spin_trylock_irqsave(&sport->port.lock, flags); + else + spin_lock_irqsave(&sport->port.lock, flags); /* * First, save UCR1/2/3 and then disable interrupts @@ -1246,6 +1250,9 @@ while (!(readl(sport->port.membase + USR2) & USR2_TXDC)); imx_port_ucrs_restore(&sport->port, &old_ucr); + + if (locked) + spin_unlock_irqrestore(&sport->port.lock, flags); } /* --- linux-3.5.0.orig/drivers/tty/serial/ifx6x60.c +++ linux-3.5.0/drivers/tty/serial/ifx6x60.c @@ -552,6 +552,7 @@ container_of(port, struct ifx_spi_device, tty_port); mrdy_set_low(ifx_dev); + del_timer(&ifx_dev->spi_timer); clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); tasklet_kill(&ifx_dev->io_work_tasklet); } --- linux-3.5.0.orig/drivers/tty/serial/Kconfig +++ linux-3.5.0/drivers/tty/serial/Kconfig @@ -197,7 +197,7 @@ config SERIAL_SAMSUNG_UARTS int depends on ARM && 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-3.5.0.orig/drivers/tty/serial/pmac_zilog.c +++ linux-3.5.0/drivers/tty/serial/pmac_zilog.c @@ -1348,10 +1348,16 @@ static int pmz_poll_get_char(struct uart_port *port) { struct uart_pmac_port *uap = (struct uart_pmac_port *)port; + int tries = 2; - while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0) - udelay(5); - return read_zsdata(uap); + while (tries) { + if ((read_zsreg(uap, R0) & Rx_CH_AV) != 0) + return read_zsdata(uap); + if (tries--) + udelay(5); + } + + return NO_POLL_CHAR; } static void pmz_poll_put_char(struct uart_port *port, unsigned char c) --- linux-3.5.0.orig/drivers/tty/serial/amba-pl011.c +++ linux-3.5.0/drivers/tty/serial/amba-pl011.c @@ -1603,13 +1603,26 @@ old_cr &= ~ST_UART011_CR_OVSFACT; } + /* + * Workaround for the ST Micro oversampling variants to + * increase the bitrate slightly, by lowering the divisor, + * to avoid delayed sampling of start bit at high speeds, + * else we see data corruption. + */ + if (uap->vendor->oversampling) { + if ((baud >= 3000000) && (baud < 3250000) && (quot > 1)) + quot -= 1; + else if ((baud > 3250000) && (quot > 2)) + quot -= 2; + } /* Set baud rate */ writew(quot & 0x3f, port->membase + UART011_FBRD); writew(quot >> 6, port->membase + UART011_IBRD); /* * ----------v----------v----------v----------v----- - * NOTE: MUST BE WRITTEN AFTER UARTLCR_M & UARTLCR_L + * NOTE: lcrh_tx and lcrh_rx MUST BE WRITTEN AFTER + * UART011_FBRD & UART011_IBRD. * ----------^----------^----------^----------^----- */ writew(lcr_h, port->membase + uap->lcrh_rx); --- linux-3.5.0.orig/drivers/tty/serial/pch_uart.c +++ linux-3.5.0/drivers/tty/serial/pch_uart.c @@ -253,6 +253,9 @@ dma_addr_t rx_buf_dma; struct dentry *debugfs; + + /* protect the eg20t_port private structure and io access to membase */ + spinlock_t lock; }; /** @@ -754,7 +757,8 @@ tty_flip_buffer_push(tty); tty_kref_put(tty); async_tx_ack(priv->desc_rx); - pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } static void pch_dma_tx_complete(void *arg) @@ -809,7 +813,8 @@ int rx_size; int ret; if (!priv->start_rx) { - pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); return 0; } buf = &priv->rxbuf; @@ -1029,22 +1034,37 @@ static void pch_uart_err_ir(struct eg20t_port *priv, unsigned int lsr) { u8 fcr = ioread8(priv->membase + UART_FCR); + struct uart_port *port = &priv->port; + struct tty_struct *tty = tty_port_tty_get(&port->state->port); + char *error_msg[5] = {}; + int i = 0; /* Reset FIFO */ fcr |= UART_FCR_CLEAR_RCVR; iowrite8(fcr, priv->membase + UART_FCR); if (lsr & PCH_UART_LSR_ERR) - dev_err(&priv->pdev->dev, "Error data in FIFO\n"); + error_msg[i++] = "Error data in FIFO\n"; - if (lsr & UART_LSR_FE) - dev_err(&priv->pdev->dev, "Framing Error\n"); + if (lsr & UART_LSR_FE) { + port->icount.frame++; + error_msg[i++] = " Framing Error\n"; + } - if (lsr & UART_LSR_PE) - dev_err(&priv->pdev->dev, "Parity Error\n"); + if (lsr & UART_LSR_PE) { + port->icount.parity++; + error_msg[i++] = " Parity Error\n"; + } + + if (lsr & UART_LSR_OE) { + port->icount.overrun++; + error_msg[i++] = " Overrun Error\n"; + } - if (lsr & UART_LSR_OE) - dev_err(&priv->pdev->dev, "Overrun Error\n"); + if (tty == NULL) { + for (i = 0; error_msg[i] != NULL; i++) + dev_err(&priv->pdev->dev, error_msg[i]); + } } static irqreturn_t pch_uart_interrupt(int irq, void *dev_id) @@ -1058,7 +1078,7 @@ int next = 1; u8 msr; - spin_lock_irqsave(&priv->port.lock, flags); + spin_lock_irqsave(&priv->lock, flags); handled = 0; while (next) { iid = pch_uart_hal_get_iid(priv); @@ -1078,11 +1098,13 @@ case PCH_UART_IID_RDR: /* Received Data Ready */ if (priv->use_dma) { pch_uart_hal_disable_interrupt(priv, - PCH_UART_HAL_RX_INT); + PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); ret = dma_handle_rx(priv); if (!ret) pch_uart_hal_enable_interrupt(priv, - PCH_UART_HAL_RX_INT); + PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } else { ret = handle_rx(priv); } @@ -1116,7 +1138,7 @@ handled |= (unsigned int)ret; } - spin_unlock_irqrestore(&priv->port.lock, flags); + spin_unlock_irqrestore(&priv->lock, flags); return IRQ_RETVAL(handled); } @@ -1208,7 +1230,8 @@ struct eg20t_port *priv; priv = container_of(port, struct eg20t_port, port); priv->start_rx = 0; - pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } /* Enable the modem status interrupts. */ @@ -1226,9 +1249,9 @@ unsigned long flags; priv = container_of(port, struct eg20t_port, port); - spin_lock_irqsave(&port->lock, flags); + spin_lock_irqsave(&priv->lock, flags); pch_uart_hal_set_break(priv, ctl); - spin_unlock_irqrestore(&port->lock, flags); + spin_unlock_irqrestore(&priv->lock, flags); } /* Grab any interrupt resources and initialise any low level driver state. */ @@ -1263,6 +1286,7 @@ break; case 16: fifo_size = PCH_UART_HAL_FIFO16; + break; case 1: default: fifo_size = PCH_UART_HAL_FIFO_DIS; @@ -1300,7 +1324,8 @@ pch_request_dma(port); priv->start_rx = 1; - pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); uart_update_timeout(port, CS8, default_baud); return 0; @@ -1358,7 +1383,7 @@ stb = PCH_UART_HAL_STB1; if (termios->c_cflag & PARENB) { - if (!(termios->c_cflag & PARODD)) + if (termios->c_cflag & PARODD) parity = PCH_UART_HAL_PARITY_ODD; else parity = PCH_UART_HAL_PARITY_EVEN; @@ -1376,7 +1401,8 @@ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 16); - spin_lock_irqsave(&port->lock, flags); + spin_lock_irqsave(&priv->lock, flags); + spin_lock(&port->lock); uart_update_timeout(port, termios->c_cflag, baud); rtn = pch_uart_hal_set_line(priv, baud, parity, bits, stb); @@ -1389,7 +1415,8 @@ tty_termios_encode_baud_rate(termios, baud, baud); out: - spin_unlock_irqrestore(&port->lock, flags); + spin_unlock(&port->lock); + spin_unlock_irqrestore(&priv->lock, flags); } static const char *pch_uart_type(struct uart_port *port) @@ -1538,8 +1565,9 @@ { struct eg20t_port *priv; unsigned long flags; + int priv_locked = 1; + int port_locked = 1; u8 ier; - int locked = 1; priv = pch_uart_ports[co->index]; @@ -1547,12 +1575,16 @@ local_irq_save(flags); if (priv->port.sysrq) { - /* serial8250_handle_port() already took the lock */ - locked = 0; + spin_lock(&priv->lock); + /* serial8250_handle_port() already took the port lock */ + port_locked = 0; } else if (oops_in_progress) { - locked = spin_trylock(&priv->port.lock); - } else + priv_locked = spin_trylock(&priv->lock); + port_locked = spin_trylock(&priv->port.lock); + } else { + spin_lock(&priv->lock); spin_lock(&priv->port.lock); + } /* * First save the IER then disable the interrupts @@ -1570,8 +1602,10 @@ wait_for_xmitr(priv, BOTH_EMPTY); iowrite8(ier, priv->membase + UART_IER); - if (locked) + if (port_locked) spin_unlock(&priv->port.lock); + if (priv_locked) + spin_unlock(&priv->lock); local_irq_restore(flags); } @@ -1669,6 +1703,8 @@ pci_enable_msi(pdev); pci_set_master(pdev); + spin_lock_init(&priv->lock); + iobase = pci_resource_start(pdev, 0); mapbase = pci_resource_start(pdev, 1); priv->mapbase = mapbase; --- linux-3.5.0.orig/drivers/tty/serial/atmel_serial.c +++ linux-3.5.0/drivers/tty/serial/atmel_serial.c @@ -159,7 +159,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; @@ -1785,15 +1785,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; @@ -1867,7 +1866,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-3.5.0.orig/drivers/tty/serial/serial_core.c +++ linux-3.5.0/drivers/tty/serial/serial_core.c @@ -1877,6 +1877,8 @@ mutex_unlock(&port->mutex); return 0; } + put_device(tty_dev); + if (console_suspend_enabled || !uart_console(uport)) uport->suspended = 1; @@ -1942,9 +1944,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-3.5.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-3.5.0/drivers/tty/serial/8250/8250_pci.c @@ -1078,6 +1078,18 @@ return setup_port(priv, port, 2, idx * 8, 0); } +static int +pci_brcm_trumanage_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_port *port, int idx) +{ + int ret = pci_default_setup(priv, board, port, idx); + + port->type = PORT_BRCM_TRUMANAGE; + port->flags = (port->flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); + return ret; +} + static int skip_tx_en_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_port *port, int idx) @@ -1164,6 +1176,8 @@ #define PCI_SUBDEVICE_ID_OCTPRO422 0x0208 #define PCI_SUBDEVICE_ID_POCTAL232 0x0308 #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 +#define PCI_SUBDEVICE_ID_SIIG_DUAL_00 0x2500 +#define PCI_SUBDEVICE_ID_SIIG_DUAL_30 0x2530 #define PCI_VENDOR_ID_ADVANTECH 0x13fe #define PCI_DEVICE_ID_INTEL_CE4100_UART 0x2e66 #define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620 @@ -1187,9 +1201,11 @@ #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 #define PCI_DEVICE_ID_PLX_CRONYX_OMEGA 0xc001 #define PCI_DEVICE_ID_INTEL_PATSBURG_KT 0x1d3d +#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 +#define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 /* * Master list of serial port init/setup/exit quirks. @@ -1461,15 +1477,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 = __devexit_p(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, @@ -1728,6 +1735,17 @@ .setup = pci_omegapci_setup, }, /* + * Broadcom TruManage (NetXtreme) + */ + { + .vendor = PCI_VENDOR_ID_BROADCOM, + .device = PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_brcm_trumanage_setup, + }, + + /* * Default "match everything" terminator entry */ { @@ -1916,6 +1934,7 @@ pbn_ce4100_1_115200, pbn_omegapci, pbn_NETMOS9900_2s_115200, + pbn_brcm_trumanage, }; /* @@ -2622,6 +2641,12 @@ .num_ports = 2, .base_baud = 115200, }, + [pbn_brcm_trumanage] = { + .flags = FL_BASE0, + .num_ports = 1, + .reg_shift = 2, + .base_baud = 115200, + }, }; static const struct pci_device_id softmodem_blacklist[] = { @@ -3151,7 +3176,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, @@ -3232,8 +3262,11 @@ * For now just used the hex ID 0x950a. */ { PCI_VENDOR_ID_OXSEMI, 0x950a, - PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL, 0, 0, - pbn_b0_2_115200 }, + PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_00, + 0, 0, pbn_b0_2_115200 }, + { PCI_VENDOR_ID_OXSEMI, 0x950a, + PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_30, + 0, 0, pbn_b0_2_115200 }, { PCI_VENDOR_ID_OXSEMI, 0x950a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b0_2_1130000 }, @@ -4179,6 +4212,13 @@ pbn_omegapci }, /* + * Broadcom TruManage + */ + { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_brcm_trumanage }, + + /* * These entries match devices with class COMMUNICATION_SERIAL, * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL */ --- linux-3.5.0.orig/drivers/tty/serial/8250/8250.h +++ linux-3.5.0/drivers/tty/serial/8250/8250.h @@ -73,6 +73,7 @@ #define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */ #define UART_CAP_UUE (1 << 12) /* UART needs IER bit 6 set (Xscale) */ #define UART_CAP_RTOIE (1 << 13) /* UART needs IER bit 4 set (Xscale, Tegra) */ +#define UART_CAP_HFIFO (1 << 14) /* UART has a "hidden" FIFO */ #define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */ #define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */ --- linux-3.5.0.orig/drivers/tty/serial/8250/8250_dw.c +++ linux-3.5.0/drivers/tty/serial/8250/8250_dw.c @@ -79,7 +79,7 @@ } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) { /* Clear the USR and write the LCR again. */ (void)p->serial_in(p, UART_USR); - p->serial_out(p, d->last_lcr, UART_LCR); + p->serial_out(p, UART_LCR, d->last_lcr); return 1; } --- linux-3.5.0.orig/drivers/tty/serial/8250/8250.c +++ linux-3.5.0/drivers/tty/serial/8250/8250.c @@ -282,6 +282,33 @@ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, .flags = UART_CAP_FIFO | UART_CAP_AFE | UART_CAP_EFR, }, + [PORT_BRCM_TRUMANAGE] = { + .name = "TruManage", + .fifo_size = 1, + .tx_loadsz = 1024, + .flags = UART_CAP_HFIFO, + }, + [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 */ @@ -1427,6 +1454,11 @@ port->icount.tx++; if (uart_circ_empty(xmit)) break; + if (up->capabilities & UART_CAP_HFIFO) { + if ((serial_port_in(port, UART_LSR) & BOTH_EMPTY) != + BOTH_EMPTY) + break; + } } while (--count > 0); if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) --- linux-3.5.0.orig/drivers/tty/vt/keyboard.c +++ linux-3.5.0/drivers/tty/vt/keyboard.c @@ -1049,13 +1049,10 @@ */ int vt_get_leds(int console, int flag) { - unsigned long flags; struct kbd_struct * kbd = kbd_table + console; int ret; - spin_lock_irqsave(&kbd_event_lock, flags); ret = vc_kbd_led(kbd, flag); - spin_unlock_irqrestore(&kbd_event_lock, flags); return ret; } --- linux-3.5.0.orig/drivers/tty/vt/vc_screen.c +++ linux-3.5.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-3.5.0.orig/drivers/tty/vt/vt.c +++ linux-3.5.0/drivers/tty/vt/vt.c @@ -102,6 +102,7 @@ #include #include #include +#include #define MAX_NR_CON_DRIVER 16 @@ -144,7 +145,7 @@ static int con_open(struct tty_struct *, struct file *); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear); + unsigned int cols, int do_clear, int mode); static void gotoxy(struct vc_data *vc, int new_x, int new_y); static void save_cur(struct vc_data *vc); static void reset_terminal(struct vc_data *vc, int do_clear); @@ -165,6 +166,9 @@ static int cur_default = CUR_DEFAULT; module_param(cur_default, int, S_IRUGO | S_IWUSR); +int vt_handoff = 0; +module_param_named(handoff, vt_handoff, int, S_IRUGO | S_IWUSR); + /* * ignore_poke: don't unblank the screen when things are typed. This is * mainly for the privacy of braille terminal users. @@ -656,7 +660,7 @@ * Redrawing of screen */ -static void clear_buffer_attributes(struct vc_data *vc) +void clear_buffer_attributes(struct vc_data *vc) { unsigned short *p = (unsigned short *)vc->vc_origin; int count = vc->vc_screenbuf_size / 2; @@ -694,6 +698,13 @@ } if (tty0dev) sysfs_notify(&tty0dev->kobj, NULL, "active"); + /* + * If we are switching away from a transparent VT the contents + * will be lost, convert it into a blank text console then + * it will be repainted blank if we ever switch back. + */ + if (old_vc->vc_mode == KD_TRANSPARENT) + old_vc->vc_mode = KD_TEXT; } else { hide_cursor(vc); redraw = 1; @@ -807,7 +818,7 @@ if (global_cursor_default == -1) global_cursor_default = 1; - vc_init(vc, vc->vc_rows, vc->vc_cols, 1); + vc_init(vc, vc->vc_rows, vc->vc_cols, 1, KD_TEXT); vcs_make_sysfs(currcons); atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); } @@ -2848,7 +2859,7 @@ module_param_named(underline, default_underline_color, int, S_IRUGO | S_IWUSR); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear) + unsigned int cols, int do_clear, int mode) { int j, k ; @@ -2859,7 +2870,7 @@ set_origin(vc); vc->vc_pos = vc->vc_origin; - reset_vc(vc); + reset_vc(vc, mode); for (j=k=0; j<16; j++) { vc->vc_palette[k++] = default_red[j] ; vc->vc_palette[k++] = default_grn[j] ; @@ -2885,6 +2896,13 @@ struct vc_data *vc; unsigned int currcons = 0, i; + if (screen_info.flags & VIDEO_FLAGS_HANDOFF) { + if (vt_handoff == 0) + vt_handoff = 8; + printk(KERN_INFO "vt handoff: grub requested handoff (vt#%d)\n", + vt_handoff); + } + console_lock(); if (conswitchp) @@ -2916,16 +2934,31 @@ mod_timer(&console_timer, jiffies + (blankinterval * HZ)); } + if (vt_handoff > 0 && vt_handoff <= MAX_NR_CONSOLES) { + currcons = vt_handoff - 1; + vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); + INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); + visual_init(vc, currcons, 1); + vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); + vc_init(vc, vc->vc_rows, vc->vc_cols, 0, KD_TRANSPARENT); + } for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) { + if (currcons == vt_handoff - 1) + continue; vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); tty_port_init(&vc->port); visual_init(vc, currcons, 1); vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); vc_init(vc, vc->vc_rows, vc->vc_cols, - currcons || !vc->vc_sw->con_save_screen); + currcons || !vc->vc_sw->con_save_screen, KD_TEXT); } currcons = fg_console = 0; + if (vt_handoff > 0) { + printk(KERN_INFO "vt handoff: transparent VT on vt#%d\n", + vt_handoff); + currcons = fg_console = vt_handoff - 1; + } master_display_fg = vc = vc_cons[currcons].d; set_origin(vc); save_screen(vc); @@ -3017,7 +3050,7 @@ static struct class *vtconsole_class; -static int bind_con_driver(const struct consw *csw, int first, int last, +static int do_bind_con_driver(const struct consw *csw, int first, int last, int deflt) { struct module *owner = csw->owner; @@ -3028,7 +3061,7 @@ if (!try_module_get(owner)) return -ENODEV; - console_lock(); + WARN_CONSOLE_UNLOCKED(); /* check if driver is registered */ for (i = 0; i < MAX_NR_CON_DRIVER; i++) { @@ -3113,11 +3146,22 @@ retval = 0; err: - console_unlock(); module_put(owner); return retval; }; + +static int bind_con_driver(const struct consw *csw, int first, int last, + int deflt) +{ + int ret; + + console_lock(); + ret = do_bind_con_driver(csw, first, last, deflt); + console_unlock(); + return ret; +} + #ifdef CONFIG_VT_HW_CONSOLE_BINDING static int con_is_graphics(const struct consw *csw, int first, int last) { @@ -3154,6 +3198,18 @@ */ int unbind_con_driver(const struct consw *csw, int first, int last, int deflt) { + int retval; + + console_lock(); + retval = do_unbind_con_driver(csw, first, last, deflt); + console_unlock(); + return retval; +} +EXPORT_SYMBOL(unbind_con_driver); + +/* unlocked version of unbind_con_driver() */ +int do_unbind_con_driver(const struct consw *csw, int first, int last, int deflt) +{ struct module *owner = csw->owner; const struct consw *defcsw = NULL; struct con_driver *con_driver = NULL, *con_back = NULL; @@ -3162,7 +3218,7 @@ if (!try_module_get(owner)) return -ENODEV; - console_lock(); + WARN_CONSOLE_UNLOCKED(); /* check if driver is registered and if it is unbindable */ for (i = 0; i < MAX_NR_CON_DRIVER; i++) { @@ -3175,10 +3231,8 @@ } } - if (retval) { - console_unlock(); + if (retval) goto err; - } retval = -ENODEV; @@ -3194,15 +3248,11 @@ } } - if (retval) { - console_unlock(); + if (retval) goto err; - } - if (!con_is_bound(csw)) { - console_unlock(); + if (!con_is_bound(csw)) goto err; - } first = max(first, con_driver->first); last = min(last, con_driver->last); @@ -3229,15 +3279,14 @@ if (!con_is_bound(csw)) con_driver->flag &= ~CON_DRIVER_FLAG_INIT; - console_unlock(); /* ignore return value, binding should not fail */ - bind_con_driver(defcsw, first, last, deflt); + do_bind_con_driver(defcsw, first, last, deflt); err: module_put(owner); return retval; } -EXPORT_SYMBOL(unbind_con_driver); +EXPORT_SYMBOL_GPL(do_unbind_con_driver); static int vt_bind(struct con_driver *con) { @@ -3475,6 +3524,19 @@ kdb_set(2, setargs); } } + if (vc->vc_cols < 999) { + int colcount; + char cols[4]; + const char *setargs[3] = { + "set", + "COLUMNS", + cols, + }; + if (kdbgetintenv(setargs[0], &colcount)) { + snprintf(cols, 4, "%i", vc->vc_cols); + kdb_set(2, setargs); + } + } #endif /* CONFIG_KGDB_KDB */ return ret; } @@ -3509,28 +3571,18 @@ } EXPORT_SYMBOL_GPL(con_debug_leave); -/** - * register_con_driver - register console driver to console layer - * @csw: console driver - * @first: the first console to take over, minimum value is 0 - * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1 - * - * DESCRIPTION: This function registers a console driver which can later - * bind to a range of consoles specified by @first and @last. It will - * also initialize the console driver by calling con_startup(). - */ -int register_con_driver(const struct consw *csw, int first, int last) +static int do_register_con_driver(const struct consw *csw, int first, int last) { struct module *owner = csw->owner; struct con_driver *con_driver; const char *desc; int i, retval = 0; + WARN_CONSOLE_UNLOCKED(); + if (!try_module_get(owner)) return -ENODEV; - console_lock(); - for (i = 0; i < MAX_NR_CON_DRIVER; i++) { con_driver = ®istered_con_driver[i]; @@ -3583,10 +3635,29 @@ } err: - console_unlock(); module_put(owner); return retval; } + +/** + * register_con_driver - register console driver to console layer + * @csw: console driver + * @first: the first console to take over, minimum value is 0 + * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1 + * + * DESCRIPTION: This function registers a console driver which can later + * bind to a range of consoles specified by @first and @last. It will + * also initialize the console driver by calling con_startup(). + */ +int register_con_driver(const struct consw *csw, int first, int last) +{ + int retval; + + console_lock(); + retval = do_register_con_driver(csw, first, last); + console_unlock(); + return retval; +} EXPORT_SYMBOL(register_con_driver); /** @@ -3602,9 +3673,18 @@ */ int unregister_con_driver(const struct consw *csw) { - int i, retval = -ENODEV; + int retval; console_lock(); + retval = do_unregister_con_driver(csw); + console_unlock(); + return retval; +} +EXPORT_SYMBOL(unregister_con_driver); + +int do_unregister_con_driver(const struct consw *csw) +{ + int i, retval = -ENODEV; /* cannot unregister a bound driver */ if (con_is_bound(csw)) @@ -3630,27 +3710,53 @@ } } err: - console_unlock(); return retval; } -EXPORT_SYMBOL(unregister_con_driver); +EXPORT_SYMBOL_GPL(do_unregister_con_driver); /* * If we support more console drivers, this function is used * when a driver wants to take over some existing consoles * and become default driver for newly opened ones. * - * take_over_console is basically a register followed by unbind + * take_over_console is basically a register followed by unbind + */ +int do_take_over_console(const struct consw *csw, int first, int last, int deflt) +{ + int err; + + err = do_register_con_driver(csw, first, last); + /* + * If we get an busy error we still want to bind the console driver + * and return success, as we may have unbound the console driver + * but not unregistered it. + */ + if (err == -EBUSY) + err = 0; + if (!err) + do_bind_con_driver(csw, first, last, deflt); + + return err; +} +EXPORT_SYMBOL_GPL(do_take_over_console); + +/* + * If we support more console drivers, this function is used + * when a driver wants to take over some existing consoles + * and become default driver for newly opened ones. + * + * take_over_console is basically a register followed by unbind */ int take_over_console(const struct consw *csw, int first, int last, int deflt) { int err; err = register_con_driver(csw, first, last); - /* if we get an busy error we still want to bind the console driver + /* + * If we get an busy error we still want to bind the console driver * and return success, as we may have unbound the console driver -  * but not unregistered it. - */ + * but not unregistered it. + */ if (err == -EBUSY) err = 0; if (!err) --- linux-3.5.0.orig/drivers/tty/vt/vt_ioctl.c +++ linux-3.5.0/drivers/tty/vt/vt_ioctl.c @@ -996,9 +996,9 @@ return ret; } -void reset_vc(struct vc_data *vc) +void reset_vc(struct vc_data *vc, int mode) { - vc->vc_mode = KD_TEXT; + vc->vc_mode = mode; vt_reset_unicode(vc->vc_num); vc->vt_mode.mode = VT_AUTO; vc->vt_mode.waitv = 0; @@ -1030,7 +1030,7 @@ */ if (tty) __do_SAK(tty); - reset_vc(vc); + reset_vc(vc, KD_TEXT); } console_unlock(); } @@ -1287,7 +1287,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); if (old_vc_mode != vc->vc_mode) { if (vc->vc_mode == KD_TEXT) @@ -1359,7 +1359,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); /* * Fall through to normal (VT_AUTO) handling of the switch... --- linux-3.5.0.orig/drivers/parport/Kconfig +++ linux-3.5.0/drivers/parport/Kconfig @@ -36,7 +36,7 @@ config PARPORT_PC tristate "PC-style hardware" depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && \ - (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN + (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && !ARCH_OMAP ---help--- You should say Y here if you have a PC-style parallel port. All IBM PC compatible computers and some Alphas have PC-style --- linux-3.5.0.orig/drivers/net/rionet.c +++ linux-3.5.0/drivers/net/rionet.c @@ -79,6 +79,7 @@ * on system trade-offs. */ static struct rio_dev **rionet_active; +static int nact; /* total number of active rionet peers */ #define is_rionet_capable(src_ops, dst_ops) \ ((src_ops & RIO_SRC_OPS_DATA_MSG) && \ @@ -175,6 +176,7 @@ struct ethhdr *eth = (struct ethhdr *)skb->data; u16 destid; unsigned long flags; + int add_num = 1; local_irq_save(flags); if (!spin_trylock(&rnet->tx_lock)) { @@ -182,7 +184,10 @@ return NETDEV_TX_LOCKED; } - if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) { + if (is_multicast_ether_addr(eth->h_dest)) + add_num = nact; + + if ((rnet->tx_cnt + add_num) > RIONET_TX_RING_SIZE) { netif_stop_queue(ndev); spin_unlock_irqrestore(&rnet->tx_lock, flags); printk(KERN_ERR "%s: BUG! Tx Ring full when queue awake!\n", @@ -191,11 +196,16 @@ } if (is_multicast_ether_addr(eth->h_dest)) { + int count = 0; for (i = 0; i < RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size); i++) - if (rionet_active[i]) + if (rionet_active[i]) { rionet_queue_tx_msg(skb, ndev, rionet_active[i]); + if (count) + atomic_inc(&skb->users); + count++; + } } else if (RIONET_MAC_MATCH(eth->h_dest)) { destid = RIONET_GET_DESTID(eth->h_dest); if (rionet_active[destid]) @@ -220,14 +230,17 @@ if (info == RIONET_DOORBELL_JOIN) { if (!rionet_active[sid]) { list_for_each_entry(peer, &rionet_peers, node) { - if (peer->rdev->destid == sid) + if (peer->rdev->destid == sid) { rionet_active[sid] = peer->rdev; + nact++; + } } rio_mport_send_doorbell(mport, sid, RIONET_DOORBELL_JOIN); } } else if (info == RIONET_DOORBELL_LEAVE) { rionet_active[sid] = NULL; + nact--; } else { if (netif_msg_intr(rnet)) printk(KERN_WARNING "%s: unhandled doorbell\n", @@ -523,6 +536,7 @@ rc = rionet_setup_netdev(rdev->net->hport, ndev); rionet_check = 1; + nact = 0; } /* --- linux-3.5.0.orig/drivers/net/loopback.c +++ linux-3.5.0/drivers/net/loopback.c @@ -77,6 +77,11 @@ skb_orphan(skb); + /* Before queueing this packet to netif_rx(), + * make sure dst is refcounted. + */ + skb_dst_force(skb); + skb->protocol = eth_type_trans(skb, dev); /* it's OK to use per_cpu_ptr() because BHs are off */ --- linux-3.5.0.orig/drivers/net/xen-netfront.c +++ linux-3.5.0/drivers/net/xen-netfront.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include #include @@ -481,7 +481,6 @@ struct netfront_info *np = netdev_priv(dev); struct netfront_stats *stats = this_cpu_ptr(np->stats); struct xen_netif_tx_request *tx; - struct xen_netif_extra_info *extra; char *data = skb->data; RING_IDX i; grant_ref_t ref; @@ -492,6 +491,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; + } + frags += DIV_ROUND_UP(offset + len, PAGE_SIZE); if (unlikely(frags > MAX_SKB_FRAGS + 1)) { printk(KERN_ALERT "xennet: skb rides the rocket: %d frags\n", @@ -525,7 +534,6 @@ tx->gref = np->grant_tx_ref[id] = ref; tx->offset = offset; tx->size = len; - extra = NULL; tx->flags = 0; if (skb->ip_summed == CHECKSUM_PARTIAL) @@ -541,10 +549,7 @@ gso = (struct xen_netif_extra_info *) RING_GET_REQUEST(&np->tx, ++i); - if (extra) - extra->flags |= XEN_NETIF_EXTRA_FLAG_MORE; - else - tx->flags |= XEN_NETTXF_extra_info; + tx->flags |= XEN_NETTXF_extra_info; gso->u.gso.size = skb_shinfo(skb)->gso_size; gso->u.gso.type = XEN_NETIF_GSO_TYPE_TCPV4; @@ -553,7 +558,6 @@ gso->type = XEN_NETIF_EXTRA_TYPE_GSO; gso->flags = 0; - extra = gso; } np->tx.req_prod_pvt = i + 1; @@ -662,7 +666,7 @@ struct sk_buff *skb = xennet_get_rx_skb(np, cons); grant_ref_t ref = xennet_get_rx_ref(np, cons); int max = MAX_SKB_FRAGS + (rx->status <= RX_COPY_THRESHOLD); - int frags = 1; + int slots = 1; int err = 0; unsigned long ret; @@ -685,7 +689,7 @@ /* * This definitely indicates a bug, either in this driver or in * the backend driver. In future this should flag the bad - * situation to the system controller to reboot the backed. + * situation to the system controller to reboot the backend. */ if (ref == GRANT_INVALID_REF) { if (net_ratelimit()) @@ -706,27 +710,27 @@ if (!(rx->flags & XEN_NETRXF_more_data)) break; - if (cons + frags == rp) { + if (cons + slots == rp) { if (net_ratelimit()) - dev_warn(dev, "Need more frags\n"); + dev_warn(dev, "Need more slots\n"); err = -ENOENT; break; } - rx = RING_GET_RESPONSE(&np->rx, cons + frags); - skb = xennet_get_rx_skb(np, cons + frags); - ref = xennet_get_rx_ref(np, cons + frags); - frags++; + rx = RING_GET_RESPONSE(&np->rx, cons + slots); + skb = xennet_get_rx_skb(np, cons + slots); + ref = xennet_get_rx_ref(np, cons + slots); + slots++; } - if (unlikely(frags > max)) { + if (unlikely(slots > max)) { if (net_ratelimit()) - dev_warn(dev, "Too many frags\n"); + dev_warn(dev, "Too many slots\n"); err = -E2BIG; } if (unlikely(err)) - np->rx.rsp_cons = cons + frags; + np->rx.rsp_cons = cons + slots; return err; } @@ -1045,7 +1049,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; @@ -1349,6 +1354,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-3.5.0.orig/drivers/net/tun.c +++ linux-3.5.0/drivers/net/tun.c @@ -185,7 +185,6 @@ netif_tx_lock_bh(tun->dev); netif_carrier_off(tun->dev); tun->tfile = NULL; - tun->socket.file = NULL; netif_tx_unlock_bh(tun->dev); /* Drop read queue */ @@ -358,6 +357,8 @@ { struct tun_struct *tun = netdev_priv(dev); + BUG_ON(!test_bit(SOCK_EXTERNALLY_ALLOCATED, &tun->socket.flags)); + sk_release_kernel(tun->socket.sk); } @@ -416,6 +417,8 @@ * for indefinite time. */ skb_orphan(skb); + nf_reset(skb); + /* Enqueue packet */ skb_queue_tail(&tun->socket.sk->sk_receive_queue, skb); @@ -1115,6 +1118,7 @@ tun->flags = flags; tun->txflt.count = 0; tun->vnet_hdr_sz = sizeof(struct virtio_net_hdr); + set_bit(SOCK_EXTERNALLY_ALLOCATED, &tun->socket.flags); err = -ENOMEM; sk = sk_alloc(&init_net, AF_UNSPEC, GFP_KERNEL, &tun_proto); @@ -1252,10 +1256,12 @@ int vnet_hdr_sz; int ret; - if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) + if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) { if (copy_from_user(&ifr, argp, ifreq_len)) return -EFAULT; - + } else { + memset(&ifr, 0, sizeof(ifr)); + } if (cmd == TUNGETFEATURES) { /* Currently this just means: "what IFF flags are valid?". * This is needed because we never checked for invalid flags on --- linux-3.5.0.orig/drivers/net/netconsole.c +++ linux-3.5.0/drivers/net/netconsole.c @@ -626,6 +626,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) { @@ -638,21 +639,17 @@ case NETDEV_UNREGISTER: /* * rtnl_lock already held + * we might sleep in __netpoll_cleanup() */ - if (nt->np.dev) { - 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; - netconsole_target_put(nt); - } + 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-3.5.0.orig/drivers/net/macvlan.c +++ linux-3.5.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); @@ -822,7 +824,10 @@ static size_t macvlan_get_size(const struct net_device *dev) { - return nla_total_size(4); + return (0 + + nla_total_size(4) /* IFLA_MACVLAN_MODE */ + + nla_total_size(2) /* IFLA_MACVLAN_FLAGS */ + ); } static int macvlan_fill_info(struct sk_buff *skb, --- linux-3.5.0.orig/drivers/net/usb/smsc75xx.c +++ linux-3.5.0/drivers/net/usb/smsc75xx.c @@ -724,8 +724,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); check_warn_return(ret, "Failed to set mac rx frame length"); return usbnet_change_mtu(netdev, new_mtu); @@ -983,7 +987,7 @@ netif_dbg(dev, ifup, dev->net, "FCT_TX_CTL set to 0x%08x", buf); - ret = smsc75xx_set_rx_max_frame_length(dev, 1514); + ret = smsc75xx_set_rx_max_frame_length(dev, dev->net->mtu + ETH_HLEN); check_warn_return(ret, "Failed to set max rx frame length"); ret = smsc75xx_read_reg(dev, MAC_RX, &buf); @@ -1127,8 +1131,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", rx_cmd_a); return 0; --- linux-3.5.0.orig/drivers/net/usb/usbnet.c +++ linux-3.5.0/drivers/net/usb/usbnet.c @@ -1161,6 +1161,7 @@ usb_anchor_urb(urb, &dev->deferred); /* no use to process more packets */ netif_stop_queue(net); + usb_put_urb(urb); spin_unlock_irqrestore(&dev->txq.lock, flags); netdev_dbg(dev->net, "Delaying transmission for resumption\n"); goto deferred; @@ -1204,19 +1205,26 @@ } EXPORT_SYMBOL_GPL(usbnet_start_xmit); -static void rx_alloc_submit(struct usbnet *dev, gfp_t flags) +static int rx_alloc_submit(struct usbnet *dev, gfp_t flags) { struct urb *urb; int i; + int ret = 0; /* don't refill the queue all at once */ for (i = 0; i < 10 && dev->rxq.qlen < RX_QLEN(dev); i++) { urb = usb_alloc_urb(0, flags); if (urb != NULL) { - if (rx_submit(dev, urb, flags) == -ENOLINK) - return; + ret = rx_submit(dev, urb, flags); + if (ret) + goto err; + } else { + ret = -ENOMEM; + goto err; } } +err: + return ret; } /*-------------------------------------------------------------------------*/ @@ -1260,7 +1268,8 @@ int temp = dev->rxq.qlen; if (temp < RX_QLEN(dev)) { - rx_alloc_submit(dev, GFP_ATOMIC); + if (rx_alloc_submit(dev, GFP_ATOMIC) == -ENOLINK) + return; if (temp != dev->rxq.qlen) netif_dbg(dev, link, dev->net, "rxqlen %d --> %d\n", @@ -1305,6 +1314,8 @@ cancel_work_sync(&dev->kevent); + usb_scuttle_anchored_urbs(&dev->deferred); + if (dev->driver_info->unbind) dev->driver_info->unbind (dev, intf); @@ -1580,7 +1591,7 @@ netif_device_present(dev->net) && !timer_pending(&dev->delay) && !test_bit(EVENT_RX_HALT, &dev->flags)) - rx_alloc_submit(dev, GFP_KERNEL); + rx_alloc_submit(dev, GFP_NOIO); if (!(dev->txq.qlen >= TX_QLEN(dev))) netif_tx_wake_all_queues(dev->net); --- linux-3.5.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-3.5.0/drivers/net/usb/qmi_wwan.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -174,6 +175,93 @@ return status; } +/* 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) { @@ -257,6 +345,18 @@ /* save subdriver struct for suspend/resume wrappers */ dev->data[0] = (unsigned long)subdriver; + /* 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 rv; } @@ -326,6 +426,7 @@ .bind = qmi_wwan_bind_shared, .unbind = qmi_wwan_unbind_shared, .manage_power = qmi_wwan_manage_power, + .rx_fixup = qmi_wwan_rx_fixup, }; static const struct driver_info qmi_wwan_force_int0 = { @@ -444,6 +545,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_shared, }, + { /* Pantech UML290 - newer firmware */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x106c, + .idProduct = 0x3718, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xf1, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_shared, + }, { /* ZTE MF820D */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -453,6 +563,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_force_int4, }, + { /* ZTE MF821D */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x19d2, + .idProduct = 0x0326, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_force_int4, + }, { /* ZTE (Vodafone) K3520-Z */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -507,6 +626,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_force_int4, }, + { /* ZTE (Vodafone) K5006-Z */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x19d2, + .idProduct = 0x1018, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_force_int3, + }, { /* ZTE MF60 */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -525,6 +653,68 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_sierra, }, + { /* Sierra Wireless MC7700 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x0f3d, + .idProduct = 0x68a2, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Sierra Wireless MC7750 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x114f, + .idProduct = 0x68a2, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Sierra Wireless EM7700 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x1199, + .idProduct = 0x901c, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Novatel USB551L and MC551 */ + USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0xb001, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Novatel E362 */ + USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0x9010, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Dell Wireless 5800 (Novatel E362) */ + USB_DEVICE_AND_INTERFACE_INFO(0x413C, 0x8195, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Dell Wireless 5800 V2 (Novatel E362) */ + USB_DEVICE_AND_INTERFACE_INFO(0x413C, 0x8196, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* 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, + }, /* Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ @@ -552,6 +742,8 @@ {QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */ {QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */ {QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */ + {QMI_GOBI_DEVICE(0x1199, 0x68a5)}, /* Sierra Wireless Modem */ + {QMI_GOBI_DEVICE(0x1199, 0x68a9)}, /* Sierra Wireless Modem */ {QMI_GOBI_DEVICE(0x1199, 0x9001)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ {QMI_GOBI_DEVICE(0x1199, 0x9002)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ {QMI_GOBI_DEVICE(0x1199, 0x9003)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ @@ -568,6 +760,8 @@ {QMI_GOBI_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */ {QMI_GOBI_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */ {QMI_GOBI_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */ + {QMI_GOBI_DEVICE(0x1199, 0x901b)}, /* Sierra Wireless MC7770 */ + { } /* END */ }; MODULE_DEVICE_TABLE(usb, products); --- linux-3.5.0.orig/drivers/net/usb/kaweth.c +++ linux-3.5.0/drivers/net/usb/kaweth.c @@ -1314,7 +1314,7 @@ int retv; int length = 0; /* shut up GCC */ - urb = usb_alloc_urb(0, GFP_NOIO); + urb = usb_alloc_urb(0, GFP_ATOMIC); if (!urb) return -ENOMEM; --- linux-3.5.0.orig/drivers/net/usb/ipheth.c +++ linux-3.5.0/drivers/net/usb/ipheth.c @@ -62,6 +62,7 @@ #define USB_PRODUCT_IPAD 0x129a #define USB_PRODUCT_IPHONE_4_VZW 0x129c #define USB_PRODUCT_IPHONE_4S 0x12a0 +#define USB_PRODUCT_IPHONE_5 0x12a8 #define IPHETH_USBINTF_CLASS 255 #define IPHETH_USBINTF_SUBCLASS 253 @@ -113,6 +114,10 @@ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S, IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, IPHETH_USBINTF_PROTO) }, + { USB_DEVICE_AND_INTERFACE_INFO( + USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_5, + IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, + IPHETH_USBINTF_PROTO) }, { } }; MODULE_DEVICE_TABLE(usb, ipheth_table); --- linux-3.5.0.orig/drivers/net/usb/asix.c +++ linux-3.5.0/drivers/net/usb/asix.c @@ -1572,6 +1572,10 @@ USB_DEVICE (0x04f1, 0x3008), .driver_info = (unsigned long) &ax8817x_info, }, { + // Lenovo U2L100P 10/100 + USB_DEVICE (0x17ef, 0x7203), + .driver_info = (unsigned long) &ax88772_info, +}, { // ASIX AX88772B 10/100 USB_DEVICE (0x0b95, 0x772b), .driver_info = (unsigned long) &ax88772_info, @@ -1604,6 +1608,10 @@ USB_DEVICE (0x2001, 0x3c05), .driver_info = (unsigned long) &ax88772_info, }, { + // DLink DUB-E100 H/W Ver C1 + USB_DEVICE (0x2001, 0x1a02), + .driver_info = (unsigned long) &ax88772_info, +}, { // Linksys USB1000 USB_DEVICE (0x1737, 0x0039), .driver_info = (unsigned long) &ax88178_info, --- linux-3.5.0.orig/drivers/net/usb/cdc_ether.c +++ linux-3.5.0/drivers/net/usb/cdc_ether.c @@ -487,6 +487,7 @@ #define HUAWEI_VENDOR_ID 0x12D1 #define NOVATEL_VENDOR_ID 0x1410 #define ZTE_VENDOR_ID 0x19D2 +#define DELL_VENDOR_ID 0x413C static const struct usb_device_id products [] = { /* @@ -592,6 +593,53 @@ .driver_info = 0, }, +/* Novatel USB551L and MC551 - handled by qmi_wwan */ +{ + .match_flags = USB_DEVICE_ID_MATCH_VENDOR + | USB_DEVICE_ID_MATCH_PRODUCT + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = NOVATEL_VENDOR_ID, + .idProduct = 0xB001, + .bInterfaceClass = USB_CLASS_COMM, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, + .bInterfaceProtocol = USB_CDC_PROTO_NONE, + .driver_info = 0, +}, + +/* Novatel E362 - handled by qmi_wwan */ +{ + .match_flags = USB_DEVICE_ID_MATCH_VENDOR + | USB_DEVICE_ID_MATCH_PRODUCT + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = NOVATEL_VENDOR_ID, + .idProduct = 0x9010, + .bInterfaceClass = USB_CLASS_COMM, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, + .bInterfaceProtocol = USB_CDC_PROTO_NONE, + .driver_info = 0, +}, + +/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8195, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + +/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8196, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + +/* 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, +}, + /* * WHITELIST!!! * @@ -604,21 +652,6 @@ * because of bugs/quirks in a given product (like Zaurus, above). */ { - /* Novatel USB551L */ - /* This match must come *before* the generic CDC-ETHER match so that - * we get FLAG_WWAN set on the device, since it's descriptors are - * generic CDC-ETHER. - */ - .match_flags = USB_DEVICE_ID_MATCH_VENDOR - | USB_DEVICE_ID_MATCH_PRODUCT - | USB_DEVICE_ID_MATCH_INT_INFO, - .idVendor = NOVATEL_VENDOR_ID, - .idProduct = 0xB001, - .bInterfaceClass = USB_CLASS_COMM, - .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, - .bInterfaceProtocol = USB_CDC_PROTO_NONE, - .driver_info = (unsigned long)&wwan_info, -}, { /* ZTE (Vodafone) K3805-Z */ .match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT --- linux-3.5.0.orig/drivers/net/usb/sierra_net.c +++ linux-3.5.0/drivers/net/usb/sierra_net.c @@ -678,7 +678,7 @@ return -EIO; } - *datap = *attrdata; + *datap = le16_to_cpu(*attrdata); kfree(attrdata); return result; --- linux-3.5.0.orig/drivers/net/team/team.c +++ linux-3.5.0/drivers/net/team/team.c @@ -817,8 +817,8 @@ } port->index = -1; - team_port_enable(team, port); list_add_tail_rcu(&port->list, &team->port_list); + team_port_enable(team, port); team_adjust_ops(team); __team_compute_features(team); __team_port_change_check(port, !!netif_carrier_ok(port_dev)); --- linux-3.5.0.orig/drivers/net/team/team_mode_roundrobin.c +++ linux-3.5.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-3.5.0.orig/drivers/net/irda/sir_dev.c +++ linux-3.5.0/drivers/net/irda/sir_dev.c @@ -222,7 +222,7 @@ break; case SIRDEV_STATE_DONGLE_SPEED: - if (dev->dongle_drv->reset) { + if (dev->dongle_drv->set_speed) { ret = dev->dongle_drv->set_speed(dev, fsm->param); if (ret < 0) { fsm->result = ret; --- linux-3.5.0.orig/drivers/net/wan/ixp4xx_hss.c +++ linux-3.5.0/drivers/net/wan/ixp4xx_hss.c @@ -10,6 +10,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include #include #include #include --- linux-3.5.0.orig/drivers/net/wan/dlci.c +++ linux-3.5.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-3.5.0.orig/drivers/net/ethernet/intel/e1000/e1000_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000/e1000_ethtool.c @@ -1851,6 +1851,7 @@ .get_sset_count = e1000_get_sset_count, .get_coalesce = e1000_get_coalesce, .set_coalesce = e1000_set_coalesce, + .get_ts_info = ethtool_op_get_ts_info, }; void e1000_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000/e1000_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -187,6 +187,10 @@ MODULE_PARM_DESC(copybreak, "Maximum size of packet that is copied to a new buffer on receive"); +static int eeprom_bad_csum_allow __read_mostly = 0; +module_param(eeprom_bad_csum_allow, int, 0); +MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad EEPROM checksums"); + static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev, pci_channel_state_t state); static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev); @@ -1078,18 +1082,18 @@ netdev->priv_flags |= IFF_SUPP_NOFCS; netdev->features |= netdev->hw_features; - netdev->hw_features |= NETIF_F_RXCSUM; - netdev->hw_features |= NETIF_F_RXALL; - netdev->hw_features |= NETIF_F_RXFCS; + netdev->hw_features |= (NETIF_F_RXCSUM | + NETIF_F_RXALL | + NETIF_F_RXFCS); if (pci_using_dac) { netdev->features |= NETIF_F_HIGHDMA; netdev->vlan_features |= NETIF_F_HIGHDMA; } - netdev->vlan_features |= NETIF_F_TSO; - netdev->vlan_features |= NETIF_F_HW_CSUM; - netdev->vlan_features |= NETIF_F_SG; + netdev->vlan_features |= (NETIF_F_TSO | + NETIF_F_HW_CSUM | + NETIF_F_SG); netdev->priv_flags |= IFF_UNICAST_FLT; @@ -1106,8 +1110,8 @@ e1000_reset_hw(hw); - /* make sure the EEPROM is good */ - if (e1000_validate_eeprom_checksum(hw) < 0) { + /* make sure the EEPROM is good, skip if eeprom_bad_csum_allow is 1 */ + if ((e1000_validate_eeprom_checksum(hw) < 0) && (!eeprom_bad_csum_allow)) { e_err(probe, "The EEPROM Checksum Is Not Valid\n"); e1000_dump_eeprom(adapter); /* @@ -3152,6 +3156,17 @@ return NETDEV_TX_OK; } + /* On PCI/PCI-X HW, if packet size is less than ETH_ZLEN, + * packets may get corrupted during padding by HW. + * To WA this issue, pad all small packets manually. + */ + if (skb->len < ETH_ZLEN) { + if (skb_pad(skb, ETH_ZLEN - skb->len)) + return NETDEV_TX_OK; + skb->len = ETH_ZLEN; + skb_set_tail_pointer(skb, ETH_ZLEN); + } + mss = skb_shinfo(skb)->gso_size; /* The controller does a simple calculation to * make sure there is enough room in the FIFO before --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/e1000_82575.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -254,6 +254,14 @@ */ size += NVM_WORD_SIZE_BASE_SHIFT; + /* + * Check for invalid size + */ + if ((hw->mac.type == e1000_82576) && (size > 15)) { + pr_notice("The NVM size is not valid, defaulting to 32K\n"); + size = 15; + } + nvm->word_size = 1 << size; if (hw->mac.type < e1000_i210) { nvm->opcode_bits = 8; @@ -281,14 +289,6 @@ } else nvm->type = e1000_nvm_flash_hw; - /* - * Check for invalid size - */ - if ((hw->mac.type == e1000_82576) && (size > 15)) { - pr_notice("The NVM size is not valid, defaulting to 32K\n"); - size = 15; - } - /* NVM Function Pointers */ switch (hw->mac.type) { case e1000_82580: --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -209,8 +209,8 @@ /* When SoL/IDER sessions are active, autoneg/speed/duplex * cannot be changed */ if (igb_check_reset_block(hw)) { - dev_err(&adapter->pdev->dev, "Cannot change link " - "characteristics when SoL/IDER is active.\n"); + dev_err(&adapter->pdev->dev, + "Cannot change link characteristics when SoL/IDER is active.\n"); return -EINVAL; } @@ -710,6 +710,7 @@ if ((ret_val == 0) && ((first_word <= NVM_CHECKSUM_REG))) hw->nvm.ops.update(hw); + igb_set_fw_version(adapter); kfree(eeprom_buff); return ret_val; } @@ -718,20 +719,16 @@ struct ethtool_drvinfo *drvinfo) { struct igb_adapter *adapter = netdev_priv(netdev); - u16 eeprom_data; strlcpy(drvinfo->driver, igb_driver_name, sizeof(drvinfo->driver)); strlcpy(drvinfo->version, igb_driver_version, sizeof(drvinfo->version)); - /* EEPROM image version # is reported as firmware version # for - * 82575 controllers */ - adapter->hw.nvm.ops.read(&adapter->hw, 5, 1, &eeprom_data); - snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), - "%d.%d-%d", - (eeprom_data & 0xF000) >> 12, - (eeprom_data & 0x0FF0) >> 4, - eeprom_data & 0x000F); - + /* + * EEPROM image version # is reported as firmware version # for + * 82575 controllers + */ + strlcpy(drvinfo->fw_version, adapter->fw_version, + sizeof(drvinfo->fw_version)); strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), sizeof(drvinfo->bus_info)); drvinfo->n_stats = IGB_STATS_LEN; @@ -1092,8 +1089,8 @@ wr32(reg, (_test[pat] & write)); val = rd32(reg) & mask; if (val != (_test[pat] & write & mask)) { - dev_err(&adapter->pdev->dev, "pattern test reg %04X " - "failed: got 0x%08X expected 0x%08X\n", + dev_err(&adapter->pdev->dev, + "pattern test reg %04X failed: got 0x%08X expected 0x%08X\n", reg, val, (_test[pat] & write & mask)); *data = reg; return 1; @@ -1111,8 +1108,8 @@ wr32(reg, write & mask); val = rd32(reg); if ((write & mask) != (val & mask)) { - dev_err(&adapter->pdev->dev, "set/check reg %04X test failed:" - " got 0x%08X expected 0x%08X\n", reg, + dev_err(&adapter->pdev->dev, + "set/check reg %04X test failed: got 0x%08X expected 0x%08X\n", reg, (val & mask), (write & mask)); *data = reg; return 1; @@ -1174,8 +1171,9 @@ wr32(E1000_STATUS, toggle); after = rd32(E1000_STATUS) & toggle; if (value != after) { - dev_err(&adapter->pdev->dev, "failed STATUS register test " - "got: 0x%08X expected: 0x%08X\n", after, value); + dev_err(&adapter->pdev->dev, + "failed STATUS register test got: 0x%08X expected: 0x%08X\n", + after, value); *data = 1; return 1; } @@ -1500,6 +1498,9 @@ break; } + /* add small delay to avoid loopback test failure */ + msleep(50); + /* force 1000, set loopback */ igb_write_phy_reg(hw, PHY_CONTROL, 0x4140); @@ -1780,16 +1781,14 @@ * sessions are active */ if (igb_check_reset_block(&adapter->hw)) { dev_err(&adapter->pdev->dev, - "Cannot do PHY loopback test " - "when SoL/IDER is active.\n"); + "Cannot do PHY loopback test when SoL/IDER is active.\n"); *data = 0; goto out; } if ((adapter->hw.mac.type == e1000_i210) - || (adapter->hw.mac.type == e1000_i210)) { + || (adapter->hw.mac.type == e1000_i211)) { dev_err(&adapter->pdev->dev, - "Loopback test not supported " - "on this part at this time.\n"); + "Loopback test not supported on this part at this time.\n"); *data = 0; goto out; } @@ -2271,6 +2270,38 @@ pm_runtime_put(&adapter->pdev->dev); } +#ifdef CONFIG_IGB_PTP +static int igb_ethtool_get_ts_info(struct net_device *dev, + struct ethtool_ts_info *info) +{ + struct igb_adapter *adapter = netdev_priv(dev); + + info->so_timestamping = + SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_RX_HARDWARE | + SOF_TIMESTAMPING_RAW_HARDWARE; + + if (adapter->ptp_clock) + info->phc_index = ptp_clock_index(adapter->ptp_clock); + else + info->phc_index = -1; + + info->tx_types = + (1 << HWTSTAMP_TX_OFF) | + (1 << HWTSTAMP_TX_ON); + + info->rx_filters = + (1 << HWTSTAMP_FILTER_NONE) | + (1 << HWTSTAMP_FILTER_ALL) | + (1 << HWTSTAMP_FILTER_SOME) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | + (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); + + return 0; +} + +#endif static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings, @@ -2299,6 +2330,9 @@ .set_coalesce = igb_set_coalesce, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, +#ifdef CONFIG_IGB_PTP + .get_ts_info = igb_ethtool_get_ts_info, +#endif }; void igb_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_main.c @@ -59,9 +59,9 @@ #endif #include "igb.h" -#define MAJ 3 -#define MIN 4 -#define BUILD 7 +#define MAJ 4 +#define MIN 0 +#define BUILD 1 #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \ __stringify(BUILD) "-k" char igb_driver_name[] = "igb"; @@ -462,10 +462,10 @@ (u64)buffer_info->time_stamp, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter) && buffer_info->dma != 0) + if (netif_msg_pktdata(adapter) && buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, - 16, 1, phys_to_virt(buffer_info->dma), + 16, 1, buffer_info->skb->data, buffer_info->length, true); } } @@ -547,18 +547,17 @@ (u64)buffer_info->dma, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter)) { + if (netif_msg_pktdata(adapter) && + buffer_info->dma && buffer_info->skb) { print_hex_dump(KERN_INFO, "", - DUMP_PREFIX_ADDRESS, - 16, 1, - phys_to_virt(buffer_info->dma), - IGB_RX_HDR_LEN, true); + DUMP_PREFIX_ADDRESS, + 16, 1, buffer_info->skb->data, + IGB_RX_HDR_LEN, true); print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt( - buffer_info->page_dma + - buffer_info->page_offset), + page_address(buffer_info->page) + + buffer_info->page_offset, PAGE_SIZE/2, true); } } @@ -937,17 +936,18 @@ { struct net_device *netdev = adapter->netdev; struct e1000_hw *hw = &adapter->hw; - int i, err = 0, vector = 0; + int i, err = 0, vector = 0, free_vector = 0; err = request_irq(adapter->msix_entries[vector].vector, igb_msix_other, 0, netdev->name, adapter); if (err) - goto out; - vector++; + goto err_out; for (i = 0; i < adapter->num_q_vectors; i++) { struct igb_q_vector *q_vector = adapter->q_vector[i]; + vector++; + q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); if (q_vector->rx.ring && q_vector->tx.ring) @@ -966,13 +966,22 @@ igb_msix_ring, 0, q_vector->name, q_vector); if (err) - goto out; - vector++; + goto err_free; } igb_configure_msix(adapter); return 0; -out: + +err_free: + /* free already assigned IRQs */ + free_irq(adapter->msix_entries[free_vector++].vector, adapter); + + vector--; + for (i = 0; i < vector; i++) { + free_irq(adapter->msix_entries[free_vector++].vector, + adapter->q_vector[i]); + } +err_out: return err; } @@ -1048,11 +1057,6 @@ if (!(adapter->flags & IGB_FLAG_QUEUE_PAIRS)) numvecs += adapter->num_tx_queues; - /* i210 and i211 can only have 4 MSIX vectors for rx/tx queues. */ - if ((adapter->hw.mac.type == e1000_i210) - || (adapter->hw.mac.type == e1000_i211)) - numvecs = 4; - /* store the number of vectors reserved for queues */ adapter->num_q_vectors = numvecs; @@ -1505,11 +1509,12 @@ **/ void igb_power_up_link(struct igb_adapter *adapter) { + igb_reset_phy(&adapter->hw); + if (adapter->hw.phy.media_type == e1000_media_type_copper) igb_power_up_phy_copper(&adapter->hw); else igb_power_up_serdes_link_82575(&adapter->hw); - igb_reset_phy(&adapter->hw); } /** @@ -1821,6 +1826,69 @@ }; /** + * igb_set_fw_version - Configure version string for ethtool + * @adapter: adapter struct + * + **/ +void igb_set_fw_version(struct igb_adapter *adapter) +{ + struct e1000_hw *hw = &adapter->hw; + u16 eeprom_verh, eeprom_verl, comb_verh, comb_verl, comb_offset; + u16 major, build, patch, fw_version; + u32 etrack_id; + + hw->nvm.ops.read(hw, 5, 1, &fw_version); + if (adapter->hw.mac.type != e1000_i211) { + hw->nvm.ops.read(hw, NVM_ETRACK_WORD, 1, &eeprom_verh); + hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verl); + etrack_id = (eeprom_verh << IGB_ETRACK_SHIFT) | eeprom_verl; + + /* combo image version needs to be found */ + hw->nvm.ops.read(hw, NVM_COMB_VER_PTR, 1, &comb_offset); + if ((comb_offset != 0x0) && + (comb_offset != IGB_NVM_VER_INVALID)) { + hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset + + 1), 1, &comb_verh); + hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset), + 1, &comb_verl); + + /* Only display Option Rom if it exists and is valid */ + if ((comb_verh && comb_verl) && + ((comb_verh != IGB_NVM_VER_INVALID) && + (comb_verl != IGB_NVM_VER_INVALID))) { + major = comb_verl >> IGB_COMB_VER_SHFT; + build = (comb_verl << IGB_COMB_VER_SHFT) | + (comb_verh >> IGB_COMB_VER_SHFT); + patch = comb_verh & IGB_COMB_VER_MASK; + snprintf(adapter->fw_version, + sizeof(adapter->fw_version), + "%d.%d%d, 0x%08x, %d.%d.%d", + (fw_version & IGB_MAJOR_MASK) >> + IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> + IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK), + etrack_id, major, build, patch); + goto out; + } + } + snprintf(adapter->fw_version, sizeof(adapter->fw_version), + "%d.%d%d, 0x%08x", + (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK), etrack_id); + } else { + snprintf(adapter->fw_version, sizeof(adapter->fw_version), + "%d.%d%d", + (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK)); + } +out: + return; +} + +/** * igb_probe - Device Initialization Routine * @pdev: PCI device information struct * @ent: entry in igb_pci_tbl @@ -2030,6 +2098,9 @@ goto err_eeprom; } + /* get firmware version for ethtool -i */ + igb_set_fw_version(adapter); + setup_timer(&adapter->watchdog_timer, igb_watchdog, (unsigned long) adapter); setup_timer(&adapter->phy_info_timer, igb_update_phy_info, @@ -2338,6 +2409,7 @@ struct e1000_hw *hw = &adapter->hw; struct net_device *netdev = adapter->netdev; struct pci_dev *pdev = adapter->pdev; + u32 max_rss_queues; pci_read_config_word(pdev, PCI_COMMAND, &hw->bus.pci_cmd_word); @@ -2370,40 +2442,69 @@ } else adapter->vfs_allocated_count = max_vfs; break; - case e1000_i210: - case e1000_i211: - adapter->vfs_allocated_count = 0; - break; default: break; } #endif /* CONFIG_PCI_IOV */ + + /* Determine the maximum number of RSS queues supported. */ switch (hw->mac.type) { + case e1000_i211: + max_rss_queues = IGB_MAX_RX_QUEUES_I211; + break; + case e1000_82575: case e1000_i210: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES_I210, - num_online_cpus()); + max_rss_queues = IGB_MAX_RX_QUEUES_82575; + break; + case e1000_i350: + /* I350 cannot do RSS and SR-IOV at the same time */ + if (!!adapter->vfs_allocated_count) { + max_rss_queues = 1; + break; + } + /* fall through */ + case e1000_82576: + if (!!adapter->vfs_allocated_count) { + max_rss_queues = 2; + break; + } + /* fall through */ + case e1000_82580: + default: + max_rss_queues = IGB_MAX_RX_QUEUES; break; + } + + adapter->rss_queues = min_t(u32, max_rss_queues, num_online_cpus()); + + /* Determine if we need to pair queues. */ + switch (hw->mac.type) { + case e1000_82575: case e1000_i211: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES_I211, - num_online_cpus()); + /* Device supports enough interrupts without queue pairing. */ break; + case e1000_82576: + /* + * If VFs are going to be allocated with RSS queues then we + * should pair the queues in order to conserve interrupts due + * to limited supply. + */ + if ((adapter->rss_queues > 1) && + (adapter->vfs_allocated_count > 6)) + adapter->flags |= IGB_FLAG_QUEUE_PAIRS; + /* fall through */ + case e1000_82580: + case e1000_i350: + case e1000_i210: default: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES, - num_online_cpus()); + /* + * If rss_queues > half of max_rss_queues, pair the queues in + * order to conserve interrupts due to limited supply. + */ + if (adapter->rss_queues > (max_rss_queues / 2)) + adapter->flags |= IGB_FLAG_QUEUE_PAIRS; break; } - /* i350 cannot do RSS and SR-IOV at the same time */ - if (hw->mac.type == e1000_i350 && adapter->vfs_allocated_count) - adapter->rss_queues = 1; - - /* - * if rss_queues > 4 or vfs are going to be allocated with rss_queues - * then we should combine the queues into a queue pair in order to - * conserve interrupts due to limited supply - */ - if ((adapter->rss_queues > 4) || - ((adapter->rss_queues > 1) && (adapter->vfs_allocated_count > 6))) - adapter->flags |= IGB_FLAG_QUEUE_PAIRS; /* Setup and initialize a copy of the hw vlan table array */ adapter->shadow_vfta = kzalloc(sizeof(u32) * @@ -4570,11 +4671,13 @@ bytes = 0; packets = 0; for (i = 0; i < adapter->num_rx_queues; i++) { - u32 rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0x0FFF; + u32 rqdpc = rd32(E1000_RQDPC(i)); struct igb_ring *ring = adapter->rx_ring[i]; - ring->rx_stats.drops += rqdpc_tmp; - net_stats->rx_fifo_errors += rqdpc_tmp; + if (rqdpc) { + ring->rx_stats.drops += rqdpc; + net_stats->rx_fifo_errors += rqdpc; + } do { start = u64_stats_fetch_begin_bh(&ring->rx_syncp); @@ -6997,6 +7100,11 @@ } wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */ + /* + * Set global transmit compensation time to the MMW_SIZE in RTTBCNRM + * register. MMW_SIZE=0x014 if 9728-byte jumbo is supported. + */ + wr32(E1000_RTTBCNRM, 0x14); wr32(E1000_RTTBCNRC, bcnrc_val); } --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/e1000_regs.h +++ linux-3.5.0/drivers/net/ethernet/intel/igb/e1000_regs.h @@ -117,6 +117,7 @@ /* TX Rate Limit Registers */ #define E1000_RTTDQSEL 0x3604 /* Tx Desc Plane Queue Select - WO */ +#define E1000_RTTBCNRM 0x3690 /* Tx BCN Rate-scheduler MMW */ #define E1000_RTTBCNRC 0x36B0 /* Tx BCN Rate-Scheduler Config - WO */ /* Split and Replication RX Control - RW */ @@ -155,8 +156,12 @@ : (0x0E018 + ((_n) * 0x40))) #define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) \ : (0x0E028 + ((_n) * 0x40))) -#define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8)) -#define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8)) +#define E1000_RXCTL(_n) ((_n) < 4 ? (0x02814 + ((_n) * 0x100)) : \ + (0x0C014 + ((_n) * 0x40))) +#define E1000_DCA_RXCTRL(_n) E1000_RXCTL(_n) +#define E1000_TXCTL(_n) ((_n) < 4 ? (0x03814 + ((_n) * 0x100)) : \ + (0x0E014 + ((_n) * 0x40))) +#define E1000_DCA_TXCTRL(_n) E1000_TXCTL(_n) #define E1000_TDWBAL(_n) ((_n) < 4 ? (0x03838 + ((_n) * 0x100)) \ : (0x0E038 + ((_n) * 0x40))) #define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) \ --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_ptp.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_ptp.c @@ -330,7 +330,17 @@ void igb_ptp_remove(struct igb_adapter *adapter) { - cancel_delayed_work_sync(&adapter->overflow_work); + switch (adapter->hw.mac.type) { + case e1000_i211: + case e1000_i210: + case e1000_i350: + case e1000_82580: + case e1000_82576: + cancel_delayed_work_sync(&adapter->overflow_work); + break; + default: + return; + } if (adapter->ptp_clock) { ptp_clock_unregister(adapter->ptp_clock); --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb.h +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb.h @@ -65,19 +65,30 @@ #define MAX_Q_VECTORS 8 /* Transmit and receive queues */ -#define IGB_MAX_RX_QUEUES ((adapter->vfs_allocated_count ? 2 : \ - (hw->mac.type > e1000_82575 ? 8 : 4))) -#define IGB_MAX_RX_QUEUES_I210 4 +#define IGB_MAX_RX_QUEUES 8 +#define IGB_MAX_RX_QUEUES_82575 4 #define IGB_MAX_RX_QUEUES_I211 2 -#define IGB_MAX_TX_QUEUES 16 -#define IGB_MAX_TX_QUEUES_I210 4 -#define IGB_MAX_TX_QUEUES_I211 2 +#define IGB_MAX_TX_QUEUES 8 #define IGB_MAX_VF_MC_ENTRIES 30 #define IGB_MAX_VF_FUNCTIONS 8 #define IGB_MAX_VFTA_ENTRIES 128 #define IGB_82576_VF_DEV_ID 0x10CA #define IGB_I350_VF_DEV_ID 0x1520 +/* NVM version defines */ +#define IGB_MAJOR_MASK 0xF000 +#define IGB_MINOR_MASK 0x0FF0 +#define IGB_BUILD_MASK 0x000F +#define IGB_COMB_VER_MASK 0x00FF +#define IGB_MAJOR_SHIFT 12 +#define IGB_MINOR_SHIFT 4 +#define IGB_COMB_VER_SHFT 8 +#define IGB_NVM_VER_INVALID 0xFFFF +#define IGB_ETRACK_SHIFT 16 +#define NVM_ETRACK_WORD 0x0042 +#define NVM_COMB_VER_OFF 0x0083 +#define NVM_COMB_VER_PTR 0x003d + struct vf_data_storage { unsigned char vf_mac_addresses[ETH_ALEN]; u16 vf_mc_hashes[IGB_MAX_VF_MC_ENTRIES]; @@ -371,6 +382,7 @@ spinlock_t tmreg_lock; struct cyclecounter cc; struct timecounter tc; + char fw_version[32]; }; #define IGB_FLAG_HAS_MSI (1 << 0) @@ -420,6 +432,7 @@ extern bool igb_has_link(struct igb_adapter *adapter); extern void igb_set_ethtool_ops(struct net_device *); extern void igb_power_up_link(struct igb_adapter *); +extern void igb_set_fw_version(struct igb_adapter *); #ifdef CONFIG_IGB_PTP extern void igb_ptp_init(struct igb_adapter *adapter); extern void igb_ptp_remove(struct igb_adapter *adapter); --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/hw.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/hw.h @@ -77,6 +77,7 @@ #define E1000_POEMB E1000_PHY_CTRL /* PHY OEM Bits */ E1000_PBA = 0x01000, /* Packet Buffer Allocation - RW */ E1000_PBS = 0x01008, /* Packet Buffer Size */ + E1000_PBECCSTS = 0x0100C, /* Packet Buffer ECC Status - RW */ E1000_EEMNGCTL = 0x01010, /* MNG EEprom Control */ E1000_EEWR = 0x0102C, /* EEPROM Write Register - RW */ E1000_FLOP = 0x0103C, /* FLASH Opcode Register */ @@ -412,6 +413,8 @@ #define E1000_DEV_ID_PCH2_LV_V 0x1503 #define E1000_DEV_ID_PCH_LPT_I217_LM 0x153A #define E1000_DEV_ID_PCH_LPT_I217_V 0x153B +#define E1000_DEV_ID_PCH_LPTLP_I218_LM 0x155A +#define E1000_DEV_ID_PCH_LPTLP_I218_V 0x1559 #define E1000_REVISION_4 4 --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -65,6 +65,10 @@ module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); +static int eeprom_bad_csum_allow __read_mostly = 0; +module_param(eeprom_bad_csum_allow, int, 0); +MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad EEPROM checksums"); + static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state); static const struct e1000_info *e1000_info_tbl[] = { @@ -178,6 +182,24 @@ pr_info("%-15s %08x %08x\n", rname, regs[0], regs[1]); } +static void e1000e_dump_ps_pages(struct e1000_adapter *adapter, + struct e1000_buffer *bi) +{ + int i; + struct e1000_ps_page *ps_page; + + for (i = 0; i < adapter->rx_ps_pages; i++) { + ps_page = &bi->ps_pages[i]; + + if (ps_page->page) { + pr_info("packet dump for ps_page %d:\n", i); + print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, + 16, 1, page_address(ps_page->page), + PAGE_SIZE, true); + } + } +} + /* * e1000e_dump - Print registers, Tx-ring and Rx-ring */ @@ -299,10 +321,10 @@ (unsigned long long)buffer_info->time_stamp, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter) && buffer_info->dma != 0) + if (netif_msg_pktdata(adapter) && buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, - 16, 1, phys_to_virt(buffer_info->dma), - buffer_info->length, true); + 16, 1, buffer_info->skb->data, + buffer_info->skb->len, true); } /* Print Rx Ring Summary */ @@ -381,10 +403,8 @@ buffer_info->skb, next_desc); if (netif_msg_pktdata(adapter)) - print_hex_dump(KERN_INFO, "", - DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt(buffer_info->dma), - adapter->rx_ps_bsize0, true); + e1000e_dump_ps_pages(adapter, + buffer_info); } } break; @@ -444,12 +464,12 @@ (unsigned long long)buffer_info->dma, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter)) + if (netif_msg_pktdata(adapter) && + buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt - (buffer_info->dma), + buffer_info->skb->data, adapter->rx_buffer_len, true); } @@ -1671,6 +1691,23 @@ mod_timer(&adapter->watchdog_timer, jiffies + 1); } + /* Reset on uncorrectable ECC error */ + if ((icr & E1000_ICR_ECCER) && (hw->mac.type == e1000_pch_lpt)) { + u32 pbeccsts = er32(PBECCSTS); + + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + + /* Do the reset outside of interrupt context */ + schedule_work(&adapter->reset_task); + + /* return immediately since reset is imminent */ + return IRQ_HANDLED; + } + if (napi_schedule_prep(&adapter->napi)) { adapter->total_tx_bytes = 0; adapter->total_tx_packets = 0; @@ -1738,6 +1775,23 @@ mod_timer(&adapter->watchdog_timer, jiffies + 1); } + /* Reset on uncorrectable ECC error */ + if ((icr & E1000_ICR_ECCER) && (hw->mac.type == e1000_pch_lpt)) { + u32 pbeccsts = er32(PBECCSTS); + + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + + /* Do the reset outside of interrupt context */ + schedule_work(&adapter->reset_task); + + /* return immediately since reset is imminent */ + return IRQ_HANDLED; + } + if (napi_schedule_prep(&adapter->napi)) { adapter->total_tx_bytes = 0; adapter->total_tx_packets = 0; @@ -2101,6 +2155,8 @@ if (adapter->msix_entries) { ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); + } else if (hw->mac.type == e1000_pch_lpt) { + ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER); } else { ew32(IMS, IMS_ENABLE_MASK); } @@ -2474,6 +2530,30 @@ } /** + * e1000e_write_itr - write the ITR value to the appropriate registers + * @adapter: address of board private structure + * @itr: new ITR value to program + * + * e1000e_write_itr determines if the adapter is in MSI-X mode + * and, if so, writes the EITR registers with the ITR value. + * Otherwise, it writes the ITR value into the ITR register. + **/ +void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr) +{ + struct e1000_hw *hw = &adapter->hw; + u32 new_itr = itr ? 1000000000 / (itr * 256) : 0; + + if (adapter->msix_entries) { + int vector; + + for (vector = 0; vector < adapter->num_vectors; vector++) + writel(new_itr, hw->hw_addr + E1000_EITR_82574(vector)); + } else { + ew32(ITR, new_itr); + } +} + +/** * e1000_alloc_queues - Allocate memory for all rings * @adapter: board private structure to initialize **/ @@ -3059,7 +3139,7 @@ /* irq moderation */ ew32(RADV, adapter->rx_abs_int_delay); if ((adapter->itr_setting != 0) && (adapter->itr != 0)) - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); ctrl_ext = er32(CTRL_EXT); /* Auto-Mask interrupts upon ICR access */ @@ -3477,6 +3557,15 @@ } /* + * Alignment of Tx data is on an arbitrary byte boundary with the + * maximum size per Tx descriptor limited only to the transmit + * allocation of the packet buffer minus 96 bytes with an upper + * limit of 24KB due to receive synchronization limitations. + */ + adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, + 24 << 10); + + /* * Disable Adaptive Interrupt Moderation if 2 full packets cannot * fit in receive buffer. */ @@ -3486,14 +3575,14 @@ dev_info(&adapter->pdev->dev, "Interrupt Throttle Rate turned off\n"); adapter->flags2 |= FLAG2_DISABLE_AIM; - ew32(ITR, 0); + e1000e_write_itr(adapter, 0); } } else if (adapter->flags2 & FLAG2_DISABLE_AIM) { dev_info(&adapter->pdev->dev, "Interrupt Throttle Rate turned on\n"); adapter->flags2 &= ~FLAG2_DISABLE_AIM; adapter->itr = 20000; - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); } } @@ -4240,6 +4329,16 @@ adapter->stats.mgptc += er32(MGTPTC); adapter->stats.mgprc += er32(MGTPRC); adapter->stats.mgpdc += er32(MGTPDC); + + /* Correctable ECC Errors */ + if (hw->mac.type == e1000_pch_lpt) { + u32 pbeccsts = er32(PBECCSTS); + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + } } /** @@ -4576,7 +4675,7 @@ adapter->gorc - adapter->gotc) / 10000; u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000; - ew32(ITR, 1000000000 / (itr * 256)); + e1000e_write_itr(adapter, itr); } /* Cause software interrupt to ensure Rx ring is cleaned */ @@ -4745,12 +4844,9 @@ return 1; } -#define E1000_MAX_PER_TXD 8192 -#define E1000_MAX_TXD_PWR 12 - static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb, unsigned int first, unsigned int max_per_txd, - unsigned int nr_frags, unsigned int mss) + unsigned int nr_frags) { struct e1000_adapter *adapter = tx_ring->adapter; struct pci_dev *pdev = adapter->pdev; @@ -4983,20 +5079,19 @@ static int e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) { + BUG_ON(size > tx_ring->count); + if (e1000_desc_unused(tx_ring) >= size) return 0; return __e1000_maybe_stop_tx(tx_ring, size); } -#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1) static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) { struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_ring *tx_ring = adapter->tx_ring; unsigned int first; - unsigned int max_per_txd = E1000_MAX_PER_TXD; - unsigned int max_txd_pwr = E1000_MAX_TXD_PWR; unsigned int tx_flags = 0; unsigned int len = skb_headlen(skb); unsigned int nr_frags; @@ -5016,18 +5111,8 @@ } mss = skb_shinfo(skb)->gso_size; - /* - * The controller does a simple calculation to - * make sure there is enough room in the FIFO before - * initiating the DMA for each buffer. The calc is: - * 4 = ceil(buffer len/mss). To make sure we don't - * overrun the FIFO, adjust the max buffer len if mss - * drops. - */ if (mss) { u8 hdr_len; - max_per_txd = min(mss << 2, max_per_txd); - max_txd_pwr = fls(max_per_txd) - 1; /* * TSO Workaround for 82571/2/3 Controllers -- if skb->data @@ -5057,12 +5142,12 @@ count++; count++; - count += TXD_USE_COUNT(len, max_txd_pwr); + count += DIV_ROUND_UP(len, adapter->tx_fifo_limit); nr_frags = skb_shinfo(skb)->nr_frags; for (f = 0; f < nr_frags; f++) - count += TXD_USE_COUNT(skb_frag_size(&skb_shinfo(skb)->frags[f]), - max_txd_pwr); + count += DIV_ROUND_UP(skb_frag_size(&skb_shinfo(skb)->frags[f]), + adapter->tx_fifo_limit); if (adapter->hw.mac.tx_pkt_filtering) e1000_transfer_dhcp_info(adapter, skb); @@ -5104,15 +5189,18 @@ tx_flags |= E1000_TX_FLAGS_NO_FCS; /* if count is 0 then mapping error has occurred */ - count = e1000_tx_map(tx_ring, skb, first, max_per_txd, nr_frags, mss); + count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, + nr_frags); if (count) { skb_tx_timestamp(skb); netdev_sent_queue(netdev, skb->len); e1000_tx_queue(tx_ring, tx_flags, count); /* Make sure there is space in the ring for the next send. */ - e1000_maybe_stop_tx(tx_ring, MAX_SKB_FRAGS + 2); - + e1000_maybe_stop_tx(tx_ring, + (MAX_SKB_FRAGS * + DIV_ROUND_UP(PAGE_SIZE, + adapter->tx_fifo_limit) + 2)); } else { dev_kfree_skb_any(skb); tx_ring->buffer_info[first].time_stamp = 0; @@ -5516,7 +5604,7 @@ */ e1000e_release_hw_control(adapter); - pci_disable_device(pdev); + pci_clear_master(pdev); return 0; } @@ -6191,7 +6279,8 @@ } if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw)) - e_info("PHY reset is blocked due to SOL/IDER session.\n"); + dev_info(&pdev->dev, + "PHY reset is blocked due to SOL/IDER session.\n"); /* Set initial default active device features */ netdev->features = (NETIF_F_SG | @@ -6241,9 +6330,15 @@ if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) break; if (i == 2) { - e_err("The NVM Checksum Is Not Valid\n"); - err = -EIO; - goto err_eeprom; + dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n"); + + /* if we allow bad checksums, just break */ + if (eeprom_bad_csum_allow) { + break; + } else { + err = -EIO; + goto err_eeprom; + } } } @@ -6251,13 +6346,15 @@ /* copy the MAC address */ if (e1000e_read_mac_addr(&adapter->hw)) - e_err("NVM Read Error while reading MAC address\n"); + dev_err(&pdev->dev, + "NVM Read Error while reading MAC address\n"); memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); if (!is_valid_ether_addr(netdev->perm_addr)) { - e_err("Invalid MAC Address: %pM\n", netdev->perm_addr); + dev_err(&pdev->dev, "Invalid MAC Address: %pM\n", + netdev->perm_addr); err = -EIO; goto err_eeprom; } @@ -6284,8 +6381,8 @@ adapter->hw.phy.autoneg_advertised = 0x2f; /* ring size defaults */ - adapter->rx_ring->count = 256; - adapter->tx_ring->count = 256; + adapter->rx_ring->count = E1000_DEFAULT_RXD; + adapter->tx_ring->count = E1000_DEFAULT_TXD; /* * Initial Wake on LAN setting - If APM wake is enabled in @@ -6521,6 +6618,8 @@ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_LM), board_pch_lpt }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_V), board_pch_lpt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPTLP_I218_LM), board_pch_lpt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPTLP_I218_V), board_pch_lpt }, { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ }; --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/82571.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/82571.c @@ -999,7 +999,7 @@ **/ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) { - u32 ctrl, ctrl_ext, eecd; + u32 ctrl, ctrl_ext, eecd, tctl; s32 ret_val; /* @@ -1014,7 +1014,9 @@ ew32(IMC, 0xffffffff); ew32(RCTL, 0); - ew32(TCTL, E1000_TCTL_PSP); + tctl = er32(TCTL); + tctl &= ~E1000_TCTL_EN; + ew32(TCTL, tctl); e1e_flush(); usleep_range(10000, 20000); @@ -1601,10 +1603,8 @@ * auto-negotiation in the TXCW register and disable * forced link in the Device Control register in an * attempt to auto-negotiate with our link partner. - * If the partner code word is null, stop forcing - * and restart auto negotiation. */ - if ((rxcw & E1000_RXCW_C) || !(rxcw & E1000_RXCW_CW)) { + if (rxcw & E1000_RXCW_C) { /* Enable autoneg, and unforce link up */ ew32(TXCW, mac->txcw); ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); @@ -1680,16 +1680,18 @@ e_dbg("ANYSTATE -> DOWN\n"); } else { /* - * Check several times, if Sync and Config - * both are consistently 1 then simply ignore - * the Invalid bit and restart Autoneg + * Check several times, if SYNCH bit and CONFIG + * bit both are consistently 1 then simply ignore + * the IV bit and restart Autoneg */ for (i = 0; i < AN_RETRY_COUNT; i++) { udelay(10); rxcw = er32(RXCW); - if ((rxcw & E1000_RXCW_IV) && - !((rxcw & E1000_RXCW_SYNCH) && - (rxcw & E1000_RXCW_C))) { + if ((rxcw & E1000_RXCW_SYNCH) && + (rxcw & E1000_RXCW_C)) + continue; + + if (rxcw & E1000_RXCW_IV) { mac->serdes_has_link = false; mac->serdes_link_state = e1000_serdes_link_down; --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -108,6 +108,8 @@ E1000_STAT("dropped_smbus", stats.mgpdc), E1000_STAT("rx_dma_failed", rx_dma_failed), E1000_STAT("tx_dma_failed", tx_dma_failed), + E1000_STAT("uncorr_ecc_errors", uncorr_errors), + E1000_STAT("corr_ecc_errors", corr_errors), }; #define E1000_GLOBAL_STATS_LEN ARRAY_SIZE(e1000_gstrings_stats) @@ -1897,7 +1899,6 @@ struct ethtool_coalesce *ec) { struct e1000_adapter *adapter = netdev_priv(netdev); - struct e1000_hw *hw = &adapter->hw; if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) || ((ec->rx_coalesce_usecs > 4) && @@ -1916,9 +1917,9 @@ } if (adapter->itr_setting != 0) - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); else - ew32(ITR, 0); + e1000e_write_itr(adapter, 0); return 0; } @@ -2062,6 +2063,7 @@ .get_coalesce = e1000_get_coalesce, .set_coalesce = e1000_set_coalesce, .get_rxnfc = e1000_get_rxnfc, + .get_ts_info = ethtool_op_get_ts_info, }; void e1000e_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/param.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/param.c @@ -199,16 +199,19 @@ case enable_option: switch (*value) { case OPTION_ENABLED: - e_info("%s Enabled\n", opt->name); + dev_info(&adapter->pdev->dev, "%s Enabled\n", + opt->name); return 0; case OPTION_DISABLED: - e_info("%s Disabled\n", opt->name); + dev_info(&adapter->pdev->dev, "%s Disabled\n", + opt->name); return 0; } break; case range_option: if (*value >= opt->arg.r.min && *value <= opt->arg.r.max) { - e_info("%s set to %i\n", opt->name, *value); + dev_info(&adapter->pdev->dev, "%s set to %i\n", + opt->name, *value); return 0; } break; @@ -220,7 +223,8 @@ ent = &opt->arg.l.p[i]; if (*value == ent->i) { if (ent->str[0] != '\0') - e_info("%s\n", ent->str); + dev_info(&adapter->pdev->dev, "%s\n", + ent->str); return 0; } } @@ -230,8 +234,8 @@ BUG(); } - e_info("Invalid %s value specified (%i) %s\n", opt->name, *value, - opt->err); + dev_info(&adapter->pdev->dev, "Invalid %s value specified (%i) %s\n", + opt->name, *value, opt->err); *value = opt->def; return -1; } @@ -251,8 +255,10 @@ int bd = adapter->bd_number; if (bd >= E1000_MAX_NIC) { - e_notice("Warning: no configuration for board #%i\n", bd); - e_notice("Using defaults for all values\n"); + dev_notice(&adapter->pdev->dev, + "Warning: no configuration for board #%i\n", bd); + dev_notice(&adapter->pdev->dev, + "Using defaults for all values\n"); } { /* Transmit Interrupt Delay */ @@ -366,27 +372,32 @@ * default values */ if (adapter->itr > 4) - e_info("%s set to default %d\n", opt.name, - adapter->itr); + dev_info(&adapter->pdev->dev, + "%s set to default %d\n", opt.name, + adapter->itr); } adapter->itr_setting = adapter->itr; switch (adapter->itr) { case 0: - e_info("%s turned off\n", opt.name); + dev_info(&adapter->pdev->dev, "%s turned off\n", + opt.name); break; case 1: - e_info("%s set to dynamic mode\n", opt.name); + dev_info(&adapter->pdev->dev, + "%s set to dynamic mode\n", opt.name); adapter->itr = 20000; break; case 3: - e_info("%s set to dynamic conservative mode\n", - opt.name); + dev_info(&adapter->pdev->dev, + "%s set to dynamic conservative mode\n", + opt.name); adapter->itr = 20000; break; case 4: - e_info("%s set to simplified (2000-8000 ints) mode\n", - opt.name); + dev_info(&adapter->pdev->dev, + "%s set to simplified (2000-8000 ints) mode\n", + opt.name); break; default: /* --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/defines.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/defines.h @@ -233,6 +233,7 @@ #define E1000_CTRL_FRCDPX 0x00001000 /* Force Duplex */ #define E1000_CTRL_LANPHYPC_OVERRIDE 0x00010000 /* SW control of LANPHYPC */ #define E1000_CTRL_LANPHYPC_VALUE 0x00020000 /* SW value of LANPHYPC */ +#define E1000_CTRL_MEHE 0x00080000 /* Memory Error Handling Enable */ #define E1000_CTRL_SWDPIN0 0x00040000 /* SWDPIN 0 value */ #define E1000_CTRL_SWDPIN1 0x00080000 /* SWDPIN 1 value */ #define E1000_CTRL_SWDPIO0 0x00400000 /* SWDPIN 0 Input or output */ @@ -391,6 +392,12 @@ #define E1000_PBS_16K E1000_PBA_16K +/* Uncorrectable/correctable ECC Error counts and enable bits */ +#define E1000_PBECCSTS_CORR_ERR_CNT_MASK 0x000000FF +#define E1000_PBECCSTS_UNCORR_ERR_CNT_MASK 0x0000FF00 +#define E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT 8 +#define E1000_PBECCSTS_ECC_ENABLE 0x00010000 + #define IFS_MAX 80 #define IFS_MIN 40 #define IFS_RATIO 4 @@ -410,6 +417,7 @@ #define E1000_ICR_RXSEQ 0x00000008 /* Rx sequence error */ #define E1000_ICR_RXDMT0 0x00000010 /* Rx desc min. threshold (0) */ #define E1000_ICR_RXT0 0x00000080 /* Rx timer intr (ring 0) */ +#define E1000_ICR_ECCER 0x00400000 /* Uncorrectable ECC Error */ #define E1000_ICR_INT_ASSERTED 0x80000000 /* If this bit asserted, the driver should claim the interrupt */ #define E1000_ICR_RXQ0 0x00100000 /* Rx Queue 0 Interrupt */ #define E1000_ICR_RXQ1 0x00200000 /* Rx Queue 1 Interrupt */ @@ -446,6 +454,7 @@ #define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */ #define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */ #define E1000_IMS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */ +#define E1000_IMS_ECCER E1000_ICR_ECCER /* Uncorrectable ECC Error */ #define E1000_IMS_RXQ0 E1000_ICR_RXQ0 /* Rx Queue 0 Interrupt */ #define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */ #define E1000_IMS_TXQ0 E1000_ICR_TXQ0 /* Tx Queue 0 Interrupt */ --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/e1000.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/e1000.h @@ -310,9 +310,12 @@ */ struct e1000_ring *tx_ring /* One per active queue */ ____cacheline_aligned_in_smp; + u32 tx_fifo_limit; struct napi_struct napi; + unsigned int uncorr_errors; /* uncorrectable ECC errors */ + unsigned int corr_errors; /* correctable ECC errors */ unsigned int restart_queue; u32 txd_cmd; @@ -514,6 +517,7 @@ extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); extern void e1000e_get_hw_control(struct e1000_adapter *adapter); extern void e1000e_release_hw_control(struct e1000_adapter *adapter); +extern void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr); extern unsigned int copybreak; --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -3690,6 +3690,17 @@ if (hw->mac.type == e1000_ich8lan) reg |= (E1000_RFCTL_IPV6_EX_DIS | E1000_RFCTL_NEW_IPV6_EXT_DIS); ew32(RFCTL, reg); + + /* Enable ECC on Lynxpoint */ + if (hw->mac.type == e1000_pch_lpt) { + reg = er32(PBECCSTS); + reg |= E1000_PBECCSTS_ECC_ENABLE; + ew32(PBECCSTS, reg); + + reg = er32(CTRL); + reg |= E1000_CTRL_MEHE; + ew32(CTRL, reg); + } } /** --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h @@ -67,6 +67,7 @@ #define IXGBE_DEV_ID_82599_LS 0x154F #define IXGBE_DEV_ID_X540T 0x1528 #define IXGBE_DEV_ID_82599_SFP_SF_QP 0x154A +#define IXGBE_DEV_ID_X540T1 0x1560 /* VF Device IDs */ #define IXGBE_DEV_ID_82599_VF 0x10ED --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -114,6 +114,7 @@ {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS), board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599EN_SFP), board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF_QP), board_82599 }, + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540T1), board_X540 }, /* required last entry */ {0, } }; @@ -2292,6 +2293,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) @@ -6953,6 +6964,7 @@ is_wol_supported = 1; break; case IXGBE_DEV_ID_X540T: + case IXGBE_DEV_ID_X540T1: /* check eeprom to see if enabled wol */ if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0) && @@ -7660,12 +7672,15 @@ pr_info("%s - version %s\n", ixgbe_driver_string, ixgbe_driver_version); pr_info("%s\n", ixgbe_copyright); + ret = pci_register_driver(&ixgbe_driver); + if (ret) + 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-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c @@ -2706,6 +2706,9 @@ case ixgbe_mac_X540: case ixgbe_mac_82599EB: info->so_timestamping = + SOF_TIMESTAMPING_TX_SOFTWARE | + SOF_TIMESTAMPING_RX_SOFTWARE | + SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_RX_HARDWARE | SOF_TIMESTAMPING_RAW_HARDWARE; @@ -2723,10 +2726,7 @@ (1 << HWTSTAMP_FILTER_NONE) | (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | - (1 << HWTSTAMP_FILTER_PTP_V2_SYNC) | - (1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) | - (1 << HWTSTAMP_FILTER_PTP_V2_EVENT) | - (1 << HWTSTAMP_FILTER_SOME); + (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); break; #endif /* CONFIG_IXGBE_PTP */ default: --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c @@ -70,6 +70,7 @@ switch (hw->device_id) { case IXGBE_DEV_ID_X540T: + case IXGBE_DEV_ID_X540T1: return 0; case IXGBE_DEV_ID_82599_T3_LOM: return 0; --- linux-3.5.0.orig/drivers/net/ethernet/davicom/dm9000.h +++ linux-3.5.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-3.5.0.orig/drivers/net/ethernet/davicom/dm9000.c +++ linux-3.5.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-3.5.0.orig/drivers/net/ethernet/emulex/benet/be.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be.h @@ -110,6 +110,7 @@ #define MAX_RX_POST BE_NAPI_WEIGHT /* Frags posted at a time */ #define RX_FRAGS_REFILL_WM (RX_Q_LEN - MAX_RX_POST) +#define MAX_VFS 30 /* Max VFs supported by BE3 FW */ #define FW_VER_LEN 32 struct be_dma_mem { @@ -336,7 +337,6 @@ u16 auto_speeds_supported; u16 fixed_speeds_supported; int link_speed; - int forced_port_speed; u32 dac_cable_len; u32 advertising; u32 supported; @@ -389,6 +389,7 @@ struct delayed_work work; u16 work_counter; + struct delayed_work func_recovery_work; u32 flags; /* Ethtool knobs and info */ char fw_ver[FW_VER_LEN]; @@ -396,9 +397,10 @@ u32 *pmac_id; /* MAC addr handle used by BE card */ u32 beacon_state; /* for set_phys_id */ - bool eeh_err; - bool ue_detected; + bool eeh_error; bool fw_timeout; + bool hw_error; + u32 port_num; bool promiscuous; u32 function_mode; @@ -435,6 +437,7 @@ u32 max_pmac_cnt; /* Max secondary UC MACs programmable */ u32 uc_macs; /* Count of secondary UC MAC programmed */ u32 msg_enable; + int be_get_temp_freq; }; #define be_physfn(adapter) (!adapter->virtfn) @@ -454,6 +457,9 @@ #define lancer_chip(adapter) ((adapter->pdev->device == OC_DEVICE_ID3) || \ (adapter->pdev->device == OC_DEVICE_ID4)) +#define skyhawk_chip(adapter) (adapter->pdev->device == OC_DEVICE_ID5) + + #define be_roce_supported(adapter) ((adapter->if_type == SLI_INTF_TYPE_3 || \ adapter->sli_family == SKYHAWK_SLI_FAMILY) && \ (adapter->function_mode & RDMA_ENABLED)) @@ -573,6 +579,11 @@ return val; } +static inline bool is_ipv4_pkt(struct sk_buff *skb) +{ + return skb->protocol == htons(ETH_P_IP) && ip_hdr(skb)->version == 4; +} + static inline void be_vf_eth_addr_generate(struct be_adapter *adapter, u8 *mac) { u32 addr; @@ -593,7 +604,19 @@ static inline bool be_error(struct be_adapter *adapter) { - return adapter->eeh_err || adapter->ue_detected || adapter->fw_timeout; + return adapter->eeh_error || adapter->hw_error || adapter->fw_timeout; +} + +static inline bool be_crit_error(struct be_adapter *adapter) +{ + return adapter->eeh_error || adapter->hw_error; +} + +static inline void be_clear_all_error(struct be_adapter *adapter) +{ + adapter->eeh_error = false; + adapter->hw_error = false; + adapter->fw_timeout = false; } static inline bool be_is_wol_excluded(struct be_adapter *adapter) --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_cmds.h @@ -93,6 +93,7 @@ LINK_UP = 0x1 }; #define LINK_STATUS_MASK 0x1 +#define LOGICAL_LINK_STATUS_MASK 0x2 /* When the event code of an async trailer is link-state, the mcc_compl * must be interpreted as follows @@ -1088,6 +1089,8 @@ #define RSS_ENABLE_TCP_IPV4 0x2 #define RSS_ENABLE_IPV6 0x4 #define RSS_ENABLE_TCP_IPV6 0x8 +#define RSS_ENABLE_UDP_IPV4 0x10 +#define RSS_ENABLE_UDP_IPV6 0x20 struct be_cmd_req_rss_config { struct be_cmd_req_hdr hdr; @@ -1163,6 +1166,8 @@ u32 addr_high; }; +#define LANCER_NO_RESET_NEEDED 0x00 +#define LANCER_FW_RESET_NEEDED 0x02 struct lancer_cmd_resp_write_object { u8 opcode; u8 subsystem; @@ -1173,6 +1178,8 @@ u32 resp_len; u32 actual_resp_len; u32 actual_write_len; + u8 change_status; + u8 rsvd3[3]; }; /************************ Lancer Read FW info **************/ @@ -1656,7 +1663,7 @@ }; extern int be_pci_fnum_get(struct be_adapter *adapter); -extern int be_cmd_POST(struct be_adapter *adapter); +extern int be_fw_wait_ready(struct be_adapter *adapter); extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr, u8 type, bool permanent, u32 if_handle, u32 pmac_id); extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, @@ -1664,8 +1671,7 @@ extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, int pmac_id, u32 domain); extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, - u32 en_flags, u8 *mac, u32 *if_handle, u32 *pmac_id, - u32 domain); + u32 en_flags, u32 *if_handle, u32 domain); extern int be_cmd_if_destroy(struct be_adapter *adapter, int if_handle, u32 domain); extern int be_cmd_eq_create(struct be_adapter *adapter, @@ -1686,8 +1692,8 @@ int type); extern int be_cmd_rxq_destroy(struct be_adapter *adapter, struct be_queue_info *q); -extern int be_cmd_link_status_query(struct be_adapter *adapter, u8 *mac_speed, - u16 *link_speed, u8 *link_status, u32 dom); +extern int be_cmd_link_status_query(struct be_adapter *adapter, u16 *link_speed, + u8 *link_status, u32 dom); extern int be_cmd_reset(struct be_adapter *adapter); extern int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd); @@ -1719,10 +1725,11 @@ struct be_dma_mem *cmd, u32 flash_oper, u32 flash_opcode, u32 buf_size); extern int lancer_cmd_write_object(struct be_adapter *adapter, - struct be_dma_mem *cmd, - u32 data_size, u32 data_offset, - const char *obj_name, - u32 *data_written, u8 *addn_status); + struct be_dma_mem *cmd, + u32 data_size, u32 data_offset, + const char *obj_name, + u32 *data_written, u8 *change_status, + u8 *addn_status); int lancer_cmd_read_object(struct be_adapter *adapter, struct be_dma_mem *cmd, u32 data_size, u32 data_offset, const char *obj_name, u32 *data_read, u32 *eof, u8 *addn_status); @@ -1745,14 +1752,15 @@ u8 loopback_type, u8 enable); extern int be_cmd_get_phy_info(struct be_adapter *adapter); extern int be_cmd_set_qos(struct be_adapter *adapter, u32 bps, u32 domain); -extern void be_detect_dump_ue(struct be_adapter *adapter); +extern void be_detect_error(struct be_adapter *adapter); extern int be_cmd_get_die_temperature(struct be_adapter *adapter); extern int be_cmd_get_cntl_attributes(struct be_adapter *adapter); extern int be_cmd_req_native_mode(struct be_adapter *adapter); extern int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size); extern void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf); -extern int be_cmd_get_mac_from_list(struct be_adapter *adapter, u32 domain, - bool *pmac_id_active, u32 *pmac_id, u8 *mac); +extern int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, + bool *pmac_id_active, u32 *pmac_id, + u8 domain); extern int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array, u8 mac_count, u32 domain); extern int be_cmd_set_hsw_config(struct be_adapter *adapter, u16 pvid, @@ -1765,4 +1773,6 @@ extern int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter, struct be_dma_mem *cmd, struct be_fat_conf_params *cfgs); +extern int lancer_wait_ready(struct be_adapter *adapter); +extern int lancer_test_and_set_rdy_state(struct be_adapter *adapter); --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_hw.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_hw.h @@ -45,20 +45,19 @@ #define POST_STAGE_ARMFW_RDY 0xc000 /* FW is done with POST */ -/* Lancer SLIPORT_CONTROL SLIPORT_STATUS registers */ +/* Lancer SLIPORT registers */ #define SLIPORT_STATUS_OFFSET 0x404 #define SLIPORT_CONTROL_OFFSET 0x408 #define SLIPORT_ERROR1_OFFSET 0x40C #define SLIPORT_ERROR2_OFFSET 0x410 +#define PHYSDEV_CONTROL_OFFSET 0x414 #define SLIPORT_STATUS_ERR_MASK 0x80000000 #define SLIPORT_STATUS_RN_MASK 0x01000000 #define SLIPORT_STATUS_RDY_MASK 0x00800000 - - #define SLI_PORT_CONTROL_IP_MASK 0x08000000 - -#define PCICFG_CUST_SCRATCHPAD_CSR 0x1EC +#define PHYSDEV_CONTROL_FW_RESET_MASK 0x00000002 +#define PHYSDEV_CONTROL_INP_MASK 0x40000000 /********* Memory BAR register ************/ #define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_main.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_main.c @@ -155,7 +155,7 @@ { u32 reg, enabled; - if (adapter->eeh_err) + if (adapter->eeh_error) return; pci_read_config_dword(adapter->pdev, PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET, @@ -201,7 +201,7 @@ val |= ((qid & DB_EQ_RING_ID_EXT_MASK) << DB_EQ_RING_ID_EXT_MASK_SHIFT); - if (adapter->eeh_err) + if (adapter->eeh_error) return; if (arm) @@ -220,7 +220,7 @@ val |= ((qid & DB_CQ_RING_ID_EXT_MASK) << DB_CQ_RING_ID_EXT_MASK_SHIFT); - if (adapter->eeh_err) + if (adapter->eeh_error) return; if (arm) @@ -558,6 +558,7 @@ wrb->frag_pa_hi = upper_32_bits(addr); wrb->frag_pa_lo = addr & 0xFFFFFFFF; wrb->frag_len = len & ETH_WRB_FRAG_LEN_MASK; + wrb->rsvd0 = 0; } static inline u16 be_get_tx_vlan_tag(struct be_adapter *adapter, @@ -576,6 +577,11 @@ return vlan_tag; } +static int be_vlan_tag_chk(struct be_adapter *adapter, struct sk_buff *skb) +{ + return vlan_tx_tag_present(skb) || adapter->pvid; +} + static void wrb_fill_hdr(struct be_adapter *adapter, struct be_eth_hdr_wrb *hdr, struct sk_buff *skb, u32 wrb_cnt, u32 len) { @@ -703,33 +709,56 @@ return 0; } +static struct sk_buff *be_insert_vlan_in_pkt(struct be_adapter *adapter, + struct sk_buff *skb) +{ + u16 vlan_tag = 0; + + skb = skb_share_check(skb, GFP_ATOMIC); + if (unlikely(!skb)) + return skb; + + if (vlan_tx_tag_present(skb)) { + vlan_tag = be_get_tx_vlan_tag(adapter, skb); + __vlan_put_tag(skb, vlan_tag); + skb->vlan_tci = 0; + } + + return skb; +} + static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev) { struct be_adapter *adapter = netdev_priv(netdev); struct be_tx_obj *txo = &adapter->tx_obj[skb_get_queue_mapping(skb)]; struct be_queue_info *txq = &txo->q; + struct iphdr *ip = NULL; u32 wrb_cnt = 0, copied = 0; - u32 start = txq->head; + u32 start = txq->head, eth_hdr_len; bool dummy_wrb, stopped = false; - /* For vlan tagged pkts, BE - * 1) calculates checksum even when CSO is not requested - * 2) calculates checksum wrongly for padded pkt less than - * 60 bytes long. - * As a workaround disable TX vlan offloading in such cases. + eth_hdr_len = ntohs(skb->protocol) == ETH_P_8021Q ? + VLAN_ETH_HLEN : ETH_HLEN; + + /* HW has a bug which considers padding bytes as legal + * and modifies the IPv4 hdr's 'tot_len' field */ - if (unlikely(vlan_tx_tag_present(skb) && - (skb->ip_summed != CHECKSUM_PARTIAL || skb->len <= 60))) { - skb = skb_share_check(skb, GFP_ATOMIC); - if (unlikely(!skb)) - goto tx_drop; + if (skb->len <= 60 && be_vlan_tag_chk(adapter, skb) && + is_ipv4_pkt(skb)) { + ip = (struct iphdr *)ip_hdr(skb); + pskb_trim(skb, eth_hdr_len + ntohs(ip->tot_len)); + } - skb = __vlan_put_tag(skb, be_get_tx_vlan_tag(adapter, skb)); + /* HW has a bug wherein it will calculate CSUM for VLAN + * pkts even though it is disabled. + * Manually insert VLAN in pkt. + */ + if (skb->ip_summed != CHECKSUM_PARTIAL && + be_vlan_tag_chk(adapter, skb)) { + skb = be_insert_vlan_in_pkt(adapter, skb); if (unlikely(!skb)) goto tx_drop; - - skb->vlan_tci = 0; } wrb_cnt = wrb_cnt_for_skb(adapter, skb, &dummy_wrb); @@ -786,19 +815,12 @@ * A max of 64 (BE_NUM_VLANS_SUPPORTED) vlans can be configured in BE. * If the user configures more, place BE in vlan promiscuous mode. */ -static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num) +static int be_vid_config(struct be_adapter *adapter) { - struct be_vf_cfg *vf_cfg = &adapter->vf_cfg[vf_num]; - u16 vtag[BE_NUM_VLANS_SUPPORTED]; - u16 ntags = 0, i; + u16 vids[BE_NUM_VLANS_SUPPORTED]; + u16 num = 0, i; int status = 0; - if (vf) { - vtag[0] = cpu_to_le16(vf_cfg->vlan_tag); - status = be_cmd_vlan_config(adapter, vf_cfg->if_handle, vtag, - 1, 1, 0); - } - /* No need to further configure vids if in promiscuous mode */ if (adapter->promiscuous) return 0; @@ -809,10 +831,10 @@ /* Construct VLAN Table to give to HW */ for (i = 0; i < VLAN_N_VID; i++) if (adapter->vlan_tag[i]) - vtag[ntags++] = cpu_to_le16(i); + vids[num++] = cpu_to_le16(i); status = be_cmd_vlan_config(adapter, adapter->if_handle, - vtag, ntags, 1, 0); + vids, num, 1, 0); /* Set to VLAN promisc mode as setting VLAN filter failed */ if (status) { @@ -841,7 +863,7 @@ adapter->vlan_tag[vid] = 1; if (adapter->vlans_added <= (adapter->max_vlans + 1)) - status = be_vid_config(adapter, false, 0); + status = be_vid_config(adapter); if (!status) adapter->vlans_added++; @@ -863,7 +885,7 @@ adapter->vlan_tag[vid] = 0; if (adapter->vlans_added <= adapter->max_vlans) - status = be_vid_config(adapter, false, 0); + status = be_vid_config(adapter); if (!status) adapter->vlans_added--; @@ -890,7 +912,7 @@ be_cmd_rx_filter(adapter, IFF_PROMISC, OFF); if (adapter->vlans_added) - be_vid_config(adapter, false, 0); + be_vid_config(adapter); } /* Enable multicast promisc if num configured exceeds what we support */ @@ -1053,17 +1075,18 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state) { struct pci_dev *dev, *pdev = adapter->pdev; - int vfs = 0, assigned_vfs = 0, pos, vf_fn; + int vfs = 0, assigned_vfs = 0, pos; u16 offset, stride; pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); + if (!pos) + return 0; pci_read_config_word(pdev, pos + PCI_SRIOV_VF_OFFSET, &offset); pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride); dev = pci_get_device(pdev->vendor, PCI_ANY_ID, NULL); while (dev) { - vf_fn = (pdev->devfn + offset + stride * vfs) & 0xFFFF; - if (dev->is_virtfn && dev->devfn == vf_fn) { + if (dev->is_virtfn && pci_physfn(dev) == pdev) { vfs++; if (dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) assigned_vfs++; @@ -1203,16 +1226,16 @@ /* Copy data in the first descriptor of this completion */ curr_frag_len = min(rxcp->pkt_size, rx_frag_size); - /* Copy the header portion into skb_data */ - hdr_len = min(BE_HDR_LEN, curr_frag_len); - memcpy(skb->data, start, hdr_len); skb->len = curr_frag_len; if (curr_frag_len <= BE_HDR_LEN) { /* tiny packet */ + memcpy(skb->data, start, curr_frag_len); /* Complete packet has now been moved to data */ put_page(page_info->page); skb->data_len = 0; skb->tail += curr_frag_len; } else { + hdr_len = ETH_HLEN; + memcpy(skb->data, start, hdr_len); skb_shinfo(skb)->nr_frags = 1; skb_frag_set_page(skb, 0, page_info->page); skb_shinfo(skb)->frags[0].page_offset = @@ -1372,7 +1395,7 @@ rxcp->pkt_type = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, cast_enc, compl); rxcp->rss_hash = - AMAP_GET_BITS(struct amap_eth_rx_compl_v1, rsshash, rxcp); + AMAP_GET_BITS(struct amap_eth_rx_compl_v1, rsshash, compl); if (rxcp->vlanf) { rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm, compl); @@ -1404,7 +1427,7 @@ rxcp->pkt_type = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, cast_enc, compl); rxcp->rss_hash = - AMAP_GET_BITS(struct amap_eth_rx_compl_v0, rsshash, rxcp); + AMAP_GET_BITS(struct amap_eth_rx_compl_v0, rsshash, compl); if (rxcp->vlanf) { rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm, compl); @@ -1709,9 +1732,10 @@ int i; for_all_evt_queues(adapter, eqo, i) { - be_eq_clean(eqo); - if (eqo->q.created) + if (eqo->q.created) { + be_eq_clean(eqo); be_cmd_q_destroy(adapter, &eqo->q, QTYPE_EQ); + } be_queue_free(adapter, &eqo->q); } } @@ -1898,6 +1922,12 @@ */ adapter->num_rx_qs = (num_irqs(adapter) > 1) ? num_irqs(adapter) + 1 : 1; + if (adapter->num_rx_qs != MAX_RX_QS) { + rtnl_lock(); + netif_set_real_num_rx_queues(adapter->netdev, + adapter->num_rx_qs); + rtnl_unlock(); + } adapter->big_page_size = (1 << get_order(rx_frag_size)) * PAGE_SIZE; for_all_rx_queues(adapter, rxo, i) { @@ -2067,13 +2097,13 @@ return max_work; } -void be_detect_dump_ue(struct be_adapter *adapter) +void be_detect_error(struct be_adapter *adapter) { u32 ue_lo = 0, ue_hi = 0, ue_lo_mask = 0, ue_hi_mask = 0; u32 sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0; u32 i; - if (adapter->eeh_err || adapter->ue_detected) + if (be_crit_error(adapter)) return; if (lancer_chip(adapter)) { @@ -2094,16 +2124,27 @@ pci_read_config_dword(adapter->pdev, PCICFG_UE_STATUS_HI_MASK, &ue_hi_mask); - ue_lo = (ue_lo & (~ue_lo_mask)); - ue_hi = (ue_hi & (~ue_hi_mask)); + ue_lo = (ue_lo & ~ue_lo_mask); + ue_hi = (ue_hi & ~ue_hi_mask); } - if (ue_lo || ue_hi || - sliport_status & SLIPORT_STATUS_ERR_MASK) { - adapter->ue_detected = true; - adapter->eeh_err = true; + /* On certain platforms BE hardware can indicate spurious UEs. + * Allow the h/w to stop working completely in case of a real UE. + * Hence not setting the hw_error for UE detection. + */ + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + adapter->hw_error = true; dev_err(&adapter->pdev->dev, - "Unrecoverable error in the card\n"); + "Error detected in the card\n"); + } + + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + dev_err(&adapter->pdev->dev, + "ERR: sliport status 0x%x\n", sliport_status); + dev_err(&adapter->pdev->dev, + "ERR: sliport error1 0x%x\n", sliport_err1); + dev_err(&adapter->pdev->dev, + "ERR: sliport error2 0x%x\n", sliport_err2); } if (ue_lo) { @@ -2113,6 +2154,7 @@ "UE: %s bit set\n", ue_status_low_desc[i]); } } + if (ue_hi) { for (i = 0; ue_hi; ue_hi >>= 1, i++) { if (ue_hi & 1) @@ -2121,14 +2163,6 @@ } } - if (sliport_status & SLIPORT_STATUS_ERR_MASK) { - dev_err(&adapter->pdev->dev, - "sliport status 0x%x\n", sliport_status); - dev_err(&adapter->pdev->dev, - "sliport error1 0x%x\n", sliport_err1); - dev_err(&adapter->pdev->dev, - "sliport error2 0x%x\n", sliport_err2); - } } static void be_msix_disable(struct be_adapter *adapter) @@ -2142,8 +2176,7 @@ static uint be_num_rss_want(struct be_adapter *adapter) { if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) && - !sriov_want(adapter) && be_physfn(adapter) && - !be_is_mc(adapter)) + !sriov_want(adapter) && be_physfn(adapter)) return (adapter->be3_native) ? BE3_MAX_RSS_QS : BE2_MAX_RSS_QS; else return 0; @@ -2406,8 +2439,7 @@ be_eq_notify(adapter, eqo->q.id, true, false, 0); } - status = be_cmd_link_status_query(adapter, NULL, NULL, - &link_status, 0); + status = be_cmd_link_status_query(adapter, NULL, &link_status, 0); if (!status) be_link_status_update(adapter, link_status); @@ -2540,11 +2572,7 @@ be_tx_queues_destroy(adapter); be_evt_queues_destroy(adapter); - /* tell fw we're done with firing cmds */ - be_cmd_fw_clean(adapter); - be_msix_disable(adapter); - pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 0); return 0; } @@ -2602,8 +2630,8 @@ cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_MULTICAST; for_all_vfs(adapter, vf_cfg, vf) { - status = be_cmd_if_create(adapter, cap_flags, en_flags, NULL, - &vf_cfg->if_handle, NULL, vf + 1); + status = be_cmd_if_create(adapter, cap_flags, en_flags, + &vf_cfg->if_handle, vf + 1); if (status) goto err; } @@ -2615,8 +2643,8 @@ } for_all_vfs(adapter, vf_cfg, vf) { - status = be_cmd_link_status_query(adapter, NULL, &lnk_speed, - NULL, vf + 1); + lnk_speed = 1000; + status = be_cmd_set_qos(adapter, lnk_speed, vf + 1); if (status) goto err; vf_cfg->tx_rate = lnk_speed * 10; @@ -2640,32 +2668,45 @@ adapter->be3_native = false; adapter->promiscuous = false; adapter->eq_next_idx = 0; - adapter->phy.forced_port_speed = -1; } -static int be_add_mac_from_list(struct be_adapter *adapter, u8 *mac) +static int be_get_mac_addr(struct be_adapter *adapter, u8 *mac, u32 if_handle, + bool *active_mac, u32 *pmac_id) { - u32 pmac_id; - int status; - bool pmac_id_active; + int status = 0; - status = be_cmd_get_mac_from_list(adapter, 0, &pmac_id_active, - &pmac_id, mac); - if (status != 0) - goto do_none; + if (!is_zero_ether_addr(adapter->netdev->perm_addr)) { + memcpy(mac, adapter->netdev->dev_addr, ETH_ALEN); + if (!lancer_chip(adapter) && !be_physfn(adapter)) + *active_mac = true; + else + *active_mac = false; - if (pmac_id_active) { - status = be_cmd_mac_addr_query(adapter, mac, - MAC_ADDRESS_TYPE_NETWORK, - false, adapter->if_handle, pmac_id); + return status; + } - if (!status) - adapter->pmac_id[0] = pmac_id; + if (lancer_chip(adapter)) { + status = be_cmd_get_mac_from_list(adapter, mac, + active_mac, pmac_id, 0); + if (*active_mac) { + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, + false, if_handle, + *pmac_id); + } + } else if (be_physfn(adapter)) { + /* For BE3, for PF get permanent MAC */ + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, true, + 0, 0); + *active_mac = false; } else { - status = be_cmd_pmac_add(adapter, mac, - adapter->if_handle, &adapter->pmac_id[0], 0); + /* For BE3, for VF get soft MAC assigned by PF*/ + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, false, + if_handle, 0); + *active_mac = true; } -do_none: return status; } @@ -2679,6 +2720,8 @@ if (pos) { pci_read_config_word(adapter->pdev, pos + PCI_SRIOV_TOTAL_VF, &dev_num_vfs); + if (!lancer_chip(adapter)) + dev_num_vfs = min_t(u16, dev_num_vfs, MAX_VFS); adapter->dev_num_vfs = dev_num_vfs; } return 0; @@ -2686,12 +2729,12 @@ static int be_setup(struct be_adapter *adapter) { - struct net_device *netdev = adapter->netdev; struct device *dev = &adapter->pdev->dev; u32 cap_flags, en_flags; u32 tx_fc, rx_fc; int status; u8 mac[ETH_ALEN]; + bool active_mac; be_setup_init(adapter); @@ -2717,14 +2760,6 @@ if (status) goto err; - memset(mac, 0, ETH_ALEN); - status = be_cmd_mac_addr_query(adapter, mac, MAC_ADDRESS_TYPE_NETWORK, - true /*permanent */, 0, 0); - if (status) - return status; - memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); - memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); - en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_MULTICAST | BE_IF_FLAGS_PASS_L3L4_ERRORS; cap_flags = en_flags | BE_IF_FLAGS_MCAST_PROMISCUOUS | @@ -2734,27 +2769,36 @@ cap_flags |= BE_IF_FLAGS_RSS; en_flags |= BE_IF_FLAGS_RSS; } + + if (lancer_chip(adapter) && !be_physfn(adapter)) { + en_flags = BE_IF_FLAGS_UNTAGGED | + BE_IF_FLAGS_BROADCAST | + BE_IF_FLAGS_MULTICAST; + cap_flags = en_flags; + } + status = be_cmd_if_create(adapter, cap_flags, en_flags, - netdev->dev_addr, &adapter->if_handle, - &adapter->pmac_id[0], 0); + &adapter->if_handle, 0); if (status != 0) goto err; - /* The VF's permanent mac queried from card is incorrect. - * For BEx: Query the mac configued by the PF using if_handle - * For Lancer: Get and use mac_list to obtain mac address. - */ - if (!be_physfn(adapter)) { - if (lancer_chip(adapter)) - status = be_add_mac_from_list(adapter, mac); - else - status = be_cmd_mac_addr_query(adapter, mac, - MAC_ADDRESS_TYPE_NETWORK, false, - adapter->if_handle, 0); - if (!status) { - memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); - memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); - } + memset(mac, 0, ETH_ALEN); + active_mac = false; + status = be_get_mac_addr(adapter, mac, adapter->if_handle, + &active_mac, &adapter->pmac_id[0]); + if (status != 0) + goto err; + + if (!active_mac) { + status = be_cmd_pmac_add(adapter, mac, adapter->if_handle, + &adapter->pmac_id[0], 0); + if (status != 0) + goto err; + } + + if (is_zero_ether_addr(adapter->netdev->dev_addr)) { + memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); + memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); } status = be_tx_qs_create(adapter); @@ -2763,7 +2807,8 @@ be_cmd_get_fw_ver(adapter, adapter->fw_ver, NULL); - be_vid_config(adapter, false, 0); + if (adapter->vlans_added) + be_vid_config(adapter); be_set_rx_mode(adapter->netdev); @@ -2773,8 +2818,6 @@ be_cmd_set_flow_control(adapter, adapter->tx_fc, adapter->rx_fc); - pcie_set_readrq(adapter->pdev, 4096); - if (be_physfn(adapter) && num_vfs) { if (adapter->dev_num_vfs) be_vf_setup(adapter); @@ -2788,8 +2831,6 @@ schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000)); adapter->flags |= BE_FLAGS_WORKER_SCHEDULED; - - pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 1); return 0; err: be_clear(adapter); @@ -3033,6 +3074,40 @@ return 0; } +static int lancer_wait_idle(struct be_adapter *adapter) +{ +#define SLIPORT_IDLE_TIMEOUT 30 + u32 reg_val; + int status = 0, i; + + for (i = 0; i < SLIPORT_IDLE_TIMEOUT; i++) { + reg_val = ioread32(adapter->db + PHYSDEV_CONTROL_OFFSET); + if ((reg_val & PHYSDEV_CONTROL_INP_MASK) == 0) + break; + + ssleep(1); + } + + if (i == SLIPORT_IDLE_TIMEOUT) + status = -1; + + return status; +} + +static int lancer_fw_reset(struct be_adapter *adapter) +{ + int status = 0; + + status = lancer_wait_idle(adapter); + if (status) + return status; + + iowrite32(PHYSDEV_CONTROL_FW_RESET_MASK, adapter->db + + PHYSDEV_CONTROL_OFFSET); + + return status; +} + static int lancer_fw_download(struct be_adapter *adapter, const struct firmware *fw) { @@ -3047,6 +3122,7 @@ u32 offset = 0; int status = 0; u8 add_status = 0; + u8 change_status; if (!IS_ALIGNED(fw->size, sizeof(u32))) { dev_err(&adapter->pdev->dev, @@ -3079,9 +3155,10 @@ memcpy(dest_image_ptr, data_ptr, chunk_size); status = lancer_cmd_write_object(adapter, &flash_cmd, - chunk_size, offset, LANCER_FW_DOWNLOAD_LOCATION, - &data_written, &add_status); - + chunk_size, offset, + LANCER_FW_DOWNLOAD_LOCATION, + &data_written, &change_status, + &add_status); if (status) break; @@ -3093,8 +3170,10 @@ if (!status) { /* Commit the FW written */ status = lancer_cmd_write_object(adapter, &flash_cmd, - 0, offset, LANCER_FW_DOWNLOAD_LOCATION, - &data_written, &add_status); + 0, offset, + LANCER_FW_DOWNLOAD_LOCATION, + &data_written, &change_status, + &add_status); } dma_free_coherent(&adapter->pdev->dev, flash_cmd.size, flash_cmd.va, @@ -3107,6 +3186,20 @@ goto lancer_fw_exit; } + if (change_status == LANCER_FW_RESET_NEEDED) { + status = lancer_fw_reset(adapter); + if (status) { + dev_err(&adapter->pdev->dev, + "Adapter busy for FW reset.\n" + "New FW will not be active.\n"); + goto lancer_fw_exit; + } + } else if (change_status != LANCER_NO_RESET_NEEDED) { + dev_err(&adapter->pdev->dev, + "System reboot required for new FW" + " to be active\n"); + } + dev_info(&adapter->pdev->dev, "Firmware flashed successfully\n"); lancer_fw_exit: return status; @@ -3342,6 +3435,7 @@ if (mem->va) dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, mem->dma); + kfree(adapter->pmac_id); } static int be_ctrl_init(struct be_adapter *adapter) @@ -3378,6 +3472,12 @@ } memset(rx_filter->va, 0, rx_filter->size); + /* primary mac needs 1 pmac entry */ + adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, + sizeof(*adapter->pmac_id), GFP_KERNEL); + if (!adapter->pmac_id) + return -ENOMEM; + mutex_init(&adapter->mbox_lock); spin_lock_init(&adapter->mcc_lock); spin_lock_init(&adapter->mcc_cq_lock); @@ -3435,10 +3535,15 @@ be_roce_dev_remove(adapter); + cancel_delayed_work_sync(&adapter->func_recovery_work); + unregister_netdev(adapter->netdev); be_clear(adapter); + /* tell fw we're done with firing cmds */ + be_cmd_fw_clean(adapter); + be_stats_cleanup(adapter); be_ctrl_cleanup(adapter); @@ -3479,7 +3584,7 @@ if (!status) { cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + sizeof(struct be_cmd_resp_hdr)); - for (j = 0; j < cfgs->module[0].num_modes; j++) { + for (j = 0; j < le32_to_cpu(cfgs->module[0].num_modes); j++) { if (cfgs->module[0].trace_lvl[j].mode == MODE_UART) level = cfgs->module[0].trace_lvl[j].dbg_lvl; } @@ -3509,12 +3614,6 @@ else adapter->max_pmac_cnt = BE_VF_UC_PMAC_COUNT; - /* primary mac needs 1 pmac entry */ - adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, - sizeof(u32), GFP_KERNEL); - if (!adapter->pmac_id) - return -ENOMEM; - status = be_cmd_get_cntl_attributes(adapter); if (status) return status; @@ -3530,6 +3629,9 @@ if (be_is_wol_supported(adapter)) adapter->wol = true; + /* Must be a power of 2 or else MODULO will BUG_ON */ + adapter->be_get_temp_freq = 64; + level = be_get_fw_log_level(adapter); adapter->msg_enable = level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0; @@ -3585,101 +3687,68 @@ return 0; } -static int lancer_wait_ready(struct be_adapter *adapter) +static int lancer_recover_func(struct be_adapter *adapter) { -#define SLIPORT_READY_TIMEOUT 30 - u32 sliport_status; - int status = 0, i; + int status; - for (i = 0; i < SLIPORT_READY_TIMEOUT; i++) { - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); - if (sliport_status & SLIPORT_STATUS_RDY_MASK) - break; + status = lancer_test_and_set_rdy_state(adapter); + if (status) + goto err; - msleep(1000); - } + if (netif_running(adapter->netdev)) + be_close(adapter->netdev); - if (i == SLIPORT_READY_TIMEOUT) - status = -1; + be_clear(adapter); - return status; -} + adapter->hw_error = false; + adapter->fw_timeout = false; -static int lancer_test_and_set_rdy_state(struct be_adapter *adapter) -{ - int status; - u32 sliport_status, err, reset_needed; - status = lancer_wait_ready(adapter); - if (!status) { - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); - err = sliport_status & SLIPORT_STATUS_ERR_MASK; - reset_needed = sliport_status & SLIPORT_STATUS_RN_MASK; - if (err && reset_needed) { - iowrite32(SLI_PORT_CONTROL_IP_MASK, - adapter->db + SLIPORT_CONTROL_OFFSET); + status = be_setup(adapter); + if (status) + goto err; - /* check adapter has corrected the error */ - status = lancer_wait_ready(adapter); - sliport_status = ioread32(adapter->db + - SLIPORT_STATUS_OFFSET); - sliport_status &= (SLIPORT_STATUS_ERR_MASK | - SLIPORT_STATUS_RN_MASK); - if (status || sliport_status) - status = -1; - } else if (err || reset_needed) { - status = -1; - } + if (netif_running(adapter->netdev)) { + status = be_open(adapter->netdev); + if (status) + goto err; } + + dev_err(&adapter->pdev->dev, + "Adapter SLIPORT recovery succeeded\n"); + return 0; +err: + dev_err(&adapter->pdev->dev, + "Adapter SLIPORT recovery failed\n"); + return status; } -static void lancer_test_and_recover_fn_err(struct be_adapter *adapter) +static void be_func_recovery_task(struct work_struct *work) { + struct be_adapter *adapter = + container_of(work, struct be_adapter, func_recovery_work.work); int status; - u32 sliport_status; - if (adapter->eeh_err || adapter->ue_detected) - return; + be_detect_error(adapter); - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + if (adapter->hw_error && lancer_chip(adapter)) { - if (sliport_status & SLIPORT_STATUS_ERR_MASK) { - dev_err(&adapter->pdev->dev, - "Adapter in error state." - "Trying to recover.\n"); - - status = lancer_test_and_set_rdy_state(adapter); - if (status) - goto err; + if (adapter->eeh_error) + goto out; + rtnl_lock(); netif_device_detach(adapter->netdev); + rtnl_unlock(); - if (netif_running(adapter->netdev)) - be_close(adapter->netdev); - - be_clear(adapter); - - adapter->fw_timeout = false; - - status = be_setup(adapter); - if (status) - goto err; - - if (netif_running(adapter->netdev)) { - status = be_open(adapter->netdev); - if (status) - goto err; - } - - netif_device_attach(adapter->netdev); + status = lancer_recover_func(adapter); - dev_err(&adapter->pdev->dev, - "Adapter error recovery succeeded\n"); + if (!status) + netif_device_attach(adapter->netdev); } - return; -err: - dev_err(&adapter->pdev->dev, - "Adapter error recovery failed\n"); + +out: + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); } static void be_worker(struct work_struct *work) @@ -3690,15 +3759,12 @@ struct be_eq_obj *eqo; int i; - if (lancer_chip(adapter)) - lancer_test_and_recover_fn_err(adapter); - - be_detect_dump_ue(adapter); - /* when interrupts are not yet enabled, just reap any pending * mcc completions */ if (!netif_running(adapter->netdev)) { + local_bh_disable(); be_process_mcc(adapter); + local_bh_enable(); goto reschedule; } @@ -3710,6 +3776,9 @@ be_cmd_get_stats(adapter, &adapter->stats_cmd); } + if (MODULO(adapter->work_counter, adapter->be_get_temp_freq) == 0) + be_cmd_get_die_temperature(adapter); + for_all_rx_queues(adapter, rxo, i) { if (rxo->rx_post_starved) { rxo->rx_post_starved = false; @@ -3727,10 +3796,7 @@ static bool be_reset_required(struct be_adapter *adapter) { - u32 reg; - - pci_read_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, ®); - return reg; + return be_find_vfs(adapter, ENABLED) > 0 ? false : true; } static int __devinit be_probe(struct pci_dev *pdev, @@ -3749,7 +3815,7 @@ goto disable_dev; pci_set_master(pdev); - netdev = alloc_etherdev_mq(sizeof(struct be_adapter), MAX_TX_QS); + netdev = alloc_etherdev_mqs(sizeof(*adapter), MAX_TX_QS, MAX_RX_QS); if (netdev == NULL) { status = -ENOMEM; goto rel_reg; @@ -3780,22 +3846,9 @@ if (status) goto free_netdev; - if (lancer_chip(adapter)) { - status = lancer_wait_ready(adapter); - if (!status) { - iowrite32(SLI_PORT_CONTROL_IP_MASK, - adapter->db + SLIPORT_CONTROL_OFFSET); - status = lancer_test_and_set_rdy_state(adapter); - } - if (status) { - dev_err(&pdev->dev, "Adapter in non recoverable error\n"); - goto ctrl_clean; - } - } - /* sync up with fw's ready state */ if (be_physfn(adapter)) { - status = be_cmd_POST(adapter); + status = be_fw_wait_ready(adapter); if (status) goto ctrl_clean; } @@ -3826,11 +3879,12 @@ goto stats_clean; INIT_DELAYED_WORK(&adapter->work, be_worker); + INIT_DELAYED_WORK(&adapter->func_recovery_work, be_func_recovery_task); adapter->rx_fc = adapter->tx_fc = true; status = be_setup(adapter); if (status) - goto msix_disable; + goto stats_clean; be_netdev_init(netdev); status = register_netdev(netdev); @@ -3839,6 +3893,8 @@ be_roce_dev_add(adapter); + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); dev_info(&pdev->dev, "%s: %s port %d\n", netdev->name, nic_name(pdev), adapter->port_num); @@ -3846,8 +3902,6 @@ unsetup: be_clear(adapter); -msix_disable: - be_msix_disable(adapter); stats_clean: be_stats_cleanup(adapter); ctrl_clean: @@ -3872,6 +3926,8 @@ if (adapter->wol) be_setup_wol(adapter, true); + cancel_delayed_work_sync(&adapter->func_recovery_work); + netif_device_detach(netdev); if (netif_running(netdev)) { rtnl_lock(); @@ -3912,6 +3968,9 @@ be_open(netdev); rtnl_unlock(); } + + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); netif_device_attach(netdev); if (adapter->wol) @@ -3931,6 +3990,7 @@ return; cancel_delayed_work_sync(&adapter->work); + cancel_delayed_work_sync(&adapter->func_recovery_work); netif_device_detach(adapter->netdev); @@ -3950,9 +4010,13 @@ dev_err(&adapter->pdev->dev, "EEH error detected\n"); - adapter->eeh_err = true; + adapter->eeh_error = true; + cancel_delayed_work_sync(&adapter->func_recovery_work); + + rtnl_lock(); netif_device_detach(netdev); + rtnl_unlock(); if (netif_running(netdev)) { rtnl_lock(); @@ -3980,9 +4044,7 @@ int status; dev_info(&adapter->pdev->dev, "EEH reset\n"); - adapter->eeh_err = false; - adapter->ue_detected = false; - adapter->fw_timeout = false; + be_clear_all_error(adapter); status = pci_enable_device(pdev); if (status) @@ -3993,7 +4055,7 @@ pci_restore_state(pdev); /* Check if card is ok and fw is ready */ - status = be_cmd_POST(adapter); + status = be_fw_wait_ready(adapter); if (status) return PCI_ERS_RESULT_DISCONNECT; @@ -4015,6 +4077,10 @@ if (status) goto err; + status = be_cmd_reset_function(adapter); + if (status) + goto err; + status = be_setup(adapter); if (status) goto err; @@ -4024,6 +4090,9 @@ if (status) goto err; } + + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); netif_device_attach(netdev); return; err: --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_ethtool.c @@ -512,28 +512,6 @@ return val; } -static int convert_to_et_speed(u32 be_speed) -{ - int et_speed = SPEED_10000; - - switch (be_speed) { - case PHY_LINK_SPEED_10MBPS: - et_speed = SPEED_10; - break; - case PHY_LINK_SPEED_100MBPS: - et_speed = SPEED_100; - break; - case PHY_LINK_SPEED_1GBPS: - et_speed = SPEED_1000; - break; - case PHY_LINK_SPEED_10GBPS: - et_speed = SPEED_10000; - break; - } - - return et_speed; -} - bool be_pause_supported(struct be_adapter *adapter) { return (adapter->phy.interface_type == PHY_TYPE_SFP_PLUS_10GB || @@ -544,27 +522,16 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct be_adapter *adapter = netdev_priv(netdev); - u8 port_speed = 0; - u16 link_speed = 0; u8 link_status; - u32 et_speed = 0; + u16 link_speed = 0; int status; - if (adapter->phy.link_speed < 0 || !(netdev->flags & IFF_UP)) { - if (adapter->phy.forced_port_speed < 0) { - status = be_cmd_link_status_query(adapter, &port_speed, - &link_speed, &link_status, 0); - if (!status) - be_link_status_update(adapter, link_status); - if (link_speed) - et_speed = link_speed * 10; - else if (link_status) - et_speed = convert_to_et_speed(port_speed); - } else { - et_speed = adapter->phy.forced_port_speed; - } - - ethtool_cmd_speed_set(ecmd, et_speed); + if (adapter->phy.link_speed < 0) { + status = be_cmd_link_status_query(adapter, &link_speed, + &link_status, 0); + if (!status) + be_link_status_update(adapter, link_status); + ethtool_cmd_speed_set(ecmd, link_speed); status = be_cmd_get_phy_info(adapter); if (status) @@ -648,7 +615,7 @@ struct be_adapter *adapter = netdev_priv(netdev); int status; - if (ecmd->autoneg != 0) + if (ecmd->autoneg != adapter->phy.fc_autoneg) return -EINVAL; adapter->tx_fc = ecmd->tx_pause; adapter->rx_fc = ecmd->rx_pause; @@ -773,8 +740,8 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) { struct be_adapter *adapter = netdev_priv(netdev); - u8 mac_speed = 0; - u16 qos_link_speed = 0; + int status; + u8 link_status = 0; memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM); @@ -798,11 +765,11 @@ test->flags |= ETH_TEST_FL_FAILED; } - if (be_cmd_link_status_query(adapter, &mac_speed, - &qos_link_speed, NULL, 0) != 0) { + status = be_cmd_link_status_query(adapter, NULL, &link_status, 0); + if (status) { test->flags |= ETH_TEST_FL_FAILED; data[4] = -1; - } else if (!mac_speed) { + } else if (!link_status) { test->flags |= ETH_TEST_FL_FAILED; data[4] = 1; } @@ -910,8 +877,9 @@ if (!status) { cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + sizeof(struct be_cmd_resp_hdr)); - for (i = 0; i < cfgs->num_modules; i++) { - for (j = 0; j < cfgs->module[i].num_modes; j++) { + for (i = 0; i < le32_to_cpu(cfgs->num_modules); i++) { + u32 num_modes = le32_to_cpu(cfgs->module[i].num_modes); + for (j = 0; j < num_modes; j++) { if (cfgs->module[i].trace_lvl[j].mode == MODE_UART) cfgs->module[i].trace_lvl[j].dbg_lvl = --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -19,9 +19,6 @@ #include "be.h" #include "be_cmds.h" -/* Must be a power of 2 or else MODULO will BUG_ON */ -static int be_get_temp_freq = 64; - static inline void *embedded_payload(struct be_mcc_wrb *wrb) { return wrb->payload.embedded_payload; @@ -115,7 +112,7 @@ } } else { if (opcode == OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES) - be_get_temp_freq = 0; + adapter->be_get_temp_freq = 0; if (compl_status == MCC_STATUS_NOT_SUPPORTED || compl_status == MCC_STATUS_ILLEGAL_REQUEST) @@ -144,6 +141,11 @@ /* When link status changes, link speed must be re-queried from FW */ adapter->phy.link_speed = -1; + /* Ignore physical link event */ + if (lancer_chip(adapter) && + !(evt->port_link_status & LOGICAL_LINK_STATUS_MASK)) + return; + /* For the initial link status do not rely on the ASYNC event as * it may not be received in some cases. */ @@ -163,14 +165,13 @@ } } -/* Grp5 QOS Speed evt */ +/* Grp5 QOS Speed evt: qos_link_speed is in units of 10 Mbps */ static void be_async_grp5_qos_speed_process(struct be_adapter *adapter, struct be_async_event_grp5_qos_link_speed *evt) { - if (evt->physical_port == adapter->port_num) { - /* qos_link_speed is in units of 10 Mbps */ - adapter->phy.link_speed = evt->qos_link_speed * 10; - } + if (adapter->phy.link_speed >= 0 && + evt->physical_port == adapter->port_num) + adapter->phy.link_speed = le16_to_cpu(evt->qos_link_speed) * 10; } /*Grp5 PVID evt*/ @@ -257,7 +258,7 @@ int num = 0, status = 0; struct be_mcc_obj *mcc_obj = &adapter->mcc_obj; - spin_lock_bh(&adapter->mcc_cq_lock); + spin_lock(&adapter->mcc_cq_lock); while ((compl = be_mcc_compl_get(adapter))) { if (compl->flags & CQE_FLAGS_ASYNC_MASK) { /* Interpret flags as an async trailer */ @@ -278,7 +279,7 @@ if (num) be_cq_notify(adapter, mcc_obj->cq.id, mcc_obj->rearm_cq, num); - spin_unlock_bh(&adapter->mcc_cq_lock); + spin_unlock(&adapter->mcc_cq_lock); return status; } @@ -293,7 +294,9 @@ if (be_error(adapter)) return -EIO; + local_bh_disable(); status = be_process_mcc(adapter); + local_bh_enable(); if (atomic_read(&mcc_obj->q.used) == 0) break; @@ -352,7 +355,7 @@ if (msecs > 4000) { dev_err(&adapter->pdev->dev, "FW not responding\n"); adapter->fw_timeout = true; - be_detect_dump_ue(adapter); + be_detect_error(adapter); return -1; } @@ -429,12 +432,65 @@ return 0; } -int be_cmd_POST(struct be_adapter *adapter) +int lancer_wait_ready(struct be_adapter *adapter) +{ +#define SLIPORT_READY_TIMEOUT 30 + u32 sliport_status; + int status = 0, i; + + for (i = 0; i < SLIPORT_READY_TIMEOUT; i++) { + sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + if (sliport_status & SLIPORT_STATUS_RDY_MASK) + break; + + msleep(1000); + } + + if (i == SLIPORT_READY_TIMEOUT) + status = -1; + + return status; +} + +int lancer_test_and_set_rdy_state(struct be_adapter *adapter) +{ + int status; + u32 sliport_status, err, reset_needed; + status = lancer_wait_ready(adapter); + if (!status) { + sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + err = sliport_status & SLIPORT_STATUS_ERR_MASK; + reset_needed = sliport_status & SLIPORT_STATUS_RN_MASK; + if (err && reset_needed) { + iowrite32(SLI_PORT_CONTROL_IP_MASK, + adapter->db + SLIPORT_CONTROL_OFFSET); + + /* check adapter has corrected the error */ + status = lancer_wait_ready(adapter); + sliport_status = ioread32(adapter->db + + SLIPORT_STATUS_OFFSET); + sliport_status &= (SLIPORT_STATUS_ERR_MASK | + SLIPORT_STATUS_RN_MASK); + if (status || sliport_status) + status = -1; + } else if (err || reset_needed) { + status = -1; + } + } + return status; +} + +int be_fw_wait_ready(struct be_adapter *adapter) { u16 stage; int status, timeout = 0; struct device *dev = &adapter->pdev->dev; + if (lancer_chip(adapter)) { + status = lancer_wait_ready(adapter); + return status; + } + do { status = be_POST_stage_get(adapter, &stage); if (status) { @@ -565,6 +621,9 @@ u8 *wrb; int status; + if (lancer_chip(adapter)) + return 0; + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -592,6 +651,9 @@ u8 *wrb; int status; + if (lancer_chip(adapter)) + return 0; + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -610,6 +672,7 @@ mutex_unlock(&adapter->mbox_lock); return status; } + int be_cmd_eq_create(struct be_adapter *adapter, struct be_queue_info *eq, int eq_delay) { @@ -1132,7 +1195,7 @@ * Uses MCCQ */ int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, u32 en_flags, - u8 *mac, u32 *if_handle, u32 *pmac_id, u32 domain) + u32 *if_handle, u32 domain) { struct be_mcc_wrb *wrb; struct be_cmd_req_if_create *req; @@ -1152,17 +1215,13 @@ req->hdr.domain = domain; req->capability_flags = cpu_to_le32(cap_flags); req->enable_flags = cpu_to_le32(en_flags); - if (mac) - memcpy(req->mac_addr, mac, ETH_ALEN); - else - req->pmac_invalid = true; + + req->pmac_invalid = true; status = be_mcc_notify_wait(adapter); if (!status) { struct be_cmd_resp_if_create *resp = embedded_payload(wrb); *if_handle = le32_to_cpu(resp->interface_id); - if (mac) - *pmac_id = le32_to_cpu(resp->pmac_id); } err: @@ -1210,9 +1269,6 @@ struct be_cmd_req_hdr *hdr; int status = 0; - if (MODULO(adapter->work_counter, be_get_temp_freq) == 0) - be_cmd_get_die_temperature(adapter); - spin_lock_bh(&adapter->mcc_lock); wrb = wrb_from_mccq(adapter); @@ -1269,9 +1325,28 @@ return status; } -/* Uses synchronous mcc */ -int be_cmd_link_status_query(struct be_adapter *adapter, u8 *mac_speed, - u16 *link_speed, u8 *link_status, u32 dom) +static int be_mac_to_link_speed(int mac_speed) +{ + switch (mac_speed) { + case PHY_LINK_SPEED_ZERO: + return 0; + case PHY_LINK_SPEED_10MBPS: + return 10; + case PHY_LINK_SPEED_100MBPS: + return 100; + case PHY_LINK_SPEED_1GBPS: + return 1000; + case PHY_LINK_SPEED_10GBPS: + return 10000; + } + return 0; +} + +/* Uses synchronous mcc + * Returns link_speed in Mbps + */ +int be_cmd_link_status_query(struct be_adapter *adapter, u16 *link_speed, + u8 *link_status, u32 dom) { struct be_mcc_wrb *wrb; struct be_cmd_req_link_status *req; @@ -1300,11 +1375,13 @@ status = be_mcc_notify_wait(adapter); if (!status) { struct be_cmd_resp_link_status *resp = embedded_payload(wrb); - if (resp->mac_speed != PHY_LINK_SPEED_ZERO) { - if (link_speed) - *link_speed = le16_to_cpu(resp->link_speed); - if (mac_speed) - *mac_speed = resp->mac_speed; + if (link_speed) { + *link_speed = resp->link_speed ? + le16_to_cpu(resp->link_speed) * 10 : + be_mac_to_link_speed(resp->mac_speed); + + if (!resp->logical_link_status) + *link_speed = 0; } if (link_status) *link_status = resp->logical_link_status; @@ -1581,7 +1658,8 @@ /* Reset mcast promisc mode if already set by setting mask * and not setting flags field */ - req->if_flags_mask |= + if (!lancer_chip(adapter) || be_physfn(adapter)) + req->if_flags_mask |= cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); req->mcast_num = cpu_to_le32(netdev_mc_count(adapter->netdev)); @@ -1692,6 +1770,20 @@ struct be_cmd_req_hdr *req; int status; + if (lancer_chip(adapter)) { + status = lancer_wait_ready(adapter); + if (!status) { + iowrite32(SLI_PORT_CONTROL_IP_MASK, + adapter->db + SLIPORT_CONTROL_OFFSET); + status = lancer_test_and_set_rdy_state(adapter); + } + if (status) { + dev_err(&adapter->pdev->dev, + "Adapter in non recoverable error\n"); + } + return status; + } + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -1728,6 +1820,13 @@ req->if_id = cpu_to_le32(adapter->if_handle); req->enable_rss = cpu_to_le16(RSS_ENABLE_TCP_IPV4 | RSS_ENABLE_IPV4 | RSS_ENABLE_TCP_IPV6 | RSS_ENABLE_IPV6); + + if (lancer_chip(adapter) || skyhawk_chip(adapter)) { + req->hdr.version = 1; + req->enable_rss |= cpu_to_le16(RSS_ENABLE_UDP_IPV4 | + RSS_ENABLE_UDP_IPV6); + } + req->cpu_table_size_log2 = cpu_to_le16(fls(table_size) - 1); memcpy(req->cpu_table, rsstable, table_size); memcpy(req->hash, myhash, sizeof(myhash)); @@ -1805,8 +1904,9 @@ } int lancer_cmd_write_object(struct be_adapter *adapter, struct be_dma_mem *cmd, - u32 data_size, u32 data_offset, const char *obj_name, - u32 *data_written, u8 *addn_status) + u32 data_size, u32 data_offset, + const char *obj_name, u32 *data_written, + u8 *change_status, u8 *addn_status) { struct be_mcc_wrb *wrb; struct lancer_cmd_req_write_object *req; @@ -1862,10 +1962,12 @@ status = adapter->flash_status; resp = embedded_payload(wrb); - if (!status) + if (!status) { *data_written = le32_to_cpu(resp->actual_write_len); - else + *change_status = resp->change_status; + } else { *addn_status = resp->additional_status; + } return status; @@ -2330,8 +2432,8 @@ } /* Uses synchronous MCCQ */ -int be_cmd_get_mac_from_list(struct be_adapter *adapter, u32 domain, - bool *pmac_id_active, u32 *pmac_id, u8 *mac) +int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, + bool *pmac_id_active, u32 *pmac_id, u8 domain) { struct be_mcc_wrb *wrb; struct be_cmd_req_get_mac_list *req; @@ -2376,8 +2478,9 @@ get_mac_list_cmd.va; mac_count = resp->true_mac_count + resp->pseudo_mac_count; /* Mac list returned could contain one or more active mac_ids - * or one or more pseudo permanant mac addresses. If an active - * mac_id is present, return first active mac_id found + * or one or more true or pseudo permanant mac addresses. + * If an active mac_id is present, return first active mac_id + * found. */ for (i = 0; i < mac_count; i++) { struct get_list_macaddr *mac_entry; @@ -2396,7 +2499,7 @@ goto out; } } - /* If no active mac_id found, return first pseudo mac addr */ + /* If no active mac_id found, return first mac addr */ *pmac_id_active = false; memcpy(mac, resp->macaddr_list[0].mac_addr_id.macaddr, ETH_ALEN); --- linux-3.5.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-3.5.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4202,6 +4202,9 @@ return ret; } +#define VXGE_PXE_FIRMWARE "vxge/X3fw-pxe.ncf" +#define VXGE_FIRMWARE "vxge/X3fw.ncf" + static int vxge_probe_fw_update(struct vxgedev *vdev) { u32 maj, min, bld; @@ -4244,9 +4247,9 @@ } } if (gpxe) - fw_name = "vxge/X3fw-pxe.ncf"; + fw_name = VXGE_PXE_FIRMWARE; else - fw_name = "vxge/X3fw.ncf"; + fw_name = VXGE_FIRMWARE; ret = vxge_fw_upgrade(vdev, fw_name, 0); /* -EINVAL and -ENOENT are not fatal errors for flashing firmware on @@ -4856,3 +4859,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-3.5.0.orig/drivers/net/ethernet/marvell/sky2.c +++ linux-3.5.0/drivers/net/ethernet/marvell/sky2.c @@ -1066,7 +1066,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 { @@ -3079,8 +3079,10 @@ /* Reading this mask interrupts as side effect */ status = sky2_read32(hw, B0_Y2_SP_ISRC2); - if (status == 0 || status == ~0) + if (status == 0 || status == ~0) { + sky2_write32(hw, B0_Y2_SP_ICR, 2); return IRQ_NONE; + } prefetch(&hw->st_le[hw->st_idx]); --- linux-3.5.0.orig/drivers/net/ethernet/marvell/sky2.h +++ linux-3.5.0/drivers/net/ethernet/marvell/sky2.h @@ -2069,7 +2069,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-3.5.0.orig/drivers/net/ethernet/marvell/skge.c +++ linux-3.5.0/drivers/net/ethernet/marvell/skge.c @@ -4153,6 +4153,13 @@ DMI_MATCH(DMI_BOARD_NAME, "nForce"), }, }, + { + .ident = "ASUS P5NSLI", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "P5NSLI") + }, + }, {} }; --- linux-3.5.0.orig/drivers/net/ethernet/marvell/mv643xx_eth.c +++ linux-3.5.0/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -412,7 +412,6 @@ u8 work_rx_refill; int skb_size; - struct sk_buff_head rx_recycle; /* * RX state. @@ -673,9 +672,7 @@ struct rx_desc *rx_desc; int size; - skb = __skb_dequeue(&mp->rx_recycle); - if (skb == NULL) - skb = netdev_alloc_skb(mp->dev, mp->skb_size); + skb = netdev_alloc_skb(mp->dev, mp->skb_size); if (skb == NULL) { mp->oom = 1; @@ -989,14 +986,7 @@ desc->byte_cnt, DMA_TO_DEVICE); } - if (skb != NULL) { - if (skb_queue_len(&mp->rx_recycle) < - mp->rx_ring_size && - skb_recycle_check(skb, mp->skb_size)) - __skb_queue_head(&mp->rx_recycle, skb); - else - dev_kfree_skb(skb); - } + dev_kfree_skb(skb); } __netif_tx_unlock(nq); @@ -2349,8 +2339,6 @@ napi_enable(&mp->napi); - skb_queue_head_init(&mp->rx_recycle); - mp->int_mask = INT_EXT; for (i = 0; i < mp->rxq_count; i++) { @@ -2445,8 +2433,6 @@ mib_counters_update(mp); del_timer_sync(&mp->mib_counters_timer); - skb_queue_purge(&mp->rx_recycle); - for (i = 0; i < mp->rxq_count; i++) rxq_deinit(mp->rxq + i); for (i = 0; i < mp->txq_count; i++) --- linux-3.5.0.orig/drivers/net/ethernet/renesas/sh_eth.c +++ linux-3.5.0/drivers/net/ethernet/renesas/sh_eth.c @@ -1027,16 +1027,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-3.5.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c +++ linux-3.5.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c @@ -144,7 +144,7 @@ buffrag->length, PCI_DMA_TODEVICE); buffrag->dma = 0ULL; } - for (j = 0; j < cmd_buf->frag_count; j++) { + for (j = 1; j < cmd_buf->frag_count; j++) { buffrag++; if (buffrag->dma) { pci_unmap_page(adapter->pdev, buffrag->dma, --- linux-3.5.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ linux-3.5.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -1378,6 +1378,10 @@ struct pci_dev *root = pdev->bus->self; u32 aer_pos; + /* root bus? */ + if (!root) + return; + if (adapter->ahw.board_type != NETXEN_BRDTYPE_P3_4_GB_MM && adapter->ahw.board_type != NETXEN_BRDTYPE_P3_10G_TP) return; @@ -1959,10 +1963,12 @@ while (--i >= 0) { nf = &pbuf->frag_array[i+1]; pci_unmap_page(pdev, nf->dma, nf->length, PCI_DMA_TODEVICE); + nf->dma = 0ULL; } nf = &pbuf->frag_array[0]; pci_unmap_single(pdev, nf->dma, skb_headlen(skb), PCI_DMA_TODEVICE); + nf->dma = 0ULL; out_err: return -ENOMEM; --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/tg3.c @@ -298,6 +298,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5719)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5720)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57762)}, {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9DXX)}, {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9MXX)}, {PCI_DEVICE(PCI_VENDOR_ID_ALTIMA, PCI_DEVICE_ID_ALTIMA_AC1000)}, @@ -688,6 +689,9 @@ status = tg3_ape_read32(tp, gnt + off); if (status == bit) break; + if (pci_channel_offline(tp->pdev)) + break; + udelay(10); } @@ -1135,14 +1139,26 @@ return tg3_writephy(tp, MII_TG3_AUX_CTRL, set | reg); } -#define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp) \ - tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ - MII_TG3_AUXCTL_ACTL_SMDSP_ENA | \ - MII_TG3_AUXCTL_ACTL_TX_6DB) - -#define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp) \ - tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ - MII_TG3_AUXCTL_ACTL_TX_6DB); +static int tg3_phy_toggle_auxctl_smdsp(struct tg3 *tp, bool enable) +{ + u32 val; + int err; + + err = tg3_phy_auxctl_read(tp, MII_TG3_AUXCTL_SHDWSEL_AUXCTL, &val); + + if (err) + return err; + if (enable) + + val |= MII_TG3_AUXCTL_ACTL_SMDSP_ENA; + else + val &= ~MII_TG3_AUXCTL_ACTL_SMDSP_ENA; + + err = tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, + val | MII_TG3_AUXCTL_ACTL_TX_6DB); + + return err; +} static int tg3_bmcr_reset(struct tg3 *tp) { @@ -1453,6 +1469,9 @@ for (i = 0; i < delay_cnt; i++) { if (!(tr32(GRC_RX_CPU_EVENT) & GRC_RX_CPU_DRIVER_EVENT)) break; + if (pci_channel_offline(tp->pdev)) + break; + udelay(8); } } @@ -1618,11 +1637,17 @@ 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++) { if (tr32(VCPU_STATUS) & VCPU_STATUS_INIT_DONE) return 0; + if (pci_channel_offline(tp->pdev)) + return -ENODEV; + udelay(100); } return -ENODEV; @@ -1633,6 +1658,15 @@ tg3_read_mem(tp, NIC_SRAM_FIRMWARE_MBOX, &val); if (val == ~NIC_SRAM_FIRMWARE_MBOX_MAGIC1) break; + if (pci_channel_offline(tp->pdev)) { + if (!tg3_flag(tp, NO_FWARE_REPORTED)) { + tg3_flag_set(tp, NO_FWARE_REPORTED); + netdev_info(tp->dev, "No firmware running\n"); + } + + break; + } + udelay(10); } @@ -2075,7 +2109,7 @@ otp = tp->phy_otp; - if (TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) + if (tg3_phy_toggle_auxctl_smdsp(tp, true)) return; phy = ((otp & TG3_OTP_AGCTGT_MASK) >> TG3_OTP_AGCTGT_SHIFT); @@ -2100,7 +2134,7 @@ ((otp & TG3_OTP_RCOFF_MASK) >> TG3_OTP_RCOFF_SHIFT); tg3_phydsp_write(tp, MII_TG3_DSP_EXP97, phy); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } static void tg3_phy_eee_adjust(struct tg3 *tp, u32 current_link_up) @@ -2136,9 +2170,9 @@ if (!tp->setlpicnt) { if (current_link_up == 1 && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, MII_TG3_DSP_TAP26, 0x0000); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } val = tr32(TG3_CPMU_EEE_MODE); @@ -2154,11 +2188,11 @@ (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || tg3_flag(tp, 57765_CLASS)) && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { val = MII_TG3_DSP_TAP26_ALNOKO | MII_TG3_DSP_TAP26_RMRXSTO; tg3_phydsp_write(tp, MII_TG3_DSP_TAP26, val); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } val = tr32(TG3_CPMU_EEE_MODE); @@ -2302,7 +2336,7 @@ tg3_writephy(tp, MII_CTRL1000, CTL1000_AS_MASTER | CTL1000_ENABLE_MASTER); - err = TG3_PHY_AUXCTL_SMDSP_ENABLE(tp); + err = tg3_phy_toggle_auxctl_smdsp(tp, true); if (err) return err; @@ -2323,7 +2357,7 @@ tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x8200); tg3_writephy(tp, MII_TG3_DSP_CONTROL, 0x0000); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); tg3_writephy(tp, MII_CTRL1000, phy9_orig); @@ -2412,10 +2446,10 @@ out: if ((tp->phy_flags & TG3_PHYFLG_ADC_BUG) && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, 0x201f, 0x2aaa); tg3_phydsp_write(tp, 0x000a, 0x0323); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } if (tp->phy_flags & TG3_PHYFLG_5704_A0_BUG) { @@ -2424,14 +2458,14 @@ } if (tp->phy_flags & TG3_PHYFLG_BER_BUG) { - if (!TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + if (!tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, 0x000a, 0x310b); tg3_phydsp_write(tp, 0x201f, 0x9506); tg3_phydsp_write(tp, 0x401f, 0x14e2); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } } else if (tp->phy_flags & TG3_PHYFLG_JITTER_BUG) { - if (!TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + if (!tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x000a); if (tp->phy_flags & TG3_PHYFLG_ADJUST_TRIM) { tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x110b); @@ -2440,7 +2474,7 @@ } else tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x010b); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } } @@ -2724,6 +2758,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; @@ -2780,12 +2839,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 || @@ -3269,6 +3323,8 @@ tw32(offset + CPU_MODE, CPU_MODE_HALT); if (tr32(offset + CPU_MODE) & CPU_MODE_HALT) break; + if (pci_channel_offline(tp->pdev)) + return -EBUSY; } tw32(offset + CPU_STATE, 0xffffffff); @@ -3280,6 +3336,8 @@ tw32(offset + CPU_MODE, CPU_MODE_HALT); if (tr32(offset + CPU_MODE) & CPU_MODE_HALT) break; + if (pci_channel_offline(tp->pdev)) + return -EBUSY; } } @@ -3857,7 +3915,7 @@ tw32(TG3_CPMU_EEE_MODE, tr32(TG3_CPMU_EEE_MODE) & ~TG3_CPMU_EEEMD_LPI_ENABLE); - err = TG3_PHY_AUXCTL_SMDSP_ENABLE(tp); + err = tg3_phy_toggle_auxctl_smdsp(tp, true); if (!err) { u32 err2; @@ -3890,7 +3948,7 @@ MII_TG3_DSP_CH34TP2_HIBW01); } - err2 = TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + err2 = tg3_phy_toggle_auxctl_smdsp(tp, false); if (!err) err = err2; } @@ -3933,6 +3991,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: @@ -6593,6 +6659,9 @@ int i; struct tg3 *tp = netdev_priv(dev); + if (tg3_irq_sync(tp)) + return; + for (i = 0; i < tp->irq_cnt; i++) tg3_interrupt(tp->napi[i].irq_vec, &tp->napi[i]); } @@ -7676,6 +7745,14 @@ tw32_f(ofs, val); for (i = 0; i < MAX_WAIT_CNT; i++) { + if (pci_channel_offline(tp->pdev)) { + dev_err(&tp->pdev->dev, + "tg3_stop_block device offline, " + "ofs=%lx enable_bit=%x\n", + ofs, enable_bit); + return -ENODEV; + } + udelay(100); val = tr32(ofs); if ((val & enable_bit) == 0) @@ -7699,6 +7776,13 @@ tg3_disable_ints(tp); + if (pci_channel_offline(tp->pdev)) { + tp->rx_mode &= ~(RX_MODE_ENABLE | TX_MODE_ENABLE); + tp->mac_mode &= ~MAC_MODE_TDE_ENABLE; + err = -ENODEV; + goto err_no_dev; + } + tp->rx_mode &= ~RX_MODE_ENABLE; tw32_f(MAC_RX_MODE, tp->rx_mode); udelay(10); @@ -7747,6 +7831,7 @@ err |= tg3_stop_block(tp, BUFMGR_MODE, BUFMGR_MODE_ENABLE, silent); err |= tg3_stop_block(tp, MEMARB_MODE, MEMARB_MODE_ENABLE, silent); +err_no_dev: for (i = 0; i < tp->irq_cnt; i++) { struct tg3_napi *tnapi = &tp->napi[i]; if (tnapi->hw_status) @@ -8528,6 +8613,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) { @@ -8974,8 +9067,7 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || tg3_flag(tp, 57765_PLUS)) { val = tr32(TG3_RDMA_RSRVCTRL_REG); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { + if (tp->pci_chip_rev_id == CHIPREV_ID_5719_A0) { val &= ~(TG3_RDMA_RSRVCTRL_TXMRGN_MASK | TG3_RDMA_RSRVCTRL_FIFO_LWM_MASK | TG3_RDMA_RSRVCTRL_FIFO_HWM_MASK); @@ -9165,6 +9257,20 @@ tw32_f(RDMAC_MODE, rdmac_mode); udelay(40); + 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_workaround_bit(tp); + tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val); + tg3_flag_set(tp, 5719_5720_RDMA_BUG); + } + } + tw32(RCVDCC_MODE, RCVDCC_MODE_ENABLE | RCVDCC_MODE_ATTN_ENABLE); if (!tg3_flag(tp, 5705_PLUS)) tw32(MBFREE_MODE, MBFREE_MODE_ENABLE); @@ -9386,6 +9492,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); @@ -9420,6 +9533,16 @@ 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_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_workaround_bit(tp); + tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val); + tg3_flag_clear(tp, 5719_5720_RDMA_BUG); + } TG3_STAT_ADD32(&sp->rx_octets, MAC_RX_STATS_OCTETS); TG3_STAT_ADD32(&sp->rx_fragments, MAC_RX_STATS_FRAGMENTS); @@ -12282,10 +12405,12 @@ { struct tg3 *tp = netdev_priv(dev); - if (!tp->hw_stats) + spin_lock_bh(&tp->lock); + if (!tp->hw_stats) { + spin_unlock_bh(&tp->lock); return &tp->net_stats_prev; + } - spin_lock_bh(&tp->lock); tg3_get_nstats(tp, stats); spin_unlock_bh(&tp->lock); @@ -13592,8 +13717,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: @@ -15554,6 +15682,7 @@ tp->pm_cap = pm_cap; tp->rx_mode = TG3_DEF_RX_MODE; tp->tx_mode = TG3_DEF_TX_MODE; + tp->irq_sync = 1; if (tg3_debug > 0) tp->msg_enable = tg3_debug; --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/tg3.h +++ linux-3.5.0/drivers/net/ethernet/broadcom/tg3.h @@ -1376,7 +1376,12 @@ #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 -/* 0x4914 --> 0x4c00 unused */ +#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 +#define TG3_RDMA_LENGTH 0x00004be0 /* Write DMA control registers */ #define WDMAC_MODE 0x00004c00 @@ -2920,6 +2925,7 @@ TG3_FLAG_L1PLLPD_EN, TG3_FLAG_APE_HAS_NCSI, TG3_FLAG_4K_FIFO_LIMIT, + TG3_FLAG_5719_5720_RDMA_BUG, TG3_FLAG_RESET_TASK_PENDING, TG3_FLAG_5705_PLUS, TG3_FLAG_IS_5788, --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h +++ linux-3.5.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h @@ -451,8 +451,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-3.5.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -620,14 +620,16 @@ static void bnx2x_csum_validate(struct sk_buff *skb, union eth_rx_cqe *cqe, struct bnx2x_fastpath *fp) { - /* Do nothing if no IP/L4 csum validation was done */ - + /* Do nothing if no L4 csum validation was done. + * We do not check whether IP csum was validated. For IPv4 we assume + * that if the card got as far as validating the L4 csum, it also + * validated the IP csum. IPv6 has no IP csum. + */ if (cqe->fast_path_cqe.status_flags & - (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG | - ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG)) + ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) return; - /* If both IP/L4 validation were done, check if an error was found. */ + /* If L4 validation was done, check if an error was found. */ if (cqe->fast_path_cqe.type_error_flags & (ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG | --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -9494,10 +9494,13 @@ */ static void __devinit bnx2x_prev_interrupted_dmae(struct bnx2x *bp) { - u32 val = REG_RD(bp, PGLUE_B_REG_PGLUE_B_INT_STS); - if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN) { - BNX2X_ERR("was error bit was found to be set in pglueb upon startup. Clearing"); - REG_WR(bp, PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR, 1 << BP_FUNC(bp)); + if (!CHIP_IS_E1x(bp)) { + u32 val = REG_RD(bp, PGLUE_B_REG_PGLUE_B_INT_STS); + if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN) { + BNX2X_ERR("was error bit was found to be set in pglueb upon startup. Clearing"); + REG_WR(bp, PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR, + 1 << BP_FUNC(bp)); + } } } --- linux-3.5.0.orig/drivers/net/ethernet/cirrus/cs89x0.c +++ linux-3.5.0/drivers/net/ethernet/cirrus/cs89x0.c @@ -1243,6 +1243,7 @@ { struct net_local *lp = netdev_priv(dev); unsigned long flags; + u16 cfg; spin_lock_irqsave(&lp->lock, flags); if (dev->flags & IFF_PROMISC) @@ -1260,11 +1261,10 @@ /* in promiscuous mode, we accept errored packets, * so we have to enable interrupts on them also */ - writereg(dev, PP_RxCFG, - (lp->curr_rx_cfg | - (lp->rx_mode == RX_ALL_ACCEPT) - ? (RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL) - : 0)); + cfg = lp->curr_rx_cfg; + if (lp->rx_mode == RX_ALL_ACCEPT) + cfg |= RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL; + writereg(dev, PP_RxCFG, cfg); spin_unlock_irqrestore(&lp->lock, flags); } --- linux-3.5.0.orig/drivers/net/ethernet/3com/3c59x.c +++ linux-3.5.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; } @@ -1179,11 +1186,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); @@ -1221,7 +1223,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; @@ -1486,9 +1488,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: @@ -3256,8 +3256,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-3.5.0.orig/drivers/net/ethernet/3com/3c509.c +++ linux-3.5.0/drivers/net/ethernet/3com/3c509.c @@ -308,6 +308,7 @@ if (!dev) return -ENOMEM; + SET_NETDEV_DEV(dev, pdev); netdev_boot_setup_check(dev); if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-isa")) { @@ -598,6 +599,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-3.5.0.orig/drivers/net/ethernet/via/via-rhine.c +++ linux-3.5.0/drivers/net/ethernet/via/via-rhine.c @@ -1802,7 +1802,7 @@ rp->tx_skbuff[entry]->len, PCI_DMA_TODEVICE); } - dev_kfree_skb_irq(rp->tx_skbuff[entry]); + dev_kfree_skb(rp->tx_skbuff[entry]); rp->tx_skbuff[entry] = NULL; entry = (++rp->dirty_tx) % TX_RING_SIZE; } @@ -2011,11 +2011,7 @@ if (intr_status & IntrPCIErr) netif_warn(rp, hw, dev, "PCI error\n"); - napi_disable(&rp->napi); - rhine_irq_disable(rp); - /* Slow and safe. Consider __napi_schedule as a replacement ? */ - napi_enable(&rp->napi); - napi_schedule(&rp->napi); + iowrite16(RHINE_EVENT & 0xffff, rp->base + IntrEnable); out_unlock: mutex_unlock(&rp->task_lock); --- linux-3.5.0.orig/drivers/net/ethernet/tile/tilegx.c +++ linux-3.5.0/drivers/net/ethernet/tile/tilegx.c @@ -927,7 +927,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-3.5.0.orig/drivers/net/ethernet/realtek/r8169.c +++ linux-3.5.0/drivers/net/ethernet/realtek/r8169.c @@ -75,7 +75,7 @@ static const int multicast_filter_limit = 32; #define MAX_READ_REQUEST_SHIFT 12 -#define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */ +#define TX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */ #define SafeMtu 0x1c20 /* ... actually life sucks beyond ~7k */ #define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */ @@ -1687,8 +1687,6 @@ if (opts2 & RxVlanTag) __vlan_hwaccel_put_tag(skb, swab16(opts2 & 0xffff)); - - desc->opts2 = 0; } static int rtl8169_gset_tbi(struct net_device *dev, struct ethtool_cmd *cmd) @@ -3596,11 +3594,37 @@ } } +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; switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_25: + case RTL_GIGA_MAC_VER_26: case RTL_GIGA_MAC_VER_29: case RTL_GIGA_MAC_VER_30: case RTL_GIGA_MAC_VER_32: @@ -3621,9 +3645,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; @@ -4271,6 +4293,9 @@ mc_filter[1] = swab32(data); } + if (tp->mac_version == RTL_GIGA_MAC_VER_35) + mc_filter[1] = mc_filter[0] = 0xffffffff; + RTL_W32(MAR0 + 4, mc_filter[1]); RTL_W32(MAR0 + 0, mc_filter[0]); @@ -4549,8 +4574,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) @@ -4573,7 +4600,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); @@ -4607,7 +4635,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); } @@ -4626,7 +4655,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); } @@ -4687,7 +4717,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); } @@ -4699,7 +4730,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); @@ -4758,7 +4790,8 @@ rtl_ephy_init(ioaddr, 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); @@ -4784,7 +4817,8 @@ rtl_ephy_init(ioaddr, 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(ioaddr, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); rtl_eri_write(ioaddr, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); @@ -5380,7 +5414,6 @@ { rtl8169_tx_clear_range(tp, tp->dirty_tx, NUM_TX_DESC); tp->cur_tx = tp->dirty_tx = 0; - netdev_reset_queue(tp->dev); } static void rtl_reset_work(struct rtl8169_private *tp) @@ -5464,7 +5497,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; @@ -5477,13 +5523,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, @@ -5507,6 +5560,12 @@ if (unlikely(le32_to_cpu(txd->opts1) & DescOwn)) goto err_stop_0; + opts[1] = cpu_to_le32(rtl8169_tx_vlan_tag(tp, 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))) { @@ -5518,11 +5577,6 @@ tp->tx_skb[entry].len = len; txd->addr = cpu_to_le64(mapping); - opts[1] = cpu_to_le32(rtl8169_tx_vlan_tag(tp, skb)); - opts[0] = DescOwn; - - rtl8169_tso_csum(tp, skb, opts); - frags = rtl8169_xmit_frags(tp, skb, opts); if (frags < 0) goto err_dma_1; @@ -5535,8 +5589,6 @@ txd->opts2 = cpu_to_le32(opts[1]); - netdev_sent_queue(dev, skb->len); - skb_tx_timestamp(skb); wmb(); @@ -5577,6 +5629,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; @@ -5633,16 +5686,9 @@ rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING); } -struct rtl_txc { - int packets; - int bytes; -}; - static void rtl_tx(struct net_device *dev, struct rtl8169_private *tp) { - struct rtl8169_stats *tx_stats = &tp->tx_stats; unsigned int dirty_tx, tx_left; - struct rtl_txc txc = { 0, 0 }; dirty_tx = tp->dirty_tx; smp_rmb(); @@ -5661,24 +5707,17 @@ rtl8169_unmap_tx_skb(&tp->pci_dev->dev, tx_skb, tp->TxDescArray + entry); if (status & LastFrag) { - struct sk_buff *skb = tx_skb->skb; - - txc.packets++; - txc.bytes += skb->len; - dev_kfree_skb(skb); + u64_stats_update_begin(&tp->tx_stats.syncp); + tp->tx_stats.packets++; + tp->tx_stats.bytes += tx_skb->skb->len; + u64_stats_update_end(&tp->tx_stats.syncp); + dev_kfree_skb(tx_skb->skb); tx_skb->skb = NULL; } dirty_tx++; tx_left--; } - u64_stats_update_begin(&tx_stats->syncp); - tx_stats->packets += txc.packets; - tx_stats->bytes += txc.bytes; - u64_stats_update_end(&tx_stats->syncp); - - netdev_completed_queue(dev, txc.packets, txc.bytes); - if (tp->dirty_tx != dirty_tx) { tp->dirty_tx = dirty_tx; /* Sync with rtl8169_start_xmit: @@ -5777,8 +5816,6 @@ !(status & (RxRWT | RxFOVF)) && (dev->features & NETIF_F_RXALL)) goto process_pkt; - - rtl8169_mark_to_asic(desc, rx_buf_sz); } else { struct sk_buff *skb; dma_addr_t addr; @@ -5799,16 +5836,14 @@ if (unlikely(rtl8169_fragmented_frame(status))) { dev->stats.rx_dropped++; dev->stats.rx_length_errors++; - rtl8169_mark_to_asic(desc, rx_buf_sz); - continue; + goto release_descriptor; } skb = rtl8169_try_rx_copy(tp->Rx_databuff[entry], tp, pkt_size, addr); - rtl8169_mark_to_asic(desc, rx_buf_sz); if (!skb) { dev->stats.rx_dropped++; - continue; + goto release_descriptor; } rtl8169_rx_csum(skb, status); @@ -5824,13 +5859,10 @@ tp->rx_stats.bytes += pkt_size; u64_stats_update_end(&tp->rx_stats.syncp); } - - /* Work around for AMD plateform. */ - if ((desc->opts2 & cpu_to_le32(0xfffe000)) && - (tp->mac_version == RTL_GIGA_MAC_VER_05)) { - desc->opts2 = 0; - cur_rx++; - } +release_descriptor: + desc->opts2 = 0; + wmb(); + rtl8169_mark_to_asic(desc, rx_buf_sz); } count = cur_rx - tp->cur_rx; --- linux-3.5.0.orig/drivers/net/ethernet/realtek/8139cp.c +++ linux-3.5.0/drivers/net/ethernet/realtek/8139cp.c @@ -957,7 +957,35 @@ static inline void cp_start_hw (struct cp_private *cp) { + dma_addr_t ring_dma; + cpw16(CpCmd, cp->cpcmd); + + /* + * These (at least TxRingAddr) need to be configured after the + * corresponding bits in CpCmd are enabled. Datasheet v1.6 §6.33 + * (C+ Command Register) recommends that these and more be configured + * *after* the [RT]xEnable bits in CpCmd are set. And on some hardware + * it's been observed that the TxRingAddr is actually reset to garbage + * when C+ mode Tx is enabled in CpCmd. + */ + cpw32_f(HiTxRingAddr, 0); + cpw32_f(HiTxRingAddr + 4, 0); + + ring_dma = cp->ring_dma; + cpw32_f(RxRingAddr, ring_dma & 0xffffffff); + cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); + + ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; + cpw32_f(TxRingAddr, ring_dma & 0xffffffff); + cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); + + /* + * Strictly speaking, the datasheet says this should be enabled + * *before* setting the descriptor addresses. But what, then, would + * prevent it from doing DMA to random unconfigured addresses? + * This variant appears to work fine. + */ cpw8(Cmd, RxOn | TxOn); } @@ -969,7 +997,6 @@ static void cp_init_hw (struct cp_private *cp) { struct net_device *dev = cp->dev; - dma_addr_t ring_dma; cp_reset_hw(cp); @@ -979,17 +1006,6 @@ cpw32_f (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0))); cpw32_f (MAC0 + 4, le32_to_cpu (*(__le32 *) (dev->dev_addr + 4))); - cpw32_f(HiTxRingAddr, 0); - cpw32_f(HiTxRingAddr + 4, 0); - - ring_dma = cp->ring_dma; - cpw32_f(RxRingAddr, ring_dma & 0xffffffff); - cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); - - ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; - cpw32_f(TxRingAddr, ring_dma & 0xffffffff); - cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); - cp_start_hw(cp); cpw8(TxThresh, 0x06); /* XXX convert magic num to a constant */ @@ -1100,6 +1116,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-3.5.0.orig/drivers/net/ethernet/freescale/ucc_geth.h +++ linux-3.5.0/drivers/net/ethernet/freescale/ucc_geth.h @@ -1214,8 +1214,6 @@ /* index of the first skb which hasn't been transmitted yet. */ u16 skb_dirtytx[NUM_TX_QUEUES]; - struct sk_buff_head rx_recycle; - struct ugeth_mii_info *mii_info; struct phy_device *phydev; phy_interface_t phy_interface; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar_ptp.c +++ linux-3.5.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, @@ -515,13 +514,14 @@ err = PTR_ERR(etsects->clock); goto no_clock; } - gfar_phc_clock = ptp_clock_index(etsects->clock); + gfar_phc_index = ptp_clock_index(etsects->clock); dev_set_drvdata(&dev->dev, etsects); return 0; no_clock: + iounmap(etsects->regs); no_ioremap: release_resource(etsects->rsrc); no_resource: @@ -539,7 +539,7 @@ gfar_write(&etsects->regs->tmr_temask, 0); gfar_write(&etsects->regs->tmr_ctrl, 0); - gfar_phc_clock = -1; + gfar_phc_index = -1; ptp_clock_unregister(etsects->clock); iounmap(etsects->regs); release_resource(etsects->rsrc); --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar_ethtool.c @@ -1741,6 +1741,7 @@ } int gfar_phc_index = -1; +EXPORT_SYMBOL(gfar_phc_index); static int gfar_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar.c +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar.c @@ -1037,7 +1037,7 @@ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_VLAN) { dev->hw_features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; - dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; + dev->features |= NETIF_F_HW_VLAN_RX; } if (priv->device_flags & FSL_GIANFAR_DEV_HAS_EXTENDED_HASH) { @@ -1746,7 +1746,6 @@ sizeof(struct rxbd8) * priv->total_rx_ring_size, priv->tx_queue[0]->tx_bd_base, priv->tx_queue[0]->tx_bd_dma_base); - skb_queue_purge(&priv->rx_recycle); } void gfar_start(struct net_device *dev) @@ -1921,8 +1920,6 @@ enable_napi(priv); - skb_queue_head_init(&priv->rx_recycle); - /* Initialize a bunch of registers */ init_registers(dev); @@ -2513,17 +2510,7 @@ bytes_sent += skb->len; - /* - * If there's room in the queue (limit it to rx_buffer_size) - * we add this skb back into the pool, if it's the right size - */ - if (skb_queue_len(&priv->rx_recycle) < rx_queue->rx_ring_size && - skb_recycle_check(skb, priv->rx_buffer_size + - RXBUF_ALIGNMENT)) { - gfar_align_skb(skb); - skb_queue_head(&priv->rx_recycle, skb); - } else - dev_kfree_skb_any(skb); + dev_kfree_skb_any(skb); tx_queue->tx_skbuff[skb_dirtytx] = NULL; @@ -2590,7 +2577,7 @@ static struct sk_buff * gfar_alloc_skb(struct net_device *dev) { struct gfar_private *priv = netdev_priv(dev); - struct sk_buff *skb = NULL; + struct sk_buff *skb; skb = netdev_alloc_skb(dev, priv->rx_buffer_size + RXBUF_ALIGNMENT); if (!skb) @@ -2603,14 +2590,7 @@ struct sk_buff * gfar_new_skb(struct net_device *dev) { - struct gfar_private *priv = netdev_priv(dev); - struct sk_buff *skb = NULL; - - skb = skb_dequeue(&priv->rx_recycle); - if (!skb) - skb = gfar_alloc_skb(dev); - - return skb; + return gfar_alloc_skb(dev); } static inline void count_errors(unsigned short status, struct net_device *dev) @@ -2768,7 +2748,7 @@ if (unlikely(!newskb)) newskb = skb; else if (skb) - skb_queue_head(&priv->rx_recycle, skb); + dev_kfree_skb(skb); } else { /* Increment the number of packets */ rx_queue->stats.rx_packets++; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/ucc_geth.c +++ linux-3.5.0/drivers/net/ethernet/freescale/ucc_geth.c @@ -210,14 +210,12 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth, u8 __iomem *bd) { - struct sk_buff *skb = NULL; + struct sk_buff *skb; - skb = __skb_dequeue(&ugeth->rx_recycle); + skb = netdev_alloc_skb(ugeth->ndev, + ugeth->ug_info->uf_info.max_rx_buf_length + + UCC_GETH_RX_DATA_BUF_ALIGNMENT); if (!skb) - skb = netdev_alloc_skb(ugeth->ndev, - ugeth->ug_info->uf_info.max_rx_buf_length + - UCC_GETH_RX_DATA_BUF_ALIGNMENT); - if (skb == NULL) return NULL; /* We need the data buffer to be aligned properly. We will reserve @@ -2021,8 +2019,6 @@ iounmap(ugeth->ug_regs); ugeth->ug_regs = NULL; } - - skb_queue_purge(&ugeth->rx_recycle); } static void ucc_geth_set_multi(struct net_device *dev) @@ -2231,8 +2227,6 @@ return -ENOMEM; } - skb_queue_head_init(&ugeth->rx_recycle); - return 0; } @@ -3275,12 +3269,7 @@ if (netif_msg_rx_err(ugeth)) ugeth_err("%s, %d: ERROR!!! skb - 0x%08x", __func__, __LINE__, (u32) skb); - if (skb) { - skb->data = skb->head + NET_SKB_PAD; - skb->len = 0; - skb_reset_tail_pointer(skb); - __skb_queue_head(&ugeth->rx_recycle, skb); - } + dev_kfree_skb(skb); ugeth->rx_skbuff[rxQ][ugeth->skb_currx[rxQ]] = NULL; dev->stats.rx_dropped++; @@ -3350,13 +3339,7 @@ dev->stats.tx_packets++; - if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN && - skb_recycle_check(skb, - ugeth->ug_info->uf_info.max_rx_buf_length + - UCC_GETH_RX_DATA_BUF_ALIGNMENT)) - __skb_queue_head(&ugeth->rx_recycle, skb); - else - dev_kfree_skb(skb); + dev_kfree_skb(skb); ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]] = NULL; ugeth->skb_dirtytx[txQ] = --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar.h +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar.h @@ -1072,8 +1072,6 @@ u32 cur_filer_idx; - struct sk_buff_head rx_recycle; - /* RX queue filer rule set*/ struct ethtool_rx_list rx_list; struct mutex rx_queue_access; --- linux-3.5.0.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ linux-3.5.0/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -1747,9 +1747,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-3.5.0.orig/drivers/net/ethernet/ti/davinci_emac.c +++ linux-3.5.0/drivers/net/ethernet/ti/davinci_emac.c @@ -1053,7 +1053,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-3.5.0.orig/drivers/net/ethernet/ti/cpsw.c +++ linux-3.5.0/drivers/net/ethernet/ti/cpsw.c @@ -249,7 +249,7 @@ struct cpsw_priv *priv = netdev_priv(ndev); if (unlikely(netif_queue_stopped(ndev))) - netif_start_queue(ndev); + netif_wake_queue(ndev); priv->stats.tx_packets++; priv->stats.tx_bytes += len; dev_kfree_skb_any(skb); --- linux-3.5.0.orig/drivers/net/ethernet/ti/davinci_cpdma.c +++ linux-3.5.0/drivers/net/ethernet/ti/davinci_cpdma.c @@ -862,6 +862,7 @@ next_dma = desc_read(desc, hw_next); chan->head = desc_from_phys(pool, next_dma); + chan->count--; chan->stats.teardown_dequeue++; /* issue callback without locks held */ --- linux-3.5.0.orig/drivers/net/ethernet/sfc/mcdi.c +++ linux-3.5.0/drivers/net/ethernet/sfc/mcdi.c @@ -22,7 +22,7 @@ ************************************************************************** */ -#define MCDI_RPC_TIMEOUT 10 /*seconds */ +#define MCDI_RPC_TIMEOUT (10 * HZ) #define MCDI_PDU(efx) \ (efx_port_num(efx) ? MC_SMEM_P1_PDU_OFST : MC_SMEM_P0_PDU_OFST) @@ -120,7 +120,7 @@ static int efx_mcdi_poll(struct efx_nic *efx) { struct efx_mcdi_iface *mcdi = efx_mcdi(efx); - unsigned int time, finish; + unsigned long time, finish; unsigned int respseq, respcmd, error; unsigned int pdu = FR_CZ_MC_TREG_SMEM + MCDI_PDU(efx); unsigned int rc, spins; @@ -136,7 +136,7 @@ * and poll once a jiffy (approximately) */ spins = TICK_USEC; - finish = get_seconds() + MCDI_RPC_TIMEOUT; + finish = jiffies + MCDI_RPC_TIMEOUT; while (1) { if (spins != 0) { @@ -146,7 +146,7 @@ schedule_timeout_uninterruptible(1); } - time = get_seconds(); + time = jiffies; rmb(); efx_readd(efx, ®, pdu); @@ -158,7 +158,7 @@ EFX_DWORD_FIELD(reg, MCDI_HEADER_RESPONSE)) break; - if (time >= finish) + if (time_after(time, finish)) return -ETIMEDOUT; } @@ -250,7 +250,7 @@ if (wait_event_timeout( mcdi->wq, atomic_read(&mcdi->state) == MCDI_STATE_COMPLETED, - msecs_to_jiffies(MCDI_RPC_TIMEOUT * 1000)) == 0) + MCDI_RPC_TIMEOUT) == 0) return -ETIMEDOUT; /* Check if efx_mcdi_set_mode() switched us back to polled completions. @@ -640,10 +640,9 @@ 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]; - size_t outlen; + uint8_t outbuf[MC_CMD_GET_BOARD_CFG_OUT_LENMAX]; + size_t outlen, offset, i; int port_num = efx_port_num(efx); - int offset; int rc; BUILD_BUG_ON(MC_CMD_GET_BOARD_CFG_IN_LEN != 0); @@ -663,11 +662,16 @@ : MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_OFST; if (mac_address) memcpy(mac_address, outbuf + offset, ETH_ALEN); - if (fw_subtype_list) - memcpy(fw_subtype_list, - outbuf + MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST, - MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM * - sizeof(fw_subtype_list[0])); + if (fw_subtype_list) { + offset = MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST; + for (i = 0; + i < MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM; + i++) { + fw_subtype_list[i] = + le16_to_cpup((__le16 *)(outbuf + offset)); + offset += 2; + } + } if (capabilities) { if (port_num) *capabilities = MCDI_DWORD(outbuf, @@ -1164,6 +1168,9 @@ __le32 *qid; int rc, count; + BUILD_BUG_ON(EFX_MAX_CHANNELS > + MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_MAXNUM); + qid = kmalloc(EFX_MAX_CHANNELS * sizeof(*qid), GFP_KERNEL); if (qid == NULL) return -ENOMEM; --- linux-3.5.0.orig/drivers/net/ethernet/sfc/nic.c +++ linux-3.5.0/drivers/net/ethernet/sfc/nic.c @@ -73,6 +73,8 @@ _EFX_CHANNEL_MAGIC(_EFX_CHANNEL_MAGIC_TX_DRAIN, \ (_tx_queue)->queue) +static void efx_magic_event(struct efx_channel *channel, u32 magic); + /************************************************************************** * * Solarstorm hardware access @@ -124,9 +126,6 @@ unsigned address = 0, i, j; efx_oword_t mask, imask, original, reg, buf; - /* Falcon should be in loopback to isolate the XMAC from the PHY */ - WARN_ON(!LOOPBACK_INTERNAL(efx)); - for (i = 0; i < n_regs; ++i) { address = regs[i].address; mask = imask = regs[i].mask; @@ -380,7 +379,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 @@ -495,6 +495,9 @@ struct efx_nic *efx = tx_queue->efx; efx_oword_t tx_flush_descq; + WARN_ON(atomic_read(&tx_queue->flush_outstanding)); + atomic_set(&tx_queue->flush_outstanding, 1); + EFX_POPULATE_OWORD_2(tx_flush_descq, FRF_AZ_TX_FLUSH_DESCQ_CMD, 1, FRF_AZ_TX_FLUSH_DESCQ, tx_queue->queue); @@ -670,6 +673,47 @@ && atomic_read(&efx->rxq_flush_pending) > 0)); } +static bool efx_check_tx_flush_complete(struct efx_nic *efx) +{ + bool i = true; + efx_oword_t txd_ptr_tbl; + struct efx_channel *channel; + struct efx_tx_queue *tx_queue; + + efx_for_each_channel(channel, efx) { + efx_for_each_channel_tx_queue(tx_queue, channel) { + efx_reado_table(efx, &txd_ptr_tbl, + FR_BZ_TX_DESC_PTR_TBL, tx_queue->queue); + if (EFX_OWORD_FIELD(txd_ptr_tbl, + FRF_AZ_TX_DESCQ_FLUSH) || + EFX_OWORD_FIELD(txd_ptr_tbl, + FRF_AZ_TX_DESCQ_EN)) { + netif_dbg(efx, hw, efx->net_dev, + "flush did not complete on TXQ %d\n", + tx_queue->queue); + i = false; + } else if (atomic_cmpxchg(&tx_queue->flush_outstanding, + 1, 0)) { + /* The flush is complete, but we didn't + * receive a flush completion event + */ + netif_dbg(efx, hw, efx->net_dev, + "flush complete on TXQ %d, so drain " + "the queue\n", tx_queue->queue); + /* Don't need to increment drain_pending as it + * has already been incremented for the queues + * which did not drain + */ + efx_magic_event(channel, + EFX_CHANNEL_MAGIC_TX_DRAIN( + tx_queue)); + } + } + } + + return i; +} + /* Flush all the transmit queues, and continue flushing receive queues until * they're all flushed. Wait for the DRAIN events to be recieved so that there * are no more RX and TX events left on any channel. */ @@ -681,7 +725,6 @@ struct efx_tx_queue *tx_queue; int rc = 0; - efx->fc_disable++; efx->type->prepare_flush(efx); efx_for_each_channel(channel, efx) { @@ -731,7 +774,8 @@ timeout); } - if (atomic_read(&efx->drain_pending)) { + if (atomic_read(&efx->drain_pending) && + !efx_check_tx_flush_complete(efx)) { netif_err(efx, hw, efx->net_dev, "failed to flush %d queues " "(rx %d+%d)\n", atomic_read(&efx->drain_pending), atomic_read(&efx->rxq_flush_outstanding), @@ -743,7 +787,7 @@ atomic_set(&efx->rxq_flush_outstanding, 0); } - efx->fc_disable--; + efx->type->finish_flush(efx); return rc; } @@ -1018,9 +1062,10 @@ if (qid < EFX_TXQ_TYPES * efx->n_tx_channels) { tx_queue = efx_get_tx_queue(efx, qid / EFX_TXQ_TYPES, qid % EFX_TXQ_TYPES); - - efx_magic_event(tx_queue->channel, - EFX_CHANNEL_MAGIC_TX_DRAIN(tx_queue)); + if (atomic_cmpxchg(&tx_queue->flush_outstanding, 1, 0)) { + efx_magic_event(tx_queue->channel, + EFX_CHANNEL_MAGIC_TX_DRAIN(tx_queue)); + } } } --- linux-3.5.0.orig/drivers/net/ethernet/sfc/nic.h +++ linux-3.5.0/drivers/net/ethernet/sfc/nic.h @@ -316,6 +316,8 @@ /* Global Resources */ extern int efx_nic_flush_queues(struct efx_nic *efx); +extern void siena_prepare_flush(struct efx_nic *efx); +extern void siena_finish_flush(struct efx_nic *efx); extern void falcon_start_nic_stats(struct efx_nic *efx); extern void falcon_stop_nic_stats(struct efx_nic *efx); extern void falcon_setup_xaui(struct efx_nic *efx); --- linux-3.5.0.orig/drivers/net/ethernet/sfc/rx.c +++ linux-3.5.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) { @@ -188,6 +184,7 @@ struct efx_rx_buffer *rx_buf; struct page *page; void *page_addr; + unsigned int page_offset; struct efx_rx_page_state *state; dma_addr_t dma_addr; unsigned index, count; @@ -214,12 +211,14 @@ page_addr += sizeof(struct efx_rx_page_state); 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; @@ -231,6 +230,7 @@ get_page(page); dma_addr += (PAGE_SIZE >> 1); page_addr += (PAGE_SIZE >> 1); + page_offset += (PAGE_SIZE >> 1); ++count; goto split; } @@ -240,7 +240,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; @@ -251,6 +252,10 @@ state->dma_addr, efx_rx_buf_size(efx), PCI_DMA_FROMDEVICE); + } 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) { pci_unmap_single(efx->pci_dev, rx_buf->dma_addr, @@ -273,7 +278,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); } @@ -538,10 +543,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-3.5.0.orig/drivers/net/ethernet/sfc/siena_sriov.c +++ linux-3.5.0/drivers/net/ethernet/sfc/siena_sriov.c @@ -21,6 +21,9 @@ /* Number of longs required to track all the VIs in a VF */ #define VI_MASK_LENGTH BITS_TO_LONGS(1 << EFX_VI_SCALE_MAX) +/* Maximum number of RX queues supported */ +#define VF_MAX_RX_QUEUES 63 + /** * enum efx_vf_tx_filter_mode - TX MAC filtering behaviour * @VF_TX_FILTER_OFF: Disabled @@ -578,6 +581,7 @@ efx_oword_t reg; if (bad_vf_index(efx, vf_evq) || bad_vf_index(efx, vf_rxq) || + vf_rxq >= VF_MAX_RX_QUEUES || bad_buf_count(buf_count, EFX_MAX_DMAQ_SIZE)) { if (net_ratelimit()) netif_err(efx, hw, efx->net_dev, @@ -683,13 +687,15 @@ __le32 *rxqs; int rc; + BUILD_BUG_ON(VF_MAX_RX_QUEUES > + MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_MAXNUM); + rxqs = kmalloc(count * sizeof(*rxqs), GFP_KERNEL); if (rxqs == NULL) return VFDI_RC_ENOMEM; rtnl_lock(); - if (efx->fc_disable++ == 0) - efx_mcdi_set_mac(efx); + siena_prepare_flush(efx); rtnl_unlock(); /* Flush all the initialized queues */ @@ -726,8 +732,7 @@ } rtnl_lock(); - if (--efx->fc_disable == 0) - efx_mcdi_set_mac(efx); + siena_finish_flush(efx); rtnl_unlock(); /* Irrespective of success/failure, fini the queues */ --- linux-3.5.0.orig/drivers/net/ethernet/sfc/tx.c +++ linux-3.5.0/drivers/net/ethernet/sfc/tx.c @@ -119,6 +119,25 @@ return len; } +unsigned int efx_tx_max_skb_descs(struct efx_nic *efx) +{ + /* Header and payload descriptor for each output segment, plus + * one for every input fragment boundary within a segment + */ + unsigned int max_descs = EFX_TSO_MAX_SEGS * 2 + MAX_SKB_FRAGS; + + /* Possibly one more per segment for the alignment workaround */ + if (EFX_WORKAROUND_5391(efx)) + max_descs += EFX_TSO_MAX_SEGS; + + /* Possibly more for PCIe page boundaries within input fragments */ + if (PAGE_SIZE > EFX_PAGE_SIZE) + max_descs += max_t(unsigned int, MAX_SKB_FRAGS, + DIV_ROUND_UP(GSO_MAX_SIZE, EFX_PAGE_SIZE)); + + return max_descs; +} + /* * Add a socket buffer to a TX queue * --- linux-3.5.0.orig/drivers/net/ethernet/sfc/ethtool.c +++ linux-3.5.0/drivers/net/ethernet/sfc/ethtool.c @@ -680,21 +680,27 @@ struct ethtool_ringparam *ring) { struct efx_nic *efx = netdev_priv(net_dev); + u32 txq_entries; if (ring->rx_mini_pending || ring->rx_jumbo_pending || ring->rx_pending > EFX_MAX_DMAQ_SIZE || ring->tx_pending > EFX_MAX_DMAQ_SIZE) return -EINVAL; - if (ring->rx_pending < EFX_MIN_RING_SIZE || - ring->tx_pending < EFX_MIN_RING_SIZE) { + if (ring->rx_pending < EFX_RXQ_MIN_ENT) { netif_err(efx, drv, efx->net_dev, - "TX and RX queues cannot be smaller than %ld\n", - EFX_MIN_RING_SIZE); + "RX queues cannot be smaller than %u\n", + EFX_RXQ_MIN_ENT); return -EINVAL; } - return efx_realloc_channels(efx, ring->rx_pending, ring->tx_pending); + txq_entries = max(ring->tx_pending, EFX_TXQ_MIN_ENT(efx)); + if (txq_entries != ring->tx_pending) + netif_warn(efx, drv, efx->net_dev, + "increasing TX queue size to minimum of %u\n", + txq_entries); + + return efx_realloc_channels(efx, ring->rx_pending, txq_entries); } static int efx_ethtool_set_pauseparam(struct net_device *net_dev, @@ -857,8 +863,8 @@ &ip_entry->ip4dst, &ip_entry->pdst); if (rc != 0) { rc = efx_filter_get_ipv4_full( - &spec, &proto, &ip_entry->ip4src, &ip_entry->psrc, - &ip_entry->ip4dst, &ip_entry->pdst); + &spec, &proto, &ip_entry->ip4dst, &ip_entry->pdst, + &ip_entry->ip4src, &ip_entry->psrc); EFX_WARN_ON_PARANOID(rc); ip_mask->ip4src = ~0; ip_mask->psrc = ~0; --- linux-3.5.0.orig/drivers/net/ethernet/sfc/selftest.c +++ linux-3.5.0/drivers/net/ethernet/sfc/selftest.c @@ -120,19 +120,6 @@ return rc; } -static int efx_test_chip(struct efx_nic *efx, struct efx_self_tests *tests) -{ - int rc = 0; - - /* Test register access */ - if (efx->type->test_registers) { - rc = efx->type->test_registers(efx); - tests->registers = rc ? -1 : 1; - } - - return rc; -} - /************************************************************************** * * Interrupt and event queue testing @@ -699,8 +686,7 @@ { enum efx_loopback_mode loopback_mode = efx->loopback_mode; int phy_mode = efx->phy_mode; - enum reset_type reset_method = RESET_TYPE_INVISIBLE; - int rc_test = 0, rc_reset = 0, rc; + int rc_test = 0, rc_reset, rc; efx_selftest_async_cancel(efx); @@ -735,46 +721,28 @@ /* Detach the device so the kernel doesn't transmit during the * loopback test and the watchdog timeout doesn't fire. */ - netif_device_detach(efx->net_dev); - - mutex_lock(&efx->mac_lock); - if (efx->loopback_modes) { - /* We need the 312 clock from the PHY to test the XMAC - * registers, so move into XGMII loopback if available */ - if (efx->loopback_modes & (1 << LOOPBACK_XGMII)) - efx->loopback_mode = LOOPBACK_XGMII; - else - efx->loopback_mode = __ffs(efx->loopback_modes); - } - - __efx_reconfigure_port(efx); - mutex_unlock(&efx->mac_lock); - - /* free up all consumers of SRAM (including all the queues) */ - efx_reset_down(efx, reset_method); + efx_device_detach_sync(efx); - rc = efx_test_chip(efx, tests); - if (rc && !rc_test) - rc_test = rc; + if (efx->type->test_chip) { + rc_reset = efx->type->test_chip(efx, tests); + if (rc_reset) { + netif_err(efx, hw, efx->net_dev, + "Unable to recover from chip test\n"); + efx_schedule_reset(efx, RESET_TYPE_DISABLE); + return rc_reset; + } - /* reset the chip to recover from the register test */ - rc_reset = efx->type->reset(efx, reset_method); + if ((tests->registers < 0) && !rc_test) + rc_test = -EIO; + } /* Ensure that the phy is powered and out of loopback * for the bist and loopback tests */ + mutex_lock(&efx->mac_lock); efx->phy_mode &= ~PHY_MODE_LOW_POWER; efx->loopback_mode = LOOPBACK_NONE; - - rc = efx_reset_up(efx, reset_method, rc_reset == 0); - if (rc && !rc_reset) - rc_reset = rc; - - if (rc_reset) { - netif_err(efx, drv, efx->net_dev, - "Unable to recover from chip test\n"); - efx_schedule_reset(efx, RESET_TYPE_DISABLE); - return rc_reset; - } + __efx_reconfigure_port(efx); + mutex_unlock(&efx->mac_lock); rc = efx_test_phy(efx, tests, flags); if (rc && !rc_test) --- linux-3.5.0.orig/drivers/net/ethernet/sfc/mcdi.h +++ linux-3.5.0/drivers/net/ethernet/sfc/mcdi.h @@ -107,11 +107,13 @@ #define MCDI_EVENT_FIELD(_ev, _field) \ EFX_QWORD_FIELD(_ev, MCDI_EVENT_ ## _field) #define MCDI_ARRAY_FIELD(_buf, _field1, _type, _index, _field2) \ - EFX_DWORD_FIELD( \ + EFX_EXTRACT_DWORD( \ *((efx_dword_t *) \ (MCDI_ARRAY_PTR(_buf, _field1, _type, _index) + \ (MC_CMD_ ## _type ## _TYPEDEF_ ## _field2 ## _OFST & ~3))), \ - MC_CMD_ ## _type ## _TYPEDEF_ ## _field2) + MC_CMD_ ## _type ## _TYPEDEF_ ## _field2 ## _LBN & 0x1f, \ + (MC_CMD_ ## _type ## _TYPEDEF_ ## _field2 ## _LBN & 0x1f) + \ + MC_CMD_ ## _type ## _TYPEDEF_ ## _field2 ## _WIDTH - 1) extern void efx_mcdi_print_fwver(struct efx_nic *efx, char *buf, size_t len); extern int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating, --- linux-3.5.0.orig/drivers/net/ethernet/sfc/efx.c +++ linux-3.5.0/drivers/net/ethernet/sfc/efx.c @@ -754,6 +754,7 @@ tx_queue->txd.entries); } + efx_device_detach_sync(efx); efx_stop_all(efx); efx_stop_interrupts(efx, true); @@ -807,6 +808,7 @@ efx_start_interrupts(efx, true); efx_start_all(efx); + netif_device_attach(efx->net_dev); return rc; rollback: @@ -1503,6 +1505,11 @@ goto fail2; } + BUILD_BUG_ON(EFX_DEFAULT_DMAQ_SIZE < EFX_RXQ_MIN_ENT); + if (WARN_ON(EFX_DEFAULT_DMAQ_SIZE < EFX_TXQ_MIN_ENT(efx))) { + rc = -EINVAL; + goto fail3; + } efx->rxq_entries = efx->txq_entries = EFX_DEFAULT_DMAQ_SIZE; rc = efx_probe_filters(efx); @@ -1596,8 +1603,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); @@ -1916,10 +1927,11 @@ 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); /* Reconfigure the MAC before enabling the dma queues so that * the RX buffers don't overflow */ @@ -1928,6 +1940,7 @@ mutex_unlock(&efx->mac_lock); efx_start_all(efx); + netif_device_attach(efx->net_dev); return 0; } @@ -2070,6 +2083,7 @@ net_dev->irq = efx->pci_dev->irq; net_dev->netdev_ops = &efx_netdev_ops; SET_ETHTOOL_OPS(net_dev, &efx_ethtool_ops); + net_dev->gso_max_segs = EFX_TSO_MAX_SEGS; rtnl_lock(); @@ -2218,7 +2232,7 @@ netif_info(efx, drv, efx->net_dev, "resetting (%s)\n", RESET_TYPE(method)); - netif_device_detach(efx->net_dev); + efx_device_detach_sync(efx); efx_reset_down(efx, method); rc = efx->type->reset(efx, method); @@ -2712,8 +2726,7 @@ struct efx_nic *efx = pci_get_drvdata(to_pci_dev(dev)); efx->state = STATE_FINI; - - netif_device_detach(efx->net_dev); + efx_device_detach_sync(efx); efx_stop_all(efx); efx_stop_interrupts(efx, false); --- linux-3.5.0.orig/drivers/net/ethernet/sfc/siena.c +++ linux-3.5.0/drivers/net/ethernet/sfc/siena.c @@ -25,10 +25,12 @@ #include "workarounds.h" #include "mcdi.h" #include "mcdi_pcol.h" +#include "selftest.h" /* Hardware control for SFC9000 family including SFL9021 (aka Siena). */ static void siena_init_wol(struct efx_nic *efx); +static int siena_reset_hw(struct efx_nic *efx, enum reset_type method); static void siena_push_irq_moderation(struct efx_channel *channel) @@ -125,6 +127,18 @@ efx_nic_free_buffer(efx, &efx->stats_buffer); } +void siena_prepare_flush(struct efx_nic *efx) +{ + if (efx->fc_disable++ == 0) + efx_mcdi_set_mac(efx); +} + +void siena_finish_flush(struct efx_nic *efx) +{ + if (--efx->fc_disable == 0) + efx_mcdi_set_mac(efx); +} + static const struct efx_nic_register_test siena_register_tests[] = { { FR_AZ_ADR_REGION, EFX_OWORD32(0x0003FFFF, 0x0003FFFF, 0x0003FFFF, 0x0003FFFF) }, @@ -154,10 +168,29 @@ EFX_OWORD32(0xFFFFFFFF, 0xFFFFFFFF, 0x00000007, 0x00000000) }, }; -static int siena_test_registers(struct efx_nic *efx) +static int siena_test_chip(struct efx_nic *efx, struct efx_self_tests *tests) { - return efx_nic_test_registers(efx, siena_register_tests, - ARRAY_SIZE(siena_register_tests)); + enum reset_type reset_method = RESET_TYPE_ALL; + int rc, rc2; + + efx_reset_down(efx, reset_method); + + /* Reset the chip immediately so that it is completely + * quiescent regardless of what any VF driver does. + */ + rc = siena_reset_hw(efx, reset_method); + if (rc) + goto out; + + tests->registers = + efx_nic_test_registers(efx, siena_register_tests, + ARRAY_SIZE(siena_register_tests)) + ? -1 : 1; + + rc = siena_reset_hw(efx, reset_method); +out: + rc2 = efx_reset_up(efx, reset_method, rc == 0); + return rc ? rc : rc2; } /************************************************************************** @@ -637,7 +670,8 @@ .reset = siena_reset_hw, .probe_port = siena_probe_port, .remove_port = siena_remove_port, - .prepare_flush = efx_port_dummy_op_void, + .prepare_flush = siena_prepare_flush, + .finish_flush = siena_finish_flush, .update_stats = siena_update_nic_stats, .start_stats = siena_start_nic_stats, .stop_stats = siena_stop_nic_stats, @@ -649,7 +683,7 @@ .get_wol = siena_get_wol, .set_wol = siena_set_wol, .resume_wol = siena_init_wol, - .test_registers = siena_test_registers, + .test_chip = siena_test_chip, .test_nvram = efx_mcdi_nvram_test_all, .revision = EFX_REV_SIENA_A0, --- linux-3.5.0.orig/drivers/net/ethernet/sfc/net_driver.h +++ linux-3.5.0/drivers/net/ethernet/sfc/net_driver.h @@ -68,6 +68,8 @@ #define EFX_TXQ_TYPES 4 #define EFX_MAX_TX_QUEUES (EFX_TXQ_TYPES * EFX_MAX_CHANNELS) +struct efx_self_tests; + /** * struct efx_special_buffer - An Efx special buffer * @addr: CPU base address of the buffer @@ -194,6 +196,7 @@ /* Members shared between paths and sometimes updated */ unsigned int empty_read_count ____cacheline_aligned_in_smp; #define EFX_EMPTY_COUNT_VALID 0x80000000 + atomic_t flush_outstanding; }; /** @@ -203,6 +206,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. */ @@ -212,7 +216,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 @@ -889,6 +894,7 @@ * @remove_port: Free resources allocated by probe_port() * @handle_global_event: Handle a "global" event (may be %NULL) * @prepare_flush: Prepare the hardware for flushing the DMA queues + * @finish_flush: Clean up after flushing the DMA queues * @update_stats: Update statistics not provided by event handling * @start_stats: Start the regular fetching of statistics * @stop_stats: Stop the regular fetching of statistics @@ -901,7 +907,8 @@ * @get_wol: Get WoL configuration from driver state * @set_wol: Push WoL configuration to the NIC * @resume_wol: Synchronise WoL state between driver and MC (e.g. after resume) - * @test_registers: Test read/write functionality of control registers + * @test_chip: Test registers. Should use efx_nic_test_registers(), and is + * expected to reset the NIC. * @test_nvram: Test validity of NVRAM contents * @revision: Hardware architecture revision * @mem_map_size: Memory BAR mapped size @@ -935,6 +942,7 @@ void (*remove_port)(struct efx_nic *efx); bool (*handle_global_event)(struct efx_channel *channel, efx_qword_t *); void (*prepare_flush)(struct efx_nic *efx); + void (*finish_flush)(struct efx_nic *efx); void (*update_stats)(struct efx_nic *efx); void (*start_stats)(struct efx_nic *efx); void (*stop_stats)(struct efx_nic *efx); @@ -946,7 +954,7 @@ void (*get_wol)(struct efx_nic *efx, struct ethtool_wolinfo *wol); int (*set_wol)(struct efx_nic *efx, u32 type); void (*resume_wol)(struct efx_nic *efx); - int (*test_registers)(struct efx_nic *efx); + int (*test_chip)(struct efx_nic *efx, struct efx_self_tests *tests); int (*test_nvram)(struct efx_nic *efx); int revision; --- linux-3.5.0.orig/drivers/net/ethernet/sfc/bitfield.h +++ linux-3.5.0/drivers/net/ethernet/sfc/bitfield.h @@ -120,10 +120,10 @@ * [0,high-low), with garbage in bits [high-low+1,...). */ #define EFX_EXTRACT_NATIVE(native_element, min, max, low, high) \ - (((low > max) || (high < min)) ? 0 : \ - ((low > min) ? \ - ((native_element) >> (low - min)) : \ - ((native_element) << (min - low)))) + ((low) > (max) || (high) < (min) ? 0 : \ + (low) > (min) ? \ + (native_element) >> ((low) - (min)) : \ + (native_element) << ((min) - (low))) /* * Extract bit field portion [low,high) from the 64-bit little-endian @@ -142,27 +142,27 @@ #define EFX_EXTRACT_OWORD64(oword, low, high) \ ((EFX_EXTRACT64((oword).u64[0], 0, 63, low, high) | \ EFX_EXTRACT64((oword).u64[1], 64, 127, low, high)) & \ - EFX_MASK64(high + 1 - low)) + EFX_MASK64((high) + 1 - (low))) #define EFX_EXTRACT_QWORD64(qword, low, high) \ (EFX_EXTRACT64((qword).u64[0], 0, 63, low, high) & \ - EFX_MASK64(high + 1 - low)) + EFX_MASK64((high) + 1 - (low))) #define EFX_EXTRACT_OWORD32(oword, low, high) \ ((EFX_EXTRACT32((oword).u32[0], 0, 31, low, high) | \ EFX_EXTRACT32((oword).u32[1], 32, 63, low, high) | \ EFX_EXTRACT32((oword).u32[2], 64, 95, low, high) | \ EFX_EXTRACT32((oword).u32[3], 96, 127, low, high)) & \ - EFX_MASK32(high + 1 - low)) + EFX_MASK32((high) + 1 - (low))) #define EFX_EXTRACT_QWORD32(qword, low, high) \ ((EFX_EXTRACT32((qword).u32[0], 0, 31, low, high) | \ EFX_EXTRACT32((qword).u32[1], 32, 63, low, high)) & \ - EFX_MASK32(high + 1 - low)) + EFX_MASK32((high) + 1 - (low))) #define EFX_EXTRACT_DWORD(dword, low, high) \ (EFX_EXTRACT32((dword).u32[0], 0, 31, low, high) & \ - EFX_MASK32(high + 1 - low)) + EFX_MASK32((high) + 1 - (low))) #define EFX_OWORD_FIELD64(oword, field) \ EFX_EXTRACT_OWORD64(oword, EFX_LOW_BIT(field), \ @@ -442,10 +442,10 @@ cpu_to_le32(EFX_INSERT_NATIVE(min, max, low, high, value)) #define EFX_INPLACE_MASK64(min, max, low, high) \ - EFX_INSERT64(min, max, low, high, EFX_MASK64(high + 1 - low)) + EFX_INSERT64(min, max, low, high, EFX_MASK64((high) + 1 - (low))) #define EFX_INPLACE_MASK32(min, max, low, high) \ - EFX_INSERT32(min, max, low, high, EFX_MASK32(high + 1 - low)) + EFX_INSERT32(min, max, low, high, EFX_MASK32((high) + 1 - (low))) #define EFX_SET_OWORD64(oword, low, high, value) do { \ (oword).u64[0] = (((oword).u64[0] \ --- linux-3.5.0.orig/drivers/net/ethernet/sfc/falcon.c +++ linux-3.5.0/drivers/net/ethernet/sfc/falcon.c @@ -25,9 +25,12 @@ #include "io.h" #include "phy.h" #include "workarounds.h" +#include "selftest.h" /* Hardware control for SFC4000 (aka Falcon). */ +static int falcon_reset_hw(struct efx_nic *efx, enum reset_type method); + static const unsigned int /* "Large" EEPROM device: Atmel AT25640 or similar * 8 KB, 16-bit address, 32 B write block */ @@ -1034,10 +1037,34 @@ EFX_OWORD32(0x0003FF0F, 0x00000000, 0x00000000, 0x00000000) }, }; -static int falcon_b0_test_registers(struct efx_nic *efx) +static int +falcon_b0_test_chip(struct efx_nic *efx, struct efx_self_tests *tests) { - return efx_nic_test_registers(efx, falcon_b0_register_tests, - ARRAY_SIZE(falcon_b0_register_tests)); + enum reset_type reset_method = RESET_TYPE_INVISIBLE; + int rc, rc2; + + mutex_lock(&efx->mac_lock); + if (efx->loopback_modes) { + /* We need the 312 clock from the PHY to test the XMAC + * registers, so move into XGMII loopback if available */ + if (efx->loopback_modes & (1 << LOOPBACK_XGMII)) + efx->loopback_mode = LOOPBACK_XGMII; + else + efx->loopback_mode = __ffs(efx->loopback_modes); + } + __efx_reconfigure_port(efx); + mutex_unlock(&efx->mac_lock); + + efx_reset_down(efx, reset_method); + + tests->registers = + efx_nic_test_registers(efx, falcon_b0_register_tests, + ARRAY_SIZE(falcon_b0_register_tests)) + ? -1 : 1; + + rc = falcon_reset_hw(efx, reset_method); + rc2 = efx_reset_up(efx, reset_method, rc == 0); + return rc ? rc : rc2; } /************************************************************************** @@ -1765,6 +1792,7 @@ .remove_port = falcon_remove_port, .handle_global_event = falcon_handle_global_event, .prepare_flush = falcon_prepare_flush, + .finish_flush = efx_port_dummy_op_void, .update_stats = falcon_update_nic_stats, .start_stats = falcon_start_nic_stats, .stop_stats = falcon_stop_nic_stats, @@ -1807,6 +1835,7 @@ .remove_port = falcon_remove_port, .handle_global_event = falcon_handle_global_event, .prepare_flush = falcon_prepare_flush, + .finish_flush = efx_port_dummy_op_void, .update_stats = falcon_update_nic_stats, .start_stats = falcon_start_nic_stats, .stop_stats = falcon_stop_nic_stats, @@ -1818,7 +1847,7 @@ .get_wol = falcon_get_wol, .set_wol = falcon_set_wol, .resume_wol = efx_port_dummy_op_void, - .test_registers = falcon_b0_test_registers, + .test_chip = falcon_b0_test_chip, .test_nvram = falcon_test_nvram, .revision = EFX_REV_FALCON_B0, --- linux-3.5.0.orig/drivers/net/ethernet/sfc/efx.h +++ linux-3.5.0/drivers/net/ethernet/sfc/efx.h @@ -30,6 +30,7 @@ efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb); extern void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); extern int efx_setup_tc(struct net_device *net_dev, u8 num_tc); +extern unsigned int efx_tx_max_skb_descs(struct efx_nic *efx); /* RX */ extern int efx_probe_rx_queue(struct efx_rx_queue *rx_queue); @@ -52,10 +53,15 @@ #define EFX_MAX_EVQ_SIZE 16384UL #define EFX_MIN_EVQ_SIZE 512UL -/* The smallest [rt]xq_entries that the driver supports. Callers of - * efx_wake_queue() assume that they can subsequently send at least one - * skb. Falcon/A1 may require up to three descriptors per skb_frag. */ -#define EFX_MIN_RING_SIZE (roundup_pow_of_two(2 * 3 * MAX_SKB_FRAGS)) +/* Maximum number of TCP segments we support for soft-TSO */ +#define EFX_TSO_MAX_SEGS 100 + +/* The smallest [rt]xq_entries that the driver supports. RX minimum + * is a bit arbitrary. For TX, we must have space for at least 2 + * TSO skbs. + */ +#define EFX_RXQ_MIN_ENT 128U +#define EFX_TXQ_MIN_ENT(efx) (2 * efx_tx_max_skb_descs(efx)) /* Filters */ extern int efx_probe_filters(struct efx_nic *efx); @@ -156,4 +162,17 @@ extern void efx_link_set_advertising(struct efx_nic *efx, u32); extern void efx_link_set_wanted_fc(struct efx_nic *efx, u8); +static inline void efx_device_detach_sync(struct efx_nic *efx) +{ + struct net_device *dev = efx->net_dev; + + /* Lock/freeze all TX queues so that we can be sure the + * TX scheduler is stopped when we're done and before + * netif_device_present() becomes false. + */ + netif_tx_lock_bh(dev); + netif_device_detach(dev); + netif_tx_unlock_bh(dev); +} + #endif /* EFX_EFX_H */ --- linux-3.5.0.orig/drivers/net/ethernet/calxeda/Kconfig +++ linux-3.5.0/drivers/net/ethernet/calxeda/Kconfig @@ -1,6 +1,6 @@ config NET_CALXEDA_XGMAC tristate "Calxeda 1G/10G XGMAC Ethernet driver" - depends on HAS_IOMEM + depends on HAS_IOMEM && ARM select CRC32 help This is the driver for the XGMAC Ethernet IP block found on Calxeda --- linux-3.5.0.orig/drivers/net/ethernet/calxeda/xgmac.c +++ linux-3.5.0/drivers/net/ethernet/calxeda/xgmac.c @@ -191,6 +191,7 @@ #define DMA_CONTROL_ST 0x00002000 /* Start/Stop Transmission */ #define DMA_CONTROL_SR 0x00000002 /* Start/Stop Receive */ #define DMA_CONTROL_DFF 0x01000000 /* Disable flush of rx frames */ +#define DMA_CONTROL_OSF 0x00000004 /* Operate on 2nd tx frame */ /* DMA Normal interrupt */ #define DMA_INTR_ENA_NIE 0x00010000 /* Normal Summary */ @@ -210,7 +211,7 @@ #define DMA_INTR_ENA_TIE 0x00000001 /* Transmit Interrupt */ #define DMA_INTR_NORMAL (DMA_INTR_ENA_NIE | DMA_INTR_ENA_RIE | \ - DMA_INTR_ENA_TUE) + DMA_INTR_ENA_TUE | DMA_INTR_ENA_TIE) #define DMA_INTR_ABNORMAL (DMA_INTR_ENA_AIE | DMA_INTR_ENA_FBE | \ DMA_INTR_ENA_RWE | DMA_INTR_ENA_RSE | \ @@ -264,7 +265,7 @@ #define XGMAC_OMR_FEF 0x00000080 /* Forward Error Frames */ #define XGMAC_OMR_DT 0x00000040 /* Drop TCP/IP csum Errors */ #define XGMAC_OMR_RSF 0x00000020 /* RX FIFO Store and Forward */ -#define XGMAC_OMR_RTC 0x00000010 /* RX Threshhold Ctrl */ +#define XGMAC_OMR_RTC_256 0x00000018 /* RX Threshhold Ctrl */ #define XGMAC_OMR_RTC_MASK 0x00000018 /* RX Threshhold Ctrl MASK */ /* XGMAC HW Features Register */ @@ -373,9 +374,9 @@ struct sk_buff **tx_skbuff; unsigned int tx_head; unsigned int tx_tail; + int tx_irq_cnt; void __iomem *base; - struct sk_buff_head rx_recycle; unsigned int dma_buf_sz; dma_addr_t dma_rx_phy; dma_addr_t dma_tx_phy; @@ -547,6 +548,10 @@ return -1; } + /* All frames should fit into a single buffer */ + if (!(status & RXDESC_FIRST_SEG) || !(status & RXDESC_LAST_SEG)) + return -1; + /* Check if packet has checksum already */ if ((status & RXDESC_FRAME_TYPE) && (status & RXDESC_EXT_STATUS) && !(ext_status & RXDESC_IP_PAYLOAD_MASK)) @@ -671,26 +676,21 @@ p = priv->dma_rx + entry; - if (priv->rx_skbuff[entry] != NULL) - continue; - - skb = __skb_dequeue(&priv->rx_recycle); - if (skb == NULL) + if (priv->rx_skbuff[entry] == NULL) { skb = netdev_alloc_skb(priv->dev, priv->dma_buf_sz); - if (unlikely(skb == NULL)) - break; + if (unlikely(skb == NULL)) + break; - priv->rx_skbuff[entry] = skb; - paddr = dma_map_single(priv->device, skb->data, - priv->dma_buf_sz, DMA_FROM_DEVICE); - desc_set_buf_addr(p, paddr, priv->dma_buf_sz); + priv->rx_skbuff[entry] = skb; + paddr = dma_map_single(priv->device, skb->data, + priv->dma_buf_sz, DMA_FROM_DEVICE); + desc_set_buf_addr(p, paddr, priv->dma_buf_sz); + } netdev_dbg(priv->dev, "rx ring: head %d, tail %d\n", priv->rx_head, priv->rx_tail); priv->rx_head = dma_ring_incr(priv->rx_head, DMA_RX_RING_SZ); - /* Ensure descriptor is in memory before handing to h/w */ - wmb(); desc_set_rx_owner(p); } } @@ -853,8 +853,6 @@ int i; void __iomem *ioaddr = priv->base; - writel(DMA_STATUS_TU | DMA_STATUS_NIS, ioaddr + XGMAC_DMA_STATUS); - while (dma_ring_cnt(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ)) { unsigned int entry = priv->tx_tail; struct sk_buff *skb = priv->tx_skbuff[entry]; @@ -890,21 +888,11 @@ desc_get_buf_len(p), DMA_TO_DEVICE); } - /* - * If there's room in the queue (limit it to size) - * we add this skb back into the pool, - * if it's the right size. - */ - if ((skb_queue_len(&priv->rx_recycle) < - DMA_RX_RING_SZ) && - skb_recycle_check(skb, priv->dma_buf_sz)) - __skb_queue_head(&priv->rx_recycle, skb); - else - dev_kfree_skb(skb); + dev_kfree_skb(skb); } if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) > - TX_THRESH) + MAX_SKB_FRAGS) netif_wake_queue(priv->dev); } @@ -933,6 +921,7 @@ desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ); priv->tx_tail = 0; priv->tx_head = 0; + writel(priv->dma_tx_phy, priv->base + XGMAC_DMA_TX_BASE_ADDR); writel(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL); writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS, @@ -972,7 +961,7 @@ writel(DMA_INTR_DEFAULT_MASK, ioaddr + XGMAC_DMA_INTR_ENA); /* XGMAC requires AXI bus init. This is a 'magic number' for now */ - writel(0x000100E, ioaddr + XGMAC_DMA_AXI_BUS); + writel(0x0077000E, ioaddr + XGMAC_DMA_AXI_BUS); ctrl |= XGMAC_CONTROL_DDIC | XGMAC_CONTROL_JE | XGMAC_CONTROL_ACS | XGMAC_CONTROL_CAR; @@ -980,11 +969,11 @@ ctrl |= XGMAC_CONTROL_IPC; writel(ctrl, ioaddr + XGMAC_CONTROL); - value = DMA_CONTROL_DFF; - writel(value, ioaddr + XGMAC_DMA_CONTROL); + writel(DMA_CONTROL_OSF, ioaddr + XGMAC_DMA_CONTROL); /* Set the HW DMA mode and the COE */ - writel(XGMAC_OMR_TSF | XGMAC_OMR_RSF | XGMAC_OMR_RFD | XGMAC_OMR_RFA, + writel(XGMAC_OMR_TSF | XGMAC_OMR_RFD | XGMAC_OMR_RFA | + XGMAC_OMR_RTC_256, ioaddr + XGMAC_OMR); /* Reset the MMC counters */ @@ -1017,7 +1006,6 @@ dev->dev_addr); } - skb_queue_head_init(&priv->rx_recycle); memset(&priv->xstats, 0, sizeof(struct xgmac_extra_stats)); /* Initialize the XGMAC and descriptors */ @@ -1054,7 +1042,6 @@ napi_disable(&priv->napi); writel(0, priv->base + XGMAC_DMA_INTR_ENA); - skb_queue_purge(&priv->rx_recycle); /* Disable the MAC core */ xgmac_mac_disable(priv->base); @@ -1076,19 +1063,15 @@ struct xgmac_priv *priv = netdev_priv(dev); unsigned int entry; int i; + u32 irq_flag; int nfrags = skb_shinfo(skb)->nr_frags; struct xgmac_dma_desc *desc, *first; unsigned int desc_flags; unsigned int len; dma_addr_t paddr; - if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) < - (nfrags + 1)) { - writel(DMA_INTR_DEFAULT_MASK | DMA_INTR_ENA_TIE, - priv->base + XGMAC_DMA_INTR_ENA); - netif_stop_queue(dev); - return NETDEV_TX_BUSY; - } + priv->tx_irq_cnt = (priv->tx_irq_cnt + 1) & (DMA_TX_RING_SZ/4 - 1); + irq_flag = priv->tx_irq_cnt ? 0 : TXDESC_INTERRUPT; desc_flags = (skb->ip_summed == CHECKSUM_PARTIAL) ? TXDESC_CSUM_ALL : 0; @@ -1129,9 +1112,9 @@ /* Interrupt on completition only for the latest segment */ if (desc != first) desc_set_tx_owner(desc, desc_flags | - TXDESC_LAST_SEG | TXDESC_INTERRUPT); + TXDESC_LAST_SEG | irq_flag); else - desc_flags |= TXDESC_LAST_SEG | TXDESC_INTERRUPT; + desc_flags |= TXDESC_LAST_SEG | irq_flag; /* Set owner on first desc last to avoid race condition */ wmb(); @@ -1140,6 +1123,9 @@ priv->tx_head = dma_ring_incr(entry, DMA_TX_RING_SZ); writel(1, priv->base + XGMAC_DMA_TX_POLL); + if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) < + MAX_SKB_FRAGS) + netif_stop_queue(dev); return NETDEV_TX_OK; } @@ -1155,9 +1141,6 @@ struct sk_buff *skb; int frame_len; - writel(DMA_STATUS_RI | DMA_STATUS_NIS, - priv->base + XGMAC_DMA_STATUS); - entry = priv->rx_tail; p = priv->dma_rx + entry; if (desc_get_owner(p)) @@ -1196,8 +1179,6 @@ xgmac_rx_refill(priv); - writel(1, priv->base + XGMAC_DMA_RX_POLL); - return count; } @@ -1221,7 +1202,7 @@ if (work_done < budget) { napi_complete(napi); - writel(DMA_INTR_DEFAULT_MASK, priv->base + XGMAC_DMA_INTR_ENA); + writel_relaxed(DMA_INTR_DEFAULT_MASK, priv->base + XGMAC_DMA_INTR_ENA); } return work_done; } @@ -1366,7 +1347,7 @@ struct xgmac_priv *priv = netdev_priv(dev); void __iomem *ioaddr = priv->base; - intr_status = readl(ioaddr + XGMAC_INT_STAT); + intr_status = readl_relaxed(ioaddr + XGMAC_INT_STAT); if (intr_status & XGMAC_INT_STAT_PMT) { netdev_dbg(priv->dev, "received Magic frame\n"); /* clear the PMT bits 5 and 6 by reading the PMT */ @@ -1384,9 +1365,9 @@ struct xgmac_extra_stats *x = &priv->xstats; /* read the status register (CSR5) */ - intr_status = readl(priv->base + XGMAC_DMA_STATUS); - intr_status &= readl(priv->base + XGMAC_DMA_INTR_ENA); - writel(intr_status, priv->base + XGMAC_DMA_STATUS); + intr_status = readl_relaxed(priv->base + XGMAC_DMA_STATUS); + intr_status &= readl_relaxed(priv->base + XGMAC_DMA_INTR_ENA); + writel_relaxed(intr_status, priv->base + XGMAC_DMA_STATUS); /* It displays the DMA process states (CSR5 register) */ /* ABNORMAL interrupts */ @@ -1421,8 +1402,8 @@ } /* TX/RX NORMAL interrupts */ - if (intr_status & (DMA_STATUS_RI | DMA_STATUS_TU)) { - writel(DMA_INTR_ABNORMAL, priv->base + XGMAC_DMA_INTR_ENA); + if (intr_status & (DMA_STATUS_RI | DMA_STATUS_TU | DMA_STATUS_TI)) { + writel_relaxed(DMA_INTR_ABNORMAL, priv->base + XGMAC_DMA_INTR_ENA); napi_schedule(&priv->napi); } --- linux-3.5.0.orig/drivers/net/ethernet/nxp/lpc_eth.c +++ linux-3.5.0/drivers/net/ethernet/nxp/lpc_eth.c @@ -1543,6 +1543,7 @@ pldat->dma_buff_base_p); free_irq(ndev->irq, ndev); iounmap(pldat->net_base); + mdiobus_unregister(pldat->mii_bus); mdiobus_free(pldat->mii_bus); clk_disable(pldat->clk); clk_put(pldat->clk); --- linux-3.5.0.orig/drivers/net/ethernet/micrel/ks8851.c +++ linux-3.5.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-3.5.0.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +++ linux-3.5.0/drivers/net/ethernet/atheros/atl1e/atl1e_main.c @@ -1870,34 +1870,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"); @@ -2367,6 +2352,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-3.5.0.orig/drivers/net/ethernet/atheros/atl1e/atl1e.h +++ linux-3.5.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-3.5.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h +++ linux-3.5.0/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h @@ -74,6 +74,8 @@ #define PCI_DEVICE_ID_ATHEROS_L1D_2_0 0x1083 /* AR8151 v2.0 Gigabit 1000 */ #define L2CB_V10 0xc0 #define L2CB_V11 0xc1 +#define L2CB_V20 0xc0 +#define L2CB_V21 0xc1 /* register definition */ #define REG_DEVICE_CAP 0x5C @@ -87,6 +89,9 @@ #define LINK_CTRL_L1_EN 0x02 #define LINK_CTRL_EXT_SYNC 0x80 +#define REG_PCIE_IND_ACC_ADDR 0x80 +#define REG_PCIE_IND_ACC_DATA 0x84 + #define REG_DEV_SERIALNUM_CTRL 0x200 #define REG_DEV_MAC_SEL_MASK 0x0 /* 0:EUI; 1:MAC */ #define REG_DEV_MAC_SEL_SHIFT 0 --- linux-3.5.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ linux-3.5.0/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@ -739,6 +739,8 @@ static void __devinit atl1c_patch_assign(struct atl1c_hw *hw) { + struct pci_dev *pdev = hw->adapter->pdev; + u32 misc_ctrl; int i = 0; hw->msi_lnkpatch = false; @@ -753,6 +755,18 @@ } i++; } + + if (hw->device_id == PCI_DEVICE_ID_ATHEROS_L2C_B2 && + hw->revision_id == L2CB_V21) { + /* config acess mode */ + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_ADDR, + REG_PCIE_DEV_MISC_CTRL); + pci_read_config_dword(pdev, REG_PCIE_IND_ACC_DATA, &misc_ctrl); + misc_ctrl &= ~0x100; + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_ADDR, + REG_PCIE_DEV_MISC_CTRL); + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_DATA, misc_ctrl); + } } /* * atl1c_sw_init - Initialize general software structures (struct atl1c_adapter) @@ -780,7 +794,7 @@ hw->device_id = pdev->device; hw->subsystem_vendor_id = pdev->subsystem_vendor; hw->subsystem_id = pdev->subsystem_device; - AT_READ_REG(hw, PCI_CLASS_REVISION, &revision); + pci_read_config_dword(pdev, PCI_CLASS_REVISION, &revision); hw->revision_id = revision & 0xFF; /* before link up, we assume hibernate is true */ hw->hibernate = true; --- linux-3.5.0.orig/drivers/net/ethernet/ibm/ibmveth.c +++ linux-3.5.0/drivers/net/ethernet/ibm/ibmveth.c @@ -472,14 +472,9 @@ } if (adapter->rx_queue.queue_addr != NULL) { - if (!dma_mapping_error(dev, adapter->rx_queue.queue_dma)) { - dma_unmap_single(dev, - adapter->rx_queue.queue_dma, - adapter->rx_queue.queue_len, - DMA_BIDIRECTIONAL); - adapter->rx_queue.queue_dma = DMA_ERROR_CODE; - } - kfree(adapter->rx_queue.queue_addr); + dma_free_coherent(dev, adapter->rx_queue.queue_len, + adapter->rx_queue.queue_addr, + adapter->rx_queue.queue_dma); adapter->rx_queue.queue_addr = NULL; } @@ -556,10 +551,13 @@ goto err_out; } + dev = &adapter->vdev->dev; + adapter->rx_queue.queue_len = sizeof(struct ibmveth_rx_q_entry) * rxq_entries; - adapter->rx_queue.queue_addr = kmalloc(adapter->rx_queue.queue_len, - GFP_KERNEL); + adapter->rx_queue.queue_addr = + dma_alloc_coherent(dev, adapter->rx_queue.queue_len, + &adapter->rx_queue.queue_dma, GFP_KERNEL); if (!adapter->rx_queue.queue_addr) { netdev_err(netdev, "unable to allocate rx queue pages\n"); @@ -567,19 +565,13 @@ goto err_out; } - dev = &adapter->vdev->dev; - adapter->buffer_list_dma = dma_map_single(dev, adapter->buffer_list_addr, 4096, DMA_BIDIRECTIONAL); adapter->filter_list_dma = dma_map_single(dev, adapter->filter_list_addr, 4096, DMA_BIDIRECTIONAL); - adapter->rx_queue.queue_dma = dma_map_single(dev, - adapter->rx_queue.queue_addr, - adapter->rx_queue.queue_len, DMA_BIDIRECTIONAL); if ((dma_mapping_error(dev, adapter->buffer_list_dma)) || - (dma_mapping_error(dev, adapter->filter_list_dma)) || - (dma_mapping_error(dev, adapter->rx_queue.queue_dma))) { + (dma_mapping_error(dev, adapter->filter_list_dma))) { netdev_err(netdev, "unable to map filter or buffer list " "pages\n"); rc = -ENOMEM; @@ -1335,7 +1327,7 @@ static int __devinit 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; @@ -1345,11 +1337,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); @@ -1374,17 +1374,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-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -660,18 +660,7 @@ priv->hw->ring->clean_desc3(p); if (likely(skb != NULL)) { - /* - * If there's room in the queue (limit it to size) - * we add this skb back into the pool, - * if it's the right size. - */ - if ((skb_queue_len(&priv->rx_recycle) < - priv->dma_rx_size) && - skb_recycle_check(skb, priv->dma_buf_sz)) - __skb_queue_head(&priv->rx_recycle, skb); - else - dev_kfree_skb(skb); - + dev_kfree_skb(skb); priv->tx_skbuff[entry] = NULL; } @@ -1063,7 +1052,6 @@ phy_start(priv->phydev); napi_enable(&priv->napi); - skb_queue_head_init(&priv->rx_recycle); netif_start_queue(dev); return 0; @@ -1109,7 +1097,6 @@ kfree(priv->tm); #endif napi_disable(&priv->napi); - skb_queue_purge(&priv->rx_recycle); /* Free the IRQ lines */ free_irq(dev->irq, dev); @@ -1270,10 +1257,7 @@ if (likely(priv->rx_skbuff[entry] == NULL)) { struct sk_buff *skb; - skb = __skb_dequeue(&priv->rx_recycle); - if (skb == NULL) - skb = netdev_alloc_skb_ip_align(priv->dev, - bfsize); + skb = netdev_alloc_skb_ip_align(priv->dev, bfsize); if (unlikely(skb == NULL)) break; --- linux-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -47,7 +47,6 @@ unsigned int dirty_rx; struct sk_buff **rx_skbuff; dma_addr_t *rx_skbuff_dma; - struct sk_buff_head rx_recycle; struct net_device *dev; dma_addr_t dma_rx_phy; --- linux-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/mmc_core.c +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/mmc_core.c @@ -23,7 +23,9 @@ *******************************************************************************/ #include +#include #include +#include #include "mmc.h" /* MAC Management Counters register offset */ --- linux-3.5.0.orig/drivers/net/ethernet/sis/sis900.c +++ linux-3.5.0/drivers/net/ethernet/sis/sis900.c @@ -2477,7 +2477,7 @@ netif_start_queue(net_dev); /* Workaround for EDB */ - sis900_set_mode(ioaddr, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); + sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); /* Enable all known interrupts by setting the interrupt mask. */ sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE); --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/main.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/main.c @@ -1545,15 +1545,8 @@ int i; if (msi_x) { - /* In multifunction mode each function gets 2 msi-X vectors - * one for data path completions anf the other for asynch events - * or command completions */ - if (mlx4_is_mfunc(dev)) { - nreq = 2; - } else { - nreq = min_t(int, dev->caps.num_eqs - - dev->caps.reserved_eqs, nreq); - } + nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs, + nreq); entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL); if (!entries) --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/eq.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/eq.c @@ -203,6 +203,7 @@ struct mlx4_slave_state *slave_state = priv->mfunc.master.slave_state; int i; int err; + unsigned long flags; mlx4_dbg(dev, "mlx4_handle_slave_flr\n"); @@ -214,10 +215,10 @@ mlx4_delete_all_resources_for_slave(dev, i); /*return the slave to running mode*/ - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); slave_state[i].last_cmd = MLX4_COMM_CMD_RESET; slave_state[i].is_slave_going_down = 0; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); /*notify the FW:*/ err = mlx4_cmd(dev, 0, i, 0, MLX4_CMD_INFORM_FLR_DONE, MLX4_CMD_TIME_CLASS_A, MLX4_CMD_WRAPPED); @@ -241,6 +242,7 @@ u32 flr_slave; u8 update_slave_state; int i; + unsigned long flags; while ((eqe = next_eqe_sw(eq))) { /* @@ -434,13 +436,13 @@ } else update_slave_state = 1; - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (update_slave_state) { priv->mfunc.master.slave_state[flr_slave].active = false; priv->mfunc.master.slave_state[flr_slave].last_cmd = MLX4_COMM_CMD_FLR; priv->mfunc.master.slave_state[flr_slave].is_slave_going_down = 1; } - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); queue_work(priv->mfunc.master.comm_wq, &priv->mfunc.master.slave_flr_event_work); break; --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/cmd.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/cmd.c @@ -1256,6 +1256,7 @@ u32 reply; u8 is_going_down = 0; int i; + unsigned long flags; slave_state[slave].comm_toggle ^= 1; reply = (u32) slave_state[slave].comm_toggle << 31; @@ -1330,12 +1331,12 @@ mlx4_warn(dev, "Bad comm cmd:%d from slave:%d\n", cmd, slave); goto reset_slave; } - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (!slave_state[slave].is_slave_going_down) slave_state[slave].last_cmd = cmd; else is_going_down = 1; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); if (is_going_down) { mlx4_warn(dev, "Slave is going down aborting command(%d)" " executing from slave:%d\n", @@ -1351,10 +1352,10 @@ reset_slave: /* cleanup any slave resources */ mlx4_delete_all_resources_for_slave(dev, slave); - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (!slave_state[slave].is_slave_going_down) slave_state[slave].last_cmd = MLX4_COMM_CMD_RESET; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); /*with slave in the middle of flr, no need to clean resources again.*/ inform_slave_state: memset(&slave_state[slave].event_eq, 0, --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -633,10 +633,15 @@ ring->tx_csum++; } - /* Copy dst mac address to wqe */ - ethh = (struct ethhdr *)skb->data; - tx_desc->ctrl.srcrb_flags16[0] = get_unaligned((__be16 *)ethh->h_dest); - tx_desc->ctrl.imm = get_unaligned((__be32 *)(ethh->h_dest + 2)); + if (mlx4_is_mfunc(mdev->dev) || priv->validate_loopback) { + /* Copy dst mac address to wqe. This allows loopback in eSwitch, + * so that VFs and PF can communicate with each other + */ + ethh = (struct ethhdr *)skb->data; + tx_desc->ctrl.srcrb_flags16[0] = get_unaligned((__be16 *)ethh->h_dest); + tx_desc->ctrl.imm = get_unaligned((__be32 *)(ethh->h_dest + 2)); + } + /* Handle LSO (TSO) packets */ if (lso_header_size) { /* Mark opcode as LSO */ --- linux-3.5.0.orig/drivers/net/ethernet/8390/ne.c +++ linux-3.5.0/drivers/net/ethernet/8390/ne.c @@ -813,6 +813,7 @@ dev->irq = irq[this_dev]; dev->mem_end = bad[this_dev]; } + SET_NETDEV_DEV(dev, &pdev->dev); err = do_ne_probe(dev); if (err) { free_netdev(dev); --- linux-3.5.0.orig/drivers/net/ppp/pptp.c +++ linux-3.5.0/drivers/net/ppp/pptp.c @@ -189,7 +189,7 @@ if (sk_pppox(po)->sk_state & PPPOX_DEAD) goto tx_error; - rt = ip_route_output_ports(&init_net, &fl4, NULL, + rt = ip_route_output_ports(sock_net(sk), &fl4, NULL, opt->dst_addr.sin_addr.s_addr, opt->src_addr.sin_addr.s_addr, 0, 0, IPPROTO_GRE, @@ -468,7 +468,7 @@ po->chan.private = sk; po->chan.ops = &pptp_chan_ops; - rt = ip_route_output_ports(&init_net, &fl4, sk, + rt = ip_route_output_ports(sock_net(sk), &fl4, sk, opt->dst_addr.sin_addr.s_addr, opt->src_addr.sin_addr.s_addr, 0, 0, --- linux-3.5.0.orig/drivers/net/ppp/pppoe.c +++ linux-3.5.0/drivers/net/ppp/pppoe.c @@ -570,7 +570,7 @@ po = pppox_sk(sk); - if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { + if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { dev_put(po->pppoe_dev); po->pppoe_dev = NULL; } --- linux-3.5.0.orig/drivers/net/caif/caif_serial.c +++ linux-3.5.0/drivers/net/caif/caif_serial.c @@ -325,6 +325,9 @@ sprintf(name, "cf%s", tty->name); dev = alloc_netdev(sizeof(*ser), name, caifdev_setup); + if (!dev) + return -ENOMEM; + ser = netdev_priv(dev); ser->tty = tty_kref_get(tty); ser->dev = dev; --- linux-3.5.0.orig/drivers/net/bonding/bonding.h +++ linux-3.5.0/drivers/net/bonding/bonding.h @@ -22,6 +22,7 @@ #include #include #include +#include #include "bond_3ad.h" #include "bond_alb.h" @@ -450,6 +451,18 @@ } #endif +static inline struct slave *bond_slave_has_mac(struct bonding *bond, + const u8 *mac) +{ + int i = 0; + struct slave *tmp; + + bond_for_each_slave(bond, tmp, i) + if (ether_addr_equal_64bits(mac, tmp->dev->dev_addr)) + return tmp; + + return NULL; +} /* exported from bond_main.c */ extern int bond_net_id; --- linux-3.5.0.orig/drivers/net/bonding/bond_alb.c +++ linux-3.5.0/drivers/net/bonding/bond_alb.c @@ -704,6 +704,12 @@ struct arp_pkt *arp = arp_pkt(skb); struct slave *tx_slave = NULL; + /* Don't modify or load balance ARPs that do not originate locally + * (e.g.,arrive via a bridge). + */ + if (!bond_slave_has_mac(bond, arp->mac_src)) + return NULL; + if (arp->op_code == htons(ARPOP_REPLY)) { /* the arp must be sent on the selected * rx channel --- linux-3.5.0.orig/drivers/net/bonding/bond_sysfs.c +++ linux-3.5.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; } @@ -513,6 +518,8 @@ int new_value, ret = count; struct bonding *bond = to_bond(d); + if (!rtnl_trylock()) + return restart_syscall(); if (sscanf(buf, "%d", &new_value) != 1) { pr_err("%s: no arp_interval value specified.\n", bond->dev->name); @@ -520,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; @@ -535,18 +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 (delayed_work_pending(&bond->mii_work)) { - cancel_delayed_work(&bond->mii_work); - flush_workqueue(bond->wq); + 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->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 @@ -554,19 +558,15 @@ * timer will get fired off when the open function * is called. */ - if (!delayed_work_pending(&bond->arp_work)) { - if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) - INIT_DELAYED_WORK(&bond->arp_work, - bond_activebackup_arp_mon); - else - INIT_DELAYED_WORK(&bond->arp_work, - bond_loadbalance_arp_mon); - + 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; } static DEVICE_ATTR(arp_interval, S_IRUGO | S_IWUSR, @@ -706,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 { @@ -761,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 { @@ -962,6 +962,8 @@ int new_value, ret = count; struct bonding *bond = to_bond(d); + if (!rtnl_trylock()) + return restart_syscall(); if (sscanf(buf, "%d", &new_value) != 1) { pr_err("%s: no miimon value specified.\n", bond->dev->name); @@ -970,50 +972,43 @@ } 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 (delayed_work_pending(&bond->arp_work)) { - cancel_delayed_work(&bond->arp_work); - flush_workqueue(bond->wq); - } - } - - 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 (!delayed_work_pending(&bond->mii_work)) { - INIT_DELAYED_WORK(&bond->mii_work, - bond_mii_monitor); - queue_delayed_work(bond->wq, - &bond->mii_work, 0); - } + } + 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); } } out: + rtnl_unlock(); return ret; } static DEVICE_ATTR(miimon, S_IRUGO | S_IWUSR, @@ -1582,6 +1577,7 @@ goto out; } + read_lock(&bond->lock); bond_for_each_slave(bond, slave, i) { if (!bond_is_active_slave(slave)) { if (new_value) @@ -1590,6 +1586,7 @@ slave->inactive = 1; } } + read_unlock(&bond->lock); out: return ret; } --- linux-3.5.0.orig/drivers/net/bonding/bond_main.c +++ linux-3.5.0/drivers/net/bonding/bond_main.c @@ -1383,6 +1383,8 @@ struct net_device *bond_dev = bond->dev; netdev_features_t vlan_features = BOND_VLAN_FEATURES; unsigned short max_hard_header_len = ETH_HLEN; + unsigned int gso_max_size = GSO_MAX_SIZE; + u16 gso_max_segs = GSO_MAX_SEGS; int i; read_lock(&bond->lock); @@ -1396,11 +1398,16 @@ if (slave->dev->hard_header_len > max_hard_header_len) max_hard_header_len = slave->dev->hard_header_len; + + gso_max_size = min(gso_max_size, slave->dev->gso_max_size); + gso_max_segs = min(gso_max_segs, slave->dev->gso_max_segs); } done: bond_dev->vlan_features = vlan_features; bond_dev->hard_header_len = max_hard_header_len; + bond_dev->gso_max_segs = gso_max_segs; + netif_set_gso_max_size(bond_dev, gso_max_size); read_unlock(&bond->lock); @@ -1730,6 +1737,8 @@ bond_compute_features(bond); + bond_update_speed_duplex(new_slave); + read_lock(&bond->lock); new_slave->last_arp_rx = jiffies - @@ -1782,8 +1791,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) { @@ -1890,6 +1897,7 @@ write_unlock_bh(&bond->lock); err_close: + slave_dev->priv_flags &= ~IFF_BONDING; dev_close(slave_dev); err_unset_master: @@ -1958,12 +1966,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) { @@ -2464,8 +2471,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"); @@ -3402,6 +3407,28 @@ /*-------------------------- Device entry points ----------------------------*/ +static void bond_work_init_all(struct bonding *bond) +{ + INIT_DELAYED_WORK(&bond->mcast_work, + bond_resend_igmp_join_requests_delayed); + INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor); + INIT_DELAYED_WORK(&bond->mii_work, bond_mii_monitor); + if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) + INIT_DELAYED_WORK(&bond->arp_work, bond_activebackup_arp_mon); + else + INIT_DELAYED_WORK(&bond->arp_work, bond_loadbalance_arp_mon); + INIT_DELAYED_WORK(&bond->ad_work, bond_3ad_state_machine_handler); +} + +static void bond_work_cancel_all(struct bonding *bond) +{ + cancel_delayed_work_sync(&bond->mii_work); + cancel_delayed_work_sync(&bond->arp_work); + cancel_delayed_work_sync(&bond->alb_work); + cancel_delayed_work_sync(&bond->ad_work); + cancel_delayed_work_sync(&bond->mcast_work); +} + static int bond_open(struct net_device *bond_dev) { struct bonding *bond = netdev_priv(bond_dev); @@ -3424,41 +3451,27 @@ } read_unlock(&bond->lock); - INIT_DELAYED_WORK(&bond->mcast_work, bond_resend_igmp_join_requests_delayed); + bond_work_init_all(bond); if (bond_is_lb(bond)) { /* bond_alb_initialize must be called before the timer * is started. */ - if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB))) { - /* something went wrong - fail the open operation */ + if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB))) return -ENOMEM; - } - - INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor); queue_delayed_work(bond->wq, &bond->alb_work, 0); } - if (bond->params.miimon) { /* link check interval, in milliseconds. */ - INIT_DELAYED_WORK(&bond->mii_work, bond_mii_monitor); + if (bond->params.miimon) /* link check interval, in milliseconds. */ queue_delayed_work(bond->wq, &bond->mii_work, 0); - } if (bond->params.arp_interval) { /* arp interval, in milliseconds. */ - if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) - INIT_DELAYED_WORK(&bond->arp_work, - bond_activebackup_arp_mon); - else - INIT_DELAYED_WORK(&bond->arp_work, - bond_loadbalance_arp_mon); - queue_delayed_work(bond->wq, &bond->arp_work, 0); if (bond->params.arp_validate) bond->recv_probe = bond_arp_rcv; } if (bond->params.mode == BOND_MODE_8023AD) { - INIT_DELAYED_WORK(&bond->ad_work, bond_3ad_state_machine_handler); queue_delayed_work(bond->wq, &bond->ad_work, 0); /* register to receive LACPDUs */ bond->recv_probe = bond_3ad_lacpdu_recv; @@ -3473,34 +3486,10 @@ struct bonding *bond = netdev_priv(bond_dev); write_lock_bh(&bond->lock); - bond->send_peer_notif = 0; - write_unlock_bh(&bond->lock); - if (bond->params.miimon) { /* link check interval, in milliseconds. */ - cancel_delayed_work_sync(&bond->mii_work); - } - - if (bond->params.arp_interval) { /* arp interval, in milliseconds. */ - cancel_delayed_work_sync(&bond->arp_work); - } - - switch (bond->params.mode) { - case BOND_MODE_8023AD: - cancel_delayed_work_sync(&bond->ad_work); - break; - case BOND_MODE_TLB: - case BOND_MODE_ALB: - cancel_delayed_work_sync(&bond->alb_work); - break; - default: - break; - } - - if (delayed_work_pending(&bond->mcast_work)) - cancel_delayed_work_sync(&bond->mcast_work); - + bond_work_cancel_all(bond); if (bond_is_lb(bond)) { /* Must be called only after all * slaves have been released @@ -4379,26 +4368,6 @@ bond_dev->features |= bond_dev->hw_features; } -static void bond_work_cancel_all(struct bonding *bond) -{ - if (bond->params.miimon && delayed_work_pending(&bond->mii_work)) - cancel_delayed_work_sync(&bond->mii_work); - - if (bond->params.arp_interval && delayed_work_pending(&bond->arp_work)) - cancel_delayed_work_sync(&bond->arp_work); - - if (bond->params.mode == BOND_MODE_ALB && - delayed_work_pending(&bond->alb_work)) - cancel_delayed_work_sync(&bond->alb_work); - - if (bond->params.mode == BOND_MODE_8023AD && - delayed_work_pending(&bond->ad_work)) - cancel_delayed_work_sync(&bond->ad_work); - - if (delayed_work_pending(&bond->mcast_work)) - cancel_delayed_work_sync(&bond->mcast_work); -} - /* * Destroy a bonding device. * Must be under rtnl_lock when this function is called. @@ -4902,9 +4871,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-3.5.0.orig/drivers/net/xen-netback/common.h +++ linux-3.5.0/drivers/net/xen-netback/common.h @@ -151,6 +151,9 @@ /* Notify xenvif that ring now has space to send an skb to the frontend */ void xenvif_notify_tx_completion(struct xenvif *vif); +/* Prevent the device from generating any further traffic. */ +void xenvif_carrier_off(struct xenvif *vif); + /* Returns number of ring slots required to send an skb to the frontend */ unsigned int xen_netbk_count_skb_slots(struct xenvif *vif, struct sk_buff *skb); --- linux-3.5.0.orig/drivers/net/xen-netback/netback.c +++ linux-3.5.0/drivers/net/xen-netback/netback.c @@ -46,11 +46,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; @@ -101,7 +123,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]; @@ -117,6 +143,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; @@ -146,7 +182,8 @@ atomic_dec(&netbk->netfront_count); } -static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx); +static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx, + u8 status); static void make_tx_response(struct xenvif *vif, struct xen_netif_tx_request *txp, s8 st); @@ -248,6 +285,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 */ @@ -625,6 +663,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; } @@ -850,7 +889,7 @@ do { make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - if (cons >= end) + if (cons == end) break; txp = RING_GET_REQUEST(&vif->tx, cons++); } while (1); @@ -859,49 +898,112 @@ xenvif_put(vif); } +static void netbk_fatal_tx_err(struct xenvif *vif) +{ + netdev_err(vif->dev, "fatal error; disabling device\n"); + xenvif_carrier_off(vif); + xenvif_put(vif); +} + static int netbk_count_requests(struct xenvif *vif, struct xen_netif_tx_request *first, struct xen_netif_tx_request *txp, 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_dbg(vif->dev, "Need more frags\n"); - return -frags; + 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 -ENODATA; } - if (unlikely(frags >= MAX_SKB_FRAGS)) { - netdev_dbg(vif->dev, "Too many frags\n"); - return -frags; + /* 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 -E2BIG; } - memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + frags), + /* 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; + } + + if (drop_err) + txp = &dropped_tx; + + memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + slots), sizeof(*txp)); - if (txp->size > first->size) { - netdev_dbg(vif->dev, "Frags galore\n"); - 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_dbg(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); - return -frags; + netbk_fatal_tx_err(vif); + 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; @@ -922,43 +1024,123 @@ 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) - return NULL; + 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 + * reponses. + */ + 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) + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); + + return NULL; } static int xen_netbk_tx_check_gop(struct xen_netbk *netbk, @@ -967,48 +1149,45 @@ { struct gnttab_copy *gop = *gopp; u16 pending_idx = *((u16 *)skb->data); - struct pending_tx_info *pending_tx_info = netbk->pending_tx_info; - struct xenvif *vif = pending_tx_info[pending_idx].vif; - struct xen_netif_tx_request *txp; struct skb_shared_info *shinfo = skb_shinfo(skb); + 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; - if (unlikely(err)) { - pending_ring_idx_t index; - index = pending_index(netbk->pending_prod++); - txp = &pending_tx_info[pending_idx].req; - make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - netbk->pending_ring[index] = pending_idx; - xenvif_put(vif); - } + if (unlikely(err)) + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); /* Skip first skb fragment if it is on same page as header fragment. */ start = (frag_get_pending_idx(&shinfo->frags[0]) == pending_idx); for (i = start; i < nr_frags; i++) { int j, newerr; - pending_ring_idx_t index; + pending_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)) - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); continue; } /* Error on this fragment: respond to client with an error. */ - txp = &netbk->pending_tx_info[pending_idx].req; - make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - index = pending_index(netbk->pending_prod++); - netbk->pending_ring[index] = pending_idx; - xenvif_put(vif); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); /* Not the first error? Preceding frags already invalidated. */ if (err) @@ -1016,10 +1195,10 @@ /* First error: invalidate header and preceding fragments. */ pending_idx = *((u16 *)skb->data); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); for (j = start; j < i; j++) { pending_idx = frag_get_pending_idx(&shinfo->frags[j]); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } /* Remember the error: invalidate all subsequent fragments. */ @@ -1053,7 +1232,7 @@ /* Take an extra reference to offset xen_netbk_idx_release */ get_page(netbk->mmap_pages[pending_idx]); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } } @@ -1066,7 +1245,8 @@ do { if (unlikely(work_to_do-- <= 0)) { - netdev_dbg(vif->dev, "Missing extra info\n"); + netdev_err(vif->dev, "Missing extra info\n"); + netbk_fatal_tx_err(vif); return -EBADR; } @@ -1075,8 +1255,9 @@ if (unlikely(!extra.type || extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) { vif->tx.req_cons = ++cons; - netdev_dbg(vif->dev, + netdev_err(vif->dev, "Invalid extra type: %d\n", extra.type); + netbk_fatal_tx_err(vif); return -EINVAL; } @@ -1092,13 +1273,15 @@ struct xen_netif_extra_info *gso) { if (!gso->u.gso.size) { - netdev_dbg(vif->dev, "GSO size must not be zero.\n"); + netdev_err(vif->dev, "GSO size must not be zero.\n"); + netbk_fatal_tx_err(vif); return -EINVAL; } /* Currently only TCPv4 S.O. is supported. */ if (gso->u.gso.type != XEN_NETIF_GSO_TYPE_TCPV4) { - netdev_dbg(vif->dev, "Bad GSO type %d.\n", gso->u.gso.type); + netdev_err(vif->dev, "Bad GSO type %d.\n", gso->u.gso.type); + netbk_fatal_tx_err(vif); return -EINVAL; } @@ -1220,11 +1403,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; @@ -1235,9 +1419,26 @@ /* Get a netif from the list with work to do. */ vif = poll_net_schedule_list(netbk); + /* + * This can sometimes happen because the test of + * list_empty(net_schedule_list) at the top of the + * loop is unlocked. Just go back and have another + * look. + */ if (!vif) continue; + if (vif->tx.sring->req_prod - vif->tx.req_cons > + XEN_NETIF_TX_RING_SIZE) { + netdev_err(vif->dev, + "Impossible number of requests. " + "req_prod %d, req_cons %d, size %ld\n", + vif->tx.sring->req_prod, vif->tx.req_cons, + XEN_NETIF_TX_RING_SIZE); + netbk_fatal_tx_err(vif); + continue; + } + RING_FINAL_CHECK_FOR_REQUESTS(&vif->tx, work_to_do); if (!work_to_do) { xenvif_put(vif); @@ -1265,17 +1466,14 @@ work_to_do = xen_netbk_get_extras(vif, extras, work_to_do); idx = vif->tx.req_cons; - if (unlikely(work_to_do < 0)) { - netbk_tx_err(vif, &txreq, idx); + if (unlikely(work_to_do < 0)) continue; - } } ret = netbk_count_requests(vif, &txreq, txfrags, work_to_do); - if (unlikely(ret < 0)) { - netbk_tx_err(vif, &txreq, idx - ret); + if (unlikely(ret < 0)) continue; - } + idx += ret; if (unlikely(txreq.size < ETH_HLEN)) { @@ -1287,11 +1485,11 @@ /* No crossing a page as the payload mustn't fragment. */ if (unlikely((txreq.offset + txreq.size) > PAGE_SIZE)) { - netdev_dbg(vif->dev, + netdev_err(vif->dev, "txreq.offset: %x, size: %u, end: %lu\n", txreq.offset, txreq.size, (txreq.offset&~PAGE_MASK) + txreq.size); - netbk_tx_err(vif, &txreq, idx); + netbk_fatal_tx_err(vif); continue; } @@ -1299,7 +1497,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, @@ -1319,14 +1517,14 @@ gso = &extras[XEN_NETIF_EXTRA_TYPE_GSO - 1]; if (netbk_set_skb_gso(vif, skb, gso)) { + /* Failure in netbk_set_skb_gso is fatal. */ kfree_skb(skb); - netbk_tx_err(vif, &txreq, idx); continue; } } /* 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); @@ -1349,6 +1547,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); @@ -1419,7 +1618,7 @@ txp->size -= data_len; } else { /* Schedule a response immediately. */ - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } if (txp->flags & XEN_NETTXF_csum_blank) @@ -1474,11 +1673,15 @@ } -static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx) +static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx, + u8 status) { struct xenvif *vif; struct pending_tx_info *pending_tx_info; - 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) @@ -1487,19 +1690,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); + + do { + pending_ring_idx_t index; + pending_ring_idx_t idx = pending_index(head); + u16 info_idx = netbk->pending_ring[idx]; + + pending_tx_info = &netbk->pending_tx_info[info_idx]; + make_tx_response(vif, &pending_tx_info->req, status); - make_tx_response(vif, &pending_tx_info->req, XEN_NETIF_RSP_OKAY); + /* 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] = pending_idx; + index = pending_index(netbk->pending_prod++); + netbk->pending_ring[index] = netbk->pending_ring[info_idx]; - xenvif_put(vif); + 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) @@ -1552,8 +1776,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; @@ -1636,6 +1861,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-3.5.0.orig/drivers/net/xen-netback/interface.c +++ linux-3.5.0/drivers/net/xen-netback/interface.c @@ -132,6 +132,7 @@ static void xenvif_down(struct xenvif *vif) { disable_irq(vif->irq); + del_timer_sync(&vif->credit_timeout); xen_netbk_deschedule_xenvif(vif); xen_netbk_remove_xenvif(vif); } @@ -343,23 +344,26 @@ return err; } -void xenvif_disconnect(struct xenvif *vif) +void xenvif_carrier_off(struct xenvif *vif) { struct net_device *dev = vif->dev; - if (netif_carrier_ok(dev)) { - rtnl_lock(); - netif_carrier_off(dev); /* discard queued packets */ - if (netif_running(dev)) - xenvif_down(vif); - rtnl_unlock(); - xenvif_put(vif); - } + + rtnl_lock(); + netif_carrier_off(dev); /* discard queued packets */ + if (netif_running(dev)) + xenvif_down(vif); + rtnl_unlock(); + xenvif_put(vif); +} + +void xenvif_disconnect(struct xenvif *vif) +{ + if (netif_carrier_ok(vif->dev)) + xenvif_carrier_off(vif); atomic_dec(&vif->refcnt); wait_event(vif->waiting_to_free, atomic_read(&vif->refcnt) == 0); - del_timer_sync(&vif->credit_timeout); - if (vif->irq) unbind_from_irqhandler(vif->irq, vif); --- linux-3.5.0.orig/drivers/net/can/dev.c +++ linux-3.5.0/drivers/net/can/dev.c @@ -576,8 +576,7 @@ { struct can_priv *priv = netdev_priv(dev); - if (del_timer_sync(&priv->restart_timer)) - dev_put(dev); + del_timer_sync(&priv->restart_timer); can_flush_echo_skb(dev); } EXPORT_SYMBOL_GPL(close_candev); --- linux-3.5.0.orig/drivers/net/can/janz-ican3.c +++ linux-3.5.0/drivers/net/can/janz-ican3.c @@ -1250,7 +1250,6 @@ */ static int ican3_reset_module(struct ican3_dev *mod) { - u8 val = 1 << mod->num; unsigned long start; u8 runold, runnew; @@ -1264,8 +1263,7 @@ runold = ioread8(mod->dpm + TARGET_RUNNING); /* reset the module */ - iowrite8(val, &mod->ctrl->reset_assert); - iowrite8(val, &mod->ctrl->reset_deassert); + iowrite8(0x00, &mod->dpmctrl->hwreset); /* wait until the module has finished resetting and is running */ start = jiffies; --- linux-3.5.0.orig/drivers/net/can/ti_hecc.c +++ linux-3.5.0/drivers/net/can/ti_hecc.c @@ -746,12 +746,12 @@ } if (err_status & HECC_CANES_CRCE) { hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE); - cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL; } if (err_status & HECC_CANES_ACKE) { hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE); - cf->data[2] |= CAN_ERR_PROT_LOC_ACK | + cf->data[3] |= CAN_ERR_PROT_LOC_ACK | CAN_ERR_PROT_LOC_ACK_DEL; } } @@ -984,12 +984,12 @@ struct net_device *ndev = platform_get_drvdata(pdev); struct ti_hecc_priv *priv = netdev_priv(ndev); + unregister_candev(ndev); clk_disable(priv->clk); clk_put(priv->clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); iounmap(priv->base); release_mem_region(res->start, resource_size(res)); - unregister_candev(ndev); free_candev(ndev); platform_set_drvdata(pdev, NULL); --- linux-3.5.0.orig/drivers/net/can/mcp251x.c +++ linux-3.5.0/drivers/net/can/mcp251x.c @@ -83,6 +83,11 @@ #define INSTRUCTION_LOAD_TXB(n) (0x40 + 2 * (n)) #define INSTRUCTION_READ_RXB(n) (((n) == 0) ? 0x90 : 0x94) #define INSTRUCTION_RESET 0xC0 +#define RTS_TXB0 0x01 +#define RTS_TXB1 0x02 +#define RTS_TXB2 0x04 +#define INSTRUCTION_RTS(n) (0x80 | ((n) & 0x07)) + /* MPC251x registers */ #define CANSTAT 0x0e @@ -397,6 +402,7 @@ static void mcp251x_hw_tx(struct spi_device *spi, struct can_frame *frame, int tx_buf_idx) { + struct mcp251x_priv *priv = dev_get_drvdata(&spi->dev); u32 sid, eid, exide, rtr; u8 buf[SPI_TRANSFER_BUF_LEN]; @@ -418,7 +424,10 @@ buf[TXBDLC_OFF] = (rtr << DLC_RTR_SHIFT) | frame->can_dlc; memcpy(buf + TXBDAT_OFF, frame->data, frame->can_dlc); mcp251x_hw_tx_frame(spi, buf, frame->can_dlc, tx_buf_idx); - mcp251x_write_reg(spi, TXBCTRL(tx_buf_idx), TXBCTRL_TXREQ); + + /* use INSTRUCTION_RTS, to avoid "repeated frame problem" */ + priv->spi_tx_buf[0] = INSTRUCTION_RTS(1 << tx_buf_idx); + mcp251x_spi_trans(priv->spi, 1); } static void mcp251x_hw_rx_frame(struct spi_device *spi, u8 *buf, @@ -913,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); @@ -929,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-3.5.0.orig/drivers/net/can/pch_can.c +++ linux-3.5.0/drivers/net/can/pch_can.c @@ -560,7 +560,7 @@ stats->rx_errors++; break; case PCH_CRC_ERR: - cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL; priv->can.can_stats.bus_error++; stats->rx_errors++; --- linux-3.5.0.orig/drivers/net/can/c_can/c_can.c +++ linux-3.5.0/drivers/net/can/c_can/c_can.c @@ -446,8 +446,12 @@ priv->write_reg(priv, &priv->regs->ifregs[iface].mask1, IFX_WRITE_LOW_16BIT(mask)); + + /* According to C_CAN documentation, the reserved bit + * in IFx_MASK2 register is fixed 1 + */ priv->write_reg(priv, &priv->regs->ifregs[iface].mask2, - IFX_WRITE_HIGH_16BIT(mask)); + IFX_WRITE_HIGH_16BIT(mask) | BIT(13)); priv->write_reg(priv, &priv->regs->ifregs[iface].arb1, IFX_WRITE_LOW_16BIT(id)); @@ -914,7 +918,7 @@ break; case LEC_ACK_ERROR: netdev_dbg(dev, "ack error\n"); - cf->data[2] |= (CAN_ERR_PROT_LOC_ACK | + cf->data[3] |= (CAN_ERR_PROT_LOC_ACK | CAN_ERR_PROT_LOC_ACK_DEL); break; case LEC_BIT1_ERROR: @@ -927,7 +931,7 @@ break; case LEC_CRC_ERROR: netdev_dbg(dev, "CRC error\n"); - cf->data[2] |= (CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL); break; default: --- linux-3.5.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_pro.c +++ linux-3.5.0/drivers/net/can/usb/peak_usb/pcan_usb_pro.c @@ -532,6 +532,7 @@ struct can_frame *can_frame; struct sk_buff *skb; struct timeval tv; + struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(netdev, &can_frame); if (!skb) @@ -549,7 +550,8 @@ memcpy(can_frame->data, rx->data, can_frame->can_dlc); peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(rx->ts32), &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); netif_rx(skb); netdev->stats.rx_packets++; @@ -570,6 +572,7 @@ u8 err_mask = 0; struct sk_buff *skb; struct timeval tv; + struct skb_shared_hwtstamps *hwts; /* nothing should be sent while in BUS_OFF state */ if (dev->can.state == CAN_STATE_BUS_OFF) @@ -664,7 +667,8 @@ dev->can.state = new_state; peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); netif_rx(skb); netdev->stats.rx_packets++; netdev->stats.rx_bytes += can_frame->can_dlc; --- linux-3.5.0.orig/drivers/net/can/usb/peak_usb/pcan_usb.c +++ linux-3.5.0/drivers/net/can/usb/peak_usb/pcan_usb.c @@ -519,8 +519,10 @@ mc->pdev->dev.can.state = new_state; if (status_len & PCAN_USB_STATUSLEN_TIMESTAMP) { + struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb); + peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts->hwtstamp = timeval_to_ktime(tv); } netif_rx(skb); @@ -605,6 +607,7 @@ struct sk_buff *skb; struct can_frame *cf; struct timeval tv; + struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(mc->netdev, &cf); if (!skb) @@ -652,7 +655,8 @@ /* convert timestamp into kernel time */ peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); /* push the skb */ netif_rx(skb); --- linux-3.5.0.orig/drivers/net/can/mscan/mpc5xxx_can.c +++ linux-3.5.0/drivers/net/can/mscan/mpc5xxx_can.c @@ -181,7 +181,7 @@ if (!clock_name || !strcmp(clock_name, "sys")) { sys_clk = clk_get(&ofdev->dev, "sys_clk"); - if (!sys_clk) { + if (IS_ERR(sys_clk)) { dev_err(&ofdev->dev, "couldn't get sys_clk\n"); goto exit_unmap; } @@ -204,7 +204,7 @@ if (clocksrc < 0) { ref_clk = clk_get(&ofdev->dev, "ref_clk"); - if (!ref_clk) { + if (IS_ERR(ref_clk)) { dev_err(&ofdev->dev, "couldn't get ref_clk\n"); goto exit_unmap; } --- linux-3.5.0.orig/drivers/net/can/sja1000/plx_pci.c +++ linux-3.5.0/drivers/net/can/sja1000/plx_pci.c @@ -329,7 +329,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; @@ -341,7 +341,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-3.5.0.orig/drivers/net/can/sja1000/sja1000_of_platform.c +++ linux-3.5.0/drivers/net/can/sja1000/sja1000_of_platform.c @@ -94,8 +94,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); @@ -136,27 +136,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; @@ -166,8 +166,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-3.5.0.orig/drivers/net/can/sja1000/sja1000.h +++ linux-3.5.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-3.5.0.orig/drivers/net/can/sja1000/sja1000.c +++ linux-3.5.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); } @@ -496,7 +496,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; @@ -515,7 +515,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-3.5.0.orig/drivers/net/wimax/i2400m/i2400m-usb.h +++ linux-3.5.0/drivers/net/wimax/i2400m/i2400m-usb.h @@ -152,6 +152,9 @@ /* Device IDs */ USB_DEVICE_ID_I6050 = 0x0186, USB_DEVICE_ID_I6050_2 = 0x0188, + USB_DEVICE_ID_I6150 = 0x07d6, + USB_DEVICE_ID_I6150_2 = 0x07d7, + USB_DEVICE_ID_I6150_3 = 0x07d9, USB_DEVICE_ID_I6250 = 0x0187, }; --- linux-3.5.0.orig/drivers/net/wimax/i2400m/usb.c +++ linux-3.5.0/drivers/net/wimax/i2400m/usb.c @@ -510,6 +510,9 @@ switch (id->idProduct) { case USB_DEVICE_ID_I6050: case USB_DEVICE_ID_I6050_2: + case USB_DEVICE_ID_I6150: + case USB_DEVICE_ID_I6150_2: + case USB_DEVICE_ID_I6150_3: case USB_DEVICE_ID_I6250: i2400mu->i6050 = 1; break; @@ -759,6 +762,9 @@ struct usb_device_id i2400mu_id_table[] = { { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150_2) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150_3) }, { USB_DEVICE(0x8086, USB_DEVICE_ID_I6250) }, { USB_DEVICE(0x8086, 0x0181) }, { USB_DEVICE(0x8086, 0x1403) }, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/hw.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/hw.h @@ -48,6 +48,7 @@ #define AR9300_DEVID_AR9580 0x0033 #define AR9300_DEVID_AR9462 0x0034 #define AR9300_DEVID_AR9330 0x0035 +#define AR9485_DEVID_AR1111 0x0037 #define AR5416_AR9100_DEVID 0x000b @@ -1007,6 +1008,7 @@ int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); int ar9003_paprd_init_table(struct ath_hw *ah); bool ar9003_paprd_is_done(struct ath_hw *ah); +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); /* Hardware family op attach helpers */ void ar5008_hw_attach_phy_ops(struct ath_hw *ah); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/hw.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/hw.c @@ -740,6 +740,7 @@ case AR9300_DEVID_AR9340: case AR9300_DEVID_AR9580: case AR9300_DEVID_AR9462: + case AR9485_DEVID_AR1111: break; default: if (common->bus_ops->ath_bus_type == ATH_USB) @@ -1471,7 +1472,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-3.5.0.orig/drivers/net/wireless/ath/ath9k/beacon.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/beacon.c @@ -121,7 +121,7 @@ if (ath_tx_start(hw, skb, &txctl) != 0) { ath_dbg(common, XMIT, "CABQ TX failed\n"); - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_phy.c @@ -532,35 +532,20 @@ ath9k_hw_synth_delay(ah, chan, synthDelay); } -static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) { - switch (rx) { - case 0x5: + if (ah->caps.tx_chainmask == 5 || ah->caps.rx_chainmask == 5) REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, AR_PHY_SWAP_ALT_CHAIN); - case 0x3: - case 0x1: - case 0x2: - case 0x7: - REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx); - REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx); - break; - default: - break; - } - if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && (tx == 0x7)) - REG_WRITE(ah, AR_SELFGEN_MASK, 0x3); - else if (AR_SREV_9462(ah)) - /* xxx only when MCI support is enabled */ - REG_WRITE(ah, AR_SELFGEN_MASK, 0x3); - else - REG_WRITE(ah, AR_SELFGEN_MASK, tx); + REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx); + REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx); - if (tx == 0x5) { - REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, - AR_PHY_SWAP_ALT_CHAIN); - } + if (((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && (tx == 0x7)) || + AR_SREV_9462(ah)) + tx = 3; + + REG_WRITE(ah, AR_SELFGEN_MASK, tx); } /* --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/common.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/common.h @@ -35,7 +35,7 @@ #define WME_AC_BK 3 #define WME_NUM_AC 4 -#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-3.5.0.orig/drivers/net/wireless/ath/ath9k/recv.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/recv.c @@ -291,8 +291,6 @@ static void ath_edma_start_recv(struct ath_softc *sc) { - spin_lock_bh(&sc->rx.rxbuflock); - ath9k_hw_rxena(sc->sc_ah); ath_rx_addbuffer_edma(sc, ATH9K_RX_QUEUE_HP, @@ -304,8 +302,6 @@ ath_opmode_init(sc); ath9k_hw_startpcureceive(sc->sc_ah, (sc->sc_flags & SC_OP_OFFCHANNEL)); - - spin_unlock_bh(&sc->rx.rxbuflock); } static void ath_edma_stop_recv(struct ath_softc *sc) @@ -322,8 +318,6 @@ int error = 0; spin_lock_init(&sc->sc_pcu_lock); - sc->sc_flags &= ~SC_OP_RXFLUSH; - spin_lock_init(&sc->rx.rxbuflock); common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + sc->sc_ah->caps.rx_status_len; @@ -481,7 +475,6 @@ return 0; } - spin_lock_bh(&sc->rx.rxbuflock); if (list_empty(&sc->rx.rxbuf)) goto start_recv; @@ -502,26 +495,31 @@ ath_opmode_init(sc); ath9k_hw_startpcureceive(ah, (sc->sc_flags & SC_OP_OFFCHANNEL)); - spin_unlock_bh(&sc->rx.rxbuflock); - return 0; } +static void ath_flushrecv(struct ath_softc *sc) +{ + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) + ath_rx_tasklet(sc, 1, true); + ath_rx_tasklet(sc, 1, false); +} + bool ath_stoprecv(struct ath_softc *sc) { struct ath_hw *ah = sc->sc_ah; bool stopped, reset = false; - spin_lock_bh(&sc->rx.rxbuflock); ath9k_hw_abortpcurecv(ah); ath9k_hw_setrxfilter(ah, 0); stopped = ath9k_hw_stopdmarecv(ah, &reset); + ath_flushrecv(sc); + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_edma_stop_recv(sc); else sc->rx.rxlink = NULL; - spin_unlock_bh(&sc->rx.rxbuflock); if (!(ah->ah_flags & AH_UNPLUGGED) && unlikely(!stopped)) { @@ -533,15 +531,6 @@ return stopped && !reset; } -void ath_flushrecv(struct ath_softc *sc) -{ - sc->sc_flags |= SC_OP_RXFLUSH; - if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - ath_rx_tasklet(sc, 1, true); - ath_rx_tasklet(sc, 1, false); - sc->sc_flags &= ~SC_OP_RXFLUSH; -} - static bool ath_beacon_dtim_pending_cab(struct sk_buff *skb) { /* Check whether the Beacon frame has DTIM indicating buffered bc/mc */ @@ -778,6 +767,7 @@ return NULL; } + list_del(&bf->list); if (!bf->bf_mpdu) return bf; @@ -1781,7 +1771,6 @@ struct ieee80211_hw *hw = sc->hw; struct ieee80211_hdr *hdr; int retval; - bool decrypt_error = false; struct ath_rx_status rs; enum ath9k_rx_qtype qtype; bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); @@ -1797,15 +1786,12 @@ dma_type = DMA_FROM_DEVICE; qtype = hp ? ATH9K_RX_QUEUE_HP : ATH9K_RX_QUEUE_LP; - spin_lock_bh(&sc->rx.rxbuflock); tsf = ath9k_hw_gettsf64(ah); tsf_lower = tsf & 0xffffffff; do { - /* If handling rx interrupt and flush is in progress => exit */ - if ((sc->sc_flags & SC_OP_RXFLUSH) && (flush == 0)) - break; + bool decrypt_error = false; memset(&rs, 0, sizeof(rs)); if (edma) @@ -1844,15 +1830,6 @@ ath_debug_stat_rx(sc, &rs); - /* - * If we're asked to flush receive queue, directly - * chain it back at the queue without processing it. - */ - if (sc->sc_flags & SC_OP_RXFLUSH) { - RX_STAT_INC(rx_drop_rxflush); - goto requeue_drop_frag; - } - memset(rxs, 0, sizeof(struct ieee80211_rx_status)); rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; @@ -1988,19 +1965,18 @@ sc->rx.frag = NULL; } requeue: + list_add_tail(&bf->list, &sc->rx.rxbuf); + if (flush) + continue; + if (edma) { - list_add_tail(&bf->list, &sc->rx.rxbuf); ath_rx_edma_buf_link(sc, qtype); } else { - list_move_tail(&bf->list, &sc->rx.rxbuf); ath_rx_buf_link(sc, bf); - if (!flush) - ath9k_hw_rxena(ah); + ath9k_hw_rxena(ah); } } while (1); - spin_unlock_bh(&sc->rx.rxbuflock); - if (!(ah->imask & ATH9K_INT_RXEOL)) { ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN); ath9k_hw_set_interrupts(ah); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h @@ -533,107 +533,107 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x0000a2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000a2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000a2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, - {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, - {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, - {0x0000a510, 0x15000028, 0x15000028, 0x0f000202, 0x0f000202}, - {0x0000a514, 0x1b00002b, 0x1b00002b, 0x12000400, 0x12000400}, - {0x0000a518, 0x1f020028, 0x1f020028, 0x16000402, 0x16000402}, - {0x0000a51c, 0x2502002b, 0x2502002b, 0x19000404, 0x19000404}, - {0x0000a520, 0x2a04002a, 0x2a04002a, 0x1c000603, 0x1c000603}, - {0x0000a524, 0x2e06002a, 0x2e06002a, 0x21000a02, 0x21000a02}, - {0x0000a528, 0x3302202d, 0x3302202d, 0x25000a04, 0x25000a04}, - {0x0000a52c, 0x3804202c, 0x3804202c, 0x28000a20, 0x28000a20}, - {0x0000a530, 0x3c06202c, 0x3c06202c, 0x2c000e20, 0x2c000e20}, - {0x0000a534, 0x4108202d, 0x4108202d, 0x30000e22, 0x30000e22}, - {0x0000a538, 0x4506402d, 0x4506402d, 0x34000e24, 0x34000e24}, - {0x0000a53c, 0x4906222d, 0x4906222d, 0x38001640, 0x38001640}, - {0x0000a540, 0x4d062231, 0x4d062231, 0x3c001660, 0x3c001660}, - {0x0000a544, 0x50082231, 0x50082231, 0x3f001861, 0x3f001861}, - {0x0000a548, 0x5608422e, 0x5608422e, 0x43001a81, 0x43001a81}, - {0x0000a54c, 0x5a08442e, 0x5a08442e, 0x47001a83, 0x47001a83}, - {0x0000a550, 0x5e0a4431, 0x5e0a4431, 0x4a001c84, 0x4a001c84}, - {0x0000a554, 0x640a4432, 0x640a4432, 0x4e001ce3, 0x4e001ce3}, - {0x0000a558, 0x680a4434, 0x680a4434, 0x52001ce5, 0x52001ce5}, - {0x0000a55c, 0x6c0a6434, 0x6c0a6434, 0x56001ce9, 0x56001ce9}, - {0x0000a560, 0x6f0a6633, 0x6f0a6633, 0x5a001ceb, 0x5a001ceb}, - {0x0000a564, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a568, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a56c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a570, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a574, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a578, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a57c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, - {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, - {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, - {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200}, - {0x0000a590, 0x15800028, 0x15800028, 0x0f800202, 0x0f800202}, - {0x0000a594, 0x1b80002b, 0x1b80002b, 0x12800400, 0x12800400}, - {0x0000a598, 0x1f820028, 0x1f820028, 0x16800402, 0x16800402}, - {0x0000a59c, 0x2582002b, 0x2582002b, 0x19800404, 0x19800404}, - {0x0000a5a0, 0x2a84002a, 0x2a84002a, 0x1c800603, 0x1c800603}, - {0x0000a5a4, 0x2e86002a, 0x2e86002a, 0x21800a02, 0x21800a02}, - {0x0000a5a8, 0x3382202d, 0x3382202d, 0x25800a04, 0x25800a04}, - {0x0000a5ac, 0x3884202c, 0x3884202c, 0x28800a20, 0x28800a20}, - {0x0000a5b0, 0x3c86202c, 0x3c86202c, 0x2c800e20, 0x2c800e20}, - {0x0000a5b4, 0x4188202d, 0x4188202d, 0x30800e22, 0x30800e22}, - {0x0000a5b8, 0x4586402d, 0x4586402d, 0x34800e24, 0x34800e24}, - {0x0000a5bc, 0x4986222d, 0x4986222d, 0x38801640, 0x38801640}, - {0x0000a5c0, 0x4d862231, 0x4d862231, 0x3c801660, 0x3c801660}, - {0x0000a5c4, 0x50882231, 0x50882231, 0x3f801861, 0x3f801861}, - {0x0000a5c8, 0x5688422e, 0x5688422e, 0x43801a81, 0x43801a81}, - {0x0000a5cc, 0x5a88442e, 0x5a88442e, 0x47801a83, 0x47801a83}, - {0x0000a5d0, 0x5e8a4431, 0x5e8a4431, 0x4a801c84, 0x4a801c84}, - {0x0000a5d4, 0x648a4432, 0x648a4432, 0x4e801ce3, 0x4e801ce3}, - {0x0000a5d8, 0x688a4434, 0x688a4434, 0x52801ce5, 0x52801ce5}, - {0x0000a5dc, 0x6c8a6434, 0x6c8a6434, 0x56801ce9, 0x56801ce9}, - {0x0000a5e0, 0x6f8a6633, 0x6f8a6633, 0x5a801ceb, 0x5a801ceb}, - {0x0000a5e4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5e8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5ec, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f0, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5fc, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, + {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, + {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, + {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, + {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, + {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, + {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, + {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, + {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, + {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, + {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, + {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, + {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, + {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, + {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, + {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, + {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, + {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, + {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, + {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, + {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, + {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, + {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, + {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, + {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, + {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, + {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, + {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, + {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, + {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, + {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, + {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, + {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, + {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, + {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, + {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, + {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, + {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, + {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, + {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, + {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, + {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, + {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, + {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, + {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, + {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, + {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, + {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, + {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, + {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, + {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, + {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, + {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a608, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a60c, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a610, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a614, 0x01804601, 0x01804601, 0x01404000, 0x01404000}, - {0x0000a618, 0x01804601, 0x01804601, 0x01404501, 0x01404501}, - {0x0000a61c, 0x01804601, 0x01804601, 0x02008501, 0x02008501}, - {0x0000a620, 0x03408d02, 0x03408d02, 0x0280ca03, 0x0280ca03}, - {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, - {0x0000a628, 0x03410d04, 0x03410d04, 0x04014c04, 0x04014c04}, - {0x0000a62c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a630, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a634, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a638, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a63c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000b2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000b2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000b2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, + {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, + {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, + {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, + {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, + {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, + {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, + {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000c2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000c2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000c2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016048, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016448, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016848, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, }; @@ -777,11 +777,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-3.5.0.orig/drivers/net/wireless/ath/ath9k/main.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/main.c @@ -235,7 +235,7 @@ cancel_work_sync(&sc->hw_reset_work); } -static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) +static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx) { struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); @@ -256,14 +256,6 @@ if (!ath_drain_all_txq(sc, retry_tx)) ret = false; - if (!flush) { - if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - ath_rx_tasklet(sc, 1, true); - ath_rx_tasklet(sc, 1, false); - } else { - ath_flushrecv(sc); - } - return ret; } @@ -321,11 +313,11 @@ struct ath_common *common = ath9k_hw_common(ah); struct ath9k_hw_cal_data *caldata = NULL; bool fastcc = true; - bool flush = false; int r; __ath_cancel_work(sc); + tasklet_disable(&sc->intr_tq); spin_lock_bh(&sc->sc_pcu_lock); if (!(sc->sc_flags & SC_OP_OFFCHANNEL)) { @@ -335,11 +327,10 @@ if (!hchan) { fastcc = false; - flush = true; hchan = ah->curchan; } - if (!ath_prepare_reset(sc, retry_tx, flush)) + if (!ath_prepare_reset(sc, retry_tx)) fastcc = false; ath_dbg(common, CONFIG, "Reset to %u MHz, HT40: %d fastcc: %d\n", @@ -357,6 +348,8 @@ out: spin_unlock_bh(&sc->sc_pcu_lock); + tasklet_enable(&sc->intr_tq); + return r; } @@ -1161,7 +1154,7 @@ return; exit: - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } static void ath9k_stop(struct ieee80211_hw *hw) @@ -1214,7 +1207,7 @@ ath9k_hw_cfg_gpio_input(ah, ah->led_pin); } - ath_prepare_reset(sc, false, true); + ath_prepare_reset(sc, false); if (sc->rx.frag) { dev_kfree_skb_any(sc->rx.frag); @@ -1729,6 +1722,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); @@ -1736,7 +1730,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; } @@ -1753,6 +1749,7 @@ return; ath_key_delete(common, &ps_key); + an->ps_key = 0; } static int ath9k_sta_remove(struct ieee80211_hw *hw, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/rc.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/rc.h @@ -219,7 +219,7 @@ struct ath_rc_stats rcstats[RATE_TABLE_SIZE]; }; -#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-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h @@ -68,13 +68,13 @@ #define AR9300_BASE_ADDR 0x3ff #define AR9300_BASE_ADDR_512 0x1ff -#define AR9300_OTP_BASE 0x14000 -#define AR9300_OTP_STATUS 0x15f18 +#define AR9300_OTP_BASE (AR_SREV_9340(ah) ? 0x30000 : 0x14000) +#define AR9300_OTP_STATUS (AR_SREV_9340(ah) ? 0x30018 : 0x15f18) #define AR9300_OTP_STATUS_TYPE 0x7 #define AR9300_OTP_STATUS_VALID 0x4 #define AR9300_OTP_STATUS_ACCESS_BUSY 0x2 #define AR9300_OTP_STATUS_SM_BUSY 0x1 -#define AR9300_OTP_READ_DATA 0x15f1c +#define AR9300_OTP_READ_DATA (AR_SREV_9340(ah) ? 0x3001c : 0x15f1c) enum targetPowerHTRates { HT_TARGET_RATE_0_8_16, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/calib.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/calib.h @@ -21,6 +21,9 @@ #define AR_PHY_CCA_FILTERWINDOW_LENGTH 5 +/* Internal noise floor can vary by about 6db depending on the frequency */ +#define ATH9K_NF_CAL_NOISE_THRESH 6 + #define NUM_NF_READINGS 6 #define ATH9K_NF_CAL_HIST_MAX 5 --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_hw.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_hw.c @@ -307,13 +307,13 @@ /* Awake -> Sleep Setting */ INIT_INI_ARRAY(&ah->iniPcieSerdes, - PCIE_PLL_ON_CREQ_DIS_L1_2P0, - ARRAY_SIZE(PCIE_PLL_ON_CREQ_DIS_L1_2P0), + ar9462_pciephy_clkreq_disable_L1_2p0, + ARRAY_SIZE(ar9462_pciephy_clkreq_disable_L1_2p0), 2); /* Sleep -> Awake Setting */ INIT_INI_ARRAY(&ah->iniPcieSerdesLowPower, - PCIE_PLL_ON_CREQ_DIS_L1_2P0, - ARRAY_SIZE(PCIE_PLL_ON_CREQ_DIS_L1_2P0), + ar9462_pciephy_clkreq_disable_L1_2p0, + ARRAY_SIZE(ar9462_pciephy_clkreq_disable_L1_2p0), 2); /* Fast clock modal settings */ @@ -632,8 +632,8 @@ 2); else if (AR_SREV_9485_11(ah)) INIT_INI_ARRAY(&ah->iniModesRxGain, - ar9485Common_wo_xlna_rx_gain_1_1, - ARRAY_SIZE(ar9485Common_wo_xlna_rx_gain_1_1), + ar9485_common_rx_gain_1_1, + ARRAY_SIZE(ar9485_common_rx_gain_1_1), 2); else if (AR_SREV_9580(ah)) INIT_INI_ARRAY(&ah->iniModesRxGain, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/debug.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/debug.h @@ -184,7 +184,6 @@ * @rx_oom_err: No. of frames dropped due to OOM issues. * @rx_rate_err: No. of frames dropped due to rate errors. * @rx_too_many_frags_err: Frames dropped due to too-many-frags received. - * @rx_drop_rxflush: No. of frames dropped due to RX-FLUSH. * @rx_beacons: No. of beacons received. * @rx_frags: No. of rx-fragements received. */ @@ -203,7 +202,6 @@ u32 rx_oom_err; u32 rx_rate_err; u32 rx_too_many_frags_err; - u32 rx_drop_rxflush; u32 rx_beacons; u32 rx_frags; }; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/Makefile +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/Makefile @@ -6,7 +6,7 @@ xmit.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-3.5.0.orig/drivers/net/wireless/ath/ath9k/xmit.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/xmit.c @@ -64,8 +64,7 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, - struct sk_buff *skb, - bool dequeue); + struct sk_buff *skb); enum { MCS_HT20, @@ -201,7 +200,15 @@ fi = get_frame_info(skb); bf = fi->bf; - if (bf && fi->retries) { + if (!bf) { + bf = ath_tx_setup_buffer(sc, txq, tid, skb); + if (!bf) { + ieee80211_free_txskb(sc->hw, skb); + continue; + } + } + + if (fi->retries) { list_add_tail(&bf->list, &bf_head); ath_tx_update_baw(sc, tid, bf->bf_state.seqno); ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); @@ -330,6 +337,7 @@ } bf = list_first_entry(&sc->tx.txbuf, struct ath_buf, list); + bf->bf_next = NULL; list_del(&bf->list); spin_unlock_bh(&sc->tx.txbuflock); @@ -411,7 +419,7 @@ u16 seq_st = 0, acked_cnt = 0, txfail_cnt = 0, seq_first; u32 ba[WME_BA_BMP_SIZE >> 5]; int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; - bool rc_update = true; + bool rc_update = true, isba; struct ieee80211_tx_rate rates[4]; struct ath_frame_info *fi; int nframes; @@ -455,13 +463,17 @@ tidno = ieee80211_get_qos_ctl(hdr)[0] & IEEE80211_QOS_CTL_TID_MASK; tid = ATH_AN_2_TID(an, tidno); seq_first = tid->seq_start; + isba = ts->ts_flags & ATH9K_TX_BA; /* * The hardware occasionally sends a tx status for the wrong TID. * In this case, the BA status cannot be considered valid and all * subframes need to be retransmitted + * + * Only BlockAcks have a TID and therefore normal Acks cannot be + * checked */ - if (tidno != ts->tid) + if (isba && tidno != ts->tid) txok = false; isaggr = bf_isaggr(bf); @@ -812,10 +824,13 @@ fi = get_frame_info(skb); bf = fi->bf; if (!fi->bf) - bf = ath_tx_setup_buffer(sc, txq, tid, skb, true); + bf = ath_tx_setup_buffer(sc, txq, tid, skb); - if (!bf) + if (!bf) { + __skb_unlink(skb, &tid->buf_q); + ieee80211_free_txskb(sc->hw, skb); continue; + } bf->bf_state.bf_type = BUF_AMPDU | BUF_AGGR; seqno = bf->bf_state.seqno; @@ -1717,9 +1732,11 @@ return; } - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); - if (!bf) + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); + if (!bf) { + ieee80211_free_txskb(sc->hw, skb); return; + } bf->bf_state.bf_type = BUF_AMPDU; INIT_LIST_HEAD(&bf_head); @@ -1743,16 +1760,12 @@ struct ath_buf *bf; bf = fi->bf; - if (!bf) - bf = ath_tx_setup_buffer(sc, txq, tid, skb, false); - - if (!bf) - return; INIT_LIST_HEAD(&bf_head); list_add_tail(&bf->list, &bf_head); bf->bf_state.bf_type = 0; + bf->bf_next = NULL; bf->bf_lastbf = bf; ath_tx_fill_desc(sc, bf, txq, fi->framelen); ath_tx_txqaddbuf(sc, txq, &bf_head, false); @@ -1820,8 +1833,7 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, - struct sk_buff *skb, - bool dequeue) + struct sk_buff *skb) { struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_frame_info *fi = get_frame_info(skb); @@ -1833,7 +1845,7 @@ bf = ath_tx_get_buffer(sc); if (!bf) { ath_dbg(common, XMIT, "TX buffers are full\n"); - goto error; + return NULL; } ATH_TXBUF_RESET(bf); @@ -1862,18 +1874,12 @@ ath_err(ath9k_hw_common(sc->sc_ah), "dma_mapping_error() on TX\n"); ath_tx_return_buffer(sc, bf); - goto error; + return NULL; } fi->bf = bf; return bf; - -error: - if (dequeue) - __skb_unlink(skb, &tid->buf_q); - dev_kfree_skb_any(skb); - return NULL; } /* FIXME: tx power */ @@ -1902,9 +1908,14 @@ */ ath_tx_send_ampdu(sc, tid, skb, txctl); } else { - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); - if (!bf) + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); + if (!bf) { + if (txctl->paprd) + dev_kfree_skb_any(skb); + else + ieee80211_free_txskb(sc->hw, skb); return; + } bf->bf_state.bfs_paprd = txctl->paprd; @@ -2247,21 +2258,21 @@ sc->tx_complete_poll_work_seen++; #endif - 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, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/Kconfig +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/Kconfig @@ -89,13 +89,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-3.5.0.orig/drivers/net/wireless/ath/ath9k/init.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/init.c @@ -696,8 +696,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; @@ -721,10 +720,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-3.5.0.orig/drivers/net/wireless/ath/ath9k/htc.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/htc.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/htc_hst.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -344,6 +344,8 @@ endpoint->ep_callbacks.tx(endpoint->ep_callbacks.priv, skb, htc_hdr->endpoint_id, txok); + } else { + kfree_skb(skb); } } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/htc_drv_init.c @@ -774,7 +774,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; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_calib.c @@ -910,6 +910,9 @@ 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) { if (!ar9003_hw_rtt_restore(ah, chan)) run_rtt_cal = true; @@ -1055,6 +1058,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-3.5.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +++ linux-3.5.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-3.5.0.orig/drivers/net/wireless/ath/ath9k/ath9k.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ath9k.h @@ -309,7 +309,6 @@ u8 rxotherant; u32 *rxlink; unsigned int rxfilter; - spinlock_t rxbuflock; struct list_head rxbuf; struct ath_descdma rxdma; struct ath_buf *rx_bufptr; @@ -320,7 +319,6 @@ int ath_startrecv(struct ath_softc *sc); bool ath_stoprecv(struct ath_softc *sc); -void ath_flushrecv(struct ath_softc *sc); u32 ath_calcrxfilter(struct ath_softc *sc); int ath_rx_init(struct ath_softc *sc, int nbufs); void ath_rx_cleanup(struct ath_softc *sc); @@ -588,7 +586,6 @@ #define SC_OP_INVALID BIT(0) #define SC_OP_BEACONS BIT(1) #define SC_OP_OFFCHANNEL BIT(2) -#define SC_OP_RXFLUSH BIT(3) #define SC_OP_TSF_RESET BIT(4) #define SC_OP_BT_PRIORITY_DETECTED BIT(5) #define SC_OP_BT_SCAN BIT(6) --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/debug.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/debug.c @@ -919,7 +919,6 @@ RXS_ERR("RX-LENGTH-ERR", rx_len_err); RXS_ERR("RX-OOM-ERR", rx_oom_err); RXS_ERR("RX-RATE-ERR", rx_rate_err); - RXS_ERR("RX-DROP-RXFLUSH", rx_drop_rxflush); RXS_ERR("RX-TOO-MANY-FRAGS", rx_too_many_frags_err); PHY_ERR("UNDERRUN ERR", ATH9K_PHYERR_UNDERRUN); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h @@ -648,7 +648,7 @@ {0x00008258, 0x00000000}, {0x0000825c, 0x40000000}, {0x00008260, 0x00080922}, - {0x00008264, 0x9bc00010}, + {0x00008264, 0x9d400010}, {0x00008268, 0xffffffff}, {0x0000826c, 0x0000ffff}, {0x00008270, 0x00000000}, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/calib.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/calib.c @@ -69,6 +69,7 @@ if (chan && chan->noisefloor) { s8 delta = chan->noisefloor - + ATH9K_NF_CAL_NOISE_THRESH - ath9k_hw_get_default_nf(ah, chan); if (delta > 0) noise += delta; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/pci.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/pci.c @@ -37,6 +37,7 @@ { PCI_VDEVICE(ATHEROS, 0x0032) }, /* PCI-E AR9485 */ { PCI_VDEVICE(ATHEROS, 0x0033) }, /* PCI-E AR9580 */ { PCI_VDEVICE(ATHEROS, 0x0034) }, /* PCI-E AR9462 */ + { PCI_VDEVICE(ATHEROS, 0x0037) }, /* PCI-E AR1111/AR9485 */ { 0 } }; @@ -123,8 +124,9 @@ if (!parent) return; - if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) { - /* Bluetooth coexistance requires disabling ASPM. */ + if ((ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) && + (AR_SREV_9285(ah))) { + /* Bluetooth coexistance requires disabling ASPM for AR9285. */ pci_read_config_byte(pdev, pos + PCI_EXP_LNKCTL, &aspm); aspm &= ~(PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1); pci_write_config_byte(pdev, pos + PCI_EXP_LNKCTL, aspm); @@ -312,6 +314,7 @@ * Otherwise the chip never moved to full sleep, * when no interface is up. */ + ath9k_stop_btcoex(sc); ath9k_hw_disable(sc->sc_ah); ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_FULL_SLEEP); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath5k/mac80211-ops.c +++ linux-3.5.0/drivers/net/wireless/ath/ath5k/mac80211-ops.c @@ -61,7 +61,7 @@ u16 qnum = skb_get_queue_mapping(skb); if (WARN_ON(qnum >= ah->ah_capabilities.cap_queues.q_tx_num)) { - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); return; } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath5k/base.c +++ linux-3.5.0/drivers/net/wireless/ath/ath5k/base.c @@ -845,7 +845,7 @@ return; dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len, DMA_TO_DEVICE); - dev_kfree_skb_any(bf->skb); + ieee80211_free_txskb(ah->hw, bf->skb); bf->skb = NULL; bf->skbaddr = 0; bf->desc->ds_data = 0; @@ -1572,7 +1572,7 @@ return; drop_packet: - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } static void --- linux-3.5.0.orig/drivers/net/wireless/libertas/if_sdio.c +++ linux-3.5.0/drivers/net/wireless/libertas/if_sdio.c @@ -804,6 +804,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 */ @@ -818,7 +823,6 @@ netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n"); } - priv->fw_ready = 1; wake_up(&card->pwron_waitq); if (!card->started) { --- linux-3.5.0.orig/drivers/net/wireless/b43/dma.h +++ linux-3.5.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-3.5.0.orig/drivers/net/wireless/b43/main.h +++ linux-3.5.0/drivers/net/wireless/b43/main.h @@ -137,9 +137,8 @@ struct b43_request_fw_context; -int b43_do_request_fw(struct b43_request_fw_context *ctx, - const char *name, - struct b43_firmware_file *fw); +int b43_do_request_fw(struct b43_request_fw_context *ctx, const char *name, + struct b43_firmware_file *fw, bool async); void b43_do_release_fw(struct b43_firmware_file *fw); #endif /* B43_MAIN_H_ */ --- linux-3.5.0.orig/drivers/net/wireless/b43/pio.c +++ linux-3.5.0/drivers/net/wireless/b43/pio.c @@ -196,7 +196,7 @@ for (i = 0; i < ARRAY_SIZE(q->packets); i++) { pack = &(q->packets[i]); if (pack->skb) { - dev_kfree_skb_any(pack->skb); + ieee80211_free_txskb(q->dev->wl->hw, pack->skb); pack->skb = NULL; } } @@ -552,7 +552,7 @@ if (unlikely(err == -ENOKEY)) { /* Drop this packet, as we don't have the encryption key * anymore and must not transmit it unencrypted. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(dev->wl->hw, skb); err = 0; goto out; } --- linux-3.5.0.orig/drivers/net/wireless/b43/main.c +++ linux-3.5.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) @@ -2088,11 +2081,18 @@ b43warn(wl, text); } +static void b43_fw_cb(const struct firmware *firmware, void *context) +{ + struct b43_request_fw_context *ctx = context; + + ctx->blob = firmware; + complete(&ctx->fw_load_complete); +} + int b43_do_request_fw(struct b43_request_fw_context *ctx, const char *name, - struct b43_firmware_file *fw) + struct b43_firmware_file *fw, bool async) { - const struct firmware *blob; struct b43_fw_header *hdr; u32 size; int err; @@ -2131,11 +2131,31 @@ B43_WARN_ON(1); return -ENOSYS; } - err = request_firmware(&blob, ctx->fwname, ctx->dev->dev->dev); + if (async) { + /* do this part asynchronously */ + init_completion(&ctx->fw_load_complete); + err = request_firmware_nowait(THIS_MODULE, 1, ctx->fwname, + ctx->dev->dev->dev, GFP_KERNEL, + ctx, b43_fw_cb); + if (err < 0) { + pr_err("Unable to load firmware\n"); + return err; + } + /* stall here until fw ready */ + wait_for_completion(&ctx->fw_load_complete); + if (ctx->blob) + goto fw_ready; + /* On some ARM systems, the async request will fail, but the next sync + * request works. For this reason, we dall through here + */ + } + err = request_firmware(&ctx->blob, ctx->fwname, + ctx->dev->dev->dev); if (err == -ENOENT) { snprintf(ctx->errors[ctx->req_type], sizeof(ctx->errors[ctx->req_type]), - "Firmware file \"%s\" not found\n", ctx->fwname); + "Firmware file \"%s\" not found\n", + ctx->fwname); return err; } else if (err) { snprintf(ctx->errors[ctx->req_type], @@ -2144,14 +2164,15 @@ ctx->fwname, err); return err; } - if (blob->size < sizeof(struct b43_fw_header)) +fw_ready: + if (ctx->blob->size < sizeof(struct b43_fw_header)) goto err_format; - hdr = (struct b43_fw_header *)(blob->data); + hdr = (struct b43_fw_header *)(ctx->blob->data); switch (hdr->type) { case B43_FW_TYPE_UCODE: case B43_FW_TYPE_PCM: size = be32_to_cpu(hdr->size); - if (size != blob->size - sizeof(struct b43_fw_header)) + if (size != ctx->blob->size - sizeof(struct b43_fw_header)) goto err_format; /* fallthrough */ case B43_FW_TYPE_IV: @@ -2162,7 +2183,7 @@ goto err_format; } - fw->data = blob; + fw->data = ctx->blob; fw->filename = name; fw->type = ctx->req_type; @@ -2172,7 +2193,7 @@ snprintf(ctx->errors[ctx->req_type], sizeof(ctx->errors[ctx->req_type]), "Firmware file \"%s\" format error.\n", ctx->fwname); - release_firmware(blob); + release_firmware(ctx->blob); return -EPROTO; } @@ -2223,7 +2244,7 @@ goto err_no_ucode; } } - err = b43_do_request_fw(ctx, filename, &fw->ucode); + err = b43_do_request_fw(ctx, filename, &fw->ucode, true); if (err) goto err_load; @@ -2235,7 +2256,7 @@ else goto err_no_pcm; fw->pcm_request_failed = false; - err = b43_do_request_fw(ctx, filename, &fw->pcm); + err = b43_do_request_fw(ctx, filename, &fw->pcm, false); if (err == -ENOENT) { /* We did not find a PCM file? Not fatal, but * core rev <= 10 must do without hwcrypto then. */ @@ -2296,7 +2317,7 @@ default: goto err_no_initvals; } - err = b43_do_request_fw(ctx, filename, &fw->initvals); + err = b43_do_request_fw(ctx, filename, &fw->initvals, false); if (err) goto err_load; @@ -2355,10 +2376,12 @@ default: goto err_no_initvals; } - err = b43_do_request_fw(ctx, filename, &fw->initvals_band); + err = b43_do_request_fw(ctx, filename, &fw->initvals_band, false); if (err) goto err_load; + fw->opensource = (ctx->req_type == B43_FWTYPE_OPENSOURCE); + return 0; err_no_ucode: @@ -2428,12 +2451,16 @@ 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; start_ieee80211: + wl->hw->queues = B43_QOS_QUEUE_NUM; + if (!modparam_qos || dev->fw.opensource) + wl->hw->queues = 1; + err = ieee80211_register_hw(wl->hw); if (err) goto err_one_core_detach; @@ -2537,11 +2564,9 @@ dev->fw.hdr_format = B43_FW_HDR_410; else dev->fw.hdr_format = B43_FW_HDR_351; - dev->fw.opensource = (fwdate == 0xFFFF); + WARN_ON(dev->fw.opensource != (fwdate == 0xFFFF)); - /* Default to use-all-queues. */ - dev->wl->hw->queues = dev->wl->mac80211_initially_registered_queues; - dev->qos_enabled = !!modparam_qos; + dev->qos_enabled = dev->wl->hw->queues > 1; /* Default to firmware/hardware crypto acceleration. */ dev->hwcrypto_enabled = true; @@ -2559,14 +2584,8 @@ /* Disable hardware crypto and fall back to software crypto. */ dev->hwcrypto_enabled = false; } - if (!(fwcapa & B43_FWCAPA_QOS)) { - b43info(dev->wl, "QoS not supported by firmware\n"); - /* Disable QoS. Tweak hw->queues to 1. It will be restored before - * ieee80211_unregister to make sure the networking core can - * properly free possible resources. */ - dev->wl->hw->queues = 1; - dev->qos_enabled = false; - } + /* adding QoS support should use an offline discovery mechanism */ + WARN(fwcapa & B43_FWCAPA_QOS, "QoS in OpenFW not supported\n"); } else { b43info(dev->wl, "Loading firmware version %u.%u " "(20%.2i-%.2i-%.2i %.2i:%.2i:%.2i)\n", @@ -3095,7 +3114,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); @@ -3394,7 +3413,7 @@ break; } if (unlikely(err)) - dev_kfree_skb(skb); /* Drop it */ + ieee80211_free_txskb(wl->hw, skb); err = 0; } @@ -3415,7 +3434,7 @@ if (unlikely(skb->len < 2 + 2 + 6)) { /* Too short, this can't be a valid frame. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); return; } B43_WARN_ON(skb_shinfo(skb)->nr_frags); @@ -4182,7 +4201,6 @@ mutex_unlock(&wl->mutex); cancel_delayed_work_sync(&dev->periodic_work); cancel_work_sync(&wl->tx_work); - cancel_work_sync(&wl->firmware_load); mutex_lock(&wl->mutex); dev = wl->current_dev; if (!dev || b43_status(dev) < B43_STAT_STARTED) { @@ -4225,8 +4243,12 @@ /* Drain all TX queues. */ for (queue_num = 0; queue_num < B43_QOS_QUEUE_NUM; queue_num++) { - while (skb_queue_len(&wl->tx_queue[queue_num])) - dev_kfree_skb(skb_dequeue(&wl->tx_queue[queue_num])); + while (skb_queue_len(&wl->tx_queue[queue_num])) { + struct sk_buff *skb; + + skb = skb_dequeue(&wl->tx_queue[queue_num]); + ieee80211_free_txskb(wl->hw, skb); + } } b43_mac_suspend(dev); @@ -5298,8 +5320,6 @@ hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; - hw->queues = modparam_qos ? B43_QOS_QUEUE_NUM : 1; - wl->mac80211_initially_registered_queues = hw->queues; wl->hw_registred = false; hw->max_rates = 2; SET_IEEE80211_DEV(hw, dev->dev); @@ -5371,13 +5391,12 @@ /* We must cancel any work here before unregistering from ieee80211, * as the ieee80211 unreg will destroy the workqueue. */ cancel_work_sync(&wldev->restart_work); + cancel_work_sync(&wl->firmware_load); B43_WARN_ON(!wl); + if (!wldev->fw.ucode.data) + return; /* NULL if firmware never loaded */ if (wl->current_dev == wldev && wl->hw_registred) { - /* Restore the queues count before unregistering, because firmware detect - * might have modified it. Restoring is important, so the networking - * stack can properly free resources. */ - wl->hw->queues = wl->mac80211_initially_registered_queues; b43_leds_stop(wldev); ieee80211_unregister_hw(wl->hw); } @@ -5449,13 +5468,12 @@ /* We must cancel any work here before unregistering from ieee80211, * as the ieee80211 unreg will destroy the workqueue. */ cancel_work_sync(&wldev->restart_work); + cancel_work_sync(&wl->firmware_load); B43_WARN_ON(!wl); + if (!wldev->fw.ucode.data) + return; /* NULL if firmware never loaded */ if (wl->current_dev == wldev && wl->hw_registred) { - /* Restore the queues count before unregistering, because firmware detect - * might have modified it. Restoring is important, so the networking - * stack can properly free resources. */ - wl->hw->queues = wl->mac80211_initially_registered_queues; b43_leds_stop(wldev); ieee80211_unregister_hw(wl->hw); } --- linux-3.5.0.orig/drivers/net/wireless/b43/phy_n.c +++ linux-3.5.0/drivers/net/wireless/b43/phy_n.c @@ -1320,7 +1320,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] = { }; @@ -1371,7 +1371,7 @@ } for (i = 0; i < 4; i++) { s32 curr; - s32 mind = 40; + s32 mind = 0x100000; s32 minpoll = 249; u8 minvcm = 0; if (2 * core != i) @@ -1487,7 +1487,7 @@ u8 regs_save_radio[2]; u16 regs_save_phy[2]; - s8 offset[4]; + s32 offset[4]; u8 core; u8 rail; @@ -1554,7 +1554,7 @@ } for (i = 0; i < 4; i++) { - s32 mind = 40; + s32 mind = 0x100000; u8 minvcm = 0; s32 minpoll = 249; s32 curr; @@ -4582,7 +4582,8 @@ #endif #ifdef CONFIG_B43_SSB case B43_BUS_SSB: - /* FIXME */ + ssb_pmu_spuravoid_pllupdate(&dev->dev->sdev->bus->chipco, + avoid); break; #endif } --- linux-3.5.0.orig/drivers/net/wireless/b43/b43.h +++ linux-3.5.0/drivers/net/wireless/b43/b43.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "debugfs.h" @@ -718,6 +719,10 @@ struct b43_request_fw_context { /* The device we are requesting the fw for. */ struct b43_wldev *dev; + /* a completion event structure needed if this call is asynchronous */ + struct completion fw_load_complete; + /* a pointer to the firmware object */ + const struct firmware *blob; /* The type of firmware to request. */ enum b43_firmware_file_type req_type; /* Error messages for each firmware type. */ @@ -870,13 +875,6 @@ * handler, only. This basically is just the IRQ mask register. */ spinlock_t hardirq_lock; - /* The number of queues that were registered with the mac80211 subsystem - * initially. This is a backup copy of hw->queues in case hw->queues has - * to be dynamically lowered at runtime (Firmware does not support QoS). - * hw->queues has to be restored to the original value before unregistering - * from the mac80211 subsystem. */ - u16 mac80211_initially_registered_queues; - /* Set this if we call ieee80211_register_hw() and check if we call * ieee80211_unregister_hw(). */ bool hw_registred; --- linux-3.5.0.orig/drivers/net/wireless/b43/dma.c +++ linux-3.5.0/drivers/net/wireless/b43/dma.c @@ -409,7 +409,10 @@ struct b43_dmadesc_meta *meta) { if (meta->skb) { - dev_kfree_skb_any(meta->skb); + if (ring->tx) + ieee80211_free_txskb(ring->dev->wl->hw, meta->skb); + else + dev_kfree_skb_any(meta->skb); meta->skb = NULL; } } @@ -1454,7 +1457,7 @@ if (unlikely(err == -ENOKEY)) { /* Drop this packet, as we don't have the encryption key * anymore and must not transmit it unencrypted. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(dev->wl->hw, skb); err = 0; goto out; } @@ -1484,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)) @@ -1498,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; @@ -1519,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 { @@ -1535,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); @@ -1547,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++; @@ -1577,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); @@ -1689,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-3.5.0.orig/drivers/net/wireless/rtlwifi/wifi.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/wifi.h @@ -1555,6 +1555,7 @@ spinlock_t rf_ps_lock; spinlock_t rf_lock; spinlock_t waitq_lock; + spinlock_t usb_lock; /*Dual mac*/ spinlock_t cck_and_rw_pagea_lock; --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/usb.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/usb.c @@ -42,8 +42,12 @@ static void usbctrl_async_callback(struct urb *urb) { - if (urb) - kfree(urb->context); + if (urb) { + /* free dr */ + kfree(urb->setup_packet); + /* free databuf */ + kfree(urb->transfer_buffer); + } } static int _usbctrl_vendorreq_async_write(struct usb_device *udev, u8 request, @@ -55,39 +59,47 @@ u8 reqtype; struct usb_ctrlrequest *dr; struct urb *urb; - struct rtl819x_async_write_data { - u8 data[REALTEK_USB_VENQT_MAX_BUF_SIZE]; - struct usb_ctrlrequest dr; - } *buf; + const u16 databuf_maxlen = REALTEK_USB_VENQT_MAX_BUF_SIZE; + u8 *databuf; + + if (WARN_ON_ONCE(len > databuf_maxlen)) + len = databuf_maxlen; pipe = usb_sndctrlpipe(udev, 0); /* write_out */ reqtype = REALTEK_USB_VENQT_WRITE; - buf = kmalloc(sizeof(*buf), GFP_ATOMIC); - if (!buf) + dr = kmalloc(sizeof(*dr), GFP_ATOMIC); + if (!dr) + return -ENOMEM; + + databuf = kmalloc(databuf_maxlen, GFP_ATOMIC); + if (!databuf) { + kfree(dr); return -ENOMEM; + } urb = usb_alloc_urb(0, GFP_ATOMIC); if (!urb) { - kfree(buf); + kfree(databuf); + kfree(dr); return -ENOMEM; } - dr = &buf->dr; - dr->bRequestType = reqtype; dr->bRequest = request; dr->wValue = cpu_to_le16(value); dr->wIndex = cpu_to_le16(index); dr->wLength = cpu_to_le16(len); /* data are already in little-endian order */ - memcpy(buf, pdata, len); + memcpy(databuf, pdata, len); usb_fill_control_urb(urb, udev, pipe, - (unsigned char *)dr, buf, len, - usbctrl_async_callback, buf); + (unsigned char *)dr, databuf, len, + usbctrl_async_callback, NULL); rc = usb_submit_urb(urb, GFP_ATOMIC); - if (rc < 0) - kfree(buf); + if (rc < 0) { + kfree(databuf); + kfree(dr); + } usb_free_urb(urb); return rc; } @@ -131,15 +143,19 @@ u8 request; u16 wvalue; u16 index; - __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index]; + __le32 *data; + unsigned long flags; + spin_lock_irqsave(&rtlpriv->locks.usb_lock, flags); + if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT) + rtlpriv->usb_data_index = 0; + data = &rtlpriv->usb_data[rtlpriv->usb_data_index]; + spin_unlock_irqrestore(&rtlpriv->locks.usb_lock, flags); request = REALTEK_USB_VENQT_CMD_REQ; index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */ wvalue = (u16)addr; _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len); - if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT) - rtlpriv->usb_data_index = 0; return le32_to_cpu(*data); } @@ -206,17 +222,16 @@ u16 index = REALTEK_USB_VENQT_CMD_IDX; int pipe = usb_sndctrlpipe(udev, 0); /* write_out */ u8 *buffer; - dma_addr_t dma_addr; - wvalue = (u16)(addr&0x0000ffff); - buffer = usb_alloc_coherent(udev, (size_t)len, GFP_ATOMIC, &dma_addr); + wvalue = (u16)(addr & 0x0000ffff); + buffer = kmalloc(len, GFP_ATOMIC); if (!buffer) return; memcpy(buffer, data, len); usb_control_msg(udev, pipe, request, reqtype, wvalue, index, buffer, len, 50); - usb_free_coherent(udev, (size_t)len, buffer, dma_addr); + kfree(buffer); } static void _rtl_usb_io_handler_init(struct device *dev, @@ -539,8 +554,8 @@ WARN_ON(skb_queue_empty(&rx_queue)); while (!skb_queue_empty(&rx_queue)) { _skb = skb_dequeue(&rx_queue); - _rtl_usb_rx_process_agg(hw, skb); - ieee80211_rx_irqsafe(hw, skb); + _rtl_usb_rx_process_agg(hw, _skb); + ieee80211_rx_irqsafe(hw, _skb); } } @@ -838,6 +853,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]; @@ -932,7 +948,8 @@ }; int __devinit rtl_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id) + const struct usb_device_id *id, + struct rtl_hal_cfg *rtl_hal_cfg) { int err; struct ieee80211_hw *hw = NULL; @@ -951,6 +968,10 @@ GFP_KERNEL); if (!rtlpriv->usb_data) return -ENOMEM; + + /* this spin lock must be initialized early */ + spin_lock_init(&rtlpriv->locks.usb_lock); + rtlpriv->usb_data_index = 0; init_completion(&rtlpriv->firmware_loading_complete); SET_IEEE80211_DEV(hw, &intf->dev); @@ -963,7 +984,7 @@ usb_set_intfdata(intf, hw); /* init cfg & intf_ops */ rtlpriv->rtlhal.interface = INTF_USB; - rtlpriv->cfg = (struct rtl_hal_cfg *)(id->driver_info); + rtlpriv->cfg = rtl_hal_cfg; rtlpriv->intf_ops = &rtl_usb_ops; rtl_dbgp_flag_init(hw); /* Init IO handler */ --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/base.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/base.c @@ -980,7 +980,8 @@ is_tx ? "Tx" : "Rx"); if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv-> + works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } @@ -990,7 +991,7 @@ } } else if (ETH_P_ARP == ether_type) { if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv->works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } @@ -1000,7 +1001,7 @@ "802.1X %s EAPOL pkt!!\n", is_tx ? "Tx" : "Rx"); if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv->works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/usb.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/usb.h @@ -157,7 +157,8 @@ int __devinit rtl_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id); + const struct usb_device_id *id, + struct rtl_hal_cfg *rtl92cu_hal_cfg); void rtl_usb_disconnect(struct usb_interface *intf); int rtl_usb_suspend(struct usb_interface *pusb_intf, pm_message_t message); int rtl_usb_resume(struct usb_interface *pusb_intf); --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c @@ -995,8 +995,16 @@ version = (value32 & TYPE_ID) ? VERSION_A_CHIP_92C : VERSION_A_CHIP_88C; } else { - version = (value32 & TYPE_ID) ? VERSION_B_CHIP_92C : - VERSION_B_CHIP_88C; + version = (enum version_8192c) (CHIP_VER_B | + ((value32 & TYPE_ID) ? CHIP_92C_BITMASK : 0) | + ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0)); + if ((!IS_CHIP_VENDOR_UMC(version)) && (value32 & + CHIP_VER_RTL_MASK)) { + version = (enum version_8192c)(version | + ((((value32 & CHIP_VER_RTL_MASK) == BIT(12)) + ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) | + CHIP_VENDOR_UMC)); + } } switch (version) { --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c @@ -162,10 +162,12 @@ /* request fw */ if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && - !IS_92C_SERIAL(rtlhal->version)) + !IS_92C_SERIAL(rtlhal->version)) { rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin"; - else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) + } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) { rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin"; + pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n"); + } rtlpriv->max_fw_size = 0x4000; pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/def.h @@ -117,6 +117,7 @@ #define CHIP_VER_B BIT(4) #define CHIP_92C_BITMASK BIT(0) +#define CHIP_UNKNOWN BIT(7) #define CHIP_92C_1T2R 0x03 #define CHIP_92C 0x01 #define CHIP_88C 0x00 --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192de/phy.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192de/phy.c @@ -3345,21 +3345,21 @@ switch (rtlhal->macphymode) { case DUALMAC_SINGLEPHY: rtlphy->rf_type = RF_2T2R; - rtlhal->version |= CHIP_92D_SINGLEPHY; + rtlhal->version |= RF_TYPE_2T2R; rtlhal->bandset = BAND_ON_BOTH; rtlhal->current_bandtype = BAND_ON_2_4G; break; case SINGLEMAC_SINGLEPHY: rtlphy->rf_type = RF_2T2R; - rtlhal->version |= CHIP_92D_SINGLEPHY; + rtlhal->version |= RF_TYPE_2T2R; rtlhal->bandset = BAND_ON_BOTH; rtlhal->current_bandtype = BAND_ON_2_4G; break; case DUALMAC_DUALPHY: rtlphy->rf_type = RF_1T1R; - rtlhal->version &= (~CHIP_92D_SINGLEPHY); + rtlhal->version &= RF_TYPE_1T1R; /* Now we let MAC0 run on 5G band. */ if (rtlhal->interfaceindex == 0) { rtlhal->bandset = BAND_ON_5G; --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c +++ linux-3.5.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; } @@ -2059,8 +2042,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-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c @@ -285,6 +285,7 @@ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817f, rtl92cu_hal_cfg)}, /* RTL8188CUS-VL */ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x818a, rtl92cu_hal_cfg)}, + {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x819a, rtl92cu_hal_cfg)}, /* 8188 Combo for BC4 */ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754, rtl92cu_hal_cfg)}, @@ -297,6 +298,7 @@ /*=== Customer ID ===*/ /****** 8188CU ********/ {RTL_USB_DEVICE(0x050d, 0x1102, rtl92cu_hal_cfg)}, /*Belkin - Edimax*/ + {RTL_USB_DEVICE(0x050d, 0x11f2, rtl92cu_hal_cfg)}, /*Belkin - ISY*/ {RTL_USB_DEVICE(0x06f8, 0xe033, rtl92cu_hal_cfg)}, /*Hercules - Edimax*/ {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/ {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/ @@ -362,9 +364,15 @@ MODULE_DEVICE_TABLE(usb, rtl8192c_usb_ids); +static int rtl8192cu_probe(struct usb_interface *intf, + const struct usb_device_id *id) +{ + return rtl_usb_probe(intf, id, &rtl92cu_hal_cfg); +} + static struct usb_driver rtl8192cu_driver = { .name = "rtl8192cu", - .probe = rtl_usb_probe, + .probe = rtl8192cu_probe, .disconnect = rtl_usb_disconnect, .id_table = rtl8192c_usb_ids, --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2400pci.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2400pci.h @@ -670,6 +670,7 @@ #define GPIOCSR_BIT5 FIELD32(0x00000020) #define GPIOCSR_BIT6 FIELD32(0x00000040) #define GPIOCSR_BIT7 FIELD32(0x00000080) +#define GPIOCSR_BIT8 FIELD32(0x00000100) /* * BBPPCSR: BBP Pin control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500pci.c @@ -1929,6 +1929,7 @@ static int rt2500pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -1942,6 +1943,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); + rt2x00_set_field32(®, GPIOCSR_DIR0, 1); + rt2x00pci_register_write(rt2x00dev, GPIOCSR, reg); + + /* * Initialize hw specifications. */ retval = rt2500pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt61pci.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt61pci.h @@ -372,6 +372,7 @@ #define MAC_CSR13_BIT10 FIELD32(0x00000400) #define MAC_CSR13_BIT11 FIELD32(0x00000800) #define MAC_CSR13_BIT12 FIELD32(0x00001000) +#define MAC_CSR13_BIT13 FIELD32(0x00002000) /* * MAC_CSR14: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt73usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt73usb.c @@ -2177,6 +2177,7 @@ static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -2190,6 +2191,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00usb_register_read(rt2x00dev, MAC_CSR13, ®); + rt2x00_set_field32(®, MAC_CSR13_BIT15, 0); + rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); + + /* * Initialize hw specifications. */ retval = rt73usb_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800lib.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800lib.c @@ -2255,7 +2255,7 @@ /* * Check if temperature compensation is supported. */ - if (tssi_bounds[4] == 0xff) + if (tssi_bounds[4] == 0xff || step == 0xff) return 0; /* @@ -3862,7 +3862,9 @@ rt2800_register_write(rt2x00dev, OPT_14_CSR, reg); if (!rt2x00_rt(rt2x00dev, RT5390) && - !rt2x00_rt(rt2x00dev, RT5392)) { + !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) || @@ -3873,8 +3875,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); } @@ -4524,7 +4528,8 @@ IEEE80211_HW_SUPPORTS_PS | IEEE80211_HW_PS_NULLFUNC_STACK | IEEE80211_HW_AMPDU_AGGREGATION | - IEEE80211_HW_REPORTS_TX_ACK_STATUS; + IEEE80211_HW_REPORTS_TX_ACK_STATUS | + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL; /* * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2x00dev.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -391,10 +391,9 @@ tx_info->flags |= IEEE80211_TX_STAT_AMPDU; tx_info->status.ampdu_len = 1; tx_info->status.ampdu_ack_len = success ? 1 : 0; - /* - * TODO: Need to tear down BA session here - * if not successful. - */ + + if (!success) + tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK; } if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) { @@ -629,7 +628,7 @@ */ if (unlikely(rxdesc.size == 0 || rxdesc.size > entry->queue->data_size)) { - WARNING(rt2x00dev, "Wrong frame size %d max %d.\n", + ERROR(rt2x00dev, "Wrong frame size %d max %d.\n", rxdesc.size, entry->queue->data_size); dev_kfree_skb(entry->skb); goto renew_skb; @@ -1158,7 +1157,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); /* --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800usb.c @@ -667,8 +667,16 @@ skb_pull(entry->skb, RXINFO_DESC_SIZE); /* - * FIXME: we need to check for rx_pkt_len validity + * Check for rx_pkt_len validity. Return if invalid, leaving + * rxdesc->size zeroed out by the upper level. */ + if (unlikely(rx_pkt_len == 0 || + rx_pkt_len > entry->queue->data_size)) { + ERROR(entry->queue->rt2x00dev, + "Bad frame size %d, forcing to 0\n", rx_pkt_len); + return; + } + rxd = (__le32 *)(entry->skb->data + rx_pkt_len); /* @@ -736,6 +744,7 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -749,6 +758,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00usb_register_read(rt2x00dev, GPIO_CTRL_CFG, ®); + rt2x00_set_field32(®, GPIO_CTRL_CFG_GPIOD_BIT2, 1); + rt2x00usb_register_write(rt2x00dev, GPIO_CTRL_CFG, reg); + + /* * Initialize hw specifications. */ retval = rt2800_probe_hw_mode(rt2x00dev); @@ -971,6 +988,7 @@ { USB_DEVICE(0x0411, 0x015d) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x01a2) }, + { USB_DEVICE(0x0411, 0x01ee) }, /* Corega */ { USB_DEVICE(0x07aa, 0x002f) }, { USB_DEVICE(0x07aa, 0x003c) }, @@ -987,6 +1005,7 @@ { USB_DEVICE(0x07d1, 0x3c15) }, { USB_DEVICE(0x07d1, 0x3c16) }, { USB_DEVICE(0x2001, 0x3c1b) }, + { USB_DEVICE(0x2001, 0x3c1e) }, /* Draytek */ { USB_DEVICE(0x07fa, 0x7712) }, /* DVICO */ @@ -1137,6 +1156,8 @@ #ifdef CONFIG_RT2800USB_RT33XX /* Belkin */ { USB_DEVICE(0x050d, 0x945b) }, + /* D-Link */ + { USB_DEVICE(0x2001, 0x3c17) }, /* Panasonic */ { USB_DEVICE(0x083a, 0xb511) }, /* Philips */ @@ -1154,6 +1175,8 @@ { USB_DEVICE(0x1690, 0x0744) }, { USB_DEVICE(0x1690, 0x0761) }, { USB_DEVICE(0x1690, 0x0764) }, + /* ASUS */ + { USB_DEVICE(0x0b05, 0x179d) }, /* Cisco */ { USB_DEVICE(0x167b, 0x4001) }, /* EnGenius */ @@ -1219,7 +1242,6 @@ { USB_DEVICE(0x0b05, 0x1760) }, { USB_DEVICE(0x0b05, 0x1761) }, { USB_DEVICE(0x0b05, 0x1790) }, - { USB_DEVICE(0x0b05, 0x179d) }, /* AzureWave */ { USB_DEVICE(0x13d3, 0x3262) }, { USB_DEVICE(0x13d3, 0x3284) }, @@ -1237,7 +1259,6 @@ /* D-Link */ { USB_DEVICE(0x07d1, 0x3c0b) }, { USB_DEVICE(0x07d1, 0x3c17) }, - { USB_DEVICE(0x2001, 0x3c17) }, /* Encore */ { USB_DEVICE(0x203d, 0x14a1) }, /* Gemtek */ --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800pci.c @@ -977,6 +977,7 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -990,6 +991,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIO_CTRL_CFG, ®); + rt2x00_set_field32(®, GPIO_CTRL_CFG_GPIOD_BIT2, 1); + rt2x00pci_register_write(rt2x00dev, GPIO_CTRL_CFG, reg); + + /* * Initialize hw specifications. */ retval = rt2800_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2x00pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2x00pci.c @@ -52,8 +52,8 @@ udelay(REGISTER_BUSY_DELAY); } - ERROR(rt2x00dev, "Indirect register access failed: " - "offset=0x%.08x, value=0x%.08x\n", offset, *reg); + printk_once(KERN_ERR "%s() Indirect register access failed: " + "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg); *reg = ~0; return 0; --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500usb.c @@ -283,7 +283,7 @@ u16 reg; rt2500usb_register_read(rt2x00dev, MAC_CSR19, ®); - return rt2x00_get_field32(reg, MAC_CSR19_BIT7); + return rt2x00_get_field16(reg, MAC_CSR19_BIT7); } #ifdef CONFIG_RT2X00_LIB_LEDS @@ -1768,6 +1768,7 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u16 reg; /* * Allocate eeprom data. @@ -1781,6 +1782,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2500usb_register_read(rt2x00dev, MAC_CSR19, ®); + rt2x00_set_field16(®, MAC_CSR19_BIT8, 0); + rt2500usb_register_write(rt2x00dev, MAC_CSR19, reg); + + /* * Initialize hw specifications. */ retval = rt2500usb_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2400pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2400pci.c @@ -1611,6 +1611,7 @@ static int rt2400pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -1624,6 +1625,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); + rt2x00_set_field32(®, GPIOCSR_BIT8, 1); + rt2x00pci_register_write(rt2x00dev, GPIOCSR, reg); + + /* * Initialize hw specifications. */ retval = rt2400pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500usb.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500usb.h @@ -189,14 +189,15 @@ * MAC_CSR19: GPIO control register. */ #define MAC_CSR19 0x0426 -#define MAC_CSR19_BIT0 FIELD32(0x0001) -#define MAC_CSR19_BIT1 FIELD32(0x0002) -#define MAC_CSR19_BIT2 FIELD32(0x0004) -#define MAC_CSR19_BIT3 FIELD32(0x0008) -#define MAC_CSR19_BIT4 FIELD32(0x0010) -#define MAC_CSR19_BIT5 FIELD32(0x0020) -#define MAC_CSR19_BIT6 FIELD32(0x0040) -#define MAC_CSR19_BIT7 FIELD32(0x0080) +#define MAC_CSR19_BIT0 FIELD16(0x0001) +#define MAC_CSR19_BIT1 FIELD16(0x0002) +#define MAC_CSR19_BIT2 FIELD16(0x0004) +#define MAC_CSR19_BIT3 FIELD16(0x0008) +#define MAC_CSR19_BIT4 FIELD16(0x0010) +#define MAC_CSR19_BIT5 FIELD16(0x0020) +#define MAC_CSR19_BIT6 FIELD16(0x0040) +#define MAC_CSR19_BIT7 FIELD16(0x0080) +#define MAC_CSR19_BIT8 FIELD16(0x0100) /* * MAC_CSR20: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt61pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt61pci.c @@ -2243,8 +2243,7 @@ static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { - struct ieee80211_conf conf = { .flags = 0 }; - struct rt2x00lib_conf libconf = { .conf = &conf }; + struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf }; rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); } @@ -2833,6 +2832,7 @@ static int rt61pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Disable power saving. @@ -2851,6 +2851,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, MAC_CSR13, ®); + rt2x00_set_field32(®, MAC_CSR13_BIT13, 1); + rt2x00pci_register_write(rt2x00dev, MAC_CSR13, reg); + + /* * Initialize hw specifications. */ retval = rt61pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt73usb.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt73usb.h @@ -282,6 +282,9 @@ #define MAC_CSR13_BIT10 FIELD32(0x00000400) #define MAC_CSR13_BIT11 FIELD32(0x00000800) #define MAC_CSR13_BIT12 FIELD32(0x00001000) +#define MAC_CSR13_BIT13 FIELD32(0x00002000) +#define MAC_CSR13_BIT14 FIELD32(0x00004000) +#define MAC_CSR13_BIT15 FIELD32(0x00008000) /* * MAC_CSR14: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/p54/p54usb.c +++ linux-3.5.0/drivers/net/wireless/p54/p54usb.c @@ -42,11 +42,12 @@ * whenever you add a new device. */ -static struct usb_device_id p54u_table[] __devinitdata = { +static struct usb_device_id p54u_table[] = { /* Version 1 devices (pci chip + net2280) */ {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ + {USB_DEVICE(0x0675, 0x0530)}, /* DrayTek Vigor 530 */ {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ @@ -82,7 +83,9 @@ {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ + {USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */ {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ + {USB_DEVICE(0x083a, 0x4531)}, /* T-Com Sinus 154 data II */ {USB_DEVICE(0x083a, 0xc501)}, /* Zoom Wireless-G 4410 */ {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ @@ -101,6 +104,7 @@ {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ + /* {USB_DEVICE(0x15a9, 0x0002)}, * Also SparkLAN WL-682 with 3887 */ {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ {USB_DEVICE(0x1740, 0x1000)}, /* Senao NUB-350 */ {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/sdio.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/sdio.c @@ -161,7 +161,6 @@ struct sdio_mmc_card *card; struct mwifiex_adapter *adapter; mmc_pm_flag_t pm_flag = 0; - int hs_actived = 0; int i; int ret = 0; @@ -188,12 +187,14 @@ adapter = card->adapter; /* Enable the Host Sleep */ - hs_actived = mwifiex_enable_hs(adapter); - if (hs_actived) { - pr_debug("cmd: suspend with MMC_PM_KEEP_POWER\n"); - ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); + if (!mwifiex_enable_hs(adapter)) { + dev_err(adapter->dev, "cmd: failed to suspend\n"); + return -EFAULT; } + dev_dbg(adapter->dev, "cmd: suspend with MMC_PM_KEEP_POWER\n"); + ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); + /* Indicate device suspended */ adapter->is_suspended = true; --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/join.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/join.c @@ -1093,10 +1093,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-3.5.0.orig/drivers/net/wireless/mwifiex/cfg80211.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/cfg80211.c @@ -634,9 +634,9 @@ /* * Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid - * MCS index values for us are 0 to 7. + * MCS index values for us are 0 to 15. */ - if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 8)) { + if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 16)) { sinfo->txrate.mcs = priv->tx_rate; sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS; /* 40MHz rate */ @@ -1368,7 +1368,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; @@ -1621,9 +1622,6 @@ if (dev->reg_state == NETREG_REGISTERED) unregister_netdevice(dev); - if (dev->reg_state == NETREG_UNREGISTERED) - free_netdev(dev); - /* Clear the priv in adapter */ priv->netdev = NULL; --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/main.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/main.c @@ -636,6 +636,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-3.5.0.orig/drivers/net/wireless/mwifiex/scan.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/scan.c @@ -1553,7 +1553,7 @@ dev_err(adapter->dev, "SCAN_RESP: too many AP returned (%d)\n", scan_rsp->number_of_sets); ret = -1; - goto done; + goto check_next_scan; } bytes_left = le16_to_cpu(scan_rsp->bss_descript_size); @@ -1624,7 +1624,8 @@ if (!beacon_size || beacon_size > bytes_left) { bss_info += bytes_left; bytes_left = 0; - return -1; + ret = -1; + goto check_next_scan; } /* Initialize the current working beacon pointer for this BSS @@ -1680,7 +1681,7 @@ dev_err(priv->adapter->dev, "%s: bytes left < IE length\n", __func__); - goto done; + goto check_next_scan; } if (element_id == WLAN_EID_DS_PARAMS) { channel = *(u8 *) (current_ptr + @@ -1744,6 +1745,7 @@ } } +check_next_scan: spin_lock_irqsave(&adapter->scan_pending_q_lock, flags); if (list_empty(&adapter->scan_pending_q)) { spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); @@ -1782,7 +1784,6 @@ mwifiex_insert_cmd_to_pending_q(adapter, cmd_node, true); } -done: return ret; } --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/pcie.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/pcie.c @@ -161,7 +161,7 @@ if (pdev) { card = (struct pcie_service_card *) pci_get_drvdata(pdev); - if (!card || card->adapter) { + if (!card || !card->adapter) { pr_err("Card or adapter structure is not valid\n"); return 0; } @@ -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-3.5.0.orig/drivers/net/wireless/mwifiex/cmdevt.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/cmdevt.c @@ -873,9 +873,6 @@ return; } cmd_node = adapter->curr_cmd; - if (cmd_node->wait_q_enabled) - adapter->cmd_wait_q.status = -ETIMEDOUT; - if (cmd_node) { adapter->dbg.timeout_cmd_id = adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index]; @@ -921,6 +918,14 @@ dev_err(adapter->dev, "ps_mode=%d ps_state=%d\n", adapter->ps_mode, adapter->ps_state); + + if (cmd_node->wait_q_enabled) { + adapter->cmd_wait_q.status = -ETIMEDOUT; + wake_up_interruptible(&adapter->cmd_wait_q.wait); + mwifiex_cancel_pending_ioctl(adapter); + /* reset cmd_sent flag to unblock new commands */ + adapter->cmd_sent = false; + } } if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) mwifiex_init_fw_complete(adapter); @@ -1136,6 +1141,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-3.5.0.orig/drivers/net/wireless/mwifiex/sta_ioctl.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/sta_ioctl.c @@ -53,7 +53,6 @@ */ int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter) { - bool cancel_flag = false; int status; struct cmd_ctrl_node *cmd_queued; @@ -70,14 +69,11 @@ queue_work(adapter->workqueue, &adapter->main_work); /* Wait for completion */ - wait_event_interruptible(adapter->cmd_wait_q.wait, - *(cmd_queued->condition)); - if (!*(cmd_queued->condition)) - cancel_flag = true; - - if (cancel_flag) { - mwifiex_cancel_pending_ioctl(adapter); - dev_dbg(adapter->dev, "cmd cancel\n"); + status = wait_event_interruptible(adapter->cmd_wait_q.wait, + *(cmd_queued->condition)); + if (status) { + dev_err(adapter->dev, "cmd_wait_q terminated: %d\n", status); + return status; } status = adapter->cmd_wait_q.status; @@ -109,7 +105,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 |= @@ -121,20 +117,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); } } } @@ -430,8 +417,11 @@ return false; } - wait_event_interruptible(adapter->hs_activate_wait_q, - adapter->hs_activate_wait_q_woken); + if (wait_event_interruptible(adapter->hs_activate_wait_q, + adapter->hs_activate_wait_q_woken)) { + dev_err(adapter->dev, "hs_activate_wait_q terminated\n"); + return false; + } return true; } --- linux-3.5.0.orig/drivers/net/wireless/ti/wlcore/main.c +++ linux-3.5.0/drivers/net/wireless/ti/wlcore/main.c @@ -5398,3 +5398,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Luciano Coelho "); MODULE_AUTHOR("Juuso Oikarinen "); +MODULE_FIRMWARE(WL12XX_NVS_NAME); --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c @@ -764,8 +764,11 @@ { char iovbuf[32]; int retcode; + __le32 arp_mode_le; - brcmf_c_mkiovar("arp_ol", (char *)&arp_mode, 4, iovbuf, sizeof(iovbuf)); + arp_mode_le = cpu_to_le32(arp_mode); + brcmf_c_mkiovar("arp_ol", (char *)&arp_mode_le, 4, iovbuf, + sizeof(iovbuf)); retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); retcode = retcode >= 0 ? 0 : retcode; @@ -781,8 +784,11 @@ { char iovbuf[32]; int retcode; + __le32 arp_enable_le; - brcmf_c_mkiovar("arpoe", (char *)&arp_enable, 4, + arp_enable_le = cpu_to_le32(arp_enable); + + brcmf_c_mkiovar("arpoe", (char *)&arp_enable_le, 4, iovbuf, sizeof(iovbuf)); retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -802,10 +808,10 @@ char buf[128], *ptr; u32 dongle_align = drvr->bus_if->align; u32 glom = 0; - u32 roaming = 1; - uint bcn_timeout = 3; - int scan_assoc_time = 40; - int scan_unassoc_time = 40; + __le32 roaming_le = cpu_to_le32(1); + __le32 bcn_timeout_le = cpu_to_le32(3); + __le32 scan_assoc_time_le = cpu_to_le32(40); + __le32 scan_unassoc_time_le = cpu_to_le32(40); int i; mutex_lock(&drvr->proto_block); @@ -840,14 +846,14 @@ /* Setup timeout if Beacons are lost and roam is off to report link down */ - brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout, 4, iovbuf, + brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout_le, 4, iovbuf, sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); /* Enable/Disable build-in roaming to allowed ext supplicant to take of romaing */ - brcmf_c_mkiovar("roam_off", (char *)&roaming, 4, + brcmf_c_mkiovar("roam_off", (char *)&roaming_le, 4, iovbuf, sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -859,9 +865,9 @@ sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_CHANNEL_TIME, - (char *)&scan_assoc_time, sizeof(scan_assoc_time)); + (char *)&scan_assoc_time_le, sizeof(scan_assoc_time_le)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_UNASSOC_TIME, - (char *)&scan_unassoc_time, sizeof(scan_unassoc_time)); + (char *)&scan_unassoc_time_le, sizeof(scan_unassoc_time_le)); /* Set and enable ARP offload feature */ brcmf_c_arp_offload_set(drvr, BRCMF_ARPOL_MODE); --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -500,8 +500,10 @@ params_le->active_time = cpu_to_le32(-1); params_le->passive_time = cpu_to_le32(-1); params_le->home_time = cpu_to_le32(-1); - if (ssid && ssid->SSID_len) - memcpy(¶ms_le->ssid_le, ssid, sizeof(struct brcmf_ssid)); + if (ssid && ssid->SSID_len) { + params_le->ssid_le.SSID_len = cpu_to_le32(ssid->SSID_len); + memcpy(¶ms_le->ssid_le.SSID, ssid->SSID, ssid->SSID_len); + } } static s32 --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/channel.h +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/channel.h @@ -37,9 +37,6 @@ extern void brcms_c_channel_mgr_detach(struct brcms_cm_info *wlc_cm); -extern u8 brcms_c_channel_locale_flags_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit); - extern bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec); @@ -49,5 +46,6 @@ extern void brcms_c_channel_set_chanspec(struct brcms_cm_info *wlc_cm, u16 chanspec, u8 local_constraint_qdbm); +extern void brcms_c_regd_init(struct brcms_c_info *wlc); #endif /* _WLC_CHANNEL_H */ --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/channel.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/channel.c @@ -15,7 +15,9 @@ */ #include +#include #include +#include #include #include "pub.h" @@ -23,73 +25,17 @@ #include "main.h" #include "stf.h" #include "channel.h" +#include "mac80211_if.h" /* QDB() macro takes a dB value and converts to a quarter dB value */ #define QDB(n) ((n) * BRCMS_TXPWR_DB_FACTOR) -#define LOCALE_CHAN_01_11 (1<<0) -#define LOCALE_CHAN_12_13 (1<<1) -#define LOCALE_CHAN_14 (1<<2) -#define LOCALE_SET_5G_LOW_JP1 (1<<3) /* 34-48, step 2 */ -#define LOCALE_SET_5G_LOW_JP2 (1<<4) /* 34-46, step 4 */ -#define LOCALE_SET_5G_LOW1 (1<<5) /* 36-48, step 4 */ -#define LOCALE_SET_5G_LOW2 (1<<6) /* 52 */ -#define LOCALE_SET_5G_LOW3 (1<<7) /* 56-64, step 4 */ -#define LOCALE_SET_5G_MID1 (1<<8) /* 100-116, step 4 */ -#define LOCALE_SET_5G_MID2 (1<<9) /* 120-124, step 4 */ -#define LOCALE_SET_5G_MID3 (1<<10) /* 128 */ -#define LOCALE_SET_5G_HIGH1 (1<<11) /* 132-140, step 4 */ -#define LOCALE_SET_5G_HIGH2 (1<<12) /* 149-161, step 4 */ -#define LOCALE_SET_5G_HIGH3 (1<<13) /* 165 */ -#define LOCALE_CHAN_52_140_ALL (1<<14) -#define LOCALE_SET_5G_HIGH4 (1<<15) /* 184-216 */ - -#define LOCALE_CHAN_36_64 (LOCALE_SET_5G_LOW1 | \ - LOCALE_SET_5G_LOW2 | \ - LOCALE_SET_5G_LOW3) -#define LOCALE_CHAN_52_64 (LOCALE_SET_5G_LOW2 | LOCALE_SET_5G_LOW3) -#define LOCALE_CHAN_100_124 (LOCALE_SET_5G_MID1 | LOCALE_SET_5G_MID2) -#define LOCALE_CHAN_100_140 (LOCALE_SET_5G_MID1 | LOCALE_SET_5G_MID2 | \ - LOCALE_SET_5G_MID3 | LOCALE_SET_5G_HIGH1) -#define LOCALE_CHAN_149_165 (LOCALE_SET_5G_HIGH2 | LOCALE_SET_5G_HIGH3) -#define LOCALE_CHAN_184_216 LOCALE_SET_5G_HIGH4 - -#define LOCALE_CHAN_01_14 (LOCALE_CHAN_01_11 | \ - LOCALE_CHAN_12_13 | \ - LOCALE_CHAN_14) - -#define LOCALE_RADAR_SET_NONE 0 -#define LOCALE_RADAR_SET_1 1 - -#define LOCALE_RESTRICTED_NONE 0 -#define LOCALE_RESTRICTED_SET_2G_SHORT 1 -#define LOCALE_RESTRICTED_CHAN_165 2 -#define LOCALE_CHAN_ALL_5G 3 -#define LOCALE_RESTRICTED_JAPAN_LEGACY 4 -#define LOCALE_RESTRICTED_11D_2G 5 -#define LOCALE_RESTRICTED_11D_5G 6 -#define LOCALE_RESTRICTED_LOW_HI 7 -#define LOCALE_RESTRICTED_12_13_14 8 - -#define LOCALE_2G_IDX_i 0 -#define LOCALE_5G_IDX_11 0 #define LOCALE_MIMO_IDX_bn 0 #define LOCALE_MIMO_IDX_11n 0 -/* max of BAND_5G_PWR_LVLS and 6 for 2.4 GHz */ -#define BRCMS_MAXPWR_TBL_SIZE 6 /* max of BAND_5G_PWR_LVLS and 14 for 2.4 GHz */ #define BRCMS_MAXPWR_MIMO_TBL_SIZE 14 -/* power level in group of 2.4GHz band channels: - * maxpwr[0] - CCK channels [1] - * maxpwr[1] - CCK channels [2-10] - * maxpwr[2] - CCK channels [11-14] - * maxpwr[3] - OFDM channels [1] - * maxpwr[4] - OFDM channels [2-10] - * maxpwr[5] - OFDM channels [11-14] - */ - /* maxpwr mapping to 5GHz band channels: * maxpwr[0] - channels [34-48] * maxpwr[1] - channels [52-60] @@ -101,16 +47,8 @@ #define LC(id) LOCALE_MIMO_IDX_ ## id -#define LC_2G(id) LOCALE_2G_IDX_ ## id - -#define LC_5G(id) LOCALE_5G_IDX_ ## id - -#define LOCALES(band2, band5, mimo2, mimo5) \ - {LC_2G(band2), LC_5G(band5), LC(mimo2), LC(mimo5)} - -/* macro to get 2.4 GHz channel group index for tx power */ -#define CHANNEL_POWER_IDX_2G_CCK(c) (((c) < 2) ? 0 : (((c) < 11) ? 1 : 2)) -#define CHANNEL_POWER_IDX_2G_OFDM(c) (((c) < 2) ? 3 : (((c) < 11) ? 4 : 5)) +#define LOCALES(mimo2, mimo5) \ + {LC(mimo2), LC(mimo5)} /* macro to get 5 GHz channel group index for tx power */ #define CHANNEL_POWER_IDX_5G(c) (((c) < 52) ? 0 : \ @@ -118,18 +56,37 @@ (((c) < 100) ? 2 : \ (((c) < 149) ? 3 : 4)))) -#define ISDFS_EU(fl) (((fl) & BRCMS_DFS_EU) == BRCMS_DFS_EU) - -struct brcms_cm_band { - /* struct locale_info flags */ - u8 locale_flags; - /* List of valid channels in the country */ - struct brcms_chanvec valid_channels; - /* List of restricted use channels */ - const struct brcms_chanvec *restricted_channels; - /* List of radar sensitive channels */ - const struct brcms_chanvec *radar_channels; - u8 PAD[8]; +#define BRCM_2GHZ_2412_2462 REG_RULE(2412-10, 2462+10, 40, 0, 19, 0) +#define BRCM_2GHZ_2467_2472 REG_RULE(2467-10, 2472+10, 20, 0, 19, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +#define BRCM_5GHZ_5180_5240 REG_RULE(5180-10, 5240+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5260_5320 REG_RULE(5260-10, 5320+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_DFS | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5500_5700 REG_RULE(5500-10, 5700+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_DFS | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5745_5825 REG_RULE(5745-10, 5825+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +static const struct ieee80211_regdomain brcms_regdom_x2 = { + .n_reg_rules = 6, + .alpha2 = "X2", + .reg_rules = { + BRCM_2GHZ_2412_2462, + BRCM_2GHZ_2467_2472, + BRCM_5GHZ_5180_5240, + BRCM_5GHZ_5260_5320, + BRCM_5GHZ_5500_5700, + BRCM_5GHZ_5745_5825, + } }; /* locale per-channel tx power limits for MIMO frames @@ -141,337 +98,23 @@ s8 maxpwr20[BRCMS_MAXPWR_MIMO_TBL_SIZE]; /* tx 40 MHz power limits, qdBm units */ s8 maxpwr40[BRCMS_MAXPWR_MIMO_TBL_SIZE]; - u8 flags; }; /* Country names and abbreviations with locale defined from ISO 3166 */ struct country_info { - const u8 locale_2G; /* 2.4G band locale */ - const u8 locale_5G; /* 5G band locale */ const u8 locale_mimo_2G; /* 2.4G mimo info */ const u8 locale_mimo_5G; /* 5G mimo info */ }; +struct brcms_regd { + struct country_info country; + const struct ieee80211_regdomain *regdomain; +}; + struct brcms_cm_info { struct brcms_pub *pub; struct brcms_c_info *wlc; - char srom_ccode[BRCM_CNTRY_BUF_SZ]; /* Country Code in SROM */ - uint srom_regrev; /* Regulatory Rev for the SROM ccode */ - const struct country_info *country; /* current country def */ - char ccode[BRCM_CNTRY_BUF_SZ]; /* current internal Country Code */ - uint regrev; /* current Regulatory Revision */ - char country_abbrev[BRCM_CNTRY_BUF_SZ]; /* current advertised ccode */ - /* per-band state (one per phy/radio) */ - struct brcms_cm_band bandstate[MAXBANDS]; - /* quiet channels currently for radar sensitivity or 11h support */ - /* channels on which we cannot transmit */ - struct brcms_chanvec quiet_channels; -}; - -/* locale channel and power info. */ -struct locale_info { - u32 valid_channels; - /* List of radar sensitive channels */ - u8 radar_channels; - /* List of channels used only if APs are detected */ - u8 restricted_channels; - /* Max tx pwr in qdBm for each sub-band */ - s8 maxpwr[BRCMS_MAXPWR_TBL_SIZE]; - /* Country IE advertised max tx pwr in dBm per sub-band */ - s8 pub_maxpwr[BAND_5G_PWR_LVLS]; - u8 flags; -}; - -/* Regulatory Matrix Spreadsheet (CLM) MIMO v3.7.9 */ - -/* - * Some common channel sets - */ - -/* No channels */ -static const struct brcms_chanvec chanvec_none = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* All 2.4 GHz HW channels */ -static const struct brcms_chanvec chanvec_all_2G = { - {0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* All 5 GHz HW channels */ -static const struct brcms_chanvec chanvec_all_5G = { - {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x11, 0x11, - 0x01, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x20, 0x22, 0x22, 0x00, 0x00, 0x11, - 0x11, 0x11, 0x11, 0x01} -}; - -/* - * Radar channel sets - */ - -/* Channels 52 - 64, 100 - 140 */ -static const struct brcms_chanvec radar_set1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, /* 52 - 60 */ - 0x01, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, /* 64, 100 - 124 */ - 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 128 - 140 */ - 0x00, 0x00, 0x00, 0x00} -}; - -/* - * Restricted channel sets - */ - -/* Channels 34, 38, 42, 46 */ -static const struct brcms_chanvec restricted_set_japan_legacy = { - {0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 12, 13 */ -static const struct brcms_chanvec restricted_set_2g_short = { - {0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channel 165 */ -static const struct brcms_chanvec restricted_chan_165 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 36 - 48 & 149 - 165 */ -static const struct brcms_chanvec restricted_low_hi = { - {0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x22, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 12 - 14 */ -static const struct brcms_chanvec restricted_set_12_13_14 = { - {0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* global memory to provide working buffer for expanded locale */ - -static const struct brcms_chanvec *g_table_radar_set[] = { - &chanvec_none, - &radar_set1 -}; - -static const struct brcms_chanvec *g_table_restricted_chan[] = { - &chanvec_none, /* restricted_set_none */ - &restricted_set_2g_short, - &restricted_chan_165, - &chanvec_all_5G, - &restricted_set_japan_legacy, - &chanvec_all_2G, /* restricted_set_11d_2G */ - &chanvec_all_5G, /* restricted_set_11d_5G */ - &restricted_low_hi, - &restricted_set_12_13_14 -}; - -static const struct brcms_chanvec locale_2g_01_11 = { - {0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_2g_12_13 = { - {0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_2g_14 = { - {0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW_JP1 = { - {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW_JP2 = { - {0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW1 = { - {0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW3 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID3 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x22, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH3 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_52_140_ALL = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, - 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH4 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x11, 0x11, 0x11, 0x11} -}; - -static const struct brcms_chanvec *g_table_locale_base[] = { - &locale_2g_01_11, - &locale_2g_12_13, - &locale_2g_14, - &locale_5g_LOW_JP1, - &locale_5g_LOW_JP2, - &locale_5g_LOW1, - &locale_5g_LOW2, - &locale_5g_LOW3, - &locale_5g_MID1, - &locale_5g_MID2, - &locale_5g_MID3, - &locale_5g_HIGH1, - &locale_5g_HIGH2, - &locale_5g_HIGH3, - &locale_5g_52_140_ALL, - &locale_5g_HIGH4 -}; - -static void brcms_c_locale_add_channels(struct brcms_chanvec *target, - const struct brcms_chanvec *channels) -{ - u8 i; - for (i = 0; i < sizeof(struct brcms_chanvec); i++) - target->vec[i] |= channels->vec[i]; -} - -static void brcms_c_locale_get_channels(const struct locale_info *locale, - struct brcms_chanvec *channels) -{ - u8 i; - - memset(channels, 0, sizeof(struct brcms_chanvec)); - - for (i = 0; i < ARRAY_SIZE(g_table_locale_base); i++) { - if (locale->valid_channels & (1 << i)) - brcms_c_locale_add_channels(channels, - g_table_locale_base[i]); - } -} - -/* - * Locale Definitions - 2.4 GHz - */ -static const struct locale_info locale_i = { /* locale i. channel 1 - 13 */ - LOCALE_CHAN_01_11 | LOCALE_CHAN_12_13, - LOCALE_RADAR_SET_NONE, - LOCALE_RESTRICTED_SET_2G_SHORT, - {QDB(19), QDB(19), QDB(19), - QDB(19), QDB(19), QDB(19)}, - {20, 20, 20, 0}, - BRCMS_EIRP -}; - -/* - * Locale Definitions - 5 GHz - */ -static const struct locale_info locale_11 = { - /* locale 11. channel 36 - 48, 52 - 64, 100 - 140, 149 - 165 */ - LOCALE_CHAN_36_64 | LOCALE_CHAN_100_140 | LOCALE_CHAN_149_165, - LOCALE_RADAR_SET_1, - LOCALE_RESTRICTED_NONE, - {QDB(21), QDB(21), QDB(21), QDB(21), QDB(21)}, - {23, 23, 23, 30, 30}, - BRCMS_EIRP | BRCMS_DFS_EU -}; - -static const struct locale_info *g_locale_2g_table[] = { - &locale_i -}; - -static const struct locale_info *g_locale_5g_table[] = { - &locale_11 + const struct brcms_regd *world_regd; }; /* @@ -484,7 +127,6 @@ {0, 0, QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), 0, 0}, - 0 }; static const struct locale_mimo_info *g_mimo_2g_table[] = { @@ -497,113 +139,19 @@ static const struct locale_mimo_info locale_11n = { { /* 12.5 dBm */ 50, 50, 50, QDB(15), QDB(15)}, {QDB(14), QDB(15), QDB(15), QDB(15), QDB(15)}, - 0 }; static const struct locale_mimo_info *g_mimo_5g_table[] = { &locale_11n }; -static const struct { - char abbrev[BRCM_CNTRY_BUF_SZ]; /* country abbreviation */ - struct country_info country; -} cntry_locales[] = { +static const struct brcms_regd cntry_locales[] = { + /* Worldwide RoW 2, must always be at index 0 */ { - "X2", LOCALES(i, 11, bn, 11n)}, /* Worldwide RoW 2 */ -}; - -#ifdef SUPPORT_40MHZ -/* 20MHz channel info for 40MHz pairing support */ -struct chan20_info { - u8 sb; - u8 adj_sbs; -}; - -/* indicates adjacent channels that are allowed for a 40 Mhz channel and - * those that permitted by the HT - */ -struct chan20_info chan20_info[] = { - /* 11b/11g */ -/* 0 */ {1, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 1 */ {2, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 2 */ {3, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 3 */ {4, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 4 */ {5, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 5 */ {6, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 6 */ {7, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 7 */ {8, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 8 */ {9, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 9 */ {10, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 10 */ {11, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 11 */ {12, (CH_LOWER_SB)}, -/* 12 */ {13, (CH_LOWER_SB)}, -/* 13 */ {14, (CH_LOWER_SB)}, - -/* 11a japan high */ -/* 14 */ {34, (CH_UPPER_SB)}, -/* 15 */ {38, (CH_LOWER_SB)}, -/* 16 */ {42, (CH_LOWER_SB)}, -/* 17 */ {46, (CH_LOWER_SB)}, - -/* 11a usa low */ -/* 18 */ {36, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 19 */ {40, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 20 */ {44, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 21 */ {48, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 22 */ {52, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 23 */ {56, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 24 */ {60, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 25 */ {64, (CH_LOWER_SB | CH_EWA_VALID)}, - -/* 11a Europe */ -/* 26 */ {100, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 27 */ {104, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 28 */ {108, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 29 */ {112, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 30 */ {116, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 31 */ {120, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 32 */ {124, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 33 */ {128, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 34 */ {132, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 35 */ {136, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 36 */ {140, (CH_LOWER_SB)}, - -/* 11a usa high, ref5 only */ -/* The 0x80 bit in pdiv means these are REF5, other entries are REF20 */ -/* 37 */ {149, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 38 */ {153, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 39 */ {157, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 40 */ {161, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 41 */ {165, (CH_LOWER_SB)}, - -/* 11a japan */ -/* 42 */ {184, (CH_UPPER_SB)}, -/* 43 */ {188, (CH_LOWER_SB)}, -/* 44 */ {192, (CH_UPPER_SB)}, -/* 45 */ {196, (CH_LOWER_SB)}, -/* 46 */ {200, (CH_UPPER_SB)}, -/* 47 */ {204, (CH_LOWER_SB)}, -/* 48 */ {208, (CH_UPPER_SB)}, -/* 49 */ {212, (CH_LOWER_SB)}, -/* 50 */ {216, (CH_LOWER_SB)} + .country = LOCALES(bn, 11n), + .regdomain = &brcms_regdom_x2, + }, }; -#endif /* SUPPORT_40MHZ */ - -static const struct locale_info *brcms_c_get_locale_2g(u8 locale_idx) -{ - if (locale_idx >= ARRAY_SIZE(g_locale_2g_table)) - return NULL; /* error condition */ - - return g_locale_2g_table[locale_idx]; -} - -static const struct locale_info *brcms_c_get_locale_5g(u8 locale_idx) -{ - if (locale_idx >= ARRAY_SIZE(g_locale_5g_table)) - return NULL; /* error condition */ - - return g_locale_5g_table[locale_idx]; -} static const struct locale_mimo_info *brcms_c_get_mimo_2g(u8 locale_idx) { @@ -621,13 +169,6 @@ return g_mimo_5g_table[locale_idx]; } -static int -brcms_c_country_aggregate_map(struct brcms_cm_info *wlc_cm, const char *ccode, - char *mapped_ccode, uint *mapped_regrev) -{ - return false; -} - /* * Indicates whether the country provided is valid to pass * to cfg80211 or not. @@ -662,155 +203,24 @@ return true; } -/* Lookup a country info structure from a null terminated country - * abbreviation and regrev directly with no translation. - */ -static const struct country_info * -brcms_c_country_lookup_direct(const char *ccode, uint regrev) -{ - uint size, i; - - /* Should just return 0 for single locale driver. */ - /* Keep it this way in case we add more locales. (for now anyway) */ - - /* - * all other country def arrays are for regrev == 0, so if - * regrev is non-zero, fail - */ - if (regrev > 0) - return NULL; - - /* find matched table entry from country code */ - size = ARRAY_SIZE(cntry_locales); - for (i = 0; i < size; i++) { - if (strcmp(ccode, cntry_locales[i].abbrev) == 0) - return &cntry_locales[i].country; - } - return NULL; -} - -static const struct country_info * -brcms_c_countrycode_map(struct brcms_cm_info *wlc_cm, const char *ccode, - char *mapped_ccode, uint *mapped_regrev) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - const struct country_info *country; - uint srom_regrev = wlc_cm->srom_regrev; - const char *srom_ccode = wlc_cm->srom_ccode; - int mapped; - - /* check for currently supported ccode size */ - if (strlen(ccode) > (BRCM_CNTRY_BUF_SZ - 1)) { - wiphy_err(wlc->wiphy, "wl%d: %s: ccode \"%s\" too long for " - "match\n", wlc->pub->unit, __func__, ccode); - return NULL; - } - - /* default mapping is the given ccode and regrev 0 */ - strncpy(mapped_ccode, ccode, BRCM_CNTRY_BUF_SZ); - *mapped_regrev = 0; - - /* If the desired country code matches the srom country code, - * then the mapped country is the srom regulatory rev. - * Otherwise look for an aggregate mapping. - */ - if (!strcmp(srom_ccode, ccode)) { - *mapped_regrev = srom_regrev; - mapped = 0; - wiphy_err(wlc->wiphy, "srom_code == ccode %s\n", __func__); - } else { - mapped = - brcms_c_country_aggregate_map(wlc_cm, ccode, mapped_ccode, - mapped_regrev); - } - - /* find the matching built-in country definition */ - country = brcms_c_country_lookup_direct(mapped_ccode, *mapped_regrev); - - /* if there is not an exact rev match, default to rev zero */ - if (country == NULL && *mapped_regrev != 0) { - *mapped_regrev = 0; - country = - brcms_c_country_lookup_direct(mapped_ccode, *mapped_regrev); - } - - return country; -} - -/* Lookup a country info structure from a null terminated country code - * The lookup is case sensitive. - */ -static const struct country_info * -brcms_c_country_lookup(struct brcms_c_info *wlc, const char *ccode) -{ - const struct country_info *country; - char mapped_ccode[BRCM_CNTRY_BUF_SZ]; - uint mapped_regrev; - - /* - * map the country code to a built-in country code, regrev, and - * country_info struct - */ - country = brcms_c_countrycode_map(wlc->cmi, ccode, mapped_ccode, - &mapped_regrev); - - return country; -} - -/* - * reset the quiet channels vector to the union - * of the restricted and radar channel sets - */ -static void brcms_c_quiet_channels_reset(struct brcms_cm_info *wlc_cm) +static const struct brcms_regd *brcms_world_regd(const char *regdom, int len) { - struct brcms_c_info *wlc = wlc_cm->wlc; - uint i, j; - struct brcms_band *band; - const struct brcms_chanvec *chanvec; - - memset(&wlc_cm->quiet_channels, 0, sizeof(struct brcms_chanvec)); - - band = wlc->band; - for (i = 0; i < wlc->pub->_nbands; - i++, band = wlc->bandstate[OTHERBANDUNIT(wlc)]) { - - /* initialize quiet channels for restricted channels */ - chanvec = wlc_cm->bandstate[band->bandunit].restricted_channels; - for (j = 0; j < sizeof(struct brcms_chanvec); j++) - wlc_cm->quiet_channels.vec[j] |= chanvec->vec[j]; + const struct brcms_regd *regd = NULL; + int i; + for (i = 0; i < ARRAY_SIZE(cntry_locales); i++) { + if (!strncmp(regdom, cntry_locales[i].regdomain->alpha2, len)) { + regd = &cntry_locales[i]; + break; + } } -} -/* Is the channel valid for the current locale and current band? */ -static bool brcms_c_valid_channel20(struct brcms_cm_info *wlc_cm, uint val) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - - return ((val < MAXCHANNEL) && - isset(wlc_cm->bandstate[wlc->band->bandunit].valid_channels.vec, - val)); + return regd; } -/* Is the channel valid for the current locale and specified band? */ -static bool brcms_c_valid_channel20_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit, uint val) +static const struct brcms_regd *brcms_default_world_regd(void) { - return ((val < MAXCHANNEL) - && isset(wlc_cm->bandstate[bandunit].valid_channels.vec, val)); -} - -/* Is the channel valid for the current locale? (but don't consider channels not - * available due to bandlocking) - */ -static bool brcms_c_valid_channel20_db(struct brcms_cm_info *wlc_cm, uint val) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - - return brcms_c_valid_channel20(wlc->cmi, val) || - (!wlc->bandlocked - && brcms_c_valid_channel20_in_band(wlc->cmi, - OTHERBANDUNIT(wlc), val)); + return &cntry_locales[0]; } /* JP, J1 - J10 are Japan ccodes */ @@ -820,12 +230,6 @@ (ccode[1] == 'P' || (ccode[1] >= '1' && ccode[1] <= '9'))); } -/* Returns true if currently set country is Japan or variant */ -static bool brcms_c_japan(struct brcms_c_info *wlc) -{ - return brcms_c_japan_ccode(wlc->cmi->country_abbrev); -} - static void brcms_c_channel_min_txpower_limits_with_local_constraint( struct brcms_cm_info *wlc_cm, struct txpwr_limits *txpwr, @@ -901,140 +305,16 @@ } -/* Update the radio state (enable/disable) and tx power targets - * based on a new set of channel/regulatory information - */ -static void brcms_c_channels_commit(struct brcms_cm_info *wlc_cm) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - uint chan; - struct txpwr_limits txpwr; - - /* search for the existence of any valid channel */ - for (chan = 0; chan < MAXCHANNEL; chan++) { - if (brcms_c_valid_channel20_db(wlc->cmi, chan)) - break; - } - if (chan == MAXCHANNEL) - chan = INVCHANNEL; - - /* - * based on the channel search above, set or - * clear WL_RADIO_COUNTRY_DISABLE. - */ - if (chan == INVCHANNEL) { - /* - * country/locale with no valid channels, set - * the radio disable bit - */ - mboolset(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); - wiphy_err(wlc->wiphy, "wl%d: %s: no valid channel for \"%s\" " - "nbands %d bandlocked %d\n", wlc->pub->unit, - __func__, wlc_cm->country_abbrev, wlc->pub->_nbands, - wlc->bandlocked); - } else if (mboolisset(wlc->pub->radio_disabled, - WL_RADIO_COUNTRY_DISABLE)) { - /* - * country/locale with valid channel, clear - * the radio disable bit - */ - mboolclr(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); - } - - /* - * Now that the country abbreviation is set, if the radio supports 2G, - * then set channel 14 restrictions based on the new locale. - */ - if (wlc->pub->_nbands > 1 || wlc->band->bandtype == BRCM_BAND_2G) - wlc_phy_chanspec_ch14_widefilter_set(wlc->band->pi, - brcms_c_japan(wlc) ? true : - false); - - if (wlc->pub->up && chan != INVCHANNEL) { - brcms_c_channel_reg_limits(wlc_cm, wlc->chanspec, &txpwr); - brcms_c_channel_min_txpower_limits_with_local_constraint(wlc_cm, - &txpwr, BRCMS_TXPWR_MAX); - wlc_phy_txpower_limit_set(wlc->band->pi, &txpwr, wlc->chanspec); - } -} - -static int -brcms_c_channels_init(struct brcms_cm_info *wlc_cm, - const struct country_info *country) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - uint i, j; - struct brcms_band *band; - const struct locale_info *li; - struct brcms_chanvec sup_chan; - const struct locale_mimo_info *li_mimo; - - band = wlc->band; - for (i = 0; i < wlc->pub->_nbands; - i++, band = wlc->bandstate[OTHERBANDUNIT(wlc)]) { - - li = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_locale_5g(country->locale_5G) : - brcms_c_get_locale_2g(country->locale_2G); - wlc_cm->bandstate[band->bandunit].locale_flags = li->flags; - li_mimo = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_mimo_5g(country->locale_mimo_5G) : - brcms_c_get_mimo_2g(country->locale_mimo_2G); - - /* merge the mimo non-mimo locale flags */ - wlc_cm->bandstate[band->bandunit].locale_flags |= - li_mimo->flags; - - wlc_cm->bandstate[band->bandunit].restricted_channels = - g_table_restricted_chan[li->restricted_channels]; - wlc_cm->bandstate[band->bandunit].radar_channels = - g_table_radar_set[li->radar_channels]; - - /* - * set the channel availability, masking out the channels - * that may not be supported on this phy. - */ - wlc_phy_chanspec_band_validch(band->pi, band->bandtype, - &sup_chan); - brcms_c_locale_get_channels(li, - &wlc_cm->bandstate[band->bandunit]. - valid_channels); - for (j = 0; j < sizeof(struct brcms_chanvec); j++) - wlc_cm->bandstate[band->bandunit].valid_channels. - vec[j] &= sup_chan.vec[j]; - } - - brcms_c_quiet_channels_reset(wlc_cm); - brcms_c_channels_commit(wlc_cm); - - return 0; -} - /* * set the driver's current country and regulatory information * using a country code as the source. Look up built in country * information found with the country code. */ static void -brcms_c_set_country_common(struct brcms_cm_info *wlc_cm, - const char *country_abbrev, - const char *ccode, uint regrev, - const struct country_info *country) +brcms_c_set_country(struct brcms_cm_info *wlc_cm, + const struct brcms_regd *regd) { - const struct locale_info *locale; struct brcms_c_info *wlc = wlc_cm->wlc; - char prev_country_abbrev[BRCM_CNTRY_BUF_SZ]; - - /* save current country state */ - wlc_cm->country = country; - - memset(&prev_country_abbrev, 0, BRCM_CNTRY_BUF_SZ); - strncpy(prev_country_abbrev, wlc_cm->country_abbrev, - BRCM_CNTRY_BUF_SZ - 1); - - strncpy(wlc_cm->country_abbrev, country_abbrev, BRCM_CNTRY_BUF_SZ - 1); - strncpy(wlc_cm->ccode, ccode, BRCM_CNTRY_BUF_SZ - 1); - wlc_cm->regrev = regrev; if ((wlc->pub->_n_enab & SUPPORT_11N) != wlc->protection->nmode_user) @@ -1042,75 +322,19 @@ brcms_c_stf_ss_update(wlc, wlc->bandstate[BAND_2G_INDEX]); brcms_c_stf_ss_update(wlc, wlc->bandstate[BAND_5G_INDEX]); - /* set or restore gmode as required by regulatory */ - locale = brcms_c_get_locale_2g(country->locale_2G); - if (locale && (locale->flags & BRCMS_NO_OFDM)) - brcms_c_set_gmode(wlc, GMODE_LEGACY_B, false); - else - brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); - brcms_c_channels_init(wlc_cm, country); + brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); return; } -static int -brcms_c_set_countrycode_rev(struct brcms_cm_info *wlc_cm, - const char *country_abbrev, - const char *ccode, int regrev) -{ - const struct country_info *country; - char mapped_ccode[BRCM_CNTRY_BUF_SZ]; - uint mapped_regrev; - - /* if regrev is -1, lookup the mapped country code, - * otherwise use the ccode and regrev directly - */ - if (regrev == -1) { - /* - * map the country code to a built-in country - * code, regrev, and country_info - */ - country = - brcms_c_countrycode_map(wlc_cm, ccode, mapped_ccode, - &mapped_regrev); - } else { - /* find the matching built-in country definition */ - country = brcms_c_country_lookup_direct(ccode, regrev); - strncpy(mapped_ccode, ccode, BRCM_CNTRY_BUF_SZ); - mapped_regrev = regrev; - } - - if (country == NULL) - return -EINVAL; - - /* set the driver state for the country */ - brcms_c_set_country_common(wlc_cm, country_abbrev, mapped_ccode, - mapped_regrev, country); - - return 0; -} - -/* - * set the driver's current country and regulatory information using - * a country code as the source. Lookup built in country information - * found with the country code. - */ -static int -brcms_c_set_countrycode(struct brcms_cm_info *wlc_cm, const char *ccode) -{ - char country_abbrev[BRCM_CNTRY_BUF_SZ]; - strncpy(country_abbrev, ccode, BRCM_CNTRY_BUF_SZ); - return brcms_c_set_countrycode_rev(wlc_cm, country_abbrev, ccode, -1); -} - struct brcms_cm_info *brcms_c_channel_mgr_attach(struct brcms_c_info *wlc) { struct brcms_cm_info *wlc_cm; - char country_abbrev[BRCM_CNTRY_BUF_SZ]; - const struct country_info *country; struct brcms_pub *pub = wlc->pub; struct ssb_sprom *sprom = &wlc->hw->d11core->bus->sprom; + const char *ccode = sprom->alpha2; + int ccode_len = sizeof(sprom->alpha2); BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); @@ -1122,24 +346,27 @@ wlc->cmi = wlc_cm; /* store the country code for passing up as a regulatory hint */ - if (sprom->alpha2 && brcms_c_country_valid(sprom->alpha2)) - strncpy(wlc->pub->srom_ccode, sprom->alpha2, sizeof(sprom->alpha2)); + wlc_cm->world_regd = brcms_world_regd(ccode, ccode_len); + if (brcms_c_country_valid(ccode)) + strncpy(wlc->pub->srom_ccode, ccode, ccode_len); /* - * internal country information which must match - * regulatory constraints in firmware - */ - memset(country_abbrev, 0, BRCM_CNTRY_BUF_SZ); - strncpy(country_abbrev, "X2", sizeof(country_abbrev) - 1); - country = brcms_c_country_lookup(wlc, country_abbrev); + * If no custom world domain is found in the SROM, use the + * default "X2" domain. + */ + if (!wlc_cm->world_regd) { + wlc_cm->world_regd = brcms_default_world_regd(); + ccode = wlc_cm->world_regd->regdomain->alpha2; + ccode_len = BRCM_CNTRY_BUF_SZ - 1; + } /* save default country for exiting 11d regulatory mode */ - strncpy(wlc->country_default, country_abbrev, BRCM_CNTRY_BUF_SZ - 1); + strncpy(wlc->country_default, ccode, ccode_len); /* initialize autocountry_default to driver default */ - strncpy(wlc->autocountry_default, "X2", BRCM_CNTRY_BUF_SZ - 1); + strncpy(wlc->autocountry_default, ccode, ccode_len); - brcms_c_set_countrycode(wlc_cm, country_abbrev); + brcms_c_set_country(wlc_cm, wlc_cm->world_regd); return wlc_cm; } @@ -1149,30 +376,12 @@ kfree(wlc_cm); } -u8 -brcms_c_channel_locale_flags_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit) -{ - return wlc_cm->bandstate[bandunit].locale_flags; -} - -static bool -brcms_c_quiet_chanspec(struct brcms_cm_info *wlc_cm, u16 chspec) -{ - return (wlc_cm->wlc->pub->_n_enab & SUPPORT_11N) && - CHSPEC_IS40(chspec) ? - (isset(wlc_cm->quiet_channels.vec, - lower_20_sb(CHSPEC_CHANNEL(chspec))) || - isset(wlc_cm->quiet_channels.vec, - upper_20_sb(CHSPEC_CHANNEL(chspec)))) : - isset(wlc_cm->quiet_channels.vec, CHSPEC_CHANNEL(chspec)); -} - void brcms_c_channel_set_chanspec(struct brcms_cm_info *wlc_cm, u16 chanspec, u8 local_constraint_qdbm) { struct brcms_c_info *wlc = wlc_cm->wlc; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; struct txpwr_limits txpwr; brcms_c_channel_reg_limits(wlc_cm, chanspec, &txpwr); @@ -1181,8 +390,14 @@ wlc_cm, &txpwr, local_constraint_qdbm ); + /* set or restore gmode as required by regulatory */ + if (ch->flags & IEEE80211_CHAN_NO_OFDM) + brcms_c_set_gmode(wlc, GMODE_LEGACY_B, false); + else + brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); + brcms_b_set_chanspec(wlc->hw, chanspec, - (brcms_c_quiet_chanspec(wlc_cm, chanspec) != 0), + !!(ch->flags & IEEE80211_CHAN_PASSIVE_SCAN), &txpwr); } @@ -1191,15 +406,14 @@ struct txpwr_limits *txpwr) { struct brcms_c_info *wlc = wlc_cm->wlc; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; uint i; uint chan; int maxpwr; int delta; const struct country_info *country; struct brcms_band *band; - const struct locale_info *li; int conducted_max = BRCMS_TXPWR_MAX; - int conducted_ofdm_max = BRCMS_TXPWR_MAX; const struct locale_mimo_info *li_mimo; int maxpwr20, maxpwr40; int maxpwr_idx; @@ -1207,67 +421,35 @@ memset(txpwr, 0, sizeof(struct txpwr_limits)); - if (!brcms_c_valid_chanspec_db(wlc_cm, chanspec)) { - country = brcms_c_country_lookup(wlc, wlc->autocountry_default); - if (country == NULL) - return; - } else { - country = wlc_cm->country; - } + if (WARN_ON(!ch)) + return; + + country = &wlc_cm->world_regd->country; chan = CHSPEC_CHANNEL(chanspec); band = wlc->bandstate[chspec_bandunit(chanspec)]; - li = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_locale_5g(country->locale_5G) : - brcms_c_get_locale_2g(country->locale_2G); - li_mimo = (band->bandtype == BRCM_BAND_5G) ? brcms_c_get_mimo_5g(country->locale_mimo_5G) : brcms_c_get_mimo_2g(country->locale_mimo_2G); - if (li->flags & BRCMS_EIRP) { - delta = band->antgain; - } else { - delta = 0; - if (band->antgain > QDB(6)) - delta = band->antgain - QDB(6); /* Excess over 6 dB */ - } + delta = band->antgain; - if (li == &locale_i) { + if (band->bandtype == BRCM_BAND_2G) conducted_max = QDB(22); - conducted_ofdm_max = QDB(22); - } + + maxpwr = QDB(ch->max_power) - delta; + maxpwr = max(maxpwr, 0); + maxpwr = min(maxpwr, conducted_max); /* CCK txpwr limits for 2.4G band */ if (band->bandtype == BRCM_BAND_2G) { - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_2G_CCK(chan)]; - - maxpwr = maxpwr - delta; - maxpwr = max(maxpwr, 0); - maxpwr = min(maxpwr, conducted_max); - for (i = 0; i < BRCMS_NUM_RATES_CCK; i++) txpwr->cck[i] = (u8) maxpwr; } - /* OFDM txpwr limits for 2.4G or 5G bands */ - if (band->bandtype == BRCM_BAND_2G) - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_2G_OFDM(chan)]; - else - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_5G(chan)]; - - maxpwr = maxpwr - delta; - maxpwr = max(maxpwr, 0); - maxpwr = min(maxpwr, conducted_ofdm_max); - - /* Keep OFDM lmit below CCK limit */ - if (band->bandtype == BRCM_BAND_2G) - maxpwr = min_t(int, maxpwr, txpwr->cck[0]); - - for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) + for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) { txpwr->ofdm[i] = (u8) maxpwr; - for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) { /* * OFDM 40 MHz SISO has the same power as the corresponding * MCS0-7 rate unless overriden by the locale specific code. @@ -1282,14 +464,9 @@ txpwr->ofdm_40_cdd[i] = 0; } - /* MIMO/HT specific limits */ - if (li_mimo->flags & BRCMS_EIRP) { - delta = band->antgain; - } else { - delta = 0; - if (band->antgain > QDB(6)) - delta = band->antgain - QDB(6); /* Excess over 6 dB */ - } + delta = 0; + if (band->antgain > QDB(6)) + delta = band->antgain - QDB(6); /* Excess over 6 dB */ if (band->bandtype == BRCM_BAND_2G) maxpwr_idx = (chan - 1); @@ -1431,8 +608,7 @@ * and they are also a legal HT combination */ static bool -brcms_c_valid_chanspec_ext(struct brcms_cm_info *wlc_cm, u16 chspec, - bool dualband) +brcms_c_valid_chanspec_ext(struct brcms_cm_info *wlc_cm, u16 chspec) { struct brcms_c_info *wlc = wlc_cm->wlc; u8 channel = CHSPEC_CHANNEL(chspec); @@ -1448,59 +624,166 @@ chspec_bandunit(chspec)) return false; - /* Check a 20Mhz channel */ - if (CHSPEC_IS20(chspec)) { - if (dualband) - return brcms_c_valid_channel20_db(wlc_cm->wlc->cmi, - channel); - else - return brcms_c_valid_channel20(wlc_cm->wlc->cmi, - channel); + return true; +} + +bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec) +{ + return brcms_c_valid_chanspec_ext(wlc_cm, chspec); +} + +static bool brcms_is_radar_freq(u16 center_freq) +{ + return center_freq >= 5260 && center_freq <= 5700; +} + +static void brcms_reg_apply_radar_flags(struct wiphy *wiphy) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + int i; + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + if (!sband) + return; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + + if (!brcms_is_radar_freq(ch->center_freq)) + continue; + + /* + * All channels in this range should be passive and have + * DFS enabled. + */ + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch->flags |= IEEE80211_CHAN_RADAR | + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; } -#ifdef SUPPORT_40MHZ - /* - * We know we are now checking a 40MHZ channel, so we should - * only be here for NPHYS - */ - if (BRCMS_ISNPHY(wlc->band) || BRCMS_ISSSLPNPHY(wlc->band)) { - u8 upper_sideband = 0, idx; - u8 num_ch20_entries = - sizeof(chan20_info) / sizeof(struct chan20_info); - - if (!VALID_40CHANSPEC_IN_BAND(wlc, chspec_bandunit(chspec))) - return false; - - if (dualband) { - if (!brcms_c_valid_channel20_db(wlc->cmi, - lower_20_sb(channel)) || - !brcms_c_valid_channel20_db(wlc->cmi, - upper_20_sb(channel))) - return false; - } else { - if (!brcms_c_valid_channel20(wlc->cmi, - lower_20_sb(channel)) || - !brcms_c_valid_channel20(wlc->cmi, - upper_20_sb(channel))) - return false; +} + +static void +brcms_reg_apply_beaconing_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + const struct ieee80211_reg_rule *rule; + int band, i, ret; + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + sband = wiphy->bands[band]; + if (!sband) + continue; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + + if (ch->flags & + (IEEE80211_CHAN_DISABLED | IEEE80211_CHAN_RADAR)) + continue; + + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { + ret = freq_reg_info(wiphy, ch->center_freq, + 0, &rule); + if (ret) + continue; + + if (!(rule->flags & NL80211_RRF_NO_IBSS)) + ch->flags &= ~IEEE80211_CHAN_NO_IBSS; + if (!(rule->flags & NL80211_RRF_PASSIVE_SCAN)) + ch->flags &= + ~IEEE80211_CHAN_PASSIVE_SCAN; + } else if (ch->beacon_found) { + ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN); + } } + } +} + +static int brcms_reg_notifier(struct wiphy *wiphy, + struct regulatory_request *request) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct brcms_info *wl = hw->priv; + struct brcms_c_info *wlc = wl->wlc; + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + int band, i; + bool ch_found = false; + + brcms_reg_apply_radar_flags(wiphy); + + if (request->initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) + brcms_reg_apply_beaconing_flags(wiphy, request->initiator); + + /* Disable radio if all channels disallowed by regulatory */ + for (band = 0; !ch_found && band < IEEE80211_NUM_BANDS; band++) { + sband = wiphy->bands[band]; + if (!sband) + continue; + + for (i = 0; !ch_found && i < sband->n_channels; i++) { + ch = &sband->channels[i]; - /* find the lower sideband info in the sideband array */ - for (idx = 0; idx < num_ch20_entries; idx++) { - if (chan20_info[idx].sb == lower_20_sb(channel)) - upper_sideband = chan20_info[idx].adj_sbs; + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch_found = true; } - /* check that the lower sideband allows an upper sideband */ - if ((upper_sideband & (CH_UPPER_SB | CH_EWA_VALID)) == - (CH_UPPER_SB | CH_EWA_VALID)) - return true; - return false; } -#endif /* 40 MHZ */ - return false; + if (ch_found) { + mboolclr(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); + } else { + mboolset(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); + wiphy_err(wlc->wiphy, "wl%d: %s: no valid channel for \"%s\"\n", + wlc->pub->unit, __func__, request->alpha2); + } + + if (wlc->pub->_nbands > 1 || wlc->band->bandtype == BRCM_BAND_2G) + wlc_phy_chanspec_ch14_widefilter_set(wlc->band->pi, + brcms_c_japan_ccode(request->alpha2)); + + return 0; } -bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec) +void brcms_c_regd_init(struct brcms_c_info *wlc) { - return brcms_c_valid_chanspec_ext(wlc_cm, chspec, true); + struct wiphy *wiphy = wlc->wiphy; + const struct brcms_regd *regd = wlc->cmi->world_regd; + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + struct brcms_chanvec sup_chan; + struct brcms_band *band; + int band_idx, i; + + /* Disable any channels not supported by the phy */ + for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) { + if (band_idx == IEEE80211_BAND_2GHZ) + band = wlc->bandstate[BAND_2G_INDEX]; + else + band = wlc->bandstate[BAND_5G_INDEX]; + + /* skip if band not initialized */ + if (band->pi == NULL) + continue; + + wlc_phy_chanspec_band_validch(band->pi, band->bandtype, + &sup_chan); + + sband = wiphy->bands[band_idx]; + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (!isset(sup_chan.vec, ch->hw_value)) + ch->flags |= IEEE80211_CHAN_DISABLED; + } + } + + wlc->wiphy->reg_notifier = brcms_reg_notifier; + wlc->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | + WIPHY_FLAG_STRICT_REGULATORY; + wiphy_apply_custom_regulatory(wlc->wiphy, regd->regdomain); + brcms_reg_apply_beaconing_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER); } --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/main.c @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -3139,20 +3140,6 @@ brcms_b_reset(wlc->hw); } -/* Return the channel the driver should initialize during brcms_c_init. - * the channel may have to be changed from the currently configured channel - * if other configurations are in conflict (bandlocked, 11n mode disabled, - * invalid channel for current country, etc.) - */ -static u16 brcms_c_init_chanspec(struct brcms_c_info *wlc) -{ - u16 chanspec = - 1 | WL_CHANSPEC_BW_20 | WL_CHANSPEC_CTL_SB_NONE | - WL_CHANSPEC_BAND_2G; - - return chanspec; -} - void brcms_c_init_scb(struct scb *scb) { int i; @@ -5129,6 +5116,8 @@ /* make interface operational */ int brcms_c_up(struct brcms_c_info *wlc) { + struct ieee80211_channel *ch; + BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); /* HW is turned off so don't try to access it */ @@ -5195,8 +5184,9 @@ wlc->pub->up = true; if (wlc->bandinit_pending) { + ch = wlc->pub->ieee_hw->conf.channel; brcms_c_suspend_mac_and_wait(wlc); - brcms_c_set_chanspec(wlc, wlc->default_bss->chanspec); + brcms_c_set_chanspec(wlc, ch20mhz_chspec(ch->hw_value)); wlc->bandinit_pending = false; brcms_c_enable_mac(wlc); } @@ -5397,11 +5387,6 @@ else return -EINVAL; - /* Legacy or bust when no OFDM is supported by regulatory */ - if ((brcms_c_channel_locale_flags_in_band(wlc->cmi, band->bandunit) & - BRCMS_NO_OFDM) && (gmode != GMODE_LEGACY_B)) - return -EINVAL; - /* update configuration value */ if (config) brcms_c_protection_upd(wlc, BRCMS_PROT_G_USER, gmode); @@ -8201,19 +8186,12 @@ void brcms_c_init(struct brcms_c_info *wlc, bool mute_tx) { struct bcma_device *core = wlc->hw->d11core; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; u16 chanspec; BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); - /* - * This will happen if a big-hammer was executed. In - * that case, we want to go back to the channel that - * we were on and not new channel - */ - if (wlc->pub->associated) - chanspec = wlc->home_chanspec; - else - chanspec = brcms_c_init_chanspec(wlc); + chanspec = ch20mhz_chspec(ch->hw_value); brcms_b_init(wlc->hw, chanspec); --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c @@ -121,7 +121,8 @@ IEEE80211_CHAN_NO_HT40PLUS), CHAN2GHZ(14, 2484, IEEE80211_CHAN_PASSIVE_SCAN | IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) + IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS | + IEEE80211_CHAN_NO_OFDM) }; static struct ieee80211_channel brcms_5ghz_nphy_chantable[] = { @@ -1058,6 +1059,8 @@ goto fail; } + brcms_c_regd_init(wl->wlc); + memcpy(perm, &wl->pub->cur_etheraddr, ETH_ALEN); if (WARN_ON(!is_valid_ether_addr(perm))) goto fail; @@ -1395,9 +1398,10 @@ #endif t->ms = ms; t->periodic = (bool) periodic; - t->set = true; - - atomic_inc(&t->wl->callbacks); + if (!t->set) { + t->set = true; + atomic_inc(&t->wl->callbacks); + } ieee80211_queue_delayed_work(hw, &t->dly_wrk, msecs_to_jiffies(ms)); } --- linux-3.5.0.orig/drivers/net/wireless/iwlegacy/common.c +++ linux-3.5.0/drivers/net/wireless/iwlegacy/common.c @@ -3957,17 +3957,21 @@ memset(&il->staging, 0, sizeof(il->staging)); - if (!il->vif) { + switch (il->iw_mode) { + case NL80211_IFTYPE_UNSPECIFIED: il->staging.dev_type = RXON_DEV_TYPE_ESS; - } else if (il->vif->type == NL80211_IFTYPE_STATION) { + break; + case NL80211_IFTYPE_STATION: il->staging.dev_type = RXON_DEV_TYPE_ESS; il->staging.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK; - } else if (il->vif->type == NL80211_IFTYPE_ADHOC) { + break; + case NL80211_IFTYPE_ADHOC: il->staging.dev_type = RXON_DEV_TYPE_IBSS; il->staging.flags = RXON_FLG_SHORT_PREAMBLE_MSK; il->staging.filter_flags = RXON_FILTER_BCON_AWARE_MSK | RXON_FILTER_ACCEPT_GRP_MSK; - } else { + break; + default: IL_ERR("Unsupported interface type %d\n", il->vif->type); return; } @@ -4550,8 +4554,7 @@ EXPORT_SYMBOL(il_mac_add_interface); static void -il_teardown_interface(struct il_priv *il, struct ieee80211_vif *vif, - bool mode_change) +il_teardown_interface(struct il_priv *il, struct ieee80211_vif *vif) { lockdep_assert_held(&il->mutex); @@ -4560,9 +4563,7 @@ il_force_scan_end(il); } - if (!mode_change) - il_set_mode(il); - + il_set_mode(il); } void @@ -4575,8 +4576,8 @@ WARN_ON(il->vif != vif); il->vif = NULL; - - il_teardown_interface(il, vif, false); + il->iw_mode = NL80211_IFTYPE_UNSPECIFIED; + il_teardown_interface(il, vif); memset(il->bssid, 0, ETH_ALEN); D_MAC80211("leave\n"); @@ -4685,18 +4686,10 @@ } /* success */ - il_teardown_interface(il, vif, true); vif->type = newtype; vif->p2p = false; - err = il_set_mode(il); - WARN_ON(err); - /* - * We've switched internally, but submitting to the - * device may have failed for some reason. Mask this - * error, because otherwise mac80211 will not switch - * (and set the interface type back) and we'll be - * out of sync with it. - */ + il->iw_mode = newtype; + il_teardown_interface(il, vif); err = 0; out: --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-tx.c @@ -1094,29 +1094,6 @@ } } -static int iwl_reclaim(struct iwl_priv *priv, int sta_id, int tid, - int txq_id, int ssn, struct sk_buff_head *skbs) -{ - if (unlikely(txq_id >= IWLAGN_FIRST_AMPDU_QUEUE && - tid != IWL_TID_NON_QOS && - txq_id != priv->tid_data[sta_id][tid].agg.txq_id)) { - /* - * FIXME: this is a uCode bug which need to be addressed, - * log the information and return for now. - * Since it is can possibly happen very often and in order - * not to fill the syslog, don't use IWL_ERR or IWL_WARN - */ - IWL_DEBUG_TX_QUEUES(priv, - "Bad queue mapping txq_id=%d, agg_txq[sta:%d,tid:%d]=%d\n", - txq_id, sta_id, tid, - priv->tid_data[sta_id][tid].agg.txq_id); - return 1; - } - - iwl_trans_reclaim(priv->trans, txq_id, ssn, skbs); - return 0; -} - int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb, struct iwl_device_cmd *cmd) { @@ -1175,8 +1152,8 @@ next_reclaimed); } - /*we can free until ssn % q.n_bd not inclusive */ - WARN_ON(iwl_reclaim(priv, sta_id, tid, txq_id, ssn, &skbs)); + iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs); + iwlagn_check_ratid_empty(priv, sta_id, tid); freed = 0; @@ -1289,16 +1266,27 @@ return 0; } + if (unlikely(scd_flow != agg->txq_id)) { + /* + * FIXME: this is a uCode bug which need to be addressed, + * log the information and return for now. + * Since it is can possibly happen very often and in order + * not to fill the syslog, don't use IWL_ERR or IWL_WARN + */ + IWL_DEBUG_TX_QUEUES(priv, + "Bad queue mapping txq_id=%d, agg_txq[sta:%d,tid:%d]=%d\n", + scd_flow, sta_id, tid, agg->txq_id); + spin_unlock(&priv->sta_lock); + return 0; + } + __skb_queue_head_init(&reclaimed_skbs); /* Release all TFDs before the SSN, i.e. all TFDs in front of * block-ack window (we assume that they've been successfully * transmitted ... if not, it's too late anyway). */ - if (iwl_reclaim(priv, sta_id, tid, scd_flow, - ba_resp_scd_ssn, &reclaimed_skbs)) { - spin_unlock(&priv->sta_lock); - return 0; - } + iwl_trans_reclaim(priv->trans, scd_flow, ba_resp_scd_ssn, + &reclaimed_skbs); IWL_DEBUG_TX_REPLY(priv, "REPLY_COMPRESSED_BA [%d] Received from %pM, " "sta_id = %d\n", --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c @@ -1437,6 +1437,7 @@ return err; err_free_irq: + trans_pcie->irq_requested = false; free_irq(trans_pcie->irq, trans); error: iwl_free_isr_ict(trans); @@ -1654,13 +1655,9 @@ #undef IWL_CMD } -int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display) +int iwl_dump_fh(struct iwl_trans *trans, char **buf) { int i; -#ifdef CONFIG_IWLWIFI_DEBUG - int pos = 0; - size_t bufsz = 0; -#endif static const u32 fh_tbl[] = { FH_RSCSR_CHNL0_STTS_WPTR_REG, FH_RSCSR_CHNL0_RBDCB_BASE_REG, @@ -1672,29 +1669,35 @@ FH_TSSR_TX_STATUS_REG, FH_TSSR_TX_ERROR_REG }; -#ifdef CONFIG_IWLWIFI_DEBUG - if (display) { - bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; + +#ifdef CONFIG_IWLWIFI_DEBUGFS + if (buf) { + int pos = 0; + size_t bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; + *buf = kmalloc(bufsz, GFP_KERNEL); if (!*buf) return -ENOMEM; + pos += scnprintf(*buf + pos, bufsz - pos, "FH register values:\n"); - for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) { + + for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) pos += scnprintf(*buf + pos, bufsz - pos, " %34s: 0X%08x\n", get_fh_string(fh_tbl[i]), iwl_read_direct32(trans, fh_tbl[i])); - } + return pos; } #endif + IWL_ERR(trans, "FH register values:\n"); - for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) { + for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) IWL_ERR(trans, " %34s: 0X%08x\n", get_fh_string(fh_tbl[i]), iwl_read_direct32(trans, fh_tbl[i])); - } + return 0; } @@ -1989,11 +1992,11 @@ size_t count, loff_t *ppos) { struct iwl_trans *trans = file->private_data; - char *buf; + char *buf = NULL; int pos = 0; ssize_t ret = -EFAULT; - ret = pos = iwl_dump_fh(trans, &buf, true); + ret = pos = iwl_dump_fh(trans, &buf); if (buf) { ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-sta.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-sta.c @@ -236,6 +236,7 @@ mimo_ps_mode = (sta_ht_inf->cap & IEEE80211_HT_CAP_SM_PS) >> 2; IWL_DEBUG_INFO(priv, "STA %pM SM PS mode: %s\n", + sta->addr, (mimo_ps_mode == WLAN_HT_CAP_SM_PS_STATIC) ? "static" : (mimo_ps_mode == WLAN_HT_CAP_SM_PS_DYNAMIC) ? @@ -722,6 +723,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; @@ -760,7 +762,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-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-ucode.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-ucode.c @@ -425,6 +425,8 @@ return -EIO; } + priv->ucode_loaded = true; + /* * This step takes a long time (60-80ms!!) and * WoWLAN image should be loaded quickly, so @@ -449,8 +451,6 @@ return ret; } - priv->ucode_loaded = true; - return 0; } --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c @@ -1019,12 +1019,12 @@ * As a consequence, it's not as complicated as it sounds, just add * any lower rates to the ACK rate bitmap. */ - if (IWL_RATE_11M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE; - if (IWL_RATE_5M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE; - if (IWL_RATE_2M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_11M_INDEX < lowest_present_cck) + cck |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_5M_INDEX < lowest_present_cck) + cck |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_2M_INDEX < lowest_present_cck) + cck |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE; /* 1M already there or needed so always add */ cck |= IWL_RATE_1M_MASK >> IWL_FIRST_CCK_RATE; @@ -1393,7 +1393,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-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c @@ -318,6 +318,14 @@ rxb->page_dma = dma_map_page(trans->dev, page, 0, PAGE_SIZE << trans_pcie->rx_page_order, DMA_FROM_DEVICE); + if (dma_mapping_error(trans->dev, rxb->page_dma)) { + rxb->page = NULL; + spin_lock_irqsave(&rxq->lock, flags); + list_add(&rxb->list, &rxq->rx_used); + spin_unlock_irqrestore(&rxq->lock, flags); + __free_pages(page, trans_pcie->rx_page_order); + return; + } /* dma address must be no more than 36 bits */ BUG_ON(rxb->page_dma & ~DMA_BIT_MASK(36)); /* and also 256 byte aligned! */ @@ -467,8 +475,19 @@ dma_map_page(trans->dev, rxb->page, 0, PAGE_SIZE << trans_pcie->rx_page_order, DMA_FROM_DEVICE); - list_add_tail(&rxb->list, &rxq->rx_free); - rxq->free_count++; + if (dma_mapping_error(trans->dev, rxb->page_dma)) { + /* + * free the page(s) as well to not break + * the invariant that the items on the used + * list have no page(s) + */ + __free_pages(rxb->page, trans_pcie->rx_page_order); + rxb->page = NULL; + list_add_tail(&rxb->list, &rxq->rx_used); + } else { + list_add_tail(&rxb->list, &rxq->rx_free); + rxq->free_count++; + } } else list_add_tail(&rxb->list, &rxq->rx_used); spin_unlock_irqrestore(&rxq->lock, flags); @@ -559,7 +578,7 @@ } iwl_dump_csr(trans); - iwl_dump_fh(trans, NULL, false); + iwl_dump_fh(trans, NULL); iwl_op_mode_nic_error(trans->op_mode); } @@ -900,12 +919,20 @@ * back-to-back ISRs and sporadic interrupts from our NIC. * If we have something to service, the tasklet will re-enable ints. * If we *don't* have something, we'll re-enable before leaving here. */ - inta_mask = iwl_read32(trans, CSR_INT_MASK); /* just for debug */ + inta_mask = iwl_read32(trans, CSR_INT_MASK); iwl_write32(trans, CSR_INT_MASK, 0x00000000); /* Discover which interrupts are active/pending */ inta = iwl_read32(trans, CSR_INT); + if (inta & (~inta_mask)) { + IWL_DEBUG_ISR(trans, + "We got a masked interrupt (0x%08x)...Ack and ignore\n", + inta & (~inta_mask)); + iwl_write32(trans, CSR_INT, inta & (~inta_mask)); + inta &= inta_mask; + } + /* Ignore interrupt if there's nothing in NIC to service. * This may be due to IRQ shared with another device, * or due to sporadic interrupts thrown from our NIC. */ @@ -989,7 +1016,7 @@ * If we have something to service, the tasklet will re-enable ints. * If we *don't* have something, we'll re-enable before leaving here. */ - inta_mask = iwl_read32(trans, CSR_INT_MASK); /* just for debug */ + inta_mask = iwl_read32(trans, CSR_INT_MASK); iwl_write32(trans, CSR_INT_MASK, 0x00000000); --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-rs.c @@ -709,11 +709,14 @@ */ static bool rs_use_green(struct ieee80211_sta *sta) { - struct iwl_station_priv *sta_priv = (void *)sta->drv_priv; - struct iwl_rxon_context *ctx = sta_priv->ctx; - - return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && - !(ctx->ht.non_gf_sta_present); + /* + * There's a bug somewhere in this code that causes the + * scaling to get stuck because GF+SGI can't be combined + * in SISO rates. Until we find that bug, disable GF, it + * has only limited benefit and we still interoperate with + * GF APs since we can always receive GF transmissions. + */ + return false; } /** --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-debugfs.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-debugfs.c @@ -128,6 +128,9 @@ const struct fw_img *img; size_t bufsz; + if (!iwl_is_ready_rf(priv)) + return -EAGAIN; + /* default is to dump the entire data segment */ if (!priv->dbgfs_sram_offset && !priv->dbgfs_sram_len) { priv->dbgfs_sram_offset = 0x800000; @@ -2245,15 +2248,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-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-mac80211.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-mac80211.c @@ -1343,6 +1343,20 @@ vif_priv->ctx = ctx; ctx->vif = vif; + /* + * In SNIFFER device type, the firmware reports the FCS to + * the host, rather than snipping it off. Unfortunately, + * mac80211 doesn't (yet) provide a per-packet flag for + * this, so that we have to set the hardware flag based + * on the interfaces added. As the monitor interface can + * only be present by itself, and will be removed before + * other interfaces are added, this is safe. + */ + if (vif->type == NL80211_IFTYPE_MONITOR) + priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS; + else + priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; + err = iwl_setup_interface(priv, ctx); if (!err || reset) goto out; --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-lib.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-lib.c @@ -617,6 +617,11 @@ struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; int ave_rssi; + if (!ctx->vif || (ctx->vif->type != NL80211_IFTYPE_STATION)) { + IWL_DEBUG_INFO(priv, "BSS ctx not active or not in sta mode\n"); + return false; + } + ave_rssi = ieee80211_ave_rssi(ctx->vif); if (!ave_rssi) { /* no rssi data, no changes to reduce tx power */ @@ -1254,6 +1259,15 @@ return -EIO; } + /* + * 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 --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-devices.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-devices.c @@ -653,7 +653,7 @@ * See iwlagn_mac_channel_switch. */ struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; - struct iwl6000_channel_switch_cmd cmd; + struct iwl6000_channel_switch_cmd *cmd; const struct iwl_channel_info *ch_info; u32 switch_time_in_usec, ucode_switch_time; u16 ch; @@ -663,18 +663,25 @@ struct ieee80211_vif *vif = ctx->vif; struct iwl_host_cmd hcmd = { .id = REPLY_CHANNEL_SWITCH, - .len = { sizeof(cmd), }, + .len = { sizeof(*cmd), }, .flags = CMD_SYNC, - .data = { &cmd, }, + .dataflags[0] = IWL_HCMD_DFL_NOCOPY, }; + int err; - cmd.band = priv->band == IEEE80211_BAND_2GHZ; + cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); + if (!cmd) + return -ENOMEM; + + hcmd.data[0] = cmd; + + cmd->band = priv->band == IEEE80211_BAND_2GHZ; ch = ch_switch->channel->hw_value; IWL_DEBUG_11H(priv, "channel switch from %u to %u\n", ctx->active.channel, ch); - cmd.channel = cpu_to_le16(ch); - cmd.rxon_flags = ctx->staging.flags; - cmd.rxon_filter_flags = ctx->staging.filter_flags; + cmd->channel = cpu_to_le16(ch); + cmd->rxon_flags = ctx->staging.flags; + cmd->rxon_filter_flags = ctx->staging.filter_flags; switch_count = ch_switch->count; tsf_low = ch_switch->timestamp & 0x0ffffffff; /* @@ -690,30 +697,32 @@ switch_count = 0; } if (switch_count <= 1) - cmd.switch_time = cpu_to_le32(priv->ucode_beacon_time); + cmd->switch_time = cpu_to_le32(priv->ucode_beacon_time); else { switch_time_in_usec = vif->bss_conf.beacon_int * switch_count * TIME_UNIT; ucode_switch_time = iwl_usecs_to_beacons(priv, switch_time_in_usec, beacon_interval); - cmd.switch_time = iwl_add_beacon_time(priv, - priv->ucode_beacon_time, - ucode_switch_time, - beacon_interval); + cmd->switch_time = iwl_add_beacon_time(priv, + priv->ucode_beacon_time, + ucode_switch_time, + beacon_interval); } IWL_DEBUG_11H(priv, "uCode time for the switch is 0x%x\n", - cmd.switch_time); + cmd->switch_time); ch_info = iwl_get_channel_info(priv, priv->band, ch); if (ch_info) - cmd.expect_beacon = is_channel_radar(ch_info); + cmd->expect_beacon = is_channel_radar(ch_info); else { IWL_ERR(priv, "invalid channel switch from %u to %u\n", ctx->active.channel, ch); return -EFAULT; } - return iwl_dvm_send_cmd(priv, &hcmd); + err = iwl_dvm_send_cmd(priv, &hcmd); + kfree(cmd); + return err; } struct iwl_lib_ops iwl6000_lib = { --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h @@ -355,7 +355,7 @@ /***************************************************** * Error handling ******************************************************/ -int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display); +int iwl_dump_fh(struct iwl_trans *trans, char **buf); void iwl_dump_csr(struct iwl_trans *trans); /***************************************************** --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-pci.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-pci.c @@ -243,6 +243,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)}, --- linux-3.5.0.orig/drivers/net/wireless/b43legacy/b43legacy.h +++ linux-3.5.0/drivers/net/wireless/b43legacy/b43legacy.h @@ -13,6 +13,7 @@ #include #include +#include #include @@ -733,6 +734,10 @@ /* Firmware data */ struct b43legacy_firmware fw; + const struct firmware *fwp; /* needed to pass fw pointer */ + + /* completion struct for firmware loading */ + struct completion fw_load_complete; /* Devicelist in struct b43legacy_wl (all 802.11 cores) */ struct list_head list; --- linux-3.5.0.orig/drivers/net/wireless/b43legacy/main.c +++ linux-3.5.0/drivers/net/wireless/b43legacy/main.c @@ -1513,9 +1513,17 @@ "and download the correct firmware (version 3).\n"); } +static void b43legacy_fw_cb(const struct firmware *firmware, void *context) +{ + struct b43legacy_wldev *dev = context; + + dev->fwp = firmware; + complete(&dev->fw_load_complete); +} + static int do_request_fw(struct b43legacy_wldev *dev, const char *name, - const struct firmware **fw) + const struct firmware **fw, bool async) { char path[sizeof(modparam_fwpostfix) + 32]; struct b43legacy_fw_header *hdr; @@ -1528,7 +1536,24 @@ snprintf(path, ARRAY_SIZE(path), "b43legacy%s/%s.fw", modparam_fwpostfix, name); - err = request_firmware(fw, path, dev->dev->dev); + b43legacyinfo(dev->wl, "Loading firmware %s\n", path); + if (async) { + init_completion(&dev->fw_load_complete); + err = request_firmware_nowait(THIS_MODULE, 1, path, + dev->dev->dev, GFP_KERNEL, + dev, b43legacy_fw_cb); + if (err) { + b43legacyerr(dev->wl, "Unable to load firmware\n"); + return err; + } + /* stall here until fw ready */ + wait_for_completion(&dev->fw_load_complete); + if (!dev->fwp) + err = -EINVAL; + *fw = dev->fwp; + } else { + err = request_firmware(fw, path, dev->dev->dev); + } if (err) { b43legacyerr(dev->wl, "Firmware file \"%s\" not found " "or load failed.\n", path); @@ -1580,7 +1605,7 @@ filename = "ucode4"; else filename = "ucode5"; - err = do_request_fw(dev, filename, &fw->ucode); + err = do_request_fw(dev, filename, &fw->ucode, true); if (err) goto err_load; } @@ -1589,7 +1614,7 @@ filename = "pcm4"; else filename = "pcm5"; - err = do_request_fw(dev, filename, &fw->pcm); + err = do_request_fw(dev, filename, &fw->pcm, false); if (err) goto err_load; } @@ -1607,7 +1632,7 @@ default: goto err_no_initvals; } - err = do_request_fw(dev, filename, &fw->initvals); + err = do_request_fw(dev, filename, &fw->initvals, false); if (err) goto err_load; } @@ -1627,7 +1652,7 @@ default: goto err_no_initvals; } - err = do_request_fw(dev, filename, &fw->initvals_band); + err = do_request_fw(dev, filename, &fw->initvals_band, false); if (err) goto err_load; } @@ -3894,6 +3919,8 @@ cancel_work_sync(&wl->firmware_load); B43legacy_WARN_ON(!wl); + if (!wldev->fw.ucode) + return; /* NULL if fw never loaded */ if (wl->current_dev == wldev) ieee80211_unregister_hw(wl->hw); --- linux-3.5.0.orig/drivers/net/wireless/rtl818x/rtl8187/dev.c +++ linux-3.5.0/drivers/net/wireless/rtl818x/rtl8187/dev.c @@ -44,7 +44,7 @@ MODULE_DESCRIPTION("RTL8187/RTL8187B USB wireless driver"); MODULE_LICENSE("GPL"); -static struct usb_device_id rtl8187_table[] __devinitdata = { +static struct usb_device_id rtl8187_table[] = { /* Asus */ {USB_DEVICE(0x0b05, 0x171d), .driver_info = DEVICE_RTL8187}, /* Belkin */ --- linux-3.5.0.orig/drivers/net/wireless/ipw2x00/ipw2200.c +++ linux-3.5.0/drivers/net/wireless/ipw2x00/ipw2200.c @@ -10470,7 +10470,7 @@ } else len = src->len; - dst = alloc_skb(len + sizeof(*rt_hdr), GFP_ATOMIC); + dst = alloc_skb(len + sizeof(*rt_hdr) + sizeof(u16)*2, GFP_ATOMIC); if (!dst) continue; --- linux-3.5.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-3.5.0/drivers/net/wireless/hostap/hostap_hw.c @@ -68,7 +68,7 @@ module_param_string(essid, essid, sizeof(essid), 0444); MODULE_PARM_DESC(essid, "Host AP's ESSID"); -static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_MASTER, DEF_INTS }; +static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_INFRA, DEF_INTS }; module_param_array(iw_mode, int, NULL, 0444); MODULE_PARM_DESC(iw_mode, "Initial operation mode"); --- linux-3.5.0.orig/drivers/gpio/gpio-timberdale.c +++ linux-3.5.0/drivers/gpio/gpio-timberdale.c @@ -116,7 +116,7 @@ unsigned long flags; spin_lock_irqsave(&tgpio->lock, flags); - tgpio->last_ier &= ~(1 << offset); + tgpio->last_ier &= ~(1UL << offset); iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); spin_unlock_irqrestore(&tgpio->lock, flags); } @@ -128,7 +128,7 @@ unsigned long flags; spin_lock_irqsave(&tgpio->lock, flags); - tgpio->last_ier |= 1 << offset; + tgpio->last_ier |= 1UL << offset; iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); spin_unlock_irqrestore(&tgpio->lock, flags); } --- linux-3.5.0.orig/drivers/gpio/gpiolib.c +++ linux-3.5.0/drivers/gpio/gpiolib.c @@ -623,9 +623,11 @@ */ status = gpio_request(gpio, "sysfs"); - if (status < 0) + if (status < 0) { + if (status == -EPROBE_DEFER) + status = -ENODEV; goto done; - + } status = gpio_export(gpio, true); if (status < 0) gpio_free(gpio); @@ -1191,8 +1193,10 @@ spin_lock_irqsave(&gpio_lock, flags); - if (!gpio_is_valid(gpio)) + if (!gpio_is_valid(gpio)) { + status = -EINVAL; goto done; + } desc = &gpio_desc[gpio]; chip = desc->chip; if (chip == NULL) --- linux-3.5.0.orig/drivers/gpio/gpio-ich.c +++ linux-3.5.0/drivers/gpio/gpio-ich.c @@ -328,6 +328,7 @@ return -ENODEV; } + spin_lock_init(&ichx_priv.lock); res_base = platform_get_resource(pdev, IORESOURCE_IO, ICH_RES_GPIO); if (!res_base || !res_base->start || !res_base->end) return -ENODEV; --- linux-3.5.0.orig/drivers/gpio/gpio-lpc32xx.c +++ linux-3.5.0/drivers/gpio/gpio-lpc32xx.c @@ -307,6 +307,7 @@ { struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); + __set_gpio_level_p012(group, pin, value); __set_gpio_dir_p012(group, pin, 0); return 0; @@ -317,6 +318,7 @@ { struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); + __set_gpio_level_p3(group, pin, value); __set_gpio_dir_p3(group, pin, 0); return 0; @@ -325,6 +327,9 @@ static int lpc32xx_gpio_dir_out_always(struct gpio_chip *chip, unsigned pin, int value) { + struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); + + __set_gpo_level_p3(group, pin, value); return 0; } --- linux-3.5.0.orig/drivers/thermal/thermal_sys.c +++ linux-3.5.0/drivers/thermal/thermal_sys.c @@ -1383,6 +1383,7 @@ idr_destroy(&thermal_cdev_idr); mutex_destroy(&thermal_idr_lock); mutex_destroy(&thermal_list_lock); + return result; } result = genetlink_init(); return result; --- linux-3.5.0.orig/drivers/input/matrix-keymap.c +++ linux-3.5.0/drivers/input/matrix-keymap.c @@ -23,6 +23,7 @@ #include #include #include +#include #include static bool matrix_keypad_map_key(struct input_dev *input_dev, @@ -161,3 +162,5 @@ return 0; } EXPORT_SYMBOL(matrix_keypad_build_keymap); + +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-3.5.0/drivers/input/serio/i8042-x86ia64io.h @@ -177,6 +177,20 @@ }, }, { + /* Gigabyte T1005 - defines wrong chassis type ("Other") */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "T1005"), + }, + }, + { + /* Gigabyte T1005M/P - defines wrong chassis type ("Other") */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "T1005M/P"), + }, + }, + { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"), @@ -321,6 +335,12 @@ }, { .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"), + }, + }, + { + .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"), DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"), }, @@ -901,6 +921,7 @@ int retval; #ifdef CONFIG_X86 + u8 a20_on = 0xdf; /* Just return if pre-detection shows no i8042 controller exist */ if (!x86_platform.i8042_detect()) return -ENODEV; @@ -940,6 +961,14 @@ if (dmi_check_system(i8042_dmi_dritek_table)) i8042_dritek = true; + + /* + * A20 was already enabled during early kernel init. But some buggy + * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to + * resume from S3. So we do it here and hope that nothing breaks. + */ + i8042_command(&a20_on, 0x10d1); + i8042_command(NULL, 0x00ff); /* Null command for SMM firmware */ #endif /* CONFIG_X86 */ return retval; --- linux-3.5.0.orig/drivers/input/joystick/walkera0701.c +++ linux-3.5.0/drivers/input/joystick/walkera0701.c @@ -196,6 +196,7 @@ struct walkera_dev *w = input_get_drvdata(dev); parport_disable_irq(w->parport); + hrtimer_cancel(&w->timer); } static int walkera0701_connect(struct walkera_dev *w, int parport) @@ -224,6 +225,9 @@ if (parport_claim(w->pardevice)) goto init_err1; + hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + w->timer.function = timer_handler; + w->input_dev = input_allocate_device(); if (!w->input_dev) goto init_err2; @@ -254,8 +258,6 @@ if (err) goto init_err3; - hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); - w->timer.function = timer_handler; return 0; init_err3: @@ -271,7 +273,6 @@ static void walkera0701_disconnect(struct walkera_dev *w) { - hrtimer_cancel(&w->timer); input_unregister_device(w->input_dev); parport_release(w->pardevice); parport_unregister_device(w->pardevice); --- linux-3.5.0.orig/drivers/input/tablet/wacom_wac.c +++ linux-3.5.0/drivers/input/tablet/wacom_wac.c @@ -248,7 +248,7 @@ input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2])); input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4])); if (wacom->tool[0] != BTN_TOOL_MOUSE) { - input_report_abs(input, ABS_PRESSURE, data[6] | ((data[7] & 0x01) << 8)); + input_report_abs(input, ABS_PRESSURE, data[6] | ((data[7] & 0x03) << 8)); input_report_key(input, BTN_TOUCH, data[1] & 0x01); input_report_key(input, BTN_STYLUS, data[1] & 0x02); input_report_key(input, BTN_STYLUS2, data[1] & 0x04); @@ -464,7 +464,7 @@ t = (data[6] << 2) | ((data[7] >> 6) & 3); if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || (features->type >= INTUOS5S && features->type <= INTUOS5L) || - features->type == WACOM_21UX2 || features->type == WACOM_24HD) { + (features->type >= WACOM_21UX2 && features->type <= WACOM_24HD)) { t = (t << 1) | (data[1] & 1); } input_report_abs(input, ABS_PRESSURE, t); @@ -614,7 +614,7 @@ input_report_abs(input, ABS_MISC, 0); } } else { - if (features->type == WACOM_21UX2) { + if (features->type == WACOM_21UX2 || features->type == WACOM_22HD) { input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_1, (data[6] & 0x01)); input_report_key(input, BTN_2, (data[6] & 0x02)); @@ -633,6 +633,12 @@ input_report_key(input, BTN_Z, (data[8] & 0x20)); input_report_key(input, BTN_BASE, (data[8] & 0x40)); input_report_key(input, BTN_BASE2, (data[8] & 0x80)); + + if (features->type == WACOM_22HD) { + input_report_key(input, KEY_PROG1, data[9] & 0x01); + input_report_key(input, KEY_PROG2, data[9] & 0x02); + input_report_key(input, KEY_PROG3, data[9] & 0x04); + } } else { input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_1, (data[5] & 0x02)); @@ -1230,6 +1236,7 @@ case CINTIQ: case WACOM_BEE: case WACOM_21UX2: + case WACOM_22HD: case WACOM_24HD: sync = wacom_intuos_irq(wacom_wac); break; @@ -1317,10 +1324,8 @@ } /* these device have multiple inputs */ - if (features->type == TABLETPC || features->type == TABLETPC2FG || - features->type == BAMBOO_PT || features->type == WIRELESS || - (features->type >= INTUOS5S && features->type <= INTUOS5L) || - features->type == MTSCREEN) + if (features->type >= WIRELESS || + (features->type >= INTUOS5S && features->type <= INTUOS5L)) features->quirks |= WACOM_QUIRK_MULTI_INPUT; /* quirk for bamboo touch with 2 low res touches */ @@ -1432,6 +1437,12 @@ wacom_setup_cintiq(wacom_wac); break; + case WACOM_22HD: + __set_bit(KEY_PROG1, input_dev->keybit); + __set_bit(KEY_PROG2, input_dev->keybit); + __set_bit(KEY_PROG3, input_dev->keybit); + /* fall through */ + case WACOM_21UX2: __set_bit(BTN_A, input_dev->keybit); __set_bit(BTN_B, input_dev->keybit); @@ -1855,6 +1866,9 @@ static const struct wacom_features wacom_features_0xCC = { "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047, 63, WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +static const struct wacom_features wacom_features_0xFA = + { "Wacom Cintiq 22HD", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047, + 63, WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; static const struct wacom_features wacom_features_0x90 = { "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; @@ -1904,7 +1918,8 @@ .touch_max = 2 }; static const struct wacom_features wacom_features_0xD2 = { "Wacom Bamboo Craft", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, - 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, + .touch_max = 2 }; static const struct wacom_features wacom_features_0xD3 = { "Wacom Bamboo 2FG 6x8", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, @@ -2064,6 +2079,7 @@ { USB_DEVICE_WACOM(0xEC) }, { USB_DEVICE_WACOM(0x47) }, { USB_DEVICE_WACOM(0xF4) }, + { USB_DEVICE_WACOM(0xFA) }, { USB_DEVICE_LENOVO(0x6004) }, { } }; --- linux-3.5.0.orig/drivers/input/tablet/wacom_sys.c +++ linux-3.5.0/drivers/input/tablet/wacom_sys.c @@ -445,8 +445,7 @@ /* ask to report Wacom data */ if (features->device_type == BTN_TOOL_FINGER) { /* if it is an MT Tablet PC touch */ - if (features->type == TABLETPC2FG || - features->type == MTSCREEN) { + if (features->type > TABLETPC) { do { rep_data[0] = 3; rep_data[1] = 4; @@ -465,7 +464,7 @@ } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES); } - } else if (features->type != TABLETPC && + } else if (features->type <= BAMBOO_PT && features->type != WIRELESS && features->device_type == BTN_TOOL_PEN) { do { @@ -515,10 +514,7 @@ } /* only devices that support touch need to retrieve the info */ - if (features->type != TABLETPC && - features->type != TABLETPC2FG && - features->type != BAMBOO_PT && - features->type != MTSCREEN) { + if (features->type < BAMBOO_PT) { goto out; } --- linux-3.5.0.orig/drivers/input/tablet/wacom_wac.h +++ linux-3.5.0/drivers/input/tablet/wacom_wac.h @@ -62,8 +62,6 @@ PTU, PL, DTU, - BAMBOO_PT, - WIRELESS, INTUOS, INTUOS3S, INTUOS3, @@ -74,12 +72,15 @@ INTUOS5S, INTUOS5, INTUOS5L, - WACOM_24HD, WACOM_21UX2, + WACOM_22HD, + WACOM_24HD, CINTIQ, WACOM_BEE, WACOM_MO, - TABLETPC, + WIRELESS, + BAMBOO_PT, + TABLETPC, /* add new TPC below */ TABLETPC2FG, MTSCREEN, MAX_TYPE --- linux-3.5.0.orig/drivers/input/mouse/psmouse.h +++ linux-3.5.0/drivers/input/mouse/psmouse.h @@ -26,6 +26,7 @@ PSMOUSE_INITIALIZING, PSMOUSE_RESYNCING, PSMOUSE_CMD_MODE, + PSMOUSE_CMD_CYTP, /* Cypress Trackpad detecting and initializing state. */ PSMOUSE_ACTIVATED, }; @@ -78,6 +79,9 @@ }; enum psmouse_type { + /* IMPORTANT! src/eventcomm.c in x-x-i-s uses the hard-coded values + * of some of these (awful!), so never insert new entries to the + * middle of the list! */ PSMOUSE_NONE, PSMOUSE_PS2, PSMOUSE_PS2PP, @@ -95,6 +99,7 @@ PSMOUSE_ELANTECH, PSMOUSE_FSP, PSMOUSE_SYNAPTICS_RELATIVE, + PSMOUSE_CYPRESS, PSMOUSE_AUTO /* This one should always be last */ }; --- linux-3.5.0.orig/drivers/input/mouse/sentelic.c +++ linux-3.5.0/drivers/input/mouse/sentelic.c @@ -780,7 +780,7 @@ fsp_set_slot(dev, 0, fgrs > 0, abs_x, abs_y); fsp_set_slot(dev, 1, false, 0, 0); } - if (fgrs > 0) { + if (fgrs == 1 || (fgrs == 2 && !(packet[0] & FSP_PB0_MFMC_FGR2))) { input_report_abs(dev, ABS_X, abs_x); input_report_abs(dev, ABS_Y, abs_y); } --- linux-3.5.0.orig/drivers/input/mouse/alps.c +++ linux-3.5.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,7 +792,7 @@ 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 %x %x %x %x (suspected interleaved ps/2)\n", psmouse->packet[3], psmouse->packet[4], @@ -773,7 +800,7 @@ return PSMOUSE_BAD_DATA; } - alps_process_packet(psmouse); + priv->process_packet(psmouse); /* Continue with the next packet */ psmouse->packet[0] = psmouse->packet[6]; @@ -817,6 +844,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); @@ -835,7 +863,7 @@ psmouse->packet[3], psmouse->packet[4], psmouse->packet[5]); } else { - alps_process_packet(psmouse); + priv->process_packet(psmouse); } psmouse->pktcnt = 0; } @@ -846,7 +874,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) { @@ -859,20 +886,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, @@ -881,7 +909,7 @@ } if (psmouse->pktcnt == psmouse->pktsize) { - alps_process_packet(psmouse); + priv->process_packet(psmouse); return PSMOUSE_FULL_PACKET; } @@ -969,29 +997,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; } @@ -1003,99 +1046,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, @@ -1139,18 +1089,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; } @@ -1192,16 +1134,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) { @@ -1219,9 +1161,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; } @@ -1236,7 +1177,7 @@ return -1; } - if ((model->flags & ALPS_PASS) && + if ((priv->flags & ALPS_PASS) && alps_passthrough_mode_v2(psmouse, false)) { return -1; } @@ -1251,26 +1192,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 */ @@ -1289,73 +1235,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; } @@ -1392,14 +1367,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 */ @@ -1412,10 +1379,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 @@ -1426,6 +1389,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) { @@ -1444,14 +1451,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)) { @@ -1519,39 +1522,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) @@ -1564,12 +1706,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); + 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(); @@ -1583,13 +1746,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; /* @@ -1611,41 +1771,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); - 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); @@ -1656,7 +1795,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; @@ -1675,7 +1815,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; @@ -1692,18 +1832,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-3.5.0.orig/drivers/input/mouse/psmouse-base.c +++ linux-3.5.0/drivers/input/mouse/psmouse-base.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "psmouse.h" #include "synaptics.h" @@ -34,6 +35,7 @@ #include "touchkit_ps2.h" #include "elantech.h" #include "sentelic.h" +#include "cypress_ps2.h" #define DRIVER_DESC "PS/2 mouse driver" @@ -321,6 +323,13 @@ if (psmouse->state <= PSMOUSE_RESYNCING) goto out; + /* For Cypress Trackpad to read some special data more than 6 bytes. */ + if (psmouse->state == PSMOUSE_CMD_CYTP) { + psmouse->packet[psmouse->pktcnt++] = data; + wake_up(&psmouse->ps2dev.wait); + goto out; + } + if (psmouse->state == PSMOUSE_ACTIVATED && psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { psmouse_info(psmouse, "%s at %s lost synchronization, throwing %d bytes away.\n", @@ -759,6 +768,28 @@ } /* + * Try Cypress Trackpad. + * Must try it before Finger Sensing Pad because Finger Sensing Pad probe + * upsets some modules of Cypress Trackpads. + */ + if (max_proto > PSMOUSE_IMEX && + cypress_detect(psmouse, set_properties) == 0) { + if (cypress_supported()) { + if (cypress_init(psmouse) == 0) + return PSMOUSE_CYPRESS; + + /* + * Finger Sensing Pad probe upsets some modules of + * Cypress Trackpad, must avoid Finger Sensing Pad + * probe if Cypress Trackpad device detected. + */ + return PSMOUSE_PS2; + } + + max_proto = PSMOUSE_IMEX; + } + +/* * Try ALPS TouchPad */ if (max_proto > PSMOUSE_IMEX) { @@ -896,6 +927,15 @@ .alias = "thinkps", .detect = thinking_detect, }, +#ifdef CONFIG_MOUSE_PS2_CYPRESS + { + .type = PSMOUSE_CYPRESS, + .name = "CyPS/2", + .alias = "cypress", + .detect = cypress_detect, + .init = cypress_init, + }, +#endif { .type = PSMOUSE_GENPS, .name = "GenPS/2", --- linux-3.5.0.orig/drivers/input/mouse/Makefile +++ linux-3.5.0/drivers/input/mouse/Makefile @@ -32,3 +32,4 @@ psmouse-$(CONFIG_MOUSE_PS2_SENTELIC) += sentelic.o psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT) += trackpoint.o psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT) += touchkit_ps2.o +psmouse-$(CONFIG_MOUSE_PS2_CYPRESS) += cypress_ps2.o --- linux-3.5.0.orig/drivers/input/mouse/Kconfig +++ linux-3.5.0/drivers/input/mouse/Kconfig @@ -68,6 +68,16 @@ If unsure, say Y. +config MOUSE_PS2_CYPRESS + bool "Cypress PS/2 mouse protocol extension" if EXPERT + default y + depends on MOUSE_PS2 + help + Say Y here if you have a Cypress PS/2 Trackpad connected to + your system. + + If unsure, say Y. + config MOUSE_PS2_LIFEBOOK bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EXPERT default y --- linux-3.5.0.orig/drivers/input/mouse/synaptics.h +++ linux-3.5.0/drivers/input/mouse/synaptics.h @@ -80,6 +80,7 @@ */ #define SYN_CAP_CLICKPAD(ex0c) ((ex0c) & 0x100000) /* 1-button ClickPad */ #define SYN_CAP_CLICKPAD2BTN(ex0c) ((ex0c) & 0x000100) /* 2-button ClickPad */ +#define SYN_CAP_CLICKPAD2BTN2(ex0c) ((ex0c) & 0x200000) /* 2-button ClickPad */ #define SYN_CAP_MAX_DIMENSIONS(ex0c) ((ex0c) & 0x020000) #define SYN_CAP_MIN_DIMENSIONS(ex0c) ((ex0c) & 0x002000) #define SYN_CAP_ADV_GESTURE(ex0c) ((ex0c) & 0x080000) --- linux-3.5.0.orig/drivers/input/mouse/alps.h +++ linux-3.5.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-3.5.0.orig/drivers/input/mouse/synaptics.c +++ linux-3.5.0/drivers/input/mouse/synaptics.c @@ -40,11 +40,32 @@ * Note that newer firmware allows querying device for maximum useable * coordinates. */ +#define XMIN 0 +#define XMAX 6143 +#define YMIN 0 +#define YMAX 6143 #define XMIN_NOMINAL 1472 #define XMAX_NOMINAL 5472 #define YMIN_NOMINAL 1408 #define YMAX_NOMINAL 4448 +/* Size in bits of absolute position values reported by the hardware */ +#define ABS_POS_BITS 13 + +/* + * These values should represent the absolute maximum value that will + * be reported for a positive position value. Some Synaptics firmware + * uses this value to indicate a finger near the edge of the touchpad + * whose precise position cannot be determined. + * + * At least one touchpad is known to report positions in excess of this + * value which are actually negative values truncated to the 13-bit + * reporting range. These values have never been observed to be lower + * than 8184 (i.e. -8), so we treat all values greater than 8176 as + * negative and any other value as positive. + */ +#define X_MAX_POSITIVE 8176 +#define Y_MAX_POSITIVE 8176 /***************************************************************************** * Stuff we need even when we do not want native Synaptics support @@ -555,6 +576,22 @@ hw->right = (buf[0] & 0x02) ? 1 : 0; } + /* + * Convert wrap-around values to negative. (X|Y)_MAX_POSITIVE + * is used by some firmware to indicate a finger at the edge of + * the touchpad whose precise position cannot be determined, so + * convert these values to the maximum axis value. + */ + if (hw->x > X_MAX_POSITIVE) + hw->x -= 1 << ABS_POS_BITS; + else if (hw->x == X_MAX_POSITIVE) + hw->x = XMAX; + + if (hw->y > Y_MAX_POSITIVE) + hw->y -= 1 << ABS_POS_BITS; + else if (hw->y == Y_MAX_POSITIVE) + hw->y = YMAX; + return 0; } @@ -1223,7 +1260,9 @@ /* Clickpads report only left button */ __clear_bit(BTN_RIGHT, dev->keybit); __clear_bit(BTN_MIDDLE, dev->keybit); - } + } else if (SYN_CAP_CLICKPAD2BTN(priv->ext_cap_0c) || + SYN_CAP_CLICKPAD2BTN2(priv->ext_cap_0c)) + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); } static ssize_t synaptics_show_disable_gesture(struct psmouse *psmouse, @@ -1285,6 +1324,7 @@ { struct synaptics_data *priv = psmouse->private; struct synaptics_data old_priv = *priv; + unsigned char param[2]; int retry = 0; int error; @@ -1300,6 +1340,7 @@ */ ssleep(1); } + ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETID); error = synaptics_detect(psmouse, 0); } while (error && ++retry < 3); --- linux-3.5.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-3.5.0/drivers/input/mouse/cypress_ps2.c @@ -0,0 +1,965 @@ +/* + * Cypress Trackpad PS/2 mouse driver + * + * Copyright (c) 2012 Cypress Semiconductor Corporation. + * + * Additional contributors include: + * Kamal Mostafa + * Kyle Fazzari + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cypress_ps2.h" + +#define CYTP_DBG 1 +#if CYTP_DBG +static int debug_level; +module_param_named(cy_debug, debug_level, int, 0644); +MODULE_PARM_DESC(cy_debug, "Set CyPS/2 debug output level (0, 1, or 2)"); +#define cytp_dbg(fmt, ...) \ + do { \ + if (cytp && debug_level) \ + pr_err(pr_fmt(fmt), ##__VA_ARGS__); \ + } while (0) +#define cytp_dbg_dump(fmt, ...) \ + do { \ + if (cytp && debug_level > 1) \ + pr_err(pr_fmt(fmt), ##__VA_ARGS__); \ + } while (0) +#else +#define cytp_dbg(fmt, ...) do { cytp = cytp; } while (0) +#define cytp_dbg_dump(fmt, ...) do { cytp = cytp; } while (0) +#endif + +static int read_timeout = 200; +module_param_named(cy_read_timeout, read_timeout, int, 0644); +MODULE_PARM_DESC(cy_read_timeout, "Set CyPS/2 cmd read timeout (default 200 msec)"); + + +/* p is a pointer points to the buffer containing Cypress Keys. */ +#define IS_CYPRESS_KEY(p) ((p[0] == CYPRESS_KEY_1) && (p[1] == CYPRESS_KEY_2)) +#define CYTP_SET_PACKET_SIZE(n) { psmouse->pktsize = cytp->pkt_size = (n); } +#define CYTP_SET_MODE_BIT(x) \ + do { \ + if ((x) & CYTP_BIT_ABS_REL_MASK) \ + cytp->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK) | (x); \ + else \ + cytp->mode |= (x); \ + } while (0) +#define CYTP_CLEAR_MODE_BIT(x) { cytp->mode &= ~(x); } + +#define CYTP_SUPPORT_ABS + +static unsigned char cytp_rate[] = {10, 20, 40, 60, 100, 200}; +static unsigned char cytp_resolution[] = {0x00, 0x01, 0x02, 0x03}; + +static int cypress_ps2_sendbyte(struct psmouse *psmouse, int value) +{ + struct cytp_data *cytp = psmouse->private; + struct ps2dev *ps2dev = &psmouse->ps2dev; + + if (ps2_sendbyte(ps2dev, value & 0xff, CYTP_CMD_TIMEOUT) < 0) { + cytp_dbg("send command 0x%02x failed, resp 0x%02x\n", + value & 0xff, ps2dev->nak); + if (ps2dev->nak == CYTP_PS2_RETRY) + return CYTP_PS2_RETRY; + else + return CYTP_PS2_ERROR; + } + + cytp_dbg("send command 0x%02x success, resp 0xfa\n", value & 0xff); + + return 0; +} + +static int cypress_ps2_ext_cmd(struct psmouse *psmouse, unsigned short cmd, + unsigned char data) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + ps2_begin_command(ps2dev); + + do { + /* + * send extension command 0xE8 or 0xF3, + * if send extension command failed, + * try to send recovery command to make + * trackpad device return to ready wait command state. + * It alwasy success based on this recovery commands. + */ + rc = cypress_ps2_sendbyte(psmouse, cmd & 0xff); + if (rc == CYTP_PS2_RETRY) { + rc = cypress_ps2_sendbyte(psmouse, 0x00); + if (rc == CYTP_PS2_RETRY) + rc = cypress_ps2_sendbyte(psmouse, 0x0a); + } + if (rc == CYTP_PS2_ERROR) + continue; + + rc = cypress_ps2_sendbyte(psmouse, data); + if (rc == CYTP_PS2_RETRY) + rc = cypress_ps2_sendbyte(psmouse, data); + if (rc == CYTP_PS2_ERROR) + continue; + else + break; + } while (--tries > 0); + + ps2_end_command(ps2dev); + + return rc; +} + +static int cypress_ps2_read_cmd_status(struct psmouse *psmouse, + unsigned char cmd, + unsigned char *param) +{ + int i; + int rc; + struct ps2dev *ps2dev = &psmouse->ps2dev; + struct cytp_data *cytp = psmouse->private; + enum psmouse_state old_state; + unsigned char old_pktsize; + + ps2_begin_command(&psmouse->ps2dev); + + old_state = psmouse->state; + psmouse->state = PSMOUSE_CMD_CYTP; + psmouse->pktcnt = 0; + old_pktsize = psmouse->pktsize; + psmouse->pktsize = 3; + if (cmd == CYTP_CMD_READ_VITAL_STATISTICS) + psmouse->pktsize = 8; + memset(param, 0, psmouse->pktsize); + + rc = cypress_ps2_sendbyte(psmouse, 0xe9); + if (rc < 0) + goto out; + + wait_event_timeout(ps2dev->wait, + (psmouse->pktcnt >= psmouse->pktsize), msecs_to_jiffies(read_timeout)); + + memcpy(param, psmouse->packet, psmouse->pktsize); + + cytp_dbg("Command 0x%02x response data: (0x)", cmd); + for (i = 0; i < psmouse->pktsize; i++) + cytp_dbg(" %02x", param[i]); + cytp_dbg("\n"); + +out: + psmouse->state = old_state; + psmouse->pktcnt = 0; + psmouse->pktsize = old_pktsize; + + ps2_end_command(&psmouse->ps2dev); + + return rc; +} + +static int cypress_verify_cmd_state(struct psmouse *psmouse, + unsigned char cmd, unsigned char *param) +{ + struct cytp_data *cytp = psmouse->private; + bool rate_match = 0; + bool resolution_match = 0; + int i; + + /* callers will do further checking. */ + if ((cmd == CYTP_CMD_READ_CYPRESS_ID) || + (cmd == CYTP_CMD_STANDARD_MODE) || + (cmd == CYTP_CMD_READ_VITAL_STATISTICS)) + return 0; + if (((~param[0] & DFLT_RESP_BITS_VALID) == DFLT_RESP_BITS_VALID) && + ((param[0] & DFLT_RESP_BIT_MODE) == DFLT_RESP_STREAM_MODE)) { + for (i = 0; i < sizeof(cytp_resolution); i++) + if (cytp_resolution[i] == param[1]) + resolution_match = 1; + + for (i = 0; i < sizeof(cytp_rate); i++) + if (cytp_rate[i] == param[2]) + rate_match = 1; + + if (resolution_match && rate_match) + return 0; + } + + cytp_dbg("verify cmd state failed.\n"); + return -1; +} + +static int cypress_send_ext_cmd(struct psmouse *psmouse, unsigned char cmd, + unsigned char *param) +{ + struct cytp_data *cytp = psmouse->private; + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + cytp_dbg("send extension cmd 0x%02x, [%d %d %d %d]\n", + cmd, DECODE_CMD_AA(cmd), DECODE_CMD_BB(cmd), + DECODE_CMD_CC(cmd), DECODE_CMD_DD(cmd)); + do { + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_DD(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_CC(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_BB(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_AA(cmd)); + + rc = cypress_ps2_read_cmd_status(psmouse, cmd, param); + if ((rc == 0) && + (cypress_verify_cmd_state(psmouse, cmd, param) == 0)) + break; + } while (--tries > 0); + + + if (tries <= 0) + return -1; + + return 0; + +} + +int cypress_detect(struct psmouse *psmouse, bool set_properties) +{ + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) + return -1; + + if (!IS_CYPRESS_KEY(param)) + return -ENODEV; + + if (set_properties) { + psmouse->vendor = "Cypress"; + psmouse->name = "Trackpad"; + } + + return 0; +} + +static int cypress_read_fw_version(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) + return -1; + + if (!IS_CYPRESS_KEY(param)) + return -ENODEV; + + cytp->fw_version = param[2] & FW_VERSION_MASX; + cytp->vital_statics_supported = (param[2] & VITAL_STATICS_MASK) ? 1 : 0; + + /* + * Trackpad fw_version 11 (in Dell XPS12) yields a bogus response to + * CYTP_CMD_READ_VITAL_STATISTICS so do not try to use it. LP: #1103594. + */ + if (cytp->fw_version >= 11) + cytp->vital_statics_supported = 0; + + cytp_dbg("cytp->fw_version = %d\n", cytp->fw_version); + cytp_dbg("cytp->vital_statics_supported = %d\n", + cytp->vital_statics_supported); + return 0; +} + +static int cypress_read_vital_statistics(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[8]; + + /* set default values for vital statistics not supported trackpad. */ + cytp->tp_width = CYTP_DEFAULT_WIDTH; + cytp->tp_high = CYTP_DEFAULT_HIGH; + cytp->tp_max_abs_x = CYTP_ABS_MAX_X; + cytp->tp_max_abs_y = CYTP_ABS_MAX_Y; + cytp->tp_min_pressure = CYTP_MIN_PRESSURE; + cytp->tp_max_pressure = CYTP_MAX_PRESSURE; + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + + if (!cytp->vital_statics_supported) + return 0; + + memset(param, 0, sizeof(param)); + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_VITAL_STATISTICS, param) == 0) { + /* Update trackpad parameters. */ + cytp->tp_max_abs_x = (param[1] << 8) | param[0]; + cytp->tp_max_abs_y = (param[3] << 8) | param[2]; + cytp->tp_min_pressure = param[4]; + cytp->tp_max_pressure = param[5]; + + if (param[6] & VITAL_BIT_APA) + cytp->tp_type = CYTP_APA; + else if (param[6] & VITAL_BIT_MTG) + cytp->tp_type = CYTP_MTG; + else + cytp->tp_type = CYTP_STG; + cytp->tp_palm = (param[6] & VITAL_BIT_PALM) ? 1 : 0; + cytp->tp_stubborn = (param[6] & VITAL_BIT_STUBBORN) ? 1 : 0; + cytp->tp_2f_jitter = (param[6] & VITAL_BIT_2F_JITTER) >> 4; + cytp->tp_1f_jitter = (param[6] & VITAL_BIT_1F_JITTER) >> 2; + cytp->tp_abs_packet_format_set = + (param[7] & VITAL_BIT_ABS_PKT_FORMAT_SET) >> 4; + cytp->tp_2f_spike = (param[7] & VITAL_BIT_2F_SPIKE) >> 2; + cytp->tp_1f_spike = (param[7] & VITAL_BIT_1F_SPIKE); + + } + + if (!cytp->tp_max_pressure || + (cytp->tp_max_pressure < cytp->tp_min_pressure) || + (!cytp->tp_width || !cytp->tp_high) || + (!cytp->tp_max_abs_x) || + (cytp->tp_max_abs_x < cytp->tp_width) || + (!cytp->tp_max_abs_y) || + (cytp->tp_max_abs_y < cytp->tp_high)) + return -1; + + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + + cytp_dbg_dump("Dump trackpad hardware configuration as below:\n"); + cytp_dbg_dump("cytp->tp_width = %d\n", cytp->tp_width); + cytp_dbg_dump("cytp->tp_high = %d\n", cytp->tp_high); + cytp_dbg_dump("cytp->tp_max_abs_x = %d\n", cytp->tp_max_abs_x); + cytp_dbg_dump("cytp->tp_max_abs_y = %d\n", cytp->tp_max_abs_y); + cytp_dbg_dump("cytp->tp_min_pressure = %d\n", cytp->tp_min_pressure); + cytp_dbg_dump("cytp->tp_max_pressure = %d\n", cytp->tp_max_pressure); + cytp_dbg_dump("cytp->tp_res_x = %d\n", cytp->tp_res_x); + cytp_dbg_dump("cytp->tp_res_y = %d\n", cytp->tp_res_y); + cytp_dbg_dump("cytp->tp_type = %d\n", cytp->tp_type); + cytp_dbg_dump("cytp->tp_palm = %d\n", cytp->tp_palm); + cytp_dbg_dump("cytp->tp_stubborn = %d\n", cytp->tp_stubborn); + cytp_dbg_dump("cytp->tp_1f_jitter = %d\n", cytp->tp_1f_jitter); + cytp_dbg_dump("cytp->tp_2f_jitter = %d\n", cytp->tp_2f_jitter); + cytp_dbg_dump("cytp->tp_1f_spike = %d\n", cytp->tp_1f_spike); + cytp_dbg_dump("cytp->tp_2f_spike = %d\n", cytp->tp_2f_spike); + cytp_dbg_dump("cytp->tp_abs_packet_format_set = %d\n", + cytp->tp_abs_packet_format_set); + + return 0; +} + +static int cypress_query_hardware(struct psmouse *psmouse) +{ + int ret; + + if (cypress_read_fw_version(psmouse)) + return -1; + + ret = cypress_read_vital_statistics(psmouse); + if (ret) + return -1; + + return 0; +} + +static int cypress_set_absolute_mode(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_ABS_WITH_PRESSURE_MODE, param) < 0) + return -1; + + CYTP_SET_MODE_BIT(CYTP_BIT_ABS_PRESSURE); + CYTP_SET_PACKET_SIZE(5); + + return 0; +} + +/* + * reset trackpad device to standard relative mode. + * This is also the defalut mode when trackpad powered on. + */ +static void cypress_reset(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + psmouse_reset(psmouse); + + CYTP_SET_MODE_BIT(CYTP_BIT_STANDARD_REL); + CYTP_SET_PACKET_SIZE(3); + + cytp->prev_contact_cnt = 0; +} + +static int cypress_set_input_params(struct input_dev *input, + struct cytp_data *cytp) +{ + int ret; + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + __set_bit(EV_ABS, input->evbit); + input_set_abs_params(input, ABS_X, 0, cytp->tp_max_abs_x, 0, 0); + input_set_abs_params(input, ABS_Y, 0, cytp->tp_max_abs_y, 0, 0); + input_set_abs_params(input, ABS_PRESSURE, + cytp->tp_min_pressure, cytp->tp_max_pressure, 0, 0); + input_set_abs_params(input, ABS_TOOL_WIDTH, 0, 255, 0, 0); + + /* finger position */ + input_set_abs_params(input, ABS_MT_POSITION_X, 0, cytp->tp_max_abs_x, 0, 0); + input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cytp->tp_max_abs_y, 0, 0); + input_set_abs_params(input, ABS_MT_PRESSURE, 0, 255, 0, 0); + + ret = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS); + if (ret < 0) { + return ret; + } + + if (cytp->tp_res_x && cytp->tp_res_x) { + input_abs_set_res(input, ABS_X, cytp->tp_res_x); + input_abs_set_res(input, ABS_Y, cytp->tp_res_y); + + input_abs_set_res(input, ABS_MT_POSITION_X, + cytp->tp_res_x); + input_abs_set_res(input, ABS_MT_POSITION_Y, + cytp->tp_res_y); + + } + + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + __set_bit(EV_KEY, input->evbit); + __set_bit(BTN_TOUCH, input->keybit); + __set_bit(BTN_TOOL_FINGER, input->keybit); + __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); + __set_bit(BTN_TOOL_TRIPLETAP, input->keybit); + __set_bit(BTN_TOOL_QUADTAP, input->keybit); + __set_bit(BTN_TOOL_QUINTTAP, input->keybit); + + __set_bit(BTN_LEFT, input->keybit); + __set_bit(BTN_RIGHT, input->keybit); + __set_bit(BTN_MIDDLE, input->keybit); + + __clear_bit(EV_REL, input->evbit); + __clear_bit(REL_X, input->relbit); + __clear_bit(REL_Y, input->relbit); + } else { + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + __set_bit(EV_REL, input->evbit); + __set_bit(REL_X, input->relbit); + __set_bit(REL_Y, input->relbit); + __set_bit(REL_WHEEL, input->relbit); + __set_bit(REL_HWHEEL, input->relbit); + + __set_bit(EV_KEY, input->evbit); + __set_bit(BTN_LEFT, input->keybit); + __set_bit(BTN_RIGHT, input->keybit); + __set_bit(BTN_MIDDLE, input->keybit); + + __clear_bit(EV_ABS, input->evbit); + } + + input_set_drvdata(input, cytp); + + return 0; +} + +static int cypress_get_finger_count(unsigned char header_byte) +{ + unsigned char bits6_7; + int finger_count; + + bits6_7 = header_byte >> 6; + finger_count = bits6_7 & 0x03; + + if (finger_count != 1) { + if (header_byte & ABS_HSCROLL_BIT) { + if (finger_count == 0) { + /* HSCROLL gets added on to 0 finger count. */ + finger_count = 4; + /* should remove HSCROLL bit. */ + } else { + if (finger_count == 2) { + finger_count = 5; + } else { + /* Invalid contact (e.g. palm). Ignore it. */ + finger_count = 0; + } + } + } + } + + return finger_count; +} + +static int new_slot_id(void) +{ + static int id = -1; + + id++; + if (id >= CYTP_MAX_MT_SLOTS) + id = 0; + + return id; +} + +#define FINGER_MAX_JITTER_DISTANCE 25 +static inline bool same_finger(struct cytp_contact *prev_contact, + struct cytp_contact *contact) +{ + if (abs(prev_contact->x - contact->x) < FINGER_MAX_JITTER_DISTANCE) { + if (abs(prev_contact->y - contact->y) < FINGER_MAX_JITTER_DISTANCE) { + return true; + } + } + + return false; +} + +#define ID_NULL ((unsigned char)0x00) +#define ID_NEW ((unsigned char)0x01) +#define ID_KEEP ((unsigned char)0x02) +#define ID_UPDATE ((unsigned char)0x03) +static const unsigned char +new_slot_id_flags[CYTP_MAX_CONTACTS+1][CYTP_MAX_CONTACTS+1] = { + /* previous contact_cnt = 0. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 1. */ + { ID_NULL, ID_KEEP, ID_UPDATE, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 2. */ + { ID_NULL, ID_UPDATE, ID_KEEP, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 3. */ + { ID_NULL, ID_NEW, ID_NEW, ID_KEEP, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 4. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_KEEP, ID_NEW }, + + /* previous contact_cnt = 5. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_NEW, ID_KEEP }, +}; + +static int cypress_cal_finger_id(struct cytp_data *cytp, + struct cytp_report_data *new_report) +{ + int i, j; + bool slot_id_updated; + struct cytp_report_data *prev_report = &cytp->prev_report_data; + unsigned char flag = + new_slot_id_flags[prev_report->contact_cnt][new_report->contact_cnt]; + + if (flag == ID_NEW) { + for (i = 0; i < new_report->contact_cnt; i++) { + new_report->contacts[i].id = new_slot_id(); + } + + } else if (flag == ID_KEEP) { + /* firmware will ensure that the finger id is report in same order. */ + for (i = 0; i < new_report->contact_cnt; i++) { + new_report->contacts[i].id = prev_report->contacts[i].id; + } + + } else if (flag == ID_UPDATE) { + for (i = 0; i < new_report->contact_cnt; i++) { + slot_id_updated = false; + for (j = 0; j < prev_report->contact_cnt; j++) { + if (same_finger(&new_report->contacts[i], + &prev_report->contacts[j])) { + new_report->contacts[i].id = prev_report->contacts[j].id; + slot_id_updated = true; + break; + } + } + + if (!slot_id_updated) + new_report->contacts[i].id = new_slot_id(); + } + } + + if (new_report->contact_cnt == 0) + cytp->zero_packet_cnt++; + else + cytp->zero_packet_cnt = 0; + cytp->prev_report_data = *new_report; + + return 0; +} + +static int position_adjust_array[4] = { + 50, -50, 100, -100 +}; +static void cypress_simulate_fingers(struct cytp_data *cytp, + struct cytp_report_data *report_data) +{ + int i; + + if (report_data->contact_cnt >= 3) { + for (i = 1; i < report_data->contact_cnt; i++) { + report_data->contacts[i].x = + report_data->contacts[0].x + position_adjust_array[i - 1]; + report_data->contacts[i].y = report_data->contacts[0].y; + report_data->contacts[i].z = report_data->contacts[0].z; + + if (report_data->contacts[i].x < 0) + report_data->contacts[i].x = 0; + if (report_data->contacts[i].x > cytp->tp_max_abs_x) + report_data->contacts[i].x = cytp->tp_max_abs_x; + } + } +} + +static int cypress_parse_packet(const unsigned char packet[], + struct cytp_data *cytp, struct cytp_report_data *report_data) +{ + int i; + unsigned char header_byte = packet[0]; + + memset(report_data, 0, sizeof(struct cytp_report_data)); + if (cytp->mode & CYTP_BIT_ABS_MASK) { + report_data->contact_cnt = cypress_get_finger_count(header_byte); + + if (report_data->contact_cnt > CYTP_MAX_CONTACTS) { + /* report invalid data as zero package except the button data. */ + report_data->contact_cnt = 0; + cytp_dbg("cypress_parse_packet: received invalid packet.\n"); + } + + report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0; + + /* Remove HSCROLL bit */ + if (report_data->contact_cnt == 4) + header_byte &= ~(ABS_HSCROLL_BIT); + + if (report_data->contact_cnt == 1) { + report_data->contacts[0].x = + ((packet[1] & 0x70) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x07) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + if ((packet[1] & ABS_EDGE_MOTION_MASK) != ABS_EDGE_MOTION_MASK) { + report_data->vscroll = (header_byte & ABS_VSCROLL_BIT) ? 1 : 0; + report_data->hscroll = (header_byte & ABS_HSCROLL_BIT) ? 1 : 0; + } + + } else if (report_data->contact_cnt == 2) { + report_data->contacts[0].x = + ((packet[1] & 0x70) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x07) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + report_data->contacts[1].x = + ((packet[5] & 0xf0) << 4) | packet[6]; + report_data->contacts[1].y = + ((packet[5] & 0x0f) << 8) | packet[7]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[1].z = report_data->contacts[0].z; + + } else if (report_data->contact_cnt >= 3) { + report_data->contacts[0].x = + ((packet[1] & 0xf0) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x0f) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + cypress_simulate_fingers(cytp, report_data); + + report_data->vscroll = (header_byte & ABS_VSCROLL_BIT) ? 1 : 0; + } + + cypress_cal_finger_id(cytp, report_data); + + report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; + report_data->right = (header_byte & BTN_RIGHT_BIT) ? 1 : 0; + + } else { + report_data->contact_cnt = 1; + report_data->contacts[0].x = + (packet[0] & REL_X_SIGN_BIT) ? -packet[1] : packet[1]; + report_data->contacts[0].y = + (packet[0] & REL_Y_SIGN_BIT) ? -packet[2] : packet[2]; + report_data->vscroll = packet[3]; + report_data->left = (packet[0] & BTN_LEFT_BIT) ? 1 : 0; + report_data->right = (packet[0] & BTN_RIGHT_BIT) ? 1 : 0; + + if (cytp->mode & CYTP_BIT_STANDARD_REL) + report_data->middle = + (packet[0] & BTN_MIDDLE_BIT) ? 1 : 0; + if (cytp->mode & CYTP_BIT_CYPRESS_REL) { + report_data->left = + (packet[0] & BTN_MIDDLE_BIT) ? 1 : 0; + report_data->hscroll = packet[4]; + } + } + + /* This is only true if one of the mouse buttons were tapped. + * Make sure it doesn't turn into a click. The regular tap-to- + * click functionality will handle that on its own. If we don't + * do this, disabling tap-to-click won't affect the mouse button + * zones. */ + if (report_data->tap) + report_data->left = 0; + + if (report_data->contact_cnt <= 0) + return 0; + + cytp_dbg_dump("cypress_parse_packet cytp->zero_packet_cnt = %d\n", cytp->zero_packet_cnt); + cytp_dbg_dump("Dump parsed report data as below:\n"); + cytp_dbg_dump("contact_cnt = %d\n", report_data->contact_cnt); + for (i = 0; i < report_data->contact_cnt; i++) { + cytp_dbg_dump("contacts[%d].x = %d\n", i, report_data->contacts[i].x); + cytp_dbg_dump("contacts[%d].y = %d\n", i, report_data->contacts[i].y); + cytp_dbg_dump("contacts[%d].z = %d\n", i, report_data->contacts[i].z); + cytp_dbg_dump("contacts[%d].id = %d\n", i, report_data->contacts[i].id); + } + cytp_dbg_dump("vscroll = %d\n", report_data->vscroll); + cytp_dbg_dump("hscroll = %d\n", report_data->hscroll); + cytp_dbg_dump("left = %d\n", report_data->left); + cytp_dbg_dump("right = %d\n", report_data->right); + cytp_dbg_dump("middle = %d\n", report_data->middle); + + return 0; +} + +static void cypress_process_packet(struct psmouse *psmouse, bool zero_pkt) +{ + int i; + struct input_dev *input = psmouse->dev; + struct cytp_data *cytp = psmouse->private; + struct cytp_report_data report_data; + unsigned int mask; + struct cytp_contact *contact; + int slot; + + if (cypress_parse_packet(psmouse->packet, cytp, &report_data)) + return; + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + mask = 0; + for (i = 0; i < report_data.contact_cnt; i++) { + contact = &report_data.contacts[i]; + slot = contact->id; + + mask |= (1 << slot); + input_mt_slot(input, slot); + input_mt_report_slot_state(input, MT_TOOL_FINGER, true); + input_report_abs(input, ABS_MT_POSITION_X, contact->x); + input_report_abs(input, ABS_MT_POSITION_Y, contact->y); + input_report_abs(input, ABS_MT_PRESSURE, contact->z); + } + + /* Invalidate all unreported slots */ + for (i = 0; i < CYTP_MAX_MT_SLOTS; i++) { + if (mask & (1 << i)) + continue; + + input_mt_slot(input, i); + input_mt_report_slot_state(input, MT_TOOL_FINGER, false); + } + + input_mt_report_pointer_emulation(input, true); + + input_report_key(input, BTN_LEFT, report_data.left); + input_report_key(input, BTN_RIGHT, report_data.right); + input_report_key(input, BTN_MIDDLE, report_data.middle); + + input_sync(input); + + } else { + if (report_data.contact_cnt == 1) { + input_report_rel(input, REL_X, report_data.contacts[0].x); + input_report_rel(input, REL_Y, report_data.contacts[0].y); + } + + input_report_rel(input, REL_WHEEL, report_data.vscroll); + if (cytp->mode & CYTP_BIT_CYPRESS_REL) + input_report_rel(input, REL_HWHEEL, report_data.hscroll); + + input_report_key(input, BTN_LEFT, report_data.left); + input_report_key(input, BTN_RIGHT, report_data.right); + input_report_key(input, BTN_MIDDLE, report_data.middle); + + input_sync(input); + } +} + +static psmouse_ret_t cypress_validate_byte(struct psmouse *psmouse) +{ + int contact_cnt; + int index = psmouse->pktcnt - 1; + unsigned char *packet = psmouse->packet; + struct cytp_data *cytp = psmouse->private; + + if (index < 0 || index > cytp->pkt_size) + return PSMOUSE_BAD_DATA; + + if ((index == 0) && ((packet[0] & 0xfc) == 0)) { + /* call packet process for reporting finger leave. */ + cypress_process_packet(psmouse, 1); + return PSMOUSE_FULL_PACKET; + } + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + if (index == 0) { + if ((packet[0] & 0x08) == 0x08) + return PSMOUSE_BAD_DATA; + + contact_cnt = cypress_get_finger_count(packet[0]); + + if (contact_cnt > 5) + return PSMOUSE_BAD_DATA; + + if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE) { + CYTP_SET_PACKET_SIZE(4); + if (contact_cnt == 2) + CYTP_SET_PACKET_SIZE(7); + } else { + CYTP_SET_PACKET_SIZE(5); + if (contact_cnt == 2) + CYTP_SET_PACKET_SIZE(8); + } + } + + return PSMOUSE_GOOD_DATA; + } else { + if (index == 0) { + if ((packet[0] & 0x08) != 0x08) + return PSMOUSE_BAD_DATA; + + CYTP_SET_PACKET_SIZE(3); + if (cytp->mode & CYTP_BIT_CYPRESS_REL) + CYTP_SET_PACKET_SIZE(5); + } + + return PSMOUSE_GOOD_DATA; + } +} + +static psmouse_ret_t cypress_protocol_handler(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + if (psmouse->pktcnt >= cytp->pkt_size) { + cypress_process_packet(psmouse, 0); + return PSMOUSE_FULL_PACKET; + } + + return cypress_validate_byte(psmouse); +} + +static void cypress_set_rate(struct psmouse *psmouse, unsigned int rate) +{ + struct cytp_data *cytp = psmouse->private; + + if (rate >= 80) { + psmouse->rate = 80; + CYTP_SET_MODE_BIT(CYTP_BIT_HIGH_RATE); + } else { + psmouse->rate = 40; + CYTP_CLEAR_MODE_BIT(CYTP_BIT_HIGH_RATE); + } + + ps2_command(&psmouse->ps2dev, (unsigned char *)&psmouse->rate, + PSMOUSE_CMD_SETRATE); +} + +static void cypress_disconnect(struct psmouse *psmouse) +{ + cypress_reset(psmouse); + kfree(psmouse->private); + psmouse->private = NULL; +} + +static int cypress_reconnect(struct psmouse *psmouse) +{ + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + do { + cypress_reset(psmouse); + rc = cypress_detect(psmouse, false); + } while (rc && (--tries > 0)); + + if (rc) + return -1; + + if (cypress_query_hardware(psmouse)) { + pr_err("Reconnect: unable to query Trackpad hardware.\n"); + return -1; + } + + if (cypress_set_absolute_mode(psmouse)) { + pr_err("Reconnect: Unable to initialize Cypress absolute mode.\n"); + return -1; + } + + return 0; +} + +int cypress_init(struct psmouse *psmouse) +{ + struct cytp_data *cytp; + + cytp = (struct cytp_data *)kzalloc(sizeof(struct cytp_data), GFP_KERNEL); + psmouse->private = (void *)cytp; + if (cytp == NULL) + return -ENOMEM; + + cypress_reset(psmouse); + + if (cypress_query_hardware(psmouse)) { + pr_err("Unable to query Trackpad hardware.\n"); + goto err_exit; + } + + if (cypress_set_absolute_mode(psmouse)) { + pr_err("Reconnect: Unable to initialize Cypress absolute mode.\n"); + goto err_exit; + } + + if (cypress_set_input_params(psmouse->dev, cytp) < 0) + return -1; + + psmouse->model = 1; + psmouse->protocol_handler = cypress_protocol_handler; + psmouse->set_rate = cypress_set_rate; + psmouse->disconnect = cypress_disconnect; + psmouse->reconnect = cypress_reconnect; + psmouse->cleanup = cypress_reset; + psmouse->pktsize = 8; + psmouse->resync_time = 0; + + return 0; + +err_exit: + /* + * Reset Cypress Trackpad as a standard mouse. Then + * let psmouse driver commmunicating with it as default PS2 mouse. + */ + cypress_reset(psmouse); + + psmouse->private = NULL; + kfree(cytp); + + return -1; +} + +bool cypress_supported(void) +{ + return true; +} --- linux-3.5.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-3.5.0/drivers/input/mouse/cypress_ps2.h @@ -0,0 +1,220 @@ +#ifndef _CYPRESS_PS2_H +#define _CYPRESS_PS2_H + +#include "psmouse.h" + +#define CMD_BITS_MASK 0x03 +#define COMPOSIT(x, s) (((x) & CMD_BITS_MASK) << (s)) + +#define ENCODE_CMD(aa, bb, cc, dd) \ + (COMPOSIT((aa), 6) | COMPOSIT((bb), 4) | COMPOSIT((cc), 2) | COMPOSIT((dd), 0)) +#define CYTP_CMD_ABS_NO_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 0) +#define CYTP_CMD_ABS_WITH_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 1) +#define CYTP_CMD_SMBUS_MODE ENCODE_CMD(0, 1, 1, 0) +#define CYTP_CMD_STANDARD_MODE ENCODE_CMD(0, 2, 0, 0) /* not implemented yet. */ +#define CYTP_CMD_CYPRESS_REL_MODE ENCODE_CMD(1, 1, 1, 1) /* not implemented yet. */ +#define CYTP_CMD_READ_CYPRESS_ID ENCODE_CMD(0, 0, 0, 0) +#define CYTP_CMD_READ_VITAL_STATISTICS ENCODE_CMD(0, 0, 0, 1) +#define CYTP_CMD_SET_HSCROLL_WIDTH(w) ENCODE_CMD(1, 1, 0, (w)) +#define CYTP_CMD_SET_HSCROLL_MASK ENCODE_CMD(1, 1, 0, 0) +#define CYTP_CMD_SET_VSCROLL_WIDTH(w) ENCODE_CMD(1, 2, 0, (w)) +#define CYTP_CMD_SET_VSCROLL_MASK ENCODE_CMD(1, 2, 0, 0) +#define CYTP_CMD_SET_PALM_GEOMETRY(e) ENCODE_CMD(1, 2, 1, (e)) +#define CYTP_CMD_PALM_GEMMETRY_MASK ENCODE_CMD(1, 2, 1, 0) +#define CYTP_CMD_SET_PALM_SENSITIVITY(s) ENCODE_CMD(1, 2, 2, (s)) +#define CYTP_CMD_PALM_SENSITIVITY_MASK ENCODE_CMD(1, 2, 2, 0) +#define CYTP_CMD_SET_MOUSE_SENSITIVITY(s) ENCODE_CMD(1, 3, ((s) >> 2), (s)) +#define CYTP_CMD_MOUSE_SENSITIVITY_MASK ENCODE_CMD(1, 3, 0, 0) +#define CYTP_CMD_REQUEST_BASELINE_STATUS ENCODE_CMD(2, 0, 0, 1) +#define CYTP_CMD_REQUEST_RECALIBRATION ENCODE_CMD(2, 0, 0, 3) + +#define DECODE_CMD_AA(x) (((x) >> 6) & CMD_BITS_MASK) +#define DECODE_CMD_BB(x) (((x) >> 4) & CMD_BITS_MASK) +#define DECODE_CMD_CC(x) (((x) >> 2) & CMD_BITS_MASK) +#define DECODE_CMD_DD(x) ((x) & CMD_BITS_MASK) + +/* Cypress trackpad working mode. */ +#define CYTP_BIT_ABS_PRESSURE (1 << 3) +#define CYTP_BIT_ABS_NO_PRESSURE (1 << 2) +#define CYTP_BIT_CYPRESS_REL (1 << 1) +#define CYTP_BIT_STANDARD_REL (1 << 0) +#define CYTP_BIT_REL_MASK (CYTP_BIT_CYPRESS_REL | CYTP_BIT_STANDARD_REL) +#define CYTP_BIT_ABS_MASK (CYTP_BIT_ABS_PRESSURE | CYTP_BIT_ABS_NO_PRESSURE) +#define CYTP_BIT_ABS_REL_MASK (CYTP_BIT_ABS_MASK | CYTP_BIT_REL_MASK) + +#define CYTP_BIT_HIGH_RATE (1 << 4) +/* + * report mode bit is set, firmware working in Remote Mode. + * report mode bit is cleared, firmware working in Stream Mode. + */ +#define CYTP_BIT_REPORT_MODE (1 << 5) + +/* scrolling width values for set HSCROLL and VSCROLL width command. */ +#define SCROLL_WIDTH_NARROW 1 +#define SCROLL_WIDTH_NORMAL 2 +#define SCROLL_WIDTH_WIDE 3 + +#define PALM_GEOMETRY_ENABLE 1 +#define PALM_GEOMETRY_DISABLE 0 + +#define CYPRESS_KEY_1 0x33 +#define CYPRESS_KEY_2 0xCC + +#define VITAL_STATICS_MASK 0x80 +#define FW_VERSION_MASX 0x7f +#define FW_VER_HIGH_MASK 0x70 +#define FW_VER_LOW_MASK 0x0f + +/* Times to retry a ps2_command and millisecond delay between tries. */ +#define CYTP_PS2_CMD_TRIES 3 +#define CYTP_PS2_CMD_DELAY 500 + +/* time out for PS/2 command only in milliseconds. */ +#define CYTP_CMD_TIMEOUT 200 +#define CYTP_DATA_TIMEOUT 30 + +#define CYTP_EXT_CMD 0xe8 +#define CYTP_PS2_RETRY 0xfe +#define CYTP_PS2_ERROR 0xfc + +#define CYTP_RESP_RETRY 0x01 +#define CYTP_RESP_ERROR 0xfe + + +#define CYTP_105001_WIDTH 97 /* Dell XPS 13 */ +#define CYTP_105001_HIGH 59 +#define CYTP_DEFAULT_WIDTH (CYTP_105001_WIDTH) +#define CYTP_DEFAULT_HIGH (CYTP_105001_HIGH) + +#define CYTP_ABS_MAX_X 1600 +#define CYTP_ABS_MAX_Y 900 +#define CYTP_MAX_PRESSURE 255 +#define CYTP_MIN_PRESSURE 0 + +/* header byte bits of relative package. */ +#define BTN_LEFT_BIT 0x01 +#define BTN_RIGHT_BIT 0x02 +#define BTN_MIDDLE_BIT 0x04 +#define REL_X_SIGN_BIT 0x10 +#define REL_Y_SIGN_BIT 0x20 + +/* header byte bits of absolute package. */ +#define ABS_VSCROLL_BIT 0x10 +#define ABS_HSCROLL_BIT 0x20 +#define ABS_MULTIFINGER_TAP 0x04 +#define ABS_EDGE_MOTION_MASK 0x80 + +#define DFLT_RESP_BITS_VALID 0x88 /* SMBus bit should not be set. */ +#define DFLT_RESP_SMBUS_BIT 0x80 +#define DFLT_SMBUS_MODE 0x80 +#define DFLT_PS2_MODE 0x00 +#define DFLT_RESP_BIT_MODE 0x40 +#define DFLT_RESP_REMOTE_MODE 0x40 +#define DFLT_RESP_STREAM_MODE 0x00 +#define DFLT_RESP_BIT_REPORTING 0x20 +#define DFLT_RESP_BIT_SCALING 0x10 + +#define VITAL_BIT_PALM 0x80 +#define VITAL_BIT_STUBBORN 0x40 +#define VITAL_BIT_2F_JITTER 0x30 +#define VITAL_BIT_1F_JITTER 0x0c +#define VITAL_BIT_APA 0x02 +#define VITAL_BIT_MTG 0x01 +#define VITAL_BIT_ABS_PKT_FORMAT_SET 0xf0 +#define VITAL_BIT_2F_SPIKE 0x0c +#define VITAL_BIT_1F_SPIKE 0x03 + +/* bits of first byte response of E9h-Status Request command. */ +#define RESP_BTN_RIGHT_BIT 0x01 +#define RESP_BTN_MIDDLE_BIT 0x02 +#define RESP_BTN_LEFT_BIT 0x04 +#define RESP_SCALING_BIT 0x10 +#define RESP_ENABLE_BIT 0x20 +#define RESP_REMOTE_BIT 0x40 +#define RESP_SMBUS_BIT 0x80 + +#define CYTP_MAX_CONTACTS 5 +#define CYTP_MAX_MT_SLOTS 16 + +enum cytp_type { + CYTP_STG, + CYTP_MTG, + CYTP_APA, +}; + +struct cytp_contact { + int x; + int y; + int z; /* also named as touch pressure. */ + int id; /* It's incremented with every new touch. */ +}; + +/* The structure of */ +struct cytp_report_data { + int contact_cnt; + struct cytp_contact contacts[CYTP_MAX_CONTACTS]; + unsigned int left:1; + unsigned int right:1; + unsigned int middle:1; + unsigned int tap:1; /* multi-finger tap detected. */ + signed char vscroll; + signed char hscroll; +}; + +/* The structure of Cypress Trackpad device private data. */ +struct cytp_data { + int fw_version; + + int pkt_size; + int mode; + + int scaling; + int reporting; + + int tp_min_pressure; + int tp_max_pressure; + int tp_width; /* X direction physical size in mm. */ + int tp_high; /* Y direction physical size in mm. */ + int tp_max_abs_x; /* Max X absolution units can be reported. */ + int tp_max_abs_y; /* Max Y absolution units can be reported. */ + + int tp_res_x; /* X resolution in units/mm. */ + int tp_res_y; /* Y resolution in units/mm. */ + + enum cytp_type tp_type; + unsigned char tp_palm; + unsigned char tp_stubborn; + unsigned char tp_2f_jitter; + unsigned char tp_1f_jitter; + unsigned char tp_abs_packet_format_set; + unsigned char tp_2f_spike; + unsigned char tp_1f_spike; + + int vital_statics_supported; + + int prev_contact_cnt; + int zero_packet_cnt; + struct cytp_report_data prev_report_data; +}; + + +#ifdef CONFIG_MOUSE_PS2_CYPRESS +int cypress_detect(struct psmouse *psmouse, bool set_properties); +int cypress_init(struct psmouse *psmouse); +bool cypress_supported(void); +#else +inline int cypress_detect(struct psmouse *psmouse, bool set_properties) +{ + return -ENOSYS; +} +inline int cypress_init(struct psmouse *psmouse) +{ + return -ENOSYS; +} +inline bool cypress_supported(void) +{ + return 0; +} +#endif /* CONFIG_MOUSE_PS2_CYPRESS */ + +#endif /* _CYPRESS_PS2_H */ --- linux-3.5.0.orig/drivers/input/keyboard/gpio_keys.c +++ linux-3.5.0/drivers/input/keyboard/gpio_keys.c @@ -548,6 +548,7 @@ struct device_node *node, *pp; int i; struct gpio_keys_button *buttons; + int error = -ENODEV; u32 reg; node = dev->of_node; @@ -574,6 +575,7 @@ pp = NULL; i = 0; while ((pp = of_get_next_child(node, pp))) { + int gpio; enum of_gpio_flags flags; if (!of_find_property(pp, "gpios", NULL)) { @@ -581,7 +583,17 @@ dev_warn(dev, "Found button without gpios\n"); continue; } - buttons[i].gpio = of_get_gpio_flags(pp, 0, &flags); + + gpio = of_get_gpio_flags(pp, 0, &flags); + if (gpio < 0) { + error = gpio; + dev_err(dev, + "Failed to get gpio flags, error: %d\n", + error); + goto out_fail; + } + + buttons[i].gpio = gpio; buttons[i].active_low = flags & OF_GPIO_ACTIVE_LOW; if (of_property_read_u32(pp, "linux,code", ®)) { @@ -613,7 +625,7 @@ out_fail: kfree(buttons); - return -ENODEV; + return error; } static struct of_device_id gpio_keys_of_match[] = { --- linux-3.5.0.orig/drivers/input/touchscreen/tsc40.c +++ linux-3.5.0/drivers/input/touchscreen/tsc40.c @@ -107,7 +107,6 @@ __set_bit(BTN_TOUCH, input_dev->keybit); input_set_abs_params(ptsc->dev, ABS_X, 0, 0x3ff, 0, 0); input_set_abs_params(ptsc->dev, ABS_Y, 0, 0x3ff, 0, 0); - input_set_abs_params(ptsc->dev, ABS_PRESSURE, 0, 0, 0, 0); serio_set_drvdata(serio, ptsc); --- linux-3.5.0.orig/drivers/input/touchscreen/eeti_ts.c +++ linux-3.5.0/drivers/input/touchscreen/eeti_ts.c @@ -48,7 +48,7 @@ struct input_dev *input; struct work_struct work; struct mutex mutex; - int irq, irq_active_high; + int irq_gpio, irq, irq_active_high; }; #define EETI_TS_BITDEPTH (11) @@ -62,7 +62,7 @@ static inline int eeti_ts_irq_active(struct eeti_ts_priv *priv) { - return gpio_get_value(irq_to_gpio(priv->irq)) == priv->irq_active_high; + return gpio_get_value(priv->irq_gpio) == priv->irq_active_high; } static void eeti_ts_read(struct work_struct *work) @@ -157,7 +157,7 @@ static int __devinit eeti_ts_probe(struct i2c_client *client, const struct i2c_device_id *idp) { - struct eeti_ts_platform_data *pdata; + struct eeti_ts_platform_data *pdata = client->dev.platform_data; struct eeti_ts_priv *priv; struct input_dev *input; unsigned int irq_flags; @@ -199,9 +199,12 @@ priv->client = client; priv->input = input; - priv->irq = client->irq; + priv->irq_gpio = pdata->irq_gpio; + priv->irq = gpio_to_irq(pdata->irq_gpio); - pdata = client->dev.platform_data; + err = gpio_request_one(pdata->irq_gpio, GPIOF_IN, client->name); + if (err < 0) + goto err1; if (pdata) priv->irq_active_high = pdata->irq_active_high; @@ -215,13 +218,13 @@ err = input_register_device(input); if (err) - goto err1; + goto err2; err = request_irq(priv->irq, eeti_ts_isr, irq_flags, client->name, priv); if (err) { dev_err(&client->dev, "Unable to request touchscreen IRQ.\n"); - goto err2; + goto err3; } /* @@ -233,9 +236,11 @@ device_init_wakeup(&client->dev, 0); return 0; -err2: +err3: input_unregister_device(input); input = NULL; /* so we dont try to free it below */ +err2: + gpio_free(pdata->irq_gpio); err1: input_free_device(input); kfree(priv); --- linux-3.5.0.orig/drivers/input/touchscreen/cyttsp_core.c +++ linux-3.5.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-3.5.0.orig/drivers/input/touchscreen/egalax_ts.c +++ linux-3.5.0/drivers/input/touchscreen/egalax_ts.c @@ -203,7 +203,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); input_set_drvdata(input_dev, ts); --- linux-3.5.0.orig/drivers/cdrom/cdrom.c +++ linux-3.5.0/drivers/cdrom/cdrom.c @@ -289,7 +289,7 @@ /* default compatibility mode */ static bool autoclose=1; static bool autoeject; -static bool lockdoor = 1; +static bool lockdoor = 0; /* will we ever get to use this... sigh. */ static bool check_media_type; /* automatically restart mrw format */ --- linux-3.5.0.orig/drivers/char/virtio_console.c +++ linux-3.5.0/drivers/char/virtio_console.c @@ -131,7 +131,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; @@ -457,11 +458,13 @@ 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; } @@ -1465,23 +1468,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); } } - spin_unlock(&portdev->cvq_lock); + spin_unlock(&portdev->c_ivq_lock); } static void out_intr(struct virtqueue *vq) @@ -1742,10 +1745,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"); @@ -1808,7 +1813,8 @@ /* Disable interrupts for vqs */ vdev->config->reset(vdev); /* Finish up work that's lined up */ - cancel_work_sync(&portdev->control_work); + if (use_multiport(portdev)) + cancel_work_sync(&portdev->control_work); list_for_each_entry_safe(port, port2, &portdev->ports, list) unplug_port(port); @@ -1885,7 +1891,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-3.5.0.orig/drivers/char/random.c +++ linux-3.5.0/drivers/char/random.c @@ -125,21 +125,26 @@ * The current exported interfaces for gathering environmental noise * from the devices are: * + * void add_device_randomness(const void *buf, unsigned int size); * void add_input_randomness(unsigned int type, unsigned int code, * unsigned int value); - * void add_interrupt_randomness(int irq); + * void add_interrupt_randomness(int irq, int irq_flags); * void add_disk_randomness(struct gendisk *disk); * + * add_device_randomness() is for adding data to the random pool that + * is likely to differ between two devices (or possibly even per boot). + * This would be things like MAC addresses or serial numbers, or the + * read-out of the RTC. This does *not* add any actual entropy to the + * pool, but it initializes the pool to different values for devices + * that might otherwise be identical and have very little entropy + * available to them (particularly common in the embedded world). + * * add_input_randomness() uses the input layer interrupt timing, as well as * the event type information from the hardware. * - * add_interrupt_randomness() uses the inter-interrupt timing as random - * inputs to the entropy pool. Note that not all interrupts are good - * sources of randomness! For example, the timer interrupts is not a - * good choice, because the periodicity of the interrupts is too - * regular, and hence predictable to an attacker. Network Interface - * Controller interrupts are a better measure, since the timing of the - * NIC interrupts are more unpredictable. + * add_interrupt_randomness() uses the interrupt timing as random + * inputs to the entropy pool. Using the cycle counters and the irq source + * as inputs, it feeds the randomness roughly once a second. * * add_disk_randomness() uses what amounts to the seek time of block * layer request events, on a per-disk_devt basis, as input to the @@ -248,6 +253,8 @@ #include #include #include +#include +#include #ifdef CONFIG_GENERIC_HARDIRQS # include @@ -256,8 +263,12 @@ #include #include #include +#include #include +#define CREATE_TRACE_POINTS +#include + /* * Configuration information */ @@ -266,6 +277,8 @@ #define SEC_XFER_SIZE 512 #define EXTRACT_SIZE 10 +#define LONGS(x) (((x) + sizeof(unsigned long) - 1)/sizeof(unsigned long)) + /* * The minimum number of bits of entropy before we wake up a read on * /dev/random. Should be enough to do a significant reseed. @@ -420,8 +433,10 @@ /* read-write data: */ spinlock_t lock; unsigned add_ptr; + unsigned input_rotate; int entropy_count; - int input_rotate; + int entropy_total; + unsigned int initialized:1; __u8 last_data[EXTRACT_SIZE]; }; @@ -454,6 +469,10 @@ .pool = nonblocking_pool_data }; +static __u32 const twist_table[8] = { + 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, + 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; + /* * This function adds bytes into the entropy "pool". It does not * update the entropy estimate. The caller should call @@ -464,29 +483,24 @@ * it's cheap to do so and helps slightly in the expected case where * the entropy is concentrated in the low-order bits. */ -static void mix_pool_bytes_extract(struct entropy_store *r, const void *in, - int nbytes, __u8 out[64]) +static void _mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) { - static __u32 const twist_table[8] = { - 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, - 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; unsigned long i, j, tap1, tap2, tap3, tap4, tap5; int input_rotate; int wordmask = r->poolinfo->poolwords - 1; const char *bytes = in; __u32 w; - unsigned long flags; - /* Taps are constant, so we can load them without holding r->lock. */ tap1 = r->poolinfo->tap1; tap2 = r->poolinfo->tap2; tap3 = r->poolinfo->tap3; tap4 = r->poolinfo->tap4; tap5 = r->poolinfo->tap5; - spin_lock_irqsave(&r->lock, flags); - input_rotate = r->input_rotate; - i = r->add_ptr; + smp_rmb(); + input_rotate = ACCESS_ONCE(r->input_rotate); + i = ACCESS_ONCE(r->add_ptr); /* mix one byte at a time to simplify size handling and churn faster */ while (nbytes--) { @@ -513,19 +527,61 @@ input_rotate += i ? 7 : 14; } - r->input_rotate = input_rotate; - r->add_ptr = i; + ACCESS_ONCE(r->input_rotate) = input_rotate; + ACCESS_ONCE(r->add_ptr) = i; + smp_wmb(); if (out) for (j = 0; j < 16; j++) ((__u32 *)out)[j] = r->pool[(i - j) & wordmask]; +} + +static void __mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) +{ + trace_mix_pool_bytes_nolock(r->name, nbytes, _RET_IP_); + _mix_pool_bytes(r, in, nbytes, out); +} + +static void mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) +{ + unsigned long flags; + trace_mix_pool_bytes(r->name, nbytes, _RET_IP_); + spin_lock_irqsave(&r->lock, flags); + _mix_pool_bytes(r, in, nbytes, out); spin_unlock_irqrestore(&r->lock, flags); } -static void mix_pool_bytes(struct entropy_store *r, const void *in, int bytes) +struct fast_pool { + __u32 pool[4]; + unsigned long last; + unsigned short count; + unsigned char rotate; + unsigned char last_timer_intr; +}; + +/* + * This is a fast mixing routine used by the interrupt randomness + * collector. It's hardcoded for an 128 bit pool and assumes that any + * locks that might be needed are taken by the caller. + */ +static void fast_mix(struct fast_pool *f, const void *in, int nbytes) { - mix_pool_bytes_extract(r, in, bytes, NULL); + const char *bytes = in; + __u32 w; + unsigned i = f->count; + unsigned input_rotate = f->rotate; + + while (nbytes--) { + w = rol32(*bytes++, input_rotate & 31) ^ f->pool[i & 3] ^ + f->pool[(i + 1) & 3]; + f->pool[i & 3] = (w >> 3) ^ twist_table[w & 7]; + input_rotate += (i++ & 3) ? 7 : 14; + } + f->count = i; + f->rotate = input_rotate; } /* @@ -533,30 +589,38 @@ */ static void credit_entropy_bits(struct entropy_store *r, int nbits) { - unsigned long flags; - int entropy_count; + int entropy_count, orig; if (!nbits) return; - spin_lock_irqsave(&r->lock, flags); - DEBUG_ENT("added %d entropy credits to %s\n", nbits, r->name); - entropy_count = r->entropy_count; +retry: + entropy_count = orig = ACCESS_ONCE(r->entropy_count); entropy_count += nbits; + if (entropy_count < 0) { DEBUG_ENT("negative entropy/overflow\n"); entropy_count = 0; } else if (entropy_count > r->poolinfo->POOLBITS) entropy_count = r->poolinfo->POOLBITS; - r->entropy_count = entropy_count; + if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) + goto retry; + + if (!r->initialized && nbits > 0) { + r->entropy_total += nbits; + if (r->entropy_total > 128) + r->initialized = 1; + } + + trace_credit_entropy_bits(r->name, nbits, entropy_count, + r->entropy_total, _RET_IP_); /* should we wake readers? */ if (r == &input_pool && entropy_count >= random_read_wakeup_thresh) { wake_up_interruptible(&random_read_wait); kill_fasync(&fasync, SIGIO, POLL_IN); } - spin_unlock_irqrestore(&r->lock, flags); } /********************************************************************* @@ -572,42 +636,24 @@ unsigned dont_count_entropy:1; }; -#ifndef CONFIG_GENERIC_HARDIRQS - -static struct timer_rand_state *irq_timer_state[NR_IRQS]; - -static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -{ - return irq_timer_state[irq]; -} - -static void set_timer_rand_state(unsigned int irq, - struct timer_rand_state *state) -{ - irq_timer_state[irq] = state; -} - -#else - -static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -{ - struct irq_desc *desc; - - desc = irq_to_desc(irq); - - return desc->timer_rand_state; -} - -static void set_timer_rand_state(unsigned int irq, - struct timer_rand_state *state) +/* + * Add device- or boot-specific data to the input and nonblocking + * pools to help initialize them to unique values. + * + * None of this adds any entropy, it is meant to avoid the + * problem of the nonblocking pool having similar initial state + * across largely identical devices. + */ +void add_device_randomness(const void *buf, unsigned int size) { - struct irq_desc *desc; - - desc = irq_to_desc(irq); + unsigned long time = get_cycles() ^ jiffies; - desc->timer_rand_state = state; + mix_pool_bytes(&input_pool, buf, size, NULL); + mix_pool_bytes(&input_pool, &time, sizeof(time), NULL); + mix_pool_bytes(&nonblocking_pool, buf, size, NULL); + mix_pool_bytes(&nonblocking_pool, &time, sizeof(time), NULL); } -#endif +EXPORT_SYMBOL(add_device_randomness); static struct timer_rand_state input_timer_state; @@ -637,13 +683,9 @@ goto out; sample.jiffies = jiffies; - - /* Use arch random value, fall back to cycles */ - if (!arch_get_random_int(&sample.cycles)) - sample.cycles = get_cycles(); - + sample.cycles = get_cycles(); sample.num = num; - mix_pool_bytes(&input_pool, &sample, sizeof(sample)); + mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL); /* * Calculate number of bits of randomness we probably added. @@ -700,17 +742,48 @@ } EXPORT_SYMBOL_GPL(add_input_randomness); -void add_interrupt_randomness(int irq) +static DEFINE_PER_CPU(struct fast_pool, irq_randomness); + +void add_interrupt_randomness(int irq, int irq_flags) { - struct timer_rand_state *state; + struct entropy_store *r; + struct fast_pool *fast_pool = &__get_cpu_var(irq_randomness); + struct pt_regs *regs = get_irq_regs(); + unsigned long now = jiffies; + __u32 input[4], cycles = get_cycles(); + + input[0] = cycles ^ jiffies; + input[1] = irq; + if (regs) { + __u64 ip = instruction_pointer(regs); + input[2] = ip; + input[3] = ip >> 32; + } - state = get_timer_rand_state(irq); + fast_mix(fast_pool, input, sizeof(input)); - if (state == NULL) + if ((fast_pool->count & 1023) && + !time_after(now, fast_pool->last + HZ)) return; - DEBUG_ENT("irq event %d\n", irq); - add_timer_randomness(state, 0x100 + irq); + fast_pool->last = now; + + r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool; + __mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL); + /* + * If we don't have a valid cycle counter, and we see + * back-to-back timer interrupts, then skip giving credit for + * any entropy. + */ + if (cycles == 0) { + if (irq_flags & __IRQF_TIMER) { + if (fast_pool->last_timer_intr) + return; + fast_pool->last_timer_intr = 1; + } else + fast_pool->last_timer_intr = 0; + } + credit_entropy_bits(r, 1); } #ifdef CONFIG_BLOCK @@ -742,7 +815,7 @@ */ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes) { - __u32 tmp[OUTPUT_POOL_WORDS]; + __u32 tmp[OUTPUT_POOL_WORDS]; if (r->pull && r->entropy_count < nbytes * 8 && r->entropy_count < r->poolinfo->POOLBITS) { @@ -761,7 +834,7 @@ bytes = extract_entropy(r->pull, tmp, bytes, random_read_wakeup_thresh / 8, rsvd); - mix_pool_bytes(r, tmp, bytes); + mix_pool_bytes(r, tmp, bytes, NULL); credit_entropy_bits(r, bytes*8); } } @@ -782,6 +855,7 @@ int reserved) { unsigned long flags; + int wakeup_write = 0; /* Hold lock while accounting */ spin_lock_irqsave(&r->lock, flags); @@ -794,19 +868,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 %d entropy credits from %s%s\n", @@ -814,19 +894,30 @@ spin_unlock_irqrestore(&r->lock, flags); + if (wakeup_write) { + wake_up_interruptible(&random_write_wait); + kill_fasync(&fasync, SIGIO, POLL_OUT); + } + return nbytes; } static void extract_buf(struct entropy_store *r, __u8 *out) { int i; - __u32 hash[5], workspace[SHA_WORKSPACE_WORDS]; + union { + __u32 w[5]; + unsigned long l[LONGS(EXTRACT_SIZE)]; + } hash; + __u32 workspace[SHA_WORKSPACE_WORDS]; __u8 extract[64]; + unsigned long flags; /* Generate a hash across the pool, 16 words (512 bits) at a time */ - sha_init(hash); + sha_init(hash.w); + spin_lock_irqsave(&r->lock, flags); for (i = 0; i < r->poolinfo->poolwords; i += 16) - sha_transform(hash, (__u8 *)(r->pool + i), workspace); + sha_transform(hash.w, (__u8 *)(r->pool + i), workspace); /* * We mix the hash back into the pool to prevent backtracking @@ -837,13 +928,14 @@ * brute-forcing the feedback as hard as brute-forcing the * hash. */ - mix_pool_bytes_extract(r, hash, sizeof(hash), extract); + __mix_pool_bytes(r, hash.w, sizeof(hash.w), extract); + spin_unlock_irqrestore(&r->lock, flags); /* * To avoid duplicates, we atomically extract a portion of the * pool while mixing, and hash one final time. */ - sha_transform(hash, extract, workspace); + sha_transform(hash.w, extract, workspace); memset(extract, 0, sizeof(extract)); memset(workspace, 0, sizeof(workspace)); @@ -852,20 +944,32 @@ * pattern, we fold it in half. Thus, we always feed back * twice as much data as we output. */ - hash[0] ^= hash[3]; - hash[1] ^= hash[4]; - hash[2] ^= rol32(hash[2], 16); - memcpy(out, hash, EXTRACT_SIZE); - memset(hash, 0, sizeof(hash)); + hash.w[0] ^= hash.w[3]; + hash.w[1] ^= hash.w[4]; + hash.w[2] ^= rol32(hash.w[2], 16); + + /* + * If we have a architectural hardware random number + * generator, mix that in, too. + */ + for (i = 0; i < LONGS(EXTRACT_SIZE); i++) { + unsigned long v; + if (!arch_get_random_long(&v)) + break; + hash.l[i] ^= v; + } + + memcpy(out, &hash, EXTRACT_SIZE); + memset(&hash, 0, sizeof(hash)); } static ssize_t extract_entropy(struct entropy_store *r, void *buf, - size_t nbytes, int min, int reserved) + size_t nbytes, int min, int reserved) { ssize_t ret = 0, i; __u8 tmp[EXTRACT_SIZE]; - unsigned long flags; + trace_extract_entropy(r->name, nbytes, r->entropy_count, _RET_IP_); xfer_secondary_pool(r, nbytes); nbytes = account(r, nbytes, min, reserved); @@ -873,6 +977,8 @@ extract_buf(r, tmp); if (fips_enabled) { + unsigned long flags; + spin_lock_irqsave(&r->lock, flags); if (!memcmp(tmp, r->last_data, EXTRACT_SIZE)) panic("Hardware RNG duplicated output!\n"); @@ -898,6 +1004,7 @@ ssize_t ret = 0, i; __u8 tmp[EXTRACT_SIZE]; + trace_extract_entropy_user(r->name, nbytes, r->entropy_count, _RET_IP_); xfer_secondary_pool(r, nbytes); nbytes = account(r, nbytes, 0, 0); @@ -931,17 +1038,35 @@ /* * This function is the exported kernel interface. It returns some - * number of good random numbers, suitable for seeding TCP sequence - * numbers, etc. + * number of good random numbers, suitable for key generation, seeding + * TCP sequence numbers, etc. It does not use the hw random number + * generator, if available; use get_random_bytes_arch() for that. */ void get_random_bytes(void *buf, int nbytes) { + extract_entropy(&nonblocking_pool, buf, nbytes, 0, 0); +} +EXPORT_SYMBOL(get_random_bytes); + +/* + * This function will use the architecture-specific hardware random + * number generator if it is available. The arch-specific hw RNG will + * almost certainly be faster than what we can do in software, but it + * is impossible to verify that it is implemented securely (as + * opposed, to, say, the AES encryption of a sequence number using a + * key known by the NSA). So it's useful if we need the speed, but + * only if we're willing to trust the hardware manufacturer not to + * have put in a back door. + */ +void get_random_bytes_arch(void *buf, int nbytes) +{ char *p = buf; + trace_get_random_bytes(nbytes, _RET_IP_); while (nbytes) { unsigned long v; int chunk = min(nbytes, (int)sizeof(unsigned long)); - + if (!arch_get_random_long(&v)) break; @@ -950,9 +1075,11 @@ nbytes -= chunk; } - extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); + if (nbytes) + extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); } -EXPORT_SYMBOL(get_random_bytes); +EXPORT_SYMBOL(get_random_bytes_arch); + /* * init_std_data - initialize pool with system data @@ -966,23 +1093,30 @@ static void init_std_data(struct entropy_store *r) { int i; - ktime_t now; - unsigned long flags; + ktime_t now = ktime_get_real(); + unsigned long rv; - spin_lock_irqsave(&r->lock, flags); r->entropy_count = 0; - spin_unlock_irqrestore(&r->lock, flags); - - now = ktime_get_real(); - mix_pool_bytes(r, &now, sizeof(now)); - for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) { - if (!arch_get_random_long(&flags)) + r->entropy_total = 0; + mix_pool_bytes(r, &now, sizeof(now), NULL); + for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof(rv)) { + if (!arch_get_random_long(&rv)) break; - mix_pool_bytes(r, &flags, sizeof(flags)); + mix_pool_bytes(r, &rv, sizeof(rv), NULL); } - mix_pool_bytes(r, utsname(), sizeof(*(utsname()))); + mix_pool_bytes(r, utsname(), sizeof(*(utsname())), NULL); } +/* + * Note that setup_arch() may call add_device_randomness() + * long before we get here. This allows seeding of the pools + * with some platform dependent data very early in the boot + * process. But it limits our options here. We must use + * statically allocated structures that already have all + * initializations complete at compile time. We should also + * take care not to overwrite the precious per platform data + * we were given. + */ static int rand_initialize(void) { init_std_data(&input_pool); @@ -992,24 +1126,6 @@ } module_init(rand_initialize); -void rand_initialize_irq(int irq) -{ - struct timer_rand_state *state; - - state = get_timer_rand_state(irq); - - if (state) - return; - - /* - * If kzalloc returns null, we just won't use that entropy - * source. - */ - state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL); - if (state) - set_timer_rand_state(irq, state); -} - #ifdef CONFIG_BLOCK void rand_initialize_disk(struct gendisk *disk) { @@ -1117,7 +1233,7 @@ count -= bytes; p += bytes; - mix_pool_bytes(r, buf, bytes); + mix_pool_bytes(r, buf, bytes, NULL); cond_resched(); } --- linux-3.5.0.orig/drivers/char/mspec.c +++ linux-3.5.0/drivers/char/mspec.c @@ -283,7 +283,7 @@ vdata->flags = flags; vdata->type = type; spin_lock_init(&vdata->lock); - vdata->refcnt = ATOMIC_INIT(1); + atomic_set(&vdata->refcnt, 1); vma->vm_private_data = vdata; vma->vm_flags |= (VM_IO | VM_RESERVED | VM_PFNMAP | VM_DONTEXPAND); --- linux-3.5.0.orig/drivers/char/ttyprintk.c +++ linux-3.5.0/drivers/char/ttyprintk.c @@ -67,7 +67,7 @@ tmp[tpk_curr + 1] = '\0'; printk(KERN_INFO "%s%s", tpk_tag, tmp); tpk_curr = 0; - if (buf[i + 1] == '\n') + if ((i + 1) < count && buf[i + 1] == '\n') i++; break; case '\n': --- linux-3.5.0.orig/drivers/char/hpet.c +++ linux-3.5.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-3.5.0.orig/drivers/char/agp/intel-agp.h +++ linux-3.5.0/drivers/char/agp/intel-agp.h @@ -64,6 +64,7 @@ #define I830_PTE_SYSTEM_CACHED 0x00000006 /* GT PTE cache control fields */ #define GEN6_PTE_UNCACHED 0x00000002 +#define HSW_PTE_UNCACHED 0x00000000 #define GEN6_PTE_LLC 0x00000004 #define GEN6_PTE_LLC_MLC 0x00000006 #define GEN6_PTE_GFDT 0x00000008 @@ -239,19 +240,45 @@ #define PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_GT2_IG 0x016A #define PCI_DEVICE_ID_INTEL_VALLEYVIEW_HB 0x0F00 /* VLV1 */ #define PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG 0x0F30 -#define PCI_DEVICE_ID_INTEL_HASWELL_HB 0x0400 /* Desktop */ +#define PCI_DEVICE_ID_INTEL_HASWELL_HB 0x0400 /* Desktop */ #define PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG 0x0402 #define PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG 0x0412 -#define PCI_DEVICE_ID_INTEL_HASWELL_M_HB 0x0404 /* Mobile */ +#define PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG 0x0422 +#define PCI_DEVICE_ID_INTEL_HASWELL_M_HB 0x0404 /* Mobile */ #define PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG 0x0406 #define PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG 0x0416 -#define PCI_DEVICE_ID_INTEL_HASWELL_S_HB 0x0408 /* Server */ +#define PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG 0x0426 +#define PCI_DEVICE_ID_INTEL_HASWELL_S_HB 0x0408 /* Server */ #define PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG 0x040a #define PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG 0x041a -#define PCI_DEVICE_ID_INTEL_HASWELL_SDV 0x0c16 /* SDV */ -#define PCI_DEVICE_ID_INTEL_HASWELL_E_HB 0x0c04 +#define PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG 0x042a +#define PCI_DEVICE_ID_INTEL_HASWELL_E_HB 0x0c04 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG 0x0C02 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG 0x0C12 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG 0x0C22 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG 0x0C06 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG 0x0C16 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG 0x0C26 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG 0x0C0A +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG 0x0C1A +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG 0x0C2A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG 0x0A02 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG 0x0A12 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG 0x0A22 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG 0x0A06 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG 0x0A16 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG 0x0A26 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG 0x0A0A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG 0x0A1A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG 0x0A2A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG 0x0D12 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG 0x0D22 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG 0x0D32 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG 0x0D16 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG 0x0D26 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG 0x0D36 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG 0x0D1A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG 0x0D2A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG 0x0D3A -int intel_gmch_probe(struct pci_dev *pdev, - struct agp_bridge_data *bridge); -void intel_gmch_remove(struct pci_dev *pdev); #endif --- linux-3.5.0.orig/drivers/char/agp/intel-gtt.c +++ linux-3.5.0/drivers/char/agp/intel-gtt.c @@ -66,7 +66,6 @@ struct pci_dev *bridge_dev; u8 __iomem *registers; phys_addr_t gtt_bus_addr; - phys_addr_t gma_bus_addr; u32 PGETBL_save; u32 __iomem *gtt; /* I915G */ bool clear_fake_agp; /* on first access via agp, fill with scratch */ @@ -76,6 +75,7 @@ struct resource ifp_resource; int resource_valid; struct page *scratch_page; + int refcount; } intel_private; #define INTEL_GTT_GEN intel_private.driver->gen @@ -648,6 +648,7 @@ static int intel_gtt_init(void) { + u32 gma_addr; u32 gtt_map_size; int ret; @@ -694,6 +695,15 @@ return ret; } + if (INTEL_GTT_GEN <= 2) + pci_read_config_dword(intel_private.pcidev, I810_GMADDR, + &gma_addr); + else + pci_read_config_dword(intel_private.pcidev, I915_GMADDR, + &gma_addr); + + intel_private.base.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK); + return 0; } @@ -767,20 +777,10 @@ writel(addr | pte_flags, intel_private.gtt + entry); } -static bool intel_enable_gtt(void) +bool intel_enable_gtt(void) { - u32 gma_addr; u8 __iomem *reg; - if (INTEL_GTT_GEN <= 2) - pci_read_config_dword(intel_private.pcidev, I810_GMADDR, - &gma_addr); - else - pci_read_config_dword(intel_private.pcidev, I915_GMADDR, - &gma_addr); - - intel_private.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK); - if (INTEL_GTT_GEN >= 6) return true; @@ -823,6 +823,7 @@ return true; } +EXPORT_SYMBOL(intel_enable_gtt); static int i830_setup(void) { @@ -860,7 +861,7 @@ return -EIO; intel_private.clear_fake_agp = true; - agp_bridge->gart_bus_addr = intel_private.gma_bus_addr; + agp_bridge->gart_bus_addr = intel_private.base.gma_bus_addr; return 0; } @@ -904,6 +905,30 @@ } EXPORT_SYMBOL(intel_gtt_insert_sg_entries); +void intel_gtt_insert_sg_entries_hsw(struct sg_table *st, + unsigned int pg_start, + unsigned int flags) +{ + struct scatterlist *sg; + unsigned int len, m; + int i, j; + + j = pg_start; + + /* sg may merge pages, but we have to separate + * per-page addr for GTT */ + for_each_sg(st->sgl, sg, st->nents, i) { + len = sg_dma_len(sg) >> PAGE_SHIFT; + for (m = 0; m < len; m++) { + dma_addr_t addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + intel_private.driver->write_entry(addr, j, flags); + j++; + } + } + readl(intel_private.gtt+j-1); +} +EXPORT_SYMBOL(intel_gtt_insert_sg_entries_hsw); + void intel_gtt_insert_pages(unsigned int first_entry, unsigned int num_entries, struct page **pages, unsigned int flags) { @@ -1155,6 +1180,30 @@ return true; } +static void haswell_write_entry(dma_addr_t addr, unsigned int entry, + unsigned int flags) +{ + unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT; + unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT; + u32 pte_flags; + + if (type_mask == AGP_USER_MEMORY) + pte_flags = HSW_PTE_UNCACHED | I810_PTE_VALID; + else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC) { + pte_flags = GEN6_PTE_LLC_MLC | I810_PTE_VALID; + if (gfdt) + pte_flags |= GEN6_PTE_GFDT; + } else { /* set 'normal'/'cached' to LLC by default */ + pte_flags = GEN6_PTE_LLC | I810_PTE_VALID; + if (gfdt) + pte_flags |= GEN6_PTE_GFDT; + } + + /* gen6 has bit11-4 for physical addr bit39-32 */ + addr |= (addr >> 28) & 0xff0; + writel(addr | pte_flags, intel_private.gtt + entry); +} + static void gen6_write_entry(dma_addr_t addr, unsigned int entry, unsigned int flags) { @@ -1372,6 +1421,15 @@ .check_flags = gen6_check_flags, .chipset_flush = i9xx_chipset_flush, }; +static const struct intel_gtt_driver haswell_gtt_driver = { + .gen = 6, + .setup = i9xx_setup, + .cleanup = gen6_cleanup, + .write_entry = haswell_write_entry, + .dma_mask_size = 40, + .check_flags = gen6_check_flags, + .chipset_flush = i9xx_chipset_flush, +}; static const struct intel_gtt_driver valleyview_gtt_driver = { .gen = 7, .setup = i9xx_setup, @@ -1490,19 +1548,77 @@ { PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG, "ValleyView", &valleyview_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, - { PCI_DEVICE_ID_INTEL_HASWELL_SDV, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { 0, NULL, NULL } }; @@ -1523,14 +1639,32 @@ return 1; } -int intel_gmch_probe(struct pci_dev *pdev, - struct agp_bridge_data *bridge) +int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, + struct agp_bridge_data *bridge) { int i, mask; - intel_private.driver = NULL; + + /* + * Can be called from the fake agp driver but also directly from + * drm/i915.ko. Hence we need to check whether everything is set up + * already. + */ + if (intel_private.driver) { + intel_private.refcount++; + return 1; + } for (i = 0; intel_gtt_chipsets[i].name != NULL; i++) { - if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) { + if (gpu_pdev) { + if (gpu_pdev->device == + intel_gtt_chipsets[i].gmch_chip_id) { + intel_private.pcidev = pci_dev_get(gpu_pdev); + intel_private.driver = + intel_gtt_chipsets[i].gtt_driver; + + break; + } + } else if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) { intel_private.driver = intel_gtt_chipsets[i].gtt_driver; break; @@ -1540,13 +1674,17 @@ if (!intel_private.driver) return 0; - bridge->driver = &intel_fake_agp_driver; - bridge->dev_private_data = &intel_private; - bridge->dev = pdev; + intel_private.refcount++; + + if (bridge) { + bridge->driver = &intel_fake_agp_driver; + bridge->dev_private_data = &intel_private; + bridge->dev = bridge_pdev; + } - intel_private.bridge_dev = pci_dev_get(pdev); + intel_private.bridge_dev = pci_dev_get(bridge_pdev); - dev_info(&pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name); + dev_info(&bridge_pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name); mask = intel_private.driver->dma_mask_size; if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(mask))) @@ -1556,17 +1694,17 @@ pci_set_consistent_dma_mask(intel_private.pcidev, DMA_BIT_MASK(mask)); - /*if (bridge->driver == &intel_810_driver) - return 1;*/ + if (intel_gtt_init() != 0) { + intel_gmch_remove(); - if (intel_gtt_init() != 0) return 0; + } return 1; } EXPORT_SYMBOL(intel_gmch_probe); -const struct intel_gtt *intel_gtt_get(void) +struct intel_gtt *intel_gtt_get(void) { return &intel_private.base; } @@ -1579,12 +1717,16 @@ } EXPORT_SYMBOL(intel_gtt_chipset_flush); -void intel_gmch_remove(struct pci_dev *pdev) +void intel_gmch_remove(void) { + if (--intel_private.refcount) + return; + if (intel_private.pcidev) pci_dev_put(intel_private.pcidev); if (intel_private.bridge_dev) pci_dev_put(intel_private.bridge_dev); + intel_private.driver = NULL; } EXPORT_SYMBOL(intel_gmch_remove); --- linux-3.5.0.orig/drivers/char/agp/intel-agp.c +++ linux-3.5.0/drivers/char/agp/intel-agp.c @@ -12,6 +12,7 @@ #include #include "agp.h" #include "intel-agp.h" +#include int intel_agp_enabled; EXPORT_SYMBOL(intel_agp_enabled); @@ -747,7 +748,7 @@ bridge->capndx = cap_ptr; - if (intel_gmch_probe(pdev, bridge)) + if (intel_gmch_probe(pdev, NULL, bridge)) goto found_gmch; for (i = 0; intel_agp_chipsets[i].name != NULL; i++) { @@ -824,7 +825,7 @@ agp_remove_bridge(bridge); - intel_gmch_remove(pdev); + intel_gmch_remove(); agp_put_bridge(bridge); } @@ -902,17 +903,6 @@ ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_M_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_HB), - ID(PCI_DEVICE_ID_INTEL_VALLEYVIEW_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_M_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_S_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_E_HB), { } }; --- linux-3.5.0.orig/drivers/char/ipmi/ipmi_bt_sm.c +++ linux-3.5.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-3.5.0.orig/drivers/char/ipmi/ipmi_devintf.c +++ linux-3.5.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-3.5.0.orig/drivers/char/hw_random/core.c +++ linux-3.5.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-3.5.0.orig/drivers/char/hw_random/virtio-rng.c +++ linux-3.5.0/drivers/char/hw_random/virtio-rng.c @@ -89,14 +89,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; } @@ -108,6 +116,7 @@ vdev->config->reset(vdev); hwrng_unregister(&virtio_hwrng); vdev->config->del_vqs(vdev); + vq = NULL; } static struct virtio_device_id id_table[] = { --- linux-3.5.0.orig/drivers/char/tpm/tpm.c +++ linux-3.5.0/drivers/char/tpm/tpm.c @@ -827,10 +827,10 @@ int tpm_do_selftest(struct tpm_chip *chip) { int rc; - u8 digest[TPM_DIGEST_SIZE]; unsigned int loops; unsigned int delay_msec = 1000; unsigned long duration; + struct tpm_cmd_t cmd; duration = tpm_calc_ordinal_duration(chip, TPM_ORD_CONTINUE_SELFTEST); @@ -845,7 +845,15 @@ return rc; do { - rc = __tpm_pcr_read(chip, 0, digest); + /* Attempt to read a PCR value */ + cmd.header.in = pcrread_header; + cmd.params.pcrread_in.pcr_idx = cpu_to_be32(0); + rc = tpm_transmit(chip, (u8 *) &cmd, READ_PCR_RESULT_SIZE); + + if (rc < TPM_HEADER_SIZE) + return -EFAULT; + + rc = be32_to_cpu(cmd.header.out.return_code); if (rc == TPM_ERR_DISABLED || rc == TPM_ERR_DEACTIVATED) { dev_info(chip->dev, "TPM is disabled/deactivated (0x%X)\n", rc); --- linux-3.5.0.orig/drivers/iommu/intel_irq_remapping.c +++ linux-3.5.0/drivers/iommu/intel_irq_remapping.c @@ -736,6 +736,7 @@ { struct dmar_drhd_unit *drhd; int ir_supported = 0; + int ioapic_idx; for_each_drhd_unit(drhd) { struct intel_iommu *iommu = drhd->iommu; @@ -748,13 +749,20 @@ } } - if (ir_supported && ir_ioapic_num != nr_ioapics) { - printk(KERN_WARNING - "Not all IO-APIC's listed under remapping hardware\n"); - return -1; + if (!ir_supported) + return 0; + + for (ioapic_idx = 0; ioapic_idx < nr_ioapics; ioapic_idx++) { + int ioapic_id = mpc_ioapic_id(ioapic_idx); + if (!map_ioapic_to_ir(ioapic_id)) { + pr_err(FW_BUG "ioapic %d has no mapping iommu, " + "interrupt remapping will be disabled\n", + ioapic_id); + return -1; + } } - return ir_supported; + return 1; } int __init ir_dev_scope_init(void) --- linux-3.5.0.orig/drivers/iommu/amd_iommu_init.c +++ linux-3.5.0/drivers/iommu/amd_iommu_init.c @@ -1002,6 +1002,38 @@ } /* + * Family15h Model 10h-1fh erratum 746 (IOMMU Logging May Stall Translations) + * Workaround: + * BIOS should disable L2B micellaneous clock gating by setting + * L2_L2B_CK_GATE_CONTROL[CKGateL2BMiscDisable](D0F2xF4_x90[2]) = 1b + */ +static void __init amd_iommu_erratum_746_workaround(struct amd_iommu *iommu) +{ + u32 value; + + if ((boot_cpu_data.x86 != 0x15) || + (boot_cpu_data.x86_model < 0x10) || + (boot_cpu_data.x86_model > 0x1f)) + return; + + pci_write_config_dword(iommu->dev, 0xf0, 0x90); + pci_read_config_dword(iommu->dev, 0xf4, &value); + + if (value & BIT(2)) + return; + + /* Select NB indirect register 0x90 and enable writing */ + pci_write_config_dword(iommu->dev, 0xf0, 0x90 | (1 << 8)); + + pci_write_config_dword(iommu->dev, 0xf4, value | 0x4); + pr_info("AMD-Vi: Applying erratum 746 workaround for IOMMU at %s\n", + dev_name(&iommu->dev->dev)); + + /* Clear the enable writing bit */ + pci_write_config_dword(iommu->dev, 0xf0, 0x90); +} + +/* * This function clues the initialization function for one IOMMU * together and also allocates the command buffer and programs the * hardware. It does NOT enable the IOMMU. This is done afterwards. @@ -1062,6 +1094,8 @@ if (iommu->cap & (1UL << IOMMU_CAP_NPCACHE)) amd_iommu_np_cache = true; + amd_iommu_erratum_746_workaround(iommu); + return pci_enable_device(iommu->dev); } @@ -1538,9 +1572,6 @@ if (amd_iommu_pd_alloc_bitmap == NULL) goto free; - /* init the device table */ - init_device_table(); - /* * let all alias entries point to itself */ @@ -1621,6 +1652,7 @@ */ static int __init amd_iommu_init(void) { + struct amd_iommu *iommu; int ret = 0; ret = amd_iommu_init_hardware(); @@ -1639,6 +1671,12 @@ if (ret) goto free; + /* init the device table */ + init_device_table(); + + for_each_iommu(iommu) + iommu_flush_all_caches(iommu); + amd_iommu_init_api(); x86_platform.iommu_shutdown = disable_iommus; --- linux-3.5.0.orig/drivers/iommu/tegra-smmu.c +++ linux-3.5.0/drivers/iommu/tegra-smmu.c @@ -148,7 +148,7 @@ #define SMMU_ADDR_TO_PFN(addr) ((addr) >> 12) #define SMMU_ADDR_TO_PDN(addr) ((addr) >> 22) -#define SMMU_PDN_TO_ADDR(addr) ((pdn) << 22) +#define SMMU_PDN_TO_ADDR(pdn) ((pdn) << 22) #define _READABLE (1 << SMMU_PTB_DATA_ASID_READABLE_SHIFT) #define _WRITABLE (1 << SMMU_PTB_DATA_ASID_WRITABLE_SHIFT) --- linux-3.5.0.orig/drivers/iommu/amd_iommu.c +++ linux-3.5.0/drivers/iommu/amd_iommu.c @@ -531,11 +531,23 @@ static void iommu_poll_events(struct amd_iommu *iommu) { - u32 head, tail; + u32 head, tail, status; unsigned long flags; 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); @@ -572,16 +584,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); @@ -2254,27 +2275,34 @@ iommu_init_device(dev); + /* + * dev_data is still NULL and + * got initialized in iommu_init_device + */ + dev_data = get_dev_data(dev); + + if (iommu_pass_through || dev_data->iommu_v2) { + dev_data->passthrough = true; + attach_device(dev, pt_domain); + break; + } + domain = domain_for_device(dev); /* allocate a protection domain if a device is added */ 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); + } - if (!dev_data->passthrough) - dev->archdata.dma_ops = &amd_iommu_dma_ops; - else - dev->archdata.dma_ops = &nommu_dma_ops; + dev->archdata.dma_ops = &amd_iommu_dma_ops; break; case BUS_NOTIFY_DEL_DEVICE: --- linux-3.5.0.orig/drivers/iommu/amd_iommu_types.h +++ linux-3.5.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-3.5.0.orig/drivers/iommu/amd_iommu_v2.c +++ linux-3.5.0/drivers/iommu/amd_iommu_v2.c @@ -681,6 +681,8 @@ atomic_set(&pasid_state->count, 1); init_waitqueue_head(&pasid_state->wq); + spin_lock_init(&pasid_state->lock); + pasid_state->task = task; pasid_state->mm = get_task_mm(task); pasid_state->device_state = dev_state; --- linux-3.5.0.orig/drivers/iommu/intel-iommu.c +++ linux-3.5.0/drivers/iommu/intel-iommu.c @@ -589,7 +589,9 @@ { int i; - domain->iommu_coherency = 1; + i = find_first_bit(domain->iommu_bmp, g_num_of_iommus); + + domain->iommu_coherency = i < g_num_of_iommus ? 1 : 0; for_each_set_bit(i, domain->iommu_bmp, g_num_of_iommus) { if (!ecap_coherent(g_iommus[i]->ecap)) { @@ -1825,10 +1827,17 @@ if (!pte) return -ENOMEM; /* It is large page*/ - if (largepage_lvl > 1) + if (largepage_lvl > 1) { pteval |= DMA_PTE_LARGE_PAGE; - else + /* Ensure that old small page tables are removed to make room + for superpage, if they exist. */ + dma_pte_clear_range(domain, iov_pfn, + iov_pfn + lvl_to_nr_pages(largepage_lvl) - 1); + dma_pte_free_pagetable(domain, iov_pfn, + iov_pfn + lvl_to_nr_pages(largepage_lvl) - 1); + } else { pteval &= ~(uint64_t)DMA_PTE_LARGE_PAGE; + } } /* We don't need lock here, nobody else @@ -2317,8 +2326,39 @@ return 0; } +static bool device_has_rmrr(struct pci_dev *dev) +{ + struct dmar_rmrr_unit *rmrr; + int i; + + for_each_rmrr_units(rmrr) { + for (i = 0; i < rmrr->devices_cnt; i++) { + /* + * Return TRUE if this RMRR contains the device that + * is passed in. + */ + if (rmrr->devices[i] == dev) + return true; + } + } + return false; +} + static int iommu_should_identity_map(struct pci_dev *pdev, int startup) { + + /* + * We want to prevent any device associated with an RMRR from + * getting placed into the SI Domain. This is done because + * problems exist when devices are moved in and out of domains + * and their respective RMRR info is lost. We exempt USB devices + * from this process due to their usage of RMRRs that are known + * to not be needed after BIOS hand-off to OS. + */ + if (device_has_rmrr(pdev) && + (pdev->class >> 8) != PCI_CLASS_SERIAL_USB) + return 0; + if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev)) return 1; @@ -4151,23 +4191,38 @@ .pgsize_bitmap = INTEL_IOMMU_PGSIZES, }; +static void quirk_iommu_g4x_gfx(struct pci_dev *dev) +{ + /* G4x/GM45 integrated gfx dmar support is totally busted. */ + printk(KERN_INFO "DMAR: Disabling IOMMU for graphics on this chipset\n"); + dmar_map_gfx = 0; +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e10, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e20, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e30, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e40, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e90, quirk_iommu_g4x_gfx); + static void __devinit quirk_iommu_rwbf(struct pci_dev *dev) { /* * Mobile 4 Series Chipset neglects to set RWBF capability, - * but needs it: + * but needs it. Same seems to hold for the desktop versions. */ printk(KERN_INFO "DMAR: Forcing write-buffer flush capability\n"); rwbf_quirk = 1; - - /* https://bugzilla.redhat.com/show_bug.cgi?id=538163 */ - if (dev->revision == 0x07) { - printk(KERN_INFO "DMAR: Disabling IOMMU for graphics on this chipset\n"); - dmar_map_gfx = 0; - } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e10, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e20, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e30, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e40, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e90, quirk_iommu_rwbf); #define GGC 0x52 #define GGC_MEMORY_SIZE_MASK (0xf << 8) --- linux-3.5.0.orig/drivers/power/ab8500_btemp.c +++ linux-3.5.0/drivers/power/ab8500_btemp.c @@ -1119,7 +1119,7 @@ platform_driver_unregister(&ab8500_btemp_driver); } -subsys_initcall_sync(ab8500_btemp_init); +device_initcall(ab8500_btemp_init); module_exit(ab8500_btemp_exit); MODULE_LICENSE("GPL v2"); --- linux-3.5.0.orig/drivers/power/abx500_chargalg.c +++ linux-3.5.0/drivers/power/abx500_chargalg.c @@ -1698,7 +1698,7 @@ static struct attribute abx500_chargalg_en_charger = \ { .name = "chargalg", - .mode = S_IWUGO, + .mode = S_IWUSR, }; static struct attribute *abx500_chargalg_chg[] = { --- linux-3.5.0.orig/drivers/pci/probe.c +++ linux-3.5.0/drivers/pci/probe.c @@ -684,8 +684,10 @@ /* Check if setup is sensible at all */ if (!pass && - (primary != bus->number || secondary <= bus->number)) { - dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n"); + (primary != bus->number || secondary <= bus->number || + secondary > subordinate)) { + dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n", + secondary, subordinate); broken = 1; } --- linux-3.5.0.orig/drivers/pci/remove.c +++ linux-3.5.0/drivers/pci/remove.c @@ -19,6 +19,8 @@ static void pci_stop_dev(struct pci_dev *dev) { + pci_pme_active(dev, false); + if (dev->is_added) { pci_proc_detach_device(dev); pci_remove_sysfs_dev_files(dev); --- linux-3.5.0.orig/drivers/pci/quirks.c +++ linux-3.5.0/drivers/pci/quirks.c @@ -44,6 +44,21 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on); +/* The BAR0 ~ BAR4 of Marvell 9125 device can't be accessed +* by IO resource file, and need to skip the files +*/ +static void quirk_marvell_mask_bar(struct pci_dev *dev) +{ + int i; + + for (i = 0; i < 5; i++) + if (dev->resource[i].start) + dev->resource[i].start = + dev->resource[i].end = 0; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9125, + quirk_marvell_mask_bar); + /* The Mellanox Tavor device gives false positive parity errors * Mark this device with a broken_parity_status, to allow * PCI scanning code to "skip" this now blacklisted device. @@ -2720,7 +2735,7 @@ if (PCI_FUNC(dev->devfn)) return; /* - * RICOH 0xe823 SD/MMC card reader fails to recognize + * RICOH 0xe822 and 0xe823 SD/MMC card readers fail to recognize * certain types of SD/MMC cards. Lowering the SD base * clock frequency from 200Mhz to 50Mhz fixes this issue. * @@ -2731,7 +2746,8 @@ * 0xf9 - Key register for 0x150 * 0xfc - key register for 0xe1 */ - if (dev->device == PCI_DEVICE_ID_RICOH_R5CE823) { + if (dev->device == PCI_DEVICE_ID_RICOH_R5CE822 || + dev->device == PCI_DEVICE_ID_RICOH_R5CE823) { pci_write_config_byte(dev, 0xf9, 0xfc); pci_write_config_byte(dev, 0x150, 0x10); pci_write_config_byte(dev, 0xf9, 0x00); @@ -2758,6 +2774,8 @@ } DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832); +DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832); #endif /*CONFIG_MMC_RICOH_MMC*/ --- linux-3.5.0.orig/drivers/pci/pci-driver.c +++ linux-3.5.0/drivers/pci/pci-driver.c @@ -958,6 +958,13 @@ if (!pci_dev->state_saved && !pci_is_bridge(pci_dev)) pci_prepare_to_sleep(pci_dev); + /* + * The reason for doing this here is the same as for the analogous code + * in pci_pm_suspend_noirq(). + */ + if (pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI) + pci_write_config_word(pci_dev, PCI_COMMAND, 0); + return 0; } --- linux-3.5.0.orig/drivers/pci/pci.c +++ linux-3.5.0/drivers/pci/pci.c @@ -674,15 +674,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-3.5.0.orig/drivers/pci/pcie/aspm.c +++ linux-3.5.0/drivers/pci/pcie/aspm.c @@ -798,6 +798,9 @@ { struct pci_dev *child; + if (aspm_force) + return; + /* * Clear any ASPM setup that the firmware has carried out on this bus */ --- linux-3.5.0.orig/drivers/pci/pcie/aer/aerdrv_core.c +++ linux-3.5.0/drivers/pci/pcie/aer/aerdrv_core.c @@ -637,6 +637,7 @@ continue; } do_recovery(pdev, entry.severity); + pci_dev_put(pdev); } } #endif --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_hpc.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_hpc.c @@ -874,23 +874,32 @@ static int pcie_init_slot(struct controller *ctrl) { struct slot *slot; + char name[32]; slot = kzalloc(sizeof(*slot), GFP_KERNEL); if (!slot) return -ENOMEM; + snprintf(name, sizeof(name), "pciehp-%u", PSN(ctrl)); + slot->wq = alloc_workqueue(name, 0, 0); + if (!slot->wq) + goto abort; + slot->ctrl = ctrl; mutex_init(&slot->lock); INIT_DELAYED_WORK(&slot->work, pciehp_queue_pushbutton_work); ctrl->slot = slot; return 0; +abort: + kfree(slot); + return -ENOMEM; } static void pcie_cleanup_slot(struct controller *ctrl) { struct slot *slot = ctrl->slot; cancel_delayed_work(&slot->work); - flush_workqueue(pciehp_wq); + destroy_workqueue(slot->wq); kfree(slot); } --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_core.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_core.c @@ -42,7 +42,6 @@ bool pciehp_poll_mode; int pciehp_poll_time; bool pciehp_force; -struct workqueue_struct *pciehp_wq; #define DRIVER_VERSION "0.4" #define DRIVER_AUTHOR "Dan Zink , Greg Kroah-Hartman , Dely Sy " @@ -340,18 +339,13 @@ { int retval = 0; - pciehp_wq = alloc_workqueue("pciehp", 0, 0); - if (!pciehp_wq) - return -ENOMEM; - pciehp_firmware_init(); retval = pcie_port_service_register(&hpdriver_portdrv); dbg("pcie_port_service_register = %d\n", retval); info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); - if (retval) { - destroy_workqueue(pciehp_wq); + if (retval) dbg("Failure to register service\n"); - } + return retval; } @@ -359,7 +353,6 @@ { dbg("unload_pciehpd()\n"); pcie_port_service_unregister(&hpdriver_portdrv); - destroy_workqueue(pciehp_wq); info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n"); } --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp.h +++ linux-3.5.0/drivers/pci/hotplug/pciehp.h @@ -44,7 +44,6 @@ extern int pciehp_poll_time; extern bool pciehp_debug; extern bool pciehp_force; -extern struct workqueue_struct *pciehp_wq; #define dbg(format, arg...) \ do { \ @@ -78,6 +77,7 @@ struct hotplug_slot *hotplug_slot; struct delayed_work work; /* work for button event */ struct mutex lock; + struct workqueue_struct *wq; }; struct event_info { --- linux-3.5.0.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-3.5.0/drivers/pci/hotplug/acpiphp_glue.c @@ -132,6 +132,15 @@ if (!acpi_pci_check_ejectable(pbus, handle) && !is_dock_device(handle)) return AE_OK; + status = acpi_evaluate_integer(handle, "_ADR", NULL, &adr); + if (ACPI_FAILURE(status)) { + warn("can't evaluate _ADR (%#x)\n", status); + return AE_OK; + } + + device = (adr >> 16) & 0xffff; + function = adr & 0xffff; + pdev = pbus->self; if (pdev && pci_is_pcie(pdev)) { tmp = acpi_find_root_bridge_handle(pdev); @@ -144,10 +153,6 @@ } } - acpi_evaluate_integer(handle, "_ADR", NULL, &adr); - device = (adr >> 16) & 0xffff; - function = adr & 0xffff; - newfunc = kzalloc(sizeof(struct acpiphp_func), GFP_KERNEL); if (!newfunc) return AE_NO_MEMORY; --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_ctrl.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_ctrl.c @@ -49,7 +49,7 @@ info->p_slot = p_slot; INIT_WORK(&info->work, interrupt_event_handler); - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); return 0; } @@ -344,7 +344,7 @@ kfree(info); goto out; } - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); out: mutex_unlock(&p_slot->lock); } @@ -377,7 +377,7 @@ if (ATTN_LED(ctrl)) pciehp_set_attention_status(p_slot, 0); - queue_delayed_work(pciehp_wq, &p_slot->work, 5*HZ); + queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ); break; case BLINKINGOFF_STATE: case BLINKINGON_STATE: @@ -439,7 +439,7 @@ else p_slot->state = POWERON_STATE; - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); } static void interrupt_event_handler(struct work_struct *work) --- linux-3.5.0.orig/drivers/hid/hid-sony.c +++ linux-3.5.0/drivers/hid/hid-sony.c @@ -44,9 +44,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; } @@ -218,6 +228,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-3.5.0.orig/drivers/hid/hid-cypress.c +++ linux-3.5.0/drivers/hid/hid-cypress.c @@ -129,6 +129,8 @@ .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3), .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, + { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4), + .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE), .driver_data = CP_2WHEEL_MOUSE_HACK }, { } --- linux-3.5.0.orig/drivers/hid/hid-ids.h +++ linux-3.5.0/drivers/hid/hid-ids.h @@ -208,6 +208,7 @@ #define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d #define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618 #define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123 +#define USB_DEVICE_ID_CHICONY_AK1D 0x1125 #define USB_VENDOR_ID_CHUNGHWAT 0x2247 #define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001 @@ -237,6 +238,7 @@ #define USB_DEVICE_ID_CYPRESS_BARCODE_1 0xde61 #define USB_DEVICE_ID_CYPRESS_BARCODE_2 0xde64 #define USB_DEVICE_ID_CYPRESS_BARCODE_3 0xbca1 +#define USB_DEVICE_ID_CYPRESS_BARCODE_4 0xed81 #define USB_DEVICE_ID_CYPRESS_TRUETOUCH 0xc001 #define USB_VENDOR_ID_DEALEXTREAME 0x10c5 @@ -294,6 +296,12 @@ #define USB_VENDOR_ID_EZKEY 0x0518 #define USB_DEVICE_ID_BTC_8193 0x0002 +#define USB_VENDOR_ID_FORMOSA 0x147a +#define USB_DEVICE_ID_FORMOSA_IR_RECEIVER 0xe03e + +#define USB_VENDOR_ID_FREESCALE 0x15A2 +#define USB_DEVICE_ID_FREESCALE_MX28 0x004F + #define USB_VENDOR_ID_FRUCTEL 0x25B6 #define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002 @@ -524,6 +532,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 @@ -554,6 +565,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 @@ -573,6 +587,9 @@ #define USB_VENDOR_ID_NINTENDO 0x057e #define USB_DEVICE_ID_NINTENDO_WIIMOTE 0x0306 +#define USB_VENDOR_ID_NOVATEK 0x0603 +#define USB_DEVICE_ID_NOVATEK_PCT 0x0600 + #define USB_VENDOR_ID_NTRIG 0x1b96 #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001 #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003 @@ -642,6 +659,9 @@ #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 #define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN 0x3001 +#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 @@ -670,6 +690,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_CONTROLLER 0x0268 #define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER 0x042f --- linux-3.5.0.orig/drivers/hid/hid-ntrig.c +++ linux-3.5.0/drivers/hid/hid-ntrig.c @@ -882,10 +882,10 @@ nd->activate_slack = activate_slack; nd->act_state = activate_slack; nd->deactivate_slack = -deactivate_slack; - nd->sensor_logical_width = 0; - nd->sensor_logical_height = 0; - nd->sensor_physical_width = 0; - nd->sensor_physical_height = 0; + nd->sensor_logical_width = 1; + nd->sensor_logical_height = 1; + nd->sensor_physical_width = 1; + nd->sensor_physical_height = 1; hid_set_drvdata(hdev, nd); --- linux-3.5.0.orig/drivers/hid/hid-chicony.c +++ linux-3.5.0/drivers/hid/hid-chicony.c @@ -60,6 +60,7 @@ static const struct hid_device_id ch_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) }, { } }; MODULE_DEVICE_TABLE(hid, ch_devices); --- linux-3.5.0.orig/drivers/hid/hid-input.c +++ linux-3.5.0/drivers/hid/hid-input.c @@ -837,6 +837,15 @@ } break; + case HID_UP_HPVENDOR2: + set_bit(EV_REP, input->evbit); + switch (usage->hid & HID_USAGE) { + case 0x003: map_key_clear(KEY_BRIGHTNESSDOWN); break; + case 0x004: map_key_clear(KEY_BRIGHTNESSUP); break; + default: goto ignore; + } + break; + case HID_UP_MSVENDOR: goto ignore; --- linux-3.5.0.orig/drivers/hid/Kconfig +++ linux-3.5.0/drivers/hid/Kconfig @@ -27,7 +27,7 @@ config HID_BATTERY_STRENGTH bool "Battery level reporting for HID devices" - depends on HID && POWER_SUPPLY && HID = POWER_SUPPLY + depends on HID && POWER_SUPPLY default n ---help--- This option adds support of reporting battery strength (for HID devices --- linux-3.5.0.orig/drivers/hid/hid-multitouch.c +++ linux-3.5.0/drivers/hid/hid-multitouch.c @@ -83,6 +83,7 @@ unsigned last_field_index; /* last field index of the report */ unsigned last_slot_field; /* the last field of a slot */ __s8 inputmode; /* InputMode HID feature, -1 if non-existent */ + __s8 inputmode_index; /* InputMode HID feature index in the report */ __s8 maxcontact_report_id; /* Maximum Contact Number HID feature, -1 if non-existent */ __u8 num_received; /* how many contacts we received */ @@ -260,10 +261,20 @@ struct hid_field *field, struct hid_usage *usage) { struct mt_device *td = hid_get_drvdata(hdev); + int i; switch (usage->hid) { case HID_DG_INPUTMODE: td->inputmode = field->report->id; + td->inputmode_index = 0; /* has to be updated below */ + + for (i=0; i < field->maxusage; i++) { + if (field->usage[i].hid == usage->hid) { + td->inputmode_index = i; + break; + } + } + break; case HID_DG_CONTACTMAX: td->maxcontact_report_id = field->report->id; @@ -618,7 +629,7 @@ re = &(hdev->report_enum[HID_FEATURE_REPORT]); r = re->report_id_hash[td->inputmode]; if (r) { - r->field[0]->value[0] = 0x02; + r->field[0]->value[td->inputmode_index] = 0x02; usbhid_submit_report(hdev, r, USB_DIR_OUT); } } @@ -951,6 +962,11 @@ MT_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) }, + /* Novatek Panel */ + { .driver_data = MT_CLS_DEFAULT, + HID_USB_DEVICE(USB_VENDOR_ID_NOVATEK, + USB_DEVICE_ID_NOVATEK_PCT) }, + /* PenMount panels */ { .driver_data = MT_CLS_CONFIDENCE, MT_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, --- linux-3.5.0.orig/drivers/hid/hid-logitech-dj.c +++ linux-3.5.0/drivers/hid/hid-logitech-dj.c @@ -193,6 +193,7 @@ static int logi_dj_output_hidraw_report(struct hid_device *hid, u8 * buf, size_t count, unsigned char report_type); +static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev); static void logi_dj_recv_destroy_djhid_device(struct dj_receiver_dev *djrcv_dev, struct dj_report *dj_report) @@ -233,6 +234,7 @@ if (dj_report->report_params[DEVICE_PAIRED_PARAM_SPFUNCTION] & SPFUNCTION_DEVICE_LIST_EMPTY) { dbg_hid("%s: device list is empty\n", __func__); + djrcv_dev->querying_devices = false; return; } @@ -243,6 +245,12 @@ return; } + if (djrcv_dev->paired_dj_devices[dj_report->device_index]) { + /* The device is already known. No need to reallocate it. */ + dbg_hid("%s: device is already known\n", __func__); + return; + } + dj_hiddev = hid_allocate_device(); if (IS_ERR(dj_hiddev)) { dev_err(&djrcv_hdev->dev, "%s: hid_allocate_device failed\n", @@ -306,6 +314,7 @@ struct dj_report dj_report; unsigned long flags; int count; + int retval; dbg_hid("%s\n", __func__); @@ -338,6 +347,25 @@ logi_dj_recv_destroy_djhid_device(djrcv_dev, &dj_report); break; default: + /* A normal report (i. e. not belonging to a pair/unpair notification) + * arriving here, means that the report arrived but we did not have a + * paired dj_device associated to the report's device_index, this + * means that the original "device paired" notification corresponding + * to this dj_device never arrived to this driver. The reason is that + * hid-core discards all packets coming from a device while probe() is + * executing. */ + if (!djrcv_dev->paired_dj_devices[dj_report.device_index]) { + /* ok, we don't know the device, just re-ask the + * receiver for the list of connected devices. */ + retval = logi_dj_recv_query_paired_devices(djrcv_dev); + if (!retval) { + /* everything went fine, so just leave */ + break; + } + dev_err(&djrcv_dev->hdev->dev, + "%s:logi_dj_recv_query_paired_devices " + "error:%d\n", __func__, retval); + } dbg_hid("%s: unexpected report type\n", __func__); } } @@ -368,6 +396,12 @@ if (!djdev) { dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" " is NULL, index %d\n", dj_report->device_index); + kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report)); + + if (schedule_work(&djrcv_dev->work) == 0) { + dbg_hid("%s: did not schedule the work item, was already " + "queued\n", __func__); + } return; } @@ -398,6 +432,12 @@ if (dj_device == NULL) { dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" " is NULL, index %d\n", dj_report->device_index); + kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report)); + + if (schedule_work(&djrcv_dev->work) == 0) { + dbg_hid("%s: did not schedule the work item, was already " + "queued\n", __func__); + } return; } @@ -419,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) @@ -439,7 +485,11 @@ struct dj_report *dj_report; int retval; - dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL); + /* no need to protect djrcv_dev->querying_devices */ + if (djrcv_dev->querying_devices) + return 0; + + dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL); if (!dj_report) return -ENOMEM; dj_report->report_id = REPORT_ID_DJ_SHORT; @@ -450,13 +500,14 @@ return retval; } + static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev, unsigned timeout) { struct dj_report *dj_report; int retval; - dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL); + dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL); if (!dj_report) return -ENOMEM; dj_report->report_id = REPORT_ID_DJ_SHORT; --- linux-3.5.0.orig/drivers/hid/hid-wiimote-ext.c +++ linux-3.5.0/drivers/hid/hid-wiimote-ext.c @@ -378,14 +378,14 @@ if (ext->motionp) { input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x04)); + wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x04)); input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x08)); + wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x08)); } else { input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x01)); + wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x01)); input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x02)); + wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x02)); } input_sync(ext->input); --- linux-3.5.0.orig/drivers/hid/hid-core.c +++ linux-3.5.0/drivers/hid/hid-core.c @@ -757,6 +757,7 @@ struct hid_item item; unsigned int size; __u8 *start; + __u8 *buf; __u8 *end; int ret; static int (*dispatch_type[])(struct hid_parser *parser, @@ -775,12 +776,21 @@ return -ENODEV; size = device->dev_rsize; + buf = kmemdup(start, size, GFP_KERNEL); + if (buf == NULL) + return -ENOMEM; + if (device->driver->report_fixup) - start = device->driver->report_fixup(device, start, &size); + start = device->driver->report_fixup(device, buf, &size); + else + start = buf; - device->rdesc = kmemdup(start, size, GFP_KERNEL); - if (device->rdesc == NULL) + start = kmemdup(start, size, GFP_KERNEL); + kfree(buf); + if (start == NULL) return -ENOMEM; + + device->rdesc = start; device->rsize = size; parser = vzalloc(sizeof(struct hid_parser)); @@ -1509,6 +1519,7 @@ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, @@ -1521,10 +1532,12 @@ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) }, { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) }, @@ -1612,7 +1625,6 @@ { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) }, @@ -1628,6 +1640,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) }, @@ -1999,6 +2012,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) }, --- linux-3.5.0.orig/drivers/hid/hid-logitech-dj.h +++ linux-3.5.0/drivers/hid/hid-logitech-dj.h @@ -101,6 +101,7 @@ struct work_struct work; struct kfifo notif_fifo; spinlock_t lock; + bool querying_devices; }; struct dj_device { --- linux-3.5.0.orig/drivers/hid/hid-microsoft.c +++ linux-3.5.0/drivers/hid/hid-microsoft.c @@ -29,22 +29,30 @@ #define MS_RDESC 0x08 #define MS_NOGET 0x10 #define MS_DUPLICATE_USAGES 0x20 +#define MS_RDESC_3K 0x40 -/* - * Microsoft Wireless Desktop Receiver (Model 1028) has - * 'Usage Min/Max' where it ought to have 'Physical Min/Max' - */ static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + /* + * Microsoft Wireless Desktop Receiver (Model 1028) has + * 'Usage Min/Max' where it ought to have 'Physical Min/Max' + */ if ((quirks & MS_RDESC) && *rsize == 571 && rdesc[557] == 0x19 && rdesc[559] == 0x29) { hid_info(hdev, "fixing up Microsoft Wireless Receiver Model 1028 report descriptor\n"); rdesc[557] = 0x35; rdesc[559] = 0x45; } + /* the same as above (s/usage/physical/) */ + if ((quirks & MS_RDESC_3K) && *rsize == 106 && rdesc[94] == 0x19 && + rdesc[95] == 0x00 && rdesc[96] == 0x29 && + rdesc[97] == 0xff) { + rdesc[94] = 0x35; + rdesc[96] = 0x45; + } return rdesc; } @@ -193,7 +201,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB), .driver_data = MS_PRESENTER }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K), - .driver_data = MS_ERGONOMY }, + .driver_data = MS_ERGONOMY | MS_RDESC_3K }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0), .driver_data = MS_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500), --- linux-3.5.0.orig/drivers/hid/usbhid/hid-quirks.c +++ linux-3.5.0/drivers/hid/usbhid/hid-quirks.c @@ -70,12 +70,17 @@ { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET }, { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GX680R_LED_PANEL, 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 }, { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, 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_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, { USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_1, HID_QUIRK_NOGET }, --- linux-3.5.0.orig/drivers/hid/usbhid/hid-core.c +++ linux-3.5.0/drivers/hid/usbhid/hid-core.c @@ -1423,20 +1423,20 @@ * configuration descriptors passed, we already know that * the size of the HID report descriptor has not changed. */ - rdesc = kmalloc(hid->rsize, GFP_KERNEL); + rdesc = kmalloc(hid->dev_rsize, GFP_KERNEL); if (!rdesc) { dbg_hid("couldn't allocate rdesc memory (post_reset)\n"); return 1; } status = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, - HID_DT_REPORT, rdesc, hid->rsize); + HID_DT_REPORT, rdesc, hid->dev_rsize); if (status < 0) { dbg_hid("reading report descriptor failed (post_reset)\n"); kfree(rdesc); return 1; } - status = memcmp(rdesc, hid->rdesc, hid->rsize); + status = memcmp(rdesc, hid->dev_rdesc, hid->dev_rsize); kfree(rdesc); if (status != 0) { dbg_hid("report descriptor changed\n"); --- linux-3.5.0.orig/net/compat.c +++ linux-3.5.0/net/compat.c @@ -221,6 +221,8 @@ { struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __user *) kmsg->msg_control; struct compat_cmsghdr cmhdr; + struct compat_timeval ctv; + struct compat_timespec cts[3]; int cmlen; if (cm == NULL || kmsg->msg_controllen < sizeof(*cm)) { @@ -229,8 +231,6 @@ } if (!COMPAT_USE_64BIT_TIME) { - struct compat_timeval ctv; - struct compat_timespec cts[3]; if (level == SOL_SOCKET && type == SCM_TIMESTAMP) { struct timeval *tv = (struct timeval *)data; ctv.tv_sec = tv->tv_sec; @@ -735,19 +735,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) @@ -769,6 +775,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-3.5.0.orig/net/socket.c +++ linux-3.5.0/net/socket.c @@ -522,6 +522,9 @@ if (rcu_dereference_protected(sock->wq, 1)->fasync_list) printk(KERN_ERR "sock_release: fasync list not empty!\n"); + if (test_bit(SOCK_EXTERNALLY_ALLOCATED, &sock->flags)) + return; + this_cpu_sub(sockets_in_use, 1); if (!sock->file) { iput(SOCK_INODE(sock)); @@ -1895,7 +1898,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) { @@ -2010,22 +2013,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 */ @@ -2056,15 +2067,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); @@ -2088,10 +2100,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 = @@ -2183,23 +2197,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 */ @@ -2237,17 +2259,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); @@ -2314,6 +2337,9 @@ int datagrams; struct timespec timeout_sys; + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + if (!timeout) return __sys_recvmmsg(fd, mmsg, vlen, flags, NULL); @@ -2602,7 +2628,7 @@ err = sock_do_ioctl(net, sock, cmd, (unsigned long)&ktv); set_fs(old_fs); if (!err) - err = compat_put_timeval(up, &ktv); + err = compat_put_timeval(&ktv, up); return err; } @@ -2618,7 +2644,7 @@ err = sock_do_ioctl(net, sock, cmd, (unsigned long)&kts); set_fs(old_fs); if (!err) - err = compat_put_timespec(up, &kts); + err = compat_put_timespec(&kts, up); return err; } @@ -2655,6 +2681,7 @@ if (copy_from_user(&ifc32, uifc32, sizeof(struct compat_ifconf))) return -EFAULT; + memset(&ifc, 0, sizeof(ifc)); if (ifc32.ifcbuf == 0) { ifc32.ifc_len = 0; ifc.ifc_len = 0; --- linux-3.5.0.orig/net/core/datagram.c +++ linux-3.5.0/net/core/datagram.c @@ -187,7 +187,7 @@ skb_queue_walk(queue, skb) { *peeked = skb->peeked; if (flags & MSG_PEEK) { - if (*off >= skb->len) { + if (*off >= skb->len && skb->len) { *off -= skb->len; continue; } --- linux-3.5.0.orig/net/core/dev.c +++ linux-3.5.0/net/core/dev.c @@ -1055,6 +1055,8 @@ */ int dev_set_alias(struct net_device *dev, const char *alias, size_t len) { + char *new_ifalias; + ASSERT_RTNL(); if (len >= IFALIASZ) @@ -1068,9 +1070,10 @@ return 0; } - dev->ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); - if (!dev->ifalias) + new_ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); + if (!new_ifalias) return -ENOMEM; + dev->ifalias = new_ifalias; strlcpy(dev->ifalias, alias, len+1); return len; @@ -1172,6 +1175,7 @@ net_dmaengine_get(); dev_set_rx_mode(dev); dev_activate(dev); + add_device_randomness(dev->dev_addr, dev->addr_len); } return ret; @@ -1477,7 +1481,6 @@ return; } #endif - WARN_ON(in_interrupt()); static_key_slow_inc(&netstamp_needed); } EXPORT_SYMBOL(net_enable_timestamp); @@ -1624,6 +1627,7 @@ skb->mark = 0; secpath_reset(skb); nf_reset(skb); + nf_reset_trace(skb); return netif_rx(skb); } EXPORT_SYMBOL_GPL(dev_forward_skb); @@ -1636,6 +1640,19 @@ return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); } +static inline bool skb_loop_sk(struct packet_type *ptype, struct sk_buff *skb) +{ + if (!ptype->af_packet_priv || !skb->sk) + return false; + + if (ptype->id_match) + return ptype->id_match(ptype, skb->sk); + else if ((struct sock *)ptype->af_packet_priv == skb->sk) + return true; + + return false; +} + /* * Support routine. Sends outgoing frames to any network * taps currently in use. @@ -1653,8 +1670,7 @@ * they originated from - MvS (miquels@drinkel.ow.org) */ if ((ptype->dev == dev || !ptype->dev) && - (ptype->af_packet_priv == NULL || - (struct sock *)ptype->af_packet_priv != skb->sk)) { + (!skb_loop_sk(ptype, skb))) { if (pt_prev) { deliver_skb(skb2, pt_prev, skb->dev); pt_prev = ptype; @@ -1877,6 +1893,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); @@ -2103,7 +2122,8 @@ static netdev_features_t harmonize_features(struct sk_buff *skb, __be16 protocol, netdev_features_t features) { - if (!can_checksum_protocol(features, protocol)) { + if (skb->ip_summed != CHECKSUM_NONE && + !can_checksum_protocol(features, protocol)) { features &= ~NETIF_F_ALL_CSUM; features &= ~NETIF_F_SG; } else if (illegal_highdma(skb->dev, skb)) { @@ -2118,6 +2138,9 @@ __be16 protocol = skb->protocol; netdev_features_t features = skb->dev->features; + if (skb_shinfo(skb)->gso_segs > skb->dev->gso_max_segs) + features &= ~NETIF_F_GSO_MASK; + if (protocol == htons(ETH_P_8021Q)) { struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data; protocol = veh->h_vlan_encapsulated_proto; @@ -2145,7 +2168,7 @@ * support DMA from it. */ 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) && @@ -2596,15 +2619,16 @@ if (!skb_flow_dissect(skb, &keys)) return; - if (keys.ports) { - if ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]) - swap(keys.port16[0], keys.port16[1]); + if (keys.ports) skb->l4_rxhash = 1; - } /* get a consistent hash (same value on both flow directions) */ - if ((__force u32)keys.dst < (__force u32)keys.src) + if (((__force u32)keys.dst < (__force u32)keys.src) || + (((__force u32)keys.dst == (__force u32)keys.src) && + ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]))) { swap(keys.dst, keys.src); + swap(keys.port16[0], keys.port16[1]); + } hash = jhash_3words((__force u32)keys.dst, (__force u32)keys.src, @@ -2740,8 +2764,10 @@ if (unlikely(tcpu != next_cpu) && (tcpu == RPS_NO_CPU || !cpu_online(tcpu) || ((int)(per_cpu(softnet_data, tcpu).input_queue_head - - rflow->last_qtail)) >= 0)) + rflow->last_qtail)) >= 0)) { + tcpu = next_cpu; rflow = set_rps_cpu(dev, skb, rflow, next_cpu); + } if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) { *rflowp = rflow; @@ -3099,6 +3125,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); @@ -3119,6 +3146,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); @@ -3185,18 +3217,18 @@ ncls: #endif - rx_handler = rcu_dereference(skb->dev->rx_handler); if (vlan_tx_tag_present(skb)) { if (pt_prev) { ret = deliver_skb(skb, pt_prev, orig_dev); pt_prev = NULL; } - if (vlan_do_receive(&skb, !rx_handler)) + if (vlan_do_receive(&skb)) goto another_round; else if (unlikely(!skb)) goto out; } + rx_handler = rcu_dereference(skb->dev->rx_handler); if (rx_handler) { if (pt_prev) { ret = deliver_skb(skb, pt_prev, orig_dev); @@ -3204,6 +3236,7 @@ } switch (rx_handler(&skb)) { case RX_HANDLER_CONSUMED: + ret = NET_RX_SUCCESS; goto out; case RX_HANDLER_ANOTHER: goto another_round; @@ -3216,6 +3249,9 @@ } } + if (vlan_tx_nonzero_tag_present(skb)) + skb->pkt_type = PACKET_OTHERHOST; + /* deliver only exact match when indicated */ null_or_dev = deliver_exact ? skb->dev : NULL; @@ -4767,6 +4803,7 @@ err = ops->ndo_set_mac_address(dev, sa); if (!err) call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); + add_device_randomness(dev->dev_addr, dev->addr_len); return err; } EXPORT_SYMBOL(dev_set_mac_address); @@ -5545,6 +5582,7 @@ dev_init_scheduler(dev); dev_hold(dev); list_netdevice(dev); + add_device_randomness(dev->dev_addr, dev->addr_len); /* Notify protocols, that a new device appeared. */ ret = call_netdevice_notifiers(NETDEV_REGISTER, dev); @@ -5908,6 +5946,7 @@ dev_net_set(dev, &init_net); dev->gso_max_size = GSO_MAX_SIZE; + dev->gso_max_segs = GSO_MAX_SEGS; INIT_LIST_HEAD(&dev->napi_list); INIT_LIST_HEAD(&dev->unreg_list); --- linux-3.5.0.orig/net/core/ethtool.c +++ linux-3.5.0/net/core/ethtool.c @@ -1384,7 +1384,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-3.5.0.orig/net/core/pktgen.c +++ linux-3.5.0/net/core/pktgen.c @@ -1797,10 +1797,13 @@ return -EFAULT; i += len; mutex_lock(&pktgen_thread_lock); - pktgen_add_device(t, f); + ret = pktgen_add_device(t, f); mutex_unlock(&pktgen_thread_lock); - ret = count; - sprintf(pg_result, "OK: add_device=%s", f); + if (!ret) { + ret = count; + sprintf(pg_result, "OK: add_device=%s", f); + } else + sprintf(pg_result, "ERROR: can not add device %s", f); goto out; } @@ -2927,7 +2930,7 @@ sizeof(struct ipv6hdr) - sizeof(struct udphdr) - pkt_dev->pkt_overhead; - if (datalen < sizeof(struct pktgen_hdr)) { + if (datalen < 0 || datalen < sizeof(struct pktgen_hdr)) { datalen = sizeof(struct pktgen_hdr); net_info_ratelimited("increased datalen to %d\n", datalen); } --- linux-3.5.0.orig/net/core/sock_diag.c +++ linux-3.5.0/net/core/sock_diag.c @@ -126,6 +126,9 @@ if (nlmsg_len(nlh) < sizeof(*req)) return -EINVAL; + if (req->sdiag_family >= AF_MAX) + return -EINVAL; + hndl = sock_diag_lock_handler(req->sdiag_family); if (hndl == NULL) err = -ENOENT; --- linux-3.5.0.orig/net/core/rtnetlink.c +++ linux-3.5.0/net/core/rtnetlink.c @@ -674,6 +674,12 @@ } } +static unsigned int rtnl_dev_get_flags(const struct net_device *dev) +{ + return (dev->flags & ~(IFF_PROMISC | IFF_ALLMULTI)) | + (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI)); +} + static unsigned int rtnl_dev_combine_flags(const struct net_device *dev, const struct ifinfomsg *ifm) { @@ -682,7 +688,7 @@ /* bugwards compatibility: ifi_change == 0 is treated as ~0 */ if (ifm->ifi_change) flags = (flags & ifm->ifi_change) | - (dev->flags & ~ifm->ifi_change); + (rtnl_dev_get_flags(dev) & ~ifm->ifi_change); return flags; } @@ -975,6 +981,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 = @@ -1066,7 +1073,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]) @@ -1378,6 +1385,7 @@ goto errout; send_addr_notify = 1; modified = 1; + add_device_randomness(dev->dev_addr, dev->addr_len); } if (tb[IFLA_MTU]) { @@ -1908,7 +1916,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]); @@ -2309,7 +2317,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-3.5.0.orig/net/core/neighbour.c +++ linux-3.5.0/net/core/neighbour.c @@ -1286,8 +1286,6 @@ if (!dst) goto discard; - __skb_pull(skb, skb_network_offset(skb)); - if (!neigh_event_send(neigh, skb)) { int err; struct net_device *dev = neigh->dev; @@ -1297,6 +1295,7 @@ neigh_hh_init(neigh, dst); do { + __skb_pull(skb, skb_network_offset(skb)); seq = read_seqbegin(&neigh->ha_lock); err = dev_hard_header(skb, dev, ntohs(skb->protocol), neigh->ha, NULL, skb->len); @@ -1327,9 +1326,8 @@ unsigned int seq; int err; - __skb_pull(skb, skb_network_offset(skb)); - do { + __skb_pull(skb, skb_network_offset(skb)); seq = read_seqbegin(&neigh->ha_lock); err = dev_hard_header(skb, dev, ntohs(skb->protocol), neigh->ha, NULL, skb->len); --- linux-3.5.0.orig/net/core/dev_addr_lists.c +++ linux-3.5.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++; @@ -164,7 +164,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); @@ -185,7 +185,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); } @@ -317,7 +317,8 @@ */ ha = list_first_entry(&dev->dev_addrs.list, struct netdev_hw_addr, list); - if (ha->addr == dev->dev_addr && ha->refcount == 1) + if (!memcmp(ha->addr, addr, dev->addr_len) && + ha->type == addr_type && ha->refcount == 1) return -ENOENT; err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len, --- linux-3.5.0.orig/net/core/sock.c +++ linux-3.5.0/net/core/sock.c @@ -636,7 +636,8 @@ case SO_KEEPALIVE: #ifdef CONFIG_INET - if (sk->sk_protocol == IPPROTO_TCP) + if (sk->sk_protocol == IPPROTO_TCP && + sk->sk_type == SOCK_STREAM) tcp_set_keepalive(sk, valbool); #endif sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool); @@ -806,15 +807,20 @@ void cred_to_ucred(struct pid *pid, const struct cred *cred, - struct ucred *ucred) + struct ucred *ucred, bool use_effective) { ucred->pid = pid_vnr(pid); ucred->uid = ucred->gid = -1; if (cred) { struct user_namespace *current_ns = current_user_ns(); - ucred->uid = from_kuid(current_ns, cred->euid); - ucred->gid = from_kgid(current_ns, cred->egid); + if (use_effective) { + ucred->uid = from_kuid(current_ns, cred->euid); + ucred->gid = from_kgid(current_ns, cred->egid); + } else { + ucred->uid = from_kuid(current_ns, cred->uid); + ucred->gid = from_kgid(current_ns, cred->gid); + } } } EXPORT_SYMBOL_GPL(cred_to_ucred); @@ -975,7 +981,8 @@ struct ucred peercred; if (len > sizeof(peercred)) len = sizeof(peercred); - cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred); + cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, + &peercred, true); if (copy_to_user(optval, &peercred, len)) return -EFAULT; goto lenout; @@ -1078,18 +1085,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; @@ -1403,6 +1398,7 @@ } else { sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM; sk->sk_gso_max_size = dst->dev->gso_max_size; + sk->sk_gso_max_segs = dst->dev->gso_max_segs; } } } --- linux-3.5.0.orig/net/core/skbuff.c +++ linux-3.5.0/net/core/skbuff.c @@ -572,53 +572,6 @@ } EXPORT_SYMBOL(consume_skb); -/** - * skb_recycle - clean up an skb for reuse - * @skb: buffer - * - * Recycles the skb to be reused as a receive buffer. This - * function does any necessary reference count dropping, and - * cleans up the skbuff as if it just came from __alloc_skb(). - */ -void skb_recycle(struct sk_buff *skb) -{ - struct skb_shared_info *shinfo; - - skb_release_head_state(skb); - - shinfo = skb_shinfo(skb); - memset(shinfo, 0, offsetof(struct skb_shared_info, dataref)); - atomic_set(&shinfo->dataref, 1); - - memset(skb, 0, offsetof(struct sk_buff, tail)); - skb->data = skb->head + NET_SKB_PAD; - skb_reset_tail_pointer(skb); -} -EXPORT_SYMBOL(skb_recycle); - -/** - * skb_recycle_check - check if skb can be reused for receive - * @skb: buffer - * @skb_size: minimum receive buffer size - * - * Checks that the skb passed in is not shared or cloned, and - * that it is linear and its head portion at least as large as - * skb_size so that it can be recycled as a receive buffer. - * If these conditions are met, this function does any necessary - * reference count dropping and cleans up the skbuff as if it - * just came from __alloc_skb(). - */ -bool skb_recycle_check(struct sk_buff *skb, int skb_size) -{ - if (!skb_is_recycleable(skb, skb_size)) - return false; - - skb_recycle(skb); - - return true; -} -EXPORT_SYMBOL(skb_recycle_check); - static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) { new->tstamp = old->tstamp; @@ -3350,10 +3303,12 @@ void kfree_skb_partial(struct sk_buff *skb, bool head_stolen) { - if (head_stolen) + if (head_stolen) { + skb_release_head_state(skb); kmem_cache_free(skbuff_head_cache, skb); - else + } else { __kfree_skb(skb); + } } EXPORT_SYMBOL(kfree_skb_partial); --- linux-3.5.0.orig/net/rose/af_rose.c +++ linux-3.5.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-3.5.0.orig/net/dccp/ipv6.c +++ linux-3.5.0/net/dccp/ipv6.c @@ -612,7 +612,8 @@ newinet->inet_rcv_saddr = LOOPBACK4_IPV6; if (__inet_inherit_port(sk, newsk) < 0) { - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + dccp_done(newsk); goto out; } __inet6_hash(newsk, NULL); --- linux-3.5.0.orig/net/dccp/ipv4.c +++ linux-3.5.0/net/dccp/ipv4.c @@ -435,8 +435,8 @@ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); return NULL; put_and_exit: - bh_unlock_sock(newsk); - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + dccp_done(newsk); goto exit; } --- linux-3.5.0.orig/net/dccp/ccid.h +++ linux-3.5.0/net/dccp/ccid.h @@ -246,7 +246,7 @@ u32 __user *optval, int __user *optlen) { int rc = -ENOPROTOOPT; - if (ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL) + if (ccid != NULL && ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL) rc = ccid->ccid_ops->ccid_hc_rx_getsockopt(sk, optname, len, optval, optlen); return rc; @@ -257,7 +257,7 @@ u32 __user *optval, int __user *optlen) { int rc = -ENOPROTOOPT; - if (ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL) + if (ccid != NULL && ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL) rc = ccid->ccid_ops->ccid_hc_tx_getsockopt(sk, optname, len, optval, optlen); return rc; --- linux-3.5.0.orig/net/dccp/ccids/ccid3.c +++ linux-3.5.0/net/dccp/ccids/ccid3.c @@ -531,6 +531,7 @@ case DCCP_SOCKOPT_CCID_TX_INFO: if (len < sizeof(tfrc)) return -EINVAL; + memset(&tfrc, 0, sizeof(tfrc)); tfrc.tfrctx_x = hc->tx_x; tfrc.tfrctx_x_recv = hc->tx_x_recv; tfrc.tfrctx_x_calc = hc->tx_x_calc; --- linux-3.5.0.orig/net/l2tp/l2tp_eth.c +++ linux-3.5.0/net/l2tp/l2tp_eth.c @@ -148,7 +148,7 @@ print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, skb->data, length); } - if (!pskb_may_pull(skb, sizeof(ETH_HLEN))) + if (!pskb_may_pull(skb, ETH_HLEN)) goto error; secpath_reset(skb); @@ -285,6 +285,7 @@ out_del_dev: free_netdev(dev); + spriv->dev = NULL; out_del_session: l2tp_session_delete(session); out: --- linux-3.5.0.orig/net/l2tp/l2tp_core.h +++ linux-3.5.0/net/l2tp/l2tp_core.h @@ -163,6 +163,7 @@ struct l2tp_tunnel { int magic; /* Should be L2TP_TUNNEL_MAGIC */ + struct rcu_head rcu; rwlock_t hlist_lock; /* protect session_hlist */ struct hlist_head session_hlist[L2TP_HASH_SIZE]; /* hashed list of sessions, --- linux-3.5.0.orig/net/l2tp/l2tp_core.c +++ linux-3.5.0/net/l2tp/l2tp_core.c @@ -1346,11 +1346,10 @@ /* Remove from tunnel list */ spin_lock_bh(&pn->l2tp_tunnel_list_lock); list_del_rcu(&tunnel->list); + kfree_rcu(tunnel, rcu); spin_unlock_bh(&pn->l2tp_tunnel_list_lock); - synchronize_rcu(); atomic_dec(&l2tp_tunnel_count); - kfree(tunnel); } /* Create a socket for the tunnel, if one isn't set up by --- linux-3.5.0.orig/net/l2tp/l2tp_ip6.c +++ linux-3.5.0/net/l2tp/l2tp_ip6.c @@ -410,6 +410,7 @@ lsa->l2tp_family = AF_INET6; lsa->l2tp_flowinfo = 0; lsa->l2tp_scope_id = 0; + lsa->l2tp_unused = 0; if (peer) { if (!lsk->peer_conn_id) return -ENOTCONN; @@ -683,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-3.5.0.orig/net/l2tp/l2tp_ppp.c +++ linux-3.5.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); --- linux-3.5.0.orig/net/irda/af_irda.c +++ linux-3.5.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-3.5.0.orig/net/ieee802154/6lowpan.h +++ linux-3.5.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-3.5.0.orig/net/ceph/messenger.c +++ linux-3.5.0/net/ceph/messenger.c @@ -29,6 +29,74 @@ * the sender. */ +/* + * We track the state of the socket on a given connection using + * values defined below. The transition to a new socket state is + * handled by a function which verifies we aren't coming from an + * unexpected state. + * + * -------- + * | NEW* | transient initial state + * -------- + * | con_sock_state_init() + * v + * ---------- + * | CLOSED | initialized, but no socket (and no + * ---------- TCP connection) + * ^ \ + * | \ con_sock_state_connecting() + * | ---------------------- + * | \ + * + con_sock_state_closed() \ + * |+--------------------------- \ + * | \ \ \ + * | ----------- \ \ + * | | CLOSING | socket event; \ \ + * | ----------- await close \ \ + * | ^ \ | + * | | \ | + * | + con_sock_state_closing() \ | + * | / \ | | + * | / --------------- | | + * | / \ v v + * | / -------------- + * | / -----------------| CONNECTING | socket created, TCP + * | | / -------------- connect initiated + * | | | con_sock_state_connected() + * | | v + * ------------- + * | CONNECTED | TCP connection established + * ------------- + * + * State values for ceph_connection->sock_state; NEW is assumed to be 0. + */ + +#define CON_SOCK_STATE_NEW 0 /* -> CLOSED */ +#define CON_SOCK_STATE_CLOSED 1 /* -> CONNECTING */ +#define CON_SOCK_STATE_CONNECTING 2 /* -> CONNECTED or -> CLOSING */ +#define CON_SOCK_STATE_CONNECTED 3 /* -> CLOSING or -> CLOSED */ +#define CON_SOCK_STATE_CLOSING 4 /* -> CLOSED */ + +/* + * connection states + */ +#define CON_STATE_CLOSED 1 /* -> PREOPEN */ +#define CON_STATE_PREOPEN 2 /* -> CONNECTING, CLOSED */ +#define CON_STATE_CONNECTING 3 /* -> NEGOTIATING, CLOSED */ +#define CON_STATE_NEGOTIATING 4 /* -> OPEN, CLOSED */ +#define CON_STATE_OPEN 5 /* -> STANDBY, CLOSED */ +#define CON_STATE_STANDBY 6 /* -> PREOPEN, CLOSED */ + +/* + * ceph_connection flag bits + */ +#define CON_FLAG_LOSSYTX 0 /* we can close channel or drop + * messages on errors */ +#define CON_FLAG_KEEPALIVE_PENDING 1 /* we need to send a keepalive */ +#define CON_FLAG_WRITE_PENDING 2 /* we have data ready to send */ +#define CON_FLAG_SOCK_CLOSED 3 /* socket state changed to closed */ +#define CON_FLAG_BACKOFF 4 /* need to retry queuing delayed work */ + /* static tag bytes (protocol control messages) */ static char tag_msg = CEPH_MSGR_TAG_MSG; static char tag_ack = CEPH_MSGR_TAG_ACK; @@ -147,72 +215,130 @@ } EXPORT_SYMBOL(ceph_msgr_flush); +/* Connection socket state transition functions */ + +static void con_sock_state_init(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSED); + if (WARN_ON(old_state != CON_SOCK_STATE_NEW)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSED); +} + +static void con_sock_state_connecting(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CONNECTING); + if (WARN_ON(old_state != CON_SOCK_STATE_CLOSED)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CONNECTING); +} + +static void con_sock_state_connected(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CONNECTED); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTING)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CONNECTED); +} + +static void con_sock_state_closing(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSING); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTING && + old_state != CON_SOCK_STATE_CONNECTED && + old_state != CON_SOCK_STATE_CLOSING)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSING); +} + +static void con_sock_state_closed(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSED); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTED && + old_state != CON_SOCK_STATE_CLOSING && + old_state != CON_SOCK_STATE_CONNECTING && + old_state != CON_SOCK_STATE_CLOSED)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSED); +} /* * socket callback functions */ /* data available on socket, or listen socket received a connect */ -static void ceph_data_ready(struct sock *sk, int count_unused) +static void ceph_sock_data_ready(struct sock *sk, int count_unused) { struct ceph_connection *con = sk->sk_user_data; + if (atomic_read(&con->msgr->stopping)) { + return; + } if (sk->sk_state != TCP_CLOSE_WAIT) { - dout("ceph_data_ready on %p state = %lu, queueing work\n", + dout("%s on %p state = %lu, queueing work\n", __func__, con, con->state); queue_con(con); } } /* socket has buffer space for writing */ -static void ceph_write_space(struct sock *sk) +static void ceph_sock_write_space(struct sock *sk) { struct ceph_connection *con = sk->sk_user_data; /* only queue to workqueue if there is data we want to write, * and there is sufficient space in the socket buffer to accept - * more data. clear SOCK_NOSPACE so that ceph_write_space() + * more data. clear SOCK_NOSPACE so that ceph_sock_write_space() * doesn't get called again until try_write() fills the socket * buffer. See net/ipv4/tcp_input.c:tcp_check_space() * and net/core/stream.c:sk_stream_write_space(). */ - if (test_bit(WRITE_PENDING, &con->state)) { + if (test_bit(CON_FLAG_WRITE_PENDING, &con->flags)) { if (sk_stream_wspace(sk) >= sk_stream_min_wspace(sk)) { - dout("ceph_write_space %p queueing write work\n", con); + dout("%s %p queueing write work\n", __func__, con); clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags); queue_con(con); } } else { - dout("ceph_write_space %p nothing to write\n", con); + dout("%s %p nothing to write\n", __func__, con); } } /* socket's state has changed */ -static void ceph_state_change(struct sock *sk) +static void ceph_sock_state_change(struct sock *sk) { struct ceph_connection *con = sk->sk_user_data; - dout("ceph_state_change %p state = %lu sk_state = %u\n", + dout("%s %p state = %lu sk_state = %u\n", __func__, con, con->state, sk->sk_state); - if (test_bit(CLOSED, &con->state)) - return; - switch (sk->sk_state) { case TCP_CLOSE: - dout("ceph_state_change TCP_CLOSE\n"); + dout("%s TCP_CLOSE\n", __func__); case TCP_CLOSE_WAIT: - dout("ceph_state_change TCP_CLOSE_WAIT\n"); - if (test_and_set_bit(SOCK_CLOSED, &con->state) == 0) { - if (test_bit(CONNECTING, &con->state)) - con->error_msg = "connection failed"; - else - con->error_msg = "socket closed"; - queue_con(con); - } + dout("%s TCP_CLOSE_WAIT\n", __func__); + con_sock_state_closing(con); + set_bit(CON_FLAG_SOCK_CLOSED, &con->flags); + queue_con(con); break; case TCP_ESTABLISHED: - dout("ceph_state_change TCP_ESTABLISHED\n"); + dout("%s TCP_ESTABLISHED\n", __func__); + con_sock_state_connected(con); queue_con(con); break; default: /* Everything else is uninteresting */ @@ -228,9 +354,9 @@ { struct sock *sk = sock->sk; sk->sk_user_data = con; - sk->sk_data_ready = ceph_data_ready; - sk->sk_write_space = ceph_write_space; - sk->sk_state_change = ceph_state_change; + sk->sk_data_ready = ceph_sock_data_ready; + sk->sk_write_space = ceph_sock_write_space; + sk->sk_state_change = ceph_sock_state_change; } @@ -262,6 +388,7 @@ dout("connect %s\n", ceph_pr_addr(&con->peer_addr.in_addr)); + con_sock_state_connecting(con); ret = sock->ops->connect(sock, (struct sockaddr *)paddr, sizeof(*paddr), O_NONBLOCK); if (ret == -EINPROGRESS) { @@ -277,7 +404,6 @@ return ret; } con->sock = sock; - return 0; } @@ -333,16 +459,24 @@ */ static int con_close_socket(struct ceph_connection *con) { - int rc; + int rc = 0; dout("con_close_socket on %p sock %p\n", con, con->sock); - if (!con->sock) - return 0; - set_bit(SOCK_CLOSED, &con->state); - rc = con->sock->ops->shutdown(con->sock, SHUT_RDWR); - sock_release(con->sock); - con->sock = NULL; - clear_bit(SOCK_CLOSED, &con->state); + if (con->sock) { + rc = con->sock->ops->shutdown(con->sock, SHUT_RDWR); + sock_release(con->sock); + con->sock = NULL; + } + + /* + * Forcibly clear the SOCK_CLOSED flag. It gets set + * independent of the connection mutex, and we could have + * received a socket close event before we had the chance to + * shut the socket down. + */ + clear_bit(CON_FLAG_SOCK_CLOSED, &con->flags); + + con_sock_state_closed(con); return rc; } @@ -353,6 +487,10 @@ static void ceph_msg_remove(struct ceph_msg *msg) { list_del_init(&msg->list_head); + BUG_ON(msg->con == NULL); + msg->con->ops->put(msg->con); + msg->con = NULL; + ceph_msg_put(msg); } static void ceph_msg_remove_list(struct list_head *head) @@ -372,8 +510,11 @@ ceph_msg_remove_list(&con->out_sent); if (con->in_msg) { + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; ceph_msg_put(con->in_msg); con->in_msg = NULL; + con->ops->put(con); } con->connect_seq = 0; @@ -391,32 +532,44 @@ */ void ceph_con_close(struct ceph_connection *con) { + mutex_lock(&con->mutex); dout("con_close %p peer %s\n", con, ceph_pr_addr(&con->peer_addr.in_addr)); - set_bit(CLOSED, &con->state); /* in case there's queued work */ - clear_bit(STANDBY, &con->state); /* avoid connect_seq bump */ - clear_bit(LOSSYTX, &con->state); /* so we retry next connect */ - clear_bit(KEEPALIVE_PENDING, &con->state); - clear_bit(WRITE_PENDING, &con->state); - mutex_lock(&con->mutex); + con->state = CON_STATE_CLOSED; + + clear_bit(CON_FLAG_LOSSYTX, &con->flags); /* so we retry next connect */ + clear_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); + clear_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags); + clear_bit(CON_FLAG_BACKOFF, &con->flags); + reset_connection(con); con->peer_global_seq = 0; cancel_delayed_work(&con->work); + con_close_socket(con); mutex_unlock(&con->mutex); - queue_con(con); } EXPORT_SYMBOL(ceph_con_close); /* * Reopen a closed connection, with a new peer address. */ -void ceph_con_open(struct ceph_connection *con, struct ceph_entity_addr *addr) +void ceph_con_open(struct ceph_connection *con, + __u8 entity_type, __u64 entity_num, + struct ceph_entity_addr *addr) { + mutex_lock(&con->mutex); dout("con_open %p %s\n", con, ceph_pr_addr(&addr->in_addr)); - set_bit(OPENING, &con->state); - clear_bit(CLOSED, &con->state); + + BUG_ON(con->state != CON_STATE_CLOSED); + con->state = CON_STATE_PREOPEN; + + con->peer_name.type = (__u8) entity_type; + con->peer_name.num = cpu_to_le64(entity_num); + memcpy(&con->peer_addr, addr, sizeof(*addr)); con->delay = 0; /* reset backoff memory */ + mutex_unlock(&con->mutex); queue_con(con); } EXPORT_SYMBOL(ceph_con_open); @@ -430,42 +583,26 @@ } /* - * generic get/put - */ -struct ceph_connection *ceph_con_get(struct ceph_connection *con) -{ - int nref = __atomic_add_unless(&con->nref, 1, 0); - - dout("con_get %p nref = %d -> %d\n", con, nref, nref + 1); - - return nref ? con : NULL; -} - -void ceph_con_put(struct ceph_connection *con) -{ - int nref = atomic_dec_return(&con->nref); - - BUG_ON(nref < 0); - if (nref == 0) { - BUG_ON(con->sock); - kfree(con); - } - dout("con_put %p nref = %d -> %d\n", con, nref + 1, nref); -} - -/* * initialize a new connection. */ -void ceph_con_init(struct ceph_messenger *msgr, struct ceph_connection *con) +void ceph_con_init(struct ceph_connection *con, void *private, + const struct ceph_connection_operations *ops, + struct ceph_messenger *msgr) { dout("con_init %p\n", con); memset(con, 0, sizeof(*con)); - atomic_set(&con->nref, 1); + con->private = private; + con->ops = ops; con->msgr = msgr; + + con_sock_state_init(con); + mutex_init(&con->mutex); INIT_LIST_HEAD(&con->out_queue); INIT_LIST_HEAD(&con->out_sent); INIT_DELAYED_WORK(&con->work, con_work); + + con->state = CON_STATE_CLOSED; } EXPORT_SYMBOL(ceph_con_init); @@ -486,14 +623,14 @@ return ret; } -static void ceph_con_out_kvec_reset(struct ceph_connection *con) +static void con_out_kvec_reset(struct ceph_connection *con) { con->out_kvec_left = 0; con->out_kvec_bytes = 0; con->out_kvec_cur = &con->out_kvec[0]; } -static void ceph_con_out_kvec_add(struct ceph_connection *con, +static void con_out_kvec_add(struct ceph_connection *con, size_t size, void *data) { int index; @@ -507,6 +644,53 @@ con->out_kvec_bytes += size; } +#ifdef CONFIG_BLOCK +static void init_bio_iter(struct bio *bio, struct bio **iter, int *seg) +{ + if (!bio) { + *iter = NULL; + *seg = 0; + return; + } + *iter = bio; + *seg = bio->bi_idx; +} + +static void iter_bio_next(struct bio **bio_iter, int *seg) +{ + if (*bio_iter == NULL) + return; + + BUG_ON(*seg >= (*bio_iter)->bi_vcnt); + + (*seg)++; + if (*seg == (*bio_iter)->bi_vcnt) + init_bio_iter((*bio_iter)->bi_next, bio_iter, seg); +} +#endif + +static void prepare_write_message_data(struct ceph_connection *con) +{ + struct ceph_msg *msg = con->out_msg; + + BUG_ON(!msg); + BUG_ON(!msg->hdr.data_len); + + /* initialize page iterator */ + con->out_msg_pos.page = 0; + if (msg->pages) + con->out_msg_pos.page_pos = msg->page_alignment; + else + con->out_msg_pos.page_pos = 0; +#ifdef CONFIG_BLOCK + if (msg->bio) + init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg); +#endif + con->out_msg_pos.data_pos = 0; + con->out_msg_pos.did_page_crc = false; + con->out_more = 1; /* data + footer will follow */ +} + /* * Prepare footer for currently outgoing message, and finish things * off. Assumes out_kvec* are already valid.. we just add on to the end. @@ -516,6 +700,8 @@ struct ceph_msg *m = con->out_msg; int v = con->out_kvec_left; + m->footer.flags |= CEPH_MSG_FOOTER_COMPLETE; + dout("prepare_write_message_footer %p\n", con); con->out_kvec_is_msg = true; con->out_kvec[v].iov_base = &m->footer; @@ -534,7 +720,7 @@ struct ceph_msg *m; u32 crc; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); con->out_kvec_is_msg = true; con->out_msg_done = false; @@ -542,14 +728,16 @@ * TCP packet that's a good thing. */ if (con->in_seq > con->in_seq_acked) { con->in_seq_acked = con->in_seq; - ceph_con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); + con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); con->out_temp_ack = cpu_to_le64(con->in_seq_acked); - ceph_con_out_kvec_add(con, sizeof (con->out_temp_ack), + con_out_kvec_add(con, sizeof (con->out_temp_ack), &con->out_temp_ack); } + BUG_ON(list_empty(&con->out_queue)); m = list_first_entry(&con->out_queue, struct ceph_msg, list_head); con->out_msg = m; + BUG_ON(m->con != con); /* put message on sent list */ ceph_msg_get(m); @@ -563,10 +751,6 @@ m->hdr.seq = cpu_to_le64(++con->out_seq); m->needs_out_seq = false; } -#ifdef CONFIG_BLOCK - else - m->bio_iter = NULL; -#endif dout("prepare_write_message %p seq %lld type %d len %d+%d+%d %d pgs\n", m, con->out_seq, le16_to_cpu(m->hdr.type), @@ -576,18 +760,18 @@ BUG_ON(le32_to_cpu(m->hdr.front_len) != m->front.iov_len); /* tag + hdr + front + middle */ - ceph_con_out_kvec_add(con, sizeof (tag_msg), &tag_msg); - ceph_con_out_kvec_add(con, sizeof (m->hdr), &m->hdr); - ceph_con_out_kvec_add(con, m->front.iov_len, m->front.iov_base); + con_out_kvec_add(con, sizeof (tag_msg), &tag_msg); + con_out_kvec_add(con, sizeof (m->hdr), &m->hdr); + con_out_kvec_add(con, m->front.iov_len, m->front.iov_base); if (m->middle) - ceph_con_out_kvec_add(con, m->middle->vec.iov_len, + con_out_kvec_add(con, m->middle->vec.iov_len, m->middle->vec.iov_base); /* fill in crc (except data pages), footer */ crc = crc32c(0, &m->hdr, offsetof(struct ceph_msg_header, crc)); con->out_msg->hdr.crc = cpu_to_le32(crc); - con->out_msg->footer.flags = CEPH_MSG_FOOTER_COMPLETE; + con->out_msg->footer.flags = 0; crc = crc32c(0, m->front.iov_base, m->front.iov_len); con->out_msg->footer.front_crc = cpu_to_le32(crc); @@ -597,28 +781,19 @@ con->out_msg->footer.middle_crc = cpu_to_le32(crc); } else con->out_msg->footer.middle_crc = 0; - con->out_msg->footer.data_crc = 0; - dout("prepare_write_message front_crc %u data_crc %u\n", + dout("%s front_crc %u middle_crc %u\n", __func__, le32_to_cpu(con->out_msg->footer.front_crc), le32_to_cpu(con->out_msg->footer.middle_crc)); /* is there a data payload? */ - if (le32_to_cpu(m->hdr.data_len) > 0) { - /* initialize page iterator */ - con->out_msg_pos.page = 0; - if (m->pages) - con->out_msg_pos.page_pos = m->page_alignment; - else - con->out_msg_pos.page_pos = 0; - con->out_msg_pos.data_pos = 0; - con->out_msg_pos.did_page_crc = false; - con->out_more = 1; /* data + footer will follow */ - } else { + con->out_msg->footer.data_crc = 0; + if (m->hdr.data_len) + prepare_write_message_data(con); + else /* no, queue up footer too and be done */ prepare_write_message_footer(con); - } - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -630,16 +805,16 @@ con->in_seq_acked, con->in_seq); con->in_seq_acked = con->in_seq; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); - ceph_con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); + con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); con->out_temp_ack = cpu_to_le64(con->in_seq_acked); - ceph_con_out_kvec_add(con, sizeof (con->out_temp_ack), + con_out_kvec_add(con, sizeof (con->out_temp_ack), &con->out_temp_ack); con->out_more = 1; /* more will follow.. eventually.. */ - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -648,9 +823,9 @@ static void prepare_write_keepalive(struct ceph_connection *con) { dout("prepare_write_keepalive %p\n", con); - ceph_con_out_kvec_reset(con); - ceph_con_out_kvec_add(con, sizeof (tag_keepalive), &tag_keepalive); - set_bit(WRITE_PENDING, &con->state); + con_out_kvec_reset(con); + con_out_kvec_add(con, sizeof (tag_keepalive), &tag_keepalive); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -665,27 +840,21 @@ if (!con->ops->get_authorizer) { con->out_connect.authorizer_protocol = CEPH_AUTH_UNKNOWN; con->out_connect.authorizer_len = 0; - return NULL; } /* Can't hold the mutex while getting authorizer */ - mutex_unlock(&con->mutex); - auth = con->ops->get_authorizer(con, auth_proto, con->auth_retry); - mutex_lock(&con->mutex); if (IS_ERR(auth)) return auth; - if (test_bit(CLOSED, &con->state) || test_bit(OPENING, &con->state)) + if (con->state != CON_STATE_NEGOTIATING) return ERR_PTR(-EAGAIN); con->auth_reply_buf = auth->authorizer_reply_buf; con->auth_reply_buf_len = auth->authorizer_reply_buf_len; - - return auth; } @@ -694,12 +863,12 @@ */ static void prepare_write_banner(struct ceph_connection *con) { - ceph_con_out_kvec_add(con, strlen(CEPH_BANNER), CEPH_BANNER); - ceph_con_out_kvec_add(con, sizeof (con->msgr->my_enc_addr), + con_out_kvec_add(con, strlen(CEPH_BANNER), CEPH_BANNER); + con_out_kvec_add(con, sizeof (con->msgr->my_enc_addr), &con->msgr->my_enc_addr); con->out_more = 0; - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } static int prepare_write_connect(struct ceph_connection *con) @@ -742,14 +911,14 @@ con->out_connect.authorizer_len = auth ? cpu_to_le32(auth->authorizer_buf_len) : 0; - ceph_con_out_kvec_add(con, sizeof (con->out_connect), + con_out_kvec_add(con, sizeof (con->out_connect), &con->out_connect); if (auth && auth->authorizer_buf_len) - ceph_con_out_kvec_add(con, auth->authorizer_buf_len, + con_out_kvec_add(con, auth->authorizer_buf_len, auth->authorizer_buf); con->out_more = 0; - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); return 0; } @@ -797,30 +966,34 @@ return ret; /* done! */ } -#ifdef CONFIG_BLOCK -static void init_bio_iter(struct bio *bio, struct bio **iter, int *seg) +static void out_msg_pos_next(struct ceph_connection *con, struct page *page, + size_t len, size_t sent, bool in_trail) { - if (!bio) { - *iter = NULL; - *seg = 0; - return; - } - *iter = bio; - *seg = bio->bi_idx; -} + struct ceph_msg *msg = con->out_msg; -static void iter_bio_next(struct bio **bio_iter, int *seg) -{ - if (*bio_iter == NULL) - return; + BUG_ON(!msg); + BUG_ON(!sent); - BUG_ON(*seg >= (*bio_iter)->bi_vcnt); + con->out_msg_pos.data_pos += sent; + con->out_msg_pos.page_pos += sent; + if (sent < len) + return; - (*seg)++; - if (*seg == (*bio_iter)->bi_vcnt) - init_bio_iter((*bio_iter)->bi_next, bio_iter, seg); -} + BUG_ON(sent != len); + con->out_msg_pos.page_pos = 0; + con->out_msg_pos.page++; + con->out_msg_pos.did_page_crc = false; + if (in_trail) + list_move_tail(&page->lru, + &msg->trail->head); + else if (msg->pagelist) + list_move_tail(&page->lru, + &msg->pagelist->head); +#ifdef CONFIG_BLOCK + else if (msg->bio) + iter_bio_next(&msg->bio_iter, &msg->bio_seg); #endif +} /* * Write as much message data payload as we can. If we finish, queue @@ -837,41 +1010,36 @@ bool do_datacrc = !con->msgr->nocrc; int ret; int total_max_write; - int in_trail = 0; - size_t trail_len = (msg->trail ? msg->trail->length : 0); + bool in_trail = false; + const size_t trail_len = (msg->trail ? msg->trail->length : 0); + const size_t trail_off = data_len - trail_len; dout("write_partial_msg_pages %p msg %p page %d/%d offset %d\n", - con, con->out_msg, con->out_msg_pos.page, con->out_msg->nr_pages, + con, msg, con->out_msg_pos.page, msg->nr_pages, con->out_msg_pos.page_pos); -#ifdef CONFIG_BLOCK - if (msg->bio && !msg->bio_iter) - init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg); -#endif - + /* + * Iterate through each page that contains data to be + * written, and send as much as possible for each. + * + * If we are calculating the data crc (the default), we will + * need to map the page. If we have no pages, they have + * been revoked, so use the zero page. + */ while (data_len > con->out_msg_pos.data_pos) { struct page *page = NULL; int max_write = PAGE_SIZE; int bio_offset = 0; - total_max_write = data_len - trail_len - - con->out_msg_pos.data_pos; - - /* - * if we are calculating the data crc (the default), we need - * to map the page. if our pages[] has been revoked, use the - * zero page. - */ - - /* have we reached the trail part of the data? */ - if (con->out_msg_pos.data_pos >= data_len - trail_len) { - in_trail = 1; + in_trail = in_trail || con->out_msg_pos.data_pos >= trail_off; + if (!in_trail) + total_max_write = trail_off - con->out_msg_pos.data_pos; + if (in_trail) { total_max_write = data_len - con->out_msg_pos.data_pos; page = list_first_entry(&msg->trail->head, struct page, lru); - max_write = PAGE_SIZE; } else if (msg->pages) { page = msg->pages[con->out_msg_pos.page]; } else if (msg->pagelist) { @@ -894,52 +1062,32 @@ if (do_datacrc && !con->out_msg_pos.did_page_crc) { void *base; - u32 crc; - u32 tmpcrc = le32_to_cpu(con->out_msg->footer.data_crc); + u32 crc = le32_to_cpu(msg->footer.data_crc); char *kaddr; kaddr = kmap(page); BUG_ON(kaddr == NULL); base = kaddr + con->out_msg_pos.page_pos + bio_offset; - crc = crc32c(tmpcrc, base, len); - con->out_msg->footer.data_crc = cpu_to_le32(crc); + crc = crc32c(crc, base, len); + kunmap(page); + msg->footer.data_crc = cpu_to_le32(crc); con->out_msg_pos.did_page_crc = true; } ret = ceph_tcp_sendpage(con->sock, page, con->out_msg_pos.page_pos + bio_offset, len, 1); - - if (do_datacrc) - kunmap(page); - if (ret <= 0) goto out; - con->out_msg_pos.data_pos += ret; - con->out_msg_pos.page_pos += ret; - if (ret == len) { - con->out_msg_pos.page_pos = 0; - con->out_msg_pos.page++; - con->out_msg_pos.did_page_crc = false; - if (in_trail) - list_move_tail(&page->lru, - &msg->trail->head); - else if (msg->pagelist) - list_move_tail(&page->lru, - &msg->pagelist->head); -#ifdef CONFIG_BLOCK - else if (msg->bio) - iter_bio_next(&msg->bio_iter, &msg->bio_seg); -#endif - } + out_msg_pos_next(con, page, len, (size_t) ret, in_trail); } dout("write_partial_msg_pages %p msg %p done\n", con, msg); /* prepare and queue up footer, too */ if (!do_datacrc) - con->out_msg->footer.flags |= CEPH_MSG_FOOTER_NOCRC; - ceph_con_out_kvec_reset(con); + msg->footer.flags |= CEPH_MSG_FOOTER_NOCRC; + con_out_kvec_reset(con); prepare_write_message_footer(con); ret = 1; out: @@ -1351,20 +1499,14 @@ ceph_pr_addr(&con->msgr->inst.addr.in_addr)); } - set_bit(NEGOTIATING, &con->state); - prepare_read_connect(con); return 0; } static void fail_protocol(struct ceph_connection *con) { reset_connection(con); - set_bit(CLOSED, &con->state); /* in case there's queued work */ - - mutex_unlock(&con->mutex); - if (con->ops->bad_proto) - con->ops->bad_proto(con); - mutex_lock(&con->mutex); + BUG_ON(con->state != CON_STATE_NEGOTIATING); + con->state = CON_STATE_CLOSED; } static int process_connect(struct ceph_connection *con) @@ -1406,8 +1548,7 @@ con->error_msg = "connect authorization failure"; return -1; } - con->auth_retry = 1; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1428,7 +1569,7 @@ ENTITY_NAME(con->peer_name), ceph_pr_addr(&con->peer_addr.in_addr)); reset_connection(con); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1440,8 +1581,7 @@ if (con->ops->peer_reset) con->ops->peer_reset(con); mutex_lock(&con->mutex); - if (test_bit(CLOSED, &con->state) || - test_bit(OPENING, &con->state)) + if (con->state != CON_STATE_NEGOTIATING) return -EAGAIN; break; @@ -1454,7 +1594,7 @@ le32_to_cpu(con->out_connect.connect_seq), le32_to_cpu(con->in_reply.connect_seq)); con->connect_seq = le32_to_cpu(con->in_reply.connect_seq); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1471,7 +1611,7 @@ le32_to_cpu(con->in_reply.global_seq)); get_global_seq(con->msgr, le32_to_cpu(con->in_reply.global_seq)); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1489,7 +1629,10 @@ fail_protocol(con); return -1; } - clear_bit(CONNECTING, &con->state); + + BUG_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; @@ -1501,7 +1644,9 @@ le32_to_cpu(con->in_reply.connect_seq)); if (con->in_reply.flags & CEPH_MSG_CONNECT_LOSSY) - set_bit(LOSSYTX, &con->state); + set_bit(CON_FLAG_LOSSYTX, &con->flags); + + con->delay = 0; /* reset backoff memory */ prepare_read_tag(con); break; @@ -1587,10 +1732,7 @@ return 1; } -static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con, - struct ceph_msg_header *hdr, - int *skip); - +static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip); static int read_partial_message_pages(struct ceph_connection *con, struct page **pages, @@ -1633,9 +1775,6 @@ void *p; int ret, left; - if (IS_ERR(bv)) - return PTR_ERR(bv); - left = min((int)(data_len - con->in_msg_pos.data_pos), (int)(bv->bv_len - con->in_msg_pos.page_pos)); @@ -1672,7 +1811,6 @@ int ret; unsigned int front_len, middle_len, data_len; bool do_datacrc = !con->msgr->nocrc; - int skip; u64 seq; u32 crc; @@ -1723,10 +1861,13 @@ /* allocate message? */ if (!con->in_msg) { + int skip = 0; + dout("got hdr type %d front %d data %d\n", con->in_hdr.type, con->in_hdr.front_len, con->in_hdr.data_len); - skip = 0; - con->in_msg = ceph_alloc_msg(con, &con->in_hdr, &skip); + ret = ceph_con_in_msg_alloc(con, &skip); + if (ret < 0) + return ret; if (skip) { /* skip this message */ dout("alloc_msg said skip message\n"); @@ -1737,11 +1878,9 @@ con->in_seq++; return 0; } - if (!con->in_msg) { - con->error_msg = - "error allocating memory for incoming message"; - return -ENOMEM; - } + + BUG_ON(!con->in_msg); + BUG_ON(con->in_msg->con != con); m = con->in_msg; m->front.iov_len = 0; /* haven't read it yet */ if (m->middle) @@ -1753,6 +1892,11 @@ else con->in_msg_pos.page_pos = 0; con->in_msg_pos.data_pos = 0; + +#ifdef CONFIG_BLOCK + if (m->bio) + init_bio_iter(m->bio, &m->bio_iter, &m->bio_seg); +#endif } /* front */ @@ -1769,10 +1913,6 @@ if (ret <= 0) return ret; } -#ifdef CONFIG_BLOCK - if (m->bio && !m->bio_iter) - init_bio_iter(m->bio, &m->bio_iter, &m->bio_seg); -#endif /* (page) data */ while (con->in_msg_pos.data_pos < data_len) { @@ -1783,7 +1923,7 @@ return ret; #ifdef CONFIG_BLOCK } else if (m->bio) { - + BUG_ON(!m->bio_iter); ret = read_partial_message_bio(con, &m->bio_iter, &m->bio_seg, data_len, do_datacrc); @@ -1837,8 +1977,11 @@ { struct ceph_msg *msg; + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; msg = con->in_msg; con->in_msg = NULL; + con->ops->put(con); /* if first message, set peer_name */ if (con->peer_name.type == 0) @@ -1858,7 +2001,6 @@ con->ops->dispatch(con, msg); mutex_lock(&con->mutex); - prepare_read_tag(con); } @@ -1870,22 +2012,19 @@ { int ret = 1; - dout("try_write start %p state %lu nref %d\n", con, con->state, - atomic_read(&con->nref)); + dout("try_write start %p state %lu\n", con, con->state); more: dout("try_write out_kvec_bytes %d\n", con->out_kvec_bytes); /* open the socket first? */ - if (con->sock == NULL) { - ceph_con_out_kvec_reset(con); + if (con->state == CON_STATE_PREOPEN) { + BUG_ON(con->sock); + con->state = CON_STATE_CONNECTING; + + con_out_kvec_reset(con); prepare_write_banner(con); - ret = prepare_write_connect(con); - if (ret < 0) - goto out; prepare_read_banner(con); - set_bit(CONNECTING, &con->state); - clear_bit(NEGOTIATING, &con->state); BUG_ON(con->in_msg); con->in_tag = CEPH_MSGR_TAG_READY; @@ -1932,7 +2071,7 @@ } do_next: - if (!test_bit(CONNECTING, &con->state)) { + if (con->state == CON_STATE_OPEN) { /* is anything else pending? */ if (!list_empty(&con->out_queue)) { prepare_write_message(con); @@ -1942,14 +2081,15 @@ prepare_write_ack(con); goto more; } - if (test_and_clear_bit(KEEPALIVE_PENDING, &con->state)) { + if (test_and_clear_bit(CON_FLAG_KEEPALIVE_PENDING, + &con->flags)) { prepare_write_keepalive(con); goto more; } } /* Nothing to do! */ - clear_bit(WRITE_PENDING, &con->state); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); dout("try_write nothing else to write.\n"); ret = 0; out: @@ -1966,38 +2106,46 @@ { int ret = -1; - if (!con->sock) - return 0; - - if (test_bit(STANDBY, &con->state)) +more: + dout("try_read start on %p state %lu\n", con, con->state); + if (con->state != CON_STATE_CONNECTING && + con->state != CON_STATE_NEGOTIATING && + con->state != CON_STATE_OPEN) return 0; - dout("try_read start on %p\n", con); + BUG_ON(!con->sock); -more: dout("try_read tag %d in_base_pos %d\n", (int)con->in_tag, con->in_base_pos); - /* - * process_connect and process_message drop and re-take - * con->mutex. make sure we handle a racing close or reopen. - */ - if (test_bit(CLOSED, &con->state) || - test_bit(OPENING, &con->state)) { - ret = -EAGAIN; + if (con->state == CON_STATE_CONNECTING) { + dout("try_read connecting\n"); + ret = read_partial_banner(con); + if (ret <= 0) + goto out; + ret = process_banner(con); + if (ret < 0) + goto out; + + BUG_ON(con->state != CON_STATE_CONNECTING); + con->state = CON_STATE_NEGOTIATING; + + /* + * Received banner is good, exchange connection info. + * Do not reset out_kvec, as sending our banner raced + * with receiving peer banner after connect completed. + */ + ret = prepare_write_connect(con); + if (ret < 0) + goto out; + prepare_read_connect(con); + + /* Send connection info before awaiting response */ goto out; } - if (test_bit(CONNECTING, &con->state)) { - if (!test_bit(NEGOTIATING, &con->state)) { - dout("try_read connecting\n"); - ret = read_partial_banner(con); - if (ret <= 0) - goto out; - ret = process_banner(con); - if (ret < 0) - goto out; - } + if (con->state == CON_STATE_NEGOTIATING) { + dout("try_read negotiating\n"); ret = read_partial_connect(con); if (ret <= 0) goto out; @@ -2007,6 +2155,8 @@ goto more; } + BUG_ON(con->state != CON_STATE_OPEN); + if (con->in_base_pos < 0) { /* * skipping + discarding content. @@ -2040,7 +2190,8 @@ prepare_read_ack(con); break; case CEPH_MSGR_TAG_CLOSE: - set_bit(CLOSED, &con->state); /* fixme */ + con_close_socket(con); + con->state = CON_STATE_CLOSED; goto out; default: goto bad_tag; @@ -2063,6 +2214,8 @@ if (con->in_tag == CEPH_MSGR_TAG_READY) goto more; process_message(con); + if (con->state == CON_STATE_OPEN) + prepare_read_tag(con); goto more; } if (con->in_tag == CEPH_MSGR_TAG_ACK) { @@ -2091,12 +2244,6 @@ */ static void queue_con(struct ceph_connection *con) { - if (test_bit(DEAD, &con->state)) { - dout("queue_con %p ignoring: DEAD\n", - con); - return; - } - if (!con->ops->get(con)) { dout("queue_con %p ref count 0\n", con); return; @@ -2121,7 +2268,26 @@ mutex_lock(&con->mutex); restart: - if (test_and_clear_bit(BACKOFF, &con->state)) { + if (test_and_clear_bit(CON_FLAG_SOCK_CLOSED, &con->flags)) { + switch (con->state) { + case CON_STATE_CONNECTING: + con->error_msg = "connection failed"; + break; + case CON_STATE_NEGOTIATING: + con->error_msg = "negotiation failed"; + break; + case CON_STATE_OPEN: + con->error_msg = "socket closed"; + break; + default: + dout("unrecognized con state %d\n", (int)con->state); + con->error_msg = "unrecognized con state"; + BUG(); + } + goto fault; + } + + if (test_and_clear_bit(CON_FLAG_BACKOFF, &con->flags)) { dout("con_work %p backing off\n", con); if (queue_delayed_work(ceph_msgr_wq, &con->work, round_jiffies_relative(con->delay))) { @@ -2129,41 +2295,42 @@ mutex_unlock(&con->mutex); return; } else { - con->ops->put(con); dout("con_work %p FAILED to back off %lu\n", con, con->delay); + set_bit(CON_FLAG_BACKOFF, &con->flags); } + goto done; } - if (test_bit(STANDBY, &con->state)) { + if (con->state == CON_STATE_STANDBY) { dout("con_work %p STANDBY\n", con); goto done; } - if (test_bit(CLOSED, &con->state)) { /* e.g. if we are replaced */ - dout("con_work CLOSED\n"); - con_close_socket(con); + if (con->state == CON_STATE_CLOSED) { + dout("con_work %p CLOSED\n", con); + BUG_ON(con->sock); goto done; } - if (test_and_clear_bit(OPENING, &con->state)) { - /* reopen w/ new peer */ + if (con->state == CON_STATE_PREOPEN) { dout("con_work OPENING\n"); - con_close_socket(con); + BUG_ON(con->sock); } - if (test_and_clear_bit(SOCK_CLOSED, &con->state)) - goto fault; - ret = try_read(con); if (ret == -EAGAIN) goto restart; - if (ret < 0) + if (ret < 0) { + con->error_msg = "socket error on read"; goto fault; + } ret = try_write(con); if (ret == -EAGAIN) goto restart; - if (ret < 0) + if (ret < 0) { + con->error_msg = "socket error on write"; goto fault; + } done: mutex_unlock(&con->mutex); @@ -2172,7 +2339,6 @@ return; fault: - mutex_unlock(&con->mutex); ceph_fault(con); /* error/fault path */ goto done_unlocked; } @@ -2183,26 +2349,31 @@ * exponential backoff */ static void ceph_fault(struct ceph_connection *con) + __releases(con->mutex) { pr_err("%s%lld %s %s\n", ENTITY_NAME(con->peer_name), ceph_pr_addr(&con->peer_addr.in_addr), con->error_msg); dout("fault %p state %lu to peer %s\n", con, con->state, ceph_pr_addr(&con->peer_addr.in_addr)); - if (test_bit(LOSSYTX, &con->state)) { - dout("fault on LOSSYTX channel\n"); - goto out; - } - - mutex_lock(&con->mutex); - if (test_bit(CLOSED, &con->state)) - goto out_unlock; + BUG_ON(con->state != CON_STATE_CONNECTING && + con->state != CON_STATE_NEGOTIATING && + con->state != CON_STATE_OPEN); con_close_socket(con); + if (test_bit(CON_FLAG_LOSSYTX, &con->flags)) { + dout("fault on LOSSYTX channel, marking CLOSED\n"); + con->state = CON_STATE_CLOSED; + goto out_unlock; + } + if (con->in_msg) { + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; ceph_msg_put(con->in_msg); con->in_msg = NULL; + con->ops->put(con); } /* Requeue anything that hasn't been acked */ @@ -2211,12 +2382,13 @@ /* If there are no messages queued or keepalive pending, place * the connection in a STANDBY state */ if (list_empty(&con->out_queue) && - !test_bit(KEEPALIVE_PENDING, &con->state)) { + !test_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags)) { dout("fault %p setting STANDBY clearing WRITE_PENDING\n", con); - clear_bit(WRITE_PENDING, &con->state); - set_bit(STANDBY, &con->state); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); + con->state = CON_STATE_STANDBY; } else { /* retry after a delay. */ + con->state = CON_STATE_PREOPEN; if (con->delay == 0) con->delay = BASE_DELAY_INTERVAL; else if (con->delay < MAX_DELAY_INTERVAL) @@ -2237,13 +2409,12 @@ * that when con_work restarts we schedule the * delay then. */ - set_bit(BACKOFF, &con->state); + set_bit(CON_FLAG_BACKOFF, &con->flags); } } out_unlock: mutex_unlock(&con->mutex); -out: /* * in case we faulted due to authentication, invalidate our * current tickets so that we can get new ones. @@ -2260,18 +2431,14 @@ /* - * create a new messenger instance + * initialize a new messenger instance */ -struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr, - u32 supported_features, - u32 required_features) +void ceph_messenger_init(struct ceph_messenger *msgr, + struct ceph_entity_addr *myaddr, + u32 supported_features, + u32 required_features, + bool nocrc) { - struct ceph_messenger *msgr; - - msgr = kzalloc(sizeof(*msgr), GFP_KERNEL); - if (msgr == NULL) - return ERR_PTR(-ENOMEM); - msgr->supported_features = supported_features; msgr->required_features = required_features; @@ -2284,30 +2451,23 @@ msgr->inst.addr.type = 0; get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce)); encode_my_addr(msgr); + msgr->nocrc = nocrc; - dout("messenger_create %p\n", msgr); - return msgr; -} -EXPORT_SYMBOL(ceph_messenger_create); + atomic_set(&msgr->stopping, 0); -void ceph_messenger_destroy(struct ceph_messenger *msgr) -{ - dout("destroy %p\n", msgr); - kfree(msgr); - dout("destroyed messenger %p\n", msgr); + dout("%s %p\n", __func__, msgr); } -EXPORT_SYMBOL(ceph_messenger_destroy); +EXPORT_SYMBOL(ceph_messenger_init); static void clear_standby(struct ceph_connection *con) { /* come back from STANDBY? */ - if (test_and_clear_bit(STANDBY, &con->state)) { - mutex_lock(&con->mutex); + if (con->state == CON_STATE_STANDBY) { dout("clear_standby %p and ++connect_seq\n", con); + con->state = CON_STATE_PREOPEN; con->connect_seq++; - WARN_ON(test_bit(WRITE_PENDING, &con->state)); - WARN_ON(test_bit(KEEPALIVE_PENDING, &con->state)); - mutex_unlock(&con->mutex); + WARN_ON(test_bit(CON_FLAG_WRITE_PENDING, &con->flags)); + WARN_ON(test_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags)); } } @@ -2316,21 +2476,24 @@ */ void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg) { - if (test_bit(CLOSED, &con->state)) { - dout("con_send %p closed, dropping %p\n", con, msg); - ceph_msg_put(msg); - return; - } - /* set src+dst */ msg->hdr.src = con->msgr->inst.name; - BUG_ON(msg->front.iov_len != le32_to_cpu(msg->hdr.front_len)); - msg->needs_out_seq = true; - /* queue */ mutex_lock(&con->mutex); + + if (con->state == CON_STATE_CLOSED) { + dout("con_send %p closed, dropping %p\n", con, msg); + ceph_msg_put(msg); + mutex_unlock(&con->mutex); + return; + } + + BUG_ON(msg->con != NULL); + msg->con = con->ops->get(con); + BUG_ON(msg->con == NULL); + BUG_ON(!list_empty(&msg->list_head)); list_add_tail(&msg->list_head, &con->out_queue); dout("----- %p to %s%lld %d=%s len %d+%d+%d -----\n", msg, @@ -2339,12 +2502,13 @@ le32_to_cpu(msg->hdr.front_len), le32_to_cpu(msg->hdr.middle_len), le32_to_cpu(msg->hdr.data_len)); + + clear_standby(con); mutex_unlock(&con->mutex); /* if there wasn't anything waiting to send before, queue * new work */ - clear_standby(con); - if (test_and_set_bit(WRITE_PENDING, &con->state) == 0) + if (test_and_set_bit(CON_FLAG_WRITE_PENDING, &con->flags) == 0) queue_con(con); } EXPORT_SYMBOL(ceph_con_send); @@ -2352,24 +2516,34 @@ /* * Revoke a message that was previously queued for send */ -void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg) +void ceph_msg_revoke(struct ceph_msg *msg) { + struct ceph_connection *con = msg->con; + + if (!con) + return; /* Message not in our possession */ + mutex_lock(&con->mutex); if (!list_empty(&msg->list_head)) { - dout("con_revoke %p msg %p - was on queue\n", con, msg); + dout("%s %p msg %p - was on queue\n", __func__, con, msg); list_del_init(&msg->list_head); - ceph_msg_put(msg); + BUG_ON(msg->con == NULL); + msg->con->ops->put(msg->con); + msg->con = NULL; msg->hdr.seq = 0; + + ceph_msg_put(msg); } if (con->out_msg == msg) { - dout("con_revoke %p msg %p - was sending\n", con, msg); + dout("%s %p msg %p - was sending\n", __func__, con, msg); con->out_msg = NULL; if (con->out_kvec_is_msg) { con->out_skip = con->out_kvec_bytes; con->out_kvec_is_msg = false; } - ceph_msg_put(msg); msg->hdr.seq = 0; + + ceph_msg_put(msg); } mutex_unlock(&con->mutex); } @@ -2377,17 +2551,27 @@ /* * Revoke a message that we may be reading data into */ -void ceph_con_revoke_message(struct ceph_connection *con, struct ceph_msg *msg) +void ceph_msg_revoke_incoming(struct ceph_msg *msg) { + struct ceph_connection *con; + + BUG_ON(msg == NULL); + if (!msg->con) { + dout("%s msg %p null con\n", __func__, msg); + + return; /* Message not in our possession */ + } + + con = msg->con; mutex_lock(&con->mutex); - if (con->in_msg && con->in_msg == msg) { + if (con->in_msg == msg) { unsigned int front_len = le32_to_cpu(con->in_hdr.front_len); unsigned int middle_len = le32_to_cpu(con->in_hdr.middle_len); unsigned int data_len = le32_to_cpu(con->in_hdr.data_len); /* skip rest of message */ - dout("con_revoke_pages %p msg %p revoked\n", con, msg); - con->in_base_pos = con->in_base_pos - + dout("%s %p msg %p revoked\n", __func__, con, msg); + con->in_base_pos = con->in_base_pos - sizeof(struct ceph_msg_header) - front_len - middle_len - @@ -2398,8 +2582,8 @@ con->in_tag = CEPH_MSGR_TAG_READY; con->in_seq++; } else { - dout("con_revoke_pages %p msg %p pages %p no-op\n", - con, con->in_msg, msg); + dout("%s %p in_msg %p msg %p no-op\n", + __func__, con, con->in_msg, msg); } mutex_unlock(&con->mutex); } @@ -2410,9 +2594,11 @@ void ceph_con_keepalive(struct ceph_connection *con) { dout("con_keepalive %p\n", con); + mutex_lock(&con->mutex); clear_standby(con); - if (test_and_set_bit(KEEPALIVE_PENDING, &con->state) == 0 && - test_and_set_bit(WRITE_PENDING, &con->state) == 0) + mutex_unlock(&con->mutex); + if (test_and_set_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags) == 0 && + test_and_set_bit(CON_FLAG_WRITE_PENDING, &con->flags) == 0) queue_con(con); } EXPORT_SYMBOL(ceph_con_keepalive); @@ -2431,6 +2617,8 @@ if (m == NULL) goto out; kref_init(&m->kref); + + m->con = NULL; INIT_LIST_HEAD(&m->list_head); m->hdr.tid = 0; @@ -2526,46 +2714,78 @@ } /* - * Generic message allocator, for incoming messages. + * Allocate a message for receiving an incoming message on a + * connection, and save the result in con->in_msg. Uses the + * connection's private alloc_msg op if available. + * + * Returns 0 on success, or a negative error code. + * + * On success, if we set *skip = 1: + * - the next message should be skipped and ignored. + * - con->in_msg == NULL + * or if we set *skip = 0: + * - con->in_msg is non-null. + * On error (ENOMEM, EAGAIN, ...), + * - con->in_msg == NULL */ -static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con, - struct ceph_msg_header *hdr, - int *skip) +static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip) { + struct ceph_msg_header *hdr = &con->in_hdr; int type = le16_to_cpu(hdr->type); int front_len = le32_to_cpu(hdr->front_len); int middle_len = le32_to_cpu(hdr->middle_len); - struct ceph_msg *msg = NULL; - int ret; + int ret = 0; + + BUG_ON(con->in_msg != NULL); if (con->ops->alloc_msg) { + struct ceph_msg *msg; + mutex_unlock(&con->mutex); msg = con->ops->alloc_msg(con, hdr, skip); mutex_lock(&con->mutex); - if (!msg || *skip) - return NULL; + if (con->state != CON_STATE_OPEN) { + if (msg) + ceph_msg_put(msg); + return -EAGAIN; + } + con->in_msg = msg; + if (con->in_msg) { + con->in_msg->con = con->ops->get(con); + BUG_ON(con->in_msg->con == NULL); + } + if (*skip) { + con->in_msg = NULL; + return 0; + } + if (!con->in_msg) { + con->error_msg = + "error allocating memory for incoming message"; + return -ENOMEM; + } } - if (!msg) { - *skip = 0; - msg = ceph_msg_new(type, front_len, GFP_NOFS, false); - if (!msg) { + if (!con->in_msg) { + con->in_msg = ceph_msg_new(type, front_len, GFP_NOFS, false); + if (!con->in_msg) { pr_err("unable to allocate msg type %d len %d\n", type, front_len); - return NULL; + return -ENOMEM; } - msg->page_alignment = le16_to_cpu(hdr->data_off); + con->in_msg->con = con->ops->get(con); + BUG_ON(con->in_msg->con == NULL); + con->in_msg->page_alignment = le16_to_cpu(hdr->data_off); } - memcpy(&msg->hdr, &con->in_hdr, sizeof(con->in_hdr)); + memcpy(&con->in_msg->hdr, &con->in_hdr, sizeof(con->in_hdr)); - if (middle_len && !msg->middle) { - ret = ceph_alloc_middle(con, msg); + if (middle_len && !con->in_msg->middle) { + ret = ceph_alloc_middle(con, con->in_msg); if (ret < 0) { - ceph_msg_put(msg); - return NULL; + ceph_msg_put(con->in_msg); + con->in_msg = NULL; } } - return msg; + return ret; } --- linux-3.5.0.orig/net/ceph/auth_x.c +++ linux-3.5.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-3.5.0.orig/net/ceph/mon_client.c +++ linux-3.5.0/net/ceph/mon_client.c @@ -106,9 +106,9 @@ monc->pending_auth = 1; monc->m_auth->front.iov_len = len; monc->m_auth->hdr.front_len = cpu_to_le32(len); - ceph_con_revoke(monc->con, monc->m_auth); + ceph_msg_revoke(monc->m_auth); ceph_msg_get(monc->m_auth); /* keep our ref */ - ceph_con_send(monc->con, monc->m_auth); + ceph_con_send(&monc->con, monc->m_auth); } /* @@ -117,8 +117,11 @@ static void __close_session(struct ceph_mon_client *monc) { dout("__close_session closing mon%d\n", monc->cur_mon); - ceph_con_revoke(monc->con, monc->m_auth); - ceph_con_close(monc->con); + ceph_msg_revoke(monc->m_auth); + ceph_msg_revoke_incoming(monc->m_auth_reply); + ceph_msg_revoke(monc->m_subscribe); + ceph_msg_revoke_incoming(monc->m_subscribe_ack); + ceph_con_close(&monc->con); monc->cur_mon = -1; monc->pending_auth = 0; ceph_auth_reset(monc->auth); @@ -142,9 +145,8 @@ monc->want_next_osdmap = !!monc->want_next_osdmap; dout("open_session mon%d opening\n", monc->cur_mon); - monc->con->peer_name.type = CEPH_ENTITY_TYPE_MON; - monc->con->peer_name.num = cpu_to_le64(monc->cur_mon); - ceph_con_open(monc->con, + ceph_con_open(&monc->con, + CEPH_ENTITY_TYPE_MON, monc->cur_mon, &monc->monmap->mon_inst[monc->cur_mon].addr); /* initiatiate authentication handshake */ @@ -226,8 +228,8 @@ msg->front.iov_len = p - msg->front.iov_base; msg->hdr.front_len = cpu_to_le32(msg->front.iov_len); - ceph_con_revoke(monc->con, msg); - ceph_con_send(monc->con, ceph_msg_get(msg)); + ceph_msg_revoke(msg); + ceph_con_send(&monc->con, ceph_msg_get(msg)); monc->sub_sent = jiffies | 1; /* never 0 */ } @@ -247,7 +249,7 @@ if (monc->hunting) { pr_info("mon%d %s session established\n", monc->cur_mon, - ceph_pr_addr(&monc->con->peer_addr.in_addr)); + ceph_pr_addr(&monc->con.peer_addr.in_addr)); monc->hunting = false; } dout("handle_subscribe_ack after %d seconds\n", seconds); @@ -309,6 +311,17 @@ EXPORT_SYMBOL(ceph_monc_open_session); /* + * We require the fsid and global_id in order to initialize our + * debugfs dir. + */ +static bool have_debugfs_info(struct ceph_mon_client *monc) +{ + dout("have_debugfs_info fsid %d globalid %lld\n", + (int)monc->client->have_fsid, monc->auth->global_id); + return monc->client->have_fsid && monc->auth->global_id > 0; +} + +/* * The monitor responds with mount ack indicate mount success. The * included client ticket allows the client to talk to MDSs and OSDs. */ @@ -318,9 +331,12 @@ struct ceph_client *client = monc->client; struct ceph_monmap *monmap = NULL, *old = monc->monmap; void *p, *end; + int had_debugfs_info, init_debugfs = 0; mutex_lock(&monc->mutex); + had_debugfs_info = have_debugfs_info(monc); + dout("handle_monmap\n"); p = msg->front.iov_base; end = p + msg->front.iov_len; @@ -342,12 +358,22 @@ if (!client->have_fsid) { client->have_fsid = true; + if (!had_debugfs_info && have_debugfs_info(monc)) { + pr_info("client%lld fsid %pU\n", + ceph_client_id(monc->client), + &monc->client->fsid); + init_debugfs = 1; + } mutex_unlock(&monc->mutex); - /* - * do debugfs initialization without mutex to avoid - * creating a locking dependency - */ - ceph_debugfs_client_init(client); + + if (init_debugfs) { + /* + * do debugfs initialization without mutex to avoid + * creating a locking dependency + */ + ceph_debugfs_client_init(monc->client); + } + goto out_unlocked; } out: @@ -439,6 +465,7 @@ m = NULL; } else { dout("get_generic_reply %lld got %p\n", tid, req->reply); + *skip = 0; m = ceph_msg_get(req->reply); /* * we don't need to track the connection reading into @@ -461,7 +488,7 @@ req->request->hdr.tid = cpu_to_le64(req->tid); __insert_generic_request(monc, req); monc->num_generic_requests++; - ceph_con_send(monc->con, ceph_msg_get(req->request)); + ceph_con_send(&monc->con, ceph_msg_get(req->request)); mutex_unlock(&monc->mutex); err = wait_for_completion_interruptible(&req->completion); @@ -684,8 +711,9 @@ for (p = rb_first(&monc->generic_request_tree); p; p = rb_next(p)) { req = rb_entry(p, struct ceph_mon_generic_request, node); - ceph_con_revoke(monc->con, req->request); - ceph_con_send(monc->con, ceph_msg_get(req->request)); + ceph_msg_revoke(req->request); + ceph_msg_revoke_incoming(req->reply); + ceph_con_send(&monc->con, ceph_msg_get(req->request)); } } @@ -705,11 +733,11 @@ __close_session(monc); __open_session(monc); /* continue hunting */ } else { - ceph_con_keepalive(monc->con); + ceph_con_keepalive(&monc->con); __validate_auth(monc); - if (monc->auth->ops->is_authenticated(monc->auth)) + if (ceph_auth_is_authenticated(monc->auth)) __send_subscribe(monc); } __schedule_delayed(monc); @@ -760,19 +788,12 @@ goto out; /* connection */ - monc->con = kmalloc(sizeof(*monc->con), GFP_KERNEL); - if (!monc->con) - goto out_monmap; - ceph_con_init(monc->client->msgr, monc->con); - monc->con->private = monc; - monc->con->ops = &mon_con_ops; - /* authentication */ monc->auth = ceph_auth_init(cl->options->name, cl->options->key); if (IS_ERR(monc->auth)) { err = PTR_ERR(monc->auth); - goto out_con; + goto out_monmap; } monc->auth->want_keys = CEPH_ENTITY_TYPE_AUTH | CEPH_ENTITY_TYPE_MON | @@ -801,6 +822,9 @@ if (!monc->m_auth) goto out_auth_reply; + ceph_con_init(&monc->con, monc, &mon_con_ops, + &monc->client->msgr); + monc->cur_mon = -1; monc->hunting = true; monc->sub_renew_after = jiffies; @@ -824,8 +848,6 @@ ceph_msg_put(monc->m_subscribe_ack); out_auth: ceph_auth_destroy(monc->auth); -out_con: - monc->con->ops->put(monc->con); out_monmap: kfree(monc->monmap); out: @@ -841,10 +863,6 @@ mutex_lock(&monc->mutex); __close_session(monc); - monc->con->private = NULL; - monc->con->ops->put(monc->con); - monc->con = NULL; - mutex_unlock(&monc->mutex); /* @@ -871,10 +889,11 @@ { int ret; int was_auth = 0; + int had_debugfs_info, init_debugfs = 0; mutex_lock(&monc->mutex); - if (monc->auth->ops) - was_auth = monc->auth->ops->is_authenticated(monc->auth); + had_debugfs_info = have_debugfs_info(monc); + 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, @@ -885,17 +904,32 @@ 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; - monc->client->msgr->inst.name.num = + monc->client->msgr.inst.name.type = CEPH_ENTITY_TYPE_CLIENT; + monc->client->msgr.inst.name.num = cpu_to_le64(monc->auth->global_id); __send_subscribe(monc); __resend_generic_request(monc); } + + if (!had_debugfs_info && have_debugfs_info(monc)) { + pr_info("client%lld fsid %pU\n", + ceph_client_id(monc->client), + &monc->client->fsid); + init_debugfs = 1; + } mutex_unlock(&monc->mutex); + + if (init_debugfs) { + /* + * do debugfs initialization without mutex to avoid + * creating a locking dependency + */ + ceph_debugfs_client_init(monc->client); + } } static int __validate_auth(struct ceph_mon_client *monc) @@ -1000,6 +1034,8 @@ case CEPH_MSG_MDS_MAP: case CEPH_MSG_OSD_MAP: m = ceph_msg_new(type, front_len, GFP_NOFS, false); + if (!m) + return NULL; /* ENOMEM--return skip == 0 */ break; } @@ -1029,7 +1065,7 @@ if (!monc->hunting) pr_info("mon%d %s session lost, " "hunting for new mon\n", monc->cur_mon, - ceph_pr_addr(&monc->con->peer_addr.in_addr)); + ceph_pr_addr(&monc->con.peer_addr.in_addr)); __close_session(monc); if (!monc->hunting) { @@ -1044,9 +1080,23 @@ mutex_unlock(&monc->mutex); } +/* + * We can ignore refcounting on the connection struct, as all references + * will come from the messenger workqueue, which is drained prior to + * mon_client destruction. + */ +static struct ceph_connection *con_get(struct ceph_connection *con) +{ + return con; +} + +static void con_put(struct ceph_connection *con) +{ +} + static const struct ceph_connection_operations mon_con_ops = { - .get = ceph_con_get, - .put = ceph_con_put, + .get = con_get, + .put = con_put, .dispatch = dispatch, .fault = mon_fault, .alloc_msg = mon_alloc_msg, --- linux-3.5.0.orig/net/ceph/crypto.h +++ linux-3.5.0/net/ceph/crypto.h @@ -16,7 +16,8 @@ static inline void ceph_crypto_key_destroy(struct ceph_crypto_key *key) { - kfree(key->key); + if (key) + kfree(key->key); } extern int ceph_crypto_key_clone(struct ceph_crypto_key *dst, --- linux-3.5.0.orig/net/ceph/osd_client.c +++ linux-3.5.0/net/ceph/osd_client.c @@ -52,7 +52,7 @@ op == CEPH_OSD_OP_WRITE); } -void ceph_calc_raw_layout(struct ceph_osd_client *osdc, +int ceph_calc_raw_layout(struct ceph_osd_client *osdc, struct ceph_file_layout *layout, u64 snapid, u64 off, u64 *plen, u64 *bno, @@ -62,12 +62,15 @@ struct ceph_osd_request_head *reqhead = req->r_request->front.iov_base; u64 orig_len = *plen; u64 objoff, objlen; /* extent in object */ + int r; reqhead->snapid = cpu_to_le64(snapid); /* object extent? */ - ceph_calc_file_object_mapping(layout, off, plen, bno, - &objoff, &objlen); + r = ceph_calc_file_object_mapping(layout, off, plen, bno, + &objoff, &objlen); + if (r < 0) + return r; if (*plen < orig_len) dout(" skipping last %llu, final file extent %llu~%llu\n", orig_len - *plen, off, *plen); @@ -83,7 +86,7 @@ dout("calc_layout bno=%llx %llu~%llu (%d pages)\n", *bno, objoff, objlen, req->r_num_pages); - + return 0; } EXPORT_SYMBOL(ceph_calc_raw_layout); @@ -112,20 +115,25 @@ * * fill osd op in request message. */ -static void calc_layout(struct ceph_osd_client *osdc, - struct ceph_vino vino, - struct ceph_file_layout *layout, - u64 off, u64 *plen, - struct ceph_osd_request *req, - struct ceph_osd_req_op *op) +static int calc_layout(struct ceph_osd_client *osdc, + struct ceph_vino vino, + struct ceph_file_layout *layout, + u64 off, u64 *plen, + struct ceph_osd_request *req, + struct ceph_osd_req_op *op) { u64 bno; + int r; - ceph_calc_raw_layout(osdc, layout, vino.snap, off, - plen, &bno, req, op); + r = ceph_calc_raw_layout(osdc, layout, vino.snap, off, + plen, &bno, req, op); + if (r < 0) + return r; snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, bno); req->r_oid_len = strlen(req->r_oid); + + return r; } /* @@ -140,10 +148,9 @@ if (req->r_request) ceph_msg_put(req->r_request); if (req->r_con_filling_msg) { - dout("release_request revoking pages %p from con %p\n", + dout("%s revoking pages %p from con %p\n", __func__, req->r_pages, req->r_con_filling_msg); - ceph_con_revoke_message(req->r_con_filling_msg, - req->r_reply); + ceph_msg_revoke_incoming(req->r_reply); req->r_con_filling_msg->ops->put(req->r_con_filling_msg); } if (req->r_reply) @@ -243,6 +250,7 @@ } ceph_pagelist_init(req->r_trail); } + /* create request message; allow space for oid */ msg_size += MAX_OBJ_NAME_SIZE; if (snapc) @@ -256,7 +264,6 @@ return NULL; } - msg->hdr.type = cpu_to_le16(CEPH_MSG_OSD_OP); memset(msg->front.iov_base, 0, msg->front.iov_len); req->r_request = msg; @@ -624,7 +631,7 @@ /* * Track open sessions with osds. */ -static struct ceph_osd *create_osd(struct ceph_osd_client *osdc) +static struct ceph_osd *create_osd(struct ceph_osd_client *osdc, int onum) { struct ceph_osd *osd; @@ -634,15 +641,13 @@ atomic_set(&osd->o_ref, 1); osd->o_osdc = osdc; + osd->o_osd = onum; INIT_LIST_HEAD(&osd->o_requests); INIT_LIST_HEAD(&osd->o_linger_requests); INIT_LIST_HEAD(&osd->o_osd_lru); osd->o_incarnation = 1; - ceph_con_init(osdc->client->msgr, &osd->o_con); - osd->o_con.private = osd; - osd->o_con.ops = &osd_con_ops; - osd->o_con.peer_name.type = CEPH_ENTITY_TYPE_OSD; + ceph_con_init(&osd->o_con, osd, &osd_con_ops, &osdc->client->msgr); INIT_LIST_HEAD(&osd->o_keepalive_item); return osd; @@ -667,8 +672,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); } } @@ -752,7 +756,8 @@ ret = -EAGAIN; } else { ceph_con_close(&osd->o_con); - ceph_con_open(&osd->o_con, &osdc->osdmap->osd_addr[osd->o_osd]); + ceph_con_open(&osd->o_con, CEPH_ENTITY_TYPE_OSD, osd->o_osd, + &osdc->osdmap->osd_addr[osd->o_osd]); osd->o_incarnation++; } return ret; @@ -853,7 +858,7 @@ if (req->r_osd) { /* make sure the original request isn't in flight. */ - ceph_con_revoke(&req->r_osd->o_con, req->r_request); + ceph_msg_revoke(req->r_request); list_del_init(&req->r_osd_item); if (list_empty(&req->r_osd->o_requests) && @@ -880,7 +885,7 @@ static void __cancel_request(struct ceph_osd_request *req) { if (req->r_sent && req->r_osd) { - ceph_con_revoke(&req->r_osd->o_con, req->r_request); + ceph_msg_revoke(req->r_request); req->r_sent = 0; } } @@ -890,7 +895,9 @@ { dout("__register_linger_request %p\n", req); list_add_tail(&req->r_linger_item, &osdc->req_linger); - list_add_tail(&req->r_linger_osd, &req->r_osd->o_linger_requests); + if (req->r_osd) + list_add_tail(&req->r_linger_osd, + &req->r_osd->o_linger_requests); } static void __unregister_linger_request(struct ceph_osd_client *osdc, @@ -998,18 +1005,18 @@ req->r_osd = __lookup_osd(osdc, o); if (!req->r_osd && o >= 0) { err = -ENOMEM; - req->r_osd = create_osd(osdc); + req->r_osd = create_osd(osdc, o); if (!req->r_osd) { list_move(&req->r_req_lru_item, &osdc->req_notarget); goto out; } dout("map_request osd %p is osd%d\n", req->r_osd, o); - req->r_osd->o_osd = o; - req->r_osd->o_con.peer_name.num = cpu_to_le64(o); __insert_osd(osdc, req->r_osd); - ceph_con_open(&req->r_osd->o_con, &osdc->osdmap->osd_addr[o]); + ceph_con_open(&req->r_osd->o_con, + CEPH_ENTITY_TYPE_OSD, o, + &osdc->osdmap->osd_addr[o]); } if (req->r_osd) { @@ -1293,7 +1300,7 @@ * Requeue requests whose mapping to an OSD has changed. If requests map to * no osd, request a new map. * - * Caller should hold map_sem for read and request_mutex. + * Caller should hold map_sem for read. */ static void kick_requests(struct ceph_osd_client *osdc, int force_resend) { @@ -1304,8 +1311,9 @@ dout("kick_requests %s\n", force_resend ? " (force resend)" : ""); mutex_lock(&osdc->request_mutex); - for (p = rb_first(&osdc->requests); p; p = rb_next(p)) { + for (p = rb_first(&osdc->requests); p; ) { req = rb_entry(p, struct ceph_osd_request, r_node); + p = rb_next(p); err = __map_request(osdc, req, force_resend); if (err < 0) continue; /* error */ @@ -1313,10 +1321,23 @@ dout("%p tid %llu maps to no osd\n", req, req->r_tid); needmap++; /* request a newer map */ } else if (err > 0) { - dout("%p tid %llu requeued on osd%d\n", req, req->r_tid, - req->r_osd ? req->r_osd->o_osd : -1); - if (!req->r_linger) + if (!req->r_linger) { + dout("%p tid %llu requeued on osd%d\n", req, + req->r_tid, + req->r_osd ? req->r_osd->o_osd : -1); req->r_flags |= CEPH_OSD_FLAG_RETRY; + } + } + if (req->r_linger && list_empty(&req->r_linger_item)) { + /* + * register as a linger so that we will + * re-submit below and get a new tid + */ + dout("%p tid %llu restart on osd%d\n", + req, req->r_tid, + req->r_osd ? req->r_osd->o_osd : -1); + __register_linger_request(osdc, req); + __unregister_request(osdc, req); } } @@ -1337,9 +1358,10 @@ dout("kicking lingering %p tid %llu osd%d\n", req, req->r_tid, req->r_osd ? req->r_osd->o_osd : -1); - __unregister_linger_request(osdc, req); __register_request(osdc, req); + __unregister_linger_request(osdc, req); } + reset_changed_osds(osdc); mutex_unlock(&osdc->request_mutex); if (needmap) { @@ -1391,7 +1413,7 @@ epoch, maplen); newmap = osdmap_apply_incremental(&p, next, osdc->osdmap, - osdc->client->msgr); + &osdc->client->msgr); if (IS_ERR(newmap)) { err = PTR_ERR(newmap); goto bad; @@ -1402,7 +1424,6 @@ osdc->osdmap = newmap; } kick_requests(osdc, 0); - reset_changed_osds(osdc); } else { dout("ignoring incremental map %u len %d\n", epoch, maplen); @@ -1839,11 +1860,12 @@ if (!osdc->req_mempool) goto out; - err = ceph_msgpool_init(&osdc->msgpool_op, OSD_OP_FRONT_LEN, 10, true, + err = ceph_msgpool_init(&osdc->msgpool_op, CEPH_MSG_OSD_OP, + OSD_OP_FRONT_LEN, 10, true, "osd_op"); if (err < 0) goto out_mempool; - err = ceph_msgpool_init(&osdc->msgpool_op_reply, + err = ceph_msgpool_init(&osdc->msgpool_op_reply, CEPH_MSG_OSD_OPREPLY, OSD_OPREPLY_FRONT_LEN, 10, true, "osd_op_reply"); if (err < 0) @@ -2025,9 +2047,9 @@ } if (req->r_con_filling_msg) { - dout("get_reply revoking msg %p from old con %p\n", + dout("%s revoking msg %p from old con %p\n", __func__, req->r_reply, req->r_con_filling_msg); - ceph_con_revoke_message(req->r_con_filling_msg, req->r_reply); + ceph_msg_revoke_incoming(req->r_reply); req->r_con_filling_msg->ops->put(req->r_con_filling_msg); req->r_con_filling_msg = NULL; } @@ -2080,6 +2102,7 @@ int type = le16_to_cpu(hdr->type); int front = le32_to_cpu(hdr->front_len); + *skip = 0; switch (type) { case CEPH_MSG_OSD_MAP: case CEPH_MSG_WATCH_NOTIFY: @@ -2127,13 +2150,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); } @@ -2149,11 +2176,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) @@ -2162,9 +2185,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-3.5.0.orig/net/ceph/osdmap.c +++ linux-3.5.0/net/ceph/osdmap.c @@ -488,15 +488,16 @@ ceph_decode_32_safe(p, end, pool, bad); ceph_decode_32_safe(p, end, len, bad); dout(" pool %d len %d\n", pool, len); + ceph_decode_need(p, end, len, bad); pi = __lookup_pg_pool(&map->pg_pools, pool); if (pi) { + char *name = kstrndup(*p, len, GFP_NOFS); + + if (!name) + return -ENOMEM; kfree(pi->name); - pi->name = kmalloc(len + 1, GFP_NOFS); - if (pi->name) { - memcpy(pi->name, *p, len); - pi->name[len] = '\0'; - dout(" name is %s\n", pi->name); - } + pi->name = name; + dout(" name is %s\n", pi->name); } *p += len; } @@ -666,6 +667,9 @@ ceph_decode_need(p, end, sizeof(u32) + sizeof(u64), bad); ceph_decode_copy(p, &pgid, sizeof(pgid)); n = ceph_decode_32(p); + err = -EINVAL; + if (n > (UINT_MAX - sizeof(*pg)) / sizeof(u32)) + goto bad; ceph_decode_need(p, end, n * sizeof(u32), bad); err = -ENOMEM; pg = kmalloc(sizeof(*pg) + n*sizeof(u32), GFP_NOFS); @@ -889,6 +893,10 @@ (void) __remove_pg_mapping(&map->pg_temp, pgid); /* insert */ + if (pglen > (UINT_MAX - sizeof(*pg)) / sizeof(u32)) { + err = -EINVAL; + goto bad; + } pg = kmalloc(sizeof(*pg) + sizeof(u32)*pglen, GFP_NOFS); if (!pg) { err = -ENOMEM; @@ -937,7 +945,7 @@ * for now, we write only a single su, until we can * pass a stride back to the caller. */ -void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, +int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, u64 off, u64 *plen, u64 *ono, u64 *oxoff, u64 *oxlen) @@ -951,11 +959,17 @@ dout("mapping %llu~%llu osize %u fl_su %u\n", off, *plen, osize, su); + if (su == 0 || sc == 0) + goto invalid; su_per_object = osize / su; + if (su_per_object == 0) + goto invalid; dout("osize %u / su %u = su_per_object %u\n", osize, su, su_per_object); - BUG_ON((su & ~PAGE_MASK) != 0); + if ((su & ~PAGE_MASK) != 0) + goto invalid; + /* bl = *off / su; */ t = off; do_div(t, su); @@ -983,6 +997,14 @@ *plen = *oxlen; dout(" obj extent %llu~%llu\n", *oxoff, *oxlen); + return 0; + +invalid: + dout(" invalid layout\n"); + *ono = 0; + *oxoff = 0; + *oxlen = 0; + return -EINVAL; } EXPORT_SYMBOL(ceph_calc_file_object_mapping); --- linux-3.5.0.orig/net/ceph/debugfs.c +++ linux-3.5.0/net/ceph/debugfs.c @@ -189,6 +189,9 @@ snprintf(name, sizeof(name), "%pU.client%lld", &client->fsid, client->monc.auth->global_id); + dout("ceph_debugfs_client_init %p %s\n", client, name); + + BUG_ON(client->debugfs_dir); client->debugfs_dir = debugfs_create_dir(name, ceph_debugfs_dir); if (!client->debugfs_dir) goto out; @@ -234,6 +237,7 @@ void ceph_debugfs_client_cleanup(struct ceph_client *client) { + dout("ceph_debugfs_client_cleanup %p\n", client); debugfs_remove(client->debugfs_osdmap); debugfs_remove(client->debugfs_monmap); debugfs_remove(client->osdc.debugfs_file); --- linux-3.5.0.orig/net/ceph/ceph_common.c +++ linux-3.5.0/net/ceph/ceph_common.c @@ -83,7 +83,6 @@ return -1; } } else { - pr_info("client%lld fsid %pU\n", ceph_client_id(client), fsid); memcpy(&client->fsid, fsid, sizeof(*fsid)); } return 0; @@ -468,19 +467,15 @@ /* msgr */ if (ceph_test_opt(client, MYIP)) myaddr = &client->options->my_addr; - client->msgr = ceph_messenger_create(myaddr, - client->supported_features, - client->required_features); - if (IS_ERR(client->msgr)) { - err = PTR_ERR(client->msgr); - goto fail; - } - client->msgr->nocrc = ceph_test_opt(client, NOCRC); + ceph_messenger_init(&client->msgr, myaddr, + client->supported_features, + client->required_features, + ceph_test_opt(client, NOCRC)); /* subsystems */ err = ceph_monc_init(&client->monc, client); if (err < 0) - goto fail_msgr; + goto fail; err = ceph_osdc_init(&client->osdc, client); if (err < 0) goto fail_monc; @@ -489,8 +484,6 @@ fail_monc: ceph_monc_stop(&client->monc); -fail_msgr: - ceph_messenger_destroy(client->msgr); fail: kfree(client); return ERR_PTR(err); @@ -501,6 +494,8 @@ { dout("destroy_client %p\n", client); + atomic_set(&client->msgr.stopping, 1); + /* unmount */ ceph_osdc_stop(&client->osdc); @@ -508,8 +503,6 @@ ceph_debugfs_client_cleanup(client); - ceph_messenger_destroy(client->msgr); - ceph_destroy_options(client->options); kfree(client); --- linux-3.5.0.orig/net/ceph/crypto.c +++ linux-3.5.0/net/ceph/crypto.c @@ -466,6 +466,7 @@ struct ceph_crypto_key *ckey = key->payload.data; ceph_crypto_key_destroy(ckey); + kfree(ckey); } struct key_type key_type_ceph = { --- linux-3.5.0.orig/net/ceph/auth.c +++ linux-3.5.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-3.5.0.orig/net/ceph/msgpool.c +++ linux-3.5.0/net/ceph/msgpool.c @@ -12,7 +12,7 @@ struct ceph_msgpool *pool = arg; struct ceph_msg *msg; - msg = ceph_msg_new(0, pool->front_len, gfp_mask, true); + msg = ceph_msg_new(pool->type, pool->front_len, gfp_mask, true); if (!msg) { dout("msgpool_alloc %s failed\n", pool->name); } else { @@ -32,10 +32,11 @@ ceph_msg_put(msg); } -int ceph_msgpool_init(struct ceph_msgpool *pool, +int ceph_msgpool_init(struct ceph_msgpool *pool, int type, int front_len, int size, bool blocking, const char *name) { dout("msgpool %s init\n", name); + pool->type = type; pool->front_len = front_len; pool->pool = mempool_create(size, msgpool_alloc, msgpool_free, pool); if (!pool->pool) @@ -61,7 +62,7 @@ WARN_ON(1); /* try to alloc a fresh message */ - return ceph_msg_new(0, front_len, GFP_NOFS, false); + return ceph_msg_new(pool->type, front_len, GFP_NOFS, false); } msg = mempool_alloc(pool->pool, GFP_NOFS); --- linux-3.5.0.orig/net/ceph/auth_x.h +++ linux-3.5.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-3.5.0.orig/net/iucv/af_iucv.c +++ linux-3.5.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-3.5.0.orig/net/packet/af_packet.c +++ linux-3.5.0/net/packet/af_packet.c @@ -812,37 +812,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 = (char *)(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; - 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(); + 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); + + smp_wmb(); } /* @@ -933,10 +929,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, @@ -1280,6 +1272,14 @@ spin_unlock(&f->lock); } +bool match_fanout_group(struct packet_type *ptype, struct sock * sk) +{ + if (ptype->af_packet_priv == (void*)((struct packet_sock *)sk)->fanout) + return true; + + return false; +} + static int fanout_add(struct sock *sk, u16 id, u16 type_flags) { struct packet_sock *po = pkt_sk(sk); @@ -1332,6 +1332,7 @@ match->prot_hook.dev = po->prot_hook.dev; match->prot_hook.func = packet_rcv_fanout; match->prot_hook.af_packet_priv = match; + match->prot_hook.id_match = match_fanout_group; dev_add_pack(&match->prot_hook); list_add(&match->list, &fanout_list); } @@ -1943,7 +1944,6 @@ if (likely(po->tx_ring.pg_vec)) { ph = skb_shinfo(skb)->destructor_arg; - BUG_ON(__packet_get_status(po, ph) != TP_STATUS_SENDING); BUG_ON(atomic_read(&po->tx_ring.pending) == 0); atomic_dec(&po->tx_ring.pending); __packet_set_status(po, ph, TP_STATUS_AVAILABLE); @@ -2442,13 +2442,15 @@ packet_flush_mclist(sk); - memset(&req_u, 0, sizeof(req_u)); - - if (po->rx_ring.pg_vec) + if (po->rx_ring.pg_vec) { + memset(&req_u, 0, sizeof(req_u)); packet_set_ring(sk, &req_u, 1, 0); + } - if (po->tx_ring.pg_vec) + if (po->tx_ring.pg_vec) { + memset(&req_u, 0, sizeof(req_u)); packet_set_ring(sk, &req_u, 1, 1); + } fanout_release(sk); @@ -2852,12 +2854,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-3.5.0.orig/net/nfc/llcp/llcp.c +++ linux-3.5.0/net/nfc/llcp/llcp.c @@ -990,7 +990,7 @@ local->remote_lto = LLCP_DEFAULT_LTO; local->remote_rw = LLCP_DEFAULT_RW; - list_add(&llcp_devices, &local->list); + list_add(&local->list, &llcp_devices); return 0; --- linux-3.5.0.orig/net/nfc/llcp/sock.c +++ linux-3.5.0/net/nfc/llcp/sock.c @@ -570,6 +570,8 @@ pr_debug("%p %zu\n", sk, len); + msg->msg_namelen = 0; + lock_sock(sk); if (sk->sk_state == LLCP_CLOSED && --- linux-3.5.0.orig/net/atm/common.c +++ linux-3.5.0/net/atm/common.c @@ -520,6 +520,8 @@ struct sk_buff *skb; int copied, error = -EINVAL; + msg->msg_namelen = 0; + if (sock->state != SS_CONNECTED) return -ENOTCONN; @@ -812,6 +814,7 @@ if (!vcc->dev || !test_bit(ATM_VF_ADDR, &vcc->flags)) return -ENOTCONN; + memset(&pvc, 0, sizeof(pvc)); pvc.sap_family = AF_ATMPVC; pvc.sap_addr.itf = vcc->dev->number; pvc.sap_addr.vpi = vcc->vpi; --- linux-3.5.0.orig/net/atm/pvc.c +++ linux-3.5.0/net/atm/pvc.c @@ -95,6 +95,7 @@ return -ENOTCONN; *sockaddr_len = sizeof(struct sockaddr_atmpvc); addr = (struct sockaddr_atmpvc *)sockaddr; + memset(addr, 0, sizeof(*addr)); addr->sap_family = AF_ATMPVC; addr->sap_addr.itf = vcc->dev->number; addr->sap_addr.vpi = vcc->vpi; --- linux-3.5.0.orig/net/caif/caif_socket.c +++ linux-3.5.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-3.5.0.orig/net/ipv6/udp_impl.h +++ linux-3.5.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-3.5.0.orig/net/ipv6/ip6_fib.c +++ linux-3.5.0/net/ipv6/ip6_fib.c @@ -818,6 +818,10 @@ offsetof(struct rt6_info, rt6i_src), allow_create, replace_required); + if (IS_ERR(sn)) { + err = PTR_ERR(sn); + sn = NULL; + } if (!sn) { /* If it is failed, discard just allocated root, and then (in st_failure) stale node --- linux-3.5.0.orig/net/ipv6/route.c +++ linux-3.5.0/net/ipv6/route.c @@ -205,7 +205,7 @@ }; static const u32 ip6_template_metrics[RTAX_MAX] = { - [RTAX_HOPLIMIT - 1] = 255, + [RTAX_HOPLIMIT - 1] = 0, }; static struct rt6_info ip6_null_entry_template = { @@ -846,7 +846,8 @@ dst_hold(&rt->dst); read_unlock_bh(&table->tb6_lock); - if (!dst_get_neighbour_noref_raw(&rt->dst) && !(rt->rt6i_flags & RTF_NONEXTHOP)) + if (!dst_get_neighbour_noref_raw(&rt->dst) && + !(rt->rt6i_flags & (RTF_NONEXTHOP | RTF_LOCAL))) nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr); else if (!(rt->dst.flags & DST_HOST)) nrt = rt6_alloc_clone(rt, &fl6->daddr); @@ -1135,7 +1136,7 @@ rt->rt6i_dst.addr = fl6->daddr; rt->rt6i_dst.plen = 128; rt->rt6i_idev = idev; - dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 255); + dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 0); spin_lock_bh(&icmp6_dst_lock); rt->dst.next = icmp6_dst_gc_list; @@ -1485,17 +1486,18 @@ struct fib6_table *table; struct net *net = dev_net(rt->dst.dev); - if (rt == net->ipv6.ip6_null_entry) - return -ENOENT; + if (rt == net->ipv6.ip6_null_entry) { + err = -ENOENT; + goto out; + } table = rt->rt6i_table; write_lock_bh(&table->tb6_lock); - err = fib6_del(rt, info); - dst_release(&rt->dst); - write_unlock_bh(&table->tb6_lock); +out: + dst_release(&rt->dst); return err; } @@ -1969,7 +1971,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-3.5.0.orig/net/ipv6/ip6_input.c +++ linux-3.5.0/net/ipv6/ip6_input.c @@ -111,6 +111,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 @@ -266,7 +287,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-3.5.0.orig/net/ipv6/ip6_output.c +++ linux-3.5.0/net/ipv6/ip6_output.c @@ -1242,7 +1242,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; @@ -1293,10 +1293,10 @@ cork->length = 0; sk->sk_sndmsg_page = NULL; sk->sk_sndmsg_off = 0; - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; + exthdrlen = (opt ? opt->opt_flen : 0); length += exthdrlen; transhdrlen += exthdrlen; - dst_exthdrlen = rt->dst.header_len; + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; } else { rt = (struct rt6_info *)cork->dst; fl6 = &inet->cork.fl.u.ip6; --- linux-3.5.0.orig/net/ipv6/udp.c +++ linux-3.5.0/net/ipv6/udp.c @@ -1499,6 +1499,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 = { @@ -1529,7 +1540,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-3.5.0.orig/net/ipv6/ipv6_sockglue.c +++ linux-3.5.0/net/ipv6/ipv6_sockglue.c @@ -827,6 +827,7 @@ if (val < 0 || val > 255) goto e_inval; np->min_hopcount = val; + retv = 0; break; case IPV6_DONTFRAG: np->dontfrag = valbool; --- linux-3.5.0.orig/net/ipv6/ndisc.c +++ linux-3.5.0/net/ipv6/ndisc.c @@ -580,7 +580,7 @@ { struct inet6_dev *idev; struct inet6_ifaddr *ifa; - struct in6_addr mcaddr; + struct in6_addr mcaddr = IN6ADDR_LINKLOCAL_ALLNODES_INIT; idev = in6_dev_get(dev); if (!idev) @@ -588,7 +588,6 @@ read_lock_bh(&idev->lock); list_for_each_entry(ifa, &idev->addr_list, if_list) { - addrconf_addr_solict_mult(&ifa->addr, &mcaddr); ndisc_send_na(dev, NULL, &mcaddr, &ifa->addr, /*router=*/ !!idev->cnf.forwarding, /*solicited=*/ false, /*override=*/ true, --- linux-3.5.0.orig/net/ipv6/reassembly.c +++ linux-3.5.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 @@ -241,9 +244,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); } @@ -382,8 +386,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-3.5.0.orig/net/ipv6/xfrm6_policy.c +++ linux-3.5.0/net/ipv6/xfrm6_policy.c @@ -96,8 +96,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; + } xdst->u.rt6.rt6i_peer = rt->rt6i_peer; if (rt->rt6i_peer) --- linux-3.5.0.orig/net/ipv6/raw.c +++ linux-3.5.0/net/ipv6/raw.c @@ -107,21 +107,20 @@ * 0 - deliver * 1 - block */ -static __inline__ int icmpv6_filter(struct sock *sk, struct sk_buff *skb) +static int icmpv6_filter(const struct sock *sk, const struct sk_buff *skb) { - struct icmp6hdr *icmph; - struct raw6_sock *rp = raw6_sk(sk); + struct icmp6hdr *_hdr; + const struct icmp6hdr *hdr; - if (pskb_may_pull(skb, sizeof(struct icmp6hdr))) { - __u32 *data = &rp->filter.data[0]; - int bit_nr; + hdr = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (hdr) { + const __u32 *data = &raw6_sk(sk)->filter.data[0]; + unsigned int type = hdr->icmp6_type; - icmph = (struct icmp6hdr *) skb->data; - bit_nr = icmph->icmp6_type; - - return (data[bit_nr >> 5] & (1 << (bit_nr & 31))) != 0; + return (data[type >> 5] & (1U << (type & 31))) != 0; } - return 0; + return 1; } #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) --- linux-3.5.0.orig/net/ipv6/udplite.c +++ linux-3.5.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-3.5.0.orig/net/ipv6/addrconf.c +++ linux-3.5.0/net/ipv6/addrconf.c @@ -493,8 +493,7 @@ struct net_device *dev; struct inet6_dev *idev; - rcu_read_lock(); - for_each_netdev_rcu(net, dev) { + for_each_netdev(net, dev) { idev = __in6_dev_get(dev); if (idev) { int changed = (!idev->cnf.forwarding) ^ (!newf); @@ -503,7 +502,6 @@ dev_forward_change(idev); } } - rcu_read_unlock(); } static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf) @@ -795,10 +793,16 @@ struct in6_addr prefix; struct rt6_info *rt; struct net *net = dev_net(ifp->idev->dev); + struct flowi6 fl6 = {}; + ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len); - rt = rt6_lookup(net, &prefix, NULL, ifp->idev->dev->ifindex, 1); + fl6.flowi6_oif = ifp->idev->dev->ifindex; + fl6.daddr = prefix; + rt = (struct rt6_info *)ip6_route_lookup(net, &fl6, + RT6_LOOKUP_F_IFACE); - if (rt && addrconf_is_prefix_route(rt)) { + if (rt != net->ipv6.ip6_null_entry && + addrconf_is_prefix_route(rt)) { if (onlink == 0) { ip6_del_rt(rt); rt = NULL; @@ -1737,7 +1741,7 @@ continue; if ((rt->rt6i_flags & flags) != flags) continue; - if ((noflags != 0) && ((rt->rt6i_flags & flags) != 0)) + if ((rt->rt6i_flags & noflags) != 0) continue; dst_hold(&rt->dst); break; @@ -2398,6 +2402,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 */ @@ -2409,6 +2416,32 @@ } 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; + + 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) @@ -3089,14 +3122,15 @@ struct hlist_node *n; hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; /* sync with offset */ if (p < state->offset) { p++; continue; } state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } /* prepare for next bucket */ @@ -3114,18 +3148,20 @@ struct hlist_node *n = &ifa->addr_lst; hlist_for_each_entry_continue_rcu_bh(ifa, n, addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } while (++state->bucket < IN6_ADDR_HSIZE) { state->offset = 0; hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } } @@ -4360,6 +4396,84 @@ return ret; } +#ifdef CONFIG_IPV6_PRIVACY +static void dev_tempaddr_change(struct inet6_dev *idev) +{ + if (!idev || !idev->dev) + return; + + if (!idev->cnf.disable_ipv6) { + /* If ipv6 is enabled, try to bring down and back up the + * interface to get new temporary addresses created + */ + addrconf_notify(NULL, NETDEV_DOWN, idev->dev); + addrconf_notify(NULL, NETDEV_UP, idev->dev); + } +} + +static void addrconf_tempaddr_change(struct net *net, __s32 newf) +{ + struct net_device *dev; + struct inet6_dev *idev; + + rcu_read_lock(); + for_each_netdev_rcu(net, dev) { + idev = __in6_dev_get(dev); + if (idev) { + int changed = (!idev->cnf.use_tempaddr) ^ (!newf); + idev->cnf.use_tempaddr = newf; + if (changed) + dev_tempaddr_change(idev); + } + } + rcu_read_unlock(); +} + +static int addrconf_use_tempaddr(struct ctl_table *table, int *p, int old) +{ + struct net *net; + + net = (struct net *)table->extra2; + + if (p == &net->ipv6.devconf_dflt->use_tempaddr) + return 0; + + if (!rtnl_trylock()) { + /* Restore the original values before restarting */ + *p = old; + return restart_syscall(); + } + + if (p == &net->ipv6.devconf_all->use_tempaddr) { + __s32 newf = net->ipv6.devconf_all->use_tempaddr; + net->ipv6.devconf_dflt->use_tempaddr = newf; + addrconf_tempaddr_change(net, newf); + } else if ((!*p) ^ (!old)) + dev_tempaddr_change((struct inet6_dev *)table->extra1); + + rtnl_unlock(); + return 0; +} + +static +int addrconf_sysctl_tempaddr(ctl_table *ctl, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + int *valp = ctl->data; + int val = *valp; + loff_t pos = *ppos; + int ret; + + ret = proc_dointvec(ctl, write, buffer, lenp, ppos); + + if (write) + ret = addrconf_use_tempaddr(ctl, valp, val); + if (ret) + *ppos = pos; + return ret; +} +#endif + static struct addrconf_sysctl_table { struct ctl_table_header *sysctl_header; @@ -4450,7 +4564,7 @@ .data = &ipv6_devconf.use_tempaddr, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = addrconf_sysctl_tempaddr, }, { .procname = "temp_valid_lft", @@ -4651,26 +4765,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-3.5.0.orig/net/ipv6/mip6.c +++ linux-3.5.0/net/ipv6/mip6.c @@ -86,28 +86,30 @@ static int mip6_mh_filter(struct sock *sk, struct sk_buff *skb) { - struct ip6_mh *mh; + struct ip6_mh _hdr; + const struct ip6_mh *mh; - if (!pskb_may_pull(skb, (skb_transport_offset(skb)) + 8) || - !pskb_may_pull(skb, (skb_transport_offset(skb) + - ((skb_transport_header(skb)[1] + 1) << 3)))) + mh = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (!mh) return -1; - mh = (struct ip6_mh *)skb_transport_header(skb); + if (((mh->ip6mh_hdrlen + 1) << 3) > skb->len) + return -1; if (mh->ip6mh_hdrlen < mip6_mh_len(mh->ip6mh_type)) { LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH message too short: %d vs >=%d\n", mh->ip6mh_hdrlen, mip6_mh_len(mh->ip6mh_type)); - mip6_param_prob(skb, 0, ((&mh->ip6mh_hdrlen) - - skb_network_header(skb))); + mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_hdrlen) + + skb_network_header_len(skb)); return -1; } if (mh->ip6mh_proto != IPPROTO_NONE) { LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH invalid payload proto = %d\n", mh->ip6mh_proto); - mip6_param_prob(skb, 0, ((&mh->ip6mh_proto) - - skb_network_header(skb))); + mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_proto) + + skb_network_header_len(skb)); return -1; } --- linux-3.5.0.orig/net/ipv6/tcp_ipv6.c +++ linux-3.5.0/net/ipv6/tcp_ipv6.c @@ -896,7 +896,8 @@ __tcp_v6_send_check(buff, &fl6.saddr, &fl6.daddr); fl6.flowi6_proto = IPPROTO_TCP; - fl6.flowi6_oif = inet6_iif(skb); + if (ipv6_addr_type(&fl6.daddr) & IPV6_ADDR_LINKLOCAL) + fl6.flowi6_oif = inet6_iif(skb); fl6.fl6_dport = t1->dest; fl6.fl6_sport = t1->source; security_skb_classify_flow(skb, flowi6_to_flowi(&fl6)); @@ -1412,7 +1413,8 @@ #endif if (__inet_inherit_port(sk, newsk) < 0) { - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + tcp_done(newsk); goto out; } __inet6_hash(newsk, NULL); @@ -2032,6 +2034,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, @@ -2073,6 +2086,7 @@ #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM .proto_cgroup = tcp_proto_cgroup, #endif + .clear_sk = tcp_v6_clear_sk, }; static const struct inet6_protocol tcpv6_protocol = { --- linux-3.5.0.orig/net/ipv6/netfilter/nf_conntrack_reasm.c +++ linux-3.5.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 @@ -176,13 +178,12 @@ q = inet_frag_find(&nf_init_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 nf_ct_frag6_queue, q); - -oom: - return NULL; } --- linux-3.5.0.orig/net/netfilter/nf_conntrack_expect.c +++ linux-3.5.0/net/netfilter/nf_conntrack_expect.c @@ -361,23 +361,6 @@ } } -static inline int refresh_timer(struct nf_conntrack_expect *i) -{ - struct nf_conn_help *master_help = nfct_help(i->master); - const struct nf_conntrack_expect_policy *p; - - if (!del_timer(&i->timeout)) - return 0; - - p = &rcu_dereference_protected( - master_help->helper, - lockdep_is_held(&nf_conntrack_lock) - )->expect_policy[i->class]; - i->timeout.expires = jiffies + p->timeout * HZ; - add_timer(&i->timeout); - return 1; -} - static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect) { const struct nf_conntrack_expect_policy *p; @@ -386,7 +369,7 @@ struct nf_conn_help *master_help = nfct_help(master); struct nf_conntrack_helper *helper; struct net *net = nf_ct_exp_net(expect); - struct hlist_node *n; + struct hlist_node *n, *next; unsigned int h; int ret = 1; @@ -395,12 +378,12 @@ goto out; } h = nf_ct_expect_dst_hash(&expect->tuple); - hlist_for_each_entry(i, n, &net->ct.expect_hash[h], hnode) { + hlist_for_each_entry_safe(i, n, next, &net->ct.expect_hash[h], hnode) { if (expect_matches(i, expect)) { - /* Refresh timer: if it's dying, ignore.. */ - if (refresh_timer(i)) { - ret = 0; - goto out; + if (del_timer(&i->timeout)) { + nf_ct_unlink_expect(i); + nf_ct_expect_put(i); + break; } } else if (expect_clash(i, expect)) { ret = -EBUSY; --- linux-3.5.0.orig/net/netfilter/nf_conntrack_proto_tcp.c +++ linux-3.5.0/net/netfilter/nf_conntrack_proto_tcp.c @@ -158,21 +158,18 @@ * sCL -> sSS */ /* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2 */ -/*synack*/ { sIV, sIV, sIG, sIG, sIG, sIG, sIG, sIG, sIG, sSR }, +/*synack*/ { sIV, sIV, sSR, sIV, sIV, sIV, sIV, sIV, sIV, sSR }, /* * sNO -> sIV Too late and no reason to do anything * sSS -> sIV Client can't send SYN and then SYN/ACK * sS2 -> sSR SYN/ACK sent to SYN2 in simultaneous open - * sSR -> sIG - * sES -> sIG Error: SYNs in window outside the SYN_SENT state - * are errors. Receiver will reply with RST - * and close the connection. - * Or we are not in sync and hold a dead connection. - * sFW -> sIG - * sCW -> sIG - * sLA -> sIG - * sTW -> sIG - * sCL -> sIG + * sSR -> sSR Late retransmitted SYN/ACK in simultaneous open + * sES -> sIV Invalid SYN/ACK packets sent by the client + * sFW -> sIV + * sCW -> sIV + * sLA -> sIV + * sTW -> sIV + * sCL -> sIV */ /* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2 */ /*fin*/ { sIV, sIV, sFW, sFW, sLA, sLA, sLA, sTW, sCL, sIV }, @@ -627,15 +624,9 @@ ack = sack = receiver->td_end; } - if (seq == end - && (!tcph->rst - || (seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT))) + if (tcph->rst && seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT) /* - * Packets contains no data: we assume it is valid - * and check the ack value only. - * However RST segments are always validated by their - * SEQ number, except when seq == 0 (reset sent answering - * SYN. + * RST sent answering SYN. */ seq = end = sender->td_end; --- linux-3.5.0.orig/net/netfilter/xt_limit.c +++ linux-3.5.0/net/netfilter/xt_limit.c @@ -117,11 +117,11 @@ /* For SMP, we only want to use one set of state. */ r->master = priv; + /* User avg in seconds * XT_LIMIT_SCALE: convert to jiffies * + 128. */ + priv->prev = jiffies; + priv->credit = user2credits(r->avg * r->burst); /* Credits full. */ if (r->cost == 0) { - /* User avg in seconds * XT_LIMIT_SCALE: convert to jiffies * - 128. */ - priv->prev = jiffies; - priv->credit = user2credits(r->avg * r->burst); /* Credits full. */ r->credit_cap = priv->credit; /* Credits full. */ r->cost = user2credits(r->avg); } --- linux-3.5.0.orig/net/netfilter/nf_conntrack_core.c +++ linux-3.5.0/net/netfilter/nf_conntrack_core.c @@ -249,12 +249,15 @@ { struct nf_conn *ct = (void *)ul_conntrack; struct net *net = nf_ct_net(ct); + struct nf_conntrack_ecache *ecache = nf_ct_ecache_find(ct); + + BUG_ON(ecache == NULL); if (nf_conntrack_event(IPCT_DESTROY, ct) < 0) { /* bad luck, let's retry again */ - ct->timeout.expires = jiffies + + ecache->timeout.expires = jiffies + (random32() % net->ct.sysctl_events_retry_timeout); - add_timer(&ct->timeout); + add_timer(&ecache->timeout); return; } /* we've got the event delivered, now it's dying */ @@ -268,6 +271,9 @@ void nf_ct_insert_dying_list(struct nf_conn *ct) { struct net *net = nf_ct_net(ct); + struct nf_conntrack_ecache *ecache = nf_ct_ecache_find(ct); + + BUG_ON(ecache == NULL); /* add this conntrack to the dying list */ spin_lock_bh(&nf_conntrack_lock); @@ -275,10 +281,10 @@ &net->ct.dying); spin_unlock_bh(&nf_conntrack_lock); /* set a new timer to retry event delivery */ - setup_timer(&ct->timeout, death_by_event, (unsigned long)ct); - ct->timeout.expires = jiffies + + setup_timer(&ecache->timeout, death_by_event, (unsigned long)ct); + ecache->timeout.expires = jiffies + (random32() % net->ct.sysctl_events_retry_timeout); - add_timer(&ct->timeout); + add_timer(&ecache->timeout); } EXPORT_SYMBOL_GPL(nf_ct_insert_dying_list); --- linux-3.5.0.orig/net/netfilter/nfnetlink_log.c +++ linux-3.5.0/net/netfilter/nfnetlink_log.c @@ -476,7 +476,7 @@ } if (indev && skb_mac_header_was_set(skb)) { - if (nla_put_be32(inst->skb, NFULA_HWTYPE, htons(skb->dev->type)) || + if (nla_put_be16(inst->skb, NFULA_HWTYPE, htons(skb->dev->type)) || nla_put_be16(inst->skb, NFULA_HWLEN, htons(skb->dev->hard_header_len)) || nla_put(inst->skb, NFULA_HWHEADER, skb->dev->hard_header_len, --- linux-3.5.0.orig/net/netfilter/ipvs/ip_vs_ctl.c +++ linux-3.5.0/net/netfilter/ipvs/ip_vs_ctl.c @@ -2759,6 +2759,7 @@ { struct ip_vs_timeout_user t; + memset(&t, 0, sizeof(t)); __ip_vs_get_timeouts(net, &t); if (copy_to_user(user, &t, sizeof(t)) != 0) ret = -EFAULT; --- linux-3.5.0.orig/net/netfilter/ipvs/ip_vs_pe_sip.c +++ linux-3.5.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-3.5.0.orig/net/netlink/af_netlink.c +++ linux-3.5.0/net/netlink/af_netlink.c @@ -136,6 +136,8 @@ static DEFINE_RWLOCK(nl_table_lock); static atomic_t nl_table_users = ATOMIC_INIT(0); +#define nl_deref_protected(X) rcu_dereference_protected(X, lockdep_is_held(&nl_table_lock)); + static ATOMIC_NOTIFIER_HEAD(netlink_chain); static inline u32 netlink_group_mask(u32 group) @@ -167,6 +169,8 @@ if (nlk->cb) { if (nlk->cb->done) nlk->cb->done(nlk->cb); + + module_put(nlk->cb->module); netlink_destroy_callback(nlk->cb); } @@ -341,6 +345,11 @@ struct hlist_node *node; unsigned long mask; unsigned int i; + struct listeners *listeners; + + listeners = nl_deref_protected(tbl->listeners); + if (!listeners) + return; for (i = 0; i < NLGRPLONGS(tbl->groups); i++) { mask = 0; @@ -348,7 +357,7 @@ if (i < NLGRPLONGS(nlk_sk(sk)->ngroups)) mask |= nlk_sk(sk)->groups[i]; } - tbl->listeners->masks[i] = mask; + listeners->masks[i] = mask; } /* this function is only called with the netlink table "grabbed", which * makes sure updates are visible before bind or setsockopt return. */ @@ -529,7 +538,11 @@ if (netlink_is_kernel(sk)) { BUG_ON(nl_table[sk->sk_protocol].registered == 0); if (--nl_table[sk->sk_protocol].registered == 0) { - kfree(nl_table[sk->sk_protocol].listeners); + struct listeners *old; + + old = nl_deref_protected(nl_table[sk->sk_protocol].listeners); + RCU_INIT_POINTER(nl_table[sk->sk_protocol].listeners, NULL); + kfree_rcu(old, rcu); nl_table[sk->sk_protocol].module = NULL; nl_table[sk->sk_protocol].registered = 0; } @@ -962,7 +975,7 @@ rcu_read_lock(); listeners = rcu_dereference(nl_table[sk->sk_protocol].listeners); - if (group - 1 < nl_table[sk->sk_protocol].groups) + if (listeners && group - 1 < nl_table[sk->sk_protocol].groups) res = test_bit(group - 1, listeners->masks); rcu_read_unlock(); @@ -1344,7 +1357,7 @@ if (NULL == siocb->scm) siocb->scm = &scm; - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, true); if (err < 0) return err; @@ -1355,7 +1368,8 @@ dst_pid = addr->nl_pid; dst_group = ffs(addr->nl_groups); err = -EPERM; - if (dst_group && !netlink_capable(sock, NL_NONROOT_SEND)) + if ((dst_group || dst_pid) && + !netlink_capable(sock, NL_NONROOT_SEND)) goto out; } else { dst_pid = nlk->dst_pid; @@ -1594,7 +1608,7 @@ new = kzalloc(sizeof(*new) + NLGRPSZ(groups), GFP_ATOMIC); if (!new) return -ENOMEM; - old = rcu_dereference_protected(tbl->listeners, 1); + old = nl_deref_protected(tbl->listeners); memcpy(new->masks, old->masks, NLGRPSZ(tbl->groups)); rcu_assign_pointer(tbl->listeners, new); @@ -1736,6 +1750,7 @@ nlk->cb = NULL; mutex_unlock(nlk->cb_mutex); + module_put(cb->module); netlink_consume_callback(cb); return 0; @@ -1745,9 +1760,9 @@ return err; } -int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, - const struct nlmsghdr *nlh, - struct netlink_dump_control *control) +int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control) { struct netlink_callback *cb; struct sock *sk; @@ -1762,6 +1777,7 @@ cb->done = control->done; cb->nlh = nlh; cb->data = control->data; + cb->module = control->module; cb->min_dump_alloc = control->min_dump_alloc; atomic_inc(&skb->users); cb->skb = skb; @@ -1772,19 +1788,28 @@ return -ECONNREFUSED; } nlk = nlk_sk(sk); - /* A dump is in progress... */ + mutex_lock(nlk->cb_mutex); + /* A dump is in progress... */ if (nlk->cb) { mutex_unlock(nlk->cb_mutex); netlink_destroy_callback(cb); - sock_put(sk); - return -EBUSY; + ret = -EBUSY; + goto out; } + /* add reference of module which cb->dump belongs to */ + if (!try_module_get(cb->module)) { + mutex_unlock(nlk->cb_mutex); + netlink_destroy_callback(cb); + ret = -EPROTONOSUPPORT; + goto out; + } + nlk->cb = cb; mutex_unlock(nlk->cb_mutex); ret = netlink_dump(sk); - +out: sock_put(sk); if (ret) @@ -1795,7 +1820,7 @@ */ return -EINTR; } -EXPORT_SYMBOL(netlink_dump_start); +EXPORT_SYMBOL(__netlink_dump_start); void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err) { @@ -2124,6 +2149,7 @@ rcu_assign_pointer(nl_table[NETLINK_USERSOCK].listeners, listeners); nl_table[NETLINK_USERSOCK].module = THIS_MODULE; nl_table[NETLINK_USERSOCK].registered = 1; + nl_table[NETLINK_USERSOCK].nl_nonroot = NL_NONROOT_SEND; netlink_table_ungrab(); } --- linux-3.5.0.orig/net/netlink/genetlink.c +++ linux-3.5.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-3.5.0.orig/net/unix/af_unix.c +++ linux-3.5.0/net/unix/af_unix.c @@ -375,7 +375,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; @@ -444,8 +444,6 @@ if (unix_tot_inflight) unix_gc(); /* Garbage collect fds */ - - return 0; } static void init_peercred(struct sock *sk) @@ -695,9 +693,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) @@ -1448,7 +1447,7 @@ if (NULL == siocb->scm) siocb->scm = &tmp_scm; wait_for_unix_gc(); - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, false); if (err < 0) return err; @@ -1617,7 +1616,7 @@ if (NULL == siocb->scm) siocb->scm = &tmp_scm; wait_for_unix_gc(); - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, false); if (err < 0) return err; @@ -1997,7 +1996,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-3.5.0.orig/net/8021q/vlan_dev.c +++ linux-3.5.0/net/8021q/vlan_dev.c @@ -598,7 +598,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-3.5.0.orig/net/8021q/vlan_core.c +++ linux-3.5.0/net/8021q/vlan_core.c @@ -5,7 +5,7 @@ #include #include "vlan.h" -bool vlan_do_receive(struct sk_buff **skbp, bool last_handler) +bool vlan_do_receive(struct sk_buff **skbp) { struct sk_buff *skb = *skbp; u16 vlan_id = skb->vlan_tci & VLAN_VID_MASK; @@ -13,14 +13,8 @@ struct vlan_pcpu_stats *rx_stats; vlan_dev = vlan_find_dev(skb->dev, vlan_id); - if (!vlan_dev) { - /* Only the last call to vlan_do_receive() should change - * pkt_type to PACKET_OTHERHOST - */ - if (vlan_id && last_handler) - skb->pkt_type = PACKET_OTHERHOST; + if (!vlan_dev) return false; - } skb = *skbp = skb_share_check(skb, GFP_ATOMIC); if (unlikely(!skb)) @@ -105,7 +99,6 @@ return NULL; memmove(skb->data - ETH_HLEN, skb->data - VLAN_ETH_HLEN, 2 * ETH_ALEN); skb->mac_header += VLAN_HLEN; - skb_reset_mac_len(skb); return skb; } @@ -139,6 +132,8 @@ skb_reset_network_header(skb); skb_reset_transport_header(skb); + skb_reset_mac_len(skb); + return skb; err_free: --- linux-3.5.0.orig/net/8021q/vlan.c +++ linux-3.5.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-3.5.0.orig/net/llc/af_llc.c +++ linux-3.5.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)) @@ -969,14 +971,13 @@ struct sockaddr_llc sllc; struct sock *sk = sock->sk; struct llc_sock *llc = llc_sk(sk); - int rc = 0; + int rc = -EBADF; memset(&sllc, 0, sizeof(sllc)); lock_sock(sk); if (sock_flag(sk, SOCK_ZAPPED)) goto out; *uaddrlen = sizeof(sllc); - memset(uaddr, 0, *uaddrlen); if (peer) { rc = -ENOTCONN; if (sk->sk_state != TCP_ESTABLISHED) --- linux-3.5.0.orig/net/netlabel/netlabel_unlabeled.c +++ linux-3.5.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-3.5.0.orig/net/netlabel/netlabel_domainhash.c +++ linux-3.5.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-3.5.0.orig/net/sctp/endpointola.c +++ linux-3.5.0/net/sctp/endpointola.c @@ -248,6 +248,8 @@ /* Final destructor for endpoint. */ static void sctp_endpoint_destroy(struct sctp_endpoint *ep) { + int i; + SCTP_ASSERT(ep->base.dead, "Endpoint is not dead", return); /* Free up the HMAC transform. */ @@ -270,6 +272,9 @@ sctp_inq_free(&ep->base.inqueue); sctp_bind_addr_free(&ep->base.bind_addr); + for (i = 0; i < SCTP_HOW_MANY_SECRETS; ++i) + memset(&ep->secret_key[i], 0, SCTP_SECRET_SIZE); + /* Remove and free the port */ if (sctp_sk(ep->base.sk)->bind_hash) sctp_put_port(ep->base.sk); --- linux-3.5.0.orig/net/sctp/sm_sideeffect.c +++ linux-3.5.0/net/sctp/sm_sideeffect.c @@ -1609,8 +1609,9 @@ asoc->outqueue.outstanding_bytes; sackh.num_gap_ack_blocks = 0; sackh.num_dup_tsns = 0; + chunk->subh.sack_hdr = &sackh; sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, - SCTP_SACKH(&sackh)); + SCTP_CHUNK(chunk)); break; case SCTP_CMD_DISCARD_PACKET: --- linux-3.5.0.orig/net/sctp/chunk.c +++ linux-3.5.0/net/sctp/chunk.c @@ -183,7 +183,7 @@ msg = sctp_datamsg_new(GFP_KERNEL); if (!msg) - return NULL; + return ERR_PTR(-ENOMEM); /* Note: Calculate this outside of the loop, so that all fragments * have the same expiration. @@ -280,11 +280,14 @@ chunk = sctp_make_datafrag_empty(asoc, sinfo, len, frag, 0); - if (!chunk) + if (!chunk) { + err = -ENOMEM; goto errout; + } + err = sctp_user_addto_chunk(chunk, offset, len, msgh->msg_iov); if (err < 0) - goto errout; + goto errout_chunk_free; offset += len; @@ -315,8 +318,10 @@ chunk = sctp_make_datafrag_empty(asoc, sinfo, over, frag, 0); - if (!chunk) + if (!chunk) { + err = -ENOMEM; goto errout; + } err = sctp_user_addto_chunk(chunk, offset, over,msgh->msg_iov); @@ -324,7 +329,7 @@ __skb_pull(chunk->skb, (__u8 *)chunk->chunk_hdr - (__u8 *)chunk->skb->data); if (err < 0) - goto errout; + goto errout_chunk_free; sctp_datamsg_assign(msg, chunk); list_add_tail(&chunk->frag_list, &msg->chunks); @@ -332,6 +337,9 @@ return msg; +errout_chunk_free: + sctp_chunk_free(chunk); + errout: list_for_each_safe(pos, temp, &msg->chunks) { list_del_init(pos); @@ -339,7 +347,7 @@ sctp_chunk_free(chunk); } sctp_datamsg_put(msg); - return NULL; + return ERR_PTR(err); } /* Check whether this message has expired. */ --- linux-3.5.0.orig/net/sctp/sm_statefuns.c +++ linux-3.5.0/net/sctp/sm_statefuns.c @@ -2042,7 +2042,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-3.5.0.orig/net/sctp/associola.c +++ linux-3.5.0/net/sctp/associola.c @@ -1051,7 +1051,7 @@ transports) { if (transport == active) - break; + continue; list_for_each_entry(chunk, &transport->transmitted, transmitted_list) { if (key == chunk->subh.data_hdr->tsn) { --- linux-3.5.0.orig/net/sctp/output.c +++ linux-3.5.0/net/sctp/output.c @@ -339,6 +339,25 @@ return retval; } +static void sctp_packet_release_owner(struct sk_buff *skb) +{ + sk_free(skb->sk); +} + +static void sctp_packet_set_owner_w(struct sk_buff *skb, struct sock *sk) +{ + skb_orphan(skb); + skb->sk = sk; + skb->destructor = sctp_packet_release_owner; + + /* + * The data chunks have already been accounted for in sctp_sendmsg(), + * therefore only reserve a single byte to keep socket around until + * the packet has been transmitted. + */ + atomic_inc(&sk->sk_wmem_alloc); +} + /* All packets are sent to the network through this function from * sctp_outq_tail(). * @@ -380,7 +399,7 @@ /* Set the owning socket so that we know where to get the * destination IP address. */ - skb_set_owner_w(nskb, sk); + sctp_packet_set_owner_w(nskb, sk); if (!sctp_transport_dst_check(tp)) { sctp_transport_route(tp, NULL, sctp_sk(sk)); --- linux-3.5.0.orig/net/sctp/socket.c +++ linux-3.5.0/net/sctp/socket.c @@ -1908,8 +1908,8 @@ /* Break the message into multiple chunks of maximum size. */ datamsg = sctp_datamsg_from_user(asoc, sinfo, msg, msg_len); - if (!datamsg) { - err = -ENOMEM; + if (IS_ERR(datamsg)) { + err = PTR_ERR(datamsg); goto out_free; } @@ -3375,7 +3375,7 @@ ret = sctp_auth_set_key(sctp_sk(sk)->ep, asoc, authkey); out: - kfree(authkey); + kzfree(authkey); return ret; } @@ -3929,6 +3929,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); --- linux-3.5.0.orig/net/sctp/outqueue.c +++ linux-3.5.0/net/sctp/outqueue.c @@ -205,6 +205,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); @@ -212,18 +214,12 @@ 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. */ -void sctp_outq_teardown(struct sctp_outq *q) +static void __sctp_outq_teardown(struct sctp_outq *q) { struct sctp_transport *transport; struct list_head *lchunk, *temp; @@ -276,8 +272,6 @@ sctp_chunk_free(chunk); } - q->error = 0; - /* Throw away any leftover control chunks. */ list_for_each_entry_safe(chunk, tmp, &q->control_chunk_list, list) { list_del_init(&chunk->list); @@ -285,11 +279,17 @@ } } +void sctp_outq_teardown(struct sctp_outq *q) +{ + __sctp_outq_teardown(q); + sctp_outq_init(q->asoc, q); +} + /* Free the outqueue structure and any related pending chunks. */ void sctp_outq_free(struct sctp_outq *q) { /* Throw away leftover chunks. */ - sctp_outq_teardown(q); + __sctp_outq_teardown(q); /* If we were kmalloc()'d, free the memory. */ if (q->malloced) --- linux-3.5.0.orig/net/sctp/auth.c +++ linux-3.5.0/net/sctp/auth.c @@ -71,7 +71,7 @@ return; if (atomic_dec_and_test(&key->refcnt)) { - kfree(key); + kzfree(key); SCTP_DBG_OBJCNT_DEC(keys); } } --- linux-3.5.0.orig/net/netrom/af_netrom.c +++ linux-3.5.0/net/netrom/af_netrom.c @@ -1169,9 +1169,15 @@ msg->msg_flags |= MSG_TRUNC; } - skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); + er = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); + if (er < 0) { + skb_free_datagram(sk, skb); + release_sock(sk); + return er; + } if (sax != NULL) { + 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-3.5.0.orig/net/can/bcm.c +++ linux-3.5.0/net/can/bcm.c @@ -1084,6 +1084,9 @@ op->sk = sk; op->ifindex = ifindex; + /* ifindex for timeout events w/o previous frame reception */ + op->rx_ifindex = ifindex; + /* initialize uninitialized (kzalloc) structure */ hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); op->timer.function = bcm_rx_timeout_handler; --- linux-3.5.0.orig/net/can/gw.c +++ linux-3.5.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); } } } @@ -850,7 +850,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); } } @@ -903,7 +903,7 @@ hlist_del(&gwj->list); cgw_unregister_filter(gwj); - kfree(gwj); + kmem_cache_free(cgw_cache, gwj); err = 0; break; } --- linux-3.5.0.orig/net/dcb/dcbnl.c +++ linux-3.5.0/net/dcb/dcbnl.c @@ -337,6 +337,7 @@ dcb->dcb_family = AF_UNSPEC; dcb->cmd = DCB_CMD_GPERM_HWADDR; + memset(perm_addr, 0, sizeof(perm_addr)); netdev->dcbnl_ops->getpermhwaddr(netdev, perm_addr); ret = nla_put(dcbnl_skb, DCB_ATTR_PERM_HWADDR, sizeof(perm_addr), @@ -1243,6 +1244,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)) @@ -1251,6 +1253,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, @@ -1262,6 +1265,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)) @@ -1295,6 +1299,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)) @@ -1303,6 +1308,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)) @@ -1487,6 +1493,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)) @@ -1495,6 +1502,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-3.5.0.orig/net/tipc/socket.c +++ linux-3.5.0/net/tipc/socket.c @@ -802,6 +802,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 */ @@ -916,6 +917,9 @@ goto exit; } + /* will be updated in set_orig_addr() if needed */ + m->msg_namelen = 0; + timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); restart: @@ -1032,6 +1036,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-3.5.0.orig/net/bluetooth/hci_sock.c +++ linux-3.5.0/net/bluetooth/hci_sock.c @@ -706,6 +706,7 @@ *addr_len = sizeof(*haddr); haddr->hci_family = AF_BLUETOOTH; haddr->hci_dev = hdev->id; + haddr->hci_channel= 0; release_sock(sk); return 0; @@ -1016,6 +1017,7 @@ { struct hci_filter *f = &hci_pi(sk)->filter; + memset(&uf, 0, sizeof(uf)); uf.type_mask = f->type_mask; uf.opcode = f->opcode; uf.event_mask[0] = *((u32 *) f->event_mask + 0); --- linux-3.5.0.orig/net/bluetooth/hci_core.c +++ linux-3.5.0/net/bluetooth/hci_core.c @@ -744,6 +744,8 @@ done: hci_req_unlock(hdev); hci_dev_put(hdev); + if (!ret && hdev->load_firmware) + hdev->load_firmware(hdev); return ret; } @@ -753,6 +755,8 @@ cancel_work_sync(&hdev->le_scan); + cancel_delayed_work(&hdev->power_off); + hci_req_cancel(hdev, ENODEV); hci_req_lock(hdev); @@ -1095,11 +1099,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, @@ -1798,6 +1806,8 @@ for (i = 0; i < NUM_REASSEMBLY; i++) kfree_skb(hdev->reassembly[i]); + cancel_work_sync(&hdev->power_on); + if (!test_bit(HCI_INIT, &hdev->flags) && !test_bit(HCI_SETUP, &hdev->dev_flags)) { hci_dev_lock(hdev); --- linux-3.5.0.orig/net/bluetooth/smp.c +++ linux-3.5.0/net/bluetooth/smp.c @@ -31,6 +31,8 @@ #define SMP_TIMEOUT msecs_to_jiffies(30000) +#define AUTH_REQ_MASK 0x07 + static inline void swap128(u8 src[16], u8 dst[16]) { int i; @@ -229,7 +231,7 @@ req->max_key_size = SMP_MAX_ENC_KEY_SIZE; req->init_key_dist = 0; req->resp_key_dist = dist_keys; - req->auth_req = authreq; + req->auth_req = (authreq & AUTH_REQ_MASK); return; } @@ -238,7 +240,7 @@ rsp->max_key_size = SMP_MAX_ENC_KEY_SIZE; rsp->init_key_dist = 0; rsp->resp_key_dist = req->resp_key_dist & dist_keys; - rsp->auth_req = authreq; + rsp->auth_req = (authreq & AUTH_REQ_MASK); } static u8 check_enc_key_size(struct l2cap_conn *conn, __u8 max_key_size) @@ -266,10 +268,10 @@ mgmt_auth_failed(conn->hcon->hdev, conn->dst, hcon->type, hcon->dst_type, reason); - if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) { - cancel_delayed_work_sync(&conn->security_timer); + cancel_delayed_work_sync(&conn->security_timer); + + if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) smp_chan_destroy(conn); - } } #define JUST_WORKS 0x00 @@ -756,9 +758,9 @@ return 0; } -int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level) +int smp_conn_security(struct hci_conn *hcon, __u8 sec_level) { - struct hci_conn *hcon = conn->hcon; + struct l2cap_conn *conn = hcon->l2cap_data; struct smp_chan *smp = conn->smp_chan; __u8 authreq; @@ -853,6 +855,19 @@ skb_pull(skb, sizeof(code)); + /* + * The SMP context must be initialized for all other PDUs except + * pairing and security requests. If we get any other PDU when + * not initialized simply disconnect (done if this function + * returns an error). + */ + if (code != SMP_CMD_PAIRING_REQ && code != SMP_CMD_SECURITY_REQ && + !conn->smp_chan) { + BT_ERR("Unexpected SMP command 0x%02x. Disconnecting.", code); + kfree_skb(skb); + return -ENOTSUPP; + } + switch (code) { case SMP_CMD_PAIRING_REQ: reason = smp_cmd_pairing_req(conn, skb); --- linux-3.5.0.orig/net/bluetooth/hci_event.c +++ linux-3.5.0/net/bluetooth/hci_event.c @@ -1375,6 +1375,9 @@ return false; e = hci_inquiry_cache_lookup_resolve(hdev, BDADDR_ANY, NAME_NEEDED); + if (!e) + return false; + if (hci_resolve_name(hdev, e) == 0) { e->name_state = NAME_PENDING; return true; @@ -1403,12 +1406,20 @@ return; e = hci_inquiry_cache_lookup_resolve(hdev, bdaddr, NAME_PENDING); - if (e) { + /* If the device was not found in a list of found devices names of which + * are pending. there is no need to continue resolving a next name as it + * will be done upon receiving another Remote Name Request Complete + * Event */ + if (!e) + return; + + list_del(&e->list); + if (name) { e->name_state = NAME_KNOWN; - list_del(&e->list); - if (name) - mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, - e->data.rssi, name, name_len); + mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, + e->data.rssi, name, name_len); + } else { + e->name_state = NAME_NOT_KNOWN; } if (hci_resolve_next_name(hdev)) @@ -1772,7 +1783,12 @@ if (conn->type == ACL_LINK) { conn->state = BT_CONFIG; hci_conn_hold(conn); - conn->disc_timeout = HCI_DISCONN_TIMEOUT; + + if (!conn->out && !hci_conn_ssp_enabled(conn) && + !hci_find_link_key(hdev, &ev->bdaddr)) + conn->disc_timeout = HCI_PAIRING_TIMEOUT; + else + conn->disc_timeout = HCI_DISCONN_TIMEOUT; } else conn->state = BT_CONNECTED; @@ -2377,7 +2393,7 @@ if (ev->opcode != HCI_OP_NOP) del_timer(&hdev->cmd_timer); - if (ev->ncmd) { + if (ev->ncmd && !test_bit(HCI_RESET, &hdev->flags)) { atomic_set(&hdev->cmd_cnt, 1); if (!skb_queue_empty(&hdev->cmd_q)) queue_work(hdev->workqueue, &hdev->cmd_work); --- linux-3.5.0.orig/net/bluetooth/sco.c +++ linux-3.5.0/net/bluetooth/sco.c @@ -378,6 +378,7 @@ sco_chan_del(sk, ECONNRESET); break; + case BT_CONNECT2: case BT_CONNECT: case BT_DISCONN: sco_chan_del(sk, ECONNRESET); --- linux-3.5.0.orig/net/bluetooth/l2cap_sock.c +++ linux-3.5.0/net/bluetooth/l2cap_sock.c @@ -246,6 +246,7 @@ BT_DBG("sock %p, sk %p", sock, sk); + memset(la, 0, sizeof(struct sockaddr_l2)); addr->sa_family = AF_BLUETOOTH; *len = sizeof(struct sockaddr_l2); @@ -595,7 +596,7 @@ break; } - if (smp_conn_security(conn, sec.level)) + if (smp_conn_security(conn->hcon, sec.level)) break; sk->sk_state = BT_CONFIG; chan->state = BT_CONFIG; --- linux-3.5.0.orig/net/bluetooth/mgmt.c +++ linux-3.5.0/net/bluetooth/mgmt.c @@ -323,7 +323,7 @@ struct hci_dev *d; size_t rp_len; u16 count; - int i, err; + int err; BT_DBG("sock %p", sk); @@ -341,17 +341,18 @@ return -ENOMEM; } - rp->num_controllers = cpu_to_le16(count); - - i = 0; + count = 0; list_for_each_entry(d, &hci_dev_list, list) { if (test_bit(HCI_SETUP, &d->dev_flags)) continue; - rp->index[i++] = cpu_to_le16(d->id); + rp->index[count++] = cpu_to_le16(d->id); BT_DBG("Added hci%u", d->id); } + rp->num_controllers = cpu_to_le16(count); + rp_len = sizeof(*rp) + (2 * count); + read_unlock(&hci_dev_list_lock); err = cmd_complete(sk, MGMT_INDEX_NONE, MGMT_OP_READ_INDEX_LIST, 0, rp, @@ -2879,6 +2880,22 @@ if (scan) hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan); + if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) { + u8 ssp = 1; + + hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp); + } + + if (test_bit(HCI_LE_ENABLED, &hdev->dev_flags)) { + struct hci_cp_write_le_host_supported cp; + + cp.le = 1; + cp.simul = !!(hdev->features[6] & LMP_SIMUL_LE_BR); + + hci_send_cmd(hdev, HCI_OP_WRITE_LE_HOST_SUPPORTED, + sizeof(cp), &cp); + } + update_class(hdev); update_name(hdev, hdev->dev_name); update_eir(hdev); @@ -2894,6 +2911,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) { --- linux-3.5.0.orig/net/bluetooth/af_bluetooth.c +++ linux-3.5.0/net/bluetooth/af_bluetooth.c @@ -240,6 +240,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) @@ -247,8 +249,6 @@ return err; } - msg->msg_namelen = 0; - copied = skb->len; if (len < copied) { msg->msg_flags |= MSG_TRUNC; --- linux-3.5.0.orig/net/bluetooth/l2cap_core.c +++ linux-3.5.0/net/bluetooth/l2cap_core.c @@ -1163,6 +1163,7 @@ sk = chan->sk; hci_conn_hold(conn->hcon); + conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT; bacpy(&bt_sk(sk)->src, conn->src); bacpy(&bt_sk(sk)->dst, conn->dst); @@ -1183,14 +1184,15 @@ static void l2cap_conn_ready(struct l2cap_conn *conn) { struct l2cap_chan *chan; + struct hci_conn *hcon = conn->hcon; BT_DBG("conn %p", conn); - if (!conn->hcon->out && conn->hcon->type == LE_LINK) + if (!hcon->out && hcon->type == LE_LINK) l2cap_le_conn_ready(conn); - if (conn->hcon->out && conn->hcon->type == LE_LINK) - smp_conn_security(conn, conn->hcon->pending_sec_level); + if (hcon->out && hcon->type == LE_LINK) + smp_conn_security(hcon, hcon->pending_sec_level); mutex_lock(&conn->chan_lock); @@ -1198,8 +1200,8 @@ l2cap_chan_lock(chan); - if (conn->hcon->type == LE_LINK) { - if (smp_conn_security(conn, chan->sec_level)) + if (hcon->type == LE_LINK) { + if (smp_conn_security(hcon, chan->sec_level)) l2cap_chan_ready(chan); } else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) { @@ -2189,6 +2191,9 @@ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %d", 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); --- linux-3.5.0.orig/net/bluetooth/hci_conn.c +++ linux-3.5.0/net/bluetooth/hci_conn.c @@ -42,6 +42,7 @@ #include #include +#include static void hci_le_connect(struct hci_conn *conn) { @@ -627,6 +628,9 @@ { BT_DBG("conn %p", conn); + if (conn->type == LE_LINK) + return smp_conn_security(conn, sec_level); + /* For sdp we don't need the link key. */ if (sec_level == BT_SECURITY_SDP) return 1; --- linux-3.5.0.orig/net/bluetooth/hidp/core.c +++ linux-3.5.0/net/bluetooth/hidp/core.c @@ -949,7 +949,7 @@ hid->version = req->version; hid->country = req->country; - strncpy(hid->name, req->name, 128); + strncpy(hid->name, req->name, sizeof(req->name) - 1); strncpy(hid->phys, batostr(&bt_sk(session->ctrl_sock->sk)->src), 64); strncpy(hid->uniq, batostr(&bt_sk(session->ctrl_sock->sk)->dst), 64); --- linux-3.5.0.orig/net/bluetooth/rfcomm/tty.c +++ linux-3.5.0/net/bluetooth/rfcomm/tty.c @@ -461,7 +461,7 @@ size = sizeof(*dl) + dev_num * sizeof(*di); - dl = kmalloc(size, GFP_KERNEL); + dl = kzalloc(size, GFP_KERNEL); if (!dl) return -ENOMEM; --- linux-3.5.0.orig/net/bluetooth/rfcomm/sock.c +++ linux-3.5.0/net/bluetooth/rfcomm/sock.c @@ -486,7 +486,7 @@ long timeo; int err = 0; - lock_sock(sk); + lock_sock_nested(sk, SINGLE_DEPTH_NESTING); if (sk->sk_type != SOCK_STREAM) { err = -EINVAL; @@ -523,7 +523,7 @@ release_sock(sk); timeo = schedule_timeout(timeo); - lock_sock(sk); + lock_sock_nested(sk, SINGLE_DEPTH_NESTING); } __set_current_state(TASK_RUNNING); remove_wait_queue(sk_sleep(sk), &wait); @@ -547,6 +547,7 @@ BT_DBG("sock %p, sk %p", sock, sk); + memset(sa, 0, sizeof(*sa)); sa->rc_family = AF_BLUETOOTH; sa->rc_channel = rfcomm_pi(sk)->channel; if (peer) @@ -628,6 +629,7 @@ if (test_and_clear_bit(RFCOMM_DEFER_SETUP, &d->flags)) { rfcomm_dlc_accept(d); + msg->msg_namelen = 0; return 0; } @@ -841,6 +843,7 @@ } sec.level = rfcomm_pi(sk)->sec_level; + sec.key_size = 0; len = min_t(unsigned int, len, sizeof(sec)); if (copy_to_user(optval, (char *) &sec, len)) --- linux-3.5.0.orig/net/openvswitch/vport-internal_dev.c +++ linux-3.5.0/net/openvswitch/vport-internal_dev.c @@ -24,6 +24,9 @@ #include #include +#include +#include + #include "datapath.h" #include "vport-internal_dev.h" #include "vport-netdev.h" @@ -209,6 +212,11 @@ int len; len = skb->len; + + skb_dst_drop(skb); + nf_reset(skb); + secpath_reset(skb); + skb->dev = netdev; skb->pkt_type = PACKET_HOST; skb->protocol = eth_type_trans(skb, netdev); --- linux-3.5.0.orig/net/sched/act_gact.c +++ linux-3.5.0/net/sched/act_gact.c @@ -67,6 +67,9 @@ struct tcf_common *pc; int ret = 0; int err; +#ifdef CONFIG_GACT_PROB + struct tc_gact_p *p_parm = NULL; +#endif if (nla == NULL) return -EINVAL; @@ -82,6 +85,12 @@ #ifndef CONFIG_GACT_PROB if (tb[TCA_GACT_PROB] != NULL) return -EOPNOTSUPP; +#else + if (tb[TCA_GACT_PROB]) { + p_parm = nla_data(tb[TCA_GACT_PROB]); + if (p_parm->ptype >= MAX_RAND) + return -EINVAL; + } #endif pc = tcf_hash_check(parm->index, a, bind, &gact_hash_info); @@ -103,8 +112,7 @@ spin_lock_bh(&gact->tcf_lock); gact->tcf_action = parm->action; #ifdef CONFIG_GACT_PROB - if (tb[TCA_GACT_PROB] != NULL) { - struct tc_gact_p *p_parm = nla_data(tb[TCA_GACT_PROB]); + if (p_parm) { gact->tcfg_paction = p_parm->paction; gact->tcfg_pval = p_parm->pval; gact->tcfg_ptype = p_parm->ptype; @@ -133,7 +141,7 @@ spin_lock(&gact->tcf_lock); #ifdef CONFIG_GACT_PROB - if (gact->tcfg_ptype && gact_rand[gact->tcfg_ptype] != NULL) + if (gact->tcfg_ptype) action = gact_rand[gact->tcfg_ptype](gact); else action = gact->tcf_action; --- linux-3.5.0.orig/net/sched/sch_cbq.c +++ linux-3.5.0/net/sched/sch_cbq.c @@ -250,10 +250,11 @@ else if ((cl = defmap[res.classid & TC_PRIO_MAX]) == NULL) cl = defmap[TC_PRIO_BESTEFFORT]; - if (cl == NULL || cl->level >= head->level) + if (cl == NULL) goto fallback; } - + if (cl->level >= head->level) + goto fallback; #ifdef CONFIG_NET_CLS_ACT switch (result) { case TC_ACT_QUEUED: @@ -962,8 +963,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 (;;) { --- linux-3.5.0.orig/net/sched/act_ipt.c +++ linux-3.5.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 @@ -300,17 +300,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-3.5.0.orig/net/sched/sch_htb.c +++ linux-3.5.0/net/sched/sch_htb.c @@ -874,7 +874,7 @@ q->now = psched_get_time(); start_at = jiffies; - next_event = q->now + 5 * PSCHED_TICKS_PER_SEC; + next_event = q->now + 5LLU * PSCHED_TICKS_PER_SEC; for (level = 0; level < TC_HTB_MAXDEPTH; level++) { /* common case optimization - skip event handler quickly */ --- linux-3.5.0.orig/net/sched/sch_qfq.c +++ linux-3.5.0/net/sched/sch_qfq.c @@ -831,7 +831,10 @@ if (mask) { struct qfq_group *next = qfq_ffs(q, mask); if (qfq_gt(roundedF, next->F)) { - cl->S = next->F; + if (qfq_gt(limit, next->F)) + cl->S = next->F; + else /* preserve timestamp correctness */ + cl->S = limit; return; } } --- linux-3.5.0.orig/net/batman-adv/bitarray.h +++ linux-3.5.0/net/batman-adv/bitarray.h @@ -22,8 +22,9 @@ #ifndef _NET_BATMAN_ADV_BITARRAY_H_ #define _NET_BATMAN_ADV_BITARRAY_H_ -/* returns true if the corresponding bit in the given seq_bits indicates true - * and curr_seqno is within range of last_seqno */ +/* Returns 1 if the corresponding bit in the given seq_bits indicates true + * and curr_seqno is within range of last_seqno. Otherwise returns 0. + */ static inline int bat_test_bit(const unsigned long *seq_bits, uint32_t last_seqno, uint32_t curr_seqno) { @@ -33,7 +34,7 @@ if (diff < 0 || diff >= TQ_LOCAL_WINDOW_SIZE) return 0; else - return test_bit(diff, seq_bits); + return test_bit(diff, seq_bits) != 0; } /* turn corresponding bit on, so we can remember that we got the packet */ --- linux-3.5.0.orig/net/batman-adv/bridge_loop_avoidance.c +++ linux-3.5.0/net/batman-adv/bridge_loop_avoidance.c @@ -1172,8 +1172,8 @@ /** * @bat_priv: the bat priv with all the soft interface information - * @bcast_packet: originator mac address - * @hdr_size: maximum length of the frame + * @bcast_packet: encapsulated broadcast frame plus batman header + * @bcast_packet_len: length of encapsulated broadcast frame plus batman header * * check if it is on our broadcast list. Another gateway might * have sent the same packet because it is connected to the same backbone, @@ -1188,14 +1188,14 @@ int bla_check_bcast_duplist(struct bat_priv *bat_priv, struct bcast_packet *bcast_packet, - int hdr_size) + int bcast_packet_len) { int i, length, curr; uint8_t *content; uint16_t crc; struct bcast_duplist_entry *entry; - length = hdr_size - sizeof(*bcast_packet); + length = bcast_packet_len - sizeof(*bcast_packet); content = (uint8_t *)bcast_packet; content += sizeof(*bcast_packet); --- linux-3.5.0.orig/net/batman-adv/routing.c +++ linux-3.5.0/net/batman-adv/routing.c @@ -1081,8 +1081,14 @@ spin_unlock_bh(&orig_node->bcast_seqno_lock); + /* keep skb linear for crc calculation */ + if (skb_linearize(skb) < 0) + goto out; + + bcast_packet = (struct bcast_packet *)skb->data; + /* check whether this has been sent by another originator before */ - if (bla_check_bcast_duplist(bat_priv, bcast_packet, hdr_size)) + if (bla_check_bcast_duplist(bat_priv, bcast_packet, skb->len)) goto out; /* rebroadcast packet */ --- linux-3.5.0.orig/net/batman-adv/bat_iv_ogm.c +++ linux-3.5.0/net/batman-adv/bat_iv_ogm.c @@ -117,7 +117,7 @@ { return jiffies + msecs_to_jiffies( atomic_read(&bat_priv->orig_interval) - - JITTER + (random32() % 2*JITTER)); + JITTER + (random32() % (2*JITTER))); } /* when do we schedule a ogm packet to be sent */ --- linux-3.5.0.orig/net/ipv4/ping.c +++ linux-3.5.0/net/ipv4/ping.c @@ -328,8 +328,8 @@ struct iphdr *iph = (struct iphdr *)skb->data; struct icmphdr *icmph = (struct icmphdr *)(skb->data+(iph->ihl<<2)); struct inet_sock *inet_sock; - int type = icmph->type; - int code = icmph->code; + int type = icmp_hdr(skb)->type; + int code = icmp_hdr(skb)->code; struct net *net = dev_net(skb->dev); struct sock *sk; int harderr; --- linux-3.5.0.orig/net/ipv4/ip_options.c +++ linux-3.5.0/net/ipv4/ip_options.c @@ -360,7 +360,6 @@ } switch (optptr[3]&0xF) { case IPOPT_TS_TSONLY: - opt->ts = optptr - iph; if (skb) timeptr = &optptr[optptr[2]-1]; opt->ts_needtime = 1; @@ -371,7 +370,6 @@ pp_ptr = optptr + 2; goto error; } - opt->ts = optptr - iph; if (rt) { memcpy(&optptr[optptr[2]-1], &rt->rt_spec_dst, 4); timeptr = &optptr[optptr[2]+3]; @@ -385,7 +383,6 @@ pp_ptr = optptr + 2; goto error; } - opt->ts = optptr - iph; { __be32 addr; memcpy(&addr, &optptr[optptr[2]-1], 4); @@ -418,12 +415,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-3.5.0.orig/net/ipv4/inet_fragment.c +++ linux-3.5.0/net/ipv4/inet_fragment.c @@ -21,6 +21,7 @@ #include #include +#include #include static void inet_frag_secret_rebuild(unsigned long dummy) @@ -271,6 +272,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)) { @@ -278,9 +280,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-3.5.0.orig/net/ipv4/tcp_input.c +++ linux-3.5.0/net/ipv4/tcp_input.c @@ -88,6 +88,9 @@ int sysctl_tcp_adv_win_scale __read_mostly = 1; EXPORT_SYMBOL(sysctl_tcp_adv_win_scale); +/* rfc5961 challenge ack rate limiting */ +int sysctl_tcp_challenge_ack_limit = 100; + int sysctl_tcp_stdurg __read_mostly; int sysctl_tcp_rfc1337 __read_mostly; int sysctl_tcp_max_orphans __read_mostly = NR_FILE; @@ -114,6 +117,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) @@ -2264,11 +2268,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; } @@ -3107,13 +3108,14 @@ * tcp_xmit_retransmit_queue(). */ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, - int newly_acked_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); int do_lost = is_dupack || ((flag & FLAG_DATA_SACKED) && (tcp_fackets_out(tp) > tp->reordering)); + int newly_acked_sacked = 0; int fast_rexmit = 0; if (WARN_ON(!tp->packets_out && tp->sacked_out)) @@ -3173,6 +3175,8 @@ tcp_add_reno_sack(sk); } else do_lost = tcp_try_undo_partial(sk, pkts_acked); + newly_acked_sacked = prior_packets - tp->packets_out + + tp->sacked_out - prior_sacked; break; case TCP_CA_Loss: if (flag & FLAG_DATA_ACKED) @@ -3194,6 +3198,8 @@ if (is_dupack) tcp_add_reno_sack(sk); } + 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); @@ -3709,6 +3715,11 @@ } } else { if (!(flag & FLAG_DATA_ACKED) && (tp->frto_counter == 1)) { + if (!tcp_packets_in_flight(tp)) { + tcp_enter_frto_loss(sk, 2, flag); + return true; + } + /* Prevent sending of new data. */ tp->snd_cwnd = min(tp->snd_cwnd, tcp_packets_in_flight(tp)); @@ -3757,6 +3768,45 @@ return false; } +/* RFC 5961 7 [ACK Throttling] */ +static void tcp_send_challenge_ack(struct sock *sk) +{ + /* unprotected vars, we dont care of overwrites */ + static u32 challenge_timestamp; + static unsigned int challenge_count; + u32 now = jiffies / HZ; + + if (now != challenge_timestamp) { + challenge_timestamp = now; + challenge_count = 0; + } + if (++challenge_count <= sysctl_tcp_challenge_ack_limit) { + NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPCHALLENGEACK); + tcp_send_ack(sk); + } +} + +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) { @@ -3768,17 +3818,23 @@ 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 newly_acked_sacked = 0; + int previous_packets_out = 0; bool frto_cwnd = false; /* If the ack is older than previous acks * then we can probably ignore it. */ - if (before(ack, prior_snd_una)) + if (before(ack, prior_snd_una)) { + /* RFC 5961 5.2 [Blind Data Injection Attack].[Mitigation] */ + if (before(ack, prior_snd_una - tp->max_window)) { + tcp_send_challenge_ack(sk); + return -1; + } goto old_ack; + } /* If the ack includes data we haven't sent yet, discard * this segment (RFC793 Section 3.9). @@ -3804,6 +3860,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. @@ -3839,16 +3901,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; - newly_acked_sacked = (prior_packets - prior_sacked) - - (tp->packets_out - tp->sacked_out); + pkts_acked = previous_packets_out - tp->packets_out; if (tp->frto_counter) frto_cwnd = tcp_process_frto(sk, flag); @@ -3862,8 +3922,8 @@ tcp_may_raise_cwnd(sk, flag)) tcp_cong_avoid(sk, ack, prior_in_flight); is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP)); - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, - is_dupack, flag); + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, + prior_packets, is_dupack, flag); } else { if ((flag & FLAG_DATA_ACKED) && !frto_cwnd) tcp_cong_avoid(sk, ack, prior_in_flight); @@ -3877,8 +3937,8 @@ no_queue: /* If data was DSACKed, see if we can undo a cwnd reduction. */ if (flag & FLAG_DSACKING_ACK) - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, - is_dupack, flag); + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, + 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. @@ -3897,9 +3957,8 @@ */ if (TCP_SKB_CB(skb)->sacked) { flag |= tcp_sacktag_write_queue(sk, skb, prior_snd_una); - newly_acked_sacked = tp->sacked_out - prior_sacked; - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, - is_dupack, flag); + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, + prior_packets, is_dupack, flag); } SOCK_DEBUG(sk, "Ack %u before %u:%u\n", ack, tp->snd_una, tp->snd_nxt); @@ -4103,27 +4162,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) @@ -4714,6 +4752,9 @@ struct tcphdr *th; bool fragstolen; + if (size == 0) + return 0; + if (tcp_try_rmem_schedule(sk, size + sizeof(*th))) goto err; @@ -4819,7 +4860,7 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); - else if (!sock_flag(sk, SOCK_DEAD)) + if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); return; } @@ -5429,8 +5470,8 @@ /* Does PAWS and seqno based validation of an incoming segment, flags will * play significant role here. */ -static int tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, - const struct tcphdr *th, int syn_inerr) +static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, + const struct tcphdr *th, int syn_inerr) { const u8 *hash_location; struct tcp_sock *tp = tcp_sk(sk); @@ -5455,38 +5496,48 @@ * an acknowledgment should be sent in reply (unless the RST * bit is set, if so drop the segment and return)". */ - if (!th->rst) + if (!th->rst) { + if (th->syn) + goto syn_challenge; tcp_send_dupack(sk, skb); + } goto discard; } /* Step 2: check RST bit */ if (th->rst) { - tcp_reset(sk); + /* RFC 5961 3.2 : + * If sequence number exactly matches RCV.NXT, then + * RESET the connection + * else + * Send a challenge ACK + */ + if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) + tcp_reset(sk); + else + tcp_send_challenge_ack(sk); goto discard; } - /* ts_recent update must be made after we are sure that the packet - * is in window. - */ - tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); - /* step 3: check security and precedence [ignored] */ - /* step 4: Check for a SYN in window. */ - if (th->syn && !before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { + /* step 4: Check for a SYN + * RFC 5691 4.2 : Send a challenge ack + */ + if (th->syn) { +syn_challenge: if (syn_inerr) TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_INERRS); - NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONSYN); - tcp_reset(sk); - return -1; + NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPSYNCHALLENGE); + tcp_send_challenge_ack(sk); + goto discard; } - return 1; + return true; discard: __kfree_skb(skb); - return 0; + return false; } /* @@ -5516,7 +5567,6 @@ const struct tcphdr *th, unsigned int len) { struct tcp_sock *tp = tcp_sk(sk); - int res; /* * Header prediction. @@ -5602,7 +5652,9 @@ if (tp->copied_seq == tp->rcv_nxt && len - tcp_header_len <= tp->ucopy.len) { #ifdef CONFIG_NET_DMA - if (tcp_dma_try_early_copy(sk, skb, tcp_header_len)) { + if (tp->ucopy.task == current && + sock_owned_by_user(sk) && + tcp_dma_try_early_copy(sk, skb, tcp_header_len)) { copied_early = 1; eaten = 1; } @@ -5638,6 +5690,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: @@ -5649,9 +5704,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 */ @@ -5679,8 +5731,7 @@ #endif if (eaten) kfree_skb_partial(skb, fragstolen); - else - sk->sk_data_ready(sk, 0); + sk->sk_data_ready(sk, 0); return 0; } } @@ -5693,12 +5744,11 @@ * Standard slow path. */ - res = tcp_validate_incoming(sk, skb, th, 1); - if (res <= 0) - return -res; + if (!tcp_validate_incoming(sk, skb, th, 1)) + return 0; step5: - if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH) < 0) + if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH | FLAG_UPDATE_TS_RECENT) < 0) goto discard; tcp_rcv_rtt_measure_ts(sk, skb); @@ -6013,7 +6063,6 @@ struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); int queued = 0; - int res; tp->rx_opt.saw_tstamp = 0; @@ -6068,13 +6117,13 @@ return 0; } - res = tcp_validate_incoming(sk, skb, th, 0); - if (res <= 0) - return -res; + if (!tcp_validate_incoming(sk, skb, th, 0)) + return 0; /* step 5: check the ACK field */ if (th->ack) { - 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: --- linux-3.5.0.orig/net/ipv4/ipmr.c +++ linux-3.5.0/net/ipv4/ipmr.c @@ -124,6 +124,8 @@ static struct kmem_cache *mrt_cachep __read_mostly; static struct mr_table *ipmr_new_table(struct net *net, u32 id); +static void ipmr_free_table(struct mr_table *mrt); + static int ip_mr_forward(struct net *net, struct mr_table *mrt, struct sk_buff *skb, struct mfc_cache *cache, int local); @@ -131,6 +133,7 @@ struct sk_buff *pkt, vifi_t vifi, int assert); static int __ipmr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, struct mfc_cache *c, struct rtmsg *rtm); +static void mroute_clean_tables(struct mr_table *mrt); static void ipmr_expire_process(unsigned long arg); #ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES @@ -271,7 +274,7 @@ list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { list_del(&mrt->list); - kfree(mrt); + ipmr_free_table(mrt); } fib_rules_unregister(net->ipv4.mr_rules_ops); } @@ -299,7 +302,7 @@ static void __net_exit ipmr_rules_exit(struct net *net) { - kfree(net->ipv4.mrt); + ipmr_free_table(net->ipv4.mrt); } #endif @@ -336,6 +339,13 @@ return mrt; } +static void ipmr_free_table(struct mr_table *mrt) +{ + del_timer_sync(&mrt->ipmr_expire_timer); + mroute_clean_tables(mrt); + kfree(mrt); +} + /* Service routines creating virtual interfaces: DVMRP tunnels and PIMREG */ static void ipmr_del_tunnel(struct net_device *dev, struct vifctl *v) --- linux-3.5.0.orig/net/ipv4/inet_diag.c +++ linux-3.5.0/net/ipv4/inet_diag.c @@ -44,6 +44,10 @@ u16 dport; u16 family; u16 userlocks; +#if IS_ENABLED(CONFIG_IPV6) + struct in6_addr saddr_storage; /* for IPv4-mapped-IPv6 addresses */ + struct in6_addr daddr_storage; /* for IPv4-mapped-IPv6 addresses */ +#endif }; #define INET_DIAG_PUT(skb, attrtype, attrlen) \ @@ -419,25 +423,31 @@ break; } - if (cond->prefix_len == 0) - break; - if (op->code == INET_DIAG_BC_S_COND) addr = entry->saddr; else addr = entry->daddr; + if (cond->family != AF_UNSPEC && + cond->family != entry->family) { + if (entry->family == AF_INET6 && + cond->family == AF_INET) { + if (addr[0] == 0 && addr[1] == 0 && + addr[2] == htonl(0xffff) && + bitstring_match(addr + 3, + cond->addr, + cond->prefix_len)) + break; + } + yes = 0; + break; + } + + if (cond->prefix_len == 0) + break; if (bitstring_match(addr, cond->addr, cond->prefix_len)) break; - if (entry->family == AF_INET6 && - cond->family == AF_INET) { - if (addr[0] == 0 && addr[1] == 0 && - addr[2] == htonl(0xffff) && - bitstring_match(addr + 3, cond->addr, - cond->prefix_len)) - break; - } yes = 0; break; } @@ -500,6 +510,55 @@ return 0; } +/* Validate an inet_diag_hostcond. */ +static bool valid_hostcond(const struct inet_diag_bc_op *op, int len, + int *min_len) +{ + int addr_len; + struct inet_diag_hostcond *cond; + + /* Check hostcond space. */ + *min_len += sizeof(struct inet_diag_hostcond); + if (len < *min_len) + return false; + cond = (struct inet_diag_hostcond *)(op + 1); + + /* Check address family and address length. */ + switch (cond->family) { + case AF_UNSPEC: + addr_len = 0; + break; + case AF_INET: + addr_len = sizeof(struct in_addr); + break; + case AF_INET6: + addr_len = sizeof(struct in6_addr); + break; + default: + return false; + } + *min_len += addr_len; + if (len < *min_len) + return false; + + /* Check prefix length (in bits) vs address length (in bytes). */ + if (cond->prefix_len > 8 * addr_len) + return false; + + return true; +} + +/* Validate a port comparison operator. */ +static inline bool valid_port_comparison(const struct inet_diag_bc_op *op, + int len, int *min_len) +{ + /* Port comparisons put the port in a follow-on inet_diag_bc_op. */ + *min_len += sizeof(struct inet_diag_bc_op); + if (len < *min_len) + return false; + return true; +} + static int inet_diag_bc_audit(const void *bytecode, int bytecode_len) { const void *bc = bytecode; @@ -507,29 +566,39 @@ while (len > 0) { const struct inet_diag_bc_op *op = bc; + int min_len = sizeof(struct inet_diag_bc_op); //printk("BC: %d %d %d {%d} / %d\n", op->code, op->yes, op->no, op[1].no, len); switch (op->code) { - case INET_DIAG_BC_AUTO: case INET_DIAG_BC_S_COND: case INET_DIAG_BC_D_COND: + if (!valid_hostcond(bc, len, &min_len)) + return -EINVAL; + break; case INET_DIAG_BC_S_GE: case INET_DIAG_BC_S_LE: case INET_DIAG_BC_D_GE: case INET_DIAG_BC_D_LE: - case INET_DIAG_BC_JMP: - if (op->no < 4 || op->no > len + 4 || op->no & 3) - return -EINVAL; - if (op->no < len && - !valid_cc(bytecode, bytecode_len, len - op->no)) + if (!valid_port_comparison(bc, len, &min_len)) return -EINVAL; break; + case INET_DIAG_BC_AUTO: + case INET_DIAG_BC_JMP: case INET_DIAG_BC_NOP: break; default: return -EINVAL; } - if (op->yes < 4 || op->yes > len + 4 || op->yes & 3) + + if (op->code != INET_DIAG_BC_NOP) { + if (op->no < min_len || op->no > len + 4 || op->no & 3) + return -EINVAL; + if (op->no < len && + !valid_cc(bytecode, bytecode_len, len - op->no)) + return -EINVAL; + } + + if (op->yes < min_len || op->yes > len + 4 || op->yes & 3) return -EINVAL; bc += op->yes; len -= op->yes; @@ -586,6 +655,36 @@ cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh); } +/* Get the IPv4, IPv6, or IPv4-mapped-IPv6 local and remote addresses + * from a request_sock. For IPv4-mapped-IPv6 we must map IPv4 to IPv6. + */ +static inline void inet_diag_req_addrs(const struct sock *sk, + const struct request_sock *req, + struct inet_diag_entry *entry) +{ + struct inet_request_sock *ireq = inet_rsk(req); + +#if IS_ENABLED(CONFIG_IPV6) + if (sk->sk_family == AF_INET6) { + if (req->rsk_ops->family == AF_INET6) { + entry->saddr = inet6_rsk(req)->loc_addr.s6_addr32; + entry->daddr = inet6_rsk(req)->rmt_addr.s6_addr32; + } else if (req->rsk_ops->family == AF_INET) { + ipv6_addr_set_v4mapped(ireq->loc_addr, + &entry->saddr_storage); + ipv6_addr_set_v4mapped(ireq->rmt_addr, + &entry->daddr_storage); + entry->saddr = entry->saddr_storage.s6_addr32; + entry->daddr = entry->daddr_storage.s6_addr32; + } + } else +#endif + { + entry->saddr = &ireq->loc_addr; + entry->daddr = &ireq->rmt_addr; + } +} + static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk, struct request_sock *req, u32 pid, u32 seq, const struct nlmsghdr *unlh) @@ -624,8 +723,10 @@ r->idiag_inode = 0; #if IS_ENABLED(CONFIG_IPV6) if (r->idiag_family == AF_INET6) { - *(struct in6_addr *)r->id.idiag_src = inet6_rsk(req)->loc_addr; - *(struct in6_addr *)r->id.idiag_dst = inet6_rsk(req)->rmt_addr; + struct inet_diag_entry entry; + inet_diag_req_addrs(sk, req, &entry); + memcpy(r->id.idiag_src, entry.saddr, sizeof(struct in6_addr)); + memcpy(r->id.idiag_dst, entry.daddr, sizeof(struct in6_addr)); } #endif nlh->nlmsg_len = skb_tail_pointer(skb) - b; @@ -683,18 +784,7 @@ continue; if (bc) { - entry.saddr = -#if IS_ENABLED(CONFIG_IPV6) - (entry.family == AF_INET6) ? - inet6_rsk(req)->loc_addr.s6_addr32 : -#endif - &ireq->loc_addr; - entry.daddr = -#if IS_ENABLED(CONFIG_IPV6) - (entry.family == AF_INET6) ? - inet6_rsk(req)->rmt_addr.s6_addr32 : -#endif - &ireq->rmt_addr; + inet_diag_req_addrs(sk, req, &entry); entry.dport = ntohs(ireq->rmt_port); if (!inet_diag_bc_run(bc, &entry)) @@ -875,13 +965,16 @@ struct inet_diag_req_v2 *r, struct nlattr *bc) { const struct inet_diag_handler *handler; + int err = 0; handler = inet_diag_lock_handler(r->sdiag_protocol); if (!IS_ERR(handler)) handler->dump(skb, cb, r, bc); + else + err = PTR_ERR(handler); inet_diag_unlock_handler(handler); - return skb->len; + return err ? : skb->len; } static int inet_diag_dump(struct sk_buff *skb, struct netlink_callback *cb) --- linux-3.5.0.orig/net/ipv4/sysctl_net_ipv4.c +++ linux-3.5.0/net/ipv4/sysctl_net_ipv4.c @@ -591,6 +591,13 @@ .mode = 0644, .proc_handler = proc_dointvec }, + { + .procname = "tcp_challenge_ack_limit", + .data = &sysctl_tcp_challenge_ack_limit, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec + }, #ifdef CONFIG_NET_DMA { .procname = "tcp_dma_copybreak", --- linux-3.5.0.orig/net/ipv4/fib_frontend.c +++ linux-3.5.0/net/ipv4/fib_frontend.c @@ -998,6 +998,14 @@ fib_disable_ip(dev, 2, -1); return NOTIFY_DONE; } + if (event == NETDEV_UNREGISTER_BATCH) { + /* The batch unregister is only called on the first + * device in the list of devices being unregistered. + * Therefore we should not pass dev_net(dev) in here. + */ + rt_cache_flush_batch(NULL); + return NOTIFY_DONE; + } if (!in_dev) return NOTIFY_DONE; @@ -1020,13 +1028,6 @@ case NETDEV_CHANGE: rt_cache_flush(dev_net(dev), 0); break; - case NETDEV_UNREGISTER_BATCH: - /* The batch unregister is only called on the first - * device in the list of devices being unregistered. - * Therefore we should not pass dev_net(dev) in here. - */ - rt_cache_flush_batch(NULL); - break; } return NOTIFY_DONE; } --- linux-3.5.0.orig/net/ipv4/ip_sockglue.c +++ linux-3.5.0/net/ipv4/ip_sockglue.c @@ -456,19 +456,28 @@ struct inet_sock *inet = inet_sk(sk); int val = 0, err; - if (((1<= sizeof(int)) { if (get_user(val, (int __user *) optval)) return -EFAULT; @@ -580,7 +589,7 @@ case IP_TTL: if (optlen < 1) goto e_inval; - if (val != -1 && (val < 0 || val > 255)) + if (val != -1 && (val < 1 || val > 255)) goto e_inval; inet->uc_ttl = val; break; --- linux-3.5.0.orig/net/ipv4/tcp_cong.c +++ linux-3.5.0/net/ipv4/tcp_cong.c @@ -291,7 +291,8 @@ left = tp->snd_cwnd - in_flight; if (sk_can_gso(sk) && left * sysctl_tcp_tso_win_divisor < tp->snd_cwnd && - left * tp->mss_cache < sk->sk_gso_max_size) + left * tp->mss_cache < sk->sk_gso_max_size && + left < sk->sk_gso_max_segs) return true; return left <= tcp_max_tso_deferred_mss(tp); } --- linux-3.5.0.orig/net/ipv4/esp4.c +++ linux-3.5.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-3.5.0.orig/net/ipv4/tcp_illinois.c +++ linux-3.5.0/net/ipv4/tcp_illinois.c @@ -313,11 +313,13 @@ .tcpv_rttcnt = ca->cnt_rtt, .tcpv_minrtt = ca->base_rtt, }; - u64 t = ca->sum_rtt; - do_div(t, ca->cnt_rtt); - info.tcpv_rtt = t; + if (info.tcpv_rttcnt > 0) { + u64 t = ca->sum_rtt; + do_div(t, info.tcpv_rttcnt); + info.tcpv_rtt = t; + } nla_put(skb, INET_DIAG_VEGASINFO, sizeof(info), &info); } } --- linux-3.5.0.orig/net/ipv4/proc.c +++ linux-3.5.0/net/ipv4/proc.c @@ -232,7 +232,6 @@ SNMP_MIB_ITEM("TCPDSACKOfoSent", LINUX_MIB_TCPDSACKOFOSENT), SNMP_MIB_ITEM("TCPDSACKRecv", LINUX_MIB_TCPDSACKRECV), SNMP_MIB_ITEM("TCPDSACKOfoRecv", LINUX_MIB_TCPDSACKOFORECV), - SNMP_MIB_ITEM("TCPAbortOnSyn", LINUX_MIB_TCPABORTONSYN), SNMP_MIB_ITEM("TCPAbortOnData", LINUX_MIB_TCPABORTONDATA), SNMP_MIB_ITEM("TCPAbortOnClose", LINUX_MIB_TCPABORTONCLOSE), SNMP_MIB_ITEM("TCPAbortOnMemory", LINUX_MIB_TCPABORTONMEMORY), @@ -258,6 +257,8 @@ SNMP_MIB_ITEM("TCPReqQFullDrop", LINUX_MIB_TCPREQQFULLDROP), SNMP_MIB_ITEM("TCPRetransFail", LINUX_MIB_TCPRETRANSFAIL), SNMP_MIB_ITEM("TCPRcvCoalesce", LINUX_MIB_TCPRCVCOALESCE), + SNMP_MIB_ITEM("TCPChallengeACK", LINUX_MIB_TCPCHALLENGEACK), + SNMP_MIB_ITEM("TCPSYNChallenge", LINUX_MIB_TCPSYNCHALLENGE), SNMP_MIB_SENTINEL }; --- linux-3.5.0.orig/net/ipv4/tcp.c +++ linux-3.5.0/net/ipv4/tcp.c @@ -546,14 +546,12 @@ !tp->urg_data || before(tp->urg_seq, tp->copied_seq) || !before(tp->urg_seq, tp->rcv_nxt)) { - struct sk_buff *skb; answ = tp->rcv_nxt - tp->copied_seq; - /* Subtract 1, if FIN is in queue. */ - skb = skb_peek_tail(&sk->sk_receive_queue); - if (answ && skb) - answ -= tcp_hdr(skb)->fin; + /* Subtract 1, if FIN was received */ + if (answ && sock_flag(sk, SOCK_DONE)) + answ--; } else answ = tp->urg_seq - tp->copied_seq; release_sock(sk); @@ -771,7 +769,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); @@ -805,7 +803,9 @@ old_size_goal + mss_now > xmit_size_goal)) { xmit_size_goal = old_size_goal; } else { - tp->xmit_size_goal_segs = xmit_size_goal / mss_now; + tp->xmit_size_goal_segs = + min_t(u16, xmit_size_goal / mss_now, + sk->sk_gso_max_segs); xmit_size_goal = tp->xmit_size_goal_segs * mss_now; } } @@ -1180,7 +1180,7 @@ wait_for_sndbuf: set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); wait_for_memory: - if (copied && likely(!tp->repair)) + if (copied) tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH); if ((err = sk_stream_wait_memory(sk, &timeo)) != 0) @@ -1191,7 +1191,7 @@ } out: - if (copied && likely(!tp->repair)) + if (copied) tcp_push(sk, flags, mss_now, tp->nonagle); release_sock(sk); return copied; @@ -1704,8 +1704,14 @@ } #ifdef CONFIG_NET_DMA - if (tp->ucopy.dma_chan) - dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + if (tp->ucopy.dma_chan) { + if (tp->rcv_wnd == 0 && + !skb_queue_empty(&sk->sk_async_wait_queue)) { + tcp_service_net_dma(sk, true); + tcp_cleanup_rbuf(sk, copied); + } else + dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + } #endif if (copied >= target) { /* Do not sleep, just process backlog. */ @@ -2625,7 +2631,10 @@ /* Cap the max timeout in ms TCP will retry/retrans * before giving up and aborting (ETIMEDOUT) a connection. */ - icsk->icsk_user_timeout = msecs_to_jiffies(val); + if (val < 0) + err = -EINVAL; + else + icsk->icsk_user_timeout = msecs_to_jiffies(val); break; default: err = -ENOPROTOOPT; @@ -3285,8 +3294,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-3.5.0.orig/net/ipv4/inet_connection_sock.c +++ linux-3.5.0/net/ipv4/inet_connection_sock.c @@ -673,6 +673,22 @@ } EXPORT_SYMBOL(inet_csk_destroy_sock); +/* This function allows to force a closure of a socket after the call to + * tcp/dccp_create_openreq_child(). + */ +void inet_csk_prepare_forced_close(struct sock *sk) +{ + /* sk_clone_lock locked the socket and set refcnt to 2 */ + bh_unlock_sock(sk); + sock_put(sk); + + /* The below has to be done to allow calling inet_csk_destroy_sock */ + sock_set_flag(sk, SOCK_DEAD); + percpu_counter_inc(sk->sk_prot->orphan_count); + inet_sk(sk)->inet_num = 0; +} +EXPORT_SYMBOL(inet_csk_prepare_forced_close); + int inet_csk_listen_start(struct sock *sk, const int nr_table_entries) { struct inet_sock *inet = inet_sk(sk); --- linux-3.5.0.orig/net/ipv4/tcp_output.c +++ linux-3.5.0/net/ipv4/tcp_output.c @@ -836,11 +836,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); @@ -1097,7 +1099,6 @@ eat = min_t(int, len, skb_headlen(skb)); if (eat) { __skb_pull(skb, eat); - skb->avail_size -= eat; len -= eat; if (!len) return; @@ -1334,21 +1335,21 @@ * when we would be allowed to send the split-due-to-Nagle skb fully. */ static unsigned int tcp_mss_split_point(const struct sock *sk, const struct sk_buff *skb, - unsigned int mss_now, unsigned int cwnd) + unsigned int mss_now, unsigned int max_segs) { const struct tcp_sock *tp = tcp_sk(sk); - u32 needed, window, cwnd_len; + u32 needed, window, max_len; window = tcp_wnd_end(tp) - TCP_SKB_CB(skb)->seq; - cwnd_len = mss_now * cwnd; + max_len = mss_now * max_segs; - if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk))) - return cwnd_len; + if (likely(max_len <= window && skb != tcp_write_queue_tail(sk))) + return max_len; needed = min(skb->len, window); - if (cwnd_len <= needed) - return cwnd_len; + if (max_len <= needed) + return max_len; return needed - needed % mss_now; } @@ -1577,7 +1578,8 @@ limit = min(send_win, cong_win); /* If a full-sized TSO skb can be sent, do it. */ - if (limit >= sk->sk_gso_max_size) + if (limit >= min_t(unsigned int, sk->sk_gso_max_size, + sk->sk_gso_max_segs * tp->mss_cache)) goto send_now; /* Middle in queue won't get any more data, full sendable already? */ @@ -1604,8 +1606,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; @@ -1783,6 +1788,9 @@ tso_segs = tcp_init_tso_segs(sk, skb, mss_now); BUG_ON(!tso_segs); + if (unlikely(tp->repair) && tp->repair_queue == TCP_SEND_QUEUE) + goto repair; /* Skip network transmission */ + cwnd_quota = tcp_cwnd_test(tp, skb); if (!cwnd_quota) break; @@ -1803,7 +1811,9 @@ limit = mss_now; if (tso_segs > 1 && !tcp_urg_mode(tp)) limit = tcp_mss_split_point(sk, skb, mss_now, - cwnd_quota); + min_t(unsigned int, + cwnd_quota, + sk->sk_gso_max_segs)); if (skb->len > limit && unlikely(tso_fragment(sk, skb, limit, mss_now, gfp))) @@ -1814,6 +1824,7 @@ if (unlikely(tcp_transmit_skb(sk, skb, 1, gfp))) break; +repair: /* Advance the send_head. This one is sent out. * This call will increment packets_out. */ @@ -2166,8 +2177,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); err = nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) : --- linux-3.5.0.orig/net/ipv4/ipip.c +++ linux-3.5.0/net/ipv4/ipip.c @@ -465,6 +465,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) { @@ -547,7 +548,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-3.5.0.orig/net/ipv4/raw.c +++ linux-3.5.0/net/ipv4/raw.c @@ -131,18 +131,20 @@ * 0 - deliver * 1 - block */ -static __inline__ int icmp_filter(struct sock *sk, struct sk_buff *skb) +static int icmp_filter(const struct sock *sk, const struct sk_buff *skb) { - int type; + struct icmphdr _hdr; + const struct icmphdr *hdr; - if (!pskb_may_pull(skb, sizeof(struct icmphdr))) + hdr = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (!hdr) return 1; - type = icmp_hdr(skb)->type; - if (type < 32) { + if (hdr->type < 32) { __u32 data = raw_sk(sk)->filter.data; - return ((1 << type) & data) != 0; + return ((1U << hdr->type) & data) != 0; } /* Do not block unknown ICMP types */ --- linux-3.5.0.orig/net/ipv4/tcp_ipv4.c +++ linux-3.5.0/net/ipv4/tcp_ipv4.c @@ -691,10 +691,11 @@ arg.csumoffset = offsetof(struct tcphdr, check) / 2; arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0; /* When socket is gone, all binding information is lost. - * routing might fail in this case. using iif for oif to - * make sure we can deliver it + * routing might fail in this case. No choice here, if we choose to force + * input interface, we will misroute in case of asymmetric route. */ - arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb); + if (sk) + arg.bound_dev_if = sk->sk_bound_dev_if; net = dev_net(skb_dst(skb)->dev); arg.tos = ip_hdr(skb)->tos; @@ -1538,10 +1539,8 @@ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); return NULL; put_and_exit: - tcp_clear_xmit_timers(newsk); - tcp_cleanup_congestion_control(newsk); - bh_unlock_sock(newsk); - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + tcp_done(newsk); goto exit; } EXPORT_SYMBOL(tcp_v4_syn_recv_sock); --- linux-3.5.0.orig/net/ipv4/syncookies.c +++ linux-3.5.0/net/ipv4/syncookies.c @@ -347,8 +347,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-3.5.0.orig/net/ipv4/af_inet.c +++ linux-3.5.0/net/ipv4/af_inet.c @@ -227,8 +227,12 @@ u32 inet_ehash_secret __read_mostly; EXPORT_SYMBOL(inet_ehash_secret); +u32 ipv6_hash_secret __read_mostly; +EXPORT_SYMBOL(ipv6_hash_secret); + /* - * inet_ehash_secret must be set exactly once + * inet_ehash_secret must be set exactly once, and to a non nul value + * ipv6_hash_secret must be set exactly once. */ void build_ehash_secret(void) { @@ -238,7 +242,8 @@ get_random_bytes(&rnd, sizeof(rnd)); } while (rnd == 0); - cmpxchg(&inet_ehash_secret, 0, rnd); + if (cmpxchg(&inet_ehash_secret, 0, rnd) == 0) + get_random_bytes(&ipv6_hash_secret, sizeof(ipv6_hash_secret)); } EXPORT_SYMBOL(build_ehash_secret); --- linux-3.5.0.orig/net/ipv4/ip_fragment.c +++ linux-3.5.0/net/ipv4/ip_fragment.c @@ -251,8 +251,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); @@ -295,14 +294,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? */ @@ -520,8 +516,16 @@ qp->q.last_in |= INET_FRAG_FIRST_IN; 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); @@ -698,28 +702,27 @@ struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user) { - const struct iphdr *iph; + struct iphdr iph; u32 len; if (skb->protocol != htons(ETH_P_IP)) return skb; - if (!pskb_may_pull(skb, sizeof(struct iphdr))) + if (!skb_copy_bits(skb, 0, &iph, sizeof(iph))) return skb; - iph = ip_hdr(skb); - if (iph->ihl < 5 || iph->version != 4) - return skb; - if (!pskb_may_pull(skb, iph->ihl*4)) + if (iph.ihl < 5 || iph.version != 4) return skb; - iph = ip_hdr(skb); - len = ntohs(iph->tot_len); - if (skb->len < len || len < (iph->ihl * 4)) + + len = ntohs(iph.tot_len); + if (skb->len < len || len < (iph.ihl * 4)) return skb; - if (ip_is_fragment(ip_hdr(skb))) { + if (ip_is_fragment(&iph)) { skb = skb_share_check(skb, GFP_ATOMIC); if (skb) { + if (!pskb_may_pull(skb, iph.ihl*4)) + return skb; if (pskb_trim_rcsum(skb, len)) return skb; memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); --- linux-3.5.0.orig/net/ipv4/ip_gre.c +++ linux-3.5.0/net/ipv4/ip_gre.c @@ -743,6 +743,7 @@ tiph = &tunnel->parms.iph; } + memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); if ((dst = tiph->daddr) == 0) { /* NBMA tunnel */ @@ -886,7 +887,6 @@ skb_reset_transport_header(skb); skb_push(skb, gre_hlen); 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-3.5.0.orig/net/ipv4/netfilter/nf_nat_sip.c +++ linux-3.5.0/net/ipv4/netfilter/nf_nat_sip.c @@ -148,7 +148,7 @@ if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen, hdr, NULL, &matchoff, &matchlen, &addr, &port) > 0) { - unsigned int matchend, poff, plen, buflen, n; + unsigned int olen, matchend, poff, plen, buflen, n; char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")]; /* We're only interested in headers related to this @@ -163,11 +163,12 @@ goto next; } + olen = *datalen; if (!map_addr(skb, dataoff, dptr, datalen, matchoff, matchlen, &addr, port)) return NF_DROP; - matchend = matchoff + matchlen; + matchend = matchoff + matchlen + *datalen - olen; /* The maddr= parameter (RFC 2361) specifies where to send * the reply. */ @@ -501,7 +502,10 @@ ret = nf_ct_expect_related(rtcp_exp); if (ret == 0) break; - else if (ret != -EBUSY) { + else if (ret == -EBUSY) { + nf_ct_unexpect_related(rtp_exp); + continue; + } else if (ret < 0) { nf_ct_unexpect_related(rtp_exp); port = 0; break; --- linux-3.5.0.orig/net/ipv4/netfilter/nf_nat_standalone.c +++ linux-3.5.0/net/ipv4/netfilter/nf_nat_standalone.c @@ -194,7 +194,8 @@ if ((ct->tuplehash[dir].tuple.src.u3.ip != ct->tuplehash[!dir].tuple.dst.u3.ip) || - (ct->tuplehash[dir].tuple.src.u.all != + (ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP && + ct->tuplehash[dir].tuple.src.u.all != ct->tuplehash[!dir].tuple.dst.u.all) ) return ip_xfrm_me_harder(skb) == 0 ? ret : NF_DROP; @@ -230,7 +231,8 @@ ret = NF_DROP; } #ifdef CONFIG_XFRM - else if (ct->tuplehash[dir].tuple.dst.u.all != + else if (ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP && + ct->tuplehash[dir].tuple.dst.u.all != ct->tuplehash[!dir].tuple.src.u.all) if (ip_xfrm_me_harder(skb)) ret = NF_DROP; --- linux-3.5.0.orig/net/wireless/mlme.c +++ linux-3.5.0/net/wireless/mlme.c @@ -441,20 +441,14 @@ .reason_code = reason, .ie = ie, .ie_len = ie_len, + .local_state_change = local_state_change, }; ASSERT_WDEV_LOCK(wdev); - if (local_state_change) { - if (wdev->current_bss && - ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) { - cfg80211_unhold_bss(wdev->current_bss); - cfg80211_put_bss(&wdev->current_bss->pub); - wdev->current_bss = NULL; - } - + if (local_state_change && (!wdev->current_bss || + !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) return 0; - } return rdev->ops->deauth(&rdev->wiphy, dev, &req); } --- linux-3.5.0.orig/net/wireless/core.h +++ linux-3.5.0/net/wireless/core.h @@ -426,6 +426,7 @@ struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); +void cfg80211_process_wdev_events(struct wireless_dev *wdev); int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, --- linux-3.5.0.orig/net/wireless/core.c +++ linux-3.5.0/net/wireless/core.c @@ -548,8 +548,7 @@ for (i = 0; i < sband->n_channels; i++) { sband->channels[i].orig_flags = sband->channels[i].flags; - sband->channels[i].orig_mag = - sband->channels[i].max_antenna_gain; + sband->channels[i].orig_mag = INT_MAX; sband->channels[i].orig_mpwr = sband->channels[i].max_power; sband->channels[i].band = band; @@ -974,6 +973,11 @@ */ synchronize_rcu(); INIT_LIST_HEAD(&wdev->list); + /* + * Ensure that all events have been processed and + * freed. + */ + cfg80211_process_wdev_events(wdev); break; case NETDEV_PRE_UP: if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) --- linux-3.5.0.orig/net/wireless/reg.c +++ linux-3.5.0/net/wireless/reg.c @@ -134,9 +134,8 @@ .reg_rules = { /* IEEE 802.11b/g, channels 1..11 */ REG_RULE(2412-10, 2462+10, 40, 6, 20, 0), - /* IEEE 802.11b/g, channels 12..13. No HT40 - * channel fits here. */ - REG_RULE(2467-10, 2472+10, 20, 6, 20, + /* IEEE 802.11b/g, channels 12..13. */ + REG_RULE(2467-10, 2472+10, 40, 6, 20, NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS), /* IEEE 802.11 channel 14 - Only JP enables @@ -340,6 +339,9 @@ struct reg_regdb_search_request *request; const struct ieee80211_regdomain *curdom, *regdom; int i, r; + bool set_reg = false; + + mutex_lock(&cfg80211_mutex); mutex_lock(®_regdb_search_mutex); while (!list_empty(®_regdb_search_list)) { @@ -355,9 +357,7 @@ r = reg_copy_regd(®dom, curdom); if (r) break; - mutex_lock(&cfg80211_mutex); - set_regdom(regdom); - mutex_unlock(&cfg80211_mutex); + set_reg = true; break; } } @@ -365,6 +365,11 @@ kfree(request); } mutex_unlock(®_regdb_search_mutex); + + if (set_reg) + set_regdom(regdom); + + mutex_unlock(&cfg80211_mutex); } static DECLARE_WORK(reg_regdb_work, reg_regdb_search); @@ -670,6 +675,8 @@ channel_flags |= IEEE80211_CHAN_NO_IBSS; if (rd_flags & NL80211_RRF_DFS) channel_flags |= IEEE80211_CHAN_RADAR; + if (rd_flags & NL80211_RRF_NO_OFDM) + channel_flags |= IEEE80211_CHAN_NO_OFDM; return channel_flags; } @@ -857,7 +864,7 @@ return; REG_DBG_PRINT("Disabling freq %d MHz\n", chan->center_freq); - chan->flags = IEEE80211_CHAN_DISABLED; + chan->flags |= IEEE80211_CHAN_DISABLED; return; } @@ -891,7 +898,21 @@ chan->max_antenna_gain = min(chan->orig_mag, (int) MBI_TO_DBI(power_rule->max_antenna_gain)); chan->max_reg_power = (int) MBM_TO_DBM(power_rule->max_eirp); - chan->max_power = min(chan->max_power, chan->max_reg_power); + if (chan->orig_mpwr) { + /* + * Devices that have their own custom regulatory domain + * but also use WIPHY_FLAG_STRICT_REGULATORY will follow the + * passed country IE power settings. + */ + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE && + wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY && + wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY) + chan->max_power = chan->max_reg_power; + else + chan->max_power = min(chan->orig_mpwr, + chan->max_reg_power); + } else + chan->max_power = chan->max_reg_power; } static void handle_band(struct wiphy *wiphy, --- linux-3.5.0.orig/net/wireless/util.c +++ linux-3.5.0/net/wireless/util.c @@ -290,23 +290,21 @@ } EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); -static int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) { int ae = meshhdr->flags & MESH_FLAGS_AE; - /* 7.1.3.5a.2 */ + /* 802.11-2012, 8.2.4.7.3 */ switch (ae) { + default: case 0: return 6; case MESH_FLAGS_AE_A4: return 12; case MESH_FLAGS_AE_A5_A6: return 18; - case (MESH_FLAGS_AE_A4 | MESH_FLAGS_AE_A5_A6): - return 24; - default: - return 6; } } +EXPORT_SYMBOL(ieee80211_get_mesh_hdrlen); int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype) @@ -354,6 +352,8 @@ /* make sure meshdr->flags is on the linear part */ if (!pskb_may_pull(skb, hdrlen + 1)) return -1; + if (meshdr->flags & MESH_FLAGS_AE_A4) + return -1; if (meshdr->flags & MESH_FLAGS_AE_A5_A6) { skb_copy_bits(skb, hdrlen + offsetof(struct ieee80211s_hdr, eaddr1), @@ -378,6 +378,8 @@ /* make sure meshdr->flags is on the linear part */ if (!pskb_may_pull(skb, hdrlen + 1)) return -1; + if (meshdr->flags & MESH_FLAGS_AE_A5_A6) + return -1; if (meshdr->flags & MESH_FLAGS_AE_A4) skb_copy_bits(skb, hdrlen + offsetof(struct ieee80211s_hdr, eaddr1), @@ -716,7 +718,7 @@ wdev->connect_keys = NULL; } -static void cfg80211_process_wdev_events(struct wireless_dev *wdev) +void cfg80211_process_wdev_events(struct wireless_dev *wdev) { struct cfg80211_event *ev; unsigned long flags; --- linux-3.5.0.orig/net/wireless/sme.c +++ linux-3.5.0/net/wireless/sme.c @@ -222,6 +222,9 @@ mutex_lock(&rdev->devlist_mtx); list_for_each_entry(wdev, &rdev->netdev_list, list) { + if (!wdev->netdev) + continue; + wdev_lock(wdev); if (!netif_running(wdev->netdev)) { wdev_unlock(wdev); --- linux-3.5.0.orig/net/ax25/af_ax25.c +++ linux-3.5.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-3.5.0.orig/net/sunrpc/clnt.c +++ linux-3.5.0/net/sunrpc/clnt.c @@ -234,7 +234,7 @@ spin_lock(&sn->rpc_client_lock); list_for_each_entry(clnt, &sn->all_clients, cl_clients) { if (clnt->cl_program->pipe_dir_name == NULL) - break; + continue; if (rpc_clnt_skip_event(clnt, event)) continue; if (atomic_inc_not_zero(&clnt->cl_count) == 0) @@ -1844,12 +1844,13 @@ return; } if (RPC_IS_SOFT(task)) { - if (clnt->cl_chatty) + if (clnt->cl_chatty) { rcu_read_lock(); printk(KERN_NOTICE "%s: server %s not responding, timed out\n", clnt->cl_protname, rcu_dereference(clnt->cl_xprt)->servername); rcu_read_unlock(); + } if (task->tk_flags & RPC_TASK_TIMEOUT) rpc_exit(task, -ETIMEDOUT); else --- linux-3.5.0.orig/net/sunrpc/svcsock.c +++ linux-3.5.0/net/sunrpc/svcsock.c @@ -1129,9 +1129,9 @@ if (len >= 0) svsk->sk_tcplen += len; if (len != want) { + svc_tcp_save_pages(svsk, rqstp); if (len < 0 && len != -EAGAIN) goto err_other; - svc_tcp_save_pages(svsk, rqstp); dprintk("svc: incomplete TCP record (%d of %d)\n", svsk->sk_tcplen, svsk->sk_reclen); goto err_noclose; --- linux-3.5.0.orig/net/sunrpc/cache.c +++ linux-3.5.0/net/sunrpc/cache.c @@ -1406,11 +1406,11 @@ size_t count, loff_t *ppos, struct cache_detail *cd) { - char tbuf[20]; + char tbuf[22]; unsigned long p = *ppos; size_t len; - sprintf(tbuf, "%lu\n", convert_to_wallclock(cd->flush_time)); + snprintf(tbuf, sizeof(tbuf), "%lu\n", convert_to_wallclock(cd->flush_time)); len = strlen(tbuf); if (p >= len) return 0; --- linux-3.5.0.orig/net/sunrpc/xprt.c +++ linux-3.5.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); @@ -969,11 +973,11 @@ return false; } -static void xprt_alloc_slot(struct rpc_task *task) +void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task) { - struct rpc_xprt *xprt = task->tk_xprt; struct rpc_rqst *req; + spin_lock(&xprt->reserve_lock); if (!list_empty(&xprt->free)) { req = list_entry(xprt->free.next, struct rpc_rqst, rq_list); list_del(&req->rq_list); @@ -994,12 +998,29 @@ default: task->tk_status = -EAGAIN; } + spin_unlock(&xprt->reserve_lock); return; out_init_req: task->tk_status = 0; task->tk_rqstp = req; xprt_request_init(task, xprt); + spin_unlock(&xprt->reserve_lock); +} +EXPORT_SYMBOL_GPL(xprt_alloc_slot); + +void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task) +{ + /* Note: grabbing the xprt_lock_write() ensures that we throttle + * new slot allocation if the transport is congested (i.e. when + * reconnecting a stream transport or when out of socket write + * buffer space). + */ + if (xprt_lock_write(xprt, task)) { + xprt_alloc_slot(xprt, task); + xprt_release_write(xprt, task); + } } +EXPORT_SYMBOL_GPL(xprt_lock_and_alloc_slot); static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) { @@ -1083,20 +1104,9 @@ if (task->tk_rqstp != NULL) return; - /* Note: grabbing the xprt_lock_write() here is not strictly needed, - * but ensures that we throttle new slot allocation if the transport - * is congested (e.g. if reconnecting or if we're out of socket - * write buffer space). - */ task->tk_timeout = 0; task->tk_status = -EAGAIN; - if (!xprt_lock_write(xprt, task)) - return; - - spin_lock(&xprt->reserve_lock); - xprt_alloc_slot(task); - spin_unlock(&xprt->reserve_lock); - xprt_release_write(xprt, task); + xprt->ops->alloc_slot(xprt, task); } static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt) @@ -1133,10 +1143,18 @@ void xprt_release(struct rpc_task *task) { struct rpc_xprt *xprt; - struct rpc_rqst *req; + struct rpc_rqst *req = task->tk_rqstp; - if (!(req = task->tk_rqstp)) + if (req == NULL) { + if (task->tk_client) { + rcu_read_lock(); + xprt = rcu_dereference(task->tk_client->cl_xprt); + if (xprt->snd_task == task) + xprt_release_write(xprt, task); + rcu_read_unlock(); + } return; + } xprt = req->rq_xprt; if (task->tk_ops->rpc_count_stats != NULL) --- linux-3.5.0.orig/net/sunrpc/xprtsock.c +++ linux-3.5.0/net/sunrpc/xprtsock.c @@ -254,7 +254,6 @@ void (*old_data_ready)(struct sock *, int); void (*old_state_change)(struct sock *); void (*old_write_space)(struct sock *); - void (*old_error_report)(struct sock *); }; /* @@ -737,10 +736,10 @@ dprintk("RPC: sendmsg returned unrecognized error %d\n", -status); case -ECONNRESET: - case -EPIPE: xs_tcp_shutdown(xprt); case -ECONNREFUSED: case -ENOTCONN: + case -EPIPE: clear_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags); } @@ -781,7 +780,6 @@ transport->old_data_ready = sk->sk_data_ready; transport->old_state_change = sk->sk_state_change; transport->old_write_space = sk->sk_write_space; - transport->old_error_report = sk->sk_error_report; } static void xs_restore_old_callbacks(struct sock_xprt *transport, struct sock *sk) @@ -789,7 +787,6 @@ sk->sk_data_ready = transport->old_data_ready; sk->sk_state_change = transport->old_state_change; sk->sk_write_space = transport->old_write_space; - sk->sk_error_report = transport->old_error_report; } static void xs_reset_transport(struct sock_xprt *transport) @@ -1028,6 +1025,16 @@ read_unlock_bh(&sk->sk_callback_lock); } +/* + * Helper function to force a TCP close if the server is sending + * junk and/or it has put us in CLOSE_WAIT + */ +static void xs_tcp_force_close(struct rpc_xprt *xprt) +{ + set_bit(XPRT_CONNECTION_CLOSE, &xprt->state); + xprt_force_disconnect(xprt); +} + static inline void xs_tcp_read_fraghdr(struct rpc_xprt *xprt, struct xdr_skb_reader *desc) { struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); @@ -1054,7 +1061,7 @@ /* Sanity check of the record length */ if (unlikely(transport->tcp_reclen < 8)) { dprintk("RPC: invalid TCP record fragment length\n"); - xprt_force_disconnect(xprt); + xs_tcp_force_close(xprt); return; } dprintk("RPC: reading TCP record fragment of length %d\n", @@ -1135,7 +1142,7 @@ break; default: dprintk("RPC: invalid request message type\n"); - xprt_force_disconnect(&transport->xprt); + xs_tcp_force_close(&transport->xprt); } xs_tcp_check_fraghdr(transport); } @@ -1455,12 +1462,19 @@ xprt_clear_connecting(xprt); } -static void xs_sock_mark_closed(struct rpc_xprt *xprt) +static void xs_sock_reset_connection_flags(struct rpc_xprt *xprt) { smp_mb__before_clear_bit(); + clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); + clear_bit(XPRT_CONNECTION_CLOSE, &xprt->state); clear_bit(XPRT_CLOSE_WAIT, &xprt->state); clear_bit(XPRT_CLOSING, &xprt->state); smp_mb__after_clear_bit(); +} + +static void xs_sock_mark_closed(struct rpc_xprt *xprt) +{ + xs_sock_reset_connection_flags(xprt); /* Mark transport as closed and wake up all pending tasks */ xprt_disconnect_done(xprt); } @@ -1515,8 +1529,9 @@ break; case TCP_CLOSE_WAIT: /* The server initiated a shutdown of the socket */ - xprt_force_disconnect(xprt); xprt->connect_cookie++; + clear_bit(XPRT_CONNECTED, &xprt->state); + xs_tcp_force_close(xprt); case TCP_CLOSING: /* * If the server closed down the connection, make sure that @@ -1540,25 +1555,6 @@ read_unlock_bh(&sk->sk_callback_lock); } -/** - * xs_error_report - callback mainly for catching socket errors - * @sk: socket - */ -static void xs_error_report(struct sock *sk) -{ - struct rpc_xprt *xprt; - - read_lock_bh(&sk->sk_callback_lock); - if (!(xprt = xprt_from_sock(sk))) - goto out; - dprintk("RPC: %s client %p...\n" - "RPC: error %d\n", - __func__, xprt, sk->sk_err); - xprt_wake_pending_tasks(xprt, -EAGAIN); -out: - read_unlock_bh(&sk->sk_callback_lock); -} - static void xs_write_space(struct sock *sk) { struct socket *sock; @@ -1858,7 +1854,6 @@ sk->sk_user_data = xprt; sk->sk_data_ready = xs_local_data_ready; sk->sk_write_space = xs_udp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_allocation = GFP_ATOMIC; xprt_clear_connected(xprt); @@ -1895,6 +1890,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); status = __sock_create(xprt->xprt_net, AF_LOCAL, SOCK_STREAM, 0, &sock, 1); @@ -1928,6 +1925,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock) @@ -1944,7 +1942,6 @@ sk->sk_user_data = xprt; sk->sk_data_ready = xs_udp_data_ready; sk->sk_write_space = xs_udp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_no_check = UDP_CSUM_NORCV; sk->sk_allocation = GFP_ATOMIC; @@ -1970,6 +1967,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + /* Start by resetting any existing state */ xs_reset_transport(transport); sock = xs_create_sock(xprt, transport, @@ -1988,6 +1987,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } /* @@ -2009,10 +2009,8 @@ any.sa_family = AF_UNSPEC; result = kernel_connect(transport->sock, &any, sizeof(any), 0); if (!result) - xs_sock_mark_closed(&transport->xprt); - else - dprintk("RPC: AF_UNSPEC connect return code %d\n", - result); + xs_sock_reset_connection_flags(&transport->xprt); + dprintk("RPC: AF_UNSPEC connect return code %d\n", result); } static void xs_tcp_reuse_connection(struct sock_xprt *transport) @@ -2057,7 +2055,6 @@ sk->sk_data_ready = xs_tcp_data_ready; sk->sk_state_change = xs_tcp_state_change; sk->sk_write_space = xs_tcp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_allocation = GFP_ATOMIC; /* socket options */ @@ -2113,6 +2110,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + if (!sock) { clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); sock = xs_create_sock(xprt, transport, @@ -2151,8 +2150,7 @@ /* We're probably in TIME_WAIT. Get rid of existing socket, * and retry */ - set_bit(XPRT_CONNECTION_CLOSE, &xprt->state); - xprt_force_disconnect(xprt); + xs_tcp_force_close(xprt); break; case -ECONNREFUSED: case -ECONNRESET: @@ -2162,6 +2160,7 @@ case -EINPROGRESS: case -EALREADY: xprt_clear_connecting(xprt); + current->flags &= ~PF_FSTRANS; return; case -EINVAL: /* Happens, for instance, if the user specified a link @@ -2174,6 +2173,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } /** @@ -2423,6 +2423,7 @@ static struct rpc_xprt_ops xs_local_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xs_tcp_release_xprt, + .alloc_slot = xprt_alloc_slot, .rpcbind = xs_local_rpcbind, .set_port = xs_local_set_port, .connect = xs_connect, @@ -2439,6 +2440,7 @@ .set_buffer_size = xs_udp_set_buffer_size, .reserve_xprt = xprt_reserve_xprt_cong, .release_xprt = xprt_release_xprt_cong, + .alloc_slot = xprt_alloc_slot, .rpcbind = rpcb_getport_async, .set_port = xs_set_port, .connect = xs_connect, @@ -2456,6 +2458,7 @@ static struct rpc_xprt_ops xs_tcp_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xs_tcp_release_xprt, + .alloc_slot = xprt_lock_and_alloc_slot, .rpcbind = rpcb_getport_async, .set_port = xs_set_port, .connect = xs_connect, @@ -2475,6 +2478,7 @@ static struct rpc_xprt_ops bc_tcp_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xprt_release_xprt, + .alloc_slot = xprt_alloc_slot, .rpcbind = xs_local_rpcbind, .buf_alloc = bc_malloc, .buf_free = bc_free, --- linux-3.5.0.orig/net/sunrpc/rpcb_clnt.c +++ linux-3.5.0/net/sunrpc/rpcb_clnt.c @@ -251,7 +251,7 @@ if (IS_ERR(clnt)) { dprintk("RPC: failed to create AF_LOCAL rpcbind " "client (errno %ld).\n", PTR_ERR(clnt)); - result = -PTR_ERR(clnt); + result = PTR_ERR(clnt); goto out; } @@ -298,7 +298,7 @@ if (IS_ERR(clnt)) { dprintk("RPC: failed to create local rpcbind " "client (errno %ld).\n", PTR_ERR(clnt)); - result = -PTR_ERR(clnt); + result = PTR_ERR(clnt); goto out; } --- linux-3.5.0.orig/net/sunrpc/svc_xprt.c +++ linux-3.5.0/net/sunrpc/svc_xprt.c @@ -316,7 +316,6 @@ */ void svc_xprt_enqueue(struct svc_xprt *xprt) { - struct svc_serv *serv = xprt->xpt_server; struct svc_pool *pool; struct svc_rqst *rqstp; int cpu; @@ -362,8 +361,6 @@ rqstp, rqstp->rq_xprt); rqstp->rq_xprt = xprt; svc_xprt_get(xprt); - rqstp->rq_reserved = serv->sv_max_mesg; - atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); pool->sp_stats.threads_woken++; wake_up(&rqstp->rq_wait); } else { @@ -640,8 +637,6 @@ if (xprt) { rqstp->rq_xprt = xprt; svc_xprt_get(xprt); - rqstp->rq_reserved = serv->sv_max_mesg; - atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); /* As there is a shortage of threads and this request * had to be queued, don't allow the thread to wait so @@ -738,6 +733,8 @@ else len = xprt->xpt_ops->xpo_recvfrom(rqstp); dprintk("svc: got len=%d\n", len); + rqstp->rq_reserved = serv->sv_max_mesg; + atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); } svc_xprt_received(xprt); @@ -794,7 +791,8 @@ /* Grab mutex to serialize outgoing data. */ mutex_lock(&xprt->xpt_mutex); - if (test_bit(XPT_DEAD, &xprt->xpt_flags)) + if (test_bit(XPT_DEAD, &xprt->xpt_flags) + || test_bit(XPT_CLOSE, &xprt->xpt_flags)) len = -ENOTCONN; else len = xprt->xpt_ops->xpo_sendto(rqstp); @@ -816,7 +814,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"); @@ -837,25 +834,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); } --- linux-3.5.0.orig/net/sunrpc/sched.c +++ linux-3.5.0/net/sunrpc/sched.c @@ -143,6 +143,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", @@ -300,13 +302,20 @@ /* * Make an RPC task runnable. * - * Note: If the task is ASYNC, this must be called with - * the spinlock held to protect the wait queue operation. + * 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); @@ -399,8 +408,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); + } } /* @@ -790,7 +802,9 @@ static void rpc_async_schedule(struct work_struct *work) { + current->flags |= PF_FSTRANS; __rpc_execute(container_of(work, struct rpc_task, u.tk_work)); + current->flags &= ~PF_FSTRANS; } /** @@ -913,16 +927,35 @@ return task; } +/* + * rpc_free_task - release rpc task and perform cleanups + * + * Note that we free up the rpc_task _after_ rpc_release_calldata() + * in order to work around a workqueue dependency issue. + * + * Tejun Heo states: + * "Workqueue currently considers two work items to be the same if they're + * on the same address and won't execute them concurrently - ie. it + * makes a work item which is queued again while being executed wait + * for the previous execution to complete. + * + * If a work function frees the work item, and then waits for an event + * which should be performed by another work item and *that* work item + * recycles the freed work item, it can create a false dependency loop. + * There really is no reliable way to detect this short of verifying + * every memory free." + * + */ static void rpc_free_task(struct rpc_task *task) { - const struct rpc_call_ops *tk_ops = task->tk_ops; - void *calldata = task->tk_calldata; + unsigned short tk_flags = task->tk_flags; + + rpc_release_calldata(task->tk_ops, task->tk_calldata); - if (task->tk_flags & RPC_TASK_DYNAMIC) { + if (tk_flags & RPC_TASK_DYNAMIC) { dprintk("RPC: %5u freeing task\n", task->tk_pid); mempool_free(task, rpc_task_mempool); } - rpc_release_calldata(tk_ops, calldata); } static void rpc_async_release(struct work_struct *work) @@ -932,8 +965,7 @@ static void rpc_release_resources_task(struct rpc_task *task) { - if (task->tk_rqstp) - xprt_release(task); + xprt_release(task); if (task->tk_msg.rpc_cred) { put_rpccred(task->tk_msg.rpc_cred); task->tk_msg.rpc_cred = NULL; --- linux-3.5.0.orig/net/sunrpc/rpc_pipe.c +++ linux-3.5.0/net/sunrpc/rpc_pipe.c @@ -1152,14 +1152,19 @@ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); mutex_lock(&sn->pipefs_sb_lock); + if (sn->pipefs_sb != sb) { + mutex_unlock(&sn->pipefs_sb_lock); + goto out; + } sn->pipefs_sb = NULL; mutex_unlock(&sn->pipefs_sb_lock); - put_net(net); dprintk("RPC: sending pipefs UMOUNT notification for net %p%s\n", net, NET_NAME(net)); blocking_notifier_call_chain(&rpc_pipefs_notifier_list, RPC_PIPEFS_UMOUNT, sb); + put_net(net); +out: kill_litter_super(sb); } --- linux-3.5.0.orig/net/sunrpc/xprtrdma/transport.c +++ linux-3.5.0/net/sunrpc/xprtrdma/transport.c @@ -200,6 +200,7 @@ int rc = 0; if (!xprt->shutdown) { + current->flags |= PF_FSTRANS; xprt_clear_connected(xprt); dprintk("RPC: %s: %sconnect\n", __func__, @@ -212,10 +213,10 @@ out: xprt_wake_pending_tasks(xprt, rc); - out_clear: dprintk("RPC: %s: exit\n", __func__); xprt_clear_connecting(xprt); + current->flags &= ~PF_FSTRANS; } /* @@ -712,6 +713,7 @@ static struct rpc_xprt_ops xprt_rdma_procs = { .reserve_xprt = xprt_rdma_reserve_xprt, .release_xprt = xprt_release_xprt_cong, /* sunrpc/xprt.c */ + .alloc_slot = xprt_alloc_slot, .release_request = xprt_release_rqst_cong, /* ditto */ .set_retrans_timeout = xprt_set_retrans_timeout_def, /* ditto */ .rpcbind = rpcb_getport_async, /* sunrpc/rpcb_clnt.c */ --- linux-3.5.0.orig/net/rds/ib_send.c +++ linux-3.5.0/net/rds/ib_send.c @@ -544,7 +544,7 @@ int flow_controlled = 0; int nr_sig = 0; - BUG_ON(off % RDS_FRAG_SIZE); + BUG_ON(!conn->c_loopback && off % RDS_FRAG_SIZE); BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); /* Do not send cong updates to IB loopback */ --- linux-3.5.0.orig/net/rds/recv.c +++ linux-3.5.0/net/rds/recv.c @@ -410,6 +410,8 @@ rdsdebug("size %zu flags 0x%x timeo %ld\n", size, msg_flags, timeo); + msg->msg_namelen = 0; + if (msg_flags & MSG_OOB) goto out; @@ -485,6 +487,7 @@ sin->sin_port = inc->i_hdr.h_sport; sin->sin_addr.s_addr = inc->i_saddr; memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); + msg->msg_namelen = sizeof(*sin); } break; } --- linux-3.5.0.orig/net/rds/send.c +++ linux-3.5.0/net/rds/send.c @@ -1122,7 +1122,7 @@ rds_stats_inc(s_send_pong); if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags)) - rds_send_xmit(conn); + queue_delayed_work(rds_wq, &conn->c_send_w, 0); rds_message_put(rm); return 0; --- linux-3.5.0.orig/net/rds/message.c +++ linux-3.5.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-3.5.0.orig/net/xfrm/xfrm_user.c +++ linux-3.5.0/net/xfrm/xfrm_user.c @@ -123,9 +123,21 @@ struct nlattr **attrs) { struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; + struct xfrm_replay_state_esn *rs; - if ((p->flags & XFRM_STATE_ESN) && !rt) - return -EINVAL; + if (p->flags & XFRM_STATE_ESN) { + if (!rt) + return -EINVAL; + + rs = nla_data(rt); + + if (rs->bmp_len > XFRMA_REPLAY_ESN_MAX / sizeof(rs->bmp[0]) / 8) + return -EINVAL; + + if (nla_len(rt) < xfrm_replay_state_esn_len(rs) && + nla_len(rt) != sizeof(*rs)) + return -EINVAL; + } if (!rt) return 0; @@ -370,14 +382,15 @@ struct nlattr *rp) { struct xfrm_replay_state_esn *up; + int ulen; if (!replay_esn || !rp) return 0; up = nla_data(rp); + ulen = xfrm_replay_state_esn_len(up); - if (xfrm_replay_state_esn_len(replay_esn) != - xfrm_replay_state_esn_len(up)) + if (nla_len(rp) < ulen || xfrm_replay_state_esn_len(replay_esn) != ulen) return -EINVAL; return 0; @@ -388,22 +401,28 @@ struct nlattr *rta) { struct xfrm_replay_state_esn *p, *pp, *up; + int klen, ulen; if (!rta) return 0; up = nla_data(rta); + klen = xfrm_replay_state_esn_len(up); + ulen = nla_len(rta) >= klen ? klen : sizeof(*up); - p = kmemdup(up, xfrm_replay_state_esn_len(up), GFP_KERNEL); + p = kzalloc(klen, GFP_KERNEL); if (!p) return -ENOMEM; - pp = kmemdup(up, xfrm_replay_state_esn_len(up), GFP_KERNEL); + pp = kzalloc(klen, GFP_KERNEL); if (!pp) { kfree(p); return -ENOMEM; } + memcpy(p, up, ulen); + memcpy(pp, up, ulen); + *replay_esn = p; *preplay_esn = pp; @@ -442,10 +461,11 @@ * somehow made shareable and move it to xfrm_state.c - JHS * */ -static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs) +static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, + int update_esn) { struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; - struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; + struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; @@ -555,7 +575,7 @@ goto error; /* override default values from above */ - xfrm_update_ae_params(x, attrs); + xfrm_update_ae_params(x, attrs, 0); return x; @@ -689,6 +709,7 @@ static void copy_to_user_state(struct xfrm_state *x, struct xfrm_usersa_info *p) { + memset(p, 0, sizeof(*p)); memcpy(&p->id, &x->id, sizeof(p->id)); memcpy(&p->sel, &x->sel, sizeof(p->sel)); memcpy(&p->lft, &x->lft, sizeof(p->lft)); @@ -742,7 +763,7 @@ return -EMSGSIZE; algo = nla_data(nla); - strcpy(algo->alg_name, auth->alg_name); + strncpy(algo->alg_name, auth->alg_name, sizeof(algo->alg_name)); memcpy(algo->alg_key, auth->alg_key, (auth->alg_key_len + 7) / 8); algo->alg_key_len = auth->alg_key_len; @@ -872,6 +893,7 @@ { struct xfrm_dump_info info; struct sk_buff *skb; + int err; skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); if (!skb) @@ -882,9 +904,10 @@ info.nlmsg_seq = seq; info.nlmsg_flags = 0; - if (dump_one_state(x, 0, &info)) { + err = dump_one_state(x, 0, &info); + if (err) { kfree_skb(skb); - return NULL; + return ERR_PTR(err); } return skb; @@ -1309,6 +1332,7 @@ static void copy_to_user_policy(struct xfrm_policy *xp, struct xfrm_userpolicy_info *p, int dir) { + memset(p, 0, sizeof(*p)); memcpy(&p->sel, &xp->selector, sizeof(p->sel)); memcpy(&p->lft, &xp->lft, sizeof(p->lft)); memcpy(&p->curlft, &xp->curlft, sizeof(p->curlft)); @@ -1413,6 +1437,7 @@ struct xfrm_user_tmpl *up = &vec[i]; struct xfrm_tmpl *kp = &xp->xfrm_vec[i]; + memset(up, 0, sizeof(*up)); memcpy(&up->id, &kp->id, sizeof(up->id)); up->family = kp->encap_family; memcpy(&up->saddr, &kp->saddr, sizeof(up->saddr)); @@ -1541,6 +1566,7 @@ { struct xfrm_dump_info info; struct sk_buff *skb; + int err; skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!skb) @@ -1551,9 +1577,10 @@ info.nlmsg_seq = seq; info.nlmsg_flags = 0; - if (dump_one_policy(xp, dir, 0, &info) < 0) { + err = dump_one_policy(xp, dir, 0, &info); + if (err) { kfree_skb(skb); - return NULL; + return ERR_PTR(err); } return skb; @@ -1812,7 +1839,7 @@ goto out; spin_lock_bh(&x->lock); - xfrm_update_ae_params(x, attrs); + xfrm_update_ae_params(x, attrs, 1); spin_unlock_bh(&x->lock); c.event = nlh->nlmsg_type; --- linux-3.5.0.orig/net/xfrm/xfrm_replay.c +++ linux-3.5.0/net/xfrm/xfrm_replay.c @@ -420,6 +420,18 @@ return -EINVAL; } +static int xfrm_replay_recheck_esn(struct xfrm_state *x, + struct sk_buff *skb, __be32 net_seq) +{ + if (unlikely(XFRM_SKB_CB(skb)->seq.input.hi != + htonl(xfrm_replay_seqhi(x, net_seq)))) { + x->stats.replay_window++; + return -EINVAL; + } + + return xfrm_replay_check_esn(x, skb, net_seq); +} + static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq) { unsigned int bitnr, nr, i; @@ -479,6 +491,7 @@ static struct xfrm_replay xfrm_replay_legacy = { .advance = xfrm_replay_advance, .check = xfrm_replay_check, + .recheck = xfrm_replay_check, .notify = xfrm_replay_notify, .overflow = xfrm_replay_overflow, }; @@ -486,6 +499,7 @@ static struct xfrm_replay xfrm_replay_bmp = { .advance = xfrm_replay_advance_bmp, .check = xfrm_replay_check_bmp, + .recheck = xfrm_replay_check_bmp, .notify = xfrm_replay_notify_bmp, .overflow = xfrm_replay_overflow_bmp, }; @@ -493,6 +507,7 @@ static struct xfrm_replay xfrm_replay_esn = { .advance = xfrm_replay_advance_esn, .check = xfrm_replay_check_esn, + .recheck = xfrm_replay_recheck_esn, .notify = xfrm_replay_notify_bmp, .overflow = xfrm_replay_overflow_esn, }; --- linux-3.5.0.orig/net/xfrm/xfrm_policy.c +++ linux-3.5.0/net/xfrm/xfrm_policy.c @@ -1763,7 +1763,7 @@ if (!afinfo) { dst_release(dst_orig); - ret = ERR_PTR(-EINVAL); + return ERR_PTR(-EINVAL); } else { ret = afinfo->blackhole_route(net, dst_orig); } --- linux-3.5.0.orig/net/xfrm/xfrm_input.c +++ linux-3.5.0/net/xfrm/xfrm_input.c @@ -212,7 +212,7 @@ /* only the first xfrm gets the encap type */ encap_type = 0; - if (async && x->repl->check(x, skb, seq)) { + if (async && x->repl->recheck(x, skb, seq)) { XFRM_INC_STATS(net, LINUX_MIB_XFRMINSTATESEQERROR); goto drop_unlock; } --- linux-3.5.0.orig/net/mac80211/mlme.c +++ linux-3.5.0/net/mac80211/mlme.c @@ -994,12 +994,8 @@ if (beaconint_us > latency) { local->ps_sdata = NULL; } else { - struct ieee80211_bss *bss; int maxslp = 1; - u8 dtimper; - - bss = (void *)found->u.mgd.associated->priv; - dtimper = bss->dtim_period; + u8 dtimper = found->u.mgd.dtim_period; /* If the TIM IE is invalid, pretend the value is 1 */ if (!dtimper) @@ -1305,10 +1301,17 @@ ieee80211_led_assoc(local, 1); - if (local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) - bss_conf->dtim_period = bss->dtim_period; - else + if (local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { + /* + * If the AP is buggy we may get here with no DTIM period + * known, so assume it's 1 which is the only safe assumption + * in that case, although if the TIM IE is broken powersave + * probably just won't work at all. + */ + bss_conf->dtim_period = sdata->u.mgd.dtim_period ?: 1; + } else { bss_conf->dtim_period = 0; + } bss_conf->assoc = 1; @@ -1441,6 +1444,8 @@ del_timer_sync(&sdata->u.mgd.bcn_mon_timer); del_timer_sync(&sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.chswitch_timer); + + sdata->vif.bss_conf.dtim_period = 0; } void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata, @@ -1805,7 +1810,8 @@ if (status_code != WLAN_STATUS_SUCCESS) { printk(KERN_DEBUG "%s: %pM denied authentication (status %d)\n", sdata->name, mgmt->sa, status_code); - goto out; + ieee80211_destroy_auth_data(sdata, false); + return RX_MGMT_CFG80211_RX_AUTH; } switch (ifmgd->auth_data->algorithm) { @@ -1827,7 +1833,6 @@ } printk(KERN_DEBUG "%s: authenticated\n", sdata->name); - out: ifmgd->auth_data->done = true; ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC; run_again(ifmgd, ifmgd->auth_data->timeout); @@ -2205,11 +2210,18 @@ struct ieee80211_channel *channel; bool need_ps = false; - if (sdata->u.mgd.associated && - ether_addr_equal(mgmt->bssid, sdata->u.mgd.associated->bssid)) { - bss = (void *)sdata->u.mgd.associated->priv; + if ((sdata->u.mgd.associated && + ether_addr_equal(mgmt->bssid, sdata->u.mgd.associated->bssid)) || + (sdata->u.mgd.assoc_data && + ether_addr_equal(mgmt->bssid, + sdata->u.mgd.assoc_data->bss->bssid))) { /* not previously set so we may need to recalc */ - need_ps = !bss->dtim_period; + need_ps = sdata->u.mgd.associated && !sdata->u.mgd.dtim_period; + + if (elems->tim && !elems->parse_error) { + struct ieee80211_tim_ie *tim_ie = elems->tim; + sdata->u.mgd.dtim_period = tim_ie->dtim_period; + } } if (elems->ds_params && elems->ds_params_len == 1) @@ -3270,6 +3282,8 @@ goto out_unlock; err_clear: + memset(ifmgd->bssid, 0, ETH_ALEN); + ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID); ifmgd->auth_data = NULL; err_free: kfree(auth_data); @@ -3411,20 +3425,39 @@ /* kick off associate process */ ifmgd->assoc_data = assoc_data; + ifmgd->dtim_period = 0; err = ieee80211_prep_connection(sdata, req->bss, true); if (err) goto err_clear; - if (!bss->dtim_period && - sdata->local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { - /* - * Wait up to one beacon interval ... - * should this be more if we miss one? - */ - printk(KERN_DEBUG "%s: waiting for beacon from %pM\n", - sdata->name, ifmgd->bssid); - assoc_data->timeout = TU_TO_EXP_TIME(req->bss->beacon_interval); + if (sdata->local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { + const u8 *beacon_ies = req->bss->beacon_ies; + size_t beacon_ies_len = req->bss->len_beacon_ies; + + if (!beacon_ies_len) { + /* + * Wait up to one beacon interval ... + * should this be more if we miss one? + */ + printk(KERN_DEBUG "%s: waiting for beacon from %pM\n", + sdata->name, ifmgd->bssid); + assoc_data->timeout = + TU_TO_EXP_TIME(req->bss->beacon_interval); + } else { + const u8 *tim_ie = cfg80211_find_ie(WLAN_EID_TIM, + beacon_ies, + beacon_ies_len); + if (tim_ie && tim_ie[1] >= + sizeof(struct ieee80211_tim_ie)) { + const struct ieee80211_tim_ie *tim; + tim = (void *)(tim_ie + 2); + ifmgd->dtim_period = tim->dtim_period; + } + assoc_data->have_beacon = true; + assoc_data->sent_assoc = false; + assoc_data->timeout = jiffies; + } } else { assoc_data->have_beacon = true; assoc_data->sent_assoc = false; @@ -3449,6 +3482,8 @@ err = 0; goto out; err_clear: + memset(ifmgd->bssid, 0, ETH_ALEN); + ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID); ifmgd->assoc_data = NULL; err_free: kfree(assoc_data); @@ -3463,6 +3498,7 @@ { struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; u8 frame_buf[DEAUTH_DISASSOC_LEN]; + bool tx = !req->local_state_change; mutex_lock(&ifmgd->mtx); @@ -3479,11 +3515,11 @@ if (ifmgd->associated && ether_addr_equal(ifmgd->associated->bssid, req->bssid)) ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, - req->reason_code, true, frame_buf); + req->reason_code, tx, frame_buf); else ieee80211_send_deauth_disassoc(sdata, req->bssid, IEEE80211_STYPE_DEAUTH, - req->reason_code, true, + req->reason_code, tx, frame_buf); mutex_unlock(&ifmgd->mtx); --- linux-3.5.0.orig/net/mac80211/work.c +++ linux-3.5.0/net/mac80211/work.c @@ -150,7 +150,7 @@ } if (!started && !local->tmp_channel) { - ieee80211_offchannel_stop_vifs(local, true); + ieee80211_offchannel_stop_vifs(local); local->tmp_channel = wk->chan; local->tmp_channel_type = wk->chan_type; @@ -222,7 +222,7 @@ local->tmp_channel = NULL; ieee80211_hw_config(local, 0); - ieee80211_offchannel_return(local, true); + ieee80211_offchannel_return(local); /* give connection some time to breathe */ run_again(local, jiffies + HZ/2); --- linux-3.5.0.orig/net/mac80211/iface.c +++ linux-3.5.0/net/mac80211/iface.c @@ -711,7 +711,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (info->control.vif == &sdata->vif) { __skb_unlink(skb, &local->pending[i]); - dev_kfree_skb_irq(skb); + ieee80211_free_txskb(&local->hw, skb); } } } @@ -1408,6 +1408,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-3.5.0.orig/net/mac80211/mesh.c +++ linux-3.5.0/net/mac80211/mesh.c @@ -621,6 +621,7 @@ del_timer_sync(&sdata->u.mesh.housekeeping_timer); del_timer_sync(&sdata->u.mesh.mesh_path_root_timer); + del_timer_sync(&sdata->u.mesh.mesh_path_timer); /* * If the timer fired while we waited for it, it will have * requeued the work. Now the work will be running again --- linux-3.5.0.orig/net/mac80211/rx.c +++ linux-3.5.0/net/mac80211/rx.c @@ -514,6 +514,11 @@ if (ieee80211_is_action(hdr->frame_control)) { u8 category; + + /* make sure category field is present */ + if (rx->skb->len < IEEE80211_MIN_ACTION_SIZE) + return RX_DROP_MONITOR; + mgmt = (struct ieee80211_mgmt *)hdr; category = mgmt->u.action.category; if (category != WLAN_CATEGORY_MESH_ACTION && @@ -869,14 +874,16 @@ */ if (rx->sta && rx->sdata->vif.type == NL80211_IFTYPE_STATION && ieee80211_is_data_present(hdr->frame_control)) { - u16 ethertype; - u8 *payload; + unsigned int hdrlen; + __be16 ethertype; - payload = rx->skb->data + - ieee80211_hdrlen(hdr->frame_control); - ethertype = (payload[6] << 8) | payload[7]; - if (cpu_to_be16(ethertype) == - rx->sdata->control_port_protocol) + hdrlen = ieee80211_hdrlen(hdr->frame_control); + + if (rx->skb->len < hdrlen + 8) + return RX_DROP_MONITOR; + + skb_copy_bits(rx->skb, hdrlen + 6, ðertype, 2); + if (ethertype == rx->sdata->control_port_protocol) return RX_CONTINUE; } @@ -1465,11 +1472,14 @@ hdr = (struct ieee80211_hdr *)rx->skb->data; fc = hdr->frame_control; + + if (ieee80211_is_ctl(fc)) + return RX_CONTINUE; + sc = le16_to_cpu(hdr->seq_ctrl); frag = sc & IEEE80211_SCTL_FRAG; if (likely((!ieee80211_has_morefrags(fc) && frag == 0) || - (rx->skb)->len < 24 || is_multicast_ether_addr(hdr->addr1))) { /* not fragmented */ goto out; @@ -1892,6 +1902,20 @@ hdr = (struct ieee80211_hdr *) skb->data; hdrlen = ieee80211_hdrlen(hdr->frame_control); + + /* make sure fixed part of mesh header is there, also checks skb len */ + if (!pskb_may_pull(rx->skb, hdrlen + 6)) + return RX_DROP_MONITOR; + + mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); + + /* make sure full mesh header is there, also checks skb len */ + if (!pskb_may_pull(rx->skb, + hdrlen + ieee80211_get_mesh_hdrlen(mesh_hdr))) + return RX_DROP_MONITOR; + + /* reload pointers */ + hdr = (struct ieee80211_hdr *) skb->data; mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); /* frame is in RMC, don't forward */ @@ -1900,7 +1924,8 @@ mesh_rmc_check(hdr->addr3, mesh_hdr, rx->sdata)) return RX_DROP_MONITOR; - if (!ieee80211_is_data(hdr->frame_control)) + if (!ieee80211_is_data(hdr->frame_control) || + !(status->rx_flags & IEEE80211_RX_RA_MATCH)) return RX_CONTINUE; if (!mesh_hdr->ttl) @@ -1914,9 +1939,12 @@ if (is_multicast_ether_addr(hdr->addr1)) { mpp_addr = hdr->addr3; proxied_addr = mesh_hdr->eaddr1; - } else { + } else if (mesh_hdr->flags & MESH_FLAGS_AE_A5_A6) { + /* has_a4 already checked in ieee80211_rx_mesh_check */ mpp_addr = hdr->addr4; proxied_addr = mesh_hdr->eaddr2; + } else { + return RX_DROP_MONITOR; } rcu_read_lock(); @@ -1944,9 +1972,6 @@ } skb_set_queue_mapping(skb, q); - if (!(status->rx_flags & IEEE80211_RX_RA_MATCH)) - goto out; - if (!--mesh_hdr->ttl) { IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_ttl); return RX_DROP_MONITOR; @@ -2357,6 +2382,10 @@ } break; case WLAN_CATEGORY_SELF_PROTECTED: + if (len < (IEEE80211_MIN_ACTION_SIZE + + sizeof(mgmt->u.action.u.self_prot.action_code))) + break; + switch (mgmt->u.action.u.self_prot.action_code) { case WLAN_SP_MESH_PEERING_OPEN: case WLAN_SP_MESH_PEERING_CLOSE: @@ -2375,6 +2404,10 @@ } break; case WLAN_CATEGORY_MESH_ACTION: + if (len < (IEEE80211_MIN_ACTION_SIZE + + sizeof(mgmt->u.action.u.mesh_action.action_code))) + break; + if (!ieee80211_vif_is_mesh(&sdata->vif)) break; if (mesh_action_is_path_sel(mgmt) && @@ -2828,6 +2861,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 (!(status->rx_flags & IEEE80211_RX_IN_SCAN) && ieee80211_is_public_action(hdr, skb->len)) return 1; @@ -2921,10 +2957,15 @@ test_bit(SCAN_SW_SCANNING, &local->scanning))) status->rx_flags |= IEEE80211_RX_IN_SCAN; - if (ieee80211_is_mgmt(fc)) - err = skb_linearize(skb); - else + if (ieee80211_is_mgmt(fc)) { + /* drop frame if too short for header */ + if (skb->len < ieee80211_hdrlen(fc)) + err = -ENOBUFS; + else + err = skb_linearize(skb); + } else { err = !pskb_may_pull(skb, ieee80211_hdrlen(fc)); + } if (err) { dev_kfree_skb(skb); --- linux-3.5.0.orig/net/mac80211/tx.c +++ linux-3.5.0/net/mac80211/tx.c @@ -358,7 +358,7 @@ total += skb_queue_len(&sta->ps_tx_buf[ac]); if (skb) { purged++; - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); break; } } @@ -478,7 +478,7 @@ net_dbg_ratelimited("%s: STA %pM TX buffer for AC %d full - dropping oldest frame\n", tx->sdata->name, sta->sta.addr, ac); #endif - dev_kfree_skb(old); + ieee80211_free_txskb(&local->hw, old); } else tx->local->total_ps_buffered++; @@ -1112,7 +1112,7 @@ spin_unlock(&tx->sta->lock); if (purge_skb) - dev_kfree_skb(purge_skb); + ieee80211_free_txskb(&tx->local->hw, purge_skb); } /* reset session timer */ @@ -1223,7 +1223,7 @@ #ifdef CONFIG_MAC80211_VERBOSE_DEBUG if (WARN_ON_ONCE(q >= local->hw.queues)) { __skb_unlink(skb, skbs); - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } #endif @@ -1368,9 +1368,9 @@ if (unlikely(res == TX_DROP)) { I802_DEBUG_INC(tx->local->tx_handlers_drop); if (tx->skb) - dev_kfree_skb(tx->skb); + ieee80211_free_txskb(&tx->local->hw, tx->skb); else - __skb_queue_purge(&tx->skbs); + ieee80211_purge_tx_queue(&tx->local->hw, &tx->skbs); return -1; } else if (unlikely(res == TX_QUEUED)) { I802_DEBUG_INC(tx->local->tx_handlers_queued); @@ -1405,7 +1405,7 @@ res_prepare = ieee80211_tx_prepare(sdata, &tx, skb); if (unlikely(res_prepare == TX_DROP)) { - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); goto out; } else if (unlikely(res_prepare == TX_QUEUED)) { goto out; @@ -1478,7 +1478,7 @@ headroom = max_t(int, 0, headroom); if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) { - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); rcu_read_unlock(); return; } @@ -2075,8 +2075,10 @@ head_need += IEEE80211_ENCRYPT_HEADROOM; head_need += local->tx_headroom; head_need = max_t(int, 0, head_need); - if (ieee80211_skb_resize(sdata, skb, head_need, true)) - goto fail; + if (ieee80211_skb_resize(sdata, skb, head_need, true)) { + ieee80211_free_txskb(&local->hw, skb); + return NETDEV_TX_OK; + } } if (encaps_data) { @@ -2145,10 +2147,13 @@ */ void ieee80211_clear_tx_pending(struct ieee80211_local *local) { + struct sk_buff *skb; int i; - for (i = 0; i < local->hw.queues; i++) - skb_queue_purge(&local->pending[i]); + for (i = 0; i < local->hw.queues; i++) { + while ((skb = skb_dequeue(&local->pending[i])) != NULL) + ieee80211_free_txskb(&local->hw, skb); + } } /* @@ -2211,7 +2216,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } @@ -2733,7 +2738,7 @@ void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb, int tid) { - int ac = ieee802_1d_to_ac[tid]; + int ac = ieee802_1d_to_ac[tid & 7]; skb_set_mac_header(skb, 0); skb_set_network_header(skb, 0); --- linux-3.5.0.orig/net/mac80211/wpa.c +++ linux-3.5.0/net/mac80211/wpa.c @@ -106,7 +106,8 @@ if (status->flag & RX_FLAG_MMIC_ERROR) goto mic_fail; - if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key) + if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key && + rx->key->conf.cipher == WLAN_CIPHER_SUITE_TKIP) goto update_iv; return RX_CONTINUE; --- linux-3.5.0.orig/net/mac80211/sta_info.c +++ linux-3.5.0/net/mac80211/sta_info.c @@ -591,7 +591,7 @@ */ if (!skb) break; - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } /* @@ -622,7 +622,7 @@ printk(KERN_DEBUG "Buffered frame expired (STA %pM)\n", sta->sta.addr); #endif - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } /* @@ -664,6 +664,7 @@ struct ieee80211_sub_if_data *sdata; int ret, i, ac; struct tid_ampdu_tx *tid_tx; + bool have_key = false; might_sleep(); @@ -691,12 +692,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--; @@ -738,8 +746,8 @@ for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { local->total_ps_buffered -= skb_queue_len(&sta->ps_tx_buf[ac]); - __skb_queue_purge(&sta->ps_tx_buf[ac]); - __skb_queue_purge(&sta->tx_filtered[ac]); + ieee80211_purge_tx_queue(&local->hw, &sta->ps_tx_buf[ac]); + ieee80211_purge_tx_queue(&local->hw, &sta->tx_filtered[ac]); } #ifdef CONFIG_MAC80211_MESH @@ -774,7 +782,7 @@ tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]); if (!tid_tx) continue; - __skb_queue_purge(&tid_tx->pending); + ieee80211_purge_tx_queue(&local->hw, &tid_tx->pending); kfree(tid_tx); } @@ -844,7 +852,7 @@ void sta_info_stop(struct ieee80211_local *local) { - del_timer(&local->sta_cleanup); + del_timer_sync(&local->sta_cleanup); sta_info_flush(local, NULL); } @@ -959,6 +967,7 @@ struct ieee80211_local *local = sdata->local; struct sk_buff_head pending; int filtered = 0, buffered = 0, ac; + unsigned long flags; clear_sta_flag(sta, WLAN_STA_SP); @@ -974,12 +983,16 @@ for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { int count = skb_queue_len(&pending), tmp; + spin_lock_irqsave(&sta->tx_filtered[ac].lock, flags); skb_queue_splice_tail_init(&sta->tx_filtered[ac], &pending); + spin_unlock_irqrestore(&sta->tx_filtered[ac].lock, flags); tmp = skb_queue_len(&pending); filtered += tmp - count; count = tmp; + spin_lock_irqsave(&sta->ps_tx_buf[ac].lock, flags); skb_queue_splice_tail_init(&sta->ps_tx_buf[ac], &pending); + spin_unlock_irqrestore(&sta->ps_tx_buf[ac].lock, flags); tmp = skb_queue_len(&pending); buffered += tmp - count; } --- linux-3.5.0.orig/net/mac80211/status.c +++ linux-3.5.0/net/mac80211/status.c @@ -34,7 +34,7 @@ skb_queue_len(&local->skb_queue_unreliable); while (tmp > IEEE80211_IRQSAFE_QUEUE_LIMIT && (skb = skb_dequeue(&local->skb_queue_unreliable))) { - dev_kfree_skb_irq(skb); + ieee80211_free_txskb(hw, skb); tmp--; I802_DEBUG_INC(local->tx_status_drop); } @@ -162,7 +162,7 @@ skb_queue_len(&sta->tx_filtered[ac]), !!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies); #endif - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid) @@ -435,7 +435,11 @@ IEEE80211_BAR_CTRL_TID_INFO_MASK) >> IEEE80211_BAR_CTRL_TID_INFO_SHIFT; - ieee80211_set_bar_pending(sta, tid, ssn); + if (local->hw.flags & + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL) + ieee80211_stop_tx_ba_session(&sta->sta, tid); + else + ieee80211_set_bar_pending(sta, tid, ssn); } } @@ -666,3 +670,12 @@ dev_kfree_skb_any(skb); } EXPORT_SYMBOL(ieee80211_free_txskb); + +void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, + struct sk_buff_head *skbs) +{ + struct sk_buff *skb; + + while ((skb = __skb_dequeue(skbs))) + ieee80211_free_txskb(hw, skb); +} --- linux-3.5.0.orig/net/mac80211/scan.c +++ linux-3.5.0/net/mac80211/scan.c @@ -112,19 +112,6 @@ bss->valid_data |= IEEE80211_BSS_VALID_ERP; } - if (elems->tim && (!elems->parse_error || - !(bss->valid_data & IEEE80211_BSS_VALID_DTIM))) { - struct ieee80211_tim_ie *tim_ie = - (struct ieee80211_tim_ie *)elems->tim; - bss->dtim_period = tim_ie->dtim_period; - if (!elems->parse_error) - bss->valid_data |= IEEE80211_BSS_VALID_DTIM; - } - - /* If the beacon had no TIM IE, or it was invalid, use 1 */ - if (beacon && !bss->dtim_period) - bss->dtim_period = 1; - /* replace old supported rates if we get new values */ if (!elems->parse_error || !(bss->valid_data & IEEE80211_BSS_VALID_RATES)) { @@ -315,7 +302,7 @@ if (!was_hw_scan) { ieee80211_configure_filter(local); drv_sw_scan_complete(local); - ieee80211_offchannel_return(local, true); + ieee80211_offchannel_return(local); } ieee80211_recalc_idle(local); @@ -360,7 +347,7 @@ local->next_scan_state = SCAN_DECISION; local->scan_channel_idx = 0; - ieee80211_offchannel_stop_vifs(local, true); + ieee80211_offchannel_stop_vifs(local); ieee80211_configure_filter(local); @@ -679,12 +666,8 @@ local->scan_channel = NULL; ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); - /* - * Re-enable vifs and beaconing. Leave PS - * in off-channel state..will put that back - * on-channel at the end of scanning. - */ - ieee80211_offchannel_return(local, false); + /* disable PS */ + ieee80211_offchannel_return(local); *next_delay = HZ / 5; /* afterwards, resume scan & go to next channel */ @@ -694,8 +677,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local, unsigned long *next_delay) { - /* PS already is in off-channel mode */ - ieee80211_offchannel_stop_vifs(local, false); + ieee80211_offchannel_stop_vifs(local); if (local->ops->flush) { drv_flush(local, false); @@ -817,9 +799,9 @@ return res; } -int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, - const u8 *ssid, u8 ssid_len, - struct ieee80211_channel *chan) +int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, + const u8 *ssid, u8 ssid_len, + struct ieee80211_channel *chan) { struct ieee80211_local *local = sdata->local; int ret = -EBUSY; @@ -833,22 +815,36 @@ /* fill internal scan request */ if (!chan) { - int i, nchan = 0; + int i, max_n; + int n_ch = 0; for (band = 0; band < IEEE80211_NUM_BANDS; band++) { if (!local->hw.wiphy->bands[band]) continue; - for (i = 0; - i < local->hw.wiphy->bands[band]->n_channels; - i++) { - local->int_scan_req->channels[nchan] = + + max_n = local->hw.wiphy->bands[band]->n_channels; + for (i = 0; i < max_n; i++) { + struct ieee80211_channel *tmp_ch = &local->hw.wiphy->bands[band]->channels[i]; - nchan++; + + if (tmp_ch->flags & (IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_DISABLED)) + continue; + + local->int_scan_req->channels[n_ch] = tmp_ch; + n_ch++; } } - local->int_scan_req->n_channels = nchan; + if (WARN_ON_ONCE(n_ch == 0)) + goto unlock; + + local->int_scan_req->n_channels = n_ch; } else { + if (WARN_ON_ONCE(chan->flags & (IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_DISABLED))) + goto unlock; + local->int_scan_req->channels[0] = chan; local->int_scan_req->n_channels = 1; } --- linux-3.5.0.orig/net/mac80211/offchannel.c +++ linux-3.5.0/net/mac80211/offchannel.c @@ -103,8 +103,7 @@ ieee80211_sta_reset_conn_monitor(sdata); } -void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, - bool offchannel_ps_enable) +void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local) { struct ieee80211_sub_if_data *sdata; @@ -129,8 +128,7 @@ if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { netif_tx_stop_all_queues(sdata->dev); - if (offchannel_ps_enable && - (sdata->vif.type == NL80211_IFTYPE_STATION) && + if (sdata->vif.type == NL80211_IFTYPE_STATION && sdata->u.mgd.associated) ieee80211_offchannel_ps_enable(sdata, true); } @@ -138,8 +136,7 @@ mutex_unlock(&local->iflist_mtx); } -void ieee80211_offchannel_return(struct ieee80211_local *local, - bool offchannel_ps_disable) +void ieee80211_offchannel_return(struct ieee80211_local *local) { struct ieee80211_sub_if_data *sdata; @@ -152,11 +149,9 @@ continue; /* Tell AP we're back */ - if (offchannel_ps_disable && - sdata->vif.type == NL80211_IFTYPE_STATION) { - if (sdata->u.mgd.associated) - ieee80211_offchannel_ps_disable(sdata); - } + if (sdata->vif.type == NL80211_IFTYPE_STATION && + sdata->u.mgd.associated) + ieee80211_offchannel_ps_disable(sdata); if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { /* --- linux-3.5.0.orig/net/mac80211/cfg.c +++ linux-3.5.0/net/mac80211/cfg.c @@ -151,7 +151,17 @@ sta = sta_info_get(sdata, mac_addr); else sta = sta_info_get_bss(sdata, mac_addr); - if (!sta) { + /* + * The ASSOC test makes sure the driver is ready to + * receive the key. When wpa_supplicant has roamed + * using FT, it attempts to set the key before + * association has completed, this rejects that attempt + * so it will set the key again after assocation. + * + * TODO: accept the key if we have a station entry and + * add it to the device after the station. + */ + if (!sta || !test_sta_flag(sta, WLAN_STA_ASSOC)) { ieee80211_key_free(sdata->local, key); err = -ENOENT; goto out_unlock; --- linux-3.5.0.orig/net/mac80211/ibss.c +++ linux-3.5.0/net/mac80211/ibss.c @@ -665,8 +665,8 @@ printk(KERN_DEBUG "%s: No active IBSS STAs - trying to scan for other " "IBSS networks with same SSID (merge)\n", sdata->name); - ieee80211_request_internal_scan(sdata, - ifibss->ssid, ifibss->ssid_len, NULL); + ieee80211_request_ibss_scan(sdata, ifibss->ssid, ifibss->ssid_len, + NULL); } static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata) @@ -773,9 +773,8 @@ printk(KERN_DEBUG "%s: Trigger new scan to find an IBSS to " "join\n", sdata->name); - ieee80211_request_internal_scan(sdata, - ifibss->ssid, ifibss->ssid_len, - ifibss->fixed_channel ? ifibss->channel : NULL); + ieee80211_request_ibss_scan(sdata, ifibss->ssid, + ifibss->ssid_len, chan); } else { int interval = IEEE80211_SCAN_INTERVAL; @@ -1111,7 +1110,7 @@ sdata->u.ibss.state = IEEE80211_IBSS_MLME_SEARCH; sdata->u.ibss.ibss_join_req = jiffies; - memcpy(sdata->u.ibss.ssid, params->ssid, IEEE80211_MAX_SSID_LEN); + memcpy(sdata->u.ibss.ssid, params->ssid, params->ssid_len); sdata->u.ibss.ssid_len = params->ssid_len; mutex_unlock(&sdata->u.ibss.mtx); @@ -1154,10 +1153,6 @@ mutex_lock(&sdata->u.ibss.mtx); - sdata->u.ibss.state = IEEE80211_IBSS_MLME_SEARCH; - memset(sdata->u.ibss.bssid, 0, ETH_ALEN); - sdata->u.ibss.ssid_len = 0; - active_ibss = ieee80211_sta_active_ibss(sdata); if (!active_ibss && !is_zero_ether_addr(ifibss->bssid)) { @@ -1178,6 +1173,10 @@ } } + ifibss->state = IEEE80211_IBSS_MLME_SEARCH; + memset(ifibss->bssid, 0, ETH_ALEN); + ifibss->ssid_len = 0; + sta_info_flush(sdata->local, sdata); spin_lock_bh(&ifibss->incomplete_lock); --- linux-3.5.0.orig/net/mac80211/util.c +++ linux-3.5.0/net/mac80211/util.c @@ -268,6 +268,10 @@ void ieee80211_propagate_queue_wake(struct ieee80211_local *local, int queue) { struct ieee80211_sub_if_data *sdata; + int n_acs = IEEE80211_NUM_ACS; + + if (local->hw.queues < IEEE80211_NUM_ACS) + n_acs = 1; list_for_each_entry_rcu(sdata, &local->interfaces, list) { int ac; @@ -279,7 +283,7 @@ local->queue_stop_reasons[sdata->vif.cab_queue] != 0) continue; - for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { + for (ac = 0; ac < n_acs; ac++) { int ac_queue = sdata->vif.hw_queue[ac]; if (ac_queue == queue || @@ -341,6 +345,7 @@ { struct ieee80211_local *local = hw_to_local(hw); struct ieee80211_sub_if_data *sdata; + int n_acs = IEEE80211_NUM_ACS; trace_stop_queue(local, queue, reason); @@ -352,11 +357,14 @@ __set_bit(reason, &local->queue_stop_reasons[queue]); + if (local->hw.queues < IEEE80211_NUM_ACS) + n_acs = 1; + rcu_read_lock(); list_for_each_entry_rcu(sdata, &local->interfaces, list) { int ac; - for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { + for (ac = 0; ac < n_acs; ac++) { if (sdata->vif.hw_queue[ac] == queue || sdata->vif.cab_queue == queue) netif_stop_subqueue(sdata->dev, ac); @@ -392,7 +400,7 @@ int queue = info->hw_queue; if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); return; } @@ -417,7 +425,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } @@ -620,13 +628,39 @@ break; } - if (id != WLAN_EID_VENDOR_SPECIFIC && - id != WLAN_EID_QUIET && - test_bit(id, seen_elems)) { - elems->parse_error = true; - left -= elen; - pos += elen; - continue; + switch (id) { + case WLAN_EID_SSID: + case WLAN_EID_SUPP_RATES: + case WLAN_EID_FH_PARAMS: + case WLAN_EID_DS_PARAMS: + case WLAN_EID_CF_PARAMS: + case WLAN_EID_TIM: + case WLAN_EID_IBSS_PARAMS: + case WLAN_EID_CHALLENGE: + case WLAN_EID_RSN: + case WLAN_EID_ERP_INFO: + case WLAN_EID_EXT_SUPP_RATES: + case WLAN_EID_HT_CAPABILITY: + case WLAN_EID_HT_OPERATION: + case WLAN_EID_MESH_ID: + case WLAN_EID_MESH_CONFIG: + case WLAN_EID_PEER_MGMT: + case WLAN_EID_PREQ: + case WLAN_EID_PREP: + case WLAN_EID_PERR: + case WLAN_EID_RANN: + case WLAN_EID_CHANNEL_SWITCH: + case WLAN_EID_EXT_CHANSWITCH_ANN: + case WLAN_EID_COUNTRY: + case WLAN_EID_PWR_CONSTRAINT: + case WLAN_EID_TIMEOUT_INTERVAL: + if (test_bit(id, seen_elems)) { + elems->parse_error = true; + left -= elen; + pos += elen; + continue; + } + break; } if (calc_crc && id < 64 && (filter & (1ULL << id))) @@ -1366,6 +1400,8 @@ list_for_each_entry(sdata, &local->interfaces, list) { if (sdata->vif.type != NL80211_IFTYPE_STATION) continue; + if (!sdata->u.mgd.associated) + continue; ieee80211_send_nullfunc(local, sdata, 0); } --- linux-3.5.0.orig/net/mac80211/ieee80211_i.h +++ linux-3.5.0/net/mac80211/ieee80211_i.h @@ -81,8 +81,6 @@ size_t ssid_len; u8 ssid[IEEE80211_MAX_SSID_LEN]; - u8 dtim_period; - bool wmm_used; bool uapsd_supported; @@ -129,7 +127,6 @@ /** * enum ieee80211_valid_data_flags - BSS valid data flags - * @IEEE80211_BSS_VALID_DTIM: DTIM data was gathered from non-corrupt IE * @IEEE80211_BSS_VALID_WMM: WMM/UAPSD data was gathered from non-corrupt IE * @IEEE80211_BSS_VALID_RATES: Supported rates were gathered from non-corrupt IE * @IEEE80211_BSS_VALID_ERP: ERP flag was gathered from non-corrupt IE @@ -140,7 +137,6 @@ * beacon/probe response. */ enum ieee80211_bss_valid_data_flags { - IEEE80211_BSS_VALID_DTIM = BIT(0), IEEE80211_BSS_VALID_WMM = BIT(1), IEEE80211_BSS_VALID_RATES = BIT(2), IEEE80211_BSS_VALID_ERP = BIT(3) @@ -444,6 +440,7 @@ unsigned long timers_running; /* used for quiesce/restart */ bool powersave; /* powersave requested for this iface */ bool broken_ap; /* AP is broken -- turn off powersave */ + u8 dtim_period; enum ieee80211_smps_mode req_smps, /* requested smps mode */ ap_smps, /* smps mode AP thinks we're in */ driver_smps_mode; /* smps mode request */ @@ -1257,9 +1254,9 @@ /* scan/BSS handling */ void ieee80211_scan_work(struct work_struct *work); -int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, - const u8 *ssid, u8 ssid_len, - struct ieee80211_channel *chan); +int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, + const u8 *ssid, u8 ssid_len, + struct ieee80211_channel *chan); int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, struct cfg80211_scan_request *req); void ieee80211_scan_cancel(struct ieee80211_local *local); @@ -1286,10 +1283,8 @@ void ieee80211_sched_scan_stopped_work(struct work_struct *work); /* off-channel helpers */ -void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, - bool offchannel_ps_enable); -void ieee80211_offchannel_return(struct ieee80211_local *local, - bool offchannel_ps_disable); +void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local); +void ieee80211_offchannel_return(struct ieee80211_local *local); void ieee80211_hw_roc_setup(struct ieee80211_local *local); /* interface handling */ @@ -1319,6 +1314,8 @@ struct net_device *dev); netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev); +void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, + struct sk_buff_head *skbs); /* HT */ void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, --- linux-3.5.0.orig/net/wanrouter/wanmain.c +++ linux-3.5.0/net/wanrouter/wanmain.c @@ -602,36 +602,31 @@ * successfully, add it to the interface list. */ - if (dev->name == NULL) { - err = -EINVAL; - } else { - - #ifdef WANDEBUG - printk(KERN_INFO "%s: registering interface %s...\n", - wanrouter_modname, dev->name); - #endif - - err = register_netdev(dev); - if (!err) { - struct net_device *slave = NULL; - unsigned long smp_flags=0; - - lock_adapter_irq(&wandev->lock, &smp_flags); - - if (wandev->dev == NULL) { - wandev->dev = dev; - } else { - for (slave=wandev->dev; - DEV_TO_SLAVE(slave); - slave = DEV_TO_SLAVE(slave)) - DEV_TO_SLAVE(slave) = dev; - } - ++wandev->ndev; - - unlock_adapter_irq(&wandev->lock, &smp_flags); - err = 0; /* done !!! */ - goto out; +#ifdef WANDEBUG + printk(KERN_INFO "%s: registering interface %s...\n", + wanrouter_modname, dev->name); +#endif + + err = register_netdev(dev); + if (!err) { + struct net_device *slave = NULL; + unsigned long smp_flags=0; + + lock_adapter_irq(&wandev->lock, &smp_flags); + + if (wandev->dev == NULL) { + wandev->dev = dev; + } else { + for (slave=wandev->dev; + DEV_TO_SLAVE(slave); + slave = DEV_TO_SLAVE(slave)) + DEV_TO_SLAVE(slave) = dev; } + ++wandev->ndev; + + unlock_adapter_irq(&wandev->lock, &smp_flags); + err = 0; /* done !!! */ + goto out; } if (wandev->del_if) wandev->del_if(wandev, dev); --- linux-3.5.0.orig/net/bridge/br_netfilter.c +++ linux-3.5.0/net/bridge/br_netfilter.c @@ -256,6 +256,9 @@ struct net_device *dev = skb->dev; u32 len; + if (!pskb_may_pull(skb, sizeof(struct iphdr))) + goto inhdr_error; + iph = ip_hdr(skb); opt = &(IPCB(skb)->opt); --- linux-3.5.0.orig/net/bridge/br_stp_timer.c +++ linux-3.5.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-3.5.0.orig/net/bridge/br_stp_bpdu.c +++ linux-3.5.0/net/bridge/br_stp_bpdu.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,7 @@ skb->dev = p->dev; skb->protocol = htons(ETH_P_802_2); + skb->priority = TC_PRIO_CONTROL; skb_reserve(skb, LLC_RESERVE); memcpy(__skb_put(skb, length), data, length); --- linux-3.5.0.orig/mm/memcontrol.c +++ linux-3.5.0/mm/memcontrol.c @@ -1060,12 +1060,24 @@ struct mem_cgroup *memcg) { struct mem_cgroup_per_zone *mz; + struct lruvec *lruvec; - if (mem_cgroup_disabled()) - return &zone->lruvec; + if (mem_cgroup_disabled()) { + lruvec = &zone->lruvec; + goto out; + } mz = mem_cgroup_zoneinfo(memcg, zone_to_nid(zone), zone_idx(zone)); - return &mz->lruvec; + lruvec = &mz->lruvec; +out: + /* + * Since a node can be onlined after the mem_cgroup was created, + * we have to be prepared to initialize lruvec->zone here; + * and if offlined then reonlined, we need to reinitialize it. + */ + if (unlikely(lruvec->zone != zone)) + lruvec->zone = zone; + return lruvec; } /* @@ -1092,9 +1104,12 @@ struct mem_cgroup_per_zone *mz; struct mem_cgroup *memcg; struct page_cgroup *pc; + struct lruvec *lruvec; - if (mem_cgroup_disabled()) - return &zone->lruvec; + if (mem_cgroup_disabled()) { + lruvec = &zone->lruvec; + goto out; + } pc = lookup_page_cgroup(page); memcg = pc->mem_cgroup; @@ -1112,7 +1127,16 @@ pc->mem_cgroup = memcg = root_mem_cgroup; mz = page_cgroup_zoneinfo(memcg, page); - return &mz->lruvec; + lruvec = &mz->lruvec; +out: + /* + * Since a node can be onlined after the mem_cgroup was created, + * we have to be prepared to initialize lruvec->zone here; + * and if offlined then reonlined, we need to reinitialize it. + */ + if (unlikely(lruvec->zone != zone)) + lruvec->zone = zone; + return lruvec; } /** @@ -1457,17 +1481,26 @@ u64 mem_cgroup_get_limit(struct mem_cgroup *memcg) { u64 limit; - u64 memsw; limit = res_counter_read_u64(&memcg->res, RES_LIMIT); - limit += total_swap_pages << PAGE_SHIFT; - memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); /* - * If memsw is finite and limits the amount of swap space available - * to this memcg, return that limit. + * Do not consider swap space if we cannot swap due to swappiness */ - return min(limit, memsw); + if (mem_cgroup_swappiness(memcg)) { + u64 memsw; + + limit += total_swap_pages << PAGE_SHIFT; + memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); + + /* + * If memsw is finite and limits the amount of swap space + * available to this memcg, return that limit. + */ + limit = min(limit, memsw); + } + + return limit; } static unsigned long mem_cgroup_reclaim(struct mem_cgroup *memcg, @@ -3617,7 +3650,7 @@ static int mem_cgroup_force_empty_list(struct mem_cgroup *memcg, int node, int zid, enum lru_list lru) { - struct mem_cgroup_per_zone *mz; + struct lruvec *lruvec; unsigned long flags, loop; struct list_head *list; struct page *busy; @@ -3625,10 +3658,10 @@ int ret = 0; zone = &NODE_DATA(node)->node_zones[zid]; - mz = mem_cgroup_zoneinfo(memcg, node, zid); - list = &mz->lruvec.lists[lru]; + lruvec = mem_cgroup_zone_lruvec(zone, memcg); + list = &lruvec->lists[lru]; - loop = mz->lru_size[lru]; + loop = mem_cgroup_get_lru_size(lruvec, lru); /* give some margin against EBUSY etc...*/ loop += 256; busy = NULL; @@ -4674,7 +4707,7 @@ for (zone = 0; zone < MAX_NR_ZONES; zone++) { mz = &pn->zoneinfo[zone]; - lruvec_init(&mz->lruvec, &NODE_DATA(node)->node_zones[zone]); + lruvec_init(&mz->lruvec); mz->usage_in_excess = 0; mz->on_tree = false; mz->memcg = memcg; --- linux-3.5.0.orig/mm/truncate.c +++ linux-3.5.0/mm/truncate.c @@ -394,11 +394,12 @@ if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL)) return 0; + clear_page_mlock(page); + spin_lock_irq(&mapping->tree_lock); if (PageDirty(page)) goto failed; - clear_page_mlock(page); BUG_ON(page_has_private(page)); __delete_from_page_cache(page); spin_unlock_irq(&mapping->tree_lock); --- linux-3.5.0.orig/mm/mempolicy.c +++ linux-3.5.0/mm/mempolicy.c @@ -607,6 +607,42 @@ return first; } +/* + * Apply policy to a single VMA + * This must be called with the mmap_sem held for writing. + */ +static int vma_replace_policy(struct vm_area_struct *vma, + struct mempolicy *pol) +{ + int err; + struct mempolicy *old; + struct mempolicy *new; + + pr_debug("vma %lx-%lx/%lx vm_ops %p vm_file %p set_policy %p\n", + vma->vm_start, vma->vm_end, vma->vm_pgoff, + vma->vm_ops, vma->vm_file, + vma->vm_ops ? vma->vm_ops->set_policy : NULL); + + new = mpol_dup(pol); + if (IS_ERR(new)) + return PTR_ERR(new); + + if (vma->vm_ops && vma->vm_ops->set_policy) { + err = vma->vm_ops->set_policy(vma, new); + if (err) + goto err_out; + } + + old = vma->vm_policy; + vma->vm_policy = new; /* protected by mmap_sem */ + mpol_put(old); + + return 0; + err_out: + mpol_put(new); + return err; +} + /* Step 2: apply policy to a range and do splits. */ static int mbind_range(struct mm_struct *mm, unsigned long start, unsigned long end, struct mempolicy *new_pol) @@ -655,23 +691,9 @@ if (err) goto out; } - - /* - * Apply policy to a single VMA. The reference counting of - * policy for vma_policy linkages has already been handled by - * vma_merge and split_vma as necessary. If this is a shared - * policy then ->set_policy will increment the reference count - * for an sp node. - */ - pr_debug("vma %lx-%lx/%lx vm_ops %p vm_file %p set_policy %p\n", - vma->vm_start, vma->vm_end, vma->vm_pgoff, - vma->vm_ops, vma->vm_file, - vma->vm_ops ? vma->vm_ops->set_policy : NULL); - if (vma->vm_ops && vma->vm_ops->set_policy) { - err = vma->vm_ops->set_policy(vma, new_pol); - if (err) - goto out; - } + err = vma_replace_policy(vma, new_pol); + if (err) + goto out; } out: @@ -1530,8 +1552,18 @@ addr); if (vpol) pol = vpol; - } else if (vma->vm_policy) + } else if (vma->vm_policy) { pol = vma->vm_policy; + + /* + * shmem_alloc_page() passes MPOL_F_SHARED policy with + * a pseudo vma whose vma->vm_ops=NULL. Take a reference + * count on these policies which will be dropped by + * mpol_cond_put() later + */ + if (mpol_needs_cond_ref(pol)) + mpol_get(pol); + } } if (!pol) pol = &default_policy; @@ -1997,28 +2029,6 @@ return new; } -/* - * If *frompol needs [has] an extra ref, copy *frompol to *tompol , - * eliminate the * MPOL_F_* flags that require conditional ref and - * [NOTE!!!] drop the extra ref. Not safe to reference *frompol directly - * after return. Use the returned value. - * - * Allows use of a mempolicy for, e.g., multiple allocations with a single - * policy lookup, even if the policy needs/has extra ref on lookup. - * shmem_readahead needs this. - */ -struct mempolicy *__mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol) -{ - if (!mpol_needs_cond_ref(frompol)) - return frompol; - - *tompol = *frompol; - tompol->flags &= ~MPOL_F_SHARED; /* copy doesn't need unref */ - __mpol_put(frompol); - return tompol; -} - /* Slow path of a mempolicy comparison */ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b) { @@ -2055,7 +2065,7 @@ */ /* lookup first element intersecting start-end */ -/* Caller holds sp->lock */ +/* Caller holds sp->mutex */ static struct sp_node * sp_lookup(struct shared_policy *sp, unsigned long start, unsigned long end) { @@ -2119,36 +2129,50 @@ if (!sp->root.rb_node) return NULL; - spin_lock(&sp->lock); + mutex_lock(&sp->mutex); sn = sp_lookup(sp, idx, idx+1); if (sn) { mpol_get(sn->policy); pol = sn->policy; } - spin_unlock(&sp->lock); + mutex_unlock(&sp->mutex); return pol; } +static void sp_free(struct sp_node *n) +{ + mpol_put(n->policy); + kmem_cache_free(sn_cache, n); +} + static void sp_delete(struct shared_policy *sp, struct sp_node *n) { pr_debug("deleting %lx-l%lx\n", n->start, n->end); rb_erase(&n->nd, &sp->root); - mpol_put(n->policy); - kmem_cache_free(sn_cache, n); + sp_free(n); } static struct sp_node *sp_alloc(unsigned long start, unsigned long end, struct mempolicy *pol) { - struct sp_node *n = kmem_cache_alloc(sn_cache, GFP_KERNEL); + struct sp_node *n; + struct mempolicy *newpol; + n = kmem_cache_alloc(sn_cache, GFP_KERNEL); if (!n) return NULL; + + newpol = mpol_dup(pol); + if (IS_ERR(newpol)) { + kmem_cache_free(sn_cache, n); + return NULL; + } + newpol->flags |= MPOL_F_SHARED; + n->start = start; n->end = end; - mpol_get(pol); - pol->flags |= MPOL_F_SHARED; /* for unref */ - n->policy = pol; + n->policy = newpol; + return n; } @@ -2156,10 +2180,10 @@ static int shared_policy_replace(struct shared_policy *sp, unsigned long start, unsigned long end, struct sp_node *new) { - struct sp_node *n, *new2 = NULL; + struct sp_node *n; + int ret = 0; -restart: - spin_lock(&sp->lock); + mutex_lock(&sp->mutex); n = sp_lookup(sp, start, end); /* Take care of old policies in the same range. */ while (n && n->start < end) { @@ -2172,16 +2196,14 @@ } else { /* Old policy spanning whole new range. */ if (n->end > end) { + struct sp_node *new2; + new2 = sp_alloc(end, n->end, n->policy); if (!new2) { - spin_unlock(&sp->lock); - new2 = sp_alloc(end, n->end, n->policy); - if (!new2) - return -ENOMEM; - goto restart; + ret = -ENOMEM; + goto out; } n->end = start; sp_insert(sp, new2); - new2 = NULL; break; } else n->end = start; @@ -2192,12 +2214,9 @@ } if (new) sp_insert(sp, new); - spin_unlock(&sp->lock); - if (new2) { - mpol_put(new2->policy); - kmem_cache_free(sn_cache, new2); - } - return 0; +out: + mutex_unlock(&sp->mutex); + return ret; } /** @@ -2215,7 +2234,7 @@ int ret; sp->root = RB_ROOT; /* empty tree == default mempolicy */ - spin_lock_init(&sp->lock); + mutex_init(&sp->mutex); if (mpol) { struct vm_area_struct pvma; @@ -2269,7 +2288,7 @@ } err = shared_policy_replace(info, vma->vm_pgoff, vma->vm_pgoff+sz, new); if (err && new) - kmem_cache_free(sn_cache, new); + sp_free(new); return err; } @@ -2281,16 +2300,14 @@ if (!p->root.rb_node) return; - spin_lock(&p->lock); + mutex_lock(&p->mutex); next = rb_first(&p->root); while (next) { n = rb_entry(next, struct sp_node, nd); next = rb_next(&n->nd); - rb_erase(&n->nd, &p->root); - mpol_put(n->policy); - kmem_cache_free(sn_cache, n); + sp_delete(p, n); } - spin_unlock(&p->lock); + mutex_unlock(&p->mutex); } /* assumes fs == KERNEL_DS */ @@ -2347,8 +2364,7 @@ */ /* - * "local" is pseudo-policy: MPOL_PREFERRED with MPOL_F_LOCAL flag - * Used only for mpol_parse_str() and mpol_to_str() + * "local" is implemented internally by MPOL_PREFERRED with MPOL_F_LOCAL flag. */ #define MPOL_LOCAL MPOL_MAX static const char * const policy_modes[] = @@ -2363,28 +2379,21 @@ #ifdef CONFIG_TMPFS /** - * mpol_parse_str - parse string to mempolicy + * mpol_parse_str - parse string to mempolicy, for tmpfs mpol mount option. * @str: string containing mempolicy to parse * @mpol: pointer to struct mempolicy pointer, returned on success. - * @no_context: flag whether to "contextualize" the mempolicy + * @unused: redundant argument, to be removed later. * * Format of input: * [=][:] * - * if @no_context is true, save the input nodemask in w.user_nodemask in - * the returned mempolicy. This will be used to "clone" the mempolicy in - * a specific context [cpuset] at a later time. Used to parse tmpfs mpol - * mount option. Note that if 'static' or 'relative' mode flags were - * specified, the input nodemask will already have been saved. Saving - * it again is redundant, but safe. - * * On success, returns 0, else 1 */ -int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context) +int mpol_parse_str(char *str, struct mempolicy **mpol, int unused) { struct mempolicy *new = NULL; unsigned short mode; - unsigned short uninitialized_var(mode_flags); + unsigned short mode_flags; nodemask_t nodes; char *nodelist = strchr(str, ':'); char *flags = strchr(str, '='); @@ -2472,24 +2481,23 @@ if (IS_ERR(new)) goto out; - if (no_context) { - /* save for contextualization */ - new->w.user_nodemask = nodes; - } else { - int ret; - NODEMASK_SCRATCH(scratch); - if (scratch) { - task_lock(current); - ret = mpol_set_nodemask(new, &nodes, scratch); - task_unlock(current); - } else - ret = -ENOMEM; - NODEMASK_SCRATCH_FREE(scratch); - if (ret) { - mpol_put(new); - goto out; - } - } + /* + * Save nodes for mpol_to_str() to show the tmpfs mount options + * for /proc/mounts, /proc/pid/mounts and /proc/pid/mountinfo. + */ + if (mode != MPOL_PREFERRED) + new->v.nodes = nodes; + else if (nodelist) + new->v.preferred_node = first_node(nodes); + else + new->flags |= MPOL_F_LOCAL; + + /* + * Save nodes for contextualization: this will be used to "clone" + * the mempolicy in a specific context [cpuset] at a later time. + */ + new->w.user_nodemask = nodes; + err = 0; out: @@ -2509,13 +2517,13 @@ * @buffer: to contain formatted mempolicy string * @maxlen: length of @buffer * @pol: pointer to mempolicy to be formatted - * @no_context: "context free" mempolicy - use nodemask in w.user_nodemask + * @unused: redundant argument, to be removed later. * * Convert a mempolicy into a string. * Returns the number of characters in buffer (if positive) * or an error (negative) */ -int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, int no_context) +int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, int unused) { char *p = buffer; int l; @@ -2541,7 +2549,7 @@ case MPOL_PREFERRED: nodes_clear(nodes); if (flags & MPOL_F_LOCAL) - mode = MPOL_LOCAL; /* pseudo-policy */ + mode = MPOL_LOCAL; else node_set(pol->v.preferred_node, nodes); break; @@ -2549,14 +2557,11 @@ case MPOL_BIND: /* Fall through */ case MPOL_INTERLEAVE: - if (no_context) - nodes = pol->w.user_nodemask; - else - nodes = pol->v.nodes; + nodes = pol->v.nodes; break; default: - BUG(); + return -EINVAL; } l = strlen(policy_modes[mode]); --- linux-3.5.0.orig/mm/vmscan.c +++ linux-3.5.0/mm/vmscan.c @@ -720,9 +720,41 @@ (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO)); if (PageWriteback(page)) { - nr_writeback++; - unlock_page(page); - goto keep; + /* + * memcg doesn't have any dirty pages throttling so we + * could easily OOM just because too many pages are in + * writeback and there is nothing else to reclaim. + * + * Check __GFP_IO, certainly because a loop driver + * thread might enter reclaim, and deadlock if it waits + * on a page for which it is needed to do the write + * (loop masks off __GFP_IO|__GFP_FS for this reason); + * but more thought would probably show more reasons. + * + * Don't require __GFP_FS, since we're not going into + * the FS, just waiting on its writeback completion. + * Worryingly, ext4 gfs2 and xfs allocate pages with + * grab_cache_page_write_begin(,,AOP_FLAG_NOFS), so + * testing may_enter_fs here is liable to OOM on them. + */ + if (global_reclaim(sc) || + !PageReclaim(page) || !(sc->gfp_mask & __GFP_IO)) { + /* + * This is slightly racy - end_page_writeback() + * might have just cleared PageReclaim, then + * setting PageReclaim here end up interpreted + * as PageReadahead - but that does not matter + * enough to care. What we do want is for this + * page to have PageReclaim set next time memcg + * reclaim reaches the tests above, so it will + * then wait_on_page_writeback() to avoid OOM; + * and it's also appropriate in global reclaim. + */ + SetPageReclaim(page); + nr_writeback++; + goto keep_locked; + } + wait_on_page_writeback(page); } references = page_check_references(page, sc); @@ -2245,6 +2277,19 @@ } while (memcg); } +static bool zone_balanced(struct zone *zone, int order, + unsigned long balance_gap, int classzone_idx) +{ + if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone) + + balance_gap, classzone_idx, 0)) + return false; + + if (COMPACTION_BUILD && order && !compaction_suitable(zone, order)) + return false; + + return true; +} + /* * pgdat_balanced is used when checking if a node is balanced for high-order * allocations. Only zones that meet watermarks and are in a zone allowed @@ -2304,8 +2349,7 @@ continue; } - if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone), - i, 0)) + if (!zone_balanced(zone, order, 0, i)) all_zones_ok = false; else balanced += zone->present_pages; @@ -2414,8 +2458,7 @@ break; } - if (!zone_watermark_ok_safe(zone, order, - high_wmark_pages(zone), 0, 0)) { + if (!zone_balanced(zone, order, 0, 0)) { end_zone = i; break; } else { @@ -2491,9 +2534,8 @@ testorder = 0; if ((buffer_heads_over_limit && is_highmem_idx(i)) || - !zone_watermark_ok_safe(zone, testorder, - high_wmark_pages(zone) + balance_gap, - end_zone, 0)) { + !zone_balanced(zone, testorder, + balance_gap, end_zone)) { shrink_zone(zone, &sc); reclaim_state->reclaimed_slab = 0; @@ -2520,8 +2562,7 @@ continue; } - if (!zone_watermark_ok_safe(zone, testorder, - high_wmark_pages(zone), end_zone, 0)) { + if (!zone_balanced(zone, testorder, 0, end_zone)) { all_zones_ok = 0; /* * We are still under min water mark. This @@ -2803,6 +2844,8 @@ &balanced_classzone_idx); } } + + current->reclaim_state = NULL; return 0; } --- linux-3.5.0.orig/mm/mmzone.c +++ linux-3.5.0/mm/mmzone.c @@ -87,7 +87,7 @@ } #endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */ -void lruvec_init(struct lruvec *lruvec, struct zone *zone) +void lruvec_init(struct lruvec *lruvec) { enum lru_list lru; @@ -95,8 +95,4 @@ for_each_lru(lru) INIT_LIST_HEAD(&lruvec->lists[lru]); - -#ifdef CONFIG_CGROUP_MEM_RES_CTLR - lruvec->zone = zone; -#endif } --- linux-3.5.0.orig/mm/dmapool.c +++ linux-3.5.0/mm/dmapool.c @@ -50,7 +50,6 @@ size_t allocation; size_t boundary; char name[32]; - wait_queue_head_t waitq; struct list_head pools; }; @@ -62,8 +61,6 @@ unsigned int offset; }; -#define POOL_TIMEOUT_JIFFIES ((100 /* msec */ * HZ) / 1000) - static DEFINE_MUTEX(pools_lock); static ssize_t @@ -172,7 +169,6 @@ retval->size = size; retval->boundary = boundary; retval->allocation = allocation; - init_waitqueue_head(&retval->waitq); if (dev) { int ret; @@ -227,7 +223,6 @@ memset(page->vaddr, POOL_POISON_FREED, pool->allocation); #endif pool_initialise_page(pool, page); - list_add(&page->page_list, &pool->page_list); page->in_use = 0; page->offset = 0; } else { @@ -315,30 +310,21 @@ might_sleep_if(mem_flags & __GFP_WAIT); spin_lock_irqsave(&pool->lock, flags); - restart: list_for_each_entry(page, &pool->page_list, page_list) { if (page->offset < pool->allocation) goto ready; } - page = pool_alloc_page(pool, GFP_ATOMIC); - if (!page) { - if (mem_flags & __GFP_WAIT) { - DECLARE_WAITQUEUE(wait, current); - __set_current_state(TASK_UNINTERRUPTIBLE); - __add_wait_queue(&pool->waitq, &wait); - spin_unlock_irqrestore(&pool->lock, flags); + /* pool_alloc_page() might sleep, so temporarily drop &pool->lock */ + spin_unlock_irqrestore(&pool->lock, flags); - schedule_timeout(POOL_TIMEOUT_JIFFIES); + page = pool_alloc_page(pool, mem_flags); + if (!page) + return NULL; - spin_lock_irqsave(&pool->lock, flags); - __remove_wait_queue(&pool->waitq, &wait); - goto restart; - } - retval = NULL; - goto done; - } + spin_lock_irqsave(&pool->lock, flags); + list_add(&page->page_list, &pool->page_list); ready: page->in_use++; offset = page->offset; @@ -348,7 +334,6 @@ #ifdef DMAPOOL_DEBUG memset(retval, POOL_POISON_ALLOCATED, pool->size); #endif - done: spin_unlock_irqrestore(&pool->lock, flags); return retval; } @@ -435,8 +420,6 @@ page->in_use--; *(int *)vaddr = page->offset; page->offset = offset; - if (waitqueue_active(&pool->waitq)) - wake_up_locked(&pool->waitq); /* * Resist a temptation to do * if (!is_page_busy(page)) pool_free_page(pool, page); --- linux-3.5.0.orig/mm/swap_state.c +++ linux-3.5.0/mm/swap_state.c @@ -313,8 +313,24 @@ * Swap entry may have been freed since our caller observed it. */ err = swapcache_prepare(entry); - if (err == -EEXIST) { /* seems racy */ + if (err == -EEXIST) { radix_tree_preload_end(); + /* + * We might race against get_swap_page() and stumble + * across a SWAP_HAS_CACHE swap_map entry whose page + * has not been brought into the swapcache yet, while + * the other end is scheduled away waiting on discard + * I/O completion at scan_swap_map(). + * + * In order to avoid turning this transitory state + * into a permanent loop around this -EEXIST case + * if !CONFIG_PREEMPT and the I/O completion happens + * to be waiting on the CPU waitqueue where we are now + * busy looping, we just conditionally invoke the + * scheduler here, if there are some more important + * tasks to run. + */ + cond_resched(); continue; } if (err) { /* swp entry is obsolete ? */ --- linux-3.5.0.orig/mm/mlock.c +++ linux-3.5.0/mm/mlock.c @@ -524,11 +524,11 @@ static int do_mlockall(int flags) { struct vm_area_struct * vma, * prev = NULL; - unsigned int def_flags = 0; if (flags & MCL_FUTURE) - def_flags = VM_LOCKED; - current->mm->def_flags = def_flags; + current->mm->def_flags |= VM_LOCKED; + else + current->mm->def_flags &= ~VM_LOCKED; if (flags == MCL_FUTURE) goto out; --- linux-3.5.0.orig/mm/huge_memory.c +++ linux-3.5.0/mm/huge_memory.c @@ -1955,7 +1955,12 @@ pte_unmap(pte); spin_lock(&mm->page_table_lock); BUG_ON(!pmd_none(*pmd)); - set_pmd_at(mm, address, pmd, _pmd); + /* + * We can only use set_pmd_at when establishing + * hugepmds and never for establishing regular pmds that + * points to regular pagetables. Use pmd_populate for that + */ + pmd_populate(mm, pmd, pmd_pgtable(_pmd)); spin_unlock(&mm->page_table_lock); anon_vma_unlock(vma->anon_vma); goto out; --- linux-3.5.0.orig/mm/fadvise.c +++ linux-3.5.0/mm/fadvise.c @@ -17,6 +17,7 @@ #include #include #include +#include #include @@ -124,9 +125,22 @@ start_index = (offset+(PAGE_CACHE_SIZE-1)) >> PAGE_CACHE_SHIFT; end_index = (endbyte >> PAGE_CACHE_SHIFT); - if (end_index >= start_index) - invalidate_mapping_pages(mapping, start_index, + if (end_index >= start_index) { + unsigned long count = invalidate_mapping_pages(mapping, + start_index, end_index); + + /* + * If fewer pages were invalidated than expected then + * it is possible that some of the pages were on + * a per-cpu pagevec for a remote CPU. Drain all + * pagevecs and try again. + */ + if (count < (end_index - start_index + 1)) { + lru_add_drain_all(); + invalidate_mapping_pages(mapping, start_index, end_index); + } + } break; default: ret = -EINVAL; --- linux-3.5.0.orig/mm/internal.h +++ linux-3.5.0/mm/internal.h @@ -347,3 +347,5 @@ extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); + +extern void set_pageblock_order(void); --- linux-3.5.0.orig/mm/memblock.c +++ linux-3.5.0/mm/memblock.c @@ -928,6 +928,30 @@ return memblock_overlaps_region(&memblock.reserved, base, size) >= 0; } +void __init_memblock memblock_trim_memory(phys_addr_t align) +{ + int i; + phys_addr_t start, end, orig_start, orig_end; + struct memblock_type *mem = &memblock.memory; + + for (i = 0; i < mem->cnt; i++) { + orig_start = mem->regions[i].base; + orig_end = mem->regions[i].base + mem->regions[i].size; + start = round_up(orig_start, align); + end = round_down(orig_end, align); + + if (start == orig_start && end == orig_end) + continue; + + if (start < end) { + mem->regions[i].base = start; + mem->regions[i].size = end - start; + } else { + memblock_remove_region(mem, i); + i--; + } + } +} void __init_memblock memblock_set_current_limit(phys_addr_t limit) { --- linux-3.5.0.orig/mm/bootmem.c +++ linux-3.5.0/mm/bootmem.c @@ -185,10 +185,23 @@ while (start < end) { unsigned long *map, idx, vec; + unsigned shift; map = bdata->node_bootmem_map; idx = start - bdata->node_min_pfn; + shift = idx & (BITS_PER_LONG - 1); + /* + * vec holds at most BITS_PER_LONG map bits, + * bit 0 corresponds to start. + */ vec = ~map[idx / BITS_PER_LONG]; + + if (shift) { + vec >>= shift; + if (end - start >= BITS_PER_LONG) + vec |= ~map[idx / BITS_PER_LONG + 1] << + (BITS_PER_LONG - shift); + } /* * If we have a properly aligned and fully unreserved * BITS_PER_LONG block of pages in front of us, free @@ -201,19 +214,18 @@ count += BITS_PER_LONG; start += BITS_PER_LONG; } else { - unsigned long off = 0; + unsigned long cur = start; - vec >>= start & (BITS_PER_LONG - 1); - while (vec) { + start = ALIGN(start + 1, BITS_PER_LONG); + while (vec && cur != start) { if (vec & 1) { - page = pfn_to_page(start + off); + page = pfn_to_page(cur); __free_pages_bootmem(page, 0); count++; } vec >>= 1; - off++; + ++cur; } - start = ALIGN(start + 1, BITS_PER_LONG); } } --- linux-3.5.0.orig/mm/readahead.c +++ linux-3.5.0/mm/readahead.c @@ -189,6 +189,7 @@ list_add(&page->lru, &page_pool); if (page_idx == nr_to_read - lookahead_size) SetPageReadahead(page); + SetPageReadaheadUnused(page); ret++; } --- linux-3.5.0.orig/mm/nommu.c +++ linux-3.5.0/mm/nommu.c @@ -807,7 +807,7 @@ struct vm_area_struct *vma; /* check the cache first */ - vma = mm->mmap_cache; + vma = ACCESS_ONCE(mm->mmap_cache); if (vma && vma->vm_start <= addr && vma->vm_end > addr) return vma; --- linux-3.5.0.orig/mm/pagewalk.c +++ linux-3.5.0/mm/pagewalk.c @@ -127,28 +127,7 @@ return 0; } -static struct vm_area_struct* hugetlb_vma(unsigned long addr, struct mm_walk *walk) -{ - struct vm_area_struct *vma; - - /* We don't need vma lookup at all. */ - if (!walk->hugetlb_entry) - return NULL; - - VM_BUG_ON(!rwsem_is_locked(&walk->mm->mmap_sem)); - vma = find_vma(walk->mm, addr); - if (vma && vma->vm_start <= addr && is_vm_hugetlb_page(vma)) - return vma; - - return NULL; -} - #else /* CONFIG_HUGETLB_PAGE */ -static struct vm_area_struct* hugetlb_vma(unsigned long addr, struct mm_walk *walk) -{ - return NULL; -} - static int walk_hugetlb_range(struct vm_area_struct *vma, unsigned long addr, unsigned long end, struct mm_walk *walk) @@ -198,30 +177,53 @@ if (!walk->mm) return -EINVAL; + VM_BUG_ON(!rwsem_is_locked(&walk->mm->mmap_sem)); + pgd = pgd_offset(walk->mm, addr); do { - struct vm_area_struct *vma; + struct vm_area_struct *vma = NULL; next = pgd_addr_end(addr, end); /* - * handle hugetlb vma individually because pagetable walk for - * the hugetlb page is dependent on the architecture and - * we can't handled it in the same manner as non-huge pages. + * This function was not intended to be vma based. + * But there are vma special cases to be handled: + * - hugetlb vma's + * - VM_PFNMAP vma's */ - vma = hugetlb_vma(addr, walk); + vma = find_vma(walk->mm, addr); if (vma) { - if (vma->vm_end < next) + /* + * There are no page structures backing a VM_PFNMAP + * range, so do not allow split_huge_page_pmd(). + */ + if ((vma->vm_start <= addr) && + (vma->vm_flags & VM_PFNMAP)) { next = vma->vm_end; + pgd = pgd_offset(walk->mm, next); + continue; + } /* - * Hugepage is very tightly coupled with vma, so - * walk through hugetlb entries within a given vma. + * Handle hugetlb vma individually because pagetable + * walk for the hugetlb page is dependent on the + * architecture and we can't handled it in the same + * manner as non-huge pages. */ - err = walk_hugetlb_range(vma, addr, next, walk); - if (err) - break; - pgd = pgd_offset(walk->mm, next); - continue; + if (walk->hugetlb_entry && (vma->vm_start <= addr) && + is_vm_hugetlb_page(vma)) { + if (vma->vm_end < next) + next = vma->vm_end; + /* + * Hugepage is very tightly coupled with vma, + * so walk through hugetlb entries within a + * given vma. + */ + err = walk_hugetlb_range(vma, addr, next, walk); + if (err) + break; + pgd = pgd_offset(walk->mm, next); + continue; + } } if (pgd_none_or_clear_bad(pgd)) { --- linux-3.5.0.orig/mm/compaction.c +++ linux-3.5.0/mm/compaction.c @@ -843,7 +843,7 @@ } /* Compact all nodes in the system */ -static int compact_nodes(void) +static void compact_nodes(void) { int nid; @@ -852,8 +852,6 @@ for_each_online_node(nid) compact_node(nid); - - return COMPACT_COMPLETE; } /* The written value is actually unused, all memory is compacted */ @@ -864,7 +862,7 @@ void __user *buffer, size_t *length, loff_t *ppos) { if (write) - return compact_nodes(); + compact_nodes(); return 0; } --- linux-3.5.0.orig/mm/rmap.c +++ linux-3.5.0/mm/rmap.c @@ -56,6 +56,7 @@ #include #include #include +#include #include @@ -971,11 +972,8 @@ if (page_mapped(page)) { struct address_space *mapping = page_mapping(page); - if (mapping) { + if (mapping) ret = page_mkclean_file(mapping, page); - if (page_test_and_clear_dirty(page_to_pfn(page), 1)) - ret = 1; - } } return ret; @@ -1161,6 +1159,7 @@ */ void page_remove_rmap(struct page *page) { + struct address_space *mapping = page_mapping(page); bool anon = PageAnon(page); bool locked; unsigned long flags; @@ -1183,8 +1182,19 @@ * this if the page is anon, so about to be freed; but perhaps * not if it's in swapcache - there might be another pte slot * containing the swap entry, but page not yet written to swap. + * + * And we can skip it on file pages, so long as the filesystem + * participates in dirty tracking; but need to catch shm and tmpfs + * and ramfs pages which have been modified since creation by read + * fault. + * + * Note that mapping must be decided above, before decrementing + * mapcount (which luckily provides a barrier): once page is unmapped, + * it could be truncated and page->mapping reset to NULL at any moment. + * Note also that we are relying on page_mapping(page) to set mapping + * to &swapper_space when PageSwapCache(page). */ - if ((!anon || PageSwapCache(page)) && + if (mapping && !mapping_cap_account_dirty(mapping) && page_test_and_clear_dirty(page_to_pfn(page), 1)) set_page_dirty(page); /* --- linux-3.5.0.orig/mm/memory.c +++ linux-3.5.0/mm/memory.c @@ -182,10 +182,14 @@ return 1; } + if (tlb->batch_count == MAX_GATHER_BATCH_COUNT) + return 0; + batch = (void *)__get_free_pages(GFP_NOWAIT | __GFP_NOWARN, 0); if (!batch) return 0; + tlb->batch_count++; batch->next = NULL; batch->nr = 0; batch->max = MAX_GATHER_BATCH; @@ -212,6 +216,7 @@ tlb->local.nr = 0; tlb->local.max = ARRAY_SIZE(tlb->__pages); tlb->active = &tlb->local; + tlb->batch_count = 0; #ifdef CONFIG_HAVE_RCU_TABLE_FREE tlb->batch = NULL; @@ -2329,6 +2334,53 @@ } EXPORT_SYMBOL(remap_pfn_range); +/** + * vm_iomap_memory - remap memory to userspace + * @vma: user vma to map to + * @start: start of area + * @len: size of area + * + * This is a simplified io_remap_pfn_range() for common driver use. The + * driver just needs to give us the physical memory range to be mapped, + * we'll figure out the rest from the vma information. + * + * NOTE! Some drivers might want to tweak vma->vm_page_prot first to get + * whatever write-combining details or similar. + */ +int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len) +{ + unsigned long vm_len, pfn, pages; + + /* Check that the physical memory area passed in looks valid */ + if (start + len < start) + return -EINVAL; + /* + * You *really* shouldn't map things that aren't page-aligned, + * but we've historically allowed it because IO memory might + * just have smaller alignment. + */ + len += start & ~PAGE_MASK; + pfn = start >> PAGE_SHIFT; + pages = (len + ~PAGE_MASK) >> PAGE_SHIFT; + if (pfn + pages < pfn) + return -EINVAL; + + /* We start the mapping 'vm_pgoff' pages into the area */ + if (vma->vm_pgoff > pages) + return -EINVAL; + pfn += vma->vm_pgoff; + pages -= vma->vm_pgoff; + + /* Can we fit all of the mapping? */ + vm_len = vma->vm_end - vma->vm_start; + if (vm_len >> PAGE_SHIFT > pages) + return -EINVAL; + + /* Ok, let it rip */ + return io_remap_pfn_range(vma, vma->vm_start, pfn, vm_len, vma->vm_page_prot); +} +EXPORT_SYMBOL(vm_iomap_memory); + static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, unsigned long end, pte_fn_t fn, void *data) @@ -3239,10 +3291,15 @@ else VM_BUG_ON(!PageLocked(vmf.page)); + page = vmf.page; + + /* Mark the page as used on fault. */ + if (PageReadaheadUnused(page)) + ClearPageReadaheadUnused(page); + /* * Should we do an early C-O-W break? */ - page = vmf.page; if (flags & FAULT_FLAG_WRITE) { if (!(vma->vm_flags & VM_SHARED)) { page = cow_page; --- linux-3.5.0.orig/mm/mincore.c +++ linux-3.5.0/mm/mincore.c @@ -80,6 +80,8 @@ #endif if (page) { present = PageUptodate(page); + if (present) + present |= (PageReadaheadUnused(page) << 7); page_cache_release(page); } --- linux-3.5.0.orig/mm/memory_hotplug.c +++ linux-3.5.0/mm/memory_hotplug.c @@ -126,9 +126,6 @@ struct mem_section *ms; struct page *page, *memmap; - if (!pfn_valid(start_pfn)) - return; - section_nr = pfn_to_section_nr(start_pfn); ms = __nr_to_section(section_nr); @@ -187,9 +184,16 @@ end_pfn = pfn + pgdat->node_spanned_pages; /* register_section info */ - for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) - register_page_bootmem_info_section(pfn); - + for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) { + /* + * Some platforms can assign the same pfn to multiple nodes - on + * node0 as well as nodeN. To avoid registering a pfn against + * multiple nodes we check that this pfn does not already + * reside in some other node. + */ + if (pfn_valid(pfn) && (pfn_to_nid(pfn) == node)) + register_page_bootmem_info_section(pfn); + } } #endif /* !CONFIG_SPARSEMEM_VMEMMAP */ @@ -512,19 +516,20 @@ zone->present_pages += onlined_pages; zone->zone_pgdat->node_present_pages += onlined_pages; - if (need_zonelists_rebuild) - build_all_zonelists(zone); - else - zone_pcp_update(zone); + if (onlined_pages) { + node_set_state(zone_to_nid(zone), N_HIGH_MEMORY); + if (need_zonelists_rebuild) + build_all_zonelists(zone); + else + zone_pcp_update(zone); + } mutex_unlock(&zonelists_mutex); init_per_zone_wmark_min(); - if (onlined_pages) { + if (onlined_pages) kswapd_run(zone_to_nid(zone)); - node_set_state(zone_to_nid(zone), N_HIGH_MEMORY); - } vm_total_pages = nr_free_pagecache_pages(); --- linux-3.5.0.orig/mm/memory-failure.c +++ linux-3.5.0/mm/memory-failure.c @@ -345,14 +345,14 @@ * Also when FAIL is set do a force kill because something went * wrong earlier. */ -static void kill_procs(struct list_head *to_kill, int doit, int trapno, +static void kill_procs(struct list_head *to_kill, int forcekill, int trapno, int fail, struct page *page, unsigned long pfn, int flags) { struct to_kill *tk, *next; list_for_each_entry_safe (tk, next, to_kill, nd) { - if (doit) { + if (forcekill) { /* * In case something went wrong with munmapping * make sure the process doesn't catch the @@ -858,7 +858,7 @@ struct address_space *mapping; LIST_HEAD(tokill); int ret; - int kill = 1; + int kill = 1, forcekill; struct page *hpage = compound_head(p); struct page *ppage; @@ -888,7 +888,7 @@ * be called inside page lock (it's recommended but not enforced). */ mapping = page_mapping(hpage); - if (!PageDirty(hpage) && mapping && + if (!(flags & MF_MUST_KILL) && !PageDirty(hpage) && mapping && mapping_cap_writeback_dirty(mapping)) { if (page_mkclean(hpage)) { SetPageDirty(hpage); @@ -965,12 +965,14 @@ * Now that the dirty bit has been propagated to the * struct page and all unmaps done we can decide if * killing is needed or not. Only kill when the page - * was dirty, otherwise the tokill list is merely + * was dirty or the process is not restartable, + * otherwise the tokill list is merely * freed. When there was a problem unmapping earlier * use a more force-full uncatchable kill to prevent * any accesses to the poisoned memory. */ - kill_procs(&tokill, !!PageDirty(ppage), trapno, + forcekill = PageDirty(ppage) || (flags & MF_MUST_KILL); + kill_procs(&tokill, forcekill, trapno, ret != SWAP_SUCCESS, p, pfn, flags); return ret; @@ -1431,8 +1433,8 @@ /* Keep page count to indicate a given hugepage is isolated. */ list_add(&hpage->lru, &pagelist); - ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, 0, - true); + ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, false, + MIGRATE_SYNC); if (ret) { struct page *page1, *page2; list_for_each_entry_safe(page1, page2, &pagelist, lru) @@ -1479,9 +1481,17 @@ { int ret; unsigned long pfn = page_to_pfn(page); + struct page *hpage = compound_trans_head(page); if (PageHuge(page)) return soft_offline_huge_page(page, flags); + if (PageTransHuge(hpage)) { + if (PageAnon(hpage) && unlikely(split_huge_page(hpage))) { + pr_info("soft offline: %#lx: failed to split THP\n", + pfn); + return -EBUSY; + } + } ret = get_any_page(page, pfn, flags); if (ret < 0) @@ -1561,7 +1571,7 @@ page_is_file_cache(page)); list_add(&page->lru, &pagelist); ret = migrate_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, - 0, MIGRATE_SYNC); + false, MIGRATE_SYNC); if (ret) { putback_lru_pages(&pagelist); pr_info("soft offline: %#lx: migration failed %d, type %lx\n", --- linux-3.5.0.orig/mm/mmap.c +++ linux-3.5.0/mm/mmap.c @@ -1116,15 +1116,19 @@ file = fget(fd); if (!file) goto out; + if (is_file_hugepages(file)) + len = ALIGN(len, huge_page_size(hstate_file(file))); } else if (flags & MAP_HUGETLB) { struct user_struct *user = NULL; + + len = ALIGN(len, huge_page_size(&default_hstate)); /* * VM_NORESERVE is used because the reservations will be * taken when vm_ops->mmap() is called * A dummy user value is used because we are not locking * memory so no accounting is necessary */ - file = hugetlb_file_setup(HUGETLB_ANON_FILE, addr, len, + file = hugetlb_file_setup(HUGETLB_ANON_FILE, len, VM_NORESERVE, &user, HUGETLB_ANONHUGE_INODE); if (IS_ERR(file)) @@ -1355,9 +1359,8 @@ } else if ((flags & MAP_POPULATE) && !(flags & MAP_NONBLOCK)) make_pages_present(addr, addr + len); - if (file && uprobe_mmap(vma)) - /* matching probes but cannot insert */ - goto unmap_and_free_vma; + if (file) + uprobe_mmap(vma); return addr; @@ -1611,7 +1614,7 @@ /* Check the cache first. */ /* (Cache hit rate is typically around 35%.) */ - vma = mm->mmap_cache; + vma = ACCESS_ONCE(mm->mmap_cache); if (!(vma && vma->vm_end > addr && vma->vm_start <= addr)) { struct rb_node *rb_node; @@ -1914,7 +1917,7 @@ update_hiwater_rss(mm); unmap_vmas(&tlb, vma, start, end); free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS, - next ? next->vm_start : 0); + next ? next->vm_start : USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb, start, end); } @@ -2296,7 +2299,7 @@ /* Use -1 here to ensure all VMAs in the mm are unmapped */ unmap_vmas(&tlb, vma, 0, -1); - free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0); + free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb, 0, -1); /* --- linux-3.5.0.orig/mm/slab.c +++ linux-3.5.0/mm/slab.c @@ -1685,9 +1685,6 @@ g_cpucache_up = LATE; - /* Annotate slab for lockdep -- annotate the malloc caches */ - init_lock_keys(); - /* 6) resize the head arrays to their final sizes */ mutex_lock(&cache_chain_mutex); list_for_each_entry(cachep, &cache_chain, next) @@ -1695,6 +1692,9 @@ BUG(); mutex_unlock(&cache_chain_mutex); + /* Annotate slab for lockdep -- annotate the malloc caches */ + init_lock_keys(); + /* Done! */ g_cpucache_up = FULL; --- linux-3.5.0.orig/mm/page-writeback.c +++ linux-3.5.0/mm/page-writeback.c @@ -187,6 +187,18 @@ zone_reclaimable_pages(z) - z->dirty_balance_reserve; } /* + * Unreclaimable memory (kernel memory or anonymous memory + * without swap) can bring down the dirtyable pages below + * the zone's dirty balance reserve and the above calculation + * will underflow. However we still want to add in nodes + * which are below threshold (negative values) to get a more + * accurate calculation but make sure that the total never + * underflows. + */ + if ((long)x < 0) + x = 0; + + /* * Make sure that the number of highmem pages is never larger * than the number of the total dirtyable memory. This can only * occur in very strange VM situations but we want to make sure @@ -208,8 +220,8 @@ { unsigned long x; - x = global_page_state(NR_FREE_PAGES) + global_reclaimable_pages() - - dirty_balance_reserve; + x = global_page_state(NR_FREE_PAGES) + global_reclaimable_pages(); + x -= min(x, dirty_balance_reserve); if (!vm_highmem_is_dirtyable) x -= highmem_dirtyable_memory(x); @@ -276,9 +288,12 @@ * highmem zone can hold its share of dirty pages, so we don't * care about vm_highmem_is_dirtyable here. */ - return zone_page_state(zone, NR_FREE_PAGES) + - zone_reclaimable_pages(zone) - - zone->dirty_balance_reserve; + unsigned long nr_pages = zone_page_state(zone, NR_FREE_PAGES) + + zone_reclaimable_pages(zone); + + /* don't allow this to underflow */ + nr_pages -= min(nr_pages, zone->dirty_balance_reserve); + return nr_pages; } /** --- linux-3.5.0.orig/mm/process_vm_access.c +++ linux-3.5.0/mm/process_vm_access.c @@ -429,12 +429,6 @@ if (flags != 0) return -EINVAL; - if (!access_ok(VERIFY_READ, lvec, liovcnt * sizeof(*lvec))) - goto out; - - if (!access_ok(VERIFY_READ, rvec, riovcnt * sizeof(*rvec))) - goto out; - if (vm_write) rc = compat_rw_copy_check_uvector(WRITE, lvec, liovcnt, UIO_FASTIOV, iovstack_l, @@ -459,8 +453,6 @@ kfree(iov_r); if (iov_l != iovstack_l) kfree(iov_l); - -out: return rc; } --- linux-3.5.0.orig/mm/hugetlb.c +++ linux-3.5.0/mm/hugetlb.c @@ -2096,8 +2096,12 @@ /* Return the number pages of memory we physically have, in PAGE_SIZE units. */ unsigned long hugetlb_total_pages(void) { - struct hstate *h = &default_hstate; - return h->nr_huge_pages * pages_per_huge_page(h); + struct hstate *h; + unsigned long nr_total_pages = 0; + + for_each_hstate(h) + nr_total_pages += h->nr_huge_pages * pages_per_huge_page(h); + return nr_total_pages; } static int hugetlb_acct_memory(struct hstate *h, long delta) @@ -2393,6 +2397,22 @@ { mutex_lock(&vma->vm_file->f_mapping->i_mmap_mutex); __unmap_hugepage_range(vma, start, end, ref_page); + /* + * Clear this flag so that x86's huge_pmd_share page_table_shareable + * test will fail on a vma being torn down, and not grab a page table + * on its way out. We're lucky that the flag has such an appropriate + * name, and can in fact be safely cleared here. We could clear it + * before the __unmap_hugepage_range above, but all that's necessary + * is to clear it before releasing the i_mmap_mutex below. + * + * This works because in the contexts this is called, the VMA is + * going to be destroyed. It is not vunerable to madvise(DONTNEED) + * because madvise is not supported on hugetlbfs. The same applies + * for direct IO. unmap_hugepage_range() is only being called just + * before free_pgtables() so clearing VM_MAYSHARE will not cause + * surprises later. + */ + vma->vm_flags &= ~VM_MAYSHARE; mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); } @@ -2416,7 +2436,8 @@ * from page cache lookup which is in HPAGE_SIZE units. */ address = address & huge_page_mask(h); - pgoff = vma_hugecache_offset(h, vma, address); + pgoff = ((address - vma->vm_start) >> PAGE_SHIFT) + + vma->vm_pgoff; mapping = vma->vm_file->f_dentry->d_inode->i_mapping; /* @@ -2748,7 +2769,7 @@ if (ptep) { entry = huge_ptep_get(ptep); if (unlikely(is_hugetlb_entry_migration(entry))) { - migration_entry_wait(mm, (pmd_t *)ptep, address); + migration_entry_wait_huge(mm, ptep); return 0; } else if (unlikely(is_hugetlb_entry_hwpoisoned(entry))) return VM_FAULT_HWPOISON_LARGE | @@ -2886,7 +2907,17 @@ break; } - if (absent || + /* + * We need call hugetlb_fault for both hugepages under migration + * (in which case hugetlb_fault waits for the migration,) and + * hwpoisoned hugepages (in which case we need to prevent the + * caller from accessing to them.) In order to do this, we use + * here is_swap_pte instead of is_hugetlb_entry_migration and + * is_hugetlb_entry_hwpoisoned. This is because it simply covers + * both cases, and because we can't follow correct pages + * directly from any kind of swap entries. + */ + if (absent || is_swap_pte(huge_ptep_get(pte)) || ((flags & FOLL_WRITE) && !pte_write(huge_ptep_get(pte)))) { int ret; @@ -2955,13 +2986,19 @@ if (!huge_pte_none(huge_ptep_get(ptep))) { pte = huge_ptep_get_and_clear(mm, address, ptep); pte = pte_mkhuge(pte_modify(pte, newprot)); + pte = arch_make_huge_pte(pte, vma, NULL, 0); set_huge_pte_at(mm, address, ptep, pte); } } spin_unlock(&mm->page_table_lock); - mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); - + /* + * Must flush TLB before releasing i_mmap_mutex: x86's huge_pmd_unshare + * may have cleared our pud entry and done put_page on the page table: + * once we release i_mmap_mutex, another task can do the final put_page + * and that page table be reused and filled with junk. + */ flush_tlb_range(vma, start, end); + mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); } int hugetlb_reserve_pages(struct inode *inode, --- linux-3.5.0.orig/mm/mmu_notifier.c +++ linux-3.5.0/mm/mmu_notifier.c @@ -14,10 +14,14 @@ #include #include #include +#include #include #include #include +/* global SRCU for all MMs */ +static struct srcu_struct srcu; + /* * This function can't run concurrently against mmu_notifier_register * because mm->mm_users > 0 during mmu_notifier_register and exit_mmap @@ -25,14 +29,32 @@ * in parallel despite there being no task using this mm any more, * through the vmas outside of the exit_mmap context, such as with * vmtruncate. This serializes against mmu_notifier_unregister with - * the mmu_notifier_mm->lock in addition to RCU and it serializes - * against the other mmu notifiers with RCU. struct mmu_notifier_mm + * the mmu_notifier_mm->lock in addition to SRCU and it serializes + * against the other mmu notifiers with SRCU. struct mmu_notifier_mm * can't go away from under us as exit_mmap holds an mm_count pin * itself. */ void __mmu_notifier_release(struct mm_struct *mm) { struct mmu_notifier *mn; + struct hlist_node *n; + int id; + + /* + * SRCU here will block mmu_notifier_unregister until + * ->release returns. + */ + id = srcu_read_lock(&srcu); + hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) + /* + * If ->release runs before mmu_notifier_unregister it must be + * handled, as it's the only way for the driver to flush all + * existing sptes and stop the driver from establishing any more + * sptes before all the pages in the mm are freed. + */ + if (mn->ops->release) + mn->ops->release(mn, mm); + srcu_read_unlock(&srcu, id); spin_lock(&mm->mmu_notifier_mm->lock); while (unlikely(!hlist_empty(&mm->mmu_notifier_mm->list))) { @@ -41,41 +63,24 @@ hlist); /* * We arrived before mmu_notifier_unregister so - * mmu_notifier_unregister will do nothing other than - * to wait ->release to finish and - * mmu_notifier_unregister to return. + * mmu_notifier_unregister will do nothing other than to wait + * for ->release to finish and for mmu_notifier_unregister to + * return. */ hlist_del_init_rcu(&mn->hlist); - /* - * RCU here will block mmu_notifier_unregister until - * ->release returns. - */ - rcu_read_lock(); - spin_unlock(&mm->mmu_notifier_mm->lock); - /* - * if ->release runs before mmu_notifier_unregister it - * must be handled as it's the only way for the driver - * to flush all existing sptes and stop the driver - * from establishing any more sptes before all the - * pages in the mm are freed. - */ - if (mn->ops->release) - mn->ops->release(mn, mm); - rcu_read_unlock(); - spin_lock(&mm->mmu_notifier_mm->lock); } spin_unlock(&mm->mmu_notifier_mm->lock); /* - * synchronize_rcu here prevents mmu_notifier_release to - * return to exit_mmap (which would proceed freeing all pages - * in the mm) until the ->release method returns, if it was - * invoked by mmu_notifier_unregister. + * synchronize_srcu here prevents mmu_notifier_release from returning to + * exit_mmap (which would proceed with freeing all pages in the mm) + * until the ->release method returns, if it was invoked by + * mmu_notifier_unregister. * - * The mmu_notifier_mm can't go away from under us because one - * mm_count is hold by exit_mmap. + * The mmu_notifier_mm can't go away from under us because one mm_count + * is held by exit_mmap. */ - synchronize_rcu(); + synchronize_srcu(&srcu); } /* @@ -88,14 +93,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; - int young = 0; + int young = 0, id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->clear_flush_young) young |= mn->ops->clear_flush_young(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); return young; } @@ -105,9 +110,9 @@ { struct mmu_notifier *mn; struct hlist_node *n; - int young = 0; + int young = 0, id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->test_young) { young = mn->ops->test_young(mn, mm, address); @@ -115,7 +120,7 @@ break; } } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); return young; } @@ -125,8 +130,9 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->change_pte) mn->ops->change_pte(mn, mm, address, pte); @@ -137,7 +143,7 @@ else if (mn->ops->invalidate_page) mn->ops->invalidate_page(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_page(struct mm_struct *mm, @@ -145,13 +151,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_page) mn->ops->invalidate_page(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_range_start(struct mm_struct *mm, @@ -159,13 +166,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_start) mn->ops->invalidate_range_start(mn, mm, start, end); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_range_end(struct mm_struct *mm, @@ -173,13 +181,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_end) mn->ops->invalidate_range_end(mn, mm, start, end); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } static int do_mmu_notifier_register(struct mmu_notifier *mn, @@ -191,6 +200,12 @@ BUG_ON(atomic_read(&mm->mm_users) <= 0); + /* + * Verify that mmu_notifier_init() already run and the global srcu is + * initialized. + */ + BUG_ON(!srcu.per_cpu_ref); + ret = -ENOMEM; mmu_notifier_mm = kmalloc(sizeof(struct mmu_notifier_mm), GFP_KERNEL); if (unlikely(!mmu_notifier_mm)) @@ -273,8 +288,8 @@ /* * This releases the mm_count pin automatically and frees the mm * structure if it was the last user of it. It serializes against - * running mmu notifiers with RCU and against mmu_notifier_unregister - * with the unregister lock + RCU. All sptes must be dropped before + * running mmu notifiers with SRCU and against mmu_notifier_unregister + * with the unregister lock + SRCU. All sptes must be dropped before * calling mmu_notifier_unregister. ->release or any other notifier * method may be invoked concurrently with mmu_notifier_unregister, * and only after mmu_notifier_unregister returned we're guaranteed @@ -284,35 +299,46 @@ { BUG_ON(atomic_read(&mm->mm_count) <= 0); - spin_lock(&mm->mmu_notifier_mm->lock); if (!hlist_unhashed(&mn->hlist)) { - hlist_del_rcu(&mn->hlist); - /* - * RCU here will force exit_mmap to wait ->release to finish - * before freeing the pages. + * SRCU here will force exit_mmap to wait for ->release to + * finish before freeing the pages. */ - rcu_read_lock(); - spin_unlock(&mm->mmu_notifier_mm->lock); + int id; + + id = srcu_read_lock(&srcu); /* - * exit_mmap will block in mmu_notifier_release to - * guarantee ->release is called before freeing the - * pages. + * exit_mmap will block in mmu_notifier_release to guarantee + * that ->release is called before freeing the pages. */ if (mn->ops->release) mn->ops->release(mn, mm); - rcu_read_unlock(); - } else + srcu_read_unlock(&srcu, id); + + spin_lock(&mm->mmu_notifier_mm->lock); + /* + * Can not use list_del_rcu() since __mmu_notifier_release + * can delete it before we hold the lock. + */ + hlist_del_init_rcu(&mn->hlist); spin_unlock(&mm->mmu_notifier_mm->lock); + } /* - * Wait any running method to finish, of course including + * Wait for any running method to finish, of course including * ->release if it was run by mmu_notifier_relase instead of us. */ - synchronize_rcu(); + synchronize_srcu(&srcu); BUG_ON(atomic_read(&mm->mm_count) <= 0); mmdrop(mm); } EXPORT_SYMBOL_GPL(mmu_notifier_unregister); + +static int __init mmu_notifier_init(void) +{ + return init_srcu_struct(&srcu); +} + +module_init(mmu_notifier_init); --- linux-3.5.0.orig/mm/filemap.c +++ linux-3.5.0/mm/filemap.c @@ -1304,6 +1304,9 @@ if (size > count) size = count; + if (PageReadaheadUnused(page)) + ClearPageReadaheadUnused(page); + /* * Faults on the destination of a read are common, so do it before * taking the kmap. --- linux-3.5.0.orig/mm/page_alloc.c +++ linux-3.5.0/mm/page_alloc.c @@ -580,7 +580,7 @@ combined_idx = buddy_idx & page_idx; higher_page = page + (combined_idx - page_idx); buddy_idx = __find_buddy_index(combined_idx, order + 1); - higher_buddy = page + (buddy_idx - combined_idx); + higher_buddy = higher_page + (buddy_idx - combined_idx); if (page_is_buddy(higher_page, higher_buddy, order + 1)) { list_add_tail(&page->lru, &zone->free_area[order].free_list[migratetype]); @@ -4272,10 +4272,11 @@ * round what is now in bits to nearest long in bits, then return it in * bytes. */ -static unsigned long __init usemap_size(unsigned long zonesize) +static unsigned long __init usemap_size(unsigned long zone_start_pfn, unsigned long zonesize) { unsigned long usemapsize; + zonesize += zone_start_pfn & (pageblock_nr_pages-1); usemapsize = roundup(zonesize, pageblock_nr_pages); usemapsize = usemapsize >> pageblock_order; usemapsize *= NR_PAGEBLOCK_BITS; @@ -4285,23 +4286,25 @@ } static void __init setup_usemap(struct pglist_data *pgdat, - struct zone *zone, unsigned long zonesize) + struct zone *zone, + unsigned long zone_start_pfn, + unsigned long zonesize) { - unsigned long usemapsize = usemap_size(zonesize); + unsigned long usemapsize = usemap_size(zone_start_pfn, zonesize); zone->pageblock_flags = NULL; if (usemapsize) zone->pageblock_flags = alloc_bootmem_node_nopanic(pgdat, usemapsize); } #else -static inline void setup_usemap(struct pglist_data *pgdat, - struct zone *zone, unsigned long zonesize) {} +static inline void setup_usemap(struct pglist_data *pgdat, struct zone *zone, + unsigned long zone_start_pfn, unsigned long zonesize) {} #endif /* CONFIG_SPARSEMEM */ #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */ -static inline void __init set_pageblock_order(void) +void __init set_pageblock_order(void) { unsigned int order; @@ -4329,7 +4332,7 @@ * include/linux/pageblock-flags.h for the values of pageblock_order based on * the kernel config */ -static inline void set_pageblock_order(void) +void __init set_pageblock_order(void) { } @@ -4407,14 +4410,14 @@ zone->zone_pgdat = pgdat; zone_pcp_init(zone); - lruvec_init(&zone->lruvec, zone); + lruvec_init(&zone->lruvec); zap_zone_vm_stats(zone); zone->flags = 0; if (!size) continue; set_pageblock_order(); - setup_usemap(pgdat, zone, size); + setup_usemap(pgdat, zone, zone_start_pfn, size); ret = init_currently_empty_zone(zone, zone_start_pfn, size, MEMMAP_EARLY); BUG_ON(ret); @@ -5405,7 +5408,7 @@ pfn &= (PAGES_PER_SECTION-1); return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #else - pfn = pfn - zone->zone_start_pfn; + pfn = pfn - round_down(zone->zone_start_pfn, pageblock_nr_pages); return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #endif /* CONFIG_SPARSEMEM */ } @@ -5975,6 +5978,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE {1UL << PG_compound_lock, "compound_lock" }, #endif + {1UL << PG_readaheadunused, "readaheadunused"}, }; static void dump_page_flags(unsigned long flags) --- linux-3.5.0.orig/mm/sparse.c +++ linux-3.5.0/mm/sparse.c @@ -493,6 +493,9 @@ struct page **map_map; #endif + /* Setup pageblock_order for HUGETLB_PAGE_SIZE_VARIABLE */ + set_pageblock_order(); + /* * map is using big page (aka 2M in x86 64 bit) * usemap is less one page (aka 24 bytes) @@ -626,7 +629,7 @@ { return; /* XXX: Not implemented yet */ } -static void free_map_bootmem(struct page *page, unsigned long nr_pages) +static void free_map_bootmem(struct page *memmap, unsigned long nr_pages) { } #else @@ -667,10 +670,11 @@ get_order(sizeof(struct page) * nr_pages)); } -static void free_map_bootmem(struct page *page, unsigned long nr_pages) +static void free_map_bootmem(struct page *memmap, unsigned long nr_pages) { unsigned long maps_section_nr, removing_section_nr, i; unsigned long magic; + struct page *page = virt_to_page(memmap); for (i = 0; i < nr_pages; i++, page++) { magic = (unsigned long) page->lru.next; @@ -719,13 +723,10 @@ */ if (memmap) { - struct page *memmap_page; - memmap_page = virt_to_page(memmap); - nr_pages = PAGE_ALIGN(PAGES_PER_SECTION * sizeof(struct page)) >> PAGE_SHIFT; - free_map_bootmem(memmap_page, nr_pages); + free_map_bootmem(memmap, nr_pages); } } --- linux-3.5.0.orig/mm/migrate.c +++ linux-3.5.0/mm/migrate.c @@ -142,10 +142,12 @@ if (is_write_migration_entry(entry)) pte = pte_mkwrite(pte); #ifdef CONFIG_HUGETLB_PAGE - if (PageHuge(new)) + if (PageHuge(new)) { pte = pte_mkhuge(pte); + pte = arch_make_huge_pte(pte, vma, new, 0); + } #endif - flush_cache_page(vma, addr, pte_pfn(pte)); + flush_dcache_page(new); set_pte_at(mm, addr, ptep, pte); if (PageHuge(new)) { @@ -180,15 +182,14 @@ * get to the page and wait until migration is finished. * When we return from this function the fault will be retried. */ -void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, - unsigned long address) +static void __migration_entry_wait(struct mm_struct *mm, pte_t *ptep, + spinlock_t *ptl) { - pte_t *ptep, pte; - spinlock_t *ptl; + pte_t pte; swp_entry_t entry; struct page *page; - ptep = pte_offset_map_lock(mm, pmd, address, &ptl); + spin_lock(ptl); pte = *ptep; if (!is_swap_pte(pte)) goto out; @@ -216,6 +217,20 @@ pte_unmap_unlock(ptep, ptl); } +void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, + unsigned long address) +{ + spinlock_t *ptl = pte_lockptr(mm, pmd); + pte_t *ptep = pte_offset_map(pmd, address); + __migration_entry_wait(mm, ptep, ptl); +} + +void migration_entry_wait_huge(struct mm_struct *mm, pte_t *pte) +{ + spinlock_t *ptl = &(mm)->page_table_lock; + __migration_entry_wait(mm, pte, ptl); +} + #ifdef CONFIG_BLOCK /* Returns true if all buffers are successfully locked */ static bool buffer_migrate_lock_buffers(struct buffer_head *head, --- linux-3.5.0.orig/mm/shmem.c +++ linux-3.5.0/mm/shmem.c @@ -654,7 +654,7 @@ kfree(xattr->name); kfree(xattr); } - BUG_ON(inode->i_blocks); + WARN_ON(inode->i_blocks); shmem_free_inode(inode->i_sb); clear_inode(inode); } @@ -921,24 +921,28 @@ static struct page *shmem_swapin(swp_entry_t swap, gfp_t gfp, struct shmem_inode_info *info, pgoff_t index) { - struct mempolicy mpol, *spol; struct vm_area_struct pvma; - - spol = mpol_cond_copy(&mpol, - mpol_shared_policy_lookup(&info->policy, index)); + struct page *page; /* Create a pseudo vma that just contains the policy */ pvma.vm_start = 0; pvma.vm_pgoff = index; pvma.vm_ops = NULL; - pvma.vm_policy = spol; - return swapin_readahead(swap, gfp, &pvma, 0); + pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, index); + + page = swapin_readahead(swap, gfp, &pvma, 0); + + /* Drop reference taken by mpol_shared_policy_lookup() */ + mpol_cond_put(pvma.vm_policy); + + return page; } static struct page *shmem_alloc_page(gfp_t gfp, struct shmem_inode_info *info, pgoff_t index) { struct vm_area_struct pvma; + struct page *page; /* Create a pseudo vma that just contains the policy */ pvma.vm_start = 0; @@ -946,10 +950,12 @@ pvma.vm_ops = NULL; pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, index); - /* - * alloc_page_vma() will drop the shared policy reference - */ - return alloc_page_vma(gfp, &pvma, 0); + page = alloc_page_vma(gfp, &pvma, 0); + + /* Drop reference taken by mpol_shared_policy_lookup() */ + mpol_cond_put(pvma.vm_policy); + + return page; } #else /* !CONFIG_NUMA */ #ifdef CONFIG_TMPFS @@ -1154,8 +1160,20 @@ if (!error) { error = shmem_add_to_page_cache(page, mapping, index, gfp, swp_to_radix_entry(swap)); - /* We already confirmed swap, and make no allocation */ - VM_BUG_ON(error); + /* + * We already confirmed swap under page lock, and make + * no memory allocation here, so usually no possibility + * of error; but free_swap_and_cache() only trylocks a + * page, so it is just possible that the entry has been + * truncated or holepunched since swap was confirmed. + * shmem_undo_range() will have done some of the + * unaccounting, now delete_from_swap_cache() will do + * the rest (including mem_cgroup_uncharge_swapcache). + * Reset swap.val? No, leave it so "failed" goes back to + * "repeat": reading a hole and writing should succeed. + */ + if (error) + delete_from_swap_cache(page); } if (error) goto failed; @@ -2364,12 +2382,14 @@ { struct inode *inode; struct dentry *dentry = NULL; - u64 inum = fid->raw[2]; - inum = (inum << 32) | fid->raw[1]; + u64 inum; if (fh_len < 3) return NULL; + inum = fid->raw[2]; + inum = (inum << 32) | fid->raw[1]; + inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), shmem_match, fid->raw); if (inode) { @@ -2521,6 +2541,7 @@ unsigned long inodes; int error = -EINVAL; + config.mpol = NULL; if (shmem_parse_options(data, &config, true)) return error; @@ -2545,8 +2566,13 @@ sbinfo->max_inodes = config.max_inodes; sbinfo->free_inodes = config.max_inodes - inodes; - mpol_put(sbinfo->mpol); - sbinfo->mpol = config.mpol; /* transfers initial ref */ + /* + * Preserve previous mempolicy unless mpol remount option was specified. + */ + if (config.mpol) { + mpol_put(sbinfo->mpol); + sbinfo->mpol = config.mpol; /* transfers initial ref */ + } out: spin_unlock(&sbinfo->stat_lock); return error; --- linux-3.5.0.orig/kernel/resource.c +++ linux-3.5.0/kernel/resource.c @@ -758,6 +758,7 @@ struct resource *parent = root; struct resource *conflict; struct resource *res = kzalloc(sizeof(*res), GFP_ATOMIC); + struct resource *next_res = NULL; if (!res) return; @@ -767,21 +768,46 @@ res->end = end; res->flags = IORESOURCE_BUSY; - conflict = __request_resource(parent, res); - if (!conflict) - return; - - /* failed, split and try again */ - kfree(res); + while (1) { - /* conflict covered whole area */ - if (conflict->start <= start && conflict->end >= end) - return; + conflict = __request_resource(parent, res); + if (!conflict) { + if (!next_res) + break; + res = next_res; + next_res = NULL; + continue; + } + + /* conflict covered whole area */ + if (conflict->start <= res->start && + conflict->end >= res->end) { + kfree(res); + WARN_ON(next_res); + break; + } + + /* failed, split and try again */ + if (conflict->start > res->start) { + end = res->end; + res->end = conflict->start - 1; + if (conflict->end < end) { + next_res = kzalloc(sizeof(*next_res), + GFP_ATOMIC); + if (!next_res) { + kfree(res); + break; + } + next_res->name = name; + next_res->start = conflict->end + 1; + next_res->end = end; + next_res->flags = IORESOURCE_BUSY; + } + } else { + res->start = conflict->end + 1; + } + } - if (conflict->start > start) - __reserve_region_with_split(root, start, conflict->start-1, name); - if (conflict->end < end) - __reserve_region_with_split(root, conflict->end+1, end, name); } void __init reserve_region_with_split(struct resource *root, --- linux-3.5.0.orig/kernel/sysctl_binary.c +++ linux-3.5.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-3.5.0.orig/kernel/workqueue.c +++ linux-3.5.0/kernel/workqueue.c @@ -128,6 +128,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 */ @@ -838,7 +839,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; } @@ -848,9 +850,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). @@ -1807,7 +1827,6 @@ struct global_cwq *gcwq = cwq->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 @@ -1838,6 +1857,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); @@ -1869,11 +1889,13 @@ spin_unlock_irq(&gcwq->lock); + smp_wmb(); /* paired with test_and_set_bit(PENDING) */ work_clear_pending(work); + lock_map_acquire_read(&cwq->wq->lockdep_map); lock_map_acquire(&lockdep_map); trace_workqueue_execute_start(work); - 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. @@ -1883,11 +1905,10 @@ lock_map_release(&cwq->wq->lockdep_map); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { - printk(KERN_ERR "BUG: workqueue leaked lock or atomic: " - "%s/0x%08x/%d\n", - current->comm, preempt_count(), task_pid_nr(current)); - printk(KERN_ERR " last function: "); - print_symbol("%s\n", (unsigned long)f); + 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), + worker->current_func); debug_show_held_locks(current); dump_stack(); } @@ -1901,6 +1922,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, false); } @@ -2043,8 +2065,10 @@ repeat: set_current_state(TASK_INTERRUPTIBLE); - if (kthread_should_stop()) + if (kthread_should_stop()) { + __set_current_state(TASK_RUNNING); return 0; + } /* * See whether any cpu is asking for help. Unbounded @@ -3441,14 +3465,17 @@ for_each_busy_worker(worker, i, pos, gcwq) { struct work_struct *rebind_work = &worker->rebind_work; + unsigned long worker_flags = worker->flags; /* * Rebind_work may race with future cpu hotplug * operations. Use a separate flag to mark that - * rebinding is scheduled. + * rebinding is scheduled. The morphing should + * be atomic. */ - worker->flags |= WORKER_REBIND; - worker->flags &= ~WORKER_ROGUE; + worker_flags |= WORKER_REBIND; + worker_flags &= ~WORKER_ROGUE; + ACCESS_ONCE(worker->flags) = worker_flags; /* queue rebind_work, wq doesn't matter, use the default one */ if (test_and_set_bit(WORK_STRUCT_PENDING_BIT, @@ -3590,21 +3617,55 @@ return notifier_from_errno(0); } +/* + * Workqueues should be brought up before normal priority CPU notifiers. + * This will be registered high priority CPU notifier. + */ +static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb, + unsigned long action, + void *hcpu) +{ + switch (action & ~CPU_TASKS_FROZEN) { + case CPU_UP_PREPARE: + case CPU_UP_CANCELED: + case CPU_DOWN_FAILED: + case CPU_ONLINE: + return workqueue_cpu_callback(nfb, action, hcpu); + } + return NOTIFY_OK; +} + +/* + * Workqueues should be brought down after normal priority CPU notifiers. + * This will be registered as low priority CPU notifier. + */ +static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb, + unsigned long action, + void *hcpu) +{ + switch (action & ~CPU_TASKS_FROZEN) { + case CPU_DOWN_PREPARE: + case CPU_DYING: + case CPU_POST_DEAD: + return workqueue_cpu_callback(nfb, action, hcpu); + } + return NOTIFY_OK; +} + #ifdef CONFIG_SMP struct work_for_cpu { - struct completion completion; + struct work_struct work; long (*fn)(void *); void *arg; long ret; }; -static int do_work_for_cpu(void *_wfc) +static void work_for_cpu_fn(struct work_struct *work) { - struct work_for_cpu *wfc = _wfc; + struct work_for_cpu *wfc = container_of(work, struct work_for_cpu, work); + wfc->ret = wfc->fn(wfc->arg); - complete(&wfc->completion); - return 0; } /** @@ -3619,19 +3680,11 @@ */ long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) { - struct task_struct *sub_thread; - struct work_for_cpu wfc = { - .completion = COMPLETION_INITIALIZER_ONSTACK(wfc.completion), - .fn = fn, - .arg = arg, - }; + struct work_for_cpu wfc = { .fn = fn, .arg = arg }; - sub_thread = kthread_create(do_work_for_cpu, &wfc, "work_for_cpu"); - if (IS_ERR(sub_thread)) - return PTR_ERR(sub_thread); - kthread_bind(sub_thread, cpu); - wake_up_process(sub_thread); - wait_for_completion(&wfc.completion); + INIT_WORK_ONSTACK(&wfc.work, work_for_cpu_fn); + schedule_work_on(cpu, &wfc.work); + flush_work(&wfc.work); return wfc.ret; } EXPORT_SYMBOL_GPL(work_on_cpu); @@ -3783,7 +3836,8 @@ unsigned int cpu; int i; - cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE); + cpu_notifier(workqueue_cpu_up_callback, CPU_PRI_WORKQUEUE_UP); + cpu_notifier(workqueue_cpu_down_callback, CPU_PRI_WORKQUEUE_DOWN); /* initialize gcwqs */ for_each_gcwq_cpu(cpu) { --- linux-3.5.0.orig/kernel/watchdog.c +++ linux-3.5.0/kernel/watchdog.c @@ -113,7 +113,7 @@ return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */ } -static unsigned long get_sample_period(void) +static u64 get_sample_period(void) { /* * convert watchdog_thresh from seconds to ns @@ -122,7 +122,7 @@ * and hard thresholds) to increment before the * hardlockup detector generates a warning */ - return get_softlockup_thresh() * (NSEC_PER_SEC / 5); + return get_softlockup_thresh() * ((u64)NSEC_PER_SEC / 5); } /* Commands for resetting the watchdog */ --- linux-3.5.0.orig/kernel/audit_watch.c +++ linux-3.5.0/kernel/audit_watch.c @@ -349,7 +349,7 @@ } mutex_unlock(&audit_filter_mutex); - fsnotify_destroy_mark(&parent->mark); + fsnotify_destroy_mark(&parent->mark, audit_watch_group); } /* Get path information necessary for adding watches. */ @@ -475,7 +475,7 @@ if (list_empty(&parent->watches)) { audit_get_parent(parent); - fsnotify_destroy_mark(&parent->mark); + fsnotify_destroy_mark(&parent->mark, audit_watch_group); audit_put_parent(parent); } } --- linux-3.5.0.orig/kernel/futex.c +++ linux-3.5.0/kernel/futex.c @@ -716,7 +716,7 @@ struct futex_pi_state **ps, struct task_struct *task, int set_waiters) { - int lock_taken, ret, ownerdied = 0; + int lock_taken, ret, force_take = 0; u32 uval, newval, curval, vpid = task_pid_vnr(task); retry: @@ -755,17 +755,15 @@ newval = curval | FUTEX_WAITERS; /* - * There are two cases, where a futex might have no owner (the - * owner TID is 0): OWNER_DIED. We take over the futex in this - * case. We also do an unconditional take over, when the owner - * of the futex died. - * - * This is safe as we are protected by the hash bucket lock ! + * Should we force take the futex? See below. */ - if (unlikely(ownerdied || !(curval & FUTEX_TID_MASK))) { - /* Keep the OWNER_DIED bit */ + if (unlikely(force_take)) { + /* + * Keep the OWNER_DIED and the WAITERS bit and set the + * new TID value. + */ newval = (curval & ~FUTEX_TID_MASK) | vpid; - ownerdied = 0; + force_take = 0; lock_taken = 1; } @@ -775,7 +773,7 @@ goto retry; /* - * We took the lock due to owner died take over. + * We took the lock due to forced take over. */ if (unlikely(lock_taken)) return 1; @@ -790,20 +788,25 @@ switch (ret) { case -ESRCH: /* - * No owner found for this futex. Check if the - * OWNER_DIED bit is set to figure out whether - * this is a robust futex or not. + * We failed to find an owner for this + * futex. So we have no pi_state to block + * on. This can happen in two cases: + * + * 1) The owner died + * 2) A stale FUTEX_WAITERS bit + * + * Re-read the futex value. */ if (get_futex_value_locked(&curval, uaddr)) return -EFAULT; /* - * We simply start over in case of a robust - * futex. The code above will take the futex - * and return happy. + * If the owner died or we have a stale + * WAITERS bit the owner TID in the user space + * futex is 0. */ - if (curval & FUTEX_OWNER_DIED) { - ownerdied = 1; + if (!(curval & FUTEX_TID_MASK)) { + force_take = 1; goto retry; } default: @@ -840,6 +843,9 @@ { struct task_struct *p = q->task; + if (WARN(q->pi_state || q->rt_waiter, "refusing to wake PI futex\n")) + return; + /* * We set q->lock_ptr = NULL _before_ we wake up the task. If * a non-futex wake up happens on another CPU then the task @@ -1075,6 +1081,10 @@ plist_for_each_entry_safe(this, next, head, list) { if (match_futex (&this->key, &key1)) { + if (this->pi_state || this->rt_waiter) { + ret = -EINVAL; + goto out_unlock; + } wake_futex(this); if (++ret >= nr_wake) break; @@ -1087,6 +1097,10 @@ op_ret = 0; plist_for_each_entry_safe(this, next, head, list) { if (match_futex (&this->key, &key2)) { + if (this->pi_state || this->rt_waiter) { + ret = -EINVAL; + goto out_unlock; + } wake_futex(this); if (++op_ret >= nr_wake2) break; @@ -1095,6 +1109,7 @@ ret += op_ret; } +out_unlock: double_unlock_hb(hb1, hb2); out_put_keys: put_futex_key(&key2); @@ -1384,9 +1399,13 @@ /* * FUTEX_WAIT_REQEUE_PI and FUTEX_CMP_REQUEUE_PI should always * be paired with each other and no other futex ops. + * + * We should never be requeueing a futex_q with a pi_state, + * which is awaiting a futex_unlock_pi(). */ if ((requeue_pi && !this->rt_waiter) || - (!requeue_pi && this->rt_waiter)) { + (!requeue_pi && this->rt_waiter) || + this->pi_state) { ret = -EINVAL; break; } @@ -2231,11 +2250,11 @@ * @uaddr2: the pi futex we will take prior to returning to user-space * * The caller will wait on uaddr and will be requeued by futex_requeue() to - * uaddr2 which must be PI aware. Normal wakeup will wake on uaddr2 and - * complete the acquisition of the rt_mutex prior to returning to userspace. - * This ensures the rt_mutex maintains an owner when it has waiters; without - * one, the pi logic wouldn't know which task to boost/deboost, if there was a - * need to. + * uaddr2 which must be PI aware and unique from uaddr. Normal wakeup will wake + * on uaddr2 and complete the acquisition of the rt_mutex prior to returning to + * userspace. This ensures the rt_mutex maintains an owner when it has waiters; + * without one, the pi logic would not know which task to boost/deboost, if + * there was a need to. * * We call schedule in futex_wait_queue_me() when we enqueue and return there * via the following: @@ -2272,6 +2291,9 @@ struct futex_q q = futex_q_init; int res, ret; + if (uaddr == uaddr2) + return -EINVAL; + if (!bitset) return -EINVAL; @@ -2343,7 +2365,7 @@ * signal. futex_unlock_pi() will not destroy the lock_ptr nor * the pi_state. */ - WARN_ON(!&q.pi_state); + WARN_ON(!q.pi_state); pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1); debug_rt_mutex_free_waiter(&rt_waiter); @@ -2370,7 +2392,7 @@ * fault, unlock the rt_mutex and return the fault to userspace. */ if (ret == -EFAULT) { - if (rt_mutex_owner(pi_mutex) == current) + if (pi_mutex && rt_mutex_owner(pi_mutex) == current) rt_mutex_unlock(pi_mutex); } else if (ret == -EINTR) { /* @@ -2449,8 +2471,6 @@ if (!futex_cmpxchg_enabled) return -ENOSYS; - WARN_ONCE(1, "deprecated: get_robust_list will be deleted in 2013.\n"); - rcu_read_lock(); ret = -ESRCH; --- linux-3.5.0.orig/kernel/module.c +++ linux-3.5.0/kernel/module.c @@ -145,6 +145,7 @@ ongoing or failed initialization etc. */ static inline int strong_try_module_get(struct module *mod) { + BUG_ON(mod && mod->state == MODULE_STATE_UNFORMED); if (mod && mod->state == MODULE_STATE_COMING) return -EBUSY; if (try_module_get(mod)) @@ -300,6 +301,9 @@ #endif }; + if (mod->state == MODULE_STATE_UNFORMED) + continue; + if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data)) return true; } @@ -410,16 +414,24 @@ EXPORT_SYMBOL_GPL(find_symbol); /* Search for module by name: must hold module_mutex. */ -struct module *find_module(const char *name) +static struct module *find_module_all(const char *name, + bool even_unformed) { struct module *mod; list_for_each_entry(mod, &modules, list) { + if (!even_unformed && mod->state == MODULE_STATE_UNFORMED) + continue; if (strcmp(mod->name, name) == 0) return mod; } return NULL; } + +struct module *find_module(const char *name) +{ + return find_module_all(name, false); +} EXPORT_SYMBOL_GPL(find_module); #ifdef CONFIG_SMP @@ -485,6 +497,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (!mod->percpu_size) continue; for_each_possible_cpu(cpu) { @@ -1008,6 +1022,8 @@ case MODULE_STATE_GOING: state = "going"; break; + default: + BUG(); } return sprintf(buffer, "%s\n", state); } @@ -1746,6 +1762,8 @@ mutex_lock(&module_mutex); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((mod->module_core) && (mod->core_text_size)) { set_page_attributes(mod->module_core, mod->module_core + mod->core_text_size, @@ -1767,6 +1785,8 @@ mutex_lock(&module_mutex); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((mod->module_core) && (mod->core_text_size)) { set_page_attributes(mod->module_core, mod->module_core + mod->core_text_size, @@ -2273,12 +2293,17 @@ src = (void *)info->hdr + symsect->sh_offset; nsrc = symsect->sh_size / sizeof(*src); + /* strtab always starts with a nul, so offset 0 is the empty string. */ + strtab_size = 1; + /* Compute total space required for the core symbols' strtab. */ - for (ndst = i = strtab_size = 1; i < nsrc; ++i, ++src) - if (is_core_symbol(src, info->sechdrs, info->hdr->e_shnum)) { - strtab_size += strlen(&info->strtab[src->st_name]) + 1; + for (ndst = i = 0; i < nsrc; i++) { + if (i == 0 || + is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum)) { + strtab_size += strlen(&info->strtab[src[i].st_name])+1; ndst++; } + } /* Append room for core symbols at end of core part. */ info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1); @@ -2312,15 +2337,15 @@ mod->core_symtab = dst = mod->module_core + info->symoffs; mod->core_strtab = s = mod->module_core + info->stroffs; src = mod->symtab; - *dst = *src; *s++ = 0; - for (ndst = i = 1; i < mod->num_symtab; ++i, ++src) { - if (!is_core_symbol(src, info->sechdrs, info->hdr->e_shnum)) - continue; - - dst[ndst] = *src; - dst[ndst++].st_name = s - mod->core_strtab; - s += strlcpy(s, &mod->strtab[src->st_name], KSYM_NAME_LEN) + 1; + for (ndst = i = 0; i < mod->num_symtab; i++) { + if (i == 0 || + is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum)) { + dst[ndst] = src[i]; + dst[ndst++].st_name = s - mod->core_strtab; + s += strlcpy(s, &mod->strtab[src[i].st_name], + KSYM_NAME_LEN) + 1; + } } mod->core_num_syms = ndst; } @@ -2730,6 +2755,10 @@ if (strcmp(mod->name, "driverloader") == 0) add_taint_module(mod, TAINT_PROPRIETARY_MODULE); + /* lve claims to be GPL but upstream won't provide source */ + if (strcmp(mod->name, "lve") == 0) + add_taint_module(mod, TAINT_PROPRIETARY_MODULE); + #ifdef CONFIG_MODVERSIONS if ((mod->num_syms && !mod->crcs) || (mod->num_gpl_syms && !mod->gpl_crcs) @@ -2861,6 +2890,21 @@ return module_finalize(info->hdr, info->sechdrs, mod); } +/* Is this module of this name done loading? No locks held. */ +static bool finished_loading(const char *name) +{ + struct module *mod; + bool ret; + + mutex_lock(&module_mutex); + mod = find_module_all(name, true); + ret = !mod || mod->state == MODULE_STATE_LIVE + || mod->state == MODULE_STATE_GOING; + mutex_unlock(&module_mutex); + + return ret; +} + /* Allocate and load the module: note that size of section 0 is always zero, and we rely on this for optional sections. */ static struct module *load_module(void __user *umod, @@ -2868,7 +2912,7 @@ const char __user *uargs) { struct load_info info = { NULL, }; - struct module *mod; + struct module *mod, *old; long err; pr_debug("load_module: umod=%p, len=%lu, uargs=%p\n", @@ -2886,10 +2930,36 @@ goto free_copy; } + /* + * We try to place it in the list now to make sure it's unique + * before we dedicate too many resources. In particular, + * temporary percpu memory exhaustion. + */ + mod->state = MODULE_STATE_UNFORMED; +again: + mutex_lock(&module_mutex); + if ((old = find_module_all(mod->name, true)) != NULL) { + if (old->state == MODULE_STATE_COMING + || old->state == MODULE_STATE_UNFORMED) { + /* Wait in case it fails to load. */ + mutex_unlock(&module_mutex); + err = wait_event_interruptible(module_wq, + finished_loading(mod->name)); + if (err) + goto free_module; + goto again; + } + err = -EEXIST; + mutex_unlock(&module_mutex); + goto free_module; + } + list_add_rcu(&mod->list, &modules); + mutex_unlock(&module_mutex); + /* Now module is in final location, initialize linked lists, etc. */ err = module_unload_init(mod); if (err) - goto free_module; + goto unlink_mod; /* Now we've got everything in the final locations, we can * find optional sections. */ @@ -2924,44 +2994,33 @@ goto free_arch_cleanup; } - /* Mark state as coming so strong_try_module_get() ignores us. */ - mod->state = MODULE_STATE_COMING; - - /* Now sew it into the lists so we can get lockdep and oops - * info during argument parsing. No one should access us, since - * strong_try_module_get() will fail. - * lockdep/oops can run asynchronous, so use the RCU list insertion - * function to insert in a way safe to concurrent readers. - * The mutex protects against concurrent writers. - */ - mutex_lock(&module_mutex); - if (find_module(mod->name)) { - err = -EEXIST; - goto unlock; - } - - /* This has to be done once we're sure module name is unique. */ dynamic_debug_setup(info.debug, info.num_debug); - /* Find duplicate symbols */ + mutex_lock(&module_mutex); + /* Find duplicate symbols (must be called under lock). */ err = verify_export_symbols(mod); if (err < 0) - goto ddebug; + goto ddebug_cleanup; + /* This relies on module_mutex for list integrity. */ module_bug_finalize(info.hdr, info.sechdrs, mod); - list_add_rcu(&mod->list, &modules); + + /* Mark state as coming so strong_try_module_get() ignores us, + * but kallsyms etc. can see us. */ + mod->state = MODULE_STATE_COMING; + mutex_unlock(&module_mutex); /* Module is ready to execute: parsing args may do that. */ err = parse_args(mod->name, mod->args, mod->kp, mod->num_kp, -32768, 32767, &ddebug_dyndbg_module_param_cb); if (err < 0) - goto unlink; + goto bug_cleanup; /* Link in to syfs. */ err = mod_sysfs_setup(mod, &info, mod->kp, mod->num_kp); if (err < 0) - goto unlink; + goto bug_cleanup; /* Get rid of temporary copy. */ free_copy(&info); @@ -2970,16 +3029,13 @@ trace_module_load(mod); return mod; - unlink: + bug_cleanup: + /* module_bug_cleanup needs module_mutex protection */ mutex_lock(&module_mutex); - /* Unlink carefully: kallsyms could be walking list. */ - list_del_rcu(&mod->list); module_bug_cleanup(mod); - - ddebug: - dynamic_debug_remove(info.debug); - unlock: + ddebug_cleanup: mutex_unlock(&module_mutex); + dynamic_debug_remove(info.debug); synchronize_sched(); kfree(mod->args); free_arch_cleanup: @@ -2988,6 +3044,12 @@ free_modinfo(mod); free_unload: module_unload_free(mod); + unlink_mod: + mutex_lock(&module_mutex); + /* Unlink carefully: kallsyms could be walking list. */ + list_del_rcu(&mod->list); + wake_up_all(&module_wq); + mutex_unlock(&module_mutex); free_module: module_deallocate(mod, &info); free_copy: @@ -3050,7 +3112,7 @@ blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_GOING, mod); free_module(mod); - wake_up(&module_wq); + wake_up_all(&module_wq); return ret; } if (ret > 0) { @@ -3062,9 +3124,8 @@ dump_stack(); } - /* Now it's a first class citizen! Wake up anyone waiting for it. */ + /* Now it's a first class citizen! */ mod->state = MODULE_STATE_LIVE; - wake_up(&module_wq); blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_LIVE, mod); @@ -3087,6 +3148,7 @@ mod->init_ro_size = 0; mod->init_text_size = 0; mutex_unlock(&module_mutex); + wake_up_all(&module_wq); return 0; } @@ -3164,6 +3226,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { if (modname) @@ -3187,6 +3251,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { const char *sym; @@ -3211,6 +3277,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { const char *sym; @@ -3238,6 +3306,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (symnum < mod->num_symtab) { *value = mod->symtab[symnum].st_value; *type = mod->symtab[symnum].st_info; @@ -3280,9 +3350,12 @@ ret = mod_find_symname(mod, colon+1); *colon = ':'; } else { - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((ret = mod_find_symname(mod, name)) != 0) break; + } } preempt_enable(); return ret; @@ -3297,6 +3370,8 @@ int ret; list_for_each_entry(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; for (i = 0; i < mod->num_symtab; i++) { ret = fn(data, mod->strtab + mod->symtab[i].st_name, mod, mod->symtab[i].st_value); @@ -3312,6 +3387,7 @@ { int bx = 0; + BUG_ON(mod->state == MODULE_STATE_UNFORMED); if (mod->taints || mod->state == MODULE_STATE_GOING || mod->state == MODULE_STATE_COMING) { @@ -3353,6 +3429,10 @@ struct module *mod = list_entry(p, struct module, list); char buf[8]; + /* We always ignore unformed modules. */ + if (mod->state == MODULE_STATE_UNFORMED) + return 0; + seq_printf(m, "%s %u", mod->name, mod->init_size + mod->core_size); print_unload_info(m, mod); @@ -3413,6 +3493,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (mod->num_exentries == 0) continue; @@ -3461,10 +3543,13 @@ if (addr < module_addr_min || addr > module_addr_max) return NULL; - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_core(addr, mod) || within_module_init(addr, mod)) return mod; + } return NULL; } EXPORT_SYMBOL_GPL(__module_address); @@ -3517,8 +3602,11 @@ printk(KERN_DEFAULT "Modules linked in:"); /* Most callers should already have preempt disabled, but make sure */ preempt_disable(); - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; printk(" %s%s", mod->name, module_flags(mod, buf)); + } preempt_enable(); if (last_unloaded_module[0]) printk(" [last unloaded: %s]", last_unloaded_module); --- linux-3.5.0.orig/kernel/auditsc.c +++ linux-3.5.0/kernel/auditsc.c @@ -2670,7 +2670,7 @@ context->type = AUDIT_MMAP; } -static void audit_log_abend(struct audit_buffer *ab, char *reason, long signr) +static void audit_log_task(struct audit_buffer *ab) { uid_t auid, uid; gid_t gid; @@ -2685,6 +2685,11 @@ audit_log_task_context(ab); audit_log_format(ab, " pid=%d comm=", current->pid); audit_log_untrustedstring(ab, current->comm); +} + +static void audit_log_abend(struct audit_buffer *ab, char *reason, long signr) +{ + audit_log_task(ab); audit_log_format(ab, " reason="); audit_log_string(ab, reason); audit_log_format(ab, " sig=%ld", signr); @@ -2715,8 +2720,11 @@ { struct audit_buffer *ab; - ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_ANOM_ABEND); - audit_log_abend(ab, "seccomp", signr); + ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_SECCOMP); + if (unlikely(!ab)) + return; + audit_log_task(ab); + audit_log_format(ab, " sig=%ld", signr); audit_log_format(ab, " syscall=%ld", syscall); audit_log_format(ab, " compat=%d", is_compat_task()); audit_log_format(ab, " ip=0x%lx", KSTK_EIP(current)); --- linux-3.5.0.orig/kernel/sys.c +++ linux-3.5.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,6 +390,8 @@ void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); + migrate_to_reboot_cpu(); + syscore_shutdown(); if (!cmd) printk(KERN_EMERG "Restarting system.\n"); else @@ -393,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); @@ -411,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); @@ -1264,15 +1289,16 @@ * Work around broken programs that cannot handle "Linux 3.0". * Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40 */ -static int override_release(char __user *release, int len) +static int override_release(char __user *release, size_t len) { int ret = 0; - char buf[65]; if (current->personality & UNAME26) { - char *rest = UTS_RELEASE; + const char *rest = UTS_RELEASE; + char buf[65] = { 0 }; int ndots = 0; unsigned v; + size_t copy; while (*rest) { if (*rest == '.' && ++ndots >= 3) @@ -1282,8 +1308,9 @@ rest++; } v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40; - snprintf(buf, len, "2.6.%u%s", v, rest); - ret = copy_to_user(release, buf, len); + copy = clamp_t(size_t, len, 1, sizeof(buf)); + copy = scnprintf(buf, copy, "2.6.%u%s", v, rest); + ret = copy_to_user(release, buf, copy + 1); } return ret; } --- linux-3.5.0.orig/kernel/signal.c +++ linux-3.5.0/kernel/signal.c @@ -483,6 +483,9 @@ if (force_default || ka->sa.sa_handler != SIG_IGN) ka->sa.sa_handler = SIG_DFL; ka->sa.sa_flags = 0; +#ifdef __ARCH_HAS_SA_RESTORER + ka->sa.sa_restorer = NULL; +#endif sigemptyset(&ka->sa.sa_mask); ka++; } @@ -678,23 +681,17 @@ * No need to set need_resched since signal event passing * goes through ->blocked */ -void signal_wake_up(struct task_struct *t, int resume) +void signal_wake_up_state(struct task_struct *t, unsigned int state) { - unsigned int mask; - set_tsk_thread_flag(t, TIF_SIGPENDING); - /* - * For SIGKILL, we want to wake it up in the stopped/traced/killable + * TASK_WAKEKILL also means wake it up in the stopped/traced/killable * case. We don't check t->state here because there is a race with it * executing another processor and just now entering stopped state. * By using wake_up_state, we ensure the process will wake up and * handle its death signal. */ - mask = TASK_INTERRUPTIBLE; - if (resume) - mask |= TASK_WAKEKILL; - if (!wake_up_state(t, mask)) + if (!wake_up_state(t, state | TASK_INTERRUPTIBLE)) kick_process(t); } @@ -842,7 +839,7 @@ assert_spin_locked(&t->sighand->siglock); task_set_jobctl_pending(t, JOBCTL_TRAP_NOTIFY); - signal_wake_up(t, t->jobctl & JOBCTL_LISTENING); + ptrace_signal_wake_up(t, t->jobctl & JOBCTL_LISTENING); } /* @@ -1797,6 +1794,10 @@ * If SIGKILL was already sent before the caller unlocked * ->siglock we must see ->core_state != NULL. Otherwise it * is safe to enter schedule(). + * + * This is almost outdated, a task with the pending SIGKILL can't + * block in TASK_TRACED. But PTRACE_EVENT_EXIT can be reported + * after SIGKILL was already dequeued. */ if (unlikely(current->mm->core_state) && unlikely(current->mm == current->parent->mm)) @@ -1922,6 +1923,7 @@ if (gstop_done) do_notify_parent_cldstop(current, false, why); + /* tasklist protects us from ptrace_freeze_traced() */ __set_current_state(TASK_RUNNING); if (clear_code) current->exit_code = 0; @@ -2883,7 +2885,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; @@ -3215,6 +3217,7 @@ int old = current->blocked.sig[0]; sigset_t newset; + siginitset(&newset, newmask); set_current_blocked(&newset); return old; --- linux-3.5.0.orig/kernel/timer.c +++ linux-3.5.0/kernel/timer.c @@ -63,6 +63,7 @@ #define TVR_SIZE (1 << TVR_BITS) #define TVN_MASK (TVN_SIZE - 1) #define TVR_MASK (TVR_SIZE - 1) +#define MAX_TVAL ((unsigned long)((1ULL << (TVR_BITS + 4*TVN_BITS)) - 1)) struct tvec { struct list_head vec[TVN_SIZE]; @@ -356,11 +357,12 @@ vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK); } else { int i; - /* If the timeout is larger than 0xffffffff on 64-bit - * architectures then we use the maximum timeout: + /* If the timeout is larger than MAX_TVAL (on 64-bit + * architectures or with CONFIG_BASE_SMALL=1) then we + * use the maximum timeout. */ - if (idx > 0xffffffffUL) { - idx = 0xffffffffUL; + if (idx > MAX_TVAL) { + idx = MAX_TVAL; expires = idx + base->timer_jiffies; } i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK; @@ -1686,12 +1688,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-3.5.0.orig/kernel/smp.c +++ linux-3.5.0/kernel/smp.c @@ -33,6 +33,7 @@ struct call_single_data csd; atomic_t refs; cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; }; static DEFINE_PER_CPU_SHARED_ALIGNED(struct call_function_data, cfd_data); @@ -56,6 +57,9 @@ if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL, cpu_to_node(cpu))) return notifier_from_errno(-ENOMEM); + if (!zalloc_cpumask_var_node(&cfd->cpumask_ipi, GFP_KERNEL, + cpu_to_node(cpu))) + return notifier_from_errno(-ENOMEM); break; #ifdef CONFIG_HOTPLUG_CPU @@ -65,6 +69,7 @@ case CPU_DEAD: case CPU_DEAD_FROZEN: free_cpumask_var(cfd->cpumask); + free_cpumask_var(cfd->cpumask_ipi); break; #endif }; @@ -526,6 +531,12 @@ return; } + /* + * After we put an entry into the list, data->cpumask + * may be cleared again when another CPU sends another IPI for + * a SMP function call, so data->cpumask will be zero. + */ + cpumask_copy(data->cpumask_ipi, data->cpumask); raw_spin_lock_irqsave(&call_function.lock, flags); /* * Place entry at the _HEAD_ of the list, so that any cpu still @@ -549,7 +560,7 @@ smp_mb(); /* Send a message to all CPUs in the map */ - arch_send_call_function_ipi_mask(data->cpumask); + arch_send_call_function_ipi_mask(data->cpumask_ipi); /* Optionally wait for the CPUs to complete */ if (wait) --- linux-3.5.0.orig/kernel/seccomp.c +++ linux-3.5.0/kernel/seccomp.c @@ -443,7 +443,7 @@ #ifdef SECCOMP_DEBUG dump_stack(); #endif - audit_seccomp(this_syscall, exit_sig, ret); + __audit_seccomp(this_syscall, exit_sig, ret); do_exit(exit_sig); #ifdef CONFIG_SECCOMP_FILTER skip: --- linux-3.5.0.orig/kernel/cpuset.c +++ linux-3.5.0/kernel/cpuset.c @@ -2054,6 +2054,9 @@ * (of no affect) on systems that are actively using CPU hotplug * but making no active use of cpusets. * + * The only exception to this is suspend/resume, where we don't + * modify cpusets at all. + * * This routine ensures that top_cpuset.cpus_allowed tracks * cpu_active_mask on each CPU hotplug (cpuhp) event. * @@ -2465,8 +2468,16 @@ dentry = task_cs(tsk)->css.cgroup->dentry; spin_lock(&cpuset_buffer_lock); - snprintf(cpuset_name, CPUSET_NAME_LEN, - dentry ? (const char *)dentry->d_name.name : "/"); + + if (!dentry) { + strcpy(cpuset_name, "/"); + } else { + spin_lock(&dentry->d_lock); + strlcpy(cpuset_name, (const char *)dentry->d_name.name, + CPUSET_NAME_LEN); + spin_unlock(&dentry->d_lock); + } + nodelist_scnprintf(cpuset_nodelist, CPUSET_NODELIST_LEN, tsk->mems_allowed); printk(KERN_INFO "%s cpuset=%s mems_allowed=%s\n", --- linux-3.5.0.orig/kernel/posix-timers.c +++ linux-3.5.0/kernel/posix-timers.c @@ -639,6 +639,13 @@ { struct k_itimer *timr; + /* + * timer_t could be any type >= int and we want to make sure any + * @timer_id outside positive int range fails lookup. + */ + if ((unsigned long long)timer_id > INT_MAX) + return NULL; + rcu_read_lock(); timr = idr_find(&posix_timers_id, (int)timer_id); if (timr) { --- linux-3.5.0.orig/kernel/kexec.c +++ linux-3.5.0/kernel/kexec.c @@ -947,6 +947,11 @@ if (!capable(CAP_SYS_BOOT)) return -EPERM; + /* Processes in containers must not be allowed to load a new + * kernel, even if they have CAP_SYS_BOOT */ + if (task_active_pid_ns(current) != &init_pid_ns) + return -EPERM; + /* * Verify we have a legal set of flags * This leaves us room for future extensions. --- linux-3.5.0.orig/kernel/cpu.c +++ linux-3.5.0/kernel/cpu.c @@ -129,6 +129,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) {} @@ -534,36 +555,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 @@ -582,12 +573,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-3.5.0.orig/kernel/panic.c +++ linux-3.5.0/kernel/panic.c @@ -75,6 +75,14 @@ int state = 0; /* + * Disable local interrupts. This will prevent panic_smp_self_stop + * from deadlocking the first cpu that invokes the panic, since + * there is nothing to prevent an interrupt handler (that runs + * after the panic_lock is acquired) from invoking panic again. + */ + local_irq_disable(); + + /* * It's possible to come here directly from a panic-assertion and * not have preempt disabled. Some functions called from here want * preempt to be disabled. No point enabling it later though... --- linux-3.5.0.orig/kernel/printk.c +++ linux-3.5.0/kernel/printk.c @@ -235,7 +235,8 @@ static u64 clear_seq; static u32 clear_idx; -#define LOG_LINE_MAX 1024 +#define PREFIX_MAX 32 +#define LOG_LINE_MAX 1024 - PREFIX_MAX /* record buffer */ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) @@ -356,6 +357,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; @@ -591,7 +639,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; @@ -758,45 +807,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 @@ -811,10 +821,11 @@ if (!printk_time) return 0; + rem_nsec = do_div(ts, 1000000000); + if (!buf) - return 15; + return snprintf(NULL, 0, "[%5lu.000000] ", (unsigned long)ts); - rem_nsec = do_div(ts, 1000000000); return sprintf(buf, "[%5lu.%06lu] ", (unsigned long)ts, rem_nsec / 1000); } @@ -876,7 +887,7 @@ if (buf) { if (print_prefix(msg, syslog, NULL) + - text_len + 1>= size - len) + text_len + 1 >= size - len) break; if (prefix) @@ -907,7 +918,7 @@ struct log *msg; int len = 0; - text = kmalloc(LOG_LINE_MAX, GFP_KERNEL); + text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL); if (!text) return -ENOMEM; @@ -930,7 +941,8 @@ skip = syslog_partial; msg = log_from_idx(syslog_idx); - n = msg_print_text(msg, syslog_prev, true, text, LOG_LINE_MAX); + n = msg_print_text(msg, syslog_prev, true, text, + LOG_LINE_MAX + PREFIX_MAX); if (n - syslog_partial <= size) { /* message fits into buffer, move forward */ syslog_idx = log_next(syslog_idx); @@ -969,7 +981,7 @@ char *text; int len = 0; - text = kmalloc(LOG_LINE_MAX, GFP_KERNEL); + text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL); if (!text) return -ENOMEM; @@ -997,6 +1009,7 @@ struct log *msg = log_from_idx(idx); len += msg_print_text(msg, prev, true, NULL, 0); + prev = msg->flags; idx = log_next(idx); seq++; } @@ -1009,6 +1022,7 @@ struct log *msg = log_from_idx(idx); len -= msg_print_text(msg, prev, true, NULL, 0); + prev = msg->flags; idx = log_next(idx); seq++; } @@ -1022,7 +1036,8 @@ struct log *msg = log_from_idx(idx); int textlen; - textlen = msg_print_text(msg, prev, true, text, LOG_LINE_MAX); + textlen = msg_print_text(msg, prev, true, text, + LOG_LINE_MAX + PREFIX_MAX); if (textlen < 0) { len = textlen; break; @@ -1189,7 +1204,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); } static bool __read_mostly ignore_loglevel; @@ -1352,15 +1367,15 @@ bool flushed:1; /* buffer sealed and committed */ } cont; -static void cont_flush(void) +static void cont_flush(enum log_flags flags) { if (cont.flushed) return; if (cont.len == 0) return; - log_store(cont.facility, cont.level, LOG_NOCONS, cont.ts_nsec, - NULL, 0, cont.buf, cont.len); + log_store(cont.facility, cont.level, LOG_NOCONS | flags, + cont.ts_nsec, NULL, 0, cont.buf, cont.len); cont.flushed = true; } @@ -1371,7 +1386,8 @@ return false; if (cont.len + len > sizeof(cont.buf)) { - cont_flush(); + /* the line gets too long, split it up in separate records */ + cont_flush(LOG_CONT); return false; } @@ -1507,7 +1523,7 @@ * or another task also prints continuation lines. */ if (cont.len && (lflags & LOG_PREFIX || cont.owner != current)) - cont_flush(); + cont_flush(0); /* buffer line if possible, otherwise store it right away */ if (!cont_add(facility, level, text, text_len)) @@ -1525,7 +1541,7 @@ if (cont.len && cont.owner == current) { if (!(lflags & LOG_PREFIX)) stored = cont_add(facility, level, text, text_len); - cont_flush(); + cont_flush(0); } if (!stored) @@ -1618,7 +1634,8 @@ #else -#define LOG_LINE_MAX 0 +#define LOG_LINE_MAX 0 +#define PREFIX_MAX 0 static struct cont { size_t len; size_t cons; @@ -1923,7 +1940,7 @@ */ void console_unlock(void) { - static char text[LOG_LINE_MAX]; + static char text[LOG_LINE_MAX + PREFIX_MAX]; static u64 seen_seq; unsigned long flags; bool wake_klogd = false; --- linux-3.5.0.orig/kernel/kthread.c +++ linux-3.5.0/kernel/kthread.c @@ -360,16 +360,12 @@ struct kthread_work, node); list_del_init(&work->node); } + worker->current_work = work; spin_unlock_irq(&worker->lock); if (work) { __set_current_state(TASK_RUNNING); work->func(work); - smp_wmb(); /* wmb worker-b0 paired with flush-b1 */ - work->done_seq = work->queue_seq; - smp_mb(); /* mb worker-b1 paired with flush-b0 */ - if (atomic_read(&work->flushing)) - wake_up_all(&work->done); } else if (!freezing(current)) schedule(); @@ -378,6 +374,19 @@ } EXPORT_SYMBOL_GPL(kthread_worker_fn); +/* insert @work before @pos in @worker */ +static void insert_kthread_work(struct kthread_worker *worker, + struct kthread_work *work, + struct list_head *pos) +{ + lockdep_assert_held(&worker->lock); + + list_add_tail(&work->node, pos); + work->worker = worker; + if (likely(worker->task)) + wake_up_process(worker->task); +} + /** * queue_kthread_work - queue a kthread_work * @worker: target kthread_worker @@ -395,10 +404,7 @@ spin_lock_irqsave(&worker->lock, flags); if (list_empty(&work->node)) { - list_add_tail(&work->node, &worker->work_list); - work->queue_seq++; - if (likely(worker->task)) - wake_up_process(worker->task); + insert_kthread_work(worker, work, &worker->work_list); ret = true; } spin_unlock_irqrestore(&worker->lock, flags); @@ -406,6 +412,18 @@ } EXPORT_SYMBOL_GPL(queue_kthread_work); +struct kthread_flush_work { + struct kthread_work work; + struct completion done; +}; + +static void kthread_flush_work_fn(struct kthread_work *work) +{ + struct kthread_flush_work *fwork = + container_of(work, struct kthread_flush_work, work); + complete(&fwork->done); +} + /** * flush_kthread_work - flush a kthread_work * @work: work to flush @@ -414,39 +432,37 @@ */ void flush_kthread_work(struct kthread_work *work) { - int seq = work->queue_seq; - - atomic_inc(&work->flushing); + struct kthread_flush_work fwork = { + KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), + COMPLETION_INITIALIZER_ONSTACK(fwork.done), + }; + struct kthread_worker *worker; + bool noop = false; + +retry: + worker = work->worker; + if (!worker) + return; + + spin_lock_irq(&worker->lock); + if (work->worker != worker) { + spin_unlock_irq(&worker->lock); + goto retry; + } - /* - * mb flush-b0 paired with worker-b1, to make sure either - * worker sees the above increment or we see done_seq update. - */ - smp_mb__after_atomic_inc(); - - /* A - B <= 0 tests whether B is in front of A regardless of overflow */ - wait_event(work->done, seq - work->done_seq <= 0); - atomic_dec(&work->flushing); - - /* - * rmb flush-b1 paired with worker-b0, to make sure our caller - * sees every change made by work->func(). - */ - smp_mb__after_atomic_dec(); -} -EXPORT_SYMBOL_GPL(flush_kthread_work); + if (!list_empty(&work->node)) + insert_kthread_work(worker, &fwork.work, work->node.next); + else if (worker->current_work == work) + insert_kthread_work(worker, &fwork.work, worker->work_list.next); + else + noop = true; -struct kthread_flush_work { - struct kthread_work work; - struct completion done; -}; + spin_unlock_irq(&worker->lock); -static void kthread_flush_work_fn(struct kthread_work *work) -{ - struct kthread_flush_work *fwork = - container_of(work, struct kthread_flush_work, work); - complete(&fwork->done); + if (!noop) + wait_for_completion(&fwork.done); } +EXPORT_SYMBOL_GPL(flush_kthread_work); /** * flush_kthread_worker - flush all current works on a kthread_worker --- linux-3.5.0.orig/kernel/posix-cpu-timers.c +++ linux-3.5.0/kernel/posix-cpu-timers.c @@ -1422,8 +1422,10 @@ while (!signal_pending(current)) { if (timer.it.cpu.expires.sched == 0) { /* - * Our timer fired and was reset. + * Our timer fired and was reset, below + * deletion can not fail. */ + posix_cpu_timer_del(&timer); spin_unlock_irq(&timer.it_lock); return 0; } @@ -1441,9 +1443,26 @@ * We were interrupted by a signal. */ sample_to_timespec(which_clock, timer.it.cpu.expires, rqtp); - posix_cpu_timer_set(&timer, 0, &zero_it, it); + error = posix_cpu_timer_set(&timer, 0, &zero_it, it); + if (!error) { + /* + * Timer is now unarmed, deletion can not fail. + */ + posix_cpu_timer_del(&timer); + } spin_unlock_irq(&timer.it_lock); + while (error == TIMER_RETRY) { + /* + * We need to handle case when timer was or is in the + * middle of firing. In other cases we already freed + * resources. + */ + spin_lock_irq(&timer.it_lock); + error = posix_cpu_timer_del(&timer); + spin_unlock_irq(&timer.it_lock); + } + if ((it->it_value.tv_sec | it->it_value.tv_nsec) == 0) { /* * It actually did fire already. --- linux-3.5.0.orig/kernel/kmod.c +++ linux-3.5.0/kernel/kmod.c @@ -541,6 +541,11 @@ int retval = 0; helper_lock(); + if (!sub_info->path) { + retval = -EINVAL; + goto out; + } + if (sub_info->path[0] == '\0') goto out; @@ -585,6 +590,8 @@ struct subprocess_info *info; gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL; + populate_rootfs_wait(); + info = call_usermodehelper_setup(path, argv, envp, gfp_mask); if (info == NULL) --- linux-3.5.0.orig/kernel/futex_compat.c +++ linux-3.5.0/kernel/futex_compat.c @@ -142,8 +142,6 @@ if (!futex_cmpxchg_enabled) return -ENOSYS; - WARN_ONCE(1, "deprecated: get_robust_list will be deleted in 2013.\n"); - rcu_read_lock(); ret = -ESRCH; --- linux-3.5.0.orig/kernel/hrtimer.c +++ linux-3.5.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-3.5.0.orig/kernel/async.c +++ linux-3.5.0/kernel/async.c @@ -84,19 +84,35 @@ */ static async_cookie_t __lowest_in_progress(struct list_head *running) { + async_cookie_t first_running = next_cookie; /* infinity value */ + async_cookie_t first_pending = next_cookie; /* ditto */ struct async_entry *entry; + if (!running) { /* just check the entry count */ + if (atomic_read(&entry_count)) + return 0; /* smaller than any cookie */ + else + return next_cookie; + } + + /* + * Both running and pending lists are sorted but not disjoint. + * Take the first cookies from both and return the min. + */ if (!list_empty(running)) { entry = list_first_entry(running, struct async_entry, list); - return entry->cookie; + first_running = entry->cookie; } - list_for_each_entry(entry, &async_pending, list) - if (entry->running == running) - return entry->cookie; + list_for_each_entry(entry, &async_pending, list) { + if (entry->running == running) { + first_pending = entry->cookie; + break; + } + } - return next_cookie; /* "infinity" value */ + return min(first_running, first_pending); } static async_cookie_t lowest_in_progress(struct list_head *running) @@ -117,12 +133,16 @@ { struct async_entry *entry = container_of(work, struct async_entry, work); + struct async_entry *pos; unsigned long flags; ktime_t uninitialized_var(calltime), delta, rettime; - /* 1) move self to the running queue */ + /* 1) move self to the running queue, make sure it stays sorted */ spin_lock_irqsave(&async_lock, flags); - list_move_tail(&entry->list, entry->running); + list_for_each_entry_reverse(pos, entry->running, list) + if (entry->cookie < pos->cookie) + break; + list_move_tail(&entry->list, &pos->list); spin_unlock_irqrestore(&async_lock, flags); /* 2) run (and print duration) */ @@ -236,9 +256,7 @@ */ void async_synchronize_full(void) { - do { - async_synchronize_cookie(next_cookie); - } while (!list_empty(&async_running) || !list_empty(&async_pending)); + async_synchronize_cookie_domain(next_cookie, NULL); } EXPORT_SYMBOL_GPL(async_synchronize_full); @@ -258,7 +276,7 @@ /** * async_synchronize_cookie_domain - synchronize asynchronous function calls within a certain domain with cookie checkpointing * @cookie: async_cookie_t to use as checkpoint - * @running: running list to synchronize on + * @running: running list to synchronize on, NULL indicates all lists * * This function waits until all asynchronous function calls for the * synchronization domain specified by the running list @list submitted --- linux-3.5.0.orig/kernel/exit.c +++ linux-3.5.0/kernel/exit.c @@ -483,7 +483,7 @@ rcu_read_unlock(); for (;;) { unsigned long set; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; if (i >= fdt->max_fds) break; set = fdt->open_fds[j++]; --- linux-3.5.0.orig/kernel/audit_tree.c +++ linux-3.5.0/kernel/audit_tree.c @@ -249,8 +249,7 @@ list_del_rcu(&chunk->hash); spin_unlock(&hash_lock); spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); - fsnotify_put_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); goto out; } @@ -259,7 +258,7 @@ fsnotify_duplicate_mark(&new->mark, entry); if (fsnotify_add_mark(&new->mark, new->mark.group, new->mark.i.inode, NULL, 1)) { - free_chunk(new); + fsnotify_put_mark(&new->mark); goto Fallback; } @@ -292,8 +291,8 @@ owner->root = new; spin_unlock(&hash_lock); spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); - fsnotify_put_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); + fsnotify_put_mark(&new->mark); /* drop initial reference */ goto out; Fallback: @@ -322,7 +321,7 @@ entry = &chunk->mark; if (fsnotify_add_mark(entry, audit_tree_group, inode, NULL, 0)) { - free_chunk(chunk); + fsnotify_put_mark(entry); return -ENOSPC; } @@ -332,7 +331,7 @@ spin_unlock(&hash_lock); chunk->dead = 1; spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); fsnotify_put_mark(entry); return 0; } @@ -347,6 +346,7 @@ insert_hash(chunk); spin_unlock(&hash_lock); spin_unlock(&entry->lock); + fsnotify_put_mark(entry); /* drop initial reference */ return 0; } @@ -396,7 +396,7 @@ fsnotify_duplicate_mark(chunk_entry, old_entry); if (fsnotify_add_mark(chunk_entry, chunk_entry->group, chunk_entry->i.inode, NULL, 1)) { spin_unlock(&old_entry->lock); - free_chunk(chunk); + fsnotify_put_mark(chunk_entry); fsnotify_put_mark(old_entry); return -ENOSPC; } @@ -412,7 +412,7 @@ spin_unlock(&chunk_entry->lock); spin_unlock(&old_entry->lock); - fsnotify_destroy_mark(chunk_entry); + fsnotify_destroy_mark(chunk_entry, audit_tree_group); fsnotify_put_mark(chunk_entry); fsnotify_put_mark(old_entry); @@ -443,9 +443,9 @@ spin_unlock(&hash_lock); spin_unlock(&chunk_entry->lock); spin_unlock(&old_entry->lock); - fsnotify_destroy_mark(old_entry); + fsnotify_destroy_mark(old_entry, audit_tree_group); + fsnotify_put_mark(chunk_entry); /* drop initial reference */ fsnotify_put_mark(old_entry); /* pair to fsnotify_find mark_entry */ - fsnotify_put_mark(old_entry); /* and kill it */ return 0; } @@ -609,9 +609,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); @@ -916,7 +916,12 @@ struct audit_chunk *chunk = container_of(entry, struct audit_chunk, mark); evict_chunk(chunk); - fsnotify_put_mark(entry); + + /* + * We are guaranteed to have at least one reference to the mark from + * either the inode or the caller of fsnotify_destroy_mark(). + */ + BUG_ON(atomic_read(&entry->refcnt) < 1); } static bool audit_tree_send_event(struct fsnotify_group *group, struct inode *inode, --- linux-3.5.0.orig/kernel/params.c +++ linux-3.5.0/kernel/params.c @@ -90,8 +90,8 @@ unsigned num_params, s16 min_level, s16 max_level, - int (*handle_unknown)(char *param, char *val, - const char *doing)) + int (*handle_arg)(char *param, char *val, + const char *doing, int known)) { unsigned int i; int err; @@ -106,6 +106,14 @@ if (!val && params[i].ops->set != param_set_bool && params[i].ops->set != param_set_bint) return -EINVAL; + if (handle_arg) { + int ret; + pr_debug("Valid argument: calling %p\n", + handle_arg); + ret = handle_arg(param, val, doing, 1); + if (ret) + return ret; + } pr_debug("handling %s with %p\n", param, params[i].ops->set); mutex_lock(¶m_lock); @@ -115,9 +123,9 @@ } } - if (handle_unknown) { + if (handle_arg) { pr_debug("doing %s: %s='%s'\n", doing, param, val); - return handle_unknown(param, val, doing); + return handle_arg(param, val, doing, 0); } pr_debug("Unknown argument '%s'\n", param); @@ -183,7 +191,7 @@ unsigned num, s16 min_level, s16 max_level, - int (*unknown)(char *param, char *val, const char *doing)) + int (*handle_arg)(char *param, char *val, const char *doing, int arg)) { char *param, *val; @@ -200,7 +208,7 @@ args = next_arg(args, ¶m, &val); irq_was_disabled = irqs_disabled(); ret = parse_one(param, val, doing, params, num, - min_level, max_level, unknown); + min_level, max_level, handle_arg); if (irq_was_disabled && !irqs_disabled()) pr_warn("%s: option '%s' enabled irq's!\n", doing, param); --- linux-3.5.0.orig/kernel/cgroup_freezer.c +++ linux-3.5.0/kernel/cgroup_freezer.c @@ -186,23 +186,15 @@ { struct freezer *freezer; - /* - * No lock is needed, since the task isn't on tasklist yet, - * so it can't be moved to another cgroup, which means the - * freezer won't be removed and will be valid during this - * function call. Nevertheless, apply RCU read-side critical - * section to suppress RCU lockdep false positives. - */ rcu_read_lock(); freezer = task_freezer(task); - rcu_read_unlock(); /* * The root cgroup is non-freezable, so we can skip the * following check. */ if (!freezer->css.cgroup->parent) - return; + goto out; spin_lock_irq(&freezer->lock); BUG_ON(freezer->state == CGROUP_FROZEN); @@ -210,7 +202,10 @@ /* Locking avoids race with FREEZING -> THAWED transitions. */ if (freezer->state == CGROUP_FREEZING) freeze_task(task); + spin_unlock_irq(&freezer->lock); +out: + rcu_read_unlock(); } /* --- linux-3.5.0.orig/kernel/audit.c +++ linux-3.5.0/kernel/audit.c @@ -1167,7 +1167,7 @@ /* Wait for auditd to drain the queue a little */ 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-3.5.0.orig/kernel/timeconst.pl +++ linux-3.5.0/kernel/timeconst.pl @@ -369,10 +369,8 @@ die "Usage: $0 HZ\n"; } - @val = @{$canned_values{$hz}}; - if (!defined(@val)) { - @val = compute_values($hz); - } + $cv = $canned_values{$hz}; + @val = defined($cv) ? @$cv : compute_values($hz); output($hz, @val); } exit 0; --- linux-3.5.0.orig/kernel/fork.c +++ linux-3.5.0/kernel/fork.c @@ -459,8 +459,8 @@ if (retval) goto out; - if (file && uprobe_mmap(tmp)) - goto out; + if (file) + uprobe_mmap(tmp); } /* a new mm has just been created */ arch_dup_mmap(oldmm, mm); @@ -1160,7 +1160,6 @@ { int retval; struct task_struct *p; - int cgroup_callbacks_done = 0; if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -1422,12 +1421,6 @@ INIT_LIST_HEAD(&p->thread_group); INIT_HLIST_HEAD(&p->task_works); - /* Now that the task is set up, run cgroup callbacks if - * necessary. We need to run them before the task is visible - * on the tasklist. */ - cgroup_fork_callbacks(p); - cgroup_callbacks_done = 1; - /* Need tasklist lock for parent etc handling! */ write_lock_irq(&tasklist_lock); @@ -1532,7 +1525,7 @@ #endif if (clone_flags & CLONE_THREAD) threadgroup_change_end(current); - cgroup_exit(p, cgroup_callbacks_done); + cgroup_exit(p, 0); delayacct_tsk_free(p); module_put(task_thread_info(p)->exec_domain->module); bad_fork_cleanup_count: --- linux-3.5.0.orig/kernel/cgroup.c +++ linux-3.5.0/kernel/cgroup.c @@ -422,12 +422,20 @@ struct cgroup *cgrp = link->cgrp; list_del(&link->cg_link_list); list_del(&link->cgrp_link_list); + + /* + * We may not be holding cgroup_mutex, and if cgrp->count is + * dropped to 0 the cgroup can be destroyed at any time, hence + * rcu_read_lock is used to keep it alive. + */ + rcu_read_lock(); if (atomic_dec_and_test(&cgrp->count) && notify_on_release(cgrp)) { if (taskexit) set_bit(CGRP_RELEASABLE, &cgrp->flags); check_for_release(cgrp); } + rcu_read_unlock(); kfree(link); } @@ -954,7 +962,7 @@ dget(d); d_delete(d); - simple_unlink(d->d_inode, d); + simple_unlink(cgrp->dentry->d_inode, d); list_del_init(&cfe->node); dput(d); @@ -1927,9 +1935,8 @@ * trading it for newcg is protected by cgroup_mutex, we're safe to drop * it here; it will be freed under RCU. */ - put_css_set(oldcg); - set_bit(CGRP_RELEASABLE, &oldcgrp->flags); + put_css_set(oldcg); } /** @@ -2072,7 +2079,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; @@ -2640,9 +2647,7 @@ dentry->d_fsdata = cgrp; inc_nlink(parent->d_inode); rcu_assign_pointer(cgrp->dentry, dentry); - dget(dentry); } - dput(dentry); return error; } @@ -2685,12 +2690,6 @@ umode_t mode; char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 }; - /* does @cft->flags tell us to skip creation on @cgrp? */ - if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgrp->parent) - return 0; - if ((cft->flags & CFTYPE_ONLY_ON_ROOT) && cgrp->parent) - return 0; - if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) { strcpy(name, subsys->name); strcat(name, "."); @@ -2731,6 +2730,12 @@ int err, ret = 0; for (cft = cfts; cft->name[0] != '\0'; cft++) { + /* does cft->flags tell us to skip this file on @cgrp? */ + if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgrp->parent) + continue; + if ((cft->flags & CFTYPE_ONLY_ON_ROOT) && cgrp->parent) + continue; + if (is_add) err = cgroup_add_file(cgrp, subsys, cft); else @@ -4740,70 +4745,37 @@ * * A pointer to the shared css_set was automatically copied in * fork.c by dup_task_struct(). However, we ignore that copy, since - * it was not made under the protection of RCU, cgroup_mutex or - * threadgroup_change_begin(), so it might no longer be a valid - * cgroup pointer. cgroup_attach_task() might have already changed - * current->cgroups, allowing the previously referenced cgroup - * group to be removed and freed. - * - * Outside the pointer validity we also need to process the css_set - * inheritance between threadgoup_change_begin() and - * threadgoup_change_end(), this way there is no leak in any process - * wide migration performed by cgroup_attach_proc() that could otherwise - * miss a thread because it is too early or too late in the fork stage. + * it was not made under the protection of RCU or cgroup_mutex, so + * might no longer be a valid cgroup pointer. cgroup_attach_task() might + * have already changed current->cgroups, allowing the previously + * referenced cgroup group to be removed and freed. * * At the point that cgroup_fork() is called, 'current' is the parent * task, and the passed argument 'child' points to the child task. */ void cgroup_fork(struct task_struct *child) { - /* - * We don't need to task_lock() current because current->cgroups - * can't be changed concurrently here. The parent obviously hasn't - * exited and called cgroup_exit(), and we are synchronized against - * cgroup migration through threadgroup_change_begin(). - */ + task_lock(current); child->cgroups = current->cgroups; get_css_set(child->cgroups); + task_unlock(current); INIT_LIST_HEAD(&child->cg_list); } /** - * cgroup_fork_callbacks - run fork callbacks - * @child: the new task - * - * Called on a new task very soon before adding it to the - * tasklist. No need to take any locks since no-one can - * be operating on this task. - */ -void cgroup_fork_callbacks(struct task_struct *child) -{ - if (need_forkexit_callback) { - int i; - /* - * forkexit callbacks are only supported for builtin - * subsystems, and the builtin section of the subsys array is - * immutable, so we don't need to lock the subsys array here. - */ - for (i = 0; i < CGROUP_BUILTIN_SUBSYS_COUNT; i++) { - struct cgroup_subsys *ss = subsys[i]; - if (ss->fork) - ss->fork(child); - } - } -} - -/** * cgroup_post_fork - called on a new task after adding it to the task list * @child: the task in question * - * Adds the task to the list running through its css_set if necessary. - * Has to be after the task is visible on the task list in case we race - * with the first call to cgroup_iter_start() - to guarantee that the - * new task ends up on its list. + * Adds the task to the list running through its css_set if necessary and + * call the subsystem fork() callbacks. Has to be after the task is + * visible on the task list in case we race with the first call to + * cgroup_iter_start() - to guarantee that the new task ends up on its + * list. */ void cgroup_post_fork(struct task_struct *child) { + int i; + /* * use_task_css_set_links is set to 1 before we walk the tasklist * under the tasklist_lock and we read it here after we added the child @@ -4817,22 +4789,32 @@ */ if (use_task_css_set_links) { write_lock(&css_set_lock); - if (list_empty(&child->cg_list)) { - /* - * It's safe to use child->cgroups without task_lock() - * here because we are protected through - * threadgroup_change_begin() against concurrent - * css_set change in cgroup_task_migrate(). Also - * the task can't exit at that point until - * wake_up_new_task() is called, so we are protected - * against cgroup_exit() setting child->cgroup to - * init_css_set. - */ + task_lock(child); + if (list_empty(&child->cg_list)) list_add(&child->cg_list, &child->cgroups->tasks); - } + task_unlock(child); write_unlock(&css_set_lock); } + + /* + * Call ss->fork(). This must happen after @child is linked on + * css_set; otherwise, @child might change state between ->fork() + * and addition to css_set. + */ + if (need_forkexit_callback) { + /* + * forkexit callbacks are only supported for builtin + * subsystems, and the builtin section of the subsys array is + * immutable, so we don't need to lock the subsys array here. + */ + for (i = 0; i < CGROUP_BUILTIN_SUBSYS_COUNT; i++) { + struct cgroup_subsys *ss = subsys[i]; + if (ss->fork) + ss->fork(child); + } + } } + /** * cgroup_exit - detach cgroup from exiting task * @tsk: pointer to task_struct of exiting process --- linux-3.5.0.orig/kernel/rcutree.c +++ linux-3.5.0/kernel/rcutree.c @@ -211,13 +211,13 @@ .dynticks = ATOMIC_INIT(1), }; -static int blimit = 10; /* Maximum callbacks per rcu_do_batch. */ -static int qhimark = 10000; /* If this many pending, ignore blimit. */ -static int qlowmark = 100; /* Once only this many pending, use blimit. */ - -module_param(blimit, int, 0); -module_param(qhimark, int, 0); -module_param(qlowmark, int, 0); +static long blimit = 10; /* Maximum callbacks per rcu_do_batch. */ +static long qhimark = 10000; /* If this many pending, ignore blimit. */ +static long qlowmark = 100; /* Once only this many pending, use blimit. */ + +module_param(blimit, long, 0); +module_param(qhimark, long, 0); +module_param(qlowmark, long, 0); int rcu_cpu_stall_suppress __read_mostly; /* 1 = suppress stall warnings. */ int rcu_cpu_stall_timeout __read_mostly = CONFIG_RCU_CPU_STALL_TIMEOUT; @@ -304,7 +304,9 @@ static int cpu_needs_another_gp(struct rcu_state *rsp, struct rcu_data *rdp) { - return *rdp->nxttail[RCU_DONE_TAIL] && !rcu_gp_in_progress(rsp); + return *rdp->nxttail[RCU_DONE_TAIL + + ACCESS_ONCE(rsp->completed) != rdp->completed] && + !rcu_gp_in_progress(rsp); } /* @@ -1531,7 +1533,8 @@ { unsigned long flags; struct rcu_head *next, *list, **tail; - int bl, count, count_lazy, i; + long bl, count, count_lazy; + int i; /* If no callbacks are ready, just return.*/ if (!cpu_has_callbacks_ready_to_invoke(rdp)) { --- linux-3.5.0.orig/kernel/ptrace.c +++ linux-3.5.0/kernel/ptrace.c @@ -117,11 +117,45 @@ * TASK_KILLABLE sleeps. */ if (child->jobctl & JOBCTL_STOP_PENDING || task_is_traced(child)) - signal_wake_up(child, task_is_traced(child)); + ptrace_signal_wake_up(child, true); spin_unlock(&child->sighand->siglock); } +/* Ensure that nothing can wake it up, even SIGKILL */ +static bool ptrace_freeze_traced(struct task_struct *task) +{ + bool ret = false; + + /* Lockless, nobody but us can set this flag */ + if (task->jobctl & JOBCTL_LISTENING) + return ret; + + spin_lock_irq(&task->sighand->siglock); + if (task_is_traced(task) && !__fatal_signal_pending(task)) { + task->state = __TASK_TRACED; + ret = true; + } + spin_unlock_irq(&task->sighand->siglock); + + return ret; +} + +static void ptrace_unfreeze_traced(struct task_struct *task) +{ + if (task->state != __TASK_TRACED) + return; + + WARN_ON(!task->ptrace || task->parent != current); + + spin_lock_irq(&task->sighand->siglock); + if (__fatal_signal_pending(task)) + wake_up_state(task, __TASK_TRACED); + else + task->state = TASK_TRACED; + spin_unlock_irq(&task->sighand->siglock); +} + /** * ptrace_check_attach - check whether ptracee is ready for ptrace operation * @child: ptracee to check for @@ -151,24 +185,29 @@ * be changed by us so it's not changing right after this. */ read_lock(&tasklist_lock); - if ((child->ptrace & PT_PTRACED) && child->parent == current) { + if (child->ptrace && child->parent == current) { + WARN_ON(child->state == __TASK_TRACED); /* * child->sighand can't be NULL, release_task() * does ptrace_unlink() before __exit_signal(). */ - spin_lock_irq(&child->sighand->siglock); - WARN_ON_ONCE(task_is_stopped(child)); - if (ignore_state || (task_is_traced(child) && - !(child->jobctl & JOBCTL_LISTENING))) + if (ignore_state || ptrace_freeze_traced(child)) ret = 0; - spin_unlock_irq(&child->sighand->siglock); } read_unlock(&tasklist_lock); - if (!ret && !ignore_state) - ret = wait_task_inactive(child, TASK_TRACED) ? 0 : -ESRCH; + if (!ret && !ignore_state) { + if (!wait_task_inactive(child, __TASK_TRACED)) { + /* + * This can only happen if may_ptrace_stop() fails and + * ptrace_stop() changes ->state back to TASK_RUNNING, + * so we should not worry about leaking __TASK_TRACED. + */ + WARN_ON(child->state == __TASK_TRACED); + ret = -ESRCH; + } + } - /* All systems go.. */ return ret; } @@ -310,7 +349,7 @@ */ if (task_is_stopped(task) && task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING)) - signal_wake_up(task, 1); + signal_wake_up_state(task, __TASK_STOPPED); spin_unlock(&task->sighand->siglock); @@ -727,7 +766,7 @@ * tracee into STOP. */ if (likely(task_set_jobctl_pending(child, JOBCTL_TRAP_STOP))) - signal_wake_up(child, child->jobctl & JOBCTL_LISTENING); + ptrace_signal_wake_up(child, child->jobctl & JOBCTL_LISTENING); unlock_task_sighand(child, &flags); ret = 0; @@ -753,7 +792,7 @@ * start of this trap and now. Trigger re-trap. */ if (child->jobctl & JOBCTL_TRAP_NOTIFY) - signal_wake_up(child, true); + ptrace_signal_wake_up(child, true); ret = 0; } unlock_task_sighand(child, &flags); @@ -890,6 +929,8 @@ goto out_put_task_struct; ret = arch_ptrace(child, request, addr, data); + if (ret || request != PTRACE_DETACH) + ptrace_unfreeze_traced(child); out_put_task_struct: put_task_struct(child); @@ -1029,8 +1070,11 @@ ret = ptrace_check_attach(child, request == PTRACE_KILL || request == PTRACE_INTERRUPT); - if (!ret) + if (!ret) { ret = compat_arch_ptrace(child, request, addr, data); + if (ret || request != PTRACE_DETACH) + ptrace_unfreeze_traced(child); + } out_put_task_struct: put_task_struct(child); --- linux-3.5.0.orig/kernel/events/core.c +++ linux-3.5.0/kernel/events/core.c @@ -193,9 +193,6 @@ static void update_context_time(struct perf_event_context *ctx); static u64 perf_event_time(struct perf_event *event); -static void ring_buffer_attach(struct perf_event *event, - struct ring_buffer *rb); - void __weak perf_event_print_debug(void) { } extern __weak const char *perf_pmu_name(void) @@ -2853,6 +2850,7 @@ } static void ring_buffer_put(struct ring_buffer *rb); +static void ring_buffer_detach(struct perf_event *event, struct ring_buffer *rb); static void free_event(struct perf_event *event) { @@ -2877,15 +2875,30 @@ if (has_branch_stack(event)) { static_key_slow_dec_deferred(&perf_sched_events); /* is system-wide event */ - if (!(event->attach_state & PERF_ATTACH_TASK)) + if (!(event->attach_state & PERF_ATTACH_TASK)) { atomic_dec(&per_cpu(perf_branch_stack_events, event->cpu)); + } } } if (event->rb) { - ring_buffer_put(event->rb); - event->rb = NULL; + struct ring_buffer *rb; + + /* + * Can happen when we close an event with re-directed output. + * + * Since we have a 0 refcount, perf_mmap_close() will skip + * over us; possibly making our ring_buffer_put() the last. + */ + mutex_lock(&event->mmap_mutex); + rb = event->rb; + if (rb) { + rcu_assign_pointer(event->rb, NULL); + ring_buffer_detach(event, rb); + ring_buffer_put(rb); /* could be last */ + } + mutex_unlock(&event->mmap_mutex); } if (is_cgroup_event(event)) @@ -2933,12 +2946,12 @@ /* * Called when the last reference to the file is gone. */ -static int perf_release(struct inode *inode, struct file *file) +static void put_event(struct perf_event *event) { - struct perf_event *event = file->private_data; struct task_struct *owner; - file->private_data = NULL; + if (!atomic_long_dec_and_test(&event->refcount)) + return; rcu_read_lock(); owner = ACCESS_ONCE(event->owner); @@ -2973,7 +2986,13 @@ put_task_struct(owner); } - return perf_event_release_kernel(event); + perf_event_release_kernel(event); +} + +static int perf_release(struct inode *inode, struct file *file) +{ + put_event(file->private_data); + return 0; } u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) @@ -3117,30 +3136,13 @@ unsigned int events = POLL_HUP; /* - * Race between perf_event_set_output() and perf_poll(): perf_poll() - * grabs the rb reference but perf_event_set_output() overrides it. - * Here is the timeline for two threads T1, T2: - * t0: T1, rb = rcu_dereference(event->rb) - * t1: T2, old_rb = event->rb - * t2: T2, event->rb = new rb - * t3: T2, ring_buffer_detach(old_rb) - * t4: T1, ring_buffer_attach(rb1) - * t5: T1, poll_wait(event->waitq) - * - * To avoid this problem, we grab mmap_mutex in perf_poll() - * thereby ensuring that the assignment of the new ring buffer - * and the detachment of the old buffer appear atomic to perf_poll() + * Pin the event->rb by taking event->mmap_mutex; otherwise + * perf_event_set_output() can swizzle our rb and make us miss wakeups. */ mutex_lock(&event->mmap_mutex); - - rcu_read_lock(); - rb = rcu_dereference(event->rb); - if (rb) { - ring_buffer_attach(event, rb); + rb = event->rb; + if (rb) events = atomic_xchg(&rb->poll, 0); - } - rcu_read_unlock(); - mutex_unlock(&event->mmap_mutex); poll_wait(file, &event->waitq, wait); @@ -3225,7 +3227,7 @@ static const struct file_operations perf_fops; -static struct perf_event *perf_fget_light(int fd, int *fput_needed) +static struct file *perf_fget_light(int fd, int *fput_needed) { struct file *file; @@ -3239,7 +3241,7 @@ return ERR_PTR(-EBADF); } - return file->private_data; + return file; } static int perf_event_set_output(struct perf_event *event, @@ -3271,19 +3273,21 @@ case PERF_EVENT_IOC_SET_OUTPUT: { + struct file *output_file = NULL; struct perf_event *output_event = NULL; int fput_needed = 0; int ret; if (arg != -1) { - output_event = perf_fget_light(arg, &fput_needed); - if (IS_ERR(output_event)) - return PTR_ERR(output_event); + output_file = perf_fget_light(arg, &fput_needed); + if (IS_ERR(output_file)) + return PTR_ERR(output_file); + output_event = output_file->private_data; } ret = perf_event_set_output(event, output_event); if (output_event) - fput_light(output_event->filp, fput_needed); + fput_light(output_file, fput_needed); return ret; } @@ -3454,16 +3458,12 @@ return; spin_lock_irqsave(&rb->event_lock, flags); - if (!list_empty(&event->rb_entry)) - goto unlock; - - list_add(&event->rb_entry, &rb->event_list); -unlock: + if (list_empty(&event->rb_entry)) + list_add(&event->rb_entry, &rb->event_list); spin_unlock_irqrestore(&rb->event_lock, flags); } -static void ring_buffer_detach(struct perf_event *event, - struct ring_buffer *rb) +static void ring_buffer_detach(struct perf_event *event, struct ring_buffer *rb) { unsigned long flags; @@ -3482,13 +3482,10 @@ rcu_read_lock(); rb = rcu_dereference(event->rb); - if (!rb) - goto unlock; - - list_for_each_entry_rcu(event, &rb->event_list, rb_entry) - wake_up_all(&event->waitq); - -unlock: + if (rb) { + list_for_each_entry_rcu(event, &rb->event_list, rb_entry) + wake_up_all(&event->waitq); + } rcu_read_unlock(); } @@ -3517,18 +3514,10 @@ static void ring_buffer_put(struct ring_buffer *rb) { - struct perf_event *event, *n; - unsigned long flags; - if (!atomic_dec_and_test(&rb->refcount)) return; - spin_lock_irqsave(&rb->event_lock, flags); - list_for_each_entry_safe(event, n, &rb->event_list, rb_entry) { - list_del_init(&event->rb_entry); - wake_up_all(&event->waitq); - } - spin_unlock_irqrestore(&rb->event_lock, flags); + WARN_ON_ONCE(!list_empty(&rb->event_list)); call_rcu(&rb->rcu_head, rb_free_rcu); } @@ -3538,26 +3527,100 @@ struct perf_event *event = vma->vm_file->private_data; atomic_inc(&event->mmap_count); + atomic_inc(&event->rb->mmap_count); } +/* + * A buffer can be mmap()ed multiple times; either directly through the same + * event, or through other events by use of perf_event_set_output(). + * + * In order to undo the VM accounting done by perf_mmap() we need to destroy + * the buffer here, where we still have a VM context. This means we need + * to detach all events redirecting to us. + */ static void perf_mmap_close(struct vm_area_struct *vma) { struct perf_event *event = vma->vm_file->private_data; - if (atomic_dec_and_mutex_lock(&event->mmap_count, &event->mmap_mutex)) { - unsigned long size = perf_data_size(event->rb); - struct user_struct *user = event->mmap_user; - struct ring_buffer *rb = event->rb; - - atomic_long_sub((size >> PAGE_SHIFT) + 1, &user->locked_vm); - vma->vm_mm->pinned_vm -= event->mmap_locked; - rcu_assign_pointer(event->rb, NULL); - ring_buffer_detach(event, rb); + struct ring_buffer *rb = event->rb; + struct user_struct *mmap_user = rb->mmap_user; + int mmap_locked = rb->mmap_locked; + unsigned long size = perf_data_size(rb); + + atomic_dec(&rb->mmap_count); + + if (!atomic_dec_and_mutex_lock(&event->mmap_count, &event->mmap_mutex)) + return; + + /* Detach current event from the buffer. */ + rcu_assign_pointer(event->rb, NULL); + ring_buffer_detach(event, rb); + mutex_unlock(&event->mmap_mutex); + + /* If there's still other mmap()s of this buffer, we're done. */ + if (atomic_read(&rb->mmap_count)) { + ring_buffer_put(rb); /* can't be last */ + return; + } + + /* + * No other mmap()s, detach from all other events that might redirect + * into the now unreachable buffer. Somewhat complicated by the + * fact that rb::event_lock otherwise nests inside mmap_mutex. + */ +again: + rcu_read_lock(); + list_for_each_entry_rcu(event, &rb->event_list, rb_entry) { + if (!atomic_long_inc_not_zero(&event->refcount)) { + /* + * This event is en-route to free_event() which will + * detach it and remove it from the list. + */ + continue; + } + rcu_read_unlock(); + + mutex_lock(&event->mmap_mutex); + /* + * Check we didn't race with perf_event_set_output() which can + * swizzle the rb from under us while we were waiting to + * acquire mmap_mutex. + * + * If we find a different rb; ignore this event, a next + * iteration will no longer find it on the list. We have to + * still restart the iteration to make sure we're not now + * iterating the wrong list. + */ + if (event->rb == rb) { + rcu_assign_pointer(event->rb, NULL); + ring_buffer_detach(event, rb); + ring_buffer_put(rb); /* can't be last, we still have one */ + } mutex_unlock(&event->mmap_mutex); + put_event(event); - ring_buffer_put(rb); - free_uid(user); + /* + * Restart the iteration; either we're on the wrong list or + * destroyed its integrity by doing a deletion. + */ + goto again; } + rcu_read_unlock(); + + /* + * It could be there's still a few 0-ref events on the list; they'll + * get cleaned up by free_event() -- they'll also still have their + * ref on the rb and will free it whenever they are done with it. + * + * Aside from that, this buffer is 'fully' detached and unmapped, + * undo the VM accounting. + */ + + atomic_long_sub((size >> PAGE_SHIFT) + 1, &mmap_user->locked_vm); + vma->vm_mm->pinned_vm -= mmap_locked; + free_uid(mmap_user); + + ring_buffer_put(rb); /* could be last */ } static const struct vm_operations_struct perf_mmap_vmops = { @@ -3607,12 +3670,24 @@ return -EINVAL; WARN_ON_ONCE(event->ctx->parent_ctx); +again: mutex_lock(&event->mmap_mutex); if (event->rb) { - if (event->rb->nr_pages == nr_pages) - atomic_inc(&event->rb->refcount); - else + if (event->rb->nr_pages != nr_pages) { ret = -EINVAL; + goto unlock; + } + + if (!atomic_inc_not_zero(&event->rb->mmap_count)) { + /* + * Raced against perf_mmap_close() through + * perf_event_set_output(). Try again, hope for better + * luck. + */ + mutex_unlock(&event->mmap_mutex); + goto again; + } + goto unlock; } @@ -3653,12 +3728,16 @@ ret = -ENOMEM; goto unlock; } - rcu_assign_pointer(event->rb, rb); + + atomic_set(&rb->mmap_count, 1); + rb->mmap_locked = extra; + rb->mmap_user = get_current_user(); atomic_long_add(user_extra, &user->locked_vm); - event->mmap_locked = extra; - event->mmap_user = get_current_user(); - vma->vm_mm->pinned_vm += event->mmap_locked; + vma->vm_mm->pinned_vm += extra; + + ring_buffer_attach(event, rb); + rcu_assign_pointer(event->rb, rb); perf_event_update_userpage(event); @@ -3667,7 +3746,11 @@ atomic_inc(&event->mmap_count); mutex_unlock(&event->mmap_mutex); - vma->vm_flags |= VM_RESERVED; + /* + * Since pinned accounting is per vm we cannot allow fork() to copy our + * vma. + */ + vma->vm_flags |= VM_DONTCOPY | VM_RESERVED; vma->vm_ops = &perf_mmap_vmops; return ret; @@ -5121,7 +5204,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; @@ -5755,6 +5838,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; @@ -5922,6 +6006,7 @@ mutex_init(&event->mmap_mutex); + atomic_long_set(&event->refcount, 1); event->cpu = cpu; event->attr = *attr; event->group_leader = group_leader; @@ -6154,6 +6239,8 @@ if (atomic_read(&event->mmap_count)) goto unlock; + old_rb = event->rb; + if (output_event) { /* get the rb we want to redirect to */ rb = ring_buffer_get(output_event); @@ -6161,16 +6248,28 @@ goto unlock; } - old_rb = event->rb; - rcu_assign_pointer(event->rb, rb); if (old_rb) ring_buffer_detach(event, old_rb); + + if (rb) + ring_buffer_attach(event, rb); + + rcu_assign_pointer(event->rb, rb); + + if (old_rb) { + ring_buffer_put(old_rb); + /* + * Since we detached before setting the new rb, so that we + * could attach the new rb, we could have missed a wakeup. + * Provide it now. + */ + wake_up_all(&event->waitq); + } + ret = 0; unlock: mutex_unlock(&event->mmap_mutex); - if (old_rb) - ring_buffer_put(old_rb); out: return ret; } @@ -6232,12 +6331,12 @@ return event_fd; if (group_fd != -1) { - group_leader = perf_fget_light(group_fd, &fput_needed); - if (IS_ERR(group_leader)) { - err = PTR_ERR(group_leader); + group_file = perf_fget_light(group_fd, &fput_needed); + if (IS_ERR(group_file)) { + err = PTR_ERR(group_file); goto err_fd; } - group_file = group_leader->filp; + group_leader = group_file->private_data; if (flags & PERF_FLAG_FD_OUTPUT) output_event = group_leader; if (flags & PERF_FLAG_FD_NO_GROUP) @@ -6372,7 +6471,6 @@ put_ctx(gctx); } - event->filp = event_file; WARN_ON_ONCE(ctx->parent_ctx); mutex_lock(&ctx->mutex); @@ -6462,7 +6560,6 @@ goto err_free; } - event->filp = NULL; WARN_ON_ONCE(ctx->parent_ctx); mutex_lock(&ctx->mutex); perf_install_in_context(ctx, event, cpu); @@ -6511,7 +6608,7 @@ * Release the parent event, if this was the last * reference to it. */ - fput(parent_event->filp); + put_event(parent_event); } static void @@ -6587,9 +6684,8 @@ * * __perf_event_exit_task() * sync_child_event() - * fput(parent_event->filp) - * perf_release() - * mutex_lock(&ctx->mutex) + * put_event() + * mutex_lock(&ctx->mutex) * * But since its the parent context it won't be the same instance. */ @@ -6657,7 +6753,7 @@ list_del_init(&event->child_list); mutex_unlock(&parent->child_mutex); - fput(parent->filp); + put_event(parent); perf_group_detach(event); list_del_event(event, ctx); @@ -6737,6 +6833,12 @@ NULL, NULL); if (IS_ERR(child_event)) return child_event; + + if (!atomic_long_inc_not_zero(&parent_event->refcount)) { + free_event(child_event); + return NULL; + } + get_ctx(child_ctx); /* @@ -6778,14 +6880,6 @@ raw_spin_unlock_irqrestore(&child_ctx->lock, flags); /* - * Get a reference to the parent filp - we will fput it - * when the child event exits. This is safe to do because - * we are in the parent and we know that the filp still - * exists and has a nonzero count: - */ - atomic_long_inc(&parent_event->filp->f_count); - - /* * Link this into the parent event's child list */ WARN_ON_ONCE(parent_event->ctx->parent_ctx); --- linux-3.5.0.orig/kernel/events/internal.h +++ linux-3.5.0/kernel/events/internal.h @@ -30,6 +30,10 @@ spinlock_t event_lock; struct list_head event_list; + atomic_t mmap_count; + unsigned long mmap_locked; + struct user_struct *mmap_user; + struct perf_event_mmap_page *user_page; void *data_pages[0]; }; --- linux-3.5.0.orig/kernel/events/hw_breakpoint.c +++ linux-3.5.0/kernel/events/hw_breakpoint.c @@ -147,7 +147,7 @@ return; } - for_each_online_cpu(cpu) { + for_each_possible_cpu(cpu) { unsigned int nr; nr = per_cpu(nr_cpu_bp_pinned[type], cpu); @@ -233,7 +233,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-3.5.0.orig/kernel/debug/kdb/kdb_main.c +++ linux-3.5.0/kernel/debug/kdb/kdb_main.c @@ -1982,6 +1982,8 @@ kdb_printf("Module Size modstruct Used by\n"); list_for_each_entry(mod, kdb_modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; kdb_printf("%-20s%8u 0x%p ", mod->name, mod->core_size, (void *)mod); --- linux-3.5.0.orig/kernel/debug/kdb/kdb_io.c +++ linux-3.5.0/kernel/debug/kdb/kdb_io.c @@ -552,6 +552,7 @@ { int diag; int linecount; + int colcount; int logging, saved_loglevel = 0; int saved_trap_printk; int got_printf_lock = 0; @@ -584,6 +585,10 @@ if (diag || linecount <= 1) linecount = 24; + diag = kdbgetintenv("COLUMNS", &colcount); + if (diag || colcount <= 1) + colcount = 80; + diag = kdbgetintenv("LOGGING", &logging); if (diag) logging = 0; @@ -690,7 +695,7 @@ gdbstub_msg_write(kdb_buffer, retlen); } else { if (dbg_io_ops && !dbg_io_ops->is_console) { - len = strlen(kdb_buffer); + len = retlen; cp = kdb_buffer; while (len--) { dbg_io_ops->write_char(*cp); @@ -709,11 +714,29 @@ printk(KERN_INFO "%s", kdb_buffer); } - if (KDB_STATE(PAGER) && strchr(kdb_buffer, '\n')) - kdb_nextline++; + if (KDB_STATE(PAGER)) { + /* + * Check printed string to decide how to bump the + * kdb_nextline to control when the more prompt should + * show up. + */ + int got = 0; + len = retlen; + while (len--) { + if (kdb_buffer[len] == '\n') { + kdb_nextline++; + got = 0; + } else if (kdb_buffer[len] == '\r') { + got = 0; + } else { + got++; + } + } + kdb_nextline += got / (colcount + 1); + } /* check for having reached the LINES number of printed lines */ - if (kdb_nextline == linecount) { + if (kdb_nextline >= linecount) { char buf1[16] = ""; #if defined(CONFIG_SMP) char buf2[32]; @@ -776,7 +799,7 @@ kdb_grepping_flag = 0; kdb_printf("\n"); } else if (buf1[0] == ' ') { - kdb_printf("\n"); + kdb_printf("\r"); suspend_grep = 1; /* for this recursion */ } else if (buf1[0] == '\n') { kdb_nextline = linecount - 1; --- linux-3.5.0.orig/kernel/irq/manage.c +++ linux-3.5.0/kernel/irq/manage.c @@ -716,6 +716,7 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { cpumask_var_t mask; + bool valid = true; if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) return; @@ -730,10 +731,18 @@ } raw_spin_lock_irq(&desc->lock); - cpumask_copy(mask, desc->irq_data.affinity); + /* + * This code is triggered unconditionally. Check the affinity + * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out. + */ + if (desc->irq_data.affinity) + cpumask_copy(mask, desc->irq_data.affinity); + else + valid = false; raw_spin_unlock_irq(&desc->lock); - set_cpus_allowed_ptr(current, mask); + if (valid) + set_cpus_allowed_ptr(current, mask); free_cpumask_var(mask); } #else @@ -893,22 +902,6 @@ return -ENOSYS; if (!try_module_get(desc->owner)) return -ENODEV; - /* - * Some drivers like serial.c use request_irq() heavily, - * so we have to be careful not to interfere with a - * running system. - */ - if (new->flags & IRQF_SAMPLE_RANDOM) { - /* - * This function might sleep, we want to call it first, - * outside of the atomic block. - * Yes, this might clear the entropy pool if the wrong - * driver is attempted to be loaded, without actually - * installing a new handler, but is this really a problem, - * only the sysadmin is able to do this. - */ - rand_initialize_irq(irq); - } /* * Check whether the interrupt nests into another interrupt @@ -952,6 +945,16 @@ */ get_task_struct(t); new->thread = t; + /* + * Tell the thread to set its affinity. This is + * important for shared interrupt handlers as we do + * not invoke setup_affinity() for the secondary + * handlers as everything is already set up. Even for + * interrupts marked with IRQF_NO_BALANCE this is + * correct as we want the thread to move to the cpu(s) + * on which the requesting code placed the interrupt. + */ + set_bit(IRQTF_AFFINITY, &new->thread_flags); } if (!alloc_cpumask_var(&mask, GFP_KERNEL)) { @@ -1354,7 +1357,6 @@ * Flags: * * IRQF_SHARED Interrupt is shared - * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy * IRQF_TRIGGER_* Specify active edge(s) or level * */ --- linux-3.5.0.orig/kernel/irq/spurious.c +++ linux-3.5.0/kernel/irq/spurious.c @@ -80,13 +80,11 @@ /* * All handlers must agree on IRQF_SHARED, so we test just the - * first. Check for action->next as well. + * first. */ action = desc->action; if (!action || !(action->flags & IRQF_SHARED) || - (action->flags & __IRQF_TIMER) || - (action->handler(irq, action->dev_id) == IRQ_HANDLED) || - !action->next) + (action->flags & __IRQF_TIMER)) goto out; /* Already running on another processor */ @@ -104,6 +102,7 @@ do { if (handle_irq_event(desc) == IRQ_HANDLED) ret = IRQ_HANDLED; + /* Make sure that there is still a valid action */ action = desc->action; } while ((desc->istate & IRQS_PENDING) && action); desc->istate &= ~IRQS_POLL_INPROGRESS; --- linux-3.5.0.orig/kernel/irq/handle.c +++ linux-3.5.0/kernel/irq/handle.c @@ -133,7 +133,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) { irqreturn_t retval = IRQ_NONE; - unsigned int random = 0, irq = desc->irq_data.irq; + unsigned int flags = 0, irq = desc->irq_data.irq; do { irqreturn_t res; @@ -161,7 +161,7 @@ /* Fall through to add to randomness */ case IRQ_HANDLED: - random |= action->flags; + flags |= action->flags; break; default: @@ -172,8 +172,7 @@ action = action->next; } while (action); - if (random & IRQF_SAMPLE_RANDOM) - add_interrupt_randomness(irq); + add_interrupt_randomness(irq, flags); if (!noirqdebug) note_interrupt(irq, desc, retval); --- linux-3.5.0.orig/kernel/trace/trace_selftest.c +++ linux-3.5.0/kernel/trace/trace_selftest.c @@ -461,8 +461,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 */ @@ -472,8 +470,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-3.5.0.orig/kernel/trace/trace.h +++ linux-3.5.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; int print_max; int use_max_tr; + bool enabled; }; @@ -833,6 +837,9 @@ void trace_printk_init_buffers(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) \ extern struct ftrace_event_call \ --- linux-3.5.0.orig/kernel/trace/trace_sched_wakeup.c +++ linux-3.5.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 @@ -539,8 +539,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; @@ -562,12 +565,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) @@ -593,6 +599,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 @@ -614,6 +621,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-3.5.0.orig/kernel/trace/ring_buffer.c +++ linux-3.5.0/kernel/trace/ring_buffer.c @@ -1396,6 +1396,8 @@ struct list_head *head_page_with_bit; head_page = &rb_set_head_page(cpu_buffer)->list; + if (!head_page) + break; prev_page = head_page->prev; first_page = pages->next; @@ -1567,6 +1569,10 @@ put_online_cpus(); } else { + /* Make sure this CPU has been intitialized */ + if (!cpumask_test_cpu(cpu_id, buffer->cpumask)) + goto out; + cpu_buffer = buffer->buffers[cpu_id]; if (nr_pages == cpu_buffer->nr_pages) @@ -2930,7 +2936,7 @@ unsigned long flags; struct ring_buffer_per_cpu *cpu_buffer; struct buffer_page *bpage; - unsigned long ret; + unsigned long ret = 0; if (!cpumask_test_cpu(cpu, buffer->cpumask)) return 0; @@ -2945,7 +2951,8 @@ bpage = cpu_buffer->reader_page; else bpage = rb_set_head_page(cpu_buffer); - ret = bpage->page->time_stamp; + if (bpage) + ret = bpage->page->time_stamp; raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); return ret; @@ -3252,6 +3259,8 @@ * Splice the empty reader page into the list around the head. */ reader = rb_set_head_page(cpu_buffer); + if (!reader) + goto out; cpu_buffer->reader_page->list.next = rb_list_head(reader->list.next); cpu_buffer->reader_page->list.prev = reader->list.prev; --- linux-3.5.0.orig/kernel/trace/trace_events_filter.c +++ linux-3.5.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-3.5.0.orig/kernel/trace/Kconfig +++ linux-3.5.0/kernel/trace/Kconfig @@ -405,24 +405,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-3.5.0.orig/kernel/trace/ftrace.c +++ linux-3.5.0/kernel/trace/ftrace.c @@ -624,7 +624,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; @@ -642,7 +642,6 @@ free_page(tmp); } - free_page((unsigned long)stat->pages); stat->pages = NULL; stat->start = NULL; @@ -1000,6 +999,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 @@ -2358,7 +2370,7 @@ { iter->pos = 0; iter->func_pos = 0; - iter->flags &= ~(FTRACE_ITER_PRINTALL & FTRACE_ITER_HASH); + iter->flags &= ~(FTRACE_ITER_PRINTALL | FTRACE_ITER_HASH); } static void *t_start(struct seq_file *m, loff_t *pos) @@ -2510,7 +2522,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 @@ -2594,19 +2606,6 @@ inode, file); } -loff_t -ftrace_regex_lseek(struct file *file, loff_t offset, int origin) -{ - loff_t ret; - - if (file->f_mode & FMODE_READ) - ret = seq_lseek(file, offset, origin); - else - file->f_pos = ret = 1; - - return ret; -} - static int ftrace_match(char *str, char *regex, int len, int type) { int matched = 0; @@ -3002,8 +3001,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(); @@ -3414,7 +3413,7 @@ .open = ftrace_filter_open, .read = seq_read, .write = ftrace_filter_write, - .llseek = ftrace_regex_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_regex_release, }; @@ -3422,7 +3421,7 @@ .open = ftrace_notrace_open, .read = seq_read, .write = ftrace_notrace_write, - .llseek = ftrace_regex_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_regex_release, }; @@ -3580,7 +3579,8 @@ if (fail) return -EINVAL; - ftrace_graph_filter_enabled = 1; + ftrace_graph_filter_enabled = !!(*idx); + return 0; } @@ -3627,8 +3627,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 */ @@ -3835,35 +3835,49 @@ ftrace_process_locs(mod, start, end); } -static int ftrace_module_notify(struct notifier_block *self, - unsigned long val, void *data) +static int ftrace_module_notify_enter(struct notifier_block *self, + unsigned long val, void *data) { struct module *mod = data; - switch (val) { - case MODULE_STATE_COMING: + if (val == MODULE_STATE_COMING) ftrace_init_module(mod, mod->ftrace_callsites, mod->ftrace_callsites + mod->num_ftrace_callsites); - break; - case MODULE_STATE_GOING: + return 0; +} + +static int ftrace_module_notify_exit(struct notifier_block *self, + unsigned long val, void *data) +{ + struct module *mod = data; + + if (val == MODULE_STATE_GOING) ftrace_release_mod(mod); - break; - } return 0; } #else -static int ftrace_module_notify(struct notifier_block *self, - unsigned long val, void *data) +static int ftrace_module_notify_enter(struct notifier_block *self, + unsigned long val, void *data) +{ + return 0; +} +static int ftrace_module_notify_exit(struct notifier_block *self, + unsigned long val, void *data) { return 0; } #endif /* CONFIG_MODULES */ -struct notifier_block ftrace_module_nb = { - .notifier_call = ftrace_module_notify, - .priority = 0, +struct notifier_block ftrace_module_enter_nb = { + .notifier_call = ftrace_module_notify_enter, + .priority = INT_MAX, /* Run before anything that can use kprobes */ +}; + +struct notifier_block ftrace_module_exit_nb = { + .notifier_call = ftrace_module_notify_exit, + .priority = INT_MIN, /* Run after anything that can remove kprobes */ }; extern unsigned long __start_mcount_loc[]; @@ -3897,9 +3911,13 @@ __start_mcount_loc, __stop_mcount_loc); - ret = register_module_notifier(&ftrace_module_nb); + ret = register_module_notifier(&ftrace_module_enter_nb); + if (ret) + pr_warning("Failed to register trace ftrace module enter notifier\n"); + + ret = register_module_notifier(&ftrace_module_exit_nb); if (ret) - pr_warning("Failed to register trace ftrace module notifier\n"); + pr_warning("Failed to register trace ftrace module exit notifier\n"); set_ftrace_early_filters(); @@ -4237,7 +4255,7 @@ .open = ftrace_pid_open, .write = ftrace_pid_write, .read = seq_read, - .llseek = seq_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_pid_release, }; @@ -4357,12 +4375,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-3.5.0.orig/kernel/trace/trace_stack.c +++ linux-3.5.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; @@ -40,25 +51,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; @@ -71,10 +91,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); @@ -98,6 +126,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 @@ static void stack_trace_call(unsigned long ip, unsigned long parent_ip) { + unsigned long stack; int cpu; if (unlikely(!ftrace_enabled || stack_trace_disabled)) @@ -125,7 +166,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)--; @@ -324,7 +384,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, }; @@ -373,6 +433,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-3.5.0.orig/kernel/trace/trace.c +++ linux-3.5.0/kernel/trace/trace.c @@ -693,7 +693,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; @@ -705,6 +705,7 @@ } arch_spin_lock(&ftrace_max_lock); + buf = tr->buffer; tr->buffer = max_tr.buffer; max_tr.buffer = buf; @@ -2761,11 +2762,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; @@ -2775,8 +2790,14 @@ 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 + } + + return 0; } static ssize_t @@ -2786,7 +2807,7 @@ char buf[64]; char *cmp; int neg = 0; - int ret; + int ret = -ENODEV; int i; if (cnt >= sizeof(buf)) @@ -2803,21 +2824,23 @@ 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); - if (ret) - return ret; - } + + mutex_unlock(&trace_types_lock); + + if (ret < 0) + return ret; *ppos += cnt; @@ -3159,6 +3182,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) { @@ -3195,6 +3221,7 @@ goto out; } + current_trace->enabled = true; trace_branch_enable(tr); out: mutex_unlock(&trace_types_lock); @@ -4596,7 +4623,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; @@ -4799,6 +4832,8 @@ trace_access_lock_init(); d_tracer = tracing_init_dentry(); + if (!d_tracer) + return 0; trace_create_file("tracing_enabled", 0644, d_tracer, &global_trace, &tracing_ctrl_fops); @@ -4935,36 +4970,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); @@ -4997,6 +5028,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 @@ -5036,26 +5073,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-3.5.0.orig/kernel/trace/trace_stat.c +++ linux-3.5.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-3.5.0.orig/kernel/trace/trace_irqsoff.c +++ linux-3.5.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); @@ -557,8 +557,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; @@ -572,10 +575,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) @@ -608,6 +614,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 @@ -641,6 +648,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 @@ -676,6 +684,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-3.5.0.orig/kernel/sched/core.c +++ linux-3.5.0/kernel/sched/core.c @@ -1096,7 +1096,7 @@ * a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks. * * sched_move_task() holds both and thus holding either pins the cgroup, - * see set_task_rq(). + * see task_group(). * * Furthermore, all task_rq users should acquire both locks, see * task_rq_lock(). @@ -1651,8 +1651,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)) { @@ -1686,7 +1688,8 @@ */ int wake_up_process(struct task_struct *p) { - return try_to_wake_up(p, TASK_ALL, 0); + WARN_ON(task_is_stopped_or_traced(p)); + return try_to_wake_up(p, TASK_NORMAL, 0); } EXPORT_SYMBOL(wake_up_process); @@ -3142,6 +3145,20 @@ # define nsecs_to_cputime(__nsecs) nsecs_to_jiffies(__nsecs) #endif +static cputime_t scale_utime(cputime_t utime, cputime_t rtime, cputime_t total) +{ + u64 temp = (__force u64) rtime; + + temp *= (__force u64) utime; + + if (sizeof(cputime_t) == 4) + temp = div_u64(temp, (__force u32) total); + else + temp = div64_u64(temp, (__force u64) total); + + return (__force cputime_t) temp; +} + void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st) { cputime_t rtime, utime = p->utime, total = utime + p->stime; @@ -3151,13 +3168,9 @@ */ rtime = nsecs_to_cputime(p->se.sum_exec_runtime); - if (total) { - u64 temp = (__force u64) rtime; - - temp *= (__force u64) utime; - do_div(temp, (__force u32) total); - utime = (__force cputime_t) temp; - } else + if (total) + utime = scale_utime(utime, rtime, total); + else utime = rtime; /* @@ -3184,13 +3197,9 @@ total = cputime.utime + cputime.stime; rtime = nsecs_to_cputime(cputime.sum_exec_runtime); - if (total) { - u64 temp = (__force u64) rtime; - - temp *= (__force u64) cputime.utime; - do_div(temp, (__force u32) total); - utime = (__force cputime_t) temp; - } else + if (total) + utime = scale_utime(cputime.utime, rtime, total); + else utime = rtime; sig->prev_utime = max(sig->prev_utime, utime); @@ -5425,16 +5434,25 @@ *tablep = NULL; } +static int min_load_idx = 0; +static int max_load_idx = CPU_LOAD_IDX_MAX-1; + static void set_table_entry(struct ctl_table *entry, const char *procname, void *data, int maxlen, - umode_t mode, proc_handler *proc_handler) + umode_t mode, proc_handler *proc_handler, + bool load_idx) { entry->procname = procname; entry->data = data; entry->maxlen = maxlen; entry->mode = mode; entry->proc_handler = proc_handler; + + if (load_idx) { + entry->extra1 = &min_load_idx; + entry->extra2 = &max_load_idx; + } } static struct ctl_table * @@ -5446,30 +5464,30 @@ return NULL; set_table_entry(&table[0], "min_interval", &sd->min_interval, - sizeof(long), 0644, proc_doulongvec_minmax); + sizeof(long), 0644, proc_doulongvec_minmax, false); set_table_entry(&table[1], "max_interval", &sd->max_interval, - sizeof(long), 0644, proc_doulongvec_minmax); + sizeof(long), 0644, proc_doulongvec_minmax, false); set_table_entry(&table[2], "busy_idx", &sd->busy_idx, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, true); set_table_entry(&table[3], "idle_idx", &sd->idle_idx, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, true); set_table_entry(&table[4], "newidle_idx", &sd->newidle_idx, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, true); set_table_entry(&table[5], "wake_idx", &sd->wake_idx, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, true); set_table_entry(&table[6], "forkexec_idx", &sd->forkexec_idx, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, true); set_table_entry(&table[7], "busy_factor", &sd->busy_factor, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[8], "imbalance_pct", &sd->imbalance_pct, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[9], "cache_nice_tries", &sd->cache_nice_tries, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[10], "flags", &sd->flags, - sizeof(int), 0644, proc_dointvec_minmax); + sizeof(int), 0644, proc_dointvec_minmax, false); set_table_entry(&table[11], "name", sd->name, - CORENAME_MAX_SIZE, 0444, proc_dostring); + CORENAME_MAX_SIZE, 0444, proc_dostring, false); /* &table[12] is terminator */ return table; @@ -7097,34 +7115,66 @@ mutex_unlock(&sched_domains_mutex); } +static int num_cpus_frozen; /* used to mark begin/end of suspend/resume */ + /* * Update cpusets according to cpu_active mask. If cpusets are * disabled, cpuset_update_active_cpus() becomes a simple wrapper * around partition_sched_domains(). + * + * If we come here as part of a suspend/resume, don't touch cpusets because we + * want to restore it back to its original state upon resume anyway. */ static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action, void *hcpu) { - switch (action & ~CPU_TASKS_FROZEN) { + switch (action) { + case CPU_ONLINE_FROZEN: + case CPU_DOWN_FAILED_FROZEN: + + /* + * num_cpus_frozen tracks how many CPUs are involved in suspend + * resume sequence. As long as this is not the last online + * operation in the resume sequence, just build a single sched + * domain, ignoring cpusets. + */ + num_cpus_frozen--; + if (likely(num_cpus_frozen)) { + partition_sched_domains(1, NULL, NULL); + break; + } + + /* + * This is the last CPU online operation. So fall through and + * restore the original sched domains by considering the + * cpuset configurations. + */ + case CPU_ONLINE: case CPU_DOWN_FAILED: cpuset_update_active_cpus(); - return NOTIFY_OK; + break; default: return NOTIFY_DONE; } + return NOTIFY_OK; } static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action, void *hcpu) { - switch (action & ~CPU_TASKS_FROZEN) { + switch (action) { case CPU_DOWN_PREPARE: cpuset_update_active_cpus(); - return NOTIFY_OK; + break; + case CPU_DOWN_PREPARE_FROZEN: + num_cpus_frozen++; + partition_sched_domains(1, NULL, NULL); + break; default: return NOTIFY_DONE; } + return NOTIFY_OK; } void __init sched_init_smp(void) @@ -7179,6 +7229,7 @@ #ifdef CONFIG_CGROUP_SCHED struct task_group root_task_group; +LIST_HEAD(task_groups); #endif DECLARE_PER_CPU(cpumask_var_t, load_balance_tmpmask); @@ -7589,6 +7640,7 @@ */ void sched_move_task(struct task_struct *tsk) { + struct task_group *tg; int on_rq, running; unsigned long flags; struct rq *rq; @@ -7603,6 +7655,12 @@ if (unlikely(running)) tsk->sched_class->put_prev_task(rq, tsk); + tg = container_of(task_subsys_state_check(tsk, cpu_cgroup_subsys_id, + lockdep_is_held(&tsk->sighand->siglock)), + struct task_group, css); + tg = autogroup_task_group(tsk, tg); + tsk->sched_task_group = tg; + #ifdef CONFIG_FAIR_GROUP_SCHED if (tsk->sched_class->task_move_group) tsk->sched_class->task_move_group(tsk, on_rq); --- linux-3.5.0.orig/kernel/sched/sched.h +++ linux-3.5.0/kernel/sched/sched.h @@ -80,7 +80,7 @@ struct cfs_rq; struct rt_rq; -static LIST_HEAD(task_groups); +extern struct list_head task_groups; struct cfs_bandwidth { #ifdef CONFIG_CFS_BANDWIDTH @@ -538,22 +538,19 @@ /* * Return the group to which this tasks belongs. * - * We use task_subsys_state_check() and extend the RCU verification with - * pi->lock and rq->lock because cpu_cgroup_attach() holds those locks for each - * task it moves into the cgroup. Therefore by holding either of those locks, - * we pin the task to the current cgroup. + * We cannot use task_subsys_state() and friends because the cgroup + * subsystem changes that value before the cgroup_subsys::attach() method + * is called, therefore we cannot pin it and might observe the wrong value. + * + * The same is true for autogroup's p->signal->autogroup->tg, the autogroup + * core changes this before calling sched_move_task(). + * + * Instead we use a 'copy' which is updated from sched_move_task() while + * holding both task_struct::pi_lock and rq::lock. */ static inline struct task_group *task_group(struct task_struct *p) { - struct task_group *tg; - struct cgroup_subsys_state *css; - - css = task_subsys_state_check(p, cpu_cgroup_subsys_id, - lockdep_is_held(&p->pi_lock) || - lockdep_is_held(&task_rq(p)->lock)); - tg = container_of(css, struct task_group, css); - - return autogroup_task_group(p, tg); + return p->sched_task_group; } /* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */ --- linux-3.5.0.orig/kernel/sched/clock.c +++ linux-3.5.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-3.5.0.orig/kernel/sched/stop_task.c +++ linux-3.5.0/kernel/sched/stop_task.c @@ -27,8 +27,10 @@ { struct task_struct *stop = rq->stop; - if (stop && stop->on_rq) + if (stop && stop->on_rq) { + stop->se.exec_start = rq->clock_task; return stop; + } return NULL; } @@ -52,6 +54,21 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev) { + struct task_struct *curr = rq->curr; + u64 delta_exec; + + delta_exec = rq->clock_task - curr->se.exec_start; + if (unlikely((s64)delta_exec < 0)) + delta_exec = 0; + + schedstat_set(curr->se.statistics.exec_max, + max(curr->se.statistics.exec_max, delta_exec)); + + curr->se.sum_exec_runtime += delta_exec; + account_group_exec_runtime(curr, delta_exec); + + curr->se.exec_start = rq->clock_task; + cpuacct_charge(curr, delta_exec); } static void task_tick_stop(struct rq *rq, struct task_struct *curr, int queued) @@ -60,6 +77,9 @@ static void set_curr_task_stop(struct rq *rq) { + struct task_struct *stop = rq->stop; + + stop->se.exec_start = rq->clock_task; } static void switched_to_stop(struct rq *rq, struct task_struct *p) --- linux-3.5.0.orig/kernel/sched/auto_group.c +++ linux-3.5.0/kernel/sched/auto_group.c @@ -143,15 +143,11 @@ p->signal->autogroup = autogroup_kref_get(ag); - if (!ACCESS_ONCE(sysctl_sched_autogroup_enabled)) - goto out; - t = p; do { sched_move_task(t); } while_each_thread(p, t); -out: unlock_task_sighand(p, &flags); autogroup_kref_put(prev); } --- linux-3.5.0.orig/kernel/sched/rt.c +++ linux-3.5.0/kernel/sched/rt.c @@ -566,7 +566,7 @@ static int do_balance_runtime(struct rt_rq *rt_rq) { struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq); - struct root_domain *rd = cpu_rq(smp_processor_id())->rd; + struct root_domain *rd = rq_of_rt_rq(rt_rq)->rd; int i, weight, more = 0; u64 rt_period; --- linux-3.5.0.orig/kernel/sched/auto_group.h +++ linux-3.5.0/kernel/sched/auto_group.h @@ -4,11 +4,6 @@ #include struct autogroup { - /* - * reference doesn't mean how many thread attach to this - * autogroup now. It just stands for the number of task - * could use this autogroup. - */ struct kref kref; struct task_group *tg; struct rw_semaphore lock; --- linux-3.5.0.orig/kernel/time/timekeeping.c +++ linux-3.5.0/kernel/time/timekeeping.c @@ -384,7 +384,7 @@ struct timespec ts_delta; unsigned long flags; - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) + if (!timespec_valid_strict(tv)) return -EINVAL; write_seqlock_irqsave(&timekeeper.lock, flags); @@ -418,6 +418,8 @@ int timekeeping_inject_offset(struct timespec *ts) { unsigned long flags; + struct timespec tmp; + int ret = 0; if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) return -EINVAL; @@ -426,10 +428,17 @@ timekeeping_forward_now(); + tmp = timespec_add(timekeeper.xtime, *ts); + if (!timespec_valid_strict(&tmp)) { + ret = -EINVAL; + goto error; + } + timekeeper.xtime = timespec_add(timekeeper.xtime, *ts); timekeeper.wall_to_monotonic = timespec_sub(timekeeper.wall_to_monotonic, *ts); +error: /* even if we error out, we forwarded the time, so call update */ timekeeping_update(true); write_sequnlock_irqrestore(&timekeeper.lock, flags); @@ -437,7 +446,7 @@ /* signal hrtimers about time change */ clock_was_set(); - return 0; + return ret; } EXPORT_SYMBOL(timekeeping_inject_offset); @@ -597,7 +606,20 @@ struct timespec now, boot; read_persistent_clock(&now); + if (!timespec_valid_strict(&now)) { + pr_warn("WARNING: Persistent clock returned invalid value!\n" + " Check your CMOS/BIOS settings.\n"); + now.tv_sec = 0; + now.tv_nsec = 0; + } + read_boot_clock(&boot); + if (!timespec_valid_strict(&boot)) { + pr_warn("WARNING: Boot clock returned invalid value!\n" + " Check your CMOS/BIOS settings.\n"); + boot.tv_sec = 0; + boot.tv_nsec = 0; + } seqlock_init(&timekeeper.lock); @@ -643,7 +665,7 @@ */ static void __timekeeping_inject_sleeptime(struct timespec *delta) { - if (!timespec_valid(delta)) { + if (!timespec_valid_strict(delta)) { printk(KERN_WARNING "__timekeeping_inject_sleeptime: Invalid " "sleep delta value!\n"); return; @@ -990,7 +1012,7 @@ } /* Accumulate raw time */ - raw_nsecs = timekeeper.raw_interval << shift; + raw_nsecs = (u64)timekeeper.raw_interval << shift; raw_nsecs += timekeeper.raw_time.tv_nsec; if (raw_nsecs >= NSEC_PER_SEC) { u64 raw_secs = raw_nsecs; @@ -1033,6 +1055,10 @@ #else offset = (clock->read(clock) - clock->cycle_last) & clock->mask; #endif + /* Check if there's really nothing to do */ + if (offset < timekeeper.cycle_interval) + goto out; + timekeeper.xtime_nsec = (s64)timekeeper.xtime.tv_nsec << timekeeper.shift; --- linux-3.5.0.orig/kernel/time/tick-sched.c +++ linux-3.5.0/kernel/time/tick-sched.c @@ -500,12 +500,17 @@ */ void tick_nohz_irq_exit(void) { + unsigned long flags; struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); if (!ts->inidle) return; + local_irq_save(flags); + tick_nohz_stop_sched_tick(ts); + + local_irq_restore(flags); } /** @@ -884,7 +889,7 @@ hrtimer_cancel(&ts->sched_timer); # endif - ts->nohz_mode = NOHZ_MODE_INACTIVE; + memset(ts, 0, sizeof(*ts)); } #endif --- linux-3.5.0.orig/kernel/time/tick-common.c +++ linux-3.5.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-3.5.0.orig/kernel/time/tick-broadcast.c +++ linux-3.5.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); --- linux-3.5.0.orig/kernel/power/suspend.c +++ linux-3.5.0/kernel/power/suspend.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "power.h" @@ -212,6 +213,7 @@ goto Close; } suspend_console(); + ftrace_stop(); suspend_test_start(); error = dpm_suspend_start(PMSG_SUSPEND); if (error) { @@ -231,6 +233,7 @@ suspend_test_start(); dpm_resume_end(PMSG_RESUME); suspend_test_finish("resume devices"); + ftrace_start(); resume_console(); Close: if (suspend_ops->end) --- linux-3.5.0.orig/kernel/power/wakelock.c +++ linux-3.5.0/kernel/power/wakelock.c @@ -9,6 +9,7 @@ * manipulate wakelocks on Android. */ +#include #include #include #include @@ -188,6 +189,9 @@ size_t len; int ret = 0; + if (!capable(CAP_BLOCK_SUSPEND)) + return -EPERM; + while (*str && !isspace(*str)) str++; @@ -231,6 +235,9 @@ size_t len; int ret = 0; + if (!capable(CAP_BLOCK_SUSPEND)) + return -EPERM; + len = strlen(buf); if (!len) return -EINVAL; --- linux-3.5.0.orig/kernel/power/hibernate.c +++ linux-3.5.0/kernel/power/hibernate.c @@ -353,6 +353,7 @@ } suspend_console(); + ftrace_stop(); pm_restrict_gfp_mask(); error = dpm_suspend(PMSG_FREEZE); @@ -378,6 +379,7 @@ if (error || !in_suspend) pm_restore_gfp_mask(); + ftrace_start(); resume_console(); dpm_complete(msg); @@ -480,6 +482,7 @@ pm_prepare_console(); suspend_console(); + ftrace_stop(); pm_restrict_gfp_mask(); error = dpm_suspend_start(PMSG_QUIESCE); if (!error) { @@ -487,6 +490,7 @@ dpm_resume_end(PMSG_RECOVER); } pm_restore_gfp_mask(); + ftrace_start(); resume_console(); pm_restore_console(); return error; @@ -513,6 +517,7 @@ entering_platform_hibernation = true; suspend_console(); + ftrace_stop(); error = dpm_suspend_start(PMSG_HIBERNATE); if (error) { if (hibernation_ops->recover) @@ -556,6 +561,7 @@ Resume_devices: entering_platform_hibernation = false; dpm_resume_end(PMSG_RESTORE); + ftrace_start(); resume_console(); Close: --- linux-3.5.0.orig/debian/debian.env +++ linux-3.5.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.master --- linux-3.5.0.orig/debian/copyright +++ linux-3.5.0/debian/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-3.5.0.orig/debian/control +++ linux-3.5.0/debian/control @@ -0,0 +1,852 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 3.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.5.0 + This package provides the various documents in the 3.5.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-37 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-3.5.0-37 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-37 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-37 on + 64 bit x86. + + +Package: linux-image-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: kernel-image-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: kernel-image +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: Linux kernel binary image for the Debian installer + This package contains the kernel image for the Debian installer + boot images. It does _not_ provide a usable kernel for your full + Debian system. + +Package: nic-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: nic-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di, virtio-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Network interface support + +Package: nic-shared-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: nic-shared-modules +Depends: kernel-image-3.5.0-37-generic-di, crypto-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: serial-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: serial-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Serial port support + +Package: ppp-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: ppp-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di, serial-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PPP (serial port) networking support + +Package: pata-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: pata-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PATA support modules + +Package: firewire-core-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: firewire-core-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: scsi-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: scsi-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: SCSI storage support + +Package: plip-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: plip-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di, parport-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PLIP (parallel port) networking support + +Package: floppy-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: floppy-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Floppy driver support + +Package: fat-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: fat-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: nfs-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: nfs-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: md-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: md-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Multi-device support (raid, device-mapper, lvm) + +Package: multipath-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: multipath-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + +Package: usb-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: usb-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Core USB support + +Package: pcmcia-storage-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: pcmcia-storage-modules +Depends: kernel-image-3.5.0-37-generic-di, scsi-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PCMCIA storage support + +Package: fb-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: fb-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Framebuffer modules + +Package: input-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: input-modules +Depends: kernel-image-3.5.0-37-generic-di, usb-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Support for various input methods + +Package: mouse-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: mouse-modules +Depends: kernel-image-3.5.0-37-generic-di, input-modules-3.5.0-37-generic-di, usb-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: irda-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: irda-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Support for Infrared protocols + +Package: parport-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: parport-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Parallel port support + +Package: nic-pcmcia-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: nic-pcmcia-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di, nic-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PCMCIA network interface support + +Package: pcmcia-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: pcmcia-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: PCMCIA Modules + +Package: nic-usb-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: nic-usb-modules +Depends: kernel-image-3.5.0-37-generic-di, nic-shared-modules-3.5.0-37-generic-di, usb-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: USB network interface support + +Package: sata-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: sata-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: SATA storage support + +Package: crypto-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: crypto-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: crypto modules + This package contains crypto modules. + +Package: squashfs-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: squashfs-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +Package: speakup-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: speakup-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: speakup modules + This package contains speakup modules. + +Package: virtio-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: virtio-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: fs-core-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: fs-core-modules, jfs-modules, reiserfs-modules, xfs-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: fs-secondary-modules, ntfs-modules, hfs-modules +Depends: kernel-image-3.5.0-37-generic-di, fat-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: storage-core-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: storage-core-modules, loop-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: block-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: block-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di, parport-modules-3.5.0-37-generic-di, virtio-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: message-modules +Depends: kernel-image-3.5.0-37-generic-di, storage-core-modules-3.5.0-37-generic-di, scsi-modules-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: vlan-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: vlan-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules-3.5.0-37-generic-di +XC-Package-Type: udeb +Provides: ipmi-modules +Depends: kernel-image-3.5.0-37-generic-di +Architecture: amd64 +XB-Kernel-Version: 3.5.0-37-generic +Section: debian-installer +Priority: standard +Description: ipmi modules --- linux-3.5.0.orig/debian/rules +++ linux-3.5.0/debian/rules @@ -0,0 +1,238 @@ +#!/usr/bin/make -f +# +# $(DEBIAN)/rules for Ubuntu linux +# +# Use this however you want, just give credit where credit is due. +# +# Copyright (c) 2007 Ben Collins +# + +DEBIAN=$(shell awk -F= '($$1 == "DEBIAN") { print $$2 }' $$new; \ + done + flavours="$(wildcard $(DEBIAN)/control.d/vars.* $(DEBIAN)/sub-flavours/*.vars)";\ + for i in $$flavours; do \ + $(SHELL) $(DROOT)/scripts/control-create $$i | \ + sed -e 's/PKGVER/$(release)/g' \ + -e 's/ABINUM/$(abinum)/g' \ + -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ + >> $(DEBIAN)/control.stub; \ + done + cp $(DEBIAN)/control.stub $(DEBIAN)/control + +.PHONY: debian/control +debian/control: $(DEBIAN)/control.stub + rm -rf $(builddir)/modules $(builddir)/firmware \ + $(builddir)/kernel-versions $(builddir)/package-list \ + $(builddir)/$(DEBIAN) + mkdir -p $(builddir)/modules/$(arch)/ + cp $(DEBIAN)/d-i/modules/* $(builddir)/modules/$(arch)/ + mkdir -p $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/firmware/* $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/package-list $(DEBIAN)/d-i/kernel-versions $(builddir)/ + touch $(builddir)/modules/$(arch)/kernel-image + # kernel-wedge needs to poke around in $(DEBIAN)/ + ln -nsf $(CURDIR)/debian $(builddir)/debian + + # Some files may need to differ between architectures + if [ -d $(DEBIAN)/d-i/modules-$(arch) ]; then \ + cp $(DEBIAN)/d-i/modules-$(arch)/* \ + $(builddir)/modules/$(arch)/; \ + fi + if [ -d $(DEBIAN)/d-i/firmware-$(arch) ]; then \ + cp $(DEBIAN)/d-i/firmware-$(arch)/* \ + $(builddir)/firmware/$(arch)/; \ + fi + + # Remove unwanted stuff for this architecture + if [ -r "$(DEBIAN)/d-i/exclude-modules.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-modules.$(arch); \ + ls $(builddir)/modules/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)/; xargs rm -f); \ + fi + if [ -r "$(DEBIAN)/d-i/exclude-firmware.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-firmware.$(arch); \ + ls $(builddir)/firmware/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)/; xargs rm -f); \ + fi + + # Per flavour module lists + flavour_modules=`ls $(DEBIAN)/d-i/modules.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_modules" != "" ]; then \ + for flav in $$flavour_modules; do \ + name=`echo $$flav | sed 's/.*\/modules.$(arch)-//'`; \ + mkdir $(builddir)/modules/$(arch)-$$name; \ + (cd $(builddir)/modules/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/modules/$(arch)-$$name/; tar xf -); \ + touch $(builddir)/modules/$(arch)-$$name/kernel-image; \ + done; \ + fi + flavour_firmware=`ls $(DEBIAN)/d-i/firmware.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_firmware" != "" ]; then \ + for flav in $$flavour_firmware; do \ + name=`echo $$flav | sed 's/.*\/firmware.$(arch)-//'`; \ + mkdir $(builddir)/firmware/$(arch)-$$name; \ + (cd $(builddir)/firmware/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/firmware/$(arch)-$$name/; tar xf -);\ + touch $(builddir)/firmware/$(arch)-$$name/kernel-image; \ + done; \ + fi + + # Some files may need to differ between flavours + flavour_module_dirs=`ls -d $(DEBIAN)/d-i/modules-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_module_dirs" ]; then \ + for flav in $$flavour_module_dirs; do \ + name=`echo $$flav | sed 's/.*\/modules-$(arch)-//'`; \ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + modules/$(arch)-$$name; \ + cp $$flav/* $(builddir)/modules/$(arch)-$$name/; \ + done; \ + fi + flavour_firmware_dirs=`ls -d $(DEBIAN)/d-i/firmware-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_firmware_dirs" ]; then \ + for flav in $$flavour_firmware_dirs; do \ + name=`echo $$flav | sed 's/.*\/firmware-$(arch)-//'`; \ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + firmware/$(arch)-$$name; \ + cp $$flav/* $(builddir)/firmware/$(arch)-$$name/; \ + done; \ + fi + + # Remove unwanted stuff for each flavour + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-modules.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-modules.$(arch)-//'`;\ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + $(builddir)/modules/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/modules/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-firmware.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-firmware.$(arch)-//'`;\ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + $(builddir)/firmware/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/firmware/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + + if [ ! -d $(builddir)/modules/$(build_arch) ]; then \ + mkdir -p $(builddir)/modules/$(build_arch); \ + cp $(builddir)/modules/$(arch)/* \ + $(builddir)/modules/$(build_arch); \ + fi + if [ ! -d $(builddir)/firmware/$(build_arch) ]; then \ + mkdir -p $(builddir)/firmware/$(build_arch); \ + cp $(builddir)/firmware/$(arch)/* \ + $(builddir)/firmware/$(build_arch); \ + fi + + cp $(DEBIAN)/control.stub debian/control.stub + cd $(builddir) && kernel-wedge gen-control > $(CURDIR)/debian/control --- linux-3.5.0.orig/debian/compat +++ linux-3.5.0/debian/compat @@ -0,0 +1 @@ +5 --- linux-3.5.0.orig/debian/control.stub +++ linux-3.5.0/debian/control.stub @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 3.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-doc-3 +Replaces: linux-doc-3 +Description: Linux kernel specific documentation for version 3.5.0 + This package provides the various documents in the 3.5.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-37 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), linux-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), linux-kernel-headers, libdrm-dev +Provides: linux-kernel-headers +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-tools-3.5.0-37 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-37 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-37 on + 64 bit x86. + + +Package: linux-image-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: flash-kernel +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 64 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 64 bit x86 systems. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 64-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 64-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc64-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-37-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.0 on + 32-bit PowerPC SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit PowerPC SMP processors. + . + Geared toward desktop or server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-smp meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-37-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-37, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-37/debian.README.gz for details. + +Package: linux-image-3.5.0-37-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. --- linux-3.5.0.orig/debian/changelog +++ linux-3.5.0/debian/changelog @@ -0,0 +1,14160 @@ +linux (3.5.0-37.58) quantal; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1199149 + + [ Brad Figg ] + + * [Config] CONFIG_ATH9K_LEGACY_RATE_CONTROL=y + + [ Tim Gardner ] + + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + + [ Upstream Kernel Changes ] + + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * Revert "ath9k_hw: Update rx gain initval to improve rx sensitivity" + - LP: #1197458 + * ata_piix: add PCI IDs for Intel BayTail + - LP: #1197458 + * libata: make ata_exec_internal_sg honor DMADIR + - LP: #1197458 + * cfg80211: check wdev->netdev in connection work + - LP: #1197458 + * xhci-mem: init list heads at the beginning of init + - LP: #1197458 + * xhci: fix list access before init + - LP: #1197458 + * xhci - correct comp_mode_recovery_timer on return from hibernate + - LP: #1197458 + * mac80211: close AP_VLAN interfaces before unregistering all + - LP: #1197458 + * usb: dwc3: gadget: free trb pool only from epnum 2 + - LP: #1197458 + * USB: revert periodic scheduling bugfix + - LP: #1197458 + * USB: serial: fix Treo/Kyocera interrrupt-in urb context + - LP: #1197458 + * USB: visor: fix initialisation of Treo/Kyocera devices + - LP: #1197458 + * USB: mos7720: fix DMA to stack + - LP: #1197458 + * USB: mos7840: fix DMA to stack + - LP: #1197458 + * USB: ark3116: fix control-message timeout + - LP: #1197458 + * USB: iuu_phoenix: fix bulk-message timeout + - LP: #1197458 + * USB: mos7720: fix message timeouts + - LP: #1197458 + * regulator: palmas: Fix "enable_reg" to point to the correct reg for + SMPS10 + - LP: #1197458 + * m68k/mac: Fix unexpected interrupt with CONFIG_EARLY_PRINTK + - LP: #1197458 + * USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device + - LP: #1197458 + * USB: serial: Add Option GTM681W to qcserial device table. + - LP: #1197458 + * USB: keyspan: fix bogus array index + - LP: #1197458 + * USB: mos7720: fix hardware flow control + - LP: #1197458 + * USB: whiteheat: fix broken port configuration + - LP: #1197458 + * USB: option: blacklist network interface on Huawei E1820 + - LP: #1197458 + * iommu/amd: Re-enable IOMMU event log interrupt after handling. + - LP: #1197458 + * iommu/amd: Workaround for ERBT1312 + - LP: #1197458 + * xen/events: Handle VIRQ_TIMER before any other hardirq in event loop. + - LP: #1197458 + * thinkpad-acpi: recognize latest V-Series using DMI_BIOS_VENDOR + - LP: #1197458 + * klist: del waiter from klist_remove_waiters before wakeup waitting + process + - LP: #1197458 + * ACPI video: ignore BIOS backlight value for HP dm4 + - LP: #1197458 + * ACPI video: ignore BIOS initial backlight value for HP 1000 + - LP: #1197458 + * dmaengine: ste_dma40: fix pm runtime ref counting + - LP: #1197458 + * ACPI / video: ignore BIOS initial backlight value for HP m4 + - LP: #1197458 + * ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 + - LP: #1197458 + * ALSA: usb-audio: fix Roland/Cakewalk UM-3G support + - LP: #1197458 + * drm: fix a use-after-free when GPU acceleration disabled + - LP: #1197458 + * drm/mgag200: Add missing write to index before accessing data register + - LP: #1197458 + * drm/i915: no lvds quirk for hp t5740 + - LP: #1197458 + * radeon: Fix system hang issue when using KMS with older cards + - LP: #1197458 + * drm/radeon: don't allow audio on DCE6 + - LP: #1197458 + * ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio + iface + - LP: #1197458 + * drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC. + - LP: #1197458 + * ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam + c270 + - LP: #1197458 + * ARM: 7742/1: topology: export cpu_topology + - LP: #1197458 + * ARM: 7743/1: compressed/head.S: work around new binutils warning + - LP: #1197458 + * hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and + MAX1617 + - LP: #1197458 + * hpfs: drop vmtruncate + - LP: #1197458 + * hpfs: fix warnings when the filesystem fills up + - LP: #1197458 + * powerpc/eeh: Don't check RTAS token to get PE addr + - LP: #1197458 + * drm/gma500: Increase max resolution for mode setting + - LP: #1197458 + * USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL + pointer + - LP: #1197458 + * tg3: Add New 5719 Read DMA workaround + - LP: #1197458 + * tg3: Add read dma workaround for 5720 + - LP: #1197458 + * libceph: clear messenger auth_retry flag when we authenticate + - LP: #1197458 + * libceph: fix authorizer invalidation + - LP: #1197458 + * libceph: add update_authorizer auth method + - LP: #1197458 + * libceph: wrap auth ops in wrapper functions + - LP: #1197458 + * libceph: wrap auth methods in a mutex + - LP: #1197458 + * libceph: register request before unregister linger + - LP: #1197458 + * libceph: always reset osds when kicking + - LP: #1197458 + * libceph: must hold mutex for reset_changed_osds() + - LP: #1197458 + * ceph: add cpu_to_le32() calls when encoding a reconnect capability + - LP: #1197458 + * ceph: ceph_pagelist_append might sleep while atomic + - LP: #1197458 + * drm/gma500/psb: Unpin framebuffer on crtc disable + - LP: #1197458 + * drm/gma500/cdv: Unpin framebuffer on crtc disable + - LP: #1197458 + * drm/i915: prefer VBT modes for SVDO-LVDS over EDID + - LP: #1197458 + * Bluetooth: Fix mgmt handling of power on failures + - LP: #1197458 + * ath9k: Disable PowerSave by default + - LP: #1197458 + * ath9k: Use minstrel rate control by default + - LP: #1197458 + * b43: stop format string leaking into error msgs + - LP: #1197458 + - CVE-2013-2852 + * CPU hotplug: provide a generic helper to disable/enable CPU hotplug + - LP: #1197458 + * reboot: rigrate shutdown/reboot to boot cpu + - LP: #1197458 + * kmsg: honor dmesg_restrict sysctl on /dev/kmsg + - LP: #1197458 + * cciss: fix broken mutex usage in ioctl + - LP: #1197458 + * drivers/rtc/rtc-twl.c: fix missing device_init_wakeup() when booted + with device tree + - LP: #1197458 + * swap: avoid read_swap_cache_async() race to deadlock while waiting on + discard I/O completion + - LP: #1197458 + * mm: migration: add migrate_entry_wait_huge() + - LP: #1197458 + * ceph: fix statvfs fr_size + - LP: #1197458 + * x86: Fix typo in kexec register clearing + - LP: #1197458 + * md/raid1: consider WRITE as successful only if at least one non-Faulty + and non-rebuilding drive completed it. + - LP: #1197458 + * md/raid1,raid10: use freeze_array in place of raise_barrier in various + places. + - LP: #1197458 + * USB: spcp8x5: fix device initialisation at open + - LP: #1197458 + * USB: pl2303: fix device initialisation at open + - LP: #1197458 + * tg3: Wait for boot code to finish after power on + - LP: #1197458 + * powerpc: Fix stack overflow crash in resume_kernel when ftracing + - LP: #1197458 + * powerpc: Fix emulation of illegal instructions on PowerNV platform + - LP: #1197458 + * powerpc: Fix missing/delayed calls to irq_work + - LP: #1197458 + * audit: wait_for_auditd() should use TASK_UNINTERRUPTIBLE + - LP: #1197458 + * xen-netfront: reduce gso_max_size to account for max TCP header + - LP: #1197458 + * ext4: lock i_mutex when truncating orphan inodes + - LP: #1197458 + * snd_pcm_link(): fix a leak... + - LP: #1197458 + * Linux 3.5.7.15 + - LP: #1197458 + * clk: remove notifier from list before freeing it + - LP: #1199117 + * ALSA: usb-audio: work around Android accessory firmware bug + - LP: #1199117 + * ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam + c310 + - LP: #1199117 + * tcp: fix tcp_md5_hash_skb_data() + - LP: #1199117 + * gianfar: add missing iounmap() on error in gianfar_ptp_probe() + - LP: #1199117 + * ipv6: fix possible crashes in ip6_cork_release() + - LP: #1199117 + * netlabel: improve domain mapping validation + - LP: #1199117 + * r8169: fix 8168evl frame padding. + - LP: #1199117 + * r8169: fix offloaded tx checksum for small packets. + - LP: #1199117 + * 8139cp: reset BQL when ring tx ring cleared + - LP: #1199117 + * tcp: bug fix in proportional rate reduction. + - LP: #1199117 + * net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg + - LP: #1199117 + * net: Unbreak compat_sys_{send,recv}msg + - LP: #1199117 + * tcp: xps: fix reordering issues + - LP: #1199117 + * ip_tunnel: fix kernel panic with icmp_dest_unreach + - LP: #1199117 + * net: force a reload of first item in hlist_nulls_for_each_entry_rcu + - LP: #1199117 + * ipv6: assign rt6_info to inet6_ifaddr in init_loopback + - LP: #1199117 + * net: sctp: fix NULL pointer dereference in socket destruction + - LP: #1199117 + * team: check return value of team_get_port_by_index_rcu() for NULL + - LP: #1199117 + * packet: packet_getname_spkt: make sure string is always 0-terminated + - LP: #1199117 + * l2tp: Fix PPP header erasure and memory leak + - LP: #1199117 + * l2tp: Fix sendmsg() return value + - LP: #1199117 + * bonding: rlb mode of bond should not alter ARP originating via bridge + - LP: #1199117 + * tilepro: work around module link error with gcc 4.7 + - LP: #1199117 + * Input: cyttsp - fix memcpy size param + - LP: #1199117 + * target/iscsi: don't corrupt bh_count in iscsit_stop_time2retain_timer() + - LP: #1199117 + * tcm_qla2xxx: Fix residual for underrun commands that fail + - LP: #1199117 + * KVM: x86: remove vcpu's CPL check in host-invoked XCR set + - LP: #1199117 + * x86: fix build error and kconfig for ia32_emulation and binfmt + - LP: #1199117 + * USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable + - LP: #1199117 + * drm/radeon: update lockup tracking when scheduling in empty ring + - LP: #1199117 + * team: move add to port list before port enablement + - LP: #1199117 + * net: sh_eth: fix incorrect RX length error if R8A7740 + - LP: #1199117 + * sctp: fully initialize sctp_outq in sctp_outq_init + - LP: #1199117 + * ARM: 7755/1: handle user space mapped pages in flush_kernel_dcache_page + - LP: #1199117 + * iwlwifi: dvm: fix chain noise calibration + - LP: #1199117 + * Bluetooth: Fix crash in l2cap_build_cmd() with small MTU + - LP: #1199117 + * hw_breakpoint: Use cpu_possible_mask in {reserve,release}_bp_slot() + - LP: #1199117 + * ARM: 7772/1: Fix missing flush_kernel_dcache_page() for noMMU + - LP: #1199117 + * net/tg3: Avoid delay during MMIO access + - LP: #1199117 + * dlci: acquire rtnl_lock before calling __dev_get_by_name() + - LP: #1199117 + * dlci: validate the net device in dlci_del() + - LP: #1199117 + * Bluetooth: btmrvl: fix thread stopping race + - LP: #1199117 + * pch_uart: fix a deadlock when pch_uart as console + - LP: #1199117 + * perf: Disable monitoring on setuid processes for regular users + - LP: #1199117 + * UBIFS: prepare to fix a horrid bug + - LP: #1199117 + * UBIFS: fix a horrid bug + - LP: #1199117 + * perf: Fix perf mmap bugs + - LP: #1199117 + * perf: Fix mmap() accounting hole + - LP: #1199117 + * Linux 3.5.7.16 + - LP: #1199117 + + -- Brad Figg Mon, 08 Jul 2013 14:22:30 -0700 + +linux (3.5.0-36.57) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1192590 + + [ Timo Aaltonen ] + + * SAUCE: i915_hsw: revert to old drm_mm function names + - LP: #1188305 + * SAUCE: i915_hsw: drm/i915: Adding more reserved PCI IDs for Haswell. + - LP: #1175533 + + -- Steve Conklin Wed, 19 Jun 2013 09:40:57 -0500 + +linux (3.5.0-35.56) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1192206 + + [ Dave Chiluk ] + + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + + [ Stefan Bader ] + + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + + [ Timo Aaltonen ] + + * SAUCE: Update i915_hsw to 3.8.13 + - LP: #1188305 + * SAUCE: i915_hsw: Add new definitions + - LP: #1188305 + * SAUCE: i915_hsw: Revert "drm/i915: use drm_send_vblank_event() helper" + - LP: #1188305 + * SAUCE: i915_hsw: Revert "drm/i915: set the VIC of the mode on the AVI + InfoFrame" + - LP: #1188305 + + [ Upstream Kernel Changes ] + + * hwmon: fix error return code in abituguru_probe() + - LP: #1191905 + * i2c: designware: fix RX FIFO overrun + - LP: #1191905 + * i2c: designware: always clear interrupts before enabling them + - LP: #1191905 + * btrfs: don't stop searching after encountering the wrong item + - LP: #1191905 + * drm/radeon: Fix VRAM size calculation for VRAM >= 4GB + - LP: #1191905 + * mantis: fix silly crash case + - LP: #1191905 + * avr32: fix relocation check for signed 18-bit offset + - LP: #1191905 + * virtio_console: fix uapi header + - LP: #1191905 + * Input: egalax_ts - ABS_MT_POSITION_Y not reported well + - LP: #1191905 + * staging: vt6656: use free_netdev instead of kfree + - LP: #1191905 + * USB: xHCI: override bogus bulk wMaxPacketSize values + - LP: #1191905 + * USB: UHCI: fix for suspend of virtual HP controller + - LP: #1191905 + * USB: reset resume quirk needed by a hub + - LP: #1191905 + * usb: option: Add Telewell TW-LTE 4G + - LP: #1191905 + * USB: Blacklisted Cinterion's PLxx WWAN Interface + - LP: #1191905 + * USB: option: add device IDs for Dell 5804 (Novatel E371) WWAN card + - LP: #1191905 + * USB: ftdi_sio: Add support for Newport CONEX motor drivers + - LP: #1191905 + * USB: cxacru: potential underflow in cxacru_cm_get_array() + - LP: #1191905 + * TTY: Fix tty miss restart after we turn off flow-control + - LP: #1191905 + * cifs: only set ops for inodes in I_NEW state + - LP: #1191905 + * Kirkwood: Enable PCIe port 1 on QNAP TS-11x/TS-21x + - LP: #1191905 + * mac80211: fix AP-mode frame matching + - LP: #1191905 + * ARM: plat-orion: Fix num_resources and id for ge10 and ge11 + - LP: #1191905 + * sunrpc: clarify comments on rpc_make_runnable + - LP: #1191905 + * SUNRPC: Prevent an rpc_task wakeup race + - LP: #1191905 + * perf: net_dropmonitor: Fix trace parameter order + - LP: #1191905 + * perf: net_dropmonitor: Fix symbol-relative addresses + - LP: #1191905 + * fat: fix possible overflow for fat_clusters + - LP: #1191905 + * wait: fix false timeouts when using wait_event_timeout() + - LP: #1191905 + * rapidio/tsi721: fix bug in MSI interrupt handling + - LP: #1191905 + * mm compaction: fix of improper cache flush in migration code + - LP: #1191905 + * mm/THP: use pmd_populate() to update the pmd with pgtable_t pointer + - LP: #1191905 + * drivers/leds/leds-ot200.c: fix error caused by shifted mask + - LP: #1191905 + * drivers/block/brd.c: fix brd_lookup_page() race + - LP: #1191905 + * nilfs2: fix issue of nilfs_set_page_dirty() for page at EOF boundary + - LP: #1191905 + * random: fix accounting race condition with lockless irq entropy_count + update + - LP: #1191905 + * ocfs2: goto out_unlock if ocfs2_get_clusters_nocache() failed in + ocfs2_fiemap() + - LP: #1191905 + * mm/pagewalk.c: walk_page_range should avoid VM_PFNMAP areas + - LP: #1191905 + * staging:iio:light:tsl2x7x: fix the error handling in tsl2x7x_probe() + - LP: #1191905 + * mwifiex: fix memory leak issue when driver unload + - LP: #1191905 + * dm bufio: avoid a possible __vmalloc deadlock + - LP: #1191905 + * tg3: Skip powering down function 0 on certain serdes devices + - LP: #1191905 + * acpi/video_detect: blacklist samsung x360 + - LP: #1191905 + * ACPI / video: Add "Asus UL30VT" to ACPI video detect blacklist + - LP: #1191905 + * ACPI / video: Add "Asus UL30A" to ACPI video detect blacklist + - LP: #1191905 + * mm: mmu_notifier: re-fix freed page still mapped in secondary MMU + - LP: #1191905 + * sched/debug: Limit sd->*_idx range on sysctl + - LP: #1191905 + * sched/debug: Fix sd->*_idx limit range avoiding overflow + - LP: #1191905 + * ipvs: ip_vs_sip_fill_param() BUG: bad check of return value + - LP: #1191905 + * jfs: fix a couple races + - LP: #1191905 + * cifs: fix potential buffer overrun when composing a new options string + - LP: #1191905 + * ASoC: cs42l52: fix default value for MASTERA_VOL. + - LP: #1191905 + * drm/radeon: fix typo in cu_per_sh on verde + - LP: #1191905 + * drm/radeon: fix card_posted check for newer asics + - LP: #1191905 + * NFSv4: Fix a thinko in nfs4_try_open_cached + - LP: #1191905 + * xfs: kill suid/sgid through the truncate path. + - LP: #1191905 + * reiserfs: fix deadlock with nfs racing on create/lookup + - LP: #1191905 + * reiserfs: fix problems with chowning setuid file w/ xattrs + - LP: #1191905 + * reiserfs: fix spurious multiple-fill in reiserfs_readdir_dentry + - LP: #1191905 + * xen-netback: remove skb in xen_netbk_alloc_page + - LP: #1191905 + * xen-netback: fix sparse warning + - LP: #1191905 + * xen-netback: coalesce slots in TX path and fix regressions + - LP: #1191905 + * xen-netback: don't disconnect frontend when seeing oversize packet + - LP: #1191905 + * xen-netback: remove redundent parameter in netbk_count_requests + - LP: #1191905 + * xen-netback: avoid allocating variable size array on stack + - LP: #1191905 + * xen-netback: better names for thresholds + - LP: #1191905 + * xen-netfront: remove unused variable `extra' + - LP: #1191905 + * xen-netfront: frags -> slots in xennet_get_responses + - LP: #1191905 + * xen-netfront: frags -> slots in log message + - LP: #1191905 + * Linux 3.5.7.14 + - LP: #1191905 + + -- Steve Conklin Fri, 18 Jun 2013 10:34:21 -0500 + +linux (3.5.0-34.55) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1187926 + + [ Upstream Kernel Changes ] + + * iwlwifi: dvm: fix zero LQ CMD sending avoidance + - LP: #1186932 + + -- Steve Conklin Wed, 05 Jun 2013 15:27:36 -0500 + +linux (3.5.0-33.54) quantal; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1186271 + + [ Upstream Kernel Changes ] + + * crypto: algif - suppress sending source address information in recvmsg + - LP: #1172363 + - CVE-2013-3076 + * ax25: fix info leak via msg_name in ax25_recvmsg() + - LP: #1172366 + - CVE-2013-3223 + * Bluetooth: fix possible info leak in bt_sock_recvmsg() + - LP: #1172368 + - CVE-2013-3224 + * tipc: fix info leaks via msg_name in recv_msg/recv_stream + - LP: #1172403 + - CVE-2013-3235 + * rose: fix info leak via msg_name in rose_recvmsg() + - LP: #1172394 + - CVE-2013-3234 + * Bluetooth: RFCOMM - Fix missing msg_namelen update in + rfcomm_sock_recvmsg() + - LP: #1172369 + - CVE-2013-3225 + * atm: update msg_namelen in vcc_recvmsg() + - LP: #1172365 + - CVE-2013-3222 + * iwlwifi: add new pci id for 6x35 series + - LP: #1180256 + * ath9k_htc: accept 1.x firmware newer than 1.3 + - LP: #1186062 + * ssb: implement spurious tone avoidance + - LP: #1186062 + * can: mcp251x: add missing IRQF_ONESHOT to request_threaded_irq + - LP: #1186062 + * can: sja1000: fix handling on dt properties on little endian systems + - LP: #1186062 + * ath9k_hw: change AR9580 initvals to fix a stability issue + - LP: #1186062 + * ARM: 7696/1: Fix kexec by setting outer_cache.inv_all for Feroceon + - LP: #1186062 + * ARM: 7698/1: perf: fix group validation when using enable_on_exec + - LP: #1186062 + * hugetlbfs: add swap entry check in follow_hugetlb_page() + - LP: #1186062 + * kernel/signal.c: stop info leak via the tkill and the tgkill syscalls + - LP: #1186062 + * hfsplus: fix potential overflow in hfsplus_file_truncate() + - LP: #1186062 + * sched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s + - LP: #1186062 + * perf/x86: Fix offcore_rsp valid mask for SNB/IVB + - LP: #1186062 + * vm: add vm_iomap_memory() helper function + - LP: #1186062 + * vm: convert HPET mmap to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert fb_mmap to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert snd_pcm_lib_mmap_iomem() to vm_iomap_memory() helper + - LP: #1186062 + * vm: convert mtdchar mmap to vm_iomap_memory() helper + - LP: #1186062 + * regulator: fixed regulator_bulk_enable unwinding code + - LP: #1186062 + * perf: Fix error return code + - LP: #1186062 + * xen/smp: Fix leakage of timer interrupt line for every CPU + online/offline. + - LP: #1186062 + * xen/smp/spinlock: Fix leakage of the spinlock interrupt line for every + CPU online/offline + - LP: #1186062 + * xen/time: Fix kasprintf splat when allocating timer%d IRQ line. + - LP: #1186062 + * s390/memory hotplug: prevent offline of active memory increments + - LP: #1186062 + * aio: fix possible invalid memory access when DEBUG is enabled + - LP: #1186062 + * TTY: do not update atime/mtime on read/write + - LP: #1186062 + * TTY: fix atime/mtime regression + - LP: #1186062 + * caif: Fix missing msg_namelen update in caif_seqpkt_recvmsg() + - LP: #1186062 + * irda: Fix missing msg_namelen update in irda_recvmsg_dgram() + - LP: #1186062 + * iucv: Fix missing msg_namelen update in iucv_sock_recvmsg() + - LP: #1186062 + * llc: Fix missing msg_namelen update in llc_ui_recvmsg() + - LP: #1186062 + * netrom: fix info leak via msg_name in nr_recvmsg() + - LP: #1186062 + * netrom: fix invalid use of sizeof in nr_recvmsg() + - LP: #1186062 + * NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg() + - LP: #1186062 + * cbq: incorrect processing of high limits + - LP: #1186062 + * net IPv6 : Fix broken IPv6 routing table after loopback down-up + - LP: #1186062 + * net: count hw_addr syncs so that unsync works properly. + - LP: #1186062 + * atl1e: limit gso segment size to prevent generation of wrong ip length + fields + - LP: #1186062 + * bonding: fix bonding_masters race condition in bond unloading + - LP: #1186062 + * bonding: IFF_BONDING is not stripped on enslave failure + - LP: #1186062 + * af_unix: If we don't care about credentials coallesce all messages + - LP: #1186062 + * netfilter: don't reset nf_trace in nf_reset() + - LP: #1186062 + * rtnetlink: Call nlmsg_parse() with correct header length + - LP: #1186062 + * tcp: incoming connections might use wrong route under synflood + - LP: #1186062 + * tcp: Reallocate headroom if it would overflow csum_start + - LP: #1186062 + * esp4: fix error return code in esp_output() + - LP: #1186062 + * net: sctp: sctp_auth_key_put: use kzfree instead of kfree + - LP: #1186062 + * tcp: call tcp_replace_ts_recent() from tcp_ack() + - LP: #1186062 + * net: rate-limit warn-bad-offload splats. + - LP: #1186062 + * net: fix incorrect credentials passing + - LP: #1186062 + * net: drop dst before queueing fragments + - LP: #1186062 + * sparc64: Fix race in TLB batch processing. + - LP: #1186062 + * l2tp: fix info leak in l2tp_ip6_recvmsg() + - LP: #1186062 + * tracing: Use stack of calling function for stack tracer + - LP: #1186062 + * tracing: Fix stack tracer with fentry use + - LP: #1186062 + * tracing: Remove most or all of stack tracer stack size from + stack_max_size + - LP: #1186062 + * tracing: Fix ftrace_dump() + - LP: #1186062 + * Wrong asm register contraints in the futex implementation + - LP: #1186062 + * Wrong asm register contraints in the kvm implementation + - LP: #1186062 + * cgroup: fix an off-by-one bug which may trigger BUG_ON() + - LP: #1186062 + * PCI / ACPI: Don't query OSC support with all possible controls + - LP: #1186062 + * Fix initialization of CMCI/CMCP interrupts + - LP: #1186062 + * sysfs: fix use after free in case of concurrent read/write and readdir + - LP: #1186062 + * usb/misc/appledisplay: Add 24" LED Cinema display + - LP: #1186062 + * ext4/jbd2: don't wait (forever) for stale tid caused by wraparound + - LP: #1186062 + * jbd2: fix race between jbd2_journal_remove_checkpoint and + ->j_commit_callback + - LP: #1186062 + * ext4: fix journal callback list traversal + - LP: #1186062 + * usb: chipidea: udc: fix memory access of shared memory on armv5 + machines + - LP: #1186062 + * NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in + nfs4_open_delegation_recall + - LP: #1186062 + * usb: chipidea: udc: fix memory leak in _ep_nuke + - LP: #1186062 + * USB: add ftdi_sio USB ID for GDM Boost V1.x + - LP: #1186062 + * hrtimer: Add expiry time overflow check in hrtimer_interrupt + - LP: #1186062 + * hrtimer: Fix ktime_add_ns() overflow on 32bit architectures + - LP: #1186062 + * ARM: omap3: cpuidle: enable time keeping + - LP: #1186062 + * tracing: Fix off-by-one on allocating stat->pages + - LP: #1186062 + * USB: option: add a D-Link DWM-156 variant + - LP: #1186062 + * ext4: fix big-endian bug in metadata checksum calculations + - LP: #1186062 + * tracing: Reset ftrace_graph_filter_enabled if count is zero + - LP: #1186062 + * tracing: Check return value of tracing_init_dentry() + - LP: #1186062 + * serial_core.c: add put_device() after device_find_child() + - LP: #1186062 + * PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition() + - LP: #1186062 + * wireless: regulatory: fix channel disabling race condition + - LP: #1186062 + * usbfs: Always allow ctrl requests with USB_RECIP_ENDPOINT on the ctrl + ep + - LP: #1186062 + * iwlwifi: fix freeing uninitialized pointer + - LP: #1186062 + * iwlwifi: dvm: don't send zeroed LQ cmd + - LP: #1186062 + * LOCKD: Ensure that nlmclnt_block resets block->b_status after a server + reboot + - LP: #1186062 + * ext4: fix online resizing for ext3-compat file systems + - LP: #1186062 + * ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG + - LP: #1186062 + * rt2x00: Fix transmit power troubles on some Ralink RT30xx cards + - LP: #1186062 + * USB: ftdi_sio: correct ST Micro Connect Lite PIDs + - LP: #1186062 + * USB: serial: option: Added support Olivetti Olicard 145 + - LP: #1186062 + * usb-storage: CY7C68300A chips do not support Cypress ATACB + - LP: #1186062 + * USB: ftdi_sio: enable two UART ports on ST Microconnect Lite + - LP: #1186062 + * gianfar: do not advertise any alarm capability. + - LP: #1186062 + * clockevents: Set dummy handler on CPU_DEAD shutdown + - LP: #1186062 + * ixgbe: fix EICR write in ixgbe_msix_other + - LP: #1186062 + * mwifiex: Use pci_release_region() instead of a pci_release_regions() + - LP: #1186062 + * mwifiex: Call pci_release_region after calling pci_disable_device + - LP: #1186062 + * fs/fscache/stats.c: fix memory leak + - LP: #1186062 + * mm: allow arch code to control the user page table ceiling + - LP: #1186062 + * arm: set the page table freeing ceiling to TASK_SIZE + - LP: #1186062 + * drivers/rtc/rtc-cmos.c: don't disable hpet emulation on suspend + - LP: #1186062 + * drivers/rtc/rtc-at91rm9200.c: fix missing iounmap + - LP: #1186062 + * md: bad block list should default to disabled. + - LP: #1186062 + * inotify: invalid mask should return a error number but not set it + - LP: #1186062 + * fs/dcache.c: add cond_resched() to shrink_dcache_parent() + - LP: #1186062 + * exec: do not abuse ->cred_guard_mutex in threadgroup_lock() + - LP: #1186062 + * tty: fix up atime/mtime mess, take three + - LP: #1186062 + * ipc: sysv shared memory limited to 8TiB + - LP: #1186062 + * ARM: 7699/1: sched_clock: Add more notrace to prevent recursion + - LP: #1186062 + * Linux 3.5.7.12 + - LP: #1186062 + * mmc: at91/avr32/atmel-mci: fix DMA-channel leak on module unload + - LP: #1186062 + * ARM: at91: Fix typo in restart code panic message + - LP: #1186062 + * drm/radeon: don't use get_engine_clock() on APUs + - LP: #1186062 + * nfsd: don't run get_file if nfs4_preprocess_stateid_op return error + - LP: #1186062 + * mmc: core: Fix bit width test failing on old eMMC cards + - LP: #1186062 + * drm/i915: Add no-lvds quirk for Fujitsu Esprimo Q900 + - LP: #1186062 + * mfd: adp5520: Restore mode bits on resume + - LP: #1186062 + * mmc: atmel-mci: pio hang on block errors + - LP: #1186062 + * nfsd4: don't close read-write opens too soon + - LP: #1186062 + * drm/radeon/dce6: add missing display reg for tiling setup + - LP: #1186062 + * ALSA: usb: Add quirk for 192KHz recording on E-Mu devices + - LP: #1186062 + * ALSA: usb-audio: disable autopm for MIDI devices + - LP: #1186062 + * drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS + - LP: #1186062 + * drm/radeon: cleanup properly if mmio mapping fails + - LP: #1186062 + * ASoC: max98088: Fix logging of hardware revision. + - LP: #1186062 + * drm/i915: Workaround incoherence between fences and LLC across multiple + CPUs + - LP: #1186062 + * drm/i915: Fall back to bit banging mode for DVO transmitter detection + - LP: #1186062 + * drm/radeon: fix hdmi mode enable on RS600/RS690/RS740 + - LP: #1186062 + * i2c: xiic: must always write 16-bit words to TX_FIFO + - LP: #1186062 + * nfsd: Decode and send 64bit time values + - LP: #1186062 + * drm/radeon: fix typo in si_select_se_sh() + - LP: #1186062 + * fbcon: when font is freed, clear also vc_font.data + - LP: #1186062 + * powerpc/spufs: Initialise inode->i_ino in spufs_new_inode() + - LP: #1186062 + * ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT + - LP: #1186062 + * ALSA: usb-audio: Fix autopm error during probing + - LP: #1186062 + * drm/gma500: fix backlight hotkeys behaviour on netbooks + - LP: #1186062 + * powerpc: Add isync to copy_and_flush + - LP: #1186062 + * ARM: u300: fix ages old copy/paste bug + - LP: #1186062 + * x86: Eliminate irq_mis_count counted in arch_irq_stat + - LP: #1186062 + * drm/prime: keep a reference from the handle to exported dma-buf (v6) + - LP: #1186062 + * drm/mgag200: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/ast: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/cirrus: deal with bo reserve fail in dirty update path + - LP: #1186062 + * drm/radeon: fix endian bugs in atom_allocate_fb_scratch() + - LP: #1186062 + * drm/radeon: fix possible segfault when parsing pm tables + - LP: #1186062 + * drm/radeon: add some new SI PCI ids + - LP: #1186062 + * drm/radeon: add new richland pci ids + - LP: #1186062 + * drm/radeon: fix handling of v6 power tables + - LP: #1186062 + * perf/x86/intel/lbr: Fix LBR filter + - LP: #1186062 + * perf/x86/intel/lbr: Demand proper privileges for + PERF_SAMPLE_BRANCH_KERNEL + - LP: #1186062 + * net/eth/ibmveth: Fixup retrieval of MAC address + - LP: #1186062 + * autofs - remove autofs dentry mount check + - LP: #1186062 + * drm/radeon: properly lock disp in mc_stop/resume for evergreen+ + - LP: #1186062 + * drm/radeon: disable the crtcs in mc_stop (evergreen+) (v2) + - LP: #1186062 + * powerpc: fix numa distance for form0 device tree + - LP: #1186062 + * kernel/audit_tree.c: tree will leak memory when failure occurs in + audit_trim_trees() + - LP: #1186062 + * xhci: Don't warn on empty ring for suspended devices. + - LP: #1186062 + * cpufreq: exynos: Get booting freq value in exynos_cpufreq_init + - LP: #1186062 + * ARM: 7692/1: iop3xx: move IOP3XX_PERIPHERAL_VIRT_BASE + - LP: #1186062 + * drm/i915: ensure single initialization and cleanup of backlight device + - LP: #1186062 + * drm/radeon: use frac fb div on RS780/RS880 + - LP: #1186062 + * r8169: fix vlan tag read ordering. + - LP: #1186062 + * r8169: honor jumbo settings when chipset is requested to start. + - LP: #1186062 + * drm/i915: Fix detection of base of stolen memory + - LP: #1186062 + * s390: move dummy io_remap_pfn_range() to asm/pgtable.h + - LP: #1186062 + * x86/mm: account for PGDIR_SIZE alignment + - LP: #1186062 + * drbd: fix for deadlock when using automatic split-brain-recovery + - LP: #1186062 + * cpufreq / Longhaul: Disable driver by default + - LP: #1186062 + * ext4: add check for inodes_count overflow in new resize ioctl + - LP: #1186062 + * powerpc: Emulate non privileged DSCR read and write + - LP: #1186062 + * audit: Syscall rules are not applied to existing processes on non-x86 + - LP: #1186062 + * ASoC: wm8994: missing break in wm8994_aif3_hw_params() + - LP: #1186062 + * tile: support new Tilera hypervisor + - LP: #1186062 + * sd: fix array cache flushing bug causing performance problems + - LP: #1186062 + * ath9k: fix key allocation error handling for powersave keys + - LP: #1186062 + * nfsd4: don't allow owner override on 4.1 CLAIM_FH opens + - LP: #1186062 + * xen/vcpu/pvhvm: Fix vcpu hotplugging hanging. + - LP: #1186062 + * ALSA: HDA: Fix Oops caused by dereference NULL pointer + - LP: #1186062 + * ACPICA: Fix possible buffer overflow during a field unit read operation + - LP: #1186062 + * qmi_wwan/cdc_ether: add device IDs for Dell 5804 (Novatel E371) WWAN + card + - LP: #1186062 + * B43: Handle DMA RX descriptor underrun + - LP: #1186062 + * mwifiex: clear is_suspended flag when interrupt is received early + - LP: #1186062 + * mwifiex: fix setting of multicast filter + - LP: #1186062 + * ARM: OMAP: RX-51: change probe order of touchscreen and panel SPI + devices + - LP: #1186062 + * hp_accel: Ignore the error from lis3lv02d_poweron() at resume + - LP: #1186062 + * KVM: VMX: fix halt emulation while emulating invalid guest sate + - LP: #1186062 + * dm snapshot: fix error return code in snapshot_ctr + - LP: #1186062 + * drm/mgag200: Fix writes into MGA1064_PIX_CLK_CTL register + - LP: #1186062 + * drm/mgag200: Fix framebuffer base address programming + - LP: #1186062 + * hugetlbfs: fix mmap failure in unaligned size request + - LP: #1186062 + * net: qmi_wwan: fixup missing ethernet header (firmware bug workaround) + - LP: #1186062 + * net: qmi_wwan: fixup destination address (firmware bug workaround) + - LP: #1186062 + * net: qmi_wwan: prevent duplicate mac address on link (firmware bug + workaround) + - LP: #1186062 + * tcp: force a dst refcount when prequeue packet + - LP: #1186062 + * sfc: Fix naming of MTD partitions for FPGA bitfiles + - LP: #1186062 + * 3c509.c: call SET_NETDEV_DEV for all device types (ISA/ISAPnP/EISA) + - LP: #1186062 + * net_sched: act_ipt forward compat with xtables + - LP: #1186062 + * net: use netdev_features_t in skb_needs_linearize() + - LP: #1186062 + * net: vlan,ethtool: netdev_features_t is more than 32 bit + - LP: #1186062 + * bridge: fix race with topology change timer + - LP: #1186062 + * packet: tpacket_v3: do not trigger bug() on wrong header status + - LP: #1186062 + * 3c59x: fix freeing nonexistent resource on driver unload + - LP: #1186062 + * 3c59x: fix PCI resource management + - LP: #1186062 + * if_cablemodem.h: Add parenthesis around ioctl macros + - LP: #1186062 + * macvlan: fix passthru mode race between dev removal and rx path + - LP: #1186062 + * ipv6: do not clear pinet6 field + - LP: #1186062 + * xfrm6: release dev before returning error + - LP: #1186062 + * ext4: limit group search loop for non-extent files + - LP: #1186062 + * iscsi-target: Fix processing of OOO commands + - LP: #1186062 + * tick: Cleanup NOHZ per cpu data on cpu down + - LP: #1186062 + * ACPI / EC: Restart transaction even when the IBF flag set + - LP: #1186062 + * drm/radeon: check incoming cliprects pointer + - LP: #1186062 + * ARM: 7720/1: ARM v6/v7 cmpxchg64 shouldn't clear upper 32 bits of the + old/new value + - LP: #1186062 + * powerpc: Bring all threads online prior to migration/hibernation + - LP: #1186062 + * timer: Don't reinitialize the cpu base lock during CPU_UP_PREPARE + - LP: #1186062 + * tracing: Fix leaks of filter preds + - LP: #1186062 + * usermodehelper: check subprocess_info->path != NULL + - LP: #1186062 + * drivers/char/ipmi: memcpy, need additional 2 bytes to avoid memory + overflow + - LP: #1186062 + * ipmi: ipmi_devintf: compat_ioctl method fails to take ipmi_mutex + - LP: #1186062 + * dm thin: do not set discard_zeroes_data + - LP: #1186062 + * drivers/rtc/rtc-pcf2123.c: fix error return code in pcf2123_probe() + - LP: #1186062 + * pch_dma: Use GFP_ATOMIC because called from interrupt context + - LP: #1186062 + * ARM: EXYNOS5: Fix kernel dump in AFTR idle mode + - LP: #1186062 + * watchdog: Fix race condition in registration code + - LP: #1186062 + * Linux 3.5.7.13 + - LP: #1186062 + + -- Steve Conklin Fri, 31 May 2013 09:29:44 -0500 + +linux (3.5.0-32.53) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1185161 + + [ Upstream Kernel Changes ] + + * iscsi-target: fix heap buffer overflow on error + - CVE-2013-2850 + + -- Steve Conklin Tue, 28 May 2013 15:17:15 -0500 + +linux (3.5.0-31.52) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1180568 + * merged back in delta from 28.48 to 29.49 + + -- Steve Conklin Wed, 15 May 2013 16:25:01 -0500 + +linux (3.5.0-30.51) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1180038 + * Based on 3.5.0-28.48 release + - entire delta from 28.48 to 29.49 removed + - CVE release is based on updates+fix + + [ Upstream Kernel Changes ] + + * perf: Treat attr.config as u64 in perf_swevent_init() + - LP: #1179943 + - CVE-2013-2094 + + -- Steve Conklin Tue, 14 May 2013 13:01:04 -0500 + +linux (3.5.0-29.49) quantal; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1177007 + + [ AceLan Kao ] + + * SAUCE: (no-up) alx: disables MSI generation + - LP: #927782 + + [ Brad Figg ] + + * CONFIG: CONFIG_EFI_VARS_PSTORE (not set); CONFIG_PPC_EMULATE_SSTEP=y + + [ Gavin Guo ] + + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + + [ joseph.salisbury@canonical.com ] + + * SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci + - LP: #800660 + + [ Leann Ogasawara ] + + * SAUCE: cpuidle: Fix NULL pointer dereference when offlining CPU's + - LP: #1168452 + + [ Stefan Bader ] + + * [Config] Add libceph to base modules list + - LP: #1164739 + + [ Tim Gardner ] + + * SAUCE: (no-up) alx: Don't check netif_running() before powering up + - LP: #1172415 + * [packaging] Bump ABI for every new release + + [ Upstream Kernel Changes ] + + * Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" + - LP: #1174946 + * 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 + * tg3: fix length overflow in VPD firmware parsing + - LP: #1167065 + - CVE-2013-1929 + * Bluetooth: Add support for atheros 04ca:3004 device to ath3k + - LP: #1168852 + * ata_piix: Fix DVD not dectected at some Haswell platforms + - LP: #1170797 + * clockevents: Don't allow dummy broadcast timers + - LP: #1174946 + * Bluetooth: Add support for Dell[QCA 0cf3:0036] + - LP: #1174946 + * Bluetooth: Add support for Dell[QCA 0cf3:817a] + - LP: #1174946 + * ath9k_hw: revert chainmask to user configuration after calibration + - LP: #1174946 + * ath9k: limit tx path hang check to normal data queues + - LP: #1174946 + * rtlwifi: usb: add missing freeing of skbuff + - LP: #1174946 + * net/irda: add missing error path release_sock call + - LP: #1174946 + * pnfs-block: removing DM device maybe cause oops when call dev_remove + - LP: #1174946 + * NFSv4.1: Fix a race in pNFS layoutcommit + - LP: #1174946 + * IPoIB: Fix send lockup due to missed TX completion + - LP: #1174946 + * SUNRPC: Add barriers to ensure read ordering in + rpc_wake_up_task_queue_locked + - LP: #1174946 + * Nest rename_lock inside vfsmount_lock + - LP: #1174946 + * vt: synchronize_rcu() under spinlock is not nice... + - LP: #1174946 + * iommu/amd: Make sure dma_ops are set for hotplug devices + - LP: #1174946 + * i915: initialize CADL in opregion + - LP: #1174946 + * tracing: Protect tracer flags with trace_types_lock + - LP: #1174946 + * tracing: Prevent buffer overwrite disabled for latency tracers + - LP: #1174946 + * nohz: Make tick_nohz_irq_exit() irq safe + - LP: #1174946 + * udf: Fix bitmap overflow on large filesystems with small block size + - LP: #1174946 + * xen/blkback: correctly respond to unknown, non-native requests + - LP: #1174946 + * tty: atmel_serial_probe(): index of atmel_ports[] fix + - LP: #1174946 + * HID: usbhid: quirk for Realtek Multi-card reader + - LP: #1174946 + * HID: usbhid: quirk for MSI GX680R led panel + - LP: #1174946 + * xen-blkback: fix dispatch_rw_block_io() error path + - LP: #1174946 + * sysfs: handle failure path correctly for readdir() + - LP: #1174946 + * usb: xhci: Fix TRB transfer length macro used for Event TRB. + - LP: #1174946 + * staging: comedi: s626: fix continuous acquisition + - LP: #1174946 + * USB: serial: fix hang when opening port + - LP: #1174946 + * Btrfs: fix race between mmap writes and compression + - LP: #1174946 + * Btrfs: fix space leak when we fail to reserve metadata space + - LP: #1174946 + * Btrfs: limit the global reserve to 512mb + - LP: #1174946 + * usb: ftdi_sio: Add support for Mitsubishi FX-USB-AW/-BD + - LP: #1174946 + * Btrfs: don't drop path when printing out tree errors in scrub + - LP: #1174946 + * USB: serial: add modem-status-change wait queue + - LP: #1174946 + * USB: ark3116: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ch341: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: cypress_m8: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: f81232: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ftdi_sio: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: io_edgeport: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: io_ti: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: mct_u232: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: mos7840: fix broken TIOCMIWAIT + - LP: #1174946 + * USB: mos7840: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: oti6858: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: pl2303: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: quatech2: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: spcp8x5: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ssu100: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * USB: ti_usb_3410_5052: fix use-after-free in TIOCMIWAIT + - LP: #1174946 + * Btrfs: use set_nlink if our i_nlink is 0 + - LP: #1174946 + * Bluetooth: Fix not closing SCO sockets in the BT_CONNECT2 state + - LP: #1174946 + * HID: usbhid: fix build problem + - LP: #1174946 + * sysfs: fix race between readdir and lseek + - LP: #1174946 + * net: remove a WARN_ON() in net_enable_timestamp() + - LP: #1174946 + * sky2: Receive Overflows not counted + - LP: #1174946 + * sky2: Threshold for Pause Packet is set wrong + - LP: #1174946 + * tcp: preserve ACK clocking in TSO + - LP: #1174946 + * tcp: undo spurious timeout after SACK reneging + - LP: #1174946 + * 8021q: fix a potential use-after-free + - LP: #1174946 + * thermal: shorten too long mcast group name + - LP: #1174946 + * genetlink: trigger BUG_ON if a group name is too long + - LP: #1174946 + * unix: fix a race condition in unix_release() + - LP: #1174946 + * bonding: remove already created master sysfs link on failure + - LP: #1174946 + * bonding: fix miimon and arp_interval delayed work race conditions + - LP: #1174946 + * bonding: fix disabling of arp_interval and miimon + - LP: #1174946 + * drivers: net: ethernet: davinci_emac: use netif_wake_queue() while + restarting tx queue + - LP: #1174946 + * drivers: net: ethernet: cpsw: use netif_wake_queue() while restarting + tx queue + - LP: #1174946 + * net: fix *_DIAG_MAX constants + - LP: #1174946 + * aoe: reserve enough headroom on skbs + - LP: #1174946 + * atl1e: drop pci-msi support because of packet corruption + - LP: #1174946 + * DM9000B: driver initialization upgrade + - LP: #1174946 + * ipv6: don't accept multicast traffic with scope 0 + - LP: #1174946 + * ipv6: fix bad free of addrconf_init_net + - LP: #1174946 + * ipv6: don't accept node local multicast traffic from the wire + - LP: #1174946 + * ks8851: Fix interpretation of rxlen field. + - LP: #1174946 + * net: add a synchronize_net() in netdev_rx_handler_unregister() + - LP: #1174946 + * pch_gbe: fix ip_summed checksum reporting on rx + - LP: #1174946 + * smsc75xx: fix jumbo frame support + - LP: #1174946 + * bonding: get netdev_rx_handler_unregister out of locks + - LP: #1174946 + * mac80211: always synchronize_net() during station removal + - LP: #1174946 + * regmap: cache Fix regcache-rbtree sync + - LP: #1174946 + * iwlwifi: dvm: don't send HCMD in restart flow + - LP: #1174946 + * nfsd4: reject "negative" acl lengths + - LP: #1174946 + * can: sja1000: fix define conflict on SH + - LP: #1174946 + * b43: N-PHY: increase initial value of "mind" in RSSI calibration + - LP: #1174946 + * b43: A fix for DMA transmission sequence errors + - LP: #1174946 + * b43: N-PHY: use more bits for offset in RSSI calibration + - LP: #1174946 + * tile: expect new initramfs name from hypervisor file system + - LP: #1174946 + * virtio: console: rename cvq_lock to c_ivq_lock + - LP: #1174946 + * virtio: console: add locking around c_ovq operations + - LP: #1174946 + * ARM: cns3xxx: fix mapping of private memory region + - LP: #1174946 + * loop: prevent bdev freeing while device in use + - LP: #1174946 + * thermal: return an error on failure to register thermal class + - LP: #1174946 + * UBIFS: make space fixup work in the remount case + - LP: #1174946 + * reiserfs: Fix warning and inode leak when deleting inode with xattrs + - LP: #1174946 + * mm: prevent mmap_cache race in find_vma() + - LP: #1174946 + * Linux 3.5.7.10 + - LP: #1174946 + * ASoC: imx-ssi: Fix occasional AC97 reset failure + - LP: #1174946 + * ASoC: dma-sh7760: Fix compile error + - LP: #1174946 + * spi/s3c64xx: modified error interrupt handling and init + - LP: #1174946 + * spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts + - LP: #1174946 + * EISA/PCI: Fix bus res reference + - LP: #1174946 + * EISA/PCI: Init EISA early, before PNP + - LP: #1174946 + * mwifiex: limit channel number not to overflow memory + - LP: #1174946 + * ALSA: hda - bug fix on return value when getting HDMI ELD info + - LP: #1174946 + * x86: remove the x32 syscall bitmask from syscall_get_nr() + - LP: #1174946 + * ixgbe: fix registration order of driver and DCA nofitication + - LP: #1174946 + * alpha: Add irongate_io to PCI bus resources + - LP: #1174946 + * crypto: gcm - fix assumption that assoc has one segment + - LP: #1174946 + * libata: Use integer return value for atapi_command_packet_set + - LP: #1174946 + * libata: Set max sector to 65535 for Slimtype DVD A DS8A8SH drive + - LP: #1174946 + * remoteproc: fix error path of handle_vdev + - LP: #1174946 + * hwspinlock: fix __hwspin_lock_request error path + - LP: #1174946 + * remoteproc: fix FW_CONFIG typo + - LP: #1174946 + * powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being + performed before the ANDCOND test + - LP: #1174946 + * ftrace: Consistently restore trace function on sysctl enabling + - LP: #1174946 + * spinlocks and preemption points need to be at least compiler barriers + - LP: #1174946 + * drm/mgag200: Index 24 in extended CRTC registers is 24 in hex, not + decimal. + - LP: #1174946 + * panic: fix a possible deadlock in panic() + - LP: #1174946 + * Bluetooth: Add support for IMC Networks [13d3:3393] + - LP: #1174946 + * Bluetooth: Add support for GC-WB300D PCIe [04ca:3006] to ath3k. + - LP: #1174946 + * Bluetooth: Add support for Foxconn / Hon Hai [0489:e04e] + - LP: #1174946 + * Bluetooth: Add support for Foxconn / Hon Hai [0489:e056] + - LP: #1174946 + * Bluetooth device 04ca:3008 should use ath3k + - LP: #1174946 + * Bluetooth: Device 0cf3:3008 should map AR 3012 + - LP: #1174946 + * ALSA: hda - Enabling Realtek ALC 671 codec + - LP: #1174946 + * ALSA: hda - fix typo in proc output + - LP: #1174946 + * can: gw: use kmem_cache_free() instead of kfree() + - LP: #1174946 + * tracing: Fix double free when function profile init failed + - LP: #1174946 + * r8169: fix auto speed down issue + - LP: #1174946 + * x86: Fix rebuild with EFI_STUB enabled + - LP: #1174946 + * msi-wmi: Fix memory leak + - LP: #1174946 + * DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines. + - LP: #1174946 + * drm/i915: add quirk to invert brightness on eMachines G725 + - LP: #1174946 + * drm/i915: add quirk to invert brightness on eMachines e725 + - LP: #1174946 + * drm/i915: add quirk to invert brightness on Packard Bell NCL20 + - LP: #1174946 + * block: avoid using uninitialized value in from queue_var_store + - LP: #1174946 + * ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_* + - LP: #1174946 + * PM / reboot: call syscore_shutdown() after disable_nonboot_cpus() + - LP: #1174946 + * ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is + running + - LP: #1174946 + * drm/i915: Use the correct size of the GTT for placing the per-process + entries + - LP: #1174946 + * GFS2: Fix unlock of fcntl locks during withdrawn state + - LP: #1174946 + * libsas: fix handling vacant phy in sas_set_ex_phy() + - LP: #1174946 + * sched_clock: Prevent 64bit inatomicity on 32bit systems + - LP: #1174946 + * x86, mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates + - LP: #1174946 + * x86, mm: Patch out arch_flush_lazy_mmu_mode() when running on bare + metal + - LP: #1174946 + * cifs: Allow passwords which begin with a delimitor + - LP: #1174946 + * target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition + CDBs + - LP: #1174946 + * udl: handle EDID failure properly. + - LP: #1174946 + * tracing: Fix possible NULL pointer dereferences + - LP: #1174946 + * ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section + - LP: #1174946 + * Btrfs: make sure nbytes are right after log replay + - LP: #1174946 + * kobject: fix kset_find_obj() race with concurrent last kobject_put() + - LP: #1174946 + * vfs: Revert spurious fix to spinning prevention in prune_icache_sb + - LP: #1174946 + * kref: Implement kref_get_unless_zero v3 + - LP: #1174946 + * hrtimer: Don't reinitialize a cpu_base lock on CPU_UP + - LP: #1174946 + * ARM: Do 15e0d9e37c (ARM: pm: let platforms select cpu_suspend support) + properly + - LP: #1174946 + * efivars: Allow disabling use as a pstore backend + - LP: #1174946 + * efivars: Add module parameter to disable use as a pstore backend + - LP: #1174946 + * efivars: Fix check for CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE + - LP: #1174946 + * KVM: Allow cross page reads and writes from cached translations. + - LP: #1174946 + * mtd: Disable mtdchar mmap on MMU systems + - LP: #1174946 + * Linux 3.5.7.11 + - LP: #1174946 + + -- Brad Figg Mon, 06 May 2013 10:25:47 -0700 + +linux (3.5.0-28.48) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1172023 + + [ Steve Conklin ] + + * Revert "drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for + scanline waits" + - LP: #1140716 + + [ Upstream Kernel Changes ] + + * fbcon: fix locking harder + - LP: #1167114 + + -- Brad Figg Tue, 23 Apr 2013 14:01:06 -0700 + +linux (3.5.0-28.47) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1166876 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 105b:e065 + - LP: #1161261 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Fix quieting of audit messages for network + mediation + - LP: #1163259 + + [ Upstream Kernel Changes ] + + * NFSv4: Fix the string length returned by the idmapper + - LP: #1101292 + * Input: cypress_ps2 - fix trackpadi found in Dell XPS12 + - LP: #1103594 + * omap_vout: find_vma() needs ->mmap_sem held + - LP: #1164714 + * nfsd: Fix memleak + - LP: #1164714 + * iommu/amd: Initialize device table after dma_ops + - LP: #1164714 + * svcrpc: make svc_age_temp_xprts enqueue under sv_lock + - LP: #1164714 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1164714 + * xen-blkback: do not leak mode property + - LP: #1164714 + * btrfs: Init io_lock after cloning btrfs device struct + - LP: #1164714 + * NFS: Don't allow NFS silly-renamed files to be deleted, no signal + - LP: #1164714 + * SUNRPC: Don't start the retransmission timer when out of socket space + - LP: #1164714 + * storvsc: Initialize the sglist + - LP: #1164714 + * dc395x: uninitialized variable in device_alloc() + - LP: #1164714 + * ALSA: bt87x: Make load_all parameter working again + - LP: #1164714 + * ARM: VFP: fix emulation of second VFP instruction + - LP: #1164714 + * ARM: fix scheduling while atomic warning in alignment handling code + - LP: #1164714 + * doc, xen: Mention 'earlyprintk=xen' in the documentation. + - LP: #1164714 + * doc, kernel-parameters: Document 'console=hvc' + - LP: #1164714 + * sony-laptop: fully enable SNY controlled modems + - LP: #1164714 + * x86: Make sure we can boot in the case the BDA contains pure garbage + - LP: #1164714 + * cifs: ensure that cifs_get_root() only traverses directories + - LP: #1164714 + * iscsi-target: Fix immediate queue starvation regression with DATAIN + - LP: #1164714 + * ocfs2: fix ocfs2_init_security_and_acl() to initialize acl correctly + - LP: #1164714 + * ocfs2: ac->ac_allow_chain_relink=0 won't disable group relink + - LP: #1164714 + * block: fix ext_devt_idr handling + - LP: #1164714 + * idr: fix a subtle bug in idr_get_next() + - LP: #1164714 + * block: fix synchronization and limit check in blk_alloc_devt() + - LP: #1164714 + * firewire: add minor number range check to fw_device_init() + - LP: #1164714 + * idr: fix top layer handling + - LP: #1164714 + * sysctl: fix null checking in bin_dn_node_address() + - LP: #1164714 + * nbd: fsync and kill block device on shutdown + - LP: #1164714 + * target/pscsi: Fix page increment + - LP: #1164714 + * xen/pat: Disable PAT using pat_enabled value. + - LP: #1164714 + * xen/pci: We don't do multiple MSI's. + - LP: #1164714 + * xenbus: fix compile failure on ARM with Xen enabled + - LP: #1164714 + * dm snapshot: add missing module aliases + - LP: #1164714 + * ext4: convert number of blocks to clusters properly + - LP: #1164714 + * ata_piix: reenable MS Virtual PC guests + - LP: #1164714 + * nfsd: add get_uint for u32's + - LP: #1164714 + * asus-laptop: Do not call HWRS on init + - LP: #1164714 + * ata_piix: IDE-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1164714 + * ata_piix: Add Device IDs for Intel Wellsburg PCH + - LP: #1164714 + * ata_piix: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1164714 + * fs: cachefiles: add support for large files in filesystem caching + - LP: #1164714 + * fuse: don't WARN when nlink is zero + - LP: #1164714 + * usb hid quirks for Masterkit MA901 usb radio + - LP: #1164714 + * pstore: Avoid deadlock in panic and emergency-restart path + - LP: #1164714 + * unbreak automounter support on 64-bit kernel with 32-bit userspace (v2) + - LP: #1164714 + * workqueue: consider work function when searching for busy work items + - LP: #1164714 + * zram: Fix deadlock bug in partial read/write + - LP: #1164714 + * md: protect against crash upon fsync on ro array + - LP: #1164714 + * md: fix two bugs when attempting to resize RAID0 array. + - LP: #1164714 + * md: raid0: fix error return from create_stripe_zones. + - LP: #1164714 + * ath9k: fix RSSI dummy marker value + - LP: #1164714 + * ath9k_htc: fix signal strength handling issues + - LP: #1164714 + * ath9k_hw: improve reset reliability after errors + - LP: #1164714 + * mwifiex: correct sleep delay counter + - LP: #1164714 + * libertas: fix crash for SD8688 + - LP: #1164714 + * hw_random: make buffer usable in scatterlist. + - LP: #1164714 + * drm/i915: Don't clobber crtc->fb when queue_flip fails + - LP: #1164714 + * ARM: 7657/1: head: fix swapper and idmap population with LPAE and + big-endian + - LP: #1164714 + * ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit + - LP: #1164714 + * userns: Stop oopsing in key_change_session_keyring + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Fix peak attribute handling + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Use detected chip ID to select supported + functionality + - LP: #1164714 + * hwmon: (sht15) Check return value of regulator_enable() + - LP: #1164714 + * random: fix locking dependency with the tasklist_lock + - LP: #1164714 + * ALSA: vmaster: Fix slave change notification + - LP: #1164714 + * ALSA: ice1712: Initialize card->private_data properly + - LP: #1164714 + * drm/radeon: add primary dac adj quirk for R200 board + - LP: #1164714 + * dmi_scan: fix missing check for _DMI_ signature in smbios_present() + - LP: #1164714 + * Btrfs: account for orphan inodes properly during cleanup + - LP: #1164714 + * HID: logitech-dj: do not directly call hid_output_raw_report() during + probe + - LP: #1164714 + * ftrace: Update the kconfig for DYNAMIC_FTRACE + - LP: #1164714 + * e1000e: fix pci-device enable-counter balance + - LP: #1164714 + * Fix memory leak in cpufreq stats. + - LP: #1164714 + * Btrfs: fix panic when recovering tree log + - LP: #1164714 + * xen/pciback: Don't disable a PCI device that is already disabled. + - LP: #1164714 + * vfs: fix pipe counter breakage + - LP: #1164714 + * Fix: compat_rw_copy_check_uvector() misuse in aio, readv, writev, and + security keys + - LP: #1164714 + * drm/i915: Increase the RC6p threshold. + - LP: #1164714 + * USB: Handle warm reset failure on empty port. + - LP: #1164714 + * USB: Don't use EHCI port sempahore for USB 3.0 hubs. + - LP: #1164714 + * USB: Prepare for refactoring by adding extra udev checks. + - LP: #1164714 + * USB: Rip out recursive call on warm port reset. + - LP: #1164714 + * USB: Fix connected device switch to Inactive state. + - LP: #1164714 + * Linux 3.5.7.8 + - LP: #1164714 + * USB: option: add Huawei E5331 + - LP: #1164714 + * USB: storage: fix Huawei mode switching regression + - LP: #1164714 + * USB: added support for Cinterion's products AH6 and PLS8 + - LP: #1164714 + * ALSA: seq: Fix missing error handling in snd_seq_timer_open() + - LP: #1164714 + * usb: cp210x new Vendor/Device IDs + - LP: #1164714 + * staging: vt6656: Fix oops on resume from suspend. + - LP: #1164714 + * qcaux: add Franklin U600 + - LP: #1164714 + * ext3: Fix format string issues + - LP: #1164714 + * tty/serial: Add support for Altera serial port + - LP: #1164714 + * Fix 4 port and add support for 8 port 'Unknown' PCI serial port cards + - LP: #1164714 + * serial: 8250_pci: add support for another kind of NetMos Technology PCI + 9835 Multi-I/O Controller + - LP: #1164714 + * tty: serial: fix typo "ARCH_S5P6450" + - LP: #1164714 + * usb: serial: Add Rigblaster Advantage to device table + - LP: #1164714 + * w1: fix oops when w1_search is called from netlink connector + - LP: #1164714 + * USB: cdc-wdm: fix buffer overflow + - LP: #1164714 + * hwmon: (lineage-pem) Add missing terminating entry for + pem_[input|fan]_attributes + - LP: #1164714 + * hwmon: (pmbus/ltc2978) Fix temperature reporting + - LP: #1164714 + * btrfs: use rcu_barrier() to wait for bdev puts at unmount + - LP: #1164714 + * hwmon: (sht15) Fix memory leak if regulator_enable() fails + - LP: #1164714 + * TTY: do not reset master's packet mode + - LP: #1164714 + * virtio: rng: disallow multiple device registrations, fixes crashes + - LP: #1164714 + * block: use i_size_write() in bd_set_size() + - LP: #1164714 + * loopdev: fix a deadlock + - LP: #1164714 + * loopdev: remove an user triggerable oops + - LP: #1164714 + * proc connector: reject unprivileged listener bumps + - LP: #1164714 + * s390: critical section cleanup vs. machine checks + - LP: #1164714 + * s390/mm: fix flush_tlb_kernel_range() + - LP: #1164714 + * powerpc: Fix STAB initialization + - LP: #1164714 + * powerpc: Fix cputable entry for 970MP rev 1.0 + - LP: #1164714 + * atmel_lcdfb: fix 16-bpp modes on older SOCs + - LP: #1164714 + * selinux: use GFP_ATOMIC under spin_lock + - LP: #1164714 + * perf,x86: fix kernel crash with PEBS/BTS after suspend/resume + - LP: #1164714 + * perf,x86: fix link failure for non-Intel configs + - LP: #1164714 + * perf,x86: fix wrmsr_on_cpu() warning on suspend/resume + - LP: #1164714 + * l2tp: Restore socket refcount when sendmsg succeeds + - LP: #1164714 + * rds: limit the size allocated by rds_message_alloc() + - LP: #1164714 + * net: ipv6: Don't purge default router if accept_ra=2 + - LP: #1164714 + * tcp: fix double-counted receiver RTT when leaving receiver fast path + - LP: #1164714 + * tun: add a missing nf_reset() in tun_net_xmit() + - LP: #1164714 + * macvlan: Set IFF_UNICAST_FLT flag to prevent unnecessary promisc mode. + - LP: #1164714 + * netlabel: correctly list all the static label mappings + - LP: #1164714 + * netlabel: fix build problems when CONFIG_IPV6=n + - LP: #1164714 + * bridging: fix rx_handlers return code + - LP: #1164714 + * ipv6: stop multicast forwarding to process interface scoped addresses + - LP: #1164714 + * rtnl: fix info leak on RTM_GETLINK request for VF devices + - LP: #1164714 + * dcbnl: fix various netlink info leaks + - LP: #1164714 + * 6lowpan: Fix endianness issue in is_addr_link_local(). + - LP: #1164714 + * ahci: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1164714 + * ahci: AHCI-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1164714 + * ahci: Add Device IDs for Intel Wellsburg PCH + - LP: #1164714 + * HID: add support for Sony RF receiver with USB product id 0x0374 + - LP: #1164714 + * HID: clean up quirk for Sony RF receivers + - LP: #1164714 + * rt2x00: error in configurations with mesh support disabled + - LP: #1164714 + * mwifiex: fix potential out-of-boundary access to ibss rate table + - LP: #1164714 + * rtlwifi: rtl8192cu: Fix schedule while atomic bug splat + - LP: #1164714 + * rtlwifi: rtl8192cu: Fix problem that prevents reassociation + - LP: #1164714 + * vhost/net: fix heads usage of ubuf_info + - LP: #1164714 + * udf: avoid info leak on export + - LP: #1164714 + * isofs: avoid info leak on export + - LP: #1164714 + * key: Fix resource leak + - LP: #1164714 + * ext4: fix the wrong number of the allocated blocks in + ext4_split_extent() + - LP: #1164714 + * jbd2: fix use after free in jbd2_journal_dirty_metadata() + - LP: #1164714 + * ext4: use atomic64_t for the per-flexbg free_clusters count + - LP: #1164714 + * tracing: Fix race in snapshot swapping + - LP: #1164714 + * cifs: delay super block destruction until all cifsFileInfo objects are + gone + - LP: #1164714 + * drm/i915: restrict kernel address leak in debugfs + - LP: #1164714 + * drm/i915: bounds check execbuffer relocation count + - LP: #1164714 + - CVE-2013-0913 + * tracing: Fix free of probe entry by calling call_rcu_sched() + - LP: #1164714 + * tracing: Keep overwrite in sync between regular and snapshot buffers + - LP: #1164714 + * USB: xhci: correctly enable interrupts + - LP: #1164714 + * usb-storage: add unusual_devs entry for Samsung YP-Z3 mp3 player + - LP: #1164714 + * drm/radeon: fix backend map setup on 1 RB trinity boards + - LP: #1164714 + * drm/radeon/benchmark: make sure bo blit copy exists before using it + - LP: #1164714 + * drm/radeon: add support for Richland APUs + - LP: #1164714 + * drm/radeon: add Richland pci ids + - LP: #1164714 + * ALSA: hda/cirrus - Fix the digital beep registration + - LP: #1164714 + * USB: xhci - fix bit definitions for IMAN register + - LP: #1164714 + * x86-64: Fix the failure case in copy_user_handle_tail() + - LP: #1164714 + * target/iscsi: Fix mutual CHAP auth on big-endian arches + - LP: #1164714 + * target/file: Bump FD_MAX_SECTORS to 2048 to handle 1M sized I/Os + - LP: #1164714 + * ALSA: snd-usb: mixer: propagate errors up the call chain + - LP: #1164714 + * ALSA: snd-usb: mixer: ignore -EINVAL in snd_usb_mixer_controls() + - LP: #1164714 + * ext4: fix data=journal fast mount/umount hang + - LP: #1164714 + * ALSA: hda - Fix typo in checking IEC958 emphasis bit + - LP: #1164714 + * usb: gadget: udc-core: fix a regression during gadget driver unbinding + - LP: #1164714 + * usb: gadget: ffs: fix enable multiple instances + - LP: #1164714 + * dm thin: fix discard corruption + - LP: #1164714 + * dm verity: avoid deadlock + - LP: #1164714 + * drm/mgag200: Bug fix: Modified pll algorithm for EH project + - LP: #1164714 + * cifs: ignore everything in SPNEGO blob after mechTypes + - LP: #1164714 + * USB: cdc-acm: fix device unregistration + - LP: #1164714 + * USB: garmin_gps: fix memory leak on disconnect + - LP: #1164714 + * USB: io_ti: fix get_icount for two port adapters + - LP: #1164714 + * USB: serial: fix interface refcounting + - LP: #1164714 + * i2c: tegra: check the clk_prepare_enable() return value + - LP: #1164714 + * mm/hugetlb: fix total hugetlbfs pages count when using memory + overcommit accouting + - LP: #1164714 + * drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR + - LP: #1164714 + * KMS: fix EDID detailed timing vsync parsing + - LP: #1164714 + * KMS: fix EDID detailed timing frame rate + - LP: #1164714 + * tg3: 5715 does not link up when autoneg off + - LP: #1164714 + * sunsu: Fix panic in case of nonexistent port at "console=ttySY" cmdline + option + - LP: #1164714 + * sfc: Disable VF queues during register self-test + - LP: #1164714 + * sfc: Really disable flow control while flushing + - LP: #1164714 + * sfc: Convert firmware subtypes to native byte order in + efx_mcdi_get_board_cfg() + - LP: #1164714 + * sfc: Add parentheses around use of bitfield macro arguments + - LP: #1164714 + * sfc: Fix MCDI structure field lookup + - LP: #1164714 + * sfc: Avoid generating over-length MC_CMD_FLUSH_RX_QUEUES request + - LP: #1164714 + * sfc: Work-around flush timeout when flushes have completed + - LP: #1164714 + * sfc: lock TX queues when calling netif_device_detach() + - LP: #1164714 + * sfc: Correctly initialise reset_method in siena_test_chip() + - LP: #1164714 + * sfc: Fix timekeeping in efx_mcdi_poll() + - LP: #1164714 + * sfc: Properly sync RX DMA buffer when it is not the last in the page + - LP: #1164714 + * sfc: Fix efx_rx_buf_offset() in the presence of swiotlb + - LP: #1164714 + * sfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0 + - LP: #1164714 + * sfc: Detach net device when stopping queues for reconfiguration + - LP: #1164714 + * sfc: Only use TX push if a single descriptor is to be written + - LP: #1164714 + * sfc: Disable soft interrupt handling during efx_device_detach_sync() + - LP: #1164714 + * sctp: don't break the loop while meeting the active_path so as to find + the matched transport + - LP: #1164714 + * netconsole: don't call __netpoll_cleanup() while atomic + - LP: #1164714 + * net/ipv4: Ensure that location of timestamp option is stored + - LP: #1164714 + * bonding: don't call update_speed_duplex() under spinlocks + - LP: #1164714 + * sctp: Use correct sideffect command in duplicate cookie handling + - LP: #1164714 + * ipv4: fix definition of FIB_TABLE_HASHSZ + - LP: #1164714 + * rtnetlink: Mask the rta_type when range checking + - LP: #1164714 + * tcp: fix skb_availroom() + - LP: #1164714 + * inet: limit length of fragment queue hash table bucket lists + - LP: #1164714 + * bnx2x: fix occasional statistics off-by-4GB error + - LP: #1164714 + * signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear + sa_restorer + - LP: #1164714 + * kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER + - LP: #1164714 + * vfs,proc: guarantee unique inodes in /proc + - LP: #1164714 + * Linux 3.5.7.9 + - LP: #1164714 + * KVM: x86: fix for buffer overflow in handling of MSR_KVM_SYSTEM_TIME + (CVE-2013-1796) + - LP: #1158254 + - CVE-2013-1796 + * KVM: Fix bounds checking in ioapic indirect register reads + (CVE-2013-1798) + - LP: #1158262 + - CVE-2013-1798 + * KVM: x86: Convert MSR_KVM_SYSTEM_TIME to use gfn_to_hva_cache functions + (CVE-2013-1797) + - LP: #1158258 + - CVE-2013-1797 + * drm/i915: "Flush Me Harder" required on gen6+ + - LP: #1140716 + * drm/i915: PIPE_CONTROL_TLB_INVALIDATE + - LP: #1140716 + * drm/i915: Apply post-sync write for pipe control invalidates + - LP: #1140716 + * drm/i915: TLB invalidation with MI_FLUSH_DW requires a post-sync op v3 + - LP: #1140716 + * drm/i915: PIPE_CONTROL TLB invalidate requires CS stall + - LP: #1140716 + + -- Steve Conklin Tue, 09 Apr 2013 11:43:02 -0500 + +linux (3.5.0-27.46) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1159991 + + [ Steve Conklin ] + + * Start New Release + + [ Upstream Kernel Changes ] + + * crypto: user - fix info leaks in report API + - LP: #1156790, #1156795, #1156799 + - CVE-2013-2546 + * brcmsmac: fix mismatch in number of custom regulatory rules + - LP: #1156769 + + [ Xiangliang Yu ] + + * SAUCE: PCI: define macro for marvell vendor ID + - LP: #1159863 + * SAUCE: PCI: fix system hang issue of Marvell SATA host controller + - LP: #1159863 + + -- Steve Conklin Mon, 25 Mar 2013 14:32:06 -0500 + +linux (3.5.0-27.45) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 15:26:20 -0500 + +linux (3.5.0-27.44) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 10:26:04 -0500 + +linux (3.5.0-27.43) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1156821 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS_PRECLAIM + - LP: #1105230 + + [ Brad Figg ] + + * Start new release + + [ Kamal Mostafa ] + + * SAUCE: alx: use github.com/qca/alx repo + - LP: #1154238 + + [ Luis Henriques ] + + * [Config] CONFIG_NFS_V4_1=y + - LP: #1111416 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #1154238 + + [ Upstream Kernel Changes ] + + * Revert "drm: Add EDID_QUIRK_FORCE_REDUCED_BLANKING for ASUS VW222S" + - LP: #1144961 + * genirq: Avoid deadlock in spurious handling + - LP: #1144961 + * KVM: s390: Handle hosts not supporting s390-virtio. + - LP: #1144961 + * v4l: Reset subdev v4l2_dev field to NULL if registration fails + - LP: #1144961 + * powerpc/eeh: Fix crash when adding a device in a slot with DDW + - LP: #1144961 + * pcmcia/vrc4171: Add missing spinlock init + - LP: #1144961 + * USB: DWC3: Generate interrupt on each TRB as default option + - LP: #1144961 + * usb: dwc3: gadget: fix skip LINK_TRB on ISOC + - LP: #1144961 + * usb: dwc3: gadget: req->queued must be forced to false in cleanup + - LP: #1144961 + * Purge existing TLB entries in set_pte_at and ptep_set_wrprotect + - LP: #1144961 + * ARM: PXA3xx: program the CSMSADRCFG register + - LP: #1144961 + * ab8500-chargalg: Only root should have write permission on sysfs file + - LP: #1144961 + * USB: option: add and update Alcatel modems + - LP: #1144961 + * uprobes/powerpc: Add dependency on single step emulation + - LP: #1144961 + * drivers/video: fsl-diu-fb: fix pixel formats for 24 and 16 bpp + - LP: #1144961 + * s390/kvm: Fix store status for ACRS/FPRS + - LP: #1144961 + * staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors + - LP: #1144961 + * ALSA: usb-audio: fix Roland A-PRO support + - LP: #1144961 + * x86-32, mm: Rip out x86_32 NUMA remapping code + - LP: #1144961 + * x86-32, mm: Remove reference to resume_map_numa_kva() + - LP: #1144961 + * x86-32, mm: Remove reference to alloc_remap() + - LP: #1144961 + * ALSA: hda - Release assigned pin/cvt at error path of hdmi_pcm_open() + - LP: #1144961 + * ab8500_btemp: Demote initcall sequence + - LP: #1144961 + * Driver core: treat unregistered bus_types as having no devices + - LP: #1144961 + * ALSA: aloop: Fix Oops while PM resume + - LP: #1144961 + * ASoC: wm2200: correct IN2L and IN3L digital mute + - LP: #1144961 + * tty: set_termios/set_termiox should not return -EINTR + - LP: #1144961 + * ARM: i.MX25: clk: parent per5_clk to AHB clock + - LP: #1144961 + * hrtimer: Prevent hrtimer_enqueue_reprogram race + - LP: #1144961 + * staging: comedi: check s->async for poll(), read() and write() + - LP: #1144961 + * ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1144961 + * timeconst.pl: Eliminate Perl warning + - LP: #1144961 + * p54usb: corrected USB ID for T-Com Sinus 154 data II + - LP: #1144961 + * rtlwifi: rtl8192cu: Fix NULL dereference BUG when using new_id + - LP: #1144961 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1144961 + * USB: storage: properly handle the endian issues of idProduct + - LP: #1144961 + * ALSA: rme32.c irq enabling after spin_lock_irq + - LP: #1144961 + * ALSA: ali5451: remove irq enabling in pointer callback + - LP: #1144961 + * ARM: 7643/1: sched: correct update_sched_clock() + - LP: #1144961 + * ALSA: hda - Workaround for silent output on Sony Vaio VGC-LN51JGB with + ALC889 + - LP: #1144961 + * x86: Hyper-V: register clocksource only if its advertised + - LP: #1144961 + * USB: option: add Yota / Megafon M100-1 4g modem + - LP: #1144961 + * USB: serial: fix null-pointer dereferences on disconnect + - LP: #1144961 + * idr: idr_for_each_entry() macro + - LP: #1144961 + * pps: Add pps_lookup_dev() function + - LP: #1144961 + * pps: Use pps_lookup_dev to reduce ldisc coupling + - LP: #1144961 + * pps: Fix a use-after free bug when unregistering a source. + - LP: #1144961 + * USB: option: add Huawei "ACM" devices using protocol = vendor + - LP: #1144961 + * ARM: samsung: fix assembly syntax for new gas + - LP: #1144961 + * USB: ehci-omap: Don't free gpios that we didn't request + - LP: #1144961 + * USB: ehci-omap: Fix autoloading of module + - LP: #1144961 + * USB: usb-storage: unusual_devs update for Super TOP SATA bridge + - LP: #1144961 + * perf tools: Fix build with bison 2.3 and older. + - LP: #1144961 + * serial: imx: Fix recursive locking bug + - LP: #1144961 + * posix-cpu-timers: Fix nanosleep task_struct leak + - LP: #1144961 + * drivercore: Fix ordering between deferred_probe and exiting initcalls + - LP: #1144961 + * NFSv4.1: Don't decode skipped layoutgets + - LP: #1144961 + * umount oops when remove blocklayoutdriver first + - LP: #1144961 + * HID: wiimote: fix nunchuck button parser + - LP: #1144961 + * cgroup: fix exit() vs rmdir() race + - LP: #1144961 + * cpuset: fix cpuset_print_task_mems_allowed() vs rename() race + - LP: #1144961 + * rtlwifi: usb: allocate URB control message setup_packet and data buffer + separately + - LP: #1144961 + * b43: Increase number of RX DMA slots + - LP: #1144961 + * futex: Revert "futex: Mark get_robust_list as deprecated" + - LP: #1144961 + * NLM: Ensure that we resend all pending blocking locks after a reclaim + - LP: #1144961 + * ALSA: hda - hdmi: ELD shouldn't be valid after unplug + - LP: #1144961 + * xen: close evtchn port if binding to irq fails + - LP: #1144961 + * xen: Send spinlock IPI to all waiters + - LP: #1011792, #1144961 + * ALSA: usb: Fix Processing Unit Descriptor parsers + - LP: #1144961 + * inotify: remove broken mask checks causing unmount to be EINVAL + - LP: #1144961 + * fs/block_dev.c: page cache wrongly left invalidated after + revalidate_disk() + - LP: #1144961 + * ocfs2: unlock super lock if lockres refresh failed + - LP: #1144961 + * drivers/video/backlight/adp88?0_bl.c: fix resume + - LP: #1144961 + * powerpc/kexec: Disable hard IRQ before kexec + - LP: #1144961 + * mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may + safely schedule + - LP: #1144961 + * mm: mmu_notifier: make the mmu_notifier srcu static + - LP: #1144961 + * mmu_notifier_unregister NULL Pointer deref and multiple ->release() + callouts + - LP: #1144961 + * mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to + discard all pages + - LP: #1144961 + * tmpfs: fix use-after-free of mempolicy object + - LP: #1144961 + * dca: check against empty dca_domains list before unregister provider + - LP: #1144961 + * ext4: return ENOMEM if sb_getblk() fails + - LP: #1144961 + * ext4: check bh in ext4_read_block_bitmap() + - LP: #1144961 + * quota: autoload the quota_v2 module for QFMT_VFS_V1 quota format + - LP: #1144961 + * ext4: fix possible use-after-free with AIO + - LP: #1144961 + * drm/i915: Fix CAGF for HSW + - LP: #1144961 + * ext4: fix race in ext4_mb_add_n_trim() + - LP: #1144961 + * UBIFS: fix use of freed ubifs_orphan objects + - LP: #1144961 + * UBIFS: fix double free of ubifs_orphan objects + - LP: #1144961 + * drm/radeon/dce6: fix display powergating + - LP: #1144961 + * vgacon/vt: clear buffer attributes when we load a 512 character font + (v2) + - LP: #1144961 + * fbcon: don't lose the console font across generic->chip driver switch + - LP: #1144961 + * drm/usb: bind driver to correct device + - LP: #1144961 + * drm/udl: make usage as a console safer + - LP: #1144961 + * drm/udl: disable fb_defio by default + - LP: #1144961 + * fb: rework locking to fix lock ordering on takeover + - LP: #1144961 + * fb: Yet another band-aid for fixing lockdep mess + - LP: #1144961 + * ext4: fix xattr block allocation/release with bigalloc + - LP: #1144961 + * target: Fix lookup of dynamic NodeACLs during cached demo-mode + operation + - LP: #1144961 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1144961 + * ftrace: Call ftrace cleanup module notifier after all other notifiers + - LP: #1144961 + * drm: don't add inferred modes for monitors that don't support them + - LP: #1144961 + * drm/i915: disable shared panel fitter for pipe + - LP: #1144961 + * drm: Fill depth/bits_per_pixel for C8 format + - LP: #1144961 + * drm: Use C8 instead of RGB332 when determining the format from + depth/bpp + - LP: #1144961 + * drm/i915: add missing \n to UTS_RELEASE in the error_state + - LP: #1144961 + * drm/i915: Set i9xx sdvo clock limits according to specifications + - LP: #1144961 + * drm/i915: inverted brightness quirk for Acer Aspire 4736Z + - LP: #1144961 + * intel/iommu: force writebuffer-flush quirk on Gen 4 Chipsets + - LP: #1144961 + * drm/radeon: remove overzealous warning in hdmi handling + - LP: #1144961 + * x86, efi: Make "noefi" really disable EFI runtime serivces + - LP: #1144961 + * posix-timer: Don't call idr_find() with out-of-range ID + - LP: #1144961 + * ext4: fix free clusters calculation in bigalloc filesystem + - LP: #1144961 + * fs: Fix possible use-after-free with AIO + - LP: #1144961 + * mmc: sdhci-esdhc-imx: fix host version read + - LP: #1144961 + * b43: Fix lockdep splat on module unload + - LP: #1144961 + * ocfs2: fix possible use-after-free with AIO + - LP: #1144961 + * x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS. + - LP: #1144961 + * igb: Remove artificial restriction on RQDPC stat reading + - LP: #1144961 + * ptrace/x86: Introduce set_task_blockstep() helper + - LP: #1144961 + * ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic + - LP: #1144961 + * sunvdc: Fix off-by-one in generic_request(). + - LP: #1144961 + * sparc64: Fix gfp_flags setting in tsb_grow(). + - LP: #1144961 + * bridge: set priority of STP packets + - LP: #1144961 + * xen-netback: correctly return errors from netbk_count_requests() + - LP: #1144961 + * xen-netback: cancel the credit timer when taking the vif down + - LP: #1144961 + * net: fix a compile error when SOCK_REFCNT_DEBUG is enabled + - LP: #1144961 + * ipv4: fix a bug in ping_err(). + - LP: #1144961 + * ipv6: use a stronger hash for tcp + - LP: #1144961 + * ARM: 7635/1: versatile: fix the PCI IRQ regression + - LP: #1144961 + * staging: vt6656: Fix URB submitted while active warning. + - LP: #1144961 + * vlan: adjust vlan_set_encap_proto() for its callers + - LP: #1144961 + * gpio/ich: Add missing spinlock init + - LP: #1144961 + * staging: comedi: ni_labpc: set up command4 register *after* command3 + - LP: #1144961 + * staging: comedi: ni_labpc: correct differential channel sequence for AI + commands + - LP: #1144961 + * tty: Prevent deadlock in n_gsm driver + - LP: #1144961 + * Linux 3.5.7.7 + - LP: #1144961 + * i915_hsw: don't send DP "idle" pattern before "normal" on HSW PORT_A + - LP: #1138700 + * mfd: rtsx: Optimize card detect flow + - LP: #1148892 + * mfd: rtsx: Fix issue that booting OS with SD card inserted + - LP: #1148892 + * drm/radeon: add new AMD ACPI header and update relevant code (v2) + - LP: #1110219 + * drm/radeon: add a license header to radeon_apci.c + - LP: #1110219 + * drm/radeon: track whether the GPU controls the backlight (v2) + - LP: #1110219 + * drm/radeon: rework legacy backlight control + - LP: #1110219 + * drm/radeon: add backlight control for atom devices (v2) + - LP: #1110219 + * drm/radeon: refactor radeon_atif_call + - LP: #1110219 + * drm/radeon: implement radeon_atif_verify_interface + - LP: #1110219 + * drm/radeon: implement wrapper for GET_SYSTEM_PARAMS + - LP: #1110219 + * drm/radeon: implement handler for ACPI event + - LP: #1110219 + * drm/radeon: re-organize the acpi notifier callback + - LP: #1110219 + * ACPI video: allow events handlers to veto the keypress + - LP: #1110219 + * drm/radeon: block the keypress on ATIF events + - LP: #1110219 + * keys: fix race with concurrent install_user_keyrings() + - LP: #1152788 + - CVE-2013-1792 + * mfd: rtsx: Add clock divider hook + - LP: #1153618 + * mfd: rtsx: Implement driving adjustment to device-dependent callbacks + - LP: #1153618 + * mfd: rtsx: Support RTS5227 + - LP: #1153618 + * mmc: rtsx: remove driving adjustment + - LP: #1153618 + * x86/apic: Remove noisy zero-mask warning from + default_send_IPI_mask_logical() + - LP: #1100202 + * signal: always clear sa_restorer on execve + - LP: #1153813 + - CVE-2013-0914 + + -- Steve Conklin Mon, 18 Mar 2013 13:39:54 -0500 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.40) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1133429 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094 + + [ Ian Campbell ] + + * SAUCE: xen/netback: shutdown the ring if it contains garbage. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: netback: correct netbk_tx_err to handle wrap around. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: xen/netback: don't leak pages on failure in + xen_netbk_tx_check_gop. + - LP: #1117331 + - CVE-2013-0217 + * SAUCE: xen/netback: free already allocated memory on failure in + xen_netbk_get_requests + - LP: #1117331 + - CVE-2013-0217 + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + * SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access + failure once + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * Revert "USB: Handle warm reset failure on empty port." + - LP: #1131944 + * xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS + guests. + - LP: #1102374 + - CVE-2013-0190 + * virtio-blk: Don't free ida when disk is in use + - LP: #1119885 + * ioat: Fix DMA memory sync direction correct flag + - LP: #1119885 + * PCI: pciehp: Use per-slot workqueues to avoid deadlock + - LP: #1119885 + * PCI/AER: pci_get_domain_bus_and_slot() call missing required + pci_dev_put() + - LP: #1119885 + * xen/grant-table: correctly initialize grant table version 1 + - LP: #1119885 + * serial:ifx6x60:Delete SPI timer when shut down port + - LP: #1119885 + * tty: 8250_dw: Fix inverted arguments to serial_out in IRQ handler + - LP: #1119885 + * drm/i915: Invalidate the relocation presumed_offsets along the slow + path + - LP: #1119885 + * ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone + - LP: #1119885 + * staging: vt6656: Fix inconsistent structure packing + - LP: #1119885 + * 8250/16?50: Add support for Broadcom TruManage redirected serial port + - LP: #1119885 + * KVM: PPC: Emulate dcbf + - LP: #1119885 + * staging: wlan-ng: Fix clamping of returned SSID length + - LP: #1119885 + * USB: option: blacklist network interface on ONDA MT8205 4G LTE + - LP: #1119885 + * USB: option: add TP-LINK HSUPA Modem MA180 + - LP: #1119885 + * ALSA: hda - Fix mute led for another HP machine + - LP: #1096789, #1119885 + * usb: dwc3: gadget: fix ep->maxburst for ep0 + - LP: #1119885 + * ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled + - LP: #1119885 + * ACPI / processor: Get power info before updating the C-states + - LP: #1119885 + * ARM: DMA: Fix struct page iterator in dma_cache_maint() to work with + sparsemem + - LP: #1119885 + * evm: checking if removexattr is not a NULL + - LP: #1119885 + * ALSA: hda - Add Conexant CX20755/20756/20757 codec IDs + - LP: #1119885 + * ftrace: Be first to run code modification on modules + - LP: #1119885 + * i2c: mxs: Fix type of error code + - LP: #1119885 + * USB: UHCI: fix IRQ race during initialization + - LP: #1119885 + * async: fix __lowest_in_progress() + - LP: #1119885 + * fs/cifs/cifs_dfs_ref.c: fix potential memory leakage + - LP: #1119885 + * ARM: at91: rm9200: remake the BGA as default version + - LP: #1119885 + * Bluetooth: Fix sending HCI commands after reset + - LP: #1119885 + * Bluetooth: Fix incorrect strncpy() in hidp_setup_hid() + - LP: #1119885 + * ath9k_htc: Fix memory leak + - LP: #1119885 + * ath9k: do not link receive buffers during flush + - LP: #1119885 + * ath9k: add a better fix for the rx tasklet vs rx flush race + - LP: #1119885 + * ath9k: fix rx flush handling + - LP: #1119885 + * brcmsmac: increase timer reference count for new timers only + - LP: #1119885 + * ath9k: remove sc->rx.rxbuflock to fix a deadlock + - LP: #1119885 + * ath9k: disable the tasklet before taking the PCU lock + - LP: #1119885 + * ASoC: wm2200: correct mixer values and text + - LP: #1119885 + * mac80211: fix FT roaming + - LP: #1119885 + * mac80211: synchronize scan off/on-channel and PS states + - LP: #1119885 + * efi, x86: Pass a proper identity mapping in efi_call_phys_prelog + - LP: #1119885 + * iwlegacy: fix IBSS cleanup + - LP: #1119885 + * ath9k_hw: fix calibration issues on chainmask that don't include chain + 0 + - LP: #1119885 + * ath9k_hw: fix chain swap setting when setting rx chainmask to 5 + - LP: #1119885 + * mwifiex: fix typo in PCIe adapter NULL check + - LP: #1119885 + * drm/i915: Disable AsyncFlip performance optimisations + - LP: #1119885 + * drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for scanline + waits + - LP: #1119885 + * iommu/intel: disable DMAR for g4x integrated gfx + - LP: #1119885 + * drm/i915: dump UTS_RELEASE into the error_state + - LP: #1119885 + * ALSA: hda - Add a fixup for Packard-Bell desktop with ALC880 + - LP: #1119885 + * drm/radeon: fix cursor corruption on DCE6 and newer + - LP: #1119885 + * radeon_display: Use pointer return error codes + - LP: #1119885 + * drm/radeon: fix error path in kpage allocation + - LP: #1119885 + * drm/radeon: fix a rare case of double kfree + - LP: #1119885 + * x86/msr: Add capabilities check + - LP: #1119885 + * x86, efi: Set runtime_version to the EFI spec revision + - LP: #1119885 + * can: c_can: fix invalid error codes + - LP: #1119885 + * can: ti_hecc: fix invalid error codes + - LP: #1119885 + * can: pch_can: fix invalid error codes + - LP: #1119885 + * ALSA: usb-audio: fix invalid length check for RME and other UAC 2 + devices + - LP: #1119885 + * smp: Fix SMP function call empty cpu mask race + - LP: #1119885 + * IOMMU, AMD Family15h Model10-1Fh erratum 746 Workaround + - LP: #1119885 + * xfs: Fix possible use-after-free with AIO + - LP: #1119885 + * powerpc/book3e: Disable interrupt after preempt_schedule_irq + - LP: #1119885 + * ALSA: hda - Fix non-snoop page handling + - LP: #1119885 + * EDAC: Test correct variable in ->store function + - LP: #1119885 + * NFS: Fix error reporting in nfs_xdev_mount + - LP: #1119885 + * NFS: Don't silently fail setattr() requests on mountpoints + - LP: #1119885 + * NFSv4.1: Handle NFS4ERR_DELAY when resetting the NFSv4.1 session + - LP: #1119885 + * drivers/firmware/dmi_scan.c: check dmi version when get system uuid + - LP: #1119885 + * drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists + - LP: #1119885 + * ahci: Add support for Enmotus Bobcat device. + - LP: #1119885 + * ahci: Fix lack of command retry after a success error handler. + - LP: #1119885 + * x86/Sandy Bridge: mark arrays in __init functions as __initconst + - LP: #1119885 + * x86/Sandy Bridge: Sandy Bridge workaround depends on CONFIG_PCI + - LP: #1119885 + * drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled + - LP: #1119885 + * ahci: Add identifiers for ASM106x devices + - LP: #1119885 + * module: fix symbol waiting when module fails before init + - LP: #1119885 + * module: wait when loading a module which is currently initializing. + - LP: #1119885 + * module: add new state MODULE_STATE_UNFORMED. + - LP: #1119885 + * module: put modules in list much earlier. + - LP: #1119885 + * module: fix missing module_mutex unlock + - LP: #1119885 + * intel_idle: Don't register CPU notifier if we are not running. + - LP: #1119885 + * xfs: fix periodic log flushing + - LP: #1119885 + * gspca_kinect: add Kinect for Windows USB id + - LP: #1119885 + * ARM: 7628/1: head.S: map one extra section for the ATAG/DTB area + - LP: #1119885 + * Linux 3.5.7.5 + - LP: #1119885 + * net: fix infinite loop in __skb_recv_datagram() + - LP: #1129184 + - CVE-2013-0290 + * vhost: fix length for cross region descriptor + - LP: #1130951 + - CVE-2013-0311 + * xhci: Fix isoc TD encoding. + - LP: #1131944 + * xhci: Fix TD size for isochronous URBs. + - LP: #1131944 + * drivers: xhci: fix incorrect bit test + - LP: #1131944 + * USB: XHCI: fix memory leak of URB-private data + - LP: #1131944 + * usb: Prevent dead ports when xhci is not enabled + - LP: #1131944 + * usb: Using correct way to clear usb3.0 device's remote wakeup feature. + - LP: #1131944 + * sched/rt: Use root_domain of rt_rq not current processor + - LP: #1131944 + * USB: EHCI: fix timer bug affecting port resume + - LP: #1131944 + * regulator: max8998: fix incorrect min_uV value for ldo10 + - LP: #1131944 + * drm/radeon: fix MC blackout on evergreen+ + - LP: #1131944 + * drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN + - LP: #1131944 + * rtlwifi: Fix the usage of the wrong variable in usb.c + - LP: #1131944 + * e1000e: enable ECC on I217/I218 to catch packet buffer memory errors + - LP: #1131944 + * drm/radeon: add quirk for RV100 board + - LP: #1131944 + * USB: qcserial: add Telit Gobi QDL device + - LP: #1131944 + * USB: option: add support for Telit LE920 + - LP: #1131944 + * drm/radeon: fix backend map setup on 1 RB sumo boards + - LP: #1131944 + * drm/radeon: protect against div by 0 in backend setup + - LP: #1131944 + * mwifiex: fix incomplete scan in case of IE parsing error + - LP: #1131944 + * USB: EHCI: fix bug in scheduling periodic split transfers + - LP: #1131944 + * x86-64: Replace left over sti/cli in ia32 audit exit code + - LP: #1131944 + * drm/radeon/evergreen+: wait for the MC to settle after MC blackout + - LP: #1131944 + * Bluetooth: Fix handling of unexpected SMP PDUs + - LP: #1131944 + * drm/radeon: Calling object_unrefer() when creating fb failure + - LP: #1131944 + * drm/radeon: prevent crash in the ring space allocation + - LP: #1131944 + * target: Fix divide by zero bug in fabric_max_sectors for unconfigured + devices + - LP: #1131944 + * digsig: Fix memory leakage in digsig_verify_rsa() + - LP: #1131944 + * can: c_can: Set reserved bit in IFx_MASK2 to 1 on write + - LP: #1131944 + * USB: ftdi_sio: add PID/VID entries for ELV WS 300 PC II + - LP: #1131944 + * USB: option: add Changhong CH690 + - LP: #1131944 + * USB: ftdi_sio: add Zolix FTDI PID + - LP: #1131944 + * USB: storage: Define a new macro for USB storage match rules + - LP: #1131944 + * USB: storage: optimize to match the Huawei USB storage devices and + support new switch command + - LP: #1131944 + * rtlwifi: Fix scheduling while atomic bug + - LP: #1131944 + * nilfs2: fix fix very long mount time issue + - LP: #1131944 + * mm/hugetlb: set PTE as huge in hugetlb_change_protection and + remove_migration_pte + - LP: #1131944 + * drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq + handler + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: fix the missing operation on enable + - LP: #1131944 + * virtio_console: Don't access uninitialized data. + - LP: #1131944 + * HID: usbhid: quirk for Formosa IR receiver + - LP: #1131944 + * kernel/resource.c: fix stack overflow in __reserve_region_with_split() + - LP: #1131944 + * net: prevent setting ttl=0 via IP_TTL + - LP: #1131944 + * ipv6: fix the noflags test in addrconf_get_prefix_route + - LP: #1131944 + * MAINTAINERS: Stephen Hemminger email change + - LP: #1131944 + * ipv6: fix header length calculation in ip6_append_data() + - LP: #1131944 + * macvlan: fix macvlan_get_size() + - LP: #1131944 + * net: calxedaxgmac: throw away overrun frames + - LP: #1131944 + * net/mlx4_en: Fix bridged vSwitch configuration for non SRIOV mode + - LP: #1131944 + * net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware + defaults + - LP: #1131944 + * isdn/gigaset: fix zero size border case in debug dump + - LP: #1131944 + * netxen: fix off by one bug in netxen_release_tx_buffer() + - LP: #1131944 + * r8169: remove the obsolete and incorrect AMD workaround + - LP: #1131944 + * net: loopback: fix a dst refcounting issue + - LP: #1131944 + * pktgen: correctly handle failures when adding a device + - LP: #1131944 + * ipv6: do not create neighbor entries for local delivery + - LP: #1131944 + * via-rhine: Fix bugs in NAPI support. + - LP: #1131944 + * packet: fix leakage of tx_ring memory + - LP: #1131944 + * atm/iphase: rename fregt_t -> ffreg_t + - LP: #1131944 + * sctp: refactor sctp_outq_teardown to insure proper re-initalization + - LP: #1131944 + * net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree + - LP: #1131944 + * net: sctp: sctp_endpoint_free: zero out secret key data + - LP: #1131944 + * tcp: frto should not set snd_cwnd to 0 + - LP: #1131944 + * tcp: fix for zero packets_in_flight was too broad + - LP: #1131944 + * tg3: Avoid null pointer dereference in tg3_interrupt in netconsole mode + - LP: #1131944 + * tg3: Fix crc errors on jumbo frame receive + - LP: #1131944 + * s390/timer: avoid overflow when programming clock comparator + - LP: #1131944 + * x86: Do not leak kernel page mapping locations + - LP: #1131944 + * x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server + systems + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: restore ST variant functionality + - LP: #1131944 + * mm: don't overwrite mm->def_flags in do_mlockall() + - LP: #1131944 + * x86/mm: Check if PUD is large when validating a kernel address + - LP: #1131944 + * PCI/PM: Clean up PME state when removing a device + - LP: #1131944 + * efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot + parameter + - LP: #1131944 + * mm: fix pageblock bitmap allocation + - LP: #1131944 + * Linux 3.5.7.6 + - LP: #1131944 + + -- Brad Figg Tue, 26 Feb 2013 08:44:21 -0800 + +linux (3.5.0-25.39) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1132885 + + [ Upstream Kernel Changes ] + + * sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + + -- Brad Figg Mon, 25 Feb 2013 09:04:12 -0800 + +linux (3.5.0-25.38) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1129472 + + [ Upstream Kernel Changes ] + + * ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() + - LP: #1119885, #1129192 + - CVE-2013-0871 + * ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL + - LP: #1119885, #1129192 + - CVE-2013-0871 + * wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED + task + - LP: #1119885, #1129192 + - CVE-2013-0871 + + -- Luis Henriques Mon, 18 Feb 2013 21:57:04 +0000 + +linux (3.5.0-24.37) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1117492 + + [ Tim Gardner ] + + * [Config] CONFIG_ALX=m for x86 only + - LP: #927782 + + -- Luis Henriques Wed, 06 Feb 2013 17:29:44 +0000 + +linux (3.5.0-24.36) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1116501 + + [ Adam Lee ] + + * [Config] Enable RTSX_PCI modules + - LP: #1057089 + + [ Andy Whitcroft ] + + * [Config] enable various HVC consoles + - LP: #1102206 + + [ Brad Figg ] + + * Revert "SAUCE: samsung-laptop: disable in UEFI mode" + - LP: #1111689 + + [ Herton Ronaldo Krzesinski ] + + * [Config] updateconfigs for 3.5.7.3 stable update + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + - LP: #927782 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #927782 + + [ Seth Forshee ] + + * SAUCE: samsung-laptop: Add quirk for broken acpi_video backlight on + N250P + - LP: #1086921 + + [ Stefan Bader ] + + * (config) Move 9p modules into generic package + - LP: #1107658 + + [ Tim Gardner ] + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + - LP: #927782 + * [Config] Add alx to d-i nic-modules + - LP: #927782 + + [ Upstream Kernel Changes ] + + * Revert "8139cp: revert "set ring address before enabling receiver"" + - LP: #1102417 + * Revert "ath9k_hw: Update AR9003 high_power tx gain table" + - LP: #1102417 + * Revert "drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13" + - LP: #1102417 + * Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat + codecs" + - LP: #1106966, #886975 + * be2net: don't call vid_config() when there's no vlan config + - LP: #1083088 + * be2net: cleanup be_vid_config() + - LP: #1083088 + * be2net: do not modify PCI MaxReadReq size + - LP: #1083088 + * be2net: fix reporting number of actual rx queues + - LP: #1083088 + * be2net: do not use SCRATCHPAD register + - LP: #1083088 + * be2net: Fix driver load for VFs for Lancer + - LP: #1083088 + * be2net: Explicitly clear the reserved field in the Tx Descriptor + - LP: #1083088 + * be2net: Regression bug wherein VFs creation broken for multiple cards. + - LP: #1083088 + * be2net: Fix to trim skb for padded vlan packets to workaround an ASIC + Bug + - LP: #1083088 + * be2net: Fix Endian + - LP: #1083088 + * be2net: Fix error while toggling autoneg of pause parameters + - LP: #1083088 + * be2net : Fix die temperature stat for Lancer + - LP: #1083088 + * be2net: Fix initialization sequence for Lancer + - LP: #1083088 + * be2net: Activate new FW after FW download for Lancer + - LP: #1083088 + * be2net: Fix cleanup path when EQ creation fails + - LP: #1083088 + * be2net: Enable RSS UDP hashing for Lancer and Skyhawk + - LP: #1083088 + * be2net: dont pull too much data in skb linear part + - LP: #1083088 + * be2net: Fix VF driver load for Lancer + - LP: #1083088 + * be2net: Ignore physical link async event for Lancer + - LP: #1083088 + * be2net: Fix to parse RSS hash from Receive completions correctly. + - LP: #1083088 + * netpoll: revert 6bdb7fe3104 and fix be_poll() instead + - LP: #1083088 + * be2net: create RSS rings even in multi-channel configs + - LP: #1083088 + * be2net: fix max VFs reported by HW + - LP: #1083088 + * be2net: fix FW default for VF tx-rate + - LP: #1083088 + * be2net: fixup malloc/free of adapter->pmac_id + - LP: #1083088 + * be2net: fix wrong handling of be_setup() failure in be_probe() + - LP: #1083088 + * be2net: cleanup code related to be_link_status_query() + - LP: #1083088 + * be2net: fix vfs enumeration + - LP: #1083088 + * be2net: Remove code that stops further access to BE NIC based on UE + bits + - LP: #1083088 + * mtip32xx: Add support for new devices + - LP: #1099913 + * mtip32xx: Handle NCQ commands during the security locked state + - LP: #1099913 + * mtip32xx: Increase timeout for standby command + - LP: #1099913 + * mtip32xx: Proper reporting of write protect status on big-endian + - LP: #1099913 + * mtip32xx: Change printk to pr_xxxx + - LP: #1099913 + * mtip32xx: Remove dead code + - LP: #1099913 + * mtip32xx: fix user_buffer check in exec_drive_command + - LP: #1099913 + * mtip32xx:Added appropriate timeout value for secure erase + - LP: #1099913 + * mtip32xx: fix potential crash on SEC_ERASE_UNIT + - LP: #1099913 + * mtip32xx: Fix to make lba address correct in big-endian systems + - LP: #1099913 + * mtip32xx: Fix incorrect mask used for erase mode + - LP: #1099913 + * mtip32xx: fix shift larger than type warning + - LP: #1099913 + * mtip32xx: fix potential NULL pointer dereference in + mtip_timeout_function() + - LP: #1099913 + * mtip32xx: Fix padding issue + - LP: #1099913 + * KVM: PPC: e500: fix allocation size error on g2h_tlb1_map + - LP: #1102417 + * s390/kvm: dont announce RRBM support + - LP: #1102417 + * cgroup: cgroup_subsys->fork() should be called after the task is added + to css_set + - LP: #1102417 + * freezer: add missing mb's to freezer_count() and freezer_should_skip() + - LP: #1102417 + * ath9k_hw: Enable hw PLL power save for AR9462 + - LP: #1102417 + * usb: gadget: tcm_usb_gadget: NULL terminate the FS descriptor list + - LP: #1102417 + * usb: gadget: network: fix bind() error path + - LP: #1102417 + * usb: gadget: midi: free hs descriptors + - LP: #1102417 + * usb: gadget: phonet: free requests in pn_bind()'s error path + - LP: #1102417 + * usb: gadget: uvc: fix error path in uvc_function_bind() + - LP: #1102417 + * x86: hpet: Fix masking of MSI interrupts + - LP: #1102417 + * usb: musb: cppi_dma: export cppi_interrupt() + - LP: #1102417 + * iscsi-target: Fix bug in handling of ExpStatSN ACK during u32 + wrap-around + - LP: #1102417 + * iscsi-target: Always send a response before terminating iSCSI + connection + - LP: #1102417 + * SUNRPC: Fix validity issues with rpc_pipefs sb->s_fs_info + - LP: #1102417 + * ext4: fix memory leak in ext4_xattr_set_acl()'s error path + - LP: #1102417 + * ARM: mm: use pteval_t to represent page protection values + - LP: #1102417 + * perf test: fix a build error on builtin-test + - LP: #1102417 + * USB: fix endpoint-disabling for failed config changes + - LP: #1102417 + * genirq: Always force thread affinity + - LP: #1102417 + * xhci: Fix conditional check in bandwidth calculation. + - LP: #1102417 + * xHCI: Fix TD Size calculation on 1.0 hosts. + - LP: #1102417 + * xhci: fix null-pointer dereference when destroying half-built segment + rings + - LP: #1102417 + * xhci: Extend Fresco Logic MSI quirk. + - LP: #1102417 + * usb: host: xhci: Stricter conditional for Z1 system models for + Compliance Mode Patch + - LP: #1102417 + * Staging: bcm: Add two products and remove an existing product. + - LP: #1102417 + * rcu: Fix batch-limit size problem + - LP: #1102417 + * ext4: init pagevec in ext4_da_block_invalidatepages + - LP: #1102417 + * powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build + - LP: #1102417 + * ftrace: Clear bits properly in reset_iter_read() + - LP: #1102417 + * cdc-acm: implement TIOCSSERIAL to avoid blocking close(2) + - LP: #1102417 + * ACPI / battery: Correct battery capacity values on Thinkpads + - LP: #1102417 + * cgroup: remove incorrect dget/dput() pair in cgroup_create_dir() + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [04ca, 2003] + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [0b05, 17b5] + - LP: #1102417 + * regulator: wm831x: Set the new rather than old value for DVS VSEL + - LP: #1102417 + * drm: fix documentation for drm_crtc_set_mode() + - LP: #1102417 + * mfd: Only unregister platform devices allocated by the mfd core + - LP: #1102417 + * NFS: Add sequence_priviliged_ops for nfs4_proc_sequence() + - LP: #1102417 + * drm/i915: make the panel fitter work on pipes B and C on IVB + - LP: #1102417 + * USB: add new zte 3g-dongle's pid to option.c + - LP: #1102417 + * ACPI / PM: Add Sony Vaio VPCEB1S1E to nonvs blacklist. + - LP: #1102417 + * mfd: wm8994: Add support for WM1811 rev E + - LP: #1102417 + * 8139cp: set ring address after enabling C+ mode + - LP: #1102417 + * USB: OHCI: workaround for hardware bug: retired TDs not added to the + Done Queue + - LP: #1102417 + * USB: option: blacklist network interface on Huawei E173 + - LP: #1102417 + * USB: cp210x: add Virtenio Preon32 device id + - LP: #1102417 + * usb: ftdi_sio: fixup BeagleBone A5+ quirk + - LP: #1102417 + * USB: ftdi_sio: Add support for Newport AGILIS motor drivers + - LP: #1102417 + * qla2xxx: Look up LUN for abort requests + - LP: #1102417 + * iscsit: use GFP_ATOMIC under spin lock + - LP: #1102417 + * ASoC: wm8994: Use the same DCS codes for all WM1811 variants + - LP: #1102417 + * sata_promise: fix hardreset lockdep error + - LP: #1102417 + * xhci: Add Lynx Point LP to list of Intel switchable hosts + - LP: #1102417 + * USB: mark uas driver as BROKEN + - LP: #1102417 + * can: Do not call dev_put if restart timer is running upon close + - LP: #1102417 + * mlx4_core: Fix potential deadlock in mlx4_eq_int() + - LP: #1102417 + * xfs: fix stray dquot unlock when reclaiming dquots + - LP: #1102417 + * KVM: Fix user memslot overlap check + - LP: #1102417 + * ext4: fix possible use after free with metadata csum + - LP: #1102417 + * prevent stack buffer overflow in host_reset + - LP: #1102417 + * mvsas: fix undefined bit shift + - LP: #1102417 + * qla2xxx: Test and clear FCPORT_UPDATE_NEEDED atomically. + - LP: #1102417 + * ACPI: do acpisleep dmi check when CONFIG_ACPI_SLEEP is set + - LP: #1102417 + * ACPI / PNP: Do not crash due to stale pointer use during system resume + - LP: #1102417 + * ring-buffer: Fix NULL pointer if rb_set_head_page() fails + - LP: #1102417 + * firewire: net: Fix handling of fragmented multicast/broadcast packets. + - LP: #1102417 + * HID: Add Apple wireless keyboard 2011 ANSI to special driver list + - LP: #1102417 + * libata: set dma_mode to 0xff in reset + - LP: #1102417 + * s390/cio: fix pgid reserved check + - LP: #1102417 + * Bluetooth: Add missing lock nesting notation + - LP: #1102417 + * Bluetooth: cancel power_on work when unregistering the device + - LP: #1102417 + * Input: wacom - fix touch support for Bamboo Fun CTH-461 + - LP: #1102417 + * ALSA: usb-audio: Avoid autopm calls after disconnection + - LP: #1102417 + * ALSA: usb-audio: Fix missing autopm for MIDI input + - LP: #1102417 + * ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 + - LP: #1102417 + * mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL + - LP: #1102417 + * Revert: "rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe + fails" + - LP: #1102417 + * x86,AMD: Power driver support for AMD's family 16h processors + - LP: #1102417 + * target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping + - LP: #1102417 + * drm/i915: Close race between processing unpin task and queueing the + flip + - LP: #1102417 + * cgroup_rm_file: don't delete the uncreated files + - LP: #1102417 + * pnpacpi: fix incorrect TEST_ALPHA() test + - LP: #1102417 + * drm/radeon: stop page faults from hanging the system (v2) + - LP: #1102417 + * drm/radeon/dce32+: use fractional fb dividers for high clocks + - LP: #1102417 + * drm/radeon: fix eDP clk and lane setup for scaled modes + - LP: #1102417 + * regmap: debugfs: Avoid overflows for very small reads + - LP: #1102417 + * b43legacy: Fix firmware loading when driver is built into the kernel + - LP: #1102417 + * ath9k: ar9003: fix OTP register offsets for AR9340 + - LP: #1102417 + * bcma: mips: fix clearing device IRQ + - LP: #1102417 + * ath9k_hw: Fix signal strength / channel noise reporting + - LP: #1102417 + * ath5k: fix tx path skb leaks + - LP: #1102417 + * b43: fix tx path skb leaks + - LP: #1102417 + * drm/i915: drop buggy write to FDI_RX_CHICKEN register + - LP: #1102417 + * drm/i915: disable cpt phase pointer fdi rx workaround + - LP: #1102417 + * iwlwifi: silently ignore fw flaws in Tx path + - LP: #1102417 + * iwlwifi: don't handle masked interrupt + - LP: #1102417 + * mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls + - LP: #1102417 + * nfs: don't extend writes to cover entire page if pagecache is invalid + - LP: #1102417 + * solos-pci: fix double-free of TX skb in DMA mode + - LP: #1102417 + * ALSA: hda - Add stereo-dmic fixup for Acer Aspire One 522 + - LP: #1102417 + * nfs: don't zero out the rest of the page if we hit the EOF on a DIO + READ + - LP: #1102417 + * drm/radeon: fix amd afusion gpu setup aka sumo v2 + - LP: #1102417 + * NFS: avoid NULL dereference in nfs_destroy_server + - LP: #1102417 + * sbp-target: fix error path in sbp_make_tpg() + - LP: #1102417 + * target/tcm_fc: fix the lockdep warning due to inconsistent lock state + - LP: #1102417 + * MIPS: Fix poweroff failure when HOTPLUG_CPU configured. + - LP: #1102417 + * fix Null pointer dereference on disk error + - LP: #1102417 + * NFS: Fix calls to drop_nlink() + - LP: #1102417 + * Input: walkera0701 - fix crash on startup + - LP: #1102417 + * SUNRPC: continue run over clients list on PipeFS event instead of break + - LP: #1102417 + * proc: pid/status: show all supplementary groups + - LP: #1102417 + * CRIS: fix I/O macros + - LP: #1102417 + * virtio: force vring descriptors to be allocated from lowmem + - LP: #1102417 + * nfs: fix wrong object type in lockowner_slab + - LP: #1102417 + * jffs2: hold erase_completion_lock on exit + - LP: #1102417 + * nfsd: fix v4 reply caching + - LP: #1102417 + * mtd cs553x_nand: Initialise ecc.strength before nand_scan() + - LP: #1102417 + * kbuild: Do not remove vmlinux when cleaning external module + - LP: #1102417 + * ASoC: sigmadsp: Fix endianness conversion issue + - LP: #1102417 + * nfsd: avoid permission checks on EXCLUSIVE_CREATE replay + - LP: #1102417 + * x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops + - LP: #1102417 + * mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems + - LP: #1102417 + * ALSA: hda - Fix pin configuration of HP Pavilion dv7 + - LP: #1102417 + * ALSA: hda - Always turn on pins for HDMI/DP + - LP: #1102417 + * OMAP: board-files: fix i2c_bus for tfp410 + - LP: #1102417 + * i2400m: add Intel 6150 device IDs + - LP: #1102417 + * ALSA: hda - Fix the wrong pincaps set in ALC861VD dallas/hp fixup + - LP: #1102417 + * nfsd4: fix oops on unusual readlike compound + - LP: #1102417 + * qmi_wwan/cdc_ether: add Dell Wireless 5800 (Novatel E362) USB IDs + - LP: #1102417 + * ARM: missing ->mmap_sem around find_vma() in swp_emulate.c + - LP: #1102417 + * ARM: 7607/1: realview: fix private peripheral memory base for EB rev. B + boards + - LP: #1102417 + * cifs: don't compare uniqueids in cifs_prime_dcache unless server inode + numbers are in use + - LP: #1102417 + * intel-iommu: Free old page tables before creating superpage + - LP: #1102417 + * vfs: d_obtain_alias() needs to use "/" as default name. + - LP: #1102417 + * mm: fix calculation of dirtyable memory + - LP: #1102417 + * SGI-XP: handle non-fatal traps + - LP: #1102417 + * dm persistent data: rename node to btree_node + - LP: #1102417 + * dm ioctl: prevent unsafe change to dm_ioctl data_size + - LP: #1102417 + * sis900: fix sis900_set_mode call parameters. + - LP: #1102417 + * ne2000: add the right platform device + - LP: #1102417 + * irda: sir_dev: Fix copy/paste typo + - LP: #1102417 + * ipv4: ip_check_defrag must not modify skb before unsharing + - LP: #1102417 + * inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state + - LP: #1102417 + * inet_diag: validate byte code to prevent oops in inet_diag_bc_run() + - LP: #1102417 + * inet_diag: avoid unsafe and nonsensical prefix matches in + inet_diag_bc_run() + - LP: #1102417 + * inet_diag: validate port comparison byte code to prevent unsafe reads + - LP: #1102417 + * usb/ipheth: Add iPhone 5 support + - LP: #1102417 + * bonding: fix race condition in bonding_store_slaves_active + - LP: #1102417 + * sctp: fix memory leak in sctp_datamsg_from_user() when copy from user + space fails + - LP: #1102417 + * sctp: fix -ENOMEM result with invalid user space pointer in sendto() + syscall + - LP: #1102417 + * udf: fix memory leak while allocating blocks during write + - LP: #1102417 + * udf: don't increment lenExtents while writing to a hole + - LP: #1102417 + * staging: vt6656: [BUG] out of bound array reference in RFbSetPower. + - LP: #1102417 + * staging: vt6656: 64 bit fixes: use u32 for QWORD definition. + - LP: #1102417 + * staging: vt6656: 64 bit fixes : correct all type sizes + - LP: #1102417 + * staging: vt6656: 64 bit fixes: fix long warning messages. + - LP: #1102417 + * staging: vt6656: 64bit fixes: key.c/h change unsigned long to u32 + - LP: #1102417 + * staging: vt6656: 64bit fixes: vCommandTimerWait change calculation of + timer. + - LP: #1102417 + * drm/i915: Flush outstanding unpin tasks before pageflipping + - LP: #1094173, #1102417 + * ext4: fix extent tree corruption caused by hole punch + - LP: #1102417 + * ext4: check dioread_nolock on remount + - LP: #1102417 + * drm/i915: fix flags in dma buf exporting + - LP: #1102417 + * jbd2: fix assertion failure in jbd2_journal_flush() + - LP: #1102417 + * drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list + - LP: #1102417 + * hwmon: (lm73} Detect and report i2c bus errors + - LP: #1102417 + * ext4: do not try to write superblock on ro remount w/o journal + - LP: #1102417 + * PCI: Work around Stratus ftServer broken PCIe hierarchy (fix DMI check) + - LP: #1102417 + * PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz + - LP: #1102417 + * mm: Fix PageHead when !CONFIG_PAGEFLAGS_EXTENDED + - LP: #1102417 + * tmpfs mempolicy: fix /proc/mounts corrupting memory + - LP: #1102417 + * epoll: prevent missed events on EPOLL_CTL_MOD + - LP: #1102417 + * drm/i915: add some barriers when changing DIPs + - LP: #1102417 + * drm/i915: make sure we write all the DIP data bytes + - LP: #1102417 + * RDMA/nes: Fix for terminate timer crash + - LP: #1102417 + * RDMA/nes: Fix for crash when registering zero length MR for CQ + - LP: #1102417 + * sparc: huge_ptep_set_* functions need to call set_huge_pte_at() + - LP: #1102417 + * batman-adv: fix random jitter calculation + - LP: #1102417 + * inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and + dccp_v4/6_request_recv_sock + - LP: #1102417 + * net: sched: integer overflow fix + - LP: #1102417 + * tcp: fix MSG_SENDPAGE_NOTLAST logic + - LP: #1102417 + * tcp: implement RFC 5961 3.2 + - LP: #1102417 + * tcp: implement RFC 5961 4.2 + - LP: #1102417 + * tcp: refine SYN handling in tcp_validate_incoming + - LP: #1102417 + * tcp: tcp_replace_ts_recent() should not be called from + tcp_validate_incoming() + - LP: #1102417 + * tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation + - LP: #1102417 + * ACPI : do not use Lid and Sleep button for S5 wakeup + - LP: #1102417 + * aoe: do not call bdi_init after blk_alloc_queue + - LP: #1102417 + * Input: sentelic - only report position of first finger as ST + coordinates + - LP: #1102417 + * Input: gpio_keys - defer probing if GPIO probing is deferred + - LP: #1102417 + * cifs: adjust sequence number downward after signing NT_CANCEL request + - LP: #1102417 + * rtlwifi: fix incorrect use of usb_alloc_coherent with usb_control_msg + - LP: #1102417 + * p54usb: add USB ID for T-Com Sinus 154 data II + - LP: #1102417 + * ath9k_hw: Fix RX gain initvals for AR9485 + - LP: #1102417 + * p54usb: add USBIDs for two more p54usb devices + - LP: #1102417 + * powerpc/vdso: Remove redundant locking in update_vsyscall_tz() + - LP: #1102417 + * powerpc: Add missing NULL terminator to avoid boot panic on PPC40x + - LP: #1102417 + * drm/radeon: add connector table for Mac G4 Silver + - LP: #1102417 + * drm/radeon: Properly handle DDC probe for DP bridges + - LP: #1102417 + * drm/nouveau: fix init with agpgart-uninorth + - LP: #1102417 + * video: mxsfb: fix crash when unblanking the display + - LP: #1102417 + * nfs: fix null checking in nfs_get_option_str() + - LP: #1102417 + * SUNRPC: Ensure that we free the rpc_task after cleanups are done + - LP: #1102417 + * NFS: Ensure that we free the rpc_task after read and write cleanups are + done + - LP: #1102417 + * ACPI / scan: Do not use dummy HID for system bus ACPI nodes + - LP: #1102417 + * mm: limit mmu_gather batching to fix soft lockups on !CONFIG_PREEMPT + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: correct handling of CR_24H bitfield + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct + rtc_time + - LP: #1102417 + * printk: fix incorrect length from print_time() when seconds > 99999 + - LP: #1102417 + * PM: Move disabling/enabling runtime PM to late suspend/early resume + - LP: #1102417 + * signals: sys_ssetmask() uses uninitialized newmask + - LP: #1102417 + * ext4: release buffer in failed path in dx_probe() + - LP: #1102417 + * ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) + - LP: #1096789, #1102417 + * drm/prime: drop reference on imported dma-buf come from gem + - LP: #1102417 + * i915: ensure that VGA plane is disabled + - LP: #1102417 + * mvsas: Fix oops when ata commond timeout. + - LP: #1102417 + * staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC + - LP: #1102417 + * iscsi-target: Fix CmdSN comparison (use cmd->cmd_sn instead of + cmd->stat_sn) + - LP: #1102417 + * Linux 3.5.7.3 + - LP: #1102417 + * usb: gadget: dummy: fix enumeration with g_multi + - LP: #1106966 + * usb: musb: core: print new line in the driver banner again + - LP: #1106966 + * ASoC: pcm: allow backend hardware to be freed in pause state + - LP: #1106966 + * ASoC: wm2200: Fix setting dai format in wm2200_set_fmt + - LP: #1106966 + * mac80211: fix ibss scanning + - LP: #1106966 + * mac80211: use del_timer_sync for final sta cleanup timer deletion + - LP: #1106966 + * mac80211: fix dtim_period in hidden SSID AP association + - LP: #1106966 + * xhci: Handle HS bulk/ctrl endpoints that don't NAK. + - LP: #1106966 + * USB: Handle auto-transition from hot to warm reset. + - LP: #1106966 + * USB: Ignore xHCI Reset Device status. + - LP: #1106966 + * USB: Allow USB 3.0 ports to be disabled. + - LP: #1106966 + * USB: Increase reset timeout. + - LP: #1106966 + * USB: Ignore port state until reset completes. + - LP: #1106966 + * USB: Handle warm reset failure on empty port. + - LP: #1106966 + * xhci: Avoid "dead ports", add roothub port polling. + - LP: #1106966 + * ASoC: wm2200: Remove DSP B and left justified AIF modes + - LP: #1106966 + * ASoC: wm5100: Remove DSP B and left justified formats + - LP: #1106966 + * mwifiex: check wait_event_interruptible return value + - LP: #1106966 + * ASoC: wm2000: Fix sense of speech clarity enable + - LP: #1106966 + * drm/i915; Only increment the user-pin-count after successfully pinning + the bo + - LP: #1106966 + * samsung-laptop: Add quirk for broken acpi_video backlight on N250P + - LP: #1086921, #1106966 + * sony-laptop: fix SNC buffer calls when SN06 returns Integers + - LP: #1106966 + * staging: r8712u: Add new device ID + - LP: #1106966 + * b43: Fix firmware loading when driver is built into the kernel + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_init() + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_add() + - LP: #1106966 + * staging: comedi: fix minimum AO period for NI 625x and NI 628x + - LP: #1106966 + * staging: comedi: prevent auto-unconfig of manually configured devices + - LP: #1106966 + * staging: comedi: comedi_test: fix race when cancelling command + - LP: #1106966 + * regulator: max8997: Use uV in voltage_map_desc + - LP: #1106966 + * regulator: max8998: Convert to regulator_list_voltage_linear() + - LP: #1106966 + * regulator: max8998: Convert to set_voltage_sel and + regulator_map_voltage_linear + - LP: #1106966 + * regulator: max8998: Use uV in voltage_map_desc + - LP: #1106966 + * ALSA: pxa27x: fix ac97 cold reset + - LP: #1106966 + * ALSA: pxa27x: fix ac97 warm reset + - LP: #1106966 + * SUNRPC: Ensure we release the socket write lock if the rpc_task exits + early + - LP: #1106966 + * target: use correct sense code for LUN communication failure + - LP: #1106966 + * regulator: max8998: Ensure enough delay time for + max8998_set_voltage_buck_time_sel + - LP: #1106966 + * tcm_fc: Do not indicate retry capability to initiators + - LP: #1106966 + * tcm_fc: Do not report target role when target is not defined + - LP: #1106966 + * target: Fix use-after-free in LUN RESET handling + - LP: #1106966 + * target: Release se_cmd when LUN lookup fails for TMR + - LP: #1106966 + * sh: Fix FDPIC binary loader + - LP: #1106966 + * USB: option: Add new MEDIATEK PID support + - LP: #1106966 + * USB: option: blacklist network interface on ZTE MF880 + - LP: #1106966 + * USB: option: add Telekom Speedstick LTE II + - LP: #1106966 + * USB: option: add Nexpring NP10T terminal id + - LP: #1106966 + * Add CDC-ACM support for the CX93010-2x UCMxx USB Modem + - LP: #1106966 + * USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i" + - LP: #1106966 + * USB: hub: handle claim of enabled remote wakeup after reset + - LP: #1106966 + * mm: compaction: fix echo 1 > compact_memory return error issue + - LP: #1106966 + * mm: use aligned zone start for pfn_to_bitidx calculation + - LP: #1106966 + * mm: bootmem: fix free_all_bootmem_core() with odd bitmap alignment + - LP: #1106966 + * audit: create explicit AUDIT_SECCOMP event type + - LP: #1106966 + * USB: Add device quirk for Microsoft VX700 webcam + - LP: #1106966 + * drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards + - LP: #1106966 + * drm/nv17-50: restore fence buffer on resume + - LP: #1106966 + * usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added + - LP: #1106966 + * udldrmfb: Fix EDID not working with monitors with EDID extension blocks + - LP: #1106966 + * udldrmfb: udl_get_edid: usb_control_msg buffer must not be on the stack + - LP: #1106966 + * udldrmfb: udl_get_edid: drop unneeded i-- + - LP: #1106966 + * s390/time: fix sched_clock() overflow + - LP: #1106966 + * rt2800usb: Add support for 2001:3c1e (D-Link DWA-125 rev B1) USB Wi-Fi + adapter + - LP: #1085351, #1106966 + * drm/radeon: fix NULL pointer dereference in UMS mode + - LP: #1106966 + * drm/radeon: fix a bogus kfree + - LP: #1106966 + * ALSA: usb - fix race in creation of M-Audio Fast track pro driver + - LP: #1095315, #1106966 + * x86/Sandy Bridge: reserve pages when integrated graphics is present + - LP: #1106966 + * USB: io_ti: Fix NULL dereference in chase_port() + - LP: #1106966 + * intel-iommu: Prevent devices with RMRRs from being placed into SI + Domain + - LP: #1106966 + * igb: release already assigned MSI-X interrupts if setup fails + - LP: #1106966 + * usb: chipidea: Allow disabling streaming not only in udc mode + - LP: #1106966 + * sd: Reshuffle init_sd to avoid crash + - LP: #1106966 + * Linux 3.5.7.4 + - LP: #1106966 + * HID: Add suport for the brightness control keys on HP keyboards + - LP: #1007575 + * efi: Make 'efi_enabled' a function to query EFI facilities + - LP: #1111689 + * samsung-laptop: Disable on EFI hardware + - LP: #1111689 + * inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #1110605 + * fsnotify: introduce fsnotify_get_group() + - LP: #1110605 + * fsnotify: use reference counting for groups + - LP: #1110605 + * fsnotify: take groups mark_lock before mark lock + - LP: #1110605 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1110605 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1110605 + * audit: clean up refcounting in audit-tree + - LP: #1110605 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1110605 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1110605 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1110605 + * fsnotify: change locking order + - LP: #1110605 + * drivers/mfd: Add realtek pcie card reader driver + - LP: #1057089 + * mfd: rtsx: Add output voltage switch hook + - LP: #1057089 + * mfd: rtsx: Fix oops when rtsx_pci_sdmmc is not probed + - LP: #1057089 + * mmc: Add realtek pcie sdmmc host driver + - LP: #1057089 + * mmc: rtsx: Remove a duplicate command in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Configure SD_CFG2 register in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Explicitely include slab.h in rtsx_pci_sdmmc.c + - LP: #1057089 + * mmc: rtsx: Call MFD hook to switch output voltage + - LP: #1057089 + * drivers/memstick: Add realtek pcie memstick host driver + - LP: #1057089 + + -- Luis Henriques Wed, 06 Feb 2013 10:41:09 +0000 + +linux (3.5.0-23.35) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1103932 + + [ Upstream Kernel Changes ] + + * Revert "fsnotify: change locking order" + - LP: #1101666 + * Revert "fsnotify: dont put marks on temporary list when clearing marks + by group" + - LP: #1101666 + * Revert "fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark()" + - LP: #1101666 + * Revert "fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1101666 + * Revert "fsnotify: use a mutex instead of a spinlock to protect a groups + mark list" + - LP: #1101666 + * Revert "fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed" + - LP: #1101666 + * Revert "fsnotify: take groups mark_lock before mark lock" + - LP: #1101666 + * Revert "fsnotify: use reference counting for groups" + - LP: #1101666 + * Revert "fsnotify: introduce fsnotify_get_group()" + - LP: #1101666 + * radeon/kms: force rn50 chip to always report connected on analog output + - LP: #1103320 + + -- Luis Henriques Thu, 24 Jan 2013 11:06:25 +0000 + +linux (3.5.0-22.34) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1097343 + + [ Chris J Arges ] + + * Revert "SAUCE: fsnotify: dont put marks on temporary list when clearing + marks by group" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce locked versions of + fsnotify_add_mark() and fsnotify_remove_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use a mutex instead of a spinlock to protect a + groups mark list" + - LP: #1096137 + * Revert "SAUCE: fanotify: add an extra flag to mark_remove_from_mask + that indicates wheather a mark should be destroyed" + - LP: #1096137 + * Revert "SAUCE: fsnotify: take groups mark_lock before mark lock" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use reference counting for groups" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce fsnotify_get_group()" + - LP: #1096137 + + [ Upstream Kernel Changes ] + + * fsnotify: introduce fsnotify_get_group() + - LP: #1096137 + * fsnotify: use reference counting for groups + - LP: #1096137 + * fsnotify: take groups mark_lock before mark lock + - LP: #1096137 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1096137 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1096137 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1096137 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1096137 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1096137 + * fsnotify: change locking order + - LP: #1096137 + + -- Luis Henriques Tue, 08 Jan 2013 17:54:01 +0000 + +linux (3.5.0-22.33) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1095349 + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Colin Ian King ] + + * SAUCE: samsung-laptop: disable in UEFI mode + - LP: #1040557 + + [ Kees Cook ] + + * SAUCE: exec: do not leave bprm->interp on stack + - LP: #1068888 + - CVE-2012-4530 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Lino Sanfilippo ] + + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * Revert "Staging: Android alarm: IOCTL command encoding fix" + - LP: #1091251 + * Revert "sched, autogroup: Stop going ahead if autogroup is disabled" + - LP: #1091251 + * Revert "serial: omap: fix software flow control" + - LP: #1091251 + * drm/i915: EBUSY status handling added to i915_gem_fault(). + - LP: #1087302 + * MISC: hpilo, remove pci_disable_device + - LP: #1087860 + * asix: Adds support for Lenovo 10/100 USB dongle. + - LP: #1087480 + * hpsa: gen8plus Smart Array IDs + - LP: #1089623 + * KVM: x86: invalid opcode oops on SET_SREGS with OSXSAVE bit set + (CVE-2012-4461) + - LP: #1089604 + - CVE-2012-4461 + * gpio-timberdale: fix a potential wrapping issue + - LP: #1091251 + * cfg80211: fix antenna gain handling + - LP: #1091251 + * drm/i915: fix overlay on i830M + - LP: #1091251 + * drm/i915: clear the entire sdvo infoframe buffer + - LP: #1091251 + * mac80211: use blacklist for duplicate IE check + - LP: #1091251 + * mac80211: Only process mesh config header on frames that RA_MATCH + - LP: #1091251 + * mac80211: don't inspect Sequence Control field on control frames + - LP: #1091251 + * gpiolib: Don't return -EPROBE_DEFER to sysfs, or for invalid gpios + - LP: #1091251 + * qla2xxx: Update target lookup session tables when a target session + changes + - LP: #1091251 + * mac80211: fix SSID copy on IBSS JOIN + - LP: #1091251 + * wireless: drop invalid mesh address extension frames + - LP: #1091251 + * mac80211: check management frame header length + - LP: #1091251 + * mac80211: verify that skb data is present + - LP: #1091251 + * mac80211: make sure data is accessible in EAPOL check + - LP: #1091251 + * target: Fix double-free of se_cmd in target_complete_tmr_failure + - LP: #1091251 + * ext4: fix unjournaled inode bitmap modification + - LP: #1091251 + * ath9k: fix stale pointers potentially causing access to free'd skbs + - LP: #1091251 + * floppy: don't call alloc_ordered_workqueue inside the alloc_disk loop + - LP: #1091251 + * floppy: do put_disk on current dr if blk_init_queue fails + - LP: #1091251 + * floppy: properly handle failure on add_disk loop + - LP: #1091251 + * ALSA: PCM: Fix some races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Use rwsem for disconnect protection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection in mixer_quirks.c + - LP: #1091251 + * ALSA: Add a reference counter to card instance + - LP: #1091251 + * ALSA: Avoid endless sleep after disconnect + - LP: #1091251 + * xen/gntdev: don't leak memory from IOCTL_GNTDEV_MAP_GRANT_REF + - LP: #1091251 + * rt2800: validate step value for temperature compensation + - LP: #1091251 + * ath9k: Test for TID only in BlockAcks while checking tx status + - LP: #1091251 + * md/raid1: Fix assembling of arrays containing Replacements. + - LP: #1091251 + * Input: tsc40 - remove wrong announcement of pressure support + - LP: #1091251 + * HID: microsoft: fix invalid rdesc for 3k kbd + - LP: #1091251 + * xen/mmu: Use Xen specific TLB flush instead of the generic one. + - LP: #1091251 + * NFS: Wait for session recovery to finish before returning + - LP: #1091251 + * NFSv4.1: We must release the sequence id when we fail to get a session + slot + - LP: #1091251 + * NFSv4: nfs4_locku_done must release the sequence id + - LP: #1091251 + * NFS: fix bug in legacy DNS resolver. + - LP: #1091251 + * nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd + timeouts + - LP: #1091251 + * nfs: Show original device name verbatim in /proc/*/mount{s,info} + - LP: #1091251 + * target: Don't return success from module_init() if setup fails + - LP: #1091251 + * target: Avoid integer overflow in se_dev_align_max_sectors() + - LP: #1091251 + * iscsi-target: Fix missed wakeup race in TX thread + - LP: #1091251 + * target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path + - LP: #1091251 + * DRM/Radeon: Fix Load Detection on legacy primary DAC. + - LP: #1091251 + * ixgbe: PTP get_ts_info missing software support + - LP: #1091251 + * drm/udl: fix stride issues scanning out stride != width*bpp + - LP: #1091251 + * crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent + data corruption + - LP: #1091251 + * module: fix out-by-one error in kallsyms + - LP: #1091251 + * cifs: fix potential buffer overrun in cifs.idmap handling code + - LP: #1091251 + * ptp: update adjfreq callback description + - LP: #1091251 + * ALSA: hda: Cirrus: Fix coefficient index for beep configuration + - LP: #1091251 + * ALSA: HDA: Fix digital microphone on CS420x + - LP: #1091251 + * ALSA: hda - Force to reset IEC958 status bits for AD codecs + - LP: #1091251, #359361 + * hwmon: (w83627ehf) Force initial bank selection + - LP: #1091251 + * drm: restore open_count if drm_setup fails + - LP: #1091251 + * ALSA: hda - Fix empty DAC filling in patch_via.c + - LP: #1091251 + * ALSA: hda - Fix invalid connections in VT1802 codec + - LP: #1091251 + * xen/events: fix RCU warning, or Call idle notifier after irq_enter() + - LP: #1091251 + * mmc: sdhci: fix NULL dereference in sdhci_request() tuning + - LP: #1091251 + * ALSA: hda - Improve HP depop when system enter to S3 + - LP: #1091251 + * ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) + - LP: #1091251 + * ALSA: Fix card refcount unbalance + - LP: #1091251 + * drm/radeon/cayman: add some missing regs to the VM reg checker + - LP: #1091251 + * drm/radeon/si: add some missing regs to the VM reg checker + - LP: #1091251 + * xfs: fix buffer shudown reference count mismatch + - LP: #1091251 + * xfs: fix reading of wrapped log data + - LP: #1091251 + * virtio: Don't access index after unregister. + - LP: #1091251 + * fanotify: fix missing break + - LP: #1091251 + * mm: bugfix: set current->reclaim_state to NULL while returning from + kswapd() + - LP: #1091251 + * drm/vmwgfx: Fix hibernation device reset + - LP: #1091251 + * drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR + memory + - LP: #1091251 + * UBIFS: introduce categorized lprops counter + - LP: #1091251 + * UBIFS: fix mounting problems after power cuts + - LP: #1091251 + * USB: usb_wwan: fix bulk-urb allocation + - LP: #1091251 + * ARM: dt: tegra: fix length of pad control and mux registers + - LP: #1091251 + * futex: Handle futex_pi OWNER_DIED take over correctly + - LP: #1091251 + * mac80211: sync acccess to tx_filtered/ps_tx_buf queues + - LP: #1091251 + * iwlwifi: handle DMA mapping failures + - LP: #1091251 + * ASoC: wm8978: pll incorrectly configured when codec is master + - LP: #1091251 + * ASoC: cs42l52: fix the return value of cs42l52_set_fmt() + - LP: #1091251 + * Bluetooth: Fix having bogus entries in mgmt_read_index_list reply + - LP: #1091251 + * mac80211: don't send null data packet when not associated + - LP: #1091251 + * ASoC: dapm: Use card_list during DAPM shutdown + - LP: #1091251 + * ASoC: core: Double control update err for snd_soc_put_volsw_sx + - LP: #1091251 + * mac80211: call skb_dequeue/ieee80211_free_txskb instead of + __skb_queue_purge + - LP: #1091251 + * ALSA: hda - Add a missing quirk entry for iMac 9,1 + - LP: #1091251 + * s390/signal: set correct address space control + - LP: #1091251 + * wireless: allow 40 MHz on world roaming channels 12/13 + - LP: #1091251 + * drm/i915/sdvo: clean up connectors on intel_sdvo_init() failures + - LP: #1091251 + * s390/gup: add missing TASK_SIZE check to get_user_pages_fast() + - LP: #1091251 + * USB: option: add Novatel E362 and Dell Wireless 5800 USB IDs + - LP: #1091251 + * USB: option: add Alcatel X220/X500D USB IDs + - LP: #1091251 + * i2c-mux-pinctrl: Fix probe error path + - LP: #1091251 + * ALSA: usb-audio: Fix mutex deadlock at disconnection + - LP: #1091251 + * drm/radeon: fix logic error in atombios_encoders.c + - LP: #1091251 + * ttm: Clear the ttm page allocated from high memory zone correctly + - LP: #1091251 + * ARM: imx: ehci: fix host power mask bit + - LP: #1091251 + * memcg: oom: fix totalpages calculation for memory.swappiness==0 + - LP: #1091251 + * memcg: fix hotplugged memory zone oops + - LP: #1091251 + * tmpfs: fix shmem_getpage_gfp() VM_BUG_ON + - LP: #1091251 + * tmpfs: change final i_blocks BUG to WARNING + - LP: #1091251 + * mtd: ofpart: Fix incorrect NULL check in parse_ofoldpart_partitions() + - LP: #1091251 + * mtd: slram: invalid checking of absolute end address + - LP: #1091251 + * jffs2: Fix lock acquisition order bug in jffs2_write_begin + - LP: #1091251 + * isci: copy fis 0x34 response into proper buffer + - LP: #1091251 + * mac80211: deinitialize ibss-internals after emptiness check + - LP: #1091251 + * iwlwifi: fix monitor mode FCS flag + - LP: #1091251 + * fix virtual aliasing issue in get_shared_area() + - LP: #1091251 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1091251 + * mwifiex: fix system hang issue in cmd timeout error case + - LP: #1091251 + * mwifiex: report error to MMC core if we cannot suspend + - LP: #1091251 + * xfs: drop buffer io reference when a bad bio is built + - LP: #1091251 + * m68k: fix sigset_t accessor functions + - LP: #1091251 + * ALSA: ua101, usx2y: fix broken MIDI output + - LP: #1091251 + * sparc64: not any error from do_sigaltstack() should fail rt_sigreturn() + - LP: #1091251 + * reiserfs: Fix lock ordering during remount + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_on() with write lock + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_write() with write lock + - LP: #1091251 + * reiserfs: Move quota calls out of write lock + - LP: #1091251 + * md: Reassigned the parameters if read_seqretry returned true in func + md_is_badblock. + - LP: #1091251 + * md: Avoid write invalid address if read_seqretry returned true. + - LP: #1091251 + * drm/radeon/dce4+: don't use radeon_crtc for vblank callback + - LP: #1091251 + * drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2) + - LP: #1091251 + * drm/radeon: properly track the crtc not_enabled case + evergreen_mc_stop() + - LP: #1091251 + * radeon: add AGPMode 1 quirk for RV250 + - LP: #1091251 + * x86, efi: Fix processor-specific memcpy() build error + - LP: #1091251 + * x86-32: Fix invalid stack address while in softirq + - LP: #1091251 + * x86-32: Export kernel_stack_pointer() for modules + - LP: #1091251 + * x86, microcode, AMD: Add support for family 16h processors + - LP: #1091251 + * ALSA: hda - Add new codec ALC283 ALC290 support + - LP: #1091251 + * ALSA: hda - Add support for Realtek ALC292 + - LP: #1081466, #1091251 + * selinux: fix sel_netnode_insert() suspicious rcu dereference + - LP: #1091251 + * drm/radeon: add new SI pci id + - LP: #1091251 + * md/raid10: close race that lose writes lost when replacement completes. + - LP: #1091251 + * md/raid10: decrement correct pending counter when writing to + replacement. + - LP: #1091251 + * fix user-triggerable panic on parisc + - LP: #1091251 + * dm: fix deadlock with request based dm and queue request_fn recursion + - LP: #1091251 + * block: Don't access request after it might be freed + - LP: #1091251 + * PM / QoS: fix wrong error-checking condition + - LP: #1091251 + * i7300_edac: Fix error flag testing + - LP: #1091251 + * iwlwifi: fix the basic CCK rates calculation + - LP: #1091251 + * Dove: Attempt to fix PMU/RTC interrupts + - LP: #1091251 + * Dove: Fix irq_to_pmu() + - LP: #1091251 + * ARM: Kirkwood: Update PCI-E fixup + - LP: #1091251 + * jbd: Fix lock ordering bug in journal_unmap_buffer() + - LP: #1091251 + * can: peak_usb: fix hwtstamp assignment + - LP: #1091251 + * can: bcm: initialize ifindex for timeouts without previous frame + reception + - LP: #1091251 + * writeback: put unused inodes to LRU after writeback completion + - LP: #1091251 + * futex: avoid wake_futex() for a PI futex_q + - LP: #1091251 + * mm/vmemmap: fix wrong use of virt_to_page + - LP: #1091251 + * mm: vmscan: fix endless loop in kswapd balancing + - LP: #1091251 + * mm: soft offline: split thp at the beginning of soft_offline_page() + - LP: #1091251 + * x86, fpu: Avoid FPU lazy restore after suspend + - LP: #1091251 + * workqueue: exit rescuer_thread() as TASK_RUNNING + - LP: #1091251 + * Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts" + - LP: #1091251 + * mmc: sh-mmcif: avoid oops on spurious interrupts (second try) + - LP: #1091251 + * tmpfs: fix shared mempolicy leak + - LP: #1091251 + * HID: microsoft: do not use compound literal - fix build + - LP: #1091251 + * ACPI video: Ignore errors after _DOD evaluation. + - LP: #1091251 + * SUNRPC: Fix a UDP transport regression + - LP: #1091251 + * SUNRPC: Set alloc_slot for backchannel tcp ops + - LP: #1091251 + * sparc64: fix ptrace interaction with force_successful_syscall_return() + - LP: #1091251 + * sparc64: Like x86 we should check current->mm during perf backtrace + generation. + - LP: #1091251 + * sparc64: Fix bit twiddling in sparc_pmu_enable_event(). + - LP: #1091251 + * sparc64: do not clobber personality flags in sys_sparc64_personality() + - LP: #1091251 + * sparc64: Be less verbose during vmemmap population. + - LP: #1091251 + * netlink: add reference of module in netlink_dump_start + - LP: #1091251 + * infiniband: pass rdma_cm module to netlink_dump_start + - LP: #1091251 + * net: remove skb recycling + - LP: #1091251 + * net: Fix skb_under_panic oops in neigh_resolve_output + - LP: #1091251 + * skge: Add DMA mask quirk for Marvell 88E8001 on ASUS P5NSLI motherboard + - LP: #1091251 + * vlan: don't deliver frames for unknown vlans to protocols + - LP: #1091251 + * RDS: fix rds-ping spinlock recursion + - LP: #1091251 + * tcp: resets are misrouted + - LP: #1091251 + * ipv6: addrconf: fix /proc/net/if_inet6 + - LP: #1091251 + * drm/i915: Use cpu relocations if the object is in the GTT but not + mappable + - LP: #1091251 + * floppy: destroy floppy workqueue before cleaning up the queue + - LP: #1091251 + * drm/nouveau: silence modesetting spam on pre-gf8 chipsets + - LP: #1091251 + * drm/nouveau: fix suspend/resume when in headless mode + - LP: #1091251 + * drm/nouveau: headless mode by default if pci class != vga display + - LP: #1091251 + * sky2: Fix for interrupt handler + - LP: #1091251 + * batman-adv: Fix broadcast packet CRC calculation + - LP: #1091251 + * drm/radeon: fix typo in evergreen_mc_resume() + - LP: #1091251 + * GFS2: Test bufdata with buffer locked and gfs2_log_lock held + - LP: #1091251 + * USB: mos7840: remove unused variable + - LP: #1091251 + * sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() + - LP: #1091251 + * netlink: use kfree_rcu() in netlink_release() + - LP: #1091251 + * tcp: fix FIONREAD/SIOCINQ + - LP: #1091251 + * ipv6: Set default hoplimit as zero. + - LP: #1091251 + * net: usb: Fix memory leak on Tx data path + - LP: #1091251 + * drivers/net/ethernet/nxp/lpc_eth.c: Call mdiobus_unregister before + mdiobus_free + - LP: #1091251 + * l2tp: fix oops in l2tp_eth_create() error path + - LP: #1091251 + * tcp-repair: Handle zero-length data put in rcv queue + - LP: #1091251 + * net: inet_diag -- Return error code if protocol handler is missed + - LP: #1091251 + * af-packet: fix oops when socket is not present + - LP: #1091251 + * ipv6: send unsolicited neighbour advertisements to all-nodes + - LP: #1091251 + * r8169: allow multicast packets on sub-8168f chipset. + - LP: #1091251 + * r8169: Fix WoL on RTL8168d/8111d. + - LP: #1091251 + * r8169: use unlimited DMA burst for TX + - LP: #1091251 + * netfilter: Mark SYN/ACK packets as invalid from original direction + - LP: #1091251 + * netfilter: Validate the sequence number of dataless ACK packets as well + - LP: #1091251 + * netfilter: nf_nat: don't check for port change on ICMP tuples + - LP: #1091251 + * ipv4: avoid undefined behavior in do_ip_setsockopt() + - LP: #1091251 + * ipv6: setsockopt(IPIPPROTO_IPV6, IPV6_MINHOPCOUNT) forgot to set return + value + - LP: #1091251 + * net: correct check in dev_addr_del() + - LP: #1091251 + * net-rps: Fix brokeness causing OOO packets + - LP: #1091251 + * tcp: fix retransmission in repair mode + - LP: #1091251 + * GFS2: Don't call file_accessed() with a shared glock + - LP: #1091251 + * get_dvb_firmware: fix download site for tda10046 firmware + - LP: #1091251 + * ixgbe: add support for X540-AT1 + - LP: #1091251 + * fimc-lite: Don't use mutex_lock_interruptible() in device release() + - LP: #1091251 + * NFC: pn533: Fix use after free + - LP: #1091251 + * NFC: pn533: Fix mem leak in pn533_in_dep_link_up + - LP: #1091251 + * HID: add quirk for Freescale i.MX28 ROM recovery + - LP: #1091251 + * NFC: Fix nfc_llcp_local chained list insertion + - LP: #1091251 + * bas_gigaset: fix pre_reset handling + - LP: #1091251 + * watchdog: using u64 in get_sample_period() + - LP: #1091251 + * sata_svw: check DMA start bit before reset + - LP: #1091251 + * bnx2x: remove redundant warning log + - LP: #1091251 + * x86, amd: Disable way access filter on Piledriver CPUs + - LP: #1091251 + * telephony: ijx: buffer overflow in ixj_write_cid() + - LP: #1091251 + * i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard + - LP: #1091251 + * drm/i915: Add no-lvds quirk for Supermicro X7SPA-H + - LP: #1091251 + * ACPI: missing break + - LP: #1091251 + * 8139cp: revert "set ring address before enabling receiver" + - LP: #1091251 + * ASoC: dmaengine: Correct Makefile when sound is built as module + - LP: #1091251 + * i82975x_edac: Fix dimm label initialization + - LP: #1091251 + * drm/i915: do not ignore eDP bpc settings from vbt + - LP: #1091251 + * drm/i915: do not default to 18 bpp for eDP if missing from VBT + - LP: #1091251 + * Input: matrix-keymap - provide proper module license + - LP: #1091251 + * Linux 3.5.7.2 + - LP: #1091251 + * exec: use -ELOOP for max recursion depth + - LP: #1068888 + - CVE-2012-4530 + * ALSA: hda - bug fix for invalid connection list of Haswell HDMI codec + pins + - LP: #1095242 + + -- Brad Figg Wed, 02 Jan 2013 12:24:40 -0800 + +linux (3.5.0-21.32) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1088979 + * SAUCE: i915_hsw: move i915_hsw_enabled symbol to intel_ips + - LP: #1087622 + + -- Luis Henriques Tue, 11 Dec 2012 16:55:32 +0000 + +linux (3.5.0-20.31) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1086759 + + [ Ben Widawsky ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_WAIT_TIMEOUT + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_CONTEXT_[CREATE,DESTROY] + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: add register read IOCTL + - LP: #1085245 + * SAUCE: i915_hsw: Include #define i915_execbuffer2_[set,get]_context_id + - LP: #1085245 + + [ Chris Wilson ] + + * SAUCE: i915_hsw: Include #define I915_GEM_PARAM_HAS_SEMAPHORES + - LP: #1085245 + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_SECURE_BATCHES + - LP: #1085245 + + [ Daniel Vetter ] + + * SAUCE: i915_hsw: drm/i915: call intel_enable_gtt + - LP: #1085245 + * SAUCE: i915_hsw: drm: add helper to sort panels to the head of the + connector list + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link bw helpers + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract drm_dp_max_lane_count helper + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_channel_eq_ok + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract helpers to compute new training values + from sink request + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_clock_recovery_ok + - LP: #1085245 + + [ Dave Airlie ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_PRIME_VMAP_FLUSH + - LP: #1085245 + + [ Leann Ogasawara ] + + * SAUCE: i915_hsw: Provide an ubuntu/i915 driver for Haswell graphics + - LP: #1085245 + * SAUCE: i915_hsw: Revert "drm: Make the .mode_fixup() operations mode + argument a const pointer" for ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Rename ubuntu/i915 driver i915_hsw + - LP: #1085245 + * SAUCE: i915_hsw: Only support Haswell with ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_WAIT + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link train delay functions from radeon + - LP: #1085245 + * SAUCE: i915_hsw: drm/dp: Update DPCD defines + - LP: #1085245 + * SAUCE: i915_hsw: Update intel_ips.h file location + - LP: #1085245 + * SAUCE: i915_hsw: Provide updated drm_mm.h and drm_mm.c for ubuntu/i915 + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Stop using AGP layer for GEN6+ + - LP: #1085245 + * SAUCE: i915_hsw: Add i915_hsw_gpu_*() calls for ubuntu/i915 + - LP: #1085245 + * i915_hsw: [Config] Enable CONFIG_DRM_I915_HSW=m + - LP: #1085245 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: fix hsw_fdi_link_train "retry" code + - LP: #1085245 + * SAUCE: drm/i915: reject modes the LPT FDI receiver can't handle + - LP: #1085245 + * SAUCE: drm/i915: add support for mPHY destination on intel_sbi_{read, + write} + - LP: #1085245 + * SAUCE: drm/i915: add lpt_init_pch_refclk + - LP: #1085245 + * SAUCE: drm/i915: set the LPT FDI RX polarity reversal bit when needed + - LP: #1085245 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + + [ Upstream Kernel Changes ] + + * Revert "cgroup: Drop task_lock(parent) on cgroup_fork()" + - LP: #1084539 + * Revert "cgroup: Remove task_lock() from cgroup_post_fork()" + - LP: #1084539 + * Revert "x86/mm: Fix the size calculation of mapping tables" + - LP: #1084539 + * Revert "SUNRPC: Ensure we close the socket on EPIPE errors too..." + - LP: #1084539 + * Revert "ath9k_hw: Updated AR9003 tx gain table for 5GHz" + - LP: #1084539 + * Revert "sched: Add missing call to calc_load_exit_idle()" + - LP: #1084539 + * net: fix secpath kmemleak + - LP: #1065434 + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * e1000e: add device IDs for i218 + - LP: #1081796 + * bonding: Bonding driver does not consider the gso_max_size/gso_max_segs + setting of slave devices. + - LP: #1078184 + * mm/hotplug: correctly add new zone to all other nodes' zone lists + - LP: #1079860 + - CVE-2012-5517 + * xen: enable platform-pci only in a Xen guest + - LP: #1081054 + * udf: fix retun value on error path in udf_load_logicalvol + - LP: #1084539 + * usb: gadget: at91_udc: fix dt support + - LP: #1084539 + * netfilter: nf_nat_sip: fix incorrect handling of EBUSY for RTCP + expectation + - LP: #1084539 + * netfilter: nf_nat_sip: fix via header translation with multiple + parameters + - LP: #1084539 + * netfilter: nf_ct_expect: fix possible access to uninitialized timer + - LP: #1084539 + * netfilter: xt_limit: have r->cost != 0 case work + - LP: #1084539 + * netfilter: nf_conntrack: fix racy timer handling with reliable events + - LP: #1084539 + * netfilter: nfnetlink_log: fix NLA_PUT macro removal bug + - LP: #1084539 + * MIPS: ath79: Fix CPU/DDR frequency calculation for SRIF PLLs + - LP: #1084539 + * jbd: Fix assertion failure in commit code due to lacking transaction + credits + - LP: #1084539 + * nfsd4: fix nfs4 stateid leak + - LP: #1084539 + * NFSD: pass null terminated buf to kstrtouint() + - LP: #1084539 + * mfd: 88pm860x: Move _IO resources out of ioport_ioresource + - LP: #1084539 + * target: support zero allocation length in INQUIRY + - LP: #1084539 + * target: fix truncation of mode data, support zero allocation length + - LP: #1084539 + * target: fix return code in target_core_init_configfs error path + - LP: #1084539 + * powerpc/eeh: Lock module while handling EEH event + - LP: #1084539 + * SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT + - LP: #1084539 + * ext4: remove erroneous ext4_superblock_csum_set() in update_backups() + - LP: #1084539 + * block: remove the duplicated setting for congestion_threshold + - LP: #1084539 + * block: lift the initial queue bypass mode on blk_register_queue() + instead of blk_init_allocated_queue() + - LP: #1084539 + * block: fix request_queue->flags initialization + - LP: #1084539 + * viafb: don't touch clock state on OLPC XO-1.5 + - LP: #1084539 + * qla2xxx: Fix endianness of task management response code + - LP: #1084539 + * iscsi-target: Correctly set 0xffffffff field within ISCSI_OP_REJECT PDU + - LP: #1084539 + * drm/i915: use adjusted_mode instead of mode for checking the 6bpc force + flag + - LP: #1084539 + * kbuild: Do not package /boot and /lib in make tar-pkg + - LP: #1084539 + * module: taint kernel when lve module is loaded + - LP: #1084539 + * mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver + - LP: #1084539 + * nfsd4: don't pin clientids to pseudoflavors + - LP: #1084539 + * lockd: use rpc client's cl_nodename for id encoding + - LP: #1084539 + * pnfsblock: fix partial page buffer wirte + - LP: #1084539 + * pnfsblock: fix non-aligned DIO read + - LP: #1084539 + * pnfsblock: fix non-aligned DIO write + - LP: #1084539 + * target/file: Re-enable optional fd_buffered_io=1 operation + - LP: #1084539 + * iscsi-target: Add explicit set of cache_dynamic_acls=1 for TPG + demo-mode + - LP: #1084539 + * iscsit: remove incorrect unlock in iscsit_build_sendtargets_resp + - LP: #1084539 + * iscsi-target: Bump defaults for nopin_timeout + nopin_response_timeout + values + - LP: #1084539 + * drivers/dma/dmaengine.c: lower the priority of 'failed to get' dma + channel message + - LP: #1084539 + * ath9k: use ieee80211_free_txskb + - LP: #1084539 + * ALSA: hda - Fix hang caused by race during suspend. + - LP: #1084539 + * ACPI: EC: Make the GPE storm threshold a module parameter + - LP: #1084539 + * ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop + - LP: #1084539 + * mmc: sdhci-s3c: fix the wrong number of max bus clocks + - LP: #1084539 + * mac80211: use ieee80211_free_txskb to fix possible skb leaks + - LP: #1084539 + * ARM: OMAP: counter: add locking to read_persistent_clock + - LP: #1084539 + * ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels + - LP: #1084539 + * scsi_debug: Fix off-by-one bug when unmapping region + - LP: #1084539 + * storvsc: Account for in-transit packets in the RESET path + - LP: #1084539 + * firewire: cdev: fix user memory corruption (i386 userland on amd64 + kernel) + - LP: #1084539 + * timers: Fix endless looping between cascade() and internal_add_timer() + - LP: #1084539 + * timekeeping: Cast raw_interval to u64 to avoid shift overflow + - LP: #1084539 + * video/udlfb: fix line counting in fb_write + - LP: #1084539 + * tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking + - LP: #1084539 + * ALSA: hda - Add missing hda_gen_spec to struct via_spec + - LP: #1084539 + * ALSA: hda - Fix memory leaks at error path in patch_cirrus.c + - LP: #1084539 + * autofs4 - fix reset pending flag on mount fail + - LP: #1084539 + * pktgen: fix crash when generating IPv6 packets + - LP: #1084539 + * md/raid10: use correct limit variable + - LP: #1084539 + * mips,kgdb: fix recursive page fault with CONFIG_KPROBES + - LP: #1084539 + * kdb,vt_console: Fix missed data due to pager overruns + - LP: #1084539 + * xen/bootup: allow read_tscp call for Xen PV guests. + - LP: #1084539 + * xen/bootup: allow {read|write}_cr8 pvops call. + - LP: #1084539 + * libceph: eliminate connection state "DEAD" + - LP: #1084539 + * libceph: kill bad_proto ceph connection op + - LP: #1084539 + * libceph: rename socket callbacks + - LP: #1084539 + * libceph: rename kvec_reset and kvec_add functions + - LP: #1084539 + * libceph: embed ceph messenger structure in ceph_client + - LP: #1084539 + * libceph: start separating connection flags from state + - LP: #1084539 + * libceph: start tracking connection socket state + - LP: #1084539 + * libceph: provide osd number when creating osd + - LP: #1084539 + * libceph: set CLOSED state bit in con_init + - LP: #1084539 + * libceph: embed ceph connection structure in mon_client + - LP: #1084539 + * libceph: drop connection refcounting for mon_client + - LP: #1084539 + * libceph: init monitor connection when opening + - LP: #1084539 + * libceph: fully initialize connection in con_init() + - LP: #1084539 + * libceph: tweak ceph_alloc_msg() + - LP: #1084539 + * libceph: have messages point to their connection + - LP: #1084539 + * libceph: have messages take a connection reference + - LP: #1084539 + * libceph: make ceph_con_revoke() a msg operation + - LP: #1084539 + * libceph: make ceph_con_revoke_message() a msg op + - LP: #1084539 + * libceph: fix overflow in __decode_pool_names() + - LP: #1084539 + * libceph: fix overflow in osdmap_decode() + - LP: #1084539 + * libceph: fix overflow in osdmap_apply_incremental() + - LP: #1084539 + * libceph: transition socket state prior to actual connect + - LP: #1084539 + * libceph: fix NULL dereference in reset_connection() + - LP: #1084539 + * libceph: use con get/put methods + - LP: #1084539 + * libceph: drop ceph_con_get/put helpers and nref member + - LP: #1084539 + * libceph: encapsulate out message data setup + - LP: #1084539 + * libceph: encapsulate advancing msg page + - LP: #1084539 + * libceph: don't mark footer complete before it is + - LP: #1084539 + * libceph: move init_bio_*() functions up + - LP: #1084539 + * libceph: move init of bio_iter + - LP: #1084539 + * libceph: don't use bio_iter as a flag + - LP: #1084539 + * libceph: SOCK_CLOSED is a flag, not a state + - LP: #1084539 + * libceph: don't change socket state on sock event + - LP: #1084539 + * libceph: just set SOCK_CLOSED when state changes + - LP: #1084539 + * libceph: don't touch con state in con_close_socket() + - LP: #1084539 + * libceph: clear CONNECTING in ceph_con_close() + - LP: #1084539 + * libceph: clear NEGOTIATING when done + - LP: #1084539 + * libceph: define and use an explicit CONNECTED state + - LP: #1084539 + * libceph: separate banner and connect writes + - LP: #1084539 + * libceph: distinguish two phases of connect sequence + - LP: #1084539 + * libceph: small changes to messenger.c + - LP: #1084539 + * libceph: add some fine ASCII art + - LP: #1084539 + * libceph: set peer name on con_open, not init + - LP: #1084539 + * libceph: initialize mon_client con only once + - LP: #1084539 + * libceph: allow sock transition from CONNECTING to CLOSED + - LP: #1084539 + * libceph: initialize msgpool message types + - LP: #1084539 + * libceph: prevent the race of incoming work during teardown + - LP: #1084539 + * libceph: report socket read/write error message + - LP: #1084539 + * libceph: fix mutex coverage for ceph_con_close + - LP: #1084539 + * libceph: resubmit linger ops when pg mapping changes + - LP: #1084539 + * libceph: (re)initialize bio_iter on start of message receive + - LP: #1084539 + * libceph: protect ceph_con_open() with mutex + - LP: #1084539 + * libceph: reset connection retry on successfully negotiation + - LP: #1084539 + * libceph: fix fault locking; close socket on lossy fault + - LP: #1084539 + * libceph: move msgr clear_standby under con mutex protection + - LP: #1084539 + * libceph: move ceph_con_send() closed check under the con mutex + - LP: #1084539 + * libceph: drop gratuitous socket close calls in con_work + - LP: #1084539 + * libceph: close socket directly from ceph_con_close() + - LP: #1084539 + * libceph: drop unnecessary CLOSED check in socket state change callback + - LP: #1084539 + * libceph: replace connection state bits with states + - LP: #1084539 + * libceph: clean up con flags + - LP: #1084539 + * libceph: clear all flags on con_close + - LP: #1084539 + * libceph: fix handling of immediate socket connect failure + - LP: #1084539 + * libceph: revoke mon_client messages on session restart + - LP: #1084539 + * libceph: verify state after retaking con lock after dispatch + - LP: #1084539 + * libceph: avoid dropping con mutex before fault + - LP: #1084539 + * libceph: change ceph_con_in_msg_alloc convention to be less weird + - LP: #1084539 + * libceph: recheck con state after allocating incoming message + - LP: #1084539 + * libceph: fix crypto key null deref, memory leak + - LP: #1084539 + * libceph: delay debugfs initialization until we learn global_id + - LP: #1084539 + * libceph: avoid truncation due to racing banners + - LP: #1084539 + * libceph: only kunmap kmapped pages + - LP: #1084539 + * rbd: reset BACKOFF if unable to re-queue + - LP: #1084539 + * libceph: avoid NULL kref_put when osd reset races with alloc_msg + - LP: #1084539 + * ceph: fix dentry reference leak in encode_fh() + - LP: #1084539 + * ceph: Fix oops when handling mdsmap that decreases max_mds + - LP: #1084539 + * libceph: check for invalid mapping + - LP: #1084539 + * ceph: avoid 32-bit page index overflow + - LP: #1084539 + * ASoC: wm2200: Use rev A register patches on rev B + - LP: #1084539 + * ASoC: wm2200: Fix non-inverted OUT2 mute control + - LP: #1084539 + * drm/i915: remove useless BUG_ON which caused a regression in 3.5. + - LP: #1084539 + * USB: Enable LPM after a failed probe. + - LP: #1084539 + * usb: Don't enable LPM if the exit latency is zero. + - LP: #1084539 + * usb: Send Set SEL before enabling parent U1/U2 timeout. + - LP: #1084539 + * ASoC: fsi: don't reschedule DMA from an atomic context + - LP: #1084539 + * drm/i915: Set guardband clipping workaround bit in the right register. + - LP: #1084539 + * pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops + - LP: #1084539 + * hwmon: (coretemp) Add support for Atom CE4110/4150/4170 + - LP: #1084539 + * ALSA: hda - Fix registration race of VGA switcheroo + - LP: #1084539 + * usb: dwc3: gadget: fix 'endpoint always busy' bug + - LP: #1084539 + * usb: musb: am35xx: drop spurious unplugging a device + - LP: #1084539 + * drm/radeon: Don't destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy(). + - LP: #1084539 + * ALSA: hda - Always check array bounds in alc_get_line_out_pfx + - LP: #1084539 + * NLM: nlm_lookup_file() may return NLMv4-specific error codes + - LP: #1084539 + * x86: Exclude E820_RESERVED regions and memory holes above 4 GB from + direct mapping. + - LP: #1084539 + * SUNRPC: Prevent kernel stack corruption on long values of flush + - LP: #1084539 + * USB: cdc-acm: fix pipe type of write endpoint + - LP: #1084539 + * usb: acm: fix the computation of the number of data bits + - LP: #1084539 + * usb: host: xhci: New system added for Compliance Mode Patch on + SN65LVPE502CP + - LP: #1084539 + * USB: option: blacklist net interface on ZTE devices + - LP: #1084539 + * USB: option: add more ZTE devices + - LP: #1084539 + * ext4: race-condition protection for + ext4_convert_unwritten_extents_endio + - LP: #1084539 + * ext4: fix metadata checksum calculation for the superblock + - LP: #1084539 + * nohz: Fix idle ticks in cpu summary line of /proc/stat + - LP: #1084539 + * ring-buffer: Check for uninitialized cpu buffer before resizing + - LP: #1084539 + * Bluetooth: SMP: Fix setting unknown auth_req bits + - LP: #1084539 + * oprofile, x86: Fix wrapping bug in op_x86_get_ctrl() + - LP: #1084539 + * cfg80211/mac80211: avoid state mishmash on deauth + - LP: #1084539 + * mac80211: check if key has TKIP type before updating IV + - LP: #1084539 + * mac80211: use ieee80211_free_txskb in a few more places + - LP: #1084539 + * bcma: fix unregistration of cores + - LP: #1084539 + * net/wireless: ipw2200: Fix panic occurring in + ipw_handle_promiscuous_tx() + - LP: #1084539 + * iwlwifi: fix 6000 series channel switch command + - LP: #1084539 + * cgroup: notify_on_release may not be triggered in some cases + - LP: #1084539 + * dt: Document: correct tegra20/30 pinctrl slew-rate name + - LP: #1084539 + * pinctrl: tegra: set low power mode bank width to 2 + - LP: #1084539 + * pinctrl: tegra: correct bank for pingroup and drv pingroup + - LP: #1084539 + * s390: fix linker script for 31 bit builds + - LP: #1084539 + * pinctrl: remove mutex lock in groups show + - LP: #1084539 + * xen/x86: don't corrupt %eip when returning from a signal handler + - LP: #1084539 + * ALSA: hda - Fix silent headphone output from Toshiba P200 + - LP: #1084539 + * ext4: Checksum the block bitmap properly with bigalloc enabled + - LP: #1084539 + * ARM: 7559/1: smp: switch away from the idmap before updating + init_mm.mm_count + - LP: #1084539 + * usb hub: send clear_tt_buffer_complete events when canceling TT clear + work + - LP: #1084539 + * staging: comedi: amplc_pc236: fix invalid register access during detach + - LP: #1084539 + * Staging: android: binder: Fix memory leak on thread/process exit + - LP: #1084539 + * Staging: android: binder: Allow using highmem for binder buffers + - LP: #1084539 + * ext4: Avoid underflow in ext4_trim_fs() + - LP: #1084539 + * cpufreq / powernow-k8: Remove usage of smp_processor_id() in + preemptible code + - LP: #1084539 + * extcon: Unregister compat class at module unload to fix oops + - LP: #1084539 + * extcon: unregister compat link on cleanup + - LP: #1084539 + * pinctrl: fix missing unlock on error in pinctrl_groups_show() + - LP: #1084539 + * arch/tile: avoid generating .eh_frame information in modules + - LP: #1084539 + * drm/radeon: add some new SI PCI ids + - LP: #1084539 + * drm/radeon: add error output if VM CS fails on cayman + - LP: #1084539 + * xhci: endianness xhci_calculate_intel_u2_timeout + - LP: #1084539 + * xhci: fix integer overflow + - LP: #1084539 + * dmaengine: imx-dma: fix missing unlock on error in imxdma_xfer_desc() + - LP: #1084539 + * x86-64: Fix page table accounting + - LP: #1084539 + * dmaengine: sirf: fix a typo in dma_prep_interleaved + - LP: #1084539 + * dmaengine: sirf: fix a typo in moving running dma_desc to active queue + - LP: #1084539 + * amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] + - LP: #1084539 + * SUNRPC: Clear the connect flag when socket state is TCP_CLOSE_WAIT + - LP: #1084539 + * SUNRPC: Prevent races in xs_abort_connection() + - LP: #1084539 + * SUNRPC: Get rid of the xs_error_report socket callback + - LP: #1084539 + * iommu/tegra: smmu: Fix deadly typo + - LP: #1084539 + * ARM: at91/tc: fix typo in the DT document + - LP: #1084539 + * ARM: at91: at91sam9g10: fix SOC type detection + - LP: #1084539 + * ARM: at91/i2c: change id to let i2c-gpio work + - LP: #1084539 + * b43: Fix oops on unload when firmware not found + - LP: #1084539 + * USB: serial: Fix memory leak in sierra_release() + - LP: #1084539 + * x86, mm: Trim memory in memblock to be page aligned + - LP: #1084539 + * x86, mm: Use memblock memory loop instead of e820_RAM + - LP: #1084539 + * usb-storage: add unusual_devs entry for Casio EX-N1 digital camera + - LP: #1084539 + * Drivers: hv: Cleanup error handling in vmbus_open() + - LP: #1084539 + * sysfs: sysfs_pathname/sysfs_add_one: Use strlcat() instead of strcat() + - LP: #1084539 + * vhost: fix mergeable bufs on BE hosts + - LP: #1084539 + * USB: metro-usb: fix io after disconnect + - LP: #1084539 + * USB: whiteheat: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix io after disconnect + - LP: #1084539 + * USB: opticon: fix DMA from stack + - LP: #1084539 + * USB: opticon: fix memory leak in error path + - LP: #1084539 + * USB: mct_u232: fix broken close + - LP: #1084539 + * USB: sierra: fix memory leak in attach error path + - LP: #1084539 + * USB: sierra: fix memory leak in probe error path + - LP: #1084539 + * USB: mos7840: fix urb leak at release + - LP: #1084539 + * USB: mos7840: fix port-device leak in error path + - LP: #1084539 + * USB: mos7840: remove NULL-urb submission + - LP: #1084539 + * USB: mos7840: remove invalid disconnect handling + - LP: #1084539 + * ehci: fix Lucid nohandoff pci quirk to be more generic with BIOS + versions + - LP: #1084539 + * ehci: Add yet-another Lucid nohandoff pci quirk + - LP: #1084539 + * xhci: Fix potential NULL ptr deref in command cancellation. + - LP: #1084539 + * freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD + - LP: #1084539 + * mm: fix XFS oops due to dirty pages without buffers on s390 + - LP: #1084539 + * genalloc: stop crashing the system when destroying a pool + - LP: #1084539 + * drivers/rtc/rtc-imxdi.c: add missing spin lock initialization + - LP: #1084539 + * gen_init_cpio: avoid stack overflow when expanding + - LP: #1084539 + * fs/compat_ioctl.c: VIDEO_SET_SPU_PALETTE missing error check + - LP: #1084539 + * qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan + - LP: #1084539 + * efi: Defer freeing boot services memory until after ACPI init + - LP: #1084539 + * x86: efi: Turn off efi_enabled after setup on mixed fw/kernel + - LP: #1082059, #1084539 + * target: Re-add explict zeroing of INQUIRY bounce buffer memory + - LP: #1084539 + * ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and + CONFIG_VFPv3 set + - LP: #1084539 + * libceph: drop declaration of ceph_con_get() + - LP: #1084539 + * x86, mm: Find_early_table_space based on ranges that are actually being + mapped + - LP: #1084539 + * x86, mm: Undo incorrect revert in arch/x86/mm/init.c + - LP: #1084539 + * Linux 3.5.7.1 + - LP: #1084539 + * ALSA: hda - Cirrus: Correctly clear line_out_pins when moving to + speaker + - LP: #1076840 + * Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] + - LP: #898826 + * i915_hsw: drm/i915: Reserve ioctl numbers for set/get_caching + - LP: #1085245 + * i915_hsw: drm: Export drm_probe_ddc() + - LP: #1085245 + * i915_hsw: drm: remove the raw_edid field from struct drm_display_info + - LP: #1085245 + * i915_hsw: drm/i915: fix hsw uncached pte + - LP: #1085245 + * i915_hsw: drm/fb-helper: delay hotplug handling when partially bound + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_crtc_helper_set_config + - LP: #1085245 + * i915_hsw: drm/fb-helper: don't clobber output routing in setup_crtcs + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_helper_connector_dpms directly + - LP: #1085245 + * i915_hsw: drm/edid: Fix potential memory leak in edid_load() + - LP: #1085245 + + -- Luis Henriques Wed, 05 Dec 2012 11:53:06 +0000 + +linux (3.5.0-19.30) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1078041 + + [ Andy Whitcroft ] + + * [Config] update Vcs-git: to point to quantal + - LP: #1069204 + + [ Joseph Salisbury ] + + * SAUCE: ALSA: hda - add quirk for Thinkpad T430 + - LP: #1060372 + + [ Tim Gardner ] + + * [Config] CONFIG_USB_OTG=n for all but armel/armhf + - LP: #1047527 + * [Config] remove ndiswrapper from Provides: + - LP: #1076395 + * [Config] ONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + + [ Upstream Kernel Changes ] + + * kernel/sys.c: fix stack memory content leak via UNAME26 + - LP: #1065622, #1060521 + - CVE-2012-0957 + * use clamp_t in UNAME26 fix + - LP: #1065622, #1060521 + - CVE-2012-0957 + * net: fix divide by zero in tcp algorithm illinois + - LP: #1077091 + - CVE-2012-4565 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Add a load_firmware callback to struct hci_dev + - LP: #1065400 + * SAUCE: Bluetooth: Implement broadcom patchram firmware loader + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Luis Henriques Tue, 13 Nov 2012 15:49:15 +0000 + +linux (3.5.0-18.29) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1068224 + + [ Andy Whitcroft ] + + * [packaging] do not fail secure copy on older kernels + * SAUCE: efivarfs: efivarfs_file_read ensure we free data in error paths + - LP: #1063061 + * SAUCE: efivars: efivarfs_create() ensure we drop our reference on inode + on error + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() fix inode reference counts + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we free our temporary + name + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we clean up correctly on + error + - LP: #1063061 + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + + [ Jeremy Kerr ] + + * SAUCE: efi: Handle deletions and size changes in efivarfs_write_file + - LP: #1063061 + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad list additional contributors + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix lost sync upon palm contact + - LP: #1048258 + * SAUCE: input: Cypress PS/2 Trackpad fix taps turning into hardware + clicks + - LP: #1064086 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: fix crash when accessing /proc/mounts + concurrently" + - LP: #1066176 + * Revert "SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec" + - LP: #1066176 + + [ Lee, Chun-Yi ] + + * SAUCE: efi: add efivars kobject to efi sysfs folder + - LP: #1063061 + + [ Matt Fleming ] + + * SAUCE: efivarfs: Add documentation for the EFI variable filesystem + - LP: #1063061 + + [ Matthew Garrett ] + + * SAUCE: efi: Add support for a UEFI variable filesystem + - LP: #1063061 + + [ Sarveshwar Bandi ] + + * SAUCE: bridge: Pull ip header into skb->data before looking into ip + header. + - LP: #1065150 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: correctly order the ring init sequence" + - LP: #1066176 + * vfs: dcache: fix deadlock in tree traversal + - LP: #1063761 + * dm mpath: only retry ioctl when no paths if queue_if_no_path set + - LP: #1063761 + * dm: handle requests beyond end of device instead of using BUG_ON + - LP: #1063761 + * dm table: clear add_random unless all devices have it set + - LP: #1063761 + * dm verity: fix overflow check + - LP: #1063761 + * usb: gadget: make g_printer enumerate again + - LP: #1063761 + * usb: gadget: initialize the strings in tcm_usb_gadget properly + - LP: #1063761 + * USB: option: blacklist QMI interface on ZTE MF683 + - LP: #1063761 + * USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support + - LP: #1063761 + * USB: qcaux: add Pantech vendor class match + - LP: #1063761 + * usb: host: xhci: Fix Null pointer dereferencing with 71c731a for + non-x86 systems + - LP: #1063761 + * USB: serial: fix up bug with missing {} + - LP: #1063761 + * staging: speakup_soft: Fix reading of init string + - LP: #1063761 + * tty: keyboard.c: Remove locking from vt_get_leds. + - LP: #1063761 + * staging: r8712u: Do not queue cloned skb + - LP: #1063761 + * staging: comedi: s626: don't dereference insn->data + - LP: #1063761 + * staging: comedi: jr3_pci: fix iomem dereference + - LP: #1063761 + * staging: comedi: don't dereference user memory for INSN_INTTRIG + - LP: #1063761 + * staging: comedi: fix memory leak for saved channel list + - LP: #1063761 + * Remove BUG_ON from n_tty_read() + - LP: #1063761 + * TTY: ttyprintk, don't touch behind tty->write_buf + - LP: #1063761 + * serial: omap: fix software flow control + - LP: #1063761 + * serial: pl011: handle corruption at high clock speeds + - LP: #1063761 + * serial: set correct baud_base for EXSYS EX-41092 Dual 16950 + - LP: #1063761 + * tools/hv: Fix file handle leak + - LP: #1063761 + * tools/hv: Fix exit() error code + - LP: #1063761 + * tools/hv: Check for read/write errors + - LP: #1063761 + * b43legacy: Fix crash on unload when firmware not available + - LP: #1063761 + * firmware: Add missing attributes to EFI variable attribute print out + from sysfs + - LP: #1063761 + * xhci: Intel Panther Point BEI quirk. + - LP: #1063761 + * xHCI: add cmd_ring_state + - LP: #1063761 + * xHCI: add aborting command ring function + - LP: #1063761 + * xHCI: cancel command after command timeout + - LP: #1063761 + * xHCI: handle command after aborting the command ring + - LP: #1063761 + * Increase XHCI suspend timeout to 16ms + - LP: #1063761 + * HID: keep dev_rdesc unmodified and use it for comparisons + - LP: #1049623, #1063761 + * ath9k: Disable ASPM only for AR9285 + - LP: #1063761 + * xen/pciback: Restore the PCI config space after an FLR. + - LP: #1063761 + * coredump: prevent double-free on an error path in core dumper + - LP: #1063761 + * n_gsm.c: Implement 3GPP27.010 DLC start-up procedure in MUX + - LP: #1063761 + * n_gsm: uplink SKBs accumulate on list + - LP: #1063761 + * n_gsm: added interlocking for gsm_data_lock for certain code paths + - LP: #1063761 + * n_gsm: memory leak in uplink error path + - LP: #1063761 + * UBI: fix autoresize handling in R/O mode + - LP: #1063761 + * UBI: erase free PEB with bitflip in EC header + - LP: #1063761 + * Yama: handle 32-bit userspace prctl + - LP: #1063761 + * SCSI: ibmvscsi: Fix host config length field overflow + - LP: #1063761 + * SCSI: hpsa: Use LUN reset instead of target reset + - LP: #1063761 + * can: mscan-mpc5xxx: fix return value check in mpc512x_can_get_clock() + - LP: #1063761 + * remoteproc: select VIRTIO to avoid build breakage + - LP: #1063761 + * remoteproc: fix a potential NULL-dereference on cleanup + - LP: #1063761 + * IPoIB: Fix use-after-free of multicast object + - LP: #1063761 + * IB/srp: Fix use-after-free in srp_reset_req() + - LP: #1063761 + * IB/srp: Avoid having aborted requests hang + - LP: #1063761 + * isci: fix isci_pci_probe() generates warning on efi failure path + - LP: #1063761 + * x86/alternatives: Fix p6 nops on non-modular kernels + - LP: #1063761 + * SCSI: scsi_remove_target: fix softlockup regression on hot remove + - LP: #1063761 + * SCSI: scsi_dh_alua: Enable STPG for unavailable ports + - LP: #1063761 + * Linux 3.5.6 + - LP: #1063761 + * au0828: fix case where STREAMOFF being called on stopped stream causes + BUG() + - LP: #1062917 + * ALSA: hda - do not detect jack on internal speakers for Realtek + - LP: #1064621 + * HID: Remove QUANTA from special drivers list + - LP: #1064921 + * drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 + - LP: #1064924 + * Revert dyndbg: fix for SOH in logging messages + - LP: #1066176 + * mn10300: only add -mmem-funcs to KBUILD_CFLAGS if gcc supports it + - LP: #1066176 + * kbuild: make: fix if_changed when command contains backslashes + - LP: #1066176 + * kbuild: Fix gcc -x syntax + - LP: #1066176 + * slab: fix the DEADLOCK issue on l3 alien lock + - LP: #1066176 + * intel-iommu: Default to non-coherent for domains unattached to iommus + - LP: #1066176 + * ARM: 7548/1: include linux/sched.h in syscall.h + - LP: #1066176 + * em28xx: Make all em28xx extensions to be initialized asynchronously + - LP: #1066176 + * media: rc: ite-cir: Initialise ite_dev::rdev earlier + - LP: #1066176 + * media: gspca_pac7302: add support for device 1ae7:2001 Speedlink Snappy + Microphone SL-6825-SBK + - LP: #1066176 + * ACPI: run _OSC after ACPI_FULL_INITIALIZATION + - LP: #1066176 + * PCI: acpiphp: check whether _ADR evaluation succeeded + - LP: #1066176 + * mfd: max8925: Move _IO resources out of ioport_ioresource + - LP: #1066176 + * lib/gcd.c: prevent possible div by 0 + - LP: #1066176 + * kernel/sys.c: call disable_nonboot_cpus() in kernel_restart() + - LP: #1066176 + * drivers/scsi/atp870u.c: fix bad use of udelay + - LP: #1066176 + * lguest: fix occasional crash in example launcher. + - LP: #1066176 + * powerpc/eeh: Fix crash on converting OF node to edev + - LP: #1066176 + * ixgbe: fix PTP ethtool timestamping function + - LP: #1066176 + * rapidio/rionet: fix multicast packet transmit logic + - LP: #1066176 + * PM / Sleep: use resume event when call dpm_resume_early + - LP: #1066176 + * workqueue: add missing smp_wmb() in process_one_work() + - LP: #1066176 + * jbd2: don't write superblock when if its empty + - LP: #1066176 + * localmodconfig: Fix localyesconfig to set to 'y' not 'm' + - LP: #1066176 + * bnx2x: fix rx checksum validation for IPv6 + - LP: #1066176 + * tcp: fix regression in urgent data handling + - LP: #1066176 + * xfrm: Workaround incompatibility of ESN and async crypto + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL #2 + - LP: #1066176 + * xfrm: fix a read lock imbalance in make_blackhole + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_auth() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_state() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_policy() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_tmpl() + - LP: #1066176 + * xfrm_user: don't copy esn replay window twice for new states + - LP: #1066176 + * net: ethernet: davinci_cpdma: decrease the desc count when cleaning up + the remaining packets + - LP: #1066176 + * ixp4xx_hss: fix build failure due to missing linux/module.h inclusion + - LP: #1066176 + * netxen: check for root bus in netxen_mask_aer_correctable + - LP: #1066176 + * net-sched: sch_cbq: avoid infinite loop + - LP: #1066176 + * pkt_sched: fix virtual-start-time update in QFQ + - LP: #1066176 + * sierra_net: Endianess bug fix. + - LP: #1066176 + * 8021q: fix mac_len recomputation in vlan_untag() + - LP: #1066176 + * batman-adv: make batadv_test_bit() return 0 or 1 only + - LP: #1066176 + * ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt + - LP: #1066176 + * ipv6: del unreachable route when an addr is deleted on lo + - LP: #1066176 + * ipv6: fix return value check in fib6_add() + - LP: #1066176 + * tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero + - LP: #1066176 + * sctp: Don't charge for data in sndbuf again when transmitting packet + - LP: #1066176 + * pppoe: drop PPPOX_ZOMBIEs in pppoe_release + - LP: #1066176 + * net: small bug on rxhash calculation + - LP: #1066176 + * net: guard tcp_set_keepalive() to tcp sockets + - LP: #1066176 + * ipv4: raw: fix icmp_filter() + - LP: #1066176 + * ipv6: raw: fix icmpv6_filter() + - LP: #1066176 + * ipv6: mip6: fix mip6_mh_filter() + - LP: #1066176 + * l2tp: fix a typo in l2tp_eth_dev_recv() + - LP: #1066176 + * netrom: copy_datagram_iovec can fail + - LP: #1066176 + * net: do not disable sg for packets requiring no checksum + - LP: #1066176 + * aoe: assert AoE packets marked as requiring no checksum + - LP: #1066176 + * drm/savage: re-add busmaster enable, regression fix + - LP: #1066176 + * SCSI: zfcp: Adapt to new FC_PORTSPEED semantics + - LP: #1066176 + * SCSI: zfcp: Make trace record tags unique + - LP: #1066176 + * SCSI: zfcp: Bounds checking for deferred error trace + - LP: #1066176 + * SCSI: zfcp: Do not wakeup while suspended + - LP: #1066176 + * SCSI: zfcp: remove invalid reference to list iterator variable + - LP: #1066176 + * SCSI: zfcp: restore refcount check on port_remove + - LP: #1066176 + * SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device + - LP: #1066176 + * PCI: Check P2P bridge for invalid secondary/subordinate range + - LP: #1066176 + * ext4: ignore last group w/o enough space when resizing instead of + BUG'ing + - LP: #1066176 + * ext4: don't copy non-existent gdt blocks when resizing + - LP: #1066176 + * ext4: avoid duplicate writes of the backup bg descriptor blocks + - LP: #1066176 + * ext4: fix potential deadlock in ext4_nonda_switch() + - LP: #1066176 + * ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1066176 + * ext4: move_extent code cleanup + - LP: #1066176 + * ext4: online defrag is not supported for journaled files + - LP: #1066176 + * ext4: always set i_op in ext4_mknod() + - LP: #1066176 + * ext4: fix fdatasync() for files with only i_size changes + - LP: #1066176 + * xfrm_user: ensure user supplied esn replay window is valid + - LP: #1066176 + * ASoC: wm_hubs: Ensure volume updates are handled during class W startup + - LP: #1066176 + * ASoC: wm9712: Fix name of Capture Switch + - LP: #1066176 + * kpageflags: fix wrong KPF_THP on non-huge compound pages + - LP: #1066176 + * hugetlb: do not use vma_hugecache_offset() for vma_prio_tree_foreach + - LP: #1066176 + * mm: fix invalidate_complete_page2() lock ordering + - LP: #1066176 + * mm: thp: fix pmd_present for split_huge_page and PROT_NONE with THP + - LP: #1066176 + * MIPS: ath79: use correct fractional dividers for {CPU,DDR}_PLL on + AR934x + - LP: #1066176 + * drm/i915: prevent possible pin leak on error path + - LP: #1066176 + * ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310 + - LP: #1066176 + * ALSA: aloop - add locking to timer access + - LP: #1066176 + * ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690, #1066176 + * ALSA: hda - limit internal mic boost for Asus X202E + - LP: #1052460, #1066176 + * ALSA: usb - disable broken hw volume for Tenx TP6911 + - LP: #1066176, #559939 + * ALSA: USB: Support for (original) Xbox Communicator + - LP: #1066176 + * drm/nvc0/fence: restore pre-suspend fence buffer context on resume + - LP: #1066176 + * drm: Destroy the planes prior to destroying the associated CRTC + - LP: #1066176 + * drm/radeon: only adjust default clocks on NI GPUs + - LP: #1066176 + * drm/radeon: Add MSI quirk for gateway RS690 + - LP: #1066176 + * drm/radeon: force MSIs on RS690 asics + - LP: #1066176 + * drm/i915: Flush the pending flips on the CRTC before modification + - LP: #1066176 + * drm/i915: call drm_handle_vblank before finish_page_flip + - LP: #1066176 + * drm/i915: Fix GT_MODE default value + - LP: #1066176 + * ia64: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * h8300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * parisc: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * xtensa: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * frv: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * mn10300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m68k: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * alpha: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * cris: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m32r: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * score: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * rcu: Fix day-one dyntick-idle stall-warning bug + - LP: #1066176 + * revert "mm: mempolicy: Let vma_merge and vma_split handle + vma->vm_policy linkages" + - LP: #1066176 + * mempolicy: remove mempolicy sharing + - LP: #1066176 + * mempolicy: fix a race in shared_policy_replace() + - LP: #1066176 + * mempolicy: fix refcount leak in mpol_set_shared_policy() + - LP: #1066176 + * mempolicy: fix a memory corruption by refcount imbalance in + alloc_pages_vma() + - LP: #1066176 + * efi: Build EFI stub with EFI-appropriate options + - LP: #1066176 + * efi: initialize efi.runtime_version to make + query_variable_info/update_capsule workable + - LP: #1066176 + * CPU hotplug, cpusets, suspend: Don't modify cpusets during + suspend/resume + - LP: #1066176 + * mtd: mtdpart: break it as soon as we parse out the partitions + - LP: #1066176 + * mtd: autcpu12-nvram: Fix compile breakage + - LP: #1066176 + * mtd: nandsim: bugfix: fail if overridesize is too big + - LP: #1066176 + * mtd: nand: Use the mirror BBT descriptor when reading its version + - LP: #1066176 + * mtd: omap2: fix omap_nand_remove segfault + - LP: #1066176 + * mtd: omap2: fix module loading + - LP: #1066176 + * mmc: omap_hsmmc: Pass on the suspend failure to the PM core + - LP: #1066176 + * mmc: sh-mmcif: avoid oops on spurious interrupts + - LP: #1066176 + * JFFS2: fix unmount regression + - LP: #1066176 + * JFFS2: don't fail on bitflips in OOB + - LP: #1066176 + * cifs: reinstate the forcegid option + - LP: #1066176 + * Convert properly UTF-8 to UTF-16 + - LP: #1066176 + * Linux 3.5.7 + - LP: #1066176 + + -- Luis Henriques Thu, 18 Oct 2012 17:43:41 +0100 + +linux (3.5.0-17.28) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] we already have a valid src_pkg_name + * [packaging] allow us to select which builds have uefi signed versions + + [ James M Leddy ] + + * SAUCE: input: fix weird issue of synaptics psmouse sync lost after + resume + - LP: #717970 + + [ Paolo Pisati ] + + * SAUCE: omap3 clocks .dev_id = NULL + - LP: #1061599 + * [Config] omap: disable USB_[EHCI|OHCI]_HCD_PLATFORM + - LP: #1061599 + * [Config] omap: enforce USB_[EHCI|OHCI]_HCD_PLATFORM=n + - LP: #1061599 + + [ Stefan Bader ] + + * SAUCE: net/ipv4: Always flush route cache on unregister batch call + - LP: #1021471 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn + - LP: #1030233 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Remove rules for matching Broadcom vendor specific + IDs + - LP: #1030233 + + -- Leann Ogasawara Tue, 09 Oct 2012 11:23:41 -0700 + +linux (3.5.0-17.27) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] add custom upload for the kernel binary package + + -- Andy Whitcroft Thu, 04 Oct 2012 22:14:01 +0100 + +linux (3.5.0-17.26) quantal-proposed; urgency=low + + [ David Henningsson ] + + * SAUCE: ALSA: hda - fix indices on boost volume on Conexant + - LP: #1059523 + + [ Leann Ogasawara ] + + * [Config] Build in CONFIG_X86_PCC_CPUFREQ=y + - LP: #1061126 + + [ Rob Herring ] + + * Revert "SAUCE: ahci_platform: add custom hard reset for Calxeda ahci + ctrlr" + - LP: #1059432 + * Revert "SAUCE: net: calxedaxgmac: add write barriers around setting + owner bit" + - LP: #1059432 + * Revert "SAUCE: ARM: highbank: use writel_relaxed variant for pwr + requests" + - LP: #1059432 + * Revert "SAUCE: force DMA buffers to non-bufferable on highbank" + - LP: #1059432 + * Revert "SAUCE: input: add a key driver for highbank" + - LP: #1059432 + * [Config] Align highbank config with amd64-generic and add new configs + - LP: #1059432 + * SAUCE: net: calxedaxgmac: enable operate on 2nd frame mode + - LP: #1059432 + * SAUCE: net: calxedaxgmac: remove explicit rx dma buffer polling + - LP: #1059432 + * SAUCE: net: calxedaxgmac: use relaxed i/o accessors in rx and tx paths + - LP: #1059432 + * SAUCE: net: calxedaxgmac: drop some unnecessary register writes + - LP: #1059432 + * SAUCE: net: calxedaxgmac: rework transmit ring handling + - LP: #1059432 + * SAUCE: ARM: highbank: retry wfi on reset request + - LP: #1059432 + + [ Tim Gardner ] + + * [Config] TIDSPBRIDGE=m + - LP: #1058022 + * rebase to v3.5.5 + + [ Upstream Kernel Changes ] + + * common: DMA-mapping: add DMA_ATTR_NO_KERNEL_MAPPING attribute + - LP: #1059432 + * common: DMA-mapping: add DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: dma-mapping: add support for DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: add coherent dma ops + - LP: #1059432 + * ARM: add coherent iommu dma ops + - LP: #1059432 + * ARM: highbank: add coherent DMA setup + - LP: #1059432 + * sata: add platform driver for Calxeda AHCI controller + - LP: #1059432 + * xhci: Rate-limit XHCI_TRUST_TX_LENGTH quirk warning. + - LP: #1039478 + * agp/intel-gtt: remove dead code + - LP: #1011440 + * drm/i915: stop using dev->agp->base + - LP: #1011440 + * agp/intel-gtt: don't require the agp bridge on setup + - LP: #1011440 + * drm/i915 + agp/intel-gtt: prep work for direct setup + - LP: #1011440 + * agp/intel-gtt: move gart base addres setup + - LP: #1011440 + * drm/i915: don't use dev->agp + - LP: #1011440 + * drm/i915: disable drm agp support for !gen3 with kms enabled + - LP: #1011440 + * agp/intel-agp: remove snb+ host bridge pciids + - LP: #1011440 + * rebase to v3.5.5 + - LP: #1000424 + + -- Leann Ogasawara Wed, 03 Oct 2012 11:11:18 -0700 + +linux (3.5.0-16.25) quantal-proposed; urgency=low + + [ git@status.e4ward.com ] + + * SAUCE: input: Cypress PS/2 Trackpad fix multi-source, double-click + - LP: #1055788 + + [ Tim Gardner ] + + * [Config] revert '[Config] enable CONFIG_X86_X32=y' + - LP: #1041883 + + [ Upstream Kernel Changes ] + + * vmwgfx: corruption in vmw_event_fence_action_create() + * drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs + - LP: #1058088 + * drm/nv50-/gpio: initialise to vbios defaults during init + - LP: #1058088 + * igb: A fix to VF TX rate limit + - LP: #1058188 + * igb: Add switch case for supported hardware to igb_ptp_remove. + - LP: #1058188 + * igb: Support the get_ts_info ethtool method. + - LP: #1058188 + * igb: Streamline RSS queue and queue pairing assignment logic. + - LP: #1058188 + * igb: Update firmware info output + - LP: #1058188 + * igb: Version bump + - LP: #1058188 + * igb: reset PHY in the link_up process to recover PHY setting after + power down. + - LP: #1058188 + * igb: Fix for failure to init on some 82576 devices. + - LP: #1058188 + * igb: correct hardware type (i210/i211) check in igb_loopback_test() + - LP: #1058188 + * igb: don't break user visible strings over multiple lines in + igb_ethtool.c + - LP: #1058188 + * igb: add delay to allow igb loopback test to succeed on 8086:10c9 + - LP: #1058188 + * igb: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058188 + * igb: Fix register defines for all non-82575 hardware + - LP: #1058188 + * e1000e: use more informative logging macros when netdev not yet + registered + - LP: #1058219 + * e1000e: Cleanup code logic in e1000_check_for_serdes_link_82571() + - LP: #1058219 + * e1000e: Program the correct register for ITR when using MSI-X. + - LP: #1058219 + * e1000e: advertise transmit time stamping + - LP: #1058219 + * e1000e: 82571 Tx Data Corruption during Tx hang recovery + - LP: #1058219 + * e1000e: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058219 + * e1000: Combining Bitwise OR in one expression. + - LP: #1058221 + * e1000: advertise transmit time stamping + - LP: #1058221 + * e1000: Small packets may get corrupted during padding by HW + - LP: #1058221 + * sched: Fix migration thread runtime bogosity + - LP: #1057593 + * ACER: Add support for accelerometer sensor + - LP: #1055433 + * ACER: Fix Smatch double-free issue + - LP: #1055433 + + [ Wen-chien Jesse Sung ] + + * SAUCE: HID: ntrig: change default value of logical/physical + width/height to 1 + - LP: #1044248 + + -- Leann Ogasawara Fri, 28 Sep 2012 14:07:41 -0700 + +linux (3.5.0-16.24) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ata_piix: add a disable_driver option + - LP: #994870 + + [ Christian König ] + + * (pre-stable) drm/radeon: make 64bit fences more robust v3 (3.5 stable) + - LP: #1029582 + + [ David Henningsson ] + + * SAUCE: ALSA: hda - use both input paths on Conexant auto parser + - LP: #1037642 + * SAUCE: ALSA: hda - fix control names for multiple speaker out on + IDT/STAC + - LP: #1046734 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: ALSA: hda/via - don't report presence on HPs with no presence + support + - LP: #1052499 + * SAUCE: ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1053019 + * SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690 + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix disabling tap-to-click + - LP: #1048816 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_AST + - LP: #1053290 + + [ Stefan Bader ] + + * [Config] Disable the Cirrus QEMU drm driver + - LP: #1038055 + + [ Upstream Kernel Changes ] + + * Revert "KVM: VMX: Fix KVM_SET_SREGS with big real mode segments" + - LP: #1045027 + * x86, efi: Handover Protocol + * drm/i915: HDMI - Clear Audio Enable bit for Hot Plug + - LP: #1056729 + * UBUNTU SAUCE: apparmor: fix IRQ stack overflow + - LP: #1056078 + * drm/nouveau: fix booting with plymouth + dumb support + - LP: #1043518 + * ALSA: hda - Add DeviceID for Haswell HDA + - LP: #1057698 + * ALSA: hda - add Haswell HDMI codec id + - LP: #1057698 + * ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCH + - LP: #1057698 + * ALSA: hda_intel: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1011438, #1057698 + + [ Wang Xingchao ] + + * SAUCE: ALSA: hda - Add another pci id for Haswell board + - LP: #1057698 + + [ Wen-chien Jesse Sung ] + + * SAUCE: drm/i915: Explicitly disable RC6 for certain models + - LP: #1002170, #1008867 + + -- Leann Ogasawara Thu, 27 Sep 2012 13:55:52 -0700 + +linux (3.5.0-15.23) quantal; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: don't forget the PCH backlight registers" + - LP: #1053269, #1055231, #1055665 + * Revert "drm/i915: fix up PCH backlight #define mixup" + - LP: #1053269, #1055665 + * Revert "drm/i915: allow pipe A for lvds on gen4" + - LP: #1053269, #1055665 + * Revert "drm/i915: properly enable the blc controller on the right pipe" + - LP: #1053269, #1055665 + * Revert "drm/i915: clear up backlight #define confusion on gen4+" + - LP: #1053269, #1055665 + * Revert "drm/i915: pnv has a backlight polarity control bit, too" + - LP: #1053269, #1055665 + + -- Leann Ogasawara Mon, 24 Sep 2012 12:33:26 -0700 + +linux (3.5.0-15.22) quantal; urgency=low + + * fix regressions introduced by the last batch of i915 patches. + + [ Upstream Kernel Changes ] + + * drm/i915: fix up PCH backlight #define mixup + - LP: #954661 + * drm/i915: don't forget the PCH backlight registers + - LP: #954661 + + -- Tim Gardner Wed, 19 Sep 2012 13:32:19 -0600 + +linux (3.5.0-15.21) quantal; urgency=low + + [ Tim Gardner ] + + * ubuntu: AUFS -- update to 18e455787597579fe144cdb2f18aa6a0a32c46a4 + * [Config] Enable aufs + - LP: #908784 + + [ Upstream Kernel Changes ] + + * eCryptfs: check for eCryptfs cipher support at mount + - LP: #338914 + * drm/i915: pnv has a backlight polarity control bit, too + - LP: #954661 + * drm/i915: clear up backlight #define confusion on gen4+ + - LP: #954661 + * drm/i915: properly enable the blc controller on the right pipe + - LP: #954661 + * drm/i915: allow pipe A for lvds on gen4 + - LP: #954661 + + -- Tim Gardner Tue, 18 Sep 2012 08:37:51 -0400 + +linux (3.5.0-15.20) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.4 + * SAUCE: CONFIG_HID_BATTERY_STRENGTH=y + - LP: #1003090 + + [ Upstream Kernel Changes ] + + * eCryptfs: Copy up attributes of the lower target inode after rename + - LP: #561129 + * eCryptfs: Write out all dirty pages just before releasing the lower + file + - LP: #1047261 + * eCryptfs: Call lower ->flush() from ecryptfs_flush() + - LP: #1047261 + * af_netlink: force credentials passing [CVE-2012-3520] + - LP: #1052097 + - CVE-2012-3520 + * drm/i915: clarify IBX dp workaround + - LP: #1011440 + * drm/i915: Implement w/a for sporadic read failures on waking from rc6 + - LP: #1011440 + * drm/i915: support Haswell force waking + - LP: #1011440 + * drm/i915: add RPS configuration for Haswell + - LP: #1011440 + * drm/i915: enable RC6 by default on Haswell + - LP: #1011440 + * drm/i915: introduce haswell_init_clock_gating + - LP: #1011440 + * drm/i915: enable RC6 workaround on Haswell + - LP: #1011440 + * drm/i915: re-initialize DDI buffer translations after resume + - LP: #1011440 + * drm/i915: fix PIPE_DDI_PORT_MASK + - LP: #1011440 + * drm/i915: try to train DP even harder + - LP: #1011440 + * drm/i915: add more Haswell PCI IDs + - LP: #1011440 + * rebase to v3.5.4 + - LP: #1038651 + + -- Leann Ogasawara Mon, 17 Sep 2012 13:41:39 -0700 + +linux (3.5.0-14.19) quantal; urgency=low + + [ Tim Gardner ] + + * [Config] Fix debug FTBS on non-x86 + + -- Tim Gardner Fri, 14 Sep 2012 13:06:02 -0600 + +linux (3.5.0-14.18) quantal; urgency=low + + [ Tim Gardner ] + + * SAUCE: Add 'used' to the video_cards structure attributes + - LP: #1049650 + + -- Tim Gardner Fri, 14 Sep 2012 10:58:40 -0400 + +linux (3.5.0-14.17) quantal; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Intel xhci: Only switch the switchable ports + - LP: #1034814 + + -- Leann Ogasawara Wed, 12 Sep 2012 08:34:21 -0700 + +linux (3.5.0-14.16) quantal-proposed; urgency=low + + [ Bernhard Froemel ] + + * SAUCE: apple-gmux: Fix index read functions + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad move PSMOUSE_CYPRESS enum + - LP: #1041594 + + [ Seth Forshee ] + + * SAUCE: Input: synaptics - Adjust threshold for treating position values + as negative + - LP: #1046512 + + [ Upstream Kernel Changes ] + + * mei: check for error codes that mei_flow_ctrl_creds retuns + * mei: make mei_write_message more readable + * mei: mei_irq_thread_write_handler check for overflow + * mei: group wd_interface_reg with watchdog variables within struct + mei_device + * mei: don't query HCSR for host buffer depth + * mei: revamp host buffer interface function + * mei: mei_device can be const for mei register access functions + * mei: remove write only wariable wd_due_counter + * mei: mei_wd_host_init: update the comment + * mei: introduce mei_data2slots wrapper + * mei: streamline the _mei_irq_thread_close/ioctol functions + * mei: mei_irq_thread_write_handler - line break fix + * mei: use module_pci_driver + * mei: fix device stall after wd is stopped + + -- Leann Ogasawara Mon, 10 Sep 2012 13:05:18 -0700 + +linux (3.5.0-14.15) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fs: d_revalidate methods may be passed a NULL nameidata + - LP: #1038075 + + [ Dave Airlie ] + + * SAUCE: drm/vmwgfx: add MODULE_DEVICE_TABLE so vmwgfx loads at boot + - LP: #1039157 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEVPTS_MULTIPLE_INSTANCES for highbank + - LP: #1038259 + + [ Tim Gardner ] + + * SAUCE: wlcore: Declare MODULE_FIRMWARE usage + - LP: #1042918 + + [ Upstream Kernel Changes ] + + * asus-nb-wmi: add some video toggle keys + - LP: #1022427 + * [media] uvcvideo: Fix frame drop in bulk video stream + * [media] uvcvideo: Fix alternate setting selection + * Input: wacom - add support to Cintiq 22HD + - LP: #1043733 + * ALSA: HDA: Create phantom jacks for fixed inputs and outputs + * ALSA: HDA: Support single 3-pin jack without VREF on the actual pin + - LP: #1018262 + * ALSA: hda - give 3-pin jack the name "Headphone Mic Jack" + * ALSA: hda - Do not set GPIOs for speakers on IDT if there are no + speakers + - LP: #1040077 + * ALSA: hda - Fix pop noise in headphones on S3 for Asus X55A, X55V + - LP: #1034779 + * ALSA: hda - Always call standard unsolicited event for Realtek codecs + - LP: #1021192 + * ALSA: hda - Add the inverted digital mic workaround to Realtek codecs + * ALSA: hda - Add inverted mic quirks for Asus U41SV, Acer 1810TZ and + AOD260 + - LP: #1006089, #996611, #997227 + * ALSA: hda - don't create dysfunctional mixer controls for ca0132 + - LP: #1038651 + * ALSA: hda - Don't send invalid volume knob command on IDT 92hd75bxx + + -- Leann Ogasawara Thu, 06 Sep 2012 10:06:28 -0700 + +linux (3.5.0-13.14) quantal; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + [ Upstream Kernel Changes ] + + * [media] uvcvideo: Reset the bytesused field when recycling an erroneous + buffer + - LP: #1042809 + + -- Tim Gardner Tue, 28 Aug 2012 08:43:55 -0400 + +linux (3.5.0-13.13) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.3 + * [Config] Add smsc{79}5xx to nic-usb-modules + - LP: #1041397 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.3 + + -- Leann Ogasawara Mon, 27 Aug 2012 11:29:08 -0700 + +linux (3.5.0-12.12) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * [Config] Fix typo on control.stub.in + + [ Ricardo Salveti de Araujo ] + + * [Config] installing omapdrm specific headers for external drivers + - LP: #1038846 + + [ Seth Forshee ] + + * SAUCE: apple-gmux: Fix port address calculation in gmux_pio_write32() + + [ Stefan Bader ] + + * SAUCE: (no-up) x86/mm: Fix 64bit size of mapping tables + - LP: #1022561 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove sb16 files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * net: Allow driver to limit number of GSO segments per skb + - LP: #1037456 + - CVE-2012-3412 + * sfc: Fix maximum number of TSO segments and minimum TX queue size + - LP: #1037456 + - CVE-2012-3412 + * tcp: Apply device TSO segment limit earlier + - LP: #1037456 + - CVE-2012-3412 + * cfg80211: add channel flag to prohibit OFDM operation + * brcmsmac: use channel flags to restrict OFDM + * gmux: Add generic write32 function + * apple_gmux: Add support for newer hardware + * apple_gmux: Fix ACPI video unregister + * apple-gmux: Fix kconfig dependencies + * vga_switcheroo: Don't require handler init callback + * vga_switcheroo: Remove assumptions about registration/unregistration + ordering + * apple-gmux: Add display mux support + * mei: add mei_quirk_probe function + - LP: #1041164 + * mutex: Place lock in contended state after fastpath_lock failure + - LP: #1041114 + + -- Leann Ogasawara Fri, 24 Aug 2012 07:13:00 -0700 + +linux (3.5.0-11.11) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_X86_X32=y + + [ Cypress Semiconductor Corporation ] + + * SAUCE: input: Cypress PS/2 Trackpad mouse driver + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad link driver into psmouse-base + - LP: #978807 + + [ Dann Frazier ] + + * [Config] compile the rtc-pl031 driver as static on the highbank kernel + flavour + - LP: #1035110 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEBUG_HIGHBANK_UART for highbank + - LP: #1034781 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad code style cleanup + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad eliminate dead code + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad fix no-config stubs + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad set default debug_level=0 + - LP: #978807 + * SAUCE: [Config] add MOUSE_PS2_CYPRESS=y + - LP: #978807 + + [ Kees Cook ] + + * SAUCE: Yama: access task_struct->comm directly + * SAUCE: Yama: add link restrictions + * SAUCE: security: unconditionally chain to Yama LSM + + [ Seth Forshee ] + + * SAUCE: (drop after 3.6) irq_remap: disable IRQ remapping if any IOAPIC + lacks an IOMMU + - LP: #1034459 + + [ Stefan Bader ] + + * (config) Enable getabis to use local package copies + + [ Tim Gardner ] + + * rebase to v3.5.2 + + [ Upstream Kernel Changes ] + + * rds: set correct msg_namelen + - LP: #1031112 + - CVE-2012-2340 + * rebase to v3.5.2 + - LP: #1027789 + - LP: #1001251 + + -- Leann Ogasawara Thu, 16 Aug 2012 08:52:09 -0700 + +linux (3.5.0-10.10) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5.1 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_AFS_FSCACHE=y + - LP: #728977 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove emi62 files duplicated in linux-firmware + * SAUCE: firmware: Remove tehuti files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * overlayfs: copy up i_uid/i_gid from the underlying inode + - LP: #944386 + * hwmon: (applesmc) Shorten minimum wait time + - LP: #1034449 + * hwmon: (applesmc) Decode and act on read/write status codes + - LP: #1034449 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.1 + - LP: #1026953 + - LP: #1025377 + + -- Leann Ogasawara Sun, 12 Aug 2012 13:16:43 -0700 + +linux (3.5.0-9.9) quantal-proposed; urgency=low + + [ Daniel P. Berrange ] + + * SAUCE: (drop after 3.6) Forbid invocation of kexec_load() outside + initial PID namespace + - LP: #1034125 + + [ Douglas Bagnall ] + + * SAUCE: Unlock the rc_dev lock when the raw device is missing + - LP: #1015836 + + [ Ike Panhc ] + + * [Config] Enable EDAC/CLK for highbank + - LP: #1008345 + + [ Leann Ogasawara ] + + * Revert "ubuntu: AUFS -- reenable" + + [ Rob Herring ] + + * SAUCE: net: calxedaxgmac: add write barriers around setting owner bit + - LP: #1008345 + * SAUCE: ARM smp_twd: add back "arm,smp-twd" compatible property + - LP: #1008345 + * SAUCE: ARM: highbank: add soft power and reset key event handling + - LP: #1008345 + * SAUCE: ARM: highbank: use writel_relaxed variant for pwr requests + - LP: #1008345 + * SAUCE: ahci: un-staticize ahci_dev_classify + - LP: #1008345 + * SAUCE: ahci_platform: add custom hard reset for Calxeda ahci ctrlr + - LP: #1008345 + + [ Upstream Kernel Changes ] + + * rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb. + - LP: #871904 + * Avoid sysfs oops when an rc_dev's raw device is absent + - LP: #1015836 + * eCryptfs: Copy up POSIX ACL and read-only flags from lower mount + * clk: add DT clock binding support + - LP: #1008345 + * clk: add DT fixed-clock binding support + - LP: #1008345 + * clk: add highbank clock support + * edac: add support for Calxeda highbank memory controller + - LP: #1008345 + * edac: add support for Calxeda highbank L2 cache ecc + - LP: #1008345 + * net: calxedaxgmac: enable rx cut-thru mode + - LP: #1008345 + * net: calxedaxgmac: fix hang on rx refill + - LP: #1008345 + * eCryptfs: Revert to a writethrough cache model + - LP: #1034012 + * eCryptfs: Initialize empty lower files when opening them + - LP: #911507 + * eCryptfs: Unlink lower inode when ecryptfs_create() fails + - LP: #872905 + + -- Leann Ogasawara Wed, 08 Aug 2012 08:39:42 -0700 + +linux (3.5.0-8.8) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * ubuntu: AUFS -- adapt to the new changelog handling + * ubuntu: AUFS -- sort out the relative header paths + * ubuntu: AUFS -- update to d266b0c5d0693d6383976ee54b9e2c0fa9a3f5b0 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 4a5e660ed7f5c1d0467c81c535d0fedcfe62d15f + * ubuntu: AUFS -- reenable + + [ Chris Van Hoof ] + + * [Config] Add cifs support to the nfs-modules list + - LP: #1031398 + + [ Ilan Peer ] + + * (pre-stable) iwlwifi: Check BSS ctx active before call mac80211 + - LP: #1021086 + + [ John Johansen ] + + * SAUCE: Update aufs for build failure caused by apparmor backport + + [ Tim Gardner ] + + * SAUCE: firmware: Remove ess files duplicated in linux-firmware + * SAUCE: firmware: Remove kaweth files duplicated in linux-firmware + * SAUCE: firmware: Remove obsolete Chelsio cxgb3 firmware + * SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: firmware: Remove edgeport files duplicated in linux-firmware + * SAUCE: firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware + * SAUCE: firmware: Remove adaptec files duplicated in linux-firmware + * SAUCE: firmware: Remove advansys files duplicated in linux-firmware + * SAUCE: firmware: Remove ambassador files duplicated in linux-firmware + * SAUCE: firmware: Remove av7110 files duplicated in linux-firmware + * SAUCE: cpia2: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove cpia2 files duplicated in linux-firmware + * SAUCE: firmware: Remove korg files duplicated in linux-firmware + * SAUCE: firmware: Remove matrox files duplicated in linux-firmware + * SAUCE: firmware: Remove r128 files duplicated in linux-firmware + * SAUCE: firmware: Remove radeon files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * intel_idle: initial IVB support + * KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT + Dirty bit + * KVM: VMX: Use EPT Access bit in response to memory notifiers + * KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit + in EPTP + * KVM: VMX: Add parameter to control A/D bits support, default is on + * KVM: VMX: Add EPT A/D bits definitions + * KVM: VMX: Implement PCID/INVPCID for guests with EPT + * xhci: Export Latency Tolerance Messaging capabilities. + * USB: Fix LPM disable/enable during device reset. + * usb: convert port_owners type from void * to struct dev_state * + * USB: Disable LPM while the device is unconfigured. + * USB: Fix LPM disable count mismatch on driver unbind. + * USB: Enable Latency Tolerance Messaging (LTM). + * drm/i915: enable parity error interrupts + * drm/i915: Dynamic Parity Detection handling + * drm/i915: l3 parity sysfs interface + * drm/i915: remap l3 on hw init + * drm/i915: initialize the parity work only once + * drm/i915: ivybridge_handle_parity_error should be static + + -- Leann Ogasawara Fri, 03 Aug 2012 13:33:27 -0700 + +linux (3.5.0-7.7) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_X86_POWERNOW_K6=m + * [Config] CONFIG_X86_POWERNOW_K7=m + * [Config] CONFIG_X86_LONGHAUL=m + * [Config] CONFIG_X86_LONGRUN=m + * [Config] CONFIG_X86_GX_SUSPMOD=m + * [Config] CONFIG_X86_CPUFREQ_NFORCE2=m + * SAUCE: rds_ib_send() -- prevent local pings triggering BUG_ON() + - LP: #1016299 + - CVE-2012-2372 + * [Config] enable CONFIG_VFAT_FS=y for EFI systems + * [Config] CONFIG_USB_G_MULTI=n on highbank + * [Config] annotate: CONFIG_USB_INVENTRA_DMA OMAP2 specific + * [Config] CONFIG_WAN_ROUTER disable for arm + * add support for generating binary device trees and install them in + /lib/firmware + - LP: #1030600 + * [Config] add dtb_file configuration for highbank + - LP: #1030600 + + [ Tim Gardner ] + + * SAUCE: ene_ub6250: Use macros for firmware names + * SAUCE: s2255drv: Add MODULE_FIRMWARE statement + * SAUCE: xc5000: Add MODULE_FIRMWARE statements + * SAUCE: firmware: remove computone driver firmware and documentation + * SAUCE: lgs8gxx: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove obsolete Myricom firmware + * SAUCE: staging rtl8192e: Declare MODULE_FIRMWARE usage + * SAUCE: tlg2300: Declare MODULE_FIRMWARE usage + * SAUCE: ueagle-atm: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxfast: Declare MODULE_FIRMWARE usage + * SAUCE: usbdux: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxsigma: Declare MODULE_FIRMWARE usage + * SAUCE: cx25840: Declare MODULE_FIRMWARE usage + * SAUCE: cx18: Declare MODULE_FIRMWARE usage + * SAUCE: ivtv: Declare MODULE_FIRMWARE usage + * SAUCE: cx231xx: Declare MODULE_FIRMWARE usage + * SAUCE: cx23885: Declare MODULE_FIRMWARE usage + * SAUCE: pvrusb2: Declare MODULE_FIRMWARE usage + * SAUCE: vxge: Declare MODULE_FIRMWARE usage + + [ Upstream Kernel Changes ] + + * mac80211: fix crash with single-queue drivers + - LP: #1022351 + + -- Leann Ogasawara Mon, 30 Jul 2012 11:11:05 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 --- linux-3.5.0.orig/debian/tools/turbostat +++ linux-3.5.0/debian/tools/turbostat @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +turbostat="turbostat_$version" + +if ! which "$turbostat" > /dev/null; then + echo "$turbostat not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$turbostat" "$@" --- linux-3.5.0.orig/debian/tools/perf +++ linux-3.5.0/debian/tools/perf @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +perf="perf_$version" + +if ! which "$perf" > /dev/null; then + echo "$perf not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$perf" "$@" --- linux-3.5.0.orig/debian/tools/x86_energy_perf_policy +++ linux-3.5.0/debian/tools/x86_energy_perf_policy @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +x86_energy_perf_policy="x86_energy_perf_policy_$version" + +if ! which "$x86_energy_perf_policy" > /dev/null; then + echo "$x86_energy_perf_policy not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$x86_energy_perf_policy" "$@" --- linux-3.5.0.orig/debian/tools/generic +++ linux-3.5.0/debian/tools/generic @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +this="$0_$version" + +if [ ! -f "$this" ]; then + echo "$this not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$this" "$@" --- linux-3.5.0.orig/debian/source/format +++ linux-3.5.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-3.5.0.orig/debian/control-scripts/postinst +++ linux-3.5.0/debian/control-scripts/postinst @@ -0,0 +1,1095 @@ +#! /usr/bin/perl +# OriginalAuthor : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# +# Customized for Ubuntu by: Ben Collins + +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot or delo +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $relative_links = ""; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally we do not +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $notifier = "/usr/share/update-notifier/notify-reboot-required"; +my $package_name = "linux-image-$version"; +my $explicit_do_loader = 'Yes'; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; +$Loader = "ARCBOOT" if $loader =~ /^arcboot/io; +$Loader = "DELO" if $loader =~ /^delo/io; + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; + +# Ignore all invocations except when called on to configure. +exit 0 unless $ARGV[0] =~ /configure/; + +my $DEBUG = 0; + +# Do some preliminary sanity checks here to ensure we actually have an +# valid image dir +chdir('/') or die "could not chdir to /:$!\n"; +die "Internal Error: ($image_dir) is not a directory!\n" + unless -d $image_dir; + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; +die "Internal Error: ($realimageloc) is not a directory!\n" + unless -d $realimageloc; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlink\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $explicit_do_loader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $explicit_do_loader = "YES" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + + +# For some versions of kernel-package, we had this warning in the +# postinst, but the rules did not really interpolate the value in. +# Here is a sanity check. +my $pattern = "=" . "I"; +$initrd=~ s/^$pattern$//; + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; # same as realimageloc +} + +# Tack on at least one trainling / +$image_dest = "$image_dest/"; +$image_dest =~ s|^/*|/|o; +$image_dest =~ s|/+$|/|o; + +if (! -d "$image_dest") { + die "Expected Image Destination dir ($image_dest) to be a valid directory!\n"; +} + +# sanity +if (!($do_bootfloppy || $do_bootloader)) { + $do_boot_enable = ''; +} +if ($do_symlink && $no_symlink) { + warn "Both do_symlinks and no_symlinks options enabled; disabling no_symlinks\n"; + $no_symlink = 0; +} + +# most of our work is done in $image_dest (nominally /) +chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz"; } # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz"; } # Default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +die "Internal Error: Could not find image (" . $realimageloc + . "$kimage-$version)\n" unless -e $realimageloc + . "$kimage-$version"; + +# search for the boot loader in the path +my $loader_exec; +($loader_exec = $loader) =~ s|.*/||; +my ($loaderloc) = grep -x, map "$_/$loader_exec", + map { length($_) ? $_ : "." } split /:/, $ENV{PATH}; + + +###################################################################### +###################################################################### +########### Test whether a relative symlinkwould be OK ####### +###################################################################### +###################################################################### +sub test_relative { + my %params = @_; + my $cwd; + + die "Internal Error: Missing Required paramater 'Old Dir' " + unless $params{'Old Dir'}; + die "Internal Error: Missing Required paramater New Dir' " + unless $params{'New Dir'}; + + + die "Internal Error: No such dir $params{'Old Dir'} " + unless -d $params{'Old Dir'}; + die "Internal Error: No such dir $params{'New Dir'} " + unless -d $params{'New Dir'}; + + warn "Test relative: testing $params{'Old Dir'} -> $params{'New Dir'}" + if $DEBUG; + chomp($cwd = `pwd`); + chdir ($params{'New Dir'}) or die "Could not chdir to $params{'New Dir'}:$!"; + my $ok = 0; + $params{'Old Dir'} =~ s|^/*||o; + if (-d $params{'Old Dir'} ) { + if (defined $params{'Test File'}) { + if (-e $params{'Old Dir'} . $params{'Test File'}) { + $ok = 1; + } + } else { + $ok = 1; # well, backward compatibility + } + } + chdir ($cwd) or die "Could not chdir to $params{'New Dir'}:$!"; + return $ok; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# sub CanonicalizePath { +# my $path = join '/', @_; +# my @work = split '/', $path; +# my @out; +# my $is_absolute; + +# if (@work && $work[0] eq "") { +# $is_absolute = 1; shift @work; +# } + +# while (@work) { +# my $seg = shift @work; +# if ($seg eq "." || $seg eq "") { +# } +# elsif ($seg eq "..") { +# if (@out && $out[-1] ne "..") { +# pop @out; +# } +# else { +# # Leading "..", or "../..", etc. +# push @out, $seg; +# } +# } +# else { +# push @out, $seg; +# } +# } + +# unshift @out, "" if $is_absolute; +# return join('/', @out); +# } +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + +sub spath { + my %params = @_; + + die "Missing Required paramater 'Old'" unless $params{'Old'}; + die "Missing Required paramater 'New'" unless $params{'New'}; + + my @olddir = split '/', `readlink -q -m $params{'Old'}`; + my @newdir = split '/', `readlink -q -m $params{'New'}`; + my @outdir = @olddir; + + my $out = ''; + my $i; + for ($i = 0; $i <= $#olddir && $i <= $#newdir; $i++) { + $out++ if ($olddir[$i] ne $newdir[$i]); + shift @outdir unless $out; + unshift @outdir, ".." if $out; + } + if ($#newdir > $#olddir) { + for ($i=0; $i < $#newdir; $i++) { + unshift @outdir, ".."; + } + } + return join ('/', @outdir); +} +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + + +# This routine actually moves the kernel image +# From: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +# To: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# Note that the image is moved to a versioned destination, but ordinary +# symlinks we create otherwise are not normally versioned +sub really_move_image { + my $src_dir = $_[0]; + my $target = $_[1]; + my $dest_dir = $_[2]; + + warn "Really move image: src_dir=$src_dir, target=$target,\n destdir=$dest_dir" + if $DEBUG; + if (-e "$target") { + # we should be in dir $dest_dir == $image_dest /, normally + rename("$target", "$target.$$") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target $target.$$" if $DEBUG; + } + warn "mv -f $src_dir$target $target" if $DEBUG; + my $ret = system("mv -f " . $src_dir . "$target " . + " $target"); + if ($ret) { + die("Failed to move " . $src_dir . "$target to " + . $dest_dir . "$target"); + } + # Ok, now we may clobber the previous .old files + if (-e "$target.$$") { + rename("$target.$$", "$target.old") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target.$$ $target " if $DEBUG; + } +} + +# Normally called after really_move_image; and only called if we asked for +# reversed link this routine reverses the symbolic link that is notmally +# created. Since the real kernel image has been moved over to +# $image_dest/$kimage-$version. So, this routine links +# From: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# To: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +sub really_reverse_link { + my $src_dir = $_[0]; + my $link_name = $_[1]; + my $dest_dir = $_[2]; + warn "Really reverse link: src_dir=$src_dir, link name=$link_name\n" . + "\tdestdir=$dest_dir" if $DEBUG; + + my $Old = $dest_dir; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $src_dir, + 'Test File' => "$link_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$src_dir" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + link($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to link " . $dest_dir . "$link_name to " . $src_dir . + "$link_name:$!"); + warn "ln " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } + else { + symlink($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to symbolic-link " . $dest_dir . "$link_name to " . $src_dir + . "$link_name:$!"); + warn "ln -s " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } +} + +# This routine is invoked if there is a symbolic link in place +# in $image_dest/$kimage -- so a symlink exists in the destination. +# What we are trying to determine is if we need to move the symbolic link over +# to the the .old location +sub move_p { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + my $force_move = 0; + warn "Move?: kimage=$kimage, image_dest=$image_dest, \n" . + "\timage_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink || $reverse_symlink) { + # we do not want links, yet we have a symbolic link here! + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though no_symlink is defined\n" if $no_symlink; + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though reverse_symlink is defined\n" if $reverse_symlink; + # make sure we change this state of affairs + $force_move = 1; + return $force_move; + } + + warn "DEBUG: OK. We found symlink, and we should have a symlink here.\n" + if $DEBUG; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + my $target = `readlink -q -m "${realimageloc}${kimage-$version}"`; + $real_target = abs_path($vmlinuz_target) if defined($vmlinuz_target); + + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a dangling link" . + "to $real_target\n"; + $force_move = 1; + return $force_move; + } + + + warn "DEBUG: The link $kimage points to ($vmlinuz_target)\n" if $DEBUG; + warn "DEBUG: ($vmlinuz_target) is really ($real_target)\n" if $DEBUG; + my $cwd; + chomp ($cwd=`pwd`); + if ($vmlinuz_target !~ m|^/|o) { + $vmlinuz_target = $cwd . "/" . $vmlinuz_target; + $vmlinuz_target =~ s|/+|/|o; + } + $vmlinuz_target = `readlink -q -m $vmlinuz_target`; + + if ("$vmlinuz_target" ne "$target") { + warn "DEBUG: We need to handle this.\n" if $DEBUG; + if ($minimal_swap) { + warn "DEBUG: Minimal swap.\n" if $DEBUG; + if (-l "$kimage.old") { + warn "DEBUG: There is an old link at $kimage.old\n" if $DEBUG; + my $old_target = readlink "$kimage.old"; + my $real_old_target = ''; + $real_old_target=abs_path($old_target) if defined ($old_target); + + if ($real_old_target && -f "$real_old_target") { + if ($old_target !~ m|^/|o) { + $old_target = $cwd . "/" . $old_target; + $old_target =~ s|/+|/|o; + } + $old_target = `readlink -q -m $old_target`; + if ("$old_target" ne "$target") { + $force_move = 1; + warn "DEBUG: Old link ($old_target) does not point to us ($target)\n" + if $DEBUG; + } + else { # The .old points to the current + warn "$kimage.old --> $target -- doing nothing"; + $force_move = 0; + } + } + else { + warn "DEBUG: Well, the old link does not exist -- so we move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: No .old link -- OK to move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: ok, minimal swap is no-- so we move.\n" + if $DEBUG; + $force_move = 1; + } + } + else { # already have proper link + warn "$kimage($vmlinuz_target) points to $target ($real_target) -- doing nothing"; + $force_move = 0; + } + return $force_move; +} + + +# This routine moves the symbolic link around (/vmlinuz -> /vmlinuz.old) +# It pays attention to whether we should the fact whether we should be using +# hard links or not. +sub really_move_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "really_move_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # don't clobber $kimage.old quite yet + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + my $Old = $src_dir; + my $cwd; + + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln ${Old}${image_name} $kimage" if $DEBUG; + if (! link("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + else { + warn "ln -s ${Old}${image_name} $kimage" if $DEBUG; + if (! symlink("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to symbolic-link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + + # Ok, now we may clobber the previous .old file + if (-l "$kimage.old" || ! -e "$kimage.old" ) { + rename("$kimage.$$", "$kimage.old"); + warn "mv $kimage.$$ $kimage.old" if $DEBUG; + } + else { + warn "$kimage.old is not a symlink, not clobbering\n"; + warn "rm $kimage.$$"; + unlink "$kimage.$$" if $DEBUG; + } +} + +# This routine handles a request to do symlinks, but there is no +# symlink file already there. Either we are supposed to use copy, or we are +# installing on a pristine system, or the user does not want symbolic links at +# all. We use a configuration file to tell the last two cases apart, creating +# a config file if needed. +sub handle_missing_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_missing_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink) { + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc . + "$image_name " . " $kimage"); + if ($ret) { + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + elsif ($reverse_symlink) { + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . "$kimage"); + if ($ret) { + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + else { + if (! $have_conffile) { + my $ret; + my $answer=''; + $do_symlink = "Yes"; + + if (open(CONF, ">$CONF_LOC")) { + print CONF "# Kernel Image management overrides\n"; + print CONF "# See kernel-img.conf(5) for details\n"; + if ($loader =~ /palo/i) { + print CONF "link_in_boot = Yes\n"; + print CONF "do_symlinks = Yes\n"; + print CONF "relative_links = Yes\n"; + print CONF "do_bootloader = No\n"; + } else { + print CONF "do_symlinks = $do_symlink\n"; + } + close CONF; + } + $have_conffile = "Yes"; + } + } + + if (! $no_symlink && $do_symlink =~ /Yes/i) { + my $Old = $realimageloc; + my $New = $image_dest; + my $Name = "$image_name"; + my $Link_Dest = "$kimage"; + + if ($reverse_symlink) { + $Old = $image_dest; + $New = $realimageloc; + $Name = "$kimage"; + $Link_Dest = $realimageloc . "$image_name"; + } + if (test_relative ('Old Dir' => $Old, + 'New Dir' => $New, + 'Test File' => $Name)) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$New" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + symlink($Old . "$Name", "$Link_Dest") || + die("Failed to symbolic-link ${Old}$Name to $Link_Dest:$!"); + warn "ln -s ${Old}$Name $Link_Dest" if $DEBUG; + + } +} + +# This routine handles the rest of the cases, where the user has requested +# non-traditional handling, like using cp, or reverse symlinks, or hard links. +sub handle_non_symlinks { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_non_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Save the current image. We do this in all four cases + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + + ##,#### + # case One + #`#### + if ($no_symlink) { + # Maybe /$image_dest is on a dos system? + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Two + #`#### + elsif ($reverse_symlink) { # Maybe /$image_dest is on a dos system? + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . $image_dest . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + my $Old = $image_dest; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $realimageloc, + 'Test File' => "$kimage")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$realimageloc" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! link($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not link " . $image_dest . + "$kimage to $image_name :$!"; + } + } + else { + warn "ln -s " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! symlink($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not symlink " . $image_dest . + "$kimage to $image_name :$!"; + } + } + } + ##,#### + # case Three + #`#### + elsif ($use_hard_links =~ m/YES/i ) { + # Ok then. this ought to be a hard link, and hence fair game + # don't clobber $kimage.old quite yet + my $Old = $realimageloc; + my $cwd; + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + warn "ln " . $Old . "$image_name " . "$kimage" if $DEBUG; + if (! link($Old . "$image_name", "$kimage")) { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + die("Failed to link " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Four + #`#### + else { + # We just use cp + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + # Ok, now we may clobber the previous .old file + warn "mv $kimage.$$ $kimage.old if -e $kimage.$$" if $DEBUG; + rename("$kimage.$$", "$kimage.old") if -e "$kimage.$$"; +} + +# This routine is responsible for setting up the symbolic links +# So, the actual kernel image lives in +# $realimageloc/$image_name (/boot/vmlinuz-2.6.12). +# This routine creates symbolic links in $image_dest/$kimage (/vmlinuz) +sub image_magic { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = "$kimage-$version"; + my $src_dir = $realimageloc; + warn "image_magic: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Well, in any case, if the destination (the symlink we are trying + # to create) is a directory, we should do nothing, except throw a + # diagnostic. + if (-d "$kimage" ) { + die ("Hmm. $kimage is a directory, which I did not expect. I am\n" . + "trying to create a symbolic link with that name linked to \n" . + "$image_dest . Since a directory exists here, my assumptions \n" . + "are way off, and I am aborting.\n" ); + exit (3); + } + + if ($move_image) { # Maybe $image_dest is in on dos, or something? + # source dir, link name, dest dir + really_move_image( $realimageloc, $image_name, $image_dest); + really_reverse_link($realimageloc, $image_name, $image_dest) + if $reverse_symlink; + return; + } + + if (-l "$kimage") { # There is a symbolic link + warn "DEBUG: There is a symlink for $kimage\n" if $DEBUG; + my $force_move = move_p($kimage, $image_dest, $image_name, $src_dir); + + if ($force_move) { + really_move_link($kimage, $image_dest, $image_name, $src_dir); + } + } + elsif (! -e "$kimage") { + # Hmm. Pristine system? How can that be? Installing from scratch? + # Or maybe the user does not want a symbolic link here. + # Possibly they do not want a link here. (we should be in / + # here[$image_dest, really] + handle_missing_link($kimage, $image_dest, $image_name, $src_dir); + } + elsif (-e "$kimage" ) { + # OK, $kimage exists -- but is not a link + handle_non_symlinks($kimage, $image_dest, $image_name, $src_dir); + } +} + +###################################################################### +###################################################################### +###################################################################### +###################################################################### + +# We may not have any modules installed +if ( -d "$modules_base/$version" ) { + print STDERR "Running depmod.\n"; + my $ret = system("depmod -a $version"); + if ($ret) { + print STDERR "Failed to run depmod\n"; + exit(1); + } +} + + + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + print STDERR "Finding valid ramdisk creators.\n"; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +# The initrd symlink should probably be in the same dir that the +# symlinks are in +if ($initrd) { + my $success = 0; + + # Update-initramfs is called slightly different than mkinitrd and + # mkinitramfs. XXX It should really be made compatible with this stuff + # some how. + my $upgrading = 1; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + $upgrading = 0; + } + my $ret = system("$ramdisk " . ($upgrading ? "-u" : "-c") . " -k " . $version . " >&2"); + $success = 1 unless $ret; + die "Failed to create initrd image.\n" unless $success; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic("initrd.img", $image_dest); + } + else { + if (! -e "initrd.img") { + handle_missing_link("initrd.img", $image_dest, "initrd.img-$version", + $realimageloc); + } + else { + print STDERR + "Not updating initrd symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } + } + + if ($initrd && -l "initrd" ) { + unlink "initrd"; + } + + if ($initrd && -l "$image_dir/initrd" && ! $link_in_boot) { + unlink "$image_dir/initrd"; + } +} +else { # Not making an initrd emage + if (-l "initrd.img") { + # Ooh, last image was an initrd image? in any case, we should move it. + my $target = readlink "initrd.img"; + my $real_target = ''; + $real_target = abs_path($target) if defined ($target); + + if (!defined($target) || ! -f "$real_target") { + # Eh. dangling link. can safely be removed. + unlink("initrd.img"); + } else { + if (-l "initrd.img.old" || ! -e "initrd.img.old" ) { + rename("initrd.img", "initrd.img.old"); + } else { + warn "initrd.img.old is not a symlink, not clobbering\n"; + unlink("initrd.img"); + } + } + } +} + +# Warn of a reboot +if (-x $notifier) { + system($notifier); +} + +# Let programs know not to hibernate if the kernel that would be used for +# resume-from-hibernate is likely to differ from the currently running kernel. +system("mountpoint -q /var/run"); +if ($? eq 0) { + system("touch /var/run/do-not-hibernate"); +} + +# Only change the symlinks if we are not being upgraded +if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic($kimage, $image_dest); +} +else { + if (! -e "$kimage") { + handle_missing_link($kimage, $image_dest, "$kimage-$version", + $realimageloc); + } + else { + print STDERR + "Not updating image symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } +} + +# We used to have System.* files in / +if (-e "/System.map" || -e "/System.old") { + unlink '/System.map' if -e '/System.map'; + unlink '/System.old' if -e '/System.old'; +} + +# creating some info about kernel and initrd +if ($DEBUG) { + my $ksize=sprintf("%.0f",(stat($realimageloc . + "$kimage-$version"))[7]/1024)."kB"; + my $initrdsize=''; + if ($initrd) { + $initrdsize=sprintf("%.0f",(stat($realimageloc . + "initrd.img-$version"))[7]/1024)."kB"; + } + + print STDERR <<"EOMSG"; +A new kernel image has been installed at $realimageloc$kimage-$version + (Size: $ksize) + +Symbolic links, unless otherwise specified, can be found in $image_dest + +EOMSG + ; + + if ($initrd) { + print STDERR <<"EOMSGA"; + + Initial rootdisk image: ${realimageloc}initrd.img-$version (Size: $initrdsize) +EOMSGA + ; + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postinst_hook) { + &run_hook("postinst", $postinst_hook); +} + +if (-d "/etc/kernel/postinst.d") { + print STDERR "Examining /etc/kernel/postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d") && + die "Failed to process /etc/kernel/postinst.d"; +} + +if (-d "/etc/kernel/postinst.d/$version") { + print STDERR "Examining /etc/kernel/postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d/$version") && + die "Failed to process /etc/kernel/postinst.d/$version"; +} + +LOADER: { + last unless $do_boot_enable; # Exit if explicitly asked to + + last if $loader =~ /silo/i; # SILO does not have to be executed. + last if $loader =~ /yaboot/i; # yaboot does not have to be executed. + last if $loader =~ /milo/i; # MILO does not have to be executed. + last if $loader =~ /nettrom/i; # NETTROM does not have to be executed. + last if $loader =~ /arcboot/i; # ARCBOOT does not have to be executed. + last if $loader =~ /delo/i; # DELO does not have to be executed. + last if $loader =~ /quik/i; # maintainer asked quik invocation to be ignored + + last unless $loaderloc; + last unless -x $loaderloc; + last unless $do_bootloader; + + if (-T "/etc/$loader.conf") { + # Trust and use the existing lilo.conf. + print STDERR "You already have a $Loader configuration in /etc/$loader.conf\n"; + my $ret = &run_lilo(); + exit $ret if $ret; + } +} + + +sub run_lilo (){ + my $ret; + # Try and figure out if the user really wants lilo to be run -- + # since the default is to run the boot laoder, which is ! grub -- but + # the user may be using grub now, and not changed the default. + + # So, if the user has explicitly asked for the loader to be run, or + # if there is no postinst hook, or if there is no grub installed -- + # we are OK. Or else, we ask. + if ($explicit_do_loader || (! ($postinst_hook && -x '/usr/sbin/grub'))) { + print STDERR "Running boot loader as requested\n"; + } else { + print STDERR "Ok, not running $loader\n"; + } + if ($loader =~ /^lilo/io or $loader =~ /vmelilo/io) { + print STDERR "Testing $loader.conf ... \n"; + unlink $temp_file_name; # security + $ret = system("$loaderloc -t >$temp_file_name 2>&1"); + if ($ret) { + print STDERR "Boot loader test failed\n"; + return $ret; + } + unlink "$temp_file_name"; + print STDERR "Testing successful.\n"; + print STDERR "Installing the "; + print STDERR "partition " if $loader =~ /^lilo/io; + print STDERR "boot sector... \n"; + } + + print STDERR "Running $loaderloc ... \n"; + if ($loader =~ /^elilo/io) { + $ret = system("$loaderloc 2>&1 | tee $temp_file_name"); + } else { + $ret = system("$loaderloc >$temp_file_name 2>&1"); + } + if ($ret) { + print STDERR "Boot loader failed to run\n"; + return $ret; + } + unlink $temp_file_name; + print STDERR "Installation successful.\n"; + return 0; +} + +exit 0; + +__END__ + --- linux-3.5.0.orig/debian/control-scripts/headers-postinst +++ linux-3.5.0/debian/control-scripts/headers-postinst @@ -0,0 +1,126 @@ +#!/usr/bin/perl +# -*- Mode: Cperl -*- +# debian.postinst --- +# Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# Created On : Sat Apr 27 05:42:43 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:20:22 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 45 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# +# arch-tag: 1c716174-2f0a-476d-a626-a1322e62503a +# + + +$|=1; + +# Predefined values: +my $version = "=V"; +my $kimage = "=K"; +my $package_name = "linux-image-$version"; + + +# Ignore all invocations uxcept when called on to configure. +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /configure/); + +#known variables +my $image_dest = "/"; +my $realimageloc = "/boot/"; +my $silent_modules = ''; +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +chdir '/usr/src' or die "Could not chdir to /usr/src:$!"; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $header_postinst_hook = "$1" if /^\s*header_postinst_hook\s*=\s*(\S+)/ig; + } + close CONF; + } +} + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +## Run user hook script here, if any +if (-x "$header_postinst_hook") { + &run_hook("postinst", $header_postinst_hook); +} + +if (-d "/etc/kernel/header_postinst.d") { + print STDERR "Examining /etc/kernel/header_postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +if (-d "/etc/kernel/header_postinst.d/$version") { + print STDERR "Examining /etc/kernel/header_postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d/$version") && + die "Failed to process /etc/kernel/header_postinst.d/$version"; +} + +exit 0; + +__END__ --- linux-3.5.0.orig/debian/control-scripts/preinst +++ linux-3.5.0/debian/control-scripts/preinst @@ -0,0 +1,315 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.preinst --- +# Author : Manoj Srivastava ( srivasta@tiamat.datasync.com ) +# Created On : Sun Jun 14 03:38:02 1998 +# Created On Node : tiamat.datasync.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Sun Sep 24 14:04:42 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 99 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# + +# +#use strict; #for debugging + +use Debconf::Client::ConfModule qw(:all); +version('2.0'); +my $capb=capb("backup"); + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom + # or elilo +my $image_dir = "/boot"; # where the image is located +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_src_link = 'YES'; # There is no harm in checking the link +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = ''; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; + +die "Pre inst Internal error. Aborting." unless $version; + +exit 0 if $ARGV[0] =~ /abort-upgrade/; +exit 1 unless $ARGV[0] =~ /(install|upgrade)/; + +$arch = `uname -i`; +if ($arch =~ m/86/) { + system ("grep -q ' pae ' /proc/cpuinfo"); + if ($?) { + print STDERR "This kernel does not support a non-PAE CPU.\n"; + exit 1; + } +} + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_src_link = '' if /^\s*relink_src_link\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_src_link = 'Yes' if /^\s*relink_src_link\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + $have_conffile = "Yes"; # stop perl complaining + } +} + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +# About to upgrade this package from version $2 TO THIS VERSION. +# "prerm upgrade" has already been called for the old version of +# this package. + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +sub check { + my $version = shift; + my $lib_modules="$modules_base/$version"; + my $message = ''; + + if (-d "$lib_modules") { + opendir(DIR, $lib_modules) || die "can’t opendir $lib_modules: $!"; + my @children = readdir(DIR); + if ($#children > 1) { + my @dirs = grep { -d "$lib_modules/$_" } @children; + if ($#dirs > 1) { # we have subdirs + my $dir_message=''; + for my $dir (@dirs) { + if ($dir =~/kernel$/) { + $dir_message="An older install was detected.\n"; + } + else { + $dir_message="Module sub-directories were detected.\n" + unless $dir_message; + } + } + $message += $dir_message if $dir_message; + } + + my @links = grep { -l "$lib_modules/$_" } @children; + if ($#links > -1) { + my $links_message = ''; + for my $link (@links) { + next if ($link =~ /^build$/); + next if ($link =~ /^source$/); + $links_message = "Symbolic links were detected in $modules_base/$version.\n"; + } + $message += $links_message if $links_message; + } + my @files = grep { -f "$lib_modules/$_" } @children; + $message += "Additional files also exist in $modules_base/$version.\n" + if ($#files > -1); + } + } + else { $message .= "$lib_modules does not exist. ";} + return $message; +} + +if (-d "$modules_base/$version") { + my $errors=check($version); + warn "Info:\n$errors\n" if $errors; +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$preinst_hook") { + &run_hook("preinst", $preinst_hook); +} +if (-d "/etc/kernel/preinst.d") { + print STDERR "Examining /etc/kernel/preinst.d/\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d") && + die "Failed to process /etc/kernel/preinst.d"; +} +if (-d "/etc/kernel/preinst.d/$version") { + print STDERR "Examining /etc/kernel/preinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d/$version") && + die "Failed to process /etc/kernel/preinst.d/$version"; +} +print STDERR "Done.\n"; + +exit 0; + +__END__ + + --- linux-3.5.0.orig/debian/control-scripts/prerm +++ linux-3.5.0/debian/control-scripts/prerm @@ -0,0 +1,312 @@ +#! /usr/bin/perl +# -*- Mode: Perl -*- +# image.prerm --- +# Author : root ( root@melkor.pilgrim.umass.edu ) +# Created On : Fri May 17 03:28:59 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:14:17 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 85 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# $Id: image.prerm,v 1.22 2003/10/07 16:24:20 srivasta Exp $ +# +# +#use strict; + +$|=1; +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlinks = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +my $DEBUG = 0; + +# Variables used +my $image=''; +my $ret=0; +my $seen=''; +my $answer=''; +my $running = ''; +my $WouldInvalidate = 0; + +if ($ARGV[0] && ($ARGV[0] =~ /remove/ || $ARGV[0] =~ /upgrade/)) { + if (-l "/usr/doc/linux-image-$version") { + unlink "/usr/doc/linux-image-$version"; + } +} + +# Ignore all invocations uxcept when called on to remove +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /remove/) ; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz";} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz";} # Default + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +#check to see if we are trying to remove a running kernel +# if so we abort right now. +chop($running=`uname -r`); +if ($running eq $version) { + print STDERR "WARN: Proceeding with removing running kernel image.\n"; +} + +#Now, they have an alternate kernel which they are currently running + +# This is just us being nice to lilo users. + +chdir("/") or die "could not chdir to /:$!\n"; + +if (-f "/etc/$loader.conf") { #I know, could be a link, but .. + open (LILO, "/etc/$loader.conf") || &success(); # this is not critical + while () { + chop; + s/\#.*//; # nix the comments + next unless /^\s*image\s*=\s(\S+)/o; + $image = $1; + if ($image && -e $image) { + while (defined($image) && -l $image) { + $image = readlink ($image); + } + if (defined($image) && -e $image) { + $WouldInvalidate |= $image =~ /$kimage-$version/; + } + else { + &success(); # invalid $loader.conf file + } + } + else { + &success(); # invalid $loader.conf file + } + } + close (LILO); + if ($WouldInvalidate) { + print STFERR "WARN: Proceeding with removing running kernel image.\n"; + &success(); + } +} + + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$prerm_hook") { + &run_hook("prerm", $prerm_hook); +} +if (-d "/etc/kernel/prerm.d") { + print STDERR "Examining /etc/kernel/prerm.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version /etc/kernel/prerm.d") && + die "Failed to process /etc/kernel/prerm.d"; +} +if (-d "/etc/kernel/prerm.d/$version") { + print STDERR "Examining /etc/kernel/prerm.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version " . + "/etc/kernel/prerm.d/$version") && + die "Failed to process /etc/kernel/prerm.d/$version"; +} + +sub success () { + # NOTE: need to keep this list in sync with rules.d/2-binary-arch.mk + my %files_to_keep = ( + 'modules.builtin' => 1, + 'modules.order' => 1, + ); + my $short; + for my $file () { + $short = $file; $short =~ s,.*/,,; + if (!defined $files_to_keep{$short}) { + unlink "$file"; + } + } + exit 0; +} + + + +&success(); +exit 0; +__END__ + + + + + --- linux-3.5.0.orig/debian/control-scripts/postrm +++ linux-3.5.0/debian/control-scripts/postrm @@ -0,0 +1,361 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.postrm --- +# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) +# Created On : Sat May 15 11:05:13 1999 +# Created On Node : glaurung.green-gryphon.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Wed Sep 13 11:26:19 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 57 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# $Id: image.postrm,v 1.31 2003/10/07 16:24:20 srivasta Exp $ +# + + +# +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally, we don't +my $warn_initrd = 'YES'; # Normally we do +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # we shall not create a dangling link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +chdir('/') or die "could not chdir to /:$!\n"; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $warn_initrd = '' if /^\s*warn_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $warn_initrd = "Yes" if /^\s*warn_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; + $image_dest =~ s|^/*|/|o; +} + +$image_dest = "$image_dest/"; +$image_dest =~ s|/+$|/|o; + +# The destdir may be gone by now. +if (-d "$image_dest") { + chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; +} + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) {$kimage = "vmlinuz"} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage;} +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage;} +else {$kimage = "vmlinuz"} # default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub remove_sym_link { + my $bad_image = $_[0]; + + warn "Removing symbolic link $bad_image \n"; + if ($loader =~ /lilo/i) + { + warn "Unless you used the optional flag in lilo, \n"; + } + warn " you may need to re-run your boot loader" . ($loader ? "[$loader]":"") + . "\n"; + # Remove the dangling link + unlink "$bad_image"; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub CanonicalizePath { + my $path = join '/', @_; + my @work = split '/', $path; + my @out; + my $is_absolute; + + if (@work && $work[0] eq "") { $is_absolute = 1; shift @work; } + + while (@work) { + my $seg = shift @work; + if ($seg eq "." || $seg eq "") { + } elsif ($seg eq "..") { + if (@out && $out[-1] ne "..") { + pop @out; + } else { + # Leading "..", or "../..", etc. + push @out, $seg; + } + } else { + push @out, $seg; + } + } + + unshift @out, "" if $is_absolute; + return join('/', @out); +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# This removes dangling symlinks. What do we do about hard links? Surely a +# something with the nane $image_dest . "$kimage" ought not to be left behind? +sub image_magic { + my $kimage = $_[0]; + my $image_dest = $_[1]; + + if (-l "$kimage") { + # There is a symbolic link + my $force_move = 0; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + $real_target = abs_path($vmlinuz_target) if defined ($vmlinuz_target); + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a damaged link\n"; + # Remove the dangling link + &remove_sym_link("$kimage"); + } + else { + my $canonical_target = CanonicalizePath("$vmlinuz_target"); + if (! -e $canonical_target) { + warn "The link " . $image_dest . "$kimage is a dangling link\n"; + &remove_sym_link("$kimage"); + } + } + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + warn "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + warn "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postrm_hook) { + &run_hook("postrm", $postrm_hook); +} +if (-d "/etc/kernel/postrm.d") { + warn "Examining /etc/kernel/postrm.d .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d") && + die "Failed to process /etc/kernel/postrm.d"; +} +if (-d "/etc/kernel/postrm.d/$version") { + warn "Examining /etc/kernel/postrm.d/$version .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d/$version") && + die "Failed to process /etc/kernel/postrm.d/$version"; +} + +# check and remove damaged and dangling symlinks +if ($ARGV[0] !~ /upgrade/) { + system("$ramdisk -d -k " . $version . " > /dev/null 2>&1"); + if (-f $realimageloc . "initrd.img-$version.bak") { + unlink $realimageloc . "initrd.img-$version.bak"; + } + image_magic($kimage, $image_dest); + image_magic($kimage . ".old", $image_dest); + image_magic("initrd.img", $image_dest) if $initrd; + image_magic("initrd.img.old", $image_dest) if $initrd; +} + +exit 0; + +__END__ + + + + + + --- linux-3.5.0.orig/debian/scripts/sub-flavour +++ linux-3.5.0/debian/scripts/sub-flavour @@ -0,0 +1,69 @@ +#!/bin/bash + +. debian/debian.env + +echo "SUB_PROCESS $FROM => $TO" + +export from_pkg="linux-image-$ABI_RELEASE-$FROM" +export to_pkg="linux-image-$ABI_RELEASE-$TO" + +from_moddir="debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM" +to_moddir="debian/$to_pkg/lib/modules/$ABI_RELEASE-$FROM" + +install -d "debian/$to_pkg/boot" +install -m644 debian/$from_pkg/boot/config-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ +install -m600 debian/$from_pkg/boot/{vmlinuz,System.map}-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ + +# +# Print some warnings if there are files in the sub-flavours list +# that do not actually exist. +# +cat ${DEBIAN}/sub-flavours/$TO.list | while read line +do +( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + # + # If its a wildcard, then check that there are files that match. + # + if echo "$line" | grep '\*' > /dev/null + then + if [ `eval find "$line" -name '*.ko' 2>/dev/null|wc -l` -lt 1 ] + then + echo SUB_INST Warning - No files in $line + fi + # + # Else it should be a single file reference. + # + elif [ ! -f "$line" ] + then + echo SUB_INST Warning - could not find "$line" + fi +) +done + +cat ${DEBIAN}/sub-flavours/$TO.list | while read line; do + ( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + if echo "$line" | grep '\*' > /dev/null + then + eval find "$line" -name '*.ko' 2>/dev/null || true + elif [ -f "$line" ] + then + echo "$line" + fi + ); +done | while read mod; do + echo "SUB_INST checking: $mod" + fromdir="/lib/modules/$ABI_RELEASE-$FROM/" + egrep "^($fromdir)?kernel/$mod:" \ + $from_moddir/modules.dep | sed -e "s|^$fromdir||" -e 's/://' -e 's/ /\n/g' | \ + while read m; do + m="${fromdir}$m" + test -f debian/$to_pkg/$m && continue + echo "SUB_INST installing: $m" + install -D -m644 debian/$from_pkg/$m \ + debian/$to_pkg/$m + done +done --- linux-3.5.0.orig/debian/scripts/abi-check +++ linux-3.5.0/debian/scripts/abi-check @@ -0,0 +1,210 @@ +#!/usr/bin/perl -w + +my $flavour = shift; +my $prev_abinum = shift; +my $abinum = shift; +my $prev_abidir = shift; +my $abidir = shift; +my $skipabi = shift; + +my $fail_exit = 1; +my $EE = "EE:"; +my $errors = 0; +my $abiskip = 0; + +my $count; + +print "II: Checking ABI for $flavour...\n"; + +if (-f "$prev_abidir/ignore" + or -f "$prev_abidir/$flavour.ignore" or "$skipabi" eq "true") { + print "WW: Explicitly asked to ignore ABI, running in no-fail mode\n"; + $fail_exit = 0; + $abiskip = 1; + $EE = "WW:"; +} + +if ($prev_abinum != $abinum) { + print "II: Different ABI's, running in no-fail mode\n"; + $fail_exit = 0; + $EE = "WW:"; +} + +if (not -f "$abidir/$flavour" or not -f "$prev_abidir/$flavour") { + print "EE: Previous or current ABI file missing!\n"; + print " $abidir/$flavour\n" if not -f "$abidir/$flavour"; + print " $prev_abidir/$flavour\n" if not -f "$prev_abidir/$flavour"; + + # Exit if the ABI files are missing, but return status based on whether + # skip ABI was indicated. + if ("$abiskip" eq "1") { + exit(0); + } else { + exit(1); + } +} + +my %symbols; +my %symbols_ignore; +my %modules_ignore; +my %module_syms; + +# See if we have any ignores +my $ignore = 0; +print " Reading symbols/modules to ignore..."; + +for $file ("$prev_abidir/../blacklist", "$prev_abidir/../../perm-blacklist") { + if (-f $file) { + open(IGNORE, "< $file") or + die "Could not open $file"; + while () { + chomp; + if ($_ =~ m/M: (.*)/) { + $modules_ignore{$1} = 1; + } else { + $symbols_ignore{$_} = 1; + } + $ignore++; + } + close(IGNORE); + } +} +print "read $ignore symbols/modules.\n"; + +sub is_ignored($$) { + my ($mod, $sym) = @_; + + die "Missing module name in is_ignored()" if not defined($mod); + die "Missing symbol name in is_ignored()" if not defined($sym); + + if (defined($symbols_ignore{$sym}) or defined($modules_ignore{$mod})) { + return 1; + } + return 0; +} + +# Read new syms first +print " Reading new symbols ($abinum)..."; +$count = 0; +open(NEW, "< $abidir/$flavour") or + die "Could not open $abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'type'} = $1; + $symbols{$4}{'loc'} = $2; + $symbols{$4}{'hash'} = $3; + $module_syms{$2} = 0; + $count++; +} +close(NEW); +print "read $count symbols.\n"; + +# Now the old symbols, checking for missing ones +print " Reading old symbols ($prev_abinum)..."; +$count = 0; +open(OLD, "< $prev_abidir/$flavour") or + die "Could not open $prev_abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'old_type'} = $1; + $symbols{$4}{'old_loc'} = $2; + $symbols{$4}{'old_hash'} = $3; + $count++; +} +close(OLD); + +print "read $count symbols.\n"; + +print "II: Checking for missing symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'type'})) { + print "\n" if not $count; + printf(" MISS : %s%s\n", $sym, + is_ignored($symbols{$sym}{'old_loc'}, $sym) ? " (ignored)" : ""); + $count++ if !is_ignored($symbols{$sym}{'old_loc'}, $sym); + } +} +print " " if $count; +print "found $count missing symbols\n"; +if ($count) { + print "$EE Symbols gone missing (what did you do!?!)\n"; + $errors++; +} + + +print "II: Checking for new symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'})) { + print "\n" if not $count; + print " NEW : $sym\n"; + $count++; + } +} +print " " if $count; +print "found $count new symbols\n"; +if ($count and $prev_abinum == $abinum) { + print "WW: Found new symbols within same ABI. Not recommended\n"; +} + +print "II: Checking for changes to ABI...\n"; +$count = 0; +my $moved = 0; +my $changed_type = 0; +my $changed_hash = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'}) or + !defined($symbols{$sym}{'type'})) { + next; + } + + # Changes in location don't hurt us, but log it anyway + if ($symbols{$sym}{'loc'} ne $symbols{$sym}{'old_loc'}) { + printf(" MOVE : %-40s : %s => %s\n", $sym, $symbols{$sym}{'old_loc'}, + $symbols{$sym}{'loc'}); + $moved++; + } + + # Changes to export type are only bad if new type isn't + # EXPORT_SYMBOL. Changing things to GPL are bad. + if ($symbols{$sym}{'type'} ne $symbols{$sym}{'old_type'}) { + printf(" TYPE : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_type'}. + $symbols{$sym}{'type'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_type++ if $symbols{$sym}{'type'} ne "EXPORT_SYMBOL" + and !is_ignored($symbols{$sym}{'loc'}, $sym); + } + + # Changes to the hash are always bad + if ($symbols{$sym}{'hash'} ne $symbols{$sym}{'old_hash'}) { + printf(" HASH : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_hash'}, + $symbols{$sym}{'hash'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_hash++ if !is_ignored($symbols{$sym}{'loc'}, $sym); + $module_syms{$symbols{$sym}{'loc'}}++; + } +} + +print "WW: $moved symbols changed location\n" if $moved; +print "$EE $changed_type symbols changed export type and weren't ignored\n" if $changed_type; +print "$EE $changed_hash symbols changed hash and weren't ignored\n" if $changed_hash; + +$errors++ if $changed_hash or $changed_type; +if ($changed_hash) { + print "II: Module hash change summary...\n"; + foreach $mod (sort { $module_syms{$b} <=> $module_syms{$a} } keys %module_syms) { + next if ! $module_syms{$mod}; + printf(" %-40s: %d\n", $mod, $module_syms{$mod}); + } +} + +print "II: Done\n"; + +if ($errors) { + exit($fail_exit); +} else { + exit(0); +} --- linux-3.5.0.orig/debian/scripts/module-inclusion +++ linux-3.5.0/debian/scripts/module-inclusion @@ -0,0 +1,60 @@ +#!/bin/bash + +# +# Build a new directory of modules based on an inclusion list. +# The includsion list format must be a bash regular expression. +# +# usage: $0 ROOT INCLUSION_LIST +# example: $0 debian/build/build-virtual \ +# debian/build/build-virtual-ALL debian/build/build-virtual \ +# debian.master/control.d/virtual.inclusion-list +master=0 +if [ "$1" = "--master" ]; then + master=1 + shift +fi + +ROOT=$1 +NROOT=$2 +ILIST=$3 + +# +# Prep a destination directory. +# +mkdir -p ${NROOT} + +# Copy over the framework... +if [ "$master" -eq 1 ]; then + (cd ${ROOT}; find . ! -name "*.ko" -type f) | \ + while read f + do + mkdir -p ${NROOT}/`dirname $f` + mv ${ROOT}/$f ${NROOT}/$f + done +fi + +cat ${ILIST} |while read i +do + # + # 'find' blurts a warning if it cannot find any ko files. + # + if echo "$i" | grep '\*' > /dev/null + then + (cd ${ROOT}; eval find "${i}" -name "*.ko") |while read f + do + mkdir -p ${NROOT}/`dirname $f` + mv ${ROOT}/$f ${NROOT}/$f + done + else + if [ -f "${ROOT}/$i" ] + then + mkdir -p ${NROOT}/`dirname $i` + mv ${ROOT}/$i ${NROOT}/$i + else + echo Warning: Could not find ${ROOT}/$i + fi + fi + +done + +exit 0 --- linux-3.5.0.orig/debian/scripts/config-check +++ linux-3.5.0/debian/scripts/config-check @@ -0,0 +1,413 @@ +#!/usr/bin/perl +# +# check-config -- check the current config for issues +# +use strict; + +my $P = 'check-config'; + +my $test = -1; +if ($ARGV[0] eq '--test') { + $test = $ARGV[1] + 0; +} elsif ($#ARGV != 4) { + die "Usage: $P \n"; +} + +my ($config, $arch, $flavour, $commonconfig, $warn_only) = @ARGV; + +my $checks = "$commonconfig/enforce"; +my %values = (); + +# If we are in overridden then still perform the checks and emit the messages +# but do not return failure. Those items marked FATAL will alway trigger +# failure. +my $fail_exit = 1; +$fail_exit = 0 if ($warn_only eq 'true' || $warn_only eq '1'); +my $exit_val = 0; + +# Predicate execution engine. +sub pred_first { + my ($rest) = @_; + my $depth = 0; + my $off; + my $char; + my $pred; + + for ($off = 0; $off <= length($rest); $off++) { + $char = substr($rest, $off, 1); + if ($char eq '(') { + $depth++; + } elsif ($char eq ')') { + $depth--; + } elsif ($depth == 0 && $char eq '&') { + last; + } elsif ($depth == 0 && $char eq '|') { + last; + } + } + if ($depth > 0) { + die "$P: $rest: missing close parenthesis ')'\n"; + } elsif ($depth < 0) { + die "$P: $rest: missing open parenthesis '('\n"; + } + + ($pred, $rest) = (substr($rest, 0, $off), substr($rest, $off + 1)); + + $pred =~ s/^\s*//; + $pred =~ s/\s*$//; + + #print "pred<$pred> rest<$rest> char<$char>\n"; + ($pred, $rest, $char); +} + +sub pred_do { + my ($pred) = @_; + my (@a) = split(' ', $pred); + my $possible; + + if ($a[0] eq 'arch') { + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** ARCH<$flavour ?? $possible>\n"; + return 1 if ($arch eq $possible); + } + return 0; + } elsif ($a[0] eq 'flavour') { + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** FLAVOUR<$flavour ?? $a[1]>\n"; + return 1 if ($flavour eq $possible); + } + return 0; + } elsif ($a[0] eq 'value') { + die "$P: $pred: malformed -- $pred \n" if ($#a != 2); + #print " *** CHECK<$a[1] $a[2] ?? " . $values{$a[1]} . ">\n"; + return ($values{$a[1]} eq $a[2]); + } elsif ($a[0] eq 'exists') { + die "$P: $pred: malformed -- $pred \n" if ($#a != 1); + return (defined $values{$a[1]}); + } else { + die "$P: $pred: unknown predicate\n"; + } + return 1; +} +sub pred_exec { + my ($rest) = @_; + my $pred; + my $cut = 0; + my $res; + my $sep; + + #print "pred_exec<$rest>\n"; + + ($pred, $rest, $sep) = pred_first($rest); + + # Leading ! implies inversion. + if ($pred =~ /^\s*!\s*(.*)$/) { + #print " invert<$1>\n"; + ($cut, $res) = pred_exec($1); + $res = !$res; + + # Leading / implies a CUT operation. + } elsif ($pred =~ /^\s*\/\s*(.*)$/) { + #print " cut<$1>\n"; + ($cut, $res) = pred_exec($1); + $cut = 1; + + # Recurse left for complex expressions. + } elsif ($pred =~ /^\s*\((.*)\)\s*$/) { + #print " left<$1>\n"; + ($cut, $res) = pred_exec($1); + + # Check for common syntax issues. + } elsif ($pred eq '') { + if ($sep eq '&' || $sep eq '|') { + die "$P: $pred$rest: malformed binary operator\n"; + } else { + die "$P: $pred$rest: syntax error\n"; + } + + # A predicate, execute it. + } else { + #print " DO<$pred> sep<$sep>\n"; + $res = pred_do($pred); + } + + #print " pre-return res<$res> sep<$sep>\n"; + if ($sep eq '') { + # + + # Recurse right for binary operators -- note these are lazy. + } elsif ($sep eq '&' || $sep eq '|') { + #print " right<$rest> ? sep<$sep> res<$res>\n"; + if ($rest =~ /^\s*($|\||\&)/) { + die "$P: $pred$rest: malformed binary operator\n"; + } + if ($cut == 0 && (($res && $sep eq '&') || (!$res && $sep eq '|'))) { + #print " right<$rest>\n"; + ($cut, $res) = pred_exec($rest); + } + + } else { + die "$P: $pred$rest: malformed predicate\n"; + } + #warn " return cut<$cut> res<$res> sep<$sep>\n"; + return ($cut, $res); +} + +# +# PREDICATE TESTS +# +my $test_total = 1; +my $test_good = 0; +sub pred_test { + my ($pred, $eres, $eerr) = @_; + my ($cut, $res, $err, $fail); + + $test_total++; + if ($test != 0 && $test != $test_total - 1) { + return; + } + + eval { + ($cut, $res) = pred_exec($pred); + }; + $err = $@; + chomp($err); + + $res = !!$res; + $eres = !!$eres; + + $fail = ''; + if (defined $eres && $res != $eres) { + $fail = "result missmatch, expected $eres returned $res"; + } + if (defined $eerr && $err eq '') { + $fail = "error missmatch, expected '$eerr' returned success"; + } elsif (defined $eerr && $err !~ /$eerr/) { + $fail = "error missmatch, expected '$eerr' returned '$err'"; + } elsif (!defined $eerr && $err ne '') { + $fail = "error missmatch, expected success returned '$err'"; + } + + if ($fail eq '') { + $test_good++; + } else { + print "$pred: $test_total: FAIL: $fail\n"; + } + #print "TEST<$pred> eres<$eres> eerr<$eerr> res<$res> err<$err>\n"; +} +if ($test >= 0) { + $arch = 'MYARCH'; + $flavour = 'MYFLAVOUR'; + %values = ( 'ENABLED' => 'y', 'DISABLED' => 'n' ); + + # Errors. + my $eunkn = 'unknown predicate'; + my $epred = 'malformed'; + my $eclose = 'missing close parenthesis'; + my $eopen = 'missing open parenthesis'; + my $ebinary = 'malformed binary operator'; + + # Basic predicate tests. + print "TEST: $test_total: basic predicate tests ...\n"; + + pred_test('nosuchcommand', undef, $eunkn); + pred_test('arch', undef, $epred); + pred_test('arch MYARCH', 1, undef); + pred_test('arch MYARCH NOTMYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH NOTMYARCH', 1, undef); + pred_test('arch NOTMYARCH', 0, undef); + + pred_test('flavour', undef, $epred); + pred_test('flavour MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR NOTMYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR', 0, undef); + + pred_test('value', undef, $epred); + pred_test('value ENABLED', undef, $epred); + pred_test('value ENABLED ENABLED ENABLED', undef, $epred); + pred_test('value ENABLED y', 1, undef); + pred_test('value ENABLED n', 0, undef); + pred_test('value DISABLED n', 1, undef); + pred_test('value DISABLED y', 0, undef); + + pred_test('exists', undef, $epred); + pred_test('exists ENABLED ENABLED', undef, $epred); + pred_test('exists ENABLED', 1, undef); + pred_test('exists DISABLED', 1, undef); + pred_test('exists MISSING', 0, undef); + + print "TEST: $test_total: inversion tests ...\n"; + pred_test('!exists ENABLED', 0, undef); + pred_test('!exists MISSING', 1, undef); + pred_test('!!exists ENABLED', 1, undef); + pred_test('!!exists MISSING', 0, undef); + pred_test('!!!exists ENABLED', 0, undef); + pred_test('!!!exists MISSING', 1, undef); + + print "TEST: $test_total: parentheses tests ...\n"; + pred_test('(exists ENABLED)', 1, undef); + pred_test('((exists ENABLED))', 1, undef); + pred_test('(((exists ENABLED)))', 1, undef); + pred_test('(exists MISSING)', 0, undef); + pred_test('((exists MISSING))', 0, undef); + pred_test('(((exists MISSING)))', 0, undef); + + pred_test('(!exists ENABLED)', 0, undef); + pred_test('((!exists ENABLED))', 0, undef); + pred_test('(((!exists ENABLED)))', 0, undef); + pred_test('(!exists MISSING)', 1, undef); + pred_test('((!exists MISSING))', 1, undef); + pred_test('(((!exists MISSING)))', 1, undef); + + pred_test('((!(exists ENABLED)))', 0, undef); + pred_test('((!(exists MISSING)))', 1, undef); + pred_test('(!((exists ENABLED)))', 0, undef); + pred_test('(!((exists MISSING)))', 1, undef); + pred_test('!(((exists ENABLED)))', 0, undef); + pred_test('!(((exists MISSING)))', 1, undef); + pred_test('!((!(exists ENABLED)))', 1, undef); + pred_test('!((!(exists MISSING)))', 0, undef); + pred_test('!(!(!(exists ENABLED)))', 0, undef); + pred_test('!(!(!(exists MISSING)))', 1, undef); + + pred_test('(', undef, $eclose); + pred_test('()(', undef, $eclose); + pred_test('(())(', undef, $eclose); + pred_test('((()))(', undef, $eclose); + pred_test('(()', undef, $eclose); + pred_test('((())', undef, $eclose); + pred_test('(((()))', undef, $eclose); + pred_test('(()()', undef, $eclose); + pred_test('((())()', undef, $eclose); + + pred_test(')', undef, $eopen); + pred_test('())', undef, $eopen); + pred_test('(()))', undef, $eopen); + pred_test('((())))', undef, $eopen); + + print "TEST: $test_total: binary and tests ...\n"; + + pred_test('exists ENABLED &', undef, $ebinary); + pred_test('& exists ENABLED', undef, $ebinary); + pred_test('exists ENABLED & & exists ENABLED', undef, $ebinary); + + pred_test('exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists ENABLED', 1, undef); + + pred_test('exists MISSING & exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING & exists MISSING & exists ENABLED', 0, undef); + pred_test('exists MISSING & exists ENABLED & exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists MISSING & exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists ENABLED & exists MISSING', 0, undef); + pred_test('exists ENABLED & exists ENABLED & exists ENABLED', 1, undef); + + print "TEST: $test_total: binary or tests ...\n"; + + pred_test('exists ENABLED |', undef, $ebinary); + pred_test('| exists ENABLED', undef, $ebinary); + pred_test('exists ENABLED | | exists ENABLED', undef, $ebinary); + + pred_test('exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED', 1, undef); + + pred_test('exists MISSING | exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING | exists MISSING | exists ENABLED', 1, undef); + pred_test('exists MISSING | exists ENABLED | exists MISSING', 1, undef); + pred_test('exists MISSING | exists ENABLED | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED | exists ENABLED', 1, undef); + + print "TEST: $test_total: binary or/and combination tests ...\n"; + + pred_test('exists MISSING | exists MISSING & exists MISSING', 0, undef); + pred_test('exists MISSING | exists MISSING & exists ENABLED', 0, undef); + pred_test('exists MISSING | exists ENABLED & exists MISSING', 0, undef); + pred_test('exists MISSING | exists ENABLED & exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists MISSING & exists MISSING', 1, undef); + pred_test('exists ENABLED | exists MISSING & exists ENABLED', 1, undef); + pred_test('exists ENABLED | exists ENABLED & exists MISSING', 1, undef); + pred_test('exists ENABLED | exists ENABLED & exists ENABLED', 1, undef); + + print "TEST: $test_total: binary and/or combination tests ...\n"; + + pred_test('exists MISSING & exists MISSING | exists MISSING', 0, undef); + pred_test('exists MISSING & exists MISSING | exists ENABLED', 0, undef); + pred_test('exists MISSING & exists ENABLED | exists MISSING', 0, undef); + pred_test('exists MISSING & exists ENABLED | exists ENABLED', 0, undef); + pred_test('exists ENABLED & exists MISSING | exists MISSING', 0, undef); + pred_test('exists ENABLED & exists MISSING | exists ENABLED', 1, undef); + pred_test('exists ENABLED & exists ENABLED | exists MISSING', 1, undef); + pred_test('exists ENABLED & exists ENABLED | exists ENABLED', 1, undef); + + print "TEST: $test_total: cut tests ...\n"; + pred_test('(arch MYARCH & exists MISSING) | exists ENABLED', 1, undef); + pred_test('(arch MYARCH &/ exists MISSING) | exists ENABLED', 0, undef); + + $test_total--; + print "TEST: $test_good/$test_total succeeded\n"; + + exit $exit_val; +} + +# Load up the current configuration values -- FATAL if this fails +print "$P: $config: loading config\n"; +open(CONFIG, "<$config") || die "$P: $config: open failed -- $! -- aborting\n"; +while () { + # Pull out values. + /^#*\s*(CONFIG_\w+)[\s=](.*)$/ or next; + if ($2 eq 'is not set') { + $values{$1} = 'n'; + } else { + $values{$1} = $2; + } +} +close(CONFIG); + +# FATAL: Check if we have an enforcement list. +my $pass = 0; +my $total = 0; +my $line = ''; +print "$P: $checks: loading checks\n"; +open(CHECKS, "<$checks") || die "$P: $checks: open failed -- $! -- aborting\n"; +while () { + /^#/ && next; + chomp; + + $line .= $_; + if ($line =~ /\\$/) { + chop($line); + $line .= " "; + next; + } + $line =~ /^\s*$/ && next; + + #print "CHECK: <$line>\n"; + $total++; + my (undef, $result) = pred_exec($line); + if (!$result) { + print "$P: FAIL: $line\n"; + $exit_val = $fail_exit; + } else { + $pass++; + } + + $line = ''; +} +close(CHECKS); + +print "$P: $pass/$total checks passed -- exit $exit_val\n"; +exit $exit_val; --- linux-3.5.0.orig/debian/scripts/module-check +++ linux-3.5.0/debian/scripts/module-check @@ -0,0 +1,120 @@ +#!/usr/bin/perl -w + +$flavour = shift; +$prev_abidir = shift; +$abidir = shift; +$skipmodule = shift; + +print "II: Checking modules for $flavour..."; + +if (-f "$prev_abidir/ignore.modules" + or -f "$prev_abidir/$flavour.ignore.modules") { + print "explicitly ignoring modules\n"; + exit(0); +} + +if (not -f "$abidir/$flavour.modules" or not -f + "$prev_abidir/$flavour.modules") { + print "previous or current modules file missing!\n"; + print " $abidir/$flavour.modules\n"; + print " $prev_abidir/$flavour.modules\n"; + if (defined($skipmodule)) { + exit(0); + } else { + exit(1); + } +} + +print "\n"; + +my %modules; +my %modules_ignore; +my $missing = 0; +my $new = 0; +my $errors = 0; + +# See if we have any ignores +if (-f "$prev_abidir/../modules.ignore") { + my $ignore = 0; + open(IGNORE, "< $prev_abidir/../modules.ignore") or + die "Could not open $prev_abidir/../modules.ignore"; + print " reading modules to ignore..."; + while () { + chomp; + next if /\s*#/; + $modules_ignore{$_} = 1; + $ignore++; + } + close(IGNORE); + print "read $ignore modules.\n"; +} + +# Read new modules first +print " reading new modules..."; +$new_count = 0; +open(NEW, "< $abidir/$flavour.modules") or + die "Could not open $abidir/$flavour.modules"; +while () { + chomp; + $modules{$_} = 1; + $new_count++; +} +close(NEW); +print "read $new_count modules.\n"; + +# Now the old modules, checking for missing ones +print " reading old modules..."; +$old_count = 0; +open(OLD, "< $prev_abidir/$flavour.modules") or + die "Could not open $prev_abidir/$flavour.modules"; +while () { + chomp; + if (not defined($modules{$_})) { + print "\n" if not $missing; + $missing++; + if (not defined($modules_ignore{$_})) { + print " MISS: $_\n"; + $errors++; + } else { + print " MISS: $_ (ignored)\n"; + } + } else { + $modules{$_}++; + } + $old_count++; +} +close(OLD); +# Check for new modules +foreach $mod (keys(%modules)) { + if ($modules{$mod} < 2) { + print "\n" if not $missing and not $new; + print " NEW : $mod\n"; + $new++; + } +} +if ($new or $missing) { + print " read $old_count modules : new($new) missing($missing)\n"; +} else { + print "read $old_count modules.\n"; +} + + +# Let's see where we stand... +if ($errors) { + if (defined($skipmodule)) { + print "WW: Explicitly asked to ignore failures (probably not good)\n"; + } else { + print "EE: Missing modules (start begging for mercy)\n"; + exit 1 + } +} + +if ($new) { + print "II: New modules (you've been busy, wipe the poop off your nose)\n"; +} else { + print "II: No new modules (hope you're happy, slacker)\n"; +} + +print "II: Done\n"; + +exit(0); --- linux-3.5.0.orig/debian/scripts/control-create +++ linux-3.5.0/debian/scripts/control-create @@ -0,0 +1,25 @@ +#!/bin/bash + +. debian/debian.env + +vars=$1 + +. $vars + +if [ "$is_sub" = "" ]; then + flavour=$(basename $vars | sed 's/.*\.//') + stub=${DEBIAN}/control.d/flavour-control.stub +else + flavour=$(basename $vars .vars) + stub=${DEBIAN}/sub-flavours/control.stub +fi + +cat $stub | grep -v '^#' | sed \ + -e "s#FLAVOUR#$flavour#g" \ + -e "s#DESC#$desc#g" \ + -e "s#ARCH#$arch#g" \ + -e "s#SUPPORTED#$supported#g" \ + -e "s#TARGET#$target#g" \ + -e "s#BOOTLOADER#$bootloader#g" \ + -e "s#=PROVIDES=#$provides#g" \ + -e "s#=CONFLICTS=#$conflicts#g" --- linux-3.5.0.orig/debian/scripts/link-headers +++ linux-3.5.0/debian/scripts/link-headers @@ -0,0 +1,42 @@ +#!/bin/bash -e + +. debian/debian.env + +hdrdir="$1" +symdir="$2" +flavour="$3" + +echo "Symlinking and copying headers for $flavour..." + +excludes="( -path ./debian -prune -o -path ./${DEBIAN} -prune -o -path ./.git ) -prune -o" + +( +find . $excludes -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) -print +find ./include ./scripts -name .gitignore -prune -o -type f -print +find ./include -mindepth 1 -maxdepth 1 $excludes -type d -print +) | ( +while read file; do + dir=$file + lastdir=$file + + if [ -e "$hdrdir/$file" -o -L "$hdrdir/$file" ]; then + continue + fi + + while [ ! -e "$hdrdir/$dir" -a ! -L "$hdrdir/$dir" ]; do + lastdir=$dir + dir=`dirname $dir` + done + # If the last item to exist is a symlink we assume all is good + if [ ! -L "$hdrdir/$dir" ]; then + # Turns things like "./foo" into "../" + deref="`echo -n $lastdir | sed -e 's/^\.//' -e's,/[^/]*,../,g'`" + item="`echo -n $lastdir | sed -e 's/^\.\///'`" + ln -s $deref$symdir/$item $hdrdir/$item + fi +done +) + +exit --- linux-3.5.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-3.5.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,232 @@ +#!/usr/bin/perl -w + +use strict; +use Text::Wrap; + +my $kernel_auth = "Upstream Kernel Changes"; + +my (%map, @reverts); +my $pstate = 1; +my $no_kern_log = 0; +my $print_shas = 0; +my $first_print = 1; + +while (@ARGV) { + my $opt = $ARGV[0]; + shift; + if ($opt eq "--no-kern-log") { + $no_kern_log = 1; + } elsif ($opt eq "--print-shas") { + $print_shas = 1; + } else { + print STDERR "Unknown options: $opt\n"; + exit(1); + } +} + +sub check_reverts($) { + my ($entry) = @_; + my ($check); + + foreach $check (reverse @reverts) { + my $desc = "Revert \"" . $entry->{'desc'} . "\""; + if ($check->{'desc'} eq $desc) { + @reverts = grep($_->{'desc'} ne $desc, @reverts); + return 1; + } + } + + return 0; +} + +sub add_entry($) { + my ($entry) = @_; + my $key = $entry->{'author'}; + + # store description in array, in email->{desc list} map + if (exists $map{$key}) { + # grab ref + my $obj = $map{$key}; + + # add desc to array + push(@$obj, $entry); + } else { + # create new array, containing 1 item + my @arr = ($entry); + + # store ref to array + $map{$key} = \@arr; + } +} + +sub shortlog_entry($$$$$) { + my ($name, $desc, $bug, $cve, $commit) = @_; + my $entry; + + $desc =~ s#/pub/scm/linux/kernel/git/#/.../#g; + $desc =~ s#\[PATCH\] ##g; + + $desc =~ s#^\s*##g; + $desc =~ s# *UBUNTU: ##g; + + $entry->{'desc'} = $desc; + if ($bug ne '') { + $entry->{'bugno'} = $bug; + } + $entry->{'cve'} = $cve; + $entry->{'commit'} = $commit; + $entry->{'author'} = $name; + + if ($desc =~ /^Revert "/) { + push(@reverts, $entry); + return; + } + + return if check_reverts($entry); + + add_entry($entry); +} + +# sort comparison function +sub by_name($$) { + my ($a, $b) = @_; + + uc($a) cmp uc($b); +} + +sub shortlog_output { + my ($obj, $key, $entry); + + foreach $key (sort by_name keys %map) { + next if $key eq $kernel_auth and $no_kern_log; + + print "\n" unless $first_print; + $first_print = 0; + + # output author + printf " [ %s ]\n\n", $key; + + # output author's 1-line summaries + $obj = $map{$key}; + foreach $entry (reverse @$obj) { + print wrap(" * ", " ", $entry->{'desc'}) . "\n"; + # For non upstream changes, add other info. + if ($key ne $kernel_auth) { + if ($print_shas) { + print " - GIT-SHA " . $entry->{'commit'} . + "\n"; + } + } + if (defined($entry->{'bugno'})) { + print " - LP: #" . $entry->{'bugno'} . "\n"; + } + if (defined($entry->{'cve'})) { + print " - " . $entry->{'cve'} . "\n"; + } + } + } +} + +sub changelog_input { + my ($author, $desc, $commit, $entry, $cve); + + while () { + # get commit + if ($pstate == 1) { + next unless /^commit (.*)/; + + $commit = $1; + + $pstate++; + } + + # get author and email + elsif ($pstate == 2) { + my ($email); + + next unless /^[Aa]uthor:?\s*(.*?)\s*<(.*)>/; + + $author = $1; + $email = $2; + $desc = undef; + $cve = undef; + + # cset author fixups + if (!$author) { + $author = $email; + } + $pstate++; + } + + # skip to blank line + elsif ($pstate == 3) { + next unless /^\s*$/; + $pstate++; + } + + # skip to non-blank line + elsif ($pstate == 4) { + next unless /^\s*?(.*)/; + my $ignore = 0; + my $do_ignore = 0; + my $bug = undef; + my %bugz = (); + my $k; + + # skip lines that are obviously not + # a 1-line cset description + next if /^\s*From: /; + + chomp; + $desc = $1; + + if ($desc =~ /^ *(Revert "|)UBUNTU:/) { + $do_ignore = 1; + } else { + $do_ignore = 0; + $author = $kernel_auth; + $ignore = 1 if $desc =~ /Merge /; + } + while () { + $ignore = 1 if ($do_ignore && /^ *Ignore: yes/i); + if (/^ *Bug: *(#|)([0-9#,\s]*)\s*$/i) { + foreach $k (split('(,|\s)\s*(#|)', $2)) { + $bugz{$k} = 1 if (($k ne '') and ($k =~ /[0-9]+/)); + } + } + elsif (/^ *BugLink: *http.*:\/\/.*\/([0-9]+)/i) { + $bugz{$1} = 1; + } + elsif (/^ *(CVE-.*)/) { + $cve = $1 + } + last if /^commit /; + } + + $bug = join(", #", sort keys(%bugz)); + if (!$ignore) { + &shortlog_entry($author, $desc, $bug, + $cve, $commit, 0); + } + + $pstate = 1; + if ($_ && /^commit (.*)/) { + $commit = $1; + $pstate++; + } + } + + else { + die "invalid parse state $pstate"; + } + } + + foreach $entry (@reverts) { + add_entry($entry); + } +} + +&changelog_input; +&shortlog_output; + +exit(0); --- linux-3.5.0.orig/debian/scripts/misc/get-firmware +++ linux-3.5.0/debian/scripts/misc/get-firmware @@ -0,0 +1,45 @@ +#!/bin/bash +# +# Find all files in linux-firmware that are new or different since the previous release +# and copy them into the kernel firmware directory. You should only do this on the +# backport branch since it would be redundant on the released kernel. It assumed you've +# unpacked linux-firmware from each release into separate directories. +# +# Example: $0 ~/ubuntu/linux-firmware-precise ~/ubuntu/linux-firmware-quantal + +if [ "$1" = "" ] || [ "$2" = "" ] || [ ! -f $1/WHENCE ] || [ ! -f $2/WHENCE ] +then + echo You must supply 2 firmware directories. + exit 1 +fi + +if [ ! -f debian/debian.env ] +then + echo You must run this script from the root of the repo + exit 1 +fi + +CDIR=`pwd` +OFW=$1 +NFW=$2 + +cd $NFW +# +# Find all files in $NFW that are new or different from $1 +# +(find . -type f | egrep -v "debian|git|LICEN|WHEN|READ|Make|configure" | sed 's;\./;;' | \ +while read f +do + if [ ! -f $OFW/$f ] + then + echo $f + elif ! cmp $f $OFW/$f > /dev/null + then + echo $f + fi +done) |\ +while read f +do + mkdir -p $CDIR/firmware/`dirname $f` + cp -v $f $CDIR/firmware/`dirname $f` +done --- linux-3.5.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-3.5.0/debian/scripts/misc/insert-ubuntu-changes @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + die "Usage: $0 \n"; +} +my ($changelog, $end, $start) = @ARGV; + +$end =~ s/.*\.//; +$start =~ s/.*\.//; + +my @changes = (); +my $output = 0; +open(CHG, ") { + if (/^\S+\s+\((.*\.(\d+))\)/) { + if ($2 <= $end) { + last; + } + if ($2 == $start) { + $output = 1; + } + if ($output) { + push(@changes, "\n [ Ubuntu: $1 ]\n\n"); + next; + } + } + next if ($output == 0); + + next if (/^\s*$/); + next if (/^\s--/); + next if (/^\s\s[^\*\s]/); + + push(@changes, $_); +} +close(CHG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-3.5.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-3.5.0/debian/scripts/misc/insert-mainline-changes @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + warn "Usage: $0 \n"; + die " $0 debian.master/changelog v3.2.3 v3.2.2..v3.2.3\n"; +} +my ($changelog, $to, $range) = @ARGV; + +my @changes = (); + +push(@changes, "\n"); +push(@changes, " [ Upstream Kernel Changes ]\n\n"); +push(@changes, " * rebase to $to\n"); + +open(LOG, "git log '$range'|") || die "$0: git log failed: - $!\n"; +while () { + if (m@BugLink: .*launchpad.net/.*/([0-9]+)\s$@) { + push(@changes, " - LP: #$1\n"); + } +} +close(LOG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-3.5.0.orig/debian/scripts/misc/retag +++ linux-3.5.0/debian/scripts/misc/retag @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w + +open(TAGS, "git tag -l |") or die "Could not get list of tags"; +@tags = ; +close(TAGS); + +open(LOGS, "git log --pretty=short |") or die "ERROR: Calling git log"; +my $commit = ""; + +while () { + my $origtag; + + if (m|^commit (.*)$|) { + $commit = $1; + next; + } + + m|\s*UBUNTU: (Ubuntu-2\.6\..*)| or next; + + $tag = $1; + + ($origtag) = grep(/^$tag.orig$/, @tags); + + if (!defined($origtag)) { + print "I: Adding original tag for $tag\n"; + system("git tag -m $tag $tag.orig $tag"); + } + + print "I: Tagging $tag => $commit\n"; + + system("git tag -f -m $tag $tag $commit"); +} + +close(LOGS); --- linux-3.5.0.orig/debian/scripts/misc/kernelconfig +++ linux-3.5.0/debian/scripts/misc/kernelconfig @@ -0,0 +1,172 @@ +#!/bin/bash + +. debian/debian.env + +# Script to merge all configs and run 'make silentoldconfig' on it to wade out bad juju. +# Then split the configs into distro-commmon and flavour-specific parts + +# We have to be in the top level kernel source directory +if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then + echo "This does not appear to be the kernel source directory." 1>&2 + exit 1 +fi + +mode=${1:?"Usage: $0 [oldconfig|editconfig]"} +yes=0 +case "$mode" in + update*configs) mode='silentoldconfig' ;; + default*configs) mode='oldconfig'; yes=1 ;; + edit*configs) ;; # All is good + gen*configs) mode='genconfigs' ;; # All is good + dump*configs) mode='config'; yes=1 ;; + *) echo "$0 called with invalid mode" 1>&2 + exit 1 ;; +esac +kerneldir="`pwd`" +confdir="$kerneldir/${DEBIAN}/config" +sharedconfdir="$kerneldir/debian.master/config" +variant="$2" + +. $DEBIAN/etc/kernelconfig + +bindir="`pwd`/${DROOT}/scripts/misc" +common_conf="$confdir/config.common.$family" +tmpdir=`mktemp -d` +mkdir "$tmpdir/CONFIGS" + +if [ "$mode" = "genconfigs" ]; then + keep=1 + mode="oldconfig" + test -d CONFIGS || mkdir CONFIGS +fi + +for arch in $archs; do + rm -rf build + mkdir build + + # Map debian archs to kernel archs + case "$arch" in + ppc64) kernarch="powerpc" ;; + amd64) kernarch="x86_64" ;; + lpia) kernarch="x86" ;; + sparc) kernarch="sparc64" ;; + armel|armhf) kernarch="arm" ;; + *) kernarch="$arch" ;; + esac + + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + + # Merge configs + # We merge config.common.ubuntu + config.common. + + # config.flavour. + + for config in $flavourconfigs; do + fullconf="$tmpdir/$arch-$config-full" + case $config in + *) + : >"$fullconf" + if [ -f $common_conf ]; then + cat $common_conf >> "$fullconf" + fi + if [ -f $archconfdir/config.common.$arch ]; then + cat $archconfdir/config.common.$arch >> "$fullconf" + fi + cat "$archconfdir/$config" >>"$fullconf" + if [ -f $confdir/OVERRIDES ]; then + cat $confdir/OVERRIDES >> "$fullconf" + fi + ;; + esac + done + + for config in $flavourconfigs; do + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/$arch-$config-full" + cat "$fullconf" > build/.config + # Call oldconfig or menuconfig + case "$mode" in + editconfigs) + # Interactively edit config parameters + while : ; do + echo -n "Do you want to edit config: $arch/$config? [Y/n] " + read choice + + case "$choice" in + y* | Y* | "" ) + make O=`pwd`/build ARCH=$kernarch menuconfig + break ;; + n* | N* ) + break ;; + *) + echo "Entry not valid" + esac + done + ;; + *) + echo "* Run $mode (yes=$yes) on $arch/$config ..." + if [ "$yes" -eq 1 ]; then + yes "" | make O=`pwd`/build ARCH=$kernarch "$mode" + else + make O=`pwd`/build ARCH=$kernarch "$mode" + fi ;; + esac + cat build/.config > $archconfdir/$config + cat build/.config > "$tmpdir/CONFIGS/$arch-$config" + if [ "$keep" = "1" ]; then + cat build/.config > CONFIGS/$arch-$config + fi + else + echo "!! Config not found $archconfdir/$config..." + fi + done + + echo "Running splitconfig.pl for $arch" + echo + + # Can we make this more robust by avoiding $tmpdir completely? + # This approach was used for now because I didn't want to change + # splitconfig.pl + (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ + config.common.$arch; cp config.common.$arch $tmpdir) +done + +rm -f $common_conf + +# Now run splitconfig.pl on all the config.common. copied to +# $tmpdir +(cd $tmpdir; $bindir/splitconfig.pl *) +( + cd $confdir; + rm -f *-full + grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf + for arch in $archs; do + grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ + >$arch/config.common.$arch + done +) + +echo "" +echo "Running config-check for all configurations ..." +echo "" +fail=0 +for arch in $archs; do + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + for config in $flavourconfigs; do + flavour="${config##*.}" + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/CONFIGS/$arch-$config" + "$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$sharedconfdir" "0" || let "fail=$fail+1" + fi + done +done + +if [ "$fail" != 0 ]; then + echo "" + echo "*** ERROR: $fail config-check failures detected" + echo "" +fi + +rm -rf build + --- linux-3.5.0.orig/debian/scripts/misc/getabis +++ linux-3.5.0/debian/scripts/misc/getabis @@ -0,0 +1,133 @@ +#!/bin/bash + +if [ "$#" != "2" ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi + +if [ "$DEBIAN" = "" ]; then + . debian/debian.env +fi + +ver=$1 +revision=$2 +abi=$(echo $revision | awk -F. '{print $1}') + +verabi=$ver-$abi +verfull=$ver-$revision + +WGET="wget --tries=1 --timeout=10 --quiet -c" + +abidir="`pwd`/$DEBIAN/abi/$verfull" +tmpdir="`pwd`/abi-tmp-$verfull" +origdir="`pwd`" +fwinfo=$abidir/fwinfo + +test -d $tmpdir || mkdir $tmpdir + +package_prefixes() { + __package_prefixes="$@" +} + +getall() { + arch=$1 + shift + + mkdir -p $abidir/$arch + + for sub in $@; do + if [ -f $abidir/$arch/$sub ]; then + echo "Exists: $sub" + continue + fi + echo -n "Fetching $sub($arch)..." + prefixes="" + filenames="" + cd $tmpdir + for prefix in $__package_prefixes + do + filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb + + # Take local copy if it is there... + if [ -f $HOME/$filename ]; then + echo -n "Locally!..." + cp $HOME/$filename . + fi + + for r in "${repo_list[@]}" + do + if ! [ -f $filename ]; then + $WGET $r/$filename + fi + if [ -f $filename ]; then + prefixes="$prefixes $prefix" + filenames="$filenames $filename" + break + fi + done + done + if [ "$filenames" != "" ]; then + echo -n "extracting$prefixes..." + for filename in $filenames + do + dpkg-deb --extract $filename tmp + done + find tmp -name "*.ko" | while read f; do + modinfo $f | grep ^firmware >> $fwinfo + done + if [ -f tmp/boot/abi-* ]; then + mv tmp/boot/abi-* $abidir/$arch/$sub + else + echo -n "NO ABI FILE..." + fi + (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \ + $abidir/$arch/$sub.modules + ( + cd tmp; + # Prevent exposing some errors when called by python scripts. SIGPIPE seems to get + # exposed when using the `find ...` form of the command. + ko=$(find lib/modules/$verabi-$sub/kernel \ + -name '*.ko' | head -1) + readelf -p .comment "$ko" | awk ' + ($1 == "[") { + printf("%s", $3); + for (n=4; n<=NF; n++) { + printf(" %s", $n); + } + print "" + }' | sort -u >$abidir/$arch/$sub.compiler + version=`cat $abidir/$arch/$sub.compiler` + echo -n "$version..." + ) + rm -rf tmp $filenames + echo "done." + else + echo "FAILED." + fi + cd $origdir + done +} + +# MAIN + +# Setup abi directory +mkdir -p $abidir +echo $abi > $abidir/abiname + +# NOTE: The flavours are hardcoded, because they may have changed from the +# current build. + +__package_prefixes="linux-image" + +. $DEBIAN/etc/getabis + +compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistant compiler versions detected" 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir --- linux-3.5.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-3.5.0/debian/scripts/misc/splitconfig.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl -w + +%allconfigs = (); +%common = (); + +print "Reading config's ...\n"; + +for $config (@ARGV) { + # Only config.* + next if $config !~ /^config\..*/; + # Nothing that is disabled, or remnant + next if $config =~ /.*\.(default|disabled|stub)$/; + + %{$allconfigs{$config}} = (); + + print " processing $config ... "; + + open(CONFIG, "< $config"); + + while () { + # Skip comments + /^#*\s*CONFIG_(\w+)[\s=](.*)$/ or next; + + ${$allconfigs{$config}}{$1} = $2; + + $common{$1} = $2; + } + + close(CONFIG); + + print "done.\n"; +} + +print "\n"; + +print "Merging lists ... \n"; + +# %options - pointer to flavour config inside the allconfigs array +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + for $key (keys(%common)) { + next if not defined $common{$key}; + + # If we don't have the common option, then it isn't + # common. If we do have that option, it must have the same + # value. EXCEPT where this file does not have a value at all + # which may safely be merged with any other value; the value + # will be elided during recombination of the parts. + if (!defined($options{$key})) { + # Its ok really ... let it merge + } elsif (not defined($options{$key})) { + undef $common{$key}; + } elsif ($common{$key} ne $options{$key}) { + undef $common{$key}; + } + } + + print "done.\n"; +} + +print "\n"; + +print "Creating common config ... "; + +open(COMMON, "> config.common"); +print COMMON "#\n# Common config options automatically generated by splitconfig.pl\n#\n"; + +for $key (sort(keys(%common))) { + if (not defined $common{$key}) { + print COMMON "# CONFIG_$key is UNMERGABLE\n"; + } elsif ($common{$key} eq "is not set") { + print COMMON "# CONFIG_$key is not set\n"; + } else { + print COMMON "CONFIG_$key=$common{$key}\n"; + } +} +close(COMMON); + +print "done.\n\n"; + +print "Creating stub configs ...\n"; + +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + open(STUB, "> $config"); + print STUB "#\n# Config options for $config automatically generated by splitconfig.pl\n#\n"; + + for $key (sort(keys(%options))) { + next if defined $common{$key}; + + if ($options{$key} =~ /^is /) { + print STUB "# CONFIG_$key $options{$key}\n"; + } else { + print STUB "CONFIG_$key=$options{$key}\n"; + } + } + + close(STUB); + + print "done.\n"; +} --- linux-3.5.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-3.5.0/debian/scripts/misc/insert-changes.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl -w + +my $debian; +$droot = $ARGV[0] if (defined $ARGV[0]); +$droot = 'debian' if (!defined $droot); +$debian = $ARGV[1] if (defined $ARGV[1]); +$debian = 'debian.master' if (!defined $debian); + +system("make -s -f $droot/rules printchanges > $debian/changes"); + +open(CHANGELOG, "< $debian/changelog") or die "Cannot open changelog"; +open(CHANGES, "< $debian/changes") or die "Cannot open new changes"; +open(NEW, "> $debian/changelog.new") or die "Cannot open new changelog"; + +$printed = 0; + +while () { + if (/^ CHANGELOG: /) { + next if $printed; + + while () { + print NEW; + } + + $printed = 1; + } else { + print NEW; + } +} + +close(NEW); +close(CHANGES); +close(CHANGELOG); + +rename("$debian/changelog.new", "$debian/changelog"); +unlink("$debian/changes"); --- linux-3.5.0.orig/debian/docs/README.inclusion-list +++ linux-3.5.0/debian/docs/README.inclusion-list @@ -0,0 +1,51 @@ +This README describes the reason for, and the use of, module +inclusion lists. + +The original Hardy release had the notion of sub-flavours, +e.g., a flavour that was constructed as a subset of an existing flavour. +For example, the virtual flavour was extracted from the server flavour using +a subset of the server flavour modules. However, there were some difficult +mainteneance issues with regard to packaging, make rules, and scripts. This +re-implementation of the sub-flavours philosophy is hopefully simpler, +and retrofitable to all releases. + +A module inclusion list looks at the problem of of constructing a package +from the perspective of what modules do we _want_ in the package, as opposed +to what modules we _don't_ want. As the kernel matures, more and more devices are added +which makes the problem of configuration maintenance a real pain in the ass. +If we took the approach of disabling all of the config options that we don't want, +then the differences between flavours will quickly become quite large, making +it difficult to quickly compare the individual flavour configs. Each time a +new config option is added then we also have to make a decision about disabling in +order to continue to keep the minimal number of modules. + +A module inclusion list is applied on a per-flavour basis. For example, +debian./control.d/${flavour}.inclusion-list. For example, the +config for virtual is very close to server and generic, but the inclusion list +causes the virtual package to be constructed with _only_ the modules described +in the inclusion list. + +The inclusion list format is a simple bash regular expression list of files. For example, + +arch/*/{crypto,kernel,oprofile} +drivers/acpi/* +drivers/ata/ahci.ko + +These 3 regular expression forms are suitable for expansion by bash and as inputs to 'find'. +See debian/scripts/module-inclusion for details. + +There are 2 log files created as a side effect of the application of the module +inclusion list; $(flavour).inclusion-list.log and $(flavour).depmod.log. + +$(flavour).inclusion-list.log : This log is created while the inclusion list +modules are being copied. If any are missing, then those warnings go in this log. +While its not considered a fatal error, you should endevour to correct your inclusion +list such that there are no missing modules. + +$(flavour).depmod.log : The log is created as a result of running depmod on the +resulting set of modules. If there are missing symbols then you'll find that information +here. Again, you should modify your inclusion list such that there are no missing +symbols. + +Tim Gardner +June 2, 2010 --- linux-3.5.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-3.5.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,156 @@ +build-indep: + @echo Debug: $@ + +docpkg = $(doc_pkg_name) +docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg) +install-doc: install-headers + @echo Debug: $@ +ifeq ($(do_doc_package),true) + dh_testdir + dh_testroot + dh_clean -k -p$(docpkg) + + install -d $(docdir) +ifeq ($(do_doc_package_content),true) + # First the html docs. We skip these for autobuilds + if [ -z "$(AUTOBUILD)" ]; then \ + install -d $(docdir)/$(doc_pkg_name)-tmp; \ + $(kmake) O=$(docdir)/$(doc_pkg_name)-tmp htmldocs; \ + mv $(docdir)/$(doc_pkg_name)-tmp/Documentation/DocBook \ + $(docdir)/html; \ + rm -rf $(docdir)/$(doc_pkg_name)-tmp; \ + fi +endif + # Copy the rest + cp -a Documentation/* $(docdir) + rm -rf $(docdir)/DocBook + find $(docdir) -name .gitignore | xargs rm -f +endif + +indep_hdrpkg = $(hdrs_pkg_name) +indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) +install-headers: + @echo Debug: $@ +ifeq ($(do_flavour_header_package),true) + dh_testdir + dh_testroot + dh_clean -k -p$(indep_hdrpkg) + + install -d $(indep_hdrdir) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune \ + -o -path './include/*' -prune \ + -o -path './scripts/*' -prune -o -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ + -print | cpio -pd --preserve-modification-time $(indep_hdrdir) + cp -a drivers/media/dvb/dvb-core/*.h $(indep_hdrdir)/drivers/media/dvb/dvb-core + cp -a drivers/media/video/*.h $(indep_hdrdir)/drivers/media/video + cp -a drivers/media/dvb/frontends/*.h $(indep_hdrdir)/drivers/media/dvb/frontends + cp -a drivers/staging/omapdrm/omap_dr*.h $(indep_hdrdir)/drivers/staging/omapdrm + cp -a scripts include $(indep_hdrdir) + (find arch -name include -type d -print | \ + xargs -n1 -i: find : -type f) | \ + cpio -pd --preserve-modification-time $(indep_hdrdir) +endif + +srcpkg = $(src_pkg_name)-source-$(release) +srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg) +balldir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)/$(srcpkg) +install-source: install-doc + @echo Debug: $@ +ifeq ($(do_source_package),true) + dh_testdir + dh_testroot + dh_clean -k -p$(srcpkg) + + install -d $(srcdir) +ifeq ($(do_source_package_content),true) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune -o \ + -path './.*' -prune -o -print | \ + cpio -pd --preserve-modification-time $(balldir) + (cd $(srcdir); tar cf - $(srcpkg)) | bzip2 -9c > \ + $(srcdir)/$(srcpkg).tar.bz2 + rm -rf $(balldir) + find './debian' './$(DEBIAN)' \ + -path './debian/linux-*' -prune -o \ + -path './debian/$(src_pkg_name)-*' -prune -o \ + -path './debian/build' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/stamps' -prune -o \ + -path './debian/tmp' -prune -o \ + -print | \ + cpio -pd --preserve-modification-time $(srcdir) + ln -s $(srcpkg)/$(srcpkg).tar.bz2 $(srcdir)/.. +endif +endif + +install-tools: toolspkg = $(tools_common_pkg_name) +install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin +install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin +install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man +install-tools: install-source $(stampdir)/stamp-build-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) + dh_testdir + dh_testroot + dh_clean -k -p$(toolspkg) + + install -d $(toolsbin) + install -d $(toolsman)/man1 + + install -m755 debian/tools/perf $(toolsbin)/perf + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -m755 debian/tools/x86_energy_perf_policy $(toolsbin)/x86_energy_perf_policy; \ + install -m755 debian/tools/turbostat $(toolsbin)/turbostat; \ + install -d $(toolssbin) ; \ + install -m755 debian/tools/generic $(toolssbin)/hv_kvp_daemon; \ + fi + + rm -rf $(builddir)/tools + install -d $(builddir)/tools + for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools/; done + rm $(builddir)/tools/tools + rsync -a tools/ $(builddir)/tools/tools/ + + cd $(builddir)/tools/tools/perf && make man + install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \ + $(toolsman)/man1 + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -d $(toolsman)/man8; \ + install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8; \ + install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8; \ + install -m644 $(CURDIR)/tools/hv/*.8 $(toolsman)/man8; \ + fi +endif + +install-indep: install-tools + @echo Debug: $@ + +# This is just to make it easy to call manually. Normally done in +# binary-indep target during builds. +binary-headers: install-headers + @echo Debug: $@ + dh_testdir + dh_testroot + dh_installchangelogs -p$(indep_hdrpkg) + dh_installdocs -p$(indep_hdrpkg) + dh_compress -p$(indep_hdrpkg) + dh_fixperms -p$(indep_hdrpkg) + dh_installdeb -p$(indep_hdrpkg) + $(lockme) dh_gencontrol -p$(indep_hdrpkg) + dh_md5sums -p$(indep_hdrpkg) + dh_builddeb -p$(indep_hdrpkg) + +binary-indep: install-indep + @echo Debug: $@ + dh_testdir + dh_testroot + + dh_installchangelogs -i + dh_installdocs -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + $(lockme) dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i --- linux-3.5.0.orig/debian/rules.d/0-common-vars.mk +++ linux-3.5.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,232 @@ +# +# The source package name will be the first token from $(DEBIAN)/changelog +# +src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog) + +# Get some version info +series := oneiric +release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog) +revisions := $(shell sed -n 's/^$(src_pkg_name)\ .*($(release)-\(.*\)).*$$/\1/p' $(DEBIAN)/changelog | tac) +revision ?= $(word $(words $(revisions)),$(revisions)) +prev_revisions := $(filter-out $(revision),0.0 $(revisions)) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) + +family=ubuntu + +# This is an internally used mechanism for the daily kernel builds. It +# creates packages whose ABI is suffixed with a minimal representation of +# the current git HEAD sha. If .git/HEAD is not present, then it uses the +# uuidgen program, +# +# AUTOBUILD can also be used by anyone wanting to build a custom kernel +# image, or rebuild the entire set of Ubuntu packages using custom patches +# or configs. +AUTOBUILD= + +# +# This is a way to support some external variables. A good example is +# a local setup for ccache and distcc See LOCAL_ENV_CC and +# LOCAL_ENV_DISTCC_HOSTS in the definition of kmake. +# For example: +# LOCAL_ENV_CC="ccache distcc" +# LOCAL_ENV_DISTCC_HOSTS="localhost 10.0.2.5 10.0.2.221" +# +-include $(CURDIR)/../.$(series)-env + +ifneq ($(AUTOBUILD),) +skipabi = true +skipmodule = true +skipdbg = true +gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else uuidgen; fi) +gitverpre=$(shell echo $(gitver) | cut -b -3) +gitverpost=$(shell echo $(gitver) | cut -b 38-40) +abi_suffix = -$(gitverpre)$(gitverpost) +endif + +ifneq ($(NOKERNLOG),) +ubuntu_log_opts += --no-kern-log +endif +ifneq ($(PRINTSHAS),) +ubuntu_log_opts += --print-shas +endif + +# Get the kernels own extra version to be added to the release signature. +raw_kernelversion=$(shell make kernelversion) + +# +# full_build -- are we doing a full buildd style build +# +ifeq ($(wildcard /CurrentlyBuilding),) +full_build?=false +else +full_build?=true +endif + +# +# The debug packages are ginormous, so you probably want to skip +# building them (as a developer). +# +ifeq ($(full_build),false) +skipdbg=true +endif + +abinum := $(shell echo $(revision) | sed -e 's/\..*//')$(abi_suffix) +prev_abinum := $(shell echo $(prev_revision) | sed -e 's/\..*//')$(abi_suffix) +abi_release := $(release)-$(abinum) + +uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//') +ifneq ($(full_build),false) + uploadnum := $(uploadnum)-Ubuntu +endif + +# XXX: linux-libc-dev got bumped to -803.N inadvertantly by a ti-omap4 upload +# shift our version higher for this package only. Ensure this only +# occurs for the v2.6.35 kernel so that we do not propogate this into +# any other series. +raw_uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//') +libc_dev_version := +ifeq ($(DEBIAN),debian.master) +ifeq ($(release),2.6.35) +libc_dev_version := -v$(release)-$(shell expr "$(abinum)" + 1000).$(raw_uploadnum) +endif +endif + +DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) + +# +# Detect invocations of the form 'fakeroot debian/rules binary arch=armel' +# within an x86'en schroot. This only gets you part of the way since the +# packaging phase fails, but you can at least compile the kernel quickly. +# +arch := $(DEB_HOST_ARCH) +ifneq ($(arch),$(DEB_HOST_ARCH)) + CROSS_COMPILE ?= $(shell dpkg-architecture -a$(arch) -qDEB_HOST_GNU_TYPE -f 2>/dev/null)- +endif + +# +# Detect invocations of the form 'dpkg-buildpackage -B -aarmel' within +# an x86'en schroot. This is the only way to build all of the packages +# (except for tools). +# +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)- +endif + +abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(revision)/$(arch) +prev_abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(prev_revision)/$(arch) +commonconfdir := $(CURDIR)/$(DEBIAN)/config +archconfdir := $(CURDIR)/$(DEBIAN)/config/$(arch) +sharedconfdir := $(CURDIR)/debian.master/config +builddir := $(CURDIR)/debian/build +stampdir := $(CURDIR)/debian/stamps + +# +# The binary package name always starts with linux-image-$KVER-$ABI.$UPLOAD_NUM. There +# are places that you'll find linux-image hard coded, but I guess thats OK since the +# assumption that the binary package always starts with linux-image will never change. +# +bin_pkg_name=linux-image-$(abi_release) +extra_pkg_name=linux-image-extra-$(abi_release) +hdrs_pkg_name=linux-headers-$(abi_release) +# +# The generation of content in the doc package depends on both 'AUTOBUILD=' and +# 'do_doc_package_content=true'. There are usually build errors during the development +# cycle, so its OK to leave 'do_doc_package_content=false' until those build +# failures get sorted out. Finally, the doc package doesn't really need to be built +# for developer testing (its kind of slow), so only do it if on a buildd. +do_doc_package=true +do_doc_package_content=true +ifeq ($(full_build),false) +do_doc_package_content=false +endif +doc_pkg_name=$(src_pkg_name)-doc + +# +# Similarly with the linux-source package, you need not build it as a developer. Its +# somewhat I/O intensive and utterly useless. +# +do_source_package=true +do_source_package_content=true +ifeq ($(full_build),false) +do_source_package_content=false +endif + +# linux-libc-dev may not be needed, default to building it. +do_libc_dev_package=true + +# common headers normally is built as an indep package, but may be arch +do_common_headers_indep=true + +# add a 'full source' mode +do_full_source=false + +# build tools +ifneq ($(wildcard $(CURDIR)/tools),) + ifeq ($(do_tools),) + ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + do_tools=false + endif + endif + do_tools?=true +else + do_tools?=false +endif +tools_pkg_name=$(src_pkg_name)-tools-$(abi_release) +tools_common_pkg_name=$(src_pkg_name)-tools-common + +# The general flavour specific image package. +do_flavour_image_package=true + +# The general flavour specific header package. +do_flavour_header_package=true + +# Support parallel= in DEB_BUILD_OPTIONS (see #209008) +# +# These 2 environment variables set the -j value of the kernel build. For example, +# CONCURRENCY_LEVEL=16 fakeroot $(DEBIAN)/rules binary-debs +# or +# DEB_BUILD_OPTIONS=parallel=16 fakeroot $(DEBIAN)/rules binary-debs +# +# The default is to use the number of CPUs. +# +COMMA=, +DEB_BUILD_OPTIONS_PARA = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +ifneq (,$(DEB_BUILD_OPTIONS_PARA)) + CONCURRENCY_LEVEL := $(DEB_BUILD_OPTIONS_PARA) +endif + +ifeq ($(CONCURRENCY_LEVEL),) + # Check the environment + CONCURRENCY_LEVEL := $(shell echo $$CONCURRENCY_LEVEL) + # No? Then build with the number of CPUs on the host. + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := $(shell expr `getconf _NPROCESSORS_ONLN` \* 1) + endif + # Oh hell, give 'em one + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := 1 + endif +endif + +conc_level = -j$(CONCURRENCY_LEVEL) + +# target_flavour is filled in for each step +kmake = make ARCH=$(build_arch) \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + KERNELVERSION=$(abi_release)-$(target_flavour) \ + CONFIG_DEBUG_SECTION_MISMATCH=y \ + KBUILD_BUILD_VERSION="$(uploadnum)" \ + LOCALVERSION= localver-extra= +ifneq ($(LOCAL_ENV_CC),) +kmake += CC=$(LOCAL_ENV_CC) DISTCC_HOSTS=$(LOCAL_ENV_DISTCC_HOSTS) +endif + +# Locking is required in parallel builds to prevent loss of contents +# of the debian/files. +lockme_file = $(CURDIR)/debian/.LOCK +lockme_cmd = flock -w 60 +lockme = $(lockme_cmd) $(lockme_file) --- linux-3.5.0.orig/debian/rules.d/4-checks.mk +++ linux-3.5.0/debian/rules.d/4-checks.mk @@ -0,0 +1,27 @@ +# Check ABI for package against last release (if not same abinum) +abi-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \ + $(builddir)/build-$*/Module.symvers | sort > $(abidir)/$* + @perl -f $(DROOT)/scripts/abi-check "$*" "$(prev_abinum)" "$(abinum)" \ + "$(prev_abidir)" "$(abidir)" "$(skipabi)" + +# Check the module list against the last release (always) +module-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + find $(builddir)/build-$*/ -name \*.ko | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $(abidir)/$*.modules + @perl -f $(DROOT)/scripts/module-check "$*" \ + "$(prev_abidir)" "$(abidir)" $(skipmodule) + +checks-%: module-check-% abi-check-% + @echo Debug: $@ + +# Check the config against the known options list. +config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% + @echo Debug: $@ + @perl -f $(DROOT)/scripts/config-check \ + $(builddir)/build-$*/.config "$(arch)" "$*" "$(sharedconfdir)" "$(skipconfig)" + --- linux-3.5.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-3.5.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,515 @@ +# We don't want make removing intermediary stamps +.SECONDARY : + +# Prepare the out-of-tree build directory +ifeq ($(do_full_source),true) +build_cd = cd $(builddir)/build-$*; # +build_O = +else +build_cd = +build_O = O=$(builddir)/build-$* +endif + +$(stampdir)/stamp-prepare-%: config-prepare-check-% + @echo Debug: $@ + @touch $@ +$(stampdir)/stamp-prepare-tree-%: target_flavour = $* +$(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.% + @echo Debug: $@ + install -d $(builddir)/build-$* + touch $(builddir)/build-$*/ubuntu-build + [ "$(do_full_source)" != 'true' ] && true || \ + rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$* + cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config + find $(builddir)/build-$* -name "*.ko" | xargs rm -f + $(build_cd) $(kmake) $(build_O) -j1 silentoldconfig prepare scripts + touch $@ + +# Used by developers as a shortcut to prepare a tree for compilation. +prepare-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ +# Used by developers to allow efficient pre-building without fakeroot. +build-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + +# Do the actual build, including image and modules +$(stampdir)/stamp-build-%: target_flavour = $* +$(stampdir)/stamp-build-%: dtb_target = $(notdir $(dtb_file_$*)) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ + $(build_cd) $(kmake) $(build_O) $(conc_level) $(build_image) modules $(dtb_target) + if [ "$(build_arch)" = "x86_64" ] || [ "$(build_arch)" = "i386" ] ; then \ + $(build_cd) readelf -s `find . -name setup.elf` | grep video_card; \ + fi + @touch $@ + +# Install the finished build +install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$* +install-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$* +install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$* +install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +install-%: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +install-%: basepkg = $(hdrs_pkg_name) +install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$* +install-%: target_flavour = $* +install-%: dtb_file=$(dtb_file_$*) +install-%: dtb_target=$(notdir $(dtb_file_$*)) +install-%: checks-% + @echo Debug: $@ + dh_testdir + dh_testroot + dh_clean -k -p$(bin_pkg_name)-$* + dh_clean -k -p$(hdrs_pkg_name)-$* + dh_clean -k -p$(dbg_pkg_name)-$* + + # The main image + # compress_file logic required because not all architectures + # generate a zImage automatically out of the box +ifeq ($(compress_file),) + install -m600 -D $(builddir)/build-$*/$(kernel_file) \ + $(pkgdir)/boot/$(install_file)-$(abi_release)-$* +else + install -d $(pkgdir)/boot + gzip -c9v $(builddir)/build-$*/$(kernel_file) > \ + $(pkgdir)/boot/$(install_file)-$(abi_release)-$* + chmod 600 $(pkgdir)/boot/$(install_file)-$(abi_release)-$* +endif + +ifeq ($(arch),amd64) +ifeq ($(uefi_signed),true) + install -d $(signed)/$(release)-$(revision) + # Check to see if this supports handoff, if not do not sign it. + # Check the identification area magic and version >= 0x020b + handoff=`dd if="$(pkgdir)/boot/$(install_file)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | awk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \ + if [ "$$handoff" = "GOOD" ]; then \ + cp -p $(pkgdir)/boot/$(install_file)-$(abi_release)-$* \ + $(signed)/$(release)-$(revision)/$(install_file)-$(abi_release)-$*.efi; \ + fi +endif +endif + + install -m644 $(builddir)/build-$*/.config \ + $(pkgdir)/boot/config-$(abi_release)-$* + install -m644 $(abidir)/$* \ + $(pkgdir)/boot/abi-$(abi_release)-$* + install -m600 $(builddir)/build-$*/System.map \ + $(pkgdir)/boot/System.map-$(abi_release)-$* + if [ "$(dtb_target)" ]; then \ + install -d $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + install -m644 $(builddir)/build-$*/$(dtb_file) \ + $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree/$(dtb_target); \ + fi +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + + $(build_cd) $(kmake) $(build_O) $(conc_level) modules_install \ + INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \ + INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$* + + # + # Remove all modules not in the inclusion list. + # + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + mkdir -p $(pkgdir_ex)/lib/modules/$(abi_release)-$*; \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel; \ + $(SHELL) $(DROOT)/scripts/module-inclusion --master \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(DEBIAN)/control.d/$(target_flavour).inclusion-list 2>&1 | \ + tee $(target_flavour).inclusion-list.log; \ + /sbin/depmod -b $(pkgdir) -ea -F $(pkgdir)/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$* 2>&1 |tee $(target_flavour).depmod.log; \ + fi + +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source + + # Some initramfs-tools specific modules + install -d $(pkgdir)/lib/modules/$(abi_release)-$*/initrd + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko ]; then\ + ln -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko \ + $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \ + fi + + # Now the image scripts + install -d $(pkgdir)/DEBIAN + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(install_file)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \ + chmod 755 $(pkgdir)/DEBIAN/$$script; \ + done + # Install the postinit/postrm scripts in the extras package. + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + install -d $(pkgdir_ex)/DEBIAN; \ + for script in postinst postrm ; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(install_file)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + debian/control-scripts/$$script > $(pkgdir_ex)/DEBIAN/$$script; \ + chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \ + done; \ + fi + + # Install the full changelog. +ifeq ($(do_doc_package),true) + install -d $(bindoc) + cat $(DEBIAN)/changelog $(DEBIAN)/changelog.historical | \ + gzip -9 >$(bindoc)/changelog.Debian.old.gz + chmod 644 $(bindoc)/changelog.Debian.old.gz +endif + +ifneq ($(skipsub),true) + for sub in $($(*)_sub); do \ + if ! (TO=$$sub FROM=$* ABI_RELEASE=$(abi_release) $(SHELL) \ + $(DROOT)/scripts/sub-flavour); then exit 1; fi; \ + /sbin/depmod -b debian/$(bin_pkg_name)-$$sub \ + -ea -F debian/$(bin_pkg_name)-$$sub/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$*; \ + install -d debian/$(bin_pkg_name)-$$sub/DEBIAN; \ + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' \ + -e 's/=K/$(install_file)/g' \ + -e 's/=L/$(loader)/g' \ + -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > \ + debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + chmod 755 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + done; \ + done +endif + +ifneq ($(skipdbg),true) + # Debug image is simple + install -m644 -D $(builddir)/build-$*/vmlinux \ + $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$* + $(build_cd) $(kmake) $(build_O) modules_install \ + INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug + # Add .gnu_debuglink sections to each stripped .ko + # pointing to unstripped verson + find $(pkgdir) -name '*.ko' | sed 's|$(pkgdir)||'| while read module ; do \ + if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \ + $(CROSS_COMPILE)objcopy \ + --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \ + $(pkgdir)/$$module; \ + fi; \ + done + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/source + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/modules.* + rm -fr $(dbgpkgdir)/usr/lib/debug/lib/firmware +endif + + # The flavour specific headers image + # TODO: Would be nice if we didn't have to dupe the original builddir + install -d -m755 $(hdrdir) + cat $(builddir)/build-$*/.config | \ + sed -e 's/.*CONFIG_DEBUG_INFO=.*/# CONFIG_DEBUG_INFO is not set/g' > \ + $(hdrdir)/.config + chmod 644 $(hdrdir)/.config + $(kmake) O=$(hdrdir) -j1 silentoldconfig prepare scripts + # We'll symlink this stuff + rm -f $(hdrdir)/Makefile + rm -rf $(hdrdir)/include2 $(hdrdir)/source + # Copy over the compilation version. + cp "$(builddir)/build-$*/include/generated/compile.h" \ + "$(hdrdir)/include/generated/compile.h" + # powerpc seems to need some .o files for external module linking. Add them in. +ifeq ($(arch),powerpc) + mkdir -p $(hdrdir)/arch/powerpc/lib + cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib +endif + # Script to symlink everything up + $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(basepkg)" "$*" + # The build symlink + install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$* + ln -s /usr/src/$(basepkg)-$* \ + debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build + # And finally the symvers + install -m644 $(builddir)/build-$*/Module.symvers \ + $(hdrdir)/Module.symvers + + # Now the header scripts + install -d $(CURDIR)/debian/$(basepkg)-$*/DEBIAN + for script in postinst; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(install_file)/g' \ + $(DROOT)/control-scripts/headers-$$script > \ + $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + done + + # At the end of the package prep, call the tests + DPKG_ARCH="$(arch)" KERN_ARCH="$(build_arch)" FLAVOUR="$*" \ + VERSION="$(abi_release)" REVISION="$(revision)" \ + PREV_REVISION="$(prev_revision)" ABI_NUM="$(abinum)" \ + PREV_ABI_NUM="$(prev_abinum)" BUILD_DIR="$(builddir)/build-$*" \ + INSTALL_DIR="$(pkgdir)" SOURCE_DIR="$(CURDIR)" \ + run-parts -v $(DROOT)/tests + + # + # Remove files which are generated at installation by postinst, + # except for modules.order and modules.builtin + # + # NOTE: need to keep this list in sync with postrm + # + mkdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.order \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_ + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin ] ; then \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_; \ + fi + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.* + mv $(pkgdir)/lib/modules/$(abi_release)-$*/_/* \ + $(pkgdir)/lib/modules/$(abi_release)-$* + rmdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + +headers_tmp := $(CURDIR)/debian/tmp-headers +headers_dir := $(CURDIR)/debian/linux-libc-dev + +hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) \ + KERNELVERSION=$(abi_release) INSTALL_HDR_PATH=$(headers_tmp)/install \ + SHELL="$(SHELL)" ARCH=$(header_arch) + +install-arch-headers: + @echo Debug: $@ + dh_testdir + dh_testroot + dh_clean -k -plinux-libc-dev + + rm -rf $(headers_tmp) + install -d $(headers_tmp) $(headers_dir)/usr/include/ + + $(hmake) $(defconfig) + mv $(headers_tmp)/.config $(headers_tmp)/.config.old + sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \ + -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \ + $(headers_tmp)/.config.old > $(headers_tmp)/.config + $(hmake) silentoldconfig + $(hmake) $(conc_level) headers_install + + ( cd $(headers_tmp)/install/include/ && \ + find . -name '.' -o -name '.*' -prune -o -print | \ + cpio -pvd --preserve-modification-time \ + $(headers_dir)/usr/include/ ) + mkdir $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH) + mv $(headers_dir)/usr/include/asm $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)/ + + rm -rf $(headers_tmp) + +binary-arch-headers: install-arch-headers + @echo Debug: $@ + dh_testdir + dh_testroot +ifeq ($(do_libc_dev_package),true) +ifneq ($(DEBIAN),debian.master) + echo "non-master branch building linux-libc-dev, aborting" + exit 1 +endif + dh_installchangelogs -plinux-libc-dev + dh_installdocs -plinux-libc-dev + dh_compress -plinux-libc-dev + dh_fixperms -plinux-libc-dev + dh_installdeb -plinux-libc-dev + $(lockme) dh_gencontrol -plinux-libc-dev -- $(libc_dev_version) + dh_md5sums -plinux-libc-dev + dh_builddeb -plinux-libc-dev +endif + +binary-%: pkgimg = $(bin_pkg_name)-$* +binary-%: pkgimg_ex = $(extra_pkg_name)-$* +binary-%: pkghdr = $(hdrs_pkg_name)-$* +binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym +binary-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +binary-%: target_flavour = $* +binary-%: install-% + @echo Debug: $@ + dh_testdir + dh_testroot + + dh_installchangelogs -p$(pkgimg) + dh_installdocs -p$(pkgimg) + dh_compress -p$(pkgimg) + dh_fixperms -p$(pkgimg) -X/boot/ + dh_installdeb -p$(pkgimg) + dh_shlibdeps -p$(pkgimg) + $(lockme) dh_gencontrol -p$(pkgimg) + dh_md5sums -p$(pkgimg) + dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9 + + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + dh_installchangelogs -p$(pkgimg_ex); \ + dh_installdocs -p$(pkgimg_ex); \ + dh_compress -p$(pkgimg_ex); \ + dh_fixperms -p$(pkgimg_ex) -X/boot/; \ + dh_installdeb -p$(pkgimg_ex); \ + dh_shlibdeps -p$(pkgimg_ex); \ + $(lockme) dh_gencontrol -p$(pkgimg_ex); \ + dh_md5sums -p$(pkgimg_ex); \ + dh_builddeb -p$(pkgimg_ex) -- -Zbzip2 -z9; \ + fi + + dh_installchangelogs -p$(pkghdr) + dh_installdocs -p$(pkghdr) + dh_compress -p$(pkghdr) + dh_fixperms -p$(pkghdr) + dh_shlibdeps -p$(pkghdr) + dh_installdeb -p$(pkghdr) + $(lockme) dh_gencontrol -p$(pkghdr) + dh_md5sums -p$(pkghdr) + dh_builddeb -p$(pkghdr) + +ifneq ($(skipsub),true) + @set -e; for sub in $($(*)_sub); do \ + pkg=$(bin_pkg_name)-$$sub; \ + dh_installchangelogs -p$$pkg; \ + dh_installdocs -p$$pkg; \ + dh_compress -p$$pkg; \ + dh_fixperms -p$$pkg -X/boot/; \ + dh_shlibdeps -p$$pkg; \ + dh_installdeb -p$$pkg; \ + $(lockme) dh_gencontrol -p$$pkg; \ + dh_md5sums -p$$pkg; \ + dh_builddeb -p$$pkg; \ + done +endif + +ifneq ($(skipdbg),true) + dh_installchangelogs -p$(dbgpkg) + dh_installdocs -p$(dbgpkg) + dh_compress -p$(dbgpkg) + dh_fixperms -p$(dbgpkg) + dh_installdeb -p$(dbgpkg) + $(lockme) dh_gencontrol -p$(dbgpkg) + dh_md5sums -p$(dbgpkg) + dh_builddeb -p$(dbgpkg) + + # Hokay...here's where we do a little twiddling... + # Renaming the debug package prevents it from getting into + # the primary archive, and therefore prevents this very large + # package from being mirrored. It is instead, through some + # archive admin hackery, copied to http://ddebs.ubuntu.com. + # + mv ../$(dbgpkg)_$(release)-$(revision)_$(arch).deb \ + ../$(dbgpkg)_$(release)-$(revision)_$(arch).ddeb + set -e; \ + ( \ + $(lockme_cmd) 9 || exit 1; \ + if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \ + sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \ + else \ + grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \ + mv debian/files.new debian/files; \ + fi; \ + ) 9>$(lockme_file) + # Now, the package wont get into the archive, but it will get put + # into the debug system. +endif +ifneq ($(full_build),false) + # Clean out this flavours build directory. + rm -rf $(builddir)/build-$* + # Clean out the debugging package source directory. + rm -rf $(dbgpkgdir) +endif + +# +# per-architecture packages +# +builddirpa = $(builddir)/tools-perarch + +$(stampdir)/stamp-prepare-perarch: + @echo Debug: $@ +ifeq ($(do_tools),true) + rm -rf $(builddirpa) + install -d $(builddirpa) + for i in *; do ln -s $(CURDIR)/$$i $(builddirpa); done + rm $(builddirpa)/tools + rsync -a tools/ $(builddirpa)/tools/ +endif + touch $@ + +$(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) + cd $(builddirpa)/tools/perf && \ + make HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE); \ + cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE); \ + cd $(builddirpa)/tools/hv && make CROSS_COMPILE=$(CROSS_COMPILE) CFLAGS=-I../../include; \ + fi +endif + @touch $@ + +install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name) +install-perarch: $(stampdir)/stamp-build-perarch + @echo Debug: $@ + # Add the tools. +ifeq ($(do_tools),true) + install -d $(toolspkgdir)/usr/bin + install -s -m755 $(builddirpa)/tools/perf/perf \ + $(toolspkgdir)/usr/bin/perf_$(abi_release) + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -s -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \ + $(toolspkgdir)/usr/bin/x86_energy_perf_policy_$(abi_release); \ + install -s -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \ + $(toolspkgdir)/usr/bin/turbostat_$(abi_release); \ + install -d $(toolspkgdir)/usr/sbin; \ + install -s -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \ + $(toolspkgdir)/usr/sbin/hv_kvp_daemon_$(abi_release); \ + fi +endif + +binary-perarch: toolspkg = $(tools_pkg_name) +binary-perarch: install-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) + dh_installchangelogs -p$(toolspkg) + dh_installdocs -p$(toolspkg) + dh_compress -p$(toolspkg) + dh_fixperms -p$(toolspkg) + dh_shlibdeps -p$(toolspkg) + dh_installdeb -p$(toolspkg) + $(lockme) dh_gencontrol -p$(toolspkg) + dh_md5sums -p$(toolspkg) + dh_builddeb -p$(toolspkg) +endif + +binary-debs: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +binary-debs: signedv = $(CURDIR)/debian/$(bin_pkg_name)-signed/$(release)-$(revision) +binary-debs: signed_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz +binary-debs: binary-perarch $(addprefix binary-,$(flavours)) + @echo Debug: $@ +ifeq ($(arch),amd64) +ifeq ($(uefi_signed),true) + echo $(release)-$(revision) > $(signedv)/version + cd $(signedv) && ls *.efi >flavours + cd $(signed) && tar czvf ../../../$(signed_tar) . + dpkg-distaddfile $(signed_tar) raw-uefi - +endif +endif + +build-arch-deps-$(do_flavour_image_package) += $(addprefix $(stampdir)/stamp-build-,$(flavours)) +build-arch: $(build-arch-deps-true) + @echo Debug: $@ + +ifeq ($(AUTOBUILD),) +binary-arch-deps-$(do_flavour_image_package) += binary-udebs +else +binary-arch-deps-$(do_flavour_image_package) = binary-debs +endif +binary-arch-deps-$(do_libc_dev_package) += binary-arch-headers +ifneq ($(do_common_headers_indep),true) +binary-arch-deps-$(do_flavour_header_package) += binary-headers +endif +binary-arch: $(binary-arch-deps-true) + @echo Debug: $@ + --- linux-3.5.0.orig/debian/rules.d/5-udebs.mk +++ linux-3.5.0/debian/rules.d/5-udebs.mk @@ -0,0 +1,44 @@ +# Do udebs if not disabled in the arch-specific makefile +binary-udebs: binary-debs + @echo Debug: $@ +ifeq ($(disable_d_i),) + @$(MAKE) --no-print-directory -f $(DROOT)/rules DEBIAN=$(DEBIAN) \ + do-binary-udebs +endif + +do-binary-udebs: debian/control + @echo Debug: $@ + dh_testdir + dh_testroot + + # unpack the kernels into a temporary directory + mkdir -p debian/d-i-${arch} + + imagelist=$$(cat $(builddir)/kernel-versions | grep ^${arch} | awk '{print $$4}') && \ + for i in $$imagelist; do \ + dpkg -x $$(ls ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb) \ + debian/d-i-${arch}; \ + if [ -f ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb ] ; then \ + dpkg -x ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb \ + debian/d-i-${arch}; \ + fi; \ + /sbin/depmod -b debian/d-i-${arch} $$i; \ + done + + # kernel-wedge will error if no modules unless this is touched + touch $(CURDIR)/debian/build/no-modules + + touch ignore-dups + export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ + cd $(builddir) && \ + kernel-wedge install-files && \ + kernel-wedge check + + # Build just the udebs + dilist=$$(dh_listpackages -s | grep "\-di$$") && \ + [ -z "$dilist" ] || \ + for i in $$dilist; do \ + dh_fixperms -p$$i; \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done --- linux-3.5.0.orig/debian/rules.d/1-maintainer.mk +++ linux-3.5.0/debian/rules.d/1-maintainer.mk @@ -0,0 +1,121 @@ +# The following targets are for the maintainer only! do not run if you don't +# know what they do. + +.PHONY: printenv updateconfigs printchanges insertchanges startnewrelease diffupstream help updateportsconfigs editportsconfigs + +help: + @echo "These are the targets in addition to the normal $(DEBIAN) ones:" + @echo + @echo " printenv : Print some variables used in the build" + @echo + @echo " updateconfigs : Update core arch configs" + @echo + @echo " editconfigs : Update core arch configs interractively" + @echo " genconfigs : Generate core arch configs in CONFIGS/*" + @echo + @echo " updateportsconfigs : Update ports arch configs" + @echo + @echo " editportsconfigs : Update ports arch configs interactivly" + @echo " genportconfigs : Generate ports arch configs in CONFIGS/*" + @echo + @echo " printchanges : Print the current changelog entries (from git)" + @echo + @echo " insertchanges : Insert current changelog entries (from git)" + @echo + @echo " startnewrelease : Start a new changelog set" + @echo + @echo " diffupstream : Diff stock kernel code against upstream (git)" + @echo + @echo " help : If you are kernel hacking, you need the professional" + @echo " version of this" + @echo + @echo "Environment variables:" + @echo + @echo " NOKERNLOG : Do not add upstream kernel commits to changelog" + @echo " CONCURRENCY_LEVEL=X" + @echo " : Use -jX for kernel compile" + @echo " PRINTSHAS : Include SHAs for commits in changelog" + +printdebian: + @echo "$(DEBIAN)" + +updateconfigs defaultconfigs editconfigs genconfigs dumpconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ + rm -rf build + +updateportsconfigs defaultportsconfigs editportsconfigs genportsconfigs askconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ ports + rm -rf build + +printenv: + dh_testdir + @echo "src package name = $(src_pkg_name)" + @echo "release = $(release)" + @echo "revisions = $(revisions)" + @echo "revision = $(revision)" + @echo "uploadnum = $(uploadnum)" + @echo "prev_revisions = $(prev_revisions)" + @echo "prev_revision = $(prev_revision)" + @echo "abinum = $(abinum)" + @echo "gitver = $(gitver)" + @echo "flavours = $(flavours)" + @echo "skipabi = $(skipabi)" + @echo "skipmodule = $(skipmodule)" + @echo "skipdbg = $(skipdbg)" + @echo "ubuntu_log_opts = $(ubuntu_log_opts)" + @echo "CONCURRENCY_LEVEL = $(CONCURRENCY_LEVEL)" + @echo "bin package name = $(bin_pkg_name)" + @echo "hdr package name = $(hdrs_pkg_name)" + @echo "doc package name = $(doc_pkg_name)" + @echo "do_doc_package = $(do_doc_package)" + @echo "do_doc_package_content = $(do_doc_package_content)" + @echo "do_source_package = $(do_source_package)" + @echo "do_source_package_content = $(do_source_package_content)" + @echo "do_libc_dev_package = $(do_libc_dev_package)" + @echo "do_flavour_image_package = $(do_flavour_image_package)" + @echo "do_flavour_header_package = $(do_flavour_header_package)" + @echo "do_common_headers_indep = $(do_common_headers_indep)" + @echo "do_full_source = $(do_full_source)" + @echo "do_tools = $(do_tools)" + @echo "full_build = $(full_build)" + @echo "libc_dev_version = $(libc_dev_version)" + @echo "DEB_HOST_GNU_TYPE = $(DEB_HOST_GNU_TYPE)" + @echo "DEB_BUILD_GNU_TYPE = $(DEB_BUILD_GNU_TYPE)" + @echo "DEB_HOST_ARCH = $(DEB_HOST_ARCH)" + @echo "DEB_BUILD_ARCH = $(DEB_BUILD_ARCH)" + @echo "arch = $(arch)" + @echo "kmake = $(kmake)" + +prev_release="$(release)-$(prev_revision)" +printchanges: + @baseCommit=$$(git log --pretty=format:'%H %s' | \ + awk '/UBUNTU: '".*Ubuntu-$(prev_release)"'$$/ { print $$1; exit }'); \ + git log "$$baseCommit"..HEAD | \ + perl -w -f $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) + +insertchanges: + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + +diffupstream: + @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') + +startnewrelease: + dh_testdir + @nextminor=$(shell expr `echo $(revision) | awk -F. '{print $$2}'` + 1); \ + nextmajor=$(shell expr `echo $(revision) | awk -F. '{print $$1}'` + 1); \ + now="$(shell date -R)"; \ + echo "Creating new changelog set for $(release)-$$nextmajor.$$nextminor..."; \ + echo -e "$(src_pkg_name) ($(release)-$$nextmajor.$$nextminor) UNRELEASED; urgency=low\n" > $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Do not edit directly. Autogenerated at release." >> \ + $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the printchanges target to see the curent changes." \ + >> $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the insertchanges target to create the final log." \ + >> $(DEBIAN)/changelog.new; \ + echo -e "\n -- $$DEBFULLNAME <$$DEBEMAIL> $$now\n" >> \ + $(DEBIAN)/changelog.new ; \ + cat $(DEBIAN)/changelog >> $(DEBIAN)/changelog.new; \ + mv $(DEBIAN)/changelog.new $(DEBIAN)/changelog + --- linux-3.5.0.orig/debian/commit-templates/config-updates +++ linux-3.5.0/debian/commit-templates/config-updates @@ -0,0 +1,15 @@ +# +# This template is used for commit messages that don't need to +# show up in debian/changelog. Administrative stuff like config +# updates, ABI bumps, etc. Setting 'Ignore: yes' prevents +# 'debian/rules insertchanges' from inserting this commit meesage +# as a changelog entry. +# +# Please give a one-line description of the config change followed +# by a detailed explanation if necessary + +UBUNTU: [Config] XXXX + +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-3.5.0.orig/debian/commit-templates/sauce-patch +++ linux-3.5.0/debian/commit-templates/sauce-patch @@ -0,0 +1,40 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# +# SAUCE refers to the fact that this patch might not go upstream, but we need to +# carry it to successive releases. In most cases you DONOT want to use this +# template. +# +# An example of a SAUCE patch is the ACPI DSDT-in-initramfs patch which has been +# refused upstream, but still provides useful functionality to users with broken +# BIOSes. +# +#------------------------------------------------------------------------- +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: SAUCE: + + + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-3.5.0.orig/debian/commit-templates/missing-modules +++ linux-3.5.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-3.5.0.orig/debian/commit-templates/upstream-patch +++ linux-3.5.0/debian/commit-templates/upstream-patch @@ -0,0 +1,27 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: [Upstream] + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-3.5.0.orig/debian/commit-templates/bumpabi +++ linux-3.5.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-3.5.0.orig/debian/commit-templates/newrelease +++ linux-3.5.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-3.5.0.orig/debian/commit-templates/external-driver +++ linux-3.5.0/debian/commit-templates/external-driver @@ -0,0 +1,20 @@ +# Ubuntu external driver commit. +# +# NOTE: This gets reformatted for README.Ubuntu-External-Drivers and +# debian/changelog. +# +# This is only needed when a driver is added, updated or removed. It is +# not needed when patches or fixes are applied to the driver. If the +# driver is being removed, add the line: +# +# Removing: yes +# +# to the commit, and you can remove all other tags (except UBUNTU:). +# +UBUNTU: + +ExternalDriver: +Description: +Url: +Mask: +Version: --- linux-3.5.0.orig/debian/stamps/keep-dir +++ linux-3.5.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-3.5.0.orig/debian/tests/README +++ linux-3.5.0/debian/tests/README @@ -0,0 +1,21 @@ +Scripts placed in this directory get called one at a time by run-parts(8). +The scripts are expected to perform some sort of sanity checks on the +finished build. Scripts will be called once for each flavour. + +Some environment variables are exported to make life a little easier: + +DPKG_ARCH : The dpkg architecture (e.g. "amd64") +KERN_ARCH : The kernel architecture (e.g. "x86_64") +FLAVOUR : The specific flavour for this run (e.g. "generic") +VERSION : The full version of this build (e.g. 2.6.22-1) +REVISION : The exact revision of this build (e.g. 1.3) +PREV_REVISION : The revision prior to this one +ABI_NUM : The specific ABI number for this build (e.g. 2) +PREV_ABI_NUM : The previous ABI number. Can be the same as ABI_NUM. +BUILD_DIR : The directory where this build took place +INSTALL_DIR : The directory where the package is prepared +SOURCE_DIR : Where the main kernel source is + +Scripts are expected to have a zero exit status when no problems occur, +and non-zero when an error occurs that should stop the build. Scripts +should print whatever info they deem needed to deduce the problem. --- linux-3.5.0.orig/debian/tests/check-aliases +++ linux-3.5.0/debian/tests/check-aliases @@ -0,0 +1,24 @@ +#!/usr/bin/perl -w + +my %map; + +print "Checking for dupe aliases in $ENV{'FLAVOUR'}...\n"; + +$aliases = + "$ENV{'INSTALL_DIR'}/lib/modules/$ENV{'VERSION'}-$ENV{'FLAVOUR'}/modules.alias"; + +open(ALIASES, "< $aliases") or die "Could not open $aliases"; + +while () { + chomp; + my ($junk, $alias, $module) = split; + + if (defined($map{$alias})) { + printf("%s %20s / %-20s : %s \n", ("$map{$alias}" eq "$module") + ? "INT" : " ", $map{$alias}, $module, $alias); + } else { + $map{$alias} = $module; + } +} + +exit(0); --- linux-3.5.0.orig/ubuntu/Makefile +++ linux-3.5.0/ubuntu/Makefile @@ -0,0 +1,36 @@ +# +# Makefile for the Linux kernel ubuntu supplied third-party device drivers. +# + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +obj-$(CONFIG_DM_RAID45) += dm-raid4-5/ +## +## +## +obj-$(CONFIG_AUFS_FS) += aufs/ +## +## +## +obj-$(CONFIG_DRM_I915_HSW) += i915/ +## +## +## +obj-$(CONFIG_ALX) += alx/ +## +## +## +## +## +## + +# This is a stupid trick to get kbuild to create ubuntu/built-in.o +obj- += foo.o --- linux-3.5.0.orig/ubuntu/Kconfig +++ linux-3.5.0/ubuntu/Kconfig @@ -0,0 +1,33 @@ +menu "Ubuntu Supplied Third-Party Device Drivers" + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +source "ubuntu/dm-raid4-5/Kconfig" +## +## +## +source "ubuntu/aufs/Kconfig" +## +## +## +source "ubuntu/i915/Kconfig" +## +## +## +source "ubuntu/alx/Kconfig" +## +## +## +## +## +## + +endmenu --- linux-3.5.0.orig/ubuntu/aufs-update +++ linux-3.5.0/ubuntu/aufs-update @@ -0,0 +1,51 @@ +#!/bin/bash +# +# NOTE: See aufs/BOM.UPDATING for instructions on how to use this updater. +# + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +aufs="$1" + +# Get the current tip name +{ + read x url + read x o_log_sha1 + read x o_tip_sha1 +} +#undef pr_fmt +#define pr_fmt(fmt) AUFS_NAME " %s:%d:%s[%d]: " fmt, \ + __func__, __LINE__, current->comm, current->pid +#else +#include +#include +#endif /* __KERNEL__ */ + +#include + +#define AUFS_VERSION "3.5-20120827" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_BRANCH_MAX_127 +typedef int8_t aufs_bindex_t; +#define AUFS_BRANCH_MAX 127 +#else +typedef int16_t aufs_bindex_t; +#ifdef CONFIG_AUFS_BRANCH_MAX_511 +#define AUFS_BRANCH_MAX 511 +#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) +#define AUFS_BRANCH_MAX 1023 +#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) +#define AUFS_BRANCH_MAX 32767 +#endif +#endif + +#ifdef __KERNEL__ +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif +#endif /* __KERNEL__ */ + +/* ---------------------------------------------------------------------- */ + +#define AUFS_FSTYPE AUFS_NAME + +#define AUFS_ROOT_INO 2 +#define AUFS_FIRST_INO 11 + +#define AUFS_WH_PFX ".wh." +#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) +#define AUFS_WH_TMP_LEN 4 +/* a limit for rmdir/rename a dir */ +#define AUFS_MAX_NAMELEN (NAME_MAX \ + - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ + - 1 /* dot */\ + - AUFS_WH_TMP_LEN) /* hex */ +#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" +#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME +#define AUFS_XINO_TRUNC_INIT 64 /* blocks */ +#define AUFS_XINO_TRUNC_STEP 4 /* blocks */ +#define AUFS_DIRWH_DEF 3 +#define AUFS_RDCACHE_DEF 10 /* seconds */ +#define AUFS_RDCACHE_MAX 3600 /* seconds */ +#define AUFS_RDBLK_DEF 512 /* bytes */ +#define AUFS_RDHASH_DEF 32 +#define AUFS_WKQ_NAME AUFS_NAME "d" +#define AUFS_MFS_DEF_SEC 30 /* seconds */ +#define AUFS_MFS_MAX_SEC 3600 /* seconds */ +#define AUFS_PLINK_WARN 100 /* number of plinks */ + +/* pseudo-link maintenace under /proc */ +#define AUFS_PLINK_MAINT_NAME "plink_maint" +#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME +#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME + +#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ +#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME + +#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME +#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" +#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" + +/* doubly whiteouted */ +#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME +#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME +#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME + +/* branch permissions and attributes */ +#define AUFS_BRPERM_RW "rw" +#define AUFS_BRPERM_RO "ro" +#define AUFS_BRPERM_RR "rr" +#define AUFS_BRRATTR_WH "wh" +#define AUFS_BRWATTR_NLWH "nolwh" + +/* ---------------------------------------------------------------------- */ + +/* ioctl */ +enum { + /* readdir in userspace */ + AuCtl_RDU, + AuCtl_RDU_INO, + + /* pathconf wrapper */ + AuCtl_WBR_FD, + + /* busy inode */ + AuCtl_IBUSY +}; + +/* borrowed from linux/include/linux/kernel.h */ +#ifndef ALIGN +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#endif + +/* borrowed from linux/include/linux/compiler-gcc3.h */ +#ifndef __aligned +#define __aligned(x) __attribute__((aligned(x))) +#endif + +#ifdef __KERNEL__ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif +#endif + +struct au_rdu_cookie { + uint64_t h_pos; + int16_t bindex; + uint8_t flags; + uint8_t pad; + uint32_t generation; +} __aligned(8); + +struct au_rdu_ent { + uint64_t ino; + int16_t bindex; + uint8_t type; + uint8_t nlen; + uint8_t wh; + char name[0]; +} __aligned(8); + +static inline int au_rdu_len(int nlen) +{ + /* include the terminating NULL */ + return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, + sizeof(uint64_t)); +} + +union au_rdu_ent_ul { + struct au_rdu_ent __user *e; + uint64_t ul; +}; + +enum { + AufsCtlRduV_SZ, + AufsCtlRduV_End +}; + +struct aufs_rdu { + /* input */ + union { + uint64_t sz; /* AuCtl_RDU */ + uint64_t nent; /* AuCtl_RDU_INO */ + }; + union au_rdu_ent_ul ent; + uint16_t verify[AufsCtlRduV_End]; + + /* input/output */ + uint32_t blk; + + /* output */ + union au_rdu_ent_ul tail; + /* number of entries which were added in a single call */ + uint64_t rent; + uint8_t full; + uint8_t shwh; + + struct au_rdu_cookie cookie; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_wbr_fd { + uint32_t oflags; + int16_t brid; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_ibusy { + uint64_t ino, h_ino; + int16_t bindex; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +#define AuCtlType 'A' +#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) +#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) +#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ + struct aufs_wbr_fd) +#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) + +#endif /* __AUFS_TYPE_H__ */ --- linux-3.5.0.orig/ubuntu/include/linux/Kbuild +++ linux-3.5.0/ubuntu/include/linux/Kbuild @@ -0,0 +1 @@ +header-y += aufs_type.h --- linux-3.5.0.orig/ubuntu/i915/intel_opregion.c +++ linux-3.5.0/ubuntu/i915/intel_opregion.c @@ -0,0 +1,556 @@ +/* + * Copyright 2008 Intel Corporation + * Copyright 2008 Red Hat + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include +#include +#include "i915_drv.h" +#include "intel_drv.h" + +#define PCI_ASLE 0xe4 +#define PCI_ASLS 0xfc + +#define OPREGION_HEADER_OFFSET 0 +#define OPREGION_ACPI_OFFSET 0x100 +#define ACPI_CLID 0x01ac /* current lid state indicator */ +#define ACPI_CDCK 0x01b0 /* current docking state indicator */ +#define OPREGION_SWSCI_OFFSET 0x200 +#define OPREGION_ASLE_OFFSET 0x300 +#define OPREGION_VBT_OFFSET 0x400 + +#define OPREGION_SIGNATURE "IntelGraphicsMem" +#define MBOX_ACPI (1<<0) +#define MBOX_SWSCI (1<<1) +#define MBOX_ASLE (1<<2) + +struct opregion_header { + u8 signature[16]; + u32 size; + u32 opregion_ver; + u8 bios_ver[32]; + u8 vbios_ver[16]; + u8 driver_ver[16]; + u32 mboxes; + u8 reserved[164]; +} __attribute__((packed)); + +/* OpRegion mailbox #1: public ACPI methods */ +struct opregion_acpi { + u32 drdy; /* driver readiness */ + u32 csts; /* notification status */ + u32 cevt; /* current event */ + u8 rsvd1[20]; + u32 didl[8]; /* supported display devices ID list */ + u32 cpdl[8]; /* currently presented display list */ + u32 cadl[8]; /* currently active display list */ + u32 nadl[8]; /* next active devices list */ + u32 aslp; /* ASL sleep time-out */ + u32 tidx; /* toggle table index */ + u32 chpd; /* current hotplug enable indicator */ + u32 clid; /* current lid state*/ + u32 cdck; /* current docking state */ + u32 sxsw; /* Sx state resume */ + u32 evts; /* ASL supported events */ + u32 cnot; /* current OS notification */ + u32 nrdy; /* driver status */ + u8 rsvd2[60]; +} __attribute__((packed)); + +/* OpRegion mailbox #2: SWSCI */ +struct opregion_swsci { + u32 scic; /* SWSCI command|status|data */ + u32 parm; /* command parameters */ + u32 dslp; /* driver sleep time-out */ + u8 rsvd[244]; +} __attribute__((packed)); + +/* OpRegion mailbox #3: ASLE */ +struct opregion_asle { + u32 ardy; /* driver readiness */ + u32 aslc; /* ASLE interrupt command */ + u32 tche; /* technology enabled indicator */ + u32 alsi; /* current ALS illuminance reading */ + u32 bclp; /* backlight brightness to set */ + u32 pfit; /* panel fitting state */ + u32 cblv; /* current brightness level */ + u16 bclm[20]; /* backlight level duty cycle mapping table */ + u32 cpfm; /* current panel fitting mode */ + u32 epfm; /* enabled panel fitting modes */ + u8 plut[74]; /* panel LUT and identifier */ + u32 pfmb; /* PWM freq and min brightness */ + u8 rsvd[102]; +} __attribute__((packed)); + +/* ASLE irq request bits */ +#define ASLE_SET_ALS_ILLUM (1 << 0) +#define ASLE_SET_BACKLIGHT (1 << 1) +#define ASLE_SET_PFIT (1 << 2) +#define ASLE_SET_PWM_FREQ (1 << 3) +#define ASLE_REQ_MSK 0xf + +/* response bits of ASLE irq request */ +#define ASLE_ALS_ILLUM_FAILED (1<<10) +#define ASLE_BACKLIGHT_FAILED (1<<12) +#define ASLE_PFIT_FAILED (1<<14) +#define ASLE_PWM_FREQ_FAILED (1<<16) + +/* ASLE backlight brightness to set */ +#define ASLE_BCLP_VALID (1<<31) +#define ASLE_BCLP_MSK (~(1<<31)) + +/* ASLE panel fitting request */ +#define ASLE_PFIT_VALID (1<<31) +#define ASLE_PFIT_CENTER (1<<0) +#define ASLE_PFIT_STRETCH_TEXT (1<<1) +#define ASLE_PFIT_STRETCH_GFX (1<<2) + +/* PWM frequency and minimum brightness */ +#define ASLE_PFMB_BRIGHTNESS_MASK (0xff) +#define ASLE_PFMB_BRIGHTNESS_VALID (1<<8) +#define ASLE_PFMB_PWM_MASK (0x7ffffe00) +#define ASLE_PFMB_PWM_VALID (1<<31) + +#define ASLE_CBLV_VALID (1<<31) + +#define ACPI_OTHER_OUTPUT (0<<8) +#define ACPI_VGA_OUTPUT (1<<8) +#define ACPI_TV_OUTPUT (2<<8) +#define ACPI_DIGITAL_OUTPUT (3<<8) +#define ACPI_LVDS_OUTPUT (4<<8) + +#ifdef CONFIG_ACPI +static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 max; + + DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp); + + if (!(bclp & ASLE_BCLP_VALID)) + return ASLE_BACKLIGHT_FAILED; + + bclp &= ASLE_BCLP_MSK; + if (bclp > 255) + return ASLE_BACKLIGHT_FAILED; + + max = intel_panel_get_max_backlight(dev); + intel_panel_set_backlight(dev, bclp * max / 255); + iowrite32((bclp*0x64)/0xff | ASLE_CBLV_VALID, &asle->cblv); + + return 0; +} + +static u32 asle_set_als_illum(struct drm_device *dev, u32 alsi) +{ + /* alsi is the current ALS reading in lux. 0 indicates below sensor + range, 0xffff indicates above sensor range. 1-0xfffe are valid */ + return 0; +} + +static u32 asle_set_pwm_freq(struct drm_device *dev, u32 pfmb) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + if (pfmb & ASLE_PFMB_PWM_VALID) { + u32 blc_pwm_ctl = I915_READ(BLC_PWM_CTL); + u32 pwm = pfmb & ASLE_PFMB_PWM_MASK; + blc_pwm_ctl &= BACKLIGHT_DUTY_CYCLE_MASK; + pwm = pwm >> 9; + /* FIXME - what do we do with the PWM? */ + } + return 0; +} + +static u32 asle_set_pfit(struct drm_device *dev, u32 pfit) +{ + /* Panel fitting is currently controlled by the X code, so this is a + noop until modesetting support works fully */ + if (!(pfit & ASLE_PFIT_VALID)) + return ASLE_PFIT_FAILED; + return 0; +} + +void intel_opregion_asle_intr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 asle_stat = 0; + u32 asle_req; + + if (!asle) + return; + + asle_req = ioread32(&asle->aslc) & ASLE_REQ_MSK; + + if (!asle_req) { + DRM_DEBUG_DRIVER("non asle set request??\n"); + return; + } + + if (asle_req & ASLE_SET_ALS_ILLUM) + asle_stat |= asle_set_als_illum(dev, ioread32(&asle->alsi)); + + if (asle_req & ASLE_SET_BACKLIGHT) + asle_stat |= asle_set_backlight(dev, ioread32(&asle->bclp)); + + if (asle_req & ASLE_SET_PFIT) + asle_stat |= asle_set_pfit(dev, ioread32(&asle->pfit)); + + if (asle_req & ASLE_SET_PWM_FREQ) + asle_stat |= asle_set_pwm_freq(dev, ioread32(&asle->pfmb)); + + iowrite32(asle_stat, &asle->aslc); +} + +void intel_opregion_gse_intr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 asle_stat = 0; + u32 asle_req; + + if (!asle) + return; + + asle_req = ioread32(&asle->aslc) & ASLE_REQ_MSK; + + if (!asle_req) { + DRM_DEBUG_DRIVER("non asle set request??\n"); + return; + } + + if (asle_req & ASLE_SET_ALS_ILLUM) { + DRM_DEBUG_DRIVER("Illum is not supported\n"); + asle_stat |= ASLE_ALS_ILLUM_FAILED; + } + + if (asle_req & ASLE_SET_BACKLIGHT) + asle_stat |= asle_set_backlight(dev, ioread32(&asle->bclp)); + + if (asle_req & ASLE_SET_PFIT) { + DRM_DEBUG_DRIVER("Pfit is not supported\n"); + asle_stat |= ASLE_PFIT_FAILED; + } + + if (asle_req & ASLE_SET_PWM_FREQ) { + DRM_DEBUG_DRIVER("PWM freq is not supported\n"); + asle_stat |= ASLE_PWM_FREQ_FAILED; + } + + iowrite32(asle_stat, &asle->aslc); +} +#define ASLE_ALS_EN (1<<0) +#define ASLE_BLC_EN (1<<1) +#define ASLE_PFIT_EN (1<<2) +#define ASLE_PFMB_EN (1<<3) + +void intel_opregion_enable_asle(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + + if (asle) { + if (IS_MOBILE(dev)) + intel_enable_asle(dev); + + iowrite32(ASLE_ALS_EN | ASLE_BLC_EN | ASLE_PFIT_EN | + ASLE_PFMB_EN, + &asle->tche); + iowrite32(1, &asle->ardy); + } +} + +#define ACPI_EV_DISPLAY_SWITCH (1<<0) +#define ACPI_EV_LID (1<<1) +#define ACPI_EV_DOCK (1<<2) + +static struct intel_opregion *system_opregion; + +static int intel_opregion_video_event(struct notifier_block *nb, + unsigned long val, void *data) +{ + /* The only video events relevant to opregion are 0x80. These indicate + either a docking event, lid switch or display switch request. In + Linux, these are handled by the dock, button and video drivers. + */ + + struct opregion_acpi __iomem *acpi; + struct acpi_bus_event *event = data; + int ret = NOTIFY_OK; + + if (strcmp(event->device_class, ACPI_VIDEO_CLASS) != 0) + return NOTIFY_DONE; + + if (!system_opregion) + return NOTIFY_DONE; + + acpi = system_opregion->acpi; + + if (event->type == 0x80 && + (ioread32(&acpi->cevt) & 1) == 0) + ret = NOTIFY_BAD; + + iowrite32(0, &acpi->csts); + + return ret; +} + +static struct notifier_block intel_opregion_notifier = { + .notifier_call = intel_opregion_video_event, +}; + +/* + * Initialise the DIDL field in opregion. This passes a list of devices to + * the firmware. Values are defined by section B.4.2 of the ACPI specification + * (version 3) + */ + +static void intel_didl_outputs(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + struct drm_connector *connector; + acpi_handle handle; + struct acpi_device *acpi_dev, *acpi_cdev, *acpi_video_bus = NULL; + unsigned long long device_id; + acpi_status status; + u32 temp; + int i = 0; + + handle = DEVICE_ACPI_HANDLE(&dev->pdev->dev); + if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) + return; + + if (acpi_is_video_device(acpi_dev)) + acpi_video_bus = acpi_dev; + else { + list_for_each_entry(acpi_cdev, &acpi_dev->children, node) { + if (acpi_is_video_device(acpi_cdev)) { + acpi_video_bus = acpi_cdev; + break; + } + } + } + + if (!acpi_video_bus) { + pr_warn("No ACPI video bus found\n"); + return; + } + + list_for_each_entry(acpi_cdev, &acpi_video_bus->children, node) { + if (i >= 8) { + dev_printk(KERN_ERR, &dev->pdev->dev, + "More than 8 outputs detected\n"); + return; + } + status = + acpi_evaluate_integer(acpi_cdev->handle, "_ADR", + NULL, &device_id); + if (ACPI_SUCCESS(status)) { + if (!device_id) + goto blind_set; + iowrite32((u32)(device_id & 0x0f0f), + &opregion->acpi->didl[i]); + i++; + } + } + +end: + /* If fewer than 8 outputs, the list must be null terminated */ + if (i < 8) + iowrite32(0, &opregion->acpi->didl[i]); + return; + +blind_set: + i = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + int output_type = ACPI_OTHER_OUTPUT; + if (i >= 8) { + dev_printk(KERN_ERR, &dev->pdev->dev, + "More than 8 outputs detected\n"); + return; + } + switch (connector->connector_type) { + case DRM_MODE_CONNECTOR_VGA: + case DRM_MODE_CONNECTOR_DVIA: + output_type = ACPI_VGA_OUTPUT; + break; + case DRM_MODE_CONNECTOR_Composite: + case DRM_MODE_CONNECTOR_SVIDEO: + case DRM_MODE_CONNECTOR_Component: + case DRM_MODE_CONNECTOR_9PinDIN: + output_type = ACPI_TV_OUTPUT; + break; + case DRM_MODE_CONNECTOR_DVII: + case DRM_MODE_CONNECTOR_DVID: + case DRM_MODE_CONNECTOR_DisplayPort: + case DRM_MODE_CONNECTOR_HDMIA: + case DRM_MODE_CONNECTOR_HDMIB: + output_type = ACPI_DIGITAL_OUTPUT; + break; + case DRM_MODE_CONNECTOR_LVDS: + output_type = ACPI_LVDS_OUTPUT; + break; + } + temp = ioread32(&opregion->acpi->didl[i]); + iowrite32(temp | (1<<31) | output_type | i, + &opregion->acpi->didl[i]); + i++; + } + goto end; +} + +static void intel_setup_cadls(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + int i = 0; + u32 disp_id; + + /* Initialize the CADL field by duplicating the DIDL values. + * Technically, this is not always correct as display outputs may exist, + * but not active. This initialization is necessary for some Clevo + * laptops that check this field before processing the brightness and + * display switching hotkeys. Just like DIDL, CADL is NULL-terminated if + * there are less than eight devices. */ + do { + disp_id = ioread32(&opregion->acpi->didl[i]); + iowrite32(disp_id, &opregion->acpi->cadl[i]); + } while (++i < 8 && disp_id != 0); +} + +void intel_opregion_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + + if (!opregion->header) + return; + + if (opregion->acpi) { + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_didl_outputs(dev); + intel_setup_cadls(dev); + } + + /* Notify BIOS we are ready to handle ACPI video ext notifs. + * Right now, all the events are handled by the ACPI video module. + * We don't actually need to do anything with them. */ + iowrite32(0, &opregion->acpi->csts); + iowrite32(1, &opregion->acpi->drdy); + + system_opregion = opregion; + register_acpi_notifier(&intel_opregion_notifier); + } + + if (opregion->asle) + intel_opregion_enable_asle(dev); +} + +void intel_opregion_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + + if (!opregion->header) + return; + + if (opregion->acpi) { + iowrite32(0, &opregion->acpi->drdy); + + system_opregion = NULL; + unregister_acpi_notifier(&intel_opregion_notifier); + } + + /* just clear all opregion memory pointers now */ + iounmap(opregion->header); + opregion->header = NULL; + opregion->acpi = NULL; + opregion->swsci = NULL; + opregion->asle = NULL; + opregion->vbt = NULL; +} +#endif + +int intel_opregion_setup(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + void __iomem *base; + u32 asls, mboxes; + char buf[sizeof(OPREGION_SIGNATURE)]; + int err = 0; + + pci_read_config_dword(dev->pdev, PCI_ASLS, &asls); + DRM_DEBUG_DRIVER("graphic opregion physical addr: 0x%x\n", asls); + if (asls == 0) { + DRM_DEBUG_DRIVER("ACPI OpRegion not supported!\n"); + return -ENOTSUPP; + } + + base = acpi_os_ioremap(asls, OPREGION_SIZE); + if (!base) + return -ENOMEM; + + memcpy_fromio(buf, base, sizeof(buf)); + + if (memcmp(buf, OPREGION_SIGNATURE, 16)) { + DRM_DEBUG_DRIVER("opregion signature mismatch\n"); + err = -EINVAL; + goto err_out; + } + opregion->header = base; + opregion->vbt = base + OPREGION_VBT_OFFSET; + + opregion->lid_state = base + ACPI_CLID; + + mboxes = ioread32(&opregion->header->mboxes); + if (mboxes & MBOX_ACPI) { + DRM_DEBUG_DRIVER("Public ACPI methods supported\n"); + opregion->acpi = base + OPREGION_ACPI_OFFSET; + } + + if (mboxes & MBOX_SWSCI) { + DRM_DEBUG_DRIVER("SWSCI supported\n"); + opregion->swsci = base + OPREGION_SWSCI_OFFSET; + } + if (mboxes & MBOX_ASLE) { + DRM_DEBUG_DRIVER("ASLE supported\n"); + opregion->asle = base + OPREGION_ASLE_OFFSET; + } + + return 0; + +err_out: + iounmap(base); + return err; +} --- linux-3.5.0.orig/ubuntu/i915/i915_sysfs.c +++ linux-3.5.0/ubuntu/i915/i915_sysfs.c @@ -0,0 +1,403 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Ben Widawsky + * + */ + +#include +#include +#include +#include +#include "intel_drv.h" +#include "i915_drv.h" + +#ifdef CONFIG_PM +static u32 calc_residency(struct drm_device *dev, const u32 reg) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u64 raw_time; /* 32b value may overflow during fixed point math */ + + if (!intel_enable_rc6(dev)) + return 0; + + raw_time = I915_READ(reg) * 128ULL; + return DIV_ROUND_UP_ULL(raw_time, 100000); +} + +static ssize_t +show_rc6_mask(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + return snprintf(buf, PAGE_SIZE, "%x", intel_enable_rc6(dminor->dev)); +} + +static ssize_t +show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6); + return snprintf(buf, PAGE_SIZE, "%u", rc6_residency); +} + +static ssize_t +show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6p_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6p); + return snprintf(buf, PAGE_SIZE, "%u", rc6p_residency); +} + +static ssize_t +show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6pp_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6pp); + return snprintf(buf, PAGE_SIZE, "%u", rc6pp_residency); +} + +static DEVICE_ATTR(rc6_enable, S_IRUGO, show_rc6_mask, NULL); +static DEVICE_ATTR(rc6_residency_ms, S_IRUGO, show_rc6_ms, NULL); +static DEVICE_ATTR(rc6p_residency_ms, S_IRUGO, show_rc6p_ms, NULL); +static DEVICE_ATTR(rc6pp_residency_ms, S_IRUGO, show_rc6pp_ms, NULL); + +static struct attribute *rc6_attrs[] = { + &dev_attr_rc6_enable.attr, + &dev_attr_rc6_residency_ms.attr, + &dev_attr_rc6p_residency_ms.attr, + &dev_attr_rc6pp_residency_ms.attr, + NULL +}; + +static struct attribute_group rc6_attr_group = { + .name = power_group_name, + .attrs = rc6_attrs +}; +#endif + +static int l3_access_valid(struct drm_device *dev, loff_t offset) +{ + if (!HAS_L3_GPU_CACHE(dev)) + return -EPERM; + + if (offset % 4 != 0) + return -EINVAL; + + if (offset >= GEN7_L3LOG_SIZE) + return -ENXIO; + + return 0; +} + +static ssize_t +i915_l3_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + uint32_t misccpctl; + int i, ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + + for (i = offset; count >= 4 && i < GEN7_L3LOG_SIZE; i += 4, count -= 4) + *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + i); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + mutex_unlock(&drm_dev->struct_mutex); + + return i - offset; +} + +static ssize_t +i915_l3_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + u32 *temp = NULL; /* Just here to make handling failures easy */ + int ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + if (!dev_priv->l3_parity.remap_info) { + temp = kzalloc(GEN7_L3LOG_SIZE, GFP_KERNEL); + if (!temp) { + mutex_unlock(&drm_dev->struct_mutex); + return -ENOMEM; + } + } + + ret = i915_gpu_idle(drm_dev); + if (ret) { + kfree(temp); + mutex_unlock(&drm_dev->struct_mutex); + return ret; + } + + /* TODO: Ideally we really want a GPU reset here to make sure errors + * aren't propagated. Since I cannot find a stable way to reset the GPU + * at this point it is left as a TODO. + */ + if (temp) + dev_priv->l3_parity.remap_info = temp; + + memcpy(dev_priv->l3_parity.remap_info + (offset/4), + buf + (offset/4), + count); + + i915_gem_l3_remap(drm_dev); + + mutex_unlock(&drm_dev->struct_mutex); + + return count; +} + +static struct bin_attribute dpf_attrs = { + .attr = {.name = "l3_parity", .mode = (S_IRUSR | S_IWUSR)}, + .size = GEN7_L3LOG_SIZE, + .read = i915_l3_read, + .write = i915_l3_write, + .mmap = NULL +}; + +static ssize_t gt_cur_freq_mhz_show(struct device *kdev, + struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.cur_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_max_freq_mhz_store(struct device *kdev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap, hw_max, hw_min; + ssize_t ret; + + ret = kstrtou32(buf, 0, &val); + if (ret) + return ret; + + val /= GT_FREQUENCY_MULTIPLIER; + + mutex_lock(&dev_priv->rps.hw_lock); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + hw_max = (rp_state_cap & 0xff); + hw_min = ((rp_state_cap & 0xff0000) >> 16); + + if (val < hw_min || val > hw_max || val < dev_priv->rps.min_delay) { + mutex_unlock(&dev_priv->rps.hw_lock); + return -EINVAL; + } + + if (dev_priv->rps.cur_delay > val) + gen6_set_rps(dev_priv->dev, val); + + dev_priv->rps.max_delay = val; + + mutex_unlock(&dev_priv->rps.hw_lock); + + return count; +} + +static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_min_freq_mhz_store(struct device *kdev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap, hw_max, hw_min; + ssize_t ret; + + ret = kstrtou32(buf, 0, &val); + if (ret) + return ret; + + val /= GT_FREQUENCY_MULTIPLIER; + + mutex_lock(&dev_priv->rps.hw_lock); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + hw_max = (rp_state_cap & 0xff); + hw_min = ((rp_state_cap & 0xff0000) >> 16); + + if (val < hw_min || val > hw_max || val > dev_priv->rps.max_delay) { + mutex_unlock(&dev_priv->rps.hw_lock); + return -EINVAL; + } + + if (dev_priv->rps.cur_delay < val) + gen6_set_rps(dev_priv->dev, val); + + dev_priv->rps.min_delay = val; + + mutex_unlock(&dev_priv->rps.hw_lock); + + return count; + +} + +static DEVICE_ATTR(gt_cur_freq_mhz, S_IRUGO, gt_cur_freq_mhz_show, NULL); +static DEVICE_ATTR(gt_max_freq_mhz, S_IRUGO | S_IWUSR, gt_max_freq_mhz_show, gt_max_freq_mhz_store); +static DEVICE_ATTR(gt_min_freq_mhz, S_IRUGO | S_IWUSR, gt_min_freq_mhz_show, gt_min_freq_mhz_store); + + +static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf); +static DEVICE_ATTR(gt_RP0_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); +static DEVICE_ATTR(gt_RP1_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); +static DEVICE_ATTR(gt_RPn_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); + +/* For now we have a static number of RP states */ +static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap; + ssize_t ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + mutex_unlock(&dev->struct_mutex); + + if (attr == &dev_attr_gt_RP0_freq_mhz) { + val = ((rp_state_cap & 0x0000ff) >> 0) * GT_FREQUENCY_MULTIPLIER; + } else if (attr == &dev_attr_gt_RP1_freq_mhz) { + val = ((rp_state_cap & 0x00ff00) >> 8) * GT_FREQUENCY_MULTIPLIER; + } else if (attr == &dev_attr_gt_RPn_freq_mhz) { + val = ((rp_state_cap & 0xff0000) >> 16) * GT_FREQUENCY_MULTIPLIER; + } else { + BUG(); + } + return snprintf(buf, PAGE_SIZE, "%d", val); +} + +static const struct attribute *gen6_attrs[] = { + &dev_attr_gt_cur_freq_mhz.attr, + &dev_attr_gt_max_freq_mhz.attr, + &dev_attr_gt_min_freq_mhz.attr, + &dev_attr_gt_RP0_freq_mhz.attr, + &dev_attr_gt_RP1_freq_mhz.attr, + &dev_attr_gt_RPn_freq_mhz.attr, + NULL, +}; + +void i915_setup_sysfs(struct drm_device *dev) +{ + int ret; + +#ifdef CONFIG_PM + if (INTEL_INFO(dev)->gen >= 6) { + ret = sysfs_merge_group(&dev->primary->kdev.kobj, + &rc6_attr_group); + if (ret) + DRM_ERROR("RC6 residency sysfs setup failed\n"); + } +#endif + if (HAS_L3_GPU_CACHE(dev)) { + ret = device_create_bin_file(&dev->primary->kdev, &dpf_attrs); + if (ret) + DRM_ERROR("l3 parity sysfs setup failed\n"); + } + + if (INTEL_INFO(dev)->gen >= 6) { + ret = sysfs_create_files(&dev->primary->kdev.kobj, gen6_attrs); + if (ret) + DRM_ERROR("gen6 sysfs setup failed\n"); + } +} + +void i915_teardown_sysfs(struct drm_device *dev) +{ + sysfs_remove_files(&dev->primary->kdev.kobj, gen6_attrs); + device_remove_bin_file(&dev->primary->kdev, &dpf_attrs); +#ifdef CONFIG_PM + sysfs_unmerge_group(&dev->primary->kdev.kobj, &rc6_attr_group); +#endif +} --- linux-3.5.0.orig/ubuntu/i915/i915_debugfs.c +++ linux-3.5.0/ubuntu/i915/i915_debugfs.c @@ -0,0 +1,2142 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Keith Packard + * + */ + +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include "intel_ringbuffer.h" +#include +#include "i915_drv.h" + +#define DRM_I915_RING_DEBUG 1 + + +#if defined(CONFIG_DEBUG_FS) + +enum { + ACTIVE_LIST, + INACTIVE_LIST, + PINNED_LIST, +}; + +static const char *yesno(int v) +{ + return v ? "yes" : "no"; +} + +static int i915_capabilities(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + const struct intel_device_info *info = INTEL_INFO(dev); + + seq_printf(m, "gen: %d\n", info->gen); + seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(dev)); +#define DEV_INFO_FLAG(x) seq_printf(m, #x ": %s\n", yesno(info->x)) +#define DEV_INFO_SEP ; + DEV_INFO_FLAGS; +#undef DEV_INFO_FLAG +#undef DEV_INFO_SEP + + return 0; +} + +static const char *get_pin_flag(struct drm_i915_gem_object *obj) +{ + if (obj->user_pin_count > 0) + return "P"; + else if (obj->pin_count > 0) + return "p"; + else + return " "; +} + +static const char *get_tiling_flag(struct drm_i915_gem_object *obj) +{ + switch (obj->tiling_mode) { + default: + case I915_TILING_NONE: return " "; + case I915_TILING_X: return "X"; + case I915_TILING_Y: return "Y"; + } +} + +static const char *cache_level_str(int type) +{ + switch (type) { + case I915_CACHE_NONE: return " uncached"; + case I915_CACHE_LLC: return " snooped (LLC)"; + case I915_CACHE_LLC_MLC: return " snooped (LLC+MLC)"; + default: return ""; + } +} + +static void +describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) +{ + seq_printf(m, "%pK: %s%s %8zdKiB %04x %04x %d %d %d%s%s%s", + &obj->base, + get_pin_flag(obj), + get_tiling_flag(obj), + obj->base.size / 1024, + obj->base.read_domains, + obj->base.write_domain, + obj->last_read_seqno, + obj->last_write_seqno, + obj->last_fenced_seqno, + cache_level_str(obj->cache_level), + obj->dirty ? " dirty" : "", + obj->madv == I915_MADV_DONTNEED ? " purgeable" : ""); + if (obj->base.name) + seq_printf(m, " (name: %d)", obj->base.name); + if (obj->pin_count) + seq_printf(m, " (pinned x %d)", obj->pin_count); + if (obj->fence_reg != I915_FENCE_REG_NONE) + seq_printf(m, " (fence: %d)", obj->fence_reg); + if (obj->gtt_space != NULL) + seq_printf(m, " (gtt offset: %08x, size: %08x)", + obj->gtt_offset, (unsigned int)obj->gtt_space->size); + if (obj->pin_mappable || obj->fault_mappable) { + char s[3], *t = s; + if (obj->pin_mappable) + *t++ = 'p'; + if (obj->fault_mappable) + *t++ = 'f'; + *t = '\0'; + seq_printf(m, " (%s mappable)", s); + } + if (obj->ring != NULL) + seq_printf(m, " (%s)", obj->ring->name); +} + +static int i915_gem_object_list_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + uintptr_t list = (uintptr_t) node->info_ent->data; + struct list_head *head; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + size_t total_obj_size, total_gtt_size; + int count, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + switch (list) { + case ACTIVE_LIST: + seq_printf(m, "Active:\n"); + head = &dev_priv->mm.active_list; + break; + case INACTIVE_LIST: + seq_printf(m, "Inactive:\n"); + head = &dev_priv->mm.inactive_list; + break; + default: + mutex_unlock(&dev->struct_mutex); + return -EINVAL; + } + + total_obj_size = total_gtt_size = count = 0; + list_for_each_entry(obj, head, mm_list) { + seq_printf(m, " "); + describe_obj(m, obj); + seq_printf(m, "\n"); + total_obj_size += obj->base.size; + total_gtt_size += obj->gtt_space->size; + count++; + } + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "Total %d objects, %zu bytes, %zu GTT size\n", + count, total_obj_size, total_gtt_size); + return 0; +} + +#define count_objects(list, member) do { \ + list_for_each_entry(obj, list, member) { \ + size += obj->gtt_space->size; \ + ++count; \ + if (obj->map_and_fenceable) { \ + mappable_size += obj->gtt_space->size; \ + ++mappable_count; \ + } \ + } \ +} while (0) + +static int i915_gem_object_info(struct seq_file *m, void* data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 count, mappable_count, purgeable_count; + size_t size, mappable_size, purgeable_size; + struct drm_i915_gem_object *obj; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "%u objects, %zu bytes\n", + dev_priv->mm.object_count, + dev_priv->mm.object_memory); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.bound_list, gtt_list); + seq_printf(m, "%u [%u] objects, %zu [%zu] bytes in gtt\n", + count, mappable_count, size, mappable_size); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.active_list, mm_list); + seq_printf(m, " %u [%u] active objects, %zu [%zu] bytes\n", + count, mappable_count, size, mappable_size); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.inactive_list, mm_list); + seq_printf(m, " %u [%u] inactive objects, %zu [%zu] bytes\n", + count, mappable_count, size, mappable_size); + + size = count = purgeable_size = purgeable_count = 0; + list_for_each_entry(obj, &dev_priv->mm.unbound_list, gtt_list) { + size += obj->base.size, ++count; + if (obj->madv == I915_MADV_DONTNEED) + purgeable_size += obj->base.size, ++purgeable_count; + } + seq_printf(m, "%u unbound objects, %zu bytes\n", count, size); + + size = count = mappable_size = mappable_count = 0; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + if (obj->fault_mappable) { + size += obj->gtt_space->size; + ++count; + } + if (obj->pin_mappable) { + mappable_size += obj->gtt_space->size; + ++mappable_count; + } + if (obj->madv == I915_MADV_DONTNEED) { + purgeable_size += obj->base.size; + ++purgeable_count; + } + } + seq_printf(m, "%u purgeable objects, %zu bytes\n", + purgeable_count, purgeable_size); + seq_printf(m, "%u pinned mappable objects, %zu bytes\n", + mappable_count, mappable_size); + seq_printf(m, "%u fault mappable objects, %zu bytes\n", + count, size); + + seq_printf(m, "%zu [%zu] gtt total\n", + dev_priv->mm.gtt_total, dev_priv->mm.mappable_gtt_total); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_gem_gtt_info(struct seq_file *m, void* data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + uintptr_t list = (uintptr_t) node->info_ent->data; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + size_t total_obj_size, total_gtt_size; + int count, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + total_obj_size = total_gtt_size = count = 0; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + if (list == PINNED_LIST && obj->pin_count == 0) + continue; + + seq_printf(m, " "); + describe_obj(m, obj); + seq_printf(m, "\n"); + total_obj_size += obj->base.size; + total_gtt_size += obj->gtt_space->size; + count++; + } + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "Total %d objects, %zu bytes, %zu GTT size\n", + count, total_obj_size, total_gtt_size); + + return 0; +} + +static int i915_gem_pageflip_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + unsigned long flags; + struct intel_crtc *crtc; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) { + const char pipe = pipe_name(crtc->pipe); + const char plane = plane_name(crtc->plane); + struct intel_unpin_work *work; + + spin_lock_irqsave(&dev->event_lock, flags); + work = crtc->unpin_work; + if (work == NULL) { + seq_printf(m, "No flip due on pipe %c (plane %c)\n", + pipe, plane); + } else { + if (atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { + seq_printf(m, "Flip queued on pipe %c (plane %c)\n", + pipe, plane); + } else { + seq_printf(m, "Flip pending (waiting for vsync) on pipe %c (plane %c)\n", + pipe, plane); + } + if (work->enable_stall_check) + seq_printf(m, "Stall check enabled, "); + else + seq_printf(m, "Stall check waiting for page flip ioctl, "); + seq_printf(m, "%d prepares\n", atomic_read(&work->pending)); + + if (work->old_fb_obj) { + struct drm_i915_gem_object *obj = work->old_fb_obj; + if (obj) + seq_printf(m, "Old framebuffer gtt_offset 0x%08x\n", obj->gtt_offset); + } + if (work->pending_flip_obj) { + struct drm_i915_gem_object *obj = work->pending_flip_obj; + if (obj) + seq_printf(m, "New framebuffer gtt_offset 0x%08x\n", obj->gtt_offset); + } + } + spin_unlock_irqrestore(&dev->event_lock, flags); + } + + return 0; +} + +static int i915_gem_request_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + struct drm_i915_gem_request *gem_request; + int ret, count, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + count = 0; + for_each_ring(ring, dev_priv, i) { + if (list_empty(&ring->request_list)) + continue; + + seq_printf(m, "%s requests:\n", ring->name); + list_for_each_entry(gem_request, + &ring->request_list, + list) { + seq_printf(m, " %d @ %d\n", + gem_request->seqno, + (int) (jiffies - gem_request->emitted_jiffies)); + } + count++; + } + mutex_unlock(&dev->struct_mutex); + + if (count == 0) + seq_printf(m, "No requests\n"); + + return 0; +} + +static void i915_ring_seqno_info(struct seq_file *m, + struct intel_ring_buffer *ring) +{ + if (ring->get_seqno) { + seq_printf(m, "Current sequence (%s): %d\n", + ring->name, ring->get_seqno(ring, false)); + } +} + +static int i915_gem_seqno_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for_each_ring(ring, dev_priv, i) + i915_ring_seqno_info(m, ring); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + + +static int i915_interrupt_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i, pipe; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + if (IS_VALLEYVIEW(dev)) { + seq_printf(m, "Display IER:\t%08x\n", + I915_READ(VLV_IER)); + seq_printf(m, "Display IIR:\t%08x\n", + I915_READ(VLV_IIR)); + seq_printf(m, "Display IIR_RW:\t%08x\n", + I915_READ(VLV_IIR_RW)); + seq_printf(m, "Display IMR:\t%08x\n", + I915_READ(VLV_IMR)); + for_each_pipe(pipe) + seq_printf(m, "Pipe %c stat:\t%08x\n", + pipe_name(pipe), + I915_READ(PIPESTAT(pipe))); + + seq_printf(m, "Master IER:\t%08x\n", + I915_READ(VLV_MASTER_IER)); + + seq_printf(m, "Render IER:\t%08x\n", + I915_READ(GTIER)); + seq_printf(m, "Render IIR:\t%08x\n", + I915_READ(GTIIR)); + seq_printf(m, "Render IMR:\t%08x\n", + I915_READ(GTIMR)); + + seq_printf(m, "PM IER:\t\t%08x\n", + I915_READ(GEN6_PMIER)); + seq_printf(m, "PM IIR:\t\t%08x\n", + I915_READ(GEN6_PMIIR)); + seq_printf(m, "PM IMR:\t\t%08x\n", + I915_READ(GEN6_PMIMR)); + + seq_printf(m, "Port hotplug:\t%08x\n", + I915_READ(PORT_HOTPLUG_EN)); + seq_printf(m, "DPFLIPSTAT:\t%08x\n", + I915_READ(VLV_DPFLIPSTAT)); + seq_printf(m, "DPINVGTT:\t%08x\n", + I915_READ(DPINVGTT)); + + } else if (!HAS_PCH_SPLIT(dev)) { + seq_printf(m, "Interrupt enable: %08x\n", + I915_READ(IER)); + seq_printf(m, "Interrupt identity: %08x\n", + I915_READ(IIR)); + seq_printf(m, "Interrupt mask: %08x\n", + I915_READ(IMR)); + for_each_pipe(pipe) + seq_printf(m, "Pipe %c stat: %08x\n", + pipe_name(pipe), + I915_READ(PIPESTAT(pipe))); + } else { + seq_printf(m, "North Display Interrupt enable: %08x\n", + I915_READ(DEIER)); + seq_printf(m, "North Display Interrupt identity: %08x\n", + I915_READ(DEIIR)); + seq_printf(m, "North Display Interrupt mask: %08x\n", + I915_READ(DEIMR)); + seq_printf(m, "South Display Interrupt enable: %08x\n", + I915_READ(SDEIER)); + seq_printf(m, "South Display Interrupt identity: %08x\n", + I915_READ(SDEIIR)); + seq_printf(m, "South Display Interrupt mask: %08x\n", + I915_READ(SDEIMR)); + seq_printf(m, "Graphics Interrupt enable: %08x\n", + I915_READ(GTIER)); + seq_printf(m, "Graphics Interrupt identity: %08x\n", + I915_READ(GTIIR)); + seq_printf(m, "Graphics Interrupt mask: %08x\n", + I915_READ(GTIMR)); + } + seq_printf(m, "Interrupts received: %d\n", + atomic_read(&dev_priv->irq_received)); + for_each_ring(ring, dev_priv, i) { + if (IS_GEN6(dev) || IS_GEN7(dev)) { + seq_printf(m, + "Graphics Interrupt mask (%s): %08x\n", + ring->name, I915_READ_IMR(ring)); + } + i915_ring_seqno_info(m, ring); + } + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_gem_fence_regs_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int i, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "Reserved fences = %d\n", dev_priv->fence_reg_start); + seq_printf(m, "Total fences = %d\n", dev_priv->num_fence_regs); + for (i = 0; i < dev_priv->num_fence_regs; i++) { + struct drm_i915_gem_object *obj = dev_priv->fence_regs[i].obj; + + seq_printf(m, "Fence %d, pin count = %d, object = ", + i, dev_priv->fence_regs[i].pin_count); + if (obj == NULL) + seq_printf(m, "unused"); + else + describe_obj(m, obj); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->struct_mutex); + return 0; +} + +static int i915_hws_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + const volatile u32 __iomem *hws; + int i; + + ring = &dev_priv->ring[(uintptr_t)node->info_ent->data]; + hws = (volatile u32 __iomem *)ring->status_page.page_addr; + if (hws == NULL) + return 0; + + for (i = 0; i < 4096 / sizeof(u32) / 4; i += 4) { + seq_printf(m, "0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x\n", + i * 4, + hws[i], hws[i + 1], hws[i + 2], hws[i + 3]); + } + return 0; +} + +static const char *ring_str(int ring) +{ + switch (ring) { + case RCS: return "render"; + case VCS: return "bsd"; + case BCS: return "blt"; + default: return ""; + } +} + +static const char *pin_flag(int pinned) +{ + if (pinned > 0) + return " P"; + else if (pinned < 0) + return " p"; + else + return ""; +} + +static const char *tiling_flag(int tiling) +{ + switch (tiling) { + default: + case I915_TILING_NONE: return ""; + case I915_TILING_X: return " X"; + case I915_TILING_Y: return " Y"; + } +} + +static const char *dirty_flag(int dirty) +{ + return dirty ? " dirty" : ""; +} + +static const char *purgeable_flag(int purgeable) +{ + return purgeable ? " purgeable" : ""; +} + +static void print_error_buffers(struct seq_file *m, + const char *name, + struct drm_i915_error_buffer *err, + int count) +{ + seq_printf(m, "%s [%d]:\n", name, count); + + while (count--) { + seq_printf(m, " %08x %8u %04x %04x %x %x%s%s%s%s%s%s%s", + err->gtt_offset, + err->size, + err->read_domains, + err->write_domain, + err->rseqno, err->wseqno, + pin_flag(err->pinned), + tiling_flag(err->tiling), + dirty_flag(err->dirty), + purgeable_flag(err->purgeable), + err->ring != -1 ? " " : "", + ring_str(err->ring), + cache_level_str(err->cache_level)); + + if (err->name) + seq_printf(m, " (name: %d)", err->name); + if (err->fence_reg != I915_FENCE_REG_NONE) + seq_printf(m, " (fence: %d)", err->fence_reg); + + seq_printf(m, "\n"); + err++; + } +} + +static void i915_ring_error_state(struct seq_file *m, + struct drm_device *dev, + struct drm_i915_error_state *error, + unsigned ring) +{ + BUG_ON(ring >= I915_NUM_RINGS); /* shut up confused gcc */ + seq_printf(m, "%s command stream:\n", ring_str(ring)); + seq_printf(m, " HEAD: 0x%08x\n", error->head[ring]); + seq_printf(m, " TAIL: 0x%08x\n", error->tail[ring]); + seq_printf(m, " CTL: 0x%08x\n", error->ctl[ring]); + seq_printf(m, " ACTHD: 0x%08x\n", error->acthd[ring]); + seq_printf(m, " IPEIR: 0x%08x\n", error->ipeir[ring]); + seq_printf(m, " IPEHR: 0x%08x\n", error->ipehr[ring]); + seq_printf(m, " INSTDONE: 0x%08x\n", error->instdone[ring]); + if (ring == RCS && INTEL_INFO(dev)->gen >= 4) + seq_printf(m, " BBADDR: 0x%08llx\n", error->bbaddr); + + if (INTEL_INFO(dev)->gen >= 4) + seq_printf(m, " INSTPS: 0x%08x\n", error->instps[ring]); + seq_printf(m, " INSTPM: 0x%08x\n", error->instpm[ring]); + seq_printf(m, " FADDR: 0x%08x\n", error->faddr[ring]); + if (INTEL_INFO(dev)->gen >= 6) { + seq_printf(m, " RC PSMI: 0x%08x\n", error->rc_psmi[ring]); + seq_printf(m, " FAULT_REG: 0x%08x\n", error->fault_reg[ring]); + seq_printf(m, " SYNC_0: 0x%08x [last synced 0x%08x]\n", + error->semaphore_mboxes[ring][0], + error->semaphore_seqno[ring][0]); + seq_printf(m, " SYNC_1: 0x%08x [last synced 0x%08x]\n", + error->semaphore_mboxes[ring][1], + error->semaphore_seqno[ring][1]); + } + seq_printf(m, " seqno: 0x%08x\n", error->seqno[ring]); + seq_printf(m, " waiting: %s\n", yesno(error->waiting[ring])); + seq_printf(m, " ring->head: 0x%08x\n", error->cpu_ring_head[ring]); + seq_printf(m, " ring->tail: 0x%08x\n", error->cpu_ring_tail[ring]); +} + +struct i915_error_state_file_priv { + struct drm_device *dev; + struct drm_i915_error_state *error; +}; + +static int i915_error_state(struct seq_file *m, void *unused) +{ + struct i915_error_state_file_priv *error_priv = m->private; + struct drm_device *dev = error_priv->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_error_state *error = error_priv->error; + struct intel_ring_buffer *ring; + int i, j, page, offset, elt; + + if (!error) { + seq_printf(m, "no error state collected\n"); + return 0; + } + + seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, + error->time.tv_usec); + seq_printf(m, "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); + seq_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er); + seq_printf(m, "FORCEWAKE: 0x%08x\n", error->forcewake); + seq_printf(m, "DERRMR: 0x%08x\n", error->derrmr); + seq_printf(m, "CCID: 0x%08x\n", error->ccid); + + for (i = 0; i < dev_priv->num_fence_regs; i++) + seq_printf(m, " fence[%d] = %08llx\n", i, error->fence[i]); + + for (i = 0; i < ARRAY_SIZE(error->extra_instdone); i++) + seq_printf(m, " INSTDONE_%d: 0x%08x\n", i, error->extra_instdone[i]); + + if (INTEL_INFO(dev)->gen >= 6) { + seq_printf(m, "ERROR: 0x%08x\n", error->error); + seq_printf(m, "DONE_REG: 0x%08x\n", error->done_reg); + } + + if (INTEL_INFO(dev)->gen == 7) + seq_printf(m, "ERR_INT: 0x%08x\n", error->err_int); + + for_each_ring(ring, dev_priv, i) + i915_ring_error_state(m, dev, error, i); + + if (error->active_bo) + print_error_buffers(m, "Active", + error->active_bo, + error->active_bo_count); + + if (error->pinned_bo) + print_error_buffers(m, "Pinned", + error->pinned_bo, + error->pinned_bo_count); + + for (i = 0; i < ARRAY_SIZE(error->ring); i++) { + struct drm_i915_error_object *obj; + + if ((obj = error->ring[i].batchbuffer)) { + seq_printf(m, "%s --- gtt_offset = 0x%08x\n", + dev_priv->ring[i].name, + obj->gtt_offset); + offset = 0; + for (page = 0; page < obj->page_count; page++) { + for (elt = 0; elt < PAGE_SIZE/4; elt++) { + seq_printf(m, "%08x : %08x\n", offset, obj->pages[page][elt]); + offset += 4; + } + } + } + + if (error->ring[i].num_requests) { + seq_printf(m, "%s --- %d requests\n", + dev_priv->ring[i].name, + error->ring[i].num_requests); + for (j = 0; j < error->ring[i].num_requests; j++) { + seq_printf(m, " seqno 0x%08x, emitted %ld, tail 0x%08x\n", + error->ring[i].requests[j].seqno, + error->ring[i].requests[j].jiffies, + error->ring[i].requests[j].tail); + } + } + + if ((obj = error->ring[i].ringbuffer)) { + seq_printf(m, "%s --- ringbuffer = 0x%08x\n", + dev_priv->ring[i].name, + obj->gtt_offset); + offset = 0; + for (page = 0; page < obj->page_count; page++) { + for (elt = 0; elt < PAGE_SIZE/4; elt++) { + seq_printf(m, "%08x : %08x\n", + offset, + obj->pages[page][elt]); + offset += 4; + } + } + } + } + + if (error->overlay) + intel_overlay_print_error_state(m, error->overlay); + + if (error->display) + intel_display_print_error_state(m, dev, error->display); + + return 0; +} + +static ssize_t +i915_error_state_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct seq_file *m = filp->private_data; + struct i915_error_state_file_priv *error_priv = m->private; + struct drm_device *dev = error_priv->dev; + int ret; + + DRM_DEBUG_DRIVER("Resetting error state\n"); + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + i915_destroy_error_state(dev); + mutex_unlock(&dev->struct_mutex); + + return cnt; +} + +static int i915_error_state_open(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + drm_i915_private_t *dev_priv = dev->dev_private; + struct i915_error_state_file_priv *error_priv; + unsigned long flags; + + error_priv = kzalloc(sizeof(*error_priv), GFP_KERNEL); + if (!error_priv) + return -ENOMEM; + + error_priv->dev = dev; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error_priv->error = dev_priv->first_error; + if (error_priv->error) + kref_get(&error_priv->error->ref); + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + return single_open(file, i915_error_state, error_priv); +} + +static int i915_error_state_release(struct inode *inode, struct file *file) +{ + struct seq_file *m = file->private_data; + struct i915_error_state_file_priv *error_priv = m->private; + + if (error_priv->error) + kref_put(&error_priv->error->ref, i915_error_state_free); + kfree(error_priv); + + return single_release(inode, file); +} + +static const struct file_operations i915_error_state_fops = { + .owner = THIS_MODULE, + .open = i915_error_state_open, + .read = seq_read, + .write = i915_error_state_write, + .llseek = default_llseek, + .release = i915_error_state_release, +}; + +static int i915_rstdby_delays(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u16 crstanddelay; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + crstanddelay = I915_READ16(CRSTANDVID); + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "w/ctx: %d, w/o ctx: %d\n", (crstanddelay >> 8) & 0x3f, (crstanddelay & 0x3f)); + + return 0; +} + +static int i915_cur_delayinfo(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (IS_GEN5(dev)) { + u16 rgvswctl = I915_READ16(MEMSWCTL); + u16 rgvstat = I915_READ16(MEMSTAT_ILK); + + seq_printf(m, "Requested P-state: %d\n", (rgvswctl >> 8) & 0xf); + seq_printf(m, "Requested VID: %d\n", rgvswctl & 0x3f); + seq_printf(m, "Current VID: %d\n", (rgvstat & MEMSTAT_VID_MASK) >> + MEMSTAT_VID_SHIFT); + seq_printf(m, "Current P-state: %d\n", + (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT); + } else if (IS_GEN6(dev) || IS_GEN7(dev)) { + u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); + u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS); + u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + u32 rpstat, cagf; + u32 rpupei, rpcurup, rpprevup; + u32 rpdownei, rpcurdown, rpprevdown; + int max_freq; + + /* RPSTAT1 is in the GT power well */ + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + gen6_gt_force_wake_get(dev_priv); + + rpstat = I915_READ(GEN6_RPSTAT1); + rpupei = I915_READ(GEN6_RP_CUR_UP_EI); + rpcurup = I915_READ(GEN6_RP_CUR_UP); + rpprevup = I915_READ(GEN6_RP_PREV_UP); + rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI); + rpcurdown = I915_READ(GEN6_RP_CUR_DOWN); + rpprevdown = I915_READ(GEN6_RP_PREV_DOWN); + 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); + + seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status); + seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat); + seq_printf(m, "Render p-state ratio: %d\n", + (gt_perf_status & 0xff00) >> 8); + seq_printf(m, "Render p-state VID: %d\n", + gt_perf_status & 0xff); + seq_printf(m, "Render p-state limit: %d\n", + rp_state_limits & 0xff); + seq_printf(m, "CAGF: %dMHz\n", cagf); + seq_printf(m, "RP CUR UP EI: %dus\n", rpupei & + GEN6_CURICONT_MASK); + seq_printf(m, "RP CUR UP: %dus\n", rpcurup & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP PREV UP: %dus\n", rpprevup & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP CUR DOWN EI: %dus\n", rpdownei & + GEN6_CURIAVG_MASK); + seq_printf(m, "RP CUR DOWN: %dus\n", rpcurdown & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP PREV DOWN: %dus\n", rpprevdown & + GEN6_CURBSYTAVG_MASK); + + max_freq = (rp_state_cap & 0xff0000) >> 16; + seq_printf(m, "Lowest (RPN) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + + max_freq = (rp_state_cap & 0xff00) >> 8; + seq_printf(m, "Nominal (RP1) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + + max_freq = rp_state_cap & 0xff; + seq_printf(m, "Max non-overclocked (RP0) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + } else { + seq_printf(m, "no P-state info available\n"); + } + + return 0; +} + +static int i915_delayfreq_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 delayfreq; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for (i = 0; i < 16; i++) { + delayfreq = I915_READ(PXVFREQ_BASE + i * 4); + seq_printf(m, "P%02dVIDFREQ: 0x%08x (VID: %d)\n", i, delayfreq, + (delayfreq & PXVFREQ_PX_MASK) >> PXVFREQ_PX_SHIFT); + } + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static inline int MAP_TO_MV(int map) +{ + return 1250 - (map * 25); +} + +static int i915_inttoext_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 inttoext; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for (i = 1; i <= 32; i++) { + inttoext = I915_READ(INTTOEXT_BASE_ILK + i * 4); + seq_printf(m, "INTTOEXT%02d: 0x%08x\n", i, inttoext); + } + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int ironlake_drpc_info(struct seq_file *m) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 rgvmodectl, rstdbyctl; + u16 crstandvid; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + rgvmodectl = I915_READ(MEMMODECTL); + rstdbyctl = I915_READ(RSTDBYCTL); + crstandvid = I915_READ16(CRSTANDVID); + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "HD boost: %s\n", (rgvmodectl & MEMMODE_BOOST_EN) ? + "yes" : "no"); + seq_printf(m, "Boost freq: %d\n", + (rgvmodectl & MEMMODE_BOOST_FREQ_MASK) >> + MEMMODE_BOOST_FREQ_SHIFT); + seq_printf(m, "HW control enabled: %s\n", + rgvmodectl & MEMMODE_HWIDLE_EN ? "yes" : "no"); + seq_printf(m, "SW control enabled: %s\n", + rgvmodectl & MEMMODE_SWMODE_EN ? "yes" : "no"); + seq_printf(m, "Gated voltage change: %s\n", + rgvmodectl & MEMMODE_RCLK_GATE ? "yes" : "no"); + seq_printf(m, "Starting frequency: P%d\n", + (rgvmodectl & MEMMODE_FSTART_MASK) >> MEMMODE_FSTART_SHIFT); + seq_printf(m, "Max P-state: P%d\n", + (rgvmodectl & MEMMODE_FMAX_MASK) >> MEMMODE_FMAX_SHIFT); + seq_printf(m, "Min P-state: P%d\n", (rgvmodectl & MEMMODE_FMIN_MASK)); + seq_printf(m, "RS1 VID: %d\n", (crstandvid & 0x3f)); + seq_printf(m, "RS2 VID: %d\n", ((crstandvid >> 8) & 0x3f)); + seq_printf(m, "Render standby enabled: %s\n", + (rstdbyctl & RCX_SW_EXIT) ? "no" : "yes"); + seq_printf(m, "Current RS state: "); + switch (rstdbyctl & RSX_STATUS_MASK) { + case RSX_STATUS_ON: + seq_printf(m, "on\n"); + break; + case RSX_STATUS_RC1: + seq_printf(m, "RC1\n"); + break; + case RSX_STATUS_RC1E: + seq_printf(m, "RC1E\n"); + break; + case RSX_STATUS_RS1: + seq_printf(m, "RS1\n"); + break; + case RSX_STATUS_RS2: + seq_printf(m, "RS2 (RC6)\n"); + break; + case RSX_STATUS_RS3: + seq_printf(m, "RC3 (RC6+)\n"); + break; + default: + seq_printf(m, "unknown\n"); + break; + } + + return 0; +} + +static int gen6_drpc_info(struct seq_file *m) +{ + + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0; + unsigned forcewake_count; + int count=0, ret; + + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + spin_lock_irq(&dev_priv->gt_lock); + forcewake_count = dev_priv->forcewake_count; + spin_unlock_irq(&dev_priv->gt_lock); + + if (forcewake_count) { + seq_printf(m, "RC information inaccurate because somebody " + "holds a forcewake reference \n"); + } else { + /* NB: we cannot use forcewake, else we read the wrong values */ + while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1)) + udelay(10); + seq_printf(m, "RC information accurate: %s\n", yesno(count < 51)); + } + + gt_core_status = readl(dev_priv->regs + GEN6_GT_CORE_STATUS); + trace_i915_reg_rw(false, GEN6_GT_CORE_STATUS, gt_core_status, 4); + + rpmodectl1 = I915_READ(GEN6_RP_CONTROL); + rcctl1 = I915_READ(GEN6_RC_CONTROL); + mutex_unlock(&dev->struct_mutex); + mutex_lock(&dev_priv->rps.hw_lock); + sandybridge_pcode_read(dev_priv, GEN6_PCODE_READ_RC6VIDS, &rc6vids); + mutex_unlock(&dev_priv->rps.hw_lock); + + seq_printf(m, "Video Turbo Mode: %s\n", + yesno(rpmodectl1 & GEN6_RP_MEDIA_TURBO)); + seq_printf(m, "HW control enabled: %s\n", + yesno(rpmodectl1 & GEN6_RP_ENABLE)); + seq_printf(m, "SW control enabled: %s\n", + yesno((rpmodectl1 & GEN6_RP_MEDIA_MODE_MASK) == + GEN6_RP_MEDIA_SW_MODE)); + seq_printf(m, "RC1e Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC1e_ENABLE)); + seq_printf(m, "RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6_ENABLE)); + seq_printf(m, "Deep RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6p_ENABLE)); + seq_printf(m, "Deepest RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6pp_ENABLE)); + seq_printf(m, "Current RC state: "); + switch (gt_core_status & GEN6_RCn_MASK) { + case GEN6_RC0: + if (gt_core_status & GEN6_CORE_CPD_STATE_MASK) + seq_printf(m, "Core Power Down\n"); + else + seq_printf(m, "on\n"); + break; + case GEN6_RC3: + seq_printf(m, "RC3\n"); + break; + case GEN6_RC6: + seq_printf(m, "RC6\n"); + break; + case GEN6_RC7: + seq_printf(m, "RC7\n"); + break; + default: + seq_printf(m, "Unknown\n"); + break; + } + + seq_printf(m, "Core Power Down: %s\n", + yesno(gt_core_status & GEN6_CORE_CPD_STATE_MASK)); + + /* Not exactly sure what this is */ + seq_printf(m, "RC6 \"Locked to RPn\" residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6_LOCKED)); + seq_printf(m, "RC6 residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6)); + seq_printf(m, "RC6+ residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6p)); + seq_printf(m, "RC6++ residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6pp)); + + seq_printf(m, "RC6 voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 0) & 0xff))); + seq_printf(m, "RC6+ voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 8) & 0xff))); + seq_printf(m, "RC6++ voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 16) & 0xff))); + return 0; +} + +static int i915_drpc_info(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + + if (IS_GEN6(dev) || IS_GEN7(dev)) + return gen6_drpc_info(m); + else + return ironlake_drpc_info(m); +} + +static int i915_fbc_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + + if (!I915_HAS_FBC(dev)) { + seq_printf(m, "FBC unsupported on this chipset\n"); + return 0; + } + + if (intel_fbc_enabled(dev)) { + seq_printf(m, "FBC enabled\n"); + } else { + seq_printf(m, "FBC disabled: "); + switch (dev_priv->no_fbc_reason) { + case FBC_NO_OUTPUT: + seq_printf(m, "no outputs"); + break; + case FBC_STOLEN_TOO_SMALL: + seq_printf(m, "not enough stolen memory"); + break; + case FBC_UNSUPPORTED_MODE: + seq_printf(m, "mode not supported"); + break; + case FBC_MODE_TOO_LARGE: + seq_printf(m, "mode too large"); + break; + case FBC_BAD_PLANE: + seq_printf(m, "FBC unsupported on plane"); + break; + case FBC_NOT_TILED: + seq_printf(m, "scanout buffer not tiled"); + break; + case FBC_MULTIPLE_PIPES: + seq_printf(m, "multiple pipes are enabled"); + break; + case FBC_MODULE_PARAM: + seq_printf(m, "disabled per module param (default off)"); + break; + default: + seq_printf(m, "unknown reason"); + } + seq_printf(m, "\n"); + } + return 0; +} + +static int i915_sr_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + bool sr_enabled = false; + + if (HAS_PCH_SPLIT(dev)) + sr_enabled = I915_READ(WM1_LP_ILK) & WM1_LP_SR_EN; + else if (IS_CRESTLINE(dev) || IS_I945G(dev) || IS_I945GM(dev)) + sr_enabled = I915_READ(FW_BLC_SELF) & FW_BLC_SELF_EN; + else if (IS_I915GM(dev)) + sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN; + else if (IS_PINEVIEW(dev)) + sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN; + + seq_printf(m, "self-refresh: %s\n", + sr_enabled ? "enabled" : "disabled"); + + return 0; +} + +static int i915_emon_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long temp, chipset, gfx; + int ret; + + if (!IS_GEN5(dev)) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + temp = i915_mch_val(dev_priv); + chipset = i915_chipset_val(dev_priv); + gfx = i915_gfx_val(dev_priv); + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "GMCH temp: %ld\n", temp); + seq_printf(m, "Chipset power: %ld\n", chipset); + seq_printf(m, "GFX power: %ld\n", gfx); + seq_printf(m, "Total power: %ld\n", chipset + gfx); + + return 0; +} + +static int i915_ring_freq_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + int gpu_freq, ia_freq; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) { + seq_printf(m, "unsupported on this chipset\n"); + return 0; + } + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + seq_printf(m, "GPU freq (MHz)\tEffective CPU freq (MHz)\n"); + + for (gpu_freq = dev_priv->rps.min_delay; + gpu_freq <= dev_priv->rps.max_delay; + gpu_freq++) { + ia_freq = gpu_freq; + sandybridge_pcode_read(dev_priv, + GEN6_PCODE_READ_MIN_FREQ_TABLE, + &ia_freq); + seq_printf(m, "%d\t\t%d\n", gpu_freq * GT_FREQUENCY_MULTIPLIER, ia_freq * 100); + } + + mutex_unlock(&dev_priv->rps.hw_lock); + + return 0; +} + +static int i915_gfxec(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "GFXEC: %ld\n", (unsigned long)I915_READ(0x112f4)); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_opregion(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + void *data = kmalloc(OPREGION_SIZE, GFP_KERNEL); + int ret; + + if (data == NULL) + return -ENOMEM; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + goto out; + + if (opregion->header) { + memcpy_fromio(data, opregion->header, OPREGION_SIZE); + seq_write(m, data, OPREGION_SIZE); + } + + mutex_unlock(&dev->struct_mutex); + +out: + kfree(data); + return 0; +} + +static int i915_gem_framebuffer_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_fbdev *ifbdev; + struct intel_framebuffer *fb; + int ret; + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + ifbdev = dev_priv->fbdev; + fb = to_intel_framebuffer(ifbdev->helper.fb); + + seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, obj ", + fb->base.width, + fb->base.height, + fb->base.depth, + fb->base.bits_per_pixel); + describe_obj(m, fb->obj); + seq_printf(m, "\n"); + + list_for_each_entry(fb, &dev->mode_config.fb_list, base.head) { + if (&fb->base == ifbdev->helper.fb) + continue; + + seq_printf(m, "user size: %d x %d, depth %d, %d bpp, obj ", + fb->base.width, + fb->base.height, + fb->base.depth, + fb->base.bits_per_pixel); + describe_obj(m, fb->obj); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static int i915_context_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + if (dev_priv->ips.pwrctx) { + seq_printf(m, "power context "); + describe_obj(m, dev_priv->ips.pwrctx); + seq_printf(m, "\n"); + } + + if (dev_priv->ips.renderctx) { + seq_printf(m, "render context "); + describe_obj(m, dev_priv->ips.renderctx); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned forcewake_count; + + spin_lock_irq(&dev_priv->gt_lock); + forcewake_count = dev_priv->forcewake_count; + spin_unlock_irq(&dev_priv->gt_lock); + + seq_printf(m, "forcewake count = %u\n", forcewake_count); + + return 0; +} + +static const char *swizzle_string(unsigned swizzle) +{ + switch(swizzle) { + case I915_BIT_6_SWIZZLE_NONE: + return "none"; + case I915_BIT_6_SWIZZLE_9: + return "bit9"; + case I915_BIT_6_SWIZZLE_9_10: + return "bit9/bit10"; + case I915_BIT_6_SWIZZLE_9_11: + return "bit9/bit11"; + case I915_BIT_6_SWIZZLE_9_10_11: + return "bit9/bit10/bit11"; + case I915_BIT_6_SWIZZLE_9_17: + return "bit9/bit17"; + case I915_BIT_6_SWIZZLE_9_10_17: + return "bit9/bit10/bit17"; + case I915_BIT_6_SWIZZLE_UNKNOWN: + return "unkown"; + } + + return "bug"; +} + +static int i915_swizzle_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "bit6 swizzle for X-tiling = %s\n", + swizzle_string(dev_priv->mm.bit_6_swizzle_x)); + seq_printf(m, "bit6 swizzle for Y-tiling = %s\n", + swizzle_string(dev_priv->mm.bit_6_swizzle_y)); + + if (IS_GEN3(dev) || IS_GEN4(dev)) { + seq_printf(m, "DDC = 0x%08x\n", + I915_READ(DCC)); + seq_printf(m, "C0DRB3 = 0x%04x\n", + I915_READ16(C0DRB3)); + seq_printf(m, "C1DRB3 = 0x%04x\n", + I915_READ16(C1DRB3)); + } else if (IS_GEN6(dev) || IS_GEN7(dev)) { + seq_printf(m, "MAD_DIMM_C0 = 0x%08x\n", + I915_READ(MAD_DIMM_C0)); + seq_printf(m, "MAD_DIMM_C1 = 0x%08x\n", + I915_READ(MAD_DIMM_C1)); + seq_printf(m, "MAD_DIMM_C2 = 0x%08x\n", + I915_READ(MAD_DIMM_C2)); + seq_printf(m, "TILECTL = 0x%08x\n", + I915_READ(TILECTL)); + seq_printf(m, "ARB_MODE = 0x%08x\n", + I915_READ(ARB_MODE)); + seq_printf(m, "DISP_ARB_CTL = 0x%08x\n", + I915_READ(DISP_ARB_CTL)); + } + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_ppgtt_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i, ret; + + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + if (INTEL_INFO(dev)->gen == 6) + seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(GFX_MODE)); + + for_each_ring(ring, dev_priv, i) { + seq_printf(m, "%s\n", ring->name); + if (INTEL_INFO(dev)->gen == 7) + seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(RING_MODE_GEN7(ring))); + seq_printf(m, "PP_DIR_BASE: 0x%08x\n", I915_READ(RING_PP_DIR_BASE(ring))); + seq_printf(m, "PP_DIR_BASE_READ: 0x%08x\n", I915_READ(RING_PP_DIR_BASE_READ(ring))); + seq_printf(m, "PP_DIR_DCLV: 0x%08x\n", I915_READ(RING_PP_DIR_DCLV(ring))); + } + if (dev_priv->mm.aliasing_ppgtt) { + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + + seq_printf(m, "aliasing PPGTT:\n"); + seq_printf(m, "pd gtt offset: 0x%08x\n", ppgtt->pd_offset); + } + seq_printf(m, "ECOCHK: 0x%08x\n", I915_READ(GAM_ECOCHK)); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_dpio_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + + if (!IS_VALLEYVIEW(dev)) { + seq_printf(m, "unsupported\n"); + return 0; + } + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + seq_printf(m, "DPIO_CTL: 0x%08x\n", I915_READ(DPIO_CTL)); + + seq_printf(m, "DPIO_DIV_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_DIV_A)); + seq_printf(m, "DPIO_DIV_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_DIV_B)); + + seq_printf(m, "DPIO_REFSFR_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_REFSFR_A)); + seq_printf(m, "DPIO_REFSFR_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_REFSFR_B)); + + seq_printf(m, "DPIO_CORE_CLK_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_CORE_CLK_A)); + seq_printf(m, "DPIO_CORE_CLK_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_CORE_CLK_B)); + + seq_printf(m, "DPIO_LFP_COEFF_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_A)); + seq_printf(m, "DPIO_LFP_COEFF_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_B)); + + seq_printf(m, "DPIO_FASTCLK_DISABLE: 0x%08x\n", + intel_dpio_read(dev_priv, DPIO_FASTCLK_DISABLE)); + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static ssize_t +i915_wedged_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len; + + len = snprintf(buf, sizeof(buf), + "wedged : %d\n", + atomic_read(&dev_priv->mm.wedged)); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_wedged_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + char buf[20]; + int val = 1; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_INFO("Manually setting wedged to %d\n", val); + i915_handle_error(dev, val); + + return cnt; +} + +static const struct file_operations i915_wedged_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_wedged_read, + .write = i915_wedged_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_ring_stop_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[20]; + int len; + + len = snprintf(buf, sizeof(buf), + "0x%08x\n", dev_priv->stop_rings); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_ring_stop_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 0, ret; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Stopping rings 0x%08x\n", val); + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + dev_priv->stop_rings = val; + mutex_unlock(&dev->struct_mutex); + + return cnt; +} + +static const struct file_operations i915_ring_stop_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_ring_stop_read, + .write = i915_ring_stop_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_max_freq_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + len = snprintf(buf, sizeof(buf), + "max freq: %d\n", dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_max_freq_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 1, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Manually setting max freq to %d\n", val); + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + /* + * Turbo will still be enabled, but won't go above the set value. + */ + dev_priv->rps.max_delay = val / GT_FREQUENCY_MULTIPLIER; + + gen6_set_rps(dev, val / GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + return cnt; +} + +static const struct file_operations i915_max_freq_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_max_freq_read, + .write = i915_max_freq_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_min_freq_read(struct file *filp, char __user *ubuf, size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + len = snprintf(buf, sizeof(buf), + "min freq: %d\n", dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_min_freq_write(struct file *filp, const char __user *ubuf, size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 1, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Manually setting min freq to %d\n", val); + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + /* + * Turbo will still be enabled, but won't go below the set value. + */ + dev_priv->rps.min_delay = val / GT_FREQUENCY_MULTIPLIER; + + gen6_set_rps(dev, val / GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + return cnt; +} + +static const struct file_operations i915_min_freq_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_min_freq_read, + .write = i915_min_freq_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_cache_sharing_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + u32 snpcr; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + mutex_unlock(&dev_priv->dev->struct_mutex); + + len = snprintf(buf, sizeof(buf), + "%d\n", (snpcr & GEN6_MBC_SNPCR_MASK) >> + GEN6_MBC_SNPCR_SHIFT); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_cache_sharing_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + u32 snpcr; + int val = 1; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + if (val < 0 || val > 3) + return -EINVAL; + + DRM_DEBUG_DRIVER("Manually setting uncore sharing to %d\n", val); + + /* Update the cache sharing policy here as well */ + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + snpcr &= ~GEN6_MBC_SNPCR_MASK; + snpcr |= (val << GEN6_MBC_SNPCR_SHIFT); + I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr); + + return cnt; +} + +static const struct file_operations i915_cache_sharing_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_cache_sharing_read, + .write = i915_cache_sharing_write, + .llseek = default_llseek, +}; + +/* As the drm_debugfs_init() routines are called before dev->dev_private is + * allocated we need to hook into the minor for release. */ +static int +drm_add_fake_info_node(struct drm_minor *minor, + struct dentry *ent, + const void *key) +{ + struct drm_info_node *node; + + node = kmalloc(sizeof(struct drm_info_node), GFP_KERNEL); + if (node == NULL) { + debugfs_remove(ent); + return -ENOMEM; + } + + node->minor = minor; + node->dent = ent; + node->info_ent = (void *) key; + + mutex_lock(&minor->debugfs_lock); + list_add(&node->list, &minor->debugfs_list); + mutex_unlock(&minor->debugfs_lock); + + return 0; +} + +static int i915_forcewake_open(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 6) + return 0; + + gen6_gt_force_wake_get(dev_priv); + + return 0; +} + +static int i915_forcewake_release(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 6) + return 0; + + gen6_gt_force_wake_put(dev_priv); + + return 0; +} + +static const struct file_operations i915_forcewake_fops = { + .owner = THIS_MODULE, + .open = i915_forcewake_open, + .release = i915_forcewake_release, +}; + +static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor) +{ + struct drm_device *dev = minor->dev; + struct dentry *ent; + + ent = debugfs_create_file("i915_forcewake_user", + S_IRUSR, + root, dev, + &i915_forcewake_fops); + if (IS_ERR(ent)) + return PTR_ERR(ent); + + return drm_add_fake_info_node(minor, ent, &i915_forcewake_fops); +} + +static int i915_debugfs_create(struct dentry *root, + struct drm_minor *minor, + const char *name, + const struct file_operations *fops) +{ + struct drm_device *dev = minor->dev; + struct dentry *ent; + + ent = debugfs_create_file(name, + S_IRUGO | S_IWUSR, + root, dev, + fops); + if (IS_ERR(ent)) + return PTR_ERR(ent); + + return drm_add_fake_info_node(minor, ent, fops); +} + +static struct drm_info_list i915_debugfs_list[] = { + {"i915_capabilities", i915_capabilities, 0}, + {"i915_gem_objects", i915_gem_object_info, 0}, + {"i915_gem_gtt", i915_gem_gtt_info, 0}, + {"i915_gem_pinned", i915_gem_gtt_info, 0, (void *) PINNED_LIST}, + {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST}, + {"i915_gem_inactive", i915_gem_object_list_info, 0, (void *) INACTIVE_LIST}, + {"i915_gem_pageflip", i915_gem_pageflip_info, 0}, + {"i915_gem_request", i915_gem_request_info, 0}, + {"i915_gem_seqno", i915_gem_seqno_info, 0}, + {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0}, + {"i915_gem_interrupt", i915_interrupt_info, 0}, + {"i915_gem_hws", i915_hws_info, 0, (void *)RCS}, + {"i915_gem_hws_blt", i915_hws_info, 0, (void *)BCS}, + {"i915_gem_hws_bsd", i915_hws_info, 0, (void *)VCS}, + {"i915_rstdby_delays", i915_rstdby_delays, 0}, + {"i915_cur_delayinfo", i915_cur_delayinfo, 0}, + {"i915_delayfreq_table", i915_delayfreq_table, 0}, + {"i915_inttoext_table", i915_inttoext_table, 0}, + {"i915_drpc_info", i915_drpc_info, 0}, + {"i915_emon_status", i915_emon_status, 0}, + {"i915_ring_freq_table", i915_ring_freq_table, 0}, + {"i915_gfxec", i915_gfxec, 0}, + {"i915_fbc_status", i915_fbc_status, 0}, + {"i915_sr_status", i915_sr_status, 0}, + {"i915_opregion", i915_opregion, 0}, + {"i915_gem_framebuffer", i915_gem_framebuffer_info, 0}, + {"i915_context_status", i915_context_status, 0}, + {"i915_gen6_forcewake_count", i915_gen6_forcewake_count_info, 0}, + {"i915_swizzle_info", i915_swizzle_info, 0}, + {"i915_ppgtt_info", i915_ppgtt_info, 0}, + {"i915_dpio", i915_dpio_info, 0}, +}; +#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list) + +int i915_debugfs_init(struct drm_minor *minor) +{ + int ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_wedged", + &i915_wedged_fops); + if (ret) + return ret; + + ret = i915_forcewake_create(minor->debugfs_root, minor); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_max_freq", + &i915_max_freq_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_min_freq", + &i915_min_freq_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_cache_sharing", + &i915_cache_sharing_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_ring_stop", + &i915_ring_stop_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_error_state", + &i915_error_state_fops); + if (ret) + return ret; + + return drm_debugfs_create_files(i915_debugfs_list, + I915_DEBUGFS_ENTRIES, + minor->debugfs_root, minor); +} + +void i915_debugfs_cleanup(struct drm_minor *minor) +{ + drm_debugfs_remove_files(i915_debugfs_list, + I915_DEBUGFS_ENTRIES, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_forcewake_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_wedged_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_max_freq_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_min_freq_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_cache_sharing_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_ring_stop_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_error_state_fops, + 1, minor); +} + +#endif /* CONFIG_DEBUG_FS */ --- linux-3.5.0.orig/ubuntu/i915/intel_modes.c +++ linux-3.5.0/ubuntu/i915/intel_modes.c @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2007 Dave Airlie + * Copyright (c) 2007, 2010 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include "i915_drv.h" + +/** + * intel_connector_update_modes - update connector from edid + * @connector: DRM connector device to use + * @edid: previously read EDID information + */ +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid) +{ + int ret; + + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + drm_edid_to_eld(connector, edid); + + return ret; +} + +/** + * intel_ddc_get_modes - get modelist from monitor + * @connector: DRM connector device to use + * @adapter: i2c adapter + * + * Fetch the EDID information from @connector using the DDC bus. + */ +int intel_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + int ret; + + edid = drm_get_edid(connector, adapter); + if (!edid) + return 0; + + ret = intel_connector_update_modes(connector, edid); + kfree(edid); + + return ret; +} + +static const struct drm_prop_enum_list force_audio_names[] = { + { HDMI_AUDIO_OFF_DVI, "force-dvi" }, + { HDMI_AUDIO_OFF, "off" }, + { HDMI_AUDIO_AUTO, "auto" }, + { HDMI_AUDIO_ON, "on" }, +}; + +void +intel_attach_force_audio_property(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_property *prop; + + prop = dev_priv->force_audio_property; + if (prop == NULL) { + prop = drm_property_create_enum(dev, 0, + "audio", + force_audio_names, + ARRAY_SIZE(force_audio_names)); + if (prop == NULL) + return; + + dev_priv->force_audio_property = prop; + } + drm_object_attach_property(&connector->base, prop, 0); +} + +static const struct drm_prop_enum_list broadcast_rgb_names[] = { + { 0, "Full" }, + { 1, "Limited 16:235" }, +}; + +void +intel_attach_broadcast_rgb_property(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_property *prop; + + prop = dev_priv->broadcast_rgb_property; + if (prop == NULL) { + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, + "Broadcast RGB", + broadcast_rgb_names, + ARRAY_SIZE(broadcast_rgb_names)); + if (prop == NULL) + return; + + dev_priv->broadcast_rgb_property = prop; + } + + drm_object_attach_property(&connector->base, prop, 0); +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_gtt.c +++ linux-3.5.0/ubuntu/i915/i915_gem_gtt.c @@ -0,0 +1,708 @@ +/* + * Copyright © 2010 Daniel Vetter + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + */ + +#include +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +typedef uint32_t gtt_pte_t; + +/* PPGTT stuff */ +#define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) + +#define GEN6_PDE_VALID (1 << 0) +/* gen6+ has bit 11-4 for physical addr bit 39-32 */ +#define GEN6_PDE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) + +#define GEN6_PTE_VALID (1 << 0) +#define GEN6_PTE_UNCACHED (1 << 1) +#define HSW_PTE_UNCACHED (0) +#define GEN6_PTE_CACHE_LLC (2 << 1) +#define GEN6_PTE_CACHE_LLC_MLC (3 << 1) +#define GEN6_PTE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) + +static inline gtt_pte_t pte_encode(struct drm_device *dev, + dma_addr_t addr, + enum i915_cache_level level) +{ + gtt_pte_t pte = GEN6_PTE_VALID; + pte |= GEN6_PTE_ADDR_ENCODE(addr); + + switch (level) { + case I915_CACHE_LLC_MLC: + /* Haswell doesn't set L3 this way */ + if (IS_HASWELL(dev)) + pte |= GEN6_PTE_CACHE_LLC; + else + pte |= GEN6_PTE_CACHE_LLC_MLC; + break; + case I915_CACHE_LLC: + pte |= GEN6_PTE_CACHE_LLC; + break; + case I915_CACHE_NONE: + if (IS_HASWELL(dev)) + pte |= HSW_PTE_UNCACHED; + else + pte |= GEN6_PTE_UNCACHED; + break; + default: + BUG(); + } + + + return pte; +} + +/* PPGTT support for Sandybdrige/Gen6 and later */ +static void i915_ppgtt_clear_range(struct i915_hw_ppgtt *ppgtt, + unsigned first_entry, + unsigned num_entries) +{ + gtt_pte_t *pt_vaddr; + gtt_pte_t scratch_pte; + unsigned act_pd = first_entry / I915_PPGTT_PT_ENTRIES; + unsigned first_pte = first_entry % I915_PPGTT_PT_ENTRIES; + unsigned last_pte, i; + + scratch_pte = pte_encode(ppgtt->dev, ppgtt->scratch_page_dma_addr, + I915_CACHE_LLC); + + while (num_entries) { + last_pte = first_pte + num_entries; + if (last_pte > I915_PPGTT_PT_ENTRIES) + last_pte = I915_PPGTT_PT_ENTRIES; + + pt_vaddr = kmap_atomic(ppgtt->pt_pages[act_pd]); + + for (i = first_pte; i < last_pte; i++) + pt_vaddr[i] = scratch_pte; + + kunmap_atomic(pt_vaddr); + + num_entries -= last_pte - first_pte; + first_pte = 0; + act_pd++; + } +} + +int i915_gem_init_aliasing_ppgtt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_ppgtt *ppgtt; + unsigned first_pd_entry_in_global_pt; + int i; + int ret = -ENOMEM; + + /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024 + * entries. For aliasing ppgtt support we just steal them at the end for + * now. */ + first_pd_entry_in_global_pt = dev_priv->mm.gtt->gtt_total_entries - I915_PPGTT_PD_ENTRIES; + + ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL); + if (!ppgtt) + return ret; + + ppgtt->dev = dev; + ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; + ppgtt->pt_pages = kzalloc(sizeof(struct page *)*ppgtt->num_pd_entries, + GFP_KERNEL); + if (!ppgtt->pt_pages) + goto err_ppgtt; + + for (i = 0; i < ppgtt->num_pd_entries; i++) { + ppgtt->pt_pages[i] = alloc_page(GFP_KERNEL); + if (!ppgtt->pt_pages[i]) + goto err_pt_alloc; + } + + if (dev_priv->mm.gtt->needs_dmar) { + ppgtt->pt_dma_addr = kzalloc(sizeof(dma_addr_t) + *ppgtt->num_pd_entries, + GFP_KERNEL); + if (!ppgtt->pt_dma_addr) + goto err_pt_alloc; + + for (i = 0; i < ppgtt->num_pd_entries; i++) { + dma_addr_t pt_addr; + + pt_addr = pci_map_page(dev->pdev, ppgtt->pt_pages[i], + 0, 4096, + PCI_DMA_BIDIRECTIONAL); + + if (pci_dma_mapping_error(dev->pdev, + pt_addr)) { + ret = -EIO; + goto err_pd_pin; + + } + ppgtt->pt_dma_addr[i] = pt_addr; + } + } + + ppgtt->scratch_page_dma_addr = dev_priv->mm.gtt->scratch_page_dma; + + i915_ppgtt_clear_range(ppgtt, 0, + ppgtt->num_pd_entries*I915_PPGTT_PT_ENTRIES); + + ppgtt->pd_offset = (first_pd_entry_in_global_pt)*sizeof(gtt_pte_t); + + dev_priv->mm.aliasing_ppgtt = ppgtt; + + return 0; + +err_pd_pin: + if (ppgtt->pt_dma_addr) { + for (i--; i >= 0; i--) + pci_unmap_page(dev->pdev, ppgtt->pt_dma_addr[i], + 4096, PCI_DMA_BIDIRECTIONAL); + } +err_pt_alloc: + kfree(ppgtt->pt_dma_addr); + for (i = 0; i < ppgtt->num_pd_entries; i++) { + if (ppgtt->pt_pages[i]) + __free_page(ppgtt->pt_pages[i]); + } + kfree(ppgtt->pt_pages); +err_ppgtt: + kfree(ppgtt); + + return ret; +} + +void i915_gem_cleanup_aliasing_ppgtt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + int i; + + if (!ppgtt) + return; + + if (ppgtt->pt_dma_addr) { + for (i = 0; i < ppgtt->num_pd_entries; i++) + pci_unmap_page(dev->pdev, ppgtt->pt_dma_addr[i], + 4096, PCI_DMA_BIDIRECTIONAL); + } + + kfree(ppgtt->pt_dma_addr); + for (i = 0; i < ppgtt->num_pd_entries; i++) + __free_page(ppgtt->pt_pages[i]); + kfree(ppgtt->pt_pages); + kfree(ppgtt); +} + +static void i915_ppgtt_insert_sg_entries(struct i915_hw_ppgtt *ppgtt, + const struct sg_table *pages, + unsigned first_entry, + enum i915_cache_level cache_level) +{ + gtt_pte_t *pt_vaddr; + unsigned act_pd = first_entry / I915_PPGTT_PT_ENTRIES; + unsigned first_pte = first_entry % I915_PPGTT_PT_ENTRIES; + unsigned i, j, m, segment_len; + dma_addr_t page_addr; + struct scatterlist *sg; + + /* init sg walking */ + sg = pages->sgl; + i = 0; + segment_len = sg_dma_len(sg) >> PAGE_SHIFT; + m = 0; + + while (i < pages->nents) { + pt_vaddr = kmap_atomic(ppgtt->pt_pages[act_pd]); + + for (j = first_pte; j < I915_PPGTT_PT_ENTRIES; j++) { + page_addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + pt_vaddr[j] = pte_encode(ppgtt->dev, page_addr, + cache_level); + + /* grab the next page */ + if (++m == segment_len) { + if (++i == pages->nents) + break; + + sg = sg_next(sg); + segment_len = sg_dma_len(sg) >> PAGE_SHIFT; + m = 0; + } + } + + kunmap_atomic(pt_vaddr); + + first_pte = 0; + act_pd++; + } +} + +void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + i915_ppgtt_insert_sg_entries(ppgtt, + obj->pages, + obj->gtt_space->start >> PAGE_SHIFT, + cache_level); +} + +void i915_ppgtt_unbind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj) +{ + i915_ppgtt_clear_range(ppgtt, + obj->gtt_space->start >> PAGE_SHIFT, + obj->base.size >> PAGE_SHIFT); +} + +void i915_gem_init_ppgtt(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t pd_offset; + struct intel_ring_buffer *ring; + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + uint32_t __iomem *pd_addr; + uint32_t pd_entry; + int i; + + if (!dev_priv->mm.aliasing_ppgtt) + return; + + + pd_addr = dev_priv->mm.gtt->gtt + ppgtt->pd_offset/sizeof(uint32_t); + for (i = 0; i < ppgtt->num_pd_entries; i++) { + dma_addr_t pt_addr; + + if (dev_priv->mm.gtt->needs_dmar) + pt_addr = ppgtt->pt_dma_addr[i]; + else + pt_addr = page_to_phys(ppgtt->pt_pages[i]); + + pd_entry = GEN6_PDE_ADDR_ENCODE(pt_addr); + pd_entry |= GEN6_PDE_VALID; + + writel(pd_entry, pd_addr + i); + } + readl(pd_addr); + + pd_offset = ppgtt->pd_offset; + pd_offset /= 64; /* in cachelines, */ + pd_offset <<= 16; + + if (INTEL_INFO(dev)->gen == 6) { + uint32_t ecochk, gab_ctl, ecobits; + + ecobits = I915_READ(GAC_ECO_BITS); + I915_WRITE(GAC_ECO_BITS, ecobits | ECOBITS_PPGTT_CACHE64B); + + gab_ctl = I915_READ(GAB_CTL); + I915_WRITE(GAB_CTL, gab_ctl | GAB_CTL_CONT_AFTER_PAGEFAULT); + + ecochk = I915_READ(GAM_ECOCHK); + I915_WRITE(GAM_ECOCHK, ecochk | ECOCHK_SNB_BIT | + ECOCHK_PPGTT_CACHE64B); + I915_WRITE(GFX_MODE, _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE)); + } else if (INTEL_INFO(dev)->gen >= 7) { + I915_WRITE(GAM_ECOCHK, ECOCHK_PPGTT_CACHE64B); + /* GFX_MODE is per-ring on gen7+ */ + } + + for_each_ring(ring, dev_priv, i) { + if (INTEL_INFO(dev)->gen >= 7) + I915_WRITE(RING_MODE_GEN7(ring), + _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE)); + + I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G); + I915_WRITE(RING_PP_DIR_BASE(ring), pd_offset); + } +} + +static bool do_idling(struct drm_i915_private *dev_priv) +{ + bool ret = dev_priv->mm.interruptible; + + if (unlikely(dev_priv->mm.gtt->do_idle_maps)) { + dev_priv->mm.interruptible = false; + if (i915_gpu_idle(dev_priv->dev)) { + DRM_ERROR("Couldn't idle GPU\n"); + /* Wait a bit, in hopes it avoids the hang */ + udelay(10); + } + } + + return ret; +} + +static void undo_idling(struct drm_i915_private *dev_priv, bool interruptible) +{ + if (unlikely(dev_priv->mm.gtt->do_idle_maps)) + dev_priv->mm.interruptible = interruptible; +} + + +static void i915_ggtt_clear_range(struct drm_device *dev, + unsigned first_entry, + unsigned num_entries) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + gtt_pte_t scratch_pte; + gtt_pte_t __iomem *gtt_base = dev_priv->mm.gtt->gtt + first_entry; + const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry; + int i; + + if (INTEL_INFO(dev)->gen < 6) { + intel_gtt_clear_range(first_entry, num_entries); + return; + } + + if (WARN(num_entries > max_entries, + "First entry = %d; Num entries = %d (max=%d)\n", + first_entry, num_entries, max_entries)) + num_entries = max_entries; + + scratch_pte = pte_encode(dev, dev_priv->mm.gtt->scratch_page_dma, I915_CACHE_LLC); + for (i = 0; i < num_entries; i++) + iowrite32(scratch_pte, >t_base[i]); + readl(gtt_base); +} + +void i915_gem_restore_gtt_mappings(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + + /* First fill our portion of the GTT with scratch pages */ + i915_ggtt_clear_range(dev, dev_priv->mm.gtt_start / PAGE_SIZE, + (dev_priv->mm.gtt_end - dev_priv->mm.gtt_start) / PAGE_SIZE); + + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + i915_gem_clflush_object(obj); + i915_gem_gtt_bind_object(obj, obj->cache_level); + } + + i915_gem_chipset_flush(dev); +} + +int i915_gem_gtt_prepare_object(struct drm_i915_gem_object *obj) +{ + if (obj->has_dma_mapping) + return 0; + + if (!dma_map_sg(&obj->base.dev->pdev->dev, + obj->pages->sgl, obj->pages->nents, + PCI_DMA_BIDIRECTIONAL)) + return -ENOSPC; + + return 0; +} + +/* + * Binds an object into the global gtt with the specified cache level. The object + * will be accessible to the GPU via commands whose operands reference offsets + * within the global GTT as well as accessible by the GPU through the GMADR + * mapped BAR (dev_priv->mm.gtt->gtt). + */ +static void gen6_ggtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level level) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct sg_table *st = obj->pages; + struct scatterlist *sg = st->sgl; + const int first_entry = obj->gtt_space->start >> PAGE_SHIFT; + const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry; + gtt_pte_t __iomem *gtt_entries = dev_priv->mm.gtt->gtt + first_entry; + int unused, i = 0; + unsigned int len, m = 0; + dma_addr_t addr; + + for_each_sg(st->sgl, sg, st->nents, unused) { + len = sg_dma_len(sg) >> PAGE_SHIFT; + for (m = 0; m < len; m++) { + addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + iowrite32(pte_encode(dev, addr, level), >t_entries[i]); + i++; + } + } + + BUG_ON(i > max_entries); + BUG_ON(i != obj->base.size / PAGE_SIZE); + + /* XXX: This serves as a posting read to make sure that the PTE has + * actually been updated. There is some concern that even though + * registers and PTEs are within the same BAR that they are potentially + * of NUMA access patterns. Therefore, even with the way we assume + * hardware should work, we must keep this posting read for paranoia. + */ + if (i != 0) + WARN_ON(readl(>t_entries[i-1]) != pte_encode(dev, addr, level)); + + /* This next bit makes the above posting read even more important. We + * want to flush the TLBs only after we're certain all the PTE updates + * have finished. + */ + I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN); + POSTING_READ(GFX_FLSH_CNTL_GEN6); +} + +void i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + struct drm_device *dev = obj->base.dev; + if (INTEL_INFO(dev)->gen < 6) { + unsigned int flags = (cache_level == I915_CACHE_NONE) ? + AGP_USER_MEMORY : AGP_USER_CACHED_MEMORY; + intel_gtt_insert_sg_entries_hsw(obj->pages, + obj->gtt_space->start >> PAGE_SHIFT, + flags); + } else { + gen6_ggtt_bind_object(obj, cache_level); + } + + obj->has_global_gtt_mapping = 1; +} + +void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj) +{ + i915_ggtt_clear_range(obj->base.dev, + obj->gtt_space->start >> PAGE_SHIFT, + obj->base.size >> PAGE_SHIFT); + + obj->has_global_gtt_mapping = 0; +} + +void i915_gem_gtt_finish_object(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool interruptible; + + interruptible = do_idling(dev_priv); + + if (!obj->has_dma_mapping) + dma_unmap_sg(&dev->pdev->dev, + obj->pages->sgl, obj->pages->nents, + PCI_DMA_BIDIRECTIONAL); + + undo_idling(dev_priv, interruptible); +} + +static void i915_gtt_color_adjust(struct drm_mm_node_hsw *node, + unsigned long color, + unsigned long *start, + unsigned long *end) +{ + if (node->color != color) + *start += 4096; + + if (!list_empty(&node->node_list)) { + node = list_entry(node->node_list.next, + struct drm_mm_node_hsw, + node_list); + if (node->allocated && node->color != color) + *end -= 4096; + } +} + +void i915_gem_init_global_gtt(struct drm_device *dev, + unsigned long start, + unsigned long mappable_end, + unsigned long end) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + /* Substract the guard page ... */ + drm_mm_init_hsw(&dev_priv->mm.gtt_space, start, end - start - PAGE_SIZE); + if (!HAS_LLC(dev)) + dev_priv->mm.gtt_space.color_adjust = i915_gtt_color_adjust; + + dev_priv->mm.gtt_start = start; + dev_priv->mm.gtt_mappable_end = mappable_end; + dev_priv->mm.gtt_end = end; + dev_priv->mm.gtt_total = end - start; + dev_priv->mm.mappable_gtt_total = min(end, mappable_end) - start; + + /* ... but ensure that we clear the entire range. */ + i915_ggtt_clear_range(dev, start / PAGE_SIZE, (end-start) / PAGE_SIZE); +} + +static int setup_scratch_page(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct page *page; + dma_addr_t dma_addr; + + page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO); + if (page == NULL) + return -ENOMEM; + get_page(page); + set_pages_uc(page, 1); + +#ifdef CONFIG_INTEL_IOMMU + dma_addr = pci_map_page(dev->pdev, page, 0, PAGE_SIZE, + PCI_DMA_BIDIRECTIONAL); + if (pci_dma_mapping_error(dev->pdev, dma_addr)) + return -EINVAL; +#else + dma_addr = page_to_phys(page); +#endif + dev_priv->mm.gtt->scratch_page = page; + dev_priv->mm.gtt->scratch_page_dma = dma_addr; + + return 0; +} + +static void teardown_scratch_page(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + set_pages_wb(dev_priv->mm.gtt->scratch_page, 1); + pci_unmap_page(dev->pdev, dev_priv->mm.gtt->scratch_page_dma, + PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); + put_page(dev_priv->mm.gtt->scratch_page); + __free_page(dev_priv->mm.gtt->scratch_page); +} + +static inline unsigned int gen6_get_total_gtt_size(u16 snb_gmch_ctl) +{ + snb_gmch_ctl >>= SNB_GMCH_GGMS_SHIFT; + snb_gmch_ctl &= SNB_GMCH_GGMS_MASK; + return snb_gmch_ctl << 20; +} + +static inline unsigned int gen6_get_stolen_size(u16 snb_gmch_ctl) +{ + snb_gmch_ctl >>= SNB_GMCH_GMS_SHIFT; + snb_gmch_ctl &= SNB_GMCH_GMS_MASK; + return snb_gmch_ctl << 25; /* 32 MB units */ +} + +static inline unsigned int gen7_get_stolen_size(u16 snb_gmch_ctl) +{ + static const int stolen_decoder[] = { + 0, 0, 0, 0, 0, 32, 48, 64, 128, 256, 96, 160, 224, 352}; + snb_gmch_ctl >>= IVB_GMCH_GMS_SHIFT; + snb_gmch_ctl &= IVB_GMCH_GMS_MASK; + return stolen_decoder[snb_gmch_ctl] << 20; +} + +int i915_gem_gtt_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + phys_addr_t gtt_bus_addr; + u16 snb_gmch_ctl; + int ret; + + /* On modern platforms we need not worry ourself with the legacy + * hostbridge query stuff. Skip it entirely + */ + if (INTEL_INFO(dev)->gen < 6) { + ret = intel_gmch_probe(dev_priv->bridge_dev, dev->pdev, NULL); + if (!ret) { + DRM_ERROR("failed to set up gmch\n"); + return -EIO; + } + + dev_priv->mm.gtt = intel_gtt_get(); + if (!dev_priv->mm.gtt) { + DRM_ERROR("Failed to initialize GTT\n"); + intel_gmch_remove(); + return -ENODEV; + } + return 0; + } + + dev_priv->mm.gtt = kzalloc(sizeof(*dev_priv->mm.gtt), GFP_KERNEL); + if (!dev_priv->mm.gtt) + return -ENOMEM; + + if (!pci_set_dma_mask(dev->pdev, DMA_BIT_MASK(40))) + pci_set_consistent_dma_mask(dev->pdev, DMA_BIT_MASK(40)); + +#ifdef CONFIG_INTEL_IOMMU + dev_priv->mm.gtt->needs_dmar = 1; +#endif + + /* For GEN6+ the PTEs for the ggtt live at 2MB + BAR0 */ + gtt_bus_addr = pci_resource_start(dev->pdev, 0) + (2<<20); + dev_priv->mm.gtt->gma_bus_addr = pci_resource_start(dev->pdev, 2); + + /* i9xx_setup */ + pci_read_config_word(dev->pdev, SNB_GMCH_CTRL, &snb_gmch_ctl); + dev_priv->mm.gtt->gtt_total_entries = + gen6_get_total_gtt_size(snb_gmch_ctl) / sizeof(gtt_pte_t); + if (INTEL_INFO(dev)->gen < 7) + dev_priv->mm.gtt->stolen_size = gen6_get_stolen_size(snb_gmch_ctl); + else + dev_priv->mm.gtt->stolen_size = gen7_get_stolen_size(snb_gmch_ctl); + + dev_priv->mm.gtt->gtt_mappable_entries = pci_resource_len(dev->pdev, 2) >> PAGE_SHIFT; + /* 64/512MB is the current min/max we actually know of, but this is just a + * coarse sanity check. + */ + if ((dev_priv->mm.gtt->gtt_mappable_entries >> 8) < 64 || + dev_priv->mm.gtt->gtt_mappable_entries > dev_priv->mm.gtt->gtt_total_entries) { + DRM_ERROR("Unknown GMADR entries (%d)\n", + dev_priv->mm.gtt->gtt_mappable_entries); + ret = -ENXIO; + goto err_out; + } + + ret = setup_scratch_page(dev); + if (ret) { + DRM_ERROR("Scratch setup failed\n"); + goto err_out; + } + + dev_priv->mm.gtt->gtt = ioremap_wc(gtt_bus_addr, + dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t)); + if (!dev_priv->mm.gtt->gtt) { + DRM_ERROR("Failed to map the gtt page table\n"); + teardown_scratch_page(dev); + ret = -ENOMEM; + goto err_out; + } + + /* GMADR is the PCI aperture used by SW to access tiled GFX surfaces in a linear fashion. */ + DRM_INFO("Memory usable by graphics device = %dM\n", dev_priv->mm.gtt->gtt_total_entries >> 8); + DRM_DEBUG_DRIVER("GMADR size = %dM\n", dev_priv->mm.gtt->gtt_mappable_entries >> 8); + DRM_DEBUG_DRIVER("GTT stolen size = %dM\n", dev_priv->mm.gtt->stolen_size >> 20); + + return 0; + +err_out: + kfree(dev_priv->mm.gtt); + if (INTEL_INFO(dev)->gen < 6) + intel_gmch_remove(); + return ret; +} + +void i915_gem_gtt_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + iounmap(dev_priv->mm.gtt->gtt); + teardown_scratch_page(dev); + if (INTEL_INFO(dev)->gen < 6) + intel_gmch_remove(); + kfree(dev_priv->mm.gtt); +} --- linux-3.5.0.orig/ubuntu/i915/i915_irq.c +++ linux-3.5.0/ubuntu/i915/i915_irq.c @@ -0,0 +1,2776 @@ +/* i915_irq.c -- IRQ support for the I915 -*- linux-c -*- + */ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +/* For display hotplug interrupt */ +static void +ironlake_enable_display_irq(drm_i915_private_t *dev_priv, u32 mask) +{ + if ((dev_priv->irq_mask & mask) != 0) { + dev_priv->irq_mask &= ~mask; + I915_WRITE(DEIMR, dev_priv->irq_mask); + POSTING_READ(DEIMR); + } +} + +static inline void +ironlake_disable_display_irq(drm_i915_private_t *dev_priv, u32 mask) +{ + if ((dev_priv->irq_mask & mask) != mask) { + dev_priv->irq_mask |= mask; + I915_WRITE(DEIMR, dev_priv->irq_mask); + POSTING_READ(DEIMR); + } +} + +void +i915_enable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask) +{ + if ((dev_priv->pipestat[pipe] & mask) != mask) { + u32 reg = PIPESTAT(pipe); + + dev_priv->pipestat[pipe] |= mask; + /* Enable the interrupt, clear any pending status */ + I915_WRITE(reg, dev_priv->pipestat[pipe] | (mask >> 16)); + POSTING_READ(reg); + } +} + +void +i915_disable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask) +{ + if ((dev_priv->pipestat[pipe] & mask) != 0) { + u32 reg = PIPESTAT(pipe); + + dev_priv->pipestat[pipe] &= ~mask; + I915_WRITE(reg, dev_priv->pipestat[pipe]); + POSTING_READ(reg); + } +} + +/** + * intel_enable_asle - enable ASLE interrupt for OpRegion + */ +void intel_enable_asle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long irqflags; + + /* FIXME: opregion/asle for VLV */ + if (IS_VALLEYVIEW(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + + if (HAS_PCH_SPLIT(dev)) + ironlake_enable_display_irq(dev_priv, DE_GSE); + else { + i915_enable_pipestat(dev_priv, 1, + PIPE_LEGACY_BLC_EVENT_ENABLE); + if (INTEL_INFO(dev)->gen >= 4) + i915_enable_pipestat(dev_priv, 0, + PIPE_LEGACY_BLC_EVENT_ENABLE); + } + + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +/** + * i915_pipe_enabled - check if a pipe is enabled + * @dev: DRM device + * @pipe: pipe to check + * + * Reading certain registers when the pipe is disabled can hang the chip. + * Use this routine to make sure the PLL is running and the pipe is active + * before reading such registers if unsure. + */ +static int +i915_pipe_enabled(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + return I915_READ(PIPECONF(cpu_transcoder)) & PIPECONF_ENABLE; +} + +/* Called from drm generic code, passed a 'crtc', which + * we use as a pipe index + */ +static u32 i915_get_vblank_counter(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long high_frame; + unsigned long low_frame; + u32 high1, high2, low; + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get vblank count for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + high_frame = PIPEFRAME(pipe); + low_frame = PIPEFRAMEPIXEL(pipe); + + /* + * High & low register fields aren't synchronized, so make sure + * we get a low value that's stable across two reads of the high + * register. + */ + do { + high1 = I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK; + low = I915_READ(low_frame) & PIPE_FRAME_LOW_MASK; + high2 = I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK; + } while (high1 != high2); + + high1 >>= PIPE_FRAME_HIGH_SHIFT; + low >>= PIPE_FRAME_LOW_SHIFT; + return (high1 << 8) | low; +} + +static u32 gm45_get_vblank_counter(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int reg = PIPE_FRMCOUNT_GM45(pipe); + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get vblank count for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + return I915_READ(reg); +} + +static int i915_get_crtc_scanoutpos(struct drm_device *dev, int pipe, + int *vpos, int *hpos) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 vbl = 0, position = 0; + int vbl_start, vbl_end, htotal, vtotal; + bool in_vbl = true; + int ret = 0; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get scanoutpos for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + /* Get vtotal. */ + vtotal = 1 + ((I915_READ(VTOTAL(cpu_transcoder)) >> 16) & 0x1fff); + + if (INTEL_INFO(dev)->gen >= 4) { + /* No obvious pixelcount register. Only query vertical + * scanout position from Display scan line register. + */ + position = I915_READ(PIPEDSL(pipe)); + + /* Decode into vertical scanout position. Don't have + * horizontal scanout position. + */ + *vpos = position & 0x1fff; + *hpos = 0; + } else { + /* Have access to pixelcount since start of frame. + * We can split this into vertical and horizontal + * scanout position. + */ + position = (I915_READ(PIPEFRAMEPIXEL(pipe)) & PIPE_PIXEL_MASK) >> PIPE_PIXEL_SHIFT; + + htotal = 1 + ((I915_READ(HTOTAL(cpu_transcoder)) >> 16) & 0x1fff); + *vpos = position / htotal; + *hpos = position - (*vpos * htotal); + } + + /* Query vblank area. */ + vbl = I915_READ(VBLANK(cpu_transcoder)); + + /* Test position against vblank region. */ + vbl_start = vbl & 0x1fff; + vbl_end = (vbl >> 16) & 0x1fff; + + if ((*vpos < vbl_start) || (*vpos > vbl_end)) + in_vbl = false; + + /* Inside "upper part" of vblank area? Apply corrective offset: */ + if (in_vbl && (*vpos >= vbl_start)) + *vpos = *vpos - vtotal; + + /* Readouts valid? */ + if (vbl > 0) + ret |= DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_ACCURATE; + + /* In vblank? */ + if (in_vbl) + ret |= DRM_SCANOUTPOS_INVBL; + + return ret; +} + +static int i915_get_vblank_timestamp(struct drm_device *dev, int pipe, + int *max_error, + struct timeval *vblank_time, + unsigned flags) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + + if (pipe < 0 || pipe >= dev_priv->num_pipe) { + DRM_ERROR("Invalid crtc %d\n", pipe); + return -EINVAL; + } + + /* Get drm_crtc to timestamp: */ + crtc = intel_get_crtc_for_pipe(dev, pipe); + if (crtc == NULL) { + DRM_ERROR("Invalid crtc %d\n", pipe); + return -EINVAL; + } + + if (!crtc->enabled) { + DRM_DEBUG_KMS("crtc %d is disabled\n", pipe); + return -EBUSY; + } + + /* Helper routine in DRM core does all the work: */ + return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error, + vblank_time, flags, + crtc); +} + +/* + * Handle hotplug events outside the interrupt handler proper. + */ +static void i915_hotplug_work_func(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + hotplug_work); + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + + mutex_lock(&mode_config->mutex); + DRM_DEBUG_KMS("running encoder hotplug functions\n"); + + list_for_each_entry(encoder, &mode_config->encoder_list, base.head) + if (encoder->hot_plug) + encoder->hot_plug(encoder); + + mutex_unlock(&mode_config->mutex); + + /* Just fire off a uevent and let userspace tell us what to do */ + drm_helper_hpd_irq_event(dev); +} + +/* defined intel_pm.c */ +extern spinlock_t mchdev_lock; + +static void ironlake_handle_rps_change(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 busy_up, busy_down, max_avg, min_avg; + u8 new_delay; + unsigned long flags; + + spin_lock_irqsave(&mchdev_lock, flags); + + I915_WRITE16(MEMINTRSTS, I915_READ(MEMINTRSTS)); + + new_delay = dev_priv->ips.cur_delay; + + I915_WRITE16(MEMINTRSTS, MEMINT_EVAL_CHG); + busy_up = I915_READ(RCPREVBSYTUPAVG); + busy_down = I915_READ(RCPREVBSYTDNAVG); + max_avg = I915_READ(RCBMAXAVG); + min_avg = I915_READ(RCBMINAVG); + + /* Handle RCS change request from hw */ + if (busy_up > max_avg) { + if (dev_priv->ips.cur_delay != dev_priv->ips.max_delay) + new_delay = dev_priv->ips.cur_delay - 1; + if (new_delay < dev_priv->ips.max_delay) + new_delay = dev_priv->ips.max_delay; + } else if (busy_down < min_avg) { + if (dev_priv->ips.cur_delay != dev_priv->ips.min_delay) + new_delay = dev_priv->ips.cur_delay + 1; + if (new_delay > dev_priv->ips.min_delay) + new_delay = dev_priv->ips.min_delay; + } + + if (ironlake_set_drps(dev, new_delay)) + dev_priv->ips.cur_delay = new_delay; + + spin_unlock_irqrestore(&mchdev_lock, flags); + + return; +} + +static void notify_ring(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (ring->obj == NULL) + return; + + trace_i915_gem_request_complete(ring, ring->get_seqno(ring, false)); + + wake_up_all(&ring->irq_queue); + if (i915_enable_hangcheck) { + dev_priv->hangcheck_count = 0; + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); + } +} + +static void gen6_pm_rps_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + rps.work); + u32 pm_iir, pm_imr; + u8 new_delay; + + spin_lock_irq(&dev_priv->rps.lock); + pm_iir = dev_priv->rps.pm_iir; + dev_priv->rps.pm_iir = 0; + pm_imr = I915_READ(GEN6_PMIMR); + I915_WRITE(GEN6_PMIMR, 0); + spin_unlock_irq(&dev_priv->rps.lock); + + if ((pm_iir & GEN6_PM_DEFERRED_EVENTS) == 0) + return; + + mutex_lock(&dev_priv->rps.hw_lock); + + if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) + new_delay = dev_priv->rps.cur_delay + 1; + else + new_delay = dev_priv->rps.cur_delay - 1; + + /* sysfs frequency interfaces may have snuck in while servicing the + * interrupt + */ + if (!(new_delay > dev_priv->rps.max_delay || + new_delay < dev_priv->rps.min_delay)) { + gen6_set_rps(dev_priv->dev, new_delay); + } + + mutex_unlock(&dev_priv->rps.hw_lock); +} + + +/** + * ivybridge_parity_work - Workqueue called when a parity error interrupt + * occurred. + * @work: workqueue struct + * + * Doesn't actually do anything except notify userspace. As a consequence of + * this event, userspace should try to remap the bad rows since statistically + * it is likely the same row is more likely to go bad again. + */ +static void ivybridge_parity_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + l3_parity.error_work); + u32 error_status, row, bank, subbank; + char *parity_event[5]; + uint32_t misccpctl; + unsigned long flags; + + /* We must turn off DOP level clock gating to access the L3 registers. + * In order to prevent a get/put style interface, acquire struct mutex + * any time we access those registers. + */ + mutex_lock(&dev_priv->dev->struct_mutex); + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + error_status = I915_READ(GEN7_L3CDERRST1); + row = GEN7_PARITY_ERROR_ROW(error_status); + bank = GEN7_PARITY_ERROR_BANK(error_status); + subbank = GEN7_PARITY_ERROR_SUBBANK(error_status); + + I915_WRITE(GEN7_L3CDERRST1, GEN7_PARITY_ERROR_VALID | + GEN7_L3CDERRST1_ENABLE); + POSTING_READ(GEN7_L3CDERRST1); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask &= ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + mutex_unlock(&dev_priv->dev->struct_mutex); + + parity_event[0] = "L3_PARITY_ERROR=1"; + parity_event[1] = kasprintf(GFP_KERNEL, "ROW=%d", row); + parity_event[2] = kasprintf(GFP_KERNEL, "BANK=%d", bank); + parity_event[3] = kasprintf(GFP_KERNEL, "SUBBANK=%d", subbank); + parity_event[4] = NULL; + + kobject_uevent_env(&dev_priv->dev->primary->kdev.kobj, + KOBJ_CHANGE, parity_event); + + DRM_DEBUG("Parity error: Row = %d, Bank = %d, Sub bank = %d.\n", + row, bank, subbank); + + kfree(parity_event[3]); + kfree(parity_event[2]); + kfree(parity_event[1]); +} + +static void ivybridge_handle_parity_error(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long flags; + + if (!HAS_L3_GPU_CACHE(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask |= GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + queue_work(dev_priv->wq, &dev_priv->l3_parity.error_work); +} + +static void snb_gt_irq_handler(struct drm_device *dev, + struct drm_i915_private *dev_priv, + u32 gt_iir) +{ + + if (gt_iir & (GEN6_RENDER_USER_INTERRUPT | + GEN6_RENDER_PIPE_CONTROL_NOTIFY_INTERRUPT)) + notify_ring(dev, &dev_priv->ring[RCS]); + if (gt_iir & GEN6_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); + if (gt_iir & GEN6_BLITTER_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[BCS]); + + if (gt_iir & (GT_GEN6_BLT_CS_ERROR_INTERRUPT | + GT_GEN6_BSD_CS_ERROR_INTERRUPT | + GT_RENDER_CS_ERROR_INTERRUPT)) { + DRM_ERROR("GT error interrupt 0x%08x\n", gt_iir); + i915_handle_error(dev, false); + } + + if (gt_iir & GT_GEN7_L3_PARITY_ERROR_INTERRUPT) + ivybridge_handle_parity_error(dev); +} + +static void gen6_queue_rps_work(struct drm_i915_private *dev_priv, + u32 pm_iir) +{ + unsigned long flags; + + /* + * IIR bits should never already be set because IMR should + * prevent an interrupt from being shown in IIR. The warning + * displays a case where we've unsafely cleared + * dev_priv->rps.pm_iir. Although missing an interrupt of the same + * type is not a problem, it displays a problem in the logic. + * + * The mask bit in IMR is cleared by dev_priv->rps.work. + */ + + spin_lock_irqsave(&dev_priv->rps.lock, flags); + dev_priv->rps.pm_iir |= pm_iir; + I915_WRITE(GEN6_PMIMR, dev_priv->rps.pm_iir); + POSTING_READ(GEN6_PMIMR); + spin_unlock_irqrestore(&dev_priv->rps.lock, flags); + + queue_work(dev_priv->wq, &dev_priv->rps.work); +} + +static irqreturn_t valleyview_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, gt_iir, pm_iir; + irqreturn_t ret = IRQ_NONE; + unsigned long irqflags; + int pipe; + u32 pipe_stats[I915_MAX_PIPES]; + bool blc_event; + + atomic_inc(&dev_priv->irq_received); + + while (true) { + iir = I915_READ(VLV_IIR); + gt_iir = I915_READ(GTIIR); + pm_iir = I915_READ(GEN6_PMIIR); + + if (gt_iir == 0 && pm_iir == 0 && iir == 0) + goto out; + + ret = IRQ_HANDLED; + + snb_gt_irq_handler(dev, dev_priv, gt_iir); + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + for_each_pipe(pipe) { + if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS) + drm_handle_vblank(dev, pipe); + + if (pipe_stats[pipe] & PLANE_FLIPDONE_INT_STATUS_VLV) { + intel_prepare_page_flip(dev, pipe); + intel_finish_page_flip(dev, pipe); + } + } + + /* Consume port. Then clear IIR or we'll miss events */ + if (iir & I915_DISPLAY_PORT_INTERRUPT) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + I915_READ(PORT_HOTPLUG_STAT); + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + + if (pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + + I915_WRITE(GTIIR, gt_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + I915_WRITE(VLV_IIR, iir); + } + +out: + return ret; +} + +static void ibx_irq_handler(struct drm_device *dev, u32 pch_iir) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (pch_iir & SDE_HOTPLUG_MASK) + queue_work(dev_priv->wq, &dev_priv->hotplug_work); + + if (pch_iir & SDE_AUDIO_POWER_MASK) + DRM_DEBUG_DRIVER("PCH audio power change on port %d\n", + (pch_iir & SDE_AUDIO_POWER_MASK) >> + SDE_AUDIO_POWER_SHIFT); + + if (pch_iir & SDE_GMBUS) + DRM_DEBUG_DRIVER("PCH GMBUS interrupt\n"); + + if (pch_iir & SDE_AUDIO_HDCP_MASK) + DRM_DEBUG_DRIVER("PCH HDCP audio interrupt\n"); + + if (pch_iir & SDE_AUDIO_TRANS_MASK) + DRM_DEBUG_DRIVER("PCH transcoder audio interrupt\n"); + + if (pch_iir & SDE_POISON) + DRM_ERROR("PCH poison interrupt\n"); + + if (pch_iir & SDE_FDI_MASK) + for_each_pipe(pipe) + DRM_DEBUG_DRIVER(" pipe %c FDI IIR: 0x%08x\n", + pipe_name(pipe), + I915_READ(FDI_RX_IIR(pipe))); + + if (pch_iir & (SDE_TRANSB_CRC_DONE | SDE_TRANSA_CRC_DONE)) + DRM_DEBUG_DRIVER("PCH transcoder CRC done interrupt\n"); + + if (pch_iir & (SDE_TRANSB_CRC_ERR | SDE_TRANSA_CRC_ERR)) + DRM_DEBUG_DRIVER("PCH transcoder CRC error interrupt\n"); + + if (pch_iir & SDE_TRANSB_FIFO_UNDER) + DRM_DEBUG_DRIVER("PCH transcoder B underrun interrupt\n"); + if (pch_iir & SDE_TRANSA_FIFO_UNDER) + DRM_DEBUG_DRIVER("PCH transcoder A underrun interrupt\n"); +} + +static void cpt_irq_handler(struct drm_device *dev, u32 pch_iir) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (pch_iir & SDE_HOTPLUG_MASK_CPT) + queue_work(dev_priv->wq, &dev_priv->hotplug_work); + + if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) + DRM_DEBUG_DRIVER("PCH audio power change on port %d\n", + (pch_iir & SDE_AUDIO_POWER_MASK_CPT) >> + SDE_AUDIO_POWER_SHIFT_CPT); + + if (pch_iir & SDE_AUX_MASK_CPT) + DRM_DEBUG_DRIVER("AUX channel interrupt\n"); + + if (pch_iir & SDE_GMBUS_CPT) + DRM_DEBUG_DRIVER("PCH GMBUS interrupt\n"); + + if (pch_iir & SDE_AUDIO_CP_REQ_CPT) + DRM_DEBUG_DRIVER("Audio CP request interrupt\n"); + + if (pch_iir & SDE_AUDIO_CP_CHG_CPT) + DRM_DEBUG_DRIVER("Audio CP change interrupt\n"); + + if (pch_iir & SDE_FDI_MASK_CPT) + for_each_pipe(pipe) + DRM_DEBUG_DRIVER(" pipe %c FDI IIR: 0x%08x\n", + pipe_name(pipe), + I915_READ(FDI_RX_IIR(pipe))); +} + +static irqreturn_t ivybridge_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 de_iir, gt_iir, de_ier, pm_iir; + irqreturn_t ret = IRQ_NONE; + int i; + + atomic_inc(&dev_priv->irq_received); + + /* disable master interrupt before clearing iir */ + de_ier = I915_READ(DEIER); + I915_WRITE(DEIER, de_ier & ~DE_MASTER_IRQ_CONTROL); + + gt_iir = I915_READ(GTIIR); + if (gt_iir) { + snb_gt_irq_handler(dev, dev_priv, gt_iir); + I915_WRITE(GTIIR, gt_iir); + ret = IRQ_HANDLED; + } + + de_iir = I915_READ(DEIIR); + if (de_iir) { + if (de_iir & DE_GSE_IVB) + intel_opregion_gse_intr(dev); + + for (i = 0; i < 3; i++) { + if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) + drm_handle_vblank(dev, i); + if (de_iir & (DE_PLANEA_FLIP_DONE_IVB << (5 * i))) { + intel_prepare_page_flip(dev, i); + intel_finish_page_flip_plane(dev, i); + } + } + + /* check event from PCH */ + if (de_iir & DE_PCH_EVENT_IVB) { + u32 pch_iir = I915_READ(SDEIIR); + + cpt_irq_handler(dev, pch_iir); + + /* clear PCH hotplug event before clear CPU irq */ + I915_WRITE(SDEIIR, pch_iir); + } + + I915_WRITE(DEIIR, de_iir); + ret = IRQ_HANDLED; + } + + pm_iir = I915_READ(GEN6_PMIIR); + if (pm_iir) { + if (pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + ret = IRQ_HANDLED; + } + + I915_WRITE(DEIER, de_ier); + POSTING_READ(DEIER); + + return ret; +} + +static void ilk_gt_irq_handler(struct drm_device *dev, + struct drm_i915_private *dev_priv, + u32 gt_iir) +{ + if (gt_iir & (GT_USER_INTERRUPT | GT_PIPE_NOTIFY)) + notify_ring(dev, &dev_priv->ring[RCS]); + if (gt_iir & GT_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); +} + +static irqreturn_t ironlake_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int ret = IRQ_NONE; + u32 de_iir, gt_iir, de_ier, pch_iir, pm_iir; + + atomic_inc(&dev_priv->irq_received); + + /* disable master interrupt before clearing iir */ + de_ier = I915_READ(DEIER); + I915_WRITE(DEIER, de_ier & ~DE_MASTER_IRQ_CONTROL); + POSTING_READ(DEIER); + + de_iir = I915_READ(DEIIR); + gt_iir = I915_READ(GTIIR); + pch_iir = I915_READ(SDEIIR); + pm_iir = I915_READ(GEN6_PMIIR); + + if (de_iir == 0 && gt_iir == 0 && pch_iir == 0 && + (!IS_GEN6(dev) || pm_iir == 0)) + goto done; + + ret = IRQ_HANDLED; + + if (IS_GEN5(dev)) + ilk_gt_irq_handler(dev, dev_priv, gt_iir); + else + snb_gt_irq_handler(dev, dev_priv, gt_iir); + + if (de_iir & DE_GSE) + intel_opregion_gse_intr(dev); + + if (de_iir & DE_PIPEA_VBLANK) + drm_handle_vblank(dev, 0); + + if (de_iir & DE_PIPEB_VBLANK) + drm_handle_vblank(dev, 1); + + if (de_iir & DE_PLANEA_FLIP_DONE) { + intel_prepare_page_flip(dev, 0); + intel_finish_page_flip_plane(dev, 0); + } + + if (de_iir & DE_PLANEB_FLIP_DONE) { + intel_prepare_page_flip(dev, 1); + intel_finish_page_flip_plane(dev, 1); + } + + /* check event from PCH */ + if (de_iir & DE_PCH_EVENT) { + if (HAS_PCH_CPT(dev)) + cpt_irq_handler(dev, pch_iir); + else + ibx_irq_handler(dev, pch_iir); + } + + if (IS_GEN5(dev) && de_iir & DE_PCU_EVENT) + ironlake_handle_rps_change(dev); + + if (IS_GEN6(dev) && pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + + /* should clear PCH hotplug event before clear CPU irq */ + I915_WRITE(SDEIIR, pch_iir); + I915_WRITE(GTIIR, gt_iir); + I915_WRITE(DEIIR, de_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + +done: + I915_WRITE(DEIER, de_ier); + POSTING_READ(DEIER); + + return ret; +} + +/** + * i915_error_work_func - do process context error handling work + * @work: work struct + * + * Fire an error uevent so userspace can see that a hang or error + * was detected. + */ +static void i915_error_work_func(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + error_work); + struct drm_device *dev = dev_priv->dev; + char *error_event[] = { "ERROR=1", NULL }; + char *reset_event[] = { "RESET=1", NULL }; + char *reset_done_event[] = { "ERROR=0", NULL }; + + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, error_event); + + if (atomic_read(&dev_priv->mm.wedged)) { + DRM_DEBUG_DRIVER("resetting chip\n"); + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_event); + if (!i915_reset(dev)) { + atomic_set(&dev_priv->mm.wedged, 0); + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_done_event); + } + complete_all(&dev_priv->error_completion); + } +} + +/* NB: please notice the memset */ +static void i915_get_extra_instdone(struct drm_device *dev, + uint32_t *instdone) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + memset(instdone, 0, sizeof(*instdone) * I915_NUM_INSTDONE_REG); + + switch(INTEL_INFO(dev)->gen) { + case 2: + case 3: + instdone[0] = I915_READ(INSTDONE); + break; + case 4: + case 5: + case 6: + instdone[0] = I915_READ(INSTDONE_I965); + instdone[1] = I915_READ(INSTDONE1); + break; + default: + WARN_ONCE(1, "Unsupported platform\n"); + case 7: + instdone[0] = I915_READ(GEN7_INSTDONE_1); + instdone[1] = I915_READ(GEN7_SC_INSTDONE); + instdone[2] = I915_READ(GEN7_SAMPLER_INSTDONE); + instdone[3] = I915_READ(GEN7_ROW_INSTDONE); + break; + } +} + +#ifdef CONFIG_DEBUG_FS +static struct drm_i915_error_object * +i915_error_object_create(struct drm_i915_private *dev_priv, + struct drm_i915_gem_object *src) +{ + struct drm_i915_error_object *dst; + int i, count; + u32 reloc_offset; + + if (src == NULL || src->pages == NULL) + return NULL; + + count = src->base.size / PAGE_SIZE; + + dst = kmalloc(sizeof(*dst) + count * sizeof(u32 *), GFP_ATOMIC); + if (dst == NULL) + return NULL; + + reloc_offset = src->gtt_offset; + for (i = 0; i < count; i++) { + unsigned long flags; + void *d; + + d = kmalloc(PAGE_SIZE, GFP_ATOMIC); + if (d == NULL) + goto unwind; + + local_irq_save(flags); + if (reloc_offset < dev_priv->mm.gtt_mappable_end && + src->has_global_gtt_mapping) { + void __iomem *s; + + /* Simply ignore tiling or any overlapping fence. + * It's part of the error state, and this hopefully + * captures what the GPU read. + */ + + s = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + reloc_offset); + memcpy_fromio(d, s, PAGE_SIZE); + io_mapping_unmap_atomic(s); + } else { + struct page *page; + void *s; + + page = i915_gem_object_get_page(src, i); + + drm_clflush_pages(&page, 1); + + s = kmap_atomic(page); + memcpy(d, s, PAGE_SIZE); + kunmap_atomic(s); + + drm_clflush_pages(&page, 1); + } + local_irq_restore(flags); + + dst->pages[i] = d; + + reloc_offset += PAGE_SIZE; + } + dst->page_count = count; + dst->gtt_offset = src->gtt_offset; + + return dst; + +unwind: + while (i--) + kfree(dst->pages[i]); + kfree(dst); + return NULL; +} + +static void +i915_error_object_free(struct drm_i915_error_object *obj) +{ + int page; + + if (obj == NULL) + return; + + for (page = 0; page < obj->page_count; page++) + kfree(obj->pages[page]); + + kfree(obj); +} + +void +i915_error_state_free(struct kref *error_ref) +{ + struct drm_i915_error_state *error = container_of(error_ref, + typeof(*error), ref); + int i; + + for (i = 0; i < ARRAY_SIZE(error->ring); i++) { + i915_error_object_free(error->ring[i].batchbuffer); + i915_error_object_free(error->ring[i].ringbuffer); + kfree(error->ring[i].requests); + } + + kfree(error->active_bo); + kfree(error->overlay); + kfree(error); +} +static void capture_bo(struct drm_i915_error_buffer *err, + struct drm_i915_gem_object *obj) +{ + err->size = obj->base.size; + err->name = obj->base.name; + err->rseqno = obj->last_read_seqno; + err->wseqno = obj->last_write_seqno; + err->gtt_offset = obj->gtt_offset; + err->read_domains = obj->base.read_domains; + err->write_domain = obj->base.write_domain; + err->fence_reg = obj->fence_reg; + err->pinned = 0; + if (obj->pin_count > 0) + err->pinned = 1; + if (obj->user_pin_count > 0) + err->pinned = -1; + err->tiling = obj->tiling_mode; + err->dirty = obj->dirty; + err->purgeable = obj->madv != I915_MADV_WILLNEED; + err->ring = obj->ring ? obj->ring->id : -1; + err->cache_level = obj->cache_level; +} + +static u32 capture_active_bo(struct drm_i915_error_buffer *err, + int count, struct list_head *head) +{ + struct drm_i915_gem_object *obj; + int i = 0; + + list_for_each_entry(obj, head, mm_list) { + capture_bo(err++, obj); + if (++i == count) + break; + } + + return i; +} + +static u32 capture_pinned_bo(struct drm_i915_error_buffer *err, + int count, struct list_head *head) +{ + struct drm_i915_gem_object *obj; + int i = 0; + + list_for_each_entry(obj, head, gtt_list) { + if (obj->pin_count == 0) + continue; + + capture_bo(err++, obj); + if (++i == count) + break; + } + + return i; +} + +static void i915_gem_record_fences(struct drm_device *dev, + struct drm_i915_error_state *error) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + error->fence[i] = I915_READ64(FENCE_REG_SANDYBRIDGE_0 + (i * 8)); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + error->fence[i] = I915_READ64(FENCE_REG_965_0 + (i * 8)); + break; + case 3: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + error->fence[i+8] = I915_READ(FENCE_REG_945_8 + (i * 4)); + case 2: + for (i = 0; i < 8; i++) + error->fence[i] = I915_READ(FENCE_REG_830_0 + (i * 4)); + break; + + } +} + +static struct drm_i915_error_object * +i915_error_first_batchbuffer(struct drm_i915_private *dev_priv, + struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + u32 seqno; + + if (!ring->get_seqno) + return NULL; + + if (HAS_BROKEN_CS_TLB(dev_priv->dev)) { + u32 acthd = I915_READ(ACTHD); + + if (WARN_ON(ring->id != RCS)) + return NULL; + + obj = ring->private; + if (acthd >= obj->gtt_offset && + acthd < obj->gtt_offset + obj->base.size) + return i915_error_object_create(dev_priv, obj); + } + + seqno = ring->get_seqno(ring, false); + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) { + if (obj->ring != ring) + continue; + + if (i915_seqno_passed(seqno, obj->last_read_seqno)) + continue; + + if ((obj->base.read_domains & I915_GEM_DOMAIN_COMMAND) == 0) + continue; + + /* We need to copy these to an anonymous buffer as the simplest + * method to avoid being overwritten by userspace. + */ + return i915_error_object_create(dev_priv, obj); + } + + return NULL; +} + +static void i915_record_ring_state(struct drm_device *dev, + struct drm_i915_error_state *error, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen >= 6) { + error->rc_psmi[ring->id] = I915_READ(ring->mmio_base + 0x50); + error->fault_reg[ring->id] = I915_READ(RING_FAULT_REG(ring)); + error->semaphore_mboxes[ring->id][0] + = I915_READ(RING_SYNC_0(ring->mmio_base)); + error->semaphore_mboxes[ring->id][1] + = I915_READ(RING_SYNC_1(ring->mmio_base)); + error->semaphore_seqno[ring->id][0] = ring->sync_seqno[0]; + error->semaphore_seqno[ring->id][1] = ring->sync_seqno[1]; + } + + if (INTEL_INFO(dev)->gen >= 4) { + error->faddr[ring->id] = I915_READ(RING_DMA_FADD(ring->mmio_base)); + error->ipeir[ring->id] = I915_READ(RING_IPEIR(ring->mmio_base)); + error->ipehr[ring->id] = I915_READ(RING_IPEHR(ring->mmio_base)); + error->instdone[ring->id] = I915_READ(RING_INSTDONE(ring->mmio_base)); + error->instps[ring->id] = I915_READ(RING_INSTPS(ring->mmio_base)); + if (ring->id == RCS) + error->bbaddr = I915_READ64(BB_ADDR); + } else { + error->faddr[ring->id] = I915_READ(DMA_FADD_I8XX); + error->ipeir[ring->id] = I915_READ(IPEIR); + error->ipehr[ring->id] = I915_READ(IPEHR); + error->instdone[ring->id] = I915_READ(INSTDONE); + } + + error->waiting[ring->id] = waitqueue_active(&ring->irq_queue); + error->instpm[ring->id] = I915_READ(RING_INSTPM(ring->mmio_base)); + error->seqno[ring->id] = ring->get_seqno(ring, false); + error->acthd[ring->id] = intel_ring_get_active_head(ring); + error->head[ring->id] = I915_READ_HEAD(ring); + error->tail[ring->id] = I915_READ_TAIL(ring); + error->ctl[ring->id] = I915_READ_CTL(ring); + + error->cpu_ring_head[ring->id] = ring->head; + error->cpu_ring_tail[ring->id] = ring->tail; +} + +static void i915_gem_record_rings(struct drm_device *dev, + struct drm_i915_error_state *error) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + struct drm_i915_gem_request *request; + int i, count; + + for_each_ring(ring, dev_priv, i) { + i915_record_ring_state(dev, error, ring); + + error->ring[i].batchbuffer = + i915_error_first_batchbuffer(dev_priv, ring); + + error->ring[i].ringbuffer = + i915_error_object_create(dev_priv, ring->obj); + + count = 0; + list_for_each_entry(request, &ring->request_list, list) + count++; + + error->ring[i].num_requests = count; + error->ring[i].requests = + kmalloc(count*sizeof(struct drm_i915_error_request), + GFP_ATOMIC); + if (error->ring[i].requests == NULL) { + error->ring[i].num_requests = 0; + continue; + } + + count = 0; + list_for_each_entry(request, &ring->request_list, list) { + struct drm_i915_error_request *erq; + + erq = &error->ring[i].requests[count++]; + erq->seqno = request->seqno; + erq->jiffies = request->emitted_jiffies; + erq->tail = request->tail; + } + } +} + +/** + * i915_capture_error_state - capture an error record for later analysis + * @dev: drm device + * + * Should be called when an error is detected (either a hang or an error + * interrupt) to capture error state from the time of the error. Fills + * out a structure which becomes available in debugfs for user level tools + * to pick up. + */ +static void i915_capture_error_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct drm_i915_error_state *error; + unsigned long flags; + int i, pipe; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error = dev_priv->first_error; + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + if (error) + return; + + /* Account for pipe specific data like PIPE*STAT */ + error = kzalloc(sizeof(*error), GFP_ATOMIC); + if (!error) { + DRM_DEBUG_DRIVER("out of memory, not capturing error state\n"); + return; + } + + DRM_INFO("capturing error event; look for more information in /debug/dri/%d/i915_error_state\n", + dev->primary->index); + + kref_init(&error->ref); + error->eir = I915_READ(EIR); + error->pgtbl_er = I915_READ(PGTBL_ER); + error->ccid = I915_READ(CCID); + + if (HAS_PCH_SPLIT(dev)) + error->ier = I915_READ(DEIER) | I915_READ(GTIER); + else if (IS_VALLEYVIEW(dev)) + error->ier = I915_READ(GTIER) | I915_READ(VLV_IER); + else if (IS_GEN2(dev)) + error->ier = I915_READ16(IER); + else + error->ier = I915_READ(IER); + + if (INTEL_INFO(dev)->gen >= 6) + error->derrmr = I915_READ(DERRMR); + + if (IS_VALLEYVIEW(dev)) + error->forcewake = I915_READ(FORCEWAKE_VLV); + else if (INTEL_INFO(dev)->gen >= 7) + error->forcewake = I915_READ(FORCEWAKE_MT); + else if (INTEL_INFO(dev)->gen == 6) + error->forcewake = I915_READ(FORCEWAKE); + + for_each_pipe(pipe) + error->pipestat[pipe] = I915_READ(PIPESTAT(pipe)); + + if (INTEL_INFO(dev)->gen >= 6) { + error->error = I915_READ(ERROR_GEN6); + error->done_reg = I915_READ(DONE_REG); + } + + if (INTEL_INFO(dev)->gen == 7) + error->err_int = I915_READ(GEN7_ERR_INT); + + i915_get_extra_instdone(dev, error->extra_instdone); + + i915_gem_record_fences(dev, error); + i915_gem_record_rings(dev, error); + + /* Record buffers on the active and pinned lists. */ + error->active_bo = NULL; + error->pinned_bo = NULL; + + i = 0; + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) + i++; + error->active_bo_count = i; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) + if (obj->pin_count) + i++; + error->pinned_bo_count = i - error->active_bo_count; + + error->active_bo = NULL; + error->pinned_bo = NULL; + if (i) { + error->active_bo = kmalloc(sizeof(*error->active_bo)*i, + GFP_ATOMIC); + if (error->active_bo) + error->pinned_bo = + error->active_bo + error->active_bo_count; + } + + if (error->active_bo) + error->active_bo_count = + capture_active_bo(error->active_bo, + error->active_bo_count, + &dev_priv->mm.active_list); + + if (error->pinned_bo) + error->pinned_bo_count = + capture_pinned_bo(error->pinned_bo, + error->pinned_bo_count, + &dev_priv->mm.bound_list); + + do_gettimeofday(&error->time); + + error->overlay = intel_overlay_capture_error_state(dev); + error->display = intel_display_capture_error_state(dev); + + spin_lock_irqsave(&dev_priv->error_lock, flags); + if (dev_priv->first_error == NULL) { + dev_priv->first_error = error; + error = NULL; + } + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + if (error) + i915_error_state_free(&error->ref); +} + +void i915_destroy_error_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_error_state *error; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error = dev_priv->first_error; + dev_priv->first_error = NULL; + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + if (error) + kref_put(&error->ref, i915_error_state_free); +} +#else +#define i915_capture_error_state(x) +#endif + +static void i915_report_and_clear_eir(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t instdone[I915_NUM_INSTDONE_REG]; + u32 eir = I915_READ(EIR); + int pipe, i; + + if (!eir) + return; + + pr_err("render error detected, EIR: 0x%08x\n", eir); + + i915_get_extra_instdone(dev, instdone); + + if (IS_G4X(dev)) { + if (eir & (GM45_ERROR_MEM_PRIV | GM45_ERROR_CP_PRIV)) { + u32 ipeir = I915_READ(IPEIR_I965); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR_I965)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR_I965)); + for (i = 0; i < ARRAY_SIZE(instdone); i++) + pr_err(" INSTDONE_%d: 0x%08x\n", i, instdone[i]); + pr_err(" INSTPS: 0x%08x\n", I915_READ(INSTPS)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD_I965)); + I915_WRITE(IPEIR_I965, ipeir); + POSTING_READ(IPEIR_I965); + } + if (eir & GM45_ERROR_PAGE_TABLE) { + u32 pgtbl_err = I915_READ(PGTBL_ER); + pr_err("page table error\n"); + pr_err(" PGTBL_ER: 0x%08x\n", pgtbl_err); + I915_WRITE(PGTBL_ER, pgtbl_err); + POSTING_READ(PGTBL_ER); + } + } + + if (!IS_GEN2(dev)) { + if (eir & I915_ERROR_PAGE_TABLE) { + u32 pgtbl_err = I915_READ(PGTBL_ER); + pr_err("page table error\n"); + pr_err(" PGTBL_ER: 0x%08x\n", pgtbl_err); + I915_WRITE(PGTBL_ER, pgtbl_err); + POSTING_READ(PGTBL_ER); + } + } + + if (eir & I915_ERROR_MEMORY_REFRESH) { + pr_err("memory refresh error:\n"); + for_each_pipe(pipe) + pr_err("pipe %c stat: 0x%08x\n", + pipe_name(pipe), I915_READ(PIPESTAT(pipe))); + /* pipestat has already been acked */ + } + if (eir & I915_ERROR_INSTRUCTION) { + pr_err("instruction error\n"); + pr_err(" INSTPM: 0x%08x\n", I915_READ(INSTPM)); + for (i = 0; i < ARRAY_SIZE(instdone); i++) + pr_err(" INSTDONE_%d: 0x%08x\n", i, instdone[i]); + if (INTEL_INFO(dev)->gen < 4) { + u32 ipeir = I915_READ(IPEIR); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD)); + I915_WRITE(IPEIR, ipeir); + POSTING_READ(IPEIR); + } else { + u32 ipeir = I915_READ(IPEIR_I965); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR_I965)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR_I965)); + pr_err(" INSTPS: 0x%08x\n", I915_READ(INSTPS)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD_I965)); + I915_WRITE(IPEIR_I965, ipeir); + POSTING_READ(IPEIR_I965); + } + } + + I915_WRITE(EIR, eir); + POSTING_READ(EIR); + eir = I915_READ(EIR); + if (eir) { + /* + * some errors might have become stuck, + * mask them. + */ + DRM_ERROR("EIR stuck: 0x%08x, masking\n", eir); + I915_WRITE(EMR, I915_READ(EMR) | eir); + I915_WRITE(IIR, I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + } +} + +/** + * i915_handle_error - handle an error interrupt + * @dev: drm device + * + * Do some basic checking of regsiter state at error interrupt time and + * dump it to the syslog. Also call i915_capture_error_state() to make + * sure we get a record and make it available in debugfs. Fire a uevent + * so userspace knows something bad happened (should trigger collection + * of a ring dump etc.). + */ +void i915_handle_error(struct drm_device *dev, bool wedged) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + i915_capture_error_state(dev); + i915_report_and_clear_eir(dev); + + if (wedged) { + INIT_COMPLETION(dev_priv->error_completion); + atomic_set(&dev_priv->mm.wedged, 1); + + /* + * Wakeup waiting processes so they don't hang + */ + for_each_ring(ring, dev_priv, i) + wake_up_all(&ring->irq_queue); + } + + queue_work(dev_priv->wq, &dev_priv->error_work); +} + +static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_gem_object *obj; + struct intel_unpin_work *work; + unsigned long flags; + bool stall_detected; + + /* Ignore early vblank irqs */ + if (intel_crtc == NULL) + return; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + + if (work == NULL || + atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE || + !work->enable_stall_check) { + /* Either the pending flip IRQ arrived, or we're too early. Don't check */ + spin_unlock_irqrestore(&dev->event_lock, flags); + return; + } + + /* Potential stall - if we see that the flip has happened, assume a missed interrupt */ + obj = work->pending_flip_obj; + if (INTEL_INFO(dev)->gen >= 4) { + int dspsurf = DSPSURF(intel_crtc->plane); + stall_detected = I915_HI_DISPBASE(I915_READ(dspsurf)) == + obj->gtt_offset; + } else { + int dspaddr = DSPADDR(intel_crtc->plane); + stall_detected = I915_READ(dspaddr) == (obj->gtt_offset + + crtc->y * crtc->fb->pitches[0] + + crtc->x * crtc->fb->bits_per_pixel/8); + } + + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (stall_detected) { + DRM_DEBUG_DRIVER("Pageflip stall detected\n"); + intel_prepare_page_flip(dev, intel_crtc->plane); + } +} + +/* Called from drm generic code, passed 'crtc' which + * we use as a pipe index + */ +static int i915_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (INTEL_INFO(dev)->gen >= 4) + i915_enable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + else + i915_enable_pipestat(dev_priv, pipe, + PIPE_VBLANK_INTERRUPT_ENABLE); + + /* maintain vblank delivery even in deep C-states */ + if (dev_priv->info->gen == 3) + I915_WRITE(INSTPM, _MASKED_BIT_DISABLE(INSTPM_AGPBUSY_DIS)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int ironlake_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_enable_display_irq(dev_priv, (pipe == 0) ? + DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int ivybridge_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_enable_display_irq(dev_priv, + DE_PIPEA_VBLANK_IVB << (5 * pipe)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int valleyview_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + u32 imr; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + imr = I915_READ(VLV_IMR); + if (pipe == 0) + imr &= ~I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT; + else + imr &= ~I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + I915_WRITE(VLV_IMR, imr); + i915_enable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +/* Called from drm generic code, passed 'crtc' which + * we use as a pipe index + */ +static void i915_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (dev_priv->info->gen == 3) + I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_AGPBUSY_DIS)); + + i915_disable_pipestat(dev_priv, pipe, + PIPE_VBLANK_INTERRUPT_ENABLE | + PIPE_START_VBLANK_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void ironlake_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_disable_display_irq(dev_priv, (pipe == 0) ? + DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void ivybridge_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_disable_display_irq(dev_priv, + DE_PIPEA_VBLANK_IVB << (pipe * 5)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void valleyview_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + u32 imr; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_disable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + imr = I915_READ(VLV_IMR); + if (pipe == 0) + imr |= I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT; + else + imr |= I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + I915_WRITE(VLV_IMR, imr); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static u32 +ring_last_seqno(struct intel_ring_buffer *ring) +{ + return list_entry(ring->request_list.prev, + struct drm_i915_gem_request, list)->seqno; +} + +static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err) +{ + if (list_empty(&ring->request_list) || + i915_seqno_passed(ring->get_seqno(ring, false), + ring_last_seqno(ring))) { + /* Issue a wake-up to catch stuck h/w. */ + if (waitqueue_active(&ring->irq_queue)) { + DRM_ERROR("Hangcheck timer elapsed... %s idle\n", + ring->name); + wake_up_all(&ring->irq_queue); + *err = true; + } + return true; + } + return false; +} + +static bool kick_ring(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ_CTL(ring); + if (tmp & RING_WAIT) { + DRM_ERROR("Kicking stuck wait on %s\n", + ring->name); + I915_WRITE_CTL(ring, tmp); + return true; + } + return false; +} + +static bool i915_hangcheck_hung(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (dev_priv->hangcheck_count++ > 1) { + bool hung = true; + + DRM_ERROR("Hangcheck timer elapsed... GPU hung\n"); + i915_handle_error(dev, true); + + if (!IS_GEN2(dev)) { + struct intel_ring_buffer *ring; + int i; + + /* Is the chip hanging on a WAIT_FOR_EVENT? + * If so we can simply poke the RB_WAIT bit + * and break the hang. This should work on + * all but the second generation chipsets. + */ + for_each_ring(ring, dev_priv, i) + hung &= !kick_ring(ring); + } + + return hung; + } + + return false; +} + +/** + * This is called when the chip hasn't reported back with completed + * batchbuffers in a long time. The first time this is called we simply record + * ACTHD. If ACTHD hasn't changed by the time the hangcheck timer elapses + * again, we assume the chip is wedged and try to fix it. + */ +void i915_hangcheck_elapsed(unsigned long data) +{ + struct drm_device *dev = (struct drm_device *)data; + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t acthd[I915_NUM_RINGS], instdone[I915_NUM_INSTDONE_REG]; + struct intel_ring_buffer *ring; + bool err = false, idle; + int i; + + if (!i915_enable_hangcheck) + return; + + memset(acthd, 0, sizeof(acthd)); + idle = true; + for_each_ring(ring, dev_priv, i) { + idle &= i915_hangcheck_ring_idle(ring, &err); + acthd[i] = intel_ring_get_active_head(ring); + } + + /* If all work is done then ACTHD clearly hasn't advanced. */ + if (idle) { + if (err) { + if (i915_hangcheck_hung(dev)) + return; + + goto repeat; + } + + dev_priv->hangcheck_count = 0; + return; + } + + i915_get_extra_instdone(dev, instdone); + if (memcmp(dev_priv->last_acthd, acthd, sizeof(acthd)) == 0 && + memcmp(dev_priv->prev_instdone, instdone, sizeof(instdone)) == 0) { + if (i915_hangcheck_hung(dev)) + return; + } else { + dev_priv->hangcheck_count = 0; + + memcpy(dev_priv->last_acthd, acthd, sizeof(acthd)); + memcpy(dev_priv->prev_instdone, instdone, sizeof(instdone)); + } + +repeat: + /* Reset timer case chip hangs without another request being added */ + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); +} + +/* drm_dma.h hooks +*/ +static void ironlake_irq_preinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + atomic_set(&dev_priv->irq_received, 0); + + I915_WRITE(HWSTAM, 0xeffe); + + /* XXX hotplug from PCH */ + + I915_WRITE(DEIMR, 0xffffffff); + I915_WRITE(DEIER, 0x0); + POSTING_READ(DEIER); + + /* and GT */ + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + POSTING_READ(GTIER); + + /* south display irq */ + I915_WRITE(SDEIMR, 0xffffffff); + I915_WRITE(SDEIER, 0x0); + POSTING_READ(SDEIER); +} + +static void valleyview_irq_preinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + /* VLV magic */ + I915_WRITE(VLV_IMR, 0); + I915_WRITE(RING_IMR(RENDER_RING_BASE), 0); + I915_WRITE(RING_IMR(GEN6_BSD_RING_BASE), 0); + I915_WRITE(RING_IMR(BLT_RING_BASE), 0); + + /* and GT */ + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + POSTING_READ(GTIER); + + I915_WRITE(DPINVGTT, 0xff); + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IMR, 0xffffffff); + I915_WRITE(VLV_IER, 0x0); + POSTING_READ(VLV_IER); +} + +/* + * Enable digital hotplug on the PCH, and configure the DP short pulse + * duration to 2ms (which is the minimum in the Display Port spec) + * + * This register is the same on all known PCH chips. + */ + +static void ironlake_enable_pch_hotplug(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 hotplug; + + hotplug = I915_READ(PCH_PORT_HOTPLUG); + hotplug &= ~(PORTD_PULSE_DURATION_MASK|PORTC_PULSE_DURATION_MASK|PORTB_PULSE_DURATION_MASK); + hotplug |= PORTD_HOTPLUG_ENABLE | PORTD_PULSE_DURATION_2ms; + hotplug |= PORTC_HOTPLUG_ENABLE | PORTC_PULSE_DURATION_2ms; + hotplug |= PORTB_HOTPLUG_ENABLE | PORTB_PULSE_DURATION_2ms; + I915_WRITE(PCH_PORT_HOTPLUG, hotplug); +} + +static int ironlake_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + /* enable kind of interrupts always enabled */ + u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT | + DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE; + u32 render_irqs; + u32 hotplug_mask; + + dev_priv->irq_mask = ~display_mask; + + /* should always can generate irq */ + I915_WRITE(DEIIR, I915_READ(DEIIR)); + I915_WRITE(DEIMR, dev_priv->irq_mask); + I915_WRITE(DEIER, display_mask | DE_PIPEA_VBLANK | DE_PIPEB_VBLANK); + POSTING_READ(DEIER); + + dev_priv->gt_irq_mask = ~0; + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + if (IS_GEN6(dev)) + render_irqs = + GT_USER_INTERRUPT | + GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT; + else + render_irqs = + GT_USER_INTERRUPT | + GT_PIPE_NOTIFY | + GT_BSD_USER_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + if (HAS_PCH_CPT(dev)) { + hotplug_mask = (SDE_CRT_HOTPLUG_CPT | + SDE_PORTB_HOTPLUG_CPT | + SDE_PORTC_HOTPLUG_CPT | + SDE_PORTD_HOTPLUG_CPT); + } else { + hotplug_mask = (SDE_CRT_HOTPLUG | + SDE_PORTB_HOTPLUG | + SDE_PORTC_HOTPLUG | + SDE_PORTD_HOTPLUG | + SDE_AUX_MASK); + } + + dev_priv->pch_irq_mask = ~hotplug_mask; + + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); + I915_WRITE(SDEIMR, dev_priv->pch_irq_mask); + I915_WRITE(SDEIER, hotplug_mask); + POSTING_READ(SDEIER); + + ironlake_enable_pch_hotplug(dev); + + if (IS_IRONLAKE_M(dev)) { + /* Clear & enable PCU event interrupts */ + I915_WRITE(DEIIR, DE_PCU_EVENT); + I915_WRITE(DEIER, I915_READ(DEIER) | DE_PCU_EVENT); + ironlake_enable_display_irq(dev_priv, DE_PCU_EVENT); + } + + return 0; +} + +static int ivybridge_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + /* enable kind of interrupts always enabled */ + u32 display_mask = + DE_MASTER_IRQ_CONTROL | DE_GSE_IVB | DE_PCH_EVENT_IVB | + DE_PLANEC_FLIP_DONE_IVB | + DE_PLANEB_FLIP_DONE_IVB | + DE_PLANEA_FLIP_DONE_IVB; + u32 render_irqs; + u32 hotplug_mask; + + dev_priv->irq_mask = ~display_mask; + + /* should always can generate irq */ + I915_WRITE(DEIIR, I915_READ(DEIIR)); + I915_WRITE(DEIMR, dev_priv->irq_mask); + I915_WRITE(DEIER, + display_mask | + DE_PIPEC_VBLANK_IVB | + DE_PIPEB_VBLANK_IVB | + DE_PIPEA_VBLANK_IVB); + POSTING_READ(DEIER); + + dev_priv->gt_irq_mask = ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT | GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + hotplug_mask = (SDE_CRT_HOTPLUG_CPT | + SDE_PORTB_HOTPLUG_CPT | + SDE_PORTC_HOTPLUG_CPT | + SDE_PORTD_HOTPLUG_CPT); + dev_priv->pch_irq_mask = ~hotplug_mask; + + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); + I915_WRITE(SDEIMR, dev_priv->pch_irq_mask); + I915_WRITE(SDEIER, hotplug_mask); + POSTING_READ(SDEIER); + + ironlake_enable_pch_hotplug(dev); + + return 0; +} + +static int valleyview_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 enable_mask; + u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); + u32 pipestat_enable = PLANE_FLIP_DONE_INT_EN_VLV; + u32 render_irqs; + u16 msid; + + enable_mask = I915_DISPLAY_PORT_INTERRUPT; + enable_mask |= I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + + /* + *Leave vblank interrupts masked initially. enable/disable will + * toggle them based on usage. + */ + dev_priv->irq_mask = (~enable_mask) | + I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT | + I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + /* Hack for broken MSIs on VLV */ + pci_write_config_dword(dev_priv->dev->pdev, 0x94, 0xfee00000); + pci_read_config_word(dev->pdev, 0x98, &msid); + msid &= 0xff; /* mask out delivery bits */ + msid |= (1<<14); + pci_write_config_word(dev_priv->dev->pdev, 0x98, msid); + + I915_WRITE(VLV_IMR, dev_priv->irq_mask); + I915_WRITE(VLV_IER, enable_mask); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(PIPESTAT(0), 0xffff); + I915_WRITE(PIPESTAT(1), 0xffff); + POSTING_READ(VLV_IER); + + i915_enable_pipestat(dev_priv, 0, pipestat_enable); + i915_enable_pipestat(dev_priv, 1, pipestat_enable); + + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IIR, 0xffffffff); + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + /* ack & enable invalid PTE error interrupts */ +#if 0 /* FIXME: add support to irq handler for checking these bits */ + I915_WRITE(DPINVGTT, DPINVGTT_STATUS_MASK); + I915_WRITE(DPINVGTT, DPINVGTT_EN_MASK); +#endif + + I915_WRITE(VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); + /* Note HDMI and DP share bits */ + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + + return 0; +} + +static void valleyview_irq_uninstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (!dev_priv) + return; + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + + I915_WRITE(HWSTAM, 0xffffffff); + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IMR, 0xffffffff); + I915_WRITE(VLV_IER, 0x0); + POSTING_READ(VLV_IER); +} + +static void ironlake_irq_uninstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + if (!dev_priv) + return; + + I915_WRITE(HWSTAM, 0xffffffff); + + I915_WRITE(DEIMR, 0xffffffff); + I915_WRITE(DEIER, 0x0); + I915_WRITE(DEIIR, I915_READ(DEIIR)); + + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + I915_WRITE(GTIIR, I915_READ(GTIIR)); + + I915_WRITE(SDEIMR, 0xffffffff); + I915_WRITE(SDEIER, 0x0); + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); +} + +static void i8xx_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE16(IMR, 0xffff); + I915_WRITE16(IER, 0x0); + POSTING_READ16(IER); +} + +static int i8xx_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + I915_WRITE16(EMR, + ~(I915_ERROR_PAGE_TABLE | I915_ERROR_MEMORY_REFRESH)); + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = + ~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | + I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + I915_WRITE16(IMR, dev_priv->irq_mask); + + I915_WRITE16(IER, + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | + I915_USER_INTERRUPT); + POSTING_READ16(IER); + + return 0; +} + +static irqreturn_t i8xx_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u16 iir, new_iir; + u32 pipe_stats[2]; + unsigned long irqflags; + int irq_received; + int pipe; + u16 flip_mask = + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ16(IIR); + if (iir == 0) + return IRQ_NONE; + + while (iir & ~flip_mask) { + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = 1; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + I915_WRITE16(IIR, iir & ~flip_mask); + new_iir = I915_READ16(IIR); /* Flush posted writes */ + + i915_update_dri1_breadcrumb(dev); + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + + if (pipe_stats[0] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, 0)) { + if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) { + intel_prepare_page_flip(dev, 0); + intel_finish_page_flip(dev, 0); + flip_mask &= ~I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT; + } + } + + if (pipe_stats[1] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, 1)) { + if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) { + intel_prepare_page_flip(dev, 1); + intel_finish_page_flip(dev, 1); + flip_mask &= ~I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + } + } + + iir = new_iir; + } + + return IRQ_HANDLED; +} + +static void i8xx_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + for_each_pipe(pipe) { + /* Clear enable bits; then clear status bits */ + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(PIPESTAT(pipe), I915_READ(PIPESTAT(pipe))); + } + I915_WRITE16(IMR, 0xffff); + I915_WRITE16(IER, 0x0); + I915_WRITE16(IIR, I915_READ16(IIR)); +} + +static void i915_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + if (I915_HAS_HOTPLUG(dev)) { + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + } + + I915_WRITE16(HWSTAM, 0xeffe); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + POSTING_READ(IER); +} + +static int i915_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 enable_mask; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + I915_WRITE(EMR, ~(I915_ERROR_PAGE_TABLE | I915_ERROR_MEMORY_REFRESH)); + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = + ~(I915_ASLE_INTERRUPT | + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | + I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + + enable_mask = + I915_ASLE_INTERRUPT | + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT | + I915_USER_INTERRUPT; + + if (I915_HAS_HOTPLUG(dev)) { + /* Enable in IER... */ + enable_mask |= I915_DISPLAY_PORT_INTERRUPT; + /* and unmask in IMR */ + dev_priv->irq_mask &= ~I915_DISPLAY_PORT_INTERRUPT; + } + + I915_WRITE(IMR, dev_priv->irq_mask); + I915_WRITE(IER, enable_mask); + POSTING_READ(IER); + + if (I915_HAS_HOTPLUG(dev)) { + u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); + + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + /* Ignore TV since it's buggy */ + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + } + + intel_opregion_enable_asle(dev); + + return 0; +} + +static irqreturn_t i915_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, new_iir, pipe_stats[I915_MAX_PIPES]; + unsigned long irqflags; + u32 flip_mask = + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + u32 flip[2] = { + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT, + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT + }; + int pipe, ret = IRQ_NONE; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ(IIR); + do { + bool irq_received = (iir & ~flip_mask) != 0; + bool blc_event = false; + + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* Clear the PIPE*STAT regs before the IIR */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = true; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + if (!irq_received) + break; + + /* Consume port. Then clear IIR or we'll miss events */ + if ((I915_HAS_HOTPLUG(dev)) && + (iir & I915_DISPLAY_PORT_INTERRUPT)) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + POSTING_READ(PORT_HOTPLUG_STAT); + } + + I915_WRITE(IIR, iir & ~flip_mask); + new_iir = I915_READ(IIR); /* Flush posted writes */ + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + + for_each_pipe(pipe) { + int plane = pipe; + if (IS_MOBILE(dev)) + plane = !plane; + if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, pipe)) { + if (iir & flip[plane]) { + intel_prepare_page_flip(dev, plane); + intel_finish_page_flip(dev, pipe); + flip_mask &= ~flip[plane]; + } + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + } + + if (blc_event || (iir & I915_ASLE_INTERRUPT)) + intel_opregion_asle_intr(dev); + + /* With MSI, interrupts are only generated when iir + * transitions from zero to nonzero. If another bit got + * set while we were handling the existing iir bits, then + * we would never get another interrupt. + * + * This is fine on non-MSI as well, as if we hit this path + * we avoid exiting the interrupt handler only to generate + * another one. + * + * Note that for MSI this could cause a stray interrupt report + * if an interrupt landed in the time between writing IIR and + * the posting read. This should be rare enough to never + * trigger the 99% of 100,000 interrupts test for disabling + * stray interrupts. + */ + ret = IRQ_HANDLED; + iir = new_iir; + } while (iir & ~flip_mask); + + i915_update_dri1_breadcrumb(dev); + + return ret; +} + +static void i915_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (I915_HAS_HOTPLUG(dev)) { + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + } + + I915_WRITE16(HWSTAM, 0xffff); + for_each_pipe(pipe) { + /* Clear enable bits; then clear status bits */ + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(PIPESTAT(pipe), I915_READ(PIPESTAT(pipe))); + } + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + + I915_WRITE(IIR, I915_READ(IIR)); +} + +static void i965_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + + I915_WRITE(HWSTAM, 0xeffe); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + POSTING_READ(IER); +} + +static int i965_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 hotplug_en; + u32 enable_mask; + u32 error_mask; + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = ~(I915_ASLE_INTERRUPT | + I915_DISPLAY_PORT_INTERRUPT | + I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT | + I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + + enable_mask = ~dev_priv->irq_mask; + enable_mask |= I915_USER_INTERRUPT; + + if (IS_G4X(dev)) + enable_mask |= I915_BSD_USER_INTERRUPT; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + /* + * Enable some error detection, note the instruction error mask + * bit is reserved, so we leave it masked. + */ + if (IS_G4X(dev)) { + error_mask = ~(GM45_ERROR_PAGE_TABLE | + GM45_ERROR_MEM_PRIV | + GM45_ERROR_CP_PRIV | + I915_ERROR_MEMORY_REFRESH); + } else { + error_mask = ~(I915_ERROR_PAGE_TABLE | + I915_ERROR_MEMORY_REFRESH); + } + I915_WRITE(EMR, error_mask); + + I915_WRITE(IMR, dev_priv->irq_mask); + I915_WRITE(IER, enable_mask); + POSTING_READ(IER); + + /* Note HDMI and DP share hotplug bits */ + hotplug_en = 0; + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (IS_G4X(dev)) { + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_G4X) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_G4X) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + } else { + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I965) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I965) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + } + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + + /* Programming the CRT detection parameters tends + to generate a spurious hotplug event about three + seconds later. So just do it once. + */ + if (IS_G4X(dev)) + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + /* Ignore TV since it's buggy */ + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + + intel_opregion_enable_asle(dev); + + return 0; +} + +static irqreturn_t i965_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, new_iir; + u32 pipe_stats[I915_MAX_PIPES]; + unsigned long irqflags; + int irq_received; + int ret = IRQ_NONE, pipe; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ(IIR); + + for (;;) { + bool blc_event = false; + + irq_received = iir != 0; + + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = 1; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + if (!irq_received) + break; + + ret = IRQ_HANDLED; + + /* Consume port. Then clear IIR or we'll miss events */ + if (iir & I915_DISPLAY_PORT_INTERRUPT) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + I915_READ(PORT_HOTPLUG_STAT); + } + + I915_WRITE(IIR, iir); + new_iir = I915_READ(IIR); /* Flush posted writes */ + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + if (iir & I915_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); + + if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) + intel_prepare_page_flip(dev, 0); + + if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) + intel_prepare_page_flip(dev, 1); + + for_each_pipe(pipe) { + if (pipe_stats[pipe] & PIPE_START_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, pipe)) { + i915_pageflip_stall_check(dev, pipe); + intel_finish_page_flip(dev, pipe); + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + } + + + if (blc_event || (iir & I915_ASLE_INTERRUPT)) + intel_opregion_asle_intr(dev); + + /* With MSI, interrupts are only generated when iir + * transitions from zero to nonzero. If another bit got + * set while we were handling the existing iir bits, then + * we would never get another interrupt. + * + * This is fine on non-MSI as well, as if we hit this path + * we avoid exiting the interrupt handler only to generate + * another one. + * + * Note that for MSI this could cause a stray interrupt report + * if an interrupt landed in the time between writing IIR and + * the posting read. This should be rare enough to never + * trigger the 99% of 100,000 interrupts test for disabling + * stray interrupts. + */ + iir = new_iir; + } + + i915_update_dri1_breadcrumb(dev); + + return ret; +} + +static void i965_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (!dev_priv) + return; + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + + I915_WRITE(HWSTAM, 0xffffffff); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), + I915_READ(PIPESTAT(pipe)) & 0x8000ffff); + I915_WRITE(IIR, I915_READ(IIR)); +} + +void intel_irq_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); + INIT_WORK(&dev_priv->error_work, i915_error_work_func); + INIT_WORK(&dev_priv->rps.work, gen6_pm_rps_work); + INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work); + + dev->driver->get_vblank_counter = i915_get_vblank_counter; + dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ + if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5) { + dev->max_vblank_count = 0xffffffff; /* full 32 bit counter */ + dev->driver->get_vblank_counter = gm45_get_vblank_counter; + } + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + dev->driver->get_vblank_timestamp = i915_get_vblank_timestamp; + else + dev->driver->get_vblank_timestamp = NULL; + dev->driver->get_scanout_position = i915_get_crtc_scanoutpos; + + if (IS_VALLEYVIEW(dev)) { + dev->driver->irq_handler = valleyview_irq_handler; + dev->driver->irq_preinstall = valleyview_irq_preinstall; + dev->driver->irq_postinstall = valleyview_irq_postinstall; + dev->driver->irq_uninstall = valleyview_irq_uninstall; + dev->driver->enable_vblank = valleyview_enable_vblank; + dev->driver->disable_vblank = valleyview_disable_vblank; + } else if (IS_IVYBRIDGE(dev)) { + /* Share pre & uninstall handlers with ILK/SNB */ + dev->driver->irq_handler = ivybridge_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ivybridge_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ivybridge_enable_vblank; + dev->driver->disable_vblank = ivybridge_disable_vblank; + } else if (IS_HASWELL(dev)) { + /* Share interrupts handling with IVB */ + dev->driver->irq_handler = ivybridge_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ivybridge_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ivybridge_enable_vblank; + dev->driver->disable_vblank = ivybridge_disable_vblank; + } else if (HAS_PCH_SPLIT(dev)) { + dev->driver->irq_handler = ironlake_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ironlake_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ironlake_enable_vblank; + dev->driver->disable_vblank = ironlake_disable_vblank; + } else { + if (INTEL_INFO(dev)->gen == 2) { + dev->driver->irq_preinstall = i8xx_irq_preinstall; + dev->driver->irq_postinstall = i8xx_irq_postinstall; + dev->driver->irq_handler = i8xx_irq_handler; + dev->driver->irq_uninstall = i8xx_irq_uninstall; + } else if (INTEL_INFO(dev)->gen == 3) { + dev->driver->irq_preinstall = i915_irq_preinstall; + dev->driver->irq_postinstall = i915_irq_postinstall; + dev->driver->irq_uninstall = i915_irq_uninstall; + dev->driver->irq_handler = i915_irq_handler; + } else { + dev->driver->irq_preinstall = i965_irq_preinstall; + dev->driver->irq_postinstall = i965_irq_postinstall; + dev->driver->irq_uninstall = i965_irq_uninstall; + dev->driver->irq_handler = i965_irq_handler; + } + dev->driver->enable_vblank = i915_enable_vblank; + dev->driver->disable_vblank = i915_disable_vblank; + } +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_evict.c +++ linux-3.5.0/ubuntu/i915/i915_gem_evict.c @@ -0,0 +1,185 @@ +/* + * Copyright © 2008-2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include +#include "i915_drv.h" +#include +#include "i915_trace.h" + +static bool +mark_free(struct drm_i915_gem_object *obj, struct list_head *unwind) +{ + if (obj->pin_count) + return false; + + list_add(&obj->exec_list, unwind); + return drm_mm_scan_add_block_hsw(obj->gtt_space); +} + +int +i915_gem_evict_something(struct drm_device *dev, int min_size, + unsigned alignment, unsigned cache_level, + bool mappable, bool nonblocking) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct list_head eviction_list, unwind_list; + struct drm_i915_gem_object *obj; + int ret = 0; + + trace_i915_gem_evict(dev, min_size, alignment, mappable); + + /* + * The goal is to evict objects and amalgamate space in LRU order. + * The oldest idle objects reside on the inactive list, which is in + * retirement order. The next objects to retire are those on the (per + * ring) active list that do not have an outstanding flush. Once the + * hardware reports completion (the seqno is updated after the + * batchbuffer has been finished) the clean buffer objects would + * be retired to the inactive list. Any dirty objects would be added + * to the tail of the flushing list. So after processing the clean + * active objects we need to emit a MI_FLUSH to retire the flushing + * list, hence the retirement order of the flushing list is in + * advance of the dirty objects on the active lists. + * + * The retirement sequence is thus: + * 1. Inactive objects (already retired) + * 2. Clean active objects + * 3. Flushing list + * 4. Dirty active objects. + * + * On each list, the oldest objects lie at the HEAD with the freshest + * object on the TAIL. + */ + + INIT_LIST_HEAD(&unwind_list); + if (mappable) + drm_mm_init_scan_with_range_hsw(&dev_priv->mm.gtt_space, + min_size, alignment, cache_level, + 0, dev_priv->mm.gtt_mappable_end); + else + drm_mm_init_scan_hsw(&dev_priv->mm.gtt_space, + min_size, alignment, cache_level); + + /* First see if there is a large enough contiguous idle region... */ + list_for_each_entry(obj, &dev_priv->mm.inactive_list, mm_list) { + if (mark_free(obj, &unwind_list)) + goto found; + } + + if (nonblocking) + goto none; + + /* Now merge in the soon-to-be-expired objects... */ + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) { + if (mark_free(obj, &unwind_list)) + goto found; + } + +none: + /* Nothing found, clean up and bail out! */ + while (!list_empty(&unwind_list)) { + obj = list_first_entry(&unwind_list, + struct drm_i915_gem_object, + exec_list); + + ret = drm_mm_scan_remove_block_hsw(obj->gtt_space); + BUG_ON(ret); + + list_del_init(&obj->exec_list); + } + + /* We expect the caller to unpin, evict all and try again, or give up. + * So calling i915_gem_evict_everything() is unnecessary. + */ + return -ENOSPC; + +found: + /* drm_mm_hsw doesn't allow any other other operations while + * scanning, therefore store to be evicted objects on a + * temporary list. */ + INIT_LIST_HEAD(&eviction_list); + while (!list_empty(&unwind_list)) { + obj = list_first_entry(&unwind_list, + struct drm_i915_gem_object, + exec_list); + if (drm_mm_scan_remove_block_hsw(obj->gtt_space)) { + list_move(&obj->exec_list, &eviction_list); + drm_gem_object_reference(&obj->base); + continue; + } + list_del_init(&obj->exec_list); + } + + /* Unbinding will emit any required flushes */ + while (!list_empty(&eviction_list)) { + obj = list_first_entry(&eviction_list, + struct drm_i915_gem_object, + exec_list); + if (ret == 0) + ret = i915_gem_object_unbind(obj); + + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + return ret; +} + +int +i915_gem_evict_everything(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj, *next; + bool lists_empty; + int ret; + + lists_empty = (list_empty(&dev_priv->mm.inactive_list) && + list_empty(&dev_priv->mm.active_list)); + if (lists_empty) + return -ENOSPC; + + trace_i915_gem_evict_everything(dev); + + /* The gpu_idle will flush everything in the write domain to the + * active list. Then we must move everything off the active list + * with retire requests. + */ + ret = i915_gpu_idle(dev); + if (ret) + return ret; + + i915_gem_retire_requests(dev); + + /* Having flushed everything, unbind() should never raise an error */ + list_for_each_entry_safe(obj, next, + &dev_priv->mm.inactive_list, mm_list) + if (obj->pin_count == 0) + WARN_ON(i915_gem_object_unbind(obj)); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/i915_ioc32.c +++ linux-3.5.0/ubuntu/i915/i915_ioc32.c @@ -0,0 +1,221 @@ +/** + * \file i915_ioc32.c + * + * 32-bit ioctl compatibility routines for the i915 DRM. + * + * \author Alan Hourihane + * + * + * Copyright (C) Paul Mackerras 2005 + * Copyright (C) Alan Hourihane 2005 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include + +#include +#include +#include "i915_drv.h" + +typedef struct _drm_i915_batchbuffer32 { + int start; /* agp offset */ + int used; /* nr bytes in use */ + int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */ + int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */ + int num_cliprects; /* mulitpass with multiple cliprects? */ + u32 cliprects; /* pointer to userspace cliprects */ +} drm_i915_batchbuffer32_t; + +static int compat_i915_batchbuffer(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_batchbuffer32_t batchbuffer32; + drm_i915_batchbuffer_t __user *batchbuffer; + + if (copy_from_user + (&batchbuffer32, (void __user *)arg, sizeof(batchbuffer32))) + return -EFAULT; + + batchbuffer = compat_alloc_user_space(sizeof(*batchbuffer)); + if (!access_ok(VERIFY_WRITE, batchbuffer, sizeof(*batchbuffer)) + || __put_user(batchbuffer32.start, &batchbuffer->start) + || __put_user(batchbuffer32.used, &batchbuffer->used) + || __put_user(batchbuffer32.DR1, &batchbuffer->DR1) + || __put_user(batchbuffer32.DR4, &batchbuffer->DR4) + || __put_user(batchbuffer32.num_cliprects, + &batchbuffer->num_cliprects) + || __put_user((int __user *)(unsigned long)batchbuffer32.cliprects, + &batchbuffer->cliprects)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_BATCHBUFFER, + (unsigned long)batchbuffer); +} + +typedef struct _drm_i915_cmdbuffer32 { + u32 buf; /* pointer to userspace command buffer */ + int sz; /* nr bytes in buf */ + int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */ + int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */ + int num_cliprects; /* mulitpass with multiple cliprects? */ + u32 cliprects; /* pointer to userspace cliprects */ +} drm_i915_cmdbuffer32_t; + +static int compat_i915_cmdbuffer(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_cmdbuffer32_t cmdbuffer32; + drm_i915_cmdbuffer_t __user *cmdbuffer; + + if (copy_from_user + (&cmdbuffer32, (void __user *)arg, sizeof(cmdbuffer32))) + return -EFAULT; + + cmdbuffer = compat_alloc_user_space(sizeof(*cmdbuffer)); + if (!access_ok(VERIFY_WRITE, cmdbuffer, sizeof(*cmdbuffer)) + || __put_user((int __user *)(unsigned long)cmdbuffer32.buf, + &cmdbuffer->buf) + || __put_user(cmdbuffer32.sz, &cmdbuffer->sz) + || __put_user(cmdbuffer32.DR1, &cmdbuffer->DR1) + || __put_user(cmdbuffer32.DR4, &cmdbuffer->DR4) + || __put_user(cmdbuffer32.num_cliprects, &cmdbuffer->num_cliprects) + || __put_user((int __user *)(unsigned long)cmdbuffer32.cliprects, + &cmdbuffer->cliprects)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_CMDBUFFER, + (unsigned long)cmdbuffer); +} + +typedef struct drm_i915_irq_emit32 { + u32 irq_seq; +} drm_i915_irq_emit32_t; + +static int compat_i915_irq_emit(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_irq_emit32_t req32; + drm_i915_irq_emit_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user((int __user *)(unsigned long)req32.irq_seq, + &request->irq_seq)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_IRQ_EMIT, + (unsigned long)request); +} +typedef struct drm_i915_getparam32 { + int param; + u32 value; +} drm_i915_getparam32_t; + +static int compat_i915_getparam(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_getparam32_t req32; + drm_i915_getparam_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user(req32.param, &request->param) + || __put_user((void __user *)(unsigned long)req32.value, + &request->value)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_GETPARAM, + (unsigned long)request); +} + +typedef struct drm_i915_mem_alloc32 { + int region; + int alignment; + int size; + u32 region_offset; /* offset from start of fb or agp */ +} drm_i915_mem_alloc32_t; + +static int compat_i915_alloc(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_mem_alloc32_t req32; + drm_i915_mem_alloc_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user(req32.region, &request->region) + || __put_user(req32.alignment, &request->alignment) + || __put_user(req32.size, &request->size) + || __put_user((void __user *)(unsigned long)req32.region_offset, + &request->region_offset)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_ALLOC, + (unsigned long)request); +} + +static drm_ioctl_compat_t *i915_compat_ioctls[] = { + [DRM_I915_BATCHBUFFER] = compat_i915_batchbuffer, + [DRM_I915_CMDBUFFER] = compat_i915_cmdbuffer, + [DRM_I915_GETPARAM] = compat_i915_getparam, + [DRM_I915_IRQ_EMIT] = compat_i915_irq_emit, + [DRM_I915_ALLOC] = compat_i915_alloc +}; + +#ifdef CONFIG_COMPAT +/** + * Called whenever a 32-bit process running under a 64-bit kernel + * performs an ioctl on /dev/dri/card. + * + * \param filp file pointer. + * \param cmd command. + * \param arg user argument. + * \return zero on success or negative number on failure. + */ +long i915_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + unsigned int nr = DRM_IOCTL_NR(cmd); + drm_ioctl_compat_t *fn = NULL; + int ret; + + if (nr < DRM_COMMAND_BASE) + return drm_compat_ioctl(filp, cmd, arg); + + if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls)) + fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE]; + + if (fn != NULL) + ret = (*fn) (filp, cmd, arg); + else + ret = drm_ioctl(filp, cmd, arg); + + return ret; +} +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_trace.h +++ linux-3.5.0/ubuntu/i915/i915_trace.h @@ -0,0 +1,455 @@ +#if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) +#define _I915_TRACE_H_ + +#include +#include +#include + +#include +#include "i915_drv.h" +#include "intel_ringbuffer.h" + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM i915 +#define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM) +#define TRACE_INCLUDE_FILE i915_trace + +/* object tracking */ + +TRACE_EVENT(i915_gem_object_create, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, size) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->size = obj->base.size; + ), + + TP_printk("obj=%p, size=%u", __entry->obj, __entry->size) +); + +TRACE_EVENT(i915_gem_object_bind, + TP_PROTO(struct drm_i915_gem_object *obj, bool mappable), + TP_ARGS(obj, mappable), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, size) + __field(bool, mappable) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = obj->gtt_space->start; + __entry->size = obj->gtt_space->size; + __entry->mappable = mappable; + ), + + TP_printk("obj=%p, offset=%08x size=%x%s", + __entry->obj, __entry->offset, __entry->size, + __entry->mappable ? ", mappable" : "") +); + +TRACE_EVENT(i915_gem_object_unbind, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, size) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = obj->gtt_space->start; + __entry->size = obj->gtt_space->size; + ), + + TP_printk("obj=%p, offset=%08x size=%x", + __entry->obj, __entry->offset, __entry->size) +); + +TRACE_EVENT(i915_gem_object_change_domain, + TP_PROTO(struct drm_i915_gem_object *obj, u32 old_read, u32 old_write), + TP_ARGS(obj, old_read, old_write), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, read_domains) + __field(u32, write_domain) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->read_domains = obj->base.read_domains | (old_read << 16); + __entry->write_domain = obj->base.write_domain | (old_write << 16); + ), + + TP_printk("obj=%p, read=%02x=>%02x, write=%02x=>%02x", + __entry->obj, + __entry->read_domains >> 16, + __entry->read_domains & 0xffff, + __entry->write_domain >> 16, + __entry->write_domain & 0xffff) +); + +TRACE_EVENT(i915_gem_object_pwrite, + TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len), + TP_ARGS(obj, offset, len), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, len) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("obj=%p, offset=%u, len=%u", + __entry->obj, __entry->offset, __entry->len) +); + +TRACE_EVENT(i915_gem_object_pread, + TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len), + TP_ARGS(obj, offset, len), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, len) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("obj=%p, offset=%u, len=%u", + __entry->obj, __entry->offset, __entry->len) +); + +TRACE_EVENT(i915_gem_object_fault, + TP_PROTO(struct drm_i915_gem_object *obj, u32 index, bool gtt, bool write), + TP_ARGS(obj, index, gtt, write), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, index) + __field(bool, gtt) + __field(bool, write) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->index = index; + __entry->gtt = gtt; + __entry->write = write; + ), + + TP_printk("obj=%p, %s index=%u %s", + __entry->obj, + __entry->gtt ? "GTT" : "CPU", + __entry->index, + __entry->write ? ", writable" : "") +); + +DECLARE_EVENT_CLASS(i915_gem_object, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->obj = obj; + ), + + TP_printk("obj=%p", __entry->obj) +); + +DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj) +); + +DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj) +); + +TRACE_EVENT(i915_gem_evict, + TP_PROTO(struct drm_device *dev, u32 size, u32 align, bool mappable), + TP_ARGS(dev, size, align, mappable), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, size) + __field(u32, align) + __field(bool, mappable) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + __entry->size = size; + __entry->align = align; + __entry->mappable = mappable; + ), + + TP_printk("dev=%d, size=%d, align=%d %s", + __entry->dev, __entry->size, __entry->align, + __entry->mappable ? ", mappable" : "") +); + +TRACE_EVENT(i915_gem_evict_everything, + TP_PROTO(struct drm_device *dev), + TP_ARGS(dev), + + TP_STRUCT__entry( + __field(u32, dev) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + ), + + TP_printk("dev=%d", __entry->dev) +); + +TRACE_EVENT(i915_gem_ring_dispatch, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno, u32 flags), + TP_ARGS(ring, seqno, flags), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + __field(u32, flags) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + __entry->flags = flags; + i915_trace_irq_get(ring, seqno); + ), + + TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x", + __entry->dev, __entry->ring, __entry->seqno, __entry->flags) +); + +TRACE_EVENT(i915_gem_ring_flush, + TP_PROTO(struct intel_ring_buffer *ring, u32 invalidate, u32 flush), + TP_ARGS(ring, invalidate, flush), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, invalidate) + __field(u32, flush) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->invalidate = invalidate; + __entry->flush = flush; + ), + + TP_printk("dev=%u, ring=%x, invalidate=%04x, flush=%04x", + __entry->dev, __entry->ring, + __entry->invalidate, __entry->flush) +); + +DECLARE_EVENT_CLASS(i915_gem_request, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + ), + + TP_printk("dev=%u, ring=%u, seqno=%u", + __entry->dev, __entry->ring, __entry->seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_add, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_complete, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_retire, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +TRACE_EVENT(i915_gem_request_wait_begin, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + __field(bool, blocking) + ), + + /* NB: the blocking information is racy since mutex_is_locked + * doesn't check that the current thread holds the lock. The only + * other option would be to pass the boolean information of whether + * or not the class was blocking down through the stack which is + * less desirable. + */ + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + __entry->blocking = mutex_is_locked(&ring->dev->struct_mutex); + ), + + TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", + __entry->dev, __entry->ring, __entry->seqno, + __entry->blocking ? "yes (NB)" : "no") +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DECLARE_EVENT_CLASS(i915_ring, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + ), + + TP_printk("dev=%u, ring=%u", __entry->dev, __entry->ring) +); + +DEFINE_EVENT(i915_ring, i915_ring_wait_begin, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring) +); + +DEFINE_EVENT(i915_ring, i915_ring_wait_end, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring) +); + +TRACE_EVENT(i915_flip_request, + TP_PROTO(int plane, struct drm_i915_gem_object *obj), + + TP_ARGS(plane, obj), + + TP_STRUCT__entry( + __field(int, plane) + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->plane = plane; + __entry->obj = obj; + ), + + TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj) +); + +TRACE_EVENT(i915_flip_complete, + TP_PROTO(int plane, struct drm_i915_gem_object *obj), + + TP_ARGS(plane, obj), + + TP_STRUCT__entry( + __field(int, plane) + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->plane = plane; + __entry->obj = obj; + ), + + TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj) +); + +TRACE_EVENT(i915_reg_rw, + TP_PROTO(bool write, u32 reg, u64 val, int len), + + TP_ARGS(write, reg, val, len), + + TP_STRUCT__entry( + __field(u64, val) + __field(u32, reg) + __field(u16, write) + __field(u16, len) + ), + + TP_fast_assign( + __entry->val = (u64)val; + __entry->reg = reg; + __entry->write = write; + __entry->len = len; + ), + + TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)", + __entry->write ? "write" : "read", + __entry->reg, __entry->len, + (u32)(__entry->val & 0xffffffff), + (u32)(__entry->val >> 32)) +); + +TRACE_EVENT(intel_gpu_freq_change, + TP_PROTO(u32 freq), + TP_ARGS(freq), + + TP_STRUCT__entry( + __field(u32, freq) + ), + + TP_fast_assign( + __entry->freq = freq; + ), + + TP_printk("new_freq=%u", __entry->freq) +); + +#endif /* _I915_TRACE_H_ */ + +/* This part must be outside protection */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#include --- linux-3.5.0.orig/ubuntu/i915/intel_i2c.c +++ linux-3.5.0/ubuntu/i915/intel_i2c.c @@ -0,0 +1,550 @@ +/* + * Copyright (c) 2006 Dave Airlie + * Copyright © 2006-2008,2010 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + */ +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +struct gmbus_port { + const char *name; + int reg; +}; + +static const struct gmbus_port gmbus_ports[] = { + { "ssc", GPIOB }, + { "vga", GPIOA }, + { "panel", GPIOC }, + { "dpc", GPIOD }, + { "dpb", GPIOE }, + { "dpd", GPIOF }, +}; + +/* Intel GPIO access functions */ + +#define I2C_RISEFALL_TIME 10 + +static inline struct intel_gmbus * +to_intel_gmbus(struct i2c_adapter *i2c) +{ + return container_of(i2c, struct intel_gmbus, adapter); +} + +void +intel_i2c_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + I915_WRITE(dev_priv->gpio_mmio_base + GMBUS0, 0); +} + +static void intel_i2c_quirk_set(struct drm_i915_private *dev_priv, bool enable) +{ + u32 val; + + /* When using bit bashing for I2C, this bit needs to be set to 1 */ + if (!IS_PINEVIEW(dev_priv->dev)) + return; + + val = I915_READ(DSPCLK_GATE_D); + if (enable) + val |= DPCUNIT_CLOCK_GATE_DISABLE; + else + val &= ~DPCUNIT_CLOCK_GATE_DISABLE; + I915_WRITE(DSPCLK_GATE_D, val); +} + +static u32 get_reserved(struct intel_gmbus *bus) +{ + struct drm_i915_private *dev_priv = bus->dev_priv; + struct drm_device *dev = dev_priv->dev; + u32 reserved = 0; + + /* On most chips, these bits must be preserved in software. */ + if (!IS_I830(dev) && !IS_845G(dev)) + reserved = I915_READ_NOTRACE(bus->gpio_reg) & + (GPIO_DATA_PULLUP_DISABLE | + GPIO_CLOCK_PULLUP_DISABLE); + + return reserved; +} + +static int get_clock(void *data) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_CLOCK_DIR_MASK); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved); + return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_CLOCK_VAL_IN) != 0; +} + +static int get_data(void *data) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved); + return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; +} + +static void set_clock(void *data, int state_high) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + u32 clock_bits; + + if (state_high) + clock_bits = GPIO_CLOCK_DIR_IN | GPIO_CLOCK_DIR_MASK; + else + clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK | + GPIO_CLOCK_VAL_MASK; + + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | clock_bits); + POSTING_READ(bus->gpio_reg); +} + +static void set_data(void *data, int state_high) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + u32 data_bits; + + if (state_high) + data_bits = GPIO_DATA_DIR_IN | GPIO_DATA_DIR_MASK; + else + data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | + GPIO_DATA_VAL_MASK; + + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | data_bits); + POSTING_READ(bus->gpio_reg); +} + +static int +intel_gpio_pre_xfer(struct i2c_adapter *adapter) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + intel_i2c_reset(dev_priv->dev); + intel_i2c_quirk_set(dev_priv, true); + set_data(bus, 1); + set_clock(bus, 1); + udelay(I2C_RISEFALL_TIME); + return 0; +} + +static void +intel_gpio_post_xfer(struct i2c_adapter *adapter) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + set_data(bus, 1); + set_clock(bus, 1); + intel_i2c_quirk_set(dev_priv, false); +} + +static void +intel_gpio_setup(struct intel_gmbus *bus, u32 pin) +{ + struct drm_i915_private *dev_priv = bus->dev_priv; + struct i2c_algo_bit_data *algo; + + algo = &bus->bit_algo; + + /* -1 to map pin pair to gmbus index */ + bus->gpio_reg = dev_priv->gpio_mmio_base + gmbus_ports[pin - 1].reg; + + bus->adapter.algo_data = algo; + algo->setsda = set_data; + algo->setscl = set_clock; + algo->getsda = get_data; + algo->getscl = get_clock; + algo->pre_xfer = intel_gpio_pre_xfer; + algo->post_xfer = intel_gpio_post_xfer; + algo->udelay = I2C_RISEFALL_TIME; + algo->timeout = usecs_to_jiffies(2200); + algo->data = bus; +} + +static int +gmbus_xfer_read(struct drm_i915_private *dev_priv, struct i2c_msg *msg, + u32 gmbus1_index) +{ + int reg_offset = dev_priv->gpio_mmio_base; + u16 len = msg->len; + u8 *buf = msg->buf; + + I915_WRITE(GMBUS1 + reg_offset, + gmbus1_index | + GMBUS_CYCLE_WAIT | + (len << GMBUS_BYTE_COUNT_SHIFT) | + (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) | + GMBUS_SLAVE_READ | GMBUS_SW_RDY); + while (len) { + int ret; + u32 val, loop = 0; + u32 gmbus2; + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_RDY), + 50); + if (ret) + return -ETIMEDOUT; + if (gmbus2 & GMBUS_SATOER) + return -ENXIO; + + val = I915_READ(GMBUS3 + reg_offset); + do { + *buf++ = val & 0xff; + val >>= 8; + } while (--len && ++loop < 4); + } + + return 0; +} + +static int +gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg) +{ + int reg_offset = dev_priv->gpio_mmio_base; + u16 len = msg->len; + u8 *buf = msg->buf; + u32 val, loop; + + val = loop = 0; + while (len && loop < 4) { + val |= *buf++ << (8 * loop++); + len -= 1; + } + + I915_WRITE(GMBUS3 + reg_offset, val); + I915_WRITE(GMBUS1 + reg_offset, + GMBUS_CYCLE_WAIT | + (msg->len << GMBUS_BYTE_COUNT_SHIFT) | + (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) | + GMBUS_SLAVE_WRITE | GMBUS_SW_RDY); + while (len) { + int ret; + u32 gmbus2; + + val = loop = 0; + do { + val |= *buf++ << (8 * loop); + } while (--len && ++loop < 4); + + I915_WRITE(GMBUS3 + reg_offset, val); + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_RDY), + 50); + if (ret) + return -ETIMEDOUT; + if (gmbus2 & GMBUS_SATOER) + return -ENXIO; + } + return 0; +} + +/* + * The gmbus controller can combine a 1 or 2 byte write with a read that + * immediately follows it by using an "INDEX" cycle. + */ +static bool +gmbus_is_index_read(struct i2c_msg *msgs, int i, int num) +{ + return (i + 1 < num && + !(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 && + (msgs[i + 1].flags & I2C_M_RD)); +} + +static int +gmbus_xfer_index_read(struct drm_i915_private *dev_priv, struct i2c_msg *msgs) +{ + int reg_offset = dev_priv->gpio_mmio_base; + u32 gmbus1_index = 0; + u32 gmbus5 = 0; + int ret; + + if (msgs[0].len == 2) + gmbus5 = GMBUS_2BYTE_INDEX_EN | + msgs[0].buf[1] | (msgs[0].buf[0] << 8); + if (msgs[0].len == 1) + gmbus1_index = GMBUS_CYCLE_INDEX | + (msgs[0].buf[0] << GMBUS_SLAVE_INDEX_SHIFT); + + /* GMBUS5 holds 16-bit index */ + if (gmbus5) + I915_WRITE(GMBUS5 + reg_offset, gmbus5); + + ret = gmbus_xfer_read(dev_priv, &msgs[1], gmbus1_index); + + /* Clear GMBUS5 after each index transfer */ + if (gmbus5) + I915_WRITE(GMBUS5 + reg_offset, 0); + + return ret; +} + +static int +gmbus_xfer(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + int i, reg_offset; + int ret = 0; + + mutex_lock(&dev_priv->gmbus_mutex); + + if (bus->force_bit) { + ret = i2c_bit_algo.master_xfer(adapter, msgs, num); + goto out; + } + + reg_offset = dev_priv->gpio_mmio_base; + + I915_WRITE(GMBUS0 + reg_offset, bus->reg0); + + for (i = 0; i < num; i++) { + u32 gmbus2; + + if (gmbus_is_index_read(msgs, i, num)) { + ret = gmbus_xfer_index_read(dev_priv, &msgs[i]); + i += 1; /* set i to the index of the read xfer */ + } else if (msgs[i].flags & I2C_M_RD) { + ret = gmbus_xfer_read(dev_priv, &msgs[i], 0); + } else { + ret = gmbus_xfer_write(dev_priv, &msgs[i]); + } + + if (ret == -ETIMEDOUT) + goto timeout; + if (ret == -ENXIO) + goto clear_err; + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_WAIT_PHASE), + 50); + if (ret) + goto timeout; + if (gmbus2 & GMBUS_SATOER) + goto clear_err; + } + + /* Generate a STOP condition on the bus. Note that gmbus can't generata + * a STOP on the very first cycle. To simplify the code we + * unconditionally generate the STOP condition with an additional gmbus + * cycle. */ + I915_WRITE(GMBUS1 + reg_offset, GMBUS_CYCLE_STOP | GMBUS_SW_RDY); + + /* Mark the GMBUS interface as disabled after waiting for idle. + * We will re-enable it at the start of the next xfer, + * till then let it sleep. + */ + if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, + 10)) { + DRM_DEBUG_KMS("GMBUS [%s] timed out waiting for idle\n", + adapter->name); + ret = -ETIMEDOUT; + } + I915_WRITE(GMBUS0 + reg_offset, 0); + ret = ret ?: i; + goto out; + +clear_err: + /* + * Wait for bus to IDLE before clearing NAK. + * If we clear the NAK while bus is still active, then it will stay + * active and the next transaction may fail. + * + * If no ACK is received during the address phase of a transaction, the + * adapter must report -ENXIO. It is not clear what to return if no ACK + * is received at other times. But we have to be careful to not return + * spurious -ENXIO because that will prevent i2c and drm edid functions + * from retrying. So return -ENXIO only when gmbus properly quiescents - + * timing out seems to happen when there _is_ a ddc chip present, but + * it's slow responding and only answers on the 2nd retry. + */ + ret = -ENXIO; + if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, + 10)) { + DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", + adapter->name); + ret = -ETIMEDOUT; + } + + /* Toggle the Software Clear Interrupt bit. This has the effect + * of resetting the GMBUS controller and so clearing the + * BUS_ERROR raised by the slave's NAK. + */ + I915_WRITE(GMBUS1 + reg_offset, GMBUS_SW_CLR_INT); + I915_WRITE(GMBUS1 + reg_offset, 0); + I915_WRITE(GMBUS0 + reg_offset, 0); + + DRM_DEBUG_KMS("GMBUS [%s] NAK for addr: %04x %c(%d)\n", + adapter->name, msgs[i].addr, + (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); + + goto out; + +timeout: + DRM_INFO("GMBUS [%s] timed out, falling back to bit banging on pin %d\n", + bus->adapter.name, bus->reg0 & 0xff); + I915_WRITE(GMBUS0 + reg_offset, 0); + + /* Hardware may not support GMBUS over these pins? Try GPIO bitbanging instead. */ + bus->force_bit = 1; + ret = i2c_bit_algo.master_xfer(adapter, msgs, num); + +out: + mutex_unlock(&dev_priv->gmbus_mutex); + return ret; +} + +static u32 gmbus_func(struct i2c_adapter *adapter) +{ + return i2c_bit_algo.functionality(adapter) & + (I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | + /* I2C_FUNC_10BIT_ADDR | */ + I2C_FUNC_SMBUS_READ_BLOCK_DATA | + I2C_FUNC_SMBUS_BLOCK_PROC_CALL); +} + +static const struct i2c_algorithm gmbus_algorithm = { + .master_xfer = gmbus_xfer, + .functionality = gmbus_func +}; + +/** + * intel_gmbus_setup - instantiate all Intel i2c GMBuses + * @dev: DRM device + */ +int intel_setup_gmbus(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret, i; + + if (HAS_PCH_SPLIT(dev)) + dev_priv->gpio_mmio_base = PCH_GPIOA - GPIOA; + else + dev_priv->gpio_mmio_base = 0; + + mutex_init(&dev_priv->gmbus_mutex); + + for (i = 0; i < GMBUS_NUM_PORTS; i++) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + u32 port = i + 1; /* +1 to map gmbus index to pin pair */ + + bus->adapter.owner = THIS_MODULE; + bus->adapter.class = I2C_CLASS_DDC; + snprintf(bus->adapter.name, + sizeof(bus->adapter.name), + "i915 gmbus %s", + gmbus_ports[i].name); + + bus->adapter.dev.parent = &dev->pdev->dev; + bus->dev_priv = dev_priv; + + bus->adapter.algo = &gmbus_algorithm; + + /* By default use a conservative clock rate */ + bus->reg0 = port | GMBUS_RATE_100KHZ; + + /* gmbus seems to be broken on i830 */ + if (IS_I830(dev)) + bus->force_bit = 1; + + intel_gpio_setup(bus, port); + + ret = i2c_add_adapter(&bus->adapter); + if (ret) + goto err; + } + + intel_i2c_reset(dev_priv->dev); + + return 0; + +err: + while (--i) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + i2c_del_adapter(&bus->adapter); + } + return ret; +} + +struct i2c_adapter *intel_gmbus_get_adapter(struct drm_i915_private *dev_priv, + unsigned port) +{ + WARN_ON(!intel_gmbus_is_port_valid(port)); + /* -1 to map pin pair to gmbus index */ + return (intel_gmbus_is_port_valid(port)) ? + &dev_priv->gmbus[port - 1].adapter : NULL; +} + +void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed) +{ + struct intel_gmbus *bus = to_intel_gmbus(adapter); + + bus->reg0 = (bus->reg0 & ~(0x3 << 8)) | speed; +} + +void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit) +{ + struct intel_gmbus *bus = to_intel_gmbus(adapter); + + bus->force_bit += force_bit ? 1 : -1; + DRM_DEBUG_KMS("%sabling bit-banging on %s. force bit now %d\n", + force_bit ? "en" : "dis", adapter->name, + bus->force_bit); +} + +void intel_teardown_gmbus(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + for (i = 0; i < GMBUS_NUM_PORTS; i++) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + i2c_del_adapter(&bus->adapter); + } +} --- linux-3.5.0.orig/ubuntu/i915/i915_drv.c +++ linux-3.5.0/ubuntu/i915/i915_drv.c @@ -0,0 +1,1310 @@ +/* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*- + */ +/* + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include +#include +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +#include +#include +#include + +static int i915_modeset __read_mostly = -1; +module_param_named(modeset, i915_modeset, int, 0400); +MODULE_PARM_DESC(modeset, + "Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, " + "1=on, -1=force vga console preference [default])"); + +unsigned int i915_fbpercrtc __always_unused = 0; +module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400); + +int i915_panel_ignore_lid __read_mostly = 1; +module_param_named(panel_ignore_lid, i915_panel_ignore_lid, int, 0600); +MODULE_PARM_DESC(panel_ignore_lid, + "Override lid status (0=autodetect, 1=autodetect disabled [default], " + "-1=force lid closed, -2=force lid open)"); + +unsigned int i915_powersave __read_mostly = 1; +module_param_named(powersave, i915_powersave, int, 0600); +MODULE_PARM_DESC(powersave, + "Enable powersavings, fbc, downclocking, etc. (default: true)"); + +int i915_semaphores __read_mostly = -1; +module_param_named(semaphores, i915_semaphores, int, 0600); +MODULE_PARM_DESC(semaphores, + "Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))"); + +int i915_enable_rc6 __read_mostly = -1; +module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0400); +MODULE_PARM_DESC(i915_enable_rc6, + "Enable power-saving render C-state 6. " + "Different stages can be selected via bitmask values " + "(0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). " + "For example, 3 would enable rc6 and deep rc6, and 7 would enable everything. " + "default: -1 (use per-chip default)"); + +int i915_enable_fbc __read_mostly = -1; +module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600); +MODULE_PARM_DESC(i915_enable_fbc, + "Enable frame buffer compression for power savings " + "(default: -1 (use per-chip default))"); + +unsigned int i915_lvds_downclock __read_mostly = 0; +module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); +MODULE_PARM_DESC(lvds_downclock, + "Use panel (LVDS/eDP) downclocking for power savings " + "(default: false)"); + +int i915_lvds_channel_mode __read_mostly; +module_param_named(lvds_channel_mode, i915_lvds_channel_mode, int, 0600); +MODULE_PARM_DESC(lvds_channel_mode, + "Specify LVDS channel mode " + "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)"); + +int i915_panel_use_ssc __read_mostly = -1; +module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600); +MODULE_PARM_DESC(lvds_use_ssc, + "Use Spread Spectrum Clock with panels [LVDS/eDP] " + "(default: auto from VBT)"); + +int i915_vbt_sdvo_panel_type __read_mostly = -1; +module_param_named(vbt_sdvo_panel_type, i915_vbt_sdvo_panel_type, int, 0600); +MODULE_PARM_DESC(vbt_sdvo_panel_type, + "Override/Ignore selection of SDVO panel mode in the VBT " + "(-2=ignore, -1=auto [default], index in VBT BIOS table)"); + +static bool i915_try_reset __read_mostly = true; +module_param_named(reset, i915_try_reset, bool, 0600); +MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)"); + +bool i915_enable_hangcheck __read_mostly = true; +module_param_named(enable_hangcheck, i915_enable_hangcheck, bool, 0644); +MODULE_PARM_DESC(enable_hangcheck, + "Periodically check GPU activity for detecting hangs. " + "WARNING: Disabling this can cause system wide hangs. " + "(default: true)"); + +int i915_enable_ppgtt __read_mostly = -1; +module_param_named(i915_enable_ppgtt, i915_enable_ppgtt, int, 0600); +MODULE_PARM_DESC(i915_enable_ppgtt, + "Enable PPGTT (default: true)"); + +unsigned int i915_preliminary_hw_support __read_mostly = 0; +module_param_named(preliminary_hw_support, i915_preliminary_hw_support, int, 0600); +MODULE_PARM_DESC(preliminary_hw_support, + "Enable preliminary hardware support. " + "Enable Haswell and ValleyView Support. " + "(default: false)"); + +static struct drm_driver driver; +extern int intel_agp_enabled; + +extern int i915_hsw_enabled; + +#define INTEL_VGA_DEVICE(id, info) { \ + .class = PCI_BASE_CLASS_DISPLAY << 16, \ + .class_mask = 0xff0000, \ + .vendor = 0x8086, \ + .device = id, \ + .subvendor = PCI_ANY_ID, \ + .subdevice = PCI_ANY_ID, \ + .driver_data = (unsigned long) info } + +static const struct intel_device_info intel_i830_info = { + .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_845g_info = { + .gen = 2, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i85x_info = { + .gen = 2, .is_i85x = 1, .is_mobile = 1, + .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i865g_info = { + .gen = 2, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i915g_info = { + .gen = 3, .is_i915g = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; +static const struct intel_device_info intel_i915gm_info = { + .gen = 3, .is_mobile = 1, + .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, + .supports_tv = 1, +}; +static const struct intel_device_info intel_i945g_info = { + .gen = 3, .has_hotplug = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; +static const struct intel_device_info intel_i945gm_info = { + .gen = 3, .is_i945gm = 1, .is_mobile = 1, + .has_hotplug = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, + .supports_tv = 1, +}; + +static const struct intel_device_info intel_i965g_info = { + .gen = 4, .is_broadwater = 1, + .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_i965gm_info = { + .gen = 4, .is_crestline = 1, + .is_mobile = 1, .has_fbc = 1, .has_hotplug = 1, + .has_overlay = 1, + .supports_tv = 1, +}; + +static const struct intel_device_info intel_g33_info = { + .gen = 3, .is_g33 = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_g45_info = { + .gen = 4, .is_g4x = 1, .need_gfx_hws = 1, + .has_pipe_cxsr = 1, .has_hotplug = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_gm45_info = { + .gen = 4, .is_g4x = 1, + .is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, + .has_pipe_cxsr = 1, .has_hotplug = 1, + .supports_tv = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_pineview_info = { + .gen = 3, .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_ironlake_d_info = { + .gen = 5, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_ironlake_m_info = { + .gen = 5, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_sandybridge_d_info = { + .gen = 6, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_sandybridge_m_info = { + .gen = 6, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_ivybridge_d_info = { + .is_ivybridge = 1, .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_ivybridge_m_info = { + .is_ivybridge = 1, .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */ + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_valleyview_m_info = { + .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .is_valleyview = 1, +}; + +static const struct intel_device_info intel_valleyview_d_info = { + .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .is_valleyview = 1, +}; + +static const struct intel_device_info intel_haswell_d_info = { + .is_haswell = 1, .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_haswell_m_info = { + .is_haswell = 1, .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct pci_device_id pciidlist[] = { /* aka */ + INTEL_VGA_DEVICE(0x0402, &intel_haswell_d_info), /* GT1 desktop */ + INTEL_VGA_DEVICE(0x0412, &intel_haswell_d_info), /* GT2 desktop */ + INTEL_VGA_DEVICE(0x0422, &intel_haswell_d_info), /* 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), /* 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 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 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 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 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 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 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 */ + {0, 0, 0} +}; + +#if defined(CONFIG_DRM_I915_KMS) +MODULE_DEVICE_TABLE(pci, pciidlist); +#endif + +void intel_detect_pch(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct pci_dev *pch; + + /* + * The reason to probe ISA bridge instead of Dev31:Fun0 is to + * make graphics device passthrough work easy for VMM, that only + * need to expose ISA bridge to let driver know the real hardware + * underneath. This is a requirement from virtualization team. + */ + pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL); + if (pch) { + if (pch->vendor == PCI_VENDOR_ID_INTEL) { + unsigned short id; + id = pch->device & INTEL_PCH_DEVICE_ID_MASK; + dev_priv->pch_id = id; + + if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_IBX; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found Ibex Peak PCH\n"); + WARN_ON(!IS_GEN5(dev)); + } else if (id == INTEL_PCH_CPT_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_CPT; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found CougarPoint PCH\n"); + WARN_ON(!(IS_GEN6(dev) || IS_IVYBRIDGE(dev))); + } else if (id == INTEL_PCH_PPT_DEVICE_ID_TYPE) { + /* PantherPoint is CPT compatible */ + dev_priv->pch_type = PCH_CPT; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found PatherPoint PCH\n"); + WARN_ON(!(IS_GEN6(dev) || IS_IVYBRIDGE(dev))); + } else if (id == INTEL_PCH_LPT_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_LPT; + dev_priv->num_pch_pll = 0; + DRM_DEBUG_KMS("Found LynxPoint PCH\n"); + WARN_ON(!IS_HASWELL(dev)); + } else if (id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_LPT; + dev_priv->num_pch_pll = 0; + DRM_DEBUG_KMS("Found LynxPoint LP PCH\n"); + WARN_ON(!IS_HASWELL(dev)); + } + BUG_ON(dev_priv->num_pch_pll > I915_NUM_PLLS); + } + pci_dev_put(pch); + } +} + +bool i915_semaphore_is_enabled(struct drm_device *dev) +{ + if (INTEL_INFO(dev)->gen < 6) + return 0; + + if (i915_semaphores >= 0) + return i915_semaphores; + +#ifdef CONFIG_INTEL_IOMMU + /* Enable semaphores on SNB when IO remapping is off */ + if (INTEL_INFO(dev)->gen == 6 && intel_iommu_gfx_mapped) + return false; +#endif + + return 1; +} + +static int i915_drm_freeze(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + drm_kms_helper_poll_disable(dev); + + pci_save_state(dev->pdev); + + /* If KMS is active, we do the leavevt stuff here */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + int error = i915_gem_idle(dev); + if (error) { + dev_err(&dev->pdev->dev, + "GEM idle failed, resume might fail\n"); + return error; + } + + cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work); + + intel_modeset_disable(dev); + + drm_irq_uninstall(dev); + } + + i915_save_state(dev); + + intel_opregion_fini(dev); + + /* Modeset on resume, not lid events */ + dev_priv->modeset_on_lid = 0; + + console_lock(); + intel_fbdev_set_suspend(dev, 1); + console_unlock(); + + return 0; +} + +int i915_suspend(struct drm_device *dev, pm_message_t state) +{ + int error; + + if (!dev || !dev->dev_private) { + DRM_ERROR("dev: %p\n", dev); + DRM_ERROR("DRM not initialized, aborting suspend.\n"); + return -ENODEV; + } + + if (state.event == PM_EVENT_PRETHAW) + return 0; + + + if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; + + error = i915_drm_freeze(dev); + if (error) + return error; + + if (state.event == PM_EVENT_SUSPEND) { + /* Shut down the device */ + pci_disable_device(dev->pdev); + pci_set_power_state(dev->pdev, PCI_D3hot); + } + + return 0; +} + +void intel_console_resume(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, + console_resume_work); + struct drm_device *dev = dev_priv->dev; + + console_lock(); + intel_fbdev_set_suspend(dev, 0); + console_unlock(); +} + +static int __i915_drm_thaw(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int error = 0; + + i915_restore_state(dev); + intel_opregion_setup(dev); + + /* KMS EnterVT equivalent */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_init_pch_refclk(dev); + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.suspended = 0; + + error = i915_gem_init_hw(dev); + mutex_unlock(&dev->struct_mutex); + + intel_modeset_init_hw(dev); + intel_modeset_setup_hw_state(dev, false); + drm_irq_install(dev); + } + + intel_opregion_init(dev); + + dev_priv->modeset_on_lid = 0; + + /* + * The console lock can be pretty contented on resume due + * to all the printk activity. Try to keep it out of the hot + * path of resume if possible. + */ + if (console_trylock()) { + intel_fbdev_set_suspend(dev, 0); + console_unlock(); + } else { + schedule_work(&dev_priv->console_resume_work); + } + + return error; +} + +static int i915_drm_thaw(struct drm_device *dev) +{ + int error = 0; + + intel_gt_reset(dev); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + mutex_lock(&dev->struct_mutex); + i915_gem_restore_gtt_mappings(dev); + mutex_unlock(&dev->struct_mutex); + } + + __i915_drm_thaw(dev); + + return error; +} + +int i915_resume(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; + + if (pci_enable_device(dev->pdev)) + return -EIO; + + pci_set_master(dev->pdev); + + intel_gt_reset(dev); + + /* + * Platforms with opregion should have sane BIOS, older ones (gen3 and + * earlier) need this since the BIOS might clear all our scratch PTEs. + */ + if (drm_core_check_feature(dev, DRIVER_MODESET) && + !dev_priv->opregion.header) { + mutex_lock(&dev->struct_mutex); + i915_gem_restore_gtt_mappings(dev); + mutex_unlock(&dev->struct_mutex); + } + + ret = __i915_drm_thaw(dev); + if (ret) + return ret; + + drm_kms_helper_poll_enable(dev); + return 0; +} + +static int i8xx_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_I85X(dev)) + return -ENODEV; + + I915_WRITE(D_STATE, I915_READ(D_STATE) | DSTATE_GFX_RESET_I830); + POSTING_READ(D_STATE); + + if (IS_I830(dev) || IS_845G(dev)) { + I915_WRITE(DEBUG_RESET_I830, + DEBUG_RESET_DISPLAY | + DEBUG_RESET_RENDER | + DEBUG_RESET_FULL); + POSTING_READ(DEBUG_RESET_I830); + msleep(1); + + I915_WRITE(DEBUG_RESET_I830, 0); + POSTING_READ(DEBUG_RESET_I830); + } + + msleep(1); + + I915_WRITE(D_STATE, I915_READ(D_STATE) & ~DSTATE_GFX_RESET_I830); + POSTING_READ(D_STATE); + + return 0; +} + +static int i965_reset_complete(struct drm_device *dev) +{ + u8 gdrst; + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + return (gdrst & GRDOM_RESET_ENABLE) == 0; +} + +static int i965_do_reset(struct drm_device *dev) +{ + int ret; + u8 gdrst; + + /* + * Set the domains we want to reset (GRDOM/bits 2 and 3) as + * well as the reset bit (GR/bit 0). Setting the GR bit + * triggers the reset; when done, the hardware will clear it. + */ + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + pci_write_config_byte(dev->pdev, I965_GDRST, + gdrst | GRDOM_RENDER | + GRDOM_RESET_ENABLE); + ret = wait_for(i965_reset_complete(dev), 500); + if (ret) + return ret; + + /* We can't reset render&media without also resetting display ... */ + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + pci_write_config_byte(dev->pdev, I965_GDRST, + gdrst | GRDOM_MEDIA | + GRDOM_RESET_ENABLE); + + return wait_for(i965_reset_complete(dev), 500); +} + +static int ironlake_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 gdrst; + int ret; + + gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); + I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, + gdrst | GRDOM_RENDER | GRDOM_RESET_ENABLE); + ret = wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); + if (ret) + return ret; + + /* We can't reset render&media without also resetting display ... */ + gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); + I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, + gdrst | GRDOM_MEDIA | GRDOM_RESET_ENABLE); + return wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); +} + +static int gen6_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + unsigned long irqflags; + + /* Hold gt_lock across reset to prevent any register access + * with forcewake not set correctly + */ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + + /* Reset the chip */ + + /* GEN6_GDRST is not in the gt power well, no need to check + * for fifo space for the write or forcewake the chip for + * the read + */ + I915_WRITE_NOTRACE(GEN6_GDRST, GEN6_GRDOM_FULL); + + /* Spin waiting for the device to ack the reset request */ + ret = wait_for((I915_READ_NOTRACE(GEN6_GDRST) & GEN6_GRDOM_FULL) == 0, 500); + + /* If reset with a user forcewake, try to restore, otherwise turn it off */ + if (dev_priv->forcewake_count) + dev_priv->gt.force_wake_get(dev_priv); + else + dev_priv->gt.force_wake_put(dev_priv); + + /* Restore fifo count */ + dev_priv->gt_fifo_count = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); + return ret; +} + +int intel_gpu_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret = -ENODEV; + + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + ret = gen6_do_reset(dev); + break; + case 5: + ret = ironlake_do_reset(dev); + break; + case 4: + ret = i965_do_reset(dev); + break; + case 2: + ret = i8xx_do_reset(dev); + break; + } + + /* Also reset the gpu hangman. */ + if (dev_priv->stop_rings) { + DRM_DEBUG("Simulated gpu hang, resetting stop_rings\n"); + dev_priv->stop_rings = 0; + if (ret == -ENODEV) { + DRM_ERROR("Reset not implemented, but ignoring " + "error for simulated gpu hangs\n"); + ret = 0; + } + } + + return ret; +} + +/** + * i915_reset - reset chip after a hang + * @dev: drm device to reset + * + * Reset the chip. Useful if a hang is detected. Returns zero on successful + * reset or otherwise an error code. + * + * Procedure is fairly simple: + * - reset the chip using the reset reg + * - re-init context state + * - re-init hardware status page + * - re-init ring buffer + * - re-init interrupt state + * - re-init display + */ +int i915_reset(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (!i915_try_reset) + return 0; + + mutex_lock(&dev->struct_mutex); + + i915_gem_reset(dev); + + ret = -ENODEV; + if (get_seconds() - dev_priv->last_gpu_reset < 5) + DRM_ERROR("GPU hanging too fast, declaring wedged!\n"); + else + ret = intel_gpu_reset(dev); + + dev_priv->last_gpu_reset = get_seconds(); + if (ret) { + DRM_ERROR("Failed to reset chip.\n"); + mutex_unlock(&dev->struct_mutex); + return ret; + } + + /* Ok, now get things going again... */ + + /* + * Everything depends on having the GTT running, so we need to start + * there. Fortunately we don't need to do this unless we reset the + * chip at a PCI level. + * + * Next we need to restore the context, but we don't use those + * yet either... + * + * Ring buffer needs to be re-initialized in the KMS case, or if X + * was running at the time of the reset (i.e. we weren't VT + * switched away). + */ + if (drm_core_check_feature(dev, DRIVER_MODESET) || + !dev_priv->mm.suspended) { + struct intel_ring_buffer *ring; + int i; + + dev_priv->mm.suspended = 0; + + i915_gem_init_swizzling(dev); + + for_each_ring(ring, dev_priv, i) + ring->init(ring); + + i915_gem_context_init(dev); + i915_gem_init_ppgtt(dev); + + /* + * It would make sense to re-init all the other hw state, at + * least the rps/rc6/emon init done within modeset_init_hw. For + * some unknown reason, this blows up my ilk, so don't. + */ + + mutex_unlock(&dev->struct_mutex); + + drm_irq_uninstall(dev); + drm_irq_install(dev); + } else { + mutex_unlock(&dev->struct_mutex); + } + + return 0; +} + +static int i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + int ret; + struct intel_device_info *intel_info = + (struct intel_device_info *) ent->driver_data; + + if (intel_info->is_valleyview) + if(!i915_preliminary_hw_support) { + DRM_ERROR("Preliminary hardware support disabled\n"); + return -ENODEV; + } + + /* Only bind to function 0 of the device. Early generations + * used function 1 as a placeholder for multi-head. This causes + * us confusion instead, especially on the systems where both + * functions have the same PCI-ID! + */ + if (PCI_FUNC(pdev->devfn)) + return -ENODEV; + + /* We've managed to ship a kms-enabled ddx that shipped with an XvMC + * implementation for gen3 (and only gen3) that used legacy drm maps + * (gasp!) to share buffers between X and the client. Hence we need to + * keep around the fake agp stuff for gen3, even when kms is enabled. */ + if (intel_info->gen != 3) { + driver.driver_features &= + ~(DRIVER_USE_AGP | DRIVER_REQUIRE_AGP); + } else if (!intel_agp_enabled) { + DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); + return -ENODEV; + } + + ret = drm_get_pci_dev(pdev, ent, &driver); + + if (!ret) + i915_hsw_enabled = 1; + return ret; +} + +static void +i915_pci_remove(struct pci_dev *pdev) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + + drm_put_dev(dev); +} + +static int i915_pm_suspend(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + int error; + + if (!drm_dev || !drm_dev->dev_private) { + dev_err(dev, "DRM not initialized, aborting suspend.\n"); + return -ENODEV; + } + + if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; + + error = i915_drm_freeze(drm_dev); + if (error) + return error; + + pci_disable_device(pdev); + pci_set_power_state(pdev, PCI_D3hot); + + return 0; +} + +static int i915_pm_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_resume(drm_dev); +} + +static int i915_pm_freeze(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + if (!drm_dev || !drm_dev->dev_private) { + dev_err(dev, "DRM not initialized, aborting suspend.\n"); + return -ENODEV; + } + + return i915_drm_freeze(drm_dev); +} + +static int i915_pm_thaw(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_drm_thaw(drm_dev); +} + +static int i915_pm_poweroff(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_drm_freeze(drm_dev); +} + +static const struct dev_pm_ops i915_pm_ops = { + .suspend = i915_pm_suspend, + .resume = i915_pm_resume, + .freeze = i915_pm_freeze, + .thaw = i915_pm_thaw, + .poweroff = i915_pm_poweroff, + .restore = i915_pm_resume, +}; + +static const struct vm_operations_struct i915_gem_vm_ops = { + .fault = i915_gem_fault, + .open = drm_gem_vm_open, + .close = drm_gem_vm_close, +}; + +static const struct file_operations i915_driver_fops = { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, + .mmap = drm_gem_mmap, + .poll = drm_poll, + .fasync = drm_fasync, + .read = drm_read, +#ifdef CONFIG_COMPAT + .compat_ioctl = i915_compat_ioctl, +#endif + .llseek = noop_llseek, +}; + +static struct drm_driver driver = { + /* Don't use MTRRs here; the Xserver or userspace app should + * deal with them for Intel hardware. + */ + .driver_features = + DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/ + DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME, + .load = i915_driver_load, + .unload = i915_driver_unload, + .open = i915_driver_open, + .lastclose = i915_driver_lastclose, + .preclose = i915_driver_preclose, + .postclose = i915_driver_postclose, + + /* Used in place of i915_pm_ops for non-DRIVER_MODESET */ + .suspend = i915_suspend, + .resume = i915_resume, + + .device_is_agp = i915_driver_device_is_agp, + .master_create = i915_master_create, + .master_destroy = i915_master_destroy, +#if defined(CONFIG_DEBUG_FS) + .debugfs_init = i915_debugfs_init, + .debugfs_cleanup = i915_debugfs_cleanup, +#endif + .gem_init_object = i915_gem_init_object, + .gem_free_object = i915_gem_free_object, + .gem_vm_ops = &i915_gem_vm_ops, + + .prime_handle_to_fd = drm_gem_prime_handle_to_fd, + .prime_fd_to_handle = drm_gem_prime_fd_to_handle, + .gem_prime_export = i915_gem_prime_export, + .gem_prime_import = i915_gem_prime_import, + + .dumb_create = i915_gem_dumb_create, + .dumb_map_offset = i915_gem_mmap_gtt, + .dumb_destroy = i915_gem_dumb_destroy, + .ioctls = i915_ioctls, + .fops = &i915_driver_fops, + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, +}; + +static struct pci_driver i915_pci_driver = { + .name = DRIVER_NAME, + .id_table = pciidlist, + .probe = i915_pci_probe, + .remove = i915_pci_remove, + .driver.pm = &i915_pm_ops, +}; + +static int __init i915_init(void) +{ + driver.num_ioctls = i915_max_ioctl; + + /* + * If CONFIG_DRM_I915_KMS is set, default to KMS unless + * explicitly disabled with the module pararmeter. + * + * Otherwise, just follow the parameter (defaulting to off). + * + * Allow optional vga_text_mode_force boot option to override + * the default behavior. + */ +#if defined(CONFIG_DRM_I915_KMS) + if (i915_modeset != 0) + driver.driver_features |= DRIVER_MODESET; +#endif + if (i915_modeset == 1) + driver.driver_features |= DRIVER_MODESET; + +#ifdef CONFIG_VGA_CONSOLE + if (vgacon_text_force() && i915_modeset == -1) + driver.driver_features &= ~DRIVER_MODESET; +#endif + + if (!(driver.driver_features & DRIVER_MODESET)) + driver.get_vblank_timestamp = NULL; + + return drm_pci_init(&driver, &i915_pci_driver); +} + +static void __exit i915_exit(void) +{ + drm_pci_exit(&driver, &i915_pci_driver); +} + +module_init(i915_init); +module_exit(i915_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_LICENSE("GPL and additional rights"); + +/* We give fast paths for the really cool registers */ +#define NEEDS_FORCE_WAKE(dev_priv, reg) \ + ((HAS_FORCE_WAKE((dev_priv)->dev)) && \ + ((reg) < 0x40000) && \ + ((reg) != FORCEWAKE)) + +static bool IS_DISPLAYREG(u32 reg) +{ + /* + * This should make it easier to transition modules over to the + * new register block scheme, since we can do it incrementally. + */ + if (reg >= VLV_DISPLAY_BASE) + return false; + + if (reg >= RENDER_RING_BASE && + reg < RENDER_RING_BASE + 0xff) + return false; + if (reg >= GEN6_BSD_RING_BASE && + reg < GEN6_BSD_RING_BASE + 0xff) + return false; + if (reg >= BLT_RING_BASE && + reg < BLT_RING_BASE + 0xff) + return false; + + if (reg == PGTBL_ER) + return false; + + if (reg >= IPEIR_I965 && + reg < HWSTAM) + return false; + + if (reg == MI_MODE) + return false; + + if (reg == GFX_MODE_GEN7) + return false; + + if (reg == RENDER_HWS_PGA_GEN7 || + reg == BSD_HWS_PGA_GEN7 || + reg == BLT_HWS_PGA_GEN7) + return false; + + if (reg == GEN6_BSD_SLEEP_PSMI_CONTROL || + reg == GEN6_BSD_RNCID) + return false; + + if (reg == GEN6_BLITTER_ECOSKPD) + return false; + + if (reg >= 0x4000c && + reg <= 0x4002c) + return false; + + if (reg >= 0x4f000 && + reg <= 0x4f08f) + return false; + + if (reg >= 0x4f100 && + reg <= 0x4f11f) + return false; + + if (reg >= VLV_MASTER_IER && + reg <= GEN6_PMIER) + return false; + + if (reg >= FENCE_REG_SANDYBRIDGE_0 && + reg < (FENCE_REG_SANDYBRIDGE_0 + (16*8))) + return false; + + if (reg >= VLV_IIR_RW && + reg <= VLV_ISR) + return false; + + if (reg == FORCEWAKE_VLV || + reg == FORCEWAKE_ACK_VLV) + return false; + + if (reg == GEN6_GDRST) + return false; + + switch (reg) { + case _3D_CHICKEN3: + case IVB_CHICKEN3: + case GEN7_COMMON_SLICE_CHICKEN1: + case GEN7_L3CNTLREG1: + case GEN7_L3_CHICKEN_MODE_REGISTER: + case GEN7_ROW_CHICKEN2: + case GEN7_L3SQCREG4: + case GEN7_SQ_CHICKEN_MBCUNIT_CONFIG: + case GEN7_HALF_SLICE_CHICKEN1: + case GEN6_MBCTL: + case GEN6_UCGCTL2: + return false; + default: + break; + } + + return true; +} + +static void +ilk_dummy_write(struct drm_i915_private *dev_priv) +{ + /* WaIssueDummyWriteToWakeupFromRC6: Issue a dummy write to wake up the + * chip from rc6 before touching it for real. MI_MODE is masked, hence + * harmless to write 0 into. */ + I915_WRITE_NOTRACE(MI_MODE, 0); +} + +#define __i915_read(x, y) \ +u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg) { \ + u##x val = 0; \ + if (IS_GEN5(dev_priv->dev)) \ + ilk_dummy_write(dev_priv); \ + if (NEEDS_FORCE_WAKE((dev_priv), (reg))) { \ + unsigned long irqflags; \ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); \ + if (dev_priv->forcewake_count == 0) \ + dev_priv->gt.force_wake_get(dev_priv); \ + val = read##y(dev_priv->regs + reg); \ + if (dev_priv->forcewake_count == 0) \ + dev_priv->gt.force_wake_put(dev_priv); \ + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \ + } else if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \ + val = read##y(dev_priv->regs + reg + 0x180000); \ + } else { \ + val = read##y(dev_priv->regs + reg); \ + } \ + trace_i915_reg_rw(false, reg, val, sizeof(val)); \ + return val; \ +} + +__i915_read(8, b) +__i915_read(16, w) +__i915_read(32, l) +__i915_read(64, q) +#undef __i915_read + +#define __i915_write(x, y) \ +void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \ + u32 __fifo_ret = 0; \ + trace_i915_reg_rw(true, reg, val, sizeof(val)); \ + if (NEEDS_FORCE_WAKE((dev_priv), (reg))) { \ + __fifo_ret = __gen6_gt_wait_for_fifo(dev_priv); \ + } \ + if (IS_GEN5(dev_priv->dev)) \ + ilk_dummy_write(dev_priv); \ + if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \ + DRM_ERROR("Unknown unclaimed register before writing to %x\n", reg); \ + I915_WRITE_NOTRACE(GEN7_ERR_INT, ERR_INT_MMIO_UNCLAIMED); \ + } \ + if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \ + write##y(val, dev_priv->regs + reg + 0x180000); \ + } else { \ + write##y(val, dev_priv->regs + reg); \ + } \ + if (unlikely(__fifo_ret)) { \ + gen6_gt_check_fifodbg(dev_priv); \ + } \ + if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \ + DRM_ERROR("Unclaimed write to %x\n", reg); \ + writel(ERR_INT_MMIO_UNCLAIMED, dev_priv->regs + GEN7_ERR_INT); \ + } \ +} +__i915_write(8, b) +__i915_write(16, w) +__i915_write(32, l) +__i915_write(64, q) +#undef __i915_write + +static const struct register_whitelist { + uint64_t offset; + uint32_t size; + uint32_t gen_bitmask; /* support gens, 0x10 for 4, 0x30 for 4 and 5, etc. */ +} whitelist[] = { + { RING_TIMESTAMP(RENDER_RING_BASE), 8, 0xF0 }, +}; + +int i915_reg_read_ioctl(struct drm_device *dev, + void *data, struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_reg_read *reg = data; + struct register_whitelist const *entry = whitelist; + int i; + + for (i = 0; i < ARRAY_SIZE(whitelist); i++, entry++) { + if (entry->offset == reg->offset && + (1 << INTEL_INFO(dev)->gen & entry->gen_bitmask)) + break; + } + + if (i == ARRAY_SIZE(whitelist)) + return -EINVAL; + + switch (entry->size) { + case 8: + reg->val = I915_READ64(reg->offset); + break; + case 4: + reg->val = I915_READ(reg->offset); + break; + case 2: + reg->val = I915_READ16(reg->offset); + break; + case 1: + reg->val = I915_READ8(reg->offset); + break; + default: + WARN_ON(1); + return -EINVAL; + } + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_bios.h +++ linux-3.5.0/ubuntu/i915/intel_bios.h @@ -0,0 +1,621 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#ifndef _I830_BIOS_H_ +#define _I830_BIOS_H_ + +#include + +struct vbt_header { + u8 signature[20]; /**< Always starts with 'VBT$' */ + u16 version; /**< decimal */ + u16 header_size; /**< in bytes */ + u16 vbt_size; /**< in bytes */ + u8 vbt_checksum; + u8 reserved0; + u32 bdb_offset; /**< from beginning of VBT */ + u32 aim_offset[4]; /**< from beginning of VBT */ +} __attribute__((packed)); + +struct bdb_header { + u8 signature[16]; /**< Always 'BIOS_DATA_BLOCK' */ + u16 version; /**< decimal */ + u16 header_size; /**< in bytes */ + u16 bdb_size; /**< in bytes */ +}; + +/* strictly speaking, this is a "skip" block, but it has interesting info */ +struct vbios_data { + u8 type; /* 0 == desktop, 1 == mobile */ + u8 relstage; + u8 chipset; + u8 lvds_present:1; + u8 tv_present:1; + u8 rsvd2:6; /* finish byte */ + u8 rsvd3[4]; + u8 signon[155]; + u8 copyright[61]; + u16 code_segment; + u8 dos_boot_mode; + u8 bandwidth_percent; + u8 rsvd4; /* popup memory size */ + u8 resize_pci_bios; + u8 rsvd5; /* is crt already on ddc2 */ +} __attribute__((packed)); + +/* + * There are several types of BIOS data blocks (BDBs), each block has + * an ID and size in the first 3 bytes (ID in first, size in next 2). + * Known types are listed below. + */ +#define BDB_GENERAL_FEATURES 1 +#define BDB_GENERAL_DEFINITIONS 2 +#define BDB_OLD_TOGGLE_LIST 3 +#define BDB_MODE_SUPPORT_LIST 4 +#define BDB_GENERIC_MODE_TABLE 5 +#define BDB_EXT_MMIO_REGS 6 +#define BDB_SWF_IO 7 +#define BDB_SWF_MMIO 8 +#define BDB_DOT_CLOCK_TABLE 9 +#define BDB_MODE_REMOVAL_TABLE 10 +#define BDB_CHILD_DEVICE_TABLE 11 +#define BDB_DRIVER_FEATURES 12 +#define BDB_DRIVER_PERSISTENCE 13 +#define BDB_EXT_TABLE_PTRS 14 +#define BDB_DOT_CLOCK_OVERRIDE 15 +#define BDB_DISPLAY_SELECT 16 +/* 17 rsvd */ +#define BDB_DRIVER_ROTATION 18 +#define BDB_DISPLAY_REMOVE 19 +#define BDB_OEM_CUSTOM 20 +#define BDB_EFP_LIST 21 /* workarounds for VGA hsync/vsync */ +#define BDB_SDVO_LVDS_OPTIONS 22 +#define BDB_SDVO_PANEL_DTDS 23 +#define BDB_SDVO_LVDS_PNP_IDS 24 +#define BDB_SDVO_LVDS_POWER_SEQ 25 +#define BDB_TV_OPTIONS 26 +#define BDB_EDP 27 +#define BDB_LVDS_OPTIONS 40 +#define BDB_LVDS_LFP_DATA_PTRS 41 +#define BDB_LVDS_LFP_DATA 42 +#define BDB_LVDS_BACKLIGHT 43 +#define BDB_LVDS_POWER 44 +#define BDB_SKIP 254 /* VBIOS private block, ignore */ + +struct bdb_general_features { + /* bits 1 */ + u8 panel_fitting:2; + u8 flexaim:1; + u8 msg_enable:1; + u8 clear_screen:3; + u8 color_flip:1; + + /* bits 2 */ + u8 download_ext_vbt:1; + u8 enable_ssc:1; + u8 ssc_freq:1; + u8 enable_lfp_on_override:1; + u8 disable_ssc_ddt:1; + u8 rsvd7:1; + u8 display_clock_mode:1; + u8 rsvd8:1; /* finish byte */ + + /* bits 3 */ + u8 disable_smooth_vision:1; + u8 single_dvi:1; + u8 rsvd9:1; + u8 fdi_rx_polarity_inverted:1; + u8 rsvd10:4; /* finish byte */ + + /* bits 4 */ + u8 legacy_monitor_detect; + + /* bits 5 */ + u8 int_crt_support:1; + u8 int_tv_support:1; + u8 int_efp_support:1; + u8 dp_ssc_enb:1; /* PCH attached eDP supports SSC */ + u8 dp_ssc_freq:1; /* SSC freq for PCH attached eDP */ + u8 rsvd11:3; /* finish byte */ +} __attribute__((packed)); + +/* pre-915 */ +#define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ +#define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ +#define GPIO_PIN_ADD_DDC 0x04 /* "ADDCARD DDC GPIO pins" */ +#define GPIO_PIN_ADD_DDC_I2C 0x06 /* "ADDCARD DDC/I2C GPIO pins" */ + +/* Pre 915 */ +#define DEVICE_TYPE_NONE 0x00 +#define DEVICE_TYPE_CRT 0x01 +#define DEVICE_TYPE_TV 0x09 +#define DEVICE_TYPE_EFP 0x12 +#define DEVICE_TYPE_LFP 0x22 +/* On 915+ */ +#define DEVICE_TYPE_CRT_DPMS 0x6001 +#define DEVICE_TYPE_CRT_DPMS_HOTPLUG 0x4001 +#define DEVICE_TYPE_TV_COMPOSITE 0x0209 +#define DEVICE_TYPE_TV_MACROVISION 0x0289 +#define DEVICE_TYPE_TV_RF_COMPOSITE 0x020c +#define DEVICE_TYPE_TV_SVIDEO_COMPOSITE 0x0609 +#define DEVICE_TYPE_TV_SCART 0x0209 +#define DEVICE_TYPE_TV_CODEC_HOTPLUG_PWR 0x6009 +#define DEVICE_TYPE_EFP_HOTPLUG_PWR 0x6012 +#define DEVICE_TYPE_EFP_DVI_HOTPLUG_PWR 0x6052 +#define DEVICE_TYPE_EFP_DVI_I 0x6053 +#define DEVICE_TYPE_EFP_DVI_D_DUAL 0x6152 +#define DEVICE_TYPE_EFP_DVI_D_HDCP 0x60d2 +#define DEVICE_TYPE_OPENLDI_HOTPLUG_PWR 0x6062 +#define DEVICE_TYPE_OPENLDI_DUALPIX 0x6162 +#define DEVICE_TYPE_LFP_PANELLINK 0x5012 +#define DEVICE_TYPE_LFP_CMOS_PWR 0x5042 +#define DEVICE_TYPE_LFP_LVDS_PWR 0x5062 +#define DEVICE_TYPE_LFP_LVDS_DUAL 0x5162 +#define DEVICE_TYPE_LFP_LVDS_DUAL_HDCP 0x51e2 + +#define DEVICE_CFG_NONE 0x00 +#define DEVICE_CFG_12BIT_DVOB 0x01 +#define DEVICE_CFG_12BIT_DVOC 0x02 +#define DEVICE_CFG_24BIT_DVOBC 0x09 +#define DEVICE_CFG_24BIT_DVOCB 0x0a +#define DEVICE_CFG_DUAL_DVOB 0x11 +#define DEVICE_CFG_DUAL_DVOC 0x12 +#define DEVICE_CFG_DUAL_DVOBC 0x13 +#define DEVICE_CFG_DUAL_LINK_DVOBC 0x19 +#define DEVICE_CFG_DUAL_LINK_DVOCB 0x1a + +#define DEVICE_WIRE_NONE 0x00 +#define DEVICE_WIRE_DVOB 0x01 +#define DEVICE_WIRE_DVOC 0x02 +#define DEVICE_WIRE_DVOBC 0x03 +#define DEVICE_WIRE_DVOBB 0x05 +#define DEVICE_WIRE_DVOCC 0x06 +#define DEVICE_WIRE_DVOB_MASTER 0x0d +#define DEVICE_WIRE_DVOC_MASTER 0x0e + +#define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ +#define DEVICE_PORT_DVOB 0x01 +#define DEVICE_PORT_DVOC 0x02 + +struct child_device_config { + u16 handle; + u16 device_type; + u8 device_id[10]; /* ascii string */ + u16 addin_offset; + u8 dvo_port; /* See Device_PORT_* above */ + u8 i2c_pin; + u8 slave_addr; + u8 ddc_pin; + u16 edid_ptr; + u8 dvo_cfg; /* See DEVICE_CFG_* above */ + u8 dvo2_port; + u8 i2c2_pin; + u8 slave2_addr; + u8 ddc2_pin; + u8 capabilities; + u8 dvo_wiring;/* See DEVICE_WIRE_* above */ + u8 dvo2_wiring; + u16 extended_type; + u8 dvo_function; +} __attribute__((packed)); + +struct bdb_general_definitions { + /* DDC GPIO */ + u8 crt_ddc_gmbus_pin; + + /* DPMS bits */ + u8 dpms_acpi:1; + u8 skip_boot_crt_detect:1; + u8 dpms_aim:1; + u8 rsvd1:5; /* finish byte */ + + /* boot device bits */ + u8 boot_display[2]; + u8 child_dev_size; + + /* + * Device info: + * If TV is present, it'll be at devices[0]. + * LVDS will be next, either devices[0] or [1], if present. + * On some platforms the number of device is 6. But could be as few as + * 4 if both TV and LVDS are missing. + * And the device num is related with the size of general definition + * block. It is obtained by using the following formula: + * number = (block_size - sizeof(bdb_general_definitions))/ + * sizeof(child_device_config); + */ + struct child_device_config devices[0]; +} __attribute__((packed)); + +struct bdb_lvds_options { + u8 panel_type; + u8 rsvd1; + /* LVDS capabilities, stored in a dword */ + u8 pfit_mode:2; + u8 pfit_text_mode_enhanced:1; + u8 pfit_gfx_mode_enhanced:1; + u8 pfit_ratio_auto:1; + u8 pixel_dither:1; + u8 lvds_edid:1; + u8 rsvd2:1; + u8 rsvd4; +} __attribute__((packed)); + +/* LFP pointer table contains entries to the struct below */ +struct bdb_lvds_lfp_data_ptr { + u16 fp_timing_offset; /* offsets are from start of bdb */ + u8 fp_table_size; + u16 dvo_timing_offset; + u8 dvo_table_size; + u16 panel_pnp_id_offset; + u8 pnp_table_size; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data_ptrs { + u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ + struct bdb_lvds_lfp_data_ptr ptr[16]; +} __attribute__((packed)); + +/* LFP data has 3 blocks per entry */ +struct lvds_fp_timing { + u16 x_res; + u16 y_res; + u32 lvds_reg; + u32 lvds_reg_val; + u32 pp_on_reg; + u32 pp_on_reg_val; + u32 pp_off_reg; + u32 pp_off_reg_val; + u32 pp_cycle_reg; + u32 pp_cycle_reg_val; + u32 pfit_reg; + u32 pfit_reg_val; + u16 terminator; +} __attribute__((packed)); + +struct lvds_dvo_timing { + u16 clock; /**< In 10khz */ + u8 hactive_lo; + u8 hblank_lo; + u8 hblank_hi:4; + u8 hactive_hi:4; + u8 vactive_lo; + u8 vblank_lo; + u8 vblank_hi:4; + u8 vactive_hi:4; + u8 hsync_off_lo; + u8 hsync_pulse_width; + u8 vsync_pulse_width:4; + u8 vsync_off:4; + u8 rsvd0:6; + u8 hsync_off_hi:2; + u8 h_image; + u8 v_image; + u8 max_hv; + u8 h_border; + u8 v_border; + u8 rsvd1:3; + u8 digital:2; + u8 vsync_positive:1; + u8 hsync_positive:1; + u8 rsvd2:1; +} __attribute__((packed)); + +struct lvds_pnp_id { + u16 mfg_name; + u16 product_code; + u32 serial; + u8 mfg_week; + u8 mfg_year; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data_entry { + struct lvds_fp_timing fp_timing; + struct lvds_dvo_timing dvo_timing; + struct lvds_pnp_id pnp_id; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data { + struct bdb_lvds_lfp_data_entry data[16]; +} __attribute__((packed)); + +struct aimdb_header { + char signature[16]; + char oem_device[20]; + u16 aimdb_version; + u16 aimdb_header_size; + u16 aimdb_size; +} __attribute__((packed)); + +struct aimdb_block { + u8 aimdb_id; + u16 aimdb_size; +} __attribute__((packed)); + +struct vch_panel_data { + u16 fp_timing_offset; + u8 fp_timing_size; + u16 dvo_timing_offset; + u8 dvo_timing_size; + u16 text_fitting_offset; + u8 text_fitting_size; + u16 graphics_fitting_offset; + u8 graphics_fitting_size; +} __attribute__((packed)); + +struct vch_bdb_22 { + struct aimdb_block aimdb_block; + struct vch_panel_data panels[16]; +} __attribute__((packed)); + +struct bdb_sdvo_lvds_options { + u8 panel_backlight; + u8 h40_set_panel_type; + u8 panel_type; + u8 ssc_clk_freq; + u16 als_low_trip; + u16 als_high_trip; + u8 sclalarcoeff_tab_row_num; + u8 sclalarcoeff_tab_row_size; + u8 coefficient[8]; + u8 panel_misc_bits_1; + u8 panel_misc_bits_2; + u8 panel_misc_bits_3; + u8 panel_misc_bits_4; +} __attribute__((packed)); + + +#define BDB_DRIVER_FEATURE_NO_LVDS 0 +#define BDB_DRIVER_FEATURE_INT_LVDS 1 +#define BDB_DRIVER_FEATURE_SDVO_LVDS 2 +#define BDB_DRIVER_FEATURE_EDP 3 + +struct bdb_driver_features { + u8 boot_dev_algorithm:1; + u8 block_display_switch:1; + u8 allow_display_switch:1; + u8 hotplug_dvo:1; + u8 dual_view_zoom:1; + u8 int15h_hook:1; + u8 sprite_in_clone:1; + u8 primary_lfp_id:1; + + u16 boot_mode_x; + u16 boot_mode_y; + u8 boot_mode_bpp; + u8 boot_mode_refresh; + + u16 enable_lfp_primary:1; + u16 selective_mode_pruning:1; + u16 dual_frequency:1; + u16 render_clock_freq:1; /* 0: high freq; 1: low freq */ + u16 nt_clone_support:1; + u16 power_scheme_ui:1; /* 0: CUI; 1: 3rd party */ + u16 sprite_display_assign:1; /* 0: secondary; 1: primary */ + u16 cui_aspect_scaling:1; + u16 preserve_aspect_ratio:1; + u16 sdvo_device_power_down:1; + u16 crt_hotplug:1; + u16 lvds_config:2; + u16 tv_hotplug:1; + u16 hdmi_config:2; + + u8 static_display:1; + u8 reserved2:7; + u16 legacy_crt_max_x; + u16 legacy_crt_max_y; + u8 legacy_crt_max_refresh; + + u8 hdmi_termination; + u8 custom_vbt_version; +} __attribute__((packed)); + +#define EDP_18BPP 0 +#define EDP_24BPP 1 +#define EDP_30BPP 2 +#define EDP_RATE_1_62 0 +#define EDP_RATE_2_7 1 +#define EDP_LANE_1 0 +#define EDP_LANE_2 1 +#define EDP_LANE_4 3 +#define EDP_PREEMPHASIS_NONE 0 +#define EDP_PREEMPHASIS_3_5dB 1 +#define EDP_PREEMPHASIS_6dB 2 +#define EDP_PREEMPHASIS_9_5dB 3 +#define EDP_VSWING_0_4V 0 +#define EDP_VSWING_0_6V 1 +#define EDP_VSWING_0_8V 2 +#define EDP_VSWING_1_2V 3 + +struct edp_power_seq { + u16 t1_t3; + u16 t8; + u16 t9; + u16 t10; + u16 t11_t12; +} __attribute__ ((packed)); + +struct edp_link_params { + u8 rate:4; + u8 lanes:4; + u8 preemphasis:4; + u8 vswing:4; +} __attribute__ ((packed)); + +struct bdb_edp { + struct edp_power_seq power_seqs[16]; + u32 color_depth; + struct edp_link_params link_params[16]; + u32 sdrrs_msa_timing_delay; + + /* ith bit indicates enabled/disabled for (i+1)th panel */ + u16 edp_s3d_feature; + u16 edp_t3_optimization; +} __attribute__ ((packed)); + +void intel_setup_bios(struct drm_device *dev); +int intel_parse_bios(struct drm_device *dev); + +/* + * Driver<->VBIOS interaction occurs through scratch bits in + * GR18 & SWF*. + */ + +/* GR18 bits are set on display switch and hotkey events */ +#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */ +#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */ +#define GR18_HK_NONE (0x0<<3) +#define GR18_HK_LFP_STRETCH (0x1<<3) +#define GR18_HK_TOGGLE_DISP (0x2<<3) +#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */ +#define GR18_HK_POPUP_DISABLED (0x6<<3) +#define GR18_HK_POPUP_ENABLED (0x7<<3) +#define GR18_HK_PFIT (0x8<<3) +#define GR18_HK_APM_CHANGE (0xa<<3) +#define GR18_HK_MULTIPLE (0xc<<3) +#define GR18_USER_INT_EN (1<<2) +#define GR18_A0000_FLUSH_EN (1<<1) +#define GR18_SMM_EN (1<<0) + +/* Set by driver, cleared by VBIOS */ +#define SWF00_YRES_SHIFT 16 +#define SWF00_XRES_SHIFT 0 +#define SWF00_RES_MASK 0xffff + +/* Set by VBIOS at boot time and driver at runtime */ +#define SWF01_TV2_FORMAT_SHIFT 8 +#define SWF01_TV1_FORMAT_SHIFT 0 +#define SWF01_TV_FORMAT_MASK 0xffff + +#define SWF10_VBIOS_BLC_I2C_EN (1<<29) +#define SWF10_GTT_OVERRIDE_EN (1<<28) +#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */ +#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24) +#define SWF10_OLD_TOGGLE 0x0 +#define SWF10_TOGGLE_LIST_1 0x1 +#define SWF10_TOGGLE_LIST_2 0x2 +#define SWF10_TOGGLE_LIST_3 0x3 +#define SWF10_TOGGLE_LIST_4 0x4 +#define SWF10_PANNING_EN (1<<23) +#define SWF10_DRIVER_LOADED (1<<22) +#define SWF10_EXTENDED_DESKTOP (1<<21) +#define SWF10_EXCLUSIVE_MODE (1<<20) +#define SWF10_OVERLAY_EN (1<<19) +#define SWF10_PLANEB_HOLDOFF (1<<18) +#define SWF10_PLANEA_HOLDOFF (1<<17) +#define SWF10_VGA_HOLDOFF (1<<16) +#define SWF10_ACTIVE_DISP_MASK 0xffff +#define SWF10_PIPEB_LFP2 (1<<15) +#define SWF10_PIPEB_EFP2 (1<<14) +#define SWF10_PIPEB_TV2 (1<<13) +#define SWF10_PIPEB_CRT2 (1<<12) +#define SWF10_PIPEB_LFP (1<<11) +#define SWF10_PIPEB_EFP (1<<10) +#define SWF10_PIPEB_TV (1<<9) +#define SWF10_PIPEB_CRT (1<<8) +#define SWF10_PIPEA_LFP2 (1<<7) +#define SWF10_PIPEA_EFP2 (1<<6) +#define SWF10_PIPEA_TV2 (1<<5) +#define SWF10_PIPEA_CRT2 (1<<4) +#define SWF10_PIPEA_LFP (1<<3) +#define SWF10_PIPEA_EFP (1<<2) +#define SWF10_PIPEA_TV (1<<1) +#define SWF10_PIPEA_CRT (1<<0) + +#define SWF11_MEMORY_SIZE_SHIFT 16 +#define SWF11_SV_TEST_EN (1<<15) +#define SWF11_IS_AGP (1<<14) +#define SWF11_DISPLAY_HOLDOFF (1<<13) +#define SWF11_DPMS_REDUCED (1<<12) +#define SWF11_IS_VBE_MODE (1<<11) +#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */ +#define SWF11_DPMS_MASK 0x07 +#define SWF11_DPMS_OFF (1<<2) +#define SWF11_DPMS_SUSPEND (1<<1) +#define SWF11_DPMS_STANDBY (1<<0) +#define SWF11_DPMS_ON 0 + +#define SWF14_GFX_PFIT_EN (1<<31) +#define SWF14_TEXT_PFIT_EN (1<<30) +#define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */ +#define SWF14_POPUP_EN (1<<28) +#define SWF14_DISPLAY_HOLDOFF (1<<27) +#define SWF14_DISP_DETECT_EN (1<<26) +#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */ +#define SWF14_DRIVER_STATUS (1<<24) +#define SWF14_OS_TYPE_WIN9X (1<<23) +#define SWF14_OS_TYPE_WINNT (1<<22) +/* 21:19 rsvd */ +#define SWF14_PM_TYPE_MASK 0x00070000 +#define SWF14_PM_ACPI_VIDEO (0x4 << 16) +#define SWF14_PM_ACPI (0x3 << 16) +#define SWF14_PM_APM_12 (0x2 << 16) +#define SWF14_PM_APM_11 (0x1 << 16) +#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */ + /* if GR18 indicates a display switch */ +#define SWF14_DS_PIPEB_LFP2_EN (1<<15) +#define SWF14_DS_PIPEB_EFP2_EN (1<<14) +#define SWF14_DS_PIPEB_TV2_EN (1<<13) +#define SWF14_DS_PIPEB_CRT2_EN (1<<12) +#define SWF14_DS_PIPEB_LFP_EN (1<<11) +#define SWF14_DS_PIPEB_EFP_EN (1<<10) +#define SWF14_DS_PIPEB_TV_EN (1<<9) +#define SWF14_DS_PIPEB_CRT_EN (1<<8) +#define SWF14_DS_PIPEA_LFP2_EN (1<<7) +#define SWF14_DS_PIPEA_EFP2_EN (1<<6) +#define SWF14_DS_PIPEA_TV2_EN (1<<5) +#define SWF14_DS_PIPEA_CRT2_EN (1<<4) +#define SWF14_DS_PIPEA_LFP_EN (1<<3) +#define SWF14_DS_PIPEA_EFP_EN (1<<2) +#define SWF14_DS_PIPEA_TV_EN (1<<1) +#define SWF14_DS_PIPEA_CRT_EN (1<<0) + /* if GR18 indicates a panel fitting request */ +#define SWF14_PFIT_EN (1<<0) /* 0 means disable */ + /* if GR18 indicates an APM change request */ +#define SWF14_APM_HIBERNATE 0x4 +#define SWF14_APM_SUSPEND 0x3 +#define SWF14_APM_STANDBY 0x1 +#define SWF14_APM_RESTORE 0x0 + +/* Add the device class for LFP, TV, HDMI */ +#define DEVICE_TYPE_INT_LFP 0x1022 +#define DEVICE_TYPE_INT_TV 0x1009 +#define DEVICE_TYPE_HDMI 0x60D2 +#define DEVICE_TYPE_DP 0x68C6 +#define DEVICE_TYPE_eDP 0x78C6 + +/* define the DVO port for HDMI output type */ +#define DVO_B 1 +#define DVO_C 2 +#define DVO_D 3 + +/* define the PORT for DP output type */ +#define PORT_IDPB 7 +#define PORT_IDPC 8 +#define PORT_IDPD 9 + +#endif /* _I830_BIOS_H_ */ --- linux-3.5.0.orig/ubuntu/i915/intel_drv.h +++ linux-3.5.0/ubuntu/i915/intel_drv.h @@ -0,0 +1,686 @@ +/* + * Copyright (c) 2006 Dave Airlie + * Copyright (c) 2007-2008 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef __INTEL_DRV_H__ +#define __INTEL_DRV_H__ + +#include +#include +#include "i915_drv.h" +#include +#include +#include +#include + +#define I915_PARAM_HAS_PINNED_BATCHES 24 +/** Inform the kernel that the batch is and will always be pinned. This + * negates the requirement for a workaround to be performed to avoid + * an incoherent CS (such as can be found on 830/845). If this flag is + * not passed, the kernel will endeavour to make sure the batch is + * coherent with the CS before execution. If this flag is passed, + * userspace assumes the responsibility for ensuring the same. + */ +#define I915_EXEC_IS_PINNED (1<<10) + +#define _wait_for(COND, MS, W) ({ \ + unsigned long timeout__ = jiffies + msecs_to_jiffies(MS); \ + int ret__ = 0; \ + while (!(COND)) { \ + if (time_after(jiffies, timeout__)) { \ + ret__ = -ETIMEDOUT; \ + break; \ + } \ + if (W && drm_can_sleep()) { \ + msleep(W); \ + } else { \ + cpu_relax(); \ + } \ + } \ + ret__; \ +}) + +#define wait_for_atomic_us(COND, US) ({ \ + unsigned long timeout__ = jiffies + usecs_to_jiffies(US); \ + int ret__ = 0; \ + while (!(COND)) { \ + if (time_after(jiffies, timeout__)) { \ + ret__ = -ETIMEDOUT; \ + break; \ + } \ + cpu_relax(); \ + } \ + ret__; \ +}) + +#define wait_for(COND, MS) _wait_for(COND, MS, 1) +#define wait_for_atomic(COND, MS) _wait_for(COND, MS, 0) + +#define KHz(x) (1000*x) +#define MHz(x) KHz(1000*x) + +/* + * Display related stuff + */ + +/* store information about an Ixxx DVO */ +/* The i830->i865 use multiple DVOs with multiple i2cs */ +/* the i915, i945 have a single sDVO i2c bus - which is different */ +#define MAX_OUTPUTS 6 +/* maximum connectors per crtcs in the mode set */ +#define INTELFB_CONN_LIMIT 4 + +#define INTEL_I2C_BUS_DVO 1 +#define INTEL_I2C_BUS_SDVO 2 + +/* these are outputs from the chip - integrated only + external chips are via DVO or SDVO output */ +#define INTEL_OUTPUT_UNUSED 0 +#define INTEL_OUTPUT_ANALOG 1 +#define INTEL_OUTPUT_DVO 2 +#define INTEL_OUTPUT_SDVO 3 +#define INTEL_OUTPUT_LVDS 4 +#define INTEL_OUTPUT_TVOUT 5 +#define INTEL_OUTPUT_HDMI 6 +#define INTEL_OUTPUT_DISPLAYPORT 7 +#define INTEL_OUTPUT_EDP 8 +#define INTEL_OUTPUT_UNKNOWN 9 + +#define INTEL_DVO_CHIP_NONE 0 +#define INTEL_DVO_CHIP_LVDS 1 +#define INTEL_DVO_CHIP_TMDS 2 +#define INTEL_DVO_CHIP_TVOUT 4 + +/* drm_display_mode->private_flags */ +#define INTEL_MODE_PIXEL_MULTIPLIER_SHIFT (0x0) +#define INTEL_MODE_PIXEL_MULTIPLIER_MASK (0xf << INTEL_MODE_PIXEL_MULTIPLIER_SHIFT) +#define INTEL_MODE_DP_FORCE_6BPC (0x10) +/* This flag must be set by the encoder's mode_fixup if it changes the crtc + * timings in the mode to prevent the crtc fixup from overwriting them. + * Currently only lvds needs that. */ +#define INTEL_MODE_CRTC_TIMINGS_SET (0x20) + +static inline void +intel_mode_set_pixel_multiplier(struct drm_display_mode *mode, + int multiplier) +{ + mode->clock *= multiplier; + mode->private_flags |= multiplier; +} + +static inline int +intel_mode_get_pixel_multiplier(const struct drm_display_mode *mode) +{ + return (mode->private_flags & INTEL_MODE_PIXEL_MULTIPLIER_MASK) >> INTEL_MODE_PIXEL_MULTIPLIER_SHIFT; +} + +struct intel_framebuffer { + struct drm_framebuffer base; + struct drm_i915_gem_object *obj; +}; + +struct intel_fbdev { + struct drm_fb_helper helper; + struct intel_framebuffer ifb; + struct list_head fbdev_list; + struct drm_display_mode *our_mode; +}; + +struct intel_encoder { + struct drm_encoder base; + /* + * The new crtc this encoder will be driven from. Only differs from + * base->crtc while a modeset is in progress. + */ + struct intel_crtc *new_crtc; + + int type; + bool needs_tv_clock; + /* + * Intel hw has only one MUX where encoders could be clone, hence a + * simple flag is enough to compute the possible_clones mask. + */ + bool cloneable; + bool connectors_active; + void (*hot_plug)(struct intel_encoder *); + void (*pre_enable)(struct intel_encoder *); + void (*enable)(struct intel_encoder *); + void (*disable)(struct intel_encoder *); + void (*post_disable)(struct intel_encoder *); + /* Read out the current hw state of this connector, returning true if + * the encoder is active. If the encoder is enabled it also set the pipe + * it is connected to in the pipe parameter. */ + bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); + int crtc_mask; +}; + +struct intel_panel { + struct drm_display_mode *fixed_mode; + int fitting_mode; +}; + +struct intel_connector { + struct drm_connector base; + /* + * The fixed encoder this connector is connected to. + */ + struct intel_encoder *encoder; + + /* + * The new encoder this connector will be driven. Only differs from + * encoder while a modeset is in progress. + */ + struct intel_encoder *new_encoder; + + /* Reads out the current hw, returning true if the connector is enabled + * and active (i.e. dpms ON state). */ + bool (*get_hw_state)(struct intel_connector *); + + /* Panel info for eDP and LVDS */ + struct intel_panel panel; + + /* Cached EDID for eDP and LVDS. May hold ERR_PTR for invalid EDID. */ + struct edid *edid; +}; + +struct intel_crtc { + struct drm_crtc base; + enum pipe pipe; + enum plane plane; + enum transcoder cpu_transcoder; + u8 lut_r[256], lut_g[256], lut_b[256]; + /* + * Whether the crtc and the connected output pipeline is active. Implies + * that crtc->enabled is set, i.e. the current mode configuration has + * some outputs connected to this crtc. + */ + bool active; + bool primary_disabled; /* is the crtc obscured by a plane? */ + bool lowfreq_avail; + struct intel_overlay *overlay; + struct intel_unpin_work *unpin_work; + int fdi_lanes; + + atomic_t unpin_work_count; + + /* Display surface base address adjustement for pageflips. Note that on + * gen4+ this only adjusts up to a tile, offsets within a tile are + * handled in the hw itself (with the TILEOFF register). */ + unsigned long dspaddr_offset; + + struct drm_i915_gem_object *cursor_bo; + uint32_t cursor_addr; + int16_t cursor_x, cursor_y; + int16_t cursor_width, cursor_height; + bool cursor_visible; + unsigned int bpp; + + /* We can share PLLs across outputs if the timings match */ + struct intel_pch_pll *pch_pll; + uint32_t ddi_pll_sel; +}; + +struct intel_plane { + struct drm_plane base; + enum pipe pipe; + struct drm_i915_gem_object *obj; + bool can_scale; + int max_downscale; + u32 lut_r[1024], lut_g[1024], lut_b[1024]; + void (*update_plane)(struct drm_plane *plane, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, + int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h); + void (*disable_plane)(struct drm_plane *plane); + int (*update_colorkey)(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key); + void (*get_colorkey)(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key); +}; + +struct intel_watermark_params { + unsigned long fifo_size; + unsigned long max_wm; + unsigned long default_wm; + unsigned long guard_size; + unsigned long cacheline_size; +}; + +struct cxsr_latency { + int is_desktop; + int is_ddr3; + unsigned long fsb_freq; + unsigned long mem_freq; + unsigned long display_sr; + unsigned long display_hpll_disable; + unsigned long cursor_sr; + unsigned long cursor_hpll_disable; +}; + +#define to_intel_crtc(x) container_of(x, struct intel_crtc, base) +#define to_intel_connector(x) container_of(x, struct intel_connector, base) +#define to_intel_encoder(x) container_of(x, struct intel_encoder, base) +#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) +#define to_intel_plane(x) container_of(x, struct intel_plane, base) + +#define DIP_HEADER_SIZE 5 + +#define DIP_TYPE_AVI 0x82 +#define DIP_VERSION_AVI 0x2 +#define DIP_LEN_AVI 13 +#define DIP_AVI_PR_1 0 +#define DIP_AVI_PR_2 1 + +#define DIP_TYPE_SPD 0x83 +#define DIP_VERSION_SPD 0x1 +#define DIP_LEN_SPD 25 +#define DIP_SPD_UNKNOWN 0 +#define DIP_SPD_DSTB 0x1 +#define DIP_SPD_DVDP 0x2 +#define DIP_SPD_DVHS 0x3 +#define DIP_SPD_HDDVR 0x4 +#define DIP_SPD_DVC 0x5 +#define DIP_SPD_DSC 0x6 +#define DIP_SPD_VCD 0x7 +#define DIP_SPD_GAME 0x8 +#define DIP_SPD_PC 0x9 +#define DIP_SPD_BD 0xa +#define DIP_SPD_SCD 0xb + +struct dip_infoframe { + uint8_t type; /* HB0 */ + uint8_t ver; /* HB1 */ + uint8_t len; /* HB2 - body len, not including checksum */ + uint8_t ecc; /* Header ECC */ + uint8_t checksum; /* PB0 */ + union { + struct { + /* PB1 - Y 6:5, A 4:4, B 3:2, S 1:0 */ + uint8_t Y_A_B_S; + /* PB2 - C 7:6, M 5:4, R 3:0 */ + uint8_t C_M_R; + /* PB3 - ITC 7:7, EC 6:4, Q 3:2, SC 1:0 */ + uint8_t ITC_EC_Q_SC; + /* PB4 - VIC 6:0 */ + uint8_t VIC; + /* PB5 - YQ 7:6, CN 5:4, PR 3:0 */ + uint8_t YQ_CN_PR; + /* PB6 to PB13 */ + uint16_t top_bar_end; + uint16_t bottom_bar_start; + uint16_t left_bar_end; + uint16_t right_bar_start; + } __attribute__ ((packed)) avi; + struct { + uint8_t vn[8]; + uint8_t pd[16]; + uint8_t sdi; + } __attribute__ ((packed)) spd; + uint8_t payload[27]; + } __attribute__ ((packed)) body; +} __attribute__((packed)); + +struct intel_hdmi { + u32 sdvox_reg; + int ddc_bus; + uint32_t color_range; + bool has_hdmi_sink; + bool has_audio; + enum hdmi_force_audio force_audio; + void (*write_infoframe)(struct drm_encoder *encoder, + struct dip_infoframe *frame); + void (*set_infoframes)(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode); +}; + +#define DP_MAX_DOWNSTREAM_PORTS 0x10 +#define DP_LINK_CONFIGURATION_SIZE 9 + +struct intel_dp { + uint32_t output_reg; + uint32_t DP; + uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]; + bool has_audio; + enum hdmi_force_audio force_audio; + uint32_t color_range; + uint8_t link_bw; + uint8_t lane_count; + uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; + uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; + struct i2c_adapter adapter; + struct i2c_algo_dp_aux_data algo; + bool is_pch_edp; + uint8_t train_set[4]; + int panel_power_up_delay; + int panel_power_down_delay; + int panel_power_cycle_delay; + int backlight_on_delay; + int backlight_off_delay; + struct delayed_work panel_vdd_work; + bool want_panel_vdd; + struct intel_connector *attached_connector; +}; + +struct intel_digital_port { + struct intel_encoder base; + enum port port; + u32 port_reversal; + struct intel_dp dp; + struct intel_hdmi hdmi; +}; + +static inline struct drm_crtc * +intel_get_crtc_for_pipe(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->pipe_to_crtc_mapping[pipe]; +} + +static inline struct drm_crtc * +intel_get_crtc_for_plane(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->plane_to_crtc_mapping[plane]; +} + +struct intel_unpin_work { + struct work_struct work; + struct drm_crtc *crtc; + struct drm_i915_gem_object *old_fb_obj; + struct drm_i915_gem_object *pending_flip_obj; + struct drm_pending_vblank_event *event; + atomic_t pending; +#define INTEL_FLIP_INACTIVE 0 +#define INTEL_FLIP_PENDING 1 +#define INTEL_FLIP_COMPLETE 2 + bool enable_stall_check; +}; + +struct intel_fbc_work { + struct delayed_work work; + struct drm_crtc *crtc; + struct drm_framebuffer *fb; + int interval; +}; + +int intel_pch_rawclk(struct drm_device *dev); + +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid); +int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); + +extern void intel_attach_force_audio_property(struct drm_connector *connector); +extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector); + +extern void intel_crt_init(struct drm_device *dev); +extern void intel_hdmi_init(struct drm_device *dev, + int sdvox_reg, enum port port); +extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector); +extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); +extern bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); +extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, + bool is_sdvob); +extern void intel_dvo_init(struct drm_device *dev); +extern void intel_tv_init(struct drm_device *dev); +extern void intel_mark_busy(struct drm_device *dev); +extern void intel_mark_fb_busy(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); +extern void intel_dp_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector); +void +intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern void intel_dp_init_link_config(struct intel_dp *intel_dp); +extern void intel_dp_start_link_train(struct intel_dp *intel_dp); +extern void intel_dp_complete_link_train(struct intel_dp *intel_dp); +extern void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); +extern void intel_dp_encoder_destroy(struct drm_encoder *encoder); +extern void intel_dp_check_link_status(struct intel_dp *intel_dp); +extern bool intel_dp_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern bool intel_dpd_is_edp(struct drm_device *dev); +extern void ironlake_edp_backlight_on(struct intel_dp *intel_dp); +extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_on(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_off(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); +extern void intel_edp_link_config(struct intel_encoder *, int *, int *); +extern int intel_edp_target_clock(struct intel_encoder *, + struct drm_display_mode *mode); +extern bool intel_encoder_is_pch_edp(struct drm_encoder *encoder); +extern int intel_plane_init(struct drm_device *dev, enum pipe pipe); +extern void intel_flush_display_plane(struct drm_i915_private *dev_priv, + enum plane plane); + +/* intel_panel.c */ +extern int intel_panel_init(struct intel_panel *panel, + struct drm_display_mode *fixed_mode); +extern void intel_panel_fini(struct intel_panel *panel); + +extern void intel_fixed_panel_mode(struct drm_display_mode *fixed_mode, + struct drm_display_mode *adjusted_mode); +extern void intel_pch_panel_fitting(struct drm_device *dev, + int fitting_mode, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern u32 intel_panel_get_max_backlight(struct drm_device *dev); +extern void intel_panel_set_backlight(struct drm_device *dev, u32 level); +extern int intel_panel_setup_backlight(struct drm_connector *connector); +extern void intel_panel_enable_backlight(struct drm_device *dev, + enum pipe pipe); +extern void intel_panel_disable_backlight(struct drm_device *dev); +extern void intel_panel_destroy_backlight(struct drm_device *dev); +extern enum drm_connector_status intel_panel_detect(struct drm_device *dev); + +struct intel_set_config { + struct drm_encoder **save_connector_encoders; + struct drm_crtc **save_encoder_crtcs; + + bool fb_changed; + bool mode_changed; +}; + +extern bool intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode, + int x, int y, struct drm_framebuffer *old_fb); +extern void intel_modeset_disable(struct drm_device *dev); +extern void intel_crtc_load_lut(struct drm_crtc *crtc); +extern void intel_crtc_update_dpms(struct drm_crtc *crtc); +extern void intel_encoder_noop(struct drm_encoder *encoder); +extern void intel_encoder_destroy(struct drm_encoder *encoder); +extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode); +extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder); +extern void intel_connector_dpms(struct drm_connector *, int mode); +extern bool intel_connector_get_hw_state(struct intel_connector *connector); +extern void intel_modeset_check_state(struct drm_device *dev); + + +static inline struct intel_encoder *intel_attached_encoder(struct drm_connector *connector) +{ + return to_intel_connector(connector)->encoder; +} + +static inline struct intel_dp *enc_to_intel_dp(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = + container_of(encoder, struct intel_digital_port, base.base); + return &intel_dig_port->dp; +} + +static inline struct intel_digital_port * +enc_to_dig_port(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_digital_port, base.base); +} + +static inline struct intel_digital_port * +dp_to_dig_port(struct intel_dp *intel_dp) +{ + return container_of(intel_dp, struct intel_digital_port, dp); +} + +static inline struct intel_digital_port * +hdmi_to_dig_port(struct intel_hdmi *intel_hdmi) +{ + return container_of(intel_hdmi, struct intel_digital_port, hdmi); +} + +extern void intel_connector_attach_encoder(struct intel_connector *connector, + struct intel_encoder *encoder); +extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector); + +extern struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, + struct drm_crtc *crtc); +int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern enum transcoder +intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe); +extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); +extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); +extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); + +struct intel_load_detect_pipe { + struct drm_framebuffer *release_fb; + bool load_detect_temp; + int dpms_mode; +}; +extern bool intel_get_load_detect_pipe(struct drm_connector *connector, + struct drm_display_mode *mode, + struct intel_load_detect_pipe *old); +extern void intel_release_load_detect_pipe(struct drm_connector *connector, + struct intel_load_detect_pipe *old); + +extern void intelfb_restore(void); +extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, + u16 blue, int regno); +extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, int regno); +extern void intel_enable_clock_gating(struct drm_device *dev); + +extern int intel_pin_and_fence_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined); +extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); + +extern int intel_framebuffer_init(struct drm_device *dev, + struct intel_framebuffer *ifb, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj); +extern int intel_fbdev_init(struct drm_device *dev); +extern void intel_fbdev_fini(struct drm_device *dev); +extern void intel_fbdev_set_suspend(struct drm_device *dev, int state); +extern void intel_prepare_page_flip(struct drm_device *dev, int plane); +extern void intel_finish_page_flip(struct drm_device *dev, int pipe); +extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); + +extern void intel_setup_overlay(struct drm_device *dev); +extern void intel_cleanup_overlay(struct drm_device *dev); +extern int intel_overlay_switch_off(struct intel_overlay *overlay); +extern int intel_overlay_put_image(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int intel_overlay_attrs(struct drm_device *dev, void *data, + struct drm_file *file_priv); + +extern void intel_fb_output_poll_changed(struct drm_device *dev); +extern void intel_fb_restore_mode(struct drm_device *dev); + +extern void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, + bool state); +#define assert_pipe_enabled(d, p) assert_pipe(d, p, true) +#define assert_pipe_disabled(d, p) assert_pipe(d, p, false) + +extern void intel_init_clock_gating(struct drm_device *dev); +extern void intel_write_eld(struct drm_encoder *encoder, + struct drm_display_mode *mode); +extern void intel_cpt_verify_modeset(struct drm_device *dev, int pipe); +extern void intel_prepare_ddi(struct drm_device *dev); +extern void hsw_fdi_link_train(struct drm_crtc *crtc); +extern void intel_ddi_init(struct drm_device *dev, enum port port); + +/* For use by IVB LP watermark workaround in intel_sprite.c */ +extern void intel_update_watermarks(struct drm_device *dev); +extern void intel_update_sprite_watermarks(struct drm_device *dev, int pipe, + uint32_t sprite_width, + int pixel_size); +extern void intel_update_linetime_watermarks(struct drm_device *dev, int pipe, + struct drm_display_mode *mode); + +extern unsigned long intel_gen4_compute_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); +extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv); + +extern u32 intel_dpio_read(struct drm_i915_private *dev_priv, int reg); + +/* Power-related functions, located in intel_pm.c */ +extern void intel_init_pm(struct drm_device *dev); +/* FBC */ +extern bool intel_fbc_enabled(struct drm_device *dev); +extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); +extern void intel_update_fbc(struct drm_device *dev); +/* IPS */ +extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv); +extern void intel_gpu_ips_teardown(void); + +extern void intel_init_power_wells(struct drm_device *dev); +extern void intel_enable_gt_powersave(struct drm_device *dev); +extern void intel_disable_gt_powersave(struct drm_device *dev); +extern void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv); +extern void ironlake_teardown_rc6(struct drm_device *dev); + +extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe); +extern int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv); +extern void intel_ddi_pll_init(struct drm_device *dev); +extern void intel_ddi_enable_pipe_func(struct drm_crtc *crtc); +extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder); +extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); +extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); +extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev); +extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock); +extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); +extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); +extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); +extern bool +intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); +extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); + +#endif /* __INTEL_DRV_H__ */ --- linux-3.5.0.orig/ubuntu/i915/i915_suspend.c +++ linux-3.5.0/ubuntu/i915/i915_suspend.c @@ -0,0 +1,900 @@ +/* + * + * Copyright 2008 (c) Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include "intel_drv.h" +#include "i915_reg.h" + +static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpll_reg; + + /* On IVB, 3rd pipe shares PLL with another one */ + if (pipe > 1) + return false; + + if (HAS_PCH_SPLIT(dev)) + dpll_reg = _PCH_DPLL(pipe); + else + dpll_reg = (pipe == PIPE_A) ? _DPLL_A : _DPLL_B; + + return (I915_READ(dpll_reg) & DPLL_VCO_ENABLE); +} + +static void i915_save_palette(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B); + u32 *array; + int i; + + if (!i915_pipe_enabled(dev, pipe)) + return; + + if (HAS_PCH_SPLIT(dev)) + reg = (pipe == PIPE_A) ? _LGC_PALETTE_A : _LGC_PALETTE_B; + + if (pipe == PIPE_A) + array = dev_priv->regfile.save_palette_a; + else + array = dev_priv->regfile.save_palette_b; + + for (i = 0; i < 256; i++) + array[i] = I915_READ(reg + (i << 2)); +} + +static void i915_restore_palette(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B); + u32 *array; + int i; + + if (!i915_pipe_enabled(dev, pipe)) + return; + + if (HAS_PCH_SPLIT(dev)) + reg = (pipe == PIPE_A) ? _LGC_PALETTE_A : _LGC_PALETTE_B; + + if (pipe == PIPE_A) + array = dev_priv->regfile.save_palette_a; + else + array = dev_priv->regfile.save_palette_b; + + for (i = 0; i < 256; i++) + I915_WRITE(reg + (i << 2), array[i]); +} + +static u8 i915_read_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE8(index_port, reg); + return I915_READ8(data_port); +} + +static u8 i915_read_ar(struct drm_device *dev, u16 st01, u8 reg, u16 palette_enable) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, palette_enable | reg); + return I915_READ8(VGA_AR_DATA_READ); +} + +static void i915_write_ar(struct drm_device *dev, u16 st01, u8 reg, u8 val, u16 palette_enable) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, palette_enable | reg); + I915_WRITE8(VGA_AR_DATA_WRITE, val); +} + +static void i915_write_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE8(index_port, reg); + I915_WRITE8(data_port, val); +} + +static void i915_save_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + u16 cr_index, cr_data, st01; + + /* VGA color palette registers */ + dev_priv->regfile.saveDACMASK = I915_READ8(VGA_DACMASK); + + /* MSR bits */ + dev_priv->regfile.saveMSR = I915_READ8(VGA_MSR_READ); + if (dev_priv->regfile.saveMSR & VGA_MSR_CGA_MODE) { + cr_index = VGA_CR_INDEX_CGA; + cr_data = VGA_CR_DATA_CGA; + st01 = VGA_ST01_CGA; + } else { + cr_index = VGA_CR_INDEX_MDA; + cr_data = VGA_CR_DATA_MDA; + st01 = VGA_ST01_MDA; + } + + /* CRT controller regs */ + i915_write_indexed(dev, cr_index, cr_data, 0x11, + i915_read_indexed(dev, cr_index, cr_data, 0x11) & + (~0x80)); + for (i = 0; i <= 0x24; i++) + dev_priv->regfile.saveCR[i] = + i915_read_indexed(dev, cr_index, cr_data, i); + /* Make sure we don't turn off CR group 0 writes */ + dev_priv->regfile.saveCR[0x11] &= ~0x80; + + /* Attribute controller registers */ + I915_READ8(st01); + dev_priv->regfile.saveAR_INDEX = I915_READ8(VGA_AR_INDEX); + for (i = 0; i <= 0x14; i++) + dev_priv->regfile.saveAR[i] = i915_read_ar(dev, st01, i, 0); + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, dev_priv->regfile.saveAR_INDEX); + I915_READ8(st01); + + /* Graphics controller registers */ + for (i = 0; i < 9; i++) + dev_priv->regfile.saveGR[i] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, i); + + dev_priv->regfile.saveGR[0x10] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x10); + dev_priv->regfile.saveGR[0x11] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x11); + dev_priv->regfile.saveGR[0x18] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x18); + + /* Sequencer registers */ + for (i = 0; i < 8; i++) + dev_priv->regfile.saveSR[i] = + i915_read_indexed(dev, VGA_SR_INDEX, VGA_SR_DATA, i); +} + +static void i915_restore_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + u16 cr_index, cr_data, st01; + + /* MSR bits */ + I915_WRITE8(VGA_MSR_WRITE, dev_priv->regfile.saveMSR); + if (dev_priv->regfile.saveMSR & VGA_MSR_CGA_MODE) { + cr_index = VGA_CR_INDEX_CGA; + cr_data = VGA_CR_DATA_CGA; + st01 = VGA_ST01_CGA; + } else { + cr_index = VGA_CR_INDEX_MDA; + cr_data = VGA_CR_DATA_MDA; + st01 = VGA_ST01_MDA; + } + + /* Sequencer registers, don't write SR07 */ + for (i = 0; i < 7; i++) + i915_write_indexed(dev, VGA_SR_INDEX, VGA_SR_DATA, i, + dev_priv->regfile.saveSR[i]); + + /* CRT controller regs */ + /* Enable CR group 0 writes */ + i915_write_indexed(dev, cr_index, cr_data, 0x11, dev_priv->regfile.saveCR[0x11]); + for (i = 0; i <= 0x24; i++) + i915_write_indexed(dev, cr_index, cr_data, i, dev_priv->regfile.saveCR[i]); + + /* Graphics controller regs */ + for (i = 0; i < 9; i++) + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, i, + dev_priv->regfile.saveGR[i]); + + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x10, + dev_priv->regfile.saveGR[0x10]); + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x11, + dev_priv->regfile.saveGR[0x11]); + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x18, + dev_priv->regfile.saveGR[0x18]); + + /* Attribute controller registers */ + I915_READ8(st01); /* switch back to index mode */ + for (i = 0; i <= 0x14; i++) + i915_write_ar(dev, st01, i, dev_priv->regfile.saveAR[i], 0); + I915_READ8(st01); /* switch back to index mode */ + I915_WRITE8(VGA_AR_INDEX, dev_priv->regfile.saveAR_INDEX | 0x20); + I915_READ8(st01); + + /* VGA color palette registers */ + I915_WRITE8(VGA_DACMASK, dev_priv->regfile.saveDACMASK); +} + +static void i915_save_modeset_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + /* Cursor state */ + dev_priv->regfile.saveCURACNTR = I915_READ(_CURACNTR); + dev_priv->regfile.saveCURAPOS = I915_READ(_CURAPOS); + dev_priv->regfile.saveCURABASE = I915_READ(_CURABASE); + dev_priv->regfile.saveCURBCNTR = I915_READ(_CURBCNTR); + dev_priv->regfile.saveCURBPOS = I915_READ(_CURBPOS); + dev_priv->regfile.saveCURBBASE = I915_READ(_CURBBASE); + if (IS_GEN2(dev)) + dev_priv->regfile.saveCURSIZE = I915_READ(CURSIZE); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePCH_DREF_CONTROL = I915_READ(PCH_DREF_CONTROL); + dev_priv->regfile.saveDISP_ARB_CTL = I915_READ(DISP_ARB_CTL); + } + + /* Pipe & plane A info */ + dev_priv->regfile.savePIPEACONF = I915_READ(_PIPEACONF); + dev_priv->regfile.savePIPEASRC = I915_READ(_PIPEASRC); + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveFPA0 = I915_READ(_PCH_FPA0); + dev_priv->regfile.saveFPA1 = I915_READ(_PCH_FPA1); + dev_priv->regfile.saveDPLL_A = I915_READ(_PCH_DPLL_A); + } else { + dev_priv->regfile.saveFPA0 = I915_READ(_FPA0); + dev_priv->regfile.saveFPA1 = I915_READ(_FPA1); + dev_priv->regfile.saveDPLL_A = I915_READ(_DPLL_A); + } + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveDPLL_A_MD = I915_READ(_DPLL_A_MD); + dev_priv->regfile.saveHTOTAL_A = I915_READ(_HTOTAL_A); + dev_priv->regfile.saveHBLANK_A = I915_READ(_HBLANK_A); + dev_priv->regfile.saveHSYNC_A = I915_READ(_HSYNC_A); + dev_priv->regfile.saveVTOTAL_A = I915_READ(_VTOTAL_A); + dev_priv->regfile.saveVBLANK_A = I915_READ(_VBLANK_A); + dev_priv->regfile.saveVSYNC_A = I915_READ(_VSYNC_A); + if (!HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveBCLRPAT_A = I915_READ(_BCLRPAT_A); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePIPEA_DATA_M1 = I915_READ(_PIPEA_DATA_M1); + dev_priv->regfile.savePIPEA_DATA_N1 = I915_READ(_PIPEA_DATA_N1); + dev_priv->regfile.savePIPEA_LINK_M1 = I915_READ(_PIPEA_LINK_M1); + dev_priv->regfile.savePIPEA_LINK_N1 = I915_READ(_PIPEA_LINK_N1); + + dev_priv->regfile.saveFDI_TXA_CTL = I915_READ(_FDI_TXA_CTL); + dev_priv->regfile.saveFDI_RXA_CTL = I915_READ(_FDI_RXA_CTL); + + dev_priv->regfile.savePFA_CTL_1 = I915_READ(_PFA_CTL_1); + dev_priv->regfile.savePFA_WIN_SZ = I915_READ(_PFA_WIN_SZ); + dev_priv->regfile.savePFA_WIN_POS = I915_READ(_PFA_WIN_POS); + + dev_priv->regfile.saveTRANSACONF = I915_READ(_TRANSACONF); + dev_priv->regfile.saveTRANS_HTOTAL_A = I915_READ(_TRANS_HTOTAL_A); + dev_priv->regfile.saveTRANS_HBLANK_A = I915_READ(_TRANS_HBLANK_A); + dev_priv->regfile.saveTRANS_HSYNC_A = I915_READ(_TRANS_HSYNC_A); + dev_priv->regfile.saveTRANS_VTOTAL_A = I915_READ(_TRANS_VTOTAL_A); + dev_priv->regfile.saveTRANS_VBLANK_A = I915_READ(_TRANS_VBLANK_A); + dev_priv->regfile.saveTRANS_VSYNC_A = I915_READ(_TRANS_VSYNC_A); + } + + dev_priv->regfile.saveDSPACNTR = I915_READ(_DSPACNTR); + dev_priv->regfile.saveDSPASTRIDE = I915_READ(_DSPASTRIDE); + dev_priv->regfile.saveDSPASIZE = I915_READ(_DSPASIZE); + dev_priv->regfile.saveDSPAPOS = I915_READ(_DSPAPOS); + dev_priv->regfile.saveDSPAADDR = I915_READ(_DSPAADDR); + if (INTEL_INFO(dev)->gen >= 4) { + dev_priv->regfile.saveDSPASURF = I915_READ(_DSPASURF); + dev_priv->regfile.saveDSPATILEOFF = I915_READ(_DSPATILEOFF); + } + i915_save_palette(dev, PIPE_A); + dev_priv->regfile.savePIPEASTAT = I915_READ(_PIPEASTAT); + + /* Pipe & plane B info */ + dev_priv->regfile.savePIPEBCONF = I915_READ(_PIPEBCONF); + dev_priv->regfile.savePIPEBSRC = I915_READ(_PIPEBSRC); + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveFPB0 = I915_READ(_PCH_FPB0); + dev_priv->regfile.saveFPB1 = I915_READ(_PCH_FPB1); + dev_priv->regfile.saveDPLL_B = I915_READ(_PCH_DPLL_B); + } else { + dev_priv->regfile.saveFPB0 = I915_READ(_FPB0); + dev_priv->regfile.saveFPB1 = I915_READ(_FPB1); + dev_priv->regfile.saveDPLL_B = I915_READ(_DPLL_B); + } + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveDPLL_B_MD = I915_READ(_DPLL_B_MD); + dev_priv->regfile.saveHTOTAL_B = I915_READ(_HTOTAL_B); + dev_priv->regfile.saveHBLANK_B = I915_READ(_HBLANK_B); + dev_priv->regfile.saveHSYNC_B = I915_READ(_HSYNC_B); + dev_priv->regfile.saveVTOTAL_B = I915_READ(_VTOTAL_B); + dev_priv->regfile.saveVBLANK_B = I915_READ(_VBLANK_B); + dev_priv->regfile.saveVSYNC_B = I915_READ(_VSYNC_B); + if (!HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveBCLRPAT_B = I915_READ(_BCLRPAT_B); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePIPEB_DATA_M1 = I915_READ(_PIPEB_DATA_M1); + dev_priv->regfile.savePIPEB_DATA_N1 = I915_READ(_PIPEB_DATA_N1); + dev_priv->regfile.savePIPEB_LINK_M1 = I915_READ(_PIPEB_LINK_M1); + dev_priv->regfile.savePIPEB_LINK_N1 = I915_READ(_PIPEB_LINK_N1); + + dev_priv->regfile.saveFDI_TXB_CTL = I915_READ(_FDI_TXB_CTL); + dev_priv->regfile.saveFDI_RXB_CTL = I915_READ(_FDI_RXB_CTL); + + dev_priv->regfile.savePFB_CTL_1 = I915_READ(_PFB_CTL_1); + dev_priv->regfile.savePFB_WIN_SZ = I915_READ(_PFB_WIN_SZ); + dev_priv->regfile.savePFB_WIN_POS = I915_READ(_PFB_WIN_POS); + + dev_priv->regfile.saveTRANSBCONF = I915_READ(_TRANSBCONF); + dev_priv->regfile.saveTRANS_HTOTAL_B = I915_READ(_TRANS_HTOTAL_B); + dev_priv->regfile.saveTRANS_HBLANK_B = I915_READ(_TRANS_HBLANK_B); + dev_priv->regfile.saveTRANS_HSYNC_B = I915_READ(_TRANS_HSYNC_B); + dev_priv->regfile.saveTRANS_VTOTAL_B = I915_READ(_TRANS_VTOTAL_B); + dev_priv->regfile.saveTRANS_VBLANK_B = I915_READ(_TRANS_VBLANK_B); + dev_priv->regfile.saveTRANS_VSYNC_B = I915_READ(_TRANS_VSYNC_B); + } + + dev_priv->regfile.saveDSPBCNTR = I915_READ(_DSPBCNTR); + dev_priv->regfile.saveDSPBSTRIDE = I915_READ(_DSPBSTRIDE); + dev_priv->regfile.saveDSPBSIZE = I915_READ(_DSPBSIZE); + dev_priv->regfile.saveDSPBPOS = I915_READ(_DSPBPOS); + dev_priv->regfile.saveDSPBADDR = I915_READ(_DSPBADDR); + if (INTEL_INFO(dev)->gen >= 4) { + dev_priv->regfile.saveDSPBSURF = I915_READ(_DSPBSURF); + dev_priv->regfile.saveDSPBTILEOFF = I915_READ(_DSPBTILEOFF); + } + i915_save_palette(dev, PIPE_B); + dev_priv->regfile.savePIPEBSTAT = I915_READ(_PIPEBSTAT); + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ64(FENCE_REG_SANDYBRIDGE_0 + (i * 8)); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ64(FENCE_REG_965_0 + (i * 8)); + break; + case 3: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + dev_priv->regfile.saveFENCE[i+8] = I915_READ(FENCE_REG_945_8 + (i * 4)); + case 2: + for (i = 0; i < 8; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ(FENCE_REG_830_0 + (i * 4)); + break; + } + + /* CRT state */ + if (HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveADPA = I915_READ(PCH_ADPA); + else + dev_priv->regfile.saveADPA = I915_READ(ADPA); + + return; +} + +static void i915_restore_modeset_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int dpll_a_reg, fpa0_reg, fpa1_reg; + int dpll_b_reg, fpb0_reg, fpb1_reg; + int i; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + (i * 8), dev_priv->regfile.saveFENCE[i]); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + I915_WRITE64(FENCE_REG_965_0 + (i * 8), dev_priv->regfile.saveFENCE[i]); + break; + case 3: + case 2: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + I915_WRITE(FENCE_REG_945_8 + (i * 4), dev_priv->regfile.saveFENCE[i+8]); + for (i = 0; i < 8; i++) + I915_WRITE(FENCE_REG_830_0 + (i * 4), dev_priv->regfile.saveFENCE[i]); + break; + } + + + if (HAS_PCH_SPLIT(dev)) { + dpll_a_reg = _PCH_DPLL_A; + dpll_b_reg = _PCH_DPLL_B; + fpa0_reg = _PCH_FPA0; + fpb0_reg = _PCH_FPB0; + fpa1_reg = _PCH_FPA1; + fpb1_reg = _PCH_FPB1; + } else { + dpll_a_reg = _DPLL_A; + dpll_b_reg = _DPLL_B; + fpa0_reg = _FPA0; + fpb0_reg = _FPB0; + fpa1_reg = _FPA1; + fpb1_reg = _FPB1; + } + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_DREF_CONTROL, dev_priv->regfile.savePCH_DREF_CONTROL); + I915_WRITE(DISP_ARB_CTL, dev_priv->regfile.saveDISP_ARB_CTL); + } + + /* Pipe & plane A info */ + /* Prime the clock */ + if (dev_priv->regfile.saveDPLL_A & DPLL_VCO_ENABLE) { + I915_WRITE(dpll_a_reg, dev_priv->regfile.saveDPLL_A & + ~DPLL_VCO_ENABLE); + POSTING_READ(dpll_a_reg); + udelay(150); + } + I915_WRITE(fpa0_reg, dev_priv->regfile.saveFPA0); + I915_WRITE(fpa1_reg, dev_priv->regfile.saveFPA1); + /* Actually enable it */ + I915_WRITE(dpll_a_reg, dev_priv->regfile.saveDPLL_A); + POSTING_READ(dpll_a_reg); + udelay(150); + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { + I915_WRITE(_DPLL_A_MD, dev_priv->regfile.saveDPLL_A_MD); + POSTING_READ(_DPLL_A_MD); + } + udelay(150); + + /* Restore mode */ + I915_WRITE(_HTOTAL_A, dev_priv->regfile.saveHTOTAL_A); + I915_WRITE(_HBLANK_A, dev_priv->regfile.saveHBLANK_A); + I915_WRITE(_HSYNC_A, dev_priv->regfile.saveHSYNC_A); + I915_WRITE(_VTOTAL_A, dev_priv->regfile.saveVTOTAL_A); + I915_WRITE(_VBLANK_A, dev_priv->regfile.saveVBLANK_A); + I915_WRITE(_VSYNC_A, dev_priv->regfile.saveVSYNC_A); + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(_BCLRPAT_A, dev_priv->regfile.saveBCLRPAT_A); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(_PIPEA_DATA_M1, dev_priv->regfile.savePIPEA_DATA_M1); + I915_WRITE(_PIPEA_DATA_N1, dev_priv->regfile.savePIPEA_DATA_N1); + I915_WRITE(_PIPEA_LINK_M1, dev_priv->regfile.savePIPEA_LINK_M1); + I915_WRITE(_PIPEA_LINK_N1, dev_priv->regfile.savePIPEA_LINK_N1); + + I915_WRITE(_FDI_RXA_CTL, dev_priv->regfile.saveFDI_RXA_CTL); + I915_WRITE(_FDI_TXA_CTL, dev_priv->regfile.saveFDI_TXA_CTL); + + I915_WRITE(_PFA_CTL_1, dev_priv->regfile.savePFA_CTL_1); + I915_WRITE(_PFA_WIN_SZ, dev_priv->regfile.savePFA_WIN_SZ); + I915_WRITE(_PFA_WIN_POS, dev_priv->regfile.savePFA_WIN_POS); + + I915_WRITE(_TRANSACONF, dev_priv->regfile.saveTRANSACONF); + I915_WRITE(_TRANS_HTOTAL_A, dev_priv->regfile.saveTRANS_HTOTAL_A); + I915_WRITE(_TRANS_HBLANK_A, dev_priv->regfile.saveTRANS_HBLANK_A); + I915_WRITE(_TRANS_HSYNC_A, dev_priv->regfile.saveTRANS_HSYNC_A); + I915_WRITE(_TRANS_VTOTAL_A, dev_priv->regfile.saveTRANS_VTOTAL_A); + I915_WRITE(_TRANS_VBLANK_A, dev_priv->regfile.saveTRANS_VBLANK_A); + I915_WRITE(_TRANS_VSYNC_A, dev_priv->regfile.saveTRANS_VSYNC_A); + } + + /* Restore plane info */ + I915_WRITE(_DSPASIZE, dev_priv->regfile.saveDSPASIZE); + I915_WRITE(_DSPAPOS, dev_priv->regfile.saveDSPAPOS); + I915_WRITE(_PIPEASRC, dev_priv->regfile.savePIPEASRC); + I915_WRITE(_DSPAADDR, dev_priv->regfile.saveDSPAADDR); + I915_WRITE(_DSPASTRIDE, dev_priv->regfile.saveDSPASTRIDE); + if (INTEL_INFO(dev)->gen >= 4) { + I915_WRITE(_DSPASURF, dev_priv->regfile.saveDSPASURF); + I915_WRITE(_DSPATILEOFF, dev_priv->regfile.saveDSPATILEOFF); + } + + I915_WRITE(_PIPEACONF, dev_priv->regfile.savePIPEACONF); + + i915_restore_palette(dev, PIPE_A); + /* Enable the plane */ + I915_WRITE(_DSPACNTR, dev_priv->regfile.saveDSPACNTR); + I915_WRITE(_DSPAADDR, I915_READ(_DSPAADDR)); + + /* Pipe & plane B info */ + if (dev_priv->regfile.saveDPLL_B & DPLL_VCO_ENABLE) { + I915_WRITE(dpll_b_reg, dev_priv->regfile.saveDPLL_B & + ~DPLL_VCO_ENABLE); + POSTING_READ(dpll_b_reg); + udelay(150); + } + I915_WRITE(fpb0_reg, dev_priv->regfile.saveFPB0); + I915_WRITE(fpb1_reg, dev_priv->regfile.saveFPB1); + /* Actually enable it */ + I915_WRITE(dpll_b_reg, dev_priv->regfile.saveDPLL_B); + POSTING_READ(dpll_b_reg); + udelay(150); + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { + I915_WRITE(_DPLL_B_MD, dev_priv->regfile.saveDPLL_B_MD); + POSTING_READ(_DPLL_B_MD); + } + udelay(150); + + /* Restore mode */ + I915_WRITE(_HTOTAL_B, dev_priv->regfile.saveHTOTAL_B); + I915_WRITE(_HBLANK_B, dev_priv->regfile.saveHBLANK_B); + I915_WRITE(_HSYNC_B, dev_priv->regfile.saveHSYNC_B); + I915_WRITE(_VTOTAL_B, dev_priv->regfile.saveVTOTAL_B); + I915_WRITE(_VBLANK_B, dev_priv->regfile.saveVBLANK_B); + I915_WRITE(_VSYNC_B, dev_priv->regfile.saveVSYNC_B); + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(_BCLRPAT_B, dev_priv->regfile.saveBCLRPAT_B); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(_PIPEB_DATA_M1, dev_priv->regfile.savePIPEB_DATA_M1); + I915_WRITE(_PIPEB_DATA_N1, dev_priv->regfile.savePIPEB_DATA_N1); + I915_WRITE(_PIPEB_LINK_M1, dev_priv->regfile.savePIPEB_LINK_M1); + I915_WRITE(_PIPEB_LINK_N1, dev_priv->regfile.savePIPEB_LINK_N1); + + I915_WRITE(_FDI_RXB_CTL, dev_priv->regfile.saveFDI_RXB_CTL); + I915_WRITE(_FDI_TXB_CTL, dev_priv->regfile.saveFDI_TXB_CTL); + + I915_WRITE(_PFB_CTL_1, dev_priv->regfile.savePFB_CTL_1); + I915_WRITE(_PFB_WIN_SZ, dev_priv->regfile.savePFB_WIN_SZ); + I915_WRITE(_PFB_WIN_POS, dev_priv->regfile.savePFB_WIN_POS); + + I915_WRITE(_TRANSBCONF, dev_priv->regfile.saveTRANSBCONF); + I915_WRITE(_TRANS_HTOTAL_B, dev_priv->regfile.saveTRANS_HTOTAL_B); + I915_WRITE(_TRANS_HBLANK_B, dev_priv->regfile.saveTRANS_HBLANK_B); + I915_WRITE(_TRANS_HSYNC_B, dev_priv->regfile.saveTRANS_HSYNC_B); + I915_WRITE(_TRANS_VTOTAL_B, dev_priv->regfile.saveTRANS_VTOTAL_B); + I915_WRITE(_TRANS_VBLANK_B, dev_priv->regfile.saveTRANS_VBLANK_B); + I915_WRITE(_TRANS_VSYNC_B, dev_priv->regfile.saveTRANS_VSYNC_B); + } + + /* Restore plane info */ + I915_WRITE(_DSPBSIZE, dev_priv->regfile.saveDSPBSIZE); + I915_WRITE(_DSPBPOS, dev_priv->regfile.saveDSPBPOS); + I915_WRITE(_PIPEBSRC, dev_priv->regfile.savePIPEBSRC); + I915_WRITE(_DSPBADDR, dev_priv->regfile.saveDSPBADDR); + I915_WRITE(_DSPBSTRIDE, dev_priv->regfile.saveDSPBSTRIDE); + if (INTEL_INFO(dev)->gen >= 4) { + I915_WRITE(_DSPBSURF, dev_priv->regfile.saveDSPBSURF); + I915_WRITE(_DSPBTILEOFF, dev_priv->regfile.saveDSPBTILEOFF); + } + + I915_WRITE(_PIPEBCONF, dev_priv->regfile.savePIPEBCONF); + + i915_restore_palette(dev, PIPE_B); + /* Enable the plane */ + I915_WRITE(_DSPBCNTR, dev_priv->regfile.saveDSPBCNTR); + I915_WRITE(_DSPBADDR, I915_READ(_DSPBADDR)); + + /* Cursor state */ + I915_WRITE(_CURAPOS, dev_priv->regfile.saveCURAPOS); + I915_WRITE(_CURACNTR, dev_priv->regfile.saveCURACNTR); + I915_WRITE(_CURABASE, dev_priv->regfile.saveCURABASE); + I915_WRITE(_CURBPOS, dev_priv->regfile.saveCURBPOS); + I915_WRITE(_CURBCNTR, dev_priv->regfile.saveCURBCNTR); + I915_WRITE(_CURBBASE, dev_priv->regfile.saveCURBBASE); + if (IS_GEN2(dev)) + I915_WRITE(CURSIZE, dev_priv->regfile.saveCURSIZE); + + /* CRT state */ + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(PCH_ADPA, dev_priv->regfile.saveADPA); + else + I915_WRITE(ADPA, dev_priv->regfile.saveADPA); + + return; +} + +static void i915_save_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Display arbitration control */ + dev_priv->regfile.saveDSPARB = I915_READ(DSPARB); + + /* This is only meaningful in non-KMS mode */ + /* Don't regfile.save them in KMS mode */ + i915_save_modeset_reg(dev); + + /* LVDS state */ + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePP_CONTROL = I915_READ(PCH_PP_CONTROL); + dev_priv->regfile.saveBLC_PWM_CTL = I915_READ(BLC_PWM_PCH_CTL1); + dev_priv->regfile.saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_PCH_CTL2); + dev_priv->regfile.saveBLC_CPU_PWM_CTL = I915_READ(BLC_PWM_CPU_CTL); + dev_priv->regfile.saveBLC_CPU_PWM_CTL2 = I915_READ(BLC_PWM_CPU_CTL2); + dev_priv->regfile.saveLVDS = I915_READ(PCH_LVDS); + } else { + dev_priv->regfile.savePP_CONTROL = I915_READ(PP_CONTROL); + dev_priv->regfile.savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS); + dev_priv->regfile.saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL); + dev_priv->regfile.saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL); + if (INTEL_INFO(dev)->gen >= 4) + dev_priv->regfile.saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2); + if (IS_MOBILE(dev) && !IS_I830(dev)) + dev_priv->regfile.saveLVDS = I915_READ(LVDS); + } + + if (!IS_I830(dev) && !IS_845G(dev) && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.savePFIT_CONTROL = I915_READ(PFIT_CONTROL); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS); + dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS); + dev_priv->regfile.savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR); + } else { + dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS); + dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS); + dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR); + } + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display Port state */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + dev_priv->regfile.saveDP_B = I915_READ(DP_B); + dev_priv->regfile.saveDP_C = I915_READ(DP_C); + dev_priv->regfile.saveDP_D = I915_READ(DP_D); + dev_priv->regfile.savePIPEA_GMCH_DATA_M = I915_READ(_PIPEA_GMCH_DATA_M); + dev_priv->regfile.savePIPEB_GMCH_DATA_M = I915_READ(_PIPEB_GMCH_DATA_M); + dev_priv->regfile.savePIPEA_GMCH_DATA_N = I915_READ(_PIPEA_GMCH_DATA_N); + dev_priv->regfile.savePIPEB_GMCH_DATA_N = I915_READ(_PIPEB_GMCH_DATA_N); + dev_priv->regfile.savePIPEA_DP_LINK_M = I915_READ(_PIPEA_DP_LINK_M); + dev_priv->regfile.savePIPEB_DP_LINK_M = I915_READ(_PIPEB_DP_LINK_M); + dev_priv->regfile.savePIPEA_DP_LINK_N = I915_READ(_PIPEA_DP_LINK_N); + dev_priv->regfile.savePIPEB_DP_LINK_N = I915_READ(_PIPEB_DP_LINK_N); + } + /* FIXME: regfile.save TV & SDVO state */ + } + + /* Only regfile.save FBC state on the platform that supports FBC */ + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(ILK_DPFC_CB_BASE); + } else if (IS_GM45(dev)) { + dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(DPFC_CB_BASE); + } else { + dev_priv->regfile.saveFBC_CFB_BASE = I915_READ(FBC_CFB_BASE); + dev_priv->regfile.saveFBC_LL_BASE = I915_READ(FBC_LL_BASE); + dev_priv->regfile.saveFBC_CONTROL2 = I915_READ(FBC_CONTROL2); + dev_priv->regfile.saveFBC_CONTROL = I915_READ(FBC_CONTROL); + } + } + + /* VGA state */ + dev_priv->regfile.saveVGA0 = I915_READ(VGA0); + dev_priv->regfile.saveVGA1 = I915_READ(VGA1); + dev_priv->regfile.saveVGA_PD = I915_READ(VGA_PD); + if (HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveVGACNTRL = I915_READ(CPU_VGACNTRL); + else + dev_priv->regfile.saveVGACNTRL = I915_READ(VGACNTRL); + + i915_save_vga(dev); +} + +static void i915_restore_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Display arbitration */ + I915_WRITE(DSPARB, dev_priv->regfile.saveDSPARB); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display port ratios (must be done before clock is set) */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + I915_WRITE(_PIPEA_GMCH_DATA_M, dev_priv->regfile.savePIPEA_GMCH_DATA_M); + I915_WRITE(_PIPEB_GMCH_DATA_M, dev_priv->regfile.savePIPEB_GMCH_DATA_M); + I915_WRITE(_PIPEA_GMCH_DATA_N, dev_priv->regfile.savePIPEA_GMCH_DATA_N); + I915_WRITE(_PIPEB_GMCH_DATA_N, dev_priv->regfile.savePIPEB_GMCH_DATA_N); + I915_WRITE(_PIPEA_DP_LINK_M, dev_priv->regfile.savePIPEA_DP_LINK_M); + I915_WRITE(_PIPEB_DP_LINK_M, dev_priv->regfile.savePIPEB_DP_LINK_M); + I915_WRITE(_PIPEA_DP_LINK_N, dev_priv->regfile.savePIPEA_DP_LINK_N); + I915_WRITE(_PIPEB_DP_LINK_N, dev_priv->regfile.savePIPEB_DP_LINK_N); + } + } + + /* This is only meaningful in non-KMS mode */ + /* Don't restore them in KMS mode */ + i915_restore_modeset_reg(dev); + + /* LVDS state */ + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + I915_WRITE(BLC_PWM_CTL2, dev_priv->regfile.saveBLC_PWM_CTL2); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_LVDS, dev_priv->regfile.saveLVDS); + } else if (IS_MOBILE(dev) && !IS_I830(dev)) + I915_WRITE(LVDS, dev_priv->regfile.saveLVDS); + + if (!IS_I830(dev) && !IS_845G(dev) && !HAS_PCH_SPLIT(dev)) + I915_WRITE(PFIT_CONTROL, dev_priv->regfile.savePFIT_CONTROL); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->regfile.saveBLC_PWM_CTL); + I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->regfile.saveBLC_PWM_CTL2); + /* NOTE: BLC_PWM_CPU_CTL must be written after BLC_PWM_CPU_CTL2; + * otherwise we get blank eDP screen after S3 on some machines + */ + I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->regfile.saveBLC_CPU_PWM_CTL2); + I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->regfile.saveBLC_CPU_PWM_CTL); + I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS); + I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS); + I915_WRITE(PCH_PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR); + I915_WRITE(PCH_PP_CONTROL, dev_priv->regfile.savePP_CONTROL); + I915_WRITE(RSTDBYCTL, + dev_priv->regfile.saveMCHBAR_RENDER_STANDBY); + } else { + I915_WRITE(PFIT_PGM_RATIOS, dev_priv->regfile.savePFIT_PGM_RATIOS); + I915_WRITE(BLC_PWM_CTL, dev_priv->regfile.saveBLC_PWM_CTL); + I915_WRITE(BLC_HIST_CTL, dev_priv->regfile.saveBLC_HIST_CTL); + I915_WRITE(PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS); + I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS); + I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR); + I915_WRITE(PP_CONTROL, dev_priv->regfile.savePP_CONTROL); + } + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display Port state */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + I915_WRITE(DP_B, dev_priv->regfile.saveDP_B); + I915_WRITE(DP_C, dev_priv->regfile.saveDP_C); + I915_WRITE(DP_D, dev_priv->regfile.saveDP_D); + } + /* FIXME: restore TV & SDVO state */ + } + + /* only restore FBC info on the platform that supports FBC*/ + intel_disable_fbc(dev); + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(ILK_DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE); + } else if (IS_GM45(dev)) { + I915_WRITE(DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE); + } else { + I915_WRITE(FBC_CFB_BASE, dev_priv->regfile.saveFBC_CFB_BASE); + I915_WRITE(FBC_LL_BASE, dev_priv->regfile.saveFBC_LL_BASE); + I915_WRITE(FBC_CONTROL2, dev_priv->regfile.saveFBC_CONTROL2); + I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL); + } + } + /* VGA state */ + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(CPU_VGACNTRL, dev_priv->regfile.saveVGACNTRL); + else + I915_WRITE(VGACNTRL, dev_priv->regfile.saveVGACNTRL); + + I915_WRITE(VGA0, dev_priv->regfile.saveVGA0); + I915_WRITE(VGA1, dev_priv->regfile.saveVGA1); + I915_WRITE(VGA_PD, dev_priv->regfile.saveVGA_PD); + POSTING_READ(VGA_PD); + udelay(150); + + i915_restore_vga(dev); +} + +int i915_save_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + pci_read_config_byte(dev->pdev, LBB, &dev_priv->regfile.saveLBB); + + mutex_lock(&dev->struct_mutex); + + i915_save_display(dev); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Interrupt state */ + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveDEIER = I915_READ(DEIER); + dev_priv->regfile.saveDEIMR = I915_READ(DEIMR); + dev_priv->regfile.saveGTIER = I915_READ(GTIER); + dev_priv->regfile.saveGTIMR = I915_READ(GTIMR); + dev_priv->regfile.saveFDI_RXA_IMR = I915_READ(_FDI_RXA_IMR); + dev_priv->regfile.saveFDI_RXB_IMR = I915_READ(_FDI_RXB_IMR); + dev_priv->regfile.saveMCHBAR_RENDER_STANDBY = + I915_READ(RSTDBYCTL); + dev_priv->regfile.savePCH_PORT_HOTPLUG = I915_READ(PCH_PORT_HOTPLUG); + } else { + dev_priv->regfile.saveIER = I915_READ(IER); + dev_priv->regfile.saveIMR = I915_READ(IMR); + } + } + + intel_disable_gt_powersave(dev); + + /* Cache mode state */ + dev_priv->regfile.saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0); + + /* Memory Arbitration state */ + dev_priv->regfile.saveMI_ARB_STATE = I915_READ(MI_ARB_STATE); + + /* Scratch space */ + for (i = 0; i < 16; i++) { + dev_priv->regfile.saveSWF0[i] = I915_READ(SWF00 + (i << 2)); + dev_priv->regfile.saveSWF1[i] = I915_READ(SWF10 + (i << 2)); + } + for (i = 0; i < 3; i++) + dev_priv->regfile.saveSWF2[i] = I915_READ(SWF30 + (i << 2)); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +int i915_restore_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + pci_write_config_byte(dev->pdev, LBB, dev_priv->regfile.saveLBB); + + mutex_lock(&dev->struct_mutex); + + i915_restore_display(dev); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Interrupt state */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(DEIER, dev_priv->regfile.saveDEIER); + I915_WRITE(DEIMR, dev_priv->regfile.saveDEIMR); + I915_WRITE(GTIER, dev_priv->regfile.saveGTIER); + I915_WRITE(GTIMR, dev_priv->regfile.saveGTIMR); + I915_WRITE(_FDI_RXA_IMR, dev_priv->regfile.saveFDI_RXA_IMR); + I915_WRITE(_FDI_RXB_IMR, dev_priv->regfile.saveFDI_RXB_IMR); + I915_WRITE(PCH_PORT_HOTPLUG, dev_priv->regfile.savePCH_PORT_HOTPLUG); + } else { + I915_WRITE(IER, dev_priv->regfile.saveIER); + I915_WRITE(IMR, dev_priv->regfile.saveIMR); + } + } + + /* Cache mode state */ + I915_WRITE(CACHE_MODE_0, dev_priv->regfile.saveCACHE_MODE_0 | 0xffff0000); + + /* Memory arbitration state */ + I915_WRITE(MI_ARB_STATE, dev_priv->regfile.saveMI_ARB_STATE | 0xffff0000); + + for (i = 0; i < 16; i++) { + I915_WRITE(SWF00 + (i << 2), dev_priv->regfile.saveSWF0[i]); + I915_WRITE(SWF10 + (i << 2), dev_priv->regfile.saveSWF1[i]); + } + for (i = 0; i < 3; i++) + I915_WRITE(SWF30 + (i << 2), dev_priv->regfile.saveSWF2[i]); + + mutex_unlock(&dev->struct_mutex); + + intel_i2c_reset(dev); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/i915_dma.c +++ linux-3.5.0/ubuntu/i915/i915_dma.c @@ -0,0 +1,1874 @@ +/* i915_dma.c -- DMA support for the I915 -*- linux-c -*- + */ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#define LP_RING(d) (&((struct drm_i915_private *)(d))->ring[RCS]) + +#define BEGIN_LP_RING(n) \ + intel_ring_begin(LP_RING(dev_priv), (n)) + +#define OUT_RING(x) \ + intel_ring_emit(LP_RING(dev_priv), x) + +#define ADVANCE_LP_RING() \ + intel_ring_advance(LP_RING(dev_priv)) + +/** + * Lock test for when it's just for synchronization of ring access. + * + * In that case, we don't need to do it when GEM is initialized as nobody else + * has access to the ring. + */ +#define RING_LOCK_TEST_WITH_RETURN(dev, file) do { \ + if (LP_RING(dev->dev_private)->obj == NULL) \ + LOCK_TEST_WITH_RETURN(dev, file); \ +} while (0) + +static inline u32 +intel_read_legacy_status_page(struct drm_i915_private *dev_priv, int reg) +{ + if (I915_NEED_GFX_HWS(dev_priv->dev)) + return ioread32(dev_priv->dri1.gfx_hws_cpu_addr + reg); + else + return intel_read_status_page(LP_RING(dev_priv), reg); +} + +#define READ_HWSP(dev_priv, reg) intel_read_legacy_status_page(dev_priv, reg) +#define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, I915_BREADCRUMB_INDEX) +#define I915_BREADCRUMB_INDEX 0x21 + +void i915_update_dri1_breadcrumb(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv; + + if (dev->primary->master) { + master_priv = dev->primary->master->driver_priv; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_dispatch = + READ_BREADCRUMB(dev_priv); + } +} + +static void i915_write_hws_pga(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 addr; + + addr = dev_priv->status_page_dmah->busaddr; + if (INTEL_INFO(dev)->gen >= 4) + addr |= (dev_priv->status_page_dmah->busaddr >> 28) & 0xf0; + I915_WRITE(HWS_PGA, addr); +} + +/** + * Frees the hardware status page, whether it's a physical address or a virtual + * address set up by the X Server. + */ +static void i915_free_hws(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + if (dev_priv->status_page_dmah) { + drm_pci_free(dev, dev_priv->status_page_dmah); + dev_priv->status_page_dmah = NULL; + } + + if (ring->status_page.gfx_addr) { + ring->status_page.gfx_addr = 0; + iounmap(dev_priv->dri1.gfx_hws_cpu_addr); + } + + /* Need to rewrite hardware status page */ + I915_WRITE(HWS_PGA, 0x1ffff000); +} + +void i915_kernel_lost_context(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + /* + * We should never lose context on the ring with modesetting + * as we don't expose it to userspace + */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + ring->head = I915_READ_HEAD(ring) & HEAD_ADDR; + ring->tail = I915_READ_TAIL(ring) & TAIL_ADDR; + ring->space = ring->head - (ring->tail + I915_RING_FREE_SPACE); + if (ring->space < 0) + ring->space += ring->size; + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (ring->head == ring->tail && master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_RING_EMPTY; +} + +static int i915_dma_cleanup(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + /* Make sure interrupts are disabled here because the uninstall ioctl + * may not have been called from userspace and after dev_private + * is freed, it's too late. + */ + if (dev->irq_enabled) + drm_irq_uninstall(dev); + + mutex_lock(&dev->struct_mutex); + for (i = 0; i < I915_NUM_RINGS; i++) + intel_cleanup_ring_buffer(&dev_priv->ring[i]); + mutex_unlock(&dev->struct_mutex); + + /* Clear the HWS virtual address at teardown */ + if (I915_NEED_GFX_HWS(dev)) + i915_free_hws(dev); + + return 0; +} + +static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + int ret; + + master_priv->sarea = drm_getsarea(dev); + if (master_priv->sarea) { + master_priv->sarea_priv = (drm_i915_sarea_t *) + ((u8 *)master_priv->sarea->handle + init->sarea_priv_offset); + } else { + DRM_DEBUG_DRIVER("sarea not found assuming DRI2 userspace\n"); + } + + if (init->ring_size != 0) { + if (LP_RING(dev_priv)->obj != NULL) { + i915_dma_cleanup(dev); + DRM_ERROR("Client tried to initialize ringbuffer in " + "GEM mode\n"); + return -EINVAL; + } + + ret = intel_render_ring_init_dri(dev, + init->ring_start, + init->ring_size); + if (ret) { + i915_dma_cleanup(dev); + return ret; + } + } + + dev_priv->dri1.cpp = init->cpp; + dev_priv->dri1.back_offset = init->back_offset; + dev_priv->dri1.front_offset = init->front_offset; + dev_priv->dri1.current_page = 0; + if (master_priv->sarea_priv) + master_priv->sarea_priv->pf_current_page = 0; + + /* Allow hardware batchbuffers unless told otherwise. + */ + dev_priv->dri1.allow_batchbuffer = 1; + + return 0; +} + +static int i915_dma_resume(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + DRM_DEBUG_DRIVER("%s\n", __func__); + + if (ring->virtual_start == NULL) { + DRM_ERROR("can not ioremap virtual address for" + " ring buffer\n"); + return -ENOMEM; + } + + /* Program Hardware Status Page */ + if (!ring->status_page.page_addr) { + DRM_ERROR("Can not find hardware status page\n"); + return -EINVAL; + } + DRM_DEBUG_DRIVER("hw status page @ %p\n", + ring->status_page.page_addr); + if (ring->status_page.gfx_addr != 0) + intel_ring_setup_status_page(ring); + else + i915_write_hws_pga(dev); + + DRM_DEBUG_DRIVER("Enabled hardware status page\n"); + + return 0; +} + +static int i915_dma_init(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_init_t *init = data; + int retcode = 0; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + switch (init->func) { + case I915_INIT_DMA: + retcode = i915_initialize(dev, init); + break; + case I915_CLEANUP_DMA: + retcode = i915_dma_cleanup(dev); + break; + case I915_RESUME_DMA: + retcode = i915_dma_resume(dev); + break; + default: + retcode = -EINVAL; + break; + } + + return retcode; +} + +/* Implement basically the same security restrictions as hardware does + * for MI_BATCH_NON_SECURE. These can be made stricter at any time. + * + * Most of the calculations below involve calculating the size of a + * particular instruction. It's important to get the size right as + * that tells us where the next instruction to check is. Any illegal + * instruction detected will be given a size of zero, which is a + * signal to abort the rest of the buffer. + */ +static int validate_cmd(int cmd) +{ + switch (((cmd >> 29) & 0x7)) { + case 0x0: + switch ((cmd >> 23) & 0x3f) { + case 0x0: + return 1; /* MI_NOOP */ + case 0x4: + return 1; /* MI_FLUSH */ + default: + return 0; /* disallow everything else */ + } + break; + case 0x1: + return 0; /* reserved */ + case 0x2: + return (cmd & 0xff) + 2; /* 2d commands */ + case 0x3: + if (((cmd >> 24) & 0x1f) <= 0x18) + return 1; + + switch ((cmd >> 24) & 0x1f) { + case 0x1c: + return 1; + case 0x1d: + switch ((cmd >> 16) & 0xff) { + case 0x3: + return (cmd & 0x1f) + 2; + case 0x4: + return (cmd & 0xf) + 2; + default: + return (cmd & 0xffff) + 2; + } + case 0x1e: + if (cmd & (1 << 23)) + return (cmd & 0xffff) + 1; + else + return 1; + case 0x1f: + if ((cmd & (1 << 23)) == 0) /* inline vertices */ + return (cmd & 0x1ffff) + 2; + else if (cmd & (1 << 17)) /* indirect random */ + if ((cmd & 0xffff) == 0) + return 0; /* unknown length, too hard */ + else + return (((cmd & 0xffff) + 1) / 2) + 1; + else + return 2; /* indirect sequential */ + default: + return 0; + } + default: + return 0; + } + + return 0; +} + +static int i915_emit_cmds(struct drm_device * dev, int *buffer, int dwords) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i, ret; + + if ((dwords+1) * sizeof(int) >= LP_RING(dev_priv)->size - 8) + return -EINVAL; + + for (i = 0; i < dwords;) { + int sz = validate_cmd(buffer[i]); + if (sz == 0 || i + sz > dwords) + return -EINVAL; + i += sz; + } + + ret = BEGIN_LP_RING((dwords+1)&~1); + if (ret) + return ret; + + for (i = 0; i < dwords; i++) + OUT_RING(buffer[i]); + if (dwords & 1) + OUT_RING(0); + + ADVANCE_LP_RING(); + + return 0; +} + +int +i915_emit_box(struct drm_device *dev, + struct drm_clip_rect *box, + int DR1, int DR4) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + if (box->y2 <= box->y1 || box->x2 <= box->x1 || + box->y2 <= 0 || box->x2 <= 0) { + DRM_ERROR("Bad box %d,%d..%d,%d\n", + box->x1, box->y1, box->x2, box->y2); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 4) { + ret = BEGIN_LP_RING(4); + if (ret) + return ret; + + OUT_RING(GFX_OP_DRAWRECT_INFO_I965); + OUT_RING((box->x1 & 0xffff) | (box->y1 << 16)); + OUT_RING(((box->x2 - 1) & 0xffff) | ((box->y2 - 1) << 16)); + OUT_RING(DR4); + } else { + ret = BEGIN_LP_RING(6); + if (ret) + return ret; + + OUT_RING(GFX_OP_DRAWRECT_INFO); + OUT_RING(DR1); + OUT_RING((box->x1 & 0xffff) | (box->y1 << 16)); + OUT_RING(((box->x2 - 1) & 0xffff) | ((box->y2 - 1) << 16)); + OUT_RING(DR4); + OUT_RING(0); + } + ADVANCE_LP_RING(); + + return 0; +} + +/* XXX: Emitting the counter should really be moved to part of the IRQ + * emit. For now, do it in both places: + */ + +static void i915_emit_breadcrumb(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + + dev_priv->dri1.counter++; + if (dev_priv->dri1.counter > 0x7FFFFFFFUL) + dev_priv->dri1.counter = 0; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(0); + ADVANCE_LP_RING(); + } +} + +static int i915_dispatch_cmdbuffer(struct drm_device * dev, + drm_i915_cmdbuffer_t *cmd, + struct drm_clip_rect *cliprects, + void *cmdbuf) +{ + int nbox = cmd->num_cliprects; + int i = 0, count, ret; + + if (cmd->sz & 0x3) { + DRM_ERROR("alignment"); + return -EINVAL; + } + + i915_kernel_lost_context(dev); + + count = nbox ? nbox : 1; + + for (i = 0; i < count; i++) { + if (i < nbox) { + ret = i915_emit_box(dev, &cliprects[i], + cmd->DR1, cmd->DR4); + if (ret) + return ret; + } + + ret = i915_emit_cmds(dev, cmdbuf, cmd->sz / 4); + if (ret) + return ret; + } + + i915_emit_breadcrumb(dev); + return 0; +} + +static int i915_dispatch_batchbuffer(struct drm_device * dev, + drm_i915_batchbuffer_t * batch, + struct drm_clip_rect *cliprects) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int nbox = batch->num_cliprects; + int i, count, ret; + + if ((batch->start | batch->used) & 0x7) { + DRM_ERROR("alignment"); + return -EINVAL; + } + + i915_kernel_lost_context(dev); + + count = nbox ? nbox : 1; + for (i = 0; i < count; i++) { + if (i < nbox) { + ret = i915_emit_box(dev, &cliprects[i], + batch->DR1, batch->DR4); + if (ret) + return ret; + } + + if (!IS_I830(dev) && !IS_845G(dev)) { + ret = BEGIN_LP_RING(2); + if (ret) + return ret; + + if (INTEL_INFO(dev)->gen >= 4) { + OUT_RING(MI_BATCH_BUFFER_START | (2 << 6) | MI_BATCH_NON_SECURE_I965); + OUT_RING(batch->start); + } else { + OUT_RING(MI_BATCH_BUFFER_START | (2 << 6)); + OUT_RING(batch->start | MI_BATCH_NON_SECURE); + } + } else { + ret = BEGIN_LP_RING(4); + if (ret) + return ret; + + OUT_RING(MI_BATCH_BUFFER); + OUT_RING(batch->start | MI_BATCH_NON_SECURE); + OUT_RING(batch->start + batch->used - 4); + OUT_RING(0); + } + ADVANCE_LP_RING(); + } + + + if (IS_G4X(dev) || IS_GEN5(dev)) { + if (BEGIN_LP_RING(2) == 0) { + OUT_RING(MI_FLUSH | MI_NO_WRITE_FLUSH | MI_INVALIDATE_ISP); + OUT_RING(MI_NOOP); + ADVANCE_LP_RING(); + } + } + + i915_emit_breadcrumb(dev); + return 0; +} + +static int i915_dispatch_flip(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = + dev->primary->master->driver_priv; + int ret; + + if (!master_priv->sarea_priv) + return -EINVAL; + + DRM_DEBUG_DRIVER("%s: page=%d pfCurrentPage=%d\n", + __func__, + dev_priv->dri1.current_page, + master_priv->sarea_priv->pf_current_page); + + i915_kernel_lost_context(dev); + + ret = BEGIN_LP_RING(10); + if (ret) + return ret; + + OUT_RING(MI_FLUSH | MI_READ_FLUSH); + OUT_RING(0); + + OUT_RING(CMD_OP_DISPLAYBUFFER_INFO | ASYNC_FLIP); + OUT_RING(0); + if (dev_priv->dri1.current_page == 0) { + OUT_RING(dev_priv->dri1.back_offset); + dev_priv->dri1.current_page = 1; + } else { + OUT_RING(dev_priv->dri1.front_offset); + dev_priv->dri1.current_page = 0; + } + OUT_RING(0); + + OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_PLANE_A_FLIP); + OUT_RING(0); + + ADVANCE_LP_RING(); + + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter++; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(0); + ADVANCE_LP_RING(); + } + + master_priv->sarea_priv->pf_current_page = dev_priv->dri1.current_page; + return 0; +} + +static int i915_quiescent(struct drm_device *dev) +{ + i915_kernel_lost_context(dev); + return intel_ring_idle(LP_RING(dev->dev_private)); +} + +static int i915_flush_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + ret = i915_quiescent(dev); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +static int i915_batchbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) + master_priv->sarea_priv; + drm_i915_batchbuffer_t *batch = data; + int ret; + struct drm_clip_rect *cliprects = NULL; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv->dri1.allow_batchbuffer) { + DRM_ERROR("Batchbuffer ioctl disabled\n"); + return -EINVAL; + } + + DRM_DEBUG_DRIVER("i915 batchbuffer, start %x used %d cliprects %d\n", + batch->start, batch->used, batch->num_cliprects); + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + if (batch->num_cliprects < 0) + return -EINVAL; + + if (batch->num_cliprects) { + cliprects = kcalloc(batch->num_cliprects, + sizeof(struct drm_clip_rect), + GFP_KERNEL); + if (cliprects == NULL) + return -ENOMEM; + + ret = copy_from_user(cliprects, batch->cliprects, + batch->num_cliprects * + sizeof(struct drm_clip_rect)); + if (ret != 0) { + ret = -EFAULT; + goto fail_free; + } + } + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_batchbuffer(dev, batch, cliprects); + mutex_unlock(&dev->struct_mutex); + + if (sarea_priv) + sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + +fail_free: + kfree(cliprects); + + return ret; +} + +static int i915_cmdbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) + master_priv->sarea_priv; + drm_i915_cmdbuffer_t *cmdbuf = data; + struct drm_clip_rect *cliprects = NULL; + void *batch_data; + int ret; + + DRM_DEBUG_DRIVER("i915 cmdbuffer, buf %p sz %d cliprects %d\n", + cmdbuf->buf, cmdbuf->sz, cmdbuf->num_cliprects); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + if (cmdbuf->num_cliprects < 0) + return -EINVAL; + + batch_data = kmalloc(cmdbuf->sz, GFP_KERNEL); + if (batch_data == NULL) + return -ENOMEM; + + ret = copy_from_user(batch_data, cmdbuf->buf, cmdbuf->sz); + if (ret != 0) { + ret = -EFAULT; + goto fail_batch_free; + } + + if (cmdbuf->num_cliprects) { + cliprects = kcalloc(cmdbuf->num_cliprects, + sizeof(struct drm_clip_rect), GFP_KERNEL); + if (cliprects == NULL) { + ret = -ENOMEM; + goto fail_batch_free; + } + + ret = copy_from_user(cliprects, cmdbuf->cliprects, + cmdbuf->num_cliprects * + sizeof(struct drm_clip_rect)); + if (ret != 0) { + ret = -EFAULT; + goto fail_clip_free; + } + } + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_cmdbuffer(dev, cmdbuf, cliprects, batch_data); + mutex_unlock(&dev->struct_mutex); + if (ret) { + DRM_ERROR("i915_dispatch_cmdbuffer failed\n"); + goto fail_clip_free; + } + + if (sarea_priv) + sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + +fail_clip_free: + kfree(cliprects); +fail_batch_free: + kfree(batch_data); + + return ret; +} + +static int i915_emit_irq(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + + i915_kernel_lost_context(dev); + + DRM_DEBUG_DRIVER("\n"); + + dev_priv->dri1.counter++; + if (dev_priv->dri1.counter > 0x7FFFFFFFUL) + dev_priv->dri1.counter = 1; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(MI_USER_INTERRUPT); + ADVANCE_LP_RING(); + } + + return dev_priv->dri1.counter; +} + +static int i915_wait_irq(struct drm_device * dev, int irq_nr) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + int ret = 0; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + DRM_DEBUG_DRIVER("irq_nr=%d breadcrumb=%d\n", irq_nr, + READ_BREADCRUMB(dev_priv)); + + if (READ_BREADCRUMB(dev_priv) >= irq_nr) { + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + return 0; + } + + if (master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; + + if (ring->irq_get(ring)) { + DRM_WAIT_ON(ret, ring->irq_queue, 3 * DRM_HZ, + READ_BREADCRUMB(dev_priv) >= irq_nr); + ring->irq_put(ring); + } else if (wait_for(READ_BREADCRUMB(dev_priv) >= irq_nr, 3000)) + ret = -EBUSY; + + if (ret == -EBUSY) { + DRM_ERROR("EBUSY -- rec: %d emitted: %d\n", + READ_BREADCRUMB(dev_priv), (int)dev_priv->dri1.counter); + } + + return ret; +} + +/* Needs the lock as it touches the ring. + */ +static int i915_irq_emit(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_irq_emit_t *emit = data; + int result; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv || !LP_RING(dev_priv)->virtual_start) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + result = i915_emit_irq(dev); + mutex_unlock(&dev->struct_mutex); + + if (DRM_COPY_TO_USER(emit->irq_seq, &result, sizeof(int))) { + DRM_ERROR("copy_to_user\n"); + return -EFAULT; + } + + return 0; +} + +/* Doesn't need the hardware lock. + */ +static int i915_irq_wait(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_irq_wait_t *irqwait = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + return i915_wait_irq(dev, irqwait->irq_seq); +} + +static int i915_vblank_pipe_get(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_vblank_pipe_t *pipe = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + pipe->pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B; + + return 0; +} + +/** + * Schedule buffer swap at given vertical blank. + */ +static int i915_vblank_swap(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + /* The delayed swap mechanism was fundamentally racy, and has been + * removed. The model was that the client requested a delayed flip/swap + * from the kernel, then waited for vblank before continuing to perform + * rendering. The problem was that the kernel might wake the client + * up before it dispatched the vblank swap (since the lock has to be + * held while touching the ringbuffer), in which case the client would + * clear and start the next frame before the swap occurred, and + * flicker would occur in addition to likely missing the vblank. + * + * In the absence of this ioctl, userland falls back to a correct path + * of waiting for a vblank, then dispatching the swap on its own. + * Context switching to userland and back is plenty fast enough for + * meeting the requirements of vblank swapping. + */ + return -EINVAL; +} + +static int i915_flip_bufs(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + DRM_DEBUG_DRIVER("%s\n", __func__); + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_flip(dev); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +static int i915_getparam(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_getparam_t *param = data; + int value; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + switch (param->param) { + case I915_PARAM_IRQ_ACTIVE: + value = dev->pdev->irq ? 1 : 0; + break; + case I915_PARAM_ALLOW_BATCHBUFFER: + value = dev_priv->dri1.allow_batchbuffer ? 1 : 0; + break; + case I915_PARAM_LAST_DISPATCH: + value = READ_BREADCRUMB(dev_priv); + break; + case I915_PARAM_CHIPSET_ID: + value = dev->pci_device; + break; + case I915_PARAM_HAS_GEM: + value = 1; + break; + case I915_PARAM_NUM_FENCES_AVAIL: + value = dev_priv->num_fence_regs - dev_priv->fence_reg_start; + break; + case I915_PARAM_HAS_OVERLAY: + value = dev_priv->overlay ? 1 : 0; + break; + case I915_PARAM_HAS_PAGEFLIPPING: + value = 1; + break; + case I915_PARAM_HAS_EXECBUF2: + /* depends on GEM */ + value = 1; + break; + case I915_PARAM_HAS_BSD: + value = intel_ring_initialized(&dev_priv->ring[VCS]); + break; + case I915_PARAM_HAS_BLT: + value = intel_ring_initialized(&dev_priv->ring[BCS]); + break; + case I915_PARAM_HAS_RELAXED_FENCING: + value = 1; + break; + case I915_PARAM_HAS_COHERENT_RINGS: + value = 1; + break; + case I915_PARAM_HAS_EXEC_CONSTANTS: + value = INTEL_INFO(dev)->gen >= 4; + break; + case I915_PARAM_HAS_RELAXED_DELTA: + value = 1; + break; + case I915_PARAM_HAS_GEN7_SOL_RESET: + value = 1; + break; + case I915_PARAM_HAS_LLC: + value = HAS_LLC(dev); + break; + case I915_PARAM_HAS_ALIASING_PPGTT: + value = dev_priv->mm.aliasing_ppgtt ? 1 : 0; + break; + case I915_PARAM_HAS_WAIT_TIMEOUT: + value = 1; + break; + case I915_PARAM_HAS_SEMAPHORES: + value = i915_semaphore_is_enabled(dev); + break; + case I915_PARAM_HAS_PRIME_VMAP_FLUSH: + value = 1; + break; + case I915_PARAM_HAS_SECURE_BATCHES: + value = capable(CAP_SYS_ADMIN); + break; + case I915_PARAM_HAS_PINNED_BATCHES: + value = 1; + break; + default: + DRM_DEBUG_DRIVER("Unknown parameter %d\n", + param->param); + return -EINVAL; + } + + if (DRM_COPY_TO_USER(param->value, &value, sizeof(int))) { + DRM_ERROR("DRM_COPY_TO_USER failed\n"); + return -EFAULT; + } + + return 0; +} + +static int i915_setparam(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_setparam_t *param = data; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + switch (param->param) { + case I915_SETPARAM_USE_MI_BATCHBUFFER_START: + break; + case I915_SETPARAM_TEX_LRU_LOG_GRANULARITY: + break; + case I915_SETPARAM_ALLOW_BATCHBUFFER: + dev_priv->dri1.allow_batchbuffer = param->value ? 1 : 0; + break; + case I915_SETPARAM_NUM_USED_FENCES: + if (param->value > dev_priv->num_fence_regs || + param->value < 0) + return -EINVAL; + /* Userspace can use first N regs */ + dev_priv->fence_reg_start = param->value; + break; + default: + DRM_DEBUG_DRIVER("unknown parameter %d\n", + param->param); + return -EINVAL; + } + + return 0; +} + +static int i915_set_status_page(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_hws_addr_t *hws = data; + struct intel_ring_buffer *ring; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!I915_NEED_GFX_HWS(dev)) + return -EINVAL; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + WARN(1, "tried to set status page when mode setting active\n"); + return 0; + } + + DRM_DEBUG_DRIVER("set status page addr 0x%08x\n", (u32)hws->addr); + + ring = LP_RING(dev_priv); + ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12); + + dev_priv->dri1.gfx_hws_cpu_addr = + ioremap_wc(dev_priv->mm.gtt_base_addr + hws->addr, 4096); + if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { + i915_dma_cleanup(dev); + ring->status_page.gfx_addr = 0; + DRM_ERROR("can not ioremap virtual address for" + " G33 hw status page\n"); + return -ENOMEM; + } + + memset_io(dev_priv->dri1.gfx_hws_cpu_addr, 0, PAGE_SIZE); + I915_WRITE(HWS_PGA, ring->status_page.gfx_addr); + + DRM_DEBUG_DRIVER("load hws HWS_PGA with gfx mem 0x%x\n", + ring->status_page.gfx_addr); + DRM_DEBUG_DRIVER("load hws at %p\n", + ring->status_page.page_addr); + return 0; +} + +static int i915_get_bridge_dev(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0)); + if (!dev_priv->bridge_dev) { + DRM_ERROR("bridge device not found\n"); + return -1; + } + return 0; +} + +#define MCHBAR_I915 0x44 +#define MCHBAR_I965 0x48 +#define MCHBAR_SIZE (4*4096) + +#define DEVEN_REG 0x54 +#define DEVEN_MCHBAR_EN (1 << 28) + +/* Allocate space for the MCH regs if needed, return nonzero on error */ +static int +intel_alloc_mchbar_resource(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp_lo, temp_hi = 0; + u64 mchbar_addr; + int ret; + + if (INTEL_INFO(dev)->gen >= 4) + pci_read_config_dword(dev_priv->bridge_dev, reg + 4, &temp_hi); + pci_read_config_dword(dev_priv->bridge_dev, reg, &temp_lo); + mchbar_addr = ((u64)temp_hi << 32) | temp_lo; + + /* If ACPI doesn't have it, assume we need to allocate it ourselves */ +#ifdef CONFIG_PNP + if (mchbar_addr && + pnp_range_reserved(mchbar_addr, mchbar_addr + MCHBAR_SIZE)) + return 0; +#endif + + /* Get some space for it */ + dev_priv->mch_res.name = "i915 MCHBAR"; + dev_priv->mch_res.flags = IORESOURCE_MEM; + ret = pci_bus_alloc_resource(dev_priv->bridge_dev->bus, + &dev_priv->mch_res, + MCHBAR_SIZE, MCHBAR_SIZE, + PCIBIOS_MIN_MEM, + 0, pcibios_align_resource, + dev_priv->bridge_dev); + if (ret) { + DRM_DEBUG_DRIVER("failed bus alloc: %d\n", ret); + dev_priv->mch_res.start = 0; + return ret; + } + + if (INTEL_INFO(dev)->gen >= 4) + pci_write_config_dword(dev_priv->bridge_dev, reg + 4, + upper_32_bits(dev_priv->mch_res.start)); + + pci_write_config_dword(dev_priv->bridge_dev, reg, + lower_32_bits(dev_priv->mch_res.start)); + return 0; +} + +/* Setup MCHBAR if possible, return true if we should disable it again */ +static void +intel_setup_mchbar(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int mchbar_reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp; + bool enabled; + + dev_priv->mchbar_need_disable = false; + + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_read_config_dword(dev_priv->bridge_dev, DEVEN_REG, &temp); + enabled = !!(temp & DEVEN_MCHBAR_EN); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + enabled = temp & 1; + } + + /* If it's already enabled, don't have to do anything */ + if (enabled) + return; + + if (intel_alloc_mchbar_resource(dev)) + return; + + dev_priv->mchbar_need_disable = true; + + /* Space is allocated or reserved, so enable it. */ + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_write_config_dword(dev_priv->bridge_dev, DEVEN_REG, + temp | DEVEN_MCHBAR_EN); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + pci_write_config_dword(dev_priv->bridge_dev, mchbar_reg, temp | 1); + } +} + +static void +intel_teardown_mchbar(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int mchbar_reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp; + + if (dev_priv->mchbar_need_disable) { + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_read_config_dword(dev_priv->bridge_dev, DEVEN_REG, &temp); + temp &= ~DEVEN_MCHBAR_EN; + pci_write_config_dword(dev_priv->bridge_dev, DEVEN_REG, temp); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + temp &= ~1; + pci_write_config_dword(dev_priv->bridge_dev, mchbar_reg, temp); + } + } + + if (dev_priv->mch_res.start) + release_resource(&dev_priv->mch_res); +} + +/* true = enable decode, false = disable decoder */ +static unsigned int i915_vga_set_decode(void *cookie, bool state) +{ + struct drm_device *dev = cookie; + + intel_modeset_vga_set_state(dev, state); + if (state) + return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM | + VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM; + else + return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM; +} + +static void i915_switcheroo_set_state(struct pci_dev *pdev, enum vga_switcheroo_state state) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + pm_message_t pmm = { .event = PM_EVENT_SUSPEND }; + if (state == VGA_SWITCHEROO_ON) { + pr_info("switched on\n"); + dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; + /* i915 resume handler doesn't set to D0 */ + pci_set_power_state(dev->pdev, PCI_D0); + i915_resume(dev); + dev->switch_power_state = DRM_SWITCH_POWER_ON; + } else { + pr_err("switched off\n"); + dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; + i915_suspend(dev, pmm); + dev->switch_power_state = DRM_SWITCH_POWER_OFF; + } +} + +static bool i915_switcheroo_can_switch(struct pci_dev *pdev) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + bool can_switch; + + spin_lock(&dev->count_lock); + can_switch = (dev->open_count == 0); + spin_unlock(&dev->count_lock); + return can_switch; +} + +static const struct vga_switcheroo_client_ops i915_switcheroo_ops = { + .set_gpu_state = i915_switcheroo_set_state, + .reprobe = NULL, + .can_switch = i915_switcheroo_can_switch, +}; + +static int i915_load_modeset_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ret = intel_parse_bios(dev); + if (ret) + DRM_INFO("failed to find VBIOS tables\n"); + + /* If we have > 1 VGA cards, then we need to arbitrate access + * to the common VGA resources. + * + * If we are a secondary display controller (!PCI_DISPLAY_CLASS_VGA), + * then we do not take part in VGA arbitration and the + * vga_client_register() fails with -ENODEV. + */ + ret = vga_client_register(dev->pdev, dev, NULL, i915_vga_set_decode); + if (ret && ret != -ENODEV) + goto out; + + intel_register_dsm_handler(); + + ret = vga_switcheroo_register_client(dev->pdev, &i915_switcheroo_ops); + if (ret) + goto cleanup_vga_client; + + /* Initialise stolen first so that we may reserve preallocated + * objects for the BIOS to KMS transition. + */ + ret = i915_gem_init_stolen(dev); + if (ret) + goto cleanup_vga_switcheroo; + + intel_modeset_init(dev); + + ret = i915_gem_init(dev); + if (ret) + goto cleanup_gem_stolen; + + intel_modeset_gem_init(dev); + + INIT_WORK(&dev_priv->console_resume_work, intel_console_resume); + + ret = drm_irq_install(dev); + if (ret) + goto cleanup_gem; + + /* Always safe in the mode setting case. */ + /* FIXME: do pre/post-mode set stuff in core KMS code */ + dev->vblank_disable_allowed = 1; + + ret = intel_fbdev_init(dev); + if (ret) + goto cleanup_irq; + + drm_kms_helper_poll_init(dev); + + /* We're off and running w/KMS */ + dev_priv->mm.suspended = 0; + + return 0; + +cleanup_irq: + drm_irq_uninstall(dev); +cleanup_gem: + mutex_lock(&dev->struct_mutex); + i915_gem_cleanup_ringbuffer(dev); + mutex_unlock(&dev->struct_mutex); + i915_gem_cleanup_aliasing_ppgtt(dev); +cleanup_gem_stolen: + i915_gem_cleanup_stolen(dev); +cleanup_vga_switcheroo: + vga_switcheroo_unregister_client(dev->pdev); +cleanup_vga_client: + vga_client_register(dev->pdev, NULL, NULL, NULL); +out: + return ret; +} + +int i915_master_create(struct drm_device *dev, struct drm_master *master) +{ + struct drm_i915_master_private *master_priv; + + master_priv = kzalloc(sizeof(*master_priv), GFP_KERNEL); + if (!master_priv) + return -ENOMEM; + + master->driver_priv = master_priv; + return 0; +} + +void i915_master_destroy(struct drm_device *dev, struct drm_master *master) +{ + struct drm_i915_master_private *master_priv = master->driver_priv; + + if (!master_priv) + return; + + kfree(master_priv); + + master->driver_priv = NULL; +} + +static void +i915_mtrr_setup(struct drm_i915_private *dev_priv, unsigned long base, + unsigned long size) +{ + dev_priv->mm.gtt_mtrr = -1; + +#if defined(CONFIG_X86_PAT) + if (cpu_has_pat) + return; +#endif + + /* Set up a WC MTRR for non-PAT systems. This is more common than + * one would think, because the kernel disables PAT on first + * generation Core chips because WC PAT gets overridden by a UC + * MTRR if present. Even if a UC MTRR isn't present. + */ + dev_priv->mm.gtt_mtrr = mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1); + if (dev_priv->mm.gtt_mtrr < 0) { + DRM_INFO("MTRR allocation failed. Graphics " + "performance may suffer.\n"); + } +} + +static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv) +{ + struct apertures_struct *ap; + struct pci_dev *pdev = dev_priv->dev->pdev; + bool primary; + + ap = alloc_apertures(1); + if (!ap) + return; + + ap->ranges[0].base = dev_priv->mm.gtt->gma_bus_addr; + ap->ranges[0].size = + dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + primary = + pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; + + remove_conflicting_framebuffers(ap, "inteldrmfb", primary); + + kfree(ap); +} + +static void i915_dump_device_info(struct drm_i915_private *dev_priv) +{ + const struct intel_device_info *info = dev_priv->info; + +#define DEV_INFO_FLAG(name) info->name ? #name "," : "" +#define DEV_INFO_SEP , + DRM_DEBUG_DRIVER("i915 device info: gen=%i, pciid=0x%04x flags=" + "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", + info->gen, + dev_priv->dev->pdev->device, + DEV_INFO_FLAGS); +#undef DEV_INFO_FLAG +#undef DEV_INFO_SEP +} + +/** + * i915_driver_load - setup chip and create an initial config + * @dev: DRM device + * @flags: startup flags + * + * The driver load routine has to do several things: + * - drive output discovery via intel_modeset_init() + * - initialize the memory manager + * - allocate initial config memory + * - setup the DRM framebuffer with the allocated memory + */ +int i915_driver_load(struct drm_device *dev, unsigned long flags) +{ + struct drm_i915_private *dev_priv; + struct intel_device_info *info; + int ret = 0, mmio_bar, mmio_size; + uint32_t aperture_size; + + info = (struct intel_device_info *) flags; + + /* Refuse to load on gen6+ without kms enabled. */ + if (info->gen >= 6 && !drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + /* i915 has 4 more counters */ + dev->counters += 4; + dev->types[6] = _DRM_STAT_IRQ; + dev->types[7] = _DRM_STAT_PRIMARY; + dev->types[8] = _DRM_STAT_SECONDARY; + dev->types[9] = _DRM_STAT_DMA; + + dev_priv = kzalloc(sizeof(drm_i915_private_t), GFP_KERNEL); + if (dev_priv == NULL) + return -ENOMEM; + + dev->dev_private = (void *)dev_priv; + dev_priv->dev = dev; + dev_priv->info = info; + + i915_dump_device_info(dev_priv); + + if (i915_get_bridge_dev(dev)) { + ret = -EIO; + goto free_priv; + } + + ret = i915_gem_gtt_init(dev); + if (ret) + goto put_bridge; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + i915_kick_out_firmware_fb(dev_priv); + + pci_set_master(dev->pdev); + + /* overlay on gen2 is broken and can't address above 1G */ + if (IS_GEN2(dev)) + dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(30)); + + /* 965GM sometimes incorrectly writes to hardware status page (HWS) + * using 32bit addressing, overwriting memory if HWS is located + * above 4GB. + * + * The documentation also mentions an issue with undefined + * behaviour if any general state is accessed within a page above 4GB, + * which also needs to be handled carefully. + */ + if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) + dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(32)); + + mmio_bar = IS_GEN2(dev) ? 1 : 0; + /* Before gen4, the registers and the GTT are behind different BARs. + * However, from gen4 onwards, the registers and the GTT are shared + * in the same BAR, so we want to restrict this ioremap from + * clobbering the GTT which we want ioremap_wc instead. Fortunately, + * the register BAR remains the same size for all the earlier + * generations up to Ironlake. + */ + if (info->gen < 5) + mmio_size = 512*1024; + else + mmio_size = 2*1024*1024; + + dev_priv->regs = pci_iomap(dev->pdev, mmio_bar, mmio_size); + if (!dev_priv->regs) { + DRM_ERROR("failed to map registers\n"); + ret = -EIO; + goto put_gmch; + } + + aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + dev_priv->mm.gtt_base_addr = dev_priv->mm.gtt->gma_bus_addr; + + dev_priv->mm.gtt_mapping = + io_mapping_create_wc(dev_priv->mm.gtt_base_addr, + aperture_size); + if (dev_priv->mm.gtt_mapping == NULL) { + ret = -EIO; + goto out_rmmap; + } + + i915_mtrr_setup(dev_priv, dev_priv->mm.gtt_base_addr, + aperture_size); + + /* The i915 workqueue is primarily used for batched retirement of + * requests (and thus managing bo) once the task has been completed + * by the GPU. i915_gem_retire_requests() is called directly when we + * need high-priority retirement, such as waiting for an explicit + * bo. + * + * It is also used for periodic low-priority events, such as + * idle-timers and recording error state. + * + * All tasks on the workqueue are expected to acquire the dev mutex + * so there is no point in running more than one instance of the + * workqueue at any time. Use an ordered one. + */ + dev_priv->wq = alloc_ordered_workqueue("i915", 0); + if (dev_priv->wq == NULL) { + DRM_ERROR("Failed to create our workqueue.\n"); + ret = -ENOMEM; + goto out_mtrrfree; + } + + /* This must be called before any calls to HAS_PCH_* */ + intel_detect_pch(dev); + + intel_irq_init(dev); + intel_gt_init(dev); + + /* Try to make sure MCHBAR is enabled before poking at it */ + intel_setup_mchbar(dev); + intel_setup_gmbus(dev); + intel_opregion_setup(dev); + + intel_setup_bios(dev); + + i915_gem_load(dev); + + /* On the 945G/GM, the chipset reports the MSI capability on the + * integrated graphics even though the support isn't actually there + * according to the published specs. It doesn't appear to function + * correctly in testing on 945G. + * This may be a side effect of MSI having been made available for PEG + * and the registers being closely associated. + * + * According to chipset errata, on the 965GM, MSI interrupts may + * be lost or delayed, but we use them anyways to avoid + * stuck interrupts on some machines. + */ + if (!IS_I945G(dev) && !IS_I945GM(dev)) + pci_enable_msi(dev->pdev); + + spin_lock_init(&dev_priv->irq_lock); + spin_lock_init(&dev_priv->error_lock); + spin_lock_init(&dev_priv->rps.lock); + spin_lock_init(&dev_priv->dpio_lock); + + mutex_init(&dev_priv->rps.hw_lock); + + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + dev_priv->num_pipe = 3; + else if (IS_MOBILE(dev) || !IS_GEN2(dev)) + dev_priv->num_pipe = 2; + else + dev_priv->num_pipe = 1; + + ret = drm_vblank_init(dev, dev_priv->num_pipe); + if (ret) + goto out_gem_unload; + + /* Start out suspended */ + dev_priv->mm.suspended = 1; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + ret = i915_load_modeset_init(dev); + if (ret < 0) { + DRM_ERROR("failed to init modeset\n"); + goto out_gem_unload; + } + } + + i915_setup_sysfs(dev); + + /* Must be done after probing outputs */ + intel_opregion_init(dev); + acpi_video_register(); + + setup_timer(&dev_priv->hangcheck_timer, i915_hangcheck_elapsed, + (unsigned long) dev); + + if (IS_GEN5(dev)) + intel_gpu_ips_init(dev_priv); + + return 0; + +out_gem_unload: + if (dev_priv->mm.inactive_shrinker.shrink) + unregister_shrinker(&dev_priv->mm.inactive_shrinker); + + if (dev->pdev->msi_enabled) + pci_disable_msi(dev->pdev); + + intel_teardown_gmbus(dev); + intel_teardown_mchbar(dev); + destroy_workqueue(dev_priv->wq); +out_mtrrfree: + if (dev_priv->mm.gtt_mtrr >= 0) { + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + aperture_size); + dev_priv->mm.gtt_mtrr = -1; + } + io_mapping_free(dev_priv->mm.gtt_mapping); +out_rmmap: + pci_iounmap(dev->pdev, dev_priv->regs); +put_gmch: + i915_gem_gtt_fini(dev); +put_bridge: + pci_dev_put(dev_priv->bridge_dev); +free_priv: + kfree(dev_priv); + return ret; +} + +int i915_driver_unload(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + intel_gpu_ips_teardown(); + + i915_teardown_sysfs(dev); + + if (dev_priv->mm.inactive_shrinker.shrink) + unregister_shrinker(&dev_priv->mm.inactive_shrinker); + + mutex_lock(&dev->struct_mutex); + ret = i915_gpu_idle(dev); + if (ret) + DRM_ERROR("failed to idle hardware: %d\n", ret); + i915_gem_retire_requests(dev); + mutex_unlock(&dev->struct_mutex); + + /* Cancel the retire work handler, which should be idle now. */ + cancel_delayed_work_sync(&dev_priv->mm.retire_work); + + io_mapping_free(dev_priv->mm.gtt_mapping); + if (dev_priv->mm.gtt_mtrr >= 0) { + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + dev_priv->mm.gtt->gtt_mappable_entries * PAGE_SIZE); + dev_priv->mm.gtt_mtrr = -1; + } + + acpi_video_unregister(); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_fbdev_fini(dev); + intel_modeset_cleanup(dev); + cancel_work_sync(&dev_priv->console_resume_work); + + /* + * free the memory space allocated for the child device + * config parsed from VBT + */ + if (dev_priv->child_dev && dev_priv->child_dev_num) { + kfree(dev_priv->child_dev); + dev_priv->child_dev = NULL; + dev_priv->child_dev_num = 0; + } + + vga_switcheroo_unregister_client(dev->pdev); + vga_client_register(dev->pdev, NULL, NULL, NULL); + } + + /* Free error state after interrupts are fully disabled. */ + del_timer_sync(&dev_priv->hangcheck_timer); + cancel_work_sync(&dev_priv->error_work); + i915_destroy_error_state(dev); + + if (dev->pdev->msi_enabled) + pci_disable_msi(dev->pdev); + + intel_opregion_fini(dev); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Flush any outstanding unpin_work. */ + flush_workqueue(dev_priv->wq); + + mutex_lock(&dev->struct_mutex); + i915_gem_free_all_phys_object(dev); + i915_gem_cleanup_ringbuffer(dev); + i915_gem_context_fini(dev); + mutex_unlock(&dev->struct_mutex); + i915_gem_cleanup_aliasing_ppgtt(dev); + i915_gem_cleanup_stolen(dev); + drm_mm_takedown_hsw(&dev_priv->mm.stolen); + + intel_cleanup_overlay(dev); + + if (!I915_NEED_GFX_HWS(dev)) + i915_free_hws(dev); + } + + if (dev_priv->regs != NULL) + pci_iounmap(dev->pdev, dev_priv->regs); + + intel_teardown_gmbus(dev); + intel_teardown_mchbar(dev); + + destroy_workqueue(dev_priv->wq); + + pci_dev_put(dev_priv->bridge_dev); + kfree(dev->dev_private); + + return 0; +} + +int i915_driver_open(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv; + + DRM_DEBUG_DRIVER("\n"); + file_priv = kmalloc(sizeof(*file_priv), GFP_KERNEL); + if (!file_priv) + return -ENOMEM; + + file->driver_priv = file_priv; + + spin_lock_init(&file_priv->mm.lock); + INIT_LIST_HEAD(&file_priv->mm.request_list); + + idr_init(&file_priv->context_idr); + + return 0; +} + +/** + * i915_driver_lastclose - clean up after all DRM clients have exited + * @dev: DRM device + * + * Take care of cleaning up after all DRM clients have exited. In the + * mode setting case, we want to restore the kernel's initial mode (just + * in case the last client left us in a bad state). + * + * Additionally, in the non-mode setting case, we'll tear down the GTT + * and DMA structures, since the kernel won't be using them, and clea + * up any GEM state. + */ +void i915_driver_lastclose(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + /* On gen6+ we refuse to init without kms enabled, but then the drm core + * goes right around and calls lastclose. Check for this and don't clean + * up anything. */ + if (!dev_priv) + return; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_fb_restore_mode(dev); + vga_switcheroo_process_delayed_switch(); + return; + } + + i915_gem_lastclose(dev); + + i915_dma_cleanup(dev); +} + +void i915_driver_preclose(struct drm_device * dev, struct drm_file *file_priv) +{ + i915_gem_context_close(dev, file_priv); + i915_gem_release(dev, file_priv); +} + +void i915_driver_postclose(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + kfree(file_priv); +} + +struct drm_ioctl_desc i915_ioctls[] = { + DRM_IOCTL_DEF_DRV(I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_FLUSH, i915_flush_ioctl, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_FLIP, i915_flip_bufs, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_GETPARAM, i915_getparam, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_ALLOC, drm_noop, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_FREE, drm_noop, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_INIT_HEAP, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_CMDBUFFER, i915_cmdbuffer, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_DESTROY_HEAP, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_SET_VBLANK_PIPE, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_GET_VBLANK_PIPE, i915_vblank_pipe_get, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_SET_SPRITE_COLORKEY, intel_sprite_set_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GET_SPRITE_COLORKEY, intel_sprite_get_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_WAIT, i915_gem_wait_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_UNLOCKED), +}; + +int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls); + +/* + * This is really ugly: Because old userspace abused the linux agp interface to + * manage the gtt, we need to claim that all intel devices are agp. For + * otherwise the drm core refuses to initialize the agp support code. + */ +int i915_driver_device_is_agp(struct drm_device * dev) +{ + return 1; +} --- linux-3.5.0.orig/ubuntu/i915/intel_sdvo.c +++ linux-3.5.0/ubuntu/i915/intel_sdvo.c @@ -0,0 +1,2822 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2007 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ +#include +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" +#include "intel_sdvo_regs.h" + +#define SDVO_TMDS_MASK (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1) +#define SDVO_RGB_MASK (SDVO_OUTPUT_RGB0 | SDVO_OUTPUT_RGB1) +#define SDVO_LVDS_MASK (SDVO_OUTPUT_LVDS0 | SDVO_OUTPUT_LVDS1) +#define SDVO_TV_MASK (SDVO_OUTPUT_CVBS0 | SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_YPRPB0) + +#define SDVO_OUTPUT_MASK (SDVO_TMDS_MASK | SDVO_RGB_MASK | SDVO_LVDS_MASK |\ + SDVO_TV_MASK) + +#define IS_TV(c) (c->output_flag & SDVO_TV_MASK) +#define IS_TMDS(c) (c->output_flag & SDVO_TMDS_MASK) +#define IS_LVDS(c) (c->output_flag & SDVO_LVDS_MASK) +#define IS_TV_OR_LVDS(c) (c->output_flag & (SDVO_TV_MASK | SDVO_LVDS_MASK)) +#define IS_DIGITAL(c) (c->output_flag & (SDVO_TMDS_MASK | SDVO_LVDS_MASK)) + + +static const char *tv_format_names[] = { + "NTSC_M" , "NTSC_J" , "NTSC_443", + "PAL_B" , "PAL_D" , "PAL_G" , + "PAL_H" , "PAL_I" , "PAL_M" , + "PAL_N" , "PAL_NC" , "PAL_60" , + "SECAM_B" , "SECAM_D" , "SECAM_G" , + "SECAM_K" , "SECAM_K1", "SECAM_L" , + "SECAM_60" +}; + +#define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names)) + +struct intel_sdvo { + struct intel_encoder base; + + struct i2c_adapter *i2c; + u8 slave_addr; + + struct i2c_adapter ddc; + + /* Register for the SDVO device: SDVOB or SDVOC */ + uint32_t sdvo_reg; + + /* Active outputs controlled by this SDVO output */ + uint16_t controlled_output; + + /* + * Capabilities of the SDVO device returned by + * i830_sdvo_get_capabilities() + */ + struct intel_sdvo_caps caps; + + /* Pixel clock limitations reported by the SDVO device, in kHz */ + int pixel_clock_min, pixel_clock_max; + + /* + * For multiple function SDVO device, + * this is for current attached outputs. + */ + uint16_t attached_output; + + /* + * Hotplug activation bits for this device + */ + uint16_t hotplug_active; + + /** + * This is used to select the color range of RBG outputs in HDMI mode. + * It is only valid when using TMDS encoding and 8 bit per color mode. + */ + uint32_t color_range; + + /** + * This is set if we're going to treat the device as TV-out. + * + * While we have these nice friendly flags for output types that ought + * to decide this for us, the S-Video output on our HDMI+S-Video card + * shows up as RGB1 (VGA). + */ + bool is_tv; + + /* On different gens SDVOB is at different places. */ + bool is_sdvob; + + /* This is for current tv format name */ + int tv_format_index; + + /** + * This is set if we treat the device as HDMI, instead of DVI. + */ + bool is_hdmi; + bool has_hdmi_monitor; + bool has_hdmi_audio; + + /** + * This is set if we detect output of sdvo device as LVDS and + * have a valid fixed mode to use with the panel. + */ + bool is_lvds; + + /** + * This is sdvo fixed pannel mode pointer + */ + struct drm_display_mode *sdvo_lvds_fixed_mode; + + /* DDC bus used by this SDVO encoder */ + uint8_t ddc_bus; + + /* + * the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd + */ + uint8_t dtd_sdvo_flags; +}; + +struct intel_sdvo_connector { + struct intel_connector base; + + /* Mark the type of connector */ + uint16_t output_flag; + + enum hdmi_force_audio force_audio; + + /* This contains all current supported TV format */ + u8 tv_format_supported[TV_FORMAT_NUM]; + int format_supported_num; + struct drm_property *tv_format; + + /* add the property for the SDVO-TV */ + struct drm_property *left; + struct drm_property *right; + struct drm_property *top; + struct drm_property *bottom; + struct drm_property *hpos; + struct drm_property *vpos; + struct drm_property *contrast; + struct drm_property *saturation; + struct drm_property *hue; + struct drm_property *sharpness; + struct drm_property *flicker_filter; + struct drm_property *flicker_filter_adaptive; + struct drm_property *flicker_filter_2d; + struct drm_property *tv_chroma_filter; + struct drm_property *tv_luma_filter; + struct drm_property *dot_crawl; + + /* add the property for the SDVO-TV/LVDS */ + struct drm_property *brightness; + + /* Add variable to record current setting for the above property */ + u32 left_margin, right_margin, top_margin, bottom_margin; + + /* this is to get the range of margin.*/ + u32 max_hscan, max_vscan; + u32 max_hpos, cur_hpos; + u32 max_vpos, cur_vpos; + u32 cur_brightness, max_brightness; + u32 cur_contrast, max_contrast; + u32 cur_saturation, max_saturation; + u32 cur_hue, max_hue; + u32 cur_sharpness, max_sharpness; + u32 cur_flicker_filter, max_flicker_filter; + u32 cur_flicker_filter_adaptive, max_flicker_filter_adaptive; + u32 cur_flicker_filter_2d, max_flicker_filter_2d; + u32 cur_tv_chroma_filter, max_tv_chroma_filter; + u32 cur_tv_luma_filter, max_tv_luma_filter; + u32 cur_dot_crawl, max_dot_crawl; +}; + +static struct intel_sdvo *to_intel_sdvo(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_sdvo, base.base); +} + +static struct intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_sdvo, base); +} + +static struct intel_sdvo_connector *to_intel_sdvo_connector(struct drm_connector *connector) +{ + return container_of(to_intel_connector(connector), struct intel_sdvo_connector, base); +} + +static bool +intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags); +static bool +intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + int type); +static bool +intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector); + +/** + * Writes the SDVOB or SDVOC with the given value, but always writes both + * SDVOB and SDVOC to work around apparent hardware issues (according to + * comments in the BIOS). + */ +static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 bval = val, cval = val; + int i; + + if (intel_sdvo->sdvo_reg == PCH_SDVOB) { + I915_WRITE(intel_sdvo->sdvo_reg, val); + I915_READ(intel_sdvo->sdvo_reg); + return; + } + + if (intel_sdvo->sdvo_reg == SDVOB) { + cval = I915_READ(SDVOC); + } else { + bval = I915_READ(SDVOB); + } + /* + * Write the registers twice for luck. Sometimes, + * writing them only once doesn't appear to 'stick'. + * The BIOS does this too. Yay, magic + */ + for (i = 0; i < 2; i++) + { + I915_WRITE(SDVOB, bval); + I915_READ(SDVOB); + I915_WRITE(SDVOC, cval); + I915_READ(SDVOC); + } +} + +static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) +{ + struct i2c_msg msgs[] = { + { + .addr = intel_sdvo->slave_addr, + .flags = 0, + .len = 1, + .buf = &addr, + }, + { + .addr = intel_sdvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = ch, + } + }; + int ret; + + if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) + return true; + + DRM_DEBUG_KMS("i2c transfer returned %d\n", ret); + return false; +} + +#define SDVO_CMD_NAME_ENTRY(cmd) {cmd, #cmd} +/** Mapping of command numbers to names, for debug output */ +static const struct _sdvo_cmd_name { + u8 cmd; + const char *name; +} sdvo_cmd_names[] = { + SDVO_CMD_NAME_ENTRY(SDVO_CMD_RESET), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DEVICE_CAPS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FIRMWARE_REV), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TRAINED_INPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_OUTPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_OUTPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_IN_OUT_MAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_IN_OUT_MAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ATTACHED_DISPLAYS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HOT_PLUG_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_HOT_PLUG), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_HOT_PLUG), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_INPUT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_OUTPUT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CLOCK_RATE_MULT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CLOCK_RATE_MULT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_TV_FORMATS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_FORMAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_FORMAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DISPLAY_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS), + + /* Add the op code for SDVO enhancements */ + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DOT_CRAWL), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DOT_CRAWL), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_LUMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_LUMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_LUMA_FILTER), + + /* HDMI op code */ + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_PIXEL_REPLI), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PIXEL_REPLI), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY_CAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_COLORIMETRY), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_AUDIO_STAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_STAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INDEX), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_INDEX), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INFO), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_AV_SPLIT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_AV_SPLIT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_TXRATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_TXRATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_DATA), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA), +}; + +#define SDVO_NAME(svdo) ((svdo)->is_sdvob ? "SDVOB" : "SDVOC") + +static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, + const void *args, int args_len) +{ + int i; + + DRM_DEBUG_KMS("%s: W: %02X ", + SDVO_NAME(intel_sdvo), cmd); + for (i = 0; i < args_len; i++) + DRM_LOG_KMS("%02X ", ((u8 *)args)[i]); + for (; i < 8; i++) + DRM_LOG_KMS(" "); + for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) { + if (cmd == sdvo_cmd_names[i].cmd) { + DRM_LOG_KMS("(%s)", sdvo_cmd_names[i].name); + break; + } + } + if (i == ARRAY_SIZE(sdvo_cmd_names)) + DRM_LOG_KMS("(%02X)", cmd); + DRM_LOG_KMS("\n"); +} + +static const char *cmd_status_names[] = { + "Power on", + "Success", + "Not supported", + "Invalid arg", + "Pending", + "Target not specified", + "Scaling not supported" +}; + +static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, + const void *args, int args_len) +{ + u8 *buf, status; + struct i2c_msg *msgs; + int i, ret = true; + + /* Would be simpler to allocate both in one go ? */ + buf = (u8 *)kzalloc(args_len * 2 + 2, GFP_KERNEL); + if (!buf) + return false; + + msgs = kcalloc(args_len + 3, sizeof(*msgs), GFP_KERNEL); + if (!msgs) { + kfree(buf); + return false; + } + + intel_sdvo_debug_write(intel_sdvo, cmd, args, args_len); + + for (i = 0; i < args_len; i++) { + msgs[i].addr = intel_sdvo->slave_addr; + msgs[i].flags = 0; + msgs[i].len = 2; + msgs[i].buf = buf + 2 *i; + buf[2*i + 0] = SDVO_I2C_ARG_0 - i; + buf[2*i + 1] = ((u8*)args)[i]; + } + msgs[i].addr = intel_sdvo->slave_addr; + msgs[i].flags = 0; + msgs[i].len = 2; + msgs[i].buf = buf + 2*i; + buf[2*i + 0] = SDVO_I2C_OPCODE; + buf[2*i + 1] = cmd; + + /* the following two are to read the response */ + status = SDVO_I2C_CMD_STATUS; + msgs[i+1].addr = intel_sdvo->slave_addr; + msgs[i+1].flags = 0; + msgs[i+1].len = 1; + msgs[i+1].buf = &status; + + msgs[i+2].addr = intel_sdvo->slave_addr; + msgs[i+2].flags = I2C_M_RD; + msgs[i+2].len = 1; + msgs[i+2].buf = &status; + + ret = i2c_transfer(intel_sdvo->i2c, msgs, i+3); + if (ret < 0) { + DRM_DEBUG_KMS("I2c transfer returned %d\n", ret); + ret = false; + goto out; + } + if (ret != i+3) { + /* failure in I2C transfer */ + DRM_DEBUG_KMS("I2c transfer returned %d/%d\n", ret, i+3); + ret = false; + } + +out: + kfree(msgs); + kfree(buf); + return ret; +} + +static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, + void *response, int response_len) +{ + u8 retry = 15; /* 5 quick checks, followed by 10 long checks */ + u8 status; + int i; + + DRM_DEBUG_KMS("%s: R: ", SDVO_NAME(intel_sdvo)); + + /* + * The documentation states that all commands will be + * processed within 15µs, and that we need only poll + * the status byte a maximum of 3 times in order for the + * command to be complete. + * + * Check 5 times in case the hardware failed to read the docs. + * + * Also beware that the first response by many devices is to + * reply PENDING and stall for time. TVs are notorious for + * requiring longer than specified to complete their replies. + * Originally (in the DDX long ago), the delay was only ever 15ms + * with an additional delay of 30ms applied for TVs added later after + * many experiments. To accommodate both sets of delays, we do a + * sequence of slow checks if the device is falling behind and fails + * to reply within 5*15µs. + */ + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_CMD_STATUS, + &status)) + goto log_fail; + + while (status == SDVO_CMD_STATUS_PENDING && --retry) { + if (retry < 10) + msleep(15); + else + udelay(15); + + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_CMD_STATUS, + &status)) + goto log_fail; + } + + if (status <= SDVO_CMD_STATUS_SCALING_NOT_SUPP) + DRM_LOG_KMS("(%s)", cmd_status_names[status]); + else + DRM_LOG_KMS("(??? %d)", status); + + if (status != SDVO_CMD_STATUS_SUCCESS) + goto log_fail; + + /* Read the command response */ + for (i = 0; i < response_len; i++) { + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_RETURN_0 + i, + &((u8 *)response)[i])) + goto log_fail; + DRM_LOG_KMS(" %02X", ((u8 *)response)[i]); + } + DRM_LOG_KMS("\n"); + return true; + +log_fail: + DRM_LOG_KMS("... failed\n"); + return false; +} + +static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode) +{ + if (mode->clock >= 100000) + return 1; + else if (mode->clock >= 50000) + return 2; + else + return 4; +} + +static bool intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo, + u8 ddc_bus) +{ + /* This must be the immediately preceding write before the i2c xfer */ + return intel_sdvo_write_cmd(intel_sdvo, + SDVO_CMD_SET_CONTROL_BUS_SWITCH, + &ddc_bus, 1); +} + +static bool intel_sdvo_set_value(struct intel_sdvo *intel_sdvo, u8 cmd, const void *data, int len) +{ + if (!intel_sdvo_write_cmd(intel_sdvo, cmd, data, len)) + return false; + + return intel_sdvo_read_response(intel_sdvo, NULL, 0); +} + +static bool +intel_sdvo_get_value(struct intel_sdvo *intel_sdvo, u8 cmd, void *value, int len) +{ + if (!intel_sdvo_write_cmd(intel_sdvo, cmd, NULL, 0)) + return false; + + return intel_sdvo_read_response(intel_sdvo, value, len); +} + +static bool intel_sdvo_set_target_input(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_set_target_input_args targets = {0}; + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TARGET_INPUT, + &targets, sizeof(targets)); +} + +/** + * Return whether each input is trained. + * + * This function is making an assumption about the layout of the response, + * which should be checked against the docs. + */ +static bool intel_sdvo_get_trained_inputs(struct intel_sdvo *intel_sdvo, bool *input_1, bool *input_2) +{ + struct intel_sdvo_get_trained_inputs_response response; + + BUILD_BUG_ON(sizeof(response) != 1); + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_TRAINED_INPUTS, + &response, sizeof(response))) + return false; + + *input_1 = response.input0_trained; + *input_2 = response.input1_trained; + return true; +} + +static bool intel_sdvo_set_active_outputs(struct intel_sdvo *intel_sdvo, + u16 outputs) +{ + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_ACTIVE_OUTPUTS, + &outputs, sizeof(outputs)); +} + +static bool intel_sdvo_get_active_outputs(struct intel_sdvo *intel_sdvo, + u16 *outputs) +{ + return intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_ACTIVE_OUTPUTS, + outputs, sizeof(*outputs)); +} + +static bool intel_sdvo_set_encoder_power_state(struct intel_sdvo *intel_sdvo, + int mode) +{ + u8 state = SDVO_ENCODER_STATE_ON; + + switch (mode) { + case DRM_MODE_DPMS_ON: + state = SDVO_ENCODER_STATE_ON; + break; + case DRM_MODE_DPMS_STANDBY: + state = SDVO_ENCODER_STATE_STANDBY; + break; + case DRM_MODE_DPMS_SUSPEND: + state = SDVO_ENCODER_STATE_SUSPEND; + break; + case DRM_MODE_DPMS_OFF: + state = SDVO_ENCODER_STATE_OFF; + break; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_ENCODER_POWER_STATE, &state, sizeof(state)); +} + +static bool intel_sdvo_get_input_pixel_clock_range(struct intel_sdvo *intel_sdvo, + int *clock_min, + int *clock_max) +{ + struct intel_sdvo_pixel_clock_range clocks; + + BUILD_BUG_ON(sizeof(clocks) != 4); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE, + &clocks, sizeof(clocks))) + return false; + + /* Convert the values from units of 10 kHz to kHz. */ + *clock_min = clocks.min * 10; + *clock_max = clocks.max * 10; + return true; +} + +static bool intel_sdvo_set_target_output(struct intel_sdvo *intel_sdvo, + u16 outputs) +{ + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TARGET_OUTPUT, + &outputs, sizeof(outputs)); +} + +static bool intel_sdvo_set_timing(struct intel_sdvo *intel_sdvo, u8 cmd, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && + intel_sdvo_set_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); +} + +static bool intel_sdvo_set_input_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_timing(intel_sdvo, + SDVO_CMD_SET_INPUT_TIMINGS_PART1, dtd); +} + +static bool intel_sdvo_set_output_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_timing(intel_sdvo, + SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd); +} + +static bool +intel_sdvo_create_preferred_input_timing(struct intel_sdvo *intel_sdvo, + uint16_t clock, + uint16_t width, + uint16_t height) +{ + struct intel_sdvo_preferred_input_timing_args args; + + memset(&args, 0, sizeof(args)); + args.clock = clock; + args.width = width; + args.height = height; + args.interlace = 0; + + if (intel_sdvo->is_lvds && + (intel_sdvo->sdvo_lvds_fixed_mode->hdisplay != width || + intel_sdvo->sdvo_lvds_fixed_mode->vdisplay != height)) + args.scaled = 1; + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING, + &args, sizeof(args)); +} + +static bool intel_sdvo_get_preferred_input_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + BUILD_BUG_ON(sizeof(dtd->part1) != 8); + BUILD_BUG_ON(sizeof(dtd->part2) != 8); + return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, + &dtd->part1, sizeof(dtd->part1)) && + intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, + &dtd->part2, sizeof(dtd->part2)); +} + +static bool intel_sdvo_set_clock_rate_mult(struct intel_sdvo *intel_sdvo, u8 val) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); +} + +static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd, + struct drm_display_mode *mode) +{ + uint16_t width, height; + uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len; + uint16_t h_sync_offset, v_sync_offset; + int mode_clock; + + width = mode->hdisplay; + height = mode->vdisplay; + + /* do some mode translations */ + h_blank_len = mode->htotal - mode->hdisplay; + h_sync_len = mode->hsync_end - mode->hsync_start; + + v_blank_len = mode->vtotal - mode->vdisplay; + v_sync_len = mode->vsync_end - mode->vsync_start; + + h_sync_offset = mode->hsync_start - mode->hdisplay; + v_sync_offset = mode->vsync_start - mode->vdisplay; + + mode_clock = mode->clock; + mode_clock /= intel_mode_get_pixel_multiplier(mode) ?: 1; + mode_clock /= 10; + dtd->part1.clock = mode_clock; + + dtd->part1.h_active = width & 0xff; + dtd->part1.h_blank = h_blank_len & 0xff; + dtd->part1.h_high = (((width >> 8) & 0xf) << 4) | + ((h_blank_len >> 8) & 0xf); + dtd->part1.v_active = height & 0xff; + dtd->part1.v_blank = v_blank_len & 0xff; + dtd->part1.v_high = (((height >> 8) & 0xf) << 4) | + ((v_blank_len >> 8) & 0xf); + + dtd->part2.h_sync_off = h_sync_offset & 0xff; + dtd->part2.h_sync_width = h_sync_len & 0xff; + dtd->part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 | + (v_sync_len & 0xf); + dtd->part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) | + ((h_sync_len & 0x300) >> 4) | ((v_sync_offset & 0x30) >> 2) | + ((v_sync_len & 0x30) >> 4); + + dtd->part2.dtd_flags = 0x18; + if (mode->flags & DRM_MODE_FLAG_INTERLACE) + dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE; + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE; + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE; + + dtd->part2.sdvo_flags = 0; + dtd->part2.v_sync_off_high = v_sync_offset & 0xc0; + dtd->part2.reserved = 0; +} + +static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode, + const struct intel_sdvo_dtd *dtd) +{ + mode->hdisplay = dtd->part1.h_active; + mode->hdisplay += ((dtd->part1.h_high >> 4) & 0x0f) << 8; + mode->hsync_start = mode->hdisplay + dtd->part2.h_sync_off; + mode->hsync_start += (dtd->part2.sync_off_width_high & 0xc0) << 2; + mode->hsync_end = mode->hsync_start + dtd->part2.h_sync_width; + mode->hsync_end += (dtd->part2.sync_off_width_high & 0x30) << 4; + mode->htotal = mode->hdisplay + dtd->part1.h_blank; + mode->htotal += (dtd->part1.h_high & 0xf) << 8; + + mode->vdisplay = dtd->part1.v_active; + mode->vdisplay += ((dtd->part1.v_high >> 4) & 0x0f) << 8; + mode->vsync_start = mode->vdisplay; + mode->vsync_start += (dtd->part2.v_sync_off_width >> 4) & 0xf; + mode->vsync_start += (dtd->part2.sync_off_width_high & 0x0c) << 2; + mode->vsync_start += dtd->part2.v_sync_off_high & 0xc0; + mode->vsync_end = mode->vsync_start + + (dtd->part2.v_sync_off_width & 0xf); + mode->vsync_end += (dtd->part2.sync_off_width_high & 0x3) << 4; + mode->vtotal = mode->vdisplay + dtd->part1.v_blank; + mode->vtotal += (dtd->part1.v_high & 0xf) << 8; + + mode->clock = dtd->part1.clock * 10; + + mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); + if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE) + mode->flags |= DRM_MODE_FLAG_INTERLACE; + if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) + mode->flags |= DRM_MODE_FLAG_PHSYNC; + if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE) + mode->flags |= DRM_MODE_FLAG_PVSYNC; +} + +static bool intel_sdvo_check_supp_encode(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_encode encode; + + BUILD_BUG_ON(sizeof(encode) != 2); + return intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPP_ENCODE, + &encode, sizeof(encode)); +} + +static bool intel_sdvo_set_encode(struct intel_sdvo *intel_sdvo, + uint8_t mode) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_ENCODE, &mode, 1); +} + +static bool intel_sdvo_set_colorimetry(struct intel_sdvo *intel_sdvo, + uint8_t mode) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_COLORIMETRY, &mode, 1); +} + +#if 0 +static void intel_sdvo_dump_hdmi_buf(struct intel_sdvo *intel_sdvo) +{ + int i, j; + uint8_t set_buf_index[2]; + uint8_t av_split; + uint8_t buf_size; + uint8_t buf[48]; + uint8_t *pos; + + intel_sdvo_get_value(encoder, SDVO_CMD_GET_HBUF_AV_SPLIT, &av_split, 1); + + for (i = 0; i <= av_split; i++) { + set_buf_index[0] = i; set_buf_index[1] = 0; + intel_sdvo_write_cmd(encoder, SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2); + intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_INFO, NULL, 0); + intel_sdvo_read_response(encoder, &buf_size, 1); + + pos = buf; + for (j = 0; j <= buf_size; j += 8) { + intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_DATA, + NULL, 0); + intel_sdvo_read_response(encoder, pos, 8); + pos += 8; + } + } +} +#endif + +static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, + unsigned if_index, uint8_t tx_rate, + uint8_t *data, unsigned length) +{ + uint8_t set_buf_index[2] = { if_index, 0 }; + uint8_t hbuf_size, tmp[8]; + int i; + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, + &hbuf_size, 1)) + return false; + + /* Buffer size is 0 based, hooray! */ + hbuf_size++; + + DRM_DEBUG_KMS("writing sdvo hbuf: %i, hbuf_size %i, hbuf_size: %i\n", + if_index, length, hbuf_size); + + for (i = 0; i < hbuf_size; i += 8) { + memset(tmp, 0, 8); + if (i < length) + memcpy(tmp, data + i, min_t(unsigned, 8, length - i)); + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_DATA, + tmp, 8)) + return false; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_TXRATE, + &tx_rate, 1); +} + +static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo) +{ + struct dip_infoframe avi_if = { + .type = DIP_TYPE_AVI, + .ver = DIP_VERSION_AVI, + .len = DIP_LEN_AVI, + }; + uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)]; + + intel_dip_infoframe_csum(&avi_if); + + /* sdvo spec says that the ecc is handled by the hw, and it looks like + * we must not send the ecc field, either. */ + memcpy(sdvo_data, &avi_if, 3); + sdvo_data[3] = avi_if.checksum; + memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi)); + + return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, + SDVO_HBUF_TX_VSYNC, + sdvo_data, sizeof(sdvo_data)); +} + +static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_tv_format format; + uint32_t format_map; + + format_map = 1 << intel_sdvo->tv_format_index; + memset(&format, 0, sizeof(format)); + memcpy(&format, &format_map, min(sizeof(format), sizeof(format_map))); + + BUILD_BUG_ON(sizeof(format) != 6); + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TV_FORMAT, + &format, sizeof(format)); +} + +static bool +intel_sdvo_set_output_timings_from_mode(struct intel_sdvo *intel_sdvo, + struct drm_display_mode *mode) +{ + struct intel_sdvo_dtd output_dtd; + + if (!intel_sdvo_set_target_output(intel_sdvo, + intel_sdvo->attached_output)) + return false; + + intel_sdvo_get_dtd_from_mode(&output_dtd, mode); + if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) + return false; + + return true; +} + +/* Asks the sdvo controller for the preferred input mode given the output mode. + * Unfortunately we have to set up the full output mode to do that. */ +static bool +intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_sdvo_dtd input_dtd; + + /* Reset the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + return false; + + if (!intel_sdvo_create_preferred_input_timing(intel_sdvo, + mode->clock / 10, + mode->hdisplay, + mode->vdisplay)) + return false; + + if (!intel_sdvo_get_preferred_input_timing(intel_sdvo, + &input_dtd)) + return false; + + intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); + intel_sdvo->dtd_sdvo_flags = input_dtd.part2.sdvo_flags; + + return true; +} + +static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + int multiplier; + + /* We need to construct preferred input timings based on our + * output timings. To do that, we have to set the output + * timings, even though this isn't really the right place in + * the sequence to do it. Oh well. + */ + if (intel_sdvo->is_tv) { + if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, mode)) + return false; + + (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, + mode, + adjusted_mode); + } else if (intel_sdvo->is_lvds) { + if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, + intel_sdvo->sdvo_lvds_fixed_mode)) + return false; + + (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, + mode, + adjusted_mode); + } + + /* Make the CRTC code factor in the SDVO pixel multiplier. The + * SDVO device will factor out the multiplier during mode_set. + */ + multiplier = intel_sdvo_get_pixel_multiplier(adjusted_mode); + intel_mode_set_pixel_multiplier(adjusted_mode, multiplier); + + return true; +} + +static void intel_sdvo_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + u32 sdvox; + struct intel_sdvo_in_out_map in_out; + struct intel_sdvo_dtd input_dtd, output_dtd; + int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + int rate; + + if (!mode) + return; + + /* First, set the input mapping for the first input to our controlled + * output. This is only correct if we're a single-input device, in + * which case the first input is the output from the appropriate SDVO + * channel on the motherboard. In a two-input device, the first input + * will be SDVOB and the second SDVOC. + */ + in_out.in0 = intel_sdvo->attached_output; + in_out.in1 = 0; + + intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_IN_OUT_MAP, + &in_out, sizeof(in_out)); + + /* Set the output timings to the screen */ + if (!intel_sdvo_set_target_output(intel_sdvo, + intel_sdvo->attached_output)) + return; + + /* lvds has a special fixed output timing. */ + if (intel_sdvo->is_lvds) + intel_sdvo_get_dtd_from_mode(&output_dtd, + intel_sdvo->sdvo_lvds_fixed_mode); + else + intel_sdvo_get_dtd_from_mode(&output_dtd, mode); + if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) + DRM_INFO("Setting output timings on %s failed\n", + SDVO_NAME(intel_sdvo)); + + /* Set the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + return; + + if (intel_sdvo->has_hdmi_monitor) { + intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI); + intel_sdvo_set_colorimetry(intel_sdvo, + SDVO_COLORIMETRY_RGB256); + intel_sdvo_set_avi_infoframe(intel_sdvo); + } else + intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_DVI); + + if (intel_sdvo->is_tv && + !intel_sdvo_set_tv_format(intel_sdvo)) + return; + + /* We have tried to get input timing in mode_fixup, and filled into + * adjusted_mode. + */ + intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode); + if (intel_sdvo->is_tv || intel_sdvo->is_lvds) + input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; + if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) + DRM_INFO("Setting input timings on %s failed\n", + SDVO_NAME(intel_sdvo)); + + switch (pixel_multiplier) { + default: + case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; + case 2: rate = SDVO_CLOCK_RATE_MULT_2X; break; + case 4: rate = SDVO_CLOCK_RATE_MULT_4X; break; + } + if (!intel_sdvo_set_clock_rate_mult(intel_sdvo, rate)) + return; + + /* Set the SDVO control regs. */ + if (INTEL_INFO(dev)->gen >= 4) { + /* The real mode polarity is set by the SDVO commands, using + * struct intel_sdvo_dtd. */ + sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; + if (intel_sdvo->is_hdmi) + sdvox |= intel_sdvo->color_range; + if (INTEL_INFO(dev)->gen < 5) + sdvox |= SDVO_BORDER_ENABLE; + } else { + sdvox = I915_READ(intel_sdvo->sdvo_reg); + switch (intel_sdvo->sdvo_reg) { + case SDVOB: + sdvox &= SDVOB_PRESERVE_MASK; + break; + case SDVOC: + sdvox &= SDVOC_PRESERVE_MASK; + break; + } + sdvox |= (9 << 19) | SDVO_BORDER_ENABLE; + } + + if (INTEL_PCH_TYPE(dev) >= PCH_CPT) + sdvox |= TRANSCODER_CPT(intel_crtc->pipe); + else + sdvox |= TRANSCODER(intel_crtc->pipe); + + if (intel_sdvo->has_hdmi_audio) + sdvox |= SDVO_AUDIO_ENABLE; + + if (INTEL_INFO(dev)->gen >= 4) { + /* done in crtc_mode_set as the dpll_md reg must be written early */ + } else if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) { + /* done in crtc_mode_set as it lives inside the dpll register */ + } else { + sdvox |= (pixel_multiplier - 1) << SDVO_PORT_MULTIPLY_SHIFT; + } + + if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL && + INTEL_INFO(dev)->gen < 5) + sdvox |= SDVO_STALL_SELECT; + intel_sdvo_write_sdvox(intel_sdvo, sdvox); +} + +static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = + to_intel_sdvo_connector(&connector->base); + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); + u16 active_outputs; + + intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); + + if (active_outputs & intel_sdvo_connector->output_flag) + return true; + else + return false; +} + +static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + 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) && (active_outputs == 0)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_disable_sdvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + u32 temp; + + intel_sdvo_set_active_outputs(intel_sdvo, 0); + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, + DRM_MODE_DPMS_OFF); + + temp = I915_READ(intel_sdvo->sdvo_reg); + if ((temp & SDVO_ENABLE) != 0) { + /* HW workaround for IBX, we need to move the port to + * transcoder A before disabling it. */ + if (HAS_PCH_IBX(encoder->base.dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + if (temp & SDVO_PIPE_B_SELECT) { + temp &= ~SDVO_PIPE_B_SELECT; + I915_WRITE(intel_sdvo->sdvo_reg, temp); + POSTING_READ(intel_sdvo->sdvo_reg); + + /* Again we need to write this twice. */ + I915_WRITE(intel_sdvo->sdvo_reg, temp); + POSTING_READ(intel_sdvo->sdvo_reg); + + /* Transcoder selection bits only update + * effectively on vblank. */ + if (crtc) + intel_wait_for_vblank(encoder->base.dev, pipe); + else + msleep(50); + } + } + + intel_sdvo_write_sdvox(intel_sdvo, temp & ~SDVO_ENABLE); + } +} + +static void intel_enable_sdvo(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); + u32 temp; + bool input1, input2; + int i; + u8 status; + + temp = I915_READ(intel_sdvo->sdvo_reg); + if ((temp & SDVO_ENABLE) == 0) { + /* HW workaround for IBX, we need to move the port + * to transcoder A before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + /* Restore the transcoder select bit. */ + if (pipe == PIPE_B) + temp |= SDVO_PIPE_B_SELECT; + } + + intel_sdvo_write_sdvox(intel_sdvo, temp | SDVO_ENABLE); + } + for (i = 0; i < 2; i++) + intel_wait_for_vblank(dev, intel_crtc->pipe); + + status = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2); + /* Warn if the device reported failure to sync. + * A lot of SDVO devices fail to notify of sync, but it's + * a given it the status is a success, we succeeded. + */ + if (status == SDVO_CMD_STATUS_SUCCESS && !input1) { + DRM_DEBUG_KMS("First %s output reported failure to " + "sync\n", SDVO_NAME(intel_sdvo)); + } + + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, + DRM_MODE_DPMS_ON); + intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); +} + +static void intel_sdvo_dpms(struct drm_connector *connector, int mode) +{ + struct drm_crtc *crtc; + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + + /* dvo supports only 2 dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = intel_sdvo->base.base.crtc; + if (!crtc) { + intel_sdvo->base.connectors_active = false; + return; + } + + if (mode != DRM_MODE_DPMS_ON) { + intel_sdvo_set_active_outputs(intel_sdvo, 0); + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, mode); + + intel_sdvo->base.connectors_active = false; + + intel_crtc_update_dpms(crtc); + } else { + intel_sdvo->base.connectors_active = true; + + intel_crtc_update_dpms(crtc); + + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, mode); + intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_sdvo_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + if (intel_sdvo->pixel_clock_min > mode->clock) + return MODE_CLOCK_LOW; + + if (intel_sdvo->pixel_clock_max < mode->clock) + return MODE_CLOCK_HIGH; + + if (intel_sdvo->is_lvds) { + if (mode->hdisplay > intel_sdvo->sdvo_lvds_fixed_mode->hdisplay) + return MODE_PANEL; + + if (mode->vdisplay > intel_sdvo->sdvo_lvds_fixed_mode->vdisplay) + return MODE_PANEL; + } + + return MODE_OK; +} + +static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps) +{ + BUILD_BUG_ON(sizeof(*caps) != 8); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_DEVICE_CAPS, + caps, sizeof(*caps))) + return false; + + DRM_DEBUG_KMS("SDVO capabilities:\n" + " vendor_id: %d\n" + " device_id: %d\n" + " device_rev_id: %d\n" + " sdvo_version_major: %d\n" + " sdvo_version_minor: %d\n" + " sdvo_inputs_mask: %d\n" + " smooth_scaling: %d\n" + " sharp_scaling: %d\n" + " up_scaling: %d\n" + " down_scaling: %d\n" + " stall_support: %d\n" + " output_flags: %d\n", + caps->vendor_id, + caps->device_id, + caps->device_rev_id, + caps->sdvo_version_major, + caps->sdvo_version_minor, + caps->sdvo_inputs_mask, + caps->smooth_scaling, + caps->sharp_scaling, + caps->up_scaling, + caps->down_scaling, + caps->stall_support, + caps->output_flags); + + return true; +} + +static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + uint16_t hotplug; + + /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise + * on the line. */ + if (IS_I945G(dev) || IS_I945GM(dev)) + return 0; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, + &hotplug, sizeof(hotplug))) + return 0; + + return hotplug; +} + +static void intel_sdvo_enable_hotplug(struct intel_encoder *encoder) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + + intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, + &intel_sdvo->hotplug_active, 2); +} + +static bool +intel_sdvo_multifunc_encoder(struct intel_sdvo *intel_sdvo) +{ + /* Is there more than one type of output? */ + return hweight16(intel_sdvo->caps.output_flags) > 1; +} + +static struct edid * +intel_sdvo_get_edid(struct drm_connector *connector) +{ + struct intel_sdvo *sdvo = intel_attached_sdvo(connector); + return drm_get_edid(connector, &sdvo->ddc); +} + +/* Mac mini hack -- use the same DDC as the analog connector */ +static struct edid * +intel_sdvo_get_analog_edid(struct drm_connector *connector) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + return drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + dev_priv->crt_ddc_pin)); +} + +static enum drm_connector_status +intel_sdvo_tmds_sink_detect(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + enum drm_connector_status status; + struct edid *edid; + + edid = intel_sdvo_get_edid(connector); + + if (edid == NULL && intel_sdvo_multifunc_encoder(intel_sdvo)) { + u8 ddc, saved_ddc = intel_sdvo->ddc_bus; + + /* + * Don't use the 1 as the argument of DDC bus switch to get + * the EDID. It is used for SDVO SPD ROM. + */ + for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 1; ddc >>= 1) { + intel_sdvo->ddc_bus = ddc; + edid = intel_sdvo_get_edid(connector); + if (edid) + break; + } + /* + * If we found the EDID on the other bus, + * assume that is the correct DDC bus. + */ + if (edid == NULL) + intel_sdvo->ddc_bus = saved_ddc; + } + + /* + * When there is no edid and no monitor is connected with VGA + * port, try to use the CRT ddc to read the EDID for DVI-connector. + */ + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + + status = connector_status_unknown; + if (edid != NULL) { + /* DDC bus is shared, match EDID to connector type */ + if (edid->input & DRM_EDID_INPUT_DIGITAL) { + status = connector_status_connected; + if (intel_sdvo->is_hdmi) { + intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid); + intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid); + } + } else + status = connector_status_disconnected; + kfree(edid); + } + + if (status == connector_status_connected) { + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + if (intel_sdvo_connector->force_audio != HDMI_AUDIO_AUTO) + intel_sdvo->has_hdmi_audio = (intel_sdvo_connector->force_audio == HDMI_AUDIO_ON); + } + + return status; +} + +static bool +intel_sdvo_connector_matches_edid(struct intel_sdvo_connector *sdvo, + struct edid *edid) +{ + bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL); + bool connector_is_digital = !!IS_DIGITAL(sdvo); + + DRM_DEBUG_KMS("connector_is_digital? %d, monitor_is_digital? %d\n", + connector_is_digital, monitor_is_digital); + return connector_is_digital == monitor_is_digital; +} + +static enum drm_connector_status +intel_sdvo_detect(struct drm_connector *connector, bool force) +{ + uint16_t response; + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + enum drm_connector_status ret; + + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_ATTACHED_DISPLAYS, + &response, 2)) + return connector_status_unknown; + + DRM_DEBUG_KMS("SDVO response %d %d [%x]\n", + response & 0xff, response >> 8, + intel_sdvo_connector->output_flag); + + if (response == 0) + return connector_status_disconnected; + + intel_sdvo->attached_output = response; + + intel_sdvo->has_hdmi_monitor = false; + intel_sdvo->has_hdmi_audio = false; + + if ((intel_sdvo_connector->output_flag & response) == 0) + ret = connector_status_disconnected; + else if (IS_TMDS(intel_sdvo_connector)) + ret = intel_sdvo_tmds_sink_detect(connector); + else { + struct edid *edid; + + /* if we have an edid check it matches the connection */ + edid = intel_sdvo_get_edid(connector); + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + if (edid != NULL) { + if (intel_sdvo_connector_matches_edid(intel_sdvo_connector, + edid)) + ret = connector_status_connected; + else + ret = connector_status_disconnected; + + kfree(edid); + } else + ret = connector_status_connected; + } + + /* May update encoder flag for like clock for SDVO TV, etc.*/ + if (ret == connector_status_connected) { + intel_sdvo->is_tv = false; + intel_sdvo->is_lvds = false; + intel_sdvo->base.needs_tv_clock = false; + + if (response & SDVO_TV_MASK) { + intel_sdvo->is_tv = true; + intel_sdvo->base.needs_tv_clock = true; + } + if (response & SDVO_LVDS_MASK) + intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; + } + + return ret; +} + +static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) +{ + struct edid *edid; + + /* set the bus switch and get the modes */ + edid = intel_sdvo_get_edid(connector); + + /* + * Mac mini hack. On this device, the DVI-I connector shares one DDC + * link between analog and digital outputs. So, if the regular SDVO + * DDC fails, check to see if the analog output is disconnected, in + * which case we'll look there for the digital DDC data. + */ + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + + if (edid != NULL) { + if (intel_sdvo_connector_matches_edid(to_intel_sdvo_connector(connector), + edid)) { + drm_mode_connector_update_edid_property(connector, edid); + drm_add_edid_modes(connector, edid); + } + + kfree(edid); + } +} + +/* + * Set of SDVO TV modes. + * Note! This is in reply order (see loop in get_tv_modes). + * XXX: all 60Hz refresh? + */ +static const struct drm_display_mode sdvo_tv_modes[] = { + { DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 5815, 320, 321, 384, + 416, 0, 200, 201, 232, 233, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 6814, 320, 321, 384, + 416, 0, 240, 241, 272, 273, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 9910, 400, 401, 464, + 496, 0, 300, 301, 332, 333, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 16913, 640, 641, 704, + 736, 0, 350, 351, 382, 383, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 19121, 640, 641, 704, + 736, 0, 400, 401, 432, 433, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 22654, 640, 641, 704, + 736, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("704x480", DRM_MODE_TYPE_DRIVER, 24624, 704, 705, 768, + 800, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("704x576", DRM_MODE_TYPE_DRIVER, 29232, 704, 705, 768, + 800, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x350", DRM_MODE_TYPE_DRIVER, 18751, 720, 721, 784, + 816, 0, 350, 351, 382, 383, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 21199, 720, 721, 784, + 816, 0, 400, 401, 432, 433, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 25116, 720, 721, 784, + 816, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x540", DRM_MODE_TYPE_DRIVER, 28054, 720, 721, 784, + 816, 0, 540, 541, 572, 573, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 29816, 720, 721, 784, + 816, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("768x576", DRM_MODE_TYPE_DRIVER, 31570, 768, 769, 832, + 864, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 34030, 800, 801, 864, + 896, 0, 600, 601, 632, 633, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 36581, 832, 833, 896, + 928, 0, 624, 625, 656, 657, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("920x766", DRM_MODE_TYPE_DRIVER, 48707, 920, 921, 984, + 1016, 0, 766, 767, 798, 799, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 53827, 1024, 1025, 1088, + 1120, 0, 768, 769, 800, 801, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 87265, 1280, 1281, 1344, + 1376, 0, 1024, 1025, 1056, 1057, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, +}; + +static void intel_sdvo_get_tv_modes(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_sdtv_resolution_request tv_res; + uint32_t reply = 0, format_map = 0; + int i; + + /* Read the list of supported input resolutions for the selected TV + * format. + */ + format_map = 1 << intel_sdvo->tv_format_index; + memcpy(&tv_res, &format_map, + min(sizeof(format_map), sizeof(struct intel_sdvo_sdtv_resolution_request))); + + if (!intel_sdvo_set_target_output(intel_sdvo, intel_sdvo->attached_output)) + return; + + BUILD_BUG_ON(sizeof(tv_res) != 3); + if (!intel_sdvo_write_cmd(intel_sdvo, + SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT, + &tv_res, sizeof(tv_res))) + return; + if (!intel_sdvo_read_response(intel_sdvo, &reply, 3)) + return; + + for (i = 0; i < ARRAY_SIZE(sdvo_tv_modes); i++) + if (reply & (1 << i)) { + struct drm_display_mode *nmode; + nmode = drm_mode_duplicate(connector->dev, + &sdvo_tv_modes[i]); + if (nmode) + drm_mode_probed_add(connector, nmode); + } +} + +static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct drm_display_mode *newmode; + + /* + * Attempt to get the mode list from DDC. + * Assume that the preferred modes are + * arranged in priority order. + */ + intel_ddc_get_modes(connector, intel_sdvo->i2c); + if (list_empty(&connector->probed_modes) == false) + goto end; + + /* Fetch modes from VBT */ + if (dev_priv->sdvo_lvds_vbt_mode != NULL) { + newmode = drm_mode_duplicate(connector->dev, + dev_priv->sdvo_lvds_vbt_mode); + if (newmode != NULL) { + /* Guarantee the mode is preferred */ + newmode->type = (DRM_MODE_TYPE_PREFERRED | + DRM_MODE_TYPE_DRIVER); + drm_mode_probed_add(connector, newmode); + } + } + +end: + list_for_each_entry(newmode, &connector->probed_modes, head) { + if (newmode->type & DRM_MODE_TYPE_PREFERRED) { + intel_sdvo->sdvo_lvds_fixed_mode = + drm_mode_duplicate(connector->dev, newmode); + + intel_sdvo->is_lvds = true; + break; + } + } + +} + +static int intel_sdvo_get_modes(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + + if (IS_TV(intel_sdvo_connector)) + intel_sdvo_get_tv_modes(connector); + else if (IS_LVDS(intel_sdvo_connector)) + intel_sdvo_get_lvds_modes(connector); + else + intel_sdvo_get_ddc_modes(connector); + + return !list_empty(&connector->probed_modes); +} + +static void +intel_sdvo_destroy_enhance_property(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + struct drm_device *dev = connector->dev; + + if (intel_sdvo_connector->left) + drm_property_destroy(dev, intel_sdvo_connector->left); + if (intel_sdvo_connector->right) + drm_property_destroy(dev, intel_sdvo_connector->right); + if (intel_sdvo_connector->top) + drm_property_destroy(dev, intel_sdvo_connector->top); + if (intel_sdvo_connector->bottom) + drm_property_destroy(dev, intel_sdvo_connector->bottom); + if (intel_sdvo_connector->hpos) + drm_property_destroy(dev, intel_sdvo_connector->hpos); + if (intel_sdvo_connector->vpos) + drm_property_destroy(dev, intel_sdvo_connector->vpos); + if (intel_sdvo_connector->saturation) + drm_property_destroy(dev, intel_sdvo_connector->saturation); + if (intel_sdvo_connector->contrast) + drm_property_destroy(dev, intel_sdvo_connector->contrast); + if (intel_sdvo_connector->hue) + drm_property_destroy(dev, intel_sdvo_connector->hue); + if (intel_sdvo_connector->sharpness) + drm_property_destroy(dev, intel_sdvo_connector->sharpness); + if (intel_sdvo_connector->flicker_filter) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter); + if (intel_sdvo_connector->flicker_filter_2d) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter_2d); + if (intel_sdvo_connector->flicker_filter_adaptive) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter_adaptive); + if (intel_sdvo_connector->tv_luma_filter) + drm_property_destroy(dev, intel_sdvo_connector->tv_luma_filter); + if (intel_sdvo_connector->tv_chroma_filter) + drm_property_destroy(dev, intel_sdvo_connector->tv_chroma_filter); + if (intel_sdvo_connector->dot_crawl) + drm_property_destroy(dev, intel_sdvo_connector->dot_crawl); + if (intel_sdvo_connector->brightness) + drm_property_destroy(dev, intel_sdvo_connector->brightness); +} + +static void intel_sdvo_destroy(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + + if (intel_sdvo_connector->tv_format) + drm_property_destroy(connector->dev, + intel_sdvo_connector->tv_format); + + intel_sdvo_destroy_enhance_property(connector); + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(intel_sdvo_connector); +} + +static bool intel_sdvo_detect_hdmi_audio(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct edid *edid; + bool has_audio = false; + + if (!intel_sdvo->is_hdmi) + return false; + + edid = intel_sdvo_get_edid(connector); + if (edid != NULL && edid->input & DRM_EDID_INPUT_DIGITAL) + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + + return has_audio; +} + +static int +intel_sdvo_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint16_t temp_value; + uint8_t cmd; + int ret; + + ret = drm_object_property_set_value(&connector->base, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + int i = val; + bool has_audio; + + if (i == intel_sdvo_connector->force_audio) + return 0; + + intel_sdvo_connector->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_sdvo_detect_hdmi_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (has_audio == intel_sdvo->has_hdmi_audio) + return 0; + + intel_sdvo->has_hdmi_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_sdvo->color_range) + return 0; + + intel_sdvo->color_range = val ? SDVO_COLOR_RANGE_16_235 : 0; + goto done; + } + +#define CHECK_PROPERTY(name, NAME) \ + if (intel_sdvo_connector->name == property) { \ + if (intel_sdvo_connector->cur_##name == temp_value) return 0; \ + if (intel_sdvo_connector->max_##name < temp_value) return -EINVAL; \ + cmd = SDVO_CMD_SET_##NAME; \ + intel_sdvo_connector->cur_##name = temp_value; \ + goto set_value; \ + } + + if (property == intel_sdvo_connector->tv_format) { + if (val >= TV_FORMAT_NUM) + return -EINVAL; + + if (intel_sdvo->tv_format_index == + intel_sdvo_connector->tv_format_supported[val]) + return 0; + + intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[val]; + goto done; + } else if (IS_TV_OR_LVDS(intel_sdvo_connector)) { + temp_value = val; + if (intel_sdvo_connector->left == property) { + drm_object_property_set_value(&connector->base, + intel_sdvo_connector->right, val); + if (intel_sdvo_connector->left_margin == temp_value) + return 0; + + intel_sdvo_connector->left_margin = temp_value; + intel_sdvo_connector->right_margin = temp_value; + temp_value = intel_sdvo_connector->max_hscan - + intel_sdvo_connector->left_margin; + cmd = SDVO_CMD_SET_OVERSCAN_H; + goto set_value; + } else if (intel_sdvo_connector->right == property) { + drm_object_property_set_value(&connector->base, + intel_sdvo_connector->left, val); + if (intel_sdvo_connector->right_margin == temp_value) + return 0; + + intel_sdvo_connector->left_margin = temp_value; + intel_sdvo_connector->right_margin = temp_value; + temp_value = intel_sdvo_connector->max_hscan - + intel_sdvo_connector->left_margin; + cmd = SDVO_CMD_SET_OVERSCAN_H; + goto set_value; + } else if (intel_sdvo_connector->top == property) { + drm_object_property_set_value(&connector->base, + intel_sdvo_connector->bottom, val); + if (intel_sdvo_connector->top_margin == temp_value) + return 0; + + intel_sdvo_connector->top_margin = temp_value; + intel_sdvo_connector->bottom_margin = temp_value; + temp_value = intel_sdvo_connector->max_vscan - + intel_sdvo_connector->top_margin; + cmd = SDVO_CMD_SET_OVERSCAN_V; + goto set_value; + } else if (intel_sdvo_connector->bottom == property) { + drm_object_property_set_value(&connector->base, + intel_sdvo_connector->top, val); + if (intel_sdvo_connector->bottom_margin == temp_value) + return 0; + + intel_sdvo_connector->top_margin = temp_value; + intel_sdvo_connector->bottom_margin = temp_value; + temp_value = intel_sdvo_connector->max_vscan - + intel_sdvo_connector->top_margin; + cmd = SDVO_CMD_SET_OVERSCAN_V; + goto set_value; + } + CHECK_PROPERTY(hpos, HPOS) + CHECK_PROPERTY(vpos, VPOS) + CHECK_PROPERTY(saturation, SATURATION) + CHECK_PROPERTY(contrast, CONTRAST) + CHECK_PROPERTY(hue, HUE) + CHECK_PROPERTY(brightness, BRIGHTNESS) + CHECK_PROPERTY(sharpness, SHARPNESS) + CHECK_PROPERTY(flicker_filter, FLICKER_FILTER) + CHECK_PROPERTY(flicker_filter_2d, FLICKER_FILTER_2D) + CHECK_PROPERTY(flicker_filter_adaptive, FLICKER_FILTER_ADAPTIVE) + CHECK_PROPERTY(tv_chroma_filter, TV_CHROMA_FILTER) + CHECK_PROPERTY(tv_luma_filter, TV_LUMA_FILTER) + CHECK_PROPERTY(dot_crawl, DOT_CRAWL) + } + + return -EINVAL; /* unknown property */ + +set_value: + if (!intel_sdvo_set_value(intel_sdvo, cmd, &temp_value, 2)) + return -EIO; + + +done: + if (intel_sdvo->base.base.crtc) { + struct drm_crtc *crtc = intel_sdvo->base.base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +#undef CHECK_PROPERTY +} + +static const struct drm_encoder_helper_funcs intel_sdvo_helper_funcs = { + .mode_fixup = intel_sdvo_mode_fixup, + .mode_set = intel_sdvo_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_sdvo_connector_funcs = { + .dpms = intel_sdvo_dpms, + .detect = intel_sdvo_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_sdvo_set_property, + .destroy = intel_sdvo_destroy, +}; + +static const struct drm_connector_helper_funcs intel_sdvo_connector_helper_funcs = { + .get_modes = intel_sdvo_get_modes, + .mode_valid = intel_sdvo_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static void intel_sdvo_enc_destroy(struct drm_encoder *encoder) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + + if (intel_sdvo->sdvo_lvds_fixed_mode != NULL) + drm_mode_destroy(encoder->dev, + intel_sdvo->sdvo_lvds_fixed_mode); + + i2c_del_adapter(&intel_sdvo->ddc); + intel_encoder_destroy(encoder); +} + +static const struct drm_encoder_funcs intel_sdvo_enc_funcs = { + .destroy = intel_sdvo_enc_destroy, +}; + +static void +intel_sdvo_guess_ddc_bus(struct intel_sdvo *sdvo) +{ + uint16_t mask = 0; + unsigned int num_bits; + + /* Make a mask of outputs less than or equal to our own priority in the + * list. + */ + switch (sdvo->controlled_output) { + case SDVO_OUTPUT_LVDS1: + mask |= SDVO_OUTPUT_LVDS1; + case SDVO_OUTPUT_LVDS0: + mask |= SDVO_OUTPUT_LVDS0; + case SDVO_OUTPUT_TMDS1: + mask |= SDVO_OUTPUT_TMDS1; + case SDVO_OUTPUT_TMDS0: + mask |= SDVO_OUTPUT_TMDS0; + case SDVO_OUTPUT_RGB1: + mask |= SDVO_OUTPUT_RGB1; + case SDVO_OUTPUT_RGB0: + mask |= SDVO_OUTPUT_RGB0; + break; + } + + /* Count bits to find what number we are in the priority list. */ + mask &= sdvo->caps.output_flags; + num_bits = hweight16(mask); + /* If more than 3 outputs, default to DDC bus 3 for now. */ + if (num_bits > 3) + num_bits = 3; + + /* Corresponds to SDVO_CONTROL_BUS_DDCx */ + sdvo->ddc_bus = 1 << num_bits; +} + +/** + * Choose the appropriate DDC bus for control bus switch command for this + * SDVO output based on the controlled output. + * + * DDC bus number assignment is in a priority order of RGB outputs, then TMDS + * outputs, then LVDS outputs. + */ +static void +intel_sdvo_select_ddc_bus(struct drm_i915_private *dev_priv, + struct intel_sdvo *sdvo, u32 reg) +{ + struct sdvo_device_mapping *mapping; + + if (sdvo->is_sdvob) + mapping = &(dev_priv->sdvo_mappings[0]); + else + mapping = &(dev_priv->sdvo_mappings[1]); + + if (mapping->initialized) + sdvo->ddc_bus = 1 << ((mapping->ddc_pin & 0xf0) >> 4); + else + intel_sdvo_guess_ddc_bus(sdvo); +} + +static void +intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv, + struct intel_sdvo *sdvo, u32 reg) +{ + struct sdvo_device_mapping *mapping; + u8 pin; + + if (sdvo->is_sdvob) + mapping = &dev_priv->sdvo_mappings[0]; + else + mapping = &dev_priv->sdvo_mappings[1]; + + if (mapping->initialized && intel_gmbus_is_port_valid(mapping->i2c_pin)) + pin = mapping->i2c_pin; + else + pin = GMBUS_PORT_DPB; + + sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin); + + /* With gmbus we should be able to drive sdvo i2c at 2MHz, but somehow + * our code totally fails once we start using gmbus. Hence fall back to + * bit banging for now. */ + intel_gmbus_force_bit(sdvo->i2c, true); +} + +/* undo any changes intel_sdvo_select_i2c_bus() did to sdvo->i2c */ +static void +intel_sdvo_unselect_i2c_bus(struct intel_sdvo *sdvo) +{ + intel_gmbus_force_bit(sdvo->i2c, false); +} + +static bool +intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo, int device) +{ + return intel_sdvo_check_supp_encode(intel_sdvo); +} + +static u8 +intel_sdvo_get_slave_addr(struct drm_device *dev, struct intel_sdvo *sdvo) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct sdvo_device_mapping *my_mapping, *other_mapping; + + if (sdvo->is_sdvob) { + my_mapping = &dev_priv->sdvo_mappings[0]; + other_mapping = &dev_priv->sdvo_mappings[1]; + } else { + my_mapping = &dev_priv->sdvo_mappings[1]; + other_mapping = &dev_priv->sdvo_mappings[0]; + } + + /* If the BIOS described our SDVO device, take advantage of it. */ + if (my_mapping->slave_addr) + return my_mapping->slave_addr; + + /* If the BIOS only described a different SDVO device, use the + * address that it isn't using. + */ + if (other_mapping->slave_addr) { + if (other_mapping->slave_addr == 0x70) + return 0x72; + else + return 0x70; + } + + /* No SDVO device info is found for another DVO port, + * so use mapping assumption we had before BIOS parsing. + */ + if (sdvo->is_sdvob) + return 0x70; + else + return 0x72; +} + +static void +intel_sdvo_connector_init(struct intel_sdvo_connector *connector, + struct intel_sdvo *encoder) +{ + drm_connector_init(encoder->base.base.dev, + &connector->base.base, + &intel_sdvo_connector_funcs, + connector->base.base.connector_type); + + drm_connector_helper_add(&connector->base.base, + &intel_sdvo_connector_helper_funcs); + + connector->base.base.interlace_allowed = 1; + connector->base.base.doublescan_allowed = 0; + connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; + connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; + + intel_connector_attach_encoder(&connector->base, &encoder->base); + drm_sysfs_connector_add(&connector->base.base); +} + +static void +intel_sdvo_add_hdmi_properties(struct intel_sdvo_connector *connector) +{ + struct drm_device *dev = connector->base.base.dev; + + intel_attach_force_audio_property(&connector->base.base); + if (INTEL_INFO(dev)->gen >= 4 && IS_MOBILE(dev)) + intel_attach_broadcast_rgb_property(&connector->base.base); +} + +static bool +intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_TMDS0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_TMDS1; + } + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + if (intel_sdvo_get_hotplug_support(intel_sdvo) & + intel_sdvo_connector->output_flag) { + connector->polled = DRM_CONNECTOR_POLL_HPD; + intel_sdvo->hotplug_active |= intel_sdvo_connector->output_flag; + /* Some SDVO devices have one-shot hotplug interrupts. + * Ensure that they get re-enabled when an interrupt happens. + */ + intel_encoder->hot_plug = intel_sdvo_enable_hotplug; + intel_sdvo_enable_hotplug(intel_encoder); + } else { + connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; + } + encoder->encoder_type = DRM_MODE_ENCODER_TMDS; + connector->connector_type = DRM_MODE_CONNECTOR_DVID; + + if (intel_sdvo_is_hdmi_connector(intel_sdvo, device)) { + connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; + intel_sdvo->is_hdmi = true; + } + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + if (intel_sdvo->is_hdmi) + intel_sdvo_add_hdmi_properties(intel_sdvo_connector); + + return true; +} + +static bool +intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; + connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; + + intel_sdvo->controlled_output |= type; + intel_sdvo_connector->output_flag = type; + + intel_sdvo->is_tv = true; + intel_sdvo->base.needs_tv_clock = true; + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + + if (!intel_sdvo_tv_create_property(intel_sdvo, intel_sdvo_connector, type)) + goto err; + + if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) + goto err; + + return true; + +err: + intel_sdvo_destroy(connector); + return false; +} + +static bool +intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + encoder->encoder_type = DRM_MODE_ENCODER_DAC; + connector->connector_type = DRM_MODE_CONNECTOR_VGA; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_RGB0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_RGB1; + } + + intel_sdvo_connector_init(intel_sdvo_connector, + intel_sdvo); + return true; +} + +static bool +intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + encoder->encoder_type = DRM_MODE_ENCODER_LVDS; + connector->connector_type = DRM_MODE_CONNECTOR_LVDS; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_LVDS0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_LVDS1; + } + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) + goto err; + + return true; + +err: + intel_sdvo_destroy(connector); + return false; +} + +static bool +intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) +{ + intel_sdvo->is_tv = false; + intel_sdvo->base.needs_tv_clock = false; + intel_sdvo->is_lvds = false; + + /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/ + + if (flags & SDVO_OUTPUT_TMDS0) + if (!intel_sdvo_dvi_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_TMDS_MASK) == SDVO_TMDS_MASK) + if (!intel_sdvo_dvi_init(intel_sdvo, 1)) + return false; + + /* TV has no XXX1 function block */ + if (flags & SDVO_OUTPUT_SVID0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_SVID0)) + return false; + + if (flags & SDVO_OUTPUT_CVBS0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_CVBS0)) + return false; + + if (flags & SDVO_OUTPUT_YPRPB0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_YPRPB0)) + return false; + + if (flags & SDVO_OUTPUT_RGB0) + if (!intel_sdvo_analog_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_RGB_MASK) == SDVO_RGB_MASK) + if (!intel_sdvo_analog_init(intel_sdvo, 1)) + return false; + + if (flags & SDVO_OUTPUT_LVDS0) + if (!intel_sdvo_lvds_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_LVDS_MASK) == SDVO_LVDS_MASK) + if (!intel_sdvo_lvds_init(intel_sdvo, 1)) + return false; + + if ((flags & SDVO_OUTPUT_MASK) == 0) { + unsigned char bytes[2]; + + intel_sdvo->controlled_output = 0; + memcpy(bytes, &intel_sdvo->caps.output_flags, 2); + DRM_DEBUG_KMS("%s: Unknown SDVO output type (0x%02x%02x)\n", + SDVO_NAME(intel_sdvo), + bytes[0], bytes[1]); + return false; + } + intel_sdvo->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + + return true; +} + +static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector, *tmp; + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (intel_attached_encoder(connector) == &intel_sdvo->base) + intel_sdvo_destroy(connector); + } +} + +static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + int type) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_sdvo_tv_format format; + uint32_t format_map, i; + + if (!intel_sdvo_set_target_output(intel_sdvo, type)) + return false; + + BUILD_BUG_ON(sizeof(format) != 6); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPPORTED_TV_FORMATS, + &format, sizeof(format))) + return false; + + memcpy(&format_map, &format, min(sizeof(format_map), sizeof(format))); + + if (format_map == 0) + return false; + + intel_sdvo_connector->format_supported_num = 0; + for (i = 0 ; i < TV_FORMAT_NUM; i++) + if (format_map & (1 << i)) + intel_sdvo_connector->tv_format_supported[intel_sdvo_connector->format_supported_num++] = i; + + + intel_sdvo_connector->tv_format = + drm_property_create(dev, DRM_MODE_PROP_ENUM, + "mode", intel_sdvo_connector->format_supported_num); + if (!intel_sdvo_connector->tv_format) + return false; + + for (i = 0; i < intel_sdvo_connector->format_supported_num; i++) + drm_property_add_enum( + intel_sdvo_connector->tv_format, i, + i, tv_format_names[intel_sdvo_connector->tv_format_supported[i]]); + + intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[0]; + drm_object_attach_property(&intel_sdvo_connector->base.base.base, + intel_sdvo_connector->tv_format, 0); + return true; + +} + +#define ENHANCEMENT(name, NAME) do { \ + if (enhancements.name) { \ + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_MAX_##NAME, &data_value, 4) || \ + !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \ + return false; \ + intel_sdvo_connector->max_##name = data_value[0]; \ + intel_sdvo_connector->cur_##name = response; \ + intel_sdvo_connector->name = \ + drm_property_create_range(dev, 0, #name, 0, data_value[0]); \ + if (!intel_sdvo_connector->name) return false; \ + drm_object_attach_property(&connector->base, \ + intel_sdvo_connector->name, \ + intel_sdvo_connector->cur_##name); \ + DRM_DEBUG_KMS(#name ": max %d, default %d, current %d\n", \ + data_value[0], data_value[1], response); \ + } \ +} while (0) + +static bool +intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + struct intel_sdvo_enhancements_reply enhancements) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector = &intel_sdvo_connector->base.base; + uint16_t response, data_value[2]; + + /* when horizontal overscan is supported, Add the left/right property */ + if (enhancements.overscan_h) { + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_MAX_OVERSCAN_H, + &data_value, 4)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_OVERSCAN_H, + &response, 2)) + return false; + + intel_sdvo_connector->max_hscan = data_value[0]; + intel_sdvo_connector->left_margin = data_value[0] - response; + intel_sdvo_connector->right_margin = intel_sdvo_connector->left_margin; + intel_sdvo_connector->left = + drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]); + if (!intel_sdvo_connector->left) + return false; + + drm_object_attach_property(&connector->base, + intel_sdvo_connector->left, + intel_sdvo_connector->left_margin); + + intel_sdvo_connector->right = + drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]); + if (!intel_sdvo_connector->right) + return false; + + drm_object_attach_property(&connector->base, + intel_sdvo_connector->right, + intel_sdvo_connector->right_margin); + DRM_DEBUG_KMS("h_overscan: max %d, " + "default %d, current %d\n", + data_value[0], data_value[1], response); + } + + if (enhancements.overscan_v) { + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_MAX_OVERSCAN_V, + &data_value, 4)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_OVERSCAN_V, + &response, 2)) + return false; + + intel_sdvo_connector->max_vscan = data_value[0]; + intel_sdvo_connector->top_margin = data_value[0] - response; + intel_sdvo_connector->bottom_margin = intel_sdvo_connector->top_margin; + intel_sdvo_connector->top = + drm_property_create_range(dev, 0, + "top_margin", 0, data_value[0]); + if (!intel_sdvo_connector->top) + return false; + + drm_object_attach_property(&connector->base, + intel_sdvo_connector->top, + intel_sdvo_connector->top_margin); + + intel_sdvo_connector->bottom = + drm_property_create_range(dev, 0, + "bottom_margin", 0, data_value[0]); + if (!intel_sdvo_connector->bottom) + return false; + + drm_object_attach_property(&connector->base, + intel_sdvo_connector->bottom, + intel_sdvo_connector->bottom_margin); + DRM_DEBUG_KMS("v_overscan: max %d, " + "default %d, current %d\n", + data_value[0], data_value[1], response); + } + + ENHANCEMENT(hpos, HPOS); + ENHANCEMENT(vpos, VPOS); + ENHANCEMENT(saturation, SATURATION); + ENHANCEMENT(contrast, CONTRAST); + ENHANCEMENT(hue, HUE); + ENHANCEMENT(sharpness, SHARPNESS); + ENHANCEMENT(brightness, BRIGHTNESS); + ENHANCEMENT(flicker_filter, FLICKER_FILTER); + ENHANCEMENT(flicker_filter_adaptive, FLICKER_FILTER_ADAPTIVE); + ENHANCEMENT(flicker_filter_2d, FLICKER_FILTER_2D); + ENHANCEMENT(tv_chroma_filter, TV_CHROMA_FILTER); + ENHANCEMENT(tv_luma_filter, TV_LUMA_FILTER); + + if (enhancements.dot_crawl) { + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_DOT_CRAWL, &response, 2)) + return false; + + intel_sdvo_connector->max_dot_crawl = 1; + intel_sdvo_connector->cur_dot_crawl = response & 0x1; + intel_sdvo_connector->dot_crawl = + drm_property_create_range(dev, 0, "dot_crawl", 0, 1); + if (!intel_sdvo_connector->dot_crawl) + return false; + + drm_object_attach_property(&connector->base, + intel_sdvo_connector->dot_crawl, + intel_sdvo_connector->cur_dot_crawl); + DRM_DEBUG_KMS("dot crawl: current %d\n", response); + } + + return true; +} + +static bool +intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + struct intel_sdvo_enhancements_reply enhancements) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector = &intel_sdvo_connector->base.base; + uint16_t response, data_value[2]; + + ENHANCEMENT(brightness, BRIGHTNESS); + + return true; +} +#undef ENHANCEMENT + +static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector) +{ + union { + struct intel_sdvo_enhancements_reply reply; + uint16_t response; + } enhancements; + + BUILD_BUG_ON(sizeof(enhancements) != 2); + + enhancements.response = 0; + intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, + &enhancements, sizeof(enhancements)); + if (enhancements.response == 0) { + DRM_DEBUG_KMS("No enhancement is supported\n"); + return true; + } + + if (IS_TV(intel_sdvo_connector)) + return intel_sdvo_create_enhance_property_tv(intel_sdvo, intel_sdvo_connector, enhancements.reply); + else if (IS_LVDS(intel_sdvo_connector)) + return intel_sdvo_create_enhance_property_lvds(intel_sdvo, intel_sdvo_connector, enhancements.reply); + else + return true; +} + +static int intel_sdvo_ddc_proxy_xfer(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct intel_sdvo *sdvo = adapter->algo_data; + + if (!intel_sdvo_set_control_bus_switch(sdvo, sdvo->ddc_bus)) + return -EIO; + + return sdvo->i2c->algo->master_xfer(sdvo->i2c, msgs, num); +} + +static u32 intel_sdvo_ddc_proxy_func(struct i2c_adapter *adapter) +{ + struct intel_sdvo *sdvo = adapter->algo_data; + return sdvo->i2c->algo->functionality(sdvo->i2c); +} + +static const struct i2c_algorithm intel_sdvo_ddc_proxy = { + .master_xfer = intel_sdvo_ddc_proxy_xfer, + .functionality = intel_sdvo_ddc_proxy_func +}; + +static bool +intel_sdvo_init_ddc_proxy(struct intel_sdvo *sdvo, + struct drm_device *dev) +{ + sdvo->ddc.owner = THIS_MODULE; + sdvo->ddc.class = I2C_CLASS_DDC; + snprintf(sdvo->ddc.name, I2C_NAME_SIZE, "SDVO DDC proxy"); + sdvo->ddc.dev.parent = &dev->pdev->dev; + sdvo->ddc.algo_data = sdvo; + sdvo->ddc.algo = &intel_sdvo_ddc_proxy; + + return i2c_add_adapter(&sdvo->ddc) == 0; +} + +bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + struct intel_sdvo *intel_sdvo; + u32 hotplug_mask; + int i; + intel_sdvo = kzalloc(sizeof(struct intel_sdvo), GFP_KERNEL); + if (!intel_sdvo) + return false; + + intel_sdvo->sdvo_reg = sdvo_reg; + intel_sdvo->is_sdvob = is_sdvob; + intel_sdvo->slave_addr = intel_sdvo_get_slave_addr(dev, intel_sdvo) >> 1; + intel_sdvo_select_i2c_bus(dev_priv, intel_sdvo, sdvo_reg); + if (!intel_sdvo_init_ddc_proxy(intel_sdvo, dev)) + goto err_i2c_bus; + + /* encoder type will be decided later */ + intel_encoder = &intel_sdvo->base; + intel_encoder->type = INTEL_OUTPUT_SDVO; + drm_encoder_init(dev, &intel_encoder->base, &intel_sdvo_enc_funcs, 0); + + /* Read the regs to test if we can talk to the device */ + for (i = 0; i < 0x40; i++) { + u8 byte; + + if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { + DRM_DEBUG_KMS("No SDVO device found on %s\n", + SDVO_NAME(intel_sdvo)); + goto err; + } + } + + hotplug_mask = 0; + if (IS_G4X(dev)) { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_G4X : SDVOC_HOTPLUG_INT_STATUS_G4X; + } else if (IS_GEN4(dev)) { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_I965 : SDVOC_HOTPLUG_INT_STATUS_I965; + } else { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915; + } + + drm_encoder_helper_add(&intel_encoder->base, &intel_sdvo_helper_funcs); + + intel_encoder->disable = intel_disable_sdvo; + intel_encoder->enable = intel_enable_sdvo; + intel_encoder->get_hw_state = intel_sdvo_get_hw_state; + + /* In default case sdvo lvds is false */ + if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) + goto err; + + if (intel_sdvo_output_setup(intel_sdvo, + intel_sdvo->caps.output_flags) != true) { + DRM_DEBUG_KMS("SDVO output failed to setup on %s\n", + SDVO_NAME(intel_sdvo)); + /* Output_setup can leave behind connectors! */ + goto err_output; + } + + /* + * Cloning SDVO with anything is often impossible, since the SDVO + * encoder can request a special input timing mode. And even if that's + * not the case we have evidence that cloning a plain unscaled mode with + * VGA doesn't really work. Furthermore the cloning flags are way too + * simplistic anyway to express such constraints, so just give up on + * cloning for SDVO encoders. + */ + intel_sdvo->base.cloneable = false; + + /* Only enable the hotplug irq if we need it, to work around noisy + * hotplug lines. + */ + if (intel_sdvo->hotplug_active) + dev_priv->hotplug_supported_mask |= hotplug_mask; + + intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo, sdvo_reg); + + /* Set the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + goto err_output; + + if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, + &intel_sdvo->pixel_clock_min, + &intel_sdvo->pixel_clock_max)) + goto err_output; + + DRM_DEBUG_KMS("%s device VID/DID: %02X:%02X.%02X, " + "clock range %dMHz - %dMHz, " + "input 1: %c, input 2: %c, " + "output 1: %c, output 2: %c\n", + SDVO_NAME(intel_sdvo), + intel_sdvo->caps.vendor_id, intel_sdvo->caps.device_id, + intel_sdvo->caps.device_rev_id, + intel_sdvo->pixel_clock_min / 1000, + intel_sdvo->pixel_clock_max / 1000, + (intel_sdvo->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', + (intel_sdvo->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', + /* check currently supported outputs */ + intel_sdvo->caps.output_flags & + (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_RGB0) ? 'Y' : 'N', + intel_sdvo->caps.output_flags & + (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); + return true; + +err_output: + intel_sdvo_output_cleanup(intel_sdvo); + +err: + drm_encoder_cleanup(&intel_encoder->base); + i2c_del_adapter(&intel_sdvo->ddc); +err_i2c_bus: + intel_sdvo_unselect_i2c_bus(intel_sdvo); + kfree(intel_sdvo); + + return false; +} --- linux-3.5.0.orig/ubuntu/i915/intel_ringbuffer.h +++ linux-3.5.0/ubuntu/i915/intel_ringbuffer.h @@ -0,0 +1,242 @@ +#ifndef _INTEL_RINGBUFFER_H_ +#define _INTEL_RINGBUFFER_H_ + +/* + * Gen2 BSpec "1. Programming Environment" / 1.4.4.6 "Ring Buffer Use" + * Gen3 BSpec "vol1c Memory Interface Functions" / 2.3.4.5 "Ring Buffer Use" + * Gen4+ BSpec "vol1c Memory Interface and Command Stream" / 5.3.4.5 "Ring Buffer Use" + * + * "If the Ring Buffer Head Pointer and the Tail Pointer are on the same + * cacheline, the Head Pointer must not be greater than the Tail + * Pointer." + */ +#define I915_RING_FREE_SPACE 64 + +struct intel_hw_status_page { + u32 *page_addr; + unsigned int gfx_addr; + struct drm_i915_gem_object *obj; +}; + +#define I915_READ_TAIL(ring) I915_READ(RING_TAIL((ring)->mmio_base)) +#define I915_WRITE_TAIL(ring, val) I915_WRITE(RING_TAIL((ring)->mmio_base), val) + +#define I915_READ_START(ring) I915_READ(RING_START((ring)->mmio_base)) +#define I915_WRITE_START(ring, val) I915_WRITE(RING_START((ring)->mmio_base), val) + +#define I915_READ_HEAD(ring) I915_READ(RING_HEAD((ring)->mmio_base)) +#define I915_WRITE_HEAD(ring, val) I915_WRITE(RING_HEAD((ring)->mmio_base), val) + +#define I915_READ_CTL(ring) I915_READ(RING_CTL((ring)->mmio_base)) +#define I915_WRITE_CTL(ring, val) I915_WRITE(RING_CTL((ring)->mmio_base), val) + +#define I915_READ_IMR(ring) I915_READ(RING_IMR((ring)->mmio_base)) +#define I915_WRITE_IMR(ring, val) I915_WRITE(RING_IMR((ring)->mmio_base), val) + +#define I915_READ_NOPID(ring) I915_READ(RING_NOPID((ring)->mmio_base)) +#define I915_READ_SYNC_0(ring) I915_READ(RING_SYNC_0((ring)->mmio_base)) +#define I915_READ_SYNC_1(ring) I915_READ(RING_SYNC_1((ring)->mmio_base)) + +struct intel_ring_buffer { + const char *name; + enum intel_ring_id { + RCS = 0x0, + VCS, + BCS, + } id; +#define I915_NUM_RINGS 3 + u32 mmio_base; + void __iomem *virtual_start; + struct drm_device *dev; + struct drm_i915_gem_object *obj; + + u32 head; + u32 tail; + int space; + int size; + int effective_size; + struct intel_hw_status_page status_page; + + /** We track the position of the requests in the ring buffer, and + * when each is retired we increment last_retired_head as the GPU + * must have finished processing the request and so we know we + * can advance the ringbuffer up to that position. + * + * last_retired_head is set to -1 after the value is consumed so + * we can detect new retirements. + */ + u32 last_retired_head; + + u32 irq_refcount; /* protected by dev_priv->irq_lock */ + u32 irq_enable_mask; /* bitmask to enable ring interrupt */ + u32 trace_irq_seqno; + u32 sync_seqno[I915_NUM_RINGS-1]; + bool __must_check (*irq_get)(struct intel_ring_buffer *ring); + void (*irq_put)(struct intel_ring_buffer *ring); + + int (*init)(struct intel_ring_buffer *ring); + + void (*write_tail)(struct intel_ring_buffer *ring, + u32 value); + int __must_check (*flush)(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains); + int (*add_request)(struct intel_ring_buffer *ring); + /* Some chipsets are not quite as coherent as advertised and need + * an expensive kick to force a true read of the up-to-date seqno. + * However, the up-to-date seqno is not always required and the last + * seen value is good enough. Note that the seqno will always be + * monotonic, even if not coherent. + */ + u32 (*get_seqno)(struct intel_ring_buffer *ring, + bool lazy_coherency); + int (*dispatch_execbuffer)(struct intel_ring_buffer *ring, + u32 offset, u32 length, + unsigned flags); +#define I915_DISPATCH_SECURE 0x1 +#define I915_DISPATCH_PINNED 0x2 + void (*cleanup)(struct intel_ring_buffer *ring); + int (*sync_to)(struct intel_ring_buffer *ring, + struct intel_ring_buffer *to, + u32 seqno); + + u32 semaphore_register[3]; /*our mbox written by others */ + u32 signal_mbox[2]; /* mboxes this ring signals to */ + /** + * List of objects currently involved in rendering from the + * ringbuffer. + * + * Includes buffers having the contents of their GPU caches + * flushed, not necessarily primitives. last_rendering_seqno + * represents when the rendering involved will be completed. + * + * A reference is held on the buffer while on this list. + */ + struct list_head active_list; + + /** + * List of breadcrumbs associated with GPU requests currently + * outstanding. + */ + struct list_head request_list; + + /** + * Do we have some not yet emitted requests outstanding? + */ + u32 outstanding_lazy_request; + bool gpu_caches_dirty; + + wait_queue_head_t irq_queue; + + /** + * Do an explicit TLB flush before MI_SET_CONTEXT + */ + bool itlb_before_ctx_switch; + struct i915_hw_context *default_context; + struct drm_i915_gem_object *last_context_obj; + + void *private; +}; + +static inline bool +intel_ring_initialized(struct intel_ring_buffer *ring) +{ + return ring->obj != NULL; +} + +static inline unsigned +intel_ring_flag(struct intel_ring_buffer *ring) +{ + return 1 << ring->id; +} + +static inline u32 +intel_ring_sync_index(struct intel_ring_buffer *ring, + struct intel_ring_buffer *other) +{ + int idx; + + /* + * cs -> 0 = vcs, 1 = bcs + * vcs -> 0 = bcs, 1 = cs, + * bcs -> 0 = cs, 1 = vcs. + */ + + idx = (other - ring) - 1; + if (idx < 0) + idx += I915_NUM_RINGS; + + return idx; +} + +static inline u32 +intel_read_status_page(struct intel_ring_buffer *ring, + int reg) +{ + /* Ensure that the compiler doesn't optimize away the load. */ + barrier(); + return ring->status_page.page_addr[reg]; +} + +/** + * Reads a dword out of the status page, which is written to from the command + * queue by automatic updates, MI_REPORT_HEAD, MI_STORE_DATA_INDEX, or + * MI_STORE_DATA_IMM. + * + * The following dwords have a reserved meaning: + * 0x00: ISR copy, updated when an ISR bit not set in the HWSTAM changes. + * 0x04: ring 0 head pointer + * 0x05: ring 1 head pointer (915-class) + * 0x06: ring 2 head pointer (915-class) + * 0x10-0x1b: Context status DWords (GM45) + * 0x1f: Last written status offset. (GM45) + * + * The area from dword 0x20 to 0x3ff is available for driver usage. + */ +#define I915_GEM_HWS_INDEX 0x20 +#define I915_GEM_HWS_SCRATCH_INDEX 0x30 +#define I915_GEM_HWS_SCRATCH_ADDR (I915_GEM_HWS_SCRATCH_INDEX << MI_STORE_DWORD_INDEX_SHIFT) + +void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring); + +int __must_check intel_ring_begin(struct intel_ring_buffer *ring, int n); +static inline void intel_ring_emit(struct intel_ring_buffer *ring, + u32 data) +{ + iowrite32(data, ring->virtual_start + ring->tail); + ring->tail += 4; +} +void intel_ring_advance(struct intel_ring_buffer *ring); +int __must_check intel_ring_idle(struct intel_ring_buffer *ring); + +int intel_ring_flush_all_caches(struct intel_ring_buffer *ring); +int intel_ring_invalidate_all_caches(struct intel_ring_buffer *ring); + +int intel_init_render_ring_buffer(struct drm_device *dev); +int intel_init_bsd_ring_buffer(struct drm_device *dev); +int intel_init_blt_ring_buffer(struct drm_device *dev); + +u32 intel_ring_get_active_head(struct intel_ring_buffer *ring); +void intel_ring_setup_status_page(struct intel_ring_buffer *ring); + +static inline u32 intel_ring_get_tail(struct intel_ring_buffer *ring) +{ + return ring->tail; +} + +static inline u32 intel_ring_get_seqno(struct intel_ring_buffer *ring) +{ + BUG_ON(ring->outstanding_lazy_request == 0); + return ring->outstanding_lazy_request; +} + +static inline void i915_trace_irq_get(struct intel_ring_buffer *ring, u32 seqno) +{ + if (ring->trace_irq_seqno == 0 && ring->irq_get(ring)) + ring->trace_irq_seqno = seqno; +} + +/* DRI warts */ +int intel_render_ring_init_dri(struct drm_device *dev, u64 start, u32 size); + +#endif /* _INTEL_RINGBUFFER_H_ */ --- linux-3.5.0.orig/ubuntu/i915/dvo_ivch.c +++ linux-3.5.0/ubuntu/i915/dvo_ivch.c @@ -0,0 +1,436 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "dvo.h" + +/* + * register definitions for the i82807aa. + * + * Documentation on this chipset can be found in datasheet #29069001 at + * intel.com. + */ + +/* + * VCH Revision & GMBus Base Addr + */ +#define VR00 0x00 +# define VR00_BASE_ADDRESS_MASK 0x007f + +/* + * Functionality Enable + */ +#define VR01 0x01 + +/* + * Enable the panel fitter + */ +# define VR01_PANEL_FIT_ENABLE (1 << 3) +/* + * Enables the LCD display. + * + * This must not be set while VR01_DVO_BYPASS_ENABLE is set. + */ +# define VR01_LCD_ENABLE (1 << 2) +/** Enables the DVO repeater. */ +# define VR01_DVO_BYPASS_ENABLE (1 << 1) +/** Enables the DVO clock */ +# define VR01_DVO_ENABLE (1 << 0) + +/* + * LCD Interface Format + */ +#define VR10 0x10 +/** Enables LVDS output instead of CMOS */ +# define VR10_LVDS_ENABLE (1 << 4) +/** Enables 18-bit LVDS output. */ +# define VR10_INTERFACE_1X18 (0 << 2) +/** Enables 24-bit LVDS or CMOS output */ +# define VR10_INTERFACE_1X24 (1 << 2) +/** Enables 2x18-bit LVDS or CMOS output. */ +# define VR10_INTERFACE_2X18 (2 << 2) +/** Enables 2x24-bit LVDS output */ +# define VR10_INTERFACE_2X24 (3 << 2) + +/* + * VR20 LCD Horizontal Display Size + */ +#define VR20 0x20 + +/* + * LCD Vertical Display Size + */ +#define VR21 0x20 + +/* + * Panel power down status + */ +#define VR30 0x30 +/** Read only bit indicating that the panel is not in a safe poweroff state. */ +# define VR30_PANEL_ON (1 << 15) + +#define VR40 0x40 +# define VR40_STALL_ENABLE (1 << 13) +# define VR40_VERTICAL_INTERP_ENABLE (1 << 12) +# define VR40_ENHANCED_PANEL_FITTING (1 << 11) +# define VR40_HORIZONTAL_INTERP_ENABLE (1 << 10) +# define VR40_AUTO_RATIO_ENABLE (1 << 9) +# define VR40_CLOCK_GATING_ENABLE (1 << 8) + +/* + * Panel Fitting Vertical Ratio + * (((image_height - 1) << 16) / ((panel_height - 1))) >> 2 + */ +#define VR41 0x41 + +/* + * Panel Fitting Horizontal Ratio + * (((image_width - 1) << 16) / ((panel_width - 1))) >> 2 + */ +#define VR42 0x42 + +/* + * Horizontal Image Size + */ +#define VR43 0x43 + +/* VR80 GPIO 0 + */ +#define VR80 0x80 +#define VR81 0x81 +#define VR82 0x82 +#define VR83 0x83 +#define VR84 0x84 +#define VR85 0x85 +#define VR86 0x86 +#define VR87 0x87 + +/* VR88 GPIO 8 + */ +#define VR88 0x88 + +/* Graphics BIOS scratch 0 + */ +#define VR8E 0x8E +# define VR8E_PANEL_TYPE_MASK (0xf << 0) +# define VR8E_PANEL_INTERFACE_CMOS (0 << 4) +# define VR8E_PANEL_INTERFACE_LVDS (1 << 4) +# define VR8E_FORCE_DEFAULT_PANEL (1 << 5) + +/* Graphics BIOS scratch 1 + */ +#define VR8F 0x8F +# define VR8F_VCH_PRESENT (1 << 0) +# define VR8F_DISPLAY_CONN (1 << 1) +# define VR8F_POWER_MASK (0x3c) +# define VR8F_POWER_POS (2) + + +struct ivch_priv { + bool quiet; + + uint16_t width, height; +}; + + +static void ivch_dump_regs(struct intel_dvo_device *dvo); + +/** + * Reads a register on the ivch. + * + * Each of the 256 registers are 16 bits long. + */ +static bool ivch_read(struct intel_dvo_device *dvo, int addr, uint16_t *data) +{ + struct ivch_priv *priv = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[1]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 0, + }, + { + .addr = 0, + .flags = I2C_M_NOSTART, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD | I2C_M_NOSTART, + .len = 2, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + + if (i2c_transfer(adapter, msgs, 3) == 3) { + *data = (in_buf[1] << 8) | in_buf[0]; + return true; + }; + + if (!priv->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from " + "%s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +/** Writes a 16-bit register on the ivch */ +static bool ivch_write(struct intel_dvo_device *dvo, int addr, uint16_t data) +{ + struct ivch_priv *priv = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[3]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 3, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = data & 0xff; + out_buf[2] = data >> 8; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!priv->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/** Probes the given bus and slave address for an ivch */ +static bool ivch_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + struct ivch_priv *priv; + uint16_t temp; + + priv = kzalloc(sizeof(struct ivch_priv), GFP_KERNEL); + if (priv == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = priv; + priv->quiet = true; + + if (!ivch_read(dvo, VR00, &temp)) + goto out; + priv->quiet = false; + + /* Since the identification bits are probably zeroes, which doesn't seem + * very unique, check that the value in the base address field matches + * the address it's responding on. + */ + if ((temp & VR00_BASE_ADDRESS_MASK) != dvo->slave_addr) { + DRM_DEBUG_KMS("ivch detect failed due to address mismatch " + "(%d vs %d)\n", + (temp & VR00_BASE_ADDRESS_MASK), dvo->slave_addr); + goto out; + } + + ivch_read(dvo, VR20, &priv->width); + ivch_read(dvo, VR21, &priv->height); + + return true; + +out: + kfree(priv); + return false; +} + +static enum drm_connector_status ivch_detect(struct intel_dvo_device *dvo) +{ + return connector_status_connected; +} + +static enum drm_mode_status ivch_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 112000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +/** Sets the power state of the panel connected to the ivch */ +static void ivch_dpms(struct intel_dvo_device *dvo, bool enable) +{ + int i; + uint16_t vr01, vr30, backlight; + + /* Set the new power state of the panel. */ + if (!ivch_read(dvo, VR01, &vr01)) + return; + + if (enable) + backlight = 1; + else + backlight = 0; + ivch_write(dvo, VR80, backlight); + + if (enable) + vr01 |= VR01_LCD_ENABLE | VR01_DVO_ENABLE; + else + vr01 &= ~(VR01_LCD_ENABLE | VR01_DVO_ENABLE); + + ivch_write(dvo, VR01, vr01); + + /* Wait for the panel to make its state transition */ + for (i = 0; i < 100; i++) { + if (!ivch_read(dvo, VR30, &vr30)) + break; + + if (((vr30 & VR30_PANEL_ON) != 0) == enable) + break; + udelay(1000); + } + /* wait some more; vch may fail to resync sometimes without this */ + udelay(16 * 1000); +} + +static bool ivch_get_hw_state(struct intel_dvo_device *dvo) +{ + uint16_t vr01; + + /* Set the new power state of the panel. */ + if (!ivch_read(dvo, VR01, &vr01)) + return false; + + if (vr01 & VR01_LCD_ENABLE) + return true; + else + return false; +} + +static void ivch_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint16_t vr40 = 0; + uint16_t vr01; + + vr01 = 0; + vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE | + VR40_HORIZONTAL_INTERP_ENABLE); + + if (mode->hdisplay != adjusted_mode->hdisplay || + mode->vdisplay != adjusted_mode->vdisplay) { + uint16_t x_ratio, y_ratio; + + vr01 |= VR01_PANEL_FIT_ENABLE; + vr40 |= VR40_CLOCK_GATING_ENABLE; + x_ratio = (((mode->hdisplay - 1) << 16) / + (adjusted_mode->hdisplay - 1)) >> 2; + y_ratio = (((mode->vdisplay - 1) << 16) / + (adjusted_mode->vdisplay - 1)) >> 2; + ivch_write(dvo, VR42, x_ratio); + ivch_write(dvo, VR41, y_ratio); + } else { + vr01 &= ~VR01_PANEL_FIT_ENABLE; + vr40 &= ~VR40_CLOCK_GATING_ENABLE; + } + vr40 &= ~VR40_AUTO_RATIO_ENABLE; + + ivch_write(dvo, VR01, vr01); + ivch_write(dvo, VR40, vr40); + + ivch_dump_regs(dvo); +} + +static void ivch_dump_regs(struct intel_dvo_device *dvo) +{ + uint16_t val; + + ivch_read(dvo, VR00, &val); + DRM_LOG_KMS("VR00: 0x%04x\n", val); + ivch_read(dvo, VR01, &val); + DRM_LOG_KMS("VR01: 0x%04x\n", val); + ivch_read(dvo, VR30, &val); + DRM_LOG_KMS("VR30: 0x%04x\n", val); + ivch_read(dvo, VR40, &val); + DRM_LOG_KMS("VR40: 0x%04x\n", val); + + /* GPIO registers */ + ivch_read(dvo, VR80, &val); + DRM_LOG_KMS("VR80: 0x%04x\n", val); + ivch_read(dvo, VR81, &val); + DRM_LOG_KMS("VR81: 0x%04x\n", val); + ivch_read(dvo, VR82, &val); + DRM_LOG_KMS("VR82: 0x%04x\n", val); + ivch_read(dvo, VR83, &val); + DRM_LOG_KMS("VR83: 0x%04x\n", val); + ivch_read(dvo, VR84, &val); + DRM_LOG_KMS("VR84: 0x%04x\n", val); + ivch_read(dvo, VR85, &val); + DRM_LOG_KMS("VR85: 0x%04x\n", val); + ivch_read(dvo, VR86, &val); + DRM_LOG_KMS("VR86: 0x%04x\n", val); + ivch_read(dvo, VR87, &val); + DRM_LOG_KMS("VR87: 0x%04x\n", val); + ivch_read(dvo, VR88, &val); + DRM_LOG_KMS("VR88: 0x%04x\n", val); + + /* Scratch register 0 - AIM Panel type */ + ivch_read(dvo, VR8E, &val); + DRM_LOG_KMS("VR8E: 0x%04x\n", val); + + /* Scratch register 1 - Status register */ + ivch_read(dvo, VR8F, &val); + DRM_LOG_KMS("VR8F: 0x%04x\n", val); +} + +static void ivch_destroy(struct intel_dvo_device *dvo) +{ + struct ivch_priv *priv = dvo->dev_priv; + + if (priv) { + kfree(priv); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ivch_ops = { + .init = ivch_init, + .dpms = ivch_dpms, + .get_hw_state = ivch_get_hw_state, + .mode_valid = ivch_mode_valid, + .mode_set = ivch_mode_set, + .detect = ivch_detect, + .dump_regs = ivch_dump_regs, + .destroy = ivch_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/intel_acpi.c +++ linux-3.5.0/ubuntu/i915/intel_acpi.c @@ -0,0 +1,251 @@ +/* + * Intel ACPI functions + * + * _DSM related code stolen from nouveau_acpi.c. + */ +#include +#include +#include +#include + +#include +#include "i915_drv.h" + +#define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */ + +#define INTEL_DSM_FN_SUPPORTED_FUNCTIONS 0 /* No args */ +#define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */ + +static struct intel_dsm_priv { + acpi_handle dhandle; +} intel_dsm_priv; + +static const u8 intel_dsm_guid[] = { + 0xd3, 0x73, 0xd8, 0x7e, + 0xd0, 0xc2, + 0x4f, 0x4e, + 0xa8, 0x54, + 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c +}; + +static int intel_dsm(acpi_handle handle, int func, int arg) +{ + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_object_list input; + union acpi_object params[4]; + union acpi_object *obj; + u32 result; + int ret = 0; + + input.count = 4; + input.pointer = params; + params[0].type = ACPI_TYPE_BUFFER; + params[0].buffer.length = sizeof(intel_dsm_guid); + params[0].buffer.pointer = (char *)intel_dsm_guid; + params[1].type = ACPI_TYPE_INTEGER; + params[1].integer.value = INTEL_DSM_REVISION_ID; + params[2].type = ACPI_TYPE_INTEGER; + params[2].integer.value = func; + params[3].type = ACPI_TYPE_INTEGER; + params[3].integer.value = arg; + + ret = acpi_evaluate_object(handle, "_DSM", &input, &output); + if (ret) { + DRM_DEBUG_DRIVER("failed to evaluate _DSM: %d\n", ret); + return ret; + } + + obj = (union acpi_object *)output.pointer; + + result = 0; + switch (obj->type) { + case ACPI_TYPE_INTEGER: + result = obj->integer.value; + break; + + case ACPI_TYPE_BUFFER: + if (obj->buffer.length == 4) { + result = (obj->buffer.pointer[0] | + (obj->buffer.pointer[1] << 8) | + (obj->buffer.pointer[2] << 16) | + (obj->buffer.pointer[3] << 24)); + break; + } + default: + ret = -EINVAL; + break; + } + if (result == 0x80000002) + ret = -ENODEV; + + kfree(output.pointer); + return ret; +} + +static char *intel_dsm_port_name(u8 id) +{ + switch (id) { + case 0: + return "Reserved"; + case 1: + return "Analog VGA"; + case 2: + return "LVDS"; + case 3: + return "Reserved"; + case 4: + return "HDMI/DVI_B"; + case 5: + return "HDMI/DVI_C"; + case 6: + return "HDMI/DVI_D"; + case 7: + return "DisplayPort_A"; + case 8: + return "DisplayPort_B"; + case 9: + return "DisplayPort_C"; + case 0xa: + return "DisplayPort_D"; + case 0xb: + case 0xc: + case 0xd: + return "Reserved"; + case 0xe: + return "WiDi"; + default: + return "bad type"; + } +} + +static char *intel_dsm_mux_type(u8 type) +{ + switch (type) { + case 0: + return "unknown"; + case 1: + return "No MUX, iGPU only"; + case 2: + return "No MUX, dGPU only"; + case 3: + return "MUXed between iGPU and dGPU"; + default: + return "bad type"; + } +} + +static void intel_dsm_platform_mux_info(void) +{ + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_object_list input; + union acpi_object params[4]; + union acpi_object *pkg; + int i, ret; + + input.count = 4; + input.pointer = params; + params[0].type = ACPI_TYPE_BUFFER; + params[0].buffer.length = sizeof(intel_dsm_guid); + params[0].buffer.pointer = (char *)intel_dsm_guid; + params[1].type = ACPI_TYPE_INTEGER; + params[1].integer.value = INTEL_DSM_REVISION_ID; + params[2].type = ACPI_TYPE_INTEGER; + params[2].integer.value = INTEL_DSM_FN_PLATFORM_MUX_INFO; + params[3].type = ACPI_TYPE_INTEGER; + params[3].integer.value = 0; + + ret = acpi_evaluate_object(intel_dsm_priv.dhandle, "_DSM", &input, + &output); + if (ret) { + DRM_DEBUG_DRIVER("failed to evaluate _DSM: %d\n", ret); + goto out; + } + + pkg = (union acpi_object *)output.pointer; + + if (pkg->type == ACPI_TYPE_PACKAGE) { + union acpi_object *connector_count = &pkg->package.elements[0]; + DRM_DEBUG_DRIVER("MUX info connectors: %lld\n", + (unsigned long long)connector_count->integer.value); + for (i = 1; i < pkg->package.count; i++) { + union acpi_object *obj = &pkg->package.elements[i]; + union acpi_object *connector_id = + &obj->package.elements[0]; + union acpi_object *info = &obj->package.elements[1]; + DRM_DEBUG_DRIVER("Connector id: 0x%016llx\n", + (unsigned long long)connector_id->integer.value); + DRM_DEBUG_DRIVER(" port id: %s\n", + intel_dsm_port_name(info->buffer.pointer[0])); + DRM_DEBUG_DRIVER(" display mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[1])); + DRM_DEBUG_DRIVER(" aux/dc mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[2])); + DRM_DEBUG_DRIVER(" hpd mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[3])); + } + } + +out: + kfree(output.pointer); +} + +static bool intel_dsm_pci_probe(struct pci_dev *pdev) +{ + acpi_handle dhandle, intel_handle; + acpi_status status; + int ret; + + dhandle = DEVICE_ACPI_HANDLE(&pdev->dev); + if (!dhandle) + return false; + + status = acpi_get_handle(dhandle, "_DSM", &intel_handle); + if (ACPI_FAILURE(status)) { + DRM_DEBUG_KMS("no _DSM method for intel device\n"); + return false; + } + + ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS, 0); + if (ret < 0) { + DRM_DEBUG_KMS("failed to get supported _DSM functions\n"); + return false; + } + + intel_dsm_priv.dhandle = dhandle; + + intel_dsm_platform_mux_info(); + return true; +} + +static bool intel_dsm_detect(void) +{ + char acpi_method_name[255] = { 0 }; + struct acpi_buffer buffer = {sizeof(acpi_method_name), acpi_method_name}; + struct pci_dev *pdev = NULL; + bool has_dsm = false; + int vga_count = 0; + + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) { + vga_count++; + has_dsm |= intel_dsm_pci_probe(pdev); + } + + if (vga_count == 2 && has_dsm) { + acpi_get_name(intel_dsm_priv.dhandle, ACPI_FULL_PATHNAME, &buffer); + DRM_DEBUG_DRIVER("VGA switcheroo: detected DSM switching method %s handle\n", + acpi_method_name); + return true; + } + + return false; +} + +void intel_register_dsm_handler(void) +{ + if (!intel_dsm_detect()) + return; +} + +void intel_unregister_dsm_handler(void) +{ +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_debug.c +++ linux-3.5.0/ubuntu/i915/i915_gem_debug.c @@ -0,0 +1,187 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Keith Packard + * + */ + +#include +#include +#include "i915_drv.h" + +#if WATCH_LISTS +int +i915_verify_lists(struct drm_device *dev) +{ + static int warned; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int err = 0; + + if (warned) + return 0; + + list_for_each_entry(obj, &dev_priv->render_ring.active_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed render active %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.read_domains & I915_GEM_GPU_DOMAINS) == 0) { + DRM_ERROR("invalid render active %p (a %d r %x)\n", + obj, + obj->active, + obj->base.read_domains); + err++; + } else if (obj->base.write_domain && list_empty(&obj->gpu_write_list)) { + DRM_ERROR("invalid render active %p (w %x, gwl %d)\n", + obj, + obj->base.write_domain, + !list_empty(&obj->gpu_write_list)); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.flushing_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed flushing %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS) == 0 || + list_empty(&obj->gpu_write_list)) { + DRM_ERROR("invalid flushing %p (a %d w %x gwl %d)\n", + obj, + obj->active, + obj->base.write_domain, + !list_empty(&obj->gpu_write_list)); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.gpu_write_list, gpu_write_list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed gpu write %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS) == 0) { + DRM_ERROR("invalid gpu write %p (a %d w %x)\n", + obj, + obj->active, + obj->base.write_domain); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.inactive_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed inactive %p\n", obj); + err++; + break; + } else if (obj->pin_count || obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS)) { + DRM_ERROR("invalid inactive %p (p %d a %d w %x)\n", + obj, + obj->pin_count, obj->active, + obj->base.write_domain); + err++; + } + } + + return warned = err; +} +#endif /* WATCH_INACTIVE */ + +#if WATCH_COHERENCY +void +i915_gem_object_check_coherency(struct drm_i915_gem_object *obj, int handle) +{ + struct drm_device *dev = obj->base.dev; + int page; + uint32_t *gtt_mapping; + uint32_t *backing_map = NULL; + int bad_count = 0; + + DRM_INFO("%s: checking coherency of object %p@0x%08x (%d, %zdkb):\n", + __func__, obj, obj->gtt_offset, handle, + obj->size / 1024); + + gtt_mapping = ioremap(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + obj->base.size); + if (gtt_mapping == NULL) { + DRM_ERROR("failed to map GTT space\n"); + return; + } + + for (page = 0; page < obj->size / PAGE_SIZE; page++) { + int i; + + backing_map = kmap_atomic(obj->pages[page]); + + if (backing_map == NULL) { + DRM_ERROR("failed to map backing page\n"); + goto out; + } + + for (i = 0; i < PAGE_SIZE / 4; i++) { + uint32_t cpuval = backing_map[i]; + uint32_t gttval = readl(gtt_mapping + + page * 1024 + i); + + if (cpuval != gttval) { + DRM_INFO("incoherent CPU vs GPU at 0x%08x: " + "0x%08x vs 0x%08x\n", + (int)(obj->gtt_offset + + page * PAGE_SIZE + i * 4), + cpuval, gttval); + if (bad_count++ >= 8) { + DRM_INFO("...\n"); + goto out; + } + } + } + kunmap_atomic(backing_map); + backing_map = NULL; + } + + out: + if (backing_map != NULL) + kunmap_atomic(backing_map); + iounmap(gtt_mapping); + + /* give syslog time to catch up */ + msleep(1); + + /* Directly flush the object, since we just loaded values with the CPU + * from the backing pages and we don't want to disturb the cache + * management that we're trying to observe. + */ + + i915_gem_clflush_object(obj); +} +#endif --- linux-3.5.0.orig/ubuntu/i915/intel_sprite.c +++ linux-3.5.0/ubuntu/i915/intel_sprite.c @@ -0,0 +1,730 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Jesse Barnes + * + * New plane/sprite handling. + * + * The older chips had a separate interface for programming plane related + * registers; newer ones are much simpler and we can use the new DRM plane + * support. + */ +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +static void +ivb_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + u32 sprctl, sprscale = 0; + unsigned long sprsurf_offset, linear_offset; + int pixel_size = drm_format_plane_cpp(fb->pixel_format, 0); + + sprctl = I915_READ(SPRCTL(pipe)); + + /* Mask out pixel format bits in case we change it */ + sprctl &= ~SPRITE_PIXFORMAT_MASK; + sprctl &= ~SPRITE_RGB_ORDER_RGBX; + sprctl &= ~SPRITE_YUV_BYTE_ORDER_MASK; + sprctl &= ~SPRITE_TILED; + + switch (fb->pixel_format) { + case DRM_FORMAT_XBGR8888: + sprctl |= SPRITE_FORMAT_RGBX888 | SPRITE_RGB_ORDER_RGBX; + break; + case DRM_FORMAT_XRGB8888: + sprctl |= SPRITE_FORMAT_RGBX888; + break; + case DRM_FORMAT_YUYV: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_YUYV; + break; + case DRM_FORMAT_YVYU: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_YVYU; + break; + case DRM_FORMAT_UYVY: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_UYVY; + break; + case DRM_FORMAT_VYUY: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_VYUY; + break; + default: + BUG(); + } + + if (obj->tiling_mode != I915_TILING_NONE) + sprctl |= SPRITE_TILED; + + /* must disable */ + sprctl |= SPRITE_TRICKLE_FEED_DISABLE; + sprctl |= SPRITE_ENABLE; + + /* Sizes are 0 based */ + src_w--; + src_h--; + crtc_w--; + crtc_h--; + + intel_update_sprite_watermarks(dev, pipe, crtc_w, pixel_size); + + /* + * IVB workaround: must disable low power watermarks for at least + * one frame before enabling scaling. LP watermarks can be re-enabled + * when scaling is disabled. + */ + if (crtc_w != src_w || crtc_h != src_h) { + if (!dev_priv->sprite_scaling_enabled) { + dev_priv->sprite_scaling_enabled = true; + intel_update_watermarks(dev); + intel_wait_for_vblank(dev, pipe); + } + sprscale = SPRITE_SCALE_ENABLE | (src_w << 16) | src_h; + } else { + if (dev_priv->sprite_scaling_enabled) { + dev_priv->sprite_scaling_enabled = false; + /* potentially re-enable LP watermarks */ + intel_update_watermarks(dev); + } + } + + I915_WRITE(SPRSTRIDE(pipe), fb->pitches[0]); + I915_WRITE(SPRPOS(pipe), (crtc_y << 16) | crtc_x); + + linear_offset = y * fb->pitches[0] + x * pixel_size; + sprsurf_offset = + 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 + * register */ + if (IS_HASWELL(dev)) + I915_WRITE(SPROFFSET(pipe), (y << 16) | x); + else if (obj->tiling_mode != I915_TILING_NONE) + I915_WRITE(SPRTILEOFF(pipe), (y << 16) | x); + else + I915_WRITE(SPRLINOFF(pipe), linear_offset); + + I915_WRITE(SPRSIZE(pipe), (crtc_h << 16) | crtc_w); + if (intel_plane->can_scale) + I915_WRITE(SPRSCALE(pipe), sprscale); + I915_WRITE(SPRCTL(pipe), sprctl); + I915_MODIFY_DISPBASE(SPRSURF(pipe), obj->gtt_offset + sprsurf_offset); + POSTING_READ(SPRSURF(pipe)); +} + +static void +ivb_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + + I915_WRITE(SPRCTL(pipe), I915_READ(SPRCTL(pipe)) & ~SPRITE_ENABLE); + /* Can't leave the scaler enabled... */ + if (intel_plane->can_scale) + I915_WRITE(SPRSCALE(pipe), 0); + /* Activate double buffered register update */ + I915_MODIFY_DISPBASE(SPRSURF(pipe), 0); + POSTING_READ(SPRSURF(pipe)); + + dev_priv->sprite_scaling_enabled = false; + intel_update_watermarks(dev); +} + +static int +ivb_update_colorkey(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 sprctl; + int ret = 0; + + intel_plane = to_intel_plane(plane); + + I915_WRITE(SPRKEYVAL(intel_plane->pipe), key->min_value); + I915_WRITE(SPRKEYMAX(intel_plane->pipe), key->max_value); + I915_WRITE(SPRKEYMSK(intel_plane->pipe), key->channel_mask); + + sprctl = I915_READ(SPRCTL(intel_plane->pipe)); + sprctl &= ~(SPRITE_SOURCE_KEY | SPRITE_DEST_KEY); + if (key->flags & I915_SET_COLORKEY_DESTINATION) + sprctl |= SPRITE_DEST_KEY; + else if (key->flags & I915_SET_COLORKEY_SOURCE) + sprctl |= SPRITE_SOURCE_KEY; + I915_WRITE(SPRCTL(intel_plane->pipe), sprctl); + + POSTING_READ(SPRKEYMSK(intel_plane->pipe)); + + return ret; +} + +static void +ivb_get_colorkey(struct drm_plane *plane, struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 sprctl; + + intel_plane = to_intel_plane(plane); + + key->min_value = I915_READ(SPRKEYVAL(intel_plane->pipe)); + key->max_value = I915_READ(SPRKEYMAX(intel_plane->pipe)); + key->channel_mask = I915_READ(SPRKEYMSK(intel_plane->pipe)); + key->flags = 0; + + sprctl = I915_READ(SPRCTL(intel_plane->pipe)); + + if (sprctl & SPRITE_DEST_KEY) + key->flags = I915_SET_COLORKEY_DESTINATION; + else if (sprctl & SPRITE_SOURCE_KEY) + key->flags = I915_SET_COLORKEY_SOURCE; + else + key->flags = I915_SET_COLORKEY_NONE; +} + +static void +ilk_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + unsigned long dvssurf_offset, linear_offset; + u32 dvscntr, dvsscale; + int pixel_size = drm_format_plane_cpp(fb->pixel_format, 0); + + dvscntr = I915_READ(DVSCNTR(pipe)); + + /* Mask out pixel format bits in case we change it */ + dvscntr &= ~DVS_PIXFORMAT_MASK; + dvscntr &= ~DVS_RGB_ORDER_XBGR; + dvscntr &= ~DVS_YUV_BYTE_ORDER_MASK; + dvscntr &= ~DVS_TILED; + + switch (fb->pixel_format) { + case DRM_FORMAT_XBGR8888: + dvscntr |= DVS_FORMAT_RGBX888 | DVS_RGB_ORDER_XBGR; + break; + case DRM_FORMAT_XRGB8888: + dvscntr |= DVS_FORMAT_RGBX888; + break; + case DRM_FORMAT_YUYV: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_YUYV; + break; + case DRM_FORMAT_YVYU: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_YVYU; + break; + case DRM_FORMAT_UYVY: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_UYVY; + break; + case DRM_FORMAT_VYUY: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_VYUY; + break; + default: + BUG(); + } + + if (obj->tiling_mode != I915_TILING_NONE) + dvscntr |= DVS_TILED; + + if (IS_GEN6(dev)) + dvscntr |= DVS_TRICKLE_FEED_DISABLE; /* must disable */ + dvscntr |= DVS_ENABLE; + + /* Sizes are 0 based */ + src_w--; + src_h--; + crtc_w--; + crtc_h--; + + intel_update_sprite_watermarks(dev, pipe, crtc_w, pixel_size); + + dvsscale = 0; + if (IS_GEN5(dev) || crtc_w != src_w || crtc_h != src_h) + dvsscale = DVS_SCALE_ENABLE | (src_w << 16) | src_h; + + I915_WRITE(DVSSTRIDE(pipe), fb->pitches[0]); + I915_WRITE(DVSPOS(pipe), (crtc_y << 16) | crtc_x); + + linear_offset = y * fb->pitches[0] + x * pixel_size; + dvssurf_offset = + 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) + I915_WRITE(DVSTILEOFF(pipe), (y << 16) | x); + else + I915_WRITE(DVSLINOFF(pipe), linear_offset); + + I915_WRITE(DVSSIZE(pipe), (crtc_h << 16) | crtc_w); + I915_WRITE(DVSSCALE(pipe), dvsscale); + I915_WRITE(DVSCNTR(pipe), dvscntr); + I915_MODIFY_DISPBASE(DVSSURF(pipe), obj->gtt_offset + dvssurf_offset); + POSTING_READ(DVSSURF(pipe)); +} + +static void +ilk_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + + I915_WRITE(DVSCNTR(pipe), I915_READ(DVSCNTR(pipe)) & ~DVS_ENABLE); + /* Disable the scaler */ + I915_WRITE(DVSSCALE(pipe), 0); + /* Flush double buffered register updates */ + I915_MODIFY_DISPBASE(DVSSURF(pipe), 0); + POSTING_READ(DVSSURF(pipe)); +} + +static void +intel_enable_primary(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int reg = DSPCNTR(intel_crtc->plane); + + if (!intel_crtc->primary_disabled) + return; + + intel_crtc->primary_disabled = false; + intel_update_fbc(dev); + + I915_WRITE(reg, I915_READ(reg) | DISPLAY_PLANE_ENABLE); +} + +static void +intel_disable_primary(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int reg = DSPCNTR(intel_crtc->plane); + + if (intel_crtc->primary_disabled) + return; + + I915_WRITE(reg, I915_READ(reg) & ~DISPLAY_PLANE_ENABLE); + + intel_crtc->primary_disabled = true; + intel_update_fbc(dev); +} + +static int +ilk_update_colorkey(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 dvscntr; + int ret = 0; + + intel_plane = to_intel_plane(plane); + + I915_WRITE(DVSKEYVAL(intel_plane->pipe), key->min_value); + I915_WRITE(DVSKEYMAX(intel_plane->pipe), key->max_value); + I915_WRITE(DVSKEYMSK(intel_plane->pipe), key->channel_mask); + + dvscntr = I915_READ(DVSCNTR(intel_plane->pipe)); + dvscntr &= ~(DVS_SOURCE_KEY | DVS_DEST_KEY); + if (key->flags & I915_SET_COLORKEY_DESTINATION) + dvscntr |= DVS_DEST_KEY; + else if (key->flags & I915_SET_COLORKEY_SOURCE) + dvscntr |= DVS_SOURCE_KEY; + I915_WRITE(DVSCNTR(intel_plane->pipe), dvscntr); + + POSTING_READ(DVSKEYMSK(intel_plane->pipe)); + + return ret; +} + +static void +ilk_get_colorkey(struct drm_plane *plane, struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 dvscntr; + + intel_plane = to_intel_plane(plane); + + key->min_value = I915_READ(DVSKEYVAL(intel_plane->pipe)); + key->max_value = I915_READ(DVSKEYMAX(intel_plane->pipe)); + key->channel_mask = I915_READ(DVSKEYMSK(intel_plane->pipe)); + key->flags = 0; + + dvscntr = I915_READ(DVSCNTR(intel_plane->pipe)); + + if (dvscntr & DVS_DEST_KEY) + key->flags = I915_SET_COLORKEY_DESTINATION; + else if (dvscntr & DVS_SOURCE_KEY) + key->flags = I915_SET_COLORKEY_SOURCE; + else + key->flags = I915_SET_COLORKEY_NONE; +} + +static int +intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, + struct drm_framebuffer *fb, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t src_x, uint32_t src_y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_plane *intel_plane = to_intel_plane(plane); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj, *old_obj; + int pipe = intel_plane->pipe; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int ret = 0; + int x = src_x >> 16, y = src_y >> 16; + int primary_w = crtc->mode.hdisplay, primary_h = crtc->mode.vdisplay; + bool disable_primary = false; + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + old_obj = intel_plane->obj; + + src_w = src_w >> 16; + src_h = src_h >> 16; + + /* Pipe must be running... */ + if (!(I915_READ(PIPECONF(cpu_transcoder)) & PIPECONF_ENABLE)) + return -EINVAL; + + if (crtc_x >= primary_w || crtc_y >= primary_h) + return -EINVAL; + + /* Don't modify another pipe's plane */ + if (intel_plane->pipe != intel_crtc->pipe) + return -EINVAL; + + /* Sprite planes can be linear or x-tiled surfaces */ + switch (obj->tiling_mode) { + case I915_TILING_NONE: + case I915_TILING_X: + break; + default: + return -EINVAL; + } + + /* + * Clamp the width & height into the visible area. Note we don't + * try to scale the source if part of the visible region is offscreen. + * The caller must handle that by adjusting source offset and size. + */ + if ((crtc_x < 0) && ((crtc_x + crtc_w) > 0)) { + crtc_w += crtc_x; + crtc_x = 0; + } + if ((crtc_x + crtc_w) <= 0) /* Nothing to display */ + goto out; + if ((crtc_x + crtc_w) > primary_w) + crtc_w = primary_w - crtc_x; + + if ((crtc_y < 0) && ((crtc_y + crtc_h) > 0)) { + crtc_h += crtc_y; + crtc_y = 0; + } + if ((crtc_y + crtc_h) <= 0) /* Nothing to display */ + goto out; + if (crtc_y + crtc_h > primary_h) + crtc_h = primary_h - crtc_y; + + if (!crtc_w || !crtc_h) /* Again, nothing to display */ + goto out; + + /* + * We may not have a scaler, eg. HSW does not have it any more + */ + if (!intel_plane->can_scale && (crtc_w != src_w || crtc_h != src_h)) + return -EINVAL; + + /* + * We can take a larger source and scale it down, but + * only so much... 16x is the max on SNB. + */ + if (((src_w * src_h) / (crtc_w * crtc_h)) > intel_plane->max_downscale) + return -EINVAL; + + /* + * If the sprite is completely covering the primary plane, + * we can disable the primary and save power. + */ + if ((crtc_x == 0) && (crtc_y == 0) && + (crtc_w == primary_w) && (crtc_h == primary_h)) + disable_primary = true; + + mutex_lock(&dev->struct_mutex); + + ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + if (ret) + goto out_unlock; + + intel_plane->obj = obj; + + /* + * Be sure to re-enable the primary before the sprite is no longer + * covering it fully. + */ + if (!disable_primary) + intel_enable_primary(crtc); + + intel_plane->update_plane(plane, fb, obj, crtc_x, crtc_y, + crtc_w, crtc_h, x, y, src_w, src_h); + + if (disable_primary) + intel_disable_primary(crtc); + + /* Unpin old obj after new one is active to avoid ugliness */ + if (old_obj) { + /* + * It's fairly common to simply update the position of + * an existing object. In that case, we don't need to + * wait for vblank to avoid ugliness, we only need to + * do the pin & ref bookkeeping. + */ + if (old_obj != obj) { + mutex_unlock(&dev->struct_mutex); + intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe); + mutex_lock(&dev->struct_mutex); + } + intel_unpin_fb_obj(old_obj); + } + +out_unlock: + mutex_unlock(&dev->struct_mutex); +out: + return ret; +} + +static int +intel_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct intel_plane *intel_plane = to_intel_plane(plane); + int ret = 0; + + if (plane->crtc) + intel_enable_primary(plane->crtc); + intel_plane->disable_plane(plane); + + if (!intel_plane->obj) + goto out; + + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(intel_plane->obj); + intel_plane->obj = NULL; + mutex_unlock(&dev->struct_mutex); +out: + + return ret; +} + +static void intel_destroy_plane(struct drm_plane *plane) +{ + struct intel_plane *intel_plane = to_intel_plane(plane); + intel_disable_plane(plane); + drm_plane_cleanup(plane); + kfree(intel_plane); +} + +int intel_sprite_set_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_sprite_colorkey *set = data; + struct drm_mode_object *obj; + struct drm_plane *plane; + struct intel_plane *intel_plane; + int ret = 0; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + /* Make sure we don't try to enable both src & dest simultaneously */ + if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) + return -EINVAL; + + mutex_lock(&dev->mode_config.mutex); + + obj = drm_mode_object_find(dev, set->plane_id, DRM_MODE_OBJECT_PLANE); + if (!obj) { + ret = -EINVAL; + goto out_unlock; + } + + plane = obj_to_plane(obj); + intel_plane = to_intel_plane(plane); + ret = intel_plane->update_colorkey(plane, set); + +out_unlock: + mutex_unlock(&dev->mode_config.mutex); + return ret; +} + +int intel_sprite_get_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_sprite_colorkey *get = data; + struct drm_mode_object *obj; + struct drm_plane *plane; + struct intel_plane *intel_plane; + int ret = 0; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + mutex_lock(&dev->mode_config.mutex); + + obj = drm_mode_object_find(dev, get->plane_id, DRM_MODE_OBJECT_PLANE); + if (!obj) { + ret = -EINVAL; + goto out_unlock; + } + + plane = obj_to_plane(obj); + intel_plane = to_intel_plane(plane); + intel_plane->get_colorkey(plane, get); + +out_unlock: + mutex_unlock(&dev->mode_config.mutex); + return ret; +} + +static const struct drm_plane_funcs intel_plane_funcs = { + .update_plane = intel_update_plane, + .disable_plane = intel_disable_plane, + .destroy = intel_destroy_plane, +}; + +static uint32_t ilk_plane_formats[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_YUYV, + DRM_FORMAT_YVYU, + DRM_FORMAT_UYVY, + DRM_FORMAT_VYUY, +}; + +static uint32_t snb_plane_formats[] = { + DRM_FORMAT_XBGR8888, + DRM_FORMAT_XRGB8888, + DRM_FORMAT_YUYV, + DRM_FORMAT_YVYU, + DRM_FORMAT_UYVY, + DRM_FORMAT_VYUY, +}; + +int +intel_plane_init(struct drm_device *dev, enum pipe pipe) +{ + struct intel_plane *intel_plane; + unsigned long possible_crtcs; + const uint32_t *plane_formats; + int num_plane_formats; + int ret; + + if (INTEL_INFO(dev)->gen < 5) + return -ENODEV; + + intel_plane = kzalloc(sizeof(struct intel_plane), GFP_KERNEL); + if (!intel_plane) + return -ENOMEM; + + switch (INTEL_INFO(dev)->gen) { + case 5: + case 6: + intel_plane->can_scale = true; + intel_plane->max_downscale = 16; + intel_plane->update_plane = ilk_update_plane; + intel_plane->disable_plane = ilk_disable_plane; + intel_plane->update_colorkey = ilk_update_colorkey; + intel_plane->get_colorkey = ilk_get_colorkey; + + if (IS_GEN6(dev)) { + plane_formats = snb_plane_formats; + num_plane_formats = ARRAY_SIZE(snb_plane_formats); + } else { + plane_formats = ilk_plane_formats; + num_plane_formats = ARRAY_SIZE(ilk_plane_formats); + } + break; + + case 7: + if (IS_HASWELL(dev) || IS_VALLEYVIEW(dev)) + intel_plane->can_scale = false; + else + intel_plane->can_scale = true; + intel_plane->max_downscale = 2; + intel_plane->update_plane = ivb_update_plane; + intel_plane->disable_plane = ivb_disable_plane; + intel_plane->update_colorkey = ivb_update_colorkey; + intel_plane->get_colorkey = ivb_get_colorkey; + + plane_formats = snb_plane_formats; + num_plane_formats = ARRAY_SIZE(snb_plane_formats); + break; + + default: + kfree(intel_plane); + return -ENODEV; + } + + intel_plane->pipe = pipe; + possible_crtcs = (1 << pipe); + ret = drm_plane_init(dev, &intel_plane->base, possible_crtcs, + &intel_plane_funcs, + plane_formats, num_plane_formats, + false); + if (ret) + kfree(intel_plane); + + return ret; +} --- linux-3.5.0.orig/ubuntu/i915/intel_hdmi.c +++ linux-3.5.0/ubuntu/i915/intel_hdmi.c @@ -0,0 +1,1071 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2009 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Jesse Barnes + */ + +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi) +{ + return hdmi_to_dig_port(intel_hdmi)->base.base.dev; +} + +static void +assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi) +{ + struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t enabled_bits; + + enabled_bits = IS_HASWELL(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; + + WARN(I915_READ(intel_hdmi->sdvox_reg) & enabled_bits, + "HDMI port enabled, expecting disabled\n"); +} + +struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = + container_of(encoder, struct intel_digital_port, base.base); + return &intel_dig_port->hdmi; +} + +static struct intel_hdmi *intel_attached_hdmi(struct drm_connector *connector) +{ + return enc_to_intel_hdmi(&intel_attached_encoder(connector)->base); +} + +void intel_dip_infoframe_csum(struct dip_infoframe *frame) +{ + uint8_t *data = (uint8_t *)frame; + uint8_t sum = 0; + unsigned i; + + frame->checksum = 0; + frame->ecc = 0; + + for (i = 0; i < frame->len + DIP_HEADER_SIZE; i++) + sum += data[i]; + + frame->checksum = 0x100 - sum; +} + +static u32 g4x_infoframe_index(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_SELECT_AVI; + case DIP_TYPE_SPD: + return VIDEO_DIP_SELECT_SPD; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 g4x_infoframe_enable(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_ENABLE_AVI; + case DIP_TYPE_SPD: + return VIDEO_DIP_ENABLE_SPD; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 hsw_infoframe_enable(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_ENABLE_AVI_HSW; + case DIP_TYPE_SPD: + return VIDEO_DIP_ENABLE_SPD_HSW; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 hsw_infoframe_data_reg(struct dip_infoframe *frame, enum pipe pipe) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return HSW_TVIDEO_DIP_AVI_DATA(pipe); + case DIP_TYPE_SPD: + return HSW_TVIDEO_DIP_SPD_DATA(pipe); + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static void g4x_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val = I915_READ(VIDEO_DIP_CTL); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(VIDEO_DIP_CTL, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(VIDEO_DIP_DATA, *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VIDEO_DIP_DATA, 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(VIDEO_DIP_CTL, val); + POSTING_READ(VIDEO_DIP_CTL); +} + +static void ibx_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void cpt_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + /* The DIP control register spec says that we need to update the AVI + * infoframe without clearing its enable bit */ + if (frame->type != DIP_TYPE_AVI) + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void vlv_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void hsw_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 data_reg = hsw_infoframe_data_reg(frame, intel_crtc->pipe); + unsigned int i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(ctl_reg); + + if (data_reg == 0) + return; + + val &= ~hsw_infoframe_enable(frame); + I915_WRITE(ctl_reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(data_reg + i, *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(data_reg + i, 0); + mmiowb(); + + val |= hsw_infoframe_enable(frame); + I915_WRITE(ctl_reg, val); + POSTING_READ(ctl_reg); +} + +static void intel_set_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + intel_dip_infoframe_csum(frame); + intel_hdmi->write_infoframe(encoder, frame); +} + +static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct dip_infoframe avi_if = { + .type = DIP_TYPE_AVI, + .ver = DIP_VERSION_AVI, + .len = DIP_LEN_AVI, + }; + + if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) + avi_if.body.avi.YQ_CN_PR |= DIP_AVI_PR_2; + + intel_set_infoframe(encoder, &avi_if); +} + +static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder) +{ + struct dip_infoframe spd_if; + + memset(&spd_if, 0, sizeof(spd_if)); + spd_if.type = DIP_TYPE_SPD; + spd_if.ver = DIP_VERSION_SPD; + spd_if.len = DIP_LEN_SPD; + strcpy(spd_if.body.spd.vn, "Intel"); + strcpy(spd_if.body.spd.pd, "Integrated gfx"); + spd_if.body.spd.sdi = DIP_SPD_PC; + + intel_set_infoframe(encoder, &spd_if); +} + +static void g4x_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = VIDEO_DIP_CTL; + u32 val = I915_READ(reg); + u32 port; + + assert_hdmi_port_disabled(intel_hdmi); + + /* If the registers were not initialized yet, they might be zeroes, + * which means we're selecting the AVI DIP and we're setting its + * frequency to once. This seems to really confuse the HW and make + * things stop working (the register spec says the AVI always needs to + * be sent every VSync). So here we avoid writing to the register more + * than we need and also explicitly select the AVI DIP and explicitly + * set its frequency to every VSync. Avoiding to write it twice seems to + * be enough to solve the problem, but being defensive shouldn't hurt us + * either. */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + switch (intel_hdmi->sdvox_reg) { + case SDVOB: + port = VIDEO_DIP_PORT_B; + break; + case SDVOC: + port = VIDEO_DIP_PORT_C; + break; + default: + BUG(); + return; + } + + if (port != (val & VIDEO_DIP_PORT_MASK)) { + if (val & VIDEO_DIP_ENABLE) { + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + } + val &= ~VIDEO_DIP_PORT_MASK; + val |= port; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~VIDEO_DIP_ENABLE_VENDOR; + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void ibx_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + u32 port; + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + switch (intel_hdmi->sdvox_reg) { + case HDMIB: + port = VIDEO_DIP_PORT_B; + break; + case HDMIC: + port = VIDEO_DIP_PORT_C; + break; + case HDMID: + port = VIDEO_DIP_PORT_D; + break; + default: + BUG(); + return; + } + + if (port != (val & VIDEO_DIP_PORT_MASK)) { + if (val & VIDEO_DIP_ENABLE) { + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + } + val &= ~VIDEO_DIP_PORT_MASK; + val |= port; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void cpt_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~(VIDEO_DIP_ENABLE | VIDEO_DIP_ENABLE_AVI); + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + /* Set both together, unset both together: see the spec. */ + val |= VIDEO_DIP_ENABLE | VIDEO_DIP_ENABLE_AVI; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void vlv_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void hsw_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = HSW_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + if (!intel_hdmi->has_hdmi_sink) { + I915_WRITE(reg, 0); + POSTING_READ(reg); + return; + } + + val &= ~(VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_GCP_HSW | + VIDEO_DIP_ENABLE_VS_HSW | VIDEO_DIP_ENABLE_GMP_HSW); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void intel_hdmi_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 sdvox; + + sdvox = SDVO_ENCODING_HDMI; + if (!HAS_PCH_SPLIT(dev)) + sdvox |= intel_hdmi->color_range; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + sdvox |= SDVO_VSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + sdvox |= SDVO_HSYNC_ACTIVE_HIGH; + + if (intel_crtc->bpp > 24) + sdvox |= COLOR_FORMAT_12bpc; + else + sdvox |= COLOR_FORMAT_8bpc; + + /* Required on CPT */ + if (intel_hdmi->has_hdmi_sink && HAS_PCH_CPT(dev)) + sdvox |= HDMI_MODE_SELECT; + + if (intel_hdmi->has_audio) { + DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n", + pipe_name(intel_crtc->pipe)); + sdvox |= SDVO_AUDIO_ENABLE; + sdvox |= SDVO_NULL_PACKETS_DURING_VSYNC; + intel_write_eld(encoder, adjusted_mode); + } + + if (HAS_PCH_CPT(dev)) + sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); + else if (intel_crtc->pipe == PIPE_B) + sdvox |= SDVO_PIPE_B_SELECT; + + I915_WRITE(intel_hdmi->sdvox_reg, sdvox); + POSTING_READ(intel_hdmi->sdvox_reg); + + intel_hdmi->set_infoframes(encoder, adjusted_mode); +} + +static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 tmp; + + tmp = I915_READ(intel_hdmi->sdvox_reg); + + if (!(tmp & SDVO_ENABLE)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_enable_hdmi(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 temp; + u32 enable_bits = SDVO_ENABLE; + + if (intel_hdmi->has_audio) + enable_bits |= SDVO_AUDIO_ENABLE; + + temp = I915_READ(intel_hdmi->sdvox_reg); + + /* HW workaround for IBX, we need to move the port to transcoder A + * before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + /* Restore the transcoder select bit. */ + if (pipe == PIPE_B) + enable_bits |= SDVO_PIPE_B_SELECT; + } + + /* HW workaround, need to toggle enable bit off and on for 12bpc, but + * we do this anyway which shows more stable in testing. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->sdvox_reg); + } + + temp |= enable_bits; + + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* HW workaround, need to write this twice for issue that may result + * in first write getting masked. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + } +} + +static void intel_disable_hdmi(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 temp; + u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE; + + temp = I915_READ(intel_hdmi->sdvox_reg); + + /* HW workaround for IBX, we need to move the port to transcoder A + * before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + if (temp & SDVO_PIPE_B_SELECT) { + temp &= ~SDVO_PIPE_B_SELECT; + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* Again we need to write this twice. */ + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* Transcoder selection bits only update + * effectively on vblank. */ + if (crtc) + intel_wait_for_vblank(dev, pipe); + else + msleep(50); + } + } + + /* HW workaround, need to toggle enable bit off and on for 12bpc, but + * we do this anyway which shows more stable in testing. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->sdvox_reg); + } + + temp &= ~enable_bits; + + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* HW workaround, need to write this twice for issue that may result + * in first write getting masked. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + } +} + +static int intel_hdmi_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + if (mode->clock > 165000) + return MODE_CLOCK_HIGH; + if (mode->clock < 20000) + return MODE_CLOCK_LOW; + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + return MODE_OK; +} + +bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + return true; +} + +static bool g4x_hdmi_connected(struct intel_hdmi *intel_hdmi) +{ + struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t bit; + + switch (intel_hdmi->sdvox_reg) { + case SDVOB: + bit = HDMIB_HOTPLUG_LIVE_STATUS; + break; + case SDVOC: + bit = HDMIC_HOTPLUG_LIVE_STATUS; + break; + default: + bit = 0; + break; + } + + return I915_READ(PORT_HOTPLUG_STAT) & bit; +} + +static enum drm_connector_status +intel_hdmi_detect(struct drm_connector *connector, bool force) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct intel_digital_port *intel_dig_port = + hdmi_to_dig_port(intel_hdmi); + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct edid *edid; + enum drm_connector_status status = connector_status_disconnected; + + if (IS_G4X(connector->dev) && !g4x_hdmi_connected(intel_hdmi)) + return status; + + intel_hdmi->has_hdmi_sink = false; + intel_hdmi->has_audio = false; + edid = drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); + + if (edid) { + if (edid->input & DRM_EDID_INPUT_DIGITAL) { + status = connector_status_connected; + if (intel_hdmi->force_audio != HDMI_AUDIO_OFF_DVI) + intel_hdmi->has_hdmi_sink = + drm_detect_hdmi_monitor(edid); + intel_hdmi->has_audio = drm_detect_monitor_audio(edid); + } + kfree(edid); + } + + if (status == connector_status_connected) { + if (intel_hdmi->force_audio != HDMI_AUDIO_AUTO) + intel_hdmi->has_audio = + (intel_hdmi->force_audio == HDMI_AUDIO_ON); + intel_encoder->type = INTEL_OUTPUT_HDMI; + } + + return status; +} + +static int intel_hdmi_get_modes(struct drm_connector *connector) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + /* We should parse the EDID data and find out if it's an HDMI sink so + * we can send audio to it. + */ + + return intel_ddc_get_modes(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); +} + +static bool +intel_hdmi_detect_audio(struct drm_connector *connector) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct edid *edid; + bool has_audio = false; + + edid = drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); + if (edid) { + if (edid->input & DRM_EDID_INPUT_DIGITAL) + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + + return has_audio; +} + +static int +intel_hdmi_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct intel_digital_port *intel_dig_port = + hdmi_to_dig_port(intel_hdmi); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + int ret; + + ret = drm_object_property_set_value(&connector->base, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + enum hdmi_force_audio i = val; + bool has_audio; + + if (i == intel_hdmi->force_audio) + return 0; + + intel_hdmi->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_hdmi_detect_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (i == HDMI_AUDIO_OFF_DVI) + intel_hdmi->has_hdmi_sink = 0; + + intel_hdmi->has_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_hdmi->color_range) + return 0; + + intel_hdmi->color_range = val ? SDVO_COLOR_RANGE_16_235 : 0; + goto done; + } + + return -EINVAL; + +done: + if (intel_dig_port->base.base.crtc) { + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +} + +static void intel_hdmi_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static const struct drm_encoder_helper_funcs intel_hdmi_helper_funcs = { + .mode_fixup = intel_hdmi_mode_fixup, + .mode_set = intel_hdmi_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_hdmi_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_hdmi_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_hdmi_set_property, + .destroy = intel_hdmi_destroy, +}; + +static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = { + .get_modes = intel_hdmi_get_modes, + .mode_valid = intel_hdmi_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_hdmi_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static void +intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) +{ + intel_attach_force_audio_property(connector); + intel_attach_broadcast_rgb_property(connector); +} + +void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector) +{ + struct drm_connector *connector = &intel_connector->base; + struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi; + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = intel_encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_dig_port->port; + + drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, + DRM_MODE_CONNECTOR_HDMIA); + drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); + + connector->polled = DRM_CONNECTOR_POLL_HPD; + connector->interlace_allowed = 1; + connector->doublescan_allowed = 0; + + switch (port) { + case PORT_B: + intel_hdmi->ddc_bus = GMBUS_PORT_DPB; + dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; + break; + case PORT_C: + intel_hdmi->ddc_bus = GMBUS_PORT_DPC; + dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; + break; + case PORT_D: + intel_hdmi->ddc_bus = GMBUS_PORT_DPD; + dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS; + break; + case PORT_A: + /* Internal port only for eDP. */ + default: + BUG(); + } + + if (!HAS_PCH_SPLIT(dev)) { + intel_hdmi->write_infoframe = g4x_write_infoframe; + intel_hdmi->set_infoframes = g4x_set_infoframes; + } else if (IS_VALLEYVIEW(dev)) { + intel_hdmi->write_infoframe = vlv_write_infoframe; + intel_hdmi->set_infoframes = vlv_set_infoframes; + } else if (IS_HASWELL(dev)) { + intel_hdmi->write_infoframe = hsw_write_infoframe; + intel_hdmi->set_infoframes = hsw_set_infoframes; + } else if (HAS_PCH_IBX(dev)) { + intel_hdmi->write_infoframe = ibx_write_infoframe; + intel_hdmi->set_infoframes = ibx_set_infoframes; + } else { + intel_hdmi->write_infoframe = cpt_write_infoframe; + intel_hdmi->set_infoframes = cpt_set_infoframes; + } + + if (IS_HASWELL(dev)) + intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; + else + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_hdmi_add_properties(intel_hdmi, connector); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + drm_sysfs_connector_add(connector); + + /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written + * 0xd. Failure to do so will result in spurious interrupts being + * generated on the port when a cable is not attached. + */ + if (IS_G4X(dev) && !IS_GM45(dev)) { + u32 temp = I915_READ(PEG_BAND_GAP_DATA); + I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); + } +} + +void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port) +{ + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *intel_connector; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dig_port); + return; + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(&intel_encoder->base, &intel_hdmi_helper_funcs); + + intel_encoder->enable = intel_enable_hdmi; + intel_encoder->disable = intel_disable_hdmi; + intel_encoder->get_hw_state = intel_hdmi_get_hw_state; + + intel_encoder->type = INTEL_OUTPUT_HDMI; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + + intel_dig_port->port = port; + intel_dig_port->hdmi.sdvox_reg = sdvox_reg; + intel_dig_port->dp.output_reg = 0; + + intel_hdmi_init_connector(intel_dig_port, intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/dvo_sil164.c +++ linux-3.5.0/ubuntu/i915/dvo_sil164.c @@ -0,0 +1,279 @@ +/************************************************************************** + +Copyright © 2006 Dave Airlie + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +#include "dvo.h" + +#define SIL164_VID 0x0001 +#define SIL164_DID 0x0006 + +#define SIL164_VID_LO 0x00 +#define SIL164_VID_HI 0x01 +#define SIL164_DID_LO 0x02 +#define SIL164_DID_HI 0x03 +#define SIL164_REV 0x04 +#define SIL164_RSVD 0x05 +#define SIL164_FREQ_LO 0x06 +#define SIL164_FREQ_HI 0x07 + +#define SIL164_REG8 0x08 +#define SIL164_8_VEN (1<<5) +#define SIL164_8_HEN (1<<4) +#define SIL164_8_DSEL (1<<3) +#define SIL164_8_BSEL (1<<2) +#define SIL164_8_EDGE (1<<1) +#define SIL164_8_PD (1<<0) + +#define SIL164_REG9 0x09 +#define SIL164_9_VLOW (1<<7) +#define SIL164_9_MSEL_MASK (0x7<<4) +#define SIL164_9_TSEL (1<<3) +#define SIL164_9_RSEN (1<<2) +#define SIL164_9_HTPLG (1<<1) +#define SIL164_9_MDI (1<<0) + +#define SIL164_REGC 0x0c + +struct sil164_priv { + //I2CDevRec d; + bool quiet; +}; + +#define SILPTR(d) ((SIL164Ptr)(d->DriverPrivate.ptr)) + +static bool sil164_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct sil164_priv *sil = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!sil->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +static bool sil164_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct sil164_priv *sil = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!sil->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/* Silicon Image 164 driver for chip on i2c bus */ +static bool sil164_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the SIL164 chip on the specified i2c bus */ + struct sil164_priv *sil; + unsigned char ch; + + sil = kzalloc(sizeof(struct sil164_priv), GFP_KERNEL); + if (sil == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = sil; + sil->quiet = true; + + if (!sil164_readb(dvo, SIL164_VID_LO, &ch)) + goto out; + + if (ch != (SIL164_VID & 0xff)) { + DRM_DEBUG_KMS("sil164 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + + if (!sil164_readb(dvo, SIL164_DID_LO, &ch)) + goto out; + + if (ch != (SIL164_DID & 0xff)) { + DRM_DEBUG_KMS("sil164 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + sil->quiet = false; + + DRM_DEBUG_KMS("init sil164 dvo controller successfully!\n"); + return true; + +out: + kfree(sil); + return false; +} + +static enum drm_connector_status sil164_detect(struct intel_dvo_device *dvo) +{ + uint8_t reg9; + + sil164_readb(dvo, SIL164_REG9, ®9); + + if (reg9 & SIL164_9_HTPLG) + return connector_status_connected; + else + return connector_status_disconnected; +} + +static enum drm_mode_status sil164_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + return MODE_OK; +} + +static void sil164_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* As long as the basics are set up, since we don't have clock + * dependencies in the mode setup, we can just leave the + * registers alone and everything will work fine. + */ + /* recommended programming sequence from doc */ + /*sil164_writeb(sil, 0x08, 0x30); + sil164_writeb(sil, 0x09, 0x00); + sil164_writeb(sil, 0x0a, 0x90); + sil164_writeb(sil, 0x0c, 0x89); + sil164_writeb(sil, 0x08, 0x31);*/ + /* don't do much */ + return; +} + +/* set the SIL164 power state */ +static void sil164_dpms(struct intel_dvo_device *dvo, bool enable) +{ + int ret; + unsigned char ch; + + ret = sil164_readb(dvo, SIL164_REG8, &ch); + if (ret == false) + return; + + if (enable) + ch |= SIL164_8_PD; + else + ch &= ~SIL164_8_PD; + + sil164_writeb(dvo, SIL164_REG8, ch); + return; +} + +static bool sil164_get_hw_state(struct intel_dvo_device *dvo) +{ + int ret; + unsigned char ch; + + ret = sil164_readb(dvo, SIL164_REG8, &ch); + if (ret == false) + return false; + + if (ch & SIL164_8_PD) + return true; + else + return false; +} + +static void sil164_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + + sil164_readb(dvo, SIL164_FREQ_LO, &val); + DRM_LOG_KMS("SIL164_FREQ_LO: 0x%02x\n", val); + sil164_readb(dvo, SIL164_FREQ_HI, &val); + DRM_LOG_KMS("SIL164_FREQ_HI: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REG8, &val); + DRM_LOG_KMS("SIL164_REG8: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REG9, &val); + DRM_LOG_KMS("SIL164_REG9: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REGC, &val); + DRM_LOG_KMS("SIL164_REGC: 0x%02x\n", val); +} + +static void sil164_destroy(struct intel_dvo_device *dvo) +{ + struct sil164_priv *sil = dvo->dev_priv; + + if (sil) { + kfree(sil); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops sil164_ops = { + .init = sil164_init, + .detect = sil164_detect, + .mode_valid = sil164_mode_valid, + .mode_set = sil164_mode_set, + .dpms = sil164_dpms, + .get_hw_state = sil164_get_hw_state, + .dump_regs = sil164_dump_regs, + .destroy = sil164_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/intel_tv.c +++ linux-3.5.0/ubuntu/i915/intel_tv.c @@ -0,0 +1,1673 @@ +/* + * Copyright © 2006-2008 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +/** @file + * Integrated TV-out support for the 915GM and 945GM. + */ + +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +enum tv_margin { + TV_MARGIN_LEFT, TV_MARGIN_TOP, + TV_MARGIN_RIGHT, TV_MARGIN_BOTTOM +}; + +/** Private structure for the integrated TV support */ +struct intel_tv { + struct intel_encoder base; + + int type; + const char *tv_format; + int margin[4]; + u32 save_TV_H_CTL_1; + u32 save_TV_H_CTL_2; + u32 save_TV_H_CTL_3; + u32 save_TV_V_CTL_1; + u32 save_TV_V_CTL_2; + u32 save_TV_V_CTL_3; + u32 save_TV_V_CTL_4; + u32 save_TV_V_CTL_5; + u32 save_TV_V_CTL_6; + u32 save_TV_V_CTL_7; + u32 save_TV_SC_CTL_1, save_TV_SC_CTL_2, save_TV_SC_CTL_3; + + u32 save_TV_CSC_Y; + u32 save_TV_CSC_Y2; + u32 save_TV_CSC_U; + u32 save_TV_CSC_U2; + u32 save_TV_CSC_V; + u32 save_TV_CSC_V2; + u32 save_TV_CLR_KNOBS; + u32 save_TV_CLR_LEVEL; + u32 save_TV_WIN_POS; + u32 save_TV_WIN_SIZE; + u32 save_TV_FILTER_CTL_1; + u32 save_TV_FILTER_CTL_2; + u32 save_TV_FILTER_CTL_3; + + u32 save_TV_H_LUMA[60]; + u32 save_TV_H_CHROMA[60]; + u32 save_TV_V_LUMA[43]; + u32 save_TV_V_CHROMA[43]; + + u32 save_TV_DAC; + u32 save_TV_CTL; +}; + +struct video_levels { + int blank, black, burst; +}; + +struct color_conversion { + u16 ry, gy, by, ay; + u16 ru, gu, bu, au; + u16 rv, gv, bv, av; +}; + +static const u32 filter_table[] = { + 0xB1403000, 0x2E203500, 0x35002E20, 0x3000B140, + 0x35A0B160, 0x2DC02E80, 0xB1403480, 0xB1603000, + 0x2EA03640, 0x34002D80, 0x3000B120, 0x36E0B160, + 0x2D202EF0, 0xB1203380, 0xB1603000, 0x2F303780, + 0x33002CC0, 0x3000B100, 0x3820B160, 0x2C802F50, + 0xB10032A0, 0xB1603000, 0x2F9038C0, 0x32202C20, + 0x3000B0E0, 0x3980B160, 0x2BC02FC0, 0xB0E031C0, + 0xB1603000, 0x2FF03A20, 0x31602B60, 0xB020B0C0, + 0x3AE0B160, 0x2B001810, 0xB0C03120, 0xB140B020, + 0x18283BA0, 0x30C02A80, 0xB020B0A0, 0x3C60B140, + 0x2A201838, 0xB0A03080, 0xB120B020, 0x18383D20, + 0x304029C0, 0xB040B080, 0x3DE0B100, 0x29601848, + 0xB0803000, 0xB100B040, 0x18483EC0, 0xB0402900, + 0xB040B060, 0x3F80B0C0, 0x28801858, 0xB060B080, + 0xB0A0B060, 0x18602820, 0xB0A02820, 0x0000B060, + 0xB1403000, 0x2E203500, 0x35002E20, 0x3000B140, + 0x35A0B160, 0x2DC02E80, 0xB1403480, 0xB1603000, + 0x2EA03640, 0x34002D80, 0x3000B120, 0x36E0B160, + 0x2D202EF0, 0xB1203380, 0xB1603000, 0x2F303780, + 0x33002CC0, 0x3000B100, 0x3820B160, 0x2C802F50, + 0xB10032A0, 0xB1603000, 0x2F9038C0, 0x32202C20, + 0x3000B0E0, 0x3980B160, 0x2BC02FC0, 0xB0E031C0, + 0xB1603000, 0x2FF03A20, 0x31602B60, 0xB020B0C0, + 0x3AE0B160, 0x2B001810, 0xB0C03120, 0xB140B020, + 0x18283BA0, 0x30C02A80, 0xB020B0A0, 0x3C60B140, + 0x2A201838, 0xB0A03080, 0xB120B020, 0x18383D20, + 0x304029C0, 0xB040B080, 0x3DE0B100, 0x29601848, + 0xB0803000, 0xB100B040, 0x18483EC0, 0xB0402900, + 0xB040B060, 0x3F80B0C0, 0x28801858, 0xB060B080, + 0xB0A0B060, 0x18602820, 0xB0A02820, 0x0000B060, + 0x36403000, 0x2D002CC0, 0x30003640, 0x2D0036C0, + 0x35C02CC0, 0x37403000, 0x2C802D40, 0x30003540, + 0x2D8037C0, 0x34C02C40, 0x38403000, 0x2BC02E00, + 0x30003440, 0x2E2038C0, 0x34002B80, 0x39803000, + 0x2B402E40, 0x30003380, 0x2E603A00, 0x33402B00, + 0x3A803040, 0x2A802EA0, 0x30403300, 0x2EC03B40, + 0x32802A40, 0x3C003040, 0x2A002EC0, 0x30803240, + 0x2EC03C80, 0x320029C0, 0x3D403080, 0x29402F00, + 0x308031C0, 0x2F203DC0, 0x31802900, 0x3E8030C0, + 0x28802F40, 0x30C03140, 0x2F203F40, 0x31402840, + 0x28003100, 0x28002F00, 0x00003100, 0x36403000, + 0x2D002CC0, 0x30003640, 0x2D0036C0, + 0x35C02CC0, 0x37403000, 0x2C802D40, 0x30003540, + 0x2D8037C0, 0x34C02C40, 0x38403000, 0x2BC02E00, + 0x30003440, 0x2E2038C0, 0x34002B80, 0x39803000, + 0x2B402E40, 0x30003380, 0x2E603A00, 0x33402B00, + 0x3A803040, 0x2A802EA0, 0x30403300, 0x2EC03B40, + 0x32802A40, 0x3C003040, 0x2A002EC0, 0x30803240, + 0x2EC03C80, 0x320029C0, 0x3D403080, 0x29402F00, + 0x308031C0, 0x2F203DC0, 0x31802900, 0x3E8030C0, + 0x28802F40, 0x30C03140, 0x2F203F40, 0x31402840, + 0x28003100, 0x28002F00, 0x00003100, +}; + +/* + * Color conversion values have 3 separate fixed point formats: + * + * 10 bit fields (ay, au) + * 1.9 fixed point (b.bbbbbbbbb) + * 11 bit fields (ry, by, ru, gu, gv) + * exp.mantissa (ee.mmmmmmmmm) + * ee = 00 = 10^-1 (0.mmmmmmmmm) + * ee = 01 = 10^-2 (0.0mmmmmmmmm) + * ee = 10 = 10^-3 (0.00mmmmmmmmm) + * ee = 11 = 10^-4 (0.000mmmmmmmmm) + * 12 bit fields (gy, rv, bu) + * exp.mantissa (eee.mmmmmmmmm) + * eee = 000 = 10^-1 (0.mmmmmmmmm) + * eee = 001 = 10^-2 (0.0mmmmmmmmm) + * eee = 010 = 10^-3 (0.00mmmmmmmmm) + * eee = 011 = 10^-4 (0.000mmmmmmmmm) + * eee = 100 = reserved + * eee = 101 = reserved + * eee = 110 = reserved + * eee = 111 = 10^0 (m.mmmmmmmm) (only usable for 1.0 representation) + * + * Saturation and contrast are 8 bits, with their own representation: + * 8 bit field (saturation, contrast) + * exp.mantissa (ee.mmmmmm) + * ee = 00 = 10^-1 (0.mmmmmm) + * ee = 01 = 10^0 (m.mmmmm) + * ee = 10 = 10^1 (mm.mmmm) + * ee = 11 = 10^2 (mmm.mmm) + * + * Simple conversion function: + * + * static u32 + * float_to_csc_11(float f) + * { + * u32 exp; + * u32 mant; + * u32 ret; + * + * if (f < 0) + * f = -f; + * + * if (f >= 1) { + * exp = 0x7; + * mant = 1 << 8; + * } else { + * for (exp = 0; exp < 3 && f < 0.5; exp++) + * f *= 2.0; + * mant = (f * (1 << 9) + 0.5); + * if (mant >= (1 << 9)) + * mant = (1 << 9) - 1; + * } + * ret = (exp << 9) | mant; + * return ret; + * } + */ + +/* + * Behold, magic numbers! If we plant them they might grow a big + * s-video cable to the sky... or something. + * + * Pre-converted to appropriate hex value. + */ + +/* + * PAL & NTSC values for composite & s-video connections + */ +static const struct color_conversion ntsc_m_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels ntsc_m_levels_composite = { + .blank = 225, .black = 267, .burst = 113, +}; + +static const struct color_conversion ntsc_m_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels ntsc_m_levels_svideo = { + .blank = 266, .black = 316, .burst = 133, +}; + +static const struct color_conversion ntsc_j_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0119, + .ru = 0x074c, .gu = 0x0546, .bu = 0x05ec, .au = 0x0200, + .rv = 0x035a, .gv = 0x0322, .bv = 0x06e1, .av = 0x0200, +}; + +static const struct video_levels ntsc_j_levels_composite = { + .blank = 225, .black = 225, .burst = 113, +}; + +static const struct color_conversion ntsc_j_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x014c, + .ru = 0x0788, .gu = 0x0581, .bu = 0x0322, .au = 0x0200, + .rv = 0x0399, .gv = 0x0356, .bv = 0x070a, .av = 0x0200, +}; + +static const struct video_levels ntsc_j_levels_svideo = { + .blank = 266, .black = 266, .burst = 133, +}; + +static const struct color_conversion pal_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0113, + .ru = 0x0745, .gu = 0x053f, .bu = 0x05e1, .au = 0x0200, + .rv = 0x0353, .gv = 0x031c, .bv = 0x06dc, .av = 0x0200, +}; + +static const struct video_levels pal_levels_composite = { + .blank = 237, .black = 237, .burst = 118, +}; + +static const struct color_conversion pal_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0145, + .ru = 0x0780, .gu = 0x0579, .bu = 0x031c, .au = 0x0200, + .rv = 0x0390, .gv = 0x034f, .bv = 0x0705, .av = 0x0200, +}; + +static const struct video_levels pal_levels_svideo = { + .blank = 280, .black = 280, .burst = 139, +}; + +static const struct color_conversion pal_m_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels pal_m_levels_composite = { + .blank = 225, .black = 267, .burst = 113, +}; + +static const struct color_conversion pal_m_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels pal_m_levels_svideo = { + .blank = 266, .black = 316, .burst = 133, +}; + +static const struct color_conversion pal_n_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels pal_n_levels_composite = { + .blank = 225, .black = 267, .burst = 118, +}; + +static const struct color_conversion pal_n_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels pal_n_levels_svideo = { + .blank = 266, .black = 316, .burst = 139, +}; + +/* + * Component connections + */ +static const struct color_conversion sdtv_csc_yprpb = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0145, + .ru = 0x0559, .gu = 0x0353, .bu = 0x0100, .au = 0x0200, + .rv = 0x0100, .gv = 0x03ad, .bv = 0x074d, .av = 0x0200, +}; + +static const struct color_conversion sdtv_csc_rgb = { + .ry = 0x0000, .gy = 0x0f00, .by = 0x0000, .ay = 0x0166, + .ru = 0x0000, .gu = 0x0000, .bu = 0x0f00, .au = 0x0166, + .rv = 0x0f00, .gv = 0x0000, .bv = 0x0000, .av = 0x0166, +}; + +static const struct color_conversion hdtv_csc_yprpb = { + .ry = 0x05b3, .gy = 0x016e, .by = 0x0728, .ay = 0x0145, + .ru = 0x07d5, .gu = 0x038b, .bu = 0x0100, .au = 0x0200, + .rv = 0x0100, .gv = 0x03d1, .bv = 0x06bc, .av = 0x0200, +}; + +static const struct color_conversion hdtv_csc_rgb = { + .ry = 0x0000, .gy = 0x0f00, .by = 0x0000, .ay = 0x0166, + .ru = 0x0000, .gu = 0x0000, .bu = 0x0f00, .au = 0x0166, + .rv = 0x0f00, .gv = 0x0000, .bv = 0x0000, .av = 0x0166, +}; + +static const struct video_levels component_levels = { + .blank = 279, .black = 279, .burst = 0, +}; + + +struct tv_mode { + const char *name; + int clock; + int refresh; /* in millihertz (for precision) */ + u32 oversample; + int hsync_end, hblank_start, hblank_end, htotal; + bool progressive, trilevel_sync, component_only; + int vsync_start_f1, vsync_start_f2, vsync_len; + bool veq_ena; + int veq_start_f1, veq_start_f2, veq_len; + int vi_end_f1, vi_end_f2, nbr_end; + bool burst_ena; + int hburst_start, hburst_len; + int vburst_start_f1, vburst_end_f1; + int vburst_start_f2, vburst_end_f2; + int vburst_start_f3, vburst_end_f3; + int vburst_start_f4, vburst_end_f4; + /* + * subcarrier programming + */ + int dda2_size, dda3_size, dda1_inc, dda2_inc, dda3_inc; + u32 sc_reset; + bool pal_burst; + /* + * blank/black levels + */ + const struct video_levels *composite_levels, *svideo_levels; + const struct color_conversion *composite_color, *svideo_color; + const u32 *filter_table; + int max_srcw; +}; + + +/* + * Sub carrier DDA + * + * I think this works as follows: + * + * subcarrier freq = pixel_clock * (dda1_inc + dda2_inc / dda2_size) / 4096 + * + * Presumably, when dda3 is added in, it gets to adjust the dda2_inc value + * + * So, + * dda1_ideal = subcarrier/pixel * 4096 + * dda1_inc = floor (dda1_ideal) + * dda2 = dda1_ideal - dda1_inc + * + * then pick a ratio for dda2 that gives the closest approximation. If + * you can't get close enough, you can play with dda3 as well. This + * seems likely to happen when dda2 is small as the jumps would be larger + * + * To invert this, + * + * pixel_clock = subcarrier * 4096 / (dda1_inc + dda2_inc / dda2_size) + * + * The constants below were all computed using a 107.520MHz clock + */ + +/** + * Register programming values for TV modes. + * + * These values account for -1s required. + */ + +static const struct tv_mode tv_modes[] = { + { + .name = "NTSC-M", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_4, + .pal_burst = false, + + .composite_levels = &ntsc_m_levels_composite, + .composite_color = &ntsc_m_csc_composite, + .svideo_levels = &ntsc_m_levels_svideo, + .svideo_color = &ntsc_m_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "NTSC-443", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 4.43MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 168, + .dda2_inc = 4093, .dda2_size = 27456, + .dda3_inc = 310, .dda3_size = 525, + .sc_reset = TV_SC_RESET_NEVER, + .pal_burst = false, + + .composite_levels = &ntsc_m_levels_composite, + .composite_color = &ntsc_m_csc_composite, + .svideo_levels = &ntsc_m_levels_svideo, + .svideo_color = &ntsc_m_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "NTSC-J", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_4, + .pal_burst = false, + + .composite_levels = &ntsc_j_levels_composite, + .composite_color = &ntsc_j_csc_composite, + .svideo_levels = &ntsc_j_levels_svideo, + .svideo_color = &ntsc_j_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "PAL-M", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 16704, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_m_levels_composite, + .composite_color = &pal_m_csc_composite, + .svideo_levels = &pal_m_levels_svideo, + .svideo_color = &pal_m_csc_svideo, + + .filter_table = filter_table, + }, + { + /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ + .name = "PAL-N", + .clock = 108000, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + .hsync_end = 64, .hblank_end = 128, + .hblank_start = 844, .htotal = 863, + + .progressive = false, .trilevel_sync = false, + + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 24, .vi_end_f2 = 25, + .nbr_end = 286, + + .burst_ena = true, + .hburst_start = 73, .hburst_len = 34, + .vburst_start_f1 = 8, .vburst_end_f1 = 285, + .vburst_start_f2 = 8, .vburst_end_f2 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f4 = 9, .vburst_end_f4 = 285, + + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 23578, .dda2_size = 27648, + .dda3_inc = 134, .dda3_size = 625, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_n_levels_composite, + .composite_color = &pal_n_csc_composite, + .svideo_levels = &pal_n_levels_svideo, + .svideo_color = &pal_n_csc_svideo, + + .filter_table = filter_table, + }, + { + /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ + .name = "PAL", + .clock = 108000, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + .hsync_end = 64, .hblank_end = 142, + .hblank_start = 844, .htotal = 863, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 5, .vsync_start_f2 = 6, + .vsync_len = 5, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 15, + + .vi_end_f1 = 24, .vi_end_f2 = 25, + .nbr_end = 286, + + .burst_ena = true, + .hburst_start = 73, .hburst_len = 32, + .vburst_start_f1 = 8, .vburst_end_f1 = 285, + .vburst_start_f2 = 8, .vburst_end_f2 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f4 = 9, .vburst_end_f4 = 285, + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 168, + .dda2_inc = 4122, .dda2_size = 27648, + .dda3_inc = 67, .dda3_size = 625, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_levels_composite, + .composite_color = &pal_csc_composite, + .svideo_levels = &pal_levels_svideo, + .svideo_color = &pal_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "480p", + .clock = 107520, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_4X, + .component_only = 1, + + .hsync_end = 64, .hblank_end = 122, + .hblank_start = 842, .htotal = 857, + + .progressive = true, .trilevel_sync = false, + + .vsync_start_f1 = 12, .vsync_start_f2 = 12, + .vsync_len = 12, + + .veq_ena = false, + + .vi_end_f1 = 44, .vi_end_f2 = 44, + .nbr_end = 479, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "576p", + .clock = 107520, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_4X, + .component_only = 1, + + .hsync_end = 64, .hblank_end = 139, + .hblank_start = 859, .htotal = 863, + + .progressive = true, .trilevel_sync = false, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 48, .vi_end_f2 = 48, + .nbr_end = 575, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "720p@60Hz", + .clock = 148800, + .refresh = 60000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 80, .hblank_end = 300, + .hblank_start = 1580, .htotal = 1649, + + .progressive = true, .trilevel_sync = true, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 29, .vi_end_f2 = 29, + .nbr_end = 719, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "720p@50Hz", + .clock = 148800, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 80, .hblank_end = 300, + .hblank_start = 1580, .htotal = 1979, + + .progressive = true, .trilevel_sync = true, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 29, .vi_end_f2 = 29, + .nbr_end = 719, + + .burst_ena = false, + + .filter_table = filter_table, + .max_srcw = 800 + }, + { + .name = "1080i@50Hz", + .clock = 148800, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 88, .hblank_end = 235, + .hblank_start = 2155, .htotal = 2639, + + .progressive = false, .trilevel_sync = true, + + .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_len = 10, + + .veq_ena = true, .veq_start_f1 = 4, + .veq_start_f2 = 4, .veq_len = 10, + + + .vi_end_f1 = 21, .vi_end_f2 = 22, + .nbr_end = 539, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "1080i@60Hz", + .clock = 148800, + .refresh = 60000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 88, .hblank_end = 235, + .hblank_start = 2155, .htotal = 2199, + + .progressive = false, .trilevel_sync = true, + + .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_len = 10, + + .veq_ena = true, .veq_start_f1 = 4, + .veq_start_f2 = 4, .veq_len = 10, + + + .vi_end_f1 = 21, .vi_end_f2 = 22, + .nbr_end = 539, + + .burst_ena = false, + + .filter_table = filter_table, + }, +}; + +static struct intel_tv *enc_to_intel_tv(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_tv, base.base); +} + +static struct intel_tv *intel_attached_tv(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_tv, + base); +} + +static bool +intel_tv_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ(TV_CTL); + + if (!(tmp & TV_ENC_ENABLE)) + return false; + + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void +intel_enable_tv(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(TV_CTL, I915_READ(TV_CTL) | TV_ENC_ENABLE); +} + +static void +intel_disable_tv(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(TV_CTL, I915_READ(TV_CTL) & ~TV_ENC_ENABLE); +} + +static const struct tv_mode * +intel_tv_mode_lookup(const char *tv_format) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { + const struct tv_mode *tv_mode = &tv_modes[i]; + + if (!strcmp(tv_format, tv_mode->name)) + return tv_mode; + } + return NULL; +} + +static const struct tv_mode * +intel_tv_mode_find(struct intel_tv *intel_tv) +{ + return intel_tv_mode_lookup(intel_tv->tv_format); +} + +static enum drm_mode_status +intel_tv_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + /* Ensure TV refresh is close to desired refresh */ + if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) + < 1000) + return MODE_OK; + + return MODE_CLOCK_RANGE; +} + + +static bool +intel_tv_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_tv *intel_tv = enc_to_intel_tv(encoder); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + if (!tv_mode) + return false; + + if (intel_encoder_check_is_cloned(&intel_tv->base)) + return false; + + adjusted_mode->clock = tv_mode->clock; + return true; +} + +static void +intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_tv *intel_tv = enc_to_intel_tv(encoder); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + u32 tv_ctl; + u32 hctl1, hctl2, hctl3; + u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; + u32 scctl1, scctl2, scctl3; + int i, j; + const struct video_levels *video_levels; + const struct color_conversion *color_conversion; + bool burst_ena; + int pipe = intel_crtc->pipe; + + if (!tv_mode) + return; /* can't happen (mode_prepare prevents this) */ + + tv_ctl = I915_READ(TV_CTL); + tv_ctl &= TV_CTL_SAVE; + + switch (intel_tv->type) { + default: + case DRM_MODE_CONNECTOR_Unknown: + case DRM_MODE_CONNECTOR_Composite: + tv_ctl |= TV_ENC_OUTPUT_COMPOSITE; + video_levels = tv_mode->composite_levels; + color_conversion = tv_mode->composite_color; + burst_ena = tv_mode->burst_ena; + break; + case DRM_MODE_CONNECTOR_Component: + tv_ctl |= TV_ENC_OUTPUT_COMPONENT; + video_levels = &component_levels; + if (tv_mode->burst_ena) + color_conversion = &sdtv_csc_yprpb; + else + color_conversion = &hdtv_csc_yprpb; + burst_ena = false; + break; + case DRM_MODE_CONNECTOR_SVIDEO: + tv_ctl |= TV_ENC_OUTPUT_SVIDEO; + video_levels = tv_mode->svideo_levels; + color_conversion = tv_mode->svideo_color; + burst_ena = tv_mode->burst_ena; + break; + } + hctl1 = (tv_mode->hsync_end << TV_HSYNC_END_SHIFT) | + (tv_mode->htotal << TV_HTOTAL_SHIFT); + + hctl2 = (tv_mode->hburst_start << 16) | + (tv_mode->hburst_len << TV_HBURST_LEN_SHIFT); + + if (burst_ena) + hctl2 |= TV_BURST_ENA; + + hctl3 = (tv_mode->hblank_start << TV_HBLANK_START_SHIFT) | + (tv_mode->hblank_end << TV_HBLANK_END_SHIFT); + + vctl1 = (tv_mode->nbr_end << TV_NBR_END_SHIFT) | + (tv_mode->vi_end_f1 << TV_VI_END_F1_SHIFT) | + (tv_mode->vi_end_f2 << TV_VI_END_F2_SHIFT); + + vctl2 = (tv_mode->vsync_len << TV_VSYNC_LEN_SHIFT) | + (tv_mode->vsync_start_f1 << TV_VSYNC_START_F1_SHIFT) | + (tv_mode->vsync_start_f2 << TV_VSYNC_START_F2_SHIFT); + + vctl3 = (tv_mode->veq_len << TV_VEQ_LEN_SHIFT) | + (tv_mode->veq_start_f1 << TV_VEQ_START_F1_SHIFT) | + (tv_mode->veq_start_f2 << TV_VEQ_START_F2_SHIFT); + + if (tv_mode->veq_ena) + vctl3 |= TV_EQUAL_ENA; + + vctl4 = (tv_mode->vburst_start_f1 << TV_VBURST_START_F1_SHIFT) | + (tv_mode->vburst_end_f1 << TV_VBURST_END_F1_SHIFT); + + vctl5 = (tv_mode->vburst_start_f2 << TV_VBURST_START_F2_SHIFT) | + (tv_mode->vburst_end_f2 << TV_VBURST_END_F2_SHIFT); + + vctl6 = (tv_mode->vburst_start_f3 << TV_VBURST_START_F3_SHIFT) | + (tv_mode->vburst_end_f3 << TV_VBURST_END_F3_SHIFT); + + vctl7 = (tv_mode->vburst_start_f4 << TV_VBURST_START_F4_SHIFT) | + (tv_mode->vburst_end_f4 << TV_VBURST_END_F4_SHIFT); + + if (intel_crtc->pipe == 1) + tv_ctl |= TV_ENC_PIPEB_SELECT; + tv_ctl |= tv_mode->oversample; + + if (tv_mode->progressive) + tv_ctl |= TV_PROGRESSIVE; + if (tv_mode->trilevel_sync) + tv_ctl |= TV_TRILEVEL_SYNC; + if (tv_mode->pal_burst) + tv_ctl |= TV_PAL_BURST; + + scctl1 = 0; + if (tv_mode->dda1_inc) + scctl1 |= TV_SC_DDA1_EN; + if (tv_mode->dda2_inc) + scctl1 |= TV_SC_DDA2_EN; + if (tv_mode->dda3_inc) + scctl1 |= TV_SC_DDA3_EN; + scctl1 |= tv_mode->sc_reset; + if (video_levels) + scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; + scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; + + scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | + tv_mode->dda2_inc << TV_SCDDA2_INC_SHIFT; + + scctl3 = tv_mode->dda3_size << TV_SCDDA3_SIZE_SHIFT | + tv_mode->dda3_inc << TV_SCDDA3_INC_SHIFT; + + /* Enable two fixes for the chips that need them. */ + if (dev->pci_device < 0x2772) + tv_ctl |= TV_ENC_C0_FIX | TV_ENC_SDP_FIX; + + I915_WRITE(TV_H_CTL_1, hctl1); + I915_WRITE(TV_H_CTL_2, hctl2); + I915_WRITE(TV_H_CTL_3, hctl3); + I915_WRITE(TV_V_CTL_1, vctl1); + I915_WRITE(TV_V_CTL_2, vctl2); + I915_WRITE(TV_V_CTL_3, vctl3); + I915_WRITE(TV_V_CTL_4, vctl4); + I915_WRITE(TV_V_CTL_5, vctl5); + I915_WRITE(TV_V_CTL_6, vctl6); + I915_WRITE(TV_V_CTL_7, vctl7); + I915_WRITE(TV_SC_CTL_1, scctl1); + I915_WRITE(TV_SC_CTL_2, scctl2); + I915_WRITE(TV_SC_CTL_3, scctl3); + + if (color_conversion) { + I915_WRITE(TV_CSC_Y, (color_conversion->ry << 16) | + color_conversion->gy); + I915_WRITE(TV_CSC_Y2, (color_conversion->by << 16) | + color_conversion->ay); + I915_WRITE(TV_CSC_U, (color_conversion->ru << 16) | + color_conversion->gu); + I915_WRITE(TV_CSC_U2, (color_conversion->bu << 16) | + color_conversion->au); + I915_WRITE(TV_CSC_V, (color_conversion->rv << 16) | + color_conversion->gv); + I915_WRITE(TV_CSC_V2, (color_conversion->bv << 16) | + color_conversion->av); + } + + if (INTEL_INFO(dev)->gen >= 4) + I915_WRITE(TV_CLR_KNOBS, 0x00404000); + else + I915_WRITE(TV_CLR_KNOBS, 0x00606000); + + if (video_levels) + I915_WRITE(TV_CLR_LEVEL, + ((video_levels->black << TV_BLACK_LEVEL_SHIFT) | + (video_levels->blank << TV_BLANK_LEVEL_SHIFT))); + { + int pipeconf_reg = PIPECONF(pipe); + int dspcntr_reg = DSPCNTR(intel_crtc->plane); + int pipeconf = I915_READ(pipeconf_reg); + int dspcntr = I915_READ(dspcntr_reg); + int xpos = 0x0, ypos = 0x0; + unsigned int xsize, ysize; + /* Pipe must be off here */ + I915_WRITE(dspcntr_reg, dspcntr & ~DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, intel_crtc->plane); + + /* Wait for vblank for the disable to take effect */ + if (IS_GEN2(dev)) + intel_wait_for_vblank(dev, intel_crtc->pipe); + + I915_WRITE(pipeconf_reg, pipeconf & ~PIPECONF_ENABLE); + /* Wait for vblank for the disable to take effect. */ + intel_wait_for_pipe_off(dev, intel_crtc->pipe); + + /* Filter ctl must be set before TV_WIN_SIZE */ + I915_WRITE(TV_FILTER_CTL_1, TV_AUTO_SCALE); + xsize = tv_mode->hblank_start - tv_mode->hblank_end; + if (tv_mode->progressive) + ysize = tv_mode->nbr_end + 1; + else + ysize = 2*tv_mode->nbr_end + 1; + + xpos += intel_tv->margin[TV_MARGIN_LEFT]; + ypos += intel_tv->margin[TV_MARGIN_TOP]; + xsize -= (intel_tv->margin[TV_MARGIN_LEFT] + + intel_tv->margin[TV_MARGIN_RIGHT]); + ysize -= (intel_tv->margin[TV_MARGIN_TOP] + + intel_tv->margin[TV_MARGIN_BOTTOM]); + I915_WRITE(TV_WIN_POS, (xpos<<16)|ypos); + I915_WRITE(TV_WIN_SIZE, (xsize<<16)|ysize); + + I915_WRITE(pipeconf_reg, pipeconf); + I915_WRITE(dspcntr_reg, dspcntr); + intel_flush_display_plane(dev_priv, intel_crtc->plane); + } + + j = 0; + for (i = 0; i < 60; i++) + I915_WRITE(TV_H_LUMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 60; i++) + I915_WRITE(TV_H_CHROMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 43; i++) + I915_WRITE(TV_V_LUMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 43; i++) + I915_WRITE(TV_V_CHROMA_0 + (i<<2), tv_mode->filter_table[j++]); + I915_WRITE(TV_DAC, I915_READ(TV_DAC) & TV_DAC_SAVE); + I915_WRITE(TV_CTL, tv_ctl); +} + +static const struct drm_display_mode reported_modes[] = { + { + .name = "NTSC 480i", + .clock = 107520, + .hdisplay = 1280, + .hsync_start = 1368, + .hsync_end = 1496, + .htotal = 1712, + + .vdisplay = 1024, + .vsync_start = 1027, + .vsync_end = 1034, + .vtotal = 1104, + .type = DRM_MODE_TYPE_DRIVER, + }, +}; + +/** + * Detects TV presence by checking for load. + * + * Requires that the current pipe's DPLL is active. + + * \return true if TV is connected. + * \return false if TV is disconnected. + */ +static int +intel_tv_detect_type(struct intel_tv *intel_tv, + struct drm_connector *connector) +{ + struct drm_encoder *encoder = &intel_tv->base.base; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long irqflags; + u32 tv_ctl, save_tv_ctl; + u32 tv_dac, save_tv_dac; + int type; + + /* Disable TV interrupts around load detect or we'll recurse */ + if (connector->polled & DRM_CONNECTOR_POLL_HPD) { + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_disable_pipestat(dev_priv, 0, + PIPE_HOTPLUG_INTERRUPT_ENABLE | + PIPE_HOTPLUG_TV_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + } + + save_tv_dac = tv_dac = I915_READ(TV_DAC); + save_tv_ctl = tv_ctl = I915_READ(TV_CTL); + + /* Poll for TV detection */ + tv_ctl &= ~(TV_ENC_ENABLE | TV_TEST_MODE_MASK); + tv_ctl |= TV_TEST_MODE_MONITOR_DETECT; + if (intel_crtc->pipe == 1) + tv_ctl |= TV_ENC_PIPEB_SELECT; + else + tv_ctl &= ~TV_ENC_PIPEB_SELECT; + + tv_dac &= ~(TVDAC_SENSE_MASK | DAC_A_MASK | DAC_B_MASK | DAC_C_MASK); + tv_dac |= (TVDAC_STATE_CHG_EN | + TVDAC_A_SENSE_CTL | + TVDAC_B_SENSE_CTL | + TVDAC_C_SENSE_CTL | + DAC_CTL_OVERRIDE | + DAC_A_0_7_V | + DAC_B_0_7_V | + DAC_C_0_7_V); + + + /* + * The TV sense state should be cleared to zero on cantiga platform. Otherwise + * the TV is misdetected. This is hardware requirement. + */ + if (IS_GM45(dev)) + tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL | + TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL); + + I915_WRITE(TV_CTL, tv_ctl); + I915_WRITE(TV_DAC, tv_dac); + POSTING_READ(TV_DAC); + + intel_wait_for_vblank(intel_tv->base.base.dev, + to_intel_crtc(intel_tv->base.base.crtc)->pipe); + + type = -1; + tv_dac = I915_READ(TV_DAC); + DRM_DEBUG_KMS("TV detected: %x, %x\n", tv_ctl, tv_dac); + /* + * A B C + * 0 1 1 Composite + * 1 0 X svideo + * 0 0 0 Component + */ + if ((tv_dac & TVDAC_SENSE_MASK) == (TVDAC_B_SENSE | TVDAC_C_SENSE)) { + DRM_DEBUG_KMS("Detected Composite TV connection\n"); + type = DRM_MODE_CONNECTOR_Composite; + } else if ((tv_dac & (TVDAC_A_SENSE|TVDAC_B_SENSE)) == TVDAC_A_SENSE) { + DRM_DEBUG_KMS("Detected S-Video TV connection\n"); + type = DRM_MODE_CONNECTOR_SVIDEO; + } else if ((tv_dac & TVDAC_SENSE_MASK) == 0) { + DRM_DEBUG_KMS("Detected Component TV connection\n"); + type = DRM_MODE_CONNECTOR_Component; + } else { + DRM_DEBUG_KMS("Unrecognised TV connection\n"); + type = -1; + } + + I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); + I915_WRITE(TV_CTL, save_tv_ctl); + POSTING_READ(TV_CTL); + + /* For unknown reasons the hw barfs if we don't do this vblank wait. */ + intel_wait_for_vblank(intel_tv->base.base.dev, + to_intel_crtc(intel_tv->base.base.crtc)->pipe); + + /* Restore interrupt config */ + if (connector->polled & DRM_CONNECTOR_POLL_HPD) { + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_enable_pipestat(dev_priv, 0, + PIPE_HOTPLUG_INTERRUPT_ENABLE | + PIPE_HOTPLUG_TV_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + } + + return type; +} + +/* + * Here we set accurate tv format according to connector type + * i.e Component TV should not be assigned by NTSC or PAL + */ +static void intel_tv_find_better_format(struct drm_connector *connector) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + int i; + + if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) == + tv_mode->component_only) + return; + + + for (i = 0; i < sizeof(tv_modes) / sizeof(*tv_modes); i++) { + tv_mode = tv_modes + i; + + if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) == + tv_mode->component_only) + break; + } + + intel_tv->tv_format = tv_mode->name; + drm_object_property_set_value(&connector->base, + connector->dev->mode_config.tv_mode_property, i); +} + +/** + * Detect the TV connection. + * + * Currently this always returns CONNECTOR_STATUS_UNKNOWN, as we need to be sure + * we have a pipe programmed in order to probe the TV. + */ +static enum drm_connector_status +intel_tv_detect(struct drm_connector *connector, bool force) +{ + struct drm_display_mode mode; + struct intel_tv *intel_tv = intel_attached_tv(connector); + int type; + + mode = reported_modes[0]; + + if (force) { + struct intel_load_detect_pipe tmp; + + if (intel_get_load_detect_pipe(connector, &mode, &tmp)) { + type = intel_tv_detect_type(intel_tv, connector); + intel_release_load_detect_pipe(connector, &tmp); + } else + return connector_status_unknown; + } else + return connector->status; + + if (type < 0) + return connector_status_disconnected; + + intel_tv->type = type; + intel_tv_find_better_format(connector); + + return connector_status_connected; +} + +static const struct input_res { + const char *name; + int w, h; +} input_res_table[] = { + {"640x480", 640, 480}, + {"800x600", 800, 600}, + {"1024x768", 1024, 768}, + {"1280x1024", 1280, 1024}, + {"848x480", 848, 480}, + {"1280x720", 1280, 720}, + {"1920x1080", 1920, 1080}, +}; + +/* + * Chose preferred mode according to line number of TV format + */ +static void +intel_tv_chose_preferred_modes(struct drm_connector *connector, + struct drm_display_mode *mode_ptr) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + else if (tv_mode->nbr_end > 480) { + if (tv_mode->progressive == true && tv_mode->nbr_end < 720) { + if (mode_ptr->vdisplay == 720) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + } else if (mode_ptr->vdisplay == 1080) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + } +} + +/** + * Stub get_modes function. + * + * This should probably return a set of fixed modes, unless we can figure out + * how to probe modes off of TV connections. + */ + +static int +intel_tv_get_modes(struct drm_connector *connector) +{ + struct drm_display_mode *mode_ptr; + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + int j, count = 0; + u64 tmp; + + for (j = 0; j < ARRAY_SIZE(input_res_table); + j++) { + const struct input_res *input = &input_res_table[j]; + unsigned int hactive_s = input->w; + unsigned int vactive_s = input->h; + + if (tv_mode->max_srcw && input->w > tv_mode->max_srcw) + continue; + + if (input->w > 1024 && (!tv_mode->progressive + && !tv_mode->component_only)) + continue; + + mode_ptr = drm_mode_create(connector->dev); + if (!mode_ptr) + continue; + strncpy(mode_ptr->name, input->name, DRM_DISPLAY_MODE_LEN); + + mode_ptr->hdisplay = hactive_s; + mode_ptr->hsync_start = hactive_s + 1; + mode_ptr->hsync_end = hactive_s + 64; + if (mode_ptr->hsync_end <= mode_ptr->hsync_start) + mode_ptr->hsync_end = mode_ptr->hsync_start + 1; + mode_ptr->htotal = hactive_s + 96; + + mode_ptr->vdisplay = vactive_s; + mode_ptr->vsync_start = vactive_s + 1; + mode_ptr->vsync_end = vactive_s + 32; + if (mode_ptr->vsync_end <= mode_ptr->vsync_start) + mode_ptr->vsync_end = mode_ptr->vsync_start + 1; + mode_ptr->vtotal = vactive_s + 33; + + tmp = (u64) tv_mode->refresh * mode_ptr->vtotal; + tmp *= mode_ptr->htotal; + tmp = div_u64(tmp, 1000000); + mode_ptr->clock = (int) tmp; + + mode_ptr->type = DRM_MODE_TYPE_DRIVER; + intel_tv_chose_preferred_modes(connector, mode_ptr); + drm_mode_probed_add(connector, mode_ptr); + count++; + } + + return count; +} + +static void +intel_tv_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + + +static int +intel_tv_set_property(struct drm_connector *connector, struct drm_property *property, + uint64_t val) +{ + struct drm_device *dev = connector->dev; + struct intel_tv *intel_tv = intel_attached_tv(connector); + struct drm_crtc *crtc = intel_tv->base.base.crtc; + int ret = 0; + bool changed = false; + + ret = drm_object_property_set_value(&connector->base, property, val); + if (ret < 0) + goto out; + + if (property == dev->mode_config.tv_left_margin_property && + intel_tv->margin[TV_MARGIN_LEFT] != val) { + intel_tv->margin[TV_MARGIN_LEFT] = val; + changed = true; + } else if (property == dev->mode_config.tv_right_margin_property && + intel_tv->margin[TV_MARGIN_RIGHT] != val) { + intel_tv->margin[TV_MARGIN_RIGHT] = val; + changed = true; + } else if (property == dev->mode_config.tv_top_margin_property && + intel_tv->margin[TV_MARGIN_TOP] != val) { + intel_tv->margin[TV_MARGIN_TOP] = val; + changed = true; + } else if (property == dev->mode_config.tv_bottom_margin_property && + intel_tv->margin[TV_MARGIN_BOTTOM] != val) { + intel_tv->margin[TV_MARGIN_BOTTOM] = val; + changed = true; + } else if (property == dev->mode_config.tv_mode_property) { + if (val >= ARRAY_SIZE(tv_modes)) { + ret = -EINVAL; + goto out; + } + if (!strcmp(intel_tv->tv_format, tv_modes[val].name)) + goto out; + + intel_tv->tv_format = tv_modes[val].name; + changed = true; + } else { + ret = -EINVAL; + goto out; + } + + if (changed && crtc) + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); +out: + return ret; +} + +static const struct drm_encoder_helper_funcs intel_tv_helper_funcs = { + .mode_fixup = intel_tv_mode_fixup, + .mode_set = intel_tv_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_tv_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_tv_detect, + .destroy = intel_tv_destroy, + .set_property = intel_tv_set_property, + .fill_modes = drm_helper_probe_single_connector_modes, +}; + +static const struct drm_connector_helper_funcs intel_tv_connector_helper_funcs = { + .mode_valid = intel_tv_mode_valid, + .get_modes = intel_tv_get_modes, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_tv_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +/* + * Enumerate the child dev array parsed from VBT to check whether + * the integrated TV is present. + * If it is present, return 1. + * If it is not present, return false. + * If no child dev is parsed from VBT, it assumes that the TV is present. + */ +static int tv_is_present_in_vbt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct child_device_config *p_child; + int i, ret; + + if (!dev_priv->child_dev_num) + return 1; + + ret = 0; + for (i = 0; i < dev_priv->child_dev_num; i++) { + p_child = dev_priv->child_dev + i; + /* + * If the device type is not TV, continue. + */ + if (p_child->device_type != DEVICE_TYPE_INT_TV && + p_child->device_type != DEVICE_TYPE_TV) + continue; + /* Only when the addin_offset is non-zero, it is regarded + * as present. + */ + if (p_child->addin_offset) { + ret = 1; + break; + } + } + return ret; +} + +void +intel_tv_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_connector *connector; + struct intel_tv *intel_tv; + struct intel_encoder *intel_encoder; + struct intel_connector *intel_connector; + u32 tv_dac_on, tv_dac_off, save_tv_dac; + char *tv_format_names[ARRAY_SIZE(tv_modes)]; + int i, initial_mode = 0; + + if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) + return; + + if (!tv_is_present_in_vbt(dev)) { + DRM_DEBUG_KMS("Integrated TV is not present.\n"); + return; + } + /* Even if we have an encoder we may not have a connector */ + if (!dev_priv->int_tv_support) + return; + + /* + * Sanity check the TV output by checking to see if the + * DAC register holds a value + */ + save_tv_dac = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac | TVDAC_STATE_CHG_EN); + tv_dac_on = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); + tv_dac_off = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac); + + /* + * If the register does not hold the state change enable + * bit, (either as a 0 or a 1), assume it doesn't really + * exist + */ + if ((tv_dac_on & TVDAC_STATE_CHG_EN) == 0 || + (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) + return; + + intel_tv = kzalloc(sizeof(struct intel_tv), GFP_KERNEL); + if (!intel_tv) { + return; + } + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_tv); + return; + } + + intel_encoder = &intel_tv->base; + connector = &intel_connector->base; + + /* The documentation, for the older chipsets at least, recommend + * using a polling method rather than hotplug detection for TVs. + * This is because in order to perform the hotplug detection, the PLLs + * for the TV must be kept alive increasing power drain and starving + * bandwidth from other encoders. Notably for instance, it causes + * pipe underruns on Crestline when this encoder is supposedly idle. + * + * More recent chipsets favour HDMI rather than integrated S-Video. + */ + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + + drm_connector_init(dev, connector, &intel_tv_connector_funcs, + DRM_MODE_CONNECTOR_SVIDEO); + + drm_encoder_init(dev, &intel_encoder->base, &intel_tv_enc_funcs, + DRM_MODE_ENCODER_TVDAC); + + intel_encoder->enable = intel_enable_tv; + intel_encoder->disable = intel_disable_tv; + intel_encoder->get_hw_state = intel_tv_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_connector_attach_encoder(intel_connector, intel_encoder); + intel_encoder->type = INTEL_OUTPUT_TVOUT; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + intel_encoder->cloneable = false; + intel_encoder->base.possible_crtcs = ((1 << 0) | (1 << 1)); + intel_encoder->base.possible_clones = (1 << INTEL_OUTPUT_TVOUT); + intel_tv->type = DRM_MODE_CONNECTOR_Unknown; + + /* BIOS margin values */ + intel_tv->margin[TV_MARGIN_LEFT] = 54; + intel_tv->margin[TV_MARGIN_TOP] = 36; + intel_tv->margin[TV_MARGIN_RIGHT] = 46; + intel_tv->margin[TV_MARGIN_BOTTOM] = 37; + + intel_tv->tv_format = tv_modes[initial_mode].name; + + drm_encoder_helper_add(&intel_encoder->base, &intel_tv_helper_funcs); + drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + /* Create TV properties then attach current values */ + for (i = 0; i < ARRAY_SIZE(tv_modes); i++) + tv_format_names[i] = (char *)tv_modes[i].name; + drm_mode_create_tv_properties(dev, + ARRAY_SIZE(tv_modes), + tv_format_names); + + drm_object_attach_property(&connector->base, dev->mode_config.tv_mode_property, + initial_mode); + drm_object_attach_property(&connector->base, + dev->mode_config.tv_left_margin_property, + intel_tv->margin[TV_MARGIN_LEFT]); + drm_object_attach_property(&connector->base, + dev->mode_config.tv_top_margin_property, + intel_tv->margin[TV_MARGIN_TOP]); + drm_object_attach_property(&connector->base, + dev->mode_config.tv_right_margin_property, + intel_tv->margin[TV_MARGIN_RIGHT]); + drm_object_attach_property(&connector->base, + dev->mode_config.tv_bottom_margin_property, + intel_tv->margin[TV_MARGIN_BOTTOM]); + drm_sysfs_connector_add(connector); +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_context.c +++ linux-3.5.0/ubuntu/i915/i915_gem_context.c @@ -0,0 +1,540 @@ +/* + * Copyright © 2011-2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Ben Widawsky + * + */ + +/* + * This file implements HW context support. On gen5+ a HW context consists of an + * opaque GPU object which is referenced at times of context saves and restores. + * With RC6 enabled, the context is also referenced as the GPU enters and exists + * from RC6 (GPU has it's own internal power context, except on gen5). Though + * something like a context does exist for the media ring, the code only + * supports contexts for the render ring. + * + * In software, there is a distinction between contexts created by the user, + * and the default HW context. The default HW context is used by GPU clients + * that do not request setup of their own hardware context. The default + * context's state is never restored to help prevent programming errors. This + * would happen if a client ran and piggy-backed off another clients GPU state. + * The default context only exists to give the GPU some offset to load as the + * current to invoke a save of the context we actually care about. In fact, the + * code could likely be constructed, albeit in a more complicated fashion, to + * never use the default context, though that limits the driver's ability to + * swap out, and/or destroy other contexts. + * + * All other contexts are created as a request by the GPU client. These contexts + * store GPU state, and thus allow GPU clients to not re-emit state (and + * potentially query certain state) at any time. The kernel driver makes + * certain that the appropriate commands are inserted. + * + * The context life cycle is semi-complicated in that context BOs may live + * longer than the context itself because of the way the hardware, and object + * tracking works. Below is a very crude representation of the state machine + * describing the context life. + * refcount pincount active + * S0: initial state 0 0 0 + * S1: context created 1 0 0 + * S2: context is currently running 2 1 X + * S3: GPU referenced, but not current 2 0 1 + * S4: context is current, but destroyed 1 1 0 + * S5: like S3, but destroyed 1 0 1 + * + * The most common (but not all) transitions: + * S0->S1: client creates a context + * S1->S2: client submits execbuf with context + * S2->S3: other clients submits execbuf with context + * S3->S1: context object was retired + * S3->S2: clients submits another execbuf + * S2->S4: context destroy called with current context + * S3->S5->S0: destroy path + * S4->S5->S0: destroy path on current context + * + * There are two confusing terms used above: + * The "current context" means the context which is currently running on the + * GPU. The GPU has loaded it's state already and has stored away the gtt + * offset of the BO. The GPU is not actively referencing the data at this + * offset, but it will on the next context switch. The only way to avoid this + * is to do a GPU reset. + * + * An "active context' is one which was previously the "current context" and is + * on the active list waiting for the next context switch to occur. Until this + * happens, the object must remain at the same gtt offset. It is therefore + * possible to destroy a context, but it is still active. + * + */ + +#include +#include +#include "i915_drv.h" + +/* This is a HW constraint. The value below is the largest known requirement + * I've seen in a spec to date, and that was a workaround for a non-shipping + * part. It should be safe to decrease this, but it's more future proof as is. + */ +#define CONTEXT_ALIGN (64<<10) + +static struct i915_hw_context * +i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id); +static int do_switch(struct i915_hw_context *to); + +static int get_context_size(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + u32 reg; + + switch (INTEL_INFO(dev)->gen) { + case 6: + reg = I915_READ(CXT_SIZE); + ret = GEN6_CXT_TOTAL_SIZE(reg) * 64; + break; + case 7: + reg = I915_READ(GEN7_CXT_SIZE); + if (IS_HASWELL(dev)) + ret = HSW_CXT_TOTAL_SIZE(reg) * 64; + else + ret = GEN7_CXT_TOTAL_SIZE(reg) * 64; + break; + default: + BUG(); + } + + return ret; +} + +static void do_destroy(struct i915_hw_context *ctx) +{ + struct drm_device *dev = ctx->obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (ctx->file_priv) + idr_remove(&ctx->file_priv->context_idr, ctx->id); + else + BUG_ON(ctx != dev_priv->ring[RCS].default_context); + + drm_gem_object_unreference(&ctx->obj->base); + kfree(ctx); +} + +static struct i915_hw_context * +create_hw_context(struct drm_device *dev, + struct drm_i915_file_private *file_priv) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_context *ctx; + int ret, id; + + ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); + if (ctx == NULL) + return ERR_PTR(-ENOMEM); + + ctx->obj = i915_gem_alloc_object(dev, dev_priv->hw_context_size); + if (ctx->obj == NULL) { + kfree(ctx); + DRM_DEBUG_DRIVER("Context object allocated failed\n"); + return ERR_PTR(-ENOMEM); + } + + 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. + */ + ctx->ring = &dev_priv->ring[RCS]; + + /* Default context will never have a file_priv */ + if (file_priv == NULL) + return ctx; + + ctx->file_priv = file_priv; + +again: + if (idr_pre_get(&file_priv->context_idr, GFP_KERNEL) == 0) { + ret = -ENOMEM; + DRM_DEBUG_DRIVER("idr allocation failed\n"); + goto err_out; + } + + ret = idr_get_new_above(&file_priv->context_idr, ctx, + DEFAULT_CONTEXT_ID + 1, &id); + if (ret == 0) + ctx->id = id; + + if (ret == -EAGAIN) + goto again; + else if (ret) + goto err_out; + + return ctx; + +err_out: + do_destroy(ctx); + return ERR_PTR(ret); +} + +static inline bool is_default_context(struct i915_hw_context *ctx) +{ + return (ctx == ctx->ring->default_context); +} + +/** + * The default context needs to exist per ring that uses contexts. It stores the + * context state of the GPU for applications that don't utilize HW contexts, as + * well as an idle case. + */ +static int create_default_context(struct drm_i915_private *dev_priv) +{ + struct i915_hw_context *ctx; + int ret; + + BUG_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex)); + + ctx = create_hw_context(dev_priv->dev, NULL); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + /* We may need to do things with the shrinker which require us to + * immediately switch back to the default context. This can cause a + * problem as pinning the default context also requires GTT space which + * may not be available. To avoid this we always pin the + * default context. + */ + dev_priv->ring[RCS].default_context = ctx; + ret = i915_gem_object_pin(ctx->obj, CONTEXT_ALIGN, false, false); + if (ret) + goto err_destroy; + + ret = do_switch(ctx); + if (ret) + goto err_unpin; + + DRM_DEBUG_DRIVER("Default HW context loaded\n"); + return 0; + +err_unpin: + i915_gem_object_unpin(ctx->obj); +err_destroy: + do_destroy(ctx); + return ret; +} + +void i915_gem_context_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t ctx_size; + + if (!HAS_HW_CONTEXTS(dev)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + /* If called from reset, or thaw... we've been here already */ + if (dev_priv->hw_contexts_disabled || + dev_priv->ring[RCS].default_context) + return; + + ctx_size = get_context_size(dev); + dev_priv->hw_context_size = get_context_size(dev); + dev_priv->hw_context_size = round_up(dev_priv->hw_context_size, 4096); + + if (ctx_size <= 0 || ctx_size > (1<<20)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + if (create_default_context(dev_priv)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + DRM_DEBUG_DRIVER("HW context support initialized\n"); +} + +void i915_gem_context_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->hw_contexts_disabled) + return; + + /* The only known way to stop the gpu from accessing the hw context is + * to reset it. Do this as the very last operation to avoid confusing + * other code, leading to spurious errors. */ + intel_gpu_reset(dev); + + i915_gem_object_unpin(dev_priv->ring[RCS].default_context->obj); + + do_destroy(dev_priv->ring[RCS].default_context); +} + +static int context_idr_cleanup(int id, void *p, void *data) +{ + struct i915_hw_context *ctx = p; + + BUG_ON(id == DEFAULT_CONTEXT_ID); + + do_destroy(ctx); + + return 0; +} + +void i915_gem_context_close(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + mutex_lock(&dev->struct_mutex); + idr_for_each(&file_priv->context_idr, context_idr_cleanup, NULL); + idr_destroy(&file_priv->context_idr); + mutex_unlock(&dev->struct_mutex); +} + +static struct i915_hw_context * +i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id) +{ + return (struct i915_hw_context *)idr_find(&file_priv->context_idr, id); +} + +static inline int +mi_set_context(struct intel_ring_buffer *ring, + struct i915_hw_context *new_context, + u32 hw_flags) +{ + int ret; + + /* w/a: If Flush TLB Invalidation Mode is enabled, driver must do a TLB + * invalidation prior to MI_SET_CONTEXT. On GEN6 we don't set the value + * explicitly, so we rely on the value at ring init, stored in + * itlb_before_ctx_switch. + */ + if (IS_GEN6(ring->dev) && ring->itlb_before_ctx_switch) { + ret = ring->flush(ring, I915_GEM_GPU_DOMAINS, 0); + if (ret) + return ret; + } + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + if (IS_GEN7(ring->dev)) + intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_DISABLE); + else + intel_ring_emit(ring, MI_NOOP); + + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_SET_CONTEXT); + intel_ring_emit(ring, new_context->obj->gtt_offset | + MI_MM_SPACE_GTT | + MI_SAVE_EXT_STATE_EN | + MI_RESTORE_EXT_STATE_EN | + hw_flags); + /* w/a: MI_SET_CONTEXT must always be followed by MI_NOOP */ + intel_ring_emit(ring, MI_NOOP); + + if (IS_GEN7(ring->dev)) + intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_ENABLE); + else + intel_ring_emit(ring, MI_NOOP); + + intel_ring_advance(ring); + + return ret; +} + +static int do_switch(struct i915_hw_context *to) +{ + struct intel_ring_buffer *ring = to->ring; + struct drm_i915_gem_object *from_obj = ring->last_context_obj; + u32 hw_flags = 0; + int ret; + + BUG_ON(from_obj != NULL && from_obj->pin_count == 0); + + if (from_obj == to->obj) + return 0; + + ret = i915_gem_object_pin(to->obj, CONTEXT_ALIGN, false, false); + if (ret) + return ret; + + /* Clear this page out of any CPU caches for coherent swap-in/out. Note + * that thanks to write = false in this call and us not setting any gpu + * write domains when putting a context object onto the active list + * (when switching away from it), this won't block. + * XXX: We need a real interface to do this instead of trickery. */ + ret = i915_gem_object_set_to_gtt_domain(to->obj, false); + if (ret) { + i915_gem_object_unpin(to->obj); + return ret; + } + + if (!to->obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(to->obj, to->obj->cache_level); + + if (!to->is_initialized || is_default_context(to)) + hw_flags |= MI_RESTORE_INHIBIT; + else if (WARN_ON_ONCE(from_obj == to->obj)) /* not yet expected */ + hw_flags |= MI_FORCE_RESTORE; + + ret = mi_set_context(ring, to, hw_flags); + if (ret) { + i915_gem_object_unpin(to->obj); + return ret; + } + + /* The backing object for the context is done after switching to the + * *next* context. Therefore we cannot retire the previous context until + * the next context has already started running. In fact, the below code + * is a bit suboptimal because the retiring can occur simply after the + * MI_SET_CONTEXT instead of when the next seqno has completed. + */ + if (from_obj != NULL) { + from_obj->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; + i915_gem_object_move_to_active(from_obj, ring); + /* As long as MI_SET_CONTEXT is serializing, ie. it flushes the + * whole damn pipeline, we don't need to explicitly mark the + * object dirty. The only exception is that the context must be + * correct in case the object gets swapped out. Ideally we'd be + * able to defer doing this until we know the object would be + * swapped, but there is no way to do that yet. + */ + from_obj->dirty = 1; + BUG_ON(from_obj->ring != ring); + i915_gem_object_unpin(from_obj); + + drm_gem_object_unreference(&from_obj->base); + } + + drm_gem_object_reference(&to->obj->base); + ring->last_context_obj = to->obj; + to->is_initialized = true; + + return 0; +} + +/** + * i915_switch_context() - perform a GPU context switch. + * @ring: ring for which we'll execute the context switch + * @file_priv: file_priv associated with the context, may be NULL + * @id: context id number + * @seqno: sequence number by which the new context will be switched to + * @flags: + * + * The context life cycle is simple. The context refcount is incremented and + * decremented by 1 and create and destroy. If the context is in use by the GPU, + * it will have a refoucnt > 1. This allows us to destroy the context abstract + * object while letting the normal object tracking destroy the backing BO. + */ +int i915_switch_context(struct intel_ring_buffer *ring, + struct drm_file *file, + int to_id) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + struct i915_hw_context *to; + + if (dev_priv->hw_contexts_disabled) + return 0; + + if (ring != &dev_priv->ring[RCS]) + return 0; + + if (to_id == DEFAULT_CONTEXT_ID) { + to = ring->default_context; + } else { + if (file == NULL) + return -EINVAL; + + to = i915_gem_context_get(file->driver_priv, to_id); + if (to == NULL) + return -ENOENT; + } + + return do_switch(to); +} + +int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_context_create *args = data; + struct drm_i915_file_private *file_priv = file->driver_priv; + struct i915_hw_context *ctx; + int ret; + + if (!(dev->driver->driver_features & DRIVER_GEM)) + return -ENODEV; + + if (dev_priv->hw_contexts_disabled) + return -ENODEV; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ctx = create_hw_context(dev, file_priv); + mutex_unlock(&dev->struct_mutex); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + args->ctx_id = ctx->id; + DRM_DEBUG_DRIVER("HW context %d created\n", args->ctx_id); + + return 0; +} + +int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_context_destroy *args = data; + struct drm_i915_file_private *file_priv = file->driver_priv; + struct i915_hw_context *ctx; + int ret; + + if (!(dev->driver->driver_features & DRIVER_GEM)) + return -ENODEV; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ctx = i915_gem_context_get(file_priv, args->ctx_id); + if (!ctx) { + mutex_unlock(&dev->struct_mutex); + return -ENOENT; + } + + do_destroy(ctx); + + mutex_unlock(&dev->struct_mutex); + + DRM_DEBUG_DRIVER("HW context %d destroyed\n", args->ctx_id); + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/Makefile +++ linux-3.5.0/ubuntu/i915/Makefile @@ -0,0 +1,52 @@ +# +# Makefile for the drm device driver. This driver provides support for the +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. + +ccflags-y := -Iinclude/drm +i915_hsw-y := i915_drv.o i915_dma.o i915_irq.o \ + i915_debugfs.o \ + i915_suspend.o \ + i915_gem.o \ + i915_gem_context.o \ + i915_gem_debug.o \ + i915_gem_evict.o \ + i915_gem_execbuffer.o \ + i915_gem_gtt.o \ + i915_gem_stolen.o \ + i915_gem_tiling.o \ + i915_sysfs.o \ + i915_trace_points.o \ + intel_display.o \ + intel_crt.o \ + intel_lvds.o \ + intel_bios.o \ + intel_ddi.o \ + intel_dp.o \ + intel_hdmi.o \ + intel_sdvo.o \ + intel_modes.o \ + intel_panel.o \ + intel_pm.o \ + intel_i2c.o \ + intel_fb.o \ + intel_tv.o \ + intel_dvo.o \ + intel_ringbuffer.o \ + intel_overlay.o \ + intel_sprite.o \ + intel_opregion.o \ + dvo_ch7xxx.o \ + dvo_ch7017.o \ + dvo_ivch.o \ + dvo_tfp410.o \ + dvo_sil164.o \ + dvo_ns2501.o \ + i915_gem_dmabuf.o + +i915_hsw-$(CONFIG_COMPAT) += i915_ioc32.o + +i915_hsw-$(CONFIG_ACPI) += intel_acpi.o + +obj-$(CONFIG_DRM_I915_HSW) += i915_hsw.o + +CFLAGS_i915_trace_points.o := -I$(src) --- linux-3.5.0.orig/ubuntu/i915/Kconfig +++ linux-3.5.0/ubuntu/i915/Kconfig @@ -0,0 +1,42 @@ +# +# Drm device configuration +# +# This driver provides support for the +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. +# +config DRM_I915_HSW + tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics" + depends on DRM + depends on AGP + depends on AGP_INTEL + # we need shmfs for the swappable backing store, and in particular + # the shmem_readpage() which depends upon tmpfs + select SHMEM + select TMPFS + select DRM_KMS_HELPER + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + # i915 depends on ACPI_VIDEO when ACPI is enabled + # but for select to work, need to select ACPI_VIDEO's dependencies, ick + select BACKLIGHT_LCD_SUPPORT if ACPI + select BACKLIGHT_CLASS_DEVICE if ACPI + select VIDEO_OUTPUT_CONTROL if ACPI + select INPUT if ACPI + select ACPI_VIDEO if ACPI + select ACPI_BUTTON if ACPI + help + Choose this option if you have a system that has "Intel Graphics + Media Accelerator" or "HD Graphics" integrated graphics, + including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G, + G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3, + Core i5, Core i7 as well as Atom CPUs with integrated graphics. + If M is selected, the module will be called i915. AGP support + is required for this driver to work. This driver is used by + the Intel driver in X.org 6.8 and XFree86 4.4 and above. It + replaces the older i830 module that supported a subset of the + hardware in older X.org releases. + + Note that the older i810/i815 chipsets require the use of the + i810 driver instead, and the Atom z5xx series has an entirely + different implementation. --- linux-3.5.0.orig/ubuntu/i915/intel_lvds.c +++ linux-3.5.0/ubuntu/i915/intel_lvds.c @@ -0,0 +1,1143 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * Copyright (c) 2006 Dave Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Dave Airlie + * Jesse Barnes + */ + +#include +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" +#include + +/* Private structure for the integrated LVDS support */ +struct intel_lvds_connector { + struct intel_connector base; + + struct notifier_block lid_notifier; +}; + +struct intel_lvds_encoder { + struct intel_encoder base; + + u32 pfit_control; + u32 pfit_pgm_ratios; + bool pfit_dirty; + + struct intel_lvds_connector *attached_connector; +}; + +static struct intel_lvds_encoder *to_lvds_encoder(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_lvds_encoder, base.base); +} + +static struct intel_lvds_connector *to_lvds_connector(struct drm_connector *connector) +{ + return container_of(connector, struct intel_lvds_connector, base.base); +} + +static bool intel_lvds_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 lvds_reg, tmp; + + if (HAS_PCH_SPLIT(dev)) { + lvds_reg = PCH_LVDS; + } else { + lvds_reg = LVDS; + } + + tmp = I915_READ(lvds_reg); + + if (!(tmp & LVDS_PORT_EN)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +/** + * Sets the power state for the panel. + */ +static void intel_enable_lvds(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(&encoder->base); + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 ctl_reg, lvds_reg, stat_reg; + + if (HAS_PCH_SPLIT(dev)) { + ctl_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + stat_reg = PCH_PP_STATUS; + } else { + ctl_reg = PP_CONTROL; + lvds_reg = LVDS; + stat_reg = PP_STATUS; + } + + I915_WRITE(lvds_reg, I915_READ(lvds_reg) | LVDS_PORT_EN); + + if (lvds_encoder->pfit_dirty) { + /* + * Enable automatic panel scaling so that non-native modes + * fill the screen. The panel fitter should only be + * adjusted whilst the pipe is disabled, according to + * register description and PRM. + */ + DRM_DEBUG_KMS("applying panel-fitter: %x, %x\n", + lvds_encoder->pfit_control, + lvds_encoder->pfit_pgm_ratios); + + I915_WRITE(PFIT_PGM_RATIOS, lvds_encoder->pfit_pgm_ratios); + I915_WRITE(PFIT_CONTROL, lvds_encoder->pfit_control); + lvds_encoder->pfit_dirty = false; + } + + I915_WRITE(ctl_reg, I915_READ(ctl_reg) | POWER_TARGET_ON); + POSTING_READ(lvds_reg); + if (wait_for((I915_READ(stat_reg) & PP_ON) != 0, 1000)) + DRM_ERROR("timed out waiting for panel to power on\n"); + + intel_panel_enable_backlight(dev, intel_crtc->pipe); +} + +static void intel_disable_lvds(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(&encoder->base); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 ctl_reg, lvds_reg, stat_reg; + + if (HAS_PCH_SPLIT(dev)) { + ctl_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + stat_reg = PCH_PP_STATUS; + } else { + ctl_reg = PP_CONTROL; + lvds_reg = LVDS; + stat_reg = PP_STATUS; + } + + intel_panel_disable_backlight(dev); + + I915_WRITE(ctl_reg, I915_READ(ctl_reg) & ~POWER_TARGET_ON); + if (wait_for((I915_READ(stat_reg) & PP_ON) == 0, 1000)) + DRM_ERROR("timed out waiting for panel to power off\n"); + + if (lvds_encoder->pfit_control) { + I915_WRITE(PFIT_CONTROL, 0); + lvds_encoder->pfit_dirty = true; + } + + I915_WRITE(lvds_reg, I915_READ(lvds_reg) & ~LVDS_PORT_EN); + POSTING_READ(lvds_reg); +} + +static int intel_lvds_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode; + + if (mode->hdisplay > fixed_mode->hdisplay) + return MODE_PANEL; + if (mode->vdisplay > fixed_mode->vdisplay) + return MODE_PANEL; + + return MODE_OK; +} + +static void +centre_horizontally(struct drm_display_mode *mode, + int width) +{ + u32 border, sync_pos, blank_width, sync_width; + + /* keep the hsync and hblank widths constant */ + sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start; + blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start; + sync_pos = (blank_width - sync_width + 1) / 2; + + border = (mode->hdisplay - width + 1) / 2; + border += border & 1; /* make the border even */ + + mode->crtc_hdisplay = width; + mode->crtc_hblank_start = width + border; + mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width; + + mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos; + mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width; + + mode->private_flags |= INTEL_MODE_CRTC_TIMINGS_SET; +} + +static void +centre_vertically(struct drm_display_mode *mode, + int height) +{ + u32 border, sync_pos, blank_width, sync_width; + + /* keep the vsync and vblank widths constant */ + sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start; + blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start; + sync_pos = (blank_width - sync_width + 1) / 2; + + border = (mode->vdisplay - height + 1) / 2; + + mode->crtc_vdisplay = height; + mode->crtc_vblank_start = height + border; + mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width; + + mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos; + mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width; + + mode->private_flags |= INTEL_MODE_CRTC_TIMINGS_SET; +} + +static inline u32 panel_fitter_scaling(u32 source, u32 target) +{ + /* + * Floating point operation is not supported. So the FACTOR + * is defined, which can avoid the floating point computation + * when calculating the panel ratio. + */ +#define ACCURACY 12 +#define FACTOR (1 << ACCURACY) + u32 ratio = source * FACTOR / target; + return (FACTOR * ratio + FACTOR/2) / FACTOR; +} + +static bool intel_lvds_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(encoder); + struct intel_connector *intel_connector = + &lvds_encoder->attached_connector->base; + struct intel_crtc *intel_crtc = lvds_encoder->base.new_crtc; + u32 pfit_control = 0, pfit_pgm_ratios = 0, border = 0; + int pipe; + + /* Should never happen!! */ + if (INTEL_INFO(dev)->gen < 4 && intel_crtc->pipe == 0) { + DRM_ERROR("Can't support LVDS on pipe A\n"); + return false; + } + + if (intel_encoder_check_is_cloned(&lvds_encoder->base)) + return false; + + /* + * We have timings from the BIOS for the panel, put them in + * to the adjusted mode. The CRTC will be set up for this mode, + * with the panel scaling set up to source from the H/VDisplay + * of the original mode. + */ + intel_fixed_panel_mode(intel_connector->panel.fixed_mode, + adjusted_mode); + + if (HAS_PCH_SPLIT(dev)) { + intel_pch_panel_fitting(dev, + intel_connector->panel.fitting_mode, + mode, adjusted_mode); + return true; + } + + /* Native modes don't need fitting */ + if (adjusted_mode->hdisplay == mode->hdisplay && + adjusted_mode->vdisplay == mode->vdisplay) + goto out; + + /* 965+ wants fuzzy fitting */ + if (INTEL_INFO(dev)->gen >= 4) + pfit_control |= ((intel_crtc->pipe << PFIT_PIPE_SHIFT) | + PFIT_FILTER_FUZZY); + + /* + * Enable automatic panel scaling for non-native modes so that they fill + * the screen. Should be enabled before the pipe is enabled, according + * to register description and PRM. + * Change the value here to see the borders for debugging + */ + for_each_pipe(pipe) + I915_WRITE(BCLRPAT(pipe), 0); + + drm_mode_set_crtcinfo(adjusted_mode, 0); + + switch (intel_connector->panel.fitting_mode) { + case DRM_MODE_SCALE_CENTER: + /* + * For centered modes, we have to calculate border widths & + * heights and modify the values programmed into the CRTC. + */ + centre_horizontally(adjusted_mode, mode->hdisplay); + centre_vertically(adjusted_mode, mode->vdisplay); + border = LVDS_BORDER_ENABLE; + break; + + case DRM_MODE_SCALE_ASPECT: + /* Scale but preserve the aspect ratio */ + if (INTEL_INFO(dev)->gen >= 4) { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + + /* 965+ is easy, it does everything in hw */ + if (scaled_width > scaled_height) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_PILLAR; + else if (scaled_width < scaled_height) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_LETTER; + else if (adjusted_mode->hdisplay != mode->hdisplay) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO; + } else { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + /* + * For earlier chips we have to calculate the scaling + * ratio by hand and program it into the + * PFIT_PGM_RATIO register + */ + if (scaled_width > scaled_height) { /* pillar */ + centre_horizontally(adjusted_mode, scaled_height / mode->vdisplay); + + border = LVDS_BORDER_ENABLE; + if (mode->vdisplay != adjusted_mode->vdisplay) { + u32 bits = panel_fitter_scaling(mode->vdisplay, adjusted_mode->vdisplay); + pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT | + bits << PFIT_VERT_SCALE_SHIFT); + pfit_control |= (PFIT_ENABLE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + } else if (scaled_width < scaled_height) { /* letter */ + centre_vertically(adjusted_mode, scaled_width / mode->hdisplay); + + border = LVDS_BORDER_ENABLE; + if (mode->hdisplay != adjusted_mode->hdisplay) { + u32 bits = panel_fitter_scaling(mode->hdisplay, adjusted_mode->hdisplay); + pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT | + bits << PFIT_VERT_SCALE_SHIFT); + pfit_control |= (PFIT_ENABLE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + } else + /* Aspects match, Let hw scale both directions */ + pfit_control |= (PFIT_ENABLE | + VERT_AUTO_SCALE | HORIZ_AUTO_SCALE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + break; + + case DRM_MODE_SCALE_FULLSCREEN: + /* + * Full scaling, even if it changes the aspect ratio. + * Fortunately this is all done for us in hw. + */ + if (mode->vdisplay != adjusted_mode->vdisplay || + mode->hdisplay != adjusted_mode->hdisplay) { + pfit_control |= PFIT_ENABLE; + if (INTEL_INFO(dev)->gen >= 4) + pfit_control |= PFIT_SCALING_AUTO; + else + pfit_control |= (VERT_AUTO_SCALE | + VERT_INTERP_BILINEAR | + HORIZ_AUTO_SCALE | + HORIZ_INTERP_BILINEAR); + } + break; + + default: + break; + } + +out: + /* If not enabling scaling, be consistent and always use 0. */ + if ((pfit_control & PFIT_ENABLE) == 0) { + pfit_control = 0; + pfit_pgm_ratios = 0; + } + + /* Make sure pre-965 set dither correctly */ + if (INTEL_INFO(dev)->gen < 4 && dev_priv->lvds_dither) + pfit_control |= PANEL_8TO6_DITHER_ENABLE; + + if (pfit_control != lvds_encoder->pfit_control || + pfit_pgm_ratios != lvds_encoder->pfit_pgm_ratios) { + lvds_encoder->pfit_control = pfit_control; + lvds_encoder->pfit_pgm_ratios = pfit_pgm_ratios; + lvds_encoder->pfit_dirty = true; + } + dev_priv->lvds_border_bits = border; + + /* + * XXX: It would be nice to support lower refresh rates on the + * panels to reduce power consumption, and perhaps match the + * user's requested refresh rate. + */ + + return true; +} + +static void intel_lvds_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* + * The LVDS pin pair will already have been turned on in the + * intel_crtc_mode_set since it has a large impact on the DPLL + * settings. + */ +} + +/** + * Detect the LVDS connection. + * + * Since LVDS doesn't have hotlug, we use the lid as a proxy. Open means + * connected and closed means disconnected. We also send hotplug events as + * needed, using lid status notification from the input layer. + */ +static enum drm_connector_status +intel_lvds_detect(struct drm_connector *connector, bool force) +{ + struct drm_device *dev = connector->dev; + enum drm_connector_status status; + + status = intel_panel_detect(dev); + if (status != connector_status_unknown) + return status; + + return connector_status_connected; +} + +/** + * Return the list of DDC modes if available, or the BIOS fixed mode otherwise. + */ +static int intel_lvds_get_modes(struct drm_connector *connector) +{ + struct intel_lvds_connector *lvds_connector = to_lvds_connector(connector); + struct drm_device *dev = connector->dev; + struct drm_display_mode *mode; + + /* use cached edid if we have one */ + if (!IS_ERR_OR_NULL(lvds_connector->base.edid)) + return drm_add_edid_modes(connector, lvds_connector->base.edid); + + mode = drm_mode_duplicate(dev, lvds_connector->base.panel.fixed_mode); + if (mode == NULL) + return 0; + + drm_mode_probed_add(connector, mode); + return 1; +} + +static int intel_no_modeset_on_lid_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping forced modeset for %s\n", id->ident); + return 1; +} + +/* The GPU hangs up on these systems if modeset is performed on LID open */ +static const struct dmi_system_id intel_no_modeset_on_lid[] = { + { + .callback = intel_no_modeset_on_lid_dmi_callback, + .ident = "Toshiba Tecra A11", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "TECRA A11"), + }, + }, + + { } /* terminating entry */ +}; + +/* + * Lid events. Note the use of 'modeset_on_lid': + * - we set it on lid close, and reset it on open + * - we use it as a "only once" bit (ie we ignore + * duplicate events where it was already properly + * set/reset) + * - the suspend/resume paths will also set it to + * zero, since they restore the mode ("lid open"). + */ +static int intel_lid_notify(struct notifier_block *nb, unsigned long val, + void *unused) +{ + struct intel_lvds_connector *lvds_connector = + container_of(nb, struct intel_lvds_connector, lid_notifier); + struct drm_connector *connector = &lvds_connector->base.base; + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev->switch_power_state != DRM_SWITCH_POWER_ON) + return NOTIFY_OK; + + /* + * check and update the status of LVDS connector after receiving + * the LID nofication event. + */ + connector->status = connector->funcs->detect(connector, false); + + /* Don't force modeset on machines where it causes a GPU lockup */ + if (dmi_check_system(intel_no_modeset_on_lid)) + return NOTIFY_OK; + if (!acpi_lid_open()) { + dev_priv->modeset_on_lid = 1; + return NOTIFY_OK; + } + + if (!dev_priv->modeset_on_lid) + return NOTIFY_OK; + + dev_priv->modeset_on_lid = 0; + + mutex_lock(&dev->mode_config.mutex); + intel_modeset_setup_hw_state(dev, true); + mutex_unlock(&dev->mode_config.mutex); + + return NOTIFY_OK; +} + +/** + * intel_lvds_destroy - unregister and free LVDS structures + * @connector: connector to free + * + * Unregister the DDC bus for this connector then free the driver private + * structure. + */ +static void intel_lvds_destroy(struct drm_connector *connector) +{ + struct intel_lvds_connector *lvds_connector = + to_lvds_connector(connector); + + if (lvds_connector->lid_notifier.notifier_call) + acpi_lid_notifier_unregister(&lvds_connector->lid_notifier); + + if (!IS_ERR_OR_NULL(lvds_connector->base.edid)) + kfree(lvds_connector->base.edid); + + intel_panel_fini(&lvds_connector->base.panel); + + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static int intel_lvds_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t value) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_device *dev = connector->dev; + + if (property == dev->mode_config.scaling_mode_property) { + struct drm_crtc *crtc; + + if (value == DRM_MODE_SCALE_NONE) { + DRM_DEBUG_KMS("no scaling not supported\n"); + return -EINVAL; + } + + if (intel_connector->panel.fitting_mode == value) { + /* the LVDS scaling property is not changed */ + return 0; + } + intel_connector->panel.fitting_mode = value; + + crtc = intel_attached_encoder(connector)->base.crtc; + if (crtc && crtc->enabled) { + /* + * If the CRTC is enabled, the display will be changed + * according to the new panel fitting mode. + */ + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + } + + return 0; +} + +static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = { + .mode_fixup = intel_lvds_mode_fixup, + .mode_set = intel_lvds_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_helper_funcs intel_lvds_connector_helper_funcs = { + .get_modes = intel_lvds_get_modes, + .mode_valid = intel_lvds_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_connector_funcs intel_lvds_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_lvds_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_lvds_set_property, + .destroy = intel_lvds_destroy, +}; + +static const struct drm_encoder_funcs intel_lvds_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); + return 1; +} + +/* These systems claim to have LVDS, but really don't */ +static const struct dmi_system_id intel_no_lvds[] = { + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Apple Mac Mini (Core series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple"), + DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Apple Mac Mini (Core 2 series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple"), + DMI_MATCH(DMI_PRODUCT_NAME, "Macmini2,1"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "MSI IM-945GSE-A", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MSI"), + DMI_MATCH(DMI_PRODUCT_NAME, "A9830IMS"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Dell Studio Hybrid", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Dell OptiPlex FX170", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex FX170"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen Mini PC", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "AOpen"), + DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen Mini PC MP915", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i915GMx-F"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen i915GMm-HFS", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen i45GMx-I", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i45GMx-I"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Aopen i945GTt-VFA", + .matches = { + DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Clientron U800", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), + DMI_MATCH(DMI_PRODUCT_NAME, "U800"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Clientron E830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), + DMI_MATCH(DMI_PRODUCT_NAME, "E830"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Asus EeeBox PC EB1007", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "EB1007"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Asus AT5NM10T-I", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "AT5NM10T-I"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard HP t5740e Thin Client", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard t5745", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "hp t5745"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard st5747", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "hp st5747"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "MSI Wind Box DC500", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), + DMI_MATCH(DMI_BOARD_NAME, "MS-7469"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Gigabyte GA-D525TUD", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Supermicro X7SPA-H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), + DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), + }, + }, + { + .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 */ +}; + +/** + * intel_find_lvds_downclock - find the reduced downclock for LVDS in EDID + * @dev: drm device + * @connector: LVDS connector + * + * Find the reduced downclock for LVDS in EDID. + */ +static void intel_find_lvds_downclock(struct drm_device *dev, + struct drm_display_mode *fixed_mode, + struct drm_connector *connector) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_display_mode *scan; + int temp_downclock; + + temp_downclock = fixed_mode->clock; + list_for_each_entry(scan, &connector->probed_modes, head) { + /* + * If one mode has the same resolution with the fixed_panel + * mode while they have the different refresh rate, it means + * that the reduced downclock is found for the LVDS. In such + * case we can set the different FPx0/1 to dynamically select + * between low and high frequency. + */ + if (scan->hdisplay == fixed_mode->hdisplay && + scan->hsync_start == fixed_mode->hsync_start && + scan->hsync_end == fixed_mode->hsync_end && + scan->htotal == fixed_mode->htotal && + scan->vdisplay == fixed_mode->vdisplay && + scan->vsync_start == fixed_mode->vsync_start && + scan->vsync_end == fixed_mode->vsync_end && + scan->vtotal == fixed_mode->vtotal) { + if (scan->clock < temp_downclock) { + /* + * The downclock is already found. But we + * expect to find the lower downclock. + */ + temp_downclock = scan->clock; + } + } + } + if (temp_downclock < fixed_mode->clock && i915_lvds_downclock) { + /* We found the downclock for LVDS. */ + dev_priv->lvds_downclock_avail = 1; + dev_priv->lvds_downclock = temp_downclock; + DRM_DEBUG_KMS("LVDS downclock is found in EDID. " + "Normal clock %dKhz, downclock %dKhz\n", + fixed_mode->clock, temp_downclock); + } +} + +/* + * Enumerate the child dev array parsed from VBT to check whether + * the LVDS is present. + * If it is present, return 1. + * If it is not present, return false. + * If no child dev is parsed from VBT, it assumes that the LVDS is present. + */ +static bool lvds_is_present_in_vbt(struct drm_device *dev, + u8 *i2c_pin) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + if (!dev_priv->child_dev_num) + return true; + + for (i = 0; i < dev_priv->child_dev_num; i++) { + struct child_device_config *child = dev_priv->child_dev + i; + + /* If the device type is not LFP, continue. + * We have to check both the new identifiers as well as the + * old for compatibility with some BIOSes. + */ + if (child->device_type != DEVICE_TYPE_INT_LFP && + child->device_type != DEVICE_TYPE_LFP) + continue; + + if (intel_gmbus_is_port_valid(child->i2c_pin)) + *i2c_pin = child->i2c_pin; + + /* However, we cannot trust the BIOS writers to populate + * the VBT correctly. Since LVDS requires additional + * information from AIM blocks, a non-zero addin offset is + * a good indicator that the LVDS is actually present. + */ + if (child->addin_offset) + return true; + + /* But even then some BIOS writers perform some black magic + * and instantiate the device without reference to any + * additional data. Trust that if the VBT was written into + * the OpRegion then they have validated the LVDS's existence. + */ + if (dev_priv->opregion.vbt) + return true; + } + + return false; +} + +static bool intel_lvds_supported(struct drm_device *dev) +{ + /* With the introduction of the PCH we gained a dedicated + * LVDS presence pin, use it. */ + if (HAS_PCH_SPLIT(dev)) + return true; + + /* Otherwise LVDS was only attached to mobile products, + * except for the inglorious 830gm */ + return IS_MOBILE(dev) && !IS_I830(dev); +} + +/** + * intel_lvds_init - setup LVDS connectors on this device + * @dev: drm device + * + * Create the connector, register the LVDS DDC bus, and try to figure out what + * modes we can display on the LVDS panel (if present). + */ +bool intel_lvds_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_lvds_encoder *lvds_encoder; + struct intel_encoder *intel_encoder; + struct intel_lvds_connector *lvds_connector; + struct intel_connector *intel_connector; + struct drm_connector *connector; + struct drm_encoder *encoder; + struct drm_display_mode *scan; /* *modes, *bios_mode; */ + struct drm_display_mode *fixed_mode = NULL; + struct edid *edid; + struct drm_crtc *crtc; + u32 lvds; + int pipe; + u8 pin; + + if (!intel_lvds_supported(dev)) + return false; + + /* Skip init on machines we know falsely report LVDS */ + if (dmi_check_system(intel_no_lvds)) + return false; + + pin = GMBUS_PORT_PANEL; + if (!lvds_is_present_in_vbt(dev, &pin)) { + DRM_DEBUG_KMS("LVDS is not present in VBT\n"); + return false; + } + + if (HAS_PCH_SPLIT(dev)) { + if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0) + return false; + if (dev_priv->edp.support) { + DRM_DEBUG_KMS("disable LVDS for eDP support\n"); + return false; + } + } + + lvds_encoder = kzalloc(sizeof(struct intel_lvds_encoder), GFP_KERNEL); + if (!lvds_encoder) + return false; + + lvds_connector = kzalloc(sizeof(struct intel_lvds_connector), GFP_KERNEL); + if (!lvds_connector) { + kfree(lvds_encoder); + return false; + } + + lvds_encoder->attached_connector = lvds_connector; + + if (!HAS_PCH_SPLIT(dev)) { + lvds_encoder->pfit_control = I915_READ(PFIT_CONTROL); + } + + intel_encoder = &lvds_encoder->base; + encoder = &intel_encoder->base; + intel_connector = &lvds_connector->base; + connector = &intel_connector->base; + drm_connector_init(dev, &intel_connector->base, &intel_lvds_connector_funcs, + DRM_MODE_CONNECTOR_LVDS); + + drm_encoder_init(dev, &intel_encoder->base, &intel_lvds_enc_funcs, + DRM_MODE_ENCODER_LVDS); + + intel_encoder->enable = intel_enable_lvds; + intel_encoder->disable = intel_disable_lvds; + intel_encoder->get_hw_state = intel_lvds_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_connector_attach_encoder(intel_connector, intel_encoder); + intel_encoder->type = INTEL_OUTPUT_LVDS; + + intel_encoder->cloneable = false; + if (HAS_PCH_SPLIT(dev)) + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + else if (IS_GEN4(dev)) + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + else + intel_encoder->crtc_mask = (1 << 1); + + drm_encoder_helper_add(encoder, &intel_lvds_helper_funcs); + drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs); + connector->display_info.subpixel_order = SubPixelHorizontalRGB; + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + /* create the scaling mode property */ + drm_mode_create_scaling_mode_property(dev); + drm_object_attach_property(&connector->base, + dev->mode_config.scaling_mode_property, + DRM_MODE_SCALE_ASPECT); + intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + /* + * LVDS discovery: + * 1) check for EDID on DDC + * 2) check for VBT data + * 3) check to see if LVDS is already on + * if none of the above, no panel + * 4) make sure lid is open + * if closed, act like it's not there for now + */ + + /* + * Attempt to get the fixed panel mode from DDC. Assume that the + * preferred mode is the right one. + */ + edid = drm_get_edid(connector, intel_gmbus_get_adapter(dev_priv, pin)); + if (edid) { + if (drm_add_edid_modes(connector, edid)) { + drm_mode_connector_update_edid_property(connector, + edid); + } else { + kfree(edid); + edid = ERR_PTR(-EINVAL); + } + } else { + edid = ERR_PTR(-ENOENT); + } + lvds_connector->base.edid = edid; + + if (IS_ERR_OR_NULL(edid)) { + /* Didn't get an EDID, so + * Set wide sync ranges so we get all modes + * handed to valid_mode for checking + */ + connector->display_info.min_vfreq = 0; + connector->display_info.max_vfreq = 200; + connector->display_info.min_hfreq = 0; + connector->display_info.max_hfreq = 200; + } + + list_for_each_entry(scan, &connector->probed_modes, head) { + if (scan->type & DRM_MODE_TYPE_PREFERRED) { + DRM_DEBUG_KMS("using preferred mode from EDID: "); + drm_mode_debug_printmodeline(scan); + + fixed_mode = drm_mode_duplicate(dev, scan); + if (fixed_mode) { + intel_find_lvds_downclock(dev, fixed_mode, + connector); + goto out; + } + } + } + + /* Failed to get EDID, what about VBT? */ + if (dev_priv->lfp_lvds_vbt_mode) { + DRM_DEBUG_KMS("using mode from VBT: "); + drm_mode_debug_printmodeline(dev_priv->lfp_lvds_vbt_mode); + + fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode); + if (fixed_mode) { + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + goto out; + } + } + + /* + * If we didn't get EDID, try checking if the panel is already turned + * on. If so, assume that whatever is currently programmed is the + * correct mode. + */ + + /* Ironlake: FIXME if still fail, not try pipe mode now */ + if (HAS_PCH_SPLIT(dev)) + goto failed; + + lvds = I915_READ(LVDS); + pipe = (lvds & LVDS_PIPEB_SELECT) ? 1 : 0; + crtc = intel_get_crtc_for_pipe(dev, pipe); + + if (crtc && (lvds & LVDS_PORT_EN)) { + fixed_mode = intel_crtc_mode_get(dev, crtc); + if (fixed_mode) { + DRM_DEBUG_KMS("using current (BIOS) mode: "); + drm_mode_debug_printmodeline(fixed_mode); + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + goto out; + } + } + + /* If we still don't have a mode after all that, give up. */ + if (!fixed_mode) + goto failed; + +out: + /* + * Unlock registers and just + * leave them unlocked + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_PP_CONTROL, + I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS); + } else { + I915_WRITE(PP_CONTROL, + I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); + } + lvds_connector->lid_notifier.notifier_call = intel_lid_notify; + if (acpi_lid_notifier_register(&lvds_connector->lid_notifier)) { + DRM_DEBUG_KMS("lid notifier registration failed\n"); + lvds_connector->lid_notifier.notifier_call = NULL; + } + drm_sysfs_connector_add(connector); + + intel_panel_init(&intel_connector->panel, fixed_mode); + intel_panel_setup_backlight(connector); + + return true; + +failed: + DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); + drm_connector_cleanup(connector); + drm_encoder_cleanup(encoder); + if (fixed_mode) + drm_mode_destroy(dev, fixed_mode); + kfree(lvds_encoder); + kfree(lvds_connector); + return false; +} --- linux-3.5.0.orig/ubuntu/i915/intel_fb.c +++ linux-3.5.0/ubuntu/i915/intel_fb.c @@ -0,0 +1,294 @@ +/* + * Copyright © 2007 David Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * David Airlie + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +static struct fb_ops intelfb_ops = { + .owner = THIS_MODULE, + .fb_check_var = drm_fb_helper_check_var, + .fb_set_par = drm_fb_helper_set_par, + .fb_fillrect = cfb_fillrect, + .fb_copyarea = cfb_copyarea, + .fb_imageblit = cfb_imageblit, + .fb_pan_display = drm_fb_helper_pan_display, + .fb_blank = drm_fb_helper_blank, + .fb_setcmap = drm_fb_helper_setcmap, + .fb_debug_enter = drm_fb_helper_debug_enter, + .fb_debug_leave = drm_fb_helper_debug_leave, +}; + +static int intelfb_create(struct intel_fbdev *ifbdev, + struct drm_fb_helper_surface_size *sizes) +{ + struct drm_device *dev = ifbdev->helper.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct fb_info *info; + struct drm_framebuffer *fb; + struct drm_mode_fb_cmd2 mode_cmd = {}; + struct drm_i915_gem_object *obj; + struct device *device = &dev->pdev->dev; + int size, ret; + + /* we don't do packed 24bpp */ + if (sizes->surface_bpp == 24) + sizes->surface_bpp = 32; + + mode_cmd.width = sizes->surface_width; + mode_cmd.height = sizes->surface_height; + + mode_cmd.pitches[0] = ALIGN(mode_cmd.width * ((sizes->surface_bpp + 7) / + 8), 64); + mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, + sizes->surface_depth); + + size = mode_cmd.pitches[0] * mode_cmd.height; + size = ALIGN(size, PAGE_SIZE); + obj = i915_gem_alloc_object(dev, size); + if (!obj) { + DRM_ERROR("failed to allocate framebuffer\n"); + ret = -ENOMEM; + goto out; + } + + mutex_lock(&dev->struct_mutex); + + /* Flush everything out, we'll be doing GTT only from now on */ + ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + if (ret) { + DRM_ERROR("failed to pin fb: %d\n", ret); + goto out_unref; + } + + info = framebuffer_alloc(0, device); + if (!info) { + ret = -ENOMEM; + goto out_unpin; + } + + info->par = ifbdev; + + ret = intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, obj); + if (ret) + goto out_unpin; + + fb = &ifbdev->ifb.base; + + ifbdev->helper.fb = fb; + ifbdev->helper.fbdev = info; + + strcpy(info->fix.id, "inteldrmfb"); + + info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT; + info->fbops = &intelfb_ops; + + ret = fb_alloc_cmap(&info->cmap, 256, 0); + if (ret) { + ret = -ENOMEM; + goto out_unpin; + } + /* setup aperture base/size for vesafb takeover */ + info->apertures = alloc_apertures(1); + if (!info->apertures) { + ret = -ENOMEM; + goto out_unpin; + } + info->apertures->ranges[0].base = dev->mode_config.fb_base; + info->apertures->ranges[0].size = + dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + + info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset; + info->fix.smem_len = size; + + info->screen_base = + ioremap_wc(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + size); + if (!info->screen_base) { + ret = -ENOSPC; + goto out_unpin; + } + info->screen_size = size; + +// memset(info->screen_base, 0, size); + + drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); + drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height); + + /* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */ + + DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08x, bo %p\n", + fb->width, fb->height, + obj->gtt_offset, obj); + + + mutex_unlock(&dev->struct_mutex); + vga_switcheroo_client_fb_set(dev->pdev, info); + return 0; + +out_unpin: + i915_gem_object_unpin(obj); +out_unref: + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); +out: + return ret; +} + +static int intel_fb_find_or_create_single(struct drm_fb_helper *helper, + struct drm_fb_helper_surface_size *sizes) +{ + struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper; + int new_fb = 0; + int ret; + + if (!helper->fb) { + ret = intelfb_create(ifbdev, sizes); + if (ret) + return ret; + new_fb = 1; + } + return new_fb; +} + +static struct drm_fb_helper_funcs intel_fb_helper_funcs = { + .gamma_set = intel_crtc_fb_gamma_set, + .gamma_get = intel_crtc_fb_gamma_get, + .fb_probe = intel_fb_find_or_create_single, +}; + +static void intel_fbdev_destroy(struct drm_device *dev, + struct intel_fbdev *ifbdev) +{ + struct fb_info *info; + struct intel_framebuffer *ifb = &ifbdev->ifb; + + if (ifbdev->helper.fbdev) { + info = ifbdev->helper.fbdev; + unregister_framebuffer(info); + iounmap(info->screen_base); + if (info->cmap.len) + fb_dealloc_cmap(&info->cmap); + framebuffer_release(info); + } + + drm_fb_helper_fini(&ifbdev->helper); + + drm_framebuffer_cleanup(&ifb->base); + if (ifb->obj) { + drm_gem_object_unreference_unlocked(&ifb->obj->base); + ifb->obj = NULL; + } +} + +int intel_fbdev_init(struct drm_device *dev) +{ + struct intel_fbdev *ifbdev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL); + if (!ifbdev) + return -ENOMEM; + + dev_priv->fbdev = ifbdev; + ifbdev->helper.funcs = &intel_fb_helper_funcs; + + ret = drm_fb_helper_init(dev, &ifbdev->helper, + dev_priv->num_pipe, + INTELFB_CONN_LIMIT); + if (ret) { + kfree(ifbdev); + return ret; + } + + drm_fb_helper_single_add_all_connectors(&ifbdev->helper); + drm_fb_helper_initial_config(&ifbdev->helper, 32); + return 0; +} + +void intel_fbdev_fini(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + if (!dev_priv->fbdev) + return; + + intel_fbdev_destroy(dev, dev_priv->fbdev); + kfree(dev_priv->fbdev); + dev_priv->fbdev = NULL; +} + +void intel_fbdev_set_suspend(struct drm_device *dev, int state) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + if (!dev_priv->fbdev) + return; + + fb_set_suspend(dev_priv->fbdev->helper.fbdev, state); +} + +MODULE_LICENSE("GPL and additional rights"); + +void intel_fb_output_poll_changed(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper); +} + +void intel_fb_restore_mode(struct drm_device *dev) +{ + int ret; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_mode_config *config = &dev->mode_config; + struct drm_plane *plane; + + mutex_lock(&dev->mode_config.mutex); + + ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper); + if (ret) + DRM_DEBUG("failed to restore crtc mode\n"); + + /* Be sure to shut off any planes that may be active */ + list_for_each_entry(plane, &config->plane_list, head) + plane->funcs->disable_plane(plane); + + mutex_unlock(&dev->mode_config.mutex); +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem.c +++ linux-3.5.0/ubuntu/i915/i915_gem.c @@ -0,0 +1,4438 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" +#include +#include +#include +#include +#include + +static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj); +static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj); +static __must_check int i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj, + unsigned alignment, + bool map_and_fenceable, + bool nonblocking); +static int i915_gem_phys_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file); + +static void i915_gem_write_fence(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj); +static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, + struct drm_i915_fence_reg *fence, + bool enable); + +static int i915_gem_inactive_shrink(struct shrinker *shrinker, + struct shrink_control *sc); +static long i915_gem_purge(struct drm_i915_private *dev_priv, long target); +static void i915_gem_shrink_all(struct drm_i915_private *dev_priv); +static void i915_gem_object_truncate(struct drm_i915_gem_object *obj); + +static inline void i915_gem_object_fence_lost(struct drm_i915_gem_object *obj) +{ + if (obj->tiling_mode) + i915_gem_release_mmap(obj); + + /* As we do not have an associated fence register, we will force + * a tiling change if we ever need to acquire one. + */ + obj->fence_dirty = false; + obj->fence_reg = I915_FENCE_REG_NONE; +} + +/* some bookkeeping */ +static void i915_gem_info_add_obj(struct drm_i915_private *dev_priv, + size_t size) +{ + dev_priv->mm.object_count++; + dev_priv->mm.object_memory += size; +} + +static void i915_gem_info_remove_obj(struct drm_i915_private *dev_priv, + size_t size) +{ + dev_priv->mm.object_count--; + dev_priv->mm.object_memory -= size; +} + +static int +i915_gem_wait_for_error(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct completion *x = &dev_priv->error_completion; + unsigned long flags; + int ret; + + if (!atomic_read(&dev_priv->mm.wedged)) + return 0; + + /* + * Only wait 10 seconds for the gpu reset to complete to avoid hanging + * userspace. If it takes that long something really bad is going on and + * we should simply try to bail out and fail as gracefully as possible. + */ + ret = wait_for_completion_interruptible_timeout(x, 10*HZ); + if (ret == 0) { + DRM_ERROR("Timed out waiting for the gpu reset to complete\n"); + return -EIO; + } else if (ret < 0) { + return ret; + } + + if (atomic_read(&dev_priv->mm.wedged)) { + /* GPU is hung, bump the completion count to account for + * the token we just consumed so that we never hit zero and + * end up waiting upon a subsequent completion event that + * will never happen. + */ + spin_lock_irqsave(&x->wait.lock, flags); + x->done++; + spin_unlock_irqrestore(&x->wait.lock, flags); + } + return 0; +} + +int i915_mutex_lock_interruptible(struct drm_device *dev) +{ + int ret; + + ret = i915_gem_wait_for_error(dev); + if (ret) + return ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + WARN_ON(i915_verify_lists(dev)); + return 0; +} + +static inline bool +i915_gem_object_is_inactive(struct drm_i915_gem_object *obj) +{ + return obj->gtt_space && !obj->active; +} + +int +i915_gem_init_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_init *args = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (args->gtt_start >= args->gtt_end || + (args->gtt_end | args->gtt_start) & (PAGE_SIZE - 1)) + return -EINVAL; + + /* GEM with user mode setting was never supported on ilk and later. */ + if (INTEL_INFO(dev)->gen >= 5) + return -ENODEV; + + mutex_lock(&dev->struct_mutex); + i915_gem_init_global_gtt(dev, args->gtt_start, + args->gtt_end, args->gtt_end); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +int +i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_get_aperture *args = data; + struct drm_i915_gem_object *obj; + size_t pinned; + + pinned = 0; + mutex_lock(&dev->struct_mutex); + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) + if (obj->pin_count) + pinned += obj->gtt_space->size; + mutex_unlock(&dev->struct_mutex); + + args->aper_size = dev_priv->mm.gtt_total; + args->aper_available_size = args->aper_size - pinned; + + return 0; +} + +static int +i915_gem_create(struct drm_file *file, + struct drm_device *dev, + uint64_t size, + uint32_t *handle_p) +{ + struct drm_i915_gem_object *obj; + int ret; + u32 handle; + + size = roundup(size, PAGE_SIZE); + if (size == 0) + return -EINVAL; + + /* Allocate the new object */ + obj = i915_gem_alloc_object(dev, size); + if (obj == NULL) + return -ENOMEM; + + ret = drm_gem_handle_create(file, &obj->base, &handle); + if (ret) { + drm_gem_object_release(&obj->base); + i915_gem_info_remove_obj(dev->dev_private, obj->base.size); + kfree(obj); + return ret; + } + + /* drop reference from allocate - handle holds it now */ + drm_gem_object_unreference(&obj->base); + trace_i915_gem_object_create(obj); + + *handle_p = handle; + return 0; +} + +int +i915_gem_dumb_create(struct drm_file *file, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ + /* have to work out size/pitch and return them */ + args->pitch = ALIGN(args->width * ((args->bpp + 7) / 8), 64); + args->size = args->pitch * args->height; + return i915_gem_create(file, dev, + args->size, &args->handle); +} + +int i915_gem_dumb_destroy(struct drm_file *file, + struct drm_device *dev, + uint32_t handle) +{ + return drm_gem_handle_delete(file, handle); +} + +/** + * Creates a new mm object and returns a handle to it. + */ +int +i915_gem_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_create *args = data; + + return i915_gem_create(file, dev, + args->size, &args->handle); +} + +static int i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + + return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && + obj->tiling_mode != I915_TILING_NONE; +} + +static inline int +__copy_to_user_swizzled(char __user *cpu_vaddr, + const char *gpu_vaddr, int gpu_offset, + int length) +{ + int ret, cpu_offset = 0; + + while (length > 0) { + int cacheline_end = ALIGN(gpu_offset + 1, 64); + int this_length = min(cacheline_end - gpu_offset, length); + int swizzled_gpu_offset = gpu_offset ^ 64; + + ret = __copy_to_user(cpu_vaddr + cpu_offset, + gpu_vaddr + swizzled_gpu_offset, + this_length); + if (ret) + return ret + length; + + cpu_offset += this_length; + gpu_offset += this_length; + length -= this_length; + } + + return 0; +} + +static inline int +__copy_from_user_swizzled(char *gpu_vaddr, int gpu_offset, + const char __user *cpu_vaddr, + int length) +{ + int ret, cpu_offset = 0; + + while (length > 0) { + int cacheline_end = ALIGN(gpu_offset + 1, 64); + int this_length = min(cacheline_end - gpu_offset, length); + int swizzled_gpu_offset = gpu_offset ^ 64; + + ret = __copy_from_user(gpu_vaddr + swizzled_gpu_offset, + cpu_vaddr + cpu_offset, + this_length); + if (ret) + return ret + length; + + cpu_offset += this_length; + gpu_offset += this_length; + length -= this_length; + } + + return 0; +} + +/* Per-page copy function for the shmem pread fastpath. + * Flushes invalid cachelines before reading the target if + * needs_clflush is set. */ +static int +shmem_pread_fast(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, bool needs_clflush) +{ + char *vaddr; + int ret; + + if (unlikely(page_do_bit17_swizzling)) + return -EINVAL; + + vaddr = kmap_atomic(page); + if (needs_clflush) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + ret = __copy_to_user_inatomic(user_data, + vaddr + shmem_page_offset, + page_length); + kunmap_atomic(vaddr); + + return ret ? -EFAULT : 0; +} + +static void +shmem_clflush_swizzled_range(char *addr, unsigned long length, + bool swizzled) +{ + if (unlikely(swizzled)) { + unsigned long start = (unsigned long) addr; + unsigned long end = (unsigned long) addr + length; + + /* For swizzling simply ensure that we always flush both + * channels. Lame, but simple and it works. Swizzled + * pwrite/pread is far from a hotpath - current userspace + * doesn't use it at all. */ + start = round_down(start, 128); + end = round_up(end, 128); + + drm_clflush_virt_range((void *)start, end - start); + } else { + drm_clflush_virt_range(addr, length); + } + +} + +/* Only difference to the fast-path function is that this can handle bit17 + * and uses non-atomic copy and kmap functions. */ +static int +shmem_pread_slow(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, bool needs_clflush) +{ + char *vaddr; + int ret; + + vaddr = kmap(page); + if (needs_clflush) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + + if (page_do_bit17_swizzling) + ret = __copy_to_user_swizzled(user_data, + vaddr, shmem_page_offset, + page_length); + else + ret = __copy_to_user(user_data, + vaddr + shmem_page_offset, + page_length); + kunmap(page); + + return ret ? - EFAULT : 0; +} + +static int +i915_gem_shmem_pread(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pread *args, + struct drm_file *file) +{ + char __user *user_data; + ssize_t remain; + loff_t offset; + int shmem_page_offset, page_length, ret = 0; + int obj_do_bit17_swizzling, page_do_bit17_swizzling; + int hit_slowpath = 0; + int prefaulted = 0; + int needs_clflush = 0; + struct scatterlist *sg; + int i; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj); + + if (!(obj->base.read_domains & I915_GEM_DOMAIN_CPU)) { + /* If we're not in the cpu read domain, set ourself into the gtt + * read domain and manually flush cachelines (if required). This + * optimizes for the case when the gpu will dirty the data + * anyway again before the next pread happens. */ + if (obj->cache_level == I915_CACHE_NONE) + needs_clflush = 1; + if (obj->gtt_space) { + ret = i915_gem_object_set_to_gtt_domain(obj, false); + if (ret) + return ret; + } + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + offset = args->offset; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) { + struct page *page; + + if (i < offset >> PAGE_SHIFT) + continue; + + if (remain <= 0) + break; + + /* Operation in this page + * + * shmem_page_offset = offset within page in shmem file + * page_length = bytes to copy for this page + */ + shmem_page_offset = offset_in_page(offset); + page_length = remain; + if ((shmem_page_offset + page_length) > PAGE_SIZE) + page_length = PAGE_SIZE - shmem_page_offset; + + page = sg_page(sg); + page_do_bit17_swizzling = obj_do_bit17_swizzling && + (page_to_phys(page) & (1 << 17)) != 0; + + ret = shmem_pread_fast(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + needs_clflush); + if (ret == 0) + goto next_page; + + hit_slowpath = 1; + mutex_unlock(&dev->struct_mutex); + + if (!prefaulted) { + ret = fault_in_multipages_writeable(user_data, remain); + /* Userspace is tricking us, but we've already clobbered + * its pages with the prefault and promised to write the + * data up to the first fault. Hence ignore any errors + * and just continue. */ + (void)ret; + prefaulted = 1; + } + + ret = shmem_pread_slow(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + needs_clflush); + + mutex_lock(&dev->struct_mutex); + +next_page: + mark_page_accessed(page); + + if (ret) + goto out; + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out: + i915_gem_object_unpin_pages(obj); + + if (hit_slowpath) { + /* Fixup: Kill any reinstated backing storage pages */ + if (obj->madv == __I915_MADV_PURGED) + i915_gem_object_truncate(obj); + } + + return ret; +} + +/** + * Reads data from the object referenced by handle. + * + * On error, the contents of *data are undefined. + */ +int +i915_gem_pread_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pread *args = data; + struct drm_i915_gem_object *obj; + int ret = 0; + + if (args->size == 0) + return 0; + + if (!access_ok(VERIFY_WRITE, + (char __user *)(uintptr_t)args->data_ptr, + args->size)) + return -EFAULT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Bounds check source. */ + if (args->offset > obj->base.size || + args->size > obj->base.size - args->offset) { + ret = -EINVAL; + goto out; + } + + /* prime objects have no backing filp to GEM pread/pwrite + * pages from. + */ + if (!obj->base.filp) { + ret = -EINVAL; + goto out; + } + + trace_i915_gem_object_pread(obj, args->offset, args->size); + + ret = i915_gem_shmem_pread(dev, obj, args, file); + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/* This is the fast write path which cannot handle + * page faults in the source data + */ + +static inline int +fast_user_write(struct io_mapping *mapping, + loff_t page_base, int page_offset, + char __user *user_data, + int length) +{ + void __iomem *vaddr_atomic; + void *vaddr; + unsigned long unwritten; + + vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base); + /* We can use the cpu mem copy function because this is X86. */ + vaddr = (void __force*)vaddr_atomic + page_offset; + unwritten = __copy_from_user_inatomic_nocache(vaddr, + user_data, length); + io_mapping_unmap_atomic(vaddr_atomic); + return unwritten; +} + +/** + * This is the fast pwrite path, where we copy the data directly from the + * user into the GTT, uncached. + */ +static int +i915_gem_gtt_pwrite_fast(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + ssize_t remain; + loff_t offset, page_base; + char __user *user_data; + int page_offset, page_length, ret; + + ret = i915_gem_object_pin(obj, 0, true, true); + if (ret) + goto out; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + goto out_unpin; + + ret = i915_gem_object_put_fence(obj); + if (ret) + goto out_unpin; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + offset = obj->gtt_offset + args->offset; + + while (remain > 0) { + /* Operation in this page + * + * page_base = page offset within aperture + * page_offset = offset within page + * page_length = bytes to copy for this page + */ + page_base = offset & PAGE_MASK; + page_offset = offset_in_page(offset); + page_length = remain; + if ((page_offset + remain) > PAGE_SIZE) + page_length = PAGE_SIZE - page_offset; + + /* If we get a fault while copying data, then (presumably) our + * source page isn't available. Return the error and we'll + * retry in the slow path. + */ + if (fast_user_write(dev_priv->mm.gtt_mapping, page_base, + page_offset, user_data, page_length)) { + ret = -EFAULT; + goto out_unpin; + } + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out_unpin: + i915_gem_object_unpin(obj); +out: + return ret; +} + +/* Per-page copy function for the shmem pwrite fastpath. + * Flushes invalid cachelines before writing to the target if + * needs_clflush_before is set and flushes out any written cachelines after + * writing if needs_clflush is set. */ +static int +shmem_pwrite_fast(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, + bool needs_clflush_before, + bool needs_clflush_after) +{ + char *vaddr; + int ret; + + if (unlikely(page_do_bit17_swizzling)) + return -EINVAL; + + vaddr = kmap_atomic(page); + if (needs_clflush_before) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + ret = __copy_from_user_inatomic_nocache(vaddr + shmem_page_offset, + user_data, + page_length); + if (needs_clflush_after) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + kunmap_atomic(vaddr); + + return ret ? -EFAULT : 0; +} + +/* Only difference to the fast-path function is that this can handle bit17 + * and uses non-atomic copy and kmap functions. */ +static int +shmem_pwrite_slow(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, + bool needs_clflush_before, + bool needs_clflush_after) +{ + char *vaddr; + int ret; + + vaddr = kmap(page); + if (unlikely(needs_clflush_before || page_do_bit17_swizzling)) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + if (page_do_bit17_swizzling) + ret = __copy_from_user_swizzled(vaddr, shmem_page_offset, + user_data, + page_length); + else + ret = __copy_from_user(vaddr + shmem_page_offset, + user_data, + page_length); + if (needs_clflush_after) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + kunmap(page); + + return ret ? -EFAULT : 0; +} + +static int +i915_gem_shmem_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file) +{ + ssize_t remain; + loff_t offset; + char __user *user_data; + int shmem_page_offset, page_length, ret = 0; + int obj_do_bit17_swizzling, page_do_bit17_swizzling; + int hit_slowpath = 0; + int needs_clflush_after = 0; + int needs_clflush_before = 0; + int i; + struct scatterlist *sg; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj); + + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + /* If we're not in the cpu write domain, set ourself into the gtt + * write domain and manually flush cachelines (if required). This + * optimizes for the case when the gpu will use the data + * right away and we therefore have to clflush anyway. */ + if (obj->cache_level == I915_CACHE_NONE) + needs_clflush_after = 1; + if (obj->gtt_space) { + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + return ret; + } + } + /* Same trick applies for invalidate partially written cachelines before + * writing. */ + if (!(obj->base.read_domains & I915_GEM_DOMAIN_CPU) + && obj->cache_level == I915_CACHE_NONE) + needs_clflush_before = 1; + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + offset = args->offset; + obj->dirty = 1; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) { + struct page *page; + int partial_cacheline_write; + + if (i < offset >> PAGE_SHIFT) + continue; + + if (remain <= 0) + break; + + /* Operation in this page + * + * shmem_page_offset = offset within page in shmem file + * page_length = bytes to copy for this page + */ + shmem_page_offset = offset_in_page(offset); + + page_length = remain; + if ((shmem_page_offset + page_length) > PAGE_SIZE) + page_length = PAGE_SIZE - shmem_page_offset; + + /* If we don't overwrite a cacheline completely we need to be + * careful to have up-to-date data by first clflushing. Don't + * overcomplicate things and flush the entire patch. */ + partial_cacheline_write = needs_clflush_before && + ((shmem_page_offset | page_length) + & (boot_cpu_data.x86_clflush_size - 1)); + + page = sg_page(sg); + page_do_bit17_swizzling = obj_do_bit17_swizzling && + (page_to_phys(page) & (1 << 17)) != 0; + + ret = shmem_pwrite_fast(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + partial_cacheline_write, + needs_clflush_after); + if (ret == 0) + goto next_page; + + hit_slowpath = 1; + mutex_unlock(&dev->struct_mutex); + ret = shmem_pwrite_slow(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + partial_cacheline_write, + needs_clflush_after); + + mutex_lock(&dev->struct_mutex); + +next_page: + set_page_dirty(page); + mark_page_accessed(page); + + if (ret) + goto out; + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out: + i915_gem_object_unpin_pages(obj); + + if (hit_slowpath) { + /* Fixup: Kill any reinstated backing storage pages */ + if (obj->madv == __I915_MADV_PURGED) + i915_gem_object_truncate(obj); + /* and flush dirty cachelines in case the object isn't in the cpu write + * domain anymore. */ + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + i915_gem_clflush_object(obj); + i915_gem_chipset_flush(dev); + } + } + + if (needs_clflush_after) + i915_gem_chipset_flush(dev); + + return ret; +} + +/** + * Writes data to the object referenced by handle. + * + * On error, the contents of the buffer that were to be modified are undefined. + */ +int +i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pwrite *args = data; + struct drm_i915_gem_object *obj; + int ret; + + if (args->size == 0) + return 0; + + if (!access_ok(VERIFY_READ, + (char __user *)(uintptr_t)args->data_ptr, + args->size)) + return -EFAULT; + + ret = fault_in_multipages_readable((char __user *)(uintptr_t)args->data_ptr, + args->size); + if (ret) + return -EFAULT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Bounds check destination. */ + if (args->offset > obj->base.size || + args->size > obj->base.size - args->offset) { + ret = -EINVAL; + goto out; + } + + /* prime objects have no backing filp to GEM pread/pwrite + * pages from. + */ + if (!obj->base.filp) { + ret = -EINVAL; + goto out; + } + + trace_i915_gem_object_pwrite(obj, args->offset, args->size); + + ret = -EFAULT; + /* We can only do the GTT pwrite on untiled buffers, as otherwise + * it would end up going through the fenced access, and we'll get + * different detiling behavior between reading and writing. + * pread/pwrite currently are reading and writing from the CPU + * perspective, requiring manual detiling by the client. + */ + if (obj->phys_obj) { + ret = i915_gem_phys_pwrite(dev, obj, args, file); + goto out; + } + + if (obj->cache_level == I915_CACHE_NONE && + obj->tiling_mode == I915_TILING_NONE && + obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + ret = i915_gem_gtt_pwrite_fast(dev, obj, args, file); + /* Note that the gtt paths might fail with non-page-backed user + * pointers (e.g. gtt mappings when moving data between + * textures). Fallback to the shmem path in that case. */ + } + + if (ret == -EFAULT || ret == -ENOSPC) + ret = i915_gem_shmem_pwrite(dev, obj, args, file); + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_check_wedge(struct drm_i915_private *dev_priv, + bool interruptible) +{ + if (atomic_read(&dev_priv->mm.wedged)) { + struct completion *x = &dev_priv->error_completion; + bool recovery_complete; + unsigned long flags; + + /* Give the error handler a chance to run. */ + spin_lock_irqsave(&x->wait.lock, flags); + recovery_complete = x->done > 0; + spin_unlock_irqrestore(&x->wait.lock, flags); + + /* Non-interruptible callers can't handle -EAGAIN, hence return + * -EIO unconditionally for these. */ + if (!interruptible) + return -EIO; + + /* Recovery complete, but still wedged means reset failure. */ + if (recovery_complete) + return -EIO; + + return -EAGAIN; + } + + return 0; +} + +/* + * Compare seqno against outstanding lazy request. Emit a request if they are + * equal. + */ +static int +i915_gem_check_olr(struct intel_ring_buffer *ring, u32 seqno) +{ + int ret; + + BUG_ON(!mutex_is_locked(&ring->dev->struct_mutex)); + + ret = 0; + if (seqno == ring->outstanding_lazy_request) + ret = i915_add_request(ring, NULL, NULL); + + return ret; +} + +/** + * __wait_seqno - wait until execution of seqno has finished + * @ring: the ring expected to report seqno + * @seqno: duh! + * @interruptible: do an interruptible wait (normally yes) + * @timeout: in - how long to wait (NULL forever); out - how much time remaining + * + * Returns 0 if the seqno was found within the alloted time. Else returns the + * errno with remaining time filled in timeout argument. + */ +static int __wait_seqno(struct intel_ring_buffer *ring, u32 seqno, + bool interruptible, struct timespec *timeout) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + struct timespec before, now, wait_time={1,0}; + unsigned long timeout_jiffies; + long end; + bool wait_forever = true; + int ret; + + if (i915_seqno_passed(ring->get_seqno(ring, true), seqno)) + return 0; + + trace_i915_gem_request_wait_begin(ring, seqno); + + if (timeout != NULL) { + wait_time = *timeout; + wait_forever = false; + } + + timeout_jiffies = timespec_to_jiffies(&wait_time); + + if (WARN_ON(!ring->irq_get(ring))) + return -ENODEV; + + /* Record current time in case interrupted by signal, or wedged * */ + getrawmonotonic(&before); + +#define EXIT_COND \ + (i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \ + atomic_read(&dev_priv->mm.wedged)) + do { + if (interruptible) + end = wait_event_interruptible_timeout(ring->irq_queue, + EXIT_COND, + timeout_jiffies); + else + end = wait_event_timeout(ring->irq_queue, EXIT_COND, + timeout_jiffies); + + ret = i915_gem_check_wedge(dev_priv, interruptible); + if (ret) + end = ret; + } while (end == 0 && wait_forever); + + getrawmonotonic(&now); + + ring->irq_put(ring); + trace_i915_gem_request_wait_end(ring, seqno); +#undef EXIT_COND + + if (timeout) { + struct timespec sleep_time = timespec_sub(now, before); + *timeout = timespec_sub(*timeout, sleep_time); + } + + switch (end) { + case -EIO: + case -EAGAIN: /* Wedged */ + case -ERESTARTSYS: /* Signal */ + return (int)end; + case 0: /* Timeout */ + if (timeout) + set_normalized_timespec(timeout, 0, 0); + return -ETIME; + default: /* Completed */ + WARN_ON(end < 0); /* We're not aware of other errors */ + return 0; + } +} + +/** + * Waits for a sequence number to be signaled, and cleans up the + * request and object lists appropriately for that event. + */ +int +i915_wait_seqno(struct intel_ring_buffer *ring, uint32_t seqno) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool interruptible = dev_priv->mm.interruptible; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(seqno == 0); + + ret = i915_gem_check_wedge(dev_priv, interruptible); + if (ret) + return ret; + + ret = i915_gem_check_olr(ring, seqno); + if (ret) + return ret; + + return __wait_seqno(ring, seqno, interruptible, NULL); +} + +/** + * Ensures that all rendering to the object has completed and the object is + * safe to unbind from the GTT or access from the CPU. + */ +static __must_check int +i915_gem_object_wait_rendering(struct drm_i915_gem_object *obj, + bool readonly) +{ + struct intel_ring_buffer *ring = obj->ring; + u32 seqno; + int ret; + + seqno = readonly ? obj->last_write_seqno : obj->last_read_seqno; + if (seqno == 0) + return 0; + + ret = i915_wait_seqno(ring, seqno); + if (ret) + return ret; + + i915_gem_retire_requests_ring(ring); + + /* Manually manage the write flush as we may have not yet + * retired the buffer. + */ + if (obj->last_write_seqno && + i915_seqno_passed(seqno, obj->last_write_seqno)) { + obj->last_write_seqno = 0; + obj->base.write_domain &= ~I915_GEM_GPU_DOMAINS; + } + + return 0; +} + +/* A nonblocking variant of the above wait. This is a highly dangerous routine + * as the object state may change during this call. + */ +static __must_check int +i915_gem_object_wait_rendering__nonblocking(struct drm_i915_gem_object *obj, + bool readonly) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = obj->ring; + u32 seqno; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!dev_priv->mm.interruptible); + + seqno = readonly ? obj->last_write_seqno : obj->last_read_seqno; + if (seqno == 0) + return 0; + + ret = i915_gem_check_wedge(dev_priv, true); + if (ret) + return ret; + + ret = i915_gem_check_olr(ring, seqno); + if (ret) + return ret; + + mutex_unlock(&dev->struct_mutex); + ret = __wait_seqno(ring, seqno, true, NULL); + mutex_lock(&dev->struct_mutex); + + i915_gem_retire_requests_ring(ring); + + /* Manually manage the write flush as we may have not yet + * retired the buffer. + */ + if (obj->last_write_seqno && + i915_seqno_passed(seqno, obj->last_write_seqno)) { + obj->last_write_seqno = 0; + obj->base.write_domain &= ~I915_GEM_GPU_DOMAINS; + } + + return ret; +} + +/** + * Called when user space prepares to use an object with the CPU, either + * through the mmap ioctl's mapping or a GTT mapping. + */ +int +i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_set_domain *args = data; + struct drm_i915_gem_object *obj; + uint32_t read_domains = args->read_domains; + uint32_t write_domain = args->write_domain; + int ret; + + /* Only handle setting domains to types used by the CPU. */ + if (write_domain & I915_GEM_GPU_DOMAINS) + return -EINVAL; + + if (read_domains & I915_GEM_GPU_DOMAINS) + return -EINVAL; + + /* Having something in the write domain implies it's in the read + * domain, and only that read domain. Enforce that in the request. + */ + if (write_domain != 0 && read_domains != write_domain) + return -EINVAL; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Try to flush the object off the GPU without holding the lock. + * We will repeat the flush holding the lock in the normal manner + * to catch cases where we are gazumped. + */ + ret = i915_gem_object_wait_rendering__nonblocking(obj, !write_domain); + if (ret) + goto unref; + + if (read_domains & I915_GEM_DOMAIN_GTT) { + ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0); + + /* Silently promote "you're not bound, there was nothing to do" + * to success, since the client was just asking us to + * make sure everything was done. + */ + if (ret == -EINVAL) + ret = 0; + } else { + ret = i915_gem_object_set_to_cpu_domain(obj, write_domain != 0); + } + +unref: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * Called when user space has done writes to this buffer + */ +int +i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_sw_finish *args = data; + struct drm_i915_gem_object *obj; + int ret = 0; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Pinned buffers may be scanout, so flush the cache */ + if (obj->pin_count) + i915_gem_object_flush_cpu_write_domain(obj); + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * Maps the contents of an object, returning the address it is mapped + * into. + * + * While the mapping holds a reference on the contents of the object, it doesn't + * imply a ref on the object itself. + */ +int +i915_gem_mmap_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_mmap *args = data; + struct drm_gem_object *obj; + unsigned long addr; + + obj = drm_gem_object_lookup(dev, file, args->handle); + if (obj == NULL) + return -ENOENT; + + /* prime objects have no backing filp to GEM mmap + * pages from. + */ + if (!obj->filp) { + drm_gem_object_unreference_unlocked(obj); + return -EINVAL; + } + + addr = vm_mmap(obj->filp, 0, args->size, + PROT_READ | PROT_WRITE, MAP_SHARED, + args->offset); + drm_gem_object_unreference_unlocked(obj); + if (IS_ERR((void *)addr)) + return addr; + + args->addr_ptr = (uint64_t) addr; + + return 0; +} + +/** + * i915_gem_fault - fault a page into the GTT + * vma: VMA in question + * vmf: fault info + * + * The fault handler is set up by drm_gem_mmap() when a object is GTT mapped + * from userspace. The fault handler takes care of binding the object to + * the GTT (if needed), allocating and programming a fence register (again, + * only if needed based on whether the old reg is still valid or the object + * is tiled) and inserting a new PTE into the faulting process. + * + * Note that the faulting process may involve evicting existing objects + * from the GTT and/or fence registers to make room. So performance may + * suffer if the GTT working set is large or there are few fence registers + * left. + */ +int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + struct drm_i915_gem_object *obj = to_intel_bo(vma->vm_private_data); + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + pgoff_t page_offset; + unsigned long pfn; + int ret = 0; + bool write = !!(vmf->flags & FAULT_FLAG_WRITE); + + /* We don't use vmf->pgoff since that has the fake offset */ + page_offset = ((unsigned long)vmf->virtual_address - vma->vm_start) >> + PAGE_SHIFT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto out; + + trace_i915_gem_object_fault(obj, page_offset, true, write); + + /* Now bind it into the GTT if needed */ + ret = i915_gem_object_pin(obj, 0, true, false); + if (ret) + goto unlock; + + ret = i915_gem_object_set_to_gtt_domain(obj, write); + if (ret) + goto unpin; + + ret = i915_gem_object_get_fence(obj); + if (ret) + goto unpin; + + obj->fault_mappable = true; + + pfn = ((dev_priv->mm.gtt_base_addr + obj->gtt_offset) >> PAGE_SHIFT) + + page_offset; + + /* Finally, remap it using the new GTT offset */ + ret = vm_insert_pfn(vma, (unsigned long)vmf->virtual_address, pfn); +unpin: + i915_gem_object_unpin(obj); +unlock: + mutex_unlock(&dev->struct_mutex); +out: + switch (ret) { + case -EIO: + /* If this -EIO is due to a gpu hang, give the reset code a + * chance to clean up the mess. Otherwise return the proper + * SIGBUS. */ + if (!atomic_read(&dev_priv->mm.wedged)) + return VM_FAULT_SIGBUS; + case -EAGAIN: + /* Give the error handler a chance to run and move the + * objects off the GPU active list. Next time we service the + * fault, we should be able to transition the page into the + * GTT without touching the GPU (and so avoid further + * EIO/EGAIN). If the GPU is wedged, then there is no issue + * with coherency, just lost writes. + */ + set_need_resched(); + case 0: + case -ERESTARTSYS: + case -EINTR: + case -EBUSY: + /* + * EBUSY is ok: this just means that another thread + * already did the job. + */ + return VM_FAULT_NOPAGE; + case -ENOMEM: + return VM_FAULT_OOM; + case -ENOSPC: + return VM_FAULT_SIGBUS; + default: + WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", ret); + return VM_FAULT_SIGBUS; + } +} + +/** + * i915_gem_release_mmap - remove physical page mappings + * @obj: obj in question + * + * Preserve the reservation of the mmapping with the DRM core code, but + * relinquish ownership of the pages back to the system. + * + * It is vital that we remove the page mapping if we have mapped a tiled + * object through the GTT and then lose the fence register due to + * resource pressure. Similarly if the object has been moved out of the + * aperture, than pages mapped into userspace must be revoked. Removing the + * mapping will then trigger a page fault on the next user access, allowing + * fixup by i915_gem_fault(). + */ +void +i915_gem_release_mmap(struct drm_i915_gem_object *obj) +{ + if (!obj->fault_mappable) + return; + + if (obj->base.dev->dev_mapping) + unmap_mapping_range(obj->base.dev->dev_mapping, + (loff_t)obj->base.map_list.hash.key<base.size, 1); + + obj->fault_mappable = false; +} + +static uint32_t +i915_gem_get_gtt_size(struct drm_device *dev, uint32_t size, int tiling_mode) +{ + uint32_t gtt_size; + + if (INTEL_INFO(dev)->gen >= 4 || + tiling_mode == I915_TILING_NONE) + return size; + + /* Previous chips need a power-of-two fence region when tiling */ + if (INTEL_INFO(dev)->gen == 3) + gtt_size = 1024*1024; + else + gtt_size = 512*1024; + + while (gtt_size < size) + gtt_size <<= 1; + + return gtt_size; +} + +/** + * i915_gem_get_gtt_alignment - return required GTT alignment for an object + * @obj: object to check + * + * Return the required GTT alignment for an object, taking into account + * potential fence register mapping. + */ +static uint32_t +i915_gem_get_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode) +{ + /* + * Minimum alignment is 4k (GTT page size), but might be greater + * if a fence register is needed for the object. + */ + if (INTEL_INFO(dev)->gen >= 4 || + tiling_mode == I915_TILING_NONE) + return 4096; + + /* + * Previous chips need to be aligned to the size of the smallest + * fence register that can contain the object. + */ + return i915_gem_get_gtt_size(dev, size, tiling_mode); +} + +/** + * i915_gem_get_unfenced_gtt_alignment - return required GTT alignment for an + * unfenced object + * @dev: the device + * @size: size of the object + * @tiling_mode: tiling mode of the object + * + * Return the required GTT alignment for an object, only taking into account + * unfenced tiled surface requirements. + */ +uint32_t +i915_gem_get_unfenced_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode) +{ + /* + * Minimum alignment is 4k (GTT page size) for sane hw. + */ + if (INTEL_INFO(dev)->gen >= 4 || IS_G33(dev) || + tiling_mode == I915_TILING_NONE) + return 4096; + + /* Previous hardware however needs to be aligned to a power-of-two + * tile height. The simplest method for determining this is to reuse + * the power-of-tile object size. + */ + return i915_gem_get_gtt_size(dev, size, tiling_mode); +} + +static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int ret; + + if (obj->base.map_list.map) + return 0; + + dev_priv->mm.shrinker_no_lock_stealing = true; + + ret = drm_gem_create_mmap_offset(&obj->base); + if (ret != -ENOSPC) + goto out; + + /* Badly fragmented mmap space? The only way we can recover + * space is by destroying unwanted objects. We can't randomly release + * mmap_offsets as userspace expects them to be persistent for the + * lifetime of the objects. The closest we can is to release the + * offsets on purgeable objects by truncating it and marking it purged, + * which prevents userspace from ever using that object again. + */ + i915_gem_purge(dev_priv, obj->base.size >> PAGE_SHIFT); + ret = drm_gem_create_mmap_offset(&obj->base); + if (ret != -ENOSPC) + goto out; + + i915_gem_shrink_all(dev_priv); + ret = drm_gem_create_mmap_offset(&obj->base); +out: + dev_priv->mm.shrinker_no_lock_stealing = false; + + return ret; +} + +static void i915_gem_object_free_mmap_offset(struct drm_i915_gem_object *obj) +{ + if (!obj->base.map_list.map) + return; + + drm_gem_free_mmap_offset(&obj->base); +} + +int +i915_gem_mmap_gtt(struct drm_file *file, + struct drm_device *dev, + uint32_t handle, + uint64_t *offset) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->base.size > dev_priv->mm.gtt_mappable_end) { + ret = -E2BIG; + goto out; + } + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to mmap a purgeable buffer\n"); + ret = -EINVAL; + goto out; + } + + ret = i915_gem_object_create_mmap_offset(obj); + if (ret) + goto out; + + *offset = (u64)obj->base.map_list.hash.key << PAGE_SHIFT; + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing + * @dev: DRM device + * @data: GTT mapping ioctl data + * @file: GEM object info + * + * Simply returns the fake offset to userspace so it can mmap it. + * The mmap call will end up in drm_gem_mmap(), which will set things + * up so we can get faults in the handler above. + * + * The fault handler will take care of binding the object into the GTT + * (since it may have been evicted to make room for something), allocating + * a fence register, and mapping the appropriate aperture address into + * userspace. + */ +int +i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_mmap_gtt *args = data; + + return i915_gem_mmap_gtt(file, dev, args->handle, &args->offset); +} + +/* Immediately discard the backing storage */ +static void +i915_gem_object_truncate(struct drm_i915_gem_object *obj) +{ + struct inode *inode; + + i915_gem_object_free_mmap_offset(obj); + + if (obj->base.filp == NULL) + return; + + /* Our goal here is to return as much of the memory as + * is possible back to the system as we are called from OOM. + * To do this we must instruct the shmfs to drop all of its + * backing pages, *now*. + */ + inode = obj->base.filp->f_path.dentry->d_inode; + shmem_truncate_range(inode, 0, (loff_t)-1); + + obj->madv = __I915_MADV_PURGED; +} + +static inline int +i915_gem_object_is_purgeable(struct drm_i915_gem_object *obj) +{ + return obj->madv == I915_MADV_DONTNEED; +} + +static void +i915_gem_object_put_pages_gtt(struct drm_i915_gem_object *obj) +{ + int page_count = obj->base.size / PAGE_SIZE; + struct scatterlist *sg; + int ret, i; + + BUG_ON(obj->madv == __I915_MADV_PURGED); + + ret = i915_gem_object_set_to_cpu_domain(obj, true); + if (ret) { + /* In the event of a disaster, abandon all caches and + * hope for the best. + */ + WARN_ON(ret != -EIO); + i915_gem_clflush_object(obj); + obj->base.read_domains = obj->base.write_domain = I915_GEM_DOMAIN_CPU; + } + + if (i915_gem_object_needs_bit17_swizzle(obj)) + i915_gem_object_save_bit_17_swizzle(obj); + + if (obj->madv == I915_MADV_DONTNEED) + obj->dirty = 0; + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + + if (obj->dirty) + set_page_dirty(page); + + if (obj->madv == I915_MADV_WILLNEED) + mark_page_accessed(page); + + page_cache_release(page); + } + obj->dirty = 0; + + sg_free_table(obj->pages); + kfree(obj->pages); +} + +static int +i915_gem_object_put_pages(struct drm_i915_gem_object *obj) +{ + const struct drm_i915_gem_object_ops *ops = obj->ops; + + if (obj->pages == NULL) + return 0; + + BUG_ON(obj->gtt_space); + + if (obj->pages_pin_count) + return -EBUSY; + + /* ->put_pages might need to allocate memory for the bit17 swizzle + * array, hence protect them from being reaped by removing them from gtt + * lists early. */ + list_del(&obj->gtt_list); + + ops->put_pages(obj); + obj->pages = NULL; + + if (i915_gem_object_is_purgeable(obj)) + i915_gem_object_truncate(obj); + + return 0; +} + +static long +__i915_gem_shrink(struct drm_i915_private *dev_priv, long target, + bool purgeable_only) +{ + struct drm_i915_gem_object *obj, *next; + long count = 0; + + list_for_each_entry_safe(obj, next, + &dev_priv->mm.unbound_list, + gtt_list) { + if ((i915_gem_object_is_purgeable(obj) || !purgeable_only) && + i915_gem_object_put_pages(obj) == 0) { + count += obj->base.size >> PAGE_SHIFT; + if (count >= target) + return count; + } + } + + list_for_each_entry_safe(obj, next, + &dev_priv->mm.inactive_list, + mm_list) { + if ((i915_gem_object_is_purgeable(obj) || !purgeable_only) && + i915_gem_object_unbind(obj) == 0 && + i915_gem_object_put_pages(obj) == 0) { + count += obj->base.size >> PAGE_SHIFT; + if (count >= target) + return count; + } + } + + return count; +} + +static long +i915_gem_purge(struct drm_i915_private *dev_priv, long target) +{ + return __i915_gem_shrink(dev_priv, target, true); +} + +static void +i915_gem_shrink_all(struct drm_i915_private *dev_priv) +{ + struct drm_i915_gem_object *obj, *next; + + i915_gem_evict_everything(dev_priv->dev); + + list_for_each_entry_safe(obj, next, &dev_priv->mm.unbound_list, gtt_list) + i915_gem_object_put_pages(obj); +} + +static int +i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int page_count, i; + struct address_space *mapping; + struct sg_table *st; + struct scatterlist *sg; + struct page *page; + gfp_t gfp; + + /* Assert that the object is not currently in any GPU domain. As it + * wasn't in the GTT, there shouldn't be any way it could have been in + * a GPU cache + */ + BUG_ON(obj->base.read_domains & I915_GEM_GPU_DOMAINS); + BUG_ON(obj->base.write_domain & I915_GEM_GPU_DOMAINS); + + st = kmalloc(sizeof(*st), GFP_KERNEL); + if (st == NULL) + return -ENOMEM; + + page_count = obj->base.size / PAGE_SIZE; + if (sg_alloc_table(st, page_count, GFP_KERNEL)) { + sg_free_table(st); + kfree(st); + return -ENOMEM; + } + + /* Get the list of pages out of our struct file. They'll be pinned + * at this point until we release them. + * + * Fail silently without starting the shrinker + */ + mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + gfp = mapping_gfp_mask(mapping); + gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; + gfp &= ~(__GFP_IO | __GFP_WAIT); + for_each_sg(st->sgl, sg, page_count, i) { + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + if (IS_ERR(page)) { + i915_gem_purge(dev_priv, page_count); + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + } + if (IS_ERR(page)) { + /* We've tried hard to allocate the memory by reaping + * our own buffer, now let the real VM do its job and + * go down in flames if truly OOM. + */ + gfp &= ~(__GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD); + gfp |= __GFP_IO | __GFP_WAIT; + + i915_gem_shrink_all(dev_priv); + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + if (IS_ERR(page)) + goto err_pages; + + gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; + gfp &= ~(__GFP_IO | __GFP_WAIT); + } + + sg_set_page(sg, page, PAGE_SIZE, 0); + } + + obj->pages = st; + + if (i915_gem_object_needs_bit17_swizzle(obj)) + i915_gem_object_do_bit_17_swizzle(obj); + + return 0; + +err_pages: + for_each_sg(st->sgl, sg, i, page_count) + page_cache_release(sg_page(sg)); + sg_free_table(st); + kfree(st); + return PTR_ERR(page); +} + +/* Ensure that the associated pages are gathered from the backing storage + * and pinned into our object. i915_gem_object_get_pages() may be called + * multiple times before they are released by a single call to + * i915_gem_object_put_pages() - once the pages are no longer referenced + * either as a result of memory pressure (reaping pages under the shrinker) + * or as the object is itself released. + */ +int +i915_gem_object_get_pages(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + const struct drm_i915_gem_object_ops *ops = obj->ops; + int ret; + + if (obj->pages) + return 0; + + BUG_ON(obj->pages_pin_count); + + ret = ops->get_pages(obj); + if (ret) + return ret; + + list_add_tail(&obj->gtt_list, &dev_priv->mm.unbound_list); + return 0; +} + +void +i915_gem_object_move_to_active(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 seqno = intel_ring_get_seqno(ring); + + BUG_ON(ring == NULL); + obj->ring = ring; + + /* Add a reference if we're newly entering the active list. */ + if (!obj->active) { + drm_gem_object_reference(&obj->base); + obj->active = 1; + } + + /* Move from whatever list we were on to the tail of execution. */ + list_move_tail(&obj->mm_list, &dev_priv->mm.active_list); + list_move_tail(&obj->ring_list, &ring->active_list); + + obj->last_read_seqno = seqno; + + if (obj->fenced_gpu_access) { + obj->last_fenced_seqno = seqno; + + /* Bump MRU to take account of the delayed flush */ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_fence_reg *reg; + + reg = &dev_priv->fence_regs[obj->fence_reg]; + list_move_tail(®->lru_list, + &dev_priv->mm.fence_list); + } + } +} + +static void +i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + BUG_ON(obj->base.write_domain & ~I915_GEM_GPU_DOMAINS); + BUG_ON(!obj->active); + + list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + list_del_init(&obj->ring_list); + obj->ring = NULL; + + obj->last_read_seqno = 0; + obj->last_write_seqno = 0; + obj->base.write_domain = 0; + + obj->last_fenced_seqno = 0; + obj->fenced_gpu_access = false; + + obj->active = 0; + drm_gem_object_unreference(&obj->base); + + WARN_ON(i915_verify_lists(dev)); +} + +static int +i915_gem_handle_seqno_wrap(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i, j; + + /* The hardware uses various monotonic 32-bit counters, if we + * detect that they will wraparound we need to idle the GPU + * and reset those counters. + */ + ret = 0; + for_each_ring(ring, dev_priv, i) { + for (j = 0; j < ARRAY_SIZE(ring->sync_seqno); j++) + ret |= ring->sync_seqno[j] != 0; + } + if (ret == 0) + return ret; + + ret = i915_gpu_idle(dev); + if (ret) + return ret; + + i915_gem_retire_requests(dev); + for_each_ring(ring, dev_priv, i) { + for (j = 0; j < ARRAY_SIZE(ring->sync_seqno); j++) + ring->sync_seqno[j] = 0; + } + + return 0; +} + +int +i915_gem_get_seqno(struct drm_device *dev, u32 *seqno) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* reserve 0 for non-seqno */ + if (dev_priv->next_seqno == 0) { + int ret = i915_gem_handle_seqno_wrap(dev); + if (ret) + return ret; + + dev_priv->next_seqno = 1; + } + + *seqno = dev_priv->next_seqno++; + return 0; +} + +int +i915_add_request(struct intel_ring_buffer *ring, + struct drm_file *file, + u32 *out_seqno) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + struct drm_i915_gem_request *request; + u32 request_ring_position; + int was_empty; + int ret; + + /* + * Emit any outstanding flushes - execbuf can fail to emit the flush + * after having emitted the batchbuffer command. Hence we need to fix + * things up similar to emitting the lazy request. The difference here + * is that the flush _must_ happen before the next request, no matter + * what. + */ + ret = intel_ring_flush_all_caches(ring); + if (ret) + return ret; + + request = kmalloc(sizeof(*request), GFP_KERNEL); + if (request == NULL) + return -ENOMEM; + + + /* Record the position of the start of the request so that + * should we detect the updated seqno part-way through the + * GPU processing the request, we never over-estimate the + * position of the head. + */ + request_ring_position = intel_ring_get_tail(ring); + + ret = ring->add_request(ring); + if (ret) { + kfree(request); + return ret; + } + + request->seqno = intel_ring_get_seqno(ring); + request->ring = ring; + request->tail = request_ring_position; + request->emitted_jiffies = jiffies; + was_empty = list_empty(&ring->request_list); + list_add_tail(&request->list, &ring->request_list); + request->file_priv = NULL; + + if (file) { + struct drm_i915_file_private *file_priv = file->driver_priv; + + spin_lock(&file_priv->mm.lock); + request->file_priv = file_priv; + list_add_tail(&request->client_list, + &file_priv->mm.request_list); + spin_unlock(&file_priv->mm.lock); + } + + trace_i915_gem_request_add(ring, request->seqno); + ring->outstanding_lazy_request = 0; + + if (!dev_priv->mm.suspended) { + if (i915_enable_hangcheck) { + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); + } + if (was_empty) { + queue_delayed_work(dev_priv->wq, + &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + intel_mark_busy(dev_priv->dev); + } + } + + if (out_seqno) + *out_seqno = request->seqno; + return 0; +} + +static inline void +i915_gem_request_remove_from_client(struct drm_i915_gem_request *request) +{ + struct drm_i915_file_private *file_priv = request->file_priv; + + if (!file_priv) + return; + + spin_lock(&file_priv->mm.lock); + if (request->file_priv) { + list_del(&request->client_list); + request->file_priv = NULL; + } + spin_unlock(&file_priv->mm.lock); +} + +static void i915_gem_reset_ring_lists(struct drm_i915_private *dev_priv, + struct intel_ring_buffer *ring) +{ + while (!list_empty(&ring->request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&ring->request_list, + struct drm_i915_gem_request, + list); + + list_del(&request->list); + i915_gem_request_remove_from_client(request); + kfree(request); + } + + while (!list_empty(&ring->active_list)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&ring->active_list, + struct drm_i915_gem_object, + ring_list); + + i915_gem_object_move_to_inactive(obj); + } +} + +static void i915_gem_reset_fences(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + for (i = 0; i < dev_priv->num_fence_regs; i++) { + struct drm_i915_fence_reg *reg = &dev_priv->fence_regs[i]; + + i915_gem_write_fence(dev, i, NULL); + + if (reg->obj) + i915_gem_object_fence_lost(reg->obj); + + reg->pin_count = 0; + reg->obj = NULL; + INIT_LIST_HEAD(®->lru_list); + } + + INIT_LIST_HEAD(&dev_priv->mm.fence_list); +} + +void i915_gem_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + i915_gem_reset_ring_lists(dev_priv, ring); + + /* Move everything out of the GPU domains to ensure we do any + * necessary invalidation upon reuse. + */ + list_for_each_entry(obj, + &dev_priv->mm.inactive_list, + mm_list) + { + obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS; + } + + /* The fence registers are invalidated so clear them out */ + i915_gem_reset_fences(dev); +} + +/** + * This function clears the request list as sequence numbers are passed. + */ +void +i915_gem_retire_requests_ring(struct intel_ring_buffer *ring) +{ + uint32_t seqno; + + if (list_empty(&ring->request_list)) + return; + + WARN_ON(i915_verify_lists(ring->dev)); + + seqno = ring->get_seqno(ring, true); + + while (!list_empty(&ring->request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&ring->request_list, + struct drm_i915_gem_request, + list); + + if (!i915_seqno_passed(seqno, request->seqno)) + break; + + trace_i915_gem_request_retire(ring, request->seqno); + /* We know the GPU must have read the request to have + * sent us the seqno + interrupt, so use the position + * of tail of the request to update the last known position + * of the GPU head. + */ + ring->last_retired_head = request->tail; + + list_del(&request->list); + i915_gem_request_remove_from_client(request); + kfree(request); + } + + /* Move any buffers on the active list that are no longer referenced + * by the ringbuffer to the flushing/inactive lists as appropriate. + */ + while (!list_empty(&ring->active_list)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&ring->active_list, + struct drm_i915_gem_object, + ring_list); + + if (!i915_seqno_passed(seqno, obj->last_read_seqno)) + break; + + i915_gem_object_move_to_inactive(obj); + } + + if (unlikely(ring->trace_irq_seqno && + i915_seqno_passed(seqno, ring->trace_irq_seqno))) { + ring->irq_put(ring); + ring->trace_irq_seqno = 0; + } + + WARN_ON(i915_verify_lists(ring->dev)); +} + +void +i915_gem_retire_requests(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + i915_gem_retire_requests_ring(ring); +} + +static void +i915_gem_retire_work_handler(struct work_struct *work) +{ + drm_i915_private_t *dev_priv; + struct drm_device *dev; + struct intel_ring_buffer *ring; + bool idle; + int i; + + dev_priv = container_of(work, drm_i915_private_t, + mm.retire_work.work); + dev = dev_priv->dev; + + /* Come back later if the device is busy... */ + if (!mutex_trylock(&dev->struct_mutex)) { + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + return; + } + + i915_gem_retire_requests(dev); + + /* Send a periodic flush down the ring so we don't hold onto GEM + * objects indefinitely. + */ + idle = true; + for_each_ring(ring, dev_priv, i) { + if (ring->gpu_caches_dirty) + i915_add_request(ring, NULL, NULL); + + idle &= list_empty(&ring->request_list); + } + + if (!dev_priv->mm.suspended && !idle) + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + if (idle) + intel_mark_idle(dev); + + mutex_unlock(&dev->struct_mutex); +} + +/** + * Ensures that an object will eventually get non-busy by flushing any required + * write domains, emitting any outstanding lazy request and retiring and + * completed requests. + */ +static int +i915_gem_object_flush_active(struct drm_i915_gem_object *obj) +{ + int ret; + + if (obj->active) { + ret = i915_gem_check_olr(obj->ring, obj->last_read_seqno); + if (ret) + return ret; + + i915_gem_retire_requests_ring(obj->ring); + } + + return 0; +} + +/** + * i915_gem_wait_ioctl - implements DRM_IOCTL_I915_GEM_WAIT + * @DRM_IOCTL_ARGS: standard ioctl arguments + * + * Returns 0 if successful, else an error is returned with the remaining time in + * the timeout parameter. + * -ETIME: object is still busy after timeout + * -ERESTARTSYS: signal interrupted the wait + * -ENONENT: object doesn't exist + * Also possible, but rare: + * -EAGAIN: GPU wedged + * -ENOMEM: damn + * -ENODEV: Internal IRQ fail + * -E?: The add request failed + * + * The wait ioctl with a timeout of 0 reimplements the busy ioctl. With any + * non-zero timeout parameter the wait ioctl will wait for the given number of + * nanoseconds on an object becoming unbusy. Since the wait itself does so + * without holding struct_mutex the object may become re-busied before this + * function completes. A similar but shorter * race condition exists in the busy + * ioctl + */ +int +i915_gem_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file) +{ + struct drm_i915_gem_wait *args = data; + struct drm_i915_gem_object *obj; + struct intel_ring_buffer *ring = NULL; + struct timespec timeout_stack, *timeout = NULL; + u32 seqno = 0; + int ret = 0; + + if (args->timeout_ns >= 0) { + timeout_stack = ns_to_timespec(args->timeout_ns); + timeout = &timeout_stack; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->bo_handle)); + if (&obj->base == NULL) { + mutex_unlock(&dev->struct_mutex); + return -ENOENT; + } + + /* Need to make sure the object gets inactive eventually. */ + ret = i915_gem_object_flush_active(obj); + if (ret) + goto out; + + if (obj->active) { + seqno = obj->last_read_seqno; + ring = obj->ring; + } + + if (seqno == 0) + goto out; + + /* Do this after OLR check to make sure we make forward progress polling + * on this IOCTL with a 0 timeout (like busy ioctl) + */ + if (!args->timeout_ns) { + ret = -ETIME; + goto out; + } + + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + ret = __wait_seqno(ring, seqno, true, timeout); + if (timeout) { + WARN_ON(!timespec_valid(timeout)); + args->timeout_ns = timespec_to_ns(timeout); + } + return ret; + +out: + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * i915_gem_object_sync - sync an object to a ring. + * + * @obj: object which may be in use on another ring. + * @to: ring we wish to use the object on. May be NULL. + * + * This code is meant to abstract object synchronization with the GPU. + * Calling with NULL implies synchronizing the object with the CPU + * rather than a particular GPU ring. + * + * Returns 0 if successful, else propagates up the lower layer error. + */ +int +i915_gem_object_sync(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *to) +{ + struct intel_ring_buffer *from = obj->ring; + u32 seqno; + int ret, idx; + + if (from == NULL || to == from) + return 0; + + if (to == NULL || !i915_semaphore_is_enabled(obj->base.dev)) + return i915_gem_object_wait_rendering(obj, false); + + idx = intel_ring_sync_index(from, to); + + seqno = obj->last_read_seqno; + if (seqno <= from->sync_seqno[idx]) + return 0; + + ret = i915_gem_check_olr(obj->ring, seqno); + if (ret) + return ret; + + ret = to->sync_to(to, from, seqno); + if (!ret) + /* We use last_read_seqno because sync_to() + * might have just caused seqno wrap under + * the radar. + */ + from->sync_seqno[idx] = obj->last_read_seqno; + + return ret; +} + +static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj) +{ + u32 old_write_domain, old_read_domains; + + /* Act a barrier for all accesses through the GTT */ + mb(); + + /* Force a pagefault for domain tracking on next user access */ + i915_gem_release_mmap(obj); + + if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0) + return; + + old_read_domains = obj->base.read_domains; + old_write_domain = obj->base.write_domain; + + obj->base.read_domains &= ~I915_GEM_DOMAIN_GTT; + obj->base.write_domain &= ~I915_GEM_DOMAIN_GTT; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); +} + +/** + * Unbinds an object from the GTT aperture. + */ +int +i915_gem_object_unbind(struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + int ret = 0; + + if (obj->gtt_space == NULL) + return 0; + + if (obj->pin_count) + return -EBUSY; + + BUG_ON(obj->pages == NULL); + + ret = i915_gem_object_finish_gpu(obj); + if (ret) + return ret; + /* Continue on if we fail due to EIO, the GPU is hung so we + * should be safe and we need to cleanup or else we might + * cause memory corruption through use-after-free. + */ + + i915_gem_object_finish_gtt(obj); + + /* release the fence reg _after_ flushing */ + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + + trace_i915_gem_object_unbind(obj); + + if (obj->has_global_gtt_mapping) + i915_gem_gtt_unbind_object(obj); + if (obj->has_aliasing_ppgtt_mapping) { + i915_ppgtt_unbind_object(dev_priv->mm.aliasing_ppgtt, obj); + obj->has_aliasing_ppgtt_mapping = 0; + } + i915_gem_gtt_finish_object(obj); + + list_del(&obj->mm_list); + list_move_tail(&obj->gtt_list, &dev_priv->mm.unbound_list); + /* Avoid an unnecessary call to unbind on rebind. */ + obj->map_and_fenceable = true; + + drm_mm_put_block_hsw(obj->gtt_space); + obj->gtt_space = NULL; + obj->gtt_offset = 0; + + return 0; +} + +int i915_gpu_idle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i; + + /* Flush everything onto the inactive list. */ + for_each_ring(ring, dev_priv, i) { + ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); + if (ret) + return ret; + + ret = intel_ring_idle(ring); + if (ret) + return ret; + } + + return 0; +} + +static void sandybridge_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint64_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + + val = (uint64_t)((obj->gtt_offset + size - 4096) & + 0xfffff000) << 32; + val |= obj->gtt_offset & 0xfffff000; + val |= (uint64_t)((obj->stride / 128) - 1) << + SANDYBRIDGE_FENCE_PITCH_SHIFT; + + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I965_FENCE_TILING_Y_SHIFT; + val |= I965_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + reg * 8, val); + POSTING_READ(FENCE_REG_SANDYBRIDGE_0 + reg * 8); +} + +static void i965_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint64_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + + val = (uint64_t)((obj->gtt_offset + size - 4096) & + 0xfffff000) << 32; + val |= obj->gtt_offset & 0xfffff000; + val |= ((obj->stride / 128) - 1) << I965_FENCE_PITCH_SHIFT; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I965_FENCE_TILING_Y_SHIFT; + val |= I965_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE64(FENCE_REG_965_0 + reg * 8, val); + POSTING_READ(FENCE_REG_965_0 + reg * 8); +} + +static void i915_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 val; + + if (obj) { + u32 size = obj->gtt_space->size; + int pitch_val; + int tile_width; + + WARN((obj->gtt_offset & ~I915_FENCE_START_MASK) || + (size & -size) != size || + (obj->gtt_offset & (size - 1)), + "object 0x%08x [fenceable? %d] not 1M or pot-size (0x%08x) aligned\n", + obj->gtt_offset, obj->map_and_fenceable, size); + + if (obj->tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)) + tile_width = 128; + else + tile_width = 512; + + /* Note: pitch better be a power of two tile widths */ + pitch_val = obj->stride / tile_width; + pitch_val = ffs(pitch_val) - 1; + + val = obj->gtt_offset; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I830_FENCE_TILING_Y_SHIFT; + val |= I915_FENCE_SIZE_BITS(size); + val |= pitch_val << I830_FENCE_PITCH_SHIFT; + val |= I830_FENCE_REG_VALID; + } else + val = 0; + + if (reg < 8) + reg = FENCE_REG_830_0 + reg * 4; + else + reg = FENCE_REG_945_8 + (reg - 8) * 4; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void i830_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + uint32_t pitch_val; + + WARN((obj->gtt_offset & ~I830_FENCE_START_MASK) || + (size & -size) != size || + (obj->gtt_offset & (size - 1)), + "object 0x%08x not 512K or pot-size 0x%08x aligned\n", + obj->gtt_offset, size); + + pitch_val = obj->stride / 128; + pitch_val = ffs(pitch_val) - 1; + + val = obj->gtt_offset; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I830_FENCE_TILING_Y_SHIFT; + val |= I830_FENCE_SIZE_BITS(size); + val |= pitch_val << I830_FENCE_PITCH_SHIFT; + val |= I830_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE(FENCE_REG_830_0 + reg * 4, val); + POSTING_READ(FENCE_REG_830_0 + reg * 4); +} + +static void i915_gem_write_fence(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: sandybridge_write_fence_reg(dev, reg, obj); break; + case 5: + case 4: i965_write_fence_reg(dev, reg, obj); break; + case 3: i915_write_fence_reg(dev, reg, obj); break; + case 2: i830_write_fence_reg(dev, reg, obj); break; + default: break; + } +} + +static inline int fence_number(struct drm_i915_private *dev_priv, + struct drm_i915_fence_reg *fence) +{ + return fence - dev_priv->fence_regs; +} + +static void i915_gem_write_fence__ipi(void *data) +{ + wbinvd(); +} + +static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, + struct drm_i915_fence_reg *fence, + bool enable) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int fence_reg = fence_number(dev_priv, fence); + + /* In order to fully serialize access to the fenced region and + * the update to the fence register we need to take extreme + * measures on SNB+. In theory, the write to the fence register + * flushes all memory transactions before, and coupled with the + * mb() placed around the register write we serialise all memory + * operations with respect to the changes in the tiler. Yet, on + * SNB+ we need to take a step further and emit an explicit wbinvd() + * on each processor in order to manually flush all memory + * transactions before updating the fence register. + */ + if (HAS_LLC(obj->base.dev)) + on_each_cpu(i915_gem_write_fence__ipi, NULL, 1); + i915_gem_write_fence(dev, fence_reg, enable ? obj : NULL); + + if (enable) { + obj->fence_reg = fence_reg; + fence->obj = obj; + list_move_tail(&fence->lru_list, &dev_priv->mm.fence_list); + } else { + obj->fence_reg = I915_FENCE_REG_NONE; + fence->obj = NULL; + list_del_init(&fence->lru_list); + } +} + +static int +i915_gem_object_flush_fence(struct drm_i915_gem_object *obj) +{ + if (obj->last_fenced_seqno) { + int ret = i915_wait_seqno(obj->ring, obj->last_fenced_seqno); + if (ret) + return ret; + + obj->last_fenced_seqno = 0; + } + + /* Ensure that all CPU reads are completed before installing a fence + * and all writes before removing the fence. + */ + if (obj->base.read_domains & I915_GEM_DOMAIN_GTT) + mb(); + + obj->fenced_gpu_access = false; + return 0; +} + +int +i915_gem_object_put_fence(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int ret; + + ret = i915_gem_object_flush_fence(obj); + if (ret) + return ret; + + if (obj->fence_reg == I915_FENCE_REG_NONE) + return 0; + + i915_gem_object_update_fence(obj, + &dev_priv->fence_regs[obj->fence_reg], + false); + i915_gem_object_fence_lost(obj); + + return 0; +} + +static struct drm_i915_fence_reg * +i915_find_fence_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_fence_reg *reg, *avail; + int i; + + /* First try to find a free reg */ + avail = NULL; + for (i = dev_priv->fence_reg_start; i < dev_priv->num_fence_regs; i++) { + reg = &dev_priv->fence_regs[i]; + if (!reg->obj) + return reg; + + if (!reg->pin_count) + avail = reg; + } + + if (avail == NULL) + return NULL; + + /* None available, try to steal one or wait for a user to finish */ + list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) { + if (reg->pin_count) + continue; + + return reg; + } + + return NULL; +} + +/** + * i915_gem_object_get_fence - set up fencing for an object + * @obj: object to map through a fence reg + * + * When mapping objects through the GTT, userspace wants to be able to write + * to them without having to worry about swizzling if the object is tiled. + * This function walks the fence regs looking for a free one for @obj, + * stealing one if it can't find any. + * + * It then sets up the reg based on the object's properties: address, pitch + * and tiling format. + * + * For an untiled surface, this removes any existing fence. + */ +int +i915_gem_object_get_fence(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool enable = obj->tiling_mode != I915_TILING_NONE; + struct drm_i915_fence_reg *reg; + int ret; + + /* Have we updated the tiling parameters upon the object and so + * will need to serialise the write to the associated fence register? + */ + if (obj->fence_dirty) { + ret = i915_gem_object_flush_fence(obj); + if (ret) + return ret; + } + + /* Just update our place in the LRU if our fence is getting reused. */ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + reg = &dev_priv->fence_regs[obj->fence_reg]; + if (!obj->fence_dirty) { + list_move_tail(®->lru_list, + &dev_priv->mm.fence_list); + return 0; + } + } else if (enable) { + reg = i915_find_fence_reg(dev); + if (reg == NULL) + return -EDEADLK; + + if (reg->obj) { + struct drm_i915_gem_object *old = reg->obj; + + ret = i915_gem_object_flush_fence(old); + if (ret) + return ret; + + i915_gem_object_fence_lost(old); + } + } else + return 0; + + i915_gem_object_update_fence(obj, reg, enable); + obj->fence_dirty = false; + + return 0; +} + +static bool i915_gem_valid_gtt_space(struct drm_device *dev, + struct drm_mm_node_hsw *gtt_space, + unsigned long cache_level) +{ + struct drm_mm_node_hsw *other; + + /* On non-LLC machines we have to be careful when putting differing + * types of snoopable memory together to avoid the prefetcher + * crossing memory domains and dieing. + */ + if (HAS_LLC(dev)) + return true; + + if (gtt_space == NULL) + return true; + + if (list_empty(>t_space->node_list)) + return true; + + other = list_entry(gtt_space->node_list.prev, struct drm_mm_node_hsw, node_list); + if (other->allocated && !other->hole_follows && other->color != cache_level) + return false; + + other = list_entry(gtt_space->node_list.next, struct drm_mm_node_hsw, node_list); + if (other->allocated && !gtt_space->hole_follows && other->color != cache_level) + return false; + + return true; +} + +static void i915_gem_verify_gtt(struct drm_device *dev) +{ +#if WATCH_GTT + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int err = 0; + + list_for_each_entry(obj, &dev_priv->mm.gtt_list, gtt_list) { + if (obj->gtt_space == NULL) { + printk(KERN_ERR "object found on GTT list with no space reserved\n"); + err++; + continue; + } + + if (obj->cache_level != obj->gtt_space->color) { + printk(KERN_ERR "object reserved space [%08lx, %08lx] with wrong color, cache_level=%x, color=%lx\n", + obj->gtt_space->start, + obj->gtt_space->start + obj->gtt_space->size, + obj->cache_level, + obj->gtt_space->color); + err++; + continue; + } + + if (!i915_gem_valid_gtt_space(dev, + obj->gtt_space, + obj->cache_level)) { + printk(KERN_ERR "invalid GTT space found at [%08lx, %08lx] - color=%x\n", + obj->gtt_space->start, + obj->gtt_space->start + obj->gtt_space->size, + obj->cache_level); + err++; + continue; + } + } + + WARN_ON(err); +#endif +} + +/** + * Finds free space in the GTT aperture and binds the object there. + */ +static int +i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj, + unsigned alignment, + bool map_and_fenceable, + bool nonblocking) +{ + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_mm_node_hsw *node; + u32 size, fence_size, fence_alignment, unfenced_alignment; + bool mappable, fenceable; + int ret; + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to bind a purgeable object\n"); + return -EINVAL; + } + + fence_size = i915_gem_get_gtt_size(dev, + obj->base.size, + obj->tiling_mode); + fence_alignment = i915_gem_get_gtt_alignment(dev, + obj->base.size, + obj->tiling_mode); + unfenced_alignment = + i915_gem_get_unfenced_gtt_alignment(dev, + obj->base.size, + obj->tiling_mode); + + if (alignment == 0) + alignment = map_and_fenceable ? fence_alignment : + unfenced_alignment; + if (map_and_fenceable && alignment & (fence_alignment - 1)) { + DRM_ERROR("Invalid object alignment requested %u\n", alignment); + return -EINVAL; + } + + size = map_and_fenceable ? fence_size : obj->base.size; + + /* If the object is bigger than the entire aperture, reject it early + * before evicting everything in a vain attempt to find space. + */ + if (obj->base.size > + (map_and_fenceable ? dev_priv->mm.gtt_mappable_end : dev_priv->mm.gtt_total)) { + DRM_ERROR("Attempting to bind an object larger than the aperture\n"); + return -E2BIG; + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + node = kzalloc(sizeof(*node), GFP_KERNEL); + if (node == NULL) { + i915_gem_object_unpin_pages(obj); + return -ENOMEM; + } + + search_free: + if (map_and_fenceable) + ret = drm_mm_insert_node_in_range_generic_hsw(&dev_priv->mm.gtt_space, node, + size, alignment, obj->cache_level, + 0, dev_priv->mm.gtt_mappable_end); + else + ret = drm_mm_insert_node_generic_hsw(&dev_priv->mm.gtt_space, node, + size, alignment, obj->cache_level); + if (ret) { + ret = i915_gem_evict_something(dev, size, alignment, + obj->cache_level, + map_and_fenceable, + nonblocking); + if (ret == 0) + goto search_free; + + i915_gem_object_unpin_pages(obj); + kfree(node); + return ret; + } + if (WARN_ON(!i915_gem_valid_gtt_space(dev, node, obj->cache_level))) { + i915_gem_object_unpin_pages(obj); + drm_mm_put_block_hsw(node); + return -EINVAL; + } + + ret = i915_gem_gtt_prepare_object(obj); + if (ret) { + i915_gem_object_unpin_pages(obj); + drm_mm_put_block_hsw(node); + return ret; + } + + list_move_tail(&obj->gtt_list, &dev_priv->mm.bound_list); + list_add_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + obj->gtt_space = node; + obj->gtt_offset = node->start; + + fenceable = + node->size == fence_size && + (node->start & (fence_alignment - 1)) == 0; + + mappable = + obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end; + + obj->map_and_fenceable = mappable && fenceable; + + i915_gem_object_unpin_pages(obj); + trace_i915_gem_object_bind(obj, map_and_fenceable); + i915_gem_verify_gtt(dev); + return 0; +} + +void +i915_gem_clflush_object(struct drm_i915_gem_object *obj) +{ + /* If we don't have a page list set up, then we're not pinned + * to GPU, and we can ignore the cache flush because it'll happen + * again at bind time. + */ + if (obj->pages == NULL) + return; + + /* If the GPU is snooping the contents of the CPU cache, + * we do not need to manually clear the CPU cache lines. However, + * the caches are only snooped when the render cache is + * flushed/invalidated. As we always have to emit invalidations + * and flushes when moving into and out of the RENDER domain, correct + * snooping behaviour occurs naturally as the result of our domain + * tracking. + */ + if (obj->cache_level != I915_CACHE_NONE) + return; + + trace_i915_gem_object_clflush(obj); + + drm_clflush_sg(obj->pages); +} + +/** Flushes the GTT write domain for the object if it's dirty. */ +static void +i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj) +{ + uint32_t old_write_domain; + + if (obj->base.write_domain != I915_GEM_DOMAIN_GTT) + return; + + /* No actual flushing is required for the GTT write domain. Writes + * to it immediately go to main memory as far as we know, so there's + * no chipset flush. It also doesn't land in render cache. + * + * However, we do have to enforce the order so that all writes through + * the GTT land before any writes to the device, such as updates to + * the GATT itself. + */ + wmb(); + + old_write_domain = obj->base.write_domain; + obj->base.write_domain = 0; + + trace_i915_gem_object_change_domain(obj, + obj->base.read_domains, + old_write_domain); +} + +/** Flushes the CPU write domain for the object if it's dirty. */ +static void +i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj) +{ + uint32_t old_write_domain; + + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) + return; + + i915_gem_clflush_object(obj); + i915_gem_chipset_flush(obj->base.dev); + old_write_domain = obj->base.write_domain; + obj->base.write_domain = 0; + + trace_i915_gem_object_change_domain(obj, + obj->base.read_domains, + old_write_domain); +} + +/** + * Moves a single object to the GTT read, and possibly write domain. + * + * This function returns when the move is complete, including waiting on + * flushes to occur. + */ +int +i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + uint32_t old_write_domain, old_read_domains; + int ret; + + /* Not valid to be called on unbound objects. */ + if (obj->gtt_space == NULL) + return -EINVAL; + + if (obj->base.write_domain == I915_GEM_DOMAIN_GTT) + return 0; + + ret = i915_gem_object_wait_rendering(obj, !write); + if (ret) + return ret; + + i915_gem_object_flush_cpu_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + BUG_ON((obj->base.write_domain & ~I915_GEM_DOMAIN_GTT) != 0); + obj->base.read_domains |= I915_GEM_DOMAIN_GTT; + if (write) { + obj->base.read_domains = I915_GEM_DOMAIN_GTT; + obj->base.write_domain = I915_GEM_DOMAIN_GTT; + obj->dirty = 1; + } + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + /* And bump the LRU for this access */ + if (i915_gem_object_is_inactive(obj)) + list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + return 0; +} + +int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (obj->cache_level == cache_level) + return 0; + + if (obj->pin_count) { + DRM_DEBUG("can not change the cache level of pinned objects\n"); + return -EBUSY; + } + + if (!i915_gem_valid_gtt_space(dev, obj->gtt_space, cache_level)) { + ret = i915_gem_object_unbind(obj); + if (ret) + return ret; + } + + if (obj->gtt_space) { + ret = i915_gem_object_finish_gpu(obj); + if (ret) + return ret; + + i915_gem_object_finish_gtt(obj); + + /* Before SandyBridge, you could not use tiling or fence + * registers with snooped memory, so relinquish any fences + * currently pointing to our region in the aperture. + */ + if (INTEL_INFO(dev)->gen < 6) { + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + } + + if (obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(obj, cache_level); + if (obj->has_aliasing_ppgtt_mapping) + i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt, + obj, cache_level); + + obj->gtt_space->color = cache_level; + } + + if (cache_level == I915_CACHE_NONE) { + u32 old_read_domains, old_write_domain; + + /* If we're coming from LLC cached, then we haven't + * actually been tracking whether the data is in the + * CPU cache or not, since we only allow one bit set + * in obj->write_domain and have been skipping the clflushes. + * Just set it to the CPU cache for now. + */ + WARN_ON(obj->base.write_domain & ~I915_GEM_DOMAIN_CPU); + WARN_ON(obj->base.read_domains & ~I915_GEM_DOMAIN_CPU); + + old_read_domains = obj->base.read_domains; + old_write_domain = obj->base.write_domain; + + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + } + + obj->cache_level = cache_level; + i915_gem_verify_gtt(dev); + return 0; +} + +int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_caching *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + args->caching = obj->cache_level != I915_CACHE_NONE; + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_caching *args = data; + struct drm_i915_gem_object *obj; + enum i915_cache_level level; + int ret; + + switch (args->caching) { + case I915_CACHING_NONE: + level = I915_CACHE_NONE; + break; + case I915_CACHING_CACHED: + level = I915_CACHE_LLC; + break; + default: + return -EINVAL; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + ret = i915_gem_object_set_cache_level(obj, level); + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/* + * Prepare buffer for display plane (scanout, cursors, etc). + * Can be called from an uninterruptible phase (modesetting) and allows + * any flushes to be pipelined (for pageflips). + */ +int +i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj, + u32 alignment, + struct intel_ring_buffer *pipelined) +{ + u32 old_read_domains, old_write_domain; + int ret; + + if (pipelined != obj->ring) { + ret = i915_gem_object_sync(obj, pipelined); + if (ret) + return ret; + } + + /* The display engine is not coherent with the LLC cache on gen6. As + * a result, we make sure that the pinning that is about to occur is + * done with uncached PTEs. This is lowest common denominator for all + * chipsets. + * + * However for gen6+, we could do better by using the GFDT bit instead + * of uncaching, which would allow us to flush all the LLC-cached data + * with that bit in the PTE to main memory with just one PIPE_CONTROL. + */ + ret = i915_gem_object_set_cache_level(obj, I915_CACHE_NONE); + if (ret) + return ret; + + /* As the user may map the buffer once pinned in the display plane + * (e.g. libkms for the bootup splash), we have to ensure that we + * always use map_and_fenceable for all scanout buffers. + */ + ret = i915_gem_object_pin(obj, alignment, true, false); + if (ret) + return ret; + + i915_gem_object_flush_cpu_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + obj->base.write_domain = 0; + obj->base.read_domains |= I915_GEM_DOMAIN_GTT; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + return 0; +} + +int +i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj) +{ + int ret; + + if ((obj->base.read_domains & I915_GEM_GPU_DOMAINS) == 0) + return 0; + + ret = i915_gem_object_wait_rendering(obj, false); + if (ret) + return ret; + + /* Ensure that we invalidate the GPU's caches and TLBs. */ + obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS; + return 0; +} + +/** + * Moves a single object to the CPU read, and possibly write domain. + * + * This function returns when the move is complete, including waiting on + * flushes to occur. + */ +int +i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write) +{ + uint32_t old_write_domain, old_read_domains; + int ret; + + if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) + return 0; + + ret = i915_gem_object_wait_rendering(obj, !write); + if (ret) + return ret; + + i915_gem_object_flush_gtt_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* Flush the CPU cache if it's still invalid. */ + if ((obj->base.read_domains & I915_GEM_DOMAIN_CPU) == 0) { + i915_gem_clflush_object(obj); + + obj->base.read_domains |= I915_GEM_DOMAIN_CPU; + } + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + BUG_ON((obj->base.write_domain & ~I915_GEM_DOMAIN_CPU) != 0); + + /* If we're writing through the CPU, then the GPU read domains will + * need to be invalidated at next use. + */ + if (write) { + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + } + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + return 0; +} + +/* Throttle our rendering by waiting until the ring has completed our requests + * emitted over 20 msec ago. + * + * Note that if we were to use the current jiffies each time around the loop, + * we wouldn't escape the function with any frames outstanding if the time to + * render a frame was over 20ms. + * + * This should get us reasonable parallelism between CPU and GPU but also + * relatively low latency when blocking on a particular request to finish. + */ +static int +i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_file_private *file_priv = file->driver_priv; + unsigned long recent_enough = jiffies - msecs_to_jiffies(20); + struct drm_i915_gem_request *request; + struct intel_ring_buffer *ring = NULL; + u32 seqno = 0; + int ret; + + if (atomic_read(&dev_priv->mm.wedged)) + return -EIO; + + spin_lock(&file_priv->mm.lock); + list_for_each_entry(request, &file_priv->mm.request_list, client_list) { + if (time_after_eq(request->emitted_jiffies, recent_enough)) + break; + + ring = request->ring; + seqno = request->seqno; + } + spin_unlock(&file_priv->mm.lock); + + if (seqno == 0) + return 0; + + ret = __wait_seqno(ring, seqno, true, NULL); + if (ret == 0) + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, 0); + + return ret; +} + +int +i915_gem_object_pin(struct drm_i915_gem_object *obj, + uint32_t alignment, + bool map_and_fenceable, + bool nonblocking) +{ + int ret; + + if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) + return -EBUSY; + + if (obj->gtt_space != NULL) { + if ((alignment && obj->gtt_offset & (alignment - 1)) || + (map_and_fenceable && !obj->map_and_fenceable)) { + WARN(obj->pin_count, + "bo is already pinned with incorrect alignment:" + " offset=%x, req.alignment=%x, req.map_and_fenceable=%d," + " obj->map_and_fenceable=%d\n", + obj->gtt_offset, alignment, + map_and_fenceable, + obj->map_and_fenceable); + ret = i915_gem_object_unbind(obj); + if (ret) + return ret; + } + } + + if (obj->gtt_space == NULL) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + + ret = i915_gem_object_bind_to_gtt(obj, alignment, + map_and_fenceable, + nonblocking); + if (ret) + return ret; + + if (!dev_priv->mm.aliasing_ppgtt) + i915_gem_gtt_bind_object(obj, obj->cache_level); + } + + if (!obj->has_global_gtt_mapping && map_and_fenceable) + i915_gem_gtt_bind_object(obj, obj->cache_level); + + obj->pin_count++; + obj->pin_mappable |= map_and_fenceable; + + return 0; +} + +void +i915_gem_object_unpin(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pin_count == 0); + BUG_ON(obj->gtt_space == NULL); + + if (--obj->pin_count == 0) + obj->pin_mappable = false; +} + +int +i915_gem_pin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pin *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to pin a purgeable buffer\n"); + ret = -EINVAL; + goto out; + } + + if (obj->pin_filp != NULL && obj->pin_filp != file) { + DRM_ERROR("Already pinned in i915_gem_pin_ioctl(): %d\n", + args->handle); + ret = -EINVAL; + goto out; + } + + if (obj->user_pin_count == 0) { + ret = i915_gem_object_pin(obj, args->alignment, true, false); + if (ret) + goto out; + } + + obj->user_pin_count++; + obj->pin_filp = file; + + /* XXX - flush the CPU caches for pinned objects + * as the X server doesn't manage domains yet + */ + i915_gem_object_flush_cpu_write_domain(obj); + args->offset = obj->gtt_offset; +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_unpin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pin *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->pin_filp != file) { + DRM_ERROR("Not pinned by caller in i915_gem_pin_ioctl(): %d\n", + args->handle); + ret = -EINVAL; + goto out; + } + obj->user_pin_count--; + if (obj->user_pin_count == 0) { + obj->pin_filp = NULL; + i915_gem_object_unpin(obj); + } + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_busy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_busy *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Count all active objects as busy, even if they are currently not used + * by the gpu. Users of this interface expect objects to eventually + * become non-busy without any further actions, therefore emit any + * necessary flushes here. + */ + ret = i915_gem_object_flush_active(obj); + + args->busy = obj->active; + if (obj->ring) { + BUILD_BUG_ON(I915_NUM_RINGS > 16); + args->busy |= intel_ring_flag(obj->ring) << 16; + } + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_throttle_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return i915_gem_ring_throttle(dev, file_priv); +} + +int +i915_gem_madvise_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_i915_gem_madvise *args = data; + struct drm_i915_gem_object *obj; + int ret; + + switch (args->madv) { + case I915_MADV_DONTNEED: + case I915_MADV_WILLNEED: + break; + default: + return -EINVAL; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file_priv, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->pin_count) { + ret = -EINVAL; + goto out; + } + + if (obj->madv != __I915_MADV_PURGED) + obj->madv = args->madv; + + /* if the object is no longer attached, discard its backing storage */ + if (i915_gem_object_is_purgeable(obj) && obj->pages == NULL) + i915_gem_object_truncate(obj); + + args->retained = obj->madv != __I915_MADV_PURGED; + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +void i915_gem_object_init(struct drm_i915_gem_object *obj, + const struct drm_i915_gem_object_ops *ops) +{ + INIT_LIST_HEAD(&obj->mm_list); + INIT_LIST_HEAD(&obj->gtt_list); + INIT_LIST_HEAD(&obj->ring_list); + INIT_LIST_HEAD(&obj->exec_list); + + obj->ops = ops; + + obj->fence_reg = I915_FENCE_REG_NONE; + obj->madv = I915_MADV_WILLNEED; + /* Avoid an unnecessary call to unbind on the first bind. */ + obj->map_and_fenceable = true; + + i915_gem_info_add_obj(obj->base.dev->dev_private, obj->base.size); +} + +static const struct drm_i915_gem_object_ops i915_gem_object_ops = { + .get_pages = i915_gem_object_get_pages_gtt, + .put_pages = i915_gem_object_put_pages_gtt, +}; + +struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, + size_t size) +{ + struct drm_i915_gem_object *obj; + struct address_space *mapping; + u32 mask; + + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (obj == NULL) + return NULL; + + if (drm_gem_object_init(dev, &obj->base, size) != 0) { + kfree(obj); + return NULL; + } + + mask = GFP_HIGHUSER | __GFP_RECLAIMABLE; + if (IS_CRESTLINE(dev) || IS_BROADWATER(dev)) { + /* 965gm cannot relocate objects above 4GiB. */ + mask &= ~__GFP_HIGHMEM; + mask |= __GFP_DMA32; + } + + mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + mapping_set_gfp_mask(mapping, mask); + + i915_gem_object_init(obj, &i915_gem_object_ops); + + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + + if (HAS_LLC(dev)) { + /* On some devices, we can have the GPU use the LLC (the CPU + * cache) for about a 10% performance improvement + * compared to uncached. Graphics requests other than + * display scanout are coherent with the CPU in + * accessing this cache. This means in this mode we + * don't need to clflush on the CPU side, and on the + * GPU side we only need to flush internal caches to + * get data visible to the CPU. + * + * However, we maintain the display planes as UC, and so + * need to rebind when first used as such. + */ + obj->cache_level = I915_CACHE_LLC; + } else + obj->cache_level = I915_CACHE_NONE; + + return obj; +} + +int i915_gem_init_object(struct drm_gem_object *obj) +{ + BUG(); + + return 0; +} + +void i915_gem_free_object(struct drm_gem_object *gem_obj) +{ + struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + + trace_i915_gem_object_destroy(obj); + + if (obj->phys_obj) + i915_gem_detach_phys_object(dev, obj); + + obj->pin_count = 0; + if (WARN_ON(i915_gem_object_unbind(obj) == -ERESTARTSYS)) { + bool was_interruptible; + + was_interruptible = dev_priv->mm.interruptible; + dev_priv->mm.interruptible = false; + + WARN_ON(i915_gem_object_unbind(obj)); + + dev_priv->mm.interruptible = was_interruptible; + } + + obj->pages_pin_count = 0; + i915_gem_object_put_pages(obj); + i915_gem_object_free_mmap_offset(obj); + + BUG_ON(obj->pages); + + if (obj->base.import_attach) + drm_prime_gem_destroy(&obj->base, NULL); + + drm_gem_object_release(&obj->base); + i915_gem_info_remove_obj(dev_priv, obj->base.size); + + kfree(obj->bit_17); + kfree(obj); +} + +int +i915_gem_idle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev->struct_mutex); + + if (dev_priv->mm.suspended) { + mutex_unlock(&dev->struct_mutex); + return 0; + } + + ret = i915_gpu_idle(dev); + if (ret) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + i915_gem_retire_requests(dev); + + /* Under UMS, be paranoid and evict. */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + i915_gem_evict_everything(dev); + + i915_gem_reset_fences(dev); + + /* Hack! Don't let anybody do execbuf while we don't control the chip. + * We need to replace this with a semaphore, or something. + * And not confound mm.suspended! + */ + dev_priv->mm.suspended = 1; + del_timer_sync(&dev_priv->hangcheck_timer); + + i915_kernel_lost_context(dev); + i915_gem_cleanup_ringbuffer(dev); + + mutex_unlock(&dev->struct_mutex); + + /* Cancel the retire work handler, which should be idle now. */ + cancel_delayed_work_sync(&dev_priv->mm.retire_work); + + return 0; +} + +void i915_gem_l3_remap(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 misccpctl; + int i; + + if (!HAS_L3_GPU_CACHE(dev)) + return; + + if (!dev_priv->l3_parity.remap_info) + return; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) { + u32 remap = I915_READ(GEN7_L3LOG_BASE + i); + if (remap && remap != dev_priv->l3_parity.remap_info[i/4]) + DRM_DEBUG("0x%x was already programmed to %x\n", + GEN7_L3LOG_BASE + i, remap); + if (remap && !dev_priv->l3_parity.remap_info[i/4]) + DRM_DEBUG_DRIVER("Clearing remapped register\n"); + I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->l3_parity.remap_info[i/4]); + } + + /* Make sure all the writes land before disabling dop clock gating */ + POSTING_READ(GEN7_L3LOG_BASE); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); +} + +void i915_gem_init_swizzling(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 5 || + dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_NONE) + return; + + I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) | + DISP_TILE_SURFACE_SWIZZLING); + + if (IS_GEN5(dev)) + return; + + I915_WRITE(TILECTL, I915_READ(TILECTL) | TILECTL_SWZCTL); + if (IS_GEN6(dev)) + I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_SNB)); + else + I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_IVB)); +} + +static bool +intel_enable_blt(struct drm_device *dev) +{ + if (!HAS_BLT(dev)) + return false; + + /* The blitter was dysfunctional on early prototypes */ + if (IS_GEN6(dev) && dev->pdev->revision < 8) { + DRM_INFO("BLT not supported on this pre-production hardware;" + " graphics performance will be degraded.\n"); + return false; + } + + return true; +} + +int +i915_gem_init_hw(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (INTEL_INFO(dev)->gen < 6 && !intel_enable_gtt()) + return -EIO; + + if (IS_HASWELL(dev) && (I915_READ(0x120010) == 1)) + I915_WRITE(0x9008, I915_READ(0x9008) | 0xf0000); + + i915_gem_l3_remap(dev); + + i915_gem_init_swizzling(dev); + + ret = intel_init_render_ring_buffer(dev); + if (ret) + return ret; + + if (HAS_BSD(dev)) { + ret = intel_init_bsd_ring_buffer(dev); + if (ret) + goto cleanup_render_ring; + } + + if (intel_enable_blt(dev)) { + ret = intel_init_blt_ring_buffer(dev); + if (ret) + goto cleanup_bsd_ring; + } + + dev_priv->next_seqno = 1; + + /* + * XXX: There was some w/a described somewhere suggesting loading + * contexts before PPGTT. + */ + i915_gem_context_init(dev); + i915_gem_init_ppgtt(dev); + + return 0; + +cleanup_bsd_ring: + intel_cleanup_ring_buffer(&dev_priv->ring[VCS]); +cleanup_render_ring: + intel_cleanup_ring_buffer(&dev_priv->ring[RCS]); + return ret; +} + +static bool +intel_enable_ppgtt(struct drm_device *dev) +{ + if (i915_enable_ppgtt >= 0) + return i915_enable_ppgtt; + +#ifdef CONFIG_INTEL_IOMMU + /* Disable ppgtt on SNB if VT-d is on. */ + if (INTEL_INFO(dev)->gen == 6 && intel_iommu_gfx_mapped) + return false; +#endif + + return true; +} + +int i915_gem_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long gtt_size, mappable_size; + int ret; + + gtt_size = dev_priv->mm.gtt->gtt_total_entries << PAGE_SHIFT; + mappable_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + + mutex_lock(&dev->struct_mutex); + if (intel_enable_ppgtt(dev) && HAS_ALIASING_PPGTT(dev)) { + /* PPGTT pdes are stolen from global gtt ptes, so shrink the + * aperture accordingly when using aliasing ppgtt. */ + gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE; + + i915_gem_init_global_gtt(dev, 0, mappable_size, gtt_size); + + ret = i915_gem_init_aliasing_ppgtt(dev); + if (ret) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + } else { + /* Let GEM Manage all of the aperture. + * + * However, leave one page at the end still bound to the scratch + * page. There are a number of places where the hardware + * apparently prefetches past the end of the object, and we've + * seen multiple hangs with the GPU head pointer stuck in a + * batchbuffer bound at the last page of the aperture. One page + * should be enough to keep any prefetching inside of the + * aperture. + */ + i915_gem_init_global_gtt(dev, 0, mappable_size, + gtt_size); + } + + ret = i915_gem_init_hw(dev); + mutex_unlock(&dev->struct_mutex); + if (ret) { + i915_gem_cleanup_aliasing_ppgtt(dev); + return ret; + } + + /* Allow hardware batchbuffers unless told otherwise, but not for KMS. */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + dev_priv->dri1.allow_batchbuffer = 1; + return 0; +} + +void +i915_gem_cleanup_ringbuffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + intel_cleanup_ring_buffer(ring); +} + +int +i915_gem_entervt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return 0; + + if (atomic_read(&dev_priv->mm.wedged)) { + DRM_ERROR("Reenabling wedged hardware, good luck\n"); + atomic_set(&dev_priv->mm.wedged, 0); + } + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.suspended = 0; + + ret = i915_gem_init_hw(dev); + if (ret != 0) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + + BUG_ON(!list_empty(&dev_priv->mm.active_list)); + mutex_unlock(&dev->struct_mutex); + + ret = drm_irq_install(dev); + if (ret) + goto cleanup_ringbuffer; + + return 0; + +cleanup_ringbuffer: + mutex_lock(&dev->struct_mutex); + i915_gem_cleanup_ringbuffer(dev); + dev_priv->mm.suspended = 1; + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +int +i915_gem_leavevt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return 0; + + drm_irq_uninstall(dev); + return i915_gem_idle(dev); +} + +void +i915_gem_lastclose(struct drm_device *dev) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + ret = i915_gem_idle(dev); + if (ret) + DRM_ERROR("failed to idle hardware: %d\n", ret); +} + +static void +init_ring_lists(struct intel_ring_buffer *ring) +{ + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); +} + +void +i915_gem_load(struct drm_device *dev) +{ + int i; + drm_i915_private_t *dev_priv = dev->dev_private; + + INIT_LIST_HEAD(&dev_priv->mm.active_list); + INIT_LIST_HEAD(&dev_priv->mm.inactive_list); + INIT_LIST_HEAD(&dev_priv->mm.unbound_list); + INIT_LIST_HEAD(&dev_priv->mm.bound_list); + INIT_LIST_HEAD(&dev_priv->mm.fence_list); + for (i = 0; i < I915_NUM_RINGS; i++) + init_ring_lists(&dev_priv->ring[i]); + for (i = 0; i < I915_MAX_NUM_FENCES; i++) + INIT_LIST_HEAD(&dev_priv->fence_regs[i].lru_list); + INIT_DELAYED_WORK(&dev_priv->mm.retire_work, + i915_gem_retire_work_handler); + init_completion(&dev_priv->error_completion); + + /* On GEN3 we really need to make sure the ARB C3 LP bit is set */ + if (IS_GEN3(dev)) { + I915_WRITE(MI_ARB_STATE, + _MASKED_BIT_ENABLE(MI_ARB_C3_LP_WRITE_ENABLE)); + } + + dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL; + + /* Old X drivers will take 0-2 for front, back, depth buffers */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + dev_priv->fence_reg_start = 3; + + if (INTEL_INFO(dev)->gen >= 4 || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + dev_priv->num_fence_regs = 16; + else + dev_priv->num_fence_regs = 8; + + /* Initialize fence registers to zero */ + i915_gem_reset_fences(dev); + + i915_gem_detect_bit_6_swizzle(dev); + init_waitqueue_head(&dev_priv->pending_flip_queue); + + dev_priv->mm.interruptible = true; + + dev_priv->mm.inactive_shrinker.shrink = i915_gem_inactive_shrink; + dev_priv->mm.inactive_shrinker.seeks = DEFAULT_SEEKS; + register_shrinker(&dev_priv->mm.inactive_shrinker); +} + +/* + * Create a physically contiguous memory object for this object + * e.g. for cursor + overlay regs + */ +static int i915_gem_init_phys_object(struct drm_device *dev, + int id, int size, int align) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_phys_object *phys_obj; + int ret; + + if (dev_priv->mm.phys_objs[id - 1] || !size) + return 0; + + phys_obj = kzalloc(sizeof(struct drm_i915_gem_phys_object), GFP_KERNEL); + if (!phys_obj) + return -ENOMEM; + + phys_obj->id = id; + + phys_obj->handle = drm_pci_alloc(dev, size, align); + if (!phys_obj->handle) { + ret = -ENOMEM; + goto kfree_obj; + } +#ifdef CONFIG_X86 + set_memory_wc((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); +#endif + + dev_priv->mm.phys_objs[id - 1] = phys_obj; + + return 0; +kfree_obj: + kfree(phys_obj); + return ret; +} + +static void i915_gem_free_phys_object(struct drm_device *dev, int id) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_phys_object *phys_obj; + + if (!dev_priv->mm.phys_objs[id - 1]) + return; + + phys_obj = dev_priv->mm.phys_objs[id - 1]; + if (phys_obj->cur_obj) { + i915_gem_detach_phys_object(dev, phys_obj->cur_obj); + } + +#ifdef CONFIG_X86 + set_memory_wb((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); +#endif + drm_pci_free(dev, phys_obj->handle); + kfree(phys_obj); + dev_priv->mm.phys_objs[id - 1] = NULL; +} + +void i915_gem_free_all_phys_object(struct drm_device *dev) +{ + int i; + + for (i = I915_GEM_PHYS_CURSOR_0; i <= I915_MAX_PHYS_OBJECT; i++) + i915_gem_free_phys_object(dev, i); +} + +void i915_gem_detach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj) +{ + struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + char *vaddr; + int i; + int page_count; + + if (!obj->phys_obj) + return; + vaddr = obj->phys_obj->handle->vaddr; + + page_count = obj->base.size / PAGE_SIZE; + for (i = 0; i < page_count; i++) { + struct page *page = shmem_read_mapping_page(mapping, i); + if (!IS_ERR(page)) { + char *dst = kmap_atomic(page); + memcpy(dst, vaddr + i*PAGE_SIZE, PAGE_SIZE); + kunmap_atomic(dst); + + drm_clflush_pages(&page, 1); + + set_page_dirty(page); + mark_page_accessed(page); + page_cache_release(page); + } + } + i915_gem_chipset_flush(dev); + + obj->phys_obj->cur_obj = NULL; + obj->phys_obj = NULL; +} + +int +i915_gem_attach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj, + int id, + int align) +{ + struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret = 0; + int page_count; + int i; + + if (id > I915_MAX_PHYS_OBJECT) + return -EINVAL; + + if (obj->phys_obj) { + if (obj->phys_obj->id == id) + return 0; + i915_gem_detach_phys_object(dev, obj); + } + + /* create a new object */ + if (!dev_priv->mm.phys_objs[id - 1]) { + ret = i915_gem_init_phys_object(dev, id, + obj->base.size, align); + if (ret) { + DRM_ERROR("failed to init phys object %d size: %zu\n", + id, obj->base.size); + return ret; + } + } + + /* bind to the object */ + obj->phys_obj = dev_priv->mm.phys_objs[id - 1]; + obj->phys_obj->cur_obj = obj; + + page_count = obj->base.size / PAGE_SIZE; + + for (i = 0; i < page_count; i++) { + struct page *page; + char *dst, *src; + + page = shmem_read_mapping_page(mapping, i); + if (IS_ERR(page)) + return PTR_ERR(page); + + src = kmap_atomic(page); + dst = obj->phys_obj->handle->vaddr + (i * PAGE_SIZE); + memcpy(dst, src, PAGE_SIZE); + kunmap_atomic(src); + + mark_page_accessed(page); + page_cache_release(page); + } + + return 0; +} + +static int +i915_gem_phys_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file_priv) +{ + void *vaddr = obj->phys_obj->handle->vaddr + args->offset; + char __user *user_data = (char __user *) (uintptr_t) args->data_ptr; + + if (__copy_from_user_inatomic_nocache(vaddr, user_data, args->size)) { + unsigned long unwritten; + + /* The physical object once assigned is fixed for the lifetime + * of the obj, so we can safely drop the lock and continue + * to access vaddr. + */ + mutex_unlock(&dev->struct_mutex); + unwritten = copy_from_user(vaddr, user_data, args->size); + mutex_lock(&dev->struct_mutex); + if (unwritten) + return -EFAULT; + } + + i915_gem_chipset_flush(dev); + return 0; +} + +void i915_gem_release(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + /* Clean up our request list when the client is going away, so that + * later retire_requests won't dereference our soon-to-be-gone + * file_priv. + */ + spin_lock(&file_priv->mm.lock); + while (!list_empty(&file_priv->mm.request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&file_priv->mm.request_list, + struct drm_i915_gem_request, + client_list); + list_del(&request->client_list); + request->file_priv = NULL; + } + spin_unlock(&file_priv->mm.lock); +} + +static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task) +{ + if (!mutex_is_locked(mutex)) + return false; + +#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES) + return mutex->owner == task; +#else + /* Since UP may be pre-empted, we cannot assume that we own the lock */ + return false; +#endif +} + +static int +i915_gem_inactive_shrink(struct shrinker *shrinker, struct shrink_control *sc) +{ + struct drm_i915_private *dev_priv = + container_of(shrinker, + struct drm_i915_private, + mm.inactive_shrinker); + struct drm_device *dev = dev_priv->dev; + struct drm_i915_gem_object *obj; + int nr_to_scan = sc->nr_to_scan; + bool unlock = true; + int cnt; + + if (!mutex_trylock(&dev->struct_mutex)) { + if (!mutex_is_locked_by(&dev->struct_mutex, current)) + return 0; + + if (dev_priv->mm.shrinker_no_lock_stealing) + return 0; + + unlock = false; + } + + if (nr_to_scan) { + nr_to_scan -= i915_gem_purge(dev_priv, nr_to_scan); + if (nr_to_scan > 0) + nr_to_scan -= __i915_gem_shrink(dev_priv, nr_to_scan, + false); + if (nr_to_scan > 0) + i915_gem_shrink_all(dev_priv); + } + + cnt = 0; + list_for_each_entry(obj, &dev_priv->mm.unbound_list, gtt_list) + if (obj->pages_pin_count == 0) + cnt += obj->base.size >> PAGE_SHIFT; + list_for_each_entry(obj, &dev_priv->mm.inactive_list, gtt_list) + if (obj->pin_count == 0 && obj->pages_pin_count == 0) + cnt += obj->base.size >> PAGE_SHIFT; + + if (unlock) + mutex_unlock(&dev->struct_mutex); + return cnt; +} --- linux-3.5.0.orig/ubuntu/i915/intel_ddi.c +++ linux-3.5.0/ubuntu/i915/intel_ddi.c @@ -0,0 +1,1525 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eugeni Dodonov + * + */ + +#include "i915_drv.h" +#include "intel_drv.h" + +/* HDMI/DVI modes ignore everything but the last 2 items. So we share + * them for both DP and FDI transports, allowing those ports to + * automatically adapt to HDMI connections as well + */ +static const u32 hsw_ddi_translations_dp[] = { + 0x00FFFFFF, 0x0006000E, /* DP parameters */ + 0x00D75FFF, 0x0005000A, + 0x00C30FFF, 0x00040006, + 0x80AAAFFF, 0x000B0000, + 0x00FFFFFF, 0x0005000A, + 0x00D75FFF, 0x000C0004, + 0x80C30FFF, 0x000B0000, + 0x00FFFFFF, 0x00040006, + 0x80D75FFF, 0x000B0000, + 0x00FFFFFF, 0x00040006 /* HDMI parameters */ +}; + +static const u32 hsw_ddi_translations_fdi[] = { + 0x00FFFFFF, 0x0007000E, /* FDI parameters */ + 0x00D75FFF, 0x000F000A, + 0x00C30FFF, 0x00060006, + 0x00AAAFFF, 0x001E0000, + 0x00FFFFFF, 0x000F000A, + 0x00D75FFF, 0x00160004, + 0x00C30FFF, 0x001E0000, + 0x00FFFFFF, 0x00060006, + 0x00D75FFF, 0x001E0000, + 0x00FFFFFF, 0x00040006 /* HDMI parameters */ +}; + +static enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP || + type == INTEL_OUTPUT_HDMI || type == INTEL_OUTPUT_UNKNOWN) { + struct intel_digital_port *intel_dig_port = + enc_to_dig_port(encoder); + return intel_dig_port->port; + + } else if (type == INTEL_OUTPUT_ANALOG) { + return PORT_E; + + } else { + DRM_ERROR("Invalid DDI encoder type %d\n", type); + BUG(); + } +} + +/* On Haswell, DDI port buffers must be programmed with correct values + * in advance. The buffer values are different for FDI and DP modes, + * but the HDMI/DVI fields are shared among those. So we program the DDI + * in either FDI or DP modes only, as HDMI connections will work with both + * of those + */ +void intel_prepare_ddi_buffers(struct drm_device *dev, enum port port, bool use_fdi_mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 reg; + int i; + const u32 *ddi_translations = ((use_fdi_mode) ? + hsw_ddi_translations_fdi : + hsw_ddi_translations_dp); + + DRM_DEBUG_DRIVER("Initializing DDI buffers for port %c in %s mode\n", + port_name(port), + use_fdi_mode ? "FDI" : "DP"); + + WARN((use_fdi_mode && (port != PORT_E)), + "Programming port %c in FDI mode, this probably will not work.\n", + port_name(port)); + + for (i=0, reg=DDI_BUF_TRANS(port); i < ARRAY_SIZE(hsw_ddi_translations_fdi); i++) { + I915_WRITE(reg, ddi_translations[i]); + reg += 4; + } +} + +/* Program DDI buffers translations for DP. By default, program ports A-D in DP + * mode and port E for FDI. + */ +void intel_prepare_ddi(struct drm_device *dev) +{ + int port; + + if (IS_HASWELL(dev)) { + for (port = PORT_A; port < PORT_E; port++) + intel_prepare_ddi_buffers(dev, port, false); + + /* DDI E is the suggested one to work in FDI mode, so program is as such by + * default. It will have to be re-programmed in case a digital DP output + * will be detected on it + */ + intel_prepare_ddi_buffers(dev, PORT_E, true); + } +} + +static const long hsw_ddi_buf_ctl_values[] = { + DDI_BUF_EMP_400MV_0DB_HSW, + DDI_BUF_EMP_400MV_3_5DB_HSW, + DDI_BUF_EMP_400MV_6DB_HSW, + DDI_BUF_EMP_400MV_9_5DB_HSW, + DDI_BUF_EMP_600MV_0DB_HSW, + DDI_BUF_EMP_600MV_3_5DB_HSW, + DDI_BUF_EMP_600MV_6DB_HSW, + DDI_BUF_EMP_800MV_0DB_HSW, + DDI_BUF_EMP_800MV_3_5DB_HSW +}; + +static void intel_wait_ddi_buf_idle(struct drm_i915_private *dev_priv, + enum port port) +{ + uint32_t reg = DDI_BUF_CTL(port); + int i; + + for (i = 0; i < 8; i++) { + udelay(1); + if (I915_READ(reg) & DDI_BUF_IS_IDLE) + return; + } + DRM_ERROR("Timeout waiting for DDI BUF %c idle bit\n", port_name(port)); +} + +/* Starting with Haswell, different DDI ports can work in FDI mode for + * connection to the PCH-located connectors. For this, it is necessary to train + * both the DDI port and PCH receiver for the desired DDI buffer settings. + * + * The recommended port to work in FDI mode is DDI E, which we use here. Also, + * please note that when FDI mode is active on DDI E, it shares 2 lines with + * DDI A (which is used for eDP) + */ + +void hsw_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 temp, i, rx_ctl_val; + + /* Set the FDI_RX_MISC pwrdn lanes and the 2 workarounds listed at the + * mode set "sequence for CRT port" document: + * - TP1 to TP2 time with the default value + * - FDI delay to 90h + */ + I915_WRITE(_FDI_RXA_MISC, FDI_RX_PWRDN_LANE1_VAL(2) | + FDI_RX_PWRDN_LANE0_VAL(2) | + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + /* Enable the PCH Receiver FDI PLL */ + rx_ctl_val = 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); + + /* Switch from Rawclk to PCDclk */ + rx_ctl_val |= FDI_PCDCLK; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + + /* Configure Port Clock Select */ + I915_WRITE(PORT_CLK_SEL(PORT_E), intel_crtc->ddi_pll_sel); + + /* Start the training iterating through available voltages and emphasis, + * testing each value twice. */ + for (i = 0; i < ARRAY_SIZE(hsw_ddi_buf_ctl_values) * 2; i++) { + /* Configure DP_TP_CTL with auto-training */ + I915_WRITE(DP_TP_CTL(PORT_E), + DP_TP_CTL_FDI_AUTOTRAIN | + DP_TP_CTL_ENHANCED_FRAME_ENABLE | + DP_TP_CTL_LINK_TRAIN_PAT1 | + DP_TP_CTL_ENABLE); + + /* Configure and enable DDI_BUF_CTL for DDI E with next voltage. + * 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) | + hsw_ddi_buf_ctl_values[i / 2]); + POSTING_READ(DDI_BUF_CTL(PORT_E)); + + udelay(600); + + /* Program PCH FDI Receiver TU */ + I915_WRITE(_FDI_RXA_TUSIZE1, TU_SIZE(64)); + + /* Enable PCH FDI Receiver with auto-training */ + rx_ctl_val |= FDI_RX_ENABLE | FDI_LINK_TRAIN_AUTO; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + POSTING_READ(_FDI_RXA_CTL); + + /* Wait for FDI receiver lane calibration */ + udelay(30); + + /* Unset FDI_RX_MISC pwrdn lanes */ + temp = I915_READ(_FDI_RXA_MISC); + temp &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + I915_WRITE(_FDI_RXA_MISC, temp); + POSTING_READ(_FDI_RXA_MISC); + + /* Wait for FDI auto training time */ + udelay(5); + + temp = I915_READ(DP_TP_STATUS(PORT_E)); + if (temp & DP_TP_STATUS_AUTOTRAIN_DONE) { + DRM_DEBUG_KMS("FDI link training done on step %d\n", i); + + /* Enable normal pixel sending for FDI */ + I915_WRITE(DP_TP_CTL(PORT_E), + DP_TP_CTL_FDI_AUTOTRAIN | + DP_TP_CTL_LINK_TRAIN_NORMAL | + DP_TP_CTL_ENHANCED_FRAME_ENABLE | + DP_TP_CTL_ENABLE); + + return; + } + + temp = I915_READ(DDI_BUF_CTL(PORT_E)); + temp &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(PORT_E), temp); + POSTING_READ(DDI_BUF_CTL(PORT_E)); + + /* Disable DP_TP_CTL and FDI_RX_CTL and retry */ + temp = I915_READ(DP_TP_CTL(PORT_E)); + temp &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + temp |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(PORT_E), temp); + POSTING_READ(DP_TP_CTL(PORT_E)); + + intel_wait_ddi_buf_idle(dev_priv, PORT_E); + + rx_ctl_val &= ~FDI_RX_ENABLE; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + POSTING_READ(_FDI_RXA_CTL); + + /* Reset FDI_RX_MISC pwrdn lanes */ + temp = I915_READ(_FDI_RXA_MISC); + temp &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + temp |= FDI_RX_PWRDN_LANE1_VAL(2) | FDI_RX_PWRDN_LANE0_VAL(2); + I915_WRITE(_FDI_RXA_MISC, temp); + POSTING_READ(_FDI_RXA_MISC); + } + + DRM_ERROR("FDI link training failed!\n"); +} + +/* WRPLL clock dividers */ +struct wrpll_tmds_clock { + u32 clock; + u16 p; /* Post divider */ + u16 n2; /* Feedback divider */ + u16 r2; /* Reference divider */ +}; + +/* Table of matching values for WRPLL clocks programming for each frequency. + * The code assumes this table is sorted. */ +static const struct wrpll_tmds_clock wrpll_tmds_clock_table[] = { + {19750, 38, 25, 18}, + {20000, 48, 32, 18}, + {21000, 36, 21, 15}, + {21912, 42, 29, 17}, + {22000, 36, 22, 15}, + {23000, 36, 23, 15}, + {23500, 40, 40, 23}, + {23750, 26, 16, 14}, + {24000, 36, 24, 15}, + {25000, 36, 25, 15}, + {25175, 26, 40, 33}, + {25200, 30, 21, 15}, + {26000, 36, 26, 15}, + {27000, 30, 21, 14}, + {27027, 18, 100, 111}, + {27500, 30, 29, 19}, + {28000, 34, 30, 17}, + {28320, 26, 30, 22}, + {28322, 32, 42, 25}, + {28750, 24, 23, 18}, + {29000, 30, 29, 18}, + {29750, 32, 30, 17}, + {30000, 30, 25, 15}, + {30750, 30, 41, 24}, + {31000, 30, 31, 18}, + {31500, 30, 28, 16}, + {32000, 30, 32, 18}, + {32500, 28, 32, 19}, + {33000, 24, 22, 15}, + {34000, 28, 30, 17}, + {35000, 26, 32, 19}, + {35500, 24, 30, 19}, + {36000, 26, 26, 15}, + {36750, 26, 46, 26}, + {37000, 24, 23, 14}, + {37762, 22, 40, 26}, + {37800, 20, 21, 15}, + {38000, 24, 27, 16}, + {38250, 24, 34, 20}, + {39000, 24, 26, 15}, + {40000, 24, 32, 18}, + {40500, 20, 21, 14}, + {40541, 22, 147, 89}, + {40750, 18, 19, 14}, + {41000, 16, 17, 14}, + {41500, 22, 44, 26}, + {41540, 22, 44, 26}, + {42000, 18, 21, 15}, + {42500, 22, 45, 26}, + {43000, 20, 43, 27}, + {43163, 20, 24, 15}, + {44000, 18, 22, 15}, + {44900, 20, 108, 65}, + {45000, 20, 25, 15}, + {45250, 20, 52, 31}, + {46000, 18, 23, 15}, + {46750, 20, 45, 26}, + {47000, 20, 40, 23}, + {48000, 18, 24, 15}, + {49000, 18, 49, 30}, + {49500, 16, 22, 15}, + {50000, 18, 25, 15}, + {50500, 18, 32, 19}, + {51000, 18, 34, 20}, + {52000, 18, 26, 15}, + {52406, 14, 34, 25}, + {53000, 16, 22, 14}, + {54000, 16, 24, 15}, + {54054, 16, 173, 108}, + {54500, 14, 24, 17}, + {55000, 12, 22, 18}, + {56000, 14, 45, 31}, + {56250, 16, 25, 15}, + {56750, 14, 25, 17}, + {57000, 16, 27, 16}, + {58000, 16, 43, 25}, + {58250, 16, 38, 22}, + {58750, 16, 40, 23}, + {59000, 14, 26, 17}, + {59341, 14, 40, 26}, + {59400, 16, 44, 25}, + {60000, 16, 32, 18}, + {60500, 12, 39, 29}, + {61000, 14, 49, 31}, + {62000, 14, 37, 23}, + {62250, 14, 42, 26}, + {63000, 12, 21, 15}, + {63500, 14, 28, 17}, + {64000, 12, 27, 19}, + {65000, 14, 32, 19}, + {65250, 12, 29, 20}, + {65500, 12, 32, 22}, + {66000, 12, 22, 15}, + {66667, 14, 38, 22}, + {66750, 10, 21, 17}, + {67000, 14, 33, 19}, + {67750, 14, 58, 33}, + {68000, 14, 30, 17}, + {68179, 14, 46, 26}, + {68250, 14, 46, 26}, + {69000, 12, 23, 15}, + {70000, 12, 28, 18}, + {71000, 12, 30, 19}, + {72000, 12, 24, 15}, + {73000, 10, 23, 17}, + {74000, 12, 23, 14}, + {74176, 8, 100, 91}, + {74250, 10, 22, 16}, + {74481, 12, 43, 26}, + {74500, 10, 29, 21}, + {75000, 12, 25, 15}, + {75250, 10, 39, 28}, + {76000, 12, 27, 16}, + {77000, 12, 53, 31}, + {78000, 12, 26, 15}, + {78750, 12, 28, 16}, + {79000, 10, 38, 26}, + {79500, 10, 28, 19}, + {80000, 12, 32, 18}, + {81000, 10, 21, 14}, + {81081, 6, 100, 111}, + {81624, 8, 29, 24}, + {82000, 8, 17, 14}, + {83000, 10, 40, 26}, + {83950, 10, 28, 18}, + {84000, 10, 28, 18}, + {84750, 6, 16, 17}, + {85000, 6, 17, 18}, + {85250, 10, 30, 19}, + {85750, 10, 27, 17}, + {86000, 10, 43, 27}, + {87000, 10, 29, 18}, + {88000, 10, 44, 27}, + {88500, 10, 41, 25}, + {89000, 10, 28, 17}, + {89012, 6, 90, 91}, + {89100, 10, 33, 20}, + {90000, 10, 25, 15}, + {91000, 10, 32, 19}, + {92000, 10, 46, 27}, + {93000, 10, 31, 18}, + {94000, 10, 40, 23}, + {94500, 10, 28, 16}, + {95000, 10, 44, 25}, + {95654, 10, 39, 22}, + {95750, 10, 39, 22}, + {96000, 10, 32, 18}, + {97000, 8, 23, 16}, + {97750, 8, 42, 29}, + {98000, 8, 45, 31}, + {99000, 8, 22, 15}, + {99750, 8, 34, 23}, + {100000, 6, 20, 18}, + {100500, 6, 19, 17}, + {101000, 6, 37, 33}, + {101250, 8, 21, 14}, + {102000, 6, 17, 15}, + {102250, 6, 25, 22}, + {103000, 8, 29, 19}, + {104000, 8, 37, 24}, + {105000, 8, 28, 18}, + {106000, 8, 22, 14}, + {107000, 8, 46, 29}, + {107214, 8, 27, 17}, + {108000, 8, 24, 15}, + {108108, 8, 173, 108}, + {109000, 6, 23, 19}, + {110000, 6, 22, 18}, + {110013, 6, 22, 18}, + {110250, 8, 49, 30}, + {110500, 8, 36, 22}, + {111000, 8, 23, 14}, + {111264, 8, 150, 91}, + {111375, 8, 33, 20}, + {112000, 8, 63, 38}, + {112500, 8, 25, 15}, + {113100, 8, 57, 34}, + {113309, 8, 42, 25}, + {114000, 8, 27, 16}, + {115000, 6, 23, 18}, + {116000, 8, 43, 25}, + {117000, 8, 26, 15}, + {117500, 8, 40, 23}, + {118000, 6, 38, 29}, + {119000, 8, 30, 17}, + {119500, 8, 46, 26}, + {119651, 8, 39, 22}, + {120000, 8, 32, 18}, + {121000, 6, 39, 29}, + {121250, 6, 31, 23}, + {121750, 6, 23, 17}, + {122000, 6, 42, 31}, + {122614, 6, 30, 22}, + {123000, 6, 41, 30}, + {123379, 6, 37, 27}, + {124000, 6, 51, 37}, + {125000, 6, 25, 18}, + {125250, 4, 13, 14}, + {125750, 4, 27, 29}, + {126000, 6, 21, 15}, + {127000, 6, 24, 17}, + {127250, 6, 41, 29}, + {128000, 6, 27, 19}, + {129000, 6, 43, 30}, + {129859, 4, 25, 26}, + {130000, 6, 26, 18}, + {130250, 6, 42, 29}, + {131000, 6, 32, 22}, + {131500, 6, 38, 26}, + {131850, 6, 41, 28}, + {132000, 6, 22, 15}, + {132750, 6, 28, 19}, + {133000, 6, 34, 23}, + {133330, 6, 37, 25}, + {134000, 6, 61, 41}, + {135000, 6, 21, 14}, + {135250, 6, 167, 111}, + {136000, 6, 62, 41}, + {137000, 6, 35, 23}, + {138000, 6, 23, 15}, + {138500, 6, 40, 26}, + {138750, 6, 37, 24}, + {139000, 6, 34, 22}, + {139050, 6, 34, 22}, + {139054, 6, 34, 22}, + {140000, 6, 28, 18}, + {141000, 6, 36, 23}, + {141500, 6, 22, 14}, + {142000, 6, 30, 19}, + {143000, 6, 27, 17}, + {143472, 4, 17, 16}, + {144000, 6, 24, 15}, + {145000, 6, 29, 18}, + {146000, 6, 47, 29}, + {146250, 6, 26, 16}, + {147000, 6, 49, 30}, + {147891, 6, 23, 14}, + {148000, 6, 23, 14}, + {148250, 6, 28, 17}, + {148352, 4, 100, 91}, + {148500, 6, 33, 20}, + {149000, 6, 48, 29}, + {150000, 6, 25, 15}, + {151000, 4, 19, 17}, + {152000, 6, 27, 16}, + {152280, 6, 44, 26}, + {153000, 6, 34, 20}, + {154000, 6, 53, 31}, + {155000, 6, 31, 18}, + {155250, 6, 50, 29}, + {155750, 6, 45, 26}, + {156000, 6, 26, 15}, + {157000, 6, 61, 35}, + {157500, 6, 28, 16}, + {158000, 6, 65, 37}, + {158250, 6, 44, 25}, + {159000, 6, 53, 30}, + {159500, 6, 39, 22}, + {160000, 6, 32, 18}, + {161000, 4, 31, 26}, + {162000, 4, 18, 15}, + {162162, 4, 131, 109}, + {162500, 4, 53, 44}, + {163000, 4, 29, 24}, + {164000, 4, 17, 14}, + {165000, 4, 22, 18}, + {166000, 4, 32, 26}, + {167000, 4, 26, 21}, + {168000, 4, 46, 37}, + {169000, 4, 104, 83}, + {169128, 4, 64, 51}, + {169500, 4, 39, 31}, + {170000, 4, 34, 27}, + {171000, 4, 19, 15}, + {172000, 4, 51, 40}, + {172750, 4, 32, 25}, + {172800, 4, 32, 25}, + {173000, 4, 41, 32}, + {174000, 4, 49, 38}, + {174787, 4, 22, 17}, + {175000, 4, 35, 27}, + {176000, 4, 30, 23}, + {177000, 4, 38, 29}, + {178000, 4, 29, 22}, + {178500, 4, 37, 28}, + {179000, 4, 53, 40}, + {179500, 4, 73, 55}, + {180000, 4, 20, 15}, + {181000, 4, 55, 41}, + {182000, 4, 31, 23}, + {183000, 4, 42, 31}, + {184000, 4, 30, 22}, + {184750, 4, 26, 19}, + {185000, 4, 37, 27}, + {186000, 4, 51, 37}, + {187000, 4, 36, 26}, + {188000, 4, 32, 23}, + {189000, 4, 21, 15}, + {190000, 4, 38, 27}, + {190960, 4, 41, 29}, + {191000, 4, 41, 29}, + {192000, 4, 27, 19}, + {192250, 4, 37, 26}, + {193000, 4, 20, 14}, + {193250, 4, 53, 37}, + {194000, 4, 23, 16}, + {194208, 4, 23, 16}, + {195000, 4, 26, 18}, + {196000, 4, 45, 31}, + {197000, 4, 35, 24}, + {197750, 4, 41, 28}, + {198000, 4, 22, 15}, + {198500, 4, 25, 17}, + {199000, 4, 28, 19}, + {200000, 4, 37, 25}, + {201000, 4, 61, 41}, + {202000, 4, 112, 75}, + {202500, 4, 21, 14}, + {203000, 4, 146, 97}, + {204000, 4, 62, 41}, + {204750, 4, 44, 29}, + {205000, 4, 38, 25}, + {206000, 4, 29, 19}, + {207000, 4, 23, 15}, + {207500, 4, 40, 26}, + {208000, 4, 37, 24}, + {208900, 4, 48, 31}, + {209000, 4, 48, 31}, + {209250, 4, 31, 20}, + {210000, 4, 28, 18}, + {211000, 4, 25, 16}, + {212000, 4, 22, 14}, + {213000, 4, 30, 19}, + {213750, 4, 38, 24}, + {214000, 4, 46, 29}, + {214750, 4, 35, 22}, + {215000, 4, 43, 27}, + {216000, 4, 24, 15}, + {217000, 4, 37, 23}, + {218000, 4, 42, 26}, + {218250, 4, 42, 26}, + {218750, 4, 34, 21}, + {219000, 4, 47, 29}, + {220000, 4, 44, 27}, + {220640, 4, 49, 30}, + {220750, 4, 36, 22}, + {221000, 4, 36, 22}, + {222000, 4, 23, 14}, + {222525, 4, 28, 17}, + {222750, 4, 33, 20}, + {227000, 4, 37, 22}, + {230250, 4, 29, 17}, + {233500, 4, 38, 22}, + {235000, 4, 40, 23}, + {238000, 4, 30, 17}, + {241500, 2, 17, 19}, + {245250, 2, 20, 22}, + {247750, 2, 22, 24}, + {253250, 2, 15, 16}, + {256250, 2, 18, 19}, + {262500, 2, 31, 32}, + {267250, 2, 66, 67}, + {268500, 2, 94, 95}, + {270000, 2, 14, 14}, + {272500, 2, 77, 76}, + {273750, 2, 57, 56}, + {280750, 2, 24, 23}, + {281250, 2, 23, 22}, + {286000, 2, 17, 16}, + {291750, 2, 26, 24}, + {296703, 2, 56, 51}, + {297000, 2, 22, 20}, + {298000, 2, 21, 19}, +}; + +static void intel_ddi_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + int port = intel_ddi_get_encoder_port(intel_encoder); + int pipe = intel_crtc->pipe; + int type = intel_encoder->type; + + DRM_DEBUG_KMS("Preparing DDI mode for Haswell on port %c, pipe %c\n", + port_name(port), pipe_name(pipe)); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct intel_digital_port *intel_dig_port = + enc_to_dig_port(encoder); + + intel_dp->DP = intel_dig_port->port_reversal | + DDI_BUF_CTL_ENABLE | DDI_BUF_EMP_400MV_0DB_HSW; + switch (intel_dp->lane_count) { + case 1: + intel_dp->DP |= DDI_PORT_WIDTH_X1; + break; + case 2: + intel_dp->DP |= DDI_PORT_WIDTH_X2; + break; + case 4: + intel_dp->DP |= DDI_PORT_WIDTH_X4; + break; + default: + intel_dp->DP |= DDI_PORT_WIDTH_X4; + WARN(1, "Unexpected DP lane count %d\n", + intel_dp->lane_count); + break; + } + + if (intel_dp->has_audio) { + DRM_DEBUG_DRIVER("DP audio on pipe %c on DDI\n", + pipe_name(intel_crtc->pipe)); + + /* write eld */ + DRM_DEBUG_DRIVER("DP audio: write eld information\n"); + intel_write_eld(encoder, adjusted_mode); + } + + intel_dp_init_link_config(intel_dp); + + } else if (type == INTEL_OUTPUT_HDMI) { + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + if (intel_hdmi->has_audio) { + /* Proper support for digital audio needs a new logic + * and a new set of registers, so we leave it for future + * patch bombing. + */ + DRM_DEBUG_DRIVER("HDMI audio on pipe %c on DDI\n", + pipe_name(intel_crtc->pipe)); + + /* write eld */ + DRM_DEBUG_DRIVER("HDMI audio: write eld information\n"); + intel_write_eld(encoder, adjusted_mode); + } + + intel_hdmi->set_infoframes(encoder, adjusted_mode); + } +} + +static struct intel_encoder * +intel_ddi_get_crtc_encoder(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder, *ret = NULL; + int num_encoders = 0; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + ret = intel_encoder; + num_encoders++; + } + + if (num_encoders != 1) + WARN(1, "%d encoders on crtc for pipe %d\n", num_encoders, + intel_crtc->pipe); + + BUG_ON(ret == NULL); + return ret; +} + +void intel_ddi_put_crtc_pll(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_ddi_plls *plls = &dev_priv->ddi_plls; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + uint32_t val; + + switch (intel_crtc->ddi_pll_sel) { + case PORT_CLK_SEL_SPLL: + plls->spll_refcount--; + if (plls->spll_refcount == 0) { + DRM_DEBUG_KMS("Disabling SPLL\n"); + val = I915_READ(SPLL_CTL); + WARN_ON(!(val & SPLL_PLL_ENABLE)); + I915_WRITE(SPLL_CTL, val & ~SPLL_PLL_ENABLE); + POSTING_READ(SPLL_CTL); + } + break; + case PORT_CLK_SEL_WRPLL1: + plls->wrpll1_refcount--; + if (plls->wrpll1_refcount == 0) { + DRM_DEBUG_KMS("Disabling WRPLL 1\n"); + val = I915_READ(WRPLL_CTL1); + WARN_ON(!(val & WRPLL_PLL_ENABLE)); + I915_WRITE(WRPLL_CTL1, val & ~WRPLL_PLL_ENABLE); + POSTING_READ(WRPLL_CTL1); + } + break; + case PORT_CLK_SEL_WRPLL2: + plls->wrpll2_refcount--; + if (plls->wrpll2_refcount == 0) { + DRM_DEBUG_KMS("Disabling WRPLL 2\n"); + val = I915_READ(WRPLL_CTL2); + WARN_ON(!(val & WRPLL_PLL_ENABLE)); + I915_WRITE(WRPLL_CTL2, val & ~WRPLL_PLL_ENABLE); + POSTING_READ(WRPLL_CTL2); + } + break; + } + + WARN(plls->spll_refcount < 0, "Invalid SPLL refcount\n"); + WARN(plls->wrpll1_refcount < 0, "Invalid WRPLL1 refcount\n"); + WARN(plls->wrpll2_refcount < 0, "Invalid WRPLL2 refcount\n"); + + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_NONE; +} + +static void intel_ddi_calculate_wrpll(int clock, int *p, int *n2, int *r2) +{ + u32 i; + + for (i = 0; i < ARRAY_SIZE(wrpll_tmds_clock_table); i++) + if (clock <= wrpll_tmds_clock_table[i].clock) + break; + + if (i == ARRAY_SIZE(wrpll_tmds_clock_table)) + i--; + + *p = wrpll_tmds_clock_table[i].p; + *n2 = wrpll_tmds_clock_table[i].n2; + *r2 = wrpll_tmds_clock_table[i].r2; + + if (wrpll_tmds_clock_table[i].clock != clock) + DRM_INFO("WRPLL: using settings for %dKHz on %dKHz mode\n", + wrpll_tmds_clock_table[i].clock, clock); + + DRM_DEBUG_KMS("WRPLL: %dKHz refresh rate with p=%d, n2=%d r2=%d\n", + clock, *p, *n2, *r2); +} + +bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_ddi_plls *plls = &dev_priv->ddi_plls; + int type = intel_encoder->type; + enum pipe pipe = intel_crtc->pipe; + uint32_t reg, val; + + /* TODO: reuse PLLs when possible (compare values) */ + + intel_ddi_put_crtc_pll(crtc); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + switch (intel_dp->link_bw) { + case DP_LINK_BW_1_62: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_810; + break; + case DP_LINK_BW_2_7: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_1350; + break; + case DP_LINK_BW_5_4: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_2700; + break; + default: + DRM_ERROR("Link bandwidth %d unsupported\n", + intel_dp->link_bw); + return false; + } + + /* We don't need to turn any PLL on because we'll use LCPLL. */ + return true; + + } else if (type == INTEL_OUTPUT_HDMI) { + int p, n2, r2; + + if (plls->wrpll1_refcount == 0) { + DRM_DEBUG_KMS("Using WRPLL 1 on pipe %c\n", + pipe_name(pipe)); + plls->wrpll1_refcount++; + reg = WRPLL_CTL1; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_WRPLL1; + } else if (plls->wrpll2_refcount == 0) { + DRM_DEBUG_KMS("Using WRPLL 2 on pipe %c\n", + pipe_name(pipe)); + plls->wrpll2_refcount++; + reg = WRPLL_CTL2; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_WRPLL2; + } else { + DRM_ERROR("No WRPLLs available!\n"); + return false; + } + + WARN(I915_READ(reg) & WRPLL_PLL_ENABLE, + "WRPLL already enabled\n"); + + intel_ddi_calculate_wrpll(clock, &p, &n2, &r2); + + val = WRPLL_PLL_ENABLE | WRPLL_PLL_SELECT_LCPLL_2700 | + WRPLL_DIVIDER_REFERENCE(r2) | WRPLL_DIVIDER_FEEDBACK(n2) | + WRPLL_DIVIDER_POST(p); + + } else if (type == INTEL_OUTPUT_ANALOG) { + if (plls->spll_refcount == 0) { + DRM_DEBUG_KMS("Using SPLL on pipe %c\n", + pipe_name(pipe)); + plls->spll_refcount++; + reg = SPLL_CTL; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_SPLL; + } + + WARN(I915_READ(reg) & SPLL_PLL_ENABLE, + "SPLL already enabled\n"); + + val = SPLL_PLL_ENABLE | SPLL_PLL_FREQ_1350MHz | SPLL_PLL_SSC; + + } else { + WARN(1, "Invalid DDI encoder type %d\n", type); + return false; + } + + I915_WRITE(reg, val); + udelay(20); + + return true; +} + +void intel_ddi_set_pipe_settings(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + int type = intel_encoder->type; + uint32_t temp; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + + temp = TRANS_MSA_SYNC_CLK; + switch (intel_crtc->bpp) { + case 18: + temp |= TRANS_MSA_6_BPC; + break; + case 24: + temp |= TRANS_MSA_8_BPC; + break; + case 30: + temp |= TRANS_MSA_10_BPC; + break; + case 36: + temp |= TRANS_MSA_12_BPC; + break; + default: + temp |= TRANS_MSA_8_BPC; + WARN(1, "%d bpp unsupported by DDI function\n", + intel_crtc->bpp); + } + I915_WRITE(TRANS_MSA_MISC(cpu_transcoder), temp); + } +} + +void intel_ddi_enable_pipe_func(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + enum pipe pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + uint32_t temp; + + /* Enable TRANS_DDI_FUNC_CTL for the pipe to work in HDMI mode */ + temp = TRANS_DDI_FUNC_ENABLE; + temp |= TRANS_DDI_SELECT_PORT(port); + + switch (intel_crtc->bpp) { + case 18: + temp |= TRANS_DDI_BPC_6; + break; + case 24: + temp |= TRANS_DDI_BPC_8; + break; + case 30: + temp |= TRANS_DDI_BPC_10; + break; + case 36: + temp |= TRANS_DDI_BPC_12; + break; + default: + WARN(1, "%d bpp unsupported by transcoder DDI function\n", + intel_crtc->bpp); + } + + if (crtc->mode.flags & DRM_MODE_FLAG_PVSYNC) + temp |= TRANS_DDI_PVSYNC; + if (crtc->mode.flags & DRM_MODE_FLAG_PHSYNC) + temp |= TRANS_DDI_PHSYNC; + + if (cpu_transcoder == TRANSCODER_EDP) { + switch (pipe) { + case PIPE_A: + temp |= TRANS_DDI_EDP_INPUT_A_ONOFF; + break; + case PIPE_B: + temp |= TRANS_DDI_EDP_INPUT_B_ONOFF; + break; + case PIPE_C: + temp |= TRANS_DDI_EDP_INPUT_C_ONOFF; + break; + default: + BUG(); + break; + } + } + + if (type == INTEL_OUTPUT_HDMI) { + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + if (intel_hdmi->has_hdmi_sink) + temp |= TRANS_DDI_MODE_SELECT_HDMI; + else + temp |= TRANS_DDI_MODE_SELECT_DVI; + + } else if (type == INTEL_OUTPUT_ANALOG) { + temp |= TRANS_DDI_MODE_SELECT_FDI; + temp |= (intel_crtc->fdi_lanes - 1) << 1; + + } else if (type == INTEL_OUTPUT_DISPLAYPORT || + type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + temp |= TRANS_DDI_MODE_SELECT_DP_SST; + + switch (intel_dp->lane_count) { + case 1: + temp |= TRANS_DDI_PORT_WIDTH_X1; + break; + case 2: + temp |= TRANS_DDI_PORT_WIDTH_X2; + break; + case 4: + temp |= TRANS_DDI_PORT_WIDTH_X4; + break; + default: + temp |= TRANS_DDI_PORT_WIDTH_X4; + WARN(1, "Unsupported lane count %d\n", + intel_dp->lane_count); + } + + } else { + WARN(1, "Invalid encoder type %d for pipe %d\n", + intel_encoder->type, pipe); + } + + I915_WRITE(TRANS_DDI_FUNC_CTL(cpu_transcoder), temp); +} + +void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder) +{ + uint32_t reg = TRANS_DDI_FUNC_CTL(cpu_transcoder); + uint32_t val = I915_READ(reg); + + val &= ~(TRANS_DDI_FUNC_ENABLE | TRANS_DDI_PORT_MASK); + val |= TRANS_DDI_PORT_NONE; + I915_WRITE(reg, val); +} + +bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector) +{ + struct drm_device *dev = intel_connector->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder = intel_connector->encoder; + int type = intel_connector->base.connector_type; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + enum pipe pipe = 0; + enum transcoder cpu_transcoder; + uint32_t tmp; + + if (!intel_encoder->get_hw_state(intel_encoder, &pipe)) + return false; + + if (port == PORT_A) + cpu_transcoder = TRANSCODER_EDP; + else + cpu_transcoder = pipe; + + tmp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); + + switch (tmp & TRANS_DDI_MODE_SELECT_MASK) { + case TRANS_DDI_MODE_SELECT_HDMI: + case TRANS_DDI_MODE_SELECT_DVI: + return (type == DRM_MODE_CONNECTOR_HDMIA); + + case TRANS_DDI_MODE_SELECT_DP_SST: + if (type == DRM_MODE_CONNECTOR_eDP) + return true; + case TRANS_DDI_MODE_SELECT_DP_MST: + return (type == DRM_MODE_CONNECTOR_DisplayPort); + + case TRANS_DDI_MODE_SELECT_FDI: + return (type == DRM_MODE_CONNECTOR_VGA); + + default: + return false; + } +} + +bool intel_ddi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_ddi_get_encoder_port(encoder); + u32 tmp; + int i; + + tmp = I915_READ(DDI_BUF_CTL(port)); + + if (!(tmp & DDI_BUF_CTL_ENABLE)) + return false; + + if (port == PORT_A) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); + + switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { + case TRANS_DDI_EDP_INPUT_A_ON: + case TRANS_DDI_EDP_INPUT_A_ONOFF: + *pipe = PIPE_A; + break; + case TRANS_DDI_EDP_INPUT_B_ONOFF: + *pipe = PIPE_B; + break; + case TRANS_DDI_EDP_INPUT_C_ONOFF: + *pipe = PIPE_C; + break; + } + + return true; + } else { + for (i = TRANSCODER_A; i <= TRANSCODER_C; i++) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(i)); + + if ((tmp & TRANS_DDI_PORT_MASK) + == TRANS_DDI_SELECT_PORT(port)) { + *pipe = i; + return true; + } + } + } + + DRM_DEBUG_KMS("No pipe for ddi port %i found\n", port); + + return true; +} + +static uint32_t intel_ddi_get_crtc_pll(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + uint32_t temp, ret; + enum port port; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int i; + + if (cpu_transcoder == TRANSCODER_EDP) { + port = PORT_A; + } else { + temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); + temp &= TRANS_DDI_PORT_MASK; + + for (i = PORT_B; i <= PORT_E; i++) + if (temp == TRANS_DDI_SELECT_PORT(i)) + port = i; + } + + ret = I915_READ(PORT_CLK_SEL(port)); + + DRM_DEBUG_KMS("Pipe %c connected to port %c using clock 0x%08x\n", + pipe_name(pipe), port_name(port), ret); + + return ret; +} + +void intel_ddi_setup_hw_pll_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe; + struct intel_crtc *intel_crtc; + + for_each_pipe(pipe) { + intel_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + + if (!intel_crtc->active) + continue; + + intel_crtc->ddi_pll_sel = intel_ddi_get_crtc_pll(dev_priv, + pipe); + + switch (intel_crtc->ddi_pll_sel) { + case PORT_CLK_SEL_SPLL: + dev_priv->ddi_plls.spll_refcount++; + break; + case PORT_CLK_SEL_WRPLL1: + dev_priv->ddi_plls.wrpll1_refcount++; + break; + case PORT_CLK_SEL_WRPLL2: + dev_priv->ddi_plls.wrpll2_refcount++; + break; + } + } +} + +void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc) +{ + struct drm_crtc *crtc = &intel_crtc->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + enum port port = intel_ddi_get_encoder_port(intel_encoder); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + if (cpu_transcoder != TRANSCODER_EDP) + I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), + TRANS_CLK_SEL_PORT(port)); +} + +void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + if (cpu_transcoder != TRANSCODER_EDP) + I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), + TRANS_CLK_SEL_DISABLED); +} + +static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = encoder->crtc; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_panel_on(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, true); + } + + WARN_ON(intel_crtc->ddi_pll_sel == PORT_CLK_SEL_NONE); + I915_WRITE(PORT_CLK_SEL(port), intel_crtc->ddi_pll_sel); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + intel_dp_start_link_train(intel_dp); + intel_dp_complete_link_train(intel_dp); + } +} + +static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + uint32_t val; + bool wait = false; + + val = I915_READ(DDI_BUF_CTL(port)); + if (val & DDI_BUF_CTL_ENABLE) { + val &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), val); + wait = true; + } + + val = I915_READ(DP_TP_CTL(port)); + val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + val |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(port), val); + + if (wait) + intel_wait_ddi_buf_idle(dev_priv, port); + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_panel_off(intel_dp); + } + + I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE); +} + +static void intel_enable_ddi(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_HDMI) { + 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), + intel_dig_port->port_reversal | DDI_BUF_CTL_ENABLE); + } else if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + ironlake_edp_backlight_on(intel_dp); + } +} + +static void intel_disable_ddi(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + ironlake_edp_backlight_off(intel_dp); + } +} + +int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv) +{ + if (I915_READ(HSW_FUSE_STRAP) & HSW_CDCLK_LIMIT) + return 450; + else if ((I915_READ(LCPLL_CTL) & LCPLL_CLK_FREQ_MASK) == + LCPLL_CLK_FREQ_450) + return 450; + else if (IS_ULT(dev_priv->dev)) + return 338; + else + return 540; +} + +void intel_ddi_pll_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t val = I915_READ(LCPLL_CTL); + + /* The LCPLL register should be turned on by the BIOS. For now let's + * just check its state and print errors in case something is wrong. + * Don't even try to turn it on. + */ + + DRM_DEBUG_KMS("CDCLK running at %dMHz\n", + intel_ddi_get_cdclk_freq(dev_priv)); + + if (val & LCPLL_CD_SOURCE_FCLK) + DRM_ERROR("CDCLK source is not LCPLL\n"); + + if (val & LCPLL_PLL_DISABLE) + DRM_ERROR("LCPLL is disabled\n"); +} + +void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + struct intel_dp *intel_dp = &intel_dig_port->dp; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + enum port port = intel_dig_port->port; + bool wait; + uint32_t val; + + if (I915_READ(DP_TP_CTL(port)) & DP_TP_CTL_ENABLE) { + val = I915_READ(DDI_BUF_CTL(port)); + if (val & DDI_BUF_CTL_ENABLE) { + val &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), val); + wait = true; + } + + val = I915_READ(DP_TP_CTL(port)); + val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + val |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(port), val); + POSTING_READ(DP_TP_CTL(port)); + + if (wait) + intel_wait_ddi_buf_idle(dev_priv, port); + } + + val = DP_TP_CTL_ENABLE | DP_TP_CTL_MODE_SST | + DP_TP_CTL_LINK_TRAIN_PAT1 | DP_TP_CTL_SCRAMBLE_DISABLE; + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + val |= DP_TP_CTL_ENHANCED_FRAME_ENABLE; + I915_WRITE(DP_TP_CTL(port), val); + POSTING_READ(DP_TP_CTL(port)); + + intel_dp->DP |= DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), intel_dp->DP); + POSTING_READ(DDI_BUF_CTL(port)); + + udelay(600); +} + +void intel_ddi_fdi_disable(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + uint32_t val; + + intel_ddi_post_disable(intel_encoder); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_RX_ENABLE; + I915_WRITE(_FDI_RXA_CTL, val); + + val = I915_READ(_FDI_RXA_MISC); + val &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + val |= FDI_RX_PWRDN_LANE1_VAL(2) | FDI_RX_PWRDN_LANE0_VAL(2); + I915_WRITE(_FDI_RXA_MISC, val); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_PCDCLK; + I915_WRITE(_FDI_RXA_CTL, val); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_RX_PLL_ENABLE; + I915_WRITE(_FDI_RXA_CTL, val); +} + +static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) + intel_dp_check_link_status(intel_dp); +} + +static void intel_ddi_destroy(struct drm_encoder *encoder) +{ + /* HDMI has nothing special to destroy, so we can go with this. */ + intel_dp_encoder_destroy(encoder); +} + +static bool intel_ddi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + int type = intel_encoder->type; + + WARN(type == INTEL_OUTPUT_UNKNOWN, "mode_fixup() on unknown output!\n"); + + if (type == INTEL_OUTPUT_HDMI) + return intel_hdmi_mode_fixup(encoder, mode, adjusted_mode); + else + return intel_dp_mode_fixup(encoder, mode, adjusted_mode); +} + +static const struct drm_encoder_funcs intel_ddi_funcs = { + .destroy = intel_ddi_destroy, +}; + +static const struct drm_encoder_helper_funcs intel_ddi_helper_funcs = { + .mode_fixup = intel_ddi_mode_fixup, + .mode_set = intel_ddi_mode_set, + .disable = intel_encoder_noop, +}; + +void intel_ddi_init(struct drm_device *dev, enum port port) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *hdmi_connector = NULL; + struct intel_connector *dp_connector = NULL; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + dp_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!dp_connector) { + kfree(intel_dig_port); + return; + } + + if (port != PORT_A) { + hdmi_connector = kzalloc(sizeof(struct intel_connector), + GFP_KERNEL); + if (!hdmi_connector) { + kfree(dp_connector); + kfree(intel_dig_port); + return; + } + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, encoder, &intel_ddi_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(encoder, &intel_ddi_helper_funcs); + + intel_encoder->enable = intel_enable_ddi; + intel_encoder->pre_enable = intel_ddi_pre_enable; + intel_encoder->disable = intel_disable_ddi; + intel_encoder->post_disable = intel_ddi_post_disable; + intel_encoder->get_hw_state = intel_ddi_get_hw_state; + + intel_dig_port->port = port; + intel_dig_port->port_reversal = I915_READ(DDI_BUF_CTL(port)) & + DDI_BUF_PORT_REVERSAL; + if (hdmi_connector) + intel_dig_port->hdmi.sdvox_reg = DDI_BUF_CTL(port); + else + intel_dig_port->hdmi.sdvox_reg = 0; + intel_dig_port->dp.output_reg = DDI_BUF_CTL(port); + + intel_encoder->type = INTEL_OUTPUT_UNKNOWN; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + intel_encoder->hot_plug = intel_ddi_hot_plug; + + if (hdmi_connector) + intel_hdmi_init_connector(intel_dig_port, hdmi_connector); + intel_dp_init_connector(intel_dig_port, dp_connector); +} --- linux-3.5.0.orig/ubuntu/i915/intel_panel.c +++ linux-3.5.0/ubuntu/i915/intel_panel.c @@ -0,0 +1,486 @@ +/* + * Copyright © 2006-2010 Intel Corporation + * Copyright (c) 2006 Dave Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Dave Airlie + * Jesse Barnes + * Chris Wilson + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include "intel_drv.h" + +#define PCI_LBPC 0xf4 /* legacy/combination backlight modes */ + +void +intel_fixed_panel_mode(struct drm_display_mode *fixed_mode, + struct drm_display_mode *adjusted_mode) +{ + adjusted_mode->hdisplay = fixed_mode->hdisplay; + adjusted_mode->hsync_start = fixed_mode->hsync_start; + adjusted_mode->hsync_end = fixed_mode->hsync_end; + adjusted_mode->htotal = fixed_mode->htotal; + + adjusted_mode->vdisplay = fixed_mode->vdisplay; + adjusted_mode->vsync_start = fixed_mode->vsync_start; + adjusted_mode->vsync_end = fixed_mode->vsync_end; + adjusted_mode->vtotal = fixed_mode->vtotal; + + adjusted_mode->clock = fixed_mode->clock; +} + +/* adjusted_mode has been preset to be the panel's fixed mode */ +void +intel_pch_panel_fitting(struct drm_device *dev, + int fitting_mode, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int x, y, width, height; + + x = y = width = height = 0; + + /* Native modes don't need fitting */ + if (adjusted_mode->hdisplay == mode->hdisplay && + adjusted_mode->vdisplay == mode->vdisplay) + goto done; + + switch (fitting_mode) { + case DRM_MODE_SCALE_CENTER: + width = mode->hdisplay; + height = mode->vdisplay; + x = (adjusted_mode->hdisplay - width + 1)/2; + y = (adjusted_mode->vdisplay - height + 1)/2; + break; + + case DRM_MODE_SCALE_ASPECT: + /* Scale but preserve the aspect ratio */ + { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + if (scaled_width > scaled_height) { /* pillar */ + width = scaled_height / mode->vdisplay; + if (width & 1) + width++; + x = (adjusted_mode->hdisplay - width + 1) / 2; + y = 0; + height = adjusted_mode->vdisplay; + } else if (scaled_width < scaled_height) { /* letter */ + height = scaled_width / mode->hdisplay; + if (height & 1) + height++; + y = (adjusted_mode->vdisplay - height + 1) / 2; + x = 0; + width = adjusted_mode->hdisplay; + } else { + x = y = 0; + width = adjusted_mode->hdisplay; + height = adjusted_mode->vdisplay; + } + } + break; + + default: + case DRM_MODE_SCALE_FULLSCREEN: + x = y = 0; + width = adjusted_mode->hdisplay; + height = adjusted_mode->vdisplay; + break; + } + +done: + dev_priv->pch_pf_pos = (x << 16) | y; + dev_priv->pch_pf_size = (width << 16) | height; +} + +static int is_backlight_combination_mode(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen >= 4) + return I915_READ(BLC_PWM_CTL2) & BLM_COMBINATION_MODE; + + if (IS_GEN2(dev)) + return I915_READ(BLC_PWM_CTL) & BLM_LEGACY_MODE; + + return 0; +} + +static u32 i915_read_blc_pwm_ctl(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val; + + /* Restore the CTL value if it lost, e.g. GPU reset */ + + if (HAS_PCH_SPLIT(dev_priv->dev)) { + val = I915_READ(BLC_PWM_PCH_CTL2); + if (dev_priv->regfile.saveBLC_PWM_CTL2 == 0) { + dev_priv->regfile.saveBLC_PWM_CTL2 = val; + } else if (val == 0) { + val = dev_priv->regfile.saveBLC_PWM_CTL2; + I915_WRITE(BLC_PWM_PCH_CTL2, val); + } + } else { + val = I915_READ(BLC_PWM_CTL); + if (dev_priv->regfile.saveBLC_PWM_CTL == 0) { + dev_priv->regfile.saveBLC_PWM_CTL = val; + if (INTEL_INFO(dev)->gen >= 4) + dev_priv->regfile.saveBLC_PWM_CTL2 = + I915_READ(BLC_PWM_CTL2); + } else if (val == 0) { + val = dev_priv->regfile.saveBLC_PWM_CTL; + I915_WRITE(BLC_PWM_CTL, val); + if (INTEL_INFO(dev)->gen >= 4) + I915_WRITE(BLC_PWM_CTL2, + dev_priv->regfile.saveBLC_PWM_CTL2); + } + } + + return val; +} + +static u32 _intel_panel_get_max_backlight(struct drm_device *dev) +{ + u32 max; + + max = i915_read_blc_pwm_ctl(dev); + + if (HAS_PCH_SPLIT(dev)) { + max >>= 16; + } else { + if (INTEL_INFO(dev)->gen < 4) + max >>= 17; + else + max >>= 16; + + if (is_backlight_combination_mode(dev)) + max *= 0xff; + } + + return max; +} + +u32 intel_panel_get_max_backlight(struct drm_device *dev) +{ + u32 max; + + max = _intel_panel_get_max_backlight(dev); + if (max == 0) { + /* XXX add code here to query mode clock or hardware clock + * and program max PWM appropriately. + */ + pr_warn_once("fixme: max PWM is zero\n"); + return 1; + } + + DRM_DEBUG_DRIVER("max backlight PWM = %d\n", max); + return max; +} + +static int i915_panel_invert_brightness; +MODULE_PARM_DESC(invert_brightness, "Invert backlight brightness " + "(-1 force normal, 0 machine defaults, 1 force inversion), please " + "report PCI device ID, subsystem vendor and subsystem device ID " + "to dri-devel@lists.freedesktop.org, if your machine needs it. " + "It will then be included in an upcoming module version."); +module_param_named(invert_brightness, i915_panel_invert_brightness, int, 0600); +static u32 intel_panel_compute_brightness(struct drm_device *dev, u32 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (i915_panel_invert_brightness < 0) + return val; + + if (i915_panel_invert_brightness > 0 || + dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) + return intel_panel_get_max_backlight(dev) - val; + + return val; +} + +static u32 intel_panel_get_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val; + + if (HAS_PCH_SPLIT(dev)) { + val = I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; + } else { + val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; + if (INTEL_INFO(dev)->gen < 4) + val >>= 1; + + if (is_backlight_combination_mode(dev)) { + u8 lbpc; + + pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc); + val *= lbpc; + } + } + + val = intel_panel_compute_brightness(dev, val); + DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val); + return val; +} + +static void intel_pch_panel_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; + I915_WRITE(BLC_PWM_CPU_CTL, val | level); +} + +static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp; + + DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level); + level = intel_panel_compute_brightness(dev, level); + + if (HAS_PCH_SPLIT(dev)) + return intel_pch_panel_set_backlight(dev, level); + + if (is_backlight_combination_mode(dev)) { + u32 max = intel_panel_get_max_backlight(dev); + u8 lbpc; + + lbpc = level * 0xfe / max + 1; + level /= lbpc; + pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc); + } + + tmp = I915_READ(BLC_PWM_CTL); + if (INTEL_INFO(dev)->gen < 4) + level <<= 1; + tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK; + I915_WRITE(BLC_PWM_CTL, tmp | level); +} + +void intel_panel_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_level = level; + if (dev_priv->backlight_enabled) + intel_panel_actually_set_backlight(dev, level); +} + +void intel_panel_disable_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_enabled = false; + intel_panel_actually_set_backlight(dev, 0); + + if (INTEL_INFO(dev)->gen >= 4) { + uint32_t reg, tmp; + + reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; + + I915_WRITE(reg, I915_READ(reg) & ~BLM_PWM_ENABLE); + + if (HAS_PCH_SPLIT(dev)) { + tmp = I915_READ(BLC_PWM_PCH_CTL1); + tmp &= ~BLM_PCH_PWM_ENABLE; + I915_WRITE(BLC_PWM_PCH_CTL1, tmp); + } + } +} + +void intel_panel_enable_backlight(struct drm_device *dev, + enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->backlight_level == 0) + dev_priv->backlight_level = intel_panel_get_max_backlight(dev); + + if (INTEL_INFO(dev)->gen >= 4) { + uint32_t reg, tmp; + + reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; + + + tmp = I915_READ(reg); + + /* Note that this can also get called through dpms changes. And + * we don't track the backlight dpms state, hence check whether + * we have to do anything first. */ + if (tmp & BLM_PWM_ENABLE) + goto set_level; + + if (dev_priv->num_pipe == 3) + tmp &= ~BLM_PIPE_SELECT_IVB; + else + tmp &= ~BLM_PIPE_SELECT; + + tmp |= BLM_PIPE(pipe); + tmp &= ~BLM_PWM_ENABLE; + + I915_WRITE(reg, tmp); + POSTING_READ(reg); + I915_WRITE(reg, tmp | BLM_PWM_ENABLE); + + if (HAS_PCH_SPLIT(dev)) { + tmp = I915_READ(BLC_PWM_PCH_CTL1); + tmp |= BLM_PCH_PWM_ENABLE; + tmp &= ~BLM_PCH_OVERRIDE_ENABLE; + I915_WRITE(BLC_PWM_PCH_CTL1, tmp); + } + } + +set_level: + /* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1. + * BLC_PWM_CPU_CTL may be cleared to zero automatically when these + * registers are set. + */ + dev_priv->backlight_enabled = true; + intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); +} + +static void intel_panel_init_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_level = intel_panel_get_backlight(dev); + dev_priv->backlight_enabled = dev_priv->backlight_level != 0; +} + +enum drm_connector_status +intel_panel_detect(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Assume that the BIOS does not lie through the OpRegion... */ + if (!i915_panel_ignore_lid && dev_priv->opregion.lid_state) { + return ioread32(dev_priv->opregion.lid_state) & 0x1 ? + connector_status_connected : + connector_status_disconnected; + } + + switch (i915_panel_ignore_lid) { + case -2: + return connector_status_connected; + case -1: + return connector_status_disconnected; + default: + return connector_status_unknown; + } +} + +#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE +static int intel_panel_update_status(struct backlight_device *bd) +{ + struct drm_device *dev = bl_get_data(bd); + intel_panel_set_backlight(dev, bd->props.brightness); + return 0; +} + +static int intel_panel_get_brightness(struct backlight_device *bd) +{ + struct drm_device *dev = bl_get_data(bd); + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->backlight_level; +} + +static const struct backlight_ops intel_panel_bl_ops = { + .update_status = intel_panel_update_status, + .get_brightness = intel_panel_get_brightness, +}; + +int intel_panel_setup_backlight(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct backlight_properties props; + + intel_panel_init_backlight(dev); + + 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); + if (props.max_brightness == 0) { + DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n"); + return -ENODEV; + } + dev_priv->backlight = + backlight_device_register("intel_backlight", + &connector->kdev, dev, + &intel_panel_bl_ops, &props); + + if (IS_ERR(dev_priv->backlight)) { + DRM_ERROR("Failed to register backlight: %ld\n", + PTR_ERR(dev_priv->backlight)); + dev_priv->backlight = NULL; + return -ENODEV; + } + dev_priv->backlight->props.brightness = intel_panel_get_backlight(dev); + return 0; +} + +void intel_panel_destroy_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + if (dev_priv->backlight) { + backlight_device_unregister(dev_priv->backlight); + dev_priv->backlight = NULL; + } +} +#else +int intel_panel_setup_backlight(struct drm_connector *connector) +{ + intel_panel_init_backlight(connector->dev); + return 0; +} + +void intel_panel_destroy_backlight(struct drm_device *dev) +{ + return; +} +#endif + +int intel_panel_init(struct intel_panel *panel, + struct drm_display_mode *fixed_mode) +{ + panel->fixed_mode = fixed_mode; + + return 0; +} + +void intel_panel_fini(struct intel_panel *panel) +{ + struct intel_connector *intel_connector = + container_of(panel, struct intel_connector, panel); + + if (panel->fixed_mode) + drm_mode_destroy(intel_connector->base.dev, panel->fixed_mode); +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ch7017.c +++ linux-3.5.0/ubuntu/i915/dvo_ch7017.c @@ -0,0 +1,414 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "dvo.h" + +#define CH7017_TV_DISPLAY_MODE 0x00 +#define CH7017_FLICKER_FILTER 0x01 +#define CH7017_VIDEO_BANDWIDTH 0x02 +#define CH7017_TEXT_ENHANCEMENT 0x03 +#define CH7017_START_ACTIVE_VIDEO 0x04 +#define CH7017_HORIZONTAL_POSITION 0x05 +#define CH7017_VERTICAL_POSITION 0x06 +#define CH7017_BLACK_LEVEL 0x07 +#define CH7017_CONTRAST_ENHANCEMENT 0x08 +#define CH7017_TV_PLL 0x09 +#define CH7017_TV_PLL_M 0x0a +#define CH7017_TV_PLL_N 0x0b +#define CH7017_SUB_CARRIER_0 0x0c +#define CH7017_CIV_CONTROL 0x10 +#define CH7017_CIV_0 0x11 +#define CH7017_CHROMA_BOOST 0x14 +#define CH7017_CLOCK_MODE 0x1c +#define CH7017_INPUT_CLOCK 0x1d +#define CH7017_GPIO_CONTROL 0x1e +#define CH7017_INPUT_DATA_FORMAT 0x1f +#define CH7017_CONNECTION_DETECT 0x20 +#define CH7017_DAC_CONTROL 0x21 +#define CH7017_BUFFERED_CLOCK_OUTPUT 0x22 +#define CH7017_DEFEAT_VSYNC 0x47 +#define CH7017_TEST_PATTERN 0x48 + +#define CH7017_POWER_MANAGEMENT 0x49 +/** Enables the TV output path. */ +#define CH7017_TV_EN (1 << 0) +#define CH7017_DAC0_POWER_DOWN (1 << 1) +#define CH7017_DAC1_POWER_DOWN (1 << 2) +#define CH7017_DAC2_POWER_DOWN (1 << 3) +#define CH7017_DAC3_POWER_DOWN (1 << 4) +/** Powers down the TV out block, and DAC0-3 */ +#define CH7017_TV_POWER_DOWN_EN (1 << 5) + +#define CH7017_VERSION_ID 0x4a + +#define CH7017_DEVICE_ID 0x4b +#define CH7017_DEVICE_ID_VALUE 0x1b +#define CH7018_DEVICE_ID_VALUE 0x1a +#define CH7019_DEVICE_ID_VALUE 0x19 + +#define CH7017_XCLK_D2_ADJUST 0x53 +#define CH7017_UP_SCALER_COEFF_0 0x55 +#define CH7017_UP_SCALER_COEFF_1 0x56 +#define CH7017_UP_SCALER_COEFF_2 0x57 +#define CH7017_UP_SCALER_COEFF_3 0x58 +#define CH7017_UP_SCALER_COEFF_4 0x59 +#define CH7017_UP_SCALER_VERTICAL_INC_0 0x5a +#define CH7017_UP_SCALER_VERTICAL_INC_1 0x5b +#define CH7017_GPIO_INVERT 0x5c +#define CH7017_UP_SCALER_HORIZONTAL_INC_0 0x5d +#define CH7017_UP_SCALER_HORIZONTAL_INC_1 0x5e + +#define CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT 0x5f +/**< Low bits of horizontal active pixel input */ + +#define CH7017_ACTIVE_INPUT_LINE_OUTPUT 0x60 +/** High bits of horizontal active pixel input */ +#define CH7017_LVDS_HAP_INPUT_MASK (0x7 << 0) +/** High bits of vertical active line output */ +#define CH7017_LVDS_VAL_HIGH_MASK (0x7 << 3) + +#define CH7017_VERTICAL_ACTIVE_LINE_OUTPUT 0x61 +/**< Low bits of vertical active line output */ + +#define CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT 0x62 +/**< Low bits of horizontal active pixel output */ + +#define CH7017_LVDS_POWER_DOWN 0x63 +/** High bits of horizontal active pixel output */ +#define CH7017_LVDS_HAP_HIGH_MASK (0x7 << 0) +/** Enables the LVDS power down state transition */ +#define CH7017_LVDS_POWER_DOWN_EN (1 << 6) +/** Enables the LVDS upscaler */ +#define CH7017_LVDS_UPSCALER_EN (1 << 7) +#define CH7017_LVDS_POWER_DOWN_DEFAULT_RESERVED 0x08 + +#define CH7017_LVDS_ENCODING 0x64 +#define CH7017_LVDS_DITHER_2D (1 << 2) +#define CH7017_LVDS_DITHER_DIS (1 << 3) +#define CH7017_LVDS_DUAL_CHANNEL_EN (1 << 4) +#define CH7017_LVDS_24_BIT (1 << 5) + +#define CH7017_LVDS_ENCODING_2 0x65 + +#define CH7017_LVDS_PLL_CONTROL 0x66 +/** Enables the LVDS panel output path */ +#define CH7017_LVDS_PANEN (1 << 0) +/** Enables the LVDS panel backlight */ +#define CH7017_LVDS_BKLEN (1 << 3) + +#define CH7017_POWER_SEQUENCING_T1 0x67 +#define CH7017_POWER_SEQUENCING_T2 0x68 +#define CH7017_POWER_SEQUENCING_T3 0x69 +#define CH7017_POWER_SEQUENCING_T4 0x6a +#define CH7017_POWER_SEQUENCING_T5 0x6b +#define CH7017_GPIO_DRIVER_TYPE 0x6c +#define CH7017_GPIO_DATA 0x6d +#define CH7017_GPIO_DIRECTION_CONTROL 0x6e + +#define CH7017_LVDS_PLL_FEEDBACK_DIV 0x71 +# define CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT 4 +# define CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT 0 +# define CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED 0x80 + +#define CH7017_LVDS_PLL_VCO_CONTROL 0x72 +# define CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED 0x80 +# define CH7017_LVDS_PLL_VCO_SHIFT 4 +# define CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT 0 + +#define CH7017_OUTPUTS_ENABLE 0x73 +# define CH7017_CHARGE_PUMP_LOW 0x0 +# define CH7017_CHARGE_PUMP_HIGH 0x3 +# define CH7017_LVDS_CHANNEL_A (1 << 3) +# define CH7017_LVDS_CHANNEL_B (1 << 4) +# define CH7017_TV_DAC_A (1 << 5) +# define CH7017_TV_DAC_B (1 << 6) +# define CH7017_DDC_SELECT_DC2 (1 << 7) + +#define CH7017_LVDS_OUTPUT_AMPLITUDE 0x74 +#define CH7017_LVDS_PLL_EMI_REDUCTION 0x75 +#define CH7017_LVDS_POWER_DOWN_FLICKER 0x76 + +#define CH7017_LVDS_CONTROL_2 0x78 +# define CH7017_LOOP_FILTER_SHIFT 5 +# define CH7017_PHASE_DETECTOR_SHIFT 0 + +#define CH7017_BANG_LIMIT_CONTROL 0x7f + +struct ch7017_priv { + uint8_t dummy; +}; + +static void ch7017_dump_regs(struct intel_dvo_device *dvo); +static void ch7017_dpms(struct intel_dvo_device *dvo, bool enable); + +static bool ch7017_read(struct intel_dvo_device *dvo, u8 addr, u8 *val) +{ + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = &addr, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = val, + } + }; + return i2c_transfer(dvo->i2c_bus, msgs, 2) == 2; +} + +static bool ch7017_write(struct intel_dvo_device *dvo, u8 addr, u8 val) +{ + uint8_t buf[2] = { addr, val }; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = buf, + }; + return i2c_transfer(dvo->i2c_bus, &msg, 1) == 1; +} + +/** Probes for a CH7017 on the given bus and slave address. */ +static bool ch7017_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + struct ch7017_priv *priv; + const char *str; + u8 val; + + priv = kzalloc(sizeof(struct ch7017_priv), GFP_KERNEL); + if (priv == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = priv; + + if (!ch7017_read(dvo, CH7017_DEVICE_ID, &val)) + goto fail; + + switch (val) { + case CH7017_DEVICE_ID_VALUE: + str = "ch7017"; + break; + case CH7018_DEVICE_ID_VALUE: + str = "ch7018"; + break; + case CH7019_DEVICE_ID_VALUE: + str = "ch7019"; + break; + default: + DRM_DEBUG_KMS("ch701x not detected, got %d: from %s " + "slave %d.\n", + val, adapter->name, dvo->slave_addr); + goto fail; + } + + DRM_DEBUG_KMS("%s detected on %s, addr %d\n", + str, adapter->name, dvo->slave_addr); + return true; + +fail: + kfree(priv); + return false; +} + +static enum drm_connector_status ch7017_detect(struct intel_dvo_device *dvo) +{ + return connector_status_connected; +} + +static enum drm_mode_status ch7017_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 160000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static void ch7017_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint8_t lvds_pll_feedback_div, lvds_pll_vco_control; + uint8_t outputs_enable, lvds_control_2, lvds_power_down; + uint8_t horizontal_active_pixel_input; + uint8_t horizontal_active_pixel_output, vertical_active_line_output; + uint8_t active_input_line_output; + + DRM_DEBUG_KMS("Registers before mode setting\n"); + ch7017_dump_regs(dvo); + + /* LVDS PLL settings from page 75 of 7017-7017ds.pdf*/ + if (mode->clock < 100000) { + outputs_enable = CH7017_LVDS_CHANNEL_A | CH7017_CHARGE_PUMP_LOW; + lvds_pll_feedback_div = CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT) | + (13 << CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT); + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_VCO_SHIFT) | + (3 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + lvds_control_2 = (1 << CH7017_LOOP_FILTER_SHIFT) | + (0 << CH7017_PHASE_DETECTOR_SHIFT); + } else { + outputs_enable = CH7017_LVDS_CHANNEL_A | CH7017_CHARGE_PUMP_HIGH; + lvds_pll_feedback_div = CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT) | + (3 << CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT); + lvds_pll_feedback_div = 35; + lvds_control_2 = (3 << CH7017_LOOP_FILTER_SHIFT) | + (0 << CH7017_PHASE_DETECTOR_SHIFT); + if (1) { /* XXX: dual channel panel detection. Assume yes for now. */ + outputs_enable |= CH7017_LVDS_CHANNEL_B; + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_VCO_SHIFT) | + (13 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + } else { + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (1 << CH7017_LVDS_PLL_VCO_SHIFT) | + (13 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + } + } + + horizontal_active_pixel_input = mode->hdisplay & 0x00ff; + + vertical_active_line_output = mode->vdisplay & 0x00ff; + horizontal_active_pixel_output = mode->hdisplay & 0x00ff; + + active_input_line_output = ((mode->hdisplay & 0x0700) >> 8) | + (((mode->vdisplay & 0x0700) >> 8) << 3); + + lvds_power_down = CH7017_LVDS_POWER_DOWN_DEFAULT_RESERVED | + (mode->hdisplay & 0x0700) >> 8; + + ch7017_dpms(dvo, false); + ch7017_write(dvo, CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT, + horizontal_active_pixel_input); + ch7017_write(dvo, CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT, + horizontal_active_pixel_output); + ch7017_write(dvo, CH7017_VERTICAL_ACTIVE_LINE_OUTPUT, + vertical_active_line_output); + ch7017_write(dvo, CH7017_ACTIVE_INPUT_LINE_OUTPUT, + active_input_line_output); + ch7017_write(dvo, CH7017_LVDS_PLL_VCO_CONTROL, lvds_pll_vco_control); + ch7017_write(dvo, CH7017_LVDS_PLL_FEEDBACK_DIV, lvds_pll_feedback_div); + ch7017_write(dvo, CH7017_LVDS_CONTROL_2, lvds_control_2); + ch7017_write(dvo, CH7017_OUTPUTS_ENABLE, outputs_enable); + + /* Turn the LVDS back on with new settings. */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, lvds_power_down); + + DRM_DEBUG_KMS("Registers after mode setting\n"); + ch7017_dump_regs(dvo); +} + +/* set the CH7017 power state */ +static void ch7017_dpms(struct intel_dvo_device *dvo, bool enable) +{ + uint8_t val; + + ch7017_read(dvo, CH7017_LVDS_POWER_DOWN, &val); + + /* Turn off TV/VGA, and never turn it on since we don't support it. */ + ch7017_write(dvo, CH7017_POWER_MANAGEMENT, + CH7017_DAC0_POWER_DOWN | + CH7017_DAC1_POWER_DOWN | + CH7017_DAC2_POWER_DOWN | + CH7017_DAC3_POWER_DOWN | + CH7017_TV_POWER_DOWN_EN); + + if (enable) { + /* Turn on the LVDS */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, + val & ~CH7017_LVDS_POWER_DOWN_EN); + } else { + /* Turn off the LVDS */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, + val | CH7017_LVDS_POWER_DOWN_EN); + } + + /* XXX: Should actually wait for update power status somehow */ + msleep(20); +} + +static bool ch7017_get_hw_state(struct intel_dvo_device *dvo) +{ + uint8_t val; + + ch7017_read(dvo, CH7017_LVDS_POWER_DOWN, &val); + + if (val & CH7017_LVDS_POWER_DOWN_EN) + return false; + else + return true; +} + +static void ch7017_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + +#define DUMP(reg) \ +do { \ + ch7017_read(dvo, reg, &val); \ + DRM_DEBUG_KMS(#reg ": %02x\n", val); \ +} while (0) + + DUMP(CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT); + DUMP(CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT); + DUMP(CH7017_VERTICAL_ACTIVE_LINE_OUTPUT); + DUMP(CH7017_ACTIVE_INPUT_LINE_OUTPUT); + DUMP(CH7017_LVDS_PLL_VCO_CONTROL); + DUMP(CH7017_LVDS_PLL_FEEDBACK_DIV); + DUMP(CH7017_LVDS_CONTROL_2); + DUMP(CH7017_OUTPUTS_ENABLE); + DUMP(CH7017_LVDS_POWER_DOWN); +} + +static void ch7017_destroy(struct intel_dvo_device *dvo) +{ + struct ch7017_priv *priv = dvo->dev_priv; + + if (priv) { + kfree(priv); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ch7017_ops = { + .init = ch7017_init, + .detect = ch7017_detect, + .mode_valid = ch7017_mode_valid, + .mode_set = ch7017_mode_set, + .dpms = ch7017_dpms, + .get_hw_state = ch7017_get_hw_state, + .dump_regs = ch7017_dump_regs, + .destroy = ch7017_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/intel_crt.c +++ linux-3.5.0/ubuntu/i915/intel_crt.c @@ -0,0 +1,807 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +#include +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +/* Here's the desired hotplug mode */ +#define ADPA_HOTPLUG_BITS (ADPA_CRT_HOTPLUG_PERIOD_128 | \ + ADPA_CRT_HOTPLUG_WARMUP_10MS | \ + ADPA_CRT_HOTPLUG_SAMPLE_4S | \ + ADPA_CRT_HOTPLUG_VOLTAGE_50 | \ + ADPA_CRT_HOTPLUG_VOLREF_325MV | \ + ADPA_CRT_HOTPLUG_ENABLE) + +struct intel_crt { + struct intel_encoder base; + /* 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; +}; + +static struct intel_crt *intel_attached_crt(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_crt, base); +} + +static struct intel_crt *intel_encoder_to_crt(struct intel_encoder *encoder) +{ + return container_of(encoder, struct intel_crt, base); +} + +static bool intel_crt_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 tmp; + + tmp = I915_READ(crt->adpa_reg); + + if (!(tmp & ADPA_DAC_ENABLE)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +/* Note: The caller is required to filter out dpms modes not supported by the + * platform. */ +static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 temp; + + temp = I915_READ(crt->adpa_reg); + temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE); + temp &= ~ADPA_DAC_ENABLE; + + switch (mode) { + case DRM_MODE_DPMS_ON: + temp |= ADPA_DAC_ENABLE; + break; + case DRM_MODE_DPMS_STANDBY: + temp |= ADPA_DAC_ENABLE | ADPA_HSYNC_CNTL_DISABLE; + break; + case DRM_MODE_DPMS_SUSPEND: + temp |= ADPA_DAC_ENABLE | ADPA_VSYNC_CNTL_DISABLE; + break; + case DRM_MODE_DPMS_OFF: + temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE; + break; + } + + I915_WRITE(crt->adpa_reg, temp); +} + +static void intel_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; + struct intel_encoder *encoder = intel_attached_encoder(connector); + struct drm_crtc *crtc; + int old_dpms; + + /* PCH platforms and VLV only support on/off. */ + if (INTEL_INFO(dev)->gen >= 5 && mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + old_dpms = connector->dpms; + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = encoder->base.crtc; + if (!crtc) { + encoder->connectors_active = false; + return; + } + + /* We need the pipe to run for anything but OFF. */ + if (mode == DRM_MODE_DPMS_OFF) + encoder->connectors_active = false; + else + encoder->connectors_active = true; + + if (mode < old_dpms) { + /* From off to on, enable the pipe first. */ + intel_crtc_update_dpms(crtc); + + intel_crt_set_dpms(encoder, mode); + } else { + intel_crt_set_dpms(encoder, mode); + + intel_crtc_update_dpms(crtc); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_crt_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct drm_device *dev = connector->dev; + + int max_clock = 0; + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + if (mode->clock < 25000) + return MODE_CLOCK_LOW; + + if (IS_GEN2(dev)) + max_clock = 350000; + else + max_clock = 400000; + if (mode->clock > max_clock) + return MODE_CLOCK_HIGH; + + /* The FDI receiver on LPT only supports 8bpc and only has 2 lanes. */ + if (HAS_PCH_LPT(dev) && + (ironlake_get_lanes_required(mode->clock, 270000, 24) > 2)) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static bool intel_crt_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + return true; +} + +static void intel_crt_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + + struct drm_device *dev = encoder->dev; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crt *crt = + intel_encoder_to_crt(to_intel_encoder(encoder)); + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + + if (HAS_PCH_SPLIT(dev)) + adpa = ADPA_HOTPLUG_BITS; + else + adpa = 0; + + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + adpa |= ADPA_HSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + adpa |= ADPA_VSYNC_ACTIVE_HIGH; + + /* For CPT allow 3 pipe config, for others just use A or B */ + if (HAS_PCH_LPT(dev)) + ; /* Those bits don't exist here */ + else if (HAS_PCH_CPT(dev)) + adpa |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); + else if (intel_crtc->pipe == 0) + adpa |= ADPA_PIPE_A_SELECT; + else + adpa |= ADPA_PIPE_B_SELECT; + + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(BCLRPAT(intel_crtc->pipe), 0); + + I915_WRITE(crt->adpa_reg, adpa); +} + +static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct intel_crt *crt = intel_attached_crt(connector); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + bool ret; + + /* The first time through, trigger an explicit detection cycle */ + if (crt->force_hotplug_required) { + bool turn_off_dac = HAS_PCH_SPLIT(dev); + u32 save_adpa; + + crt->force_hotplug_required = 0; + + save_adpa = adpa = I915_READ(PCH_ADPA); + DRM_DEBUG_KMS("trigger hotplug detect cycle: adpa=0x%x\n", adpa); + + adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER; + if (turn_off_dac) + adpa &= ~ADPA_DAC_ENABLE; + + I915_WRITE(PCH_ADPA, adpa); + + if (wait_for((I915_READ(PCH_ADPA) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, + 1000)) + DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); + + if (turn_off_dac) { + I915_WRITE(PCH_ADPA, save_adpa); + POSTING_READ(PCH_ADPA); + } + } + + /* Check the status to see if both blue and green are on now */ + adpa = I915_READ(PCH_ADPA); + if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0) + ret = true; + else + ret = false; + DRM_DEBUG_KMS("ironlake hotplug adpa=0x%x, result %d\n", adpa, ret); + + return ret; +} + +static bool valleyview_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + bool ret; + u32 save_adpa; + + save_adpa = adpa = I915_READ(ADPA); + DRM_DEBUG_KMS("trigger hotplug detect cycle: adpa=0x%x\n", adpa); + + adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER; + + I915_WRITE(ADPA, adpa); + + if (wait_for((I915_READ(ADPA) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, + 1000)) { + DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); + I915_WRITE(ADPA, save_adpa); + } + + /* Check the status to see if both blue and green are on now */ + adpa = I915_READ(ADPA); + if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0) + ret = true; + else + ret = false; + + DRM_DEBUG_KMS("valleyview hotplug adpa=0x%x, result %d\n", adpa, ret); + + /* FIXME: debug force function and remove */ + ret = true; + + return ret; +} + +/** + * Uses CRT_HOTPLUG_EN and CRT_HOTPLUG_STAT to detect CRT presence. + * + * Not for i915G/i915GM + * + * \return true if CRT is connected. + * \return false if CRT is disconnected. + */ +static bool intel_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 hotplug_en, orig, stat; + bool ret = false; + int i, tries = 0; + + if (HAS_PCH_SPLIT(dev)) + return intel_ironlake_crt_detect_hotplug(connector); + + if (IS_VALLEYVIEW(dev)) + return valleyview_crt_detect_hotplug(connector); + + /* + * On 4 series desktop, CRT detect sequence need to be done twice + * to get a reliable result. + */ + + if (IS_G4X(dev) && !IS_GM45(dev)) + tries = 2; + else + tries = 1; + hotplug_en = orig = I915_READ(PORT_HOTPLUG_EN); + hotplug_en |= CRT_HOTPLUG_FORCE_DETECT; + + for (i = 0; i < tries ; i++) { + /* turn on the FORCE_DETECT */ + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + /* wait for FORCE_DETECT to go off */ + if (wait_for((I915_READ(PORT_HOTPLUG_EN) & + CRT_HOTPLUG_FORCE_DETECT) == 0, + 1000)) + DRM_DEBUG_KMS("timed out waiting for FORCE_DETECT to go off"); + } + + stat = I915_READ(PORT_HOTPLUG_STAT); + if ((stat & CRT_HOTPLUG_MONITOR_MASK) != CRT_HOTPLUG_MONITOR_NONE) + ret = true; + + /* clear the interrupt we just generated, if any */ + I915_WRITE(PORT_HOTPLUG_STAT, CRT_HOTPLUG_INT_STATUS); + + /* and put the bits back */ + I915_WRITE(PORT_HOTPLUG_EN, orig); + + return ret; +} + +static struct edid *intel_crt_get_edid(struct drm_connector *connector, + struct i2c_adapter *i2c) +{ + struct edid *edid; + + edid = drm_get_edid(connector, i2c); + + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { + DRM_DEBUG_KMS("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n"); + intel_gmbus_force_bit(i2c, true); + edid = drm_get_edid(connector, i2c); + intel_gmbus_force_bit(i2c, false); + } + + return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + int ret; + + edid = intel_crt_get_edid(connector, adapter); + if (!edid) + return 0; + + ret = intel_connector_update_modes(connector, edid); + kfree(edid); + + return ret; +} + +static bool intel_crt_detect_ddc(struct drm_connector *connector) +{ + struct intel_crt *crt = intel_attached_crt(connector); + struct drm_i915_private *dev_priv = crt->base.base.dev->dev_private; + struct edid *edid; + struct i2c_adapter *i2c; + + BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); + + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + edid = intel_crt_get_edid(connector, i2c); + + if (edid) { + bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; + + /* + * This may be a DVI-I connector with a shared DDC + * link between analog and digital outputs, so we + * have to check the EDID input spec of the attached device. + */ + if (!is_digital) { + DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n"); + return true; + } + + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n"); + } else { + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n"); + } + + kfree(edid); + + return false; +} + +static enum drm_connector_status +intel_crt_load_detect(struct intel_crt *crt) +{ + struct drm_device *dev = crt->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t pipe = to_intel_crtc(crt->base.base.crtc)->pipe; + uint32_t save_bclrpat; + uint32_t save_vtotal; + uint32_t vtotal, vactive; + uint32_t vsample; + uint32_t vblank, vblank_start, vblank_end; + uint32_t dsl; + uint32_t bclrpat_reg; + uint32_t vtotal_reg; + uint32_t vblank_reg; + uint32_t vsync_reg; + uint32_t pipeconf_reg; + uint32_t pipe_dsl_reg; + uint8_t st00; + enum drm_connector_status status; + + DRM_DEBUG_KMS("starting load-detect on CRT\n"); + + bclrpat_reg = BCLRPAT(pipe); + vtotal_reg = VTOTAL(pipe); + vblank_reg = VBLANK(pipe); + vsync_reg = VSYNC(pipe); + pipeconf_reg = PIPECONF(pipe); + pipe_dsl_reg = PIPEDSL(pipe); + + save_bclrpat = I915_READ(bclrpat_reg); + save_vtotal = I915_READ(vtotal_reg); + vblank = I915_READ(vblank_reg); + + vtotal = ((save_vtotal >> 16) & 0xfff) + 1; + vactive = (save_vtotal & 0x7ff) + 1; + + vblank_start = (vblank & 0xfff) + 1; + vblank_end = ((vblank >> 16) & 0xfff) + 1; + + /* Set the border color to purple. */ + I915_WRITE(bclrpat_reg, 0x500050); + + if (!IS_GEN2(dev)) { + uint32_t pipeconf = I915_READ(pipeconf_reg); + I915_WRITE(pipeconf_reg, pipeconf | PIPECONF_FORCE_BORDER); + POSTING_READ(pipeconf_reg); + /* Wait for next Vblank to substitue + * border color for Color info */ + intel_wait_for_vblank(dev, pipe); + st00 = I915_READ8(VGA_MSR_WRITE); + status = ((st00 & (1 << 4)) != 0) ? + connector_status_connected : + connector_status_disconnected; + + I915_WRITE(pipeconf_reg, pipeconf); + } else { + bool restore_vblank = false; + int count, detect; + + /* + * If there isn't any border, add some. + * Yes, this will flicker + */ + if (vblank_start <= vactive && vblank_end >= vtotal) { + uint32_t vsync = I915_READ(vsync_reg); + uint32_t vsync_start = (vsync & 0xffff) + 1; + + vblank_start = vsync_start; + I915_WRITE(vblank_reg, + (vblank_start - 1) | + ((vblank_end - 1) << 16)); + restore_vblank = true; + } + /* sample in the vertical border, selecting the larger one */ + if (vblank_start - vactive >= vtotal - vblank_end) + vsample = (vblank_start + vactive) >> 1; + else + vsample = (vtotal + vblank_end) >> 1; + + /* + * Wait for the border to be displayed + */ + while (I915_READ(pipe_dsl_reg) >= vactive) + ; + while ((dsl = I915_READ(pipe_dsl_reg)) <= vsample) + ; + /* + * Watch ST00 for an entire scanline + */ + detect = 0; + count = 0; + do { + count++; + /* Read the ST00 VGA status register */ + st00 = I915_READ8(VGA_MSR_WRITE); + if (st00 & (1 << 4)) + detect++; + } while ((I915_READ(pipe_dsl_reg) == dsl)); + + /* restore vblank if necessary */ + if (restore_vblank) + I915_WRITE(vblank_reg, vblank); + /* + * If more than 3/4 of the scanline detected a monitor, + * then it is assumed to be present. This works even on i830, + * where there isn't any way to force the border color across + * the screen + */ + status = detect * 4 > count * 3 ? + connector_status_connected : + connector_status_disconnected; + } + + /* Restore previous settings */ + I915_WRITE(bclrpat_reg, save_bclrpat); + + return status; +} + +static enum drm_connector_status +intel_crt_detect(struct drm_connector *connector, bool force) +{ + struct drm_device *dev = connector->dev; + struct intel_crt *crt = intel_attached_crt(connector); + enum drm_connector_status status; + struct intel_load_detect_pipe tmp; + + if (I915_HAS_HOTPLUG(dev)) { + /* We can not rely on the HPD pin always being correctly wired + * up, for example many KVM do not pass it through, and so + * only trust an assertion that the monitor is connected. + */ + if (intel_crt_detect_hotplug(connector)) { + DRM_DEBUG_KMS("CRT detected via hotplug\n"); + return connector_status_connected; + } else + DRM_DEBUG_KMS("CRT not detected via hotplug\n"); + } + + if (intel_crt_detect_ddc(connector)) + return connector_status_connected; + + /* Load detection is broken on HPD capable machines. Whoever wants a + * broken monitor (without edid) to work behind a broken kvm (that fails + * to have the right resistors for HP detection) needs to fix this up. + * For now just bail out. */ + if (I915_HAS_HOTPLUG(dev)) + return connector_status_disconnected; + + if (!force) + return connector->status; + + /* for pre-945g platforms use load detect */ + if (intel_get_load_detect_pipe(connector, NULL, &tmp)) { + if (intel_crt_detect_ddc(connector)) + status = connector_status_connected; + else + status = intel_crt_load_detect(crt); + intel_release_load_detect_pipe(connector, &tmp); + } else + status = connector_status_unknown; + + return status; +} + +static void intel_crt_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static int intel_crt_get_modes(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + struct i2c_adapter *i2c; + + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + ret = intel_crt_ddc_get_modes(connector, i2c); + if (ret || !IS_G4X(dev)) + return ret; + + /* Try to probe digital port for output in DVI-I -> VGA mode. */ + i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); + return intel_crt_ddc_get_modes(connector, i2c); +} + +static int intel_crt_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t value) +{ + return 0; +} + +static void intel_crt_reset(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_attached_crt(connector); + + if (HAS_PCH_SPLIT(dev)) { + u32 adpa; + + adpa = I915_READ(PCH_ADPA); + adpa &= ~ADPA_CRT_HOTPLUG_MASK; + adpa |= ADPA_HOTPLUG_BITS; + I915_WRITE(PCH_ADPA, adpa); + POSTING_READ(PCH_ADPA); + + DRM_DEBUG_KMS("pch crt adpa set to 0x%x\n", adpa); + crt->force_hotplug_required = 1; + } + +} + +/* + * Routines for controlling stuff on the analog port + */ + +static const struct drm_encoder_helper_funcs crt_encoder_funcs = { + .mode_fixup = intel_crt_mode_fixup, + .mode_set = intel_crt_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_crt_connector_funcs = { + .reset = intel_crt_reset, + .dpms = intel_crt_dpms, + .detect = intel_crt_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .destroy = intel_crt_destroy, + .set_property = intel_crt_set_property, +}; + +static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs = { + .mode_valid = intel_crt_mode_valid, + .get_modes = intel_crt_get_modes, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_crt_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping CRT initialization for %s\n", id->ident); + return 1; +} + +static const struct dmi_system_id intel_no_crt[] = { + { + .callback = intel_no_crt_dmi_callback, + .ident = "ACER ZGB", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ACER"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), + }, + }, + { } +}; + +void intel_crt_init(struct drm_device *dev) +{ + struct drm_connector *connector; + struct intel_crt *crt; + struct intel_connector *intel_connector; + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Skip machines without VGA that falsely report hotplug events */ + if (dmi_check_system(intel_no_crt)) + return; + + crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL); + if (!crt) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(crt); + return; + } + + connector = &intel_connector->base; + crt->connector = intel_connector; + drm_connector_init(dev, &intel_connector->base, + &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); + + drm_encoder_init(dev, &crt->base.base, &intel_crt_enc_funcs, + DRM_MODE_ENCODER_DAC); + + intel_connector_attach_encoder(intel_connector, &crt->base); + + crt->base.type = INTEL_OUTPUT_ANALOG; + crt->base.cloneable = true; + if (IS_I830(dev)) + crt->base.crtc_mask = (1 << 0); + else + crt->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + + if (IS_GEN2(dev)) + connector->interlace_allowed = 0; + else + connector->interlace_allowed = 1; + connector->doublescan_allowed = 0; + + if (HAS_PCH_SPLIT(dev)) + crt->adpa_reg = PCH_ADPA; + else if (IS_VALLEYVIEW(dev)) + crt->adpa_reg = VLV_ADPA; + else + crt->adpa_reg = ADPA; + + crt->base.disable = intel_disable_crt; + crt->base.enable = intel_enable_crt; + if (IS_HASWELL(dev)) + crt->base.get_hw_state = intel_ddi_get_hw_state; + else + crt->base.get_hw_state = intel_crt_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + drm_encoder_helper_add(&crt->base.base, &crt_encoder_funcs); + drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); + + drm_sysfs_connector_add(connector); + + if (I915_HAS_HOTPLUG(dev)) + connector->polled = DRM_CONNECTOR_POLL_HPD; + else + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + + /* + * Configure the automatic hotplug detection stuff + */ + crt->force_hotplug_required = 0; + + dev_priv->hotplug_supported_mask |= CRT_HOTPLUG_INT_STATUS; + + /* + * TODO: find a proper way to discover whether we need to set the the + * polarity and link reversal bits or not, instead of relying on the + * BIOS. + */ + 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-3.5.0.orig/ubuntu/i915/intel_dp.c +++ linux-3.5.0/ubuntu/i915/intel_dp.c @@ -0,0 +1,2915 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Keith Packard + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" + +#define DP_LINK_CHECK_TIMEOUT (10 * 1000) + +/** + * is_edp - is the given port attached to an eDP panel (either CPU or PCH) + * @intel_dp: DP struct + * + * If a CPU or PCH DP output is attached to an eDP panel, this function + * will return true, and false otherwise. + */ +static bool is_edp(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + + return intel_dig_port->base.type == INTEL_OUTPUT_EDP; +} + +/** + * is_pch_edp - is the port on the PCH and attached to an eDP panel? + * @intel_dp: DP struct + * + * Returns true if the given DP struct corresponds to a PCH DP port attached + * to an eDP panel, false otherwise. Helpful for determining whether we + * may need FDI resources for a given DP output or not. + */ +static bool is_pch_edp(struct intel_dp *intel_dp) +{ + return intel_dp->is_pch_edp; +} + +/** + * is_cpu_edp - is the port on the CPU and attached to an eDP panel? + * @intel_dp: DP struct + * + * Returns true if the given DP struct corresponds to a CPU eDP port. + */ +static bool is_cpu_edp(struct intel_dp *intel_dp) +{ + return is_edp(intel_dp) && !is_pch_edp(intel_dp); +} + +static struct drm_device *intel_dp_to_dev(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + + return intel_dig_port->base.base.dev; +} + +static struct intel_dp *intel_attached_dp(struct drm_connector *connector) +{ + return enc_to_intel_dp(&intel_attached_encoder(connector)->base); +} + +/** + * intel_encoder_is_pch_edp - is the given encoder a PCH attached eDP? + * @encoder: DRM encoder + * + * Return true if @encoder corresponds to a PCH attached eDP panel. Needed + * by intel_display.c. + */ +bool intel_encoder_is_pch_edp(struct drm_encoder *encoder) +{ + struct intel_dp *intel_dp; + + if (!encoder) + return false; + + intel_dp = enc_to_intel_dp(encoder); + + return is_pch_edp(intel_dp); +} + +static void intel_dp_link_down(struct intel_dp *intel_dp); + +void +intel_edp_link_config(struct intel_encoder *intel_encoder, + int *lane_num, int *link_bw) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + + *lane_num = intel_dp->lane_count; + *link_bw = drm_dp_bw_code_to_link_rate(intel_dp->link_bw); +} + +int +intel_edp_target_clock(struct intel_encoder *intel_encoder, + struct drm_display_mode *mode) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + struct intel_connector *intel_connector = intel_dp->attached_connector; + + if (intel_connector->panel.fixed_mode) + return intel_connector->panel.fixed_mode->clock; + else + return mode->clock; +} + +static int +intel_dp_max_link_bw(struct intel_dp *intel_dp) +{ + int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE]; + + switch (max_link_bw) { + case DP_LINK_BW_1_62: + case DP_LINK_BW_2_7: + break; + default: + max_link_bw = DP_LINK_BW_1_62; + break; + } + return max_link_bw; +} + +static int +intel_dp_link_clock(uint8_t link_bw) +{ + if (link_bw == DP_LINK_BW_2_7) + return 270000; + else + return 162000; +} + +/* + * The units on the numbers in the next two are... bizarre. Examples will + * make it clearer; this one parallels an example in the eDP spec. + * + * intel_dp_max_data_rate for one lane of 2.7GHz evaluates as: + * + * 270000 * 1 * 8 / 10 == 216000 + * + * The actual data capacity of that configuration is 2.16Gbit/s, so the + * units are decakilobits. ->clock in a drm_display_mode is in kilohertz - + * or equivalently, kilopixels per second - so for 1680x1050R it'd be + * 119000. At 18bpp that's 2142000 kilobits per second. + * + * Thus the strange-looking division by 10 in intel_dp_link_required, to + * get the result in decakilobits instead of kilobits. + */ + +static int +intel_dp_link_required(int pixel_clock, int bpp) +{ + return (pixel_clock * bpp + 9) / 10; +} + +static int +intel_dp_max_data_rate(int max_link_clock, int max_lanes) +{ + return (max_link_clock * max_lanes * 8) / 10; +} + +static bool +intel_dp_adjust_dithering(struct intel_dp *intel_dp, + struct drm_display_mode *mode, + bool adjust_mode) +{ + int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp)); + int max_lanes = drm_dp_max_lane_count(intel_dp->dpcd); + int max_rate, mode_rate; + + mode_rate = intel_dp_link_required(mode->clock, 24); + max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes); + + if (mode_rate > max_rate) { + mode_rate = intel_dp_link_required(mode->clock, 18); + if (mode_rate > max_rate) + return false; + + if (adjust_mode) + mode->private_flags + |= INTEL_MODE_DP_FORCE_6BPC; + + return true; + } + + return true; +} + +static int +intel_dp_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode; + + if (is_edp(intel_dp) && fixed_mode) { + if (mode->hdisplay > fixed_mode->hdisplay) + return MODE_PANEL; + + if (mode->vdisplay > fixed_mode->vdisplay) + return MODE_PANEL; + } + + if (!intel_dp_adjust_dithering(intel_dp, mode, false)) + return MODE_CLOCK_HIGH; + + if (mode->clock < 10000) + return MODE_CLOCK_LOW; + + if (mode->flags & DRM_MODE_FLAG_DBLCLK) + return MODE_H_ILLEGAL; + + return MODE_OK; +} + +static uint32_t +pack_aux(uint8_t *src, int src_bytes) +{ + int i; + uint32_t v = 0; + + if (src_bytes > 4) + src_bytes = 4; + for (i = 0; i < src_bytes; i++) + v |= ((uint32_t) src[i]) << ((3-i) * 8); + return v; +} + +static void +unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes) +{ + int i; + if (dst_bytes > 4) + dst_bytes = 4; + for (i = 0; i < dst_bytes; i++) + dst[i] = src >> ((3-i) * 8); +} + +/* hrawclock is 1/4 the FSB frequency */ +static int +intel_hrawclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t clkcfg; + + /* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */ + if (IS_VALLEYVIEW(dev)) + return 200; + + clkcfg = I915_READ(CLKCFG); + switch (clkcfg & CLKCFG_FSB_MASK) { + case CLKCFG_FSB_400: + return 100; + case CLKCFG_FSB_533: + return 133; + case CLKCFG_FSB_667: + return 166; + case CLKCFG_FSB_800: + return 200; + case CLKCFG_FSB_1067: + return 266; + case CLKCFG_FSB_1333: + return 333; + /* these two are just a guess; one of them might be right */ + case CLKCFG_FSB_1600: + case CLKCFG_FSB_1600_ALT: + return 400; + default: + return 133; + } +} + +static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + return (I915_READ(PCH_PP_STATUS) & PP_ON) != 0; +} + +static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + return (I915_READ(PCH_PP_CONTROL) & EDP_FORCE_VDD) != 0; +} + +static void +intel_dp_check_edp(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!is_edp(intel_dp)) + return; + if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) { + WARN(1, "eDP powered off while attempting aux channel communication.\n"); + DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n", + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + } +} + +static int +intel_dp_aux_ch(struct intel_dp *intel_dp, + uint8_t *send, int send_bytes, + uint8_t *recv, int recv_size) +{ + uint32_t output_reg = intel_dp->output_reg; + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t ch_ctl = output_reg + 0x10; + uint32_t ch_data = ch_ctl + 4; + int i; + int recv_bytes; + uint32_t status; + uint32_t aux_clock_divider; + int try, precharge; + + if (IS_HASWELL(dev)) { + switch (intel_dig_port->port) { + case PORT_A: + ch_ctl = DPA_AUX_CH_CTL; + ch_data = DPA_AUX_CH_DATA1; + break; + case PORT_B: + ch_ctl = PCH_DPB_AUX_CH_CTL; + ch_data = PCH_DPB_AUX_CH_DATA1; + break; + case PORT_C: + ch_ctl = PCH_DPC_AUX_CH_CTL; + ch_data = PCH_DPC_AUX_CH_DATA1; + break; + case PORT_D: + ch_ctl = PCH_DPD_AUX_CH_CTL; + ch_data = PCH_DPD_AUX_CH_DATA1; + break; + default: + BUG(); + } + } + + intel_dp_check_edp(intel_dp); + /* The clock divider is based off the hrawclk, + * and would like to run at 2MHz. So, take the + * hrawclk value and divide by 2 and use that + * + * Note that PCH attached eDP panels should use a 125MHz input + * clock divider. + */ + if (is_cpu_edp(intel_dp)) { + if (IS_HASWELL(dev)) + aux_clock_divider = intel_ddi_get_cdclk_freq(dev_priv) >> 1; + else if (IS_VALLEYVIEW(dev)) + aux_clock_divider = 100; + else if (IS_GEN6(dev) || IS_GEN7(dev)) + aux_clock_divider = 200; /* SNB & IVB eDP input clock at 400Mhz */ + else + aux_clock_divider = 225; /* eDP input clock at 450Mhz */ + } else if (HAS_PCH_SPLIT(dev)) + aux_clock_divider = DIV_ROUND_UP(intel_pch_rawclk(dev), 2); + else + aux_clock_divider = intel_hrawclk(dev) / 2; + + if (IS_GEN6(dev)) + precharge = 3; + else + precharge = 5; + + /* Try to wait for any previous AUX channel activity */ + for (try = 0; try < 3; try++) { + status = I915_READ(ch_ctl); + if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0) + break; + msleep(1); + } + + if (try == 3) { + WARN(1, "dp_aux_ch not started status 0x%08x\n", + I915_READ(ch_ctl)); + return -EBUSY; + } + + /* Must try at least 3 times according to DP spec */ + for (try = 0; try < 5; try++) { + /* Load the send data into the aux channel data registers */ + for (i = 0; i < send_bytes; i += 4) + I915_WRITE(ch_data + i, + pack_aux(send + i, send_bytes - i)); + + /* Send the command and wait for it to complete */ + I915_WRITE(ch_ctl, + DP_AUX_CH_CTL_SEND_BUSY | + DP_AUX_CH_CTL_TIME_OUT_400us | + (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) | + (precharge << DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT) | + (aux_clock_divider << DP_AUX_CH_CTL_BIT_CLOCK_2X_SHIFT) | + DP_AUX_CH_CTL_DONE | + DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR); + for (;;) { + status = I915_READ(ch_ctl); + if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0) + break; + udelay(100); + } + + /* Clear done status and any errors */ + I915_WRITE(ch_ctl, + status | + DP_AUX_CH_CTL_DONE | + DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR); + + if (status & (DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR)) + continue; + if (status & DP_AUX_CH_CTL_DONE) + break; + } + + if ((status & DP_AUX_CH_CTL_DONE) == 0) { + DRM_ERROR("dp_aux_ch not done status 0x%08x\n", status); + return -EBUSY; + } + + /* Check for timeout or receive error. + * Timeouts occur when the sink is not connected + */ + if (status & DP_AUX_CH_CTL_RECEIVE_ERROR) { + DRM_ERROR("dp_aux_ch receive error status 0x%08x\n", status); + return -EIO; + } + + /* Timeouts occur when the device isn't connected, so they're + * "normal" -- don't fill the kernel log with these */ + if (status & DP_AUX_CH_CTL_TIME_OUT_ERROR) { + DRM_DEBUG_KMS("dp_aux_ch timeout status 0x%08x\n", status); + return -ETIMEDOUT; + } + + /* Unload any bytes sent back from the other side */ + recv_bytes = ((status & DP_AUX_CH_CTL_MESSAGE_SIZE_MASK) >> + DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT); + if (recv_bytes > recv_size) + recv_bytes = recv_size; + + for (i = 0; i < recv_bytes; i += 4) + unpack_aux(I915_READ(ch_data + i), + recv + i, recv_bytes - i); + + return recv_bytes; +} + +/* Write data to the aux channel in native mode */ +static int +intel_dp_aux_native_write(struct intel_dp *intel_dp, + uint16_t address, uint8_t *send, int send_bytes) +{ + int ret; + uint8_t msg[20]; + int msg_bytes; + uint8_t ack; + + intel_dp_check_edp(intel_dp); + if (send_bytes > 16) + return -1; + msg[0] = AUX_NATIVE_WRITE << 4; + msg[1] = address >> 8; + msg[2] = address & 0xff; + msg[3] = send_bytes - 1; + memcpy(&msg[4], send, send_bytes); + msg_bytes = send_bytes + 4; + for (;;) { + ret = intel_dp_aux_ch(intel_dp, msg, msg_bytes, &ack, 1); + if (ret < 0) + return ret; + if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) + break; + else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) + udelay(100); + else + return -EIO; + } + return send_bytes; +} + +/* Write a single byte to the aux channel in native mode */ +static int +intel_dp_aux_native_write_1(struct intel_dp *intel_dp, + uint16_t address, uint8_t byte) +{ + return intel_dp_aux_native_write(intel_dp, address, &byte, 1); +} + +/* read bytes from a native aux channel */ +static int +intel_dp_aux_native_read(struct intel_dp *intel_dp, + uint16_t address, uint8_t *recv, int recv_bytes) +{ + uint8_t msg[4]; + int msg_bytes; + uint8_t reply[20]; + int reply_bytes; + uint8_t ack; + int ret; + + intel_dp_check_edp(intel_dp); + msg[0] = AUX_NATIVE_READ << 4; + msg[1] = address >> 8; + msg[2] = address & 0xff; + msg[3] = recv_bytes - 1; + + msg_bytes = 4; + reply_bytes = recv_bytes + 1; + + for (;;) { + ret = intel_dp_aux_ch(intel_dp, msg, msg_bytes, + reply, reply_bytes); + if (ret == 0) + return -EPROTO; + if (ret < 0) + return ret; + ack = reply[0]; + if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) { + memcpy(recv, reply + 1, ret - 1); + return ret - 1; + } + else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) + udelay(100); + else + return -EIO; + } +} + +static int +intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, + uint8_t write_byte, uint8_t *read_byte) +{ + struct i2c_algo_dp_aux_data *algo_data = adapter->algo_data; + struct intel_dp *intel_dp = container_of(adapter, + struct intel_dp, + adapter); + uint16_t address = algo_data->address; + uint8_t msg[5]; + uint8_t reply[2]; + unsigned retry; + int msg_bytes; + int reply_bytes; + int ret; + + intel_dp_check_edp(intel_dp); + /* Set up the command byte */ + if (mode & MODE_I2C_READ) + msg[0] = AUX_I2C_READ << 4; + else + msg[0] = AUX_I2C_WRITE << 4; + + if (!(mode & MODE_I2C_STOP)) + msg[0] |= AUX_I2C_MOT << 4; + + msg[1] = address >> 8; + msg[2] = address; + + switch (mode) { + case MODE_I2C_WRITE: + msg[3] = 0; + msg[4] = write_byte; + msg_bytes = 5; + reply_bytes = 1; + break; + case MODE_I2C_READ: + msg[3] = 0; + msg_bytes = 4; + reply_bytes = 2; + break; + default: + msg_bytes = 3; + reply_bytes = 1; + break; + } + + for (retry = 0; retry < 5; retry++) { + ret = intel_dp_aux_ch(intel_dp, + msg, msg_bytes, + reply, reply_bytes); + if (ret < 0) { + DRM_DEBUG_KMS("aux_ch failed %d\n", ret); + return ret; + } + + switch (reply[0] & AUX_NATIVE_REPLY_MASK) { + case AUX_NATIVE_REPLY_ACK: + /* I2C-over-AUX Reply field is only valid + * when paired with AUX ACK. + */ + break; + case AUX_NATIVE_REPLY_NACK: + DRM_DEBUG_KMS("aux_ch native nack\n"); + return -EREMOTEIO; + case AUX_NATIVE_REPLY_DEFER: + udelay(100); + continue; + default: + DRM_ERROR("aux_ch invalid native reply 0x%02x\n", + reply[0]); + return -EREMOTEIO; + } + + switch (reply[0] & AUX_I2C_REPLY_MASK) { + case AUX_I2C_REPLY_ACK: + if (mode == MODE_I2C_READ) { + *read_byte = reply[1]; + } + return reply_bytes - 1; + case AUX_I2C_REPLY_NACK: + DRM_DEBUG_KMS("aux_i2c nack\n"); + return -EREMOTEIO; + case AUX_I2C_REPLY_DEFER: + DRM_DEBUG_KMS("aux_i2c defer\n"); + udelay(100); + break; + default: + DRM_ERROR("aux_i2c invalid reply 0x%02x\n", reply[0]); + return -EREMOTEIO; + } + } + + DRM_ERROR("too many retries, giving up\n"); + return -EREMOTEIO; +} + +static int +intel_dp_i2c_init(struct intel_dp *intel_dp, + struct intel_connector *intel_connector, const char *name) +{ + int ret; + + DRM_DEBUG_KMS("i2c_init %s\n", name); + intel_dp->algo.running = false; + intel_dp->algo.address = 0; + intel_dp->algo.aux_ch = intel_dp_i2c_aux_ch; + + memset(&intel_dp->adapter, '\0', sizeof(intel_dp->adapter)); + intel_dp->adapter.owner = THIS_MODULE; + intel_dp->adapter.class = I2C_CLASS_DDC; + strncpy(intel_dp->adapter.name, name, sizeof(intel_dp->adapter.name) - 1); + intel_dp->adapter.name[sizeof(intel_dp->adapter.name) - 1] = '\0'; + intel_dp->adapter.algo_data = &intel_dp->algo; + intel_dp->adapter.dev.parent = &intel_connector->base.kdev; + + ironlake_edp_panel_vdd_on(intel_dp); + ret = i2c_dp_aux_add_bus(&intel_dp->adapter); + ironlake_edp_panel_vdd_off(intel_dp, false); + return ret; +} + +bool +intel_dp_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct intel_connector *intel_connector = intel_dp->attached_connector; + int lane_count, clock; + int max_lane_count = drm_dp_max_lane_count(intel_dp->dpcd); + int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0; + int bpp, mode_rate; + static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 }; + + if (is_edp(intel_dp) && intel_connector->panel.fixed_mode) { + intel_fixed_panel_mode(intel_connector->panel.fixed_mode, + adjusted_mode); + intel_pch_panel_fitting(dev, + intel_connector->panel.fitting_mode, + mode, adjusted_mode); + } + + if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) + return false; + + DRM_DEBUG_KMS("DP link computation with max lane count %i " + "max bw %02x pixel clock %iKHz\n", + max_lane_count, bws[max_clock], adjusted_mode->clock); + + if (!intel_dp_adjust_dithering(intel_dp, adjusted_mode, true)) + return false; + + bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24; + mode_rate = intel_dp_link_required(adjusted_mode->clock, bpp); + + for (clock = 0; clock <= max_clock; clock++) { + for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { + int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count); + + if (mode_rate <= link_avail) { + intel_dp->link_bw = bws[clock]; + intel_dp->lane_count = lane_count; + adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw); + DRM_DEBUG_KMS("DP link bw %02x lane " + "count %d clock %d bpp %d\n", + intel_dp->link_bw, intel_dp->lane_count, + adjusted_mode->clock, bpp); + DRM_DEBUG_KMS("DP link bw required %i available %i\n", + mode_rate, link_avail); + return true; + } + } + } + + return false; +} + +struct intel_dp_m_n { + uint32_t tu; + uint32_t gmch_m; + uint32_t gmch_n; + uint32_t link_m; + uint32_t link_n; +}; + +static void +intel_reduce_ratio(uint32_t *num, uint32_t *den) +{ + while (*num > 0xffffff || *den > 0xffffff) { + *num >>= 1; + *den >>= 1; + } +} + +static void +intel_dp_compute_m_n(int bpp, + int nlanes, + int pixel_clock, + int link_clock, + struct intel_dp_m_n *m_n) +{ + m_n->tu = 64; + m_n->gmch_m = (pixel_clock * bpp) >> 3; + m_n->gmch_n = link_clock * nlanes; + intel_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n); + m_n->link_m = pixel_clock; + m_n->link_n = link_clock; + intel_reduce_ratio(&m_n->link_m, &m_n->link_n); +} + +void +intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + struct intel_dp *intel_dp; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int lane_count = 4; + struct intel_dp_m_n m_n; + int pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + int target_clock; + + /* + * Find the lane count in the intel_encoder private + */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + intel_dp = enc_to_intel_dp(&intel_encoder->base); + + if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_EDP) + { + lane_count = intel_dp->lane_count; + break; + } + } + + 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, + target_clock, adjusted_mode->clock, &m_n); + + if (IS_HASWELL(dev)) { + I915_WRITE(PIPE_DATA_M1(cpu_transcoder), + TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(cpu_transcoder), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(cpu_transcoder), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(cpu_transcoder), m_n.link_n); + } else if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(TRANSDATA_M1(pipe), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(TRANSDATA_N1(pipe), m_n.gmch_n); + I915_WRITE(TRANSDPLINK_M1(pipe), m_n.link_m); + I915_WRITE(TRANSDPLINK_N1(pipe), m_n.link_n); + } else if (IS_VALLEYVIEW(dev)) { + I915_WRITE(PIPE_DATA_M1(pipe), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(pipe), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(pipe), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(pipe), m_n.link_n); + } else { + I915_WRITE(PIPE_GMCH_DATA_M(pipe), + TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_GMCH_DATA_N(pipe), m_n.gmch_n); + I915_WRITE(PIPE_DP_LINK_M(pipe), m_n.link_m); + I915_WRITE(PIPE_DP_LINK_N(pipe), m_n.link_n); + } +} + +void intel_dp_init_link_config(struct intel_dp *intel_dp) +{ + memset(intel_dp->link_configuration, 0, DP_LINK_CONFIGURATION_SIZE); + intel_dp->link_configuration[0] = intel_dp->link_bw; + intel_dp->link_configuration[1] = intel_dp->lane_count; + intel_dp->link_configuration[8] = DP_SET_ANSI_8B10B; + /* + * Check for DPCD version > 1.1 and enhanced framing support + */ + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && + (intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP)) { + intel_dp->link_configuration[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN; + } +} + +static void +intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + /* + * There are four kinds of DP registers: + * + * IBX PCH + * SNB CPU + * IVB CPU + * CPT PCH + * + * IBX PCH and CPU are the same for almost everything, + * except that the CPU DP PLL is configured in this + * register + * + * CPT PCH is quite different, having many bits moved + * to the TRANS_DP_CTL register instead. That + * configuration happens (oddly) in ironlake_pch_enable + */ + + /* Preserve the BIOS-computed detected bit. This is + * supposed to be read-only. + */ + intel_dp->DP = I915_READ(intel_dp->output_reg) & DP_DETECTED; + + /* Handle DP bits in common between all three register formats */ + intel_dp->DP |= DP_VOLTAGE_0_4 | DP_PRE_EMPHASIS_0; + + switch (intel_dp->lane_count) { + case 1: + intel_dp->DP |= DP_PORT_WIDTH_1; + break; + case 2: + intel_dp->DP |= DP_PORT_WIDTH_2; + break; + case 4: + intel_dp->DP |= DP_PORT_WIDTH_4; + break; + } + if (intel_dp->has_audio) { + DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", + pipe_name(intel_crtc->pipe)); + intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; + intel_write_eld(encoder, adjusted_mode); + } + + intel_dp_init_link_config(intel_dp); + + /* Split out the IBX/CPU vs CPT settings */ + + if (is_cpu_edp(intel_dp) && IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) { + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + intel_dp->DP |= DP_SYNC_HS_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + intel_dp->DP |= DP_SYNC_VS_HIGH; + intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT; + + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + intel_dp->DP |= DP_ENHANCED_FRAMING; + + intel_dp->DP |= intel_crtc->pipe << 29; + + /* don't miss out required setting for eDP */ + if (adjusted_mode->clock < 200000) + intel_dp->DP |= DP_PLL_FREQ_160MHZ; + else + intel_dp->DP |= DP_PLL_FREQ_270MHZ; + } else if (!HAS_PCH_CPT(dev) || is_cpu_edp(intel_dp)) { + intel_dp->DP |= intel_dp->color_range; + + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + intel_dp->DP |= DP_SYNC_HS_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + intel_dp->DP |= DP_SYNC_VS_HIGH; + intel_dp->DP |= DP_LINK_TRAIN_OFF; + + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + intel_dp->DP |= DP_ENHANCED_FRAMING; + + if (intel_crtc->pipe == 1) + intel_dp->DP |= DP_PIPEB_SELECT; + + if (is_cpu_edp(intel_dp)) { + /* don't miss out required setting for eDP */ + if (adjusted_mode->clock < 200000) + intel_dp->DP |= DP_PLL_FREQ_160MHZ; + else + intel_dp->DP |= DP_PLL_FREQ_270MHZ; + } + } else { + intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT; + } +} + +#define IDLE_ON_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | 0 | PP_SEQUENCE_STATE_MASK) +#define IDLE_ON_VALUE (PP_ON | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_ON_IDLE) + +#define IDLE_OFF_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | 0 | PP_SEQUENCE_STATE_MASK) +#define IDLE_OFF_VALUE (0 | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_OFF_IDLE) + +#define IDLE_CYCLE_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | PP_CYCLE_DELAY_ACTIVE | PP_SEQUENCE_STATE_MASK) +#define IDLE_CYCLE_VALUE (0 | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_OFF_IDLE) + +static void ironlake_wait_panel_status(struct intel_dp *intel_dp, + u32 mask, + u32 value) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + DRM_DEBUG_KMS("mask %08x value %08x status %08x control %08x\n", + mask, value, + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + + if (_wait_for((I915_READ(PCH_PP_STATUS) & mask) == value, 5000, 10)) { + DRM_ERROR("Panel status timeout: status %08x control %08x\n", + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + } +} + +static void ironlake_wait_panel_on(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power on\n"); + ironlake_wait_panel_status(intel_dp, IDLE_ON_MASK, IDLE_ON_VALUE); +} + +static void ironlake_wait_panel_off(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power off time\n"); + ironlake_wait_panel_status(intel_dp, IDLE_OFF_MASK, IDLE_OFF_VALUE); +} + +static void ironlake_wait_panel_power_cycle(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power cycle\n"); + ironlake_wait_panel_status(intel_dp, IDLE_CYCLE_MASK, IDLE_CYCLE_VALUE); +} + + +/* Read the current pp_control value, unlocking the register if it + * is locked + */ + +static u32 ironlake_get_pp_control(struct drm_i915_private *dev_priv) +{ + u32 control = I915_READ(PCH_PP_CONTROL); + + control &= ~PANEL_UNLOCK_MASK; + control |= PANEL_UNLOCK_REGS; + return control; +} + +void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + DRM_DEBUG_KMS("Turn eDP VDD on\n"); + + WARN(intel_dp->want_panel_vdd, + "eDP VDD already requested on\n"); + + intel_dp->want_panel_vdd = true; + + if (ironlake_edp_have_panel_vdd(intel_dp)) { + DRM_DEBUG_KMS("eDP VDD already on\n"); + return; + } + + if (!ironlake_edp_have_panel_power(intel_dp)) + ironlake_wait_panel_power_cycle(intel_dp); + + pp = ironlake_get_pp_control(dev_priv); + pp |= EDP_FORCE_VDD; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + DRM_DEBUG_KMS("PCH_PP_STATUS: 0x%08x PCH_PP_CONTROL: 0x%08x\n", + I915_READ(PCH_PP_STATUS), I915_READ(PCH_PP_CONTROL)); + + /* + * If the panel wasn't on, delay before accessing aux channel + */ + if (!ironlake_edp_have_panel_power(intel_dp)) { + DRM_DEBUG_KMS("eDP was not running\n"); + msleep(intel_dp->panel_power_up_delay); + } +} + +static void ironlake_panel_vdd_off_sync(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!intel_dp->want_panel_vdd && ironlake_edp_have_panel_vdd(intel_dp)) { + pp = ironlake_get_pp_control(dev_priv); + pp &= ~EDP_FORCE_VDD; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + /* Make sure sequencer is idle before allowing subsequent activity */ + DRM_DEBUG_KMS("PCH_PP_STATUS: 0x%08x PCH_PP_CONTROL: 0x%08x\n", + I915_READ(PCH_PP_STATUS), I915_READ(PCH_PP_CONTROL)); + + msleep(intel_dp->panel_power_down_delay); + } +} + +static void ironlake_panel_vdd_work(struct work_struct *__work) +{ + struct intel_dp *intel_dp = container_of(to_delayed_work(__work), + struct intel_dp, panel_vdd_work); + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + mutex_lock(&dev->mode_config.mutex); + ironlake_panel_vdd_off_sync(intel_dp); + mutex_unlock(&dev->mode_config.mutex); +} + +void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) +{ + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd); + WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on"); + + intel_dp->want_panel_vdd = false; + + if (sync) { + ironlake_panel_vdd_off_sync(intel_dp); + } else { + /* + * Queue the timer to fire a long + * time from now (relative to the power down delay) + * to keep the panel power up across a sequence of operations + */ + schedule_delayed_work(&intel_dp->panel_vdd_work, + msecs_to_jiffies(intel_dp->panel_power_cycle_delay * 5)); + } +} + +void ironlake_edp_panel_on(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP power on\n"); + + if (ironlake_edp_have_panel_power(intel_dp)) { + DRM_DEBUG_KMS("eDP power already on\n"); + return; + } + + ironlake_wait_panel_power_cycle(intel_dp); + + pp = ironlake_get_pp_control(dev_priv); + if (IS_GEN5(dev)) { + /* ILK workaround: disable reset around power sequence */ + pp &= ~PANEL_POWER_RESET; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + } + + pp |= POWER_TARGET_ON; + if (!IS_GEN5(dev)) + pp |= PANEL_POWER_RESET; + + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + ironlake_wait_panel_on(intel_dp); + + if (IS_GEN5(dev)) { + pp |= PANEL_POWER_RESET; /* restore panel reset bit */ + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + } +} + +void ironlake_edp_panel_off(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP power off\n"); + + WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); + + pp = ironlake_get_pp_control(dev_priv); + /* We need to switch off panel power _and_ force vdd, for otherwise some + * panels get very unhappy and cease to work. */ + pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + intel_dp->want_panel_vdd = false; + + ironlake_wait_panel_off(intel_dp); +} + +void ironlake_edp_backlight_on(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = to_intel_crtc(intel_dig_port->base.base.crtc)->pipe; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("\n"); + /* + * If we enable the backlight right away following a panel power + * on, we may see slight flicker as the panel syncs with the eDP + * link. So delay a bit to make sure the image is solid before + * allowing it to appear. + */ + msleep(intel_dp->backlight_on_delay); + pp = ironlake_get_pp_control(dev_priv); + pp |= EDP_BLC_ENABLE; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + intel_panel_enable_backlight(dev, pipe); +} + +void ironlake_edp_backlight_off(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + intel_panel_disable_backlight(dev); + + DRM_DEBUG_KMS("\n"); + pp = ironlake_get_pp_control(dev_priv); + pp &= ~EDP_BLC_ENABLE; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + msleep(intel_dp->backlight_off_delay); +} + +static void ironlake_edp_pll_on(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + assert_pipe_disabled(dev_priv, + to_intel_crtc(crtc)->pipe); + + DRM_DEBUG_KMS("\n"); + dpa_ctl = I915_READ(DP_A); + WARN(dpa_ctl & DP_PLL_ENABLE, "dp pll on, should be off\n"); + WARN(dpa_ctl & DP_PORT_EN, "dp port still on, should be off\n"); + + /* We don't adjust intel_dp->DP while tearing down the link, to + * facilitate link retraining (e.g. after hotplug). Hence clear all + * enable bits here to ensure that we don't enable too much. */ + intel_dp->DP &= ~(DP_PORT_EN | DP_AUDIO_OUTPUT_ENABLE); + intel_dp->DP |= DP_PLL_ENABLE; + I915_WRITE(DP_A, intel_dp->DP); + POSTING_READ(DP_A); + udelay(200); +} + +static void ironlake_edp_pll_off(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + assert_pipe_disabled(dev_priv, + to_intel_crtc(crtc)->pipe); + + dpa_ctl = I915_READ(DP_A); + WARN((dpa_ctl & DP_PLL_ENABLE) == 0, + "dp pll off, should be on\n"); + WARN(dpa_ctl & DP_PORT_EN, "dp port still on, should be off\n"); + + /* We can't rely on the value tracked for the DP register in + * intel_dp->DP because link_down must not change that (otherwise link + * re-training will fail. */ + dpa_ctl &= ~DP_PLL_ENABLE; + I915_WRITE(DP_A, dpa_ctl); + POSTING_READ(DP_A); + udelay(200); +} + +/* If the sink supports it, try to set the power state appropriately */ +void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode) +{ + int ret, i; + + /* Should have a valid DPCD by this point */ + if (intel_dp->dpcd[DP_DPCD_REV] < 0x11) + return; + + if (mode != DRM_MODE_DPMS_ON) { + ret = intel_dp_aux_native_write_1(intel_dp, DP_SET_POWER, + DP_SET_POWER_D3); + if (ret != 1) + DRM_DEBUG_DRIVER("failed to write sink power state\n"); + } else { + /* + * When turning on, we need to retry for 1ms to give the sink + * time to wake up. + */ + for (i = 0; i < 3; i++) { + ret = intel_dp_aux_native_write_1(intel_dp, + DP_SET_POWER, + DP_SET_POWER_D0); + if (ret == 1) + break; + msleep(1); + } + } +} + +static bool intel_dp_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ(intel_dp->output_reg); + + if (!(tmp & DP_PORT_EN)) + return false; + + if (is_cpu_edp(intel_dp) && IS_GEN7(dev)) { + *pipe = PORT_TO_PIPE_CPT(tmp); + } else if (!HAS_PCH_CPT(dev) || is_cpu_edp(intel_dp)) { + *pipe = PORT_TO_PIPE(tmp); + } else { + u32 trans_sel; + u32 trans_dp; + int i; + + switch (intel_dp->output_reg) { + case PCH_DP_B: + trans_sel = TRANS_DP_PORT_SEL_B; + break; + case PCH_DP_C: + trans_sel = TRANS_DP_PORT_SEL_C; + break; + case PCH_DP_D: + trans_sel = TRANS_DP_PORT_SEL_D; + break; + default: + return true; + } + + for_each_pipe(i) { + trans_dp = I915_READ(TRANS_DP_CTL(i)); + if ((trans_dp & TRANS_DP_PORT_SEL_MASK) == trans_sel) { + *pipe = i; + return true; + } + } + + DRM_DEBUG_KMS("No pipe for dp port 0x%x found\n", + intel_dp->output_reg); + } + + return true; +} + +static void intel_disable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + /* Make sure the panel is off before trying to change the mode. But also + * ensure that we have vdd while we switch off the panel. */ + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_backlight_off(intel_dp); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + ironlake_edp_panel_off(intel_dp); + + /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */ + if (!is_cpu_edp(intel_dp)) + intel_dp_link_down(intel_dp); +} + +static void intel_post_disable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + if (is_cpu_edp(intel_dp)) { + intel_dp_link_down(intel_dp); + ironlake_edp_pll_off(intel_dp); + } +} + +static void intel_enable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dp_reg = I915_READ(intel_dp->output_reg); + + if (WARN_ON(dp_reg & DP_PORT_EN)) + return; + + ironlake_edp_panel_vdd_on(intel_dp); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + intel_dp_start_link_train(intel_dp); + ironlake_edp_panel_on(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, true); + intel_dp_complete_link_train(intel_dp); + ironlake_edp_backlight_on(intel_dp); +} + +static void intel_pre_enable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + if (is_cpu_edp(intel_dp)) + ironlake_edp_pll_on(intel_dp); +} + +/* + * Native read with retry for link status and receiver capability reads for + * cases where the sink may still be asleep. + */ +static bool +intel_dp_aux_native_read_retry(struct intel_dp *intel_dp, uint16_t address, + uint8_t *recv, int recv_bytes) +{ + int ret, i; + + /* + * Sinks are *supposed* to come up within 1ms from an off state, + * but we're also supposed to retry 3 times per the spec. + */ + for (i = 0; i < 3; i++) { + ret = intel_dp_aux_native_read(intel_dp, address, recv, + recv_bytes); + if (ret == recv_bytes) + return true; + msleep(1); + } + + return false; +} + +/* + * Fetch AUX CH registers 0x202 - 0x207 which contain + * link status information + */ +static bool +intel_dp_get_link_status(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]) +{ + return intel_dp_aux_native_read_retry(intel_dp, + DP_LANE0_1_STATUS, + link_status, + DP_LINK_STATUS_SIZE); +} + +#if 0 +static char *voltage_names[] = { + "0.4V", "0.6V", "0.8V", "1.2V" +}; +static char *pre_emph_names[] = { + "0dB", "3.5dB", "6dB", "9.5dB" +}; +static char *link_train_names[] = { + "pattern 1", "pattern 2", "idle", "off" +}; +#endif + +/* + * These are source-specific values; current Intel hardware supports + * a maximum voltage of 800mV and a maximum pre-emphasis of 6dB + */ + +static uint8_t +intel_dp_voltage_max(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + if (IS_GEN7(dev) && is_cpu_edp(intel_dp)) + return DP_TRAIN_VOLTAGE_SWING_800; + else if (HAS_PCH_CPT(dev) && !is_cpu_edp(intel_dp)) + return DP_TRAIN_VOLTAGE_SWING_1200; + else + return DP_TRAIN_VOLTAGE_SWING_800; +} + +static uint8_t +intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + if (IS_HASWELL(dev)) { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_9_5; + case DP_TRAIN_VOLTAGE_SWING_600: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + case DP_TRAIN_VOLTAGE_SWING_1200: + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_600: + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } else { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_600: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + case DP_TRAIN_VOLTAGE_SWING_1200: + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } +} + +static void +intel_get_adjust_train(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]) +{ + uint8_t v = 0; + uint8_t p = 0; + int lane; + uint8_t voltage_max; + uint8_t preemph_max; + + for (lane = 0; lane < intel_dp->lane_count; lane++) { + uint8_t this_v = drm_dp_get_adjust_request_voltage(link_status, lane); + uint8_t this_p = drm_dp_get_adjust_request_pre_emphasis(link_status, lane); + + if (this_v > v) + v = this_v; + if (this_p > p) + p = this_p; + } + + voltage_max = intel_dp_voltage_max(intel_dp); + if (v >= voltage_max) + v = voltage_max | DP_TRAIN_MAX_SWING_REACHED; + + preemph_max = intel_dp_pre_emphasis_max(intel_dp, v); + if (p >= preemph_max) + p = preemph_max | DP_TRAIN_MAX_PRE_EMPHASIS_REACHED; + + for (lane = 0; lane < 4; lane++) + intel_dp->train_set[lane] = v | p; +} + +static uint32_t +intel_dp_signal_levels(uint8_t train_set) +{ + uint32_t signal_levels = 0; + + switch (train_set & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + default: + signal_levels |= DP_VOLTAGE_0_4; + break; + case DP_TRAIN_VOLTAGE_SWING_600: + signal_levels |= DP_VOLTAGE_0_6; + break; + case DP_TRAIN_VOLTAGE_SWING_800: + signal_levels |= DP_VOLTAGE_0_8; + break; + case DP_TRAIN_VOLTAGE_SWING_1200: + signal_levels |= DP_VOLTAGE_1_2; + break; + } + switch (train_set & DP_TRAIN_PRE_EMPHASIS_MASK) { + case DP_TRAIN_PRE_EMPHASIS_0: + default: + signal_levels |= DP_PRE_EMPHASIS_0; + break; + case DP_TRAIN_PRE_EMPHASIS_3_5: + signal_levels |= DP_PRE_EMPHASIS_3_5; + break; + case DP_TRAIN_PRE_EMPHASIS_6: + signal_levels |= DP_PRE_EMPHASIS_6; + break; + case DP_TRAIN_PRE_EMPHASIS_9_5: + signal_levels |= DP_PRE_EMPHASIS_9_5; + break; + } + return signal_levels; +} + +/* Gen6's DP voltage swing and pre-emphasis control */ +static uint32_t +intel_gen6_edp_signal_levels(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_400_600MV_0DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_400MV_3_5DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_6: + return EDP_LINK_TRAIN_400_600MV_6DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_600_800MV_3_5DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + case DP_TRAIN_VOLTAGE_SWING_1200 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_800_1200MV_0DB_SNB_B; + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return EDP_LINK_TRAIN_400_600MV_0DB_SNB_B; + } +} + +/* Gen7's DP voltage swing and pre-emphasis control */ +static uint32_t +intel_gen7_edp_signal_levels(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_400MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_400MV_3_5DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + return EDP_LINK_TRAIN_400MV_6DB_IVB; + + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_600MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_600MV_3_5DB_IVB; + + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_800MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_800MV_3_5DB_IVB; + + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return EDP_LINK_TRAIN_500MV_0DB_IVB; + } +} + +/* Gen7.5's (HSW) DP voltage swing and pre-emphasis control */ +static uint32_t +intel_dp_signal_levels_hsw(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_400MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_400MV_3_5DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + return DDI_BUF_EMP_400MV_6DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_9_5: + return DDI_BUF_EMP_400MV_9_5DB_HSW; + + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_600MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_600MV_3_5DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_6: + return DDI_BUF_EMP_600MV_6DB_HSW; + + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_800MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_800MV_3_5DB_HSW; + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return DDI_BUF_EMP_400MV_0DB_HSW; + } +} + +static bool +intel_dp_set_link_train(struct intel_dp *intel_dp, + uint32_t dp_reg_value, + uint8_t dp_train_pat) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_dig_port->port; + int ret; + uint32_t temp; + + if (IS_HASWELL(dev)) { + temp = I915_READ(DP_TP_CTL(port)); + + if (dp_train_pat & DP_LINK_SCRAMBLING_DISABLE) + temp |= DP_TP_CTL_SCRAMBLE_DISABLE; + else + temp &= ~DP_TP_CTL_SCRAMBLE_DISABLE; + + temp &= ~DP_TP_CTL_LINK_TRAIN_MASK; + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + temp |= DP_TP_CTL_LINK_TRAIN_IDLE; + I915_WRITE(DP_TP_CTL(port), temp); + + if (wait_for((I915_READ(DP_TP_STATUS(port)) & + DP_TP_STATUS_IDLE_DONE), 1)) + DRM_ERROR("Timed out waiting for DP idle patterns\n"); + + temp &= ~DP_TP_CTL_LINK_TRAIN_MASK; + temp |= DP_TP_CTL_LINK_TRAIN_NORMAL; + + break; + case DP_TRAINING_PATTERN_1: + temp |= DP_TP_CTL_LINK_TRAIN_PAT1; + break; + case DP_TRAINING_PATTERN_2: + temp |= DP_TP_CTL_LINK_TRAIN_PAT2; + break; + case DP_TRAINING_PATTERN_3: + temp |= DP_TP_CTL_LINK_TRAIN_PAT3; + break; + } + I915_WRITE(DP_TP_CTL(port), temp); + + } else if (HAS_PCH_CPT(dev) && + (IS_GEN7(dev) || !is_cpu_edp(intel_dp))) { + dp_reg_value &= ~DP_LINK_TRAIN_MASK_CPT; + + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + dp_reg_value |= DP_LINK_TRAIN_OFF_CPT; + break; + case DP_TRAINING_PATTERN_1: + dp_reg_value |= DP_LINK_TRAIN_PAT_1_CPT; + break; + case DP_TRAINING_PATTERN_2: + dp_reg_value |= DP_LINK_TRAIN_PAT_2_CPT; + break; + case DP_TRAINING_PATTERN_3: + DRM_ERROR("DP training pattern 3 not supported\n"); + dp_reg_value |= DP_LINK_TRAIN_PAT_2_CPT; + break; + } + + } else { + dp_reg_value &= ~DP_LINK_TRAIN_MASK; + + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + dp_reg_value |= DP_LINK_TRAIN_OFF; + break; + case DP_TRAINING_PATTERN_1: + dp_reg_value |= DP_LINK_TRAIN_PAT_1; + break; + case DP_TRAINING_PATTERN_2: + dp_reg_value |= DP_LINK_TRAIN_PAT_2; + break; + case DP_TRAINING_PATTERN_3: + DRM_ERROR("DP training pattern 3 not supported\n"); + dp_reg_value |= DP_LINK_TRAIN_PAT_2; + break; + } + } + + I915_WRITE(intel_dp->output_reg, dp_reg_value); + POSTING_READ(intel_dp->output_reg); + + intel_dp_aux_native_write_1(intel_dp, + DP_TRAINING_PATTERN_SET, + dp_train_pat); + + if ((dp_train_pat & DP_TRAINING_PATTERN_MASK) != + DP_TRAINING_PATTERN_DISABLE) { + ret = intel_dp_aux_native_write(intel_dp, + DP_TRAINING_LANE0_SET, + intel_dp->train_set, + intel_dp->lane_count); + if (ret != intel_dp->lane_count) + return false; + } + + return true; +} + +/* Enable corresponding port and start training pattern 1 */ +void +intel_dp_start_link_train(struct intel_dp *intel_dp) +{ + struct drm_encoder *encoder = &dp_to_dig_port(intel_dp)->base.base; + struct drm_device *dev = encoder->dev; + int i; + uint8_t voltage; + bool clock_recovery = false; + int voltage_tries, loop_tries; + uint32_t DP = intel_dp->DP; + + if (IS_HASWELL(dev)) + intel_ddi_prepare_link_retrain(encoder); + + /* Write the link configuration data */ + intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, + intel_dp->link_configuration, + DP_LINK_CONFIGURATION_SIZE); + + DP |= DP_PORT_EN; + + memset(intel_dp->train_set, 0, 4); + voltage = 0xff; + voltage_tries = 0; + loop_tries = 0; + clock_recovery = false; + for (;;) { + /* Use intel_dp->train_set[0] to set the voltage and pre emphasis values */ + uint8_t link_status[DP_LINK_STATUS_SIZE]; + uint32_t signal_levels; + + if (IS_HASWELL(dev)) { + signal_levels = intel_dp_signal_levels_hsw( + intel_dp->train_set[0]); + DP = (DP & ~DDI_BUF_EMP_MASK) | signal_levels; + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + signal_levels = intel_gen7_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_IVB) | signal_levels; + } else if (IS_GEN6(dev) && is_cpu_edp(intel_dp)) { + signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; + } else { + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; + } + DRM_DEBUG_KMS("training pattern 1 signal levels %08x\n", + signal_levels); + + /* Set training pattern 1 */ + if (!intel_dp_set_link_train(intel_dp, DP, + DP_TRAINING_PATTERN_1 | + DP_LINK_SCRAMBLING_DISABLE)) + break; + + drm_dp_link_train_clock_recovery_delay(intel_dp->dpcd); + if (!intel_dp_get_link_status(intel_dp, link_status)) { + DRM_ERROR("failed to get link status\n"); + break; + } + + if (drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { + DRM_DEBUG_KMS("clock recovery OK\n"); + clock_recovery = true; + break; + } + + /* Check to see if we've tried the max voltage */ + for (i = 0; i < intel_dp->lane_count; i++) + if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) + break; + if (i == intel_dp->lane_count) { + ++loop_tries; + if (loop_tries == 5) { + DRM_DEBUG_KMS("too many full retries, give up\n"); + break; + } + memset(intel_dp->train_set, 0, 4); + voltage_tries = 0; + continue; + } + + /* Check to see if we've tried the same voltage 5 times */ + if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { + ++voltage_tries; + if (voltage_tries == 5) { + DRM_DEBUG_KMS("too many voltage retries, give up\n"); + break; + } + } else + voltage_tries = 0; + voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; + + /* Compute new intel_dp->train_set as requested by target */ + intel_get_adjust_train(intel_dp, link_status); + } + + intel_dp->DP = DP; +} + +void +intel_dp_complete_link_train(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + bool channel_eq = false; + int tries, cr_tries; + uint32_t DP = intel_dp->DP; + + /* channel equalization */ + tries = 0; + cr_tries = 0; + channel_eq = false; + for (;;) { + /* Use intel_dp->train_set[0] to set the voltage and pre emphasis values */ + uint32_t signal_levels; + uint8_t link_status[DP_LINK_STATUS_SIZE]; + + if (cr_tries > 5) { + DRM_ERROR("failed to train DP, aborting\n"); + intel_dp_link_down(intel_dp); + break; + } + + if (IS_HASWELL(dev)) { + signal_levels = intel_dp_signal_levels_hsw(intel_dp->train_set[0]); + DP = (DP & ~DDI_BUF_EMP_MASK) | signal_levels; + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + signal_levels = intel_gen7_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_IVB) | signal_levels; + } else if (IS_GEN6(dev) && is_cpu_edp(intel_dp)) { + signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; + } else { + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; + } + + /* channel eq pattern */ + if (!intel_dp_set_link_train(intel_dp, DP, + DP_TRAINING_PATTERN_2 | + DP_LINK_SCRAMBLING_DISABLE)) + break; + + drm_dp_link_train_channel_eq_delay(intel_dp->dpcd); + if (!intel_dp_get_link_status(intel_dp, link_status)) + break; + + /* Make sure clock is still ok */ + if (!drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { + intel_dp_start_link_train(intel_dp); + cr_tries++; + continue; + } + + if (drm_dp_channel_eq_ok(link_status, intel_dp->lane_count)) { + channel_eq = true; + break; + } + + /* Try 5 times, then try clock recovery if that fails */ + if (tries > 5) { + intel_dp_link_down(intel_dp); + intel_dp_start_link_train(intel_dp); + tries = 0; + cr_tries++; + continue; + } + + /* Compute new intel_dp->train_set as requested by target */ + intel_get_adjust_train(intel_dp, link_status); + ++tries; + } + + if (channel_eq) + DRM_DEBUG_KMS("Channel EQ done. DP Training successfull\n"); + + intel_dp_set_link_train(intel_dp, DP, DP_TRAINING_PATTERN_DISABLE); +} + +static void +intel_dp_link_down(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t DP = intel_dp->DP; + + /* + * DDI code has a strict mode set sequence and we should try to respect + * it, otherwise we might hang the machine in many different ways. So we + * really should be disabling the port only on a complete crtc_disable + * sequence. This function is just called under two conditions on DDI + * code: + * - Link train failed while doing crtc_enable, and on this case we + * really should respect the mode set sequence and wait for a + * crtc_disable. + * - Someone turned the monitor off and intel_dp_check_link_status + * called us. We don't need to disable the whole port on this case, so + * when someone turns the monitor on again, + * intel_ddi_prepare_link_retrain will take care of redoing the link + * train. + */ + if (IS_HASWELL(dev)) + return; + + if (WARN_ON((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)) + return; + + DRM_DEBUG_KMS("\n"); + + if (HAS_PCH_CPT(dev) && (IS_GEN7(dev) || !is_cpu_edp(intel_dp))) { + DP &= ~DP_LINK_TRAIN_MASK_CPT; + I915_WRITE(intel_dp->output_reg, DP | DP_LINK_TRAIN_PAT_IDLE_CPT); + } else { + DP &= ~DP_LINK_TRAIN_MASK; + I915_WRITE(intel_dp->output_reg, DP | DP_LINK_TRAIN_PAT_IDLE); + } + POSTING_READ(intel_dp->output_reg); + + msleep(17); + + if (HAS_PCH_IBX(dev) && + I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) { + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + + /* Hardware workaround: leaving our transcoder select + * set to transcoder B while it's off will prevent the + * corresponding HDMI output on transcoder A. + * + * Combine this with another hardware workaround: + * transcoder select bit can only be cleared while the + * port is enabled. + */ + DP &= ~DP_PIPEB_SELECT; + I915_WRITE(intel_dp->output_reg, DP); + + /* Changes to enable or select take place the vblank + * after being written. + */ + if (crtc == NULL) { + /* We can arrive here never having been attached + * to a CRTC, for instance, due to inheriting + * random state from the BIOS. + * + * If the pipe is not running, play safe and + * wait for the clocks to stabilise before + * continuing. + */ + POSTING_READ(intel_dp->output_reg); + msleep(50); + } else + intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe); + } + + DP &= ~DP_AUDIO_OUTPUT_ENABLE; + I915_WRITE(intel_dp->output_reg, DP & ~DP_PORT_EN); + POSTING_READ(intel_dp->output_reg); + msleep(intel_dp->panel_power_down_delay); +} + +static bool +intel_dp_get_dpcd(struct intel_dp *intel_dp) +{ + if (intel_dp_aux_native_read_retry(intel_dp, 0x000, intel_dp->dpcd, + sizeof(intel_dp->dpcd)) == 0) + return false; /* aux transfer failed */ + + if (intel_dp->dpcd[DP_DPCD_REV] == 0) + return false; /* DPCD not present */ + + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & + DP_DWN_STRM_PORT_PRESENT)) + return true; /* native DP sink */ + + if (intel_dp->dpcd[DP_DPCD_REV] == 0x10) + return true; /* no per-port downstream info */ + + if (intel_dp_aux_native_read_retry(intel_dp, DP_DOWNSTREAM_PORT_0, + intel_dp->downstream_ports, + DP_MAX_DOWNSTREAM_PORTS) == 0) + return false; /* downstream port status fetch failed */ + + return true; +} + +static void +intel_dp_probe_oui(struct intel_dp *intel_dp) +{ + u8 buf[3]; + + if (!(intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT)) + return; + + ironlake_edp_panel_vdd_on(intel_dp); + + if (intel_dp_aux_native_read_retry(intel_dp, DP_SINK_OUI, buf, 3)) + DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n", + buf[0], buf[1], buf[2]); + + if (intel_dp_aux_native_read_retry(intel_dp, DP_BRANCH_OUI, buf, 3)) + DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n", + buf[0], buf[1], buf[2]); + + ironlake_edp_panel_vdd_off(intel_dp, false); +} + +static bool +intel_dp_get_sink_irq(struct intel_dp *intel_dp, u8 *sink_irq_vector) +{ + int ret; + + ret = intel_dp_aux_native_read_retry(intel_dp, + DP_DEVICE_SERVICE_IRQ_VECTOR, + sink_irq_vector, 1); + if (!ret) + return false; + + return true; +} + +static void +intel_dp_handle_test_request(struct intel_dp *intel_dp) +{ + /* NAK by default */ + intel_dp_aux_native_write_1(intel_dp, DP_TEST_RESPONSE, DP_TEST_NAK); +} + +/* + * According to DP spec + * 5.1.2: + * 1. Read DPCD + * 2. Configure link according to Receiver Capabilities + * 3. Use Link Training from 2.5.3.3 and 3.5.1.3 + * 4. Check link status on receipt of hot-plug interrupt + */ + +void +intel_dp_check_link_status(struct intel_dp *intel_dp) +{ + struct intel_encoder *intel_encoder = &dp_to_dig_port(intel_dp)->base; + u8 sink_irq_vector; + u8 link_status[DP_LINK_STATUS_SIZE]; + + if (!intel_encoder->connectors_active) + return; + + if (WARN_ON(!intel_encoder->base.crtc)) + return; + + /* Try to read receiver status if the link appears to be up */ + if (!intel_dp_get_link_status(intel_dp, link_status)) { + intel_dp_link_down(intel_dp); + return; + } + + /* Now read the DPCD to see if it's actually running */ + if (!intel_dp_get_dpcd(intel_dp)) { + intel_dp_link_down(intel_dp); + return; + } + + /* Try to read the source of the interrupt */ + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && + intel_dp_get_sink_irq(intel_dp, &sink_irq_vector)) { + /* Clear interrupt source */ + intel_dp_aux_native_write_1(intel_dp, + DP_DEVICE_SERVICE_IRQ_VECTOR, + sink_irq_vector); + + if (sink_irq_vector & DP_AUTOMATED_TEST_REQUEST) + intel_dp_handle_test_request(intel_dp); + if (sink_irq_vector & (DP_CP_IRQ | DP_SINK_SPECIFIC_IRQ)) + DRM_DEBUG_DRIVER("CP or sink specific irq unhandled\n"); + } + + if (!drm_dp_channel_eq_ok(link_status, intel_dp->lane_count)) { + DRM_DEBUG_KMS("%s: channel EQ not ok, retraining\n", + drm_get_encoder_name(&intel_encoder->base)); + intel_dp_start_link_train(intel_dp); + intel_dp_complete_link_train(intel_dp); + } +} + +/* XXX this is probably wrong for multiple downstream ports */ +static enum drm_connector_status +intel_dp_detect_dpcd(struct intel_dp *intel_dp) +{ + uint8_t *dpcd = intel_dp->dpcd; + bool hpd; + uint8_t type; + + if (!intel_dp_get_dpcd(intel_dp)) + return connector_status_disconnected; + + /* if there's no downstream port, we're done */ + if (!(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT)) + return connector_status_connected; + + /* If we're HPD-aware, SINK_COUNT changes dynamically */ + hpd = !!(intel_dp->downstream_ports[0] & DP_DS_PORT_HPD); + if (hpd) { + uint8_t reg; + if (!intel_dp_aux_native_read_retry(intel_dp, DP_SINK_COUNT, + ®, 1)) + return connector_status_unknown; + return DP_GET_SINK_COUNT(reg) ? connector_status_connected + : connector_status_disconnected; + } + + /* If no HPD, poke DDC gently */ + if (drm_probe_ddc(&intel_dp->adapter)) + return connector_status_connected; + + /* Well we tried, say unknown for unreliable port types */ + type = intel_dp->downstream_ports[0] & DP_DS_PORT_TYPE_MASK; + if (type == DP_DS_PORT_TYPE_VGA || type == DP_DS_PORT_TYPE_NON_EDID) + return connector_status_unknown; + + /* Anything else is out of spec, warn and ignore */ + DRM_DEBUG_KMS("Broken DP branch device, ignoring\n"); + return connector_status_disconnected; +} + +static enum drm_connector_status +ironlake_dp_detect(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + enum drm_connector_status status; + + /* Can't disconnect eDP, but you can close the lid... */ + if (is_edp(intel_dp)) { + status = intel_panel_detect(dev); + if (status == connector_status_unknown) + status = connector_status_connected; + return status; + } + + return intel_dp_detect_dpcd(intel_dp); +} + +static enum drm_connector_status +g4x_dp_detect(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t bit; + + switch (intel_dp->output_reg) { + case DP_B: + bit = DPB_HOTPLUG_LIVE_STATUS; + break; + case DP_C: + bit = DPC_HOTPLUG_LIVE_STATUS; + break; + case DP_D: + bit = DPD_HOTPLUG_LIVE_STATUS; + break; + default: + return connector_status_unknown; + } + + if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0) + return connector_status_disconnected; + + return intel_dp_detect_dpcd(intel_dp); +} + +static struct edid * +intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + /* use cached edid if we have one */ + if (intel_connector->edid) { + struct edid *edid; + int size; + + /* invalid edid */ + if (IS_ERR(intel_connector->edid)) + return NULL; + + size = (intel_connector->edid->extensions + 1) * EDID_LENGTH; + edid = kmalloc(size, GFP_KERNEL); + if (!edid) + return NULL; + + memcpy(edid, intel_connector->edid, size); + return edid; + } + + return drm_get_edid(connector, adapter); +} + +static int +intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *adapter) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + /* use cached edid if we have one */ + if (intel_connector->edid) { + /* invalid edid */ + if (IS_ERR(intel_connector->edid)) + return 0; + + return intel_connector_update_modes(connector, + intel_connector->edid); + } + + return intel_ddc_get_modes(connector, adapter); +} + + +/** + * Uses CRT_HOTPLUG_EN and CRT_HOTPLUG_STAT to detect DP connection. + * + * \return true if DP port is connected. + * \return false if DP port is disconnected. + */ +static enum drm_connector_status +intel_dp_detect(struct drm_connector *connector, bool force) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = connector->dev; + enum drm_connector_status status; + struct edid *edid = NULL; + char dpcd_hex_dump[sizeof(intel_dp->dpcd) * 3]; + + intel_dp->has_audio = false; + + if (HAS_PCH_SPLIT(dev)) + status = ironlake_dp_detect(intel_dp); + else + status = g4x_dp_detect(intel_dp); + + hex_dump_to_buffer(intel_dp->dpcd, sizeof(intel_dp->dpcd), + 32, 1, dpcd_hex_dump, sizeof(dpcd_hex_dump), false); + DRM_DEBUG_KMS("DPCD: %s\n", dpcd_hex_dump); + + if (status != connector_status_connected) + return status; + + intel_dp_probe_oui(intel_dp); + + if (intel_dp->force_audio != HDMI_AUDIO_AUTO) { + intel_dp->has_audio = (intel_dp->force_audio == HDMI_AUDIO_ON); + } else { + edid = intel_dp_get_edid(connector, &intel_dp->adapter); + if (edid) { + intel_dp->has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + } + + if (intel_encoder->type != INTEL_OUTPUT_EDP) + intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; + return connector_status_connected; +} + +static int intel_dp_get_modes(struct drm_connector *connector) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_device *dev = connector->dev; + int ret; + + /* We should parse the EDID data and find out if it has an audio sink + */ + + ret = intel_dp_get_edid_modes(connector, &intel_dp->adapter); + if (ret) + return ret; + + /* if eDP has no EDID, fall back to fixed mode */ + if (is_edp(intel_dp) && intel_connector->panel.fixed_mode) { + struct drm_display_mode *mode; + mode = drm_mode_duplicate(dev, + intel_connector->panel.fixed_mode); + if (mode) { + drm_mode_probed_add(connector, mode); + return 1; + } + } + return 0; +} + +static bool +intel_dp_detect_audio(struct drm_connector *connector) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct edid *edid; + bool has_audio = false; + + edid = intel_dp_get_edid(connector, &intel_dp->adapter); + if (edid) { + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + + return has_audio; +} + +static int +intel_dp_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct intel_connector *intel_connector = to_intel_connector(connector); + struct intel_encoder *intel_encoder = intel_attached_encoder(connector); + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + int ret; + + ret = drm_object_property_set_value(&connector->base, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + int i = val; + bool has_audio; + + if (i == intel_dp->force_audio) + return 0; + + intel_dp->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_dp_detect_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (has_audio == intel_dp->has_audio) + return 0; + + intel_dp->has_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_dp->color_range) + return 0; + + intel_dp->color_range = val ? DP_COLOR_RANGE_16_235 : 0; + goto done; + } + + if (is_edp(intel_dp) && + property == connector->dev->mode_config.scaling_mode_property) { + if (val == DRM_MODE_SCALE_NONE) { + DRM_DEBUG_KMS("no scaling not supported\n"); + return -EINVAL; + } + + if (intel_connector->panel.fitting_mode == val) { + /* the eDP scaling property is not changed */ + return 0; + } + intel_connector->panel.fitting_mode = val; + + goto done; + } + + return -EINVAL; + +done: + if (intel_encoder->base.crtc) { + struct drm_crtc *crtc = intel_encoder->base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +} + +static void +intel_dp_destroy(struct drm_connector *connector) +{ + struct 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_fini(&intel_connector->panel); + + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +void intel_dp_encoder_destroy(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + struct intel_dp *intel_dp = &intel_dig_port->dp; + + i2c_del_adapter(&intel_dp->adapter); + drm_encoder_cleanup(encoder); + if (is_edp(intel_dp)) { + cancel_delayed_work_sync(&intel_dp->panel_vdd_work); + ironlake_panel_vdd_off_sync(intel_dp); + } + kfree(intel_dig_port); +} + +static const struct drm_encoder_helper_funcs intel_dp_helper_funcs = { + .mode_fixup = intel_dp_mode_fixup, + .mode_set = intel_dp_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_dp_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_dp_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_dp_set_property, + .destroy = intel_dp_destroy, +}; + +static const struct drm_connector_helper_funcs intel_dp_connector_helper_funcs = { + .get_modes = intel_dp_get_modes, + .mode_valid = intel_dp_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_dp_enc_funcs = { + .destroy = intel_dp_encoder_destroy, +}; + +static void +intel_dp_hot_plug(struct intel_encoder *intel_encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + + intel_dp_check_link_status(intel_dp); +} + +/* Return which DP Port should be selected for Transcoder DP control */ +int +intel_trans_dp_port_sel(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + struct intel_dp *intel_dp; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + intel_dp = enc_to_intel_dp(&intel_encoder->base); + + if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_EDP) + return intel_dp->output_reg; + } + + return -1; +} + +/* check the VBT to see whether the eDP is on DP-D port */ +bool intel_dpd_is_edp(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct child_device_config *p_child; + int i; + + if (!dev_priv->child_dev_num) + return false; + + for (i = 0; i < dev_priv->child_dev_num; i++) { + p_child = dev_priv->child_dev + i; + + if (p_child->dvo_port == PORT_IDPD && + p_child->device_type == DEVICE_TYPE_eDP) + return true; + } + return false; +} + +static void +intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + intel_attach_force_audio_property(connector); + intel_attach_broadcast_rgb_property(connector); + + if (is_edp(intel_dp)) { + drm_mode_create_scaling_mode_property(connector->dev); + drm_object_attach_property( + &connector->base, + connector->dev->mode_config.scaling_mode_property, + DRM_MODE_SCALE_ASPECT); + intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + } +} + +static void +intel_dp_init_panel_power_sequencer(struct drm_device *dev, + struct intel_dp *intel_dp, + struct edp_power_seq *out) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct edp_power_seq cur, vbt, spec, final; + u32 pp_on, pp_off, pp_div, pp; + + /* Workaround: Need to write PP_CONTROL with the unlock key as + * the very first thing. */ + pp = ironlake_get_pp_control(dev_priv); + I915_WRITE(PCH_PP_CONTROL, pp); + + pp_on = I915_READ(PCH_PP_ON_DELAYS); + pp_off = I915_READ(PCH_PP_OFF_DELAYS); + pp_div = I915_READ(PCH_PP_DIVISOR); + + /* Pull timing values out of registers */ + cur.t1_t3 = (pp_on & PANEL_POWER_UP_DELAY_MASK) >> + PANEL_POWER_UP_DELAY_SHIFT; + + cur.t8 = (pp_on & PANEL_LIGHT_ON_DELAY_MASK) >> + PANEL_LIGHT_ON_DELAY_SHIFT; + + cur.t9 = (pp_off & PANEL_LIGHT_OFF_DELAY_MASK) >> + PANEL_LIGHT_OFF_DELAY_SHIFT; + + cur.t10 = (pp_off & PANEL_POWER_DOWN_DELAY_MASK) >> + PANEL_POWER_DOWN_DELAY_SHIFT; + + cur.t11_t12 = ((pp_div & PANEL_POWER_CYCLE_DELAY_MASK) >> + PANEL_POWER_CYCLE_DELAY_SHIFT) * 1000; + + DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n", + cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12); + + vbt = dev_priv->edp.pps; + + /* Upper limits from eDP 1.3 spec. Note that we use the clunky units of + * our hw here, which are all in 100usec. */ + spec.t1_t3 = 210 * 10; + spec.t8 = 50 * 10; /* no limit for t8, use t7 instead */ + spec.t9 = 50 * 10; /* no limit for t9, make it symmetric with t8 */ + spec.t10 = 500 * 10; + /* This one is special and actually in units of 100ms, but zero + * based in the hw (so we need to add 100 ms). But the sw vbt + * table multiplies it with 1000 to make it in units of 100usec, + * too. */ + spec.t11_t12 = (510 + 100) * 10; + + DRM_DEBUG_KMS("vbt t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n", + vbt.t1_t3, vbt.t8, vbt.t9, vbt.t10, vbt.t11_t12); + + /* Use the max of the register settings and vbt. If both are + * unset, fall back to the spec limits. */ +#define assign_final(field) final.field = (max(cur.field, vbt.field) == 0 ? \ + spec.field : \ + max(cur.field, vbt.field)) + assign_final(t1_t3); + assign_final(t8); + assign_final(t9); + assign_final(t10); + assign_final(t11_t12); +#undef assign_final + +#define get_delay(field) (DIV_ROUND_UP(final.field, 10)) + intel_dp->panel_power_up_delay = get_delay(t1_t3); + intel_dp->backlight_on_delay = get_delay(t8); + intel_dp->backlight_off_delay = get_delay(t9); + intel_dp->panel_power_down_delay = get_delay(t10); + intel_dp->panel_power_cycle_delay = get_delay(t11_t12); +#undef get_delay + + DRM_DEBUG_KMS("panel power up delay %d, power down delay %d, power cycle delay %d\n", + intel_dp->panel_power_up_delay, intel_dp->panel_power_down_delay, + intel_dp->panel_power_cycle_delay); + + DRM_DEBUG_KMS("backlight on delay %d, off delay %d\n", + intel_dp->backlight_on_delay, intel_dp->backlight_off_delay); + + if (out) + *out = final; +} + +static void +intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev, + struct intel_dp *intel_dp, + struct edp_power_seq *seq) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp_on, pp_off, pp_div; + + /* And finally store the new values in the power sequencer. */ + pp_on = (seq->t1_t3 << PANEL_POWER_UP_DELAY_SHIFT) | + (seq->t8 << PANEL_LIGHT_ON_DELAY_SHIFT); + pp_off = (seq->t9 << PANEL_LIGHT_OFF_DELAY_SHIFT) | + (seq->t10 << PANEL_POWER_DOWN_DELAY_SHIFT); + /* Compute the divisor for the pp clock, simply match the Bspec + * formula. */ + pp_div = ((100 * intel_pch_rawclk(dev))/2 - 1) + << PP_REFERENCE_DIVIDER_SHIFT; + pp_div |= (DIV_ROUND_UP(seq->t11_t12, 1000) + << PANEL_POWER_CYCLE_DELAY_SHIFT); + + /* Haswell doesn't have any port selection bits for the panel + * power sequencer any more. */ + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + if (is_cpu_edp(intel_dp)) + pp_on |= PANEL_POWER_PORT_DP_A; + else + pp_on |= PANEL_POWER_PORT_DP_D; + } + + I915_WRITE(PCH_PP_ON_DELAYS, pp_on); + I915_WRITE(PCH_PP_OFF_DELAYS, pp_off); + I915_WRITE(PCH_PP_DIVISOR, pp_div); + + DRM_DEBUG_KMS("panel power sequencer register settings: PP_ON %#x, PP_OFF %#x, PP_DIV %#x\n", + I915_READ(PCH_PP_ON_DELAYS), + I915_READ(PCH_PP_OFF_DELAYS), + I915_READ(PCH_PP_DIVISOR)); +} + +void +intel_dp_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector) +{ + struct drm_connector *connector = &intel_connector->base; + struct intel_dp *intel_dp = &intel_dig_port->dp; + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = intel_encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_display_mode *fixed_mode = NULL; + struct edp_power_seq power_seq = { 0 }; + enum port port = intel_dig_port->port; + const char *name = NULL; + int type; + + /* Preserve the current hw state. */ + intel_dp->DP = I915_READ(intel_dp->output_reg); + intel_dp->attached_connector = intel_connector; + + if (HAS_PCH_SPLIT(dev) && port == PORT_D) + if (intel_dpd_is_edp(dev)) + intel_dp->is_pch_edp = true; + + /* + * FIXME : We need to initialize built-in panels before external panels. + * For X0, DP_C is fixed as eDP. Revisit this as part of VLV eDP cleanup + */ + if (IS_VALLEYVIEW(dev) && port == PORT_C) { + type = DRM_MODE_CONNECTOR_eDP; + intel_encoder->type = INTEL_OUTPUT_EDP; + } else if (port == PORT_A || is_pch_edp(intel_dp)) { + type = DRM_MODE_CONNECTOR_eDP; + intel_encoder->type = INTEL_OUTPUT_EDP; + } else { + /* The intel_encoder->type value may be INTEL_OUTPUT_UNKNOWN for + * DDI or INTEL_OUTPUT_DISPLAYPORT for the older gens, so don't + * rewrite it. + */ + type = DRM_MODE_CONNECTOR_DisplayPort; + } + + drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); + drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); + + connector->polled = DRM_CONNECTOR_POLL_HPD; + connector->interlace_allowed = true; + connector->doublescan_allowed = 0; + + INIT_DELAYED_WORK(&intel_dp->panel_vdd_work, + ironlake_panel_vdd_work); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + drm_sysfs_connector_add(connector); + + if (IS_HASWELL(dev)) + intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; + else + intel_connector->get_hw_state = intel_connector_get_hw_state; + + + /* Set up the DDC bus. */ + switch (port) { + case PORT_A: + name = "DPDDC-A"; + break; + case PORT_B: + dev_priv->hotplug_supported_mask |= DPB_HOTPLUG_INT_STATUS; + name = "DPDDC-B"; + break; + case PORT_C: + dev_priv->hotplug_supported_mask |= DPC_HOTPLUG_INT_STATUS; + name = "DPDDC-C"; + break; + case PORT_D: + dev_priv->hotplug_supported_mask |= DPD_HOTPLUG_INT_STATUS; + name = "DPDDC-D"; + break; + default: + WARN(1, "Invalid port %c\n", port_name(port)); + break; + } + + if (is_edp(intel_dp)) + intel_dp_init_panel_power_sequencer(dev, intel_dp, &power_seq); + + intel_dp_i2c_init(intel_dp, intel_connector, name); + + /* Cache DPCD and EDID for edp. */ + if (is_edp(intel_dp)) { + bool ret; + struct drm_display_mode *scan; + struct edid *edid; + + ironlake_edp_panel_vdd_on(intel_dp); + ret = intel_dp_get_dpcd(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, false); + + if (ret) { + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) + dev_priv->no_aux_handshake = + intel_dp->dpcd[DP_MAX_DOWNSPREAD] & + DP_NO_AUX_HANDSHAKE_LINK_TRAINING; + } else { + /* if this fails, presume the device is a ghost */ + DRM_INFO("failed to retrieve link info, disabling eDP\n"); + intel_dp_encoder_destroy(&intel_encoder->base); + intel_dp_destroy(connector); + return; + } + + /* We now know it's not a ghost, init power sequence regs. */ + intel_dp_init_panel_power_sequencer_registers(dev, intel_dp, + &power_seq); + + ironlake_edp_panel_vdd_on(intel_dp); + edid = drm_get_edid(connector, &intel_dp->adapter); + if (edid) { + if (drm_add_edid_modes(connector, edid)) { + drm_mode_connector_update_edid_property(connector, edid); + drm_edid_to_eld(connector, edid); + } else { + kfree(edid); + edid = ERR_PTR(-EINVAL); + } + } else { + edid = ERR_PTR(-ENOENT); + } + intel_connector->edid = edid; + + /* prefer fixed mode from EDID if available */ + list_for_each_entry(scan, &connector->probed_modes, head) { + if ((scan->type & DRM_MODE_TYPE_PREFERRED)) { + fixed_mode = drm_mode_duplicate(dev, scan); + break; + } + } + + /* fallback to VBT if available for eDP */ + if (!fixed_mode && dev_priv->lfp_lvds_vbt_mode) { + fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode); + if (fixed_mode) + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + } + + ironlake_edp_panel_vdd_off(intel_dp, false); + } + + if (is_edp(intel_dp)) { + intel_panel_init(&intel_connector->panel, fixed_mode); + intel_panel_setup_backlight(connector); + } + + intel_dp_add_properties(intel_dp, connector); + + /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written + * 0xd. Failure to do so will result in spurious interrupts being + * generated on the port when a cable is not attached. + */ + if (IS_G4X(dev) && !IS_GM45(dev)) { + u32 temp = I915_READ(PEG_BAND_GAP_DATA); + I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); + } +} + +void +intel_dp_init(struct drm_device *dev, int output_reg, enum port port) +{ + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *intel_connector; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dig_port); + return; + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, &intel_encoder->base, &intel_dp_enc_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(&intel_encoder->base, &intel_dp_helper_funcs); + + intel_encoder->enable = intel_enable_dp; + intel_encoder->pre_enable = intel_pre_enable_dp; + intel_encoder->disable = intel_disable_dp; + intel_encoder->post_disable = intel_post_disable_dp; + intel_encoder->get_hw_state = intel_dp_get_hw_state; + + intel_dig_port->port = port; + intel_dig_port->dp.output_reg = output_reg; + + intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + intel_encoder->hot_plug = intel_dp_hot_plug; + + intel_dp_init_connector(intel_dig_port, intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/intel_dvo.c +++ linux-3.5.0/ubuntu/i915/intel_dvo.c @@ -0,0 +1,534 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" +#include "dvo.h" + +#define SIL164_ADDR 0x38 +#define CH7xxx_ADDR 0x76 +#define TFP410_ADDR 0x38 +#define NS2501_ADDR 0x38 + +static const struct intel_dvo_device intel_dvo_devices[] = { + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "sil164", + .dvo_reg = DVOC, + .slave_addr = SIL164_ADDR, + .dev_ops = &sil164_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "ch7xxx", + .dvo_reg = DVOC, + .slave_addr = CH7xxx_ADDR, + .dev_ops = &ch7xxx_ops, + }, + { + .type = INTEL_DVO_CHIP_LVDS, + .name = "ivch", + .dvo_reg = DVOA, + .slave_addr = 0x02, /* Might also be 0x44, 0x84, 0xc4 */ + .dev_ops = &ivch_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "tfp410", + .dvo_reg = DVOC, + .slave_addr = TFP410_ADDR, + .dev_ops = &tfp410_ops, + }, + { + .type = INTEL_DVO_CHIP_LVDS, + .name = "ch7017", + .dvo_reg = DVOC, + .slave_addr = 0x75, + .gpio = GMBUS_PORT_DPB, + .dev_ops = &ch7017_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "ns2501", + .dvo_reg = DVOC, + .slave_addr = NS2501_ADDR, + .dev_ops = &ns2501_ops, + } +}; + +struct intel_dvo { + struct intel_encoder base; + + struct intel_dvo_device dev; + + struct drm_display_mode *panel_fixed_mode; + bool panel_wants_dither; +}; + +static struct intel_dvo *enc_to_intel_dvo(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_dvo, base.base); +} + +static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_dvo, base); +} + +static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(&connector->base); + + return intel_dvo->dev.dev_ops->get_hw_state(&intel_dvo->dev); +} + +static bool intel_dvo_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 tmp; + + tmp = I915_READ(intel_dvo->dev.dvo_reg); + + if (!(tmp & DVO_ENABLE)) + return false; + + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_disable_dvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 dvo_reg = intel_dvo->dev.dvo_reg; + u32 temp = I915_READ(dvo_reg); + + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false); + I915_WRITE(dvo_reg, temp & ~DVO_ENABLE); + I915_READ(dvo_reg); +} + +static void intel_enable_dvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 dvo_reg = intel_dvo->dev.dvo_reg; + u32 temp = I915_READ(dvo_reg); + + I915_WRITE(dvo_reg, temp | DVO_ENABLE); + I915_READ(dvo_reg); + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true); +} + +static void intel_dvo_dpms(struct drm_connector *connector, int mode) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + struct drm_crtc *crtc; + + /* dvo supports only 2 dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = intel_dvo->base.base.crtc; + if (!crtc) { + intel_dvo->base.connectors_active = false; + return; + } + + if (mode == DRM_MODE_DPMS_ON) { + intel_dvo->base.connectors_active = true; + + intel_crtc_update_dpms(crtc); + + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true); + } else { + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false); + + intel_dvo->base.connectors_active = false; + + intel_crtc_update_dpms(crtc); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_dvo_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + /* XXX: Validate clock range */ + + if (intel_dvo->panel_fixed_mode) { + if (mode->hdisplay > intel_dvo->panel_fixed_mode->hdisplay) + return MODE_PANEL; + if (mode->vdisplay > intel_dvo->panel_fixed_mode->vdisplay) + return MODE_PANEL; + } + + return intel_dvo->dev.dev_ops->mode_valid(&intel_dvo->dev, mode); +} + +static bool intel_dvo_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + + /* If we have timings from the BIOS for the panel, put them in + * to the adjusted mode. The CRTC will be set up for this mode, + * with the panel scaling set up to source from the H/VDisplay + * of the original mode. + */ + if (intel_dvo->panel_fixed_mode != NULL) { +#define C(x) adjusted_mode->x = intel_dvo->panel_fixed_mode->x + C(hdisplay); + C(hsync_start); + C(hsync_end); + C(htotal); + C(vdisplay); + C(vsync_start); + C(vsync_end); + C(vtotal); + C(clock); +#undef C + } + + if (intel_dvo->dev.dev_ops->mode_fixup) + return intel_dvo->dev.dev_ops->mode_fixup(&intel_dvo->dev, mode, adjusted_mode); + + return true; +} + +static void intel_dvo_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + int pipe = intel_crtc->pipe; + u32 dvo_val; + u32 dvo_reg = intel_dvo->dev.dvo_reg, dvo_srcdim_reg; + int dpll_reg = DPLL(pipe); + + switch (dvo_reg) { + case DVOA: + default: + dvo_srcdim_reg = DVOA_SRCDIM; + break; + case DVOB: + dvo_srcdim_reg = DVOB_SRCDIM; + break; + case DVOC: + dvo_srcdim_reg = DVOC_SRCDIM; + break; + } + + intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, mode, adjusted_mode); + + /* Save the data order, since I don't know what it should be set to. */ + dvo_val = I915_READ(dvo_reg) & + (DVO_PRESERVE_MASK | DVO_DATA_ORDER_GBRG); + dvo_val |= DVO_DATA_ORDER_FP | DVO_BORDER_ENABLE | + DVO_BLANK_ACTIVE_HIGH; + + if (pipe == 1) + dvo_val |= DVO_PIPE_B_SELECT; + dvo_val |= DVO_PIPE_STALL; + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + dvo_val |= DVO_HSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + dvo_val |= DVO_VSYNC_ACTIVE_HIGH; + + I915_WRITE(dpll_reg, I915_READ(dpll_reg) | DPLL_DVO_HIGH_SPEED); + + /*I915_WRITE(DVOB_SRCDIM, + (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/ + I915_WRITE(dvo_srcdim_reg, + (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT)); + /*I915_WRITE(DVOB, dvo_val);*/ + I915_WRITE(dvo_reg, dvo_val); +} + +/** + * Detect the output connection on our DVO device. + * + * Unimplemented. + */ +static enum drm_connector_status +intel_dvo_detect(struct drm_connector *connector, bool force) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + return intel_dvo->dev.dev_ops->detect(&intel_dvo->dev); +} + +static int intel_dvo_get_modes(struct drm_connector *connector) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + /* We should probably have an i2c driver get_modes function for those + * devices which will have a fixed set of modes determined by the chip + * (TV-out, for example), but for now with just TMDS and LVDS, + * that's not the case. + */ + intel_ddc_get_modes(connector, + intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPC)); + if (!list_empty(&connector->probed_modes)) + return 1; + + if (intel_dvo->panel_fixed_mode != NULL) { + struct drm_display_mode *mode; + mode = drm_mode_duplicate(connector->dev, intel_dvo->panel_fixed_mode); + if (mode) { + drm_mode_probed_add(connector, mode); + return 1; + } + } + + return 0; +} + +static void intel_dvo_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static const struct drm_encoder_helper_funcs intel_dvo_helper_funcs = { + .mode_fixup = intel_dvo_mode_fixup, + .mode_set = intel_dvo_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_dvo_connector_funcs = { + .dpms = intel_dvo_dpms, + .detect = intel_dvo_detect, + .destroy = intel_dvo_destroy, + .fill_modes = drm_helper_probe_single_connector_modes, +}; + +static const struct drm_connector_helper_funcs intel_dvo_connector_helper_funcs = { + .mode_valid = intel_dvo_mode_valid, + .get_modes = intel_dvo_get_modes, + .best_encoder = intel_best_encoder, +}; + +static void intel_dvo_enc_destroy(struct drm_encoder *encoder) +{ + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + + if (intel_dvo->dev.dev_ops->destroy) + intel_dvo->dev.dev_ops->destroy(&intel_dvo->dev); + + kfree(intel_dvo->panel_fixed_mode); + + intel_encoder_destroy(encoder); +} + +static const struct drm_encoder_funcs intel_dvo_enc_funcs = { + .destroy = intel_dvo_enc_destroy, +}; + +/** + * Attempts to get a fixed panel timing for LVDS (currently only the i830). + * + * Other chips with DVO LVDS will need to extend this to deal with the LVDS + * chip being on DVOB/C and having multiple pipes. + */ +static struct drm_display_mode * +intel_dvo_get_current_mode(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + uint32_t dvo_val = I915_READ(intel_dvo->dev.dvo_reg); + struct drm_display_mode *mode = NULL; + + /* If the DVO port is active, that'll be the LVDS, so we can pull out + * its timings to get how the BIOS set up the panel. + */ + if (dvo_val & DVO_ENABLE) { + struct drm_crtc *crtc; + int pipe = (dvo_val & DVO_PIPE_B_SELECT) ? 1 : 0; + + crtc = intel_get_crtc_for_pipe(dev, pipe); + if (crtc) { + mode = intel_crtc_mode_get(dev, crtc); + if (mode) { + mode->type |= DRM_MODE_TYPE_PREFERRED; + if (dvo_val & DVO_HSYNC_ACTIVE_HIGH) + mode->flags |= DRM_MODE_FLAG_PHSYNC; + if (dvo_val & DVO_VSYNC_ACTIVE_HIGH) + mode->flags |= DRM_MODE_FLAG_PVSYNC; + } + } + } + + return mode; +} + +void intel_dvo_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + struct intel_dvo *intel_dvo; + struct intel_connector *intel_connector; + int i; + int encoder_type = DRM_MODE_ENCODER_NONE; + + intel_dvo = kzalloc(sizeof(struct intel_dvo), GFP_KERNEL); + if (!intel_dvo) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dvo); + return; + } + + intel_encoder = &intel_dvo->base; + drm_encoder_init(dev, &intel_encoder->base, + &intel_dvo_enc_funcs, encoder_type); + + intel_encoder->disable = intel_disable_dvo; + intel_encoder->enable = intel_enable_dvo; + intel_encoder->get_hw_state = intel_dvo_get_hw_state; + intel_connector->get_hw_state = intel_dvo_connector_get_hw_state; + + /* Now, try to find a controller */ + for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { + struct drm_connector *connector = &intel_connector->base; + const struct intel_dvo_device *dvo = &intel_dvo_devices[i]; + struct i2c_adapter *i2c; + int gpio; + bool dvoinit; + + /* Allow the I2C driver info to specify the GPIO to be used in + * special cases, but otherwise default to what's defined + * in the spec. + */ + if (intel_gmbus_is_port_valid(dvo->gpio)) + gpio = dvo->gpio; + else if (dvo->type == INTEL_DVO_CHIP_LVDS) + gpio = GMBUS_PORT_SSC; + else + gpio = GMBUS_PORT_DPB; + + /* Set up the I2C bus necessary for the chip we're probing. + * It appears that everything is on GPIOE except for panels + * on i830 laptops, which are on GPIOB (DVOA). + */ + i2c = intel_gmbus_get_adapter(dev_priv, gpio); + + intel_dvo->dev = *dvo; + + /* 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; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + switch (dvo->type) { + case INTEL_DVO_CHIP_TMDS: + intel_encoder->cloneable = true; + drm_connector_init(dev, connector, + &intel_dvo_connector_funcs, + DRM_MODE_CONNECTOR_DVII); + encoder_type = DRM_MODE_ENCODER_TMDS; + break; + case INTEL_DVO_CHIP_LVDS: + intel_encoder->cloneable = false; + drm_connector_init(dev, connector, + &intel_dvo_connector_funcs, + DRM_MODE_CONNECTOR_LVDS); + encoder_type = DRM_MODE_ENCODER_LVDS; + break; + } + + drm_connector_helper_add(connector, + &intel_dvo_connector_helper_funcs); + connector->display_info.subpixel_order = SubPixelHorizontalRGB; + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + drm_encoder_helper_add(&intel_encoder->base, + &intel_dvo_helper_funcs); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + if (dvo->type == INTEL_DVO_CHIP_LVDS) { + /* For our LVDS chipsets, we should hopefully be able + * to dig the fixed panel mode out of the BIOS data. + * However, it's in a different format from the BIOS + * data on chipsets with integrated LVDS (stored in AIM + * headers, likely), so for now, just get the current + * mode being output through DVO. + */ + intel_dvo->panel_fixed_mode = + intel_dvo_get_current_mode(connector); + intel_dvo->panel_wants_dither = true; + } + + drm_sysfs_connector_add(connector); + return; + } + + drm_encoder_cleanup(&intel_encoder->base); + kfree(intel_dvo); + kfree(intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ch7xxx.c +++ linux-3.5.0/ubuntu/i915/dvo_ch7xxx.c @@ -0,0 +1,344 @@ +/************************************************************************** + +Copyright © 2006 Dave Airlie + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +#include "dvo.h" + +#define CH7xxx_REG_VID 0x4a +#define CH7xxx_REG_DID 0x4b + +#define CH7011_VID 0x83 /* 7010 as well */ +#define CH7009A_VID 0x84 +#define CH7009B_VID 0x85 +#define CH7301_VID 0x95 + +#define CH7xxx_VID 0x84 +#define CH7xxx_DID 0x17 + +#define CH7xxx_NUM_REGS 0x4c + +#define CH7xxx_CM 0x1c +#define CH7xxx_CM_XCM (1<<0) +#define CH7xxx_CM_MCP (1<<2) +#define CH7xxx_INPUT_CLOCK 0x1d +#define CH7xxx_GPIO 0x1e +#define CH7xxx_GPIO_HPIR (1<<3) +#define CH7xxx_IDF 0x1f + +#define CH7xxx_IDF_HSP (1<<3) +#define CH7xxx_IDF_VSP (1<<4) + +#define CH7xxx_CONNECTION_DETECT 0x20 +#define CH7xxx_CDET_DVI (1<<5) + +#define CH7301_DAC_CNTL 0x21 +#define CH7301_HOTPLUG 0x23 +#define CH7xxx_TCTL 0x31 +#define CH7xxx_TVCO 0x32 +#define CH7xxx_TPCP 0x33 +#define CH7xxx_TPD 0x34 +#define CH7xxx_TPVT 0x35 +#define CH7xxx_TLPF 0x36 +#define CH7xxx_TCT 0x37 +#define CH7301_TEST_PATTERN 0x48 + +#define CH7xxx_PM 0x49 +#define CH7xxx_PM_FPD (1<<0) +#define CH7301_PM_DACPD0 (1<<1) +#define CH7301_PM_DACPD1 (1<<2) +#define CH7301_PM_DACPD2 (1<<3) +#define CH7xxx_PM_DVIL (1<<6) +#define CH7xxx_PM_DVIP (1<<7) + +#define CH7301_SYNC_POLARITY 0x56 +#define CH7301_SYNC_RGB_YUV (1<<0) +#define CH7301_SYNC_POL_DVI (1<<5) + +/** @file + * driver for the Chrontel 7xxx DVI chip over DVO. + */ + +static struct ch7xxx_id_struct { + uint8_t vid; + char *name; +} ch7xxx_ids[] = { + { CH7011_VID, "CH7011" }, + { CH7009A_VID, "CH7009A" }, + { CH7009B_VID, "CH7009B" }, + { CH7301_VID, "CH7301" }, +}; + +struct ch7xxx_priv { + bool quiet; +}; + +static char *ch7xxx_get_id(uint8_t vid) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(ch7xxx_ids); i++) { + if (ch7xxx_ids[i].vid == vid) + return ch7xxx_ids[i].name; + } + + return NULL; +} + +/** Reads an 8 bit register */ +static bool ch7xxx_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!ch7xxx->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +/** Writes an 8 bit register */ +static bool ch7xxx_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!ch7xxx->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +static bool ch7xxx_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the CH7xxx chip on the specified i2c bus */ + struct ch7xxx_priv *ch7xxx; + uint8_t vendor, device; + char *name; + + ch7xxx = kzalloc(sizeof(struct ch7xxx_priv), GFP_KERNEL); + if (ch7xxx == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = ch7xxx; + ch7xxx->quiet = true; + + if (!ch7xxx_readb(dvo, CH7xxx_REG_VID, &vendor)) + goto out; + + name = ch7xxx_get_id(vendor); + if (!name) { + DRM_DEBUG_KMS("ch7xxx not detected; got 0x%02x from %s " + "slave %d.\n", + vendor, adapter->name, dvo->slave_addr); + goto out; + } + + + if (!ch7xxx_readb(dvo, CH7xxx_REG_DID, &device)) + goto out; + + if (device != CH7xxx_DID) { + DRM_DEBUG_KMS("ch7xxx not detected; got 0x%02x from %s " + "slave %d.\n", + vendor, adapter->name, dvo->slave_addr); + goto out; + } + + ch7xxx->quiet = false; + DRM_DEBUG_KMS("Detected %s chipset, vendor/device ID 0x%02x/0x%02x\n", + name, vendor, device); + return true; +out: + kfree(ch7xxx); + return false; +} + +static enum drm_connector_status ch7xxx_detect(struct intel_dvo_device *dvo) +{ + uint8_t cdet, orig_pm, pm; + + ch7xxx_readb(dvo, CH7xxx_PM, &orig_pm); + + pm = orig_pm; + pm &= ~CH7xxx_PM_FPD; + pm |= CH7xxx_PM_DVIL | CH7xxx_PM_DVIP; + + ch7xxx_writeb(dvo, CH7xxx_PM, pm); + + ch7xxx_readb(dvo, CH7xxx_CONNECTION_DETECT, &cdet); + + ch7xxx_writeb(dvo, CH7xxx_PM, orig_pm); + + if (cdet & CH7xxx_CDET_DVI) + return connector_status_connected; + return connector_status_disconnected; +} + +static enum drm_mode_status ch7xxx_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 165000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static void ch7xxx_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint8_t tvco, tpcp, tpd, tlpf, idf; + + if (mode->clock <= 65000) { + tvco = 0x23; + tpcp = 0x08; + tpd = 0x16; + tlpf = 0x60; + } else { + tvco = 0x2d; + tpcp = 0x06; + tpd = 0x26; + tlpf = 0xa0; + } + + ch7xxx_writeb(dvo, CH7xxx_TCTL, 0x00); + ch7xxx_writeb(dvo, CH7xxx_TVCO, tvco); + ch7xxx_writeb(dvo, CH7xxx_TPCP, tpcp); + ch7xxx_writeb(dvo, CH7xxx_TPD, tpd); + ch7xxx_writeb(dvo, CH7xxx_TPVT, 0x30); + ch7xxx_writeb(dvo, CH7xxx_TLPF, tlpf); + ch7xxx_writeb(dvo, CH7xxx_TCT, 0x00); + + ch7xxx_readb(dvo, CH7xxx_IDF, &idf); + + idf &= ~(CH7xxx_IDF_HSP | CH7xxx_IDF_VSP); + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + idf |= CH7xxx_IDF_HSP; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + idf |= CH7xxx_IDF_HSP; + + ch7xxx_writeb(dvo, CH7xxx_IDF, idf); +} + +/* set the CH7xxx power state */ +static void ch7xxx_dpms(struct intel_dvo_device *dvo, bool enable) +{ + if (enable) + ch7xxx_writeb(dvo, CH7xxx_PM, CH7xxx_PM_DVIL | CH7xxx_PM_DVIP); + else + ch7xxx_writeb(dvo, CH7xxx_PM, CH7xxx_PM_FPD); +} + +static bool ch7xxx_get_hw_state(struct intel_dvo_device *dvo) +{ + u8 val; + + ch7xxx_readb(dvo, CH7xxx_PM, &val); + + if (val & (CH7xxx_PM_DVIL | CH7xxx_PM_DVIP)) + return true; + else + return false; +} + +static void ch7xxx_dump_regs(struct intel_dvo_device *dvo) +{ + int i; + + for (i = 0; i < CH7xxx_NUM_REGS; i++) { + uint8_t val; + if ((i % 8) == 0) + DRM_LOG_KMS("\n %02X: ", i); + ch7xxx_readb(dvo, i, &val); + DRM_LOG_KMS("%02X ", val); + } +} + +static void ch7xxx_destroy(struct intel_dvo_device *dvo) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + + if (ch7xxx) { + kfree(ch7xxx); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ch7xxx_ops = { + .init = ch7xxx_init, + .detect = ch7xxx_detect, + .mode_valid = ch7xxx_mode_valid, + .mode_set = ch7xxx_mode_set, + .dpms = ch7xxx_dpms, + .get_hw_state = ch7xxx_get_hw_state, + .dump_regs = ch7xxx_dump_regs, + .destroy = ch7xxx_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_gem_tiling.c +++ linux-3.5.0/ubuntu/i915/i915_gem_tiling.c @@ -0,0 +1,517 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include +#include +#include +#include +#include "i915_drv.h" + +/** @file i915_gem_tiling.c + * + * Support for managing tiling state of buffer objects. + * + * The idea behind tiling is to increase cache hit rates by rearranging + * pixel data so that a group of pixel accesses are in the same cacheline. + * Performance improvement from doing this on the back/depth buffer are on + * the order of 30%. + * + * Intel architectures make this somewhat more complicated, though, by + * adjustments made to addressing of data when the memory is in interleaved + * mode (matched pairs of DIMMS) to improve memory bandwidth. + * For interleaved memory, the CPU sends every sequential 64 bytes + * to an alternate memory channel so it can get the bandwidth from both. + * + * The GPU also rearranges its accesses for increased bandwidth to interleaved + * memory, and it matches what the CPU does for non-tiled. However, when tiled + * it does it a little differently, since one walks addresses not just in the + * X direction but also Y. So, along with alternating channels when bit + * 6 of the address flips, it also alternates when other bits flip -- Bits 9 + * (every 512 bytes, an X tile scanline) and 10 (every two X tile scanlines) + * are common to both the 915 and 965-class hardware. + * + * The CPU also sometimes XORs in higher bits as well, to improve + * bandwidth doing strided access like we do so frequently in graphics. This + * is called "Channel XOR Randomization" in the MCH documentation. The result + * is that the CPU is XORing in either bit 11 or bit 17 to bit 6 of its address + * decode. + * + * All of this bit 6 XORing has an effect on our memory management, + * as we need to make sure that the 3d driver can correctly address object + * contents. + * + * If we don't have interleaved memory, all tiling is safe and no swizzling is + * required. + * + * When bit 17 is XORed in, we simply refuse to tile at all. Bit + * 17 is not just a page offset, so as we page an objet out and back in, + * individual pages in it will have different bit 17 addresses, resulting in + * each 64 bytes being swapped with its neighbor! + * + * Otherwise, if interleaved, we have to tell the 3d driver what the address + * swizzling it needs to do is, since it's writing with the CPU to the pages + * (bit 6 and potentially bit 11 XORed in), and the GPU is reading from the + * pages (bit 6, 9, and 10 XORed in), resulting in a cumulative bit swizzling + * required by the CPU of XORing in bit 6, 9, 10, and potentially 11, in order + * to match what the GPU expects. + */ + +/** + * Detects bit 6 swizzling of address lookup between IGD access and CPU + * access through main memory. + */ +void +i915_gem_detect_bit_6_swizzle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; + uint32_t swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; + + if (IS_VALLEYVIEW(dev)) { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else if (INTEL_INFO(dev)->gen >= 6) { + uint32_t dimm_c0, dimm_c1; + dimm_c0 = I915_READ(MAD_DIMM_C0); + dimm_c1 = I915_READ(MAD_DIMM_C1); + dimm_c0 &= MAD_DIMM_A_SIZE_MASK | MAD_DIMM_B_SIZE_MASK; + dimm_c1 &= MAD_DIMM_A_SIZE_MASK | MAD_DIMM_B_SIZE_MASK; + /* Enable swizzling when the channels are populated with + * identically sized dimms. We don't need to check the 3rd + * channel because no cpu with gpu attached ships in that + * configuration. Also, swizzling only makes sense for 2 + * channels anyway. */ + if (dimm_c0 == dimm_c1) { + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } + } else if (IS_GEN5(dev)) { + /* On Ironlake whatever DRAM config, GPU always do + * same swizzling setup. + */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else if (IS_GEN2(dev)) { + /* As far as we know, the 865 doesn't have these bit 6 + * swizzling issues. + */ + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else if (IS_MOBILE(dev) || (IS_GEN3(dev) && !IS_G33(dev))) { + uint32_t dcc; + + /* On 9xx chipsets, channel interleave by the CPU is + * determined by DCC. For single-channel, neither the CPU + * nor the GPU do swizzling. For dual channel interleaved, + * the GPU's interleave is bit 9 and 10 for X tiled, and bit + * 9 for Y tiled. The CPU's interleave is independent, and + * can be based on either bit 11 (haven't seen this yet) or + * bit 17 (common). + */ + dcc = I915_READ(DCC); + switch (dcc & DCC_ADDRESSING_MODE_MASK) { + case DCC_ADDRESSING_MODE_SINGLE_CHANNEL: + case DCC_ADDRESSING_MODE_DUAL_CHANNEL_ASYMMETRIC: + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + break; + case DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED: + if (dcc & DCC_CHANNEL_XOR_DISABLE) { + /* This is the base swizzling by the GPU for + * tiled buffers. + */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else if ((dcc & DCC_CHANNEL_XOR_BIT_17) == 0) { + /* Bit 11 swizzling by the CPU in addition. */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10_11; + swizzle_y = I915_BIT_6_SWIZZLE_9_11; + } else { + /* Bit 17 swizzling by the CPU in addition. */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10_17; + swizzle_y = I915_BIT_6_SWIZZLE_9_17; + } + break; + } + if (dcc == 0xffffffff) { + DRM_ERROR("Couldn't read from MCHBAR. " + "Disabling tiling.\n"); + swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; + swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; + } + } else { + /* The 965, G33, and newer, have a very flexible memory + * configuration. It will enable dual-channel mode + * (interleaving) on as much memory as it can, and the GPU + * will additionally sometimes enable different bit 6 + * swizzling for tiled objects from the CPU. + * + * Here's what I found on the G965: + * slot fill memory size swizzling + * 0A 0B 1A 1B 1-ch 2-ch + * 512 0 0 0 512 0 O + * 512 0 512 0 16 1008 X + * 512 0 0 512 16 1008 X + * 0 512 0 512 16 1008 X + * 1024 1024 1024 0 2048 1024 O + * + * We could probably detect this based on either the DRB + * matching, which was the case for the swizzling required in + * the table above, or from the 1-ch value being less than + * the minimum size of a rank. + */ + if (I915_READ16(C0DRB3) != I915_READ16(C1DRB3)) { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else { + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } + } + + dev_priv->mm.bit_6_swizzle_x = swizzle_x; + dev_priv->mm.bit_6_swizzle_y = swizzle_y; +} + +/* Check pitch constriants for all chips & tiling formats */ +static bool +i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode) +{ + int tile_width; + + /* Linear is always fine */ + if (tiling_mode == I915_TILING_NONE) + return true; + + if (IS_GEN2(dev) || + (tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev))) + tile_width = 128; + else + tile_width = 512; + + /* check maximum stride & object size */ + if (INTEL_INFO(dev)->gen >= 4) { + /* i965 stores the end address of the gtt mapping in the fence + * reg, so dont bother to check the size */ + if (stride / 128 > I965_FENCE_MAX_PITCH_VAL) + return false; + } else { + if (stride > 8192) + return false; + + if (IS_GEN3(dev)) { + if (size > I830_FENCE_MAX_SIZE_VAL << 20) + return false; + } else { + if (size > I830_FENCE_MAX_SIZE_VAL << 19) + return false; + } + } + + /* 965+ just needs multiples of tile width */ + if (INTEL_INFO(dev)->gen >= 4) { + if (stride & (tile_width - 1)) + return false; + return true; + } + + /* Pre-965 needs power of two tile widths */ + if (stride < tile_width) + return false; + + if (stride & (stride - 1)) + return false; + + return true; +} + +/* Is the current GTT allocation valid for the change in tiling? */ +static bool +i915_gem_object_fence_ok(struct drm_i915_gem_object *obj, int tiling_mode) +{ + u32 size; + + if (tiling_mode == I915_TILING_NONE) + return true; + + if (INTEL_INFO(obj->base.dev)->gen >= 4) + return true; + + if (INTEL_INFO(obj->base.dev)->gen == 3) { + if (obj->gtt_offset & ~I915_FENCE_START_MASK) + return false; + } else { + if (obj->gtt_offset & ~I830_FENCE_START_MASK) + return false; + } + + /* + * Previous chips need to be aligned to the size of the smallest + * fence register that can contain the object. + */ + if (INTEL_INFO(obj->base.dev)->gen == 3) + size = 1024*1024; + else + size = 512*1024; + + while (size < obj->base.size) + size <<= 1; + + if (obj->gtt_space->size != size) + return false; + + if (obj->gtt_offset & (size - 1)) + return false; + + return true; +} + +/** + * Sets the tiling mode of an object, returning the required swizzling of + * bit 6 of addresses in the object. + */ +int +i915_gem_set_tiling(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_set_tiling *args = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int ret = 0; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) + return -ENOENT; + + if (!i915_tiling_ok(dev, + args->stride, obj->base.size, args->tiling_mode)) { + drm_gem_object_unreference_unlocked(&obj->base); + return -EINVAL; + } + + if (obj->pin_count) { + drm_gem_object_unreference_unlocked(&obj->base); + return -EBUSY; + } + + if (args->tiling_mode == I915_TILING_NONE) { + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + args->stride = 0; + } else { + if (args->tiling_mode == I915_TILING_X) + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; + else + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y; + + /* Hide bit 17 swizzling from the user. This prevents old Mesa + * from aborting the application on sw fallbacks to bit 17, + * and we use the pread/pwrite bit17 paths to swizzle for it. + * If there was a user that was relying on the swizzle + * information for drm_intel_bo_map()ed reads/writes this would + * break it, but we don't have any of those. + */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9; + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10; + + /* If we can't handle the swizzling, make it untiled. */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_UNKNOWN) { + args->tiling_mode = I915_TILING_NONE; + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + args->stride = 0; + } + } + + mutex_lock(&dev->struct_mutex); + if (args->tiling_mode != obj->tiling_mode || + args->stride != obj->stride) { + /* We need to rebind the object if its current allocation + * no longer meets the alignment restrictions for its new + * tiling mode. Otherwise we can just leave it alone, but + * need to ensure that any fence register is updated before + * the next fenced (either through the GTT or by the BLT unit + * on older GPUs) access. + * + * After updating the tiling parameters, we then flag whether + * we need to update an associated fence register. Note this + * has to also include the unfenced register the GPU uses + * whilst executing a fenced command for an untiled object. + */ + + obj->map_and_fenceable = + obj->gtt_space == NULL || + (obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end && + i915_gem_object_fence_ok(obj, args->tiling_mode)); + + /* Rebind if we need a change of alignment */ + if (!obj->map_and_fenceable) { + u32 unfenced_alignment = + i915_gem_get_unfenced_gtt_alignment(dev, + obj->base.size, + args->tiling_mode); + if (obj->gtt_offset & (unfenced_alignment - 1)) + ret = i915_gem_object_unbind(obj); + } + + if (ret == 0) { + obj->fence_dirty = + obj->fenced_gpu_access || + obj->fence_reg != I915_FENCE_REG_NONE; + + obj->tiling_mode = args->tiling_mode; + obj->stride = args->stride; + + /* Force the fence to be reacquired for GTT access */ + i915_gem_release_mmap(obj); + } + } + /* we have to maintain this existing ABI... */ + args->stride = obj->stride; + args->tiling_mode = obj->tiling_mode; + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +/** + * Returns the current tiling mode and required bit 6 swizzling for the object. + */ +int +i915_gem_get_tiling(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_get_tiling *args = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) + return -ENOENT; + + mutex_lock(&dev->struct_mutex); + + args->tiling_mode = obj->tiling_mode; + switch (obj->tiling_mode) { + case I915_TILING_X: + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; + break; + case I915_TILING_Y: + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y; + break; + case I915_TILING_NONE: + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + break; + default: + DRM_ERROR("unknown tiling mode\n"); + } + + /* Hide bit 17 from the user -- see comment in i915_gem_set_tiling */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9; + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10; + + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +/** + * Swap every 64 bytes of this page around, to account for it having a new + * bit 17 of its physical address and therefore being interpreted differently + * by the GPU. + */ +static void +i915_gem_swizzle_page(struct page *page) +{ + char temp[64]; + char *vaddr; + int i; + + vaddr = kmap(page); + + for (i = 0; i < PAGE_SIZE; i += 128) { + memcpy(temp, &vaddr[i], 64); + memcpy(&vaddr[i], &vaddr[i + 64], 64); + memcpy(&vaddr[i + 64], temp, 64); + } + + kunmap(page); +} + +void +i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj) +{ + struct scatterlist *sg; + int page_count = obj->base.size >> PAGE_SHIFT; + int i; + + if (obj->bit_17 == NULL) + return; + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + char new_bit_17 = page_to_phys(page) >> 17; + if ((new_bit_17 & 0x1) != + (test_bit(i, obj->bit_17) != 0)) { + i915_gem_swizzle_page(page); + set_page_dirty(page); + } + } +} + +void +i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj) +{ + struct scatterlist *sg; + int page_count = obj->base.size >> PAGE_SHIFT; + int i; + + if (obj->bit_17 == NULL) { + obj->bit_17 = kmalloc(BITS_TO_LONGS(page_count) * + sizeof(long), GFP_KERNEL); + if (obj->bit_17 == NULL) { + DRM_ERROR("Failed to allocate memory for bit 17 " + "record\n"); + return; + } + } + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + if (page_to_phys(page) & (1 << 17)) + __set_bit(i, obj->bit_17); + else + __clear_bit(i, obj->bit_17); + } +} --- linux-3.5.0.orig/ubuntu/i915/intel_display.c +++ linux-3.5.0/ubuntu/i915/intel_display.c @@ -0,0 +1,9557 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "intel_drv.h" +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include +#include +#include + +bool intel_pipe_has_type(struct drm_crtc *crtc, int type); +static void intel_increase_pllclock(struct drm_crtc *crtc); +static void intel_crtc_update_cursor(struct drm_crtc *crtc, bool on); + +typedef struct { + /* given values */ + int n; + int m1, m2; + int p1, p2; + /* derived values */ + int dot; + int vco; + int m; + int p; +} intel_clock_t; + +typedef struct { + int min, max; +} intel_range_t; + +typedef struct { + int dot_limit; + int p2_slow, p2_fast; +} intel_p2_t; + +#define INTEL_P2_NUM 2 +typedef struct intel_limit intel_limit_t; +struct intel_limit { + intel_range_t dot, vco, n, m, m1, m2, p, p1; + intel_p2_t p2; + bool (* find_pll)(const intel_limit_t *, struct drm_crtc *, + int, int, intel_clock_t *, intel_clock_t *); +}; + +/* FDI */ +#define IRONLAKE_FDI_FREQ 2700000 /* in kHz for mode->clock */ + +int +intel_pch_rawclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + WARN_ON(!HAS_PCH_SPLIT(dev)); + + return I915_READ(PCH_RAWCLK_FREQ) & RAWCLK_FREQ_MASK; +} + +static bool +intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); +static bool +intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static bool +intel_find_pll_g4x_dp(const intel_limit_t *, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); +static bool +intel_find_pll_ironlake_dp(const intel_limit_t *, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static bool +intel_vlv_find_best_pll(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static inline u32 /* units of 100MHz */ +intel_fdi_link_freq(struct drm_device *dev) +{ + if (IS_GEN5(dev)) { + struct drm_i915_private *dev_priv = dev->dev_private; + return (I915_READ(FDI_PLL_BIOS_0) & FDI_PLL_FB_CLOCK_MASK) + 2; + } else + return 27; +} + +static const intel_limit_t intel_limits_i8xx_dvo = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 930000, .max = 1400000 }, + .n = { .min = 3, .max = 16 }, + .m = { .min = 96, .max = 140 }, + .m1 = { .min = 18, .max = 26 }, + .m2 = { .min = 6, .max = 16 }, + .p = { .min = 4, .max = 128 }, + .p1 = { .min = 2, .max = 33 }, + .p2 = { .dot_limit = 165000, + .p2_slow = 4, .p2_fast = 2 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i8xx_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 930000, .max = 1400000 }, + .n = { .min = 3, .max = 16 }, + .m = { .min = 96, .max = 140 }, + .m1 = { .min = 18, .max = 26 }, + .m2 = { .min = 6, .max = 16 }, + .p = { .min = 4, .max = 128 }, + .p1 = { .min = 1, .max = 6 }, + .p2 = { .dot_limit = 165000, + .p2_slow = 14, .p2_fast = 7 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i9xx_sdvo = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1400000, .max = 2800000 }, + .n = { .min = 1, .max = 6 }, + .m = { .min = 70, .max = 120 }, + .m1 = { .min = 8, .max = 18 }, + .m2 = { .min = 3, .max = 7 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 200000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i9xx_lvds = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1400000, .max = 2800000 }, + .n = { .min = 1, .max = 6 }, + .m = { .min = 70, .max = 120 }, + .m1 = { .min = 10, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 7, .max = 98 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 112000, + .p2_slow = 14, .p2_fast = 7 }, + .find_pll = intel_find_best_PLL, +}; + + +static const intel_limit_t intel_limits_g4x_sdvo = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 4 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 1, .max = 3}, + .p2 = { .dot_limit = 270000, + .p2_slow = 10, + .p2_fast = 10 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_hdmi = { + .dot = { .min = 22000, .max = 400000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 4 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 16, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8}, + .p2 = { .dot_limit = 165000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_single_channel_lvds = { + .dot = { .min = 20000, .max = 115000 }, + .vco = { .min = 1750000, .max = 3500000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 0, + .p2_slow = 14, .p2_fast = 14 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { + .dot = { .min = 80000, .max = 224000 }, + .vco = { .min = 1750000, .max = 3500000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 14, .max = 42 }, + .p1 = { .min = 2, .max = 6 }, + .p2 = { .dot_limit = 0, + .p2_slow = 7, .p2_fast = 7 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_display_port = { + .dot = { .min = 161670, .max = 227000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 2 }, + .m = { .min = 97, .max = 108 }, + .m1 = { .min = 0x10, .max = 0x12 }, + .m2 = { .min = 0x05, .max = 0x06 }, + .p = { .min = 10, .max = 20 }, + .p1 = { .min = 1, .max = 2}, + .p2 = { .dot_limit = 0, + .p2_slow = 10, .p2_fast = 10 }, + .find_pll = intel_find_pll_g4x_dp, +}; + +static const intel_limit_t intel_limits_pineview_sdvo = { + .dot = { .min = 20000, .max = 400000}, + .vco = { .min = 1700000, .max = 3500000 }, + /* Pineview's Ncounter is a ring counter */ + .n = { .min = 3, .max = 6 }, + .m = { .min = 2, .max = 256 }, + /* Pineview only has one combined m divider, which we treat as m2. */ + .m1 = { .min = 0, .max = 0 }, + .m2 = { .min = 0, .max = 254 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 200000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_pineview_lvds = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1700000, .max = 3500000 }, + .n = { .min = 3, .max = 6 }, + .m = { .min = 2, .max = 256 }, + .m1 = { .min = 0, .max = 0 }, + .m2 = { .min = 0, .max = 254 }, + .p = { .min = 7, .max = 112 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 112000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_find_best_PLL, +}; + +/* Ironlake / Sandybridge + * + * We calculate clock using (register_value + 2) for N/M1/M2, so here + * the range value for them is (actual_value - 2). + */ +static const intel_limit_t intel_limits_ironlake_dac = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 5 }, + .m = { .min = 79, .max = 127 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_single_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 118 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_dual_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 127 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 14, .max = 56 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 7, .p2_fast = 7 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +/* LVDS 100mhz refclk limits. */ +static const intel_limit_t intel_limits_ironlake_single_lvds_100m = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 2 }, + .m = { .min = 79, .max = 126 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_dual_lvds_100m = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 126 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 14, .max = 42 }, + .p1 = { .min = 2, .max = 6 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 7, .p2_fast = 7 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_display_port = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000}, + .n = { .min = 1, .max = 2 }, + .m = { .min = 81, .max = 90 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 10, .max = 20 }, + .p1 = { .min = 1, .max = 2}, + .p2 = { .dot_limit = 0, + .p2_slow = 10, .p2_fast = 10 }, + .find_pll = intel_find_pll_ironlake_dp, +}; + +static const intel_limit_t intel_limits_vlv_dac = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 4000000, .max = 6000000 }, + .n = { .min = 1, .max = 7 }, + .m = { .min = 22, .max = 450 }, /* guess */ + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +static const intel_limit_t intel_limits_vlv_hdmi = { + .dot = { .min = 20000, .max = 165000 }, + .vco = { .min = 4000000, .max = 5994000}, + .n = { .min = 1, .max = 7 }, + .m = { .min = 60, .max = 300 }, /* guess */ + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +static const intel_limit_t intel_limits_vlv_dp = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 4000000, .max = 6000000 }, + .n = { .min = 1, .max = 7 }, + .m = { .min = 22, .max = 450 }, + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +u32 intel_dpio_read(struct drm_i915_private *dev_priv, int reg) +{ + unsigned long flags; + u32 val = 0; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO idle wait timed out\n"); + goto out_unlock; + } + + I915_WRITE(DPIO_REG, reg); + I915_WRITE(DPIO_PKT, DPIO_RID | DPIO_OP_READ | DPIO_PORTID | + DPIO_BYTE); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO read wait timed out\n"); + goto out_unlock; + } + val = I915_READ(DPIO_DATA); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); + return val; +} + +static void intel_dpio_write(struct drm_i915_private *dev_priv, int reg, + u32 val) +{ + unsigned long flags; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO idle wait timed out\n"); + goto out_unlock; + } + + I915_WRITE(DPIO_DATA, val); + I915_WRITE(DPIO_REG, reg); + I915_WRITE(DPIO_PKT, DPIO_RID | DPIO_OP_WRITE | DPIO_PORTID | + DPIO_BYTE); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) + DRM_ERROR("DPIO write wait timed out\n"); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); +} + +static void vlv_init_dpio(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Reset the DPIO config */ + I915_WRITE(DPIO_CTL, 0); + POSTING_READ(DPIO_CTL); + I915_WRITE(DPIO_CTL, 1); + POSTING_READ(DPIO_CTL); +} + +static int intel_dual_link_lvds_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Forcing lvds to dual link mode on %s\n", id->ident); + return 1; +} + +static const struct dmi_system_id intel_dual_link_lvds[] = { + { + .callback = intel_dual_link_lvds_callback, + .ident = "Apple MacBook Pro (Core i5/i7 Series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro8,2"), + }, + }, + { } /* terminating entry */ +}; + +static bool is_dual_link_lvds(struct drm_i915_private *dev_priv, + unsigned int reg) +{ + unsigned int val; + + /* use the module option value if specified */ + if (i915_lvds_channel_mode > 0) + return i915_lvds_channel_mode == 2; + + if (dmi_check_system(intel_dual_link_lvds)) + return true; + + if (dev_priv->lvds_val) + val = dev_priv->lvds_val; + else { + /* BIOS should set the proper LVDS register value at boot, but + * in reality, it doesn't set the value when the lid is closed; + * we need to check "the value to be set" in VBT when LVDS + * register is uninitialized. + */ + val = I915_READ(reg); + if (!(val & ~(LVDS_PIPE_MASK | LVDS_DETECTED))) + val = dev_priv->bios_lvds_val; + dev_priv->lvds_val = val; + } + return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP; +} + +static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc, + int refclk) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + const intel_limit_t *limit; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (is_dual_link_lvds(dev_priv, PCH_LVDS)) { + /* LVDS dual channel */ + if (refclk == 100000) + limit = &intel_limits_ironlake_dual_lvds_100m; + else + limit = &intel_limits_ironlake_dual_lvds; + } else { + if (refclk == 100000) + limit = &intel_limits_ironlake_single_lvds_100m; + else + limit = &intel_limits_ironlake_single_lvds; + } + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) + limit = &intel_limits_ironlake_display_port; + else + limit = &intel_limits_ironlake_dac; + + return limit; +} + +static const intel_limit_t *intel_g4x_limit(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + const intel_limit_t *limit; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (is_dual_link_lvds(dev_priv, LVDS)) + /* LVDS with dual channel */ + limit = &intel_limits_g4x_dual_channel_lvds; + else + /* LVDS with dual channel */ + limit = &intel_limits_g4x_single_channel_lvds; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) { + limit = &intel_limits_g4x_hdmi; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO)) { + limit = &intel_limits_g4x_sdvo; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + limit = &intel_limits_g4x_display_port; + } else /* The option is for other outputs */ + limit = &intel_limits_i9xx_sdvo; + + return limit; +} + +static const intel_limit_t *intel_limit(struct drm_crtc *crtc, int refclk) +{ + struct drm_device *dev = crtc->dev; + const intel_limit_t *limit; + + if (HAS_PCH_SPLIT(dev)) + limit = intel_ironlake_limit(crtc, refclk); + else if (IS_G4X(dev)) { + limit = intel_g4x_limit(crtc); + } else if (IS_PINEVIEW(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_pineview_lvds; + else + limit = &intel_limits_pineview_sdvo; + } else if (IS_VALLEYVIEW(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) + limit = &intel_limits_vlv_dac; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI)) + limit = &intel_limits_vlv_hdmi; + else + limit = &intel_limits_vlv_dp; + } else if (!IS_GEN2(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_i9xx_lvds; + else + limit = &intel_limits_i9xx_sdvo; + } else { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_i8xx_lvds; + else + limit = &intel_limits_i8xx_dvo; + } + return limit; +} + +/* m1 is reserved as 0 in Pineview, n is a ring counter */ +static void pineview_clock(int refclk, intel_clock_t *clock) +{ + clock->m = clock->m2 + 2; + clock->p = clock->p1 * clock->p2; + clock->vco = refclk * clock->m / clock->n; + clock->dot = clock->vco / clock->p; +} + +static void intel_clock(struct drm_device *dev, int refclk, intel_clock_t *clock) +{ + if (IS_PINEVIEW(dev)) { + pineview_clock(refclk, clock); + return; + } + clock->m = 5 * (clock->m1 + 2) + (clock->m2 + 2); + clock->p = clock->p1 * clock->p2; + clock->vco = refclk * clock->m / (clock->n + 2); + clock->dot = clock->vco / clock->p; +} + +/** + * Returns whether any output on the specified pipe is of the specified type + */ +bool intel_pipe_has_type(struct drm_crtc *crtc, int type) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *encoder; + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->type == type) + return true; + + return false; +} + +#define INTELPllInvalid(s) do { /* DRM_DEBUG(s); */ return false; } while (0) +/** + * Returns whether the given set of divisors are valid for a given refclk with + * the given connectors. + */ + +static bool intel_PLL_is_valid(struct drm_device *dev, + const intel_limit_t *limit, + const intel_clock_t *clock) +{ + if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1) + INTELPllInvalid("p1 out of range\n"); + if (clock->p < limit->p.min || limit->p.max < clock->p) + INTELPllInvalid("p out of range\n"); + if (clock->m2 < limit->m2.min || limit->m2.max < clock->m2) + INTELPllInvalid("m2 out of range\n"); + if (clock->m1 < limit->m1.min || limit->m1.max < clock->m1) + INTELPllInvalid("m1 out of range\n"); + if (clock->m1 <= clock->m2 && !IS_PINEVIEW(dev)) + INTELPllInvalid("m1 <= m2\n"); + if (clock->m < limit->m.min || limit->m.max < clock->m) + INTELPllInvalid("m out of range\n"); + if (clock->n < limit->n.min || limit->n.max < clock->n) + INTELPllInvalid("n out of range\n"); + if (clock->vco < limit->vco.min || limit->vco.max < clock->vco) + INTELPllInvalid("vco out of range\n"); + /* XXX: We may need to be checking "Dot clock" depending on the multiplier, + * connector, etc., rather than just a single range. + */ + if (clock->dot < limit->dot.min || limit->dot.max < clock->dot) + INTELPllInvalid("dot out of range\n"); + + return true; +} + +static bool +intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) + +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + intel_clock_t clock; + int err = target; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + (I915_READ(LVDS)) != 0) { + /* + * For LVDS, if the panel is on, just rely on its current + * settings for dual-channel. We haven't figured out how to + * reliably set up different single/dual channel state, if we + * even can. + */ + if (is_dual_link_lvds(dev_priv, LVDS)) + clock.p2 = limit->p2.p2_fast; + else + clock.p2 = limit->p2.p2_slow; + } else { + if (target < limit->p2.dot_limit) + clock.p2 = limit->p2.p2_slow; + else + clock.p2 = limit->p2.p2_fast; + } + + memset(best_clock, 0, sizeof(*best_clock)); + + for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; + clock.m1++) { + for (clock.m2 = limit->m2.min; + clock.m2 <= limit->m2.max; clock.m2++) { + /* m1 is always 0 in Pineview */ + if (clock.m2 >= clock.m1 && !IS_PINEVIEW(dev)) + break; + for (clock.n = limit->n.min; + clock.n <= limit->n.max; clock.n++) { + for (clock.p1 = limit->p1.min; + clock.p1 <= limit->p1.max; clock.p1++) { + int this_err; + + intel_clock(dev, refclk, &clock); + if (!intel_PLL_is_valid(dev, limit, + &clock)) + continue; + if (match_clock && + clock.p != match_clock->p) + continue; + + this_err = abs(clock.dot - target); + if (this_err < err) { + *best_clock = clock; + err = this_err; + } + } + } + } + } + + return (err != target); +} + +static bool +intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + intel_clock_t clock; + int max_n; + bool found; + /* approximately equals target * 0.00585 */ + int err_most = (target >> 8) + (target >> 9); + found = false; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + int lvds_reg; + + if (HAS_PCH_SPLIT(dev)) + lvds_reg = PCH_LVDS; + else + lvds_reg = LVDS; + if ((I915_READ(lvds_reg) & LVDS_CLKB_POWER_MASK) == + LVDS_CLKB_POWER_UP) + clock.p2 = limit->p2.p2_fast; + else + clock.p2 = limit->p2.p2_slow; + } else { + if (target < limit->p2.dot_limit) + clock.p2 = limit->p2.p2_slow; + else + clock.p2 = limit->p2.p2_fast; + } + + memset(best_clock, 0, sizeof(*best_clock)); + max_n = limit->n.max; + /* based on hardware requirement, prefer smaller n to precision */ + for (clock.n = limit->n.min; clock.n <= max_n; clock.n++) { + /* based on hardware requirement, prefere larger m1,m2 */ + for (clock.m1 = limit->m1.max; + clock.m1 >= limit->m1.min; clock.m1--) { + for (clock.m2 = limit->m2.max; + clock.m2 >= limit->m2.min; clock.m2--) { + for (clock.p1 = limit->p1.max; + clock.p1 >= limit->p1.min; clock.p1--) { + int this_err; + + intel_clock(dev, refclk, &clock); + if (!intel_PLL_is_valid(dev, limit, + &clock)) + continue; + if (match_clock && + clock.p != match_clock->p) + continue; + + this_err = abs(clock.dot - target); + if (this_err < err_most) { + *best_clock = clock; + err_most = this_err; + max_n = clock.n; + found = true; + } + } + } + } + } + return found; +} + +static bool +intel_find_pll_ironlake_dp(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + struct drm_device *dev = crtc->dev; + intel_clock_t clock; + + if (target < 200000) { + clock.n = 1; + clock.p1 = 2; + clock.p2 = 10; + clock.m1 = 12; + clock.m2 = 9; + } else { + clock.n = 2; + clock.p1 = 1; + clock.p2 = 10; + clock.m1 = 14; + clock.m2 = 8; + } + intel_clock(dev, refclk, &clock); + memcpy(best_clock, &clock, sizeof(intel_clock_t)); + return true; +} + +/* DisplayPort has only two frequencies, 162MHz and 270MHz */ +static bool +intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + intel_clock_t clock; + if (target < 200000) { + clock.p1 = 2; + clock.p2 = 10; + clock.n = 2; + clock.m1 = 23; + clock.m2 = 8; + } else { + clock.p1 = 1; + clock.p2 = 10; + clock.n = 1; + clock.m1 = 14; + clock.m2 = 2; + } + clock.m = 5 * (clock.m1 + 2) + (clock.m2 + 2); + clock.p = (clock.p1 * clock.p2); + clock.dot = 96000 * clock.m / (clock.n + 2) / clock.p; + clock.vco = 0; + memcpy(best_clock, &clock, sizeof(intel_clock_t)); + return true; +} +static bool +intel_vlv_find_best_pll(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + u32 p1, p2, m1, m2, vco, bestn, bestm1, bestm2, bestp1, bestp2; + u32 m, n, fastclk; + u32 updrate, minupdate, fracbits, p; + unsigned long bestppm, ppm, absppm; + int dotclk, flag; + + flag = 0; + dotclk = target * 1000; + bestppm = 1000000; + ppm = absppm = 0; + fastclk = dotclk / (2*100); + updrate = 0; + minupdate = 19200; + fracbits = 1; + n = p = p1 = p2 = m = m1 = m2 = vco = bestn = 0; + bestm1 = bestm2 = bestp1 = bestp2 = 0; + + /* based on hardware requirement, prefer smaller n to precision */ + for (n = limit->n.min; n <= ((refclk) / minupdate); n++) { + updrate = refclk / n; + for (p1 = limit->p1.max; p1 > limit->p1.min; p1--) { + for (p2 = limit->p2.p2_fast+1; p2 > 0; p2--) { + if (p2 > 10) + p2 = p2 - 1; + p = p1 * p2; + /* based on hardware requirement, prefer bigger m1,m2 values */ + for (m1 = limit->m1.min; m1 <= limit->m1.max; m1++) { + m2 = (((2*(fastclk * p * n / m1 )) + + refclk) / (2*refclk)); + m = m1 * m2; + vco = updrate * m; + if (vco >= limit->vco.min && vco < limit->vco.max) { + ppm = 1000000 * ((vco / p) - fastclk) / fastclk; + absppm = (ppm > 0) ? ppm : (-ppm); + if (absppm < 100 && ((p1 * p2) > (bestp1 * bestp2))) { + bestppm = 0; + flag = 1; + } + if (absppm < bestppm - 10) { + bestppm = absppm; + flag = 1; + } + if (flag) { + bestn = n; + bestm1 = m1; + bestm2 = m2; + bestp1 = p1; + bestp2 = p2; + flag = 0; + } + } + } + } + } + } + best_clock->n = bestn; + best_clock->m1 = bestm1; + best_clock->m2 = bestm2; + best_clock->p1 = bestp1; + best_clock->p2 = bestp2; + + return true; +} + +enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + return intel_crtc->cpu_transcoder; +} + +static void ironlake_wait_for_vblank(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 frame, frame_reg = PIPEFRAME(pipe); + + frame = I915_READ(frame_reg); + + if (wait_for(I915_READ_NOTRACE(frame_reg) != frame, 50)) + DRM_DEBUG_KMS("vblank wait timed out\n"); +} + +/** + * intel_wait_for_vblank - wait for vblank on a given pipe + * @dev: drm device + * @pipe: pipe to wait for + * + * Wait for vblank to occur on a given pipe. Needed for various bits of + * mode setting code. + */ +void intel_wait_for_vblank(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipestat_reg = PIPESTAT(pipe); + + if (INTEL_INFO(dev)->gen >= 5) { + ironlake_wait_for_vblank(dev, pipe); + return; + } + + /* Clear existing vblank status. Note this will clear any other + * sticky status fields as well. + * + * This races with i915_driver_irq_handler() with the result + * that either function could miss a vblank event. Here it is not + * fatal, as we will either wait upon the next vblank interrupt or + * timeout. Generally speaking intel_wait_for_vblank() is only + * called during modeset at which time the GPU should be idle and + * should *not* be performing page flips and thus not waiting on + * vblanks... + * Currently, the result of us stealing a vblank from the irq + * handler is that a single frame will be skipped during swapbuffers. + */ + I915_WRITE(pipestat_reg, + I915_READ(pipestat_reg) | PIPE_VBLANK_INTERRUPT_STATUS); + + /* Wait for vblank interrupt bit to set */ + if (wait_for(I915_READ(pipestat_reg) & + PIPE_VBLANK_INTERRUPT_STATUS, + 50)) + DRM_DEBUG_KMS("vblank wait timed out\n"); +} + +/* + * intel_wait_for_pipe_off - wait for pipe to turn off + * @dev: drm device + * @pipe: pipe to wait for + * + * After disabling a pipe, we can't wait for vblank in the usual way, + * spinning on the vblank interrupt status bit, since we won't actually + * see an interrupt when the pipe is disabled. + * + * On Gen4 and above: + * wait for the pipe register state bit to turn off + * + * Otherwise: + * wait for the display line value to settle (it usually + * ends up stopping at the start of the next frame). + * + */ +void intel_wait_for_pipe_off(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (INTEL_INFO(dev)->gen >= 4) { + int reg = PIPECONF(cpu_transcoder); + + /* Wait for the Pipe State to go off */ + if (wait_for((I915_READ(reg) & I965_PIPECONF_ACTIVE) == 0, + 100)) + WARN(1, "pipe_off wait timed out\n"); + } else { + u32 last_line, line_mask; + int reg = PIPEDSL(pipe); + unsigned long timeout = jiffies + msecs_to_jiffies(100); + + if (IS_GEN2(dev)) + line_mask = DSL_LINEMASK_GEN2; + else + line_mask = DSL_LINEMASK_GEN3; + + /* Wait for the display line to settle */ + do { + last_line = I915_READ(reg) & line_mask; + mdelay(5); + } while (((I915_READ(reg) & line_mask) != last_line) && + time_after(timeout, jiffies)); + if (time_after(jiffies, timeout)) + WARN(1, "pipe_off wait timed out\n"); + } +} + +static const char *state_string(bool enabled) +{ + return enabled ? "on" : "off"; +} + +/* Only for pre-ILK configs */ +static void assert_pll(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = DPLL(pipe); + val = I915_READ(reg); + cur_state = !!(val & DPLL_VCO_ENABLE); + WARN(cur_state != state, + "PLL state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_pll_enabled(d, p) assert_pll(d, p, true) +#define assert_pll_disabled(d, p) assert_pll(d, p, false) + +/* For ILK+ */ +static void assert_pch_pll(struct drm_i915_private *dev_priv, + struct intel_pch_pll *pll, + struct intel_crtc *crtc, + bool state) +{ + u32 val; + bool cur_state; + + if (HAS_PCH_LPT(dev_priv->dev)) { + DRM_DEBUG_DRIVER("LPT detected: skipping PCH PLL test\n"); + return; + } + + if (WARN (!pll, + "asserting PCH PLL %s with no PLL\n", state_string(state))) + return; + + val = I915_READ(pll->pll_reg); + cur_state = !!(val & DPLL_VCO_ENABLE); + WARN(cur_state != state, + "PCH PLL state for reg %x assertion failure (expected %s, current %s), val=%08x\n", + pll->pll_reg, state_string(state), state_string(cur_state), val); + + /* Make sure the selected PLL is correctly attached to the transcoder */ + if (crtc && HAS_PCH_CPT(dev_priv->dev)) { + u32 pch_dpll; + + pch_dpll = I915_READ(PCH_DPLL_SEL); + cur_state = pll->pll_reg == _PCH_DPLL_B; + if (!WARN(((pch_dpll >> (4 * crtc->pipe)) & 1) != cur_state, + "PLL[%d] not attached to this transcoder %d: %08x\n", + cur_state, crtc->pipe, pch_dpll)) { + cur_state = !!(val >> (4*crtc->pipe + 3)); + WARN(cur_state != state, + "PLL[%d] not %s on this transcoder %d: %08x\n", + pll->pll_reg == _PCH_DPLL_B, + state_string(state), + crtc->pipe, + val); + } + } +} +#define assert_pch_pll_enabled(d, p, c) assert_pch_pll(d, p, c, true) +#define assert_pch_pll_disabled(d, p, c) assert_pch_pll(d, p, c, false) + +static void assert_fdi_tx(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (IS_HASWELL(dev_priv->dev)) { + /* On Haswell, DDI is used instead of FDI_TX_CTL */ + reg = TRANS_DDI_FUNC_CTL(cpu_transcoder); + val = I915_READ(reg); + cur_state = !!(val & TRANS_DDI_FUNC_ENABLE); + } else { + reg = FDI_TX_CTL(pipe); + val = I915_READ(reg); + cur_state = !!(val & FDI_TX_ENABLE); + } + WARN(cur_state != state, + "FDI TX state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_fdi_tx_enabled(d, p) assert_fdi_tx(d, p, true) +#define assert_fdi_tx_disabled(d, p) assert_fdi_tx(d, p, false) + +static void assert_fdi_rx(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = FDI_RX_CTL(pipe); + val = I915_READ(reg); + cur_state = !!(val & FDI_RX_ENABLE); + WARN(cur_state != state, + "FDI RX state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_fdi_rx_enabled(d, p) assert_fdi_rx(d, p, true) +#define assert_fdi_rx_disabled(d, p) assert_fdi_rx(d, p, false) + +static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + /* ILK FDI PLL is always enabled */ + if (dev_priv->info->gen == 5) + return; + + /* On Haswell, DDI ports are responsible for the FDI PLL setup */ + if (IS_HASWELL(dev_priv->dev)) + return; + + reg = FDI_TX_CTL(pipe); + val = I915_READ(reg); + WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n"); +} + +static void assert_fdi_rx_pll_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + reg = FDI_RX_CTL(pipe); + val = I915_READ(reg); + WARN(!(val & FDI_RX_PLL_ENABLE), "FDI RX PLL assertion failure, should be active but is disabled\n"); +} + +static void assert_panel_unlocked(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int pp_reg, lvds_reg; + u32 val; + enum pipe panel_pipe = PIPE_A; + bool locked = true; + + if (HAS_PCH_SPLIT(dev_priv->dev)) { + pp_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + } else { + pp_reg = PP_CONTROL; + lvds_reg = LVDS; + } + + val = I915_READ(pp_reg); + if (!(val & PANEL_POWER_ON) || + ((val & PANEL_UNLOCK_REGS) == PANEL_UNLOCK_REGS)) + locked = false; + + if (I915_READ(lvds_reg) & LVDS_PIPEB_SELECT) + panel_pipe = PIPE_B; + + WARN(panel_pipe == pipe && locked, + "panel assertion failure, pipe %c regs locked\n", + pipe_name(pipe)); +} + +void assert_pipe(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + /* if we need the pipe A quirk it must be always on */ + if (pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) + state = true; + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + cur_state = !!(val & PIPECONF_ENABLE); + WARN(cur_state != state, + "pipe %c assertion failure (expected %s, current %s)\n", + pipe_name(pipe), state_string(state), state_string(cur_state)); +} + +static void assert_plane(struct drm_i915_private *dev_priv, + enum plane plane, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = DSPCNTR(plane); + val = I915_READ(reg); + cur_state = !!(val & DISPLAY_PLANE_ENABLE); + WARN(cur_state != state, + "plane %c assertion failure (expected %s, current %s)\n", + plane_name(plane), state_string(state), state_string(cur_state)); +} + +#define assert_plane_enabled(d, p) assert_plane(d, p, true) +#define assert_plane_disabled(d, p) assert_plane(d, p, false) + +static void assert_planes_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg, i; + u32 val; + int cur_pipe; + + /* Planes are fixed to pipes on ILK+ */ + if (HAS_PCH_SPLIT(dev_priv->dev)) { + reg = DSPCNTR(pipe); + val = I915_READ(reg); + WARN((val & DISPLAY_PLANE_ENABLE), + "plane %c assertion failure, should be disabled but not\n", + plane_name(pipe)); + return; + } + + /* Need to check both planes against the pipe */ + for (i = 0; i < 2; i++) { + reg = DSPCNTR(i); + val = I915_READ(reg); + cur_pipe = (val & DISPPLANE_SEL_PIPE_MASK) >> + DISPPLANE_SEL_PIPE_SHIFT; + WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe, + "plane %c assertion failure, should be off on pipe %c but is still active\n", + plane_name(i), pipe_name(pipe)); + } +} + +static void assert_pch_refclk_enabled(struct drm_i915_private *dev_priv) +{ + u32 val; + bool enabled; + + if (HAS_PCH_LPT(dev_priv->dev)) { + DRM_DEBUG_DRIVER("LPT does not has PCH refclk, skipping check\n"); + return; + } + + val = I915_READ(PCH_DREF_CONTROL); + enabled = !!(val & (DREF_SSC_SOURCE_MASK | DREF_NONSPREAD_SOURCE_MASK | + DREF_SUPERSPREAD_SOURCE_MASK)); + WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n"); +} + +static void assert_transcoder_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + bool enabled; + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + enabled = !!(val & TRANS_ENABLE); + WARN(enabled, + "transcoder assertion failed, should be off on pipe %c but is still active\n", + pipe_name(pipe)); +} + +static bool dp_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 port_sel, u32 val) +{ + if ((val & DP_PORT_EN) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + u32 trans_dp_ctl_reg = TRANS_DP_CTL(pipe); + u32 trans_dp_ctl = I915_READ(trans_dp_ctl_reg); + if ((trans_dp_ctl & TRANS_DP_PORT_SEL_MASK) != port_sel) + return false; + } else { + if ((val & DP_PIPE_MASK) != (pipe << 30)) + return false; + } + return true; +} + +static bool hdmi_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & PORT_ENABLE) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & TRANSCODER_MASK) != TRANSCODER(pipe)) + return false; + } + return true; +} + +static bool lvds_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & LVDS_PORT_EN) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & LVDS_PIPE_MASK) != LVDS_PIPE(pipe)) + return false; + } + return true; +} + +static bool adpa_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & ADPA_DAC_ENABLE) == 0) + return false; + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & ADPA_PIPE_SELECT_MASK) != ADPA_PIPE_SELECT(pipe)) + return false; + } + return true; +} + +static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe, int reg, u32 port_sel) +{ + u32 val = I915_READ(reg); + WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val), + "PCH DP (0x%08x) enabled on transcoder %c, should be disabled\n", + reg, pipe_name(pipe)); + + WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0 + && (val & DP_PIPEB_SELECT), + "IBX PCH dp port still using transcoder B\n"); +} + +static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe, int reg) +{ + u32 val = I915_READ(reg); + WARN(hdmi_pipe_enabled(dev_priv, pipe, val), + "PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n", + reg, pipe_name(pipe)); + + WARN(HAS_PCH_IBX(dev_priv->dev) && (val & PORT_ENABLE) == 0 + && (val & SDVO_PIPE_B_SELECT), + "IBX PCH hdmi port still using transcoder B\n"); +} + +static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_B, TRANS_DP_PORT_SEL_B); + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_C, TRANS_DP_PORT_SEL_C); + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_D, TRANS_DP_PORT_SEL_D); + + reg = PCH_ADPA; + val = I915_READ(reg); + WARN(adpa_pipe_enabled(dev_priv, pipe, val), + "PCH VGA enabled on transcoder %c, should be disabled\n", + pipe_name(pipe)); + + reg = PCH_LVDS; + val = I915_READ(reg); + WARN(lvds_pipe_enabled(dev_priv, pipe, val), + "PCH LVDS enabled on transcoder %c, should be disabled\n", + pipe_name(pipe)); + + assert_pch_hdmi_disabled(dev_priv, pipe, HDMIB); + assert_pch_hdmi_disabled(dev_priv, pipe, HDMIC); + assert_pch_hdmi_disabled(dev_priv, pipe, HDMID); +} + +/** + * intel_enable_pll - enable a PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to enable + * + * Enable @pipe's PLL so we can start pumping pixels from a plane. Check to + * make sure the PLL reg is writable first though, since the panel write + * protect mechanism may be enabled. + * + * Note! This is for pre-ILK only. + * + * Unfortunately needed by dvo_ns2501 since the dvo depends on it running. + */ +static void intel_enable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) +{ + int reg; + u32 val; + + /* No really, not for ILK+ */ + BUG_ON(!IS_VALLEYVIEW(dev_priv->dev) && dev_priv->info->gen >= 5); + + /* PLL is protected by panel, make sure we can write it */ + if (IS_MOBILE(dev_priv->dev) && !IS_I830(dev_priv->dev)) + assert_panel_unlocked(dev_priv, pipe); + + reg = DPLL(pipe); + val = I915_READ(reg); + val |= DPLL_VCO_ENABLE; + + /* We do this three times for luck */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ +} + +/** + * intel_disable_pll - disable a PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to disable + * + * Disable the PLL for @pipe, making sure the pipe is off first. + * + * Note! This is for pre-ILK only. + */ +static void intel_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) +{ + int reg; + u32 val; + + /* Don't disable pipe A or pipe A PLLs if needed */ + if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE)) + return; + + /* Make sure the pipe isn't still relying on us */ + assert_pipe_disabled(dev_priv, pipe); + + reg = DPLL(pipe); + val = I915_READ(reg); + val &= ~DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +/* SBI access */ +static void +intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, + enum intel_sbi_destination destination) +{ + unsigned long flags; + u32 tmp; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, 100)) { + DRM_ERROR("timeout waiting for SBI to become ready\n"); + goto out_unlock; + } + + I915_WRITE(SBI_ADDR, (reg << 16)); + I915_WRITE(SBI_DATA, value); + + if (destination == SBI_ICLK) + tmp = SBI_CTL_DEST_ICLK | SBI_CTL_OP_CRWR; + else + tmp = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IOWR; + I915_WRITE(SBI_CTL_STAT, SBI_BUSY | tmp); + + if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, + 100)) { + DRM_ERROR("timeout waiting for SBI to complete write transaction\n"); + goto out_unlock; + } + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); +} + +static u32 +intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg, + enum intel_sbi_destination destination) +{ + unsigned long flags; + u32 value = 0; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, 100)) { + DRM_ERROR("timeout waiting for SBI to become ready\n"); + goto out_unlock; + } + + I915_WRITE(SBI_ADDR, (reg << 16)); + + if (destination == SBI_ICLK) + value = SBI_CTL_DEST_ICLK | SBI_CTL_OP_CRRD; + else + value = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IORD; + I915_WRITE(SBI_CTL_STAT, value | SBI_BUSY); + + if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, + 100)) { + DRM_ERROR("timeout waiting for SBI to complete read transaction\n"); + goto out_unlock; + } + + value = I915_READ(SBI_DATA); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); + return value; +} + +/** + * ironlake_enable_pch_pll - enable PCH PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to enable + * + * The PCH PLL needs to be enabled before the PCH transcoder, since it + * drives the transcoder clock. + */ +static void ironlake_enable_pch_pll(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll; + int reg; + u32 val; + + /* PCH PLLs only available on ILK, SNB and IVB */ + BUG_ON(dev_priv->info->gen < 5); + pll = intel_crtc->pch_pll; + if (pll == NULL) + return; + + if (WARN_ON(pll->refcount == 0)) + return; + + DRM_DEBUG_KMS("enable PCH PLL %x (active %d, on? %d)for crtc %d\n", + pll->pll_reg, pll->active, pll->on, + intel_crtc->base.base.id); + + /* PCH refclock must be enabled first */ + assert_pch_refclk_enabled(dev_priv); + + if (pll->active++ && pll->on) { + assert_pch_pll_enabled(dev_priv, pll, NULL); + return; + } + + DRM_DEBUG_KMS("enabling PCH PLL %x\n", pll->pll_reg); + + reg = pll->pll_reg; + val = I915_READ(reg); + val |= DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(200); + + pll->on = true; +} + +static void intel_disable_pch_pll(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll = intel_crtc->pch_pll; + int reg; + u32 val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + if (pll == NULL) + return; + + if (WARN_ON(pll->refcount == 0)) + return; + + DRM_DEBUG_KMS("disable PCH PLL %x (active %d, on? %d) for crtc %d\n", + pll->pll_reg, pll->active, pll->on, + intel_crtc->base.base.id); + + if (WARN_ON(pll->active == 0)) { + assert_pch_pll_disabled(dev_priv, pll, NULL); + return; + } + + if (--pll->active) { + assert_pch_pll_enabled(dev_priv, pll, NULL); + return; + } + + DRM_DEBUG_KMS("disabling PCH PLL %x\n", pll->pll_reg); + + /* Make sure transcoder isn't still depending on us */ + assert_transcoder_disabled(dev_priv, intel_crtc->pipe); + + reg = pll->pll_reg; + val = I915_READ(reg); + val &= ~DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(200); + + pll->on = false; +} + +static void ironlake_enable_pch_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_device *dev = dev_priv->dev; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + uint32_t reg, val, pipeconf_val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + + /* Make sure PCH DPLL is enabled */ + assert_pch_pll_enabled(dev_priv, + to_intel_crtc(crtc)->pch_pll, + to_intel_crtc(crtc)); + + /* FDI must be feeding us bits for PCH ports */ + assert_fdi_tx_enabled(dev_priv, pipe); + assert_fdi_rx_enabled(dev_priv, pipe); + + if (HAS_PCH_CPT(dev)) { + /* Workaround: Set the timing override bit before enabling the + * pch transcoder. */ + reg = TRANS_CHICKEN2(pipe); + val = I915_READ(reg); + val |= TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(reg, val); + } + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + pipeconf_val = I915_READ(PIPECONF(pipe)); + + if (HAS_PCH_IBX(dev_priv->dev)) { + /* + * make the BPC in transcoder be consistent with + * that in pipeconf reg. + */ + val &= ~PIPE_BPC_MASK; + val |= pipeconf_val & PIPE_BPC_MASK; + } + + val &= ~TRANS_INTERLACE_MASK; + if ((pipeconf_val & PIPECONF_INTERLACE_MASK) == PIPECONF_INTERLACED_ILK) + if (HAS_PCH_IBX(dev_priv->dev) && + intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO)) + val |= TRANS_LEGACY_INTERLACED_ILK; + else + val |= TRANS_INTERLACED; + else + val |= TRANS_PROGRESSIVE; + + I915_WRITE(reg, val | TRANS_ENABLE); + if (wait_for(I915_READ(reg) & TRANS_STATE_ENABLE, 100)) + DRM_ERROR("failed to enable transcoder %d\n", pipe); +} + +static void lpt_enable_pch_transcoder(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder) +{ + u32 val, pipeconf_val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + + /* FDI must be feeding us bits for PCH ports */ + assert_fdi_tx_enabled(dev_priv, cpu_transcoder); + assert_fdi_rx_enabled(dev_priv, TRANSCODER_A); + + /* Workaround: set timing override bit. */ + val = I915_READ(_TRANSA_CHICKEN2); + val |= TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(_TRANSA_CHICKEN2, val); + + val = TRANS_ENABLE; + pipeconf_val = I915_READ(PIPECONF(cpu_transcoder)); + + if ((pipeconf_val & PIPECONF_INTERLACE_MASK_HSW) == + PIPECONF_INTERLACED_ILK) + val |= TRANS_INTERLACED; + else + val |= TRANS_PROGRESSIVE; + + I915_WRITE(TRANSCONF(TRANSCODER_A), val); + if (wait_for(I915_READ(_TRANSACONF) & TRANS_STATE_ENABLE, 100)) + DRM_ERROR("Failed to enable PCH transcoder\n"); +} + +static void ironlake_disable_pch_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_device *dev = dev_priv->dev; + uint32_t reg, val; + + /* FDI relies on the transcoder */ + assert_fdi_tx_disabled(dev_priv, pipe); + assert_fdi_rx_disabled(dev_priv, pipe); + + /* Ports must be off as well */ + assert_pch_ports_disabled(dev_priv, pipe); + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + val &= ~TRANS_ENABLE; + I915_WRITE(reg, val); + /* wait for PCH transcoder off, transcoder state */ + if (wait_for((I915_READ(reg) & TRANS_STATE_ENABLE) == 0, 50)) + DRM_ERROR("failed to disable transcoder %d\n", pipe); + + if (!HAS_PCH_IBX(dev)) { + /* Workaround: Clear the timing override chicken bit again. */ + reg = TRANS_CHICKEN2(pipe); + val = I915_READ(reg); + val &= ~TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(reg, val); + } +} + +static void lpt_disable_pch_transcoder(struct drm_i915_private *dev_priv) +{ + u32 val; + + val = I915_READ(_TRANSACONF); + val &= ~TRANS_ENABLE; + I915_WRITE(_TRANSACONF, val); + /* wait for PCH transcoder off, transcoder state */ + if (wait_for((I915_READ(_TRANSACONF) & TRANS_STATE_ENABLE) == 0, 50)) + DRM_ERROR("Failed to disable PCH transcoder\n"); + + /* Workaround: clear timing override bit. */ + val = I915_READ(_TRANSA_CHICKEN2); + val &= ~TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(_TRANSA_CHICKEN2, val); +} + +/** + * intel_enable_pipe - enable a pipe, asserting requirements + * @dev_priv: i915 private structure + * @pipe: pipe to enable + * @pch_port: on ILK+, is this pipe driving a PCH port or not + * + * Enable @pipe, making sure that various hardware specific requirements + * are met, if applicable, e.g. PLL enabled, LVDS pairs enabled, etc. + * + * @pipe should be %PIPE_A or %PIPE_B. + * + * Will wait until the pipe is actually running (i.e. first vblank) before + * returning. + */ +static void intel_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, + bool pch_port) +{ + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + enum transcoder pch_transcoder; + int reg; + u32 val; + + if (IS_HASWELL(dev_priv->dev)) + pch_transcoder = TRANSCODER_A; + else + pch_transcoder = pipe; + + /* + * A pipe without a PLL won't actually be able to drive bits from + * a plane. On ILK+ the pipe PLLs are integrated, so we don't + * need the check. + */ + if (!HAS_PCH_SPLIT(dev_priv->dev)) + assert_pll_enabled(dev_priv, pipe); + else { + if (pch_port) { + /* if driving the PCH, we need FDI enabled */ + assert_fdi_rx_pll_enabled(dev_priv, pch_transcoder); + assert_fdi_tx_pll_enabled(dev_priv, cpu_transcoder); + } + /* FIXME: assert CPU port conditions for SNB+ */ + } + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + if (val & PIPECONF_ENABLE) + return; + + I915_WRITE(reg, val | PIPECONF_ENABLE); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +/** + * intel_disable_pipe - disable a pipe, asserting requirements + * @dev_priv: i915 private structure + * @pipe: pipe to disable + * + * Disable @pipe, making sure that various hardware specific requirements + * are met, if applicable, e.g. plane disabled, panel fitter off, etc. + * + * @pipe should be %PIPE_A or %PIPE_B. + * + * Will wait until the pipe has shut down before returning. + */ +static void intel_disable_pipe(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int reg; + u32 val; + + /* + * Make sure planes won't keep trying to pump pixels to us, + * or we might hang the display. + */ + assert_planes_disabled(dev_priv, pipe); + + /* Don't disable pipe A or pipe A PLLs if needed */ + if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE)) + return; + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + if ((val & PIPECONF_ENABLE) == 0) + return; + + I915_WRITE(reg, val & ~PIPECONF_ENABLE); + intel_wait_for_pipe_off(dev_priv->dev, pipe); +} + +/* + * Plane regs are double buffered, going from enabled->disabled needs a + * trigger in order to latch. The display address reg provides this. + */ +void intel_flush_display_plane(struct drm_i915_private *dev_priv, + enum plane plane) +{ + if (dev_priv->info->gen >= 4) + I915_WRITE(DSPSURF(plane), I915_READ(DSPSURF(plane))); + else + I915_WRITE(DSPADDR(plane), I915_READ(DSPADDR(plane))); +} + +/** + * intel_enable_plane - enable a display plane on a given pipe + * @dev_priv: i915 private structure + * @plane: plane to enable + * @pipe: pipe being fed + * + * Enable @plane on @pipe, making sure that @pipe is running first. + */ +static void intel_enable_plane(struct drm_i915_private *dev_priv, + enum plane plane, enum pipe pipe) +{ + int reg; + u32 val; + + /* If the pipe isn't enabled, we can't pump pixels and may hang */ + assert_pipe_enabled(dev_priv, pipe); + + reg = DSPCNTR(plane); + val = I915_READ(reg); + if (val & DISPLAY_PLANE_ENABLE) + return; + + I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, plane); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +/** + * intel_disable_plane - disable a display plane + * @dev_priv: i915 private structure + * @plane: plane to disable + * @pipe: pipe consuming the data + * + * Disable @plane; should be an independent operation. + */ +static void intel_disable_plane(struct drm_i915_private *dev_priv, + enum plane plane, enum pipe pipe) +{ + int reg; + u32 val; + + reg = DSPCNTR(plane); + val = I915_READ(reg); + if ((val & DISPLAY_PLANE_ENABLE) == 0) + return; + + I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, plane); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +int +intel_pin_and_fence_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 alignment; + int ret; + + switch (obj->tiling_mode) { + case I915_TILING_NONE: + if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) + alignment = 128 * 1024; + else if (INTEL_INFO(dev)->gen >= 4) + alignment = 4 * 1024; + else + alignment = 64 * 1024; + break; + case I915_TILING_X: + /* pin() will align the object as required by fence */ + alignment = 0; + break; + case I915_TILING_Y: + /* FIXME: Is this true? */ + DRM_ERROR("Y tiled not allowed for scan out buffers\n"); + return -EINVAL; + default: + BUG(); + } + + dev_priv->mm.interruptible = false; + ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); + if (ret) + goto err_interruptible; + + /* Install a fence for tiled scan-out. Pre-i965 always needs a + * fence, whereas 965+ only requires a fence if using + * framebuffer compression. For simplicity, we always install + * a fence as the cost is not that onerous. + */ + ret = i915_gem_object_get_fence(obj); + if (ret) + goto err_unpin; + + i915_gem_object_pin_fence(obj); + + dev_priv->mm.interruptible = true; + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_interruptible: + dev_priv->mm.interruptible = true; + return ret; +} + +void intel_unpin_fb_obj(struct drm_i915_gem_object *obj) +{ + i915_gem_object_unpin_fence(obj); + i915_gem_object_unpin(obj); +} + +/* Computes the linear offset to the base tile and adjusts x, y. bytes per pixel + * is assumed to be a power-of-two. */ +unsigned long intel_gen4_compute_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; + + 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, + int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int plane = intel_crtc->plane; + unsigned long linear_offset; + u32 dspcntr; + u32 reg; + + switch (plane) { + case 0: + case 1: + break; + default: + DRM_ERROR("Can't update plane %d in SAREA\n", plane); + return -EINVAL; + } + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + reg = DSPCNTR(plane); + dspcntr = I915_READ(reg); + /* Mask out pixel format bits in case we change it */ + dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; + switch (fb->pixel_format) { + case DRM_FORMAT_C8: + dspcntr |= DISPPLANE_8BPP; + break; + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_ARGB1555: + dspcntr |= DISPPLANE_BGRX555; + break; + case DRM_FORMAT_RGB565: + dspcntr |= DISPPLANE_BGRX565; + break; + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + dspcntr |= DISPPLANE_BGRX888; + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + dspcntr |= DISPPLANE_RGBX888; + break; + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + dspcntr |= DISPPLANE_BGRX101010; + break; + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + dspcntr |= DISPPLANE_RGBX101010; + break; + default: + DRM_ERROR("Unknown pixel format 0x%08x\n", fb->pixel_format); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 4) { + if (obj->tiling_mode != I915_TILING_NONE) + dspcntr |= DISPPLANE_TILED; + else + dspcntr &= ~DISPPLANE_TILED; + } + + I915_WRITE(reg, dspcntr); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + + if (INTEL_INFO(dev)->gen >= 4) { + intel_crtc->dspaddr_offset = + intel_gen4_compute_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; + } + + DRM_DEBUG_KMS("Writing base %08X %08lX %d %d %d\n", + obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); + I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); + if (INTEL_INFO(dev)->gen >= 4) { + I915_MODIFY_DISPBASE(DSPSURF(plane), + obj->gtt_offset + intel_crtc->dspaddr_offset); + I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); + I915_WRITE(DSPLINOFF(plane), linear_offset); + } else + I915_WRITE(DSPADDR(plane), obj->gtt_offset + linear_offset); + POSTING_READ(reg); + + return 0; +} + +static int ironlake_update_plane(struct drm_crtc *crtc, + struct drm_framebuffer *fb, int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int plane = intel_crtc->plane; + unsigned long linear_offset; + u32 dspcntr; + u32 reg; + + switch (plane) { + case 0: + case 1: + case 2: + break; + default: + DRM_ERROR("Can't update plane %d in SAREA\n", plane); + return -EINVAL; + } + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + reg = DSPCNTR(plane); + dspcntr = I915_READ(reg); + /* Mask out pixel format bits in case we change it */ + dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; + switch (fb->pixel_format) { + case DRM_FORMAT_C8: + dspcntr |= DISPPLANE_8BPP; + break; + case DRM_FORMAT_RGB565: + dspcntr |= DISPPLANE_BGRX565; + break; + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + dspcntr |= DISPPLANE_BGRX888; + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + dspcntr |= DISPPLANE_RGBX888; + break; + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + dspcntr |= DISPPLANE_BGRX101010; + break; + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + dspcntr |= DISPPLANE_RGBX101010; + break; + default: + DRM_ERROR("Unknown pixel format 0x%08x\n", fb->pixel_format); + return -EINVAL; + } + + if (obj->tiling_mode != I915_TILING_NONE) + dspcntr |= DISPPLANE_TILED; + else + dspcntr &= ~DISPPLANE_TILED; + + /* must disable */ + dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE; + + I915_WRITE(reg, dspcntr); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + intel_crtc->dspaddr_offset = + intel_gen4_compute_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", + obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); + I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); + I915_MODIFY_DISPBASE(DSPSURF(plane), + obj->gtt_offset + intel_crtc->dspaddr_offset); + if (IS_HASWELL(dev)) { + I915_WRITE(DSPOFFSET(plane), (y << 16) | x); + } else { + I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); + I915_WRITE(DSPLINOFF(plane), linear_offset); + } + POSTING_READ(reg); + + return 0; +} + +/* Assume fb object is pinned & idle & fenced and just update base pointers */ +static int +intel_pipe_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb, + int x, int y, enum mode_set_atomic state) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.disable_fbc) + dev_priv->display.disable_fbc(dev); + intel_increase_pllclock(crtc); + + return dev_priv->display.update_plane(crtc, fb, x, y); +} + +static int +intel_finish_fb(struct drm_framebuffer *old_fb) +{ + struct drm_i915_gem_object *obj = to_intel_framebuffer(old_fb)->obj; + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + bool was_interruptible = dev_priv->mm.interruptible; + int ret; + + wait_event(dev_priv->pending_flip_queue, + atomic_read(&dev_priv->mm.wedged) || + atomic_read(&obj->pending_flip) == 0); + + /* Big Hammer, we also need to ensure that any pending + * MI_WAIT_FOR_EVENT inside a user batch buffer on the + * current scanout is retired before unpinning the old + * framebuffer. + * + * This should only fail upon a hung GPU, in which case we + * can safely continue. + */ + dev_priv->mm.interruptible = false; + ret = i915_gem_object_finish_gpu(obj); + dev_priv->mm.interruptible = was_interruptible; + + return ret; +} + +static void intel_crtc_update_sarea_pos(struct drm_crtc *crtc, int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_master_private *master_priv; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (!master_priv->sarea_priv) + return; + + switch (intel_crtc->pipe) { + case 0: + master_priv->sarea_priv->pipeA_x = x; + master_priv->sarea_priv->pipeA_y = y; + break; + case 1: + master_priv->sarea_priv->pipeB_x = x; + master_priv->sarea_priv->pipeB_y = y; + break; + default: + break; + } +} + +static int +intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_framebuffer *old_fb; + int ret; + + /* no fb bound */ + if (!fb) { + DRM_ERROR("No FB bound\n"); + return 0; + } + + if(intel_crtc->plane > dev_priv->num_pipe) { + DRM_ERROR("no plane for crtc: plane %d, num_pipes %d\n", + intel_crtc->plane, + dev_priv->num_pipe); + return -EINVAL; + } + + mutex_lock(&dev->struct_mutex); + ret = intel_pin_and_fence_fb_obj(dev, + to_intel_framebuffer(fb)->obj, + NULL); + if (ret != 0) { + mutex_unlock(&dev->struct_mutex); + DRM_ERROR("pin & fence failed\n"); + return ret; + } + + if (crtc->fb) + intel_finish_fb(crtc->fb); + + ret = dev_priv->display.update_plane(crtc, fb, x, y); + if (ret) { + intel_unpin_fb_obj(to_intel_framebuffer(fb)->obj); + mutex_unlock(&dev->struct_mutex); + DRM_ERROR("failed to update base address\n"); + return ret; + } + + old_fb = crtc->fb; + crtc->fb = fb; + crtc->x = x; + crtc->y = y; + + if (old_fb) { + intel_wait_for_vblank(dev, intel_crtc->pipe); + intel_unpin_fb_obj(to_intel_framebuffer(old_fb)->obj); + } + + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_sarea_pos(crtc, x, y); + + return 0; +} + +static void ironlake_set_pll_edp(struct drm_crtc *crtc, int clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + DRM_DEBUG_KMS("eDP PLL enable for clock %d\n", clock); + dpa_ctl = I915_READ(DP_A); + dpa_ctl &= ~DP_PLL_FREQ_MASK; + + if (clock < 200000) { + u32 temp; + dpa_ctl |= DP_PLL_FREQ_160MHZ; + /* workaround for 160Mhz: + 1) program 0x4600c bits 15:0 = 0x8124 + 2) program 0x46010 bit 0 = 1 + 3) program 0x46034 bit 24 = 1 + 4) program 0x64000 bit 14 = 1 + */ + temp = I915_READ(0x4600c); + temp &= 0xffff0000; + I915_WRITE(0x4600c, temp | 0x8124); + + temp = I915_READ(0x46010); + I915_WRITE(0x46010, temp | 1); + + temp = I915_READ(0x46034); + I915_WRITE(0x46034, temp | (1 << 24)); + } else { + dpa_ctl |= DP_PLL_FREQ_270MHZ; + } + I915_WRITE(DP_A, dpa_ctl); + + POSTING_READ(DP_A); + udelay(500); +} + +static void intel_fdi_normal_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* enable normal train */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + if (IS_IVYBRIDGE(dev)) { + temp &= ~FDI_LINK_TRAIN_NONE_IVB; + temp |= FDI_LINK_TRAIN_NONE_IVB | FDI_TX_ENHANCE_FRAME_ENABLE; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_NONE | FDI_TX_ENHANCE_FRAME_ENABLE; + } + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_NORMAL_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_NONE; + } + I915_WRITE(reg, temp | FDI_RX_ENHANCE_FRAME_ENABLE); + + /* wait one idle pattern time */ + POSTING_READ(reg); + udelay(1000); + + /* IVB wants error correction enabled */ + if (IS_IVYBRIDGE(dev)) + I915_WRITE(reg, I915_READ(reg) | FDI_FS_ERRC_ENABLE | + FDI_FE_ERRC_ENABLE); +} + +static void ivb_modeset_global_resources(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *pipe_B_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_B]); + struct intel_crtc *pipe_C_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_C]); + uint32_t temp; + + /* When everything is off disable fdi C so that we could enable fdi B + * with all lanes. XXX: This misses the case where a pipe is not using + * any pch resources and so doesn't need any fdi lanes. */ + if (!pipe_B_crtc->base.enabled && !pipe_C_crtc->base.enabled) { + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); + + temp = I915_READ(SOUTH_CHICKEN1); + temp &= ~FDI_BC_BIFURCATION_SELECT; + DRM_DEBUG_KMS("disabling fdi C rx\n"); + I915_WRITE(SOUTH_CHICKEN1, temp); + } +} + +/* The FDI link training functions for ILK/Ibexpeak. */ +static void ironlake_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 reg, temp, tries; + + /* FDI needs bits from pipe & plane first */ + assert_pipe_enabled(dev_priv, pipe); + assert_plane_enabled(dev_priv, plane); + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + I915_READ(reg); + udelay(150); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + /* Ironlake workaround, enable clock pointer after FDI enable*/ + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR | + FDI_RX_PHASE_SYNC_POINTER_EN); + + reg = FDI_RX_IIR(pipe); + for (tries = 0; tries < 5; tries++) { + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if ((temp & FDI_RX_BIT_LOCK)) { + DRM_DEBUG_KMS("FDI train 1 done.\n"); + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + break; + } + } + if (tries == 5) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + reg = FDI_RX_IIR(pipe); + for (tries = 0; tries < 5; tries++) { + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done.\n"); + break; + } + } + if (tries == 5) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done\n"); + +} + +static const int snb_b_fdi_train_param[] = { + FDI_LINK_TRAIN_400MV_0DB_SNB_B, + FDI_LINK_TRAIN_400MV_6DB_SNB_B, + FDI_LINK_TRAIN_600MV_3_5DB_SNB_B, + FDI_LINK_TRAIN_800MV_0DB_SNB_B, +}; + +/* The FDI link training functions for SNB/Cougarpoint. */ +static void gen6_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp, i, retry; + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + /* SNB-B */ + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + I915_WRITE(FDI_RX_MISC(pipe), + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + } + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + for (retry = 0; retry < 5; retry++) { + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + if (temp & FDI_RX_BIT_LOCK) { + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + DRM_DEBUG_KMS("FDI train 1 done.\n"); + break; + } + udelay(50); + } + if (retry < 5) + break; + } + if (i == 4) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + if (IS_GEN6(dev)) { + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + /* SNB-B */ + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + } + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_2_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + } + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + for (retry = 0; retry < 5; retry++) { + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done.\n"); + break; + } + udelay(50); + } + if (retry < 5) + break; + } + if (i == 4) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done.\n"); +} + +/* Manual link training for Ivy Bridge A0 parts */ +static void ivb_manual_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp, i; + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + DRM_DEBUG_KMS("FDI_RX_IIR before link train 0x%x\n", + I915_READ(FDI_RX_IIR(pipe))); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~(FDI_LINK_TRAIN_AUTO | FDI_LINK_TRAIN_NONE_IVB); + temp |= FDI_LINK_TRAIN_PATTERN_1_IVB; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + temp |= FDI_COMPOSITE_SYNC; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + I915_WRITE(FDI_RX_MISC(pipe), + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_AUTO; + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + temp |= FDI_COMPOSITE_SYNC; + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_BIT_LOCK || + (I915_READ(reg) & FDI_RX_BIT_LOCK)) { + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + DRM_DEBUG_KMS("FDI train 1 done, level %i.\n", i); + break; + } + } + if (i == 4) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE_IVB; + temp |= FDI_LINK_TRAIN_PATTERN_2_IVB; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_2_CPT; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done, level %i.\n", i); + break; + } + } + if (i == 4) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done.\n"); +} + +static void ironlake_fdi_pll_enable(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = intel_crtc->pipe; + u32 reg, temp; + + + /* enable PCH FDI RX PLL, wait warmup plus DMI latency */ + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~((0x7 << 19) | (0x7 << 16)); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp | FDI_RX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(200); + + /* Switch from Rawclk to PCDclk */ + temp = I915_READ(reg); + I915_WRITE(reg, temp | FDI_PCDCLK); + + POSTING_READ(reg); + udelay(200); + + /* On Haswell, the PLL configuration for ports and pipes is handled + * separately, as part of DDI setup */ + if (!IS_HASWELL(dev)) { + /* Enable CPU FDI TX PLL, always on for Ironlake */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + if ((temp & FDI_TX_PLL_ENABLE) == 0) { + I915_WRITE(reg, temp | FDI_TX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(100); + } + } +} + +static void ironlake_fdi_pll_disable(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* Switch from PCDclk to Rawclk */ + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_PCDCLK); + + /* Disable CPU FDI TX PLL */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_TX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(100); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_RX_PLL_ENABLE); + + /* Wait for the clocks to turn off. */ + POSTING_READ(reg); + udelay(100); +} + +static void ironlake_fdi_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* disable CPU FDI tx and PCH FDI rx */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_TX_ENABLE); + POSTING_READ(reg); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(0x7 << 16); + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp & ~FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(100); + + /* Ironlake workaround, disable clock pointer after downing FDI */ + if (HAS_PCH_IBX(dev)) { + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); + } + + /* still set train pattern 1 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + } + /* BPC in FDI rx is consistent with that in PIPECONF */ + temp &= ~(0x07 << 16); + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(100); +} + +static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long flags; + bool pending; + + if (atomic_read(&dev_priv->mm.wedged)) + return false; + + spin_lock_irqsave(&dev->event_lock, flags); + pending = to_intel_crtc(crtc)->unpin_work != NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + return pending; +} + +static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (crtc->fb == NULL) + return; + + wait_event(dev_priv->pending_flip_queue, + !intel_crtc_has_pending_flip(crtc)); + + mutex_lock(&dev->struct_mutex); + intel_finish_fb(crtc->fb); + mutex_unlock(&dev->struct_mutex); +} + +static bool ironlake_crtc_driving_pch(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + + /* + * If there's a non-PCH eDP on this crtc, it must be DP_A, and that + * must be driven by its own crtc; no sharing is possible. + */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_EDP: + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + return false; + continue; + } + } + + return true; +} + +static bool haswell_crtc_driving_pch(struct drm_crtc *crtc) +{ + return intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG); +} + +/* Program iCLKIP clock to the desired frequency */ +static void lpt_program_iclkip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 divsel, phaseinc, auxdiv, phasedir = 0; + u32 temp; + + /* It is necessary to ungate the pixclk gate prior to programming + * the divisors, and gate it back when it is done. + */ + I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_GATE); + + /* Disable SSCCTL */ + intel_sbi_write(dev_priv, SBI_SSCCTL6, + intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK) | + SBI_SSCCTL_DISABLE, + SBI_ICLK); + + /* 20MHz is a corner case which is out of range for the 7-bit divisor */ + if (crtc->mode.clock == 20000) { + auxdiv = 1; + divsel = 0x41; + phaseinc = 0x20; + } else { + /* The iCLK virtual clock root frequency is in MHz, + * but the crtc->mode.clock in in KHz. To get the divisors, + * it is necessary to divide one by another, so we + * convert the virtual clock precision to KHz here for higher + * precision. + */ + u32 iclk_virtual_root_freq = 172800 * 1000; + u32 iclk_pi_range = 64; + u32 desired_divisor, msb_divisor_value, pi_value; + + desired_divisor = (iclk_virtual_root_freq / crtc->mode.clock); + msb_divisor_value = desired_divisor / iclk_pi_range; + pi_value = desired_divisor % iclk_pi_range; + + auxdiv = 0; + divsel = msb_divisor_value - 2; + phaseinc = pi_value; + } + + /* This should not happen with any sane values */ + WARN_ON(SBI_SSCDIVINTPHASE_DIVSEL(divsel) & + ~SBI_SSCDIVINTPHASE_DIVSEL_MASK); + WARN_ON(SBI_SSCDIVINTPHASE_DIR(phasedir) & + ~SBI_SSCDIVINTPHASE_INCVAL_MASK); + + DRM_DEBUG_KMS("iCLKIP clock: found settings for %dKHz refresh rate: auxdiv=%x, divsel=%x, phasedir=%x, phaseinc=%x\n", + crtc->mode.clock, + auxdiv, + divsel, + phasedir, + phaseinc); + + /* Program SSCDIVINTPHASE6 */ + temp = intel_sbi_read(dev_priv, SBI_SSCDIVINTPHASE6, SBI_ICLK); + temp &= ~SBI_SSCDIVINTPHASE_DIVSEL_MASK; + temp |= SBI_SSCDIVINTPHASE_DIVSEL(divsel); + temp &= ~SBI_SSCDIVINTPHASE_INCVAL_MASK; + temp |= SBI_SSCDIVINTPHASE_INCVAL(phaseinc); + temp |= SBI_SSCDIVINTPHASE_DIR(phasedir); + temp |= SBI_SSCDIVINTPHASE_PROPAGATE; + intel_sbi_write(dev_priv, SBI_SSCDIVINTPHASE6, temp, SBI_ICLK); + + /* Program SSCAUXDIV */ + temp = intel_sbi_read(dev_priv, SBI_SSCAUXDIV6, SBI_ICLK); + temp &= ~SBI_SSCAUXDIV_FINALDIV2SEL(1); + temp |= SBI_SSCAUXDIV_FINALDIV2SEL(auxdiv); + intel_sbi_write(dev_priv, SBI_SSCAUXDIV6, temp, SBI_ICLK); + + /* Enable modulator and associated divider */ + temp = intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK); + temp &= ~SBI_SSCCTL_DISABLE; + intel_sbi_write(dev_priv, SBI_SSCCTL6, temp, SBI_ICLK); + + /* Wait for initialization time */ + udelay(24); + + I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_UNGATE); +} + +/* + * Enable PCH resources required for PCH ports: + * - PCH PLLs + * - FDI training & RX/TX + * - update transcoder timings + * - DP transcoding bits + * - transcoder + */ +static void ironlake_pch_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + assert_transcoder_disabled(dev_priv, pipe); + + /* Write the TU size bits before fdi link training, so that error + * detection works. */ + I915_WRITE(FDI_RX_TUSIZE1(pipe), + I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK); + + /* For PCH output, training FDI link */ + dev_priv->display.fdi_link_train(crtc); + + /* XXX: pch pll's can be enabled any time before we enable the PCH + * transcoder, and we actually should do this to not upset any PCH + * transcoder that already use the clock when we share it. + * + * Note that enable_pch_pll tries to do the right thing, but get_pch_pll + * unconditionally resets the pll - we need that to have the right LVDS + * enable sequence. */ + ironlake_enable_pch_pll(intel_crtc); + + if (HAS_PCH_CPT(dev)) { + u32 sel; + + temp = I915_READ(PCH_DPLL_SEL); + switch (pipe) { + default: + case 0: + temp |= TRANSA_DPLL_ENABLE; + sel = TRANSA_DPLLB_SEL; + break; + case 1: + temp |= TRANSB_DPLL_ENABLE; + sel = TRANSB_DPLLB_SEL; + break; + case 2: + temp |= TRANSC_DPLL_ENABLE; + sel = TRANSC_DPLLB_SEL; + break; + } + if (intel_crtc->pch_pll->pll_reg == _PCH_DPLL_B) + temp |= sel; + else + temp &= ~sel; + I915_WRITE(PCH_DPLL_SEL, temp); + } + + /* set transcoder timing, panel must allow it */ + assert_panel_unlocked(dev_priv, pipe); + I915_WRITE(TRANS_HTOTAL(pipe), I915_READ(HTOTAL(pipe))); + I915_WRITE(TRANS_HBLANK(pipe), I915_READ(HBLANK(pipe))); + I915_WRITE(TRANS_HSYNC(pipe), I915_READ(HSYNC(pipe))); + + I915_WRITE(TRANS_VTOTAL(pipe), I915_READ(VTOTAL(pipe))); + I915_WRITE(TRANS_VBLANK(pipe), I915_READ(VBLANK(pipe))); + I915_WRITE(TRANS_VSYNC(pipe), I915_READ(VSYNC(pipe))); + I915_WRITE(TRANS_VSYNCSHIFT(pipe), I915_READ(VSYNCSHIFT(pipe))); + + intel_fdi_normal_train(crtc); + + /* For PCH DP, enable TRANS_DP_CTL */ + if (HAS_PCH_CPT(dev) && + (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))) { + u32 bpc = (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) >> 5; + reg = TRANS_DP_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(TRANS_DP_PORT_SEL_MASK | + TRANS_DP_SYNC_MASK | + TRANS_DP_BPC_MASK); + temp |= (TRANS_DP_OUTPUT_ENABLE | + TRANS_DP_ENH_FRAMING); + temp |= bpc << 9; /* same format but at 11:9 */ + + if (crtc->mode.flags & DRM_MODE_FLAG_PHSYNC) + temp |= TRANS_DP_HSYNC_ACTIVE_HIGH; + if (crtc->mode.flags & DRM_MODE_FLAG_PVSYNC) + temp |= TRANS_DP_VSYNC_ACTIVE_HIGH; + + switch (intel_trans_dp_port_sel(crtc)) { + case PCH_DP_B: + temp |= TRANS_DP_PORT_SEL_B; + break; + case PCH_DP_C: + temp |= TRANS_DP_PORT_SEL_C; + break; + case PCH_DP_D: + temp |= TRANS_DP_PORT_SEL_D; + break; + default: + BUG(); + } + + I915_WRITE(reg, temp); + } + + ironlake_enable_pch_transcoder(dev_priv, pipe); +} + +static void lpt_pch_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + assert_transcoder_disabled(dev_priv, TRANSCODER_A); + + lpt_program_iclkip(crtc); + + /* Set transcoder timing. */ + I915_WRITE(_TRANS_HTOTAL_A, I915_READ(HTOTAL(cpu_transcoder))); + I915_WRITE(_TRANS_HBLANK_A, I915_READ(HBLANK(cpu_transcoder))); + I915_WRITE(_TRANS_HSYNC_A, I915_READ(HSYNC(cpu_transcoder))); + + I915_WRITE(_TRANS_VTOTAL_A, I915_READ(VTOTAL(cpu_transcoder))); + I915_WRITE(_TRANS_VBLANK_A, I915_READ(VBLANK(cpu_transcoder))); + I915_WRITE(_TRANS_VSYNC_A, I915_READ(VSYNC(cpu_transcoder))); + I915_WRITE(_TRANS_VSYNCSHIFT_A, I915_READ(VSYNCSHIFT(cpu_transcoder))); + + lpt_enable_pch_transcoder(dev_priv, cpu_transcoder); +} + +static void intel_put_pch_pll(struct intel_crtc *intel_crtc) +{ + struct intel_pch_pll *pll = intel_crtc->pch_pll; + + if (pll == NULL) + return; + + if (pll->refcount == 0) { + WARN(1, "bad PCH PLL refcount\n"); + return; + } + + --pll->refcount; + intel_crtc->pch_pll = NULL; +} + +static struct intel_pch_pll *intel_get_pch_pll(struct intel_crtc *intel_crtc, u32 dpll, u32 fp) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll; + int i; + + pll = intel_crtc->pch_pll; + if (pll) { + DRM_DEBUG_KMS("CRTC:%d reusing existing PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + goto prepare; + } + + if (HAS_PCH_IBX(dev_priv->dev)) { + /* Ironlake PCH has a fixed PLL->PCH pipe mapping. */ + i = intel_crtc->pipe; + pll = &dev_priv->pch_plls[i]; + + DRM_DEBUG_KMS("CRTC:%d using pre-allocated PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + + goto found; + } + + for (i = 0; i < dev_priv->num_pch_pll; i++) { + pll = &dev_priv->pch_plls[i]; + + /* Only want to check enabled timings first */ + if (pll->refcount == 0) + continue; + + if (dpll == (I915_READ(pll->pll_reg) & 0x7fffffff) && + fp == I915_READ(pll->fp0_reg)) { + DRM_DEBUG_KMS("CRTC:%d sharing existing PCH PLL %x (refcount %d, ative %d)\n", + intel_crtc->base.base.id, + pll->pll_reg, pll->refcount, pll->active); + + goto found; + } + } + + /* Ok no matching timings, maybe there's a free one? */ + for (i = 0; i < dev_priv->num_pch_pll; i++) { + pll = &dev_priv->pch_plls[i]; + if (pll->refcount == 0) { + DRM_DEBUG_KMS("CRTC:%d allocated PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + goto found; + } + } + + return NULL; + +found: + intel_crtc->pch_pll = pll; + pll->refcount++; + DRM_DEBUG_DRIVER("using pll %d for pipe %d\n", i, intel_crtc->pipe); +prepare: /* separate function? */ + DRM_DEBUG_DRIVER("switching PLL %x off\n", pll->pll_reg); + + /* Wait for the clocks to stabilize before rewriting the regs */ + I915_WRITE(pll->pll_reg, dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(pll->pll_reg); + udelay(150); + + I915_WRITE(pll->fp0_reg, fp); + I915_WRITE(pll->pll_reg, dpll & ~DPLL_VCO_ENABLE); + pll->on = false; + return pll; +} + +void intel_cpt_verify_modeset(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int dslreg = PIPEDSL(pipe); + u32 temp; + + temp = I915_READ(dslreg); + udelay(500); + if (wait_for(I915_READ(dslreg) != temp, 5)) { + if (wait_for(I915_READ(dslreg) != temp, 5)) + DRM_ERROR("mode set failed: pipe %d stuck\n", pipe); + } +} + +static void ironlake_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 temp; + bool is_pch_port; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + temp = I915_READ(PCH_LVDS); + if ((temp & LVDS_PORT_EN) == 0) + I915_WRITE(PCH_LVDS, temp | LVDS_PORT_EN); + } + + is_pch_port = ironlake_crtc_driving_pch(crtc); + + if (is_pch_port) { + /* Note: FDI PLL enabling _must_ be done before we enable the + * cpu pipes, hence this is separate from all the other fdi/pch + * enabling. */ + ironlake_fdi_pll_enable(intel_crtc); + } else { + assert_fdi_tx_disabled(dev_priv, pipe); + assert_fdi_rx_disabled(dev_priv, pipe); + } + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->pre_enable) + encoder->pre_enable(encoder); + + /* Enable panel fitting for LVDS */ + if (dev_priv->pch_pf_size && + (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))) { + /* Force use of hard-coded filter coefficients + * as some pre-programmed values are broken, + * e.g. x201. + */ + if (IS_IVYBRIDGE(dev)) + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + else + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); + I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); + I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); + } + + /* + * On ILK+ LUT must be loaded before the pipe is running but with + * clocks enabled + */ + intel_crtc_load_lut(crtc); + + intel_enable_pipe(dev_priv, pipe, is_pch_port); + intel_enable_plane(dev_priv, plane, pipe); + + if (is_pch_port) + ironlake_pch_enable(crtc); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); + + if (HAS_PCH_CPT(dev)) + intel_cpt_verify_modeset(dev, intel_crtc->pipe); + + /* + * There seems to be a race in PCH platform hw (at least on some + * outputs) where an enabled pipe still completes any pageflip right + * away (as if the pipe is off) instead of waiting for vblank. As soon + * as the first vblank happend, everything works as expected. Hence just + * wait for one vblank before returning to avoid strange things + * happening. + */ + intel_wait_for_vblank(dev, intel_crtc->pipe); +} + +static void haswell_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + bool is_pch_port; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + is_pch_port = haswell_crtc_driving_pch(crtc); + + if (is_pch_port) + dev_priv->display.fdi_link_train(crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->pre_enable) + encoder->pre_enable(encoder); + + intel_ddi_enable_pipe_clock(intel_crtc); + + /* Enable panel fitting for eDP */ + if (dev_priv->pch_pf_size && + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + /* Force use of hard-coded filter coefficients + * as some pre-programmed values are broken, + * e.g. x201. + */ + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); + I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); + } + + /* + * On ILK+ LUT must be loaded before the pipe is running but with + * clocks enabled + */ + intel_crtc_load_lut(crtc); + + intel_ddi_set_pipe_settings(crtc); + intel_ddi_enable_pipe_func(crtc); + + intel_enable_pipe(dev_priv, pipe, is_pch_port); + intel_enable_plane(dev_priv, plane, pipe); + + if (is_pch_port) + lpt_pch_enable(crtc); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); + + /* + * There seems to be a race in PCH platform hw (at least on some + * outputs) where an enabled pipe still completes any pageflip right + * away (as if the pipe is off) instead of waiting for vblank. As soon + * as the first vblank happend, everything works as expected. Hence just + * wait for one vblank before returning to avoid strange things + * happening. + */ + intel_wait_for_vblank(dev, intel_crtc->pipe); +} + +static void ironlake_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 reg, temp; + + + if (!intel_crtc->active) + return; + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_update_cursor(crtc, false); + + intel_disable_plane(dev_priv, plane, pipe); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_pipe(dev_priv, pipe); + + /* Disable PF */ + I915_WRITE(PF_CTL(pipe), 0); + I915_WRITE(PF_WIN_SZ(pipe), 0); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->post_disable) + encoder->post_disable(encoder); + + ironlake_fdi_disable(crtc); + + ironlake_disable_pch_transcoder(dev_priv, pipe); + + if (HAS_PCH_CPT(dev)) { + /* disable TRANS_DP_CTL */ + reg = TRANS_DP_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(TRANS_DP_OUTPUT_ENABLE | TRANS_DP_PORT_SEL_MASK); + temp |= TRANS_DP_PORT_SEL_NONE; + I915_WRITE(reg, temp); + + /* disable DPLL_SEL */ + temp = I915_READ(PCH_DPLL_SEL); + switch (pipe) { + case 0: + temp &= ~(TRANSA_DPLL_ENABLE | TRANSA_DPLLB_SEL); + break; + case 1: + temp &= ~(TRANSB_DPLL_ENABLE | TRANSB_DPLLB_SEL); + break; + case 2: + /* C shares PLL A or B */ + temp &= ~(TRANSC_DPLL_ENABLE | TRANSC_DPLLB_SEL); + break; + default: + BUG(); /* wtf */ + } + I915_WRITE(PCH_DPLL_SEL, temp); + } + + /* disable PCH DPLL */ + intel_disable_pch_pll(intel_crtc); + + ironlake_fdi_pll_disable(intel_crtc); + + intel_crtc->active = false; + intel_update_watermarks(dev); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); +} + +static void haswell_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + bool is_pch_port; + + if (!intel_crtc->active) + return; + + is_pch_port = haswell_crtc_driving_pch(crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_update_cursor(crtc, false); + + intel_disable_plane(dev_priv, plane, pipe); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_pipe(dev_priv, pipe); + + intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder); + + /* Disable PF */ + I915_WRITE(PF_CTL(pipe), 0); + I915_WRITE(PF_WIN_SZ(pipe), 0); + + intel_ddi_disable_pipe_clock(intel_crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->post_disable) + encoder->post_disable(encoder); + + if (is_pch_port) { + lpt_disable_pch_transcoder(dev_priv); + intel_ddi_fdi_disable(crtc); + } + + intel_crtc->active = false; + intel_update_watermarks(dev); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); +} + +static void ironlake_crtc_off(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + intel_put_pch_pll(intel_crtc); +} + +static void haswell_crtc_off(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + /* Stop saying we're using TRANSCODER_EDP because some other CRTC might + * start using it. */ + intel_crtc->cpu_transcoder = intel_crtc->pipe; + + intel_ddi_put_crtc_pll(crtc); +} + +static void intel_crtc_dpms_overlay(struct intel_crtc *intel_crtc, bool enable) +{ + if (!enable && intel_crtc->overlay) { + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.interruptible = false; + (void) intel_overlay_switch_off(intel_crtc->overlay); + dev_priv->mm.interruptible = true; + mutex_unlock(&dev->struct_mutex); + } + + /* Let userspace switch the overlay on again. In most cases userspace + * has to recompute where to put it anyway. + */ +} + +static void i9xx_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + intel_enable_pll(dev_priv, pipe); + intel_enable_pipe(dev_priv, pipe, false); + intel_enable_plane(dev_priv, plane, pipe); + + intel_crtc_load_lut(crtc); + intel_update_fbc(dev); + + /* Give the overlay scaler a chance to enable if it's on this pipe */ + intel_crtc_dpms_overlay(intel_crtc, true); + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); +} + +static void i9xx_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 pctl; + + + if (!intel_crtc->active) + return; + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + /* Give the overlay scaler a chance to disable if it's on this pipe */ + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_dpms_overlay(intel_crtc, false); + intel_crtc_update_cursor(crtc, false); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_plane(dev_priv, plane, pipe); + intel_disable_pipe(dev_priv, pipe); + + /* 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; + intel_update_fbc(dev); + intel_update_watermarks(dev); +} + +static void i9xx_crtc_off(struct drm_crtc *crtc) +{ +} + +static void intel_crtc_update_sarea(struct drm_crtc *crtc, + bool enabled) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_master_private *master_priv; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (!master_priv->sarea_priv) + return; + + switch (pipe) { + case 0: + master_priv->sarea_priv->pipeA_w = enabled ? crtc->mode.hdisplay : 0; + master_priv->sarea_priv->pipeA_h = enabled ? crtc->mode.vdisplay : 0; + break; + case 1: + master_priv->sarea_priv->pipeB_w = enabled ? crtc->mode.hdisplay : 0; + master_priv->sarea_priv->pipeB_h = enabled ? crtc->mode.vdisplay : 0; + break; + default: + DRM_ERROR("Can't update pipe %c in SAREA\n", pipe_name(pipe)); + break; + } +} + +/** + * Sets the power management mode of the pipe and plane. + */ +void intel_crtc_update_dpms(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + bool enable = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) + enable |= intel_encoder->connectors_active; + + if (enable) + dev_priv->display.crtc_enable(crtc); + else + dev_priv->display.crtc_disable(crtc); + + intel_crtc_update_sarea(crtc, enable); +} + +static void intel_crtc_noop(struct drm_crtc *crtc) +{ +} + +static void intel_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_connector *connector; + struct drm_i915_private *dev_priv = dev->dev_private; + + /* crtc should still be enabled when we disable it. */ + WARN_ON(!crtc->enabled); + + dev_priv->display.crtc_disable(crtc); + intel_crtc_update_sarea(crtc, false); + dev_priv->display.off(crtc); + + assert_plane_disabled(dev->dev_private, to_intel_crtc(crtc)->plane); + assert_pipe_disabled(dev->dev_private, to_intel_crtc(crtc)->pipe); + + if (crtc->fb) { + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(to_intel_framebuffer(crtc->fb)->obj); + mutex_unlock(&dev->struct_mutex); + crtc->fb = NULL; + } + + /* Update computed state. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + if (!connector->encoder || !connector->encoder->crtc) + continue; + + if (connector->encoder->crtc != crtc) + continue; + + connector->dpms = DRM_MODE_DPMS_OFF; + to_intel_encoder(connector->encoder)->connectors_active = false; + } +} + +void intel_modeset_disable(struct drm_device *dev) +{ + struct drm_crtc *crtc; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (crtc->enabled) + intel_crtc_disable(crtc); + } +} + +void intel_encoder_noop(struct drm_encoder *encoder) +{ +} + +void intel_encoder_destroy(struct drm_encoder *encoder) +{ + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + + drm_encoder_cleanup(encoder); + kfree(intel_encoder); +} + +/* Simple dpms helper for encodres with just one connector, no cloning and only + * one kind of off state. It clamps all !ON modes to fully OFF and changes the + * state of the entire output pipe. */ +void intel_encoder_dpms(struct intel_encoder *encoder, int mode) +{ + if (mode == DRM_MODE_DPMS_ON) { + encoder->connectors_active = true; + + intel_crtc_update_dpms(encoder->base.crtc); + } else { + encoder->connectors_active = false; + + intel_crtc_update_dpms(encoder->base.crtc); + } +} + +/* Cross check the actual hw state with our own modeset state tracking (and it's + * internal consistency). */ +static void intel_connector_check_state(struct intel_connector *connector) +{ + if (connector->get_hw_state(connector)) { + struct intel_encoder *encoder = connector->encoder; + struct drm_crtc *crtc; + bool encoder_enabled; + enum pipe pipe; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base)); + + WARN(connector->base.dpms == DRM_MODE_DPMS_OFF, + "wrong connector dpms state\n"); + WARN(connector->base.encoder != &encoder->base, + "active connector not linked to encoder\n"); + WARN(!encoder->connectors_active, + "encoder->connectors_active not set\n"); + + encoder_enabled = encoder->get_hw_state(encoder, &pipe); + WARN(!encoder_enabled, "encoder not enabled\n"); + if (WARN_ON(!encoder->base.crtc)) + return; + + crtc = encoder->base.crtc; + + WARN(!crtc->enabled, "crtc not enabled\n"); + WARN(!to_intel_crtc(crtc)->active, "crtc not active\n"); + WARN(pipe != to_intel_crtc(crtc)->pipe, + "encoder active on the wrong pipe\n"); + } +} + +/* Even simpler default implementation, if there's really no special case to + * consider. */ +void intel_connector_dpms(struct drm_connector *connector, int mode) +{ + struct intel_encoder *encoder = intel_attached_encoder(connector); + + /* All the simple cases only support two dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + if (encoder->base.crtc) + intel_encoder_dpms(encoder, mode); + else + WARN_ON(encoder->connectors_active != false); + + intel_modeset_check_state(connector->dev); +} + +/* Simple connector->get_hw_state implementation for encoders that support only + * one connector and no cloning and hence the encoder state determines the state + * of the connector. */ +bool intel_connector_get_hw_state(struct intel_connector *connector) +{ + enum pipe pipe = 0; + struct intel_encoder *encoder = connector->encoder; + + return encoder->get_hw_state(encoder, &pipe); +} + +static bool intel_crtc_mode_fixup(struct drm_crtc *crtc, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + + if (HAS_PCH_SPLIT(dev)) { + /* FDI link clock is fixed at 2.7G */ + if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4) + return false; + } + + /* All interlaced capable intel hw wants timings in frames. Note though + * that intel_lvds_mode_fixup does some funny tricks with the crtc + * timings, so we need to be careful not to clobber these.*/ + if (!(adjusted_mode->private_flags & INTEL_MODE_CRTC_TIMINGS_SET)) + drm_mode_set_crtcinfo(adjusted_mode, 0); + + /* WaPruneModeWithIncorrectHsyncOffset: Cantiga+ cannot handle modes + * with a hsync front porch of 0. + */ + if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) && + adjusted_mode->hsync_start == adjusted_mode->hdisplay) + return false; + + return true; +} + +static int valleyview_get_display_clock_speed(struct drm_device *dev) +{ + return 400000; /* FIXME */ +} + +static int i945_get_display_clock_speed(struct drm_device *dev) +{ + return 400000; +} + +static int i915_get_display_clock_speed(struct drm_device *dev) +{ + return 333000; +} + +static int i9xx_misc_get_display_clock_speed(struct drm_device *dev) +{ + return 200000; +} + +static int i915gm_get_display_clock_speed(struct drm_device *dev) +{ + u16 gcfgc = 0; + + pci_read_config_word(dev->pdev, GCFGC, &gcfgc); + + if (gcfgc & GC_LOW_FREQUENCY_ENABLE) + return 133000; + else { + switch (gcfgc & GC_DISPLAY_CLOCK_MASK) { + case GC_DISPLAY_CLOCK_333_MHZ: + return 333000; + default: + case GC_DISPLAY_CLOCK_190_200_MHZ: + return 190000; + } + } +} + +static int i865_get_display_clock_speed(struct drm_device *dev) +{ + return 266000; +} + +static int i855_get_display_clock_speed(struct drm_device *dev) +{ + u16 hpllcc = 0; + /* Assume that the hardware is in the high speed state. This + * should be the default. + */ + switch (hpllcc & GC_CLOCK_CONTROL_MASK) { + case GC_CLOCK_133_200: + case GC_CLOCK_100_200: + return 200000; + case GC_CLOCK_166_250: + return 250000; + case GC_CLOCK_100_133: + return 133000; + } + + /* Shouldn't happen */ + return 0; +} + +static int i830_get_display_clock_speed(struct drm_device *dev) +{ + return 133000; +} + +struct fdi_m_n { + u32 tu; + u32 gmch_m; + u32 gmch_n; + u32 link_m; + u32 link_n; +}; + +static void +fdi_reduce_ratio(u32 *num, u32 *den) +{ + while (*num > 0xffffff || *den > 0xffffff) { + *num >>= 1; + *den >>= 1; + } +} + +static void +ironlake_compute_m_n(int bits_per_pixel, int nlanes, int pixel_clock, + int link_clock, struct fdi_m_n *m_n) +{ + m_n->tu = 64; /* default size */ + + /* BUG_ON(pixel_clock > INT_MAX / 36); */ + m_n->gmch_m = bits_per_pixel * pixel_clock; + m_n->gmch_n = link_clock * nlanes * 8; + fdi_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n); + + m_n->link_m = pixel_clock; + m_n->link_n = link_clock; + fdi_reduce_ratio(&m_n->link_m, &m_n->link_n); +} + +static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv) +{ + if (i915_panel_use_ssc >= 0) + return i915_panel_use_ssc != 0; + return dev_priv->lvds_use_ssc + && !(dev_priv->quirks & QUIRK_LVDS_SSC_DISABLE); +} + +/** + * intel_choose_pipe_bpp_dither - figure out what color depth the pipe should send + * @crtc: CRTC structure + * @mode: requested mode + * + * A pipe may be connected to one or more outputs. Based on the depth of the + * attached framebuffer, choose a good color depth to use on the pipe. + * + * If possible, match the pipe depth to the fb depth. In some cases, this + * isn't ideal, because the connected output supports a lesser or restricted + * set of depths. Resolve that here: + * LVDS typically supports only 6bpc, so clamp down in that case + * HDMI supports only 8bpc or 12bpc, so clamp to 8bpc with dither for 10bpc + * Displays may support a restricted set as well, check EDID and clamp as + * appropriate. + * DP may want to dither down to 6bpc to fit larger modes + * + * RETURNS: + * Dithering requirement (i.e. false if display bpc and pipe bpc match, + * true if they don't match). + */ +static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc, + struct drm_framebuffer *fb, + unsigned int *pipe_bpp, + struct drm_display_mode *mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_connector *connector; + struct intel_encoder *intel_encoder; + unsigned int display_bpc = UINT_MAX, bpc; + + /* Walk the encoders & connectors on this crtc, get min bpc */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + + if (intel_encoder->type == INTEL_OUTPUT_LVDS) { + unsigned int lvds_bpc; + + if ((I915_READ(PCH_LVDS) & LVDS_A3_POWER_MASK) == + LVDS_A3_POWER_UP) + lvds_bpc = 8; + else + lvds_bpc = 6; + + if (lvds_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to LVDS (%d)\n", display_bpc, lvds_bpc); + display_bpc = lvds_bpc; + } + continue; + } + + /* Not one of the known troublemakers, check the EDID */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + head) { + if (connector->encoder != &intel_encoder->base) + continue; + + /* Don't use an invalid EDID bpc value */ + if (connector->display_info.bpc && + connector->display_info.bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to EDID reported max of %d\n", display_bpc, connector->display_info.bpc); + display_bpc = connector->display_info.bpc; + } + } + + if (intel_encoder->type == INTEL_OUTPUT_EDP) { + /* Use VBT settings if we have an eDP panel */ + unsigned int edp_bpc = dev_priv->edp.bpp / 3; + + if (edp_bpc && edp_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); + display_bpc = edp_bpc; + } + continue; + } + + /* + * HDMI is either 12 or 8, so if the display lets 10bpc sneak + * through, clamp it down. (Note: >12bpc will be caught below.) + */ + if (intel_encoder->type == INTEL_OUTPUT_HDMI) { + if (display_bpc > 8 && display_bpc < 12) { + DRM_DEBUG_KMS("forcing bpc to 12 for HDMI\n"); + display_bpc = 12; + } else { + DRM_DEBUG_KMS("forcing bpc to 8 for HDMI\n"); + display_bpc = 8; + } + } + } + + if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + DRM_DEBUG_KMS("Dithering DP to 6bpc\n"); + display_bpc = 6; + } + + /* + * We could just drive the pipe at the highest bpc all the time and + * enable dithering as needed, but that costs bandwidth. So choose + * the minimum value that expresses the full color range of the fb but + * also stays within the max display bpc discovered above. + */ + + switch (fb->depth) { + case 8: + bpc = 8; /* since we go through a colormap */ + break; + case 15: + case 16: + bpc = 6; /* min is 18bpp */ + break; + case 24: + bpc = 8; + break; + case 30: + bpc = 10; + break; + case 48: + bpc = 12; + break; + default: + DRM_DEBUG("unsupported depth, assuming 24 bits\n"); + bpc = min((unsigned int)8, display_bpc); + break; + } + + display_bpc = min(display_bpc, bpc); + + DRM_DEBUG_KMS("setting pipe bpc to %d (max display bpc %d)\n", + bpc, display_bpc); + + *pipe_bpp = display_bpc * 3; + + return display_bpc != bpc; +} + +static int vlv_get_refclk(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int refclk = 27000; /* for DP & HDMI */ + + return 100000; /* only one validated so far */ + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) { + refclk = 96000; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (intel_panel_use_ssc(dev_priv)) + refclk = 100000; + else + refclk = 96000; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + refclk = 100000; + } + + return refclk; +} + +static int i9xx_get_refclk(struct drm_crtc *crtc, int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int refclk; + + if (IS_VALLEYVIEW(dev)) { + refclk = vlv_get_refclk(crtc); + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) { + refclk = dev_priv->lvds_ssc_freq * 1000; + DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", + refclk / 1000); + } else if (!IS_GEN2(dev)) { + refclk = 96000; + } else { + refclk = 48000; + } + + return refclk; +} + +static void i9xx_adjust_sdvo_tv_clock(struct drm_display_mode *adjusted_mode, + intel_clock_t *clock) +{ + /* SDVO TV has fixed PLL values depend on its clock range, + this mirrors vbios setting. */ + if (adjusted_mode->clock >= 100000 + && adjusted_mode->clock < 140500) { + clock->p1 = 2; + clock->p2 = 10; + clock->n = 3; + clock->m1 = 16; + clock->m2 = 8; + } else if (adjusted_mode->clock >= 140500 + && adjusted_mode->clock <= 200000) { + clock->p1 = 1; + clock->p2 = 10; + clock->n = 6; + clock->m1 = 12; + clock->m2 = 8; + } +} + +static void i9xx_update_pll_dividers(struct drm_crtc *crtc, + intel_clock_t *clock, + intel_clock_t *reduced_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 fp, fp2 = 0; + + if (IS_PINEVIEW(dev)) { + fp = (1 << clock->n) << 16 | clock->m1 << 8 | clock->m2; + if (reduced_clock) + fp2 = (1 << reduced_clock->n) << 16 | + reduced_clock->m1 << 8 | reduced_clock->m2; + } else { + fp = clock->n << 16 | clock->m1 << 8 | clock->m2; + if (reduced_clock) + fp2 = reduced_clock->n << 16 | reduced_clock->m1 << 8 | + reduced_clock->m2; + } + + I915_WRITE(FP0(pipe), fp); + + intel_crtc->lowfreq_avail = false; + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + reduced_clock && i915_powersave) { + I915_WRITE(FP1(pipe), fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(FP1(pipe), fp); + } +} + +static void intel_update_lvds(struct drm_crtc *crtc, intel_clock_t *clock, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 temp; + + temp = I915_READ(LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (pipe == 1) { + temp |= LVDS_PIPEB_SELECT; + } else { + temp &= ~LVDS_PIPEB_SELECT; + } + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether we're going to + * set the DPLLs for dual-channel mode or not. + */ + if (clock->p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) + * appropriately here, but we need to look more thoroughly into how + * panels behave in the two modes. + */ + /* set the dithering flag on LVDS as needed */ + if (INTEL_INFO(dev)->gen >= 4) { + if (dev_priv->lvds_dither) + temp |= LVDS_ENABLE_DITHER; + else + temp &= ~LVDS_ENABLE_DITHER; + } + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(LVDS, temp); +} + +static void vlv_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll, mdiv, pdiv; + u32 bestn, bestm1, bestm2, bestp1, bestp2; + bool is_sdvo; + u32 temp; + + is_sdvo = intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI); + + dpll = DPLL_VGA_MODE_DIS; + dpll |= DPLL_EXT_BUFFER_ENABLE_VLV; + dpll |= DPLL_REFA_CLK_ENABLE_VLV; + dpll |= DPLL_INTEGRATED_CLOCK_VLV; + + I915_WRITE(DPLL(pipe), dpll); + POSTING_READ(DPLL(pipe)); + + bestn = clock->n; + bestm1 = clock->m1; + bestm2 = clock->m2; + bestp1 = clock->p1; + bestp2 = clock->p2; + + /* + * In Valleyview PLL and program lane counter registers are exposed + * through DPIO interface + */ + mdiv = ((bestm1 << DPIO_M1DIV_SHIFT) | (bestm2 & DPIO_M2DIV_MASK)); + mdiv |= ((bestp1 << DPIO_P1_SHIFT) | (bestp2 << DPIO_P2_SHIFT)); + mdiv |= ((bestn << DPIO_N_SHIFT)); + mdiv |= (1 << DPIO_POST_DIV_SHIFT); + mdiv |= (1 << DPIO_K_SHIFT); + mdiv |= DPIO_ENABLE_CALIBRATION; + intel_dpio_write(dev_priv, DPIO_DIV(pipe), mdiv); + + intel_dpio_write(dev_priv, DPIO_CORE_CLK(pipe), 0x01000000); + + pdiv = (1 << DPIO_REFSEL_OVERRIDE) | (5 << DPIO_PLL_MODESEL_SHIFT) | + (3 << DPIO_BIAS_CURRENT_CTL_SHIFT) | (1<<20) | + (7 << DPIO_PLL_REFCLK_SEL_SHIFT) | (8 << DPIO_DRIVER_CTL_SHIFT) | + (5 << DPIO_CLK_BIAS_CTL_SHIFT); + intel_dpio_write(dev_priv, DPIO_REFSFR(pipe), pdiv); + + intel_dpio_write(dev_priv, DPIO_LFP_COEFF(pipe), 0x005f003b); + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll); + POSTING_READ(DPLL(pipe)); + if (wait_for(((I915_READ(DPLL(pipe)) & DPLL_LOCK_VLV) == DPLL_LOCK_VLV), 1)) + DRM_ERROR("DPLL %d failed to lock\n", pipe); + + intel_dpio_write(dev_priv, DPIO_FASTCLK_DISABLE, 0x620); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + intel_dp_set_m_n(crtc, mode, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + temp = 0; + if (is_sdvo) { + temp = intel_mode_get_pixel_multiplier(adjusted_mode); + if (temp > 1) + temp = (temp - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT; + else + temp = 0; + } + I915_WRITE(DPLL_MD(pipe), temp); + POSTING_READ(DPLL_MD(pipe)); + + /* Now program lane control registers */ + if(intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) + || intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI)) + { + temp = 0x1000C4; + if(pipe == 1) + temp |= (1 << 21); + intel_dpio_write(dev_priv, DPIO_DATA_CHANNEL1, temp); + } + if(intel_pipe_has_type(crtc,INTEL_OUTPUT_EDP)) + { + temp = 0x1000C4; + if(pipe == 1) + temp |= (1 << 21); + intel_dpio_write(dev_priv, DPIO_DATA_CHANNEL2, temp); + } +} + +static void i9xx_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll; + bool is_sdvo; + + i9xx_update_pll_dividers(crtc, clock, reduced_clock); + + is_sdvo = intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI); + + dpll = DPLL_VGA_MODE_DIS; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + dpll |= DPLLB_MODE_LVDS; + else + dpll |= DPLLB_MODE_DAC_SERIAL; + if (is_sdvo) { + int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + if (pixel_multiplier > 1) { + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + dpll |= (pixel_multiplier - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; + } + dpll |= DPLL_DVO_HIGH_SPEED; + } + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + dpll |= DPLL_DVO_HIGH_SPEED; + + /* compute bitmask from p1 value */ + if (IS_PINEVIEW(dev)) + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW; + else { + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + if (IS_G4X(dev) && reduced_clock) + dpll |= (1 << (reduced_clock->p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT; + } + switch (clock->p2) { + case 5: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_5; + break; + case 7: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_7; + break; + case 10: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_10; + break; + case 14: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14; + break; + } + if (INTEL_INFO(dev)->gen >= 4) + dpll |= (6 << PLL_LOAD_PULSE_PHASE_SHIFT); + + if (is_sdvo && intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + dpll |= PLL_REF_INPUT_TVCLKINBC; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + intel_update_lvds(crtc, clock, adjusted_mode); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + intel_dp_set_m_n(crtc, mode, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + if (INTEL_INFO(dev)->gen >= 4) { + u32 temp = 0; + if (is_sdvo) { + temp = intel_mode_get_pixel_multiplier(adjusted_mode); + if (temp > 1) + temp = (temp - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT; + else + temp = 0; + } + I915_WRITE(DPLL_MD(pipe), temp); + } else { + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(DPLL(pipe), dpll); + } +} + +static void i8xx_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll; + + i9xx_update_pll_dividers(crtc, clock, reduced_clock); + + dpll = DPLL_VGA_MODE_DIS; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + } else { + if (clock->p1 == 2) + dpll |= PLL_P1_DIVIDE_BY_TWO; + else + dpll |= (clock->p1 - 2) << DPLL_FPA01_P1_POST_DIV_SHIFT; + if (clock->p2 == 4) + dpll |= PLL_P2_DIVIDE_BY_4; + } + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + intel_update_lvds(crtc, clock, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(DPLL(pipe), dpll); +} + +static void intel_set_pipe_timings(struct intel_crtc *intel_crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + uint32_t vsyncshift; + + if (!IS_GEN2(dev) && adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) { + /* the chip adds 2 halflines automatically */ + adjusted_mode->crtc_vtotal -= 1; + adjusted_mode->crtc_vblank_end -= 1; + vsyncshift = adjusted_mode->crtc_hsync_start + - adjusted_mode->crtc_htotal / 2; + } else { + vsyncshift = 0; + } + + if (INTEL_INFO(dev)->gen > 3) + I915_WRITE(VSYNCSHIFT(cpu_transcoder), vsyncshift); + + I915_WRITE(HTOTAL(cpu_transcoder), + (adjusted_mode->crtc_hdisplay - 1) | + ((adjusted_mode->crtc_htotal - 1) << 16)); + I915_WRITE(HBLANK(cpu_transcoder), + (adjusted_mode->crtc_hblank_start - 1) | + ((adjusted_mode->crtc_hblank_end - 1) << 16)); + I915_WRITE(HSYNC(cpu_transcoder), + (adjusted_mode->crtc_hsync_start - 1) | + ((adjusted_mode->crtc_hsync_end - 1) << 16)); + + I915_WRITE(VTOTAL(cpu_transcoder), + (adjusted_mode->crtc_vdisplay - 1) | + ((adjusted_mode->crtc_vtotal - 1) << 16)); + I915_WRITE(VBLANK(cpu_transcoder), + (adjusted_mode->crtc_vblank_start - 1) | + ((adjusted_mode->crtc_vblank_end - 1) << 16)); + I915_WRITE(VSYNC(cpu_transcoder), + (adjusted_mode->crtc_vsync_start - 1) | + ((adjusted_mode->crtc_vsync_end - 1) << 16)); + + /* Workaround: when the EDP input selection is B, the VTOTAL_B must be + * programmed with the VTOTAL_EDP value. Same for VTOTAL_C. This is + * documented on the DDI_FUNC_CTL register description, EDP Input Select + * bits. */ + if (IS_HASWELL(dev) && cpu_transcoder == TRANSCODER_EDP && + (pipe == PIPE_B || pipe == PIPE_C)) + I915_WRITE(VTOTAL(pipe), I915_READ(VTOTAL(cpu_transcoder))); + + /* pipesrc controls the size that is scaled from, which should + * always be the user's requested size. + */ + I915_WRITE(PIPESRC(pipe), + ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1)); +} + +static int i9xx_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int refclk, num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dspcntr, pipeconf; + bool ok, has_reduced_clock = false, is_sdvo = false; + bool is_lvds = false, is_tv = false, is_dp = false; + struct intel_encoder *encoder; + const intel_limit_t *limit; + int ret; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + } + + num_connectors++; + } + + refclk = i9xx_get_refclk(crtc, num_connectors); + + /* + * Returns a set of divisors for the desired target clock with the given + * refclk, or FALSE. The returned values represent the clock equation: + * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. + */ + limit = intel_limit(crtc, refclk); + ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, NULL, + &clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + if (is_lvds && dev_priv->lvds_downclock_avail) { + /* + * Ensure we match the reduced clock's P to the target clock. + * If the clocks don't match, we can't switch the display clock + * by using the FP0/FP1. In such case we will disable the LVDS + * downclock feature. + */ + has_reduced_clock = limit->find_pll(limit, crtc, + dev_priv->lvds_downclock, + refclk, + &clock, + &reduced_clock); + } + + if (is_sdvo && is_tv) + i9xx_adjust_sdvo_tv_clock(adjusted_mode, &clock); + + if (IS_GEN2(dev)) + i8xx_update_pll(crtc, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + else if (IS_VALLEYVIEW(dev)) + vlv_update_pll(crtc, mode, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + else + i9xx_update_pll(crtc, mode, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + + /* setup pipeconf */ + pipeconf = I915_READ(PIPECONF(pipe)); + + /* Set up the display plane register */ + dspcntr = DISPPLANE_GAMMA_ENABLE; + + if (pipe == 0) + dspcntr &= ~DISPPLANE_SEL_PIPE_MASK; + else + dspcntr |= DISPPLANE_SEL_PIPE_B; + + if (pipe == 0 && INTEL_INFO(dev)->gen < 4) { + /* Enable pixel doubling when the dot clock is > 90% of the (display) + * core speed. + * + * XXX: No double-wide on 915GM pipe B. Is that the only reason for the + * pipe == 0 check? + */ + if (mode->clock > + dev_priv->display.get_display_clock_speed(dev) * 9 / 10) + pipeconf |= PIPECONF_DOUBLE_WIDE; + else + pipeconf &= ~PIPECONF_DOUBLE_WIDE; + } + + /* default to 8bpc */ + pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN); + if (is_dp) { + if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + pipeconf |= PIPECONF_BPP_6 | + PIPECONF_DITHER_EN | + PIPECONF_DITHER_TYPE_SP; + } + } + + if (IS_VALLEYVIEW(dev) && intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + pipeconf |= PIPECONF_BPP_6 | + PIPECONF_ENABLE | + I965_PIPECONF_ACTIVE; + } + } + + DRM_DEBUG_KMS("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B'); + drm_mode_debug_printmodeline(mode); + + if (HAS_PIPE_CXSR(dev)) { + if (intel_crtc->lowfreq_avail) { + DRM_DEBUG_KMS("enabling CxSR downclocking\n"); + pipeconf |= PIPECONF_CXSR_DOWNCLOCK; + } else { + DRM_DEBUG_KMS("disabling CxSR downclocking\n"); + pipeconf &= ~PIPECONF_CXSR_DOWNCLOCK; + } + } + + pipeconf &= ~PIPECONF_INTERLACE_MASK; + if (!IS_GEN2(dev) && + adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + pipeconf |= PIPECONF_INTERLACE_W_FIELD_INDICATION; + else + pipeconf |= PIPECONF_PROGRESSIVE; + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + /* pipesrc and dspsize control the size that is scaled from, + * which should always be the user's requested size. + */ + I915_WRITE(DSPSIZE(plane), + ((mode->vdisplay - 1) << 16) | + (mode->hdisplay - 1)); + I915_WRITE(DSPPOS(plane), 0); + + I915_WRITE(PIPECONF(pipe), pipeconf); + POSTING_READ(PIPECONF(pipe)); + intel_enable_pipe(dev_priv, pipe, false); + + intel_wait_for_vblank(dev, pipe); + + I915_WRITE(DSPCNTR(plane), dspcntr); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + return ret; +} + +static void ironlake_init_pch_refclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + u32 temp; + bool has_lvds = false; + bool has_cpu_edp = false; + bool has_pch_edp = false; + bool has_panel = false; + bool has_ck505 = false; + bool can_ssc = false; + + /* We need to take the global config into account */ + list_for_each_entry(encoder, &mode_config->encoder_list, + base.head) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + has_panel = true; + has_lvds = true; + break; + case INTEL_OUTPUT_EDP: + has_panel = true; + if (intel_encoder_is_pch_edp(&encoder->base)) + has_pch_edp = true; + else + has_cpu_edp = true; + break; + } + } + + if (HAS_PCH_IBX(dev)) { + has_ck505 = dev_priv->display_clock_mode; + can_ssc = has_ck505; + } else { + has_ck505 = false; + can_ssc = true; + } + + DRM_DEBUG_KMS("has_panel %d has_lvds %d has_pch_edp %d has_cpu_edp %d has_ck505 %d\n", + has_panel, has_lvds, has_pch_edp, has_cpu_edp, + has_ck505); + + /* Ironlake: try to setup display ref clock before DPLL + * enabling. This is only under driver's control after + * PCH B stepping, previous chipset stepping should be + * ignoring this setting. + */ + temp = I915_READ(PCH_DREF_CONTROL); + /* Always enable nonspread source */ + temp &= ~DREF_NONSPREAD_SOURCE_MASK; + + if (has_ck505) + temp |= DREF_NONSPREAD_CK505_ENABLE; + else + temp |= DREF_NONSPREAD_SOURCE_ENABLE; + + if (has_panel) { + temp &= ~DREF_SSC_SOURCE_MASK; + temp |= DREF_SSC_SOURCE_ENABLE; + + /* SSC must be turned on before enabling the CPU output */ + if (intel_panel_use_ssc(dev_priv) && can_ssc) { + DRM_DEBUG_KMS("Using SSC on panel\n"); + temp |= DREF_SSC1_ENABLE; + } else + temp &= ~DREF_SSC1_ENABLE; + + /* Get SSC going before enabling the outputs */ + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + + temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK; + + /* Enable CPU source on CPU attached eDP */ + if (has_cpu_edp) { + if (intel_panel_use_ssc(dev_priv) && can_ssc) { + DRM_DEBUG_KMS("Using SSC on eDP\n"); + temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD; + } + else + temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD; + } else + temp |= DREF_CPU_SOURCE_OUTPUT_DISABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + } else { + DRM_DEBUG_KMS("Disabling SSC entirely\n"); + + temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK; + + /* Turn off CPU output */ + temp |= DREF_CPU_SOURCE_OUTPUT_DISABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + + /* Turn off the SSC source */ + temp &= ~DREF_SSC_SOURCE_MASK; + temp |= DREF_SSC_SOURCE_DISABLE; + + /* Turn off SSC1 */ + temp &= ~ DREF_SSC1_ENABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + } +} + +/* Sequence to enable CLKOUT_DP for FDI usage and configure PCH FDI I/O. */ +static void lpt_init_pch_refclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + bool has_vga = false; + bool is_sdv = false; + u32 tmp; + + list_for_each_entry(encoder, &mode_config->encoder_list, base.head) { + switch (encoder->type) { + case INTEL_OUTPUT_ANALOG: + has_vga = true; + break; + } + } + + if (!has_vga) + return; + + /* XXX: Rip out SDV support once Haswell ships for real. */ + if (IS_HASWELL(dev) && (dev->pci_device & 0xFF00) == 0x0C00) + is_sdv = true; + + tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK); + tmp &= ~SBI_SSCCTL_DISABLE; + tmp |= SBI_SSCCTL_PATHALT; + intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK); + + udelay(24); + + tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK); + tmp &= ~SBI_SSCCTL_PATHALT; + intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK); + + if (!is_sdv) { + tmp = I915_READ(SOUTH_CHICKEN2); + tmp |= FDI_MPHY_IOSFSB_RESET_CTL; + I915_WRITE(SOUTH_CHICKEN2, tmp); + + if (wait_for_atomic_us(I915_READ(SOUTH_CHICKEN2) & + FDI_MPHY_IOSFSB_RESET_STATUS, 100)) + DRM_ERROR("FDI mPHY reset assert timeout\n"); + + tmp = I915_READ(SOUTH_CHICKEN2); + tmp &= ~FDI_MPHY_IOSFSB_RESET_CTL; + I915_WRITE(SOUTH_CHICKEN2, tmp); + + if (wait_for_atomic_us((I915_READ(SOUTH_CHICKEN2) & + FDI_MPHY_IOSFSB_RESET_STATUS) == 0, + 100)) + DRM_ERROR("FDI mPHY reset de-assert timeout\n"); + } + + tmp = intel_sbi_read(dev_priv, 0x8008, SBI_MPHY); + tmp &= ~(0xFF << 24); + tmp |= (0x12 << 24); + intel_sbi_write(dev_priv, 0x8008, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x808C, SBI_MPHY); + tmp &= ~(0x3 << 6); + tmp |= (1 << 6) | (1 << 0); + intel_sbi_write(dev_priv, 0x808C, tmp, SBI_MPHY); + } + + if (is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x800C, SBI_MPHY); + tmp |= 0x7FFF; + intel_sbi_write(dev_priv, 0x800C, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x2008, SBI_MPHY); + tmp |= (1 << 11); + intel_sbi_write(dev_priv, 0x2008, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2108, SBI_MPHY); + tmp |= (1 << 11); + intel_sbi_write(dev_priv, 0x2108, tmp, SBI_MPHY); + + if (is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x2038, SBI_MPHY); + tmp |= (0x3F << 24) | (0xF << 20) | (0xF << 16); + intel_sbi_write(dev_priv, 0x2038, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2138, SBI_MPHY); + tmp |= (0x3F << 24) | (0xF << 20) | (0xF << 16); + intel_sbi_write(dev_priv, 0x2138, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x203C, SBI_MPHY); + tmp |= (0x3F << 8); + intel_sbi_write(dev_priv, 0x203C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x213C, SBI_MPHY); + tmp |= (0x3F << 8); + intel_sbi_write(dev_priv, 0x213C, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x206C, SBI_MPHY); + tmp |= (1 << 24) | (1 << 21) | (1 << 18); + intel_sbi_write(dev_priv, 0x206C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x216C, SBI_MPHY); + tmp |= (1 << 24) | (1 << 21) | (1 << 18); + intel_sbi_write(dev_priv, 0x216C, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x2080, SBI_MPHY); + tmp &= ~(7 << 13); + tmp |= (5 << 13); + intel_sbi_write(dev_priv, 0x2080, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2180, SBI_MPHY); + tmp &= ~(7 << 13); + tmp |= (5 << 13); + intel_sbi_write(dev_priv, 0x2180, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x208C, SBI_MPHY); + tmp &= ~0xFF; + tmp |= 0x1C; + intel_sbi_write(dev_priv, 0x208C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x218C, SBI_MPHY); + tmp &= ~0xFF; + tmp |= 0x1C; + intel_sbi_write(dev_priv, 0x218C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2098, SBI_MPHY); + tmp &= ~(0xFF << 16); + tmp |= (0x1C << 16); + intel_sbi_write(dev_priv, 0x2098, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2198, SBI_MPHY); + tmp &= ~(0xFF << 16); + tmp |= (0x1C << 16); + intel_sbi_write(dev_priv, 0x2198, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x20C4, SBI_MPHY); + tmp |= (1 << 27); + intel_sbi_write(dev_priv, 0x20C4, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x21C4, SBI_MPHY); + tmp |= (1 << 27); + intel_sbi_write(dev_priv, 0x21C4, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x20EC, SBI_MPHY); + tmp &= ~(0xF << 28); + tmp |= (4 << 28); + intel_sbi_write(dev_priv, 0x20EC, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x21EC, SBI_MPHY); + tmp &= ~(0xF << 28); + tmp |= (4 << 28); + intel_sbi_write(dev_priv, 0x21EC, tmp, SBI_MPHY); + } + + /* ULT uses SBI_GEN0, but ULT doesn't have VGA, so we don't care. */ + tmp = intel_sbi_read(dev_priv, SBI_DBUFF0, SBI_ICLK); + tmp |= SBI_DBUFF0_ENABLE; + intel_sbi_write(dev_priv, SBI_DBUFF0, tmp, SBI_ICLK); +} + +/* + * Initialize reference clocks when the driver loads + */ +void intel_init_pch_refclk(struct drm_device *dev) +{ + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) + ironlake_init_pch_refclk(dev); + else if (HAS_PCH_LPT(dev)) + lpt_init_pch_refclk(dev); +} + +static int ironlake_get_refclk(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *encoder; + struct intel_encoder *edp_encoder = NULL; + int num_connectors = 0; + bool is_lvds = false; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_EDP: + edp_encoder = encoder; + break; + } + num_connectors++; + } + + if (is_lvds && intel_panel_use_ssc(dev_priv) && num_connectors < 2) { + DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", + dev_priv->lvds_ssc_freq); + return dev_priv->lvds_ssc_freq * 1000; + } + + return 120000; +} + +static void ironlake_set_pipeconf(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + bool dither) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + uint32_t val; + + val = I915_READ(PIPECONF(pipe)); + + val &= ~PIPE_BPC_MASK; + switch (intel_crtc->bpp) { + case 18: + val |= PIPE_6BPC; + break; + case 24: + val |= PIPE_8BPC; + break; + case 30: + val |= PIPE_10BPC; + break; + case 36: + val |= PIPE_12BPC; + break; + default: + /* Case prevented by intel_choose_pipe_bpp_dither. */ + BUG(); + } + + val &= ~(PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_MASK); + if (dither) + val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); + + val &= ~PIPECONF_INTERLACE_MASK; + if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + val |= PIPECONF_INTERLACED_ILK; + else + val |= PIPECONF_PROGRESSIVE; + + I915_WRITE(PIPECONF(pipe), val); + POSTING_READ(PIPECONF(pipe)); +} + +static void haswell_set_pipeconf(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + bool dither) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + uint32_t val; + + val = I915_READ(PIPECONF(cpu_transcoder)); + + val &= ~(PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_MASK); + if (dither) + val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); + + val &= ~PIPECONF_INTERLACE_MASK_HSW; + if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + val |= PIPECONF_INTERLACED_ILK; + else + val |= PIPECONF_PROGRESSIVE; + + I915_WRITE(PIPECONF(cpu_transcoder), val); + POSTING_READ(PIPECONF(cpu_transcoder)); +} + +static bool ironlake_compute_clocks(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, + bool *has_reduced_clock, + intel_clock_t *reduced_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + int refclk; + const intel_limit_t *limit; + bool ret, is_sdvo = false, is_tv = false, is_lvds = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (intel_encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + } + } + + refclk = ironlake_get_refclk(crtc); + + /* + * Returns a set of divisors for the desired target clock with the given + * refclk, or FALSE. The returned values represent the clock equation: + * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. + */ + limit = intel_limit(crtc, refclk); + ret = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, NULL, + clock); + if (!ret) + return false; + + if (is_lvds && dev_priv->lvds_downclock_avail) { + /* + * Ensure we match the reduced clock's P to the target clock. + * If the clocks don't match, we can't switch the display clock + * by using the FP0/FP1. In such case we will disable the LVDS + * downclock feature. + */ + *has_reduced_clock = limit->find_pll(limit, crtc, + dev_priv->lvds_downclock, + refclk, + clock, + reduced_clock); + } + + if (is_sdvo && is_tv) + i9xx_adjust_sdvo_tv_clock(adjusted_mode, clock); + + return true; +} + +static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t temp; + + temp = I915_READ(SOUTH_CHICKEN1); + if (temp & FDI_BC_BIFURCATION_SELECT) + return; + + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); + + temp |= FDI_BC_BIFURCATION_SELECT; + DRM_DEBUG_KMS("enabling fdi C rx\n"); + I915_WRITE(SOUTH_CHICKEN1, temp); + POSTING_READ(SOUTH_CHICKEN1); +} + +static bool ironlake_check_fdi_lanes(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *pipe_B_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_B]); + + DRM_DEBUG_KMS("checking fdi config on pipe %i, lanes %i\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + if (intel_crtc->fdi_lanes > 4) { + DRM_DEBUG_KMS("invalid fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 4; + + return false; + } + + if (dev_priv->num_pipe == 2) + return true; + + switch (intel_crtc->pipe) { + case PIPE_A: + return true; + case PIPE_B: + if (dev_priv->pipe_to_crtc_mapping[PIPE_C]->enabled && + intel_crtc->fdi_lanes > 2) { + DRM_DEBUG_KMS("invalid shared fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 2; + + return false; + } + + if (intel_crtc->fdi_lanes > 2) + WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT); + else + cpt_enable_fdi_bc_bifurcation(dev); + + return true; + case PIPE_C: + if (!pipe_B_crtc->base.enabled || pipe_B_crtc->fdi_lanes <= 2) { + if (intel_crtc->fdi_lanes > 2) { + DRM_DEBUG_KMS("invalid shared fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 2; + + return false; + } + } else { + DRM_DEBUG_KMS("fdi link B uses too many lanes to enable link C\n"); + return false; + } + + cpt_enable_fdi_bc_bifurcation(dev); + + return true; + default: + BUG(); + } +} + +int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp) +{ + /* + * Account for spread spectrum to avoid + * oversubscribing the link. Max center spread + * is 2.5%; use 5% for safety's sake. + */ + u32 bps = target_clock * bpp * 21 / 20; + return bps / (link_bw * 8) + 1; +} + +static void ironlake_set_m_n(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + struct intel_encoder *intel_encoder, *edp_encoder = NULL; + struct fdi_m_n m_n = {0}; + int target_clock, pixel_multiplier, lane, link_bw; + bool is_dp = false, is_cpu_edp = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + is_cpu_edp = true; + edp_encoder = intel_encoder; + break; + } + } + + /* FDI link */ + pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + lane = 0; + /* CPU eDP doesn't require FDI link, so just set DP M/N + according to current link config */ + if (is_cpu_edp) { + intel_edp_link_config(edp_encoder, &lane, &link_bw); + } else { + /* FDI is a binary signal running at ~2.7GHz, encoding + * each output octet as 10 bits. The actual frequency + * is stored as a divider into a 100MHz clock, and the + * mode pixel clock is stored in units of 1KHz. + * Hence the bw of each lane in terms of the mode signal + * is: + */ + link_bw = intel_fdi_link_freq(dev) * MHz(100)/KHz(1)/10; + } + + /* [e]DP over FDI requires target mode clock instead of link clock. */ + if (edp_encoder) + target_clock = intel_edp_target_clock(edp_encoder, mode); + else if (is_dp) + target_clock = mode->clock; + else + target_clock = adjusted_mode->clock; + + if (!lane) + lane = ironlake_get_lanes_required(target_clock, link_bw, + intel_crtc->bpp); + + intel_crtc->fdi_lanes = lane; + + if (pixel_multiplier > 1) + link_bw *= pixel_multiplier; + ironlake_compute_m_n(intel_crtc->bpp, lane, target_clock, link_bw, + &m_n); + + I915_WRITE(PIPE_DATA_M1(cpu_transcoder), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(cpu_transcoder), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(cpu_transcoder), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(cpu_transcoder), m_n.link_n); +} + +static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, u32 fp) +{ + struct drm_crtc *crtc = &intel_crtc->base; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + uint32_t dpll; + int factor, pixel_multiplier, num_connectors = 0; + bool is_lvds = false, is_sdvo = false, is_tv = false; + bool is_dp = false, is_cpu_edp = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (intel_encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + /* Enable autotuning of the PLL clock (if permissible) */ + factor = 21; + if (is_lvds) { + if ((intel_panel_use_ssc(dev_priv) && + dev_priv->lvds_ssc_freq == 100) || + (I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP) + factor = 25; + } else if (is_sdvo && is_tv) + factor = 20; + + if (clock->m < factor * clock->n) + fp |= FP_CB_TUNE; + + dpll = 0; + + if (is_lvds) + dpll |= DPLLB_MODE_LVDS; + else + dpll |= DPLLB_MODE_DAC_SERIAL; + if (is_sdvo) { + pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + if (pixel_multiplier > 1) { + dpll |= (pixel_multiplier - 1) << PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT; + } + dpll |= DPLL_DVO_HIGH_SPEED; + } + if (is_dp && !is_cpu_edp) + dpll |= DPLL_DVO_HIGH_SPEED; + + /* compute bitmask from p1 value */ + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + /* also FPA1 */ + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT; + + switch (clock->p2) { + case 5: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_5; + break; + case 7: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_7; + break; + case 10: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_10; + break; + case 14: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14; + break; + } + + if (is_sdvo && is_tv) + dpll |= PLL_REF_INPUT_TVCLKINBC; + else if (is_tv) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (is_lvds && intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + return dpll; +} + +static int ironlake_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dpll, fp = 0, fp2 = 0; + bool ok, has_reduced_clock = false; + bool is_lvds = false, is_dp = false, is_cpu_edp = false; + struct intel_encoder *encoder; + u32 temp; + int ret; + bool dither, fdi_config_ok; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + WARN(!(HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)), + "Unexpected PCH type %d\n", INTEL_PCH_TYPE(dev)); + + ok = ironlake_compute_clocks(crtc, adjusted_mode, &clock, + &has_reduced_clock, &reduced_clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + /* determine panel color depth */ + dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, + adjusted_mode); + if (is_lvds && dev_priv->lvds_dither) + dither = true; + + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; + if (has_reduced_clock) + fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 | + reduced_clock.m2; + + dpll = ironlake_compute_dpll(intel_crtc, adjusted_mode, &clock, fp); + + DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe); + drm_mode_debug_printmodeline(mode); + + /* CPU eDP is the only output that doesn't need a PCH PLL of its own. */ + if (!is_cpu_edp) { + struct intel_pch_pll *pll; + + pll = intel_get_pch_pll(intel_crtc, dpll, fp); + if (pll == NULL) { + DRM_DEBUG_DRIVER("failed to find PLL for pipe %d\n", + pipe); + return -EINVAL; + } + } else + intel_put_pch_pll(intel_crtc); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (is_lvds) { + temp = I915_READ(PCH_LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (HAS_PCH_CPT(dev)) { + temp &= ~PORT_TRANS_SEL_MASK; + temp |= PORT_TRANS_SEL_CPT(pipe); + } else { + if (pipe == 1) + temp |= LVDS_PIPEB_SELECT; + else + temp &= ~LVDS_PIPEB_SELECT; + } + + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether we're going to + * set the DPLLs for dual-channel mode or not. + */ + if (clock.p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) + * appropriately here, but we need to look more thoroughly into how + * panels behave in the two modes. + */ + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(PCH_LVDS, temp); + } + + if (is_dp && !is_cpu_edp) { + intel_dp_set_m_n(crtc, mode, adjusted_mode); + } else { + /* For non-DP output, clear any trans DP clock recovery setting.*/ + I915_WRITE(TRANSDATA_M1(pipe), 0); + I915_WRITE(TRANSDATA_N1(pipe), 0); + I915_WRITE(TRANSDPLINK_M1(pipe), 0); + I915_WRITE(TRANSDPLINK_N1(pipe), 0); + } + + if (intel_crtc->pch_pll) { + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(intel_crtc->pch_pll->pll_reg); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + } + + intel_crtc->lowfreq_avail = false; + if (intel_crtc->pch_pll) { + if (is_lvds && has_reduced_clock && i915_powersave) { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp); + } + } + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + /* Note, this also computes intel_crtc->fdi_lanes which is used below in + * ironlake_check_fdi_lanes. */ + ironlake_set_m_n(crtc, mode, adjusted_mode); + + fdi_config_ok = ironlake_check_fdi_lanes(intel_crtc); + + if (is_cpu_edp) + ironlake_set_pll_edp(crtc, adjusted_mode->clock); + + ironlake_set_pipeconf(crtc, adjusted_mode, dither); + + intel_wait_for_vblank(dev, pipe); + + /* Set up the display plane register */ + I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + intel_update_linetime_watermarks(dev, pipe, adjusted_mode); + + return fdi_config_ok ? ret : -EINVAL; +} + +static int haswell_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dpll = 0, fp = 0, fp2 = 0; + bool ok, has_reduced_clock = false; + bool is_lvds = false, is_dp = false, is_cpu_edp = false; + struct intel_encoder *encoder; + u32 temp; + int ret; + bool dither; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + if (is_cpu_edp) + intel_crtc->cpu_transcoder = TRANSCODER_EDP; + else + intel_crtc->cpu_transcoder = pipe; + + /* We are not sure yet this won't happen. */ + WARN(!HAS_PCH_LPT(dev), "Unexpected PCH type %d\n", + INTEL_PCH_TYPE(dev)); + + WARN(num_connectors != 1, "%d connectors attached to pipe %c\n", + num_connectors, pipe_name(pipe)); + + WARN_ON(I915_READ(PIPECONF(intel_crtc->cpu_transcoder)) & + (PIPECONF_ENABLE | I965_PIPECONF_ACTIVE)); + + WARN_ON(I915_READ(DSPCNTR(plane)) & DISPLAY_PLANE_ENABLE); + + if (!intel_ddi_pll_mode_set(crtc, adjusted_mode->clock)) + return -EINVAL; + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + ok = ironlake_compute_clocks(crtc, adjusted_mode, &clock, + &has_reduced_clock, + &reduced_clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + /* determine panel color depth */ + dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, + adjusted_mode); + if (is_lvds && dev_priv->lvds_dither) + dither = true; + + DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe); + drm_mode_debug_printmodeline(mode); + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; + if (has_reduced_clock) + fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 | + reduced_clock.m2; + + dpll = ironlake_compute_dpll(intel_crtc, adjusted_mode, &clock, + fp); + + /* CPU eDP is the only output that doesn't need a PCH PLL of its + * own on pre-Haswell/LPT generation */ + if (!is_cpu_edp) { + struct intel_pch_pll *pll; + + pll = intel_get_pch_pll(intel_crtc, dpll, fp); + if (pll == NULL) { + DRM_DEBUG_DRIVER("failed to find PLL for pipe %d\n", + pipe); + return -EINVAL; + } + } else + intel_put_pch_pll(intel_crtc); + + /* The LVDS pin pair needs to be on before the DPLLs are + * enabled. This is an exception to the general rule that + * mode_set doesn't turn things on. + */ + if (is_lvds) { + temp = I915_READ(PCH_LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (HAS_PCH_CPT(dev)) { + temp &= ~PORT_TRANS_SEL_MASK; + temp |= PORT_TRANS_SEL_CPT(pipe); + } else { + if (pipe == 1) + temp |= LVDS_PIPEB_SELECT; + else + temp &= ~LVDS_PIPEB_SELECT; + } + + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether + * we're going to set the DPLLs for dual-channel mode or + * not. + */ + if (clock.p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | + LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode + * (LVDS_A3_POWER_UP) appropriately here, but we need to + * look more thoroughly into how panels behave in the + * two modes. + */ + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(PCH_LVDS, temp); + } + } + + if (is_dp && !is_cpu_edp) { + intel_dp_set_m_n(crtc, mode, adjusted_mode); + } else { + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + /* For non-DP output, clear any trans DP clock recovery + * setting.*/ + I915_WRITE(TRANSDATA_M1(pipe), 0); + I915_WRITE(TRANSDATA_N1(pipe), 0); + I915_WRITE(TRANSDPLINK_M1(pipe), 0); + I915_WRITE(TRANSDPLINK_N1(pipe), 0); + } + } + + intel_crtc->lowfreq_avail = false; + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + if (intel_crtc->pch_pll) { + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(intel_crtc->pch_pll->pll_reg); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + } + + if (intel_crtc->pch_pll) { + if (is_lvds && has_reduced_clock && i915_powersave) { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp); + } + } + } + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + if (!is_dp || is_cpu_edp) + ironlake_set_m_n(crtc, mode, adjusted_mode); + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) + if (is_cpu_edp) + ironlake_set_pll_edp(crtc, adjusted_mode->clock); + + haswell_set_pipeconf(crtc, adjusted_mode, dither); + + /* Set up the display plane register */ + I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + intel_update_linetime_watermarks(dev, pipe, adjusted_mode); + + return ret; +} + +static int intel_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_encoder_helper_funcs *encoder_funcs; + struct intel_encoder *encoder; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int ret; + + drm_vblank_pre_modeset(dev, pipe); + + ret = dev_priv->display.crtc_mode_set(crtc, mode, adjusted_mode, + x, y, fb); + drm_vblank_post_modeset(dev, pipe); + + if (ret != 0) + return ret; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%d:%s]\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base), + mode->base.id, mode->name); + encoder_funcs = encoder->base.helper_private; + encoder_funcs->mode_set(&encoder->base, mode, adjusted_mode); + } + + return 0; +} + +static bool intel_eld_uptodate(struct drm_connector *connector, + int reg_eldv, uint32_t bits_eldv, + int reg_elda, uint32_t bits_elda, + int reg_edid) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t i; + + i = I915_READ(reg_eldv); + i &= bits_eldv; + + if (!eld[0]) + return !i; + + if (!i) + return false; + + i = I915_READ(reg_elda); + i &= ~bits_elda; + I915_WRITE(reg_elda, i); + + for (i = 0; i < eld[2]; i++) + if (I915_READ(reg_edid) != *((uint32_t *)eld + i)) + return false; + + return true; +} + +static void g4x_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t eldv; + uint32_t len; + uint32_t i; + + i = I915_READ(G4X_AUD_VID_DID); + + if (i == INTEL_AUDIO_DEVBLC || i == INTEL_AUDIO_DEVCL) + eldv = G4X_ELDV_DEVCL_DEVBLC; + else + eldv = G4X_ELDV_DEVCTG; + + if (intel_eld_uptodate(connector, + G4X_AUD_CNTL_ST, eldv, + G4X_AUD_CNTL_ST, G4X_ELD_ADDR, + G4X_HDMIW_HDMIEDID)) + return; + + i = I915_READ(G4X_AUD_CNTL_ST); + i &= ~(eldv | G4X_ELD_ADDR); + len = (i >> 9) & 0x1f; /* ELD buffer size */ + I915_WRITE(G4X_AUD_CNTL_ST, i); + + if (!eld[0]) + return; + + len = min_t(uint8_t, eld[2], len); + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(G4X_HDMIW_HDMIEDID, *((uint32_t *)eld + i)); + + i = I915_READ(G4X_AUD_CNTL_ST); + i |= eldv; + I915_WRITE(G4X_AUD_CNTL_ST, i); +} + +static void haswell_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + struct drm_device *dev = crtc->dev; + uint32_t eldv; + uint32_t i; + int len; + int pipe = to_intel_crtc(crtc)->pipe; + int tmp; + + int hdmiw_hdmiedid = HSW_AUD_EDID_DATA(pipe); + int aud_cntl_st = HSW_AUD_DIP_ELD_CTRL(pipe); + int aud_config = HSW_AUD_CFG(pipe); + int aud_cntrl_st2 = HSW_AUD_PIN_ELD_CP_VLD; + + + DRM_DEBUG_DRIVER("HDMI: Haswell Audio initialize....\n"); + + /* Audio output enable */ + DRM_DEBUG_DRIVER("HDMI audio: enable codec\n"); + tmp = I915_READ(aud_cntrl_st2); + tmp |= (AUDIO_OUTPUT_ENABLE_A << (pipe * 4)); + I915_WRITE(aud_cntrl_st2, tmp); + + /* Wait for 1 vertical blank */ + intel_wait_for_vblank(dev, pipe); + + /* Set ELD valid state */ + tmp = I915_READ(aud_cntrl_st2); + DRM_DEBUG_DRIVER("HDMI audio: pin eld vld status=0x%8x\n", tmp); + tmp |= (AUDIO_ELD_VALID_A << (pipe * 4)); + I915_WRITE(aud_cntrl_st2, tmp); + tmp = I915_READ(aud_cntrl_st2); + DRM_DEBUG_DRIVER("HDMI audio: eld vld status=0x%8x\n", tmp); + + /* Enable HDMI mode */ + tmp = I915_READ(aud_config); + DRM_DEBUG_DRIVER("HDMI audio: audio conf: 0x%8x\n", tmp); + /* clear N_programing_enable and N_value_index */ + tmp &= ~(AUD_CONFIG_N_VALUE_INDEX | AUD_CONFIG_N_PROG_ENABLE); + I915_WRITE(aud_config, tmp); + + DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(pipe)); + + eldv = AUDIO_ELD_VALID_A << (pipe * 4); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + DRM_DEBUG_DRIVER("ELD: DisplayPort detected\n"); + eld[5] |= (1 << 2); /* Conn_Type, 0x1 = DisplayPort */ + I915_WRITE(aud_config, AUD_CONFIG_N_VALUE_INDEX); /* 0x1 = DP */ + } else + I915_WRITE(aud_config, 0); + + if (intel_eld_uptodate(connector, + aud_cntrl_st2, eldv, + aud_cntl_st, IBX_ELD_ADDRESS, + hdmiw_hdmiedid)) + return; + + i = I915_READ(aud_cntrl_st2); + i &= ~eldv; + I915_WRITE(aud_cntrl_st2, i); + + if (!eld[0]) + return; + + i = I915_READ(aud_cntl_st); + i &= ~IBX_ELD_ADDRESS; + I915_WRITE(aud_cntl_st, i); + i = (i >> 29) & DIP_PORT_SEL_MASK; /* DIP_Port_Select, 0x1 = PortB */ + DRM_DEBUG_DRIVER("port num:%d\n", i); + + len = min_t(uint8_t, eld[2], 21); /* 84 bytes of hw ELD buffer */ + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i)); + + i = I915_READ(aud_cntrl_st2); + i |= eldv; + I915_WRITE(aud_cntrl_st2, i); + +} + +static void ironlake_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t eldv; + uint32_t i; + int len; + int hdmiw_hdmiedid; + int aud_config; + int aud_cntl_st; + int aud_cntrl_st2; + int pipe = to_intel_crtc(crtc)->pipe; + + if (HAS_PCH_IBX(connector->dev)) { + hdmiw_hdmiedid = IBX_HDMIW_HDMIEDID(pipe); + aud_config = IBX_AUD_CFG(pipe); + aud_cntl_st = IBX_AUD_CNTL_ST(pipe); + aud_cntrl_st2 = IBX_AUD_CNTL_ST2; + } else { + hdmiw_hdmiedid = CPT_HDMIW_HDMIEDID(pipe); + aud_config = CPT_AUD_CFG(pipe); + aud_cntl_st = CPT_AUD_CNTL_ST(pipe); + aud_cntrl_st2 = CPT_AUD_CNTRL_ST2; + } + + DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(pipe)); + + i = I915_READ(aud_cntl_st); + i = (i >> 29) & DIP_PORT_SEL_MASK; /* DIP_Port_Select, 0x1 = PortB */ + if (!i) { + DRM_DEBUG_DRIVER("Audio directed to unknown port\n"); + /* operate blindly on all ports */ + eldv = IBX_ELD_VALIDB; + eldv |= IBX_ELD_VALIDB << 4; + eldv |= IBX_ELD_VALIDB << 8; + } else { + DRM_DEBUG_DRIVER("ELD on port %c\n", 'A' + i); + eldv = IBX_ELD_VALIDB << ((i - 1) * 4); + } + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + DRM_DEBUG_DRIVER("ELD: DisplayPort detected\n"); + eld[5] |= (1 << 2); /* Conn_Type, 0x1 = DisplayPort */ + I915_WRITE(aud_config, AUD_CONFIG_N_VALUE_INDEX); /* 0x1 = DP */ + } else + I915_WRITE(aud_config, 0); + + if (intel_eld_uptodate(connector, + aud_cntrl_st2, eldv, + aud_cntl_st, IBX_ELD_ADDRESS, + hdmiw_hdmiedid)) + return; + + i = I915_READ(aud_cntrl_st2); + i &= ~eldv; + I915_WRITE(aud_cntrl_st2, i); + + if (!eld[0]) + return; + + i = I915_READ(aud_cntl_st); + i &= ~IBX_ELD_ADDRESS; + I915_WRITE(aud_cntl_st, i); + + len = min_t(uint8_t, eld[2], 21); /* 84 bytes of hw ELD buffer */ + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i)); + + i = I915_READ(aud_cntrl_st2); + i |= eldv; + I915_WRITE(aud_cntrl_st2, i); +} + +void intel_write_eld(struct drm_encoder *encoder, + struct drm_display_mode *mode) +{ + struct drm_crtc *crtc = encoder->crtc; + struct drm_connector *connector; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + connector = drm_select_eld(encoder, mode); + if (!connector) + return; + + DRM_DEBUG_DRIVER("ELD on [CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, + drm_get_connector_name(connector), + connector->encoder->base.id, + drm_get_encoder_name(connector->encoder)); + + connector->eld[6] = drm_av_sync_delay(connector, mode) / 2; + + if (dev_priv->display.write_eld) + dev_priv->display.write_eld(connector, crtc); +} + +/** Loads the palette/gamma unit for the CRTC with the prepared values */ +void intel_crtc_load_lut(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int palreg = PALETTE(intel_crtc->pipe); + int i; + + /* The clocks have to be on to load the palette. */ + if (!crtc->enabled || !intel_crtc->active) + return; + + /* use legacy palette for Ironlake */ + if (HAS_PCH_SPLIT(dev)) + palreg = LGC_PALETTE(intel_crtc->pipe); + + for (i = 0; i < 256; i++) { + I915_WRITE(palreg + 4 * i, + (intel_crtc->lut_r[i] << 16) | + (intel_crtc->lut_g[i] << 8) | + intel_crtc->lut_b[i]); + } +} + +static void i845_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + bool visible = base != 0; + u32 cntl; + + if (intel_crtc->cursor_visible == visible) + return; + + cntl = I915_READ(_CURACNTR); + if (visible) { + /* On these chipsets we can only modify the base whilst + * the cursor is disabled. + */ + I915_WRITE(_CURABASE, base); + + cntl &= ~(CURSOR_FORMAT_MASK); + /* XXX width must be 64, stride 256 => 0x00 << 28 */ + cntl |= CURSOR_ENABLE | + CURSOR_GAMMA_ENABLE | + CURSOR_FORMAT_ARGB; + } else + cntl &= ~(CURSOR_ENABLE | CURSOR_GAMMA_ENABLE); + I915_WRITE(_CURACNTR, cntl); + + intel_crtc->cursor_visible = visible; +} + +static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + bool visible = base != 0; + + if (intel_crtc->cursor_visible != visible) { + uint32_t cntl = I915_READ(CURCNTR(pipe)); + if (base) { + cntl &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT); + cntl |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; + cntl |= pipe << 28; /* Connect to correct pipe */ + } else { + cntl &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE); + cntl |= CURSOR_MODE_DISABLE; + } + I915_WRITE(CURCNTR(pipe), cntl); + + intel_crtc->cursor_visible = visible; + } + /* and commit changes on next vblank */ + I915_WRITE(CURBASE(pipe), base); +} + +static void ivb_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + bool visible = base != 0; + + if (intel_crtc->cursor_visible != visible) { + uint32_t cntl = I915_READ(CURCNTR_IVB(pipe)); + if (base) { + cntl &= ~CURSOR_MODE; + cntl |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; + } else { + cntl &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE); + cntl |= CURSOR_MODE_DISABLE; + } + I915_WRITE(CURCNTR_IVB(pipe), cntl); + + intel_crtc->cursor_visible = visible; + } + /* and commit changes on next vblank */ + I915_WRITE(CURBASE_IVB(pipe), base); +} + +/* If no-part of the cursor is visible on the framebuffer, then the GPU may hang... */ +static void intel_crtc_update_cursor(struct drm_crtc *crtc, + bool on) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int x = intel_crtc->cursor_x; + int y = intel_crtc->cursor_y; + u32 base, pos; + bool visible; + + pos = 0; + + if (on && crtc->enabled && crtc->fb) { + base = intel_crtc->cursor_addr; + if (x > (int) crtc->fb->width) + base = 0; + + if (y > (int) crtc->fb->height) + base = 0; + } else + base = 0; + + if (x < 0) { + if (x + intel_crtc->cursor_width < 0) + base = 0; + + pos |= CURSOR_POS_SIGN << CURSOR_X_SHIFT; + x = -x; + } + pos |= x << CURSOR_X_SHIFT; + + if (y < 0) { + if (y + intel_crtc->cursor_height < 0) + base = 0; + + pos |= CURSOR_POS_SIGN << CURSOR_Y_SHIFT; + y = -y; + } + pos |= y << CURSOR_Y_SHIFT; + + visible = base != 0; + if (!visible && !intel_crtc->cursor_visible) + return; + + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { + I915_WRITE(CURPOS_IVB(pipe), pos); + ivb_update_cursor(crtc, base); + } else { + I915_WRITE(CURPOS(pipe), pos); + if (IS_845G(dev) || IS_I865G(dev)) + i845_update_cursor(crtc, base); + else + i9xx_update_cursor(crtc, base); + } +} + +static int intel_crtc_cursor_set(struct drm_crtc *crtc, + struct drm_file *file, + uint32_t handle, + uint32_t width, uint32_t height) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_gem_object *obj; + uint32_t addr; + int ret; + + /* if we want to turn off the cursor ignore width and height */ + if (!handle) { + DRM_DEBUG_KMS("cursor off\n"); + addr = 0; + obj = NULL; + mutex_lock(&dev->struct_mutex); + goto finish; + } + + /* Currently we only support 64x64 cursors */ + if (width != 64 || height != 64) { + DRM_ERROR("we currently only support 64x64 cursors\n"); + return -EINVAL; + } + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle)); + if (&obj->base == NULL) + return -ENOENT; + + if (obj->base.size < width * height * 4) { + DRM_ERROR("buffer is to small\n"); + ret = -ENOMEM; + goto fail; + } + + /* we only need to pin inside GTT if cursor is non-phy */ + mutex_lock(&dev->struct_mutex); + if (!dev_priv->info->cursor_needs_physical) { + if (obj->tiling_mode) { + DRM_ERROR("cursor cannot be tiled\n"); + ret = -EINVAL; + goto fail_locked; + } + + ret = i915_gem_object_pin_to_display_plane(obj, 0, NULL); + if (ret) { + DRM_ERROR("failed to move cursor bo into the GTT\n"); + goto fail_locked; + } + + ret = i915_gem_object_put_fence(obj); + if (ret) { + DRM_ERROR("failed to release fence for cursor"); + goto fail_unpin; + } + + addr = obj->gtt_offset; + } else { + int align = IS_I830(dev) ? 16 * 1024 : 256; + ret = i915_gem_attach_phys_object(dev, obj, + (intel_crtc->pipe == 0) ? I915_GEM_PHYS_CURSOR_0 : I915_GEM_PHYS_CURSOR_1, + align); + if (ret) { + DRM_ERROR("failed to attach phys object\n"); + goto fail_locked; + } + addr = obj->phys_obj->handle->busaddr; + } + + if (IS_GEN2(dev)) + I915_WRITE(CURSIZE, (height << 12) | width); + + finish: + if (intel_crtc->cursor_bo) { + if (dev_priv->info->cursor_needs_physical) { + if (intel_crtc->cursor_bo != obj) + i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo); + } else + i915_gem_object_unpin(intel_crtc->cursor_bo); + drm_gem_object_unreference(&intel_crtc->cursor_bo->base); + } + + mutex_unlock(&dev->struct_mutex); + + intel_crtc->cursor_addr = addr; + intel_crtc->cursor_bo = obj; + intel_crtc->cursor_width = width; + intel_crtc->cursor_height = height; + + intel_crtc_update_cursor(crtc, true); + + return 0; +fail_unpin: + i915_gem_object_unpin(obj); +fail_locked: + mutex_unlock(&dev->struct_mutex); +fail: + drm_gem_object_unreference_unlocked(&obj->base); + return ret; +} + +static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + intel_crtc->cursor_x = x; + intel_crtc->cursor_y = y; + + intel_crtc_update_cursor(crtc, true); + + return 0; +} + +/** Sets the color ramps on behalf of RandR */ +void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, + u16 blue, int regno) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + intel_crtc->lut_r[regno] = red >> 8; + intel_crtc->lut_g[regno] = green >> 8; + intel_crtc->lut_b[regno] = blue >> 8; +} + +void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, int regno) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + *red = intel_crtc->lut_r[regno] << 8; + *green = intel_crtc->lut_g[regno] << 8; + *blue = intel_crtc->lut_b[regno] << 8; +} + +static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, uint32_t start, uint32_t size) +{ + int end = (start + size > 256) ? 256 : start + size, i; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + for (i = start; i < end; i++) { + intel_crtc->lut_r[i] = red[i] >> 8; + intel_crtc->lut_g[i] = green[i] >> 8; + intel_crtc->lut_b[i] = blue[i] >> 8; + } + + intel_crtc_load_lut(crtc); +} + +/** + * Get a pipe with a simple mode set on it for doing load-based monitor + * detection. + * + * It will be up to the load-detect code to adjust the pipe as appropriate for + * its requirements. The pipe will be connected to no other encoders. + * + * Currently this code will only succeed if there is a pipe with no encoders + * configured for it. In the future, it could choose to temporarily disable + * some outputs to free up a pipe for its use. + * + * \return crtc, or NULL if no pipes are available. + */ + +/* VESA 640x480x72Hz mode to set on the pipe */ +static struct drm_display_mode load_detect_mode = { + DRM_MODE("640x480", DRM_MODE_TYPE_DEFAULT, 31500, 640, 664, + 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), +}; + +static struct drm_framebuffer * +intel_framebuffer_create(struct drm_device *dev, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj) +{ + struct intel_framebuffer *intel_fb; + int ret; + + intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); + if (!intel_fb) { + drm_gem_object_unreference_unlocked(&obj->base); + return ERR_PTR(-ENOMEM); + } + + ret = intel_framebuffer_init(dev, intel_fb, mode_cmd, obj); + if (ret) { + drm_gem_object_unreference_unlocked(&obj->base); + kfree(intel_fb); + return ERR_PTR(ret); + } + + return &intel_fb->base; +} + +static u32 +intel_framebuffer_pitch_for_width(int width, int bpp) +{ + u32 pitch = DIV_ROUND_UP(width * bpp, 8); + return ALIGN(pitch, 64); +} + +static u32 +intel_framebuffer_size_for_mode(struct drm_display_mode *mode, int bpp) +{ + u32 pitch = intel_framebuffer_pitch_for_width(mode->hdisplay, bpp); + return ALIGN(pitch * mode->vdisplay, PAGE_SIZE); +} + +static struct drm_framebuffer * +intel_framebuffer_create_for_mode(struct drm_device *dev, + struct drm_display_mode *mode, + int depth, int bpp) +{ + struct drm_i915_gem_object *obj; + struct drm_mode_fb_cmd2 mode_cmd = { 0 }; + + obj = i915_gem_alloc_object(dev, + intel_framebuffer_size_for_mode(mode, bpp)); + if (obj == NULL) + return ERR_PTR(-ENOMEM); + + mode_cmd.width = mode->hdisplay; + mode_cmd.height = mode->vdisplay; + mode_cmd.pitches[0] = intel_framebuffer_pitch_for_width(mode_cmd.width, + bpp); + mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth); + + return intel_framebuffer_create(dev, &mode_cmd, obj); +} + +static struct drm_framebuffer * +mode_fits_in_fbdev(struct drm_device *dev, + struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct drm_framebuffer *fb; + + if (dev_priv->fbdev == NULL) + return NULL; + + obj = dev_priv->fbdev->ifb.obj; + if (obj == NULL) + return NULL; + + fb = &dev_priv->fbdev->ifb.base; + if (fb->pitches[0] < intel_framebuffer_pitch_for_width(mode->hdisplay, + fb->bits_per_pixel)) + return NULL; + + if (obj->base.size < mode->vdisplay * fb->pitches[0]) + return NULL; + + return fb; +} + +bool intel_get_load_detect_pipe(struct drm_connector *connector, + struct drm_display_mode *mode, + struct intel_load_detect_pipe *old) +{ + struct intel_crtc *intel_crtc; + struct intel_encoder *intel_encoder = + intel_attached_encoder(connector); + struct drm_crtc *possible_crtc; + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = NULL; + struct drm_device *dev = encoder->dev; + struct drm_framebuffer *fb; + int i = -1; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, drm_get_connector_name(connector), + encoder->base.id, drm_get_encoder_name(encoder)); + + /* + * Algorithm gets a little messy: + * + * - if the connector already has an assigned crtc, use it (but make + * sure it's on first) + * + * - try to find the first unused crtc that can drive this connector, + * and use that if we find one + */ + + /* See if we already have a CRTC for this connector */ + if (encoder->crtc) { + crtc = encoder->crtc; + + old->dpms_mode = connector->dpms; + old->load_detect_temp = false; + + /* Make sure the crtc and connector are running */ + if (connector->dpms != DRM_MODE_DPMS_ON) + connector->funcs->dpms(connector, DRM_MODE_DPMS_ON); + + return true; + } + + /* Find an unused one (if possible) */ + list_for_each_entry(possible_crtc, &dev->mode_config.crtc_list, head) { + i++; + if (!(encoder->possible_crtcs & (1 << i))) + continue; + if (!possible_crtc->enabled) { + crtc = possible_crtc; + break; + } + } + + /* + * If we didn't find an unused CRTC, don't use any. + */ + if (!crtc) { + DRM_DEBUG_KMS("no pipe available for load-detect\n"); + return false; + } + + intel_encoder->new_crtc = to_intel_crtc(crtc); + to_intel_connector(connector)->new_encoder = intel_encoder; + + intel_crtc = to_intel_crtc(crtc); + old->dpms_mode = connector->dpms; + old->load_detect_temp = true; + old->release_fb = NULL; + + if (!mode) + mode = &load_detect_mode; + + /* We need a framebuffer large enough to accommodate all accesses + * that the plane may generate whilst we perform load detection. + * We can not rely on the fbcon either being present (we get called + * during its initialisation to detect all boot displays, or it may + * not even exist) or that it is large enough to satisfy the + * requested mode. + */ + fb = mode_fits_in_fbdev(dev, mode); + if (fb == NULL) { + DRM_DEBUG_KMS("creating tmp fb for load-detection\n"); + fb = intel_framebuffer_create_for_mode(dev, mode, 24, 32); + old->release_fb = fb; + } else + DRM_DEBUG_KMS("reusing fbdev for load-detection framebuffer\n"); + if (IS_ERR(fb)) { + DRM_DEBUG_KMS("failed to allocate framebuffer for load-detection\n"); + return false; + } + + if (!intel_set_mode(crtc, mode, 0, 0, fb)) { + DRM_DEBUG_KMS("failed to set mode on load-detect pipe\n"); + if (old->release_fb) + old->release_fb->funcs->destroy(old->release_fb); + return false; + } + + /* let the connector get through one full cycle before testing */ + intel_wait_for_vblank(dev, intel_crtc->pipe); + return true; +} + +void intel_release_load_detect_pipe(struct drm_connector *connector, + struct intel_load_detect_pipe *old) +{ + struct intel_encoder *intel_encoder = + intel_attached_encoder(connector); + struct drm_encoder *encoder = &intel_encoder->base; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, drm_get_connector_name(connector), + encoder->base.id, drm_get_encoder_name(encoder)); + + if (old->load_detect_temp) { + struct drm_crtc *crtc = encoder->crtc; + + to_intel_connector(connector)->new_encoder = NULL; + intel_encoder->new_crtc = NULL; + intel_set_mode(crtc, NULL, 0, 0, NULL); + + if (old->release_fb) + old->release_fb->funcs->destroy(old->release_fb); + + return; + } + + /* Switch crtc and encoder back off if necessary */ + if (old->dpms_mode != DRM_MODE_DPMS_ON) + connector->funcs->dpms(connector, old->dpms_mode); +} + +/* Returns the clock of the currently programmed mode of the given pipe. */ +static int intel_crtc_clock_get(struct drm_device *dev, struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll = I915_READ(DPLL(pipe)); + u32 fp; + intel_clock_t clock; + + if ((dpll & DISPLAY_RATE_SELECT_FPA1) == 0) + fp = I915_READ(FP0(pipe)); + else + fp = I915_READ(FP1(pipe)); + + clock.m1 = (fp & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT; + if (IS_PINEVIEW(dev)) { + clock.n = ffs((fp & FP_N_PINEVIEW_DIV_MASK) >> FP_N_DIV_SHIFT) - 1; + clock.m2 = (fp & FP_M2_PINEVIEW_DIV_MASK) >> FP_M2_DIV_SHIFT; + } else { + clock.n = (fp & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT; + clock.m2 = (fp & FP_M2_DIV_MASK) >> FP_M2_DIV_SHIFT; + } + + if (!IS_GEN2(dev)) { + if (IS_PINEVIEW(dev)) + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW) >> + DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW); + else + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); + + switch (dpll & DPLL_MODE_MASK) { + case DPLLB_MODE_DAC_SERIAL: + clock.p2 = dpll & DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 ? + 5 : 10; + break; + case DPLLB_MODE_LVDS: + clock.p2 = dpll & DPLLB_LVDS_P2_CLOCK_DIV_7 ? + 7 : 14; + break; + default: + DRM_DEBUG_KMS("Unknown DPLL mode %08x in programmed " + "mode\n", (int)(dpll & DPLL_MODE_MASK)); + return 0; + } + + /* XXX: Handle the 100Mhz refclk */ + intel_clock(dev, 96000, &clock); + } else { + bool is_lvds = (pipe == 1) && (I915_READ(LVDS) & LVDS_PORT_EN); + + if (is_lvds) { + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); + clock.p2 = 14; + + if ((dpll & PLL_REF_INPUT_MASK) == + PLLB_REF_INPUT_SPREADSPECTRUMIN) { + /* XXX: might not be 66MHz */ + intel_clock(dev, 66000, &clock); + } else + intel_clock(dev, 48000, &clock); + } else { + if (dpll & PLL_P1_DIVIDE_BY_TWO) + clock.p1 = 2; + else { + clock.p1 = ((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830) >> + DPLL_FPA01_P1_POST_DIV_SHIFT) + 2; + } + if (dpll & PLL_P2_DIVIDE_BY_4) + clock.p2 = 4; + else + clock.p2 = 2; + + intel_clock(dev, 48000, &clock); + } + } + + /* XXX: It would be nice to validate the clocks, but we can't reuse + * i830PllIsValid() because it relies on the xf86_config connector + * configuration being accurate, which it isn't necessarily. + */ + + return clock.dot; +} + +/** Returns the currently programmed mode of the given pipe. */ +struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + struct drm_display_mode *mode; + int htot = I915_READ(HTOTAL(cpu_transcoder)); + int hsync = I915_READ(HSYNC(cpu_transcoder)); + int vtot = I915_READ(VTOTAL(cpu_transcoder)); + int vsync = I915_READ(VSYNC(cpu_transcoder)); + + mode = kzalloc(sizeof(*mode), GFP_KERNEL); + if (!mode) + return NULL; + + mode->clock = intel_crtc_clock_get(dev, crtc); + mode->hdisplay = (htot & 0xffff) + 1; + mode->htotal = ((htot & 0xffff0000) >> 16) + 1; + mode->hsync_start = (hsync & 0xffff) + 1; + mode->hsync_end = ((hsync & 0xffff0000) >> 16) + 1; + mode->vdisplay = (vtot & 0xffff) + 1; + mode->vtotal = ((vtot & 0xffff0000) >> 16) + 1; + mode->vsync_start = (vsync & 0xffff) + 1; + mode->vsync_end = ((vsync & 0xffff0000) >> 16) + 1; + + drm_mode_set_name(mode); + + return mode; +} + +static void intel_increase_pllclock(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int dpll_reg = DPLL(pipe); + int dpll; + + if (HAS_PCH_SPLIT(dev)) + return; + + if (!dev_priv->lvds_downclock_avail) + return; + + dpll = I915_READ(dpll_reg); + if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) { + DRM_DEBUG_DRIVER("upclocking LVDS\n"); + + assert_panel_unlocked(dev_priv, pipe); + + dpll &= ~DISPLAY_RATE_SELECT_FPA1; + I915_WRITE(dpll_reg, dpll); + intel_wait_for_vblank(dev, pipe); + + dpll = I915_READ(dpll_reg); + if (dpll & DISPLAY_RATE_SELECT_FPA1) + DRM_DEBUG_DRIVER("failed to upclock LVDS!\n"); + } +} + +static void intel_decrease_pllclock(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + if (HAS_PCH_SPLIT(dev)) + return; + + if (!dev_priv->lvds_downclock_avail) + return; + + /* + * Since this is called by a timer, we should never get here in + * the manual case. + */ + if (!HAS_PIPE_CXSR(dev) && intel_crtc->lowfreq_avail) { + int pipe = intel_crtc->pipe; + int dpll_reg = DPLL(pipe); + int dpll; + + DRM_DEBUG_DRIVER("downclocking LVDS\n"); + + assert_panel_unlocked(dev_priv, pipe); + + dpll = I915_READ(dpll_reg); + dpll |= DISPLAY_RATE_SELECT_FPA1; + I915_WRITE(dpll_reg, dpll); + intel_wait_for_vblank(dev, pipe); + dpll = I915_READ(dpll_reg); + if (!(dpll & DISPLAY_RATE_SELECT_FPA1)) + DRM_DEBUG_DRIVER("failed to downclock LVDS!\n"); + } + +} + +void intel_mark_busy(struct drm_device *dev) +{ + i915_update_gfx_val(dev->dev_private); +} + +void intel_mark_idle(struct drm_device *dev) +{ + struct drm_crtc *crtc; + + if (!i915_powersave) + return; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (!crtc->fb) + continue; + + intel_decrease_pllclock(crtc); + } +} + +void intel_mark_fb_busy(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_crtc *crtc; + + if (!i915_powersave) + return; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (!crtc->fb) + continue; + + if (to_intel_framebuffer(crtc->fb)->obj == obj) + intel_increase_pllclock(crtc); + } +} + +static void intel_crtc_destroy(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_device *dev = crtc->dev; + struct intel_unpin_work *work; + unsigned long flags; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + intel_crtc->unpin_work = NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (work) { + cancel_work_sync(&work->work); + kfree(work); + } + + drm_crtc_cleanup(crtc); + + kfree(intel_crtc); +} + +static void intel_unpin_work_fn(struct work_struct *__work) +{ + struct intel_unpin_work *work = + container_of(__work, struct intel_unpin_work, work); + struct drm_device *dev = work->crtc->dev; + + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(work->old_fb_obj); + drm_gem_object_unreference(&work->pending_flip_obj->base); + drm_gem_object_unreference(&work->old_fb_obj->base); + + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + BUG_ON(atomic_read(&to_intel_crtc(work->crtc)->unpin_work_count) == 0); + atomic_dec(&to_intel_crtc(work->crtc)->unpin_work_count); + + kfree(work); +} + +static void do_intel_finish_page_flip(struct drm_device *dev, + struct drm_crtc *crtc) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_unpin_work *work; + struct drm_i915_gem_object *obj; + struct drm_pending_vblank_event *e; + struct timeval tvbl; + unsigned long flags; + + /* Ignore early vblank irqs */ + if (intel_crtc == NULL) + return; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + + /* Ensure we don't miss a work->pending update ... */ + smp_rmb(); + + if (work == NULL || atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { + spin_unlock_irqrestore(&dev->event_lock, flags); + return; + } + + /* and that the unpin work is consistent wrt ->pending. */ + smp_rmb(); + + intel_crtc->unpin_work = NULL; + + if (work->event) { + e = work->event; + e->event.sequence = drm_vblank_count_and_time(dev, intel_crtc->pipe, &tvbl); + + e->event.tv_sec = tvbl.tv_sec; + e->event.tv_usec = tvbl.tv_usec; + + list_add_tail(&e->base.link, + &e->base.file_priv->event_list); + wake_up_interruptible(&e->base.file_priv->event_wait); + } + + drm_vblank_put(dev, intel_crtc->pipe); + + spin_unlock_irqrestore(&dev->event_lock, flags); + + obj = work->old_fb_obj; + + atomic_clear_mask(1 << intel_crtc->plane, + &obj->pending_flip.counter); + wake_up(&dev_priv->pending_flip_queue); + + queue_work(dev_priv->wq, &work->work); + + trace_i915_flip_complete(intel_crtc->plane, work->pending_flip_obj); +} + +void intel_finish_page_flip(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + + do_intel_finish_page_flip(dev, crtc); +} + +void intel_finish_page_flip_plane(struct drm_device *dev, int plane) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->plane_to_crtc_mapping[plane]; + + do_intel_finish_page_flip(dev, crtc); +} + +void intel_prepare_page_flip(struct drm_device *dev, int plane) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = + to_intel_crtc(dev_priv->plane_to_crtc_mapping[plane]); + unsigned long flags; + + /* NB: An MMIO update of the plane base pointer will also + * generate a page-flip completion irq, i.e. every modeset + * is also accompanied by a spurious intel_prepare_page_flip(). + */ + spin_lock_irqsave(&dev->event_lock, flags); + if (intel_crtc->unpin_work) + atomic_inc_not_zero(&intel_crtc->unpin_work->pending); + spin_unlock_irqrestore(&dev->event_lock, flags); +} + +inline static void intel_mark_page_flip_active(struct intel_crtc *intel_crtc) +{ + /* Ensure that the work item is consistent when activating it ... */ + smp_wmb(); + atomic_set(&intel_crtc->unpin_work->pending, INTEL_FLIP_PENDING); + /* and that it is marked active as soon as the irq could fire. */ + smp_wmb(); +} + +static int intel_gen2_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 flip_mask; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 6); + if (ret) + goto err_unpin; + + /* Can't queue multiple flips, so wait for the previous + * one to finish before executing the next. + */ + if (intel_crtc->plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, 0); /* aux display base address, unused */ + + intel_mark_page_flip_active(intel_crtc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen3_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 flip_mask; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 6); + if (ret) + goto err_unpin; + + if (intel_crtc->plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, MI_NOOP); + + intel_mark_page_flip_active(intel_crtc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen4_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + uint32_t pf, pipesrc; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + /* i965+ uses the linear or tiled offsets from the + * Display Registers (which do not change across a page-flip) + * so we need only reprogram the base address. + */ + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, + (obj->gtt_offset + intel_crtc->dspaddr_offset) | + obj->tiling_mode); + + /* XXX Enabling the panel-fitter across page-flip is so far + * untested on non-native modes, so ignore it for now. + * pf = I915_READ(pipe == 0 ? PFA_CTL_1 : PFB_CTL_1) & PF_ENABLE; + */ + pf = 0; + pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; + intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen6_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + uint32_t pf, pipesrc; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0] | obj->tiling_mode); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + + /* Contrary to the suggestions in the documentation, + * "Enable Panel Fitter" does not seem to be required when page + * flipping with a non-native mode, and worse causes a normal + * modeset to fail. + * pf = I915_READ(PF_CTL(intel_crtc->pipe)) & PF_ENABLE; + */ + pf = 0; + pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; + intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +/* + * On gen7 we currently use the blit ring because (in early silicon at least) + * the render ring doesn't give us interrpts for page flip completion, which + * means clients will hang after the first flip is queued. Fortunately the + * blit ring generates interrupts properly, so use it instead. + */ +static int intel_gen7_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; + uint32_t plane_bit = 0; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + switch(intel_crtc->plane) { + case PLANE_A: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_A; + break; + case PLANE_B: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_B; + break; + case PLANE_C: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_C; + break; + default: + WARN_ONCE(1, "unknown plane in flip command\n"); + ret = -ENODEV; + goto err_unpin; + } + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); + intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, (MI_NOOP)); + + intel_mark_page_flip_active(intel_crtc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_default_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + return -ENODEV; +} + +static int intel_crtc_page_flip(struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_pending_vblank_event *event) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct 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; + int ret; + + /* Can't change pixel format via MI display flips. */ + if (fb->pixel_format != crtc->fb->pixel_format) + return -EINVAL; + + /* + * TILEOFF/LINOFF registers can't be changed via MI display flips. + * Note that pitch changes could also affect these register. + */ + if (INTEL_INFO(dev)->gen > 3 && + (fb->offsets[0] != crtc->fb->offsets[0] || + fb->pitches[0] != crtc->fb->pitches[0])) + return -EINVAL; + + work = kzalloc(sizeof *work, GFP_KERNEL); + if (work == NULL) + return -ENOMEM; + + work->event = event; + work->crtc = crtc; + 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); + if (ret) + goto free_work; + + /* We borrow the event spin lock for protecting unpin_work */ + spin_lock_irqsave(&dev->event_lock, flags); + if (intel_crtc->unpin_work) { + spin_unlock_irqrestore(&dev->event_lock, flags); + kfree(work); + drm_vblank_put(dev, intel_crtc->pipe); + + DRM_DEBUG_DRIVER("flip queue: crtc already busy\n"); + return -EBUSY; + } + intel_crtc->unpin_work = work; + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (atomic_read(&intel_crtc->unpin_work_count) >= 2) + flush_workqueue(dev_priv->wq); + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto cleanup; + + /* Reference the objects for the scheduled work. */ + drm_gem_object_reference(&work->old_fb_obj->base); + drm_gem_object_reference(&obj->base); + + crtc->fb = fb; + + work->pending_flip_obj = obj; + + work->enable_stall_check = true; + + /* Block clients from rendering to the new back buffer until + * the flip occurs and the object is no longer visible. + */ + atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_inc(&intel_crtc->unpin_work_count); + + ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); + if (ret) + goto cleanup_pending; + + intel_disable_fbc(dev); + intel_mark_fb_busy(obj); + mutex_unlock(&dev->struct_mutex); + + trace_i915_flip_request(intel_crtc->plane, obj); + + return 0; + +cleanup_pending: + atomic_dec(&intel_crtc->unpin_work_count); + 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); + mutex_unlock(&dev->struct_mutex); + +cleanup: + spin_lock_irqsave(&dev->event_lock, flags); + intel_crtc->unpin_work = NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + drm_vblank_put(dev, intel_crtc->pipe); +free_work: + kfree(work); + + return ret; +} + +static struct drm_crtc_helper_funcs intel_helper_funcs = { + .mode_set_base_atomic = intel_pipe_set_base_atomic, + .load_lut = intel_crtc_load_lut, + .disable = intel_crtc_noop, +}; + +bool intel_encoder_check_is_cloned(struct intel_encoder *encoder) +{ + struct intel_encoder *other_encoder; + struct drm_crtc *crtc = &encoder->new_crtc->base; + + if (WARN_ON(!crtc)) + return false; + + list_for_each_entry(other_encoder, + &crtc->dev->mode_config.encoder_list, + base.head) { + + if (&other_encoder->new_crtc->base != crtc || + encoder == other_encoder) + continue; + else + return true; + } + + return false; +} + +static bool intel_encoder_crtc_ok(struct drm_encoder *encoder, + struct drm_crtc *crtc) +{ + struct drm_device *dev; + struct drm_crtc *tmp; + int crtc_mask = 1; + + WARN(!crtc, "checking null crtc?\n"); + + dev = crtc->dev; + + list_for_each_entry(tmp, &dev->mode_config.crtc_list, head) { + if (tmp == crtc) + break; + crtc_mask <<= 1; + } + + if (encoder->possible_crtcs & crtc_mask) + return true; + return false; +} + +/** + * intel_modeset_update_staged_output_state + * + * Updates the staged output configuration state, e.g. after we've read out the + * current hw state. + */ +static void intel_modeset_update_staged_output_state(struct drm_device *dev) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + connector->new_encoder = + to_intel_encoder(connector->base.encoder); + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + encoder->new_crtc = + to_intel_crtc(encoder->base.crtc); + } +} + +/** + * intel_modeset_commit_output_state + * + * This function copies the stage display pipe configuration to the real one. + */ +static void intel_modeset_commit_output_state(struct drm_device *dev) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + connector->base.encoder = &connector->new_encoder->base; + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + encoder->base.crtc = &encoder->new_crtc->base; + } +} + +static struct drm_display_mode * +intel_modeset_adjusted_mode(struct drm_crtc *crtc, + struct drm_display_mode *mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_display_mode *adjusted_mode; + struct drm_encoder_helper_funcs *encoder_funcs; + struct intel_encoder *encoder; + + adjusted_mode = drm_mode_duplicate(dev, mode); + if (!adjusted_mode) + return ERR_PTR(-ENOMEM); + + /* Pass our mode to the connectors and the CRTC to give them a chance to + * adjust it according to limitations or connector properties, and also + * a chance to reject the mode entirely. + */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + + if (&encoder->new_crtc->base != crtc) + continue; + encoder_funcs = encoder->base.helper_private; + if (!(encoder_funcs->mode_fixup(&encoder->base, mode, + adjusted_mode))) { + DRM_DEBUG_KMS("Encoder fixup failed\n"); + goto fail; + } + } + + if (!(intel_crtc_mode_fixup(crtc, mode, adjusted_mode))) { + DRM_DEBUG_KMS("CRTC fixup failed\n"); + goto fail; + } + DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); + + return adjusted_mode; +fail: + drm_mode_destroy(dev, adjusted_mode); + return ERR_PTR(-EINVAL); +} + +/* Computes which crtcs are affected and sets the relevant bits in the mask. For + * simplicity we use the crtc's pipe number (because it's easier to obtain). */ +static void +intel_modeset_affected_pipes(struct drm_crtc *crtc, unsigned *modeset_pipes, + unsigned *prepare_pipes, unsigned *disable_pipes) +{ + struct intel_crtc *intel_crtc; + struct drm_device *dev = crtc->dev; + struct intel_encoder *encoder; + struct intel_connector *connector; + struct drm_crtc *tmp_crtc; + + *disable_pipes = *modeset_pipes = *prepare_pipes = 0; + + /* Check which crtcs have changed outputs connected to them, these need + * to be part of the prepare_pipes mask. We don't (yet) support global + * modeset across multiple crtcs, so modeset_pipes will only have one + * bit set at most. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->base.encoder == &connector->new_encoder->base) + continue; + + if (connector->base.encoder) { + tmp_crtc = connector->base.encoder->crtc; + + *prepare_pipes |= 1 << to_intel_crtc(tmp_crtc)->pipe; + } + + if (connector->new_encoder) + *prepare_pipes |= + 1 << connector->new_encoder->new_crtc->pipe; + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->base.crtc == &encoder->new_crtc->base) + continue; + + if (encoder->base.crtc) { + tmp_crtc = encoder->base.crtc; + + *prepare_pipes |= 1 << to_intel_crtc(tmp_crtc)->pipe; + } + + if (encoder->new_crtc) + *prepare_pipes |= 1 << encoder->new_crtc->pipe; + } + + /* Check for any pipes that will be fully disabled ... */ + list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, + base.head) { + bool used = false; + + /* Don't try to disable disabled crtcs. */ + if (!intel_crtc->base.enabled) + continue; + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->new_crtc == intel_crtc) + used = true; + } + + if (!used) + *disable_pipes |= 1 << intel_crtc->pipe; + } + + + /* set_mode is also used to update properties on life display pipes. */ + intel_crtc = to_intel_crtc(crtc); + if (crtc->enabled) + *prepare_pipes |= 1 << intel_crtc->pipe; + + /* + * 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) +{ + struct drm_encoder *encoder; + struct drm_device *dev = crtc->dev; + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) + if (encoder->crtc == crtc) + return true; + + return false; +} + +static void +intel_modeset_update_state(struct drm_device *dev, unsigned prepare_pipes) +{ + struct intel_encoder *intel_encoder; + struct intel_crtc *intel_crtc; + struct drm_connector *connector; + + list_for_each_entry(intel_encoder, &dev->mode_config.encoder_list, + base.head) { + if (!intel_encoder->base.crtc) + continue; + + intel_crtc = to_intel_crtc(intel_encoder->base.crtc); + + if (prepare_pipes & (1 << intel_crtc->pipe)) + intel_encoder->connectors_active = false; + } + + intel_modeset_commit_output_state(dev); + + /* Update computed state. */ + list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, + base.head) { + intel_crtc->base.enabled = intel_crtc_in_use(&intel_crtc->base); + } + + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + if (!connector->encoder || !connector->encoder->crtc) + continue; + + intel_crtc = to_intel_crtc(connector->encoder->crtc); + + if (prepare_pipes & (1 << intel_crtc->pipe)) { + struct drm_property *dpms_property = + dev->mode_config.dpms_property; + + connector->dpms = DRM_MODE_DPMS_ON; + drm_object_property_set_value(&connector->base, + dpms_property, + DRM_MODE_DPMS_ON); + + intel_encoder = to_intel_encoder(connector->encoder); + intel_encoder->connectors_active = true; + } + } + +} + +#define for_each_intel_crtc_masked(dev, mask, intel_crtc) \ + list_for_each_entry((intel_crtc), \ + &(dev)->mode_config.crtc_list, \ + base.head) \ + if (mask & (1 <<(intel_crtc)->pipe)) \ + +void +intel_modeset_check_state(struct drm_device *dev) +{ + struct intel_crtc *crtc; + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + /* This also checks the encoder/connector hw state with the + * ->get_hw_state callbacks. */ + intel_connector_check_state(connector); + + WARN(&connector->new_encoder->base != connector->base.encoder, + "connector's staged encoder doesn't match current encoder\n"); + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + bool enabled = false; + bool active = false; + enum pipe pipe, tracked_pipe; + + DRM_DEBUG_KMS("[ENCODER:%d:%s]\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + + WARN(&encoder->new_crtc->base != encoder->base.crtc, + "encoder's stage crtc doesn't match current crtc\n"); + WARN(encoder->connectors_active && !encoder->base.crtc, + "encoder's active_connectors set, but no crtc\n"); + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->base.encoder != &encoder->base) + continue; + enabled = true; + if (connector->base.dpms != DRM_MODE_DPMS_OFF) + active = true; + } + WARN(!!encoder->base.crtc != enabled, + "encoder's enabled state mismatch " + "(expected %i, found %i)\n", + !!encoder->base.crtc, enabled); + WARN(active && !encoder->base.crtc, + "active encoder with no crtc\n"); + + WARN(encoder->connectors_active != active, + "encoder's computed active state doesn't match tracked active state " + "(expected %i, found %i)\n", active, encoder->connectors_active); + + active = encoder->get_hw_state(encoder, &pipe); + WARN(active != encoder->connectors_active, + "encoder's hw state doesn't match sw tracking " + "(expected %i, found %i)\n", + encoder->connectors_active, active); + + if (!encoder->base.crtc) + continue; + + tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe; + WARN(active && pipe != tracked_pipe, + "active encoder's pipe doesn't match" + "(expected %i, found %i)\n", + tracked_pipe, pipe); + + } + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, + base.head) { + bool enabled = false; + bool active = false; + + DRM_DEBUG_KMS("[CRTC:%d]\n", + crtc->base.base.id); + + WARN(crtc->active && !crtc->base.enabled, + "active crtc, but not enabled in sw tracking\n"); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->base.crtc != &crtc->base) + continue; + enabled = true; + if (encoder->connectors_active) + active = true; + } + WARN(active != crtc->active, + "crtc's computed active state doesn't match tracked active state " + "(expected %i, found %i)\n", active, crtc->active); + WARN(enabled != crtc->base.enabled, + "crtc's computed enabled state doesn't match tracked enabled state " + "(expected %i, found %i)\n", enabled, crtc->base.enabled); + + assert_pipe(dev->dev_private, crtc->pipe, crtc->active); + } +} + +bool intel_set_mode(struct drm_crtc *crtc, + struct drm_display_mode *mode, + int x, int y, struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_display_mode *adjusted_mode, saved_mode, saved_hwmode; + struct intel_crtc *intel_crtc; + unsigned disable_pipes, prepare_pipes, modeset_pipes; + bool ret = true; + + intel_modeset_affected_pipes(crtc, &modeset_pipes, + &prepare_pipes, &disable_pipes); + + DRM_DEBUG_KMS("set mode pipe masks: modeset: %x, prepare: %x, disable: %x\n", + modeset_pipes, prepare_pipes, disable_pipes); + + for_each_intel_crtc_masked(dev, disable_pipes, intel_crtc) + intel_crtc_disable(&intel_crtc->base); + + saved_hwmode = crtc->hwmode; + saved_mode = crtc->mode; + + /* Hack: Because we don't (yet) support global modeset on multiple + * crtcs, we don't keep track of the new mode for more than one crtc. + * Hence simply check whether any bit is set in modeset_pipes in all the + * pieces of code that are not yet converted to deal with mutliple crtcs + * changing their mode at the same time. */ + adjusted_mode = NULL; + if (modeset_pipes) { + adjusted_mode = intel_modeset_adjusted_mode(crtc, mode); + if (IS_ERR(adjusted_mode)) { + return false; + } + } + + for_each_intel_crtc_masked(dev, prepare_pipes, intel_crtc) { + if (intel_crtc->base.enabled) + dev_priv->display.crtc_disable(&intel_crtc->base); + } + + /* crtc->mode is already used by the ->mode_set callbacks, hence we need + * to set it here already despite that we pass it down the callchain. + */ + if (modeset_pipes) + crtc->mode = *mode; + + /* Only after disabling all output pipelines that will be changed can we + * update the the output configuration. */ + intel_modeset_update_state(dev, prepare_pipes); + + if (dev_priv->display.modeset_global_resources) + dev_priv->display.modeset_global_resources(dev); + + /* Set up the DPLL and any encoders state that needs to adjust or depend + * on the DPLL. + */ + for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) { + ret = !intel_crtc_mode_set(&intel_crtc->base, + mode, adjusted_mode, + x, y, fb); + if (!ret) + goto done; + } + + /* Now enable the clocks, plane, pipe, and connectors that we set up. */ + for_each_intel_crtc_masked(dev, prepare_pipes, intel_crtc) + dev_priv->display.crtc_enable(&intel_crtc->base); + + if (modeset_pipes) { + /* Store real post-adjustment hardware mode. */ + crtc->hwmode = *adjusted_mode; + + /* Calculate and store various constants which + * are later needed by vblank and swap-completion + * timestamping. They are derived from true hwmode. + */ + drm_calc_timestamping_constants(crtc); + } + + /* FIXME: add subpixel order */ +done: + drm_mode_destroy(dev, adjusted_mode); + if (!ret && crtc->enabled) { + crtc->hwmode = saved_hwmode; + crtc->mode = saved_mode; + } else { + intel_modeset_check_state(dev); + } + + return ret; +} + +#undef for_each_intel_crtc_masked + +static void intel_set_config_free(struct intel_set_config *config) +{ + if (!config) + return; + + kfree(config->save_connector_encoders); + kfree(config->save_encoder_crtcs); + kfree(config); +} + +static int intel_set_config_save_state(struct drm_device *dev, + struct intel_set_config *config) +{ + struct drm_encoder *encoder; + struct drm_connector *connector; + int count; + + config->save_encoder_crtcs = + kcalloc(dev->mode_config.num_encoder, + sizeof(struct drm_crtc *), GFP_KERNEL); + if (!config->save_encoder_crtcs) + return -ENOMEM; + + config->save_connector_encoders = + kcalloc(dev->mode_config.num_connector, + sizeof(struct drm_encoder *), GFP_KERNEL); + if (!config->save_connector_encoders) + return -ENOMEM; + + /* Copy data. Note that driver private data is not affected. + * Should anything bad happen only the expected state is + * restored, not the drivers personal bookkeeping. + */ + count = 0; + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { + config->save_encoder_crtcs[count++] = encoder->crtc; + } + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + config->save_connector_encoders[count++] = connector->encoder; + } + + return 0; +} + +static void intel_set_config_restore_state(struct drm_device *dev, + struct intel_set_config *config) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + int count; + + count = 0; + list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) { + encoder->new_crtc = + to_intel_crtc(config->save_encoder_crtcs[count++]); + } + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) { + connector->new_encoder = + to_intel_encoder(config->save_connector_encoders[count++]); + } +} + +static void +intel_set_config_compute_mode_changes(struct drm_mode_set *set, + struct intel_set_config *config) +{ + + /* We should be able to check here if the fb has the same properties + * and then just flip_or_move it */ + if (set->crtc->fb != set->fb) { + /* If we have no fb then treat it as a full mode set */ + if (set->crtc->fb == NULL) { + DRM_DEBUG_KMS("crtc has no fb, full mode set\n"); + config->mode_changed = true; + } else if (set->fb == NULL) { + config->mode_changed = true; + } else if (set->fb->depth != set->crtc->fb->depth) { + config->mode_changed = true; + } else if (set->fb->bits_per_pixel != + set->crtc->fb->bits_per_pixel) { + config->mode_changed = true; + } else + config->fb_changed = true; + } + + if (set->fb && (set->x != set->crtc->x || set->y != set->crtc->y)) + config->fb_changed = true; + + if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) { + DRM_DEBUG_KMS("modes are different, full mode set\n"); + drm_mode_debug_printmodeline(&set->crtc->mode); + drm_mode_debug_printmodeline(set->mode); + config->mode_changed = true; + } +} + +static int +intel_modeset_stage_output_state(struct drm_device *dev, + struct drm_mode_set *set, + struct intel_set_config *config) +{ + struct drm_crtc *new_crtc; + struct intel_connector *connector; + struct intel_encoder *encoder; + int count, ro; + + /* The upper layers ensure that we either disabl a crtc or have a list + * of connectors. For paranoia, double-check this. */ + WARN_ON(!set->fb && (set->num_connectors != 0)); + WARN_ON(set->fb && (set->num_connectors == 0)); + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + /* Otherwise traverse passed in connector list and get encoders + * for them. */ + for (ro = 0; ro < set->num_connectors; ro++) { + if (set->connectors[ro] == &connector->base) { + connector->new_encoder = connector->encoder; + break; + } + } + + /* If we disable the crtc, disable all its connectors. Also, if + * the connector is on the changing crtc but not on the new + * connector list, disable it. */ + if ((!set->fb || ro == set->num_connectors) && + connector->base.encoder && + connector->base.encoder->crtc == set->crtc) { + connector->new_encoder = NULL; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [NOCRTC]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base)); + } + + + if (&connector->new_encoder->base != connector->base.encoder) { + DRM_DEBUG_KMS("encoder changed, full mode switch\n"); + config->mode_changed = true; + } + } + /* connector->new_encoder is now updated for all connectors. */ + + /* Update crtc of enabled connectors. */ + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (!connector->new_encoder) + continue; + + new_crtc = connector->new_encoder->base.crtc; + + for (ro = 0; ro < set->num_connectors; ro++) { + if (set->connectors[ro] == &connector->base) + new_crtc = set->crtc; + } + + /* Make sure the new CRTC will work with the encoder */ + if (!intel_encoder_crtc_ok(&connector->new_encoder->base, + new_crtc)) { + return -EINVAL; + } + connector->encoder->new_crtc = to_intel_crtc(new_crtc); + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [CRTC:%d]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base), + new_crtc->base.id); + } + + /* Check for any encoders that needs to be disabled. */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->new_encoder == encoder) { + WARN_ON(!connector->new_encoder->new_crtc); + + goto next_encoder; + } + } + encoder->new_crtc = NULL; +next_encoder: + /* Only now check for crtc changes so we don't miss encoders + * that will be disabled. */ + if (&encoder->new_crtc->base != encoder->base.crtc) { + DRM_DEBUG_KMS("crtc changed, full mode switch\n"); + config->mode_changed = true; + } + } + /* Now we've also updated encoder->new_crtc for all encoders. */ + + return 0; +} + +static int intel_crtc_set_config(struct drm_mode_set *set) +{ + struct drm_device *dev; + struct drm_mode_set save_set; + struct intel_set_config *config; + int ret; + + BUG_ON(!set); + BUG_ON(!set->crtc); + BUG_ON(!set->crtc->helper_private); + + if (!set->mode) + set->fb = NULL; + + /* The fb helper likes to play gross jokes with ->mode_set_config. + * Unfortunately the crtc helper doesn't do much at all for this case, + * so we have to cope with this madness until the fb helper is fixed up. */ + if (set->fb && set->num_connectors == 0) + return 0; + + if (set->fb) { + DRM_DEBUG_KMS("[CRTC:%d] [FB:%d] #connectors=%d (x y) (%i %i)\n", + set->crtc->base.id, set->fb->base.id, + (int)set->num_connectors, set->x, set->y); + } else { + DRM_DEBUG_KMS("[CRTC:%d] [NOFB]\n", set->crtc->base.id); + } + + dev = set->crtc->dev; + + ret = -ENOMEM; + config = kzalloc(sizeof(*config), GFP_KERNEL); + if (!config) + goto out_config; + + ret = intel_set_config_save_state(dev, config); + if (ret) + goto out_config; + + save_set.crtc = set->crtc; + save_set.mode = &set->crtc->mode; + save_set.x = set->crtc->x; + save_set.y = set->crtc->y; + save_set.fb = set->crtc->fb; + + /* Compute whether we need a full modeset, only an fb base update or no + * change at all. In the future we might also check whether only the + * mode changed, e.g. for LVDS where we only change the panel fitter in + * such cases. */ + intel_set_config_compute_mode_changes(set, config); + + ret = intel_modeset_stage_output_state(dev, set, config); + if (ret) + goto fail; + + if (config->mode_changed) { + if (set->mode) { + DRM_DEBUG_KMS("attempting to set mode from" + " userspace\n"); + drm_mode_debug_printmodeline(set->mode); + } + + if (!intel_set_mode(set->crtc, set->mode, + set->x, set->y, set->fb)) { + DRM_ERROR("failed to set mode on [CRTC:%d]\n", + set->crtc->base.id); + ret = -EINVAL; + goto fail; + } + } else if (config->fb_changed) { + ret = intel_pipe_set_base(set->crtc, + set->x, set->y, set->fb); + } + + intel_set_config_free(config); + + return 0; + +fail: + intel_set_config_restore_state(dev, config); + + /* Try to restore the config */ + if (config->mode_changed && + !intel_set_mode(save_set.crtc, save_set.mode, + save_set.x, save_set.y, save_set.fb)) + DRM_ERROR("failed to restore config after modeset failure\n"); + +out_config: + intel_set_config_free(config); + return ret; +} + +static const struct drm_crtc_funcs intel_crtc_funcs = { + .cursor_set = intel_crtc_cursor_set, + .cursor_move = intel_crtc_cursor_move, + .gamma_set = intel_crtc_gamma_set, + .set_config = intel_crtc_set_config, + .destroy = intel_crtc_destroy, + .page_flip = intel_crtc_page_flip, +}; + +static void intel_cpu_pll_init(struct drm_device *dev) +{ + if (IS_HASWELL(dev)) + intel_ddi_pll_init(dev); +} + +static void intel_pch_pll_init(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + if (dev_priv->num_pch_pll == 0) { + DRM_DEBUG_KMS("No PCH PLLs on this hardware, skipping initialisation\n"); + return; + } + + for (i = 0; i < dev_priv->num_pch_pll; i++) { + dev_priv->pch_plls[i].pll_reg = _PCH_DPLL(i); + dev_priv->pch_plls[i].fp0_reg = _PCH_FP0(i); + dev_priv->pch_plls[i].fp1_reg = _PCH_FP1(i); + } +} + +static void intel_crtc_init(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc; + int i; + + intel_crtc = kzalloc(sizeof(struct intel_crtc) + (INTELFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); + if (intel_crtc == NULL) + return; + + drm_crtc_init(dev, &intel_crtc->base, &intel_crtc_funcs); + + drm_mode_crtc_set_gamma_size(&intel_crtc->base, 256); + for (i = 0; i < 256; i++) { + intel_crtc->lut_r[i] = i; + intel_crtc->lut_g[i] = i; + intel_crtc->lut_b[i] = i; + } + + /* Swap pipes & planes for FBC on pre-965 */ + intel_crtc->pipe = pipe; + intel_crtc->plane = pipe; + intel_crtc->cpu_transcoder = pipe; + if (IS_MOBILE(dev) && IS_GEN3(dev)) { + DRM_DEBUG_KMS("swapping pipes & planes for FBC\n"); + intel_crtc->plane = !pipe; + } + + BUG_ON(pipe >= ARRAY_SIZE(dev_priv->plane_to_crtc_mapping) || + dev_priv->plane_to_crtc_mapping[intel_crtc->plane] != NULL); + dev_priv->plane_to_crtc_mapping[intel_crtc->plane] = &intel_crtc->base; + dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base; + + intel_crtc->bpp = 24; /* default for pre-Ironlake */ + + drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs); +} + +int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_get_pipe_from_crtc_id *pipe_from_crtc_id = data; + struct drm_mode_object *drmmode_obj; + struct intel_crtc *crtc; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + drmmode_obj = drm_mode_object_find(dev, pipe_from_crtc_id->crtc_id, + DRM_MODE_OBJECT_CRTC); + + if (!drmmode_obj) { + DRM_ERROR("no such CRTC id\n"); + return -EINVAL; + } + + crtc = to_intel_crtc(obj_to_crtc(drmmode_obj)); + pipe_from_crtc_id->pipe = crtc->pipe; + + return 0; +} + +static int intel_encoder_clones(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_encoder *source_encoder; + int index_mask = 0; + int entry = 0; + + list_for_each_entry(source_encoder, + &dev->mode_config.encoder_list, base.head) { + + if (encoder == source_encoder) + index_mask |= (1 << entry); + + /* Intel hw has only one MUX where enocoders could be cloned. */ + if (encoder->cloneable && source_encoder->cloneable) + index_mask |= (1 << entry); + + entry++; + } + + return index_mask; +} + +static bool has_edp_a(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!IS_MOBILE(dev)) + return false; + + if ((I915_READ(DP_A) & DP_DETECTED) == 0) + return false; + + if (IS_GEN5(dev) && + (I915_READ(ILK_DISPLAY_CHICKEN_FUSES) & ILK_eDP_A_DISABLE)) + return false; + + return true; +} + +static void intel_setup_outputs(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *encoder; + bool dpd_is_edp = false; + bool has_lvds; + + has_lvds = intel_lvds_init(dev); + if (!has_lvds && !HAS_PCH_SPLIT(dev)) { + /* disable the panel fitter on everything but LVDS */ + I915_WRITE(PFIT_CONTROL, 0); + } + + if (!(IS_HASWELL(dev) && + (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES))) + intel_crt_init(dev); + + if (IS_HASWELL(dev)) { + int found; + + /* Haswell uses DDI functions to detect digital outputs */ + found = I915_READ(DDI_BUF_CTL_A) & DDI_INIT_DISPLAY_DETECTED; + /* DDI A only supports eDP */ + if (found) + intel_ddi_init(dev, PORT_A); + + /* DDI B, C and D detection is indicated by the SFUSE_STRAP + * register */ + found = I915_READ(SFUSE_STRAP); + + if (found & SFUSE_STRAP_DDIB_DETECTED) + intel_ddi_init(dev, PORT_B); + if (found & SFUSE_STRAP_DDIC_DETECTED) + intel_ddi_init(dev, PORT_C); + if (found & SFUSE_STRAP_DDID_DETECTED) + intel_ddi_init(dev, PORT_D); + } else if (HAS_PCH_SPLIT(dev)) { + int found; + dpd_is_edp = intel_dpd_is_edp(dev); + + if (has_edp_a(dev)) + intel_dp_init(dev, DP_A, PORT_A); + + if (I915_READ(HDMIB) & PORT_DETECTED) { + /* PCH SDVOB multiplex with HDMIB */ + found = intel_sdvo_init(dev, PCH_SDVOB, true); + if (!found) + intel_hdmi_init(dev, HDMIB, PORT_B); + if (!found && (I915_READ(PCH_DP_B) & DP_DETECTED)) + intel_dp_init(dev, PCH_DP_B, PORT_B); + } + + if (I915_READ(HDMIC) & PORT_DETECTED) + intel_hdmi_init(dev, HDMIC, PORT_C); + + if (!dpd_is_edp && I915_READ(HDMID) & PORT_DETECTED) + intel_hdmi_init(dev, HDMID, PORT_D); + + if (I915_READ(PCH_DP_C) & DP_DETECTED) + intel_dp_init(dev, PCH_DP_C, PORT_C); + + if (I915_READ(PCH_DP_D) & DP_DETECTED) + intel_dp_init(dev, PCH_DP_D, PORT_D); + } else if (IS_VALLEYVIEW(dev)) { + int found; + + /* Check for built-in panel first. Shares lanes with HDMI on SDVOC */ + if (I915_READ(DP_C) & DP_DETECTED) + intel_dp_init(dev, DP_C, PORT_C); + + if (I915_READ(SDVOB) & PORT_DETECTED) { + /* SDVOB multiplex with HDMIB */ + found = intel_sdvo_init(dev, SDVOB, true); + if (!found) + intel_hdmi_init(dev, SDVOB, PORT_B); + if (!found && (I915_READ(DP_B) & DP_DETECTED)) + intel_dp_init(dev, DP_B, PORT_B); + } + + if (I915_READ(SDVOC) & PORT_DETECTED) + intel_hdmi_init(dev, SDVOC, PORT_C); + + } else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) { + bool found = false; + + if (I915_READ(SDVOB) & SDVO_DETECTED) { + DRM_DEBUG_KMS("probing SDVOB\n"); + found = intel_sdvo_init(dev, SDVOB, true); + if (!found && SUPPORTS_INTEGRATED_HDMI(dev)) { + DRM_DEBUG_KMS("probing HDMI on SDVOB\n"); + intel_hdmi_init(dev, SDVOB, PORT_B); + } + + if (!found && SUPPORTS_INTEGRATED_DP(dev)) { + DRM_DEBUG_KMS("probing DP_B\n"); + intel_dp_init(dev, DP_B, PORT_B); + } + } + + /* Before G4X SDVOC doesn't have its own detect register */ + + if (I915_READ(SDVOB) & SDVO_DETECTED) { + DRM_DEBUG_KMS("probing SDVOC\n"); + found = intel_sdvo_init(dev, SDVOC, false); + } + + if (!found && (I915_READ(SDVOC) & SDVO_DETECTED)) { + + if (SUPPORTS_INTEGRATED_HDMI(dev)) { + DRM_DEBUG_KMS("probing HDMI on SDVOC\n"); + intel_hdmi_init(dev, SDVOC, PORT_C); + } + if (SUPPORTS_INTEGRATED_DP(dev)) { + DRM_DEBUG_KMS("probing DP_C\n"); + intel_dp_init(dev, DP_C, PORT_C); + } + } + + if (SUPPORTS_INTEGRATED_DP(dev) && + (I915_READ(DP_D) & DP_DETECTED)) { + DRM_DEBUG_KMS("probing DP_D\n"); + intel_dp_init(dev, DP_D, PORT_D); + } + } else if (IS_GEN2(dev)) + intel_dvo_init(dev); + + if (SUPPORTS_TV(dev)) + intel_tv_init(dev); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) { + encoder->base.possible_crtcs = encoder->crtc_mask; + encoder->base.possible_clones = + intel_encoder_clones(encoder); + } + + intel_init_pch_refclk(dev); + + drm_helper_move_panel_connectors_to_head(dev); +} + +static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb) +{ + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + + drm_framebuffer_cleanup(fb); + drm_gem_object_unreference_unlocked(&intel_fb->obj->base); + + kfree(intel_fb); +} + +static int intel_user_framebuffer_create_handle(struct drm_framebuffer *fb, + struct drm_file *file, + unsigned int *handle) +{ + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + + return drm_gem_handle_create(file, &obj->base, handle); +} + +static const struct drm_framebuffer_funcs intel_fb_funcs = { + .destroy = intel_user_framebuffer_destroy, + .create_handle = intel_user_framebuffer_create_handle, +}; + +int intel_framebuffer_init(struct drm_device *dev, + struct intel_framebuffer *intel_fb, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj) +{ + int ret; + + if (obj->tiling_mode == I915_TILING_Y) { + DRM_DEBUG("hardware does not support tiling Y\n"); + return -EINVAL; + } + + if (mode_cmd->pitches[0] & 63) { + DRM_DEBUG("pitch (%d) must be at least 64 byte aligned\n", + mode_cmd->pitches[0]); + return -EINVAL; + } + + /* FIXME <= Gen4 stride limits are bit unclear */ + if (mode_cmd->pitches[0] > 32768) { + DRM_DEBUG("pitch (%d) must be at less than 32768\n", + mode_cmd->pitches[0]); + return -EINVAL; + } + + if (obj->tiling_mode != I915_TILING_NONE && + mode_cmd->pitches[0] != obj->stride) { + DRM_DEBUG("pitch (%d) must match tiling stride (%d)\n", + mode_cmd->pitches[0], obj->stride); + return -EINVAL; + } + + /* Reject formats not supported by any plane early. */ + switch (mode_cmd->pixel_format) { + case DRM_FORMAT_C8: + case DRM_FORMAT_RGB565: + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + break; + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_ARGB1555: + if (INTEL_INFO(dev)->gen > 3) { + DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format); + return -EINVAL; + } + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + if (INTEL_INFO(dev)->gen < 4) { + DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format); + return -EINVAL; + } + break; + case DRM_FORMAT_YUYV: + case DRM_FORMAT_UYVY: + case DRM_FORMAT_YVYU: + case DRM_FORMAT_VYUY: + if (INTEL_INFO(dev)->gen < 5) { + DRM_DEBUG("invalid format: 0x%08x\n", mode_cmd->pixel_format); + return -EINVAL; + } + break; + default: + DRM_DEBUG("unsupported pixel format 0x%08x\n", mode_cmd->pixel_format); + return -EINVAL; + } + + /* FIXME need to adjust LINOFF/TILEOFF accordingly. */ + if (mode_cmd->offsets[0] != 0) + return -EINVAL; + + ret = drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs); + if (ret) { + DRM_ERROR("framebuffer init failed %d\n", ret); + return ret; + } + + drm_helper_mode_fill_fb_struct(&intel_fb->base, mode_cmd); + intel_fb->obj = obj; + return 0; +} + +static struct drm_framebuffer * +intel_user_framebuffer_create(struct drm_device *dev, + struct drm_file *filp, + struct drm_mode_fb_cmd2 *mode_cmd) +{ + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, filp, + mode_cmd->handles[0])); + if (&obj->base == NULL) + return ERR_PTR(-ENOENT); + + return intel_framebuffer_create(dev, mode_cmd, obj); +} + +static const struct drm_mode_config_funcs intel_mode_funcs = { + .fb_create = intel_user_framebuffer_create, + .output_poll_changed = intel_fb_output_poll_changed, +}; + +/* Set up chip specific display functions */ +static void intel_init_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* We always want a DPMS function */ + if (IS_HASWELL(dev)) { + dev_priv->display.crtc_mode_set = haswell_crtc_mode_set; + dev_priv->display.crtc_enable = haswell_crtc_enable; + dev_priv->display.crtc_disable = haswell_crtc_disable; + dev_priv->display.off = haswell_crtc_off; + dev_priv->display.update_plane = ironlake_update_plane; + } else if (HAS_PCH_SPLIT(dev)) { + dev_priv->display.crtc_mode_set = ironlake_crtc_mode_set; + dev_priv->display.crtc_enable = ironlake_crtc_enable; + dev_priv->display.crtc_disable = ironlake_crtc_disable; + dev_priv->display.off = ironlake_crtc_off; + dev_priv->display.update_plane = ironlake_update_plane; + } else { + dev_priv->display.crtc_mode_set = i9xx_crtc_mode_set; + dev_priv->display.crtc_enable = i9xx_crtc_enable; + dev_priv->display.crtc_disable = i9xx_crtc_disable; + dev_priv->display.off = i9xx_crtc_off; + dev_priv->display.update_plane = i9xx_update_plane; + } + + /* Returns the core display clock speed */ + if (IS_VALLEYVIEW(dev)) + dev_priv->display.get_display_clock_speed = + valleyview_get_display_clock_speed; + else if (IS_I945G(dev) || (IS_G33(dev) && !IS_PINEVIEW_M(dev))) + dev_priv->display.get_display_clock_speed = + i945_get_display_clock_speed; + else if (IS_I915G(dev)) + dev_priv->display.get_display_clock_speed = + i915_get_display_clock_speed; + else if (IS_I945GM(dev) || IS_845G(dev) || IS_PINEVIEW_M(dev)) + dev_priv->display.get_display_clock_speed = + i9xx_misc_get_display_clock_speed; + else if (IS_I915GM(dev)) + dev_priv->display.get_display_clock_speed = + i915gm_get_display_clock_speed; + else if (IS_I865G(dev)) + dev_priv->display.get_display_clock_speed = + i865_get_display_clock_speed; + else if (IS_I85X(dev)) + dev_priv->display.get_display_clock_speed = + i855_get_display_clock_speed; + else /* 852, 830 */ + dev_priv->display.get_display_clock_speed = + i830_get_display_clock_speed; + + if (HAS_PCH_SPLIT(dev)) { + if (IS_GEN5(dev)) { + dev_priv->display.fdi_link_train = ironlake_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + } else if (IS_GEN6(dev)) { + dev_priv->display.fdi_link_train = gen6_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + } else if (IS_IVYBRIDGE(dev)) { + /* FIXME: detect B0+ stepping and use auto training */ + dev_priv->display.fdi_link_train = ivb_manual_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + dev_priv->display.modeset_global_resources = + ivb_modeset_global_resources; + } else if (IS_HASWELL(dev)) { + dev_priv->display.fdi_link_train = hsw_fdi_link_train; + dev_priv->display.write_eld = haswell_write_eld; + } else + dev_priv->display.update_wm = NULL; + } else if (IS_G4X(dev)) { + dev_priv->display.write_eld = g4x_write_eld; + } + + /* Default just returns -ENODEV to indicate unsupported */ + dev_priv->display.queue_flip = intel_default_queue_flip; + + switch (INTEL_INFO(dev)->gen) { + case 2: + dev_priv->display.queue_flip = intel_gen2_queue_flip; + break; + + case 3: + dev_priv->display.queue_flip = intel_gen3_queue_flip; + break; + + case 4: + case 5: + dev_priv->display.queue_flip = intel_gen4_queue_flip; + break; + + case 6: + dev_priv->display.queue_flip = intel_gen6_queue_flip; + break; + case 7: + dev_priv->display.queue_flip = intel_gen7_queue_flip; + break; + } +} + +/* + * Some BIOSes insist on assuming the GPU's pipe A is enabled at suspend, + * resume, or other times. This quirk makes sure that's the case for + * affected systems. + */ +static void quirk_pipea_force(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->quirks |= QUIRK_PIPEA_FORCE; + DRM_INFO("applying pipe a force quirk\n"); +} + +/* + * Some machines (Lenovo U160) do not work with SSC on LVDS for some reason + */ +static void quirk_ssc_force_disable(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_LVDS_SSC_DISABLE; + DRM_INFO("applying lvds SSC disable quirk\n"); +} + +/* + * A machine (e.g. Acer Aspire 5734Z) may need to invert the panel backlight + * brightness value + */ +static void quirk_invert_brightness(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_INVERT_BRIGHTNESS; + DRM_INFO("applying inverted panel brightness quirk\n"); +} + +struct intel_quirk { + int device; + int subsystem_vendor; + int subsystem_device; + void (*hook)(struct drm_device *dev); +}; + +/* For systems that don't have a meaningful PCI subdevice/subvendor ID */ +struct intel_dmi_quirk { + void (*hook)(struct drm_device *dev); + const struct dmi_system_id (*dmi_id_list)[]; +}; + +static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +{ + DRM_INFO("Backlight polarity reversed on %s\n", id->ident); + return 1; +} + +static const struct intel_dmi_quirk intel_dmi_quirks[] = { + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = intel_dmi_reverse_brightness, + .ident = "NCR Corporation", + .matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, ""), + }, + }, + { } /* terminating entry */ + }, + .hook = quirk_invert_brightness, + }, +}; + +static struct intel_quirk intel_quirks[] = { + /* HP Mini needs pipe A force quirk (LP: #322104) */ + { 0x27ae, 0x103c, 0x361a, quirk_pipea_force }, + + /* Toshiba Protege R-205, S-209 needs pipe A force quirk */ + { 0x2592, 0x1179, 0x0001, quirk_pipea_force }, + + /* ThinkPad T60 needs pipe A force quirk (bug #16494) */ + { 0x2782, 0x17aa, 0x201a, quirk_pipea_force }, + + /* 830/845 need to leave pipe A & dpll A up */ + { 0x2562, PCI_ANY_ID, PCI_ANY_ID, quirk_pipea_force }, + { 0x3577, PCI_ANY_ID, PCI_ANY_ID, quirk_pipea_force }, + + /* Lenovo U160 cannot use SSC on LVDS */ + { 0x0046, 0x17aa, 0x3920, quirk_ssc_force_disable }, + + /* Sony Vaio Y cannot use SSC on LVDS */ + { 0x0046, 0x104d, 0x9076, quirk_ssc_force_disable }, + + /* Acer Aspire 5734Z must invert backlight brightness */ + { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness }, + + /* 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 }, +}; + +static void intel_init_quirks(struct drm_device *dev) +{ + struct pci_dev *d = dev->pdev; + int i; + + for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) { + struct intel_quirk *q = &intel_quirks[i]; + + if (d->device == q->device && + (d->subsystem_vendor == q->subsystem_vendor || + q->subsystem_vendor == PCI_ANY_ID) && + (d->subsystem_device == q->subsystem_device || + q->subsystem_device == PCI_ANY_ID)) + q->hook(dev); + } + for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) { + if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0) + intel_dmi_quirks[i].hook(dev); + } +} + +/* Disable the VGA plane that we never use */ +static void i915_disable_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u8 sr1; + u32 vga_reg; + + if (HAS_PCH_SPLIT(dev)) + vga_reg = CPU_VGACNTRL; + else + vga_reg = VGACNTRL; + + vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO); + outb(SR01, VGA_SR_INDEX); + sr1 = inb(VGA_SR_DATA); + outb(sr1 | 1<<5, VGA_SR_DATA); + vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); + udelay(300); + + I915_WRITE(vga_reg, VGA_DISP_DISABLE); + POSTING_READ(vga_reg); +} + +void intel_modeset_init_hw(struct drm_device *dev) +{ + /* We attempt to init the necessary power wells early in the initialization + * time, so the subsystems that expect power to be enabled can work. + */ + intel_init_power_wells(dev); + + intel_prepare_ddi(dev); + + intel_init_clock_gating(dev); + + mutex_lock(&dev->struct_mutex); + intel_enable_gt_powersave(dev); + mutex_unlock(&dev->struct_mutex); +} + +void intel_modeset_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i, ret; + + drm_mode_config_init(dev); + + dev->mode_config.min_width = 0; + dev->mode_config.min_height = 0; + + dev->mode_config.preferred_depth = 24; + dev->mode_config.prefer_shadow = 1; + + dev->mode_config.funcs = &intel_mode_funcs; + + intel_init_quirks(dev); + + intel_init_pm(dev); + + intel_init_display(dev); + + if (IS_GEN2(dev)) { + dev->mode_config.max_width = 2048; + dev->mode_config.max_height = 2048; + } else if (IS_GEN3(dev)) { + dev->mode_config.max_width = 4096; + dev->mode_config.max_height = 4096; + } else { + dev->mode_config.max_width = 8192; + dev->mode_config.max_height = 8192; + } + dev->mode_config.fb_base = dev_priv->mm.gtt_base_addr; + + DRM_DEBUG_KMS("%d display pipe%s available.\n", + dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : ""); + + for (i = 0; i < dev_priv->num_pipe; i++) { + intel_crtc_init(dev, i); + ret = intel_plane_init(dev, i); + if (ret) + DRM_DEBUG_KMS("plane %d init failed: %d\n", i, ret); + } + + intel_cpu_pll_init(dev); + intel_pch_pll_init(dev); + + /* Just disable it once at startup */ + i915_disable_vga(dev); + intel_setup_outputs(dev); +} + +static void +intel_connector_break_all_links(struct intel_connector *connector) +{ + connector->base.dpms = DRM_MODE_DPMS_OFF; + connector->base.encoder = NULL; + connector->encoder->connectors_active = false; + connector->encoder->base.crtc = NULL; +} + +static void intel_enable_pipe_a(struct drm_device *dev) +{ + struct intel_connector *connector; + struct drm_connector *crt = NULL; + struct intel_load_detect_pipe load_detect_temp; + + /* We can't just switch on the pipe A, we need to set things up with a + * proper mode and output configuration. As a gross hack, enable pipe A + * by enabling the load detect pipe once. */ + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->encoder->type == INTEL_OUTPUT_ANALOG) { + crt = &connector->base; + break; + } + } + + if (!crt) + return; + + if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp)) + intel_release_load_detect_pipe(crt, &load_detect_temp); + + +} + +static bool +intel_check_plane_mapping(struct intel_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; + u32 reg, val; + + if (dev_priv->num_pipe == 1) + return true; + + reg = DSPCNTR(!crtc->plane); + val = I915_READ(reg); + + if ((val & DISPLAY_PLANE_ENABLE) && + (!!(val & DISPPLANE_SEL_PIPE_MASK) == crtc->pipe)) + return false; + + return true; +} + +static void intel_sanitize_crtc(struct intel_crtc *crtc) +{ + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 reg; + + /* Clear any frame start delays used for debugging left by the BIOS */ + reg = PIPECONF(crtc->cpu_transcoder); + I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK); + + /* We need to sanitize the plane -> pipe mapping first because this will + * disable the crtc (and hence change the state) if it is wrong. Note + * that gen4+ has a fixed plane -> pipe mapping. */ + if (INTEL_INFO(dev)->gen < 4 && !intel_check_plane_mapping(crtc)) { + struct intel_connector *connector; + bool plane; + + DRM_DEBUG_KMS("[CRTC:%d] wrong plane connection detected!\n", + crtc->base.base.id); + + /* Pipe has the wrong plane attached and the plane is active. + * Temporarily change the plane mapping and disable everything + * ... */ + plane = crtc->plane; + crtc->plane = !plane; + dev_priv->display.crtc_disable(&crtc->base); + crtc->plane = plane; + + /* ... and break all links. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->encoder->base.crtc != &crtc->base) + continue; + + intel_connector_break_all_links(connector); + } + + WARN_ON(crtc->active); + crtc->base.enabled = false; + } + + if (dev_priv->quirks & QUIRK_PIPEA_FORCE && + crtc->pipe == PIPE_A && !crtc->active) { + /* BIOS forgot to enable pipe A, this mostly happens after + * resume. Force-enable the pipe to fix this, the update_dpms + * call below we restore the pipe to the right state, but leave + * the required bits on. */ + intel_enable_pipe_a(dev); + } + + /* Adjust the state of the output pipe according to whether we + * have active connectors/encoders. */ + intel_crtc_update_dpms(&crtc->base); + + if (crtc->active != crtc->base.enabled) { + struct intel_encoder *encoder; + + /* This can happen either due to bugs in the get_hw_state + * functions or because the pipe is force-enabled due to the + * pipe A quirk. */ + DRM_DEBUG_KMS("[CRTC:%d] hw state adjusted, was %s, now %s\n", + crtc->base.base.id, + crtc->base.enabled ? "enabled" : "disabled", + crtc->active ? "enabled" : "disabled"); + + crtc->base.enabled = crtc->active; + + /* Because we only establish the connector -> encoder -> + * crtc links if something is active, this means the + * crtc is now deactivated. Break the links. connector + * -> encoder links are only establish when things are + * actually up, hence no need to break them. */ + WARN_ON(crtc->active); + + for_each_encoder_on_crtc(dev, &crtc->base, encoder) { + WARN_ON(encoder->connectors_active); + encoder->base.crtc = NULL; + } + } +} + +static void intel_sanitize_encoder(struct intel_encoder *encoder) +{ + struct intel_connector *connector; + struct drm_device *dev = encoder->base.dev; + + /* We need to check both for a crtc link (meaning that the + * encoder is active and trying to read from a pipe) and the + * pipe itself being active. */ + bool has_active_crtc = encoder->base.crtc && + to_intel_crtc(encoder->base.crtc)->active; + + if (encoder->connectors_active && !has_active_crtc) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] has active connectors but no active pipe!\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + + /* Connector is active, but has no active pipe. This is + * fallout from our resume register restoring. Disable + * the encoder manually again. */ + if (encoder->base.crtc) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] manually disabled\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + encoder->disable(encoder); + } + + /* Inconsistent output/port/pipe state happens presumably due to + * a bug in one of the get_hw_state functions. Or someplace else + * in our code, like the register restore mess on resume. Clamp + * things to off as a safer default. */ + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->encoder != encoder) + continue; + + intel_connector_break_all_links(connector); + } + } + /* Enabled encoders without active connectors will be fixed in + * the crtc fixup. */ +} + +static void i915_redisable_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 vga_reg; + + if (HAS_PCH_SPLIT(dev)) + vga_reg = CPU_VGACNTRL; + else + vga_reg = VGACNTRL; + + if (I915_READ(vga_reg) != VGA_DISP_DISABLE) { + DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); + I915_WRITE(vga_reg, VGA_DISP_DISABLE); + POSTING_READ(vga_reg); + } +} + +/* Scan out the current hw modeset state, sanitizes it and maps it into the drm + * and i915 state tracking structures. */ +void intel_modeset_setup_hw_state(struct drm_device *dev, + bool force_restore) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe; + u32 tmp; + struct intel_crtc *crtc; + struct intel_encoder *encoder; + struct intel_connector *connector; + + if (IS_HASWELL(dev)) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); + + if (tmp & TRANS_DDI_FUNC_ENABLE) { + switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { + case TRANS_DDI_EDP_INPUT_A_ON: + case TRANS_DDI_EDP_INPUT_A_ONOFF: + pipe = PIPE_A; + break; + case TRANS_DDI_EDP_INPUT_B_ONOFF: + pipe = PIPE_B; + break; + case TRANS_DDI_EDP_INPUT_C_ONOFF: + pipe = PIPE_C; + break; + } + + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + crtc->cpu_transcoder = TRANSCODER_EDP; + + DRM_DEBUG_KMS("Pipe %c using transcoder EDP\n", + pipe_name(pipe)); + } + } + + for_each_pipe(pipe) { + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + + tmp = I915_READ(PIPECONF(crtc->cpu_transcoder)); + if (tmp & PIPECONF_ENABLE) + crtc->active = true; + else + crtc->active = false; + + crtc->base.enabled = crtc->active; + + DRM_DEBUG_KMS("[CRTC:%d] hw state readout: %s\n", + crtc->base.base.id, + crtc->active ? "enabled" : "disabled"); + } + + if (IS_HASWELL(dev)) + intel_ddi_setup_hw_pll_state(dev); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + pipe = 0; + + if (encoder->get_hw_state(encoder, &pipe)) { + encoder->base.crtc = + dev_priv->pipe_to_crtc_mapping[pipe]; + } else { + encoder->base.crtc = NULL; + } + + encoder->connectors_active = false; + DRM_DEBUG_KMS("[ENCODER:%d:%s] hw state readout: %s, pipe=%i\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base), + encoder->base.crtc ? "enabled" : "disabled", + pipe); + } + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->get_hw_state(connector)) { + connector->base.dpms = DRM_MODE_DPMS_ON; + connector->encoder->connectors_active = true; + connector->base.encoder = &connector->encoder->base; + } else { + connector->base.dpms = DRM_MODE_DPMS_OFF; + connector->base.encoder = NULL; + } + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] hw state readout: %s\n", + connector->base.base.id, + drm_get_connector_name(&connector->base), + connector->base.encoder ? "enabled" : "disabled"); + } + + /* HW state is read out, now we need to sanitize this mess. */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + intel_sanitize_encoder(encoder); + } + + for_each_pipe(pipe) { + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + intel_sanitize_crtc(crtc); + } + + if (force_restore) { + for_each_pipe(pipe) { + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + intel_set_mode(&crtc->base, &crtc->base.mode, + crtc->base.x, crtc->base.y, crtc->base.fb); + } + + i915_redisable_vga(dev); + } else { + intel_modeset_update_staged_output_state(dev); + } + + intel_modeset_check_state(dev); + + drm_mode_config_reset(dev); +} + +void intel_modeset_gem_init(struct drm_device *dev) +{ + intel_modeset_init_hw(dev); + + intel_setup_overlay(dev); + + intel_modeset_setup_hw_state(dev, false); +} + +void intel_modeset_cleanup(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + struct intel_crtc *intel_crtc; + + drm_kms_helper_poll_fini(dev); + mutex_lock(&dev->struct_mutex); + + intel_unregister_dsm_handler(); + + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + /* Skip inactive CRTCs */ + if (!crtc->fb) + continue; + + intel_crtc = to_intel_crtc(crtc); + intel_increase_pllclock(crtc); + } + + intel_disable_fbc(dev); + + intel_disable_gt_powersave(dev); + + ironlake_teardown_rc6(dev); + + if (IS_VALLEYVIEW(dev)) + vlv_init_dpio(dev); + + mutex_unlock(&dev->struct_mutex); + + /* Disable the irq before mode object teardown, for the irq might + * enqueue unpin/hotplug work. */ + drm_irq_uninstall(dev); + cancel_work_sync(&dev_priv->hotplug_work); + cancel_work_sync(&dev_priv->rps.work); + + /* flush any delayed tasks or pending work */ + flush_scheduled_work(); + + /* destroy backlight, if any, before the connectors */ + intel_panel_destroy_backlight(dev); + + drm_mode_config_cleanup(dev); +} + +/* + * Return which encoder is currently attached for connector. + */ +struct drm_encoder *intel_best_encoder(struct drm_connector *connector) +{ + return &intel_attached_encoder(connector)->base; +} + +void intel_connector_attach_encoder(struct intel_connector *connector, + struct intel_encoder *encoder) +{ + connector->encoder = encoder; + drm_mode_connector_attach_encoder(&connector->base, + &encoder->base); +} + +/* + * set vga decode state - true == enable VGA decode + */ +int intel_modeset_vga_set_state(struct drm_device *dev, bool state) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 gmch_ctrl; + + pci_read_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, &gmch_ctrl); + if (state) + gmch_ctrl &= ~INTEL_GMCH_VGA_DISABLE; + else + gmch_ctrl |= INTEL_GMCH_VGA_DISABLE; + pci_write_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, gmch_ctrl); + return 0; +} + +#ifdef CONFIG_DEBUG_FS +#include + +struct intel_display_error_state { + struct intel_cursor_error_state { + u32 control; + u32 position; + u32 base; + u32 size; + } cursor[I915_MAX_PIPES]; + + struct intel_pipe_error_state { + u32 conf; + u32 source; + + u32 htotal; + u32 hblank; + u32 hsync; + u32 vtotal; + u32 vblank; + u32 vsync; + } pipe[I915_MAX_PIPES]; + + struct intel_plane_error_state { + u32 control; + u32 stride; + u32 size; + u32 pos; + u32 addr; + u32 surface; + u32 tile_offset; + } plane[I915_MAX_PIPES]; +}; + +struct intel_display_error_state * +intel_display_capture_error_state(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_display_error_state *error; + enum transcoder cpu_transcoder; + int i; + + error = kmalloc(sizeof(*error), GFP_ATOMIC); + if (error == NULL) + return NULL; + + for_each_pipe(i) { + cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, i); + + error->cursor[i].control = I915_READ(CURCNTR(i)); + error->cursor[i].position = I915_READ(CURPOS(i)); + error->cursor[i].base = I915_READ(CURBASE(i)); + + error->plane[i].control = I915_READ(DSPCNTR(i)); + error->plane[i].stride = I915_READ(DSPSTRIDE(i)); + error->plane[i].size = I915_READ(DSPSIZE(i)); + error->plane[i].pos = I915_READ(DSPPOS(i)); + error->plane[i].addr = I915_READ(DSPADDR(i)); + if (INTEL_INFO(dev)->gen >= 4) { + error->plane[i].surface = I915_READ(DSPSURF(i)); + error->plane[i].tile_offset = I915_READ(DSPTILEOFF(i)); + } + + error->pipe[i].conf = I915_READ(PIPECONF(cpu_transcoder)); + error->pipe[i].source = I915_READ(PIPESRC(i)); + error->pipe[i].htotal = I915_READ(HTOTAL(cpu_transcoder)); + error->pipe[i].hblank = I915_READ(HBLANK(cpu_transcoder)); + error->pipe[i].hsync = I915_READ(HSYNC(cpu_transcoder)); + error->pipe[i].vtotal = I915_READ(VTOTAL(cpu_transcoder)); + error->pipe[i].vblank = I915_READ(VBLANK(cpu_transcoder)); + error->pipe[i].vsync = I915_READ(VSYNC(cpu_transcoder)); + } + + return error; +} + +void +intel_display_print_error_state(struct seq_file *m, + struct drm_device *dev, + struct intel_display_error_state *error) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + seq_printf(m, "Num Pipes: %d\n", dev_priv->num_pipe); + for_each_pipe(i) { + seq_printf(m, "Pipe [%d]:\n", i); + seq_printf(m, " CONF: %08x\n", error->pipe[i].conf); + seq_printf(m, " SRC: %08x\n", error->pipe[i].source); + seq_printf(m, " HTOTAL: %08x\n", error->pipe[i].htotal); + seq_printf(m, " HBLANK: %08x\n", error->pipe[i].hblank); + seq_printf(m, " HSYNC: %08x\n", error->pipe[i].hsync); + seq_printf(m, " VTOTAL: %08x\n", error->pipe[i].vtotal); + seq_printf(m, " VBLANK: %08x\n", error->pipe[i].vblank); + seq_printf(m, " VSYNC: %08x\n", error->pipe[i].vsync); + + seq_printf(m, "Plane [%d]:\n", i); + seq_printf(m, " CNTR: %08x\n", error->plane[i].control); + seq_printf(m, " STRIDE: %08x\n", error->plane[i].stride); + seq_printf(m, " SIZE: %08x\n", error->plane[i].size); + seq_printf(m, " POS: %08x\n", error->plane[i].pos); + seq_printf(m, " ADDR: %08x\n", error->plane[i].addr); + if (INTEL_INFO(dev)->gen >= 4) { + seq_printf(m, " SURF: %08x\n", error->plane[i].surface); + seq_printf(m, " TILEOFF: %08x\n", error->plane[i].tile_offset); + } + + seq_printf(m, "Cursor [%d]:\n", i); + seq_printf(m, " CNTR: %08x\n", error->cursor[i].control); + seq_printf(m, " POS: %08x\n", error->cursor[i].position); + seq_printf(m, " BASE: %08x\n", error->cursor[i].base); + } +} +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_gem_dmabuf.c +++ linux-3.5.0/ubuntu/i915/i915_gem_dmabuf.c @@ -0,0 +1,305 @@ +/* + * Copyright 2012 Red Hat Inc + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Dave Airlie + */ +#include +#include "i915_drv.h" +#include + +static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachment, + enum dma_data_direction dir) +{ + struct drm_i915_gem_object *obj = attachment->dmabuf->priv; + struct sg_table *st; + struct scatterlist *src, *dst; + int ret, i; + + ret = i915_mutex_lock_interruptible(obj->base.dev); + if (ret) + return ERR_PTR(ret); + + ret = i915_gem_object_get_pages(obj); + if (ret) { + st = ERR_PTR(ret); + goto out; + } + + /* Copy sg so that we make an independent mapping */ + st = kmalloc(sizeof(struct sg_table), GFP_KERNEL); + if (st == NULL) { + st = ERR_PTR(-ENOMEM); + goto out; + } + + ret = sg_alloc_table(st, obj->pages->nents, GFP_KERNEL); + if (ret) { + kfree(st); + st = ERR_PTR(ret); + goto out; + } + + src = obj->pages->sgl; + dst = st->sgl; + for (i = 0; i < obj->pages->nents; i++) { + sg_set_page(dst, sg_page(src), PAGE_SIZE, 0); + dst = sg_next(dst); + src = sg_next(src); + } + + if (!dma_map_sg(attachment->dev, st->sgl, st->nents, dir)) { + sg_free_table(st); + kfree(st); + st = ERR_PTR(-ENOMEM); + goto out; + } + + i915_gem_object_pin_pages(obj); + +out: + mutex_unlock(&obj->base.dev->struct_mutex); + return st; +} + +static void i915_gem_unmap_dma_buf(struct dma_buf_attachment *attachment, + struct sg_table *sg, + enum dma_data_direction dir) +{ + dma_unmap_sg(attachment->dev, sg->sgl, sg->nents, dir); + sg_free_table(sg); + kfree(sg); +} + +static void i915_gem_dmabuf_release(struct dma_buf *dma_buf) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + + if (obj->base.export_dma_buf == dma_buf) { + /* drop the reference on the export fd holds */ + obj->base.export_dma_buf = NULL; + drm_gem_object_unreference_unlocked(&obj->base); + } +} + +static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + struct scatterlist *sg; + struct page **pages; + int ret, i; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ERR_PTR(ret); + + if (obj->dma_buf_vmapping) { + obj->vmapping_count++; + goto out_unlock; + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + goto error; + + ret = -ENOMEM; + + pages = drm_malloc_ab(obj->pages->nents, sizeof(struct page *)); + if (pages == NULL) + goto error; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) + pages[i] = sg_page(sg); + + obj->dma_buf_vmapping = vmap(pages, obj->pages->nents, 0, PAGE_KERNEL); + drm_free_large(pages); + + if (!obj->dma_buf_vmapping) + goto error; + + obj->vmapping_count = 1; + i915_gem_object_pin_pages(obj); +out_unlock: + mutex_unlock(&dev->struct_mutex); + return obj->dma_buf_vmapping; + +error: + mutex_unlock(&dev->struct_mutex); + return ERR_PTR(ret); +} + +static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return; + + if (--obj->vmapping_count == 0) { + vunmap(obj->dma_buf_vmapping); + obj->dma_buf_vmapping = NULL; + + i915_gem_object_unpin_pages(obj); + } + mutex_unlock(&dev->struct_mutex); +} + +static void *i915_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num) +{ + return NULL; +} + +static void i915_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr) +{ + +} +static void *i915_gem_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num) +{ + return NULL; +} + +static void i915_gem_dmabuf_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr) +{ + +} + +static int i915_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) +{ + return -EINVAL; +} + +static int i915_gem_begin_cpu_access(struct dma_buf *dma_buf, size_t start, size_t length, enum dma_data_direction direction) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + int ret; + bool write = (direction == DMA_BIDIRECTIONAL || direction == DMA_TO_DEVICE); + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ret = i915_gem_object_set_to_cpu_domain(obj, write); + mutex_unlock(&dev->struct_mutex); + return ret; +} + +static const struct dma_buf_ops i915_dmabuf_ops = { + .map_dma_buf = i915_gem_map_dma_buf, + .unmap_dma_buf = i915_gem_unmap_dma_buf, + .release = i915_gem_dmabuf_release, + .kmap = i915_gem_dmabuf_kmap, + .kmap_atomic = i915_gem_dmabuf_kmap_atomic, + .kunmap = i915_gem_dmabuf_kunmap, + .kunmap_atomic = i915_gem_dmabuf_kunmap_atomic, + .mmap = i915_gem_dmabuf_mmap, + .vmap = i915_gem_dmabuf_vmap, + .vunmap = i915_gem_dmabuf_vunmap, + .begin_cpu_access = i915_gem_begin_cpu_access, +}; + +struct dma_buf *i915_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *gem_obj, int flags) +{ + struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); + + return dma_buf_export(obj, &i915_dmabuf_ops, obj->base.size, flags); +} + +static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) +{ + struct sg_table *sg; + + sg = dma_buf_map_attachment(obj->base.import_attach, DMA_BIDIRECTIONAL); + if (IS_ERR(sg)) + return PTR_ERR(sg); + + obj->pages = sg; + obj->has_dma_mapping = true; + return 0; +} + +static void i915_gem_object_put_pages_dmabuf(struct drm_i915_gem_object *obj) +{ + dma_buf_unmap_attachment(obj->base.import_attach, + obj->pages, DMA_BIDIRECTIONAL); + obj->has_dma_mapping = false; +} + +static const struct drm_i915_gem_object_ops i915_gem_object_dmabuf_ops = { + .get_pages = i915_gem_object_get_pages_dmabuf, + .put_pages = i915_gem_object_put_pages_dmabuf, +}; + +struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + struct dma_buf_attachment *attach; + struct drm_i915_gem_object *obj; + int ret; + + /* is this one of own objects? */ + if (dma_buf->ops == &i915_dmabuf_ops) { + obj = dma_buf->priv; + /* is it from our device? */ + if (obj->base.dev == dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ + drm_gem_object_reference(&obj->base); + dma_buf_put(dma_buf); + return &obj->base; + } + } + + /* need to attach */ + attach = dma_buf_attach(dma_buf, dev->dev); + if (IS_ERR(attach)) + return ERR_CAST(attach); + + + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (obj == NULL) { + ret = -ENOMEM; + goto fail_detach; + } + + ret = drm_gem_private_object_init(dev, &obj->base, dma_buf->size); + if (ret) { + kfree(obj); + goto fail_detach; + } + + i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops); + obj->base.import_attach = attach; + + return &obj->base; + +fail_detach: + dma_buf_detach(dma_buf, attach); + return ERR_PTR(ret); +} --- linux-3.5.0.orig/ubuntu/i915/i915_reg.h +++ linux-3.5.0/ubuntu/i915/i915_reg.h @@ -0,0 +1,4663 @@ +/* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _I915_REG_H_ +#define _I915_REG_H_ + +#define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a))) +#define _TRANSCODER(tran, a, b) ((a) + (tran)*((b)-(a))) + +#define _PORT(port, a, b) ((a) + (port)*((b)-(a))) + +#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a)) +#define _MASKED_BIT_DISABLE(a) ((a) << 16) + +/* + * The Bridge device's PCI config space has information about the + * fb aperture size and the amount of pre-reserved memory. + * This is all handled in the intel-gtt.ko module. i915.ko only + * cares about the vga bit for the vga rbiter. + */ +#define INTEL_GMCH_CTRL 0x52 +#define INTEL_GMCH_VGA_DISABLE (1 << 1) +#define SNB_GMCH_CTRL 0x50 +#define SNB_GMCH_GGMS_SHIFT 8 /* GTT Graphics Memory Size */ +#define SNB_GMCH_GGMS_MASK 0x3 +#define SNB_GMCH_GMS_SHIFT 3 /* Graphics Mode Select */ +#define SNB_GMCH_GMS_MASK 0x1f +#define IVB_GMCH_GMS_SHIFT 4 +#define IVB_GMCH_GMS_MASK 0xf + + +/* PCI config space */ + +#define HPLLCC 0xc0 /* 855 only */ +#define GC_CLOCK_CONTROL_MASK (0xf << 0) +#define GC_CLOCK_133_200 (0 << 0) +#define GC_CLOCK_100_200 (1 << 0) +#define GC_CLOCK_100_133 (2 << 0) +#define GC_CLOCK_166_250 (3 << 0) +#define GCFGC2 0xda +#define GCFGC 0xf0 /* 915+ only */ +#define GC_LOW_FREQUENCY_ENABLE (1 << 7) +#define GC_DISPLAY_CLOCK_190_200_MHZ (0 << 4) +#define GC_DISPLAY_CLOCK_333_MHZ (4 << 4) +#define GC_DISPLAY_CLOCK_MASK (7 << 4) +#define GM45_GC_RENDER_CLOCK_MASK (0xf << 0) +#define GM45_GC_RENDER_CLOCK_266_MHZ (8 << 0) +#define GM45_GC_RENDER_CLOCK_320_MHZ (9 << 0) +#define GM45_GC_RENDER_CLOCK_400_MHZ (0xb << 0) +#define GM45_GC_RENDER_CLOCK_533_MHZ (0xc << 0) +#define I965_GC_RENDER_CLOCK_MASK (0xf << 0) +#define I965_GC_RENDER_CLOCK_267_MHZ (2 << 0) +#define I965_GC_RENDER_CLOCK_333_MHZ (3 << 0) +#define I965_GC_RENDER_CLOCK_444_MHZ (4 << 0) +#define I965_GC_RENDER_CLOCK_533_MHZ (5 << 0) +#define I945_GC_RENDER_CLOCK_MASK (7 << 0) +#define I945_GC_RENDER_CLOCK_166_MHZ (0 << 0) +#define I945_GC_RENDER_CLOCK_200_MHZ (1 << 0) +#define I945_GC_RENDER_CLOCK_250_MHZ (3 << 0) +#define I945_GC_RENDER_CLOCK_400_MHZ (5 << 0) +#define I915_GC_RENDER_CLOCK_MASK (7 << 0) +#define I915_GC_RENDER_CLOCK_166_MHZ (0 << 0) +#define I915_GC_RENDER_CLOCK_200_MHZ (1 << 0) +#define I915_GC_RENDER_CLOCK_333_MHZ (4 << 0) +#define LBB 0xf4 + +/* Graphics reset regs */ +#define I965_GDRST 0xc0 /* PCI config register */ +#define ILK_GDSR 0x2ca4 /* MCHBAR offset */ +#define GRDOM_FULL (0<<2) +#define GRDOM_RENDER (1<<2) +#define GRDOM_MEDIA (3<<2) +#define GRDOM_RESET_ENABLE (1<<0) + +#define GEN6_MBCUNIT_SNPCR 0x900c /* for LLC config */ +#define GEN6_MBC_SNPCR_SHIFT 21 +#define GEN6_MBC_SNPCR_MASK (3<<21) +#define GEN6_MBC_SNPCR_MAX (0<<21) +#define GEN6_MBC_SNPCR_MED (1<<21) +#define GEN6_MBC_SNPCR_LOW (2<<21) +#define GEN6_MBC_SNPCR_MIN (3<<21) /* only 1/16th of the cache is shared */ + +#define GEN6_MBCTL 0x0907c +#define GEN6_MBCTL_ENABLE_BOOT_FETCH (1 << 4) +#define GEN6_MBCTL_CTX_FETCH_NEEDED (1 << 3) +#define GEN6_MBCTL_BME_UPDATE_ENABLE (1 << 2) +#define GEN6_MBCTL_MAE_UPDATE_ENABLE (1 << 1) +#define GEN6_MBCTL_BOOT_FETCH_MECH (1 << 0) + +#define GEN6_GDRST 0x941c +#define GEN6_GRDOM_FULL (1 << 0) +#define GEN6_GRDOM_RENDER (1 << 1) +#define GEN6_GRDOM_MEDIA (1 << 2) +#define GEN6_GRDOM_BLT (1 << 3) + +#define RING_PP_DIR_BASE(ring) ((ring)->mmio_base+0x228) +#define RING_PP_DIR_BASE_READ(ring) ((ring)->mmio_base+0x518) +#define RING_PP_DIR_DCLV(ring) ((ring)->mmio_base+0x220) +#define PP_DIR_DCLV_2G 0xffffffff + +#define GAM_ECOCHK 0x4090 +#define ECOCHK_SNB_BIT (1<<10) +#define ECOCHK_PPGTT_CACHE64B (0x3<<3) +#define ECOCHK_PPGTT_CACHE4B (0x0<<3) + +#define GAC_ECO_BITS 0x14090 +#define ECOBITS_PPGTT_CACHE64B (3<<8) +#define ECOBITS_PPGTT_CACHE4B (0<<8) + +#define GAB_CTL 0x24000 +#define GAB_CTL_CONT_AFTER_PAGEFAULT (1<<8) + +/* VGA stuff */ + +#define VGA_ST01_MDA 0x3ba +#define VGA_ST01_CGA 0x3da + +#define VGA_MSR_WRITE 0x3c2 +#define VGA_MSR_READ 0x3cc +#define VGA_MSR_MEM_EN (1<<1) +#define VGA_MSR_CGA_MODE (1<<0) + +#define VGA_SR_INDEX 0x3c4 +#define VGA_SR_DATA 0x3c5 + +#define VGA_AR_INDEX 0x3c0 +#define VGA_AR_VID_EN (1<<5) +#define VGA_AR_DATA_WRITE 0x3c0 +#define VGA_AR_DATA_READ 0x3c1 + +#define VGA_GR_INDEX 0x3ce +#define VGA_GR_DATA 0x3cf +/* GR05 */ +#define VGA_GR_MEM_READ_MODE_SHIFT 3 +#define VGA_GR_MEM_READ_MODE_PLANE 1 +/* GR06 */ +#define VGA_GR_MEM_MODE_MASK 0xc +#define VGA_GR_MEM_MODE_SHIFT 2 +#define VGA_GR_MEM_A0000_AFFFF 0 +#define VGA_GR_MEM_A0000_BFFFF 1 +#define VGA_GR_MEM_B0000_B7FFF 2 +#define VGA_GR_MEM_B0000_BFFFF 3 + +#define VGA_DACMASK 0x3c6 +#define VGA_DACRX 0x3c7 +#define VGA_DACWX 0x3c8 +#define VGA_DACDATA 0x3c9 + +#define VGA_CR_INDEX_MDA 0x3b4 +#define VGA_CR_DATA_MDA 0x3b5 +#define VGA_CR_INDEX_CGA 0x3d4 +#define VGA_CR_DATA_CGA 0x3d5 + +/* + * Memory interface instructions used by the kernel + */ +#define MI_INSTR(opcode, flags) (((opcode) << 23) | (flags)) + +#define MI_NOOP MI_INSTR(0, 0) +#define MI_USER_INTERRUPT MI_INSTR(0x02, 0) +#define MI_WAIT_FOR_EVENT MI_INSTR(0x03, 0) +#define MI_WAIT_FOR_OVERLAY_FLIP (1<<16) +#define MI_WAIT_FOR_PLANE_B_FLIP (1<<6) +#define MI_WAIT_FOR_PLANE_A_FLIP (1<<2) +#define MI_WAIT_FOR_PLANE_A_SCANLINES (1<<1) +#define MI_FLUSH MI_INSTR(0x04, 0) +#define MI_READ_FLUSH (1 << 0) +#define MI_EXE_FLUSH (1 << 1) +#define MI_NO_WRITE_FLUSH (1 << 2) +#define MI_SCENE_COUNT (1 << 3) /* just increment scene count */ +#define MI_END_SCENE (1 << 4) /* flush binner and incr scene count */ +#define MI_INVALIDATE_ISP (1 << 5) /* invalidate indirect state pointers */ +#define MI_BATCH_BUFFER_END MI_INSTR(0x0a, 0) +#define MI_SUSPEND_FLUSH MI_INSTR(0x0b, 0) +#define MI_SUSPEND_FLUSH_EN (1<<0) +#define MI_REPORT_HEAD MI_INSTR(0x07, 0) +#define MI_OVERLAY_FLIP MI_INSTR(0x11, 0) +#define MI_OVERLAY_CONTINUE (0x0<<21) +#define MI_OVERLAY_ON (0x1<<21) +#define MI_OVERLAY_OFF (0x2<<21) +#define MI_LOAD_SCAN_LINES_INCL MI_INSTR(0x12, 0) +#define MI_DISPLAY_FLIP MI_INSTR(0x14, 2) +#define MI_DISPLAY_FLIP_I915 MI_INSTR(0x14, 1) +#define MI_DISPLAY_FLIP_PLANE(n) ((n) << 20) +/* IVB has funny definitions for which plane to flip. */ +#define MI_DISPLAY_FLIP_IVB_PLANE_A (0 << 19) +#define MI_DISPLAY_FLIP_IVB_PLANE_B (1 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_A (2 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_B (3 << 19) +#define MI_DISPLAY_FLIP_IVB_PLANE_C (4 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_C (5 << 19) +#define MI_ARB_ON_OFF MI_INSTR(0x08, 0) +#define MI_ARB_ENABLE (1<<0) +#define MI_ARB_DISABLE (0<<0) + +#define MI_SET_CONTEXT MI_INSTR(0x18, 0) +#define MI_MM_SPACE_GTT (1<<8) +#define MI_MM_SPACE_PHYSICAL (0<<8) +#define MI_SAVE_EXT_STATE_EN (1<<3) +#define MI_RESTORE_EXT_STATE_EN (1<<2) +#define MI_FORCE_RESTORE (1<<1) +#define MI_RESTORE_INHIBIT (1<<0) +#define MI_STORE_DWORD_IMM MI_INSTR(0x20, 1) +#define MI_MEM_VIRTUAL (1 << 22) /* 965+ only */ +#define MI_STORE_DWORD_INDEX MI_INSTR(0x21, 1) +#define MI_STORE_DWORD_INDEX_SHIFT 2 +/* Official intel docs are somewhat sloppy concerning MI_LOAD_REGISTER_IMM: + * - Always issue a MI_NOOP _before_ the MI_LOAD_REGISTER_IMM - otherwise hw + * simply ignores the register load under certain conditions. + * - One can actually load arbitrary many arbitrary registers: Simply issue x + * address/value pairs. Don't overdue it, though, x <= 2^4 must hold! + */ +#define MI_LOAD_REGISTER_IMM(x) MI_INSTR(0x22, 2*x-1) +#define MI_FLUSH_DW MI_INSTR(0x26, 1) /* for GEN6 */ +#define MI_FLUSH_DW_STORE_INDEX (1<<21) +#define MI_INVALIDATE_TLB (1<<18) +#define MI_FLUSH_DW_OP_STOREDW (1<<14) +#define MI_INVALIDATE_BSD (1<<7) +#define MI_FLUSH_DW_USE_GTT (1<<2) +#define MI_FLUSH_DW_USE_PPGTT (0<<2) +#define MI_BATCH_BUFFER MI_INSTR(0x30, 1) +#define MI_BATCH_NON_SECURE (1) +/* for snb/ivb/vlv this also means "batch in ppgtt" when ppgtt is enabled. */ +#define MI_BATCH_NON_SECURE_I965 (1<<8) +#define MI_BATCH_PPGTT_HSW (1<<8) +#define MI_BATCH_NON_SECURE_HSW (1<<13) +#define MI_BATCH_BUFFER_START MI_INSTR(0x31, 0) +#define MI_BATCH_GTT (2<<6) /* aliased with (1<<7) on gen4 */ +#define MI_SEMAPHORE_MBOX MI_INSTR(0x16, 1) /* gen6+ */ +#define MI_SEMAPHORE_GLOBAL_GTT (1<<22) +#define MI_SEMAPHORE_UPDATE (1<<21) +#define MI_SEMAPHORE_COMPARE (1<<20) +#define MI_SEMAPHORE_REGISTER (1<<18) +#define MI_SEMAPHORE_SYNC_RV (2<<16) +#define MI_SEMAPHORE_SYNC_RB (0<<16) +#define MI_SEMAPHORE_SYNC_VR (0<<16) +#define MI_SEMAPHORE_SYNC_VB (2<<16) +#define MI_SEMAPHORE_SYNC_BR (2<<16) +#define MI_SEMAPHORE_SYNC_BV (0<<16) +#define MI_SEMAPHORE_SYNC_INVALID (1<<0) +/* + * 3D instructions used by the kernel + */ +#define GFX_INSTR(opcode, flags) ((0x3 << 29) | ((opcode) << 24) | (flags)) + +#define GFX_OP_RASTER_RULES ((0x3<<29)|(0x7<<24)) +#define GFX_OP_SCISSOR ((0x3<<29)|(0x1c<<24)|(0x10<<19)) +#define SC_UPDATE_SCISSOR (0x1<<1) +#define SC_ENABLE_MASK (0x1<<0) +#define SC_ENABLE (0x1<<0) +#define GFX_OP_LOAD_INDIRECT ((0x3<<29)|(0x1d<<24)|(0x7<<16)) +#define GFX_OP_SCISSOR_INFO ((0x3<<29)|(0x1d<<24)|(0x81<<16)|(0x1)) +#define SCI_YMIN_MASK (0xffff<<16) +#define SCI_XMIN_MASK (0xffff<<0) +#define SCI_YMAX_MASK (0xffff<<16) +#define SCI_XMAX_MASK (0xffff<<0) +#define GFX_OP_SCISSOR_ENABLE ((0x3<<29)|(0x1c<<24)|(0x10<<19)) +#define GFX_OP_SCISSOR_RECT ((0x3<<29)|(0x1d<<24)|(0x81<<16)|1) +#define GFX_OP_COLOR_FACTOR ((0x3<<29)|(0x1d<<24)|(0x1<<16)|0x0) +#define GFX_OP_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16)) +#define GFX_OP_MAP_INFO ((0x3<<29)|(0x1d<<24)|0x4) +#define GFX_OP_DESTBUFFER_VARS ((0x3<<29)|(0x1d<<24)|(0x85<<16)|0x0) +#define GFX_OP_DESTBUFFER_INFO ((0x3<<29)|(0x1d<<24)|(0x8e<<16)|1) +#define GFX_OP_DRAWRECT_INFO ((0x3<<29)|(0x1d<<24)|(0x80<<16)|(0x3)) +#define GFX_OP_DRAWRECT_INFO_I965 ((0x7900<<16)|0x2) +#define SRC_COPY_BLT_CMD ((2<<29)|(0x43<<22)|4) +#define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)|6) +#define XY_MONO_SRC_COPY_IMM_BLT ((2<<29)|(0x71<<22)|5) +#define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) +#define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) +#define BLT_DEPTH_8 (0<<24) +#define BLT_DEPTH_16_565 (1<<24) +#define BLT_DEPTH_16_1555 (2<<24) +#define BLT_DEPTH_32 (3<<24) +#define BLT_ROP_GXCOPY (0xcc<<16) +#define XY_SRC_COPY_BLT_SRC_TILED (1<<15) /* 965+ only */ +#define XY_SRC_COPY_BLT_DST_TILED (1<<11) /* 965+ only */ +#define CMD_OP_DISPLAYBUFFER_INFO ((0x0<<29)|(0x14<<23)|2) +#define ASYNC_FLIP (1<<22) +#define DISPLAY_PLANE_A (0<<20) +#define DISPLAY_PLANE_B (1<<20) +#define GFX_OP_PIPE_CONTROL(len) ((0x3<<29)|(0x3<<27)|(0x2<<24)|(len-2)) +#define PIPE_CONTROL_CS_STALL (1<<20) +#define PIPE_CONTROL_TLB_INVALIDATE (1<<18) +#define PIPE_CONTROL_QW_WRITE (1<<14) +#define PIPE_CONTROL_DEPTH_STALL (1<<13) +#define PIPE_CONTROL_WRITE_FLUSH (1<<12) +#define PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH (1<<12) /* gen6+ */ +#define PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE (1<<11) /* MBZ on Ironlake */ +#define PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE (1<<10) /* GM45+ only */ +#define PIPE_CONTROL_INDIRECT_STATE_DISABLE (1<<9) +#define PIPE_CONTROL_NOTIFY (1<<8) +#define PIPE_CONTROL_VF_CACHE_INVALIDATE (1<<4) +#define PIPE_CONTROL_CONST_CACHE_INVALIDATE (1<<3) +#define PIPE_CONTROL_STATE_CACHE_INVALIDATE (1<<2) +#define PIPE_CONTROL_STALL_AT_SCOREBOARD (1<<1) +#define PIPE_CONTROL_DEPTH_CACHE_FLUSH (1<<0) +#define PIPE_CONTROL_GLOBAL_GTT (1<<2) /* in addr dword */ + + +/* + * Reset registers + */ +#define DEBUG_RESET_I830 0x6070 +#define DEBUG_RESET_FULL (1<<7) +#define DEBUG_RESET_RENDER (1<<8) +#define DEBUG_RESET_DISPLAY (1<<9) + +/* + * DPIO - a special bus for various display related registers to hide behind: + * 0x800c: m1, m2, n, p1, p2, k dividers + * 0x8014: REF and SFR select + * 0x8014: N divider, VCO select + * 0x801c/3c: core clock bits + * 0x8048/68: low pass filter coefficients + * 0x8100: fast clock controls + */ +#define DPIO_PKT 0x2100 +#define DPIO_RID (0<<24) +#define DPIO_OP_WRITE (1<<16) +#define DPIO_OP_READ (0<<16) +#define DPIO_PORTID (0x12<<8) +#define DPIO_BYTE (0xf<<4) +#define DPIO_BUSY (1<<0) /* status only */ +#define DPIO_DATA 0x2104 +#define DPIO_REG 0x2108 +#define DPIO_CTL 0x2110 +#define DPIO_MODSEL1 (1<<3) /* if ref clk b == 27 */ +#define DPIO_MODSEL0 (1<<2) /* if ref clk a == 27 */ +#define DPIO_SFR_BYPASS (1<<1) +#define DPIO_RESET (1<<0) + +#define _DPIO_DIV_A 0x800c +#define DPIO_POST_DIV_SHIFT (28) /* 3 bits */ +#define DPIO_K_SHIFT (24) /* 4 bits */ +#define DPIO_P1_SHIFT (21) /* 3 bits */ +#define DPIO_P2_SHIFT (16) /* 5 bits */ +#define DPIO_N_SHIFT (12) /* 4 bits */ +#define DPIO_ENABLE_CALIBRATION (1<<11) +#define DPIO_M1DIV_SHIFT (8) /* 3 bits */ +#define DPIO_M2DIV_MASK 0xff +#define _DPIO_DIV_B 0x802c +#define DPIO_DIV(pipe) _PIPE(pipe, _DPIO_DIV_A, _DPIO_DIV_B) + +#define _DPIO_REFSFR_A 0x8014 +#define DPIO_REFSEL_OVERRIDE 27 +#define DPIO_PLL_MODESEL_SHIFT 24 /* 3 bits */ +#define DPIO_BIAS_CURRENT_CTL_SHIFT 21 /* 3 bits, always 0x7 */ +#define DPIO_PLL_REFCLK_SEL_SHIFT 16 /* 2 bits */ +#define DPIO_PLL_REFCLK_SEL_MASK 3 +#define DPIO_DRIVER_CTL_SHIFT 12 /* always set to 0x8 */ +#define DPIO_CLK_BIAS_CTL_SHIFT 8 /* always set to 0x5 */ +#define _DPIO_REFSFR_B 0x8034 +#define DPIO_REFSFR(pipe) _PIPE(pipe, _DPIO_REFSFR_A, _DPIO_REFSFR_B) + +#define _DPIO_CORE_CLK_A 0x801c +#define _DPIO_CORE_CLK_B 0x803c +#define DPIO_CORE_CLK(pipe) _PIPE(pipe, _DPIO_CORE_CLK_A, _DPIO_CORE_CLK_B) + +#define _DPIO_LFP_COEFF_A 0x8048 +#define _DPIO_LFP_COEFF_B 0x8068 +#define DPIO_LFP_COEFF(pipe) _PIPE(pipe, _DPIO_LFP_COEFF_A, _DPIO_LFP_COEFF_B) + +#define DPIO_FASTCLK_DISABLE 0x8100 + +#define DPIO_DATA_CHANNEL1 0x8220 +#define DPIO_DATA_CHANNEL2 0x8420 + +/* + * Fence registers + */ +#define FENCE_REG_830_0 0x2000 +#define FENCE_REG_945_8 0x3000 +#define I830_FENCE_START_MASK 0x07f80000 +#define I830_FENCE_TILING_Y_SHIFT 12 +#define I830_FENCE_SIZE_BITS(size) ((ffs((size) >> 19) - 1) << 8) +#define I830_FENCE_PITCH_SHIFT 4 +#define I830_FENCE_REG_VALID (1<<0) +#define I915_FENCE_MAX_PITCH_VAL 4 +#define I830_FENCE_MAX_PITCH_VAL 6 +#define I830_FENCE_MAX_SIZE_VAL (1<<8) + +#define I915_FENCE_START_MASK 0x0ff00000 +#define I915_FENCE_SIZE_BITS(size) ((ffs((size) >> 20) - 1) << 8) + +#define FENCE_REG_965_0 0x03000 +#define I965_FENCE_PITCH_SHIFT 2 +#define I965_FENCE_TILING_Y_SHIFT 1 +#define I965_FENCE_REG_VALID (1<<0) +#define I965_FENCE_MAX_PITCH_VAL 0x0400 + +#define FENCE_REG_SANDYBRIDGE_0 0x100000 +#define SANDYBRIDGE_FENCE_PITCH_SHIFT 32 + +/* control register for cpu gtt access */ +#define TILECTL 0x101000 +#define TILECTL_SWZCTL (1 << 0) +#define TILECTL_TLB_PREFETCH_DIS (1 << 2) +#define TILECTL_BACKSNOOP_DIS (1 << 3) + +/* + * Instruction and interrupt control regs + */ +#define PGTBL_ER 0x02024 +#define RENDER_RING_BASE 0x02000 +#define BSD_RING_BASE 0x04000 +#define GEN6_BSD_RING_BASE 0x12000 +#define BLT_RING_BASE 0x22000 +#define RING_TAIL(base) ((base)+0x30) +#define RING_HEAD(base) ((base)+0x34) +#define RING_START(base) ((base)+0x38) +#define RING_CTL(base) ((base)+0x3c) +#define RING_SYNC_0(base) ((base)+0x40) +#define RING_SYNC_1(base) ((base)+0x44) +#define GEN6_RVSYNC (RING_SYNC_0(RENDER_RING_BASE)) +#define GEN6_RBSYNC (RING_SYNC_1(RENDER_RING_BASE)) +#define GEN6_VRSYNC (RING_SYNC_1(GEN6_BSD_RING_BASE)) +#define GEN6_VBSYNC (RING_SYNC_0(GEN6_BSD_RING_BASE)) +#define GEN6_BRSYNC (RING_SYNC_0(BLT_RING_BASE)) +#define GEN6_BVSYNC (RING_SYNC_1(BLT_RING_BASE)) +#define RING_MAX_IDLE(base) ((base)+0x54) +#define RING_HWS_PGA(base) ((base)+0x80) +#define RING_HWS_PGA_GEN6(base) ((base)+0x2080) +#define ARB_MODE 0x04030 +#define ARB_MODE_SWIZZLE_SNB (1<<4) +#define ARB_MODE_SWIZZLE_IVB (1<<5) +#define RENDER_HWS_PGA_GEN7 (0x04080) +#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id) +#define DONE_REG 0x40b0 +#define BSD_HWS_PGA_GEN7 (0x04180) +#define BLT_HWS_PGA_GEN7 (0x04280) +#define RING_ACTHD(base) ((base)+0x74) +#define RING_NOPID(base) ((base)+0x94) +#define RING_IMR(base) ((base)+0xa8) +#define RING_TIMESTAMP(base) ((base)+0x358) +#define TAIL_ADDR 0x001FFFF8 +#define HEAD_WRAP_COUNT 0xFFE00000 +#define HEAD_WRAP_ONE 0x00200000 +#define HEAD_ADDR 0x001FFFFC +#define RING_NR_PAGES 0x001FF000 +#define RING_REPORT_MASK 0x00000006 +#define RING_REPORT_64K 0x00000002 +#define RING_REPORT_128K 0x00000004 +#define RING_NO_REPORT 0x00000000 +#define RING_VALID_MASK 0x00000001 +#define RING_VALID 0x00000001 +#define RING_INVALID 0x00000000 +#define RING_WAIT_I8XX (1<<0) /* gen2, PRBx_HEAD */ +#define RING_WAIT (1<<11) /* gen3+, PRBx_CTL */ +#define RING_WAIT_SEMAPHORE (1<<10) /* gen6+ */ +#if 0 +#define PRB0_TAIL 0x02030 +#define PRB0_HEAD 0x02034 +#define PRB0_START 0x02038 +#define PRB0_CTL 0x0203c +#define PRB1_TAIL 0x02040 /* 915+ only */ +#define PRB1_HEAD 0x02044 /* 915+ only */ +#define PRB1_START 0x02048 /* 915+ only */ +#define PRB1_CTL 0x0204c /* 915+ only */ +#endif +#define IPEIR_I965 0x02064 +#define IPEHR_I965 0x02068 +#define INSTDONE_I965 0x0206c +#define GEN7_INSTDONE_1 0x0206c +#define GEN7_SC_INSTDONE 0x07100 +#define GEN7_SAMPLER_INSTDONE 0x0e160 +#define GEN7_ROW_INSTDONE 0x0e164 +#define I915_NUM_INSTDONE_REG 4 +#define RING_IPEIR(base) ((base)+0x64) +#define RING_IPEHR(base) ((base)+0x68) +#define RING_INSTDONE(base) ((base)+0x6c) +#define RING_INSTPS(base) ((base)+0x70) +#define RING_DMA_FADD(base) ((base)+0x78) +#define RING_INSTPM(base) ((base)+0xc0) +#define INSTPS 0x02070 /* 965+ only */ +#define INSTDONE1 0x0207c /* 965+ only */ +#define ACTHD_I965 0x02074 +#define HWS_PGA 0x02080 +#define HWS_ADDRESS_MASK 0xfffff000 +#define HWS_START_ADDRESS_SHIFT 4 +#define PWRCTXA 0x2088 /* 965GM+ only */ +#define PWRCTX_EN (1<<0) +#define IPEIR 0x02088 +#define IPEHR 0x0208c +#define INSTDONE 0x02090 +#define NOPID 0x02094 +#define HWSTAM 0x02098 +#define DMA_FADD_I8XX 0x020d0 + +#define ERROR_GEN6 0x040a0 +#define GEN7_ERR_INT 0x44040 +#define ERR_INT_MMIO_UNCLAIMED (1<<13) + +#define DERRMR 0x44050 + +/* GM45+ chicken bits -- debug workaround bits that may be required + * for various sorts of correct behavior. The top 16 bits of each are + * the enables for writing to the corresponding low bit. + */ +#define _3D_CHICKEN 0x02084 +#define _3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB (1 << 10) +#define _3D_CHICKEN2 0x0208c +/* Disables pipelining of read flushes past the SF-WIZ interface. + * Required on all Ironlake steppings according to the B-Spec, but the + * particular danger of not doing so is not specified. + */ +# define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14) +#define _3D_CHICKEN3 0x02090 +#define _3D_CHICKEN_SF_DISABLE_OBJEND_CULL (1 << 10) +#define _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL (1 << 5) + +#define MI_MODE 0x0209c +# define VS_TIMER_DISPATCH (1 << 6) +# define MI_FLUSH_ENABLE (1 << 12) +# define ASYNC_FLIP_PERF_DISABLE (1 << 14) + +#define GEN6_GT_MODE 0x20d0 +#define GEN6_GT_MODE_HI (1 << 9) +#define GEN6_TD_FOUR_ROW_DISPATCH_DISABLE (1 << 5) + +#define GFX_MODE 0x02520 +#define GFX_MODE_GEN7 0x0229c +#define RING_MODE_GEN7(ring) ((ring)->mmio_base+0x29c) +#define GFX_RUN_LIST_ENABLE (1<<15) +#define GFX_TLB_INVALIDATE_ALWAYS (1<<13) +#define GFX_SURFACE_FAULT_ENABLE (1<<12) +#define GFX_REPLAY_MODE (1<<11) +#define GFX_PSMI_GRANULARITY (1<<10) +#define GFX_PPGTT_ENABLE (1<<9) + +#define VLV_DISPLAY_BASE 0x180000 + +#define SCPD0 0x0209c /* 915+ only */ +#define IER 0x020a0 +#define IIR 0x020a4 +#define IMR 0x020a8 +#define ISR 0x020ac +#define VLV_GUNIT_CLOCK_GATE 0x182060 +#define GCFG_DIS (1<<8) +#define VLV_IIR_RW 0x182084 +#define VLV_IER 0x1820a0 +#define VLV_IIR 0x1820a4 +#define VLV_IMR 0x1820a8 +#define VLV_ISR 0x1820ac +#define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18) +#define I915_DISPLAY_PORT_INTERRUPT (1<<17) +#define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15) +#define I915_GMCH_THERMAL_SENSOR_EVENT_INTERRUPT (1<<14) /* p-state */ +#define I915_HWB_OOM_INTERRUPT (1<<13) +#define I915_SYNC_STATUS_INTERRUPT (1<<12) +#define I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT (1<<11) +#define I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT (1<<10) +#define I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT (1<<9) +#define I915_DISPLAY_PLANE_C_FLIP_PENDING_INTERRUPT (1<<8) +#define I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT (1<<7) +#define I915_DISPLAY_PIPE_A_EVENT_INTERRUPT (1<<6) +#define I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT (1<<5) +#define I915_DISPLAY_PIPE_B_EVENT_INTERRUPT (1<<4) +#define I915_DEBUG_INTERRUPT (1<<2) +#define I915_USER_INTERRUPT (1<<1) +#define I915_ASLE_INTERRUPT (1<<0) +#define I915_BSD_USER_INTERRUPT (1<<25) +#define EIR 0x020b0 +#define EMR 0x020b4 +#define ESR 0x020b8 +#define GM45_ERROR_PAGE_TABLE (1<<5) +#define GM45_ERROR_MEM_PRIV (1<<4) +#define I915_ERROR_PAGE_TABLE (1<<4) +#define GM45_ERROR_CP_PRIV (1<<3) +#define I915_ERROR_MEMORY_REFRESH (1<<1) +#define I915_ERROR_INSTRUCTION (1<<0) +#define INSTPM 0x020c0 +#define INSTPM_SELF_EN (1<<12) /* 915GM only */ +#define INSTPM_AGPBUSY_DIS (1<<11) /* gen3: when disabled, pending interrupts + will not assert AGPBUSY# and will only + be delivered when out of C3. */ +#define INSTPM_FORCE_ORDERING (1<<7) /* GEN6+ */ +#define ACTHD 0x020c8 +#define FW_BLC 0x020d8 +#define FW_BLC2 0x020dc +#define FW_BLC_SELF 0x020e0 /* 915+ only */ +#define FW_BLC_SELF_EN_MASK (1<<31) +#define FW_BLC_SELF_FIFO_MASK (1<<16) /* 945 only */ +#define FW_BLC_SELF_EN (1<<15) /* 945 only */ +#define MM_BURST_LENGTH 0x00700000 +#define MM_FIFO_WATERMARK 0x0001F000 +#define LM_BURST_LENGTH 0x00000700 +#define LM_FIFO_WATERMARK 0x0000001F +#define MI_ARB_STATE 0x020e4 /* 915+ only */ + +/* Make render/texture TLB fetches lower priorty than associated data + * fetches. This is not turned on by default + */ +#define MI_ARB_RENDER_TLB_LOW_PRIORITY (1 << 15) + +/* Isoch request wait on GTT enable (Display A/B/C streams). + * Make isoch requests stall on the TLB update. May cause + * display underruns (test mode only) + */ +#define MI_ARB_ISOCH_WAIT_GTT (1 << 14) + +/* Block grant count for isoch requests when block count is + * set to a finite value. + */ +#define MI_ARB_BLOCK_GRANT_MASK (3 << 12) +#define MI_ARB_BLOCK_GRANT_8 (0 << 12) /* for 3 display planes */ +#define MI_ARB_BLOCK_GRANT_4 (1 << 12) /* for 2 display planes */ +#define MI_ARB_BLOCK_GRANT_2 (2 << 12) /* for 1 display plane */ +#define MI_ARB_BLOCK_GRANT_0 (3 << 12) /* don't use */ + +/* Enable render writes to complete in C2/C3/C4 power states. + * If this isn't enabled, render writes are prevented in low + * power states. That seems bad to me. + */ +#define MI_ARB_C3_LP_WRITE_ENABLE (1 << 11) + +/* This acknowledges an async flip immediately instead + * of waiting for 2TLB fetches. + */ +#define MI_ARB_ASYNC_FLIP_ACK_IMMEDIATE (1 << 10) + +/* Enables non-sequential data reads through arbiter + */ +#define MI_ARB_DUAL_DATA_PHASE_DISABLE (1 << 9) + +/* Disable FSB snooping of cacheable write cycles from binner/render + * command stream + */ +#define MI_ARB_CACHE_SNOOP_DISABLE (1 << 8) + +/* Arbiter time slice for non-isoch streams */ +#define MI_ARB_TIME_SLICE_MASK (7 << 5) +#define MI_ARB_TIME_SLICE_1 (0 << 5) +#define MI_ARB_TIME_SLICE_2 (1 << 5) +#define MI_ARB_TIME_SLICE_4 (2 << 5) +#define MI_ARB_TIME_SLICE_6 (3 << 5) +#define MI_ARB_TIME_SLICE_8 (4 << 5) +#define MI_ARB_TIME_SLICE_10 (5 << 5) +#define MI_ARB_TIME_SLICE_14 (6 << 5) +#define MI_ARB_TIME_SLICE_16 (7 << 5) + +/* Low priority grace period page size */ +#define MI_ARB_LOW_PRIORITY_GRACE_4KB (0 << 4) /* default */ +#define MI_ARB_LOW_PRIORITY_GRACE_8KB (1 << 4) + +/* Disable display A/B trickle feed */ +#define MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE (1 << 2) + +/* Set display plane priority */ +#define MI_ARB_DISPLAY_PRIORITY_A_B (0 << 0) /* display A > display B */ +#define MI_ARB_DISPLAY_PRIORITY_B_A (1 << 0) /* display B > display A */ + +#define CACHE_MODE_0 0x02120 /* 915+ only */ +#define CM0_PIPELINED_RENDER_FLUSH_DISABLE (1<<8) +#define CM0_IZ_OPT_DISABLE (1<<6) +#define CM0_ZR_OPT_DISABLE (1<<5) +#define CM0_STC_EVICT_DISABLE_LRA_SNB (1<<5) +#define CM0_DEPTH_EVICT_DISABLE (1<<4) +#define CM0_COLOR_EVICT_DISABLE (1<<3) +#define CM0_DEPTH_WRITE_DISABLE (1<<1) +#define CM0_RC_OP_FLUSH_DISABLE (1<<0) +#define BB_ADDR 0x02140 /* 8 bytes */ +#define GFX_FLSH_CNTL 0x02170 /* 915+ only */ +#define GFX_FLSH_CNTL_GEN6 0x101008 +#define GFX_FLSH_CNTL_EN (1<<0) +#define ECOSKPD 0x021d0 +#define ECO_GATING_CX_ONLY (1<<3) +#define ECO_FLIP_DONE (1<<0) + +#define CACHE_MODE_1 0x7004 /* IVB+ */ +#define PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6) + +/* GEN6 interrupt control + * Note that the per-ring interrupt bits do alias with the global interrupt bits + * in GTIMR. */ +#define GEN6_RENDER_HWSTAM 0x2098 +#define GEN6_RENDER_IMR 0x20a8 +#define GEN6_RENDER_CONTEXT_SWITCH_INTERRUPT (1 << 8) +#define GEN6_RENDER_PPGTT_PAGE_FAULT (1 << 7) +#define GEN6_RENDER_TIMEOUT_COUNTER_EXPIRED (1 << 6) +#define GEN6_RENDER_L3_PARITY_ERROR (1 << 5) +#define GEN6_RENDER_PIPE_CONTROL_NOTIFY_INTERRUPT (1 << 4) +#define GEN6_RENDER_COMMAND_PARSER_MASTER_ERROR (1 << 3) +#define GEN6_RENDER_SYNC_STATUS (1 << 2) +#define GEN6_RENDER_DEBUG_INTERRUPT (1 << 1) +#define GEN6_RENDER_USER_INTERRUPT (1 << 0) + +#define GEN6_BLITTER_HWSTAM 0x22098 +#define GEN6_BLITTER_IMR 0x220a8 +#define GEN6_BLITTER_MI_FLUSH_DW_NOTIFY_INTERRUPT (1 << 26) +#define GEN6_BLITTER_COMMAND_PARSER_MASTER_ERROR (1 << 25) +#define GEN6_BLITTER_SYNC_STATUS (1 << 24) +#define GEN6_BLITTER_USER_INTERRUPT (1 << 22) + +#define GEN6_BLITTER_ECOSKPD 0x221d0 +#define GEN6_BLITTER_LOCK_SHIFT 16 +#define GEN6_BLITTER_FBC_NOTIFY (1<<3) + +#define GEN6_BSD_SLEEP_PSMI_CONTROL 0x12050 +#define GEN6_BSD_SLEEP_MSG_DISABLE (1 << 0) +#define GEN6_BSD_SLEEP_FLUSH_DISABLE (1 << 2) +#define GEN6_BSD_SLEEP_INDICATOR (1 << 3) +#define GEN6_BSD_GO_INDICATOR (1 << 4) + +#define GEN6_BSD_HWSTAM 0x12098 +#define GEN6_BSD_IMR 0x120a8 +#define GEN6_BSD_USER_INTERRUPT (1 << 12) + +#define GEN6_BSD_RNCID 0x12198 + +#define GEN7_FF_THREAD_MODE 0x20a0 +#define GEN7_FF_SCHED_MASK 0x0077070 +#define GEN7_FF_TS_SCHED_HS1 (0x5<<16) +#define GEN7_FF_TS_SCHED_HS0 (0x3<<16) +#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16) +#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */ +#define GEN7_FF_VS_SCHED_HS1 (0x5<<12) +#define GEN7_FF_VS_SCHED_HS0 (0x3<<12) +#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */ +#define GEN7_FF_VS_SCHED_HW (0x0<<12) +#define GEN7_FF_DS_SCHED_HS1 (0x5<<4) +#define GEN7_FF_DS_SCHED_HS0 (0x3<<4) +#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */ +#define GEN7_FF_DS_SCHED_HW (0x0<<4) + +/* + * Framebuffer compression (915+ only) + */ + +#define FBC_CFB_BASE 0x03200 /* 4k page aligned */ +#define FBC_LL_BASE 0x03204 /* 4k page aligned */ +#define FBC_CONTROL 0x03208 +#define FBC_CTL_EN (1<<31) +#define FBC_CTL_PERIODIC (1<<30) +#define FBC_CTL_INTERVAL_SHIFT (16) +#define FBC_CTL_UNCOMPRESSIBLE (1<<14) +#define FBC_CTL_C3_IDLE (1<<13) +#define FBC_CTL_STRIDE_SHIFT (5) +#define FBC_CTL_FENCENO (1<<0) +#define FBC_COMMAND 0x0320c +#define FBC_CMD_COMPRESS (1<<0) +#define FBC_STATUS 0x03210 +#define FBC_STAT_COMPRESSING (1<<31) +#define FBC_STAT_COMPRESSED (1<<30) +#define FBC_STAT_MODIFIED (1<<29) +#define FBC_STAT_CURRENT_LINE (1<<0) +#define FBC_CONTROL2 0x03214 +#define FBC_CTL_FENCE_DBL (0<<4) +#define FBC_CTL_IDLE_IMM (0<<2) +#define FBC_CTL_IDLE_FULL (1<<2) +#define FBC_CTL_IDLE_LINE (2<<2) +#define FBC_CTL_IDLE_DEBUG (3<<2) +#define FBC_CTL_CPU_FENCE (1<<1) +#define FBC_CTL_PLANEA (0<<0) +#define FBC_CTL_PLANEB (1<<0) +#define FBC_FENCE_OFF 0x0321b +#define FBC_TAG 0x03300 + +#define FBC_LL_SIZE (1536) + +/* Framebuffer compression for GM45+ */ +#define DPFC_CB_BASE 0x3200 +#define DPFC_CONTROL 0x3208 +#define DPFC_CTL_EN (1<<31) +#define DPFC_CTL_PLANEA (0<<30) +#define DPFC_CTL_PLANEB (1<<30) +#define DPFC_CTL_FENCE_EN (1<<29) +#define DPFC_CTL_PERSISTENT_MODE (1<<25) +#define DPFC_SR_EN (1<<10) +#define DPFC_CTL_LIMIT_1X (0<<6) +#define DPFC_CTL_LIMIT_2X (1<<6) +#define DPFC_CTL_LIMIT_4X (2<<6) +#define DPFC_RECOMP_CTL 0x320c +#define DPFC_RECOMP_STALL_EN (1<<27) +#define DPFC_RECOMP_STALL_WM_SHIFT (16) +#define DPFC_RECOMP_STALL_WM_MASK (0x07ff0000) +#define DPFC_RECOMP_TIMER_COUNT_SHIFT (0) +#define DPFC_RECOMP_TIMER_COUNT_MASK (0x0000003f) +#define DPFC_STATUS 0x3210 +#define DPFC_INVAL_SEG_SHIFT (16) +#define DPFC_INVAL_SEG_MASK (0x07ff0000) +#define DPFC_COMP_SEG_SHIFT (0) +#define DPFC_COMP_SEG_MASK (0x000003ff) +#define DPFC_STATUS2 0x3214 +#define DPFC_FENCE_YOFF 0x3218 +#define DPFC_CHICKEN 0x3224 +#define DPFC_HT_MODIFY (1<<31) + +/* Framebuffer compression for Ironlake */ +#define ILK_DPFC_CB_BASE 0x43200 +#define ILK_DPFC_CONTROL 0x43208 +/* The bit 28-8 is reserved */ +#define DPFC_RESERVED (0x1FFFFF00) +#define ILK_DPFC_RECOMP_CTL 0x4320c +#define ILK_DPFC_STATUS 0x43210 +#define ILK_DPFC_FENCE_YOFF 0x43218 +#define ILK_DPFC_CHICKEN 0x43224 +#define ILK_FBC_RT_BASE 0x2128 +#define ILK_FBC_RT_VALID (1<<0) + +#define ILK_DISPLAY_CHICKEN1 0x42000 +#define ILK_FBCQ_DIS (1<<22) +#define ILK_PABSTRETCH_DIS (1<<21) + + +/* + * Framebuffer compression for Sandybridge + * + * The following two registers are of type GTTMMADR + */ +#define SNB_DPFC_CTL_SA 0x100100 +#define SNB_CPU_FENCE_ENABLE (1<<29) +#define DPFC_CPU_FENCE_OFFSET 0x100104 + + +/* + * GPIO regs + */ +#define GPIOA 0x5010 +#define GPIOB 0x5014 +#define GPIOC 0x5018 +#define GPIOD 0x501c +#define GPIOE 0x5020 +#define GPIOF 0x5024 +#define GPIOG 0x5028 +#define GPIOH 0x502c +# define GPIO_CLOCK_DIR_MASK (1 << 0) +# define GPIO_CLOCK_DIR_IN (0 << 1) +# define GPIO_CLOCK_DIR_OUT (1 << 1) +# define GPIO_CLOCK_VAL_MASK (1 << 2) +# define GPIO_CLOCK_VAL_OUT (1 << 3) +# define GPIO_CLOCK_VAL_IN (1 << 4) +# define GPIO_CLOCK_PULLUP_DISABLE (1 << 5) +# define GPIO_DATA_DIR_MASK (1 << 8) +# define GPIO_DATA_DIR_IN (0 << 9) +# define GPIO_DATA_DIR_OUT (1 << 9) +# define GPIO_DATA_VAL_MASK (1 << 10) +# define GPIO_DATA_VAL_OUT (1 << 11) +# define GPIO_DATA_VAL_IN (1 << 12) +# define GPIO_DATA_PULLUP_DISABLE (1 << 13) + +#define GMBUS0 0x5100 /* clock/port select */ +#define GMBUS_RATE_100KHZ (0<<8) +#define GMBUS_RATE_50KHZ (1<<8) +#define GMBUS_RATE_400KHZ (2<<8) /* reserved on Pineview */ +#define GMBUS_RATE_1MHZ (3<<8) /* reserved on Pineview */ +#define GMBUS_HOLD_EXT (1<<7) /* 300ns hold time, rsvd on Pineview */ +#define GMBUS_PORT_DISABLED 0 +#define GMBUS_PORT_SSC 1 +#define GMBUS_PORT_VGADDC 2 +#define GMBUS_PORT_PANEL 3 +#define GMBUS_PORT_DPC 4 /* HDMIC */ +#define GMBUS_PORT_DPB 5 /* SDVO, HDMIB */ +#define GMBUS_PORT_DPD 6 /* HDMID */ +#define GMBUS_PORT_RESERVED 7 /* 7 reserved */ +#define GMBUS_NUM_PORTS (GMBUS_PORT_DPD - GMBUS_PORT_SSC + 1) +#define GMBUS1 0x5104 /* command/status */ +#define GMBUS_SW_CLR_INT (1<<31) +#define GMBUS_SW_RDY (1<<30) +#define GMBUS_ENT (1<<29) /* enable timeout */ +#define GMBUS_CYCLE_NONE (0<<25) +#define GMBUS_CYCLE_WAIT (1<<25) +#define GMBUS_CYCLE_INDEX (2<<25) +#define GMBUS_CYCLE_STOP (4<<25) +#define GMBUS_BYTE_COUNT_SHIFT 16 +#define GMBUS_SLAVE_INDEX_SHIFT 8 +#define GMBUS_SLAVE_ADDR_SHIFT 1 +#define GMBUS_SLAVE_READ (1<<0) +#define GMBUS_SLAVE_WRITE (0<<0) +#define GMBUS2 0x5108 /* status */ +#define GMBUS_INUSE (1<<15) +#define GMBUS_HW_WAIT_PHASE (1<<14) +#define GMBUS_STALL_TIMEOUT (1<<13) +#define GMBUS_INT (1<<12) +#define GMBUS_HW_RDY (1<<11) +#define GMBUS_SATOER (1<<10) +#define GMBUS_ACTIVE (1<<9) +#define GMBUS3 0x510c /* data buffer bytes 3-0 */ +#define GMBUS4 0x5110 /* interrupt mask (Pineview+) */ +#define GMBUS_SLAVE_TIMEOUT_EN (1<<4) +#define GMBUS_NAK_EN (1<<3) +#define GMBUS_IDLE_EN (1<<2) +#define GMBUS_HW_WAIT_EN (1<<1) +#define GMBUS_HW_RDY_EN (1<<0) +#define GMBUS5 0x5120 /* byte index */ +#define GMBUS_2BYTE_INDEX_EN (1<<31) + +/* + * Clock control & power management + */ + +#define VGA0 0x6000 +#define VGA1 0x6004 +#define VGA_PD 0x6010 +#define VGA0_PD_P2_DIV_4 (1 << 7) +#define VGA0_PD_P1_DIV_2 (1 << 5) +#define VGA0_PD_P1_SHIFT 0 +#define VGA0_PD_P1_MASK (0x1f << 0) +#define VGA1_PD_P2_DIV_4 (1 << 15) +#define VGA1_PD_P1_DIV_2 (1 << 13) +#define VGA1_PD_P1_SHIFT 8 +#define VGA1_PD_P1_MASK (0x1f << 8) +#define _DPLL_A 0x06014 +#define _DPLL_B 0x06018 +#define DPLL(pipe) _PIPE(pipe, _DPLL_A, _DPLL_B) +#define DPLL_VCO_ENABLE (1 << 31) +#define DPLL_DVO_HIGH_SPEED (1 << 30) +#define DPLL_EXT_BUFFER_ENABLE_VLV (1 << 30) +#define DPLL_SYNCLOCK_ENABLE (1 << 29) +#define DPLL_REFA_CLK_ENABLE_VLV (1 << 29) +#define DPLL_VGA_MODE_DIS (1 << 28) +#define DPLLB_MODE_DAC_SERIAL (1 << 26) /* i915 */ +#define DPLLB_MODE_LVDS (2 << 26) /* i915 */ +#define DPLL_MODE_MASK (3 << 26) +#define DPLL_DAC_SERIAL_P2_CLOCK_DIV_10 (0 << 24) /* i915 */ +#define DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 (1 << 24) /* i915 */ +#define DPLLB_LVDS_P2_CLOCK_DIV_14 (0 << 24) /* i915 */ +#define DPLLB_LVDS_P2_CLOCK_DIV_7 (1 << 24) /* i915 */ +#define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ +#define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ +#define DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW 0x00ff8000 /* Pineview */ +#define DPLL_LOCK_VLV (1<<15) +#define DPLL_INTEGRATED_CLOCK_VLV (1<<13) + +#define SRX_INDEX 0x3c4 +#define SRX_DATA 0x3c5 +#define SR01 1 +#define SR01_SCREEN_OFF (1<<5) + +#define PPCR 0x61204 +#define PPCR_ON (1<<0) + +#define DVOB 0x61140 +#define DVOB_ON (1<<31) +#define DVOC 0x61160 +#define DVOC_ON (1<<31) +#define LVDS 0x61180 +#define LVDS_ON (1<<31) + +/* Scratch pad debug 0 reg: + */ +#define DPLL_FPA01_P1_POST_DIV_MASK_I830 0x001f0000 +/* + * The i830 generation, in LVDS mode, defines P1 as the bit number set within + * this field (only one bit may be set). + */ +#define DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS 0x003f0000 +#define DPLL_FPA01_P1_POST_DIV_SHIFT 16 +#define DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW 15 +/* i830, required in DVO non-gang */ +#define PLL_P2_DIVIDE_BY_4 (1 << 23) +#define PLL_P1_DIVIDE_BY_TWO (1 << 21) /* i830 */ +#define PLL_REF_INPUT_DREFCLK (0 << 13) +#define PLL_REF_INPUT_TVCLKINA (1 << 13) /* i830 */ +#define PLL_REF_INPUT_TVCLKINBC (2 << 13) /* SDVO TVCLKIN */ +#define PLLB_REF_INPUT_SPREADSPECTRUMIN (3 << 13) +#define PLL_REF_INPUT_MASK (3 << 13) +#define PLL_LOAD_PULSE_PHASE_SHIFT 9 +/* Ironlake */ +# define PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT 9 +# define PLL_REF_SDVO_HDMI_MULTIPLIER_MASK (7 << 9) +# define PLL_REF_SDVO_HDMI_MULTIPLIER(x) (((x)-1) << 9) +# define DPLL_FPA1_P1_POST_DIV_SHIFT 0 +# define DPLL_FPA1_P1_POST_DIV_MASK 0xff + +/* + * Parallel to Serial Load Pulse phase selection. + * Selects the phase for the 10X DPLL clock for the PCIe + * digital display port. The range is 4 to 13; 10 or more + * is just a flip delay. The default is 6 + */ +#define PLL_LOAD_PULSE_PHASE_MASK (0xf << PLL_LOAD_PULSE_PHASE_SHIFT) +#define DISPLAY_RATE_SELECT_FPA1 (1 << 8) +/* + * SDVO multiplier for 945G/GM. Not used on 965. + */ +#define SDVO_MULTIPLIER_MASK 0x000000ff +#define SDVO_MULTIPLIER_SHIFT_HIRES 4 +#define SDVO_MULTIPLIER_SHIFT_VGA 0 +#define _DPLL_A_MD 0x0601c /* 965+ only */ +/* + * UDI pixel divider, controlling how many pixels are stuffed into a packet. + * + * Value is pixels minus 1. Must be set to 1 pixel for SDVO. + */ +#define DPLL_MD_UDI_DIVIDER_MASK 0x3f000000 +#define DPLL_MD_UDI_DIVIDER_SHIFT 24 +/* UDI pixel divider for VGA, same as DPLL_MD_UDI_DIVIDER_MASK. */ +#define DPLL_MD_VGA_UDI_DIVIDER_MASK 0x003f0000 +#define DPLL_MD_VGA_UDI_DIVIDER_SHIFT 16 +/* + * SDVO/UDI pixel multiplier. + * + * SDVO requires that the bus clock rate be between 1 and 2 Ghz, and the bus + * clock rate is 10 times the DPLL clock. At low resolution/refresh rate + * modes, the bus rate would be below the limits, so SDVO allows for stuffing + * dummy bytes in the datastream at an increased clock rate, with both sides of + * the link knowing how many bytes are fill. + * + * So, for a mode with a dotclock of 65Mhz, we would want to double the clock + * rate to 130Mhz to get a bus rate of 1.30Ghz. The DPLL clock rate would be + * set to 130Mhz, and the SDVO multiplier set to 2x in this register and + * through an SDVO command. + * + * This register field has values of multiplication factor minus 1, with + * a maximum multiplier of 5 for SDVO. + */ +#define DPLL_MD_UDI_MULTIPLIER_MASK 0x00003f00 +#define DPLL_MD_UDI_MULTIPLIER_SHIFT 8 +/* + * SDVO/UDI pixel multiplier for VGA, same as DPLL_MD_UDI_MULTIPLIER_MASK. + * This best be set to the default value (3) or the CRT won't work. No, + * I don't entirely understand what this does... + */ +#define DPLL_MD_VGA_UDI_MULTIPLIER_MASK 0x0000003f +#define DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT 0 +#define _DPLL_B_MD 0x06020 /* 965+ only */ +#define DPLL_MD(pipe) _PIPE(pipe, _DPLL_A_MD, _DPLL_B_MD) + +#define _FPA0 0x06040 +#define _FPA1 0x06044 +#define _FPB0 0x06048 +#define _FPB1 0x0604c +#define FP0(pipe) _PIPE(pipe, _FPA0, _FPB0) +#define FP1(pipe) _PIPE(pipe, _FPA1, _FPB1) +#define FP_N_DIV_MASK 0x003f0000 +#define FP_N_PINEVIEW_DIV_MASK 0x00ff0000 +#define FP_N_DIV_SHIFT 16 +#define FP_M1_DIV_MASK 0x00003f00 +#define FP_M1_DIV_SHIFT 8 +#define FP_M2_DIV_MASK 0x0000003f +#define FP_M2_PINEVIEW_DIV_MASK 0x000000ff +#define FP_M2_DIV_SHIFT 0 +#define DPLL_TEST 0x606c +#define DPLLB_TEST_SDVO_DIV_1 (0 << 22) +#define DPLLB_TEST_SDVO_DIV_2 (1 << 22) +#define DPLLB_TEST_SDVO_DIV_4 (2 << 22) +#define DPLLB_TEST_SDVO_DIV_MASK (3 << 22) +#define DPLLB_TEST_N_BYPASS (1 << 19) +#define DPLLB_TEST_M_BYPASS (1 << 18) +#define DPLLB_INPUT_BUFFER_ENABLE (1 << 16) +#define DPLLA_TEST_N_BYPASS (1 << 3) +#define DPLLA_TEST_M_BYPASS (1 << 2) +#define DPLLA_INPUT_BUFFER_ENABLE (1 << 0) +#define D_STATE 0x6104 +#define DSTATE_GFX_RESET_I830 (1<<6) +#define DSTATE_PLL_D3_OFF (1<<3) +#define DSTATE_GFX_CLOCK_GATING (1<<1) +#define DSTATE_DOT_CLOCK_GATING (1<<0) +#define DSPCLK_GATE_D 0x6200 +# define DPUNIT_B_CLOCK_GATE_DISABLE (1 << 30) /* 965 */ +# define VSUNIT_CLOCK_GATE_DISABLE (1 << 29) /* 965 */ +# define VRHUNIT_CLOCK_GATE_DISABLE (1 << 28) /* 965 */ +# define VRDUNIT_CLOCK_GATE_DISABLE (1 << 27) /* 965 */ +# define AUDUNIT_CLOCK_GATE_DISABLE (1 << 26) /* 965 */ +# define DPUNIT_A_CLOCK_GATE_DISABLE (1 << 25) /* 965 */ +# define DPCUNIT_CLOCK_GATE_DISABLE (1 << 24) /* 965 */ +# define TVRUNIT_CLOCK_GATE_DISABLE (1 << 23) /* 915-945 */ +# define TVCUNIT_CLOCK_GATE_DISABLE (1 << 22) /* 915-945 */ +# define TVFUNIT_CLOCK_GATE_DISABLE (1 << 21) /* 915-945 */ +# define TVEUNIT_CLOCK_GATE_DISABLE (1 << 20) /* 915-945 */ +# define DVSUNIT_CLOCK_GATE_DISABLE (1 << 19) /* 915-945 */ +# define DSSUNIT_CLOCK_GATE_DISABLE (1 << 18) /* 915-945 */ +# define DDBUNIT_CLOCK_GATE_DISABLE (1 << 17) /* 915-945 */ +# define DPRUNIT_CLOCK_GATE_DISABLE (1 << 16) /* 915-945 */ +# define DPFUNIT_CLOCK_GATE_DISABLE (1 << 15) /* 915-945 */ +# define DPBMUNIT_CLOCK_GATE_DISABLE (1 << 14) /* 915-945 */ +# define DPLSUNIT_CLOCK_GATE_DISABLE (1 << 13) /* 915-945 */ +# define DPLUNIT_CLOCK_GATE_DISABLE (1 << 12) /* 915-945 */ +# define DPOUNIT_CLOCK_GATE_DISABLE (1 << 11) +# define DPBUNIT_CLOCK_GATE_DISABLE (1 << 10) +# define DCUNIT_CLOCK_GATE_DISABLE (1 << 9) +# define DPUNIT_CLOCK_GATE_DISABLE (1 << 8) +# define VRUNIT_CLOCK_GATE_DISABLE (1 << 7) /* 915+: reserved */ +# define OVHUNIT_CLOCK_GATE_DISABLE (1 << 6) /* 830-865 */ +# define DPIOUNIT_CLOCK_GATE_DISABLE (1 << 6) /* 915-945 */ +# define OVFUNIT_CLOCK_GATE_DISABLE (1 << 5) +# define OVBUNIT_CLOCK_GATE_DISABLE (1 << 4) +/** + * This bit must be set on the 830 to prevent hangs when turning off the + * overlay scaler. + */ +# define OVRUNIT_CLOCK_GATE_DISABLE (1 << 3) +# define OVCUNIT_CLOCK_GATE_DISABLE (1 << 2) +# define OVUUNIT_CLOCK_GATE_DISABLE (1 << 1) +# define ZVUNIT_CLOCK_GATE_DISABLE (1 << 0) /* 830 */ +# define OVLUNIT_CLOCK_GATE_DISABLE (1 << 0) /* 845,865 */ + +#define RENCLK_GATE_D1 0x6204 +# define BLITTER_CLOCK_GATE_DISABLE (1 << 13) /* 945GM only */ +# define MPEG_CLOCK_GATE_DISABLE (1 << 12) /* 945GM only */ +# define PC_FE_CLOCK_GATE_DISABLE (1 << 11) +# define PC_BE_CLOCK_GATE_DISABLE (1 << 10) +# define WINDOWER_CLOCK_GATE_DISABLE (1 << 9) +# define INTERPOLATOR_CLOCK_GATE_DISABLE (1 << 8) +# define COLOR_CALCULATOR_CLOCK_GATE_DISABLE (1 << 7) +# define MOTION_COMP_CLOCK_GATE_DISABLE (1 << 6) +# define MAG_CLOCK_GATE_DISABLE (1 << 5) +/** This bit must be unset on 855,865 */ +# define MECI_CLOCK_GATE_DISABLE (1 << 4) +# define DCMP_CLOCK_GATE_DISABLE (1 << 3) +# define MEC_CLOCK_GATE_DISABLE (1 << 2) +# define MECO_CLOCK_GATE_DISABLE (1 << 1) +/** This bit must be set on 855,865. */ +# define SV_CLOCK_GATE_DISABLE (1 << 0) +# define I915_MPEG_CLOCK_GATE_DISABLE (1 << 16) +# define I915_VLD_IP_PR_CLOCK_GATE_DISABLE (1 << 15) +# define I915_MOTION_COMP_CLOCK_GATE_DISABLE (1 << 14) +# define I915_BD_BF_CLOCK_GATE_DISABLE (1 << 13) +# define I915_SF_SE_CLOCK_GATE_DISABLE (1 << 12) +# define I915_WM_CLOCK_GATE_DISABLE (1 << 11) +# define I915_IZ_CLOCK_GATE_DISABLE (1 << 10) +# define I915_PI_CLOCK_GATE_DISABLE (1 << 9) +# define I915_DI_CLOCK_GATE_DISABLE (1 << 8) +# define I915_SH_SV_CLOCK_GATE_DISABLE (1 << 7) +# define I915_PL_DG_QC_FT_CLOCK_GATE_DISABLE (1 << 6) +# define I915_SC_CLOCK_GATE_DISABLE (1 << 5) +# define I915_FL_CLOCK_GATE_DISABLE (1 << 4) +# define I915_DM_CLOCK_GATE_DISABLE (1 << 3) +# define I915_PS_CLOCK_GATE_DISABLE (1 << 2) +# define I915_CC_CLOCK_GATE_DISABLE (1 << 1) +# define I915_BY_CLOCK_GATE_DISABLE (1 << 0) + +# define I965_RCZ_CLOCK_GATE_DISABLE (1 << 30) +/** This bit must always be set on 965G/965GM */ +# define I965_RCC_CLOCK_GATE_DISABLE (1 << 29) +# define I965_RCPB_CLOCK_GATE_DISABLE (1 << 28) +# define I965_DAP_CLOCK_GATE_DISABLE (1 << 27) +# define I965_ROC_CLOCK_GATE_DISABLE (1 << 26) +# define I965_GW_CLOCK_GATE_DISABLE (1 << 25) +# define I965_TD_CLOCK_GATE_DISABLE (1 << 24) +/** This bit must always be set on 965G */ +# define I965_ISC_CLOCK_GATE_DISABLE (1 << 23) +# define I965_IC_CLOCK_GATE_DISABLE (1 << 22) +# define I965_EU_CLOCK_GATE_DISABLE (1 << 21) +# define I965_IF_CLOCK_GATE_DISABLE (1 << 20) +# define I965_TC_CLOCK_GATE_DISABLE (1 << 19) +# define I965_SO_CLOCK_GATE_DISABLE (1 << 17) +# define I965_FBC_CLOCK_GATE_DISABLE (1 << 16) +# define I965_MARI_CLOCK_GATE_DISABLE (1 << 15) +# define I965_MASF_CLOCK_GATE_DISABLE (1 << 14) +# define I965_MAWB_CLOCK_GATE_DISABLE (1 << 13) +# define I965_EM_CLOCK_GATE_DISABLE (1 << 12) +# define I965_UC_CLOCK_GATE_DISABLE (1 << 11) +# define I965_SI_CLOCK_GATE_DISABLE (1 << 6) +# define I965_MT_CLOCK_GATE_DISABLE (1 << 5) +# define I965_PL_CLOCK_GATE_DISABLE (1 << 4) +# define I965_DG_CLOCK_GATE_DISABLE (1 << 3) +# define I965_QC_CLOCK_GATE_DISABLE (1 << 2) +# define I965_FT_CLOCK_GATE_DISABLE (1 << 1) +# define I965_DM_CLOCK_GATE_DISABLE (1 << 0) + +#define RENCLK_GATE_D2 0x6208 +#define VF_UNIT_CLOCK_GATE_DISABLE (1 << 9) +#define GS_UNIT_CLOCK_GATE_DISABLE (1 << 7) +#define CL_UNIT_CLOCK_GATE_DISABLE (1 << 6) +#define RAMCLK_GATE_D 0x6210 /* CRL only */ +#define DEUC 0x6214 /* CRL only */ + +#define FW_BLC_SELF_VLV 0x6500 +#define FW_CSPWRDWNEN (1<<15) + +/* + * Palette regs + */ + +#define _PALETTE_A 0x0a000 +#define _PALETTE_B 0x0a800 +#define PALETTE(pipe) _PIPE(pipe, _PALETTE_A, _PALETTE_B) + +/* MCH MMIO space */ + +/* + * MCHBAR mirror. + * + * This mirrors the MCHBAR MMIO space whose location is determined by + * device 0 function 0's pci config register 0x44 or 0x48 and matches it in + * every way. It is not accessible from the CP register read instructions. + * + */ +#define MCHBAR_MIRROR_BASE 0x10000 + +#define MCHBAR_MIRROR_BASE_SNB 0x140000 + +/** 915-945 and GM965 MCH register controlling DRAM channel access */ +#define DCC 0x10200 +#define DCC_ADDRESSING_MODE_SINGLE_CHANNEL (0 << 0) +#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_ASYMMETRIC (1 << 0) +#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED (2 << 0) +#define DCC_ADDRESSING_MODE_MASK (3 << 0) +#define DCC_CHANNEL_XOR_DISABLE (1 << 10) +#define DCC_CHANNEL_XOR_BIT_17 (1 << 9) + +/** Pineview MCH register contains DDR3 setting */ +#define CSHRDDR3CTL 0x101a8 +#define CSHRDDR3CTL_DDR3 (1 << 2) + +/** 965 MCH register controlling DRAM channel configuration */ +#define C0DRB3 0x10206 +#define C1DRB3 0x10606 + +/** snb MCH registers for reading the DRAM channel configuration */ +#define MAD_DIMM_C0 (MCHBAR_MIRROR_BASE_SNB + 0x5004) +#define MAD_DIMM_C1 (MCHBAR_MIRROR_BASE_SNB + 0x5008) +#define MAD_DIMM_C2 (MCHBAR_MIRROR_BASE_SNB + 0x500C) +#define MAD_DIMM_ECC_MASK (0x3 << 24) +#define MAD_DIMM_ECC_OFF (0x0 << 24) +#define MAD_DIMM_ECC_IO_ON_LOGIC_OFF (0x1 << 24) +#define MAD_DIMM_ECC_IO_OFF_LOGIC_ON (0x2 << 24) +#define MAD_DIMM_ECC_ON (0x3 << 24) +#define MAD_DIMM_ENH_INTERLEAVE (0x1 << 22) +#define MAD_DIMM_RANK_INTERLEAVE (0x1 << 21) +#define MAD_DIMM_B_WIDTH_X16 (0x1 << 20) /* X8 chips if unset */ +#define MAD_DIMM_A_WIDTH_X16 (0x1 << 19) /* X8 chips if unset */ +#define MAD_DIMM_B_DUAL_RANK (0x1 << 18) +#define MAD_DIMM_A_DUAL_RANK (0x1 << 17) +#define MAD_DIMM_A_SELECT (0x1 << 16) +/* DIMM sizes are in multiples of 256mb. */ +#define MAD_DIMM_B_SIZE_SHIFT 8 +#define MAD_DIMM_B_SIZE_MASK (0xff << MAD_DIMM_B_SIZE_SHIFT) +#define MAD_DIMM_A_SIZE_SHIFT 0 +#define MAD_DIMM_A_SIZE_MASK (0xff << MAD_DIMM_A_SIZE_SHIFT) + + +/* Clocking configuration register */ +#define CLKCFG 0x10c00 +#define CLKCFG_FSB_400 (5 << 0) /* hrawclk 100 */ +#define CLKCFG_FSB_533 (1 << 0) /* hrawclk 133 */ +#define CLKCFG_FSB_667 (3 << 0) /* hrawclk 166 */ +#define CLKCFG_FSB_800 (2 << 0) /* hrawclk 200 */ +#define CLKCFG_FSB_1067 (6 << 0) /* hrawclk 266 */ +#define CLKCFG_FSB_1333 (7 << 0) /* hrawclk 333 */ +/* Note, below two are guess */ +#define CLKCFG_FSB_1600 (4 << 0) /* hrawclk 400 */ +#define CLKCFG_FSB_1600_ALT (0 << 0) /* hrawclk 400 */ +#define CLKCFG_FSB_MASK (7 << 0) +#define CLKCFG_MEM_533 (1 << 4) +#define CLKCFG_MEM_667 (2 << 4) +#define CLKCFG_MEM_800 (3 << 4) +#define CLKCFG_MEM_MASK (7 << 4) + +#define TSC1 0x11001 +#define TSE (1<<0) +#define TR1 0x11006 +#define TSFS 0x11020 +#define TSFS_SLOPE_MASK 0x0000ff00 +#define TSFS_SLOPE_SHIFT 8 +#define TSFS_INTR_MASK 0x000000ff + +#define CRSTANDVID 0x11100 +#define PXVFREQ_BASE 0x11110 /* P[0-15]VIDFREQ (0x1114c) (Ironlake) */ +#define PXVFREQ_PX_MASK 0x7f000000 +#define PXVFREQ_PX_SHIFT 24 +#define VIDFREQ_BASE 0x11110 +#define VIDFREQ1 0x11110 /* VIDFREQ1-4 (0x1111c) (Cantiga) */ +#define VIDFREQ2 0x11114 +#define VIDFREQ3 0x11118 +#define VIDFREQ4 0x1111c +#define VIDFREQ_P0_MASK 0x1f000000 +#define VIDFREQ_P0_SHIFT 24 +#define VIDFREQ_P0_CSCLK_MASK 0x00f00000 +#define VIDFREQ_P0_CSCLK_SHIFT 20 +#define VIDFREQ_P0_CRCLK_MASK 0x000f0000 +#define VIDFREQ_P0_CRCLK_SHIFT 16 +#define VIDFREQ_P1_MASK 0x00001f00 +#define VIDFREQ_P1_SHIFT 8 +#define VIDFREQ_P1_CSCLK_MASK 0x000000f0 +#define VIDFREQ_P1_CSCLK_SHIFT 4 +#define VIDFREQ_P1_CRCLK_MASK 0x0000000f +#define INTTOEXT_BASE_ILK 0x11300 +#define INTTOEXT_BASE 0x11120 /* INTTOEXT1-8 (0x1113c) */ +#define INTTOEXT_MAP3_SHIFT 24 +#define INTTOEXT_MAP3_MASK (0x1f << INTTOEXT_MAP3_SHIFT) +#define INTTOEXT_MAP2_SHIFT 16 +#define INTTOEXT_MAP2_MASK (0x1f << INTTOEXT_MAP2_SHIFT) +#define INTTOEXT_MAP1_SHIFT 8 +#define INTTOEXT_MAP1_MASK (0x1f << INTTOEXT_MAP1_SHIFT) +#define INTTOEXT_MAP0_SHIFT 0 +#define INTTOEXT_MAP0_MASK (0x1f << INTTOEXT_MAP0_SHIFT) +#define MEMSWCTL 0x11170 /* Ironlake only */ +#define MEMCTL_CMD_MASK 0xe000 +#define MEMCTL_CMD_SHIFT 13 +#define MEMCTL_CMD_RCLK_OFF 0 +#define MEMCTL_CMD_RCLK_ON 1 +#define MEMCTL_CMD_CHFREQ 2 +#define MEMCTL_CMD_CHVID 3 +#define MEMCTL_CMD_VMMOFF 4 +#define MEMCTL_CMD_VMMON 5 +#define MEMCTL_CMD_STS (1<<12) /* write 1 triggers command, clears + when command complete */ +#define MEMCTL_FREQ_MASK 0x0f00 /* jitter, from 0-15 */ +#define MEMCTL_FREQ_SHIFT 8 +#define MEMCTL_SFCAVM (1<<7) +#define MEMCTL_TGT_VID_MASK 0x007f +#define MEMIHYST 0x1117c +#define MEMINTREN 0x11180 /* 16 bits */ +#define MEMINT_RSEXIT_EN (1<<8) +#define MEMINT_CX_SUPR_EN (1<<7) +#define MEMINT_CONT_BUSY_EN (1<<6) +#define MEMINT_AVG_BUSY_EN (1<<5) +#define MEMINT_EVAL_CHG_EN (1<<4) +#define MEMINT_MON_IDLE_EN (1<<3) +#define MEMINT_UP_EVAL_EN (1<<2) +#define MEMINT_DOWN_EVAL_EN (1<<1) +#define MEMINT_SW_CMD_EN (1<<0) +#define MEMINTRSTR 0x11182 /* 16 bits */ +#define MEM_RSEXIT_MASK 0xc000 +#define MEM_RSEXIT_SHIFT 14 +#define MEM_CONT_BUSY_MASK 0x3000 +#define MEM_CONT_BUSY_SHIFT 12 +#define MEM_AVG_BUSY_MASK 0x0c00 +#define MEM_AVG_BUSY_SHIFT 10 +#define MEM_EVAL_CHG_MASK 0x0300 +#define MEM_EVAL_BUSY_SHIFT 8 +#define MEM_MON_IDLE_MASK 0x00c0 +#define MEM_MON_IDLE_SHIFT 6 +#define MEM_UP_EVAL_MASK 0x0030 +#define MEM_UP_EVAL_SHIFT 4 +#define MEM_DOWN_EVAL_MASK 0x000c +#define MEM_DOWN_EVAL_SHIFT 2 +#define MEM_SW_CMD_MASK 0x0003 +#define MEM_INT_STEER_GFX 0 +#define MEM_INT_STEER_CMR 1 +#define MEM_INT_STEER_SMI 2 +#define MEM_INT_STEER_SCI 3 +#define MEMINTRSTS 0x11184 +#define MEMINT_RSEXIT (1<<7) +#define MEMINT_CONT_BUSY (1<<6) +#define MEMINT_AVG_BUSY (1<<5) +#define MEMINT_EVAL_CHG (1<<4) +#define MEMINT_MON_IDLE (1<<3) +#define MEMINT_UP_EVAL (1<<2) +#define MEMINT_DOWN_EVAL (1<<1) +#define MEMINT_SW_CMD (1<<0) +#define MEMMODECTL 0x11190 +#define MEMMODE_BOOST_EN (1<<31) +#define MEMMODE_BOOST_FREQ_MASK 0x0f000000 /* jitter for boost, 0-15 */ +#define MEMMODE_BOOST_FREQ_SHIFT 24 +#define MEMMODE_IDLE_MODE_MASK 0x00030000 +#define MEMMODE_IDLE_MODE_SHIFT 16 +#define MEMMODE_IDLE_MODE_EVAL 0 +#define MEMMODE_IDLE_MODE_CONT 1 +#define MEMMODE_HWIDLE_EN (1<<15) +#define MEMMODE_SWMODE_EN (1<<14) +#define MEMMODE_RCLK_GATE (1<<13) +#define MEMMODE_HW_UPDATE (1<<12) +#define MEMMODE_FSTART_MASK 0x00000f00 /* starting jitter, 0-15 */ +#define MEMMODE_FSTART_SHIFT 8 +#define MEMMODE_FMAX_MASK 0x000000f0 /* max jitter, 0-15 */ +#define MEMMODE_FMAX_SHIFT 4 +#define MEMMODE_FMIN_MASK 0x0000000f /* min jitter, 0-15 */ +#define RCBMAXAVG 0x1119c +#define MEMSWCTL2 0x1119e /* Cantiga only */ +#define SWMEMCMD_RENDER_OFF (0 << 13) +#define SWMEMCMD_RENDER_ON (1 << 13) +#define SWMEMCMD_SWFREQ (2 << 13) +#define SWMEMCMD_TARVID (3 << 13) +#define SWMEMCMD_VRM_OFF (4 << 13) +#define SWMEMCMD_VRM_ON (5 << 13) +#define CMDSTS (1<<12) +#define SFCAVM (1<<11) +#define SWFREQ_MASK 0x0380 /* P0-7 */ +#define SWFREQ_SHIFT 7 +#define TARVID_MASK 0x001f +#define MEMSTAT_CTG 0x111a0 +#define RCBMINAVG 0x111a0 +#define RCUPEI 0x111b0 +#define RCDNEI 0x111b4 +#define RSTDBYCTL 0x111b8 +#define RS1EN (1<<31) +#define RS2EN (1<<30) +#define RS3EN (1<<29) +#define D3RS3EN (1<<28) /* Display D3 imlies RS3 */ +#define SWPROMORSX (1<<27) /* RSx promotion timers ignored */ +#define RCWAKERW (1<<26) /* Resetwarn from PCH causes wakeup */ +#define DPRSLPVREN (1<<25) /* Fast voltage ramp enable */ +#define GFXTGHYST (1<<24) /* Hysteresis to allow trunk gating */ +#define RCX_SW_EXIT (1<<23) /* Leave RSx and prevent re-entry */ +#define RSX_STATUS_MASK (7<<20) +#define RSX_STATUS_ON (0<<20) +#define RSX_STATUS_RC1 (1<<20) +#define RSX_STATUS_RC1E (2<<20) +#define RSX_STATUS_RS1 (3<<20) +#define RSX_STATUS_RS2 (4<<20) /* aka rc6 */ +#define RSX_STATUS_RSVD (5<<20) /* deep rc6 unsupported on ilk */ +#define RSX_STATUS_RS3 (6<<20) /* rs3 unsupported on ilk */ +#define RSX_STATUS_RSVD2 (7<<20) +#define UWRCRSXE (1<<19) /* wake counter limit prevents rsx */ +#define RSCRP (1<<18) /* rs requests control on rs1/2 reqs */ +#define JRSC (1<<17) /* rsx coupled to cpu c-state */ +#define RS2INC0 (1<<16) /* allow rs2 in cpu c0 */ +#define RS1CONTSAV_MASK (3<<14) +#define RS1CONTSAV_NO_RS1 (0<<14) /* rs1 doesn't save/restore context */ +#define RS1CONTSAV_RSVD (1<<14) +#define RS1CONTSAV_SAVE_RS1 (2<<14) /* rs1 saves context */ +#define RS1CONTSAV_FULL_RS1 (3<<14) /* rs1 saves and restores context */ +#define NORMSLEXLAT_MASK (3<<12) +#define SLOW_RS123 (0<<12) +#define SLOW_RS23 (1<<12) +#define SLOW_RS3 (2<<12) +#define NORMAL_RS123 (3<<12) +#define RCMODE_TIMEOUT (1<<11) /* 0 is eval interval method */ +#define IMPROMOEN (1<<10) /* promo is immediate or delayed until next idle interval (only for timeout method above) */ +#define RCENTSYNC (1<<9) /* rs coupled to cpu c-state (3/6/7) */ +#define STATELOCK (1<<7) /* locked to rs_cstate if 0 */ +#define RS_CSTATE_MASK (3<<4) +#define RS_CSTATE_C367_RS1 (0<<4) +#define RS_CSTATE_C36_RS1_C7_RS2 (1<<4) +#define RS_CSTATE_RSVD (2<<4) +#define RS_CSTATE_C367_RS2 (3<<4) +#define REDSAVES (1<<3) /* no context save if was idle during rs0 */ +#define REDRESTORES (1<<2) /* no restore if was idle during rs0 */ +#define VIDCTL 0x111c0 +#define VIDSTS 0x111c8 +#define VIDSTART 0x111cc /* 8 bits */ +#define MEMSTAT_ILK 0x111f8 +#define MEMSTAT_VID_MASK 0x7f00 +#define MEMSTAT_VID_SHIFT 8 +#define MEMSTAT_PSTATE_MASK 0x00f8 +#define MEMSTAT_PSTATE_SHIFT 3 +#define MEMSTAT_MON_ACTV (1<<2) +#define MEMSTAT_SRC_CTL_MASK 0x0003 +#define MEMSTAT_SRC_CTL_CORE 0 +#define MEMSTAT_SRC_CTL_TRB 1 +#define MEMSTAT_SRC_CTL_THM 2 +#define MEMSTAT_SRC_CTL_STDBY 3 +#define RCPREVBSYTUPAVG 0x113b8 +#define RCPREVBSYTDNAVG 0x113bc +#define PMMISC 0x11214 +#define MCPPCE_EN (1<<0) /* enable PM_MSG from PCH->MPC */ +#define SDEW 0x1124c +#define CSIEW0 0x11250 +#define CSIEW1 0x11254 +#define CSIEW2 0x11258 +#define PEW 0x1125c +#define DEW 0x11270 +#define MCHAFE 0x112c0 +#define CSIEC 0x112e0 +#define DMIEC 0x112e4 +#define DDREC 0x112e8 +#define PEG0EC 0x112ec +#define PEG1EC 0x112f0 +#define GFXEC 0x112f4 +#define RPPREVBSYTUPAVG 0x113b8 +#define RPPREVBSYTDNAVG 0x113bc +#define ECR 0x11600 +#define ECR_GPFE (1<<31) +#define ECR_IMONE (1<<30) +#define ECR_CAP_MASK 0x0000001f /* Event range, 0-31 */ +#define OGW0 0x11608 +#define OGW1 0x1160c +#define EG0 0x11610 +#define EG1 0x11614 +#define EG2 0x11618 +#define EG3 0x1161c +#define EG4 0x11620 +#define EG5 0x11624 +#define EG6 0x11628 +#define EG7 0x1162c +#define PXW 0x11664 +#define PXWL 0x11680 +#define LCFUSE02 0x116c0 +#define LCFUSE_HIV_MASK 0x000000ff +#define CSIPLL0 0x12c10 +#define DDRMPLL1 0X12c20 +#define PEG_BAND_GAP_DATA 0x14d68 + +#define GEN6_GT_THREAD_STATUS_REG 0x13805c +#define GEN6_GT_THREAD_STATUS_CORE_MASK 0x7 +#define GEN6_GT_THREAD_STATUS_CORE_MASK_HSW (0x7 | (0x07 << 16)) + +#define GEN6_GT_PERF_STATUS 0x145948 +#define GEN6_RP_STATE_LIMITS 0x145994 +#define GEN6_RP_STATE_CAP 0x145998 + +/* + * Logical Context regs + */ +#define CCID 0x2180 +#define CCID_EN (1<<0) +#define CXT_SIZE 0x21a0 +#define GEN6_CXT_POWER_SIZE(cxt_reg) ((cxt_reg >> 24) & 0x3f) +#define GEN6_CXT_RING_SIZE(cxt_reg) ((cxt_reg >> 18) & 0x3f) +#define GEN6_CXT_RENDER_SIZE(cxt_reg) ((cxt_reg >> 12) & 0x3f) +#define GEN6_CXT_EXTENDED_SIZE(cxt_reg) ((cxt_reg >> 6) & 0x3f) +#define GEN6_CXT_PIPELINE_SIZE(cxt_reg) ((cxt_reg >> 0) & 0x3f) +#define GEN6_CXT_TOTAL_SIZE(cxt_reg) (GEN6_CXT_POWER_SIZE(cxt_reg) + \ + GEN6_CXT_RING_SIZE(cxt_reg) + \ + GEN6_CXT_RENDER_SIZE(cxt_reg) + \ + GEN6_CXT_EXTENDED_SIZE(cxt_reg) + \ + GEN6_CXT_PIPELINE_SIZE(cxt_reg)) +#define GEN7_CXT_SIZE 0x21a8 +#define GEN7_CXT_POWER_SIZE(ctx_reg) ((ctx_reg >> 25) & 0x7f) +#define GEN7_CXT_RING_SIZE(ctx_reg) ((ctx_reg >> 22) & 0x7) +#define GEN7_CXT_RENDER_SIZE(ctx_reg) ((ctx_reg >> 16) & 0x3f) +#define GEN7_CXT_EXTENDED_SIZE(ctx_reg) ((ctx_reg >> 9) & 0x7f) +#define GEN7_CXT_GT1_SIZE(ctx_reg) ((ctx_reg >> 6) & 0x7) +#define GEN7_CXT_VFSTATE_SIZE(ctx_reg) ((ctx_reg >> 0) & 0x3f) +#define GEN7_CXT_TOTAL_SIZE(ctx_reg) (GEN7_CXT_POWER_SIZE(ctx_reg) + \ + GEN7_CXT_RING_SIZE(ctx_reg) + \ + GEN7_CXT_RENDER_SIZE(ctx_reg) + \ + GEN7_CXT_EXTENDED_SIZE(ctx_reg) + \ + GEN7_CXT_GT1_SIZE(ctx_reg) + \ + GEN7_CXT_VFSTATE_SIZE(ctx_reg)) +#define HSW_CXT_POWER_SIZE(ctx_reg) ((ctx_reg >> 26) & 0x3f) +#define HSW_CXT_RING_SIZE(ctx_reg) ((ctx_reg >> 23) & 0x7) +#define HSW_CXT_RENDER_SIZE(ctx_reg) ((ctx_reg >> 15) & 0xff) +#define HSW_CXT_TOTAL_SIZE(ctx_reg) (HSW_CXT_POWER_SIZE(ctx_reg) + \ + HSW_CXT_RING_SIZE(ctx_reg) + \ + HSW_CXT_RENDER_SIZE(ctx_reg) + \ + GEN7_CXT_VFSTATE_SIZE(ctx_reg)) + + +/* + * Overlay regs + */ + +#define OVADD 0x30000 +#define DOVSTA 0x30008 +#define OC_BUF (0x3<<20) +#define OGAMC5 0x30010 +#define OGAMC4 0x30014 +#define OGAMC3 0x30018 +#define OGAMC2 0x3001c +#define OGAMC1 0x30020 +#define OGAMC0 0x30024 + +/* + * Display engine regs + */ + +/* Pipe A timing regs */ +#define _HTOTAL_A 0x60000 +#define _HBLANK_A 0x60004 +#define _HSYNC_A 0x60008 +#define _VTOTAL_A 0x6000c +#define _VBLANK_A 0x60010 +#define _VSYNC_A 0x60014 +#define _PIPEASRC 0x6001c +#define _BCLRPAT_A 0x60020 +#define _VSYNCSHIFT_A 0x60028 + +/* Pipe B timing regs */ +#define _HTOTAL_B 0x61000 +#define _HBLANK_B 0x61004 +#define _HSYNC_B 0x61008 +#define _VTOTAL_B 0x6100c +#define _VBLANK_B 0x61010 +#define _VSYNC_B 0x61014 +#define _PIPEBSRC 0x6101c +#define _BCLRPAT_B 0x61020 +#define _VSYNCSHIFT_B 0x61028 + + +#define HTOTAL(trans) _TRANSCODER(trans, _HTOTAL_A, _HTOTAL_B) +#define HBLANK(trans) _TRANSCODER(trans, _HBLANK_A, _HBLANK_B) +#define HSYNC(trans) _TRANSCODER(trans, _HSYNC_A, _HSYNC_B) +#define VTOTAL(trans) _TRANSCODER(trans, _VTOTAL_A, _VTOTAL_B) +#define VBLANK(trans) _TRANSCODER(trans, _VBLANK_A, _VBLANK_B) +#define VSYNC(trans) _TRANSCODER(trans, _VSYNC_A, _VSYNC_B) +#define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B) +#define VSYNCSHIFT(trans) _TRANSCODER(trans, _VSYNCSHIFT_A, _VSYNCSHIFT_B) + +/* VGA port control */ +#define ADPA 0x61100 +#define PCH_ADPA 0xe1100 +#define VLV_ADPA (VLV_DISPLAY_BASE + ADPA) + +#define ADPA_DAC_ENABLE (1<<31) +#define ADPA_DAC_DISABLE 0 +#define ADPA_PIPE_SELECT_MASK (1<<30) +#define ADPA_PIPE_A_SELECT 0 +#define ADPA_PIPE_B_SELECT (1<<30) +#define ADPA_PIPE_SELECT(pipe) ((pipe) << 30) +/* CPT uses bits 29:30 for pch transcoder select */ +#define ADPA_CRT_HOTPLUG_MASK 0x03ff0000 /* bit 25-16 */ +#define ADPA_CRT_HOTPLUG_MONITOR_NONE (0<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_MASK (3<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_COLOR (3<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_MONO (2<<24) +#define ADPA_CRT_HOTPLUG_ENABLE (1<<23) +#define ADPA_CRT_HOTPLUG_PERIOD_64 (0<<22) +#define ADPA_CRT_HOTPLUG_PERIOD_128 (1<<22) +#define ADPA_CRT_HOTPLUG_WARMUP_5MS (0<<21) +#define ADPA_CRT_HOTPLUG_WARMUP_10MS (1<<21) +#define ADPA_CRT_HOTPLUG_SAMPLE_2S (0<<20) +#define ADPA_CRT_HOTPLUG_SAMPLE_4S (1<<20) +#define ADPA_CRT_HOTPLUG_VOLTAGE_40 (0<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_50 (1<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_60 (2<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_70 (3<<18) +#define ADPA_CRT_HOTPLUG_VOLREF_325MV (0<<17) +#define ADPA_CRT_HOTPLUG_VOLREF_475MV (1<<17) +#define ADPA_CRT_HOTPLUG_FORCE_TRIGGER (1<<16) +#define ADPA_USE_VGA_HVPOLARITY (1<<15) +#define ADPA_SETS_HVPOLARITY 0 +#define ADPA_VSYNC_CNTL_DISABLE (1<<11) +#define ADPA_VSYNC_CNTL_ENABLE 0 +#define ADPA_HSYNC_CNTL_DISABLE (1<<10) +#define ADPA_HSYNC_CNTL_ENABLE 0 +#define ADPA_VSYNC_ACTIVE_HIGH (1<<4) +#define ADPA_VSYNC_ACTIVE_LOW 0 +#define ADPA_HSYNC_ACTIVE_HIGH (1<<3) +#define ADPA_HSYNC_ACTIVE_LOW 0 +#define ADPA_DPMS_MASK (~(3<<10)) +#define ADPA_DPMS_ON (0<<10) +#define ADPA_DPMS_SUSPEND (1<<10) +#define ADPA_DPMS_STANDBY (2<<10) +#define ADPA_DPMS_OFF (3<<10) + + +/* Hotplug control (945+ only) */ +#define PORT_HOTPLUG_EN 0x61110 +#define HDMIB_HOTPLUG_INT_EN (1 << 29) +#define DPB_HOTPLUG_INT_EN (1 << 29) +#define HDMIC_HOTPLUG_INT_EN (1 << 28) +#define DPC_HOTPLUG_INT_EN (1 << 28) +#define HDMID_HOTPLUG_INT_EN (1 << 27) +#define DPD_HOTPLUG_INT_EN (1 << 27) +#define SDVOB_HOTPLUG_INT_EN (1 << 26) +#define SDVOC_HOTPLUG_INT_EN (1 << 25) +#define TV_HOTPLUG_INT_EN (1 << 18) +#define CRT_HOTPLUG_INT_EN (1 << 9) +#define CRT_HOTPLUG_FORCE_DETECT (1 << 3) +#define CRT_HOTPLUG_ACTIVATION_PERIOD_32 (0 << 8) +/* must use period 64 on GM45 according to docs */ +#define CRT_HOTPLUG_ACTIVATION_PERIOD_64 (1 << 8) +#define CRT_HOTPLUG_DAC_ON_TIME_2M (0 << 7) +#define CRT_HOTPLUG_DAC_ON_TIME_4M (1 << 7) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_40 (0 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_50 (1 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_60 (2 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_70 (3 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_MASK (3 << 5) +#define CRT_HOTPLUG_DETECT_DELAY_1G (0 << 4) +#define CRT_HOTPLUG_DETECT_DELAY_2G (1 << 4) +#define CRT_HOTPLUG_DETECT_VOLTAGE_325MV (0 << 2) +#define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2) + +#define PORT_HOTPLUG_STAT 0x61114 +/* HDMI/DP bits are gen4+ */ +#define DPB_HOTPLUG_LIVE_STATUS (1 << 29) +#define DPC_HOTPLUG_LIVE_STATUS (1 << 28) +#define DPD_HOTPLUG_LIVE_STATUS (1 << 27) +#define DPD_HOTPLUG_INT_STATUS (3 << 21) +#define DPC_HOTPLUG_INT_STATUS (3 << 19) +#define DPB_HOTPLUG_INT_STATUS (3 << 17) +/* HDMI bits are shared with the DP bits */ +#define HDMIB_HOTPLUG_LIVE_STATUS (1 << 29) +#define HDMIC_HOTPLUG_LIVE_STATUS (1 << 28) +#define HDMID_HOTPLUG_LIVE_STATUS (1 << 27) +#define HDMID_HOTPLUG_INT_STATUS (3 << 21) +#define HDMIC_HOTPLUG_INT_STATUS (3 << 19) +#define HDMIB_HOTPLUG_INT_STATUS (3 << 17) +/* CRT/TV common between gen3+ */ +#define CRT_HOTPLUG_INT_STATUS (1 << 11) +#define TV_HOTPLUG_INT_STATUS (1 << 10) +#define CRT_HOTPLUG_MONITOR_MASK (3 << 8) +#define CRT_HOTPLUG_MONITOR_COLOR (3 << 8) +#define CRT_HOTPLUG_MONITOR_MONO (2 << 8) +#define CRT_HOTPLUG_MONITOR_NONE (0 << 8) +/* SDVO is different across gen3/4 */ +#define SDVOC_HOTPLUG_INT_STATUS_G4X (1 << 3) +#define SDVOB_HOTPLUG_INT_STATUS_G4X (1 << 2) +#define SDVOC_HOTPLUG_INT_STATUS_I965 (3 << 4) +#define SDVOB_HOTPLUG_INT_STATUS_I965 (3 << 2) +#define SDVOC_HOTPLUG_INT_STATUS_I915 (1 << 7) +#define SDVOB_HOTPLUG_INT_STATUS_I915 (1 << 6) + +/* SDVO port control */ +#define SDVOB 0x61140 +#define SDVOC 0x61160 +#define SDVO_ENABLE (1 << 31) +#define SDVO_PIPE_B_SELECT (1 << 30) +#define SDVO_STALL_SELECT (1 << 29) +#define SDVO_INTERRUPT_ENABLE (1 << 26) +/** + * 915G/GM SDVO pixel multiplier. + * + * Programmed value is multiplier - 1, up to 5x. + * + * \sa DPLL_MD_UDI_MULTIPLIER_MASK + */ +#define SDVO_PORT_MULTIPLY_MASK (7 << 23) +#define SDVO_PORT_MULTIPLY_SHIFT 23 +#define SDVO_PHASE_SELECT_MASK (15 << 19) +#define SDVO_PHASE_SELECT_DEFAULT (6 << 19) +#define SDVO_CLOCK_OUTPUT_INVERT (1 << 18) +#define SDVOC_GANG_MODE (1 << 16) +#define SDVO_ENCODING_SDVO (0x0 << 10) +#define SDVO_ENCODING_HDMI (0x2 << 10) +/** Requird for HDMI operation */ +#define SDVO_NULL_PACKETS_DURING_VSYNC (1 << 9) +#define SDVO_COLOR_RANGE_16_235 (1 << 8) +#define SDVO_BORDER_ENABLE (1 << 7) +#define SDVO_AUDIO_ENABLE (1 << 6) +/** New with 965, default is to be set */ +#define SDVO_VSYNC_ACTIVE_HIGH (1 << 4) +/** New with 965, default is to be set */ +#define SDVO_HSYNC_ACTIVE_HIGH (1 << 3) +#define SDVOB_PCIE_CONCURRENCY (1 << 3) +#define SDVO_DETECTED (1 << 2) +/* Bits to be preserved when writing */ +#define SDVOB_PRESERVE_MASK ((1 << 17) | (1 << 16) | (1 << 14) | (1 << 26)) +#define SDVOC_PRESERVE_MASK ((1 << 17) | (1 << 26)) + +/* DVO port control */ +#define DVOA 0x61120 +#define DVOB 0x61140 +#define DVOC 0x61160 +#define DVO_ENABLE (1 << 31) +#define DVO_PIPE_B_SELECT (1 << 30) +#define DVO_PIPE_STALL_UNUSED (0 << 28) +#define DVO_PIPE_STALL (1 << 28) +#define DVO_PIPE_STALL_TV (2 << 28) +#define DVO_PIPE_STALL_MASK (3 << 28) +#define DVO_USE_VGA_SYNC (1 << 15) +#define DVO_DATA_ORDER_I740 (0 << 14) +#define DVO_DATA_ORDER_FP (1 << 14) +#define DVO_VSYNC_DISABLE (1 << 11) +#define DVO_HSYNC_DISABLE (1 << 10) +#define DVO_VSYNC_TRISTATE (1 << 9) +#define DVO_HSYNC_TRISTATE (1 << 8) +#define DVO_BORDER_ENABLE (1 << 7) +#define DVO_DATA_ORDER_GBRG (1 << 6) +#define DVO_DATA_ORDER_RGGB (0 << 6) +#define DVO_DATA_ORDER_GBRG_ERRATA (0 << 6) +#define DVO_DATA_ORDER_RGGB_ERRATA (1 << 6) +#define DVO_VSYNC_ACTIVE_HIGH (1 << 4) +#define DVO_HSYNC_ACTIVE_HIGH (1 << 3) +#define DVO_BLANK_ACTIVE_HIGH (1 << 2) +#define DVO_OUTPUT_CSTATE_PIXELS (1 << 1) /* SDG only */ +#define DVO_OUTPUT_SOURCE_SIZE_PIXELS (1 << 0) /* SDG only */ +#define DVO_PRESERVE_MASK (0x7<<24) +#define DVOA_SRCDIM 0x61124 +#define DVOB_SRCDIM 0x61144 +#define DVOC_SRCDIM 0x61164 +#define DVO_SRCDIM_HORIZONTAL_SHIFT 12 +#define DVO_SRCDIM_VERTICAL_SHIFT 0 + +/* LVDS port control */ +#define LVDS 0x61180 +/* + * Enables the LVDS port. This bit must be set before DPLLs are enabled, as + * the DPLL semantics change when the LVDS is assigned to that pipe. + */ +#define LVDS_PORT_EN (1 << 31) +/* Selects pipe B for LVDS data. Must be set on pre-965. */ +#define LVDS_PIPEB_SELECT (1 << 30) +#define LVDS_PIPE_MASK (1 << 30) +#define LVDS_PIPE(pipe) ((pipe) << 30) +/* LVDS dithering flag on 965/g4x platform */ +#define LVDS_ENABLE_DITHER (1 << 25) +/* LVDS sync polarity flags. Set to invert (i.e. negative) */ +#define LVDS_VSYNC_POLARITY (1 << 21) +#define LVDS_HSYNC_POLARITY (1 << 20) + +/* Enable border for unscaled (or aspect-scaled) display */ +#define LVDS_BORDER_ENABLE (1 << 15) +/* + * Enables the A0-A2 data pairs and CLKA, containing 18 bits of color data per + * pixel. + */ +#define LVDS_A0A2_CLKA_POWER_MASK (3 << 8) +#define LVDS_A0A2_CLKA_POWER_DOWN (0 << 8) +#define LVDS_A0A2_CLKA_POWER_UP (3 << 8) +/* + * Controls the A3 data pair, which contains the additional LSBs for 24 bit + * mode. Only enabled if LVDS_A0A2_CLKA_POWER_UP also indicates it should be + * on. + */ +#define LVDS_A3_POWER_MASK (3 << 6) +#define LVDS_A3_POWER_DOWN (0 << 6) +#define LVDS_A3_POWER_UP (3 << 6) +/* + * Controls the CLKB pair. This should only be set when LVDS_B0B3_POWER_UP + * is set. + */ +#define LVDS_CLKB_POWER_MASK (3 << 4) +#define LVDS_CLKB_POWER_DOWN (0 << 4) +#define LVDS_CLKB_POWER_UP (3 << 4) +/* + * Controls the B0-B3 data pairs. This must be set to match the DPLL p2 + * setting for whether we are in dual-channel mode. The B3 pair will + * additionally only be powered up when LVDS_A3_POWER_UP is set. + */ +#define LVDS_B0B3_POWER_MASK (3 << 2) +#define LVDS_B0B3_POWER_DOWN (0 << 2) +#define LVDS_B0B3_POWER_UP (3 << 2) + +/* Video Data Island Packet control */ +#define VIDEO_DIP_DATA 0x61178 +/* Read the description of VIDEO_DIP_DATA (before Haswel) or VIDEO_DIP_ECC + * (Haswell and newer) to see which VIDEO_DIP_DATA byte corresponds to each byte + * of the infoframe structure specified by CEA-861. */ +#define VIDEO_DIP_DATA_SIZE 32 +#define VIDEO_DIP_CTL 0x61170 +/* Pre HSW: */ +#define VIDEO_DIP_ENABLE (1 << 31) +#define VIDEO_DIP_PORT_B (1 << 29) +#define VIDEO_DIP_PORT_C (2 << 29) +#define VIDEO_DIP_PORT_D (3 << 29) +#define VIDEO_DIP_PORT_MASK (3 << 29) +#define VIDEO_DIP_ENABLE_GCP (1 << 25) +#define VIDEO_DIP_ENABLE_AVI (1 << 21) +#define VIDEO_DIP_ENABLE_VENDOR (2 << 21) +#define VIDEO_DIP_ENABLE_GAMUT (4 << 21) +#define VIDEO_DIP_ENABLE_SPD (8 << 21) +#define VIDEO_DIP_SELECT_AVI (0 << 19) +#define VIDEO_DIP_SELECT_VENDOR (1 << 19) +#define VIDEO_DIP_SELECT_SPD (3 << 19) +#define VIDEO_DIP_SELECT_MASK (3 << 19) +#define VIDEO_DIP_FREQ_ONCE (0 << 16) +#define VIDEO_DIP_FREQ_VSYNC (1 << 16) +#define VIDEO_DIP_FREQ_2VSYNC (2 << 16) +#define VIDEO_DIP_FREQ_MASK (3 << 16) +/* HSW and later: */ +#define VIDEO_DIP_ENABLE_VSC_HSW (1 << 20) +#define VIDEO_DIP_ENABLE_GCP_HSW (1 << 16) +#define VIDEO_DIP_ENABLE_AVI_HSW (1 << 12) +#define VIDEO_DIP_ENABLE_VS_HSW (1 << 8) +#define VIDEO_DIP_ENABLE_GMP_HSW (1 << 4) +#define VIDEO_DIP_ENABLE_SPD_HSW (1 << 0) + +/* Panel power sequencing */ +#define PP_STATUS 0x61200 +#define PP_ON (1 << 31) +/* + * Indicates that all dependencies of the panel are on: + * + * - PLL enabled + * - pipe enabled + * - LVDS/DVOB/DVOC on + */ +#define PP_READY (1 << 30) +#define PP_SEQUENCE_NONE (0 << 28) +#define PP_SEQUENCE_POWER_UP (1 << 28) +#define PP_SEQUENCE_POWER_DOWN (2 << 28) +#define PP_SEQUENCE_MASK (3 << 28) +#define PP_SEQUENCE_SHIFT 28 +#define PP_CYCLE_DELAY_ACTIVE (1 << 27) +#define PP_SEQUENCE_STATE_MASK 0x0000000f +#define PP_SEQUENCE_STATE_OFF_IDLE (0x0 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_1 (0x1 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_2 (0x2 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_3 (0x3 << 0) +#define PP_SEQUENCE_STATE_ON_IDLE (0x8 << 0) +#define PP_SEQUENCE_STATE_ON_S1_0 (0x9 << 0) +#define PP_SEQUENCE_STATE_ON_S1_2 (0xa << 0) +#define PP_SEQUENCE_STATE_ON_S1_3 (0xb << 0) +#define PP_SEQUENCE_STATE_RESET (0xf << 0) +#define PP_CONTROL 0x61204 +#define POWER_TARGET_ON (1 << 0) +#define PP_ON_DELAYS 0x61208 +#define PP_OFF_DELAYS 0x6120c +#define PP_DIVISOR 0x61210 + +/* Panel fitting */ +#define PFIT_CONTROL 0x61230 +#define PFIT_ENABLE (1 << 31) +#define PFIT_PIPE_MASK (3 << 29) +#define PFIT_PIPE_SHIFT 29 +#define VERT_INTERP_DISABLE (0 << 10) +#define VERT_INTERP_BILINEAR (1 << 10) +#define VERT_INTERP_MASK (3 << 10) +#define VERT_AUTO_SCALE (1 << 9) +#define HORIZ_INTERP_DISABLE (0 << 6) +#define HORIZ_INTERP_BILINEAR (1 << 6) +#define HORIZ_INTERP_MASK (3 << 6) +#define HORIZ_AUTO_SCALE (1 << 5) +#define PANEL_8TO6_DITHER_ENABLE (1 << 3) +#define PFIT_FILTER_FUZZY (0 << 24) +#define PFIT_SCALING_AUTO (0 << 26) +#define PFIT_SCALING_PROGRAMMED (1 << 26) +#define PFIT_SCALING_PILLAR (2 << 26) +#define PFIT_SCALING_LETTER (3 << 26) +#define PFIT_PGM_RATIOS 0x61234 +#define PFIT_VERT_SCALE_MASK 0xfff00000 +#define PFIT_HORIZ_SCALE_MASK 0x0000fff0 +/* Pre-965 */ +#define PFIT_VERT_SCALE_SHIFT 20 +#define PFIT_VERT_SCALE_MASK 0xfff00000 +#define PFIT_HORIZ_SCALE_SHIFT 4 +#define PFIT_HORIZ_SCALE_MASK 0x0000fff0 +/* 965+ */ +#define PFIT_VERT_SCALE_SHIFT_965 16 +#define PFIT_VERT_SCALE_MASK_965 0x1fff0000 +#define PFIT_HORIZ_SCALE_SHIFT_965 0 +#define PFIT_HORIZ_SCALE_MASK_965 0x00001fff + +#define PFIT_AUTO_RATIOS 0x61238 + +/* Backlight control */ +#define BLC_PWM_CTL2 0x61250 /* 965+ only */ +#define BLM_PWM_ENABLE (1 << 31) +#define BLM_COMBINATION_MODE (1 << 30) /* gen4 only */ +#define BLM_PIPE_SELECT (1 << 29) +#define BLM_PIPE_SELECT_IVB (3 << 29) +#define BLM_PIPE_A (0 << 29) +#define BLM_PIPE_B (1 << 29) +#define BLM_PIPE_C (2 << 29) /* ivb + */ +#define BLM_PIPE(pipe) ((pipe) << 29) +#define BLM_POLARITY_I965 (1 << 28) /* gen4 only */ +#define BLM_PHASE_IN_INTERUPT_STATUS (1 << 26) +#define BLM_PHASE_IN_ENABLE (1 << 25) +#define BLM_PHASE_IN_INTERUPT_ENABL (1 << 24) +#define BLM_PHASE_IN_TIME_BASE_SHIFT (16) +#define BLM_PHASE_IN_TIME_BASE_MASK (0xff << 16) +#define BLM_PHASE_IN_COUNT_SHIFT (8) +#define BLM_PHASE_IN_COUNT_MASK (0xff << 8) +#define BLM_PHASE_IN_INCR_SHIFT (0) +#define BLM_PHASE_IN_INCR_MASK (0xff << 0) +#define BLC_PWM_CTL 0x61254 +/* + * This is the most significant 15 bits of the number of backlight cycles in a + * complete cycle of the modulated backlight control. + * + * The actual value is this field multiplied by two. + */ +#define BACKLIGHT_MODULATION_FREQ_SHIFT (17) +#define BACKLIGHT_MODULATION_FREQ_MASK (0x7fff << 17) +#define BLM_LEGACY_MODE (1 << 16) /* gen2 only */ +/* + * This is the number of cycles out of the backlight modulation cycle for which + * the backlight is on. + * + * This field must be no greater than the number of cycles in the complete + * backlight modulation cycle. + */ +#define BACKLIGHT_DUTY_CYCLE_SHIFT (0) +#define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) +#define BACKLIGHT_DUTY_CYCLE_MASK_PNV (0xfffe) +#define BLM_POLARITY_PNV (1 << 0) /* pnv only */ + +#define BLC_HIST_CTL 0x61260 + +/* New registers for PCH-split platforms. Safe where new bits show up, the + * register layout machtes with gen4 BLC_PWM_CTL[12]. */ +#define BLC_PWM_CPU_CTL2 0x48250 +#define BLC_PWM_CPU_CTL 0x48254 + +/* PCH CTL1 is totally different, all but the below bits are reserved. CTL2 is + * like the normal CTL from gen4 and earlier. Hooray for confusing naming. */ +#define BLC_PWM_PCH_CTL1 0xc8250 +#define BLM_PCH_PWM_ENABLE (1 << 31) +#define BLM_PCH_OVERRIDE_ENABLE (1 << 30) +#define BLM_PCH_POLARITY (1 << 29) +#define BLC_PWM_PCH_CTL2 0xc8254 + +/* TV port control */ +#define TV_CTL 0x68000 +/** Enables the TV encoder */ +# define TV_ENC_ENABLE (1 << 31) +/** Sources the TV encoder input from pipe B instead of A. */ +# define TV_ENC_PIPEB_SELECT (1 << 30) +/** Outputs composite video (DAC A only) */ +# define TV_ENC_OUTPUT_COMPOSITE (0 << 28) +/** Outputs SVideo video (DAC B/C) */ +# define TV_ENC_OUTPUT_SVIDEO (1 << 28) +/** Outputs Component video (DAC A/B/C) */ +# define TV_ENC_OUTPUT_COMPONENT (2 << 28) +/** Outputs Composite and SVideo (DAC A/B/C) */ +# define TV_ENC_OUTPUT_SVIDEO_COMPOSITE (3 << 28) +# define TV_TRILEVEL_SYNC (1 << 21) +/** Enables slow sync generation (945GM only) */ +# define TV_SLOW_SYNC (1 << 20) +/** Selects 4x oversampling for 480i and 576p */ +# define TV_OVERSAMPLE_4X (0 << 18) +/** Selects 2x oversampling for 720p and 1080i */ +# define TV_OVERSAMPLE_2X (1 << 18) +/** Selects no oversampling for 1080p */ +# define TV_OVERSAMPLE_NONE (2 << 18) +/** Selects 8x oversampling */ +# define TV_OVERSAMPLE_8X (3 << 18) +/** Selects progressive mode rather than interlaced */ +# define TV_PROGRESSIVE (1 << 17) +/** Sets the colorburst to PAL mode. Required for non-M PAL modes. */ +# define TV_PAL_BURST (1 << 16) +/** Field for setting delay of Y compared to C */ +# define TV_YC_SKEW_MASK (7 << 12) +/** Enables a fix for 480p/576p standard definition modes on the 915GM only */ +# define TV_ENC_SDP_FIX (1 << 11) +/** + * Enables a fix for the 915GM only. + * + * Not sure what it does. + */ +# define TV_ENC_C0_FIX (1 << 10) +/** Bits that must be preserved by software */ +# define TV_CTL_SAVE ((1 << 11) | (3 << 9) | (7 << 6) | 0xf) +# define TV_FUSE_STATE_MASK (3 << 4) +/** Read-only state that reports all features enabled */ +# define TV_FUSE_STATE_ENABLED (0 << 4) +/** Read-only state that reports that Macrovision is disabled in hardware*/ +# define TV_FUSE_STATE_NO_MACROVISION (1 << 4) +/** Read-only state that reports that TV-out is disabled in hardware. */ +# define TV_FUSE_STATE_DISABLED (2 << 4) +/** Normal operation */ +# define TV_TEST_MODE_NORMAL (0 << 0) +/** Encoder test pattern 1 - combo pattern */ +# define TV_TEST_MODE_PATTERN_1 (1 << 0) +/** Encoder test pattern 2 - full screen vertical 75% color bars */ +# define TV_TEST_MODE_PATTERN_2 (2 << 0) +/** Encoder test pattern 3 - full screen horizontal 75% color bars */ +# define TV_TEST_MODE_PATTERN_3 (3 << 0) +/** Encoder test pattern 4 - random noise */ +# define TV_TEST_MODE_PATTERN_4 (4 << 0) +/** Encoder test pattern 5 - linear color ramps */ +# define TV_TEST_MODE_PATTERN_5 (5 << 0) +/** + * This test mode forces the DACs to 50% of full output. + * + * This is used for load detection in combination with TVDAC_SENSE_MASK + */ +# define TV_TEST_MODE_MONITOR_DETECT (7 << 0) +# define TV_TEST_MODE_MASK (7 << 0) + +#define TV_DAC 0x68004 +# define TV_DAC_SAVE 0x00ffff00 +/** + * Reports that DAC state change logic has reported change (RO). + * + * This gets cleared when TV_DAC_STATE_EN is cleared +*/ +# define TVDAC_STATE_CHG (1 << 31) +# define TVDAC_SENSE_MASK (7 << 28) +/** Reports that DAC A voltage is above the detect threshold */ +# define TVDAC_A_SENSE (1 << 30) +/** Reports that DAC B voltage is above the detect threshold */ +# define TVDAC_B_SENSE (1 << 29) +/** Reports that DAC C voltage is above the detect threshold */ +# define TVDAC_C_SENSE (1 << 28) +/** + * Enables DAC state detection logic, for load-based TV detection. + * + * The PLL of the chosen pipe (in TV_CTL) must be running, and the encoder set + * to off, for load detection to work. + */ +# define TVDAC_STATE_CHG_EN (1 << 27) +/** Sets the DAC A sense value to high */ +# define TVDAC_A_SENSE_CTL (1 << 26) +/** Sets the DAC B sense value to high */ +# define TVDAC_B_SENSE_CTL (1 << 25) +/** Sets the DAC C sense value to high */ +# define TVDAC_C_SENSE_CTL (1 << 24) +/** Overrides the ENC_ENABLE and DAC voltage levels */ +# define DAC_CTL_OVERRIDE (1 << 7) +/** Sets the slew rate. Must be preserved in software */ +# define ENC_TVDAC_SLEW_FAST (1 << 6) +# define DAC_A_1_3_V (0 << 4) +# define DAC_A_1_1_V (1 << 4) +# define DAC_A_0_7_V (2 << 4) +# define DAC_A_MASK (3 << 4) +# define DAC_B_1_3_V (0 << 2) +# define DAC_B_1_1_V (1 << 2) +# define DAC_B_0_7_V (2 << 2) +# define DAC_B_MASK (3 << 2) +# define DAC_C_1_3_V (0 << 0) +# define DAC_C_1_1_V (1 << 0) +# define DAC_C_0_7_V (2 << 0) +# define DAC_C_MASK (3 << 0) + +/** + * CSC coefficients are stored in a floating point format with 9 bits of + * mantissa and 2 or 3 bits of exponent. The exponent is represented as 2**-n, + * where 2-bit exponents are unsigned n, and 3-bit exponents are signed n with + * -1 (0x3) being the only legal negative value. + */ +#define TV_CSC_Y 0x68010 +# define TV_RY_MASK 0x07ff0000 +# define TV_RY_SHIFT 16 +# define TV_GY_MASK 0x00000fff +# define TV_GY_SHIFT 0 + +#define TV_CSC_Y2 0x68014 +# define TV_BY_MASK 0x07ff0000 +# define TV_BY_SHIFT 16 +/** + * Y attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AY_MASK 0x000003ff +# define TV_AY_SHIFT 0 + +#define TV_CSC_U 0x68018 +# define TV_RU_MASK 0x07ff0000 +# define TV_RU_SHIFT 16 +# define TV_GU_MASK 0x000007ff +# define TV_GU_SHIFT 0 + +#define TV_CSC_U2 0x6801c +# define TV_BU_MASK 0x07ff0000 +# define TV_BU_SHIFT 16 +/** + * U attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AU_MASK 0x000003ff +# define TV_AU_SHIFT 0 + +#define TV_CSC_V 0x68020 +# define TV_RV_MASK 0x0fff0000 +# define TV_RV_SHIFT 16 +# define TV_GV_MASK 0x000007ff +# define TV_GV_SHIFT 0 + +#define TV_CSC_V2 0x68024 +# define TV_BV_MASK 0x07ff0000 +# define TV_BV_SHIFT 16 +/** + * V attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AV_MASK 0x000007ff +# define TV_AV_SHIFT 0 + +#define TV_CLR_KNOBS 0x68028 +/** 2s-complement brightness adjustment */ +# define TV_BRIGHTNESS_MASK 0xff000000 +# define TV_BRIGHTNESS_SHIFT 24 +/** Contrast adjustment, as a 2.6 unsigned floating point number */ +# define TV_CONTRAST_MASK 0x00ff0000 +# define TV_CONTRAST_SHIFT 16 +/** Saturation adjustment, as a 2.6 unsigned floating point number */ +# define TV_SATURATION_MASK 0x0000ff00 +# define TV_SATURATION_SHIFT 8 +/** Hue adjustment, as an integer phase angle in degrees */ +# define TV_HUE_MASK 0x000000ff +# define TV_HUE_SHIFT 0 + +#define TV_CLR_LEVEL 0x6802c +/** Controls the DAC level for black */ +# define TV_BLACK_LEVEL_MASK 0x01ff0000 +# define TV_BLACK_LEVEL_SHIFT 16 +/** Controls the DAC level for blanking */ +# define TV_BLANK_LEVEL_MASK 0x000001ff +# define TV_BLANK_LEVEL_SHIFT 0 + +#define TV_H_CTL_1 0x68030 +/** Number of pixels in the hsync. */ +# define TV_HSYNC_END_MASK 0x1fff0000 +# define TV_HSYNC_END_SHIFT 16 +/** Total number of pixels minus one in the line (display and blanking). */ +# define TV_HTOTAL_MASK 0x00001fff +# define TV_HTOTAL_SHIFT 0 + +#define TV_H_CTL_2 0x68034 +/** Enables the colorburst (needed for non-component color) */ +# define TV_BURST_ENA (1 << 31) +/** Offset of the colorburst from the start of hsync, in pixels minus one. */ +# define TV_HBURST_START_SHIFT 16 +# define TV_HBURST_START_MASK 0x1fff0000 +/** Length of the colorburst */ +# define TV_HBURST_LEN_SHIFT 0 +# define TV_HBURST_LEN_MASK 0x0001fff + +#define TV_H_CTL_3 0x68038 +/** End of hblank, measured in pixels minus one from start of hsync */ +# define TV_HBLANK_END_SHIFT 16 +# define TV_HBLANK_END_MASK 0x1fff0000 +/** Start of hblank, measured in pixels minus one from start of hsync */ +# define TV_HBLANK_START_SHIFT 0 +# define TV_HBLANK_START_MASK 0x0001fff + +#define TV_V_CTL_1 0x6803c +/** XXX */ +# define TV_NBR_END_SHIFT 16 +# define TV_NBR_END_MASK 0x07ff0000 +/** XXX */ +# define TV_VI_END_F1_SHIFT 8 +# define TV_VI_END_F1_MASK 0x00003f00 +/** XXX */ +# define TV_VI_END_F2_SHIFT 0 +# define TV_VI_END_F2_MASK 0x0000003f + +#define TV_V_CTL_2 0x68040 +/** Length of vsync, in half lines */ +# define TV_VSYNC_LEN_MASK 0x07ff0000 +# define TV_VSYNC_LEN_SHIFT 16 +/** Offset of the start of vsync in field 1, measured in one less than the + * number of half lines. + */ +# define TV_VSYNC_START_F1_MASK 0x00007f00 +# define TV_VSYNC_START_F1_SHIFT 8 +/** + * Offset of the start of vsync in field 2, measured in one less than the + * number of half lines. + */ +# define TV_VSYNC_START_F2_MASK 0x0000007f +# define TV_VSYNC_START_F2_SHIFT 0 + +#define TV_V_CTL_3 0x68044 +/** Enables generation of the equalization signal */ +# define TV_EQUAL_ENA (1 << 31) +/** Length of vsync, in half lines */ +# define TV_VEQ_LEN_MASK 0x007f0000 +# define TV_VEQ_LEN_SHIFT 16 +/** Offset of the start of equalization in field 1, measured in one less than + * the number of half lines. + */ +# define TV_VEQ_START_F1_MASK 0x0007f00 +# define TV_VEQ_START_F1_SHIFT 8 +/** + * Offset of the start of equalization in field 2, measured in one less than + * the number of half lines. + */ +# define TV_VEQ_START_F2_MASK 0x000007f +# define TV_VEQ_START_F2_SHIFT 0 + +#define TV_V_CTL_4 0x68048 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F1_MASK 0x003f0000 +# define TV_VBURST_START_F1_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F1_MASK 0x000000ff +# define TV_VBURST_END_F1_SHIFT 0 + +#define TV_V_CTL_5 0x6804c +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F2_MASK 0x003f0000 +# define TV_VBURST_START_F2_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F2_MASK 0x000000ff +# define TV_VBURST_END_F2_SHIFT 0 + +#define TV_V_CTL_6 0x68050 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F3_MASK 0x003f0000 +# define TV_VBURST_START_F3_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F3_MASK 0x000000ff +# define TV_VBURST_END_F3_SHIFT 0 + +#define TV_V_CTL_7 0x68054 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F4_MASK 0x003f0000 +# define TV_VBURST_START_F4_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F4_MASK 0x000000ff +# define TV_VBURST_END_F4_SHIFT 0 + +#define TV_SC_CTL_1 0x68060 +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA1_EN (1 << 31) +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA2_EN (1 << 30) +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA3_EN (1 << 29) +/** Sets the subcarrier DDA to reset frequency every other field */ +# define TV_SC_RESET_EVERY_2 (0 << 24) +/** Sets the subcarrier DDA to reset frequency every fourth field */ +# define TV_SC_RESET_EVERY_4 (1 << 24) +/** Sets the subcarrier DDA to reset frequency every eighth field */ +# define TV_SC_RESET_EVERY_8 (2 << 24) +/** Sets the subcarrier DDA to never reset the frequency */ +# define TV_SC_RESET_NEVER (3 << 24) +/** Sets the peak amplitude of the colorburst.*/ +# define TV_BURST_LEVEL_MASK 0x00ff0000 +# define TV_BURST_LEVEL_SHIFT 16 +/** Sets the increment of the first subcarrier phase generation DDA */ +# define TV_SCDDA1_INC_MASK 0x00000fff +# define TV_SCDDA1_INC_SHIFT 0 + +#define TV_SC_CTL_2 0x68064 +/** Sets the rollover for the second subcarrier phase generation DDA */ +# define TV_SCDDA2_SIZE_MASK 0x7fff0000 +# define TV_SCDDA2_SIZE_SHIFT 16 +/** Sets the increent of the second subcarrier phase generation DDA */ +# define TV_SCDDA2_INC_MASK 0x00007fff +# define TV_SCDDA2_INC_SHIFT 0 + +#define TV_SC_CTL_3 0x68068 +/** Sets the rollover for the third subcarrier phase generation DDA */ +# define TV_SCDDA3_SIZE_MASK 0x7fff0000 +# define TV_SCDDA3_SIZE_SHIFT 16 +/** Sets the increent of the third subcarrier phase generation DDA */ +# define TV_SCDDA3_INC_MASK 0x00007fff +# define TV_SCDDA3_INC_SHIFT 0 + +#define TV_WIN_POS 0x68070 +/** X coordinate of the display from the start of horizontal active */ +# define TV_XPOS_MASK 0x1fff0000 +# define TV_XPOS_SHIFT 16 +/** Y coordinate of the display from the start of vertical active (NBR) */ +# define TV_YPOS_MASK 0x00000fff +# define TV_YPOS_SHIFT 0 + +#define TV_WIN_SIZE 0x68074 +/** Horizontal size of the display window, measured in pixels*/ +# define TV_XSIZE_MASK 0x1fff0000 +# define TV_XSIZE_SHIFT 16 +/** + * Vertical size of the display window, measured in pixels. + * + * Must be even for interlaced modes. + */ +# define TV_YSIZE_MASK 0x00000fff +# define TV_YSIZE_SHIFT 0 + +#define TV_FILTER_CTL_1 0x68080 +/** + * Enables automatic scaling calculation. + * + * If set, the rest of the registers are ignored, and the calculated values can + * be read back from the register. + */ +# define TV_AUTO_SCALE (1 << 31) +/** + * Disables the vertical filter. + * + * This is required on modes more than 1024 pixels wide */ +# define TV_V_FILTER_BYPASS (1 << 29) +/** Enables adaptive vertical filtering */ +# define TV_VADAPT (1 << 28) +# define TV_VADAPT_MODE_MASK (3 << 26) +/** Selects the least adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_LEAST (0 << 26) +/** Selects the moderately adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_MODERATE (1 << 26) +/** Selects the most adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_MOST (3 << 26) +/** + * Sets the horizontal scaling factor. + * + * This should be the fractional part of the horizontal scaling factor divided + * by the oversampling rate. TV_HSCALE should be less than 1, and set to: + * + * (src width - 1) / ((oversample * dest width) - 1) + */ +# define TV_HSCALE_FRAC_MASK 0x00003fff +# define TV_HSCALE_FRAC_SHIFT 0 + +#define TV_FILTER_CTL_2 0x68084 +/** + * Sets the integer part of the 3.15 fixed-point vertical scaling factor. + * + * TV_VSCALE should be (src height - 1) / ((interlace * dest height) - 1) + */ +# define TV_VSCALE_INT_MASK 0x00038000 +# define TV_VSCALE_INT_SHIFT 15 +/** + * Sets the fractional part of the 3.15 fixed-point vertical scaling factor. + * + * \sa TV_VSCALE_INT_MASK + */ +# define TV_VSCALE_FRAC_MASK 0x00007fff +# define TV_VSCALE_FRAC_SHIFT 0 + +#define TV_FILTER_CTL_3 0x68088 +/** + * Sets the integer part of the 3.15 fixed-point vertical scaling factor. + * + * TV_VSCALE should be (src height - 1) / (1/4 * (dest height - 1)) + * + * For progressive modes, TV_VSCALE_IP_INT should be set to zeroes. + */ +# define TV_VSCALE_IP_INT_MASK 0x00038000 +# define TV_VSCALE_IP_INT_SHIFT 15 +/** + * Sets the fractional part of the 3.15 fixed-point vertical scaling factor. + * + * For progressive modes, TV_VSCALE_IP_INT should be set to zeroes. + * + * \sa TV_VSCALE_IP_INT_MASK + */ +# define TV_VSCALE_IP_FRAC_MASK 0x00007fff +# define TV_VSCALE_IP_FRAC_SHIFT 0 + +#define TV_CC_CONTROL 0x68090 +# define TV_CC_ENABLE (1 << 31) +/** + * Specifies which field to send the CC data in. + * + * CC data is usually sent in field 0. + */ +# define TV_CC_FID_MASK (1 << 27) +# define TV_CC_FID_SHIFT 27 +/** Sets the horizontal position of the CC data. Usually 135. */ +# define TV_CC_HOFF_MASK 0x03ff0000 +# define TV_CC_HOFF_SHIFT 16 +/** Sets the vertical position of the CC data. Usually 21 */ +# define TV_CC_LINE_MASK 0x0000003f +# define TV_CC_LINE_SHIFT 0 + +#define TV_CC_DATA 0x68094 +# define TV_CC_RDY (1 << 31) +/** Second word of CC data to be transmitted. */ +# define TV_CC_DATA_2_MASK 0x007f0000 +# define TV_CC_DATA_2_SHIFT 16 +/** First word of CC data to be transmitted. */ +# define TV_CC_DATA_1_MASK 0x0000007f +# define TV_CC_DATA_1_SHIFT 0 + +#define TV_H_LUMA_0 0x68100 +#define TV_H_LUMA_59 0x681ec +#define TV_H_CHROMA_0 0x68200 +#define TV_H_CHROMA_59 0x682ec +#define TV_V_LUMA_0 0x68300 +#define TV_V_LUMA_42 0x683a8 +#define TV_V_CHROMA_0 0x68400 +#define TV_V_CHROMA_42 0x684a8 + +/* Display Port */ +#define DP_A 0x64000 /* eDP */ +#define DP_B 0x64100 +#define DP_C 0x64200 +#define DP_D 0x64300 + +#define DP_PORT_EN (1 << 31) +#define DP_PIPEB_SELECT (1 << 30) +#define DP_PIPE_MASK (1 << 30) + +/* Link training mode - select a suitable mode for each stage */ +#define DP_LINK_TRAIN_PAT_1 (0 << 28) +#define DP_LINK_TRAIN_PAT_2 (1 << 28) +#define DP_LINK_TRAIN_PAT_IDLE (2 << 28) +#define DP_LINK_TRAIN_OFF (3 << 28) +#define DP_LINK_TRAIN_MASK (3 << 28) +#define DP_LINK_TRAIN_SHIFT 28 + +/* CPT Link training mode */ +#define DP_LINK_TRAIN_PAT_1_CPT (0 << 8) +#define DP_LINK_TRAIN_PAT_2_CPT (1 << 8) +#define DP_LINK_TRAIN_PAT_IDLE_CPT (2 << 8) +#define DP_LINK_TRAIN_OFF_CPT (3 << 8) +#define DP_LINK_TRAIN_MASK_CPT (7 << 8) +#define DP_LINK_TRAIN_SHIFT_CPT 8 + +/* Signal voltages. These are mostly controlled by the other end */ +#define DP_VOLTAGE_0_4 (0 << 25) +#define DP_VOLTAGE_0_6 (1 << 25) +#define DP_VOLTAGE_0_8 (2 << 25) +#define DP_VOLTAGE_1_2 (3 << 25) +#define DP_VOLTAGE_MASK (7 << 25) +#define DP_VOLTAGE_SHIFT 25 + +/* Signal pre-emphasis levels, like voltages, the other end tells us what + * they want + */ +#define DP_PRE_EMPHASIS_0 (0 << 22) +#define DP_PRE_EMPHASIS_3_5 (1 << 22) +#define DP_PRE_EMPHASIS_6 (2 << 22) +#define DP_PRE_EMPHASIS_9_5 (3 << 22) +#define DP_PRE_EMPHASIS_MASK (7 << 22) +#define DP_PRE_EMPHASIS_SHIFT 22 + +/* How many wires to use. I guess 3 was too hard */ +#define DP_PORT_WIDTH_1 (0 << 19) +#define DP_PORT_WIDTH_2 (1 << 19) +#define DP_PORT_WIDTH_4 (3 << 19) +#define DP_PORT_WIDTH_MASK (7 << 19) + +/* Mystic DPCD version 1.1 special mode */ +#define DP_ENHANCED_FRAMING (1 << 18) + +/* eDP */ +#define DP_PLL_FREQ_270MHZ (0 << 16) +#define DP_PLL_FREQ_160MHZ (1 << 16) +#define DP_PLL_FREQ_MASK (3 << 16) + +/** locked once port is enabled */ +#define DP_PORT_REVERSAL (1 << 15) + +/* eDP */ +#define DP_PLL_ENABLE (1 << 14) + +/** sends the clock on lane 15 of the PEG for debug */ +#define DP_CLOCK_OUTPUT_ENABLE (1 << 13) + +#define DP_SCRAMBLING_DISABLE (1 << 12) +#define DP_SCRAMBLING_DISABLE_IRONLAKE (1 << 7) + +/** limit RGB values to avoid confusing TVs */ +#define DP_COLOR_RANGE_16_235 (1 << 8) + +/** Turn on the audio link */ +#define DP_AUDIO_OUTPUT_ENABLE (1 << 6) + +/** vs and hs sync polarity */ +#define DP_SYNC_VS_HIGH (1 << 4) +#define DP_SYNC_HS_HIGH (1 << 3) + +/** A fantasy */ +#define DP_DETECTED (1 << 2) + +/** The aux channel provides a way to talk to the + * signal sink for DDC etc. Max packet size supported + * is 20 bytes in each direction, hence the 5 fixed + * data registers + */ +#define DPA_AUX_CH_CTL 0x64010 +#define DPA_AUX_CH_DATA1 0x64014 +#define DPA_AUX_CH_DATA2 0x64018 +#define DPA_AUX_CH_DATA3 0x6401c +#define DPA_AUX_CH_DATA4 0x64020 +#define DPA_AUX_CH_DATA5 0x64024 + +#define DPB_AUX_CH_CTL 0x64110 +#define DPB_AUX_CH_DATA1 0x64114 +#define DPB_AUX_CH_DATA2 0x64118 +#define DPB_AUX_CH_DATA3 0x6411c +#define DPB_AUX_CH_DATA4 0x64120 +#define DPB_AUX_CH_DATA5 0x64124 + +#define DPC_AUX_CH_CTL 0x64210 +#define DPC_AUX_CH_DATA1 0x64214 +#define DPC_AUX_CH_DATA2 0x64218 +#define DPC_AUX_CH_DATA3 0x6421c +#define DPC_AUX_CH_DATA4 0x64220 +#define DPC_AUX_CH_DATA5 0x64224 + +#define DPD_AUX_CH_CTL 0x64310 +#define DPD_AUX_CH_DATA1 0x64314 +#define DPD_AUX_CH_DATA2 0x64318 +#define DPD_AUX_CH_DATA3 0x6431c +#define DPD_AUX_CH_DATA4 0x64320 +#define DPD_AUX_CH_DATA5 0x64324 + +#define DP_AUX_CH_CTL_SEND_BUSY (1 << 31) +#define DP_AUX_CH_CTL_DONE (1 << 30) +#define DP_AUX_CH_CTL_INTERRUPT (1 << 29) +#define DP_AUX_CH_CTL_TIME_OUT_ERROR (1 << 28) +#define DP_AUX_CH_CTL_TIME_OUT_400us (0 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_600us (1 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_800us (2 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_1600us (3 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_MASK (3 << 26) +#define DP_AUX_CH_CTL_RECEIVE_ERROR (1 << 25) +#define DP_AUX_CH_CTL_MESSAGE_SIZE_MASK (0x1f << 20) +#define DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT 20 +#define DP_AUX_CH_CTL_PRECHARGE_2US_MASK (0xf << 16) +#define DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT 16 +#define DP_AUX_CH_CTL_AUX_AKSV_SELECT (1 << 15) +#define DP_AUX_CH_CTL_MANCHESTER_TEST (1 << 14) +#define DP_AUX_CH_CTL_SYNC_TEST (1 << 13) +#define DP_AUX_CH_CTL_DEGLITCH_TEST (1 << 12) +#define DP_AUX_CH_CTL_PRECHARGE_TEST (1 << 11) +#define DP_AUX_CH_CTL_BIT_CLOCK_2X_MASK (0x7ff) +#define DP_AUX_CH_CTL_BIT_CLOCK_2X_SHIFT 0 + +/* + * Computing GMCH M and N values for the Display Port link + * + * GMCH M/N = dot clock * bytes per pixel / ls_clk * # of lanes + * + * ls_clk (we assume) is the DP link clock (1.62 or 2.7 GHz) + * + * The GMCH value is used internally + * + * bytes_per_pixel is the number of bytes coming out of the plane, + * which is after the LUTs, so we want the bytes for our color format. + * For our current usage, this is always 3, one byte for R, G and B. + */ +#define _PIPEA_GMCH_DATA_M 0x70050 +#define _PIPEB_GMCH_DATA_M 0x71050 + +/* Transfer unit size for display port - 1, default is 0x3f (for TU size 64) */ +#define PIPE_GMCH_DATA_M_TU_SIZE_MASK (0x3f << 25) +#define PIPE_GMCH_DATA_M_TU_SIZE_SHIFT 25 + +#define PIPE_GMCH_DATA_M_MASK (0xffffff) + +#define _PIPEA_GMCH_DATA_N 0x70054 +#define _PIPEB_GMCH_DATA_N 0x71054 +#define PIPE_GMCH_DATA_N_MASK (0xffffff) + +/* + * Computing Link M and N values for the Display Port link + * + * Link M / N = pixel_clock / ls_clk + * + * (the DP spec calls pixel_clock the 'strm_clk') + * + * The Link value is transmitted in the Main Stream + * Attributes and VB-ID. + */ + +#define _PIPEA_DP_LINK_M 0x70060 +#define _PIPEB_DP_LINK_M 0x71060 +#define PIPEA_DP_LINK_M_MASK (0xffffff) + +#define _PIPEA_DP_LINK_N 0x70064 +#define _PIPEB_DP_LINK_N 0x71064 +#define PIPEA_DP_LINK_N_MASK (0xffffff) + +#define PIPE_GMCH_DATA_M(pipe) _PIPE(pipe, _PIPEA_GMCH_DATA_M, _PIPEB_GMCH_DATA_M) +#define PIPE_GMCH_DATA_N(pipe) _PIPE(pipe, _PIPEA_GMCH_DATA_N, _PIPEB_GMCH_DATA_N) +#define PIPE_DP_LINK_M(pipe) _PIPE(pipe, _PIPEA_DP_LINK_M, _PIPEB_DP_LINK_M) +#define PIPE_DP_LINK_N(pipe) _PIPE(pipe, _PIPEA_DP_LINK_N, _PIPEB_DP_LINK_N) + +/* Display & cursor control */ + +/* Pipe A */ +#define _PIPEADSL 0x70000 +#define DSL_LINEMASK_GEN2 0x00000fff +#define DSL_LINEMASK_GEN3 0x00001fff +#define _PIPEACONF 0x70008 +#define PIPECONF_ENABLE (1<<31) +#define PIPECONF_DISABLE 0 +#define PIPECONF_DOUBLE_WIDE (1<<30) +#define I965_PIPECONF_ACTIVE (1<<30) +#define PIPECONF_FRAME_START_DELAY_MASK (3<<27) +#define PIPECONF_SINGLE_WIDE 0 +#define PIPECONF_PIPE_UNLOCKED 0 +#define PIPECONF_PIPE_LOCKED (1<<25) +#define PIPECONF_PALETTE 0 +#define PIPECONF_GAMMA (1<<24) +#define PIPECONF_FORCE_BORDER (1<<25) +#define PIPECONF_INTERLACE_MASK (7 << 21) +#define PIPECONF_INTERLACE_MASK_HSW (3 << 21) +/* Note that pre-gen3 does not support interlaced display directly. Panel + * fitting must be disabled on pre-ilk for interlaced. */ +#define PIPECONF_PROGRESSIVE (0 << 21) +#define PIPECONF_INTERLACE_W_SYNC_SHIFT_PANEL (4 << 21) /* gen4 only */ +#define PIPECONF_INTERLACE_W_SYNC_SHIFT (5 << 21) /* gen4 only */ +#define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21) +#define PIPECONF_INTERLACE_FIELD_0_ONLY (7 << 21) /* gen3 only */ +/* Ironlake and later have a complete new set of values for interlaced. PFIT + * means panel fitter required, PF means progressive fetch, DBL means power + * saving pixel doubling. */ +#define PIPECONF_PFIT_PF_INTERLACED_ILK (1 << 21) +#define PIPECONF_INTERLACED_ILK (3 << 21) +#define PIPECONF_INTERLACED_DBL_ILK (4 << 21) /* ilk/snb only */ +#define PIPECONF_PFIT_PF_INTERLACED_DBL_ILK (5 << 21) /* ilk/snb only */ +#define PIPECONF_CXSR_DOWNCLOCK (1<<16) +#define PIPECONF_BPP_MASK (0x000000e0) +#define PIPECONF_BPP_8 (0<<5) +#define PIPECONF_BPP_10 (1<<5) +#define PIPECONF_BPP_6 (2<<5) +#define PIPECONF_BPP_12 (3<<5) +#define PIPECONF_DITHER_EN (1<<4) +#define PIPECONF_DITHER_TYPE_MASK (0x0000000c) +#define PIPECONF_DITHER_TYPE_SP (0<<2) +#define PIPECONF_DITHER_TYPE_ST1 (1<<2) +#define PIPECONF_DITHER_TYPE_ST2 (2<<2) +#define PIPECONF_DITHER_TYPE_TEMP (3<<2) +#define _PIPEASTAT 0x70024 +#define PIPE_FIFO_UNDERRUN_STATUS (1UL<<31) +#define SPRITE1_FLIPDONE_INT_EN_VLV (1UL<<30) +#define PIPE_CRC_ERROR_ENABLE (1UL<<29) +#define PIPE_CRC_DONE_ENABLE (1UL<<28) +#define PIPE_GMBUS_EVENT_ENABLE (1UL<<27) +#define PLANE_FLIP_DONE_INT_EN_VLV (1UL<<26) +#define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL<<26) +#define PIPE_VSYNC_INTERRUPT_ENABLE (1UL<<25) +#define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL<<24) +#define PIPE_DPST_EVENT_ENABLE (1UL<<23) +#define SPRITE0_FLIP_DONE_INT_EN_VLV (1UL<<26) +#define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL<<22) +#define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL<<21) +#define PIPE_EVEN_FIELD_INTERRUPT_ENABLE (1UL<<20) +#define PIPE_HOTPLUG_TV_INTERRUPT_ENABLE (1UL<<18) /* pre-965 */ +#define PIPE_START_VBLANK_INTERRUPT_ENABLE (1UL<<18) /* 965 or later */ +#define PIPE_VBLANK_INTERRUPT_ENABLE (1UL<<17) +#define PIPEA_HBLANK_INT_EN_VLV (1UL<<16) +#define PIPE_OVERLAY_UPDATED_ENABLE (1UL<<16) +#define SPRITE1_FLIPDONE_INT_STATUS_VLV (1UL<<15) +#define SPRITE0_FLIPDONE_INT_STATUS_VLV (1UL<<15) +#define PIPE_CRC_ERROR_INTERRUPT_STATUS (1UL<<13) +#define PIPE_CRC_DONE_INTERRUPT_STATUS (1UL<<12) +#define PIPE_GMBUS_INTERRUPT_STATUS (1UL<<11) +#define PLANE_FLIPDONE_INT_STATUS_VLV (1UL<<10) +#define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL<<10) +#define PIPE_VSYNC_INTERRUPT_STATUS (1UL<<9) +#define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL<<8) +#define PIPE_DPST_EVENT_STATUS (1UL<<7) +#define PIPE_LEGACY_BLC_EVENT_STATUS (1UL<<6) +#define PIPE_ODD_FIELD_INTERRUPT_STATUS (1UL<<5) +#define PIPE_EVEN_FIELD_INTERRUPT_STATUS (1UL<<4) +#define PIPE_HOTPLUG_TV_INTERRUPT_STATUS (1UL<<2) /* pre-965 */ +#define PIPE_START_VBLANK_INTERRUPT_STATUS (1UL<<2) /* 965 or later */ +#define PIPE_VBLANK_INTERRUPT_STATUS (1UL<<1) +#define PIPE_OVERLAY_UPDATED_STATUS (1UL<<0) +#define PIPE_BPC_MASK (7 << 5) /* Ironlake */ +#define PIPE_8BPC (0 << 5) +#define PIPE_10BPC (1 << 5) +#define PIPE_6BPC (2 << 5) +#define PIPE_12BPC (3 << 5) + +#define PIPESRC(pipe) _PIPE(pipe, _PIPEASRC, _PIPEBSRC) +#define PIPECONF(tran) _TRANSCODER(tran, _PIPEACONF, _PIPEBCONF) +#define PIPEDSL(pipe) _PIPE(pipe, _PIPEADSL, _PIPEBDSL) +#define PIPEFRAME(pipe) _PIPE(pipe, _PIPEAFRAMEHIGH, _PIPEBFRAMEHIGH) +#define PIPEFRAMEPIXEL(pipe) _PIPE(pipe, _PIPEAFRAMEPIXEL, _PIPEBFRAMEPIXEL) +#define PIPESTAT(pipe) _PIPE(pipe, _PIPEASTAT, _PIPEBSTAT) + +#define VLV_DPFLIPSTAT 0x70028 +#define PIPEB_LINE_COMPARE_INT_EN (1<<29) +#define PIPEB_HLINE_INT_EN (1<<28) +#define PIPEB_VBLANK_INT_EN (1<<27) +#define SPRITED_FLIPDONE_INT_EN (1<<26) +#define SPRITEC_FLIPDONE_INT_EN (1<<25) +#define PLANEB_FLIPDONE_INT_EN (1<<24) +#define PIPEA_LINE_COMPARE_INT_EN (1<<21) +#define PIPEA_HLINE_INT_EN (1<<20) +#define PIPEA_VBLANK_INT_EN (1<<19) +#define SPRITEB_FLIPDONE_INT_EN (1<<18) +#define SPRITEA_FLIPDONE_INT_EN (1<<17) +#define PLANEA_FLIPDONE_INT_EN (1<<16) + +#define DPINVGTT 0x7002c /* VLV only */ +#define CURSORB_INVALID_GTT_INT_EN (1<<23) +#define CURSORA_INVALID_GTT_INT_EN (1<<22) +#define SPRITED_INVALID_GTT_INT_EN (1<<21) +#define SPRITEC_INVALID_GTT_INT_EN (1<<20) +#define PLANEB_INVALID_GTT_INT_EN (1<<19) +#define SPRITEB_INVALID_GTT_INT_EN (1<<18) +#define SPRITEA_INVALID_GTT_INT_EN (1<<17) +#define PLANEA_INVALID_GTT_INT_EN (1<<16) +#define DPINVGTT_EN_MASK 0xff0000 +#define CURSORB_INVALID_GTT_STATUS (1<<7) +#define CURSORA_INVALID_GTT_STATUS (1<<6) +#define SPRITED_INVALID_GTT_STATUS (1<<5) +#define SPRITEC_INVALID_GTT_STATUS (1<<4) +#define PLANEB_INVALID_GTT_STATUS (1<<3) +#define SPRITEB_INVALID_GTT_STATUS (1<<2) +#define SPRITEA_INVALID_GTT_STATUS (1<<1) +#define PLANEA_INVALID_GTT_STATUS (1<<0) +#define DPINVGTT_STATUS_MASK 0xff + +#define DSPARB 0x70030 +#define DSPARB_CSTART_MASK (0x7f << 7) +#define DSPARB_CSTART_SHIFT 7 +#define DSPARB_BSTART_MASK (0x7f) +#define DSPARB_BSTART_SHIFT 0 +#define DSPARB_BEND_SHIFT 9 /* on 855 */ +#define DSPARB_AEND_SHIFT 0 + +#define DSPFW1 0x70034 +#define DSPFW_SR_SHIFT 23 +#define DSPFW_SR_MASK (0x1ff<<23) +#define DSPFW_CURSORB_SHIFT 16 +#define DSPFW_CURSORB_MASK (0x3f<<16) +#define DSPFW_PLANEB_SHIFT 8 +#define DSPFW_PLANEB_MASK (0x7f<<8) +#define DSPFW_PLANEA_MASK (0x7f) +#define DSPFW2 0x70038 +#define DSPFW_CURSORA_MASK 0x00003f00 +#define DSPFW_CURSORA_SHIFT 8 +#define DSPFW_PLANEC_MASK (0x7f) +#define DSPFW3 0x7003c +#define DSPFW_HPLL_SR_EN (1<<31) +#define DSPFW_CURSOR_SR_SHIFT 24 +#define PINEVIEW_SELF_REFRESH_EN (1<<30) +#define DSPFW_CURSOR_SR_MASK (0x3f<<24) +#define DSPFW_HPLL_CURSOR_SHIFT 16 +#define DSPFW_HPLL_CURSOR_MASK (0x3f<<16) +#define DSPFW_HPLL_SR_MASK (0x1ff) + +/* drain latency register values*/ +#define DRAIN_LATENCY_PRECISION_32 32 +#define DRAIN_LATENCY_PRECISION_16 16 +#define VLV_DDL1 0x70050 +#define DDL_CURSORA_PRECISION_32 (1<<31) +#define DDL_CURSORA_PRECISION_16 (0<<31) +#define DDL_CURSORA_SHIFT 24 +#define DDL_PLANEA_PRECISION_32 (1<<7) +#define DDL_PLANEA_PRECISION_16 (0<<7) +#define VLV_DDL2 0x70054 +#define DDL_CURSORB_PRECISION_32 (1<<31) +#define DDL_CURSORB_PRECISION_16 (0<<31) +#define DDL_CURSORB_SHIFT 24 +#define DDL_PLANEB_PRECISION_32 (1<<7) +#define DDL_PLANEB_PRECISION_16 (0<<7) + +/* FIFO watermark sizes etc */ +#define G4X_FIFO_LINE_SIZE 64 +#define I915_FIFO_LINE_SIZE 64 +#define I830_FIFO_LINE_SIZE 32 + +#define VALLEYVIEW_FIFO_SIZE 255 +#define G4X_FIFO_SIZE 127 +#define I965_FIFO_SIZE 512 +#define I945_FIFO_SIZE 127 +#define I915_FIFO_SIZE 95 +#define I855GM_FIFO_SIZE 127 /* In cachelines */ +#define I830_FIFO_SIZE 95 + +#define VALLEYVIEW_MAX_WM 0xff +#define G4X_MAX_WM 0x3f +#define I915_MAX_WM 0x3f + +#define PINEVIEW_DISPLAY_FIFO 512 /* in 64byte unit */ +#define PINEVIEW_FIFO_LINE_SIZE 64 +#define PINEVIEW_MAX_WM 0x1ff +#define PINEVIEW_DFT_WM 0x3f +#define PINEVIEW_DFT_HPLLOFF_WM 0 +#define PINEVIEW_GUARD_WM 10 +#define PINEVIEW_CURSOR_FIFO 64 +#define PINEVIEW_CURSOR_MAX_WM 0x3f +#define PINEVIEW_CURSOR_DFT_WM 0 +#define PINEVIEW_CURSOR_GUARD_WM 5 + +#define VALLEYVIEW_CURSOR_MAX_WM 64 +#define I965_CURSOR_FIFO 64 +#define I965_CURSOR_MAX_WM 32 +#define I965_CURSOR_DFT_WM 8 + +/* define the Watermark register on Ironlake */ +#define WM0_PIPEA_ILK 0x45100 +#define WM0_PIPE_PLANE_MASK (0x7f<<16) +#define WM0_PIPE_PLANE_SHIFT 16 +#define WM0_PIPE_SPRITE_MASK (0x3f<<8) +#define WM0_PIPE_SPRITE_SHIFT 8 +#define WM0_PIPE_CURSOR_MASK (0x1f) + +#define WM0_PIPEB_ILK 0x45104 +#define WM0_PIPEC_IVB 0x45200 +#define WM1_LP_ILK 0x45108 +#define WM1_LP_SR_EN (1<<31) +#define WM1_LP_LATENCY_SHIFT 24 +#define WM1_LP_LATENCY_MASK (0x7f<<24) +#define WM1_LP_FBC_MASK (0xf<<20) +#define WM1_LP_FBC_SHIFT 20 +#define WM1_LP_SR_MASK (0x1ff<<8) +#define WM1_LP_SR_SHIFT 8 +#define WM1_LP_CURSOR_MASK (0x3f) +#define WM2_LP_ILK 0x4510c +#define WM2_LP_EN (1<<31) +#define WM3_LP_ILK 0x45110 +#define WM3_LP_EN (1<<31) +#define WM1S_LP_ILK 0x45120 +#define WM2S_LP_IVB 0x45124 +#define WM3S_LP_IVB 0x45128 +#define WM1S_LP_EN (1<<31) + +/* Memory latency timer register */ +#define MLTR_ILK 0x11222 +#define MLTR_WM1_SHIFT 0 +#define MLTR_WM2_SHIFT 8 +/* the unit of memory self-refresh latency time is 0.5us */ +#define ILK_SRLT_MASK 0x3f +#define ILK_LATENCY(shift) (I915_READ(MLTR_ILK) >> (shift) & ILK_SRLT_MASK) +#define ILK_READ_WM1_LATENCY() ILK_LATENCY(MLTR_WM1_SHIFT) +#define ILK_READ_WM2_LATENCY() ILK_LATENCY(MLTR_WM2_SHIFT) + +/* define the fifo size on Ironlake */ +#define ILK_DISPLAY_FIFO 128 +#define ILK_DISPLAY_MAXWM 64 +#define ILK_DISPLAY_DFTWM 8 +#define ILK_CURSOR_FIFO 32 +#define ILK_CURSOR_MAXWM 16 +#define ILK_CURSOR_DFTWM 8 + +#define ILK_DISPLAY_SR_FIFO 512 +#define ILK_DISPLAY_MAX_SRWM 0x1ff +#define ILK_DISPLAY_DFT_SRWM 0x3f +#define ILK_CURSOR_SR_FIFO 64 +#define ILK_CURSOR_MAX_SRWM 0x3f +#define ILK_CURSOR_DFT_SRWM 8 + +#define ILK_FIFO_LINE_SIZE 64 + +/* define the WM info on Sandybridge */ +#define SNB_DISPLAY_FIFO 128 +#define SNB_DISPLAY_MAXWM 0x7f /* bit 16:22 */ +#define SNB_DISPLAY_DFTWM 8 +#define SNB_CURSOR_FIFO 32 +#define SNB_CURSOR_MAXWM 0x1f /* bit 4:0 */ +#define SNB_CURSOR_DFTWM 8 + +#define SNB_DISPLAY_SR_FIFO 512 +#define SNB_DISPLAY_MAX_SRWM 0x1ff /* bit 16:8 */ +#define SNB_DISPLAY_DFT_SRWM 0x3f +#define SNB_CURSOR_SR_FIFO 64 +#define SNB_CURSOR_MAX_SRWM 0x3f /* bit 5:0 */ +#define SNB_CURSOR_DFT_SRWM 8 + +#define SNB_FBC_MAX_SRWM 0xf /* bit 23:20 */ + +#define SNB_FIFO_LINE_SIZE 64 + + +/* the address where we get all kinds of latency value */ +#define SSKPD 0x5d10 +#define SSKPD_WM_MASK 0x3f +#define SSKPD_WM0_SHIFT 0 +#define SSKPD_WM1_SHIFT 8 +#define SSKPD_WM2_SHIFT 16 +#define SSKPD_WM3_SHIFT 24 + +#define SNB_LATENCY(shift) (I915_READ(MCHBAR_MIRROR_BASE_SNB + SSKPD) >> (shift) & SSKPD_WM_MASK) +#define SNB_READ_WM0_LATENCY() SNB_LATENCY(SSKPD_WM0_SHIFT) +#define SNB_READ_WM1_LATENCY() SNB_LATENCY(SSKPD_WM1_SHIFT) +#define SNB_READ_WM2_LATENCY() SNB_LATENCY(SSKPD_WM2_SHIFT) +#define SNB_READ_WM3_LATENCY() SNB_LATENCY(SSKPD_WM3_SHIFT) + +/* + * The two pipe frame counter registers are not synchronized, so + * reading a stable value is somewhat tricky. The following code + * should work: + * + * do { + * high1 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> + * PIPE_FRAME_HIGH_SHIFT; + * low1 = ((INREG(PIPEAFRAMEPIXEL) & PIPE_FRAME_LOW_MASK) >> + * PIPE_FRAME_LOW_SHIFT); + * high2 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> + * PIPE_FRAME_HIGH_SHIFT); + * } while (high1 != high2); + * frame = (high1 << 8) | low1; + */ +#define _PIPEAFRAMEHIGH 0x70040 +#define PIPE_FRAME_HIGH_MASK 0x0000ffff +#define PIPE_FRAME_HIGH_SHIFT 0 +#define _PIPEAFRAMEPIXEL 0x70044 +#define PIPE_FRAME_LOW_MASK 0xff000000 +#define PIPE_FRAME_LOW_SHIFT 24 +#define PIPE_PIXEL_MASK 0x00ffffff +#define PIPE_PIXEL_SHIFT 0 +/* GM45+ just has to be different */ +#define _PIPEA_FRMCOUNT_GM45 0x70040 +#define _PIPEA_FLIPCOUNT_GM45 0x70044 +#define PIPE_FRMCOUNT_GM45(pipe) _PIPE(pipe, _PIPEA_FRMCOUNT_GM45, _PIPEB_FRMCOUNT_GM45) + +/* Cursor A & B regs */ +#define _CURACNTR 0x70080 +/* Old style CUR*CNTR flags (desktop 8xx) */ +#define CURSOR_ENABLE 0x80000000 +#define CURSOR_GAMMA_ENABLE 0x40000000 +#define CURSOR_STRIDE_MASK 0x30000000 +#define CURSOR_FORMAT_SHIFT 24 +#define CURSOR_FORMAT_MASK (0x07 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_2C (0x00 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_3C (0x01 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_4C (0x02 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_ARGB (0x04 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_XRGB (0x05 << CURSOR_FORMAT_SHIFT) +/* New style CUR*CNTR flags */ +#define CURSOR_MODE 0x27 +#define CURSOR_MODE_DISABLE 0x00 +#define CURSOR_MODE_64_32B_AX 0x07 +#define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) +#define MCURSOR_PIPE_SELECT (1 << 28) +#define MCURSOR_PIPE_A 0x00 +#define MCURSOR_PIPE_B (1 << 28) +#define MCURSOR_GAMMA_ENABLE (1 << 26) +#define _CURABASE 0x70084 +#define _CURAPOS 0x70088 +#define CURSOR_POS_MASK 0x007FF +#define CURSOR_POS_SIGN 0x8000 +#define CURSOR_X_SHIFT 0 +#define CURSOR_Y_SHIFT 16 +#define CURSIZE 0x700a0 +#define _CURBCNTR 0x700c0 +#define _CURBBASE 0x700c4 +#define _CURBPOS 0x700c8 + +#define _CURBCNTR_IVB 0x71080 +#define _CURBBASE_IVB 0x71084 +#define _CURBPOS_IVB 0x71088 + +#define CURCNTR(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR) +#define CURBASE(pipe) _PIPE(pipe, _CURABASE, _CURBBASE) +#define CURPOS(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS) + +#define CURCNTR_IVB(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR_IVB) +#define CURBASE_IVB(pipe) _PIPE(pipe, _CURABASE, _CURBBASE_IVB) +#define CURPOS_IVB(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS_IVB) + +/* Display A control */ +#define _DSPACNTR 0x70180 +#define DISPLAY_PLANE_ENABLE (1<<31) +#define DISPLAY_PLANE_DISABLE 0 +#define DISPPLANE_GAMMA_ENABLE (1<<30) +#define DISPPLANE_GAMMA_DISABLE 0 +#define DISPPLANE_PIXFORMAT_MASK (0xf<<26) +#define DISPPLANE_YUV422 (0x0<<26) +#define DISPPLANE_8BPP (0x2<<26) +#define DISPPLANE_BGRA555 (0x3<<26) +#define DISPPLANE_BGRX555 (0x4<<26) +#define DISPPLANE_BGRX565 (0x5<<26) +#define DISPPLANE_BGRX888 (0x6<<26) +#define DISPPLANE_BGRA888 (0x7<<26) +#define DISPPLANE_RGBX101010 (0x8<<26) +#define DISPPLANE_RGBA101010 (0x9<<26) +#define DISPPLANE_BGRX101010 (0xa<<26) +#define DISPPLANE_RGBX161616 (0xc<<26) +#define DISPPLANE_RGBX888 (0xe<<26) +#define DISPPLANE_RGBA888 (0xf<<26) +#define DISPPLANE_STEREO_ENABLE (1<<25) +#define DISPPLANE_STEREO_DISABLE 0 +#define DISPPLANE_SEL_PIPE_SHIFT 24 +#define DISPPLANE_SEL_PIPE_MASK (3<> 30) +#define PORT_TO_PIPE_CPT(val) (((val) & PORT_TRANS_SEL_MASK) >> 29) + +#define TRANS_DP_CTL_A 0xe0300 +#define TRANS_DP_CTL_B 0xe1300 +#define TRANS_DP_CTL_C 0xe2300 +#define TRANS_DP_CTL(pipe) _PIPE(pipe, TRANS_DP_CTL_A, TRANS_DP_CTL_B) +#define TRANS_DP_OUTPUT_ENABLE (1<<31) +#define TRANS_DP_PORT_SEL_B (0<<29) +#define TRANS_DP_PORT_SEL_C (1<<29) +#define TRANS_DP_PORT_SEL_D (2<<29) +#define TRANS_DP_PORT_SEL_NONE (3<<29) +#define TRANS_DP_PORT_SEL_MASK (3<<29) +#define TRANS_DP_AUDIO_ONLY (1<<26) +#define TRANS_DP_ENH_FRAMING (1<<18) +#define TRANS_DP_8BPC (0<<9) +#define TRANS_DP_10BPC (1<<9) +#define TRANS_DP_6BPC (2<<9) +#define TRANS_DP_12BPC (3<<9) +#define TRANS_DP_BPC_MASK (3<<9) +#define TRANS_DP_VSYNC_ACTIVE_HIGH (1<<4) +#define TRANS_DP_VSYNC_ACTIVE_LOW 0 +#define TRANS_DP_HSYNC_ACTIVE_HIGH (1<<3) +#define TRANS_DP_HSYNC_ACTIVE_LOW 0 +#define TRANS_DP_SYNC_MASK (3<<3) + +/* SNB eDP training params */ +/* SNB A-stepping */ +#define EDP_LINK_TRAIN_400MV_0DB_SNB_A (0x38<<22) +#define EDP_LINK_TRAIN_400MV_6DB_SNB_A (0x02<<22) +#define EDP_LINK_TRAIN_600MV_3_5DB_SNB_A (0x01<<22) +#define EDP_LINK_TRAIN_800MV_0DB_SNB_A (0x0<<22) +/* SNB B-stepping */ +#define EDP_LINK_TRAIN_400_600MV_0DB_SNB_B (0x0<<22) +#define EDP_LINK_TRAIN_400MV_3_5DB_SNB_B (0x1<<22) +#define EDP_LINK_TRAIN_400_600MV_6DB_SNB_B (0x3a<<22) +#define EDP_LINK_TRAIN_600_800MV_3_5DB_SNB_B (0x39<<22) +#define EDP_LINK_TRAIN_800_1200MV_0DB_SNB_B (0x38<<22) +#define EDP_LINK_TRAIN_VOL_EMP_MASK_SNB (0x3f<<22) + +/* IVB */ +#define EDP_LINK_TRAIN_400MV_0DB_IVB (0x24 <<22) +#define EDP_LINK_TRAIN_400MV_3_5DB_IVB (0x2a <<22) +#define EDP_LINK_TRAIN_400MV_6DB_IVB (0x2f <<22) +#define EDP_LINK_TRAIN_600MV_0DB_IVB (0x30 <<22) +#define EDP_LINK_TRAIN_600MV_3_5DB_IVB (0x36 <<22) +#define EDP_LINK_TRAIN_800MV_0DB_IVB (0x38 <<22) +#define EDP_LINK_TRAIN_800MV_3_5DB_IVB (0x33 <<22) + +/* legacy values */ +#define EDP_LINK_TRAIN_500MV_0DB_IVB (0x00 <<22) +#define EDP_LINK_TRAIN_1000MV_0DB_IVB (0x20 <<22) +#define EDP_LINK_TRAIN_500MV_3_5DB_IVB (0x02 <<22) +#define EDP_LINK_TRAIN_1000MV_3_5DB_IVB (0x22 <<22) +#define EDP_LINK_TRAIN_1000MV_6DB_IVB (0x23 <<22) + +#define EDP_LINK_TRAIN_VOL_EMP_MASK_IVB (0x3f<<22) + +#define FORCEWAKE 0xA18C +#define FORCEWAKE_VLV 0x1300b0 +#define FORCEWAKE_ACK_VLV 0x1300b4 +#define FORCEWAKE_ACK_HSW 0x130044 +#define FORCEWAKE_ACK 0x130090 +#define FORCEWAKE_MT 0xa188 /* multi-threaded */ +#define FORCEWAKE_KERNEL 0x1 +#define FORCEWAKE_USER 0x2 +#define FORCEWAKE_MT_ACK 0x130040 +#define ECOBUS 0xa180 +#define FORCEWAKE_MT_ENABLE (1<<5) + +#define GTFIFODBG 0x120000 +#define GT_FIFO_CPU_ERROR_MASK 7 +#define GT_FIFO_OVFERR (1<<2) +#define GT_FIFO_IAWRERR (1<<1) +#define GT_FIFO_IARDERR (1<<0) + +#define GT_FIFO_FREE_ENTRIES 0x120008 +#define GT_FIFO_NUM_RESERVED_ENTRIES 20 + +#define GEN6_UCGCTL1 0x9400 +# define GEN6_BLBUNIT_CLOCK_GATE_DISABLE (1 << 5) +# define GEN6_CSUNIT_CLOCK_GATE_DISABLE (1 << 7) + +#define GEN6_UCGCTL2 0x9404 +# define GEN7_VDSUNIT_CLOCK_GATE_DISABLE (1 << 30) +# define GEN7_TDLUNIT_CLOCK_GATE_DISABLE (1 << 22) +# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13) +# define GEN6_RCPBUNIT_CLOCK_GATE_DISABLE (1 << 12) +# define GEN6_RCCUNIT_CLOCK_GATE_DISABLE (1 << 11) + +#define GEN7_UCGCTL4 0x940c +#define GEN7_L3BANK2X_CLOCK_GATE_DISABLE (1<<25) + +#define GEN6_RPNSWREQ 0xA008 +#define GEN6_TURBO_DISABLE (1<<31) +#define GEN6_FREQUENCY(x) ((x)<<25) +#define GEN6_OFFSET(x) ((x)<<19) +#define GEN6_AGGRESSIVE_TURBO (0<<15) +#define GEN6_RC_VIDEO_FREQ 0xA00C +#define GEN6_RC_CONTROL 0xA090 +#define GEN6_RC_CTL_RC6pp_ENABLE (1<<16) +#define GEN6_RC_CTL_RC6p_ENABLE (1<<17) +#define GEN6_RC_CTL_RC6_ENABLE (1<<18) +#define GEN6_RC_CTL_RC1e_ENABLE (1<<20) +#define GEN6_RC_CTL_RC7_ENABLE (1<<22) +#define GEN6_RC_CTL_EI_MODE(x) ((x)<<27) +#define GEN6_RC_CTL_HW_ENABLE (1<<31) +#define GEN6_RP_DOWN_TIMEOUT 0xA010 +#define GEN6_RP_INTERRUPT_LIMITS 0xA014 +#define GEN6_RPSTAT1 0xA01C +#define GEN6_CAGF_SHIFT 8 +#define 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) +#define GEN6_RP_MEDIA_HW_TURBO_MODE (3<<9) +#define GEN6_RP_MEDIA_HW_NORMAL_MODE (2<<9) +#define GEN6_RP_MEDIA_HW_MODE (1<<9) +#define GEN6_RP_MEDIA_SW_MODE (0<<9) +#define GEN6_RP_MEDIA_IS_GFX (1<<8) +#define GEN6_RP_ENABLE (1<<7) +#define GEN6_RP_UP_IDLE_MIN (0x1<<3) +#define GEN6_RP_UP_BUSY_AVG (0x2<<3) +#define GEN6_RP_UP_BUSY_CONT (0x4<<3) +#define GEN7_RP_DOWN_IDLE_AVG (0x2<<0) +#define GEN6_RP_DOWN_IDLE_CONT (0x1<<0) +#define GEN6_RP_UP_THRESHOLD 0xA02C +#define GEN6_RP_DOWN_THRESHOLD 0xA030 +#define GEN6_RP_CUR_UP_EI 0xA050 +#define GEN6_CURICONT_MASK 0xffffff +#define GEN6_RP_CUR_UP 0xA054 +#define GEN6_CURBSYTAVG_MASK 0xffffff +#define GEN6_RP_PREV_UP 0xA058 +#define GEN6_RP_CUR_DOWN_EI 0xA05C +#define GEN6_CURIAVG_MASK 0xffffff +#define GEN6_RP_CUR_DOWN 0xA060 +#define GEN6_RP_PREV_DOWN 0xA064 +#define GEN6_RP_UP_EI 0xA068 +#define GEN6_RP_DOWN_EI 0xA06C +#define GEN6_RP_IDLE_HYSTERSIS 0xA070 +#define GEN6_RC_STATE 0xA094 +#define GEN6_RC1_WAKE_RATE_LIMIT 0xA098 +#define GEN6_RC6_WAKE_RATE_LIMIT 0xA09C +#define GEN6_RC6pp_WAKE_RATE_LIMIT 0xA0A0 +#define GEN6_RC_EVALUATION_INTERVAL 0xA0A8 +#define GEN6_RC_IDLE_HYSTERSIS 0xA0AC +#define GEN6_RC_SLEEP 0xA0B0 +#define GEN6_RC1e_THRESHOLD 0xA0B4 +#define GEN6_RC6_THRESHOLD 0xA0B8 +#define GEN6_RC6p_THRESHOLD 0xA0BC +#define GEN6_RC6pp_THRESHOLD 0xA0C0 +#define GEN6_PMINTRMSK 0xA168 + +#define GEN6_PMISR 0x44020 +#define GEN6_PMIMR 0x44024 /* rps_lock */ +#define GEN6_PMIIR 0x44028 +#define GEN6_PMIER 0x4402C +#define GEN6_PM_MBOX_EVENT (1<<25) +#define GEN6_PM_THERMAL_EVENT (1<<24) +#define GEN6_PM_RP_DOWN_TIMEOUT (1<<6) +#define GEN6_PM_RP_UP_THRESHOLD (1<<5) +#define GEN6_PM_RP_DOWN_THRESHOLD (1<<4) +#define GEN6_PM_RP_UP_EI_EXPIRED (1<<2) +#define GEN6_PM_RP_DOWN_EI_EXPIRED (1<<1) +#define GEN6_PM_DEFERRED_EVENTS (GEN6_PM_RP_UP_THRESHOLD | \ + GEN6_PM_RP_DOWN_THRESHOLD | \ + GEN6_PM_RP_DOWN_TIMEOUT) + +#define GEN6_GT_GFX_RC6_LOCKED 0x138104 +#define GEN6_GT_GFX_RC6 0x138108 +#define GEN6_GT_GFX_RC6p 0x13810C +#define GEN6_GT_GFX_RC6pp 0x138110 + +#define GEN6_PCODE_MAILBOX 0x138124 +#define GEN6_PCODE_READY (1<<31) +#define GEN6_READ_OC_PARAMS 0xc +#define GEN6_PCODE_WRITE_MIN_FREQ_TABLE 0x8 +#define GEN6_PCODE_READ_MIN_FREQ_TABLE 0x9 +#define GEN6_PCODE_WRITE_RC6VIDS 0x4 +#define GEN6_PCODE_READ_RC6VIDS 0x5 +#define GEN6_ENCODE_RC6_VID(mv) (((mv) - 245) / 5) +#define GEN6_DECODE_RC6_VID(vids) (((vids) * 5) + 245) +#define GEN6_PCODE_DATA 0x138128 +#define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8 + +#define GEN6_GT_CORE_STATUS 0x138060 +#define GEN6_CORE_CPD_STATE_MASK (7<<4) +#define GEN6_RCn_MASK 7 +#define GEN6_RC0 0 +#define GEN6_RC3 2 +#define GEN6_RC6 3 +#define GEN6_RC7 4 + +#define GEN7_MISCCPCTL (0x9424) +#define GEN7_DOP_CLOCK_GATE_ENABLE (1<<0) + +/* IVYBRIDGE DPF */ +#define GEN7_L3CDERRST1 0xB008 /* L3CD Error Status 1 */ +#define GEN7_L3CDERRST1_ROW_MASK (0x7ff<<14) +#define GEN7_PARITY_ERROR_VALID (1<<13) +#define GEN7_L3CDERRST1_BANK_MASK (3<<11) +#define GEN7_L3CDERRST1_SUBBANK_MASK (7<<8) +#define GEN7_PARITY_ERROR_ROW(reg) \ + ((reg & GEN7_L3CDERRST1_ROW_MASK) >> 14) +#define GEN7_PARITY_ERROR_BANK(reg) \ + ((reg & GEN7_L3CDERRST1_BANK_MASK) >> 11) +#define GEN7_PARITY_ERROR_SUBBANK(reg) \ + ((reg & GEN7_L3CDERRST1_SUBBANK_MASK) >> 8) +#define GEN7_L3CDERRST1_ENABLE (1<<7) + +#define GEN7_L3LOG_BASE 0xB070 +#define GEN7_L3LOG_SIZE 0x80 + +#define GEN7_HALF_SLICE_CHICKEN1 0xe100 /* IVB GT1 + VLV */ +#define GEN7_HALF_SLICE_CHICKEN1_GT2 0xf100 +#define GEN7_MAX_PS_THREAD_DEP (8<<12) +#define GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE (1<<3) + +#define GEN7_ROW_CHICKEN2 0xe4f4 +#define GEN7_ROW_CHICKEN2_GT2 0xf4f4 +#define DOP_CLOCK_GATING_DISABLE (1<<0) + +#define G4X_AUD_VID_DID 0x62020 +#define INTEL_AUDIO_DEVCL 0x808629FB +#define INTEL_AUDIO_DEVBLC 0x80862801 +#define INTEL_AUDIO_DEVCTG 0x80862802 + +#define G4X_AUD_CNTL_ST 0x620B4 +#define G4X_ELDV_DEVCL_DEVBLC (1 << 13) +#define G4X_ELDV_DEVCTG (1 << 14) +#define G4X_ELD_ADDR (0xf << 5) +#define G4X_ELD_ACK (1 << 4) +#define G4X_HDMIW_HDMIEDID 0x6210C + +#define IBX_HDMIW_HDMIEDID_A 0xE2050 +#define IBX_HDMIW_HDMIEDID_B 0xE2150 +#define IBX_HDMIW_HDMIEDID(pipe) _PIPE(pipe, \ + IBX_HDMIW_HDMIEDID_A, \ + IBX_HDMIW_HDMIEDID_B) +#define IBX_AUD_CNTL_ST_A 0xE20B4 +#define IBX_AUD_CNTL_ST_B 0xE21B4 +#define IBX_AUD_CNTL_ST(pipe) _PIPE(pipe, \ + IBX_AUD_CNTL_ST_A, \ + IBX_AUD_CNTL_ST_B) +#define IBX_ELD_BUFFER_SIZE (0x1f << 10) +#define IBX_ELD_ADDRESS (0x1f << 5) +#define IBX_ELD_ACK (1 << 4) +#define IBX_AUD_CNTL_ST2 0xE20C0 +#define IBX_ELD_VALIDB (1 << 0) +#define IBX_CP_READYB (1 << 1) + +#define CPT_HDMIW_HDMIEDID_A 0xE5050 +#define CPT_HDMIW_HDMIEDID_B 0xE5150 +#define CPT_HDMIW_HDMIEDID(pipe) _PIPE(pipe, \ + CPT_HDMIW_HDMIEDID_A, \ + CPT_HDMIW_HDMIEDID_B) +#define CPT_AUD_CNTL_ST_A 0xE50B4 +#define CPT_AUD_CNTL_ST_B 0xE51B4 +#define CPT_AUD_CNTL_ST(pipe) _PIPE(pipe, \ + CPT_AUD_CNTL_ST_A, \ + CPT_AUD_CNTL_ST_B) +#define CPT_AUD_CNTRL_ST2 0xE50C0 + +/* These are the 4 32-bit write offset registers for each stream + * output buffer. It determines the offset from the + * 3DSTATE_SO_BUFFERs that the next streamed vertex output goes to. + */ +#define GEN7_SO_WRITE_OFFSET(n) (0x5280 + (n) * 4) + +#define IBX_AUD_CONFIG_A 0xe2000 +#define IBX_AUD_CONFIG_B 0xe2100 +#define IBX_AUD_CFG(pipe) _PIPE(pipe, \ + IBX_AUD_CONFIG_A, \ + IBX_AUD_CONFIG_B) +#define CPT_AUD_CONFIG_A 0xe5000 +#define CPT_AUD_CONFIG_B 0xe5100 +#define CPT_AUD_CFG(pipe) _PIPE(pipe, \ + CPT_AUD_CONFIG_A, \ + CPT_AUD_CONFIG_B) +#define AUD_CONFIG_N_VALUE_INDEX (1 << 29) +#define AUD_CONFIG_N_PROG_ENABLE (1 << 28) +#define AUD_CONFIG_UPPER_N_SHIFT 20 +#define AUD_CONFIG_UPPER_N_VALUE (0xff << 20) +#define AUD_CONFIG_LOWER_N_SHIFT 4 +#define AUD_CONFIG_LOWER_N_VALUE (0xfff << 4) +#define AUD_CONFIG_PIXEL_CLOCK_HDMI_SHIFT 16 +#define AUD_CONFIG_PIXEL_CLOCK_HDMI (0xf << 16) +#define AUD_CONFIG_DISABLE_NCTS (1 << 3) + +/* HSW Audio */ +#define HSW_AUD_CONFIG_A 0x65000 /* Audio Configuration Transcoder A */ +#define HSW_AUD_CONFIG_B 0x65100 /* Audio Configuration Transcoder B */ +#define HSW_AUD_CFG(pipe) _PIPE(pipe, \ + HSW_AUD_CONFIG_A, \ + HSW_AUD_CONFIG_B) + +#define HSW_AUD_MISC_CTRL_A 0x65010 /* Audio Misc Control Convert 1 */ +#define HSW_AUD_MISC_CTRL_B 0x65110 /* Audio Misc Control Convert 2 */ +#define HSW_AUD_MISC_CTRL(pipe) _PIPE(pipe, \ + HSW_AUD_MISC_CTRL_A, \ + HSW_AUD_MISC_CTRL_B) + +#define HSW_AUD_DIP_ELD_CTRL_ST_A 0x650b4 /* Audio DIP and ELD Control State Transcoder A */ +#define HSW_AUD_DIP_ELD_CTRL_ST_B 0x651b4 /* Audio DIP and ELD Control State Transcoder B */ +#define HSW_AUD_DIP_ELD_CTRL(pipe) _PIPE(pipe, \ + HSW_AUD_DIP_ELD_CTRL_ST_A, \ + HSW_AUD_DIP_ELD_CTRL_ST_B) + +/* Audio Digital Converter */ +#define HSW_AUD_DIG_CNVT_1 0x65080 /* Audio Converter 1 */ +#define HSW_AUD_DIG_CNVT_2 0x65180 /* Audio Converter 1 */ +#define AUD_DIG_CNVT(pipe) _PIPE(pipe, \ + HSW_AUD_DIG_CNVT_1, \ + HSW_AUD_DIG_CNVT_2) +#define DIP_PORT_SEL_MASK 0x3 + +#define HSW_AUD_EDID_DATA_A 0x65050 +#define HSW_AUD_EDID_DATA_B 0x65150 +#define HSW_AUD_EDID_DATA(pipe) _PIPE(pipe, \ + HSW_AUD_EDID_DATA_A, \ + HSW_AUD_EDID_DATA_B) + +#define HSW_AUD_PIPE_CONV_CFG 0x6507c /* Audio pipe and converter configs */ +#define HSW_AUD_PIN_ELD_CP_VLD 0x650c0 /* Audio ELD and CP Ready Status */ +#define AUDIO_INACTIVE_C (1<<11) +#define AUDIO_INACTIVE_B (1<<7) +#define AUDIO_INACTIVE_A (1<<3) +#define AUDIO_OUTPUT_ENABLE_A (1<<2) +#define AUDIO_OUTPUT_ENABLE_B (1<<6) +#define AUDIO_OUTPUT_ENABLE_C (1<<10) +#define AUDIO_ELD_VALID_A (1<<0) +#define AUDIO_ELD_VALID_B (1<<4) +#define AUDIO_ELD_VALID_C (1<<8) +#define AUDIO_CP_READY_A (1<<1) +#define AUDIO_CP_READY_B (1<<5) +#define AUDIO_CP_READY_C (1<<9) + +/* HSW Power Wells */ +#define HSW_PWR_WELL_CTL1 0x45400 /* BIOS */ +#define HSW_PWR_WELL_CTL2 0x45404 /* Driver */ +#define HSW_PWR_WELL_CTL3 0x45408 /* KVMR */ +#define HSW_PWR_WELL_CTL4 0x4540C /* Debug */ +#define HSW_PWR_WELL_ENABLE (1<<31) +#define HSW_PWR_WELL_STATE (1<<30) +#define HSW_PWR_WELL_CTL5 0x45410 +#define HSW_PWR_WELL_ENABLE_SINGLE_STEP (1<<31) +#define HSW_PWR_WELL_PWR_GATE_OVERRIDE (1<<20) +#define HSW_PWR_WELL_FORCE_ON (1<<19) +#define HSW_PWR_WELL_CTL6 0x45414 + +/* Per-pipe DDI Function Control */ +#define TRANS_DDI_FUNC_CTL_A 0x60400 +#define TRANS_DDI_FUNC_CTL_B 0x61400 +#define TRANS_DDI_FUNC_CTL_C 0x62400 +#define TRANS_DDI_FUNC_CTL_EDP 0x6F400 +#define TRANS_DDI_FUNC_CTL(tran) _TRANSCODER(tran, TRANS_DDI_FUNC_CTL_A, \ + TRANS_DDI_FUNC_CTL_B) +#define TRANS_DDI_FUNC_ENABLE (1<<31) +/* Those bits are ignored by pipe EDP since it can only connect to DDI A */ +#define TRANS_DDI_PORT_MASK (7<<28) +#define TRANS_DDI_SELECT_PORT(x) ((x)<<28) +#define TRANS_DDI_PORT_NONE (0<<28) +#define TRANS_DDI_MODE_SELECT_MASK (7<<24) +#define TRANS_DDI_MODE_SELECT_HDMI (0<<24) +#define TRANS_DDI_MODE_SELECT_DVI (1<<24) +#define TRANS_DDI_MODE_SELECT_DP_SST (2<<24) +#define TRANS_DDI_MODE_SELECT_DP_MST (3<<24) +#define TRANS_DDI_MODE_SELECT_FDI (4<<24) +#define TRANS_DDI_BPC_MASK (7<<20) +#define TRANS_DDI_BPC_8 (0<<20) +#define TRANS_DDI_BPC_10 (1<<20) +#define TRANS_DDI_BPC_6 (2<<20) +#define TRANS_DDI_BPC_12 (3<<20) +#define TRANS_DDI_PVSYNC (1<<17) +#define TRANS_DDI_PHSYNC (1<<16) +#define TRANS_DDI_EDP_INPUT_MASK (7<<12) +#define TRANS_DDI_EDP_INPUT_A_ON (0<<12) +#define TRANS_DDI_EDP_INPUT_A_ONOFF (4<<12) +#define TRANS_DDI_EDP_INPUT_B_ONOFF (5<<12) +#define TRANS_DDI_EDP_INPUT_C_ONOFF (6<<12) +#define TRANS_DDI_BFI_ENABLE (1<<4) +#define TRANS_DDI_PORT_WIDTH_X1 (0<<1) +#define TRANS_DDI_PORT_WIDTH_X2 (1<<1) +#define TRANS_DDI_PORT_WIDTH_X4 (3<<1) + +/* DisplayPort Transport Control */ +#define DP_TP_CTL_A 0x64040 +#define DP_TP_CTL_B 0x64140 +#define DP_TP_CTL(port) _PORT(port, DP_TP_CTL_A, DP_TP_CTL_B) +#define DP_TP_CTL_ENABLE (1<<31) +#define DP_TP_CTL_MODE_SST (0<<27) +#define DP_TP_CTL_MODE_MST (1<<27) +#define DP_TP_CTL_ENHANCED_FRAME_ENABLE (1<<18) +#define DP_TP_CTL_FDI_AUTOTRAIN (1<<15) +#define DP_TP_CTL_LINK_TRAIN_MASK (7<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT1 (0<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT2 (1<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT3 (4<<8) +#define DP_TP_CTL_LINK_TRAIN_IDLE (2<<8) +#define DP_TP_CTL_LINK_TRAIN_NORMAL (3<<8) +#define DP_TP_CTL_SCRAMBLE_DISABLE (1<<7) + +/* DisplayPort Transport Status */ +#define DP_TP_STATUS_A 0x64044 +#define DP_TP_STATUS_B 0x64144 +#define DP_TP_STATUS(port) _PORT(port, DP_TP_STATUS_A, DP_TP_STATUS_B) +#define DP_TP_STATUS_IDLE_DONE (1<<25) +#define DP_TP_STATUS_AUTOTRAIN_DONE (1<<12) + +/* DDI Buffer Control */ +#define DDI_BUF_CTL_A 0x64000 +#define DDI_BUF_CTL_B 0x64100 +#define DDI_BUF_CTL(port) _PORT(port, DDI_BUF_CTL_A, DDI_BUF_CTL_B) +#define DDI_BUF_CTL_ENABLE (1<<31) +#define DDI_BUF_EMP_400MV_0DB_HSW (0<<24) /* Sel0 */ +#define DDI_BUF_EMP_400MV_3_5DB_HSW (1<<24) /* Sel1 */ +#define DDI_BUF_EMP_400MV_6DB_HSW (2<<24) /* Sel2 */ +#define DDI_BUF_EMP_400MV_9_5DB_HSW (3<<24) /* Sel3 */ +#define DDI_BUF_EMP_600MV_0DB_HSW (4<<24) /* Sel4 */ +#define DDI_BUF_EMP_600MV_3_5DB_HSW (5<<24) /* Sel5 */ +#define DDI_BUF_EMP_600MV_6DB_HSW (6<<24) /* Sel6 */ +#define DDI_BUF_EMP_800MV_0DB_HSW (7<<24) /* Sel7 */ +#define DDI_BUF_EMP_800MV_3_5DB_HSW (8<<24) /* Sel8 */ +#define DDI_BUF_EMP_MASK (0xf<<24) +#define DDI_BUF_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) +#define DDI_PORT_WIDTH_X2 (1<<1) +#define DDI_PORT_WIDTH_X4 (3<<1) +#define DDI_INIT_DISPLAY_DETECTED (1<<0) + +/* DDI Buffer Translations */ +#define DDI_BUF_TRANS_A 0x64E00 +#define DDI_BUF_TRANS_B 0x64E60 +#define DDI_BUF_TRANS(port) _PORT(port, DDI_BUF_TRANS_A, DDI_BUF_TRANS_B) + +/* Sideband Interface (SBI) is programmed indirectly, via + * SBI_ADDR, which contains the register offset; and SBI_DATA, + * which contains the payload */ +#define SBI_ADDR 0xC6000 +#define SBI_DATA 0xC6004 +#define SBI_CTL_STAT 0xC6008 +#define SBI_CTL_DEST_ICLK (0x0<<16) +#define SBI_CTL_DEST_MPHY (0x1<<16) +#define SBI_CTL_OP_IORD (0x2<<8) +#define SBI_CTL_OP_IOWR (0x3<<8) +#define SBI_CTL_OP_CRRD (0x6<<8) +#define SBI_CTL_OP_CRWR (0x7<<8) +#define SBI_RESPONSE_FAIL (0x1<<1) +#define SBI_RESPONSE_SUCCESS (0x0<<1) +#define SBI_BUSY (0x1<<0) +#define SBI_READY (0x0<<0) + +/* SBI offsets */ +#define SBI_SSCDIVINTPHASE6 0x0600 +#define SBI_SSCDIVINTPHASE_DIVSEL_MASK ((0x7f)<<1) +#define SBI_SSCDIVINTPHASE_DIVSEL(x) ((x)<<1) +#define SBI_SSCDIVINTPHASE_INCVAL_MASK ((0x7f)<<8) +#define SBI_SSCDIVINTPHASE_INCVAL(x) ((x)<<8) +#define SBI_SSCDIVINTPHASE_DIR(x) ((x)<<15) +#define SBI_SSCDIVINTPHASE_PROPAGATE (1<<0) +#define SBI_SSCCTL 0x020c +#define SBI_SSCCTL6 0x060C +#define SBI_SSCCTL_PATHALT (1<<3) +#define SBI_SSCCTL_DISABLE (1<<0) +#define SBI_SSCAUXDIV6 0x0610 +#define SBI_SSCAUXDIV_FINALDIV2SEL(x) ((x)<<4) +#define SBI_DBUFF0 0x2a00 +#define SBI_DBUFF0_ENABLE (1<<0) + +/* LPT PIXCLK_GATE */ +#define PIXCLK_GATE 0xC6020 +#define PIXCLK_GATE_UNGATE (1<<0) +#define PIXCLK_GATE_GATE (0<<0) + +/* SPLL */ +#define SPLL_CTL 0x46020 +#define SPLL_PLL_ENABLE (1<<31) +#define SPLL_PLL_SSC (1<<28) +#define SPLL_PLL_NON_SSC (2<<28) +#define SPLL_PLL_FREQ_810MHz (0<<26) +#define SPLL_PLL_FREQ_1350MHz (1<<26) + +/* WRPLL */ +#define WRPLL_CTL1 0x46040 +#define WRPLL_CTL2 0x46060 +#define WRPLL_PLL_ENABLE (1<<31) +#define WRPLL_PLL_SELECT_SSC (0x01<<28) +#define WRPLL_PLL_SELECT_NON_SSC (0x02<<28) +#define WRPLL_PLL_SELECT_LCPLL_2700 (0x03<<28) +/* WRPLL divider programming */ +#define WRPLL_DIVIDER_REFERENCE(x) ((x)<<0) +#define WRPLL_DIVIDER_POST(x) ((x)<<8) +#define WRPLL_DIVIDER_FEEDBACK(x) ((x)<<16) + +/* Port clock selection */ +#define PORT_CLK_SEL_A 0x46100 +#define PORT_CLK_SEL_B 0x46104 +#define PORT_CLK_SEL(port) _PORT(port, PORT_CLK_SEL_A, PORT_CLK_SEL_B) +#define PORT_CLK_SEL_LCPLL_2700 (0<<29) +#define PORT_CLK_SEL_LCPLL_1350 (1<<29) +#define PORT_CLK_SEL_LCPLL_810 (2<<29) +#define PORT_CLK_SEL_SPLL (3<<29) +#define PORT_CLK_SEL_WRPLL1 (4<<29) +#define PORT_CLK_SEL_WRPLL2 (5<<29) +#define PORT_CLK_SEL_NONE (7<<29) + +/* Transcoder clock selection */ +#define TRANS_CLK_SEL_A 0x46140 +#define TRANS_CLK_SEL_B 0x46144 +#define TRANS_CLK_SEL(tran) _TRANSCODER(tran, TRANS_CLK_SEL_A, TRANS_CLK_SEL_B) +/* For each transcoder, we need to select the corresponding port clock */ +#define TRANS_CLK_SEL_DISABLED (0x0<<29) +#define TRANS_CLK_SEL_PORT(x) ((x+1)<<29) + +#define _TRANSA_MSA_MISC 0x60410 +#define _TRANSB_MSA_MISC 0x61410 +#define TRANS_MSA_MISC(tran) _TRANSCODER(tran, _TRANSA_MSA_MISC, \ + _TRANSB_MSA_MISC) +#define TRANS_MSA_SYNC_CLK (1<<0) +#define TRANS_MSA_6_BPC (0<<5) +#define TRANS_MSA_8_BPC (1<<5) +#define TRANS_MSA_10_BPC (2<<5) +#define TRANS_MSA_12_BPC (3<<5) +#define TRANS_MSA_16_BPC (4<<5) + +/* LCPLL Control */ +#define LCPLL_CTL 0x130040 +#define LCPLL_PLL_DISABLE (1<<31) +#define LCPLL_PLL_LOCK (1<<30) +#define LCPLL_CLK_FREQ_MASK (3<<26) +#define LCPLL_CLK_FREQ_450 (0<<26) +#define LCPLL_CD_CLOCK_DISABLE (1<<25) +#define LCPLL_CD2X_CLOCK_DISABLE (1<<23) +#define LCPLL_CD_SOURCE_FCLK (1<<21) + +/* Pipe WM_LINETIME - watermark line time */ +#define PIPE_WM_LINETIME_A 0x45270 +#define PIPE_WM_LINETIME_B 0x45274 +#define PIPE_WM_LINETIME(pipe) _PIPE(pipe, PIPE_WM_LINETIME_A, \ + PIPE_WM_LINETIME_B) +#define PIPE_WM_LINETIME_MASK (0x1ff) +#define PIPE_WM_LINETIME_TIME(x) ((x)) +#define PIPE_WM_LINETIME_IPS_LINETIME_MASK (0x1ff<<16) +#define PIPE_WM_LINETIME_IPS_LINETIME(x) ((x)<<16) + +/* SFUSE_STRAP */ +#define SFUSE_STRAP 0xc2014 +#define SFUSE_STRAP_DDIB_DETECTED (1<<2) +#define SFUSE_STRAP_DDIC_DETECTED (1<<1) +#define SFUSE_STRAP_DDID_DETECTED (1<<0) + +#define WM_DBG 0x45280 +#define WM_DBG_DISALLOW_MULTIPLE_LP (1<<0) +#define WM_DBG_DISALLOW_MAXFIFO (1<<1) +#define WM_DBG_DISALLOW_SPRITE (1<<2) + +#endif /* _I915_REG_H_ */ --- linux-3.5.0.orig/ubuntu/i915/dvo_tfp410.c +++ linux-3.5.0/ubuntu/i915/dvo_tfp410.c @@ -0,0 +1,318 @@ +/* + * Copyright © 2007 Dave Mueller + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Dave Mueller + * + */ + +#include "dvo.h" + +/* register definitions according to the TFP410 data sheet */ +#define TFP410_VID 0x014C +#define TFP410_DID 0x0410 + +#define TFP410_VID_LO 0x00 +#define TFP410_VID_HI 0x01 +#define TFP410_DID_LO 0x02 +#define TFP410_DID_HI 0x03 +#define TFP410_REV 0x04 + +#define TFP410_CTL_1 0x08 +#define TFP410_CTL_1_TDIS (1<<6) +#define TFP410_CTL_1_VEN (1<<5) +#define TFP410_CTL_1_HEN (1<<4) +#define TFP410_CTL_1_DSEL (1<<3) +#define TFP410_CTL_1_BSEL (1<<2) +#define TFP410_CTL_1_EDGE (1<<1) +#define TFP410_CTL_1_PD (1<<0) + +#define TFP410_CTL_2 0x09 +#define TFP410_CTL_2_VLOW (1<<7) +#define TFP410_CTL_2_MSEL_MASK (0x7<<4) +#define TFP410_CTL_2_MSEL (1<<4) +#define TFP410_CTL_2_TSEL (1<<3) +#define TFP410_CTL_2_RSEN (1<<2) +#define TFP410_CTL_2_HTPLG (1<<1) +#define TFP410_CTL_2_MDI (1<<0) + +#define TFP410_CTL_3 0x0A +#define TFP410_CTL_3_DK_MASK (0x7<<5) +#define TFP410_CTL_3_DK (1<<5) +#define TFP410_CTL_3_DKEN (1<<4) +#define TFP410_CTL_3_CTL_MASK (0x7<<1) +#define TFP410_CTL_3_CTL (1<<1) + +#define TFP410_USERCFG 0x0B + +#define TFP410_DE_DLY 0x32 + +#define TFP410_DE_CTL 0x33 +#define TFP410_DE_CTL_DEGEN (1<<6) +#define TFP410_DE_CTL_VSPOL (1<<5) +#define TFP410_DE_CTL_HSPOL (1<<4) +#define TFP410_DE_CTL_DEDLY8 (1<<0) + +#define TFP410_DE_TOP 0x34 + +#define TFP410_DE_CNT_LO 0x36 +#define TFP410_DE_CNT_HI 0x37 + +#define TFP410_DE_LIN_LO 0x38 +#define TFP410_DE_LIN_HI 0x39 + +#define TFP410_H_RES_LO 0x3A +#define TFP410_H_RES_HI 0x3B + +#define TFP410_V_RES_LO 0x3C +#define TFP410_V_RES_HI 0x3D + +struct tfp410_priv { + bool quiet; +}; + +static bool tfp410_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!tfp->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +static bool tfp410_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!tfp->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +static int tfp410_getid(struct intel_dvo_device *dvo, int addr) +{ + uint8_t ch1, ch2; + + if (tfp410_readb(dvo, addr+0, &ch1) && + tfp410_readb(dvo, addr+1, &ch2)) + return ((ch2 << 8) & 0xFF00) | (ch1 & 0x00FF); + + return -1; +} + +/* Ti TFP410 driver for chip on i2c bus */ +static bool tfp410_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the tfp410 chip on the specified i2c bus */ + struct tfp410_priv *tfp; + int id; + + tfp = kzalloc(sizeof(struct tfp410_priv), GFP_KERNEL); + if (tfp == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = tfp; + tfp->quiet = true; + + if ((id = tfp410_getid(dvo, TFP410_VID_LO)) != TFP410_VID) { + DRM_DEBUG_KMS("tfp410 not detected got VID %X: from %s " + "Slave %d.\n", + id, adapter->name, dvo->slave_addr); + goto out; + } + + if ((id = tfp410_getid(dvo, TFP410_DID_LO)) != TFP410_DID) { + DRM_DEBUG_KMS("tfp410 not detected got DID %X: from %s " + "Slave %d.\n", + id, adapter->name, dvo->slave_addr); + goto out; + } + tfp->quiet = false; + return true; +out: + kfree(tfp); + return false; +} + +static enum drm_connector_status tfp410_detect(struct intel_dvo_device *dvo) +{ + enum drm_connector_status ret = connector_status_disconnected; + uint8_t ctl2; + + if (tfp410_readb(dvo, TFP410_CTL_2, &ctl2)) { + if (ctl2 & TFP410_CTL_2_RSEN) + ret = connector_status_connected; + else + ret = connector_status_disconnected; + } + + return ret; +} + +static enum drm_mode_status tfp410_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + return MODE_OK; +} + +static void tfp410_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* As long as the basics are set up, since we don't have clock dependencies + * in the mode setup, we can just leave the registers alone and everything + * will work fine. + */ + /* don't do much */ + return; +} + +/* set the tfp410 power state */ +static void tfp410_dpms(struct intel_dvo_device *dvo, bool enable) +{ + uint8_t ctl1; + + if (!tfp410_readb(dvo, TFP410_CTL_1, &ctl1)) + return; + + if (enable) + ctl1 |= TFP410_CTL_1_PD; + else + ctl1 &= ~TFP410_CTL_1_PD; + + tfp410_writeb(dvo, TFP410_CTL_1, ctl1); +} + +static bool tfp410_get_hw_state(struct intel_dvo_device *dvo) +{ + uint8_t ctl1; + + if (!tfp410_readb(dvo, TFP410_CTL_1, &ctl1)) + return false; + + if (ctl1 & TFP410_CTL_1_PD) + return true; + else + return false; +} + +static void tfp410_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val, val2; + + tfp410_readb(dvo, TFP410_REV, &val); + DRM_LOG_KMS("TFP410_REV: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_1, &val); + DRM_LOG_KMS("TFP410_CTL1: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_2, &val); + DRM_LOG_KMS("TFP410_CTL2: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_3, &val); + DRM_LOG_KMS("TFP410_CTL3: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_USERCFG, &val); + DRM_LOG_KMS("TFP410_USERCFG: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_DLY, &val); + DRM_LOG_KMS("TFP410_DE_DLY: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_CTL, &val); + DRM_LOG_KMS("TFP410_DE_CTL: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_TOP, &val); + DRM_LOG_KMS("TFP410_DE_TOP: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_CNT_LO, &val); + tfp410_readb(dvo, TFP410_DE_CNT_HI, &val2); + DRM_LOG_KMS("TFP410_DE_CNT: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_DE_LIN_LO, &val); + tfp410_readb(dvo, TFP410_DE_LIN_HI, &val2); + DRM_LOG_KMS("TFP410_DE_LIN: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_H_RES_LO, &val); + tfp410_readb(dvo, TFP410_H_RES_HI, &val2); + DRM_LOG_KMS("TFP410_H_RES: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_V_RES_LO, &val); + tfp410_readb(dvo, TFP410_V_RES_HI, &val2); + DRM_LOG_KMS("TFP410_V_RES: 0x%02X%02X\n", val2, val); +} + +static void tfp410_destroy(struct intel_dvo_device *dvo) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + + if (tfp) { + kfree(tfp); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops tfp410_ops = { + .init = tfp410_init, + .detect = tfp410_detect, + .mode_valid = tfp410_mode_valid, + .mode_set = tfp410_mode_set, + .dpms = tfp410_dpms, + .get_hw_state = tfp410_get_hw_state, + .dump_regs = tfp410_dump_regs, + .destroy = tfp410_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_gem_stolen.c +++ linux-3.5.0/ubuntu/i915/i915_gem_stolen.c @@ -0,0 +1,202 @@ +/* + * Copyright © 2008-2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include +#include +#include "i915_drv.h" + +/* + * The BIOS typically reserves some of the system's memory for the exclusive + * use of the integrated graphics. This memory is no longer available for + * use by the OS and so the user finds that his system has less memory + * available than he put in. We refer to this memory as stolen. + * + * The BIOS will allocate its framebuffer from the stolen memory. Our + * goal is try to reuse that object for our own fbcon which must always + * be available for panics. Anything else we can reuse the stolen memory + * for is a boon. + */ + +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; + + /* On the machines I have tested the Graphics Base of 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. + */ + 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); +#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; + } else { + /* Stolen is immediately above Top of Memory */ + base = max_low_pfn_mapped << PAGE_SHIFT; +#endif + } + + return base; +} + +static void i915_warn_stolen(struct drm_device *dev) +{ + DRM_INFO("not enough stolen space for compressed buffer, disabling\n"); + DRM_INFO("hint: you may be able to increase stolen memory size in the BIOS to avoid this\n"); +} + +static void i915_setup_compression(struct drm_device *dev, int size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mm_node_hsw *compressed_fb, *uninitialized_var(compressed_llb); + unsigned long cfb_base; + unsigned long ll_base = 0; + + /* Just in case the BIOS is doing something questionable. */ + intel_disable_fbc(dev); + + compressed_fb = drm_mm_search_free_hsw(&dev_priv->mm.stolen, size, 4096, 0); + if (compressed_fb) + compressed_fb = drm_mm_get_block_hsw(compressed_fb, size, 4096); + if (!compressed_fb) + goto err; + + cfb_base = dev_priv->mm.stolen_base + compressed_fb->start; + if (!cfb_base) + goto err_fb; + + if (!(IS_GM45(dev) || HAS_PCH_SPLIT(dev))) { + compressed_llb = drm_mm_search_free_hsw(&dev_priv->mm.stolen, + 4096, 4096, 0); + if (compressed_llb) + compressed_llb = drm_mm_get_block_hsw(compressed_llb, + 4096, 4096); + if (!compressed_llb) + goto err_fb; + + ll_base = dev_priv->mm.stolen_base + compressed_llb->start; + if (!ll_base) + goto err_llb; + } + + dev_priv->cfb_size = size; + + dev_priv->compressed_fb = compressed_fb; + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(ILK_DPFC_CB_BASE, compressed_fb->start); + else if (IS_GM45(dev)) { + I915_WRITE(DPFC_CB_BASE, compressed_fb->start); + } else { + I915_WRITE(FBC_CFB_BASE, cfb_base); + I915_WRITE(FBC_LL_BASE, ll_base); + dev_priv->compressed_llb = compressed_llb; + } + + DRM_DEBUG_KMS("FBC base 0x%08lx, ll base 0x%08lx, size %dM\n", + (long)cfb_base, (long)ll_base, size >> 20); + return; + +err_llb: + drm_mm_put_block_hsw(compressed_llb); +err_fb: + drm_mm_put_block_hsw(compressed_fb); +err: + dev_priv->no_fbc_reason = FBC_STOLEN_TOO_SMALL; + i915_warn_stolen(dev); +} + +static void i915_cleanup_compression(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + drm_mm_put_block_hsw(dev_priv->compressed_fb); + if (dev_priv->compressed_llb) + drm_mm_put_block_hsw(dev_priv->compressed_llb); +} + +void i915_gem_cleanup_stolen(struct drm_device *dev) +{ + if (I915_HAS_FBC(dev) && i915_powersave) + i915_cleanup_compression(dev); +} + +int i915_gem_init_stolen(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long prealloc_size = dev_priv->mm.gtt->stolen_size; + + 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_hsw(&dev_priv->mm.stolen, 0, prealloc_size); + + /* Try to set up FBC with a reasonable compressed buffer size */ + if (I915_HAS_FBC(dev) && i915_powersave) { + int cfb_size; + + /* Leave 1M for line length buffer & misc. */ + + /* Try to get a 32M buffer... */ + if (prealloc_size > (36*1024*1024)) + cfb_size = 32*1024*1024; + else /* fall back to 7/8 of the stolen space */ + cfb_size = prealloc_size * 7 / 8; + i915_setup_compression(dev, cfb_size); + } + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_bios.c +++ linux-3.5.0/ubuntu/i915/intel_bios.c @@ -0,0 +1,768 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ +#include +#include +#include +#include +#include "i915_drv.h" +#include "intel_bios.h" + +#define SLAVE_ADDR1 0x70 +#define SLAVE_ADDR2 0x72 + +static int panel_type; + +static void * +find_section(struct bdb_header *bdb, int section_id) +{ + u8 *base = (u8 *)bdb; + int index = 0; + u16 total, current_size; + u8 current_id; + + /* skip to first section */ + index += bdb->header_size; + total = bdb->bdb_size; + + /* walk the sections looking for section_id */ + while (index < total) { + current_id = *(base + index); + index++; + current_size = *((u16 *)(base + index)); + index += 2; + if (current_id == section_id) + return base + index; + index += current_size; + } + + return NULL; +} + +static u16 +get_blocksize(void *p) +{ + u16 *block_ptr, block_size; + + block_ptr = (u16 *)((char *)p - 2); + block_size = *block_ptr; + return block_size; +} + +static void +fill_detail_timing_data(struct drm_display_mode *panel_fixed_mode, + const struct lvds_dvo_timing *dvo_timing) +{ + panel_fixed_mode->hdisplay = (dvo_timing->hactive_hi << 8) | + dvo_timing->hactive_lo; + panel_fixed_mode->hsync_start = panel_fixed_mode->hdisplay + + ((dvo_timing->hsync_off_hi << 8) | dvo_timing->hsync_off_lo); + panel_fixed_mode->hsync_end = panel_fixed_mode->hsync_start + + dvo_timing->hsync_pulse_width; + panel_fixed_mode->htotal = panel_fixed_mode->hdisplay + + ((dvo_timing->hblank_hi << 8) | dvo_timing->hblank_lo); + + panel_fixed_mode->vdisplay = (dvo_timing->vactive_hi << 8) | + dvo_timing->vactive_lo; + panel_fixed_mode->vsync_start = panel_fixed_mode->vdisplay + + dvo_timing->vsync_off; + panel_fixed_mode->vsync_end = panel_fixed_mode->vsync_start + + dvo_timing->vsync_pulse_width; + panel_fixed_mode->vtotal = panel_fixed_mode->vdisplay + + ((dvo_timing->vblank_hi << 8) | dvo_timing->vblank_lo); + panel_fixed_mode->clock = dvo_timing->clock * 10; + panel_fixed_mode->type = DRM_MODE_TYPE_PREFERRED; + + if (dvo_timing->hsync_positive) + panel_fixed_mode->flags |= DRM_MODE_FLAG_PHSYNC; + else + panel_fixed_mode->flags |= DRM_MODE_FLAG_NHSYNC; + + if (dvo_timing->vsync_positive) + panel_fixed_mode->flags |= DRM_MODE_FLAG_PVSYNC; + else + panel_fixed_mode->flags |= DRM_MODE_FLAG_NVSYNC; + + /* Some VBTs have bogus h/vtotal values */ + if (panel_fixed_mode->hsync_end > panel_fixed_mode->htotal) + panel_fixed_mode->htotal = panel_fixed_mode->hsync_end + 1; + if (panel_fixed_mode->vsync_end > panel_fixed_mode->vtotal) + panel_fixed_mode->vtotal = panel_fixed_mode->vsync_end + 1; + + drm_mode_set_name(panel_fixed_mode); +} + +static bool +lvds_dvo_timing_equal_size(const struct lvds_dvo_timing *a, + const struct lvds_dvo_timing *b) +{ + if (a->hactive_hi != b->hactive_hi || + a->hactive_lo != b->hactive_lo) + return false; + + if (a->hsync_off_hi != b->hsync_off_hi || + a->hsync_off_lo != b->hsync_off_lo) + return false; + + if (a->hsync_pulse_width != b->hsync_pulse_width) + return false; + + if (a->hblank_hi != b->hblank_hi || + a->hblank_lo != b->hblank_lo) + return false; + + if (a->vactive_hi != b->vactive_hi || + a->vactive_lo != b->vactive_lo) + return false; + + if (a->vsync_off != b->vsync_off) + return false; + + if (a->vsync_pulse_width != b->vsync_pulse_width) + return false; + + if (a->vblank_hi != b->vblank_hi || + a->vblank_lo != b->vblank_lo) + return false; + + return true; +} + +static const struct lvds_dvo_timing * +get_lvds_dvo_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data, + const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs, + int index) +{ + /* + * the size of fp_timing varies on the different platform. + * So calculate the DVO timing relative offset in LVDS data + * entry to get the DVO timing entry + */ + + int lfp_data_size = + lvds_lfp_data_ptrs->ptr[1].dvo_timing_offset - + lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset; + int dvo_timing_offset = + lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset - + lvds_lfp_data_ptrs->ptr[0].fp_timing_offset; + char *entry = (char *)lvds_lfp_data->data + lfp_data_size * index; + + return (struct lvds_dvo_timing *)(entry + dvo_timing_offset); +} + +/* get lvds_fp_timing entry + * this function may return NULL if the corresponding entry is invalid + */ +static const struct lvds_fp_timing * +get_lvds_fp_timing(const struct bdb_header *bdb, + const struct bdb_lvds_lfp_data *data, + const struct bdb_lvds_lfp_data_ptrs *ptrs, + int index) +{ + size_t data_ofs = (const u8 *)data - (const u8 *)bdb; + u16 data_size = ((const u16 *)data)[-1]; /* stored in header */ + size_t ofs; + + if (index >= ARRAY_SIZE(ptrs->ptr)) + return NULL; + ofs = ptrs->ptr[index].fp_timing_offset; + if (ofs < data_ofs || + ofs + sizeof(struct lvds_fp_timing) > data_ofs + data_size) + return NULL; + return (const struct lvds_fp_timing *)((const u8 *)bdb + ofs); +} + +/* Try to find integrated panel data */ +static void +parse_lfp_panel_data(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + const struct bdb_lvds_options *lvds_options; + const struct bdb_lvds_lfp_data *lvds_lfp_data; + const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; + const struct lvds_dvo_timing *panel_dvo_timing; + const struct lvds_fp_timing *fp_timing; + struct drm_display_mode *panel_fixed_mode; + int i, downclock; + + lvds_options = find_section(bdb, BDB_LVDS_OPTIONS); + if (!lvds_options) + return; + + dev_priv->lvds_dither = lvds_options->pixel_dither; + if (lvds_options->panel_type == 0xff) + return; + + panel_type = lvds_options->panel_type; + + lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); + if (!lvds_lfp_data) + return; + + lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); + if (!lvds_lfp_data_ptrs) + return; + + dev_priv->lvds_vbt = 1; + + panel_dvo_timing = get_lvds_dvo_timing(lvds_lfp_data, + lvds_lfp_data_ptrs, + lvds_options->panel_type); + + panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL); + if (!panel_fixed_mode) + return; + + fill_detail_timing_data(panel_fixed_mode, panel_dvo_timing); + + dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode; + + DRM_DEBUG_KMS("Found panel mode in BIOS VBT tables:\n"); + drm_mode_debug_printmodeline(panel_fixed_mode); + + /* + * Iterate over the LVDS panel timing info to find the lowest clock + * for the native resolution. + */ + downclock = panel_dvo_timing->clock; + for (i = 0; i < 16; i++) { + const struct lvds_dvo_timing *dvo_timing; + + dvo_timing = get_lvds_dvo_timing(lvds_lfp_data, + lvds_lfp_data_ptrs, + i); + if (lvds_dvo_timing_equal_size(dvo_timing, panel_dvo_timing) && + dvo_timing->clock < downclock) + downclock = dvo_timing->clock; + } + + if (downclock < panel_dvo_timing->clock && i915_lvds_downclock) { + dev_priv->lvds_downclock_avail = 1; + dev_priv->lvds_downclock = downclock * 10; + DRM_DEBUG_KMS("LVDS downclock is found in VBT. " + "Normal Clock %dKHz, downclock %dKHz\n", + panel_fixed_mode->clock, 10*downclock); + } + + fp_timing = get_lvds_fp_timing(bdb, lvds_lfp_data, + lvds_lfp_data_ptrs, + lvds_options->panel_type); + if (fp_timing) { + /* check the resolution, just to be sure */ + if (fp_timing->x_res == panel_fixed_mode->hdisplay && + fp_timing->y_res == panel_fixed_mode->vdisplay) { + dev_priv->bios_lvds_val = fp_timing->lvds_reg_val; + DRM_DEBUG_KMS("VBT initial LVDS value %x\n", + dev_priv->bios_lvds_val); + } + } +} + +/* Try to find sdvo panel data */ +static void +parse_sdvo_panel_data(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct lvds_dvo_timing *dvo_timing; + struct drm_display_mode *panel_fixed_mode; + int index; + + index = i915_vbt_sdvo_panel_type; + if (index == -2) { + DRM_DEBUG_KMS("Ignore SDVO panel mode from BIOS VBT tables.\n"); + return; + } + + if (index == -1) { + struct bdb_sdvo_lvds_options *sdvo_lvds_options; + + sdvo_lvds_options = find_section(bdb, BDB_SDVO_LVDS_OPTIONS); + if (!sdvo_lvds_options) + return; + + index = sdvo_lvds_options->panel_type; + } + + dvo_timing = find_section(bdb, BDB_SDVO_PANEL_DTDS); + if (!dvo_timing) + return; + + panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL); + if (!panel_fixed_mode) + return; + + fill_detail_timing_data(panel_fixed_mode, dvo_timing + index); + + dev_priv->sdvo_lvds_vbt_mode = panel_fixed_mode; + + DRM_DEBUG_KMS("Found SDVO panel mode in BIOS VBT tables:\n"); + drm_mode_debug_printmodeline(panel_fixed_mode); +} + +static int intel_bios_ssc_frequency(struct drm_device *dev, + bool alternate) +{ + switch (INTEL_INFO(dev)->gen) { + case 2: + return alternate ? 66 : 48; + case 3: + case 4: + return alternate ? 100 : 96; + default: + return alternate ? 100 : 120; + } +} + +static void +parse_general_features(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct drm_device *dev = dev_priv->dev; + struct bdb_general_features *general; + + general = find_section(bdb, BDB_GENERAL_FEATURES); + if (general) { + dev_priv->int_tv_support = general->int_tv_support; + dev_priv->int_crt_support = general->int_crt_support; + dev_priv->lvds_use_ssc = general->enable_ssc; + dev_priv->lvds_ssc_freq = + intel_bios_ssc_frequency(dev, general->ssc_freq); + dev_priv->display_clock_mode = general->display_clock_mode; + 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->fdi_rx_polarity_inverted); + } +} + +static void +parse_general_definitions(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct bdb_general_definitions *general; + + general = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (general) { + u16 block_size = get_blocksize(general); + if (block_size >= sizeof(*general)) { + int bus_pin = general->crt_ddc_gmbus_pin; + DRM_DEBUG_KMS("crt_ddc_bus_pin: %d\n", bus_pin); + if (intel_gmbus_is_port_valid(bus_pin)) + dev_priv->crt_ddc_pin = bus_pin; + } else { + DRM_DEBUG_KMS("BDB_GD too small (%d). Invalid.\n", + block_size); + } + } +} + +static void +parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct sdvo_device_mapping *p_mapping; + struct bdb_general_definitions *p_defs; + struct child_device_config *p_child; + int i, child_device_num, count; + u16 block_size; + + p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (!p_defs) { + DRM_DEBUG_KMS("No general definition block is found, unable to construct sdvo mapping.\n"); + return; + } + /* judge whether the size of child device meets the requirements. + * If the child device size obtained from general definition block + * is different with sizeof(struct child_device_config), skip the + * parsing of sdvo device info + */ + if (p_defs->child_dev_size != sizeof(*p_child)) { + /* different child dev size . Ignore it */ + DRM_DEBUG_KMS("different child size is found. Invalid.\n"); + return; + } + /* get the block size of general definitions */ + block_size = get_blocksize(p_defs); + /* get the number of child device */ + child_device_num = (block_size - sizeof(*p_defs)) / + sizeof(*p_child); + count = 0; + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + if (p_child->slave_addr != SLAVE_ADDR1 && + p_child->slave_addr != SLAVE_ADDR2) { + /* + * If the slave address is neither 0x70 nor 0x72, + * it is not a SDVO device. Skip it. + */ + continue; + } + if (p_child->dvo_port != DEVICE_PORT_DVOB && + p_child->dvo_port != DEVICE_PORT_DVOC) { + /* skip the incorrect SDVO port */ + DRM_DEBUG_KMS("Incorrect SDVO port. Skip it\n"); + continue; + } + DRM_DEBUG_KMS("the SDVO device with slave addr %2x is found on" + " %s port\n", + p_child->slave_addr, + (p_child->dvo_port == DEVICE_PORT_DVOB) ? + "SDVOB" : "SDVOC"); + p_mapping = &(dev_priv->sdvo_mappings[p_child->dvo_port - 1]); + if (!p_mapping->initialized) { + p_mapping->dvo_port = p_child->dvo_port; + p_mapping->slave_addr = p_child->slave_addr; + p_mapping->dvo_wiring = p_child->dvo_wiring; + p_mapping->ddc_pin = p_child->ddc_pin; + p_mapping->i2c_pin = p_child->i2c_pin; + p_mapping->initialized = 1; + DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n", + p_mapping->dvo_port, + p_mapping->slave_addr, + p_mapping->dvo_wiring, + p_mapping->ddc_pin, + p_mapping->i2c_pin); + } else { + DRM_DEBUG_KMS("Maybe one SDVO port is shared by " + "two SDVO device.\n"); + } + if (p_child->slave2_addr) { + /* Maybe this is a SDVO device with multiple inputs */ + /* And the mapping info is not added */ + DRM_DEBUG_KMS("there exists the slave2_addr. Maybe this" + " is a SDVO device with multiple inputs.\n"); + } + count++; + } + + if (!count) { + /* No SDVO device info is found */ + DRM_DEBUG_KMS("No SDVO device info is found in VBT\n"); + } + return; +} + +static void +parse_driver_features(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct drm_device *dev = dev_priv->dev; + struct bdb_driver_features *driver; + + driver = find_section(bdb, BDB_DRIVER_FEATURES); + if (!driver) + return; + + if (SUPPORTS_EDP(dev) && + driver->lvds_config == BDB_DRIVER_FEATURE_EDP) + dev_priv->edp.support = 1; + + if (driver->dual_frequency) + dev_priv->render_reclock_avail = true; +} + +static void +parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb) +{ + struct bdb_edp *edp; + struct edp_power_seq *edp_pps; + struct edp_link_params *edp_link_params; + + edp = find_section(bdb, BDB_EDP); + if (!edp) { + if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) + DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n"); + return; + } + + switch ((edp->color_depth >> (panel_type * 2)) & 3) { + case EDP_18BPP: + dev_priv->edp.bpp = 18; + break; + case EDP_24BPP: + dev_priv->edp.bpp = 24; + break; + case EDP_30BPP: + dev_priv->edp.bpp = 30; + break; + } + + /* Get the eDP sequencing and link info */ + edp_pps = &edp->power_seqs[panel_type]; + edp_link_params = &edp->link_params[panel_type]; + + dev_priv->edp.pps = *edp_pps; + + dev_priv->edp.rate = edp_link_params->rate ? DP_LINK_BW_2_7 : + DP_LINK_BW_1_62; + switch (edp_link_params->lanes) { + case 0: + dev_priv->edp.lanes = 1; + break; + case 1: + dev_priv->edp.lanes = 2; + break; + case 3: + default: + dev_priv->edp.lanes = 4; + break; + } + switch (edp_link_params->preemphasis) { + case 0: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_0; + break; + case 1: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5; + break; + case 2: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_6; + break; + case 3: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5; + break; + } + switch (edp_link_params->vswing) { + case 0: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_400; + break; + case 1: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_600; + break; + case 2: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_800; + break; + case 3: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_1200; + break; + } +} + +static void +parse_device_mapping(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct bdb_general_definitions *p_defs; + struct child_device_config *p_child, *child_dev_ptr; + int i, child_device_num, count; + u16 block_size; + + p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (!p_defs) { + DRM_DEBUG_KMS("No general definition block is found, no devices defined.\n"); + return; + } + /* judge whether the size of child device meets the requirements. + * If the child device size obtained from general definition block + * is different with sizeof(struct child_device_config), skip the + * parsing of sdvo device info + */ + if (p_defs->child_dev_size != sizeof(*p_child)) { + /* different child dev size . Ignore it */ + DRM_DEBUG_KMS("different child size is found. Invalid.\n"); + return; + } + /* get the block size of general definitions */ + block_size = get_blocksize(p_defs); + /* get the number of child device */ + child_device_num = (block_size - sizeof(*p_defs)) / + sizeof(*p_child); + count = 0; + /* get the number of child device that is present */ + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + count++; + } + if (!count) { + DRM_DEBUG_KMS("no child dev is parsed from VBT\n"); + return; + } + dev_priv->child_dev = kcalloc(count, sizeof(*p_child), GFP_KERNEL); + if (!dev_priv->child_dev) { + DRM_DEBUG_KMS("No memory space for child device\n"); + return; + } + + dev_priv->child_dev_num = count; + count = 0; + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + child_dev_ptr = dev_priv->child_dev + count; + count++; + memcpy((void *)child_dev_ptr, (void *)p_child, + sizeof(*p_child)); + } + return; +} + +static void +init_vbt_defaults(struct drm_i915_private *dev_priv) +{ + struct drm_device *dev = dev_priv->dev; + + dev_priv->crt_ddc_pin = GMBUS_PORT_VGADDC; + + /* LFP panel data */ + dev_priv->lvds_dither = 1; + dev_priv->lvds_vbt = 0; + + /* SDVO panel data */ + dev_priv->sdvo_lvds_vbt_mode = NULL; + + /* general features */ + dev_priv->int_tv_support = 1; + dev_priv->int_crt_support = 1; + + /* Default to using SSC */ + dev_priv->lvds_use_ssc = 1; + dev_priv->lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1); + DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->lvds_ssc_freq); +} + +static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id) +{ + DRM_DEBUG_KMS("Falling back to manually reading VBT from " + "VBIOS ROM for %s\n", + id->ident); + return 1; +} + +static const struct dmi_system_id intel_no_opregion_vbt[] = { + { + .callback = intel_no_opregion_vbt_callback, + .ident = "ThinkCentre A57", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"), + }, + }, + { } +}; + +/** + * intel_parse_bios - find VBT and initialize settings from the BIOS + * @dev: DRM device + * + * Loads the Video BIOS and checks that the VBT exists. Sets scratch registers + * to appropriate values. + * + * Returns 0 on success, nonzero on failure. + */ +int +intel_parse_bios(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct pci_dev *pdev = dev->pdev; + struct bdb_header *bdb = NULL; + u8 __iomem *bios = NULL; + + init_vbt_defaults(dev_priv); + + /* XXX Should this validation be moved to intel_opregion.c? */ + if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt) { + struct vbt_header *vbt = dev_priv->opregion.vbt; + if (memcmp(vbt->signature, "$VBT", 4) == 0) { + DRM_DEBUG_KMS("Using VBT from OpRegion: %20s\n", + vbt->signature); + bdb = (struct bdb_header *)((char *)vbt + vbt->bdb_offset); + } else + dev_priv->opregion.vbt = NULL; + } + + if (bdb == NULL) { + struct vbt_header *vbt = NULL; + size_t size; + int i; + + bios = pci_map_rom(pdev, &size); + if (!bios) + return -1; + + /* Scour memory looking for the VBT signature */ + for (i = 0; i + 4 < size; i++) { + if (!memcmp(bios + i, "$VBT", 4)) { + vbt = (struct vbt_header *)(bios + i); + break; + } + } + + if (!vbt) { + DRM_DEBUG_DRIVER("VBT signature missing\n"); + pci_unmap_rom(pdev, bios); + return -1; + } + + bdb = (struct bdb_header *)(bios + i + vbt->bdb_offset); + } + + /* Grab useful general definitions */ + parse_general_features(dev_priv, bdb); + parse_general_definitions(dev_priv, bdb); + parse_lfp_panel_data(dev_priv, bdb); + parse_sdvo_panel_data(dev_priv, bdb); + parse_sdvo_device_mapping(dev_priv, bdb); + parse_device_mapping(dev_priv, bdb); + parse_driver_features(dev_priv, bdb); + parse_edp(dev_priv, bdb); + + if (bios) + pci_unmap_rom(pdev, bios); + + return 0; +} + +/* Ensure that vital registers have been initialised, even if the BIOS + * is absent or just failing to do its job. + */ +void intel_setup_bios(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Set the Panel Power On/Off timings if uninitialized. */ + if (!HAS_PCH_SPLIT(dev) && + I915_READ(PP_ON_DELAYS) == 0 && I915_READ(PP_OFF_DELAYS) == 0) { + /* Set T2 to 40ms and T5 to 200ms */ + I915_WRITE(PP_ON_DELAYS, 0x019007d0); + + /* Set T3 to 35ms and Tx to 200ms */ + I915_WRITE(PP_OFF_DELAYS, 0x015e07d0); + } +} --- linux-3.5.0.orig/ubuntu/i915/intel_overlay.c +++ linux-3.5.0/ubuntu/i915/intel_overlay.c @@ -0,0 +1,1537 @@ +/* + * Copyright © 2009 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Daniel Vetter + * + * Derived from Xorg ddx, xf86-video-intel, src/i830_video.c + */ +#include +#include +#include "i915_drv.h" +#include "i915_reg.h" +#include "intel_drv.h" + +/* Limits for overlay size. According to intel doc, the real limits are: + * Y width: 4095, UV width (planar): 2047, Y height: 2047, + * UV width (planar): * 1023. But the xorg thinks 2048 for height and width. Use + * the mininum of both. */ +#define IMAGE_MAX_WIDTH 2048 +#define IMAGE_MAX_HEIGHT 2046 /* 2 * 1023 */ +/* on 830 and 845 these large limits result in the card hanging */ +#define IMAGE_MAX_WIDTH_LEGACY 1024 +#define IMAGE_MAX_HEIGHT_LEGACY 1088 + +/* overlay register definitions */ +/* OCMD register */ +#define OCMD_TILED_SURFACE (0x1<<19) +#define OCMD_MIRROR_MASK (0x3<<17) +#define OCMD_MIRROR_MODE (0x3<<17) +#define OCMD_MIRROR_HORIZONTAL (0x1<<17) +#define OCMD_MIRROR_VERTICAL (0x2<<17) +#define OCMD_MIRROR_BOTH (0x3<<17) +#define OCMD_BYTEORDER_MASK (0x3<<14) /* zero for YUYV or FOURCC YUY2 */ +#define OCMD_UV_SWAP (0x1<<14) /* YVYU */ +#define OCMD_Y_SWAP (0x2<<14) /* UYVY or FOURCC UYVY */ +#define OCMD_Y_AND_UV_SWAP (0x3<<14) /* VYUY */ +#define OCMD_SOURCE_FORMAT_MASK (0xf<<10) +#define OCMD_RGB_888 (0x1<<10) /* not in i965 Intel docs */ +#define OCMD_RGB_555 (0x2<<10) /* not in i965 Intel docs */ +#define OCMD_RGB_565 (0x3<<10) /* not in i965 Intel docs */ +#define OCMD_YUV_422_PACKED (0x8<<10) +#define OCMD_YUV_411_PACKED (0x9<<10) /* not in i965 Intel docs */ +#define OCMD_YUV_420_PLANAR (0xc<<10) +#define OCMD_YUV_422_PLANAR (0xd<<10) +#define OCMD_YUV_410_PLANAR (0xe<<10) /* also 411 */ +#define OCMD_TVSYNCFLIP_PARITY (0x1<<9) +#define OCMD_TVSYNCFLIP_ENABLE (0x1<<7) +#define OCMD_BUF_TYPE_MASK (0x1<<5) +#define OCMD_BUF_TYPE_FRAME (0x0<<5) +#define OCMD_BUF_TYPE_FIELD (0x1<<5) +#define OCMD_TEST_MODE (0x1<<4) +#define OCMD_BUFFER_SELECT (0x3<<2) +#define OCMD_BUFFER0 (0x0<<2) +#define OCMD_BUFFER1 (0x1<<2) +#define OCMD_FIELD_SELECT (0x1<<2) +#define OCMD_FIELD0 (0x0<<1) +#define OCMD_FIELD1 (0x1<<1) +#define OCMD_ENABLE (0x1<<0) + +/* OCONFIG register */ +#define OCONF_PIPE_MASK (0x1<<18) +#define OCONF_PIPE_A (0x0<<18) +#define OCONF_PIPE_B (0x1<<18) +#define OCONF_GAMMA2_ENABLE (0x1<<16) +#define OCONF_CSC_MODE_BT601 (0x0<<5) +#define OCONF_CSC_MODE_BT709 (0x1<<5) +#define OCONF_CSC_BYPASS (0x1<<4) +#define OCONF_CC_OUT_8BIT (0x1<<3) +#define OCONF_TEST_MODE (0x1<<2) +#define OCONF_THREE_LINE_BUFFER (0x1<<0) +#define OCONF_TWO_LINE_BUFFER (0x0<<0) + +/* DCLRKM (dst-key) register */ +#define DST_KEY_ENABLE (0x1<<31) +#define CLK_RGB24_MASK 0x0 +#define CLK_RGB16_MASK 0x070307 +#define CLK_RGB15_MASK 0x070707 +#define CLK_RGB8I_MASK 0xffffff + +#define RGB16_TO_COLORKEY(c) \ + (((c & 0xF800) << 8) | ((c & 0x07E0) << 5) | ((c & 0x001F) << 3)) +#define RGB15_TO_COLORKEY(c) \ + (((c & 0x7c00) << 9) | ((c & 0x03E0) << 6) | ((c & 0x001F) << 3)) + +/* overlay flip addr flag */ +#define OFC_UPDATE 0x1 + +/* polyphase filter coefficients */ +#define N_HORIZ_Y_TAPS 5 +#define N_VERT_Y_TAPS 3 +#define N_HORIZ_UV_TAPS 3 +#define N_VERT_UV_TAPS 3 +#define N_PHASES 17 +#define MAX_TAPS 5 + +/* memory bufferd overlay registers */ +struct overlay_registers { + u32 OBUF_0Y; + u32 OBUF_1Y; + u32 OBUF_0U; + u32 OBUF_0V; + u32 OBUF_1U; + u32 OBUF_1V; + u32 OSTRIDE; + u32 YRGB_VPH; + u32 UV_VPH; + u32 HORZ_PH; + u32 INIT_PHS; + u32 DWINPOS; + u32 DWINSZ; + u32 SWIDTH; + u32 SWIDTHSW; + u32 SHEIGHT; + u32 YRGBSCALE; + u32 UVSCALE; + u32 OCLRC0; + u32 OCLRC1; + u32 DCLRKV; + u32 DCLRKM; + u32 SCLRKVH; + u32 SCLRKVL; + u32 SCLRKEN; + u32 OCONFIG; + u32 OCMD; + u32 RESERVED1; /* 0x6C */ + u32 OSTART_0Y; + u32 OSTART_1Y; + u32 OSTART_0U; + u32 OSTART_0V; + u32 OSTART_1U; + u32 OSTART_1V; + u32 OTILEOFF_0Y; + u32 OTILEOFF_1Y; + u32 OTILEOFF_0U; + u32 OTILEOFF_0V; + u32 OTILEOFF_1U; + u32 OTILEOFF_1V; + u32 FASTHSCALE; /* 0xA0 */ + u32 UVSCALEV; /* 0xA4 */ + u32 RESERVEDC[(0x200 - 0xA8) / 4]; /* 0xA8 - 0x1FC */ + u16 Y_VCOEFS[N_VERT_Y_TAPS * N_PHASES]; /* 0x200 */ + u16 RESERVEDD[0x100 / 2 - N_VERT_Y_TAPS * N_PHASES]; + u16 Y_HCOEFS[N_HORIZ_Y_TAPS * N_PHASES]; /* 0x300 */ + u16 RESERVEDE[0x200 / 2 - N_HORIZ_Y_TAPS * N_PHASES]; + u16 UV_VCOEFS[N_VERT_UV_TAPS * N_PHASES]; /* 0x500 */ + u16 RESERVEDF[0x100 / 2 - N_VERT_UV_TAPS * N_PHASES]; + u16 UV_HCOEFS[N_HORIZ_UV_TAPS * N_PHASES]; /* 0x600 */ + u16 RESERVEDG[0x100 / 2 - N_HORIZ_UV_TAPS * N_PHASES]; +}; + +struct intel_overlay { + struct drm_device *dev; + struct intel_crtc *crtc; + struct drm_i915_gem_object *vid_bo; + struct drm_i915_gem_object *old_vid_bo; + int active; + int pfit_active; + u32 pfit_vscale_ratio; /* shifted-point number, (1<<12) == 1.0 */ + u32 color_key; + u32 brightness, contrast, saturation; + u32 old_xscale, old_yscale; + /* register access */ + u32 flip_addr; + struct drm_i915_gem_object *reg_bo; + /* flip handling */ + uint32_t last_flip_req; + void (*flip_tail)(struct intel_overlay *); +}; + +static struct overlay_registers __iomem * +intel_overlay_map_regs(struct intel_overlay *overlay) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + struct overlay_registers __iomem *regs; + + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + regs = (struct overlay_registers __iomem *)overlay->reg_bo->phys_obj->handle->vaddr; + else + regs = io_mapping_map_wc(dev_priv->mm.gtt_mapping, + overlay->reg_bo->gtt_offset); + + return regs; +} + +static void intel_overlay_unmap_regs(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + if (!OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + io_mapping_unmap(regs); +} + +static int intel_overlay_do_wait_request(struct intel_overlay *overlay, + void (*tail)(struct intel_overlay *)) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + BUG_ON(overlay->last_flip_req); + ret = i915_add_request(ring, NULL, &overlay->last_flip_req); + if (ret) + return ret; + + overlay->flip_tail = tail; + ret = i915_wait_seqno(ring, overlay->last_flip_req); + if (ret) + return ret; + i915_gem_retire_requests(dev); + + overlay->last_flip_req = 0; + return 0; +} + +/* overlay needs to be disable in OCMD reg */ +static int intel_overlay_on(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + BUG_ON(overlay->active); + overlay->active = 1; + + WARN_ON(IS_I830(dev) && !(dev_priv->quirks & QUIRK_PIPEA_FORCE)); + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_ON); + intel_ring_emit(ring, overlay->flip_addr | OFC_UPDATE); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return intel_overlay_do_wait_request(overlay, NULL); +} + +/* overlay needs to be enabled in OCMD reg */ +static int intel_overlay_continue(struct intel_overlay *overlay, + bool load_polyphase_filter) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + u32 flip_addr = overlay->flip_addr; + u32 tmp; + int ret; + + BUG_ON(!overlay->active); + + if (load_polyphase_filter) + flip_addr |= OFC_UPDATE; + + /* check for underruns */ + tmp = I915_READ(DOVSTA); + if (tmp & (1 << 17)) + DRM_DEBUG("overlay underrun, DOVSTA: %x\n", tmp); + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE); + intel_ring_emit(ring, flip_addr); + intel_ring_advance(ring); + + return i915_add_request(ring, NULL, &overlay->last_flip_req); +} + +static void intel_overlay_release_old_vid_tail(struct intel_overlay *overlay) +{ + struct drm_i915_gem_object *obj = overlay->old_vid_bo; + + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + + overlay->old_vid_bo = NULL; +} + +static void intel_overlay_off_tail(struct intel_overlay *overlay) +{ + struct drm_i915_gem_object *obj = overlay->vid_bo; + + /* never have the overlay hw on without showing a frame */ + BUG_ON(!overlay->vid_bo); + + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + overlay->vid_bo = NULL; + + overlay->crtc->overlay = NULL; + overlay->crtc = NULL; + overlay->active = 0; +} + +/* overlay needs to be disabled in OCMD reg */ +static int intel_overlay_off(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + u32 flip_addr = overlay->flip_addr; + int ret; + + BUG_ON(!overlay->active); + + /* According to intel docs the overlay hw may hang (when switching + * off) without loading the filter coeffs. It is however unclear whether + * this applies to the disabling of the overlay or to the switching off + * of the hw. Do it in both cases */ + flip_addr |= OFC_UPDATE; + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + /* wait for overlay to go idle */ + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + /* turn overlay off */ + if (IS_I830(dev)) { + /* Workaround: Don't disable the overlay fully, since otherwise + * it dies on the next OVERLAY_ON cmd. */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + } else { + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + } + intel_ring_advance(ring); + + return intel_overlay_do_wait_request(overlay, intel_overlay_off_tail); +} + +/* recover from an interruption due to a signal + * We have to be careful not to repeat work forever an make forward progess. */ +static int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + if (overlay->last_flip_req == 0) + return 0; + + ret = i915_wait_seqno(ring, overlay->last_flip_req); + if (ret) + return ret; + i915_gem_retire_requests(dev); + + if (overlay->flip_tail) + overlay->flip_tail(overlay); + + overlay->last_flip_req = 0; + return 0; +} + +/* Wait for pending overlay flip and release old frame. + * Needs to be called before the overlay register are changed + * via intel_overlay_(un)map_regs + */ +static int intel_overlay_release_old_vid(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + /* Only wait if there is actually an old frame to release to + * guarantee forward progress. + */ + if (!overlay->old_vid_bo) + return 0; + + if (I915_READ(ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT) { + /* synchronous slowpath */ + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + ret = intel_overlay_do_wait_request(overlay, + intel_overlay_release_old_vid_tail); + if (ret) + return ret; + } + + intel_overlay_release_old_vid_tail(overlay); + return 0; +} + +struct put_image_params { + int format; + short dst_x; + short dst_y; + short dst_w; + short dst_h; + short src_w; + short src_scan_h; + short src_scan_w; + short src_h; + short stride_Y; + short stride_UV; + int offset_Y; + int offset_U; + int offset_V; +}; + +static int packed_depth_bytes(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + return 4; + case I915_OVERLAY_YUV411: + /* return 6; not implemented */ + default: + return -EINVAL; + } +} + +static int packed_width_bytes(u32 format, short width) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + return width << 1; + default: + return -EINVAL; + } +} + +static int uv_hsubsampling(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + case I915_OVERLAY_YUV420: + return 2; + case I915_OVERLAY_YUV411: + case I915_OVERLAY_YUV410: + return 4; + default: + return -EINVAL; + } +} + +static int uv_vsubsampling(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV420: + case I915_OVERLAY_YUV410: + return 2; + case I915_OVERLAY_YUV422: + case I915_OVERLAY_YUV411: + return 1; + default: + return -EINVAL; + } +} + +static u32 calc_swidthsw(struct drm_device *dev, u32 offset, u32 width) +{ + u32 mask, shift, ret; + if (IS_GEN2(dev)) { + mask = 0x1f; + shift = 5; + } else { + mask = 0x3f; + shift = 6; + } + ret = ((offset + width + mask) >> shift) - (offset >> shift); + if (!IS_GEN2(dev)) + ret <<= 1; + ret -= 1; + return ret << 2; +} + +static const u16 y_static_hcoeffs[N_HORIZ_Y_TAPS * N_PHASES] = { + 0x3000, 0xb4a0, 0x1930, 0x1920, 0xb4a0, + 0x3000, 0xb500, 0x19d0, 0x1880, 0xb440, + 0x3000, 0xb540, 0x1a88, 0x2f80, 0xb3e0, + 0x3000, 0xb580, 0x1b30, 0x2e20, 0xb380, + 0x3000, 0xb5c0, 0x1bd8, 0x2cc0, 0xb320, + 0x3020, 0xb5e0, 0x1c60, 0x2b80, 0xb2c0, + 0x3020, 0xb5e0, 0x1cf8, 0x2a20, 0xb260, + 0x3020, 0xb5e0, 0x1d80, 0x28e0, 0xb200, + 0x3020, 0xb5c0, 0x1e08, 0x3f40, 0xb1c0, + 0x3020, 0xb580, 0x1e78, 0x3ce0, 0xb160, + 0x3040, 0xb520, 0x1ed8, 0x3aa0, 0xb120, + 0x3040, 0xb4a0, 0x1f30, 0x3880, 0xb0e0, + 0x3040, 0xb400, 0x1f78, 0x3680, 0xb0a0, + 0x3020, 0xb340, 0x1fb8, 0x34a0, 0xb060, + 0x3020, 0xb240, 0x1fe0, 0x32e0, 0xb040, + 0x3020, 0xb140, 0x1ff8, 0x3160, 0xb020, + 0xb000, 0x3000, 0x0800, 0x3000, 0xb000 +}; + +static const u16 uv_static_hcoeffs[N_HORIZ_UV_TAPS * N_PHASES] = { + 0x3000, 0x1800, 0x1800, 0xb000, 0x18d0, 0x2e60, + 0xb000, 0x1990, 0x2ce0, 0xb020, 0x1a68, 0x2b40, + 0xb040, 0x1b20, 0x29e0, 0xb060, 0x1bd8, 0x2880, + 0xb080, 0x1c88, 0x3e60, 0xb0a0, 0x1d28, 0x3c00, + 0xb0c0, 0x1db8, 0x39e0, 0xb0e0, 0x1e40, 0x37e0, + 0xb100, 0x1eb8, 0x3620, 0xb100, 0x1f18, 0x34a0, + 0xb100, 0x1f68, 0x3360, 0xb0e0, 0x1fa8, 0x3240, + 0xb0c0, 0x1fe0, 0x3140, 0xb060, 0x1ff0, 0x30a0, + 0x3000, 0x0800, 0x3000 +}; + +static void update_polyphase_filter(struct overlay_registers __iomem *regs) +{ + memcpy_toio(regs->Y_HCOEFS, y_static_hcoeffs, sizeof(y_static_hcoeffs)); + memcpy_toio(regs->UV_HCOEFS, uv_static_hcoeffs, + sizeof(uv_static_hcoeffs)); +} + +static bool update_scaling_factors(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs, + struct put_image_params *params) +{ + /* fixed point with a 12 bit shift */ + u32 xscale, yscale, xscale_UV, yscale_UV; +#define FP_SHIFT 12 +#define FRACT_MASK 0xfff + bool scale_changed = false; + int uv_hscale = uv_hsubsampling(params->format); + int uv_vscale = uv_vsubsampling(params->format); + + if (params->dst_w > 1) + xscale = ((params->src_scan_w - 1) << FP_SHIFT) + /(params->dst_w); + else + xscale = 1 << FP_SHIFT; + + if (params->dst_h > 1) + yscale = ((params->src_scan_h - 1) << FP_SHIFT) + /(params->dst_h); + else + yscale = 1 << FP_SHIFT; + + /*if (params->format & I915_OVERLAY_YUV_PLANAR) {*/ + xscale_UV = xscale/uv_hscale; + yscale_UV = yscale/uv_vscale; + /* make the Y scale to UV scale ratio an exact multiply */ + xscale = xscale_UV * uv_hscale; + yscale = yscale_UV * uv_vscale; + /*} else { + xscale_UV = 0; + yscale_UV = 0; + }*/ + + if (xscale != overlay->old_xscale || yscale != overlay->old_yscale) + scale_changed = true; + overlay->old_xscale = xscale; + overlay->old_yscale = yscale; + + iowrite32(((yscale & FRACT_MASK) << 20) | + ((xscale >> FP_SHIFT) << 16) | + ((xscale & FRACT_MASK) << 3), + ®s->YRGBSCALE); + + iowrite32(((yscale_UV & FRACT_MASK) << 20) | + ((xscale_UV >> FP_SHIFT) << 16) | + ((xscale_UV & FRACT_MASK) << 3), + ®s->UVSCALE); + + iowrite32((((yscale >> FP_SHIFT) << 16) | + ((yscale_UV >> FP_SHIFT) << 0)), + ®s->UVSCALEV); + + if (scale_changed) + update_polyphase_filter(regs); + + return scale_changed; +} + +static void update_colorkey(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + u32 key = overlay->color_key; + + switch (overlay->crtc->base.fb->bits_per_pixel) { + case 8: + iowrite32(0, ®s->DCLRKV); + iowrite32(CLK_RGB8I_MASK | DST_KEY_ENABLE, ®s->DCLRKM); + break; + + case 16: + if (overlay->crtc->base.fb->depth == 15) { + iowrite32(RGB15_TO_COLORKEY(key), ®s->DCLRKV); + iowrite32(CLK_RGB15_MASK | DST_KEY_ENABLE, + ®s->DCLRKM); + } else { + iowrite32(RGB16_TO_COLORKEY(key), ®s->DCLRKV); + iowrite32(CLK_RGB16_MASK | DST_KEY_ENABLE, + ®s->DCLRKM); + } + break; + + case 24: + case 32: + iowrite32(key, ®s->DCLRKV); + iowrite32(CLK_RGB24_MASK | DST_KEY_ENABLE, ®s->DCLRKM); + break; + } +} + +static u32 overlay_cmd_reg(struct put_image_params *params) +{ + u32 cmd = OCMD_ENABLE | OCMD_BUF_TYPE_FRAME | OCMD_BUFFER0; + + if (params->format & I915_OVERLAY_YUV_PLANAR) { + switch (params->format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + cmd |= OCMD_YUV_422_PLANAR; + break; + case I915_OVERLAY_YUV420: + cmd |= OCMD_YUV_420_PLANAR; + break; + case I915_OVERLAY_YUV411: + case I915_OVERLAY_YUV410: + cmd |= OCMD_YUV_410_PLANAR; + break; + } + } else { /* YUV packed */ + switch (params->format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + cmd |= OCMD_YUV_422_PACKED; + break; + case I915_OVERLAY_YUV411: + cmd |= OCMD_YUV_411_PACKED; + break; + } + + switch (params->format & I915_OVERLAY_SWAP_MASK) { + case I915_OVERLAY_NO_SWAP: + break; + case I915_OVERLAY_UV_SWAP: + cmd |= OCMD_UV_SWAP; + break; + case I915_OVERLAY_Y_SWAP: + cmd |= OCMD_Y_SWAP; + break; + case I915_OVERLAY_Y_AND_UV_SWAP: + cmd |= OCMD_Y_AND_UV_SWAP; + break; + } + } + + return cmd; +} + +static int intel_overlay_do_put_image(struct intel_overlay *overlay, + struct drm_i915_gem_object *new_bo, + struct put_image_params *params) +{ + int ret, tmp_width; + struct overlay_registers __iomem *regs; + bool scale_changed = false; + struct drm_device *dev = overlay->dev; + u32 swidth, swidthsw, sheight, ostride; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); + BUG_ON(!overlay); + + ret = intel_overlay_release_old_vid(overlay); + if (ret != 0) + return ret; + + ret = i915_gem_object_pin_to_display_plane(new_bo, 0, NULL); + if (ret != 0) + return ret; + + ret = i915_gem_object_put_fence(new_bo); + if (ret) + goto out_unpin; + + if (!overlay->active) { + u32 oconfig; + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unpin; + } + oconfig = OCONF_CC_OUT_8BIT; + if (IS_GEN4(overlay->dev)) + oconfig |= OCONF_CSC_MODE_BT709; + oconfig |= overlay->crtc->pipe == 0 ? + OCONF_PIPE_A : OCONF_PIPE_B; + iowrite32(oconfig, ®s->OCONFIG); + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_on(overlay); + if (ret != 0) + goto out_unpin; + } + + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unpin; + } + + iowrite32((params->dst_y << 16) | params->dst_x, ®s->DWINPOS); + iowrite32((params->dst_h << 16) | params->dst_w, ®s->DWINSZ); + + if (params->format & I915_OVERLAY_YUV_PACKED) + tmp_width = packed_width_bytes(params->format, params->src_w); + else + tmp_width = params->src_w; + + swidth = params->src_w; + swidthsw = calc_swidthsw(overlay->dev, params->offset_Y, tmp_width); + sheight = params->src_h; + iowrite32(new_bo->gtt_offset + params->offset_Y, ®s->OBUF_0Y); + ostride = params->stride_Y; + + if (params->format & I915_OVERLAY_YUV_PLANAR) { + int uv_hscale = uv_hsubsampling(params->format); + int uv_vscale = uv_vsubsampling(params->format); + u32 tmp_U, tmp_V; + swidth |= (params->src_w/uv_hscale) << 16; + tmp_U = calc_swidthsw(overlay->dev, params->offset_U, + params->src_w/uv_hscale); + tmp_V = calc_swidthsw(overlay->dev, params->offset_V, + params->src_w/uv_hscale); + swidthsw |= max_t(u32, tmp_U, tmp_V) << 16; + sheight |= (params->src_h/uv_vscale) << 16; + iowrite32(new_bo->gtt_offset + params->offset_U, ®s->OBUF_0U); + iowrite32(new_bo->gtt_offset + params->offset_V, ®s->OBUF_0V); + ostride |= params->stride_UV << 16; + } + + iowrite32(swidth, ®s->SWIDTH); + iowrite32(swidthsw, ®s->SWIDTHSW); + iowrite32(sheight, ®s->SHEIGHT); + iowrite32(ostride, ®s->OSTRIDE); + + scale_changed = update_scaling_factors(overlay, regs, params); + + update_colorkey(overlay, regs); + + iowrite32(overlay_cmd_reg(params), ®s->OCMD); + + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_continue(overlay, scale_changed); + if (ret) + goto out_unpin; + + overlay->old_vid_bo = overlay->vid_bo; + overlay->vid_bo = new_bo; + + return 0; + +out_unpin: + i915_gem_object_unpin(new_bo); + return ret; +} + +int intel_overlay_switch_off(struct intel_overlay *overlay) +{ + struct overlay_registers __iomem *regs; + struct drm_device *dev = overlay->dev; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); + + ret = intel_overlay_recover_from_interrupt(overlay); + if (ret != 0) + return ret; + + if (!overlay->active) + return 0; + + ret = intel_overlay_release_old_vid(overlay); + if (ret != 0) + return ret; + + regs = intel_overlay_map_regs(overlay); + iowrite32(0, ®s->OCMD); + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_off(overlay); + if (ret != 0) + return ret; + + intel_overlay_off_tail(overlay); + return 0; +} + +static int check_overlay_possible_on_crtc(struct intel_overlay *overlay, + struct intel_crtc *crtc) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + + if (!crtc->active) + return -EINVAL; + + /* can't use the overlay with double wide pipe */ + if (INTEL_INFO(overlay->dev)->gen < 4 && + (I915_READ(PIPECONF(crtc->pipe)) & (PIPECONF_DOUBLE_WIDE | PIPECONF_ENABLE)) != PIPECONF_ENABLE) + return -EINVAL; + + return 0; +} + +static void update_pfit_vscale_ratio(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 pfit_control = I915_READ(PFIT_CONTROL); + u32 ratio; + + /* XXX: This is not the same logic as in the xorg driver, but more in + * line with the intel documentation for the i965 + */ + if (INTEL_INFO(dev)->gen >= 4) { + /* on i965 use the PGM reg to read out the autoscaler values */ + ratio = I915_READ(PFIT_PGM_RATIOS) >> PFIT_VERT_SCALE_SHIFT_965; + } else { + if (pfit_control & VERT_AUTO_SCALE) + ratio = I915_READ(PFIT_AUTO_RATIOS); + else + ratio = I915_READ(PFIT_PGM_RATIOS); + ratio >>= PFIT_VERT_SCALE_SHIFT; + } + + overlay->pfit_vscale_ratio = ratio; +} + +static int check_overlay_dst(struct intel_overlay *overlay, + struct drm_intel_overlay_put_image *rec) +{ + struct drm_display_mode *mode = &overlay->crtc->base.mode; + + if (rec->dst_x < mode->hdisplay && + rec->dst_x + rec->dst_width <= mode->hdisplay && + rec->dst_y < mode->vdisplay && + rec->dst_y + rec->dst_height <= mode->vdisplay) + return 0; + else + return -EINVAL; +} + +static int check_overlay_scaling(struct put_image_params *rec) +{ + u32 tmp; + + /* downscaling limit is 8.0 */ + tmp = ((rec->src_scan_h << 16) / rec->dst_h) >> 16; + if (tmp > 7) + return -EINVAL; + tmp = ((rec->src_scan_w << 16) / rec->dst_w) >> 16; + if (tmp > 7) + return -EINVAL; + + return 0; +} + +static int check_overlay_src(struct drm_device *dev, + struct drm_intel_overlay_put_image *rec, + struct drm_i915_gem_object *new_bo) +{ + int uv_hscale = uv_hsubsampling(rec->flags); + int uv_vscale = uv_vsubsampling(rec->flags); + u32 stride_mask; + int depth; + u32 tmp; + + /* check src dimensions */ + if (IS_845G(dev) || IS_I830(dev)) { + if (rec->src_height > IMAGE_MAX_HEIGHT_LEGACY || + rec->src_width > IMAGE_MAX_WIDTH_LEGACY) + return -EINVAL; + } else { + if (rec->src_height > IMAGE_MAX_HEIGHT || + rec->src_width > IMAGE_MAX_WIDTH) + return -EINVAL; + } + + /* better safe than sorry, use 4 as the maximal subsampling ratio */ + if (rec->src_height < N_VERT_Y_TAPS*4 || + rec->src_width < N_HORIZ_Y_TAPS*4) + return -EINVAL; + + /* check alignment constraints */ + switch (rec->flags & I915_OVERLAY_TYPE_MASK) { + case I915_OVERLAY_RGB: + /* not implemented */ + return -EINVAL; + + case I915_OVERLAY_YUV_PACKED: + if (uv_vscale != 1) + return -EINVAL; + + depth = packed_depth_bytes(rec->flags); + if (depth < 0) + return depth; + + /* ignore UV planes */ + rec->stride_UV = 0; + rec->offset_U = 0; + rec->offset_V = 0; + /* check pixel alignment */ + if (rec->offset_Y % depth) + return -EINVAL; + break; + + case I915_OVERLAY_YUV_PLANAR: + if (uv_vscale < 0 || uv_hscale < 0) + return -EINVAL; + /* no offset restrictions for planar formats */ + break; + + default: + return -EINVAL; + } + + if (rec->src_width % uv_hscale) + return -EINVAL; + + /* stride checking */ + if (IS_I830(dev) || IS_845G(dev)) + stride_mask = 255; + else + stride_mask = 63; + + if (rec->stride_Y & stride_mask || rec->stride_UV & stride_mask) + return -EINVAL; + if (IS_GEN4(dev) && rec->stride_Y < 512) + return -EINVAL; + + tmp = (rec->flags & I915_OVERLAY_TYPE_MASK) == I915_OVERLAY_YUV_PLANAR ? + 4096 : 8192; + if (rec->stride_Y > tmp || rec->stride_UV > 2*1024) + return -EINVAL; + + /* check buffer dimensions */ + switch (rec->flags & I915_OVERLAY_TYPE_MASK) { + case I915_OVERLAY_RGB: + case I915_OVERLAY_YUV_PACKED: + /* always 4 Y values per depth pixels */ + if (packed_width_bytes(rec->flags, rec->src_width) > rec->stride_Y) + return -EINVAL; + + tmp = rec->stride_Y*rec->src_height; + if (rec->offset_Y + tmp > new_bo->base.size) + return -EINVAL; + break; + + case I915_OVERLAY_YUV_PLANAR: + if (rec->src_width > rec->stride_Y) + return -EINVAL; + if (rec->src_width/uv_hscale > rec->stride_UV) + return -EINVAL; + + tmp = rec->stride_Y * rec->src_height; + if (rec->offset_Y + tmp > new_bo->base.size) + return -EINVAL; + + tmp = rec->stride_UV * (rec->src_height / uv_vscale); + if (rec->offset_U + tmp > new_bo->base.size || + rec->offset_V + tmp > new_bo->base.size) + return -EINVAL; + break; + } + + return 0; +} + +/** + * Return the pipe currently connected to the panel fitter, + * or -1 if the panel fitter is not present or not in use + */ +static int intel_panel_fitter_pipe(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pfit_control; + + /* i830 doesn't have a panel fitter */ + if (IS_I830(dev)) + return -1; + + pfit_control = I915_READ(PFIT_CONTROL); + + /* See if the panel fitter is in use */ + if ((pfit_control & PFIT_ENABLE) == 0) + return -1; + + /* 965 can place panel fitter on either pipe */ + if (IS_GEN4(dev)) + return (pfit_control >> 29) & 0x3; + + /* older chips can only use pipe 1 */ + return 1; +} + +int intel_overlay_put_image(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_overlay_put_image *put_image_rec = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct drm_mode_object *drmmode_obj; + struct intel_crtc *crtc; + struct drm_i915_gem_object *new_bo; + struct put_image_params *params; + int ret; + + /* No need to check for DRIVER_MODESET - we don't set it up then. */ + overlay = dev_priv->overlay; + if (!overlay) { + DRM_DEBUG("userspace bug: no overlay\n"); + return -ENODEV; + } + + if (!(put_image_rec->flags & I915_OVERLAY_ENABLE)) { + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + ret = intel_overlay_switch_off(overlay); + + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + return ret; + } + + params = kmalloc(sizeof(struct put_image_params), GFP_KERNEL); + if (!params) + return -ENOMEM; + + drmmode_obj = drm_mode_object_find(dev, put_image_rec->crtc_id, + DRM_MODE_OBJECT_CRTC); + if (!drmmode_obj) { + ret = -ENOENT; + goto out_free; + } + crtc = to_intel_crtc(obj_to_crtc(drmmode_obj)); + + new_bo = to_intel_bo(drm_gem_object_lookup(dev, file_priv, + put_image_rec->bo_handle)); + if (&new_bo->base == NULL) { + ret = -ENOENT; + goto out_free; + } + + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + if (new_bo->tiling_mode) { + DRM_ERROR("buffer used for overlay image can not be tiled\n"); + ret = -EINVAL; + goto out_unlock; + } + + ret = intel_overlay_recover_from_interrupt(overlay); + if (ret != 0) + goto out_unlock; + + if (overlay->crtc != crtc) { + struct drm_display_mode *mode = &crtc->base.mode; + ret = intel_overlay_switch_off(overlay); + if (ret != 0) + goto out_unlock; + + ret = check_overlay_possible_on_crtc(overlay, crtc); + if (ret != 0) + goto out_unlock; + + overlay->crtc = crtc; + crtc->overlay = overlay; + + /* line too wide, i.e. one-line-mode */ + if (mode->hdisplay > 1024 && + intel_panel_fitter_pipe(dev) == crtc->pipe) { + overlay->pfit_active = 1; + update_pfit_vscale_ratio(overlay); + } else + overlay->pfit_active = 0; + } + + ret = check_overlay_dst(overlay, put_image_rec); + if (ret != 0) + goto out_unlock; + + if (overlay->pfit_active) { + params->dst_y = ((((u32)put_image_rec->dst_y) << 12) / + overlay->pfit_vscale_ratio); + /* shifting right rounds downwards, so add 1 */ + params->dst_h = ((((u32)put_image_rec->dst_height) << 12) / + overlay->pfit_vscale_ratio) + 1; + } else { + params->dst_y = put_image_rec->dst_y; + params->dst_h = put_image_rec->dst_height; + } + params->dst_x = put_image_rec->dst_x; + params->dst_w = put_image_rec->dst_width; + + params->src_w = put_image_rec->src_width; + params->src_h = put_image_rec->src_height; + params->src_scan_w = put_image_rec->src_scan_width; + params->src_scan_h = put_image_rec->src_scan_height; + if (params->src_scan_h > params->src_h || + params->src_scan_w > params->src_w) { + ret = -EINVAL; + goto out_unlock; + } + + ret = check_overlay_src(dev, put_image_rec, new_bo); + if (ret != 0) + goto out_unlock; + params->format = put_image_rec->flags & ~I915_OVERLAY_FLAGS_MASK; + params->stride_Y = put_image_rec->stride_Y; + params->stride_UV = put_image_rec->stride_UV; + params->offset_Y = put_image_rec->offset_Y; + params->offset_U = put_image_rec->offset_U; + params->offset_V = put_image_rec->offset_V; + + /* Check scaling after src size to prevent a divide-by-zero. */ + ret = check_overlay_scaling(params); + if (ret != 0) + goto out_unlock; + + ret = intel_overlay_do_put_image(overlay, new_bo, params); + if (ret != 0) + goto out_unlock; + + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + kfree(params); + + return 0; + +out_unlock: + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + drm_gem_object_unreference_unlocked(&new_bo->base); +out_free: + kfree(params); + + return ret; +} + +static void update_reg_attrs(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + iowrite32((overlay->contrast << 18) | (overlay->brightness & 0xff), + ®s->OCLRC0); + iowrite32(overlay->saturation, ®s->OCLRC1); +} + +static bool check_gamma_bounds(u32 gamma1, u32 gamma2) +{ + int i; + + if (gamma1 & 0xff000000 || gamma2 & 0xff000000) + return false; + + for (i = 0; i < 3; i++) { + if (((gamma1 >> i*8) & 0xff) >= ((gamma2 >> i*8) & 0xff)) + return false; + } + + return true; +} + +static bool check_gamma5_errata(u32 gamma5) +{ + int i; + + for (i = 0; i < 3; i++) { + if (((gamma5 >> i*8) & 0xff) == 0x80) + return false; + } + + return true; +} + +static int check_gamma(struct drm_intel_overlay_attrs *attrs) +{ + if (!check_gamma_bounds(0, attrs->gamma0) || + !check_gamma_bounds(attrs->gamma0, attrs->gamma1) || + !check_gamma_bounds(attrs->gamma1, attrs->gamma2) || + !check_gamma_bounds(attrs->gamma2, attrs->gamma3) || + !check_gamma_bounds(attrs->gamma3, attrs->gamma4) || + !check_gamma_bounds(attrs->gamma4, attrs->gamma5) || + !check_gamma_bounds(attrs->gamma5, 0x00ffffff)) + return -EINVAL; + + if (!check_gamma5_errata(attrs->gamma5)) + return -EINVAL; + + return 0; +} + +int intel_overlay_attrs(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_overlay_attrs *attrs = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct overlay_registers __iomem *regs; + int ret; + + /* No need to check for DRIVER_MODESET - we don't set it up then. */ + overlay = dev_priv->overlay; + if (!overlay) { + DRM_DEBUG("userspace bug: no overlay\n"); + return -ENODEV; + } + + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + ret = -EINVAL; + if (!(attrs->flags & I915_OVERLAY_UPDATE_ATTRS)) { + attrs->color_key = overlay->color_key; + attrs->brightness = overlay->brightness; + attrs->contrast = overlay->contrast; + attrs->saturation = overlay->saturation; + + if (!IS_GEN2(dev)) { + attrs->gamma0 = I915_READ(OGAMC0); + attrs->gamma1 = I915_READ(OGAMC1); + attrs->gamma2 = I915_READ(OGAMC2); + attrs->gamma3 = I915_READ(OGAMC3); + attrs->gamma4 = I915_READ(OGAMC4); + attrs->gamma5 = I915_READ(OGAMC5); + } + } else { + if (attrs->brightness < -128 || attrs->brightness > 127) + goto out_unlock; + if (attrs->contrast > 255) + goto out_unlock; + if (attrs->saturation > 1023) + goto out_unlock; + + overlay->color_key = attrs->color_key; + overlay->brightness = attrs->brightness; + overlay->contrast = attrs->contrast; + overlay->saturation = attrs->saturation; + + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unlock; + } + + update_reg_attrs(overlay, regs); + + intel_overlay_unmap_regs(overlay, regs); + + if (attrs->flags & I915_OVERLAY_UPDATE_GAMMA) { + if (IS_GEN2(dev)) + goto out_unlock; + + if (overlay->active) { + ret = -EBUSY; + goto out_unlock; + } + + ret = check_gamma(attrs); + if (ret) + goto out_unlock; + + I915_WRITE(OGAMC0, attrs->gamma0); + I915_WRITE(OGAMC1, attrs->gamma1); + I915_WRITE(OGAMC2, attrs->gamma2); + I915_WRITE(OGAMC3, attrs->gamma3); + I915_WRITE(OGAMC4, attrs->gamma4); + I915_WRITE(OGAMC5, attrs->gamma5); + } + } + + ret = 0; +out_unlock: + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + return ret; +} + +void intel_setup_overlay(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct drm_i915_gem_object *reg_bo; + struct overlay_registers __iomem *regs; + int ret; + + if (!HAS_OVERLAY(dev)) + return; + + overlay = kzalloc(sizeof(struct intel_overlay), GFP_KERNEL); + if (!overlay) + return; + + mutex_lock(&dev->struct_mutex); + if (WARN_ON(dev_priv->overlay)) + goto out_free; + + overlay->dev = dev; + + reg_bo = i915_gem_alloc_object(dev, PAGE_SIZE); + if (!reg_bo) + goto out_free; + overlay->reg_bo = reg_bo; + + if (OVERLAY_NEEDS_PHYSICAL(dev)) { + ret = i915_gem_attach_phys_object(dev, reg_bo, + I915_GEM_PHYS_OVERLAY_REGS, + PAGE_SIZE); + if (ret) { + DRM_ERROR("failed to attach phys overlay regs\n"); + goto out_free_bo; + } + overlay->flip_addr = reg_bo->phys_obj->handle->busaddr; + } else { + ret = i915_gem_object_pin(reg_bo, PAGE_SIZE, true, false); + if (ret) { + DRM_ERROR("failed to pin overlay register bo\n"); + goto out_free_bo; + } + overlay->flip_addr = reg_bo->gtt_offset; + + ret = i915_gem_object_set_to_gtt_domain(reg_bo, true); + if (ret) { + DRM_ERROR("failed to move overlay register bo into the GTT\n"); + goto out_unpin_bo; + } + } + + /* init all values */ + overlay->color_key = 0x0101fe; + overlay->brightness = -19; + overlay->contrast = 75; + overlay->saturation = 146; + + regs = intel_overlay_map_regs(overlay); + if (!regs) + goto out_unpin_bo; + + memset_io(regs, 0, sizeof(struct overlay_registers)); + update_polyphase_filter(regs); + update_reg_attrs(overlay, regs); + + intel_overlay_unmap_regs(overlay, regs); + + dev_priv->overlay = overlay; + mutex_unlock(&dev->struct_mutex); + DRM_INFO("initialized overlay support\n"); + return; + +out_unpin_bo: + if (!OVERLAY_NEEDS_PHYSICAL(dev)) + i915_gem_object_unpin(reg_bo); +out_free_bo: + drm_gem_object_unreference(®_bo->base); +out_free: + mutex_unlock(&dev->struct_mutex); + kfree(overlay); + return; +} + +void intel_cleanup_overlay(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (!dev_priv->overlay) + return; + + /* The bo's should be free'd by the generic code already. + * Furthermore modesetting teardown happens beforehand so the + * hardware should be off already */ + BUG_ON(dev_priv->overlay->active); + + drm_gem_object_unreference_unlocked(&dev_priv->overlay->reg_bo->base); + kfree(dev_priv->overlay); +} + +#ifdef CONFIG_DEBUG_FS +#include + +struct intel_overlay_error_state { + struct overlay_registers regs; + unsigned long base; + u32 dovsta; + u32 isr; +}; + +static struct overlay_registers __iomem * +intel_overlay_map_regs_atomic(struct intel_overlay *overlay) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + struct overlay_registers __iomem *regs; + + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + /* Cast to make sparse happy, but it's wc memory anyway, so + * equivalent to the wc io mapping on X86. */ + regs = (struct overlay_registers __iomem *) + overlay->reg_bo->phys_obj->handle->vaddr; + else + regs = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + overlay->reg_bo->gtt_offset); + + return regs; +} + +static void intel_overlay_unmap_regs_atomic(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + if (!OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + io_mapping_unmap_atomic(regs); +} + + +struct intel_overlay_error_state * +intel_overlay_capture_error_state(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay = dev_priv->overlay; + struct intel_overlay_error_state *error; + struct overlay_registers __iomem *regs; + + if (!overlay || !overlay->active) + return NULL; + + error = kmalloc(sizeof(*error), GFP_ATOMIC); + if (error == NULL) + return NULL; + + error->dovsta = I915_READ(DOVSTA); + error->isr = I915_READ(ISR); + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + error->base = (__force long)overlay->reg_bo->phys_obj->handle->vaddr; + else + error->base = overlay->reg_bo->gtt_offset; + + regs = intel_overlay_map_regs_atomic(overlay); + if (!regs) + goto err; + + memcpy_fromio(&error->regs, regs, sizeof(struct overlay_registers)); + intel_overlay_unmap_regs_atomic(overlay, regs); + + return error; + +err: + kfree(error); + return NULL; +} + +void +intel_overlay_print_error_state(struct seq_file *m, struct intel_overlay_error_state *error) +{ + seq_printf(m, "Overlay, status: 0x%08x, interrupt: 0x%08x\n", + error->dovsta, error->isr); + seq_printf(m, " Register file at 0x%08lx:\n", + error->base); + +#define P(x) seq_printf(m, " " #x ": 0x%08x\n", error->regs.x) + P(OBUF_0Y); + P(OBUF_1Y); + P(OBUF_0U); + P(OBUF_0V); + P(OBUF_1U); + P(OBUF_1V); + P(OSTRIDE); + P(YRGB_VPH); + P(UV_VPH); + P(HORZ_PH); + P(INIT_PHS); + P(DWINPOS); + P(DWINSZ); + P(SWIDTH); + P(SWIDTHSW); + P(SHEIGHT); + P(YRGBSCALE); + P(UVSCALE); + P(OCLRC0); + P(OCLRC1); + P(DCLRKV); + P(DCLRKM); + P(SCLRKVH); + P(SCLRKVL); + P(SCLRKEN); + P(OCONFIG); + P(OCMD); + P(OSTART_0Y); + P(OSTART_1Y); + P(OSTART_0U); + P(OSTART_0V); + P(OSTART_1U); + P(OSTART_1V); + P(OTILEOFF_0Y); + P(OTILEOFF_1Y); + P(OTILEOFF_0U); + P(OTILEOFF_0V); + P(OTILEOFF_1U); + P(OTILEOFF_1V); + P(FASTHSCALE); + P(UVSCALEV); +#undef P +} +#endif --- linux-3.5.0.orig/ubuntu/i915/intel_sdvo_regs.h +++ linux-3.5.0/ubuntu/i915/intel_sdvo_regs.h @@ -0,0 +1,730 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +/** + * @file SDVO command definitions and structures. + */ + +#define SDVO_OUTPUT_FIRST (0) +#define SDVO_OUTPUT_TMDS0 (1 << 0) +#define SDVO_OUTPUT_RGB0 (1 << 1) +#define SDVO_OUTPUT_CVBS0 (1 << 2) +#define SDVO_OUTPUT_SVID0 (1 << 3) +#define SDVO_OUTPUT_YPRPB0 (1 << 4) +#define SDVO_OUTPUT_SCART0 (1 << 5) +#define SDVO_OUTPUT_LVDS0 (1 << 6) +#define SDVO_OUTPUT_TMDS1 (1 << 8) +#define SDVO_OUTPUT_RGB1 (1 << 9) +#define SDVO_OUTPUT_CVBS1 (1 << 10) +#define SDVO_OUTPUT_SVID1 (1 << 11) +#define SDVO_OUTPUT_YPRPB1 (1 << 12) +#define SDVO_OUTPUT_SCART1 (1 << 13) +#define SDVO_OUTPUT_LVDS1 (1 << 14) +#define SDVO_OUTPUT_LAST (14) + +struct intel_sdvo_caps { + u8 vendor_id; + u8 device_id; + u8 device_rev_id; + u8 sdvo_version_major; + u8 sdvo_version_minor; + unsigned int sdvo_inputs_mask:2; + unsigned int smooth_scaling:1; + unsigned int sharp_scaling:1; + unsigned int up_scaling:1; + unsigned int down_scaling:1; + unsigned int stall_support:1; + unsigned int pad:1; + u16 output_flags; +} __attribute__((packed)); + +/* Note: SDVO detailed timing flags match EDID misc flags. */ +#define DTD_FLAG_HSYNC_POSITIVE (1 << 1) +#define DTD_FLAG_VSYNC_POSITIVE (1 << 2) +#define DTD_FLAG_INTERLACE (1 << 7) + +/** This matches the EDID DTD structure, more or less */ +struct intel_sdvo_dtd { + struct { + u16 clock; /**< pixel clock, in 10kHz units */ + u8 h_active; /**< lower 8 bits (pixels) */ + u8 h_blank; /**< lower 8 bits (pixels) */ + u8 h_high; /**< upper 4 bits each h_active, h_blank */ + u8 v_active; /**< lower 8 bits (lines) */ + u8 v_blank; /**< lower 8 bits (lines) */ + u8 v_high; /**< upper 4 bits each v_active, v_blank */ + } part1; + + struct { + u8 h_sync_off; /**< lower 8 bits, from hblank start */ + u8 h_sync_width; /**< lower 8 bits (pixels) */ + /** lower 4 bits each vsync offset, vsync width */ + u8 v_sync_off_width; + /** + * 2 high bits of hsync offset, 2 high bits of hsync width, + * bits 4-5 of vsync offset, and 2 high bits of vsync width. + */ + u8 sync_off_width_high; + u8 dtd_flags; + u8 sdvo_flags; + /** bits 6-7 of vsync offset at bits 6-7 */ + u8 v_sync_off_high; + u8 reserved; + } part2; +} __attribute__((packed)); + +struct intel_sdvo_pixel_clock_range { + u16 min; /**< pixel clock, in 10kHz units */ + u16 max; /**< pixel clock, in 10kHz units */ +} __attribute__((packed)); + +struct intel_sdvo_preferred_input_timing_args { + u16 clock; + u16 width; + u16 height; + u8 interlace:1; + u8 scaled:1; + u8 pad:6; +} __attribute__((packed)); + +/* I2C registers for SDVO */ +#define SDVO_I2C_ARG_0 0x07 +#define SDVO_I2C_ARG_1 0x06 +#define SDVO_I2C_ARG_2 0x05 +#define SDVO_I2C_ARG_3 0x04 +#define SDVO_I2C_ARG_4 0x03 +#define SDVO_I2C_ARG_5 0x02 +#define SDVO_I2C_ARG_6 0x01 +#define SDVO_I2C_ARG_7 0x00 +#define SDVO_I2C_OPCODE 0x08 +#define SDVO_I2C_CMD_STATUS 0x09 +#define SDVO_I2C_RETURN_0 0x0a +#define SDVO_I2C_RETURN_1 0x0b +#define SDVO_I2C_RETURN_2 0x0c +#define SDVO_I2C_RETURN_3 0x0d +#define SDVO_I2C_RETURN_4 0x0e +#define SDVO_I2C_RETURN_5 0x0f +#define SDVO_I2C_RETURN_6 0x10 +#define SDVO_I2C_RETURN_7 0x11 +#define SDVO_I2C_VENDOR_BEGIN 0x20 + +/* Status results */ +#define SDVO_CMD_STATUS_POWER_ON 0x0 +#define SDVO_CMD_STATUS_SUCCESS 0x1 +#define SDVO_CMD_STATUS_NOTSUPP 0x2 +#define SDVO_CMD_STATUS_INVALID_ARG 0x3 +#define SDVO_CMD_STATUS_PENDING 0x4 +#define SDVO_CMD_STATUS_TARGET_NOT_SPECIFIED 0x5 +#define SDVO_CMD_STATUS_SCALING_NOT_SUPP 0x6 + +/* SDVO commands, argument/result registers */ + +#define SDVO_CMD_RESET 0x01 + +/** Returns a struct intel_sdvo_caps */ +#define SDVO_CMD_GET_DEVICE_CAPS 0x02 + +#define SDVO_CMD_GET_FIRMWARE_REV 0x86 +# define SDVO_DEVICE_FIRMWARE_MINOR SDVO_I2C_RETURN_0 +# define SDVO_DEVICE_FIRMWARE_MAJOR SDVO_I2C_RETURN_1 +# define SDVO_DEVICE_FIRMWARE_PATCH SDVO_I2C_RETURN_2 + +/** + * Reports which inputs are trained (managed to sync). + * + * Devices must have trained within 2 vsyncs of a mode change. + */ +#define SDVO_CMD_GET_TRAINED_INPUTS 0x03 +struct intel_sdvo_get_trained_inputs_response { + unsigned int input0_trained:1; + unsigned int input1_trained:1; + unsigned int pad:6; +} __attribute__((packed)); + +/** Returns a struct intel_sdvo_output_flags of active outputs. */ +#define SDVO_CMD_GET_ACTIVE_OUTPUTS 0x04 + +/** + * Sets the current set of active outputs. + * + * Takes a struct intel_sdvo_output_flags. Must be preceded by a SET_IN_OUT_MAP + * on multi-output devices. + */ +#define SDVO_CMD_SET_ACTIVE_OUTPUTS 0x05 + +/** + * Returns the current mapping of SDVO inputs to outputs on the device. + * + * Returns two struct intel_sdvo_output_flags structures. + */ +#define SDVO_CMD_GET_IN_OUT_MAP 0x06 +struct intel_sdvo_in_out_map { + u16 in0, in1; +}; + +/** + * Sets the current mapping of SDVO inputs to outputs on the device. + * + * Takes two struct i380_sdvo_output_flags structures. + */ +#define SDVO_CMD_SET_IN_OUT_MAP 0x07 + +/** + * Returns a struct intel_sdvo_output_flags of attached displays. + */ +#define SDVO_CMD_GET_ATTACHED_DISPLAYS 0x0b + +/** + * Returns a struct intel_sdvo_ouptut_flags of displays supporting hot plugging. + */ +#define SDVO_CMD_GET_HOT_PLUG_SUPPORT 0x0c + +/** + * Takes a struct intel_sdvo_output_flags. + */ +#define SDVO_CMD_SET_ACTIVE_HOT_PLUG 0x0d + +/** + * Returns a struct intel_sdvo_output_flags of displays with hot plug + * interrupts enabled. + */ +#define SDVO_CMD_GET_ACTIVE_HOT_PLUG 0x0e + +#define SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE 0x0f +struct intel_sdvo_get_interrupt_event_source_response { + u16 interrupt_status; + unsigned int ambient_light_interrupt:1; + unsigned int hdmi_audio_encrypt_change:1; + unsigned int pad:6; +} __attribute__((packed)); + +/** + * Selects which input is affected by future input commands. + * + * Commands affected include SET_INPUT_TIMINGS_PART[12], + * GET_INPUT_TIMINGS_PART[12], GET_PREFERRED_INPUT_TIMINGS_PART[12], + * GET_INPUT_PIXEL_CLOCK_RANGE, and CREATE_PREFERRED_INPUT_TIMINGS. + */ +#define SDVO_CMD_SET_TARGET_INPUT 0x10 +struct intel_sdvo_set_target_input_args { + unsigned int target_1:1; + unsigned int pad:7; +} __attribute__((packed)); + +/** + * Takes a struct intel_sdvo_output_flags of which outputs are targeted by + * future output commands. + * + * Affected commands inclue SET_OUTPUT_TIMINGS_PART[12], + * GET_OUTPUT_TIMINGS_PART[12], and GET_OUTPUT_PIXEL_CLOCK_RANGE. + */ +#define SDVO_CMD_SET_TARGET_OUTPUT 0x11 + +#define SDVO_CMD_GET_INPUT_TIMINGS_PART1 0x12 +#define SDVO_CMD_GET_INPUT_TIMINGS_PART2 0x13 +#define SDVO_CMD_SET_INPUT_TIMINGS_PART1 0x14 +#define SDVO_CMD_SET_INPUT_TIMINGS_PART2 0x15 +#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART1 0x16 +#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART2 0x17 +#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART1 0x18 +#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART2 0x19 +/* Part 1 */ +# define SDVO_DTD_CLOCK_LOW SDVO_I2C_ARG_0 +# define SDVO_DTD_CLOCK_HIGH SDVO_I2C_ARG_1 +# define SDVO_DTD_H_ACTIVE SDVO_I2C_ARG_2 +# define SDVO_DTD_H_BLANK SDVO_I2C_ARG_3 +# define SDVO_DTD_H_HIGH SDVO_I2C_ARG_4 +# define SDVO_DTD_V_ACTIVE SDVO_I2C_ARG_5 +# define SDVO_DTD_V_BLANK SDVO_I2C_ARG_6 +# define SDVO_DTD_V_HIGH SDVO_I2C_ARG_7 +/* Part 2 */ +# define SDVO_DTD_HSYNC_OFF SDVO_I2C_ARG_0 +# define SDVO_DTD_HSYNC_WIDTH SDVO_I2C_ARG_1 +# define SDVO_DTD_VSYNC_OFF_WIDTH SDVO_I2C_ARG_2 +# define SDVO_DTD_SYNC_OFF_WIDTH_HIGH SDVO_I2C_ARG_3 +# define SDVO_DTD_DTD_FLAGS SDVO_I2C_ARG_4 +# define SDVO_DTD_DTD_FLAG_INTERLACED (1 << 7) +# define SDVO_DTD_DTD_FLAG_STEREO_MASK (3 << 5) +# define SDVO_DTD_DTD_FLAG_INPUT_MASK (3 << 3) +# define SDVO_DTD_DTD_FLAG_SYNC_MASK (3 << 1) +# define SDVO_DTD_SDVO_FLAS SDVO_I2C_ARG_5 +# define SDVO_DTD_SDVO_FLAG_STALL (1 << 7) +# define SDVO_DTD_SDVO_FLAG_CENTERED (0 << 6) +# define SDVO_DTD_SDVO_FLAG_UPPER_LEFT (1 << 6) +# define SDVO_DTD_SDVO_FLAG_SCALING_MASK (3 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_NONE (0 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_SHARP (1 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_SMOOTH (2 << 4) +# define SDVO_DTD_VSYNC_OFF_HIGH SDVO_I2C_ARG_6 + +/** + * Generates a DTD based on the given width, height, and flags. + * + * This will be supported by any device supporting scaling or interlaced + * modes. + */ +#define SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING 0x1a +# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_LOW SDVO_I2C_ARG_0 +# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_HIGH SDVO_I2C_ARG_1 +# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_LOW SDVO_I2C_ARG_2 +# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_HIGH SDVO_I2C_ARG_3 +# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_LOW SDVO_I2C_ARG_4 +# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_HIGH SDVO_I2C_ARG_5 +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS SDVO_I2C_ARG_6 +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_INTERLACED (1 << 0) +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_SCALED (1 << 1) + +#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1 0x1b +#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2 0x1c + +/** Returns a struct intel_sdvo_pixel_clock_range */ +#define SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE 0x1d +/** Returns a struct intel_sdvo_pixel_clock_range */ +#define SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE 0x1e + +/** Returns a byte bitfield containing SDVO_CLOCK_RATE_MULT_* flags */ +#define SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS 0x1f + +/** Returns a byte containing a SDVO_CLOCK_RATE_MULT_* flag */ +#define SDVO_CMD_GET_CLOCK_RATE_MULT 0x20 +/** Takes a byte containing a SDVO_CLOCK_RATE_MULT_* flag */ +#define SDVO_CMD_SET_CLOCK_RATE_MULT 0x21 +# define SDVO_CLOCK_RATE_MULT_1X (1 << 0) +# define SDVO_CLOCK_RATE_MULT_2X (1 << 1) +# define SDVO_CLOCK_RATE_MULT_4X (1 << 3) + +#define SDVO_CMD_GET_SUPPORTED_TV_FORMATS 0x27 +/** 6 bytes of bit flags for TV formats shared by all TV format functions */ +struct intel_sdvo_tv_format { + unsigned int ntsc_m:1; + unsigned int ntsc_j:1; + unsigned int ntsc_443:1; + unsigned int pal_b:1; + unsigned int pal_d:1; + unsigned int pal_g:1; + unsigned int pal_h:1; + unsigned int pal_i:1; + + unsigned int pal_m:1; + unsigned int pal_n:1; + unsigned int pal_nc:1; + unsigned int pal_60:1; + unsigned int secam_b:1; + unsigned int secam_d:1; + unsigned int secam_g:1; + unsigned int secam_k:1; + + unsigned int secam_k1:1; + unsigned int secam_l:1; + unsigned int secam_60:1; + unsigned int hdtv_std_smpte_240m_1080i_59:1; + unsigned int hdtv_std_smpte_240m_1080i_60:1; + unsigned int hdtv_std_smpte_260m_1080i_59:1; + unsigned int hdtv_std_smpte_260m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080i_50:1; + + unsigned int hdtv_std_smpte_274m_1080i_59:1; + unsigned int hdtv_std_smpte_274m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080p_23:1; + unsigned int hdtv_std_smpte_274m_1080p_24:1; + unsigned int hdtv_std_smpte_274m_1080p_25:1; + unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; + unsigned int hdtv_std_smpte_274m_1080p_50:1; + + unsigned int hdtv_std_smpte_274m_1080p_59:1; + unsigned int hdtv_std_smpte_274m_1080p_60:1; + unsigned int hdtv_std_smpte_295m_1080i_50:1; + unsigned int hdtv_std_smpte_295m_1080p_50:1; + unsigned int hdtv_std_smpte_296m_720p_59:1; + unsigned int hdtv_std_smpte_296m_720p_60:1; + unsigned int hdtv_std_smpte_296m_720p_50:1; + unsigned int hdtv_std_smpte_293m_480p_59:1; + + unsigned int hdtv_std_smpte_170m_480i_59:1; + unsigned int hdtv_std_iturbt601_576i_50:1; + unsigned int hdtv_std_iturbt601_576p_50:1; + unsigned int hdtv_std_eia_7702a_480i_60:1; + unsigned int hdtv_std_eia_7702a_480p_60:1; + unsigned int pad:3; +} __attribute__((packed)); + +#define SDVO_CMD_GET_TV_FORMAT 0x28 + +#define SDVO_CMD_SET_TV_FORMAT 0x29 + +/** Returns the resolutiosn that can be used with the given TV format */ +#define SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT 0x83 +struct intel_sdvo_sdtv_resolution_request { + unsigned int ntsc_m:1; + unsigned int ntsc_j:1; + unsigned int ntsc_443:1; + unsigned int pal_b:1; + unsigned int pal_d:1; + unsigned int pal_g:1; + unsigned int pal_h:1; + unsigned int pal_i:1; + + unsigned int pal_m:1; + unsigned int pal_n:1; + unsigned int pal_nc:1; + unsigned int pal_60:1; + unsigned int secam_b:1; + unsigned int secam_d:1; + unsigned int secam_g:1; + unsigned int secam_k:1; + + unsigned int secam_k1:1; + unsigned int secam_l:1; + unsigned int secam_60:1; + unsigned int pad:5; +} __attribute__((packed)); + +struct intel_sdvo_sdtv_resolution_reply { + unsigned int res_320x200:1; + unsigned int res_320x240:1; + unsigned int res_400x300:1; + unsigned int res_640x350:1; + unsigned int res_640x400:1; + unsigned int res_640x480:1; + unsigned int res_704x480:1; + unsigned int res_704x576:1; + + unsigned int res_720x350:1; + unsigned int res_720x400:1; + unsigned int res_720x480:1; + unsigned int res_720x540:1; + unsigned int res_720x576:1; + unsigned int res_768x576:1; + unsigned int res_800x600:1; + unsigned int res_832x624:1; + + unsigned int res_920x766:1; + unsigned int res_1024x768:1; + unsigned int res_1280x1024:1; + unsigned int pad:5; +} __attribute__((packed)); + +/* Get supported resolution with squire pixel aspect ratio that can be + scaled for the requested HDTV format */ +#define SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT 0x85 + +struct intel_sdvo_hdtv_resolution_request { + unsigned int hdtv_std_smpte_240m_1080i_59:1; + unsigned int hdtv_std_smpte_240m_1080i_60:1; + unsigned int hdtv_std_smpte_260m_1080i_59:1; + unsigned int hdtv_std_smpte_260m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080i_50:1; + unsigned int hdtv_std_smpte_274m_1080i_59:1; + unsigned int hdtv_std_smpte_274m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080p_23:1; + + unsigned int hdtv_std_smpte_274m_1080p_24:1; + unsigned int hdtv_std_smpte_274m_1080p_25:1; + unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; + unsigned int hdtv_std_smpte_274m_1080p_50:1; + unsigned int hdtv_std_smpte_274m_1080p_59:1; + unsigned int hdtv_std_smpte_274m_1080p_60:1; + unsigned int hdtv_std_smpte_295m_1080i_50:1; + + unsigned int hdtv_std_smpte_295m_1080p_50:1; + unsigned int hdtv_std_smpte_296m_720p_59:1; + unsigned int hdtv_std_smpte_296m_720p_60:1; + unsigned int hdtv_std_smpte_296m_720p_50:1; + unsigned int hdtv_std_smpte_293m_480p_59:1; + unsigned int hdtv_std_smpte_170m_480i_59:1; + unsigned int hdtv_std_iturbt601_576i_50:1; + unsigned int hdtv_std_iturbt601_576p_50:1; + + unsigned int hdtv_std_eia_7702a_480i_60:1; + unsigned int hdtv_std_eia_7702a_480p_60:1; + unsigned int pad:6; +} __attribute__((packed)); + +struct intel_sdvo_hdtv_resolution_reply { + unsigned int res_640x480:1; + unsigned int res_800x600:1; + unsigned int res_1024x768:1; + unsigned int res_1280x960:1; + unsigned int res_1400x1050:1; + unsigned int res_1600x1200:1; + unsigned int res_1920x1440:1; + unsigned int res_2048x1536:1; + + unsigned int res_2560x1920:1; + unsigned int res_3200x2400:1; + unsigned int res_3840x2880:1; + unsigned int pad1:5; + + unsigned int res_848x480:1; + unsigned int res_1064x600:1; + unsigned int res_1280x720:1; + unsigned int res_1360x768:1; + unsigned int res_1704x960:1; + unsigned int res_1864x1050:1; + unsigned int res_1920x1080:1; + unsigned int res_2128x1200:1; + + unsigned int res_2560x1400:1; + unsigned int res_2728x1536:1; + unsigned int res_3408x1920:1; + unsigned int res_4264x2400:1; + unsigned int res_5120x2880:1; + unsigned int pad2:3; + + unsigned int res_768x480:1; + unsigned int res_960x600:1; + unsigned int res_1152x720:1; + unsigned int res_1124x768:1; + unsigned int res_1536x960:1; + unsigned int res_1680x1050:1; + unsigned int res_1728x1080:1; + unsigned int res_1920x1200:1; + + unsigned int res_2304x1440:1; + unsigned int res_2456x1536:1; + unsigned int res_3072x1920:1; + unsigned int res_3840x2400:1; + unsigned int res_4608x2880:1; + unsigned int pad3:3; + + unsigned int res_1280x1024:1; + unsigned int pad4:7; + + unsigned int res_1280x768:1; + unsigned int pad5:7; +} __attribute__((packed)); + +/* Get supported power state returns info for encoder and monitor, rely on + last SetTargetInput and SetTargetOutput calls */ +#define SDVO_CMD_GET_SUPPORTED_POWER_STATES 0x2a +/* Get power state returns info for encoder and monitor, rely on last + SetTargetInput and SetTargetOutput calls */ +#define SDVO_CMD_GET_POWER_STATE 0x2b +#define SDVO_CMD_GET_ENCODER_POWER_STATE 0x2b +#define SDVO_CMD_SET_ENCODER_POWER_STATE 0x2c +# define SDVO_ENCODER_STATE_ON (1 << 0) +# define SDVO_ENCODER_STATE_STANDBY (1 << 1) +# define SDVO_ENCODER_STATE_SUSPEND (1 << 2) +# define SDVO_ENCODER_STATE_OFF (1 << 3) +# define SDVO_MONITOR_STATE_ON (1 << 4) +# define SDVO_MONITOR_STATE_STANDBY (1 << 5) +# define SDVO_MONITOR_STATE_SUSPEND (1 << 6) +# define SDVO_MONITOR_STATE_OFF (1 << 7) + +#define SDVO_CMD_GET_MAX_PANEL_POWER_SEQUENCING 0x2d +#define SDVO_CMD_GET_PANEL_POWER_SEQUENCING 0x2e +#define SDVO_CMD_SET_PANEL_POWER_SEQUENCING 0x2f +/** + * The panel power sequencing parameters are in units of milliseconds. + * The high fields are bits 8:9 of the 10-bit values. + */ +struct sdvo_panel_power_sequencing { + u8 t0; + u8 t1; + u8 t2; + u8 t3; + u8 t4; + + unsigned int t0_high:2; + unsigned int t1_high:2; + unsigned int t2_high:2; + unsigned int t3_high:2; + + unsigned int t4_high:2; + unsigned int pad:6; +} __attribute__((packed)); + +#define SDVO_CMD_GET_MAX_BACKLIGHT_LEVEL 0x30 +struct sdvo_max_backlight_reply { + u8 max_value; + u8 default_value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_BACKLIGHT_LEVEL 0x31 +#define SDVO_CMD_SET_BACKLIGHT_LEVEL 0x32 + +#define SDVO_CMD_GET_AMBIENT_LIGHT 0x33 +struct sdvo_get_ambient_light_reply { + u16 trip_low; + u16 trip_high; + u16 value; +} __attribute__((packed)); +#define SDVO_CMD_SET_AMBIENT_LIGHT 0x34 +struct sdvo_set_ambient_light_reply { + u16 trip_low; + u16 trip_high; + unsigned int enable:1; + unsigned int pad:7; +} __attribute__((packed)); + +/* Set display power state */ +#define SDVO_CMD_SET_DISPLAY_POWER_STATE 0x7d +# define SDVO_DISPLAY_STATE_ON (1 << 0) +# define SDVO_DISPLAY_STATE_STANDBY (1 << 1) +# define SDVO_DISPLAY_STATE_SUSPEND (1 << 2) +# define SDVO_DISPLAY_STATE_OFF (1 << 3) + +#define SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS 0x84 +struct intel_sdvo_enhancements_reply { + unsigned int flicker_filter:1; + unsigned int flicker_filter_adaptive:1; + unsigned int flicker_filter_2d:1; + unsigned int saturation:1; + unsigned int hue:1; + unsigned int brightness:1; + unsigned int contrast:1; + unsigned int overscan_h:1; + + unsigned int overscan_v:1; + unsigned int hpos:1; + unsigned int vpos:1; + unsigned int sharpness:1; + unsigned int dot_crawl:1; + unsigned int dither:1; + unsigned int tv_chroma_filter:1; + unsigned int tv_luma_filter:1; +} __attribute__((packed)); + +/* Picture enhancement limits below are dependent on the current TV format, + * and thus need to be queried and set after it. + */ +#define SDVO_CMD_GET_MAX_FLICKER_FILTER 0x4d +#define SDVO_CMD_GET_MAX_FLICKER_FILTER_ADAPTIVE 0x7b +#define SDVO_CMD_GET_MAX_FLICKER_FILTER_2D 0x52 +#define SDVO_CMD_GET_MAX_SATURATION 0x55 +#define SDVO_CMD_GET_MAX_HUE 0x58 +#define SDVO_CMD_GET_MAX_BRIGHTNESS 0x5b +#define SDVO_CMD_GET_MAX_CONTRAST 0x5e +#define SDVO_CMD_GET_MAX_OVERSCAN_H 0x61 +#define SDVO_CMD_GET_MAX_OVERSCAN_V 0x64 +#define SDVO_CMD_GET_MAX_HPOS 0x67 +#define SDVO_CMD_GET_MAX_VPOS 0x6a +#define SDVO_CMD_GET_MAX_SHARPNESS 0x6d +#define SDVO_CMD_GET_MAX_TV_CHROMA_FILTER 0x74 +#define SDVO_CMD_GET_MAX_TV_LUMA_FILTER 0x77 +struct intel_sdvo_enhancement_limits_reply { + u16 max_value; + u16 default_value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_LVDS_PANEL_INFORMATION 0x7f +#define SDVO_CMD_SET_LVDS_PANEL_INFORMATION 0x80 +# define SDVO_LVDS_COLOR_DEPTH_18 (0 << 0) +# define SDVO_LVDS_COLOR_DEPTH_24 (1 << 0) +# define SDVO_LVDS_CONNECTOR_SPWG (0 << 2) +# define SDVO_LVDS_CONNECTOR_OPENLDI (1 << 2) +# define SDVO_LVDS_SINGLE_CHANNEL (0 << 4) +# define SDVO_LVDS_DUAL_CHANNEL (1 << 4) + +#define SDVO_CMD_GET_FLICKER_FILTER 0x4e +#define SDVO_CMD_SET_FLICKER_FILTER 0x4f +#define SDVO_CMD_GET_FLICKER_FILTER_ADAPTIVE 0x50 +#define SDVO_CMD_SET_FLICKER_FILTER_ADAPTIVE 0x51 +#define SDVO_CMD_GET_FLICKER_FILTER_2D 0x53 +#define SDVO_CMD_SET_FLICKER_FILTER_2D 0x54 +#define SDVO_CMD_GET_SATURATION 0x56 +#define SDVO_CMD_SET_SATURATION 0x57 +#define SDVO_CMD_GET_HUE 0x59 +#define SDVO_CMD_SET_HUE 0x5a +#define SDVO_CMD_GET_BRIGHTNESS 0x5c +#define SDVO_CMD_SET_BRIGHTNESS 0x5d +#define SDVO_CMD_GET_CONTRAST 0x5f +#define SDVO_CMD_SET_CONTRAST 0x60 +#define SDVO_CMD_GET_OVERSCAN_H 0x62 +#define SDVO_CMD_SET_OVERSCAN_H 0x63 +#define SDVO_CMD_GET_OVERSCAN_V 0x65 +#define SDVO_CMD_SET_OVERSCAN_V 0x66 +#define SDVO_CMD_GET_HPOS 0x68 +#define SDVO_CMD_SET_HPOS 0x69 +#define SDVO_CMD_GET_VPOS 0x6b +#define SDVO_CMD_SET_VPOS 0x6c +#define SDVO_CMD_GET_SHARPNESS 0x6e +#define SDVO_CMD_SET_SHARPNESS 0x6f +#define SDVO_CMD_GET_TV_CHROMA_FILTER 0x75 +#define SDVO_CMD_SET_TV_CHROMA_FILTER 0x76 +#define SDVO_CMD_GET_TV_LUMA_FILTER 0x78 +#define SDVO_CMD_SET_TV_LUMA_FILTER 0x79 +struct intel_sdvo_enhancements_arg { + u16 value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_DOT_CRAWL 0x70 +#define SDVO_CMD_SET_DOT_CRAWL 0x71 +# define SDVO_DOT_CRAWL_ON (1 << 0) +# define SDVO_DOT_CRAWL_DEFAULT_ON (1 << 1) + +#define SDVO_CMD_GET_DITHER 0x72 +#define SDVO_CMD_SET_DITHER 0x73 +# define SDVO_DITHER_ON (1 << 0) +# define SDVO_DITHER_DEFAULT_ON (1 << 1) + +#define SDVO_CMD_SET_CONTROL_BUS_SWITCH 0x7a +# define SDVO_CONTROL_BUS_PROM (1 << 0) +# define SDVO_CONTROL_BUS_DDC1 (1 << 1) +# define SDVO_CONTROL_BUS_DDC2 (1 << 2) +# define SDVO_CONTROL_BUS_DDC3 (1 << 3) + +/* HDMI op codes */ +#define SDVO_CMD_GET_SUPP_ENCODE 0x9d +#define SDVO_CMD_GET_ENCODE 0x9e +#define SDVO_CMD_SET_ENCODE 0x9f + #define SDVO_ENCODE_DVI 0x0 + #define SDVO_ENCODE_HDMI 0x1 +#define SDVO_CMD_SET_PIXEL_REPLI 0x8b +#define SDVO_CMD_GET_PIXEL_REPLI 0x8c +#define SDVO_CMD_GET_COLORIMETRY_CAP 0x8d +#define SDVO_CMD_SET_COLORIMETRY 0x8e + #define SDVO_COLORIMETRY_RGB256 0x0 + #define SDVO_COLORIMETRY_RGB220 0x1 + #define SDVO_COLORIMETRY_YCrCb422 0x3 + #define SDVO_COLORIMETRY_YCrCb444 0x4 +#define SDVO_CMD_GET_COLORIMETRY 0x8f +#define SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER 0x90 +#define SDVO_CMD_SET_AUDIO_STAT 0x91 +#define SDVO_CMD_GET_AUDIO_STAT 0x92 +#define SDVO_CMD_SET_HBUF_INDEX 0x93 + #define SDVO_HBUF_INDEX_ELD 0 + #define SDVO_HBUF_INDEX_AVI_IF 1 +#define SDVO_CMD_GET_HBUF_INDEX 0x94 +#define SDVO_CMD_GET_HBUF_INFO 0x95 +#define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96 +#define SDVO_CMD_GET_HBUF_AV_SPLIT 0x97 +#define SDVO_CMD_SET_HBUF_DATA 0x98 +#define SDVO_CMD_GET_HBUF_DATA 0x99 +#define SDVO_CMD_SET_HBUF_TXRATE 0x9a +#define SDVO_CMD_GET_HBUF_TXRATE 0x9b + #define SDVO_HBUF_TX_DISABLED (0 << 6) + #define SDVO_HBUF_TX_ONCE (2 << 6) + #define SDVO_HBUF_TX_VSYNC (3 << 6) +#define SDVO_CMD_GET_AUDIO_TX_INFO 0x9c +#define SDVO_NEED_TO_STALL (1 << 7) + +struct intel_sdvo_encode { + u8 dvi_rev; + u8 hdmi_rev; +} __attribute__ ((packed)); --- linux-3.5.0.orig/ubuntu/i915/dvo_ns2501.c +++ linux-3.5.0/ubuntu/i915/dvo_ns2501.c @@ -0,0 +1,588 @@ +/* + * + * Copyright (c) 2012 Gilles Dartiguelongue, Thomas Richter + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include "dvo.h" +#include "i915_reg.h" +#include "i915_drv.h" + +#define NS2501_VID 0x1305 +#define NS2501_DID 0x6726 + +#define NS2501_VID_LO 0x00 +#define NS2501_VID_HI 0x01 +#define NS2501_DID_LO 0x02 +#define NS2501_DID_HI 0x03 +#define NS2501_REV 0x04 +#define NS2501_RSVD 0x05 +#define NS2501_FREQ_LO 0x06 +#define NS2501_FREQ_HI 0x07 + +#define NS2501_REG8 0x08 +#define NS2501_8_VEN (1<<5) +#define NS2501_8_HEN (1<<4) +#define NS2501_8_DSEL (1<<3) +#define NS2501_8_BPAS (1<<2) +#define NS2501_8_RSVD (1<<1) +#define NS2501_8_PD (1<<0) + +#define NS2501_REG9 0x09 +#define NS2501_9_VLOW (1<<7) +#define NS2501_9_MSEL_MASK (0x7<<4) +#define NS2501_9_TSEL (1<<3) +#define NS2501_9_RSEN (1<<2) +#define NS2501_9_RSVD (1<<1) +#define NS2501_9_MDI (1<<0) + +#define NS2501_REGC 0x0c + +struct ns2501_priv { + //I2CDevRec d; + bool quiet; + int reg_8_shadow; + int reg_8_set; + // Shadow registers for i915 + int dvoc; + int pll_a; + int srcdim; + int fw_blc; +}; + +#define NSPTR(d) ((NS2501Ptr)(d->DriverPrivate.ptr)) + +/* + * For reasons unclear to me, the ns2501 at least on the Fujitsu/Siemens + * laptops does not react on the i2c bus unless + * both the PLL is running and the display is configured in its native + * resolution. + * This function forces the DVO on, and stores the registers it touches. + * Afterwards, registers are restored to regular values. + * + * This is pretty much a hack, though it works. + * Without that, ns2501_readb and ns2501_writeb fail + * when switching the resolution. + */ + +static void enable_dvo(struct intel_dvo_device *dvo) +{ + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + struct i2c_adapter *adapter = dvo->i2c_bus; + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + DRM_DEBUG_KMS("%s: Trying to re-enable the DVO\n", __FUNCTION__); + + ns->dvoc = I915_READ(DVO_C); + ns->pll_a = I915_READ(_DPLL_A); + ns->srcdim = I915_READ(DVOC_SRCDIM); + ns->fw_blc = I915_READ(FW_BLC); + + I915_WRITE(DVOC, 0x10004084); + I915_WRITE(_DPLL_A, 0xd0820000); + I915_WRITE(DVOC_SRCDIM, 0x400300); // 1024x768 + I915_WRITE(FW_BLC, 0x1080304); + + I915_WRITE(DVOC, 0x90004084); +} + +/* + * Restore the I915 registers modified by the above + * trigger function. + */ +static void restore_dvo(struct intel_dvo_device *dvo) +{ + struct i2c_adapter *adapter = dvo->i2c_bus; + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + + I915_WRITE(DVOC, ns->dvoc); + I915_WRITE(_DPLL_A, ns->pll_a); + I915_WRITE(DVOC_SRCDIM, ns->srcdim); + I915_WRITE(FW_BLC, ns->fw_blc); +} + +/* +** Read a register from the ns2501. +** Returns true if successful, false otherwise. +** If it returns false, it might be wise to enable the +** DVO with the above function. +*/ +static bool ns2501_readb(struct intel_dvo_device *dvo, int addr, uint8_t * ch) +{ + struct ns2501_priv *ns = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!ns->quiet) { + DRM_DEBUG_KMS + ("Unable to read register 0x%02x from %s:0x%02x.\n", addr, + adapter->name, dvo->slave_addr); + } + + return false; +} + +/* +** Write a register to the ns2501. +** Returns true if successful, false otherwise. +** If it returns false, it might be wise to enable the +** DVO with the above function. +*/ +static bool ns2501_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct ns2501_priv *ns = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) { + return true; + } + + if (!ns->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/* National Semiconductor 2501 driver for chip on i2c bus + * scan for the chip on the bus. + * Hope the VBIOS initialized the PLL correctly so we can + * talk to it. If not, it will not be seen and not detected. + * Bummer! + */ +static bool ns2501_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the NS2501 chip on the specified i2c bus */ + struct ns2501_priv *ns; + unsigned char ch; + + ns = kzalloc(sizeof(struct ns2501_priv), GFP_KERNEL); + if (ns == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = ns; + ns->quiet = true; + + if (!ns2501_readb(dvo, NS2501_VID_LO, &ch)) + goto out; + + if (ch != (NS2501_VID & 0xff)) { + DRM_DEBUG_KMS("ns2501 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + + if (!ns2501_readb(dvo, NS2501_DID_LO, &ch)) + goto out; + + if (ch != (NS2501_DID & 0xff)) { + DRM_DEBUG_KMS("ns2501 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + ns->quiet = false; + ns->reg_8_set = 0; + ns->reg_8_shadow = + NS2501_8_PD | NS2501_8_BPAS | NS2501_8_VEN | NS2501_8_HEN; + + DRM_DEBUG_KMS("init ns2501 dvo controller successfully!\n"); + return true; + +out: + kfree(ns); + return false; +} + +static enum drm_connector_status ns2501_detect(struct intel_dvo_device *dvo) +{ + /* + * This is a Laptop display, it doesn't have hotplugging. + * Even if not, the detection bit of the 2501 is unreliable as + * it only works for some display types. + * It is even more unreliable as the PLL must be active for + * allowing reading from the chiop. + */ + return connector_status_connected; +} + +static enum drm_mode_status ns2501_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + DRM_DEBUG_KMS + ("%s: is mode valid (hdisplay=%d,htotal=%d,vdisplay=%d,vtotal=%d)\n", + __FUNCTION__, mode->hdisplay, mode->htotal, mode->vdisplay, + mode->vtotal); + + /* + * Currently, these are all the modes I have data from. + * More might exist. Unclear how to find the native resolution + * of the panel in here so we could always accept it + * by disabling the scaler. + */ + if ((mode->hdisplay == 800 && mode->vdisplay == 600) || + (mode->hdisplay == 640 && mode->vdisplay == 480) || + (mode->hdisplay == 1024 && mode->vdisplay == 768)) { + return MODE_OK; + } else { + return MODE_ONE_SIZE; /* Is this a reasonable error? */ + } +} + +static void ns2501_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + bool ok; + bool restore = false; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + + DRM_DEBUG_KMS + ("%s: set mode (hdisplay=%d,htotal=%d,vdisplay=%d,vtotal=%d).\n", + __FUNCTION__, mode->hdisplay, mode->htotal, mode->vdisplay, + mode->vtotal); + + /* + * Where do I find the native resolution for which scaling is not required??? + * + * First trigger the DVO on as otherwise the chip does not appear on the i2c + * bus. + */ + do { + ok = true; + + if (mode->hdisplay == 800 && mode->vdisplay == 600) { + /* mode 277 */ + ns->reg_8_shadow &= ~NS2501_8_BPAS; + DRM_DEBUG_KMS("%s: switching to 800x600\n", + __FUNCTION__); + + /* + * No, I do not know where this data comes from. + * It is just what the video bios left in the DVO, so + * I'm just copying it here over. + * This also means that I cannot support any other modes + * except the ones supported by the bios. + */ + ok &= ns2501_writeb(dvo, 0x11, 0xc8); // 0xc7 also works. + ok &= ns2501_writeb(dvo, 0x1b, 0x19); + ok &= ns2501_writeb(dvo, 0x1c, 0x62); // VBIOS left 0x64 here, but 0x62 works nicer + ok &= ns2501_writeb(dvo, 0x1d, 0x02); + + ok &= ns2501_writeb(dvo, 0x34, 0x03); + ok &= ns2501_writeb(dvo, 0x35, 0xff); + + ok &= ns2501_writeb(dvo, 0x80, 0x27); + ok &= ns2501_writeb(dvo, 0x81, 0x03); + ok &= ns2501_writeb(dvo, 0x82, 0x41); + ok &= ns2501_writeb(dvo, 0x83, 0x05); + + ok &= ns2501_writeb(dvo, 0x8d, 0x02); + ok &= ns2501_writeb(dvo, 0x8e, 0x04); + ok &= ns2501_writeb(dvo, 0x8f, 0x00); + + ok &= ns2501_writeb(dvo, 0x90, 0xfe); /* vertical. VBIOS left 0xff here, but 0xfe works better */ + ok &= ns2501_writeb(dvo, 0x91, 0x07); + ok &= ns2501_writeb(dvo, 0x94, 0x00); + ok &= ns2501_writeb(dvo, 0x95, 0x00); + + ok &= ns2501_writeb(dvo, 0x96, 0x00); + + ok &= ns2501_writeb(dvo, 0x99, 0x00); + ok &= ns2501_writeb(dvo, 0x9a, 0x88); + + ok &= ns2501_writeb(dvo, 0x9c, 0x23); /* Looks like first and last line of the image. */ + ok &= ns2501_writeb(dvo, 0x9d, 0x00); + ok &= ns2501_writeb(dvo, 0x9e, 0x25); + ok &= ns2501_writeb(dvo, 0x9f, 0x03); + + ok &= ns2501_writeb(dvo, 0xa4, 0x80); + + ok &= ns2501_writeb(dvo, 0xb6, 0x00); + + ok &= ns2501_writeb(dvo, 0xb9, 0xc8); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xba, 0x00); /* horizontal? */ + + ok &= ns2501_writeb(dvo, 0xc0, 0x05); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xc1, 0xd7); + + ok &= ns2501_writeb(dvo, 0xc2, 0x00); + ok &= ns2501_writeb(dvo, 0xc3, 0xf8); + + ok &= ns2501_writeb(dvo, 0xc4, 0x03); + ok &= ns2501_writeb(dvo, 0xc5, 0x1a); + + ok &= ns2501_writeb(dvo, 0xc6, 0x00); + ok &= ns2501_writeb(dvo, 0xc7, 0x73); + ok &= ns2501_writeb(dvo, 0xc8, 0x02); + + } else if (mode->hdisplay == 640 && mode->vdisplay == 480) { + /* mode 274 */ + DRM_DEBUG_KMS("%s: switching to 640x480\n", + __FUNCTION__); + /* + * No, I do not know where this data comes from. + * It is just what the video bios left in the DVO, so + * I'm just copying it here over. + * This also means that I cannot support any other modes + * except the ones supported by the bios. + */ + ns->reg_8_shadow &= ~NS2501_8_BPAS; + + ok &= ns2501_writeb(dvo, 0x11, 0xa0); + ok &= ns2501_writeb(dvo, 0x1b, 0x11); + ok &= ns2501_writeb(dvo, 0x1c, 0x54); + ok &= ns2501_writeb(dvo, 0x1d, 0x03); + + ok &= ns2501_writeb(dvo, 0x34, 0x03); + ok &= ns2501_writeb(dvo, 0x35, 0xff); + + ok &= ns2501_writeb(dvo, 0x80, 0xff); + ok &= ns2501_writeb(dvo, 0x81, 0x07); + ok &= ns2501_writeb(dvo, 0x82, 0x3d); + ok &= ns2501_writeb(dvo, 0x83, 0x05); + + ok &= ns2501_writeb(dvo, 0x8d, 0x02); + ok &= ns2501_writeb(dvo, 0x8e, 0x10); + ok &= ns2501_writeb(dvo, 0x8f, 0x00); + + ok &= ns2501_writeb(dvo, 0x90, 0xff); /* vertical */ + ok &= ns2501_writeb(dvo, 0x91, 0x07); + ok &= ns2501_writeb(dvo, 0x94, 0x00); + ok &= ns2501_writeb(dvo, 0x95, 0x00); + + ok &= ns2501_writeb(dvo, 0x96, 0x05); + + ok &= ns2501_writeb(dvo, 0x99, 0x00); + ok &= ns2501_writeb(dvo, 0x9a, 0x88); + + ok &= ns2501_writeb(dvo, 0x9c, 0x24); + ok &= ns2501_writeb(dvo, 0x9d, 0x00); + ok &= ns2501_writeb(dvo, 0x9e, 0x25); + ok &= ns2501_writeb(dvo, 0x9f, 0x03); + + ok &= ns2501_writeb(dvo, 0xa4, 0x84); + + ok &= ns2501_writeb(dvo, 0xb6, 0x09); + + ok &= ns2501_writeb(dvo, 0xb9, 0xa0); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xba, 0x00); /* horizontal? */ + + ok &= ns2501_writeb(dvo, 0xc0, 0x05); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xc1, 0x90); + + ok &= ns2501_writeb(dvo, 0xc2, 0x00); + ok &= ns2501_writeb(dvo, 0xc3, 0x0f); + + ok &= ns2501_writeb(dvo, 0xc4, 0x03); + ok &= ns2501_writeb(dvo, 0xc5, 0x16); + + ok &= ns2501_writeb(dvo, 0xc6, 0x00); + ok &= ns2501_writeb(dvo, 0xc7, 0x02); + ok &= ns2501_writeb(dvo, 0xc8, 0x02); + + } else if (mode->hdisplay == 1024 && mode->vdisplay == 768) { + /* mode 280 */ + DRM_DEBUG_KMS("%s: switching to 1024x768\n", + __FUNCTION__); + /* + * This might or might not work, actually. I'm silently + * assuming here that the native panel resolution is + * 1024x768. If not, then this leaves the scaler disabled + * generating a picture that is likely not the expected. + * + * Problem is that I do not know where to take the panel + * dimensions from. + * + * Enable the bypass, scaling not required. + * + * The scaler registers are irrelevant here.... + * + */ + ns->reg_8_shadow |= NS2501_8_BPAS; + ok &= ns2501_writeb(dvo, 0x37, 0x44); + } else { + /* + * Data not known. Bummer! + * Hopefully, the code should not go here + * as mode_OK delivered no other modes. + */ + ns->reg_8_shadow |= NS2501_8_BPAS; + } + ok &= ns2501_writeb(dvo, NS2501_REG8, ns->reg_8_shadow); + + if (!ok) { + if (restore) + restore_dvo(dvo); + enable_dvo(dvo); + restore = true; + } + } while (!ok); + /* + * Restore the old i915 registers before + * forcing the ns2501 on. + */ + if (restore) + restore_dvo(dvo); +} + +/* set the NS2501 power state */ +static bool ns2501_get_hw_state(struct intel_dvo_device *dvo) +{ + unsigned char ch; + + if (!ns2501_readb(dvo, NS2501_REG8, &ch)) + return false; + + if (ch & NS2501_8_PD) + return true; + else + return false; +} + +/* set the NS2501 power state */ +static void ns2501_dpms(struct intel_dvo_device *dvo, bool enable) +{ + bool ok; + bool restore = false; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + unsigned char ch; + + DRM_DEBUG_KMS("%s: Trying set the dpms of the DVO to %i\n", + __FUNCTION__, enable); + + ch = ns->reg_8_shadow; + + if (enable) + ch |= NS2501_8_PD; + else + ch &= ~NS2501_8_PD; + + if (ns->reg_8_set == 0 || ns->reg_8_shadow != ch) { + ns->reg_8_set = 1; + ns->reg_8_shadow = ch; + + do { + ok = true; + ok &= ns2501_writeb(dvo, NS2501_REG8, ch); + ok &= + ns2501_writeb(dvo, 0x34, + enable ? 0x03 : 0x00); + ok &= + ns2501_writeb(dvo, 0x35, + enable ? 0xff : 0x00); + if (!ok) { + if (restore) + restore_dvo(dvo); + enable_dvo(dvo); + restore = true; + } + } while (!ok); + + if (restore) + restore_dvo(dvo); + } +} + +static void ns2501_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + + ns2501_readb(dvo, NS2501_FREQ_LO, &val); + DRM_LOG_KMS("NS2501_FREQ_LO: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_FREQ_HI, &val); + DRM_LOG_KMS("NS2501_FREQ_HI: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REG8, &val); + DRM_LOG_KMS("NS2501_REG8: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REG9, &val); + DRM_LOG_KMS("NS2501_REG9: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REGC, &val); + DRM_LOG_KMS("NS2501_REGC: 0x%02x\n", val); +} + +static void ns2501_destroy(struct intel_dvo_device *dvo) +{ + struct ns2501_priv *ns = dvo->dev_priv; + + if (ns) { + kfree(ns); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ns2501_ops = { + .init = ns2501_init, + .detect = ns2501_detect, + .mode_valid = ns2501_mode_valid, + .mode_set = ns2501_mode_set, + .dpms = ns2501_dpms, + .get_hw_state = ns2501_get_hw_state, + .dump_regs = ns2501_dump_regs, + .destroy = ns2501_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_gem_execbuffer.c +++ linux-3.5.0/ubuntu/i915/i915_gem_execbuffer.c @@ -0,0 +1,1231 @@ +/* + * Copyright © 2008,2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include +#include +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" +#include + +struct eb_objects { + int and; + struct hlist_head buckets[0]; +}; + +static struct eb_objects * +eb_create(int size) +{ + struct eb_objects *eb; + int count = PAGE_SIZE / sizeof(struct hlist_head) / 2; + BUILD_BUG_ON_NOT_POWER_OF_2(PAGE_SIZE / sizeof(struct hlist_head)); + while (count > size) + count >>= 1; + eb = kzalloc(count*sizeof(struct hlist_head) + + sizeof(struct eb_objects), + GFP_KERNEL); + if (eb == NULL) + return eb; + + eb->and = count - 1; + return eb; +} + +static void +eb_reset(struct eb_objects *eb) +{ + memset(eb->buckets, 0, (eb->and+1)*sizeof(struct hlist_head)); +} + +static void +eb_add_object(struct eb_objects *eb, struct drm_i915_gem_object *obj) +{ + hlist_add_head(&obj->exec_node, + &eb->buckets[obj->exec_handle & eb->and]); +} + +static struct drm_i915_gem_object * +eb_get_object(struct eb_objects *eb, unsigned long handle) +{ + struct hlist_head *head; + struct hlist_node *node; + struct drm_i915_gem_object *obj; + + head = &eb->buckets[handle & eb->and]; + hlist_for_each(node, head) { + obj = hlist_entry(node, struct drm_i915_gem_object, exec_node); + if (obj->exec_handle == handle) + return obj; + } + + return NULL; +} + +static void +eb_destroy(struct eb_objects *eb) +{ + kfree(eb); +} + +static inline int use_cpu_reloc(struct drm_i915_gem_object *obj) +{ + return (obj->base.write_domain == I915_GEM_DOMAIN_CPU || + !obj->map_and_fenceable || + obj->cache_level != I915_CACHE_NONE); +} + +static int +i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj, + struct eb_objects *eb, + struct drm_i915_gem_relocation_entry *reloc) +{ + struct drm_device *dev = obj->base.dev; + struct drm_gem_object *target_obj; + struct drm_i915_gem_object *target_i915_obj; + uint32_t target_offset; + int ret = -EINVAL; + + /* we've already hold a reference to all valid objects */ + target_obj = &eb_get_object(eb, reloc->target_handle)->base; + if (unlikely(target_obj == NULL)) + return -ENOENT; + + target_i915_obj = to_intel_bo(target_obj); + target_offset = target_i915_obj->gtt_offset; + + /* Sandybridge PPGTT errata: We need a global gtt mapping for MI and + * pipe_control writes because the gpu doesn't properly redirect them + * through the ppgtt for non_secure batchbuffers. */ + if (unlikely(IS_GEN6(dev) && + reloc->write_domain == I915_GEM_DOMAIN_INSTRUCTION && + !target_i915_obj->has_global_gtt_mapping)) { + i915_gem_gtt_bind_object(target_i915_obj, + target_i915_obj->cache_level); + } + + /* Validate that the target is in a valid r/w GPU domain */ + if (unlikely(reloc->write_domain & (reloc->write_domain - 1))) { + DRM_DEBUG("reloc with multiple write domains: " + "obj %p target %d offset %d " + "read %08x write %08x", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->read_domains, + reloc->write_domain); + return ret; + } + if (unlikely((reloc->write_domain | reloc->read_domains) + & ~I915_GEM_GPU_DOMAINS)) { + DRM_DEBUG("reloc with read/write non-GPU domains: " + "obj %p target %d offset %d " + "read %08x write %08x", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->read_domains, + reloc->write_domain); + return ret; + } + if (unlikely(reloc->write_domain && target_obj->pending_write_domain && + reloc->write_domain != target_obj->pending_write_domain)) { + DRM_DEBUG("Write domain conflict: " + "obj %p target %d offset %d " + "new %08x old %08x\n", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->write_domain, + target_obj->pending_write_domain); + return ret; + } + + target_obj->pending_read_domains |= reloc->read_domains; + target_obj->pending_write_domain |= reloc->write_domain; + + /* If the relocation already has the right value in it, no + * more work needs to be done. + */ + if (target_offset == reloc->presumed_offset) + return 0; + + /* Check that the relocation address is valid... */ + if (unlikely(reloc->offset > obj->base.size - 4)) { + DRM_DEBUG("Relocation beyond object bounds: " + "obj %p target %d offset %d size %d.\n", + obj, reloc->target_handle, + (int) reloc->offset, + (int) obj->base.size); + return ret; + } + if (unlikely(reloc->offset & 3)) { + DRM_DEBUG("Relocation not 4-byte aligned: " + "obj %p target %d offset %d.\n", + obj, reloc->target_handle, + (int) reloc->offset); + return ret; + } + + /* We can't wait for rendering with pagefaults disabled */ + if (obj->active && in_atomic()) + return -EFAULT; + + reloc->delta += target_offset; + if (use_cpu_reloc(obj)) { + uint32_t page_offset = reloc->offset & ~PAGE_MASK; + char *vaddr; + + ret = i915_gem_object_set_to_cpu_domain(obj, 1); + if (ret) + return ret; + + vaddr = kmap_atomic(i915_gem_object_get_page(obj, + reloc->offset >> PAGE_SHIFT)); + *(uint32_t *)(vaddr + page_offset) = reloc->delta; + kunmap_atomic(vaddr); + } else { + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t __iomem *reloc_entry; + void __iomem *reloc_page; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + return ret; + + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + + /* Map the page containing the relocation we're going to perform. */ + reloc->offset += obj->gtt_offset; + reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + reloc->offset & PAGE_MASK); + reloc_entry = (uint32_t __iomem *) + (reloc_page + (reloc->offset & ~PAGE_MASK)); + iowrite32(reloc->delta, reloc_entry); + io_mapping_unmap_atomic(reloc_page); + } + + /* and update the user's relocation entry */ + reloc->presumed_offset = target_offset; + + return 0; +} + +static int +i915_gem_execbuffer_relocate_object(struct drm_i915_gem_object *obj, + struct eb_objects *eb) +{ +#define N_RELOC(x) ((x) / sizeof(struct drm_i915_gem_relocation_entry)) + struct drm_i915_gem_relocation_entry stack_reloc[N_RELOC(512)]; + struct drm_i915_gem_relocation_entry __user *user_relocs; + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + int remain, ret; + + user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr; + + remain = entry->relocation_count; + while (remain) { + struct drm_i915_gem_relocation_entry *r = stack_reloc; + int count = remain; + if (count > ARRAY_SIZE(stack_reloc)) + count = ARRAY_SIZE(stack_reloc); + remain -= count; + + if (__copy_from_user_inatomic(r, user_relocs, count*sizeof(r[0]))) + return -EFAULT; + + do { + u64 offset = r->presumed_offset; + + ret = i915_gem_execbuffer_relocate_entry(obj, eb, r); + if (ret) + return ret; + + if (r->presumed_offset != offset && + __copy_to_user_inatomic(&user_relocs->presumed_offset, + &r->presumed_offset, + sizeof(r->presumed_offset))) { + return -EFAULT; + } + + user_relocs++; + r++; + } while (--count); + } + + return 0; +#undef N_RELOC +} + +static int +i915_gem_execbuffer_relocate_object_slow(struct drm_i915_gem_object *obj, + struct eb_objects *eb, + struct drm_i915_gem_relocation_entry *relocs) +{ + const struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + int i, ret; + + for (i = 0; i < entry->relocation_count; i++) { + ret = i915_gem_execbuffer_relocate_entry(obj, eb, &relocs[i]); + if (ret) + return ret; + } + + return 0; +} + +static int +i915_gem_execbuffer_relocate(struct drm_device *dev, + struct eb_objects *eb, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + int ret = 0; + + /* This is the fast path and we cannot handle a pagefault whilst + * holding the struct mutex lest the user pass in the relocations + * contained within a mmaped bo. For in such a case we, the page + * fault handler would call i915_gem_fault() and we would try to + * acquire the struct mutex again. Obviously this is bad and so + * lockdep complains vehemently. + */ + pagefault_disable(); + list_for_each_entry(obj, objects, exec_list) { + ret = i915_gem_execbuffer_relocate_object(obj, eb); + if (ret) + break; + } + pagefault_enable(); + + return ret; +} + +#define __EXEC_OBJECT_HAS_PIN (1<<31) +#define __EXEC_OBJECT_HAS_FENCE (1<<30) + +static int +need_reloc_mappable(struct drm_i915_gem_object *obj) +{ + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + return entry->relocation_count && !use_cpu_reloc(obj); +} + +static int +i915_gem_execbuffer_reserve_object(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + bool has_fenced_gpu_access = INTEL_INFO(ring->dev)->gen < 4; + bool need_fence, need_mappable; + int ret; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + ret = i915_gem_object_pin(obj, entry->alignment, need_mappable, false); + if (ret) + return ret; + + entry->flags |= __EXEC_OBJECT_HAS_PIN; + + if (has_fenced_gpu_access) { + if (entry->flags & EXEC_OBJECT_NEEDS_FENCE) { + ret = i915_gem_object_get_fence(obj); + if (ret) + return ret; + + if (i915_gem_object_pin_fence(obj)) + entry->flags |= __EXEC_OBJECT_HAS_FENCE; + + obj->pending_fenced_gpu_access = true; + } + } + + /* Ensure ppgtt mapping exists if needed */ + if (dev_priv->mm.aliasing_ppgtt && !obj->has_aliasing_ppgtt_mapping) { + i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt, + obj, obj->cache_level); + + obj->has_aliasing_ppgtt_mapping = 1; + } + + entry->offset = obj->gtt_offset; + return 0; +} + +static void +i915_gem_execbuffer_unreserve_object(struct drm_i915_gem_object *obj) +{ + struct drm_i915_gem_exec_object2 *entry; + + if (!obj->gtt_space) + return; + + entry = obj->exec_entry; + + if (entry->flags & __EXEC_OBJECT_HAS_FENCE) + i915_gem_object_unpin_fence(obj); + + if (entry->flags & __EXEC_OBJECT_HAS_PIN) + i915_gem_object_unpin(obj); + + entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE | __EXEC_OBJECT_HAS_PIN); +} + +static int +i915_gem_execbuffer_reserve(struct intel_ring_buffer *ring, + struct drm_file *file, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + struct list_head ordered_objects; + bool has_fenced_gpu_access = INTEL_INFO(ring->dev)->gen < 4; + int retry; + + INIT_LIST_HEAD(&ordered_objects); + while (!list_empty(objects)) { + struct drm_i915_gem_exec_object2 *entry; + bool need_fence, need_mappable; + + obj = list_first_entry(objects, + struct drm_i915_gem_object, + exec_list); + entry = obj->exec_entry; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + if (need_mappable) + list_move(&obj->exec_list, &ordered_objects); + else + list_move_tail(&obj->exec_list, &ordered_objects); + + obj->base.pending_read_domains = 0; + obj->base.pending_write_domain = 0; + obj->pending_fenced_gpu_access = false; + } + list_splice(&ordered_objects, objects); + + /* Attempt to pin all of the buffers into the GTT. + * This is done in 3 phases: + * + * 1a. Unbind all objects that do not match the GTT constraints for + * the execbuffer (fenceable, mappable, alignment etc). + * 1b. Increment pin count for already bound objects. + * 2. Bind new objects. + * 3. Decrement pin count. + * + * This avoid unnecessary unbinding of later objects in order to make + * room for the earlier objects *unless* we need to defragment. + */ + retry = 0; + do { + int ret = 0; + + /* Unbind any ill-fitting objects or pin. */ + list_for_each_entry(obj, objects, exec_list) { + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + bool need_fence, need_mappable; + + if (!obj->gtt_space) + continue; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + if ((entry->alignment && obj->gtt_offset & (entry->alignment - 1)) || + (need_mappable && !obj->map_and_fenceable)) + ret = i915_gem_object_unbind(obj); + else + ret = i915_gem_execbuffer_reserve_object(obj, ring); + if (ret) + goto err; + } + + /* Bind fresh objects */ + list_for_each_entry(obj, objects, exec_list) { + if (obj->gtt_space) + continue; + + ret = i915_gem_execbuffer_reserve_object(obj, ring); + if (ret) + goto err; + } + +err: /* Decrement pin count for bound objects */ + list_for_each_entry(obj, objects, exec_list) + i915_gem_execbuffer_unreserve_object(obj); + + if (ret != -ENOSPC || retry++) + return ret; + + ret = i915_gem_evict_everything(ring->dev); + if (ret) + return ret; + } while (1); +} + +static int +i915_gem_execbuffer_relocate_slow(struct drm_device *dev, + struct drm_file *file, + struct intel_ring_buffer *ring, + struct list_head *objects, + struct eb_objects *eb, + struct drm_i915_gem_exec_object2 *exec, + int count) +{ + struct drm_i915_gem_relocation_entry *reloc; + struct drm_i915_gem_object *obj; + int *reloc_offset; + int i, total, ret; + + /* We may process another execbuffer during the unlock... */ + while (!list_empty(objects)) { + obj = list_first_entry(objects, + struct drm_i915_gem_object, + exec_list); + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + mutex_unlock(&dev->struct_mutex); + + total = 0; + for (i = 0; i < count; i++) + total += exec[i].relocation_count; + + reloc_offset = drm_malloc_ab(count, sizeof(*reloc_offset)); + reloc = drm_malloc_ab(total, sizeof(*reloc)); + if (reloc == NULL || reloc_offset == NULL) { + drm_free_large(reloc); + drm_free_large(reloc_offset); + mutex_lock(&dev->struct_mutex); + return -ENOMEM; + } + + total = 0; + for (i = 0; i < count; i++) { + struct drm_i915_gem_relocation_entry __user *user_relocs; + u64 invalid_offset = (u64)-1; + int j; + + user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr; + + if (copy_from_user(reloc+total, user_relocs, + exec[i].relocation_count * sizeof(*reloc))) { + ret = -EFAULT; + mutex_lock(&dev->struct_mutex); + goto err; + } + + /* As we do not update the known relocation offsets after + * relocating (due to the complexities in lock handling), + * we need to mark them as invalid now so that we force the + * relocation processing next time. Just in case the target + * object is evicted and then rebound into its old + * presumed_offset before the next execbuffer - if that + * happened we would make the mistake of assuming that the + * relocations were valid. + */ + for (j = 0; j < exec[i].relocation_count; j++) { + if (copy_to_user(&user_relocs[j].presumed_offset, + &invalid_offset, + sizeof(invalid_offset))) { + ret = -EFAULT; + mutex_lock(&dev->struct_mutex); + goto err; + } + } + + reloc_offset[i] = total; + total += exec[i].relocation_count; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) { + mutex_lock(&dev->struct_mutex); + goto err; + } + + /* reacquire the objects */ + eb_reset(eb); + for (i = 0; i < count; i++) { + obj = to_intel_bo(drm_gem_object_lookup(dev, file, + exec[i].handle)); + if (&obj->base == NULL) { + DRM_DEBUG("Invalid object handle %d at index %d\n", + exec[i].handle, i); + ret = -ENOENT; + goto err; + } + + list_add_tail(&obj->exec_list, objects); + obj->exec_handle = exec[i].handle; + obj->exec_entry = &exec[i]; + eb_add_object(eb, obj); + } + + ret = i915_gem_execbuffer_reserve(ring, file, objects); + if (ret) + goto err; + + list_for_each_entry(obj, objects, exec_list) { + int offset = obj->exec_entry - exec; + ret = i915_gem_execbuffer_relocate_object_slow(obj, eb, + reloc + reloc_offset[offset]); + if (ret) + goto err; + } + + /* Leave the user relocations as are, this is the painfully slow path, + * and we want to avoid the complication of dropping the lock whilst + * having buffers reserved in the aperture and so causing spurious + * ENOSPC for random operations. + */ + +err: + drm_free_large(reloc); + drm_free_large(reloc_offset); + return ret; +} + +static int +i915_gem_execbuffer_wait_for_flips(struct intel_ring_buffer *ring, u32 flips) +{ + u32 plane, flip_mask; + int ret; + + /* Check for any pending flips. As we only maintain a flip queue depth + * of 1, we can simply insert a WAIT for the next display flip prior + * to executing the batch and avoid stalling the CPU. + */ + + for (plane = 0; flips >> plane; plane++) { + if (((flips >> plane) & 1) == 0) + continue; + + if (plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + } + + return 0; +} + +static int +i915_gem_execbuffer_move_to_gpu(struct intel_ring_buffer *ring, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + uint32_t flush_domains = 0; + uint32_t flips = 0; + int ret; + + list_for_each_entry(obj, objects, exec_list) { + ret = i915_gem_object_sync(obj, ring); + if (ret) + return ret; + + if (obj->base.write_domain & I915_GEM_DOMAIN_CPU) + i915_gem_clflush_object(obj); + + if (obj->base.pending_write_domain) + flips |= atomic_read(&obj->pending_flip); + + flush_domains |= obj->base.write_domain; + } + + if (flips) { + ret = i915_gem_execbuffer_wait_for_flips(ring, flips); + if (ret) + return ret; + } + + if (flush_domains & I915_GEM_DOMAIN_CPU) + i915_gem_chipset_flush(ring->dev); + + if (flush_domains & I915_GEM_DOMAIN_GTT) + wmb(); + + /* Unconditionally invalidate gpu caches and ensure that we do flush + * any residual writes from the previous batch. + */ + return intel_ring_invalidate_all_caches(ring); +} + +static bool +i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) +{ + return ((exec->batch_start_offset | exec->batch_len) & 0x7) == 0; +} + +static int +validate_exec_list(struct drm_i915_gem_exec_object2 *exec, + int count) +{ + int i; + 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 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); + if (!access_ok(VERIFY_READ, ptr, length)) + return -EFAULT; + + /* we may also need to update the presumed offsets */ + if (!access_ok(VERIFY_WRITE, ptr, length)) + return -EFAULT; + + if (fault_in_multipages_readable(ptr, length)) + return -EFAULT; + } + + return 0; +} + +static void +i915_gem_execbuffer_move_to_active(struct list_head *objects, + struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + + list_for_each_entry(obj, objects, exec_list) { + u32 old_read = obj->base.read_domains; + u32 old_write = obj->base.write_domain; + + obj->base.read_domains = obj->base.pending_read_domains; + obj->base.write_domain = obj->base.pending_write_domain; + obj->fenced_gpu_access = obj->pending_fenced_gpu_access; + + i915_gem_object_move_to_active(obj, ring); + if (obj->base.write_domain) { + obj->dirty = 1; + obj->last_write_seqno = intel_ring_get_seqno(ring); + if (obj->pin_count) /* check for potential scanout */ + intel_mark_fb_busy(obj); + } + + trace_i915_gem_object_change_domain(obj, old_read, old_write); + } +} + +static void +i915_gem_execbuffer_retire_commands(struct drm_device *dev, + struct drm_file *file, + struct intel_ring_buffer *ring) +{ + /* Unconditionally force add_request to emit a full flush. */ + ring->gpu_caches_dirty = true; + + /* Add a breadcrumb for the completion of the batch buffer */ + (void)i915_add_request(ring, file, NULL); +} + +static int +i915_reset_gen7_sol_offsets(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret, i; + + if (!IS_GEN7(dev) || ring != &dev_priv->ring[RCS]) + return 0; + + ret = intel_ring_begin(ring, 4 * 3); + if (ret) + return ret; + + for (i = 0; i < 4; i++) { + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, GEN7_SO_WRITE_OFFSET(i)); + intel_ring_emit(ring, 0); + } + + intel_ring_advance(ring); + + return 0; +} + +static int +i915_gem_do_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file, + struct drm_i915_gem_execbuffer2 *args, + struct drm_i915_gem_exec_object2 *exec) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct list_head objects; + struct eb_objects *eb; + struct drm_i915_gem_object *batch_obj; + struct drm_clip_rect *cliprects = NULL; + struct intel_ring_buffer *ring; + u32 ctx_id = i915_execbuffer2_get_context_id(*args); + u32 exec_start, exec_len; + u32 mask; + u32 flags; + int ret, mode, i; + + if (!i915_gem_check_execbuffer(args)) { + DRM_DEBUG("execbuf with invalid offset/length\n"); + return -EINVAL; + } + + ret = validate_exec_list(exec, args->buffer_count); + if (ret) + return ret; + + flags = 0; + if (args->flags & I915_EXEC_SECURE) { + if (!file->is_master || !capable(CAP_SYS_ADMIN)) + return -EPERM; + + flags |= I915_DISPATCH_SECURE; + } + if (args->flags & I915_EXEC_IS_PINNED) + flags |= I915_DISPATCH_PINNED; + + switch (args->flags & I915_EXEC_RING_MASK) { + case I915_EXEC_DEFAULT: + case I915_EXEC_RENDER: + ring = &dev_priv->ring[RCS]; + break; + case I915_EXEC_BSD: + ring = &dev_priv->ring[VCS]; + if (ctx_id != 0) { + DRM_DEBUG("Ring %s doesn't support contexts\n", + ring->name); + return -EPERM; + } + break; + case I915_EXEC_BLT: + ring = &dev_priv->ring[BCS]; + if (ctx_id != 0) { + DRM_DEBUG("Ring %s doesn't support contexts\n", + ring->name); + return -EPERM; + } + break; + default: + DRM_DEBUG("execbuf with unknown ring: %d\n", + (int)(args->flags & I915_EXEC_RING_MASK)); + return -EINVAL; + } + if (!intel_ring_initialized(ring)) { + DRM_DEBUG("execbuf with invalid ring: %d\n", + (int)(args->flags & I915_EXEC_RING_MASK)); + return -EINVAL; + } + + mode = args->flags & I915_EXEC_CONSTANTS_MASK; + mask = I915_EXEC_CONSTANTS_MASK; + switch (mode) { + case I915_EXEC_CONSTANTS_REL_GENERAL: + case I915_EXEC_CONSTANTS_ABSOLUTE: + case I915_EXEC_CONSTANTS_REL_SURFACE: + if (ring == &dev_priv->ring[RCS] && + mode != dev_priv->relative_constants_mode) { + if (INTEL_INFO(dev)->gen < 4) + return -EINVAL; + + if (INTEL_INFO(dev)->gen > 5 && + mode == I915_EXEC_CONSTANTS_REL_SURFACE) + return -EINVAL; + + /* The HW changed the meaning on this bit on gen6 */ + if (INTEL_INFO(dev)->gen >= 6) + mask &= ~I915_EXEC_CONSTANTS_REL_SURFACE; + } + break; + default: + DRM_DEBUG("execbuf with unknown constants: %d\n", mode); + return -EINVAL; + } + + if (args->buffer_count < 1) { + DRM_DEBUG("execbuf with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + if (args->num_cliprects != 0) { + if (ring != &dev_priv->ring[RCS]) { + DRM_DEBUG("clip rectangles are only valid with the render ring\n"); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 5) { + DRM_DEBUG("clip rectangles are only valid on pre-gen5\n"); + return -EINVAL; + } + + if (args->num_cliprects > UINT_MAX / sizeof(*cliprects)) { + DRM_DEBUG("execbuf with %u cliprects\n", + args->num_cliprects); + return -EINVAL; + } + + cliprects = kmalloc(args->num_cliprects * sizeof(*cliprects), + GFP_KERNEL); + if (cliprects == NULL) { + ret = -ENOMEM; + goto pre_mutex_err; + } + + if (copy_from_user(cliprects, + (struct drm_clip_rect __user *)(uintptr_t) + args->cliprects_ptr, + sizeof(*cliprects)*args->num_cliprects)) { + ret = -EFAULT; + goto pre_mutex_err; + } + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto pre_mutex_err; + + if (dev_priv->mm.suspended) { + mutex_unlock(&dev->struct_mutex); + ret = -EBUSY; + goto pre_mutex_err; + } + + eb = eb_create(args->buffer_count); + if (eb == NULL) { + mutex_unlock(&dev->struct_mutex); + ret = -ENOMEM; + goto pre_mutex_err; + } + + /* Look up object handles */ + INIT_LIST_HEAD(&objects); + for (i = 0; i < args->buffer_count; i++) { + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, + exec[i].handle)); + if (&obj->base == NULL) { + DRM_DEBUG("Invalid object handle %d at index %d\n", + exec[i].handle, i); + /* prevent error path from reading uninitialized data */ + ret = -ENOENT; + goto err; + } + + if (!list_empty(&obj->exec_list)) { + DRM_DEBUG("Object %p [handle %d, index %d] appears more than once in object list\n", + obj, exec[i].handle, i); + ret = -EINVAL; + goto err; + } + + list_add_tail(&obj->exec_list, &objects); + obj->exec_handle = exec[i].handle; + obj->exec_entry = &exec[i]; + eb_add_object(eb, obj); + } + + /* take note of the batch buffer before we might reorder the lists */ + batch_obj = list_entry(objects.prev, + struct drm_i915_gem_object, + exec_list); + + /* Move the objects en-masse into the GTT, evicting if necessary. */ + ret = i915_gem_execbuffer_reserve(ring, file, &objects); + if (ret) + goto err; + + /* The objects are in their final locations, apply the relocations. */ + ret = i915_gem_execbuffer_relocate(dev, eb, &objects); + if (ret) { + if (ret == -EFAULT) { + ret = i915_gem_execbuffer_relocate_slow(dev, file, ring, + &objects, eb, + exec, + args->buffer_count); + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + } + if (ret) + goto err; + } + + /* Set the pending read domains for the batch buffer to COMMAND */ + if (batch_obj->base.pending_write_domain) { + DRM_DEBUG("Attempting to use self-modifying batch buffer\n"); + ret = -EINVAL; + goto err; + } + batch_obj->base.pending_read_domains |= I915_GEM_DOMAIN_COMMAND; + + /* snb/ivb/vlv conflate the "batch in ppgtt" bit with the "non-secure + * batch" bit. Hence we need to pin secure batches into the global gtt. + * hsw should have this fixed, but let's be paranoid and do it + * unconditionally for now. */ + if (flags & I915_DISPATCH_SECURE && !batch_obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(batch_obj, batch_obj->cache_level); + + ret = i915_gem_execbuffer_move_to_gpu(ring, &objects); + if (ret) + goto err; + + ret = i915_switch_context(ring, file, ctx_id); + if (ret) + goto err; + + if (ring == &dev_priv->ring[RCS] && + mode != dev_priv->relative_constants_mode) { + ret = intel_ring_begin(ring, 4); + if (ret) + goto err; + + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, INSTPM); + intel_ring_emit(ring, mask << 16 | mode); + intel_ring_advance(ring); + + dev_priv->relative_constants_mode = mode; + } + + if (args->flags & I915_EXEC_GEN7_SOL_RESET) { + ret = i915_reset_gen7_sol_offsets(dev, ring); + if (ret) + goto err; + } + + exec_start = batch_obj->gtt_offset + args->batch_start_offset; + exec_len = args->batch_len; + if (cliprects) { + for (i = 0; i < args->num_cliprects; i++) { + ret = i915_emit_box(dev, &cliprects[i], + args->DR1, args->DR4); + if (ret) + goto err; + + ret = ring->dispatch_execbuffer(ring, + exec_start, exec_len, + flags); + if (ret) + goto err; + } + } else { + ret = ring->dispatch_execbuffer(ring, + exec_start, exec_len, + flags); + if (ret) + goto err; + } + + trace_i915_gem_ring_dispatch(ring, intel_ring_get_seqno(ring), flags); + + i915_gem_execbuffer_move_to_active(&objects, ring); + i915_gem_execbuffer_retire_commands(dev, file, ring); + +err: + eb_destroy(eb); + while (!list_empty(&objects)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&objects, + struct drm_i915_gem_object, + exec_list); + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + mutex_unlock(&dev->struct_mutex); + +pre_mutex_err: + kfree(cliprects); + return ret; +} + +/* + * Legacy execbuffer just creates an exec2 list from the original exec object + * list array and passes it to the real function. + */ +int +i915_gem_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_execbuffer *args = data; + struct drm_i915_gem_execbuffer2 exec2; + struct drm_i915_gem_exec_object *exec_list = NULL; + struct drm_i915_gem_exec_object2 *exec2_list = NULL; + int ret, i; + + if (args->buffer_count < 1) { + DRM_DEBUG("execbuf with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + /* Copy in the exec list from userland */ + exec_list = drm_malloc_ab(sizeof(*exec_list), args->buffer_count); + exec2_list = drm_malloc_ab(sizeof(*exec2_list), args->buffer_count); + if (exec_list == NULL || exec2_list == NULL) { + DRM_DEBUG("Failed to allocate exec list for %d buffers\n", + args->buffer_count); + drm_free_large(exec_list); + drm_free_large(exec2_list); + return -ENOMEM; + } + ret = copy_from_user(exec_list, + (void __user *)(uintptr_t)args->buffers_ptr, + sizeof(*exec_list) * args->buffer_count); + if (ret != 0) { + DRM_DEBUG("copy %d exec entries failed %d\n", + args->buffer_count, ret); + drm_free_large(exec_list); + drm_free_large(exec2_list); + return -EFAULT; + } + + for (i = 0; i < args->buffer_count; i++) { + exec2_list[i].handle = exec_list[i].handle; + exec2_list[i].relocation_count = exec_list[i].relocation_count; + exec2_list[i].relocs_ptr = exec_list[i].relocs_ptr; + exec2_list[i].alignment = exec_list[i].alignment; + exec2_list[i].offset = exec_list[i].offset; + if (INTEL_INFO(dev)->gen < 4) + exec2_list[i].flags = EXEC_OBJECT_NEEDS_FENCE; + else + exec2_list[i].flags = 0; + } + + exec2.buffers_ptr = args->buffers_ptr; + exec2.buffer_count = args->buffer_count; + exec2.batch_start_offset = args->batch_start_offset; + exec2.batch_len = args->batch_len; + exec2.DR1 = args->DR1; + exec2.DR4 = args->DR4; + exec2.num_cliprects = args->num_cliprects; + exec2.cliprects_ptr = args->cliprects_ptr; + exec2.flags = I915_EXEC_RENDER; + i915_execbuffer2_set_context_id(exec2, 0); + + ret = i915_gem_do_execbuffer(dev, data, file, &exec2, exec2_list); + if (!ret) { + /* Copy the new buffer offsets back to the user's exec list. */ + for (i = 0; i < args->buffer_count; i++) + exec_list[i].offset = exec2_list[i].offset; + /* ... and back out to userspace */ + ret = copy_to_user((void __user *)(uintptr_t)args->buffers_ptr, + exec_list, + sizeof(*exec_list) * args->buffer_count); + if (ret) { + ret = -EFAULT; + DRM_DEBUG("failed to copy %d exec entries " + "back to user (%d)\n", + args->buffer_count, ret); + } + } + + drm_free_large(exec_list); + drm_free_large(exec2_list); + return ret; +} + +int +i915_gem_execbuffer2(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_execbuffer2 *args = data; + struct drm_i915_gem_exec_object2 *exec2_list = NULL; + int ret; + + if (args->buffer_count < 1 || + args->buffer_count > UINT_MAX / sizeof(*exec2_list)) { + DRM_DEBUG("execbuf2 with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + exec2_list = kmalloc(sizeof(*exec2_list)*args->buffer_count, + GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY); + if (exec2_list == NULL) + exec2_list = drm_malloc_ab(sizeof(*exec2_list), + args->buffer_count); + if (exec2_list == NULL) { + DRM_DEBUG("Failed to allocate exec list for %d buffers\n", + args->buffer_count); + return -ENOMEM; + } + ret = copy_from_user(exec2_list, + (struct drm_i915_relocation_entry __user *) + (uintptr_t) args->buffers_ptr, + sizeof(*exec2_list) * args->buffer_count); + if (ret != 0) { + DRM_DEBUG("copy %d exec entries failed %d\n", + args->buffer_count, ret); + drm_free_large(exec2_list); + return -EFAULT; + } + + ret = i915_gem_do_execbuffer(dev, data, file, args, exec2_list); + if (!ret) { + /* Copy the new buffer offsets back to the user's exec list. */ + ret = copy_to_user((void __user *)(uintptr_t)args->buffers_ptr, + exec2_list, + sizeof(*exec2_list) * args->buffer_count); + if (ret) { + ret = -EFAULT; + DRM_DEBUG("failed to copy %d exec entries " + "back to user (%d)\n", + args->buffer_count, ret); + } + } + + drm_free_large(exec2_list); + return ret; +} --- linux-3.5.0.orig/ubuntu/i915/dvo.h +++ linux-3.5.0/ubuntu/i915/dvo.h @@ -0,0 +1,149 @@ +/* + * Copyright © 2006 Eric Anholt + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _INTEL_DVO_H +#define _INTEL_DVO_H + +#include +#include +#include +#include "intel_drv.h" + +struct intel_dvo_device { + const char *name; + int type; + /* DVOA/B/C output register */ + u32 dvo_reg; + /* GPIO register used for i2c bus to control this device */ + u32 gpio; + int slave_addr; + + const struct intel_dvo_dev_ops *dev_ops; + void *dev_priv; + struct i2c_adapter *i2c_bus; +}; + +struct intel_dvo_dev_ops { + /* + * Initialize the device at startup time. + * Returns NULL if the device does not exist. + */ + bool (*init)(struct intel_dvo_device *dvo, + struct i2c_adapter *i2cbus); + + /* + * Called to allow the output a chance to create properties after the + * RandR objects have been created. + */ + void (*create_resources)(struct intel_dvo_device *dvo); + + /* + * Turn on/off output. + * + * Because none of our dvo drivers support an intermediate power levels, + * we don't expose this in the interfac. + */ + void (*dpms)(struct intel_dvo_device *dvo, bool enable); + + /* + * Callback for testing a video mode for a given output. + * + * This function should only check for cases where a mode can't + * be supported on the output specifically, and not represent + * generic CRTC limitations. + * + * \return MODE_OK if the mode is valid, or another MODE_* otherwise. + */ + int (*mode_valid)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode); + + /* + * Callback to adjust the mode to be set in the CRTC. + * + * This allows an output to adjust the clock or even the entire set of + * timings, which is used for panels with fixed timings or for + * buses with clock limitations. + */ + bool (*mode_fixup)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); + + /* + * Callback for preparing mode changes on an output + */ + void (*prepare)(struct intel_dvo_device *dvo); + + /* + * Callback for committing mode changes on an output + */ + void (*commit)(struct intel_dvo_device *dvo); + + /* + * Callback for setting up a video mode after fixups have been made. + * + * This is only called while the output is disabled. The dpms callback + * must be all that's necessary for the output, to turn the output on + * after this function is called. + */ + void (*mode_set)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); + + /* + * Probe for a connected output, and return detect_status. + */ + enum drm_connector_status (*detect)(struct intel_dvo_device *dvo); + + /* + * Probe the current hw status, returning true if the connected output + * is active. + */ + bool (*get_hw_state)(struct intel_dvo_device *dev); + + /** + * Query the device for the modes it provides. + * + * This function may also update MonInfo, mm_width, and mm_height. + * + * \return singly-linked list of modes or NULL if no modes found. + */ + struct drm_display_mode *(*get_modes)(struct intel_dvo_device *dvo); + + /** + * Clean up driver-specific bits of the output + */ + void (*destroy) (struct intel_dvo_device *dvo); + + /** + * Debugging hook to dump device registers to log file + */ + void (*dump_regs)(struct intel_dvo_device *dvo); +}; + +extern struct intel_dvo_dev_ops sil164_ops; +extern struct intel_dvo_dev_ops ch7xxx_ops; +extern struct intel_dvo_dev_ops ivch_ops; +extern struct intel_dvo_dev_ops tfp410_ops; +extern struct intel_dvo_dev_ops ch7017_ops; +extern struct intel_dvo_dev_ops ns2501_ops; + +#endif /* _INTEL_DVO_H */ --- linux-3.5.0.orig/ubuntu/i915/i915_trace_points.c +++ linux-3.5.0/ubuntu/i915/i915_trace_points.c @@ -0,0 +1,13 @@ +/* + * Copyright © 2009 Intel Corporation + * + * Authors: + * Chris Wilson + */ + +#include "i915_drv.h" + +#ifndef __CHECKER__ +#define CREATE_TRACE_POINTS +#include "i915_trace.h" +#endif --- linux-3.5.0.orig/ubuntu/i915/intel_pm.c +++ linux-3.5.0/ubuntu/i915/intel_pm.c @@ -0,0 +1,4470 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eugeni Dodonov + * + */ + +#include +#include "i915_drv.h" +#include "intel_drv.h" +#include "../../drivers/platform/x86/intel_ips.h" +#include + +#define FORCEWAKE_ACK_TIMEOUT_MS 2 + +/* FBC, or Frame Buffer Compression, is a technique employed to compress the + * framebuffer contents in-memory, aiming at reducing the required bandwidth + * during in-memory transfers and, therefore, reduce the power packet. + * + * The benefits of FBC are mostly visible with solid backgrounds and + * variation-less patterns. + * + * FBC-related functionality can be enabled by the means of the + * i915.i915_enable_fbc parameter + */ + +static bool intel_crtc_active(struct drm_crtc *crtc) +{ + /* Be paranoid as we can arrive here with only partial + * state retrieved from the hardware during setup. + */ + return to_intel_crtc(crtc)->active && crtc->fb && crtc->mode.clock; +} + +static void i8xx_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 fbc_ctl; + + /* Disable compression */ + fbc_ctl = I915_READ(FBC_CONTROL); + if ((fbc_ctl & FBC_CTL_EN) == 0) + return; + + fbc_ctl &= ~FBC_CTL_EN; + I915_WRITE(FBC_CONTROL, fbc_ctl); + + /* Wait for compressing bit to clear */ + if (wait_for((I915_READ(FBC_STATUS) & FBC_STAT_COMPRESSING) == 0, 10)) { + DRM_DEBUG_KMS("FBC idle timed out\n"); + return; + } + + DRM_DEBUG_KMS("disabled FBC\n"); +} + +static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int cfb_pitch; + int plane, i; + u32 fbc_ctl, fbc_ctl2; + + cfb_pitch = dev_priv->cfb_size / FBC_LL_SIZE; + if (fb->pitches[0] < cfb_pitch) + cfb_pitch = fb->pitches[0]; + + /* FBC_CTL wants 64B units */ + cfb_pitch = (cfb_pitch / 64) - 1; + plane = intel_crtc->plane == 0 ? FBC_CTL_PLANEA : FBC_CTL_PLANEB; + + /* Clear old tags */ + for (i = 0; i < (FBC_LL_SIZE / 32) + 1; i++) + I915_WRITE(FBC_TAG + (i * 4), 0); + + /* Set it up... */ + fbc_ctl2 = FBC_CTL_FENCE_DBL | FBC_CTL_IDLE_IMM | FBC_CTL_CPU_FENCE; + fbc_ctl2 |= plane; + I915_WRITE(FBC_CONTROL2, fbc_ctl2); + I915_WRITE(FBC_FENCE_OFF, crtc->y); + + /* enable it... */ + fbc_ctl = FBC_CTL_EN | FBC_CTL_PERIODIC; + if (IS_I945GM(dev)) + fbc_ctl |= FBC_CTL_C3_IDLE; /* 945 needs special SR handling */ + fbc_ctl |= (cfb_pitch & 0xff) << FBC_CTL_STRIDE_SHIFT; + fbc_ctl |= (interval & 0x2fff) << FBC_CTL_INTERVAL_SHIFT; + fbc_ctl |= obj->fence_reg; + I915_WRITE(FBC_CONTROL, fbc_ctl); + + DRM_DEBUG_KMS("enabled FBC, pitch %d, yoff %d, plane %d, ", + cfb_pitch, crtc->y, intel_crtc->plane); +} + +static bool i8xx_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(FBC_CONTROL) & FBC_CTL_EN; +} + +static void g4x_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int plane = intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : DPFC_CTL_PLANEB; + unsigned long stall_watermark = 200; + u32 dpfc_ctl; + + dpfc_ctl = plane | DPFC_SR_EN | DPFC_CTL_LIMIT_1X; + dpfc_ctl |= DPFC_CTL_FENCE_EN | obj->fence_reg; + I915_WRITE(DPFC_CHICKEN, DPFC_HT_MODIFY); + + I915_WRITE(DPFC_RECOMP_CTL, DPFC_RECOMP_STALL_EN | + (stall_watermark << DPFC_RECOMP_STALL_WM_SHIFT) | + (interval << DPFC_RECOMP_TIMER_COUNT_SHIFT)); + I915_WRITE(DPFC_FENCE_YOFF, crtc->y); + + /* enable it... */ + I915_WRITE(DPFC_CONTROL, I915_READ(DPFC_CONTROL) | DPFC_CTL_EN); + + DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane); +} + +static void g4x_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpfc_ctl; + + /* Disable compression */ + dpfc_ctl = I915_READ(DPFC_CONTROL); + if (dpfc_ctl & DPFC_CTL_EN) { + dpfc_ctl &= ~DPFC_CTL_EN; + I915_WRITE(DPFC_CONTROL, dpfc_ctl); + + DRM_DEBUG_KMS("disabled FBC\n"); + } +} + +static bool g4x_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(DPFC_CONTROL) & DPFC_CTL_EN; +} + +static void sandybridge_blit_fbc_update(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 blt_ecoskpd; + + /* Make sure blitter notifies FBC of writes */ + gen6_gt_force_wake_get(dev_priv); + blt_ecoskpd = I915_READ(GEN6_BLITTER_ECOSKPD); + blt_ecoskpd |= GEN6_BLITTER_FBC_NOTIFY << + GEN6_BLITTER_LOCK_SHIFT; + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + blt_ecoskpd |= GEN6_BLITTER_FBC_NOTIFY; + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + blt_ecoskpd &= ~(GEN6_BLITTER_FBC_NOTIFY << + GEN6_BLITTER_LOCK_SHIFT); + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + POSTING_READ(GEN6_BLITTER_ECOSKPD); + gen6_gt_force_wake_put(dev_priv); +} + +static void ironlake_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int plane = intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : DPFC_CTL_PLANEB; + unsigned long stall_watermark = 200; + u32 dpfc_ctl; + + dpfc_ctl = I915_READ(ILK_DPFC_CONTROL); + dpfc_ctl &= DPFC_RESERVED; + dpfc_ctl |= (plane | DPFC_CTL_LIMIT_1X); + /* Set persistent mode for front-buffer rendering, ala X. */ + dpfc_ctl |= DPFC_CTL_PERSISTENT_MODE; + dpfc_ctl |= (DPFC_CTL_FENCE_EN | obj->fence_reg); + I915_WRITE(ILK_DPFC_CHICKEN, DPFC_HT_MODIFY); + + I915_WRITE(ILK_DPFC_RECOMP_CTL, DPFC_RECOMP_STALL_EN | + (stall_watermark << DPFC_RECOMP_STALL_WM_SHIFT) | + (interval << DPFC_RECOMP_TIMER_COUNT_SHIFT)); + I915_WRITE(ILK_DPFC_FENCE_YOFF, crtc->y); + I915_WRITE(ILK_FBC_RT_BASE, obj->gtt_offset | ILK_FBC_RT_VALID); + /* enable it... */ + I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl | DPFC_CTL_EN); + + if (IS_GEN6(dev)) { + I915_WRITE(SNB_DPFC_CTL_SA, + SNB_CPU_FENCE_ENABLE | obj->fence_reg); + I915_WRITE(DPFC_CPU_FENCE_OFFSET, crtc->y); + sandybridge_blit_fbc_update(dev); + } + + DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane); +} + +static void ironlake_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpfc_ctl; + + /* Disable compression */ + dpfc_ctl = I915_READ(ILK_DPFC_CONTROL); + if (dpfc_ctl & DPFC_CTL_EN) { + dpfc_ctl &= ~DPFC_CTL_EN; + I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl); + + DRM_DEBUG_KMS("disabled FBC\n"); + } +} + +static bool ironlake_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(ILK_DPFC_CONTROL) & DPFC_CTL_EN; +} + +bool intel_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!dev_priv->display.fbc_enabled) + return false; + + return dev_priv->display.fbc_enabled(dev); +} + +static void intel_fbc_work_fn(struct work_struct *__work) +{ + struct intel_fbc_work *work = + container_of(to_delayed_work(__work), + struct intel_fbc_work, work); + struct drm_device *dev = work->crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + mutex_lock(&dev->struct_mutex); + if (work == dev_priv->fbc_work) { + /* Double check that we haven't switched fb without cancelling + * the prior work. + */ + if (work->crtc->fb == work->fb) { + dev_priv->display.enable_fbc(work->crtc, + work->interval); + + dev_priv->cfb_plane = to_intel_crtc(work->crtc)->plane; + dev_priv->cfb_fb = work->crtc->fb->base.id; + dev_priv->cfb_y = work->crtc->y; + } + + dev_priv->fbc_work = NULL; + } + mutex_unlock(&dev->struct_mutex); + + kfree(work); +} + +static void intel_cancel_fbc_work(struct drm_i915_private *dev_priv) +{ + if (dev_priv->fbc_work == NULL) + return; + + DRM_DEBUG_KMS("cancelling pending FBC enable\n"); + + /* Synchronisation is provided by struct_mutex and checking of + * dev_priv->fbc_work, so we can perform the cancellation + * entirely asynchronously. + */ + if (cancel_delayed_work(&dev_priv->fbc_work->work)) + /* tasklet was killed before being run, clean up */ + kfree(dev_priv->fbc_work); + + /* Mark the work as no longer wanted so that if it does + * wake-up (because the work was already running and waiting + * for our mutex), it will discover that is no longer + * necessary to run. + */ + dev_priv->fbc_work = NULL; +} + +void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct intel_fbc_work *work; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!dev_priv->display.enable_fbc) + return; + + intel_cancel_fbc_work(dev_priv); + + work = kzalloc(sizeof *work, GFP_KERNEL); + if (work == NULL) { + dev_priv->display.enable_fbc(crtc, interval); + return; + } + + work->crtc = crtc; + work->fb = crtc->fb; + work->interval = interval; + INIT_DELAYED_WORK(&work->work, intel_fbc_work_fn); + + dev_priv->fbc_work = work; + + DRM_DEBUG_KMS("scheduling delayed FBC enable\n"); + + /* Delay the actual enabling to let pageflipping cease and the + * display to settle before starting the compression. Note that + * this delay also serves a second purpose: it allows for a + * vblank to pass after disabling the FBC before we attempt + * to modify the control registers. + * + * A more complicated solution would involve tracking vblanks + * following the termination of the page-flipping sequence + * and indeed performing the enable as a co-routine and not + * waiting synchronously upon the vblank. + */ + schedule_delayed_work(&work->work, msecs_to_jiffies(50)); +} + +void intel_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + intel_cancel_fbc_work(dev_priv); + + if (!dev_priv->display.disable_fbc) + return; + + dev_priv->display.disable_fbc(dev); + dev_priv->cfb_plane = -1; +} + +/** + * intel_update_fbc - enable/disable FBC as needed + * @dev: the drm_device + * + * Set up the framebuffer compression hardware at mode set time. We + * enable it if possible: + * - plane A only (on pre-965) + * - no pixel mulitply/line duplication + * - no alpha buffer discard + * - no dual wide + * - framebuffer <= 2048 in width, 1536 in height + * + * We can't assume that any compression will take place (worst case), + * so the compressed buffer has to be the same size as the uncompressed + * one. It also must reside (along with the line length buffer) in + * stolen memory. + * + * We need to enable/disable FBC on a global basis. + */ +void intel_update_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = NULL, *tmp_crtc; + struct intel_crtc *intel_crtc; + struct drm_framebuffer *fb; + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int enable_fbc; + + if (!i915_powersave) + return; + + if (!I915_HAS_FBC(dev)) + return; + + /* + * If FBC is already on, we just have to verify that we can + * keep it that way... + * Need to disable if: + * - more than one pipe is active + * - changing FBC params (stride, fence, mode) + * - new fb is too large to fit in compressed buffer + * - going to an unsupported config (interlace, pixel multiply, etc.) + */ + list_for_each_entry(tmp_crtc, &dev->mode_config.crtc_list, head) { + if (intel_crtc_active(tmp_crtc) && + !to_intel_crtc(tmp_crtc)->primary_disabled) { + if (crtc) { + DRM_DEBUG_KMS("more than one pipe active, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_MULTIPLE_PIPES; + goto out_disable; + } + crtc = tmp_crtc; + } + } + + if (!crtc || crtc->fb == NULL) { + DRM_DEBUG_KMS("no output, disabling\n"); + dev_priv->no_fbc_reason = FBC_NO_OUTPUT; + goto out_disable; + } + + intel_crtc = to_intel_crtc(crtc); + fb = crtc->fb; + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + enable_fbc = i915_enable_fbc; + if (enable_fbc < 0) { + DRM_DEBUG_KMS("fbc set to per-chip default\n"); + enable_fbc = 1; + if (INTEL_INFO(dev)->gen <= 6) + enable_fbc = 0; + } + if (!enable_fbc) { + DRM_DEBUG_KMS("fbc disabled per module param\n"); + dev_priv->no_fbc_reason = FBC_MODULE_PARAM; + goto out_disable; + } + if (intel_fb->obj->base.size > dev_priv->cfb_size) { + DRM_DEBUG_KMS("framebuffer too large, disabling " + "compression\n"); + dev_priv->no_fbc_reason = FBC_STOLEN_TOO_SMALL; + goto out_disable; + } + if ((crtc->mode.flags & DRM_MODE_FLAG_INTERLACE) || + (crtc->mode.flags & DRM_MODE_FLAG_DBLSCAN)) { + DRM_DEBUG_KMS("mode incompatible with compression, " + "disabling\n"); + dev_priv->no_fbc_reason = FBC_UNSUPPORTED_MODE; + goto out_disable; + } + if ((crtc->mode.hdisplay > 2048) || + (crtc->mode.vdisplay > 1536)) { + DRM_DEBUG_KMS("mode too large for compression, disabling\n"); + dev_priv->no_fbc_reason = FBC_MODE_TOO_LARGE; + goto out_disable; + } + if ((IS_I915GM(dev) || IS_I945GM(dev)) && intel_crtc->plane != 0) { + DRM_DEBUG_KMS("plane not 0, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_BAD_PLANE; + goto out_disable; + } + + /* The use of a CPU fence is mandatory in order to detect writes + * by the CPU to the scanout and trigger updates to the FBC. + */ + if (obj->tiling_mode != I915_TILING_X || + obj->fence_reg == I915_FENCE_REG_NONE) { + DRM_DEBUG_KMS("framebuffer not tiled or fenced, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_NOT_TILED; + goto out_disable; + } + + /* If the kernel debugger is active, always disable compression */ + if (in_dbg_master()) + goto out_disable; + + /* If the scanout has not changed, don't modify the FBC settings. + * Note that we make the fundamental assumption that the fb->obj + * cannot be unpinned (and have its GTT offset and fence revoked) + * without first being decoupled from the scanout and FBC disabled. + */ + if (dev_priv->cfb_plane == intel_crtc->plane && + dev_priv->cfb_fb == fb->base.id && + dev_priv->cfb_y == crtc->y) + return; + + if (intel_fbc_enabled(dev)) { + /* We update FBC along two paths, after changing fb/crtc + * configuration (modeswitching) and after page-flipping + * finishes. For the latter, we know that not only did + * we disable the FBC at the start of the page-flip + * sequence, but also more than one vblank has passed. + * + * For the former case of modeswitching, it is possible + * to switch between two FBC valid configurations + * instantaneously so we do need to disable the FBC + * before we can modify its control registers. We also + * have to wait for the next vblank for that to take + * effect. However, since we delay enabling FBC we can + * assume that a vblank has passed since disabling and + * that we can safely alter the registers in the deferred + * callback. + * + * In the scenario that we go from a valid to invalid + * and then back to valid FBC configuration we have + * no strict enforcement that a vblank occurred since + * disabling the FBC. However, along all current pipe + * disabling paths we do need to wait for a vblank at + * some point. And we wait before enabling FBC anyway. + */ + DRM_DEBUG_KMS("disabling active FBC for update\n"); + intel_disable_fbc(dev); + } + + intel_enable_fbc(crtc, 500); + return; + +out_disable: + /* Multiple disables should be harmless */ + if (intel_fbc_enabled(dev)) { + DRM_DEBUG_KMS("unsupported config, disabling FBC\n"); + intel_disable_fbc(dev); + } +} + +static void i915_pineview_get_mem_freq(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 tmp; + + tmp = I915_READ(CLKCFG); + + switch (tmp & CLKCFG_FSB_MASK) { + case CLKCFG_FSB_533: + dev_priv->fsb_freq = 533; /* 133*4 */ + break; + case CLKCFG_FSB_800: + dev_priv->fsb_freq = 800; /* 200*4 */ + break; + case CLKCFG_FSB_667: + dev_priv->fsb_freq = 667; /* 167*4 */ + break; + case CLKCFG_FSB_400: + dev_priv->fsb_freq = 400; /* 100*4 */ + break; + } + + switch (tmp & CLKCFG_MEM_MASK) { + case CLKCFG_MEM_533: + dev_priv->mem_freq = 533; + break; + case CLKCFG_MEM_667: + dev_priv->mem_freq = 667; + break; + case CLKCFG_MEM_800: + dev_priv->mem_freq = 800; + break; + } + + /* detect pineview DDR3 setting */ + tmp = I915_READ(CSHRDDR3CTL); + dev_priv->is_ddr3 = (tmp & CSHRDDR3CTL_DDR3) ? 1 : 0; +} + +static void i915_ironlake_get_mem_freq(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u16 ddrpll, csipll; + + ddrpll = I915_READ16(DDRMPLL1); + csipll = I915_READ16(CSIPLL0); + + switch (ddrpll & 0xff) { + case 0xc: + dev_priv->mem_freq = 800; + break; + case 0x10: + dev_priv->mem_freq = 1066; + break; + case 0x14: + dev_priv->mem_freq = 1333; + break; + case 0x18: + dev_priv->mem_freq = 1600; + break; + default: + DRM_DEBUG_DRIVER("unknown memory frequency 0x%02x\n", + ddrpll & 0xff); + dev_priv->mem_freq = 0; + break; + } + + dev_priv->ips.r_t = dev_priv->mem_freq; + + switch (csipll & 0x3ff) { + case 0x00c: + dev_priv->fsb_freq = 3200; + break; + case 0x00e: + dev_priv->fsb_freq = 3733; + break; + case 0x010: + dev_priv->fsb_freq = 4266; + break; + case 0x012: + dev_priv->fsb_freq = 4800; + break; + case 0x014: + dev_priv->fsb_freq = 5333; + break; + case 0x016: + dev_priv->fsb_freq = 5866; + break; + case 0x018: + dev_priv->fsb_freq = 6400; + break; + default: + DRM_DEBUG_DRIVER("unknown fsb frequency 0x%04x\n", + csipll & 0x3ff); + dev_priv->fsb_freq = 0; + break; + } + + if (dev_priv->fsb_freq == 3200) { + dev_priv->ips.c_m = 0; + } else if (dev_priv->fsb_freq > 3200 && dev_priv->fsb_freq <= 4800) { + dev_priv->ips.c_m = 1; + } else { + dev_priv->ips.c_m = 2; + } +} + +static const struct cxsr_latency cxsr_latency_table[] = { + {1, 0, 800, 400, 3382, 33382, 3983, 33983}, /* DDR2-400 SC */ + {1, 0, 800, 667, 3354, 33354, 3807, 33807}, /* DDR2-667 SC */ + {1, 0, 800, 800, 3347, 33347, 3763, 33763}, /* DDR2-800 SC */ + {1, 1, 800, 667, 6420, 36420, 6873, 36873}, /* DDR3-667 SC */ + {1, 1, 800, 800, 5902, 35902, 6318, 36318}, /* DDR3-800 SC */ + + {1, 0, 667, 400, 3400, 33400, 4021, 34021}, /* DDR2-400 SC */ + {1, 0, 667, 667, 3372, 33372, 3845, 33845}, /* DDR2-667 SC */ + {1, 0, 667, 800, 3386, 33386, 3822, 33822}, /* DDR2-800 SC */ + {1, 1, 667, 667, 6438, 36438, 6911, 36911}, /* DDR3-667 SC */ + {1, 1, 667, 800, 5941, 35941, 6377, 36377}, /* DDR3-800 SC */ + + {1, 0, 400, 400, 3472, 33472, 4173, 34173}, /* DDR2-400 SC */ + {1, 0, 400, 667, 3443, 33443, 3996, 33996}, /* DDR2-667 SC */ + {1, 0, 400, 800, 3430, 33430, 3946, 33946}, /* DDR2-800 SC */ + {1, 1, 400, 667, 6509, 36509, 7062, 37062}, /* DDR3-667 SC */ + {1, 1, 400, 800, 5985, 35985, 6501, 36501}, /* DDR3-800 SC */ + + {0, 0, 800, 400, 3438, 33438, 4065, 34065}, /* DDR2-400 SC */ + {0, 0, 800, 667, 3410, 33410, 3889, 33889}, /* DDR2-667 SC */ + {0, 0, 800, 800, 3403, 33403, 3845, 33845}, /* DDR2-800 SC */ + {0, 1, 800, 667, 6476, 36476, 6955, 36955}, /* DDR3-667 SC */ + {0, 1, 800, 800, 5958, 35958, 6400, 36400}, /* DDR3-800 SC */ + + {0, 0, 667, 400, 3456, 33456, 4103, 34106}, /* DDR2-400 SC */ + {0, 0, 667, 667, 3428, 33428, 3927, 33927}, /* DDR2-667 SC */ + {0, 0, 667, 800, 3443, 33443, 3905, 33905}, /* DDR2-800 SC */ + {0, 1, 667, 667, 6494, 36494, 6993, 36993}, /* DDR3-667 SC */ + {0, 1, 667, 800, 5998, 35998, 6460, 36460}, /* DDR3-800 SC */ + + {0, 0, 400, 400, 3528, 33528, 4255, 34255}, /* DDR2-400 SC */ + {0, 0, 400, 667, 3500, 33500, 4079, 34079}, /* DDR2-667 SC */ + {0, 0, 400, 800, 3487, 33487, 4029, 34029}, /* DDR2-800 SC */ + {0, 1, 400, 667, 6566, 36566, 7145, 37145}, /* DDR3-667 SC */ + {0, 1, 400, 800, 6042, 36042, 6584, 36584}, /* DDR3-800 SC */ +}; + +static const struct cxsr_latency *intel_get_cxsr_latency(int is_desktop, + int is_ddr3, + int fsb, + int mem) +{ + const struct cxsr_latency *latency; + int i; + + if (fsb == 0 || mem == 0) + return NULL; + + for (i = 0; i < ARRAY_SIZE(cxsr_latency_table); i++) { + latency = &cxsr_latency_table[i]; + if (is_desktop == latency->is_desktop && + is_ddr3 == latency->is_ddr3 && + fsb == latency->fsb_freq && mem == latency->mem_freq) + return latency; + } + + DRM_DEBUG_KMS("Unknown FSB/MEM found, disable CxSR\n"); + + return NULL; +} + +static void pineview_disable_cxsr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* deactivate cxsr */ + I915_WRITE(DSPFW3, I915_READ(DSPFW3) & ~PINEVIEW_SELF_REFRESH_EN); +} + +/* + * Latency for FIFO fetches is dependent on several factors: + * - memory configuration (speed, channels) + * - chipset + * - current MCH state + * It can be fairly high in some situations, so here we assume a fairly + * pessimal value. It's a tradeoff between extra memory fetches (if we + * set this value too high, the FIFO will fetch frequently to stay full) + * and power consumption (set it too low to save power and we might see + * FIFO underruns and display "flicker"). + * + * A value of 5us seems to be a good balance; safe for very low end + * platforms but not overly aggressive on lower latency configs. + */ +static const int latency_ns = 5000; + +static int i9xx_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + if (plane) + size = ((dsparb >> DSPARB_CSTART_SHIFT) & 0x7f) - size; + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +static int i85x_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x1ff; + if (plane) + size = ((dsparb >> DSPARB_BEND_SHIFT) & 0x1ff) - size; + size >>= 1; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +static int i845_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + size >>= 2; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", + size); + + return size; +} + +static int i830_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + size >>= 1; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +/* Pineview has different values for various configs */ +static const struct intel_watermark_params pineview_display_wm = { + PINEVIEW_DISPLAY_FIFO, + PINEVIEW_MAX_WM, + PINEVIEW_DFT_WM, + PINEVIEW_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params pineview_display_hplloff_wm = { + PINEVIEW_DISPLAY_FIFO, + PINEVIEW_MAX_WM, + PINEVIEW_DFT_HPLLOFF_WM, + PINEVIEW_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params pineview_cursor_wm = { + PINEVIEW_CURSOR_FIFO, + PINEVIEW_CURSOR_MAX_WM, + PINEVIEW_CURSOR_DFT_WM, + PINEVIEW_CURSOR_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params pineview_cursor_hplloff_wm = { + PINEVIEW_CURSOR_FIFO, + PINEVIEW_CURSOR_MAX_WM, + PINEVIEW_CURSOR_DFT_WM, + PINEVIEW_CURSOR_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params g4x_wm_info = { + G4X_FIFO_SIZE, + G4X_MAX_WM, + G4X_MAX_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params g4x_cursor_wm_info = { + I965_CURSOR_FIFO, + I965_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params valleyview_wm_info = { + VALLEYVIEW_FIFO_SIZE, + VALLEYVIEW_MAX_WM, + VALLEYVIEW_MAX_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params valleyview_cursor_wm_info = { + I965_CURSOR_FIFO, + VALLEYVIEW_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params i965_cursor_wm_info = { + I965_CURSOR_FIFO, + I965_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + I915_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params i945_wm_info = { + I945_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I915_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i915_wm_info = { + I915_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I915_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i855_wm_info = { + I855GM_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I830_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i830_wm_info = { + I830_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I830_FIFO_LINE_SIZE +}; + +static const struct intel_watermark_params ironlake_display_wm_info = { + ILK_DISPLAY_FIFO, + ILK_DISPLAY_MAXWM, + ILK_DISPLAY_DFTWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_cursor_wm_info = { + ILK_CURSOR_FIFO, + ILK_CURSOR_MAXWM, + ILK_CURSOR_DFTWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_display_srwm_info = { + ILK_DISPLAY_SR_FIFO, + ILK_DISPLAY_MAX_SRWM, + ILK_DISPLAY_DFT_SRWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_cursor_srwm_info = { + ILK_CURSOR_SR_FIFO, + ILK_CURSOR_MAX_SRWM, + ILK_CURSOR_DFT_SRWM, + 2, + ILK_FIFO_LINE_SIZE +}; + +static const struct intel_watermark_params sandybridge_display_wm_info = { + SNB_DISPLAY_FIFO, + SNB_DISPLAY_MAXWM, + SNB_DISPLAY_DFTWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_cursor_wm_info = { + SNB_CURSOR_FIFO, + SNB_CURSOR_MAXWM, + SNB_CURSOR_DFTWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_display_srwm_info = { + SNB_DISPLAY_SR_FIFO, + SNB_DISPLAY_MAX_SRWM, + SNB_DISPLAY_DFT_SRWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_cursor_srwm_info = { + SNB_CURSOR_SR_FIFO, + SNB_CURSOR_MAX_SRWM, + SNB_CURSOR_DFT_SRWM, + 2, + SNB_FIFO_LINE_SIZE +}; + + +/** + * intel_calculate_wm - calculate watermark level + * @clock_in_khz: pixel clock + * @wm: chip FIFO params + * @pixel_size: display pixel size + * @latency_ns: memory latency for the platform + * + * Calculate the watermark level (the level at which the display plane will + * start fetching from memory again). Each chip has a different display + * FIFO size and allocation, so the caller needs to figure that out and pass + * in the correct intel_watermark_params structure. + * + * As the pixel clock runs, the FIFO will be drained at a rate that depends + * on the pixel size. When it reaches the watermark level, it'll start + * fetching FIFO line sized based chunks from memory until the FIFO fills + * past the watermark point. If the FIFO drains completely, a FIFO underrun + * will occur, and a display engine hang could result. + */ +static unsigned long intel_calculate_wm(unsigned long clock_in_khz, + const struct intel_watermark_params *wm, + int fifo_size, + int pixel_size, + unsigned long latency_ns) +{ + long entries_required, wm_size; + + /* + * Note: we need to make sure we don't overflow for various clock & + * latency values. + * clocks go from a few thousand to several hundred thousand. + * latency is usually a few thousand + */ + entries_required = ((clock_in_khz / 1000) * pixel_size * latency_ns) / + 1000; + entries_required = DIV_ROUND_UP(entries_required, wm->cacheline_size); + + DRM_DEBUG_KMS("FIFO entries required for mode: %ld\n", entries_required); + + wm_size = fifo_size - (entries_required + wm->guard_size); + + DRM_DEBUG_KMS("FIFO watermark level: %ld\n", wm_size); + + /* Don't promote wm_size to unsigned... */ + if (wm_size > (long)wm->max_wm) + wm_size = wm->max_wm; + if (wm_size <= 0) + wm_size = wm->default_wm; + return wm_size; +} + +static struct drm_crtc *single_enabled_crtc(struct drm_device *dev) +{ + struct drm_crtc *crtc, *enabled = NULL; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (intel_crtc_active(crtc)) { + if (enabled) + return NULL; + enabled = crtc; + } + } + + return enabled; +} + +static void pineview_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + const struct cxsr_latency *latency; + u32 reg; + unsigned long wm; + + latency = intel_get_cxsr_latency(IS_PINEVIEW_G(dev), dev_priv->is_ddr3, + dev_priv->fsb_freq, dev_priv->mem_freq); + if (!latency) { + DRM_DEBUG_KMS("Unknown FSB/MEM found, disable CxSR\n"); + pineview_disable_cxsr(dev); + return; + } + + crtc = single_enabled_crtc(dev); + if (crtc) { + int clock = crtc->mode.clock; + int pixel_size = crtc->fb->bits_per_pixel / 8; + + /* Display SR */ + wm = intel_calculate_wm(clock, &pineview_display_wm, + pineview_display_wm.fifo_size, + pixel_size, latency->display_sr); + reg = I915_READ(DSPFW1); + reg &= ~DSPFW_SR_MASK; + reg |= wm << DSPFW_SR_SHIFT; + I915_WRITE(DSPFW1, reg); + DRM_DEBUG_KMS("DSPFW1 register is %x\n", reg); + + /* cursor SR */ + wm = intel_calculate_wm(clock, &pineview_cursor_wm, + pineview_display_wm.fifo_size, + pixel_size, latency->cursor_sr); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_CURSOR_SR_MASK; + reg |= (wm & 0x3f) << DSPFW_CURSOR_SR_SHIFT; + I915_WRITE(DSPFW3, reg); + + /* Display HPLL off SR */ + wm = intel_calculate_wm(clock, &pineview_display_hplloff_wm, + pineview_display_hplloff_wm.fifo_size, + pixel_size, latency->display_hpll_disable); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_HPLL_SR_MASK; + reg |= wm & DSPFW_HPLL_SR_MASK; + I915_WRITE(DSPFW3, reg); + + /* cursor HPLL off SR */ + wm = intel_calculate_wm(clock, &pineview_cursor_hplloff_wm, + pineview_display_hplloff_wm.fifo_size, + pixel_size, latency->cursor_hpll_disable); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_HPLL_CURSOR_MASK; + reg |= (wm & 0x3f) << DSPFW_HPLL_CURSOR_SHIFT; + I915_WRITE(DSPFW3, reg); + DRM_DEBUG_KMS("DSPFW3 register is %x\n", reg); + + /* activate cxsr */ + I915_WRITE(DSPFW3, + I915_READ(DSPFW3) | PINEVIEW_SELF_REFRESH_EN); + DRM_DEBUG_KMS("Self-refresh is enabled\n"); + } else { + pineview_disable_cxsr(dev); + DRM_DEBUG_KMS("Self-refresh is disabled\n"); + } +} + +static bool g4x_compute_wm0(struct drm_device *dev, + int plane, + const struct intel_watermark_params *display, + int display_latency_ns, + const struct intel_watermark_params *cursor, + int cursor_latency_ns, + int *plane_wm, + int *cursor_wm) +{ + struct drm_crtc *crtc; + int htotal, hdisplay, clock, pixel_size; + int line_time_us, line_count; + int entries, tlb_miss; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (!intel_crtc_active(crtc)) { + *cursor_wm = cursor->guard_size; + *plane_wm = display->guard_size; + return false; + } + + htotal = crtc->mode.htotal; + hdisplay = crtc->mode.hdisplay; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + /* Use the small buffer method to calculate plane watermark */ + entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000; + tlb_miss = display->fifo_size*display->cacheline_size - hdisplay * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, display->cacheline_size); + *plane_wm = entries + display->guard_size; + if (*plane_wm > (int)display->max_wm) + *plane_wm = display->max_wm; + + /* Use the large buffer method to calculate cursor watermark */ + line_time_us = ((htotal * 1000) / clock); + line_count = (cursor_latency_ns / line_time_us + 1000) / 1000; + entries = line_count * 64 * pixel_size; + tlb_miss = cursor->fifo_size*cursor->cacheline_size - hdisplay * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + if (*cursor_wm > (int)cursor->max_wm) + *cursor_wm = (int)cursor->max_wm; + + return true; +} + +/* + * Check the wm result. + * + * If any calculated watermark values is larger than the maximum value that + * can be programmed into the associated watermark register, that watermark + * must be disabled. + */ +static bool g4x_check_srwm(struct drm_device *dev, + int display_wm, int cursor_wm, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor) +{ + DRM_DEBUG_KMS("SR watermark: display plane %d, cursor %d\n", + display_wm, cursor_wm); + + if (display_wm > display->max_wm) { + DRM_DEBUG_KMS("display watermark is too large(%d/%ld), disabling\n", + display_wm, display->max_wm); + return false; + } + + if (cursor_wm > cursor->max_wm) { + DRM_DEBUG_KMS("cursor watermark is too large(%d/%ld), disabling\n", + cursor_wm, cursor->max_wm); + return false; + } + + if (!(display_wm || cursor_wm)) { + DRM_DEBUG_KMS("SR latency is 0, disabling\n"); + return false; + } + + return true; +} + +static bool g4x_compute_srwm(struct drm_device *dev, + int plane, + int latency_ns, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor, + int *display_wm, int *cursor_wm) +{ + struct drm_crtc *crtc; + int hdisplay, htotal, pixel_size, clock; + unsigned long line_time_us; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *display_wm = *cursor_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + hdisplay = crtc->mode.hdisplay; + htotal = crtc->mode.htotal; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + line_time_us = (htotal * 1000) / clock; + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = hdisplay * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *display_wm = entries + display->guard_size; + + /* calculate the self-refresh watermark for display cursor */ + entries = line_count * pixel_size * 64; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + + return g4x_check_srwm(dev, + *display_wm, *cursor_wm, + display, cursor); +} + +static bool vlv_compute_drain_latency(struct drm_device *dev, + int plane, + int *plane_prec_mult, + int *plane_dl, + int *cursor_prec_mult, + int *cursor_dl) +{ + struct drm_crtc *crtc; + int clock, pixel_size; + int entries; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (!intel_crtc_active(crtc)) + return false; + + clock = crtc->mode.clock; /* VESA DOT Clock */ + pixel_size = crtc->fb->bits_per_pixel / 8; /* BPP */ + + entries = (clock / 1000) * pixel_size; + *plane_prec_mult = (entries > 256) ? + DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16; + *plane_dl = (64 * (*plane_prec_mult) * 4) / ((clock / 1000) * + pixel_size); + + entries = (clock / 1000) * 4; /* BPP is always 4 for cursor */ + *cursor_prec_mult = (entries > 256) ? + DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16; + *cursor_dl = (64 * (*cursor_prec_mult) * 4) / ((clock / 1000) * 4); + + return true; +} + +/* + * Update drain latency registers of memory arbiter + * + * Valleyview SoC has a new memory arbiter and needs drain latency registers + * to be programmed. Each plane has a drain latency multiplier and a drain + * latency value. + */ + +static void vlv_update_drain_latency(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_prec, planea_dl, planeb_prec, planeb_dl; + int cursora_prec, cursora_dl, cursorb_prec, cursorb_dl; + int plane_prec_mult, cursor_prec_mult; /* Precision multiplier is + either 16 or 32 */ + + /* For plane A, Cursor A */ + if (vlv_compute_drain_latency(dev, 0, &plane_prec_mult, &planea_dl, + &cursor_prec_mult, &cursora_dl)) { + cursora_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_CURSORA_PRECISION_32 : DDL_CURSORA_PRECISION_16; + planea_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_PLANEA_PRECISION_32 : DDL_PLANEA_PRECISION_16; + + I915_WRITE(VLV_DDL1, cursora_prec | + (cursora_dl << DDL_CURSORA_SHIFT) | + planea_prec | planea_dl); + } + + /* For plane B, Cursor B */ + if (vlv_compute_drain_latency(dev, 1, &plane_prec_mult, &planeb_dl, + &cursor_prec_mult, &cursorb_dl)) { + cursorb_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_CURSORB_PRECISION_32 : DDL_CURSORB_PRECISION_16; + planeb_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_PLANEB_PRECISION_32 : DDL_PLANEB_PRECISION_16; + + I915_WRITE(VLV_DDL2, cursorb_prec | + (cursorb_dl << DDL_CURSORB_SHIFT) | + planeb_prec | planeb_dl); + } +} + +#define single_plane_enabled(mask) is_power_of_2(mask) + +static void valleyview_update_wm(struct drm_device *dev) +{ + static const int sr_latency_ns = 12000; + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_wm, planeb_wm, cursora_wm, cursorb_wm; + int plane_sr, cursor_sr; + int ignore_plane_sr, ignore_cursor_sr; + unsigned int enabled = 0; + + vlv_update_drain_latency(dev); + + if (g4x_compute_wm0(dev, 0, + &valleyview_wm_info, latency_ns, + &valleyview_cursor_wm_info, latency_ns, + &planea_wm, &cursora_wm)) + enabled |= 1; + + if (g4x_compute_wm0(dev, 1, + &valleyview_wm_info, latency_ns, + &valleyview_cursor_wm_info, latency_ns, + &planeb_wm, &cursorb_wm)) + enabled |= 2; + + if (single_plane_enabled(enabled) && + g4x_compute_srwm(dev, ffs(enabled) - 1, + sr_latency_ns, + &valleyview_wm_info, + &valleyview_cursor_wm_info, + &plane_sr, &ignore_cursor_sr) && + g4x_compute_srwm(dev, ffs(enabled) - 1, + 2*sr_latency_ns, + &valleyview_wm_info, + &valleyview_cursor_wm_info, + &ignore_plane_sr, &cursor_sr)) { + I915_WRITE(FW_BLC_SELF_VLV, FW_CSPWRDWNEN); + } else { + I915_WRITE(FW_BLC_SELF_VLV, + I915_READ(FW_BLC_SELF_VLV) & ~FW_CSPWRDWNEN); + plane_sr = cursor_sr = 0; + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: plane=%d, cursor=%d, B: plane=%d, cursor=%d, SR: plane=%d, cursor=%d\n", + planea_wm, cursora_wm, + planeb_wm, cursorb_wm, + plane_sr, cursor_sr); + + I915_WRITE(DSPFW1, + (plane_sr << DSPFW_SR_SHIFT) | + (cursorb_wm << DSPFW_CURSORB_SHIFT) | + (planeb_wm << DSPFW_PLANEB_SHIFT) | + planea_wm); + I915_WRITE(DSPFW2, + (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) | + (cursora_wm << DSPFW_CURSORA_SHIFT)); + I915_WRITE(DSPFW3, + (I915_READ(DSPFW3) & ~DSPFW_CURSOR_SR_MASK) | + (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); +} + +static void g4x_update_wm(struct drm_device *dev) +{ + static const int sr_latency_ns = 12000; + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_wm, planeb_wm, cursora_wm, cursorb_wm; + int plane_sr, cursor_sr; + unsigned int enabled = 0; + + if (g4x_compute_wm0(dev, 0, + &g4x_wm_info, latency_ns, + &g4x_cursor_wm_info, latency_ns, + &planea_wm, &cursora_wm)) + enabled |= 1; + + if (g4x_compute_wm0(dev, 1, + &g4x_wm_info, latency_ns, + &g4x_cursor_wm_info, latency_ns, + &planeb_wm, &cursorb_wm)) + enabled |= 2; + + if (single_plane_enabled(enabled) && + g4x_compute_srwm(dev, ffs(enabled) - 1, + sr_latency_ns, + &g4x_wm_info, + &g4x_cursor_wm_info, + &plane_sr, &cursor_sr)) { + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); + } else { + I915_WRITE(FW_BLC_SELF, + I915_READ(FW_BLC_SELF) & ~FW_BLC_SELF_EN); + plane_sr = cursor_sr = 0; + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: plane=%d, cursor=%d, B: plane=%d, cursor=%d, SR: plane=%d, cursor=%d\n", + planea_wm, cursora_wm, + planeb_wm, cursorb_wm, + plane_sr, cursor_sr); + + I915_WRITE(DSPFW1, + (plane_sr << DSPFW_SR_SHIFT) | + (cursorb_wm << DSPFW_CURSORB_SHIFT) | + (planeb_wm << DSPFW_PLANEB_SHIFT) | + planea_wm); + I915_WRITE(DSPFW2, + (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) | + (cursora_wm << DSPFW_CURSORA_SHIFT)); + /* HPLL off in SR has some issues on G4x... disable it */ + I915_WRITE(DSPFW3, + (I915_READ(DSPFW3) & ~(DSPFW_HPLL_SR_EN | DSPFW_CURSOR_SR_MASK)) | + (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); +} + +static void i965_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + int srwm = 1; + int cursor_sr = 16; + + /* Calc sr entries for one plane configs */ + crtc = single_enabled_crtc(dev); + if (crtc) { + /* self-refresh has much higher latency */ + static const int sr_latency_ns = 12000; + int clock = crtc->mode.clock; + int htotal = crtc->mode.htotal; + int hdisplay = crtc->mode.hdisplay; + int pixel_size = crtc->fb->bits_per_pixel / 8; + unsigned long line_time_us; + int entries; + + line_time_us = ((htotal * 1000) / clock); + + /* Use ns/us then divide to preserve precision */ + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * hdisplay; + entries = DIV_ROUND_UP(entries, I915_FIFO_LINE_SIZE); + srwm = I965_FIFO_SIZE - entries; + if (srwm < 0) + srwm = 1; + srwm &= 0x1ff; + DRM_DEBUG_KMS("self-refresh entries: %d, wm: %d\n", + entries, srwm); + + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * 64; + entries = DIV_ROUND_UP(entries, + i965_cursor_wm_info.cacheline_size); + cursor_sr = i965_cursor_wm_info.fifo_size - + (entries + i965_cursor_wm_info.guard_size); + + if (cursor_sr > i965_cursor_wm_info.max_wm) + cursor_sr = i965_cursor_wm_info.max_wm; + + DRM_DEBUG_KMS("self-refresh watermark: display plane %d " + "cursor %d\n", srwm, cursor_sr); + + if (IS_CRESTLINE(dev)) + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); + } else { + /* Turn off self refresh if both pipes are enabled */ + if (IS_CRESTLINE(dev)) + I915_WRITE(FW_BLC_SELF, I915_READ(FW_BLC_SELF) + & ~FW_BLC_SELF_EN); + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: 8, B: 8, C: 8, SR %d\n", + srwm); + + /* 965 has limitations... */ + I915_WRITE(DSPFW1, (srwm << DSPFW_SR_SHIFT) | + (8 << 16) | (8 << 8) | (8 << 0)); + I915_WRITE(DSPFW2, (8 << 8) | (8 << 0)); + /* update cursor SR watermark */ + I915_WRITE(DSPFW3, (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); +} + +static void i9xx_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + const struct intel_watermark_params *wm_info; + uint32_t fwater_lo; + uint32_t fwater_hi; + int cwm, srwm = 1; + int fifo_size; + int planea_wm, planeb_wm; + struct drm_crtc *crtc, *enabled = NULL; + + if (IS_I945GM(dev)) + wm_info = &i945_wm_info; + else if (!IS_GEN2(dev)) + wm_info = &i915_wm_info; + else + wm_info = &i855_wm_info; + + fifo_size = dev_priv->display.get_fifo_size(dev, 0); + crtc = intel_get_crtc_for_plane(dev, 0); + if (intel_crtc_active(crtc)) { + int cpp = crtc->fb->bits_per_pixel / 8; + if (IS_GEN2(dev)) + cpp = 4; + + planea_wm = intel_calculate_wm(crtc->mode.clock, + wm_info, fifo_size, cpp, + latency_ns); + enabled = crtc; + } else + planea_wm = fifo_size - wm_info->guard_size; + + fifo_size = dev_priv->display.get_fifo_size(dev, 1); + crtc = intel_get_crtc_for_plane(dev, 1); + if (intel_crtc_active(crtc)) { + int cpp = crtc->fb->bits_per_pixel / 8; + if (IS_GEN2(dev)) + cpp = 4; + + planeb_wm = intel_calculate_wm(crtc->mode.clock, + wm_info, fifo_size, cpp, + latency_ns); + if (enabled == NULL) + enabled = crtc; + else + enabled = NULL; + } else + planeb_wm = fifo_size - wm_info->guard_size; + + DRM_DEBUG_KMS("FIFO watermarks - A: %d, B: %d\n", planea_wm, planeb_wm); + + /* + * Overlay gets an aggressive default since video jitter is bad. + */ + cwm = 2; + + /* Play safe and disable self-refresh before adjusting watermarks. */ + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN_MASK | 0); + else if (IS_I915GM(dev)) + I915_WRITE(INSTPM, I915_READ(INSTPM) & ~INSTPM_SELF_EN); + + /* Calc sr entries for one plane configs */ + if (HAS_FW_BLC(dev) && enabled) { + /* self-refresh has much higher latency */ + static const int sr_latency_ns = 6000; + int clock = enabled->mode.clock; + int htotal = enabled->mode.htotal; + int hdisplay = enabled->mode.hdisplay; + int pixel_size = enabled->fb->bits_per_pixel / 8; + unsigned long line_time_us; + int entries; + + line_time_us = (htotal * 1000) / clock; + + /* Use ns/us then divide to preserve precision */ + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * hdisplay; + entries = DIV_ROUND_UP(entries, wm_info->cacheline_size); + DRM_DEBUG_KMS("self-refresh entries: %d\n", entries); + srwm = wm_info->fifo_size - entries; + if (srwm < 0) + srwm = 1; + + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, + FW_BLC_SELF_FIFO_MASK | (srwm & 0xff)); + else if (IS_I915GM(dev)) + I915_WRITE(FW_BLC_SELF, srwm & 0x3f); + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d, B: %d, C: %d, SR %d\n", + planea_wm, planeb_wm, cwm, srwm); + + fwater_lo = ((planeb_wm & 0x3f) << 16) | (planea_wm & 0x3f); + fwater_hi = (cwm & 0x1f); + + /* Set request length to 8 cachelines per fetch */ + fwater_lo = fwater_lo | (1 << 24) | (1 << 8); + fwater_hi = fwater_hi | (1 << 8); + + I915_WRITE(FW_BLC, fwater_lo); + I915_WRITE(FW_BLC2, fwater_hi); + + if (HAS_FW_BLC(dev)) { + if (enabled) { + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, + FW_BLC_SELF_EN_MASK | FW_BLC_SELF_EN); + else if (IS_I915GM(dev)) + I915_WRITE(INSTPM, I915_READ(INSTPM) | INSTPM_SELF_EN); + DRM_DEBUG_KMS("memory self refresh enabled\n"); + } else + DRM_DEBUG_KMS("memory self refresh disabled\n"); + } +} + +static void i830_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + uint32_t fwater_lo; + int planea_wm; + + crtc = single_enabled_crtc(dev); + if (crtc == NULL) + return; + + planea_wm = intel_calculate_wm(crtc->mode.clock, &i830_wm_info, + dev_priv->display.get_fifo_size(dev, 0), + 4, latency_ns); + fwater_lo = I915_READ(FW_BLC) & ~0xfff; + fwater_lo |= (3<<8) | planea_wm; + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d\n", planea_wm); + + I915_WRITE(FW_BLC, fwater_lo); +} + +#define ILK_LP0_PLANE_LATENCY 700 +#define ILK_LP0_CURSOR_LATENCY 1300 + +/* + * Check the wm result. + * + * If any calculated watermark values is larger than the maximum value that + * can be programmed into the associated watermark register, that watermark + * must be disabled. + */ +static bool ironlake_check_srwm(struct drm_device *dev, int level, + int fbc_wm, int display_wm, int cursor_wm, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + DRM_DEBUG_KMS("watermark %d: display plane %d, fbc lines %d," + " cursor %d\n", level, display_wm, fbc_wm, cursor_wm); + + if (fbc_wm > SNB_FBC_MAX_SRWM) { + DRM_DEBUG_KMS("fbc watermark(%d) is too large(%d), disabling wm%d+\n", + fbc_wm, SNB_FBC_MAX_SRWM, level); + + /* fbc has it's own way to disable FBC WM */ + I915_WRITE(DISP_ARB_CTL, + I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS); + return false; + } + + if (display_wm > display->max_wm) { + DRM_DEBUG_KMS("display watermark(%d) is too large(%d), disabling wm%d+\n", + display_wm, SNB_DISPLAY_MAX_SRWM, level); + return false; + } + + if (cursor_wm > cursor->max_wm) { + DRM_DEBUG_KMS("cursor watermark(%d) is too large(%d), disabling wm%d+\n", + cursor_wm, SNB_CURSOR_MAX_SRWM, level); + return false; + } + + if (!(fbc_wm || display_wm || cursor_wm)) { + DRM_DEBUG_KMS("latency %d is 0, disabling wm%d+\n", level, level); + return false; + } + + return true; +} + +/* + * Compute watermark values of WM[1-3], + */ +static bool ironlake_compute_srwm(struct drm_device *dev, int level, int plane, + int latency_ns, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor, + int *fbc_wm, int *display_wm, int *cursor_wm) +{ + struct drm_crtc *crtc; + unsigned long line_time_us; + int hdisplay, htotal, pixel_size, clock; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *fbc_wm = *display_wm = *cursor_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + hdisplay = crtc->mode.hdisplay; + htotal = crtc->mode.htotal; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + line_time_us = (htotal * 1000) / clock; + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = hdisplay * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *display_wm = entries + display->guard_size; + + /* + * Spec says: + * FBC WM = ((Final Primary WM * 64) / number of bytes per line) + 2 + */ + *fbc_wm = DIV_ROUND_UP(*display_wm * 64, line_size) + 2; + + /* calculate the self-refresh watermark for display cursor */ + entries = line_count * pixel_size * 64; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + + return ironlake_check_srwm(dev, level, + *fbc_wm, *display_wm, *cursor_wm, + display, cursor); +} + +static void ironlake_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int fbc_wm, plane_wm, cursor_wm; + unsigned int enabled; + + enabled = 0; + if (g4x_compute_wm0(dev, 0, + &ironlake_display_wm_info, + ILK_LP0_PLANE_LATENCY, + &ironlake_cursor_wm_info, + ILK_LP0_CURSOR_LATENCY, + &plane_wm, &cursor_wm)) { + I915_WRITE(WM0_PIPEA_ILK, + (plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm); + DRM_DEBUG_KMS("FIFO watermarks For pipe A -" + " plane %d, " "cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 1; + } + + if (g4x_compute_wm0(dev, 1, + &ironlake_display_wm_info, + ILK_LP0_PLANE_LATENCY, + &ironlake_cursor_wm_info, + ILK_LP0_CURSOR_LATENCY, + &plane_wm, &cursor_wm)) { + I915_WRITE(WM0_PIPEB_ILK, + (plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm); + DRM_DEBUG_KMS("FIFO watermarks For pipe B -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 2; + } + + /* + * Calculate and update the self-refresh watermark only when one + * display plane is used. + */ + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + if (!single_plane_enabled(enabled)) + return; + enabled = ffs(enabled) - 1; + + /* WM1 */ + if (!ironlake_compute_srwm(dev, 1, enabled, + ILK_READ_WM1_LATENCY() * 500, + &ironlake_display_srwm_info, + &ironlake_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM1_LP_ILK, + WM1_LP_SR_EN | + (ILK_READ_WM1_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM2 */ + if (!ironlake_compute_srwm(dev, 2, enabled, + ILK_READ_WM2_LATENCY() * 500, + &ironlake_display_srwm_info, + &ironlake_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM2_LP_ILK, + WM2_LP_EN | + (ILK_READ_WM2_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* + * WM3 is unsupported on ILK, probably because we don't have latency + * data for that power state + */ +} + +static void sandybridge_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int latency = SNB_READ_WM0_LATENCY() * 100; /* In unit 0.1us */ + u32 val; + int fbc_wm, plane_wm, cursor_wm; + unsigned int enabled; + + enabled = 0; + if (g4x_compute_wm0(dev, 0, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEA_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEA_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe A -" + " plane %d, " "cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 1; + } + + if (g4x_compute_wm0(dev, 1, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEB_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEB_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe B -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 2; + } + + /* + * Calculate and update the self-refresh watermark only when one + * display plane is used. + * + * SNB support 3 levels of watermark. + * + * WM1/WM2/WM2 watermarks have to be enabled in the ascending order, + * and disabled in the descending order + * + */ + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + if (!single_plane_enabled(enabled) || + dev_priv->sprite_scaling_enabled) + return; + enabled = ffs(enabled) - 1; + + /* WM1 */ + if (!ironlake_compute_srwm(dev, 1, enabled, + SNB_READ_WM1_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM1_LP_ILK, + WM1_LP_SR_EN | + (SNB_READ_WM1_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM2 */ + if (!ironlake_compute_srwm(dev, 2, enabled, + SNB_READ_WM2_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM2_LP_ILK, + WM2_LP_EN | + (SNB_READ_WM2_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM3 */ + if (!ironlake_compute_srwm(dev, 3, enabled, + SNB_READ_WM3_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM3_LP_ILK, + WM3_LP_EN | + (SNB_READ_WM3_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); +} + +static void ivybridge_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int latency = SNB_READ_WM0_LATENCY() * 100; /* In unit 0.1us */ + u32 val; + int fbc_wm, plane_wm, cursor_wm; + int ignore_fbc_wm, ignore_plane_wm, ignore_cursor_wm; + unsigned int enabled; + + enabled = 0; + if (g4x_compute_wm0(dev, 0, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEA_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEA_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe A -" + " plane %d, " "cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 1; + } + + if (g4x_compute_wm0(dev, 1, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEB_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEB_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe B -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 2; + } + + if (g4x_compute_wm0(dev, 2, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEC_IVB); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEC_IVB, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe C -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 3; + } + + /* + * Calculate and update the self-refresh watermark only when one + * display plane is used. + * + * SNB support 3 levels of watermark. + * + * WM1/WM2/WM2 watermarks have to be enabled in the ascending order, + * and disabled in the descending order + * + */ + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + if (!single_plane_enabled(enabled) || + dev_priv->sprite_scaling_enabled) + return; + enabled = ffs(enabled) - 1; + + /* WM1 */ + if (!ironlake_compute_srwm(dev, 1, enabled, + SNB_READ_WM1_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM1_LP_ILK, + WM1_LP_SR_EN | + (SNB_READ_WM1_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM2 */ + if (!ironlake_compute_srwm(dev, 2, enabled, + SNB_READ_WM2_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM2_LP_ILK, + WM2_LP_EN | + (SNB_READ_WM2_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM3, note we have to correct the cursor latency */ + if (!ironlake_compute_srwm(dev, 3, enabled, + SNB_READ_WM3_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &ignore_cursor_wm) || + !ironlake_compute_srwm(dev, 3, enabled, + 2 * SNB_READ_WM3_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &ignore_fbc_wm, &ignore_plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM3_LP_ILK, + WM3_LP_EN | + (SNB_READ_WM3_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); +} + +static void +haswell_update_linetime_wm(struct drm_device *dev, int pipe, + struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 temp; + + temp = I915_READ(PIPE_WM_LINETIME(pipe)); + temp &= ~PIPE_WM_LINETIME_MASK; + + /* The WM are computed with base on how long it takes to fill a single + * row at the given clock rate, multiplied by 8. + * */ + temp |= PIPE_WM_LINETIME_TIME( + ((mode->crtc_hdisplay * 1000) / mode->clock) * 8); + + /* IPS watermarks are only used by pipe A, and are ignored by + * pipes B and C. They are calculated similarly to the common + * linetime values, except that we are using CD clock frequency + * in MHz instead of pixel rate for the division. + * + * This is a placeholder for the IPS watermark calculation code. + */ + + I915_WRITE(PIPE_WM_LINETIME(pipe), temp); +} + +static bool +sandybridge_compute_sprite_wm(struct drm_device *dev, int plane, + uint32_t sprite_width, int pixel_size, + const struct intel_watermark_params *display, + int display_latency_ns, int *sprite_wm) +{ + struct drm_crtc *crtc; + int clock; + int entries, tlb_miss; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (!intel_crtc_active(crtc)) { + *sprite_wm = display->guard_size; + return false; + } + + clock = crtc->mode.clock; + + /* Use the small buffer method to calculate the sprite watermark */ + entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000; + tlb_miss = display->fifo_size*display->cacheline_size - + sprite_width * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, display->cacheline_size); + *sprite_wm = entries + display->guard_size; + if (*sprite_wm > (int)display->max_wm) + *sprite_wm = display->max_wm; + + return true; +} + +static bool +sandybridge_compute_sprite_srwm(struct drm_device *dev, int plane, + uint32_t sprite_width, int pixel_size, + const struct intel_watermark_params *display, + int latency_ns, int *sprite_wm) +{ + struct drm_crtc *crtc; + unsigned long line_time_us; + int clock; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *sprite_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + clock = crtc->mode.clock; + if (!clock) { + *sprite_wm = 0; + return false; + } + + line_time_us = (sprite_width * 1000) / clock; + if (!line_time_us) { + *sprite_wm = 0; + return false; + } + + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = sprite_width * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *sprite_wm = entries + display->guard_size; + + return *sprite_wm > 0x3ff ? false : true; +} + +static void sandybridge_update_sprite_wm(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int latency = SNB_READ_WM0_LATENCY() * 100; /* In unit 0.1us */ + u32 val; + int sprite_wm, reg; + int ret; + + switch (pipe) { + case 0: + reg = WM0_PIPEA_ILK; + break; + case 1: + reg = WM0_PIPEB_ILK; + break; + case 2: + reg = WM0_PIPEC_IVB; + break; + default: + return; /* bad pipe */ + } + + ret = sandybridge_compute_sprite_wm(dev, pipe, sprite_width, pixel_size, + &sandybridge_display_wm_info, + latency, &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite wm for pipe %d\n", + pipe); + return; + } + + val = I915_READ(reg); + val &= ~WM0_PIPE_SPRITE_MASK; + I915_WRITE(reg, val | (sprite_wm << WM0_PIPE_SPRITE_SHIFT)); + DRM_DEBUG_KMS("sprite watermarks For pipe %d - %d\n", pipe, sprite_wm); + + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM1_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp1 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM1S_LP_ILK, sprite_wm); + + /* Only IVB has two more LP watermarks for sprite */ + if (!IS_IVYBRIDGE(dev)) + return; + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM2_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp2 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM2S_LP_IVB, sprite_wm); + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM3_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp3 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM3S_LP_IVB, sprite_wm); +} + +/** + * intel_update_watermarks - update FIFO watermark values based on current modes + * + * Calculate watermark values for the various WM regs based on current mode + * and plane configuration. + * + * There are several cases to deal with here: + * - normal (i.e. non-self-refresh) + * - self-refresh (SR) mode + * - lines are large relative to FIFO size (buffer can hold up to 2) + * - lines are small relative to FIFO size (buffer can hold more than 2 + * lines), so need to account for TLB latency + * + * The normal calculation is: + * watermark = dotclock * bytes per pixel * latency + * where latency is platform & configuration dependent (we assume pessimal + * values here). + * + * The SR calculation is: + * watermark = (trunc(latency/line time)+1) * surface width * + * bytes per pixel + * where + * line time = htotal / dotclock + * surface width = hdisplay for normal plane and 64 for cursor + * and latency is assumed to be high, as above. + * + * The final value programmed to the register should always be rounded up, + * and include an extra 2 entries to account for clock crossings. + * + * We don't use the sprite, so we can ignore that. And on Crestline we have + * to set the non-SR watermarks to 8. + */ +void intel_update_watermarks(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_wm) + dev_priv->display.update_wm(dev); +} + +void intel_update_linetime_watermarks(struct drm_device *dev, + int pipe, struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_linetime_wm) + dev_priv->display.update_linetime_wm(dev, pipe, mode); +} + +void intel_update_sprite_watermarks(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_sprite_wm) + dev_priv->display.update_sprite_wm(dev, pipe, sprite_width, + pixel_size); +} + +static struct drm_i915_gem_object * +intel_alloc_context_page(struct drm_device *dev) +{ + struct drm_i915_gem_object *ctx; + int ret; + + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + + ctx = i915_gem_alloc_object(dev, 4096); + if (!ctx) { + DRM_DEBUG("failed to alloc power context, RC6 disabled\n"); + return NULL; + } + + ret = i915_gem_object_pin(ctx, 4096, true, false); + if (ret) { + DRM_ERROR("failed to pin power context: %d\n", ret); + goto err_unref; + } + + ret = i915_gem_object_set_to_gtt_domain(ctx, 1); + if (ret) { + DRM_ERROR("failed to set-domain on power context: %d\n", ret); + goto err_unpin; + } + + return ctx; + +err_unpin: + i915_gem_object_unpin(ctx); +err_unref: + drm_gem_object_unreference(&ctx->base); + mutex_unlock(&dev->struct_mutex); + return NULL; +} + +/** + * Lock protecting IPS related data structures + */ +DEFINE_SPINLOCK(mchdev_lock); + +/* Global for IPS driver to get at the current i915 device. Protected by + * mchdev_lock. */ +static struct drm_i915_private *i915_mch_dev; + +bool ironlake_set_drps(struct drm_device *dev, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 rgvswctl; + + assert_spin_locked(&mchdev_lock); + + rgvswctl = I915_READ16(MEMSWCTL); + if (rgvswctl & MEMCTL_CMD_STS) { + DRM_DEBUG("gpu busy, RCS change rejected\n"); + return false; /* still busy with another command */ + } + + rgvswctl = (MEMCTL_CMD_CHFREQ << MEMCTL_CMD_SHIFT) | + (val << MEMCTL_FREQ_SHIFT) | MEMCTL_SFCAVM; + I915_WRITE16(MEMSWCTL, rgvswctl); + POSTING_READ16(MEMSWCTL); + + rgvswctl |= MEMCTL_CMD_STS; + I915_WRITE16(MEMSWCTL, rgvswctl); + + return true; +} + +static void ironlake_enable_drps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 rgvmodectl = I915_READ(MEMMODECTL); + u8 fmax, fmin, fstart, vstart; + + spin_lock_irq(&mchdev_lock); + + /* Enable temp reporting */ + I915_WRITE16(PMMISC, I915_READ(PMMISC) | MCPPCE_EN); + I915_WRITE16(TSC1, I915_READ(TSC1) | TSE); + + /* 100ms RC evaluation intervals */ + I915_WRITE(RCUPEI, 100000); + I915_WRITE(RCDNEI, 100000); + + /* Set max/min thresholds to 90ms and 80ms respectively */ + I915_WRITE(RCBMAXAVG, 90000); + I915_WRITE(RCBMINAVG, 80000); + + I915_WRITE(MEMIHYST, 1); + + /* Set up min, max, and cur for interrupt handling */ + fmax = (rgvmodectl & MEMMODE_FMAX_MASK) >> MEMMODE_FMAX_SHIFT; + fmin = (rgvmodectl & MEMMODE_FMIN_MASK); + fstart = (rgvmodectl & MEMMODE_FSTART_MASK) >> + MEMMODE_FSTART_SHIFT; + + vstart = (I915_READ(PXVFREQ_BASE + (fstart * 4)) & PXVFREQ_PX_MASK) >> + PXVFREQ_PX_SHIFT; + + dev_priv->ips.fmax = fmax; /* IPS callback will increase this */ + dev_priv->ips.fstart = fstart; + + dev_priv->ips.max_delay = fstart; + dev_priv->ips.min_delay = fmin; + dev_priv->ips.cur_delay = fstart; + + DRM_DEBUG_DRIVER("fmax: %d, fmin: %d, fstart: %d\n", + fmax, fmin, fstart); + + I915_WRITE(MEMINTREN, MEMINT_CX_SUPR_EN | MEMINT_EVAL_CHG_EN); + + /* + * Interrupts will be enabled in ironlake_irq_postinstall + */ + + I915_WRITE(VIDSTART, vstart); + POSTING_READ(VIDSTART); + + rgvmodectl |= MEMMODE_SWMODE_EN; + I915_WRITE(MEMMODECTL, rgvmodectl); + + if (wait_for_atomic((I915_READ(MEMSWCTL) & MEMCTL_CMD_STS) == 0, 10)) + DRM_ERROR("stuck trying to change perf mode\n"); + mdelay(1); + + ironlake_set_drps(dev, fstart); + + dev_priv->ips.last_count1 = I915_READ(0x112e4) + I915_READ(0x112e8) + + I915_READ(0x112e0); + dev_priv->ips.last_time1 = jiffies_to_msecs(jiffies); + dev_priv->ips.last_count2 = I915_READ(0x112f4); + getrawmonotonic(&dev_priv->ips.last_time2); + + spin_unlock_irq(&mchdev_lock); +} + +static void ironlake_disable_drps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 rgvswctl; + + spin_lock_irq(&mchdev_lock); + + rgvswctl = I915_READ16(MEMSWCTL); + + /* Ack interrupts, disable EFC interrupt */ + I915_WRITE(MEMINTREN, I915_READ(MEMINTREN) & ~MEMINT_EVAL_CHG_EN); + I915_WRITE(MEMINTRSTS, MEMINT_EVAL_CHG); + I915_WRITE(DEIER, I915_READ(DEIER) & ~DE_PCU_EVENT); + I915_WRITE(DEIIR, DE_PCU_EVENT); + I915_WRITE(DEIMR, I915_READ(DEIMR) | DE_PCU_EVENT); + + /* Go back to the starting frequency */ + ironlake_set_drps(dev, dev_priv->ips.fstart); + mdelay(1); + rgvswctl |= MEMCTL_CMD_STS; + I915_WRITE(MEMSWCTL, rgvswctl); + mdelay(1); + + spin_unlock_irq(&mchdev_lock); +} + +/* There's a funny hw issue where the hw returns all 0 when reading from + * GEN6_RP_INTERRUPT_LIMITS. Hence we always need to compute the desired value + * ourselves, instead of doing a rmw cycle (which might result in us clearing + * all limits and the gpu stuck at whatever frequency it is at atm). + */ +static u32 gen6_rps_limits(struct drm_i915_private *dev_priv, u8 *val) +{ + u32 limits; + + limits = 0; + + if (*val >= dev_priv->rps.max_delay) + *val = dev_priv->rps.max_delay; + limits |= dev_priv->rps.max_delay << 24; + + /* Only set the down limit when we've reached the lowest level to avoid + * getting more interrupts, otherwise leave this clear. This prevents a + * race in the hw when coming out of rc6: There's a tiny window where + * the hw runs at the minimal clock before selecting the desired + * frequency, if the down threshold expires in that window we will not + * receive a down interrupt. */ + if (*val <= dev_priv->rps.min_delay) { + *val = dev_priv->rps.min_delay; + limits |= dev_priv->rps.min_delay << 16; + } + + return limits; +} + +void gen6_set_rps(struct drm_device *dev, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 limits = gen6_rps_limits(dev_priv, &val); + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + WARN_ON(val > dev_priv->rps.max_delay); + WARN_ON(val < dev_priv->rps.min_delay); + + if (val == dev_priv->rps.cur_delay) + return; + + I915_WRITE(GEN6_RPNSWREQ, + GEN6_FREQUENCY(val) | + GEN6_OFFSET(0) | + GEN6_AGGRESSIVE_TURBO); + + /* Make sure we continue to get interrupts + * until we hit the minimum or maximum frequencies. + */ + I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, limits); + + POSTING_READ(GEN6_RPNSWREQ); + + dev_priv->rps.cur_delay = val; + + trace_intel_gpu_freq_change(val * 50); +} + +static void gen6_disable_rps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(GEN6_RC_CONTROL, 0); + I915_WRITE(GEN6_RPNSWREQ, 1 << 31); + I915_WRITE(GEN6_PMINTRMSK, 0xffffffff); + I915_WRITE(GEN6_PMIER, 0); + /* Complete PM interrupt masking here doesn't race with the rps work + * item again unmasking PM interrupts because that is using a different + * register (PMIMR) to mask PM interrupts. The only risk is in leaving + * stale bits in PMIIR and PMIMR which gen6_enable_rps will clean up. */ + + spin_lock_irq(&dev_priv->rps.lock); + dev_priv->rps.pm_iir = 0; + spin_unlock_irq(&dev_priv->rps.lock); + + I915_WRITE(GEN6_PMIIR, I915_READ(GEN6_PMIIR)); +} + +int intel_enable_rc6(const struct drm_device *dev) +{ + /* Respect the kernel parameter if it is set */ + if (i915_enable_rc6 >= 0) + return i915_enable_rc6; + + /* Disable RC6 on Ironlake */ + if (INTEL_INFO(dev)->gen == 5) + return 0; + + if (IS_HASWELL(dev)) { + DRM_DEBUG_DRIVER("Haswell: only RC6 available\n"); + return INTEL_RC6_ENABLE; + } + + /* snb/ivb have more than one rc6 state. */ + if (INTEL_INFO(dev)->gen == 6) { + DRM_DEBUG_DRIVER("Sandybridge: deep RC6 disabled\n"); + return INTEL_RC6_ENABLE; + } + + DRM_DEBUG_DRIVER("RC6 and deep RC6 enabled\n"); + return (INTEL_RC6_ENABLE | INTEL_RC6p_ENABLE); +} + +static void gen6_enable_rps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + u32 rp_state_cap; + u32 gt_perf_status; + u32 rc6vids, pcu_mbox, rc6_mask = 0; + u32 gtfifodbg; + int rc6_mode; + int i, ret; + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + /* Here begins a magic sequence of register writes to enable + * auto-downclocking. + * + * Perhaps there might be some value in exposing these to + * userspace... + */ + I915_WRITE(GEN6_RC_STATE, 0); + + /* Clear the DBG now so we don't confuse earlier errors */ + if ((gtfifodbg = I915_READ(GTFIFODBG))) { + DRM_ERROR("GT fifo had a previous error %x\n", gtfifodbg); + I915_WRITE(GTFIFODBG, gtfifodbg); + } + + gen6_gt_force_wake_get(dev_priv); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); + + /* In units of 100MHz */ + dev_priv->rps.max_delay = rp_state_cap & 0xff; + dev_priv->rps.min_delay = (rp_state_cap & 0xff0000) >> 16; + dev_priv->rps.cur_delay = 0; + + /* disable the counters and set deterministic thresholds */ + I915_WRITE(GEN6_RC_CONTROL, 0); + + I915_WRITE(GEN6_RC1_WAKE_RATE_LIMIT, 1000 << 16); + I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 40 << 16 | 30); + I915_WRITE(GEN6_RC6pp_WAKE_RATE_LIMIT, 30); + I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000); + I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25); + + for_each_ring(ring, dev_priv, i) + I915_WRITE(RING_MAX_IDLE(ring->mmio_base), 10); + + I915_WRITE(GEN6_RC_SLEEP, 0); + I915_WRITE(GEN6_RC1e_THRESHOLD, 1000); + I915_WRITE(GEN6_RC6_THRESHOLD, 50000); + I915_WRITE(GEN6_RC6p_THRESHOLD, 150000); + I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ + + /* Check if we are enabling RC6 */ + rc6_mode = intel_enable_rc6(dev_priv->dev); + if (rc6_mode & INTEL_RC6_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6_ENABLE; + + /* We don't use those on Haswell */ + if (!IS_HASWELL(dev)) { + if (rc6_mode & INTEL_RC6p_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; + + if (rc6_mode & INTEL_RC6pp_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + } + + DRM_INFO("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n", + (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off"); + + I915_WRITE(GEN6_RC_CONTROL, + rc6_mask | + GEN6_RC_CTL_EI_MODE(1) | + GEN6_RC_CTL_HW_ENABLE); + + I915_WRITE(GEN6_RPNSWREQ, + GEN6_FREQUENCY(10) | + GEN6_OFFSET(0) | + GEN6_AGGRESSIVE_TURBO); + I915_WRITE(GEN6_RC_VIDEO_FREQ, + GEN6_FREQUENCY(12)); + + I915_WRITE(GEN6_RP_DOWN_TIMEOUT, 1000000); + I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, + dev_priv->rps.max_delay << 24 | + dev_priv->rps.min_delay << 16); + + I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000); + I915_WRITE(GEN6_RP_UP_EI, 66000); + I915_WRITE(GEN6_RP_DOWN_EI, 350000); + + I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); + I915_WRITE(GEN6_RP_CONTROL, + GEN6_RP_MEDIA_TURBO | + GEN6_RP_MEDIA_HW_NORMAL_MODE | + GEN6_RP_MEDIA_IS_GFX | + GEN6_RP_ENABLE | + GEN6_RP_UP_BUSY_AVG | + (IS_HASWELL(dev) ? GEN7_RP_DOWN_IDLE_AVG : GEN6_RP_DOWN_IDLE_CONT)); + + ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_MIN_FREQ_TABLE, 0); + if (!ret) { + pcu_mbox = 0; + ret = sandybridge_pcode_read(dev_priv, GEN6_READ_OC_PARAMS, &pcu_mbox); + if (ret && pcu_mbox & (1<<31)) { /* OC supported */ + dev_priv->rps.max_delay = pcu_mbox & 0xff; + DRM_DEBUG_DRIVER("overclocking supported, adjusting frequency max to %dMHz\n", pcu_mbox * 50); + } + } else { + DRM_DEBUG_DRIVER("Failed to set the min frequency\n"); + } + + gen6_set_rps(dev_priv->dev, (gt_perf_status & 0xff00) >> 8); + + /* requires MSI enabled */ + I915_WRITE(GEN6_PMIER, GEN6_PM_DEFERRED_EVENTS); + spin_lock_irq(&dev_priv->rps.lock); + WARN_ON(dev_priv->rps.pm_iir != 0); + I915_WRITE(GEN6_PMIMR, 0); + spin_unlock_irq(&dev_priv->rps.lock); + /* enable all PM interrupts */ + I915_WRITE(GEN6_PMINTRMSK, 0); + + rc6vids = 0; + ret = sandybridge_pcode_read(dev_priv, GEN6_PCODE_READ_RC6VIDS, &rc6vids); + if (IS_GEN6(dev) && ret) { + DRM_DEBUG_DRIVER("Couldn't check for BIOS workaround\n"); + } else if (IS_GEN6(dev) && (GEN6_DECODE_RC6_VID(rc6vids & 0xff) < 450)) { + DRM_DEBUG_DRIVER("You should update your BIOS. Correcting minimum rc6 voltage (%dmV->%dmV)\n", + GEN6_DECODE_RC6_VID(rc6vids & 0xff), 450); + rc6vids &= 0xffff00; + rc6vids |= GEN6_ENCODE_RC6_VID(450); + ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_RC6VIDS, rc6vids); + if (ret) + DRM_ERROR("Couldn't fix incorrect rc6 voltage\n"); + } + + gen6_gt_force_wake_put(dev_priv); +} + +static void gen6_update_ring_freq(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int min_freq = 15; + int gpu_freq; + unsigned int ia_freq, max_ia_freq; + int scaling_factor = 180; + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + max_ia_freq = cpufreq_quick_get_max(0); + /* + * Default to measured freq if none found, PCU will ensure we don't go + * over + */ + if (!max_ia_freq) + max_ia_freq = tsc_khz; + + /* Convert from kHz to MHz */ + max_ia_freq /= 1000; + + /* + * For each potential GPU frequency, load a ring frequency we'd like + * to use for memory access. We do this by specifying the IA frequency + * the PCU should use as a reference to determine the ring frequency. + */ + for (gpu_freq = dev_priv->rps.max_delay; gpu_freq >= dev_priv->rps.min_delay; + gpu_freq--) { + int diff = dev_priv->rps.max_delay - gpu_freq; + + /* + * For GPU frequencies less than 750MHz, just use the lowest + * ring freq. + */ + if (gpu_freq < min_freq) + ia_freq = 800; + else + ia_freq = max_ia_freq - ((diff * scaling_factor) / 2); + ia_freq = DIV_ROUND_CLOSEST(ia_freq, 100); + ia_freq <<= GEN6_PCODE_FREQ_IA_RATIO_SHIFT; + + sandybridge_pcode_write(dev_priv, + GEN6_PCODE_WRITE_MIN_FREQ_TABLE, + ia_freq | gpu_freq); + } +} + +void ironlake_teardown_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->ips.renderctx) { + i915_gem_object_unpin(dev_priv->ips.renderctx); + drm_gem_object_unreference(&dev_priv->ips.renderctx->base); + dev_priv->ips.renderctx = NULL; + } + + if (dev_priv->ips.pwrctx) { + i915_gem_object_unpin(dev_priv->ips.pwrctx); + drm_gem_object_unreference(&dev_priv->ips.pwrctx->base); + dev_priv->ips.pwrctx = NULL; + } +} + +static void ironlake_disable_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (I915_READ(PWRCTXA)) { + /* Wake the GPU, prevent RC6, then restore RSTDBYCTL */ + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) | RCX_SW_EXIT); + wait_for(((I915_READ(RSTDBYCTL) & RSX_STATUS_MASK) == RSX_STATUS_ON), + 50); + + I915_WRITE(PWRCTXA, 0); + POSTING_READ(PWRCTXA); + + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT); + POSTING_READ(RSTDBYCTL); + } +} + +static int ironlake_setup_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->ips.renderctx == NULL) + dev_priv->ips.renderctx = intel_alloc_context_page(dev); + if (!dev_priv->ips.renderctx) + return -ENOMEM; + + if (dev_priv->ips.pwrctx == NULL) + dev_priv->ips.pwrctx = intel_alloc_context_page(dev); + if (!dev_priv->ips.pwrctx) { + ironlake_teardown_rc6(dev); + return -ENOMEM; + } + + return 0; +} + +static void ironlake_enable_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + bool was_interruptible; + int ret; + + /* rc6 disabled by default due to repeated reports of hanging during + * boot and resume. + */ + if (!intel_enable_rc6(dev)) + return; + + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + + ret = ironlake_setup_rc6(dev); + if (ret) + return; + + was_interruptible = dev_priv->mm.interruptible; + dev_priv->mm.interruptible = false; + + /* + * GPU can automatically power down the render unit if given a page + * to save state. + */ + ret = intel_ring_begin(ring, 6); + if (ret) { + ironlake_teardown_rc6(dev); + dev_priv->mm.interruptible = was_interruptible; + return; + } + + intel_ring_emit(ring, MI_SUSPEND_FLUSH | MI_SUSPEND_FLUSH_EN); + intel_ring_emit(ring, MI_SET_CONTEXT); + intel_ring_emit(ring, dev_priv->ips.renderctx->gtt_offset | + MI_MM_SPACE_GTT | + MI_SAVE_EXT_STATE_EN | + MI_RESTORE_EXT_STATE_EN | + MI_RESTORE_INHIBIT); + intel_ring_emit(ring, MI_SUSPEND_FLUSH); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_FLUSH); + intel_ring_advance(ring); + + /* + * Wait for the command parser to advance past MI_SET_CONTEXT. The HW + * does an implicit flush, combined with MI_FLUSH above, it should be + * safe to assume that renderctx is valid + */ + ret = intel_ring_idle(ring); + dev_priv->mm.interruptible = was_interruptible; + if (ret) { + DRM_ERROR("failed to enable ironlake power power savings\n"); + ironlake_teardown_rc6(dev); + return; + } + + I915_WRITE(PWRCTXA, dev_priv->ips.pwrctx->gtt_offset | PWRCTX_EN); + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT); +} + +static unsigned long intel_pxfreq(u32 vidfreq) +{ + unsigned long freq; + int div = (vidfreq & 0x3f0000) >> 16; + int post = (vidfreq & 0x3000) >> 12; + int pre = (vidfreq & 0x7); + + if (!pre) + return 0; + + freq = ((div * 133333) / ((1<ips.last_time1; + + /* Prevent division-by-zero if we are asking too fast. + * Also, we don't get interesting results if we are polling + * faster than once in 10ms, so just return the saved value + * in such cases. + */ + if (diff1 <= 10) + return dev_priv->ips.chipset_power; + + count1 = I915_READ(DMIEC); + count2 = I915_READ(DDREC); + count3 = I915_READ(CSIEC); + + total_count = count1 + count2 + count3; + + /* FIXME: handle per-counter overflow */ + if (total_count < dev_priv->ips.last_count1) { + diff = ~0UL - dev_priv->ips.last_count1; + diff += total_count; + } else { + diff = total_count - dev_priv->ips.last_count1; + } + + for (i = 0; i < ARRAY_SIZE(cparams); i++) { + if (cparams[i].i == dev_priv->ips.c_m && + cparams[i].t == dev_priv->ips.r_t) { + m = cparams[i].m; + c = cparams[i].c; + break; + } + } + + diff = div_u64(diff, diff1); + ret = ((m * diff) + c); + ret = div_u64(ret, 10); + + dev_priv->ips.last_count1 = total_count; + dev_priv->ips.last_time1 = now; + + dev_priv->ips.chipset_power = ret; + + return ret; +} + +unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) +{ + unsigned long val; + + if (dev_priv->info->gen != 5) + return 0; + + spin_lock_irq(&mchdev_lock); + + val = __i915_chipset_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); + + return val; +} + +unsigned long i915_mch_val(struct drm_i915_private *dev_priv) +{ + unsigned long m, x, b; + u32 tsfs; + + tsfs = I915_READ(TSFS); + + m = ((tsfs & TSFS_SLOPE_MASK) >> TSFS_SLOPE_SHIFT); + x = I915_READ8(TR1); + + b = tsfs & TSFS_INTR_MASK; + + return ((m * x) / 127) - b; +} + +static u16 pvid_to_extvid(struct drm_i915_private *dev_priv, u8 pxvid) +{ + static const struct v_table { + u16 vd; /* in .1 mil */ + u16 vm; /* in .1 mil */ + } v_table[] = { + { 0, 0, }, + { 375, 0, }, + { 500, 0, }, + { 625, 0, }, + { 750, 0, }, + { 875, 0, }, + { 1000, 0, }, + { 1125, 0, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4250, 3125, }, + { 4375, 3250, }, + { 4500, 3375, }, + { 4625, 3500, }, + { 4750, 3625, }, + { 4875, 3750, }, + { 5000, 3875, }, + { 5125, 4000, }, + { 5250, 4125, }, + { 5375, 4250, }, + { 5500, 4375, }, + { 5625, 4500, }, + { 5750, 4625, }, + { 5875, 4750, }, + { 6000, 4875, }, + { 6125, 5000, }, + { 6250, 5125, }, + { 6375, 5250, }, + { 6500, 5375, }, + { 6625, 5500, }, + { 6750, 5625, }, + { 6875, 5750, }, + { 7000, 5875, }, + { 7125, 6000, }, + { 7250, 6125, }, + { 7375, 6250, }, + { 7500, 6375, }, + { 7625, 6500, }, + { 7750, 6625, }, + { 7875, 6750, }, + { 8000, 6875, }, + { 8125, 7000, }, + { 8250, 7125, }, + { 8375, 7250, }, + { 8500, 7375, }, + { 8625, 7500, }, + { 8750, 7625, }, + { 8875, 7750, }, + { 9000, 7875, }, + { 9125, 8000, }, + { 9250, 8125, }, + { 9375, 8250, }, + { 9500, 8375, }, + { 9625, 8500, }, + { 9750, 8625, }, + { 9875, 8750, }, + { 10000, 8875, }, + { 10125, 9000, }, + { 10250, 9125, }, + { 10375, 9250, }, + { 10500, 9375, }, + { 10625, 9500, }, + { 10750, 9625, }, + { 10875, 9750, }, + { 11000, 9875, }, + { 11125, 10000, }, + { 11250, 10125, }, + { 11375, 10250, }, + { 11500, 10375, }, + { 11625, 10500, }, + { 11750, 10625, }, + { 11875, 10750, }, + { 12000, 10875, }, + { 12125, 11000, }, + { 12250, 11125, }, + { 12375, 11250, }, + { 12500, 11375, }, + { 12625, 11500, }, + { 12750, 11625, }, + { 12875, 11750, }, + { 13000, 11875, }, + { 13125, 12000, }, + { 13250, 12125, }, + { 13375, 12250, }, + { 13500, 12375, }, + { 13625, 12500, }, + { 13750, 12625, }, + { 13875, 12750, }, + { 14000, 12875, }, + { 14125, 13000, }, + { 14250, 13125, }, + { 14375, 13250, }, + { 14500, 13375, }, + { 14625, 13500, }, + { 14750, 13625, }, + { 14875, 13750, }, + { 15000, 13875, }, + { 15125, 14000, }, + { 15250, 14125, }, + { 15375, 14250, }, + { 15500, 14375, }, + { 15625, 14500, }, + { 15750, 14625, }, + { 15875, 14750, }, + { 16000, 14875, }, + { 16125, 15000, }, + }; + if (dev_priv->info->is_mobile) + return v_table[pxvid].vm; + else + return v_table[pxvid].vd; +} + +static void __i915_update_gfx_val(struct drm_i915_private *dev_priv) +{ + struct timespec now, diff1; + u64 diff; + unsigned long diffms; + u32 count; + + assert_spin_locked(&mchdev_lock); + + getrawmonotonic(&now); + diff1 = timespec_sub(now, dev_priv->ips.last_time2); + + /* Don't divide by 0 */ + diffms = diff1.tv_sec * 1000 + diff1.tv_nsec / 1000000; + if (!diffms) + return; + + count = I915_READ(GFXEC); + + if (count < dev_priv->ips.last_count2) { + diff = ~0UL - dev_priv->ips.last_count2; + diff += count; + } else { + diff = count - dev_priv->ips.last_count2; + } + + dev_priv->ips.last_count2 = count; + dev_priv->ips.last_time2 = now; + + /* More magic constants... */ + diff = diff * 1181; + diff = div_u64(diff, diffms * 10); + dev_priv->ips.gfx_power = diff; +} + +void i915_update_gfx_val(struct drm_i915_private *dev_priv) +{ + if (dev_priv->info->gen != 5) + return; + + spin_lock_irq(&mchdev_lock); + + __i915_update_gfx_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); +} + +static unsigned long __i915_gfx_val(struct drm_i915_private *dev_priv) +{ + unsigned long t, corr, state1, corr2, state2; + u32 pxvid, ext_v; + + assert_spin_locked(&mchdev_lock); + + pxvid = I915_READ(PXVFREQ_BASE + (dev_priv->rps.cur_delay * 4)); + pxvid = (pxvid >> 24) & 0x7f; + ext_v = pvid_to_extvid(dev_priv, pxvid); + + state1 = ext_v; + + t = i915_mch_val(dev_priv); + + /* Revel in the empirically derived constants */ + + /* Correction factor in 1/100000 units */ + if (t > 80) + corr = ((t * 2349) + 135940); + else if (t >= 50) + corr = ((t * 964) + 29317); + else /* < 50 */ + corr = ((t * 301) + 1004); + + corr = corr * ((150142 * state1) / 10000 - 78642); + corr /= 100000; + corr2 = (corr * dev_priv->ips.corr); + + state2 = (corr2 * state1) / 10000; + state2 /= 100; /* convert to mW */ + + __i915_update_gfx_val(dev_priv); + + return dev_priv->ips.gfx_power + state2; +} + +unsigned long i915_gfx_val(struct drm_i915_private *dev_priv) +{ + unsigned long val; + + if (dev_priv->info->gen != 5) + return 0; + + spin_lock_irq(&mchdev_lock); + + val = __i915_gfx_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); + + return val; +} + +/** + * i915_read_mch_val - return value for IPS use + * + * Calculate and return a value for the IPS driver to use when deciding whether + * we have thermal and power headroom to increase CPU or GPU power budget. + */ +unsigned long i915_read_mch_val(void) +{ + struct drm_i915_private *dev_priv; + unsigned long chipset_val, graphics_val, ret = 0; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) + goto out_unlock; + dev_priv = i915_mch_dev; + + chipset_val = __i915_chipset_val(dev_priv); + graphics_val = __i915_gfx_val(dev_priv); + + ret = chipset_val + graphics_val; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_read_mch_val); + +/** + * i915_gpu_raise - raise GPU frequency limit + * + * Raise the limit; IPS indicates we have thermal headroom. + */ +bool i915_gpu_raise(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + if (dev_priv->ips.max_delay > dev_priv->ips.fmax) + dev_priv->ips.max_delay--; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_gpu_raise); + +/** + * i915_gpu_lower - lower GPU frequency limit + * + * IPS indicates we're close to a thermal limit, so throttle back the GPU + * frequency maximum. + */ +bool i915_gpu_lower(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + if (dev_priv->ips.max_delay < dev_priv->ips.min_delay) + dev_priv->ips.max_delay++; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_gpu_lower); + +/** + * i915_gpu_busy - indicate GPU business to IPS + * + * Tell the IPS driver whether or not the GPU is busy. + */ +bool i915_gpu_busy(void) +{ + struct drm_i915_private *dev_priv; + struct intel_ring_buffer *ring; + bool ret = false; + int i; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) + goto out_unlock; + dev_priv = i915_mch_dev; + + for_each_ring(ring, dev_priv, i) + ret |= !list_empty(&ring->request_list); + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_gpu_busy); + +/** + * i915_gpu_turbo_disable - disable graphics turbo + * + * Disable graphics turbo by resetting the max frequency and setting the + * current frequency to the default. + */ +bool i915_gpu_turbo_disable(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + dev_priv->ips.max_delay = dev_priv->ips.fstart; + + if (!ironlake_set_drps(dev_priv->dev, dev_priv->ips.fstart)) + ret = false; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_gpu_turbo_disable); + +/** + * Tells the intel_ips driver that the i915 driver is now loaded, if + * IPS got loaded first. + * + * This awkward dance is so that neither module has to depend on the + * other in order for IPS to do the appropriate communication of + * GPU turbo limits to i915. + */ +static void +ips_ping_for_i915_load(void) +{ + void (*link)(void); + + link = symbol_get(ips_link_to_i915_driver); + if (link) { + link(); + symbol_put(ips_link_to_i915_driver); + } +} + +void intel_gpu_ips_init(struct drm_i915_private *dev_priv) +{ + /* We only register the i915 ips part with intel-ips once everything is + * set up, to avoid intel-ips sneaking in and reading bogus values. */ + spin_lock_irq(&mchdev_lock); + i915_mch_dev = dev_priv; + spin_unlock_irq(&mchdev_lock); + + ips_ping_for_i915_load(); +} + +void intel_gpu_ips_teardown(void) +{ + spin_lock_irq(&mchdev_lock); + i915_mch_dev = NULL; + spin_unlock_irq(&mchdev_lock); +} +static void intel_init_emon(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 lcfuse; + u8 pxw[16]; + int i; + + /* Disable to program */ + I915_WRITE(ECR, 0); + POSTING_READ(ECR); + + /* Program energy weights for various events */ + I915_WRITE(SDEW, 0x15040d00); + I915_WRITE(CSIEW0, 0x007f0000); + I915_WRITE(CSIEW1, 0x1e220004); + I915_WRITE(CSIEW2, 0x04000004); + + for (i = 0; i < 5; i++) + I915_WRITE(PEW + (i * 4), 0); + for (i = 0; i < 3; i++) + I915_WRITE(DEW + (i * 4), 0); + + /* Program P-state weights to account for frequency power adjustment */ + for (i = 0; i < 16; i++) { + u32 pxvidfreq = I915_READ(PXVFREQ_BASE + (i * 4)); + unsigned long freq = intel_pxfreq(pxvidfreq); + unsigned long vid = (pxvidfreq & PXVFREQ_PX_MASK) >> + PXVFREQ_PX_SHIFT; + unsigned long val; + + val = vid * vid; + val *= (freq / 1000); + val *= 255; + val /= (127*127*900); + if (val > 0xff) + DRM_ERROR("bad pxval: %ld\n", val); + pxw[i] = val; + } + /* Render standby states get 0 weight */ + pxw[14] = 0; + pxw[15] = 0; + + for (i = 0; i < 4; i++) { + u32 val = (pxw[i*4] << 24) | (pxw[(i*4)+1] << 16) | + (pxw[(i*4)+2] << 8) | (pxw[(i*4)+3]); + I915_WRITE(PXW + (i * 4), val); + } + + /* Adjust magic regs to magic values (more experimental results) */ + I915_WRITE(OGW0, 0); + I915_WRITE(OGW1, 0); + I915_WRITE(EG0, 0x00007f00); + I915_WRITE(EG1, 0x0000000e); + I915_WRITE(EG2, 0x000e0000); + I915_WRITE(EG3, 0x68000300); + I915_WRITE(EG4, 0x42000000); + I915_WRITE(EG5, 0x00140031); + I915_WRITE(EG6, 0); + I915_WRITE(EG7, 0); + + for (i = 0; i < 8; i++) + I915_WRITE(PXWL + (i * 4), 0); + + /* Enable PMON + select events */ + I915_WRITE(ECR, 0x80000019); + + lcfuse = I915_READ(LCFUSE02); + + dev_priv->ips.corr = (lcfuse & LCFUSE_HIV_MASK); +} + +void intel_disable_gt_powersave(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_IRONLAKE_M(dev)) { + ironlake_disable_drps(dev); + ironlake_disable_rc6(dev); + } else if (INTEL_INFO(dev)->gen >= 6 && !IS_VALLEYVIEW(dev)) { + cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work); + mutex_lock(&dev_priv->rps.hw_lock); + gen6_disable_rps(dev); + mutex_unlock(&dev_priv->rps.hw_lock); + } +} + +static void intel_gen6_powersave_work(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, + rps.delayed_resume_work.work); + struct drm_device *dev = dev_priv->dev; + + mutex_lock(&dev_priv->rps.hw_lock); + gen6_enable_rps(dev); + gen6_update_ring_freq(dev); + mutex_unlock(&dev_priv->rps.hw_lock); +} + +void intel_enable_gt_powersave(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_IRONLAKE_M(dev)) { + ironlake_enable_drps(dev); + ironlake_enable_rc6(dev); + intel_init_emon(dev); + } else if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev)) { + /* + * PCU communication is slow and this doesn't need to be + * done at any specific time, so do this out of our fast path + * to make resume and init faster. + */ + schedule_delayed_work(&dev_priv->rps.delayed_resume_work, + round_jiffies_up_relative(HZ)); + } +} + +static void ibx_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* + * On Ibex Peak and Cougar Point, we need to disable clock + * gating for the panel power sequencer or it will fail to + * start up when no ports are active. + */ + I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE); +} + +static void ironlake_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dspclk_gate = ILK_VRHUNIT_CLOCK_GATE_DISABLE; + + /* Required for FBC */ + dspclk_gate |= ILK_DPFCRUNIT_CLOCK_GATE_DISABLE | + ILK_DPFCUNIT_CLOCK_GATE_DISABLE | + ILK_DPFDUNIT_CLOCK_GATE_ENABLE; + + I915_WRITE(PCH_3DCGDIS0, + MARIUNIT_CLOCK_GATE_DISABLE | + SVSMUNIT_CLOCK_GATE_DISABLE); + I915_WRITE(PCH_3DCGDIS1, + VFMUNIT_CLOCK_GATE_DISABLE); + + /* + * According to the spec the following bits should be set in + * order to enable memory self-refresh + * The bit 22/21 of 0x42004 + * The bit 5 of 0x42020 + * The bit 15 of 0x45000 + */ + I915_WRITE(ILK_DISPLAY_CHICKEN2, + (I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE | ILK_VSDPFD_FULL)); + dspclk_gate |= ILK_DPARBUNIT_CLOCK_GATE_ENABLE; + I915_WRITE(DISP_ARB_CTL, + (I915_READ(DISP_ARB_CTL) | + DISP_FBC_WM_DIS)); + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* + * Based on the document from hardware guys the following bits + * should be set unconditionally in order to enable FBC. + * The bit 22 of 0x42000 + * The bit 22 of 0x42004 + * The bit 7,8,9 of 0x42020. + */ + if (IS_IRONLAKE_M(dev)) { + I915_WRITE(ILK_DISPLAY_CHICKEN1, + I915_READ(ILK_DISPLAY_CHICKEN1) | + ILK_FBCQ_DIS); + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE); + } + + I915_WRITE(ILK_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_ELPIN_409_SELECT); + I915_WRITE(_3D_CHICKEN2, + _3D_CHICKEN2_WM_READ_PIPELINED << 16 | + _3D_CHICKEN2_WM_READ_PIPELINED); + + /* WaDisableRenderCachePipelinedFlush */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); + + ibx_init_clock_gating(dev); +} + +static void cpt_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t val; + + /* + * On Ibex Peak and Cougar Point, we need to disable clock + * gating for the panel power sequencer or it will fail to + * start up when no ports are active. + */ + I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE); + I915_WRITE(SOUTH_CHICKEN2, I915_READ(SOUTH_CHICKEN2) | + DPLS_EDP_PPS_FIX_DIS); + /* 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) { + 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), + TRANS_CHICKEN1_DP0UNIT_GC_DISABLE); + } +} + +static void gen6_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t dspclk_gate = ILK_VRHUNIT_CLOCK_GATE_DISABLE; + + I915_WRITE(ILK_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_ELPIN_409_SELECT); + + /* WaDisableHiZPlanesWhenMSAAEnabled */ + I915_WRITE(_3D_CHICKEN, + _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); + + /* WaSetupGtModeTdRowDispatch */ + if (IS_SNB_GT1(dev)) + I915_WRITE(GEN6_GT_MODE, + _MASKED_BIT_ENABLE(GEN6_TD_FOUR_ROW_DISPATCH_DISABLE)); + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_DISABLE(CM0_STC_EVICT_DISABLE_LRA_SNB)); + + I915_WRITE(GEN6_UCGCTL1, + I915_READ(GEN6_UCGCTL1) | + GEN6_BLBUNIT_CLOCK_GATE_DISABLE | + GEN6_CSUNIT_CLOCK_GATE_DISABLE); + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * Also apply WaDisableVDSUnitClockGating and + * WaDisableRCPBUnitClockGating. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN7_VDSUNIT_CLOCK_GATE_DISABLE | + GEN6_RCPBUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + /* Bspec says we need to always set all mask bits. */ + I915_WRITE(_3D_CHICKEN3, (0xFFFF << 16) | + _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL); + + /* + * According to the spec the following bits should be + * set in order to enable memory self-refresh and fbc: + * The bit21 and bit22 of 0x42000 + * The bit21 and bit22 of 0x42004 + * The bit5 and bit7 of 0x42020 + * The bit14 of 0x70180 + * The bit14 of 0x71180 + */ + I915_WRITE(ILK_DISPLAY_CHICKEN1, + I915_READ(ILK_DISPLAY_CHICKEN1) | + ILK_FBCQ_DIS | ILK_PABSTRETCH_DIS); + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE | ILK_VSDPFD_FULL); + I915_WRITE(ILK_DSPCLK_GATE_D, + I915_READ(ILK_DSPCLK_GATE_D) | + ILK_DPARBUNIT_CLOCK_GATE_ENABLE | + ILK_DPFDUNIT_CLOCK_GATE_ENABLE); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + /* The default value should be 0x200 according to docs, but the two + * platforms I checked have a 0 for this. (Maybe BIOS overrides?) */ + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_ENABLE(GEN6_GT_MODE_HI)); + + cpt_init_clock_gating(dev); +} + +static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) +{ + uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE); + + reg &= ~GEN7_FF_SCHED_MASK; + reg |= GEN7_FF_TS_SCHED_HW; + reg |= GEN7_FF_VS_SCHED_HW; + reg |= GEN7_FF_DS_SCHED_HW; + + I915_WRITE(GEN7_FF_THREAD_MODE, reg); +} + +static void lpt_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* + * TODO: this bit should only be enabled when really needed, then + * disabled when not needed anymore in order to save power. + */ + if (dev_priv->pch_id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) + I915_WRITE(SOUTH_DSPCLK_GATE_D, + I915_READ(SOUTH_DSPCLK_GATE_D) | + PCH_LP_PARTITION_LEVEL_DISABLE); +} + +static void haswell_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + /* XXX: This is a workaround for early silicon revisions and should be + * removed later. + */ + I915_WRITE(WM_DBG, + I915_READ(WM_DBG) | + WM_DBG_DISALLOW_MULTIPLE_LP | + WM_DBG_DISALLOW_SPRITE | + WM_DBG_DISALLOW_MAXFIFO); + + lpt_init_clock_gating(dev); +} + +static void ivybridge_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t snpcr; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(ILK_DSPCLK_GATE_D, ILK_VRHUNIT_CLOCK_GATE_DISABLE); + + /* WaDisableEarlyCull */ + I915_WRITE(_3D_CHICKEN3, + _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); + + /* WaDisableBackToBackFlipFix */ + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + /* WaDisablePSDDualDispatchEnable */ + if (IS_IVB_GT1(dev)) + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + else + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1_GT2, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + if (IS_IVB_GT1(dev)) + I915_WRITE(GEN7_ROW_CHICKEN2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + else + I915_WRITE(GEN7_ROW_CHICKEN2_GT2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN6_RCZUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + snpcr &= ~GEN6_MBC_SNPCR_MASK; + snpcr |= GEN6_MBC_SNPCR_MED; + I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr); + + cpt_init_clock_gating(dev); +} + +static void valleyview_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(ILK_DSPCLK_GATE_D, ILK_VRHUNIT_CLOCK_GATE_DISABLE); + + /* WaDisableEarlyCull */ + I915_WRITE(_3D_CHICKEN3, + _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); + + /* WaDisableBackToBackFlipFix */ + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, I915_READ(GEN7_L3CNTLREG1) | GEN7_L3AGDIS); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, GEN7_WA_L3_CHICKEN_MODE); + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* WaDisableDopClockGating */ + I915_WRITE(GEN7_ROW_CHICKEN2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + * + * Also apply WaDisableVDSUnitClockGating and + * WaDisableRCPBUnitClockGating. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN7_VDSUNIT_CLOCK_GATE_DISABLE | + GEN7_TDLUNIT_CLOCK_GATE_DISABLE | + GEN6_RCZUNIT_CLOCK_GATE_DISABLE | + GEN6_RCPBUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + I915_WRITE(GEN7_UCGCTL4, GEN7_L3BANK2X_CLOCK_GATE_DISABLE); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* + * On ValleyView, the GUnit needs to signal the GT + * when flip and other events complete. So enable + * all the GUnit->GT interrupts here + */ + I915_WRITE(VLV_DPFLIPSTAT, PIPEB_LINE_COMPARE_INT_EN | + PIPEB_HLINE_INT_EN | PIPEB_VBLANK_INT_EN | + SPRITED_FLIPDONE_INT_EN | SPRITEC_FLIPDONE_INT_EN | + PLANEB_FLIPDONE_INT_EN | PIPEA_LINE_COMPARE_INT_EN | + PIPEA_HLINE_INT_EN | PIPEA_VBLANK_INT_EN | + SPRITEB_FLIPDONE_INT_EN | SPRITEA_FLIPDONE_INT_EN | + PLANEA_FLIPDONE_INT_EN); + + /* + * WaDisableVLVClockGating_VBIIssue + * Disable clock gating on th GCFG unit to prevent a delay + * in the reporting of vblank events. + */ + I915_WRITE(VLV_GUNIT_CLOCK_GATE, GCFG_DIS); +} + +static void g4x_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dspclk_gate; + + I915_WRITE(RENCLK_GATE_D1, 0); + I915_WRITE(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE | + GS_UNIT_CLOCK_GATE_DISABLE | + CL_UNIT_CLOCK_GATE_DISABLE); + I915_WRITE(RAMCLK_GATE_D, 0); + dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE | + OVRUNIT_CLOCK_GATE_DISABLE | + OVCUNIT_CLOCK_GATE_DISABLE; + if (IS_GM45(dev)) + dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE; + I915_WRITE(DSPCLK_GATE_D, dspclk_gate); + + /* WaDisableRenderCachePipelinedFlush */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); +} + +static void crestline_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, I965_RCC_CLOCK_GATE_DISABLE); + I915_WRITE(RENCLK_GATE_D2, 0); + I915_WRITE(DSPCLK_GATE_D, 0); + I915_WRITE(RAMCLK_GATE_D, 0); + I915_WRITE16(DEUC, 0); +} + +static void broadwater_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, I965_RCZ_CLOCK_GATE_DISABLE | + I965_RCC_CLOCK_GATE_DISABLE | + I965_RCPB_CLOCK_GATE_DISABLE | + I965_ISC_CLOCK_GATE_DISABLE | + I965_FBC_CLOCK_GATE_DISABLE); + I915_WRITE(RENCLK_GATE_D2, 0); +} + +static void gen3_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dstate = I915_READ(D_STATE); + + dstate |= DSTATE_PLL_D3_OFF | DSTATE_GFX_CLOCK_GATING | + DSTATE_DOT_CLOCK_GATING; + I915_WRITE(D_STATE, dstate); + + if (IS_PINEVIEW(dev)) + I915_WRITE(ECOSKPD, _MASKED_BIT_ENABLE(ECO_GATING_CX_ONLY)); + + /* IIR "flip pending" means done if this bit is set */ + I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); +} + +static void i85x_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, SV_CLOCK_GATE_DISABLE); +} + +static void i830_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(DSPCLK_GATE_D, OVRUNIT_CLOCK_GATE_DISABLE); +} + +void intel_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->display.init_clock_gating(dev); +} + +/* Starting with Haswell, we have different power wells for + * different parts of the GPU. This attempts to enable them all. + */ +void intel_init_power_wells(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long power_wells[] = { + HSW_PWR_WELL_CTL1, + HSW_PWR_WELL_CTL2, + HSW_PWR_WELL_CTL4 + }; + int i; + + if (!IS_HASWELL(dev)) + return; + + mutex_lock(&dev->struct_mutex); + + for (i = 0; i < ARRAY_SIZE(power_wells); i++) { + int well = I915_READ(power_wells[i]); + + if ((well & HSW_PWR_WELL_STATE) == 0) { + I915_WRITE(power_wells[i], well & HSW_PWR_WELL_ENABLE); + if (wait_for((I915_READ(power_wells[i]) & HSW_PWR_WELL_STATE), 20)) + DRM_ERROR("Error enabling power well %lx\n", power_wells[i]); + } + } + + mutex_unlock(&dev->struct_mutex); +} + +/* Set up chip specific power management-related functions */ +void intel_init_pm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + dev_priv->display.fbc_enabled = ironlake_fbc_enabled; + dev_priv->display.enable_fbc = ironlake_enable_fbc; + dev_priv->display.disable_fbc = ironlake_disable_fbc; + } else if (IS_GM45(dev)) { + dev_priv->display.fbc_enabled = g4x_fbc_enabled; + dev_priv->display.enable_fbc = g4x_enable_fbc; + dev_priv->display.disable_fbc = g4x_disable_fbc; + } else if (IS_CRESTLINE(dev)) { + dev_priv->display.fbc_enabled = i8xx_fbc_enabled; + dev_priv->display.enable_fbc = i8xx_enable_fbc; + dev_priv->display.disable_fbc = i8xx_disable_fbc; + } + /* 855GM needs testing */ + } + + /* For cxsr */ + if (IS_PINEVIEW(dev)) + i915_pineview_get_mem_freq(dev); + else if (IS_GEN5(dev)) + i915_ironlake_get_mem_freq(dev); + + /* For FIFO watermark updates */ + if (HAS_PCH_SPLIT(dev)) { + if (IS_GEN5(dev)) { + if (I915_READ(MLTR_ILK) & ILK_SRLT_MASK) + dev_priv->display.update_wm = ironlake_update_wm; + else { + DRM_DEBUG_KMS("Failed to get proper latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = ironlake_init_clock_gating; + } else if (IS_GEN6(dev)) { + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = sandybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = gen6_init_clock_gating; + } else if (IS_IVYBRIDGE(dev)) { + /* FIXME: detect B0+ stepping and use auto training */ + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = ivybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = ivybridge_init_clock_gating; + } else if (IS_HASWELL(dev)) { + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = sandybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + dev_priv->display.update_linetime_wm = haswell_update_linetime_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = haswell_init_clock_gating; + } else + dev_priv->display.update_wm = NULL; + } else if (IS_VALLEYVIEW(dev)) { + dev_priv->display.update_wm = valleyview_update_wm; + dev_priv->display.init_clock_gating = + valleyview_init_clock_gating; + } else if (IS_PINEVIEW(dev)) { + if (!intel_get_cxsr_latency(IS_PINEVIEW_G(dev), + dev_priv->is_ddr3, + dev_priv->fsb_freq, + dev_priv->mem_freq)) { + DRM_INFO("failed to find known CxSR latency " + "(found ddr%s fsb freq %d, mem freq %d), " + "disabling CxSR\n", + (dev_priv->is_ddr3 == 1) ? "3" : "2", + dev_priv->fsb_freq, dev_priv->mem_freq); + /* Disable CxSR and never update its watermark again */ + pineview_disable_cxsr(dev); + dev_priv->display.update_wm = NULL; + } else + dev_priv->display.update_wm = pineview_update_wm; + dev_priv->display.init_clock_gating = gen3_init_clock_gating; + } else if (IS_G4X(dev)) { + dev_priv->display.update_wm = g4x_update_wm; + dev_priv->display.init_clock_gating = g4x_init_clock_gating; + } else if (IS_GEN4(dev)) { + dev_priv->display.update_wm = i965_update_wm; + if (IS_CRESTLINE(dev)) + dev_priv->display.init_clock_gating = crestline_init_clock_gating; + else if (IS_BROADWATER(dev)) + dev_priv->display.init_clock_gating = broadwater_init_clock_gating; + } else if (IS_GEN3(dev)) { + dev_priv->display.update_wm = i9xx_update_wm; + dev_priv->display.get_fifo_size = i9xx_get_fifo_size; + dev_priv->display.init_clock_gating = gen3_init_clock_gating; + } else if (IS_I865G(dev)) { + dev_priv->display.update_wm = i830_update_wm; + dev_priv->display.init_clock_gating = i85x_init_clock_gating; + dev_priv->display.get_fifo_size = i830_get_fifo_size; + } else if (IS_I85X(dev)) { + dev_priv->display.update_wm = i9xx_update_wm; + dev_priv->display.get_fifo_size = i85x_get_fifo_size; + dev_priv->display.init_clock_gating = i85x_init_clock_gating; + } else { + dev_priv->display.update_wm = i830_update_wm; + dev_priv->display.init_clock_gating = i830_init_clock_gating; + if (IS_845G(dev)) + dev_priv->display.get_fifo_size = i845_get_fifo_size; + else + dev_priv->display.get_fifo_size = i830_get_fifo_size; + } +} + +static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv) +{ + u32 gt_thread_status_mask; + + if (IS_HASWELL(dev_priv->dev)) + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK_HSW; + else + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK; + + /* w/a for a sporadic read returning 0 by waiting for the GT + * thread to wake up. + */ + if (wait_for_atomic_us((I915_READ_NOTRACE(GEN6_GT_THREAD_STATUS_REG) & gt_thread_status_mask) == 0, 500)) + DRM_ERROR("GT thread status wait timed out\n"); +} + +static void __gen6_gt_force_wake_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE, 0); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ +} + +static void __gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) +{ + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_ACK; + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE, FORCEWAKE_KERNEL); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +static void __gen6_gt_force_wake_mt_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_DISABLE(0xffff)); + /* something from same cacheline, but !FORCEWAKE_MT */ + POSTING_READ(ECOBUS); +} + +static void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv) +{ + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_MT_ACK; + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_ENABLE(FORCEWAKE_KERNEL)); + /* something from same cacheline, but !FORCEWAKE_MT */ + POSTING_READ(ECOBUS); + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +/* + * Generally this is called implicitly by the register read function. However, + * if some sequence requires the GT to not power down then this function should + * be called at the beginning of the sequence followed by a call to + * gen6_gt_force_wake_put() at the end of the sequence. + */ +void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) +{ + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + if (dev_priv->forcewake_count++ == 0) + dev_priv->gt.force_wake_get(dev_priv); + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); +} + +void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv) +{ + u32 gtfifodbg; + gtfifodbg = I915_READ_NOTRACE(GTFIFODBG); + if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK, + "MMIO read or write has been dropped %x\n", gtfifodbg)) + I915_WRITE_NOTRACE(GTFIFODBG, GT_FIFO_CPU_ERROR_MASK); +} + +static void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE, 0); + /* something from same cacheline, but !FORCEWAKE */ + POSTING_READ(ECOBUS); + gen6_gt_check_fifodbg(dev_priv); +} + +static void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL)); + /* something from same cacheline, but !FORCEWAKE_MT */ + POSTING_READ(ECOBUS); + gen6_gt_check_fifodbg(dev_priv); +} + +/* + * see gen6_gt_force_wake_get() + */ +void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) +{ + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + if (--dev_priv->forcewake_count == 0) + dev_priv->gt.force_wake_put(dev_priv); + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); +} + +int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv) +{ + int ret = 0; + + if (dev_priv->gt_fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES) { + int loop = 500; + u32 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) { + udelay(10); + fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + } + if (WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES)) + ++ret; + dev_priv->gt_fifo_count = fifo; + } + dev_priv->gt_fifo_count--; + + return ret; +} + +static void vlv_force_wake_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_DISABLE(0xffff)); + /* something from same cacheline, but !FORCEWAKE_VLV */ + POSTING_READ(FORCEWAKE_ACK_VLV); +} + +static void vlv_force_wake_get(struct drm_i915_private *dev_priv) +{ + if (wait_for_atomic((I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_ENABLE(FORCEWAKE_KERNEL)); + + if (wait_for_atomic((I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +static void vlv_force_wake_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL)); + /* something from same cacheline, but !FORCEWAKE_VLV */ + POSTING_READ(FORCEWAKE_ACK_VLV); + gen6_gt_check_fifodbg(dev_priv); +} + +void intel_gt_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_VALLEYVIEW(dev)) { + vlv_force_wake_reset(dev_priv); + } else if (INTEL_INFO(dev)->gen >= 6) { + __gen6_gt_force_wake_reset(dev_priv); + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + __gen6_gt_force_wake_mt_reset(dev_priv); + } +} + +void intel_gt_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + spin_lock_init(&dev_priv->gt_lock); + + intel_gt_reset(dev); + + if (IS_VALLEYVIEW(dev)) { + dev_priv->gt.force_wake_get = vlv_force_wake_get; + dev_priv->gt.force_wake_put = vlv_force_wake_put; + } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { + dev_priv->gt.force_wake_get = __gen6_gt_force_wake_mt_get; + dev_priv->gt.force_wake_put = __gen6_gt_force_wake_mt_put; + } else if (IS_GEN6(dev)) { + dev_priv->gt.force_wake_get = __gen6_gt_force_wake_get; + dev_priv->gt.force_wake_put = __gen6_gt_force_wake_put; + } + INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, + intel_gen6_powersave_work); +} + +int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val) +{ + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + if (I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) { + DRM_DEBUG_DRIVER("warning: pcode (read) mailbox access failed\n"); + return -EAGAIN; + } + + I915_WRITE(GEN6_PCODE_DATA, *val); + I915_WRITE(GEN6_PCODE_MAILBOX, GEN6_PCODE_READY | mbox); + + if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, + 500)) { + DRM_ERROR("timeout waiting for pcode read (%d) to finish\n", mbox); + return -ETIMEDOUT; + } + + *val = I915_READ(GEN6_PCODE_DATA); + I915_WRITE(GEN6_PCODE_DATA, 0); + + return 0; +} + +int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val) +{ + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + if (I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) { + DRM_DEBUG_DRIVER("warning: pcode (write) mailbox access failed\n"); + return -EAGAIN; + } + + I915_WRITE(GEN6_PCODE_DATA, val); + I915_WRITE(GEN6_PCODE_MAILBOX, GEN6_PCODE_READY | mbox); + + if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, + 500)) { + DRM_ERROR("timeout waiting for pcode write (%d) to finish\n", mbox); + return -ETIMEDOUT; + } + + I915_WRITE(GEN6_PCODE_DATA, 0); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_ringbuffer.c +++ linux-3.5.0/ubuntu/i915/intel_ringbuffer.c @@ -0,0 +1,1853 @@ +/* + * Copyright © 2008-2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Zou Nan hai + * Xiang Hai hao + * + */ + +#include +#include "i915_drv.h" +#include +#include "i915_trace.h" +#include "intel_drv.h" + +/* + * 965+ support PIPE_CONTROL commands, which provide finer grained control + * over cache flushing. + */ +struct pipe_control { + struct drm_i915_gem_object *obj; + volatile u32 *cpu_page; + u32 gtt_offset; +}; + +static inline int ring_space(struct intel_ring_buffer *ring) +{ + int space = (ring->head & HEAD_ADDR) - (ring->tail + I915_RING_FREE_SPACE); + if (space < 0) + space += ring->size; + return space; +} + +static int +gen2_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + u32 cmd; + int ret; + + cmd = MI_FLUSH; + if (((invalidate_domains|flush_domains) & I915_GEM_DOMAIN_RENDER) == 0) + cmd |= MI_NO_WRITE_FLUSH; + + if (invalidate_domains & I915_GEM_DOMAIN_SAMPLER) + cmd |= MI_READ_FLUSH; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +static int +gen4_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + struct drm_device *dev = ring->dev; + u32 cmd; + int ret; + + /* + * read/write caches: + * + * I915_GEM_DOMAIN_RENDER is always invalidated, but is + * only flushed if MI_NO_WRITE_FLUSH is unset. On 965, it is + * also flushed at 2d versus 3d pipeline switches. + * + * read-only caches: + * + * I915_GEM_DOMAIN_SAMPLER is flushed on pre-965 if + * MI_READ_FLUSH is set, and is always flushed on 965. + * + * I915_GEM_DOMAIN_COMMAND may not exist? + * + * I915_GEM_DOMAIN_INSTRUCTION, which exists on 965, is + * invalidated when MI_EXE_FLUSH is set. + * + * I915_GEM_DOMAIN_VERTEX, which exists on 965, is + * invalidated with every MI_FLUSH. + * + * TLBs: + * + * On 965, TLBs associated with I915_GEM_DOMAIN_COMMAND + * and I915_GEM_DOMAIN_CPU in are invalidated at PTE write and + * I915_GEM_DOMAIN_RENDER and I915_GEM_DOMAIN_SAMPLER + * are flushed at any MI_FLUSH. + */ + + cmd = MI_FLUSH | MI_NO_WRITE_FLUSH; + if ((invalidate_domains|flush_domains) & I915_GEM_DOMAIN_RENDER) + cmd &= ~MI_NO_WRITE_FLUSH; + if (invalidate_domains & I915_GEM_DOMAIN_INSTRUCTION) + cmd |= MI_EXE_FLUSH; + + if (invalidate_domains & I915_GEM_DOMAIN_COMMAND && + (IS_G4X(dev) || IS_GEN5(dev))) + cmd |= MI_INVALIDATE_ISP; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +/** + * Emits a PIPE_CONTROL with a non-zero post-sync operation, for + * implementing two workarounds on gen6. From section 1.4.7.1 + * "PIPE_CONTROL" of the Sandy Bridge PRM volume 2 part 1: + * + * [DevSNB-C+{W/A}] Before any depth stall flush (including those + * produced by non-pipelined state commands), software needs to first + * send a PIPE_CONTROL with no bits set except Post-Sync Operation != + * 0. + * + * [Dev-SNB{W/A}]: Before a PIPE_CONTROL with Write Cache Flush Enable + * =1, a PIPE_CONTROL with any non-zero post-sync-op is required. + * + * And the workaround for these two requires this workaround first: + * + * [Dev-SNB{W/A}]: Pipe-control with CS-stall bit set must be sent + * BEFORE the pipe-control with a post-sync op and no write-cache + * flushes. + * + * And this last workaround is tricky because of the requirements on + * that bit. From section 1.4.7.2.3 "Stall" of the Sandy Bridge PRM + * volume 2 part 1: + * + * "1 of the following must also be set: + * - Render Target Cache Flush Enable ([12] of DW1) + * - Depth Cache Flush Enable ([0] of DW1) + * - Stall at Pixel Scoreboard ([1] of DW1) + * - Depth Stall ([13] of DW1) + * - Post-Sync Operation ([13] of DW1) + * - Notify Enable ([8] of DW1)" + * + * The cache flushes require the workaround flush that triggered this + * one, so we can't use it. Depth stall would trigger the same. + * Post-sync nonzero is what triggered this second workaround, so we + * can't use that one either. Notify enable is IRQs, which aren't + * really our business. That leaves only stall at scoreboard. + */ +static int +intel_emit_post_sync_nonzero_flush(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(5)); + intel_ring_emit(ring, PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_STALL_AT_SCOREBOARD); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); /* address */ + intel_ring_emit(ring, 0); /* low dword */ + intel_ring_emit(ring, 0); /* high dword */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(5)); + intel_ring_emit(ring, PIPE_CONTROL_QW_WRITE); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); /* address */ + intel_ring_emit(ring, 0); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +static int +gen6_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, u32 flush_domains) +{ + u32 flags = 0; + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* Force SNB workarounds for PIPE_CONTROL flushes */ + ret = intel_emit_post_sync_nonzero_flush(ring); + if (ret) + return ret; + + /* Just flush everything. Experiments have shown that reducing the + * number of bits based on the write domains has little performance + * impact. + */ + if (flush_domains) { + flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; + flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + /* + * Ensure that any following seqno writes only happen + * when the render cache is indeed flushed. + */ + flags |= PIPE_CONTROL_CS_STALL; + } + if (invalidate_domains) { + flags |= PIPE_CONTROL_TLB_INVALIDATE; + flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + /* + * TLB invalidate requires a post-sync write. + */ + flags |= PIPE_CONTROL_QW_WRITE | PIPE_CONTROL_CS_STALL; + } + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, flags); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static int +gen7_render_ring_cs_stall_wa(struct intel_ring_buffer *ring) +{ + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_STALL_AT_SCOREBOARD); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static int +gen7_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, u32 flush_domains) +{ + u32 flags = 0; + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* + * Ensure that any following seqno writes only happen when the render + * cache is indeed flushed. + * + * Workaround: 4th PIPE_CONTROL command (except the ones with only + * read-cache invalidate bits set) must have the CS_STALL bit set. We + * don't try to be clever and just set it unconditionally. + */ + flags |= PIPE_CONTROL_CS_STALL; + + /* Just flush everything. Experiments have shown that reducing the + * number of bits based on the write domains has little performance + * impact. + */ + if (flush_domains) { + flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; + flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + } + if (invalidate_domains) { + flags |= PIPE_CONTROL_TLB_INVALIDATE; + flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + /* + * TLB invalidate requires a post-sync write. + */ + flags |= PIPE_CONTROL_QW_WRITE; + + /* Workaround: we must issue a pipe_control with CS-stall bit + * set before a pipe_control command that has the state cache + * invalidate bit set. */ + gen7_render_ring_cs_stall_wa(ring); + } + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, flags); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static void ring_write_tail(struct intel_ring_buffer *ring, + u32 value) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + I915_WRITE_TAIL(ring, value); +} + +u32 intel_ring_get_active_head(struct intel_ring_buffer *ring) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + u32 acthd_reg = INTEL_INFO(ring->dev)->gen >= 4 ? + RING_ACTHD(ring->mmio_base) : ACTHD; + + return I915_READ(acthd_reg); +} + +static int init_ring_common(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj = ring->obj; + int ret = 0; + u32 head; + + if (HAS_FORCE_WAKE(dev)) + gen6_gt_force_wake_get(dev_priv); + + /* Stop the ring if it's running. */ + I915_WRITE_CTL(ring, 0); + I915_WRITE_HEAD(ring, 0); + ring->write_tail(ring, 0); + + head = I915_READ_HEAD(ring) & HEAD_ADDR; + + /* G45 ring initialization fails to reset head to zero */ + if (head != 0) { + DRM_DEBUG_KMS("%s head not reset to zero " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(ring)); + + I915_WRITE_HEAD(ring, 0); + + if (I915_READ_HEAD(ring) & HEAD_ADDR) { + DRM_ERROR("failed to set %s head to zero " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(ring)); + } + } + + /* Initialize the ring. This must happen _after_ we've cleared the ring + * registers with the above sequence (the readback of the HEAD registers + * also enforces ordering), otherwise the hw might lose the new ring + * register values. */ + I915_WRITE_START(ring, obj->gtt_offset); + I915_WRITE_CTL(ring, + ((ring->size - PAGE_SIZE) & RING_NR_PAGES) + | RING_VALID); + + /* If the head is still not zero, the ring is dead */ + if (wait_for((I915_READ_CTL(ring) & RING_VALID) != 0 && + I915_READ_START(ring) == obj->gtt_offset && + (I915_READ_HEAD(ring) & HEAD_ADDR) == 0, 50)) { + DRM_ERROR("%s initialization failed " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(ring)); + ret = -EIO; + goto out; + } + + if (!drm_core_check_feature(ring->dev, DRIVER_MODESET)) + i915_kernel_lost_context(ring->dev); + else { + ring->head = I915_READ_HEAD(ring); + ring->tail = I915_READ_TAIL(ring) & TAIL_ADDR; + ring->space = ring_space(ring); + ring->last_retired_head = -1; + } + +out: + if (HAS_FORCE_WAKE(dev)) + gen6_gt_force_wake_put(dev_priv); + + return ret; +} + +static int +init_pipe_control(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc; + struct drm_i915_gem_object *obj; + int ret; + + if (ring->private) + return 0; + + pc = kmalloc(sizeof(*pc), GFP_KERNEL); + if (!pc) + return -ENOMEM; + + obj = i915_gem_alloc_object(ring->dev, 4096); + if (obj == NULL) { + DRM_ERROR("Failed to allocate seqno page\n"); + ret = -ENOMEM; + goto err; + } + + i915_gem_object_set_cache_level(obj, I915_CACHE_LLC); + + ret = i915_gem_object_pin(obj, 4096, true, false); + if (ret) + goto err_unref; + + pc->gtt_offset = obj->gtt_offset; + pc->cpu_page = kmap(sg_page(obj->pages->sgl)); + if (pc->cpu_page == NULL) + goto err_unpin; + + pc->obj = obj; + ring->private = pc; + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); +err: + kfree(pc); + return ret; +} + +static void +cleanup_pipe_control(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc = ring->private; + struct drm_i915_gem_object *obj; + + if (!ring->private) + return; + + obj = pc->obj; + + kunmap(sg_page(obj->pages->sgl)); + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + + kfree(pc); + ring->private = NULL; +} + +static int init_render_ring(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret = init_ring_common(ring); + + if (INTEL_INFO(dev)->gen > 3) + I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH)); + + /* We need to disable the AsyncFlip performance optimisations in order + * to use MI_WAIT_FOR_EVENT within the CS. It should already be + * programmed to '1' on all products. + */ + if (INTEL_INFO(dev)->gen >= 6) + I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(ASYNC_FLIP_PERF_DISABLE)); + + /* Required for the hardware to program scanline values for waiting */ + if (INTEL_INFO(dev)->gen == 6) + I915_WRITE(GFX_MODE, + _MASKED_BIT_ENABLE(GFX_TLB_INVALIDATE_ALWAYS)); + + if (IS_GEN7(dev)) + I915_WRITE(GFX_MODE_GEN7, + _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | + _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); + + if (INTEL_INFO(dev)->gen >= 5) { + ret = init_pipe_control(ring); + if (ret) + return ret; + } + + if (IS_GEN6(dev)) { + /* From the Sandybridge PRM, volume 1 part 3, page 24: + * "If this bit is set, STCunit will have LRA as replacement + * policy. [...] This bit must be reset. LRA replacement + * policy is not supported." + */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_DISABLE(CM0_STC_EVICT_DISABLE_LRA_SNB)); + + /* This is not explicitly set for GEN6, so read the register. + * see intel_ring_mi_set_context() for why we care. + * TODO: consider explicitly setting the bit for GEN5 + */ + ring->itlb_before_ctx_switch = + !!(I915_READ(GFX_MODE) & GFX_TLB_INVALIDATE_ALWAYS); + } + + if (INTEL_INFO(dev)->gen >= 6) + I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); + + if (HAS_L3_GPU_CACHE(dev)) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + + return ret; +} + +static void render_ring_cleanup(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + + if (!ring->private) + return; + + if (HAS_BROKEN_CS_TLB(dev)) + drm_gem_object_unreference(to_gem_object(ring->private)); + + cleanup_pipe_control(ring); +} + +static void +update_mboxes(struct intel_ring_buffer *ring, + u32 mmio_offset) +{ + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, mmio_offset); + intel_ring_emit(ring, ring->outstanding_lazy_request); +} + +/** + * gen6_add_request - Update the semaphore mailbox registers + * + * @ring - ring that is adding a request + * @seqno - return seqno stuck into the ring + * + * Update the mailbox registers in the *other* rings with the current seqno. + * This acts like a signal in the canonical semaphore. + */ +static int +gen6_add_request(struct intel_ring_buffer *ring) +{ + u32 mbox1_reg; + u32 mbox2_reg; + int ret; + + ret = intel_ring_begin(ring, 10); + if (ret) + return ret; + + mbox1_reg = ring->signal_mbox[0]; + mbox2_reg = ring->signal_mbox[1]; + + update_mboxes(ring, mbox1_reg); + update_mboxes(ring, mbox2_reg); + intel_ring_emit(ring, MI_STORE_DWORD_INDEX); + intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + intel_ring_emit(ring, ring->outstanding_lazy_request); + intel_ring_emit(ring, MI_USER_INTERRUPT); + intel_ring_advance(ring); + + return 0; +} + +/** + * intel_ring_sync - sync the waiter to the signaller on seqno + * + * @waiter - ring that is waiting + * @signaller - ring which has, or will signal + * @seqno - seqno which the waiter will block on + */ +static int +gen6_ring_sync(struct intel_ring_buffer *waiter, + struct intel_ring_buffer *signaller, + u32 seqno) +{ + int ret; + u32 dw1 = MI_SEMAPHORE_MBOX | + MI_SEMAPHORE_COMPARE | + MI_SEMAPHORE_REGISTER; + + /* Throughout all of the GEM code, seqno passed implies our current + * seqno is >= the last seqno executed. However for hardware the + * comparison is strictly greater than. + */ + seqno -= 1; + + WARN_ON(signaller->semaphore_register[waiter->id] == + MI_SEMAPHORE_SYNC_INVALID); + + ret = intel_ring_begin(waiter, 4); + if (ret) + return ret; + + intel_ring_emit(waiter, + dw1 | signaller->semaphore_register[waiter->id]); + intel_ring_emit(waiter, seqno); + intel_ring_emit(waiter, 0); + intel_ring_emit(waiter, MI_NOOP); + intel_ring_advance(waiter); + + return 0; +} + +#define PIPE_CONTROL_FLUSH(ring__, addr__) \ +do { \ + intel_ring_emit(ring__, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | \ + PIPE_CONTROL_DEPTH_STALL); \ + intel_ring_emit(ring__, (addr__) | PIPE_CONTROL_GLOBAL_GTT); \ + intel_ring_emit(ring__, 0); \ + intel_ring_emit(ring__, 0); \ +} while (0) + +static int +pc_render_add_request(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* For Ironlake, MI_USER_INTERRUPT was deprecated and apparently + * incoherent with writes to memory, i.e. completely fubar, + * so we need to use PIPE_NOTIFY instead. + * + * However, we also need to workaround the qword write + * incoherence by flushing the 6 PIPE_NOTIFY buffers out to + * memory before requesting an interrupt. + */ + ret = intel_ring_begin(ring, 32); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | + PIPE_CONTROL_WRITE_FLUSH | + PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE); + intel_ring_emit(ring, pc->gtt_offset | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, ring->outstanding_lazy_request); + intel_ring_emit(ring, 0); + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; /* write to separate cachelines */ + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | + PIPE_CONTROL_WRITE_FLUSH | + PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE | + PIPE_CONTROL_NOTIFY); + intel_ring_emit(ring, pc->gtt_offset | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, ring->outstanding_lazy_request); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static u32 +gen6_ring_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + /* Workaround to force correct ordering between irq and seqno writes on + * ivb (and maybe also on snb) by reading from a CS register (like + * ACTHD) before reading the status page. */ + if (!lazy_coherency) + intel_ring_get_active_head(ring); + return intel_read_status_page(ring, I915_GEM_HWS_INDEX); +} + +static u32 +ring_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + return intel_read_status_page(ring, I915_GEM_HWS_INDEX); +} + +static u32 +pc_render_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + struct pipe_control *pc = ring->private; + return pc->cpu_page[0]; +} + +static bool +gen5_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +gen5_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->gt_irq_mask |= ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +static bool +i9xx_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(IMR, dev_priv->irq_mask); + POSTING_READ(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +i9xx_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->irq_mask |= ring->irq_enable_mask; + I915_WRITE(IMR, dev_priv->irq_mask); + POSTING_READ(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +static bool +i8xx_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->irq_mask &= ~ring->irq_enable_mask; + I915_WRITE16(IMR, dev_priv->irq_mask); + POSTING_READ16(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +i8xx_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->irq_mask |= ring->irq_enable_mask; + I915_WRITE16(IMR, dev_priv->irq_mask); + POSTING_READ16(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +void intel_ring_setup_status_page(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = ring->dev->dev_private; + u32 mmio = 0; + + /* The ring status page addresses are no longer next to the rest of + * the ring registers as of gen7. + */ + if (IS_GEN7(dev)) { + switch (ring->id) { + case RCS: + mmio = RENDER_HWS_PGA_GEN7; + break; + case BCS: + mmio = BLT_HWS_PGA_GEN7; + break; + case VCS: + mmio = BSD_HWS_PGA_GEN7; + break; + } + } else if (IS_GEN6(ring->dev)) { + mmio = RING_HWS_PGA_GEN6(ring->mmio_base); + } else { + mmio = RING_HWS_PGA(ring->mmio_base); + } + + I915_WRITE(mmio, (u32)ring->status_page.gfx_addr); + POSTING_READ(mmio); +} + +static int +bsd_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_FLUSH); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +static int +i9xx_add_request(struct intel_ring_buffer *ring) +{ + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, MI_STORE_DWORD_INDEX); + intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + intel_ring_emit(ring, ring->outstanding_lazy_request); + intel_ring_emit(ring, MI_USER_INTERRUPT); + intel_ring_advance(ring); + + return 0; +} + +static bool +gen6_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + /* It looks like we need to prevent the gt from suspending while waiting + * for an notifiy irq, otherwise irqs seem to get lost on at least the + * blt/bsd rings on ivb. */ + gen6_gt_force_wake_get(dev_priv); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + if (HAS_L3_GPU_CACHE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~(ring->irq_enable_mask | + GEN6_RENDER_L3_PARITY_ERROR)); + else + I915_WRITE_IMR(ring, ~ring->irq_enable_mask); + dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +gen6_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + if (HAS_L3_GPU_CACHE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + else + I915_WRITE_IMR(ring, ~0); + dev_priv->gt_irq_mask |= ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + gen6_gt_force_wake_put(dev_priv); +} + +static int +i965_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 length, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | + MI_BATCH_GTT | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_I965)); + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +/* Just userspace ABI convention to limit the wa batch bo to a resonable size */ +#define I830_BATCH_LIMIT (256*1024) +static int +i830_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + if (flags & I915_DISPATCH_PINNED) { + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, MI_BATCH_BUFFER); + intel_ring_emit(ring, offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); + intel_ring_emit(ring, offset + len - 8); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + } else { + struct drm_i915_gem_object *obj = ring->private; + u32 cs_offset = obj->gtt_offset; + + if (len > I830_BATCH_LIMIT) + return -ENOSPC; + + ret = intel_ring_begin(ring, 9+3); + if (ret) + return ret; + /* Blit the batch (which has now all relocs applied) to the stable batch + * scratch bo area (so that the CS never stumbles over its tlb + * invalidation bug) ... */ + intel_ring_emit(ring, XY_SRC_COPY_BLT_CMD | + XY_SRC_COPY_BLT_WRITE_ALPHA | + XY_SRC_COPY_BLT_WRITE_RGB); + intel_ring_emit(ring, BLT_DEPTH_32 | BLT_ROP_GXCOPY | 4096); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, (DIV_ROUND_UP(len, 4096) << 16) | 1024); + intel_ring_emit(ring, cs_offset); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, 4096); + intel_ring_emit(ring, offset); + intel_ring_emit(ring, MI_FLUSH); + + /* ... and execute it. */ + intel_ring_emit(ring, MI_BATCH_BUFFER); + intel_ring_emit(ring, cs_offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); + intel_ring_emit(ring, cs_offset + len - 8); + intel_ring_advance(ring); + } + + return 0; +} + +static int +i915_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_BATCH_BUFFER_START | MI_BATCH_GTT); + intel_ring_emit(ring, offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); + intel_ring_advance(ring); + + return 0; +} + +static void cleanup_status_page(struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + + obj = ring->status_page.obj; + if (obj == NULL) + return; + + kunmap(sg_page(obj->pages->sgl)); + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + ring->status_page.obj = NULL; +} + +static int init_status_page(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_gem_object *obj; + int ret; + + obj = i915_gem_alloc_object(dev, 4096); + if (obj == NULL) { + DRM_ERROR("Failed to allocate status page\n"); + ret = -ENOMEM; + goto err; + } + + i915_gem_object_set_cache_level(obj, I915_CACHE_LLC); + + ret = i915_gem_object_pin(obj, 4096, true, false); + if (ret != 0) { + goto err_unref; + } + + ring->status_page.gfx_addr = obj->gtt_offset; + ring->status_page.page_addr = kmap(sg_page(obj->pages->sgl)); + if (ring->status_page.page_addr == NULL) { + ret = -ENOMEM; + goto err_unpin; + } + ring->status_page.obj = obj; + memset(ring->status_page.page_addr, 0, PAGE_SIZE); + + intel_ring_setup_status_page(ring); + DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n", + ring->name, ring->status_page.gfx_addr); + + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); +err: + return ret; +} + +static int init_phys_hws_pga(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + u32 addr; + + if (!dev_priv->status_page_dmah) { + dev_priv->status_page_dmah = + drm_pci_alloc(ring->dev, PAGE_SIZE, PAGE_SIZE); + if (!dev_priv->status_page_dmah) + return -ENOMEM; + } + + addr = dev_priv->status_page_dmah->busaddr; + if (INTEL_INFO(ring->dev)->gen >= 4) + addr |= (dev_priv->status_page_dmah->busaddr >> 28) & 0xf0; + I915_WRITE(HWS_PGA, addr); + + ring->status_page.page_addr = dev_priv->status_page_dmah->vaddr; + memset(ring->status_page.page_addr, 0, PAGE_SIZE); + + return 0; +} + +static int intel_init_ring_buffer(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ring->dev = dev; + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); + ring->size = 32 * PAGE_SIZE; + memset(ring->sync_seqno, 0, sizeof(ring->sync_seqno)); + + init_waitqueue_head(&ring->irq_queue); + + if (I915_NEED_GFX_HWS(dev)) { + ret = init_status_page(ring); + if (ret) + return ret; + } else { + BUG_ON(ring->id != RCS); + ret = init_phys_hws_pga(ring); + if (ret) + return ret; + } + + obj = i915_gem_alloc_object(dev, ring->size); + if (obj == NULL) { + DRM_ERROR("Failed to allocate ringbuffer\n"); + ret = -ENOMEM; + goto err_hws; + } + + ring->obj = obj; + + ret = i915_gem_object_pin(obj, PAGE_SIZE, true, false); + if (ret) + goto err_unref; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + goto err_unpin; + + ring->virtual_start = + ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset, + ring->size); + if (ring->virtual_start == NULL) { + DRM_ERROR("Failed to map ringbuffer.\n"); + ret = -EINVAL; + goto err_unpin; + } + + ret = ring->init(ring); + if (ret) + goto err_unmap; + + /* Workaround an erratum on the i830 which causes a hang if + * the TAIL pointer points to within the last 2 cachelines + * of the buffer. + */ + ring->effective_size = ring->size; + if (IS_I830(ring->dev) || IS_845G(ring->dev)) + ring->effective_size -= 128; + + return 0; + +err_unmap: + iounmap(ring->virtual_start); +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); + ring->obj = NULL; +err_hws: + cleanup_status_page(ring); + return ret; +} + +void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv; + int ret; + + if (ring->obj == NULL) + return; + + /* Disable the ring buffer. The ring must be idle at this point */ + dev_priv = ring->dev->dev_private; + ret = intel_ring_idle(ring); + if (ret) + DRM_ERROR("failed to quiesce %s whilst cleaning up: %d\n", + ring->name, ret); + + I915_WRITE_CTL(ring, 0); + + iounmap(ring->virtual_start); + + i915_gem_object_unpin(ring->obj); + drm_gem_object_unreference(&ring->obj->base); + ring->obj = NULL; + + if (ring->cleanup) + ring->cleanup(ring); + + cleanup_status_page(ring); +} + +static int intel_ring_wait_seqno(struct intel_ring_buffer *ring, u32 seqno) +{ + int ret; + + ret = i915_wait_seqno(ring, seqno); + if (!ret) + i915_gem_retire_requests_ring(ring); + + return ret; +} + +static int intel_ring_wait_request(struct intel_ring_buffer *ring, int n) +{ + struct drm_i915_gem_request *request; + u32 seqno = 0; + int ret; + + i915_gem_retire_requests_ring(ring); + + if (ring->last_retired_head != -1) { + ring->head = ring->last_retired_head; + ring->last_retired_head = -1; + ring->space = ring_space(ring); + if (ring->space >= n) + return 0; + } + + list_for_each_entry(request, &ring->request_list, list) { + int space; + + if (request->tail == -1) + continue; + + space = request->tail - (ring->tail + I915_RING_FREE_SPACE); + if (space < 0) + space += ring->size; + if (space >= n) { + seqno = request->seqno; + break; + } + + /* Consume this request in case we need more space than + * is available and so need to prevent a race between + * updating last_retired_head and direct reads of + * I915_RING_HEAD. It also provides a nice sanity check. + */ + request->tail = -1; + } + + if (seqno == 0) + return -ENOSPC; + + ret = intel_ring_wait_seqno(ring, seqno); + if (ret) + return ret; + + if (WARN_ON(ring->last_retired_head == -1)) + return -ENOSPC; + + ring->head = ring->last_retired_head; + ring->last_retired_head = -1; + ring->space = ring_space(ring); + if (WARN_ON(ring->space < n)) + return -ENOSPC; + + return 0; +} + +static int ring_wait_for_space(struct intel_ring_buffer *ring, int n) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long end; + int ret; + + ret = intel_ring_wait_request(ring, n); + if (ret != -ENOSPC) + return ret; + + trace_i915_ring_wait_begin(ring); + /* With GEM the hangcheck timer should kick us out of the loop, + * leaving it early runs the risk of corrupting GEM state (due + * to running on almost untested codepaths). But on resume + * timers don't work yet, so prevent a complete hang in that + * case by choosing an insanely large timeout. */ + end = jiffies + 60 * HZ; + + do { + ring->head = I915_READ_HEAD(ring); + ring->space = ring_space(ring); + if (ring->space >= n) { + trace_i915_ring_wait_end(ring); + return 0; + } + + if (dev->primary->master) { + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + if (master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; + } + + msleep(1); + + ret = i915_gem_check_wedge(dev_priv, dev_priv->mm.interruptible); + if (ret) + return ret; + } while (!time_after(jiffies, end)); + trace_i915_ring_wait_end(ring); + return -EBUSY; +} + +static int intel_wrap_ring_buffer(struct intel_ring_buffer *ring) +{ + uint32_t __iomem *virt; + int rem = ring->size - ring->tail; + + if (ring->space < rem) { + int ret = ring_wait_for_space(ring, rem); + if (ret) + return ret; + } + + virt = ring->virtual_start + ring->tail; + rem /= 4; + while (rem--) + iowrite32(MI_NOOP, virt++); + + ring->tail = 0; + ring->space = ring_space(ring); + + return 0; +} + +int intel_ring_idle(struct intel_ring_buffer *ring) +{ + u32 seqno; + int ret; + + /* We need to add any requests required to flush the objects and ring */ + if (ring->outstanding_lazy_request) { + ret = i915_add_request(ring, NULL, NULL); + if (ret) + return ret; + } + + /* Wait upon the last request to be completed */ + if (list_empty(&ring->request_list)) + return 0; + + seqno = list_entry(ring->request_list.prev, + struct drm_i915_gem_request, + list)->seqno; + + return i915_wait_seqno(ring, seqno); +} + +static int +intel_ring_alloc_seqno(struct intel_ring_buffer *ring) +{ + if (ring->outstanding_lazy_request) + return 0; + + return i915_gem_get_seqno(ring->dev, &ring->outstanding_lazy_request); +} + +int intel_ring_begin(struct intel_ring_buffer *ring, + int num_dwords) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + int n = 4*num_dwords; + int ret; + + ret = i915_gem_check_wedge(dev_priv, dev_priv->mm.interruptible); + if (ret) + return ret; + + /* Preallocate the olr before touching the ring */ + ret = intel_ring_alloc_seqno(ring); + if (ret) + return ret; + + if (unlikely(ring->tail + n > ring->effective_size)) { + ret = intel_wrap_ring_buffer(ring); + if (unlikely(ret)) + return ret; + } + + if (unlikely(ring->space < n)) { + ret = ring_wait_for_space(ring, n); + if (unlikely(ret)) + return ret; + } + + ring->space -= n; + return 0; +} + +void intel_ring_advance(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + + ring->tail &= ring->size - 1; + if (dev_priv->stop_rings & intel_ring_flag(ring)) + return; + ring->write_tail(ring, ring->tail); +} + + +static void gen6_bsd_ring_write_tail(struct intel_ring_buffer *ring, + u32 value) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + + /* Every tail move must follow the sequence below */ + + /* Disable notification that the ring is IDLE. The GT + * will then assume that it is busy and bring it out of rc6. + */ + I915_WRITE(GEN6_BSD_SLEEP_PSMI_CONTROL, + _MASKED_BIT_ENABLE(GEN6_BSD_SLEEP_MSG_DISABLE)); + + /* Clear the context id. Here be magic! */ + I915_WRITE64(GEN6_BSD_RNCID, 0x0); + + /* Wait for the ring not to be idle, i.e. for it to wake up. */ + if (wait_for((I915_READ(GEN6_BSD_SLEEP_PSMI_CONTROL) & + GEN6_BSD_SLEEP_INDICATOR) == 0, + 50)) + DRM_ERROR("timed out waiting for the BSD ring to wake up\n"); + + /* Now that the ring is fully powered up, update the tail */ + I915_WRITE_TAIL(ring, value); + POSTING_READ(RING_TAIL(ring->mmio_base)); + + /* Let the ring send IDLE messages to the GT again, + * and so let it sleep to conserve power when idle. + */ + I915_WRITE(GEN6_BSD_SLEEP_PSMI_CONTROL, + _MASKED_BIT_DISABLE(GEN6_BSD_SLEEP_MSG_DISABLE)); +} + +static int gen6_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate, u32 flush) +{ + uint32_t cmd; + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.5 - video engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ + if (invalidate & I915_GEM_GPU_DOMAINS) + cmd |= MI_INVALIDATE_TLB | MI_INVALIDATE_BSD | + MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW; + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +static int +hsw_ring_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | MI_BATCH_PPGTT_HSW | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_HSW)); + /* bit0-7 is the length on GEN6+ */ + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +static int +gen6_ring_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_I965)); + /* bit0-7 is the length on GEN6+ */ + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +/* Blitter support (SandyBridge+) */ + +static int blt_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate, u32 flush) +{ + uint32_t cmd; + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.3 - blitter engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ + if (invalidate & I915_GEM_DOMAIN_RENDER) + cmd |= MI_INVALIDATE_TLB | MI_FLUSH_DW_STORE_INDEX | + MI_FLUSH_DW_OP_STOREDW; + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +int intel_init_render_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + + ring->name = "render ring"; + ring->id = RCS; + ring->mmio_base = RENDER_RING_BASE; + + if (INTEL_INFO(dev)->gen >= 6) { + ring->add_request = gen6_add_request; + ring->flush = gen7_render_ring_flush; + if (INTEL_INFO(dev)->gen == 6) + ring->flush = gen6_render_ring_flush; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->irq_enable_mask = GT_USER_INTERRUPT; + ring->get_seqno = gen6_ring_get_seqno; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_INVALID; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_RV; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_RB; + ring->signal_mbox[0] = GEN6_VRSYNC; + ring->signal_mbox[1] = GEN6_BRSYNC; + } else if (IS_GEN5(dev)) { + ring->add_request = pc_render_add_request; + ring->flush = gen4_render_ring_flush; + ring->get_seqno = pc_render_get_seqno; + ring->irq_get = gen5_ring_get_irq; + ring->irq_put = gen5_ring_put_irq; + ring->irq_enable_mask = GT_USER_INTERRUPT | GT_PIPE_NOTIFY; + } else { + ring->add_request = i9xx_add_request; + if (INTEL_INFO(dev)->gen < 4) + ring->flush = gen2_render_ring_flush; + else + ring->flush = gen4_render_ring_flush; + ring->get_seqno = ring_get_seqno; + if (IS_GEN2(dev)) { + ring->irq_get = i8xx_ring_get_irq; + ring->irq_put = i8xx_ring_put_irq; + } else { + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->irq_enable_mask = I915_USER_INTERRUPT; + } + ring->write_tail = ring_write_tail; + if (IS_HASWELL(dev)) + ring->dispatch_execbuffer = hsw_ring_dispatch_execbuffer; + else if (INTEL_INFO(dev)->gen >= 6) + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + else if (INTEL_INFO(dev)->gen >= 4) + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + else if (IS_I830(dev) || IS_845G(dev)) + ring->dispatch_execbuffer = i830_dispatch_execbuffer; + else + ring->dispatch_execbuffer = i915_dispatch_execbuffer; + ring->init = init_render_ring; + ring->cleanup = render_ring_cleanup; + + /* Workaround batchbuffer to combat CS tlb bug. */ + if (HAS_BROKEN_CS_TLB(dev)) { + struct drm_i915_gem_object *obj; + int ret; + + obj = i915_gem_alloc_object(dev, I830_BATCH_LIMIT); + if (obj == NULL) { + DRM_ERROR("Failed to allocate batch bo\n"); + return -ENOMEM; + } + + ret = i915_gem_object_pin(obj, 0, true, false); + if (ret != 0) { + drm_gem_object_unreference(&obj->base); + DRM_ERROR("Failed to ping batch bo\n"); + return ret; + } + + ring->private = obj; + } + + return intel_init_ring_buffer(dev, ring); +} + +int intel_render_ring_init_dri(struct drm_device *dev, u64 start, u32 size) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ring->name = "render ring"; + ring->id = RCS; + ring->mmio_base = RENDER_RING_BASE; + + if (INTEL_INFO(dev)->gen >= 6) { + /* non-kms not supported on gen6+ */ + return -ENODEV; + } + + /* Note: gem is not supported on gen5/ilk without kms (the corresponding + * gem_init ioctl returns with -ENODEV). Hence we do not need to set up + * the special gen5 functions. */ + ring->add_request = i9xx_add_request; + if (INTEL_INFO(dev)->gen < 4) + ring->flush = gen2_render_ring_flush; + else + ring->flush = gen4_render_ring_flush; + ring->get_seqno = ring_get_seqno; + if (IS_GEN2(dev)) { + ring->irq_get = i8xx_ring_get_irq; + ring->irq_put = i8xx_ring_put_irq; + } else { + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->irq_enable_mask = I915_USER_INTERRUPT; + ring->write_tail = ring_write_tail; + if (INTEL_INFO(dev)->gen >= 4) + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + else if (IS_I830(dev) || IS_845G(dev)) + ring->dispatch_execbuffer = i830_dispatch_execbuffer; + else + ring->dispatch_execbuffer = i915_dispatch_execbuffer; + ring->init = init_render_ring; + ring->cleanup = render_ring_cleanup; + + ring->dev = dev; + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); + + ring->size = size; + ring->effective_size = ring->size; + if (IS_I830(ring->dev) || IS_845G(ring->dev)) + ring->effective_size -= 128; + + ring->virtual_start = ioremap_wc(start, size); + if (ring->virtual_start == NULL) { + DRM_ERROR("can not ioremap virtual address for" + " ring buffer\n"); + return -ENOMEM; + } + + if (!I915_NEED_GFX_HWS(dev)) { + ret = init_phys_hws_pga(ring); + if (ret) + return ret; + } + + return 0; +} + +int intel_init_bsd_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[VCS]; + + ring->name = "bsd ring"; + ring->id = VCS; + + ring->write_tail = ring_write_tail; + if (IS_GEN6(dev) || IS_GEN7(dev)) { + ring->mmio_base = GEN6_BSD_RING_BASE; + /* gen6 bsd needs a special wa for tail updates */ + if (IS_GEN6(dev)) + ring->write_tail = gen6_bsd_ring_write_tail; + ring->flush = gen6_ring_flush; + ring->add_request = gen6_add_request; + ring->get_seqno = gen6_ring_get_seqno; + ring->irq_enable_mask = GEN6_BSD_USER_INTERRUPT; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_VR; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_INVALID; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_VB; + ring->signal_mbox[0] = GEN6_RVSYNC; + ring->signal_mbox[1] = GEN6_BVSYNC; + } else { + ring->mmio_base = BSD_RING_BASE; + ring->flush = bsd_ring_flush; + ring->add_request = i9xx_add_request; + ring->get_seqno = ring_get_seqno; + if (IS_GEN5(dev)) { + ring->irq_enable_mask = GT_BSD_USER_INTERRUPT; + ring->irq_get = gen5_ring_get_irq; + ring->irq_put = gen5_ring_put_irq; + } else { + ring->irq_enable_mask = I915_BSD_USER_INTERRUPT; + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + } + ring->init = init_ring_common; + + return intel_init_ring_buffer(dev, ring); +} + +int intel_init_blt_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; + + ring->name = "blitter ring"; + ring->id = BCS; + + ring->mmio_base = BLT_RING_BASE; + ring->write_tail = ring_write_tail; + ring->flush = blt_ring_flush; + ring->add_request = gen6_add_request; + ring->get_seqno = gen6_ring_get_seqno; + ring->irq_enable_mask = GEN6_BLITTER_USER_INTERRUPT; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_BR; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_BV; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_INVALID; + ring->signal_mbox[0] = GEN6_RBSYNC; + ring->signal_mbox[1] = GEN6_VBSYNC; + ring->init = init_ring_common; + + return intel_init_ring_buffer(dev, ring); +} + +int +intel_ring_flush_all_caches(struct intel_ring_buffer *ring) +{ + int ret; + + if (!ring->gpu_caches_dirty) + return 0; + + ret = ring->flush(ring, 0, I915_GEM_GPU_DOMAINS); + if (ret) + return ret; + + trace_i915_gem_ring_flush(ring, 0, I915_GEM_GPU_DOMAINS); + + ring->gpu_caches_dirty = false; + return 0; +} + +int +intel_ring_invalidate_all_caches(struct intel_ring_buffer *ring) +{ + uint32_t flush_domains; + int ret; + + flush_domains = 0; + if (ring->gpu_caches_dirty) + flush_domains = I915_GEM_GPU_DOMAINS; + + ret = ring->flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); + if (ret) + return ret; + + trace_i915_gem_ring_flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); + + ring->gpu_caches_dirty = false; + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/i915_drv.h +++ linux-3.5.0/ubuntu/i915/i915_drv.h @@ -0,0 +1,1750 @@ +/* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- + */ +/* + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef _I915_DRV_H_ +#define _I915_DRV_H_ + +#include "i915_reg.h" +#include "intel_bios.h" +#include "intel_ringbuffer.h" +#include +#include +#include +#include +#include +#include +#include + +/* General customization: + */ + +#define DRIVER_AUTHOR "Tungsten Graphics, Inc." + +#define DRIVER_NAME "i915" +#define DRIVER_DESC "Intel Graphics" +#define DRIVER_DATE "20080730" + +enum pipe { + PIPE_A = 0, + PIPE_B, + PIPE_C, + I915_MAX_PIPES +}; +#define pipe_name(p) ((p) + 'A') + +enum transcoder { + TRANSCODER_A = 0, + TRANSCODER_B, + TRANSCODER_C, + TRANSCODER_EDP = 0xF, +}; +#define transcoder_name(t) ((t) + 'A') + +enum plane { + PLANE_A = 0, + PLANE_B, + PLANE_C, +}; +#define plane_name(p) ((p) + 'A') + +enum port { + PORT_A = 0, + PORT_B, + PORT_C, + PORT_D, + PORT_E, + I915_MAX_PORTS +}; +#define port_name(p) ((p) + 'A') + +#define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT)) + +#define for_each_pipe(p) for ((p) = 0; (p) < dev_priv->num_pipe; (p)++) + +#define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \ + list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \ + if ((intel_encoder)->base.crtc == (__crtc)) + +struct intel_pch_pll { + int refcount; /* count of number of CRTCs sharing this PLL */ + int active; /* count of number of active CRTCs (i.e. DPMS on) */ + bool on; /* is the PLL actually active? Disabled during modeset */ + int pll_reg; + int fp0_reg; + int fp1_reg; +}; +#define I915_NUM_PLLS 2 + +struct intel_ddi_plls { + int spll_refcount; + int wrpll1_refcount; + int wrpll2_refcount; +}; + +/* Interface history: + * + * 1.1: Original. + * 1.2: Add Power Management + * 1.3: Add vblank support + * 1.4: Fix cmdbuffer path, add heap destroy + * 1.5: Add vblank pipe configuration + * 1.6: - New ioctl for scheduling buffer swaps on vertical blank + * - Support vertical blank on secondary display pipe + */ +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 6 +#define DRIVER_PATCHLEVEL 0 + +#define WATCH_COHERENCY 0 +#define WATCH_LISTS 0 +#define WATCH_GTT 0 + +#define I915_GEM_PHYS_CURSOR_0 1 +#define I915_GEM_PHYS_CURSOR_1 2 +#define I915_GEM_PHYS_OVERLAY_REGS 3 +#define I915_MAX_PHYS_OBJECT (I915_GEM_PHYS_OVERLAY_REGS) + +struct drm_i915_gem_phys_object { + int id; + struct page **page_list; + drm_dma_handle_t *handle; + struct drm_i915_gem_object *cur_obj; +}; + +struct opregion_header; +struct opregion_acpi; +struct opregion_swsci; +struct opregion_asle; +struct drm_i915_private; + +struct intel_opregion { + struct opregion_header __iomem *header; + struct opregion_acpi __iomem *acpi; + struct opregion_swsci __iomem *swsci; + struct opregion_asle __iomem *asle; + void __iomem *vbt; + u32 __iomem *lid_state; +}; +#define OPREGION_SIZE (8*1024) + +struct intel_overlay; +struct intel_overlay_error_state; + +struct drm_i915_master_private { + drm_local_map_t *sarea; + struct _drm_i915_sarea *sarea_priv; +}; +#define I915_FENCE_REG_NONE -1 +#define I915_MAX_NUM_FENCES 16 +/* 16 fences + sign bit for FENCE_REG_NONE */ +#define I915_MAX_NUM_FENCE_BITS 5 + +struct drm_i915_fence_reg { + struct list_head lru_list; + struct drm_i915_gem_object *obj; + int pin_count; +}; + +struct sdvo_device_mapping { + u8 initialized; + u8 dvo_port; + u8 slave_addr; + u8 dvo_wiring; + u8 i2c_pin; + u8 ddc_pin; +}; + +struct intel_display_error_state; + +struct drm_i915_error_state { + struct kref ref; + u32 eir; + u32 pgtbl_er; + u32 ier; + u32 ccid; + u32 derrmr; + u32 forcewake; + bool waiting[I915_NUM_RINGS]; + u32 pipestat[I915_MAX_PIPES]; + u32 tail[I915_NUM_RINGS]; + u32 head[I915_NUM_RINGS]; + u32 ctl[I915_NUM_RINGS]; + u32 ipeir[I915_NUM_RINGS]; + u32 ipehr[I915_NUM_RINGS]; + u32 instdone[I915_NUM_RINGS]; + u32 acthd[I915_NUM_RINGS]; + u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1]; + u32 semaphore_seqno[I915_NUM_RINGS][I915_NUM_RINGS - 1]; + u32 rc_psmi[I915_NUM_RINGS]; /* sleep state */ + /* our own tracking of ring head and tail */ + u32 cpu_ring_head[I915_NUM_RINGS]; + u32 cpu_ring_tail[I915_NUM_RINGS]; + u32 error; /* gen6+ */ + u32 err_int; /* gen7 */ + u32 instpm[I915_NUM_RINGS]; + u32 instps[I915_NUM_RINGS]; + u32 extra_instdone[I915_NUM_INSTDONE_REG]; + u32 seqno[I915_NUM_RINGS]; + u64 bbaddr; + u32 fault_reg[I915_NUM_RINGS]; + u32 done_reg; + u32 faddr[I915_NUM_RINGS]; + u64 fence[I915_MAX_NUM_FENCES]; + struct timeval time; + struct drm_i915_error_ring { + struct drm_i915_error_object { + int page_count; + u32 gtt_offset; + u32 *pages[0]; + } *ringbuffer, *batchbuffer; + struct drm_i915_error_request { + long jiffies; + u32 seqno; + u32 tail; + } *requests; + int num_requests; + } ring[I915_NUM_RINGS]; + struct drm_i915_error_buffer { + u32 size; + u32 name; + u32 rseqno, wseqno; + u32 gtt_offset; + u32 read_domains; + u32 write_domain; + s32 fence_reg:I915_MAX_NUM_FENCE_BITS; + s32 pinned:2; + u32 tiling:2; + u32 dirty:1; + u32 purgeable:1; + s32 ring:4; + u32 cache_level:2; + } *active_bo, *pinned_bo; + u32 active_bo_count, pinned_bo_count; + struct intel_overlay_error_state *overlay; + struct intel_display_error_state *display; +}; + +struct drm_i915_display_funcs { + bool (*fbc_enabled)(struct drm_device *dev); + void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval); + void (*disable_fbc)(struct drm_device *dev); + int (*get_display_clock_speed)(struct drm_device *dev); + int (*get_fifo_size)(struct drm_device *dev, int plane); + void (*update_wm)(struct drm_device *dev); + void (*update_sprite_wm)(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size); + void (*update_linetime_wm)(struct drm_device *dev, int pipe, + struct drm_display_mode *mode); + void (*modeset_global_resources)(struct drm_device *dev); + int (*crtc_mode_set)(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *old_fb); + void (*crtc_enable)(struct drm_crtc *crtc); + void (*crtc_disable)(struct drm_crtc *crtc); + void (*off)(struct drm_crtc *crtc); + void (*write_eld)(struct drm_connector *connector, + struct drm_crtc *crtc); + void (*fdi_link_train)(struct drm_crtc *crtc); + void (*init_clock_gating)(struct drm_device *dev); + int (*queue_flip)(struct drm_device *dev, struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj); + int (*update_plane)(struct drm_crtc *crtc, struct drm_framebuffer *fb, + int x, int y); + /* clock updates for mode set */ + /* cursor updates */ + /* render clock increase/decrease */ + /* display clock increase/decrease */ + /* pll clock increase/decrease */ +}; + +struct drm_i915_gt_funcs { + void (*force_wake_get)(struct drm_i915_private *dev_priv); + void (*force_wake_put)(struct drm_i915_private *dev_priv); +}; + +#define DEV_INFO_FLAGS \ + DEV_INFO_FLAG(is_mobile) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i85x) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i915g) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i945gm) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_g33) DEV_INFO_SEP \ + DEV_INFO_FLAG(need_gfx_hws) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_g4x) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_pineview) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_broadwater) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_crestline) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_ivybridge) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_valleyview) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_haswell) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_force_wake) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_fbc) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_pipe_cxsr) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_hotplug) DEV_INFO_SEP \ + DEV_INFO_FLAG(cursor_needs_physical) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_overlay) DEV_INFO_SEP \ + DEV_INFO_FLAG(overlay_needs_physical) DEV_INFO_SEP \ + DEV_INFO_FLAG(supports_tv) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_bsd_ring) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_blt_ring) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_llc) + +struct intel_device_info { + u8 gen; + u8 is_mobile:1; + u8 is_i85x:1; + u8 is_i915g:1; + u8 is_i945gm:1; + u8 is_g33:1; + u8 need_gfx_hws:1; + u8 is_g4x:1; + u8 is_pineview:1; + u8 is_broadwater:1; + u8 is_crestline:1; + u8 is_ivybridge:1; + u8 is_valleyview:1; + u8 has_force_wake:1; + u8 is_haswell:1; + u8 has_fbc:1; + u8 has_pipe_cxsr:1; + u8 has_hotplug:1; + u8 cursor_needs_physical:1; + u8 has_overlay:1; + u8 overlay_needs_physical:1; + u8 supports_tv:1; + u8 has_bsd_ring:1; + u8 has_blt_ring:1; + u8 has_llc:1; +}; + +#define I915_PPGTT_PD_ENTRIES 512 +#define I915_PPGTT_PT_ENTRIES 1024 +struct i915_hw_ppgtt { + struct drm_device *dev; + unsigned num_pd_entries; + struct page **pt_pages; + uint32_t pd_offset; + dma_addr_t *pt_dma_addr; + dma_addr_t scratch_page_dma_addr; +}; + + +/* This must match up with the value previously used for execbuf2.rsvd1. */ +#define DEFAULT_CONTEXT_ID 0 +struct i915_hw_context { + int id; + bool is_initialized; + struct drm_i915_file_private *file_priv; + struct intel_ring_buffer *ring; + struct drm_i915_gem_object *obj; +}; + +enum no_fbc_reason { + FBC_NO_OUTPUT, /* no outputs enabled to compress */ + FBC_STOLEN_TOO_SMALL, /* not enough space to hold compressed buffers */ + FBC_UNSUPPORTED_MODE, /* interlace or doublescanned mode */ + FBC_MODE_TOO_LARGE, /* mode too large for compression */ + FBC_BAD_PLANE, /* fbc not supported on plane */ + FBC_NOT_TILED, /* buffer not tiled */ + FBC_MULTIPLE_PIPES, /* more than one pipe active */ + FBC_MODULE_PARAM, +}; + +enum intel_pch { + PCH_NONE = 0, /* No PCH present */ + PCH_IBX, /* Ibexpeak PCH */ + PCH_CPT, /* Cougarpoint PCH */ + PCH_LPT, /* Lynxpoint PCH */ +}; + +enum intel_sbi_destination { + SBI_ICLK, + SBI_MPHY, +}; + +#define QUIRK_PIPEA_FORCE (1<<0) +#define QUIRK_LVDS_SSC_DISABLE (1<<1) +#define QUIRK_INVERT_BRIGHTNESS (1<<2) + +struct intel_fbdev; +struct intel_fbc_work; + +struct intel_gmbus { + struct i2c_adapter adapter; + u32 force_bit; + u32 reg0; + u32 gpio_reg; + struct i2c_algo_bit_data bit_algo; + struct drm_i915_private *dev_priv; +}; + +struct i915_suspend_saved_registers { + u8 saveLBB; + u32 saveDSPACNTR; + u32 saveDSPBCNTR; + u32 saveDSPARB; + u32 savePIPEACONF; + u32 savePIPEBCONF; + u32 savePIPEASRC; + u32 savePIPEBSRC; + u32 saveFPA0; + u32 saveFPA1; + u32 saveDPLL_A; + u32 saveDPLL_A_MD; + u32 saveHTOTAL_A; + u32 saveHBLANK_A; + u32 saveHSYNC_A; + u32 saveVTOTAL_A; + u32 saveVBLANK_A; + u32 saveVSYNC_A; + u32 saveBCLRPAT_A; + u32 saveTRANSACONF; + u32 saveTRANS_HTOTAL_A; + u32 saveTRANS_HBLANK_A; + u32 saveTRANS_HSYNC_A; + u32 saveTRANS_VTOTAL_A; + u32 saveTRANS_VBLANK_A; + u32 saveTRANS_VSYNC_A; + u32 savePIPEASTAT; + u32 saveDSPASTRIDE; + u32 saveDSPASIZE; + u32 saveDSPAPOS; + u32 saveDSPAADDR; + u32 saveDSPASURF; + u32 saveDSPATILEOFF; + u32 savePFIT_PGM_RATIOS; + u32 saveBLC_HIST_CTL; + u32 saveBLC_PWM_CTL; + u32 saveBLC_PWM_CTL2; + u32 saveBLC_CPU_PWM_CTL; + u32 saveBLC_CPU_PWM_CTL2; + u32 saveFPB0; + u32 saveFPB1; + u32 saveDPLL_B; + u32 saveDPLL_B_MD; + u32 saveHTOTAL_B; + u32 saveHBLANK_B; + u32 saveHSYNC_B; + u32 saveVTOTAL_B; + u32 saveVBLANK_B; + u32 saveVSYNC_B; + u32 saveBCLRPAT_B; + u32 saveTRANSBCONF; + u32 saveTRANS_HTOTAL_B; + u32 saveTRANS_HBLANK_B; + u32 saveTRANS_HSYNC_B; + u32 saveTRANS_VTOTAL_B; + u32 saveTRANS_VBLANK_B; + u32 saveTRANS_VSYNC_B; + u32 savePIPEBSTAT; + u32 saveDSPBSTRIDE; + u32 saveDSPBSIZE; + u32 saveDSPBPOS; + u32 saveDSPBADDR; + u32 saveDSPBSURF; + u32 saveDSPBTILEOFF; + u32 saveVGA0; + u32 saveVGA1; + u32 saveVGA_PD; + u32 saveVGACNTRL; + u32 saveADPA; + u32 saveLVDS; + u32 savePP_ON_DELAYS; + u32 savePP_OFF_DELAYS; + u32 saveDVOA; + u32 saveDVOB; + u32 saveDVOC; + u32 savePP_ON; + u32 savePP_OFF; + u32 savePP_CONTROL; + u32 savePP_DIVISOR; + u32 savePFIT_CONTROL; + u32 save_palette_a[256]; + u32 save_palette_b[256]; + u32 saveDPFC_CB_BASE; + u32 saveFBC_CFB_BASE; + u32 saveFBC_LL_BASE; + u32 saveFBC_CONTROL; + u32 saveFBC_CONTROL2; + u32 saveIER; + u32 saveIIR; + u32 saveIMR; + u32 saveDEIER; + u32 saveDEIMR; + u32 saveGTIER; + u32 saveGTIMR; + u32 saveFDI_RXA_IMR; + u32 saveFDI_RXB_IMR; + u32 saveCACHE_MODE_0; + u32 saveMI_ARB_STATE; + u32 saveSWF0[16]; + u32 saveSWF1[16]; + u32 saveSWF2[3]; + u8 saveMSR; + u8 saveSR[8]; + u8 saveGR[25]; + u8 saveAR_INDEX; + u8 saveAR[21]; + u8 saveDACMASK; + u8 saveCR[37]; + uint64_t saveFENCE[I915_MAX_NUM_FENCES]; + u32 saveCURACNTR; + u32 saveCURAPOS; + u32 saveCURABASE; + u32 saveCURBCNTR; + u32 saveCURBPOS; + u32 saveCURBBASE; + u32 saveCURSIZE; + u32 saveDP_B; + u32 saveDP_C; + u32 saveDP_D; + u32 savePIPEA_GMCH_DATA_M; + u32 savePIPEB_GMCH_DATA_M; + u32 savePIPEA_GMCH_DATA_N; + u32 savePIPEB_GMCH_DATA_N; + u32 savePIPEA_DP_LINK_M; + u32 savePIPEB_DP_LINK_M; + u32 savePIPEA_DP_LINK_N; + u32 savePIPEB_DP_LINK_N; + u32 saveFDI_RXA_CTL; + u32 saveFDI_TXA_CTL; + u32 saveFDI_RXB_CTL; + u32 saveFDI_TXB_CTL; + u32 savePFA_CTL_1; + u32 savePFB_CTL_1; + u32 savePFA_WIN_SZ; + u32 savePFB_WIN_SZ; + u32 savePFA_WIN_POS; + u32 savePFB_WIN_POS; + u32 savePCH_DREF_CONTROL; + u32 saveDISP_ARB_CTL; + u32 savePIPEA_DATA_M1; + u32 savePIPEA_DATA_N1; + u32 savePIPEA_LINK_M1; + u32 savePIPEA_LINK_N1; + u32 savePIPEB_DATA_M1; + u32 savePIPEB_DATA_N1; + u32 savePIPEB_LINK_M1; + u32 savePIPEB_LINK_N1; + u32 saveMCHBAR_RENDER_STANDBY; + u32 savePCH_PORT_HOTPLUG; +}; + +struct intel_gen6_power_mgmt { + struct work_struct work; + u32 pm_iir; + /* lock - irqsave spinlock that protectects the work_struct and + * pm_iir. */ + spinlock_t lock; + + /* The below variables an all the rps hw state are protected by + * dev->struct mutext. */ + u8 cur_delay; + u8 min_delay; + u8 max_delay; + + struct delayed_work delayed_resume_work; + + /* + * Protects RPS/RC6 register access and PCU communication. + * Must be taken after struct_mutex if nested. + */ + struct mutex hw_lock; +}; + +struct intel_ilk_power_mgmt { + u8 cur_delay; + u8 min_delay; + u8 max_delay; + u8 fmax; + u8 fstart; + + u64 last_count1; + unsigned long last_time1; + unsigned long chipset_power; + u64 last_count2; + struct timespec last_time2; + unsigned long gfx_power; + u8 corr; + + int c_m; + int r_t; + + struct drm_i915_gem_object *pwrctx; + struct drm_i915_gem_object *renderctx; +}; + +struct i915_dri1_state { + unsigned allow_batchbuffer : 1; + u32 __iomem *gfx_hws_cpu_addr; + + unsigned int cpp; + int back_offset; + int front_offset; + int current_page; + int page_flipping; + + uint32_t counter; +}; + +struct intel_l3_parity { + u32 *remap_info; + struct work_struct error_work; +}; + +typedef struct drm_i915_private { + struct drm_device *dev; + + const struct intel_device_info *info; + + int relative_constants_mode; + + void __iomem *regs; + + struct drm_i915_gt_funcs gt; + /** gt_fifo_count and the subsequent register write are synchronized + * with dev->struct_mutex. */ + unsigned gt_fifo_count; + /** forcewake_count is protected by gt_lock */ + unsigned forcewake_count; + /** gt_lock is also taken in irq contexts. */ + struct spinlock gt_lock; + + struct intel_gmbus gmbus[GMBUS_NUM_PORTS]; + + /** gmbus_mutex protects against concurrent usage of the single hw gmbus + * controller on different i2c buses. */ + struct mutex gmbus_mutex; + + /** + * Base address of the gmbus and gpio block. + */ + uint32_t gpio_mmio_base; + + struct pci_dev *bridge_dev; + struct intel_ring_buffer ring[I915_NUM_RINGS]; + uint32_t next_seqno; + + drm_dma_handle_t *status_page_dmah; + struct resource mch_res; + + atomic_t irq_received; + + /* protects the irq masks */ + spinlock_t irq_lock; + + /* DPIO indirect register protection */ + spinlock_t dpio_lock; + + /** Cached value of IMR to avoid reads in updating the bitfield */ + u32 pipestat[2]; + u32 irq_mask; + u32 gt_irq_mask; + u32 pch_irq_mask; + + u32 hotplug_supported_mask; + struct work_struct hotplug_work; + + int num_pipe; + int num_pch_pll; + + /* For hangcheck timer */ +#define DRM_I915_HANGCHECK_PERIOD 1500 /* in ms */ +#define DRM_I915_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_I915_HANGCHECK_PERIOD) + struct timer_list hangcheck_timer; + int hangcheck_count; + uint32_t last_acthd[I915_NUM_RINGS]; + uint32_t prev_instdone[I915_NUM_INSTDONE_REG]; + + unsigned int stop_rings; + + unsigned long cfb_size; + unsigned int cfb_fb; + enum plane cfb_plane; + int cfb_y; + struct intel_fbc_work *fbc_work; + + struct intel_opregion opregion; + + /* overlay */ + struct intel_overlay *overlay; + bool sprite_scaling_enabled; + + /* LVDS info */ + int backlight_level; /* restore backlight to this value */ + bool backlight_enabled; + struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */ + struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */ + + /* Feature bits from the VBIOS */ + unsigned int int_tv_support:1; + unsigned int lvds_dither:1; + unsigned int lvds_vbt:1; + unsigned int int_crt_support:1; + unsigned int lvds_use_ssc:1; + unsigned int display_clock_mode:1; + 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 */ + struct { + int rate; + int lanes; + int preemphasis; + int vswing; + + bool initialized; + bool support; + int bpp; + struct edp_power_seq pps; + } edp; + bool no_aux_handshake; + + int crt_ddc_pin; + struct drm_i915_fence_reg fence_regs[I915_MAX_NUM_FENCES]; /* assume 965 */ + int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */ + int num_fence_regs; /* 8 on pre-965, 16 otherwise */ + + unsigned int fsb_freq, mem_freq, is_ddr3; + + spinlock_t error_lock; + /* Protected by dev->error_lock. */ + struct drm_i915_error_state *first_error; + struct work_struct error_work; + struct completion error_completion; + struct workqueue_struct *wq; + + /* Display functions */ + struct drm_i915_display_funcs display; + + /* PCH chipset type */ + enum intel_pch pch_type; + unsigned short pch_id; + + unsigned long quirks; + + /* Register state */ + bool modeset_on_lid; + + struct { + /** Bridge to intel-gtt-ko */ + struct intel_gtt *gtt; + /** Memory allocator for GTT stolen memory */ + struct drm_mm_hsw stolen; + /** Memory allocator for GTT */ + struct drm_mm_hsw gtt_space; + /** List of all objects in gtt_space. Used to restore gtt + * mappings on resume */ + struct list_head bound_list; + /** + * List of objects which are not bound to the GTT (thus + * are idle and not used by the GPU) but still have + * (presumably uncached) pages still attached. + */ + struct list_head unbound_list; + + /** Usable portion of the GTT for GEM */ + unsigned long gtt_start; + unsigned long gtt_mappable_end; + unsigned long gtt_end; + unsigned long stolen_base; /* limited to low memory (32-bit) */ + + struct io_mapping *gtt_mapping; + phys_addr_t gtt_base_addr; + int gtt_mtrr; + + /** PPGTT used for aliasing the PPGTT with the GTT */ + struct i915_hw_ppgtt *aliasing_ppgtt; + + struct shrinker inactive_shrinker; + bool shrinker_no_lock_stealing; + + /** + * List of objects currently involved in rendering. + * + * Includes buffers having the contents of their GPU caches + * flushed, not necessarily primitives. last_rendering_seqno + * represents when the rendering involved will be completed. + * + * A reference is held on the buffer while on this list. + */ + struct list_head active_list; + + /** + * LRU list of objects which are not in the ringbuffer and + * are ready to unbind, but are still in the GTT. + * + * last_rendering_seqno is 0 while an object is in this list. + * + * A reference is not held on the buffer while on this list, + * as merely being GTT-bound shouldn't prevent its being + * freed, and we'll pull it off the list in the free path. + */ + struct list_head inactive_list; + + /** LRU list of objects with fence regs on them. */ + struct list_head fence_list; + + /** + * We leave the user IRQ off as much as possible, + * but this means that requests will finish and never + * be retired once the system goes idle. Set a timer to + * fire periodically while the ring is running. When it + * fires, go retire requests. + */ + struct delayed_work retire_work; + + /** + * Are we in a non-interruptible section of code like + * modesetting? + */ + bool interruptible; + + /** + * Flag if the X Server, and thus DRM, is not currently in + * control of the device. + * + * This is set between LeaveVT and EnterVT. It needs to be + * replaced with a semaphore. It also needs to be + * transitioned away from for kernel modesetting. + */ + int suspended; + + /** + * Flag if the hardware appears to be wedged. + * + * This is set when attempts to idle the device timeout. + * It prevents command submission from occurring and makes + * every pending request fail + */ + atomic_t wedged; + + /** Bit 6 swizzling required for X tiling */ + uint32_t bit_6_swizzle_x; + /** Bit 6 swizzling required for Y tiling */ + uint32_t bit_6_swizzle_y; + + /* storage for physical objects */ + struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT]; + + /* accounting, useful for userland debugging */ + size_t gtt_total; + size_t mappable_gtt_total; + size_t object_memory; + u32 object_count; + } mm; + + /* Kernel Modesetting */ + + struct sdvo_device_mapping sdvo_mappings[2]; + /* indicate whether the LVDS_BORDER should be enabled or not */ + unsigned int lvds_border_bits; + /* Panel fitter placement and size for Ironlake+ */ + u32 pch_pf_pos, pch_pf_size; + + struct drm_crtc *plane_to_crtc_mapping[3]; + struct drm_crtc *pipe_to_crtc_mapping[3]; + wait_queue_head_t pending_flip_queue; + + struct intel_pch_pll pch_plls[I915_NUM_PLLS]; + struct intel_ddi_plls ddi_plls; + + /* Reclocking support */ + bool render_reclock_avail; + bool lvds_downclock_avail; + /* indicates the reduced downclock for LVDS*/ + int lvds_downclock; + u16 orig_clock; + int child_dev_num; + struct child_device_config *child_dev; + + bool mchbar_need_disable; + + struct intel_l3_parity l3_parity; + + /* gen6+ rps state */ + struct intel_gen6_power_mgmt rps; + + /* ilk-only ips/rps state. Everything in here is protected by the global + * mchdev_lock in intel_pm.c */ + struct intel_ilk_power_mgmt ips; + + enum no_fbc_reason no_fbc_reason; + + struct drm_mm_node_hsw *compressed_fb; + struct drm_mm_node_hsw *compressed_llb; + + unsigned long last_gpu_reset; + + /* list of fbdev register on this device */ + struct intel_fbdev *fbdev; + + /* + * The console may be contended at resume, but we don't + * want it to block on it. + */ + struct work_struct console_resume_work; + + struct backlight_device *backlight; + + struct drm_property *broadcast_rgb_property; + struct drm_property *force_audio_property; + + bool hw_contexts_disabled; + uint32_t hw_context_size; + + u32 fdi_rx_config; + + struct i915_suspend_saved_registers regfile; + + /* Old dri1 support infrastructure, beware the dragons ya fools entering + * here! */ + struct i915_dri1_state dri1; +} drm_i915_private_t; + +/* Iterate over initialised rings */ +#define for_each_ring(ring__, dev_priv__, i__) \ + for ((i__) = 0; (i__) < I915_NUM_RINGS; (i__)++) \ + if (((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__))) + +enum hdmi_force_audio { + HDMI_AUDIO_OFF_DVI = -2, /* no aux data for HDMI-DVI converter */ + HDMI_AUDIO_OFF, /* force turn off HDMI audio */ + HDMI_AUDIO_AUTO, /* trust EDID */ + HDMI_AUDIO_ON, /* force turn on HDMI audio */ +}; + +enum i915_cache_level { + I915_CACHE_NONE = 0, + I915_CACHE_LLC, + I915_CACHE_LLC_MLC, /* gen6+, in docs at least! */ +}; + +struct drm_i915_gem_object_ops { + /* Interface between the GEM object and its backing storage. + * get_pages() is called once prior to the use of the associated set + * of pages before to binding them into the GTT, and put_pages() is + * called after we no longer need them. As we expect there to be + * associated cost with migrating pages between the backing storage + * and making them available for the GPU (e.g. clflush), we may hold + * onto the pages after they are no longer referenced by the GPU + * in case they may be used again shortly (for example migrating the + * pages to a different memory domain within the GTT). put_pages() + * will therefore most likely be called when the object itself is + * being released or under memory pressure (where we attempt to + * reap pages for the shrinker). + */ + int (*get_pages)(struct drm_i915_gem_object *); + void (*put_pages)(struct drm_i915_gem_object *); +}; + +struct drm_i915_gem_object { + struct drm_gem_object base; + + const struct drm_i915_gem_object_ops *ops; + + /** Current space allocated to this object in the GTT, if any. */ + struct drm_mm_node_hsw *gtt_space; + struct list_head gtt_list; + + /** This object's place on the active/inactive lists */ + struct list_head ring_list; + struct list_head mm_list; + /** This object's place in the batchbuffer or on the eviction list */ + struct list_head exec_list; + + /** + * This is set if the object is on the active lists (has pending + * rendering and so a non-zero seqno), and is not set if it i s on + * inactive (ready to be unbound) list. + */ + unsigned int active:1; + + /** + * This is set if the object has been written to since last bound + * to the GTT + */ + unsigned int dirty:1; + + /** + * Fence register bits (if any) for this object. Will be set + * as needed when mapped into the GTT. + * Protected by dev->struct_mutex. + */ + signed int fence_reg:I915_MAX_NUM_FENCE_BITS; + + /** + * Advice: are the backing pages purgeable? + */ + unsigned int madv:2; + + /** + * Current tiling mode for the object. + */ + unsigned int tiling_mode:2; + /** + * Whether the tiling parameters for the currently associated fence + * register have changed. Note that for the purposes of tracking + * tiling changes we also treat the unfenced register, the register + * slot that the object occupies whilst it executes a fenced + * command (such as BLT on gen2/3), as a "fence". + */ + unsigned int fence_dirty:1; + + /** How many users have pinned this object in GTT space. The following + * users can each hold at most one reference: pwrite/pread, pin_ioctl + * (via user_pin_count), execbuffer (objects are not allowed multiple + * times for the same batchbuffer), and the framebuffer code. When + * switching/pageflipping, the framebuffer code has at most two buffers + * pinned per crtc. + * + * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 + * bits with absolutely no headroom. So use 4 bits. */ + unsigned int pin_count:4; +#define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf + + /** + * Is the object at the current location in the gtt mappable and + * fenceable? Used to avoid costly recalculations. + */ + unsigned int map_and_fenceable:1; + + /** + * Whether the current gtt mapping needs to be mappable (and isn't just + * mappable by accident). Track pin and fault separate for a more + * accurate mappable working set. + */ + unsigned int fault_mappable:1; + unsigned int pin_mappable:1; + + /* + * Is the GPU currently using a fence to access this buffer, + */ + unsigned int pending_fenced_gpu_access:1; + unsigned int fenced_gpu_access:1; + + unsigned int cache_level:2; + + unsigned int has_aliasing_ppgtt_mapping:1; + unsigned int has_global_gtt_mapping:1; + unsigned int has_dma_mapping:1; + + struct sg_table *pages; + int pages_pin_count; + + /* prime dma-buf support */ + void *dma_buf_vmapping; + int vmapping_count; + + /** + * Used for performing relocations during execbuffer insertion. + */ + struct hlist_node exec_node; + unsigned long exec_handle; + struct drm_i915_gem_exec_object2 *exec_entry; + + /** + * Current offset of the object in GTT space. + * + * This is the same as gtt_space->start + */ + uint32_t gtt_offset; + + struct intel_ring_buffer *ring; + + /** Breadcrumb of last rendering to the buffer. */ + uint32_t last_read_seqno; + uint32_t last_write_seqno; + /** Breadcrumb of last fenced GPU access to the buffer. */ + uint32_t last_fenced_seqno; + + /** Current tiling stride for the object, if it's tiled. */ + uint32_t stride; + + /** Record of address bit 17 of each page at last unbind. */ + unsigned long *bit_17; + + /** User space pin count and filp owning the pin */ + uint32_t user_pin_count; + struct drm_file *pin_filp; + + /** for phy allocated objects */ + struct drm_i915_gem_phys_object *phys_obj; + + /** + * Number of crtcs where this object is currently the fb, but + * will be page flipped away on the next vblank. When it + * reaches 0, dev_priv->pending_flip_queue will be woken up. + */ + atomic_t pending_flip; +}; +#define to_gem_object(obj) (&((struct drm_i915_gem_object *)(obj))->base) + +#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) + +/** + * Request queue structure. + * + * The request queue allows us to note sequence numbers that have been emitted + * and may be associated with active buffers to be retired. + * + * By keeping this list, we can avoid having to do questionable + * sequence-number comparisons on buffer last_rendering_seqnos, and associate + * an emission time with seqnos for tracking how far ahead of the GPU we are. + */ +struct drm_i915_gem_request { + /** On Which ring this request was generated */ + struct intel_ring_buffer *ring; + + /** GEM sequence number associated with this request. */ + uint32_t seqno; + + /** Postion in the ringbuffer of the end of the request */ + u32 tail; + + /** Time at which this request was emitted, in jiffies. */ + unsigned long emitted_jiffies; + + /** global list entry for this request */ + struct list_head list; + + struct drm_i915_file_private *file_priv; + /** file_priv list entry for this request */ + struct list_head client_list; +}; + +struct drm_i915_file_private { + struct { + struct spinlock lock; + struct list_head request_list; + } mm; + struct idr context_idr; +}; + +#define INTEL_INFO(dev) (((struct drm_i915_private *) (dev)->dev_private)->info) + +#define IS_I830(dev) ((dev)->pci_device == 0x3577) +#define IS_845G(dev) ((dev)->pci_device == 0x2562) +#define IS_I85X(dev) (INTEL_INFO(dev)->is_i85x) +#define IS_I865G(dev) ((dev)->pci_device == 0x2572) +#define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g) +#define IS_I915GM(dev) ((dev)->pci_device == 0x2592) +#define IS_I945G(dev) ((dev)->pci_device == 0x2772) +#define IS_I945GM(dev) (INTEL_INFO(dev)->is_i945gm) +#define IS_BROADWATER(dev) (INTEL_INFO(dev)->is_broadwater) +#define IS_CRESTLINE(dev) (INTEL_INFO(dev)->is_crestline) +#define IS_GM45(dev) ((dev)->pci_device == 0x2A42) +#define IS_G4X(dev) (INTEL_INFO(dev)->is_g4x) +#define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001) +#define IS_PINEVIEW_M(dev) ((dev)->pci_device == 0xa011) +#define IS_PINEVIEW(dev) (INTEL_INFO(dev)->is_pineview) +#define IS_G33(dev) (INTEL_INFO(dev)->is_g33) +#define IS_IRONLAKE_D(dev) ((dev)->pci_device == 0x0042) +#define IS_IRONLAKE_M(dev) ((dev)->pci_device == 0x0046) +#define IS_IVYBRIDGE(dev) (INTEL_INFO(dev)->is_ivybridge) +#define IS_IVB_GT1(dev) ((dev)->pci_device == 0x0156 || \ + (dev)->pci_device == 0x0152 || \ + (dev)->pci_device == 0x015a) +#define IS_SNB_GT1(dev) ((dev)->pci_device == 0x0102 || \ + (dev)->pci_device == 0x0106 || \ + (dev)->pci_device == 0x010A) +#define IS_VALLEYVIEW(dev) (INTEL_INFO(dev)->is_valleyview) +#define IS_HASWELL(dev) (INTEL_INFO(dev)->is_haswell) +#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile) +#define IS_ULT(dev) (IS_HASWELL(dev) && \ + ((dev)->pci_device & 0xFF00) == 0x0A00) + +/* + * The genX designation typically refers to the render engine, so render + * capability related checks should use IS_GEN, while display and other checks + * have their own (e.g. HAS_PCH_SPLIT for ILK+ display, IS_foo for particular + * chips, etc.). + */ +#define IS_GEN2(dev) (INTEL_INFO(dev)->gen == 2) +#define IS_GEN3(dev) (INTEL_INFO(dev)->gen == 3) +#define IS_GEN4(dev) (INTEL_INFO(dev)->gen == 4) +#define IS_GEN5(dev) (INTEL_INFO(dev)->gen == 5) +#define IS_GEN6(dev) (INTEL_INFO(dev)->gen == 6) +#define IS_GEN7(dev) (INTEL_INFO(dev)->gen == 7) + +#define HAS_BSD(dev) (INTEL_INFO(dev)->has_bsd_ring) +#define HAS_BLT(dev) (INTEL_INFO(dev)->has_blt_ring) +#define HAS_LLC(dev) (INTEL_INFO(dev)->has_llc) +#define I915_NEED_GFX_HWS(dev) (INTEL_INFO(dev)->need_gfx_hws) + +#define HAS_HW_CONTEXTS(dev) (INTEL_INFO(dev)->gen >= 6) +#define HAS_ALIASING_PPGTT(dev) (INTEL_INFO(dev)->gen >=6 && !IS_VALLEYVIEW(dev)) + +#define HAS_OVERLAY(dev) (INTEL_INFO(dev)->has_overlay) +#define OVERLAY_NEEDS_PHYSICAL(dev) (INTEL_INFO(dev)->overlay_needs_physical) + +/* Early gen2 have a totally busted CS tlb and require pinned batches. */ +#define HAS_BROKEN_CS_TLB(dev) (IS_I830(dev) || IS_845G(dev)) + +/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte + * rows, which changed the alignment requirements and fence programming. + */ +#define HAS_128_BYTE_Y_TILING(dev) (!IS_GEN2(dev) && !(IS_I915G(dev) || \ + IS_I915GM(dev))) +#define SUPPORTS_DIGITAL_OUTPUTS(dev) (!IS_GEN2(dev) && !IS_PINEVIEW(dev)) +#define SUPPORTS_INTEGRATED_HDMI(dev) (IS_G4X(dev) || IS_GEN5(dev)) +#define SUPPORTS_INTEGRATED_DP(dev) (IS_G4X(dev) || IS_GEN5(dev)) +#define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev)) +#define SUPPORTS_TV(dev) (INTEL_INFO(dev)->supports_tv) +#define I915_HAS_HOTPLUG(dev) (INTEL_INFO(dev)->has_hotplug) +/* dsparb controlled by hw only */ +#define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) + +#define HAS_FW_BLC(dev) (INTEL_INFO(dev)->gen > 2) +#define HAS_PIPE_CXSR(dev) (INTEL_INFO(dev)->has_pipe_cxsr) +#define I915_HAS_FBC(dev) (INTEL_INFO(dev)->has_fbc) + +#define HAS_PIPE_CONTROL(dev) (INTEL_INFO(dev)->gen >= 5) + +#define INTEL_PCH_DEVICE_ID_MASK 0xff00 +#define INTEL_PCH_IBX_DEVICE_ID_TYPE 0x3b00 +#define INTEL_PCH_CPT_DEVICE_ID_TYPE 0x1c00 +#define INTEL_PCH_PPT_DEVICE_ID_TYPE 0x1e00 +#define INTEL_PCH_LPT_DEVICE_ID_TYPE 0x8c00 +#define INTEL_PCH_LPT_LP_DEVICE_ID_TYPE 0x9c00 + +#define INTEL_PCH_TYPE(dev) (((struct drm_i915_private *)(dev)->dev_private)->pch_type) +#define HAS_PCH_LPT(dev) (INTEL_PCH_TYPE(dev) == PCH_LPT) +#define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT) +#define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX) +#define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE) + +#define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake) + +#define HAS_L3_GPU_CACHE(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + +#define GT_FREQUENCY_MULTIPLIER 50 + +#include "i915_trace.h" + +/** + * RC6 is a special power stage which allows the GPU to enter an very + * low-voltage mode when idle, using down to 0V while at this stage. This + * stage is entered automatically when the GPU is idle when RC6 support is + * enabled, and as soon as new workload arises GPU wakes up automatically as well. + * + * There are different RC6 modes available in Intel GPU, which differentiate + * among each other with the latency required to enter and leave RC6 and + * voltage consumed by the GPU in different states. + * + * The combination of the following flags define which states GPU is allowed + * to enter, while RC6 is the normal RC6 state, RC6p is the deep RC6, and + * RC6pp is deepest RC6. Their support by hardware varies according to the + * GPU, BIOS, chipset and platform. RC6 is usually the safest one and the one + * which brings the most power savings; deeper states save more power, but + * require higher latency to switch to and wake up. + */ +#define INTEL_RC6_ENABLE (1<<0) +#define INTEL_RC6p_ENABLE (1<<1) +#define INTEL_RC6pp_ENABLE (1<<2) + +extern struct drm_ioctl_desc i915_ioctls[]; +extern int i915_max_ioctl; +extern unsigned int i915_fbpercrtc __always_unused; +extern int i915_panel_ignore_lid __read_mostly; +extern unsigned int i915_powersave __read_mostly; +extern int i915_semaphores __read_mostly; +extern unsigned int i915_lvds_downclock __read_mostly; +extern int i915_lvds_channel_mode __read_mostly; +extern int i915_panel_use_ssc __read_mostly; +extern int i915_vbt_sdvo_panel_type __read_mostly; +extern int i915_enable_rc6 __read_mostly; +extern int i915_enable_fbc __read_mostly; +extern bool i915_enable_hangcheck __read_mostly; +extern int i915_enable_ppgtt __read_mostly; +extern unsigned int i915_preliminary_hw_support __read_mostly; + +extern int i915_suspend(struct drm_device *dev, pm_message_t state); +extern int i915_resume(struct drm_device *dev); +extern int i915_master_create(struct drm_device *dev, struct drm_master *master); +extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master); + + /* i915_dma.c */ +void i915_update_dri1_breadcrumb(struct drm_device *dev); +extern void i915_kernel_lost_context(struct drm_device * dev); +extern int i915_driver_load(struct drm_device *, unsigned long flags); +extern int i915_driver_unload(struct drm_device *); +extern int i915_driver_open(struct drm_device *dev, struct drm_file *file_priv); +extern void i915_driver_lastclose(struct drm_device * dev); +extern void i915_driver_preclose(struct drm_device *dev, + struct drm_file *file_priv); +extern void i915_driver_postclose(struct drm_device *dev, + struct drm_file *file_priv); +extern int i915_driver_device_is_agp(struct drm_device * dev); +#ifdef CONFIG_COMPAT +extern long i915_compat_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg); +#endif +extern int i915_emit_box(struct drm_device *dev, + struct drm_clip_rect *box, + int DR1, int DR4); +extern int intel_gpu_reset(struct drm_device *dev); +extern int i915_reset(struct drm_device *dev); +extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); +extern unsigned long i915_mch_val(struct drm_i915_private *dev_priv); +extern unsigned long i915_gfx_val(struct drm_i915_private *dev_priv); +extern void i915_update_gfx_val(struct drm_i915_private *dev_priv); + +extern void intel_console_resume(struct work_struct *work); + +/* i915_irq.c */ +void i915_hangcheck_elapsed(unsigned long data); +void i915_handle_error(struct drm_device *dev, bool wedged); + +extern void intel_irq_init(struct drm_device *dev); +extern void intel_gt_init(struct drm_device *dev); +extern void intel_gt_reset(struct drm_device *dev); + +void i915_error_state_free(struct kref *error_ref); + +void +i915_enable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask); + +void +i915_disable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask); + +void intel_enable_asle(struct drm_device *dev); + +#ifdef CONFIG_DEBUG_FS +extern void i915_destroy_error_state(struct drm_device *dev); +#else +#define i915_destroy_error_state(x) +#endif + + +/* i915_gem.c */ +int i915_gem_init_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pread_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_mmap_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_execbuffer2(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_unpin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_busy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_throttle_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_madvise_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_entervt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_leavevt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_set_tiling(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_tiling(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_wait_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +void i915_gem_load(struct drm_device *dev); +int i915_gem_init_object(struct drm_gem_object *obj); +void i915_gem_object_init(struct drm_i915_gem_object *obj, + const struct drm_i915_gem_object_ops *ops); +struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, + size_t size); +void i915_gem_free_object(struct drm_gem_object *obj); +int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj, + uint32_t alignment, + bool map_and_fenceable, + bool nonblocking); +void i915_gem_object_unpin(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_unbind(struct drm_i915_gem_object *obj); +void i915_gem_release_mmap(struct drm_i915_gem_object *obj); +void i915_gem_lastclose(struct drm_device *dev); + +int __must_check i915_gem_object_get_pages(struct drm_i915_gem_object *obj); +static inline struct page *i915_gem_object_get_page(struct drm_i915_gem_object *obj, int n) +{ + struct scatterlist *sg = obj->pages->sgl; + int nents = obj->pages->nents; + while (nents > SG_MAX_SINGLE_ALLOC) { + if (n < SG_MAX_SINGLE_ALLOC - 1) + break; + + sg = sg_chain_ptr(sg + SG_MAX_SINGLE_ALLOC - 1); + n -= SG_MAX_SINGLE_ALLOC - 1; + nents -= SG_MAX_SINGLE_ALLOC - 1; + } + return sg_page(sg+n); +} +static inline void i915_gem_object_pin_pages(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pages == NULL); + obj->pages_pin_count++; +} +static inline void i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pages_pin_count == 0); + obj->pages_pin_count--; +} + +int __must_check i915_mutex_lock_interruptible(struct drm_device *dev); +int i915_gem_object_sync(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *to); +void i915_gem_object_move_to_active(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring); + +int i915_gem_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args); +int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev, + uint32_t handle, uint64_t *offset); +int i915_gem_dumb_destroy(struct drm_file *file_priv, struct drm_device *dev, + uint32_t handle); +/** + * Returns true if seq1 is later than seq2. + */ +static inline bool +i915_seqno_passed(uint32_t seq1, uint32_t seq2) +{ + return (int32_t)(seq1 - seq2) >= 0; +} + +extern int i915_gem_get_seqno(struct drm_device *dev, u32 *seqno); + +int __must_check i915_gem_object_get_fence(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_put_fence(struct drm_i915_gem_object *obj); + +static inline bool +i915_gem_object_pin_fence(struct drm_i915_gem_object *obj) +{ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + dev_priv->fence_regs[obj->fence_reg].pin_count++; + return true; + } else + return false; +} + +static inline void +i915_gem_object_unpin_fence(struct drm_i915_gem_object *obj) +{ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + dev_priv->fence_regs[obj->fence_reg].pin_count--; + } +} + +void i915_gem_retire_requests(struct drm_device *dev); +void i915_gem_retire_requests_ring(struct intel_ring_buffer *ring); +int __must_check i915_gem_check_wedge(struct drm_i915_private *dev_priv, + bool interruptible); + +void i915_gem_reset(struct drm_device *dev); +void i915_gem_clflush_object(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_set_domain(struct drm_i915_gem_object *obj, + uint32_t read_domains, + uint32_t write_domain); +int __must_check i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj); +int __must_check i915_gem_init(struct drm_device *dev); +int __must_check i915_gem_init_hw(struct drm_device *dev); +void i915_gem_l3_remap(struct drm_device *dev); +void i915_gem_init_swizzling(struct drm_device *dev); +void i915_gem_init_ppgtt(struct drm_device *dev); +void i915_gem_cleanup_ringbuffer(struct drm_device *dev); +int __must_check i915_gpu_idle(struct drm_device *dev); +int __must_check i915_gem_idle(struct drm_device *dev); +int i915_add_request(struct intel_ring_buffer *ring, + struct drm_file *file, + u32 *seqno); +int __must_check i915_wait_seqno(struct intel_ring_buffer *ring, + uint32_t seqno); +int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); +int __must_check +i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, + bool write); +int __must_check +i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write); +int __must_check +i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj, + u32 alignment, + struct intel_ring_buffer *pipelined); +int i915_gem_attach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj, + int id, + int align); +void i915_gem_detach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj); +void i915_gem_free_all_phys_object(struct drm_device *dev); +void i915_gem_release(struct drm_device *dev, struct drm_file *file); + +uint32_t +i915_gem_get_unfenced_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode); + +int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); + +struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf); + +struct dma_buf *i915_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *gem_obj, int flags); + +/* i915_gem_context.c */ +void i915_gem_context_init(struct drm_device *dev); +void i915_gem_context_fini(struct drm_device *dev); +void i915_gem_context_close(struct drm_device *dev, struct drm_file *file); +int i915_switch_context(struct intel_ring_buffer *ring, + struct drm_file *file, int to_id); +int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); + +/* i915_gem_gtt.c */ +int __must_check i915_gem_init_aliasing_ppgtt(struct drm_device *dev); +void i915_gem_cleanup_aliasing_ppgtt(struct drm_device *dev); +void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); +void i915_ppgtt_unbind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj); + +void i915_gem_restore_gtt_mappings(struct drm_device *dev); +int __must_check i915_gem_gtt_prepare_object(struct drm_i915_gem_object *obj); +void i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); +void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj); +void i915_gem_gtt_finish_object(struct drm_i915_gem_object *obj); +void i915_gem_init_global_gtt(struct drm_device *dev, + unsigned long start, + unsigned long mappable_end, + unsigned long end); +int i915_gem_gtt_init(struct drm_device *dev); +void i915_gem_gtt_fini(struct drm_device *dev); +static inline void i915_gem_chipset_flush(struct drm_device *dev) +{ + if (INTEL_INFO(dev)->gen < 6) + intel_gtt_chipset_flush(); +} + + +/* i915_gem_evict.c */ +int __must_check i915_gem_evict_something(struct drm_device *dev, int min_size, + unsigned alignment, + unsigned cache_level, + bool mappable, + bool nonblock); +int i915_gem_evict_everything(struct drm_device *dev); + +/* i915_gem_stolen.c */ +int i915_gem_init_stolen(struct drm_device *dev); +void i915_gem_cleanup_stolen(struct drm_device *dev); + +/* i915_gem_tiling.c */ +void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); +void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj); +void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj); + +/* i915_gem_debug.c */ +void i915_gem_dump_object(struct drm_i915_gem_object *obj, int len, + const char *where, uint32_t mark); +#if WATCH_LISTS +int i915_verify_lists(struct drm_device *dev); +#else +#define i915_verify_lists(dev) 0 +#endif +void i915_gem_object_check_coherency(struct drm_i915_gem_object *obj, + int handle); +void i915_gem_dump_object(struct drm_i915_gem_object *obj, int len, + const char *where, uint32_t mark); + +/* i915_debugfs.c */ +int i915_debugfs_init(struct drm_minor *minor); +void i915_debugfs_cleanup(struct drm_minor *minor); + +/* i915_suspend.c */ +extern int i915_save_state(struct drm_device *dev); +extern int i915_restore_state(struct drm_device *dev); + +/* i915_suspend.c */ +extern int i915_save_state(struct drm_device *dev); +extern int i915_restore_state(struct drm_device *dev); + +/* i915_sysfs.c */ +void i915_setup_sysfs(struct drm_device *dev_priv); +void i915_teardown_sysfs(struct drm_device *dev_priv); + +/* intel_i2c.c */ +extern int intel_setup_gmbus(struct drm_device *dev); +extern void intel_teardown_gmbus(struct drm_device *dev); +extern inline bool intel_gmbus_is_port_valid(unsigned port) +{ + return (port >= GMBUS_PORT_SSC && port <= GMBUS_PORT_DPD); +} + +extern struct i2c_adapter *intel_gmbus_get_adapter( + struct drm_i915_private *dev_priv, unsigned port); +extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed); +extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); +extern inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter) +{ + return container_of(adapter, struct intel_gmbus, adapter)->force_bit; +} +extern void intel_i2c_reset(struct drm_device *dev); + +/* intel_opregion.c */ +extern int intel_opregion_setup(struct drm_device *dev); +#ifdef CONFIG_ACPI +extern void intel_opregion_init(struct drm_device *dev); +extern void intel_opregion_fini(struct drm_device *dev); +extern void intel_opregion_asle_intr(struct drm_device *dev); +extern void intel_opregion_gse_intr(struct drm_device *dev); +extern void intel_opregion_enable_asle(struct drm_device *dev); +#else +static inline void intel_opregion_init(struct drm_device *dev) { return; } +static inline void intel_opregion_fini(struct drm_device *dev) { return; } +static inline void intel_opregion_asle_intr(struct drm_device *dev) { return; } +static inline void intel_opregion_gse_intr(struct drm_device *dev) { return; } +static inline void intel_opregion_enable_asle(struct drm_device *dev) { return; } +#endif + +/* intel_acpi.c */ +#ifdef CONFIG_ACPI +extern void intel_register_dsm_handler(void); +extern void intel_unregister_dsm_handler(void); +#else +static inline void intel_register_dsm_handler(void) { return; } +static inline void intel_unregister_dsm_handler(void) { return; } +#endif /* CONFIG_ACPI */ + +/* modesetting */ +extern void intel_modeset_init_hw(struct drm_device *dev); +extern void intel_modeset_init(struct drm_device *dev); +extern void intel_modeset_gem_init(struct drm_device *dev); +extern void intel_modeset_cleanup(struct drm_device *dev); +extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); +extern void intel_modeset_setup_hw_state(struct drm_device *dev, + bool force_restore); +extern bool intel_fbc_enabled(struct drm_device *dev); +extern void intel_disable_fbc(struct drm_device *dev); +extern bool ironlake_set_drps(struct drm_device *dev, u8 val); +extern void intel_init_pch_refclk(struct drm_device *dev); +extern void gen6_set_rps(struct drm_device *dev, u8 val); +extern void intel_detect_pch(struct drm_device *dev); +extern int intel_trans_dp_port_sel(struct drm_crtc *crtc); +extern int intel_enable_rc6(const struct drm_device *dev); + +extern bool i915_semaphore_is_enabled(struct drm_device *dev); +int i915_reg_read_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); + +/* overlay */ +#ifdef CONFIG_DEBUG_FS +extern struct intel_overlay_error_state *intel_overlay_capture_error_state(struct drm_device *dev); +extern void intel_overlay_print_error_state(struct seq_file *m, struct intel_overlay_error_state *error); + +extern struct intel_display_error_state *intel_display_capture_error_state(struct drm_device *dev); +extern void intel_display_print_error_state(struct seq_file *m, + struct drm_device *dev, + struct intel_display_error_state *error); +#endif + +/* On SNB platform, before reading ring registers forcewake bit + * must be set to prevent GT core from power down and stale values being + * returned. + */ +void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv); +void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv); +int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv); + +int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val); +int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val); + +#define __i915_read(x, y) \ + u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg); + +__i915_read(8, b) +__i915_read(16, w) +__i915_read(32, l) +__i915_read(64, q) +#undef __i915_read + +#define __i915_write(x, y) \ + void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val); + +__i915_write(8, b) +__i915_write(16, w) +__i915_write(32, l) +__i915_write(64, q) +#undef __i915_write + +#define I915_READ8(reg) i915_read8(dev_priv, (reg)) +#define I915_WRITE8(reg, val) i915_write8(dev_priv, (reg), (val)) + +#define I915_READ16(reg) i915_read16(dev_priv, (reg)) +#define I915_WRITE16(reg, val) i915_write16(dev_priv, (reg), (val)) +#define I915_READ16_NOTRACE(reg) readw(dev_priv->regs + (reg)) +#define I915_WRITE16_NOTRACE(reg, val) writew(val, dev_priv->regs + (reg)) + +#define I915_READ(reg) i915_read32(dev_priv, (reg)) +#define I915_WRITE(reg, val) i915_write32(dev_priv, (reg), (val)) +#define I915_READ_NOTRACE(reg) readl(dev_priv->regs + (reg)) +#define I915_WRITE_NOTRACE(reg, val) writel(val, dev_priv->regs + (reg)) + +#define I915_WRITE64(reg, val) i915_write64(dev_priv, (reg), (val)) +#define I915_READ64(reg) i915_read64(dev_priv, (reg)) + +#define POSTING_READ(reg) (void)I915_READ_NOTRACE(reg) +#define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg) + + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-memcache.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-memcache.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#ifndef _DM_MEM_CACHE_H +#define _DM_MEM_CACHE_H + +#define DM_MEM_CACHE_H_VERSION "0.1" + +#include "dm.h" +#include + +static inline struct page_list *pl_elem(struct page_list *pl, unsigned p) +{ + while (pl && p--) + pl = pl->next; + + return pl; +} + +struct dm_mem_cache_object { + struct page_list *pl; /* Dynamically allocated array */ + void *private; /* Caller context reference */ +}; + +struct dm_mem_cache_client; + +/* + * Create/destroy dm memory cache client resources. + * + * On creation, a number of @objects with @chunks of + * @pages_per_chunk pages will be allocated. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk); +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *client); + +/* + * Grow/shrink a dm memory cache client resources + * by @objetcs amount of objects. + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *client, unsigned objects); +int dm_mem_cache_shrink(struct dm_mem_cache_client *client, unsigned objects); + +/* + * Allocate/free a memory object + * + * On allocation one object with an amount of chunks and + * an amount of pages per chunk will be returned on success. + */ +struct dm_mem_cache_object * +dm_mem_cache_alloc(struct dm_mem_cache_client *client); +void dm_mem_cache_free(struct dm_mem_cache_client *client, + struct dm_mem_cache_object *object); + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-region-hash.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-region-hash.c @@ -0,0 +1,719 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * This file is released under the GPL. + */ + +#include +#include "dm-region-hash.h" + +#include +#include +#include +#include +#include + +#include "dm.h" + +#define DM_MSG_PREFIX "region hash" + +/*----------------------------------------------------------------- + * Region hash + * + * The mirror splits itself up into discrete regions. Each + * region can be in one of three states: clean, dirty, + * nosync. There is no need to put clean regions in the hash. + * + * In addition to being present in the hash table a region _may_ + * be present on one of three lists. + * + * clean_regions: Regions on this list have no io pending to + * them, they are in sync, we are no longer interested in them, + * they are dull. dm_rh_update_states() will remove them from the + * hash table. + * + * quiesced_regions: These regions have been spun down, ready + * for recovery. rh_recovery_start() will remove regions from + * this list and hand them to kmirrord, which will schedule the + * recovery io with kcopyd. + * + * recovered_regions: Regions that kcopyd has successfully + * recovered. dm_rh_update_states() will now schedule any delayed + * io, up the recovery_count, and remove the region from the + * hash. + * + * There are 2 locks: + * A rw spin lock 'hash_lock' protects just the hash table, + * this is never held in write mode from interrupt context, + * which I believe means that we only have to disable irqs when + * doing a write lock. + * + * An ordinary spin lock 'region_lock' that protects the three + * lists in the region_hash, with the 'state', 'list' and + * 'delayed_bios' fields of the regions. This is used from irq + * context, so all other uses will have to suspend local irqs. + *---------------------------------------------------------------*/ +struct dm_region_hash { + uint32_t region_size; + unsigned region_shift; + + /* holds persistent region state */ + struct dm_dirty_log *log; + + /* hash table */ + rwlock_t hash_lock; + mempool_t *region_pool; + unsigned mask; + unsigned nr_buckets; + unsigned prime; + unsigned shift; + struct list_head *buckets; + + unsigned max_recovery; /* Max # of regions to recover in parallel */ + + spinlock_t region_lock; + atomic_t recovery_in_flight; + struct semaphore recovery_count; + struct list_head clean_regions; + struct list_head quiesced_regions; + struct list_head recovered_regions; + struct list_head failed_recovered_regions; + + void *context; + sector_t target_begin; + + /* Callback function to schedule bios writes */ + void (*dispatch_bios)(void *context, struct bio_list *bios); + + /* Callback function to wakeup callers worker thread. */ + void (*wakeup_workers)(void *context); + + /* Callback function to wakeup callers recovery waiters. */ + void (*wakeup_all_recovery_waiters)(void *context); +}; + +struct dm_region { + struct dm_region_hash *rh; /* FIXME: can we get rid of this ? */ + region_t key; + int state; + + struct list_head hash_list; + struct list_head list; + + atomic_t pending; + struct bio_list delayed_bios; +}; + +/* + * Conversion fns + */ +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector) +{ + return sector >> rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_sector_to_region); + +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region) +{ + return region << rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_to_sector); + +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio) +{ + return dm_rh_sector_to_region(rh, bio->bi_sector - rh->target_begin); +} +// EXPORT_SYMBOL_GPL(dm_rh_bio_to_region); + +void *dm_rh_region_context(struct dm_region *reg) +{ + return reg->rh->context; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_context); + +region_t dm_rh_get_region_key(struct dm_region *reg) +{ + return reg->key; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_key); + +sector_t dm_rh_get_region_size(struct dm_region_hash *rh) +{ + return rh->region_size; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_size); + +/* + * FIXME: shall we pass in a structure instead of all these args to + * dm_region_hash_create()???? + */ +#define RH_HASH_MULT 2654435387U +#define RH_HASH_SHIFT 12 + +#define MIN_REGIONS 64 +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions) +{ + struct dm_region_hash *rh; + unsigned nr_buckets, max_buckets; + size_t i; + + /* + * Calculate a suitable number of buckets for our hash + * table. + */ + max_buckets = nr_regions >> 6; + for (nr_buckets = 128u; nr_buckets < max_buckets; nr_buckets <<= 1) + ; + nr_buckets >>= 1; + + rh = kmalloc(sizeof(*rh), GFP_KERNEL); + if (!rh) { + DMERR("unable to allocate region hash memory"); + return ERR_PTR(-ENOMEM); + } + + rh->context = context; + rh->dispatch_bios = dispatch_bios; + rh->wakeup_workers = wakeup_workers; + rh->wakeup_all_recovery_waiters = wakeup_all_recovery_waiters; + rh->target_begin = target_begin; + rh->max_recovery = max_recovery; + rh->log = log; + rh->region_size = region_size; + rh->region_shift = ffs(region_size) - 1; + rwlock_init(&rh->hash_lock); + rh->mask = nr_buckets - 1; + rh->nr_buckets = nr_buckets; + + rh->shift = RH_HASH_SHIFT; + rh->prime = RH_HASH_MULT; + + rh->buckets = vmalloc(nr_buckets * sizeof(*rh->buckets)); + if (!rh->buckets) { + DMERR("unable to allocate region hash bucket memory"); + kfree(rh); + return ERR_PTR(-ENOMEM); + } + + for (i = 0; i < nr_buckets; i++) + INIT_LIST_HEAD(rh->buckets + i); + + spin_lock_init(&rh->region_lock); + sema_init(&rh->recovery_count, 0); + atomic_set(&rh->recovery_in_flight, 0); + INIT_LIST_HEAD(&rh->clean_regions); + INIT_LIST_HEAD(&rh->quiesced_regions); + INIT_LIST_HEAD(&rh->recovered_regions); + INIT_LIST_HEAD(&rh->failed_recovered_regions); + + rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS, + sizeof(struct dm_region)); + if (!rh->region_pool) { + vfree(rh->buckets); + kfree(rh); + rh = ERR_PTR(-ENOMEM); + } + + return rh; +} +// EXPORT_SYMBOL_GPL(dm_region_hash_create); + +void dm_region_hash_destroy(struct dm_region_hash *rh) +{ + unsigned h; + struct dm_region *reg, *nreg; + + BUG_ON(!list_empty(&rh->quiesced_regions)); + for (h = 0; h < rh->nr_buckets; h++) { + list_for_each_entry_safe(reg, nreg, rh->buckets + h, + hash_list) { + BUG_ON(atomic_read(®->pending)); + mempool_free(reg, rh->region_pool); + } + } + + if (rh->log) + dm_dirty_log_destroy(rh->log); + + if (rh->region_pool) + mempool_destroy(rh->region_pool); + + vfree(rh->buckets); + kfree(rh); +} +// EXPORT_SYMBOL_GPL(dm_region_hash_destroy); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh) +{ + return rh->log; +} +// EXPORT_SYMBOL_GPL(dm_rh_dirty_log); + +static unsigned rh_hash(struct dm_region_hash *rh, region_t region) +{ + return (unsigned) ((region * rh->prime) >> rh->shift) & rh->mask; +} + +static struct dm_region *__rh_lookup(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + struct list_head *bucket = rh->buckets + rh_hash(rh, region); + + list_for_each_entry(reg, bucket, hash_list) + if (reg->key == region) + return reg; + + return NULL; +} + +static void __rh_insert(struct dm_region_hash *rh, struct dm_region *reg) +{ + list_add(®->hash_list, rh->buckets + rh_hash(rh, reg->key)); +} + +static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg, *nreg; + + nreg = mempool_alloc(rh->region_pool, GFP_ATOMIC); + if (unlikely(!nreg)) + nreg = kmalloc(sizeof(*nreg), GFP_NOIO | __GFP_NOFAIL); + + nreg->state = rh->log->type->in_sync(rh->log, region, 1) ? + DM_RH_CLEAN : DM_RH_NOSYNC; + nreg->rh = rh; + nreg->key = region; + INIT_LIST_HEAD(&nreg->list); + atomic_set(&nreg->pending, 0); + bio_list_init(&nreg->delayed_bios); + + write_lock_irq(&rh->hash_lock); + reg = __rh_lookup(rh, region); + if (reg) + /* We lost the race. */ + mempool_free(nreg, rh->region_pool); + else { + __rh_insert(rh, nreg); + if (nreg->state == DM_RH_CLEAN) { + spin_lock(&rh->region_lock); + list_add(&nreg->list, &rh->clean_regions); + spin_unlock(&rh->region_lock); + } + + reg = nreg; + } + write_unlock_irq(&rh->hash_lock); + + return reg; +} + +static struct dm_region *__rh_find(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + reg = __rh_lookup(rh, region); + if (!reg) { + read_unlock(&rh->hash_lock); + reg = __rh_alloc(rh, region); + read_lock(&rh->hash_lock); + } + + return reg; +} + +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block) +{ + int r; + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + if (reg) + return reg->state; + + /* + * The region wasn't in the hash, so we fall back to the + * dirty log. + */ + r = rh->log->type->in_sync(rh->log, region, may_block); + + /* + * Any error from the dirty log (eg. -EWOULDBLOCK) gets + * taken as a DM_RH_NOSYNC + */ + return r == 1 ? DM_RH_CLEAN : DM_RH_NOSYNC; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_state); + +static void complete_resync_work(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + rh->log->type->set_region_sync(rh->log, reg->key, success); + + /* + * Dispatch the bios before we call 'wake_up_all'. + * This is important because if we are suspending, + * we want to know that recovery is complete and + * the work queue is flushed. If we wake_up_all + * before we dispatch_bios (queue bios and call wake()), + * then we risk suspending before the work queue + * has been properly flushed. + */ + rh->dispatch_bios(rh->context, ®->delayed_bios); + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); + up(&rh->recovery_count); +} + +/* dm_rh_mark_nosync + * @ms + * @bio + * @done + * @error + * + * The bio was written on some mirror(s) but failed on other mirror(s). + * We can successfully endio the bio but should avoid the region being + * marked clean by setting the state DM_RH_NOSYNC. + * + * This function is _not_ safe in interrupt context! + */ +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error) +{ + unsigned long flags; + struct dm_dirty_log *log = rh->log; + struct dm_region *reg; + region_t region = dm_rh_bio_to_region(rh, bio); + int recovering = 0; + + /* We must inform the log that the sync count has changed. */ + log->type->set_region_sync(log, region, 0); + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + /* region hash entry should exist because write was in-flight */ + BUG_ON(!reg); + BUG_ON(!list_empty(®->list)); + + spin_lock_irqsave(&rh->region_lock, flags); + /* + * Possible cases: + * 1) DM_RH_DIRTY + * 2) DM_RH_NOSYNC: was dirty, other preceeding writes failed + * 3) DM_RH_RECOVERING: flushing pending writes + * Either case, the region should have not been connected to list. + */ + recovering = (reg->state == DM_RH_RECOVERING); + reg->state = DM_RH_NOSYNC; + BUG_ON(!list_empty(®->list)); + spin_unlock_irqrestore(&rh->region_lock, flags); + + bio_endio(bio, error); + if (recovering) + complete_resync_work(reg, 0); +} +// EXPORT_SYMBOL_GPL(dm_rh_mark_nosync); + +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled) +{ + struct dm_region *reg, *next; + + LIST_HEAD(clean); + LIST_HEAD(recovered); + LIST_HEAD(failed_recovered); + + /* + * Quickly grab the lists. + */ + write_lock_irq(&rh->hash_lock); + spin_lock(&rh->region_lock); + if (!list_empty(&rh->clean_regions)) { + list_splice_init(&rh->clean_regions, &clean); + + list_for_each_entry(reg, &clean, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->recovered_regions)) { + list_splice_init(&rh->recovered_regions, &recovered); + + list_for_each_entry(reg, &recovered, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->failed_recovered_regions)) { + list_splice_init(&rh->failed_recovered_regions, + &failed_recovered); + + list_for_each_entry(reg, &failed_recovered, list) + list_del(®->hash_list); + } + + spin_unlock(&rh->region_lock); + write_unlock_irq(&rh->hash_lock); + + /* + * All the regions on the recovered and clean lists have + * now been pulled out of the system, so no need to do + * any more locking. + */ + list_for_each_entry_safe(reg, next, &recovered, list) { + rh->log->type->clear_region(rh->log, reg->key); + complete_resync_work(reg, 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &failed_recovered, list) { + complete_resync_work(reg, errors_handled ? 0 : 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &clean, list) { + rh->log->type->clear_region(rh->log, reg->key); + mempool_free(reg, rh->region_pool); + } + + rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_update_states); + +void dm_rh_inc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + + spin_lock_irq(&rh->region_lock); + atomic_inc(®->pending); + + if (reg->state == DM_RH_CLEAN) { + reg->state = DM_RH_DIRTY; + list_del_init(®->list); /* take off the clean list */ + spin_unlock_irq(&rh->region_lock); + + rh->log->type->mark_region(rh->log, reg->key); + } else + spin_unlock_irq(&rh->region_lock); + + + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc); + +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios) +{ + struct bio *bio; + + for (bio = bios->head; bio; bio = bio->bi_next) + dm_rh_inc(rh, dm_rh_bio_to_region(rh, bio)); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc_pending); + +void dm_rh_dec(struct dm_region_hash *rh, region_t region) +{ + unsigned long flags; + struct dm_region *reg; + int should_wake = 0; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irqsave(&rh->region_lock, flags); + if (atomic_dec_and_test(®->pending)) { + /* + * There is no pending I/O for this region. + * We can move the region to corresponding list for next action. + * At this point, the region is not yet connected to any list. + * + * If the state is DM_RH_NOSYNC, the region should be kept off + * from clean list. + * The hash entry for DM_RH_NOSYNC will remain in memory + * until the region is recovered or the map is reloaded. + */ + + /* do nothing for DM_RH_NOSYNC */ + if (reg->state == DM_RH_RECOVERING) { + list_add_tail(®->list, &rh->quiesced_regions); + } else if (reg->state == DM_RH_DIRTY) { + reg->state = DM_RH_CLEAN; + list_add(®->list, &rh->clean_regions); + } + should_wake = 1; + } + spin_unlock_irqrestore(&rh->region_lock, flags); + + if (should_wake) + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_dec); + +/* + * Starts quiescing a region in preparation for recovery. + */ +static int __rh_recovery_prepare(struct dm_region_hash *rh) +{ + int r; + region_t region; + struct dm_region *reg; + + /* + * Ask the dirty log what's next. + */ + r = rh->log->type->get_resync_work(rh->log, ®ion); + if (r <= 0) + return r; + + /* + * Get this region, and start it quiescing by setting the + * recovering flag. + */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irq(&rh->region_lock); + reg->state = DM_RH_RECOVERING; + + /* Already quiesced ? */ + if (atomic_read(®->pending)) + list_del_init(®->list); + else + list_move(®->list, &rh->quiesced_regions); + + spin_unlock_irq(&rh->region_lock); + + return 1; +} + +void dm_rh_recovery_prepare(struct dm_region_hash *rh) +{ + /* Extra reference to avoid race with dm_rh_stop_recovery */ + atomic_inc(&rh->recovery_in_flight); + + while (!down_trylock(&rh->recovery_count)) { + atomic_inc(&rh->recovery_in_flight); + if (__rh_recovery_prepare(rh) <= 0) { + atomic_dec(&rh->recovery_in_flight); + up(&rh->recovery_count); + break; + } + } + + /* Drop the extra reference */ + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_prepare); + +/* + * Returns any quiesced regions. + */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh) +{ + struct dm_region *reg = NULL; + + spin_lock_irq(&rh->region_lock); + if (!list_empty(&rh->quiesced_regions)) { + reg = list_entry(rh->quiesced_regions.next, + struct dm_region, list); + list_del_init(®->list); /* remove from the quiesced list */ + } + spin_unlock_irq(&rh->region_lock); + + return reg; +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_start); + +void dm_rh_recovery_end(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + spin_lock_irq(&rh->region_lock); + if (success) + list_add(®->list, ®->rh->recovered_regions); + else { + reg->state = DM_RH_NOSYNC; + list_add(®->list, ®->rh->failed_recovered_regions); + } + spin_unlock_irq(&rh->region_lock); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_end); + +/* Return recovery in flight count. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh) +{ + return atomic_read(&rh->recovery_in_flight); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_in_flight); + +int dm_rh_flush(struct dm_region_hash *rh) +{ + return rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_flush); + +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, dm_rh_bio_to_region(rh, bio)); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay); + +void dm_rh_delay_by_region(struct dm_region_hash *rh, + struct bio *bio, region_t region) +{ + struct dm_region *reg; + + /* FIXME: locking. */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay_by_region); + +void dm_rh_stop_recovery(struct dm_region_hash *rh) +{ + int i; + + /* wait for any recovering regions */ + for (i = 0; i < rh->max_recovery; i++) + down(&rh->recovery_count); +} +// EXPORT_SYMBOL_GPL(dm_rh_stop_recovery); + +void dm_rh_start_recovery(struct dm_region_hash *rh) +{ + int i; + + for (i = 0; i < rh->max_recovery; i++) + up(&rh->recovery_count); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_start_recovery); + +MODULE_DESCRIPTION(DM_NAME " region hash"); +MODULE_AUTHOR("Joe Thornber/Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid4-5.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2006 Red Hat GmbH + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) ptr, str, strlen(ptr) + +enum lock_type { RAID45_EX, RAID45_SHARED }; + +struct dmraid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); + +}; + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/Makefile +++ linux-3.5.0/ubuntu/dm-raid4-5/Makefile @@ -0,0 +1,4 @@ +EXTRA_CFLAGS += -I$(srctree)/drivers/md + +obj-$(CONFIG_DM_RAID45) := dm-raid45.o +dm-raid45-objs := dm-raid4-5.o dm-memcache.o dm-region-hash.o dm-message.o --- linux-3.5.0.orig/ubuntu/dm-raid4-5/Kconfig +++ linux-3.5.0/ubuntu/dm-raid4-5/Kconfig @@ -0,0 +1,6 @@ +config DM_RAID45 + tristate "RAID 4/5 target (EXPERIMENTAL)" + depends on BLK_DEV_DM && XOR_BLOCKS && EXPERIMENTAL + default m + ---help--- + A target that supports RAID4 and RAID5 mappings. --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-message.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-message.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2007,2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + */ + +#ifndef DM_MESSAGE_H +#define DM_MESSAGE_H + +/* Factor out to dm.h. */ +/* Reference to array end. */ +#define ARRAY_END(a) ((a) + ARRAY_SIZE(a)) + +/* Message return bits. */ +enum dm_message_return { + dm_msg_ret_ambiguous, /* Action ambiguous. */ + dm_msg_ret_inval, /* Action invalid. */ + dm_msg_ret_undef, /* Action undefined. */ + + dm_msg_ret_option, /* Option error. */ + dm_msg_ret_arg, /* Argument error. */ + dm_msg_ret_argcount, /* Argument count error. */ +}; + +/* Message argument type conversions. */ +enum dm_message_argument_type { + dm_msg_base_t, /* Basename string. */ + dm_msg_str_t, /* String. */ + dm_msg_int_t, /* Signed int. */ + dm_msg_uint_t, /* Unsigned int. */ + dm_msg_uint64_t, /* Unsigned int 64. */ +}; + +/* A message option. */ +struct dm_message_option { + unsigned num_options; + char **options; + unsigned long *actions; +}; + +/* Message arguments and types. */ +struct dm_message_argument { + unsigned num_args; + unsigned long **ptr; + enum dm_message_argument_type types[]; +}; + +/* Client message. */ +struct dm_msg { + unsigned long action; /* Identified action. */ + unsigned long ret; /* Return bits. */ + unsigned num_specs; /* # of sepcifications listed. */ + struct dm_msg_spec *specs; /* Specification list. */ + struct dm_msg_spec *spec; /* Specification selected. */ +}; + +/* Secification of the message. */ +struct dm_msg_spec { + const char *cmd; /* Name of the command (i.e. 'bandwidth'). */ + unsigned long action; + struct dm_message_option *options; + struct dm_message_argument *args; + unsigned long parm; /* Parameter to pass through to callback. */ + /* Function to process for action. */ + int (*f) (struct dm_msg *msg, void *context); +}; + +/* Parameter access macros. */ +#define DM_MSG_PARM(msg) ((msg)->spec->parm) + +#define DM_MSG_STR_ARGS(msg, idx) ((char *) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_INT_ARGS(msg, idx) ((int) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_UINT_ARGS(msg, idx) ((unsigned) DM_MSG_INT_ARG(msg, idx)) +#define DM_MSG_UINT64_ARGS(msg, idx) ((uint64_t) *(msg)->spec->args->ptr[idx]) + +#define DM_MSG_STR_ARG(msg) DM_MSG_STR_ARGS(msg, 0) +#define DM_MSG_INT_ARG(msg) DM_MSG_INT_ARGS(msg, 0) +#define DM_MSG_UINT_ARG(msg) DM_MSG_UINT_ARGS(msg, 0) +#define DM_MSG_UINT64_ARG(msg) DM_MSG_UINT64_ARGS(msg, 0) + + +/* Parse a message and its options and optionally call a function back. */ +int dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv); + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-region-hash.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-region-hash.h @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * Device-Mapper dirty region hash interface. + * + * This file is released under the GPL. + */ + +#ifndef DM_REGION_HASH_H +#define DM_REGION_HASH_H + +#include + +/*----------------------------------------------------------------- + * Region hash + *----------------------------------------------------------------*/ +struct dm_region_hash; +struct dm_region; + +/* + * States a region can have. + */ +enum dm_rh_region_states { + DM_RH_CLEAN = 0x01, /* No writes in flight. */ + DM_RH_DIRTY = 0x02, /* Writes in flight. */ + DM_RH_NOSYNC = 0x04, /* Out of sync. */ + DM_RH_RECOVERING = 0x08, /* Under resynchronization. */ +}; + +/* + * Region hash create/destroy. + */ +struct bio_list; +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions); +void dm_region_hash_destroy(struct dm_region_hash *rh); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh); + +/* + * Conversion functions. + */ +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio); +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region); +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector); +void *dm_rh_region_context(struct dm_region *reg); + +/* + * Get region size and key (ie. number of the region). + */ +sector_t dm_rh_get_region_size(struct dm_region_hash *rh); +region_t dm_rh_get_region_key(struct dm_region *reg); + +/* + * Get/set/update region state (and dirty log). + * + */ +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block); +void dm_rh_set_state(struct dm_region_hash *rh, region_t region, + enum dm_rh_region_states state, int may_block); + +/* Non-zero errors_handled leaves the state of the region NOSYNC */ +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled); + +/* Flush the region hash and dirty log. */ +int dm_rh_flush(struct dm_region_hash *rh); + +/* Inc/dec pending count on regions. */ +void dm_rh_inc(struct dm_region_hash *rh, region_t region); +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios); +void dm_rh_dec(struct dm_region_hash *rh, region_t region); + +/* Delay bios on regions. */ +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio); +void dm_rh_delay_by_region(struct dm_region_hash *rh, struct bio *bio, + region_t region); + +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error); + +/* + * Region recovery control. + */ + +/* Prepare some regions for recovery by starting to quiesce them. */ +void dm_rh_recovery_prepare(struct dm_region_hash *rh); + +/* Try fetching a quiesced region for recovery. */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh); + +/* Report recovery end on a region. */ +void dm_rh_recovery_end(struct dm_region *reg, int error); + +/* Returns number of regions with recovery work outstanding. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh); + +/* Start/stop recovery. */ +void dm_rh_start_recovery(struct dm_region_hash *rh); +void dm_rh_stop_recovery(struct dm_region_hash *rh); + +#endif /* DM_REGION_HASH_H */ --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-message.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-message.c @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2007,2008 Red Hat Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + * device-mapper message parser. + * + */ + +#include "dm.h" +#include "dm-message.h" +#include +#include + +#define DM_MSG_PREFIX "dm_message" + +/* Basename of a path. */ +static inline char * +basename(char *s) +{ + char *p = strrchr(s, '/'); + + return p ? p + 1 : s; +} + +/* Get an argument depending on type. */ +static void +message_arguments(struct dm_msg *msg, int argc, char **argv) +{ + + if (argc) { + int i; + struct dm_message_argument *args = msg->spec->args; + + for (i = 0; i < args->num_args; i++) { + int r; + unsigned long **ptr = args->ptr; + enum dm_message_argument_type type = args->types[i]; + + switch (type) { + case dm_msg_base_t: + ((char **) ptr)[i] = basename(argv[i]); + break; + + case dm_msg_str_t: + ((char **) ptr)[i] = argv[i]; + break; + + case dm_msg_int_t: + r = sscanf(argv[i], "%d", ((int **) ptr)[i]); + goto check; + + case dm_msg_uint_t: + r = sscanf(argv[i], "%u", + ((unsigned **) ptr)[i]); + goto check; + + case dm_msg_uint64_t: + r = sscanf(argv[i], "%llu", + ((unsigned long long **) ptr)[i]); + +check: + if (r != 1) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_arg, &msg->ret); + } + } + } + } +} + +/* Parse message options. */ +static void +message_options_parse(struct dm_msg *msg, int argc, char **argv) +{ + int hit = 0; + unsigned long *action; + size_t l1 = strlen(*argv), l_hit = 0; + struct dm_message_option *o = msg->spec->options; + char **option, **option_end = o->options + o->num_options; + + for (option = o->options, action = o->actions; + option < option_end; option++, action++) { + size_t l2 = strlen(*option); + + if (!strnicmp(*argv, *option, min(l1, l2))) { + hit++; + l_hit = l2; + set_bit(*action, &msg->action); + } + } + + /* Assume error. */ + msg->ret = 0; + set_bit(dm_msg_ret_option, &msg->ret); + if (!hit || l1 > l_hit) + set_bit(dm_msg_ret_undef, &msg->ret); /* Undefined option. */ + else if (hit > 1) + set_bit(dm_msg_ret_ambiguous, &msg->ret); /* Ambiguous option.*/ + else { + clear_bit(dm_msg_ret_option, &msg->ret); /* Option OK. */ + message_arguments(msg, --argc, ++argv); + } +} + +static inline void +print_ret(const char *caller, unsigned long ret) +{ + struct { + unsigned long err; + const char *err_str; + } static err_msg[] = { + { dm_msg_ret_ambiguous, "message ambiguous" }, + { dm_msg_ret_inval, "message invalid" }, + { dm_msg_ret_undef, "message undefined" }, + { dm_msg_ret_arg, "message argument" }, + { dm_msg_ret_argcount, "message argument count" }, + { dm_msg_ret_option, "option" }, + }, *e = ARRAY_END(err_msg); + + while (e-- > err_msg) { + if (test_bit(e->err, &ret)) + DMERR("%s %s", caller, e->err_str); + } +} + +/* Parse a message action. */ +int +dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv) +{ + int hit = 0; + size_t l1, l_hit = 0; + struct dm_msg_spec *s, *s_hit = NULL, + *s_end = msg->specs + msg->num_specs; + + if (argc < 2) + return -EINVAL; + + l1 = strlen(*argv); + for (s = msg->specs; s < s_end; s++) { + size_t l2 = strlen(s->cmd); + + if (!strnicmp(*argv, s->cmd, min(l1, l2))) { + hit++; + l_hit = l2; + s_hit = s; + } + } + + msg->ret = 0; + if (!hit || l1 > l_hit) /* No hit or message string too long. */ + set_bit(dm_msg_ret_undef, &msg->ret); + else if (hit > 1) /* Ambiguous message. */ + set_bit(dm_msg_ret_ambiguous, &msg->ret); + else if (argc - 2 != s_hit->args->num_args) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_argcount, &msg->ret); + } + + if (msg->ret) + goto bad; + + msg->action = 0; + msg->spec = s_hit; + set_bit(s_hit->action, &msg->action); + message_options_parse(msg, --argc, ++argv); + + if (!msg->ret) + return msg->spec->f(msg, context); + +bad: + print_ret(caller, msg->ret); + return -EINVAL; +} +EXPORT_SYMBOL(dm_message_parse); + +MODULE_DESCRIPTION(DM_NAME " device-mapper target message parser"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-memcache.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-memcache.c @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#define DM_MEM_CACHE_VERSION "0.2" + +#include "dm.h" +#include "dm-memcache.h" +#include +#include +#include + +struct dm_mem_cache_client { + spinlock_t lock; + mempool_t *objs_pool; + struct page_list *free_list; + unsigned objects; + unsigned chunks; + unsigned pages_per_chunk; + unsigned free_pages; + unsigned total_pages; +}; + +/* + * Free pages and page_list elements of client. + */ +static void free_cache_pages(struct page_list *list) +{ + while (list) { + struct page_list *pl = list; + + list = pl->next; + BUG_ON(!pl->page); + __free_page(pl->page); + kfree(pl); + } +} + +/* + * Alloc number of pages and page_list elements as required by client. + */ +static struct page_list *alloc_cache_pages(unsigned pages) +{ + struct page_list *pl, *ret = NULL; + struct page *page; + + while (pages--) { + page = alloc_page(GFP_NOIO); + if (!page) + goto err; + + pl = kmalloc(sizeof(*pl), GFP_NOIO); + if (!pl) { + __free_page(page); + goto err; + } + + pl->page = page; + pl->next = ret; + ret = pl; + } + + return ret; + +err: + free_cache_pages(ret); + return NULL; +} + +/* + * Allocate page_list elements from the pool to chunks of the memory object. + */ +static void alloc_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + unsigned p = cl->pages_per_chunk; + + obj[chunks].pl = NULL; + + while (p--) { + struct page_list *pl; + + /* Take next element from free list */ + spin_lock(&cl->lock); + pl = cl->free_list; + BUG_ON(!pl); + cl->free_list = pl->next; + spin_unlock(&cl->lock); + + pl->next = obj[chunks].pl; + obj[chunks].pl = pl; + } + } + + local_irq_restore(flags); +} + +/* + * Free page_list elements putting them back onto free list + */ +static void free_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + struct page_list *next, *pl; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + for (pl = obj[chunks].pl; pl; pl = next) { + next = pl->next; + + spin_lock(&cl->lock); + pl->next = cl->free_list; + cl->free_list = pl; + cl->free_pages++; + spin_unlock(&cl->lock); + } + } + + local_irq_restore(flags); +} + +/* + * Create/destroy dm memory cache client resources. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk) +{ + unsigned total_pages = objects * chunks * pages_per_chunk; + struct dm_mem_cache_client *client; + + BUG_ON(!total_pages); + client = kzalloc(sizeof(*client), GFP_KERNEL); + if (!client) + return ERR_PTR(-ENOMEM); + + client->objs_pool = mempool_create_kmalloc_pool(objects, + chunks * sizeof(struct dm_mem_cache_object)); + if (!client->objs_pool) + goto err; + + client->free_list = alloc_cache_pages(total_pages); + if (!client->free_list) + goto err1; + + spin_lock_init(&client->lock); + client->objects = objects; + client->chunks = chunks; + client->pages_per_chunk = pages_per_chunk; + client->free_pages = client->total_pages = total_pages; + return client; + +err1: + mempool_destroy(client->objs_pool); +err: + kfree(client); + return ERR_PTR(-ENOMEM); +} +EXPORT_SYMBOL(dm_mem_cache_client_create); + +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *cl) +{ + BUG_ON(cl->free_pages != cl->total_pages); + free_cache_pages(cl->free_list); + mempool_destroy(cl->objs_pool); + kfree(cl); +} +EXPORT_SYMBOL(dm_mem_cache_client_destroy); + +/* + * Grow a clients cache by an amount of pages. + * + * Don't call from interrupt context! + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *cl, unsigned objects) +{ + unsigned pages = objects * cl->chunks * cl->pages_per_chunk; + struct page_list *pl, *last; + + BUG_ON(!pages); + pl = alloc_cache_pages(pages); + if (!pl) + return -ENOMEM; + + last = pl; + while (last->next) + last = last->next; + + spin_lock_irq(&cl->lock); + last->next = cl->free_list; + cl->free_list = pl; + cl->free_pages += pages; + cl->total_pages += pages; + cl->objects++; + spin_unlock_irq(&cl->lock); + + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + return 0; +} +EXPORT_SYMBOL(dm_mem_cache_grow); + +/* Shrink a clients cache by an amount of pages */ +int dm_mem_cache_shrink(struct dm_mem_cache_client *cl, unsigned objects) +{ + int r; + unsigned pages = objects * cl->chunks * cl->pages_per_chunk, p = pages; + unsigned long flags; + struct page_list *last = NULL, *pl, *pos; + + BUG_ON(!pages); + + spin_lock_irqsave(&cl->lock, flags); + pl = pos = cl->free_list; + while (p-- && pos->next) { + last = pos; + pos = pos->next; + } + + if (++p) + r = -ENOMEM; + else { + r = 0; + cl->free_list = pos; + cl->free_pages -= pages; + cl->total_pages -= pages; + cl->objects--; + last->next = NULL; + } + spin_unlock_irqrestore(&cl->lock, flags); + + if (!r) { + free_cache_pages(pl); + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + } + + return r; +} +EXPORT_SYMBOL(dm_mem_cache_shrink); + +/* + * Allocate/free a memory object + * + * Can be called from interrupt context + */ +struct dm_mem_cache_object *dm_mem_cache_alloc(struct dm_mem_cache_client *cl) +{ + int r = 0; + unsigned pages = cl->chunks * cl->pages_per_chunk; + unsigned long flags; + struct dm_mem_cache_object *obj; + + obj = mempool_alloc(cl->objs_pool, GFP_NOIO); + if (!obj) + return ERR_PTR(-ENOMEM); + + spin_lock_irqsave(&cl->lock, flags); + if (pages > cl->free_pages) + r = -ENOMEM; + else + cl->free_pages -= pages; + spin_unlock_irqrestore(&cl->lock, flags); + + if (r) { + mempool_free(obj, cl->objs_pool); + return ERR_PTR(r); + } + + alloc_chunks(cl, obj); + return obj; +} +EXPORT_SYMBOL(dm_mem_cache_alloc); + +void dm_mem_cache_free(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + free_chunks(cl, obj); + mempool_free(obj, cl->objs_pool); +} +EXPORT_SYMBOL(dm_mem_cache_free); + +MODULE_DESCRIPTION(DM_NAME " dm memory cache"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid4-5.c @@ -0,0 +1,4539 @@ +/*[A[A + * Copyright (C) 2005-2009 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * This file is released under the GPL. + * + * + * Linux 2.6 Device Mapper RAID4 and RAID5 target. + * + * Supports: + * o RAID4 with dedicated and selectable parity device + * o RAID5 with rotating parity (left+right, symmetric+asymmetric) + * o recovery of out of sync device for initial + * RAID set creation or after dead drive replacement + * o run time optimization of xor algorithm used to calculate parity + * + * + * Thanks to MD for: + * o the raid address calculation algorithm + * o the base of the biovec <-> page list copier. + * + * + * Uses region hash to keep track of how many writes are in flight to + * regions in order to use dirty log to keep state of regions to recover: + * + * o clean regions (those which are synchronized + * and don't have write io in flight) + * o dirty regions (those with write io in flight) + * + * + * On startup, any dirty regions are migrated to the + * 'nosync' state and are subject to recovery by the daemon. + * + * See raid_ctr() for table definition. + * + * FIXME: recovery bandwidth + */ + +static const char *version = "v0.2594b"; + +#include "dm.h" +#include "dm-memcache.h" +#include "dm-message.h" +#include "dm-raid45.h" + +#include +#include +#include + +#include +#include +#include +#include "dm-region-hash.h" + +#include +#include + +/* + * Configurable parameters + */ + +/* Minimum/maximum and default # of selectable stripes. */ +#define STRIPES_MIN 8 +#define STRIPES_MAX 16384 +#define STRIPES_DEFAULT 80 + +/* Maximum and default chunk size in sectors if not set in constructor. */ +#define CHUNK_SIZE_MIN 8 +#define CHUNK_SIZE_MAX 16384 +#define CHUNK_SIZE_DEFAULT 64 + +/* Default io size in sectors if not set in constructor. */ +#define IO_SIZE_MIN CHUNK_SIZE_MIN +#define IO_SIZE_DEFAULT IO_SIZE_MIN + +/* Recover io size default in sectors. */ +#define RECOVER_IO_SIZE_MIN 64 +#define RECOVER_IO_SIZE_DEFAULT 256 + +/* Default, minimum and maximum percentage of recover io bandwidth. */ +#define BANDWIDTH_DEFAULT 10 +#define BANDWIDTH_MIN 1 +#define BANDWIDTH_MAX 100 + +/* # of parallel recovered regions */ +#define RECOVERY_STRIPES_MIN 1 +#define RECOVERY_STRIPES_MAX 64 +#define RECOVERY_STRIPES_DEFAULT RECOVERY_STRIPES_MIN +/* + * END Configurable parameters + */ + +#define TARGET "dm-raid45" +#define DAEMON "kraid45d" +#define DM_MSG_PREFIX TARGET + +#define SECTORS_PER_PAGE (PAGE_SIZE >> SECTOR_SHIFT) + +/* Amount/size for __xor(). */ +#define XOR_SIZE PAGE_SIZE + +/* Check value in range. */ +#define range_ok(i, min, max) (i >= min && i <= max) + +/* Check argument is power of 2. */ +#define POWER_OF_2(a) (!(a & (a - 1))) + +/* Structure access macros. */ +/* Derive raid_set from stripe_cache pointer. */ +#define RS(x) container_of(x, struct raid_set, sc) + +/* Page reference. */ +#define PAGE(stripe, p) ((stripe)->obj[p].pl->page) + +/* Stripe chunk reference. */ +#define CHUNK(stripe, p) ((stripe)->chunk + p) + +/* Bio list reference. */ +#define BL(stripe, p, rw) (stripe->chunk[p].bl + rw) +#define BL_CHUNK(chunk, rw) (chunk->bl + rw) + +/* Page list reference. */ +#define PL(stripe, p) (stripe->obj[p].pl) +/* END: structure access macros. */ + +/* Factor out to dm-bio-list.h */ +static inline void bio_list_push(struct bio_list *bl, struct bio *bio) +{ + bio->bi_next = bl->head; + bl->head = bio; + + if (!bl->tail) + bl->tail = bio; +} + +/* Factor out to dm.h */ +#define TI_ERR_RET(str, ret) \ + do { ti->error = str; return ret; } while (0); +#define TI_ERR(str) TI_ERR_RET(str, -EINVAL) + +/* Macro to define access IO flags access inline functions. */ +#define BITOPS(name, what, var, flag) \ +static inline int TestClear ## name ## what(struct var *v) \ +{ return test_and_clear_bit(flag, &v->io.flags); } \ +static inline int TestSet ## name ## what(struct var *v) \ +{ return test_and_set_bit(flag, &v->io.flags); } \ +static inline void Clear ## name ## what(struct var *v) \ +{ clear_bit(flag, &v->io.flags); } \ +static inline void Set ## name ## what(struct var *v) \ +{ set_bit(flag, &v->io.flags); } \ +static inline int name ## what(struct var *v) \ +{ return test_bit(flag, &v->io.flags); } + +/*----------------------------------------------------------------- + * Stripe cache + * + * Cache for all reads and writes to raid sets (operational or degraded) + * + * We need to run all data to and from a RAID set through this cache, + * because parity chunks need to get calculated from data chunks + * or, in the degraded/resynchronization case, missing chunks need + * to be reconstructed using the other chunks of the stripe. + *---------------------------------------------------------------*/ +/* A chunk within a stripe (holds bios hanging off). */ +/* IO status flags for chunks of a stripe. */ +enum chunk_flags { + CHUNK_DIRTY, /* Pages of chunk dirty; need writing. */ + CHUNK_ERROR, /* IO error on any chunk page. */ + CHUNK_IO, /* Allow/prohibit IO on chunk pages. */ + CHUNK_LOCKED, /* Chunk pages locked during IO. */ + CHUNK_MUST_IO, /* Chunk must io. */ + CHUNK_UNLOCK, /* Enforce chunk unlock. */ + CHUNK_UPTODATE, /* Chunk pages are uptodate. */ +}; + +/* + * This does not work anymore with __REQ_* values being enums + * +#if READ != 0 || WRITE != 1 +#error dm-raid45: READ/WRITE != 0/1 used as index!!! +#endif +*/ + +enum bl_type { + WRITE_QUEUED = WRITE + 1, + WRITE_MERGED, + NR_BL_TYPES, /* Must be last one! */ +}; +struct stripe_chunk { + atomic_t cnt; /* Reference count. */ + struct stripe *stripe; /* Backpointer to stripe for endio(). */ + /* Bio lists for reads, writes, and writes merged. */ + struct bio_list bl[NR_BL_TYPES]; + struct { + unsigned long flags; /* IO status flags. */ + } io; +}; + +/* Define chunk bit operations. */ +BITOPS(Chunk, Dirty, stripe_chunk, CHUNK_DIRTY) +BITOPS(Chunk, Error, stripe_chunk, CHUNK_ERROR) +BITOPS(Chunk, Io, stripe_chunk, CHUNK_IO) +BITOPS(Chunk, Locked, stripe_chunk, CHUNK_LOCKED) +BITOPS(Chunk, MustIo, stripe_chunk, CHUNK_MUST_IO) +BITOPS(Chunk, Unlock, stripe_chunk, CHUNK_UNLOCK) +BITOPS(Chunk, Uptodate, stripe_chunk, CHUNK_UPTODATE) + +/* + * Stripe linked list indexes. Keep order, because the stripe + * and the stripe cache rely on the first 3! + */ +enum list_types { + LIST_FLUSH, /* Stripes to flush for io. */ + LIST_ENDIO, /* Stripes to endio. */ + LIST_LRU, /* Least recently used stripes. */ + SC_NR_LISTS, /* # of lists in stripe cache. */ + LIST_HASH = SC_NR_LISTS, /* Hashed stripes. */ + LIST_RECOVER = LIST_HASH, /* For recovery type stripes only. */ + STRIPE_NR_LISTS,/* To size array in struct stripe. */ +}; + +/* Adressing region recovery. */ +struct recover_addr { + struct dm_region *reg; /* Actual region to recover. */ + sector_t pos; /* Position within region to recover. */ + sector_t end; /* End of region to recover. */ +}; + +/* A stripe: the io object to handle all reads and writes to a RAID set. */ +struct stripe { + atomic_t cnt; /* Reference count. */ + struct stripe_cache *sc; /* Backpointer to stripe cache. */ + + /* + * 4 linked lists: + * o io list to flush io + * o endio list + * o LRU list to put stripes w/o reference count on + * o stripe cache hash + */ + struct list_head lists[STRIPE_NR_LISTS]; + + sector_t key; /* Hash key. */ + region_t region; /* Region stripe is mapped to. */ + + struct { + unsigned long flags; /* Stripe state flags (see below). */ + + /* + * Pending ios in flight: + * + * used to control move of stripe to endio list + */ + atomic_t pending; + + /* Sectors to read and write for multi page stripe sets. */ + unsigned size; + } io; + + /* Address region recovery. */ + struct recover_addr *recover; + + /* Lock on stripe (Future: for clustering). */ + void *lock; + + struct { + unsigned short parity; /* Parity chunk index. */ + short recover; /* Recovery chunk index. */ + } idx; + + /* + * This stripe's memory cache object (dm-mem-cache); + * i.e. the io chunk pages. + */ + struct dm_mem_cache_object *obj; + + /* Array of stripe sets (dynamically allocated). */ + struct stripe_chunk chunk[0]; +}; + +/* States stripes can be in (flags field). */ +enum stripe_states { + STRIPE_ERROR, /* io error on stripe. */ + STRIPE_MERGED, /* Writes got merged to be written. */ + STRIPE_RBW, /* Read-before-write stripe. */ + STRIPE_RECONSTRUCT, /* Reconstruct of a missing chunk required. */ + STRIPE_RECONSTRUCTED, /* Reconstructed of a missing chunk. */ + STRIPE_RECOVER, /* Stripe used for RAID set recovery. */ +}; + +/* Define stripe bit operations. */ +BITOPS(Stripe, Error, stripe, STRIPE_ERROR) +BITOPS(Stripe, Merged, stripe, STRIPE_MERGED) +BITOPS(Stripe, RBW, stripe, STRIPE_RBW) +BITOPS(Stripe, Reconstruct, stripe, STRIPE_RECONSTRUCT) +BITOPS(Stripe, Reconstructed, stripe, STRIPE_RECONSTRUCTED) +BITOPS(Stripe, Recover, stripe, STRIPE_RECOVER) + +/* A stripe hash. */ +struct stripe_hash { + struct list_head *hash; + unsigned buckets; + unsigned mask; + unsigned prime; + unsigned shift; +}; + +enum sc_lock_types { + LOCK_ENDIO, /* Protect endio list. */ + LOCK_LRU, /* Protect LRU list. */ + NR_LOCKS, /* To size array in struct stripe_cache. */ +}; + +/* A stripe cache. */ +struct stripe_cache { + /* Stripe hash. */ + struct stripe_hash hash; + + spinlock_t locks[NR_LOCKS]; /* Locks to protect lists. */ + + /* Stripes with io to flush, stripes to endio and LRU lists. */ + struct list_head lists[SC_NR_LISTS]; + + /* Slab cache to allocate stripes from. */ + struct { + struct kmem_cache *cache; /* Cache itself. */ + char name[32]; /* Unique name. */ + } kc; + + struct dm_io_client *dm_io_client; /* dm-io client resource context. */ + + /* dm-mem-cache client resource context. */ + struct dm_mem_cache_client *mem_cache_client; + + int stripes_parm; /* # stripes parameter from constructor. */ + atomic_t stripes; /* actual # of stripes in cache. */ + atomic_t stripes_to_set; /* # of stripes to resize cache to. */ + atomic_t stripes_last; /* last # of stripes in cache. */ + atomic_t active_stripes; /* actual # of active stripes in cache. */ + + /* REMOVEME: */ + atomic_t active_stripes_max; /* actual # of active stripes in cache. */ +}; + +/* Flag specs for raid_dev */ ; +enum raid_dev_flags { + DEV_FAILED, /* Device failed. */ + DEV_IO_QUEUED, /* Io got queued to device. */ +}; + +/* The raid device in a set. */ +struct raid_dev { + struct dm_dev *dev; + sector_t start; /* Offset to map to. */ + struct { /* Using struct to be able to BITOPS(). */ + unsigned long flags; /* raid_dev_flags. */ + } io; +}; + +BITOPS(Dev, Failed, raid_dev, DEV_FAILED) +BITOPS(Dev, IoQueued, raid_dev, DEV_IO_QUEUED) + +/* Flags spec for raid_set. */ +enum raid_set_flags { + RS_CHECK_OVERWRITE, /* Check for chunk overwrites. */ + RS_DEAD, /* RAID set inoperational. */ + RS_DEGRADED, /* Io errors on RAID device. */ + RS_DEVEL_STATS, /* REMOVEME: display status information. */ + RS_RECOVER, /* Do recovery. */ + RS_RECOVERY_BANDWIDTH, /* Allow recovery bandwidth (delayed bios). */ + RS_SC_BUSY, /* Stripe cache busy -> send an event. */ + RS_SUSPEND, /* Suspend RAID set. */ +}; + +/* REMOVEME: devel stats counters. */ +enum stats_types { + S_BIOS_READ, + S_BIOS_ADDED_READ, + S_BIOS_ENDIO_READ, + S_BIOS_WRITE, + S_BIOS_ADDED_WRITE, + S_BIOS_ENDIO_WRITE, + S_CAN_MERGE, + S_CANT_MERGE, + S_CONGESTED, + S_DM_IO_READ, + S_DM_IO_WRITE, + S_BANDWIDTH, + S_BARRIER, + S_BIO_COPY_PL_NEXT, + S_DEGRADED, + S_DELAYED_BIOS, + S_FLUSHS, + S_HITS_1ST, + S_IOS_POST, + S_INSCACHE, + S_MAX_LOOKUP, + S_CHUNK_LOCKED, + S_NO_BANDWIDTH, + S_NOT_CONGESTED, + S_NO_RW, + S_NOSYNC, + S_OVERWRITE, + S_PROHIBITCHUNKIO, + S_RECONSTRUCT_EI, + S_RECONSTRUCT_DEV, + S_RECONSTRUCT_SET, + S_RECONSTRUCTED, + S_REQUEUE, + S_STRIPE_ERROR, + S_SUM_DELAYED_BIOS, + S_XORS, + S_NR_STATS, /* # of stats counters. Must be last! */ +}; + +/* Status type -> string mappings. */ +struct stats_map { + const enum stats_types type; + const char *str; +}; + +static struct stats_map stats_map[] = { + { S_BIOS_READ, "r=" }, + { S_BIOS_ADDED_READ, "/" }, + { S_BIOS_ENDIO_READ, "/" }, + { S_BIOS_WRITE, " w=" }, + { S_BIOS_ADDED_WRITE, "/" }, + { S_BIOS_ENDIO_WRITE, "/" }, + { S_DM_IO_READ, " rc=" }, + { S_DM_IO_WRITE, " wc=" }, + { S_BANDWIDTH, "\nbw=" }, + { S_NO_BANDWIDTH, " no_bw=" }, + { S_BARRIER, "\nbarrier=" }, + { S_BIO_COPY_PL_NEXT, "\nbio_cp_next=" }, + { S_CAN_MERGE, "\nmerge=" }, + { S_CANT_MERGE, "/no_merge=" }, + { S_CHUNK_LOCKED, "\nchunk_locked=" }, + { S_CONGESTED, "\ncgst=" }, + { S_NOT_CONGESTED, "/not_cgst=" }, + { S_DEGRADED, "\ndegraded=" }, + { S_DELAYED_BIOS, "\ndel_bios=" }, + { S_SUM_DELAYED_BIOS, "/sum_del_bios=" }, + { S_FLUSHS, "\nflushs=" }, + { S_HITS_1ST, "\nhits_1st=" }, + { S_IOS_POST, " ios_post=" }, + { S_INSCACHE, " inscache=" }, + { S_MAX_LOOKUP, " maxlookup=" }, + { S_NO_RW, "\nno_rw=" }, + { S_NOSYNC, " nosync=" }, + { S_OVERWRITE, " ovr=" }, + { S_PROHIBITCHUNKIO, " prhbt_io=" }, + { S_RECONSTRUCT_EI, "\nrec_ei=" }, + { S_RECONSTRUCT_DEV, " rec_dev=" }, + { S_RECONSTRUCT_SET, " rec_set=" }, + { S_RECONSTRUCTED, " rec=" }, + { S_REQUEUE, " requeue=" }, + { S_STRIPE_ERROR, " stripe_err=" }, + { S_XORS, " xors=" }, +}; + +/* + * A RAID set. + */ +#define dm_rh_client dm_region_hash +enum count_type { IO_WORK = 0, IO_RECOVER, IO_NR_COUNT }; +typedef void (*xor_function_t)(unsigned count, unsigned long **data); +struct raid_set { + struct dm_target *ti; /* Target pointer. */ + + struct { + unsigned long flags; /* State flags. */ + struct mutex in_lock; /* Protects central input list below. */ + struct bio_list in; /* Pending ios (central input list). */ + struct bio_list work; /* ios work set. */ + wait_queue_head_t suspendq; /* suspend synchronization. */ + atomic_t in_process; /* counter of queued bios (suspendq). */ + atomic_t in_process_max;/* counter of queued bios max. */ + + /* io work. */ + struct workqueue_struct *wq; + struct delayed_work dws_do_raid; /* For main worker. */ + struct work_struct ws_do_table_event; /* For event worker. */ + } io; + + /* Stripe locking abstraction. */ + struct dm_raid45_locking_type *locking; + + struct stripe_cache sc; /* Stripe cache for this set. */ + + /* Xor optimization. */ + struct { + struct xor_func *f; + unsigned chunks; + unsigned speed; + } xor; + + /* Recovery parameters. */ + struct recover { + struct dm_dirty_log *dl; /* Dirty log. */ + struct dm_rh_client *rh; /* Region hash. */ + + struct dm_io_client *dm_io_client; /* recovery dm-io client. */ + /* dm-mem-cache client resource context for recovery stripes. */ + struct dm_mem_cache_client *mem_cache_client; + + struct list_head stripes; /* List of recovery stripes. */ + + region_t nr_regions; + region_t nr_regions_to_recover; + region_t nr_regions_recovered; + unsigned long start_jiffies; + unsigned long end_jiffies; + + unsigned bandwidth; /* Recovery bandwidth [%]. */ + unsigned bandwidth_work; /* Recovery bandwidth [factor]. */ + unsigned bandwidth_parm; /* " constructor parm. */ + unsigned io_size; /* recovery io size <= region size. */ + unsigned io_size_parm; /* recovery io size ctr parameter. */ + unsigned recovery; /* Recovery allowed/prohibited. */ + unsigned recovery_stripes; /* # of parallel recovery stripes. */ + + /* recovery io throttling. */ + atomic_t io_count[IO_NR_COUNT]; /* counter recover/regular io.*/ + unsigned long last_jiffies; + } recover; + + /* RAID set parameters. */ + struct { + struct raid_type *raid_type; /* RAID type (eg, RAID4). */ + unsigned raid_parms; /* # variable raid parameters. */ + + unsigned chunk_size; /* Sectors per chunk. */ + unsigned chunk_size_parm; + unsigned chunk_shift; /* rsector chunk size shift. */ + + unsigned io_size; /* Sectors per io. */ + unsigned io_size_parm; + unsigned io_mask; /* Mask for bio_copy_page_list(). */ + unsigned io_inv_mask; /* Mask for raid_address(). */ + + sector_t sectors_per_dev; /* Sectors per device. */ + + atomic_t failed_devs; /* Amount of devices failed. */ + + /* Index of device to initialize. */ + int dev_to_init; + int dev_to_init_parm; + + /* Raid devices dynamically allocated. */ + unsigned raid_devs; /* # of RAID devices below. */ + unsigned data_devs; /* # of RAID data devices. */ + + int ei; /* index of failed RAID device. */ + + /* Index of dedicated parity device (i.e. RAID4). */ + int pi; + int pi_parm; /* constructor parm for status output. */ + } set; + + /* REMOVEME: devel stats counters. */ + atomic_t stats[S_NR_STATS]; + + /* Dynamically allocated temporary pointers for xor(). */ + unsigned long **data; + + /* Dynamically allocated RAID devices. Alignment? */ + struct raid_dev dev[0]; +}; + +/* Define RAID set bit operations. */ +BITOPS(RS, Bandwidth, raid_set, RS_RECOVERY_BANDWIDTH) +BITOPS(RS, CheckOverwrite, raid_set, RS_CHECK_OVERWRITE) +BITOPS(RS, Dead, raid_set, RS_DEAD) +BITOPS(RS, Degraded, raid_set, RS_DEGRADED) +BITOPS(RS, DevelStats, raid_set, RS_DEVEL_STATS) +BITOPS(RS, Recover, raid_set, RS_RECOVER) +BITOPS(RS, ScBusy, raid_set, RS_SC_BUSY) +BITOPS(RS, Suspend, raid_set, RS_SUSPEND) +#undef BITOPS + +/*----------------------------------------------------------------- + * Raid-4/5 set structures. + *---------------------------------------------------------------*/ +/* RAID level definitions. */ +enum raid_level { + raid4, + raid5, +}; + +/* Symmetric/Asymmetric, Left/Right parity rotating algorithms. */ +enum raid_algorithm { + none, + left_asym, + right_asym, + left_sym, + right_sym, +}; + +struct raid_type { + const char *name; /* RAID algorithm. */ + const char *descr; /* Descriptor text for logging. */ + const unsigned parity_devs; /* # of parity devices. */ + const unsigned minimal_devs; /* minimal # of devices in set. */ + const enum raid_level level; /* RAID level. */ + const enum raid_algorithm algorithm; /* RAID algorithm. */ +}; + +/* Supported raid types and properties. */ +static struct raid_type raid_types[] = { + {"raid4", "RAID4 (dedicated parity disk)", 1, 3, raid4, none}, + {"raid5_la", "RAID5 (left asymmetric)", 1, 3, raid5, left_asym}, + {"raid5_ra", "RAID5 (right asymmetric)", 1, 3, raid5, right_asym}, + {"raid5_ls", "RAID5 (left symmetric)", 1, 3, raid5, left_sym}, + {"raid5_rs", "RAID5 (right symmetric)", 1, 3, raid5, right_sym}, +}; + +/* Address as calculated by raid_address(). */ +struct raid_address { + sector_t key; /* Hash key (address of stripe % chunk_size). */ + unsigned di, pi; /* Data and parity disks index. */ +}; + +/* REMOVEME: reset statistics counters. */ +static void stats_reset(struct raid_set *rs) +{ + unsigned s = S_NR_STATS; + + while (s--) + atomic_set(rs->stats + s, 0); +} + +/*---------------------------------------------------------------- + * RAID set management routines. + *--------------------------------------------------------------*/ +/* + * Begin small helper functions. + */ +/* No need to be called from region hash indirectly at dm_rh_dec(). */ +static void wake_dummy(void *context) {} + +/* Return # of io reference. */ +static int io_ref(struct raid_set *rs) +{ + return atomic_read(&rs->io.in_process); +} + +/* Get an io reference. */ +static void io_get(struct raid_set *rs) +{ + int p = atomic_inc_return(&rs->io.in_process); + + if (p > atomic_read(&rs->io.in_process_max)) + atomic_set(&rs->io.in_process_max, p); /* REMOVEME: max. */ +} + +/* Put the io reference and conditionally wake io waiters. */ +static void io_put(struct raid_set *rs) +{ + /* Intel: rebuild data corrupter? */ + if (atomic_dec_and_test(&rs->io.in_process)) + wake_up(&rs->io.suspendq); + else + BUG_ON(io_ref(rs) < 0); +} + +/* Wait until all io has been processed. */ +static void wait_ios(struct raid_set *rs) +{ + wait_event(rs->io.suspendq, !io_ref(rs)); +} + +/* Queue (optionally delayed) io work. */ +static void wake_do_raid_delayed(struct raid_set *rs, unsigned long delay) +{ + queue_delayed_work(rs->io.wq, &rs->io.dws_do_raid, delay); +} + +/* Queue io work immediately (called from region hash too). */ +static void wake_do_raid(void *context) +{ + struct raid_set *rs = context; + + queue_work(rs->io.wq, &rs->io.dws_do_raid.work); +} + +/* Calculate device sector offset. */ +static sector_t _sector(struct raid_set *rs, struct bio *bio) +{ + sector_t sector = bio->bi_sector; + + sector_div(sector, rs->set.data_devs); + return sector; +} + +/* Return # of active stripes in stripe cache. */ +static int sc_active(struct stripe_cache *sc) +{ + return atomic_read(&sc->active_stripes); +} + +/* Stripe cache busy indicator. */ +static int sc_busy(struct raid_set *rs) +{ + return sc_active(&rs->sc) > + atomic_read(&rs->sc.stripes) - (STRIPES_MIN / 2); +} + +/* Set chunks states. */ +enum chunk_dirty_type { CLEAN, DIRTY, ERROR }; +static void chunk_set(struct stripe_chunk *chunk, enum chunk_dirty_type type) +{ + switch (type) { + case CLEAN: + ClearChunkDirty(chunk); + break; + case DIRTY: + SetChunkDirty(chunk); + break; + case ERROR: + SetChunkError(chunk); + SetStripeError(chunk->stripe); + return; + default: + BUG(); + } + + SetChunkUptodate(chunk); + SetChunkIo(chunk); + ClearChunkError(chunk); +} + +/* Return region state for a sector. */ +static int region_state(struct raid_set *rs, sector_t sector, + enum dm_rh_region_states state) +{ + struct dm_rh_client *rh = rs->recover.rh; + region_t region = dm_rh_sector_to_region(rh, sector); + + return !!(dm_rh_get_state(rh, region, 1) & state); +} + +/* + * Return true in case a chunk should be read/written + * + * Conditions to read/write: + * o chunk not uptodate + * o chunk dirty + * + * Conditios to avoid io: + * o io already ongoing on chunk + * o io explitely prohibited + */ +static int chunk_io(struct stripe_chunk *chunk) +{ + /* 2nd run optimization (flag set below on first run). */ + if (TestClearChunkMustIo(chunk)) + return 1; + + /* Avoid io if prohibited or a locked chunk. */ + if (!ChunkIo(chunk) || ChunkLocked(chunk)) + return 0; + + if (!ChunkUptodate(chunk) || ChunkDirty(chunk)) { + SetChunkMustIo(chunk); /* 2nd run optimization. */ + return 1; + } + + return 0; +} + +/* Call a function on each chunk needing io unless device failed. */ +static unsigned for_each_io_dev(struct stripe *stripe, + void (*f_io)(struct stripe *stripe, unsigned p)) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p, r = 0; + + for (p = 0; p < rs->set.raid_devs; p++) { + if (chunk_io(CHUNK(stripe, p)) && !DevFailed(rs->dev + p)) { + f_io(stripe, p); + r++; + } + } + + return r; +} + +/* + * Index of device to calculate parity on. + * + * Either the parity device index *or* the selected + * device to init after a spare replacement. + */ +static int dev_for_parity(struct stripe *stripe, int *sync) +{ + struct raid_set *rs = RS(stripe->sc); + int r = region_state(rs, stripe->key, DM_RH_NOSYNC | DM_RH_RECOVERING); + + *sync = !r; + + /* Reconstruct a particular device ?. */ + if (r && rs->set.dev_to_init > -1) + return rs->set.dev_to_init; + else if (rs->set.raid_type->level == raid4) + return rs->set.pi; + else if (!StripeRecover(stripe)) + return stripe->idx.parity; + else + return -1; +} + +/* RAID set congested function. */ +static int rs_congested(void *congested_data, int bdi_bits) +{ + int r; + unsigned p; + struct raid_set *rs = congested_data; + + if (sc_busy(rs) || RSSuspend(rs)) + r = 1; + else for (r = 0, p = rs->set.raid_devs; !r && p--; ) { + /* If any of our component devices are overloaded. */ + struct request_queue *q = bdev_get_queue(rs->dev[p].dev->bdev); + + r |= bdi_congested(&q->backing_dev_info, bdi_bits); + } + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (r ? S_CONGESTED : S_NOT_CONGESTED)); + return r; +} + +/* RAID device degrade check. */ +static void rs_check_degrade_dev(struct raid_set *rs, + struct stripe *stripe, unsigned p) +{ + if (TestSetDevFailed(rs->dev + p)) + return; + + /* Through an event in case of member device errors. */ + if (atomic_inc_return(&rs->set.failed_devs) > + rs->set.raid_type->parity_devs && + !TestSetRSDead(rs)) { + /* Display RAID set dead message once. */ + unsigned p; + char buf[BDEVNAME_SIZE]; + + DMERR("FATAL: too many devices failed -> RAID set broken"); + for (p = 0; p < rs->set.raid_devs; p++) { + if (DevFailed(rs->dev + p)) + DMERR("device /dev/%s failed", + bdevname(rs->dev[p].dev->bdev, buf)); + } + } + + /* Only log the first member error. */ + if (!TestSetRSDegraded(rs)) { + char buf[BDEVNAME_SIZE]; + + /* Store index for recovery. */ + rs->set.ei = p; + DMERR("CRITICAL: %sio error on device /dev/%s " + "in region=%llu; DEGRADING RAID set\n", + stripe ? "" : "FAKED ", + bdevname(rs->dev[p].dev->bdev, buf), + (unsigned long long) (stripe ? stripe->key : 0)); + DMERR("further device error messages suppressed"); + } + + schedule_work(&rs->io.ws_do_table_event); +} + +/* RAID set degrade check. */ +static void rs_check_degrade(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + if (ChunkError(CHUNK(stripe, p))) + rs_check_degrade_dev(rs, stripe, p); + } +} + +/* Lookup a RAID device by name or by major:minor number. */ +static int raid_dev_lookup(struct raid_set *rs, struct raid_dev *dev_lookup) +{ + unsigned p; + struct raid_dev *dev; + + /* + * Must be an incremental loop, because the device array + * can have empty slots still on calls from raid_ctr() + */ + for (dev = rs->dev, p = 0; + dev->dev && p < rs->set.raid_devs; + dev++, p++) { + if (dev_lookup->dev->bdev->bd_dev == dev->dev->bdev->bd_dev) + return p; + } + + return -ENODEV; +} +/* + * End small helper functions. + */ + +/* + * Stripe hash functions + */ +/* Initialize/destroy stripe hash. */ +static int hash_init(struct stripe_hash *hash, unsigned stripes) +{ + unsigned buckets = 2, max_buckets = stripes >> 1; + static unsigned hash_primes[] = { + /* Table of primes for hash_fn/table size optimization. */ + 1, 2, 3, 7, 13, 27, 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, 49157, 98317, + }; + + /* Calculate number of buckets (2^^n <= stripes / 2). */ + while (buckets < max_buckets) + buckets <<= 1; + + /* Allocate stripe hash buckets. */ + hash->hash = vmalloc(buckets * sizeof(*hash->hash)); + if (!hash->hash) + return -ENOMEM; + + hash->buckets = buckets; + hash->mask = buckets - 1; + hash->shift = ffs(buckets); + if (hash->shift > ARRAY_SIZE(hash_primes)) + hash->shift = ARRAY_SIZE(hash_primes) - 1; + + BUG_ON(hash->shift < 2); + hash->prime = hash_primes[hash->shift]; + + /* Initialize buckets. */ + while (buckets--) + INIT_LIST_HEAD(hash->hash + buckets); + return 0; +} + +static void hash_exit(struct stripe_hash *hash) +{ + if (hash->hash) { + vfree(hash->hash); + hash->hash = NULL; + } +} + +static unsigned hash_fn(struct stripe_hash *hash, sector_t key) +{ + return (unsigned) (((key * hash->prime) >> hash->shift) & hash->mask); +} + +static struct list_head *hash_bucket(struct stripe_hash *hash, sector_t key) +{ + return hash->hash + hash_fn(hash, key); +} + +/* Insert an entry into a hash. */ +static void stripe_insert(struct stripe_hash *hash, struct stripe *stripe) +{ + list_add(stripe->lists + LIST_HASH, hash_bucket(hash, stripe->key)); +} + +/* Lookup an entry in the stripe hash. */ +static struct stripe *stripe_lookup(struct stripe_cache *sc, sector_t key) +{ + unsigned look = 0; + struct stripe *stripe; + struct list_head *bucket = hash_bucket(&sc->hash, key); + + list_for_each_entry(stripe, bucket, lists[LIST_HASH]) { + look++; + + if (stripe->key == key) { + /* REMOVEME: statisics. */ + if (look > atomic_read(RS(sc)->stats + S_MAX_LOOKUP)) + atomic_set(RS(sc)->stats + S_MAX_LOOKUP, look); + return stripe; + } + } + + return NULL; +} + +/* Resize the stripe cache hash on size changes. */ +static int sc_hash_resize(struct stripe_cache *sc) +{ + /* Resize indicated ? */ + if (atomic_read(&sc->stripes) != atomic_read(&sc->stripes_last)) { + int r; + struct stripe_hash hash; + + r = hash_init(&hash, atomic_read(&sc->stripes)); + if (r) + return r; + + if (sc->hash.hash) { + unsigned b = sc->hash.buckets; + struct list_head *pos, *tmp; + + /* Walk old buckets and insert into new. */ + while (b--) { + list_for_each_safe(pos, tmp, sc->hash.hash + b) + stripe_insert(&hash, + list_entry(pos, struct stripe, + lists[LIST_HASH])); + } + + } + + hash_exit(&sc->hash); + memcpy(&sc->hash, &hash, sizeof(sc->hash)); + atomic_set(&sc->stripes_last, atomic_read(&sc->stripes)); + } + + return 0; +} +/* End hash stripe hash function. */ + +/* List add, delete, push and pop functions. */ +/* Add stripe to flush list. */ +#define DEL_LIST(lh) \ + if (!list_empty(lh)) \ + list_del_init(lh); + +/* Delete stripe from hash. */ +static void stripe_hash_del(struct stripe *stripe) +{ + DEL_LIST(stripe->lists + LIST_HASH); +} + +/* Return stripe reference count. */ +static inline int stripe_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->cnt); +} + +static void stripe_flush_add(struct stripe *stripe) +{ + struct stripe_cache *sc = stripe->sc; + struct list_head *lh = stripe->lists + LIST_FLUSH; + + if (!StripeReconstruct(stripe) && list_empty(lh)) + list_add_tail(lh, sc->lists + LIST_FLUSH); +} + +/* + * Add stripe to LRU (inactive) list. + * + * Need lock, because of concurrent access from message interface. + */ +static void stripe_lru_add(struct stripe *stripe) +{ + if (!StripeRecover(stripe)) { + unsigned long flags; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + spin_lock_irqsave(lock, flags); + if (list_empty(lh)) + list_add_tail(lh, stripe->sc->lists + LIST_LRU); + spin_unlock_irqrestore(lock, flags); + } +} + +#define POP_LIST(list) \ + do { \ + if (list_empty(sc->lists + (list))) \ + stripe = NULL; \ + else { \ + stripe = list_first_entry(sc->lists + (list), \ + struct stripe, \ + lists[(list)]); \ + list_del_init(stripe->lists + (list)); \ + } \ + } while (0); + +/* Pop an available stripe off the LRU list. */ +static struct stripe *stripe_lru_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_LRU; + + spin_lock_irq(lock); + POP_LIST(LIST_LRU); + spin_unlock_irq(lock); + + return stripe; +} + +/* Pop an available stripe off the io list. */ +static struct stripe *stripe_io_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + + POP_LIST(LIST_FLUSH); + return stripe; +} + +/* Push a stripe safely onto the endio list to be handled by do_endios(). */ +static void stripe_endio_push(struct stripe *stripe) +{ + unsigned long flags; + struct stripe_cache *sc = stripe->sc; + struct list_head *stripe_list = stripe->lists + LIST_ENDIO, + *sc_list = sc->lists + LIST_ENDIO; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with do_endios(). */ + spin_lock_irqsave(lock, flags); + if (list_empty(stripe_list)) + list_add_tail(stripe_list, sc_list); + spin_unlock_irqrestore(lock, flags); + + wake_do_raid(RS(sc)); /* Wake myself. */ +} + +/* Pop a stripe off safely off the endio list. */ +static struct stripe *stripe_endio_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with endio(). */ + spin_lock_irq(lock); + POP_LIST(LIST_ENDIO) + spin_unlock_irq(lock); + return stripe; +} +#undef POP_LIST + +/* + * Stripe cache locking functions + */ +/* Dummy lock function for single host RAID4+5. */ +static void *no_lock(sector_t key, enum dm_lock_type type) +{ + return &no_lock; +} + +/* Dummy unlock function for single host RAID4+5. */ +static void no_unlock(void *lock_handle) +{ +} + +/* No locking (for single host RAID 4+5). */ +static struct dm_raid45_locking_type locking_none = { + .lock = no_lock, + .unlock = no_unlock, +}; + +/* Lock a stripe (for clustering). */ +static int +stripe_lock(struct stripe *stripe, int rw, sector_t key) +{ + stripe->lock = RS(stripe->sc)->locking->lock(key, rw == READ ? DM_RAID45_SHARED : DM_RAID45_EX); + return stripe->lock ? 0 : -EPERM; +} + +/* Unlock a stripe (for clustering). */ +static void stripe_unlock(struct stripe *stripe) +{ + RS(stripe->sc)->locking->unlock(stripe->lock); + stripe->lock = NULL; +} + +/* Test io pending on stripe. */ +static int stripe_io_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->io.pending); +} + +static void stripe_io_get(struct stripe *stripe) +{ + if (atomic_inc_return(&stripe->io.pending) == 1) + /* REMOVEME: statistics */ + atomic_inc(&stripe->sc->active_stripes); + else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +static void stripe_io_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->io.pending)) { + if (unlikely(StripeRecover(stripe))) + /* Don't put recovery stripe on endio list. */ + wake_do_raid(RS(stripe->sc)); + else + /* Add regular stripe to endio list and wake daemon. */ + stripe_endio_push(stripe); + + /* REMOVEME: statistics */ + atomic_dec(&stripe->sc->active_stripes); + } else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +/* Take stripe reference out. */ +static int stripe_get(struct stripe *stripe) +{ + int r; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + /* Delete stripe from LRU (inactive) list if on. */ + spin_lock_irq(lock); + DEL_LIST(lh); + spin_unlock_irq(lock); + + BUG_ON(stripe_ref(stripe) < 0); + + /* Lock stripe on first reference */ + r = (atomic_inc_return(&stripe->cnt) == 1) ? + stripe_lock(stripe, WRITE, stripe->key) : 0; + + return r; +} +#undef DEL_LIST + +/* Return references on a chunk. */ +static int chunk_ref(struct stripe_chunk *chunk) +{ + return atomic_read(&chunk->cnt); +} + +/* Take out reference on a chunk. */ +static int chunk_get(struct stripe_chunk *chunk) +{ + return atomic_inc_return(&chunk->cnt); +} + +/* Drop reference on a chunk. */ +static void chunk_put(struct stripe_chunk *chunk) +{ + BUG_ON(atomic_dec_return(&chunk->cnt) < 0); +} + +/* + * Drop reference on a stripe. + * + * Move it to list of LRU stripes if zero. + */ +static void stripe_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->cnt)) { + BUG_ON(stripe_io_ref(stripe)); + stripe_unlock(stripe); + } else + BUG_ON(stripe_ref(stripe) < 0); +} + +/* Helper needed by for_each_io_dev(). */ +static void stripe_get_references(struct stripe *stripe, unsigned p) +{ + + /* + * Another one to reference the stripe in + * order to protect vs. LRU list moves. + */ + io_get(RS(stripe->sc)); /* Global io references. */ + stripe_get(stripe); + stripe_io_get(stripe); /* One for each chunk io. */ +} + +/* Helper for endio() to put all take references. */ +static void stripe_put_references(struct stripe *stripe) +{ + stripe_io_put(stripe); /* One for each chunk io. */ + stripe_put(stripe); + io_put(RS(stripe->sc)); +} + +/* + * Stripe cache functions. + */ +/* + * Invalidate all chunks (i.e. their pages) of a stripe. + * + * I only keep state for the whole chunk. + */ +static inline void stripe_chunk_invalidate(struct stripe_chunk *chunk) +{ + chunk->io.flags = 0; +} + +static void +stripe_chunks_invalidate(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + stripe_chunk_invalidate(CHUNK(stripe, p)); +} + +/* Prepare stripe for (re)use. */ +static void stripe_invalidate(struct stripe *stripe) +{ + stripe->io.flags = 0; + stripe->idx.parity = stripe->idx.recover = -1; + stripe_chunks_invalidate(stripe); +} + +/* + * Allow io on all chunks of a stripe. + * If not set, IO will not occur; i.e. it's prohibited. + * + * Actual IO submission for allowed chunks depends + * on their !uptodate or dirty state. + */ +static void stripe_allow_io(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + SetChunkIo(CHUNK(stripe, p)); +} + +/* Initialize a stripe. */ +static void stripe_init(struct stripe_cache *sc, struct stripe *stripe) +{ + unsigned i, p = RS(sc)->set.raid_devs; + + /* Work all io chunks. */ + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + + atomic_set(&chunk->cnt, 0); + chunk->stripe = stripe; + i = ARRAY_SIZE(chunk->bl); + while (i--) + bio_list_init(chunk->bl + i); + } + + stripe->sc = sc; + + + i = ARRAY_SIZE(stripe->lists); + while (i--) + INIT_LIST_HEAD(stripe->lists + i); + + stripe->io.size = RS(sc)->set.io_size; + atomic_set(&stripe->cnt, 0); + atomic_set(&stripe->io.pending, 0); + stripe_invalidate(stripe); +} + +/* Number of pages per chunk. */ +static inline unsigned chunk_pages(unsigned sectors) +{ + return dm_div_up(sectors, SECTORS_PER_PAGE); +} + +/* Number of pages per stripe. */ +static inline unsigned stripe_pages(struct raid_set *rs, unsigned io_size) +{ + return chunk_pages(io_size) * rs->set.raid_devs; +} + +/* Initialize part of page_list (recovery). */ +static void stripe_zero_pl_part(struct stripe *stripe, int p, + unsigned start, unsigned count) +{ + unsigned o = start / SECTORS_PER_PAGE, pages = chunk_pages(count); + /* Get offset into the page_list. */ + struct page_list *pl = pl_elem(PL(stripe, p), o); + + BUG_ON(!pl); + while (pl && pages--) { + BUG_ON(!pl->page); + memset(page_address(pl->page), 0, PAGE_SIZE); + pl = pl->next; + } +} + +/* Initialize parity chunk of stripe. */ +static void stripe_zero_chunk(struct stripe *stripe, int p) +{ + if (p > -1) + stripe_zero_pl_part(stripe, p, 0, stripe->io.size); +} + +/* Return dynamic stripe structure size. */ +static size_t stripe_size(struct raid_set *rs) +{ + return sizeof(struct stripe) + + rs->set.raid_devs * sizeof(struct stripe_chunk); +} + +/* Allocate a stripe and its memory object. */ +/* XXX adjust to cope with stripe cache and recovery stripe caches. */ +enum grow { SC_GROW, SC_KEEP }; +static struct stripe *stripe_alloc(struct stripe_cache *sc, + struct dm_mem_cache_client *mc, + enum grow grow) +{ + int r; + struct stripe *stripe; + + stripe = kmem_cache_zalloc(sc->kc.cache, GFP_KERNEL); + if (stripe) { + /* Grow the dm-mem-cache by one object. */ + if (grow == SC_GROW) { + r = dm_mem_cache_grow(mc, 1); + if (r) + goto err_free; + } + + stripe->obj = dm_mem_cache_alloc(mc); + if (!stripe->obj) + goto err_shrink; + + stripe_init(sc, stripe); + } + + return stripe; + +err_shrink: + if (grow == SC_GROW) + dm_mem_cache_shrink(mc, 1); +err_free: + kmem_cache_free(sc->kc.cache, stripe); + return NULL; +} + +/* + * Free a stripes memory object, shrink the + * memory cache and free the stripe itself. + */ +static void stripe_free(struct stripe *stripe, struct dm_mem_cache_client *mc) +{ + dm_mem_cache_free(mc, stripe->obj); + dm_mem_cache_shrink(mc, 1); + kmem_cache_free(stripe->sc->kc.cache, stripe); +} + +/* Free the recovery stripe. */ +static void stripe_recover_free(struct raid_set *rs) +{ + struct recover *rec = &rs->recover; + struct dm_mem_cache_client *mc; + + mc = rec->mem_cache_client; + rec->mem_cache_client = NULL; + if (mc) { + struct stripe *stripe; + + while (!list_empty(&rec->stripes)) { + stripe = list_first_entry(&rec->stripes, struct stripe, + lists[LIST_RECOVER]); + list_del(stripe->lists + LIST_RECOVER); + kfree(stripe->recover); + stripe_free(stripe, mc); + } + + dm_mem_cache_client_destroy(mc); + dm_io_client_destroy(rec->dm_io_client); + rec->dm_io_client = NULL; + } +} + +/* Grow stripe cache. */ +static int sc_grow(struct stripe_cache *sc, unsigned stripes, enum grow grow) +{ + int r = 0; + + /* Try to allocate this many (additional) stripes. */ + while (stripes--) { + struct stripe *stripe = + stripe_alloc(sc, sc->mem_cache_client, grow); + + if (likely(stripe)) { + stripe_lru_add(stripe); + atomic_inc(&sc->stripes); + } else { + r = -ENOMEM; + break; + } + } + + return r ? r : sc_hash_resize(sc); +} + +/* Shrink stripe cache. */ +static int sc_shrink(struct stripe_cache *sc, unsigned stripes) +{ + int r = 0; + + /* Try to get unused stripe from LRU list. */ + while (stripes--) { + struct stripe *stripe; + + stripe = stripe_lru_pop(sc); + if (stripe) { + /* An LRU stripe may never have ios pending! */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); + atomic_dec(&sc->stripes); + /* Remove from hash if on before deletion. */ + stripe_hash_del(stripe); + stripe_free(stripe, sc->mem_cache_client); + } else { + r = -ENOENT; + break; + } + } + + /* Check if stats are still sane. */ + if (atomic_read(&sc->active_stripes_max) > + atomic_read(&sc->stripes)) + atomic_set(&sc->active_stripes_max, 0); + + if (r) + return r; + + return atomic_read(&sc->stripes) ? sc_hash_resize(sc) : 0; +} + +/* Create stripe cache and recovery. */ +static int sc_init(struct raid_set *rs, unsigned stripes) +{ + unsigned i, r, rstripes; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + struct recover *rec = &rs->recover; + struct mapped_device *md; + struct gendisk *disk; + + /* Initialize lists and locks. */ + i = ARRAY_SIZE(sc->lists); + while (i--) + INIT_LIST_HEAD(sc->lists + i); + + INIT_LIST_HEAD(&rec->stripes); + + /* Initialize endio and LRU list locks. */ + i = NR_LOCKS; + while (i--) + spin_lock_init(sc->locks + i); + + /* Initialize atomic variables. */ + atomic_set(&sc->stripes, 0); + atomic_set(&sc->stripes_to_set, 0); + atomic_set(&sc->active_stripes, 0); + atomic_set(&sc->active_stripes_max, 0); /* REMOVEME: statistics. */ + + /* + * We need a runtime unique # to suffix the kmem cache name + * because we'll have one for each active RAID set. + */ + md = dm_table_get_md(rs->ti->table); + disk = dm_disk(md); + sprintf(sc->kc.name, "%s-%d", TARGET, disk->first_minor); + dm_put(md); + sc->kc.cache = kmem_cache_create(sc->kc.name, stripe_size(rs), + 0, 0, NULL); + if (!sc->kc.cache) + return -ENOMEM; + + /* Create memory cache client context for RAID stripe cache. */ + sc->mem_cache_client = + dm_mem_cache_client_create(stripes, rs->set.raid_devs, + chunk_pages(rs->set.io_size)); + if (IS_ERR(sc->mem_cache_client)) + return PTR_ERR(sc->mem_cache_client); + + /* Create memory cache client context for RAID recovery stripe(s). */ + rstripes = rec->recovery_stripes; + rec->mem_cache_client = + dm_mem_cache_client_create(rstripes, rs->set.raid_devs, + chunk_pages(rec->io_size)); + if (IS_ERR(rec->mem_cache_client)) + return PTR_ERR(rec->mem_cache_client); + + /* Create dm-io client context for IO stripes. */ + sc->dm_io_client = + dm_io_client_create(); + if (IS_ERR(sc->dm_io_client)) + return PTR_ERR(sc->dm_io_client); + + /* FIXME: intermingeled with stripe cache initialization. */ + /* Create dm-io client context for recovery stripes. */ + rec->dm_io_client = + dm_io_client_create(); + if (IS_ERR(rec->dm_io_client)) + return PTR_ERR(rec->dm_io_client); + + /* Allocate stripes for set recovery. */ + while (rstripes--) { + stripe = stripe_alloc(sc, rec->mem_cache_client, SC_KEEP); + if (!stripe) + return -ENOMEM; + + stripe->recover = kzalloc(sizeof(*stripe->recover), GFP_KERNEL); + if (!stripe->recover) { + stripe_free(stripe, rec->mem_cache_client); + return -ENOMEM; + } + + SetStripeRecover(stripe); + stripe->io.size = rec->io_size; + list_add_tail(stripe->lists + LIST_RECOVER, &rec->stripes); + /* Don't add recovery stripes to LRU list! */ + } + + /* + * Allocate the stripe objetcs from the + * cache and add them to the LRU list. + */ + r = sc_grow(sc, stripes, SC_KEEP); + if (!r) + atomic_set(&sc->stripes_last, stripes); + + return r; +} + +/* Destroy the stripe cache. */ +static void sc_exit(struct stripe_cache *sc) +{ + struct raid_set *rs = RS(sc); + + if (sc->kc.cache) { + stripe_recover_free(rs); + BUG_ON(sc_shrink(sc, atomic_read(&sc->stripes))); + kmem_cache_destroy(sc->kc.cache); + sc->kc.cache = NULL; + + if (sc->mem_cache_client && !IS_ERR(sc->mem_cache_client)) + dm_mem_cache_client_destroy(sc->mem_cache_client); + + if (sc->dm_io_client && !IS_ERR(sc->dm_io_client)) + dm_io_client_destroy(sc->dm_io_client); + + hash_exit(&sc->hash); + } +} + +/* + * Calculate RAID address + * + * Delivers tuple with the index of the data disk holding the chunk + * in the set, the parity disks index and the start of the stripe + * within the address space of the set (used as the stripe cache hash key). + */ +/* thx MD. */ +static struct raid_address *raid_address(struct raid_set *rs, sector_t sector, + struct raid_address *addr) +{ + sector_t stripe, tmp; + + /* + * chunk_number = sector / chunk_size + * stripe_number = chunk_number / data_devs + * di = stripe % data_devs; + */ + stripe = sector >> rs->set.chunk_shift; + addr->di = sector_div(stripe, rs->set.data_devs); + + switch (rs->set.raid_type->level) { + case raid4: + addr->pi = rs->set.pi; + goto check_shift_di; + case raid5: + tmp = stripe; + addr->pi = sector_div(tmp, rs->set.raid_devs); + + switch (rs->set.raid_type->algorithm) { + case left_asym: /* Left asymmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_asym: /* Right asymmetric. */ +check_shift_di: + if (addr->di >= addr->pi) + addr->di++; + break; + case left_sym: /* Left symmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_sym: /* Right symmetric. */ + addr->di = (addr->pi + addr->di + 1) % + rs->set.raid_devs; + break; + case none: /* Ain't happen: RAID4 algorithm placeholder. */ + BUG(); + } + } + + /* + * Start offset of the stripes chunk on any single device of the RAID + * set, adjusted in case io size differs from chunk size. + */ + addr->key = (stripe << rs->set.chunk_shift) + + (sector & rs->set.io_inv_mask); + return addr; +} + +/* + * Copy data across between stripe pages and bio vectors. + * + * Pay attention to data alignment in stripe and bio pages. + */ +static void bio_copy_page_list(int rw, struct stripe *stripe, + struct page_list *pl, struct bio *bio) +{ + unsigned i, page_offset; + void *page_addr; + struct raid_set *rs = RS(stripe->sc); + struct bio_vec *bv; + + /* Get start page in page list for this sector. */ + i = (bio->bi_sector & rs->set.io_mask) / SECTORS_PER_PAGE; + pl = pl_elem(pl, i); + BUG_ON(!pl); + BUG_ON(!pl->page); + + page_addr = page_address(pl->page); + page_offset = to_bytes(bio->bi_sector & (SECTORS_PER_PAGE - 1)); + + /* Walk all segments and copy data across between bio_vecs and pages. */ + bio_for_each_segment(bv, bio, i) { + int len = bv->bv_len, size; + unsigned bio_offset = 0; + void *bio_addr = __bio_kmap_atomic(bio, i, KM_USER0); +redo: + size = (page_offset + len > PAGE_SIZE) ? + PAGE_SIZE - page_offset : len; + + if (rw == READ) + memcpy(bio_addr + bio_offset, + page_addr + page_offset, size); + else + memcpy(page_addr + page_offset, + bio_addr + bio_offset, size); + + page_offset += size; + if (page_offset == PAGE_SIZE) { + /* + * We reached the end of the chunk page -> + * need to refer to the next one to copy more data. + */ + len -= size; + if (len) { + /* Get next page. */ + pl = pl->next; + BUG_ON(!pl); + BUG_ON(!pl->page); + page_addr = page_address(pl->page); + page_offset = 0; + bio_offset += size; + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIO_COPY_PL_NEXT); + goto redo; + } + } + + __bio_kunmap_atomic(bio_addr, KM_USER0); + } +} + +/* + * Xor optimization macros. + */ +/* Xor data pointer declaration and initialization macros. */ +#define DECLARE_2 unsigned long *d0 = data[0], *d1 = data[1] +#define DECLARE_3 DECLARE_2, *d2 = data[2] +#define DECLARE_4 DECLARE_3, *d3 = data[3] +#define DECLARE_5 DECLARE_4, *d4 = data[4] +#define DECLARE_6 DECLARE_5, *d5 = data[5] +#define DECLARE_7 DECLARE_6, *d6 = data[6] +#define DECLARE_8 DECLARE_7, *d7 = data[7] + +/* Xor unrole macros. */ +#define D2(n) d0[n] = d0[n] ^ d1[n] +#define D3(n) D2(n) ^ d2[n] +#define D4(n) D3(n) ^ d3[n] +#define D5(n) D4(n) ^ d4[n] +#define D6(n) D5(n) ^ d5[n] +#define D7(n) D6(n) ^ d6[n] +#define D8(n) D7(n) ^ d7[n] + +#define X_2(macro, offset) macro(offset); macro(offset + 1); +#define X_4(macro, offset) X_2(macro, offset); X_2(macro, offset + 2); +#define X_8(macro, offset) X_4(macro, offset); X_4(macro, offset + 4); +#define X_16(macro, offset) X_8(macro, offset); X_8(macro, offset + 8); +#define X_32(macro, offset) X_16(macro, offset); X_16(macro, offset + 16); +#define X_64(macro, offset) X_32(macro, offset); X_32(macro, offset + 32); + +/* Define a _xor_#chunks_#xors_per_run() function. */ +#define _XOR(chunks, xors_per_run) \ +static void _xor ## chunks ## _ ## xors_per_run(unsigned long **data) \ +{ \ + unsigned end = XOR_SIZE / sizeof(data[0]), i; \ + DECLARE_ ## chunks; \ +\ + for (i = 0; i < end; i += xors_per_run) { \ + X_ ## xors_per_run(D ## chunks, i); \ + } \ +} + +/* Define xor functions for 2 - 8 chunks and xors per run. */ +#define MAKE_XOR_PER_RUN(xors_per_run) \ + _XOR(2, xors_per_run); _XOR(3, xors_per_run); \ + _XOR(4, xors_per_run); _XOR(5, xors_per_run); \ + _XOR(6, xors_per_run); _XOR(7, xors_per_run); \ + _XOR(8, xors_per_run); + +MAKE_XOR_PER_RUN(8) /* Define _xor_*_8() functions. */ +MAKE_XOR_PER_RUN(16) /* Define _xor_*_16() functions. */ +MAKE_XOR_PER_RUN(32) /* Define _xor_*_32() functions. */ +MAKE_XOR_PER_RUN(64) /* Define _xor_*_64() functions. */ + +#define MAKE_XOR(xors_per_run) \ +struct { \ + void (*f)(unsigned long **); \ +} static xor_funcs ## xors_per_run[] = { \ + { NULL }, /* NULL pointers to optimize indexing in xor(). */ \ + { NULL }, \ + { _xor2_ ## xors_per_run }, \ + { _xor3_ ## xors_per_run }, \ + { _xor4_ ## xors_per_run }, \ + { _xor5_ ## xors_per_run }, \ + { _xor6_ ## xors_per_run }, \ + { _xor7_ ## xors_per_run }, \ + { _xor8_ ## xors_per_run }, \ +}; \ +\ +static void xor_ ## xors_per_run(unsigned n, unsigned long **data) \ +{ \ + /* Call respective function for amount of chunks. */ \ + xor_funcs ## xors_per_run[n].f(data); \ +} + +/* Define xor_8() - xor_64 functions. */ +MAKE_XOR(8) +MAKE_XOR(16) +MAKE_XOR(32) +MAKE_XOR(64) + +/* Maximum number of chunks, which can be xor'ed in one go. */ +#define XOR_CHUNKS_MAX (ARRAY_SIZE(xor_funcs8) - 1) + +static void xor_blocks_wrapper(unsigned n, unsigned long **data) +{ + BUG_ON(n < 2 || n > MAX_XOR_BLOCKS + 1); + xor_blocks(n - 1, XOR_SIZE, (void *) data[0], (void **) data + 1); +} + +struct xor_func { + xor_function_t f; + const char *name; +} static xor_funcs[] = { + { xor_8, "xor_8" }, + { xor_16, "xor_16" }, + { xor_32, "xor_32" }, + { xor_64, "xor_64" }, + { xor_blocks_wrapper, "xor_blocks" }, +}; + +/* + * Check, if chunk has to be xored in/out: + * + * o if writes are queued + * o if writes are merged + * o if stripe is to be reconstructed + * o if recovery stripe + */ +static inline int chunk_must_xor(struct stripe_chunk *chunk) +{ + if (ChunkUptodate(chunk)) { + BUG_ON(!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) && + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))); + + if (!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) || + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) + return 1; + + if (StripeReconstruct(chunk->stripe) || + StripeRecover(chunk->stripe)) + return 1; + } + + return 0; +} + +/* + * Calculate crc. + * + * This indexes into the chunks of a stripe and their pages. + * + * All chunks will be xored into the indexed (@pi) + * chunk in maximum groups of xor.chunks. + * + */ +static void xor(struct stripe *stripe, unsigned pi, unsigned sector) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned max_chunks = rs->xor.chunks, n = 1, + o = sector / SECTORS_PER_PAGE, /* Offset into the page_list. */ + p = rs->set.raid_devs; + unsigned long **d = rs->data; + xor_function_t xor_f = rs->xor.f->f; + + BUG_ON(sector > stripe->io.size); + + /* Address of parity page to xor into. */ + d[0] = page_address(pl_elem(PL(stripe, pi), o)->page); + + while (p--) { + /* Preset pointers to data pages. */ + if (p != pi && chunk_must_xor(CHUNK(stripe, p))) + d[n++] = page_address(pl_elem(PL(stripe, p), o)->page); + + /* If max chunks -> xor. */ + if (n == max_chunks) { + xor_f(n, d); + n = 1; + } + } + + /* If chunks -> xor. */ + if (n > 1) + xor_f(n, d); +} + +/* Common xor loop through all stripe page lists. */ +static void common_xor(struct stripe *stripe, sector_t count, + unsigned off, unsigned pi) +{ + unsigned sector; + + BUG_ON(!count); + for (sector = off; sector < count; sector += SECTORS_PER_PAGE) + xor(stripe, pi, sector); + + /* Set parity page uptodate and clean. */ + chunk_set(CHUNK(stripe, pi), CLEAN); + atomic_inc(RS(stripe->sc)->stats + S_XORS); /* REMOVEME: statistics. */ +} + +/* + * Calculate parity sectors on intact stripes. + * + * Need to calculate raid address for recover stripe, because its + * chunk sizes differs and is typically larger than io chunk size. + */ +static void parity_xor(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunk_size = rs->set.chunk_size, io_size = stripe->io.size, + xor_size = chunk_size > io_size ? io_size : chunk_size; + sector_t off; + + /* This can be the recover stripe with a larger io size. */ + for (off = 0; off < io_size; off += xor_size) { + /* + * Recover stripe is likely bigger than regular io + * ones and has no precalculated parity disk index -> + * need to calculate RAID address. + */ + if (unlikely(StripeRecover(stripe))) { + struct raid_address addr; + + raid_address(rs, + (stripe->key + off) * rs->set.data_devs, + &addr); + stripe->idx.parity = addr.pi; + stripe_zero_pl_part(stripe, addr.pi, off, xor_size); + } + + common_xor(stripe, xor_size, off, stripe->idx.parity); + chunk_set(CHUNK(stripe, stripe->idx.parity), DIRTY); + } +} + +/* Reconstruct missing chunk. */ +static void stripe_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + int p = rs->set.raid_devs, pr = stripe->idx.recover; + + BUG_ON(pr < 0); + + /* Check if all but the chunk to be reconstructed are uptodate. */ + while (p--) + BUG_ON(p != pr && !ChunkUptodate(CHUNK(stripe, p))); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (RSDegraded(rs) ? S_RECONSTRUCT_EI : + S_RECONSTRUCT_DEV)); + /* Zero chunk to be reconstructed. */ + stripe_zero_chunk(stripe, pr); + common_xor(stripe, stripe->io.size, 0, pr); + stripe->idx.recover = -1; +} + +/* + * Recovery io throttling + */ +/* Conditionally reset io counters. */ +static int recover_io_reset(struct raid_set *rs) +{ + unsigned long j = jiffies; + + /* Pay attention to jiffies overflows. */ + if (j > rs->recover.last_jiffies + HZ / 20 || + j < rs->recover.last_jiffies) { + atomic_set(rs->recover.io_count + IO_WORK, 0); + atomic_set(rs->recover.io_count + IO_RECOVER, 0); + rs->recover.last_jiffies = j; + return 1; + } + + return 0; +} + +/* Count ios. */ +static void recover_io_count(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + recover_io_reset(rs); + atomic_inc(rs->recover.io_count + + (StripeRecover(stripe) ? IO_RECOVER : IO_WORK)); +} + +/* Try getting a stripe either from the hash or from the LRU list. */ +static struct stripe *stripe_find(struct raid_set *rs, + struct raid_address *addr) +{ + int r; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + + /* Try stripe from hash. */ + stripe = stripe_lookup(sc, addr->key); + if (stripe) { + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + atomic_inc(rs->stats + S_HITS_1ST); /* REMOVEME: statistics. */ + } else { + /* Not in hash -> try to get an LRU stripe. */ + stripe = stripe_lru_pop(sc); + if (stripe) { + /* + * An LRU stripe may not be referenced + * and may never have ios pending! + */ + BUG_ON(stripe_ref(stripe)); + BUG_ON(stripe_io_ref(stripe)); + + /* Remove from hash if on before reuse. */ + stripe_hash_del(stripe); + + /* Invalidate before reinserting with changed key. */ + stripe_invalidate(stripe); + + stripe->key = addr->key; + stripe->region = dm_rh_sector_to_region(rs->recover.rh, + addr->key); + stripe->idx.parity = addr->pi; + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + /* Insert stripe into the stripe hash. */ + stripe_insert(&sc->hash, stripe); + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_INSCACHE); + } + } + + return stripe; + +get_lock_failed: + stripe_put(stripe); + return NULL; +} + +/* + * Process end io + * + * I need to do it here because I can't in interrupt + */ +/* End io all bios on a bio list. */ +static void bio_list_endio(struct stripe *stripe, struct bio_list *bl, + int p, int error) +{ + struct raid_set *rs = RS(stripe->sc); + struct bio *bio; + struct page_list *pl = PL(stripe, p); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Update region counters. */ + while ((bio = bio_list_pop(bl))) { + if (bio_data_dir(bio) == WRITE) + /* Drop io pending count for any writes. */ + dm_rh_dec(rs->recover.rh, stripe->region); + else if (!error) + /* Copy data accross. */ + bio_copy_page_list(READ, stripe, pl, bio); + + bio_endio(bio, error); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_ENDIO_READ : S_BIOS_ENDIO_WRITE)); + + chunk_put(chunk); + stripe_put(stripe); + io_put(rs); /* Wake any suspend waiters on last bio. */ + } +} + +/* + * End io all reads/writes on a stripe copying + * read data accross from stripe to bios and + * decrementing region counters for writes. + * + * Processing of ios depeding on state: + * o no chunk error -> endio ok + * o degraded: + * - chunk error and read -> ignore to be requeued + * - chunk error and write -> endio ok + * o dead (more than parity_devs failed) and chunk_error-> endio failed + */ +static void stripe_endio(int rw, struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + int write = (rw != READ); + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *bl; + + BUG_ON(ChunkLocked(chunk)); + + bl = BL_CHUNK(chunk, rw); + if (bio_list_empty(bl)) + continue; + + if (unlikely(ChunkError(chunk) || !ChunkUptodate(chunk))) { + /* RAID set dead. */ + if (unlikely(RSDead(rs))) + bio_list_endio(stripe, bl, p, -EIO); + /* RAID set degraded. */ + else if (write) + bio_list_endio(stripe, bl, p, 0); + } else { + BUG_ON(!RSDegraded(rs) && ChunkDirty(chunk)); + bio_list_endio(stripe, bl, p, 0); + } + } +} + +/* Fail all ios hanging off all bio lists of a stripe. */ +static void stripe_fail_io(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + int i = ARRAY_SIZE(chunk->bl); + + /* Fail all bios on all bio lists of the stripe. */ + while (i--) { + struct bio_list *bl = chunk->bl + i; + + if (!bio_list_empty(bl)) + bio_list_endio(stripe, bl, p, -EIO); + } + } + + /* Put stripe on LRU list. */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); +} + +/* Unlock all required chunks. */ +static void stripe_chunks_unlock(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + struct stripe_chunk *chunk; + + while (p--) { + chunk = CHUNK(stripe, p); + + if (TestClearChunkUnlock(chunk)) + ClearChunkLocked(chunk); + } +} + +/* + * Queue reads and writes to a stripe by hanging + * their bios off the stripesets read/write lists. + */ +static int stripe_queue_bio(struct raid_set *rs, struct bio *bio, + struct bio_list *reject) +{ + struct raid_address addr; + struct stripe *stripe; + + stripe = stripe_find(rs, raid_address(rs, bio->bi_sector, &addr)); + if (stripe) { + int r = 0, rw = bio_data_dir(bio); + + /* Distinguish reads and writes. */ + bio_list_add(BL(stripe, addr.di, rw), bio); + + if (rw == READ) + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_READ); + else { + /* Inrement pending write count on region. */ + dm_rh_inc(rs->recover.rh, stripe->region); + r = 1; + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_WRITE); + } + + /* + * Put on io (flush) list in case of + * initial bio queued to chunk. + */ + if (chunk_get(CHUNK(stripe, addr.di)) == 1) + stripe_flush_add(stripe); + + return r; + } + + /* Got no stripe from cache or failed to lock it -> reject bio. */ + bio_list_add(reject, bio); + atomic_inc(rs->stats + S_IOS_POST); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Handle all stripes by handing them to the daemon, because we can't + * map their chunk pages to copy the data in interrupt context. + * + * We don't want to handle them here either, while interrupts are disabled. + */ + +/* Read/write endio function for dm-io (interrupt context). */ +static void endio(unsigned long error, void *context) +{ + struct stripe_chunk *chunk = context; + + if (unlikely(error)) { + chunk_set(chunk, ERROR); + /* REMOVEME: statistics. */ + atomic_inc(RS(chunk->stripe->sc)->stats + S_STRIPE_ERROR); + } else + chunk_set(chunk, CLEAN); + + /* + * For recovery stripes, I need to reset locked locked + * here, because those aren't processed in do_endios(). + */ + if (unlikely(StripeRecover(chunk->stripe))) + ClearChunkLocked(chunk); + else + SetChunkUnlock(chunk); + + /* Indirectly puts stripe on cache's endio list via stripe_io_put(). */ + stripe_put_references(chunk->stripe); +} + +/* Read/Write a chunk asynchronously. */ +static void stripe_chunk_rw(struct stripe *stripe, unsigned p) +{ + struct stripe_cache *sc = stripe->sc; + struct raid_set *rs = RS(sc); + struct dm_mem_cache_object *obj = stripe->obj + p; + struct page_list *pl = obj->pl; + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct raid_dev *dev = rs->dev + p; + struct dm_io_region io = { + .bdev = dev->dev->bdev, + .sector = stripe->key, + .count = stripe->io.size, + }; + struct dm_io_request control = { + .bi_rw = ChunkDirty(chunk) ? WRITE : READ, + .mem = { + .type = DM_IO_PAGE_LIST, + .ptr.pl = pl, + .offset = 0, + }, + .notify = { + .fn = endio, + .context = chunk, + }, + .client = StripeRecover(stripe) ? rs->recover.dm_io_client : + sc->dm_io_client, + }; + + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk) && ChunkDirty(chunk)); + BUG_ON(ChunkUptodate(chunk) && !ChunkDirty(chunk)); + + /* + * Don't rw past end of device, which can happen, because + * typically sectors_per_dev isn't divisible by io_size. + */ + if (unlikely(io.sector + io.count > rs->set.sectors_per_dev)) + io.count = rs->set.sectors_per_dev - io.sector; + + BUG_ON(!io.count); + io.sector += dev->start; /* Add . */ + if (RSRecover(rs)) + recover_io_count(stripe); /* Recovery io accounting. */ + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (ChunkDirty(chunk) ? S_DM_IO_WRITE : + S_DM_IO_READ)); + SetChunkLocked(chunk); + SetDevIoQueued(dev); + BUG_ON(dm_io(&control, 1, &io, NULL)); +} + +/* + * Write dirty or read not uptodate page lists of a stripe. + */ +static int stripe_chunks_rw(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Increment the pending count on the stripe + * first, so that we don't race in endio(). + * + * An inc (IO) is needed for any chunk unless !ChunkIo(chunk): + * + * o not uptodate + * o dirtied by writes merged + * o dirtied by parity calculations + */ + r = for_each_io_dev(stripe, stripe_get_references); + if (r) { + /* Io needed: chunks are either not uptodate or dirty. */ + int max; /* REMOVEME: */ + struct stripe_cache *sc = &rs->sc; + + /* Submit actual io. */ + for_each_io_dev(stripe, stripe_chunk_rw); + + /* REMOVEME: statistics */ + max = sc_active(sc); + if (atomic_read(&sc->active_stripes_max) < max) + atomic_set(&sc->active_stripes_max, max); + + atomic_inc(rs->stats + S_FLUSHS); + /* END REMOVEME: statistics */ + } + + return r; +} + +/* Merge in all writes hence dirtying respective chunks. */ +static void stripe_merge_writes(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE_QUEUED); + + if (!bio_list_empty(write)) { + struct bio *bio; + struct page_list *pl = stripe->obj[p].pl; + + /* + * We can play with the lists without holding a lock, + * because it is just us accessing them anyway. + */ + bio_list_for_each(bio, write) + bio_copy_page_list(WRITE, stripe, pl, bio); + + bio_list_merge(BL_CHUNK(chunk, WRITE_MERGED), write); + bio_list_init(write); + chunk_set(chunk, DIRTY); + } + } +} + +/* Queue all writes to get merged. */ +static int stripe_queue_writes(struct stripe *stripe) +{ + int r = 0; + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE); + + if (!bio_list_empty(write)) { + bio_list_merge(BL_CHUNK(chunk, WRITE_QUEUED), write); + bio_list_init(write); +SetChunkIo(chunk); + r = 1; + } + } + + return r; +} + + +/* Check, if a chunk gets completely overwritten. */ +static int stripe_check_chunk_overwrite(struct stripe *stripe, unsigned p) +{ + unsigned sectors = 0; + struct bio *bio; + struct bio_list *bl = BL(stripe, p, WRITE_QUEUED); + + bio_list_for_each(bio, bl) + sectors += bio_sectors(bio); + + BUG_ON(sectors > RS(stripe->sc)->set.io_size); + return sectors == RS(stripe->sc)->set.io_size; +} + +/* + * Avoid io on broken/reconstructed drive in order to + * reconstruct date on endio. + * + * (*1*) We set StripeReconstruct() in here, so that _do_endios() + * will trigger a reconstruct call before resetting it. + */ +static int stripe_chunk_set_io_flags(struct stripe *stripe, int pr) +{ + struct stripe_chunk *chunk = CHUNK(stripe, pr); + + /* + * Allow io on all chunks but the indexed one, + * because we're either degraded or prohibit it + * on the one for later reconstruction. + */ + /* Includes ClearChunkIo(), ClearChunkUptodate(). */ + stripe_chunk_invalidate(chunk); + stripe->idx.recover = pr; + SetStripeReconstruct(stripe); + + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + return -EPERM; +} + +/* Chunk locked/uptodate and device failed tests. */ +static struct stripe_chunk * +stripe_chunk_check(struct stripe *stripe, unsigned p, unsigned *chunks_uptodate) +{ + struct raid_set *rs = RS(stripe->sc); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Can't access active chunks. */ + if (ChunkLocked(chunk)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_CHUNK_LOCKED); + return NULL; + } + + /* Can't access broken devive. */ + if (ChunkError(chunk) || DevFailed(rs->dev + p)) + return NULL; + + /* Can access uptodate chunks. */ + if (ChunkUptodate(chunk)) { + (*chunks_uptodate)++; + return NULL; + } + + return chunk; +} + +/* + * Degraded/reconstruction mode. + * + * Check stripe state to figure which chunks don't need IO. + * + * Returns 0 for fully operational, -EPERM for degraded/resynchronizing. + */ +static int stripe_check_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + if (RSDead(rs)) { + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + stripe_allow_io(stripe); + return 0; + } + + /* Avoid further reconstruction setting, when already set. */ + if (StripeReconstruct(stripe)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_RECONSTRUCT_SET); + return -EBUSY; + } + + /* Initially allow io on all chunks. */ + stripe_allow_io(stripe); + + /* Return if stripe is already reconstructed. */ + if (StripeReconstructed(stripe)) { + atomic_inc(rs->stats + S_RECONSTRUCTED); + return 0; + } + + /* + * Degraded/reconstruction mode (device failed) -> + * avoid io on the failed device. + */ + if (unlikely(RSDegraded(rs))) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_DEGRADED); + /* Allow IO on all devices but the dead one. */ + BUG_ON(rs->set.ei < 0); + return stripe_chunk_set_io_flags(stripe, rs->set.ei); + } else { + int sync, pi = dev_for_parity(stripe, &sync); + + /* + * Reconstruction mode (ie. a particular (replaced) device or + * some (rotating) parity chunk is being resynchronized) -> + * o make sure all needed chunks are read in + * o writes are allowed to go through + */ + if (!sync) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NOSYNC); + /* Allow IO on all devs but the one to reconstruct. */ + return stripe_chunk_set_io_flags(stripe, pi); + } + } + + return 0; +} + +/* + * Check, if stripe is ready to merge writes. + * I.e. if all chunks present to allow to merge bios. + * + * We prohibit io on: + * + * o chunks without bios + * o chunks which get completely written over + */ +static int stripe_merge_possible(struct stripe *stripe, int nosync) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunks_overwrite = 0, chunks_prohibited = 0, + chunks_uptodate = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk; + + /* Prohibit io on broken devices. */ + if (DevFailed(rs->dev + p)) { + chunk = CHUNK(stripe, p); + goto prohibit_io; + } + + /* We can't optimize any further if no chunk. */ + chunk = stripe_chunk_check(stripe, p, &chunks_uptodate); + if (!chunk || nosync) + continue; + + /* + * We have a chunk, which is not uptodate. + * + * If this is not parity and we don't have + * reads queued, we can optimize further. + */ + if (p != stripe->idx.parity && + bio_list_empty(BL_CHUNK(chunk, READ)) && + bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) { + if (bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED))) + goto prohibit_io; + else if (RSCheckOverwrite(rs) && + stripe_check_chunk_overwrite(stripe, p)) + /* Completely overwritten chunk. */ + chunks_overwrite++; + } + + /* Allow io for chunks with bios and overwritten ones. */ + SetChunkIo(chunk); + continue; + +prohibit_io: + /* No io for broken devices or for chunks w/o bios. */ + ClearChunkIo(chunk); + chunks_prohibited++; + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + + /* All data chunks will get written over. */ + if (chunks_overwrite == rs->set.data_devs) + atomic_inc(rs->stats + S_OVERWRITE); /* REMOVEME: statistics.*/ + else if (chunks_uptodate + chunks_prohibited < rs->set.raid_devs) { + /* We don't have enough chunks to merge. */ + atomic_inc(rs->stats + S_CANT_MERGE); /* REMOVEME: statistics.*/ + return -EPERM; + } + + /* + * If we have all chunks up to date or overwrite them, we + * just zero the parity chunk and let stripe_rw() recreate it. + */ + if (chunks_uptodate == rs->set.raid_devs || + chunks_overwrite == rs->set.data_devs) { + stripe_zero_chunk(stripe, stripe->idx.parity); + BUG_ON(StripeReconstruct(stripe)); + SetStripeReconstruct(stripe); /* Enforce xor in caller. */ + } else { + /* + * With less chunks, we xor parity out. + * + * (*4*) We rely on !StripeReconstruct() in chunk_must_xor(), + * so that only chunks with queued or merged writes + * are being xored. + */ + parity_xor(stripe); + } + + /* + * We do have enough chunks to merge. + * All chunks are uptodate or get written over. + */ + atomic_inc(rs->stats + S_CAN_MERGE); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Avoid reading chunks in case we're fully operational. + * + * We prohibit io on any chunks without bios but the parity chunk. + */ +static void stripe_avoid_reads(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned dummy = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk = + stripe_chunk_check(stripe, p, &dummy); + + if (!chunk) + continue; + + /* If parity or any bios pending -> allow io. */ + if (chunk_ref(chunk) || p == stripe->idx.parity) + SetChunkIo(chunk); + else { + ClearChunkIo(chunk); + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + } +} + +/* + * Read/write a stripe. + * + * All stripe read/write activity goes through this function + * unless recovery, which has to call stripe_chunk_rw() directly. + * + * Make sure we don't try already merged stripes in order + * to avoid data corruption. + * + * Check the state of the RAID set and if degraded (or + * resynchronizing for reads), read in all other chunks but + * the one on the dead/resynchronizing device in order to be + * able to reconstruct the missing one in _do_endios(). + * + * Can be called on active stripes in order + * to dispatch new io on inactive chunks. + * + * States to cover: + * o stripe to read and/or write + * o stripe with error to reconstruct + */ +static void stripe_rw(struct stripe *stripe) +{ + int nosync, r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Check, if a chunk needs to be reconstructed + * because of a degraded set or a region out of sync. + */ + nosync = stripe_check_reconstruct(stripe); + switch (nosync) { + case -EBUSY: + return; /* Wait for stripe reconstruction to finish. */ + case -EPERM: + goto io; + } + + /* + * If we don't have merged writes pending, we can schedule + * queued writes to be merged next without corrupting data. + */ + if (!StripeMerged(stripe)) { + r = stripe_queue_writes(stripe); + if (r) + /* Writes got queued -> flag RBW. */ + SetStripeRBW(stripe); + } + + /* + * Merge all writes hanging off uptodate/overwritten + * chunks of the stripe. + */ + if (StripeRBW(stripe)) { + r = stripe_merge_possible(stripe, nosync); + if (!r) { /* Merge possible. */ + struct stripe_chunk *chunk; + + /* + * I rely on valid parity in order + * to xor a fraction of chunks out + * of parity and back in. + */ + stripe_merge_writes(stripe); /* Merge writes in. */ + parity_xor(stripe); /* Update parity. */ + ClearStripeReconstruct(stripe); /* Reset xor enforce. */ + SetStripeMerged(stripe); /* Writes merged. */ + ClearStripeRBW(stripe); /* Disable RBW. */ + + /* + * REMOVEME: sanity check on parity chunk + * states after writes got merged. + */ + chunk = CHUNK(stripe, stripe->idx.parity); + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk)); + BUG_ON(!ChunkDirty(chunk)); + BUG_ON(!ChunkIo(chunk)); + } + } else if (!nosync && !StripeMerged(stripe)) + /* Read avoidance if not degraded/resynchronizing/merged. */ + stripe_avoid_reads(stripe); + +io: + /* Now submit any reads/writes for non-uptodate or dirty chunks. */ + r = stripe_chunks_rw(stripe); + if (!r) { + /* + * No io submitted because of chunk io + * prohibited or locked chunks/failed devices + * -> push to end io list for processing. + */ + stripe_endio_push(stripe); + atomic_inc(rs->stats + S_NO_RW); /* REMOVEME: statistics. */ + } +} + +/* + * Recovery functions + */ +/* Read a stripe off a raid set for recovery. */ +static int stripe_recover_read(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* Invalidate all chunks so that they get read in. */ + stripe_chunks_invalidate(stripe); + stripe_allow_io(stripe); /* Allow io on all recovery chunks. */ + + /* + * If we are reconstructing a perticular device, we can avoid + * reading the respective chunk in, because we're going to + * reconstruct it anyway. + * + * We can't do that for resynchronization of rotating parity, + * because the recovery stripe chunk size is typically larger + * than the sets chunk size. + */ + if (pi > -1) + ClearChunkIo(CHUNK(stripe, pi)); + + return stripe_chunks_rw(stripe); +} + +/* Write a stripe to a raid set for recovery. */ +static int stripe_recover_write(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* + * If this is a reconstruct of a particular device, then + * reconstruct the respective chunk, else create parity chunk. + */ + if (pi > -1) { + stripe_zero_chunk(stripe, pi); + common_xor(stripe, stripe->io.size, 0, pi); + chunk_set(CHUNK(stripe, pi), DIRTY); + } else + parity_xor(stripe); + + return stripe_chunks_rw(stripe); +} + +/* Read/write a recovery stripe. */ +static int stripe_recover_rw(struct stripe *stripe) +{ + int r = 0, sync = 0; + + /* Read/write flip-flop. */ + if (TestClearStripeRBW(stripe)) { + SetStripeMerged(stripe); + stripe->key = stripe->recover->pos; + r = stripe_recover_read(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } else if (TestClearStripeMerged(stripe)) { + r = stripe_recover_write(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } + + BUG_ON(sync); + return r; +} + +/* Recover bandwidth available ?. */ +static int recover_bandwidth(struct raid_set *rs) +{ + int r, work; + + /* On reset or when bios delayed -> allow recovery. */ + r = recover_io_reset(rs); + if (r || RSBandwidth(rs)) + goto out; + + work = atomic_read(rs->recover.io_count + IO_WORK); + if (work) { + /* Pay attention to larger recover stripe size. */ + int recover = atomic_read(rs->recover.io_count + IO_RECOVER) * + rs->recover.io_size / rs->set.io_size; + + /* + * Don't use more than given bandwidth + * of the work io for recovery. + */ + if (recover > work / rs->recover.bandwidth_work) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NO_BANDWIDTH); + return 0; + } + } + +out: + atomic_inc(rs->stats + S_BANDWIDTH); /* REMOVEME: statistics. */ + return 1; +} + +/* Try to get a region to recover. */ +static int stripe_recover_get_region(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + struct recover_addr *addr = stripe->recover; + struct dm_dirty_log *dl = rec->dl; + struct dm_rh_client *rh = rec->rh; + + BUG_ON(!dl); + BUG_ON(!rh); + + /* Return, that we have region first to finish it during suspension. */ + if (addr->reg) + return 1; + + if (RSSuspend(rs)) + return -EPERM; + + if (dl->type->get_sync_count(dl) >= rec->nr_regions) + return -ENOENT; + + /* If we don't have enough bandwidth, we don't proceed recovering. */ + if (!recover_bandwidth(rs)) + return -EAGAIN; + + /* Start quiescing a region. */ + dm_rh_recovery_prepare(rh); + addr->reg = dm_rh_recovery_start(rh); + if (!addr->reg) + return -EAGAIN; + + addr->pos = dm_rh_region_to_sector(rh, dm_rh_get_region_key(addr->reg)); + addr->end = addr->pos + dm_rh_get_region_size(rh); + + /* + * Take one global io reference out for the + * whole region, which is going to be released + * when the region is completely done with. + */ + io_get(rs); + return 0; +} + +/* Update region hash state. */ +enum recover_type { REC_FAILURE = 0, REC_SUCCESS = 1 }; +static void recover_rh_update(struct stripe *stripe, enum recover_type success) +{ + struct recover_addr *addr = stripe->recover; + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + + if (!addr->reg) { + DMERR("%s- Called w/o region", __func__); + return; + } + + dm_rh_recovery_end(addr->reg, success); + if (success) + rec->nr_regions_recovered++; + + addr->reg = NULL; + + /* + * Completely done with this region -> + * release the 1st io reference. + */ + io_put(rs); +} + +/* Set start of recovery state. */ +static void set_start_recovery(struct raid_set *rs) +{ + /* Initialize recovery. */ + rs->recover.start_jiffies = jiffies; + rs->recover.end_jiffies = 0; +} + +/* Set end of recovery state. */ +static void set_end_recovery(struct raid_set *rs) +{ + ClearRSRecover(rs); + rs->set.dev_to_init = -1; + + /* Check for jiffies overrun. */ + rs->recover.end_jiffies = jiffies; + if (rs->recover.end_jiffies < rs->recover.start_jiffies) + rs->recover.end_jiffies = ~0; +} + +/* Handle recovery on one recovery stripe. */ +static int _do_recovery(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + struct recover_addr *addr = stripe->recover; + + /* If recovery is active -> return. */ + if (stripe_io_ref(stripe)) + return 1; + + /* IO error is fatal for recovery -> stop it. */ + if (unlikely(StripeError(stripe))) + goto err; + + /* Recovery end required. */ + if (!RSRecover(rs)) + goto err; + + /* Get a region to recover. */ + r = stripe_recover_get_region(stripe); + switch (r) { + case 0: /* Got a new region: flag initial read before write. */ + SetStripeRBW(stripe); + case 1: /* Have a region in the works. */ + break; + case -EAGAIN: + /* No bandwidth/quiesced region yet, try later. */ + if (!io_ref(rs)) + wake_do_raid_delayed(rs, HZ / 4); + case -EPERM: + /* Suspend. */ + return 1; + case -ENOENT: /* No more regions to recover. */ + schedule_work(&rs->io.ws_do_table_event); + return 0; + default: + BUG(); + } + + /* Read/write a recover stripe. */ + r = stripe_recover_rw(stripe); + if (r) + /* IO initiated. */ + return 1; + + /* Read and write finished-> update recovery position within region. */ + addr->pos += stripe->io.size; + + /* If we're at end of region, update region hash. */ + if (addr->pos >= addr->end || + addr->pos >= rs->set.sectors_per_dev) + recover_rh_update(stripe, REC_SUCCESS); + else + /* Prepare to read next region segment. */ + SetStripeRBW(stripe); + + /* Schedule myself for another round... */ + wake_do_raid(rs); + return 1; + +err: + /* FIXME: rather try recovering other regions on error? */ + rs_check_degrade(stripe); + recover_rh_update(stripe, REC_FAILURE); + + /* Check state of partially recovered array. */ + if (RSDegraded(rs) && !RSDead(rs) && + rs->set.dev_to_init != -1 && + rs->set.ei != rs->set.dev_to_init) + /* Broken drive != drive to recover -> FATAL. */ + SetRSDead(rs); + + if (StripeError(stripe)) { + char buf[BDEVNAME_SIZE]; + + DMERR("stopping recovery due to " + "ERROR on /dev/%s, stripe at offset %llu", + bdevname(rs->dev[rs->set.ei].dev->bdev, buf), + (unsigned long long) stripe->key); + + } + + /* Make sure, that all quiesced regions get released. */ + while (addr->reg) { + dm_rh_recovery_end(addr->reg, -EIO); + addr->reg = dm_rh_recovery_start(rs->recover.rh); + } + + return 0; +} + +/* Called by main io daemon to recover regions. */ +static void do_recovery(struct raid_set *rs) +{ + if (RSRecover(rs)) { + int r = 0; + struct stripe *stripe; + + list_for_each_entry(stripe, &rs->recover.stripes, + lists[LIST_RECOVER]) + r += _do_recovery(stripe); + + if (!r) { + set_end_recovery(rs); + stripe_recover_free(rs); + } + } +} + +/* + * END recovery functions + */ + +/* End io process all stripes handed in by endio() callback. */ +static void _do_endios(struct raid_set *rs, struct stripe *stripe, + struct list_head *flush_list) +{ + /* First unlock all required chunks. */ + stripe_chunks_unlock(stripe); + + /* + * If an io error on a stripe occured, degrade the RAID set + * and try to endio as many bios as possible. If any bios can't + * be endio processed, requeue the stripe (stripe_ref() != 0). + */ + if (TestClearStripeError(stripe)) { + /* + * FIXME: if read, rewrite the failed chunk after reconstruction + * in order to trigger disk bad sector relocation. + */ + rs_check_degrade(stripe); /* Resets ChunkError(). */ + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + } + + /* Got to reconstruct a missing chunk. */ + if (StripeReconstruct(stripe)) { + /* + * (*2*) We use StripeReconstruct() to allow for + * all chunks to be xored into the reconstructed + * one (see chunk_must_xor()). + */ + stripe_reconstruct(stripe); + + /* + * (*3*) Now we reset StripeReconstruct() and flag + * StripeReconstructed() to show to stripe_rw(), + * that we have reconstructed a missing chunk. + */ + ClearStripeReconstruct(stripe); + SetStripeReconstructed(stripe); + + /* FIXME: reschedule to be written in case of read. */ + // if (!StripeRBW(stripe)) { + // chunk_set(CHUNK(stripe, pr), DIRTY); + // stripe_chunks_rw(stripe); + // } + } + + /* + * Now that we eventually got a complete stripe, we + * can process the rest of the end ios on reads. + */ + stripe_endio(READ, stripe); + + /* End io all merged writes. */ + if (TestClearStripeMerged(stripe)) + stripe_endio(WRITE_MERGED, stripe); + + /* If RAID set is dead -> fail any ios to dead drives. */ + if (RSDead(rs)) { + DMERR_LIMIT("RAID set dead: failing ios to dead devices"); + stripe_fail_io(stripe); + } + + /* + * We have stripe references still, + * beacuse of read befeore writes or IO errors -> + * got to put on flush list for processing. + */ + if (stripe_ref(stripe)) { + BUG_ON(!list_empty(stripe->lists + LIST_LRU)); + list_add_tail(stripe->lists + LIST_FLUSH, flush_list); + atomic_inc(rs->stats + S_REQUEUE); /* REMOVEME: statistics. */ + } else + stripe_lru_add(stripe); +} + +/* Pop any endio stripes off of the endio list and belabour them. */ +static void do_endios(struct raid_set *rs) +{ + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + /* IO flush list for sorted requeued stripes. */ + struct list_head flush_list; + + INIT_LIST_HEAD(&flush_list); + + while ((stripe = stripe_endio_pop(sc))) { + /* Avoid endio on stripes with newly io'ed chunks. */ + if (!stripe_io_ref(stripe)) + _do_endios(rs, stripe, &flush_list); + } + + /* + * Insert any requeued stripes in the proper + * order at the beginning of the io (flush) list. + */ + list_splice(&flush_list, sc->lists + LIST_FLUSH); +} + +/* Flush any stripes on the io list. */ +static void do_flush(struct raid_set *rs) +{ + struct stripe *stripe; + + while ((stripe = stripe_io_pop(&rs->sc))) + stripe_rw(stripe); /* Read/write stripe. */ +} + +/* Stripe cache resizing. */ +static void do_sc_resize(struct raid_set *rs) +{ + unsigned set = atomic_read(&rs->sc.stripes_to_set); + + if (set) { + unsigned cur = atomic_read(&rs->sc.stripes); + int r = (set > cur) ? sc_grow(&rs->sc, set - cur, SC_GROW) : + sc_shrink(&rs->sc, cur - set); + + /* Flag end of resizeing if ok. */ + if (!r) + atomic_set(&rs->sc.stripes_to_set, 0); + } +} + +/* + * Process all ios + * + * We do different things with the io depending + * on the state of the region that it is in: + * + * o reads: hang off stripe cache or postpone if full + * + * o writes: + * + * CLEAN/DIRTY/NOSYNC: increment pending and hang io off stripe's stripe set. + * In case stripe cache is full or busy, postpone the io. + * + * RECOVERING: delay the io until recovery of the region completes. + * + */ +static void do_ios(struct raid_set *rs, struct bio_list *ios) +{ + int r; + unsigned flush = 0, delay = 0; + sector_t sector; + struct dm_rh_client *rh = rs->recover.rh; + struct bio *bio; + struct bio_list reject; + + bio_list_init(&reject); + + /* + * Classify each io: + * o delay writes to recovering regions (let reads go through) + * o queue io to all other regions + */ + while ((bio = bio_list_pop(ios))) { + /* + * In case we get a barrier bio, push it back onto + * the input queue unless all work queues are empty + * and the stripe cache is inactive. + */ + if (unlikely(bio->bi_rw & REQ_FLUSH)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BARRIER); + if (delay || + !list_empty(rs->sc.lists + LIST_FLUSH) || + !bio_list_empty(&reject) || + sc_active(&rs->sc)) { + bio_list_push(ios, bio); + break; + } + } + + /* Check for recovering regions. */ + sector = _sector(rs, bio); + r = region_state(rs, sector, DM_RH_RECOVERING); + if (unlikely(r && bio_data_dir(bio) == WRITE)) { + delay++; + /* Wait writing to recovering regions. */ + dm_rh_delay_by_region(rh, bio, + dm_rh_sector_to_region(rh, + sector)); + /* REMOVEME: statistics.*/ + atomic_inc(rs->stats + S_DELAYED_BIOS); + atomic_inc(rs->stats + S_SUM_DELAYED_BIOS); + + /* Force bandwidth tests in recovery. */ + SetRSBandwidth(rs); + } else { + /* + * Process ios to non-recovering regions by queueing + * them to stripes (does dm_rh_inc()) for writes). + */ + flush += stripe_queue_bio(rs, bio, &reject); + } + } + + if (flush) { + /* FIXME: better error handling. */ + r = dm_rh_flush(rh); /* Writes got queued -> flush dirty log. */ + if (r) + DMERR_LIMIT("dirty log flush"); + } + + /* Merge any rejected bios back to the head of the input list. */ + bio_list_merge_head(ios, &reject); +} + +/* Send an event in case we're getting too busy. */ +static void do_busy_event(struct raid_set *rs) +{ + if (sc_busy(rs)) { + if (!TestSetRSScBusy(rs)) + schedule_work(&rs->io.ws_do_table_event); + } + + ClearRSScBusy(rs); +} + +/* Throw an event. */ +static void do_table_event(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.ws_do_table_event); + dm_table_event(rs->ti->table); +} + + +/*----------------------------------------------------------------- + * RAID daemon + *---------------------------------------------------------------*/ +/* + * o belabour all end ios + * o update the region hash states + * o optionally shrink the stripe cache + * o optionally do recovery + * o unplug any component raid devices with queued bios + * o grab the input queue + * o work an all requeued or new ios and perform stripe cache flushs + * o unplug any component raid devices with queued bios + * o check, if the stripe cache gets too busy and throw an event if so + */ +static void do_raid(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.dws_do_raid.work); + struct bio_list *ios = &rs->io.work, *ios_in = &rs->io.in; + struct blk_plug plug; + + /* + * We always need to end io, so that ios can get errored in + * case the set failed and the region counters get decremented + * before we update region hash states and go any further. + */ + do_endios(rs); + dm_rh_update_states(rs->recover.rh, 1); + + /* + * Now that we've end io'd, which may have put stripes on the LRU list + * to allow for shrinking, we resize the stripe cache if requested. + */ + do_sc_resize(rs); + + /* Try to recover regions. */ + blk_start_plug(&plug); + do_recovery(rs); + blk_finish_plug(&plug); /* Unplug the queue */ + + /* Quickly grab all new ios queued and add them to the work list. */ + mutex_lock(&rs->io.in_lock); + bio_list_merge(ios, ios_in); + bio_list_init(ios_in); + mutex_unlock(&rs->io.in_lock); + + blk_start_plug(&plug); + if (!bio_list_empty(ios)) + do_ios(rs, ios); /* Got ios to work into the cache. */ + + do_flush(rs); /* Flush any stripes on io list. */ + blk_finish_plug(&plug); /* Unplug the queue */ + do_busy_event(rs); /* Check if we got too busy. */ +} + +/* + * Callback for region hash to dispatch + * delayed bios queued to recovered regions + * (gets called via dm_rh_update_states()). + */ +static void dispatch_delayed_bios(void *context, struct bio_list *bl) +{ + struct raid_set *rs = context; + struct bio *bio; + + /* REMOVEME: statistics; decrement pending delayed bios counter. */ + bio_list_for_each(bio, bl) + atomic_dec(rs->stats + S_DELAYED_BIOS); + + /* Merge region hash private list to work list. */ + bio_list_merge_head(&rs->io.work, bl); + bio_list_init(bl); + ClearRSBandwidth(rs); +} + +/************************************************************* + * Constructor helpers + *************************************************************/ +/* Calculate MB/sec. */ +static unsigned mbpers(struct raid_set *rs, unsigned speed) +{ + return to_bytes(speed * rs->set.data_devs * + rs->recover.io_size * HZ >> 10) >> 10; +} + +/* + * Discover fastest xor algorithm and # of chunks combination. + */ +/* Calculate speed for algorithm and # of chunks. */ +static unsigned xor_speed(struct stripe *stripe) +{ + unsigned r = 0; + unsigned long j; + + /* Wait for next tick. */ + for (j = jiffies; j == jiffies; ) + ; + + /* Do xors for a full tick. */ + for (j = jiffies; j == jiffies; ) { + mb(); + common_xor(stripe, stripe->io.size, 0, 0); + mb(); + r++; + } + + return r; +} + +/* Optimize xor algorithm for this RAID set. */ +static unsigned xor_optimize(struct raid_set *rs) +{ + unsigned chunks_max = 2, p = rs->set.raid_devs, speed_max = 0; + struct xor_func *f = ARRAY_END(xor_funcs), *f_max = NULL; + struct stripe *stripe; + + BUG_ON(list_empty(&rs->recover.stripes)); + stripe = list_first_entry(&rs->recover.stripes, struct stripe, + lists[LIST_RECOVER]); + + /* Must set uptodate so that xor() will belabour chunks. */ + while (p--) + SetChunkUptodate(CHUNK(stripe, p)); + + /* Try all xor functions. */ + while (f-- > xor_funcs) { + unsigned speed; + + /* Set actual xor function for common_xor(). */ + rs->xor.f = f; + rs->xor.chunks = (f->f == xor_blocks_wrapper ? + (MAX_XOR_BLOCKS + 1) : XOR_CHUNKS_MAX) + 1; + + while (rs->xor.chunks-- > 2) { + speed = xor_speed(stripe); + if (speed > speed_max) { + speed_max = speed; + chunks_max = rs->xor.chunks; + f_max = f; + } + } + } + + /* Memorize optimum parameters. */ + rs->xor.f = f_max; + rs->xor.chunks = chunks_max; + return speed_max; +} + +/* + * Allocate a RAID context (a RAID set) + */ +/* Structure for variable RAID parameters. */ +struct variable_parms { + int bandwidth; + int bandwidth_parm; + int chunk_size; + int chunk_size_parm; + int io_size; + int io_size_parm; + int stripes; + int stripes_parm; + int recover_io_size; + int recover_io_size_parm; + int raid_parms; + int recovery; + int recovery_stripes; + int recovery_stripes_parm; +}; + +static struct raid_set * +context_alloc(struct raid_type *raid_type, struct variable_parms *p, + unsigned raid_devs, sector_t sectors_per_dev, + struct dm_target *ti, unsigned dl_parms, char **argv) +{ + int r; + size_t len; + sector_t region_size, ti_len; + struct raid_set *rs = NULL; + struct dm_dirty_log *dl; + struct recover *rec; + + /* + * Create the dirty log + * + * We need to change length for the dirty log constructor, + * because we want an amount of regions for all stripes derived + * from the single device size, so that we can keep region + * size = 2^^n independant of the number of devices + */ + ti_len = ti->len; + ti->len = sectors_per_dev; + dl = dm_dirty_log_create(argv[0], ti, NULL, dl_parms, argv + 2); + ti->len = ti_len; + if (!dl) + goto bad_dirty_log; + + /* Chunk size *must* be smaller than region size. */ + region_size = dl->type->get_region_size(dl); + if (p->chunk_size > region_size) + goto bad_chunk_size; + + /* Recover io size *must* be smaller than region size as well. */ + if (p->recover_io_size > region_size) + goto bad_recover_io_size; + + /* Size and allocate the RAID set structure. */ + len = sizeof(*rs->data) + sizeof(*rs->dev); + if (dm_array_too_big(sizeof(*rs), len, raid_devs)) + goto bad_array; + + len = sizeof(*rs) + raid_devs * len; + rs = kzalloc(len, GFP_KERNEL); + if (!rs) + goto bad_alloc; + + rec = &rs->recover; + atomic_set(&rs->io.in_process, 0); + atomic_set(&rs->io.in_process_max, 0); + rec->io_size = p->recover_io_size; + + /* Pointer to data array. */ + rs->data = (unsigned long **) + ((void *) rs->dev + raid_devs * sizeof(*rs->dev)); + rec->dl = dl; + rs->set.raid_devs = raid_devs; + rs->set.data_devs = raid_devs - raid_type->parity_devs; + rs->set.raid_type = raid_type; + + rs->set.raid_parms = p->raid_parms; + rs->set.chunk_size_parm = p->chunk_size_parm; + rs->set.io_size_parm = p->io_size_parm; + rs->sc.stripes_parm = p->stripes_parm; + rec->io_size_parm = p->recover_io_size_parm; + rec->bandwidth_parm = p->bandwidth_parm; + rec->recovery = p->recovery; + rec->recovery_stripes = p->recovery_stripes; + + /* + * Set chunk and io size and respective shifts + * (used to avoid divisions) + */ + rs->set.chunk_size = p->chunk_size; + rs->set.chunk_shift = ffs(p->chunk_size) - 1; + + rs->set.io_size = p->io_size; + rs->set.io_mask = p->io_size - 1; + /* Mask to adjust address key in case io_size != chunk_size. */ + rs->set.io_inv_mask = (p->chunk_size - 1) & ~rs->set.io_mask; + + rs->set.sectors_per_dev = sectors_per_dev; + + rs->set.ei = -1; /* Indicate no failed device. */ + atomic_set(&rs->set.failed_devs, 0); + + rs->ti = ti; + + atomic_set(rec->io_count + IO_WORK, 0); + atomic_set(rec->io_count + IO_RECOVER, 0); + + /* Initialize io lock and queues. */ + mutex_init(&rs->io.in_lock); + bio_list_init(&rs->io.in); + bio_list_init(&rs->io.work); + + init_waitqueue_head(&rs->io.suspendq); /* Suspend waiters (dm-io). */ + + rec->nr_regions = dm_sector_div_up(sectors_per_dev, region_size); + rec->rh = dm_region_hash_create(rs, dispatch_delayed_bios, + wake_dummy, wake_do_raid, 0, p->recovery_stripes, + dl, region_size, rec->nr_regions); + if (IS_ERR(rec->rh)) + goto bad_rh; + + /* Initialize stripe cache. */ + r = sc_init(rs, p->stripes); + if (r) + goto bad_sc; + + /* REMOVEME: statistics. */ + stats_reset(rs); + ClearRSDevelStats(rs); /* Disnable development status. */ + return rs; + +bad_dirty_log: + TI_ERR_RET("Error creating dirty log", ERR_PTR(-ENOMEM)); + +bad_chunk_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Chunk size larger than region size", ERR_PTR(-EINVAL)); + +bad_recover_io_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Recover stripe io size larger than region size", + ERR_PTR(-EINVAL)); + +bad_array: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Arry too big", ERR_PTR(-EINVAL)); + +bad_alloc: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Cannot allocate raid context", ERR_PTR(-ENOMEM)); + +bad_rh: + dm_dirty_log_destroy(dl); + ti->error = DM_MSG_PREFIX "Error creating dirty region hash"; + goto free_rs; + +bad_sc: + dm_region_hash_destroy(rec->rh); /* Destroys dirty log too. */ + sc_exit(&rs->sc); + ti->error = DM_MSG_PREFIX "Error creating stripe cache"; +free_rs: + kfree(rs); + return ERR_PTR(-ENOMEM); +} + +/* Free a RAID context (a RAID set). */ +static void context_free(struct raid_set *rs, unsigned p) +{ + while (p--) + dm_put_device(rs->ti, rs->dev[p].dev); + + sc_exit(&rs->sc); + dm_region_hash_destroy(rs->recover.rh); /* Destroys dirty log too. */ + kfree(rs); +} + +/* Create work queue and initialize delayed work. */ +static int rs_workqueue_init(struct raid_set *rs) +{ + struct dm_target *ti = rs->ti; + + rs->io.wq = create_singlethread_workqueue(DAEMON); + if (!rs->io.wq) + TI_ERR_RET("failed to create " DAEMON, -ENOMEM); + + INIT_DELAYED_WORK(&rs->io.dws_do_raid, do_raid); + INIT_WORK(&rs->io.ws_do_table_event, do_table_event); + return 0; +} + +/* Return pointer to raid_type structure for raid name. */ +static struct raid_type *get_raid_type(char *name) +{ + struct raid_type *r = ARRAY_END(raid_types); + + while (r-- > raid_types) { + if (!strcmp(r->name, name)) + return r; + } + + return NULL; +} + +/* FIXME: factor out to dm core. */ +static int multiple(sector_t a, sector_t b, sector_t *n) +{ + sector_t r = a; + + sector_div(r, b); + *n = r; + return a == r * b; +} + +/* Log RAID set information to kernel log. */ +static void rs_log(struct raid_set *rs, unsigned speed) +{ + unsigned p; + char buf[BDEVNAME_SIZE]; + + for (p = 0; p < rs->set.raid_devs; p++) + DMINFO("/dev/%s is raid disk %u%s", + bdevname(rs->dev[p].dev->bdev, buf), p, + (p == rs->set.pi) ? " (parity)" : ""); + + DMINFO("%d/%d/%d sectors chunk/io/recovery size, %u stripes\n" + "algorithm \"%s\", %u chunks with %uMB/s\n" + "%s set with net %u/%u devices", + rs->set.chunk_size, rs->set.io_size, rs->recover.io_size, + atomic_read(&rs->sc.stripes), + rs->xor.f->name, rs->xor.chunks, mbpers(rs, speed), + rs->set.raid_type->descr, rs->set.data_devs, rs->set.raid_devs); +} + +/* Get all devices and offsets. */ +static int dev_parms(struct raid_set *rs, char **argv, int *p) +{ + struct dm_target *ti = rs->ti; + + for (*p = 0; *p < rs->set.raid_devs; (*p)++, argv += 2) { + int r; + unsigned long long tmp; + struct raid_dev *dev = rs->dev + *p; + + /* Get offset and device. */ + if (sscanf(argv[1], "%llu", &tmp) != 1 || + tmp > rs->set.sectors_per_dev) + TI_ERR("Invalid RAID device offset parameter"); + + dev->start = tmp; + r = dm_get_device(ti, *argv, dm_table_get_mode(ti->table), &dev->dev); + if (r) + TI_ERR_RET("RAID device lookup failure", r); + + r = raid_dev_lookup(rs, dev); + if (r != -ENODEV && r < *p) { + (*p)++; /* Ensure dm_put_device() on actual device. */ + TI_ERR_RET("Duplicate RAID device", -ENXIO); + } + } + + return 0; +} + +/* Set recovery bandwidth. */ +static void +recover_set_bandwidth(struct raid_set *rs, unsigned bandwidth) +{ + rs->recover.bandwidth = bandwidth; + rs->recover.bandwidth_work = 100 / bandwidth; +} + +/* Handle variable number of RAID parameters. */ +static int get_raid_variable_parms(struct dm_target *ti, char **argv, + struct variable_parms *vp) +{ + int p, value; + struct { + int action; /* -1: skip, 0: no pwer2 check, 1: power2 check */ + char *errmsg; + int min, max; + int *var, *var2, *var3; + } argctr[] = { + { 1, + "Invalid chunk size; must be -1 or 2^^n and <= 16384", + IO_SIZE_MIN, CHUNK_SIZE_MAX, + &vp->chunk_size_parm, &vp->chunk_size, &vp->io_size }, + { 0, + "Invalid number of stripes: must be -1 or >= 8 and <= 16384", + STRIPES_MIN, STRIPES_MAX, + &vp->stripes_parm, &vp->stripes, NULL }, + { 1, + "Invalid io size; must -1 or >= 8, 2^^n and less equal " + "min(BIO_MAX_SECTORS/2, chunk size)", + IO_SIZE_MIN, 0, /* Needs to be updated in loop below. */ + &vp->io_size_parm, &vp->io_size, NULL }, + { 1, + "Invalid recovery io size; must be -1 or " + "2^^n and less equal BIO_MAX_SECTORS/2", + RECOVER_IO_SIZE_MIN, BIO_MAX_SECTORS / 2, + &vp->recover_io_size_parm, &vp->recover_io_size, NULL }, + { 0, + "Invalid recovery bandwidth percentage; " + "must be -1 or > 0 and <= 100", + BANDWIDTH_MIN, BANDWIDTH_MAX, + &vp->bandwidth_parm, &vp->bandwidth, NULL }, + /* Handle sync argument seperately in loop. */ + { -1, + "Invalid recovery switch; must be \"sync\" or \"nosync\"" }, + { 0, + "Invalid number of recovery stripes;" + "must be -1, > 0 and <= 16384", + RECOVERY_STRIPES_MIN, RECOVERY_STRIPES_MAX, + &vp->recovery_stripes_parm, &vp->recovery_stripes, NULL }, + }, *varp; + + /* Fetch # of variable raid parameters. */ + if (sscanf(*(argv++), "%d", &vp->raid_parms) != 1 || + !range_ok(vp->raid_parms, 0, 7)) + TI_ERR("Bad variable raid parameters number"); + + /* Preset variable RAID parameters. */ + vp->chunk_size = CHUNK_SIZE_DEFAULT; + vp->io_size = IO_SIZE_DEFAULT; + vp->stripes = STRIPES_DEFAULT; + vp->recover_io_size = RECOVER_IO_SIZE_DEFAULT; + vp->bandwidth = BANDWIDTH_DEFAULT; + vp->recovery = 1; + vp->recovery_stripes = RECOVERY_STRIPES_DEFAULT; + + /* Walk the array of argument constraints for all given ones. */ + for (p = 0, varp = argctr; p < vp->raid_parms; p++, varp++) { + BUG_ON(varp >= ARRAY_END(argctr)); + + /* Special case for "[no]sync" string argument. */ + if (varp->action < 0) { + if (!strcmp(*argv, "sync")) + ; + else if (!strcmp(*argv, "nosync")) + vp->recovery = 0; + else + TI_ERR(varp->errmsg); + + argv++; + continue; + } + + /* + * Special case for io_size depending + * on previously set chunk size. + */ + if (p == 2) + varp->max = min(BIO_MAX_SECTORS / 2, vp->chunk_size); + + if (sscanf(*(argv++), "%d", &value) != 1 || + (value != -1 && + ((varp->action && !POWER_OF_2(value)) || + !range_ok(value, varp->min, varp->max)))) + TI_ERR(varp->errmsg); + + *varp->var = value; + if (value != -1) { + if (varp->var2) + *varp->var2 = value; + if (varp->var3) + *varp->var3 = value; + } + } + + return 0; +} + +/* Parse optional locking parameters. */ +static int get_raid_locking_parms(struct dm_target *ti, char **argv, + int *locking_parms, + struct dm_raid45_locking_type **locking_type) +{ + if (!strnicmp(argv[0], "locking", strlen(argv[0]))) { + char *lckstr = argv[1]; + size_t lcksz = strlen(lckstr); + + if (!strnicmp(lckstr, "none", lcksz)) { + *locking_type = &locking_none; + *locking_parms = 2; + } else if (!strnicmp(lckstr, "cluster", lcksz)) { + DMERR("locking type \"%s\" not yet implemented", + lckstr); + return -EINVAL; + } else { + DMERR("unknown locking type \"%s\"", lckstr); + return -EINVAL; + } + } + + *locking_parms = 0; + *locking_type = &locking_none; + return 0; +} + +/* Set backing device read ahead properties of RAID set. */ +static void rs_set_read_ahead(struct raid_set *rs, + unsigned sectors, unsigned stripes) +{ + unsigned ra_pages = dm_div_up(sectors, SECTORS_PER_PAGE); + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set read-ahead for the RAID set and the component devices. */ + if (ra_pages) { + unsigned p = rs->set.raid_devs; + + bdi->ra_pages = stripes * ra_pages * rs->set.data_devs; + + while (p--) { + struct request_queue *q = + bdev_get_queue(rs->dev[p].dev->bdev); + + q->backing_dev_info.ra_pages = ra_pages; + } + } + + dm_put(md); +} + +/* Set congested function. */ +static void rs_set_congested_fn(struct raid_set *rs) +{ + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set congested function and data. */ + bdi->congested_fn = rs_congested; + bdi->congested_data = rs; + dm_put(md); +} + +/* + * Construct a RAID4/5 mapping: + * + * log_type #log_params \ + * raid_type [#parity_dev] #raid_variable_params \ + * [locking "none"/"cluster"] + * #raid_devs #dev_to_initialize [ ]{3,} + * + * log_type = "core"/"disk", + * #log_params = 1-3 (1-2 for core dirty log type, 3 for disk dirty log only) + * log_params = [dirty_log_path] region_size [[no]sync]) + * + * raid_type = "raid4", "raid5_la", "raid5_ra", "raid5_ls", "raid5_rs" + * + * #parity_dev = N if raid_type = "raid4" + * o N = -1: pick default = last device + * o N >= 0 and < #raid_devs: parity device index + * + * #raid_variable_params = 0-7; raid_params (-1 = default): + * [chunk_size [#stripes [io_size [recover_io_size \ + * [%recovery_bandwidth [recovery_switch [#recovery_stripes]]]]]]] + * o chunk_size (unit to calculate drive addresses; must be 2^^n, > 8 + * and <= CHUNK_SIZE_MAX) + * o #stripes is number of stripes allocated to stripe cache + * (must be > 1 and < STRIPES_MAX) + * o io_size (io unit size per device in sectors; must be 2^^n and > 8) + * o recover_io_size (io unit size per device for recovery in sectors; + must be 2^^n, > SECTORS_PER_PAGE and <= region_size) + * o %recovery_bandwith is the maximum amount spend for recovery during + * application io (1-100%) + * o recovery switch = [sync|nosync] + * o #recovery_stripes is the number of recovery stripes used for + * parallel recovery of the RAID set + * If raid_variable_params = 0, defaults will be used. + * Any raid_variable_param can be set to -1 to apply a default + * + * #raid_devs = N (N >= 3) + * + * #dev_to_initialize = N + * -1: initialize parity on all devices + * >= 0 and < #raid_devs: initialize raid_path; used to force reconstruction + * of a failed devices content after replacement + * + * = device_path (eg, /dev/sdd1) + * = begin at offset on + * + */ +#define MIN_PARMS 13 +static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) +{ + int dev_to_init, dl_parms, i, locking_parms, + parity_parm, pi = -1, r, raid_devs; + unsigned speed; + sector_t tmp, sectors_per_dev; + struct dm_raid45_locking_type *locking; + struct raid_set *rs; + struct raid_type *raid_type; + struct variable_parms parms; + + /* Ensure minimum number of parameters. */ + if (argc < MIN_PARMS) + TI_ERR("Not enough parameters"); + + /* Fetch # of dirty log parameters. */ + if (sscanf(argv[1], "%d", &dl_parms) != 1 || + !range_ok(dl_parms, 1, 4711)) /* ;-) */ + TI_ERR("Bad dirty log parameters number"); + + /* Check raid_type. */ + raid_type = get_raid_type(argv[dl_parms + 2]); + if (!raid_type) + TI_ERR("Bad raid type"); + + /* In case of RAID4, parity drive is selectable. */ + parity_parm = !!(raid_type->level == raid4); + + /* Handle variable number of RAID parameters. */ + r = get_raid_variable_parms(ti, argv + dl_parms + parity_parm + 3, + &parms); + if (r) + return r; + + /* Handle any locking parameters. */ + r = get_raid_locking_parms(ti, + argv + dl_parms + parity_parm + + parms.raid_parms + 4, + &locking_parms, &locking); + if (r) + return r; + + /* # of raid devices. */ + i = dl_parms + parity_parm + parms.raid_parms + locking_parms + 4; + if (sscanf(argv[i], "%d", &raid_devs) != 1 || + raid_devs < raid_type->minimal_devs) + TI_ERR("Invalid number of raid devices"); + + /* In case of RAID4, check parity drive index is in limits. */ + if (raid_type->level == raid4) { + /* Fetch index of parity device. */ + if (sscanf(argv[dl_parms + 3], "%d", &pi) != 1 || + (pi != -1 && !range_ok(pi, 0, raid_devs - 1))) + TI_ERR("Invalid RAID4 parity device index"); + } + + /* + * Index of device to initialize starts at 0 + * + * o -1 -> don't initialize a selected device; + * initialize parity conforming to algorithm + * o 0..raid_devs-1 -> initialize respective device + * (used for reconstruction of a replaced device) + */ + if (sscanf(argv[dl_parms + parity_parm + parms.raid_parms + + locking_parms + 5], "%d", &dev_to_init) != 1 || + !range_ok(dev_to_init, -1, raid_devs - 1)) + TI_ERR("Invalid number for raid device to initialize"); + + /* Check # of raid device arguments. */ + if (argc - dl_parms - parity_parm - parms.raid_parms - 6 != + 2 * raid_devs) + TI_ERR("Wrong number of raid device/offset arguments"); + + /* + * Check that the table length is devisable + * w/o rest by (raid_devs - parity_devs) + */ + if (!multiple(ti->len, raid_devs - raid_type->parity_devs, + §ors_per_dev)) + TI_ERR("Target length not divisible by number of data devices"); + + /* + * Check that the device size is + * devisable w/o rest by chunk size + */ + if (!multiple(sectors_per_dev, parms.chunk_size, &tmp)) + TI_ERR("Device length not divisible by chunk_size"); + + /**************************************************************** + * Now that we checked the constructor arguments -> + * let's allocate the RAID set + ****************************************************************/ + rs = context_alloc(raid_type, &parms, raid_devs, sectors_per_dev, + ti, dl_parms, argv); + if (IS_ERR(rs)) + return PTR_ERR(rs); + + + rs->set.dev_to_init = rs->set.dev_to_init_parm = dev_to_init; + rs->set.pi = rs->set.pi_parm = pi; + + /* Set RAID4 parity drive index. */ + if (raid_type->level == raid4) + rs->set.pi = (pi == -1) ? rs->set.data_devs : pi; + + recover_set_bandwidth(rs, parms.bandwidth); + + /* Use locking type to lock stripe access. */ + rs->locking = locking; + + /* Get the device/offset tupels. */ + argv += dl_parms + 6 + parity_parm + parms.raid_parms; + r = dev_parms(rs, argv, &i); + if (r) + goto err; + + /* Set backing device information (eg. read ahead). */ + rs_set_read_ahead(rs, 2 * rs->set.chunk_size, 4 /* stripes */); + rs_set_congested_fn(rs); /* Set congested function. */ + SetRSCheckOverwrite(rs); /* Allow chunk overwrite checks. */ + speed = xor_optimize(rs); /* Select best xor algorithm. */ + + /* Set for recovery of any nosync regions. */ + if (parms.recovery) + SetRSRecover(rs); + else { + /* + * Need to free recovery stripe(s) here in case + * of nosync, because xor_optimize uses one. + */ + set_start_recovery(rs); + set_end_recovery(rs); + stripe_recover_free(rs); + } + + /* + * Make sure that dm core only hands maximum io size + * length down and pays attention to io boundaries. + */ + ti->split_io = rs->set.io_size; + ti->private = rs; + + /* Initialize work queue to handle this RAID set's io. */ + r = rs_workqueue_init(rs); + if (r) + goto err; + + rs_log(rs, speed); /* Log information about RAID set. */ + return 0; + +err: + context_free(rs, i); + return r; +} + +/* + * Destruct a raid mapping + */ +static void raid_dtr(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + + destroy_workqueue(rs->io.wq); + context_free(rs, rs->set.raid_devs); +} + +/* Raid mapping function. */ +static int raid_map(struct dm_target *ti, struct bio *bio, + union map_info *map_context) +{ + /* I don't want to waste stripe cache capacity. */ + if (bio_rw(bio) == READA) + return -EIO; + else { + struct raid_set *rs = ti->private; + + /* + * Get io reference to be waiting for to drop + * to zero on device suspension/destruction. + */ + io_get(rs); + bio->bi_sector -= ti->begin; /* Remap sector. */ + + /* Queue io to RAID set. */ + mutex_lock(&rs->io.in_lock); + bio_list_add(&rs->io.in, bio); + mutex_unlock(&rs->io.in_lock); + + /* Wake daemon to process input list. */ + wake_do_raid(rs); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_READ : S_BIOS_WRITE)); + return DM_MAPIO_SUBMITTED; /* Handle later. */ + } +} + +/* Device suspend. */ +static void raid_presuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + SetRSSuspend(rs); + + if (RSRecover(rs)) + dm_rh_stop_recovery(rs->recover.rh); + + cancel_delayed_work(&rs->io.dws_do_raid); + flush_workqueue(rs->io.wq); + wait_ios(rs); /* Wait for completion of all ios being processed. */ + + if (dl->type->presuspend && dl->type->presuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log presuspend failed"); +} + +static void raid_postsuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + if (dl->type->postsuspend && dl->type->postsuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log postsuspend failed"); + +} + +/* Device resume. */ +static void raid_resume(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct dm_dirty_log *dl = rec->dl; + + if (dl->type->resume && dl->type->resume(dl)) + /* Resume dirty log. */ + /* FIXME: need better error handling. */ + DMWARN("log resume failed"); + + rec->nr_regions_to_recover = + rec->nr_regions - dl->type->get_sync_count(dl); + + /* Restart any unfinished recovery. */ + if (RSRecover(rs)) { + set_start_recovery(rs); + dm_rh_start_recovery(rec->rh); + } + + ClearRSSuspend(rs); + wake_do_raid(rs); +} + +/* Return stripe cache size. */ +static unsigned sc_size(struct raid_set *rs) +{ + return to_sector(atomic_read(&rs->sc.stripes) * + (sizeof(struct stripe) + + (sizeof(struct stripe_chunk) + + (sizeof(struct page_list) + + to_bytes(rs->set.io_size) * + rs->set.raid_devs)) + + (rs->recover.end_jiffies ? + 0 : rs->recover.recovery_stripes * + to_bytes(rs->set.raid_devs * rs->recover.io_size)))); +} + +/* REMOVEME: status output for development. */ +static void raid_devel_stats(struct dm_target *ti, char *result, + unsigned *size, unsigned maxlen) +{ + unsigned sz = *size; + unsigned long j; + char buf[BDEVNAME_SIZE], *p; + struct stats_map *sm; + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct timespec ts; + + DMEMIT("%s %s %u\n", version, rs->xor.f->name, rs->xor.chunks); + DMEMIT("act_ios=%d ", io_ref(rs)); + DMEMIT("act_ios_max=%d\n", atomic_read(&rs->io.in_process_max)); + DMEMIT("act_stripes=%d ", sc_active(&rs->sc)); + DMEMIT("act_stripes_max=%d\n", + atomic_read(&rs->sc.active_stripes_max)); + + for (sm = stats_map; sm < ARRAY_END(stats_map); sm++) + DMEMIT("%s%d", sm->str, atomic_read(rs->stats + sm->type)); + + DMEMIT(" checkovr=%s\n", RSCheckOverwrite(rs) ? "on" : "off"); + DMEMIT("sc=%u/%u/%u/%u/%u/%u/%u\n", rs->set.chunk_size, + atomic_read(&rs->sc.stripes), rs->set.io_size, + rec->recovery_stripes, rec->io_size, rs->sc.hash.buckets, + sc_size(rs)); + + j = (rec->end_jiffies ? rec->end_jiffies : jiffies) - + rec->start_jiffies; + jiffies_to_timespec(j, &ts); + sprintf(buf, "%ld.%ld", ts.tv_sec, ts.tv_nsec); + p = strchr(buf, '.'); + p[3] = 0; + + DMEMIT("rg=%llu/%llu/%llu/%u %s\n", + (unsigned long long) rec->nr_regions_recovered, + (unsigned long long) rec->nr_regions_to_recover, + (unsigned long long) rec->nr_regions, rec->bandwidth, buf); + + *size = sz; +} + +static int raid_status(struct dm_target *ti, status_type_t type, + char *result, unsigned maxlen) +{ + unsigned p, sz = 0; + char buf[BDEVNAME_SIZE]; + struct raid_set *rs = ti->private; + int raid_parms[] = { + rs->set.chunk_size_parm, + rs->sc.stripes_parm, + rs->set.io_size_parm, + rs->recover.io_size_parm, + rs->recover.bandwidth_parm, + -2, + rs->recover.recovery_stripes, + }; + + switch (type) { + case STATUSTYPE_INFO: + /* REMOVEME: statistics. */ + if (RSDevelStats(rs)) + raid_devel_stats(ti, result, &sz, maxlen); + + DMEMIT("%u ", rs->set.raid_devs); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev)); + + DMEMIT("1 "); + for (p = 0; p < rs->set.raid_devs; p++) { + DMEMIT("%c", !DevFailed(rs->dev + p) ? 'A' : 'D'); + + if (p == rs->set.pi) + DMEMIT("p"); + + if (rs->set.dev_to_init == p) + DMEMIT("i"); + } + + break; + case STATUSTYPE_TABLE: + sz = rs->recover.dl->type->status(rs->recover.dl, type, + result, maxlen); + DMEMIT("%s %u ", rs->set.raid_type->name, + rs->set.raid_parms); + + for (p = 0; p < rs->set.raid_parms; p++) { + if (raid_parms[p] > -2) + DMEMIT("%d ", raid_parms[p]); + else + DMEMIT("%s ", rs->recover.recovery ? + "sync" : "nosync"); + } + + DMEMIT("%u %d ", rs->set.raid_devs, rs->set.dev_to_init); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s %llu ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev), + (unsigned long long) rs->dev[p].start); + } + + return 0; +} + +/* + * Message interface + */ +enum raid_msg_actions { + act_bw, /* Recovery bandwidth switch. */ + act_dev, /* Device failure switch. */ + act_overwrite, /* Stripe overwrite check. */ + act_stats, /* Development statistics switch. */ + act_sc, /* Stripe cache switch. */ + + act_on, /* Set entity on. */ + act_off, /* Set entity off. */ + act_reset, /* Reset entity. */ + + act_set = act_on, /* Set # absolute. */ + act_grow = act_off, /* Grow # by an amount. */ + act_shrink = act_reset, /* Shrink # by an amount. */ +}; + +/* Turn a delta into an absolute value. */ +static int _absolute(unsigned long action, int act, int r) +{ + /* Make delta absolute. */ + if (test_bit(act_set, &action)) + ; + else if (test_bit(act_grow, &action)) + r += act; + else if (test_bit(act_shrink, &action)) + r = act - r; + else + r = -EINVAL; + + return r; +} + + /* Change recovery io bandwidth. */ +static int bandwidth_change(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + int act = rs->recover.bandwidth; + int bandwidth = DM_MSG_INT_ARG(msg); + + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + /* Make delta bandwidth absolute. */ + bandwidth = _absolute(msg->action, act, bandwidth); + + /* Check range. */ + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + recover_set_bandwidth(rs, bandwidth); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Set/reset development feature flags. */ +static int devel_flags(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + + if (test_bit(act_on, &msg->action)) + return test_and_set_bit(msg->spec->parm, + &rs->io.flags) ? -EPERM : 0; + else if (test_bit(act_off, &msg->action)) + return test_and_clear_bit(msg->spec->parm, + &rs->io.flags) ? 0 : -EPERM; + else if (test_bit(act_reset, &msg->action)) { + if (test_bit(act_stats, &msg->action)) { + stats_reset(rs); + goto on; + } else if (test_bit(act_overwrite, &msg->action)) { +on: + set_bit(msg->spec->parm, &rs->io.flags); + return 0; + } + } + + return -EINVAL; +} + +/* Resize the stripe cache. */ +static int sc_resize(struct dm_msg *msg, void *context) +{ + int act, stripes; + struct raid_set *rs = context; + + /* Deny permission in case the daemon is still resizing!. */ + if (atomic_read(&rs->sc.stripes_to_set)) + return -EPERM; + + stripes = DM_MSG_INT_ARG(msg); + if (stripes > 0) { + act = atomic_read(&rs->sc.stripes); + + /* Make delta stripes absolute. */ + stripes = _absolute(msg->action, act, stripes); + + /* + * Check range and that the # of stripes changes. + * We leave the resizing to the wroker. + */ + if (range_ok(stripes, STRIPES_MIN, STRIPES_MAX) && + stripes != atomic_read(&rs->sc.stripes)) { + atomic_set(&rs->sc.stripes_to_set, stripes); + wake_do_raid(rs); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Parse the RAID message action. */ +/* + * 'ba[ndwidth] {se[t],g[row],sh[rink]} #' # e.g 'ba se 50' + * "o[verwrite] {on,of[f],r[eset]}' # e.g. 'o of' + * 'sta[tistics] {on,of[f],r[eset]}' # e.g. 'stat of' + * 'str[ipecache] {se[t],g[row],sh[rink]} #' # e.g. 'stripe set 1024' + * + */ +static int raid_message(struct dm_target *ti, unsigned argc, char **argv) +{ + /* Variables to store the parsed parameters im. */ + static int i[2]; + static unsigned long *i_arg[] = { + (unsigned long *) i + 0, + (unsigned long *) i + 1, + }; + + /* Declare all message option strings. */ + static char *str_sgs[] = { "set", "grow", "shrink" }; + static char *str_oor[] = { "on", "off", "reset" }; + + /* Declare all actions. */ + static unsigned long act_sgs[] = { act_set, act_grow, act_shrink }; + static unsigned long act_oor[] = { act_on, act_off, act_reset }; + + /* Bandwidth option. */ + static struct dm_message_option bw_opt = { 3, str_sgs, act_sgs }; + static struct dm_message_argument bw_args = { + 1, i_arg, { dm_msg_int_t } + }; + + static struct dm_message_argument null_args = { + 0, NULL, { dm_msg_int_t } + }; + + /* Overwrite and statistics option. */ + static struct dm_message_option ovr_stats_opt = { 3, str_oor, act_oor }; + + /* Sripecache option. */ + static struct dm_message_option stripe_opt = { 3, str_sgs, act_sgs }; + + /* Declare messages. */ + static struct dm_msg_spec specs[] = { + { "bandwidth", act_bw, &bw_opt, &bw_args, + 0, bandwidth_change }, + { "overwrite", act_overwrite, &ovr_stats_opt, &null_args, + RS_CHECK_OVERWRITE, devel_flags }, + { "statistics", act_stats, &ovr_stats_opt, &null_args, + RS_DEVEL_STATS, devel_flags }, + { "stripecache", act_sc, &stripe_opt, &bw_args, + 0, sc_resize }, + }; + + /* The message for the parser. */ + struct dm_msg msg = { + .num_specs = ARRAY_SIZE(specs), + .specs = specs, + }; + + return dm_message_parse(TARGET, &msg, ti->private, argc, argv); +} +/* + * END message interface + */ + +static struct target_type raid_target = { + .name = "raid45", + .version = {1, 0, 0}, + .module = THIS_MODULE, + .ctr = raid_ctr, + .dtr = raid_dtr, + .map = raid_map, + .presuspend = raid_presuspend, + .postsuspend = raid_postsuspend, + .resume = raid_resume, + .status = raid_status, + .message = raid_message, +}; + +static void init_exit(const char *bad_msg, const char *good_msg, int r) +{ + if (r) + DMERR("Failed to %sregister target [%d]", bad_msg, r); + else + DMINFO("%s %s", good_msg, version); +} + +static int __init dm_raid_init(void) +{ + int r = dm_register_target(&raid_target); + + init_exit("", "initialized", r); + return r; +} + +static void __exit dm_raid_exit(void) +{ + dm_unregister_target(&raid_target); + init_exit("un", "exit", 0); +} + +/* Module hooks. */ +module_init(dm_raid_init); +module_exit(dm_raid_exit); + +MODULE_DESCRIPTION(DM_NAME " raid4/5 target"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("dm-raid4"); +MODULE_ALIAS("dm-raid5"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/BOM +++ linux-3.5.0/ubuntu/dm-raid4-5/BOM @@ -0,0 +1,3 @@ +Downloaded from: http://people.redhat.com/~heinzm/sw/dm/dm-raid45/ +Current Version: 2009.04.24 (2.6.30-rc3) +Comments: All of the patches to dmraid1/dm-log, etc are upstream. --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid45.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid45.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * Locking definitions for the device-mapper RAID45 target. + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) (ptr), (str), strlen((ptr)) + +enum dm_lock_type { DM_RAID45_EX, DM_RAID45_SHARED }; + +struct dm_raid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum dm_lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); +}; + +#endif --- linux-3.5.0.orig/ubuntu/alx/alx_reg.h +++ linux-3.5.0/ubuntu/alx/alx_reg.h @@ -0,0 +1,2295 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ALX_REG_H +#define ALX_REG_H + +/**********************************************************************/ +/* following registers are mapped to both pci config and memory space */ +/**********************************************************************/ + +#define ALX_VENDOR_ID PCI_VENDOR_ID_ATTANSIC + +/* pci dev-ids */ +#define ALX_DEV_ID_AR8161 0x1091 +#define ALX_DEV_ID_AR8162 0x1090 +#define ALX_DEV_ID_AR8171 0x10A1 +#define ALX_DEV_ID_AR8172 0x10A0 + +/* rev definition, + * bit(0): with xD support + * bit(1): with Card Reader function + * bit(7:2): real revision + */ +#define ALX_PCI_REVID_WTH_CR BIT(1) +#define ALX_PCI_REVID_WTH_XD BIT(0) +#define ALX_PCI_REVID_MASK 0x1FU +#define ALX_PCI_REVID_SHIFT 3 +#define ALX_REV_A0 0 +#define ALX_REV_A1 1 +#define ALX_REV_B0 2 +#define ALX_REV_C0 3 + +#define ALX_PM_CSR 0x0044 +#define ALX_PM_CSR_PME_STAT BIT(15) +#define ALX_PM_CSR_DSCAL_MASK 0x3U +#define ALX_PM_CSR_DSCAL_SHIFT 13 +#define ALX_PM_CSR_DSEL_MASK 0xFU +#define ALX_PM_CSR_DSEL_SHIFT 9 +#define ALX_PM_CSR_PME_EN BIT(8) +#define ALX_PM_CSR_PWST_MASK 0x3U +#define ALX_PM_CSR_PWST_SHIFT 0 + +#define ALX_DEV_CAP 0x005C +#define ALX_DEV_CAP_SPLSL_MASK 0x3UL +#define ALX_DEV_CAP_SPLSL_SHIFT 26 +#define ALX_DEV_CAP_SPLV_MASK 0xFFUL +#define ALX_DEV_CAP_SPLV_SHIFT 18 +#define ALX_DEV_CAP_RBER BIT(15) +#define ALX_DEV_CAP_PIPRS BIT(14) +#define ALX_DEV_CAP_AIPRS BIT(13) +#define ALX_DEV_CAP_ABPRS BIT(12) +#define ALX_DEV_CAP_L1ACLAT_MASK 0x7UL +#define ALX_DEV_CAP_L1ACLAT_SHIFT 9 +#define ALX_DEV_CAP_L0SACLAT_MASK 0x7UL +#define ALX_DEV_CAP_L0SACLAT_SHIFT 6 +#define ALX_DEV_CAP_EXTAG BIT(5) +#define ALX_DEV_CAP_PHANTOM BIT(4) +#define ALX_DEV_CAP_MPL_MASK 0x7UL +#define ALX_DEV_CAP_MPL_SHIFT 0 +#define ALX_DEV_CAP_MPL_128 1 +#define ALX_DEV_CAP_MPL_256 2 +#define ALX_DEV_CAP_MPL_512 3 +#define ALX_DEV_CAP_MPL_1024 4 +#define ALX_DEV_CAP_MPL_2048 5 +#define ALX_DEV_CAP_MPL_4096 6 + +#define ALX_DEV_CTRL 0x0060 +#define ALX_DEV_CTRL_MAXRRS_MASK 0x7U +#define ALX_DEV_CTRL_MAXRRS_SHIFT 12 +#define ALX_DEV_CTRL_MAXRRS_MIN 2 +#define ALX_DEV_CTRL_NOSNP_EN BIT(11) +#define ALX_DEV_CTRL_AUXPWR_EN BIT(10) +#define ALX_DEV_CTRL_PHANTOM_EN BIT(9) +#define ALX_DEV_CTRL_EXTAG_EN BIT(8) +#define ALX_DEV_CTRL_MPL_MASK 0x7U +#define ALX_DEV_CTRL_MPL_SHIFT 5 +#define ALX_DEV_CTRL_RELORD_EN BIT(4) +#define ALX_DEV_CTRL_URR_EN BIT(3) +#define ALX_DEV_CTRL_FERR_EN BIT(2) +#define ALX_DEV_CTRL_NFERR_EN BIT(1) +#define ALX_DEV_CTRL_CERR_EN BIT(0) + +#define ALX_DEV_STAT 0x0062 +#define ALX_DEV_STAT_XS_PEND BIT(5) +#define ALX_DEV_STAT_AUXPWR BIT(4) +#define ALX_DEV_STAT_UR BIT(3) +#define ALX_DEV_STAT_FERR BIT(2) +#define ALX_DEV_STAT_NFERR BIT(1) +#define ALX_DEV_STAT_CERR BIT(0) + +#define ALX_LNK_CAP 0x0064 +#define ALX_LNK_CAP_PRTNUM_MASK 0xFFUL +#define ALX_LNK_CAP_PRTNUM_SHIFT 24 +#define ALX_LNK_CAP_CLK_PM BIT(18) +#define ALX_LNK_CAP_L1EXTLAT_MASK 0x7UL +#define ALX_LNK_CAP_L1EXTLAT_SHIFT 15 +#define ALX_LNK_CAP_L0SEXTLAT_MASK 0x7UL +#define ALX_LNK_CAP_L0SEXTLAT_SHIFT 12 +#define ALX_LNK_CAP_ASPM_SUP_MASK 0x3UL +#define ALX_LNK_CAP_ASPM_SUP_SHIFT 10 +#define ALX_LNK_CAP_ASPM_SUP_L0S 1 +#define ALX_LNK_CAP_ASPM_SUP_L0SL1 3 +#define ALX_LNK_CAP_MAX_LWH_MASK 0x3FUL +#define ALX_LNK_CAP_MAX_LWH_SHIFT 4 +#define ALX_LNK_CAP_MAX_LSPD_MASK 0xFUL +#define ALX_LNK_CAP_MAX_LSPD_SHIFT 0 + +#define ALX_LNK_CTRL 0x0068 +#define ALX_LNK_CTRL_CLK_PM_EN BIT(8) +#define ALX_LNK_CTRL_EXTSYNC BIT(7) +#define ALX_LNK_CTRL_CMNCLK_CFG BIT(6) +#define ALX_LNK_CTRL_RCB_128B BIT(3) +#define ALX_LNK_CTRL_ASPM_MASK 0x3U +#define ALX_LNK_CTRL_ASPM_SHIFT 0 +#define ALX_LNK_CTRL_ASPM_DIS 0 +#define ALX_LNK_CTRL_ASPM_ENL0S 1 +#define ALX_LNK_CTRL_ASPM_ENL1 2 +#define ALX_LNK_CTRL_ASPM_ENL0SL1 3 + +#define ALX_LNK_STAT 0x006A +#define ALX_LNK_STAT_SCLKCFG BIT(12) +#define ALX_LNK_STAT_LNKTRAIN BIT(11) +#define ALX_LNK_STAT_TRNERR BIT(10) +#define ALX_LNK_STAT_LNKSPD_MASK 0xFU +#define ALX_LNK_STAT_LNKSPD_SHIFT 0 +#define ALX_LNK_STAT_NEGLW_MASK 0x3FU +#define ALX_LNK_STAT_NEGLW_SHIFT 4 + +#define ALX_MSIX_MASK 0x0090 +#define ALX_MSIX_PENDING 0x0094 + +#define ALX_UE_SVRT 0x010C +#define ALX_UE_SVRT_UR BIT(20) +#define ALX_UE_SVRT_ECRCERR BIT(19) +#define ALX_UE_SVRT_MTLP BIT(18) +#define ALX_UE_SVRT_RCVOVFL BIT(17) +#define ALX_UE_SVRT_UNEXPCPL BIT(16) +#define ALX_UE_SVRT_CPLABRT BIT(15) +#define ALX_UE_SVRT_CPLTO BIT(14) +#define ALX_UE_SVRT_FCPROTERR BIT(13) +#define ALX_UE_SVRT_PTLP BIT(12) +#define ALX_UE_SVRT_DLPROTERR BIT(4) +#define ALX_UE_SVRT_TRNERR BIT(0) + +/* eeprom & flash load register */ +#define ALX_EFLD 0x0204 +#define ALX_EFLD_F_ENDADDR_MASK 0x3FFUL +#define ALX_EFLD_F_ENDADDR_SHIFT 16 +#define ALX_EFLD_F_EXIST BIT(10) +#define ALX_EFLD_E_EXIST BIT(9) +#define ALX_EFLD_EXIST BIT(8) +#define ALX_EFLD_STAT BIT(5) +#define ALX_EFLD_IDLE BIT(4) +#define ALX_EFLD_START BIT(0) + +/* eFuse load register */ +#define ALX_SLD 0x0218 +#define ALX_SLD_FREQ_MASK 0x3UL +#define ALX_SLD_FREQ_SHIFT 24 +#define ALX_SLD_FREQ_100K 0 +#define ALX_SLD_FREQ_200K 1 +#define ALX_SLD_FREQ_300K 2 +#define ALX_SLD_FREQ_400K 3 +#define ALX_SLD_EXIST BIT(23) +#define ALX_SLD_SLVADDR_MASK 0x7FUL +#define ALX_SLD_SLVADDR_SHIFT 16 +#define ALX_SLD_IDLE BIT(13) +#define ALX_SLD_STAT BIT(12) +#define ALX_SLD_START BIT(11) +#define ALX_SLD_STARTADDR_MASK 0xFFUL +#define ALX_SLD_STARTADDR_SHIFT 0 +#define ALX_SLD_MAX_TO 100 + +#define ALX_PCIE_MSIC 0x021C +#define ALX_PCIE_MSIC_MSIX_DIS BIT(22) +#define ALX_PCIE_MSIC_MSI_DIS BIT(21) + +#define ALX_PPHY_MISC1 0x1000 +#define ALX_PPHY_MISC1_RCVDET BIT(2) +#define ALX_PPHY_MISC1_NFTS_MASK 0xFFUL +#define ALX_PPHY_MISC1_NFTS_SHIFT 16 +#define ALX_PPHY_MISC1_NFTS_HIPERF 0xA0 + +#define ALX_PPHY_MISC2 0x1004 +#define ALX_PPHY_MISC2_L0S_TH_MASK 0x3UL +#define ALX_PPHY_MISC2_L0S_TH_SHIFT 18 +#define ALX_PPHY_MISC2_CDR_BW_MASK 0x3UL +#define ALX_PPHY_MISC2_CDR_BW_SHIFT 16 + +#define ALX_PDLL_TRNS1 0x1104 +#define ALX_PDLL_TRNS1_D3PLLOFF_EN BIT(11) +#define ALX_PDLL_TRNS1_REGCLK_SEL_NORM BIT(10) +#define ALX_PDLL_TRNS1_REPLY_TO_MASK 0x3FFUL +#define ALX_PDLL_TRNS1_REPLY_TO_SHIFT 0 + +#define ALX_TLEXTN_STATS 0x1208 +#define ALX_TLEXTN_STATS_DEVNO_MASK 0x1FUL +#define ALX_TLEXTN_STATS_DEVNO_SHIFT 16 +#define ALX_TLEXTN_STATS_BUSNO_MASK 0xFFUL +#define ALX_TLEXTN_STATS_BUSNO_SHIFT 8 + +#define ALX_EFUSE_CTRL 0x12C0 +#define ALX_EFUSE_CTRL_FLAG BIT(31) +#define ALX_EUFSE_CTRL_ACK BIT(30) +#define ALX_EFUSE_CTRL_ADDR_MASK 0x3FFUL +#define ALX_EFUSE_CTRL_ADDR_SHIFT 16 + +#define ALX_EFUSE_DATA 0x12C4 + +#define ALX_SPI_OP1 0x12C8 +#define ALX_SPI_OP1_RDID_MASK 0xFFUL +#define ALX_SPI_OP1_RDID_SHIFT 24 +#define ALX_SPI_OP1_CE_MASK 0xFFUL +#define ALX_SPI_OP1_CE_SHIFT 16 +#define ALX_SPI_OP1_SE_MASK 0xFFUL +#define ALX_SPI_OP1_SE_SHIFT 8 +#define ALX_SPI_OP1_PRGRM_MASK 0xFFUL +#define ALX_SPI_OP1_PRGRM_SHIFT 0 + +#define ALX_SPI_OP2 0x12CC +#define ALX_SPI_OP2_READ_MASK 0xFFUL +#define ALX_SPI_OP2_READ_SHIFT 24 +#define ALX_SPI_OP2_WRSR_MASK 0xFFUL +#define ALX_SPI_OP2_WRSR_SHIFT 16 +#define ALX_SPI_OP2_RDSR_MASK 0xFFUL +#define ALX_SPI_OP2_RDSR_SHIFT 8 +#define ALX_SPI_OP2_WREN_MASK 0xFFUL +#define ALX_SPI_OP2_WREN_SHIFT 0 + +#define ALX_SPI_OP3 0x12E4 +#define ALX_SPI_OP3_WRDI_MASK 0xFFUL +#define ALX_SPI_OP3_WRDI_SHIFT 8 +#define ALX_SPI_OP3_EWSR_MASK 0xFFUL +#define ALX_SPI_OP3_EWSR_SHIFT 0 + +#define ALX_EF_CTRL 0x12D0 +#define ALX_EF_CTRL_FSTS_MASK 0xFFUL +#define ALX_EF_CTRL_FSTS_SHIFT 20 +#define ALX_EF_CTRL_CLASS_MASK 0x7UL +#define ALX_EF_CTRL_CLASS_SHIFT 16 +#define ALX_EF_CTRL_CLASS_F_UNKNOWN 0 +#define ALX_EF_CTRL_CLASS_F_STD 1 +#define ALX_EF_CTRL_CLASS_F_SST 2 +#define ALX_EF_CTRL_CLASS_E_UNKNOWN 0 +#define ALX_EF_CTRL_CLASS_E_1K 1 +#define ALX_EF_CTRL_CLASS_E_4K 2 +#define ALX_EF_CTRL_FRET BIT(15) +#define ALX_EF_CTRL_TYP_MASK 0x3UL +#define ALX_EF_CTRL_TYP_SHIFT 12 +#define ALX_EF_CTRL_TYP_NONE 0 +#define ALX_EF_CTRL_TYP_F 1 +#define ALX_EF_CTRL_TYP_E 2 +#define ALX_EF_CTRL_TYP_UNKNOWN 3 +#define ALX_EF_CTRL_ONE_CLK BIT(10) +#define ALX_EF_CTRL_ECLK_MASK 0x3UL +#define ALX_EF_CTRL_ECLK_SHIFT 8 +#define ALX_EF_CTRL_ECLK_125K 0 +#define ALX_EF_CTRL_ECLK_250K 1 +#define ALX_EF_CTRL_ECLK_500K 2 +#define ALX_EF_CTRL_ECLK_1M 3 +#define ALX_EF_CTRL_FBUSY BIT(7) +#define ALX_EF_CTRL_ACTION BIT(6) +#define ALX_EF_CTRL_AUTO_OP BIT(5) +#define ALX_EF_CTRL_SST_MODE BIT(4) +#define ALX_EF_CTRL_INST_MASK 0xFUL +#define ALX_EF_CTRL_INST_SHIFT 0 +#define ALX_EF_CTRL_INST_NONE 0 +#define ALX_EF_CTRL_INST_READ 1 +#define ALX_EF_CTRL_INST_RDID 2 +#define ALX_EF_CTRL_INST_RDSR 3 +#define ALX_EF_CTRL_INST_WREN 4 +#define ALX_EF_CTRL_INST_PRGRM 5 +#define ALX_EF_CTRL_INST_SE 6 +#define ALX_EF_CTRL_INST_CE 7 +#define ALX_EF_CTRL_INST_WRSR 10 +#define ALX_EF_CTRL_INST_EWSR 11 +#define ALX_EF_CTRL_INST_WRDI 12 +#define ALX_EF_CTRL_INST_WRITE 2 + +#define ALX_EF_ADDR 0x12D4 +#define ALX_EF_DATA 0x12D8 +#define ALX_SPI_ID 0x12DC + +#define ALX_SPI_CFG_START 0x12E0 + +#define ALX_PMCTRL 0x12F8 +#define ALX_PMCTRL_HOTRST_WTEN BIT(31) +/* bit30: L0s/L1 controlled by MAC based on throughput(setting in 15A0) */ +#define ALX_PMCTRL_ASPM_FCEN BIT(30) +#define ALX_PMCTRL_SADLY_EN BIT(29) +#define ALX_PMCTRL_L0S_BUFSRX_EN BIT(28) +#define ALX_PMCTRL_LCKDET_TIMER_MASK 0xFUL +#define ALX_PMCTRL_LCKDET_TIMER_SHIFT 24 +#define ALX_PMCTRL_LCKDET_TIMER_DEF 0xC +/* bit[23:20] if pm_request_l1 time > @, then enter L0s not L1 */ +#define ALX_PMCTRL_L1REQ_TO_MASK 0xFUL +#define ALX_PMCTRL_L1REQ_TO_SHIFT 20 +#define ALX_PMCTRL_L1REG_TO_DEF 0xF +#define ALX_PMCTRL_TXL1_AFTER_L0S BIT(19) +#define ALX_PMCTRL_L1_TIMER_MASK 0x7UL +#define ALX_PMCTRL_L1_TIMER_SHIFT 16 +#define ALX_PMCTRL_L1_TIMER_DIS 0 +#define ALX_PMCTRL_L1_TIMER_2US 1 +#define ALX_PMCTRL_L1_TIMER_4US 2 +#define ALX_PMCTRL_L1_TIMER_8US 3 +#define ALX_PMCTRL_L1_TIMER_16US 4 +#define ALX_PMCTRL_L1_TIMER_24US 5 +#define ALX_PMCTRL_L1_TIMER_32US 6 +#define ALX_PMCTRL_L1_TIMER_63US 7 +#define ALX_PMCTRL_RCVR_WT_1US BIT(15) +#define ALX_PMCTRL_PWM_VER_11 BIT(14) +/* bit13: enable pcie clk switch in L1 state */ +#define ALX_PMCTRL_L1_CLKSW_EN BIT(13) +#define ALX_PMCTRL_L0S_EN BIT(12) +#define ALX_PMCTRL_RXL1_AFTER_L0S BIT(11) +#define ALX_PMCTRL_L0S_TIMER_MASK 0x7UL +#define ALX_PMCTRL_L0S_TIMER_SHIFT 8 +#define ALX_PMCTRL_L1_BUFSRX_EN BIT(7) +/* bit6: power down serdes RX */ +#define ALX_PMCTRL_L1_SRDSRX_PWD BIT(6) +#define ALX_PMCTRL_L1_SRDSPLL_EN BIT(5) +#define ALX_PMCTRL_L1_SRDS_EN BIT(4) +#define ALX_PMCTRL_L1_EN BIT(3) +#define ALX_PMCTRL_CLKREQ_EN BIT(2) +#define ALX_PMCTRL_RBER_EN BIT(1) +#define ALX_PMCTRL_SPRSDWER_EN BIT(0) + +#define ALX_LTSSM_CTRL 0x12FC +#define ALX_LTSSM_WRO_EN BIT(12) + +/*******************************************************/ +/* following registers are mapped only to memory space */ +/*******************************************************/ + +#define ALX_MASTER 0x1400 +#define ALX_MASTER_OTP_FLG BIT(31) +#define ALX_MASTER_DEV_NUM_MASK 0x7FUL +#define ALX_MASTER_DEV_NUM_SHIFT 24 +#define ALX_MASTER_REV_NUM_MASK 0xFFUL +#define ALX_MASTER_REV_NUM_SHIFT 16 +#define ALX_MASTER_DEASSRT BIT(15) +#define ALX_MASTER_RDCLR_INT BIT(14) +#define ALX_MASTER_DMA_RST BIT(13) +/* bit12: 1:alwys select pclk from serdes, not sw to 25M */ +#define ALX_MASTER_PCLKSEL_SRDS BIT(12) +/* bit11: irq moduration for rx */ +#define ALX_MASTER_IRQMOD2_EN BIT(11) +/* bit10: irq moduration for tx/rx */ +#define ALX_MASTER_IRQMOD1_EN BIT(10) +#define ALX_MASTER_MANU_INT BIT(9) +#define ALX_MASTER_MANUTIMER_EN BIT(8) +#define ALX_MASTER_SYSALVTIMER_EN BIT(7) +#define ALX_MASTER_OOB_DIS BIT(6) +/* bit5: wakeup without pcie clk */ +#define ALX_MASTER_WAKEN_25M BIT(5) +#define ALX_MASTER_BERT_START BIT(4) +#define ALX_MASTER_PCIE_TSTMOD_MASK 0x3UL +#define ALX_MASTER_PCIE_TSTMOD_SHIFT 2 +#define ALX_MASTER_PCIE_RST BIT(1) +/* bit0: MAC & DMA reset */ +#define ALX_MASTER_DMA_MAC_RST BIT(0) +#define ALX_DMA_MAC_RST_TO 50 + +#define ALX_MANU_TIMER 0x1404 + +#define ALX_IRQ_MODU_TIMER 0x1408 +/* hi-16bit is only for RX */ +#define ALX_IRQ_MODU_TIMER2_MASK 0xFFFFUL +#define ALX_IRQ_MODU_TIMER2_SHIFT 16 +#define ALX_IRQ_MODU_TIMER1_MASK 0xFFFFUL +#define ALX_IRQ_MODU_TIMER1_SHIFT 0 + +#define ALX_PHY_CTRL 0x140C +#define ALX_PHY_CTRL_ADDR_MASK 0x1FUL +#define ALX_PHY_CTRL_ADDR_SHIFT 19 +#define ALX_PHY_CTRL_BP_VLTGSW BIT(18) +#define ALX_PHY_CTRL_100AB_EN BIT(17) +#define ALX_PHY_CTRL_10AB_EN BIT(16) +#define ALX_PHY_CTRL_PLL_BYPASS BIT(15) +/* bit14: affect MAC & PHY, go to low power sts */ +#define ALX_PHY_CTRL_POWER_DOWN BIT(14) +/* bit13: 1:pll always ON, 0:can switch in lpw */ +#define ALX_PHY_CTRL_PLL_ON BIT(13) +#define ALX_PHY_CTRL_RST_ANALOG BIT(12) +#define ALX_PHY_CTRL_HIB_PULSE BIT(11) +#define ALX_PHY_CTRL_HIB_EN BIT(10) +#define ALX_PHY_CTRL_GIGA_DIS BIT(9) +/* bit8: poweron rst */ +#define ALX_PHY_CTRL_IDDQ_DIS BIT(8) +/* bit7: while reboot, it affects bit8 */ +#define ALX_PHY_CTRL_IDDQ BIT(7) +#define ALX_PHY_CTRL_LPW_EXIT BIT(6) +#define ALX_PHY_CTRL_GATE_25M BIT(5) +#define ALX_PHY_CTRL_RVRS_ANEG BIT(4) +#define ALX_PHY_CTRL_ANEG_NOW BIT(3) +#define ALX_PHY_CTRL_LED_MODE BIT(2) +#define ALX_PHY_CTRL_RTL_MODE BIT(1) +/* bit0: out of dsp RST state */ +#define ALX_PHY_CTRL_DSPRST_OUT BIT(0) +#define ALX_PHY_CTRL_DSPRST_TO 80 +#define ALX_PHY_CTRL_CLS (\ + ALX_PHY_CTRL_LED_MODE |\ + ALX_PHY_CTRL_100AB_EN |\ + ALX_PHY_CTRL_PLL_ON) + +#define ALX_MAC_STS 0x1410 +#define ALX_MAC_STS_SFORCE_MASK 0xFUL +#define ALX_MAC_STS_SFORCE_SHIFT 14 +#define ALX_MAC_STS_CALIB_DONE BIT13 +#define ALX_MAC_STS_CALIB_RES_MASK 0x1FUL +#define ALX_MAC_STS_CALIB_RES_SHIFT 8 +#define ALX_MAC_STS_CALIBERR_MASK 0xFUL +#define ALX_MAC_STS_CALIBERR_SHIFT 4 +#define ALX_MAC_STS_TXQ_BUSY BIT(3) +#define ALX_MAC_STS_RXQ_BUSY BIT(2) +#define ALX_MAC_STS_TXMAC_BUSY BIT(1) +#define ALX_MAC_STS_RXMAC_BUSY BIT(0) +#define ALX_MAC_STS_IDLE (\ + ALX_MAC_STS_TXQ_BUSY |\ + ALX_MAC_STS_RXQ_BUSY |\ + ALX_MAC_STS_TXMAC_BUSY |\ + ALX_MAC_STS_RXMAC_BUSY) + +#define ALX_MDIO 0x1414 +#define ALX_MDIO_MODE_EXT BIT(30) +#define ALX_MDIO_POST_READ BIT(29) +#define ALX_MDIO_AUTO_POLLING BIT(28) +#define ALX_MDIO_BUSY BIT(27) +#define ALX_MDIO_CLK_SEL_MASK 0x7UL +#define ALX_MDIO_CLK_SEL_SHIFT 24 +#define ALX_MDIO_CLK_SEL_25MD4 0 +#define ALX_MDIO_CLK_SEL_25MD6 2 +#define ALX_MDIO_CLK_SEL_25MD8 3 +#define ALX_MDIO_CLK_SEL_25MD10 4 +#define ALX_MDIO_CLK_SEL_25MD32 5 +#define ALX_MDIO_CLK_SEL_25MD64 6 +#define ALX_MDIO_CLK_SEL_25MD128 7 +#define ALX_MDIO_START BIT(23) +#define ALX_MDIO_SPRES_PRMBL BIT(22) +/* bit21: 1:read,0:write */ +#define ALX_MDIO_OP_READ BIT(21) +#define ALX_MDIO_REG_MASK 0x1FUL +#define ALX_MDIO_REG_SHIFT 16 +#define ALX_MDIO_DATA_MASK 0xFFFFUL +#define ALX_MDIO_DATA_SHIFT 0 +#define ALX_MDIO_MAX_AC_TO 120 + +#define ALX_MDIO_EXTN 0x1448 +#define ALX_MDIO_EXTN_PORTAD_MASK 0x1FUL +#define ALX_MDIO_EXTN_PORTAD_SHIFT 21 +#define ALX_MDIO_EXTN_DEVAD_MASK 0x1FUL +#define ALX_MDIO_EXTN_DEVAD_SHIFT 16 +#define ALX_MDIO_EXTN_REG_MASK 0xFFFFUL +#define ALX_MDIO_EXTN_REG_SHIFT 0 + +#define ALX_PHY_STS 0x1418 +#define ALX_PHY_STS_LPW BIT(31) +#define ALX_PHY_STS_LPI BIT(30) +#define ALX_PHY_STS_PWON_STRIP_MASK 0xFFFUL +#define ALX_PHY_STS_PWON_STRIP_SHIFT 16 + +#define ALX_PHY_STS_DUPLEX BIT(3) +#define ALX_PHY_STS_LINKUP BIT(2) +#define ALX_PHY_STS_SPEED_MASK 0x3UL +#define ALX_PHY_STS_SPEED_SHIFT 0 +#define ALX_PHY_STS_SPEED_1000M 2 +#define ALX_PHY_STS_SPEED_100M 1 +#define ALX_PHY_STS_SPEED_10M 0 + +#define ALX_BIST0 0x141C +#define ALX_BIST0_COL_MASK 0x3FUL +#define ALX_BIST0_COL_SHIFT 24 +#define ALX_BIST0_ROW_MASK 0xFFFUL +#define ALX_BIST0_ROW_SHIFT 12 +#define ALX_BIST0_STEP_MASK 0xFUL +#define ALX_BIST0_STEP_SHIFT 8 +#define ALX_BIST0_PATTERN_MASK 0x7UL +#define ALX_BIST0_PATTERN_SHIFT 4 +#define ALX_BIST0_CRIT BIT(3) +#define ALX_BIST0_FIXED BIT(2) +#define ALX_BIST0_FAIL BIT(1) +#define ALX_BIST0_START BIT(0) + +#define ALX_BIST1 0x1420 +#define ALX_BIST1_COL_MASK 0x3FUL +#define ALX_BIST1_COL_SHIFT 24 +#define ALX_BIST1_ROW_MASK 0xFFFUL +#define ALX_BIST1_ROW_SHIFT 12 +#define ALX_BIST1_STEP_MASK 0xFUL +#define ALX_BIST1_STEP_SHIFT 8 +#define ALX_BIST1_PATTERN_MASK 0x7UL +#define ALX_BIST1_PATTERN_SHIFT 4 +#define ALX_BIST1_CRIT BIT(3) +#define ALX_BIST1_FIXED BIT(2) +#define ALX_BIST1_FAIL BIT(1) +#define ALX_BIST1_START BIT(0) + +#define ALX_SERDES 0x1424 +#define ALX_SERDES_PHYCLK_SLWDWN BIT(18) +#define ALX_SERDES_MACCLK_SLWDWN BIT(17) +#define ALX_SERDES_SELFB_PLL_MASK 0x3UL +#define ALX_SERDES_SELFB_PLL_SHIFT 14 +/* bit13: 1:gtx_clk, 0:25M */ +#define ALX_SERDES_PHYCLK_SEL_GTX BIT(13) +/* bit12: 1:serdes,0:25M */ +#define ALX_SERDES_PCIECLK_SEL_SRDS BIT(12) +#define ALX_SERDES_BUFS_RX_EN BIT(11) +#define ALX_SERDES_PD_RX BIT(10) +#define ALX_SERDES_PLL_EN BIT(9) +#define ALX_SERDES_EN BIT(8) +/* bit6: 0:state-machine,1:csr */ +#define ALX_SERDES_SELFB_PLL_SEL_CSR BIT(6) +#define ALX_SERDES_SELFB_PLL_CSR_MASK 0x3UL +#define ALX_SERDES_SELFB_PLL_CSR_SHIFT 4 +/* 4-12% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_4 3 +/* 0-4% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_0 2 +/* 12-18% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_12 1 +/* 18-25% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_18 0 +#define ALX_SERDES_VCO_SLOW BIT(3) +#define ALX_SERDES_VCO_FAST BIT(2) +#define ALX_SERDES_LOCKDCT_EN BIT(1) +#define ALX_SERDES_LOCKDCTED BIT(0) + +#define ALX_LED_CTRL 0x1428 +#define ALX_LED_CTRL_PATMAP2_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP2_SHIFT 8 +#define ALX_LED_CTRL_PATMAP1_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP1_SHIFT 6 +#define ALX_LED_CTRL_PATMAP0_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP0_SHIFT 4 +#define ALX_LED_CTRL_D3_MODE_MASK 0x3UL +#define ALX_LED_CTRL_D3_MODE_SHIFT 2 +#define ALX_LED_CTRL_D3_MODE_NORMAL 0 +#define ALX_LED_CTRL_D3_MODE_WOL_DIS 1 +#define ALX_LED_CTRL_D3_MODE_WOL_ANY 2 +#define ALX_LED_CTRL_D3_MODE_WOL_EN 3 +#define ALX_LED_CTRL_DUTY_CYCL_MASK 0x3UL +#define ALX_LED_CTRL_DUTY_CYCL_SHIFT 0 +/* 50% */ +#define ALX_LED_CTRL_DUTY_CYCL_50 0 +/* 12.5% */ +#define ALX_LED_CTRL_DUTY_CYCL_125 1 +/* 25% */ +#define ALX_LED_CTRL_DUTY_CYCL_25 2 +/* 75% */ +#define ALX_LED_CTRL_DUTY_CYCL_75 3 + +#define ALX_LED_PATN 0x142C +#define ALX_LED_PATN1_MASK 0xFFFFUL +#define ALX_LED_PATN1_SHIFT 16 +#define ALX_LED_PATN0_MASK 0xFFFFUL +#define ALX_LED_PATN0_SHIFT 0 + +#define ALX_LED_PATN2 0x1430 +#define ALX_LED_PATN2_MASK 0xFFFFUL +#define ALX_LED_PATN2_SHIFT 0 + +#define ALX_SYSALV 0x1434 +#define ALX_SYSALV_FLAG BIT(0) + +#define ALX_PCIERR_INST 0x1438 +#define ALX_PCIERR_INST_TX_RATE_MASK 0xFUL +#define ALX_PCIERR_INST_TX_RATE_SHIFT 4 +#define ALX_PCIERR_INST_RX_RATE_MASK 0xFUL +#define ALX_PCIERR_INST_RX_RATE_SHIFT 0 + +#define ALX_LPI_DECISN_TIMER 0x143C + +#define ALX_LPI_CTRL 0x1440 +#define ALX_LPI_CTRL_CHK_DA BIT(31) +#define ALX_LPI_CTRL_ENH_TO_MASK 0x1FFFUL +#define ALX_LPI_CTRL_ENH_TO_SHIFT 12 +#define ALX_LPI_CTRL_ENH_TH_MASK 0x1FUL +#define ALX_LPI_CTRL_ENH_TH_SHIFT 6 +#define ALX_LPI_CTRL_ENH_EN BIT(5) +#define ALX_LPI_CTRL_CHK_RX BIT(4) +#define ALX_LPI_CTRL_CHK_STATE BIT(3) +#define ALX_LPI_CTRL_GMII BIT(2) +#define ALX_LPI_CTRL_TO_PHY BIT(1) +#define ALX_LPI_CTRL_EN BIT(0) + +#define ALX_LPI_WAIT 0x1444 +#define ALX_LPI_WAIT_TIMER_MASK 0xFFFFUL +#define ALX_LPI_WAIT_TIMER_SHIFT 0 + +/* heart-beat, for swoi/cifs */ +#define ALX_HRTBT_VLAN 0x1450 +#define ALX_HRTBT_VLANID_MASK 0xFFFFUL +#define ALX_HRRBT_VLANID_SHIFT 0 + +#define ALX_HRTBT_CTRL 0x1454 +#define ALX_HRTBT_CTRL_EN BIT(31) +#define ALX_HRTBT_CTRL_PERIOD_MASK 0x3FUL +#define ALX_HRTBT_CTRL_PERIOD_SHIFT 25 +#define ALX_HRTBT_CTRL_HASVLAN BIT(24) +#define ALX_HRTBT_CTRL_HDRADDR_MASK 0xFFFUL +#define ALX_HRTBT_CTRL_HDRADDR_SHIFT 12 +#define ALX_HRTBT_CTRL_HDRADDRB0_MASK 0x7FFUL +#define ALX_HRTBT_CTRL_HDRADDRB0_SHIFT 13 +#define ALX_HRTBT_CTRL_PKT_FRAG BIT(12) +#define ALX_HRTBT_CTRL_PKTLEN_MASK 0xFFFUL +#define ALX_HRTBT_CTRL_PKTLEN_SHIFT 0 + +/* for B0+, bit[13..] for C0+ */ +#define ALX_HRTBT_EXT_CTRL 0x1AD0 +#define L1F_HRTBT_EXT_CTRL_PERIOD_HIGH_MASK 0x3FUL +#define L1F_HRTBT_EXT_CTRL_PERIOD_HIGH_SHIFT 24 +#define L1F_HRTBT_EXT_CTRL_SWOI_STARTUP_PKT_EN BIT(23) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_FRAGMENTED BIT(22) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_FRAGMENTED BIT(21) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_KEEPALIVE_EN BIT(20) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_HAS_VLAN BIT(19) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_IS_8023 BIT(18) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_IS_IPV6 BIT(17) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_KEEPALIVE_EN BIT(16) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_HAS_VLAN BIT(15) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_IS_8023 BIT(14) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_IS_IPV6 BIT(13) +#define ALX_HRTBT_EXT_CTRL_NS_EN BIT(12) +#define ALX_HRTBT_EXT_CTRL_FRAG_LEN_MASK 0xFFUL +#define ALX_HRTBT_EXT_CTRL_FRAG_LEN_SHIFT 4 +#define ALX_HRTBT_EXT_CTRL_IS_8023 BIT(3) +#define ALX_HRTBT_EXT_CTRL_IS_IPV6 BIT(2) +#define ALX_HRTBT_EXT_CTRL_WAKEUP_EN BIT(1) +#define ALX_HRTBT_EXT_CTRL_ARP_EN BIT(0) + +#define ALX_HRTBT_REM_IPV4_ADDR 0x1AD4 +#define ALX_HRTBT_HOST_IPV4_ADDR 0x1478 +#define ALX_HRTBT_REM_IPV6_ADDR3 0x1AD8 +#define ALX_HRTBT_REM_IPV6_ADDR2 0x1ADC +#define ALX_HRTBT_REM_IPV6_ADDR1 0x1AE0 +#define ALX_HRTBT_REM_IPV6_ADDR0 0x1AE4 + +/* 1B8C ~ 1B94 for C0+ */ +#define ALX_SWOI_ACER_CTRL 0x1B8C +#define ALX_SWOI_ORIG_ACK_NAK_EN BIT(20) +#define ALX_SWOI_ORIG_ACK_NAK_PKT_LEN_MASK 0XFFUL +#define ALX_SWOI_ORIG_ACK_NAK_PKT_LEN_SHIFT 12 +#define ALX_SWOI_ORIG_ACK_ADDR_MASK 0XFFFUL +#define ALX_SWOI_ORIG_ACK_ADDR_SHIFT 0 + +#define ALX_SWOI_IOAC_CTRL_2 0x1B90 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_FRAG_LEN_MASK 0xFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_FRAG_LEN_SHIFT 24 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_PKT_LEN_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_PKT_LEN_SHIFT 12 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_HDR_ADDR_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_HDR_ADDR_SHIFT 0 + +#define ALX_SWOI_IOAC_CTRL_3 0x1B94 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_FRAG_LEN_MASK 0xFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_FRAG_LEN_SHIFT 24 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_PKT_LEN_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_PKT_LEN_SHIFT 12 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_HDR_ADDR_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_HDR_ADDR_SHIFT 0 + +/*SWOI_HOST_IPV6_ADDR reuse reg1a60-1a6c, 1a70-1a7c, 1aa0-1aac, 1ab0-1abc.*/ +#define ALX_HRTBT_WAKEUP_PORT 0x1AE8 +#define ALX_HRTBT_WAKEUP_PORT_SRC_MASK 0xFFFFUL +#define ALX_HRTBT_WAKEUP_PORT_SRC_SHIFT 16 +#define ALX_HRTBT_WAKEUP_PORT_DEST_MASK 0xFFFFUL +#define ALX_HRTBT_WAKEUP_PORT_DEST_SHIFT 0 + +#define ALX_HRTBT_WAKEUP_DATA7 0x1AEC +#define ALX_HRTBT_WAKEUP_DATA6 0x1AF0 +#define ALX_HRTBT_WAKEUP_DATA5 0x1AF4 +#define ALX_HRTBT_WAKEUP_DATA4 0x1AF8 +#define ALX_HRTBT_WAKEUP_DATA3 0x1AFC +#define ALX_HRTBT_WAKEUP_DATA2 0x1B80 +#define ALX_HRTBT_WAKEUP_DATA1 0x1B84 +#define ALX_HRTBT_WAKEUP_DATA0 0x1B88 + +#define ALX_RXPARSE 0x1458 +#define ALX_RXPARSE_FLT6_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT6_L4_SHIFT 30 +#define ALX_RXPARSE_FLT6_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT6_L3_SHIFT 28 +#define ALX_RXPARSE_FLT5_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT5_L4_SHIFT 26 +#define ALX_RXPARSE_FLT5_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT5_L3_SHIFT 24 +#define ALX_RXPARSE_FLT4_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT4_L4_SHIFT 22 +#define ALX_RXPARSE_FLT4_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT4_L3_SHIFT 20 +#define ALX_RXPARSE_FLT3_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT3_L4_SHIFT 18 +#define ALX_RXPARSE_FLT3_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT3_L3_SHIFT 16 +#define ALX_RXPARSE_FLT2_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT2_L4_SHIFT 14 +#define ALX_RXPARSE_FLT2_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT2_L3_SHIFT 12 +#define ALX_RXPARSE_FLT1_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT1_L4_SHIFT 10 +#define ALX_RXPARSE_FLT1_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT1_L3_SHIFT 8 +#define ALX_RXPARSE_FLT6_EN BIT(5) +#define ALX_RXPARSE_FLT5_EN BIT(4) +#define ALX_RXPARSE_FLT4_EN BIT(3) +#define ALX_RXPARSE_FLT3_EN BIT(2) +#define ALX_RXPARSE_FLT2_EN BIT(1) +#define ALX_RXPARSE_FLT1_EN BIT(0) +#define ALX_RXPARSE_FLT_L4_UDP 0 +#define ALX_RXPARSE_FLT_L4_TCP 1 +#define ALX_RXPARSE_FLT_L4_BOTH 2 +#define ALX_RXPARSE_FLT_L4_NONE 3 +#define ALX_RXPARSE_FLT_L3_IPV6 0 +#define ALX_RXPARSE_FLT_L3_IPV4 1 +#define ALX_RXPARSE_FLT_L3_BOTH 2 + +/* Terodo support */ +#define ALX_TRD_CTRL 0x145C +#define ALX_TRD_CTRL_EN BIT(31) +#define ALX_TRD_CTRL_BUBBLE_WAKE_EN BIT(30) +#define ALX_TRD_CTRL_PREFIX_CMP_HW BIT(28) +#define ALX_TRD_CTRL_RSHDR_ADDR_MASK 0xFFFUL +#define ALX_TRD_CTRL_RSHDR_ADDR_SHIFT 16 +#define ALX_TRD_CTRL_SINTV_MAX_MASK 0xFFUL +#define ALX_TRD_CTRL_SINTV_MAX_SHIFT 8 +#define ALX_TRD_CTRL_SINTV_MIN_MASK 0xFFUL +#define ALX_TRD_CTRL_SINTV_MIN_SHIFT 0 + +#define ALX_TRD_RS 0x1460 +#define ALX_TRD_RS_SZ_MASK 0xFFFUL +#define ALX_TRD_RS_SZ_SHIFT 20 +#define ALX_TRD_RS_NONCE_OFS_MASK 0xFFFUL +#define ALX_TRD_RS_NONCE_OFS_SHIFT 8 +#define ALX_TRD_RS_SEQ_OFS_MASK 0xFFUL +#define ALX_TRD_RS_SEQ_OFS_SHIFT 0 + +#define ALX_TRD_SRV_IP4 0x1464 + +#define ALX_TRD_CLNT_EXTNL_IP4 0x1468 + +#define ALX_TRD_PORT 0x146C +#define ALX_TRD_PORT_CLNT_EXTNL_MASK 0xFFFFUL +#define ALX_TRD_PORT_CLNT_EXTNL_SHIFT 16 +#define ALX_TRD_PORT_SRV_MASK 0xFFFFUL +#define ALX_TRD_PORT_SRV_SHIFT 0 + +#define ALX_TRD_PREFIX 0x1470 + +#define ALX_TRD_BUBBLE_DA_IP4 0x1478 + +#define ALX_TRD_BUBBLE_DA_PORT 0x147C + +/* for B0 */ +#define ALX_IDLE_DECISN_TIMER 0x1474 +/* 1ms */ +#define ALX_IDLE_DECISN_TIMER_DEF 0x400 + + +#define ALX_MAC_CTRL 0x1480 +#define ALX_MAC_CTRL_FAST_PAUSE BIT(31) +#define ALX_MAC_CTRL_WOLSPED_SWEN BIT(30) +/* bit29: 1:legacy(hi5b), 0:marvl(lo5b)*/ +#define ALX_MAC_CTRL_MHASH_ALG_HI5B BIT(29) +#define ALX_MAC_CTRL_SPAUSE_EN BIT(28) +#define ALX_MAC_CTRL_DBG_EN BIT(27) +#define ALX_MAC_CTRL_BRD_EN BIT(26) +#define ALX_MAC_CTRL_MULTIALL_EN BIT(25) +#define ALX_MAC_CTRL_RX_XSUM_EN BIT(24) +#define ALX_MAC_CTRL_THUGE BIT(23) +#define ALX_MAC_CTRL_MBOF BIT(22) +#define ALX_MAC_CTRL_SPEED_MASK 0x3UL +#define ALX_MAC_CTRL_SPEED_SHIFT 20 +#define ALX_MAC_CTRL_SPEED_10_100 1 +#define ALX_MAC_CTRL_SPEED_1000 2 +#define ALX_MAC_CTRL_SIMR BIT(19) +#define ALX_MAC_CTRL_SSTCT BIT(17) +#define ALX_MAC_CTRL_TPAUSE BIT(16) +#define ALX_MAC_CTRL_PROMISC_EN BIT(15) +#define ALX_MAC_CTRL_VLANSTRIP BIT(14) +#define ALX_MAC_CTRL_PRMBLEN_MASK 0xFUL +#define ALX_MAC_CTRL_PRMBLEN_SHIFT 10 +#define ALX_MAC_CTRL_RHUGE_EN BIT(9) +#define ALX_MAC_CTRL_FLCHK BIT(8) +#define ALX_MAC_CTRL_PCRCE BIT(7) +#define ALX_MAC_CTRL_CRCE BIT(6) +#define ALX_MAC_CTRL_FULLD BIT(5) +#define ALX_MAC_CTRL_LPBACK_EN BIT(4) +#define ALX_MAC_CTRL_RXFC_EN BIT(3) +#define ALX_MAC_CTRL_TXFC_EN BIT(2) +#define ALX_MAC_CTRL_RX_EN BIT(1) +#define ALX_MAC_CTRL_TX_EN BIT(0) + +#define ALX_GAP 0x1484 +#define ALX_GAP_IPGR2_MASK 0x7FUL +#define ALX_GAP_IPGR2_SHIFT 24 +#define ALX_GAP_IPGR1_MASK 0x7FUL +#define ALX_GAP_IPGR1_SHIFT 16 +#define ALX_GAP_MIN_IFG_MASK 0xFFUL +#define ALX_GAP_MIN_IFG_SHIFT 8 +#define ALX_GAP_IPGT_MASK 0x7FUL +#define ALX_GAP_IPGT_SHIFT 0 + +#define ALX_STAD0 0x1488 +#define ALX_STAD1 0x148C + +#define ALX_HASH_TBL0 0x1490 +#define ALX_HASH_TBL1 0x1494 + +#define ALX_HALFD 0x1498 +#define ALX_HALFD_JAM_IPG_MASK 0xFUL +#define ALX_HALFD_JAM_IPG_SHIFT 24 +#define ALX_HALFD_ABEBT_MASK 0xFUL +#define ALX_HALFD_ABEBT_SHIFT 20 +#define ALX_HALFD_ABEBE BIT(19) +#define ALX_HALFD_BPNB BIT(18) +#define ALX_HALFD_NOBO BIT(17) +#define ALX_HALFD_EDXSDFR BIT(16) +#define ALX_HALFD_RETRY_MASK 0xFUL +#define ALX_HALFD_RETRY_SHIFT 12 +#define ALX_HALFD_LCOL_MASK 0x3FFUL +#define ALX_HALFD_LCOL_SHIFT 0 + +#define ALX_MTU 0x149C +#define ALX_MTU_JUMBO_TH 1514 +#define ALX_MTU_STD_ALGN 1536 +#define ALX_MTU_MIN 64 + +#define ALX_SRAM0 0x1500 +#define ALX_SRAM_RFD_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RFD_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_RFD_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RFD_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM1 0x1510 +#define ALX_SRAM_RFD_LEN_MASK 0xFFFUL +#define ALX_SRAM_RFD_LEN_SHIFT 0 + +#define ALX_SRAM2 0x1518 +#define ALX_SRAM_TRD_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TRD_TAIL_ADDR_SHIFT 16 +#define ALX_SRMA_TRD_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TRD_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM3 0x151C +#define ALX_SRAM_TRD_LEN_MASK 0xFFFUL +#define ALX_SRAM_TRD_LEN_SHIFT 0 + +#define ALX_SRAM4 0x1520 +#define ALX_SRAM_RXF_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RXF_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_RXF_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RXF_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM5 0x1524 +#define ALX_SRAM_RXF_LEN_MASK 0xFFFUL +#define ALX_SRAM_RXF_LEN_SHIFT 0 +#define ALX_SRAM_RXF_LEN_8K (8*1024) + +#define ALX_SRAM6 0x1528 +#define ALX_SRAM_TXF_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TXF_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_TXF_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TXF_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM7 0x152C +#define ALX_SRAM_TXF_LEN_MASK 0xFFFUL +#define ALX_SRAM_TXF_LEN_SHIFT 0 + +#define ALX_SRAM8 0x1530 +#define ALX_SRAM_PATTERN_ADDR_MASK 0xFFFUL +#define ALX_SRAM_PATTERN_ADDR_SHIFT 16 +#define ALX_SRAM_TSO_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TSO_ADDR_SHIFT 0 + +#define ALX_SRAM9 0x1534 +#define ALX_SRAM_LOAD_PTR BIT(0) + +#define ALX_RX_BASE_ADDR_HI 0x1540 + +#define ALX_TX_BASE_ADDR_HI 0x1544 + +#define ALX_RFD_ADDR_LO 0x1550 +#define ALX_RFD_RING_SZ 0x1560 +#define ALX_RFD_BUF_SZ 0x1564 +#define ALX_RFD_BUF_SZ_MASK 0xFFFFUL +#define ALX_RFD_BUF_SZ_SHIFT 0 + +#define ALX_RRD_ADDR_LO 0x1568 +#define ALX_RRD_RING_SZ 0x1578 +#define ALX_RRD_RING_SZ_MASK 0xFFFUL +#define ALX_RRD_RING_SZ_SHIFT 0 + +/* pri3: highest, pri0: lowest */ +#define ALX_TPD_PRI3_ADDR_LO 0x14E4 +#define ALX_TPD_PRI2_ADDR_LO 0x14E0 +#define ALX_TPD_PRI1_ADDR_LO 0x157C +#define ALX_TPD_PRI0_ADDR_LO 0x1580 + +/* producer index is 16bit */ +#define ALX_TPD_PRI3_PIDX 0x1618 +#define ALX_TPD_PRI2_PIDX 0x161A +#define ALX_TPD_PRI1_PIDX 0x15F0 +#define ALX_TPD_PRI0_PIDX 0x15F2 + +/* consumer index is 16bit */ +#define ALX_TPD_PRI3_CIDX 0x161C +#define ALX_TPD_PRI2_CIDX 0x161E +#define ALX_TPD_PRI1_CIDX 0x15F4 +#define ALX_TPD_PRI0_CIDX 0x15F6 + +#define ALX_TPD_RING_SZ 0x1584 +#define ALX_TPD_RING_SZ_MASK 0xFFFFUL +#define ALX_TPD_RING_SZ_SHIFT 0 + +#define ALX_CMB_ADDR_LO 0x1588 + +#define ALX_TXQ0 0x1590 +#define ALX_TXQ0_TXF_BURST_PREF_MASK 0xFFFFUL +#define ALX_TXQ0_TXF_BURST_PREF_SHIFT 16 +#define ALX_TXQ_TXF_BURST_PREF_DEF 0x200 +#define ALX_TXQ0_PEDING_CLR BIT(8) +#define ALX_TXQ0_LSO_8023_EN BIT(7) +#define ALX_TXQ0_MODE_ENHANCE BIT(6) +#define ALX_TXQ0_EN BIT(5) +#define ALX_TXQ0_SUPT_IPOPT BIT(4) +#define ALX_TXQ0_TPD_BURSTPREF_MASK 0xFUL +#define ALX_TXQ0_TPD_BURSTPREF_SHIFT 0 +#define ALX_TXQ_TPD_BURSTPREF_DEF 5 + +#define ALX_TXQ1 0x1594 +/* bit11: drop large packet, len > (rfd buf) */ +#define ALX_TXQ1_ERRLGPKT_DROP_EN BIT(11) +/* bit[9:0]: 8bytes unit */ +#define ALX_TXQ1_JUMBO_TSOTHR_MASK 0x7FFUL +#define ALX_TXQ1_JUMBO_TSOTHR_SHIFT 0 +#define ALX_TXQ1_JUMBO_TSO_TH (7*1024) + +/* L1 entrance control */ +#define ALX_TXQ2 0x1598 +#define ALX_TXQ2_BURST_EN BIT(31) +#define ALX_TXQ2_BURST_HI_WM_MASK 0xFFFUL +#define ALX_TXQ2_BURST_HI_WM_SHIFT 16 +#define ALX_TXQ2_BURST_LO_WM_MASK 0xFFFUL +#define ALX_TXQ2_BURST_LO_WM_SHIFT 0 + +#define ALX_RXQ0 0x15A0 +#define ALX_RXQ0_EN BIT(31) +#define ALX_RXQ0_CUT_THRU_EN BIT(30) +#define ALX_RXQ0_RSS_HASH_EN BIT(29) +/* bit28: 0:goto Q0, 1:as table */ +#define ALX_RXQ0_NON_IP_QTBL BIT(28) +#define ALX_RXQ0_RSS_MODE_MASK 0x3UL +#define ALX_RXQ0_RSS_MODE_SHIFT 26 +#define ALX_RXQ0_RSS_MODE_DIS 0 +#define ALX_RXQ0_RSS_MODE_SQSI 1 +#define ALX_RXQ0_RSS_MODE_MQSI 2 +#define ALX_RXQ0_RSS_MODE_MQMI 3 +#define ALX_RXQ0_NUM_RFD_PREF_MASK 0x3FUL +#define ALX_RXQ0_NUM_RFD_PREF_SHIFT 20 +#define ALX_RXQ0_NUM_RFD_PREF_DEF 8 +#define ALX_RXQ0_IDT_TBL_SIZE_MASK 0x1FFUL +#define ALX_RXQ0_IDT_TBL_SIZE_SHIFT 8 +#define ALX_RXQ0_IDT_TBL_SIZE_DEF 0x100 +#define ALX_RXQ0_IPV6_PARSE_EN BIT(7) +#define ALX_RXQ0_RSS_HSTYP_MASK 0xFUL +#define ALX_RXQ0_RSS_HSTYP_SHIFT 2 +#define ALX_RXQ0_RSS_HSTYP_IPV6_TCP_EN BIT(5) +#define ALX_RXQ0_RSS_HSTYP_IPV6_EN BIT(4) +#define ALX_RXQ0_RSS_HSTYP_IPV4_TCP_EN BIT(3) +#define ALX_RXQ0_RSS_HSTYP_IPV4_EN BIT(2) +#define ALX_RXQ0_RSS_HSTYP_ALL (\ + ALX_RXQ0_RSS_HSTYP_IPV6_TCP_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV4_TCP_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV6_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV4_EN) +#define ALX_RXQ0_ASPM_THRESH_MASK 0x3UL +#define ALX_RXQ0_ASPM_THRESH_SHIFT 0 +#define ALX_RXQ0_ASPM_THRESH_NO 0 +#define ALX_RXQ0_ASPM_THRESH_1M 1 +#define ALX_RXQ0_ASPM_THRESH_10M 2 +#define ALX_RXQ0_ASPM_THRESH_100M 3 + +#define ALX_RXQ1 0x15A4 +/* 32bytes unit */ +#define ALX_RXQ1_JUMBO_LKAH_MASK 0xFUL +#define ALX_RXQ1_JUMBO_LKAH_SHIFT 12 +#define ALX_RXQ1_RFD_PREF_DOWN_MASK 0x3FUL +#define ALX_RXQ1_RFD_PREF_DOWN_SHIFT 6 +#define ALX_RXQ1_RFD_PREF_UP_MASK 0x3FUL +#define ALX_RXQ1_RFD_PREF_UP_SHIFT 0 + +#define ALX_RXQ2 0x15A8 +/* XOFF: USED SRAM LOWER THAN IT, THEN NOTIFY THE PEER TO SEND AGAIN */ +#define ALX_RXQ2_RXF_XOFF_THRESH_MASK 0xFFFUL +#define ALX_RXQ2_RXF_XOFF_THRESH_SHIFT 16 +#define ALX_RXQ2_RXF_XON_THRESH_MASK 0xFFFUL +#define ALX_RXQ2_RXF_XON_THRESH_SHIFT 0 +/* Size = tx-packet(1522) + IPG(12) + SOF(8) + 64(Pause) + IPG(12) + SOF(8) + + * rx-packet(1522) + delay-of-link(64) + * = 3212. + */ +#define ALX_RXQ2_RXF_FLOW_CTRL_RSVD 3212 + +#define ALX_RXQ3 0x15AC +#define ALX_RXQ3_RXD_TIMER_MASK 0x7FFFUL +#define ALX_RXQ3_RXD_TIMER_SHIFT 16 +/* 8bytes unit */ +#define ALX_RXQ3_RXD_THRESH_MASK 0xFFFUL +#define ALX_RXQ3_RXD_THRESH_SHIFT 0 + +#define ALX_DMA 0x15C0 +#define ALX_DMA_SMB_NOW BIT(31) +#define ALX_DMA_WPEND_CLR BIT(30) +#define ALX_DMA_RPEND_CLR BIT(29) +#define ALX_DMA_WSRAM_RDCTRL BIT(28) +#define ALX_DMA_RCHNL_SEL_MASK 0x3UL +#define ALX_DMA_RCHNL_SEL_SHIFT 26 +#define ALX_DMA_RCHNL_SEL_1 0 +#define ALX_DMA_RCHNL_SEL_2 1 +#define ALX_DMA_RCHNL_SEL_3 2 +#define ALX_DMA_RCHNL_SEL_4 3 +#define ALX_DMA_SMB_EN BIT(21) +#define ALX_DMA_WDLY_CNT_MASK 0xFUL +#define ALX_DMA_WDLY_CNT_SHIFT 16 +#define ALX_DMA_WDLY_CNT_DEF 4 +#define ALX_DMA_RDLY_CNT_MASK 0x1FUL +#define ALX_DMA_RDLY_CNT_SHIFT 11 +#define ALX_DMA_RDLY_CNT_DEF 15 +/* bit10: 0:tpd with pri, 1: data */ +#define ALX_DMA_RREQ_PRI_DATA BIT(10) +#define ALX_DMA_WREQ_BLEN_MASK 0x7UL +#define ALX_DMA_WREQ_BLEN_SHIFT 7 +#define ALX_DMA_RREQ_BLEN_MASK 0x7UL +#define ALX_DMA_RREQ_BLEN_SHIFT 4 +#define ALX_DMA_PENDING_AUTO_RST BIT(3) +#define ALX_DMA_RORDER_MODE_MASK 0x7UL +#define ALX_DMA_RORDER_MODE_SHIFT 0 +#define ALX_DMA_RORDER_MODE_OUT 4 +#define ALX_DMA_RORDER_MODE_ENHANCE 2 +#define ALX_DMA_RORDER_MODE_IN 1 + +#define ALX_WOL0 0x14A0 +#define ALX_WOL0_PT7_MATCH BIT(31) +#define ALX_WOL0_PT6_MATCH BIT(30) +#define ALX_WOL0_PT5_MATCH BIT(29) +#define ALX_WOL0_PT4_MATCH BIT(28) +#define ALX_WOL0_PT3_MATCH BIT(27) +#define ALX_WOL0_PT2_MATCH BIT(26) +#define ALX_WOL0_PT1_MATCH BIT(25) +#define ALX_WOL0_PT0_MATCH BIT(24) +#define ALX_WOL0_PT7_EN BIT(23) +#define ALX_WOL0_PT6_EN BIT(22) +#define ALX_WOL0_PT5_EN BIT(21) +#define ALX_WOL0_PT4_EN BIT(20) +#define ALX_WOL0_PT3_EN BIT(19) +#define ALX_WOL0_PT2_EN BIT(18) +#define ALX_WOL0_PT1_EN BIT(17) +#define ALX_WOL0_PT0_EN BIT(16) +#define ALX_WOL0_IPV4_SYNC_EVT BIT(14) +#define ALX_WOL0_IPV6_SYNC_EVT BIT(13) +#define ALX_WOL0_LINK_EVT BIT(10) +#define ALX_WOL0_MAGIC_EVT BIT(9) +#define ALX_WOL0_PATTERN_EVT BIT(8) +#define ALX_WOL0_SWOI_EVT BIT(7) +#define ALX_WOL0_OOB_EN BIT(6) +#define ALX_WOL0_PME_LINK BIT(5) +#define ALX_WOL0_LINK_EN BIT(4) +#define ALX_WOL0_PME_MAGIC_EN BIT(3) +#define ALX_WOL0_MAGIC_EN BIT(2) +#define ALX_WOL0_PME_PATTERN_EN BIT(1) +#define ALX_WOL0_PATTERN_EN BIT(0) + +#define ALX_WOL1 0x14A4 +#define ALX_WOL1_PT3_LEN_MASK 0xFFUL +#define ALX_WOL1_PT3_LEN_SHIFT 24 +#define ALX_WOL1_PT2_LEN_MASK 0xFFUL +#define ALX_WOL1_PT2_LEN_SHIFT 16 +#define ALX_WOL1_PT1_LEN_MASK 0xFFUL +#define ALX_WOL1_PT1_LEN_SHIFT 8 +#define ALX_WOL1_PT0_LEN_MASK 0xFFUL +#define ALX_WOL1_PT0_LEN_SHIFT 0 + +#define ALX_WOL2 0x14A8 +#define ALX_WOL2_PT7_LEN_MASK 0xFFUL +#define ALX_WOL2_PT7_LEN_SHIFT 24 +#define ALX_WOL2_PT6_LEN_MASK 0xFFUL +#define ALX_WOL2_PT6_LEN_SHIFT 16 +#define ALX_WOL2_PT5_LEN_MASK 0xFFUL +#define ALX_WOL2_PT5_LEN_SHIFT 8 +#define ALX_WOL2_PT4_LEN_MASK 0xFFUL +#define ALX_WOL2_PT4_LEN_SHIFT 0 + +#define ALX_RFD_PIDX 0x15E0 +#define ALX_RFD_PIDX_MASK 0xFFFUL +#define ALX_RFD_PIDX_SHIFT 0 + +#define ALX_RFD_CIDX 0x15F8 +#define ALX_RFD_CIDX_MASK 0xFFFUL +#define ALX_RFD_CIDX_SHIFT 0 + +/* MIB */ +#define ALX_MIB_BASE 0x1700 +#define ALX_MIB_RX_OK (ALX_MIB_BASE + 0) +#define ALX_MIB_RX_BC (ALX_MIB_BASE + 4) +#define ALX_MIB_RX_MC (ALX_MIB_BASE + 8) +#define ALX_MIB_RX_PAUSE (ALX_MIB_BASE + 12) +#define ALX_MIB_RX_CTRL (ALX_MIB_BASE + 16) +#define ALX_MIB_RX_FCS (ALX_MIB_BASE + 20) +#define ALX_MIB_RX_LENERR (ALX_MIB_BASE + 24) +#define ALX_MIB_RX_BYTCNT (ALX_MIB_BASE + 28) +#define ALX_MIB_RX_RUNT (ALX_MIB_BASE + 32) +#define ALX_MIB_RX_FRAGMENT (ALX_MIB_BASE + 36) +#define ALX_MIB_RX_64B (ALX_MIB_BASE + 40) +#define ALX_MIB_RX_127B (ALX_MIB_BASE + 44) +#define ALX_MIB_RX_255B (ALX_MIB_BASE + 48) +#define ALX_MIB_RX_511B (ALX_MIB_BASE + 52) +#define ALX_MIB_RX_1023B (ALX_MIB_BASE + 56) +#define ALX_MIB_RX_1518B (ALX_MIB_BASE + 60) +#define ALX_MIB_RX_SZMAX (ALX_MIB_BASE + 64) +#define ALX_MIB_RX_OVSZ (ALX_MIB_BASE + 68) +#define ALX_MIB_RXF_OV (ALX_MIB_BASE + 72) +#define ALX_MIB_RRD_OV (ALX_MIB_BASE + 76) +#define ALX_MIB_RX_ALIGN (ALX_MIB_BASE + 80) +#define ALX_MIB_RX_BCCNT (ALX_MIB_BASE + 84) +#define ALX_MIB_RX_MCCNT (ALX_MIB_BASE + 88) +#define ALX_MIB_RX_ERRADDR (ALX_MIB_BASE + 92) +#define ALX_MIB_TX_OK (ALX_MIB_BASE + 96) +#define ALX_MIB_TX_BC (ALX_MIB_BASE + 100) +#define ALX_MIB_TX_MC (ALX_MIB_BASE + 104) +#define ALX_MIB_TX_PAUSE (ALX_MIB_BASE + 108) +#define ALX_MIB_TX_EXCDEFER (ALX_MIB_BASE + 112) +#define ALX_MIB_TX_CTRL (ALX_MIB_BASE + 116) +#define ALX_MIB_TX_DEFER (ALX_MIB_BASE + 120) +#define ALX_MIB_TX_BYTCNT (ALX_MIB_BASE + 124) +#define ALX_MIB_TX_64B (ALX_MIB_BASE + 128) +#define ALX_MIB_TX_127B (ALX_MIB_BASE + 132) +#define ALX_MIB_TX_255B (ALX_MIB_BASE + 136) +#define ALX_MIB_TX_511B (ALX_MIB_BASE + 140) +#define ALX_MIB_TX_1023B (ALX_MIB_BASE + 144) +#define ALX_MIB_TX_1518B (ALX_MIB_BASE + 148) +#define ALX_MIB_TX_SZMAX (ALX_MIB_BASE + 152) +#define ALX_MIB_TX_1COL (ALX_MIB_BASE + 156) +#define ALX_MIB_TX_2COL (ALX_MIB_BASE + 160) +#define ALX_MIB_TX_LATCOL (ALX_MIB_BASE + 164) +#define ALX_MIB_TX_ABRTCOL (ALX_MIB_BASE + 168) +#define ALX_MIB_TX_UNDRUN (ALX_MIB_BASE + 172) +#define ALX_MIB_TX_TRDBEOP (ALX_MIB_BASE + 176) +#define ALX_MIB_TX_LENERR (ALX_MIB_BASE + 180) +#define ALX_MIB_TX_TRUNC (ALX_MIB_BASE + 184) +#define ALX_MIB_TX_BCCNT (ALX_MIB_BASE + 188) +#define ALX_MIB_TX_MCCNT (ALX_MIB_BASE + 192) +#define ALX_MIB_UPDATE (ALX_MIB_BASE + 196) + +#define ALX_RX_STATS_BIN ALX_MIB_RX_OK +#define ALX_RX_STATS_END ALX_MIB_RX_ERRADDR +#define ALX_TX_STATS_BIN ALX_MIB_TX_OK +#define ALX_TX_STATS_END ALX_MIB_TX_MCCNT + +#define ALX_ISR 0x1600 +#define ALX_ISR_DIS BIT(31) +#define ALX_ISR_RX_Q7 BIT(30) +#define ALX_ISR_RX_Q6 BIT(29) +#define ALX_ISR_RX_Q5 BIT(28) +#define ALX_ISR_RX_Q4 BIT(27) +#define ALX_ISR_PCIE_LNKDOWN BIT(26) +#define ALX_ISR_PCIE_CERR BIT(25) +#define ALX_ISR_PCIE_NFERR BIT(24) +#define ALX_ISR_PCIE_FERR BIT(23) +#define ALX_ISR_PCIE_UR BIT(22) +#define ALX_ISR_MAC_TX BIT(21) +#define ALX_ISR_MAC_RX BIT(20) +#define ALX_ISR_RX_Q3 BIT(19) +#define ALX_ISR_RX_Q2 BIT(18) +#define ALX_ISR_RX_Q1 BIT(17) +#define ALX_ISR_RX_Q0 BIT(16) +#define ALX_ISR_TX_Q0 BIT(15) +#define ALX_ISR_TXQ_TO BIT(14) +#define ALX_ISR_PHY_LPW BIT(13) +#define ALX_ISR_PHY BIT(12) +#define ALX_ISR_TX_CREDIT BIT(11) +#define ALX_ISR_DMAW BIT(10) +#define ALX_ISR_DMAR BIT(9) +#define ALX_ISR_TXF_UR BIT(8) +#define ALX_ISR_TX_Q3 BIT(7) +#define ALX_ISR_TX_Q2 BIT(6) +#define ALX_ISR_TX_Q1 BIT(5) +#define ALX_ISR_RFD_UR BIT(4) +#define ALX_ISR_RXF_OV BIT(3) +#define ALX_ISR_MANU BIT(2) +#define ALX_ISR_TIMER BIT(1) +#define ALX_ISR_SMB BIT(0) + +#define ALX_IMR 0x1604 + +/* re-send assert msg if SW no response */ +#define ALX_INT_RETRIG 0x1608 +#define ALX_INT_RETRIG_TIMER_MASK 0xFFFFUL +#define ALX_INT_RETRIG_TIMER_SHIFT 0 +/* 40ms */ +#define ALX_INT_RETRIG_TO 20000 + +/* re-send deassert msg if SW no response */ +#define ALX_INT_DEASST_TIMER 0x1614 + +/* reg1620 used for sleep status */ +#define ALX_PATTERN_MASK 0x1620 +#define ALX_PATTERN_MASK_LEN 128 + + +#define ALX_FLT1_SRC_IP0 0x1A00 +#define ALX_FLT1_SRC_IP1 0x1A04 +#define ALX_FLT1_SRC_IP2 0x1A08 +#define ALX_FLT1_SRC_IP3 0x1A0C +#define ALX_FLT1_DST_IP0 0x1A10 +#define ALX_FLT1_DST_IP1 0x1A14 +#define ALX_FLT1_DST_IP2 0x1A18 +#define ALX_FLT1_DST_IP3 0x1A1C +#define ALX_FLT1_PORT 0x1A20 +#define ALX_FLT1_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT1_PORT_DST_SHIFT 16 +#define ALX_FLT1_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT1_PORT_SRC_SHIFT 0 + +#define ALX_FLT2_SRC_IP0 0x1A24 +#define ALX_FLT2_SRC_IP1 0x1A28 +#define ALX_FLT2_SRC_IP2 0x1A2C +#define ALX_FLT2_SRC_IP3 0x1A30 +#define ALX_FLT2_DST_IP0 0x1A34 +#define ALX_FLT2_DST_IP1 0x1A38 +#define ALX_FLT2_DST_IP2 0x1A40 +#define ALX_FLT2_DST_IP3 0x1A44 +#define ALX_FLT2_PORT 0x1A48 +#define ALX_FLT2_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT2_PORT_DST_SHIFT 16 +#define ALX_FLT2_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT2_PORT_SRC_SHIFT 0 + +#define ALX_FLT3_SRC_IP0 0x1A4C +#define ALX_FLT3_SRC_IP1 0x1A50 +#define ALX_FLT3_SRC_IP2 0x1A54 +#define ALX_FLT3_SRC_IP3 0x1A58 +#define ALX_FLT3_DST_IP0 0x1A5C +#define ALX_FLT3_DST_IP1 0x1A60 +#define ALX_FLT3_DST_IP2 0x1A64 +#define ALX_FLT3_DST_IP3 0x1A68 +#define ALX_FLT3_PORT 0x1A6C +#define ALX_FLT3_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT3_PORT_DST_SHIFT 16 +#define ALX_FLT3_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT3_PORT_SRC_SHIFT 0 + +#define ALX_FLT4_SRC_IP0 0x1A70 +#define ALX_FLT4_SRC_IP1 0x1A74 +#define ALX_FLT4_SRC_IP2 0x1A78 +#define ALX_FLT4_SRC_IP3 0x1A7C +#define ALX_FLT4_DST_IP0 0x1A80 +#define ALX_FLT4_DST_IP1 0x1A84 +#define ALX_FLT4_DST_IP2 0x1A88 +#define ALX_FLT4_DST_IP3 0x1A8C +#define ALX_FLT4_PORT 0x1A90 +#define ALX_FLT4_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT4_PORT_DST_SHIFT 16 +#define ALX_FLT4_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT4_PORT_SRC_SHIFT 0 + +#define ALX_FLT5_SRC_IP0 0x1A94 +#define ALX_FLT5_SRC_IP1 0x1A98 +#define ALX_FLT5_SRC_IP2 0x1A9C +#define ALX_FLT5_SRC_IP3 0x1AA0 +#define ALX_FLT5_DST_IP0 0x1AA4 +#define ALX_FLT5_DST_IP1 0x1AA8 +#define ALX_FLT5_DST_IP2 0x1AAC +#define ALX_FLT5_DST_IP3 0x1AB0 +#define ALX_FLT5_PORT 0x1AB4 +#define ALX_FLT5_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT5_PORT_DST_SHIFT 16 +#define ALX_FLT5_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT5_PORT_SRC_SHIFT 0 + +#define ALX_FLT6_SRC_IP0 0x1AB8 +#define ALX_FLT6_SRC_IP1 0x1ABC +#define ALX_FLT6_SRC_IP2 0x1AC0 +#define ALX_FLT6_SRC_IP3 0x1AC8 +#define ALX_FLT6_DST_IP0 0x1620 +#define ALX_FLT6_DST_IP1 0x1624 +#define ALX_FLT6_DST_IP2 0x1628 +#define ALX_FLT6_DST_IP3 0x162C +#define ALX_FLT6_PORT 0x1630 +#define ALX_FLT6_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT6_PORT_DST_SHIFT 16 +#define ALX_FLT6_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT6_PORT_SRC_SHIFT 0 + +#define ALX_FLTCTRL 0x1634 +#define ALX_FLTCTRL_PSTHR_TIMER_MASK 0xFFUL +#define ALX_FLTCTRL_PSTHR_TIMER_SHIFT 24 +#define ALX_FLTCTRL_CHK_DSTPRT6 BIT(23) +#define ALX_FLTCTRL_CHK_SRCPRT6 BIT(22) +#define ALX_FLTCTRL_CHK_DSTIP6 BIT(21) +#define ALX_FLTCTRL_CHK_SRCIP6 BIT(20) +#define ALX_FLTCTRL_CHK_DSTPRT5 BIT(19) +#define ALX_FLTCTRL_CHK_SRCPRT5 BIT(18) +#define ALX_FLTCTRL_CHK_DSTIP5 BIT(17) +#define ALX_FLTCTRL_CHK_SRCIP5 BIT(16) +#define ALX_FLTCTRL_CHK_DSTPRT4 BIT(15) +#define ALX_FLTCTRL_CHK_SRCPRT4 BIT(14) +#define ALX_FLTCTRL_CHK_DSTIP4 BIT(13) +#define ALX_FLTCTRL_CHK_SRCIP4 BIT(12) +#define ALX_FLTCTRL_CHK_DSTPRT3 BIT(11) +#define ALX_FLTCTRL_CHK_SRCPRT3 BIT(10) +#define ALX_FLTCTRL_CHK_DSTIP3 BIT(9) +#define ALX_FLTCTRL_CHK_SRCIP3 BIT(8) +#define ALX_FLTCTRL_CHK_DSTPRT2 BIT(7) +#define ALX_FLTCTRL_CHK_SRCPRT2 BIT(6) +#define ALX_FLTCTRL_CHK_DSTIP2 BIT(5) +#define ALX_FLTCTRL_CHK_SRCIP2 BIT(4) +#define ALX_FLTCTRL_CHK_DSTPRT1 BIT(3) +#define ALX_FLTCTRL_CHK_SRCPRT1 BIT(2) +#define ALX_FLTCTRL_CHK_DSTIP1 BIT(1) +#define ALX_FLTCTRL_CHK_SRCIP1 BIT(0) + +#define ALX_DROP_ALG1 0x1638 +#define ALX_DROP_ALG1_BWCHGVAL_MASK 0xFFFFFUL +#define ALX_DROP_ALG1_BWCHGVAL_SHIFT 12 +/* bit11: 0:3.125%, 1:6.25% */ +#define ALX_DROP_ALG1_BWCHGSCL_6 BIT(11) +#define ALX_DROP_ALG1_ASUR_LWQ_EN BIT(10) +#define ALX_DROP_ALG1_BWCHGVAL_EN BIT(9) +#define ALX_DROP_ALG1_BWCHGSCL_EN BIT(8) +#define ALX_DROP_ALG1_PSTHR_AUTO BIT(7) +#define ALX_DROP_ALG1_MIN_PSTHR_MASK 0x3UL +#define ALX_DROP_ALG1_MIN_PSTHR_SHIFT 5 +#define ALX_DROP_ALG1_MIN_PSTHR_1_16 0 +#define ALX_DROP_ALG1_MIN_PSTHR_1_8 1 +#define ALX_DROP_ALG1_MIN_PSTHR_1_4 2 +#define ALX_DROP_ALG1_MIN_PSTHR_1_2 3 +#define ALX_DROP_ALG1_PSCL_MASK 0x3UL +#define ALX_DROP_ALG1_PSCL_SHIFT 3 +#define ALX_DROP_ALG1_PSCL_1_4 0 +#define ALX_DROP_ALG1_PSCL_1_8 1 +#define ALX_DROP_ALG1_PSCL_1_16 2 +#define ALX_DROP_ALG1_PSCL_1_32 3 +#define ALX_DROP_ALG1_TIMESLOT_MASK 0x7UL +#define ALX_DROP_ALG1_TIMESLOT_SHIFT 0 +#define ALX_DROP_ALG1_TIMESLOT_4MS 0 +#define ALX_DROP_ALG1_TIMESLOT_8MS 1 +#define ALX_DROP_ALG1_TIMESLOT_16MS 2 +#define ALX_DROP_ALG1_TIMESLOT_32MS 3 +#define ALX_DROP_ALG1_TIMESLOT_64MS 4 +#define ALX_DROP_ALG1_TIMESLOT_128MS 5 +#define ALX_DROP_ALG1_TIMESLOT_256MS 6 +#define ALX_DROP_ALG1_TIMESLOT_512MS 7 + +#define ALX_DROP_ALG2 0x163C +#define ALX_DROP_ALG2_SMPLTIME_MASK 0xFUL +#define ALX_DROP_ALG2_SMPLTIME_SHIFT 24 +#define ALX_DROP_ALG2_LWQBW_MASK 0xFFFFFFUL +#define ALX_DROP_ALG2_LWQBW_SHIFT 0 + +#define ALX_SMB_TIMER 0x15C4 + +#define ALX_TINT_TPD_THRSHLD 0x15C8 + +#define ALX_TINT_TIMER 0x15CC + +#define ALX_CLK_GATE 0x1814 +/* bit[8:6]: for B0+ */ +#define ALX_CLK_GATE_125M_SW_DIS_CR BIT(8) +#define ALX_CLK_GATE_125M_SW_AZ BIT(7) +#define ALX_CLK_GATE_125M_SW_IDLE BIT(6) +#define ALX_CLK_GATE_RXMAC BIT(5) +#define ALX_CLK_GATE_TXMAC BIT(4) +#define ALX_CLK_GATE_RXQ BIT(3) +#define ALX_CLK_GATE_TXQ BIT(2) +#define ALX_CLK_GATE_DMAR BIT(1) +#define ALX_CLK_GATE_DMAW BIT(0) +#define ALX_CLK_GATE_ALL_A0 (\ + ALX_CLK_GATE_RXMAC |\ + ALX_CLK_GATE_TXMAC |\ + ALX_CLK_GATE_RXQ |\ + ALX_CLK_GATE_TXQ |\ + ALX_CLK_GATE_DMAR |\ + ALX_CLK_GATE_DMAW) +#define ALX_CLK_GATE_ALL_B0 (\ + ALX_CLK_GATE_ALL_A0) + +/* PORST affect */ +#define ALX_BTROM_CFG 0x1800 + +/* interop between drivers */ +#define ALX_DRV 0x1804 +#define ALX_DRV_PHY_AUTO BIT(28) +#define ALX_DRV_PHY_1000 BIT(27) +#define ALX_DRV_PHY_100 BIT(26) +#define ALX_DRV_PHY_10 BIT(25) +#define ALX_DRV_PHY_DUPLEX BIT(24) +/* bit23: adv Pause */ +#define ALX_DRV_PHY_PAUSE BIT(23) +/* bit22: adv Asym Pause */ +#define ALX_DRV_PHY_APAUSE BIT(22) +/* bit21: 1:en AZ */ +#define ALX_DRV_PHY_EEE BIT(21) +#define ALX_DRV_PHY_MASK 0xFFUL +#define ALX_DRV_PHY_SHIFT 21 +#define ALX_DRV_PHY_UNKNOWN 0 +#define ALX_DRV_DISABLE BIT(18) +#define ALX_DRV_WOLS5_EN BIT(17) +#define ALX_DRV_WOLS5_BIOS_EN BIT(16) +#define ALX_DRV_AZ_EN BIT(12) +#define ALX_DRV_WOLPATTERN_EN BIT(11) +#define ALX_DRV_WOLLINKUP_EN BIT(10) +#define ALX_DRV_WOLMAGIC_EN BIT(9) +#define ALX_DRV_WOLCAP_BIOS_EN BIT(8) +#define ALX_DRV_ASPM_SPD1000LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD1000LMT_SHIFT 4 +#define ALX_DRV_ASPM_SPD1000LMT_100M 0 +#define ALX_DRV_ASPM_SPD1000LMT_NO 1 +#define ALX_DRV_ASPM_SPD1000LMT_1M 2 +#define ALX_DRV_ASPM_SPD1000LMT_10M 3 +#define ALX_DRV_ASPM_SPD100LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD100LMT_SHIFT 2 +#define ALX_DRV_ASPM_SPD100LMT_1M 0 +#define ALX_DRV_ASPM_SPD100LMT_10M 1 +#define ALX_DRV_ASPM_SPD100LMT_100M 2 +#define ALX_DRV_ASPM_SPD100LMT_NO 3 +#define ALX_DRV_ASPM_SPD10LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD10LMT_SHIFT 0 +#define ALX_DRV_ASPM_SPD10LMT_1M 0 +#define ALX_DRV_ASPM_SPD10LMT_10M 1 +#define ALX_DRV_ASPM_SPD10LMT_100M 2 +#define ALX_DRV_ASPM_SPD10LMT_NO 3 + +/* flag of phy inited */ +#define ALX_PHY_INITED 0x003F + +/* PERST affect */ +#define ALX_DRV_ERR1 0x1808 +#define ALX_DRV_ERR1_GEN BIT(31) +#define ALX_DRV_ERR1_NOR BIT(30) +#define ALX_DRV_ERR1_TRUNC BIT(29) +#define ALX_DRV_ERR1_RES BIT(28) +#define ALX_DRV_ERR1_INTFATAL BIT(27) +#define ALX_DRV_ERR1_TXQPEND BIT(26) +#define ALX_DRV_ERR1_DMAW BIT(25) +#define ALX_DRV_ERR1_DMAR BIT(24) +#define ALX_DRV_ERR1_PCIELNKDWN BIT(23) +#define ALX_DRV_ERR1_PKTSIZE BIT(22) +#define ALX_DRV_ERR1_FIFOFUL BIT(21) +#define ALX_DRV_ERR1_RFDUR BIT(20) +#define ALX_DRV_ERR1_RRDSI BIT(19) +#define ALX_DRV_ERR1_UPDATE BIT(18) + +#define ALX_DRV_ERR2 0x180C + +#define ALX_DBG_ADDR 0x1900 +#define ALX_DBG_DATA 0x1904 + +#define ALX_SYNC_IPV4_SA 0x1A00 +#define ALX_SYNC_IPV4_DA 0x1A04 + +#define ALX_SYNC_V4PORT 0x1A08 +#define ALX_SYNC_V4PORT_DST_MASK 0xFFFFUL +#define ALX_SYNC_V4PORT_DST_SHIFT 16 +#define ALX_SYNC_V4PORT_SRC_MASK 0xFFFFUL +#define ALX_SYNC_V4PORT_SRC_SHIFT 0 + +#define ALX_SYNC_IPV6_SA0 0x1A0C +#define ALX_SYNC_IPV6_SA1 0x1A10 +#define ALX_SYNC_IPV6_SA2 0x1A14 +#define ALX_SYNC_IPV6_SA3 0x1A18 +#define ALX_SYNC_IPV6_DA0 0x1A1C +#define ALX_SYNC_IPV6_DA1 0x1A20 +#define ALX_SYNC_IPV6_DA2 0x1A24 +#define ALX_SYNC_IPV6_DA3 0x1A28 + +#define ALX_SYNC_V6PORT 0x1A2C +#define ALX_SYNC_V6PORT_DST_MASK 0xFFFFUL +#define ALX_SYNC_V6PORT_DST_SHIFT 16 +#define ALX_SYNC_V6PORT_SRC_MASK 0xFFFFUL +#define ALX_SYNC_V6PORT_SRC_SHIFT 0 + +#define ALX_ARP_REMOTE_IPV4 0x1A30 +#define ALX_ARP_HOST_IPV4 0x1A34 +#define ALX_ARP_MAC0 0x1A38 +#define ALX_ARP_MAC1 0x1A3C + +#define ALX_1ST_REMOTE_IPV6_0 0x1A40 +#define ALX_1ST_REMOTE_IPV6_1 0x1A44 +#define ALX_1ST_REMOTE_IPV6_2 0x1A48 +#define ALX_1ST_REMOTE_IPV6_3 0x1A4C + +#define ALX_1ST_SN_IPV6_0 0x1A50 +#define ALX_1ST_SN_IPV6_1 0x1A54 +#define ALX_1ST_SN_IPV6_2 0x1A58 +#define ALX_1ST_SN_IPV6_3 0x1A5C + +#define ALX_1ST_TAR_IPV6_1_0 0x1A60 +#define ALX_1ST_TAR_IPV6_1_1 0x1A64 +#define ALX_1ST_TAR_IPV6_1_2 0x1A68 +#define ALX_1ST_TAR_IPV6_1_3 0x1A6C +#define ALX_1ST_TAR_IPV6_2_0 0x1A70 +#define ALX_1ST_TAR_IPV6_2_1 0x1A74 +#define ALX_1ST_TAR_IPV6_2_2 0x1A78 +#define ALX_1ST_TAR_IPV6_2_3 0x1A7C + +#define ALX_2ND_REMOTE_IPV6_0 0x1A80 +#define ALX_2ND_REMOTE_IPV6_1 0x1A84 +#define ALX_2ND_REMOTE_IPV6_2 0x1A88 +#define ALX_2ND_REMOTE_IPV6_3 0x1A8C + +#define ALX_2ND_SN_IPV6_0 0x1A90 +#define ALX_2ND_SN_IPV6_1 0x1A94 +#define ALX_2ND_SN_IPV6_2 0x1A98 +#define ALX_2ND_SN_IPV6_3 0x1A9C + +#define ALX_2ND_TAR_IPV6_1_0 0x1AA0 +#define ALX_2ND_TAR_IPV6_1_1 0x1AA4 +#define ALX_2ND_TAR_IPV6_1_2 0x1AA8 +#define ALX_2ND_TAR_IPV6_1_3 0x1AAC +#define ALX_2ND_TAR_IPV6_2_0 0x1AB0 +#define ALX_2ND_TAR_IPV6_2_1 0x1AB4 +#define ALX_2ND_TAR_IPV6_2_2 0x1AB8 +#define ALX_2ND_TAR_IPV6_2_3 0x1ABC + +#define ALX_1ST_NS_MAC0 0x1AC0 +#define ALX_1ST_NS_MAC1 0x1AC4 + +#define ALX_2ND_NS_MAC0 0x1AC8 +#define ALX_2ND_NS_MAC1 0x1ACC + +#define ALX_PMOFLD 0x144C +/* bit[11:10]: for B0+ */ +#define ALX_PMOFLD_ECMA_IGNR_FRG_SSSR BIT(11) +#define ALX_PMOFLD_ARP_CNFLCT_WAKEUP BIT(10) +#define ALX_PMOFLD_MULTI_SOLD BIT(9) +#define ALX_PMOFLD_ICMP_XSUM BIT(8) +#define ALX_PMOFLD_GARP_REPLY BIT(7) +#define ALX_PMOFLD_SYNCV6_ANY BIT(6) +#define ALX_PMOFLD_SYNCV4_ANY BIT(5) +#define ALX_PMOFLD_BY_HW BIT(4) +#define ALX_PMOFLD_NS_EN BIT(3) +#define ALX_PMOFLD_ARP_EN BIT(2) +#define ALX_PMOFLD_SYNCV6_EN BIT(1) +#define ALX_PMOFLD_SYNCV4_EN BIT(0) + +/* reg 1830 ~ 186C for C0+, 16 bit map patterns and wake packet detection */ +#define ALX_WOL_CTRL2 0x1830 +#define ALX_WOL_CTRL2_DATA_STORE BIT(3) +#define ALX_WOL_CTRL2_PTRN_EVT BIT(2) +#define ALX_WOL_CTRL2_PME_PTRN_EN BIT(1) +#define ALX_WOL_CTRL2_PTRN_EN BIT(0) + +#define ALX_WOL_CTRL3 0x1834 +#define ALX_WOL_CTRL3_PTRN_ADDR_MASK 0xFFFFFUL +#define ALX_WOL_CTRL3_PTRN_ADDR_SHIFT 0 + +#define ALX_WOL_CTRL4 0x1838 +#define ALX_WOL_CTRL4_PT15_MATCH BIT(31) +#define ALX_WOL_CTRL4_PT14_MATCH BIT(30) +#define ALX_WOL_CTRL4_PT13_MATCH BIT(29) +#define ALX_WOL_CTRL4_PT12_MATCH BIT(28) +#define ALX_WOL_CTRL4_PT11_MATCH BIT(27) +#define ALX_WOL_CTRL4_PT10_MATCH BIT(26) +#define ALX_WOL_CTRL4_PT9_MATCH BIT(25) +#define ALX_WOL_CTRL4_PT8_MATCH BIT(24) +#define ALX_WOL_CTRL4_PT7_MATCH BIT(23) +#define ALX_WOL_CTRL4_PT6_MATCH BIT(22) +#define ALX_WOL_CTRL4_PT5_MATCH BIT(21) +#define ALX_WOL_CTRL4_PT4_MATCH BIT(20) +#define ALX_WOL_CTRL4_PT3_MATCH BIT(19) +#define ALX_WOL_CTRL4_PT2_MATCH BIT(18) +#define ALX_WOL_CTRL4_PT1_MATCH BIT(17) +#define ALX_WOL_CTRL4_PT0_MATCH BIT(16) +#define ALX_WOL_CTRL4_PT15_EN BIT(15) +#define ALX_WOL_CTRL4_PT14_EN BIT(14) +#define ALX_WOL_CTRL4_PT13_EN BIT(13) +#define ALX_WOL_CTRL4_PT12_EN BIT(12) +#define ALX_WOL_CTRL4_PT11_EN BIT(11) +#define ALX_WOL_CTRL4_PT10_EN BIT(10) +#define ALX_WOL_CTRL4_PT9_EN BIT(9) +#define ALX_WOL_CTRL4_PT8_EN BIT(8) +#define ALX_WOL_CTRL4_PT7_EN BIT(7) +#define ALX_WOL_CTRL4_PT6_EN BIT(6) +#define ALX_WOL_CTRL4_PT5_EN BIT(5) +#define ALX_WOL_CTRL4_PT4_EN BIT(4) +#define ALX_WOL_CTRL4_PT3_EN BIT(3) +#define ALX_WOL_CTRL4_PT2_EN BIT(2) +#define ALX_WOL_CTRL4_PT1_EN BIT(1) +#define ALX_WOL_CTRL4_PT0_EN BIT(0) + +#define ALX_WOL_CTRL5 0x183C +#define ALX_WOL_CTRL5_PT3_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT3_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT2_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT2_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT1_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT1_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT0_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT0_LEN_SHIFT 0 + +#define ALX_WOL_CTRL6 0x1840 +#define ALX_WOL_CTRL5_PT7_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT7_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT6_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT6_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT5_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT5_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT4_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT4_LEN_SHIFT 0 + +#define ALX_WOL_CTRL7 0x1844 +#define ALX_WOL_CTRL5_PT11_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT11_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT10_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT10_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT9_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT9_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT8_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT8_LEN_SHIFT 0 + +#define ALX_WOL_CTRL8 0x1848 +#define ALX_WOL_CTRL5_PT15_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT15_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT14_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT14_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT13_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT13_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT12_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT12_LEN_SHIFT 0 + +#define ALX_ACER_FIXED_PTN0 0x1850 +#define ALX_ACER_FIXED_PTN0_MASK 0xFFFFFFFFUL +#define ALX_ACER_FIXED_PTN0_SHIFT 0 + +#define ALX_ACER_FIXED_PTN1 0x1854 +#define ALX_ACER_FIXED_PTN1_MASK 0xFFFFUL +#define ALX_ACER_FIXED_PTN1_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM0 0x1858 +#define ALX_ACER_RANDOM_NUM0_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM0_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM1 0x185C +#define ALX_ACER_RANDOM_NUM1_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM1_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM2 0x1860 +#define ALX_ACER_RANDOM_NUM2_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM2_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM3 0x1864 +#define ALX_ACER_RANDOM_NUM3_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM3_SHIFT 0 + +#define ALX_ACER_MAGIC 0x1868 +#define ALX_ACER_MAGIC_EN BIT(31) +#define ALX_ACER_MAGIC_PME_EN BIT(30) +#define ALX_ACER_MAGIC_MATCH BIT(29) +#define ALX_ACER_MAGIC_FF_CHECK BIT(10) +#define ALX_ACER_MAGIC_RAN_LEN_MASK 0x1FUL +#define ALX_ACER_MAGIC_RAN_LEN_SHIFT 5 +#define ALX_ACER_MAGIC_FIX_LEN_MASK 0x1FUL +#define ALX_ACER_MAGIC_FIX_LEN_SHIFT 0 + +#define ALX_ACER_TIMER 0x186C +#define ALX_ACER_TIMER_EN BIT(31) +#define ALX_ACER_TIMER_PME_EN BIT(30) +#define ALX_ACER_TIMER_MATCH BIT(29) +#define ALX_ACER_TIMER_THRES_MASK 0x1FFFFUL +#define ALX_ACER_TIMER_THRES_SHIFT 0 +#define ALX_ACER_TIMER_THRES_DEF 1 + +/* RSS definitions */ +#define ALX_RSS_KEY0 0x14B0 +#define ALX_RSS_KEY1 0x14B4 +#define ALX_RSS_KEY2 0x14B8 +#define ALX_RSS_KEY3 0x14BC +#define ALX_RSS_KEY4 0x14C0 +#define ALX_RSS_KEY5 0x14C4 +#define ALX_RSS_KEY6 0x14C8 +#define ALX_RSS_KEY7 0x14CC +#define ALX_RSS_KEY8 0x14D0 +#define ALX_RSS_KEY9 0x14D4 + +#define ALX_RSS_IDT_TBL0 0x1B00 +#define ALX_RSS_IDT_TBL1 0x1B04 +#define ALX_RSS_IDT_TBL2 0x1B08 +#define ALX_RSS_IDT_TBL3 0x1B0C +#define ALX_RSS_IDT_TBL4 0x1B10 +#define ALX_RSS_IDT_TBL5 0x1B14 +#define ALX_RSS_IDT_TBL6 0x1B18 +#define ALX_RSS_IDT_TBL7 0x1B1C +#define ALX_RSS_IDT_TBL8 0x1B20 +#define ALX_RSS_IDT_TBL9 0x1B24 +#define ALX_RSS_IDT_TBL10 0x1B28 +#define ALX_RSS_IDT_TBL11 0x1B2C +#define ALX_RSS_IDT_TBL12 0x1B30 +#define ALX_RSS_IDT_TBL13 0x1B34 +#define ALX_RSS_IDT_TBL14 0x1B38 +#define ALX_RSS_IDT_TBL15 0x1B3C +#define ALX_RSS_IDT_TBL16 0x1B40 +#define ALX_RSS_IDT_TBL17 0x1B44 +#define ALX_RSS_IDT_TBL18 0x1B48 +#define ALX_RSS_IDT_TBL19 0x1B4C +#define ALX_RSS_IDT_TBL20 0x1B50 +#define ALX_RSS_IDT_TBL21 0x1B54 +#define ALX_RSS_IDT_TBL22 0x1B58 +#define ALX_RSS_IDT_TBL23 0x1B5C +#define ALX_RSS_IDT_TBL24 0x1B60 +#define ALX_RSS_IDT_TBL25 0x1B64 +#define ALX_RSS_IDT_TBL26 0x1B68 +#define ALX_RSS_IDT_TBL27 0x1B6C +#define ALX_RSS_IDT_TBL28 0x1B70 +#define ALX_RSS_IDT_TBL29 0x1B74 +#define ALX_RSS_IDT_TBL30 0x1B78 +#define ALX_RSS_IDT_TBL31 0x1B7C + +#define ALX_RSS_HASH_VAL 0x15B0 +#define ALX_RSS_HASH_FLAG 0x15B4 + +#define ALX_RSS_BASE_CPU_NUM 0x15B8 + +#define ALX_MSI_MAP_TBL1 0x15D0 +#define ALX_MSI_MAP_TBL1_ALERT_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_ALERT_SHIFT 28 +#define ALX_MSI_MAP_TBL1_TIMER_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TIMER_SHIFT 24 +#define ALX_MSI_MAP_TBL1_TXQ1_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TXQ1_SHIFT 20 +#define ALX_MSI_MAP_TBL1_TXQ0_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TXQ0_SHIFT 16 +#define ALX_MSI_MAP_TBL1_RXQ3_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ3_SHIFT 12 +#define ALX_MSI_MAP_TBL1_RXQ2_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ2_SHIFT 8 +#define ALX_MSI_MAP_TBL1_RXQ1_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ1_SHIFT 4 +#define ALX_MSI_MAP_TBL1_RXQ0_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ0_SHIFT 0 + +#define ALX_MSI_MAP_TBL2 0x15D8 +#define ALX_MSI_MAP_TBL2_PHY_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_PHY_SHIFT 28 +#define ALX_MSI_MAP_TBL2_SMB_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_SMB_SHIFT 24 +#define ALX_MSI_MAP_TBL2_TXQ3_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_TXQ3_SHIFT 20 +#define ALX_MSI_MAP_TBL2_TXQ2_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_TXQ2_SHIFT 16 +#define ALX_MSI_MAP_TBL2_RXQ7_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ7_SHIFT 12 +#define ALX_MSI_MAP_TBL2_RXQ6_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ6_SHIFT 8 +#define ALX_MSI_MAP_TBL2_RXQ5_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ5_SHIFT 4 +#define ALX_MSI_MAP_TBL2_RXQ4_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ4_SHIFT 0 + +#define ALX_MSI_ID_MAP 0x15D4 +#define ALX_MSI_ID_MAP_RXQ7 BIT(30) +#define ALX_MSI_ID_MAP_RXQ6 BIT(29) +#define ALX_MSI_ID_MAP_RXQ5 BIT(28) +#define ALX_MSI_ID_MAP_RXQ4 BIT(27) +/* bit26: 0:common,1:timer */ +#define ALX_MSI_ID_MAP_PCIELNKDW BIT(26) +#define ALX_MSI_ID_MAP_PCIECERR BIT(25) +#define ALX_MSI_ID_MAP_PCIENFERR BIT(24) +#define ALX_MSI_ID_MAP_PCIEFERR BIT(23) +#define ALX_MSI_ID_MAP_PCIEUR BIT(22) +#define ALX_MSI_ID_MAP_MACTX BIT(21) +#define ALX_MSI_ID_MAP_MACRX BIT(20) +#define ALX_MSI_ID_MAP_RXQ3 BIT(19) +#define ALX_MSI_ID_MAP_RXQ2 BIT(18) +#define ALX_MSI_ID_MAP_RXQ1 BIT(17) +#define ALX_MSI_ID_MAP_RXQ0 BIT(16) +#define ALX_MSI_ID_MAP_TXQ0 BIT(15) +#define ALX_MSI_ID_MAP_TXQTO BIT(14) +#define ALX_MSI_ID_MAP_LPW BIT(13) +#define ALX_MSI_ID_MAP_PHY BIT(12) +#define ALX_MSI_ID_MAP_TXCREDIT BIT(11) +#define ALX_MSI_ID_MAP_DMAW BIT(10) +#define ALX_MSI_ID_MAP_DMAR BIT(9) +#define ALX_MSI_ID_MAP_TXFUR BIT(8) +#define ALX_MSI_ID_MAP_TXQ3 BIT(7) +#define ALX_MSI_ID_MAP_TXQ2 BIT(6) +#define ALX_MSI_ID_MAP_TXQ1 BIT(5) +#define ALX_MSI_ID_MAP_RFDUR BIT(4) +#define ALX_MSI_ID_MAP_RXFOV BIT(3) +#define ALX_MSI_ID_MAP_MANU BIT(2) +#define ALX_MSI_ID_MAP_TIMER BIT(1) +#define ALX_MSI_ID_MAP_SMB BIT(0) + +#define ALX_MSI_RETRANS_TIMER 0x1920 +/* bit16: 1:line,0:standard */ +#define ALX_MSI_MASK_SEL_LINE BIT(16) +#define ALX_MSI_RETRANS_TM_MASK 0xFFFFUL +#define ALX_MSI_RETRANS_TM_SHIFT 0 + +#define ALX_CR_DMA_CTRL 0x1930 +#define ALX_CR_DMA_CTRL_PRI BIT(22) +#define ALX_CR_DMA_CTRL_RRDRXD_JOINT BIT(21) +#define ALX_CR_DMA_CTRL_BWCREDIT_MASK 0x3UL +#define ALX_CR_DMA_CTRL_BWCREDIT_SHIFT 19 +#define ALX_CR_DMA_CTRL_BWCREDIT_2KB 0 +#define ALX_CR_DMA_CTRL_BWCREDIT_1KB 1 +#define ALX_CR_DMA_CTRL_BWCREDIT_4KB 2 +#define ALX_CR_DMA_CTRL_BWCREDIT_8KB 3 +#define ALX_CR_DMA_CTRL_BW_EN BIT(18) +#define ALX_CR_DMA_CTRL_BW_RATIO_MASK 0x3UL +#define ALX_CR_DMA_CTRL_BW_RATIO_1_2 0 +#define ALX_CR_DMA_CTRL_BW_RATIO_1_4 1 +#define ALX_CR_DMA_CTRL_BW_RATIO_1_8 2 +#define ALX_CR_DMA_CTRL_BW_RATIO_2_1 3 +#define ALX_CR_DMA_CTRL_SOFT_RST BIT(11) +#define ALX_CR_DMA_CTRL_TXEARLY_EN BIT(10) +#define ALX_CR_DMA_CTRL_RXEARLY_EN BIT(9) +#define ALX_CR_DMA_CTRL_WEARLY_EN BIT(8) +#define ALX_CR_DMA_CTRL_RXTH_MASK 0xFUL +#define ALX_CR_DMA_CTRL_WTH_MASK 0xFUL + + +#define ALX_EFUSE_BIST 0x1934 +#define ALX_EFUSE_BIST_COL_MASK 0x3FUL +#define ALX_EFUSE_BIST_COL_SHIFT 24 +#define ALX_EFUSE_BIST_ROW_MASK 0x7FUL +#define ALX_EFUSE_BIST_ROW_SHIFT 12 +#define ALX_EFUSE_BIST_STEP_MASK 0xFUL +#define ALX_EFUSE_BIST_STEP_SHIFT 8 +#define ALX_EFUSE_BIST_PAT_MASK 0x7UL +#define ALX_EFUSE_BIST_PAT_SHIFT 4 +#define ALX_EFUSE_BIST_CRITICAL BIT(3) +#define ALX_EFUSE_BIST_FIXED BIT(2) +#define ALX_EFUSE_BIST_FAIL BIT(1) +#define ALX_EFUSE_BIST_NOW BIT(0) + +/* CR DMA ctrl */ + +/* TX QoS */ +#define ALX_WRR 0x1938 +#define ALX_WRR_PRI_MASK 0x3UL +#define ALX_WRR_PRI_SHIFT 29 +#define ALX_WRR_PRI_RESTRICT_ALL 0 +#define ALX_WRR_PRI_RESTRICT_HI 1 +#define ALX_WRR_PRI_RESTRICT_HI2 2 +#define ALX_WRR_PRI_RESTRICT_NONE 3 +#define ALX_WRR_PRI3_MASK 0x1FUL +#define ALX_WRR_PRI3_SHIFT 24 +#define ALX_WRR_PRI2_MASK 0x1FUL +#define ALX_WRR_PRI2_SHIFT 16 +#define ALX_WRR_PRI1_MASK 0x1FUL +#define ALX_WRR_PRI1_SHIFT 8 +#define ALX_WRR_PRI0_MASK 0x1FUL +#define ALX_WRR_PRI0_SHIFT 0 + +#define ALX_HQTPD 0x193C +#define ALX_HQTPD_BURST_EN BIT(31) +#define ALX_HQTPD_Q3_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q3_NUMPREF_SHIFT 8 +#define ALX_HQTPD_Q2_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q2_NUMPREF_SHIFT 4 +#define ALX_HQTPD_Q1_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q1_NUMPREF_SHIFT 0 + +#define ALX_CPUMAP1 0x19A0 +#define ALX_CPUMAP1_VCT7_MASK 0xFUL +#define ALX_CPUMAP1_VCT7_SHIFT 28 +#define ALX_CPUMAP1_VCT6_MASK 0xFUL +#define ALX_CPUMAP1_VCT6_SHIFT 24 +#define ALX_CPUMAP1_VCT5_MASK 0xFUL +#define ALX_CPUMAP1_VCT5_SHIFT 20 +#define ALX_CPUMAP1_VCT4_MASK 0xFUL +#define ALX_CPUMAP1_VCT4_SHIFT 16 +#define ALX_CPUMAP1_VCT3_MASK 0xFUL +#define ALX_CPUMAP1_VCT3_SHIFT 12 +#define ALX_CPUMAP1_VCT2_MASK 0xFUL +#define ALX_CPUMAP1_VCT2_SHIFT 8 +#define ALX_CPUMAP1_VCT1_MASK 0xFUL +#define ALX_CPUMAP1_VCT1_SHIFT 4 +#define ALX_CPUMAP1_VCT0_MASK 0xFUL +#define ALX_CPUMAP1_VCT0_SHIFT 0 + +#define ALX_CPUMAP2 0x19A4 +#define ALX_CPUMAP2_VCT15_MASK 0xFUL +#define ALX_CPUMAP2_VCT15_SHIFT 28 +#define ALX_CPUMAP2_VCT14_MASK 0xFUL +#define ALX_CPUMAP2_VCT14_SHIFT 24 +#define ALX_CPUMAP2_VCT13_MASK 0xFUL +#define ALX_CPUMAP2_VCT13_SHIFT 20 +#define ALX_CPUMAP2_VCT12_MASK 0xFUL +#define ALX_CPUMAP2_VCT12_SHIFT 16 +#define ALX_CPUMAP2_VCT11_MASK 0xFUL +#define ALX_CPUMAP2_VCT11_SHIFT 12 +#define ALX_CPUMAP2_VCT10_MASK 0xFUL +#define ALX_CPUMAP2_VCT10_SHIFT 8 +#define ALX_CPUMAP2_VCT9_MASK 0xFUL +#define ALX_CPUMAP2_VCT9_SHIFT 4 +#define ALX_CPUMAP2_VCT8_MASK 0xFUL +#define ALX_CPUMAP2_VCT8_SHIFT 0 + +#define ALX_MISC 0x19C0 +/* bit31: 0:vector,1:cpu */ +#define ALX_MISC_MODU BIT(31) +#define ALX_MISC_OVERCUR BIT(29) +#define ALX_MISC_PSWR_EN BIT(28) +#define ALX_MISC_PSW_CTRL_MASK 0xFUL +#define ALX_MISC_PSW_CTRL_SHIFT 24 +#define ALX_MISC_PSW_OCP_MASK 0x7UL +#define ALX_MISC_PSW_OCP_SHIFT 21 +#define ALX_MISC_PSW_OCP_DEF 0x7 +#define ALX_MISC_V18_HIGH BIT(20) +#define ALX_MISC_LPO_CTRL_MASK 0xFUL +#define ALX_MISC_LPO_CTRL_SHIFT 16 +#define ALX_MISC_ISO_EN BIT(12) +#define ALX_MISC_XSTANA_ALWAYS_ON BIT(11) +#define ALX_MISC_SYS25M_SEL_ADAPTIVE BIT(10) +#define ALX_MISC_SPEED_SIM BIT(9) +#define ALX_MISC_S1_LWP_EN BIT(8) +/* bit7: pcie/mac do pwsaving as phy in lpw state */ +#define ALX_MISC_MACLPW BIT(7) +#define ALX_MISC_125M_SW BIT(6) +#define ALX_MISC_INTNLOSC_OFF_EN BIT(5) +/* bit4: 0:chipset,1:crystle */ +#define ALX_MISC_EXTN25M_SEL BIT(4) +#define ALX_MISC_INTNLOSC_OPEN BIT(3) +#define ALX_MISC_SMBUS_AT_LED BIT(2) +#define ALX_MISC_PPS_AT_LED_MASK 0x3UL +#define ALX_MISC_PPS_AT_LED_SHIFT 0 +#define ALX_MISC_PPS_AT_LED_ACT 1 +#define ALX_MISC_PPS_AT_LED_10_100 2 +#define ALX_MISC_PPS_AT_LED_1000 3 + +#define ALX_MISC1 0x19C4 +#define ALX_MSC1_BLK_CRASPM_REQ BIT(15) + +#define ALX_MSIC2 0x19C8 +#define ALX_MSIC2_CALB_START BIT(0) + +#define ALX_MISC3 0x19CC +/* bit1: 1:Software control 25M */ +#define ALX_MISC3_25M_BY_SW BIT(1) +/* bit0: 25M switch to intnl OSC */ +#define ALX_MISC3_25M_NOTO_INTNL BIT(0) + +/* MSIX tbl in memory space */ +#define ALX_MSIX_ENTRY_BASE 0x2000 + +/***************************** IO mapping registers ***************************/ +#define ALX_IO_ADDR 0x00 +#define ALX_IO_DATA 0x04 +/* same as reg1400 */ +#define ALX_IO_MASTER 0x08 +/* same as reg1480 */ +#define ALX_IO_MAC_CTRL 0x0C +/* same as reg1600 */ +#define ALX_IO_ISR 0x10 +/* same as reg 1604 */ +#define ALX_IO_IMR 0x14 +/* word, same as reg15F0 */ +#define ALX_IO_TPD_PRI1_PIDX 0x18 +/* word, same as reg15F2 */ +#define ALX_IO_TPD_PRI0_PIDX 0x1A +/* word, same as reg15F4 */ +#define ALX_IO_TPD_PRI1_CIDX 0x1C +/* word, same as reg15F6 */ +#define ALX_IO_TPD_PRI0_CIDX 0x1E +/* word, same as reg15E0 */ +#define ALX_IO_RFD_PIDX 0x20 +/* word, same as reg15F8 */ +#define ALX_IO_RFD_CIDX 0x30 +/* same as reg1414 */ +#define ALX_IO_MDIO 0x38 +/* same as reg140C */ +#define ALX_IO_PHY_CTRL 0x3C + + +/********************* PHY regs definition ***************************/ + +/* Autoneg Advertisement Register */ +#define ALX_ADVERTISE_SPEED_MASK 0x01E0 +#define ALX_ADVERTISE_DEFAULT_CAP 0x1DE0 + +/* 1000BASE-T Control Register (0x9) */ +#define ALX_GIGA_CR_1000T_HD_CAPS 0x0100 +#define ALX_GIGA_CR_1000T_FD_CAPS 0x0200 +#define ALX_GIGA_CR_1000T_REPEATER_DTE 0x0400 + +#define ALX_GIGA_CR_1000T_MS_VALUE 0x0800 + +#define ALX_GIGA_CR_1000T_MS_ENABLE 0x1000 + +#define ALX_GIGA_CR_1000T_TEST_MODE_NORMAL 0x0000 +#define ALX_GIGA_CR_1000T_TEST_MODE_1 0x2000 +#define ALX_GIGA_CR_1000T_TEST_MODE_2 0x4000 +#define ALX_GIGA_CR_1000T_TEST_MODE_3 0x6000 +#define ALX_GIGA_CR_1000T_TEST_MODE_4 0x8000 +#define ALX_GIGA_CR_1000T_SPEED_MASK 0x0300 +#define ALX_GIGA_CR_1000T_DEFAULT_CAP 0x0300 + +/* 1000BASE-T Status Register */ +#define ALX_MII_GIGA_SR 0x0A + +/* PHY Specific Status Register */ +#define ALX_MII_GIGA_PSSR 0x11 +#define ALX_GIGA_PSSR_FC_RXEN 0x0004 +#define ALX_GIGA_PSSR_FC_TXEN 0x0008 +#define ALX_GIGA_PSSR_SPD_DPLX_RESOLVED 0x0800 +#define ALX_GIGA_PSSR_DPLX 0x2000 +#define ALX_GIGA_PSSR_SPEED 0xC000 +#define ALX_GIGA_PSSR_10MBS 0x0000 +#define ALX_GIGA_PSSR_100MBS 0x4000 +#define ALX_GIGA_PSSR_1000MBS 0x8000 + +/* PHY Interrupt Enable Register */ +#define ALX_MII_IER 0x12 +#define ALX_IER_LINK_UP 0x0400 +#define ALX_IER_LINK_DOWN 0x0800 + +/* PHY Interrupt Status Register */ +#define ALX_MII_ISR 0x13 +#define ALX_ISR_LINK_UP 0x0400 +#define ALX_ISR_LINK_DOWN 0x0800 + +/* Cable-Detect-Test Control Register */ +#define ALX_MII_CDTC 0x16 +/* self clear */ +#define ALX_CDTC_EN 1 +#define ALX_CDTC_PAIR_MASK 0x3U +#define ALX_CDTC_PAIR_SHIFT 8 + + +/* Cable-Detect-Test Status Register */ +#define ALX_MII_CDTS 0x1C +#define ALX_CDTS_STATUS_MASK 0x3U +#define ALX_CDTS_STATUS_SHIFT 8 +#define ALX_CDTS_STATUS_NORMAL 0 +#define ALX_CDTS_STATUS_SHORT 1 +#define ALX_CDTS_STATUS_OPEN 2 +#define ALX_CDTS_STATUS_INVALID 3 + +#define ALX_MII_DBG_ADDR 0x1D +#define ALX_MII_DBG_DATA 0x1E + +/***************************** debug port *************************************/ + +#define ALX_MIIDBG_ANACTRL 0x00 +#define ALX_ANACTRL_CLK125M_DELAY_EN 0x8000 +#define ALX_ANACTRL_VCO_FAST 0x4000 +#define ALX_ANACTRL_VCO_SLOW 0x2000 +#define ALX_ANACTRL_AFE_MODE_EN 0x1000 +#define ALX_ANACTRL_LCKDET_PHY 0x0800 +#define ALX_ANACTRL_LCKDET_EN 0x0400 +#define ALX_ANACTRL_OEN_125M 0x0200 +#define ALX_ANACTRL_HBIAS_EN 0x0100 +#define ALX_ANACTRL_HB_EN 0x0080 +#define ALX_ANACTRL_SEL_HSP 0x0040 +#define ALX_ANACTRL_CLASSA_EN 0x0020 +#define ALX_ANACTRL_MANUSWON_SWR_MASK 0x3U +#define ALX_ANACTRL_MANUSWON_SWR_SHIFT 2 +#define ALX_ANACTRL_MANUSWON_SWR_2V 0 +#define ALX_ANACTRL_MANUSWON_SWR_1P9V 1 +#define ALX_ANACTRL_MANUSWON_SWR_1P8V 2 +#define ALX_ANACTRL_MANUSWON_SWR_1P7V 3 +#define ALX_ANACTRL_MANUSWON_BW3_4M 0x0002 +#define ALX_ANACTRL_RESTART_CAL 0x0001 +#define ALX_ANACTRL_DEF 0x02EF + + +#define ALX_MIIDBG_SYSMODCTRL 0x04 +#define ALX_SYSMODCTRL_IECHOADJ_PFMH_PHY 0x8000 +#define ALX_SYSMODCTRL_IECHOADJ_BIASGEN 0x4000 +#define ALX_SYSMODCTRL_IECHOADJ_PFML_PHY 0x2000 +#define ALX_SYSMODCTRL_IECHOADJ_PS_MASK 0x3U +#define ALX_SYSMODCTRL_IECHOADJ_PS_SHIFT 10 +#define ALX_SYSMODCTRL_IECHOADJ_PS_40 3 +#define ALX_SYSMODCTRL_IECHOADJ_PS_20 2 +#define ALX_SYSMODCTRL_IECHOADJ_PS_0 1 +#define ALX_SYSMODCTRL_IECHOADJ_10BT_100MV 0x0040 +#define ALX_SYSMODCTRL_IECHOADJ_HLFAP_MASK 0x3U +#define ALX_SYSMODCTRL_IECHOADJ_HLFAP_SHIFT 4 +#define ALX_SYSMODCTRL_IECHOADJ_VDFULBW 0x0008 +#define ALX_SYSMODCTRL_IECHOADJ_VDBIASHLF 0x0004 +#define ALX_SYSMODCTRL_IECHOADJ_VDAMPHLF 0x0002 +#define ALX_SYSMODCTRL_IECHOADJ_VDLANSW 0x0001 +/* en half bias */ +#define ALX_SYSMODCTRL_IECHOADJ_DEF 0xBB8B + + +#define ALX_MIIDBG_SRDSYSMOD 0x05 +#define ALX_SRDSYSMOD_LCKDET_EN 0x2000 +#define ALX_SRDSYSMOD_PLL_EN 0x0800 +#define ALX_SRDSYSMOD_SEL_HSP 0x0400 +#define ALX_SRDSYSMOD_HLFTXDR 0x0200 +#define ALX_SRDSYSMOD_TXCLK_DELAY_EN 0x0100 +#define ALX_SRDSYSMOD_TXELECIDLE 0x0080 +#define ALX_SRDSYSMOD_DEEMP_EN 0x0040 +#define ALX_SRDSYSMOD_MS_PAD 0x0004 +#define ALX_SRDSYSMOD_CDR_ADC_VLTG 0x0002 +#define ALX_SRDSYSMOD_CDR_DAC_1MA 0x0001 +#define ALX_SRDSYSMOD_DEF 0x2C46 + + +#define ALX_MIIDBG_HIBNEG 0x0B +#define ALX_HIBNEG_PSHIB_EN 0x8000 +#define ALX_HIBNEG_WAKE_BOTH 0x4000 +#define ALX_HIBNEG_ONOFF_ANACHG_SUDEN 0x2000 +#define ALX_HIBNEG_HIB_PULSE 0x1000 +#define ALX_HIBNEG_GATE_25M_EN 0x0800 +#define ALX_HIBNEG_RST_80U 0x0400 +#define ALX_HIBNEG_RST_TIMER_MASK 0x3U +#define ALX_HIBNEG_RST_TIMER_SHIFT 8 +#define ALX_HIBNEG_GTX_CLK_DELAY_MASK 0x3U +#define ALX_HIBNEG_GTX_CLK_DELAY_SHIFT 5 +#define ALX_HIBNEG_BYPSS_BRKTIMER 0x0010 +#define ALX_HIBNEG_DEF 0xBC40 +#define ALX_HIBNEG_NOHIB (\ +ALX_HIBNEG_DEF & ~(ALX_HIBNEG_PSHIB_EN | ALX_HIBNEG_HIB_PULSE)) + +#define ALX_MIIDBG_TST10BTCFG 0x12 +#define ALX_TST10BTCFG_INTV_TIMER_MASK 0x3U +#define ALX_TST10BTCFG_INTV_TIMER_SHIFT 14 +#define ALX_TST10BTCFG_TRIGER_TIMER_MASK 0x3U +#define ALX_TST10BTCFG_TRIGER_TIMER_SHIFT 12 +#define ALX_TST10BTCFG_DIV_MAN_MLT3_EN 0x0800 +#define ALX_TST10BTCFG_OFF_DAC_IDLE 0x0400 +#define ALX_TST10BTCFG_LPBK_DEEP 0x0004 +#define ALX_TST10BTCFG_DEF 0x4C04 + +#define ALX_MIIDBG_AZ_ANADECT 0x15 +#define ALX_AZ_ANADECT_10BTRX_TH 0x8000 +#define ALX_AZ_ANADECT_BOTH_01CHNL 0x4000 +#define ALX_AZ_ANADECT_INTV_MASK 0x3FU +#define ALX_AZ_ANADECT_INTV_SHIFT 8 +#define ALX_AZ_ANADECT_THRESH_MASK 0xFU +#define ALX_AZ_ANADECT_THRESH_SHIFT 4 +#define ALX_AZ_ANADECT_CHNL_MASK 0xFU +#define ALX_AZ_ANADECT_CHNL_SHIFT 0 +#define ALX_AZ_ANADECT_DEF 0x3220 +#define ALX_AZ_ANADECT_LONG 0x3210 + +#define ALX_MIIDBG_MSE16DB 0x18 +#define ALX_MSE16DB_UP 0x05EA +#define ALX_MSE16DB_DOWN 0x02EA + +#define ALX_MIIDBG_MSE20DB 0x1C +#define ALX_MSE20DB_TH_MASK 0x7F +#define ALX_MSE20DB_TH_SHIFT 2 +#define ALX_MSE20DB_TH_DEF 0x2E +#define ALX_MSE20DB_TH_HI 0x54 + +#define ALX_MIIDBG_AGC 0x23 +#define ALX_AGC_2_VGA_MASK 0x3FU +#define ALX_AGC_2_VGA_SHIFT 8 +#define ALX_AGC_LONG1G_LIMT 40 +#define ALX_AGC_LONG100M_LIMT 44 + +#define ALX_MIIDBG_LEGCYPS 0x29 +#define ALX_LEGCYPS_EN 0x8000 +#define ALX_LEGCYPS_DAC_AMP1000_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP1000_SHIFT 12 +#define ALX_LEGCYPS_DAC_AMP100_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP100_SHIFT 9 +#define ALX_LEGCYPS_DAC_AMP10_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP10_SHIFT 6 +#define ALX_LEGCYPS_UNPLUG_TIMER_MASK 0x7U +#define ALX_LEGCYPS_UNPLUG_TIMER_SHIFT 3 +#define ALX_LEGCYPS_UNPLUG_DECT_EN 0x0004 +#define ALX_LEGCYPS_ECNC_PS_EN 0x0001 +#define ALX_LEGCYPS_DEF 0x129D + +#define ALX_MIIDBG_TST100BTCFG 0x36 +#define ALX_TST100BTCFG_NORMAL_BW_EN 0x8000 +#define ALX_TST100BTCFG_BADLNK_BYPASS 0x4000 +#define ALX_TST100BTCFG_SHORTCABL_TH_MASK 0x3FU +#define ALX_TST100BTCFG_SHORTCABL_TH_SHIFT 8 +#define ALX_TST100BTCFG_LITCH_EN 0x0080 +#define ALX_TST100BTCFG_VLT_SW 0x0040 +#define ALX_TST100BTCFG_LONGCABL_TH_MASK 0x3FU +#define ALX_TST100BTCFG_LONGCABL_TH_SHIFT 0 +#define ALX_TST100BTCFG_DEF 0xE12C + +#define ALX_MIIDBG_GREENCFG 0x3B +#define ALX_GREENCFG_MSTPS_MSETH2_MASK 0xFFU +#define ALX_GREENCFG_MSTPS_MSETH2_SHIFT 8 +#define ALX_GREENCFG_MSTPS_MSETH1_MASK 0xFFU +#define ALX_GREENCFG_MSTPS_MSETH1_SHIFT 0 +#define ALX_GREENCFG_DEF 0x7078 + +#define ALX_MIIDBG_GREENCFG2 0x3D +#define ALX_GREENCFG2_BP_GREEN 0x8000 +#define ALX_GREENCFG2_GATE_DFSE_EN 0x0080 + + +/***************************** extension **************************************/ + +/******* dev 3 *********/ +#define ALX_MIIEXT_PCS 3 + +#define ALX_MIIEXT_CLDCTRL3 0x8003 +#define ALX_CLDCTRL3_BP_CABLE1TH_DET_GT 0x8000 +#define ALX_CLDCTRL3_AZ_DISAMP 0x1000 + +#define ALX_MIIEXT_CLDCTRL5 0x8005 +#define ALX_CLDCTRL5_BP_VD_HLFBIAS 0x4000 + +#define ALX_MIIEXT_CLDCTRL6 0x8006 +#define ALX_CLDCTRL6_CAB_LEN_MASK 0xFFU +#define ALX_CLDCTRL6_CAB_LEN_SHIFT 0 +#define ALX_CLDCTRL6_CAB_LEN_SHORT1G 116 +#define ALX_CLDCTRL6_CAB_LEN_SHORT100M 152 + +#define ALX_MIIEXT_CLDCTRL7 0x8007 +#define ALX_CLDCTRL7_VDHLF_BIAS_TH_MASK 0x7FU +#define ALX_CLDCTRL7_VDHLF_BIAS_TH_SHIFT 9 +#define ALX_CLDCTRL7_AFE_AZ_MASK 0x1FU +#define ALX_CLDCTRL7_AFE_AZ_SHIFT 4 +#define ALX_CLDCTRL7_SIDE_PEAK_TH_MASK 0xFU +#define ALX_CLDCTRL7_SIDE_PEAK_TH_SHIFT 0 +#define ALX_CLDCTRL7_DEF 0x6BF6 + +#define ALX_MIIEXT_AZCTRL 0x8008 +#define ALX_AZCTRL_SHORT_TH_MASK 0xFFU +#define ALX_AZCTRL_SHORT_TH_SHIFT 8 +#define ALX_AZCTRL_LONG_TH_MASK 0xFFU +#define ALX_AZCTRL_LONG_TH_SHIFT 0 +#define ALX_AZCTRL_DEF 0x1629 + +#define ALX_MIIEXT_AZCTRL2 0x8009 +#define ALX_AZCTRL2_WAKETRNING_MASK 0xFFU +#define ALX_AZCTRL2_WAKETRNING_SHIFT 8 +#define ALX_AZCTRL2_QUIET_TIMER_MASK 0x3U +#define ALX_AZCTRL2_QUIET_TIMER_SHIFT 6 +#define ALX_AZCTRL2_PHAS_JMP2 0x0010 +#define ALX_AZCTRL2_CLKTRCV_125MD16 0x0008 +#define ALX_AZCTRL2_GATE1000_EN 0x0004 +#define ALX_AZCTRL2_AVRG_FREQ 0x0002 +#define ALX_AZCTRL2_PHAS_JMP4 0x0001 +#define ALX_AZCTRL2_DEF 0x32C0 + +#define ALX_MIIEXT_AZCTRL6 0x800D + +#define ALX_MIIEXT_VDRVBIAS 0x8062 +#define ALX_VDRVBIAS_SEL_MASK 0x3U +#define ALX_VDRVBIAS_SEL_SHIFT 0 +#define ALX_VDRVBIAS_DEF 0x3 + +/********* dev 7 **********/ +#define ALX_MIIEXT_ANEG 7 + +#define ALX_MIIEXT_LOCAL_EEEADV 0x3C +#define ALX_LOCAL_EEEADV_1000BT 0x0004 +#define ALX_LOCAL_EEEADV_100BT 0x0002 + +#define ALX_MIIEXT_REMOTE_EEEADV 0x3D +#define ALX_REMOTE_EEEADV_1000BT 0x0004 +#define ALX_REMOTE_EEEADV_100BT 0x0002 + +#define ALX_MIIEXT_EEE_ANEG 0x8000 +#define ALX_EEE_ANEG_1000M 0x0004 +#define ALX_EEE_ANEG_100M 0x0002 + +#define ALX_MIIEXT_AFE 0x801A +#define ALX_AFE_10BT_100M_TH 0x0040 + +#define ALX_MIIEXT_S3DIG10 0x8023 +/* bit0: 1:bypass 10BT rx fifo, 0:riginal 10BT rx */ +#define ALX_MIIEXT_S3DIG10_SL 0x0001 +#define ALX_MIIEXT_S3DIG10_DEF 0 + +#define ALX_MIIEXT_NLP34 0x8025 +/* for 160m */ +#define ALX_MIIEXT_NLP34_DEF 0x1010 + +#define ALX_MIIEXT_NLP56 0x8026 +/* for 160m */ +#define ALX_MIIEXT_NLP56_DEF 0x1010 + +#define ALX_MIIEXT_NLP78 0x8027 +/* for 160m */ +#define ALX_MIIEXT_NLP78_160M_DEF 0x8D05 +#define ALX_MIIEXT_NLP78_120M_DEF 0x8A05 + +#endif --- linux-3.5.0.orig/ubuntu/alx/alx_ethtool.c +++ linux-3.5.0/ubuntu/alx/alx_ethtool.c @@ -0,0 +1,1802 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" +#include "alx.h" + + +static int alx_get_settings(struct net_device *netdev, + struct ethtool_cmd *ecmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + ecmd->supported = (SUPPORTED_10baseT_Half | + SUPPORTED_10baseT_Full | + SUPPORTED_100baseT_Half | + SUPPORTED_100baseT_Full | + SUPPORTED_Autoneg | + SUPPORTED_TP | + SUPPORTED_Pause); + if (ALX_CAP(hw, GIGA)) + ecmd->supported |= SUPPORTED_1000baseT_Full; + + ecmd->advertising = ADVERTISED_TP; + if (hw->adv_cfg & ADVERTISED_Autoneg) + ecmd->advertising |= hw->adv_cfg; + + ecmd->port = PORT_TP; + ecmd->phy_address = 0; + ecmd->autoneg = (hw->adv_cfg & ADVERTISED_Autoneg) ? + AUTONEG_ENABLE : AUTONEG_DISABLE; + ecmd->transceiver = XCVR_INTERNAL; + + if (hw->flowctrl & ALX_FC_ANEG && + hw->adv_cfg & ADVERTISED_Autoneg) { + if (hw->flowctrl & ALX_FC_RX) { + ecmd->advertising |= ADVERTISED_Pause; + if (!(hw->flowctrl & ALX_FC_TX)) + ecmd->advertising |= ADVERTISED_Asym_Pause; + } else if (hw->flowctrl & ALX_FC_TX) + ecmd->advertising |= ADVERTISED_Asym_Pause; + } + + if (hw->link_up) { + ethtool_cmd_speed_set(ecmd, hw->link_speed); + ecmd->duplex = hw->link_duplex == FULL_DUPLEX ? + DUPLEX_FULL : DUPLEX_HALF; + } else { + ethtool_cmd_speed_set(ecmd, -1); + ecmd->duplex = -1; + } + + return 0; +} + +static int alx_set_settings(struct net_device *netdev, + struct ethtool_cmd *ecmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u32 adv_cfg; + int err = 0; + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + if (ecmd->autoneg == AUTONEG_ENABLE) { + if (ecmd->advertising & ADVERTISED_1000baseT_Half) { + dev_warn(&adpt->pdev->dev, "1000M half is invalid\n"); + ALX_FLAG_CLEAR(adpt, RESETING); + return -EINVAL; + } + adv_cfg = ecmd->advertising | ADVERTISED_Autoneg; + } else { + int speed = ethtool_cmd_speed(ecmd); + + switch (speed + ecmd->duplex) { + case SPEED_10 + DUPLEX_HALF: + adv_cfg = ADVERTISED_10baseT_Half; + break; + case SPEED_10 + DUPLEX_FULL: + adv_cfg = ADVERTISED_10baseT_Full; + break; + case SPEED_100 + DUPLEX_HALF: + adv_cfg = ADVERTISED_100baseT_Half; + break; + case SPEED_100 + DUPLEX_FULL: + adv_cfg = ADVERTISED_100baseT_Full; + break; + default: + err = -EINVAL; + break; + } + } + + if (!err) { + hw->adv_cfg = adv_cfg; + err = alx_setup_speed_duplex(hw, adv_cfg, hw->flowctrl); + if (err) { + dev_warn(&adpt->pdev->dev, + "config PHY speed/duplex failed,err=%d\n", + err); + err = -EIO; + } + } + + ALX_FLAG_CLEAR(adpt, RESETING); + + return err; +} + +static void alx_get_pauseparam(struct net_device *netdev, + struct ethtool_pauseparam *pause) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + if (hw->flowctrl & ALX_FC_ANEG && + hw->adv_cfg & ADVERTISED_Autoneg) + pause->autoneg = AUTONEG_ENABLE; + else + pause->autoneg = AUTONEG_DISABLE; + + if (hw->flowctrl & ALX_FC_TX) + pause->tx_pause = 1; + else + pause->tx_pause = 0; + + if (hw->flowctrl & ALX_FC_RX) + pause->rx_pause = 1; + else + pause->rx_pause = 0; +} + + +static int alx_set_pauseparam(struct net_device *netdev, + struct ethtool_pauseparam *pause) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + int err = 0; + bool reconfig_phy = false; + u8 fc = 0; + + if (pause->tx_pause) + fc |= ALX_FC_TX; + if (pause->rx_pause) + fc |= ALX_FC_RX; + if (pause->autoneg) + fc |= ALX_FC_ANEG; + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + /* restart auto-neg for auto-mode */ + if (hw->adv_cfg & ADVERTISED_Autoneg) { + if (!((fc ^ hw->flowctrl) & ALX_FC_ANEG)) + reconfig_phy = true; + if (fc & hw->flowctrl & ALX_FC_ANEG && + (fc ^ hw->flowctrl) & (ALX_FC_RX | ALX_FC_TX)) + reconfig_phy = true; + } + + if (reconfig_phy) { + err = alx_setup_speed_duplex(hw, hw->adv_cfg, fc); + if (err) { + dev_warn(&adpt->pdev->dev, + "config PHY flow control failed,err=%d\n", + err); + err = -EIO; + } + } + + /* flow control on mac */ + if ((fc ^ hw->flowctrl) & (ALX_FC_RX | ALX_FC_TX)) + alx_cfg_mac_fc(hw, fc); + + hw->flowctrl = fc; + + ALX_FLAG_CLEAR(adpt, RESETING); + + return err; +} + +static u32 alx_get_msglevel(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + return adpt->msg_enable; +} + +static void alx_set_msglevel(struct net_device *netdev, u32 data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + adpt->msg_enable = data; +} + +static const u32 hw_regs[] = { + ALX_DEV_CAP, ALX_DEV_CTRL, ALX_LNK_CAP, ALX_LNK_CTRL, + ALX_UE_SVRT, ALX_EFLD, ALX_SLD, ALX_PPHY_MISC1, + ALX_PPHY_MISC2, ALX_PDLL_TRNS1, + ALX_TLEXTN_STATS, ALX_EFUSE_CTRL, ALX_EFUSE_DATA, ALX_SPI_OP1, + ALX_SPI_OP2, ALX_SPI_OP3, ALX_EF_CTRL, ALX_EF_ADDR, + ALX_EF_DATA, ALX_SPI_ID, + ALX_SPI_CFG_START, ALX_PMCTRL, ALX_LTSSM_CTRL, ALX_MASTER, + ALX_MANU_TIMER, ALX_IRQ_MODU_TIMER, ALX_PHY_CTRL, ALX_MAC_STS, + ALX_MDIO, ALX_MDIO_EXTN, + ALX_PHY_STS, ALX_BIST0, ALX_BIST1, ALX_SERDES, + ALX_LED_CTRL, ALX_LED_PATN, ALX_LED_PATN2, ALX_SYSALV, + ALX_PCIERR_INST, ALX_LPI_DECISN_TIMER, + ALX_LPI_CTRL, ALX_LPI_WAIT, ALX_HRTBT_VLAN, ALX_HRTBT_CTRL, + ALX_RXPARSE, ALX_MAC_CTRL, ALX_GAP, ALX_STAD1, + ALX_LED_CTRL, ALX_HASH_TBL0, + ALX_HASH_TBL1, ALX_HALFD, ALX_DMA, ALX_WOL0, + ALX_WOL1, ALX_WOL2, ALX_WRR, ALX_HQTPD, + ALX_CPUMAP1, ALX_CPUMAP2, + ALX_MISC, ALX_RX_BASE_ADDR_HI, ALX_RFD_ADDR_LO, ALX_RFD_RING_SZ, + ALX_RFD_BUF_SZ, ALX_RRD_ADDR_LO, ALX_RRD_RING_SZ, + ALX_RFD_PIDX, ALX_RFD_CIDX, ALX_RXQ0, + ALX_RXQ1, ALX_RXQ2, ALX_RXQ3, ALX_TX_BASE_ADDR_HI, + ALX_TPD_PRI0_ADDR_LO, ALX_TPD_PRI1_ADDR_LO, + ALX_TPD_PRI2_ADDR_LO, ALX_TPD_PRI3_ADDR_LO, + ALX_TPD_PRI0_PIDX, ALX_TPD_PRI1_PIDX, + ALX_TPD_PRI2_PIDX, ALX_TPD_PRI3_PIDX, ALX_TPD_PRI0_CIDX, + ALX_TPD_PRI1_CIDX, ALX_TPD_PRI2_CIDX, ALX_TPD_PRI3_CIDX, + ALX_TPD_RING_SZ, ALX_TXQ0, ALX_TXQ1, ALX_TXQ2, + ALX_MSI_MAP_TBL1, ALX_MSI_MAP_TBL2, ALX_MSI_ID_MAP, + ALX_MSIX_MASK, ALX_MSIX_PENDING, + ALX_RSS_HASH_VAL, ALX_RSS_HASH_FLAG, ALX_RSS_BASE_CPU_NUM, +}; + +static int alx_get_regs_len(struct net_device *netdev) +{ + return (ARRAY_SIZE(hw_regs) + 0x20) * 4; +} + +static void alx_get_regs(struct net_device *netdev, + struct ethtool_regs *regs, void *buff) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u32 *p = buff; + int i; + + regs->version = (ALX_DID(hw) << 16) | (ALX_REVID(hw) << 8) | 1; + + memset(buff, 0, (ARRAY_SIZE(hw_regs) + 0x20) * 4); + + for (i = 0; i < ARRAY_SIZE(hw_regs); i++, p++) + ALX_MEM_R32(hw, hw_regs[i], p); + + /* last 0x20 for PHY register */ + for (i = 0; i < 0x20; i++) { + alx_read_phy_reg(hw, i, (u16 *)p); + p++; + } +} + +static void alx_get_wol(struct net_device *netdev, + struct ethtool_wolinfo *wol) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + wol->supported = WAKE_MAGIC | WAKE_PHY; + wol->wolopts = 0; + + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) + wol->wolopts |= WAKE_MAGIC; + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) + wol->wolopts |= WAKE_PHY; + + netif_info(adpt, wol, adpt->netdev, + "wolopts = %x\n", + wol->wolopts); +} + +static int alx_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE | + WAKE_UCAST | WAKE_BCAST | WAKE_MCAST)) + return -EOPNOTSUPP; + + hw->sleep_ctrl = 0; + + if (wol->wolopts & WAKE_MAGIC) + hw->sleep_ctrl |= ALX_SLEEP_WOL_MAGIC; + if (wol->wolopts & WAKE_PHY) + hw->sleep_ctrl |= ALX_SLEEP_WOL_PHY; + + netdev_info(adpt->netdev, "wol-ctrl=%X\n", hw->sleep_ctrl); + + device_set_wakeup_enable(&adpt->pdev->dev, hw->sleep_ctrl); + + return 0; +} + +static int alx_nway_reset(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (netif_running(netdev)) + alx_reinit(adpt, false); + + return 0; +} + +static const char alx_gstrings_test[][ETH_GSTRING_LEN] = { + "register test (offline)", + "memory test (offline)", + "interrupt test (offline)", + "loopback test (offline)", + "link test (offline)" +}; +#define ALX_TEST_LEN (sizeof(alx_gstrings_test) / ETH_GSTRING_LEN) + +/* private flags */ +#define ALX_ETH_PF_LNK_10MH BIT(0) +#define ALX_ETH_PF_LNK_10MF BIT(1) +#define ALX_ETH_PF_LNK_100MH BIT(2) +#define ALX_ETH_PF_LNK_100MF BIT(3) +#define ALX_ETH_PF_LNK_1000MF BIT(4) +#define ALX_ETH_PF_LNK_MASK (\ + ALX_ETH_PF_LNK_10MH |\ + ALX_ETH_PF_LNK_10MF |\ + ALX_ETH_PF_LNK_100MH |\ + ALX_ETH_PF_LNK_100MF |\ + ALX_ETH_PF_LNK_1000MF) + +static const char alx_gstrings_stats[][ETH_GSTRING_LEN] = { + "rx_packets", + "rx_bcast_packets", + "rx_mcast_packets", + "rx_pause_packets", + "rx_ctrl_packets", + "rx_fcs_errors", + "rx_length_errors", + "rx_bytes", + "rx_runt_packets", + "rx_fragments", + "rx_64B_or_less_packets", + "rx_65B_to_127B_packets", + "rx_128B_to_255B_packets", + "rx_256B_to_511B_packets", + "rx_512B_to_1023B_packets", + "rx_1024B_to_1518B_packets", + "rx_1519B_to_mtu_packets", + "rx_oversize_packets", + "rx_rxf_ov_drop_packets", + "rx_rrd_ov_drop_packets", + "rx_align_errors", + "rx_bcast_bytes", + "rx_mcast_bytes", + "rx_address_errors", + "tx_packets", + "tx_bcast_packets", + "tx_mcast_packets", + "tx_pause_packets", + "tx_exc_defer_packets", + "tx_ctrl_packets", + "tx_defer_packets", + "tx_bytes", + "tx_64B_or_less_packets", + "tx_65B_to_127B_packets", + "tx_128B_to_255B_packets", + "tx_256B_to_511B_packets", + "tx_512B_to_1023B_packets", + "tx_1024B_to_1518B_packets", + "tx_1519B_to_mtu_packets", + "tx_single_collision", + "tx_multiple_collisions", + "tx_late_collision", + "tx_abort_collision", + "tx_underrun", + "tx_trd_eop", + "tx_length_errors", + "tx_trunc_packets", + "tx_bcast_bytes", + "tx_mcast_bytes", + "tx_update", +}; + +#define ALX_STATS_LEN (sizeof(alx_gstrings_stats) / ETH_GSTRING_LEN) + +static void alx_get_strings(struct net_device *netdev, u32 stringset, u8 *buf) +{ + switch (stringset) { + case ETH_SS_TEST: + memcpy(buf, &alx_gstrings_test, sizeof(alx_gstrings_test)); + break; + case ETH_SS_STATS: + memcpy(buf, &alx_gstrings_stats, sizeof(alx_gstrings_stats)); + break; + } +} + +static int alx_get_sset_count(struct net_device *netdev, int sset) +{ + switch (sset) { + case ETH_SS_STATS: + return ALX_STATS_LEN; + case ETH_SS_TEST: + return ALX_TEST_LEN; + default: + return -ENOTSUPP; + } +} + +struct alx_reg_attr { + u16 reg; + u32 ro_mask; + u32 rw_mask; + u32 rc_mask; + u32 rst_val; + u8 rst_affect; +}; + +struct alx_reg_attr ar816x_regs_a[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405060, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E003C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +struct alx_reg_attr ar816x_regs_b[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405018, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E003C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +struct alx_reg_attr ar816x_regs_c[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405018, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E009C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +static int alx_diag_register(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u8 rev = ALX_REVID(hw); + struct alx_reg_attr *preg, *oreg; + u32 val, old; + + switch (ALX_DID(hw)) { + case ALX_DEV_ID_AR8161: + case ALX_DEV_ID_AR8162: + case ALX_DEV_ID_AR8171: + case ALX_DEV_ID_AR8172: + if (rev == ALX_REV_B0) + oreg = ar816x_regs_b; + else if (rev == ALX_REV_C0) + oreg = ar816x_regs_c; + else + oreg = ar816x_regs_a; + break; + default: + /* unknow type */ + *data = 1; + return -EIO; + } + + /* issue a MAC-reset */ + ALX_MEM_W32(hw, ALX_MASTER, ALX_MASTER_DMA_MAC_RST); + msleep(50); + + /* check reset value */ + preg = oreg; + while (preg->reg != 0xffff) { + if (preg->rst_affect) { + ALX_MEM_R32(hw, preg->reg, &val); + if (val != preg->rst_val) { + netif_err(adpt, hw, adpt->netdev, + "register %X, hard-rst:%X, read-val:%X\n", + preg->reg, preg->rst_val, val); + *data = 2; + return -EIO; + } + } + preg++; + } + + /* check read-clear/read-write attribute */ + preg = oreg; + + while (preg->reg != 0xffff) { + ALX_MEM_R32(hw, preg->reg, &old); + + /* read clear */ + if (preg->rc_mask) { + u32 v2; + + msleep(20); + ALX_MEM_R32(hw, preg->reg, &v2); + if ((v2 & preg->rc_mask) != 0) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RC-mask:%X, Old:%X, New:%X\n", + preg->reg, preg->rc_mask, old, v2); + *data = 3; + return -EIO; + } + } + + /* read/write */ + ALX_MEM_W32(hw, preg->reg, 0xffffffff & preg->rw_mask); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, preg->reg, &val); + if ((val & preg->rw_mask) != preg->rw_mask) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RW-mask:%X, val-1:%X\n", + preg->reg, preg->rw_mask, val); + *data = 4; + return -EIO; + } + ALX_MEM_W32(hw, preg->reg, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, preg->reg, &val); + if ((val & preg->rw_mask) != 0) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RW-mask:%X, val-0:%X\n", + preg->reg, preg->rw_mask, val); + *data = 4; + return -EIO; + } + + /* restore */ + ALX_MEM_W32(hw, preg->reg, old); + + preg++; + } + + return 0; +} + +static int alx_diag_sram(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u32 ret[2]; + int i, err; + + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, "reset_mac fail %d\n", err); + *data = 1; + goto out; + } + /* issue bist command */ + ALX_MEM_W32(hw, ALX_BIST0, ALX_BIST0_START); + ALX_MEM_W32(hw, ALX_BIST1, ALX_BIST1_START); + + /* wait for 100ms */ + ret[1] = ret[0] = 0; + for (i = 0; i < 5; i++) { + msleep(20); + ALX_MEM_R32(hw, ALX_BIST0, &ret[0]); + ALX_MEM_R32(hw, ALX_BIST1, &ret[1]); + if (ret[0] & ALX_BIST0_START || ret[1] & ALX_BIST1_START) + continue; + else + break; + } + + for (i = 0; i < 2; i++) { + if (ret[i] & ALX_BIST0_START) { + netif_err(adpt, hw, adpt->netdev, + "sram(%d) bist not complete(%X)!\n", + i, ret[i]); + *data = 2; + err = -EIO; + goto out; + } + if (ret[i] & ALX_BIST0_FAIL) { + netif_err(adpt, hw, adpt->netdev, + "sram(%d) bist fail(%X)!\n", + i, ret[i]); + *data = 3; + err = -EIO; + goto out; + } + } +out: + return err; +} + +static int alx_diag_reset(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int err; + + alx_reset_pcie(hw); + alx_reset_phy(hw, !hw->hib_patch); + err = alx_reset_mac(hw); + if (!err) + err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); + + if (err) { + netif_err(adpt, hw, adpt->netdev, "alx_diag_reset err %X\n", + err); + } + + return err; +} + +static int alx_diag_link(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u32 flags, ethadv; + u16 speed; + u8 fc; + int i, err; + + ethadv = ADVERTISED_Autoneg; + flags = adpt->eth_pflags & ALX_ETH_PF_LNK_MASK; + if (flags == 0) + flags = ALX_ETH_PF_LNK_MASK; + if (flags & ALX_ETH_PF_LNK_10MH) + ethadv |= ADVERTISED_10baseT_Half; + if (flags & ALX_ETH_PF_LNK_10MF) + ethadv |= ADVERTISED_10baseT_Full; + if (flags & ALX_ETH_PF_LNK_100MH) + ethadv |= ADVERTISED_100baseT_Half; + if (flags & ALX_ETH_PF_LNK_100MF) + ethadv |= ADVERTISED_100baseT_Full; + if (flags & ALX_ETH_PF_LNK_1000MF) + ethadv |= ADVERTISED_1000baseT_Full; + + fc = ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX; + + alx_reset_phy(hw, !hw->hib_patch); + err = alx_setup_speed_duplex(hw, ethadv, fc); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "config PHY speed/duplex failed, adv=%X,err=%d\n", + ethadv, err); + *data = 1; + goto out; + } + + /* wait for linkup */ + for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) { + bool link_up; + + msleep(100); + err = alx_get_phy_link(hw, &link_up, &speed); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "get PHY speed/duplex failed,err=%d\n", + err); + *data = 2; + goto out; + } + if (link_up) + break; + } + if (i == ALX_MAX_SETUP_LNK_CYCLE) { + err = ALX_LINK_TIMEOUT; + netif_err(adpt, hw, adpt->netdev, + "get PHY speed/duplex timeout.\n"); + *data = 3; + goto out; + } + + netif_info(adpt, hw, adpt->netdev, "link:%s\n", speed_desc(speed)); + +out: + return err; +} + +static irqreturn_t alx_diag_msix_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + int i, vect = -1; + + for (i = 0; i < adpt->nr_vec; i++) + if (irq == adpt->msix_ent[i].vector) { + vect = i; + break; + } + if (vect == -1) { + netdev_err(adpt->netdev, "vector not found irq=%d\n", irq); + goto err_out; + } + if (adpt->eth_diag_vect != vect) { + netdev_err(adpt->netdev, "wrong msix interrupt, irq=%d\n", irq); + goto err_out; + } + + alx_mask_msix(hw, vect, true); + + ALX_MEM_R32(hw, ALX_ISR, &intr); + ALX_MEM_W32(hw, ALX_ISR, intr); + + alx_mask_msix(hw, vect, false); + + adpt->eth_diag_cnt++; + return IRQ_HANDLED; + +err_out: + + ALX_MEM_W32(hw, ALX_IMR, 0); + return IRQ_HANDLED; +} + +static irqreturn_t alx_diag_msi_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + ALX_MEM_R32(hw, ALX_ISR, &intr); + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, 0); + + if (intr & ALX_ISR_MANU) + adpt->eth_diag_cnt++; + + return IRQ_HANDLED; +} + +static irqreturn_t alx_diag_intx_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + if (intr & ALX_ISR_DIS) + return IRQ_NONE; + + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, 0); + + if (intr & ALX_ISR_MANU) + adpt->eth_diag_cnt++; + + return IRQ_HANDLED; +} + +static int alx_diag_msix(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + char irq_lbl[IFNAMSIZ]; + int test_vect, i = 0, err = 0; + u32 val; + + alx_init_intr(adpt); + if (!ALX_FLAG(adpt, USING_MSIX)) + goto out; + + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + FIELDX(ALX_MSI_RETRANS_TM, 100)); + ALX_MEM_W32(hw, ALX_MSI_ID_MAP, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + + for (i = 0; i < adpt->nr_vec; i++) { + sprintf(irq_lbl, "%s-test-%d", adpt->netdev->name, i); + err = request_irq(adpt->msix_ent[i].vector, alx_diag_msix_isr, + 0, irq_lbl, adpt); + if (err) + goto out; + } + + for (test_vect = 0; test_vect < adpt->nr_vec; test_vect++) { + u32 tbl[2]; + u32 other_vec = test_vect + 1; + + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + + if (other_vec >= adpt->nr_vec) + other_vec = 0; + other_vec |= other_vec << 4; + other_vec |= other_vec << 8; + other_vec |= other_vec << 16; + tbl[1] = other_vec; + tbl[0] = (other_vec & 0x0FFFFFFF) | ((u32)test_vect << 28); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL1, tbl[0]); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL2, tbl[1]); + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + + adpt->eth_diag_vect = test_vect; + adpt->eth_diag_cnt = 0; + /* issue a manual interrupt */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + for (i--; i >= 0; i--) { + synchronize_irq(adpt->msix_ent[i].vector); + free_irq(adpt->msix_ent[i].vector, adpt); + } + alx_disable_advanced_intr(adpt); + + return err; +} + + +static int alx_diag_msi(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct pci_dev *pdev = adpt->pdev; + unsigned long cap = hw->capability; + u32 val; + bool irq_installed = false; + int err = 0; + + ALX_CAP_CLEAR(hw, MSIX); + alx_init_intr(adpt); + if (!ALX_FLAG(adpt, USING_MSI)) + goto out; + + pci_disable_msix(pdev); + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + FIELDX(ALX_MSI_RETRANS_TM, 100) | ALX_MSI_MASK_SEL_LINE); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + err = request_irq(pdev->irq, alx_diag_msi_isr, 0, + adpt->netdev->name, adpt); + if (err) + goto out; + + irq_installed = true; + adpt->eth_diag_cnt = 0; + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + if (irq_installed) { + synchronize_irq(pdev->irq); + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); + hw->capability = cap; + + return err; +} + +static int alx_diag_intx(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct pci_dev *pdev = adpt->pdev; + u32 val; + bool irq_installed = false; + int err = 0; + + pci_disable_msix(pdev); + pci_disable_msi(pdev); + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + err = request_irq(pdev->irq, alx_diag_intx_isr, IRQF_SHARED, + adpt->netdev->name, adpt); + if (err) + goto out; + + irq_installed = true; + adpt->eth_diag_cnt = 0; + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + if (irq_installed) { + synchronize_irq(pdev->irq); + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); + + return err; +} + +static int alx_diag_interrupt(struct alx_adapter *adpt, u64 *data) +{ + int err; + + err = alx_diag_msix(adpt); + if (err) { + *data = 1; + goto out; + } + err = alx_diag_msi(adpt); + if (err) { + *data = 2; + goto out; + } + err = alx_diag_intx(adpt); + if (err) { + *data = 3; + goto out; + } + +out: + return err; +} + +static int alx_diag_pkt_len[] = {36, 512, 2048}; +static u8 alx_tso_pkt_hdr[] = { +0x08, 0x00, +0x45, 0x00, 0x00, 0x00, +0x00, 0x00, 0x40, 0x00, +0x40, 0x06, 0x00, 0x00, +0xc0, 0xa8, 0x64, 0x0A, +0xc0, 0xa8, 0x64, 0x0B, +0x0d, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x02, 0x00, +0x80, 0x10, 0x10, 0x00, +0x14, 0x09, 0x00, 0x00, +0x08, 0x0a, 0x11, 0x22, +0x33, 0x44, 0x55, 0x66, +0x77, 0x88, 0x01, 0x00, +}; +#define ALX_TSO_IP_HDR_LEN 20 +#define ALX_TSO_IP_OPT_LEN 0 +#define ALX_TSO_TCP_HDR_LEN 20 +#define ALX_TSO_TCP_OPT_LEN 12 + +static void alx_diag_build_pkt(struct sk_buff *skb, u8 *dest_addr, + int seq, bool lso) +{ + struct iphdr *iph; + struct tcphdr *tcph; + int offset; + u8 *pkt_data; + + pkt_data = skb->data; + memcpy(pkt_data, dest_addr, 6); + memset(pkt_data + 6, 0x0, 6); + offset = 2 * ETH_ALEN; + + if (lso) { + iph = (struct iphdr *)&pkt_data[ETH_HLEN]; + offset = ETH_HLEN + ALX_TSO_IP_HDR_LEN + ALX_TSO_IP_OPT_LEN; + tcph = (struct tcphdr *)&pkt_data[offset]; + memcpy(pkt_data + ETH_ALEN * 2, + alx_tso_pkt_hdr, sizeof(alx_tso_pkt_hdr)); + iph->tot_len = htons(skb->len - ETH_HLEN); + iph->check = 0; + tcph->check = ~csum_tcpudp_magic( + iph->saddr, + iph->daddr, + 0, IPPROTO_TCP, 0); + offset = ETH_ALEN * 2 + sizeof(alx_tso_pkt_hdr); + } else { + *(u16 *)&pkt_data[offset] = htons((u16)(skb->len - offset)); + offset += 2; + } + + *(u32 *)&pkt_data[offset] = (u32)seq; + offset += 4; + *(u16 *)&pkt_data[offset] = (u16)skb->len; + for (offset += 2; offset < skb->len; offset++) + pkt_data[offset] = (u8)(offset & 0xFF); +} + +static void alx_diag_rss_shift_key(u8 *pkey, int nkey) +{ + int len = nkey; + int i; + u8 carry = 0; + + for (i = len - 1; i >= 0; i--) { + if (pkey[i] & 0x80) { + pkey[i] = (pkey[i] << 1) | carry; + carry = 1; + } else { + pkey[i] = (pkey[i] << 1) | carry; + carry = 0; + } + } +} + +static int alx_diag_pkt_to_rxq(struct alx_adapter *adpt, struct sk_buff *skb) +{ + struct alx_hw *hw = &adpt->hw; + struct iphdr *iph; + struct tcphdr *tcph; + int i, j, que; + u8 hash_input[12], key[40]; + u32 hash; + + if (!ALX_CAP(hw, RSS) || ntohs(ETH_P_IP) != skb->data[ETH_ALEN * 2]) + return 0; + + iph = (struct iphdr *)&skb->data[ETH_HLEN]; + i = ETH_HLEN + iph->ihl * 4; + tcph = (struct tcphdr *)&skb->data[i]; + *(u32 *)&hash_input[0] = ntohl(be32_to_cpu(iph->saddr)); + *(u32 *)&hash_input[4] = ntohl(be32_to_cpu(iph->daddr)); + *(u16 *)&hash_input[8] = ntohs(be16_to_cpu(tcph->source)); + *(u16 *)&hash_input[10] = ntohs(be16_to_cpu(tcph->dest)); + + /* calcu hash */ + hash = 0; + memcpy(key, hw->rss_key, 40); + for (i = 0; i < 12; i++) { + for (j = 7; j >= 0; j--) { + if (hash_input[i] & (u8)(1 << j)) + hash ^= swab32(*(u32 *)key); + alx_diag_rss_shift_key(key, 40); + } + } + hash &= (hw->rss_idt_size - 1); + i = (int)(hash >> 3); + j = (int)(hash & 7); + que = (int)(hw->rss_idt[i] >> (j * 4) & 0xF); + + return que; +} + +static int alx_diag_rx_pkt(struct alx_adapter *adpt, int rx_qidx, + struct sk_buff **ppskb) +{ + struct alx_rx_queue *rxq; + struct rrd_desc *rrd; + struct alx_buffer *rxb; + struct sk_buff *skb; + u16 length; + int qnum; + + rxq = alx_hw_rxq(adpt->qnapi[rx_qidx]->rxq); + + rrd = rxq->rrd_hdr + rxq->rrd_cidx; + if (!(rrd->word3 & (1 << RRD_UPDATED_SHIFT))) + return 1; + + rrd->word3 &= ~(1 << RRD_UPDATED_SHIFT); + if (unlikely(FIELD_GETX(rrd->word0, RRD_SI) != rxq->cidx || + FIELD_GETX(rrd->word0, RRD_NOR) != 1)) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong SI/NOR packet! rrd->word0= %08x\n", + rrd->word0); + return -1; + } + rxb = rxq->bf_info + rxq->cidx; + dma_unmap_single(rxq->dev, + dma_unmap_addr(rxb, dma), + dma_unmap_len(rxb, size), + DMA_FROM_DEVICE); + dma_unmap_len_set(rxb, size, 0); + skb = rxb->skb; + rxb->skb = NULL; + + if (unlikely(rrd->word3 & (1 << RRD_ERR_RES_SHIFT) || + rrd->word3 & (1 << RRD_ERR_LEN_SHIFT))) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong packet! rrd->word3 is %08x\n", + rrd->word3); + rrd->word3 = 0; + return -2; + } + length = FIELD_GETX(rrd->word3, RRD_PKTLEN) - ETH_FCS_LEN; + skb_put(skb, length); + switch (FIELD_GETX(rrd->word2, RRD_PID)) { + case RRD_PID_IPV6UDP: + case RRD_PID_IPV4UDP: + case RRD_PID_IPV4TCP: + case RRD_PID_IPV6TCP: + if (rrd->word3 & ((1 << RRD_ERR_L4_SHIFT) | + (1 << RRD_ERR_IPV4_SHIFT))) { + netif_err(adpt, rx_err, adpt->netdev, + "rx-chksum error, w2=%X\n", + rrd->word2); + return -3; + } + skb->ip_summed = CHECKSUM_UNNECESSARY; + break; + } + qnum = FIELD_GETX(rrd->word2, RRD_RSSQ) % adpt->nr_rxq; + if (rx_qidx != qnum) { + netif_err(adpt, rx_err, adpt->netdev, + "rx Q-number is wrong (%d:%d), hash=%X,w2=%X\n", + rx_qidx, qnum, rrd->rss_hash, rrd->word2); + return -4; + } + + if (++rxq->cidx == rxq->count) + rxq->cidx = 0; + if (++rxq->rrd_cidx == rxq->count) + rxq->rrd_cidx = 0; + + alx_alloc_rxring_buf(adpt, rxq); + + *ppskb = skb; + return 0; +} + +static int alx_diag_cmp_pkts(struct sk_buff *tx_skb, struct sk_buff *rx_skb, + int mss, int seg_idx) +{ + int cmp_offs, cmp_len; + int hdr_len, tx_datalen; + + if (mss == 0) { + if (rx_skb->len < tx_skb->len || + memcmp(tx_skb->data, rx_skb->data, tx_skb->len)) + return -EIO; + return 0; + } + /* LSO */ + hdr_len = ETH_HLEN + ALX_TSO_IP_HDR_LEN + ALX_TSO_IP_OPT_LEN + + ALX_TSO_TCP_HDR_LEN + ALX_TSO_TCP_OPT_LEN; + tx_datalen = tx_skb->len - hdr_len; + cmp_offs = hdr_len + mss * seg_idx; + cmp_len = tx_skb->len - cmp_offs; + if (cmp_len > mss) + cmp_len = mss; + if (cmp_len > tx_skb->len) + return -EIO; + + return memcmp(&tx_skb->data[cmp_offs], + &rx_skb->data[hdr_len], + cmp_len); +} + +static int alx_diag_lpbk_run_packets(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct sk_buff *tx_skb, *rx_skb; + int i, j, pkt_len, max_len, mss; + struct alx_tx_queue *txq; + int q_idx, seg_idx, nr_pkts; + struct tpd_desc *tpd; + dma_addr_t dma; + int err; + + max_len = hw->mtu + ETH_HLEN; + for (i = 0; i < 1000; i++) { + pkt_len = alx_diag_pkt_len[i % ARRAY_SIZE(alx_diag_pkt_len)]; + mss = 0; + nr_pkts = 1; + if (pkt_len > max_len) { + mss = max_len - ETH_ALEN * 2 - sizeof(alx_tso_pkt_hdr); + if (mss < 0) { + mss = 0; + pkt_len = max_len; + } else { + nr_pkts = DIV_ROUND_UP(pkt_len - ETH_ALEN * 2 - + sizeof(alx_tso_pkt_hdr), mss); + } + } + tx_skb = netdev_alloc_skb(adpt->netdev, pkt_len); + if (!tx_skb) + return -ENOMEM; + skb_put(tx_skb, pkt_len); + alx_diag_build_pkt(tx_skb, hw->mac_addr, i, mss != 0); + dma = dma_map_single(&adpt->pdev->dev, tx_skb->data, pkt_len, + DMA_TO_DEVICE); + if (dma_mapping_error(&adpt->pdev->dev, dma)) { + dev_kfree_skb(tx_skb); + return -EIO; + } + + txq = adpt->qnapi[i % adpt->nr_txq]->txq; + tpd = txq->tpd_hdr + txq->pidx; + memset(tpd, 0, sizeof(struct tpd_desc)); + + if (mss) { + tpd->word1 |= 1 << TPD_IPV4_SHIFT; + tpd->word1 |= 1 << TPD_LSO_EN_SHIFT; + tpd->word1 |= FIELDX(TPD_MSS, mss); + tpd->word1 |= FIELDX(TPD_L4HDROFFSET, + ETH_HLEN + + ALX_TSO_IP_HDR_LEN + + ALX_TSO_IP_OPT_LEN); + } + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, pkt_len); + tpd->word1 |= 1 << TPD_EOP_SHIFT; + + if (++txq->pidx == txq->count) + txq->pidx = 0; + wmb(); + ALX_MEM_W16(hw, txq->p_reg, txq->pidx); + + /* wait packet loopbacked. */ + q_idx = alx_diag_pkt_to_rxq(adpt, tx_skb); + seg_idx = 0; + + for (j = 0; j < 500 && nr_pkts > 0; j++) { + udelay(100); + err = alx_diag_rx_pkt(adpt, q_idx, &rx_skb); + if (err > 0) + continue; + if (err < 0) { + err = -EIO; + goto out; + } + + /* got 1 packet/segment, compare */ + err = alx_diag_cmp_pkts(tx_skb, rx_skb, mss, seg_idx); + dev_kfree_skb(rx_skb); + if (err) { + err = -EIO; + goto out; + } + seg_idx++; + nr_pkts--; + } + if (err) { + err = -EIO; + goto out; + } + dev_kfree_skb(tx_skb); + } + + return 0; + +out: + dma_unmap_single(&adpt->pdev->dev, dma, tx_skb->len, DMA_TO_DEVICE); + dev_kfree_skb(tx_skb); + return err; +} + +enum ALX_LPBK_MODE { + ALX_LPBK_MAC = 0, + ALX_LPBK_PHY, +}; +static int alx_diag_speed[] = {SPEED_1000, SPEED_100, SPEED_10}; + +static int alx_diag_lpbk_init_hw(struct alx_adapter *adpt, int mode, int speed) +{ + struct alx_hw *hw = &adpt->hw; + int i, err; + u32 val; + + alx_reset_pcie(hw); + alx_reset_phy(hw, false); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "loopback: reset mac fail, err=%d\n", err); + goto err_hw; + } + hw->rx_ctrl |= ALX_MAC_CTRL_LPBACK_EN | + ALX_MAC_CTRL_DBG_EN; + + /* PHY configuration */ + if (hw->is_fpga) { + if (mode == ALX_LPBK_MAC) + goto cfg_hw; + netif_err(adpt, hw, adpt->netdev, + "loopback: FPGA not support PHY external lpbk!\n"); + goto err_hw; + } + err = alx_write_phy_reg(hw, 16, 0x0800); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "loopback: fix channel, err=%d\n", err); + goto err_hw; + } + switch (speed) { + case SPEED_1000: + alx_write_phy_dbg(hw, 0x11, 0x5553); + alx_write_phy_reg(hw, MII_BMCR, 0x8140); + break; + case SPEED_100: + alx_write_phy_reg(hw, MII_BMCR, 0xA100); + break; + default: + alx_write_phy_reg(hw, MII_BMCR, 0x8100); + break; + } + msleep(100); + + if (mode == ALX_LPBK_PHY) { + u16 spd; + bool linkup; + + /* wait for link */ + for (i = 0; i < 50; i++) { + msleep(100); + err = alx_get_phy_link(hw, &linkup, &spd); + if (err) + goto err_hw; + if (linkup) + break; + } + if (!linkup) { + netif_err(adpt, hw, adpt->netdev, + "no link, check your External-Loopback-Connector !\n"); + goto err_hw; + } + hw->rx_ctrl &= ~ALX_MAC_CTRL_LPBACK_EN; + } + +cfg_hw: + alx_init_intr(adpt); + alx_init_def_rss_idt(adpt); + err = alx_setup_all_ring_resources(adpt); + if (err) + goto out; + alx_configure(adpt); + /* disable clk gate for loopback */ + ALX_MEM_W32(hw, ALX_CLK_GATE, 0); + /* disable PLL clk switch for loopback */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_PLL_ON); + hw->link_duplex = FULL_DUPLEX; + hw->link_speed = speed; + hw->link_up = true; + alx_enable_aspm(hw, false, false); + alx_start_mac(hw); + goto out; +err_hw: + err = -EIO; +out: + return err; +} + +static void alx_diag_lpbk_deinit_hw(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u32 val; + + hw->link_up = false; + hw->link_speed = SPEED_0; + alx_reset_mac(hw); + hw->rx_ctrl &= ~(ALX_MAC_CTRL_LPBACK_EN | ALX_MAC_CTRL_DBG_EN); + alx_enable_aspm(hw, false, false); + alx_free_all_ring_resources(adpt); + alx_disable_advanced_intr(adpt); + /* enable PLL clk switch for loopback */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_PLL_ON); +} + +static int alx_diag_loopback(struct alx_adapter *adpt, u64 *data, bool phy_lpbk) +{ + struct alx_hw *hw = &adpt->hw; + int i, err; + + if (hw->is_fpga && phy_lpbk) + return 0; + + for (i = 0; i < ARRAY_SIZE(alx_diag_speed); i++) { + err = alx_diag_lpbk_init_hw( + adpt, + phy_lpbk ? ALX_LPBK_PHY : ALX_LPBK_MAC, + alx_diag_speed[i]); + if (err) { + *data = i + 1; + goto out; + } + err = alx_diag_lpbk_run_packets(adpt); + if (err) { + *data = i + 10; + goto out; + } + alx_diag_lpbk_deinit_hw(adpt); + } +out: + if (err) + alx_diag_lpbk_deinit_hw(adpt); + + return err; +} + +static void alx_self_test(struct net_device *netdev, + struct ethtool_test *etest, + u64 *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + bool if_running = netif_running(netdev); + bool phy_lpback = etest->flags & ETH_TEST_FL_EXTERNAL_LB; + + ALX_FLAG_SET(adpt, TESTING); + memset(data, 0, sizeof(u64) * ALX_TEST_LEN); + + if (if_running) + dev_close(netdev); + + if (etest->flags == ETH_TEST_FL_OFFLINE) { + netif_info(adpt, hw, adpt->netdev, "offline test start...\n"); + + if (alx_diag_register(adpt, &data[0])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (alx_diag_sram(adpt, &data[1])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (alx_diag_interrupt(adpt, &data[2])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (phy_lpback) + etest->flags |= ETH_TEST_FL_EXTERNAL_LB_DONE; + if (alx_diag_loopback(adpt, &data[3], phy_lpback)) + etest->flags |= ETH_TEST_FL_FAILED; + + } else { + netif_info(adpt, hw, adpt->netdev, "online test start...\n"); + + if (alx_diag_link(adpt, &data[4])) + etest->flags |= ETH_TEST_FL_FAILED; + } + + ALX_FLAG_CLEAR(adpt, TESTING); + alx_diag_reset(adpt); + + if (if_running) + dev_open(netdev); +} + +static void alx_get_ethtool_stats(struct net_device *netdev, + struct ethtool_stats *estats, u64 *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + spin_lock(&adpt->smb_lock); + + __alx_update_hw_stats(hw); + memcpy(data, &hw->stats, sizeof(hw->stats)); + + spin_unlock(&adpt->smb_lock); +} + +static u32 alx_get_priv_flags(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + return adpt->eth_pflags; +} + +static int alx_set_priv_flags(struct net_device *netdev, u32 flags) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + adpt->eth_pflags = flags; + + return 0; +} + +static void alx_get_drvinfo(struct net_device *netdev, + struct ethtool_drvinfo *drvinfo) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + strlcpy(drvinfo->driver, alx_drv_name, sizeof(drvinfo->driver)); + strlcpy(drvinfo->version, alx_drv_version, sizeof(drvinfo->version)); + strlcpy(drvinfo->fw_version, "N/A", sizeof(drvinfo->fw_version)); + strlcpy(drvinfo->bus_info, pci_name(adpt->pdev), + sizeof(drvinfo->bus_info)); + drvinfo->n_stats = ALX_STATS_LEN; + drvinfo->testinfo_len = ALX_TEST_LEN; + drvinfo->n_priv_flags = 5; + drvinfo->regdump_len = alx_get_regs_len(netdev); + drvinfo->eedump_len = 0; +} + +static const struct ethtool_ops alx_ethtool_ops = { + .get_settings = alx_get_settings, + .set_settings = alx_set_settings, + .get_pauseparam = alx_get_pauseparam, + .set_pauseparam = alx_set_pauseparam, + .get_drvinfo = alx_get_drvinfo, + .get_regs_len = alx_get_regs_len, + .get_regs = alx_get_regs, + .get_wol = alx_get_wol, + .set_wol = alx_set_wol, + .get_msglevel = alx_get_msglevel, + .set_msglevel = alx_set_msglevel, + .nway_reset = alx_nway_reset, + .get_link = ethtool_op_get_link, + .get_strings = alx_get_strings, + .get_sset_count = alx_get_sset_count, + .get_ethtool_stats = alx_get_ethtool_stats, + .self_test = alx_self_test, + .get_priv_flags = alx_get_priv_flags, + .set_priv_flags = alx_set_priv_flags, +}; + +void alx_set_ethtool_ops(struct net_device *dev) +{ + SET_ETHTOOL_OPS(dev, &alx_ethtool_ops); +} + --- linux-3.5.0.orig/ubuntu/alx/alx_main.c +++ linux-3.5.0/ubuntu/alx/alx_main.c @@ -0,0 +1,2818 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" +#include "alx.h" + +#define DRV_MAJ 1 +#define DRV_MIN 2 +#define DRV_PATCH 3 +#define DRV_MODULE_VER \ + __stringify(DRV_MAJ) "." __stringify(DRV_MIN) "." \ + __stringify(DRV_PATCH) + +char alx_drv_name[] = "alx"; +char alx_drv_version[] = DRV_MODULE_VER; +static const char alx_drv_desc[] = +"Qualcomm Atheros(R) AR816x/AR817x PCI-E Ethernet Network Driver"; + +/* alx_pci_tbl - PCI Device ID Table + * + * Wildcard entries (PCI_ANY_ID) should come last + * Last entry must be all 0s + * + * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, + * Class, Class Mask, private data (not used) } + */ +#define ALX_ETHER_DEVICE(device_id) {\ + PCI_DEVICE(ALX_VENDOR_ID, device_id)} +static DEFINE_PCI_DEVICE_TABLE(alx_pci_tbl) = { + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8161), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8162), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8171), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8172), + {0,} +}; + +MODULE_DEVICE_TABLE(pci, alx_pci_tbl); +MODULE_AUTHOR("Qualcomm Corporation, "); +MODULE_DESCRIPTION("Qualcomm Atheros Gigabit Ethernet Driver"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_VERSION(DRV_MODULE_VER); + +static int alx_poll(struct napi_struct *napi, int budget); +static irqreturn_t alx_msix_ring(int irq, void *data); +static irqreturn_t alx_intr_msix_misc(int irq, void *data); +static irqreturn_t alx_intr_msi(int irq, void *data); +static irqreturn_t alx_intr_legacy(int irq, void *data); +static void alx_init_ring_ptrs(struct alx_adapter *adpt); +static int alx_reinit_rings(struct alx_adapter *adpt); + +static inline void alx_schedule_work(struct alx_adapter *adpt) +{ + if (!ALX_FLAG(adpt, HALT)) + schedule_work(&adpt->task); +} + +static inline void alx_cancel_work(struct alx_adapter *adpt) +{ + cancel_work_sync(&adpt->task); +} + + +static void __alx_set_rx_mode(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + struct netdev_hw_addr *ha; + + + /* comoute mc addresses' hash value ,and put it into hash table */ + netdev_for_each_mc_addr(ha, netdev) + alx_add_mc_addr(hw, ha->addr); + + ALX_MEM_W32(hw, ALX_HASH_TBL0, hw->mc_hash[0]); + ALX_MEM_W32(hw, ALX_HASH_TBL1, hw->mc_hash[1]); + + /* check for Promiscuous and All Multicast modes */ + hw->rx_ctrl &= ~(ALX_MAC_CTRL_MULTIALL_EN | ALX_MAC_CTRL_PROMISC_EN); + if (netdev->flags & IFF_PROMISC) + hw->rx_ctrl |= ALX_MAC_CTRL_PROMISC_EN; + if (netdev->flags & IFF_ALLMULTI) + hw->rx_ctrl |= ALX_MAC_CTRL_MULTIALL_EN; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + +/* alx_set_rx_mode - Multicast and Promiscuous mode set */ +static void alx_set_rx_mode(struct net_device *netdev) +{ + __alx_set_rx_mode(netdev); +} + + +/* alx_set_mac - Change the Ethernet Address of the NIC */ +static int alx_set_mac_address(struct net_device *netdev, void *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + struct sockaddr *addr = data; + + if (!is_valid_ether_addr(addr->sa_data)) + return -EADDRNOTAVAIL; + + if (netdev->addr_assign_type & NET_ADDR_RANDOM) + netdev->addr_assign_type ^= NET_ADDR_RANDOM; + + memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); + memcpy(hw->mac_addr, addr->sa_data, netdev->addr_len); + alx_set_macaddr(hw, hw->mac_addr); + + return 0; +} + +static void alx_free_napis(struct alx_adapter *adpt) +{ + struct alx_napi *np; + int i; + + for (i = 0; i < adpt->nr_napi; i++) { + np = adpt->qnapi[i]; + if (!np) + continue; + + netif_napi_del(&np->napi); + kfree(np->txq); + np->txq = NULL; + kfree(np->rxq); + np->rxq = NULL; + adpt->qnapi[i] = NULL; + } +} +static u16 tx_pidx_reg[] = {ALX_TPD_PRI0_PIDX, ALX_TPD_PRI1_PIDX, + ALX_TPD_PRI2_PIDX, ALX_TPD_PRI3_PIDX}; +static u16 tx_cidx_reg[] = {ALX_TPD_PRI0_CIDX, ALX_TPD_PRI1_CIDX, + ALX_TPD_PRI2_CIDX, ALX_TPD_PRI3_CIDX}; +static u32 tx_vect_mask[] = {ALX_ISR_TX_Q0, ALX_ISR_TX_Q1, + ALX_ISR_TX_Q2, ALX_ISR_TX_Q3}; +static u32 rx_vect_mask[] = {ALX_ISR_RX_Q0, ALX_ISR_RX_Q1, + ALX_ISR_RX_Q2, ALX_ISR_RX_Q3, + ALX_ISR_RX_Q4, ALX_ISR_RX_Q5, + ALX_ISR_RX_Q6, ALX_ISR_RX_Q7}; +static int alx_alloc_napis(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_napi *np; + struct alx_rx_queue *rxq; + struct alx_tx_queue *txq; + int i; + + hw->imask &= ~ALX_ISR_ALL_QUEUES; + + /* alloc alx_napi */ + for (i = 0; i < adpt->nr_napi; i++) { + np = kzalloc(sizeof(struct alx_napi), GFP_KERNEL); + if (!np) + goto err_out; + + np->adpt = adpt; + netif_napi_add(adpt->netdev, &np->napi, alx_poll, 64); + adpt->qnapi[i] = np; + } + + /* alloc tx queue */ + for (i = 0; i < adpt->nr_txq; i++) { + np = adpt->qnapi[i]; + txq = kzalloc(sizeof(struct alx_tx_queue), GFP_KERNEL); + if (!txq) + goto err_out; + np->txq = txq; + txq->p_reg = tx_pidx_reg[i]; + txq->c_reg = tx_cidx_reg[i]; + txq->count = adpt->tx_ringsz; + txq->qidx = (u16)i; + np->vec_mask |= tx_vect_mask[i]; + hw->imask |= tx_vect_mask[i]; + } + + /* alloc rx queue */ + for (i = 0; i < adpt->nr_rxq; i++) { + np = adpt->qnapi[i]; + rxq = kzalloc(sizeof(struct alx_rx_queue), GFP_KERNEL); + if (!rxq) + goto err_out; + np->rxq = rxq; + rxq->p_reg = ALX_RFD_PIDX; + rxq->c_reg = ALX_RFD_CIDX; + rxq->count = adpt->rx_ringsz; + rxq->qidx = (u16)i; + __skb_queue_head_init(&rxq->list); + np->vec_mask |= rx_vect_mask[i]; + hw->imask |= rx_vect_mask[i]; + } + + return 0; + +err_out: + alx_free_napis(adpt); + return -ENOMEM; +} + +static int alx_alloc_rings(struct alx_adapter *adpt) +{ + struct alx_buffer *bf; + u8 *desc; + dma_addr_t dma; + int i, size, offset; + + /* alx_buffer */ + size = sizeof(struct alx_buffer) * adpt->nr_txq * adpt->tx_ringsz + + sizeof(struct alx_buffer) * adpt->nr_hwrxq * adpt->rx_ringsz; + + bf = vzalloc(size); + if (!bf) + goto err_out; + + /* physical rx rings */ + size = sizeof(struct tpd_desc) * adpt->tx_ringsz * adpt->nr_txq + + (sizeof(struct rrd_desc) + sizeof(struct rfd_desc)) * + adpt->rx_ringsz * adpt->nr_hwrxq + + adpt->nr_txq * 8 + + adpt->nr_hwrxq * 8; + desc = dma_alloc_coherent(&adpt->pdev->dev, size, &dma, GFP_KERNEL); + if (!desc) + goto err_out; + + memset(desc, 0, size); + adpt->ring_header.desc = desc; + adpt->ring_header.dma = dma; + adpt->ring_header.size = size; + + size = sizeof(struct tpd_desc) * adpt->tx_ringsz; + for (i = 0; i < adpt->nr_txq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->txq->netdev = adpt->netdev; + adpt->qnapi[i]->txq->dev = &adpt->pdev->dev; + adpt->qnapi[i]->txq->tpd_hdr = (struct tpd_desc *)desc; + adpt->qnapi[i]->txq->tpd_dma = dma; + adpt->qnapi[i]->txq->count = adpt->tx_ringsz; + adpt->qnapi[i]->txq->bf_info = bf; + desc += size; + dma += size; + bf += adpt->tx_ringsz; + } + size = sizeof(struct rrd_desc) * adpt->rx_ringsz; + for (i = 0; i < adpt->nr_hwrxq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->rxq->rrd_hdr = (struct rrd_desc *)desc; + adpt->qnapi[i]->rxq->rrd_dma = dma; + adpt->qnapi[i]->rxq->bf_info = bf; + desc += size; + dma += size; + bf += adpt->rx_ringsz; + } + size = sizeof(struct rfd_desc) * adpt->rx_ringsz; + for (i = 0; i < adpt->nr_hwrxq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->rxq->rfd_hdr = (struct rfd_desc *)desc; + adpt->qnapi[i]->rxq->rfd_dma = dma; + desc += size; + dma += size; + } + for (i = 0; i < adpt->nr_rxq; i++) { + adpt->qnapi[i]->rxq->netdev = adpt->netdev; + adpt->qnapi[i]->rxq->dev = &adpt->pdev->dev; + adpt->qnapi[i]->rxq->count = adpt->rx_ringsz; + } + + return 0; + +err_out: + if (bf) + vfree(bf); + + return -ENOMEM; +} + +static void alx_free_rings(struct alx_adapter *adpt) +{ + struct alx_buffer *bf; + struct alx_napi *np; + + /* alx_buffer header is in the 1st tpdq->bf_info */ + np = adpt->qnapi[0]; + if (np) { + bf = np->txq->bf_info; + if (bf) { + vfree(bf); + np->txq->bf_info = NULL; + } + } + if (adpt->ring_header.desc) { + dma_free_coherent(&adpt->pdev->dev, + adpt->ring_header.size, + adpt->ring_header.desc, + adpt->ring_header.dma); + adpt->ring_header.desc = NULL; + } +} + +/* dequeue skb from RXQ, return true if the RXQ is empty */ +static inline bool alx_skb_dequeue_n(struct alx_rx_queue *rxq, int max_pkts, + struct sk_buff_head *list) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + bool use_lock = !ALX_CAP(&adpt->hw, MRQ); + bool empty; + struct sk_buff *skb; + int count = 0; + + if (use_lock) + spin_lock(&rxq->list.lock); + + while (count < max_pkts || max_pkts == -1) { + skb = __skb_dequeue(&rxq->list); + if (skb) { + __skb_queue_tail(list, skb); + count++; + } else + break; + } + + empty = skb_queue_empty(&rxq->list); + + if (use_lock) + spin_unlock(&rxq->list.lock); + + netif_info(adpt, rx_status, adpt->netdev, + "RX %d packets\n", + count); + + return empty; +} + +static inline void alx_skb_queue_tail(struct alx_rx_queue *rxq, + struct sk_buff *skb) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + bool use_lock = !ALX_CAP(&adpt->hw, MRQ); + + if (use_lock) + spin_lock(&rxq->list.lock); + + __skb_queue_tail(&rxq->list, skb); + + if (use_lock) + spin_unlock(&rxq->list.lock); +} + +int alx_alloc_rxring_buf(struct alx_adapter *adpt, + struct alx_rx_queue *rxq) +{ + struct sk_buff *skb; + struct alx_buffer *cur_buf; + struct rfd_desc *rfd; + dma_addr_t dma; + u16 cur, next, count = 0; + + next = cur = rxq->pidx; + if (++next == rxq->count) + next = 0; + cur_buf = rxq->bf_info + cur; + rfd = rxq->rfd_hdr + cur; + + while (!cur_buf->skb && next != rxq->cidx) { + skb = dev_alloc_skb(adpt->rxbuf_size); + if (unlikely(!skb)) { + netdev_warn(adpt->netdev, "alloc skb failed\n"); + break; + } + dma = dma_map_single(rxq->dev, + skb->data, + adpt->rxbuf_size, + DMA_FROM_DEVICE); + if (dma_mapping_error(rxq->dev, dma)) { + netdev_warn(adpt->netdev, "mapping rx-buffer failed\n"); + dev_kfree_skb(skb); + break; + } + cur_buf->skb = skb; + dma_unmap_len_set(cur_buf, size, adpt->rxbuf_size); + dma_unmap_addr_set(cur_buf, dma, dma); + rfd->addr = cpu_to_le64(dma); + + cur = next; + if (++next == rxq->count) + next = 0; + cur_buf = rxq->bf_info + cur; + rfd = rxq->rfd_hdr + cur; + count++; + } + + if (count) { + wmb(); + rxq->pidx = cur; + ALX_MEM_W16(&adpt->hw, rxq->p_reg, (u16)cur); + } + + return count; +} + +static void alx_free_rxring_buf(struct alx_rx_queue *rxq) +{ + struct alx_buffer *cur_buf; + struct sk_buff_head list; + u16 i; + + if (rxq == NULL) + return; + + for (i = 0; i < rxq->count; i++) { + cur_buf = rxq->bf_info + i; + if (cur_buf->skb) { + dma_unmap_single(rxq->dev, + dma_unmap_addr(cur_buf, dma), + dma_unmap_len(cur_buf, size), + DMA_FROM_DEVICE); + dev_kfree_skb(cur_buf->skb); + cur_buf->skb = NULL; + dma_unmap_len_set(cur_buf, size, 0); + dma_unmap_addr_set(cur_buf, dma, 0); + } + } + + /* some skbs might be pending in the list */ + __skb_queue_head_init(&list); + alx_skb_dequeue_n(rxq, -1, &list); + while (!skb_queue_empty(&list)) { + struct sk_buff *skb; + + skb = __skb_dequeue(&list); + dev_kfree_skb(skb); + } + + rxq->pidx = 0; + rxq->cidx = 0; + rxq->rrd_cidx = 0; +} + +int alx_setup_all_ring_resources(struct alx_adapter *adpt) +{ + int err; + + err = alx_alloc_napis(adpt); + if (err) + goto out; + + err = alx_alloc_rings(adpt); + if (err) + goto out; + + err = alx_reinit_rings(adpt); + +out: + if (unlikely(err)) { + netif_err(adpt, ifup, adpt->netdev, + "setup_all_ring_resources fail %d\n", + err); + } + return err; +} + +static void alx_txbuf_unmap_and_free(struct alx_tx_queue *txq, int entry) +{ + struct alx_buffer *txb = txq->bf_info + entry; + + if (dma_unmap_len(txb, size) && + txb->flags & ALX_BUF_TX_FIRSTFRAG) { + dma_unmap_single(txq->dev, + dma_unmap_addr(txb, dma), + dma_unmap_len(txb, size), + DMA_TO_DEVICE); + txb->flags &= ~ALX_BUF_TX_FIRSTFRAG; + } else if (dma_unmap_len(txb, size)) { + dma_unmap_page(txq->dev, + dma_unmap_addr(txb, dma), + dma_unmap_len(txb, size), + DMA_TO_DEVICE); + } + if (txb->skb) { + dev_kfree_skb_any(txb->skb); + txb->skb = NULL; + } + dma_unmap_len_set(txb, size, 0); +} + +static void alx_free_txring_buf(struct alx_tx_queue *txq) +{ + int i; + + if (!txq->bf_info) + return; + + for (i = 0; i < txq->count; i++) + alx_txbuf_unmap_and_free(txq, i); + + memset(txq->bf_info, 0, txq->count * sizeof(struct alx_buffer)); + memset(txq->tpd_hdr, 0, txq->count * sizeof(struct tpd_desc)); + txq->pidx = 0; + atomic_set(&txq->cidx, 0); + + netdev_tx_reset_queue(netdev_get_tx_queue(txq->netdev, txq->qidx)); +} + +/* free up pending skb for tx/rx */ +static void alx_free_all_rings_buf(struct alx_adapter *adpt) +{ + int i; + + for (i = 0; i < adpt->nr_txq; i++) + if (adpt->qnapi[i]) + alx_free_txring_buf(adpt->qnapi[i]->txq); + + for (i = 0; i < adpt->nr_hwrxq; i++) + if (adpt->qnapi[i]) + alx_free_rxring_buf(adpt->qnapi[i]->rxq); +} + +void alx_free_all_ring_resources(struct alx_adapter *adpt) +{ + alx_free_all_rings_buf(adpt); + alx_free_rings(adpt); + alx_free_napis(adpt); +} + +static inline int alx_tpd_avail(struct alx_tx_queue *txq) +{ + u16 cidx = atomic_read(&txq->cidx); + + return txq->pidx >= cidx ? + txq->count + cidx - txq->pidx - 1 : + cidx - txq->pidx - 1; +} + + + +static bool alx_clean_tx_irq(struct alx_tx_queue *txq) +{ + struct alx_adapter *adpt = netdev_priv(txq->netdev); + struct netdev_queue *netque; + u16 hw_cidx, sw_cidx; + unsigned int total_bytes = 0, total_packets = 0; + int budget = ALX_DEFAULT_TX_WORK; + + if (ALX_FLAG(adpt, HALT)) + return true; + + netque = netdev_get_tx_queue(adpt->netdev, txq->qidx); + sw_cidx = atomic_read(&txq->cidx); + + ALX_MEM_R16(&adpt->hw, txq->c_reg, &hw_cidx); + + if (sw_cidx != hw_cidx) { + + netif_info(adpt, tx_done, adpt->netdev, + "TX[Q:%d, Preg:%x]: cons = 0x%x, hw-cons = 0x%x\n", + txq->qidx, txq->p_reg, sw_cidx, hw_cidx); + + while (sw_cidx != hw_cidx && budget > 0) { + struct sk_buff *skb; + + skb = txq->bf_info[sw_cidx].skb; + if (skb) { + total_bytes += skb->len; + total_packets++; + budget--; + } + alx_txbuf_unmap_and_free(txq, sw_cidx); + if (++sw_cidx == txq->count) + sw_cidx = 0; + } + atomic_set(&txq->cidx, sw_cidx); + + netdev_tx_completed_queue(netque, total_packets, total_bytes); + } + + if (unlikely(netif_tx_queue_stopped(netque) && + netif_carrier_ok(adpt->netdev) && + alx_tpd_avail(txq) > ALX_TX_WAKEUP_THRESH(txq) && + !ALX_FLAG(adpt, HALT))) { + netif_tx_wake_queue(netque); + } + + return sw_cidx == hw_cidx; +} + +static bool alx_dispatch_skb(struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + struct rrd_desc *rrd; + struct alx_buffer *rxb; + struct sk_buff *skb; + u16 length, rfd_cleaned = 0; + struct alx_rx_queue *tmp_rxq; + int qnum; + + if (test_and_set_bit(ALX_RQ_USING, &rxq->flag)) + return false; + + while (1) { + rrd = rxq->rrd_hdr + rxq->rrd_cidx; + if (!(rrd->word3 & (1 << RRD_UPDATED_SHIFT))) + break; + rrd->word3 &= ~(1 << RRD_UPDATED_SHIFT); + + if (unlikely(FIELD_GETX(rrd->word0, RRD_SI) != rxq->cidx || + FIELD_GETX(rrd->word0, RRD_NOR) != 1)) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong SI/NOR packet! rrd->word0= %08x\n", + rrd->word0); + /* reset chip */ + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + return true; + } + rxb = rxq->bf_info + rxq->cidx; + dma_unmap_single(rxq->dev, + dma_unmap_addr(rxb, dma), + dma_unmap_len(rxb, size), + DMA_FROM_DEVICE); + dma_unmap_len_set(rxb, size, 0); + skb = rxb->skb; + rxb->skb = NULL; + + if (unlikely(rrd->word3 & (1 << RRD_ERR_RES_SHIFT) || + rrd->word3 & (1 << RRD_ERR_LEN_SHIFT))) { + netdev_warn(adpt->netdev, + "wrong packet! rrd->word3 is %08x\n", + rrd->word3); + rrd->word3 = 0; + dev_kfree_skb_any(skb); + goto next_pkt; + } + length = FIELD_GETX(rrd->word3, RRD_PKTLEN) - ETH_FCS_LEN; + skb_put(skb, length); + skb->protocol = eth_type_trans(skb, adpt->netdev); + /* checksum */ + skb_checksum_none_assert(skb); + if (adpt->netdev->features & NETIF_F_RXCSUM) { + switch (FIELD_GETX(rrd->word2, RRD_PID)) { + case RRD_PID_IPV6UDP: + case RRD_PID_IPV4UDP: + case RRD_PID_IPV4TCP: + case RRD_PID_IPV6TCP: + if (rrd->word3 & ((1 << RRD_ERR_L4_SHIFT) | + (1 << RRD_ERR_IPV4_SHIFT))) { + netdev_warn( + adpt->netdev, + "rx-chksum error, w2=%X\n", + rrd->word2); + break; + } + skb->ip_summed = CHECKSUM_UNNECESSARY; + break; + } + } + /* vlan tag */ + if (rrd->word3 & (1 << RRD_VLTAGGED_SHIFT)) { + u16 tag = ntohs(FIELD_GETX(rrd->word2, RRD_VLTAG)); + __vlan_hwaccel_put_tag(skb, ntohs(tag)); + } + qnum = FIELD_GETX(rrd->word2, RRD_RSSQ) % adpt->nr_rxq; + tmp_rxq = ALX_CAP(&adpt->hw, MRQ) ? + rxq : adpt->qnapi[qnum]->rxq; + alx_skb_queue_tail(tmp_rxq, skb); + +next_pkt: + + if (++rxq->cidx == rxq->count) + rxq->cidx = 0; + if (++rxq->rrd_cidx == rxq->count) + rxq->rrd_cidx = 0; + + if (++rfd_cleaned > ALX_RX_ALLOC_THRESH) + rfd_cleaned -= alx_alloc_rxring_buf(adpt, rxq); + } + + if (rfd_cleaned) + alx_alloc_rxring_buf(adpt, rxq); + + clear_bit(ALX_RQ_USING, &rxq->flag); + + return true; +} + +static inline struct napi_struct *alx_rxq_to_napi( + struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + return &adpt->qnapi[rxq->qidx]->napi; +} + +static bool alx_clean_rx_irq(struct alx_rx_queue *rxq, int budget) +{ + struct sk_buff_head list; + bool empty; + + __skb_queue_head_init(&list); + alx_dispatch_skb(alx_hw_rxq(rxq)); + empty = alx_skb_dequeue_n(rxq, budget, &list); + if (!skb_queue_empty(&list)) { + struct napi_struct *napi; + struct sk_buff *skb; + + napi = alx_rxq_to_napi(rxq); + while (!skb_queue_empty(&list)) { + skb = __skb_dequeue(&list); + napi_gro_receive(napi, skb); + } + } else { + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + netif_info(adpt, rx_status, adpt->netdev, + "no packet received for this rxQ\n"); + } + + + return empty; +} + +static int alx_request_msix(struct alx_adapter *adpt) +{ + struct net_device *netdev = adpt->netdev; + int i, err; + int vec; + + err = request_irq(adpt->msix_ent[0].vector, + alx_intr_msix_misc, 0, netdev->name, adpt); + if (err) + goto out; + + vec = 1; + for (i = 0; i < adpt->nr_napi; i++) { + struct alx_napi *np = adpt->qnapi[i]; + + if (np->txq && np->rxq) + sprintf(np->irq_lbl, "%s-TR-%u", netdev->name, i); + else if (np->txq) + sprintf(np->irq_lbl, "%s-T-%u", netdev->name, i); + else + sprintf(np->irq_lbl, "%s-R-%u", netdev->name, i); + + np->vec_idx = vec; + err = request_irq(adpt->msix_ent[vec].vector, + alx_msix_ring, 0, np->irq_lbl, np); + if (err) { + for (i--, vec--; i >= 0; i--) { + np = adpt->qnapi[i]; + free_irq(adpt->msix_ent[vec].vector, np); + } + free_irq(adpt->msix_ent[0].vector, adpt); + goto out; + } + vec++; + } + +out: + return err; +} + +static void alx_disable_msix(struct alx_adapter *adpt) +{ + if (adpt->msix_ent) { + pci_disable_msix(adpt->pdev); + kfree(adpt->msix_ent); + adpt->msix_ent = NULL; + } + ALX_FLAG_CLEAR(adpt, USING_MSIX); +} + +static void alx_disable_msi(struct alx_adapter *adpt) +{ + if (ALX_FLAG(adpt, USING_MSI)) { + pci_disable_msi(adpt->pdev); + ALX_FLAG_CLEAR(adpt, USING_MSI); + } +} + +static int txq_vec_mapping_shift[] = { + 0, ALX_MSI_MAP_TBL1_TXQ0_SHIFT, + 0, ALX_MSI_MAP_TBL1_TXQ1_SHIFT, + 1, ALX_MSI_MAP_TBL2_TXQ2_SHIFT, + 1, ALX_MSI_MAP_TBL2_TXQ3_SHIFT, +}; +static int rxq_vec_mapping_shift[] = { + 0, ALX_MSI_MAP_TBL1_RXQ0_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ1_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ2_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ3_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ4_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ5_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ6_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ7_SHIFT, +}; +static void alx_config_vector_mapping(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u32 tbl[2]; + int vect, idx, shft; + int i; + + tbl[0] = tbl[1] = 0; + + if (ALX_FLAG(adpt, USING_MSIX)) { + for (vect = 1, i = 0; i < adpt->nr_txq; i++, vect++) { + idx = txq_vec_mapping_shift[i * 2]; + shft = txq_vec_mapping_shift[i * 2 + 1]; + tbl[idx] |= vect << shft; + } + for (vect = 1, i = 0; i < adpt->nr_rxq; i++, vect++) { + idx = rxq_vec_mapping_shift[i * 2]; + shft = rxq_vec_mapping_shift[i * 2 + 1]; + tbl[idx] |= vect << shft; + } + } + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL1, tbl[0]); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL2, tbl[1]); + ALX_MEM_W32(hw, ALX_MSI_ID_MAP, 0); +} + +void alx_disable_advanced_intr(struct alx_adapter *adpt) +{ + alx_disable_msix(adpt); + alx_disable_msi(adpt); + + /* clear vector/intr-event mapping */ + alx_config_vector_mapping(adpt); +} + +static void alx_irq_enable(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i; + + if (!atomic_dec_and_test(&adpt->irq_sem)) + return; + + /* level-1 interrupt switch */ + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + ALX_MEM_FLUSH(hw); + + if (!ALX_FLAG(adpt, USING_MSIX)) + return; + + /* enable all individual MSIX IRQs */ + for (i = 0; i < adpt->nr_vec; i++) + alx_mask_msix(hw, i, false); +} + +static void alx_irq_disable(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i; + + atomic_inc(&adpt->irq_sem); + + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + ALX_MEM_FLUSH(hw); + + if (ALX_FLAG(adpt, USING_MSIX)) { + for (i = 0; i < adpt->nr_vec; i++) { + alx_mask_msix(hw, i, true); + synchronize_irq(adpt->msix_ent[i].vector); + } + } else { + synchronize_irq(adpt->pdev->irq); + } +} + +static int alx_request_irq(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int err; + u32 msi_ctrl; + + msi_ctrl = FIELDX(ALX_MSI_RETRANS_TM, hw->imt >> 1); + + if (ALX_FLAG(adpt, USING_MSIX)) { + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, msi_ctrl); + err = alx_request_msix(adpt); + if (!err) + goto out; + /* fall back to MSI or legacy interrupt mode, + * re-alloc all resources + */ + alx_free_all_ring_resources(adpt); + alx_disable_msix(adpt); + adpt->nr_rxq = 1; + adpt->nr_txq = 1; + adpt->nr_napi = 1; + adpt->nr_vec = 1; + adpt->nr_hwrxq = 1; + alx_configure_rss(hw, false); + if (!pci_enable_msi(pdev)) + ALX_FLAG_SET(adpt, USING_MSI); + + err = alx_setup_all_ring_resources(adpt); + if (err) + goto out; + } + + if (ALX_FLAG(adpt, USING_MSI)) { + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + msi_ctrl | ALX_MSI_MASK_SEL_LINE); + err = request_irq(pdev->irq, alx_intr_msi, 0, + adpt->netdev->name, adpt); + if (!err) + goto out; + /* fall back to legacy interrupt */ + alx_disable_msi(adpt); + } + + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, 0); + err = request_irq(pdev->irq, alx_intr_legacy, IRQF_SHARED, + adpt->netdev->name, adpt); + + if (err) + netif_err(adpt, intr, adpt->netdev, + "request shared irq failed, err = %d\n", + err); + +out: + if (likely(!err)) { + alx_config_vector_mapping(adpt); + + netif_info(adpt, drv, adpt->netdev, + "nr_rxq=%d, nr_txq=%d, nr_napi=%d, nr_vec=%d\n", + adpt->nr_rxq, adpt->nr_txq, + adpt->nr_napi, adpt->nr_vec); + netif_info(adpt, drv, adpt->netdev, + "flags=%lX, Interrupt Mode: %s\n", + adpt->flags, + ALX_FLAG(adpt, USING_MSIX) ? "MSIX" : + ALX_FLAG(adpt, USING_MSI) ? "MSI" : "INTx"); + } else + netdev_err(adpt->netdev, + "register IRQ fail %d\n", + err); + + return err; +} + +static void alx_free_irq(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + int i, vec; + + if (ALX_FLAG(adpt, USING_MSIX)) { + free_irq(adpt->msix_ent[0].vector, adpt); + vec = 1; + for (i = 0; i < adpt->nr_napi; i++, vec++) + free_irq(adpt->msix_ent[vec].vector, adpt->qnapi[i]); + } else { + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); +} + + +static int alx_identify_hw(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int rev; + int err = -EINVAL; + + hw->device_id = pdev->device; + hw->subdev_id = pdev->subsystem_device; + hw->subven_id = pdev->subsystem_vendor; + hw->revision = pdev->revision; + rev = ALX_REVID(hw); + + switch (ALX_DID(hw)) { + case ALX_DEV_ID_AR8161: + case ALX_DEV_ID_AR8162: + case ALX_DEV_ID_AR8171: + case ALX_DEV_ID_AR8172: + if (rev > ALX_REV_C0) + break; + err = 0; + ALX_CAP_SET(hw, L0S); + ALX_CAP_SET(hw, L1); + ALX_CAP_SET(hw, MTQ); + ALX_CAP_SET(hw, RSS); + ALX_CAP_SET(hw, MSIX); + ALX_CAP_SET(hw, SWOI); + hw->max_dma_chnl = rev >= ALX_REV_B0 ? 4 : 2; + if (rev < ALX_REV_C0) { + hw->ptrn_ofs = 0x600; + hw->max_ptrns = 8; + pdev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; + } else { + hw->ptrn_ofs = 0x14000; + hw->max_ptrns = 16; + } + break; + } + + if (!err && ALX_DID(hw) & 1) + ALX_CAP_SET(hw, GIGA); + + return err; +} + + +static const u8 def_rss_key[40] = { + 0xE2, 0x91, 0xD7, 0x3D, 0x18, 0x05, 0xEC, 0x6C, + 0x2A, 0x94, 0xB3, 0x0D, 0xA5, 0x4F, 0x2B, 0xEC, + 0xEA, 0x49, 0xAF, 0x7C, 0xE2, 0x14, 0xAD, 0x3D, + 0xB8, 0x55, 0xAA, 0xBE, 0x6A, 0x3E, 0x67, 0xEA, + 0x14, 0x36, 0x4D, 0x17, 0x3B, 0xED, 0x20, 0x0D, +}; + +void alx_init_def_rss_idt(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i, x, y; + u32 val; + + for (i = 0; i < hw->rss_idt_size; i++) { + val = ethtool_rxfh_indir_default(i, adpt->nr_rxq); + x = i >> 3; + y = i * 4 & 0x1F; + hw->rss_idt[x] &= ~(0xF << y); + hw->rss_idt[x] |= (val & 0xF) << y; + } +} + +/* alx_init_adapter - + * initialize general software structure (struct alx_adapter). + * fields are inited based on PCI device information. + */ +static int alx_init_sw(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int i, err; + + err = alx_identify_hw(adpt); + if (err) { + dev_err(&pdev->dev, "unrecognize the chip, aborting\n"); + return err; + } + + /* assign patch flag for specific platforms */ + alx_patch_assign(hw); + + memcpy(hw->rss_key, def_rss_key, sizeof(def_rss_key)); + hw->rss_idt_size = 128; + hw->rss_hash_type = ALX_RSS_HASH_TYPE_ALL; + hw->smb_timer = 400; + hw->mtu = adpt->netdev->mtu; + adpt->rxbuf_size = ALIGN(ALX_RAW_MTU(hw->mtu), 8); + adpt->tx_ringsz = 256; + adpt->rx_ringsz = 512; + hw->sleep_ctrl = ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_WOL_PHY; + hw->imt = 200; + hw->imask = ALX_ISR_MISC; + hw->dma_chnl = hw->max_dma_chnl; + hw->ith_tpd = adpt->tx_ringsz / 3; + hw->link_up = false; + hw->link_duplex = 0; + hw->link_speed = SPEED_0; + hw->adv_cfg = ADVERTISED_Autoneg | + ADVERTISED_10baseT_Half | + ADVERTISED_10baseT_Full | + ADVERTISED_100baseT_Full | + ADVERTISED_100baseT_Half | + ADVERTISED_1000baseT_Full; + hw->flowctrl = ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX; + hw->wrr_ctrl = ALX_WRR_PRI_RESTRICT_NONE; + for (i = 0; i < ARRAY_SIZE(hw->wrr); i++) + hw->wrr[i] = 4; + + hw->rx_ctrl = ALX_MAC_CTRL_WOLSPED_SWEN | + ALX_MAC_CTRL_MHASH_ALG_HI5B | + ALX_MAC_CTRL_BRD_EN | + ALX_MAC_CTRL_PCRCE | + ALX_MAC_CTRL_CRCE | + ALX_MAC_CTRL_RXFC_EN | + ALX_MAC_CTRL_TXFC_EN | + FIELDX(ALX_MAC_CTRL_PRMBLEN, 7); + hw->is_fpga = false; + + atomic_set(&adpt->irq_sem, 1); + ALX_FLAG_SET(adpt, HALT); + + return err; +} + + +static void alx_set_vlan_mode(struct alx_hw *hw, + netdev_features_t features) +{ + if (features & NETIF_F_HW_VLAN_RX) + hw->rx_ctrl |= ALX_MAC_CTRL_VLANSTRIP; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_VLANSTRIP; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + + +static netdev_features_t alx_fix_features(struct net_device *netdev, + netdev_features_t features) +{ + /* + * Since there is no support for separate rx/tx vlan accel + * enable/disable make sure tx flag is always in same state as rx. + */ + if (features & NETIF_F_HW_VLAN_RX) + features |= NETIF_F_HW_VLAN_TX; + else + features &= ~NETIF_F_HW_VLAN_TX; + + if (netdev->mtu > ALX_MAX_TSO_PKT_SIZE) + features &= ~(NETIF_F_TSO | NETIF_F_TSO6); + + return features; +} + + +static int alx_set_features(struct net_device *netdev, + netdev_features_t features) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + netdev_features_t changed = netdev->features ^ features; + + if (!(changed & NETIF_F_HW_VLAN_RX)) + return 0; + + alx_set_vlan_mode(&adpt->hw, features); + + return 0; +} + +/* alx_change_mtu - Change the Maximum Transfer Unit */ +static int alx_change_mtu(struct net_device *netdev, int new_mtu) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int old_mtu = netdev->mtu; + int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; + + if ((max_frame < ALX_MIN_FRAME_SIZE) || + (max_frame > ALX_MAX_FRAME_SIZE)) { + netif_err(adpt, hw, netdev, + "invalid MTU setting (%x)\n", + new_mtu); + return -EINVAL; + } + /* set MTU */ + if (old_mtu != new_mtu) { + netif_info(adpt, drv, adpt->netdev, + "changing MTU from %d to %d\n", + netdev->mtu, new_mtu); + netdev->mtu = new_mtu; + adpt->hw.mtu = new_mtu; + adpt->rxbuf_size = new_mtu > ALX_DEF_RXBUF_SIZE ? + ALIGN(max_frame, 8) : ALX_DEF_RXBUF_SIZE; + netdev_update_features(netdev); + if (netif_running(netdev)) + alx_reinit(adpt, false); + } + + return 0; +} + +/* configure hardware everything except: + * 1. interrupt vectors + * 2. enable control for rx modules + */ +void alx_configure(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + + alx_configure_basic(hw); + alx_configure_rss(hw, adpt->nr_rxq > 1); + __alx_set_rx_mode(adpt->netdev); + alx_set_vlan_mode(hw, adpt->netdev->features); +} + +static void alx_netif_stop(struct alx_adapter *adpt) +{ + int i; + + adpt->netdev->trans_start = jiffies; + if (netif_carrier_ok(adpt->netdev)) { + netif_carrier_off(adpt->netdev); + netif_tx_disable(adpt->netdev); + for (i = 0; i < adpt->nr_napi; i++) + napi_disable(&adpt->qnapi[i]->napi); + } +} + +static void alx_netif_start(struct alx_adapter *adpt) +{ + int i; + + netif_tx_wake_all_queues(adpt->netdev); + for (i = 0; i < adpt->nr_napi; i++) + napi_enable(&adpt->qnapi[i]->napi); + netif_carrier_on(adpt->netdev); +} + +static bool alx_enable_msix(struct alx_adapter *adpt) +{ + int nr_txq, nr_rxq, vec_req; + int i, err; + + nr_txq = min_t(int, num_online_cpus(), ALX_MAX_TX_QUEUES); + nr_rxq = min_t(int, num_online_cpus(), ALX_MAX_RX_QUEUES); + nr_rxq = rounddown_pow_of_two(nr_rxq); + /* one more vector for PHY link change & timer & other events */ + vec_req = max_t(int, nr_txq, nr_rxq) + 1; + + if (vec_req <= 2) { + netif_info(adpt, intr, adpt->netdev, + "cpu core num is less, MSI-X isn't necessary\n"); + return false; + } + + adpt->msix_ent = kcalloc(vec_req, + sizeof(struct msix_entry), + GFP_KERNEL); + if (!adpt->msix_ent) { + netif_warn(adpt, intr, adpt->netdev, + "can't alloc msix entries\n"); + return false; + } + for (i = 0; i < vec_req; i++) + adpt->msix_ent[i].entry = i; + + err = pci_enable_msix(adpt->pdev, adpt->msix_ent, vec_req); + if (err) { + kfree(adpt->msix_ent); + adpt->msix_ent = NULL; + netif_warn(adpt, intr, adpt->netdev, + "can't enable MSI-X interrupt\n"); + return false; + } + + adpt->nr_txq = nr_txq; + adpt->nr_rxq = nr_rxq; + adpt->nr_vec = vec_req; + adpt->nr_napi = vec_req - 1; + adpt->nr_hwrxq = ALX_CAP(&adpt->hw, MRQ) ? adpt->nr_rxq : 1; + + return true; +} + +void alx_init_intr(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + + if ((ALX_CAP(hw, MTQ) || ALX_CAP(hw, RSS)) && ALX_CAP(hw, MSIX)) { + if (alx_enable_msix(adpt)) + ALX_FLAG_SET(adpt, USING_MSIX); + } + if (!ALX_FLAG(adpt, USING_MSIX)) { + adpt->nr_txq = 1; + adpt->nr_rxq = 1; + adpt->nr_napi = 1; + adpt->nr_vec = 1; + adpt->nr_hwrxq = 1; + + if (!pci_enable_msi(adpt->pdev)) + ALX_FLAG_SET(adpt, USING_MSI); + } +} + +static int __alx_open(struct alx_adapter *adpt, bool resume) +{ + int err; + + /* decide interrupt mode, some resources allocation depend on it */ + alx_init_intr(adpt); + + /* init rss indirection table */ + alx_init_def_rss_idt(adpt); + + if (!resume) + netif_carrier_off(adpt->netdev); + + /* allocate all memory resources */ + err = alx_setup_all_ring_resources(adpt); + if (err) + goto err_out; + + /* make hardware ready before allocate interrupt */ + alx_configure(adpt); + + err = alx_request_irq(adpt); + if (err) + goto err_out; + + /* netif_set_real_num_tx/rx_queues need rtnl_lock held */ + if (resume) + rtnl_lock(); + netif_set_real_num_tx_queues(adpt->netdev, adpt->nr_txq); + netif_set_real_num_rx_queues(adpt->netdev, adpt->nr_rxq); + if (resume) + rtnl_unlock(); + + ALX_FLAG_CLEAR(adpt, HALT); + + /* clear old interrupts */ + ALX_MEM_W32(&adpt->hw, ALX_ISR, (u32)~ALX_ISR_DIS); + + alx_irq_enable(adpt); + + if (!resume) + netif_tx_start_all_queues(adpt->netdev); + + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); + return 0; + +err_out: + + alx_free_all_ring_resources(adpt); + alx_disable_advanced_intr(adpt); + return err; +} + +static void alx_halt(struct alx_adapter *adpt, bool in_task) +{ + struct alx_hw *hw = &adpt->hw; + + ALX_FLAG_SET(adpt, HALT); + if (!in_task) + alx_cancel_work(adpt); + + alx_netif_stop(adpt); + hw->link_up = false; + hw->link_speed = SPEED_0; + + alx_reset_mac(hw); + + /* disable l0s/l1 */ + alx_enable_aspm(hw, false, false); + alx_irq_disable(adpt); + alx_free_all_rings_buf(adpt); +} + +static void alx_activate(struct alx_adapter *adpt) +{ + /* hardware setting lost, restore it */ + alx_reinit_rings(adpt); + alx_configure(adpt); + + ALX_FLAG_CLEAR(adpt, HALT); + /* clear old interrupts */ + ALX_MEM_W32(&adpt->hw, ALX_ISR, (u32)~ALX_ISR_DIS); + + alx_irq_enable(adpt); + + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); +} + +static void __alx_stop(struct alx_adapter *adpt) +{ + alx_halt(adpt, false); + + alx_free_irq(adpt); + + alx_free_all_ring_resources(adpt); +} + +static void alx_init_ring_ptrs(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_napi *np; + int i, tx_idx, rx_idx; + u32 addr_hi; + u16 txring_header_reg[] = {ALX_TPD_PRI0_ADDR_LO, ALX_TPD_PRI1_ADDR_LO, + ALX_TPD_PRI2_ADDR_LO, ALX_TPD_PRI3_ADDR_LO}; + u16 rfdring_header_reg[] = {ALX_RFD_ADDR_LO}; + u16 rrdring_header_reg[] = {ALX_RRD_ADDR_LO}; + + tx_idx = 0; + rx_idx = 0; + for (i = 0; i < adpt->nr_napi; i++) { + np = adpt->qnapi[i]; + if (np->rxq) { + np->rxq->pidx = 0; + np->rxq->cidx = 0; + np->rxq->rrd_cidx = 0; + if (!ALX_CAP(hw, MRQ) && rx_idx == 0) { + ALX_MEM_W32(hw, rfdring_header_reg[0], + np->rxq->rfd_dma); + ALX_MEM_W32(hw, rrdring_header_reg[0], + np->rxq->rrd_dma); + } + rx_idx++; + } + if (np->txq) { + np->txq->pidx = 0; + atomic_set(&np->txq->cidx, 0); + ALX_MEM_W32(hw, txring_header_reg[tx_idx], + np->txq->tpd_dma); + tx_idx++; + } + } + + addr_hi = ((u64)adpt->ring_header.dma) >> 32; + ALX_MEM_W32(hw, ALX_TX_BASE_ADDR_HI, addr_hi); + ALX_MEM_W32(hw, ALX_RX_BASE_ADDR_HI, addr_hi); + ALX_MEM_W32(hw, ALX_TPD_RING_SZ, adpt->tx_ringsz); + ALX_MEM_W32(hw, ALX_RRD_RING_SZ, adpt->rx_ringsz); + ALX_MEM_W32(hw, ALX_RFD_RING_SZ, adpt->rx_ringsz); + ALX_MEM_W32(hw, ALX_RFD_BUF_SZ, adpt->rxbuf_size); + + /* load these ptrs into chip internal */ + ALX_MEM_W32(hw, ALX_SRAM9, ALX_SRAM_LOAD_PTR); +} + +static void alx_show_speed(struct alx_adapter *adpt, u16 speed) +{ + netif_info(adpt, link, adpt->netdev, + "NIC Link Up: %s\n", + speed_desc(speed)); +} + +static int alx_reinit_rings(struct alx_adapter *adpt) +{ + int i, err = 0; + + alx_free_all_rings_buf(adpt); + + /* set rings' header to HW register */ + alx_init_ring_ptrs(adpt); + + /* alloc hw-rxing buf */ + for (i = 0; i < adpt->nr_hwrxq; i++) { + int count; + + count = alx_alloc_rxring_buf(adpt, adpt->qnapi[i]->rxq); + if (unlikely(!count)) { + err = -ENOMEM; + break; + } + } + + return err; +} + + + +static void alx_check_link(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u16 speed, old_speed; + bool link_up, old_link_up; + int err; + + if (ALX_FLAG(adpt, HALT)) + return; + + /* clear PHY internal interrupt status, + * otherwise the Main interrupt status will be asserted + * for ever. + */ + alx_clear_phy_intr(hw); + + err = alx_get_phy_link(hw, &link_up, &speed); + if (err) + goto out; + + /* open interrutp mask */ + hw->imask |= ALX_ISR_PHY; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + + if (!link_up && !hw->link_up) + goto out; + + old_speed = hw->link_speed + hw->link_duplex; + old_link_up = hw->link_up; + + if (link_up) { + /* same speed ? */ + if (old_link_up && old_speed == speed) + goto out; + + alx_show_speed(adpt, speed); + hw->link_duplex = speed % 10; + hw->link_speed = speed - hw->link_duplex; + hw->link_up = true; + alx_post_phy_link(hw, hw->link_speed, ALX_CAP(hw, AZ)); + alx_enable_aspm(hw, ALX_CAP(hw, L0S), ALX_CAP(hw, L1)); + alx_start_mac(hw); + + /* link kept, just speed changed */ + if (old_link_up) + goto out; + /* link changed from 'down' to 'up' */ + alx_netif_start(adpt); + goto out; + } + + /* link changed from 'up' to 'down' */ + alx_netif_stop(adpt); + hw->link_up = false; + hw->link_speed = SPEED_0; + netif_info(adpt, link, adpt->netdev, "NIC Link Down\n"); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "linkdown:reset_mac fail %d\n", err); + err = -EIO; + goto out; + } + alx_irq_disable(adpt); + + /* reset-mac cause all settings on HW lost, + * following steps restore all of them and + * refresh whole RX/TX rings + */ + err = alx_reinit_rings(adpt); + if (err) + goto out; + alx_configure(adpt); + alx_enable_aspm(hw, false, ALX_CAP(hw, L1)); + alx_post_phy_link(hw, SPEED_0, ALX_CAP(hw, AZ)); + alx_irq_enable(adpt); + +out: + + if (err) { + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + } +} + +/* alx_open - Called when a network interface is made active */ +static int alx_open(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int err; + + /* during diag running, disallow open */ + if (ALX_FLAG(adpt, TESTING)) + return -EBUSY; + + err = __alx_open(adpt, false); + + return err; +} + +/* alx_stop - Disables a network interface */ +static int alx_stop(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + WARN_ON(ALX_FLAG(adpt, RESETING)); + + __alx_stop(adpt); + + return 0; +} + +static int __alx_shutdown(struct pci_dev *pdev, bool *wol_en) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + struct alx_hw *hw = &adpt->hw; + int err; + u16 speed; + + netif_device_detach(netdev); + if (netif_running(netdev)) + __alx_stop(adpt); + +#ifdef CONFIG_PM_SLEEP + err = pci_save_state(pdev); + if (err) + goto out; +#endif + + err = alx_select_powersaving_speed(hw, &speed); + if (!err) + err = alx_clear_phy_intr(hw); + if (!err) + err = alx_pre_suspend(hw, speed); + if (!err) + err = alx_config_wol(hw); + if (err) + goto out; + + *wol_en = false; + if (hw->sleep_ctrl & ALX_SLEEP_ACTIVE) { + netif_info(adpt, wol, netdev, + "wol: ctrl=%X, speed=%X\n", + hw->sleep_ctrl, speed); + + device_set_wakeup_enable(&pdev->dev, true); + *wol_en = true; + } + + pci_disable_device(pdev); + +out: + if (unlikely(err)) { + netif_info(adpt, hw, netdev, + "shutown err(%x)\n", + err); + err = -EIO; + } + + return err; +} + +static void alx_shutdown(struct pci_dev *pdev) +{ + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (likely(!err)) { + pci_wake_from_d3(pdev, wol_en); + pci_set_power_state(pdev, PCI_D3hot); + } else { + dev_err(&pdev->dev, "shutdown fail %d\n", err); + } +} + +#ifdef CONFIG_PM_SLEEP +static int alx_suspend(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (unlikely(err)) { + dev_err(&pdev->dev, "shutdown fail in suspend %d\n", err); + err = -EIO; + goto out; + } + if (wol_en) { + pci_prepare_to_sleep(pdev); + } else { + pci_wake_from_d3(pdev, false); + pci_set_power_state(pdev, PCI_D3hot); + } + +out: + return err; +} + +static int alx_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + struct alx_hw *hw = &adpt->hw; + int err; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + pci_save_state(pdev); + + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + hw->link_up = false; + hw->link_speed = SPEED_0; + hw->imask = ALX_ISR_MISC; + + alx_reset_pcie(hw); + alx_reset_phy(hw, !hw->hib_patch); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "resume:reset_mac fail %d\n", + err); + return -EIO; + } + err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "resume:setup_speed_duplex fail %d\n", + err); + return -EIO; + } + + if (netif_running(netdev)) { + err = __alx_open(adpt, true); + if (err) + return err; + } + + netif_device_attach(netdev); + + return err; +} +#endif + + + +/* alx_update_hw_stats - Update the board statistics counters. */ +static void alx_update_hw_stats(struct alx_adapter *adpt) +{ + if (ALX_FLAG(adpt, HALT) || ALX_FLAG(adpt, RESETING)) + return; + + __alx_update_hw_stats(&adpt->hw); +} + +/* alx_get_stats - Get System Network Statistics + * + * Returns the address of the device statistics structure. + * The statistics are actually updated from the timer callback. + */ +static struct net_device_stats *alx_get_stats(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct net_device_stats *net_stats = &netdev->stats; + struct alx_hw_stats *hw_stats = &adpt->hw.stats; + + spin_lock(&adpt->smb_lock); + + alx_update_hw_stats(adpt); + + net_stats->tx_packets = hw_stats->tx_ok; + net_stats->tx_bytes = hw_stats->tx_byte_cnt; + net_stats->rx_packets = hw_stats->rx_ok; + net_stats->rx_bytes = hw_stats->rx_byte_cnt; + net_stats->multicast = hw_stats->rx_mcast; + net_stats->collisions = hw_stats->tx_single_col + + hw_stats->tx_multi_col * 2 + + hw_stats->tx_late_col + hw_stats->tx_abort_col; + + net_stats->rx_errors = hw_stats->rx_frag + hw_stats->rx_fcs_err + + hw_stats->rx_len_err + hw_stats->rx_ov_sz + + hw_stats->rx_ov_rrd + hw_stats->rx_align_err; + + net_stats->rx_fifo_errors = hw_stats->rx_ov_rxf; + net_stats->rx_length_errors = hw_stats->rx_len_err; + net_stats->rx_crc_errors = hw_stats->rx_fcs_err; + net_stats->rx_frame_errors = hw_stats->rx_align_err; + net_stats->rx_over_errors = hw_stats->rx_ov_rrd + hw_stats->rx_ov_rxf; + + net_stats->rx_missed_errors = hw_stats->rx_ov_rrd + hw_stats->rx_ov_rxf; + + net_stats->tx_errors = hw_stats->tx_late_col + hw_stats->tx_abort_col + + hw_stats->tx_underrun + hw_stats->tx_trunc; + + net_stats->tx_aborted_errors = hw_stats->tx_abort_col; + net_stats->tx_fifo_errors = hw_stats->tx_underrun; + net_stats->tx_window_errors = hw_stats->tx_late_col; + + spin_unlock(&adpt->smb_lock); + + return net_stats; +} + +static void alx_update_stats(struct alx_adapter *adpt) +{ + spin_lock(&adpt->smb_lock); + alx_update_hw_stats(adpt); + spin_unlock(&adpt->smb_lock); +} + +void alx_reinit(struct alx_adapter *adpt, bool in_task) +{ + WARN_ON(in_interrupt()); + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + if (ALX_FLAG(adpt, HALT)) + return; + + alx_halt(adpt, in_task); + alx_activate(adpt); + + ALX_FLAG_CLEAR(adpt, RESETING); +} + +/* alx_task - manages and runs subtasks */ +static void alx_task(struct work_struct *work) +{ + struct alx_adapter *adpt = container_of(work, struct alx_adapter, task); + + /* don't support reentrance */ + while (test_and_set_bit(ALX_FLAG_TASK_PENDING, &adpt->flags)) + msleep(20); + + if (ALX_FLAG(adpt, HALT)) + goto out; + + if (test_and_clear_bit(ALX_FLAG_TASK_RESET, &adpt->flags)) { + netif_info(adpt, hw, adpt->netdev, + "task:alx_reinit\n"); + alx_reinit(adpt, true); + } + + if (test_and_clear_bit(ALX_FLAG_TASK_UPDATE_SMB, &adpt->flags)) + alx_update_stats(adpt); + + if (test_and_clear_bit(ALX_FLAG_TASK_CHK_LINK, &adpt->flags)) + alx_check_link(adpt); + +out: + ALX_FLAG_CLEAR(adpt, TASK_PENDING); +} + + +static irqreturn_t alx_msix_ring(int irq, void *data) +{ + struct alx_napi *np = data; + struct alx_adapter *adpt = np->adpt; + struct alx_hw *hw = &adpt->hw; + + /* mask interrupt to ACK chip */ + alx_mask_msix(hw, np->vec_idx, true); + /* clear interrutp status */ + ALX_MEM_W32(hw, ALX_ISR, np->vec_mask); + + if (!ALX_FLAG(adpt, HALT)) + napi_schedule(&np->napi); + + return IRQ_HANDLED; +} + +static inline bool alx_handle_intr_misc(struct alx_adapter *adpt, u32 intr) +{ + struct alx_hw *hw = &adpt->hw; + + if (unlikely(intr & ALX_ISR_FATAL)) { + netif_info(adpt, hw, adpt->netdev, + "intr-fatal:%08X\n", intr); + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + return true; + } + + if (intr & ALX_ISR_ALERT) + netdev_warn(adpt->netdev, "interrutp alert :%x\n", intr); + + if (intr & ALX_ISR_SMB) { + ALX_FLAG_SET(adpt, TASK_UPDATE_SMB); + alx_schedule_work(adpt); + } + + if (intr & ALX_ISR_PHY) { + /* suppress PHY interrupt, because the source + * is from PHY internal. only the internal status + * is cleared, the interrupt status could be cleared. + */ + hw->imask &= ~ALX_ISR_PHY; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); + } + + return false; +} + +static irqreturn_t alx_intr_msix_misc(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* mask interrupt to ACK chip */ + alx_mask_msix(hw, 0, true); + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + intr &= (hw->imask & ~ALX_ISR_ALL_QUEUES); + + if (alx_handle_intr_misc(adpt, intr)) + return IRQ_HANDLED; + + /* clear interrupt status */ + ALX_MEM_W32(hw, ALX_ISR, intr); + + /* enable interrupt again */ + if (!ALX_FLAG(adpt, HALT)) + alx_mask_msix(hw, 0, false); + + return IRQ_HANDLED; +} + +static inline irqreturn_t alx_intr_1(struct alx_adapter *adpt, u32 intr) +{ + struct alx_hw *hw = &adpt->hw; + + /* ACK interrupt */ + netif_info(adpt, intr, adpt->netdev, + "ACK interrupt: 0x%lx\n", + intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + intr &= hw->imask; + + if (alx_handle_intr_misc(adpt, intr)) + return IRQ_HANDLED; + + if (intr & (ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0)) { + napi_schedule(&adpt->qnapi[0]->napi); + /* mask rx/tx interrupt, enable them when napi complete */ + hw->imask &= ~ALX_ISR_ALL_QUEUES; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + } + + ALX_MEM_W32(hw, ALX_ISR, 0); + + return IRQ_HANDLED; +} + + +static irqreturn_t alx_intr_msi(int irq, void *data) +{ + struct alx_adapter *adpt = data; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(&adpt->hw, ALX_ISR, &intr); + + return alx_intr_1(adpt, intr); +} + +static irqreturn_t alx_intr_legacy(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + if (intr & ALX_ISR_DIS || 0 == (intr & hw->imask)) { + u32 mask; + + ALX_MEM_R32(hw, ALX_IMR, &mask); + netif_info(adpt, intr, adpt->netdev, + "seems a wild interrupt, intr=%X, imask=%X, %X\n", + intr, hw->imask, mask); + + return IRQ_NONE; + } + + return alx_intr_1(adpt, intr); +} + + +static int alx_poll(struct napi_struct *napi, int budget) +{ + struct alx_napi *np = container_of(napi, struct alx_napi, napi); + struct alx_adapter *adpt = np->adpt; + bool complete = true; + + netif_info(adpt, intr, adpt->netdev, + "alx_poll, budget(%d)\n", + budget); + + if (np->txq) + complete = alx_clean_tx_irq(np->txq); + if (np->rxq) + complete &= alx_clean_rx_irq(np->rxq, budget); + + if (!complete) + return budget; + + /* rx-packet finished, exit the polling mode */ + napi_complete(&np->napi); + + /* enable interrupt */ + if (!ALX_FLAG(adpt, HALT)) { + struct alx_hw *hw = &adpt->hw; + + if (ALX_FLAG(adpt, USING_MSIX)) + alx_mask_msix(hw, np->vec_idx, false); + else { + /* TODO: need irq spinlock for imask ?? */ + hw->imask |= ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + } + ALX_MEM_FLUSH(hw); + } + + return 0; +} + +static inline struct alx_tx_queue *alx_tx_queue_mapping( + struct alx_adapter *adpt, + struct sk_buff *skb) +{ + int index = skb_get_queue_mapping(skb); + + if (index >= adpt->nr_txq) + index = index % adpt->nr_txq; + + return adpt->qnapi[index]->txq; +} + +static inline int alx_tpd_req(struct sk_buff *skb) +{ + int num; + + num = skb_shinfo(skb)->nr_frags + 1; + if (skb_is_gso(skb) && skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) + num++; + + return num; +} + +/* get custom checksum offload params + * return val: + * neg-val: drop this skb + * 0: no custom checksum offload + * pos-val: have custom cksum offload + */ +static int alx_tx_csum(struct sk_buff *skb, struct tpd_desc *first) +{ + u8 cso, css; + + if (skb->ip_summed != CHECKSUM_PARTIAL) + return 0; + + cso = skb_checksum_start_offset(skb); + if (cso & 0x1) + return -1; + + css = cso + skb->csum_offset; + first->word1 |= FIELDX(TPD_CXSUMSTART, cso >> 1); + first->word1 |= FIELDX(TPD_CXSUMOFFSET, css >> 1); + first->word1 |= 1 << TPD_CXSUM_EN_SHIFT; + + return 1; +} + +static int alx_tso(struct sk_buff *skb, struct tpd_desc *first) +{ + int hdr_len; + int err; + + if (skb->ip_summed != CHECKSUM_PARTIAL || + !skb_is_gso(skb)) + return 0; + + if (skb_header_cloned(skb)) { + err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); + if (unlikely(err)) + return err; + } + + if (skb->protocol == htons(ETH_P_IP)) { + struct iphdr *iph; + + iph = ip_hdr(skb); + hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); + iph->check = 0; + tcp_hdr(skb)->check = ~csum_tcpudp_magic( + iph->saddr, + iph->daddr, + 0, IPPROTO_TCP, 0); + first->word1 |= 1 << TPD_IPV4_SHIFT; + first->word1 |= FIELDX(TPD_L4HDROFFSET, + skb_transport_offset(skb)); + if (unlikely(skb->len == hdr_len)) { + /* no tcp payload */ + first->word1 |= 1 << TPD_IP_XSUM_SHIFT; + first->word1 |= 1 << TPD_TCP_XSUM_SHIFT; + return 0; + } + first->word1 |= 1 << TPD_LSO_EN_SHIFT; + first->word1 |= FIELDX(TPD_MSS, skb_shinfo(skb)->gso_size); + } else if (skb_is_gso_v6(skb)) { + struct ipv6hdr *ip6h; + + ip6h = ipv6_hdr(skb); + hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); + ip6h->payload_len = 0; + tcp_hdr(skb)->check = ~csum_ipv6_magic( + &ip6h->saddr, + &ip6h->daddr, + 0, IPPROTO_TCP, 0); + first->word1 |= FIELDX(TPD_L4HDROFFSET, + skb_transport_offset(skb)); + if (unlikely(skb->len == hdr_len)) { + /* no tcp payload */ + ip6h->payload_len = skb->len - + ((unsigned char *)ip6h - skb->data) - + sizeof(struct ipv6hdr); + first->word1 |= 1 << TPD_IP_XSUM_SHIFT; + first->word1 |= 1 << TPD_TCP_XSUM_SHIFT; + return 0; + } + /* for LSOv2, the 1st TPD just provides packet length */ + first->adrl.l.pkt_len = skb->len; + first->word1 |= 1 << TPD_LSO_EN_SHIFT; + first->word1 |= 1 << TPD_LSO_V2_SHIFT; + first->word1 |= FIELDX(TPD_MSS, skb_shinfo(skb)->gso_size); + } + + return 1; +} + +static int alx_tx_map(struct alx_tx_queue *txq, struct sk_buff *skb) +{ + struct tpd_desc *tpd, *first_tpd; + struct alx_buffer *buf, *first_buf; + dma_addr_t dma; + u16 producer, maplen, f; + + producer = txq->pidx; + + first_tpd = txq->tpd_hdr + producer; + first_buf = txq->bf_info + producer; + tpd = first_tpd; + buf = first_buf; + if (tpd->word1 & (1 << TPD_LSO_V2_SHIFT)) { + if (++producer == txq->count) + producer = 0; + tpd = txq->tpd_hdr + producer; + buf = txq->bf_info + producer; + tpd->word0 = first_tpd->word0; + tpd->word1 = first_tpd->word1; + } + maplen = skb_headlen(skb); + dma = dma_map_single(txq->dev, skb->data, maplen, DMA_TO_DEVICE); + if (dma_mapping_error(txq->dev, dma)) + goto err_dma; + + dma_unmap_len_set(buf, size, maplen); + dma_unmap_addr_set(buf, dma, dma); + + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, maplen); + + for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { + struct skb_frag_struct *frag; + + frag = &skb_shinfo(skb)->frags[f]; + if (++producer == txq->count) + producer = 0; + tpd = txq->tpd_hdr + producer; + buf = txq->bf_info + producer; + tpd->word0 = first_tpd->word0; + tpd->word1 = first_tpd->word1; + maplen = skb_frag_size(frag); + dma = skb_frag_dma_map(txq->dev, frag, 0, + maplen, DMA_TO_DEVICE); + if (dma_mapping_error(txq->dev, dma)) + goto err_dma; + dma_unmap_len_set(buf, size, maplen); + dma_unmap_addr_set(buf, dma, dma); + + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, maplen); + } + /* last TPD */ + tpd->word1 |= 1 << TPD_EOP_SHIFT; + + if (++producer == txq->count) + producer = 0; + + first_buf->flags |= ALX_BUF_TX_FIRSTFRAG; + buf->skb = skb; + txq->pidx = producer; + + return 0; + +err_dma: + + for (f = txq->pidx; f != producer;) { + alx_txbuf_unmap_and_free(txq, f); + if (++f == txq->count) + f = 0; + } + return -1; +} + +static netdev_tx_t alx_start_xmit_ring(struct alx_tx_queue *txq, + struct sk_buff *skb) +{ + struct alx_adapter *adpt; + struct netdev_queue *netque; + struct tpd_desc *first; + int budget, tpdreq; + int do_tso; + + adpt = netdev_priv(txq->netdev); + netque = netdev_get_tx_queue(txq->netdev, skb_get_queue_mapping(skb)); + + tpdreq = alx_tpd_req(skb); + budget = alx_tpd_avail(txq); + + if (unlikely(budget < tpdreq)) { + if (!netif_tx_queue_stopped(netque)) { + netif_tx_stop_queue(netque); + + /* TX reclaim might have plenty of free TPD + * but see tx_queue is active (because its + * judement doesn't acquire tx-spin-lock, + * this situation cause the TX-queue stop and + * never be wakeup. + * try one more time + */ + budget = alx_tpd_avail(txq); + if (budget >= tpdreq) { + netif_tx_wake_queue(netque); + goto tx_conti; + } + netif_err(adpt, tx_err, adpt->netdev, + "TPD Ring is full when queue awake!\n"); + } + return NETDEV_TX_BUSY; + } + +tx_conti: + + first = txq->tpd_hdr + txq->pidx; + memset(first, 0, sizeof(struct tpd_desc)); + + /* NOTE, chip only supports single-VLAN insertion (81-00-TAG) */ + if (vlan_tx_tag_present(skb)) { + first->word1 |= 1 << TPD_INS_VLTAG_SHIFT; + first->word0 |= FIELDX(TPD_VLTAG, htons(vlan_tx_tag_get(skb))); + } + if (skb->protocol == htons(ETH_P_8021Q)) + first->word1 |= 1 << TPD_VLTAGGED_SHIFT; + if (skb_network_offset(skb) != ETH_HLEN) + first->word1 |= 1 << TPD_ETHTYPE_SHIFT; + + do_tso = alx_tso(skb, first); + if (do_tso < 0) + goto drop; + else if (!do_tso && alx_tx_csum(skb, first) < 0) + goto drop; + + if (alx_tx_map(txq, skb) < 0) + goto drop; + + netdev_tx_sent_queue(netque, skb->len); + + /* refresh produce idx on HW */ + wmb(); + ALX_MEM_W16(&adpt->hw, txq->p_reg, txq->pidx); + + netif_info(adpt, tx_done, adpt->netdev, + "TX[Preg:%X]: producer = 0x%x, consumer = 0x%x\n", + txq->p_reg, txq->pidx, atomic_read(&txq->cidx)); + + return NETDEV_TX_OK; + +drop: + netif_info(adpt, tx_done, adpt->netdev, + "tx-skb(%d) dropped\n", + skb->len); + memset(first, 0, sizeof(struct tpd_desc)); + dev_kfree_skb(skb); + + return NETDEV_TX_OK; +} + +static netdev_tx_t alx_start_xmit(struct sk_buff *skb, + struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (ALX_FLAG(adpt, HALT)) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + if (skb->len <= 0) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + return alx_start_xmit_ring(alx_tx_queue_mapping(adpt, skb), skb); +} + + +static void alx_dump_state(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_tx_queue *txq; + struct tpd_desc *tpd; + u16 begin, end; + int i; + + for (i = 0; i < adpt->nr_txq; i++) { + + txq = adpt->qnapi[i]->txq; + begin = txq->pidx >= 8 ? (txq->pidx - 8) : + (txq->count + txq->pidx - 8); + end = txq->pidx + 4; + if (end >= txq->count) + end -= txq->count; + + netif_err(adpt, tx_err, adpt->netdev, + "-----------------TPD-ring(%d)------------------\n", + i); + + while (begin != end) { + tpd = txq->tpd_hdr + begin; + netif_err(adpt, tx_err, adpt->netdev, + "%X: W0=%08X, W1=%08X, W2=%X\n", + begin, tpd->word0, tpd->word1, + tpd->adrl.l.pkt_len); + if (++begin >= txq->count) + begin = 0; + } + } + + netif_err(adpt, tx_err, adpt->netdev, + "---------------dump registers-----------------\n"); + end = 0x1800; + for (begin = 0x1400; begin < end; begin += 16) { + u32 v1, v2, v3, v4; + + ALX_MEM_R32(hw, begin, &v1); + ALX_MEM_R32(hw, begin+4, &v2); + ALX_MEM_R32(hw, begin+8, &v3); + ALX_MEM_R32(hw, begin+12, &v4); + netif_err(adpt, tx_err, adpt->netdev, + "%04X: %08X,%08X,%08X,%08X\n", + begin, v1, v2, v3, v4); + } +} + +static void alx_tx_timeout(struct net_device *dev) +{ + struct alx_adapter *adpt = netdev_priv(dev); + + alx_dump_state(adpt); + + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); +} + +static int alx_mdio_read(struct net_device *netdev, + int prtad, int devad, u16 addr) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u16 val; + int err; + + netif_dbg(adpt, hw, netdev, + "alx_mdio_read, prtad=%d, devad=%d, addr=%X\n", + prtad, devad, addr); + + if (prtad != hw->mdio.prtad) + return -EINVAL; + + if (devad != MDIO_DEVAD_NONE) + err = alx_read_phy_ext(hw, devad, addr, &val); + else + err = alx_read_phy_reg(hw, addr, &val); + + return err ? -EIO : val; +} + +static int alx_mdio_write(struct net_device *netdev, + int prtad, int devad, u16 addr, u16 val) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + int err; + + netif_dbg(adpt, hw, netdev, + "alx_mdio_write: prtad=%d, devad=%d, addr=%X, val=%X\n", + prtad, devad, addr, val); + + if (prtad != hw->mdio.prtad) + return -EINVAL; + + if (devad != MDIO_DEVAD_NONE) + err = alx_write_phy_ext(hw, devad, addr, val); + else + err = alx_write_phy_reg(hw, addr, val); + + return err ? -EIO : 0; +} + +static int alx_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (!netif_running(netdev)) + return -EAGAIN; + + return mdio_mii_ioctl(&adpt->hw.mdio, if_mii(ifr), cmd); +} + +#ifdef CONFIG_NET_POLL_CONTROLLER +static void alx_poll_controller(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int i; + + if (ALX_FLAG(adpt, HALT)) + return; + + if (ALX_FLAG(adpt, USING_MSIX)) { + alx_intr_msix_misc(0, adpt); + for (i = 0; i < adpt->nr_napi; i++) + alx_msix_ring(0, adpt->qnapi[i]); + } else if (ALX_FLAG(adpt, USING_MSI)) + alx_intr_msi(0, adpt); + else + alx_intr_legacy(0, adpt); + +} +#endif + +static const struct net_device_ops alx_netdev_ops = { + .ndo_open = alx_open, + .ndo_stop = alx_stop, + .ndo_start_xmit = alx_start_xmit, + .ndo_get_stats = alx_get_stats, + .ndo_set_rx_mode = alx_set_rx_mode, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = alx_set_mac_address, + .ndo_change_mtu = alx_change_mtu, + .ndo_do_ioctl = alx_ioctl, + .ndo_tx_timeout = alx_tx_timeout, + .ndo_fix_features = alx_fix_features, + .ndo_set_features = alx_set_features, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = alx_poll_controller, +#endif +}; + +/* alx_probe - Device Initialization Routine */ +static int +alx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + struct net_device *netdev; + struct alx_adapter *adpt = NULL; + struct alx_hw *hw; + bool phy_cfged; + int bars, pm_cap, err; + static int cards_found; + + /* enable device (incl. PCI PM wakeup and hotplug setup) */ + err = pci_enable_device_mem(pdev); + if (err) { + dev_err(&pdev->dev, "cannot enable PCI device memory\n"); + return err; + } + + /* The alx chip can DMA to 64-bit addresses, but it uses a single + * shared register for the high 32 bits, so only a single, aligned, + * 4 GB physical address range can be used at a time. + */ + if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) && + !dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) { + dev_dbg(&pdev->dev, "DMA to 64-BIT addresses\n"); + } else { + err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + if (err) { + err = dma_set_coherent_mask(&pdev->dev, + DMA_BIT_MASK(32)); + if (err) { + dev_err(&pdev->dev, + "No usable DMA config, aborting\n"); + goto err_dma_mask; + } + } + } + + /* obtain PCI resources */ + bars = pci_select_bars(pdev, IORESOURCE_MEM); + err = pci_request_selected_regions(pdev, bars, alx_drv_name); + if (err) { + dev_err(&pdev->dev, + "pci_request_selected_regions failed(bars:%d)\n", bars); + goto err_pci_region; + } + + pci_enable_pcie_error_reporting(pdev); + pci_set_master(pdev); + + /* find PM capability */ + pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM); + if (pm_cap == 0) { + dev_err(&pdev->dev, + "Can't find power management capability, aborting\n"); + err = -EIO; + goto err_pm; + } + err = pci_set_power_state(pdev, PCI_D0); + if (err) { + dev_err(&pdev->dev, "switch to D0 status failed, aborting\n"); + goto err_pm; + } + + /* netdev zeroed in init_etherdev */ + netdev = alloc_etherdev_mqs(sizeof(struct alx_adapter), + ALX_MAX_TX_QUEUES, + ALX_MAX_RX_QUEUES); + if (!netdev) { + dev_err(&pdev->dev, "etherdev_mq alloc failed\n"); + err = -ENOMEM; + goto err_alloc_ethdev; + } + + SET_NETDEV_DEV(netdev, &pdev->dev); + adpt = netdev_priv(netdev); + adpt->netdev = netdev; + adpt->pdev = pdev; + adpt->msg_enable = NETIF_MSG_LINK | + NETIF_MSG_HW | + NETIF_MSG_IFUP | + NETIF_MSG_TX_ERR | + NETIF_MSG_RX_ERR | + NETIF_MSG_WOL; + adpt->bd_number = cards_found; + hw = &adpt->hw; + hw->pdev = pdev; + pci_set_drvdata(pdev, adpt); + + hw->hw_addr = pci_ioremap_bar(pdev, 0); + if (!hw->hw_addr) { + dev_err(&pdev->dev, "cannot map device registers\n"); + err = -EIO; + goto err_iomap; + } + + netdev->netdev_ops = &alx_netdev_ops; + alx_set_ethtool_ops(netdev); + netdev->irq = pdev->irq; + netdev->watchdog_timeo = ALX_WATCHDOG_TIME; + + /* init alx_adapte structure */ + err = alx_init_sw(adpt); + if (err) { + dev_err(&pdev->dev, "net device private data init failed\n"); + goto err_init_sw; + } + + /* reset pcie */ + alx_reset_pcie(hw); + + /* check if phy already configed by ohter driver */ + phy_cfged = alx_phy_configed(hw); + + /* reset PHY to a known stable status */ + if (!phy_cfged) + alx_reset_phy(hw, !hw->hib_patch); + else + dev_info(&pdev->dev, "PHY has been configured.\n"); + + /* reset mac/dma controller */ + err = alx_reset_mac(hw); + if (err) { + dev_err(&pdev->dev, "MAC Reset failed, error = %d\n", err); + err = -EIO; + goto err_rst_mac; + } + + /* setup link to put it in a known good starting state */ + if (!phy_cfged) { + err = alx_setup_speed_duplex(hw, + hw->adv_cfg, hw->flowctrl); + if (err) { + dev_err(&pdev->dev, + "config PHY speed/duplex failed,err=%d\n", + err); + err = -EIO; + goto err_setup_link; + } + } + + netdev->hw_features = NETIF_F_SG | + NETIF_F_HW_CSUM | + NETIF_F_HW_VLAN_RX | + NETIF_F_TSO | + NETIF_F_TSO6; + netdev->features = netdev->hw_features | NETIF_F_HW_VLAN_TX; + + /* read permanent mac addr from register or eFuse */ + if (alx_get_perm_macaddr(hw, hw->perm_addr)) { + dev_warn(&pdev->dev, "invalid perm-address, use random one\n"); + eth_hw_addr_random(netdev); + memcpy(hw->perm_addr, netdev->dev_addr, netdev->addr_len); + } + /* using permanent address as current address */ + memcpy(hw->mac_addr, hw->perm_addr, ETH_ALEN); + memcpy(netdev->dev_addr, hw->mac_addr, ETH_ALEN); + memcpy(netdev->perm_addr, hw->perm_addr, ETH_ALEN); + + /* PHY mdio */ + hw->mdio.prtad = 0; + hw->mdio.mmds = 0; + hw->mdio.dev = netdev; + hw->mdio.mode_support = + MDIO_SUPPORTS_C45 | MDIO_SUPPORTS_C22 | MDIO_EMULATE_C22; + hw->mdio.mdio_read = alx_mdio_read; + hw->mdio.mdio_write = alx_mdio_write; + if (!alx_get_phy_info(hw)) { + dev_err(&pdev->dev, "identify PHY failed\n"); + err = -EIO; + goto err_id_phy; + } + + INIT_WORK(&adpt->task, alx_task); + + err = register_netdev(netdev); + if (err) { + dev_err(&pdev->dev, "register netdevice failed\n"); + goto err_register_netdev; + } + + /* carrier off reporting is important to ethtool even BEFORE open */ + netif_carrier_off(netdev); + + device_set_wakeup_enable(&pdev->dev, hw->sleep_ctrl); + cards_found++; + + dev_info(&pdev->dev, + "alx(%pM): Qualcomm Atheros Ethernet Network Connection\n", + netdev->dev_addr); + + return 0; + +err_id_phy: +err_register_netdev: +err_setup_link: +err_rst_mac: +err_init_sw: + iounmap(hw->hw_addr); +err_iomap: + free_netdev(netdev); +err_alloc_ethdev: +err_pm: + pci_release_selected_regions(pdev, bars); +err_pci_region: +err_dma_mask: + pci_disable_device(pdev); + dev_err(&pdev->dev, "error when probe device, error = %d\n", err); + return err; +} + +/* alx_remove - Device Removal Routine */ +static void alx_remove(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct alx_hw *hw = &adpt->hw; + struct net_device *netdev; + + if (!adpt) + return; + + netdev = adpt->netdev; + + ALX_FLAG_SET(adpt, HALT); + alx_cancel_work(adpt); + + /* restore permanent mac address */ + alx_set_macaddr(hw, hw->perm_addr); + + unregister_netdev(netdev); + iounmap(hw->hw_addr); + pci_release_selected_regions(pdev, + pci_select_bars(pdev, IORESOURCE_MEM)); + free_netdev(netdev); + pci_disable_pcie_error_reporting(pdev); + pci_disable_device(pdev); + pci_set_drvdata(pdev, NULL); +} + +/* alx_pci_error_detected */ +static pci_ers_result_t alx_pci_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + pci_ers_result_t rc = PCI_ERS_RESULT_NEED_RESET; + + dev_info(&pdev->dev, "pci error detected\n"); + + rtnl_lock(); + + if (netif_running(netdev)) { + netif_device_detach(netdev); + alx_halt(adpt, false); + } + if (state == pci_channel_io_perm_failure) + rc = PCI_ERS_RESULT_DISCONNECT; + else + pci_disable_device(pdev); + + rtnl_unlock(); + + return rc; +} + +/* alx_pci_error_slot_reset */ +static pci_ers_result_t alx_pci_error_slot_reset(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct alx_hw *hw = &adpt->hw; + pci_ers_result_t rc = PCI_ERS_RESULT_DISCONNECT; + + dev_info(&pdev->dev, "pci error slot reset\n"); + + rtnl_lock(); + + if (pci_enable_device(pdev)) { + dev_err(&pdev->dev, "Re-enable PCI device after reset fail\n"); + goto out; + } + + pci_set_master(pdev); + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + alx_reset_pcie(hw); + if (!alx_reset_mac(hw)) + rc = PCI_ERS_RESULT_RECOVERED; +out: + pci_cleanup_aer_uncorrect_error_status(pdev); + + rtnl_unlock(); + + return rc; +} + +/* alx_pci_error_resume */ +static void alx_pci_error_resume(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + + dev_info(&pdev->dev, "pci error resume\n"); + + rtnl_lock(); + + if (netif_running(netdev)) { + alx_activate(adpt); + netif_device_attach(netdev); + } + + rtnl_unlock(); +} + + +static struct pci_error_handlers alx_err_handler = { + .error_detected = alx_pci_error_detected, + .slot_reset = alx_pci_error_slot_reset, + .resume = alx_pci_error_resume, +}; + +#ifdef CONFIG_PM_SLEEP +static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); +#define ALX_PM_OPS (&alx_pm_ops) +#else +#define ALX_PM_OPS NULL +#endif + +static struct pci_driver alx_driver = { + .name = alx_drv_name, + .id_table = alx_pci_tbl, + .probe = alx_probe, + .remove = alx_remove, + .shutdown = alx_shutdown, + .err_handler = &alx_err_handler, + .driver.pm = ALX_PM_OPS, +}; + + +static int __init alx_init_module(void) +{ + pr_info("%s\n", alx_drv_desc); + return pci_register_driver(&alx_driver); +} +module_init(alx_init_module); + +static void __exit alx_exit_module(void) +{ + pci_unregister_driver(&alx_driver); +} +module_exit(alx_exit_module); --- linux-3.5.0.orig/ubuntu/alx/alx.h +++ linux-3.5.0/ubuntu/alx/alx.h @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _ALX_H_ +#define _ALX_H_ + +#define ALX_WATCHDOG_TIME (5 * HZ) + +/* alx_ring_header is a single, contiguous block of memory space + * used by the three descriptor rings (tpd, rfd, rrd) + */ +struct alx_ring_header { + /* virt addr */ + void *desc; + /* phy addr */ + dma_addr_t dma; + u32 size; +}; + +/* alx_buffer wraps around a pointer to a socket buffer + * so a DMA physical address can be stored along with the skb + */ +struct alx_buffer { + struct sk_buff *skb; + /* DMA address */ + DEFINE_DMA_UNMAP_ADDR(dma); + /* buffer size */ + DEFINE_DMA_UNMAP_LEN(size); + /* information of this buffer */ + u16 flags; +}; +#define ALX_BUF_TX_FIRSTFRAG 0x1 + +/* rx queue */ +struct alx_rx_queue { + struct net_device *netdev; + /* device pointer for dma operation */ + struct device *dev; + /* rrd ring virtual addr */ + struct rrd_desc *rrd_hdr; + /* rrd ring physical addr */ + dma_addr_t rrd_dma; + /* rfd ring virtual addr */ + struct rfd_desc *rfd_hdr; + /* rfd ring physical addr */ + dma_addr_t rfd_dma; + /* info for rx-skbs */ + struct alx_buffer *bf_info; + + /* number of ring elements */ + u16 count; + /* rfd producer index */ + u16 pidx; + /* rfd consumer index */ + u16 cidx; + u16 rrd_cidx; + /* register saving producer index */ + u16 p_reg; + /* register saving consumer index */ + u16 c_reg; + /* queue index */ + u16 qidx; + unsigned long flag; + + struct sk_buff_head list; +}; +#define ALX_RQ_USING 1 +#define ALX_RX_ALLOC_THRESH 32 + +/* tx queue */ +struct alx_tx_queue { + struct net_device *netdev; + /* device pointer for dma operation */ + struct device *dev; + /* tpd ring virtual addr */ + struct tpd_desc *tpd_hdr; + dma_addr_t tpd_dma; + /* info for tx-skbs pending on HW */ + struct alx_buffer *bf_info; + /* number of ring elements */ + u16 count; + /* producer index */ + u16 pidx; + /* consumer index */ + atomic_t cidx; + /* register saving producer index */ + u16 p_reg; + /* register saving consumer index */ + u16 c_reg; + /* queue index */ + u16 qidx; +}; + +#define ALX_TX_WAKEUP_THRESH(_tq) ((_tq)->count / 4) +#define ALX_DEFAULT_TX_WORK 128 + +struct alx_napi { + struct napi_struct napi; + struct alx_adapter *adpt; + struct alx_rx_queue *rxq; + struct alx_tx_queue *txq; + int vec_idx; + u32 vec_mask; + char irq_lbl[IFNAMSIZ]; +}; + +enum ALX_FLAGS { + ALX_FLAG_USING_MSIX = 0, + ALX_FLAG_USING_MSI, + ALX_FLAG_RESETING, + ALX_FLAG_TESTING, + ALX_FLAG_HALT, + ALX_FLAG_FPGA, + ALX_FLAG_TASK_PENDING, + ALX_FLAG_TASK_CHK_LINK, + ALX_FLAG_TASK_RESET, + ALX_FLAG_TASK_UPDATE_SMB, + + ALX_FLAG_NUMBER_OF_FLAGS, +}; + + +struct alx_hw; +/* + *board specific private data structure + */ +struct alx_adapter { + struct net_device *netdev; + struct pci_dev *pdev; + + struct alx_hw hw; + + u16 bd_number; + + /* totally msix vectors */ + int nr_vec; + struct msix_entry *msix_ent; + + /* all descriptor memory */ + struct alx_ring_header ring_header; + int tx_ringsz; + int rx_ringsz; + int rxbuf_size; + + struct alx_napi *qnapi[8]; + /* number of napi for TX-Q */ + int nr_txq; + /* number of napi for RX-Q */ + int nr_rxq; + /* number independent hw RX-Q */ + int nr_hwrxq; + /* total napi for TX-Q/RX-Q */ + int nr_napi; + + /* lock for updating stats */ + spinlock_t smb_lock; + + struct work_struct task; + struct net_device_stats net_stats; + atomic_t irq_sem; + u16 msg_enable; + + unsigned long flags; + + /* ethtool private flags */ + u32 eth_pflags; + int eth_diag_vect; + int eth_diag_cnt; +}; + + +#define ALX_FLAG(_adpt, _FLAG) (\ + test_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) +#define ALX_FLAG_SET(_adpt, _FLAG) (\ + set_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) +#define ALX_FLAG_CLEAR(_adpt, _FLAG) (\ + clear_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) + +static inline struct alx_rx_queue *alx_hw_rxq(struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + return ALX_CAP(&adpt->hw, MRQ) ? rxq : adpt->qnapi[0]->rxq; +} + +/* needed by alx_ethtool.c */ +extern void alx_configure(struct alx_adapter *adpt); +extern void alx_free_all_ring_resources(struct alx_adapter *adpt); +extern int alx_setup_all_ring_resources(struct alx_adapter *adpt); +extern void alx_init_def_rss_idt(struct alx_adapter *adpt); +extern int alx_alloc_rxring_buf(struct alx_adapter *adpt, + struct alx_rx_queue *rxq); +extern void alx_init_intr(struct alx_adapter *adpt); +extern void alx_disable_advanced_intr(struct alx_adapter *adpt); +extern void alx_reinit(struct alx_adapter *adpt, bool in_task); +extern void alx_set_ethtool_ops(struct net_device *dev); +extern char alx_drv_name[]; +extern char alx_drv_version[]; + +#endif --- linux-3.5.0.orig/ubuntu/alx/Makefile +++ linux-3.5.0/ubuntu/alx/Makefile @@ -0,0 +1,3 @@ +obj-$(CONFIG_ALX) += alx.o +alx-objs := alx_main.o alx_ethtool.o alx_hw.o +ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.5.0.orig/ubuntu/alx/Kconfig +++ linux-3.5.0/ubuntu/alx/Kconfig @@ -0,0 +1,18 @@ + +config ALX + tristate "Qualcomm Atheros L1F Gigabit Ethernet support" + depends on PCI + select CRC32 + select NET_CORE + select MII + ---help--- + This driver supports the Qualcomm Atheros L1F ethernet adapter. + This driver supports following chipsets: + + 1969:1091 - AR8161 Gigabit Ethernet + 1969:1090 - AR8162 Fast Ethernet + 1969:10A1 - AR8171 Gigabit Ethernet + 1969:10A0 - AR8172 Fast Ethernet + + To compile this driver as a module, choose M here. The module + will be called alx. --- linux-3.5.0.orig/ubuntu/alx/LICENSE +++ linux-3.5.0/ubuntu/alx/LICENSE @@ -0,0 +1,15 @@ +Copyright (c) 2012, Luis R. Rodriguez +Copyright (c) 2012 Qualcomm Atheros, Inc. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + --- linux-3.5.0.orig/ubuntu/alx/alx_hw.h +++ linux-3.5.0/ubuntu/alx/alx_hw.h @@ -0,0 +1,661 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ALX_HW_H_ +#define ALX_HW_H_ + +/* specific error info */ +#define ALX_ERR_SUCCESS 0x0000 +#define ALX_ERR_ALOAD 0x0001 +#define ALX_ERR_RSTMAC 0x0002 +#define ALX_ERR_PARM 0x0003 +#define ALX_ERR_MIIBUSY 0x0004 +#define ALX_LINK_TIMEOUT 0x0008 + +/* Transmit Packet Descriptor, contains 4 32-bit words. + * + * 31 16 0 + * +----------------+----------------+ + * | vlan-tag | buf length | + * +----------------+----------------+ + * | Word 1 | + * +----------------+----------------+ + * | Word 2: buf addr lo | + * +----------------+----------------+ + * | Word 3: buf addr hi | + * +----------------+----------------+ + * + * Word 2 and 3 combine to form a 64-bit buffer address + * + * Word 1 has three forms, depending on the state of bit 8/12/13: + * if bit8 =='1', the definition is just for custom checksum offload. + * if bit8 == '0' && bit12 == '1' && bit13 == '1', the *FIRST* descriptor + * for the skb is special for LSO V2, Word 2 become total skb length , + * Word 3 is meaningless. + * other condition, the definition is for general skb or ip/tcp/udp + * checksum or LSO(TSO) offload. + * + * Here is the depiction: + * + * 0-+ 0-+ + * 1 | 1 | + * 2 | 2 | + * 3 | Payload offset 3 | L4 header offset + * 4 | (7:0) 4 | (7:0) + * 5 | 5 | + * 6 | 6 | + * 7-+ 7-+ + * 8 Custom csum enable = 1 8 Custom csum enable = 0 + * 9 General IPv4 checksum 9 General IPv4 checksum + * 10 General TCP checksum 10 General TCP checksum + * 11 General UDP checksum 11 General UDP checksum + * 12 Large Send Segment enable 12 Large Send Segment enable + * 13 Large Send Segment type 13 Large Send Segment type + * 14 VLAN tagged 14 VLAN tagged + * 15 Insert VLAN tag 15 Insert VLAN tag + * 16 IPv4 packet 16 IPv4 packet + * 17 Ethernet frame type 17 Ethernet frame type + * 18-+ 18-+ + * 19 | 19 | + * 20 | 20 | + * 21 | Custom csum offset 21 | + * 22 | (25:18) 22 | + * 23 | 23 | MSS (30:18) + * 24 | 24 | + * 25-+ 25 | + * 26-+ 26 | + * 27 | 27 | + * 28 | Reserved 28 | + * 29 | 29 | + * 30-+ 30-+ + * 31 End of packet 31 End of packet + */ + +struct tpd_desc { + __le32 word0; + __le32 word1; + union { + __le64 addr; + struct { + __le32 pkt_len; + __le32 resvd; + } l; + } adrl; +} __packed; + +/* tpd word 0 */ +#define TPD_BUFLEN_MASK 0xFFFF +#define TPD_BUFLEN_SHIFT 0 +#define TPD_VLTAG_MASK 0xFFFF +#define TPD_VLTAG_SHIFT 16 + +/* tpd word 1 */ +#define TPD_CXSUMSTART_MASK 0x00FF +#define TPD_CXSUMSTART_SHIFT 0 +#define TPD_L4HDROFFSET_MASK 0x00FF +#define TPD_L4HDROFFSET_SHIFT 0 +#define TPD_CXSUM_EN_MASK 0x0001 +#define TPD_CXSUM_EN_SHIFT 8 +#define TPD_IP_XSUM_MASK 0x0001 +#define TPD_IP_XSUM_SHIFT 9 +#define TPD_TCP_XSUM_MASK 0x0001 +#define TPD_TCP_XSUM_SHIFT 10 +#define TPD_UDP_XSUM_MASK 0x0001 +#define TPD_UDP_XSUm_SHIFT 11 +#define TPD_LSO_EN_MASK 0x0001 +#define TPD_LSO_EN_SHIFT 12 +#define TPD_LSO_V2_MASK 0x0001 +#define TPD_LSO_V2_SHIFT 13 +#define TPD_VLTAGGED_MASK 0x0001 +#define TPD_VLTAGGED_SHIFT 14 +#define TPD_INS_VLTAG_MASK 0x0001 +#define TPD_INS_VLTAG_SHIFT 15 +#define TPD_IPV4_MASK 0x0001 +#define TPD_IPV4_SHIFT 16 +#define TPD_ETHTYPE_MASK 0x0001 +#define TPD_ETHTYPE_SHIFT 17 +#define TPD_CXSUMOFFSET_MASK 0x00FF +#define TPD_CXSUMOFFSET_SHIFT 18 +#define TPD_MSS_MASK 0x1FFF +#define TPD_MSS_SHIFT 18 +#define TPD_EOP_MASK 0x0001 +#define TPD_EOP_SHIFT 31 + +#define DESC_GET(_x, _name) ((_x) >> _name##SHIFT & _name##MASK) + +/* Receive Free Descriptor */ +struct rfd_desc { + __le64 addr; /* data buffer address, length is + * declared in register --- every + * buffer has the same size + */ +} __packed; + +/* Receive Return Descriptor, contains 4 32-bit words. + * + * 31 16 0 + * +----------------+----------------+ + * | Word 0 | + * +----------------+----------------+ + * | Word 1: RSS Hash value | + * +----------------+----------------+ + * | Word 2 | + * +----------------+----------------+ + * | Word 3 | + * +----------------+----------------+ + * + * Word 0 depiction & Word 2 depiction: + * + * 0--+ 0--+ + * 1 | 1 | + * 2 | 2 | + * 3 | 3 | + * 4 | 4 | + * 5 | 5 | + * 6 | 6 | + * 7 | IP payload checksum 7 | VLAN tag + * 8 | (15:0) 8 | (15:0) + * 9 | 9 | + * 10 | 10 | + * 11 | 11 | + * 12 | 12 | + * 13 | 13 | + * 14 | 14 | + * 15-+ 15-+ + * 16-+ 16-+ + * 17 | Number of RFDs 17 | + * 18 | (19:16) 18 | + * 19-+ 19 | Protocol ID + * 20-+ 20 | (23:16) + * 21 | 21 | + * 22 | 22 | + * 23 | 23-+ + * 24 | 24 | Reserved + * 25 | Start index of RFD-ring 25-+ + * 26 | (31:20) 26 | RSS Q-num (27:25) + * 27 | 27-+ + * 28 | 28-+ + * 29 | 29 | RSS Hash algorithm + * 30 | 30 | (31:28) + * 31-+ 31-+ + * + * Word 3 depiction: + * + * 0--+ + * 1 | + * 2 | + * 3 | + * 4 | + * 5 | + * 6 | + * 7 | Packet length (include FCS) + * 8 | (13:0) + * 9 | + * 10 | + * 11 | + * 12 | + * 13-+ + * 14 L4 Header checksum error + * 15 IPv4 checksum error + * 16 VLAN tagged + * 17-+ + * 18 | Protocol ID (19:17) + * 19-+ + * 20 Receive error summary + * 21 FCS(CRC) error + * 22 Frame alignment error + * 23 Truncated packet + * 24 Runt packet + * 25 Incomplete packet due to insufficient rx-desc + * 26 Broadcast packet + * 27 Multicast packet + * 28 Ethernet type (EII or 802.3) + * 29 FIFO overflow + * 30 Length error (for 802.3, length field mismatch with actual len) + * 31 Updated, indicate to driver that this RRD is refreshed. + */ + +struct rrd_desc { + __le32 word0; + __le32 rss_hash; + __le32 word2; + __le32 word3; +} __packed; + +/* rrd word 0 */ +#define RRD_XSUM_MASK 0xFFFF +#define RRD_XSUM_SHIFT 0 +#define RRD_NOR_MASK 0x000F +#define RRD_NOR_SHIFT 16 +#define RRD_SI_MASK 0x0FFF +#define RRD_SI_SHIFT 20 + +/* rrd word 2 */ +#define RRD_VLTAG_MASK 0xFFFF +#define RRD_VLTAG_SHIFT 0 +#define RRD_PID_MASK 0x00FF +#define RRD_PID_SHIFT 16 +/* non-ip packet */ +#define RRD_PID_NONIP 0 +/* ipv4(only) */ +#define RRD_PID_IPV4 1 +/* tcp/ipv6 */ +#define RRD_PID_IPV6TCP 2 +/* tcp/ipv4 */ +#define RRD_PID_IPV4TCP 3 +/* udp/ipv6 */ +#define RRD_PID_IPV6UDP 4 +/* udp/ipv4 */ +#define RRD_PID_IPV4UDP 5 +/* ipv6(only) */ +#define RRD_PID_IPV6 6 +/* LLDP packet */ +#define RRD_PID_LLDP 7 +/* 1588 packet */ +#define RRD_PID_1588 8 +#define RRD_RSSQ_MASK 0x0007 +#define RRD_RSSQ_SHIFT 25 +#define RRD_RSSALG_MASK 0x000F +#define RRD_RSSALG_SHIFT 28 +#define RRD_RSSALG_TCPV6 0x1 +#define RRD_RSSALG_IPV6 0x2 +#define RRD_RSSALG_TCPV4 0x4 +#define RRD_RSSALG_IPV4 0x8 + +/* rrd word 3 */ +#define RRD_PKTLEN_MASK 0x3FFF +#define RRD_PKTLEN_SHIFT 0 +#define RRD_ERR_L4_MASK 0x0001 +#define RRD_ERR_L4_SHIFT 14 +#define RRD_ERR_IPV4_MASK 0x0001 +#define RRD_ERR_IPV4_SHIFT 15 +#define RRD_VLTAGGED_MASK 0x0001 +#define RRD_VLTAGGED_SHIFT 16 +#define RRD_OLD_PID_MASK 0x0007 +#define RRD_OLD_PID_SHIFT 17 +#define RRD_ERR_RES_MASK 0x0001 +#define RRD_ERR_RES_SHIFT 20 +#define RRD_ERR_FCS_MASK 0x0001 +#define RRD_ERR_FCS_SHIFT 21 +#define RRD_ERR_FAE_MASK 0x0001 +#define RRD_ERR_FAE_SHIFT 22 +#define RRD_ERR_TRUNC_MASK 0x0001 +#define RRD_ERR_TRUNC_SHIFT 23 +#define RRD_ERR_RUNT_MASK 0x0001 +#define RRD_ERR_RUNT_SHIFT 24 +#define RRD_ERR_ICMP_MASK 0x0001 +#define RRD_ERR_ICMP_SHIFT 25 +#define RRD_BCAST_MASK 0x0001 +#define RRD_BCAST_SHIFT 26 +#define RRD_MCAST_MASK 0x0001 +#define RRD_MCAST_SHIFT 27 +#define RRD_ETHTYPE_MASK 0x0001 +#define RRD_ETHTYPE_SHIFT 28 +#define RRD_ERR_FIFOV_MASK 0x0001 +#define RRD_ERR_FIFOV_SHIFT 29 +#define RRD_ERR_LEN_MASK 0x0001 +#define RRD_ERR_LEN_SHIFT 30 +#define RRD_UPDATED_MASK 0x0001 +#define RRD_UPDATED_SHIFT 31 + + +/* Statistics counters collected by the MAC */ +struct alx_hw_stats { + /* rx */ + unsigned long rx_ok; + unsigned long rx_bcast; + unsigned long rx_mcast; + unsigned long rx_pause; + unsigned long rx_ctrl; + unsigned long rx_fcs_err; + unsigned long rx_len_err; + unsigned long rx_byte_cnt; + unsigned long rx_runt; + unsigned long rx_frag; + unsigned long rx_sz_64B; + unsigned long rx_sz_127B; + unsigned long rx_sz_255B; + unsigned long rx_sz_511B; + unsigned long rx_sz_1023B; + unsigned long rx_sz_1518B; + unsigned long rx_sz_max; + unsigned long rx_ov_sz; + unsigned long rx_ov_rxf; + unsigned long rx_ov_rrd; + unsigned long rx_align_err; + unsigned long rx_bc_byte_cnt; + unsigned long rx_mc_byte_cnt; + unsigned long rx_err_addr; + + /* tx */ + unsigned long tx_ok; + unsigned long tx_bcast; + unsigned long tx_mcast; + unsigned long tx_pause; + unsigned long tx_exc_defer; + unsigned long tx_ctrl; + unsigned long tx_defer; + unsigned long tx_byte_cnt; + unsigned long tx_sz_64B; + unsigned long tx_sz_127B; + unsigned long tx_sz_255B; + unsigned long tx_sz_511B; + unsigned long tx_sz_1023B; + unsigned long tx_sz_1518B; + unsigned long tx_sz_max; + unsigned long tx_single_col; + unsigned long tx_multi_col; + unsigned long tx_late_col; + unsigned long tx_abort_col; + unsigned long tx_underrun; + unsigned long tx_trd_eop; + unsigned long tx_len_err; + unsigned long tx_trunc; + unsigned long tx_bc_byte_cnt; + unsigned long tx_mc_byte_cnt; + unsigned long update; +}; + +#define SPEED_0 0 +#define HALF_DUPLEX 1 +#define FULL_DUPLEX 2 +#define ALX_MAX_SETUP_LNK_CYCLE 50 + +#define ALX_SPEED_TO_ETHADV(_speed) (\ +(_speed) == SPEED_1000 + FULL_DUPLEX ? ADVERTISED_1000baseT_Full : \ +(_speed) == SPEED_100 + FULL_DUPLEX ? ADVERTISED_100baseT_Full : \ +(_speed) == SPEED_100 + HALF_DUPLEX ? ADVERTISED_10baseT_Half : \ +(_speed) == SPEED_10 + FULL_DUPLEX ? ADVERTISED_10baseT_Full : \ +(_speed) == SPEED_10 + HALF_DUPLEX ? ADVERTISED_10baseT_Half : \ +0) + +#define speed_desc(_s) (\ + (_s) == SPEED_1000 + FULL_DUPLEX ? \ + "1 Gbps Full" : \ + (_s) == SPEED_100 + FULL_DUPLEX ? \ + "100 Mbps Full" : \ + (_s) == SPEED_100 + HALF_DUPLEX ? \ + "100 Mbps Half" : \ + (_s) == SPEED_10 + FULL_DUPLEX ? \ + "10 Mbps Full" : \ + (_s) == SPEED_10 + HALF_DUPLEX ? \ + "10 Mbps Half" : \ + "Unknown speed") + +/* for FlowControl */ +#define ALX_FC_RX 0x01 +#define ALX_FC_TX 0x02 +#define ALX_FC_ANEG 0x04 + +/* for sleep control */ +#define ALX_SLEEP_WOL_PHY 0x00000001 +#define ALX_SLEEP_WOL_MAGIC 0x00000002 +#define ALX_SLEEP_CIFS 0x00000004 +#define ALX_SLEEP_ACTIVE (\ + ALX_SLEEP_WOL_PHY | \ + ALX_SLEEP_WOL_MAGIC | \ + ALX_SLEEP_CIFS) + +/* for RSS hash type */ +#define ALX_RSS_HASH_TYPE_IPV4 0x1 +#define ALX_RSS_HASH_TYPE_IPV4_TCP 0x2 +#define ALX_RSS_HASH_TYPE_IPV6 0x4 +#define ALX_RSS_HASH_TYPE_IPV6_TCP 0x8 +#define ALX_RSS_HASH_TYPE_ALL (\ + ALX_RSS_HASH_TYPE_IPV4 |\ + ALX_RSS_HASH_TYPE_IPV4_TCP |\ + ALX_RSS_HASH_TYPE_IPV6 |\ + ALX_RSS_HASH_TYPE_IPV6_TCP) +#define ALX_DEF_RXBUF_SIZE 1536 +#define ALX_MAX_JUMBO_PKT_SIZE (9*1024) +#define ALX_MAX_TSO_PKT_SIZE (7*1024) +#define ALX_MAX_FRAME_SIZE ALX_MAX_JUMBO_PKT_SIZE +#define ALX_MIN_FRAME_SIZE 68 +#define ALX_RAW_MTU(_mtu) (_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN) + +#define ALX_MAX_RX_QUEUES 8 +#define ALX_MAX_TX_QUEUES 4 +#define ALX_MAX_HANDLED_INTRS 5 + +#define ALX_ISR_MISC (\ + ALX_ISR_PCIE_LNKDOWN | \ + ALX_ISR_DMAW | \ + ALX_ISR_DMAR | \ + ALX_ISR_SMB | \ + ALX_ISR_MANU | \ + ALX_ISR_TIMER) + +#define ALX_ISR_FATAL (\ + ALX_ISR_PCIE_LNKDOWN | \ + ALX_ISR_DMAW | \ + ALX_ISR_DMAR) + +#define ALX_ISR_ALERT (\ + ALX_ISR_RXF_OV | \ + ALX_ISR_TXF_UR | \ + ALX_ISR_RFD_UR) + +#define ALX_ISR_ALL_QUEUES (\ + ALX_ISR_TX_Q0 | \ + ALX_ISR_TX_Q1 | \ + ALX_ISR_TX_Q2 | \ + ALX_ISR_TX_Q3 | \ + ALX_ISR_RX_Q0 | \ + ALX_ISR_RX_Q1 | \ + ALX_ISR_RX_Q2 | \ + ALX_ISR_RX_Q3 | \ + ALX_ISR_RX_Q4 | \ + ALX_ISR_RX_Q5 | \ + ALX_ISR_RX_Q6 | \ + ALX_ISR_RX_Q7) + +/* maximum interrupt vectors for msix */ +#define ALX_MAX_MSIX_INTRS 16 + +#define FIELD_GETX(_x, _name) (((_x) >> (_name##_SHIFT)) & (_name##_MASK)) +#define FIELD_SETS(_x, _name, _v) (\ +(_x) = \ +((_x) & ~((_name##_MASK) << (_name##_SHIFT))) |\ +(((u16)(_v) & (_name##_MASK)) << (_name##_SHIFT))) +#define FIELD_SET32(_x, _name, _v) (\ +(_x) = \ +((_x) & ~((_name##_MASK) << (_name##_SHIFT))) |\ +(((_v) & (_name##_MASK)) << (_name##_SHIFT))) +#define FIELDX(_name, _v) (((_v) & (_name##_MASK)) << (_name##_SHIFT)) + +struct alx_hw { + void *pdev; + u8 __iomem *hw_addr; + + /* pci regs */ + u16 device_id; + u16 subdev_id; + u16 subven_id; + u8 revision; + + unsigned long capability; + + /* current & permanent mac addr */ + u8 mac_addr[ETH_ALEN]; + u8 perm_addr[ETH_ALEN]; + + u16 mtu; + u16 imt; + u8 dma_chnl; + u8 max_dma_chnl; + /* tpd threshold to trig INT */ + u32 ith_tpd; + u32 rx_ctrl; + u32 mc_hash[2]; + + u8 rss_key[40]; + u32 rss_idt[32]; + u16 rss_idt_size; + u8 rss_hash_type; + + /* weight round robin for multiple-tx-Q */ + u32 wrr[ALX_MAX_TX_QUEUES]; + /* prioirty control */ + u32 wrr_ctrl; + + /* interrupt mask for ALX_IMR */ + u32 imask; + u32 smb_timer; + bool link_up; + u16 link_speed; + u8 link_duplex; + + /* auto-neg advertisement or force mode config */ + u32 adv_cfg; + u8 flowctrl; + + struct alx_hw_stats hw_stats; + u32 sleep_ctrl; + /* sram address for pattern wol */ + u32 ptrn_ofs; + /* max patterns number */ + u16 max_ptrns; + + spinlock_t mdio_lock; + struct mdio_if_info mdio; + u16 phy_id[2]; + + struct alx_hw_stats stats; + /* PHY link patch flag */ + bool lnk_patch; + /* PHY hibernation patch flag */ + bool hib_patch; + /* FPGA or ASIC */ + bool is_fpga; +}; + +#define ALX_DID(_hw) ((_hw)->device_id) +#define ALX_SUB_VID(_hw) ((_hw)->subven_id) +#define ALX_SUB_DID(_hw) ((_hw)->subdev_id) +#define ALX_REVID(_hw) ((_hw)->revision >> ALX_PCI_REVID_SHIFT) +#define ALX_WITH_CR(_hw) ((_hw)->revision & 1) + +enum ALX_CAPS { + ALX_CAP_GIGA = 0, + ALX_CAP_PTP, + ALX_CAP_AZ, + ALX_CAP_L0S, + ALX_CAP_L1, + ALX_CAP_SWOI, + ALX_CAP_RSS, + ALX_CAP_MSIX, + /* support Multi-TX-Q */ + ALX_CAP_MTQ, + /* support Multi-RX-Q */ + ALX_CAP_MRQ, +}; +#define ALX_CAP(_hw, _cap) (\ + test_bit(ALX_CAP_##_cap, &(_hw)->capability)) +#define ALX_CAP_SET(_hw, _cap) (\ + set_bit(ALX_CAP_##_cap, &(_hw)->capability)) +#define ALX_CAP_CLEAR(_hw, _cap) (\ + clear_bit(ALX_CAP_##_cap, &(_hw)->capability)) + +/* write to 8bit register via pci memory space */ +#define ALX_MEM_W8(s, reg, val) (writeb((val), ((s)->hw_addr + reg))) + +/* read from 8bit register via pci memory space */ +#define ALX_MEM_R8(s, reg, pdat) (\ + *(u8 *)(pdat) = readb((s)->hw_addr + reg)) + +/* write to 16bit register via pci memory space */ +#define ALX_MEM_W16(s, reg, val) (writew((val), ((s)->hw_addr + reg))) + +/* read from 16bit register via pci memory space */ +#define ALX_MEM_R16(s, reg, pdat) (\ + *(u16 *)(pdat) = readw((s)->hw_addr + reg)) + +/* write to 32bit register via pci memory space */ +#define ALX_MEM_W32(s, reg, val) (writel((val), ((s)->hw_addr + reg))) + +/* read from 32bit register via pci memory space */ +#define ALX_MEM_R32(s, reg, pdat) (\ + *(u32 *)(pdat) = readl((s)->hw_addr + reg)) + +/* read from 16bit register via pci config space */ +#define ALX_CFG_R16(s, reg, pdat) (\ + pci_read_config_word((s)->pdev, (reg), (pdat))) + +/* write to 16bit register via pci config space */ +#define ALX_CFG_W16(s, reg, val) (\ + pci_write_config_word((s)->pdev, (reg), (val))) + +/* flush regs */ +#define ALX_MEM_FLUSH(s) (readl((s)->hw_addr)) + + +int alx_get_perm_macaddr(struct alx_hw *hw, u8 *addr); +void alx_add_mc_addr(struct alx_hw *hw, u8 *addr); +void alx_reset_phy(struct alx_hw *hw, bool hib_en); +void alx_reset_pcie(struct alx_hw *hw); +void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en); +int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl); +void alx_post_phy_link(struct alx_hw *hw, u16 speed, bool az_en); +int alx_pre_suspend(struct alx_hw *hw, u16 speed); +int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data); +int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data); +int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata); +int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data); +int alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata); +int alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data); +int alx_get_phy_link(struct alx_hw *hw, bool *link_up, u16 *speed); +int alx_clear_phy_intr(struct alx_hw *hw); +int alx_config_wol(struct alx_hw *hw); +void alx_cfg_mac_fc(struct alx_hw *hw, u8 fc); +void alx_start_mac(struct alx_hw *hw); +int alx_stop_mac(struct alx_hw *hw); +int alx_reset_mac(struct alx_hw *hw); +void alx_set_macaddr(struct alx_hw *hw, u8 *addr); +bool alx_phy_configed(struct alx_hw *hw); +void alx_configure_basic(struct alx_hw *hw); +void alx_configure_rss(struct alx_hw *hw, bool en); +void alx_mask_msix(struct alx_hw *hw, int index, bool mask); +int alx_select_powersaving_speed(struct alx_hw *hw, u16 *speed); +void __alx_update_hw_stats(struct alx_hw *hw); +void __alx_start_phy_polling(struct alx_hw *hw, u16 clk_sel); + +#define alx_get_readrq(_hw) pcie_get_readrq((_hw)->pdev) +#define alx_set_readrq(_hw, _v) pcie_set_readrq((_hw)->pdev, _v) + + +/* some issues are relavant to specific platforms + * we assign those patches for the chip by pci device id + * vendor id, subsystem id and revision number + */ +struct alx_platform_patch { + u16 pci_did; + u8 pci_rev; + u16 subsystem_vid; + u16 subsystem_did; + u32 pflag; +}; +/* PHY link issue */ +#define ALX_PF_LINK 0x00001 +/* Hibernatation issue */ +#define ALX_PF_HIB 0x00002 +/* not care revision number */ +#define ALX_PF_ANY_REV 0x10000 + + +void alx_patch_assign(struct alx_hw *hw); +bool alx_get_phy_info(struct alx_hw *hw); + +#endif --- linux-3.5.0.orig/ubuntu/alx/alx_hw.c +++ linux-3.5.0/ubuntu/alx/alx_hw.c @@ -0,0 +1,1461 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" + +#define ALX_REV_A(_r) ((_r) == ALX_REV_A0 || (_r) == ALX_REV_A1) + +/* get permanent mac address from */ +int alx_get_perm_macaddr(struct alx_hw *hw, u8 *addr) +{ + u32 val, mac0, mac1; + u16 flag, i; + +#define INTN_LOADED 0x1 +#define EXTN_LOADED 0x2 + + flag = 0; + val = 0; + +read_mcadr: + + /* get it from register first */ + ALX_MEM_R32(hw, ALX_STAD0, &mac0); + ALX_MEM_R32(hw, ALX_STAD1, &mac1); + + /* addr should be big-endian */ + *(__be32 *)(addr + 2) = cpu_to_be32(mac0); + *(__be16 *)addr = cpu_to_be16((u16)mac1); + + if (is_valid_ether_addr(addr)) + return 0; + + if ((flag & INTN_LOADED) == 0) { + /* load from efuse ? */ + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + ALX_MEM_R32(hw, ALX_SLD, &val); + if ((val & (ALX_SLD_STAT | ALX_SLD_START)) == 0) + break; + mdelay(1); + } + if (i == ALX_SLD_MAX_TO) + goto out; + ALX_MEM_W32(hw, ALX_SLD, val | ALX_SLD_START); + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + mdelay(1); + ALX_MEM_R32(hw, ALX_SLD, &val); + if ((val & ALX_SLD_START) == 0) + break; + } + if (i == ALX_SLD_MAX_TO) + goto out; + flag |= INTN_LOADED; + goto read_mcadr; + } + + if ((flag & EXTN_LOADED) == 0) { + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & (ALX_EFLD_F_EXIST | ALX_EFLD_E_EXIST)) != 0) { + /* load from eeprom/flash ? */ + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & (ALX_EFLD_STAT | + ALX_EFLD_START)) == 0) { + break; + } + mdelay(1); + } + if (i == ALX_SLD_MAX_TO) + goto out; + ALX_MEM_W32(hw, ALX_EFLD, val | ALX_EFLD_START); + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + mdelay(1); + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & ALX_EFLD_START) == 0) + break; + } + if (i == ALX_SLD_MAX_TO) + goto out; + flag |= EXTN_LOADED; + goto read_mcadr; + } + } + +out: + return ALX_ERR_ALOAD; +} + +void alx_set_macaddr(struct alx_hw *hw, u8 *addr) +{ + u32 val; + + /* for example: 00-0B-6A-F6-00-DC * STAD0=6AF600DC, STAD1=000B */ + val = be32_to_cpu(*(__be32 *)(addr + 2)); + ALX_MEM_W32(hw, ALX_STAD0, val); + val = be16_to_cpu(*(__be16 *)addr); + ALX_MEM_W32(hw, ALX_STAD1, val); +} + +void alx_add_mc_addr(struct alx_hw *hw, u8 *addr) +{ + u32 crc32, bit, reg; + + crc32 = ether_crc(ETH_ALEN, addr); + + /* The HASH Table is a register array of 2 32-bit registers. + * It is treated like an array of 64 bits. We want to set + * bit BitArray[hash_value]. So we figure out what register + * the bit is in, read it, OR in the new bit, then write + * back the new value. The register is determined by the + * upper 7 bits of the hash value and the bit within that + * register are determined by the lower 5 bits of the value. + */ + reg = (crc32 >> 31) & 0x1; + bit = (crc32 >> 26) & 0x1F; + + hw->mc_hash[reg] |= (0x1 << bit); +} + +void alx_enable_osc(struct alx_hw *hw) +{ + u32 val; + + /* rising edge */ + ALX_MEM_R32(hw, ALX_MISC, &val); + ALX_MEM_W32(hw, ALX_MISC, val & ~ALX_MISC_INTNLOSC_OPEN); + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); +} + +void alx_reset_osc(struct alx_hw *hw, u8 rev) +{ + u32 val, val2; + + /* clear Internal OSC settings, switching OSC by hw itself */ + ALX_MEM_R32(hw, ALX_MISC3, &val); + ALX_MEM_W32(hw, ALX_MISC3, + (val & ~ALX_MISC3_25M_BY_SW) | ALX_MISC3_25M_NOTO_INTNL); + + /* 25M clk from chipset may be unstable 1s after de-assert of + * PERST, driver need re-calibrate before enter Sleep for WoL + */ + ALX_MEM_R32(hw, ALX_MISC, &val); + if (rev >= ALX_REV_B0) { + /* restore over current protection def-val, + * this val could be reset by MAC-RST + */ + FIELD_SET32(val, ALX_MISC_PSW_OCP, ALX_MISC_PSW_OCP_DEF); + /* a 0->1 change will update the internal val of osc */ + val &= ~ALX_MISC_INTNLOSC_OPEN; + ALX_MEM_W32(hw, ALX_MISC, val); + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); + /* hw will automatically dis OSC after cab. */ + ALX_MEM_R32(hw, ALX_MSIC2, &val2); + val2 &= ~ALX_MSIC2_CALB_START; + ALX_MEM_W32(hw, ALX_MSIC2, val2); + ALX_MEM_W32(hw, ALX_MSIC2, val2 | ALX_MSIC2_CALB_START); + } else { + val &= ~ALX_MISC_INTNLOSC_OPEN; + /* disable isoloate for A0 */ + if (ALX_REV_A(rev)) + val &= ~ALX_MISC_ISO_EN; + + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); + ALX_MEM_W32(hw, ALX_MISC, val); + } + + udelay(20); +} + +int alx_reset_mac(struct alx_hw *hw) +{ + u32 val, pmctrl; + int i, ret; + u8 rev; + bool a_cr; + + pmctrl = 0; + rev = (u8)ALX_REVID(hw); + a_cr = ALX_REV_A(rev) && ALX_WITH_CR(hw); + + /* disable all interrupts, RXQ/TXQ */ + ALX_MEM_W32(hw, ALX_MSIX_MASK, 0xFFFFFFFF); + ALX_MEM_W32(hw, ALX_IMR, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + + ret = alx_stop_mac(hw); + if (ret) + return ret; + + /* mac reset workaroud */ + ALX_MEM_W32(hw, ALX_RFD_PIDX, 1); + + /* dis l0s/l1 before mac reset */ + if (a_cr) { + ALX_MEM_R32(hw, ALX_PMCTRL, &pmctrl); + if ((pmctrl & (ALX_PMCTRL_L1_EN | ALX_PMCTRL_L0S_EN)) != 0) { + ALX_MEM_W32(hw, ALX_PMCTRL, + pmctrl & ~(ALX_PMCTRL_L1_EN | + ALX_PMCTRL_L0S_EN)); + } + } + + /* reset whole mac safely */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + ALX_MEM_W32(hw, ALX_MASTER, + val | ALX_MASTER_DMA_MAC_RST | ALX_MASTER_OOB_DIS); + + /* make sure it's real idle */ + udelay(10); + for (i = 0; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_RFD_PIDX, &val); + if (val == 0) + break; + udelay(10); + } + for (; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_MASTER, &val); + if ((val & ALX_MASTER_DMA_MAC_RST) == 0) + break; + udelay(10); + } + if (i == ALX_DMA_MAC_RST_TO) + return ALX_ERR_RSTMAC; + udelay(10); + + if (a_cr) { + /* set ALX_MASTER_PCLKSEL_SRDS (affect by soft-rst, PERST) */ + ALX_MEM_W32(hw, ALX_MASTER, val | ALX_MASTER_PCLKSEL_SRDS); + /* resoter l0s / l1 */ + if (pmctrl & (ALX_PMCTRL_L1_EN | ALX_PMCTRL_L0S_EN)) + ALX_MEM_W32(hw, ALX_PMCTRL, pmctrl); + } + + alx_reset_osc(hw, rev); + /* clear Internal OSC settings, switching OSC by hw itself, + * disable isoloate for A version + */ + ALX_MEM_R32(hw, ALX_MISC3, &val); + ALX_MEM_W32(hw, ALX_MISC3, + (val & ~ALX_MISC3_25M_BY_SW) | ALX_MISC3_25M_NOTO_INTNL); + ALX_MEM_R32(hw, ALX_MISC, &val); + val &= ~ALX_MISC_INTNLOSC_OPEN; + if (ALX_REV_A(rev)) + val &= ~ALX_MISC_ISO_EN; + ALX_MEM_W32(hw, ALX_MISC, val); + udelay(20); + + /* driver control speed/duplex, hash-alg */ + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); + + /* clk sw */ + ALX_MEM_R32(hw, ALX_SERDES, &val); + ALX_MEM_W32(hw, ALX_SERDES, + val | ALX_SERDES_MACCLK_SLWDWN | ALX_SERDES_PHYCLK_SLWDWN); + + /* mac reset cause MDIO ctrl restore non-polling status */ + if (hw->is_fpga) + __alx_start_phy_polling(hw, ALX_MDIO_CLK_SEL_25MD128); + + + return ret; +} + +/* alx_reset_phy + * completely reset phy, all settings/workaround will be re-configureed + * hib_en: enable/disable hibernation on PHY + */ +void alx_reset_phy(struct alx_hw *hw, bool hib_en) +{ + int i; + u32 val; + u16 phy_val; + + /* (DSP)reset PHY core */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + val &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_IDDQ | + ALX_PHY_CTRL_GATE_25M | ALX_PHY_CTRL_POWER_DOWN | + ALX_PHY_CTRL_CLS); + val |= ALX_PHY_CTRL_RST_ANALOG; + + if (hib_en) + val |= (ALX_PHY_CTRL_HIB_PULSE | ALX_PHY_CTRL_HIB_EN); + else + val &= ~(ALX_PHY_CTRL_HIB_PULSE | ALX_PHY_CTRL_HIB_EN); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val); + udelay(10); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_DSPRST_OUT); + + /* delay 800us */ + for (i = 0; i < ALX_PHY_CTRL_DSPRST_TO; i++) + udelay(10); + + if (hw->is_fpga) + goto set_imr; + + /* phy power saving & hib */ + if (hib_en) { + alx_write_phy_dbg(hw, ALX_MIIDBG_LEGCYPS, ALX_LEGCYPS_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_SYSMODCTRL, + ALX_SYSMODCTRL_IECHOADJ_DEF); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_VDRVBIAS, + ALX_VDRVBIAS_DEF); + } else { + alx_write_phy_dbg(hw, ALX_MIIDBG_LEGCYPS, + ALX_LEGCYPS_DEF & ~ALX_LEGCYPS_EN); + alx_write_phy_dbg(hw, ALX_MIIDBG_HIBNEG, ALX_HIBNEG_NOHIB); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG, ALX_GREENCFG_DEF); + } + + /* EEE advertisement */ + if (ALX_CAP(hw, AZ)) { + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_LOCAL_EEEADV, + ALX_CAP(hw, GIGA) ? + ALX_LOCAL_EEEADV_1000BT | ALX_LOCAL_EEEADV_100BT : + ALX_LOCAL_EEEADV_100BT); + /* half amplify */ + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_DEF); + } else { + ALX_MEM_R32(hw, ALX_LPI_CTRL, &val); + ALX_MEM_W32(hw, ALX_LPI_CTRL, val & ~ALX_LPI_CTRL_EN); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_LOCAL_EEEADV, 0); + } + + /* phy power saving */ + alx_write_phy_dbg(hw, ALX_MIIDBG_TST10BTCFG, ALX_TST10BTCFG_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, ALX_SRDSYSMOD_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_TST100BTCFG, ALX_TST100BTCFG_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_ANACTRL, ALX_ANACTRL_DEF); + alx_read_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, &phy_val); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, + phy_val & ~ALX_GREENCFG2_GATE_DFSE_EN); + /* rtl8139c, 120m issue */ + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_NLP78, + ALX_MIIEXT_NLP78_120M_DEF); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_S3DIG10, + ALX_MIIEXT_S3DIG10_DEF); + + if (hw->lnk_patch) { + /* Turn off half amplitude */ + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL3, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL3, + phy_val | ALX_CLDCTRL3_BP_CABLE1TH_DET_GT); + /* Turn off Green feature */ + alx_read_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, &phy_val); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, + phy_val | ALX_GREENCFG2_BP_GREEN); + /* Turn off half Bias */ + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL5, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL5, + phy_val | ALX_CLDCTRL5_BP_VD_HLFBIAS); + } + +set_imr: + /* set phy interrupt mask */ + alx_write_phy_reg(hw, ALX_MII_IER, + ALX_IER_LINK_UP | ALX_IER_LINK_DOWN); +} + +#define ALX_PCI_CMD (\ + PCI_COMMAND_MASTER |\ + PCI_COMMAND_MEMORY |\ + PCI_COMMAND_IO) +/* + * alx_reset_pcie + * reset pcie relative registers (pci command, clk, aspm...) + */ +void alx_reset_pcie(struct alx_hw *hw) +{ + u32 val; + u16 val16; + u8 rev = (u8)ALX_REVID(hw); + + /* Workaround for PCI problem when BIOS sets MMRBC incorrectly. */ + ALX_CFG_R16(hw, PCI_COMMAND, &val16); + if (!(val16 & ALX_PCI_CMD) || (val16 & PCI_COMMAND_INTX_DISABLE)) { + val16 = (val16 | ALX_PCI_CMD) & ~PCI_COMMAND_INTX_DISABLE; + ALX_CFG_W16(hw, PCI_COMMAND, val16); + } + + /* clear WoL setting/status */ + ALX_MEM_R32(hw, ALX_WOL0, &val); + ALX_MEM_W32(hw, ALX_WOL0, 0); + + /* deflt val of PDLL D3PLLOFF */ + ALX_MEM_R32(hw, ALX_PDLL_TRNS1, &val); + ALX_MEM_W32(hw, ALX_PDLL_TRNS1, val & ~ALX_PDLL_TRNS1_D3PLLOFF_EN); + + /* mask some pcie error bits */ + ALX_MEM_R32(hw, ALX_UE_SVRT, &val); + val &= ~(ALX_UE_SVRT_DLPROTERR | ALX_UE_SVRT_FCPROTERR); + ALX_MEM_W32(hw, ALX_UE_SVRT, val); + + /* wol 25M & pclk */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + if (ALX_REV_A(rev) && ALX_WITH_CR(hw)) { + if ((val & ALX_MASTER_WAKEN_25M) == 0 || + (val & ALX_MASTER_PCLKSEL_SRDS) == 0) { + ALX_MEM_W32(hw, ALX_MASTER, + val | ALX_MASTER_PCLKSEL_SRDS | + ALX_MASTER_WAKEN_25M); + } + } else { + if ((val & ALX_MASTER_WAKEN_25M) == 0 || + (val & ALX_MASTER_PCLKSEL_SRDS) != 0) { + ALX_MEM_W32(hw, ALX_MASTER, + (val & ~ALX_MASTER_PCLKSEL_SRDS) | + ALX_MASTER_WAKEN_25M); + } + } + + /* ASPM setting */ + alx_enable_aspm(hw, ALX_CAP(hw, L0S), ALX_CAP(hw, L1)); + + udelay(10); +} + +/* alx_stop_mac + * stop the mac, transmit & receive modules + * return : 0 if ok, none-0 if busy + */ +int alx_stop_mac(struct alx_hw *hw) +{ + u32 rxq, txq, val; + u16 i; + + ALX_MEM_R32(hw, ALX_RXQ0, &rxq); + ALX_MEM_W32(hw, ALX_RXQ0, rxq & ~ALX_RXQ0_EN); + ALX_MEM_R32(hw, ALX_TXQ0, &txq); + ALX_MEM_W32(hw, ALX_TXQ0, txq & ~ALX_TXQ0_EN); + + udelay(40); + + hw->rx_ctrl &= ~(ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN); + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); + + for (i = 0; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_MAC_STS, &val); + if (!(val & ALX_MAC_STS_IDLE)) + break; + udelay(10); + } + + return (ALX_DMA_MAC_RST_TO == i) ? ALX_ERR_RSTMAC : 0; +} + +/* alx_start_mac + * enable rx/tx MAC module + */ +void alx_start_mac(struct alx_hw *hw) +{ + u32 mac, txq, rxq; + + ALX_MEM_R32(hw, ALX_RXQ0, &rxq); + ALX_MEM_W32(hw, ALX_RXQ0, rxq | ALX_RXQ0_EN); + ALX_MEM_R32(hw, ALX_TXQ0, &txq); + ALX_MEM_W32(hw, ALX_TXQ0, txq | ALX_TXQ0_EN); + + mac = hw->rx_ctrl; + if (hw->link_duplex == FULL_DUPLEX) + mac |= ALX_MAC_CTRL_FULLD; + else + mac &= ~ALX_MAC_CTRL_FULLD; + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, hw->link_speed == SPEED_1000 ? + ALX_MAC_CTRL_SPEED_1000 : ALX_MAC_CTRL_SPEED_10_100); + mac |= ALX_MAC_CTRL_TX_EN | ALX_MAC_CTRL_RX_EN; + hw->rx_ctrl = mac; + ALX_MEM_W32(hw, ALX_MAC_CTRL, mac); +} + +/* set flow control on MAC side */ +void alx_cfg_mac_fc(struct alx_hw *hw, u8 fc) +{ + if (fc & ALX_FC_RX) + hw->rx_ctrl |= ALX_MAC_CTRL_RXFC_EN; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_RXFC_EN; + + if (fc & ALX_FC_TX) + hw->rx_ctrl |= ALX_MAC_CTRL_TXFC_EN; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_TXFC_EN; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + +/* enable/disable aspm support */ +void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en) +{ + u32 pmctrl; + u8 rev = (u8)ALX_REVID(hw); + + ALX_MEM_R32(hw, ALX_PMCTRL, &pmctrl); + + FIELD_SET32(pmctrl, ALX_PMCTRL_LCKDET_TIMER, + ALX_PMCTRL_LCKDET_TIMER_DEF); + pmctrl |= ALX_PMCTRL_RCVR_WT_1US | + ALX_PMCTRL_L1_CLKSW_EN | + ALX_PMCTRL_L1_SRDSRX_PWD ; + FIELD_SET32(pmctrl, ALX_PMCTRL_L1REQ_TO, ALX_PMCTRL_L1REG_TO_DEF); + FIELD_SET32(pmctrl, ALX_PMCTRL_L1_TIMER, ALX_PMCTRL_L1_TIMER_16US); + pmctrl &= ~(ALX_PMCTRL_L1_SRDS_EN | + ALX_PMCTRL_L1_SRDSPLL_EN | + ALX_PMCTRL_L1_BUFSRX_EN | + ALX_PMCTRL_SADLY_EN | + ALX_PMCTRL_HOTRST_WTEN| + ALX_PMCTRL_L0S_EN | + ALX_PMCTRL_L1_EN | + ALX_PMCTRL_ASPM_FCEN | + ALX_PMCTRL_TXL1_AFTER_L0S | + ALX_PMCTRL_RXL1_AFTER_L0S + ); + if (ALX_REV_A(rev) && ALX_WITH_CR(hw)) + pmctrl |= ALX_PMCTRL_L1_SRDS_EN | ALX_PMCTRL_L1_SRDSPLL_EN; + + if (l0s_en) + pmctrl |= (ALX_PMCTRL_L0S_EN | ALX_PMCTRL_ASPM_FCEN); + if (l1_en) + pmctrl |= (ALX_PMCTRL_L1_EN | ALX_PMCTRL_ASPM_FCEN); + + ALX_MEM_W32(hw, ALX_PMCTRL, pmctrl); +} + + +/* translate ethtool adv /speed/duplex settting to hw specific value */ +u32 ethadv_to_hw_cfg(struct alx_hw *hw, u32 ethadv_cfg) +{ + u32 cfg = 0; + + if (ethadv_cfg & ADVERTISED_Autoneg) { + cfg |= ALX_DRV_PHY_AUTO; + if (ethadv_cfg & ADVERTISED_10baseT_Half) + cfg |= ALX_DRV_PHY_10; + if (ethadv_cfg & ADVERTISED_10baseT_Full) + cfg |= ALX_DRV_PHY_10 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_100baseT_Half) + cfg |= ALX_DRV_PHY_100; + if (ethadv_cfg & ADVERTISED_100baseT_Full) + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_1000baseT_Half) + cfg |= ALX_DRV_PHY_1000; + if (ethadv_cfg & ADVERTISED_1000baseT_Full) + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_Pause) + cfg |= ADVERTISE_PAUSE_CAP; + if (ethadv_cfg & ADVERTISED_Asym_Pause) + cfg |= ADVERTISE_PAUSE_ASYM; + if (ALX_CAP(hw, AZ)) + cfg |= ALX_DRV_PHY_EEE; + } else { + switch (ethadv_cfg) { + case ADVERTISED_10baseT_Half: + cfg |= ALX_DRV_PHY_10; + break; + case ADVERTISED_100baseT_Half: + cfg |= ALX_DRV_PHY_100; + break; + case ADVERTISED_10baseT_Full: + cfg |= ALX_DRV_PHY_10 | ALX_DRV_PHY_DUPLEX; + break; + case ADVERTISED_100baseT_Full: + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + break; + } + } + + return cfg; +} + +/* initialize phy for speed / flow control + * ethadv: + * format from ethtool, we use it for both autoneg and force mode + */ +int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl) +{ + u16 adv, giga, cr; + u32 val; + int err = 0; + + /* clear flag */ + alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, 0); + ALX_MEM_R32(hw, ALX_DRV, &val); + FIELD_SET32(val, ALX_DRV_PHY, 0); + + if (ethadv & ADVERTISED_Autoneg) { + adv = ADVERTISE_CSMA; + adv |= ethtool_adv_to_mii_adv_t(ethadv); + + if (flowctrl & ALX_FC_ANEG) { + if (flowctrl & ALX_FC_RX) { + adv |= ADVERTISED_Pause; + if (!(flowctrl & ALX_FC_TX)) + adv |= ADVERTISED_Asym_Pause; + } else if (flowctrl & ALX_FC_TX) + adv |= ADVERTISED_Asym_Pause; + } + giga = 0; + if (ALX_CAP(hw, GIGA)) + giga = ethtool_adv_to_mii_ctrl1000_t(ethadv); + + cr = BMCR_RESET | BMCR_ANENABLE | BMCR_ANRESTART; + + if (alx_write_phy_reg(hw, MII_ADVERTISE, adv) || + alx_write_phy_reg(hw, MII_CTRL1000, giga) || + alx_write_phy_reg(hw, MII_BMCR, cr)) + err = ALX_ERR_MIIBUSY; + } else { + cr = BMCR_RESET; + if (ethadv == ADVERTISED_100baseT_Half || + ethadv == ADVERTISED_100baseT_Full) + cr |= BMCR_SPEED100; + if (ethadv == ADVERTISED_10baseT_Full || + ethadv == ADVERTISED_100baseT_Full) + cr |= BMCR_FULLDPLX; + + err = alx_write_phy_reg(hw, MII_BMCR, cr); + } + + if (!err) { + alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, ALX_PHY_INITED); + /* save config to HW */ + val |= ethadv_to_hw_cfg(hw, ethadv); + } + + ALX_MEM_W32(hw, ALX_DRV, val); + + return err; +} + + +/* do post setting on phy if link up/down event occur */ +void alx_post_phy_link(struct alx_hw *hw, u16 speed, bool az_en) +{ + u16 phy_val, len, agc; + u8 revid = (u8)ALX_REVID(hw); + bool adj_th; + + if (revid != ALX_REV_B0 && + revid != ALX_REV_A1 && + revid != ALX_REV_A0) { + return; + } + adj_th = (revid == ALX_REV_B0) ? true : false; + + /* 1000BT/AZ, wrong cable length */ + if (speed != SPEED_0) { + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL6, + &phy_val); + len = FIELD_GETX(phy_val, ALX_CLDCTRL6_CAB_LEN); + alx_read_phy_dbg(hw, ALX_MIIDBG_AGC, &phy_val); + agc = FIELD_GETX(phy_val, ALX_AGC_2_VGA); + + if ((speed == SPEED_1000 && + (len > ALX_CLDCTRL6_CAB_LEN_SHORT1G || + (0 == len && agc > ALX_AGC_LONG1G_LIMT))) || + (speed == SPEED_100 && + (len > ALX_CLDCTRL6_CAB_LEN_SHORT100M || + (0 == len && agc > ALX_AGC_LONG100M_LIMT)))) { + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_LONG); + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val | ALX_AFE_10BT_100M_TH); + } else { + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_DEF); + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_AFE, &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val & ~ALX_AFE_10BT_100M_TH); + } + + /* threashold adjust */ + if (adj_th && hw->lnk_patch) { + if (speed == SPEED_100) { + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE16DB, + ALX_MSE16DB_UP); + } else if (speed == SPEED_1000) { + /* + * Giga link threshold, raise the tolerance of + * noise 50% + */ + alx_read_phy_dbg(hw, ALX_MIIDBG_MSE20DB, + &phy_val); + FIELD_SETS(phy_val, ALX_MSE20DB_TH, + ALX_MSE20DB_TH_HI); + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE20DB, + phy_val); + } + } + /* phy link-down in 1000BT/AZ mode */ + if (az_en && revid == ALX_REV_B0 && speed == SPEED_1000) { + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, + ALX_SRDSYSMOD_DEF & ~ALX_SRDSYSMOD_DEEMP_EN); + } + } else { + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val & ~ALX_AFE_10BT_100M_TH); + + if (adj_th && hw->lnk_patch) { + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE16DB, + ALX_MSE16DB_DOWN); + alx_read_phy_dbg(hw, ALX_MIIDBG_MSE20DB, &phy_val); + FIELD_SETS(phy_val, ALX_MSE20DB_TH, ALX_MSE20DB_TH_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE20DB, phy_val); + } + if (az_en && revid == ALX_REV_B0) { + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, + ALX_SRDSYSMOD_DEF); + } + } +} + + +/* do power saving setting befor enter suspend mode + * NOTE: + * 1. phy link must be established before calling this function + * 2. wol option (pattern,magic,link,etc.) is configed before call it. + */ +int alx_pre_suspend(struct alx_hw *hw, u16 speed) +{ + u32 master, mac, phy, val; + int err = 0; + + ALX_MEM_R32(hw, ALX_MASTER, &master); + master &= ~ALX_MASTER_PCLKSEL_SRDS; + mac = hw->rx_ctrl; + /* 10/100 half */ + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_10_100); + mac &= ~(ALX_MAC_CTRL_FULLD | ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN); + + ALX_MEM_R32(hw, ALX_PHY_CTRL, &phy); + phy &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_CLS); + phy |= ALX_PHY_CTRL_RST_ANALOG | ALX_PHY_CTRL_HIB_PULSE | + ALX_PHY_CTRL_HIB_EN; + + /* without any activity */ + if (!(hw->sleep_ctrl & ALX_SLEEP_ACTIVE)) { + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + phy |= ALX_PHY_CTRL_IDDQ | ALX_PHY_CTRL_POWER_DOWN; + goto config_reg; + } + + if (hw->sleep_ctrl & (ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_CIFS)) + mac |= ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_BRD_EN; + if (hw->sleep_ctrl & ALX_SLEEP_CIFS) + mac |= ALX_MAC_CTRL_TX_EN; + if (speed % 10 == FULL_DUPLEX) + mac |= ALX_MAC_CTRL_FULLD; + if (speed >= SPEED_1000) + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_1000); + phy |= ALX_PHY_CTRL_DSPRST_OUT; + err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_S3DIG10, ALX_MIIEXT_S3DIG10_SL); +config_reg: + + if (!err) { + alx_enable_osc(hw); + hw->rx_ctrl = mac; + ALX_MEM_W32(hw, ALX_MASTER, master); + ALX_MEM_W32(hw, ALX_MAC_CTRL, mac); + ALX_MEM_W32(hw, ALX_PHY_CTRL, phy); + + /* set val of PDLL D3PLLOFF */ + ALX_MEM_R32(hw, ALX_PDLL_TRNS1, &val); + val |= ALX_PDLL_TRNS1_D3PLLOFF_EN; + ALX_MEM_W32(hw, ALX_PDLL_TRNS1, val); + } + + return err; +} + +/* wait mdio module to be idle */ +bool __alx_wait_mdio_idle(struct alx_hw *hw) +{ + u32 val; + int i; + + for (i = 0; i < ALX_MDIO_MAX_AC_TO; i++) { + ALX_MEM_R32(hw, ALX_MDIO, &val); + if (!(val & ALX_MDIO_BUSY)) + break; + udelay(10); + } + return i != ALX_MDIO_MAX_AC_TO; +} + +void __alx_stop_phy_polling(struct alx_hw *hw) +{ + if (!hw->is_fpga) + return; + + ALX_MEM_W32(hw, ALX_MDIO, 0); + __alx_wait_mdio_idle(hw); +} + +void __alx_start_phy_polling(struct alx_hw *hw, u16 clk_sel) +{ + u32 val; + + if (!hw->is_fpga) + return; + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, 1) | + ALX_MDIO_START | + ALX_MDIO_OP_READ; + ALX_MEM_W32(hw, ALX_MDIO, val); + __alx_wait_mdio_idle(hw); + val |= ALX_MDIO_AUTO_POLLING; + val &= ~ALX_MDIO_START; + ALX_MEM_W32(hw, ALX_MDIO, val); + udelay(30); +} + +/* __alx_read_phy_core + * core function to read register in PHY via MDIO interface + * ext: extension register (see IEEE 802.3) + * dev: device address (see IEEE 802.3 DEVAD, PRTAD is fixed to 0) + * reg: register to read + */ +int __alx_read_phy_core(struct alx_hw *hw, bool ext, u8 dev, + u16 reg, u16 *phy_data) +{ + u32 val, clk_sel; + int err; + + __alx_stop_phy_polling(hw); + + *phy_data = 0; + + /* use slow clock when it's in hibernation status */ + clk_sel = !hw->link_up ? + ALX_MDIO_CLK_SEL_25MD128 : ALX_MDIO_CLK_SEL_25MD4; + + if (ext) { + val = FIELDX(ALX_MDIO_EXTN_DEVAD, dev) | + FIELDX(ALX_MDIO_EXTN_REG, reg); + ALX_MEM_W32(hw, ALX_MDIO_EXTN, val); + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + ALX_MDIO_START | + ALX_MDIO_MODE_EXT | + ALX_MDIO_OP_READ; + } else { + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, reg) | + ALX_MDIO_START | + ALX_MDIO_OP_READ; + } + ALX_MEM_W32(hw, ALX_MDIO, val); + + if (unlikely(!__alx_wait_mdio_idle(hw))) + err = ALX_ERR_MIIBUSY; + else { + ALX_MEM_R32(hw, ALX_MDIO, &val); + *phy_data = (u16)FIELD_GETX(val, ALX_MDIO_DATA); + err = 0; + } + + __alx_start_phy_polling(hw, clk_sel); + + return err; +} + +/* __alx_write_phy_core + * core function to write to register in PHY via MDIO interface + * ext: extension register (see IEEE 802.3) + * dev: device address (see IEEE 802.3 DEVAD, PRTAD is fixed to 0) + * reg: register to write + */ +int __alx_write_phy_core(struct alx_hw *hw, bool ext, u8 dev, + u16 reg, u16 phy_data) +{ + u32 val, clk_sel; + int err = 0; + + __alx_stop_phy_polling(hw); + + /* use slow clock when it's in hibernation status */ + clk_sel = !hw->link_up ? + ALX_MDIO_CLK_SEL_25MD128 : ALX_MDIO_CLK_SEL_25MD4; + + if (ext) { + val = FIELDX(ALX_MDIO_EXTN_DEVAD, dev) | + FIELDX(ALX_MDIO_EXTN_REG, reg); + ALX_MEM_W32(hw, ALX_MDIO_EXTN, val); + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_DATA, phy_data) | + ALX_MDIO_START | + ALX_MDIO_MODE_EXT; + } else { + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, reg) | + FIELDX(ALX_MDIO_DATA, phy_data) | + ALX_MDIO_START; + } + ALX_MEM_W32(hw, ALX_MDIO, val); + + if (unlikely(!__alx_wait_mdio_idle(hw))) + err = ALX_ERR_MIIBUSY; + + __alx_start_phy_polling(hw, clk_sel); + + return err; +} + +/* read from PHY normal register */ +int __alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data) +{ + return __alx_read_phy_core(hw, false, 0, reg, phy_data); +} + +/* write to PHY normal register */ +int __alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data) +{ + return __alx_write_phy_core(hw, false, 0, reg, phy_data); +} + +/* read from PHY extension register */ +int __alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata) +{ + return __alx_read_phy_core(hw, true, dev, reg, pdata); +} + +/* write to PHY extension register */ +int __alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data) +{ + return __alx_write_phy_core(hw, true, dev, reg, data); +} + +/* read from PHY debug port */ +int __alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata) +{ + int err; + + err = __alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, reg); + if (unlikely(err)) + return err; + else + err = __alx_read_phy_reg(hw, ALX_MII_DBG_DATA, pdata); + + return err; +} + +/* write to PHY debug port */ +int __alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data) +{ + int err; + + err = __alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, reg); + if (unlikely(err)) + return err; + else + err = __alx_write_phy_reg(hw, ALX_MII_DBG_DATA, data); + + return err; +} + +int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_reg(hw, reg, phy_data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_reg(hw, reg, phy_data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_ext(hw, dev, reg, pdata); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_ext(hw, dev, reg, data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_dbg(hw, reg, pdata); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_dbg(hw, reg, data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +u16 alx_get_phy_config(struct alx_hw *hw) +{ + u32 val; + u16 phy_val; + + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + /* phy in rst */ + if ((val & ALX_PHY_CTRL_DSPRST_OUT) == 0) + return ALX_DRV_PHY_UNKNOWN; + + ALX_MEM_R32(hw, ALX_DRV, &val); + val = FIELD_GETX(val, ALX_DRV_PHY); + if (ALX_DRV_PHY_UNKNOWN == val) + return ALX_DRV_PHY_UNKNOWN; + + alx_read_phy_reg(hw, ALX_MII_DBG_ADDR, &phy_val); + if (ALX_PHY_INITED == phy_val) + return (u16) val; + + return ALX_DRV_PHY_UNKNOWN; +} + +bool alx_phy_configed(struct alx_hw *hw) +{ + u32 cfg, hw_cfg; + + cfg = ethadv_to_hw_cfg(hw, hw->adv_cfg); + cfg = FIELD_GETX(cfg, ALX_DRV_PHY); + hw_cfg = alx_get_phy_config(hw); + if (hw_cfg == ALX_DRV_PHY_UNKNOWN) + return false; + + return cfg == hw_cfg; +} + +int alx_get_phy_link(struct alx_hw *hw, bool *link_up, u16 *speed) +{ + struct pci_dev *pdev = hw->pdev; + u16 bmsr, giga; + int err; + + err = alx_read_phy_reg(hw, MII_BMSR, &bmsr); + err = alx_read_phy_reg(hw, MII_BMSR, &bmsr); + if (unlikely(err)) + goto out; + + if (!(bmsr & BMSR_LSTATUS)) { + *link_up = false; + goto out; + } + + *link_up = true; + + /* speed/duplex result is saved in PHY Specific Status Register */ + err = alx_read_phy_reg(hw, ALX_MII_GIGA_PSSR, &giga); + if (unlikely(err)) + goto out; + + if (!(giga & ALX_GIGA_PSSR_SPD_DPLX_RESOLVED)) + goto wrong_spd_out; + + switch (giga & ALX_GIGA_PSSR_SPEED) { + case ALX_GIGA_PSSR_1000MBS: + *speed = SPEED_1000; + break; + case ALX_GIGA_PSSR_100MBS: + *speed = SPEED_100; + break; + case ALX_GIGA_PSSR_10MBS: + *speed = SPEED_10; + break; + default: + goto wrong_spd_out; + } + *speed += (giga & ALX_GIGA_PSSR_DPLX) ? FULL_DUPLEX : HALF_DUPLEX; + goto out; + +wrong_spd_out: + dev_err(&pdev->dev, "PHY SPD/DPLX unresolved :%x\n", giga); + err = -EINVAL; +out: + return err; +} + +int alx_clear_phy_intr(struct alx_hw *hw) +{ + u16 isr; + + /* clear interrupt status by read it */ + return alx_read_phy_reg(hw, ALX_MII_ISR, &isr); +} + +int alx_config_wol(struct alx_hw *hw) +{ + u32 wol; + int err = 0; + + wol = 0; + /* turn on magic packet event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) { + wol |= ALX_WOL0_MAGIC_EN | ALX_WOL0_PME_MAGIC_EN; + /* magic packet maybe Broadcast&multicast&Unicast frame */ + /* mac |= MAC_CTRL_BC_EN; */ + } + + /* turn on link up event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) { + wol |= ALX_WOL0_LINK_EN | ALX_WOL0_PME_LINK; + /* only link up can wake up */ + err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP); + } + ALX_MEM_W32(hw, ALX_WOL0, wol); + + return err; +} + +void alx_configure_rss(struct alx_hw *hw, bool en) +{ + u32 ctrl; + int i; + + ALX_MEM_R32(hw, ALX_RXQ0, &ctrl); + + if (en) { + for (i = 0; i < sizeof(hw->rss_key); i++) { + /* rss key should be saved in chip with + * reversed order. + */ + int j = sizeof(hw->rss_key) - i - 1; + + ALX_MEM_W8(hw, ALX_RSS_KEY0 + j, hw->rss_key[i]); + } + + for (i = 0; i < ARRAY_SIZE(hw->rss_idt); i++) + ALX_MEM_W32(hw, ALX_RSS_IDT_TBL0 + i * 4, + hw->rss_idt[i]); + + FIELD_SET32(ctrl, ALX_RXQ0_RSS_HSTYP, hw->rss_hash_type); + FIELD_SET32(ctrl, ALX_RXQ0_RSS_MODE, ALX_RXQ0_RSS_MODE_MQMI); + FIELD_SET32(ctrl, ALX_RXQ0_IDT_TBL_SIZE, hw->rss_idt_size); + ctrl |= ALX_RXQ0_RSS_HASH_EN; + } else { + ctrl &= ~ALX_RXQ0_RSS_HASH_EN; + } + + ALX_MEM_W32(hw, ALX_RXQ0, ctrl); +} + +void alx_configure_basic(struct alx_hw *hw) +{ + u32 val, raw_mtu, max_payload; + u16 val16; + u8 chip_rev = ALX_REVID(hw); + + /* mac address */ + alx_set_macaddr(hw, hw->mac_addr); + + /* clk gating */ + ALX_MEM_W32(hw, ALX_CLK_GATE, ALX_CLK_GATE_ALL_A0); + + /* idle timeout to switch clk_125M */ + if (chip_rev >= ALX_REV_B0) { + ALX_MEM_W32(hw, ALX_IDLE_DECISN_TIMER, + ALX_IDLE_DECISN_TIMER_DEF); + } + + /* stats refresh timeout */ + ALX_MEM_W32(hw, ALX_SMB_TIMER, hw->smb_timer * 500UL); + + /* intr moduration */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + val = val | ALX_MASTER_IRQMOD2_EN | + ALX_MASTER_IRQMOD1_EN | + ALX_MASTER_SYSALVTIMER_EN; + ALX_MEM_W32(hw, ALX_MASTER, val); + ALX_MEM_W32(hw, ALX_IRQ_MODU_TIMER, + FIELDX(ALX_IRQ_MODU_TIMER1, hw->imt >> 1)); + /* intr re-trig timeout */ + ALX_MEM_W32(hw, ALX_INT_RETRIG, ALX_INT_RETRIG_TO); + /* tpd threshold to trig int */ + ALX_MEM_W32(hw, ALX_TINT_TPD_THRSHLD, hw->ith_tpd); + ALX_MEM_W32(hw, ALX_TINT_TIMER, hw->imt); + + /* mtu, 8:fcs+vlan */ + raw_mtu = hw->mtu + ETH_HLEN; + ALX_MEM_W32(hw, ALX_MTU, raw_mtu + 8); + if (raw_mtu > ALX_MTU_JUMBO_TH) + hw->rx_ctrl &= ~ALX_MAC_CTRL_FAST_PAUSE; + + /* txq */ + if ((raw_mtu + 8) < ALX_TXQ1_JUMBO_TSO_TH) + val = (raw_mtu + 8 + 7) >> 3; + else + val = ALX_TXQ1_JUMBO_TSO_TH >> 3; + ALX_MEM_W32(hw, ALX_TXQ1, val | ALX_TXQ1_ERRLGPKT_DROP_EN); + max_payload = alx_get_readrq(hw) >> 8; + /* + * if BIOS had changed the default dma read max length, + * restore it to default value + */ + if (max_payload < ALX_DEV_CTRL_MAXRRS_MIN) + alx_set_readrq(hw, 128 << ALX_DEV_CTRL_MAXRRS_MIN); + + val = FIELDX(ALX_TXQ0_TPD_BURSTPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + ALX_TXQ0_MODE_ENHANCE | + ALX_TXQ0_LSO_8023_EN | + ALX_TXQ0_SUPT_IPOPT | + FIELDX(ALX_TXQ0_TXF_BURST_PREF, ALX_TXQ_TXF_BURST_PREF_DEF); + ALX_MEM_W32(hw, ALX_TXQ0, val); + val = FIELDX(ALX_HQTPD_Q1_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + FIELDX(ALX_HQTPD_Q2_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + FIELDX(ALX_HQTPD_Q3_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + ALX_HQTPD_BURST_EN; + ALX_MEM_W32(hw, ALX_HQTPD, val); + + /* rxq, flow control */ + ALX_MEM_R32(hw, ALX_SRAM5, &val); + val = FIELD_GETX(val, ALX_SRAM_RXF_LEN) << 3; + if (val > ALX_SRAM_RXF_LEN_8K) { + val16 = ALX_MTU_STD_ALGN >> 3; + val = (val - ALX_RXQ2_RXF_FLOW_CTRL_RSVD) >> 3; + } else { + val16 = ALX_MTU_STD_ALGN >> 3; + val = (val - ALX_MTU_STD_ALGN) >> 3; + } + ALX_MEM_W32(hw, ALX_RXQ2, + FIELDX(ALX_RXQ2_RXF_XOFF_THRESH, val16) | + FIELDX(ALX_RXQ2_RXF_XON_THRESH, val)); + val = FIELDX(ALX_RXQ0_NUM_RFD_PREF, ALX_RXQ0_NUM_RFD_PREF_DEF) | + FIELDX(ALX_RXQ0_RSS_MODE, ALX_RXQ0_RSS_MODE_DIS) | + FIELDX(ALX_RXQ0_IDT_TBL_SIZE, ALX_RXQ0_IDT_TBL_SIZE_DEF) | + ALX_RXQ0_RSS_HSTYP_ALL | + ALX_RXQ0_RSS_HASH_EN | + ALX_RXQ0_IPV6_PARSE_EN; + if (ALX_CAP(hw, GIGA)) { + FIELD_SET32(val, ALX_RXQ0_ASPM_THRESH, + ALX_RXQ0_ASPM_THRESH_100M); + } + ALX_MEM_W32(hw, ALX_RXQ0, val); + + /* DMA */ + ALX_MEM_R32(hw, ALX_DMA, &val); + val = FIELDX(ALX_DMA_RORDER_MODE, ALX_DMA_RORDER_MODE_OUT) | + ALX_DMA_RREQ_PRI_DATA | + FIELDX(ALX_DMA_RREQ_BLEN, max_payload) | + FIELDX(ALX_DMA_WDLY_CNT, ALX_DMA_WDLY_CNT_DEF) | + FIELDX(ALX_DMA_RDLY_CNT, ALX_DMA_RDLY_CNT_DEF) | + FIELDX(ALX_DMA_RCHNL_SEL, hw->dma_chnl - 1); + ALX_MEM_W32(hw, ALX_DMA, val); + + /* multi-tx-q weight */ + if (ALX_CAP(hw, MTQ)) { + val = FIELDX(ALX_WRR_PRI, hw->wrr_ctrl) | + FIELDX(ALX_WRR_PRI0, hw->wrr[0]) | + FIELDX(ALX_WRR_PRI1, hw->wrr[1]) | + FIELDX(ALX_WRR_PRI2, hw->wrr[2]) | + FIELDX(ALX_WRR_PRI3, hw->wrr[3]); + ALX_MEM_W32(hw, ALX_WRR, val); + } +} + +void alx_mask_msix(struct alx_hw *hw, int index, bool mask) +{ + u32 reg, val; + + reg = ALX_MSIX_ENTRY_BASE + index * PCI_MSIX_ENTRY_SIZE + + PCI_MSIX_ENTRY_VECTOR_CTRL; + + val = mask ? PCI_MSIX_ENTRY_CTRL_MASKBIT : 0; + + ALX_MEM_W32(hw, reg, val); + ALX_MEM_FLUSH(hw); +} + +int alx_select_powersaving_speed(struct alx_hw *hw, u16 *speed) +{ + int i, err; + u16 spd, lpa; + bool linkup; + + err = alx_get_phy_link(hw, &linkup, &spd); + if (err) + goto out; + + if (!linkup) { + *speed = SPEED_0; + goto out; + } + + err = alx_read_phy_reg(hw, MII_LPA, &lpa); + if (err) + goto out; + + if (!(lpa & LPA_LPACK)) { + *speed = spd; + goto out; + } + if (lpa & LPA_10FULL) + *speed = SPEED_10 + FULL_DUPLEX; + else if (lpa & LPA_10HALF) + *speed = SPEED_10 + HALF_DUPLEX; + else if (lpa & LPA_100FULL) + *speed = SPEED_100 + FULL_DUPLEX; + else + *speed = SPEED_100 + HALF_DUPLEX; + + if (*speed != spd) { + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + if (err) + goto out; + err = alx_setup_speed_duplex(hw, + ALX_SPEED_TO_ETHADV(*speed) | ADVERTISED_Autoneg, + ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX); + if (err) + goto out; + + /* wait for linkup */ + for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) { + u16 speed2; + bool link_on; + + msleep(100); + err = alx_get_phy_link(hw, &link_on, &speed2); + if (err) + goto out; + if (link_on) + break; + } + if (i == ALX_MAX_SETUP_LNK_CYCLE) { + err = ALX_LINK_TIMEOUT; + goto out; + } + } + +out: + return err; +} + +void __alx_update_hw_stats(struct alx_hw *hw) +{ + u16 reg; + u32 data; + unsigned long *p; + + /* RX stats */ + reg = ALX_RX_STATS_BIN; + p = &hw->stats.rx_ok; + while (reg <= ALX_RX_STATS_END) { + ALX_MEM_R32(hw, reg, &data); + *p++ += data; + reg += 4; + } + + /* TX stats */ + reg = ALX_TX_STATS_BIN; + p = &hw->stats.tx_ok; + while (reg <= ALX_TX_STATS_END) { + ALX_MEM_R32(hw, reg, &data); + *p++ += data; + reg += 4; + } +} + +static const struct alx_platform_patch plats[] = { +{0x1091, 0x00, 0x1969, 0x0091, 0x1001}, +{0}, +}; + +void alx_patch_assign(struct alx_hw *hw) +{ + int i = 0; + + while (plats[i].pci_did != 0) { + if (plats[i].pci_did == ALX_DID(hw) && + plats[i].subsystem_vid == ALX_SUB_VID(hw) && + plats[i].subsystem_did == ALX_SUB_DID(hw) && + (plats[i].pflag & ALX_PF_ANY_REV || + plats[i].pci_rev == hw->revision)) { + if (plats[i].pflag & ALX_PF_LINK) + hw->lnk_patch = true; + if (plats[i].pflag & ALX_PF_HIB) + hw->hib_patch = true; + } + i++; + } +} + +bool alx_get_phy_info(struct alx_hw *hw) +{ + u16 devs1, devs2; + + if (alx_read_phy_reg(hw, MII_PHYSID1, &hw->phy_id[0]) || + alx_read_phy_reg(hw, MII_PHYSID2, &hw->phy_id[1])) + return false; + + /* since we haven't PMA/PMD status2 register, we can't + * use mdio45_probe function for prtad and mmds. + * use fixed MMD3 to get mmds. + */ + if (alx_read_phy_ext(hw, 3, MDIO_DEVS1, &devs1) || + alx_read_phy_ext(hw, 3, MDIO_DEVS2, &devs2)) + return false; + hw->mdio.mmds = devs1 | devs2 << 16; + + return true; +} --- linux-3.5.0.orig/ubuntu/alx/update.sh +++ linux-3.5.0/ubuntu/alx/update.sh @@ -0,0 +1,20 @@ +# +# Update from the upstream repository. +# + +### github:qca == QCA Project repo +ALX_REPO="git://github.com/qca/alx.git" + +ALX_AUTHOR="Qualcomm Atheros, Inc. " +set -e + +git clone "$ALX_REPO" +descr="UBUNTU: SAUCE: alx: Update to `(cd alx; git describe --all; echo; git remote -v |grep fetch; echo -n " "; git log --pretty=oneline -1)`" + +rsync -av alx/src/ alx/LICENSE alx/README.md . +rm -rf alx + +git add . +git commit --author="$ALX_AUTHOR" -s -m"$descr" + +git log -1 --- linux-3.5.0.orig/ubuntu/alx/README.md +++ linux-3.5.0/ubuntu/alx/README.md @@ -0,0 +1,60 @@ +# alx standalone development tree + +The puropose of this development tree is to enable us to do development +on alx for both BSD and Linux with a single unified repository. This enables +us to synchronize fixes for both BSD and Linux. The idea is to help end +typical proprietary driver development for good: + +http://www.youtube.com/watch?v=9P-r3H0bY8c + +# Linux support + +Linux support targets the alx driver to be built in synch with +linux-next.git as the base development tree. Backport kernel support +is provided by utilizing the compat-drivers framework. + +To build for linux you will need a few trees. We have scripts to let +you get all that you need: + +
+cd ~
+git clone git://github.com/mcgrof/compat.git
+cd compat
+./bin/get-compat-trees
+
+cd ~
+mkdir unified/
+git clone git://github.com/mcgrof/alx.git
+
+cd alx
+./make linux
+
+ +# Contributions + +Contributions to compat follow the same mechanisms as used in the Linux kernel, +this means you should provide as Singed-off-by tag as documented on the +Developer's Certificate of Origin 1.1. + +# Submitting patches + +compat and compat-drivers contributions follow the contribution model +implemented by the Linux kernel. Patches or pull requests for compat and +compat-drivers must have be signed-offed. If you don't sign off on them they +will not accepted. This means adding a line that says "Signed-off-by: Name +email" at the end of each commit, indicating that you wrote the code and have +the right to pass it on as an open source patch. For exact definition of what +the Signed-off-by tag is you can read the definition of the "Developer's +Certificate of Origin 1.1", which you can read here: + +http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html + +You can send patches as follows: + + * To: mcgrof@kernel.org, adrian@freebsd.org + * Cc: nic-devel@qualcomm.com + * Subject: alx: foo + +# BSD support + +TBD --- linux-3.5.0.orig/ubuntu/aufs/i_op_add.c +++ linux-3.5.0/ubuntu/aufs/i_op_add.c @@ -0,0 +1,712 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (add entry) + */ + +#include "aufs.h" + +/* + * final procedure of adding a new entry, except link(2). + * remove whiteout, instantiate, copyup the parent dir's times and size + * and update version. + * if it failed, re-create the removed whiteout. + */ +static int epilog(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct dentry *dentry) +{ + int err, rerr; + aufs_bindex_t bwh; + struct path h_path; + struct inode *inode, *h_dir; + struct dentry *wh; + + bwh = -1; + if (wh_dentry) { + h_dir = wh_dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(h_dir); + AuDebugOn(au_h_iptr(dir, bindex) != h_dir); + bwh = au_dbwh(dentry); + h_path.dentry = wh_dentry; + h_path.mnt = au_sbr_mnt(dir->i_sb, bindex); + err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, + dentry); + if (unlikely(err)) + goto out; + } + + inode = au_new_inode(dentry, /*must_new*/1); + if (!IS_ERR(inode)) { + d_instantiate(dentry, inode); + dir = dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(dir); + if (au_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + dir->i_version++; + return 0; /* success */ + } + + err = PTR_ERR(inode); + if (!wh_dentry) + goto out; + + /* revert */ + /* dir inode is locked */ + wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); + rerr = PTR_ERR(wh); + if (IS_ERR(wh)) { + AuIOErr("%.*s reverting whiteout failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } else + dput(wh); + +out: + return err; +} + +static int au_d_may_add(struct dentry *dentry) +{ + int err; + + err = 0; + if (unlikely(d_unhashed(dentry))) + err = -ENOENT; + if (unlikely(dentry->d_inode)) + err = -EEXIST; + return err; +} + +/* + * simple tests for the adding inode operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry; + struct inode *h_inode; + + err = -ENAMETOOLONG; + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + h_dentry = au_h_dptr(dentry, bindex); + h_inode = h_dentry->d_inode; + if (!dentry->d_inode) { + err = -EEXIST; + if (unlikely(h_inode)) + goto out; + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } + + err = 0; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + err = -EIO; + +out: + AuTraceErr(err); + return err; +} + +/* + * initial procedure of adding a new entry. + * prepare writable branch and the parent dir, lock it, + * and lookup whiteout for the new entry. + */ +static struct dentry* +lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, + struct dentry *src_dentry, struct au_pin *pin, + struct au_wr_dir_args *wr_dir_args) +{ + struct dentry *wh_dentry, *h_parent; + struct super_block *sb; + struct au_branch *br; + int err; + unsigned int udba; + aufs_bindex_t bcpup; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + + err = au_wr_dir(dentry, src_dentry, wr_dir_args); + bcpup = err; + wh_dentry = ERR_PTR(err); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_parent = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) + err = au_may_add(dentry, bcpup, h_parent, + au_ftest_wrdir(wr_dir_args->flags, ISDIR)); + else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + + br = au_sbr(sb, bcpup); + if (dt) { + struct path tmp = { + .dentry = h_parent, + .mnt = br->br_mnt + }; + au_dtime_store(dt, au_pinned_parent(pin), &tmp); + } + + wh_dentry = NULL; + if (bcpup != au_dbwh(dentry)) + goto out; /* success */ + + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + +out_unpin: + if (IS_ERR(wh_dentry)) + au_unpin(pin); +out: + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +enum { Mknod, Symlink, Creat }; +struct simple_arg { + int type; + union { + struct { + umode_t mode; + struct nameidata *nd; + } c; + struct { + const char *symname; + } s; + struct { + umode_t mode; + dev_t dev; + } m; + } u; +}; + +static int add_simple(struct inode *dir, struct dentry *dentry, + struct simple_arg *arg) +{ + int err; + aufs_bindex_t bstart; + unsigned char created; + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY + }; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + IMustLock(dir); + + parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, /*src_dentry*/NULL, &pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + bstart = au_dbstart(dentry); + h_path.dentry = au_h_dptr(dentry, bstart); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bstart); + h_dir = au_pinned_h_dir(&pin); + switch (arg->type) { + case Creat: + err = vfsub_create(h_dir, &h_path, arg->u.c.mode); + break; + case Symlink: + err = vfsub_symlink(h_dir, &h_path, arg->u.s.symname); + break; + case Mknod: + err = vfsub_mknod(h_dir, &h_path, arg->u.m.mode, arg->u.m.dev); + break; + default: + BUG(); + } + created = !err; + if (!err) + err = epilog(dir, bstart, wh_dentry, dentry); + + /* revert */ + if (unlikely(created && err && h_path.dentry->d_inode)) { + int rerr; + rerr = vfsub_unlink(h_dir, &h_path, /*force*/0); + if (rerr) { + AuIOErr("%.*s revert failure(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); + } + + au_unpin(&pin); + dput(wh_dentry); + +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out: + return err; +} + +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, + .u.m = { + .mode = mode, + .dev = dev + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, + .u.s.symname = symname + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = mode, + .nd = nd + } + }; + return add_simple(dir, dentry, &arg); +} + +/* ---------------------------------------------------------------------- */ + +struct au_link_args { + aufs_bindex_t bdst, bsrc; + struct au_pin pin; + struct path h_path; + struct dentry *src_parent, *parent; +}; + +static int au_cpup_before_link(struct dentry *src_dentry, + struct au_link_args *a) +{ + int err; + struct dentry *h_src_dentry; + struct mutex *h_mtx; + struct file *h_file; + + di_read_lock_parent(a->src_parent, AuLock_IR); + err = au_test_and_cpup_dirs(src_dentry, a->bdst); + if (unlikely(err)) + goto out; + + h_src_dentry = au_h_dptr(src_dentry, a->bsrc); + h_mtx = &h_src_dentry->d_inode->i_mutex; + err = au_pin(&a->pin, src_dentry, a->bdst, + au_opt_udba(src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + h_file = au_h_open_pre(src_dentry, a->bsrc); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(src_dentry, a->bdst, -1, + AuCpup_DTIME /* | AuCpup_KEEPLINO */); + mutex_unlock(h_mtx); + au_h_open_post(src_dentry, a->bsrc, h_file); + au_unpin(&a->pin); + +out: + di_read_unlock(a->src_parent, AuLock_IR); + return err; +} + +static int au_cpup_or_link(struct dentry *src_dentry, struct au_link_args *a) +{ + int err; + unsigned char plink; + struct inode *h_inode, *inode; + struct dentry *h_src_dentry; + struct super_block *sb; + struct file *h_file; + + plink = 0; + h_inode = NULL; + sb = src_dentry->d_sb; + inode = src_dentry->d_inode; + if (au_ibstart(inode) <= a->bdst) + h_inode = au_h_iptr(inode, a->bdst); + if (!h_inode || !h_inode->i_nlink) { + /* copyup src_dentry as the name of dentry. */ + au_set_dbstart(src_dentry, a->bdst); + au_set_h_dptr(src_dentry, a->bdst, dget(a->h_path.dentry)); + h_inode = au_h_dptr(src_dentry, a->bsrc)->d_inode; + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + h_file = au_h_open_pre(src_dentry, a->bsrc); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_single(src_dentry, a->bdst, a->bsrc, + -1, AuCpup_KEEPLINO, + a->parent); + mutex_unlock(&h_inode->i_mutex); + au_h_open_post(src_dentry, a->bsrc, h_file); + au_set_h_dptr(src_dentry, a->bdst, NULL); + au_set_dbstart(src_dentry, a->bsrc); + } else { + /* the inode of src_dentry already exists on a.bdst branch */ + h_src_dentry = d_find_alias(h_inode); + if (!h_src_dentry && au_plink_test(inode)) { + plink = 1; + h_src_dentry = au_plink_lkup(inode, a->bdst); + err = PTR_ERR(h_src_dentry); + if (IS_ERR(h_src_dentry)) + goto out; + + if (unlikely(!h_src_dentry->d_inode)) { + dput(h_src_dentry); + h_src_dentry = NULL; + } + + } + if (h_src_dentry) { + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path); + dput(h_src_dentry); + } else { + AuIOErr("no dentry found for hi%lu on b%d\n", + h_inode->i_ino, a->bdst); + err = -EIO; + } + } + + if (!err && !plink) + au_plink_append(inode, a->bdst, a->h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry) +{ + int err, rerr; + struct au_dtime dt; + struct au_link_args *a; + struct dentry *wh_dentry, *h_src_dentry; + struct inode *inode; + struct super_block *sb; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + IMustLock(dir); + inode = src_dentry->d_inode; + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_and_write_lock2(dentry, src_dentry, + AuLock_NOPLM | AuLock_GEN); + if (unlikely(err)) + goto out_kfree; + err = au_d_hashed_positive(src_dentry); + if (unlikely(err)) + goto out_unlock; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + a->src_parent = dget_parent(src_dentry); + wr_dir_args.force_btgt = au_ibstart(inode); + + di_write_lock_parent(a->parent); + wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + err = 0; + sb = dentry->d_sb; + a->bdst = au_dbstart(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibstart(inode); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + if (!h_src_dentry) { + a->bsrc = au_dbstart(src_dentry); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + AuDebugOn(!h_src_dentry); + } else if (IS_ERR(h_src_dentry)) + goto out_parent; + + if (au_opt_test(au_mntflags(sb), PLINK)) { + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) + err = au_cpup_or_link(src_dentry, a); + else + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path); + dput(h_src_dentry); + } else { + /* + * copyup src_dentry to the branch we process, + * and then link(2) to it. + */ + dput(h_src_dentry); + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { + au_unpin(&a->pin); + di_write_unlock(a->parent); + err = au_cpup_before_link(src_dentry, a); + di_write_lock_parent(a->parent); + if (!err) + err = au_pin(&a->pin, dentry, a->bdst, + au_opt_udba(sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_wh; + } + if (!err) { + h_src_dentry = au_h_dptr(src_dentry, a->bdst); + err = -ENOENT; + if (h_src_dentry && h_src_dentry->d_inode) + err = vfsub_link(h_src_dentry, + au_pinned_h_dir(&a->pin), + &a->h_path); + } + } + if (unlikely(err)) + goto out_unpin; + + if (wh_dentry) { + a->h_path.dentry = wh_dentry; + err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, + dentry); + if (unlikely(err)) + goto out_revert; + } + + dir->i_version++; + if (au_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + inc_nlink(inode); + inode->i_ctime = dir->i_ctime; + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ + d_drop(dentry); + goto out_unpin; /* success */ + +out_revert: + rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, /*force*/0); + if (unlikely(rerr)) { + AuIOErr("%.*s reverting failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); +out_unpin: + au_unpin(&a->pin); +out_wh: + dput(wh_dentry); +out_parent: + di_write_unlock(a->parent); + dput(a->src_parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + kfree(a); +out: + return err; +} + +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; + unsigned char diropq; + struct path h_path; + struct dentry *wh_dentry, *parent, *opq_dentry; + struct mutex *h_mtx; + struct super_block *sb; + struct { + struct au_pin pin; + struct au_dtime dt; + } *a; /* reduce the stack usage */ + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR + }; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + sb = dentry->d_sb; + bindex = au_dbstart(dentry); + h_path.dentry = au_h_dptr(dentry, bindex); + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); + if (unlikely(err)) + goto out_unpin; + + /* make the dir opaque */ + diropq = 0; + h_mtx = &h_path.dentry->d_inode->i_mutex; + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + mutex_unlock(h_mtx); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out_dir; + dput(opq_dentry); + diropq = 1; + } + + err = epilog(dir, bindex, wh_dentry, dentry); + if (!err) { + inc_nlink(dir); + goto out_unpin; /* success */ + } + + /* revert */ + if (diropq) { + AuLabel(revert opq); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + mutex_unlock(h_mtx); + if (rerr) { + AuIOErr("%.*s reverting diropq failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + } + +out_dir: + AuLabel(revert dir); + rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); + if (rerr) { + AuIOErr("%.*s reverting dir failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/dir.h +++ linux-3.5.0/ubuntu/aufs/dir.h @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * directory operations + */ + +#ifndef __AUFS_DIR_H__ +#define __AUFS_DIR_H__ + +#ifdef __KERNEL__ + +#include + +/* ---------------------------------------------------------------------- */ + +/* need to be faster and smaller */ + +struct au_nhash { + unsigned int nh_num; + struct hlist_head *nh_head; +}; + +struct au_vdir_destr { + unsigned char len; + unsigned char name[0]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; +} ____cacheline_aligned_in_smp; + +struct au_vdir_de { + ino_t de_ino; + unsigned char de_type; + /* caution: packed */ + struct au_vdir_destr de_str; +} __packed; + +struct au_vdir_wh { + struct hlist_node wh_hash; +#ifdef CONFIG_AUFS_SHWH + ino_t wh_ino; + aufs_bindex_t wh_bindex; + unsigned char wh_type; +#else + aufs_bindex_t wh_bindex; +#endif + /* caution: packed */ + struct au_vdir_destr wh_str; +} __packed; + +union au_vdir_deblk_p { + unsigned char *deblk; + struct au_vdir_de *de; +}; + +struct au_vdir { + unsigned char **vd_deblk; + unsigned long vd_nblk; + struct { + unsigned long ul; + union au_vdir_deblk_p p; + } vd_last; + + unsigned long vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dir.c */ +extern const struct file_operations aufs_dir_fop; +void au_add_nlink(struct inode *dir, struct inode *h_dir); +void au_sub_nlink(struct inode *dir, struct inode *h_dir); +loff_t au_dir_size(struct file *file, struct dentry *dentry); +int au_test_empty_lower(struct dentry *dentry); +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); + +/* vdir.c */ +unsigned int au_rdhash_est(loff_t sz); +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); +void au_nhash_wh_free(struct au_nhash *whlist); +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit); +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh); +void au_vdir_free(struct au_vdir *vdir); +int au_vdir_init(struct file *file); +int au_vdir_fill_de(struct file *file, void *dirent, filldir_t filldir); + +/* ioctl.c */ +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); + +#ifdef CONFIG_AUFS_RDU +/* rdu.c */ +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg); +#endif +#else +static inline long au_rdu_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return -EINVAL; +} +#ifdef CONFIG_COMPAT +static inline long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return -EINVAL; +} +#endif +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/ioctl.c +++ linux-3.5.0/ubuntu/aufs/ioctl.c @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * ioctl + * plink-management and readdir in userspace. + * assist the pathconf(3) wrapper library. + */ + +#include "aufs.h" + +static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) +{ + int err, fd; + aufs_bindex_t wbi, bindex, bend; + struct file *h_file; + struct super_block *sb; + struct dentry *root; + struct au_branch *br; + struct aufs_wbr_fd wbrfd = { + .oflags = au_dir_roflags, + .brid = -1 + }; + const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY + | O_NOATIME | O_CLOEXEC; + + AuDebugOn(wbrfd.oflags & ~valid); + + if (arg) { + err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + + err = -EINVAL; + AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); + wbrfd.oflags |= au_dir_roflags; + AuDbg("0%o\n", wbrfd.oflags); + if (unlikely(wbrfd.oflags & ~valid)) + goto out; + } + + fd = get_unused_fd(); + err = fd; + if (unlikely(fd < 0)) + goto out; + + h_file = ERR_PTR(-EINVAL); + wbi = 0; + br = NULL; + sb = path->dentry->d_sb; + root = sb->s_root; + aufs_read_lock(root, AuLock_IR); + bend = au_sbend(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bend)) + goto out_unlock; + } + + h_file = ERR_PTR(-ENOENT); + br = au_sbr(sb, wbi); + if (!au_br_writable(br->br_perm)) { + if (arg) + goto out_unlock; + + bindex = wbi + 1; + wbi = -1; + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) { + wbi = bindex; + br = au_sbr(sb, wbi); + break; + } + } + } + AuDbg("wbi %d\n", wbi); + if (wbi >= 0) + h_file = au_h_open(root, wbi, wbrfd.oflags, NULL); + +out_unlock: + aufs_read_unlock(root, AuLock_IR); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_fd; + + atomic_dec(&br->br_count); /* cf. au_h_open() */ + fd_install(fd, h_file); + err = fd; + goto out; /* success */ + +out_fd: + put_unused_fd(fd); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_ioctl(file, arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_compat_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_compat_ioctl(file, arg); + break; + + default: + err = aufs_ioctl_dir(file, cmd, arg); + } + + AuTraceErr(err); + return err; +} + +#if 0 /* unused yet */ +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif +#endif --- linux-3.5.0.orig/ubuntu/aufs/module.c +++ linux-3.5.0/ubuntu/aufs/module.c @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * module global variables and operations + */ + +#include +#include +#include "aufs.h" + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp) +{ + if (new_sz <= nused) + return p; + + p = krealloc(p, new_sz, gfp); + if (p) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ + +/* + * aufs caches + */ +struct kmem_cache *au_cachep[AuCache_Last]; +static int __init au_cache_init(void) +{ + au_cachep[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cachep[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cachep[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cachep[AuCache_ICNTNR]) + au_cachep[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cachep[AuCache_FINFO]) + au_cachep[AuCache_VDIR] = AuCache(au_vdir); + if (au_cachep[AuCache_VDIR]) + au_cachep[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cachep[AuCache_DEHSTR]) + return 0; + + return -ENOMEM; +} + +static void au_cache_fin(void) +{ + int i; + + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) + if (au_cachep[i]) { + kmem_cache_destroy(au_cachep[i]); + au_cachep[i] = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct au_splhead au_sbilist; +#endif + +struct lock_class_key au_lc_key[AuLcKey_Last]; + +/* + * functions for module interface. + */ +MODULE_LICENSE("GPL"); +/* MODULE_LICENSE("GPL v2"); */ +MODULE_AUTHOR("Junjiro R. Okajima "); +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; +MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); +module_param_named(brs, sysaufs_brs, int, S_IRUGO); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + return seq_path(seq, path, au_esc_chars); +} + +/* ---------------------------------------------------------------------- */ + +static int __init aufs_init(void) +{ + int err, i; + char *p; + + p = au_esc_chars; + for (i = 1; i <= ' '; i++) + *p++ = i; + *p++ = '\\'; + *p++ = '\x7f'; + *p = 0; + + au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = au_procfs_init(); + if (unlikely(err)) + goto out_sysaufs; + err = au_wkq_init(); + if (unlikely(err)) + goto out_procfs; + err = au_loopback_init(); + if (unlikely(err)) + goto out_wkq; + err = au_hnotify_init(); + if (unlikely(err)) + goto out_loopback; + err = au_sysrq_init(); + if (unlikely(err)) + goto out_hin; + err = au_cache_init(); + if (unlikely(err)) + goto out_sysrq; + err = register_filesystem(&aufs_fs_type); + if (unlikely(err)) + goto out_cache; + /* since we define pr_fmt, call printk directly */ + printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); + goto out; /* success */ + +out_cache: + au_cache_fin(); +out_sysrq: + au_sysrq_fin(); +out_hin: + au_hnotify_fin(); +out_loopback: + au_loopback_fin(); +out_wkq: + au_wkq_fin(); +out_procfs: + au_procfs_fin(); +out_sysaufs: + sysaufs_fin(); + au_dy_fin(); +out: + return err; +} + +static void __exit aufs_exit(void) +{ + unregister_filesystem(&aufs_fs_type); + au_cache_fin(); + au_sysrq_fin(); + au_hnotify_fin(); + au_loopback_fin(); + au_wkq_fin(); + au_procfs_fin(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); --- linux-3.5.0.orig/ubuntu/aufs/BOM.UPDATING +++ linux-3.5.0/ubuntu/aufs/BOM.UPDATING @@ -0,0 +1,80 @@ += How to update AUFS2 = + +This document covers the process for updating aufs2 within the Ubuntu +drivers directory. + +== Background == + +Upstream aufs2 is maintained in a git tree as below (which is _not_ used +when updating Ubuntu). This represents the primary upstream source tree: + + http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-2.6.git + +However this is on an http: transport and incredibly slow. It is advisable +to also add the gitorius mirror to your tree, fetching that before origin +to reduce the objects you need from the main tree: + + git://gitorious.org/aufs2/aufs2.git + +Ubuntu updates are actually taken from the aufs2-standalone tree, somewhat +similar to the compat-wireless tree. The version in this tree is based on +the mainline tree above but is modularisable, a key requirement for Ubuntu. +This tree is found at the git tree below (check the BOM for the definative +location): + + http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git + +This tree contains a set of branches, one per upstream release. The +aufs2.1 branch represents the mainline tracking branch, with aufs-2.1-38 +representing the delta to mainline 2.6.38. Each branch contains a set +of patches which affect the core enabling the application of aufs2, plus +an open tree for the fs/aufs tree. The core patches tend to be static +from early in the line of an upstream release, and thus generally do not +need updating as often. + +== Updating the core patches == + +Ubuntu uses two of the core enablement patches, which are applied in the +order below. The remaining changes required to enable aufs are Ubuntu +specific and static: + + aufs2-base.patch + aufs2-standalone.patch + +In order to update these patches it is simplest to simply revert the +existing pair and apply these as two commit. This allows us to more +easily drop aufs in the future should that be required. + +As these core enablement patches are very slow in changing we normally +do not need to update these more than once per upstream mainline release +though sometimes changes do affect these. + +== Updating aufs2 == + +Once the enablement patches are updated we can simply use the aufs-update +script in the ubuntu/ directory to update the existing source. There are +regular updates to the aufs2 upstream and it is likely we will see updates +there more than once a month. + +Firstly checkout the upstream standalone tree (see the BOM for the +location) and checkout an appropriate branch for the release you are +updating. Then simply run the aufs-update command from within the ubuntu/ +drivers directory, supplying the location of the local aufs2-standalone tree +on the command line: + + cd ubuntu + sh aufs-update ../../aufs2-standalone + +This will result in an update commit containing the updated code and +also updating the BOM. Note that any local modifications are now lost. +Where those exist they should be cherry-picked and then squashed into +the update commit to ensure we retain them. + +== Ubuntu modifications == + +We carry a very small delta to the upstream aufs2 source. Any such changes +need to be cherry-picked from the history and squashed into any update +commit in order to prevent regression. Any current patches are listed below: + +Lucid/Maverick/Natty/Oneiric: + UBUNTU: ubuntu: AUFS -- suppress benign plink warning messages --- linux-3.5.0.orig/ubuntu/aufs/vfsub.c +++ linux-3.5.0/ubuntu/aufs/vfsub.c @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for VFS + */ + +#include +#include +#include +#include +#include "aufs.h" + +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; + struct kstat st; + struct super_block *h_sb; + + /* for remote fs, leave work for its getattr or d_revalidate */ + /* for bad i_attr fs, handle them in aufs_getattr() */ + /* still some fs may acquire i_mutex. we need to skip them */ + err = 0; + if (!did) + did = &err; + h_sb = h_path->dentry->d_sb; + *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); + if (*did) + err = vfs_getattr(h_path->mnt, h_path->dentry, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + struct file *file; + + path_get(path); + file = dentry_open(path->dentry, path->mnt, + flags /* | __FMODE_NONOTIFY */, + current_cred()); + if (!IS_ERR_OR_NULL(file) + && (file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(path->dentry->d_inode); + + return file; +} + +struct file *vfsub_filp_open(const char *path, int oflags, int mode) +{ + struct file *file; + + lockdep_off(); + file = filp_open(path, + oflags /* | __FMODE_NONOTIFY */, + mode); + lockdep_on(); + if (IS_ERR(file)) + goto out; + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + +out: + return file; +} + +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) +{ + int err; + + err = kern_path(name, flags, path); + if (!err && path->dentry->d_inode) + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + return err; +} + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len) +{ + struct path path = { + .mnt = NULL + }; + + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(parent->d_inode); + + path.dentry = lookup_one_len(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (path.dentry->d_inode) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +struct dentry *vfsub_lookup_hash(struct nameidata *nd) +{ + struct path path = { + .mnt = nd->path.mnt + }; + + IMustLock(nd->path.dentry->d_inode); + + path.dentry = lookup_hash(nd); + if (IS_ERR(path.dentry)) + goto out; + if (path.dentry->d_inode) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +/* + * this is "VFS:__lookup_one_len()" which was removed and merged into + * VFS:lookup_one_len() by the commit. + * 6a96ba5 2011-03-14 kill __lookup_one_len() + * this function should always be equivalent to the corresponding part in + * VFS:lookup_one_len(). + */ +int vfsub_name_hash(const char *name, struct qstr *this, int len) +{ + unsigned int c; + + this->name = name; + this->len = len; + this->hash = full_name_hash(name, len); + if (!len) + return -EACCES; + + while (len--) { + c = *(const unsigned char *)name++; + if (c == '/' || c == '\0') + return -EACCES; + } + return 0; +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + struct dentry *d; + + lockdep_off(); + d = lock_rename(d1, d2); + lockdep_on(); + au_hn_suspend(hdir1); + if (hdir1 != hdir2) + au_hn_suspend(hdir2); + + return d; +} + +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + au_hn_resume(hdir1); + if (hdir1 != hdir2) + au_hn_resume(hdir2); + lockdep_off(); + unlock_rename(d1, d2); + lockdep_on(); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_create(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, 0); + path->dentry = d; + if (unlikely(err)) + goto out; + + if (au_test_fs_null_nd(dir->i_sb)) + err = vfs_create(dir, path->dentry, mode, NULL); + else { + struct nameidata h_nd; + + memset(&h_nd, 0, sizeof(h_nd)); + h_nd.flags = LOOKUP_CREATE; + h_nd.intent.open.flags = O_CREAT + | vfsub_fmode_to_uint(FMODE_READ); + h_nd.intent.open.create_mode = mode; + h_nd.path.dentry = path->dentry->d_parent; + h_nd.path.mnt = path->mnt; + path_get(&h_nd.path); + err = vfs_create(dir, path->dentry, mode, &h_nd); + path_put(&h_nd.path); + } + + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_symlink(path, d, symname); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_symlink(dir, path->dentry, symname); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, new_encode_dev(dev)); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_mknod(dir, path->dentry, mode, dev); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +static int au_test_nlink(struct inode *inode) +{ + const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ + + if (!au_test_fs_no_limit_nlink(inode->i_sb) + || inode->i_nlink < link_max) + return 0; + return -EMLINK; +} + +int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + err = au_test_nlink(src_dentry->d_inode); + if (unlikely(err)) + return err; + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_link(src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_link(src_dentry, dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + /* fuse has different memory inode for the same inumber */ + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct path *path) +{ + int err; + struct path tmp = { + .mnt = path->mnt + }; + struct dentry *d; + + IMustLock(dir); + IMustLock(src_dir); + + d = path->dentry; + path->dentry = d->d_parent; + tmp.dentry = src_dentry->d_parent; + err = security_path_rename(&tmp, src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rename(src_dir, src_dentry, dir, path->dentry); + lockdep_on(); + if (!err) { + int did; + + tmp.dentry = d->d_parent; + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mkdir(path, d, mode); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_mkdir(dir, path->dentry, mode); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rmdir(struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_rmdir(path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rmdir(dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { + .dentry = path->dentry->d_parent, + .mnt = path->mnt + }; + + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: support mmap_sem? */ +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_read(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +/* todo: kernel_read()? */ +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_read_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_write(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_write_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +int vfsub_flush(struct file *file, fl_owner_t id) +{ + int err; + + err = 0; + if (file->f_op && file->f_op->flush) { + if (!au_test_nfs(file->f_dentry->d_sb)) + err = file->f_op->flush(file, id); + else { + lockdep_off(); + err = file->f_op->flush(file, id); + lockdep_on(); + } + if (!err) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); + /*ignore*/ + } + return err; +} + +int vfsub_readdir(struct file *file, filldir_t filldir, void *arg) +{ + int err; + + lockdep_off(); + err = vfs_readdir(file, filldir, arg); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_to(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) + vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_from(pipe, out, ppos, len, flags); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_fsync(struct file *file, struct path *path, int datasync) +{ + int err; + + /* file can be NULL */ + lockdep_off(); + err = vfs_fsync(file, datasync); + lockdep_on(); + if (!err) { + if (!path) { + AuDebugOn(!file); + path = &file->f_path; + } + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + } + return err; +} + +/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file) +{ + int err; + struct inode *h_inode; + + h_inode = h_path->dentry->d_inode; + if (!h_file) { + err = mnt_want_write(h_path->mnt); + if (err) + goto out; + err = inode_permission(h_inode, MAY_WRITE); + if (err) + goto out_mnt; + err = get_write_access(h_inode); + if (err) + goto out_mnt; + err = break_lease(h_inode, O_WRONLY); + if (err) + goto out_inode; + } + + err = locks_verify_truncate(h_inode, h_file, length); + if (!err) + err = security_path_truncate(h_path); + if (!err) { + lockdep_off(); + err = do_truncate(h_path->dentry, length, attr, h_file); + lockdep_on(); + } + +out_inode: + if (!h_file) + put_write_access(h_inode); +out_mnt: + if (!h_file) + mnt_drop_write(h_path->mnt); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_vfsub_mkdir_args { + int *errp; + struct inode *dir; + struct path *path; + int mode; +}; + +static void au_call_vfsub_mkdir(void *args) +{ + struct au_vfsub_mkdir_args *a = args; + *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); +} + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) + err = vfsub_mkdir(dir, path, mode); + else { + struct au_vfsub_mkdir_args args = { + .errp = &err, + .dir = dir, + .path = path, + .mode = mode + }; + wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +struct au_vfsub_rmdir_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void au_call_vfsub_rmdir(void *args) +{ + struct au_vfsub_rmdir_args *a = args; + *a->errp = vfsub_rmdir(a->dir, a->path); +} + +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) + err = vfsub_rmdir(dir, path); + else { + struct au_vfsub_rmdir_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct notify_change_args { + int *errp; + struct path *path; + struct iattr *ia; +}; + +static void call_notify_change(void *args) +{ + struct notify_change_args *a = args; + struct inode *h_inode; + + h_inode = a->path->dentry->d_inode; + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { + *a->errp = notify_change(a->path->dentry, a->ia); + if (!*a->errp) + vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ + } + AuTraceErr(*a->errp); +} + +int vfsub_notify_change(struct path *path, struct iattr *ia) +{ + int err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia + }; + + call_notify_change(&args); + + return err; +} + +int vfsub_sio_notify_change(struct path *path, struct iattr *ia) +{ + int err, wkq_err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia + }; + + wkq_err = au_wkq_wait(call_notify_change, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct unlink_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void call_unlink(void *args) +{ + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && d->d_count == 1); + + IMustLock(a->dir); + + a->path->dentry = d->d_parent; + *a->errp = security_path_unlink(a->path, d); + a->path->dentry = d; + if (unlikely(*a->errp)) + return; + + if (!stop_sillyrename) + dget(d); + h_inode = d->d_inode; + if (h_inode) + ihold(h_inode); + + lockdep_off(); + *a->errp = vfs_unlink(a->dir, d); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { + .dentry = d->d_parent, + .mnt = a->path->mnt + }; + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + + if (!stop_sillyrename) + dput(d); + if (h_inode) + iput(h_inode); + + AuTraceErr(*a->errp); +} + +/* + * @dir: must be locked. + * @dentry: target dentry. + */ +int vfsub_unlink(struct inode *dir, struct path *path, int force) +{ + int err; + struct unlink_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + + if (!force) + call_unlink(&args); + else { + int wkq_err; + + wkq_err = au_wkq_wait(call_unlink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/inode.c +++ linux-3.5.0/ubuntu/aufs/inode.c @@ -0,0 +1,478 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode functions + */ + +#include "aufs.h" + +struct inode *au_igrab(struct inode *inode) +{ + if (inode) { + AuDebugOn(!atomic_read(&inode->i_count)); + ihold(inode); + } + return inode; +} + +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); + au_update_iigen(inode); + if (do_version) + inode->i_version++; +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_ii_realloc(iinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_bstart < 0); + p = iinfo->ii_hinode + iinfo->ii_bstart; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++, p++) { + if (!p->hi_inode) + continue; + + AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); + new_bindex = au_br_index(sb, p->hi_id); + if (new_bindex == bindex) + continue; + + if (new_bindex < 0) { + *update = 1; + au_hiput(p); + p->hi_inode = NULL; + continue; + } + + if (new_bindex < iinfo->ii_bstart) + iinfo->ii_bstart = new_bindex; + if (iinfo->ii_bend < new_bindex) + iinfo->ii_bend = new_bindex; + /* swap two lower inode, and loop again */ + q = iinfo->ii_hinode + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +int au_refresh_hinode_self(struct inode *inode) +{ + int err, update; + + err = au_ii_refresh(inode, &update); + if (!err) + au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); + + AuTraceErr(err); + return err; +} + +int au_refresh_hinode(struct inode *inode, struct dentry *dentry) +{ + int err, e, update; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bend; + unsigned char isdir; + struct au_hinode *p; + struct au_iinfo *iinfo; + + err = au_ii_refresh(inode, &update); + if (unlikely(err)) + goto out; + + update = 0; + iinfo = au_ii(inode); + p = iinfo->ii_hinode + iinfo->ii_bstart; + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + struct inode *h_i; + struct dentry *h_d; + + h_d = au_h_dptr(dentry, bindex); + if (!h_d || !h_d->d_inode) + continue; + + AuDebugOn(mode != (h_d->d_inode->i_mode & S_IFMT)); + if (iinfo->ii_bstart <= bindex && bindex <= iinfo->ii_bend) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_d->d_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_bstart) + iinfo->ii_bstart = bindex; + if (iinfo->ii_bend < bindex) + iinfo->ii_bend = bindex; + au_set_h_iptr(inode, bindex, au_igrab(h_d->d_inode), flags); + update = 1; + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + if (!err) + au_refresh_hinode_attr(inode, update && isdir); + +out: + AuTraceErr(err); + return err; +} + +static int set_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bstart, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + bstart = au_dbstart(dentry); + h_inode = au_h_dptr(dentry, bstart)->d_inode; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + btail = au_dbtail(dentry); + inode->i_op = &aufs_iop; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, bstart, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = &aufs_dir_iop; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_symlink_iop; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_iop; + au_init_special_fop(inode, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown file type 0%o\n", mode); + err = -EIO; + goto out; + } + + /* do not set hnotify for whiteouted dirs (SHWH mode) */ + flags = au_hi_flags(inode, isdir); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) + && au_ftest_hi(flags, HNOTIFY) + && dentry->d_name.len > AUFS_WH_PFX_LEN + && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) + au_fclr_hi(flags, HNOTIFY); + iinfo = au_ii(inode); + iinfo->ii_bstart = bstart; + iinfo->ii_bend = btail; + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + au_set_h_iptr(inode, bindex, + au_igrab(h_dentry->d_inode), flags); + } + au_cpup_attr_all(inode, /*force*/1); + +out: + return err; +} + +/* + * successful returns with iinfo write_locked + * minus: errno + * zero: success, matched + * plus: no error, but unmatched + */ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, bend; + struct inode *h_inode, *h_dinode; + + /* + * before this function, if aufs got any iinfo lock, it must be only + * one, the parent dir. + * it can happen by UDBA and the obsoleted inode number. + */ + err = -EIO; + if (unlikely(inode->i_ino == parent_ino(dentry))) + goto out; + + err = 1; + ii_write_lock_new_child(inode); + h_dinode = au_h_dptr(dentry, au_dbstart(dentry))->d_inode; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode && h_inode == h_dinode) { + err = 0; + if (au_iigen_test(inode, au_digen(dentry))) + err = au_refresh_hinode(inode, dentry); + break; + } + } + + if (unlikely(err)) + ii_write_unlock(inode); +out: + return err; +} + +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino) +{ + int err; + struct mutex *mtx; + + /* prevent hardlinked inode number from race condition */ + mtx = NULL; + if (d_type != DT_DIR) { + mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; + mutex_lock(mtx); + } + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out; + } + +out: + if (mtx) + mutex_unlock(mtx); + return err; +} + +/* successful returns with iinfo write_locked */ +/* todo: return with unlocked? */ +struct inode *au_new_inode(struct dentry *dentry, int must_new) +{ + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct super_block *sb; + struct mutex *mtx; + ino_t h_ino, ino; + int err, lc_idx; + aufs_bindex_t bstart; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + h_inode = h_dentry->d_inode; + h_ino = h_inode->i_ino; + + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + mtx = NULL; + if (!S_ISDIR(h_inode->i_mode)) + mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; + +new_ino: + if (mtx) + mutex_lock(mtx); + err = au_xino_read(sb, bstart, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + lc_idx = AuLcNonDir_IIINFO; + if (S_ISLNK(h_inode->i_mode)) + lc_idx = AuLcSymlink_IIINFO; + else if (S_ISDIR(h_inode->i_mode)) + lc_idx = AuLcDir_IIINFO; + au_rw_class(&au_ii(inode)->ii_rwsem, au_lc_key + lc_idx); + + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out; /* success */ + } + + /* + * iget_failed() calls iput(), but we need to call + * ii_write_unlock() after iget_failed(). so dirty hack for + * i_count. + */ + atomic_inc(&inode->i_count); + iget_failed(inode); + ii_write_unlock(inode); + au_xino_write(sb, bstart, h_ino, /*ino*/0); + /* ignore this error */ + goto out_iput; + } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { + /* + * horrible race condition between lookup, readdir and copyup + * (or something). + */ + if (mtx) + mutex_unlock(mtx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + mtx = NULL; + goto out_iput; + } + + if (!err) { + mtx = NULL; + goto out; /* success */ + } else if (mtx) + mutex_lock(mtx); + } + + if (unlikely(au_test_fs_unique_ino(h_dentry->d_inode))) + AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," + " b%d, %s, %.*s, hi%lu, i%lu.\n", + bstart, au_sbtype(h_dentry->d_sb), AuDLNPair(dentry), + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, bstart, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (mtx) + mutex_unlock(mtx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out: + if (mtx) + mutex_unlock(mtx); + return inode; +} + +/* ---------------------------------------------------------------------- */ + +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode) +{ + int err; + + err = au_br_rdonly(au_sbr(sb, bindex)); + + /* pseudo-link after flushed may happen out of bounds */ + if (!err + && inode + && au_ibstart(inode) <= bindex + && bindex <= au_ibend(inode)) { + /* + * permission check is unnecessary since vfsub routine + * will be called later + */ + struct inode *hi = au_h_iptr(inode, bindex); + if (hi) + err = IS_IMMUTABLE(hi) ? -EROFS : 0; + } + + return err; +} + +int au_test_h_perm(struct inode *h_inode, int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; + return inode_permission(h_inode, mask); +} + +int au_test_h_perm_sio(struct inode *h_inode, int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_inode, mask); +} --- linux-3.5.0.orig/ubuntu/aufs/dbgaufs.h +++ linux-3.5.0/ubuntu/aufs/dbgaufs.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debugfs interface + */ + +#ifndef __DBGAUFS_H__ +#define __DBGAUFS_H__ + +#ifdef __KERNEL__ + +struct super_block; +struct au_sbinfo; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_si_fin(struct au_sbinfo *sbinfo); +int dbgaufs_si_init(struct au_sbinfo *sbinfo); +void dbgaufs_fin(void); +int __init dbgaufs_init(void); +#else +AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) +AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) +AuStubVoid(dbgaufs_fin, void) +AuStubInt0(__init dbgaufs_init, void) +#endif /* CONFIG_DEBUG_FS */ + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/iinfo.c +++ linux-3.5.0/ubuntu/aufs/iinfo.c @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode private data + */ + +#include "aufs.h" + +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) +{ + struct inode *h_inode; + + IiMustAnyLock(inode); + + h_inode = au_ii(inode)->ii_hinode[0 + bindex].hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + return h_inode; +} + +/* todo: hard/soft set? */ +void au_hiput(struct au_hinode *hinode) +{ + au_hn_free(hinode); + dput(hinode->hi_whdentry); + iput(hinode->hi_inode); +} + +unsigned int au_hi_flags(struct inode *inode, int isdir) +{ + unsigned int flags; + const unsigned int mnt_flags = au_mntflags(inode->i_sb); + + flags = 0; + if (au_opt_test(mnt_flags, XINO)) + au_fset_hi(flags, XINO); + if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) + au_fset_hi(flags, HNOTIFY); + return flags; +} + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags) +{ + struct au_hinode *hinode; + struct inode *hi; + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + hinode = iinfo->ii_hinode + bindex; + hi = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + + if (hi) + au_hiput(hinode); + hinode->hi_inode = h_inode; + if (h_inode) { + int err; + struct super_block *sb = inode->i_sb; + struct au_branch *br; + + AuDebugOn(inode->i_mode + && (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)); + if (bindex == iinfo->ii_bstart) + au_cpup_igen(inode, h_inode); + br = au_sbr(sb, bindex); + hinode->hi_id = br->br_id; + if (au_ftest_hi(flags, XINO)) { + err = au_xino_write(sb, bindex, h_inode->i_ino, + inode->i_ino); + if (unlikely(err)) + AuIOErr1("failed au_xino_write() %d\n", err); + } + + if (au_ftest_hi(flags, HNOTIFY) + && au_br_hnotifyable(br->br_perm)) { + err = au_hn_alloc(hinode, inode); + if (unlikely(err)) + AuIOErr1("au_hn_alloc() %d\n", err); + } + } +} + +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh) +{ + struct au_hinode *hinode; + + IiMustWriteLock(inode); + + hinode = au_ii(inode)->ii_hinode + bindex; + AuDebugOn(hinode->hi_whdentry); + hinode->hi_whdentry = h_wh; +} + +void au_update_iigen(struct inode *inode) +{ + atomic_set(&au_ii(inode)->ii_generation, au_sigen(inode->i_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +/* it may be called at remount time, too */ +void au_update_ibrange(struct inode *inode, int do_put_zero) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex, bend; + + iinfo = au_ii(inode); + if (!iinfo) + return; + + IiMustWriteLock(inode); + + if (do_put_zero && iinfo->ii_bstart >= 0) { + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++) { + struct inode *h_i; + + h_i = iinfo->ii_hinode[0 + bindex].hi_inode; + if (h_i && !h_i->i_nlink) + au_set_h_iptr(inode, bindex, NULL, 0); + } + } + + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + bend = au_sbend(inode->i_sb); + for (bindex = 0; bindex <= bend; bindex++) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bstart = bindex; + break; + } + if (iinfo->ii_bstart >= 0) + for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bend = bindex; + break; + } + AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbend(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (iinfo->ii_hinode) { + au_ninodes_inc(sb); + for (i = 0; i < nbr; i++) + iinfo->ii_hinode[i].hi_id = -1; + + atomic_set(&iinfo->ii_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_ii_realloc(struct au_iinfo *iinfo, int nbr) +{ + int err, sz; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + sz = sizeof(*hip) * (iinfo->ii_bend + 1); + if (!sz) + sz = sizeof(*hip); + hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); + if (hip) { + iinfo->ii_hinode = hip; + err = 0; + } + + return err; +} + +void au_iinfo_fin(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + struct super_block *sb; + aufs_bindex_t bindex, bend; + const unsigned char unlinked = !inode->i_nlink; + + iinfo = au_ii(inode); + /* bad_inode case */ + if (!iinfo) + return; + + sb = inode->i_sb; + au_ninodes_dec(sb); + if (si_pid_test(sb)) + au_xino_delete_inode(inode, unlinked); + else { + /* + * it is safe to hide the dependency between sbinfo and + * sb->s_umount. + */ + lockdep_off(); + si_noflush_read_lock(sb); + au_xino_delete_inode(inode, unlinked); + si_read_unlock(sb); + lockdep_on(); + } + + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_bstart; + if (bindex >= 0) { + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + while (bindex++ <= bend) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + kfree(iinfo->ii_hinode); + iinfo->ii_hinode = NULL; + AuRwDestroy(&iinfo->ii_rwsem); +} --- linux-3.5.0.orig/ubuntu/aufs/branch.c +++ linux-3.5.0/ubuntu/aufs/branch.c @@ -0,0 +1,1169 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * branch management + */ + +#include +#include +#include "aufs.h" + +/* + * free a single branch + */ +static void au_br_do_free(struct au_branch *br) +{ + int i; + struct au_wbr *wbr; + struct au_dykey **key; + + au_hnotify_fin_br(br); + + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + mutex_destroy(&br->br_xino.xi_nondir_mtx); + + AuDebugOn(atomic_read(&br->br_count)); + + wbr = br->br_wbr; + if (wbr) { + for (i = 0; i < AuBrWh_Last; i++) + dput(wbr->wbr_wh[i]); + AuDebugOn(atomic_read(&wbr->wbr_wh_running)); + AuRwDestroy(&wbr->wbr_wh_rwsem); + } + + key = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++, key++) + if (*key) + au_dy_put(*key); + else + break; + + mntput(br->br_mnt); + kfree(wbr); + kfree(br); +} + +/* + * frees all branches + */ +void au_br_free(struct au_sbinfo *sbinfo) +{ + aufs_bindex_t bmax; + struct au_branch **br; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + bmax = sbinfo->si_bend + 1; + br = sbinfo->si_branch; + while (bmax--) + au_br_do_free(*br++); +} + +/* + * find the index of a branch which is specified by @br_id. + */ +int au_br_index(struct super_block *sb, aufs_bindex_t br_id) +{ + aufs_bindex_t bindex, bend; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) + if (au_sbr_id(sb, bindex) == br_id) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * add a branch + */ + +static int test_overlap(struct super_block *sb, struct dentry *h_adding, + struct dentry *h_root) +{ + if (unlikely(h_adding == h_root + || au_test_loopback_overlap(sb, h_adding))) + return 1; + if (h_adding->d_sb != h_root->d_sb) + return 0; + return au_test_subdir(h_adding, h_root) + || au_test_subdir(h_root, h_adding); +} + +/* + * returns a newly allocated branch. @new_nbranch is a number of branches + * after adding a branch. + */ +static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, + int perm) +{ + struct au_branch *add_branch; + struct dentry *root; + int err; + + err = -ENOMEM; + root = sb->s_root; + add_branch = kmalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_br; + + add_branch->br_wbr = NULL; + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kmalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + err = au_sbr_realloc(au_sbi(sb), new_nbranch); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch); + if (!err) + err = au_ii_realloc(au_ii(root->d_inode), new_nbranch); + if (!err) + return add_branch; /* success */ + + kfree(add_branch->br_wbr); + +out_hnotify: + au_hnotify_fin_br(add_branch); +out_br: + kfree(add_branch); +out: + return ERR_PTR(err); +} + +/* + * test if the branch permission is legal or not. + */ +static int test_br(struct inode *inode, int brperm, char *path) +{ + int err; + + err = (au_br_writable(brperm) && IS_RDONLY(inode)); + if (!err) + goto out; + + err = -EINVAL; + pr_err("write permission for readonly mount or inode, %s\n", path); + +out: + return err; +} + +/* + * returns: + * 0: success, the caller will add it + * plus: success, it is already unified, the caller should ignore it + * minus: error + */ +static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root; + struct inode *inode, *h_inode; + + root = sb->s_root; + bend = au_sbend(sb); + if (unlikely(bend >= 0 + && au_find_dbindex(root, add->path.dentry) >= 0)) { + err = 1; + if (!remount) { + err = -EINVAL; + pr_err("%s duplicated\n", add->pathname); + } + goto out; + } + + err = -ENOSPC; /* -E2BIG; */ + if (unlikely(AUFS_BRANCH_MAX <= add->bindex + || AUFS_BRANCH_MAX - 1 <= bend)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bend + 1 < add->bindex)) { + pr_err("bad index %d\n", add->bindex); + goto out; + } + + inode = add->path.dentry->d_inode; + err = -ENOENT; + if (unlikely(!inode->i_nlink)) { + pr_err("no existence %s\n", add->pathname); + goto out; + } + + err = -EINVAL; + if (unlikely(inode->i_sb == sb)) { + pr_err("%s must be outside\n", add->pathname); + goto out; + } + + if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { + pr_err("unsupported filesystem, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + err = test_br(add->path.dentry->d_inode, add->perm, add->pathname); + if (unlikely(err)) + goto out; + + if (bend < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bend; bindex++) + if (unlikely(test_overlap(sb, add->path.dentry, + au_h_dptr(root, bindex)))) { + pr_err("%s is overlapped\n", add->pathname); + goto out; + } + + err = 0; + if (au_opt_test(au_mntflags(sb), WARN_PERM)) { + h_inode = au_h_dptr(root, 0)->d_inode; + if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) + || !uid_eq(h_inode->i_uid, inode->i_uid) + || !gid_eq(h_inode->i_gid, inode->i_gid)) + pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", + add->pathname, + i_uid_read(inode), i_gid_read(inode), + (inode->i_mode & S_IALLUGO), + i_uid_read(h_inode), i_gid_read(h_inode), + (h_inode->i_mode & S_IALLUGO)); + } + +out: + return err; +} + +/* + * initialize or clean the whiteouts for an adding branch + */ +static int au_br_init_wh(struct super_block *sb, struct au_branch *br, + int new_perm, struct dentry *h_root) +{ + int err, old_perm; + aufs_bindex_t bindex; + struct mutex *h_mtx; + struct au_wbr *wbr; + struct au_hinode *hdir; + + wbr = br->br_wbr; + old_perm = br->br_perm; + br->br_perm = new_perm; + hdir = NULL; + h_mtx = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(sb->s_root->d_inode, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_mtx = &h_root->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_PARENT); + } + if (!wbr) + err = au_wh_init(h_root, br, sb); + else { + wbr_wh_write_lock(wbr); + err = au_wh_init(h_root, br, sb); + wbr_wh_write_unlock(wbr); + } + if (hdir) + au_hn_imtx_unlock(hdir); + else + mutex_unlock(h_mtx); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + kfree(wbr); + br->br_wbr = NULL; + } + + return err; +} + +static int au_wbr_init(struct au_branch *br, struct super_block *sb, + int perm, struct path *path) +{ + int err; + struct kstatfs kst; + struct au_wbr *wbr; + struct dentry *h_dentry; + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); + memset(wbr->wbr_wh, 0, sizeof(wbr->wbr_wh)); + atomic_set(&wbr->wbr_wh_running, 0); + wbr->wbr_bytes = 0; + + /* + * a limit for rmdir/rename a dir + * cf. AUFS_MAX_NAMELEN in include/linux/aufs_type.h + */ + err = vfs_statfs(path, &kst); + if (unlikely(err)) + goto out; + err = -EINVAL; + h_dentry = path->dentry; + if (kst.f_namelen >= NAME_MAX) + err = au_br_init_wh(sb, br, perm, h_dentry); + else + pr_err("%.*s(%s), unsupported namelen %ld\n", + AuDLNPair(h_dentry), au_sbtype(h_dentry->d_sb), + kst.f_namelen); + +out: + return err; +} + +/* intialize a new branch */ +static int au_br_init(struct au_branch *br, struct super_block *sb, + struct au_opt_add *add) +{ + int err; + + err = 0; + memset(&br->br_xino, 0, sizeof(br->br_xino)); + mutex_init(&br->br_xino.xi_nondir_mtx); + br->br_perm = add->perm; + br->br_mnt = add->path.mnt; /* set first, mntget() later */ + spin_lock_init(&br->br_dykey_lock); + memset(br->br_dykey, 0, sizeof(br->br_dykey)); + atomic_set(&br->br_count, 0); + br->br_xino_upper = AUFS_XINO_TRUNC_INIT; + atomic_set(&br->br_xino_running, 0); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + if (au_br_writable(add->perm)) { + err = au_wbr_init(br, sb, add->perm, &add->path); + if (unlikely(err)) + goto out_err; + } + + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_br(sb, br, add->path.dentry->d_inode->i_ino, + au_sbr(sb, 0)->br_xino.xi_file, /*do_test*/1); + if (unlikely(err)) { + AuDebugOn(br->br_xino.xi_file); + goto out_err; + } + } + + sysaufs_br_init(br); + mntget(add->path.mnt); + goto out; /* success */ + +out_err: + br->br_mnt = NULL; +out: + return err; +} + +static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, + struct au_branch *br, aufs_bindex_t bend, + aufs_bindex_t amount) +{ + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + memmove(brp + 1, brp, sizeof(*brp) * amount); + *brp = br; + sbinfo->si_bend++; + if (unlikely(bend < 0)) + sbinfo->si_bend = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry + bindex; + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bend++; + if (unlikely(bend < 0)) + dinfo->di_bstart = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + memmove(hip + 1, hip, sizeof(*hip) * amount); + hip->hi_inode = NULL; + au_hn_init(hip); + iinfo->ii_bend++; + if (unlikely(bend < 0)) + iinfo->ii_bstart = 0; +} + +static void au_br_do_add(struct super_block *sb, struct dentry *h_dentry, + struct au_branch *br, aufs_bindex_t bindex) +{ + struct dentry *root; + struct inode *root_inode; + aufs_bindex_t bend, amount; + + root = sb->s_root; + root_inode = root->d_inode; + bend = au_sbend(sb); + amount = bend + 1 - bindex; + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bend, amount); + au_br_do_add_hdp(au_di(root), bindex, bend, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bend, amount); + au_set_h_dptr(root, bindex, dget(h_dentry)); + au_set_h_iptr(root_inode, bindex, au_igrab(h_dentry->d_inode), + /*flags*/0); + au_sbilist_unlock(); +} + +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, add_bindex; + struct dentry *root, *h_dentry; + struct inode *root_inode; + struct au_branch *add_branch; + + root = sb->s_root; + root_inode = root->d_inode; + IMustLock(root_inode); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bend = au_sbend(sb); + add_branch = au_br_alloc(sb, bend + 2, add->perm); + err = PTR_ERR(add_branch); + if (IS_ERR(add_branch)) + goto out; + + err = au_br_init(add_branch, sb, add); + if (unlikely(err)) { + au_br_do_free(add_branch); + goto out; + } + + add_bindex = add->bindex; + h_dentry = add->path.dentry; + if (!remount) + au_br_do_add(sb, h_dentry, add_branch, add_bindex); + else { + sysaufs_brs_del(sb, add_bindex); + au_br_do_add(sb, h_dentry, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); + } + + if (!add_bindex) { + au_cpup_attr_all(root_inode, /*force*/1); + sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; + } else + au_add_nlink(root_inode, h_dentry->d_inode); + + /* + * this test/set prevents aufs from handling unnecesary notify events + * of xino files, in case of re-adding a writable branch which was + * once detached from aufs. + */ + if (au_xino_brid(sb) < 0 + && au_br_writable(add_branch->br_perm) + && !au_test_fs_bad_xino(h_dentry->d_sb) + && add_branch->br_xino.xi_file + && add_branch->br_xino.xi_file->f_dentry->d_parent == h_dentry) + au_xino_brid_set(sb, add_branch->br_id); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * delete a branch + */ + +/* to show the line number, do not make it inlined function */ +#define AuVerbose(do_info, fmt, ...) do { \ + if (do_info) \ + pr_info(fmt, ##__VA_ARGS__); \ +} while (0) + +static int au_test_ibusy(struct inode *inode, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return (inode && !S_ISDIR(inode->i_mode)) || bstart == bend; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return au_test_ibusy(dentry->d_inode, bstart, bend); +} + +/* + * test if the branch is deletable or not. + */ +static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err, i, j, ndentry; + aufs_bindex_t bstart, bend; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; !err && i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; !err && j < ndentry; j++) { + d = dpage->dentries[j]; + AuDebugOn(!d->d_count); + if (!au_digen_test(d, sigen)) { + di_read_lock_child(d, AuLock_IR); + if (unlikely(au_dbrange_test(d))) { + di_read_unlock(d, AuLock_IR); + continue; + } + } else { + di_write_lock_child(d); + if (unlikely(au_dbrange_test(d))) { + di_write_unlock(d); + continue; + } + err = au_reval_dpath(d, sigen); + if (!err) + di_downgrade_lock(d, AuLock_IR); + else { + di_write_unlock(d); + break; + } + } + + /* AuDbgDentry(d); */ + bstart = au_dbstart(d); + bend = au_dbend(d); + if (bstart <= bindex + && bindex <= bend + && au_h_dptr(d, bindex) + && au_test_dbusy(d, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy %.*s\n", AuDLNPair(d)); + AuDbgDentry(d); + } + di_read_unlock(d, AuLock_IR); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err; + unsigned long long max, ull; + struct inode *i, **array; + aufs_bindex_t bstart, bend; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + AuDbg("b%d\n", bindex); + for (ull = 0; !err && ull < max; ull++) { + i = array[ull]; + if (i->i_ino == AUFS_ROOT_INO) + continue; + + /* AuDbgInode(i); */ + if (au_iigen(i) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); + err = au_refresh_hinode_self(i); + au_iigen_dec(i); + if (!err) + ii_downgrade_lock(i); + else { + ii_write_unlock(i); + break; + } + } + + bstart = au_ibstart(i); + bend = au_ibend(i); + if (bstart <= bindex + && bindex <= bend + && au_h_iptr(i, bindex) + && au_test_ibusy(i, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy i%lu\n", i->i_ino); + AuDbgInode(i); + } + ii_read_unlock(i); + } + au_iarray_free(array, max); + +out: + return err; +} + +static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, + const unsigned int verbose) +{ + int err; + unsigned int sigen; + + sigen = au_sigen(root->d_sb); + DiMustNoWaiters(root); + IiMustNoWaiters(root->d_inode); + di_write_unlock(root); + err = test_dentry_busy(root, bindex, sigen, verbose); + if (!err) + err = test_inode_busy(root->d_sb, bindex, sigen, verbose); + di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ + + return err; +} + +static void au_br_do_del_brp(struct au_sbinfo *sbinfo, + const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bend) + memmove(brp, brp + 1, sizeof(*brp) * (bend - bindex)); + sbinfo->si_branch[0 + bend] = NULL; + sbinfo->si_bend--; + + p = krealloc(sbinfo->si_branch, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + sbinfo->si_branch = p; + /* harmless error */ +} + +static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry; + if (bindex < bend) + memmove(hdp + bindex, hdp + bindex + 1, + sizeof(*hdp) * (bend - bindex)); + hdp[0 + bend].hd_dentry = NULL; + dinfo->di_bend--; + + p = krealloc(hdp, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + dinfo->di_hdentry = p; + /* harmless error */ +} + +static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + if (bindex < bend) + memmove(hip, hip + 1, sizeof(*hip) * (bend - bindex)); + iinfo->ii_hinode[0 + bend].hi_inode = NULL; + au_hn_init(iinfo->ii_hinode + bend); + iinfo->ii_bend--; + + p = krealloc(iinfo->ii_hinode, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + iinfo->ii_hinode = p; + /* harmless error */ +} + +static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br) +{ + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct dentry *root, *h_root; + struct inode *inode, *h_inode; + struct au_hinode *hinode; + + SiMustWriteLock(sb); + + root = sb->s_root; + inode = root->d_inode; + sbinfo = au_sbi(sb); + bend = sbinfo->si_bend; + + h_root = au_h_dptr(root, bindex); + hinode = au_hi(inode, bindex); + h_inode = au_igrab(hinode->hi_inode); + au_hiput(hinode); + + au_sbilist_lock(); + au_br_do_del_brp(sbinfo, bindex, bend); + au_br_do_del_hdp(au_di(root), bindex, bend); + au_br_do_del_hip(au_ii(inode), bindex, bend); + au_sbilist_unlock(); + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) +{ + int err, rerr, i; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, br_id; + unsigned char do_wh, verbose; + struct au_branch *br; + struct au_wbr *wbr; + + err = 0; + bindex = au_find_dbindex(sb->s_root, del->h_path.dentry); + if (bindex < 0) { + if (remount) + goto out; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", del->pathname); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = -EBUSY; + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + bend = au_sbend(sb); + if (unlikely(!bend)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + br = au_sbr(sb, bindex); + i = atomic_read(&br->br_count); + if (unlikely(i)) { + AuVerbose(verbose, "%d file(s) opened\n", i); + goto out; + } + + wbr = br->br_wbr; + do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); + if (do_wh) { + /* instead of WbrWhMustWriteLock(wbr) */ + SiMustWriteLock(sb); + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + } + + err = test_children_busy(sb->s_root, bindex, verbose); + if (unlikely(err)) { + if (do_wh) + goto out_wh; + goto out; + } + + err = 0; + br_id = br->br_id; + if (!remount) + au_br_do_del(sb, bindex, br); + else { + sysaufs_brs_del(sb, bindex); + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); + } + + if (!bindex) { + au_cpup_attr_all(sb->s_root->d_inode, /*force*/1); + sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; + } else + au_sub_nlink(sb->s_root->d_inode, del->h_path.dentry->d_inode); + if (au_opt_test(mnt_flags, PLINK)) + au_plink_half_refresh(sb, br_id); + + if (au_xino_brid(sb) == br_id) + au_xino_brid_set(sb, -1); + goto out; /* success */ + +out_wh: + /* revert */ + rerr = au_br_init_wh(sb, br, br->br_perm, del->h_path.dentry); + if (rerr) + pr_warn("failed re-creating base whiteout, %s. (%d)\n", + del->pathname, rerr); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) +{ + int err; + aufs_bindex_t bstart, bend; + struct aufs_ibusy ibusy; + struct inode *inode, *h_inode; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = copy_from_user(&ibusy, arg, sizeof(ibusy)); + if (!err) + err = !access_ok(VERIFY_WRITE, &arg->h_ino, sizeof(arg->h_ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + + err = -EINVAL; + si_read_lock(sb, AuLock_FLUSH); + if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbend(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart <= ibusy.bindex && ibusy.bindex <= bend) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, bstart, bend)) + ibusy.h_ino = h_inode->i_ino; + } + ii_read_unlock(inode); + iput(inode); + +out_unlock: + si_read_unlock(sb); + if (!err) { + err = __put_user(ibusy.h_ino, &arg->h_ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + } + } +out: + return err; +} + +long au_ibusy_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* + * change a branch permission + */ + +static void au_warn_ima(void) +{ +#ifdef CONFIG_IMA + /* since it doesn't support mark_files_ro() */ + AuWarn1("RW -> RO makes IMA to produce wrong message\n"); +#endif +} + +static int do_need_sigen_inc(int a, int b) +{ + return au_br_whable(a) && !au_br_whable(b); +} + +static int need_sigen_inc(int old, int new) +{ + return do_need_sigen_inc(old, new) + || do_need_sigen_inc(new, old); +} + +static unsigned long long au_farray_cb(void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct super_block *sb = arg; + + n = 0; + p = a; + lg_global_lock(&files_lglock); + do_file_list_for_each_entry(sb, f) { + if (au_fi(f) + && file_count(f) + && !special_file(f->f_dentry->d_inode->i_mode)) { + get_file(f); + *p++ = f; + n++; + AuDebugOn(n > max); + } + } while_file_list_for_each_entry; + lg_global_unlock(&files_lglock); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_nfiles); + return au_array_alloc(max, au_farray_cb, sb); +} + +static void au_farray_free(struct file **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); + au_array_free(a); +} + +static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, do_warn; + unsigned int mnt_flags; + unsigned long long ull, max; + aufs_bindex_t br_id; + unsigned char verbose; + struct file *file, *hf, **array; + struct inode *inode; + struct au_hfile *hfile; + + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + do_warn = 0; + br_id = au_sbr_id(sb, bindex); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + + /* AuDbg("%.*s\n", AuDLNPair(file->f_dentry)); */ + fi_read_lock(file); + if (unlikely(au_test_mmapped(file))) { + err = -EBUSY; + AuVerbose(verbose, "mmapped %.*s\n", + AuDLNPair(file->f_dentry)); + AuDbgFile(file); + FiMustNoWaiters(file); + fi_read_unlock(file); + goto out_array; + } + + inode = file->f_dentry->d_inode; + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + if (!S_ISREG(inode->i_mode) + || !(file->f_mode & FMODE_WRITE) + || hfile->hf_br->br_id != br_id + || !(hf->f_mode & FMODE_WRITE)) + array[ull] = NULL; + else { + do_warn = 1; + get_file(file); + } + + FiMustNoWaiters(file); + fi_read_unlock(file); + fput(file); + } + + err = 0; + if (do_warn) + au_warn_ima(); + + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (!file) + continue; + + /* todo: already flushed? */ + /* cf. fs/super.c:mark_files_ro() */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + /* fi_read_unlock(file); */ + spin_lock(&hf->f_lock); + hf->f_mode &= ~FMODE_WRITE; + spin_unlock(&hf->f_lock); + if (!file_check_writeable(hf)) { + file_release_write(hf); + mnt_drop_write(hf->f_vfsmnt); + } + } + +out_array: + au_farray_free(array, max); +out: + AuTraceErr(err); + return err; +} + +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh) +{ + int err, rerr; + aufs_bindex_t bindex; + struct path path; + struct dentry *root; + struct au_branch *br; + + root = sb->s_root; + bindex = au_find_dbindex(root, mod->h_root); + if (bindex < 0) { + if (remount) + return 0; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", mod->path); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = test_br(mod->h_root->d_inode, mod->perm, mod->path); + if (unlikely(err)) + goto out; + + br = au_sbr(sb, bindex); + if (br->br_perm == mod->perm) + return 0; /* success */ + + if (au_br_writable(br->br_perm)) { + /* remove whiteout base */ + err = au_br_init_wh(sb, br, mod->perm, mod->h_root); + if (unlikely(err)) + goto out; + + if (!au_br_writable(mod->perm)) { + /* rw --> ro, file might be mmapped */ + DiMustNoWaiters(root); + IiMustNoWaiters(root->d_inode); + di_write_unlock(root); + err = au_br_mod_files_ro(sb, bindex); + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + if (unlikely(err)) { + rerr = -ENOMEM; + br->br_wbr = kmalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) { + path.mnt = br->br_mnt; + path.dentry = mod->h_root; + rerr = au_wbr_init(br, sb, br->br_perm, + &path); + } + if (unlikely(rerr)) { + AuIOErr("nested error %d (%d)\n", + rerr, err); + br->br_perm = mod->perm; + } + } + } + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; + br->br_wbr = kmalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + path.mnt = br->br_mnt; + path.dentry = mod->h_root; + err = au_wbr_init(br, sb, mod->perm, &path); + if (unlikely(err)) { + kfree(br->br_wbr); + br->br_wbr = NULL; + } + } + } + + if (!err) { + *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); + br->br_perm = mod->perm; + } + +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/super.h +++ linux-3.5.0/ubuntu/aufs/super.h @@ -0,0 +1,546 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * super_block operations + */ + +#ifndef __AUFS_SUPER_H__ +#define __AUFS_SUPER_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" +#include "spl.h" +#include "wkq.h" + +typedef ssize_t (*au_readf_t)(struct file *, char __user *, size_t, loff_t *); +typedef ssize_t (*au_writef_t)(struct file *, const char __user *, size_t, + loff_t *); + +/* policies to select one among multiple writable branches */ +struct au_wbr_copyup_operations { + int (*copyup)(struct dentry *dentry); +}; + +struct au_wbr_create_operations { + int (*create)(struct dentry *dentry, int isdir); + int (*init)(struct super_block *sb); + int (*fin)(struct super_block *sb); +}; + +struct au_wbr_mfs { + struct mutex mfs_lock; /* protect this structure */ + unsigned long mfs_jiffy; + unsigned long mfs_expire; + aufs_bindex_t mfs_bindex; + + unsigned long long mfsrr_bytes; + unsigned long long mfsrr_watermark; +}; + +struct au_branch; +struct au_sbinfo { + /* nowait tasks in the system-wide workqueue */ + struct au_nowait_tasks si_nowait; + + /* + * tried sb->s_umount, but failed due to the dependecy between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* prevent recursive locking in deleting inode */ + struct { + unsigned long *bitmap; + spinlock_t tree_lock; + struct radix_tree_root tree; + } au_si_pid; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files from remount. + */ + atomic_long_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see above flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bend; + + /* dirty trick to keep br_id plus */ + unsigned int si_last_br_id : + sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; + struct au_branch **si_branch; + + /* policy to select a writable branch */ + unsigned char si_wbr_copyup; + unsigned char si_wbr_create; + struct au_wbr_copyup_operations *si_wbr_copyup_ops; + struct au_wbr_create_operations *si_wbr_create_ops; + + /* round robin */ + atomic_t si_wbr_rr_next; + + /* most free space */ + struct au_wbr_mfs si_wbr_mfs; + + /* mount flags */ + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + + /* external inode number (bitmap and translation table) */ + au_readf_t si_xread; + au_writef_t si_xwrite; + struct file *si_xib; + struct mutex si_xib_mtx; /* protect xib members */ + unsigned long *si_xib_buf; + unsigned long si_xib_last_pindex; + int si_xib_next_bit; + aufs_bindex_t si_xino_brid; + /* reserved for future use */ + /* unsigned long long si_xib_limit; */ /* Max xib file size */ + +#ifdef CONFIG_AUFS_EXPORT + /* i_generation */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* vdir parameters */ + unsigned long si_rdcache; /* max cache time in jiffies */ + unsigned int si_rdblk; /* deblk size */ + unsigned int si_rdhash; /* hash size */ + + /* + * If the number of whiteouts are larger than si_dirwh, leave all of + * them after au_whtmp_ren to reduce the cost of rmdir(2). + * future fsck.aufs or kernel thread will remove them later. + * Otherwise, remove all whiteouts and the dir in rmdir(2). + */ + unsigned int si_dirwh; + + /* + * rename(2) a directory with all children. + */ + /* reserved for future use */ + /* int si_rendir; */ + + /* pseudo_link list */ + struct au_splhead si_plink; + wait_queue_head_t si_plink_wq; + spinlock_t si_plink_maint_lock; + pid_t si_plink_maint_pid; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particulary when many aufs-es are mounted. + * but using sysfs is majority. + */ + struct kobject si_kobj; +#ifdef CONFIG_DEBUG_FS + struct dentry *si_dbgaufs, *si_dbgaufs_xib; +#ifdef CONFIG_AUFS_EXPORT + struct dentry *si_dbgaufs_xigen; +#endif +#endif + +#ifdef CONFIG_AUFS_SBILIST + struct list_head si_list; +#endif + + /* dirty, necessary for unmounting, sysfs and sysrq */ + struct super_block *si_sb; +}; + +/* sbinfo status flags */ +/* + * set true when refresh_dirs() failed at remount time. + * then try refreshing dirs at access time again. + * if it is false, refreshing dirs at access time is unnecesary + */ +#define AuSi_FAILED_REFRESH_DIR 1 +static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, + unsigned int flag) +{ + AuRwMustAnyLock(&sbi->si_rwsem); + return sbi->au_si_status & flag; +} +#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) +#define au_fset_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status |= AuSi_##name; \ +} while (0) +#define au_fclr_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status &= ~AuSi_##name; \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +/* policy to select one among writable branches */ +#define AuWbrCopyup(sbinfo, ...) \ + ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) +#define AuWbrCreate(sbinfo, ...) \ + ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) + +/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ +#define AuLock_DW 1 /* write-lock dentry */ +#define AuLock_IR (1 << 1) /* read-lock inode */ +#define AuLock_IW (1 << 2) /* write-lock inode */ +#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ +#define AuLock_DIR (1 << 4) /* target is a dir */ +#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ +#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ +#define AuLock_GEN (1 << 7) /* test digen/iigen */ +#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) +#define au_fset_lock(flags, name) \ + do { (flags) |= AuLock_##name; } while (0) +#define au_fclr_lock(flags, name) \ + do { (flags) &= ~AuLock_##name; } while (0) + +/* ---------------------------------------------------------------------- */ + +/* super.c */ +extern struct file_system_type aufs_fs_type; +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(void *array, unsigned long long max, + void *arg); +void au_array_free(void *array); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); + +/* sbinfo.c */ +void au_si_free(struct kobject *kobj); +int au_si_alloc(struct super_block *sb); +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr); + +unsigned int au_sigen_inc(struct super_block *sb); +aufs_bindex_t au_new_br_id(struct super_block *sb); + +int si_read_lock(struct super_block *sb, int flags); +int si_write_lock(struct super_block *sb, int flags); +int aufs_read_lock(struct dentry *dentry, int flags); +void aufs_read_unlock(struct dentry *dentry, int flags); +void aufs_write_lock(struct dentry *dentry); +void aufs_write_unlock(struct dentry *dentry); +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); + +int si_pid_test_slow(struct super_block *sb); +void si_pid_set_slow(struct super_block *sb); +void si_pid_clr_slow(struct super_block *sb); + +/* wbr_policy.c */ +extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; +extern struct au_wbr_create_operations au_wbr_create_ops[]; +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_sbinfo *au_sbi(struct super_block *sb) +{ + return sb->s_fs_info; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +void au_export_init(struct super_block *sb); + +static inline int au_test_nfsd(void) +{ + struct task_struct *tsk = current; + + return (tsk->flags & PF_KTHREAD) + && !strcmp(tsk->comm, "nfsd"); +} + +void au_xigen_inc(struct inode *inode); +int au_xigen_new(struct inode *inode); +int au_xigen_set(struct super_block *sb, struct file *base); +void au_xigen_clr(struct super_block *sb); + +static inline int au_busy_or_stale(void) +{ + if (!au_test_nfsd()) + return -EBUSY; + return -ESTALE; +} +#else +AuStubVoid(au_export_init, struct super_block *sb) +AuStubInt0(au_test_nfsd, void) +AuStubVoid(au_xigen_inc, struct inode *inode) +AuStubInt0(au_xigen_new, struct inode *inode) +AuStubInt0(au_xigen_set, struct super_block *sb, struct file *base) +AuStubVoid(au_xigen_clr, struct super_block *sb) +static inline int au_busy_or_stale(void) +{ + return -EBUSY; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_SBILIST +/* module.c */ +extern struct au_splhead au_sbilist; + +static inline void au_sbilist_init(void) +{ + au_spl_init(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_spl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_spl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + spin_lock(&au_sbilist.spin); +} + +static inline void au_sbilist_unlock(void) +{ + spin_unlock(&au_sbilist.spin); +} +#define AuGFP_SBILIST GFP_ATOMIC +#else +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ +#else +AuStubVoid(au_sbilist_init, void) +AuStubVoid(au_sbilist_add, struct super_block*) +AuStubVoid(au_sbilist_del, struct super_block*) +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif + +/* ---------------------------------------------------------------------- */ + +static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ +#ifdef CONFIG_DEBUG_FS + sbinfo->si_dbgaufs = NULL; + sbinfo->si_dbgaufs_xib = NULL; +#ifdef CONFIG_AUFS_EXPORT + sbinfo->si_dbgaufs_xigen = NULL; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +static inline pid_t si_pid_bit(void) +{ + /* the origin of pid is 1, but the bitmap's is 0 */ + return current->pid - 1; +} + +static inline int si_pid_test(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) + return test_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + else + return si_pid_test_slow(sb); +} + +static inline void si_pid_set(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + set_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_set_slow(sb); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(!test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + clear_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_clr_slow(sb); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +/* + * __si_read_lock, __si_write_lock, + * __si_read_unlock, __si_write_unlock, __si_downgrade_lock + */ +AuSimpleRwsemFuncs(__si, struct super_block *sb, &au_sbi(sb)->si_rwsem); + +#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) +#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) +#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) + +static inline void si_noflush_read_lock(struct super_block *sb) +{ + __si_read_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_read_trylock(struct super_block *sb) +{ + int locked = __si_read_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +static inline void si_noflush_write_lock(struct super_block *sb) +{ + __si_write_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_write_trylock(struct super_block *sb) +{ + int locked = __si_write_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +#if 0 /* unused */ +static inline int si_read_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_read_trylock(sb); +} +#endif + +static inline void si_read_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_read_unlock(sb); +} + +#if 0 /* unused */ +static inline int si_write_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_write_trylock(sb); +} +#endif + +static inline void si_write_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_write_unlock(sb); +} + +#if 0 /* unused */ +static inline void si_downgrade_lock(struct super_block *sb) +{ + __si_downgrade_lock(sb); +} +#endif + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_sbend(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bend; +} + +static inline unsigned int au_mntflags(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_mntflags; +} + +static inline unsigned int au_sigen(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_generation; +} + +static inline void au_ninodes_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_ninodes); +} + +static inline void au_ninodes_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_ninodes)); + atomic_long_dec(&au_sbi(sb)->si_ninodes); +} + +static inline void au_nfiles_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_nfiles); +} + +static inline void au_nfiles_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_nfiles)); + atomic_long_dec(&au_sbi(sb)->si_nfiles); +} + +static inline struct au_branch *au_sbr(struct super_block *sb, + aufs_bindex_t bindex) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_branch[0 + bindex]; +} + +static inline void au_xino_brid_set(struct super_block *sb, aufs_bindex_t brid) +{ + SiMustWriteLock(sb); + au_sbi(sb)->si_xino_brid = brid; +} + +static inline aufs_bindex_t au_xino_brid(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_xino_brid; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/sysrq.c +++ linux-3.5.0/ubuntu/aufs/sysrq.c @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * magic sysrq hanlder + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + + plevel = au_plevel; + au_plevel = KERN_WARNING; + + sbinfo = au_sbi(sb); + /* since we define pr_fmt, call printk directly */ + printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); + printk(KERN_WARNING AUFS_NAME ": superblock\n"); + au_dpri_sb(sb); + +#if 0 + printk(KERN_WARNING AUFS_NAME ": root dentry\n"); + au_dpri_dentry(sb->s_root); + printk(KERN_WARNING AUFS_NAME ": root inode\n"); + au_dpri_inode(sb->s_root->d_inode); +#endif + +#if 0 + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + + err = au_dpages_init(&dpages, GFP_ATOMIC); + if (unlikely(err)) + break; + err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); + if (!err) + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) + au_dpri_dentry(dpage->dentries[j]); + } + au_dpages_free(&dpages); + } while (0); +#endif + +#if 1 + { + struct inode *i; + printk(KERN_WARNING AUFS_NAME ": isolated inode\n"); + spin_lock(&inode_sb_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (1 || list_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&inode_sb_list_lock); + } +#endif + printk(KERN_WARNING AUFS_NAME ": files\n"); + lg_global_lock(&files_lglock); + do_file_list_for_each_entry(sb, file) { + umode_t mode; + mode = file->f_dentry->d_inode->i_mode; + if (!special_file(mode) || au_special_file(mode)) + au_dpri_file(file); + } while_file_list_for_each_entry; + lg_global_unlock(&files_lglock); + printk(KERN_WARNING AUFS_NAME ": done\n"); + + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, S_IRUGO); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + + lockdep_off(); + au_sbilist_lock(); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + sysrq_sb(sbinfo->si_sb); + au_sbilist_unlock(); + lockdep_on(); +} + +static struct sysrq_key_op au_sysrq_op = { + .handler = au_sysrq, + .help_msg = "Aufs", + .action_msg = "Aufs", + .enable_mask = SYSRQ_ENABLE_DUMP +}; + +/* ---------------------------------------------------------------------- */ + +int __init au_sysrq_init(void) +{ + int err; + char key; + + err = -1; + key = *aufs_sysrq_key; + if ('a' <= key && key <= 'z') + err = register_sysrq_key(key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d, sysrq=%c\n", err, key); + return err; +} + +void au_sysrq_fin(void) +{ + int err; + err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} --- linux-3.5.0.orig/ubuntu/aufs/file.h +++ linux-3.5.0/ubuntu/aufs/file.h @@ -0,0 +1,298 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file operations + */ + +#ifndef __AUFS_FILE_H__ +#define __AUFS_FILE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "rwsem.h" + +struct au_branch; +struct au_hfile { + struct file *hf_file; + struct au_branch *hf_br; +}; + +struct au_vdir; +struct au_fidir { + aufs_bindex_t fd_bbot; + aufs_bindex_t fd_nent; + struct au_vdir *fd_vdir_cache; + struct au_hfile fd_hfile[]; +}; + +static inline int au_fidir_sz(int nent) +{ + AuDebugOn(nent < 0); + return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; +} + +struct au_finfo { + atomic_t fi_generation; + + struct au_rwsem fi_rwsem; + aufs_bindex_t fi_btop; + + /* do not union them */ + struct { /* for non-dir */ + struct au_hfile fi_htop; + atomic_t fi_mmapped; + }; + struct au_fidir *fi_hdir; /* for dir only */ +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* file.c */ +extern const struct address_space_operations aufs_aop; +unsigned int au_file_roflags(unsigned int flags); +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file); +int au_do_open(struct file *file, int (*open)(struct file *file, int flags), + struct au_fidir *fidir); +int au_reopen_nondir(struct file *file); +struct au_pin; +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock); +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)); + +/* poll.c */ +#ifdef CONFIG_AUFS_POLL +unsigned int aufs_poll(struct file *file, poll_table *wait); +#endif + +#ifdef CONFIG_AUFS_BR_HFSPLUS +/* hfsplus.c */ +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex); +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#else +static inline +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex) +{ + return NULL; +} + +AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#endif + +/* f_op.c */ +extern const struct file_operations aufs_file_fop; +int au_do_open_nondir(struct file *file, int flags); +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); + +#ifdef CONFIG_AUFS_SP_IATTR +/* f_op_sp.c */ +int au_special_file(umode_t mode); +void au_init_special_fop(struct inode *inode, umode_t mode, dev_t rdev); +#else +AuStubInt0(au_special_file, umode_t mode) +static inline void au_init_special_fop(struct inode *inode, umode_t mode, + dev_t rdev) +{ + init_special_inode(inode, mode, rdev); +} +#endif + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, struct file *file); +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, + struct file *h_file); + +void au_update_figen(struct file *file); +struct au_fidir *au_fidir_alloc(struct super_block *sb); +int au_fidir_realloc(struct au_finfo *finfo, int nbr); + +void au_fi_init_once(void *_fi); +void au_finfo_fin(struct file *file); +int au_finfo_init(struct file *file, struct au_fidir *fidir); + +/* ioctl.c */ +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg); +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_finfo *au_fi(struct file *file) +{ + return file->private_data; +} + +/* ---------------------------------------------------------------------- */ + +/* + * fi_read_lock, fi_write_lock, + * fi_read_unlock, fi_write_unlock, fi_downgrade_lock + */ +AuSimpleRwsemFuncs(fi, struct file *f, &au_fi(f)->fi_rwsem); + +#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) +#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) +#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: hard/soft set? */ +static inline aufs_bindex_t au_fbstart(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbend_dir(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_bbot; +} + +static inline struct au_vdir *au_fvdir_cache(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_vdir_cache; +} + +static inline void au_set_fbstart(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbend_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_bbot = bindex; +} + +static inline void au_set_fvdir_cache(struct file *file, + struct au_vdir *vdir_cache) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; +} + +static inline struct file *au_hf_top(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(au_fi(file)->fi_hdir); + return au_fi(file)->fi_htop.hf_file; +} + +static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; +} + +/* todo: memory barrier? */ +static inline unsigned int au_figen(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_generation); +} + +static inline void au_set_mmapped(struct file *f) +{ + if (atomic_inc_return(&au_fi(f)->fi_mmapped)) + return; + pr_warn("fi_mmapped wrapped around\n"); + while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) + ; +} + +static inline void au_unset_mmapped(struct file *f) +{ + atomic_dec(&au_fi(f)->fi_mmapped); +} + +static inline int au_test_mmapped(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_mmapped); +} + +/* customize vma->vm_file */ + +static inline void au_do_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + f = vma->vm_file; + get_file(file); + vma->vm_file = file; + fput(f); +} + +#ifdef CONFIG_MMU +#define AuDbgVmRegion(file, vma) do {} while (0) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + au_do_vm_file_reset(vma, file); +} +#else +#define AuDbgVmRegion(file, vma) \ + AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + au_do_vm_file_reset(vma, file); + f = vma->vm_region->vm_file; + get_file(file); + vma->vm_region->vm_file = file; + fput(f); +} +#endif /* CONFIG_MMU */ + +/* handle vma->vm_prfile */ +static inline void au_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ +#ifdef CONFIG_AUFS_PROC_MAP + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +#endif +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/vfsub.h +++ linux-3.5.0/ubuntu/aufs/vfsub.h @@ -0,0 +1,252 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for VFS + */ + +#ifndef __AUFS_VFSUB_H__ +#define __AUFS_VFSUB_H__ + +#ifdef __KERNEL__ + +#include +#include +#include "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern struct lglock vfsmount_lock; +extern void file_sb_list_del(struct file *f); +extern spinlock_t inode_sb_list_lock; + +/* copied from linux/fs/file_table.c */ +extern struct lglock files_lglock; +#ifdef CONFIG_SMP +/* + * These macros iterate all files on all CPUs for a given superblock. + * files_lglock must be held globally. + */ +#define do_file_list_for_each_entry(__sb, __file) \ +{ \ + int i; \ + for_each_possible_cpu(i) { \ + struct list_head *list; \ + list = per_cpu_ptr((__sb)->s_files, i); \ + list_for_each_entry((__file), list, f_u.fu_list) + +#define while_file_list_for_each_entry \ + } \ +} + +#else + +#define do_file_list_for_each_entry(__sb, __file) \ +{ \ + struct list_head *list; \ + list = &(sb)->s_files; \ + list_for_each_entry((__file), list, f_u.fu_list) + +#define while_file_list_for_each_entry \ +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for lower inode */ +/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ +/* reduce? gave up. */ +enum { + AuLsc_I_Begin = I_MUTEX_QUOTA, /* 4 */ + AuLsc_I_PARENT, /* lower inode, parent first */ + AuLsc_I_PARENT2, /* copyup dirs */ + AuLsc_I_PARENT3, /* copyup wh */ + AuLsc_I_CHILD, + AuLsc_I_CHILD2, + AuLsc_I_End +}; + +/* to debug easier, do not make them inlined functions */ +#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) +#define IMustLock(i) MtxMustLock(&(i)->i_mutex) + +/* ---------------------------------------------------------------------- */ + +static inline void vfsub_drop_nlink(struct inode *inode) +{ + AuDebugOn(!inode->i_nlink); + drop_nlink(inode); +} + +static inline void vfsub_dead_dir(struct inode *inode) +{ + AuDebugOn(!S_ISDIR(inode->i_mode)); + inode->i_flags |= S_DEAD; + clear_nlink(inode); +} + +/* ---------------------------------------------------------------------- */ + +/* cf. i_[ug]id_read() in linux/include/fs.h */ +static inline uid_t vfsub_ia_uid(struct iattr *ia) +{ + return from_kuid(&init_user_ns, ia->ia_uid); +} + +static inline gid_t vfsub_ia_gid(struct iattr *ia) +{ + return from_kgid(&init_user_ns, ia->ia_gid); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); +struct file *vfsub_dentry_open(struct path *path, int flags); +struct file *vfsub_filp_open(const char *path, int oflags, int mode); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len); +struct dentry *vfsub_lookup_hash(struct nameidata *nd); +int vfsub_name_hash(const char *name, struct qstr *this, int len); + +/* ---------------------------------------------------------------------- */ + +struct au_hinode; +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); + +int vfsub_create(struct inode *dir, struct path *path, int mode); +int vfsub_symlink(struct inode *dir, struct path *path, + const char *symname); +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); +int vfsub_link(struct dentry *src_dentry, struct inode *dir, + struct path *path); +int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, + struct inode *hdir, struct path *path); +int vfsub_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_rmdir(struct inode *dir, struct path *path); + +/* ---------------------------------------------------------------------- */ + +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +int vfsub_flush(struct file *file, fl_owner_t id); +int vfsub_readdir(struct file *file, filldir_t filldir, void *arg); + +static inline unsigned int vfsub_file_flags(struct file *file) +{ + unsigned int flags; + + spin_lock(&file->f_lock); + flags = file->f_flags; + spin_unlock(&file->f_lock); + + return flags; +} + +static inline void vfsub_file_accessed(struct file *h_file) +{ + file_accessed(h_file); + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ +} + +static inline void vfsub_touch_atime(struct vfsmount *h_mnt, + struct dentry *h_dentry) +{ + struct path h_path = { + .dentry = h_dentry, + .mnt = h_mnt + }; + touch_atime(&h_path); + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ +} + +static inline int vfsub_update_time(struct inode *h_inode, struct timespec *ts, + int flags) +{ + return update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file); +int vfsub_fsync(struct file *file, struct path *path, int datasync); + +/* ---------------------------------------------------------------------- */ + +static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t err; + + lockdep_off(); + err = vfs_llseek(file, offset, origin); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* dirty workaround for strict type of fmode_t */ +union vfsub_fmu { + fmode_t fm; + unsigned int ui; +}; + +static inline unsigned int vfsub_fmode_to_uint(fmode_t fm) +{ + union vfsub_fmu u = { + .fm = fm + }; + + BUILD_BUG_ON(sizeof(u.fm) != sizeof(u.ui)); + + return u.ui; +} + +static inline fmode_t vfsub_uint_to_fmode(unsigned int ui) +{ + union vfsub_fmu u = { + .ui = ui + }; + + return u.fm; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_sio_rmdir(struct inode *dir, struct path *path); +int vfsub_sio_notify_change(struct path *path, struct iattr *ia); +int vfsub_notify_change(struct path *path, struct iattr *ia); +int vfsub_unlink(struct inode *dir, struct path *path, int force); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/wkq.c +++ linux-3.5.0/ubuntu/aufs/wkq.c @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new dredential scheme + */ + +#include +#include "aufs.h" + +/* internal workqueue named AUFS_WKQ_NAME */ + +static struct workqueue_struct *au_wkq; + +struct au_wkinfo { + struct work_struct wk; + struct kobject *kobj; + + unsigned int flags; /* see wkq.h */ + + au_wkq_func_t func; + void *args; + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ + +static void wkq_func(struct work_struct *wk) +{ + struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); + + AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); + AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); + + wkinfo->func(wkinfo->args); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + kfree(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#if defined(CONFIG_4KSTACKS) || defined(AuTest4KSTACKS) +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + *comp = kmalloc(sizeof(**comp), GFP_NOFS); + if (*comp) { + init_completion(*comp); + wkinfo->comp = *comp; + return 0; + } + return -ENOMEM; +} + +static void au_wkq_comp_free(struct completion *comp) +{ + kfree(comp); +} + +#else + +/* no braces */ +#define AuWkqCompDeclare(name) \ + DECLARE_COMPLETION_ONSTACK(_ ## name); \ + struct completion *comp = &_ ## name + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + wkinfo->comp = *comp; + return 0; +} + +static void au_wkq_comp_free(struct completion *comp __maybe_unused) +{ + /* empty */ +} +#endif /* 4KSTACKS */ + +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { + if (au_wkq_test()) { + AuWarn1("wkq from wkq, due to a dead dir by UDBA?\n"); + AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); + } + } else + au_dbg_verify_kthread(); + + if (au_ftest_wkq(wkinfo->flags, WAIT)) { + INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); + queue_work(au_wkq, &wkinfo->wk); + } else { + INIT_WORK(&wkinfo->wk, wkq_func); + schedule_work(&wkinfo->wk); + } +} + +/* + * Be careful. It is easy to make deadlock happen. + * processA: lock, wkq and wait + * processB: wkq and wait, lock in wkq + * --> deadlock + */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) +{ + int err; + AuWkqCompDeclare(comp); + struct au_wkinfo wkinfo = { + .flags = flags, + .func = func, + .args = args + }; + + err = au_wkq_comp_alloc(&wkinfo, &comp); + if (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + au_wkq_comp_free(comp); + destroy_work_on_stack(&wkinfo.wk); + } + + return err; + +} + +/* + * Note: dget/dput() in func for aufs dentries are not supported. It will be a + * problem in a concurrent umounting. + */ +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags) +{ + int err; + struct au_wkinfo *wkinfo; + + atomic_inc(&au_sbi(sb)->si_nowait.nw_len); + + /* + * wkq_func() must free this wkinfo. + * it highly depends upon the implementation of workqueue. + */ + err = 0; + wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); + if (wkinfo) { + wkinfo->kobj = &au_sbi(sb)->si_kobj; + wkinfo->flags = flags & ~AuWkq_WAIT; + wkinfo->func = func; + wkinfo->args = args; + wkinfo->comp = NULL; + kobject_get(wkinfo->kobj); + __module_get(THIS_MODULE); /* todo: ?? */ + + au_wkq_run(wkinfo); + } else { + err = -ENOMEM; + au_nwt_done(&au_sbi(sb)->si_nowait); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_nwt_init(struct au_nowait_tasks *nwt) +{ + atomic_set(&nwt->nw_len, 0); + /* smp_mb(); */ /* atomic_set */ + init_waitqueue_head(&nwt->nw_wq); +} + +void au_wkq_fin(void) +{ + destroy_workqueue(au_wkq); +} + +int __init au_wkq_init(void) +{ + int err; + + err = 0; + BUILD_BUG_ON(!WQ_RESCUER); + au_wkq = alloc_workqueue(AUFS_WKQ_NAME, !WQ_RESCUER, WQ_DFL_ACTIVE); + if (IS_ERR(au_wkq)) + err = PTR_ERR(au_wkq); + else if (!au_wkq) + err = -ENOMEM; + + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/dynop.c +++ linux-3.5.0/ubuntu/aufs/dynop.c @@ -0,0 +1,377 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dynamically customizable operations for regular files + */ + +#include "aufs.h" + +#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) + +/* + * How large will these lists be? + * Usually just a few elements, 20-30 at most for each, I guess. + */ +static struct au_splhead dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct au_splhead *spl, const void *h_op) +{ + struct au_dykey *key, *tmp; + struct list_head *head; + + key = NULL; + head = &spl->head; + rcu_read_lock(); + list_for_each_entry_rcu(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + key = tmp; + kref_get(&key->dk_kref); + break; + } + rcu_read_unlock(); + + return key; +} + +static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) +{ + struct au_dykey **k, *found; + const void *h_op = key->dk_op.dy_hop; + int i; + + found = NULL; + k = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else + break; + if (!found) { + spin_lock(&br->br_dykey_lock); + for (; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else { + k[i] = key; + break; + } + spin_unlock(&br->br_dykey_lock); + BUG_ON(i == AuBrDynOp); /* expand the array */ + } + + return found; +} + +/* kref_get() if @key is already added */ +static struct au_dykey *dy_gadd(struct au_splhead *spl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct list_head *head; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + kref_get(&tmp->dk_kref); + found = tmp; + break; + } + if (!found) + list_add_rcu(&key->dk_list, head); + spin_unlock(&spl->spin); + + if (!found) + DyPrSym(key); + return found; +} + +static void dy_free_rcu(struct rcu_head *rcu) +{ + struct au_dykey *key; + + key = container_of(rcu, struct au_dykey, dk_rcu); + DyPrSym(key); + kfree(key); +} + +static void dy_free(struct kref *kref) +{ + struct au_dykey *key; + struct au_splhead *spl; + + key = container_of(kref, struct au_dykey, dk_kref); + spl = dynop + key->dk_op.dy_type; + au_spl_del_rcu(&key->dk_list, spl); + call_rcu(&key->dk_rcu, dy_free_rcu); +} + +void au_dy_put(struct au_dykey *key) +{ + kref_put(&key->dk_kref, dy_free); +} + +/* ---------------------------------------------------------------------- */ + +#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) + +#ifdef CONFIG_AUFS_DEBUG +#define DyDbgDeclare(cnt) unsigned int cnt = 0 +#define DyDbgInc(cnt) do { cnt++; } while (0) +#else +#define DyDbgDeclare(cnt) do {} while (0) +#define DyDbgInc(cnt) do {} while (0) +#endif + +#define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ + if (src.func) \ + dst.func = src.func; \ + else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ +} while (0) + +#define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ + dst.func = src.func; \ +} while (0) + +#define DySetAop(func) \ + DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) +#define DySetAopForce(func) \ + DySetForce(func, dyaop->da_op, aufs_aop) + +static void dy_aop(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused) +{ + struct au_dyaop *dyaop = (void *)key; + const struct address_space_operations *h_aop = h_op; + DyDbgDeclare(cnt); + + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); + DySetAopForce(readpage); /* force */ + DySetAop(writepages); + DySetAop(set_page_dirty); + DySetAop(readpages); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); + DySetAop(invalidatepage); + DySetAop(releasepage); + DySetAop(freepage); + /* these two will be changed according to an aufs mount option */ + DySetAop(direct_IO); + DySetAop(get_xip_mem); + DySetAop(migratepage); + DySetAop(launder_page); + DySetAop(is_partially_uptodate); + DySetAop(error_remove_page); + + DyDbgSize(cnt, *h_aop); + dyaop->da_get_xip_mem = h_aop->get_xip_mem; +} + +/* ---------------------------------------------------------------------- */ + +static void dy_bug(struct kref *kref) +{ + BUG(); +} + +static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) +{ + struct au_dykey *key, *old; + struct au_splhead *spl; + struct op { + unsigned int sz; + void (*set)(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused); + }; + static const struct op a[] = { + [AuDy_AOP] = { + .sz = sizeof(struct au_dyaop), + .set = dy_aop + } + }; + const struct op *p; + + spl = dynop + op->dy_type; + key = dy_gfind_get(spl, op->dy_hop); + if (key) + goto out_add; /* success */ + + p = a + op->dy_type; + key = kzalloc(p->sz, GFP_NOFS); + if (unlikely(!key)) { + key = ERR_PTR(-ENOMEM); + goto out; + } + + key->dk_op.dy_hop = op->dy_hop; + kref_init(&key->dk_kref); + p->set(key, op->dy_hop, br->br_mnt->mnt_sb); + old = dy_gadd(spl, key); + if (old) { + kfree(key); + key = old; + } + +out_add: + old = dy_bradd(br, key); + if (old) + /* its ref-count should never be zero here */ + kref_put(&key->dk_kref, dy_bug); +out: + return key; +} + +/* ---------------------------------------------------------------------- */ +/* + * Aufs prohibits O_DIRECT by defaut even if the branch supports it. + * This behaviour is neccessary to return an error from open(O_DIRECT) instead + * of the succeeding I/O. The dio mount option enables O_DIRECT and makes + * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. + * See the aufs manual in detail. + * + * To keep this behaviour, aufs has to set NULL to ->get_xip_mem too, and the + * performance of fadvise() and madvise() may be affected. + */ +static void dy_adx(struct au_dyaop *dyaop, int do_dx) +{ + if (!do_dx) { + dyaop->da_op.direct_IO = NULL; + dyaop->da_op.get_xip_mem = NULL; + } else { + dyaop->da_op.direct_IO = aufs_aop.direct_IO; + dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; + if (!dyaop->da_get_xip_mem) + dyaop->da_op.get_xip_mem = NULL; + } +} + +static struct au_dyaop *dy_aget(struct au_branch *br, + const struct address_space_operations *h_aop, + int do_dx) +{ + struct au_dyaop *dyaop; + struct au_dynop op; + + op.dy_type = AuDy_AOP; + op.dy_haop = h_aop; + dyaop = (void *)dy_get(&op, br); + if (IS_ERR(dyaop)) + goto out; + dy_adx(dyaop, do_dx); + +out: + return dyaop; +} + +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode) +{ + int err, do_dx; + struct super_block *sb; + struct au_branch *br; + struct au_dyaop *dyaop; + + AuDebugOn(!S_ISREG(h_inode->i_mode)); + IiMustWriteLock(inode); + + sb = inode->i_sb; + br = au_sbr(sb, bindex); + do_dx = !!au_opt_test(au_mntflags(sb), DIO); + dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); + err = PTR_ERR(dyaop); + if (IS_ERR(dyaop)) + /* unnecessary to call dy_fput() */ + goto out; + + err = 0; + inode->i_mapping->a_ops = &dyaop->da_op; + +out: + return err; +} + +/* + * Is it safe to replace a_ops during the inode/file is in operation? + * Yes, I hope so. + */ +int au_dy_irefresh(struct inode *inode) +{ + int err; + aufs_bindex_t bstart; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + bstart = au_ibstart(inode); + h_inode = au_h_iptr(inode, bstart); + err = au_dy_iaop(inode, bstart, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct au_splhead *spl; + struct list_head *head; + struct au_dykey *key; + + spl = dynop + AuDy_AOP; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(key, head, dk_list) + dy_adx((void *)key, do_dx); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + /* make sure that 'struct au_dykey *' can be any type */ + BUILD_BUG_ON(offsetof(struct au_dyaop, da_key)); + + for (i = 0; i < AuDyLast; i++) + au_spl_init(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!list_empty(&dynop[i].head)); +} --- linux-3.5.0.orig/ubuntu/aufs/dcsub.c +++ linux-3.5.0/ubuntu/aufs/dcsub.c @@ -0,0 +1,243 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for dentry cache + */ + +#include "aufs.h" + +static void au_dpage_free(struct au_dpage *dpage) +{ + int i; + struct dentry **p; + + p = dpage->dentries; + for (i = 0; i < dpage->ndentry; i++) + dput(*p++); + free_page((unsigned long)dpage->dentries); +} + +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) +{ + int err; + void *p; + + err = -ENOMEM; + dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); + if (unlikely(!dpages->dpages)) + goto out; + + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out_dpages; + + dpages->dpages[0].ndentry = 0; + dpages->dpages[0].dentries = p; + dpages->ndpage = 1; + return 0; /* success */ + +out_dpages: + kfree(dpages->dpages); +out: + return err; +} + +void au_dpages_free(struct au_dcsub_pages *dpages) +{ + int i; + struct au_dpage *p; + + p = dpages->dpages; + for (i = 0; i < dpages->ndpage; i++) + au_dpage_free(p++); + kfree(dpages->dpages); +} + +static int au_dpages_append(struct au_dcsub_pages *dpages, + struct dentry *dentry, gfp_t gfp) +{ + int err, sz; + struct au_dpage *dpage; + void *p; + + dpage = dpages->dpages + dpages->ndpage - 1; + sz = PAGE_SIZE / sizeof(dentry); + if (unlikely(dpage->ndentry >= sz)) { + AuLabel(new dpage); + err = -ENOMEM; + sz = dpages->ndpage * sizeof(*dpages->dpages); + p = au_kzrealloc(dpages->dpages, sz, + sz + sizeof(*dpages->dpages), gfp); + if (unlikely(!p)) + goto out; + + dpages->dpages = p; + dpage = dpages->dpages + dpages->ndpage; + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out; + + dpage->ndentry = 0; + dpage->dentries = p; + dpages->ndpage++; + } + + AuDebugOn(!dentry->d_count); + dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); + return 0; /* success */ + +out: + return err; +} + +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg) +{ + int err; + struct dentry *this_parent; + struct list_head *next; + struct super_block *sb = root->d_sb; + + err = 0; + write_seqlock(&rename_lock); + this_parent = root; + spin_lock(&this_parent->d_lock); +repeat: + next = this_parent->d_subdirs.next; +resume: + if (this_parent->d_sb == sb + && !IS_ROOT(this_parent) + && au_di(this_parent) + && this_parent->d_count + && (!test || test(this_parent, arg))) { + err = au_dpages_append(dpages, this_parent, GFP_ATOMIC); + if (unlikely(err)) + goto out; + } + + while (next != &this_parent->d_subdirs) { + struct list_head *tmp = next; + struct dentry *dentry = list_entry(tmp, struct dentry, + d_u.d_child); + + next = tmp->next; + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); + if (dentry->d_count) { + if (!list_empty(&dentry->d_subdirs)) { + spin_unlock(&this_parent->d_lock); + spin_release(&dentry->d_lock.dep_map, 1, + _RET_IP_); + this_parent = dentry; + spin_acquire(&this_parent->d_lock.dep_map, 0, 1, + _RET_IP_); + goto repeat; + } + if (dentry->d_sb == sb + && au_di(dentry) + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, + GFP_ATOMIC); + } + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + } + + if (this_parent != root) { + struct dentry *tmp; + struct dentry *child; + + tmp = this_parent->d_parent; + rcu_read_lock(); + spin_unlock(&this_parent->d_lock); + child = this_parent; + this_parent = tmp; + spin_lock(&this_parent->d_lock); + rcu_read_unlock(); + next = child->d_u.d_child.next; + goto resume; + } + +out: + spin_unlock(&this_parent->d_lock); + write_sequnlock(&rename_lock); + return err; +} + +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg) +{ + int err; + + err = 0; + write_seqlock(&rename_lock); + spin_lock(&dentry->d_lock); + if (do_include + && dentry->d_count + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + + /* + * vfsmount_lock is unnecessary since this is a traverse in a single + * mount + */ + while (!IS_ROOT(dentry)) { + dentry = dentry->d_parent; /* rename_lock is locked */ + spin_lock(&dentry->d_lock); + if (dentry->d_count + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + break; + } + +out: + write_sequnlock(&rename_lock); + return err; +} + +static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) +{ + return au_di(dentry) && dentry->d_sb == arg; +} + +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include) +{ + return au_dcsub_pages_rev(dpages, dentry, do_include, + au_dcsub_dpages_aufs, dentry->d_sb); +} + +int au_test_subdir(struct dentry *d1, struct dentry *d2) +{ + struct path path[2] = { + { + .dentry = d1 + }, + { + .dentry = d2 + } + }; + + return path_is_under(path + 0, path + 1); +} --- linux-3.5.0.orig/ubuntu/aufs/finfo.c +++ linux-3.5.0/ubuntu/aufs/finfo.c @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file private data + */ + +#include "aufs.h" + +void au_hfput(struct au_hfile *hf, struct file *file) +{ + /* todo: direct access f_flags */ + if (vfsub_file_flags(file) & __FMODE_EXEC) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + atomic_dec(&hf->hf_br->br_count); + hf->hf_br = NULL; +} + +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) +{ + struct au_finfo *finfo = au_fi(file); + struct au_hfile *hf; + struct au_fidir *fidir; + + fidir = finfo->fi_hdir; + if (!fidir) { + AuDebugOn(finfo->fi_btop != bindex); + hf = &finfo->fi_htop; + } else + hf = fidir->fd_hfile + bindex; + + if (hf && hf->hf_file) + au_hfput(hf, file); + if (val) { + FiMustWriteLock(file); + hf->hf_file = val; + hf->hf_br = au_sbr(file->f_dentry->d_sb, bindex); + } +} + +void au_update_figen(struct file *file) +{ + atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_dentry)); + /* smp_mb(); */ /* atomic_set */ +} + +/* ---------------------------------------------------------------------- */ + +struct au_fidir *au_fidir_alloc(struct super_block *sb) +{ + struct au_fidir *fidir; + int nbr; + + nbr = au_sbend(sb) + 1; + if (nbr < 2) + nbr = 2; /* initial allocate for 2 branches */ + fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; + fidir->fd_vdir_cache = NULL; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr) +{ + int err; + struct au_fidir *fidir, *p; + + AuRwMustWriteLock(&finfo->fi_rwsem); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + + err = -ENOMEM; + p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), + GFP_NOFS); + if (p) { + p->fd_nent = nbr; + finfo->fi_hdir = p; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_finfo_fin(struct file *file) +{ + struct au_finfo *finfo; + + au_nfiles_dec(file->f_dentry->d_sb); + + finfo = au_fi(file); + AuDebugOn(finfo->fi_hdir); + AuRwDestroy(&finfo->fi_rwsem); + au_cache_free_finfo(finfo); +} + +void au_fi_init_once(void *_finfo) +{ + struct au_finfo *finfo = _finfo; + static struct lock_class_key aufs_fi; + + au_rw_init(&finfo->fi_rwsem); + au_rw_class(&finfo->fi_rwsem, &aufs_fi); +} + +int au_finfo_init(struct file *file, struct au_fidir *fidir) +{ + int err, lc_idx; + struct au_finfo *finfo; + struct dentry *dentry; + + err = -ENOMEM; + dentry = file->f_dentry; + finfo = au_cache_alloc_finfo(); + if (unlikely(!finfo)) + goto out; + + err = 0; + au_nfiles_inc(dentry->d_sb); + lc_idx = AuLcNonDir_FIINFO; + if (fidir) + lc_idx = AuLcDir_FIINFO; + au_rw_class(&finfo->fi_rwsem, au_lc_key + lc_idx); + au_rw_write_lock(&finfo->fi_rwsem); + finfo->fi_btop = -1; + finfo->fi_hdir = fidir; + atomic_set(&finfo->fi_generation, au_digen(dentry)); + /* smp_mb(); */ /* atomic_set */ + + file->private_data = finfo; + +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/i_op_del.c +++ linux-3.5.0/ubuntu/aufs/i_op_del.c @@ -0,0 +1,478 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (del entry) + */ + +#include "aufs.h" + +/* + * decide if a new whiteout for @dentry is necessary or not. + * when it is necessary, prepare the parent dir for the upper branch whose + * branch index is @bcpup for creation. the actual creation of the whiteout will + * be done by caller. + * return value: + * 0: wh is unnecessary + * plus: wh is necessary + * minus: error + */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) +{ + int need_wh, err; + aufs_bindex_t bstart; + struct super_block *sb; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + if (*bcpup < 0) { + *bcpup = bstart; + if (au_test_ro(sb, bstart, dentry->d_inode)) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(bstart < *bcpup + || au_test_ro(sb, *bcpup, dentry->d_inode)); + AuDbg("bcpup %d, bstart %d\n", *bcpup, bstart); + + if (*bcpup != bstart) { + err = au_cpup_dirs(dentry, *bcpup); + if (unlikely(err)) + goto out; + need_wh = 1; + } else { + struct au_dinfo *dinfo, *tmp; + + need_wh = -ENOMEM; + dinfo = au_di(dentry); + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (tmp) { + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0, + /*nd*/NULL); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + } + } + AuDbg("need_wh %d\n", need_wh); + err = need_wh; + +out: + return err; +} + +/* + * simple tests for the del-entry operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry, *h_latest; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, bindex); + h_inode = h_dentry->d_inode; + if (dentry->d_inode) { + err = -ENOENT; + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(h_inode)) + goto out; + } + + err = -ENOENT; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + goto out; + err = 0; + + /* + * rmdir a dir may break the consistency on some filesystem. + * let's try heavy test. + */ + err = -EACCES; + if (unlikely(au_test_h_perm(h_parent->d_inode, MAY_EXEC | MAY_WRITE))) + goto out; + + h_latest = au_sio_lkup_one(&dentry->d_name, h_parent, + au_sbr(dentry->d_sb, bindex)); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; + if (h_latest == h_dentry) + err = 0; + dput(h_latest); + +out: + return err; +} + +/* + * decide the branch where we operate for @dentry. the branch index will be set + * @rbcpup. after diciding it, 'pin' it and store the timestamps of the parent + * dir for reverting. + * when a new whiteout is necessary, create it. + */ +static struct dentry* +lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, + struct au_dtime *dt, struct au_pin *pin) +{ + struct dentry *wh_dentry; + struct super_block *sb; + struct path h_path; + int err, need_wh; + unsigned int udba; + aufs_bindex_t bcpup; + + need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); + wh_dentry = ERR_PTR(need_wh); + if (unlikely(need_wh < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + bcpup = *rbcpup; + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_path.dentry = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) { + err = au_may_del(dentry, bcpup, h_path.dentry, isdir); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + } + + h_path.mnt = au_sbr_mnt(sb, bcpup); + au_dtime_store(dt, au_pinned_parent(pin), &h_path); + wh_dentry = NULL; + if (!need_wh) + goto out; /* success, no need to create whiteout */ + + wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); + if (IS_ERR(wh_dentry)) + goto out_unpin; + + /* returns with the parent is locked and wh_dentry is dget-ed */ + goto out; /* success */ + +out_unpin: + au_unpin(pin); +out: + return wh_dentry; +} + +/* + * when removing a dir, rename it to a unique temporary whiteout-ed name first + * in order to be revertible and save time for removing many child whiteouts + * under the dir. + * returns 1 when there are too many child whiteout and caller should remove + * them asynchronously. returns 0 when the number of children is enough small to + * remove now or the branch fs is a remote fs. + * otherwise return an error. + */ +static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, + struct au_nhash *whlist, struct inode *dir) +{ + int rmdir_later, err, dirwh; + struct dentry *h_dentry; + struct super_block *sb; + + sb = dentry->d_sb; + SiMustAnyLock(sb); + h_dentry = au_h_dptr(dentry, bindex); + err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); + if (unlikely(err)) + goto out; + + /* stop monitoring */ + au_hn_free(au_hi(dentry->d_inode, bindex)); + + if (!au_test_fs_remote(h_dentry->d_sb)) { + dirwh = au_sbi(sb)->si_dirwh; + rmdir_later = (dirwh <= 1); + if (!rmdir_later) + rmdir_later = au_nhash_test_longer_wh(whlist, bindex, + dirwh); + if (rmdir_later) + return rmdir_later; + } + + err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); + if (unlikely(err)) { + AuIOErr("rmdir %.*s, b%d failed, %d. ignored\n", + AuDLNPair(h_dentry), bindex, err); + err = 0; + } + +out: + AuTraceErr(err); + return err; +} + +/* + * final procedure for deleting a entry. + * maintain dentry and iattr. + */ +static void epilog(struct inode *dir, struct dentry *dentry, + aufs_bindex_t bindex) +{ + struct inode *inode; + + inode = dentry->d_inode; + d_drop(dentry); + inode->i_ctime = dir->i_ctime; + + if (au_ibstart(dir) == bindex) + au_cpup_attr_timesizes(dir); + dir->i_version++; +} + +/* + * when an error happened, remove the created whiteout and revert everything. + */ +static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, + aufs_bindex_t bwh, struct dentry *wh_dentry, + struct dentry *dentry, struct au_dtime *dt) +{ + int rerr; + struct path h_path = { + .dentry = wh_dentry, + .mnt = au_sbr_mnt(dir->i_sb, bindex) + }; + + rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); + if (!rerr) { + au_set_dbwh(dentry, bwh); + au_dtime_revert(dt); + return 0; + } + + AuIOErr("%.*s reverting whiteout failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +int aufs_unlink(struct inode *dir, struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bindex, bstart; + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct inode *inode, *h_dir; + struct dentry *parent, *wh_dentry; + + IMustLock(dir); + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + inode = dentry->d_inode; + IMustLock(inode); + err = -EISDIR; + if (unlikely(S_ISDIR(inode->i_mode))) + goto out_unlock; /* possible? */ + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &dt, &pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_path.mnt = au_sbr_mnt(dentry->d_sb, bstart); + h_path.dentry = au_h_dptr(dentry, bstart); + dget(h_path.dentry); + if (bindex == bstart) { + h_dir = au_pinned_h_dir(&pin); + err = vfsub_unlink(h_dir, &h_path, /*force*/0); + } else { + /* dir inode is locked */ + h_dir = wh_dentry->d_parent->d_inode; + IMustLock(h_dir); + err = 0; + } + + if (!err) { + vfsub_drop_nlink(inode); + epilog(dir, dentry, bindex); + + /* update target timestamps */ + if (bindex == bstart) { + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ + inode->i_ctime = h_path.dentry->d_inode->i_ctime; + } else + /* todo: this timestamp may be reverted later */ + inode->i_ctime = h_dir->i_ctime; + goto out_unpin; /* success */ + } + + /* revert */ + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, &dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&pin); + dput(wh_dentry); + dput(h_path.dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, bstart; + struct au_dtime dt; + struct au_pin pin; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + + IMustLock(dir); + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_unlock; + inode = dentry->d_inode; + IMustLock(inode); + err = -ENOTDIR; + if (unlikely(!S_ISDIR(inode->i_mode))) + goto out_unlock; /* possible? */ + + err = -ENOMEM; + args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); + if (unlikely(!args)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + err = au_test_empty(dentry, &args->whlist); + if (unlikely(err)) + goto out_parent; + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &dt, &pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_dentry = au_h_dptr(dentry, bstart); + dget(h_dentry); + rmdir_later = 0; + if (bindex == bstart) { + err = renwh_and_rmdir(dentry, bstart, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, bstart)); + + /* dir inode is locked */ + IMustLock(wh_dentry->d_parent->d_inode); + err = 0; + } + + if (!err) { + vfsub_dead_dir(inode); + au_set_dbdiropq(dentry, -1); + epilog(dir, dentry, bindex); + + if (rmdir_later) { + au_whtmp_kick_rmdir(dir, bstart, h_dentry, args); + args = NULL; + } + + goto out_unpin; /* success */ + } + + /* revert */ + AuLabel(revert); + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, &dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&pin); + dput(wh_dentry); + dput(h_dentry); +out_parent: + di_write_unlock(parent); + if (args) + au_whtmp_rmdir_free(args); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/cpup.h +++ linux-3.5.0/ubuntu/aufs/cpup.h @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * copy-up/down functions + */ + +#ifndef __AUFS_CPUP_H__ +#define __AUFS_CPUP_H__ + +#ifdef __KERNEL__ + +#include + +struct inode; +struct file; + +void au_cpup_attr_flags(struct inode *dst, struct inode *src); +void au_cpup_attr_timesizes(struct inode *inode); +void au_cpup_attr_nlink(struct inode *inode, int force); +void au_cpup_attr_changeable(struct inode *inode); +void au_cpup_igen(struct inode *inode, struct inode *h_inode); +void au_cpup_attr_all(struct inode *inode, int force); + +/* ---------------------------------------------------------------------- */ + +/* cpup flags */ +#define AuCpup_DTIME 1 /* do dtime_store/revert */ +#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, + for link(2) */ +#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) +#define au_fset_cpup(flags, name) \ + do { (flags) |= AuCpup_##name; } while (0) +#define au_fclr_cpup(flags, name) \ + do { (flags) &= ~AuCpup_##name; } while (0) + +int au_copy_file(struct file *dst, struct file *src, loff_t len); +int au_sio_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent); +int au_sio_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags); +int au_sio_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file); + +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg), + void *arg); +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +/* keep timestamps when copyup */ +struct au_dtime { + struct dentry *dt_dentry; + struct path dt_h_path; + struct timespec dt_atime, dt_mtime; +}; +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path); +void au_dtime_revert(struct au_dtime *dt); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dcsub.h +++ linux-3.5.0/ubuntu/aufs/dcsub.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for dentry cache + */ + +#ifndef __AUFS_DCSUB_H__ +#define __AUFS_DCSUB_H__ + +#ifdef __KERNEL__ + +#include +#include + +struct dentry; + +struct au_dpage { + int ndentry; + struct dentry **dentries; +}; + +struct au_dcsub_pages { + int ndpage; + struct au_dpage *dpages; +}; + +/* ---------------------------------------------------------------------- */ + +/* dcsub.c */ +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); +void au_dpages_free(struct au_dcsub_pages *dpages); +typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg); +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg); +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include); +int au_test_subdir(struct dentry *d1, struct dentry *d2); + +/* ---------------------------------------------------------------------- */ + +static inline int au_d_hashed_positive(struct dentry *d) +{ + int err; + struct inode *inode = d->d_inode; + err = 0; + if (unlikely(d_unhashed(d) || !inode || !inode->i_nlink)) + err = -ENOENT; + return err; +} + +static inline int au_d_alive(struct dentry *d) +{ + int err; + struct inode *inode; + err = 0; + if (!IS_ROOT(d)) + err = au_d_hashed_positive(d); + else { + inode = d->d_inode; + if (unlikely(d_unlinked(d) || !inode || !inode->i_nlink)) + err = -ENOENT; + } + return err; +} + +static inline int au_alive_dir(struct dentry *d) +{ + int err; + err = au_d_alive(d); + if (unlikely(err || IS_DEADDIR(d->d_inode))) + err = -ENOENT; + return err; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/spl.h +++ linux-3.5.0/ubuntu/aufs/spl.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * simple list protected by a spinlock + */ + +#ifndef __AUFS_SPL_H__ +#define __AUFS_SPL_H__ + +#ifdef __KERNEL__ + +struct au_splhead { + spinlock_t spin; + struct list_head head; +}; + +static inline void au_spl_init(struct au_splhead *spl) +{ + spin_lock_init(&spl->spin); + INIT_LIST_HEAD(&spl->head); +} + +static inline void au_spl_add(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_add(list, &spl->head); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del(list); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del_rcu(struct list_head *list, + struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del_rcu(list); + spin_unlock(&spl->spin); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/file.c +++ linux-3.5.0/ubuntu/aufs/file.c @@ -0,0 +1,676 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * handling file/dir, and address_space operation + */ + +#ifdef CONFIG_AUFS_DEBUG +#include +#endif +#include +#include "aufs.h" + +/* drop flags for writing */ +unsigned int au_file_roflags(unsigned int flags) +{ + flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); + flags |= O_RDONLY | O_NOATIME; + return flags; +} + +/* common functions to regular file and dir */ +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file) +{ + struct file *h_file; + struct dentry *h_dentry; + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_path; + int err, exec_flag; + + /* a race condition can happen between open and unlink/rmdir */ + h_file = ERR_PTR(-ENOENT); + h_dentry = au_h_dptr(dentry, bindex); + if (au_test_nfsd() && !h_dentry) + goto out; + h_inode = h_dentry->d_inode; + if (au_test_nfsd() && !h_inode) + goto out; + spin_lock(&h_dentry->d_lock); + err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) + || !h_inode + /* || !dentry->d_inode->i_nlink */ + ; + spin_unlock(&h_dentry->d_lock); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_file = ERR_PTR(-EACCES); + exec_flag = flags & __FMODE_EXEC; + if (exec_flag && (br->br_mnt->mnt_flags & MNT_NOEXEC)) + goto out; + + /* drop flags for writing */ + if (au_test_ro(sb, bindex, dentry->d_inode)) + flags = au_file_roflags(flags); + flags &= ~O_CREAT; + atomic_inc(&br->br_count); + h_path.dentry = h_dentry; + h_path.mnt = br->br_mnt; + if (!au_special_file(h_inode->i_mode)) + h_file = vfsub_dentry_open(&h_path, flags); + else { + /* this block depends upon the configuration */ + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + si_read_unlock(sb); + h_file = vfsub_dentry_open(&h_path, flags); + si_noflush_read_lock(sb); + fi_write_lock(file); + di_read_lock_child(dentry, AuLock_IR); + } + if (IS_ERR(h_file)) + goto out_br; + + if (exec_flag) { + err = deny_write_access(h_file); + if (unlikely(err)) { + fput(h_file); + h_file = ERR_PTR(err); + goto out_br; + } + } + fsnotify_open(h_file); + goto out; /* success */ + +out_br: + atomic_dec(&br->br_count); +out: + return h_file; +} + +int au_do_open(struct file *file, int (*open)(struct file *file, int flags), + struct au_fidir *fidir) +{ + int err; + struct dentry *dentry; + + err = au_finfo_init(file, fidir); + if (unlikely(err)) + goto out; + + dentry = file->f_dentry; + di_read_lock_child(dentry, AuLock_IR); + err = open(file, vfsub_file_flags(file)); + di_read_unlock(dentry, AuLock_IR); + + fi_write_unlock(file); + if (unlikely(err)) { + au_fi(file)->fi_hdir = NULL; + au_finfo_fin(file); + } + +out: + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t bstart; + struct dentry *dentry; + struct file *h_file, *h_file_tmp; + + dentry = file->f_dentry; + AuDebugOn(au_special_file(dentry->d_inode->i_mode)); + bstart = au_dbstart(dentry); + h_file_tmp = NULL; + if (au_fbstart(file) == bstart) { + h_file = au_hf_top(file); + if (file->f_mode == h_file->f_mode) + return 0; /* success */ + h_file_tmp = h_file; + get_file(h_file_tmp); + au_set_h_fptr(file, bstart, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + AuDebugOn(au_fbstart(file) < bstart); + + h_file = au_h_open(dentry, bstart, vfsub_file_flags(file) & ~O_TRUNC, + file); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* todo: close all? */ + + err = 0; + au_set_fbstart(file, bstart); + au_set_h_fptr(file, bstart, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) + fput(h_file_tmp); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + dinfo->di_bstart = btgt; + hdp = dinfo->di_hdentry; + h_dentry = hdp[0 + btgt].hd_dentry; + hdp[0 + btgt].hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp[0 + btgt].hd_dentry = h_dentry; + dinfo->di_bstart = bstart; + + return err; +} + +static int au_ready_to_write_wh(struct file *file, loff_t len, + aufs_bindex_t bcpup) +{ + int err; + struct inode *inode, *h_inode; + struct dentry *dentry, *h_dentry, *hi_wh; + + dentry = file->f_dentry; + au_update_dbstart(dentry); + inode = dentry->d_inode; + h_inode = NULL; + if (au_dbstart(dentry) <= bcpup && au_dbend(dentry) >= bcpup) { + h_dentry = au_h_dptr(dentry, bcpup); + if (h_dentry) + h_inode = h_dentry->d_inode; + } + hi_wh = au_hi_wh(inode, bcpup); + if (!hi_wh && !h_inode) + err = au_sio_cpup_wh(dentry, bcpup, len, file); + else + /* already copied-up after unlink */ + err = au_reopen_wh(file, bcpup, hi_wh); + + if (!err + && inode->i_nlink > 1 + && au_opt_test(au_mntflags(dentry->d_sb), PLINK)) + au_plink_append(inode, bcpup, au_h_dptr(dentry, bcpup)); + + return err; +} + +/* + * prepare the @file for writing. + */ +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) +{ + int err; + aufs_bindex_t bstart, bcpup, dbstart; + struct dentry *dentry, *parent, *h_dentry; + struct inode *h_inode, *inode; + struct super_block *sb; + struct file *h_file; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + AuDebugOn(au_special_file(inode->i_mode)); + bstart = au_fbstart(file); + err = au_test_ro(sb, bstart, inode); + if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { + err = au_pin(pin, dentry, bstart, AuOpt_UDBA_NONE, /*flags*/0); + goto out; + } + + /* need to cpup or reopen */ + parent = dget_parent(dentry); + di_write_lock_parent(parent); + err = AuWbrCopyup(au_sbi(sb), dentry); + bcpup = err; + if (unlikely(err < 0)) + goto out_dgrade; + err = 0; + + if (!d_unhashed(dentry) && !au_h_dptr(parent, bcpup)) { + err = au_cpup_dirs(dentry, bcpup); + if (unlikely(err)) + goto out_dgrade; + } + + err = au_pin(pin, dentry, bcpup, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_dgrade; + + h_dentry = au_hf_top(file)->f_dentry; + h_inode = h_dentry->d_inode; + dbstart = au_dbstart(dentry); + if (dbstart <= bcpup) { + h_dentry = au_h_dptr(dentry, bcpup); + AuDebugOn(!h_dentry); + h_inode = h_dentry->d_inode; + AuDebugOn(!h_inode); + bstart = bcpup; + } + + if (dbstart <= bcpup /* just reopen */ + || !d_unhashed(dentry) /* copyup and reopen */ + ) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + h_file = au_h_open_pre(dentry, bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else { + di_downgrade_lock(parent, AuLock_IR); + if (dbstart > bcpup) + err = au_sio_cpup_simple(dentry, bcpup, len, + AuCpup_DTIME); + if (!err) + err = au_reopen_nondir(file); + } + mutex_unlock(&h_inode->i_mutex); + au_h_open_post(dentry, bstart, h_file); + } else { /* copyup as wh and reopen */ + /* + * since writable hfsplus branch is not supported, + * h_open_pre/post() are unnecessary. + */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_ready_to_write_wh(file, len, bcpup); + di_downgrade_lock(parent, AuLock_IR); + mutex_unlock(&h_inode->i_mutex); + } + + if (!err) { + au_pin_set_parent_lflag(pin, /*lflag*/0); + goto out_dput; /* success */ + } + au_unpin(pin); + goto out_unlock; + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_dput: + dput(parent); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct inode *inode; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + si_noflush_read_lock(sb); + fi_read_lock(file); + ii_read_lock_child(inode); + + err = flush(file, id); + au_cpup_attr_timesizes(inode); + + ii_read_unlock(inode); + fi_read_unlock(file); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_file_refresh_by_inode(struct file *file, int *need_reopen) +{ + int err; + aufs_bindex_t bstart; + struct au_pin pin; + struct au_finfo *finfo; + struct dentry *dentry, *parent, *hi_wh; + struct inode *inode; + struct super_block *sb; + + FiMustWriteLock(file); + + err = 0; + finfo = au_fi(file); + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + bstart = au_ibstart(inode); + if (bstart == finfo->fi_btop || IS_ROOT(dentry)) + goto out; + + parent = dget_parent(dentry); + if (au_test_ro(sb, bstart, inode)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(au_sbi(sb), dentry); + bstart = err; + di_read_unlock(parent, !AuLock_IR); + if (unlikely(err < 0)) + goto out_parent; + err = 0; + } + + di_read_lock_parent(parent, AuLock_IR); + hi_wh = au_hi_wh(inode, bstart); + if (!S_ISDIR(inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode) + && !d_unhashed(dentry)) { + err = au_test_and_cpup_dirs(dentry, bstart); + if (unlikely(err)) + goto out_unlock; + + /* always superio. */ + err = au_pin(&pin, dentry, bstart, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) + err = au_sio_cpup_simple(dentry, bstart, -1, + AuCpup_DTIME); + au_unpin(&pin); + } else if (hi_wh) { + /* already copied-up after unlink */ + err = au_reopen_wh(file, bstart, hi_wh); + *need_reopen = 0; + } + +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_parent: + dput(parent); +out: + return err; +} + +static void au_do_refresh_dir(struct file *file) +{ + aufs_bindex_t bindex, bend, new_bindex, brid; + struct au_hfile *p, tmp, *q; + struct au_finfo *finfo; + struct super_block *sb; + struct au_fidir *fidir; + + FiMustWriteLock(file); + + sb = file->f_dentry->d_sb; + finfo = au_fi(file); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + p = fidir->fd_hfile + finfo->fi_btop; + brid = p->hf_br->br_id; + bend = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bend; bindex++, p++) { + if (!p->hf_file) + continue; + + new_bindex = au_br_index(sb, p->hf_br->br_id); + if (new_bindex == bindex) + continue; + if (new_bindex < 0) { + au_set_h_fptr(file, bindex, NULL); + continue; + } + + /* swap two lower inode, and loop again */ + q = fidir->fd_hfile + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hf_file) { + bindex--; + p--; + } + } + + p = fidir->fd_hfile; + if (!au_test_mmapped(file) && !d_unlinked(file->f_dentry)) { + bend = au_sbend(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bend; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (p->hf_file->f_dentry + && p->hf_file->f_dentry->d_inode) + break; + else + au_hfput(p, file); + } + } else { + bend = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bend; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, file); + bend = au_sbend(sb); + } + + p = fidir->fd_hfile + bend; + for (fidir->fd_bbot = bend; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (p->hf_file->f_dentry + && p->hf_file->f_dentry->d_inode) + break; + else + au_hfput(p, file); + } + AuDebugOn(fidir->fd_bbot < finfo->fi_btop); +} + +/* + * after branch manipulating, refresh the file. + */ +static int refresh_file(struct file *file, int (*reopen)(struct file *file)) +{ + int err, need_reopen; + aufs_bindex_t bend, bindex; + struct dentry *dentry; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_dentry; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(dentry->d_sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbstart(file, bindex); + } else { + err = au_fidir_realloc(finfo, au_sbend(dentry->d_sb) + 1); + if (unlikely(err)) + goto out; + au_do_refresh_dir(file); + } + + err = 0; + need_reopen = 1; + if (!au_test_mmapped(file)) + err = au_file_refresh_by_inode(file, &need_reopen); + if (!err && need_reopen && !d_unlinked(dentry)) + err = reopen(file); + if (!err) { + au_update_figen(file); + goto out; /* success */ + } + + /* error, close all lower files */ + if (finfo->fi_hdir) { + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + +out: + return err; +} + +/* common function to regular file and dir */ +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t bstart; + unsigned char pseudo_link; + struct dentry *dentry; + struct inode *inode; + + err = 0; + dentry = file->f_dentry; + inode = dentry->d_inode; + AuDebugOn(au_special_file(inode->i_mode)); + sigen = au_sigen(dentry->d_sb); + fi_write_lock(file); + figen = au_figen(file); + di_write_lock_child(dentry); + bstart = au_dbstart(dentry); + pseudo_link = (bstart != au_ibstart(inode)); + if (sigen == figen && !pseudo_link && au_fbstart(file) == bstart) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + goto out; /* success */ + } + + AuDbg("sigen %d, figen %d\n", sigen, figen); + if (au_digen_test(dentry, sigen)) { + err = au_reval_dpath(dentry, sigen); + AuDebugOn(!err && au_digen_test(dentry, sigen)); + } + + if (!err) + err = refresh_file(file, reopen); + if (!err) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + } else { + di_write_unlock(dentry); + fi_write_unlock(file); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* cf. aufs_nopage() */ +/* for madvise(2) */ +static int aufs_readpage(struct file *file __maybe_unused, struct page *page) +{ + unlock_page(page); + return 0; +} + +/* it will never be called, but necessary to support O_DIRECT */ +static ssize_t aufs_direct_IO(int rw, struct kiocb *iocb, + const struct iovec *iov, loff_t offset, + unsigned long nr_segs) +{ BUG(); return 0; } + +/* + * it will never be called, but madvise and fadvise behaves differently + * when get_xip_mem is defined + */ +static int aufs_get_xip_mem(struct address_space *mapping, pgoff_t pgoff, + int create, void **kmem, unsigned long *pfn) +{ BUG(); return 0; } + +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ AuUnsupport(); return 0; } +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + +static int aufs_set_page_dirty(struct page *page) +{ AuUnsupport(); return 0; } +static void aufs_invalidatepage(struct page *page, unsigned long offset) +{ AuUnsupport(); } +static int aufs_releasepage(struct page *page, gfp_t gfp) +{ AuUnsupport(); return 0; } +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +static int aufs_launder_page(struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_is_partially_uptodate(struct page *page, + read_descriptor_t *desc, + unsigned long from) +{ AuUnsupport(); return 0; } +static int aufs_error_remove_page(struct address_space *mapping, + struct page *page) +{ AuUnsupport(); return 0; } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { + .readpage = aufs_readpage, + .direct_IO = aufs_direct_IO, + .get_xip_mem = aufs_get_xip_mem, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ + .set_page_dirty = aufs_set_page_dirty, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ + .invalidatepage = aufs_invalidatepage, + .releasepage = aufs_releasepage, + .migratepage = aufs_migratepage, + .launder_page = aufs_launder_page, + .is_partially_uptodate = aufs_is_partially_uptodate, + .error_remove_page = aufs_error_remove_page +#endif /* CONFIG_AUFS_DEBUG */ +}; --- linux-3.5.0.orig/ubuntu/aufs/branch.h +++ linux-3.5.0/ubuntu/aufs/branch.h @@ -0,0 +1,230 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * branch filesystems and xino for them + */ + +#ifndef __AUFS_BRANCH_H__ +#define __AUFS_BRANCH_H__ + +#ifdef __KERNEL__ + +#include +#include "dynop.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino_file { + struct file *xi_file; + struct mutex xi_nondir_mtx; + + /* todo: make xino files an array to support huge inode number */ + +#ifdef CONFIG_DEBUG_FS + struct dentry *xi_dbgaufs; +#endif +}; + +/* members for writable branch only */ +enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; +struct au_wbr { + struct au_rwsem wbr_wh_rwsem; + struct dentry *wbr_wh[AuBrWh_Last]; + atomic_t wbr_wh_running; +#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ +#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ +#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ + + /* mfs mode */ + unsigned long long wbr_bytes; +}; + +/* ext2 has 3 types of operations at least, ext3 has 4 */ +#define AuBrDynOp (AuDyLast * 4) + +/* protected by superblock rwsem */ +struct au_branch { + struct au_xino_file br_xino; + + aufs_bindex_t br_id; + + int br_perm; + struct vfsmount *br_mnt; + spinlock_t br_dykey_lock; + struct au_dykey *br_dykey[AuBrDynOp]; + atomic_t br_count; + + struct au_wbr *br_wbr; + + /* xino truncation */ + blkcnt_t br_xino_upper; /* watermark in blocks */ + atomic_t br_xino_running; + +#ifdef CONFIG_AUFS_HFSNOTIFY + struct fsnotify_group *br_hfsn_group; + struct fsnotify_ops br_hfsn_ops; +#endif + +#ifdef CONFIG_SYSFS + /* an entry under sysfs per mount-point */ + char br_name[8]; + struct attribute br_attr; +#endif +}; + +/* ---------------------------------------------------------------------- */ + +/* branch permissions and attributes */ +#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ +#define AuBrPerm_RO (1 << 1) /* readonly */ +#define AuBrPerm_RR (1 << 2) /* natively readonly */ +#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) + +#define AuBrRAttr_WH (1 << 3) /* whiteout-able */ + +#define AuBrWAttr_NoLinkWH (1 << 4) /* un-hardlinkable whiteouts */ + +static inline int au_br_writable(int brperm) +{ + return brperm & AuBrPerm_RW; +} + +static inline int au_br_whable(int brperm) +{ + return brperm & (AuBrPerm_RW | AuBrRAttr_WH); +} + +static inline int au_br_wh_linkable(int brperm) +{ + return !(brperm & AuBrWAttr_NoLinkWH); +} + +static inline int au_br_rdonly(struct au_branch *br) +{ + return ((br->br_mnt->mnt_sb->s_flags & MS_RDONLY) + || !au_br_writable(br->br_perm)) + ? -EROFS : 0; +} + +static inline int au_br_hnotifyable(int brperm __maybe_unused) +{ +#ifdef CONFIG_AUFS_HNOTIFY + return !(brperm & AuBrPerm_RR); +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* branch.c */ +struct au_sbinfo; +void au_br_free(struct au_sbinfo *sinfo); +int au_br_index(struct super_block *sb, aufs_bindex_t br_id); +struct au_opt_add; +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); +struct au_opt_del; +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); +long au_ibusy_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); +#endif +struct au_opt_mod; +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh); + +/* xino.c */ +static const loff_t au_loff_max = LLONG_MAX; + +int au_xib_trunc(struct super_block *sb); +ssize_t xino_fread(au_readf_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +ssize_t xino_fwrite(au_writef_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +struct file *au_xino_create2(struct file *base_file, struct file *copy_src); +struct file *au_xino_create(struct super_block *sb, char *fname, int silent); +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct file *base_file, int do_test); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex); + +struct au_opt_xino; +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount); +void au_xino_clr(struct super_block *sb); +struct file *au_xino_def(struct super_block *sb); +int au_xino_path(struct seq_file *seq, struct file *file); + +/* ---------------------------------------------------------------------- */ + +/* Superblock to branch */ +static inline +aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_id; +} + +static inline +struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_mnt; +} + +static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr_mnt(sb, bindex)->mnt_sb; +} + +static inline void au_sbr_put(struct super_block *sb, aufs_bindex_t bindex) +{ + atomic_dec(&au_sbr(sb, bindex)->br_count); +} + +static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_perm; +} + +static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_whable(au_sbr_perm(sb, bindex)); +} + +/* ---------------------------------------------------------------------- */ + +/* + * wbr_wh_read_lock, wbr_wh_write_lock + * wbr_wh_read_unlock, wbr_wh_write_unlock, wbr_wh_downgrade_lock + */ +AuSimpleRwsemFuncs(wbr_wh, struct au_wbr *wbr, &wbr->wbr_wh_rwsem); + +#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&wbr->wbr_wh_rwsem) +#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&wbr->wbr_wh_rwsem) +#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&wbr->wbr_wh_rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/hfsnotify.c +++ linux-3.5.0/ubuntu/aufs/hfsnotify.c @@ -0,0 +1,257 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * fsnotify for the lower directories + */ + +#include "aufs.h" + +/* FS_IN_IGNORED is unnecessary */ +static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE + | FS_CREATE | FS_EVENT_ON_CHILD); +static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); +static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); + +static void au_hfsn_free_mark(struct fsnotify_mark *mark) +{ + struct au_hnotify *hn = container_of(mark, struct au_hnotify, + hn_mark); + AuDbg("here\n"); + au_cache_free_hnotify(hn); + smp_mb__before_atomic_dec(); + atomic64_dec(&au_hfsn_ifree); + wake_up(&au_hfsn_wq); +} + +static int au_hfsn_alloc(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + struct super_block *sb; + struct au_branch *br; + struct fsnotify_mark *mark; + aufs_bindex_t bindex; + + hn = hinode->hi_notify; + sb = hn->hn_aufs_inode->i_sb; + bindex = au_br_index(sb, hinode->hi_id); + br = au_sbr(sb, bindex); + mark = &hn->hn_mark; + fsnotify_init_mark(mark, au_hfsn_free_mark); + mark->mask = AuHfsnMask; + /* + * by udba rename or rmdir, aufs assign a new inode to the known + * h_inode, so specify 1 to allow dups. + */ + return fsnotify_add_mark(mark, br->br_hfsn_group, hinode->hi_inode, + /*mnt*/NULL, /*allow_dups*/1); +} + +static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) +{ + struct fsnotify_mark *mark; + unsigned long long ull; + + ull = atomic64_inc_return(&au_hfsn_ifree); + BUG_ON(!ull); + + mark = &hn->hn_mark; + fsnotify_destroy_mark(mark); + fsnotify_put_mark(mark); + + /* free hn by myself */ + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) +{ + struct fsnotify_mark *mark; + + mark = &hinode->hi_notify->hn_mark; + spin_lock(&mark->lock); + if (do_set) { + AuDebugOn(mark->mask & AuHfsnMask); + mark->mask |= AuHfsnMask; + } else { + AuDebugOn(!(mark->mask & AuHfsnMask)); + mark->mask &= ~AuHfsnMask; + } + spin_unlock(&mark->lock); + /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ +} + +/* ---------------------------------------------------------------------- */ + +/* #define AuDbgHnotify */ +#ifdef AuDbgHnotify +static char *au_hfsn_name(u32 mask) +{ +#ifdef CONFIG_AUFS_DEBUG +#define test_ret(flag) if (mask & flag) \ + return #flag; + test_ret(FS_ACCESS); + test_ret(FS_MODIFY); + test_ret(FS_ATTRIB); + test_ret(FS_CLOSE_WRITE); + test_ret(FS_CLOSE_NOWRITE); + test_ret(FS_OPEN); + test_ret(FS_MOVED_FROM); + test_ret(FS_MOVED_TO); + test_ret(FS_CREATE); + test_ret(FS_DELETE); + test_ret(FS_DELETE_SELF); + test_ret(FS_MOVE_SELF); + test_ret(FS_UNMOUNT); + test_ret(FS_Q_OVERFLOW); + test_ret(FS_IN_IGNORED); + test_ret(FS_IN_ISDIR); + test_ret(FS_IN_ONESHOT); + test_ret(FS_EVENT_ON_CHILD); + return ""; +#undef test_ret +#else + return "??"; +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int au_hfsn_handle_event(struct fsnotify_group *group, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + struct fsnotify_event *event) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + __u32 mask; + struct qstr h_child_qstr = QSTR_INIT(event->file_name, event->name_len); + + AuDebugOn(event->data_type != FSNOTIFY_EVENT_INODE); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ + mask = event->mask; + AuDebugOn(mask & FS_UNMOUNT); + if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) + goto out; + + h_dir = event->to_tell; + h_inode = event->inode; +#ifdef AuDbgHnotify + au_debug(1); + if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 + || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), + AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug(0); +#endif + + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, &h_child_qstr, h_inode); + +out: + return err; +} + +/* isn't it waste to ask every registered 'group'? */ +/* copied from linux/fs/notify/inotify/inotify_fsnotiry.c */ +/* it should be exported to modules */ +static bool au_hfsn_should_send_event(struct fsnotify_group *group, + struct inode *h_inode, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + __u32 mask, void *data, int data_type) +{ + mask = (mask & ~FS_EVENT_ON_CHILD); + return inode_mark->mask & mask; +} + +static struct fsnotify_ops au_hfsn_ops = { + .should_send_event = au_hfsn_should_send_event, + .handle_event = au_hfsn_handle_event +}; + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin_br(struct au_branch *br) +{ + if (br->br_hfsn_group) + fsnotify_put_group(br->br_hfsn_group); +} + +static int au_hfsn_init_br(struct au_branch *br, int perm) +{ + br->br_hfsn_group = NULL; + br->br_hfsn_ops = au_hfsn_ops; + return 0; +} + +static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (udba != AuOpt_UDBA_HNOTIFY + || !au_br_hnotifyable(perm)) { + au_hfsn_fin_br(br); + br->br_hfsn_group = NULL; + goto out; + } + + if (br->br_hfsn_group) + goto out; + + br->br_hfsn_group = fsnotify_alloc_group(&br->br_hfsn_ops); + if (IS_ERR(br->br_hfsn_group)) { + err = PTR_ERR(br->br_hfsn_group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); + br->br_hfsn_group = NULL; + } + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin(void) +{ + AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); + wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); +} + +const struct au_hnotify_op au_hnotify_op = { + .ctl = au_hfsn_ctl, + .alloc = au_hfsn_alloc, + .free = au_hfsn_free, + + .fin = au_hfsn_fin, + + .reset_br = au_hfsn_reset_br, + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; --- linux-3.5.0.orig/ubuntu/aufs/debug.h +++ linux-3.5.0/ubuntu/aufs/debug.h @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debug print functions + */ + +#ifndef __AUFS_DEBUG_H__ +#define __AUFS_DEBUG_H__ + +#ifdef __KERNEL__ + +#include +#include +#include + +#ifdef CONFIG_AUFS_DEBUG +#define AuDebugOn(a) BUG_ON(a) + +/* module parameter */ +extern int aufs_debug; +static inline void au_debug(int n) +{ + aufs_debug = n; + smp_mb(); +} + +static inline int au_debug_test(void) +{ + return aufs_debug; +} +#else +#define AuDebugOn(a) do {} while (0) +AuStubVoid(au_debug, int n) +AuStubInt0(au_debug_test, void) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +/* debug print */ + +#define AuDbg(fmt, ...) do { \ + if (au_debug_test()) \ + pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ +} while (0) +#define AuLabel(l) AuDbg(#l "\n") +#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) +#define AuWarn1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_warn(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_err(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuIOErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + AuIOErr(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuUnsupportMsg "This operation is not supported." \ + " Please report this application to aufs-users ML." +#define AuUnsupport(fmt, ...) do { \ + pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ + dump_stack(); \ +} while (0) + +#define AuTraceErr(e) do { \ + if (unlikely((e) < 0)) \ + AuDbg("err %d\n", (int)(e)); \ +} while (0) + +#define AuTraceErrPtr(p) do { \ + if (IS_ERR(p)) \ + AuDbg("err %ld\n", PTR_ERR(p)); \ +} while (0) + +/* dirty macros for debug print, use with "%.*s" and caution */ +#define AuLNPair(qstr) (qstr)->len, (qstr)->name +#define AuDLNPair(d) AuLNPair(&(d)->d_name) + +/* ---------------------------------------------------------------------- */ + +struct au_sbinfo; +struct au_finfo; +struct dentry; +#ifdef CONFIG_AUFS_DEBUG +extern char *au_plevel; +struct au_nhash; +void au_dpri_whlist(struct au_nhash *whlist); +struct au_vdir; +void au_dpri_vdir(struct au_vdir *vdir); +struct inode; +void au_dpri_inode(struct inode *inode); +void au_dpri_dalias(struct inode *inode); +void au_dpri_dentry(struct dentry *dentry); +struct file; +void au_dpri_file(struct file *filp); +struct super_block; +void au_dpri_sb(struct super_block *sb); + +void au_dbg_sleep_jiffy(int jiffy); +struct iattr; +void au_dbg_iattr(struct iattr *ia); + +#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); +void au_dbg_verify_dir_parent(struct dentry *dentry, unsigned int sigen); +void au_dbg_verify_nondir_parent(struct dentry *dentry, unsigned int sigen); +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); +void au_dbg_verify_kthread(void); + +int __init au_debug_init(void); +void au_debug_sbinfo_init(struct au_sbinfo *sbinfo); +#define AuDbgWhlist(w) do { \ + AuDbg(#w "\n"); \ + au_dpri_whlist(w); \ +} while (0) + +#define AuDbgVdir(v) do { \ + AuDbg(#v "\n"); \ + au_dpri_vdir(v); \ +} while (0) + +#define AuDbgInode(i) do { \ + AuDbg(#i "\n"); \ + au_dpri_inode(i); \ +} while (0) + +#define AuDbgDAlias(i) do { \ + AuDbg(#i "\n"); \ + au_dpri_dalias(i); \ +} while (0) + +#define AuDbgDentry(d) do { \ + AuDbg(#d "\n"); \ + au_dpri_dentry(d); \ +} while (0) + +#define AuDbgFile(f) do { \ + AuDbg(#f "\n"); \ + au_dpri_file(f); \ +} while (0) + +#define AuDbgSb(sb) do { \ + AuDbg(#sb "\n"); \ + au_dpri_sb(sb); \ +} while (0) + +#define AuDbgSleep(sec) do { \ + AuDbg("sleep %d sec\n", sec); \ + ssleep(sec); \ +} while (0) + +#define AuDbgSleepJiffy(jiffy) do { \ + AuDbg("sleep %d jiffies\n", jiffy); \ + au_dbg_sleep_jiffy(jiffy); \ +} while (0) + +#define AuDbgIAttr(ia) do { \ + AuDbg("ia_valid 0x%x\n", (ia)->ia_valid); \ + au_dbg_iattr(ia); \ +} while (0) + +#define AuDbgSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuDbg("%s\n", sym); \ +} while (0) + +#define AuInfoSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuInfo("%s\n", sym); \ +} while (0) +#else +AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) +AuStubVoid(au_dbg_verify_dir_parent, struct dentry *dentry, unsigned int sigen) +AuStubVoid(au_dbg_verify_nondir_parent, struct dentry *dentry, + unsigned int sigen) +AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) +AuStubVoid(au_dbg_verify_kthread, void) +AuStubInt0(__init au_debug_init, void) +AuStubVoid(au_debug_sbinfo_init, struct au_sbinfo *sbinfo) + +#define AuDbgWhlist(w) do {} while (0) +#define AuDbgVdir(v) do {} while (0) +#define AuDbgInode(i) do {} while (0) +#define AuDbgDAlias(i) do {} while (0) +#define AuDbgDentry(d) do {} while (0) +#define AuDbgFile(f) do {} while (0) +#define AuDbgSb(sb) do {} while (0) +#define AuDbgSleep(sec) do {} while (0) +#define AuDbgSleepJiffy(jiffy) do {} while (0) +#define AuDbgIAttr(ia) do {} while (0) +#define AuDbgSym(addr) do {} while (0) +#define AuInfoSym(addr) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +int __init au_sysrq_init(void); +void au_sysrq_fin(void); + +#ifdef CONFIG_HW_CONSOLE +#define au_dbg_blocked() do { \ + WARN_ON(1); \ + handle_sysrq('w'); \ +} while (0) +#else +AuStubVoid(au_dbg_blocked, void) +#endif + +#else +AuStubInt0(__init au_sysrq_init, void) +AuStubVoid(au_sysrq_fin, void) +AuStubVoid(au_dbg_blocked, void) +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/Makefile +++ linux-3.5.0/ubuntu/aufs/Makefile @@ -0,0 +1,42 @@ + +include ${src}/magic.mk +ifeq (${CONFIG_AUFS_FS},m) +include ${src}/conf.mk +endif +-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname +ifdef M +ccflags-y += -include ${M}/../../ubuntu/include/linux/aufs_type.h +else +ccflags-y += -include ${srctree}/ubuntu/include/linux/aufs_type.h +endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ + wkq.o vfsub.o dcsub.o \ + cpup.o whout.o wbr_policy.o \ + dinfo.o dentry.o \ + dynop.o \ + finfo.o file.o f_op.o \ + dir.o vdir.o \ + iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ + ioctl.o + +# all are boolean +aufs-$(CONFIG_PROC_FS) += procfs.o plink.o +aufs-$(CONFIG_SYSFS) += sysfs.o +aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o +aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o +aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o +aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o +aufs-$(CONFIG_AUFS_EXPORT) += export.o +aufs-$(CONFIG_AUFS_POLL) += poll.o +aufs-$(CONFIG_AUFS_RDU) += rdu.o +aufs-$(CONFIG_AUFS_SP_IATTR) += f_op_sp.o +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o --- linux-3.5.0.orig/ubuntu/aufs/Kconfig +++ linux-3.5.0/ubuntu/aufs/Kconfig @@ -0,0 +1,203 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" + depends on EXPERIMENTAL + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single + directory. + In the early days, aufs was entirely re-designed and + re-implemented Unionfs Version 1.x series. Introducing many + original ideas, approaches and improvements, it becomes totally + different from Unionfs while keeping the basic features. + +if AUFS_FS +choice + prompt "Maximum number of branches" + default AUFS_BRANCH_MAX_127 + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_127 + bool "127" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_511 + bool "511" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_1023 + bool "1023" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_32767 + bool "32767" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +endchoice + +config AUFS_SBILIST + bool + depends on AUFS_MAGIC_SYSRQ || PROC_FS + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq or /proc, enabled automatically. + +config AUFS_HNOTIFY + bool "Detect direct branch access (bypassing aufs)" + help + If you want to modify files on branches directly, eg. bypassing aufs, + and want aufs to detect the changes of them fully, then enable this + option and use 'udba=notify' mount option. + Currently there is only one available configuration, "fsnotify". + It will have a negative impact to the performance. + See detail in aufs.5. + +choice + prompt "method" if AUFS_HNOTIFY + default AUFS_HFSNOTIFY +config AUFS_HFSNOTIFY + bool "fsnotify" + select FSNOTIFY +endchoice + +config AUFS_EXPORT + bool "NFS-exportable aufs" + depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. + See detail in aufs.5. + +config AUFS_INO_T_64 + bool + depends on AUFS_EXPORT + depends on 64BIT && !(ALPHA || S390) + default y + help + Automatic configuration for internal use. + /* typedef unsigned long/int __kernel_ino_t */ + /* alpha and s390x are int */ + +config AUFS_RDU + bool "Readdir in userspace" + help + Aufs has two methods to provide a merged view for a directory, + by a user-space library and by kernel-space natively. The latter + is always enabled but sometimes large and slow. + If you enable this option, install the library in aufs2-util + package, and set some environment variables for your readdir(3), + then the work will be handled in user-space which generally + shows better performance in most cases. + See detail in aufs.5. + +config AUFS_PROC_MAP + bool "support for /proc/maps and lsof(1)" + depends on PROC_FS + help + When you issue mmap(2) in aufs, it is actually a direct mmap(2) + call to the file on the branch fs since the file in aufs is + purely virtual. And the file path printed in /proc/maps (and + others) will be the path on the branch fs. In most cases, it + does no harm. But some utilities like lsof(1) may confuse since + the utility or user may expect the file path in aufs to be + printed. + To address this issue, aufs provides a patch which introduces a + new member called vm_prfile into struct vm_are_struct. The patch + is meaningless without enabling this configuration since nobody + sets the new vm_prfile member. + If you don't apply the patch, then enabling this configuration + will cause a compile error. + This approach is fragile since if someone else make some changes + around vm_file, then vm_prfile may not work anymore. As a + workaround such case, aufs provides this configuration. If you + disable it, then lsof(1) may produce incorrect result but the + problem will be gone even if the aufs patch is applied (I hope). + +config AUFS_SP_IATTR + bool "Respect the attributes (mtime/ctime mainly) of special files" + help + When you write something to a special file, some attributes of it + (mtime/ctime mainly) may be updated. Generally such updates are + less important (actually some device drivers and NFS ignore + it). But some applications (such like test program) requires + such updates. If you need these updates, then enable this + configuration which introduces some overhead. + Currently this configuration handles FIFO only. + +config AUFS_SHWH + bool "Show whiteouts" + help + If you want to make the whiteouts in aufs visible, then enable + this option and specify 'shwh' mount option. Although it may + sounds like philosophy or something, but in technically it + simply shows the name of whiteout with keeping its behaviour. + +config AUFS_BR_RAMFS + bool "Ramfs (initramfs/rootfs) as an aufs branch" + help + If you want to use ramfs as an aufs branch fs, then enable this + option. Generally tmpfs is recommended. + Aufs prohibited them to be a branch fs by default, because + initramfs becomes unusable after switch_root or something + generally. If you sets initramfs as an aufs branch and boot your + system by switch_root, you will meet a problem easily since the + files in initramfs may be inaccessible. + Unless you are going to use ramfs as an aufs branch fs without + switch_root or something, leave it N. + +config AUFS_BR_FUSE + bool "Fuse fs as an aufs branch" + depends on FUSE_FS + select AUFS_POLL + help + If you want to use fuse-based userspace filesystem as an aufs + branch fs, then enable this option. + It implements the internal poll(2) operation which is + implemented by fuse only (curretnly). + +config AUFS_POLL + bool + help + Automatic configuration for internal use. + +config AUFS_BR_HFSPLUS + bool "Hfsplus as an aufs branch" + depends on HFSPLUS_FS + default y + help + If you want to use hfsplus fs as an aufs branch fs, then enable + this option. This option introduces a small overhead at + copying-up a file on hfsplus. + +config AUFS_BDEV_LOOP + bool + depends on BLK_DEV_LOOP + default y + help + Automatic configuration for internal use. + Convert =[ym] into =y. + +config AUFS_DEBUG + bool "Debug aufs" + help + Enable this to compile aufs internal debug code. + It will have a negative impact to the performance. + +config AUFS_MAGIC_SYSRQ + bool + depends on AUFS_DEBUG && MAGIC_SYSRQ + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif --- linux-3.5.0.orig/ubuntu/aufs/poll.c +++ linux-3.5.0/ubuntu/aufs/poll.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * poll operation + * There is only one filesystem which implements ->poll operation, currently. + */ + +#include "aufs.h" + +unsigned int aufs_poll(struct file *file, poll_table *wait) +{ + unsigned int mask; + int err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = POLLERR /* | POLLIN | POLLOUT */; + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + /* it is not an error if h_file has no operation */ + mask = DEFAULT_POLLMASK; + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->poll) + mask = h_file->f_op->poll(h_file, wait); + + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + +out: + si_read_unlock(sb); + AuTraceErr((int)mask); + return mask; +} --- linux-3.5.0.orig/ubuntu/aufs/procfs.c +++ linux-3.5.0/ubuntu/aufs/procfs.c @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * procfs interfaces + */ + +#include +#include "aufs.h" + +static int au_procfs_plm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) { + au_plink_maint_leave(sbinfo); + kobject_put(&sbinfo->si_kobj); + } + + return 0; +} + +static void au_procfs_plm_write_clean(struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) + au_plink_clean(sbinfo->si_sb, /*verbose*/0); +} + +static int au_procfs_plm_write_si(struct file *file, unsigned long id) +{ + int err; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + spin_lock(&au_sbilist.spin); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + if (id == sysaufs_si_id(sbinfo)) { + kobject_get(&sbinfo->si_kobj); + sb = sbinfo->si_sb; + break; + } + spin_unlock(&au_sbilist.spin); + + err = -EINVAL; + if (unlikely(!sb)) + goto out; + + err = au_plink_maint_enter(sb); + if (!err) + /* keep kobject_get() */ + file->private_data = sbinfo; + else + kobject_put(&sbinfo->si_kobj); +out: + return err; +} + +/* + * Accept a valid "si=xxxx" only. + * Once it is accepted successfully, accept "clean" too. + */ +static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + unsigned long id; + /* last newline is allowed */ + char buf[3 + sizeof(unsigned long) * 2 + 1]; + + err = -EACCES; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(count > sizeof(buf))) + goto out; + + err = copy_from_user(buf, ubuf, count); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + buf[count] = 0; + + err = -EINVAL; + if (!strcmp("clean", buf)) { + au_procfs_plm_write_clean(file); + goto out_success; + } else if (unlikely(strncmp("si=", buf, 3))) + goto out; + + err = kstrtoul(buf + 3, 16, &id); + if (unlikely(err)) + goto out; + + err = au_procfs_plm_write_si(file, id); + if (unlikely(err)) + goto out; + +out_success: + err = count; /* success */ +out: + return err; +} + +static const struct file_operations au_procfs_plm_fop = { + .write = au_procfs_plm_write, + .release = au_procfs_plm_release, + .owner = THIS_MODULE +}; + +/* ---------------------------------------------------------------------- */ + +static struct proc_dir_entry *au_procfs_dir; + +void au_procfs_fin(void) +{ + remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +} + +int __init au_procfs_init(void) +{ + int err; + struct proc_dir_entry *entry; + + err = -ENOMEM; + au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); + if (unlikely(!au_procfs_dir)) + goto out; + + entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | S_IWUSR, + au_procfs_dir, &au_procfs_plm_fop); + if (unlikely(!entry)) + goto out_dir; + + err = 0; + goto out; /* success */ + + +out_dir: + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/f_op.c +++ linux-3.5.0/ubuntu/aufs/f_op.c @@ -0,0 +1,727 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file and vm operations + */ + +#include +#include +#include +#include "aufs.h" + +int au_do_open_nondir(struct file *file, int flags) +{ + int err; + aufs_bindex_t bindex; + struct file *h_file; + struct dentry *dentry; + struct au_finfo *finfo; + + FiMustWriteLock(file); + + dentry = file->f_dentry; + err = au_d_alive(dentry); + if (unlikely(err)) + goto out; + + finfo = au_fi(file); + memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); + atomic_set(&finfo->fi_mmapped, 0); + bindex = au_dbstart(dentry); + h_file = au_h_open(dentry, bindex, flags, file); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + au_set_fbstart(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + } + +out: + return err; +} + +static int aufs_open_nondir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + + AuDbg("%.*s, f_flags 0x%x, f_mode 0x%x\n", + AuDLNPair(file->f_dentry), vfsub_file_flags(file), + file->f_mode); + + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, au_do_open_nondir, /*fidir*/NULL); + si_read_unlock(sb); + return err; +} + +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) +{ + struct au_finfo *finfo; + aufs_bindex_t bindex; + + finfo = au_fi(file); + bindex = finfo->fi_btop; + if (bindex >= 0) { + /* remove me from sb->s_files */ + file_sb_list_del(file); + au_set_h_fptr(file, bindex, NULL); + } + + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_nondir(struct file *file, fl_owner_t id) +{ + int err; + struct file *h_file; + + err = 0; + h_file = au_hf_top(file); + if (h_file) + err = vfsub_flush(h_file, id); + return err; +} + +static int aufs_flush_nondir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_nondir); +} + +/* ---------------------------------------------------------------------- */ +/* + * read and write functions acquire [fdi]_rwsem once, but release before + * mmap_sem. This is because to stop a race condition between mmap(2). + * Releasing these aufs-rwsem should be safe, no branch-mamagement (by keeping + * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in + * read functions after [fdi]_rwsem are released, but it should be harmless. + */ + +static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, + loff_t *ppos) +{ + ssize_t err; + struct dentry *dentry; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + get_file(h_file); + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + /* filedata may be obsoleted by concurrent copyup, but no problem */ + err = vfsub_read_u(h_file, buf, count, ppos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +/* + * todo: very ugly + * it locks both of i_mutex and si_rwsem for read in safe. + * if the plink maintenance mode continues forever (that is the problem), + * may loop forever. + */ +static void au_mtx_and_read_lock(struct inode *inode) +{ + int err; + struct super_block *sb = inode->i_sb; + + while (1) { + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + mutex_unlock(&inode->i_mutex); + si_read_lock(sb, AuLock_NOPLMW); + si_read_unlock(sb); + } +} + +static ssize_t aufs_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct super_block *sb; + struct inode *inode; + struct file *h_file; + char __user *buf = (char __user *)ubuf; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = vfsub_write_u(h_file, buf, count, ppos); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t au_do_aio(struct file *h_file, int rw, struct kiocb *kio, + const struct iovec *iov, unsigned long nv, loff_t pos) +{ + ssize_t err; + struct file *file; + ssize_t (*func)(struct kiocb *, const struct iovec *, unsigned long, + loff_t); + + err = security_file_permission(h_file, rw); + if (unlikely(err)) + goto out; + + err = -ENOSYS; + func = NULL; + if (rw == MAY_READ) + func = h_file->f_op->aio_read; + else if (rw == MAY_WRITE) + func = h_file->f_op->aio_write; + if (func) { + file = kio->ki_filp; + kio->ki_filp = h_file; + lockdep_off(); + err = func(kio, iov, nv, pos); + lockdep_on(); + kio->ki_filp = file; + } else + /* currently there is no such fs */ + WARN_ON_ONCE(1); + +out: + return err; +} + +static ssize_t aufs_aio_read(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + struct file *file, *h_file; + struct dentry *dentry; + struct super_block *sb; + + file = kio->ki_filp; + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + get_file(h_file); + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + err = au_do_aio(h_file, MAY_READ, kio, iov, nv, pos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t aufs_aio_write(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *file, *h_file; + struct super_block *sb; + + file = kio->ki_filp; + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = au_do_aio(h_file, MAY_WRITE, kio, iov, nv, pos); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + ssize_t err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + err = -EINVAL; + h_file = au_hf_top(file); + get_file(h_file); + if (au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; + smp_mb(); /* unnecessary? */ + } + } + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + err = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessasry? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t +aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = vfsub_splice_from(pipe, h_file, ppos, len, flags); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * The locking order around current->mmap_sem. + * - in most and regular cases + * file I/O syscall -- aufs_read() or something + * -- si_rwsem for read -- mmap_sem + * (Note that [fdi]i_rwsem are released before mmap_sem). + * - in mmap case + * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem + * This AB-BA order is definitly bad, but is not a problem since "si_rwsem for + * read" allows muliple processes to acquire it and [fdi]i_rwsem are not held in + * file I/O. Aufs needs to stop lockdep in aufs_mmap() though. + * It means that when aufs acquires si_rwsem for write, the process should never + * acquire mmap_sem. + * + * Actually aufs_readdir() holds [fdi]i_rwsem before mmap_sem, but this is not a + * problem either since any directory is not able to be mmap-ed. + * The similar scenario is applied to aufs_readlink() too. + */ + +/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ +#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) + +static unsigned long au_arch_prot_conv(unsigned long flags) +{ + /* currently ppc64 only */ +#ifdef CONFIG_PPC64 + /* cf. linux/arch/powerpc/include/asm/mman.h */ + AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); + return AuConv_VM_PROT(flags, SAO); +#else + AuDebugOn(arch_calc_vm_prot_bits(-1)); + return 0; +#endif +} + +static unsigned long au_prot_conv(unsigned long flags) +{ + return AuConv_VM_PROT(flags, READ) + | AuConv_VM_PROT(flags, WRITE) + | AuConv_VM_PROT(flags, EXEC) + | au_arch_prot_conv(flags); +} + +/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ +#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) + +static unsigned long au_flag_conv(unsigned long flags) +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) + | AuConv_VM_MAP(flags, EXECUTABLE) + | AuConv_VM_MAP(flags, LOCKED); +} + +static int aufs_mmap(struct file *file, struct vm_area_struct *vma) +{ + int err; + aufs_bindex_t bstart; + const unsigned char wlock + = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); + struct dentry *dentry; + struct super_block *sb; + struct file *h_file; + struct au_branch *br; + struct au_pin pin; + + AuDbgVmRegion(file, vma); + + dentry = file->f_dentry; + sb = dentry->d_sb; + lockdep_off(); + si_read_lock(sb, AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + if (wlock) { + err = au_ready_to_write(file, -1, &pin); + di_write_unlock(dentry); + if (unlikely(err)) { + fi_write_unlock(file); + goto out; + } + au_unpin(&pin); + } else + di_write_unlock(dentry); + + bstart = au_fbstart(file); + br = au_sbr(sb, bstart); + h_file = au_hf_top(file); + get_file(h_file); + au_set_mmapped(file); + fi_write_unlock(file); + lockdep_on(); + + au_vm_file_reset(vma, h_file); + err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), + au_flag_conv(vma->vm_flags)); + if (!err) + err = h_file->f_op->mmap(h_file, vma); + if (unlikely(err)) + goto out_reset; + + au_vm_prfile_set(vma, file); + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(file->f_dentry->d_inode, + h_file->f_dentry->d_inode); + goto out_fput; /* success */ + +out_reset: + au_unset_mmapped(file); + au_vm_file_reset(vma, file); +out_fput: + fput(h_file); + lockdep_off(); +out: + si_read_unlock(sb); + lockdep_on(); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + inode = dentry->d_inode; + sb = dentry->d_sb; + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out_si; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out_si; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + au_unpin(&pin); + + err = -EINVAL; + h_file = au_hf_top(file); + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + au_cpup_attr_timesizes(inode); + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out_si: + si_read_unlock(sb); +out: + mutex_unlock(&inode->i_mutex); + return err; +} + +/* no one supports this operation, currently */ +#if 0 +static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) +{ + int err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *file, *h_file; + + file = kio->ki_filp; + dentry = file->f_dentry; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + au_unpin(&pin); + + err = -ENOSYS; + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->aio_fsync) { + struct dentry *h_d; + struct mutex *h_mtx; + + h_d = h_file->f_dentry; + h_mtx = &h_d->d_inode->i_mutex; + if (!is_sync_kiocb(kio)) { + get_file(h_file); + fput(file); + } + kio->ki_filp = h_file; + err = h_file->f_op->aio_fsync(kio, datasync); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + if (!err) + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); + /*ignore*/ + au_cpup_attr_timesizes(inode); + mutex_unlock(h_mtx); + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(inode->sb); + mutex_unlock(&inode->i_mutex); + return err; +} +#endif + +static int aufs_fasync(int fd, struct file *file, int flag) +{ + int err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->fasync) + err = h_file->f_op->fasync(fd, h_file, flag); + + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 +static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, + size_t len, loff_t *pos , int more) +{ +} +#endif + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + + .llseek = default_llseek, + + .read = aufs_read, + .write = aufs_write, + .aio_read = aufs_aio_read, + .aio_write = aufs_aio_write, +#ifdef CONFIG_AUFS_POLL + .poll = aufs_poll, +#endif + .unlocked_ioctl = aufs_ioctl_nondir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_ioctl_nondir, /* same */ +#endif + .mmap = aufs_mmap, + .open = aufs_open_nondir, + .flush = aufs_flush_nondir, + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + /* .aio_fsync = aufs_aio_fsync_nondir, */ + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read +#endif +}; --- linux-3.5.0.orig/ubuntu/aufs/export.c +++ linux-3.5.0/ubuntu/aufs/export.c @@ -0,0 +1,810 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * export via nfs + */ + +#include +#include +#include +#include +#include +#include +#include "../fs/mount.h" +#include "aufs.h" + +union conv { +#ifdef CONFIG_AUFS_INO_T_64 + __u32 a[2]; +#else + __u32 a[1]; +#endif + ino_t ino; +}; + +static ino_t decode_ino(__u32 *a) +{ + union conv u; + + BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); + u.a[0] = a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + u.a[1] = a[1]; +#endif + return u.ino; +} + +static void encode_ino(__u32 *a, ino_t ino) +{ + union conv u; + + u.ino = ino; + a[0] = u.a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + a[1] = u.a[1]; +#endif +} + +/* NFS file handle */ +enum { + Fh_br_id, + Fh_sigen, +#ifdef CONFIG_AUFS_INO_T_64 + /* support 64bit inode number */ + Fh_ino1, + Fh_ino2, + Fh_dir_ino1, + Fh_dir_ino2, +#else + Fh_ino1, + Fh_dir_ino1, +#endif + Fh_igen, + Fh_h_type, + Fh_tail, + + Fh_ino = Fh_ino1, + Fh_dir_ino = Fh_dir_ino1 +}; + +static int au_test_anon(struct dentry *dentry) +{ + /* note: read d_flags without d_lock */ + return !!(dentry->d_flags & DCACHE_DISCONNECTED); +} + +/* ---------------------------------------------------------------------- */ +/* inode generation external table */ + +void au_xigen_inc(struct inode *inode) +{ + loff_t pos; + ssize_t sz; + __u32 igen; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + sb = inode->i_sb; + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + + sbinfo = au_sbi(sb); + pos = inode->i_ino; + pos *= sizeof(igen); + igen = inode->i_generation + 1; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xigen, &igen, + sizeof(igen), &pos); + if (sz == sizeof(igen)) + return; /* success */ + + if (unlikely(sz >= 0)) + AuIOErr("xigen error (%zd)\n", sz); +} + +int au_xigen_new(struct inode *inode) +{ + int err; + loff_t pos; + ssize_t sz; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct file *file; + + err = 0; + /* todo: dirty, at mount time */ + if (inode->i_ino == AUFS_ROOT_INO) + goto out; + sb = inode->i_sb; + SiMustAnyLock(sb); + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + goto out; + + err = -EFBIG; + pos = inode->i_ino; + if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { + AuIOErr1("too large i%lld\n", pos); + goto out; + } + pos *= sizeof(inode->i_generation); + + err = 0; + sbinfo = au_sbi(sb); + file = sbinfo->si_xigen; + BUG_ON(!file); + + if (i_size_read(file->f_dentry->d_inode) + < pos + sizeof(inode->i_generation)) { + inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); + sz = xino_fwrite(sbinfo->si_xwrite, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + } else + sz = xino_fread(sbinfo->si_xread, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + if (sz == sizeof(inode->i_generation)) + goto out; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xigen error (%zd)\n", sz); + } + +out: + return err; +} + +int au_xigen_set(struct super_block *sb, struct file *base) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xigen); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + err = 0; + if (sbinfo->si_xigen) + fput(sbinfo->si_xigen); + sbinfo->si_xigen = file; + +out: + return err; +} + +void au_xigen_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xigen) { + fput(sbinfo->si_xigen); + sbinfo->si_xigen = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino) +{ + struct dentry *dentry, *d; + struct inode *inode; + unsigned int sigen; + + dentry = NULL; + inode = ilookup(sb, ino); + if (!inode) + goto out; + + dentry = ERR_PTR(-ESTALE); + sigen = au_sigen(sb); + if (unlikely(is_bad_inode(inode) + || IS_DEADDIR(inode) + || sigen != au_iigen(inode))) + goto out_iput; + + dentry = NULL; + if (!dir_ino || S_ISDIR(inode->i_mode)) + dentry = d_find_alias(inode); + else { + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) { + spin_lock(&d->d_lock); + if (!au_test_anon(d) + && d->d_parent->d_inode->i_ino == dir_ino) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&d->d_lock); + } + spin_unlock(&inode->i_lock); + } + if (unlikely(dentry && au_digen_test(dentry, sigen))) { + /* need to refresh */ + dput(dentry); + dentry = NULL; + } + +out_iput: + iput(inode); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: dirty? */ +/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ + +struct au_compare_mnt_args { + /* input */ + struct super_block *sb; + + /* output */ + struct vfsmount *mnt; +}; + +static int au_compare_mnt(struct vfsmount *mnt, void *arg) +{ + struct au_compare_mnt_args *a = arg; + + if (mnt->mnt_sb != a->sb) + return 0; + a->mnt = mntget(mnt); + return 1; +} + +static struct vfsmount *au_mnt_get(struct super_block *sb) +{ + int err; + struct path root; + struct au_compare_mnt_args args = { + .sb = sb + }; + + get_fs_root(current->fs, &root); + br_read_lock(&vfsmount_lock); + err = iterate_mounts(au_compare_mnt, &args, root.mnt); + br_read_unlock(&vfsmount_lock); + path_put(&root); + AuDebugOn(!err); + AuDebugOn(!args.mnt); + return args.mnt; +} + +struct au_nfsd_si_lock { + unsigned int sigen; + aufs_bindex_t bindex, br_id; + unsigned char force_lock; +}; + +static int si_nfsd_read_lock(struct super_block *sb, + struct au_nfsd_si_lock *nsi_lock) +{ + int err; + aufs_bindex_t bindex; + + si_read_lock(sb, AuLock_FLUSH); + + /* branch id may be wrapped around */ + err = 0; + bindex = au_br_index(sb, nsi_lock->br_id); + if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) + goto out; /* success */ + + err = -ESTALE; + bindex = -1; + if (!nsi_lock->force_lock) + si_read_unlock(sb); + +out: + nsi_lock->bindex = bindex; + return err; +} + +struct find_name_by_ino { + int called, found; + ino_t ino; + char *name; + int namelen; +}; + +static int +find_name_by_ino(void *arg, const char *name, int namelen, loff_t offset, + u64 ino, unsigned int d_type) +{ + struct find_name_by_ino *a = arg; + + a->called++; + if (a->ino != ino) + return 0; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; + return 1; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *parent; + struct file *file; + struct inode *dir; + struct find_name_by_ino arg; + int err; + + parent = path->dentry; + if (nsi_lock) + si_read_unlock(parent->d_sb); + file = vfsub_dentry_open(path, au_dir_roflags); + dentry = (void *)file; + if (IS_ERR(file)) + goto out; + + dentry = ERR_PTR(-ENOMEM); + arg.name = __getname_gfp(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; + arg.found = 0; + do { + arg.called = 0; + /* smp_mb(); */ + err = vfsub_readdir(file, find_name_by_ino, &arg); + } while (!err && !arg.found && arg.called); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; + dentry = ERR_PTR(-ENOENT); + if (!arg.found) + goto out_name; + + /* do not call au_lkup_one() */ + dir = parent->d_inode; + mutex_lock(&dir->i_mutex); + dentry = vfsub_lookup_one_len(arg.name, parent, arg.namelen); + mutex_unlock(&dir->i_mutex); + AuTraceErrPtr(dentry); + if (IS_ERR(dentry)) + goto out_name; + AuDebugOn(au_test_anon(dentry)); + if (unlikely(!dentry->d_inode)) { + dput(dentry); + dentry = ERR_PTR(-ENOENT); + } + +out_name: + __putname(arg.name); +out_file: + fput(file); +out: + if (unlikely(nsi_lock + && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } + AuTraceErrPtr(dentry); + return dentry; +} + +static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry; + struct path path; + + if (dir_ino != AUFS_ROOT_INO) { + path.dentry = decode_by_ino(sb, dir_ino, 0); + dentry = path.dentry; + if (!path.dentry || IS_ERR(path.dentry)) + goto out; + AuDebugOn(au_test_anon(path.dentry)); + } else + path.dentry = dget(sb->s_root); + + path.mnt = au_mnt_get(sb); + dentry = au_lkup_by_ino(&path, ino, nsi_lock); + path_put(&path); + +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static int h_acceptable(void *expv, struct dentry *dentry) +{ + return 1; +} + +static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, + char *buf, int len, struct super_block *sb) +{ + char *p; + int n; + struct path path; + + p = d_path(h_rootpath, buf, len); + if (IS_ERR(p)) + goto out; + n = strlen(p); + + path.mnt = h_rootpath->mnt; + path.dentry = h_parent; + p = d_path(&path, buf, len); + if (IS_ERR(p)) + goto out; + if (n != 1) + p += n; + + path.mnt = au_mnt_get(sb); + path.dentry = sb->s_root; + p = d_path(&path, buf, len - strlen(p)); + mntput(path.mnt); + if (IS_ERR(p)) + goto out; + if (n != 1) + p[strlen(p)] = '/'; + +out: + AuTraceErrPtr(p); + return p; +} + +static +struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, + int fh_len, struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *h_parent, *root; + struct super_block *h_sb; + char *pathname, *p; + struct vfsmount *h_mnt; + struct au_branch *br; + int err; + struct path path; + + br = au_sbr(sb, nsi_lock->bindex); + h_mnt = br->br_mnt; + h_sb = h_mnt->mnt_sb; + /* todo: call lower fh_to_dentry()? fh_to_parent()? */ + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + dentry = h_parent; + if (unlikely(!h_parent || IS_ERR(h_parent))) { + AuWarn1("%s decode_fh failed, %ld\n", + au_sbtype(h_sb), PTR_ERR(h_parent)); + goto out; + } + dentry = NULL; + if (unlikely(au_test_anon(h_parent))) { + AuWarn1("%s decode_fh returned a disconnected dentry\n", + au_sbtype(h_sb)); + goto out_h_parent; + } + + dentry = ERR_PTR(-ENOMEM); + pathname = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!pathname)) + goto out_h_parent; + + root = sb->s_root; + path.mnt = h_mnt; + di_read_lock_parent(root, !AuLock_IR); + path.dentry = au_h_dptr(root, nsi_lock->bindex); + di_read_unlock(root, !AuLock_IR); + p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); + dentry = (void *)p; + if (IS_ERR(p)) + goto out_pathname; + + si_read_unlock(sb); + err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_relock; + + dentry = ERR_PTR(-ENOENT); + AuDebugOn(au_test_anon(path.dentry)); + if (unlikely(!path.dentry->d_inode)) + goto out_path; + + if (ino != path.dentry->d_inode->i_ino) + dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); + else + dentry = dget(path.dentry); + +out_path: + path_put(&path); +out_relock: + if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } +out_pathname: + free_page((unsigned long)pathname); +out_h_parent: + dput(h_parent); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry * +aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, + int fh_type) +{ + struct dentry *dentry; + __u32 *fh = fid->raw; + struct au_branch *br; + ino_t ino, dir_ino; + struct au_nfsd_si_lock nsi_lock = { + .force_lock = 0 + }; + + dentry = ERR_PTR(-ESTALE); + /* it should never happen, but the file handle is unreliable */ + if (unlikely(fh_len < Fh_tail)) + goto out; + nsi_lock.sigen = fh[Fh_sigen]; + nsi_lock.br_id = fh[Fh_br_id]; + + /* branch id may be wrapped around */ + br = NULL; + if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) + goto out; + nsi_lock.force_lock = 1; + + /* is this inode still cached? */ + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) + goto out; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* is the parent dir cached? */ + br = au_sbr(sb, nsi_lock.bindex); + atomic_inc(&br->br_count); + dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* lookup path */ + dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (unlikely(!dentry)) + /* todo?: make it ESTALE */ + goto out_unlock; + +accept: + if (!au_digen_test(dentry, au_sigen(sb)) + && dentry->d_inode->i_generation == fh[Fh_igen]) + goto out_unlock; /* success */ + + dput(dentry); + dentry = ERR_PTR(-ESTALE); +out_unlock: + if (br) + atomic_dec(&br->br_count); + si_read_unlock(sb); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +#if 0 /* reserved for future use */ +/* support subtreecheck option */ +static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, + int fh_len, int fh_type) +{ + struct dentry *parent; + __u32 *fh = fid->raw; + ino_t dir_ino; + + dir_ino = decode_ino(fh + Fh_dir_ino); + parent = decode_by_ino(sb, dir_ino, 0); + if (IS_ERR(parent)) + goto out; + if (!parent) + parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), + dir_ino, fh, fh_len); + +out: + AuTraceErrPtr(parent); + return parent; +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *dir) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct dentry *dentry, *parent, *h_parent; + struct inode *h_dir; + struct au_branch *br; + + err = -ENOSPC; + if (unlikely(*max_len <= Fh_tail)) { + AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); + goto out; + } + + err = FILEID_ROOT; + if (inode->i_ino == AUFS_ROOT_INO) { + AuDebugOn(inode->i_ino != AUFS_ROOT_INO); + goto out; + } + + h_parent = NULL; + sb = inode->i_sb; + err = si_read_lock(sb, AuLock_FLUSH); + if (unlikely(err)) + goto out; + +#ifdef CONFIG_AUFS_DEBUG + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + AuWarn1("NFS-exporting requires xino\n"); +#endif + err = -EIO; + parent = NULL; + ii_read_lock_child(inode); + bindex = au_ibstart(inode); + if (!dir) { + dentry = d_find_alias(inode); + if (unlikely(!dentry)) + goto out_unlock; + AuDebugOn(au_test_anon(dentry)); + parent = dget_parent(dentry); + dput(dentry); + if (unlikely(!parent)) + goto out_unlock; + dir = parent->d_inode; + } + + ii_read_lock_parent(dir); + h_dir = au_h_iptr(dir, bindex); + ii_read_unlock(dir); + if (unlikely(!h_dir)) + goto out_parent; + h_parent = d_find_alias(h_dir); + if (unlikely(!h_parent)) + goto out_hparent; + + err = -EPERM; + br = au_sbr(sb, bindex); + h_sb = br->br_mnt->mnt_sb; + if (unlikely(!h_sb->s_export_op)) { + AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); + goto out_hparent; + } + + fh[Fh_br_id] = br->br_id; + fh[Fh_sigen] = au_sigen(sb); + encode_ino(fh + Fh_ino, inode->i_ino); + encode_ino(fh + Fh_dir_ino, dir->i_ino); + fh[Fh_igen] = inode->i_generation; + + *max_len -= Fh_tail; + fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), + max_len, + /*connectable or subtreecheck*/0); + err = fh[Fh_h_type]; + *max_len += Fh_tail; + /* todo: macros? */ + if (err != 255) + err = 99; + else + AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); + +out_hparent: + dput(h_parent); +out_parent: + dput(parent); +out_unlock: + ii_read_unlock(inode); + si_read_unlock(sb); +out: + if (unlikely(err < 0)) + err = 255; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_commit_metadata(struct inode *inode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + int (*f)(struct inode *inode); + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + ii_write_lock_child(inode); + bindex = au_ibstart(inode); + AuDebugOn(bindex < 0); + h_inode = au_h_iptr(inode, bindex); + + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); + else { + struct writeback_control wbc = { + .sync_mode = WB_SYNC_ALL, + .nr_to_write = 0 /* metadata only */ + }; + + err = sync_inode(h_inode, &wbc); + } + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct export_operations aufs_export_op = { + .fh_to_dentry = aufs_fh_to_dentry, + /* .fh_to_parent = aufs_fh_to_parent, */ + .encode_fh = aufs_encode_fh, + .commit_metadata = aufs_commit_metadata +}; + +void au_export_init(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + __u32 u; + + sb->s_export_op = &aufs_export_op; + sbinfo = au_sbi(sb); + sbinfo->si_xigen = NULL; + get_random_bytes(&u, sizeof(u)); + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} --- linux-3.5.0.orig/ubuntu/aufs/conf.mk +++ linux-3.5.0/ubuntu/aufs/conf.mk @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} + +define AuConf +ifdef ${1} +AuConfStr += ${1}=${${1}} +endif +endef + +AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ + SBILIST \ + HNOTIFY HFSNOTIFY \ + EXPORT INO_T_64 \ + RDU \ + PROC_MAP \ + SP_IATTR \ + SHWH \ + BR_RAMFS \ + BR_FUSE POLL \ + BR_HFSPLUS \ + BDEV_LOOP \ + DEBUG MAGIC_SYSRQ +$(foreach i, ${AuConfAll}, \ + $(eval $(call AuConf,CONFIG_AUFS_${i}))) + +AuConfName = ${obj}/conf.str +${AuConfName}.tmp: FORCE + @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ +${AuConfName}: ${AuConfName}.tmp + @diff -q $< $@ > /dev/null 2>&1 || { \ + echo ' GEN ' $@; \ + cp -p $< $@; \ + } +FORCE: +clean-files += ${AuConfName} ${AuConfName}.tmp +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk --- linux-3.5.0.orig/ubuntu/aufs/loop.h +++ linux-3.5.0/ubuntu/aufs/loop.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * support for loopback mount as a branch + */ + +#ifndef __AUFS_LOOP_H__ +#define __AUFS_LOOP_H__ + +#ifdef __KERNEL__ + +struct dentry; +struct super_block; + +#ifdef CONFIG_AUFS_BDEV_LOOP +/* loop.c */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); +int au_test_loopback_kthread(void); +void au_warn_loopback(struct super_block *h_sb); + +int au_loopback_init(void); +void au_loopback_fin(void); +#else +AuStubInt0(au_test_loopback_overlap, struct super_block *sb, + struct dentry *h_adding) +AuStubInt0(au_test_loopback_kthread, void) +AuStubVoid(au_warn_loopback, struct super_block *h_sb) + +AuStubInt0(au_loopback_init, void) +AuStubVoid(au_loopback_fin, void) +#endif /* BLK_DEV_LOOP */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/hnotify.c +++ linux-3.5.0/ubuntu/aufs/hnotify.c @@ -0,0 +1,712 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * abstraction to notify the direct changes on lower directories + */ + +#include "aufs.h" + +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) +{ + int err; + struct au_hnotify *hn; + + err = -ENOMEM; + hn = au_cache_alloc_hnotify(); + if (hn) { + hn->hn_aufs_inode = inode; + hinode->hi_notify = hn; + err = au_hnotify_op.alloc(hinode); + AuTraceErr(err); + if (unlikely(err)) { + hinode->hi_notify = NULL; + au_cache_free_hnotify(hn); + /* + * The upper dir was removed by udba, but the same named + * dir left. In this case, aufs assignes a new inode + * number and set the monitor again. + * For the lower dir, the old monitnor is still left. + */ + if (err == -EEXIST) + err = 0; + } + } + + AuTraceErr(err); + return err; +} + +void au_hn_free(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + + hn = hinode->hi_notify; + if (hn) { + hinode->hi_notify = NULL; + if (au_hnotify_op.free(hinode, hn)) + au_cache_free_hnotify(hn); + } +} + +/* ---------------------------------------------------------------------- */ + +void au_hn_ctl(struct au_hinode *hinode, int do_set) +{ + if (hinode->hi_notify) + au_hnotify_op.ctl(hinode, do_set); +} + +void au_hn_reset(struct inode *inode, unsigned int flags) +{ + aufs_bindex_t bindex, bend; + struct inode *hi; + struct dentry *iwhdentry; + + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* mutex_lock_nested(&hi->i_mutex, AuLsc_I_CHILD); */ + iwhdentry = au_hi_wh(inode, bindex); + if (iwhdentry) + dget(iwhdentry); + au_igrab(hi); + au_set_h_iptr(inode, bindex, NULL, 0); + au_set_h_iptr(inode, bindex, au_igrab(hi), + flags & ~AuHi_XINO); + iput(hi); + dput(iwhdentry); + /* mutex_unlock(&hi->i_mutex); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bend, bfound, bstart; + struct inode *h_i; + + err = 0; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + goto out; + } + + bfound = -1; + bend = au_ibend(inode); + bstart = au_ibstart(inode); +#if 0 /* reserved for future use */ + if (bindex == bend) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = bstart; bindex <= bend; bindex++) { + h_i = au_h_iptr(inode, bindex); + if (!h_i) + continue; + + err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + /* bad action? */ + } + + /* children inode number will be broken */ + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_tree(struct dentry *dentry) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, dentry, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + struct dentry *d; + + d = dentries[j]; + if (IS_ROOT(d)) + continue; + + au_digen_dec(d); + if (d->d_inode) + /* todo: reset children xino? + cached children only? */ + au_iigen_dec(d->d_inode); + } + } + +out_dpages: + au_dpages_free(&dpages); + +#if 0 + /* discard children */ + dentry_unhash(dentry); + dput(dentry); +#endif +out: + return err; +} + +/* + * return 0 if processed. + */ +static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, + const unsigned int isdir) +{ + int err; + struct dentry *d; + struct qstr *dname; + + err = 1; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + err = 0; + goto out; + } + + if (!isdir) { + AuDebugOn(!name); + au_iigen_dec(inode); + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) { + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len != nlen + && memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + continue; + } + err = 0; + au_digen_dec(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&inode->i_lock); + } else { + au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); + d = d_find_alias(inode); + if (!d) { + au_iigen_dec(inode); + goto out; + } + + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + err = hn_gen_tree(d); + spin_lock(&d->d_lock); + } + spin_unlock(&d->d_lock); + dput(d); + } + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) +{ + int err; + struct inode *inode; + + inode = dentry->d_inode; + if (IS_ROOT(dentry) + /* || (inode && inode->i_ino == AUFS_ROOT_INO) */ + ) { + pr_warn("branch root dir was changed\n"); + return 0; + } + + err = 0; + if (!isdir) { + au_digen_dec(dentry); + if (inode) + au_iigen_dec(inode); + } else { + au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); + if (inode) + err = hn_gen_tree(dentry); + } + + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* hnotify job flags */ +#define AuHnJob_XINO0 1 +#define AuHnJob_GEN (1 << 1) +#define AuHnJob_DIRENT (1 << 2) +#define AuHnJob_ISDIR (1 << 3) +#define AuHnJob_TRYXINO0 (1 << 4) +#define AuHnJob_MNTPNT (1 << 5) +#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) +#define au_fset_hnjob(flags, name) \ + do { (flags) |= AuHnJob_##name; } while (0) +#define au_fclr_hnjob(flags, name) \ + do { (flags) &= ~AuHnJob_##name; } while (0) + +enum { + AuHn_CHILD, + AuHn_PARENT, + AuHnLast +}; + +struct au_hnotify_args { + struct inode *h_dir, *dir, *h_child_inode; + u32 mask; + unsigned int flags[AuHnLast]; + unsigned int h_child_nlen; + char h_child_name[]; +}; + +struct hn_job_args { + unsigned int flags; + struct inode *inode, *h_inode, *dir, *h_dir; + struct dentry *dentry; + char *h_name; + int h_nlen; +}; + +static int hn_job(struct hn_job_args *a) +{ + const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); + + /* reset xino */ + if (au_ftest_hnjob(a->flags, XINO0) && a->inode) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + + if (au_ftest_hnjob(a->flags, TRYXINO0) + && a->inode + && a->h_inode) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + if (!a->h_inode->i_nlink) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + mutex_unlock(&a->h_inode->i_mutex); + } + + /* make the generation obsolete */ + if (au_ftest_hnjob(a->flags, GEN)) { + int err = -1; + if (a->inode) + err = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, + isdir); + if (err && a->dentry) + hn_gen_by_name(a->dentry, isdir); + /* ignore this error */ + } + + /* make dir entries obsolete */ + if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { + struct au_vdir *vdir; + + vdir = au_ivdir(a->inode); + if (vdir) + vdir->vd_jiffy = 0; + /* IMustLock(a->inode); */ + /* a->inode->i_version++; */ + } + + /* can do nothing but warn */ + if (au_ftest_hnjob(a->flags, MNTPNT) + && a->dentry + && d_mountpoint(a->dentry)) + pr_warn("mount-point %.*s is removed or renamed\n", + AuDLNPair(a->dentry)); + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, + struct inode *dir) +{ + struct dentry *dentry, *d, *parent; + struct qstr *dname; + + parent = d_find_alias(dir); + if (!parent) + return NULL; + + dentry = NULL; + spin_lock(&parent->d_lock); + list_for_each_entry(d, &parent->d_subdirs, d_u.d_child) { + /* AuDbg("%.*s\n", AuDLNPair(d)); */ + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + dname = &d->d_name; + if (dname->len != nlen || memcmp(dname->name, name, nlen)) + goto cont_unlock; + if (au_di(d)) + au_digen_dec(d); + else + goto cont_unlock; + if (d->d_count) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + + cont_unlock: + spin_unlock(&d->d_lock); + } + spin_unlock(&parent->d_lock); + dput(parent); + + if (dentry) + di_write_lock_child(dentry); + + return dentry; +} + +static struct inode *lookup_wlock_by_ino(struct super_block *sb, + aufs_bindex_t bindex, ino_t h_ino) +{ + struct inode *inode; + ino_t ino; + int err; + + inode = NULL; + err = au_xino_read(sb, bindex, h_ino, &ino); + if (!err && ino) + inode = ilookup(sb, ino); + if (!inode) + goto out; + + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("wrong root branch\n"); + iput(inode); + inode = NULL; + goto out; + } + + ii_write_lock_child(inode); + +out: + return inode; +} + +static void au_hn_bh(void *_args) +{ + struct au_hnotify_args *a = _args; + struct super_block *sb; + aufs_bindex_t bindex, bend, bfound; + unsigned char xino, try_iput; + int err; + struct inode *inode; + ino_t h_ino; + struct hn_job_args args; + struct dentry *dentry; + struct au_sbinfo *sbinfo; + + AuDebugOn(!_args); + AuDebugOn(!a->h_dir); + AuDebugOn(!a->dir); + AuDebugOn(!a->mask); + AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", + a->mask, a->dir->i_ino, a->h_dir->i_ino, + a->h_child_inode ? a->h_child_inode->i_ino : 0); + + inode = NULL; + dentry = NULL; + /* + * do not lock a->dir->i_mutex here + * because of d_revalidate() may cause a deadlock. + */ + sb = a->dir->i_sb; + AuDebugOn(!sb); + sbinfo = au_sbi(sb); + AuDebugOn(!sbinfo); + si_write_lock(sb, AuLock_NOPLMW); + + ii_read_lock_parent(a->dir); + bfound = -1; + bend = au_ibend(a->dir); + for (bindex = au_ibstart(a->dir); bindex <= bend; bindex++) + if (au_h_iptr(a->dir, bindex) == a->h_dir) { + bfound = bindex; + break; + } + ii_read_unlock(a->dir); + if (unlikely(bfound < 0)) + goto out; + + xino = !!au_opt_test(au_mntflags(sb), XINO); + h_ino = 0; + if (a->h_child_inode) + h_ino = a->h_child_inode->i_ino; + + if (a->h_child_nlen + && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) + || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) + dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, + a->dir); + try_iput = 0; + if (dentry) + inode = dentry->d_inode; + if (xino && !inode && h_ino + && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { + inode = lookup_wlock_by_ino(sb, bfound, h_ino); + try_iput = 1; + } + + args.flags = a->flags[AuHn_CHILD]; + args.dentry = dentry; + args.inode = inode; + args.h_inode = a->h_child_inode; + args.dir = a->dir; + args.h_dir = a->h_dir; + args.h_name = a->h_child_name; + args.h_nlen = a->h_child_nlen; + err = hn_job(&args); + if (dentry) { + if (au_di(dentry)) + di_write_unlock(dentry); + dput(dentry); + } + if (inode && try_iput) { + ii_write_unlock(inode); + iput(inode); + } + + ii_write_lock_parent(a->dir); + args.flags = a->flags[AuHn_PARENT]; + args.dentry = NULL; + args.inode = a->dir; + args.h_inode = a->h_dir; + args.dir = NULL; + args.h_dir = NULL; + args.h_name = NULL; + args.h_nlen = 0; + err = hn_job(&args); + ii_write_unlock(a->dir); + +out: + iput(a->h_child_inode); + iput(a->h_dir); + iput(a->dir); + si_write_unlock(sb); + au_nwt_done(&sbinfo->si_nowait); + kfree(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode) +{ + int err, len; + unsigned int flags[AuHnLast], f; + unsigned char isdir, isroot, wh; + struct inode *dir; + struct au_hnotify_args *args; + char *p, *h_child_name; + + err = 0; + AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); + dir = igrab(hnotify->hn_aufs_inode); + if (!dir) + goto out; + + isroot = (dir->i_ino == AUFS_ROOT_INO); + wh = 0; + h_child_name = (void *)h_child_qstr->name; + len = h_child_qstr->len; + if (h_child_name) { + if (len > AUFS_WH_PFX_LEN + && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + h_child_name += AUFS_WH_PFX_LEN; + len -= AUFS_WH_PFX_LEN; + wh = 1; + } + } + + isdir = 0; + if (h_child_inode) + isdir = !!S_ISDIR(h_child_inode->i_mode); + flags[AuHn_PARENT] = AuHnJob_ISDIR; + flags[AuHn_CHILD] = 0; + if (isdir) + flags[AuHn_CHILD] = AuHnJob_ISDIR; + au_fset_hnjob(flags[AuHn_PARENT], DIRENT); + au_fset_hnjob(flags[AuHn_CHILD], GEN); + switch (mask & FS_EVENTS_POSS_ON_CHILD) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + au_fset_hnjob(flags[AuHn_CHILD], XINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + /*FALLTHROUGH*/ + case FS_CREATE: + AuDebugOn(!h_child_name || !h_child_inode); + break; + + case FS_DELETE: + /* + * aufs never be able to get this child inode. + * revalidation should be in d_revalidate() + * by checking i_nlink, i_generation or d_unhashed(). + */ + AuDebugOn(!h_child_name); + au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + break; + + default: + AuDebugOn(1); + } + + if (wh) + h_child_inode = NULL; + + err = -ENOMEM; + /* iput() and kfree() will be called in au_hnotify() */ + args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + iput(dir); + goto out; + } + args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; + args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; + args->mask = mask; + args->dir = dir; + args->h_dir = igrab(h_dir); + if (h_child_inode) + h_child_inode = igrab(h_child_inode); /* can be NULL */ + args->h_child_inode = h_child_inode; + args->h_child_nlen = len; + if (len) { + p = (void *)args; + p += sizeof(*args); + memcpy(p, h_child_name, len); + p[len] = 0; + } + + f = 0; + if (!dir->i_nlink) + f = AuWkq_NEST; + err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + iput(args->h_child_inode); + iput(args->h_dir); + iput(args->dir); + kfree(args); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + AuDebugOn(!(udba & AuOptMask_UDBA)); + + err = 0; + if (au_hnotify_op.reset_br) + err = au_hnotify_op.reset_br(udba, br, perm); + + return err; +} + +int au_hnotify_init_br(struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (au_hnotify_op.init_br) + err = au_hnotify_op.init_br(br, perm); + + return err; +} + +void au_hnotify_fin_br(struct au_branch *br) +{ + if (au_hnotify_op.fin_br) + au_hnotify_op.fin_br(br); +} + +static void au_hn_destroy_cache(void) +{ + kmem_cache_destroy(au_cachep[AuCache_HNOTIFY]); + au_cachep[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cachep[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cachep[AuCache_HNOTIFY]) { + err = 0; + if (au_hnotify_op.init) + err = au_hnotify_op.init(); + if (unlikely(err)) + au_hn_destroy_cache(); + } + AuTraceErr(err); + return err; +} + +void au_hnotify_fin(void) +{ + if (au_hnotify_op.fin) + au_hnotify_op.fin(); + /* cf. au_cache_fin() */ + if (au_cachep[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} --- linux-3.5.0.orig/ubuntu/aufs/super.c +++ linux-3.5.0/ubuntu/aufs/super.c @@ -0,0 +1,962 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount and super_block operations + */ + +#include +#include +#include +#include +#include +#include +#include "aufs.h" + +/* + * super_operations + */ +static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) +{ + struct au_icntnr *c; + + c = au_cache_alloc_icntnr(); + if (c) { + au_icntnr_init(c); + c->vfs_inode.i_version = 1; /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode_cb(struct rcu_head *head) +{ + struct inode *inode = container_of(head, struct inode, i_rcu); + + INIT_LIST_HEAD(&inode->i_dentry); + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +static void aufs_destroy_inode(struct inode *inode) +{ + au_iinfo_fin(inode); + call_rcu(&inode->i_rcu, aufs_destroy_inode_cb); +} + +struct inode *au_iget_locked(struct super_block *sb, ino_t ino) +{ + struct inode *inode; + int err; + + inode = iget_locked(sb, ino); + if (unlikely(!inode)) { + inode = ERR_PTR(-ENOMEM); + goto out; + } + if (!(inode->i_state & I_NEW)) + goto out; + + err = au_xigen_new(inode); + if (!err) + err = au_iinfo_init(inode); + if (!err) + inode->i_version++; + else { + iget_failed(inode); + inode = ERR_PTR(err); + } + +out: + /* never return NULL */ + AuDebugOn(!inode); + AuTraceErrPtr(inode); + return inode; +} + +/* lock free root dinfo */ +static int au_show_brs(struct seq_file *seq, struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + char *perm; + + err = 0; + bend = au_sbend(sb); + hdp = au_di(sb->s_root)->di_hdentry; + for (bindex = 0; !err && bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + path.mnt = br->br_mnt; + path.dentry = hdp[bindex].hd_dentry; + err = au_seq_path(seq, &path); + if (err > 0) { + perm = au_optstr_br_perm(br->br_perm); + if (perm) { + err = seq_printf(seq, "=%s", perm); + kfree(perm); + if (err == -1) + err = -E2BIG; + } else + err = -ENOMEM; + } + if (!err && bindex != bend) + err = seq_putc(seq, ':'); + } + + return err; +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_printf(m, ",create="); + pat = au_optstr_wbr_create(v); + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_printf(m, pat); + break; + case AuWbrCreate_MFSV: + seq_printf(m, /*pat*/"mfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSV: + seq_printf(m, /*pat*/"pmfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRR: + seq_printf(m, /*pat*/"mfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + seq_printf(m, /*pat*/"mfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + } +} + +static int au_show_xino(struct seq_file *seq, struct super_block *sb) +{ +#ifdef CONFIG_SYSFS + return 0; +#else + int err; + const int len = sizeof(AUFS_XINO_FNAME) - 1; + aufs_bindex_t bindex, brid; + struct qstr *name; + struct file *f; + struct dentry *d, *h_root; + struct au_hdentry *hdp; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + err = 0; + f = au_sbi(sb)->si_xib; + if (!f) + goto out; + + /* stop printing the default xino path on the first writable branch */ + h_root = NULL; + brid = au_xino_brid(sb); + if (brid >= 0) { + bindex = au_br_index(sb, brid); + hdp = au_di(sb->s_root)->di_hdentry; + h_root = hdp[0 + bindex].hd_dentry; + } + d = f->f_dentry; + name = &d->d_name; + /* safe ->d_parent because the file is unlinked */ + if (d->d_parent == h_root + && name->len == len + && !memcmp(name->name, AUFS_XINO_FNAME, len)) + goto out; + + seq_puts(seq, ",xino="); + err = au_xino_path(seq, f); + +out: + return err; +#endif +} + +/* seq_file will re-call me in case of too long string */ +static int aufs_show_options(struct seq_file *m, struct dentry *dentry) +{ + int err; + unsigned int mnt_flags, v; + struct super_block *sb; + struct au_sbinfo *sbinfo; + +#define AuBool(name, str) do { \ + v = au_opt_test(mnt_flags, name); \ + if (v != au_opt_test(AuOpt_Def, name)) \ + seq_printf(m, ",%s" #str, v ? "" : "no"); \ +} while (0) + +#define AuStr(name, str) do { \ + v = mnt_flags & AuOptMask_##name; \ + if (v != (AuOpt_Def & AuOptMask_##name)) \ + seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ +} while (0) + +#define AuUInt(name, str, val) do { \ + if (val != AUFS_##name##_DEF) \ + seq_printf(m, "," #str "=%u", val); \ +} while (0) + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + sbinfo = au_sbi(sb); + seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); + + mnt_flags = au_mntflags(sb); + if (au_opt_test(mnt_flags, XINO)) { + err = au_show_xino(m, sb); + if (unlikely(err)) + goto out; + } else + seq_puts(m, ",noxino"); + + AuBool(TRUNC_XINO, trunc_xino); + AuStr(UDBA, udba); + AuBool(SHWH, shwh); + AuBool(PLINK, plink); + AuBool(DIO, dio); + /* AuBool(DIRPERM1, dirperm1); */ + /* AuBool(REFROF, refrof); */ + + v = sbinfo->si_wbr_create; + if (v != AuWbrCreate_Def) + au_show_wbr_create(m, v, sbinfo); + + v = sbinfo->si_wbr_copyup; + if (v != AuWbrCopyup_Def) + seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); + + v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); + if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) + seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); + + AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); + + v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; + AuUInt(RDCACHE, rdcache, v); + + AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); + AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); + + AuBool(SUM, sum); + /* AuBool(SUM_W, wsum); */ + AuBool(WARN_PERM, warn_perm); + AuBool(VERBOSE, verbose); + +out: + /* be sure to print "br:" last */ + if (!sysaufs_brs) { + seq_puts(m, ",br:"); + au_show_brs(m, sb); + } + si_read_unlock(sb); + return 0; + +#undef AuBool +#undef AuStr +#undef AuUInt +} + +/* ---------------------------------------------------------------------- */ + +/* sum mode which returns the summation for statfs(2) */ + +static u64 au_add_till_max(u64 a, u64 b) +{ + u64 old; + + old = a; + a += b; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static u64 au_mul_till_max(u64 a, long mul) +{ + u64 old; + + old = a; + a *= mul; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) +{ + int err; + long bsize, factor; + u64 blocks, bfree, bavail, files, ffree; + aufs_bindex_t bend, bindex, i; + unsigned char shared; + struct path h_path; + struct super_block *h_sb; + + err = 0; + bsize = LONG_MAX; + files = 0; + ffree = 0; + blocks = 0; + bfree = 0; + bavail = 0; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_path.mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path.mnt->mnt_sb; + shared = 0; + for (i = 0; !shared && i < bindex; i++) + shared = (au_sbr_sb(sb, i) == h_sb); + if (shared) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + if (unlikely(err)) + goto out; + + if (bsize > buf->f_bsize) { + /* + * we will reduce bsize, so we have to expand blocks + * etc. to match them again + */ + factor = (bsize / buf->f_bsize); + blocks = au_mul_till_max(blocks, factor); + bfree = au_mul_till_max(bfree, factor); + bavail = au_mul_till_max(bavail, factor); + bsize = buf->f_bsize; + } + + factor = (buf->f_bsize / bsize); + blocks = au_add_till_max(blocks, + au_mul_till_max(buf->f_blocks, factor)); + bfree = au_add_till_max(bfree, + au_mul_till_max(buf->f_bfree, factor)); + bavail = au_add_till_max(bavail, + au_mul_till_max(buf->f_bavail, factor)); + files = au_add_till_max(files, buf->f_files); + ffree = au_add_till_max(ffree, buf->f_ffree); + } + + buf->f_bsize = bsize; + buf->f_blocks = blocks; + buf->f_bfree = bfree; + buf->f_bavail = bavail; + buf->f_files = files; + buf->f_ffree = ffree; + buf->f_frsize = 0; + +out: + return err; +} + +static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + int err; + struct path h_path; + struct super_block *sb; + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (!au_opt_test(au_mntflags(sb), SUM)) { + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_sbr_mnt(sb, 0); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + } else + err = au_statfs_sum(sb, buf); + si_read_unlock(sb); + + if (!err) { + buf->f_type = AUFS_SUPER_MAGIC; + buf->f_namelen = AUFS_MAX_NAMELEN; + memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); + } + /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + + dbgaufs_si_fin(sbinfo); + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void au_array_free(void *array) +{ + if (array) { + if (!is_vmalloc_addr(array)) + kfree(array); + else + vfree(array); + } +} + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg) +{ + void *array; + unsigned long long n; + + array = NULL; + n = 0; + if (!*hint) + goto out; + + if (*hint > ULLONG_MAX / sizeof(array)) { + array = ERR_PTR(-EMFILE); + pr_err("hint %llu\n", *hint); + goto out; + } + + array = kmalloc(sizeof(array) * *hint, GFP_NOFS); + if (unlikely(!array)) + array = vmalloc(sizeof(array) * *hint); + if (unlikely(!array)) { + array = ERR_PTR(-ENOMEM); + goto out; + } + + n = cb(array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct inode **p, *inode; + struct list_head *head; + + n = 0; + p = a; + head = arg; + spin_lock(&inode_sb_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!is_bad_inode(inode) + && au_ii(inode)->ii_bstart >= 0) { + spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + au_igrab(inode); + *p++ = inode; + n++; + AuDebugOn(n > max); + } + spin_unlock(&inode->i_lock); + } + } + spin_unlock(&inode_sb_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_ninodes); + return au_array_alloc(max, au_iarray_cb, &sb->s_inodes); +} + +void au_iarray_free(struct inode **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + iput(a[ull]); + au_array_free(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * refresh dentry and inode at remount time. + */ +/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ +static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, + struct dentry *parent) +{ + int err; + + di_write_lock_child(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + if (!err && dir_flags) + au_hn_reset(dentry->d_inode, dir_flags); + di_read_unlock(parent, AuLock_IR); + di_write_unlock(dentry); + + return err; +} + +static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, + struct au_sbinfo *sbinfo, + const unsigned int dir_flags) +{ + int err; + struct dentry *parent; + struct inode *inode; + + err = 0; + parent = dget_parent(dentry); + if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { + inode = dentry->d_inode; + if (inode) { + if (!S_ISDIR(inode->i_mode)) + err = au_do_refresh(dentry, /*dir_flags*/0, + parent); + else { + err = au_do_refresh(dentry, dir_flags, parent); + if (unlikely(err)) + au_fset_si(sbinfo, FAILED_REFRESH_DIR); + } + } else + err = au_do_refresh(dentry, /*dir_flags*/0, parent); + AuDbgDentry(dentry); + } + dput(parent); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb) +{ + int err, i, j, ndentry, e; + unsigned int sigen; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *d; + struct au_sbinfo *sbinfo; + struct dentry *root = sb->s_root; + const unsigned int dir_flags = au_hi_flags(root->d_inode, /*isdir*/1); + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + sigen = au_sigen(sb); + sbinfo = au_sbi(sb); + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + e = au_do_refresh_d(d, sigen, sbinfo, dir_flags); + if (unlikely(e && !err)) + err = e; + /* go on even err */ + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int au_refresh_i(struct super_block *sb) +{ + int err, e; + unsigned int sigen; + unsigned long long max, ull; + struct inode *inode, **array; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; + if (au_iigen(inode) != sigen) { + ii_write_lock_child(inode); + e = au_refresh_hinode_self(inode); + ii_write_unlock(inode); + if (unlikely(e)) { + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bend; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + + au_sigen_inc(sb); + au_fclr_si(au_sbi(sb), FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = root->d_inode; + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(udba, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); + + di_write_unlock(root); + err = au_refresh_d(sb); + e = au_refresh_i(sb); + if (unlikely(e && !err)) + err = e; + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + au_cpup_attr_all(inode, /*force*/1); + + if (unlikely(err)) + AuIOErr("refresh failed, ignored, %d\n", err); +} + +/* stop extra interpretation of errno in mount(8), and strange error messages */ +static int cvt_err(int err) +{ + AuTraceErr(err); + + switch (err) { + case -ENOENT: + case -ENOTDIR: + case -EEXIST: + case -EIO: + err = -EINVAL; + } + return err; +} + +static int aufs_remount_fs(struct super_block *sb, int *flags, char *data) +{ + int err, do_dx; + unsigned int mntflags; + struct au_opts opts; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; + + err = 0; + root = sb->s_root; + if (!data || !*data) { + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) { + di_write_lock_child(root); + err = au_opts_verify(sb, *flags, /*pending*/0); + aufs_write_unlock(root); + } + goto out; + } + + err = -ENOMEM; + memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.flags = AuOpts_REMOUNT; + opts.sb_flags = *flags; + + /* parse it before aufs lock */ + err = au_opts_parse(sb, data, &opts); + if (unlikely(err)) + goto out_opts; + + sbinfo = au_sbi(sb); + inode = root->d_inode; + mutex_lock(&inode->i_mutex); + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + di_write_lock_child(root); + + /* au_opts_remount() may return an error */ + err = au_opts_remount(sb, &opts); + au_opts_free(&opts); + + if (au_ftest_opts(opts.flags, REFRESH)) + au_remount_refresh(sb); + + if (au_ftest_opts(opts.flags, REFRESH_DYAOP)) { + mntflags = au_mntflags(sb); + do_dx = !!au_opt_test(mntflags, DIO); + au_dy_arefresh(do_dx); + } + + aufs_write_unlock(root); + +out_mtx: + mutex_unlock(&inode->i_mutex); +out_opts: + free_page((unsigned long)opts.opt); +out: + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +static const struct super_operations aufs_sop = { + .alloc_inode = aufs_alloc_inode, + .destroy_inode = aufs_destroy_inode, + /* always deleting, no clearing */ + .drop_inode = generic_delete_inode, + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, + .remount_fs = aufs_remount_fs +}; + +/* ---------------------------------------------------------------------- */ + +static int alloc_root(struct super_block *sb) +{ + int err; + struct inode *inode; + struct dentry *root; + + err = -ENOMEM; + inode = au_iget_locked(sb, AUFS_ROOT_INO); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + inode->i_op = &aufs_dir_iop; + inode->i_fop = &aufs_dir_fop; + inode->i_mode = S_IFDIR; + set_nlink(inode, 2); + unlock_new_inode(inode); + + root = d_make_root(inode); + if (unlikely(!root)) + goto out; + err = PTR_ERR(root); + if (IS_ERR(root)) + goto out; + + err = au_di_init(root); + if (!err) { + sb->s_root = root; + return 0; /* success */ + } + dput(root); + +out: + return err; +} + +static int aufs_fill_super(struct super_block *sb, void *raw_data, + int silent __maybe_unused) +{ + int err; + struct au_opts opts; + struct dentry *root; + struct inode *inode; + char *arg = raw_data; + + if (unlikely(!arg || !*arg)) { + err = -EINVAL; + pr_err("no arg\n"); + goto out; + } + + err = -ENOMEM; + memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.sb_flags = sb->s_flags; + + err = au_si_alloc(sb); + if (unlikely(err)) + goto out_opts; + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= MS_NOATIME | MS_NODIRATIME; + sb->s_op = &aufs_sop; + sb->s_d_op = &aufs_dop; + sb->s_magic = AUFS_SUPER_MAGIC; + sb->s_maxbytes = 0; + au_export_init(sb); + + err = alloc_root(sb); + if (unlikely(err)) { + si_write_unlock(sb); + goto out_info; + } + root = sb->s_root; + inode = root->d_inode; + + /* + * actually we can parse options regardless aufs lock here. + * but at remount time, parsing must be done before aufs lock. + * so we follow the same rule. + */ + ii_write_lock_parent(inode); + aufs_write_unlock(root); + err = au_opts_parse(sb, arg, &opts); + if (unlikely(err)) + goto out_root; + + /* lock vfs_inode first, then aufs. */ + mutex_lock(&inode->i_mutex); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + aufs_write_unlock(root); + mutex_unlock(&inode->i_mutex); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + dbgaufs_si_fin(au_sbi(sb)); + kobject_put(&au_sbi(sb)->si_kobj); + sb->s_fs_info = NULL; +out_opts: + free_page((unsigned long)opts.opt); +out: + AuTraceErr(err); + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_mount(struct file_system_type *fs_type, int flags, + const char *dev_name __maybe_unused, + void *raw_data) +{ + struct dentry *root; + struct super_block *sb; + + /* all timestamps always follow the ones on the branch */ + /* mnt->mnt_flags |= MNT_NOATIME | MNT_NODIRATIME; */ + root = mount_nodev(fs_type, flags, raw_data, aufs_fill_super); + if (IS_ERR(root)) + goto out; + + sb = root->d_sb; + si_write_lock(sb, !AuLock_FLUSH); + sysaufs_brs_add(sb, 0); + si_write_unlock(sb); + au_sbilist_add(sb); + +out: + return root; +} + +static void aufs_kill_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) { + au_sbilist_del(sb); + aufs_write_lock(sb->s_root); + if (sbinfo->si_wbr_create_ops->fin) + sbinfo->si_wbr_create_ops->fin(sb); + if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { + au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); + au_remount_refresh(sb); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(sb); + sbinfo->si_sb = NULL; + aufs_write_unlock(sb->s_root); + au_nwt_flush(&sbinfo->si_nowait); + } + generic_shutdown_super(sb); +} + +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + .fs_flags = + FS_RENAME_DOES_D_MOVE /* a race between rename and others */ + | FS_REVAL_DOT, /* for NFS branch and udba */ + .mount = aufs_mount, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; --- linux-3.5.0.orig/ubuntu/aufs/opts.c +++ linux-3.5.0/ubuntu/aufs/opts.c @@ -0,0 +1,1677 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount options/flags + */ + +#include +#include /* a distribution requires */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +enum { + Opt_br, + Opt_add, Opt_del, Opt_mod, Opt_reorder, Opt_append, Opt_prepend, + Opt_idel, Opt_imod, Opt_ireorder, + Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, Opt_rendir, + Opt_rdblk_def, Opt_rdhash_def, + Opt_xino, Opt_zxino, Opt_noxino, + Opt_trunc_xino, Opt_trunc_xino_v, Opt_notrunc_xino, + Opt_trunc_xino_path, Opt_itrunc_xino, + Opt_trunc_xib, Opt_notrunc_xib, + Opt_shwh, Opt_noshwh, + Opt_plink, Opt_noplink, Opt_list_plink, + Opt_udba, + Opt_dio, Opt_nodio, + /* Opt_lock, Opt_unlock, */ + Opt_cmd, Opt_cmd_args, + Opt_diropq_a, Opt_diropq_w, + Opt_warn_perm, Opt_nowarn_perm, + Opt_wbr_copyup, Opt_wbr_create, + Opt_refrof, Opt_norefrof, + Opt_verbose, Opt_noverbose, + Opt_sum, Opt_nosum, Opt_wsum, + Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err +}; + +static match_table_t options = { + {Opt_br, "br=%s"}, + {Opt_br, "br:%s"}, + + {Opt_add, "add=%d:%s"}, + {Opt_add, "add:%d:%s"}, + {Opt_add, "ins=%d:%s"}, + {Opt_add, "ins:%d:%s"}, + {Opt_append, "append=%s"}, + {Opt_append, "append:%s"}, + {Opt_prepend, "prepend=%s"}, + {Opt_prepend, "prepend:%s"}, + + {Opt_del, "del=%s"}, + {Opt_del, "del:%s"}, + /* {Opt_idel, "idel:%d"}, */ + {Opt_mod, "mod=%s"}, + {Opt_mod, "mod:%s"}, + /* {Opt_imod, "imod:%d:%s"}, */ + + {Opt_dirwh, "dirwh=%d"}, + + {Opt_xino, "xino=%s"}, + {Opt_noxino, "noxino"}, + {Opt_trunc_xino, "trunc_xino"}, + {Opt_trunc_xino_v, "trunc_xino_v=%d:%d"}, + {Opt_notrunc_xino, "notrunc_xino"}, + {Opt_trunc_xino_path, "trunc_xino=%s"}, + {Opt_itrunc_xino, "itrunc_xino=%d"}, + /* {Opt_zxino, "zxino=%s"}, */ + {Opt_trunc_xib, "trunc_xib"}, + {Opt_notrunc_xib, "notrunc_xib"}, + +#ifdef CONFIG_PROC_FS + {Opt_plink, "plink"}, +#else + {Opt_ignore_silent, "plink"}, +#endif + + {Opt_noplink, "noplink"}, + +#ifdef CONFIG_AUFS_DEBUG + {Opt_list_plink, "list_plink"}, +#endif + + {Opt_udba, "udba=%s"}, + + {Opt_dio, "dio"}, + {Opt_nodio, "nodio"}, + + {Opt_diropq_a, "diropq=always"}, + {Opt_diropq_a, "diropq=a"}, + {Opt_diropq_w, "diropq=whiteouted"}, + {Opt_diropq_w, "diropq=w"}, + + {Opt_warn_perm, "warn_perm"}, + {Opt_nowarn_perm, "nowarn_perm"}, + + /* keep them temporary */ + {Opt_ignore_silent, "coo=%s"}, + {Opt_ignore_silent, "nodlgt"}, + {Opt_ignore_silent, "nodirperm1"}, + {Opt_ignore_silent, "clean_plink"}, + +#ifdef CONFIG_AUFS_SHWH + {Opt_shwh, "shwh"}, +#endif + {Opt_noshwh, "noshwh"}, + + {Opt_rendir, "rendir=%d"}, + + {Opt_refrof, "refrof"}, + {Opt_norefrof, "norefrof"}, + + {Opt_verbose, "verbose"}, + {Opt_verbose, "v"}, + {Opt_noverbose, "noverbose"}, + {Opt_noverbose, "quiet"}, + {Opt_noverbose, "q"}, + {Opt_noverbose, "silent"}, + + {Opt_sum, "sum"}, + {Opt_nosum, "nosum"}, + {Opt_wsum, "wsum"}, + + {Opt_rdcache, "rdcache=%d"}, + {Opt_rdblk, "rdblk=%d"}, + {Opt_rdblk_def, "rdblk=def"}, + {Opt_rdhash, "rdhash=%d"}, + {Opt_rdhash_def, "rdhash=def"}, + + {Opt_wbr_create, "create=%s"}, + {Opt_wbr_create, "create_policy=%s"}, + {Opt_wbr_copyup, "cpup=%s"}, + {Opt_wbr_copyup, "copyup=%s"}, + {Opt_wbr_copyup, "copyup_policy=%s"}, + + /* internal use for the scripts */ + {Opt_ignore_silent, "si=%s"}, + + {Opt_br, "dirs=%s"}, + {Opt_ignore, "debug=%d"}, + {Opt_ignore, "delete=whiteout"}, + {Opt_ignore, "delete=all"}, + {Opt_ignore, "imap=%s"}, + + /* temporary workaround, due to old mount(8)? */ + {Opt_ignore_silent, "relatime"}, + + {Opt_err, NULL} +}; + +/* ---------------------------------------------------------------------- */ + +static const char *au_parser_pattern(int val, struct match_token *token) +{ + while (token->pattern) { + if (token->token == val) + return token->pattern; + token++; + } + BUG(); + return "??"; +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t brperm = { + {AuBrPerm_RO, AUFS_BRPERM_RO}, + {AuBrPerm_RR, AUFS_BRPERM_RR}, + {AuBrPerm_RW, AUFS_BRPERM_RW}, + {0, NULL} +}; + +static match_table_t brrattr = { + {AuBrRAttr_WH, AUFS_BRRATTR_WH}, + {0, NULL} +}; + +static match_table_t brwattr = { + {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, + {0, NULL} +}; + +#define AuBrStr_LONGEST AUFS_BRPERM_RW "+" AUFS_BRWATTR_NLWH + +static int br_attr_val(char *str, match_table_t table, substring_t args[]) +{ + int attr, v; + char *p; + + attr = 0; + do { + p = strchr(str, '+'); + if (p) + *p = 0; + v = match_token(str, table, args); + if (v) + attr |= v; + else { + if (p) + *p = '+'; + pr_warn("ignored branch attribute %s\n", str); + break; + } + if (p) + str = p + 1; + } while (p); + + return attr; +} + +static int noinline_for_stack br_perm_val(char *perm) +{ + int val; + char *p; + substring_t args[MAX_OPT_ARGS]; + + p = strchr(perm, '+'); + if (p) + *p = 0; + val = match_token(perm, brperm, args); + if (!val) { + if (p) + *p = '+'; + pr_warn("ignored branch permission %s\n", perm); + val = AuBrPerm_RO; + goto out; + } + if (!p) + goto out; + + switch (val) { + case AuBrPerm_RO: + case AuBrPerm_RR: + val |= br_attr_val(p + 1, brrattr, args); + break; + case AuBrPerm_RW: + val |= br_attr_val(p + 1, brwattr, args); + break; + } + +out: + return val; +} + +/* Caller should free the return value */ +char *au_optstr_br_perm(int brperm) +{ + char *p, a[sizeof(AuBrStr_LONGEST)]; + int sz; + +#define SetPerm(str) do { \ + sz = sizeof(str); \ + memcpy(a, str, sz); \ + p = a + sz - 1; \ + } while (0) + +#define AppendAttr(flag, str) do { \ + if (brperm & flag) { \ + sz = sizeof(str); \ + *p++ = '+'; \ + memcpy(p, str, sz); \ + p += sz - 1; \ + } \ + } while (0) + + switch (brperm & AuBrPerm_Mask) { + case AuBrPerm_RO: + SetPerm(AUFS_BRPERM_RO); + break; + case AuBrPerm_RR: + SetPerm(AUFS_BRPERM_RR); + break; + case AuBrPerm_RW: + SetPerm(AUFS_BRPERM_RW); + break; + default: + AuDebugOn(1); + } + + AppendAttr(AuBrRAttr_WH, AUFS_BRRATTR_WH); + AppendAttr(AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH); + + AuDebugOn(strlen(a) >= sizeof(a)); + return kstrdup(a, GFP_NOFS); +#undef SetPerm +#undef AppendAttr +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t udbalevel = { + {AuOpt_UDBA_REVAL, "reval"}, + {AuOpt_UDBA_NONE, "none"}, +#ifdef CONFIG_AUFS_HNOTIFY + {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ +#ifdef CONFIG_AUFS_HFSNOTIFY + {AuOpt_UDBA_HNOTIFY, "fsnotify"}, +#endif +#endif + {-1, NULL} +}; + +static int noinline_for_stack udba_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, udbalevel, args); +} + +const char *au_optstr_udba(int udba) +{ + return au_parser_pattern(udba, (void *)udbalevel); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t au_wbr_create_policy = { + {AuWbrCreate_TDP, "tdp"}, + {AuWbrCreate_TDP, "top-down-parent"}, + {AuWbrCreate_RR, "rr"}, + {AuWbrCreate_RR, "round-robin"}, + {AuWbrCreate_MFS, "mfs"}, + {AuWbrCreate_MFS, "most-free-space"}, + {AuWbrCreate_MFSV, "mfs:%d"}, + {AuWbrCreate_MFSV, "most-free-space:%d"}, + + {AuWbrCreate_MFSRR, "mfsrr:%d"}, + {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, + {AuWbrCreate_PMFS, "pmfs"}, + {AuWbrCreate_PMFSV, "pmfs:%d"}, + + {-1, NULL} +}; + +/* + * cf. linux/lib/parser.c and cmdline.c + * gave up calling memparse() since it uses simple_strtoull() instead of + * kstrto...(). + */ +static int noinline_for_stack +au_match_ull(substring_t *s, unsigned long long *result) +{ + int err; + unsigned int len; + char a[32]; + + err = -ERANGE; + len = s->to - s->from; + if (len + 1 <= sizeof(a)) { + memcpy(a, s->from, len); + a[len] = '\0'; + err = kstrtoull(a, 0, result); + } + return err; +} + +static int au_wbr_mfs_wmark(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int err; + unsigned long long ull; + + err = 0; + if (!au_match_ull(arg, &ull)) + create->mfsrr_watermark = ull; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int au_wbr_mfs_sec(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int n, err; + + err = 0; + if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) + create->mfs_second = n; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int noinline_for_stack +au_wbr_create_val(char *str, struct au_opt_wbr_create *create) +{ + int err, e; + substring_t args[MAX_OPT_ARGS]; + + err = match_token(str, au_wbr_create_policy, args); + create->wbr_create = err; + switch (err) { + case AuWbrCreate_MFSRRV: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (!e) + e = au_wbr_mfs_sec(&args[1], str, create); + if (unlikely(e)) + err = e; + break; + case AuWbrCreate_MFSRR: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (unlikely(e)) { + err = e; + break; + } + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + create->mfs_second = AUFS_MFS_DEF_SEC; + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + e = au_wbr_mfs_sec(&args[0], str, create); + if (unlikely(e)) + err = e; + break; + } + + return err; +} + +const char *au_optstr_wbr_create(int wbr_create) +{ + return au_parser_pattern(wbr_create, (void *)au_wbr_create_policy); +} + +static match_table_t au_wbr_copyup_policy = { + {AuWbrCopyup_TDP, "tdp"}, + {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_BUP, "bup"}, + {AuWbrCopyup_BUP, "bottom-up-parent"}, + {AuWbrCopyup_BU, "bu"}, + {AuWbrCopyup_BU, "bottom-up"}, + {-1, NULL} +}; + +static int noinline_for_stack au_wbr_copyup_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, au_wbr_copyup_policy, args); +} + +const char *au_optstr_wbr_copyup(int wbr_copyup) +{ + return au_parser_pattern(wbr_copyup, (void *)au_wbr_copyup_policy); +} + +/* ---------------------------------------------------------------------- */ + +static const int lkup_dirflags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; + +static void dump_opts(struct au_opts *opts) +{ +#ifdef CONFIG_AUFS_DEBUG + /* reduce stack space */ + union { + struct au_opt_add *add; + struct au_opt_del *del; + struct au_opt_mod *mod; + struct au_opt_xino *xino; + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + u.add = &opt->add; + AuDbg("add {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_del: + case Opt_idel: + u.del = &opt->del; + AuDbg("del {%s, %p}\n", + u.del->pathname, u.del->h_path.dentry); + break; + case Opt_mod: + case Opt_imod: + u.mod = &opt->mod; + AuDbg("mod {%s, 0x%x, %p}\n", + u.mod->path, u.mod->perm, u.mod->h_root); + break; + case Opt_append: + u.add = &opt->add; + AuDbg("append {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_prepend: + u.add = &opt->add; + AuDbg("prepend {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_dirwh: + AuDbg("dirwh %d\n", opt->dirwh); + break; + case Opt_rdcache: + AuDbg("rdcache %d\n", opt->rdcache); + break; + case Opt_rdblk: + AuDbg("rdblk %u\n", opt->rdblk); + break; + case Opt_rdblk_def: + AuDbg("rdblk_def\n"); + break; + case Opt_rdhash: + AuDbg("rdhash %u\n", opt->rdhash); + break; + case Opt_rdhash_def: + AuDbg("rdhash_def\n"); + break; + case Opt_xino: + u.xino = &opt->xino; + AuDbg("xino {%s %.*s}\n", + u.xino->path, + AuDLNPair(u.xino->file->f_dentry)); + break; + case Opt_trunc_xino: + AuLabel(trunc_xino); + break; + case Opt_notrunc_xino: + AuLabel(notrunc_xino); + break; + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); + break; + + case Opt_noxino: + AuLabel(noxino); + break; + case Opt_trunc_xib: + AuLabel(trunc_xib); + break; + case Opt_notrunc_xib: + AuLabel(notrunc_xib); + break; + case Opt_shwh: + AuLabel(shwh); + break; + case Opt_noshwh: + AuLabel(noshwh); + break; + case Opt_plink: + AuLabel(plink); + break; + case Opt_noplink: + AuLabel(noplink); + break; + case Opt_list_plink: + AuLabel(list_plink); + break; + case Opt_udba: + AuDbg("udba %d, %s\n", + opt->udba, au_optstr_udba(opt->udba)); + break; + case Opt_dio: + AuLabel(dio); + break; + case Opt_nodio: + AuLabel(nodio); + break; + case Opt_diropq_a: + AuLabel(diropq_a); + break; + case Opt_diropq_w: + AuLabel(diropq_w); + break; + case Opt_warn_perm: + AuLabel(warn_perm); + break; + case Opt_nowarn_perm: + AuLabel(nowarn_perm); + break; + case Opt_refrof: + AuLabel(refrof); + break; + case Opt_norefrof: + AuLabel(norefrof); + break; + case Opt_verbose: + AuLabel(verbose); + break; + case Opt_noverbose: + AuLabel(noverbose); + break; + case Opt_sum: + AuLabel(sum); + break; + case Opt_nosum: + AuLabel(nosum); + break; + case Opt_wsum: + AuLabel(wsum); + break; + case Opt_wbr_create: + u.create = &opt->wbr_create; + AuDbg("create %d, %s\n", u.create->wbr_create, + au_optstr_wbr_create(u.create->wbr_create)); + switch (u.create->wbr_create) { + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + AuDbg("%d sec\n", u.create->mfs_second); + break; + case AuWbrCreate_MFSRR: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + AuDbg("%llu watermark, %d sec\n", + u.create->mfsrr_watermark, + u.create->mfs_second); + break; + } + break; + case Opt_wbr_copyup: + AuDbg("copyup %d, %s\n", opt->wbr_copyup, + au_optstr_wbr_copyup(opt->wbr_copyup)); + break; + default: + BUG(); + } + opt++; + } +#endif +} + +void au_opts_free(struct au_opts *opts) +{ + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + case Opt_append: + case Opt_prepend: + path_put(&opt->add.path); + break; + case Opt_del: + case Opt_idel: + path_put(&opt->del.h_path); + break; + case Opt_mod: + case Opt_imod: + dput(opt->mod.h_root); + break; + case Opt_xino: + fput(opt->xino.file); + break; + } + opt++; + } +} + +static int opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, + aufs_bindex_t bindex) +{ + int err; + struct au_opt_add *add = &opt->add; + char *p; + + add->bindex = bindex; + add->perm = AuBrPerm_RO; + add->pathname = opt_str; + p = strchr(opt_str, '='); + if (p) { + *p++ = 0; + if (*p) + add->perm = br_perm_val(p); + } + + err = vfsub_kern_path(add->pathname, lkup_dirflags, &add->path); + if (!err) { + if (!p) { + add->perm = AuBrPerm_RO; + if (au_test_fs_rr(add->path.dentry->d_sb)) + add->perm = AuBrPerm_RR; + else if (!bindex && !(sb_flags & MS_RDONLY)) + add->perm = AuBrPerm_RW; + } + opt->type = Opt_add; + goto out; + } + pr_err("lookup failed %s (%d)\n", add->pathname, err); + err = -EINVAL; + +out: + return err; +} + +static int au_opts_parse_del(struct au_opt_del *del, substring_t args[]) +{ + int err; + + del->pathname = args[0].from; + AuDbg("del path %s\n", del->pathname); + + err = vfsub_kern_path(del->pathname, lkup_dirflags, &del->h_path); + if (unlikely(err)) + pr_err("lookup failed %s (%d)\n", del->pathname, err); + + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_idel(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_del *del, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + del->h_path.dentry = dget(au_h_dptr(root, bindex)); + del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int noinline_for_stack +au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct path path; + char *p; + + err = -EINVAL; + mod->path = args[0].from; + p = strchr(mod->path, '='); + if (unlikely(!p)) { + pr_err("no permssion %s\n", args[0].from); + goto out; + } + + *p++ = 0; + err = vfsub_kern_path(mod->path, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", mod->path, err); + goto out; + } + + mod->perm = br_perm_val(p); + AuDbg("mod path %s, perm 0x%x, %s\n", mod->path, mod->perm, p); + mod->h_root = dget(path.dentry); + path_put(&path); + +out: + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_imod(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + mod->perm = br_perm_val(args[1].from); + AuDbg("mod path %s, perm 0x%x, %s\n", + mod->path, mod->perm, args[1].from); + mod->h_root = dget(au_h_dptr(root, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino, + substring_t args[]) +{ + int err; + struct file *file; + + file = au_xino_create(sb, args[0].from, /*silent*/0); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + + err = -EINVAL; + if (unlikely(file->f_dentry->d_sb == sb)) { + fput(file); + pr_err("%s must be outside\n", args[0].from); + goto out; + } + + err = 0; + xino->file = file; + xino->path = args[0].from; + +out: + return err; +} + +static int noinline_for_stack +au_opts_parse_xino_itrunc_path(struct super_block *sb, + struct au_opt_xino_itrunc *xino_itrunc, + substring_t args[]) +{ + int err; + aufs_bindex_t bend, bindex; + struct path path; + struct dentry *root; + + err = vfsub_kern_path(args[0].from, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", args[0].from, err); + goto out; + } + + xino_itrunc->bindex = -1; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + if (au_h_dptr(root, bindex) == path.dentry) { + xino_itrunc->bindex = bindex; + break; + } + } + aufs_read_unlock(root, !AuLock_IR); + path_put(&path); + + if (unlikely(xino_itrunc->bindex < 0)) { + pr_err("no such branch %s\n", args[0].from); + err = -EINVAL; + } + +out: + return err; +} + +/* called without aufs lock */ +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts) +{ + int err, n, token; + aufs_bindex_t bindex; + unsigned char skipped; + struct dentry *root; + struct au_opt *opt, *opt_tail; + char *opt_str; + /* reduce the stack space */ + union { + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct { + substring_t args[MAX_OPT_ARGS]; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + root = sb->s_root; + err = 0; + bindex = 0; + opt = opts->opt; + opt_tail = opt + opts->max_opt - 1; + opt->type = Opt_tail; + while (!err && (opt_str = strsep(&str, ",")) && *opt_str) { + err = -EINVAL; + skipped = 0; + token = match_token(opt_str, options, a->args); + switch (token) { + case Opt_br: + err = 0; + while (!err && (opt_str = strsep(&a->args[0].from, ":")) + && *opt_str) { + err = opt_add(opt, opt_str, opts->sb_flags, + bindex++); + if (unlikely(!err && ++opt > opt_tail)) { + err = -E2BIG; + break; + } + opt->type = Opt_tail; + skipped = 1; + } + break; + case Opt_add: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + bindex = n; + err = opt_add(opt, a->args[1].from, opts->sb_flags, + bindex); + if (!err) + opt->type = token; + break; + case Opt_append: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*dummy bindex*/1); + if (!err) + opt->type = token; + break; + case Opt_prepend: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*bindex*/0); + if (!err) + opt->type = token; + break; + case Opt_del: + err = au_opts_parse_del(&opt->del, a->args); + if (!err) + opt->type = token; + break; +#if 0 /* reserved for future use */ + case Opt_idel: + del->pathname = "(indexed)"; + if (unlikely(match_int(&args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_idel(sb, n, &opt->del, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_mod: + err = au_opts_parse_mod(&opt->mod, a->args); + if (!err) + opt->type = token; + break; +#ifdef IMOD /* reserved for future use */ + case Opt_imod: + u.mod->path = "(indexed)"; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_imod(sb, n, &opt->mod, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_xino: + err = au_opts_parse_xino(sb, &opt->xino, a->args); + if (!err) + opt->type = token; + break; + + case Opt_trunc_xino_path: + err = au_opts_parse_xino_itrunc_path + (sb, &opt->xino_itrunc, a->args); + if (!err) + opt->type = token; + break; + + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + u.xino_itrunc->bindex = n; + aufs_read_lock(root, AuLock_FLUSH); + if (n < 0 || au_sbend(sb) < n) { + pr_err("out of bounds, %d\n", n); + aufs_read_unlock(root, !AuLock_IR); + break; + } + aufs_read_unlock(root, !AuLock_IR); + err = 0; + opt->type = token; + break; + + case Opt_dirwh: + if (unlikely(match_int(&a->args[0], &opt->dirwh))) + break; + err = 0; + opt->type = token; + break; + + case Opt_rdcache: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n > AUFS_RDCACHE_MAX)) { + pr_err("rdcache must be smaller than %d\n", + AUFS_RDCACHE_MAX); + break; + } + opt->rdcache = n; + err = 0; + opt->type = token; + break; + case Opt_rdblk: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n && n < NAME_MAX)) { + pr_err("rdblk must be larger than %d\n", + NAME_MAX); + break; + } + opt->rdblk = n; + err = 0; + opt->type = token; + break; + case Opt_rdhash: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n * sizeof(struct hlist_head) + > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + opt->rdhash = n; + err = 0; + opt->type = token; + break; + + case Opt_trunc_xino: + case Opt_notrunc_xino: + case Opt_noxino: + case Opt_trunc_xib: + case Opt_notrunc_xib: + case Opt_shwh: + case Opt_noshwh: + case Opt_plink: + case Opt_noplink: + case Opt_list_plink: + case Opt_dio: + case Opt_nodio: + case Opt_diropq_a: + case Opt_diropq_w: + case Opt_warn_perm: + case Opt_nowarn_perm: + case Opt_refrof: + case Opt_norefrof: + case Opt_verbose: + case Opt_noverbose: + case Opt_sum: + case Opt_nosum: + case Opt_wsum: + case Opt_rdblk_def: + case Opt_rdhash_def: + err = 0; + opt->type = token; + break; + + case Opt_udba: + opt->udba = udba_val(a->args[0].from); + if (opt->udba >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_wbr_create: + u.create = &opt->wbr_create; + u.create->wbr_create + = au_wbr_create_val(a->args[0].from, u.create); + if (u.create->wbr_create >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + case Opt_wbr_copyup: + opt->wbr_copyup = au_wbr_copyup_val(a->args[0].from); + if (opt->wbr_copyup >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_ignore: + pr_warn("ignored %s\n", opt_str); + /*FALLTHROUGH*/ + case Opt_ignore_silent: + skipped = 1; + err = 0; + break; + case Opt_err: + pr_err("unknown option %s\n", opt_str); + break; + } + + if (!err && !skipped) { + if (unlikely(++opt > opt_tail)) { + err = -E2BIG; + opt--; + opt->type = Opt_tail; + break; + } + opt->type = Opt_tail; + } + } + + kfree(a); + dump_opts(opts); + if (unlikely(err)) + au_opts_free(opts); + +out: + return err; +} + +static int au_opt_wbr_create(struct super_block *sb, + struct au_opt_wbr_create *create) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + if (sbinfo->si_wbr_create_ops->fin) { + err = sbinfo->si_wbr_create_ops->fin(sb); + if (!err) + err = 1; + } + + sbinfo->si_wbr_create = create->wbr_create; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; + switch (create->wbr_create) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_MFSRR: + sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFS: + case AuWbrCreate_PMFSV: + sbinfo->si_wbr_mfs.mfs_expire + = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); + break; + } + + if (sbinfo->si_wbr_create_ops->init) + sbinfo->si_wbr_create_ops->init(sb); /* ignore */ + + return err; +} + +/* + * returns, + * plus: processed without an error + * zero: unprocessed + */ +static int au_opt_simple(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + switch (opt->type) { + case Opt_udba: + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= opt->udba; + opts->given_udba |= opt->udba; + break; + + case Opt_plink: + au_opt_set(sbinfo->si_mntflags, PLINK); + break; + case Opt_noplink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_opt_clr(sbinfo->si_mntflags, PLINK); + break; + case Opt_list_plink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_list(sb); + break; + + case Opt_dio: + au_opt_set(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + case Opt_nodio: + au_opt_clr(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + + case Opt_diropq_a: + au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + case Opt_diropq_w: + au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + + case Opt_warn_perm: + au_opt_set(sbinfo->si_mntflags, WARN_PERM); + break; + case Opt_nowarn_perm: + au_opt_clr(sbinfo->si_mntflags, WARN_PERM); + break; + + case Opt_refrof: + au_opt_set(sbinfo->si_mntflags, REFROF); + break; + case Opt_norefrof: + au_opt_clr(sbinfo->si_mntflags, REFROF); + break; + + case Opt_verbose: + au_opt_set(sbinfo->si_mntflags, VERBOSE); + break; + case Opt_noverbose: + au_opt_clr(sbinfo->si_mntflags, VERBOSE); + break; + + case Opt_sum: + au_opt_set(sbinfo->si_mntflags, SUM); + break; + case Opt_wsum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_set(sbinfo->si_mntflags, SUM_W); + case Opt_nosum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_clr(sbinfo->si_mntflags, SUM_W); + break; + + case Opt_wbr_create: + err = au_opt_wbr_create(sb, &opt->wbr_create); + break; + case Opt_wbr_copyup: + sbinfo->si_wbr_copyup = opt->wbr_copyup; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; + break; + + case Opt_dirwh: + sbinfo->si_dirwh = opt->dirwh; + break; + + case Opt_rdcache: + sbinfo->si_rdcache + = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); + break; + case Opt_rdblk: + sbinfo->si_rdblk = opt->rdblk; + break; + case Opt_rdblk_def: + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + break; + case Opt_rdhash: + sbinfo->si_rdhash = opt->rdhash; + break; + case Opt_rdhash_def: + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + break; + + case Opt_shwh: + au_opt_set(sbinfo->si_mntflags, SHWH); + break; + case Opt_noshwh: + au_opt_clr(sbinfo->si_mntflags, SHWH); + break; + + case Opt_trunc_xino: + au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); + break; + case Opt_notrunc_xino: + au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); + break; + + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + err = au_xino_trunc(sb, opt->xino_itrunc.bindex); + if (!err) + err = 1; + break; + + case Opt_trunc_xib: + au_fset_opts(opts->flags, TRUNC_XIB); + break; + case Opt_notrunc_xib: + au_fclr_opts(opts->flags, TRUNC_XIB); + break; + + default: + err = 0; + break; + } + + return err; +} + +/* + * returns tri-state. + * plus: processed without an error + * zero: unprocessed + * minus: error + */ +static int au_opt_br(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err, do_refresh; + + err = 0; + switch (opt->type) { + case Opt_append: + opt->add.bindex = au_sbend(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + case Opt_prepend: + opt->add.bindex = 0; + add: + case Opt_add: + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_del: + case Opt_idel: + err = au_br_del(sb, &opt->del, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, TRUNC_XIB); + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_mod: + case Opt_imod: + err = au_br_mod(sb, &opt->mod, + au_ftest_opts(opts->flags, REMOUNT), + &do_refresh); + if (!err) { + err = 1; + if (do_refresh) + au_fset_opts(opts->flags, REFRESH); + } + break; + } + + return err; +} + +static int au_opt_xino(struct super_block *sb, struct au_opt *opt, + struct au_opt_xino **opt_xino, + struct au_opts *opts) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root, *parent, *h_root; + + err = 0; + switch (opt->type) { + case Opt_xino: + err = au_xino_set(sb, &opt->xino, + !!au_ftest_opts(opts->flags, REMOUNT)); + if (unlikely(err)) + break; + + *opt_xino = &opt->xino; + au_xino_brid_set(sb, -1); + + /* safe d_parent access */ + parent = opt->xino.file->f_dentry->d_parent; + root = sb->s_root; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_root = au_h_dptr(root, bindex); + if (h_root == parent) { + au_xino_brid_set(sb, au_sbr_id(sb, bindex)); + break; + } + } + break; + + case Opt_noxino: + au_xino_clr(sb); + au_xino_brid_set(sb, -1); + *opt_xino = (void *)-1; + break; + } + + return err; +} + +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending) +{ + int err; + aufs_bindex_t bindex, bend; + unsigned char do_plink, skip, do_free; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + struct inode *dir, *h_dir; + struct au_sbinfo *sbinfo; + struct au_hinode *hdir; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); + + if (!(sb_flags & MS_RDONLY)) { + if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) + pr_warn("first branch should be rw\n"); + if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) + pr_warn("shwh should be used with ro\n"); + } + + if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) + && !au_opt_test(sbinfo->si_mntflags, XINO)) + pr_warn("udba=*notify requires xino\n"); + + err = 0; + root = sb->s_root; + dir = root->d_inode; + do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) { + skip = 0; + h_dir = au_h_iptr(dir, bindex); + br = au_sbr(sb, bindex); + do_free = 0; + + wbr = br->br_wbr; + if (wbr) + wbr_wh_read_lock(wbr); + + if (!au_br_writable(br->br_perm)) { + do_free = !!wbr; + skip = (!wbr + || (!wbr->wbr_whbase + && !wbr->wbr_plink + && !wbr->wbr_orph)); + } else if (!au_br_wh_linkable(br->br_perm)) { + /* skip = (!br->br_whbase && !br->br_orph); */ + skip = (!wbr || !wbr->wbr_whbase); + if (skip && wbr) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } else { + /* skip = (br->br_whbase && br->br_ohph); */ + skip = (wbr && wbr->wbr_whbase); + if (skip) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } + if (wbr) + wbr_wh_read_unlock(wbr); + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + if (wbr) + wbr_wh_write_lock(wbr); + err = au_wh_init(au_h_dptr(root, bindex), br, sb); + if (wbr) + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + + if (!err && do_free) { + kfree(wbr); + br->br_wbr = NULL; + } + } + + return err; +} + +int au_opts_mount(struct super_block *sb, struct au_opts *opts) +{ + int err; + unsigned int tmp; + aufs_bindex_t bindex, bend; + struct au_opt *opt; + struct au_opt_xino *opt_xino, xino; + struct au_sbinfo *sbinfo; + struct au_branch *br; + + SiMustWriteLock(sb); + + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_simple(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + /* disable xino and udba temporary */ + sbinfo = au_sbi(sb); + tmp = sbinfo->si_mntflags; + au_opt_clr(sbinfo->si_mntflags, XINO); + au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); + + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_br(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + bend = au_sbend(sb); + if (unlikely(bend < 0)) { + err = -EINVAL; + pr_err("no branches\n"); + goto out; + } + + if (au_opt_test(tmp, XINO)) + au_opt_set(sbinfo->si_mntflags, XINO); + opt = opts->opt; + while (!err && opt->type != Opt_tail) + err = au_opt_xino(sb, opt++, &opt_xino, opts); + if (unlikely(err)) + goto out; + + err = au_opts_verify(sb, sb->s_flags, tmp); + if (unlikely(err)) + goto out; + + /* restore xino */ + if (au_opt_test(tmp, XINO) && !opt_xino) { + xino.file = au_xino_def(sb); + err = PTR_ERR(xino.file); + if (IS_ERR(xino.file)) + goto out; + + err = au_xino_set(sb, &xino, /*remount*/0); + fput(xino.file); + if (unlikely(err)) + goto out; + } + + /* restore udba */ + tmp &= AuOptMask_UDBA; + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= tmp; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(tmp, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + if (au_opt_test(tmp, UDBA_HNOTIFY)) { + struct inode *dir = sb->s_root->d_inode; + au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); + } + +out: + return err; +} + +int au_opts_remount(struct super_block *sb, struct au_opts *opts) +{ + int err, rerr; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + dir = sb->s_root->d_inode; + sbinfo = au_sbi(sb); + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) { + err = au_opt_simple(sb, opt, opts); + if (!err) + err = au_opt_br(sb, opt, opts); + if (!err) + err = au_opt_xino(sb, opt, &opt_xino, opts); + opt++; + } + if (err > 0) + err = 0; + AuTraceErr(err); + /* go on even err */ + + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + if (au_ftest_opts(opts->flags, TRUNC_XIB)) { + rerr = au_xib_trunc(sb); + if (unlikely(rerr && !err)) + err = rerr; + } + + /* will be handled by the caller */ + if (!au_ftest_opts(opts->flags, REFRESH) + && (opts->given_udba || au_opt_test(sbinfo->si_mntflags, XINO))) + au_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- linux-3.5.0.orig/ubuntu/aufs/fstype.h +++ linux-3.5.0/ubuntu/aufs/fstype.h @@ -0,0 +1,496 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * judging filesystem type + */ + +#ifndef __AUFS_FSTYPE_H__ +#define __AUFS_FSTYPE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include + +static inline int au_test_aufs(struct super_block *sb) +{ + return sb->s_magic == AUFS_SUPER_MAGIC; +} + +static inline const char *au_sbtype(struct super_block *sb) +{ + return sb->s_type->name; +} + +static inline int au_test_iso9660(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ROMFS_FS) || defined(CONFIG_ROMFS_FS_MODULE) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ISO9660_FS) || defined(CONFIG_ISO9660_FS_MODULE) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CRAMFS) || defined(CONFIG_CRAMFS_MODULE) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NFS_FS) || defined(CONFIG_NFS_FS_MODULE) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FUSE_FS) || defined(CONFIG_FUSE_FS_MODULE) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XFS_FS) || defined(CONFIG_XFS_FS_MODULE) + return sb->s_magic == XFS_SB_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_TMPFS + return sb->s_magic == TMPFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ECRYPT_FS) || defined(CONFIG_ECRYPT_FS_MODULE) + return !strcmp(au_sbtype(sb), "ecryptfs"); +#else + return 0; +#endif +} + +static inline int au_test_smbfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SMB_FS) || defined(CONFIG_SMB_FS_MODULE) + return sb->s_magic == SMB_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ocfs2(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_OCFS2_FS) || defined(CONFIG_OCFS2_FS_MODULE) + return sb->s_magic == OCFS2_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ocfs2_dlmfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_OCFS2_FS_O2CB) || defined(CONFIG_OCFS2_FS_O2CB_MODULE) + return sb->s_magic == DLMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_coda(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CODA_FS) || defined(CONFIG_CODA_FS_MODULE) + return sb->s_magic == CODA_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_v9fs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_9P_FS) || defined(CONFIG_9P_FS_MODULE) + return sb->s_magic == V9FS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ext4(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_EXT4DEV_FS) || defined(CONFIG_EXT4DEV_FS_MODULE) + return sb->s_magic == EXT4_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysv(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SYSV_FS) || defined(CONFIG_SYSV_FS_MODULE) + return !strcmp(au_sbtype(sb), "sysv"); +#else + return 0; +#endif +} + +static inline int au_test_ramfs(struct super_block *sb) +{ + return sb->s_magic == RAMFS_MAGIC; +} + +static inline int au_test_ubifs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_UBIFS_FS) || defined(CONFIG_UBIFS_FS_MODULE) + return sb->s_magic == UBIFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_procfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_PROC_FS + return sb->s_magic == PROC_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SYSFS + return sb->s_magic == SYSFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_configfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CONFIGFS_FS) || defined(CONFIG_CONFIGFS_FS_MODULE) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_MINIX_FS) || defined(CONFIG_MINIX_FS_MODULE) + return sb->s_magic == MINIX3_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC2 + || sb->s_magic == MINIX_SUPER_MAGIC + || sb->s_magic == MINIX_SUPER_MAGIC2; +#else + return 0; +#endif +} + +static inline int au_test_cifs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CIFS_FS) || defined(CONFIGCIFS_FS_MODULE) + return sb->s_magic == CIFS_MAGIC_NUMBER; +#else + return 0; +#endif +} + +static inline int au_test_fat(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FAT_FS) || defined(CONFIG_FAT_FS_MODULE) + return sb->s_magic == MSDOS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_msdos(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_vfat(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_securityfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SECURITYFS + return sb->s_magic == SECURITYFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_squashfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SQUASHFS) || defined(CONFIG_SQUASHFS_MODULE) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XENFS) || defined(CONFIG_XENFS_MODULE) + return sb->s_magic == XENFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_debugfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_DEBUG_FS + return sb->s_magic == DEBUGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_nilfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NILFS) || defined(CONFIG_NILFS_MODULE) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_HFSPLUS_FS) || defined(CONFIG_HFSPLUS_FS_MODULE) + return sb->s_magic == HFSPLUS_SUPER_MAGIC; +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ +/* + * they can't be an aufs branch. + */ +static inline int au_test_fs_unsuppoted(struct super_block *sb) +{ + return +#ifndef CONFIG_AUFS_BR_RAMFS + au_test_ramfs(sb) || +#endif + au_test_procfs(sb) + || au_test_sysfs(sb) + || au_test_configfs(sb) + || au_test_debugfs(sb) + || au_test_securityfs(sb) + || au_test_xenfs(sb) + || au_test_ecryptfs(sb) + /* || !strcmp(au_sbtype(sb), "unionfs") */ + || au_test_aufs(sb); /* will be supported in next version */ +} + +/* + * If the filesystem supports NFS-export, then it has to support NULL as + * a nameidata parameter for ->create(), ->lookup() and ->d_revalidate(). + * We can apply this principle when we handle a lower filesystem. + */ +static inline int au_test_fs_null_nd(struct super_block *sb) +{ + return !!sb->s_export_op; +} + +static inline int au_test_fs_remote(struct super_block *sb) +{ + return !au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + && !au_test_ramfs(sb) +#endif + && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); +} + +/* ---------------------------------------------------------------------- */ + +/* + * Note: these functions (below) are created after reading ->getattr() in all + * filesystems under linux/fs. it means we have to do so in every update... + */ + +/* + * some filesystems require getattr to refresh the inode attributes before + * referencing. + * in most cases, we can rely on the inode attribute in NFS (or every remote fs) + * and leave the work for d_revalidate() + */ +static inline int au_test_fs_refresh_iattr(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + /* || au_test_smbfs(sb) */ /* untested */ + /* || au_test_ocfs2(sb) */ /* untested */ + /* || au_test_btrfs(sb) */ /* untested */ + /* || au_test_coda(sb) */ /* untested */ + /* || au_test_v9fs(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't maintain i_size or i_blocks. + */ +static inline int au_test_fs_bad_iattr_size(struct super_block *sb) +{ + return au_test_xfs(sb) + || au_test_btrfs(sb) + || au_test_ubifs(sb) + || au_test_hfsplus(sb) /* maintained, but incorrect */ + /* || au_test_ext4(sb) */ /* untested */ + /* || au_test_ocfs2(sb) */ /* untested */ + /* || au_test_ocfs2_dlmfs(sb) */ /* untested */ + /* || au_test_sysv(sb) */ /* untested */ + /* || au_test_minix(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't store the correct value in some of their inode + * attributes. + */ +static inline int au_test_fs_bad_iattr(struct super_block *sb) +{ + return au_test_fs_bad_iattr_size(sb) + /* || au_test_cifs(sb) */ /* untested */ + || au_test_fat(sb) + || au_test_msdos(sb) + || au_test_vfat(sb); +} + +/* they don't check i_nlink in link(2) */ +static inline int au_test_fs_no_limit_nlink(struct super_block *sb) +{ + return au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || au_test_ramfs(sb) +#endif + || au_test_ubifs(sb) + || au_test_btrfs(sb) + || au_test_hfsplus(sb); +} + +/* + * filesystems which sets S_NOATIME and S_NOCMTIME. + */ +static inline int au_test_fs_notime(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + || au_test_ubifs(sb) + /* || au_test_cifs(sb) */ /* untested */ + ; +} + +/* + * filesystems which requires replacing i_mapping. + */ +static inline int au_test_fs_bad_mapping(struct super_block *sb) +{ + return au_test_fuse(sb) + || au_test_ubifs(sb); +} + +/* temporary support for i#1 in cramfs */ +static inline int au_test_fs_unique_ino(struct inode *inode) +{ + if (au_test_cramfs(inode->i_sb)) + return inode->i_ino != 1; + return 1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * the filesystem where the xino files placed must support i/o after unlink and + * maintain i_size and i_blocks. + */ +static inline int au_test_fs_bad_xino(struct super_block *sb) +{ + return au_test_fs_remote(sb) + || au_test_fs_bad_iattr_size(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || !(au_test_ramfs(sb) || au_test_fs_null_nd(sb)) +#else + || !au_test_fs_null_nd(sb) /* to keep xino code simple */ +#endif + /* don't want unnecessary work for xino */ + || au_test_aufs(sb) + || au_test_ecryptfs(sb) + || au_test_nilfs(sb); +} + +static inline int au_test_fs_trunc_xino(struct super_block *sb) +{ + return au_test_tmpfs(sb) + || au_test_ramfs(sb); +} + +/* + * test if the @sb is real-readonly. + */ +static inline int au_test_fs_rr(struct super_block *sb) +{ + return au_test_squashfs(sb) + || au_test_iso9660(sb) + || au_test_cramfs(sb) + || au_test_romfs(sb); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/rdu.c +++ linux-3.5.0/ubuntu/aufs/rdu.c @@ -0,0 +1,384 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * readdir in userspace. + */ + +#include +#include +#include +#include "aufs.h" + +/* bits for struct aufs_rdu.flags */ +#define AuRdu_CALLED 1 +#define AuRdu_CONT (1 << 1) +#define AuRdu_FULL (1 << 2) +#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) +#define au_fset_rdu(flags, name) \ + do { (flags) |= AuRdu_##name; } while (0) +#define au_fclr_rdu(flags, name) \ + do { (flags) &= ~AuRdu_##name; } while (0) + +struct au_rdu_arg { + struct aufs_rdu *rdu; + union au_rdu_ent_ul ent; + unsigned long end; + + struct super_block *sb; + int err; +}; + +static int au_rdu_fill(void *__arg, const char *name, int nlen, + loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = __arg; + struct aufs_rdu *rdu = arg->rdu; + struct au_rdu_ent ent; + + err = 0; + arg->err = 0; + au_fset_rdu(rdu->cookie.flags, CALLED); + len = au_rdu_len(nlen); + if (arg->ent.ul + len < arg->end) { + ent.ino = h_ino; + ent.bindex = rdu->cookie.bindex; + ent.type = d_type; + ent.nlen = nlen; + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + ent.type = DT_UNKNOWN; + + /* unnecessary to support mmap_sem since this is a dir */ + err = -EFAULT; + if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) + goto out; + if (copy_to_user(arg->ent.e->name, name, nlen)) + goto out; + /* the terminating NULL */ + if (__put_user(0, arg->ent.e->name + nlen)) + goto out; + err = 0; + /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ + arg->ent.ul += len; + rdu->rent++; + } else { + err = -EFAULT; + au_fset_rdu(rdu->cookie.flags, FULL); + rdu->full = 1; + rdu->tail = arg->ent; + } + +out: + /* AuTraceErr(err); */ + return err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) +{ + int err; + loff_t offset; + struct au_rdu_cookie *cookie = &arg->rdu->cookie; + + /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ + offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); + err = offset; + if (unlikely(offset != cookie->h_pos)) + goto out; + + err = 0; + do { + arg->err = 0; + au_fclr_rdu(cookie->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(h_file, au_rdu_fill, arg); + if (err >= 0) + err = arg->err; + } while (!err + && au_ftest_rdu(cookie->flags, CALLED) + && !au_ftest_rdu(cookie->flags, FULL)); + cookie->h_pos = h_file->f_pos; + +out: + AuTraceErr(err); + return err; +} + +static int au_rdu(struct file *file, struct aufs_rdu *rdu) +{ + int err; + aufs_bindex_t bend; + struct au_rdu_arg arg; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct au_rdu_cookie *cookie = &rdu->cookie; + + err = !access_ok(VERIFY_WRITE, rdu->ent.e, rdu->sz); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu->rent = 0; + rdu->tail = rdu->ent; + rdu->full = 0; + arg.rdu = rdu; + arg.ent = rdu->ent; + arg.end = arg.ent.ul; + arg.end += rdu->sz; + + err = -ENOTDIR; + if (unlikely(!file->f_op || !file->f_op->readdir)) + goto out; + + err = security_file_permission(file, MAY_READ); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + dentry = file->f_dentry; + inode = dentry->d_inode; +#if 1 + mutex_lock(&inode->i_mutex); +#else + err = mutex_lock_killable(&inode->i_mutex); + AuTraceErr(err); + if (unlikely(err)) + goto out; +#endif + + arg.sb = inode->i_sb; + err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_si; + /* todo: reval? */ + fi_read_lock(file); + + err = -EAGAIN; + if (unlikely(au_ftest_rdu(cookie->flags, CONT) + && cookie->generation != au_figen(file))) + goto out_unlock; + + err = 0; + if (!rdu->blk) { + rdu->blk = au_sbi(arg.sb)->si_rdblk; + if (!rdu->blk) + rdu->blk = au_dir_size(file, /*dentry*/NULL); + } + bend = au_fbstart(file); + if (cookie->bindex < bend) + cookie->bindex = bend; + bend = au_fbend_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bend); */ + for (; !err && cookie->bindex <= bend; + cookie->bindex++, cookie->h_pos = 0) { + h_file = au_hf_dir(file, cookie->bindex); + if (!h_file) + continue; + + au_fclr_rdu(cookie->flags, FULL); + err = au_rdu_do(h_file, &arg); + AuTraceErr(err); + if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) + break; + } + AuDbg("rent %llu\n", rdu->rent); + + if (!err && !au_ftest_rdu(cookie->flags, CONT)) { + rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); + au_fset_rdu(cookie->flags, CONT); + cookie->generation = au_figen(file); + } + + ii_read_lock_child(inode); + fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibstart(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + mutex_unlock(&inode->i_mutex); +out: + AuTraceErr(err); + return err; +} + +static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) +{ + int err; + ino_t ino; + unsigned long long nent; + union au_rdu_ent_ul *u; + struct au_rdu_ent ent; + struct super_block *sb; + + err = 0; + nent = rdu->nent; + u = &rdu->ent; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + while (nent-- > 0) { + /* unnecessary to support mmap_sem since this is a dir */ + err = copy_from_user(&ent, u->e, sizeof(ent)); + if (!err) + err = !access_ok(VERIFY_WRITE, &u->e->ino, sizeof(ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + + /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ + if (!ent.wh) + err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); + else + err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, + &ino); + if (unlikely(err)) { + AuTraceErr(err); + break; + } + + err = __put_user(ino, &u->e->ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + u->ul += au_rdu_len(ent.nlen); + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_rdu_verify(struct aufs_rdu *rdu) +{ + AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " + "%llu, b%d, 0x%x, g%u}\n", + rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], + rdu->blk, + rdu->rent, rdu->shwh, rdu->full, + rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, + rdu->cookie.generation); + + if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) + return 0; + + AuDbg("%u:%u\n", + rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); + return -EINVAL; +} + +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = (void __user *)arg; + + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = compat_ptr(arg); + + /* todo: get_user()? */ + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu.ent.e = compat_ptr(rdu.ent.ul); + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + rdu.ent.ul = ptr_to_compat(rdu.ent.e); + rdu.tail.ul = ptr_to_compat(rdu.tail.e); + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} +#endif --- linux-3.5.0.orig/ubuntu/aufs/sbinfo.c +++ linux-3.5.0/ubuntu/aufs/sbinfo.c @@ -0,0 +1,343 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * superblock private data + */ + +#include "aufs.h" + +/* + * they are necessary regardless sysfs is disabled. + */ +void au_si_free(struct kobject *kobj) +{ + struct au_sbinfo *sbinfo; + char *locked __maybe_unused; /* debug only */ + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + AuDebugOn(!list_empty(&sbinfo->si_plink.head)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + AuDebugOn(radix_tree_gang_lookup + (&sbinfo->au_si_pid.tree, (void **)&locked, + /*first_index*/PID_MAX_DEFAULT - 1, + /*max_items*/sizeof(locked)/sizeof(*locked))); + + kfree(sbinfo->si_branch); + kfree(sbinfo->au_si_pid.bitmap); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + kfree(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + static struct lock_class_key aufs_si; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + BUILD_BUG_ON(sizeof(unsigned long) != + sizeof(*sbinfo->au_si_pid.bitmap)); + sbinfo->au_si_pid.bitmap = kcalloc(BITS_TO_LONGS(PID_MAX_DEFAULT), + sizeof(*sbinfo->au_si_pid.bitmap), + GFP_NOFS); + if (unlikely(!sbinfo->au_si_pid.bitmap)) + goto out_sbinfo; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_pidmap; + + err = sysaufs_si_init(sbinfo); + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + au_rw_class(&sbinfo->si_rwsem, &aufs_si); + spin_lock_init(&sbinfo->au_si_pid.tree_lock); + INIT_RADIX_TREE(&sbinfo->au_si_pid.tree, GFP_ATOMIC | __GFP_NOFAIL); + + atomic_long_set(&sbinfo->si_ninodes, 0); + atomic_long_set(&sbinfo->si_nfiles, 0); + + sbinfo->si_bend = -1; + + sbinfo->si_wbr_copyup = AuWbrCopyup_Def; + sbinfo->si_wbr_create = AuWbrCreate_Def; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + + mutex_init(&sbinfo->si_xib_mtx); + sbinfo->si_xino_brid = -1; + /* leave si_xib_last_pindex and si_xib_next_bit */ + + sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + sbinfo->si_dirwh = AUFS_DIRWH_DEF; + + au_spl_init(&sbinfo->si_plink); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + /* leave other members for sysaufs and si_mnt. */ + sbinfo->si_sb = sb; + sb->s_fs_info = sbinfo; + si_pid_set(sb); + au_debug_sbinfo_init(sbinfo); + return 0; /* success */ + +out_br: + kfree(sbinfo->si_branch); +out_pidmap: + kfree(sbinfo->au_si_pid.bitmap); +out_sbinfo: + kfree(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bend + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS); + if (brp) { + sbinfo->si_branch = brp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_sigen_inc(struct super_block *sb) +{ + unsigned int gen; + + SiMustWriteLock(sb); + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); + au_update_iigen(sb->s_root->d_inode); + sb->s_root->d_inode->i_version++; + return gen; +} + +aufs_bindex_t au_new_br_id(struct super_block *sb) +{ + aufs_bindex_t br_id; + int i; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + for (i = 0; i <= AUFS_BRANCH_MAX; i++) { + br_id = ++sbinfo->si_last_br_id; + AuDebugOn(br_id < 0); + if (br_id && au_br_index(sb, br_id) < 0) + return br_id; + } + + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* it is ok that new 'nwt' tasks are appended while we are sleeping */ +int si_read_lock(struct super_block *sb, int flags) +{ + int err; + + err = 0; + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_read_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_read_unlock(sb); + + return err; +} + +int si_write_lock(struct super_block *sb, int flags) +{ + int err; + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_write_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_write_unlock(sb); + + return err; +} + +/* dentry and super_block lock. call at entry point */ +int aufs_read_lock(struct dentry *dentry, int flags) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + if (au_ftest_lock(flags, DW)) + di_write_lock_child(dentry); + else + di_read_lock_child(dentry, flags); + + if (au_ftest_lock(flags, GEN)) { + err = au_digen_test(dentry, au_sigen(sb)); + AuDebugOn(!err && au_dbrange_test(dentry)); + if (unlikely(err)) + aufs_read_unlock(dentry, flags); + } + +out: + return err; +} + +void aufs_read_unlock(struct dentry *dentry, int flags) +{ + if (au_ftest_lock(flags, DW)) + di_write_unlock(dentry); + else + di_read_unlock(dentry, flags); + si_read_unlock(dentry->d_sb); +} + +void aufs_write_lock(struct dentry *dentry) +{ + si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); + di_write_lock_child(dentry); +} + +void aufs_write_unlock(struct dentry *dentry) +{ + di_write_unlock(dentry); + si_write_unlock(dentry->d_sb); +} + +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) +{ + int err; + unsigned int sigen; + struct super_block *sb; + + sb = d1->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIR)); + + if (au_ftest_lock(flags, GEN)) { + sigen = au_sigen(sb); + err = au_digen_test(d1, sigen); + AuDebugOn(!err && au_dbrange_test(d1)); + if (!err) { + err = au_digen_test(d2, sigen); + AuDebugOn(!err && au_dbrange_test(d2)); + } + if (unlikely(err)) + aufs_read_and_write_unlock2(d1, d2); + } + +out: + return err; +} + +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} + +/* ---------------------------------------------------------------------- */ + +int si_pid_test_slow(struct super_block *sb) +{ + void *p; + + rcu_read_lock(); + p = radix_tree_lookup(&au_sbi(sb)->au_si_pid.tree, current->pid); + rcu_read_unlock(); + + return (long)!!p; +} + +void si_pid_set_slow(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + AuDebugOn(si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + err = radix_tree_preload(GFP_NOFS | __GFP_NOFAIL); + AuDebugOn(err); + spin_lock(&sbinfo->au_si_pid.tree_lock); + err = radix_tree_insert(&sbinfo->au_si_pid.tree, current->pid, + /*any valid ptr*/sb); + spin_unlock(&sbinfo->au_si_pid.tree_lock); + AuDebugOn(err); + radix_tree_preload_end(); +} + +void si_pid_clr_slow(struct super_block *sb) +{ + void *p; + struct au_sbinfo *sbinfo; + + AuDebugOn(!si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + spin_lock(&sbinfo->au_si_pid.tree_lock); + p = radix_tree_delete(&sbinfo->au_si_pid.tree, current->pid); + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} --- linux-3.5.0.orig/ubuntu/aufs/dir.c +++ linux-3.5.0/ubuntu/aufs/dir.c @@ -0,0 +1,636 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * directory operations + */ + +#include +#include "aufs.h" + +void au_add_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink += h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink += 2; + /* 0 can happen in revaliding */ + set_nlink(dir, nlink); +} + +void au_sub_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink -= h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink -= 2; + /* nlink == 0 means the branch-fs is broken */ + set_nlink(dir, nlink); +} + +loff_t au_dir_size(struct file *file, struct dentry *dentry) +{ + loff_t sz; + aufs_bindex_t bindex, bend; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!file->f_dentry); + AuDebugOn(!file->f_dentry->d_inode); + AuDebugOn(!S_ISDIR(file->f_dentry->d_inode->i_mode)); + + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file + && h_file->f_dentry + && h_file->f_dentry->d_inode) + sz += i_size_read(h_file->f_dentry->d_inode); + } + } else { + AuDebugOn(!dentry); + AuDebugOn(!dentry->d_inode); + AuDebugOn(!S_ISDIR(dentry->d_inode->i_mode)); + + bend = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) + sz += i_size_read(h_dentry->d_inode); + } + } + if (sz < KMALLOC_MAX_SIZE) + sz = roundup_pow_of_two(sz); + if (sz > KMALLOC_MAX_SIZE) + sz = KMALLOC_MAX_SIZE; + else if (sz < NAME_MAX) { + BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); + sz = AUFS_RDBLK_DEF; + } + return sz; +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, bstart; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_dentry; + bstart = au_dbstart(dentry); + for (bindex = au_fbstart(file); bindex < bstart; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, bstart); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbend_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbend_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_file = au_hf_dir(file, bindex); + if (h_file) + continue; + + h_file = au_h_open(dentry, bindex, flags, file); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* close all? */ + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + err = 0; + +out: + return err; +} + +static int do_open_dir(struct file *file, int flags) +{ + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + FiMustWriteLock(file); + + dentry = file->f_dentry; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out; + + file->f_version = dentry->d_inode->i_version; + bindex = au_dbstart(dentry); + au_set_fbstart(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbend_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + h_file = au_h_open(dentry, bindex, flags, file); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + break; + } + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + if (!err) + return 0; /* success */ + + /* close all */ + for (bindex = au_fbstart(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, -1); + au_set_fbend_dir(file, -1); + +out: + return err; +} + +static int aufs_open_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_fidir *fidir; + + err = -ENOMEM; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fidir = au_fidir_alloc(sb); + if (fidir) { + err = au_do_open(file, do_open_dir, fidir); + if (unlikely(err)) + kfree(fidir); + } + si_read_unlock(sb); + return err; +} + +static int aufs_release_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + struct au_vdir *vdir_cache; + struct au_finfo *finfo; + struct au_fidir *fidir; + aufs_bindex_t bindex, bend; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + /* remove me from sb->s_files */ + file_sb_list_del(file); + + vdir_cache = fidir->fd_vdir_cache; /* lock-free */ + if (vdir_cache) + au_vdir_free(vdir_cache); + + bindex = finfo->fi_btop; + if (bindex >= 0) { + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bend = fidir->fd_bbot; + for (; bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + kfree(fidir); + finfo->fi_hdir = NULL; + } + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_dir(struct file *file, fl_owner_t id) +{ + int err; + aufs_bindex_t bindex, bend; + struct file *h_file; + + err = 0; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file) + err = vfsub_flush(h_file, id); + } + return err; +} + +static int aufs_flush_dir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_dir); +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = dentry->d_inode; + IMustLock(inode); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= bend; bindex++) { + struct path h_path; + + if (au_test_ro(sb, bindex, inode)) + continue; + h_path.dentry = au_h_dptr(dentry, bindex); + if (!h_path.dentry) + continue; + + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_fsync(NULL, &h_path, datasync); + } + + return err; +} + +static int au_do_fsync_dir(struct file *file, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + + sb = file->f_dentry->d_sb; + inode = file->f_dentry->d_inode; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (!h_file || au_test_ro(sb, bindex, inode)) + continue; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + } + +out: + return err; +} + +/* + * @file may be NULL + */ +static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct mutex *mtx; + + err = 0; + dentry = file->f_dentry; + mtx = &dentry->d_inode->i_mutex; + mutex_lock(mtx); + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (file) + err = au_do_fsync_dir(file, datasync); + else { + di_write_lock_child(dentry); + err = au_do_fsync_dir_no_file(dentry, datasync); + } + au_cpup_attr_timesizes(dentry->d_inode); + di_write_unlock(dentry); + if (file) + fi_write_unlock(file); + + si_read_unlock(sb); + mutex_unlock(mtx); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_readdir(struct file *file, void *dirent, filldir_t filldir) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + dentry = file->f_dentry; + inode = dentry->d_inode; + IMustLock(inode); + + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (!err) + err = au_vdir_init(file); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (!au_test_nfsd()) { + err = au_vdir_fill_de(file, dirent, filldir); + fsstack_copy_attr_atime(inode, h_inode); + } else { + /* + * nfsd filldir may call lookup_one_len(), vfs_getattr(), + * encode_fh() and others. + */ + atomic_inc(&h_inode->i_count); + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); + err = au_vdir_fill_de(file, dirent, filldir); + fsstack_copy_attr_atime(inode, h_inode); + fi_write_unlock(file); + iput(h_inode); + + AuTraceErr(err); + return err; + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuTestEmpty_WHONLY 1 +#define AuTestEmpty_CALLED (1 << 1) +#define AuTestEmpty_SHWH (1 << 2) +#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) +#define au_fset_testempty(flags, name) \ + do { (flags) |= AuTestEmpty_##name; } while (0) +#define au_fclr_testempty(flags, name) \ + do { (flags) &= ~AuTestEmpty_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuTestEmpty_SHWH +#define AuTestEmpty_SHWH 0 +#endif + +struct test_empty_arg { + struct au_nhash *whlist; + unsigned int flags; + int err; + aufs_bindex_t bindex; +}; + +static int test_empty_cb(void *__arg, const char *__name, int namelen, + loff_t offset __maybe_unused, u64 ino, + unsigned int d_type) +{ + struct test_empty_arg *arg = __arg; + char *name = (void *)__name; + + arg->err = 0; + au_fset_testempty(arg->flags, CALLED); + /* smp_mb(); */ + if (name[0] == '.' + && (namelen == 1 || (name[1] == '.' && namelen == 2))) + goto out; /* success */ + + if (namelen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (au_ftest_testempty(arg->flags, WHONLY) + && !au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = -ENOTEMPTY; + goto out; + } + + name += AUFS_WH_PFX_LEN; + namelen -= AUFS_WH_PFX_LEN; + if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = au_nhash_append_wh + (arg->whlist, name, namelen, ino, d_type, arg->bindex, + au_ftest_testempty(arg->flags, SHWH)); + +out: + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err; + struct file *h_file; + + h_file = au_h_open(dentry, arg->bindex, + O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, + /*file*/NULL); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && !h_file->f_dentry->d_inode->i_nlink) + goto out_put; + + do { + arg->err = 0; + au_fclr_testempty(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(h_file, test_empty_cb, arg); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_testempty(arg->flags, CALLED)); + +out_put: + fput(h_file); + au_sbr_put(dentry->d_sb, arg->bindex); +out: + return err; +} + +struct do_test_empty_args { + int *errp; + struct dentry *dentry; + struct test_empty_arg *arg; +}; + +static void call_do_test_empty(void *args) +{ + struct do_test_empty_args *a = args; + *a->errp = do_test_empty(a->dentry, a->arg); +} + +static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = h_dentry->d_inode; + /* todo: i_mode changes anytime? */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); + mutex_unlock(&h_inode->i_mutex); + if (!err) + err = do_test_empty(dentry, arg); + else { + struct do_test_empty_args args = { + .errp = &err, + .dentry = dentry, + .arg = arg + }; + unsigned int flags = arg->flags; + + wkq_err = au_wkq_wait(call_do_test_empty, &args); + if (unlikely(wkq_err)) + err = wkq_err; + arg->flags = flags; + } + + return err; +} + +int au_test_empty_lower(struct dentry *dentry) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bindex, bstart, btail; + struct au_nhash whlist; + struct test_empty_arg arg; + + SiMustAnyLock(dentry->d_sb); + + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + arg.flags = 0; + arg.whlist = &whlist; + bstart = au_dbstart(dentry); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + arg.bindex = bstart; + err = do_test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = bstart + 1; !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) { + arg.bindex = bindex; + err = do_test_empty(dentry, &arg); + } + } + +out_whlist: + au_nhash_wh_free(&whlist); +out: + return err; +} + +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) +{ + int err; + struct test_empty_arg arg; + aufs_bindex_t bindex, btail; + + err = 0; + arg.whlist = whlist; + arg.flags = AuTestEmpty_WHONLY; + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + btail = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) { + arg.bindex = bindex; + err = sio_test_empty(dentry, &arg); + } + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_dir_fop = { + .owner = THIS_MODULE, + .llseek = default_llseek, + .read = generic_read_dir, + .readdir = aufs_readdir, + .unlocked_ioctl = aufs_ioctl_dir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_dir, +#endif + .open = aufs_open_dir, + .release = aufs_release_dir, + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; --- linux-3.5.0.orig/ubuntu/aufs/aufs.h +++ linux-3.5.0/ubuntu/aufs/aufs.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * all header files + */ + +#ifndef __AUFS_H__ +#define __AUFS_H__ + +#ifdef __KERNEL__ + +#define AuStub(type, name, body, ...) \ + static inline type name(__VA_ARGS__) { body; } + +#define AuStubVoid(name, ...) \ + AuStub(void, name, , __VA_ARGS__) +#define AuStubInt0(name, ...) \ + AuStub(int, name, return 0, __VA_ARGS__) + +#include "debug.h" + +#include "branch.h" +#include "cpup.h" +#include "dcsub.h" +#include "dbgaufs.h" +#include "dentry.h" +#include "dir.h" +#include "dynop.h" +#include "file.h" +#include "fstype.h" +#include "inode.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "spl.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/opts.h +++ linux-3.5.0/ubuntu/aufs/opts.h @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount options/flags + */ + +#ifndef __AUFS_OPTS_H__ +#define __AUFS_OPTS_H__ + +#ifdef __KERNEL__ + +#include + +struct file; +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* mount flags */ +#define AuOpt_XINO 1 /* external inode number bitmap + and translation table */ +#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ +#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ +#define AuOpt_UDBA_REVAL (1 << 3) +#define AuOpt_UDBA_HNOTIFY (1 << 4) +#define AuOpt_SHWH (1 << 5) /* show whiteout */ +#define AuOpt_PLINK (1 << 6) /* pseudo-link */ +#define AuOpt_DIRPERM1 (1 << 7) /* unimplemented */ +#define AuOpt_REFROF (1 << 8) /* unimplemented */ +#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ +#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ +#define AuOpt_SUM_W (1 << 11) /* unimplemented */ +#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ +#define AuOpt_VERBOSE (1 << 13) /* busy inode when del-branch */ +#define AuOpt_DIO (1 << 14) /* direct io */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 0 +#endif +#ifndef CONFIG_AUFS_SHWH +#undef AuOpt_SHWH +#define AuOpt_SHWH 0 +#endif + +#define AuOpt_Def (AuOpt_XINO \ + | AuOpt_UDBA_REVAL \ + | AuOpt_PLINK \ + /* | AuOpt_DIRPERM1 */ \ + | AuOpt_WARN_PERM) +#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ + | AuOpt_UDBA_REVAL \ + | AuOpt_UDBA_HNOTIFY) + +#define au_opt_test(flags, name) (flags & AuOpt_##name) +#define au_opt_set(flags, name) do { \ + BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_set_udba(flags, name) do { \ + (flags) &= ~AuOptMask_UDBA; \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_clr(flags, name) do { \ + ((flags) &= ~AuOpt_##name); \ +} while (0) + +static inline unsigned int au_opts_plink(unsigned int mntflags) +{ +#ifdef CONFIG_PROC_FS + return mntflags; +#else + return mntflags & ~AuOpt_PLINK; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* policies to select one among multiple writable branches */ +enum { + AuWbrCreate_TDP, /* top down parent */ + AuWbrCreate_RR, /* round robin */ + AuWbrCreate_MFS, /* most free space */ + AuWbrCreate_MFSV, /* mfs with seconds */ + AuWbrCreate_MFSRR, /* mfs then rr */ + AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ + AuWbrCreate_PMFS, /* parent and mfs */ + AuWbrCreate_PMFSV, /* parent and mfs with seconds */ + + AuWbrCreate_Def = AuWbrCreate_TDP +}; + +enum { + AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_BUP, /* bottom up parent */ + AuWbrCopyup_BU, /* bottom up */ + + AuWbrCopyup_Def = AuWbrCopyup_TDP +}; + +/* ---------------------------------------------------------------------- */ + +struct au_opt_add { + aufs_bindex_t bindex; + char *pathname; + int perm; + struct path path; +}; + +struct au_opt_del { + char *pathname; + struct path h_path; +}; + +struct au_opt_mod { + char *path; + int perm; + struct dentry *h_root; +}; + +struct au_opt_xino { + char *path; + struct file *file; +}; + +struct au_opt_xino_itrunc { + aufs_bindex_t bindex; +}; + +struct au_opt_wbr_create { + int wbr_create; + int mfs_second; + unsigned long long mfsrr_watermark; +}; + +struct au_opt { + int type; + union { + struct au_opt_xino xino; + struct au_opt_xino_itrunc xino_itrunc; + struct au_opt_add add; + struct au_opt_del del; + struct au_opt_mod mod; + int dirwh; + int rdcache; + unsigned int rdblk; + unsigned int rdhash; + int udba; + struct au_opt_wbr_create wbr_create; + int wbr_copyup; + }; +}; + +/* opts flags */ +#define AuOpts_REMOUNT 1 +#define AuOpts_REFRESH (1 << 1) +#define AuOpts_TRUNC_XIB (1 << 2) +#define AuOpts_REFRESH_DYAOP (1 << 3) +#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) +#define au_fset_opts(flags, name) \ + do { (flags) |= AuOpts_##name; } while (0) +#define au_fclr_opts(flags, name) \ + do { (flags) &= ~AuOpts_##name; } while (0) + +struct au_opts { + struct au_opt *opt; + int max_opt; + + unsigned int given_udba; + unsigned int flags; + unsigned long sb_flags; +}; + +/* ---------------------------------------------------------------------- */ + +char *au_optstr_br_perm(int brperm); +const char *au_optstr_udba(int udba); +const char *au_optstr_wbr_copyup(int wbr_copyup); +const char *au_optstr_wbr_create(int wbr_create); + +void au_opts_free(struct au_opts *opts); +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts); +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending); +int au_opts_mount(struct super_block *sb, struct au_opts *opts); +int au_opts_remount(struct super_block *sb, struct au_opts *opts); + +unsigned int au_opt_udba(struct super_block *sb); + +/* ---------------------------------------------------------------------- */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/i_op_ren.c +++ linux-3.5.0/ubuntu/aufs/i_op_ren.c @@ -0,0 +1,1026 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operation (rename entry) + * todo: this is crazy monster + */ + +#include "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR 1 +#define AuRen_ISSAMEDIR (1 << 1) +#define AuRen_WHSRC (1 << 2) +#define AuRen_WHDST (1 << 3) +#define AuRen_MNT_WRITE (1 << 4) +#define AuRen_DT_DSTDIR (1 << 5) +#define AuRen_DIROPQ (1 << 6) +#define AuRen_CPUP (1 << 7) +#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) +#define au_fset_ren(flags, name) \ + do { (flags) |= AuRen_##name; } while (0) +#define au_fclr_ren(flags, name) \ + do { (flags) &= ~AuRen_##name; } while (0) + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t bstart; + } sd[AuSrcDst]; + +#define src_dentry sd[AuSRC].dentry +#define src_dir sd[AuSRC].dir +#define src_inode sd[AuSRC].inode +#define src_h_dentry sd[AuSRC].h_dentry +#define src_parent sd[AuSRC].parent +#define src_h_parent sd[AuSRC].h_parent +#define src_wh_dentry sd[AuSRC].wh_dentry +#define src_hdir sd[AuSRC].hdir +#define src_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_bstart sd[AuSRC].bstart + +#define dst_dentry sd[AuDST].dentry +#define dst_dir sd[AuDST].dir +#define dst_inode sd[AuDST].inode +#define dst_h_dentry sd[AuDST].h_dentry +#define dst_parent sd[AuDST].parent +#define dst_h_parent sd[AuDST].h_parent +#define dst_wh_dentry sd[AuDST].wh_dentry +#define dst_hdir sd[AuDST].hdir +#define dst_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_bstart sd[AuDST].bstart + + struct dentry *h_trap; + struct au_branch *br; + struct au_hinode *src_hinode; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh, src_bdiropq; + + unsigned int flags; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happend. + * we don't need to revert the copied-up/down the parent dir since they are + * harmless. + */ + +#define RevertFailure(fmt, ...) do { \ + AuIOErr("revert failure: " fmt " (%d, %d)\n", \ + ##__VA_ARGS__, err, rerr); \ + err = -EIO; \ +} while (0) + +static void au_ren_rev_diropq(int err, struct au_ren_args *a) +{ + int rerr; + + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + rerr = au_diropq_remove(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + au_set_dbdiropq(a->src_dentry, a->src_bdiropq); + if (rerr) + RevertFailure("remove diropq %.*s", AuDLNPair(a->src_dentry)); +} + +static void au_ren_rev_rename(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = au_lkup_one(&a->src_dentry->d_name, a->src_h_parent, + a->br, /*nd*/NULL); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("au_lkup_one %.*s", AuDLNPair(a->src_dentry)); + return; + } + + rerr = vfsub_rename(a->dst_h_dir, + au_h_dptr(a->src_dentry, a->btgt), + a->src_h_dir, &a->h_path); + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ + if (rerr) + RevertFailure("rename %.*s", AuDLNPair(a->src_dentry)); +} + +static void au_ren_rev_cpup(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->dst_h_dentry; + rerr = vfsub_unlink(a->dst_h_dir, &a->h_path, /*force*/0); + au_set_h_dptr(a->src_dentry, a->btgt, NULL); + au_set_dbstart(a->src_dentry, a->src_bstart); + if (rerr) + RevertFailure("unlink %.*s", AuDLNPair(a->dst_h_dentry)); +} + +static void au_ren_rev_whtmp(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = au_lkup_one(&a->dst_dentry->d_name, a->dst_h_parent, + a->br, /*nd*/NULL); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lookup %.*s", AuDLNPair(a->dst_dentry)); + return; + } + if (a->h_path.dentry->d_inode) { + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + return; + } + + rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path); + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + if (!rerr) + au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); + else + RevertFailure("rename %.*s", AuDLNPair(a->h_dst)); +} + +static void au_ren_rev_whsrc(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->src_wh_dentry; + rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); + au_set_dbwh(a->src_dentry, a->src_bwh); + if (rerr) + RevertFailure("unlink %.*s", AuDLNPair(a->src_wh_dentry)); +} +#undef RevertFailure + +/* ---------------------------------------------------------------------- */ + +/* + * when we have to copyup the renaming entry, do it with the rename-target name + * in order to minimize the cost (the later actual rename is unnecessary). + * otherwise rename it on the target branch. + */ +static int au_ren_or_cpup(struct au_ren_args *a) +{ + int err; + struct dentry *d; + + d = a->src_dentry; + if (au_dbstart(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + if (au_ftest_ren(a->flags, DIROPQ) + && au_dbdiropq(d) == a->btgt) + au_fclr_ren(a->flags, DIROPQ); + AuDebugOn(au_dbstart(d) != a->btgt); + err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), + a->dst_h_dir, &a->h_path); + } else { + struct mutex *h_mtx = &a->src_h_dentry->d_inode->i_mutex; + struct file *h_file; + + au_fset_ren(a->flags, CPUP); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_set_dbstart(d, a->btgt); + au_set_h_dptr(d, a->btgt, dget(a->dst_h_dentry)); + h_file = au_h_open_pre(d, a->src_bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_single(d, a->btgt, a->src_bstart, -1, + !AuCpup_DTIME, a->dst_parent); + mutex_unlock(h_mtx); + au_h_open_post(d, a->src_bstart, h_file); + if (!err) { + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + au_update_dbstart(d); + } else { + au_set_h_dptr(d, a->btgt, NULL); + au_set_dbstart(d, a->src_bstart); + } + } + if (!err && a->h_dst) + /* it will be set to dinfo later */ + dget(a->h_dst); + + return err; +} + +/* cf. aufs_rmdir() */ +static int au_ren_del_whtmp(struct au_ren_args *a) +{ + int err; + struct inode *dir; + + dir = a->dst_dir; + SiMustAnyLock(dir->i_sb); + if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, + au_sbi(dir->i_sb)->si_dirwh) + || au_test_fs_remote(a->h_dst->d_sb)) { + err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); + if (unlikely(err)) + pr_warn("failed removing whtmp dir %.*s (%d), " + "ignored.\n", AuDLNPair(a->h_dst), err); + } else { + au_nhash_wh_free(&a->thargs->whlist); + a->thargs->whlist = a->whlist; + a->whlist.nh_num = 0; + au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); + dput(a->h_dst); + a->thargs = NULL; + } + + return 0; +} + +/* make it 'opaque' dir. */ +static int au_ren_diropq(struct au_ren_args *a) +{ + int err; + struct dentry *diropq; + + err = 0; + a->src_bdiropq = au_dbdiropq(a->src_dentry); + a->src_hinode = au_hi(a->src_inode, a->btgt); + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + diropq = au_diropq_create(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + dput(diropq); + + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->flags, ISDIR) && h_d->d_inode) { + err = -ENOMEM; + a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, GFP_NOFS); + if (unlikely(!a->thargs)) + goto out; + a->h_dst = dget(h_d); + } + + /* create whiteout for src_dentry */ + if (au_ftest_ren(a->flags, WHSRC)) { + a->src_bwh = au_dbwh(a->src_dentry); + AuDebugOn(a->src_bwh >= 0); + a->src_wh_dentry + = au_wh_create(a->src_dentry, a->btgt, a->src_h_parent); + err = PTR_ERR(a->src_wh_dentry); + if (IS_ERR(a->src_wh_dentry)) + goto out_thargs; + } + + /* lookup whiteout for dentry */ + if (au_ftest_ren(a->flags, WHDST)) { + h_d = au_wh_lkup(a->dst_h_parent, &a->dst_dentry->d_name, + a->br); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out_whsrc; + if (!h_d->d_inode) + dput(h_d); + else + a->dst_wh_dentry = h_d; + } + + /* rename dentry to tmpwh */ + if (a->thargs) { + err = au_whtmp_ren(a->dst_h_dentry, a->br); + if (unlikely(err)) + goto out_whdst; + + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + err = au_lkup_neg(d, a->btgt); + if (unlikely(err)) + goto out_whtmp; + a->dst_h_dentry = au_h_dptr(d, a->btgt); + } + + /* cpup src */ + if (a->dst_h_dentry->d_inode && a->src_bstart != a->btgt) { + struct mutex *h_mtx = &a->src_h_dentry->d_inode->i_mutex; + struct file *h_file; + + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + AuDebugOn(au_dbstart(a->src_dentry) != a->src_bstart); + h_file = au_h_open_pre(a->src_dentry, a->src_bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(a->src_dentry, a->btgt, -1, + !AuCpup_DTIME); + mutex_unlock(h_mtx); + au_h_open_post(a->src_dentry, a->src_bstart, h_file); + if (unlikely(err)) + goto out_whtmp; + } + + /* rename by vfs_rename or cpup */ + d = a->dst_dentry; + if (au_ftest_ren(a->flags, ISDIR) + && (a->dst_wh_dentry + || au_dbdiropq(d) == a->btgt + /* hide the lower to keep xino */ + || a->btgt < au_dbend(d) + || au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ))) + au_fset_ren(a->flags, DIROPQ); + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + if (au_ftest_ren(a->flags, DIROPQ)) { + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + } + + /* update target timestamps */ + AuDebugOn(au_dbstart(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->src_inode->i_ctime = a->h_path.dentry->d_inode->i_ctime; + + /* remove whiteout for dentry */ + if (a->dst_wh_dentry) { + a->h_path.dentry = a->dst_wh_dentry; + err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, + a->dst_dentry); + if (unlikely(err)) + goto out_diropq; + } + + /* remove whtmp */ + if (a->thargs) + au_ren_del_whtmp(a); /* ignore this error */ + + err = 0; + goto out_success; + +out_diropq: + if (au_ftest_ren(a->flags, DIROPQ)) + au_ren_rev_diropq(err, a); +out_rename: + if (!au_ftest_ren(a->flags, CPUP)) + au_ren_rev_rename(err, a); + else + au_ren_rev_cpup(err, a); + dput(a->h_dst); +out_whtmp: + if (a->thargs) + au_ren_rev_whtmp(err, a); +out_whdst: + dput(a->dst_wh_dentry); + a->dst_wh_dentry = NULL; +out_whsrc: + if (a->src_wh_dentry) + au_ren_rev_whsrc(err, a); +out_success: + dput(a->src_wh_dentry); + dput(a->dst_wh_dentry); +out_thargs: + if (a->thargs) { + dput(a->h_dst); + au_whtmp_rmdir_free(a->thargs); + a->thargs = NULL; + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if @dentry dir can be rename destination or not. + * success means, it is a logically empty dir. + */ +static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) +{ + return au_test_empty(dentry, whlist); +} + +/* + * test if @dentry dir can be rename source or not. + * if it can, return 0 and @children is filled. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch. + */ +static int may_rename_srcdir(struct dentry *dentry, aufs_bindex_t btgt) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + if (bstart != btgt) { + struct au_nhash whlist; + + SiMustAnyLock(dentry->d_sb); + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, + dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (bstart == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + AuWarn1("renaming dir who has child(ren) on multiple branches," + " is not supported\n"); + err = -EXDEV; + } + return err; +} + +/* side effect: sets whlist and h_dentry */ +static int au_ren_may_dir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + struct dentry *d; + + d = a->dst_dentry; + SiMustAnyLock(d->d_sb); + + err = 0; + if (au_ftest_ren(a->flags, ISDIR) && a->dst_inode) { + rdhash = au_sbi(d->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); + err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + au_set_dbstart(d, a->dst_bstart); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbstart(d, a->btgt); + } + a->dst_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (au_ftest_ren(a->flags, ISDIR)) { + err = may_rename_srcdir(d, a->btgt); + if (unlikely(err)) { + au_nhash_wh_free(&a->whlist); + a->whlist.nh_num = 0; + } + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * simple tests for rename. + * following the checks in vfs, plus the parent-child relationship. + */ +static int au_may_ren(struct au_ren_args *a) +{ + int err, isdir; + struct inode *h_inode; + + if (a->src_bstart == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->flags, ISDIR)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_bstart != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + h_inode = a->dst_h_dentry->d_inode; + isdir = !!au_ftest_ren(a->flags, ISDIR); + if (!a->dst_dentry->d_inode) { + if (unlikely(h_inode)) + goto out; + err = au_may_add(a->dst_dentry, a->btgt, a->dst_h_parent, + isdir); + } else { + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + err = au_may_del(a->dst_dentry, a->btgt, a->dst_h_parent, + isdir); + if (unlikely(err)) + goto out; + } + +out: + if (unlikely(err == -ENOENT || err == -EEXIST)) + err = -EIO; + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * locking order + * (VFS) + * - src_dir and dir by lock_rename() + * - inode if exitsts + * (aufs) + * - lock all + * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, + * + si_read_lock + * + di_write_lock2_child() + * + di_write_lock_child() + * + ii_write_lock_child() + * + di_write_lock_child2() + * + ii_write_lock_child2() + * + src_parent and parent + * + di_write_lock_parent() + * + ii_write_lock_parent() + * + di_write_lock_parent2() + * + ii_write_lock_parent2() + * + lower src_dir and dir by vfsub_lock_rename() + * + verify the every relationships between child and parent. if any + * of them failed, unlock all and return -EBUSY. + */ +static void au_ren_unlock(struct au_ren_args *a) +{ + struct super_block *sb; + + sb = a->dst_dentry->d_sb; + if (au_ftest_ren(a->flags, MNT_WRITE)) + mnt_drop_write(a->br->br_mnt); + vfsub_unlock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); +} + +static int au_ren_lock(struct au_ren_args *a) +{ + int err; + unsigned int udba; + + err = 0; + a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); + a->src_hdir = au_hi(a->src_dir, a->btgt); + a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); + a->dst_hdir = au_hi(a->dst_dir, a->btgt); + a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + udba = au_opt_udba(a->src_dentry->d_sb); + if (unlikely(a->src_hdir->hi_inode != a->src_h_parent->d_inode + || a->dst_hdir->hi_inode != a->dst_h_parent->d_inode)) + err = au_busy_or_stale(); + if (!err && au_dbstart(a->src_dentry) == a->btgt) + err = au_h_verify(a->src_h_dentry, udba, + a->src_h_parent->d_inode, a->src_h_parent, + a->br); + if (!err && au_dbstart(a->dst_dentry) == a->btgt) + err = au_h_verify(a->dst_h_dentry, udba, + a->dst_h_parent->d_inode, a->dst_h_parent, + a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (unlikely(err)) + goto out_unlock; + au_fset_ren(a->flags, MNT_WRITE); + goto out; /* success */ + } + + err = au_busy_or_stale(); + +out_unlock: + au_ren_unlock(a); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_ren_refresh_dir(struct au_ren_args *a) +{ + struct inode *dir; + + dir = a->dst_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->src_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + + if (au_ibstart(dir) == a->btgt) + au_cpup_attr_timesizes(dir); + + if (au_ftest_ren(a->flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) + au_cpup_attr_nlink(dir, /*force*/1); + if (au_ibstart(dir) == a->btgt) + au_cpup_attr_timesizes(dir); +} + +static void au_ren_refresh(struct au_ren_args *a) +{ + aufs_bindex_t bend, bindex; + struct dentry *d, *h_d; + struct inode *i, *h_i; + struct super_block *sb; + + d = a->dst_dentry; + d_drop(d); + if (a->h_dst) + /* already dget-ed by au_ren_or_cpup() */ + au_set_h_dptr(d, a->btgt, a->h_dst); + + i = a->dst_inode; + if (i) { + if (!au_ftest_ren(a->flags, ISDIR)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else { + bend = a->btgt; + for (bindex = au_dbstart(d); bindex < bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbend(d, a->btgt); + + sb = d->d_sb; + i = a->src_inode; + if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) + return; /* success */ + + bend = au_ibend(i); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_i = au_h_iptr(i, bindex); + if (h_i) { + au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + au_set_h_iptr(i, bindex, NULL, 0); + } + } + au_set_ibend(i, a->btgt); +} + +/* ---------------------------------------------------------------------- */ + +/* mainly for link(2) and rename(2) */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) +{ + aufs_bindex_t bdiropq, bwh; + struct dentry *parent; + struct au_branch *br; + + parent = dentry->d_parent; + IMustLock(parent->d_inode); /* dir is locked */ + + bdiropq = au_dbdiropq(parent); + bwh = au_dbwh(dentry); + br = au_sbr(dentry->d_sb, btgt); + if (au_br_rdonly(br) + || (0 <= bdiropq && bdiropq < btgt) + || (0 <= bwh && bwh < btgt)) + btgt = -1; + + AuDbg("btgt %d\n", btgt); + return btgt; +} + +/* sets src_bstart, dst_bstart and btgt */ +static int au_ren_wbr(struct au_ren_args *a) +{ + int err; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + a->src_bstart = au_dbstart(a->src_dentry); + a->dst_bstart = au_dbstart(a->dst_dentry); + if (au_ftest_ren(a->flags, ISDIR)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_bstart; + if (a->dst_inode && a->dst_bstart < a->src_bstart) + wr_dir_args.force_btgt = a->dst_bstart; + wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); + err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); + a->btgt = err; + + return err; +} + +static void au_ren_dt(struct au_ren_args *a) +{ + a->h_path.dentry = a->src_h_parent; + au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) { + a->h_path.dentry = a->dst_h_parent; + au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); + } + + au_fclr_ren(a->flags, DT_DSTDIR); + if (!au_ftest_ren(a->flags, ISDIR)) + return; + + a->h_path.dentry = a->src_h_dentry; + au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); + if (a->dst_h_dentry->d_inode) { + au_fset_ren(a->flags, DT_DSTDIR); + a->h_path.dentry = a->dst_h_dentry; + au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); + } +} + +static void au_ren_rev_dt(int err, struct au_ren_args *a) +{ + struct dentry *h_d; + struct mutex *h_mtx; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->flags, ISDIR) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &h_d->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + mutex_unlock(h_mtx); + + if (au_ftest_ren(a->flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &h_d->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + mutex_unlock(h_mtx); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry) +{ + int err, flags; + /* reduce stack space */ + struct au_ren_args *a; + + AuDbg("%.*s, %.*s\n", AuDLNPair(_src_dentry), AuDLNPair(_dst_dentry)); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->src_dir = _src_dir; + a->src_dentry = _src_dentry; + a->src_inode = a->src_dentry->d_inode; + a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ + a->dst_dir = _dst_dir; + a->dst_dentry = _dst_dentry; + a->dst_inode = a->dst_dentry->d_inode; + a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ + if (a->dst_inode) { + IMustLock(a->dst_inode); + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (S_ISDIR(a->src_inode->i_mode)) { + au_fset_ren(a->flags, ISDIR); + if (unlikely(a->dst_inode && !S_ISDIR(a->dst_inode->i_mode))) + goto out_free; + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + AuLock_DIR | flags); + } else + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + flags); + if (unlikely(err)) + goto out_free; + + err = au_d_hashed_positive(a->src_dentry); + if (unlikely(err)) + goto out_unlock; + err = -ENOENT; + if (a->dst_inode) { + /* + * If it is a dir, VFS unhash dst_dentry before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!S_ISDIR(a->dst_inode->i_mode)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err)) + goto out_unlock; + } else if (unlikely(IS_DEADDIR(a->dst_inode))) + goto out_unlock; + } else if (unlikely(d_unhashed(a->dst_dentry))) + goto out_unlock; + + /* + * is it possible? + * yes, it happend (in linux-3.3-rcN) but I don't know why. + * there may exist a problem somewhere else. + */ + err = -EINVAL; + if (unlikely(a->dst_parent->d_inode == a->src_dentry->d_inode)) + goto out_unlock; + + au_fset_ren(a->flags, ISSAMEDIR); /* temporary */ + di_write_lock_parent(a->dst_parent); + + /* which branch we process */ + err = au_ren_wbr(a); + if (unlikely(err < 0)) + goto out_parent; + a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); + a->h_path.mnt = a->br->br_mnt; + + /* are they available to be renamed */ + err = au_ren_may_dir(a); + if (unlikely(err)) + goto out_children; + + /* prepare the writable parent dir on the same branch */ + if (a->dst_bstart == a->btgt) { + au_fset_ren(a->flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + if (a->src_dir != a->dst_dir) { + /* + * this temporary unlock is safe, + * because both dir->i_mutex are locked. + */ + di_write_unlock(a->dst_parent); + di_write_lock_parent(a->src_parent); + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, /*isdir*/1); + au_fclr_ren(a->flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->flags, WHSRC); + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + goto out_children; + + if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) + err = au_may_ren(a); + else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + if (unlikely(err)) + goto out_hdir; + + /* store timestamps to be revertible */ + au_ren_dt(a); + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dt; + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +out_dt: + au_ren_rev_dt(err, a); +out_hdir: + au_ren_unlock(a); +out_children: + au_nhash_wh_free(&a->whlist); + if (err && a->dst_inode && a->dst_bstart != a->btgt) { + AuDbg("bstart %d, btgt %d\n", a->dst_bstart, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbstart(a->dst_dentry, a->dst_bstart); + } +out_parent: + if (!err) + d_move(a->src_dentry, a->dst_dentry); + else { + au_update_dbstart(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->flags, ISSAMEDIR)) + di_write_unlock(a->dst_parent); + else + di_write_unlock2(a->src_parent, a->dst_parent); +out_unlock: + aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); +out_free: + iput(a->dst_inode); + if (a->thargs) + au_whtmp_rmdir_free(a->thargs); + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/dinfo.c +++ linux-3.5.0/ubuntu/aufs/dinfo.c @@ -0,0 +1,543 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dentry private data + */ + +#include "aufs.h" + +void au_di_init_once(void *_dinfo) +{ + struct au_dinfo *dinfo = _dinfo; + static struct lock_class_key aufs_di; + + au_rw_init(&dinfo->di_rwsem); + au_rw_class(&dinfo->di_rwsem, &aufs_di); +} + +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) +{ + struct au_dinfo *dinfo; + int nbr, i; + + dinfo = au_cache_alloc_dinfo(); + if (unlikely(!dinfo)) + goto out; + + nbr = au_sbend(sb) + 1; + if (nbr <= 0) + nbr = 1; + dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); + if (dinfo->di_hdentry) { + au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + dinfo->di_bwh = -1; + dinfo->di_bdiropq = -1; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; + goto out; + } + + au_cache_free_dinfo(dinfo); + dinfo = NULL; + +out: + return dinfo; +} + +void au_di_free(struct au_dinfo *dinfo) +{ + struct au_hdentry *p; + aufs_bindex_t bend, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_bstart; + if (bindex >= 0) { + bend = dinfo->di_bend; + p = dinfo->di_hdentry + bindex; + while (bindex++ <= bend) + au_hdput(p++); + } + kfree(dinfo->di_hdentry); + au_cache_free_dinfo(dinfo); +} + +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) +{ + struct au_hdentry *p; + aufs_bindex_t bi; + + AuRwMustWriteLock(&a->di_rwsem); + AuRwMustWriteLock(&b->di_rwsem); + +#define DiSwap(v, name) \ + do { \ + v = a->di_##name; \ + a->di_##name = b->di_##name; \ + b->di_##name = v; \ + } while (0) + + DiSwap(p, hdentry); + DiSwap(bi, bstart); + DiSwap(bi, bend); + DiSwap(bi, bwh); + DiSwap(bi, bdiropq); + /* smp_mb(); */ + +#undef DiSwap +} + +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) +{ + AuRwMustWriteLock(&dst->di_rwsem); + AuRwMustWriteLock(&src->di_rwsem); + + dst->di_bstart = src->di_bstart; + dst->di_bend = src->di_bend; + dst->di_bwh = src->di_bwh; + dst->di_bdiropq = src->di_bdiropq; + /* smp_mb(); */ +} + +int au_di_init(struct dentry *dentry) +{ + int err; + struct super_block *sb; + struct au_dinfo *dinfo; + + err = 0; + sb = dentry->d_sb; + dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); + if (dinfo) { + atomic_set(&dinfo->di_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + dentry->d_fsdata = dinfo; + } else + err = -ENOMEM; + + return err; +} + +void au_di_fin(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + + dinfo = au_di(dentry); + AuRwDestroy(&dinfo->di_rwsem); + au_di_free(dinfo); +} + +int au_di_realloc(struct au_dinfo *dinfo, int nbr) +{ + int err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bend + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS); + if (hdp) { + dinfo->di_hdentry = hdp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void do_ii_write_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_write_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_write_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_write_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_write_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_write_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_write_lock_parent3(inode); + break; + default: + BUG(); + } +} + +static void do_ii_read_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_read_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_read_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_read_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_read_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_read_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_read_lock_parent3(inode); + break; + default: + BUG(); + } +} + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc) +{ + au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d->d_inode) { + if (au_ftest_lock(flags, IW)) + do_ii_write_lock(d->d_inode, lsc); + else if (au_ftest_lock(flags, IR)) + do_ii_read_lock(d->d_inode, lsc); + } +} + +void di_read_unlock(struct dentry *d, int flags) +{ + if (d->d_inode) { + if (au_ftest_lock(flags, IW)) { + au_dbg_verify_dinode(d); + ii_write_unlock(d->d_inode); + } else if (au_ftest_lock(flags, IR)) { + au_dbg_verify_dinode(d); + ii_read_unlock(d->d_inode); + } + } + au_rw_read_unlock(&au_di(d)->di_rwsem); +} + +void di_downgrade_lock(struct dentry *d, int flags) +{ + if (d->d_inode && au_ftest_lock(flags, IR)) + ii_downgrade_lock(d->d_inode); + au_rw_dgrade_lock(&au_di(d)->di_rwsem); +} + +void di_write_lock(struct dentry *d, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d->d_inode) + do_ii_write_lock(d->d_inode, lsc); +} + +void di_write_unlock(struct dentry *d) +{ + au_dbg_verify_dinode(d); + if (d->d_inode) + ii_write_unlock(d->d_inode); + au_rw_write_unlock(&au_di(d)->di_rwsem); +} + +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d1->d_inode == d2->d_inode + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + /* there should be no races */ + di_write_lock_child(d2); + di_write_lock_child2(d1); + } +} + +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d1->d_inode == d2->d_inode + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + /* there should be no races */ + di_write_lock_parent(d2); + di_write_lock_parent2(d1); + } +} + +void di_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock(d1); + if (d1->d_inode == d2->d_inode) + au_rw_write_unlock(&au_di(d2)->di_rwsem); + else + di_write_unlock(d2); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *d; + + DiMustAnyLock(dentry); + + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_di(dentry)->di_hdentry[0 + bindex].hd_dentry; + AuDebugOn(d && d->d_count <= 0); + return d; +} + +/* + * extended version of au_h_dptr(). + * returns a hashed and positive h_dentry in bindex, NULL, or error. + */ +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + inode = dentry->d_inode; + AuDebugOn(!inode); + + h_dentry = NULL; + if (au_dbstart(dentry) <= bindex + && bindex <= au_dbend(dentry)) + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && !au_d_hashed_positive(h_dentry)) { + dget(h_dentry); + goto out; /* success */ + } + + AuDebugOn(bindex < au_ibstart(inode)); + AuDebugOn(au_ibend(inode) < bindex); + h_inode = au_h_iptr(inode, bindex); + h_dentry = d_find_alias(h_inode); + if (h_dentry) { + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + } else + goto out; + } + + if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { + h_dentry = au_plink_lkup(inode, bindex); + AuDebugOn(!h_dentry); + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + h_dentry = NULL; + } + } + +out: + AuDbgDentry(h_dentry); + return h_dentry; +} + +aufs_bindex_t au_dbtail(struct dentry *dentry) +{ + aufs_bindex_t bend, bwh; + + bend = au_dbend(dentry); + if (0 <= bend) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bend) + return bwh - 1; + } + return bend; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bend, bopq; + + bend = au_dbtail(dentry); + if (0 <= bend) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bend) + bend = bopq; + } + return bend; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_hdentry *hd = au_di(dentry)->di_hdentry + bindex; + struct au_branch *br; + + DiMustWriteLock(dentry); + + au_hdput(hd); + hd->hd_dentry = h_dentry; + if (h_dentry) { + br = au_sbr(dentry->d_sb, bindex); + hd->hd_id = br->br_id; + } +} + +int au_dbrange_test(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart, bend; + + err = 0; + bstart = au_dbstart(dentry); + bend = au_dbend(dentry); + if (bstart >= 0) + AuDebugOn(bend < 0 && bstart > bend); + else { + err = -EIO; + AuDebugOn(bend >= 0); + } + + return err; +} + +int au_digen_test(struct dentry *dentry, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(au_digen(dentry) != sigen + || au_iigen_test(dentry->d_inode, sigen))) + err = -EIO; + + return err; +} + +void au_update_digen(struct dentry *dentry) +{ + atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +void au_update_dbrange(struct dentry *dentry, int do_put_zero) +{ + struct au_dinfo *dinfo; + struct dentry *h_d; + struct au_hdentry *hdp; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_bstart < 0) + return; + + hdp = dinfo->di_hdentry; + if (do_put_zero) { + aufs_bindex_t bindex, bend; + + bend = dinfo->di_bend; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++) { + h_d = hdp[0 + bindex].hd_dentry; + if (h_d && !h_d->d_inode) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_bstart = -1; + while (++dinfo->di_bstart <= dinfo->di_bend) + if (hdp[0 + dinfo->di_bstart].hd_dentry) + break; + if (dinfo->di_bstart > dinfo->di_bend) { + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + return; + } + + dinfo->di_bend++; + while (0 <= --dinfo->di_bend) + if (hdp[0 + dinfo->di_bend].hd_dentry) + break; + AuDebugOn(dinfo->di_bstart > dinfo->di_bend || dinfo->di_bend < 0); +} + +void au_update_dbstart(struct dentry *dentry) +{ + aufs_bindex_t bindex, bend; + struct dentry *h_dentry; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (h_dentry->d_inode) { + au_set_dbstart(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbend(struct dentry *dentry) +{ + aufs_bindex_t bindex, bstart; + struct dentry *h_dentry; + + bstart = au_dbstart(dentry); + for (bindex = au_dbend(dentry); bindex >= bstart; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (h_dentry->d_inode) { + au_set_dbend(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) +{ + aufs_bindex_t bindex, bend; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} --- linux-3.5.0.orig/ubuntu/aufs/whout.h +++ linux-3.5.0/ubuntu/aufs/whout.h @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#ifndef __AUFS_WHOUT_H__ +#define __AUFS_WHOUT_H__ + +#ifdef __KERNEL__ + +#include "dir.h" + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); +struct au_branch; +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, + struct au_branch *br, int try_sio); +int au_diropq_test(struct dentry *h_dentry, struct au_branch *br); +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry); +int au_wh_init(struct dentry *h_parent, struct au_branch *br, + struct super_block *sb); + +/* diropq flags */ +#define AuDiropq_CREATE 1 +#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) +#define au_fset_diropq(flags, name) \ + do { (flags) |= AuDiropq_##name; } while (0) +#define au_fclr_diropq(flags, name) \ + do { (flags) &= ~AuDiropq_##name; } while (0) + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags); +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br); +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent); + +/* real rmdir for the whiteout-ed dir */ +struct au_whtmp_rmdir { + struct inode *dir; + struct au_branch *br; + struct dentry *wh_dentry; + struct au_nhash whlist; +}; + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist); +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args); + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_diropq_create(struct dentry *dentry, + aufs_bindex_t bindex) +{ + return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); +} + +static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) +{ + return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dentry.c +++ linux-3.5.0/ubuntu/aufs/dentry.c @@ -0,0 +1,1140 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * lookup and dentry operations + */ + +#include +#include "aufs.h" + +static void au_h_nd(struct nameidata *h_nd, struct nameidata *nd) +{ + if (nd) { + *h_nd = *nd; + + /* + * gave up supporting LOOKUP_CREATE/OPEN for lower fs, + * due to whiteout and branch permission. + */ + h_nd->flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE + | LOOKUP_FOLLOW | LOOKUP_EXCL); + /* unnecessary? */ + h_nd->intent.open.file = NULL; + } else + memset(h_nd, 0, sizeof(*h_nd)); +} + +struct au_lkup_one_args { + struct dentry **errp; + struct qstr *name; + struct dentry *h_parent; + struct au_branch *br; + struct nameidata *nd; +}; + +struct dentry *au_lkup_one(struct qstr *name, struct dentry *h_parent, + struct au_branch *br, struct nameidata *nd) +{ + struct dentry *h_dentry; + int err; + struct nameidata h_nd; + + if (au_test_fs_null_nd(h_parent->d_sb)) + return vfsub_lookup_one_len(name->name, h_parent, name->len); + + au_h_nd(&h_nd, nd); + h_nd.path.dentry = h_parent; + h_nd.path.mnt = br->br_mnt; + + err = vfsub_name_hash(name->name, &h_nd.last, name->len); + h_dentry = ERR_PTR(err); + if (!err) { + path_get(&h_nd.path); + h_dentry = vfsub_lookup_hash(&h_nd); + path_put(&h_nd.path); + } + + AuTraceErrPtr(h_dentry); + return h_dentry; +} + +static void au_call_lkup_one(void *args) +{ + struct au_lkup_one_args *a = args; + *a->errp = au_lkup_one(a->name, a->h_parent, a->br, a->nd); +} + +#define AuLkup_ALLOW_NEG 1 +#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) +#define au_fset_lkup(flags, name) \ + do { (flags) |= AuLkup_##name; } while (0) +#define au_fclr_lkup(flags, name) \ + do { (flags) &= ~AuLkup_##name; } while (0) + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; + struct nameidata *nd; +}; + +/* + * returns positive/negative dentry, NULL or an error. + * NULL means whiteout-ed or not-found. + */ +static struct dentry* +au_do_lookup(struct dentry *h_parent, struct dentry *dentry, + aufs_bindex_t bindex, struct qstr *wh_name, + struct au_do_lookup_args *args) +{ + struct dentry *h_dentry; + struct inode *h_inode, *inode; + struct au_branch *br; + int wh_found, opq; + unsigned char wh_able; + const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); + + wh_found = 0; + br = au_sbr(dentry->d_sb, bindex); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) + wh_found = au_wh_test(h_parent, wh_name, br, /*try_sio*/0); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; + if (unlikely(wh_found < 0)) + goto out; + + /* We found a whiteout */ + /* au_set_dbend(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + h_dentry = au_lkup_one(&dentry->d_name, h_parent, br, args->nd); + if (IS_ERR(h_dentry)) + goto out; + + h_inode = h_dentry->d_inode; + if (!h_inode) { + if (!allow_neg) + goto out_neg; + } else if (wh_found + || (args->type && args->type != (h_inode->i_mode & S_IFMT))) + goto out_neg; + + if (au_dbend(dentry) <= bindex) + au_set_dbend(dentry, bindex); + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + + inode = dentry->d_inode; + if (!h_inode || !S_ISDIR(h_inode->i_mode) || !wh_able + || (inode && !S_ISDIR(inode->i_mode))) + goto out; /* success */ + + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + opq = au_diropq_test(h_dentry, br); + mutex_unlock(&h_inode->i_mutex); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); + else if (unlikely(opq < 0)) { + au_set_h_dptr(dentry, bindex, NULL); + h_dentry = ERR_PTR(opq); + } + goto out; + +out_neg: + dput(h_dentry); + h_dentry = NULL; +out: + return h_dentry; +} + +static int au_test_shwh(struct super_block *sb, const struct qstr *name) +{ + if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) + && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) + return -EPERM; + return 0; +} + +/* + * returns the number of lower positive dentries, + * otherwise an error. + * can be called at unlinking with @type is zero. + */ +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, + struct nameidata *nd) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir; + struct qstr whname; + struct au_do_lookup_args args = { + .flags = 0, + .type = type, + .nd = nd + }; + const struct qstr *name = &dentry->d_name; + struct dentry *parent; + struct inode *inode; + + err = au_test_shwh(dentry->d_sb, name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&whname, name); + if (unlikely(err)) + goto out; + + inode = dentry->d_inode; + isdir = !!(inode && S_ISDIR(inode->i_mode)); + if (!type) + au_fset_lkup(args.flags, ALLOW_NEG); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = bstart; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (h_dentry->d_inode) + npositive++; + if (type != S_IFDIR) + break; + continue; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent) + continue; + h_dir = h_parent->d_inode; + if (!h_dir || !S_ISDIR(h_dir->i_mode)) + continue; + + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &whname, + &args); + mutex_unlock(&h_dir->i_mutex); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out_parent; + au_fclr_lkup(args.flags, ALLOW_NEG); + + if (au_dbwh(dentry) >= 0) + break; + if (!h_dentry) + continue; + h_inode = h_dentry->d_inode; + if (!h_inode) + continue; + npositive++; + if (!args.type) + args.type = h_inode->i_mode & S_IFMT; + if (args.type != S_IFDIR) + break; + else if (isdir) { + /* the type of lower may be different */ + bdiropq = au_dbdiropq(dentry); + if (bdiropq >= 0 && bdiropq <= bindex) + break; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbstart(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && au_dbstart(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %.*s, err %d\n", + AuDLNPair(dentry), err); + } + +out_parent: + dput(parent); + kfree(whname.name); +out: + return err; +} + +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent, + struct au_branch *br) +{ + struct dentry *dentry; + int wkq_err; + + if (!au_test_h_perm_sio(parent->d_inode, MAY_EXEC)) + dentry = au_lkup_one(name, parent, br, /*nd*/NULL); + else { + struct au_lkup_one_args args = { + .errp = &dentry, + .name = name, + .h_parent = parent, + .br = br, + .nd = NULL + }; + + wkq_err = au_wkq_wait(au_call_lkup_one, &args); + if (unlikely(wkq_err)) + dentry = ERR_PTR(wkq_err); + } + + return dentry; +} + +/* + * lookup @dentry on @bindex which should be negative. + */ +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err; + struct dentry *parent, *h_parent, *h_dentry; + + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bindex); + h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent, + au_sbr(dentry->d_sb, bindex)); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; + if (unlikely(h_dentry->d_inode)) { + err = -EIO; + AuIOErr("%.*s should be negative on b%d.\n", + AuDLNPair(h_dentry), bindex); + dput(h_dentry); + goto out; + } + + err = 0; + if (bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + if (au_dbend(dentry) < bindex) + au_set_dbend(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* subset of struct inode */ +struct au_iattr { + unsigned long i_ino; + /* unsigned int i_nlink; */ + kuid_t i_uid; + kgid_t i_gid; + u64 i_version; +/* + loff_t i_size; + blkcnt_t i_blocks; +*/ + umode_t i_mode; +}; + +static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) +{ + ia->i_ino = h_inode->i_ino; + /* ia->i_nlink = h_inode->i_nlink; */ + ia->i_uid = h_inode->i_uid; + ia->i_gid = h_inode->i_gid; + ia->i_version = h_inode->i_version; +/* + ia->i_size = h_inode->i_size; + ia->i_blocks = h_inode->i_blocks; +*/ + ia->i_mode = (h_inode->i_mode & S_IFMT); +} + +static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) +{ + return ia->i_ino != h_inode->i_ino + /* || ia->i_nlink != h_inode->i_nlink */ + || !uid_eq(ia->i_uid, h_inode->i_uid) + || !gid_eq(ia->i_gid, h_inode->i_gid) + || ia->i_version != h_inode->i_version +/* + || ia->i_size != h_inode->i_size + || ia->i_blocks != h_inode->i_blocks +*/ + || ia->i_mode != (h_inode->i_mode & S_IFMT); +} + +static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, + struct au_branch *br) +{ + int err; + struct au_iattr ia; + struct inode *h_inode; + struct dentry *h_d; + struct super_block *h_sb; + + err = 0; + memset(&ia, -1, sizeof(ia)); + h_sb = h_dentry->d_sb; + h_inode = h_dentry->d_inode; + if (h_inode) + au_iattr_save(&ia, h_inode); + else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) + /* nfs d_revalidate may return 0 for negative dentry */ + /* fuse d_revalidate always return 0 for negative dentry */ + goto out; + + /* main purpose is namei.c:cached_lookup() and d_revalidate */ + h_d = au_lkup_one(&h_dentry->d_name, h_parent, br, /*nd*/NULL); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out; + + err = 0; + if (unlikely(h_d != h_dentry + || h_d->d_inode != h_inode + || (h_inode && au_iattr_test(&ia, h_inode)))) + err = au_busy_or_stale(); + dput(h_d); + +out: + AuTraceErr(err); + return err; +} + +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br) +{ + int err; + + err = 0; + if (udba == AuOpt_UDBA_REVAL + && !au_test_fs_remote(h_dentry->d_sb)) { + IMustLock(h_dir); + err = (h_dentry->d_parent->d_inode != h_dir); + } else if (udba != AuOpt_UDBA_NONE) + err = au_h_verify_dentry(h_dentry, h_parent, br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) +{ + int err; + aufs_bindex_t new_bindex, bindex, bend, bwh, bdiropq; + struct au_hdentry tmp, *p, *q; + struct au_dinfo *dinfo; + struct super_block *sb; + + DiMustWriteLock(dentry); + + sb = dentry->d_sb; + dinfo = au_di(dentry); + bend = dinfo->di_bend; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + p = dinfo->di_hdentry + dinfo->di_bstart; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++, p++) { + if (!p->hd_dentry) + continue; + + new_bindex = au_br_index(sb, p->hd_id); + if (new_bindex == bindex) + continue; + + if (dinfo->di_bwh == bindex) + bwh = new_bindex; + if (dinfo->di_bdiropq == bindex) + bdiropq = new_bindex; + if (new_bindex < 0) { + au_hdput(p); + p->hd_dentry = NULL; + continue; + } + + /* swap two lower dentries, and loop again */ + q = dinfo->di_hdentry + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbend(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbend(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + bend = au_dbend(parent); + p = dinfo->di_hdentry; + for (bindex = 0; bindex <= bend; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_bstart = bindex; + break; + } + + if (dinfo->di_bstart >= 0) { + p = dinfo->di_hdentry + bend; + for (bindex = bend; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bend = bindex; + err = 0; + break; + } + } + + return err; +} + +static void au_do_hide(struct dentry *dentry) +{ + struct inode *inode; + + inode = dentry->d_inode; + if (inode) { + if (!S_ISDIR(inode->i_mode)) { + if (inode->i_nlink && !d_unhashed(dentry)) + drop_nlink(inode); + } else { + clear_nlink(inode); + /* stop next lookup */ + inode->i_flags |= S_DEAD; + } + smp_mb(); /* necessary? */ + } + d_drop(dentry); +} + +static int au_hide_children(struct dentry *parent) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *dentry; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, parent, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + /* in reverse order */ + for (i = dpages.ndpage - 1; i >= 0; i--) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = ndentry - 1; j >= 0; j--) { + dentry = dpage->dentries[j]; + if (dentry != parent) + au_do_hide(dentry); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static void au_hide(struct dentry *dentry) +{ + int err; + struct inode *inode; + + AuDbgDentry(dentry); + inode = dentry->d_inode; + if (inode && S_ISDIR(inode->i_mode)) { + /* shrink_dcache_parent(dentry); */ + err = au_hide_children(dentry); + if (unlikely(err)) + AuIOErr("%.*s, failed hiding children, ignored %d\n", + AuDLNPair(dentry), err); + } + au_do_hide(dentry); +} + +/* + * By adding a dirty branch, a cached dentry may be affected in various ways. + * + * a dirty branch is added + * - on the top of layers + * - in the middle of layers + * - to the bottom of layers + * + * on the added branch there exists + * - a whiteout + * - a diropq + * - a same named entry + * + exist + * * negative --> positive + * * positive --> positive + * - type is unchanged + * - type is changed + * + doesn't exist + * * negative --> negative + * * positive --> negative (rejected by au_br_del() for non-dir case) + * - none + */ +static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, + struct au_dinfo *tmp) +{ + int err; + aufs_bindex_t bindex, bend; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_bstart < 0); + orig_h.dentry = dinfo->di_hdentry[dinfo->di_bstart].hd_dentry; + orig_h.inode = orig_h.dentry->d_inode; + orig_h.mode = 0; + if (orig_h.inode) + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + memset(&tmp_h, 0, sizeof(tmp_h)); + if (tmp->di_bstart >= 0) { + tmp_h.dentry = tmp->di_hdentry[tmp->di_bstart].hd_dentry; + tmp_h.inode = tmp_h.dentry->d_inode; + if (tmp_h.inode) + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; + } + + inode = dentry->d_inode; + if (!orig_h.inode) { + AuDbg("nagative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_bstart >= 0 + && tmp->di_bstart < dinfo->di_bstart) { + AuDebugOn(tmp->di_bstart != tmp->di_bend); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + au_set_h_dptr(dentry, dinfo->di_bstart, NULL); + au_di_cp(dinfo, tmp); + hd = tmp->di_hdentry + tmp->di_bstart; + au_set_h_dptr(dentry, tmp->di_bstart, + dget(hd->hd_dentry)); + } + au_dbg_verify_dinode(dentry); + } else { + AuDbg("negative --> positive\n"); + /* + * similar to the behaviour of creating with bypassing + * aufs. + * unhash it in order to force an error in the + * succeeding create operation. + * we should not set S_DEAD here. + */ + d_drop(dentry); + /* au_di_swap(tmp, dinfo); */ + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive originally\n"); + /* inode may be NULL */ + AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); + if (!tmp_h.inode) { + AuDbg("positive --> negative\n"); + /* or bypassing aufs */ + au_hide(dentry); + if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_bstart) + dinfo->di_bwh = tmp->di_bwh; + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else if (orig_h.mode == tmp_h.mode) { + AuDbg("positive --> positive, same type\n"); + if (!S_ISDIR(orig_h.mode) + && dinfo->di_bstart > tmp->di_bstart) { + /* + * similar to the behaviour of removing and + * creating. + */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else { + /* fill empty slots */ + if (dinfo->di_bstart > tmp->di_bstart) + dinfo->di_bstart = tmp->di_bstart; + if (dinfo->di_bend < tmp->di_bend) + dinfo->di_bend = tmp->di_bend; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + hd = tmp->di_hdentry; + bend = dinfo->di_bend; + for (bindex = tmp->di_bstart; bindex <= bend; + bindex++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd[bindex].hd_dentry; + if (!h_dentry) + continue; + h_inode = h_dentry->d_inode; + AuDebugOn(!h_inode); + AuDebugOn(orig_h.mode + != (h_inode->i_mode + & S_IFMT)); + au_set_h_dptr(dentry, bindex, + dget(h_dentry)); + } + err = au_refresh_hinode(inode, dentry); + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive --> positive, different type\n"); + /* similar to the behaviour of removing and creating */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } + } + +out: + return err; +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange; + unsigned int sigen; + struct au_dinfo *dinfo, *tmp; + struct super_block *sb; + struct inode *inode; + + DiMustWriteLock(dentry); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(!parent->d_inode); + + sb = dentry->d_sb; + inode = dentry->d_inode; + sigen = au_sigen(sb); + err = au_digen_test(parent, sigen); + if (unlikely(err)) + goto out; + + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + ebrange = au_dbrange_test(dentry); + if (!ebrange) + ebrange = au_do_refresh_hdentry(dentry, parent); + + if (d_unhashed(dentry) || ebrange) { + AuDebugOn(au_dbstart(dentry) < 0 && au_dbend(dentry) >= 0); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + if (!err) + goto out_dgen; /* success */ + goto out; + } + + /* temporary dinfo */ + AuDbgDentry(dentry); + err = -ENOMEM; + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + /* + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ + err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0, /*nd*/NULL); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) + err = 0; + if (err >= 0) { + /* compare/refresh by dinfo */ + AuDbgDentry(dentry); + err = au_refresh_by_dinfo(dentry, dinfo, tmp); + au_dbg_verify_dinode(dentry); + AuTraceErr(err); + } + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err)) + goto out; + +out_dgen: + au_update_digen(dentry); +out: + if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { + AuIOErr("failed refreshing %.*s, %d\n", + AuDLNPair(dentry), err); + AuDbgDentry(dentry); + } + AuTraceErr(err); + return err; +} + +static noinline_for_stack +int au_do_h_d_reval(struct dentry *h_dentry, struct nameidata *nd, + struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, valid; + int (*reval)(struct dentry *, struct nameidata *); + + err = 0; + if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) + goto out; + reval = h_dentry->d_op->d_revalidate; + + AuDbg("b%d\n", bindex); + if (au_test_fs_null_nd(h_dentry->d_sb)) + /* it may return tri-state */ + valid = reval(h_dentry, NULL); + else { + struct nameidata h_nd; + int locked; + struct dentry *parent; + + au_h_nd(&h_nd, nd); + parent = nd->path.dentry; + locked = (nd && nd->path.dentry != dentry); + if (locked) + di_read_lock_parent(parent, AuLock_IR); + BUG_ON(bindex > au_dbend(parent)); + h_nd.path.dentry = au_h_dptr(parent, bindex); + BUG_ON(!h_nd.path.dentry); + h_nd.path.mnt = au_sbr(parent->d_sb, bindex)->br_mnt; + path_get(&h_nd.path); + valid = reval(h_dentry, &h_nd); + path_put(&h_nd.path); + if (locked) + di_read_unlock(parent, AuLock_IR); + } + + if (unlikely(valid < 0)) + err = valid; + else if (!valid) + err = -EINVAL; + +out: + AuTraceErr(err); + return err; +} + +/* todo: remove this */ +static int h_d_revalidate(struct dentry *dentry, struct inode *inode, + struct nameidata *nd, int do_udba) +{ + int err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, bstart, ibs, ibe; + unsigned char plus, unhashed, is_root, h_plus; + struct inode *h_inode, *h_cached_inode; + struct dentry *h_dentry; + struct qstr *name, *h_name; + + err = 0; + plus = 0; + mode = 0; + ibs = -1; + ibe = -1; + unhashed = !!d_unhashed(dentry); + is_root = !!IS_ROOT(dentry); + name = &dentry->d_name; + + /* + * Theoretically, REVAL test should be unnecessary in case of + * {FS,I}NOTIFY. + * But {fs,i}notify doesn't fire some necessary events, + * IN_ATTRIB for atime/nlink/pageio + * IN_DELETE for NFS dentry + * Let's do REVAL test too. + */ + if (do_udba && inode) { + mode = (inode->i_mode & S_IFMT); + plus = (inode->i_nlink > 0); + ibs = au_ibstart(inode); + ibe = au_ibend(inode); + } + + bstart = au_dbstart(dentry); + btail = bstart; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + AuDbg("b%d, %.*s\n", bindex, AuDLNPair(h_dentry)); + spin_lock(&h_dentry->d_lock); + h_name = &h_dentry->d_name; + if (unlikely(do_udba + && !is_root + && (unhashed != !!d_unhashed(h_dentry) + || name->len != h_name->len + || memcmp(name->name, h_name->name, name->len)) + )) { + AuDbg("unhash 0x%x 0x%x, %.*s %.*s\n", + unhashed, d_unhashed(h_dentry), + AuDLNPair(dentry), AuDLNPair(h_dentry)); + spin_unlock(&h_dentry->d_lock); + goto err; + } + spin_unlock(&h_dentry->d_lock); + + err = au_do_h_d_reval(h_dentry, nd, dentry, bindex); + if (unlikely(err)) + /* do not goto err, to keep the errno */ + break; + + /* todo: plink too? */ + if (!do_udba) + continue; + + /* UDBA tests */ + h_inode = h_dentry->d_inode; + if (unlikely(!!inode != !!h_inode)) + goto err; + + h_plus = plus; + h_mode = mode; + h_cached_inode = h_inode; + if (h_inode) { + h_mode = (h_inode->i_mode & S_IFMT); + h_plus = (h_inode->i_nlink > 0); + } + if (inode && ibs <= bindex && bindex <= ibe) + h_cached_inode = au_h_iptr(inode, bindex); + + if (unlikely(plus != h_plus + || mode != h_mode + || h_cached_inode != h_inode)) + goto err; + continue; + + err: + err = -EINVAL; + break; + } + + return err; +} + +/* todo: consolidate with do_refresh() and au_reval_for_attr() */ +static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + if (!au_digen_test(dentry, sigen)) + return 0; + + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + AuDebugOn(au_digen_test(parent, sigen)); + au_dbg_verify_gen(parent, sigen); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + AuTraceErr(err); + return err; +} + +int au_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *d, *parent; + struct inode *inode; + + if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) + return simple_reval_dpath(dentry, sigen); + + /* slow loop, keep it simple and stupid */ + /* cf: au_cpup_dirs() */ + err = 0; + parent = NULL; + while (au_digen_test(dentry, sigen)) { + d = dentry; + while (1) { + dput(parent); + parent = dget_parent(d); + if (!au_digen_test(parent, sigen)) + break; + d = parent; + } + + inode = d->d_inode; + if (d != dentry) + di_write_lock_child2(d); + + /* someone might update our dentry while we were sleeping */ + if (au_digen_test(d, sigen)) { + /* + * todo: consolidate with simple_reval_dpath(), + * do_refresh() and au_reval_for_attr(). + */ + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(d, parent); + di_read_unlock(parent, AuLock_IR); + } + + if (d != dentry) + di_write_unlock(d); + dput(parent); + if (unlikely(err)) + break; + } + + return err; +} + +/* + * if valid returns 1, otherwise 0. + */ +static int aufs_d_revalidate(struct dentry *dentry, struct nameidata *nd) +{ + int valid, err; + unsigned int sigen; + unsigned char do_udba; + struct super_block *sb; + struct inode *inode; + + /* todo: support rcu-walk? */ + if (nd && (nd->flags & LOOKUP_RCU)) + return -ECHILD; + + valid = 0; + if (unlikely(!au_di(dentry))) + goto out; + + inode = dentry->d_inode; + if (inode && is_bad_inode(inode)) + goto out; + + valid = 1; + sb = dentry->d_sb; + /* + * todo: very ugly + * i_mutex of parent dir may be held, + * but we should not return 'invalid' due to busy. + */ + err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); + if (unlikely(err)) { + valid = err; + AuTraceErr(err); + goto out; + } + if (unlikely(au_dbrange_test(dentry))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + + sigen = au_sigen(sb); + if (au_digen_test(dentry, sigen)) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_dpath(dentry, sigen); + if (unlikely(err)) { + AuTraceErr(err); + goto out_dgrade; + } + } + di_downgrade_lock(dentry, AuLock_IR); + + err = -EINVAL; + if (inode && (IS_DEADDIR(inode) || !inode->i_nlink)) + goto out_inval; + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t bstart = au_ibstart(inode); + struct inode *h_inode; + + if (bstart >= 0) { + h_inode = au_h_iptr(inode, bstart); + if (h_inode && au_test_higen(inode, h_inode)) + goto out_inval; + } + } + + err = h_d_revalidate(dentry, inode, nd, do_udba); + if (unlikely(!err && do_udba && au_dbstart(dentry) < 0)) { + err = -EIO; + AuDbg("both of real entry and whiteout found, %.*s, err %d\n", + AuDLNPair(dentry), err); + } + goto out_inval; + +out_dgrade: + di_downgrade_lock(dentry, AuLock_IR); +out_inval: + aufs_read_unlock(dentry, AuLock_IR); + AuTraceErr(err); + valid = !err; +out: + if (!valid) { + AuDbg("%.*s invalid, %d\n", AuDLNPair(dentry), valid); + d_drop(dentry); + } + return valid; +} + +static void aufs_d_release(struct dentry *dentry) +{ + if (au_di(dentry)) { + au_di_fin(dentry); + au_hn_di_reinit(dentry); + } +} + +const struct dentry_operations aufs_dop = { + .d_revalidate = aufs_d_revalidate, + .d_release = aufs_d_release +}; --- linux-3.5.0.orig/ubuntu/aufs/f_op_sp.c +++ linux-3.5.0/ubuntu/aufs/f_op_sp.c @@ -0,0 +1,295 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file operations for special files. + * while they exist in aufs virtually, + * their file I/O is handled out of aufs. + */ + +#include "aufs.h" + +static ssize_t aufs_aio_read_sp(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + aufs_bindex_t bstart; + unsigned char wbr; + struct file *file, *h_file; + struct super_block *sb; + + file = kio->ki_filp; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fi_read_lock(file); + bstart = au_fbstart(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + wbr = !!au_br_writable(au_sbr(sb, bstart)->br_perm); + si_read_unlock(sb); + + /* do not change the file in kio */ + AuDebugOn(!h_file->f_op || !h_file->f_op->aio_read); + err = h_file->f_op->aio_read(kio, iov, nv, pos); + if (err > 0 && wbr) + file_accessed(h_file); + + return err; +} + +static ssize_t aufs_aio_write_sp(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + aufs_bindex_t bstart; + unsigned char wbr; + struct super_block *sb; + struct file *file, *h_file; + + file = kio->ki_filp; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fi_read_lock(file); + bstart = au_fbstart(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + wbr = !!au_br_writable(au_sbr(sb, bstart)->br_perm); + si_read_unlock(sb); + + /* do not change the file in kio */ + AuDebugOn(!h_file->f_op || !h_file->f_op->aio_write); + err = h_file->f_op->aio_write(kio, iov, nv, pos); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_release_sp(struct inode *inode, struct file *file) +{ + int err; + struct file *h_file; + + fi_read_lock(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + /* close this fifo in aufs */ + err = h_file->f_op->release(inode, file); /* ignore */ + aufs_release_nondir(inode, file); /* ignore */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* currently, support only FIFO */ +enum { + AuSp_FIFO, AuSp_FIFO_R, AuSp_FIFO_W, AuSp_FIFO_RW, + /* AuSp_SOCK, AuSp_CHR, AuSp_BLK, */ + AuSp_Last +}; +static int aufs_open_sp(struct inode *inode, struct file *file); +static struct au_sp_fop { + int done; + struct file_operations fop; /* not 'const' */ + spinlock_t spin; +} au_sp_fop[AuSp_Last] = { + [AuSp_FIFO] = { + .fop = { + .owner = THIS_MODULE, + .open = aufs_open_sp + } + } +}; + +static void au_init_fop_sp(struct file *file) +{ + struct au_sp_fop *p; + int i; + struct file *h_file; + + p = au_sp_fop; + if (unlikely(!p->done)) { + /* initialize first time only */ + static DEFINE_SPINLOCK(spin); + + spin_lock(&spin); + if (!p->done) { + BUILD_BUG_ON(sizeof(au_sp_fop)/sizeof(*au_sp_fop) + != AuSp_Last); + for (i = 0; i < AuSp_Last; i++) + spin_lock_init(&p[i].spin); + p->done = 1; + } + spin_unlock(&spin); + } + + switch (file->f_mode & (FMODE_READ | FMODE_WRITE)) { + case FMODE_READ: + i = AuSp_FIFO_R; + break; + case FMODE_WRITE: + i = AuSp_FIFO_W; + break; + case FMODE_READ | FMODE_WRITE: + i = AuSp_FIFO_RW; + break; + default: + BUG(); + } + + p += i; + if (unlikely(!p->done)) { + /* initialize first time only */ + h_file = au_hf_top(file); + spin_lock(&p->spin); + if (!p->done) { + p->fop = *h_file->f_op; + p->fop.owner = THIS_MODULE; + if (p->fop.aio_read) + p->fop.aio_read = aufs_aio_read_sp; + if (p->fop.aio_write) + p->fop.aio_write = aufs_aio_write_sp; + p->fop.release = aufs_release_sp; + p->done = 1; + } + spin_unlock(&p->spin); + } + file->f_op = &p->fop; +} + +static int au_cpup_sp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bcpup; + struct au_pin pin; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + + di_read_unlock(dentry, AuLock_IR); + di_write_lock_child(dentry); + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + bcpup = err; + err = 0; + if (bcpup == au_dbstart(dentry)) + goto out; /* success */ + + err = au_pin(&pin, dentry, bcpup, au_opt_udba(dentry->d_sb), + AuPin_MNT_WRITE); + if (!err) { + err = au_sio_cpup_simple(dentry, bcpup, -1, AuCpup_DTIME); + au_unpin(&pin); + } + +out: + di_downgrade_lock(dentry, AuLock_IR); + return err; +} + +static int au_do_open_sp(struct file *file, int flags) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct file *h_file; + struct inode *h_inode; + + dentry = file->f_dentry; + AuDbg("%.*s\n", AuDLNPair(dentry)); + + /* + * try copying-up. + * operate on the ro branch is not an error. + */ + au_cpup_sp(dentry); /* ignore */ + + /* prepare h_file */ + err = au_do_open_nondir(file, vfsub_file_flags(file)); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + h_file = au_hf_top(file); + h_inode = h_file->f_dentry->d_inode; + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + si_read_unlock(sb); + /* open this fifo in aufs */ + err = h_inode->i_fop->open(file->f_dentry->d_inode, file); + si_noflush_read_lock(sb); + fi_write_lock(file); + di_read_lock_child(dentry, AuLock_IR); + if (!err) + au_init_fop_sp(file); + +out: + return err; +} + +static int aufs_open_sp(struct inode *inode, struct file *file) +{ + int err; + struct super_block *sb; + + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, au_do_open_sp, /*fidir*/NULL); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_init_special_fop(struct inode *inode, umode_t mode, dev_t rdev) +{ + init_special_inode(inode, mode, rdev); + + switch (mode & S_IFMT) { + case S_IFIFO: + inode->i_fop = &au_sp_fop[AuSp_FIFO].fop; + /*FALLTHROUGH*/ + case S_IFCHR: + case S_IFBLK: + case S_IFSOCK: + break; + default: + AuDebugOn(1); + } +} + +int au_special_file(umode_t mode) +{ + int ret; + + ret = 0; + switch (mode & S_IFMT) { + case S_IFIFO: +#if 0 + case S_IFCHR: + case S_IFBLK: + case S_IFSOCK: +#endif + ret = 1; + } + + return ret; +} --- linux-3.5.0.orig/ubuntu/aufs/wbr_policy.c +++ linux-3.5.0/ubuntu/aufs/wbr_policy.c @@ -0,0 +1,700 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * policies for selecting one among multiple writable branches + */ + +#include +#include "aufs.h" + +/* subset of cpup_attr() */ +static noinline_for_stack +int au_cpdown_attr(struct path *h_path, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct inode *h_isrc; + + h_isrc = h_src->d_inode; + ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; + ia.ia_mode = h_isrc->i_mode; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_path->dentry->d_inode, h_isrc); + err = vfsub_sio_notify_change(h_path, &ia); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_sio_notify_change(h_path, &ia); + } + + return err; +} + +#define AuCpdown_PARENT_OPQ 1 +#define AuCpdown_WHED (1 << 1) +#define AuCpdown_MADE_DIR (1 << 2) +#define AuCpdown_DIROPQ (1 << 3) +#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) +#define au_fset_cpdown(flags, name) \ + do { (flags) |= AuCpdown_##name; } while (0) +#define au_fclr_cpdown(flags, name) \ + do { (flags) &= ~AuCpdown_##name; } while (0) + +struct au_cpdown_dir_args { + struct dentry *parent; + unsigned int flags; +}; + +static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, + struct au_cpdown_dir_args *a) +{ + int err; + struct dentry *opq_dentry; + + opq_dentry = au_diropq_create(dentry, bdst); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out; + dput(opq_dentry); + au_fset_cpdown(a->flags, DIROPQ); + +out: + return err; +} + +static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, + struct inode *dir, aufs_bindex_t bdst) +{ + int err; + struct path h_path; + struct au_branch *br; + + br = au_sbr(dentry->d_sb, bdst); + h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + if (h_path.dentry->d_inode) { + h_path.mnt = br->br_mnt; + err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, + dentry); + } + dput(h_path.dentry); + +out: + return err; +} + +static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg) +{ + int err, rerr; + aufs_bindex_t bopq, bstart; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + struct au_cpdown_dir_args *args = arg; + + bstart = au_dbstart(dentry); + /* dentry is di-locked */ + parent = dget_parent(dentry); + dir = parent->d_inode; + h_dir = h_parent->d_inode; + AuDebugOn(h_dir != au_h_iptr(dir, bdst)); + IMustLock(h_dir); + + err = au_lkup_neg(dentry, bdst); + if (unlikely(err < 0)) + goto out; + h_path.dentry = au_h_dptr(dentry, bdst); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); + err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, + S_IRWXU | S_IRUGO | S_IXUGO); + if (unlikely(err)) + goto out_put; + au_fset_cpdown(args->flags, MADE_DIR); + + bopq = au_dbdiropq(dentry); + au_fclr_cpdown(args->flags, WHED); + au_fclr_cpdown(args->flags, DIROPQ); + if (au_dbwh(dentry) == bdst) + au_fset_cpdown(args->flags, WHED); + if (!au_ftest_cpdown(args->flags, PARENT_OPQ) && bopq <= bdst) + au_fset_cpdown(args->flags, PARENT_OPQ); + h_inode = h_path.dentry->d_inode; + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + if (au_ftest_cpdown(args->flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, args); + if (unlikely(err)) { + mutex_unlock(&h_inode->i_mutex); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, bstart)); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(err)) + goto out_opq; + + if (au_ftest_cpdown(args->flags, WHED)) { + err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); + if (unlikely(err)) + goto out_opq; + } + + inode = dentry->d_inode; + if (au_ibend(inode) < bdst) + au_set_ibend(inode, bdst); + au_set_h_iptr(inode, bdst, au_igrab(h_inode), + au_hi_flags(inode, /*isdir*/1)); + goto out; /* success */ + + /* revert */ +out_opq: + if (au_ftest_cpdown(args->flags, DIROPQ)) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(rerr)) { + AuIOErr("failed removing diropq for %.*s b%d (%d)\n", + AuDLNPair(dentry), bdst, rerr); + err = -EIO; + goto out; + } + } +out_dir: + if (au_ftest_cpdown(args->flags, MADE_DIR)) { + rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); + if (unlikely(rerr)) { + AuIOErr("failed removing %.*s b%d (%d)\n", + AuDLNPair(dentry), bdst, rerr); + err = -EIO; + } + } +out_put: + au_set_h_dptr(dentry, bdst, NULL); + if (au_dbend(dentry) == bdst) + au_update_dbend(dentry); +out: + dput(parent); + return err; +} + +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct au_cpdown_dir_args args = { + .parent = dget_parent(dentry), + .flags = 0 + }; + + err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &args); + dput(args.parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for create */ + +static int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, i, j, ndentry; + aufs_bindex_t bopq; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *parent, *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + parent = dget_parent(dentry); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); + if (unlikely(err)) + goto out_free; + + err = bindex; + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + di_read_lock_parent2(d, !AuLock_IR); + bopq = au_dbdiropq(d); + di_read_unlock(d, !AuLock_IR); + if (bopq >= 0 && bopq < err) + err = bopq; + } + } + +out_free: + dput(parent); + au_dpages_free(&dpages); +out: + return err; +} + +static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) +{ + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) + return bindex; + return -EROFS; +} + +/* top down parent */ +static int au_wbr_create_tdp(struct dentry *dentry, int isdir __maybe_unused) +{ + int err; + aufs_bindex_t bstart, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + err = bstart; + if (!au_br_rdonly(au_sbr(sb, bstart))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbstart(parent); bindex < bstart; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) { + err = au_wbr_bu(sb, bstart - 1); + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + } + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* an exception for the policy other than tdp */ +static int au_wbr_create_exp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bdiropq; + struct dentry *parent; + + err = -1; + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + bdiropq = au_dbdiropq(parent); + if (bwh >= 0) { + if (bdiropq >= 0) + err = min(bdiropq, bwh); + else + err = bwh; + AuDbg("%d\n", err); + } else if (bdiropq >= 0) { + err = bdiropq; + AuDbg("%d\n", err); + } + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + + if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) + err = -1; + + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* round robin */ +static int au_wbr_create_init_rr(struct super_block *sb) +{ + int err; + + err = au_wbr_bu(sb, au_sbend(sb)); + atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ + /* smp_mb(); */ + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_rr(struct dentry *dentry, int isdir) +{ + int err, nbr; + unsigned int u; + aufs_bindex_t bindex, bend; + struct super_block *sb; + atomic_t *next; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + next = &au_sbi(sb)->si_wbr_rr_next; + bend = au_sbend(sb); + nbr = bend + 1; + for (bindex = 0; bindex <= bend; bindex++) { + if (!isdir) { + err = atomic_dec_return(next) + 1; + /* modulo for 0 is meaningless */ + if (unlikely(!err)) + err = atomic_dec_return(next) + 1; + } else + err = atomic_read(next); + AuDbg("%d\n", err); + u = err; + err = u % nbr; + AuDbg("%d\n", err); + if (!au_br_rdonly(au_sbr(sb, err))) + break; + err = -EROFS; + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space */ +static void au_mfs(struct dentry *dentry) +{ + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + aufs_bindex_t bindex, bend; + int err; + unsigned long long b, bavail; + struct path h_path; + /* reduce the stack usage */ + struct kstatfs *st; + + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) { + AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); + return; + } + + bavail = 0; + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + MtxMustLock(&mfs->mfs_lock); + mfs->mfs_bindex = -EROFS; + mfs->mfsrr_bytes = 0; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.mnt = br->br_mnt; + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, st); + if (unlikely(err)) { + AuWarn1("failed statfs, b%d, %d\n", bindex, err); + continue; + } + + /* when the available size is equal, select the lower one */ + BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) + || sizeof(b) < sizeof(st->f_bsize)); + b = st->f_bavail * st->f_bsize; + br->br_wbr->wbr_bytes = b; + if (b >= bavail) { + bavail = b; + mfs->mfs_bindex = bindex; + mfs->mfs_jiffy = jiffies; + } + } + + mfs->mfsrr_bytes = bavail; + AuDbg("b%d\n", mfs->mfs_bindex); + kfree(st); +} + +static int au_wbr_create_mfs(struct dentry *dentry, int isdir __maybe_unused) +{ + int err; + struct super_block *sb; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0 + || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) + au_mfs(dentry); + mutex_unlock(&mfs->mfs_lock); + err = mfs->mfs_bindex; + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfs(struct super_block *sb) +{ + struct au_wbr_mfs *mfs; + + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_init(&mfs->mfs_lock); + mfs->mfs_jiffy = 0; + mfs->mfs_bindex = -EROFS; + + return 0; +} + +static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) +{ + mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space and then round robin */ +static int au_wbr_create_mfsrr(struct dentry *dentry, int isdir) +{ + int err; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_mfs(dentry, isdir); + if (err >= 0) { + mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) + err = au_wbr_create_rr(dentry, isdir); + mutex_unlock(&mfs->mfs_lock); + } + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfsrr(struct super_block *sb) +{ + int err; + + au_wbr_create_init_mfs(sb); /* ignore */ + err = au_wbr_create_init_rr(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* top down parent and most free space */ +static int au_wbr_create_pmfs(struct dentry *dentry, int isdir) +{ + int err, e2; + unsigned long long b; + aufs_bindex_t bindex, bstart, bend; + struct super_block *sb; + struct dentry *parent, *h_parent; + struct au_branch *br; + + err = au_wbr_create_tdp(dentry, isdir); + if (unlikely(err < 0)) + goto out; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + bend = au_dbtaildir(parent); + if (bstart == bend) + goto out_parent; /* success */ + + e2 = au_wbr_create_mfs(dentry, isdir); + if (e2 < 0) + goto out_parent; /* success */ + + /* when the available size is equal, select upper one */ + sb = dentry->d_sb; + br = au_sbr(sb, err); + b = br->br_wbr->wbr_bytes; + AuDbg("b%d, %llu\n", err, b); + + for (bindex = bstart; bindex <= bend; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { + b = br->br_wbr->wbr_bytes; + err = bindex; + AuDbg("b%d, %llu\n", err, b); + } + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out_parent: + dput(parent); +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for copyup */ + +/* top down parent */ +static int au_wbr_copyup_tdp(struct dentry *dentry) +{ + return au_wbr_create_tdp(dentry, /*isdir, anything is ok*/0); +} + +/* bottom up parent */ +static int au_wbr_copyup_bup(struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, bstart; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + for (bindex = au_dbstart(dentry); bindex >= bstart; bindex--) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) + err = au_wbr_bu(sb, bstart - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +static int au_wbr_copyup_bu(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + err = au_wbr_bu(dentry->d_sb, bstart); + AuDbg("b%d\n", err); + if (err > bstart) + err = au_wbr_nonopq(dentry, err); + + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { + [AuWbrCopyup_TDP] = { + .copyup = au_wbr_copyup_tdp + }, + [AuWbrCopyup_BUP] = { + .copyup = au_wbr_copyup_bup + }, + [AuWbrCopyup_BU] = { + .copyup = au_wbr_copyup_bu + } +}; + +struct au_wbr_create_operations au_wbr_create_ops[] = { + [AuWbrCreate_TDP] = { + .create = au_wbr_create_tdp + }, + [AuWbrCreate_RR] = { + .create = au_wbr_create_rr, + .init = au_wbr_create_init_rr + }, + [AuWbrCreate_MFS] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSV] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRR] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRRV] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFS] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSV] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + } +}; --- linux-3.5.0.orig/ubuntu/aufs/rwsem.h +++ linux-3.5.0/ubuntu/aufs/rwsem.h @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * simple read-write semaphore wrappers + */ + +#ifndef __AUFS_RWSEM_H__ +#define __AUFS_RWSEM_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +struct au_rwsem { + struct rw_semaphore rwsem; +#ifdef CONFIG_AUFS_DEBUG + /* just for debugging, not almighty counter */ + atomic_t rcnt, wcnt; +#endif +}; + +#ifdef CONFIG_AUFS_DEBUG +#define AuDbgCntInit(rw) do { \ + atomic_set(&(rw)->rcnt, 0); \ + atomic_set(&(rw)->wcnt, 0); \ + smp_mb(); /* atomic set */ \ +} while (0) + +#define AuDbgRcntInc(rw) atomic_inc(&(rw)->rcnt) +#define AuDbgRcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->rcnt) < 0) +#define AuDbgWcntInc(rw) atomic_inc(&(rw)->wcnt) +#define AuDbgWcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->wcnt) < 0) +#else +#define AuDbgCntInit(rw) do {} while (0) +#define AuDbgRcntInc(rw) do {} while (0) +#define AuDbgRcntDec(rw) do {} while (0) +#define AuDbgWcntInc(rw) do {} while (0) +#define AuDbgWcntDec(rw) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(!list_empty(&(rw)->rwsem.wait_list)) +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0) +#define AuRwMustWriteLock(rw) AuDebugOn(atomic_read(&(rw)->wcnt) <= 0) +#define AuRwMustAnyLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0 \ + && atomic_read(&(rw)->wcnt) <= 0) +#define AuRwDestroy(rw) AuDebugOn(atomic_read(&(rw)->rcnt) \ + || atomic_read(&(rw)->wcnt)) + +#define au_rw_class(rw, key) lockdep_set_class(&(rw)->rwsem, key) + +static inline void au_rw_init(struct au_rwsem *rw) +{ + AuDbgCntInit(rw); + init_rwsem(&rw->rwsem); +} + +static inline void au_rw_init_wlock(struct au_rwsem *rw) +{ + au_rw_init(rw); + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_init_wlock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + au_rw_init(rw); + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_read_lock(struct au_rwsem *rw) +{ + down_read(&rw->rwsem); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_lock_nested(struct au_rwsem *rw, unsigned int lsc) +{ + down_read_nested(&rw->rwsem, lsc); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_unlock(struct au_rwsem *rw) +{ + AuRwMustReadLock(rw); + AuDbgRcntDec(rw); + up_read(&rw->rwsem); +} + +static inline void au_rw_dgrade_lock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgRcntInc(rw); + AuDbgWcntDec(rw); + downgrade_write(&rw->rwsem); +} + +static inline void au_rw_write_lock(struct au_rwsem *rw) +{ + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_lock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_unlock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgWcntDec(rw); + up_write(&rw->rwsem); +} + +/* why is not _nested version defined */ +static inline int au_rw_read_trylock(struct au_rwsem *rw) +{ + int ret = down_read_trylock(&rw->rwsem); + if (ret) + AuDbgRcntInc(rw); + return ret; +} + +static inline int au_rw_write_trylock(struct au_rwsem *rw) +{ + int ret = down_write_trylock(&rw->rwsem); + if (ret) + AuDbgWcntInc(rw); + return ret; +} + +#undef AuDbgCntInit +#undef AuDbgRcntInc +#undef AuDbgRcntDec +#undef AuDbgWcntInc +#undef AuDbgWcntDec + +#define AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_lock(param) \ +{ au_rw_read_lock(rwsem); } \ +static inline void prefix##_write_lock(param) \ +{ au_rw_write_lock(rwsem); } \ +static inline int prefix##_read_trylock(param) \ +{ return au_rw_read_trylock(rwsem); } \ +static inline int prefix##_write_trylock(param) \ +{ return au_rw_write_trylock(rwsem); } +/* why is not _nested version defined */ +/* static inline void prefix##_read_trylock_nested(param, lsc) +{ au_rw_read_trylock_nested(rwsem, lsc)); } +static inline void prefix##_write_trylock_nestd(param, lsc) +{ au_rw_write_trylock_nested(rwsem, lsc); } */ + +#define AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_unlock(param) \ +{ au_rw_read_unlock(rwsem); } \ +static inline void prefix##_write_unlock(param) \ +{ au_rw_write_unlock(rwsem); } \ +static inline void prefix##_downgrade_lock(param) \ +{ au_rw_dgrade_lock(rwsem); } + +#define AuSimpleRwsemFuncs(prefix, param, rwsem) \ + AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ + AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/plink.c +++ linux-3.5.0/ubuntu/aufs/plink.c @@ -0,0 +1,511 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * pseudo-link + */ + +#include "aufs.h" + +/* + * the pseudo-link maintenance mode. + * during a user process maintains the pseudo-links, + * prohibit adding a new plink and branch manipulation. + * + * Flags + * NOPLM: + * For entry functions which will handle plink, and i_mutex is already held + * in VFS. + * They cannot wait and should return an error at once. + * Callers has to check the error. + * NOPLMW: + * For entry functions which will handle plink, but i_mutex is not held + * in VFS. + * They can wait the plink maintenance mode to finish. + * + * They behave like F_SETLK and F_SETLKW. + * If the caller never handle plink, then both flags are unnecessary. + */ + +int au_plink_maint(struct super_block *sb, int flags) +{ + int err; + pid_t pid, ppid; + struct au_sbinfo *sbi; + + SiMustAnyLock(sb); + + err = 0; + if (!au_opt_test(au_mntflags(sb), PLINK)) + goto out; + + sbi = au_sbi(sb); + pid = sbi->si_plink_maint_pid; + if (!pid || pid == current->pid) + goto out; + + /* todo: it highly depends upon /sbin/mount.aufs */ + rcu_read_lock(); + ppid = task_pid_vnr(rcu_dereference(current->real_parent)); + rcu_read_unlock(); + if (pid == ppid) + goto out; + + if (au_ftest_lock(flags, NOPLMW)) { + /* if there is no i_mutex lock in VFS, we don't need to wait */ + /* AuDebugOn(!lockdep_depth(current)); */ + while (sbi->si_plink_maint_pid) { + si_read_unlock(sb); + /* gave up wake_up_bit() */ + wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&sbi->si_nowait); + si_noflush_read_lock(sb); + } + } else if (au_ftest_lock(flags, NOPLM)) { + AuDbg("ppid %d, pid %d\n", ppid, pid); + err = -EAGAIN; + } + +out: + return err; +} + +void au_plink_maint_leave(struct au_sbinfo *sbinfo) +{ + spin_lock(&sbinfo->si_plink_maint_lock); + sbinfo->si_plink_maint_pid = 0; + spin_unlock(&sbinfo->si_plink_maint_lock); + wake_up_all(&sbinfo->si_plink_wq); +} + +int au_plink_maint_enter(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + err = 0; + sbinfo = au_sbi(sb); + /* make sure i am the only one in this fs */ + si_write_lock(sb, AuLock_FLUSH); + if (au_opt_test(au_mntflags(sb), PLINK)) { + spin_lock(&sbinfo->si_plink_maint_lock); + if (!sbinfo->si_plink_maint_pid) + sbinfo->si_plink_maint_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&sbinfo->si_plink_maint_lock); + } + si_write_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct pseudo_link { + union { + struct list_head list; + struct rcu_head rcu; + }; + struct inode *inode; +}; + +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) + AuDbg("%lu\n", plink->inode->i_ino); + rcu_read_unlock(); +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found; + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink; + + sbinfo = au_sbi(inode->i_sb); + AuRwMustAnyLock(&sbinfo->si_rwsem); + AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + found = 0; + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) + if (plink->inode == inode) { + found = 1; + break; + } + rcu_read_unlock(); + return found; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generate a name for plink. + * the file will be stored under AUFS_WH_PLINKDIR. + */ +/* 20 is max digits length of ulong 64 */ +#define PLINK_NAME_LEN ((20 + 1) * 2) + +static int plink_name(char *name, int len, struct inode *inode, + aufs_bindex_t bindex) +{ + int rlen; + struct inode *h_inode; + + h_inode = au_h_iptr(inode, bindex); + rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); + return rlen; +} + +struct au_do_plink_lkup_args { + struct dentry **errp; + struct qstr *tgtname; + struct dentry *h_parent; + struct au_branch *br; +}; + +static struct dentry *au_do_plink_lkup(struct qstr *tgtname, + struct dentry *h_parent, + struct au_branch *br) +{ + struct dentry *h_dentry; + struct mutex *h_mtx; + + h_mtx = &h_parent->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + h_dentry = au_lkup_one(tgtname, h_parent, br, /*nd*/NULL); + mutex_unlock(h_mtx); + return h_dentry; +} + +static void au_call_do_plink_lkup(void *args) +{ + struct au_do_plink_lkup_args *a = args; + *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br); +} + +/* lookup the plink-ed @inode under the branch at @bindex */ +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) +{ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct inode *h_dir; + int wkq_err; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + br = au_sbr(inode->i_sb, bindex); + h_parent = br->br_wbr->wbr_plink; + h_dir = h_parent->d_inode; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct au_do_plink_lkup_args args = { + .errp = &h_dentry, + .tgtname = &tgtname, + .h_parent = h_parent, + .br = br + }; + + wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); + if (unlikely(wkq_err)) + h_dentry = ERR_PTR(wkq_err); + } else + h_dentry = au_do_plink_lkup(&tgtname, h_parent, br); + + return h_dentry; +} + +/* create a pseudo-link */ +static int do_whplink(struct qstr *tgt, struct dentry *h_parent, + struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_CHILD2); +again: + h_path.dentry = au_lkup_one(tgt, h_parent, br, /*nd*/NULL); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + /* wh.plink dir is not monitored */ + /* todo: is it really safe? */ + if (h_path.dentry->d_inode + && h_path.dentry->d_inode != h_dentry->d_inode) { + err = vfsub_unlink(h_dir, &h_path, /*force*/0); + dput(h_path.dentry); + h_path.dentry = NULL; + if (!err) + goto again; + } + if (!err && !h_path.dentry->d_inode) + err = vfsub_link(h_dentry, h_dir, &h_path); + dput(h_path.dentry); + +out: + mutex_unlock(&h_dir->i_mutex); + return err; +} + +struct do_whplink_args { + int *errp; + struct qstr *tgt; + struct dentry *h_parent; + struct dentry *h_dentry; + struct au_branch *br; +}; + +static void call_do_whplink(void *args) +{ + struct do_whplink_args *a = args; + *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br); +} + +static int whplink(struct dentry *h_dentry, struct inode *inode, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err, wkq_err; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + wbr = au_sbr(inode->i_sb, bindex)->br_wbr; + h_parent = wbr->wbr_plink; + h_dir = h_parent->d_inode; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + /* always superio. */ + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct do_whplink_args args = { + .errp = &err, + .tgt = &tgtname, + .h_parent = h_parent, + .h_dentry = h_dentry, + .br = br + }; + wkq_err = au_wkq_wait(call_do_whplink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } else + err = do_whplink(&tgtname, h_parent, h_dentry, br); + + return err; +} + +/* free a single plink */ +static void do_put_plink(struct pseudo_link *plink, int do_del) +{ + if (do_del) + list_del(&plink->list); + iput(plink->inode); + kfree(plink); +} + +static void do_put_plink_rcu(struct rcu_head *rcu) +{ + struct pseudo_link *plink; + + plink = container_of(rcu, struct pseudo_link, rcu); + iput(plink->inode); + kfree(plink); +} + +/* + * create a new pseudo-link for @h_dentry on @bindex. + * the linked inode is held in aufs @inode. + */ +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + int found, err, cnt; + + sb = inode->i_sb; + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + cnt = 0; + found = 0; + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) { + cnt++; + if (plink->inode == inode) { + found = 1; + break; + } + } + rcu_read_unlock(); + if (found) + return; + + tmp = kmalloc(sizeof(*plink), GFP_NOFS); + if (tmp) + tmp->inode = au_igrab(inode); + else { + err = -ENOMEM; + goto out; + } + + spin_lock(&sbinfo->si_plink.spin); + list_for_each_entry(plink, plink_list, list) { + if (plink->inode == inode) { + found = 1; + break; + } + } + if (!found) + list_add_rcu(&tmp->list, plink_list); + spin_unlock(&sbinfo->si_plink.spin); + if (!found) { + cnt++; + WARN_ONCE(cnt > AUFS_PLINK_WARN, + "unexpectedly many pseudo links, %d\n", cnt); + err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex)); + } else { + do_put_plink(tmp, 0); + return; + } + +out: + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + if (tmp) { + au_spl_del_rcu(&tmp->list, &sbinfo->si_plink); + call_rcu(&tmp->rcu, do_put_plink_rcu); + } + } +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + /* no spin_lock since sbinfo is write-locked */ + WARN(verbose && !list_empty(plink_list), "pseudo-link is not flushed"); + list_for_each_entry_safe(plink, tmp, plink_list, list) + do_put_plink(plink, 0); + INIT_LIST_HEAD(plink_list); +} + +void au_plink_clean(struct super_block *sb, int verbose) +{ + struct dentry *root; + + root = sb->s_root; + aufs_write_lock(root); + if (au_opt_test(au_mntflags(sb), PLINK)) + au_plink_put(sb, verbose); + aufs_write_unlock(root); +} + +/* free the plinks on a branch specified by @br_id */ +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + struct inode *inode; + aufs_bindex_t bstart, bend, bindex; + unsigned char do_put; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + /* no spin_lock since sbinfo is write-locked */ + list_for_each_entry_safe(plink, tmp, plink_list, list) { + do_put = 0; + inode = au_igrab(plink->inode); + ii_write_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart >= 0) { + for (bindex = bstart; bindex <= bend; bindex++) { + if (!au_h_iptr(inode, bindex) + || au_ii_br_id(inode, bindex) != br_id) + continue; + au_set_h_iptr(inode, bindex, NULL, 0); + do_put = 1; + break; + } + } else + do_put_plink(plink, 1); + + if (do_put) { + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex)) { + do_put = 0; + break; + } + if (do_put) + do_put_plink(plink, 1); + } + ii_write_unlock(inode); + iput(inode); + } +} --- linux-3.5.0.orig/ubuntu/aufs/vdir.c +++ linux-3.5.0/ubuntu/aufs/vdir.c @@ -0,0 +1,885 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * virtual or vertical directory + */ + +#include "aufs.h" + +static unsigned int calc_size(int nlen) +{ + return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); +} + +static int set_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) { + p->de->de_str.len = 0; + /* smp_mb(); */ + return 0; + } + return -1; /* error */ +} + +/* returns true or false */ +static int is_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) + return !p->de->de_str.len; + return 1; +} + +static unsigned char *last_deblk(struct au_vdir *vdir) +{ + return vdir->vd_deblk[vdir->vd_nblk - 1]; +} + +/* ---------------------------------------------------------------------- */ + +/* estimate the apropriate size for name hash table */ +unsigned int au_rdhash_est(loff_t sz) +{ + unsigned int n; + + n = UINT_MAX; + sz >>= 10; + if (sz < n) + n = sz; + if (sz < AUFS_RDHASH_DEF) + n = AUFS_RDHASH_DEF; + /* pr_info("n %u\n", n); */ + return n; +} + +/* + * the allocated memory has to be freed by + * au_nhash_wh_free() or au_nhash_de_free(). + */ +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) +{ + struct hlist_head *head; + unsigned int u; + + head = kmalloc(sizeof(*nhash->nh_head) * num_hash, gfp); + if (head) { + nhash->nh_num = num_hash; + nhash->nh_head = head; + for (u = 0; u < num_hash; u++) + INIT_HLIST_HEAD(head++); + return 0; /* success */ + } + + return -ENOMEM; +} + +static void nhash_count(struct hlist_head *head) +{ +#if 0 + unsigned long n; + struct hlist_node *pos; + + n = 0; + hlist_for_each(pos, head) + n++; + pr_info("%lu\n", n); +#endif +} + +static void au_nhash_wh_do_free(struct hlist_head *head) +{ + struct au_vdir_wh *tpos; + struct hlist_node *pos, *node; + + hlist_for_each_entry_safe(tpos, pos, node, head, wh_hash) { + /* hlist_del(pos); */ + kfree(tpos); + } +} + +static void au_nhash_de_do_free(struct hlist_head *head) +{ + struct au_vdir_dehstr *tpos; + struct hlist_node *pos, *node; + + hlist_for_each_entry_safe(tpos, pos, node, head, hash) { + /* hlist_del(pos); */ + au_cache_free_vdir_dehstr(tpos); + } +} + +static void au_nhash_do_free(struct au_nhash *nhash, + void (*free)(struct hlist_head *head)) +{ + unsigned int n; + struct hlist_head *head; + + n = nhash->nh_num; + if (!n) + return; + + head = nhash->nh_head; + while (n-- > 0) { + nhash_count(head); + free(head++); + } + kfree(nhash->nh_head); +} + +void au_nhash_wh_free(struct au_nhash *whlist) +{ + au_nhash_do_free(whlist, au_nhash_wh_do_free); +} + +static void au_nhash_de_free(struct au_nhash *delist) +{ + au_nhash_do_free(delist, au_nhash_de_do_free); +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit) +{ + int num; + unsigned int u, n; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + + num = 0; + n = whlist->nh_num; + head = whlist->nh_head; + for (u = 0; u < n; u++, head++) + hlist_for_each_entry(tpos, pos, head, wh_hash) + if (tpos->wh_bindex == btgt && ++num > limit) + return 1; + return 0; +} + +static struct hlist_head *au_name_hash(struct au_nhash *nhash, + unsigned char *name, + unsigned int len) +{ + unsigned int v; + /* const unsigned int magic_bit = 12; */ + + AuDebugOn(!nhash->nh_num || !nhash->nh_head); + + v = 0; + while (len--) + v += *name++; + /* v = hash_long(v, magic_bit); */ + v %= nhash->nh_num; + return nhash->nh_head + v; +} + +static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, + int nlen) +{ + return str->len == nlen && !memcmp(str->name, name, nlen); +} + +/* returns found or not */ +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + head = au_name_hash(whlist, name, nlen); + hlist_for_each_entry(tpos, pos, head, wh_hash) { + str = &tpos->wh_str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +/* returns found(true) or not */ +static int test_known(struct au_nhash *delist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_dehstr *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + head = au_name_hash(delist, name, nlen); + hlist_for_each_entry(tpos, pos, head, hash) { + str = tpos->str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, + unsigned char d_type) +{ +#ifdef CONFIG_AUFS_SHWH + wh->wh_ino = ino; + wh->wh_type = d_type; +#endif +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh) +{ + int err; + struct au_vdir_destr *str; + struct au_vdir_wh *wh; + + AuDbg("%.*s\n", nlen, name); + AuDebugOn(!whlist->nh_num || !whlist->nh_head); + + err = -ENOMEM; + wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); + if (unlikely(!wh)) + goto out; + + err = 0; + wh->wh_bindex = bindex; + if (shwh) + au_shwh_init_wh(wh, ino, d_type); + str = &wh->wh_str; + str->len = nlen; + memcpy(str->name, name, nlen); + hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); + /* smp_mb(); */ + +out: + return err; +} + +static int append_deblk(struct au_vdir *vdir) +{ + int err; + unsigned long ul; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, deblk_end; + unsigned char **o; + + err = -ENOMEM; + o = krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS); + if (unlikely(!o)) + goto out; + + vdir->vd_deblk = o; + p.deblk = kmalloc(deblk_sz, GFP_NOFS); + if (p.deblk) { + ul = vdir->vd_nblk++; + vdir->vd_deblk[ul] = p.deblk; + vdir->vd_last.ul = ul; + vdir->vd_last.p.deblk = p.deblk; + deblk_end.deblk = p.deblk + deblk_sz; + err = set_deblk_end(&p, &deblk_end); + } + +out: + return err; +} + +static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, + unsigned int d_type, struct au_nhash *delist) +{ + int err; + unsigned int sz; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, *room, deblk_end; + struct au_vdir_dehstr *dehstr; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + room = &vdir->vd_last.p; + AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk + || !is_deblk_end(room, &deblk_end)); + + sz = calc_size(nlen); + if (unlikely(sz > deblk_end.deblk - room->deblk)) { + err = append_deblk(vdir); + if (unlikely(err)) + goto out; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + /* smp_mb(); */ + AuDebugOn(room->deblk != p.deblk); + } + + err = -ENOMEM; + dehstr = au_cache_alloc_vdir_dehstr(); + if (unlikely(!dehstr)) + goto out; + + dehstr->str = &room->de->de_str; + hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); + room->de->de_ino = ino; + room->de->de_type = d_type; + room->de->de_str.len = nlen; + memcpy(room->de->de_str.name, name, nlen); + + err = 0; + room->deblk += sz; + if (unlikely(set_deblk_end(room, &deblk_end))) + err = append_deblk(vdir); + /* smp_mb(); */ + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_vdir_free(struct au_vdir *vdir) +{ + unsigned char **deblk; + + deblk = vdir->vd_deblk; + while (vdir->vd_nblk--) + kfree(*deblk++); + kfree(vdir->vd_deblk); + au_cache_free_vdir(vdir); +} + +static struct au_vdir *alloc_vdir(struct file *file) +{ + struct au_vdir *vdir; + struct super_block *sb; + int err; + + sb = file->f_dentry->d_sb; + SiMustAnyLock(sb); + + err = -ENOMEM; + vdir = au_cache_alloc_vdir(); + if (unlikely(!vdir)) + goto out; + + vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); + if (unlikely(!vdir->vd_deblk)) + goto out_free; + + vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; + if (!vdir->vd_deblk_sz) { + /* estimate the apropriate size for deblk */ + vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); + /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ + } + vdir->vd_nblk = 0; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + err = append_deblk(vdir); + if (!err) + return vdir; /* success */ + + kfree(vdir->vd_deblk); + +out_free: + au_cache_free_vdir(vdir); +out: + vdir = ERR_PTR(err); + return vdir; +} + +static int reinit_vdir(struct au_vdir *vdir) +{ + int err; + union au_vdir_deblk_p p, deblk_end; + + while (vdir->vd_nblk > 1) { + kfree(vdir->vd_deblk[vdir->vd_nblk - 1]); + /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ + vdir->vd_nblk--; + } + p.deblk = vdir->vd_deblk[0]; + deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; + err = set_deblk_end(&p, &deblk_end); + /* keep vd_dblk_sz */ + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + /* smp_mb(); */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuFillVdir_CALLED 1 +#define AuFillVdir_WHABLE (1 << 1) +#define AuFillVdir_SHWH (1 << 2) +#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) +#define au_fset_fillvdir(flags, name) \ + do { (flags) |= AuFillVdir_##name; } while (0) +#define au_fclr_fillvdir(flags, name) \ + do { (flags) &= ~AuFillVdir_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuFillVdir_SHWH +#define AuFillVdir_SHWH 0 +#endif + +struct fillvdir_arg { + struct file *file; + struct au_vdir *vdir; + struct au_nhash delist; + struct au_nhash whlist; + aufs_bindex_t bindex; + unsigned int flags; + int err; +}; + +static int fillvdir(void *__arg, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ + struct fillvdir_arg *arg = __arg; + char *name = (void *)__name; + struct super_block *sb; + ino_t ino; + const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); + + arg->err = 0; + sb = arg->file->f_dentry->d_sb; + au_fset_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + if (nlen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (test_known(&arg->delist, name, nlen) + || au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already exists or whiteouted */ + + sb = arg->file->f_dentry->d_sb; + arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); + if (!arg->err) { + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + d_type = DT_UNKNOWN; + arg->err = append_de(arg->vdir, name, nlen, ino, + d_type, &arg->delist); + } + } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { + name += AUFS_WH_PFX_LEN; + nlen -= AUFS_WH_PFX_LEN; + if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already whiteouted */ + + if (shwh) + arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, + &ino); + if (!arg->err) { + if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) + d_type = DT_UNKNOWN; + arg->err = au_nhash_append_wh + (&arg->whlist, name, nlen, ino, d_type, + arg->bindex, shwh); + } + } + +out: + if (!arg->err) + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, + struct au_nhash *whlist, struct au_nhash *delist) +{ +#ifdef CONFIG_AUFS_SHWH + int err; + unsigned int nh, u; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos, *n; + char *p, *o; + struct au_vdir_destr *destr; + + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; + o = p = __getname_gfp(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + nh = whlist->nh_num; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + for (u = 0; u < nh; u++) { + head = whlist->nh_head + u; + hlist_for_each_entry_safe(tpos, pos, n, head, wh_hash) { + destr = &tpos->wh_str; + memcpy(p, destr->name, destr->len); + err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, + tpos->wh_ino, tpos->wh_type, delist); + if (unlikely(err)) + break; + } + } + + __putname(o); + +out: + AuTraceErr(err); + return err; +#else + return 0; +#endif +} + +static int au_do_read_vdir(struct fillvdir_arg *arg) +{ + int err; + unsigned int rdhash; + loff_t offset; + aufs_bindex_t bend, bindex, bstart; + unsigned char shwh; + struct file *hf, *file; + struct super_block *sb; + + file = arg->file; + sb = file->f_dentry->d_sb; + SiMustAnyLock(sb); + + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); + err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out_delist; + + err = 0; + arg->flags = 0; + shwh = 0; + if (au_opt_test(au_mntflags(sb), SHWH)) { + shwh = 1; + au_fset_fillvdir(arg->flags, SHWH); + } + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; !err && bindex <= bend; bindex++) { + hf = au_hf_dir(file, bindex); + if (!hf) + continue; + + offset = vfsub_llseek(hf, 0, SEEK_SET); + err = offset; + if (unlikely(offset)) + break; + + arg->bindex = bindex; + au_fclr_fillvdir(arg->flags, WHABLE); + if (shwh + || (bindex != bend + && au_br_whable(au_sbr_perm(sb, bindex)))) + au_fset_fillvdir(arg->flags, WHABLE); + do { + arg->err = 0; + au_fclr_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(hf, fillvdir, arg); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); + } + + if (!err && shwh) + err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); + + au_nhash_wh_free(&arg->whlist); + +out_delist: + au_nhash_de_free(&arg->delist); +out: + return err; +} + +static int read_vdir(struct file *file, int may_read) +{ + int err; + unsigned long expire; + unsigned char do_read; + struct fillvdir_arg arg; + struct inode *inode; + struct au_vdir *vdir, *allocated; + + err = 0; + inode = file->f_dentry->d_inode; + IMustLock(inode); + SiMustAnyLock(inode->i_sb); + + allocated = NULL; + do_read = 0; + expire = au_sbi(inode->i_sb)->si_rdcache; + vdir = au_ivdir(inode); + if (!vdir) { + do_read = 1; + vdir = alloc_vdir(file); + err = PTR_ERR(vdir); + if (IS_ERR(vdir)) + goto out; + err = 0; + allocated = vdir; + } else if (may_read + && (inode->i_version != vdir->vd_version + || time_after(jiffies, vdir->vd_jiffy + expire))) { + do_read = 1; + err = reinit_vdir(vdir); + if (unlikely(err)) + goto out; + } + + if (!do_read) + return 0; /* success */ + + arg.file = file; + arg.vdir = vdir; + err = au_do_read_vdir(&arg); + if (!err) { + /* file->f_pos = 0; */ + vdir->vd_version = inode->i_version; + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + if (allocated) + au_set_ivdir(inode, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) +{ + int err, rerr; + unsigned long ul, n; + const unsigned int deblk_sz = src->vd_deblk_sz; + + AuDebugOn(tgt->vd_nblk != 1); + + err = -ENOMEM; + if (tgt->vd_nblk < src->vd_nblk) { + unsigned char **p; + + p = krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk = p; + } + + if (tgt->vd_deblk_sz != deblk_sz) { + unsigned char *p; + + tgt->vd_deblk_sz = deblk_sz; + p = krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk[0] = p; + } + memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); + tgt->vd_version = src->vd_version; + tgt->vd_jiffy = src->vd_jiffy; + + n = src->vd_nblk; + for (ul = 1; ul < n; ul++) { + tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, + GFP_NOFS); + if (unlikely(!tgt->vd_deblk[ul])) + goto out; + tgt->vd_nblk++; + } + tgt->vd_nblk = n; + tgt->vd_last.ul = tgt->vd_last.ul; + tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; + tgt->vd_last.p.deblk += src->vd_last.p.deblk + - src->vd_deblk[src->vd_last.ul]; + /* smp_mb(); */ + return 0; /* success */ + +out: + rerr = reinit_vdir(tgt); + BUG_ON(rerr); + return err; +} + +int au_vdir_init(struct file *file) +{ + int err; + struct inode *inode; + struct au_vdir *vdir_cache, *allocated; + + err = read_vdir(file, !file->f_pos); + if (unlikely(err)) + goto out; + + allocated = NULL; + vdir_cache = au_fvdir_cache(file); + if (!vdir_cache) { + vdir_cache = alloc_vdir(file); + err = PTR_ERR(vdir_cache); + if (IS_ERR(vdir_cache)) + goto out; + allocated = vdir_cache; + } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { + err = reinit_vdir(vdir_cache); + if (unlikely(err)) + goto out; + } else + return 0; /* success */ + + inode = file->f_dentry->d_inode; + err = copy_vdir(vdir_cache, au_ivdir(inode)); + if (!err) { + file->f_version = inode->i_version; + if (allocated) + au_set_fvdir_cache(file, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static loff_t calc_offset(struct au_vdir *vdir) +{ + loff_t offset; + union au_vdir_deblk_p p; + + p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; + offset = vdir->vd_last.p.deblk - p.deblk; + offset += vdir->vd_deblk_sz * vdir->vd_last.ul; + return offset; +} + +/* returns true or false */ +static int seek_vdir(struct file *file) +{ + int valid; + unsigned int deblk_sz; + unsigned long ul, n; + loff_t offset; + union au_vdir_deblk_p p, deblk_end; + struct au_vdir *vdir_cache; + + valid = 1; + vdir_cache = au_fvdir_cache(file); + offset = calc_offset(vdir_cache); + AuDbg("offset %lld\n", offset); + if (file->f_pos == offset) + goto out; + + vdir_cache->vd_last.ul = 0; + vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; + if (!file->f_pos) + goto out; + + valid = 0; + deblk_sz = vdir_cache->vd_deblk_sz; + ul = div64_u64(file->f_pos, deblk_sz); + AuDbg("ul %lu\n", ul); + if (ul >= vdir_cache->vd_nblk) + goto out; + + n = vdir_cache->vd_nblk; + for (; ul < n; ul++) { + p.deblk = vdir_cache->vd_deblk[ul]; + deblk_end.deblk = p.deblk + deblk_sz; + offset = ul; + offset *= deblk_sz; + while (!is_deblk_end(&p, &deblk_end) && offset < file->f_pos) { + unsigned int l; + + l = calc_size(p.de->de_str.len); + offset += l; + p.deblk += l; + } + if (!is_deblk_end(&p, &deblk_end)) { + valid = 1; + vdir_cache->vd_last.ul = ul; + vdir_cache->vd_last.p = p; + break; + } + } + +out: + /* smp_mb(); */ + AuTraceErr(!valid); + return valid; +} + +int au_vdir_fill_de(struct file *file, void *dirent, filldir_t filldir) +{ + int err; + unsigned int l, deblk_sz; + union au_vdir_deblk_p deblk_end; + struct au_vdir *vdir_cache; + struct au_vdir_de *de; + + vdir_cache = au_fvdir_cache(file); + if (!seek_vdir(file)) + return 0; + + deblk_sz = vdir_cache->vd_deblk_sz; + while (1) { + deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + deblk_end.deblk += deblk_sz; + while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { + de = vdir_cache->vd_last.p.de; + AuDbg("%.*s, off%lld, i%lu, dt%d\n", + de->de_str.len, de->de_str.name, file->f_pos, + (unsigned long)de->de_ino, de->de_type); + err = filldir(dirent, de->de_str.name, de->de_str.len, + file->f_pos, de->de_ino, de->de_type); + if (unlikely(err)) { + AuTraceErr(err); + /* todo: ignore the error caused by udba? */ + /* return err; */ + return 0; + } + + l = calc_size(de->de_str.len); + vdir_cache->vd_last.p.deblk += l; + file->f_pos += l; + } + if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { + vdir_cache->vd_last.ul++; + vdir_cache->vd_last.p.deblk + = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + file->f_pos = deblk_sz * vdir_cache->vd_last.ul; + continue; + } + break; + } + + /* smp_mb(); */ + return 0; +} --- linux-3.5.0.orig/ubuntu/aufs/xino.c +++ linux-3.5.0/ubuntu/aufs/xino.c @@ -0,0 +1,1264 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * external inode number translation table and bitmap + */ + +#include +#include "aufs.h" + +/* todo: unnecessary to support mmap_sem since kernel-space? */ +ssize_t xino_fread(au_readf_t func, struct file *file, void *kbuf, size_t size, + loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (err == -EAGAIN || err == -EINTR); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_access(file->f_dentry); +#endif + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static ssize_t do_xino_fwrite(au_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (err == -EAGAIN || err == -EINTR); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + au_writef_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + +ssize_t xino_fwrite(au_writef_t func, struct file *file, void *buf, size_t size, + loff_t *pos) +{ + ssize_t err; + + /* todo: signal block and no wkq? */ + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else { + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a new xinofile at the same place/path as @base_file. + */ +struct file *au_xino_create2(struct file *base_file, struct file *copy_src) +{ + struct file *file; + struct dentry *base, *parent; + struct inode *dir; + struct qstr *name; + struct path path; + int err; + + base = base_file->f_dentry; + parent = base->d_parent; /* dir inode is locked */ + dir = parent->d_inode; + IMustLock(dir); + + file = ERR_PTR(-EINVAL); + name = &base->d_name; + path.dentry = vfsub_lookup_one_len(name->name, parent, name->len); + if (IS_ERR(path.dentry)) { + file = (void *)path.dentry; + pr_err("%.*s lookup err %ld\n", + AuLNPair(name), PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(dir, path.dentry, S_IRUGO | S_IWUGO, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%.*s create err %d\n", AuLNPair(name), err); + goto out_dput; + } + + path.mnt = base_file->f_vfsmnt; + file = vfsub_dentry_open(&path, + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */); + if (IS_ERR(file)) { + pr_err("%.*s open err %ld\n", AuLNPair(name), PTR_ERR(file)); + goto out_dput; + } + + err = vfsub_unlink(dir, &file->f_path, /*force*/0); + if (unlikely(err)) { + pr_err("%.*s unlink err %d\n", AuLNPair(name), err); + goto out_fput; + } + + if (copy_src) { + /* no one can touch copy_src xino */ + err = au_copy_file(file, copy_src, + i_size_read(copy_src->f_dentry->d_inode)); + if (unlikely(err)) { + pr_err("%.*s copy err %d\n", AuLNPair(name), err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + return file; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct mutex *mtx; +}; + +static void au_xino_lock_dir(struct super_block *sb, struct file *xino, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t brid, bindex; + + ldir->hdir = NULL; + bindex = -1; + brid = au_xino_brid(sb); + if (brid >= 0) + bindex = au_br_index(sb, brid); + if (bindex >= 0) { + ldir->hdir = au_hi(sb->s_root->d_inode, bindex); + au_hn_imtx_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + ldir->parent = dget_parent(xino->f_dentry); + ldir->mtx = &ldir->parent->d_inode->i_mutex; + mutex_lock_nested(ldir->mtx, AuLsc_I_PARENT); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_imtx_unlock(ldir->hdir); + else { + mutex_unlock(ldir->mtx); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* trucate xino files asynchronously */ + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + aufs_bindex_t bi, bend; + struct au_branch *br; + struct file *new_xino, *file; + struct super_block *h_sb; + struct au_xino_lock_dir ldir; + + err = -EINVAL; + bend = au_sbend(sb); + if (unlikely(bindex < 0 || bend < bindex)) + goto out; + br = au_sbr(sb, bindex); + file = br->br_xino.xi_file; + if (!file) + goto out; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + new_xino = au_xino_create2(file, file); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(new_xino); + if (IS_ERR(new_xino)) + goto out; + err = 0; + fput(file); + br->br_xino.xi_file = new_xino; + + h_sb = br->br_mnt->mnt_sb; + for (bi = 0; bi <= bend; bi++) { + if (unlikely(bi == bindex)) + continue; + br = au_sbr(sb, bi); + if (br->br_mnt->mnt_sb != h_sb) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = new_xino; + get_file(new_xino); + } + +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; +}; + +static void xino_do_trunc(void *_args) +{ + struct xino_do_trunc_args *args = _args; + struct super_block *sb; + struct au_branch *br; + struct inode *dir; + int err; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = sb->s_root->d_inode; + br = args->br; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex); + if (!err + && br->br_xino.xi_file->f_dentry->d_inode->i_blocks + >= br->br_xino_upper) + br->br_xino_upper += AUFS_XINO_TRUNC_STEP; + + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino_running); + atomic_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + kfree(args); +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + struct xino_do_trunc_args *args; + int wkq_err; + + if (br->br_xino.xi_file->f_dentry->d_inode->i_blocks + < br->br_xino_upper) + return; + + if (atomic_inc_return(&br->br_xino_running) > 1) + goto out; + + /* lock and kfree() will be called in trunc_xino() */ + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + goto out_args; + } + + atomic_inc(&br->br_count); + args->sb = sb; + args->br = br; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + atomic_dec(&br->br_count); + +out_args: + kfree(args); +out: + atomic_dec(&br->br_xino_running); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xino_do_write(au_writef_t write, struct file *file, + ino_t h_ino, ino_t ino) +{ + loff_t pos; + ssize_t sz; + + pos = h_ino; + if (unlikely(au_loff_max / sizeof(ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(ino); + sz = xino_fwrite(write, file, &ino, sizeof(ino), &pos); + if (sz == sizeof(ino)) + return 0; /* success */ + + AuIOErr("write failed (%zd)\n", sz); + return -EIO; +} + +/* + * write @ino to the xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * even if @ino is zero, it is written to the xinofile and means no entry. + * if the size of the xino file on a specific filesystem exceeds the watermark, + * try truncating it. + */ +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino) +{ + int err; + unsigned int mnt_flags; + struct au_branch *br; + + BUILD_BUG_ON(sizeof(long long) != sizeof(au_loff_max) + || ((loff_t)-1) > 0); + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + br = au_sbr(sb, bindex); + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (!err) { + if (au_opt_test(mnt_flags, TRUNC_XINO) + && au_test_fs_trunc_xino(br->br_mnt->mnt_sb)) + xino_try_trunc(sb, br); + return 0; /* success */ + } + + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +/* aufs inode number bitmap */ + +static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; +static ino_t xib_calc_ino(unsigned long pindex, int bit) +{ + ino_t ino; + + AuDebugOn(bit < 0 || page_bits <= bit); + ino = AUFS_FIRST_INO + pindex * page_bits + bit; + return ino; +} + +static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) +{ + AuDebugOn(ino < AUFS_FIRST_INO); + ino -= AUFS_FIRST_INO; + *pindex = ino / page_bits; + *bit = ino % page_bits; +} + +static int xib_pindex(struct super_block *sb, unsigned long pindex) +{ + int err; + loff_t pos; + ssize_t sz; + struct au_sbinfo *sbinfo; + struct file *xib; + unsigned long *p; + + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE + || !au_opt_test(sbinfo->si_mntflags, XINO)); + + if (pindex == sbinfo->si_xib_last_pindex) + return 0; + + xib = sbinfo->si_xib; + p = sbinfo->si_xib_buf; + pos = sbinfo->si_xib_last_pindex; + pos *= PAGE_SIZE; + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) + goto out; + + pos = pindex; + pos *= PAGE_SIZE; + if (i_size_read(xib->f_dentry->d_inode) >= pos + PAGE_SIZE) + sz = xino_fread(sbinfo->si_xread, xib, p, PAGE_SIZE, &pos); + else { + memset(p, 0, PAGE_SIZE); + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + } + if (sz == PAGE_SIZE) { + sbinfo->si_xib_last_pindex = pindex; + return 0; /* success */ + } + +out: + AuIOErr1("write failed (%zd)\n", sz); + err = sz; + if (sz >= 0) + err = -EIO; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_xib_clear_bit(struct inode *inode) +{ + int err, bit; + unsigned long pindex; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + AuDebugOn(inode->i_nlink); + + sb = inode->i_sb; + xib_calc_bit(inode->i_ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + err = xib_pindex(sb, pindex); + if (!err) { + clear_bit(bit, sbinfo->si_xib_buf); + sbinfo->si_xib_next_bit = bit; + } + mutex_unlock(&sbinfo->si_xib_mtx); +} + +/* for s_op->delete_inode() */ +void au_xino_delete_inode(struct inode *inode, const int unlinked) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, bi; + unsigned char try_trunc; + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + struct inode *h_inode; + struct au_branch *br; + au_writef_t xwrite; + + sb = inode->i_sb; + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO) + || inode->i_ino == AUFS_ROOT_INO) + return; + + if (unlinked) { + au_xigen_inc(inode); + au_xib_clear_bit(inode); + } + + iinfo = au_ii(inode); + if (!iinfo) + return; + + bindex = iinfo->ii_bstart; + if (bindex < 0) + return; + + xwrite = au_sbi(sb)->si_xwrite; + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + for (; bindex <= bend; bindex++, hi++) { + h_inode = hi->hi_inode; + if (!h_inode + || (!unlinked && h_inode->i_nlink)) + continue; + + /* inode may not be revalidated */ + bi = au_br_index(sb, hi->hi_id); + if (bi < 0) + continue; + + br = au_sbr(sb, bi); + err = au_xino_do_write(xwrite, br->br_xino.xi_file, + h_inode->i_ino, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(br->br_mnt->mnt_sb)) + xino_try_trunc(sb, br); + } +} + +/* get an unused inode number from bitmap */ +ino_t au_xino_new_ino(struct super_block *sb) +{ + ino_t ino; + unsigned long *p, pindex, ul, pend; + struct au_sbinfo *sbinfo; + struct file *file; + int free_bit, err; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return iunique(sb, AUFS_FIRST_INO); + + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + free_bit = sbinfo->si_xib_next_bit; + if (free_bit < page_bits && !test_bit(free_bit, p)) + goto out; /* success */ + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + + pindex = sbinfo->si_xib_last_pindex; + for (ul = pindex - 1; ul < ULONG_MAX; ul--) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + + file = sbinfo->si_xib; + pend = i_size_read(file->f_dentry->d_inode) / PAGE_SIZE; + for (ul = pindex + 1; ul <= pend; ul++) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + BUG(); + +out: + set_bit(free_bit, p); + sbinfo->si_xib_next_bit = free_bit + 1; + pindex = sbinfo->si_xib_last_pindex; + mutex_unlock(&sbinfo->si_xib_mtx); + ino = xib_calc_ino(pindex, free_bit); + AuDbg("i%lu\n", (unsigned long)ino); + return ino; +out_err: + mutex_unlock(&sbinfo->si_xib_mtx); + AuDbg("i0\n"); + return 0; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * if @ino does not exist and @do_new is true, get new one. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + loff_t pos; + struct file *file; + struct au_sbinfo *sbinfo; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + sbinfo = au_sbi(sb); + pos = h_ino; + if (unlikely(au_loff_max / sizeof(*ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(*ino); + + file = au_sbr(sb, bindex)->br_xino.xi_file; + if (i_size_read(file->f_dentry->d_inode) < pos + sizeof(*ino)) + return 0; /* no ino */ + + sz = xino_fread(sbinfo->si_xread, file, ino, sizeof(*ino), &pos); + if (sz == sizeof(*ino)) + return 0; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xino read error (%zd)\n", sz); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* create and set a new xino file */ + +struct file *au_xino_create(struct super_block *sb, char *fname, int silent) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir; + int err; + + /* + * at mount-time, and the xino file is the default path, + * hnotify is disabled so we have no notify events to ignore. + * when a user specified the xino, we cannot get au_hdir to be ignored. + */ + file = vfsub_filp_open(fname, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + S_IRUGO | S_IWUGO); + if (IS_ERR(file)) { + if (!silent) + pr_err("open %s(%ld)\n", fname, PTR_ERR(file)); + return file; + } + + /* keep file count */ + h_parent = dget_parent(file->f_dentry); + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = vfsub_unlink(h_dir, &file->f_path, /*force*/0); + mutex_unlock(&h_dir->i_mutex); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fname, err); + goto out; + } + + err = -EINVAL; + d = file->f_dentry; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fname); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fname, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bend. + */ +static int is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bend) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb = au_sbr_sb(sb, btgt); + + for (bindex = 0; bindex < btgt; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + for (bindex++; bindex <= bend; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * initialize the xinofile for the specified branch @br + * at the place/path where @base_file indicates. + * test whether another branch is on the same filesystem or not, + * if @do_test is true. + */ +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct file *base_file, int do_test) +{ + int err; + ino_t ino; + aufs_bindex_t bend, bindex; + struct au_branch *shared_br, *b; + struct file *file; + struct super_block *tgt_sb; + + shared_br = NULL; + bend = au_sbend(sb); + if (do_test) { + tgt_sb = br->br_mnt->mnt_sb; + for (bindex = 0; bindex <= bend; bindex++) { + b = au_sbr(sb, bindex); + if (tgt_sb == b->br_mnt->mnt_sb) { + shared_br = b; + break; + } + } + } + + if (!shared_br || !shared_br->br_xino.xi_file) { + struct au_xino_lock_dir ldir; + + au_xino_lock_dir(sb, base_file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(base_file, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + br->br_xino.xi_file = file; + } else { + br->br_xino.xi_file = shared_br->br_xino.xi_file; + get_file(br->br_xino.xi_file); + } + + ino = AUFS_ROOT_INO; + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (unlikely(err)) { + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* trucate a xino bitmap file */ + +/* todo: slow */ +static int do_xib_restore(struct super_block *sb, struct file *file, void *page) +{ + int err, bit; + ssize_t sz; + unsigned long pindex; + loff_t pos, pend; + struct au_sbinfo *sbinfo; + au_readf_t func; + ino_t *ino; + unsigned long *p; + + err = 0; + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + func = sbinfo->si_xread; + pend = i_size_read(file->f_dentry->d_inode); + pos = 0; + while (pos < pend) { + sz = xino_fread(func, file, page, PAGE_SIZE, &pos); + err = sz; + if (unlikely(sz <= 0)) + goto out; + + err = 0; + for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { + if (unlikely(*ino < AUFS_FIRST_INO)) + continue; + + xib_calc_bit(*ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + err = xib_pindex(sb, pindex); + if (!err) + set_bit(bit, p); + else + goto out; + } + } + +out: + return err; +} + +static int xib_restore(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + void *page; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) + err = do_xib_restore + (sb, au_sbr(sb, bindex)->br_xino.xi_file, page); + else + AuDbg("b%d\n", bindex); + free_page((unsigned long)page); + +out: + return err; +} + +int au_xib_trunc(struct super_block *sb) +{ + int err; + ssize_t sz; + loff_t pos; + struct au_xino_lock_dir ldir; + struct au_sbinfo *sbinfo; + unsigned long *p; + struct file *file; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + if (!au_opt_test(sbinfo->si_mntflags, XINO)) + goto out; + + file = sbinfo->si_xib; + if (i_size_read(file->f_dentry->d_inode) <= PAGE_SIZE) + goto out; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(sbinfo->si_xib, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + + p = sbinfo->si_xib_buf; + memset(p, 0, PAGE_SIZE); + pos = 0; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) { + err = sz; + AuIOErr("err %d\n", err); + if (sz >= 0) + err = -EIO; + goto out; + } + + mutex_lock(&sbinfo->si_xib_mtx); + /* mnt_want_write() is unnecessary here */ + err = xib_restore(sb); + mutex_unlock(&sbinfo->si_xib_mtx); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * xino mount option handlers + */ +static au_readf_t find_readf(struct file *h_file) +{ + const struct file_operations *fop = h_file->f_op; + + if (fop) { + if (fop->read) + return fop->read; + if (fop->aio_read) + return do_sync_read; + } + return ERR_PTR(-ENOSYS); +} + +static au_writef_t find_writef(struct file *h_file) +{ + const struct file_operations *fop = h_file->f_op; + + if (fop) { + if (fop->write) + return fop->write; + if (fop->aio_write) + return do_sync_write; + } + return ERR_PTR(-ENOSYS); +} + +/* xino bitmap */ +static void xino_clear_xib(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct file *base) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xib); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + sbinfo->si_xread = find_readf(file); + sbinfo->si_xwrite = find_writef(file); + + err = -ENOMEM; + if (!sbinfo->si_xib_buf) + sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!sbinfo->si_xib_buf)) + goto out_unset; + + sbinfo->si_xib_last_pindex = 0; + sbinfo->si_xib_next_bit = 0; + if (i_size_read(file->f_dentry->d_inode) < PAGE_SIZE) { + pos = 0; + err = xino_fwrite(sbinfo->si_xwrite, file, sbinfo->si_xib_buf, + PAGE_SIZE, &pos); + if (unlikely(err != PAGE_SIZE)) + goto out_free; + } + err = 0; + goto out; /* success */ + +out_free: + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; + if (err >= 0) + err = -EIO; +out_unset: + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; +out: + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bend; + struct au_branch *br; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!br || !br->br_xino.xi_file) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } +} + +static int au_xino_set_br(struct super_block *sb, struct file *base) +{ + int err; + ino_t ino; + aufs_bindex_t bindex, bend, bshared; + struct { + struct file *old, *new; + } *fpair, *p; + struct au_branch *br; + struct inode *inode; + au_writef_t writef; + + SiMustWriteLock(sb); + + err = -ENOMEM; + bend = au_sbend(sb); + fpair = kcalloc(bend + 1, sizeof(*fpair), GFP_NOFS); + if (unlikely(!fpair)) + goto out; + + inode = sb->s_root->d_inode; + ino = AUFS_ROOT_INO; + writef = au_sbi(sb)->si_xwrite; + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + bshared = is_sb_shared(sb, bindex, bindex - 1); + if (bshared >= 0) { + /* shared xino */ + *p = fpair[bshared]; + get_file(p->new); + } + + if (!p->new) { + /* new xino */ + p->old = br->br_xino.xi_file; + p->new = au_xino_create2(base, br->br_xino.xi_file); + err = PTR_ERR(p->new); + if (IS_ERR(p->new)) { + p->new = NULL; + goto out_pair; + } + } + + err = au_xino_do_write(writef, p->new, + au_h_iptr(inode, bindex)->i_ino, ino); + if (unlikely(err)) + goto out_pair; + } + + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + get_file(p->new); + br->br_xino.xi_file = p->new; + } + +out_pair: + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) + if (p->new) + fput(p->new); + else + break; + kfree(fpair); +out: + return err; +} + +void au_xino_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + au_xigen_clr(sb); + xino_clear_xib(sb); + xino_clear_br(sb); + sbinfo = au_sbi(sb); + /* lvalue, do not call au_mntflags() */ + au_opt_clr(sbinfo->si_mntflags, XINO); +} + +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount) +{ + int err, skip; + struct dentry *parent, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct inode *dir; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + parent = dget_parent(xino->file->f_dentry); + if (remount) { + skip = 0; + dname = &xino->file->f_dentry->d_name; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_parent = dget_parent(cur_xino->f_dentry); + cur_name = &cur_xino->f_dentry->d_name; + skip = (cur_parent == parent + && dname->len == cur_name->len + && !memcmp(dname->name, cur_name->name, + dname->len)); + dput(cur_parent); + } + if (skip) + goto out; + } + + au_opt_set(sbinfo->si_mntflags, XINO); + dir = parent->d_inode; + mutex_lock_nested(&dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = au_xino_set_xib(sb, xino->file); + if (!err) + err = au_xigen_set(sb, xino->file); + if (!err) + err = au_xino_set_br(sb, xino->file); + mutex_unlock(&dir->i_mutex); + if (!err) + goto out; /* success */ + + /* reset all */ + AuIOErr("failed creating xino(%d).\n", err); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a xinofile at the default place/path. + */ +struct file *au_xino_def(struct super_block *sb) +{ + struct file *file; + char *page, *p; + struct au_branch *br; + struct super_block *h_sb; + struct path path; + aufs_bindex_t bend, bindex, bwr; + + br = NULL; + bend = au_sbend(sb); + bwr = -1; + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm) + && !au_test_fs_bad_xino(br->br_mnt->mnt_sb)) { + bwr = bindex; + break; + } + } + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); + page = __getname_gfp(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = br->br_mnt; + path.dentry = au_h_dptr(sb->s_root, bwr); + p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); + file = (void *)p; + if (!IS_ERR(p)) { + strcat(p, "/" AUFS_XINO_FNAME); + AuDbg("%s\n", p); + file = au_xino_create(sb, p, /*silent*/0); + if (!IS_ERR(file)) + au_xino_brid_set(sb, br->br_id); + } + __putname(page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0); + if (IS_ERR(file)) + goto out; + h_sb = file->f_dentry->d_sb; + if (unlikely(au_test_fs_bad_xino(h_sb))) { + pr_err("xino doesn't support %s(%s)\n", + AUFS_XINO_DEFPATH, au_sbtype(h_sb)); + fput(file); + file = ERR_PTR(-EINVAL); + } + if (!IS_ERR(file)) + au_xino_brid_set(sb, -1); + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err < 0)) + goto out; + + err = 0; +#define Deleted "\\040(deleted)" + seq->count -= sizeof(Deleted) - 1; + AuDebugOn(memcmp(seq->buf + seq->count, Deleted, + sizeof(Deleted) - 1)); +#undef Deleted + +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/module.h +++ linux-3.5.0/ubuntu/aufs/module.h @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * module initialization and module-global + */ + +#ifndef __AUFS_MODULE_H__ +#define __AUFS_MODULE_H__ + +#ifdef __KERNEL__ + +#include + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +enum { + AuLcNonDir_FIINFO, + AuLcNonDir_DIINFO, + AuLcNonDir_IIINFO, + + AuLcDir_FIINFO, + AuLcDir_DIINFO, + AuLcDir_IIINFO, + + AuLcSymlink_DIINFO, + AuLcSymlink_IIINFO, + + AuLcKey_Last +}; +extern struct lock_class_key au_lc_key[AuLcKey_Last]; + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp); +int au_seq_path(struct seq_file *seq, struct path *path); + +#ifdef CONFIG_PROC_FS +/* procfs.c */ +int __init au_procfs_init(void); +void au_procfs_fin(void); +#else +AuStubInt0(au_procfs_init, void); +AuStubVoid(au_procfs_fin, void); +#endif + +/* ---------------------------------------------------------------------- */ + +/* kmem cache */ +enum { + AuCache_DINFO, + AuCache_ICNTNR, + AuCache_FINFO, + AuCache_VDIR, + AuCache_DEHSTR, + AuCache_HNOTIFY, /* must be last */ + AuCache_Last +}; + +#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) +#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) +#define AuCacheCtor(type, ctor) \ + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + +extern struct kmem_cache *au_cachep[]; + +#define AuCacheFuncs(name, index) \ +static inline struct au_##name *au_cache_alloc_##name(void) \ +{ return kmem_cache_alloc(au_cachep[AuCache_##index], GFP_NOFS); } \ +static inline void au_cache_free_##name(struct au_##name *p) \ +{ kmem_cache_free(au_cachep[AuCache_##index], p); } + +AuCacheFuncs(dinfo, DINFO); +AuCacheFuncs(icntnr, ICNTNR); +AuCacheFuncs(finfo, FINFO); +AuCacheFuncs(vdir, VDIR); +AuCacheFuncs(vdir_dehstr, DEHSTR); +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/inode.h +++ linux-3.5.0/ubuntu/aufs/inode.h @@ -0,0 +1,560 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations + */ + +#ifndef __AUFS_INODE_H__ +#define __AUFS_INODE_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct vfsmount; + +struct au_hnotify { +#ifdef CONFIG_AUFS_HNOTIFY +#ifdef CONFIG_AUFS_HFSNOTIFY + /* never use fsnotify_add_vfsmount_mark() */ + struct fsnotify_mark hn_mark; +#endif + struct inode *hn_aufs_inode; /* no get/put */ +#endif +} ____cacheline_aligned_in_smp; + +struct au_hinode { + struct inode *hi_inode; + aufs_bindex_t hi_id; +#ifdef CONFIG_AUFS_HNOTIFY + struct au_hnotify *hi_notify; +#endif + + /* reference to the copied-up whiteout with get/put */ + struct dentry *hi_whdentry; +}; + +struct au_vdir; +struct au_iinfo { + atomic_t ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_bstart, ii_bend; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; +} ____cacheline_aligned_in_smp; + +/* au_pin flags */ +#define AuPin_DI_LOCKED 1 +#define AuPin_MNT_WRITE (1 << 1) +#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) +#define au_fset_pin(flags, name) \ + do { (flags) |= AuPin_##name; } while (0) +#define au_fclr_pin(flags, name) \ + do { (flags) &= ~AuPin_##name; } while (0) + +struct au_pin { + /* input */ + struct dentry *dentry; + unsigned int udba; + unsigned char lsc_di, lsc_hi, flags; + aufs_bindex_t bindex; + + /* output */ + struct dentry *parent; + struct au_hinode *hdir; + struct vfsmount *h_mnt; +}; + +/* ---------------------------------------------------------------------- */ + +static inline struct au_iinfo *au_ii(struct inode *inode) +{ + struct au_iinfo *iinfo; + + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + if (iinfo->ii_hinode) + return iinfo; + return NULL; /* debugging bad_inode case */ +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +int au_refresh_hinode_self(struct inode *inode); +int au_refresh_hinode(struct inode *inode, struct dentry *dentry); +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino); +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); +int au_test_h_perm(struct inode *h_inode, int mask); +int au_test_h_perm_sio(struct inode *h_inode, int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) +{ +#ifdef CONFIG_AUFS_SHWH + return au_ino(sb, bindex, h_ino, d_type, ino); +#else + return 0; +#endif +} + +/* i_op.c */ +extern struct inode_operations aufs_iop, aufs_symlink_iop, aufs_dir_iop; + +/* au_wr_dir flags */ +#define AuWrDir_ADD_ENTRY 1 +#define AuWrDir_ISDIR (1 << 1) +#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) +#define au_fset_wrdir(flags, name) \ + do { (flags) |= AuWrDir_##name; } while (0) +#define au_fclr_wrdir(flags, name) \ + do { (flags) &= ~AuWrDir_##name; } while (0) + +struct au_wr_dir_args { + aufs_bindex_t force_btgt; + unsigned char flags; +}; +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args); + +struct dentry *au_pinned_h_parent(struct au_pin *pin); +void au_pin_init(struct au_pin *pin, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags); +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) __must_check; +int au_do_pin(struct au_pin *pin) __must_check; +void au_unpin(struct au_pin *pin); + +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev); +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_unlink(struct inode *dir, struct dentry *dentry); +int aufs_rmdir(struct inode *dir, struct dentry *dentry); + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); +int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct dentry *dentry); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); +void au_hiput(struct au_hinode *hinode); +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh); +unsigned int au_hi_flags(struct inode *inode, int isdir); + +/* hinode flags */ +#define AuHi_XINO 1 +#define AuHi_HNOTIFY (1 << 1) +#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) +#define au_fset_hi(flags, name) \ + do { (flags) |= AuHi_##name; } while (0) +#define au_fclr_hi(flags, name) \ + do { (flags) &= ~AuHi_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuHi_HNOTIFY +#define AuHi_HNOTIFY 0 +#endif + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + +void au_update_iigen(struct inode *inode); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_ii_realloc(struct au_iinfo *iinfo, int nbr); + +#ifdef CONFIG_PROC_FS +/* plink.c */ +int au_plink_maint(struct super_block *sb, int flags); +void au_plink_maint_leave(struct au_sbinfo *sbinfo); +int au_plink_maint_enter(struct super_block *sb); +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb); +#else +AuStubVoid(au_plink_list, struct super_block *sb) +#endif +int au_plink_test(struct inode *inode); +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +void au_plink_put(struct super_block *sb, int verbose); +void au_plink_clean(struct super_block *sb, int verbose); +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); +#else +AuStubInt0(au_plink_maint, struct super_block *sb, int flags); +AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); +AuStubInt0(au_plink_maint_enter, struct super_block *sb); +AuStubVoid(au_plink_list, struct super_block *sb); +AuStubInt0(au_plink_test, struct inode *inode); +AuStub(struct dentry *, au_plink_lkup, return NULL, + struct inode *inode, aufs_bindex_t bindex); +AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +AuStubVoid(au_plink_put, struct super_block *sb, int verbose); +AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); +AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); +#endif /* CONFIG_PROC_FS */ + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for iinfo */ +enum { + AuLsc_II_CHILD, /* child first */ + AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_II_CHILD3, /* copyup dirs */ + AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ + AuLsc_II_PARENT2, + AuLsc_II_PARENT3, /* copyup dirs */ + AuLsc_II_NEW_CHILD +}; + +/* + * ii_read_lock_child, ii_write_lock_child, + * ii_read_lock_child2, ii_write_lock_child2, + * ii_read_lock_child3, ii_write_lock_child3, + * ii_read_lock_parent, ii_write_lock_parent, + * ii_read_lock_parent2, ii_write_lock_parent2, + * ii_read_lock_parent3, ii_write_lock_parent3, + * ii_read_lock_new_child, ii_write_lock_new_child, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void ii_read_lock_##name(struct inode *i) \ +{ \ + au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuWriteLockFunc(name, lsc) \ +static inline void ii_write_lock_##name(struct inode *i) \ +{ \ + au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); +AuRWLockFuncs(new_child, NEW_CHILD); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +/* + * ii_read_unlock, ii_write_unlock, ii_downgrade_lock + */ +AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &au_ii(i)->ii_rwsem); + +#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) +#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) +#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) + +/* ---------------------------------------------------------------------- */ + +static inline void au_icntnr_init(struct au_icntnr *c) +{ +#ifdef CONFIG_AUFS_DEBUG + c->vfs_inode.i_mode = 0; +#endif +} + +static inline unsigned int au_iigen(struct inode *inode) +{ + return atomic_read(&au_ii(inode)->ii_generation); +} + +/* tiny test for inode number */ +/* tmpfs generation is too rough */ +static inline int au_test_higen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + AuRwMustAnyLock(&iinfo->ii_rwsem); + return !(iinfo->ii_hsb1 == h_inode->i_sb + && iinfo->ii_higen == h_inode->i_generation); +} + +static inline void au_iigen_dec(struct inode *inode) +{ + atomic_dec(&au_ii(inode)->ii_generation); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(inode && au_iigen(inode) != sigen)) + err = -EIO; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_id; +} + +static inline aufs_bindex_t au_ibstart(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bstart; +} + +static inline aufs_bindex_t au_ibend(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bend; +} + +static inline struct au_vdir *au_ivdir(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_vdir; +} + +static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; +} + +static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bstart = bindex; +} + +static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bend = bindex; +} + +static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_vdir = vdir; +} + +static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode + bindex; +} + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_pinned_parent(struct au_pin *pin) +{ + if (pin) + return pin->parent; + return NULL; +} + +static inline struct inode *au_pinned_h_dir(struct au_pin *pin) +{ + if (pin && pin->hdir) + return pin->hdir->hi_inode; + return NULL; +} + +static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) +{ + if (pin) + return pin->hdir; + return NULL; +} + +static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) +{ + if (pin) + pin->dentry = dentry; +} + +static inline void au_pin_set_parent_lflag(struct au_pin *pin, + unsigned char lflag) +{ + if (pin) { + if (lflag) + au_fset_pin(pin->flags, DI_LOCKED); + else + au_fclr_pin(pin->flags, DI_LOCKED); + } +} + +static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) +{ + if (pin) { + dput(pin->parent); + pin->parent = dget(parent); + } +} + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +#ifdef CONFIG_AUFS_HNOTIFY +struct au_hnotify_op { + void (*ctl)(struct au_hinode *hinode, int do_set); + int (*alloc)(struct au_hinode *hinode); + + /* + * if it returns true, the the caller should free hinode->hi_notify, + * otherwise ->free() frees it. + */ + int (*free)(struct au_hinode *hinode, + struct au_hnotify *hn) __must_check; + + void (*fin)(void); + int (*init)(void); + + int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); + void (*fin_br)(struct au_branch *br); + int (*init_br)(struct au_branch *br, int perm); +}; + +/* hnotify.c */ +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); +void au_hn_free(struct au_hinode *hinode); +void au_hn_ctl(struct au_hinode *hinode, int do_set); +void au_hn_reset(struct inode *inode, unsigned int flags); +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode); +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); +int au_hnotify_init_br(struct au_branch *br, int perm); +void au_hnotify_fin_br(struct au_branch *br); +int __init au_hnotify_init(void); +void au_hnotify_fin(void); + +/* hfsnotify.c */ +extern const struct au_hnotify_op au_hnotify_op; + +static inline +void au_hn_init(struct au_hinode *hinode) +{ + hinode->hi_notify = NULL; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return hinode->hi_notify; +} + +#else +static inline +int au_hn_alloc(struct au_hinode *hinode __maybe_unused, + struct inode *inode __maybe_unused) +{ + return -EOPNOTSUPP; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return NULL; +} + +AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) +AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, + int do_set __maybe_unused) +AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, + unsigned int flags __maybe_unused) +AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, + struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) +AuStubInt0(__init au_hnotify_init, void) +AuStubVoid(au_hnotify_fin, void) +AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +static inline void au_hn_suspend(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/0); +} + +static inline void au_hn_resume(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/1); +} + +static inline void au_hn_imtx_lock(struct au_hinode *hdir) +{ + mutex_lock(&hdir->hi_inode->i_mutex); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + mutex_unlock(&hdir->hi_inode->i_mutex); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/magic.mk +++ linux-3.5.0/ubuntu/aufs/magic.mk @@ -0,0 +1,54 @@ + +# defined in ${srctree}/fs/fuse/inode.c +# tristate +ifdef CONFIG_FUSE_FS +ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 +endif + +# defined in ${srctree}/fs/ocfs2/ocfs2_fs.h +# tristate +ifdef CONFIG_OCFS2_FS +ccflags-y += -DOCFS2_SUPER_MAGIC=0x7461636f +endif + +# defined in ${srctree}/fs/ocfs2/dlm/userdlm.h +# tristate +ifdef CONFIG_OCFS2_FS_O2CB +ccflags-y += -DDLMFS_MAGIC=0x76a9f425 +endif + +# defined in ${srctree}/fs/cifs/cifsfs.c +# tristate +ifdef CONFIG_CIFS_FS +ccflags-y += -DCIFS_MAGIC_NUMBER=0xFF534D42 +endif + +# defined in ${srctree}/fs/xfs/xfs_sb.h +# tristate +ifdef CONFIG_XFS_FS +ccflags-y += -DXFS_SB_MAGIC=0x58465342 +endif + +# defined in ${srctree}/fs/configfs/mount.c +# tristate +ifdef CONFIG_CONFIGFS_FS +ccflags-y += -DCONFIGFS_MAGIC=0x62656570 +endif + +# defined in ${srctree}/fs/9p/v9fs.h +# tristate +ifdef CONFIG_9P_FS +ccflags-y += -DV9FS_MAGIC=0x01021997 +endif + +# defined in ${srctree}/fs/ubifs/ubifs.h +# tristate +ifdef CONFIG_UBIFS_FS +ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 +endif + +# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h +# tristate +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif --- linux-3.5.0.orig/ubuntu/aufs/dbgaufs.c +++ linux-3.5.0/ubuntu/aufs/dbgaufs.c @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debugfs interface + */ + +#include +#include "aufs.h" + +#ifndef CONFIG_SYSFS +#error DEBUG_FS depends upon SYSFS +#endif + +static struct dentry *dbgaufs; +static const mode_t dbgaufs_mode = S_IRUSR | S_IRGRP | S_IROTH; + +/* 20 is max digits length of ulong 64 */ +struct dbgaufs_arg { + int n; + char a[20 * 4]; +}; + +/* + * common function for all XINO files + */ +static int dbgaufs_xi_release(struct inode *inode __maybe_unused, + struct file *file) +{ + kfree(file->private_data); + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt) +{ + int err; + struct kstat st; + struct dbgaufs_arg *p; + + err = -ENOMEM; + p = kmalloc(sizeof(*p), GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + p->n = 0; + file->private_data = p; + if (!xf) + goto out; + + err = vfs_getattr(xf->f_vfsmnt, xf->f_dentry, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%ld, %llux%lu %lld\n", + (long)file_count(xf), st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%lu %lld\n", + st.blocks, st.blksize, + (long long)st.size); + AuDebugOn(p->n >= sizeof(p->a)); + } else { + p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); + err = 0; + } + +out: + return err; + +} + +static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +/* ---------------------------------------------------------------------- */ + +static int dbgaufs_xib_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xib_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xib_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +/* ---------------------------------------------------------------------- */ + +#define DbgaufsXi_PREFIX "xi" + +static int dbgaufs_xino_open(struct inode *inode, struct file *file) +{ + int err; + long l; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct file *xf; + struct qstr *name; + + err = -ENOENT; + xf = NULL; + name = &file->f_dentry->d_name; + if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) + || memcmp(name->name, DbgaufsXi_PREFIX, + sizeof(DbgaufsXi_PREFIX) - 1))) + goto out; + err = kstrtol(name->name + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (l <= au_sbend(sb)) { + xf = au_sbr(sb, (aufs_bindex_t)l)->br_xino.xi_file; + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1); + } else + err = -ENOENT; + si_read_unlock(sb); + +out: + return err; +} + +static const struct file_operations dbgaufs_xino_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xino_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bend; + struct au_branch *br; + struct au_xino_file *xi; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + xi = &br->br_xino; + if (xi->xi_dbgaufs) { + debugfs_remove(xi->xi_dbgaufs); + xi->xi_dbgaufs = NULL; + } + } +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + struct au_branch *br; + struct au_xino_file *xi; + aufs_bindex_t bend; + char name[sizeof(DbgaufsXi_PREFIX) + 5]; /* "xi" bindex NULL */ + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + br = au_sbr(sb, bindex); + xi = &br->br_xino; + AuDebugOn(xi->xi_dbgaufs); + xi->xi_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + /* ignore an error */ + if (unlikely(!xi->xi_dbgaufs)) + AuWarn1("failed %s under debugfs\n", name); + } +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +static int dbgaufs_xigen_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xigen_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xigen_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + int err; + + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -EIO; + sbinfo->si_dbgaufs_xigen = debugfs_create_file + ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xigen_fop); + if (sbinfo->si_dbgaufs_xigen) + err = 0; + + return err; +} +#else +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + return 0; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_si_fin(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + debugfs_remove_recursive(sbinfo->si_dbgaufs); + sbinfo->si_dbgaufs = NULL; + kobject_put(&sbinfo->si_kobj); +} + +int dbgaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + char name[SysaufsSiNameLen]; + + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -ENOENT; + if (!dbgaufs) { + AuErr1("/debug/aufs is uninitialized\n"); + goto out; + } + + err = -EIO; + sysaufs_name(sbinfo, name); + sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); + if (unlikely(!sbinfo->si_dbgaufs)) + goto out; + kobject_get(&sbinfo->si_kobj); + + sbinfo->si_dbgaufs_xib = debugfs_create_file + ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xib_fop); + if (unlikely(!sbinfo->si_dbgaufs_xib)) + goto out_dir; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_fin(void) +{ + debugfs_remove(dbgaufs); +} + +int __init dbgaufs_init(void) +{ + int err; + + err = -EIO; + dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); + if (dbgaufs) + err = 0; + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/loop.c +++ linux-3.5.0/ubuntu/aufs/loop.c @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * support for loopback block device as a branch + */ + +#include +#include "aufs.h" + +/* + * test if two lower dentries have overlapping branches. + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ + struct super_block *h_sb; + struct loop_device *l; + + h_sb = h_adding->d_sb; + if (MAJOR(h_sb->s_dev) != LOOP_MAJOR) + return 0; + + l = h_sb->s_bdev->bd_disk->private_data; + h_adding = l->lo_backing_file->f_dentry; + /* + * h_adding can be local NFS. + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) + return 1; + return !!au_test_subdir(h_adding, sb->s_root); +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ +int au_test_loopback_kthread(void) +{ + int ret; + struct task_struct *tsk = current; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + const char c = tsk->comm[4]; + ret = ('0' <= c && c <= '9' + && !strncmp(tsk->comm, "loop", 4)); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +#define au_warn_loopback_step 16 +static int au_warn_loopback_nelem = au_warn_loopback_step; +static unsigned long *au_warn_loopback_array; + +void au_warn_loopback(struct super_block *h_sb) +{ + int i, new_nelem; + unsigned long *a, magic; + static DEFINE_SPINLOCK(spin); + + magic = h_sb->s_magic; + spin_lock(&spin); + a = au_warn_loopback_array; + for (i = 0; i < au_warn_loopback_nelem && *a; i++) + if (a[i] == magic) { + spin_unlock(&spin); + return; + } + + /* h_sb is new to us, print it */ + if (i < au_warn_loopback_nelem) { + a[i] = magic; + goto pr; + } + + /* expand the array */ + new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; + a = au_kzrealloc(au_warn_loopback_array, + au_warn_loopback_nelem * sizeof(unsigned long), + new_nelem * sizeof(unsigned long), GFP_ATOMIC); + if (a) { + au_warn_loopback_nelem = new_nelem; + au_warn_loopback_array = a; + a[i] = magic; + goto pr; + } + + spin_unlock(&spin); + AuWarn1("realloc failed, ignored\n"); + return; + +pr: + spin_unlock(&spin); + pr_warn("you may want to try another patch for loopback file " + "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); +} + +int au_loopback_init(void) +{ + int err; + struct super_block *sb __maybe_unused; + + AuDebugOn(sizeof(sb->s_magic) != sizeof(unsigned long)); + + err = 0; + au_warn_loopback_array = kcalloc(au_warn_loopback_step, + sizeof(unsigned long), GFP_NOFS); + if (unlikely(!au_warn_loopback_array)) + err = -ENOMEM; + + return err; +} + +void au_loopback_fin(void) +{ + kfree(au_warn_loopback_array); +} --- linux-3.5.0.orig/ubuntu/aufs/cpup.c +++ linux-3.5.0/ubuntu/aufs/cpup.c @@ -0,0 +1,1084 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * copy-up functions, see wbr_policy.c for copy-down + */ + +#include +#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, struct inode *src) +{ + const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE + | S_NOATIME | S_NOCMTIME; + + dst->i_flags |= src->i_flags & ~mask; + if (au_test_fs_notime(dst->i_sb)) + dst->i_flags |= S_NOATIME | S_NOCMTIME; +} + +void au_cpup_attr_timesizes(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + fsstack_copy_attr_times(inode, h_inode); + fsstack_copy_inode_size(inode, h_inode); +} + +void au_cpup_attr_nlink(struct inode *inode, int force) +{ + struct inode *h_inode; + struct super_block *sb; + aufs_bindex_t bindex, bend; + + sb = inode->i_sb; + bindex = au_ibstart(inode); + h_inode = au_h_iptr(inode, bindex); + if (!force + && !S_ISDIR(h_inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode)) + return; + + /* + * 0 can happen in revalidating. + * h_inode->i_mutex is not held, but it is harmless since once i_nlink + * reaches 0, it will never become positive. + */ + set_nlink(inode, h_inode->i_nlink); + + /* + * fewer nlink makes find(1) noisy, but larger nlink doesn't. + * it may includes whplink directory. + */ + if (S_ISDIR(h_inode->i_mode)) { + bend = au_ibend(inode); + for (bindex++; bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) + au_add_nlink(inode, h_inode); + } + } +} + +void au_cpup_attr_changeable(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + inode->i_mode = h_inode->i_mode; + inode->i_uid = h_inode->i_uid; + inode->i_gid = h_inode->i_gid; + au_cpup_attr_timesizes(inode); + au_cpup_attr_flags(inode, h_inode); +} + +void au_cpup_igen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + iinfo->ii_higen = h_inode->i_generation; + iinfo->ii_hsb1 = h_inode->i_sb; +} + +void au_cpup_attr_all(struct inode *inode, int force) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + au_cpup_attr_changeable(inode); + if (inode->i_nlink > 0) + au_cpup_attr_nlink(inode, force); + inode->i_rdev = h_inode->i_rdev; + inode->i_blkbits = h_inode->i_blkbits; + au_cpup_igen(inode, h_inode); +} + +/* ---------------------------------------------------------------------- */ + +/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ + +/* keep the timestamps of the parent dir when cpup */ +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path) +{ + struct inode *h_inode; + + dt->dt_dentry = dentry; + dt->dt_h_path = *h_path; + h_inode = h_path->dentry->d_inode; + dt->dt_atime = h_inode->i_atime; + dt->dt_mtime = h_inode->i_mtime; + /* smp_mb(); */ +} + +void au_dtime_revert(struct au_dtime *dt) +{ + struct iattr attr; + int err; + + attr.ia_atime = dt->dt_atime; + attr.ia_mtime = dt->dt_mtime; + attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET + | ATTR_ATIME | ATTR_ATIME_SET; + + err = vfsub_notify_change(&dt->dt_h_path, &attr); + if (unlikely(err)) + pr_warn("restoring timestamps failed(%d). ignored\n", err); +} + +/* ---------------------------------------------------------------------- */ + +static noinline_for_stack +int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct path h_path; + struct inode *h_isrc, *h_idst; + + h_path.dentry = au_h_dptr(dst, bindex); + h_idst = h_path.dentry->d_inode; + h_path.mnt = au_sbr_mnt(dst->d_sb, bindex); + h_isrc = h_src->d_inode; + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + ia.ia_atime = h_isrc->i_atime; + ia.ia_mtime = h_isrc->i_mtime; + if (h_idst->i_mode != h_isrc->i_mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + } + sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_isrc); + err = vfsub_notify_change(&h_path, &ia); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_notify_change(&h_path, &ia); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, + char *buf, unsigned long blksize) +{ + int err; + size_t sz, rbytes, wbytes; + unsigned char all_zero; + char *p, *zp; + struct mutex *h_mtx; + /* reduce stack usage */ + struct iattr *ia; + + zp = page_address(ZERO_PAGE(0)); + if (unlikely(!zp)) + return -ENOMEM; /* possible? */ + + err = 0; + all_zero = 0; + while (len) { + AuDbg("len %lld\n", len); + sz = blksize; + if (len < blksize) + sz = len; + + rbytes = 0; + /* todo: signal_pending? */ + while (!rbytes || err == -EAGAIN || err == -EINTR) { + rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); + err = rbytes; + } + if (unlikely(err < 0)) + break; + + all_zero = 0; + if (len >= rbytes && rbytes == blksize) + all_zero = !memcmp(buf, zp, rbytes); + if (!all_zero) { + wbytes = rbytes; + p = buf; + while (wbytes) { + size_t b; + + b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); + err = b; + /* todo: signal_pending? */ + if (unlikely(err == -EAGAIN || err == -EINTR)) + continue; + if (unlikely(err < 0)) + break; + wbytes -= b; + p += b; + } + } else { + loff_t res; + + AuLabel(hole); + res = vfsub_llseek(dst, rbytes, SEEK_CUR); + err = res; + if (unlikely(res < 0)) + break; + } + len -= rbytes; + err = 0; + } + + /* the last block may be a hole */ + if (!err && all_zero) { + AuLabel(last hole); + + err = 1; + if (au_test_nfs(dst->f_dentry->d_sb)) { + /* nfs requires this step to make last hole */ + /* is this only nfs? */ + do { + /* todo: signal_pending? */ + err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); + } while (err == -EAGAIN || err == -EINTR); + if (err == 1) + dst->f_pos--; + } + + if (err == 1) { + ia = (void *)buf; + ia->ia_size = dst->f_pos; + ia->ia_valid = ATTR_SIZE | ATTR_FILE; + ia->ia_file = dst; + h_mtx = &dst->f_dentry->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + err = vfsub_notify_change(&dst->f_path, ia); + mutex_unlock(h_mtx); + } + } + + return err; +} + +int au_copy_file(struct file *dst, struct file *src, loff_t len) +{ + int err; + unsigned long blksize; + unsigned char do_kfree; + char *buf; + + err = -ENOMEM; + blksize = dst->f_dentry->d_sb->s_blocksize; + if (!blksize || PAGE_SIZE < blksize) + blksize = PAGE_SIZE; + AuDbg("blksize %lu\n", blksize); + do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); + if (do_kfree) + buf = kmalloc(blksize, GFP_NOFS); + else + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + if (len > (1 << 22)) + AuDbg("copying a large file %lld\n", (long long)len); + + src->f_pos = 0; + dst->f_pos = 0; + err = au_do_copy_file(dst, src, len, buf, blksize); + if (do_kfree) + kfree(buf); + else + free_page((unsigned long)buf); + +out: + return err; +} + +/* + * to support a sparse file which is opened with O_APPEND, + * we need to close the file. + */ +static int au_cp_regular(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len) +{ + int err, i; + enum { SRC, DST }; + struct { + aufs_bindex_t bindex; + unsigned int flags; + struct dentry *dentry; + struct file *file; + void *label, *label_file; + } *f, file[] = { + { + .bindex = bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + .file = NULL, + .label = &&out, + .label_file = &&out_src + }, + { + .bindex = bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .file = NULL, + .label = &&out_src, + .label_file = &&out_dst + } + }; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + sb = dentry->d_sb; + f = file; + for (i = 0; i < 2; i++, f++) { + f->dentry = au_h_dptr(dentry, f->bindex); + f->file = au_h_open(dentry, f->bindex, f->flags, /*file*/NULL); + err = PTR_ERR(f->file); + if (IS_ERR(f->file)) + goto *f->label; + err = -EINVAL; + if (unlikely(!f->file->f_op)) + goto *f->label_file; + } + + /* try stopping to update while we copyup */ + IMustLock(file[SRC].dentry->d_inode); + err = au_copy_file(file[DST].file, file[SRC].file, len); + +out_dst: + fput(file[DST].file); + au_sbr_put(sb, file[DST].bindex); +out_src: + fput(file[SRC].file); + au_sbr_put(sb, file[SRC].bindex); +out: + return err; +} + +static int au_do_cpup_regular(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, + struct inode *h_dir, struct path *h_path) +{ + int err, rerr; + loff_t l; + + err = 0; + l = i_size_read(au_h_iptr(dentry->d_inode, bsrc)); + if (len == -1 || l < len) + len = l; + if (len) + err = au_cp_regular(dentry, bdst, bsrc, len); + if (!err) + goto out; /* success */ + + rerr = vfsub_unlink(h_dir, h_path, /*force*/0); + if (rerr) { + AuIOErr("failed unlinking cpup-ed %.*s(%d, %d)\n", + AuDLNPair(h_path->dentry), err, rerr); + err = -EIO; + } + +out: + return err; +} + +static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, + struct inode *h_dir) +{ + int err, symlen; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } sym; + + err = -ENOSYS; + if (unlikely(!h_src->d_inode->i_op->readlink)) + goto out; + + err = -ENOMEM; + sym.k = __getname_gfp(GFP_NOFS); + if (unlikely(!sym.k)) + goto out; + + /* unnecessary to support mmap_sem since symlink is not mmap-able */ + old_fs = get_fs(); + set_fs(KERNEL_DS); + symlen = h_src->d_inode->i_op->readlink(h_src, sym.u, PATH_MAX); + err = symlen; + set_fs(old_fs); + + if (symlen > 0) { + sym.k[symlen] = 0; + err = vfsub_symlink(h_dir, h_path, sym.k); + } + __putname(sym.k); + +out: + return err; +} + +/* return with the lower dst inode is locked */ +static noinline_for_stack +int cpup_entry(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err; + umode_t mode; + unsigned int mnt_flags; + unsigned char isdir; + const unsigned char do_dt = !!au_ftest_cpup(flags, DTIME); + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *h_inode, *h_dir; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + h_src = au_h_dptr(dentry, bsrc); + h_inode = h_src->d_inode; + AuDebugOn(h_inode != au_h_iptr(dentry->d_inode, bsrc)); + + /* try stopping to be referenced while we are creating */ + h_dst = au_h_dptr(dentry, bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + AuDebugOn(h_parent != h_dst->d_parent); + + sb = dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, bdst); + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + + isdir = 0; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + /* try stopping to update while we are referencing */ + IMustLock(h_inode); + err = vfsub_create(h_dir, &h_path, mode | S_IWUSR); + if (!err) + err = au_do_cpup_regular + (dentry, bdst, bsrc, len, + au_h_iptr(dst_parent->d_inode, bdst), &h_path); + break; + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); + if (!err) { + /* + * strange behaviour from the users view, + * particularry setattr case + */ + if (au_ibstart(dst_parent->d_inode) == bdst) + au_cpup_attr_nlink(dst_parent->d_inode, + /*force*/1); + au_cpup_attr_nlink(dentry->d_inode, /*force*/1); + } + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); + break; + case S_IFCHR: + case S_IFBLK: + AuDebugOn(!capable(CAP_MKNOD)); + /*FALLTHROUGH*/ + case S_IFIFO: + case S_IFSOCK: + err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) + && !isdir + && au_opt_test(mnt_flags, XINO) + && h_inode->i_nlink == 1 + /* todo: unnecessary? */ + /* && dentry->d_inode->i_nlink == 1 */ + && bdst < bsrc + && !au_ftest_cpup(flags, KEEPLINO)) + au_xino_write(sb, bsrc, h_inode->i_ino, /*ino*/0); + /* ignore this error */ + + if (do_dt) + au_dtime_revert(&dt); + return err; +} + +/* + * copyup the @dentry from @bsrc to @bdst. + * the caller must set the both of lower dentries. + * @len is for truncating when it is -1 copyup the entire file. + * in link/rename cases, @dst_parent may be different from the real one. + */ +static int au_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibstart; + unsigned char isdir, plink; + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *dst_inode, *h_dir, *inode; + struct super_block *sb; + + AuDebugOn(bsrc <= bdst); + + sb = dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, bdst); + h_dst = au_h_dptr(dentry, bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + h_src = au_h_dptr(dentry, bsrc); + inode = dentry->d_inode; + + if (!dst_parent) + dst_parent = dget_parent(dentry); + else + dget(dst_parent); + + plink = !!au_opt_test(au_mntflags(sb), PLINK); + dst_inode = au_h_iptr(inode, bdst); + if (dst_inode) { + if (unlikely(!plink)) { + err = -EIO; + AuIOErr("hi%lu(i%lu) exists on b%d " + "but plink is disabled\n", + dst_inode->i_ino, inode->i_ino, bdst); + goto out; + } + + if (dst_inode->i_nlink) { + const int do_dt = au_ftest_cpup(flags, DTIME); + + h_src = au_plink_lkup(inode, bdst); + err = PTR_ERR(h_src); + if (IS_ERR(h_src)) + goto out; + if (unlikely(!h_src->d_inode)) { + err = -EIO; + AuIOErr("i%lu exists on a upper branch " + "but not pseudo-linked\n", + inode->i_ino); + dput(h_src); + goto out; + } + + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + err = vfsub_link(h_src, h_dir, &h_path); + if (do_dt) + au_dtime_revert(&dt); + dput(h_src); + goto out; + } else + /* todo: cpup_wh_file? */ + /* udba work */ + au_update_ibrange(inode, /*do_put_zero*/1); + } + + old_ibstart = au_ibstart(inode); + err = cpup_entry(dentry, bdst, bsrc, len, flags, dst_parent); + if (unlikely(err)) + goto out; + dst_inode = h_dst->d_inode; + mutex_lock_nested(&dst_inode->i_mutex, AuLsc_I_CHILD2); + + err = cpup_iattr(dentry, bdst, h_src); + isdir = S_ISDIR(dst_inode->i_mode); + if (!err) { + if (bdst < old_ibstart) { + if (S_ISREG(inode->i_mode)) { + err = au_dy_iaop(inode, bdst, dst_inode); + if (unlikely(err)) + goto out_rev; + } + au_set_ibstart(inode, bdst); + } + au_set_h_iptr(inode, bdst, au_igrab(dst_inode), + au_hi_flags(inode, isdir)); + mutex_unlock(&dst_inode->i_mutex); + if (!isdir + && h_src->d_inode->i_nlink > 1 + && plink) + au_plink_append(inode, bdst, h_dst); + goto out; /* success */ + } + + /* revert */ +out_rev: + h_path.dentry = h_parent; + mutex_unlock(&dst_inode->i_mutex); + au_dtime_store(&dt, dst_parent, &h_path); + h_path.dentry = h_dst; + if (!isdir) + rerr = vfsub_unlink(h_dir, &h_path, /*force*/0); + else + rerr = vfsub_rmdir(h_dir, &h_path); + au_dtime_revert(&dt); + if (rerr) { + AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); + err = -EIO; + } + +out: + dput(dst_parent); + return err; +} + +struct au_cpup_single_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst, bsrc; + loff_t len; + unsigned int flags; + struct dentry *dst_parent; +}; + +static void au_call_cpup_single(void *args) +{ + struct au_cpup_single_args *a = args; + *a->errp = au_cpup_single(a->dentry, a->bdst, a->bsrc, a->len, + a->flags, a->dst_parent); +} + +/* + * prevent SIGXFSZ in copy-up. + * testing CAP_MKNOD is for generic fs, + * but CAP_FSETID is for xfs only, currently. + */ +static int au_cpup_sio_test(struct super_block *sb, umode_t mode) +{ + int do_sio; + + do_sio = 0; + if (!au_wkq_test() + && (!au_sbi(sb)->si_plink_maint_pid + || au_plink_maint(sb, AuLock_NOPLM))) { + switch (mode & S_IFMT) { + case S_IFREG: + /* no condition about RLIMIT_FSIZE and the file size */ + do_sio = 1; + break; + case S_IFCHR: + case S_IFBLK: + do_sio = !capable(CAP_MKNOD); + break; + } + if (!do_sio) + do_sio = ((mode & (S_ISUID | S_ISGID)) + && !capable(CAP_FSETID)); + } + + return do_sio; +} + +int au_sio_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err, wkq_err; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bsrc); + if (!au_cpup_sio_test(dentry->d_sb, h_dentry->d_inode->i_mode)) + err = au_cpup_single(dentry, bdst, bsrc, len, flags, + dst_parent); + else { + struct au_cpup_single_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .bsrc = bsrc, + .len = len, + .flags = flags, + .dst_parent = dst_parent + }; + wkq_err = au_wkq_wait(au_call_cpup_single, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* + * copyup the @dentry from the first active lower branch to @bdst, + * using au_cpup_single(). + */ +static int au_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags) +{ + int err; + aufs_bindex_t bsrc, bend; + + bend = au_dbend(dentry); + for (bsrc = bdst + 1; bsrc <= bend; bsrc++) + if (au_h_dptr(dentry, bsrc)) + break; + + err = au_lkup_neg(dentry, bdst); + if (!err) { + err = au_cpup_single(dentry, bdst, bsrc, len, flags, NULL); + if (!err) + return 0; /* success */ + + /* revert */ + au_set_h_dptr(dentry, bdst, NULL); + au_set_dbstart(dentry, bsrc); + } + + return err; +} + +struct au_cpup_simple_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst; + loff_t len; + unsigned int flags; +}; + +static void au_call_cpup_simple(void *args) +{ + struct au_cpup_simple_args *a = args; + *a->errp = au_cpup_simple(a->dentry, a->bdst, a->len, a->flags); +} + +int au_sio_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags) +{ + int err, wkq_err; + struct dentry *parent; + struct inode *h_dir; + + parent = dget_parent(dentry); + h_dir = au_h_iptr(parent->d_inode, bdst); + if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(dentry->d_sb, dentry->d_inode->i_mode)) + err = au_cpup_simple(dentry, bdst, len, flags); + else { + struct au_cpup_simple_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .len = len, + .flags = flags + }; + wkq_err = au_wkq_wait(au_call_cpup_simple, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * copyup the deleted file for writing. + */ +static int au_do_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *wh_dentry, struct file *file, + loff_t len) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_d_dst, *h_d_start; + struct au_hdentry *hdp; + + dinfo = au_di(dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + hdp = dinfo->di_hdentry; + h_d_dst = hdp[0 + bdst].hd_dentry; + dinfo->di_bstart = bdst; + hdp[0 + bdst].hd_dentry = wh_dentry; + if (file) { + h_d_start = hdp[0 + bstart].hd_dentry; + hdp[0 + bstart].hd_dentry = au_hf_top(file)->f_dentry; + } + err = au_cpup_single(dentry, bdst, bstart, len, !AuCpup_DTIME, + /*h_parent*/NULL); + if (file) { + if (!err) + err = au_reopen_nondir(file); + hdp[0 + bstart].hd_dentry = h_d_start; + } + hdp[0 + bdst].hd_dentry = h_d_dst; + dinfo->di_bstart = bstart; + + return err; +} + +static int au_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file) +{ + int err; + struct au_dtime dt; + struct dentry *parent, *h_parent, *wh_dentry; + struct au_branch *br; + struct path h_path; + + br = au_sbr(dentry->d_sb, bdst); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + h_path.dentry = h_parent; + h_path.mnt = br->br_mnt; + au_dtime_store(&dt, parent, &h_path); + err = au_do_cpup_wh(dentry, bdst, wh_dentry, file, len); + if (unlikely(err)) + goto out_wh; + + dget(wh_dentry); + h_path.dentry = wh_dentry; + if (!S_ISDIR(wh_dentry->d_inode->i_mode)) + err = vfsub_unlink(h_parent->d_inode, &h_path, /*force*/0); + else + err = vfsub_rmdir(h_parent->d_inode, &h_path); + if (unlikely(err)) { + AuIOErr("failed remove copied-up tmp file %.*s(%d)\n", + AuDLNPair(wh_dentry), err); + err = -EIO; + } + au_dtime_revert(&dt); + au_set_hi_wh(dentry->d_inode, bdst, wh_dentry); + +out_wh: + dput(wh_dentry); +out: + dput(parent); + return err; +} + +struct au_cpup_wh_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst; + loff_t len; + struct file *file; +}; + +static void au_call_cpup_wh(void *args) +{ + struct au_cpup_wh_args *a = args; + *a->errp = au_cpup_wh(a->dentry, a->bdst, a->len, a->file); +} + +int au_sio_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file) +{ + int err, wkq_err; + struct dentry *parent, *h_orph, *h_parent, *h_dentry; + struct inode *dir, *h_dir, *h_tmpdir, *h_inode; + struct au_wbr *wbr; + + parent = dget_parent(dentry); + dir = parent->d_inode; + h_orph = NULL; + h_parent = NULL; + h_dir = au_igrab(au_h_iptr(dir, bdst)); + h_tmpdir = h_dir; + if (!h_dir->i_nlink) { + wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; + h_orph = wbr->wbr_orph; + + h_parent = dget(au_h_dptr(parent, bdst)); + au_set_h_dptr(parent, bdst, dget(h_orph)); + h_tmpdir = h_orph->d_inode; + au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); + + /* this temporary unlock is safe */ + if (file) + h_dentry = au_hf_top(file)->f_dentry; + else + h_dentry = au_h_dptr(dentry, au_dbstart(dentry)); + h_inode = h_dentry->d_inode; + IMustLock(h_inode); + mutex_unlock(&h_inode->i_mutex); + mutex_lock_nested(&h_tmpdir->i_mutex, AuLsc_I_PARENT3); + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + /* todo: au_h_open_pre()? */ + } + + if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(dentry->d_sb, dentry->d_inode->i_mode)) + err = au_cpup_wh(dentry, bdst, len, file); + else { + struct au_cpup_wh_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .len = len, + .file = file + }; + wkq_err = au_wkq_wait(au_call_cpup_wh, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + if (h_orph) { + mutex_unlock(&h_tmpdir->i_mutex); + /* todo: au_h_open_post()? */ + au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); + au_set_h_dptr(parent, bdst, h_parent); + } + iput(h_dir); + dput(parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generic routine for both of copy-up and copy-down. + */ +/* cf. revalidate function in file.c */ +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg), + void *arg) +{ + int err; + struct au_pin pin; + struct dentry *d, *parent, *h_parent, *real_parent; + + err = 0; + parent = dget_parent(dentry); + if (IS_ROOT(parent)) + goto out; + + au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, + au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); + + /* do not use au_dpage */ + real_parent = parent; + while (1) { + dput(parent); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + if (h_parent) + goto out; /* success */ + + /* find top dir which is necessary to cpup */ + do { + d = parent; + dput(parent); + parent = dget_parent(d); + di_read_lock_parent3(parent, !AuLock_IR); + h_parent = au_h_dptr(parent, bdst); + di_read_unlock(parent, !AuLock_IR); + } while (!h_parent); + + if (d != real_parent) + di_write_lock_child3(d); + + /* somebody else might create while we were sleeping */ + if (!au_h_dptr(d, bdst) || !au_h_dptr(d, bdst)->d_inode) { + if (au_h_dptr(d, bdst)) + au_update_dbstart(d); + + au_pin_set_dentry(&pin, d); + err = au_do_pin(&pin); + if (!err) { + err = cp(d, bdst, h_parent, arg); + au_unpin(&pin); + } + } + + if (d != real_parent) + di_write_unlock(d); + if (unlikely(err)) + break; + } + +out: + dput(parent); + return err; +} + +static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent __maybe_unused , + void *arg __maybe_unused) +{ + return au_sio_cpup_simple(dentry, bdst, -1, AuCpup_DTIME); +} + +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); +} + +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = parent->d_inode; + err = 0; + if (au_h_iptr(dir, bdst)) + goto out; + + di_read_unlock(parent, AuLock_IR); + di_write_lock_parent(parent); + /* someone else might change our inode while we were sleeping */ + if (!au_h_iptr(dir, bdst)) + err = au_cpup_dirs(dentry, bdst); + di_downgrade_lock(parent, AuLock_IR); + +out: + dput(parent); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/debug.c +++ linux-3.5.0/ubuntu/aufs/debug.c @@ -0,0 +1,489 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debug print functions + */ + +#include +#include "aufs.h" + +int aufs_debug; +MODULE_PARM_DESC(debug, "debug print"); +module_param_named(debug, aufs_debug, int, S_IRUGO | S_IWUSR | S_IWGRP); + +char *au_plevel = KERN_DEBUG; +#define dpri(fmt, ...) do { \ + if ((au_plevel \ + && strcmp(au_plevel, KERN_DEBUG)) \ + || au_debug_test()) \ + printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +void au_dpri_whlist(struct au_nhash *whlist) +{ + unsigned long ul, n; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; ul < n; ul++) { + hlist_for_each_entry(tpos, pos, head, wh_hash) + dpri("b%d, %.*s, %d\n", + tpos->wh_bindex, + tpos->wh_str.len, tpos->wh_str.name, + tpos->wh_str.len); + head++; + } +} + +void au_dpri_vdir(struct au_vdir *vdir) +{ + unsigned long ul; + union au_vdir_deblk_p p; + unsigned char *o; + + if (!vdir || IS_ERR(vdir)) { + dpri("err %ld\n", PTR_ERR(vdir)); + return; + } + + dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %lu\n", + vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, + vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); + for (ul = 0; ul < vdir->vd_nblk; ul++) { + p.deblk = vdir->vd_deblk[ul]; + o = p.deblk; + dpri("[%lu]: %p\n", ul, o); + } +} + +static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, + struct dentry *wh) +{ + char *n = NULL; + int l = 0; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); + return -1; + } + + /* the type of i_blocks depends upon CONFIG_LSF */ + BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) + && sizeof(inode->i_blocks) != sizeof(u64)); + if (wh) { + n = (void *)wh->d_name.name; + l = wh->d_name.len; + } + + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, + hn, (long long)timespec_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode->i_version, + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb)) + return; + + iinfo = au_ii(inode); + if (!iinfo) + return; + dpri("i-1: bstart %d, bend %d, gen %d\n", + iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode)); + if (iinfo->ii_bstart < 0) + return; + hn = 0; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; bindex++) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + do_pri_inode(bindex, iinfo->ii_hinode[0 + bindex].hi_inode, hn, + iinfo->ii_hinode[0 + bindex].hi_whdentry); + } +} + +void au_dpri_dalias(struct inode *inode) +{ + struct dentry *d; + + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) + au_dpri_dentry(d); + spin_unlock(&inode->i_lock); +} + +static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) +{ + struct dentry *wh = NULL; + int hn; + + if (!dentry || IS_ERR(dentry)) { + dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); + return -1; + } + /* do not call dget_parent() here */ + /* note: access d_xxx without d_lock */ + dpri("d%d: %.*s?/%.*s, %s, cnt %d, flags 0x%x\n", + bindex, + AuDLNPair(dentry->d_parent), AuDLNPair(dentry), + dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", + dentry->d_count, dentry->d_flags); + hn = -1; + if (bindex >= 0 && dentry->d_inode && au_test_aufs(dentry->d_sb)) { + struct au_iinfo *iinfo = au_ii(dentry->d_inode); + if (iinfo) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + wh = iinfo->ii_hinode[0 + bindex].hi_whdentry; + } + } + do_pri_inode(bindex, dentry->d_inode, hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + struct au_hdentry *hdp; + + err = do_pri_dentry(-1, dentry); + if (err || !au_test_aufs(dentry->d_sb)) + return; + + dinfo = au_di(dentry); + if (!dinfo) + return; + dpri("d-1: bstart %d, bend %d, bwh %d, bdiropq %d, gen %d\n", + dinfo->di_bstart, dinfo->di_bend, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry)); + if (dinfo->di_bstart < 0) + return; + hdp = dinfo->di_hdentry; + for (bindex = dinfo->di_bstart; bindex <= dinfo->di_bend; bindex++) + do_pri_dentry(bindex, hdp[0 + bindex].hd_dentry); +} + +static int do_pri_file(aufs_bindex_t bindex, struct file *file) +{ + char a[32]; + + if (!file || IS_ERR(file)) { + dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); + return -1; + } + a[0] = 0; + if (bindex < 0 + && file->f_dentry + && au_test_aufs(file->f_dentry->d_sb) + && au_fi(file)) + snprintf(a, sizeof(a), ", gen %d, mmapped %d", + au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); + dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", + bindex, file->f_mode, file->f_flags, (long)file_count(file), + file->f_version, file->f_pos, a); + if (file->f_dentry) + do_pri_dentry(bindex, file->f_dentry); + return 0; +} + +void au_dpri_file(struct file *file) +{ + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hfile; + aufs_bindex_t bindex; + int err; + + err = do_pri_file(-1, file); + if (err || !file->f_dentry || !au_test_aufs(file->f_dentry->d_sb)) + return; + + finfo = au_fi(file); + if (!finfo) + return; + if (finfo->fi_btop < 0) + return; + fidir = finfo->fi_hdir; + if (!fidir) + do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); + else + for (bindex = finfo->fi_btop; + bindex >= 0 && bindex <= fidir->fd_bbot; + bindex++) { + hfile = fidir->fd_hfile + bindex; + do_pri_file(bindex, hfile ? hfile->hf_file : NULL); + } +} + +static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) +{ + struct vfsmount *mnt; + struct super_block *sb; + + if (!br || IS_ERR(br)) + goto out; + mnt = br->br_mnt; + if (!mnt || IS_ERR(mnt)) + goto out; + sb = mnt->mnt_sb; + if (!sb || IS_ERR(sb)) + goto out; + + dpri("s%d: {perm 0x%x, id %d, cnt %d, wbr %p}, " + "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " + "xino %d\n", + bindex, br->br_perm, br->br_id, atomic_read(&br->br_count), + br->br_wbr, au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), + sb->s_flags, sb->s_count, + atomic_read(&sb->s_active), !!br->br_xino.xi_file); + return 0; + +out: + dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); + return -1; +} + +void au_dpri_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + aufs_bindex_t bindex; + int err; + /* to reuduce stack size */ + struct { + struct vfsmount mnt; + struct au_branch fake; + } *a; + + /* this function can be called from magic sysrq */ + a = kzalloc(sizeof(*a), GFP_ATOMIC); + if (unlikely(!a)) { + dpri("no memory\n"); + return; + } + + a->mnt.mnt_sb = sb; + a->fake.br_perm = 0; + a->fake.br_mnt = &a->mnt; + a->fake.br_xino.xi_file = NULL; + atomic_set(&a->fake.br_count, 0); + smp_mb(); /* atomic_set */ + err = do_pri_br(-1, &a->fake); + kfree(a); + dpri("dev 0x%x\n", sb->s_dev); + if (err || !au_test_aufs(sb)) + return; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + dpri("nw %d, gen %u, kobj %d\n", + atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, + atomic_read(&sbinfo->si_kobj.kref.refcount)); + for (bindex = 0; bindex <= sbinfo->si_bend; bindex++) + do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); +} + +/* ---------------------------------------------------------------------- */ + +void au_dbg_sleep_jiffy(int jiffy) +{ + while (jiffy) + jiffy = schedule_timeout_uninterruptible(jiffy); +} + +void au_dbg_iattr(struct iattr *ia) +{ +#define AuBit(name) if (ia->ia_valid & ATTR_ ## name) \ + dpri(#name "\n") + AuBit(MODE); + AuBit(UID); + AuBit(GID); + AuBit(SIZE); + AuBit(ATIME); + AuBit(MTIME); + AuBit(CTIME); + AuBit(ATIME_SET); + AuBit(MTIME_SET); + AuBit(FORCE); + AuBit(ATTR_FLAG); + AuBit(KILL_SUID); + AuBit(KILL_SGID); + AuBit(FILE); + AuBit(KILL_PRIV); + AuBit(OPEN); + AuBit(TIMES_SET); +#undef AuBit + dpri("ia_file %p\n", ia->ia_file); +} + +/* ---------------------------------------------------------------------- */ + +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) +{ + struct inode *h_inode, *inode = dentry->d_inode; + struct dentry *h_dentry; + aufs_bindex_t bindex, bend, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bend = au_dbend(dentry); + bi = au_ibend(inode); + if (bi < bend) + bend = bi; + bindex = au_dbstart(dentry); + bi = au_ibstart(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_inode = au_h_iptr(inode, bindex); + if (unlikely(h_inode != h_dentry->d_inode)) { + int old = au_debug_test(); + if (!old) + au_debug(1); + AuDbg("b%d, %s:%d\n", bindex, func, line); + AuDbgDentry(dentry); + AuDbgInode(inode); + if (!old) + au_debug(0); + BUG(); + } + } +} + +void au_dbg_verify_dir_parent(struct dentry *dentry, unsigned int sigen) +{ + struct dentry *parent; + + parent = dget_parent(dentry); + AuDebugOn(!S_ISDIR(dentry->d_inode->i_mode)); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(au_digen_test(parent, sigen)); + dput(parent); +} + +void au_dbg_verify_nondir_parent(struct dentry *dentry, unsigned int sigen) +{ + struct dentry *parent; + struct inode *inode; + + parent = dget_parent(dentry); + inode = dentry->d_inode; + AuDebugOn(inode && S_ISDIR(dentry->d_inode->i_mode)); + AuDebugOn(au_digen_test(parent, sigen)); + dput(parent); +} + +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) +{ + int err, i, j; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + AuDebugOn(err); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); + AuDebugOn(err); + for (i = dpages.ndpage - 1; !err && i >= 0; i--) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + for (j = dpage->ndentry - 1; !err && j >= 0; j--) + AuDebugOn(au_digen_test(dentries[j], sigen)); + } + au_dpages_free(&dpages); +} + +void au_dbg_verify_kthread(void) +{ + if (au_wkq_test()) { + au_dbg_blocked(); + /* + * It may be recursive, but udba=notify between two aufs mounts, + * where a single ro branch is shared, is not a problem. + */ + /* WARN_ON(1); */ + } +} + +/* ---------------------------------------------------------------------- */ + +void au_debug_sbinfo_init(struct au_sbinfo *sbinfo __maybe_unused) +{ +#ifdef AuForceNoPlink + au_opt_clr(sbinfo->si_mntflags, PLINK); +#endif +#ifdef AuForceNoXino + au_opt_clr(sbinfo->si_mntflags, XINO); +#endif +#ifdef AuForceNoRefrof + au_opt_clr(sbinfo->si_mntflags, REFROF); +#endif +#ifdef AuForceHnotify + au_opt_set_udba(sbinfo->si_mntflags, UDBA_HNOTIFY); +#endif +#ifdef AuForceRd0 + sbinfo->si_rdblk = 0; + sbinfo->si_rdhash = 0; +#endif +} + +int __init au_debug_init(void) +{ + aufs_bindex_t bindex; + struct au_vdir_destr destr; + + bindex = -1; + AuDebugOn(bindex >= 0); + + destr.len = -1; + AuDebugOn(destr.len < NAME_MAX); + +#ifdef CONFIG_4KSTACKS + pr_warn("CONFIG_4KSTACKS is defined.\n"); +#endif + +#ifdef AuForceNoBrs + sysaufs_brs = 0; +#endif + + return 0; +} --- linux-3.5.0.orig/ubuntu/aufs/sysfs.c +++ linux-3.5.0/ubuntu/aufs/sysfs.c @@ -0,0 +1,257 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface + */ + +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_FS_MODULE +/* this entry violates the "one line per file" policy of sysfs */ +static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + ssize_t err; + static char *conf = +/* this file is generated at compiling */ +#include "conf.str" + ; + + err = snprintf(buf, PAGE_SIZE, conf); + if (unlikely(err >= PAGE_SIZE)) + err = -EFBIG; + return err; +} + +static struct kobj_attribute au_config_attr = __ATTR_RO(config); +#endif + +static struct attribute *au_attr[] = { +#ifdef CONFIG_AUFS_FS_MODULE + &au_config_attr.attr, +#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + +static struct attribute_group sysaufs_attr_group_body = { + .attrs = au_attr +}; + +struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) +{ + int err; + + SiMustAnyLock(sb); + + err = 0; + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_path(seq, au_sbi(sb)->si_xib); + seq_putc(seq, '\n'); + } + return err; +} + +/* + * the lifetime of branch is independent from the entry under sysfs. + * sysfs handles the lifetime of the entry, and never call ->show() after it is + * unlinked. + */ +static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, + aufs_bindex_t bindex) +{ + int err; + struct path path; + struct dentry *root; + struct au_branch *br; + char *perm; + + AuDbg("b%d\n", bindex); + + err = 0; + root = sb->s_root; + di_read_lock_parent(root, !AuLock_IR); + br = au_sbr(sb, bindex); + path.mnt = br->br_mnt; + path.dentry = au_h_dptr(root, bindex); + au_seq_path(seq, &path); + di_read_unlock(root, !AuLock_IR); + perm = au_optstr_br_perm(br->br_perm); + if (perm) { + err = seq_printf(seq, "=%s\n", perm); + kfree(perm); + if (err == -1) + err = -E2BIG; + } else + err = -ENOMEM; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct seq_file *au_seq(char *p, ssize_t len) +{ + struct seq_file *seq; + + seq = kzalloc(sizeof(*seq), GFP_NOFS); + if (seq) { + /* mutex_init(&seq.lock); */ + seq->buf = p; + seq->size = len; + return seq; /* success */ + } + + seq = ERR_PTR(-ENOMEM); + return seq; +} + +#define SysaufsBr_PREFIX "br" + +/* todo: file size may exceed PAGE_SIZE */ +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + ssize_t err; + long l; + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct seq_file *seq; + char *name; + struct attribute **cattr; + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + sb = sbinfo->si_sb; + + /* + * prevent a race condition between sysfs and aufs. + * for instance, sysfs_file_read() calls sysfs_get_active_two() which + * prohibits maintaining the sysfs entries. + * hew we acquire read lock after sysfs_get_active_two(). + * on the other hand, the remount process may maintain the sysfs/aufs + * entries after acquiring write lock. + * it can cause a deadlock. + * simply we gave up processing read here. + */ + err = -EBUSY; + if (unlikely(!si_noflush_read_trylock(sb))) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_unlock; + + name = (void *)attr->name; + cattr = sysaufs_si_attrs; + while (*cattr) { + if (!strcmp(name, (*cattr)->name)) { + err = container_of(*cattr, struct sysaufs_si_attr, attr) + ->show(seq, sb); + goto out_seq; + } + cattr++; + } + + bend = au_sbend(sb); + if (!strncmp(name, SysaufsBr_PREFIX, sizeof(SysaufsBr_PREFIX) - 1)) { + name += sizeof(SysaufsBr_PREFIX) - 1; + err = kstrtol(name, 10, &l); + if (!err) { + if (l <= bend) + err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l); + else + err = -ENOENT; + } + goto out_seq; + } + BUG(); + +out_seq: + if (!err) { + err = seq->count; + /* sysfs limit */ + if (unlikely(err == PAGE_SIZE)) + err = -EFBIG; + } + kfree(seq); +out_unlock: + si_read_unlock(sb); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void sysaufs_br_init(struct au_branch *br) +{ + struct attribute *attr = &br->br_attr; + + sysfs_attr_init(attr); + attr->name = br->br_name; + attr->mode = S_IRUGO; +} + +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_branch *br; + struct kobject *kobj; + aufs_bindex_t bend; + + dbgaufs_brs_del(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + sysfs_remove_file(kobj, &br->br_attr); + } +} + +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + aufs_bindex_t bend; + struct kobject *kobj; + struct au_branch *br; + + dbgaufs_brs_add(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + snprintf(br->br_name, sizeof(br->br_name), SysaufsBr_PREFIX + "%d", bindex); + err = sysfs_create_file(kobj, &br->br_attr); + if (unlikely(err)) + pr_warn("failed %s under sysfs(%d)\n", + br->br_name, err); + } +} --- linux-3.5.0.orig/ubuntu/aufs/dentry.h +++ linux-3.5.0/ubuntu/aufs/dentry.h @@ -0,0 +1,237 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * lookup and dentry operations + */ + +#ifndef __AUFS_DENTRY_H__ +#define __AUFS_DENTRY_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct au_hdentry { + struct dentry *hd_dentry; + aufs_bindex_t hd_id; +}; + +struct au_dinfo { + atomic_t di_generation; + + struct au_rwsem di_rwsem; + aufs_bindex_t di_bstart, di_bend, di_bwh, di_bdiropq; + struct au_hdentry *di_hdentry; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop; +struct au_branch; +struct dentry *au_lkup_one(struct qstr *name, struct dentry *h_parent, + struct au_branch *br, struct nameidata *nd); +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent, + struct au_branch *br); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, + struct nameidata *nd); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); + +/* dinfo.c */ +void au_di_init_once(void *_di); +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); +void au_di_free(struct au_dinfo *dinfo); +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); +int au_di_init(struct dentry *dentry); +void au_di_fin(struct dentry *dentry); +int au_di_realloc(struct au_dinfo *dinfo, int nbr); + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc); +void di_read_unlock(struct dentry *d, int flags); +void di_downgrade_lock(struct dentry *d, int flags); +void di_write_lock(struct dentry *d, unsigned int lsc); +void di_write_unlock(struct dentry *d); +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_unlock2(struct dentry *d1, struct dentry *d2); + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); +aufs_bindex_t au_dbtail(struct dentry *dentry); +aufs_bindex_t au_dbtaildir(struct dentry *dentry); + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry); +int au_digen_test(struct dentry *dentry, unsigned int sigen); +int au_dbrange_test(struct dentry *dentry); +void au_update_digen(struct dentry *dentry); +void au_update_dbrange(struct dentry *dentry, int do_put_zero); +void au_update_dbstart(struct dentry *dentry); +void au_update_dbend(struct dentry *dentry); +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_dinfo *au_di(struct dentry *dentry) +{ + return dentry->d_fsdata; +} + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for dinfo */ +enum { + AuLsc_DI_CHILD, /* child first */ + AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_DI_CHILD3, /* copyup dirs */ + AuLsc_DI_PARENT, + AuLsc_DI_PARENT2, + AuLsc_DI_PARENT3, + AuLsc_DI_TMP /* temp for replacing dinfo */ +}; + +/* + * di_read_lock_child, di_write_lock_child, + * di_read_lock_child2, di_write_lock_child2, + * di_read_lock_child3, di_write_lock_child3, + * di_read_lock_parent, di_write_lock_parent, + * di_read_lock_parent2, di_write_lock_parent2, + * di_read_lock_parent3, di_write_lock_parent3, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void di_read_lock_##name(struct dentry *d, int flags) \ +{ di_read_lock(d, flags, AuLsc_DI_##lsc); } + +#define AuWriteLockFunc(name, lsc) \ +static inline void di_write_lock_##name(struct dentry *d) \ +{ di_write_lock(d, AuLsc_DI_##lsc); } + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) +#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) +#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: memory barrier? */ +static inline unsigned int au_digen(struct dentry *d) +{ + return atomic_read(&au_di(d)->di_generation); +} + +static inline void au_h_dentry_init(struct au_hdentry *hdentry) +{ + hdentry->hd_dentry = NULL; +} + +static inline void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbstart(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bstart; +} + +static inline aufs_bindex_t au_dbend(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bend; +} + +static inline aufs_bindex_t au_dbwh(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bwh; +} + +static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bdiropq; +} + +/* todo: hard/soft set? */ +static inline void au_set_dbstart(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bstart = bindex; +} + +static inline void au_set_dbend(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bend = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of bstart - bend range */ + au_di(dentry)->di_bwh = bindex; +} + +static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bdiropq = bindex; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_HNOTIFY +static inline void au_digen_dec(struct dentry *d) +{ + atomic_dec(&au_di(d)->di_generation); +} + +static inline void au_hn_di_reinit(struct dentry *dentry) +{ + dentry->d_fsdata = NULL; +} +#else +AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/sysaufs.c +++ linux-3.5.0/ubuntu/aufs/sysaufs.c @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface and lifetime management + * they are necessary regardless sysfs is disabled. + */ + +#include +#include "aufs.h" + +unsigned long sysaufs_si_mask; +struct kset *sysaufs_kset; + +#define AuSiAttr(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = sysaufs_si_##_name, \ +} + +static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); +struct attribute *sysaufs_si_attrs[] = { + &sysaufs_si_attr_xi_path.attr, + NULL, +}; + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + +static struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, + .default_attrs = sysaufs_si_attrs +}; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + + sbinfo->si_kobj.kset = sysaufs_kset; + /* cf. sysaufs_name() */ + err = kobject_init_and_add + (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, + SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); + + dbgaufs_si_null(sbinfo); + if (!err) { + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + return err; +} + +void sysaufs_fin(void) +{ + dbgaufs_fin(); + sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); + kset_unregister(sysaufs_kset); +} + +int __init sysaufs_init(void) +{ + int err; + + do { + get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); + } while (!sysaufs_si_mask); + + err = -EINVAL; + sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); + if (unlikely(!sysaufs_kset)) + goto out; + err = PTR_ERR(sysaufs_kset); + if (IS_ERR(sysaufs_kset)) + goto out; + err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); + if (unlikely(err)) { + kset_unregister(sysaufs_kset); + goto out; + } + + err = dbgaufs_init(); + if (unlikely(err)) + sysaufs_fin(); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/wkq.h +++ linux-3.5.0/ubuntu/aufs/wkq.h @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credentials management scheme + */ + +#ifndef __AUFS_WKQ_H__ +#define __AUFS_WKQ_H__ + +#ifdef __KERNEL__ + +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* + * in the next operation, wait for the 'nowait' tasks in system-wide workqueue + */ +struct au_nowait_tasks { + atomic_t nw_len; + wait_queue_head_t nw_wq; +}; + +/* ---------------------------------------------------------------------- */ + +typedef void (*au_wkq_func_t)(void *args); + +/* wkq flags */ +#define AuWkq_WAIT 1 +#define AuWkq_NEST (1 << 1) +#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) +#define au_fset_wkq(flags, name) \ + do { (flags) |= AuWkq_##name; } while (0) +#define au_fclr_wkq(flags, name) \ + do { (flags) &= ~AuWkq_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuWkq_NEST +#define AuWkq_NEST 0 +#endif + +/* wkq.c */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags); +void au_nwt_init(struct au_nowait_tasks *nwt); +int __init au_wkq_init(void); +void au_wkq_fin(void); + +/* ---------------------------------------------------------------------- */ + +static inline int au_wkq_test(void) +{ + return current->flags & PF_WQ_WORKER; +} + +static inline int au_wkq_wait(au_wkq_func_t func, void *args) +{ + return au_wkq_do_wait(AuWkq_WAIT, func, args); +} + +static inline void au_nwt_done(struct au_nowait_tasks *nwt) +{ + if (atomic_dec_and_test(&nwt->nw_len)) + wake_up_all(&nwt->nw_wq); +} + +static inline int au_nwt_flush(struct au_nowait_tasks *nwt) +{ + wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); + return 0; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/hfsplus.c +++ linux-3.5.0/ubuntu/aufs/hfsplus.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * special support for filesystems which aqucires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * neceeary open to tell hfsplus that this is not the final closing. + * The caller should call au_h_open_pre() after acquiring the inode mutex, + * and au_h_open_post() after releasing it. + */ + +#include "aufs.h" + +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct file *h_file; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + AuDebugOn(!h_dentry); + AuDebugOn(!h_dentry->d_inode); + IMustLock(h_dentry->d_inode); + + h_file = NULL; + if (au_test_hfsplus(h_dentry->d_sb) + && S_ISREG(h_dentry->d_inode->i_mode)) + h_file = au_h_open(dentry, bindex, + O_RDONLY | O_NOATIME | O_LARGEFILE, + /*file*/NULL); + return h_file; +} + +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file) +{ + if (h_file) { + fput(h_file); + au_sbr_put(dentry->d_sb, bindex); + } +} --- linux-3.5.0.orig/ubuntu/aufs/sysaufs.h +++ linux-3.5.0/ubuntu/aufs/sysaufs.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface and mount lifetime management + */ + +#ifndef __SYSAUFS_H__ +#define __SYSAUFS_H__ + +#ifdef __KERNEL__ + +#include +#include "module.h" + +struct super_block; +struct au_sbinfo; + +struct sysaufs_si_attr { + struct attribute attr; + int (*show)(struct seq_file *seq, struct super_block *sb); +}; + +/* ---------------------------------------------------------------------- */ + +/* sysaufs.c */ +extern unsigned long sysaufs_si_mask; +extern struct kset *sysaufs_kset; +extern struct attribute *sysaufs_si_attrs[]; +int sysaufs_si_init(struct au_sbinfo *sbinfo); +int __init sysaufs_init(void); +void sysaufs_fin(void); + +/* ---------------------------------------------------------------------- */ + +/* some people doesn't like to show a pointer in kernel */ +static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) +{ + return sysaufs_si_mask ^ (unsigned long)sbinfo; +} + +#define SysaufsSiNamePrefix "si_" +#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) +static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) +{ + snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", + sysaufs_si_id(sbinfo)); +} + +struct au_branch; +#ifdef CONFIG_SYSFS +/* sysfs.c */ +extern struct attribute_group *sysaufs_attr_group; + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf); + +void sysaufs_br_init(struct au_branch *br); +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); + +#define sysaufs_brs_init() do {} while (0) + +#else +#define sysaufs_attr_group NULL + +AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) + +static inline +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + return 0; +} + +AuStubVoid(sysaufs_br_init, struct au_branch *br) +AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) + +static inline void sysaufs_brs_init(void) +{ + sysaufs_brs = 0; +} + +#endif /* CONFIG_SYSFS */ + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dynop.h +++ linux-3.5.0/ubuntu/aufs/dynop.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dynamically customizable operations (for regular files only) + */ + +#ifndef __AUFS_DYNOP_H__ +#define __AUFS_DYNOP_H__ + +#ifdef __KERNEL__ + +#include "inode.h" + +enum {AuDy_AOP, AuDyLast}; + +struct au_dynop { + int dy_type; + union { + const void *dy_hop; + const struct address_space_operations *dy_haop; + }; +}; + +struct au_dykey { + union { + struct list_head dk_list; + struct rcu_head dk_rcu; + }; + struct au_dynop dk_op; + + /* + * during I am in the branch local array, kref is gotten. when the + * branch is removed, kref is put. + */ + struct kref dk_kref; +}; + +/* stop unioning since their sizes are very different from each other */ +struct au_dyaop { + struct au_dykey da_key; + struct address_space_operations da_op; /* not const */ + int (*da_get_xip_mem)(struct address_space *, pgoff_t, int, + void **, unsigned long *); +}; + +/* ---------------------------------------------------------------------- */ + +/* dynop.c */ +struct au_branch; +void au_dy_put(struct au_dykey *key); +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode); +int au_dy_irefresh(struct inode *inode); +void au_dy_arefresh(int do_dio); + +void __init au_dy_init(void); +void au_dy_fin(void); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/i_op.c +++ linux-3.5.0/ubuntu/aufs/i_op.c @@ -0,0 +1,1009 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (except add/del/rename) + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +static int h_permission(struct inode *h_inode, int mask, + struct vfsmount *h_mnt, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + + err = -EACCES; + if ((write_mask && IS_IMMUTABLE(h_inode)) + || ((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && ((h_mnt->mnt_flags & MNT_NOEXEC) + || !(h_inode->i_mode & S_IXUGO)))) + goto out; + + /* + * - skip the lower fs test in the case of write to ro branch. + * - nfs dir permission write check is optimized, but a policy for + * link/rename requires a real check. + */ + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + err = generic_permission(h_inode, mask); + } else { + /* AuLabel(h_inode->permission); */ + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } + + if (!err) + err = devcgroup_inode_permission(h_inode, mask); + if (!err) + err = security_inode_permission(h_inode, mask); + +#if 0 + if (!err) { + /* todo: do we need to call ima_path_check()? */ + struct path h_path = { + .dentry = + .mnt = h_mnt + }; + err = ima_path_check(&h_path, + mask & (MAY_READ | MAY_WRITE | MAY_EXEC), + IMA_COUNT_LEAVE); + } +#endif + +out: + return err; +} + +static int aufs_permission(struct inode *inode, int mask) +{ + int err; + aufs_bindex_t bindex, bend; + const unsigned char isdir = !!S_ISDIR(inode->i_mode), + write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + + /* todo: support rcu-walk? */ + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); +#if 0 + err = au_iigen_test(inode, au_sigen(sb)); + if (unlikely(err)) + goto out; +#endif + + if (!isdir || write_mask) { + err = au_busy_or_stale(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibstart(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, br->br_mnt, br->br_perm); + if (write_mask + && !err + && !special_file(h_inode->i_mode)) { + /* test whether the upper writable branch exists */ + err = -EROFS; + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = 0; + break; + } + } + goto out; + } + + /* non-write to dir */ + err = 0; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); !err && bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) { + err = au_busy_or_stale(); + if (unlikely(!S_ISDIR(h_inode->i_mode))) + break; + + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, br->br_mnt, + br->br_perm); + } + } + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd) +{ + struct dentry *ret, *parent; + struct inode *inode; + struct super_block *sb; + int err, npositive, lc_idx; + + IMustLock(dir); + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + + ret = ERR_PTR(-ENAMETOOLONG); + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out_si; + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out_si; + + inode = NULL; + npositive = 0; /* suppress a warning */ + parent = dentry->d_parent; /* dir inode is locked */ + di_read_lock_parent(parent, AuLock_IR); + err = au_alive_dir(parent); + if (!err) + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + npositive = au_lkup_dentry(dentry, au_dbstart(parent), + /*type*/0, nd); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); + ret = ERR_PTR(err); + if (unlikely(err < 0)) + goto out_unlock; + + if (npositive) { + inode = au_new_inode(dentry, /*must_new*/0); + ret = (void *)inode; + } + if (IS_ERR(inode)) { + inode = NULL; + goto out_unlock; + } + + ret = d_splice_alias(inode, dentry); + if (unlikely(IS_ERR(ret) && inode)) { + ii_write_unlock(inode); + iput(inode); + inode = NULL; + } + +out_unlock: + di_write_unlock(dentry); + if (inode) { + lc_idx = AuLcNonDir_DIINFO; + if (S_ISLNK(inode->i_mode)) + lc_idx = AuLcSymlink_DIINFO; + else if (S_ISDIR(inode->i_mode)) + lc_idx = AuLcDir_DIINFO; + au_rw_class(&au_di(dentry)->di_rwsem, au_lc_key + lc_idx); + } +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, + const unsigned char add_entry, aufs_bindex_t bcpup, + aufs_bindex_t bstart) +{ + int err; + struct dentry *h_parent; + struct inode *h_dir; + + if (add_entry) + IMustLock(parent->d_inode); + else + di_write_lock_parent(parent); + + err = 0; + if (!au_h_dptr(parent, bcpup)) { + if (bstart < bcpup) + err = au_cpdown_dirs(dentry, bcpup); + else + err = au_cpup_dirs(dentry, bcpup); + } + if (!err && add_entry) { + h_parent = au_h_dptr(parent, bcpup); + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup); + /* todo: no unlock here */ + mutex_unlock(&h_dir->i_mutex); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (!dentry->d_inode) + au_set_h_dptr(dentry, bstart, NULL); + au_update_dbrange(dentry, /*do_put_zero*/0); + } + } + + if (!add_entry) + di_write_unlock(parent); + if (!err) + err = bcpup; /* success */ + + AuTraceErr(err); + return err; +} + +/* + * decide the branch and the parent dir where we will create a new entry. + * returns new bindex or an error. + * copyup the parent dir if needed. + */ +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args) +{ + int err; + aufs_bindex_t bcpup, bstart, src_bstart; + const unsigned char add_entry = !!au_ftest_wrdir(args->flags, + ADD_ENTRY); + struct super_block *sb; + struct dentry *parent; + struct au_sbinfo *sbinfo; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + parent = dget_parent(dentry); + bstart = au_dbstart(dentry); + bcpup = bstart; + if (args->force_btgt < 0) { + if (src_dentry) { + src_bstart = au_dbstart(src_dentry); + if (src_bstart < bstart) + bcpup = src_bstart; + } else if (add_entry) { + err = AuWbrCreate(sbinfo, dentry, + au_ftest_wrdir(args->flags, ISDIR)); + bcpup = err; + } + + if (bcpup < 0 || au_test_ro(sb, bcpup, dentry->d_inode)) { + if (add_entry) + err = AuWbrCopyup(sbinfo, dentry); + else { + if (!IS_ROOT(dentry)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(sbinfo, dentry); + di_read_unlock(parent, !AuLock_IR); + } else + err = AuWbrCopyup(sbinfo, dentry); + } + bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else { + bcpup = args->force_btgt; + AuDebugOn(au_test_ro(sb, bcpup, dentry->d_inode)); + } + + AuDbg("bstart %d, bcpup %d\n", bstart, bcpup); + err = bcpup; + if (bcpup == bstart) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, bstart); + if (err >= 0) { + if (!dentry->d_inode) { + au_set_h_dptr(dentry, bstart, NULL); + au_set_dbstart(dentry, bcpup); + au_set_dbend(dentry, bcpup); + } + AuDebugOn(add_entry && !au_h_dptr(dentry, bcpup)); + } + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_pinned_h_parent(struct au_pin *pin) +{ + if (pin && pin->parent) + return au_h_dptr(pin->parent, pin->bindex); + return NULL; +} + +void au_unpin(struct au_pin *p) +{ + if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) + mnt_drop_write(p->h_mnt); + if (!p->hdir) + return; + + au_hn_imtx_unlock(p->hdir); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + iput(p->hdir->hi_inode); + dput(p->parent); + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; +} + +int au_do_pin(struct au_pin *p) +{ + int err; + struct super_block *sb; + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct inode *h_dir; + + err = 0; + sb = p->dentry->d_sb; + br = au_sbr(sb, p->bindex); + if (IS_ROOT(p->dentry)) { + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = br->br_mnt; + err = mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_err; + } + } + goto out; + } + + h_dentry = NULL; + if (p->bindex <= au_dbend(p->dentry)) + h_dentry = au_h_dptr(p->dentry, p->bindex); + + p->parent = dget_parent(p->dentry); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_lock(p->parent, AuLock_IR, p->lsc_di); + + h_dir = NULL; + h_parent = au_h_dptr(p->parent, p->bindex); + p->hdir = au_hi(p->parent->d_inode, p->bindex); + if (p->hdir) + h_dir = p->hdir->hi_inode; + + /* + * udba case, or + * if DI_LOCKED is not set, then p->parent may be different + * and h_parent can be NULL. + */ + if (unlikely(!p->hdir || !h_dir || !h_parent)) { + err = -EBUSY; + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + + au_igrab(h_dir); + au_hn_imtx_lock_nested(p->hdir, p->lsc_hi); + + if (unlikely(p->hdir->hi_inode != h_parent->d_inode)) { + err = -EBUSY; + goto out_unpin; + } + if (h_dentry) { + err = au_h_verify(h_dentry, p->udba, h_dir, h_parent, br); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_unpin; + } + } + + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = br->br_mnt; + err = mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_unpin; + } + } + goto out; /* success */ + +out_unpin: + au_unpin(p); +out_err: + pr_err("err %d\n", err); + err = au_busy_or_stale(); +out: + return err; +} + +void au_pin_init(struct au_pin *p, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags) +{ + p->dentry = dentry; + p->udba = udba; + p->lsc_di = lsc_di; + p->lsc_hi = lsc_hi; + p->flags = flags; + p->bindex = bindex; + + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; +} + +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) +{ + au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, + udba, flags); + return au_do_pin(pin); +} + +/* ---------------------------------------------------------------------- */ + +/* + * ->setattr() and ->getattr() are called in various cases. + * chmod, stat: dentry is revalidated. + * fchmod, fstat: file and dentry are not revalidated, additionally they may be + * unhashed. + * for ->setattr(), ia->ia_file is passed from ftruncate only. + */ +/* todo: consolidate with do_refresh() and simple_reval_dpath() */ +static int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct inode *inode; + struct dentry *parent; + + err = 0; + inode = dentry->d_inode; + if (au_digen_test(dentry, sigen)) { + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + } + + AuTraceErr(err); + return err; +} + +#define AuIcpup_DID_CPUP 1 +#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) +#define au_fset_icpup(flags, name) \ + do { (flags) |= AuIcpup_##name; } while (0) +#define au_fclr_icpup(flags, name) \ + do { (flags) &= ~AuIcpup_##name; } while (0) + +struct au_icpup_args { + unsigned char flags; + unsigned char pin_flags; + aufs_bindex_t btgt; + unsigned int udba; + struct au_pin pin; + struct path h_path; + struct inode *h_inode; +}; + +static int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a) +{ + int err; + loff_t sz; + aufs_bindex_t bstart, ibstart; + struct dentry *hi_wh, *parent; + struct inode *inode; + struct file *h_file; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + bstart = au_dbstart(dentry); + inode = dentry->d_inode; + if (S_ISDIR(inode->i_mode)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + /* plink or hi_wh() case */ + ibstart = au_ibstart(inode); + if (bstart != ibstart && !au_test_ro(inode->i_sb, ibstart, inode)) + wr_dir_args.force_btgt = ibstart; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != bstart) + au_fset_icpup(a->flags, DID_CPUP); + + err = 0; + a->pin_flags = AuPin_MNT_WRITE; + parent = NULL; + if (!IS_ROOT(dentry)) { + au_fset_pin(a->pin_flags, DI_LOCKED); + parent = dget_parent(dentry); + di_write_lock_parent(parent); + } + + err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); + if (unlikely(err)) + goto out_parent; + + a->h_path.dentry = au_h_dptr(dentry, bstart); + a->h_inode = a->h_path.dentry->d_inode; + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + sz = -1; + if ((ia->ia_valid & ATTR_SIZE) && ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + + h_file = NULL; + hi_wh = NULL; + if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { + hi_wh = au_hi_wh(inode, a->btgt); + if (!hi_wh) { + err = au_sio_cpup_wh(dentry, a->btgt, sz, /*file*/NULL); + if (unlikely(err)) + goto out_unlock; + hi_wh = au_hi_wh(inode, a->btgt); + /* todo: revalidate hi_wh? */ + } + } + + if (parent) { + au_pin_set_parent_lflag(&a->pin, /*lflag*/0); + di_downgrade_lock(parent, AuLock_IR); + dput(parent); + parent = NULL; + } + if (!au_ftest_icpup(a->flags, DID_CPUP)) + goto out; /* success */ + + if (!d_unhashed(dentry)) { + h_file = au_h_open_pre(dentry, bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(dentry, a->btgt, sz, + AuCpup_DTIME); + if (!err) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + } else if (!hi_wh) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + else + a->h_path.dentry = hi_wh; /* do not dget here */ + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_h_open_post(dentry, bstart, h_file); + a->h_inode = a->h_path.dentry->d_inode; + if (!err) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + goto out; /* success */ + } + + au_unpin(&a->pin); +out_parent: + if (parent) { + di_write_unlock(parent); + dput(parent); + } +out: + return err; +} + +static int aufs_setattr(struct dentry *dentry, struct iattr *ia) +{ + int err; + struct inode *inode; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; + + inode = dentry->d_inode; + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + + file = NULL; + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + if (ia->ia_valid & ATTR_FILE) { + /* currently ftruncate(2) only */ + AuDebugOn(!S_ISREG(inode->i_mode)); + file = ia->ia_file; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out_si; + ia->ia_file = au_hf_top(file); + a->udba = AuOpt_UDBA_NONE; + } else { + /* fchmod() doesn't pass ia_file */ + a->udba = au_opt_udba(sb); + di_write_lock_child(dentry); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out_dentry; + } + } + + err = au_pin_and_icpup(dentry, ia, a); + if (unlikely(err < 0)) + goto out_dentry; + if (au_ftest_icpup(a->flags, DID_CPUP)) { + ia->ia_file = NULL; + ia->ia_valid &= ~ATTR_FILE; + } + + a->h_path.mnt = au_sbr_mnt(sb, a->btgt); + if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) + == (ATTR_MODE | ATTR_CTIME)) { + err = security_path_chmod(&a->h_path, ia->ia_mode); + if (unlikely(err)) + goto out_unlock; + } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) + && (ia->ia_valid & ATTR_CTIME)) { + err = security_path_chown(&a->h_path, vfsub_ia_uid(ia), + vfsub_ia_gid(ia)); + if (unlikely(err)) + goto out_unlock; + } + + if (ia->ia_valid & ATTR_SIZE) { + struct file *f; + + if (ia->ia_size < i_size_read(inode)) + /* unmap only */ + truncate_setsize(inode, ia->ia_size); + + f = NULL; + if (ia->ia_valid & ATTR_FILE) + f = ia->ia_file; + mutex_unlock(&a->h_inode->i_mutex); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + } else + err = vfsub_notify_change(&a->h_path, ia); + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbstart(dentry); +out_dentry: + di_write_unlock(dentry); + if (file) { + fi_write_unlock(file); + ia->ia_file = file; + ia->ia_valid |= ATTR_FILE; + } +out_si: + si_read_unlock(sb); +out_kfree: + kfree(a); +out: + AuTraceErr(err); + return err; +} + +static void au_refresh_iattr(struct inode *inode, struct kstat *st, + unsigned int nlink) +{ + unsigned int n; + + inode->i_mode = st->mode; + i_uid_write(inode, st->uid); + i_gid_write(inode, st->gid); + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; + inode->i_ctime = st->ctime; + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { + n = inode->i_nlink; + n -= nlink; + n += st->nlink; + /* 0 can happen */ + set_nlink(inode, n); + } + + spin_lock(&inode->i_lock); + inode->i_blocks = st->blocks; + i_size_write(inode, st->size); + spin_unlock(&inode->i_lock); +} + +static int aufs_getattr(struct vfsmount *mnt __maybe_unused, + struct dentry *dentry, struct kstat *st) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex; + unsigned char udba_none, positive; + struct super_block *sb, *h_sb; + struct inode *inode; + struct vfsmount *h_mnt; + struct dentry *h_dentry; + + sb = dentry->d_sb; + inode = dentry->d_inode; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + mnt_flags = au_mntflags(sb); + udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); + + /* support fstat(2) */ + if (!d_unlinked(dentry) && !udba_none) { + unsigned int sigen = au_sigen(sb); + err = au_digen_test(dentry, sigen); + if (!err) { + di_read_lock_child(dentry, AuLock_IR); + err = au_dbrange_test(dentry); + if (unlikely(err)) + goto out_unlock; + } else { + AuDebugOn(IS_ROOT(dentry)); + di_write_lock_child(dentry); + err = au_dbrange_test(dentry); + if (!err) + err = au_reval_for_attr(dentry, sigen); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + } + } else + di_read_lock_child(dentry, AuLock_IR); + + bindex = au_ibstart(inode); + h_mnt = au_sbr_mnt(sb, bindex); + h_sb = h_mnt->mnt_sb; + if (!au_test_fs_bad_iattr(h_sb) && udba_none) + goto out_fill; /* success */ + + h_dentry = NULL; + if (au_dbstart(dentry) == bindex) + h_dentry = dget(au_h_dptr(dentry, bindex)); + else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { + h_dentry = au_plink_lkup(inode, bindex); + if (IS_ERR(h_dentry)) + goto out_fill; /* pretending success */ + } + /* illegally overlapped or something */ + if (unlikely(!h_dentry)) + goto out_fill; /* pretending success */ + + positive = !!h_dentry->d_inode; + if (positive) + err = vfs_getattr(h_mnt, h_dentry, st); + dput(h_dentry); + if (!err) { + if (positive) + au_refresh_iattr(inode, st, h_dentry->d_inode->i_nlink); + goto out_fill; /* success */ + } + AuTraceErr(err); + goto out_unlock; + +out_fill: + generic_fillattr(inode, st); +out_unlock: + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int h_readlink(struct dentry *dentry, int bindex, char __user *buf, + int bufsiz) +{ + int err; + struct super_block *sb; + struct dentry *h_dentry; + + err = -EINVAL; + h_dentry = au_h_dptr(dentry, bindex); + if (unlikely(!h_dentry->d_inode->i_op->readlink)) + goto out; + + err = security_inode_readlink(h_dentry); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + if (!au_test_ro(sb, bindex, dentry->d_inode)) { + vfsub_touch_atime(au_sbr_mnt(sb, bindex), h_dentry); + fsstack_copy_attr_atime(dentry->d_inode, h_dentry->d_inode); + } + err = h_dentry->d_inode->i_op->readlink(h_dentry, buf, bufsiz); + +out: + return err; +} + +static int aufs_readlink(struct dentry *dentry, char __user *buf, int bufsiz) +{ + int err; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_hashed_positive(dentry); + if (!err) + err = h_readlink(dentry, au_dbstart(dentry), buf, bufsiz); + aufs_read_unlock(dentry, AuLock_IR); + +out: + return err; +} + +static void *aufs_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + int err; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } buf; + + err = -ENOMEM; + buf.k = __getname_gfp(GFP_NOFS); + if (unlikely(!buf.k)) + goto out; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out_name; + + err = au_d_hashed_positive(dentry); + if (!err) { + old_fs = get_fs(); + set_fs(KERNEL_DS); + err = h_readlink(dentry, au_dbstart(dentry), buf.u, PATH_MAX); + set_fs(old_fs); + } + aufs_read_unlock(dentry, AuLock_IR); + + if (err >= 0) { + buf.k[err] = 0; + /* will be freed by put_link */ + nd_set_link(nd, buf.k); + return NULL; /* success */ + } + +out_name: + __putname(buf.k); +out: + path_put(&nd->path); + AuTraceErr(err); + return ERR_PTR(err); +} + +static void aufs_put_link(struct dentry *dentry __maybe_unused, + struct nameidata *nd, void *cookie __maybe_unused) +{ + __putname(nd_get_link(nd)); +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_update_time(struct inode *inode, struct timespec *ts, int flags) +{ + int err; + struct super_block *sb; + struct inode *h_inode; + + sb = inode->i_sb; + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + lockdep_on(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + err = vfsub_update_time(h_inode, ts, flags); + lockdep_off(); + ii_write_unlock(inode); + si_read_unlock(sb); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct inode_operations aufs_symlink_iop = { + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .readlink = aufs_readlink, + .follow_link = aufs_follow_link, + .put_link = aufs_put_link, + + /* .update_time = aufs_update_time */ +}; + +struct inode_operations aufs_dir_iop = { + .create = aufs_create, + .lookup = aufs_lookup, + .link = aufs_link, + .unlink = aufs_unlink, + .symlink = aufs_symlink, + .mkdir = aufs_mkdir, + .rmdir = aufs_rmdir, + .mknod = aufs_mknod, + .rename = aufs_rename, + + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .update_time = aufs_update_time +}; + +struct inode_operations aufs_iop = { + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .update_time = aufs_update_time +}; --- linux-3.5.0.orig/ubuntu/aufs/BOM +++ linux-3.5.0/ubuntu/aufs/BOM @@ -0,0 +1,3 @@ +URL: git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git +CHANGELOG: +COMMIT: 18e455787597579fe144cdb2f18aa6a0a32c46a4 --- linux-3.5.0.orig/ubuntu/aufs/whout.c +++ linux-3.5.0/ubuntu/aufs/whout.c @@ -0,0 +1,1041 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#include "aufs.h" + +#define WH_MASK S_IRUGO + +/* + * If a directory contains this file, then it is opaque. We start with the + * .wh. flag so that it is blocked by lookup. + */ +static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, + sizeof(AUFS_WH_DIROPQ) - 1); + +/* + * generate whiteout name, which is NOT terminated by NULL. + * @name: original d_name.name + * @len: original d_name.len + * @wh: whiteout qstr + * returns zero when succeeds, otherwise error. + * succeeded value as wh->name should be freed by kfree(). + */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) +{ + char *p; + + if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) + return -ENAMETOOLONG; + + wh->len = name->len + AUFS_WH_PFX_LEN; + p = kmalloc(wh->len, GFP_NOFS); + wh->name = p; + if (p) { + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); + /* smp_mb(); */ + return 0; + } + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if the @wh_name exists under @h_parent. + * @try_sio specifies the necessary of super-io. + */ +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, + struct au_branch *br, int try_sio) +{ + int err; + struct dentry *wh_dentry; + + if (!try_sio) + wh_dentry = au_lkup_one(wh_name, h_parent, br, /*nd*/NULL); + else + wh_dentry = au_sio_lkup_one(wh_name, h_parent, br); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + err = 0; + if (!wh_dentry->d_inode) + goto out_wh; /* success */ + + err = 1; + if (S_ISREG(wh_dentry->d_inode->i_mode)) + goto out_wh; /* success */ + + err = -EIO; + AuIOErr("%.*s Invalid whiteout entry type 0%o.\n", + AuDLNPair(wh_dentry), wh_dentry->d_inode->i_mode); + +out_wh: + dput(wh_dentry); +out: + return err; +} + +/* + * test if the @h_dentry sets opaque or not. + */ +int au_diropq_test(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct inode *h_dir; + + h_dir = h_dentry->d_inode; + err = au_wh_test(h_dentry, &diropq_name, br, + au_test_h_perm_sio(h_dir, MAY_EXEC)); + return err; +} + +/* + * returns a negative dentry whose name is unique and temporary. + */ +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix) +{ + struct dentry *dentry; + int i; + char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], + *name, *p; + /* strict atomic_t is unnecessary here */ + static unsigned short cnt; + struct qstr qs; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + + name = defname; + qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; + if (unlikely(prefix->len > DNAME_INLINE_LEN)) { + dentry = ERR_PTR(-ENAMETOOLONG); + if (unlikely(qs.len > NAME_MAX)) + goto out; + dentry = ERR_PTR(-ENOMEM); + name = kmalloc(qs.len + 1, GFP_NOFS); + if (unlikely(!name)) + goto out; + } + + /* doubly whiteout-ed */ + memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); + p = name + AUFS_WH_PFX_LEN * 2; + memcpy(p, prefix->name, prefix->len); + p += prefix->len; + *p++ = '.'; + AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); + + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); + dentry = au_sio_lkup_one(&qs, h_parent, br); + if (IS_ERR(dentry) || !dentry->d_inode) + goto out_name; + dput(dentry); + } + /* pr_warn("could not get random name\n"); */ + dentry = ERR_PTR(-EEXIST); + AuDbg("%.*s\n", AuLNPair(&qs)); + BUG(); + +out_name: + if (name != defname) + kfree(name); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* + * rename the @h_dentry on @br to the whiteouted temporary name. + */ +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + struct dentry *h_parent; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + /* under the same dir, no need to lock_rename() */ + err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path); + AuTraceErr(err); + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * functions for removing a whiteout + */ + +static int do_unlink_wh(struct inode *h_dir, struct path *h_path) +{ + int force; + + /* + * forces superio when the dir has a sticky bit. + * this may be a violation of unix fs semantics. + */ + force = (h_dir->i_mode & S_ISVTX) + && !uid_eq(current_fsuid(), h_path->dentry->d_inode->i_uid); + return vfsub_unlink(h_dir, h_path, force); +} + +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry) +{ + int err; + + err = do_unlink_wh(h_dir, h_path); + if (!err && dentry) + au_set_dbwh(dentry, -1); + + return err; +} + +static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh, + struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + + err = 0; + h_path.dentry = au_lkup_one(wh, h_parent, br, /*nd*/NULL); + if (IS_ERR(h_path.dentry)) + err = PTR_ERR(h_path.dentry); + else { + if (h_path.dentry->d_inode + && S_ISREG(h_path.dentry->d_inode->i_mode)) + err = do_unlink_wh(h_parent->d_inode, &h_path); + dput(h_path.dentry); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * initialize/clean whiteout for a branch + */ + +static void au_wh_clean(struct inode *h_dir, struct path *whpath, + const int isdir) +{ + int err; + + if (!whpath->dentry->d_inode) + return; + + err = mnt_want_write(whpath->mnt); + if (!err) { + if (isdir) + err = vfsub_rmdir(h_dir, whpath); + else + err = vfsub_unlink(h_dir, whpath, /*force*/0); + mnt_drop_write(whpath->mnt); + } + if (unlikely(err)) + pr_warn("failed removing %.*s (%d), ignored.\n", + AuDLNPair(whpath->dentry), err); +} + +static int test_linkable(struct dentry *h_root) +{ + struct inode *h_dir = h_root->d_inode; + + if (h_dir->i_op->link) + return 0; + + pr_err("%.*s (%s) doesn't support link(2), use noplink and rw+nolwh\n", + AuDLNPair(h_root), au_sbtype(h_root->d_sb)); + return -ENOSYS; +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ +static int au_whdir(struct inode *h_dir, struct path *path) +{ + int err; + + err = -EEXIST; + if (!path->dentry->d_inode) { + int mode = S_IRWXU; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= S_IXUGO; + err = mnt_want_write(path->mnt); + if (!err) { + err = vfsub_mkdir(h_dir, path, mode); + mnt_drop_write(path->mnt); + } + } else if (S_ISDIR(path->dentry->d_inode->i_mode)) + err = 0; + else + pr_err("unknown %.*s exists\n", AuDLNPair(path->dentry)); + + return err; +} + +struct au_wh_base { + const struct qstr *name; + struct dentry *dentry; +}; + +static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], + struct path *h_path) +{ + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); +} + +/* + * returns tri-state, + * minus: error, caller should print the mesage + * zero: succuess + * plus: error, caller should NOT print the mesage + */ +static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = h_root->d_inode; + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * for the moment, aufs supports the branch filesystem which does not support + * link(2). testing on FAT which does not support i_op->setattr() fully either, + * copyup failed. finally, such filesystem will not be used as the writable + * branch. + * + * returns tri-state, see above. + */ +static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + WbrWhMustWriteLock(wbr); + + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + /* + * todo: should this create be done in /sbin/mount.aufs helper? + */ + err = -EEXIST; + h_dir = h_root->d_inode; + if (!base[AuBrWh_BASE].dentry->d_inode) { + err = mnt_want_write(h_path->mnt); + if (!err) { + h_path->dentry = base[AuBrWh_BASE].dentry; + err = vfsub_create(h_dir, h_path, WH_MASK); + mnt_drop_write(h_path->mnt); + } + } else if (S_ISREG(base[AuBrWh_BASE].dentry->d_inode->i_mode)) + err = 0; + else + pr_err("unknown %.*s/%.*s exists\n", + AuDLNPair(h_root), AuDLNPair(base[AuBrWh_BASE].dentry)); + if (unlikely(err)) + goto out; + + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); + + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * initialize the whiteout base file/dir for @br. + */ +int au_wh_init(struct dentry *h_root, struct au_branch *br, + struct super_block *sb) +{ + int err, i; + const unsigned char do_plink + = !!au_opt_test(au_mntflags(sb), PLINK); + struct path path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + struct au_wbr *wbr = br->br_wbr; + static const struct qstr base_name[] = { + [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, + sizeof(AUFS_BASE_NAME) - 1), + [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, + sizeof(AUFS_PLINKDIR_NAME) - 1), + [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, + sizeof(AUFS_ORPHDIR_NAME) - 1) + }; + struct au_wh_base base[] = { + [AuBrWh_BASE] = { + .name = base_name + AuBrWh_BASE, + .dentry = NULL + }, + [AuBrWh_PLINK] = { + .name = base_name + AuBrWh_PLINK, + .dentry = NULL + }, + [AuBrWh_ORPH] = { + .name = base_name + AuBrWh_ORPH, + .dentry = NULL + } + }; + + if (wbr) + WbrWhMustWriteLock(wbr); + + for (i = 0; i < AuBrWh_Last; i++) { + /* doubly whiteouted */ + struct dentry *d; + + d = au_wh_lkup(h_root, (void *)base[i].name, br); + err = PTR_ERR(d); + if (IS_ERR(d)) + goto out; + + base[i].dentry = d; + AuDebugOn(wbr + && wbr->wbr_wh[i] + && wbr->wbr_wh[i] != base[i].dentry); + } + + if (wbr) + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + + err = 0; + if (!au_br_writable(br->br_perm)) { + h_dir = h_root->d_inode; + au_wh_init_ro(h_dir, base, &path); + } else if (!au_br_wh_linkable(br->br_perm)) { + err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } else { + err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } + goto out; /* success */ + +out_err: + pr_err("an error(%d) on the writable branch %.*s(%s)\n", + err, AuDLNPair(h_root), au_sbtype(h_root->d_sb)); +out: + for (i = 0; i < AuBrWh_Last; i++) + dput(base[i].dentry); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * whiteouts are all hard-linked usually. + * when its link count reaches a ceiling, we create a new whiteout base + * asynchronously. + */ + +struct reinit_br_wh { + struct super_block *sb; + struct au_branch *br; +}; + +static void reinit_br_wh(void *arg) +{ + int err; + aufs_bindex_t bindex; + struct path h_path; + struct reinit_br_wh *a = arg; + struct au_wbr *wbr; + struct inode *dir; + struct dentry *h_root; + struct au_hinode *hdir; + + err = 0; + wbr = a->br->br_wbr; + /* big aufs lock */ + si_noflush_write_lock(a->sb); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(a->sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + di_read_lock_parent(a->sb->s_root, AuLock_IR); + dir = a->sb->s_root->d_inode; + hdir = au_hi(dir, bindex); + h_root = au_h_dptr(a->sb->s_root, bindex); + + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + wbr_wh_write_lock(wbr); + err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, + h_root, a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (!err) { + h_path.dentry = wbr->wbr_whbase; + h_path.mnt = a->br->br_mnt; + err = vfsub_unlink(hdir->hi_inode, &h_path, /*force*/0); + mnt_drop_write(a->br->br_mnt); + } + } else { + pr_warn("%.*s is moved, ignored\n", + AuDLNPair(wbr->wbr_whbase)); + err = 0; + } + dput(wbr->wbr_whbase); + wbr->wbr_whbase = NULL; + if (!err) + err = au_wh_init(h_root, a->br, a->sb); + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + di_read_unlock(a->sb->s_root, AuLock_IR); + +out: + if (wbr) + atomic_dec(&wbr->wbr_wh_running); + atomic_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + kfree(arg); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) +{ + int do_dec, wkq_err; + struct reinit_br_wh *arg; + + do_dec = 1; + if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) + goto out; + + /* ignore ENOMEM */ + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (arg) { + /* + * dec(wh_running), kfree(arg) and dec(br_count) + * in reinit function + */ + arg->sb = sb; + arg->br = br; + atomic_inc(&br->br_count); + wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + atomic_dec(&br->br_wbr->wbr_wh_running); + atomic_dec(&br->br_count); + kfree(arg); + } + do_dec = 0; + } + +out: + if (do_dec) + atomic_dec(&br->br_wbr->wbr_wh_running); +} + +/* ---------------------------------------------------------------------- */ + +/* + * create the whiteout @wh. + */ +static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *wh) +{ + int err; + struct path h_path = { + .dentry = wh + }; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir; + + h_parent = wh->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + br = au_sbr(sb, bindex); + h_path.mnt = br->br_mnt; + wbr = br->br_wbr; + wbr_wh_read_lock(wbr); + if (wbr->wbr_whbase) { + err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path); + if (!err || err != -EMLINK) + goto out; + + /* link count full. re-initialize br_whbase. */ + kick_reinit_br_wh(sb, br); + } + + /* return this error in this context */ + err = vfsub_create(h_dir, &h_path, WH_MASK); + +out: + wbr_wh_read_unlock(wbr); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create or remove the diropq. + */ +static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *opq_dentry, *h_dentry; + struct super_block *sb; + struct au_branch *br; + int err; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + opq_dentry = au_lkup_one(&diropq_name, h_dentry, br, /*nd*/NULL); + if (IS_ERR(opq_dentry)) + goto out; + + if (au_ftest_diropq(flags, CREATE)) { + err = link_or_create_wh(sb, bindex, opq_dentry); + if (!err) { + au_set_dbdiropq(dentry, bindex); + goto out; /* success */ + } + } else { + struct path tmp = { + .dentry = opq_dentry, + .mnt = br->br_mnt + }; + err = do_unlink_wh(au_h_iptr(dentry->d_inode, bindex), &tmp); + if (!err) + au_set_dbdiropq(dentry, -1); + } + dput(opq_dentry); + opq_dentry = ERR_PTR(err); + +out: + return opq_dentry; +} + +struct do_diropq_args { + struct dentry **errp; + struct dentry *dentry; + aufs_bindex_t bindex; + unsigned int flags; +}; + +static void call_do_diropq(void *args) +{ + struct do_diropq_args *a = args; + *a->errp = do_diropq(a->dentry, a->bindex, a->flags); +} + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (!au_test_h_perm_sio(h_dentry->d_inode, MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; + struct do_diropq_args args = { + .errp = &diropq, + .dentry = dentry, + .bindex = bindex, + .flags = flags + }; + + wkq_err = au_wkq_wait(call_do_diropq, &args); + if (unlikely(wkq_err)) + diropq = ERR_PTR(wkq_err); + } + + return diropq; +} + +/* ---------------------------------------------------------------------- */ + +/* + * lookup whiteout dentry. + * @h_parent: lower parent dentry which must exist and be locked + * @base_name: name of dentry which will be whiteouted + * returns dentry for whiteout. + */ +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br) +{ + int err; + struct qstr wh_name; + struct dentry *wh_dentry; + + err = au_wh_name_alloc(&wh_name, base_name); + wh_dentry = ERR_PTR(err); + if (!err) { + wh_dentry = au_lkup_one(&wh_name, h_parent, br, /*nd*/NULL); + kfree(wh_name.name); + } + return wh_dentry; +} + +/* + * link/create a whiteout for @dentry on @bindex. + */ +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent) +{ + struct dentry *wh_dentry; + struct super_block *sb; + int err; + + sb = dentry->d_sb; + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); + if (!IS_ERR(wh_dentry) && !wh_dentry->d_inode) { + err = link_or_create_wh(sb, bindex, wh_dentry); + if (!err) + au_set_dbwh(dentry, bindex); + else { + dput(wh_dentry); + wh_dentry = ERR_PTR(err); + } + } + + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* Delete all whiteouts in this directory on branch bindex. */ +static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err; + unsigned long ul, n; + struct qstr wh_name; + char *p; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + err = -ENOMEM; + p = __getname_gfp(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; + + err = 0; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; !err && ul < n; ul++, head++) { + hlist_for_each_entry(tpos, pos, head, wh_hash) { + if (tpos->wh_bindex != bindex) + continue; + + str = &tpos->wh_str; + if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { + memcpy(p, str->name, str->len); + wh_name.len = AUFS_WH_PFX_LEN + str->len; + err = unlink_wh_name(h_dentry, &wh_name, br); + if (!err) + continue; + break; + } + AuIOErr("whiteout name too long %.*s\n", + str->len, str->name); + err = -EIO; + break; + } + } + __putname(wh_name.name); + +out: + return err; +} + +struct del_wh_children_args { + int *errp; + struct dentry *h_dentry; + struct au_nhash *whlist; + aufs_bindex_t bindex; + struct au_branch *br; +}; + +static void call_del_wh_children(void *args) +{ + struct del_wh_children_args *a = args; + *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br); +} + +/* ---------------------------------------------------------------------- */ + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) +{ + struct au_whtmp_rmdir *whtmp; + int err; + unsigned int rdhash; + + SiMustAnyLock(sb); + + whtmp = kmalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + whtmp->dir = NULL; + whtmp->br = NULL; + whtmp->wh_dentry = NULL; + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = AUFS_RDHASH_DEF; + err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); + if (unlikely(err)) { + kfree(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + atomic_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + kfree(whtmp); +} + +/* + * rmdir the whiteouted temporary named dir @h_dentry. + * @whlist: whiteouted children. + */ +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist) +{ + int err; + struct path h_tmp; + struct inode *wh_inode, *h_dir; + struct au_branch *br; + + h_dir = wh_dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(h_dir); + + br = au_sbr(dir->i_sb, bindex); + wh_inode = wh_dentry->d_inode; + mutex_lock_nested(&wh_inode->i_mutex, AuLsc_I_CHILD); + + /* + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ + if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(wh_dentry, whlist, bindex, br); + else { + int wkq_err; + struct del_wh_children_args args = { + .errp = &err, + .h_dentry = wh_dentry, + .whlist = whlist, + .bindex = bindex, + .br = br + }; + + wkq_err = au_wkq_wait(call_del_wh_children, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + mutex_unlock(&wh_inode->i_mutex); + + if (!err) { + h_tmp.dentry = wh_dentry; + h_tmp.mnt = br->br_mnt; + err = vfsub_rmdir(h_dir, &h_tmp); + } + + if (!err) { + if (au_ibstart(dir) == bindex) { + /* todo: dir->i_mutex is necessary */ + au_cpup_attr_timesizes(dir); + vfsub_drop_nlink(dir); + } + return 0; /* success */ + } + + pr_warn("failed removing %.*s(%d), ignored\n", + AuDLNPair(wh_dentry), err); + return err; +} + +static void call_rmdir_whtmp(void *args) +{ + int err; + aufs_bindex_t bindex; + struct au_whtmp_rmdir *a = args; + struct super_block *sb; + struct dentry *h_parent; + struct inode *h_dir; + struct au_hinode *hdir; + + /* rmdir by nfsd may cause deadlock with this i_mutex */ + /* mutex_lock(&a->dir->i_mutex); */ + err = -EROFS; + sb = a->dir->i_sb; + si_read_lock(sb, !AuLock_FLUSH); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + err = -EIO; + ii_write_lock_parent(a->dir); + h_parent = dget_parent(a->wh_dentry); + h_dir = h_parent->d_inode; + hdir = au_hi(a->dir, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, + a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (!err) { + err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, + &a->whlist); + mnt_drop_write(a->br->br_mnt); + } + } + au_hn_imtx_unlock(hdir); + dput(h_parent); + ii_write_unlock(a->dir); + +out: + /* mutex_unlock(&a->dir->i_mutex); */ + au_whtmp_rmdir_free(a); + si_read_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args) +{ + int wkq_err; + struct super_block *sb; + + IMustLock(dir); + + /* all post-process will be done in do_rmdir_whtmp(). */ + sb = dir->i_sb; + args->dir = au_igrab(dir); + args->br = au_sbr(sb, bindex); + atomic_inc(&args->br->br_count); + args->wh_dentry = dget(wh_dentry); + wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_warn("rmdir error %.*s (%d), ignored\n", + AuDLNPair(wh_dentry), wkq_err); + au_whtmp_rmdir_free(args); + } +}